From 7628b33d8dda6f99fd9e9730828a01571627c405 Mon Sep 17 00:00:00 2001 From: Ashis Kumar Date: Tue, 19 Sep 2023 22:33:16 +0530 Subject: [PATCH 001/366] Fixed the Quiz Modal. Added the styles to the theme file aligned with the DS styles & replaced the QuizzesModal with the current customized modal component. --- .../gatsby-plugin/components/Modal.ts | 24 +++++++++++-------- src/components/Modal.tsx | 10 +++----- src/pages/quizzes.tsx | 5 ++-- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/@chakra-ui/gatsby-plugin/components/Modal.ts b/src/@chakra-ui/gatsby-plugin/components/Modal.ts index b4079657373..b671c3b980f 100644 --- a/src/@chakra-ui/gatsby-plugin/components/Modal.ts +++ b/src/@chakra-ui/gatsby-plugin/components/Modal.ts @@ -16,22 +16,23 @@ const variantCode = definePartsStyle((props) => ({ bg: "rgba(0, 0, 0, 0.7)", }, dialog: { - maxW: "100vw", - marginTop: "auto", - marginBottom: 0, - maxHeight: "50%", - borderRadius: 0, + maxW: "464px", + my: "64px", + mx: "8px", + /* padding: "32px", */ + maxHeight: "70%", + borderRadius: "4px", }, header: { bg: props.colorMode === "dark" ? "rgb(25, 25, 25)" : "rgb(247, 247, 247)", borderColor: props.colorMode == "dark" ? "rgb(242, 242, 242)" : "rgb(51, 51, 51)", - borderTop: "1px solid", - borderBottom: "1px solid", + /* borderTop: "1px solid", + borderBottom: "1px solid", */ textTransform: "uppercase", - fontWeight: "normal", - fontSize: "md", - fontFamily: "monospace", + fontWeight: "bold", + fontSize: "2xl", + fontFamily: "Inter", }, closeButton: { padding: 0, @@ -47,6 +48,9 @@ const variantCode = definePartsStyle((props) => ({ }, body: { padding: 0, + fontWeight: "normal", + fontSize: "md", + fontFamily: "Inter", }, })) diff --git a/src/components/Modal.tsx b/src/components/Modal.tsx index c6d150494f9..295dc3215af 100644 --- a/src/components/Modal.tsx +++ b/src/components/Modal.tsx @@ -5,6 +5,7 @@ import { ModalOverlay, ModalContent, ModalCloseButton, + ModalHeader, } from "@chakra-ui/react" export interface IPropsOverlay { @@ -24,18 +25,13 @@ const Modal: React.FC = ({ children, isOpen, setIsOpen, ...props }) => { onClose={() => setIsOpen(false)} isCentered size="xl" + variant="code" scrollBehavior="inside" {...props} > - + {children} diff --git a/src/pages/quizzes.tsx b/src/pages/quizzes.tsx index b3c5a1dee5d..46f13f79f14 100644 --- a/src/pages/quizzes.tsx +++ b/src/pages/quizzes.tsx @@ -37,6 +37,7 @@ import allQuizzesData, { ethereumBasicsQuizzes, usingEthereumQuizzes, } from "../data/quizzes" +import Modal from "../components/Modal" // Contains each quiz id as key and to indicate if its completed and the highest score in that quiz // Initialize all quizzes as not completed @@ -101,14 +102,14 @@ const QuizzesHubPage = ({ data }: PageProps) => { - + - + Date: Thu, 21 Sep 2023 11:57:42 +0530 Subject: [PATCH 002/366] Implemented the current Modal in the CodeModal component. --- src/@chakra-ui/gatsby-plugin/components/Modal.ts | 4 ++-- src/components/Modal.tsx | 14 +++++++++++--- src/pages/index.tsx | 3 ++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/@chakra-ui/gatsby-plugin/components/Modal.ts b/src/@chakra-ui/gatsby-plugin/components/Modal.ts index b671c3b980f..602824e8797 100644 --- a/src/@chakra-ui/gatsby-plugin/components/Modal.ts +++ b/src/@chakra-ui/gatsby-plugin/components/Modal.ts @@ -19,12 +19,12 @@ const variantCode = definePartsStyle((props) => ({ maxW: "464px", my: "64px", mx: "8px", - /* padding: "32px", */ + padding: "32px", maxHeight: "70%", borderRadius: "4px", }, header: { - bg: props.colorMode === "dark" ? "rgb(25, 25, 25)" : "rgb(247, 247, 247)", + /* bg: props.colorMode === "dark" ? "rgb(25, 25, 25)" : "rgb(247, 247, 247)", */ borderColor: props.colorMode == "dark" ? "rgb(242, 242, 242)" : "rgb(51, 51, 51)", /* borderTop: "1px solid", diff --git a/src/components/Modal.tsx b/src/components/Modal.tsx index 295dc3215af..0e58425809a 100644 --- a/src/components/Modal.tsx +++ b/src/components/Modal.tsx @@ -6,6 +6,7 @@ import { ModalContent, ModalCloseButton, ModalHeader, + ModalBody, } from "@chakra-ui/react" export interface IPropsOverlay { @@ -13,17 +14,23 @@ export interface IPropsOverlay { } export interface IProps { + title?: string children?: React.ReactNode isOpen: boolean setIsOpen: (isOpen: boolean) => void } -const Modal: React.FC = ({ children, isOpen, setIsOpen, ...props }) => { +const Modal: React.FC = ({ + title, + children, + isOpen, + setIsOpen, + ...props +}) => { return ( setIsOpen(false)} - isCentered size="xl" variant="code" scrollBehavior="inside" @@ -32,8 +39,9 @@ const Modal: React.FC = ({ children, isOpen, setIsOpen, ...props }) => { + {title} - {children} + {children} ) diff --git a/src/pages/index.tsx b/src/pages/index.tsx index f4c288e62c8..bd4821717e6 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -39,6 +39,7 @@ import SimpleWalletContent from "!!raw-loader!../data/SimpleWallet.sol" import SimpleTokenContent from "!!raw-loader!../data/SimpleToken.sol" import CreateWalletContent from "!!raw-loader!../data/CreateWallet.js" import SimpleDomainRegistryContent from "!!raw-loader!../data/SimpleDomainRegistry.sol" +import Modal from "../components/Modal" const SectionHeading = (props: HeadingProps) => ( Date: Tue, 3 Oct 2023 22:39:04 +0530 Subject: [PATCH 003/366] Remove the all styling from variantCode to base style. --- .../gatsby-plugin/components/Modal.ts | 91 ++++++++++--------- src/components/Modal.tsx | 1 - 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/@chakra-ui/gatsby-plugin/components/Modal.ts b/src/@chakra-ui/gatsby-plugin/components/Modal.ts index 602824e8797..1837f329205 100644 --- a/src/@chakra-ui/gatsby-plugin/components/Modal.ts +++ b/src/@chakra-ui/gatsby-plugin/components/Modal.ts @@ -11,61 +11,62 @@ const { defaultProps, } = modalDefaultTheme -const variantCode = definePartsStyle((props) => ({ - overlay: { - bg: "rgba(0, 0, 0, 0.7)", - }, - dialog: { - maxW: "464px", - my: "64px", - mx: "8px", - padding: "32px", - maxHeight: "70%", - borderRadius: "4px", - }, - header: { - /* bg: props.colorMode === "dark" ? "rgb(25, 25, 25)" : "rgb(247, 247, 247)", */ - borderColor: - props.colorMode == "dark" ? "rgb(242, 242, 242)" : "rgb(51, 51, 51)", - /* borderTop: "1px solid", - borderBottom: "1px solid", */ - textTransform: "uppercase", - fontWeight: "bold", - fontSize: "2xl", - fontFamily: "Inter", - }, - closeButton: { - padding: 0, - width: "24px", - height: "24px", - borderRadius: 0, - color: "rgb(178, 178, 178)", - fontSize: "sm", - margin: 0, - top: 4, - right: 4, - bottom: 4, - }, - body: { - padding: 0, - fontWeight: "normal", - fontSize: "md", - fontFamily: "Inter", - }, -})) +// Remove all the comment line once the review is completed & PR will able to merge + +/* const variantCode = definePartsStyle((props) => ({ + +})) */ export const Modal = defineMultiStyleConfig({ baseStyle: definePartsStyle((props) => defineMergeStyles(defaultBaseStyle?.(props), { + overlay: { + bg: "rgba(0, 0, 0, 0.7)", + }, dialog: { - my: 0, + size: "2xl", + /* maxW: "464px", */ + my: "64px", + mx: "8px", + padding: "32px", + maxHeight: "70%", + borderRadius: "4px", + }, + header: { + /* bg: props.colorMode === "dark" ? "rgb(25, 25, 25)" : "rgb(247, 247, 247)", */ + borderColor: + props.colorMode == "dark" ? "rgb(242, 242, 242)" : "rgb(51, 51, 51)", + /* borderTop: "1px solid", + borderBottom: "1px solid", */ + textTransform: "uppercase", + fontWeight: "bold", + fontSize: "2xl", + fontFamily: "Inter", + }, + closeButton: { + padding: 0, + width: "24px", + height: "24px", + borderRadius: 0, + color: "rgb(178, 178, 178)", + fontSize: "sm", + margin: 0, + top: 4, + right: 4, + bottom: 4, + }, + body: { + padding: 0, + fontWeight: "normal", + fontSize: "md", + fontFamily: "Inter", }, }) ), sizes: defaultSizes, - variants: { + /* variants: { code: variantCode, - }, + }, */ defaultProps: { ...defaultProps, variant: undefined, diff --git a/src/components/Modal.tsx b/src/components/Modal.tsx index 0e58425809a..758e3850958 100644 --- a/src/components/Modal.tsx +++ b/src/components/Modal.tsx @@ -32,7 +32,6 @@ const Modal: React.FC = ({ isOpen={isOpen} onClose={() => setIsOpen(false)} size="xl" - variant="code" scrollBehavior="inside" {...props} > From 41b236103bcb3c6f346ad65823e650a9bd790e2e Mon Sep 17 00:00:00 2001 From: Ashis Kumar Date: Thu, 12 Oct 2023 22:05:28 +0530 Subject: [PATCH 004/366] Stories Has been added to the StoryBook for the Modal Component. --- .../gatsby-plugin/components/Modal.ts | 10 ++++++++-- src/components/Modal/Modal.stories.tsx | 20 +++++++++++++++++++ src/components/{Modal.tsx => Modal/index.tsx} | 17 ++++++++++++---- 3 files changed, 41 insertions(+), 6 deletions(-) create mode 100644 src/components/Modal/Modal.stories.tsx rename src/components/{Modal.tsx => Modal/index.tsx} (66%) diff --git a/src/@chakra-ui/gatsby-plugin/components/Modal.ts b/src/@chakra-ui/gatsby-plugin/components/Modal.ts index 1837f329205..ce4cf6362f1 100644 --- a/src/@chakra-ui/gatsby-plugin/components/Modal.ts +++ b/src/@chakra-ui/gatsby-plugin/components/Modal.ts @@ -33,11 +33,13 @@ export const Modal = defineMultiStyleConfig({ borderRadius: "4px", }, header: { - /* bg: props.colorMode === "dark" ? "rgb(25, 25, 25)" : "rgb(247, 247, 247)", */ + /* bg: + props.colorMode === "dark" ? "rgb(25, 25, 25)" : "rgb(247, 247, 247)", */ borderColor: props.colorMode == "dark" ? "rgb(242, 242, 242)" : "rgb(51, 51, 51)", /* borderTop: "1px solid", borderBottom: "1px solid", */ + padding: 0, textTransform: "uppercase", fontWeight: "bold", fontSize: "2xl", @@ -50,7 +52,8 @@ export const Modal = defineMultiStyleConfig({ borderRadius: 0, color: "rgb(178, 178, 178)", fontSize: "sm", - margin: 0, + marginTop: 5, + top: 4, right: 4, bottom: 4, @@ -61,6 +64,9 @@ export const Modal = defineMultiStyleConfig({ fontSize: "md", fontFamily: "Inter", }, + footer: { + gap: "8px", + }, }) ), sizes: defaultSizes, diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx new file mode 100644 index 00000000000..e869a9bdf32 --- /dev/null +++ b/src/components/Modal/Modal.stories.tsx @@ -0,0 +1,20 @@ +import { Meta, StoryObj } from "@storybook/react" +import Modal from "." + +const meta = { + title: "Molecules/Overlay Content/Modal/BaseModal", + component: Modal, +} satisfies Meta + +export default meta +type Story = StoryObj +export const BaseModal: Story = { + args: { + isOpen: true, + title: "Modal Title", + description: + "This is the base component to be used in the modal window.Please change the text to preview final content for ethereum.org", + ButtonLabel: "Cancel", + actionButtonLabel: "Save", + }, +} diff --git a/src/components/Modal.tsx b/src/components/Modal/index.tsx similarity index 66% rename from src/components/Modal.tsx rename to src/components/Modal/index.tsx index 758e3850958..9d9de2f7d03 100644 --- a/src/components/Modal.tsx +++ b/src/components/Modal/index.tsx @@ -7,7 +7,9 @@ import { ModalCloseButton, ModalHeader, ModalBody, + ModalFooter, } from "@chakra-ui/react" +import Button from "../Buttons/Button" export interface IPropsOverlay { isActive: boolean @@ -15,14 +17,18 @@ export interface IPropsOverlay { export interface IProps { title?: string - children?: React.ReactNode + description?: string + ButtonLabel?: string + actionButtonLabel?: string isOpen: boolean setIsOpen: (isOpen: boolean) => void } const Modal: React.FC = ({ title, - children, + description, + actionButtonLabel, + ButtonLabel, isOpen, setIsOpen, ...props @@ -31,7 +37,6 @@ const Modal: React.FC = ({ setIsOpen(false)} - size="xl" scrollBehavior="inside" {...props} > @@ -40,7 +45,11 @@ const Modal: React.FC = ({ {title} - {children} + {description} + + + ) +} diff --git a/src/components/Hero/ContentHero/ContentHero.stories.tsx b/src/components/Hero/ContentHero/ContentHero.stories.tsx new file mode 100644 index 00000000000..8554a32807f --- /dev/null +++ b/src/components/Hero/ContentHero/ContentHero.stories.tsx @@ -0,0 +1,79 @@ +import * as React from "react" +import { Meta, StoryObj } from "@storybook/react" +import ContentHeroComponent, { ContentHeroProps } from "." +import { IGatsbyImageData } from "gatsby-plugin-image" +import { useTranslation } from "gatsby-plugin-react-i18next" + +type ContentHeroType = typeof ContentHeroComponent + +const meta = { + title: "Organisms / Layouts / Hero", + component: ContentHeroComponent, + parameters: { + layout: "none", + }, + argTypes: { + heroImgSrc: { + table: { + disable: true, + }, + }, + }, +} satisfies Meta + +export default meta + +// Comes from the original compiled querying +const mockGatsbyImgData: IGatsbyImageData = { + layout: "constrained", + images: { + fallback: { + src: "/mainnet.png", + sizes: "100vw", + }, + sources: [ + { + srcSet: "/mainnet.png", + type: "image/webp", + sizes: "100vw", + }, + ], + }, + width: 1, + height: 1, +} + +export const ContentHero: StoryObj = { + render: () => { + const { t } = useTranslation() + + const buttons: ContentHeroProps["buttons"] = [ + { + content: t("hero-button-lets-get-started"), + toId: "what-is-crypto-ethereum", + matomo: { + eventCategory: "learn hub hero buttons", + eventAction: "click", + eventName: "lets get started", + }, + }, + { + content: "Button", + matomo: { + eventCategory: "learn hub hero buttons", + eventAction: "click", + eventName: "lets get started", + }, + }, + ] + return ( + + ) + }, +} diff --git a/src/components/Hero/ContentHero/index.tsx b/src/components/Hero/ContentHero/index.tsx new file mode 100644 index 00000000000..d5c975e4214 --- /dev/null +++ b/src/components/Hero/ContentHero/index.tsx @@ -0,0 +1,55 @@ +import * as React from "react" +import { Box, Heading, HStack, SimpleGrid, Stack, Text } from "@chakra-ui/react" +import Breadcrumbs, { IProps as BreadcrumbsProps } from "../../Breadcrumbs" +import GatsbyImage from "../../GatsbyImage" +import { CallToAction } from "../CallToAction" +import { CommonHeroProps } from "../utils" + +export interface ContentHeroProps extends Omit { + breadcrumbs: BreadcrumbsProps +} + +const ContentHero = (props: ContentHeroProps) => { + const { breadcrumbs, heroImgSrc, buttons, title, description } = props + return ( + + + + + + + + + + {title} + + {description} + + {buttons + ? buttons.map((button, idx) => { + if (!button) return + + return + }) + : null} + + + {/* TODO: + * Add conditional Big Stat box here + */} + + + + ) +} + +export default ContentHero diff --git a/src/components/Hero/HomeHero/HomeHero.stories.tsx b/src/components/Hero/HomeHero/HomeHero.stories.tsx new file mode 100644 index 00000000000..12b8f012f56 --- /dev/null +++ b/src/components/Hero/HomeHero/HomeHero.stories.tsx @@ -0,0 +1,50 @@ +import * as React from "react" +import { Meta, StoryObj } from "@storybook/react" +import HomeHeroComponent from "." +import { IGatsbyImageData } from "gatsby-plugin-image" + +type HomeHeroType = typeof HomeHeroComponent + +const meta = { + title: "Organisms / Layouts / Hero", + component: HomeHeroComponent, + parameters: { + layout: "none", + }, + argTypes: { + heroImgSrc: { + table: { + disable: true, + }, + }, + }, +} satisfies Meta + +export default meta + +// Comes from the original compiled querying +const mockGatsbyImgData: IGatsbyImageData = { + layout: "fullWidth", + images: { + fallback: { + src: "/home/hero.png", + sizes: "100vw", + }, + sources: [ + { + srcSet: "/home/hero.png", + type: "image/webp", + sizes: "100vw", + }, + ], + }, + width: 1, + height: 1, +} + +export const HomeHero: StoryObj = { + args: { + heroImgSrc: mockGatsbyImgData, + }, + render: (args) => , +} diff --git a/src/components/Hero/HomeHero/index.tsx b/src/components/Hero/HomeHero/index.tsx new file mode 100644 index 00000000000..ffd25565ddd --- /dev/null +++ b/src/components/Hero/HomeHero/index.tsx @@ -0,0 +1,49 @@ +import * as React from "react" +import { useTranslation } from "react-i18next" +import { Box, Heading, Stack, Text, VStack } from "@chakra-ui/react" +import { ButtonLink } from "../../Buttons" +import Morpher from "../../Morpher" +import Translation from "../../Translation" +import GatsbyImage from "../../GatsbyImage" +import { CommonHeroProps } from "../utils" + +export interface HomeHeroProps extends Pick {} + +const HomeHero = ({ heroImgSrc }: HomeHeroProps) => { + const { t } = useTranslation() + return ( + + + + + + + + + + + + + + + + + + + + ) +} + +export default HomeHero diff --git a/src/components/Hero/HubHero/HubHero.stories.tsx b/src/components/Hero/HubHero/HubHero.stories.tsx new file mode 100644 index 00000000000..2a87854b78f --- /dev/null +++ b/src/components/Hero/HubHero/HubHero.stories.tsx @@ -0,0 +1,87 @@ +import * as React from "react" +import { Meta, StoryObj } from "@storybook/react" +import HubHeroComponent, { HubHeroProps } from "./" +import { Box } from "@chakra-ui/react" +import { IGatsbyImageData } from "gatsby-plugin-image" +import { useTranslation } from "react-i18next" + +type HubHeroType = typeof HubHeroComponent + +const meta = { + title: "Organisms / Layouts / Hero", + component: HubHeroComponent, + parameters: { + layout: "none", + }, + decorators: [ + (Story) => ( + + + + ), + ], +} satisfies Meta + +export default meta + +const mockGatsbyImgData: IGatsbyImageData = { + layout: "fullWidth", + images: { + fallback: { + src: "/heroes/learn-hub-hero.png", + sizes: "100vw", + }, + sources: [ + { + srcSet: "/heroes/learn-hub-hero.png", + type: "image/webp", + sizes: "100vw", + }, + ], + }, + width: 1, + height: 1, +} + +export const HubHero: StoryObj = { + args: { + title: "learn-hub", + header: "hero-header", + description: "hero-subtitle", + heroImgSrc: mockGatsbyImgData, + }, + render: (args) => { + const { t } = useTranslation() + const { title, header, description, ...rest } = args + + const buttons: HubHeroProps["buttons"] = [ + { + content: t("hero-button-lets-get-started"), + toId: "what-is-crypto-ethereum", + matomo: { + eventCategory: "learn hub hero buttons", + eventAction: "click", + eventName: "lets get started", + }, + }, + { + content: "Button", + matomo: { + eventCategory: "learn hub hero buttons", + eventAction: "click", + eventName: "lets get started", + }, + }, + ] + + return ( + + ) + }, +} diff --git a/src/components/Hero/HubHero/index.tsx b/src/components/Hero/HubHero/index.tsx new file mode 100644 index 00000000000..4dfcd821ad1 --- /dev/null +++ b/src/components/Hero/HubHero/index.tsx @@ -0,0 +1,90 @@ +import * as React from "react" +import { + Box, + Heading, + HStack, + Stack, + Text, + useColorModeValue, +} from "@chakra-ui/react" +import GatsbyImage from "../../GatsbyImage" +import { CallToAction } from "../CallToAction" +import { CommonHeroProps } from "../utils" + +export interface HubHeroProps extends CommonHeroProps {} + +const HubHero = (props: HubHeroProps) => { + const { heroImgSrc, title, header, description, buttons } = props + + if (buttons && buttons.length > 2) { + throw Error( + "Can not have more than two call-to-action buttons in this hero component." + ) + } + + const largeContentBg = useColorModeValue( + "rgba(255, 255, 255, 0.80)", + "rgba(34, 34, 34, 0.80)" + ) + + return ( + + + + + {title} + + + {header} + {description} + + + {buttons + ? buttons.map((button, idx) => { + if (!button) return + return + }) + : null} + + + + ) +} + +export default HubHero diff --git a/src/components/Hero/MdxHero/MdxHero.stories.tsx b/src/components/Hero/MdxHero/MdxHero.stories.tsx new file mode 100644 index 00000000000..bdaa1d54538 --- /dev/null +++ b/src/components/Hero/MdxHero/MdxHero.stories.tsx @@ -0,0 +1,30 @@ +import * as React from "react" +import { Meta, StoryObj } from "@storybook/react" +import MdxHeroComponent from "./" +import { HStack } from "@chakra-ui/react" + +type MdxHeroType = typeof MdxHeroComponent + +const meta = { + title: "Organisms / Layouts / Hero", + parameters: { + layout: "none", + }, + decorators: [ + (Story) => ( + + + + ), + ], +} satisfies Meta + +export default meta + +export const MdxHero: StoryObj = { + args: { + breadcrumbs: { slug: "/en/staking/solo/" }, + title: "Solo stake your Eth", + }, + render: (args) => , +} diff --git a/src/components/Hero/MdxHero/index.tsx b/src/components/Hero/MdxHero/index.tsx new file mode 100644 index 00000000000..40fadf700bb --- /dev/null +++ b/src/components/Hero/MdxHero/index.tsx @@ -0,0 +1,22 @@ +import { Heading, Stack } from "@chakra-ui/react" +import * as React from "react" +import Breadcrumbs, { IProps as BreadcrumbsProps } from "../../Breadcrumbs" +import { CommonHeroProps } from "../utils" + +export interface MdxHeroProps extends Pick { + breadcrumbs: BreadcrumbsProps +} + +const MdxHero = (props: MdxHeroProps) => { + const { breadcrumbs, title } = props + return ( + + + + {title} + + + ) +} + +export default MdxHero diff --git a/src/components/Hero/index.ts b/src/components/Hero/index.ts new file mode 100644 index 00000000000..d49fb7397bf --- /dev/null +++ b/src/components/Hero/index.ts @@ -0,0 +1,4 @@ +export { default as ContentHero, type ContentHeroProps } from "./ContentHero" +export { default as HomeHero, type HomeHeroProps } from "./HomeHero" +export { default as HubHero, type HubHeroProps } from "./HubHero" +export { default as MdxHero, type MdxHeroProps } from "./MdxHero" diff --git a/src/components/Hero/utils.ts b/src/components/Hero/utils.ts new file mode 100644 index 00000000000..94e1afb2a2d --- /dev/null +++ b/src/components/Hero/utils.ts @@ -0,0 +1,10 @@ +import { IGatsbyImageData } from "gatsby-plugin-image" +import { CallToActionProps } from "./CallToAction" + +export type CommonHeroProps = { + heroImgSrc: IGatsbyImageData + header: string + title: string + description: string + buttons?: [CallToActionProps, CallToActionProps?] +} diff --git a/src/components/LeftNavBar/index.tsx b/src/components/LeftNavBar/index.tsx new file mode 100644 index 00000000000..46a542c0c63 --- /dev/null +++ b/src/components/LeftNavBar/index.tsx @@ -0,0 +1,65 @@ +import React from "react" +import { calc, Flex, FlexProps, HeadingProps } from "@chakra-ui/react" + +import ButtonDropdown, { + IProps as ButtonDropdownProps, + List as ButtonDropdownList, +} from "../ButtonDropdown" +import OldHeading from "../OldHeading" +import Translation from "../Translation" +import UpgradeTableOfContents from "../UpgradeTableOfContents" + +export const H2 = (props: HeadingProps) => ( + +) + +export const StyledButtonDropdown = ({ + list, + ...rest +}: FlexProps & Pick) => ( + + + +) + +interface IProps { + dropdownLinks?: ButtonDropdownList + maxDepth?: number + tocItems: any[] +} + +const LeftNavBar: React.FC = ({ + dropdownLinks, + maxDepth = 1, + tocItems, +}) => { + return ( + + {dropdownLinks && } +

+ +

+ {tocItems && ( + + )} +
+ ) +} + +export default LeftNavBar diff --git a/src/components/Modal/index.tsx b/src/components/Modal/index.tsx index 37ae983e0ec..6874d41a486 100644 --- a/src/components/Modal/index.tsx +++ b/src/components/Modal/index.tsx @@ -7,14 +7,15 @@ import { ModalCloseButton, ModalHeader, ModalBody, - ModalFooter, + type ModalProps, + type ModalContentProps, } from "@chakra-ui/react" export interface IPropsOverlay { isActive: boolean } -export interface IProps { +export interface IProps extends ModalContentProps, Pick { children?: React.ReactNode title?: string description?: string @@ -30,20 +31,29 @@ const Modal: React.FC = ({ description, actionButtonLabel, ButtonLabel, + /* size, */ isOpen, setIsOpen, - ...props + ...restProps }) => { return ( setIsOpen(false)} + isCentered + /* size={size ?? "xl"} */ scrollBehavior="inside" - {...props} > - + {title} {children} diff --git a/src/components/Morpher.tsx b/src/components/Morpher.tsx index 3e52a18d332..8e55b5ca07b 100644 --- a/src/components/Morpher.tsx +++ b/src/components/Morpher.tsx @@ -143,7 +143,7 @@ const Morpher = () => { diff --git a/src/components/Quiz/QuizItem.tsx b/src/components/Quiz/QuizItem.tsx index c478e487d01..6dc5b7e2089 100644 --- a/src/components/Quiz/QuizItem.tsx +++ b/src/components/Quiz/QuizItem.tsx @@ -56,7 +56,6 @@ const QuizItem: React.FC = (props) => { = (props) => { {/* Show green tick if quizz was completed only */} - - - + {isCompleted && } {/* Labels */} @@ -86,7 +83,7 @@ const QuizItem: React.FC = (props) => { {/* Start Button */} - )} - - {showResults ? ( - - - - - {/* Show `Next Quiz` button if quiz is opened from hub page */} - {hasNextQuiz && ( - - )} - - - {showResults && quizScore < 100 && ( - - )} - - ) : showAnswer ? ( - - ) : ( - - )} -
- - )} - - - ) -} - -export default QuizWidget diff --git a/src/components/Quiz/QuizWidget/AnswerIcon.tsx b/src/components/Quiz/QuizWidget/AnswerIcon.tsx new file mode 100644 index 00000000000..a41dffe82ad --- /dev/null +++ b/src/components/Quiz/QuizWidget/AnswerIcon.tsx @@ -0,0 +1,59 @@ +import { Circle, SquareProps } from "@chakra-ui/react" +import * as React from "react" +import { ChildOnlyProp } from "../../../types" +import { CorrectIcon, IncorrectIcon, TrophyIcon } from "../../icons/quiz" + +interface AnswerIconProps { + showAnswer: boolean + isCurrentQuestionCorrect: boolean | undefined +} + +/** + * Icon shown for the answer + * + * Defaults to the `TrophyIcon` prior to answering a question + */ +export const AnswerIcon = ({ + showAnswer, + isCurrentQuestionCorrect, +}: AnswerIconProps) => { + const commonProps = { + color: "neutral", + } + + const IconWrapper = (props: ChildOnlyProp) => { + const getWrapperBg = (): SquareProps["bg"] => { + if (!showAnswer) { + return "primary.base" + } + if (isCurrentQuestionCorrect) { + return "success.base" + } + return "error.base" + } + + return + } + + if (!showAnswer) { + return ( + + + + ) + } + + if (isCurrentQuestionCorrect) { + return ( + + + + ) + } + + return ( + + + + ) +} diff --git a/src/components/Quiz/QuizWidget/QuizButtonGroup.tsx b/src/components/Quiz/QuizWidget/QuizButtonGroup.tsx new file mode 100644 index 00000000000..1ff2366bf96 --- /dev/null +++ b/src/components/Quiz/QuizWidget/QuizButtonGroup.tsx @@ -0,0 +1,129 @@ +import * as React from "react" +import { Center, Icon } from "@chakra-ui/react" +import { FaTwitter } from "react-icons/fa" +import { Button } from "../../Buttons" +import Translation from "../../Translation" +import { AnswerChoice, Question } from "../../../types" + +export type QuizButtonGroupProps = { + showAnswer: boolean + showResults: boolean + quizScore: number + handleReset: () => void + currentQuestionIndex: number + currentQuestionAnswerChoice: AnswerChoice | null + questions: Question[] + finishedQuiz: boolean + handleRetryQuestion: () => void + handleShare: () => void + handleNextQuiz: () => void + hasNextQuiz: boolean + handleContinue: () => void + handleSubmitAnswer: (questionId: string, answerChoice: AnswerChoice) => void +} + +export const QuizButtonGroup = ({ + showAnswer, + showResults, + quizScore, + questions, + handleReset, + currentQuestionIndex, + currentQuestionAnswerChoice, + finishedQuiz, + handleRetryQuestion, + handleShare, + handleNextQuiz, + hasNextQuiz, + handleContinue, + handleSubmitAnswer, +}: QuizButtonGroupProps) => { + const hasFailedAnswer = + currentQuestionAnswerChoice && !currentQuestionAnswerChoice.isCorrect + + const hasNotPerfectQuizScore = quizScore < 100 + + const MainButtons = () => { + if (showResults) { + return ( + <> +
+ + + {/* Show `Next Quiz` button if quiz is opened from hub page */} + {hasNextQuiz && ( + + )} +
+ + {hasNotPerfectQuizScore ? ( + + ) : null} + + ) + } + + if (showAnswer) { + return ( + <> + {hasFailedAnswer ? ( + + ) : null} + + + ) + } + + return ( + + ) + } + + // Render QuizButtonGroup component + return ( +
+ +
+ ) +} diff --git a/src/components/Quiz/QuizWidget/QuizConfetti.tsx b/src/components/Quiz/QuizWidget/QuizConfetti.tsx new file mode 100644 index 00000000000..6cae8a0dbdf --- /dev/null +++ b/src/components/Quiz/QuizWidget/QuizConfetti.tsx @@ -0,0 +1,18 @@ +import * as React from "react" +import { IconProps } from "@chakra-ui/react" +import { StarConfettiIcon } from "../../icons/quiz" + +export const QuizConfetti = () => { + const commonProps: IconProps = { + fontSize: "184px", + position: "absolute", + top: 0, + } + return ( + <> + + + + + ) +} diff --git a/src/components/Quiz/QuizWidget/QuizContent.tsx b/src/components/Quiz/QuizWidget/QuizContent.tsx new file mode 100644 index 00000000000..dcff6123c80 --- /dev/null +++ b/src/components/Quiz/QuizWidget/QuizContent.tsx @@ -0,0 +1,100 @@ +import * as React from "react" +import { Center, Container, Text, TextProps, VStack } from "@chakra-ui/react" +import QuizSummary from "../QuizSummary" +import QuizRadioGroup from "../QuizRadioGroup" +import { PROGRESS_BAR_GAP } from "../../../constants" +import { Question } from "../../../types" + +export type QuizContentProps = { + showAnswer: boolean + showResults: boolean + isCurrentQuestionCorrect: boolean | undefined + questions: Question[] + title: string + progressBarBackground: (index: number) => string + quizSummaryProps: Omit< + React.ComponentPropsWithoutRef, + "quizData" + > + currentQuestionIndex: number + quizRadioGroupProps: Omit< + React.ComponentPropsWithoutRef, + "questionData" | "showAnswer" + > +} + +export const QuizContent = ({ + showAnswer, + isCurrentQuestionCorrect, + questions, + title, + progressBarBackground, + showResults, + quizSummaryProps, + currentQuestionIndex, + quizRadioGroupProps, +}: QuizContentProps) => { + const getTitleTextColor = (): TextProps["color"] => { + if (showAnswer) { + return isCurrentQuestionCorrect ? "success.base" : "fail.base" + } + + return "primary.hover" + } + + const getTitleContent = (): string => { + if (showAnswer) { + return isCurrentQuestionCorrect ? "Correct!" : "Incorrect" + } + + return title + } + + return ( + + {/* Quiz title */} + + + {getTitleContent()} + + + {!showResults ? ( + <> + {/* Progress bar */} +
+ {questions.map(({ id }, index) => { + /* Calculate width percent based on number of questions */ + const width = `calc(${Math.floor( + 100 / questions.length + )}% - ${PROGRESS_BAR_GAP})` + + return ( + + ) + })} +
+ + + ) : ( + + )} +
+ ) +} diff --git a/src/components/Quiz/QuizWidget/StandaloneQuizHeading.tsx b/src/components/Quiz/QuizWidget/StandaloneQuizHeading.tsx new file mode 100644 index 00000000000..ccd3fcb12f1 --- /dev/null +++ b/src/components/Quiz/QuizWidget/StandaloneQuizHeading.tsx @@ -0,0 +1,15 @@ +import * as React from "react" +import { Heading } from "@chakra-ui/react" +import Translation from "../../Translation" + +export const StandaloneQuizHeading = () => ( + + + +) diff --git a/src/components/Quiz/QuizWidget/index.tsx b/src/components/Quiz/QuizWidget/index.tsx new file mode 100644 index 00000000000..907b4da2b12 --- /dev/null +++ b/src/components/Quiz/QuizWidget/index.tsx @@ -0,0 +1,158 @@ +import * as React from "react" +import { Center, Spinner, Stack, StackProps, VStack } from "@chakra-ui/react" + +import { StandaloneQuizHeading } from "./StandaloneQuizHeading" +import { AnswerIcon } from "./AnswerIcon" +import { QuizConfetti } from "./QuizConfetti" +import { QuizContent } from "./QuizContent" +import { QuizButtonGroup } from "./QuizButtonGroup" +import { useQuizWidget } from "./useQuizWidget" + +import { QuizStatus } from "../../../types" + +export interface IProps { + quizKey?: string + currentHandler?: (next?: string) => void + statusHandler?: (status: QuizStatus) => void + maxQuestions?: number + isStandaloneQuiz?: boolean +} + +const QuizWidget: React.FC = (props) => { + const { + quizData, + showAnswer, + currentQuestionAnswerChoice, + showConfetti, + progressBarBackground, + currentQuestionIndex, + finishedQuiz, + handleContinue, + handleRetryQuestion, + handleSelection, + handleShare, + handleSubmitAnswer, + hasNextQuiz, + initialize, + isPassingScore, + numberOfCorrectAnswers, + quizScore, + ratioCorrect, + selectedAnswer, + setUserStats, + showResults, + handleNextQuiz, + } = useQuizWidget(props) + + const { quizKey, isStandaloneQuiz = false } = props + + const getMainContainerBg = (): StackProps["bg"] => { + if (!showAnswer) { + return "neutral" + } + + if (currentQuestionAnswerChoice?.isCorrect) { + return "success.neutral" + } + + return "error.neutral" + } + + // Render QuizWidget component + return ( + + {/* Inner Container */} + + {showConfetti && } + +
+ +
+ + {quizData ? ( + <> + + + + ) : ( + + )} + +
+
+ ) +} + +export default QuizWidget + +/** + * For use of the widget on single pages (not the quizzes page) + */ +export const StandaloneQuizWidget = ( + props: Omit +) => ( + + + + +) diff --git a/src/components/Quiz/QuizWidget/useQuizWidget.tsx b/src/components/Quiz/QuizWidget/useQuizWidget.tsx new file mode 100644 index 00000000000..313fc76635d --- /dev/null +++ b/src/components/Quiz/QuizWidget/useQuizWidget.tsx @@ -0,0 +1,271 @@ +import { useCallback, useContext, useEffect, useMemo, useState } from "react" +import { shuffle } from "lodash" +import { useTranslation } from "gatsby-plugin-react-i18next" + +import allQuizzesData from "../../../data/quizzes" +import { + AnswerChoice, + Question, + Quiz, + RawQuestion, + RawQuiz, +} from "../../../types" +import questionBank from "../../../data/quizzes/questionBank" +import { PASSING_QUIZ_SCORE, USER_STATS_KEY } from "../../../constants" +import { trackCustomEvent } from "../../../utils/matomo" +import { INITIAL_USER_STATS } from "../../../pages/quizzes" + +import { QuizzesHubContext } from "../context" +import { getNextQuiz } from "../utils" +import type { IProps } from "./index" + +export const useQuizWidget = ({ + currentHandler, + statusHandler, + isStandaloneQuiz, + maxQuestions, + quizKey, +}: IProps) => { + const { t } = useTranslation() + + const [quizData, setQuizData] = useState(null) + const [nextQuiz, setNextQuiz] = useState(undefined) + const [userQuizProgress, setUserQuizProgress] = useState>( + [] + ) + const [showAnswer, setShowAnswer] = useState(false) + const [currentQuestionAnswerChoice, setCurrentQuestionAnswerChoice] = + useState(null) + const [selectedAnswer, setSelectedAnswer] = useState(null) + + const { setUserStats } = useContext(QuizzesHubContext) + + useEffect(() => { + // If quiz is standalone (out of Quiz Hub page), + // stats required to be initialized on localStorage first + const item = window.localStorage.getItem(USER_STATS_KEY) + + if (item === null) { + localStorage.setItem(USER_STATS_KEY, JSON.stringify(INITIAL_USER_STATS)) + } + + setNextQuiz(getNextQuiz(quizKey)) + }, [quizKey]) + + const hasNextQuiz = !isStandaloneQuiz && !!nextQuiz + const finishedQuiz = + userQuizProgress.length === quizData?.questions.length! - 1 + + // Reset quiz state + const initialize = () => { + setQuizData(null) + setCurrentQuestionAnswerChoice(null) + setUserQuizProgress([]) + setShowAnswer(false) + setSelectedAnswer(null) + + if (!isStandaloneQuiz) { + statusHandler?.("neutral") + } + + const currentQuizKey = + quizKey || + Object.keys(allQuizzesData).filter((quizUri) => + window?.location.href.includes(quizUri) + )[0] || + null + + if (!currentQuizKey) return + + // Get quiz data from key, shuffle, then truncate if necessary + const rawQuiz: RawQuiz = allQuizzesData[currentQuizKey] + const questions: Array = rawQuiz.questions.map((id) => { + const rawQuestion: RawQuestion = questionBank[id] + return { id, ...rawQuestion } + }) + const shuffledQuestions = shuffle(questions) + const trimmedQuestions = maxQuestions + ? shuffledQuestions.slice(0, maxQuestions) + : shuffledQuestions + const quiz: Quiz = { + title: t(rawQuiz.title), + questions: trimmedQuestions, + } + + setQuizData(quiz) + } + + useEffect(initialize, [quizKey]) + + const currentQuestionIndex = userQuizProgress.length + const showResults = currentQuestionIndex === quizData?.questions.length + + const progressBarBackground = useCallback( + (index: number): string => { + if ( + (showAnswer && + index === currentQuestionIndex && + currentQuestionAnswerChoice?.isCorrect) || + userQuizProgress[index]?.isCorrect + ) { + return "success.base" + } + + if ( + (showAnswer && + index === currentQuestionIndex && + !currentQuestionAnswerChoice?.isCorrect) || + (userQuizProgress[index] && !userQuizProgress[index].isCorrect) + ) { + return "error.base" + } + + if (index === currentQuestionIndex) { + return "gray.400" + } + + return "gray.500" + }, + [ + showAnswer, + currentQuestionIndex, + currentQuestionAnswerChoice, + userQuizProgress, + ] + ) + + const numberOfCorrectAnswers = userQuizProgress.filter( + ({ isCorrect }) => isCorrect + ).length + + const ratioCorrect = !quizData + ? 0 + : numberOfCorrectAnswers / quizData.questions.length + + const quizScore = Math.floor(ratioCorrect * 100) + const isPassingScore = quizScore > PASSING_QUIZ_SCORE + + const showConfetti = useMemo( + () => !!quizData && showResults && isPassingScore, + [quizData, showResults, isPassingScore] + ) + + const handleSelectAnswerChoice = (answerId: string) => { + const isCorrect = + answerId === quizData?.questions[currentQuestionIndex].correctAnswerId + setCurrentQuestionAnswerChoice({ answerId, isCorrect }) + } + + const handleSelection = (answerId: string) => { + setSelectedAnswer(answerId) + handleSelectAnswerChoice(answerId) + } + + const handleSubmitAnswer = (questionId: string, answer: AnswerChoice) => { + trackCustomEvent({ + eventCategory: "Quiz widget", + eventAction: "Question answered", + eventName: `QID: ${questionId}`, + eventValue: answer.isCorrect ? "1" : "0", + }) + + setShowAnswer(true) + + if (!isStandaloneQuiz) { + if (currentQuestionAnswerChoice?.isCorrect) { + statusHandler?.("success") + } + + if (!currentQuestionAnswerChoice?.isCorrect) { + statusHandler?.("error") + } + } + } + + const handleRetryQuestion = () => { + trackCustomEvent({ + eventCategory: "Quiz widget", + eventAction: "Other", + eventName: "Retry question", + }) + + setCurrentQuestionAnswerChoice(null) + setSelectedAnswer(null) + setShowAnswer(false) + + if (!isStandaloneQuiz) { + statusHandler?.("neutral") + } + } + + const handleShare = () => { + if (!quizData || !window) return + + trackCustomEvent({ + eventCategory: "quiz_hub_events", + eventAction: "Secondary button clicks", + eventName: "Twitter_share_quiz", + }) + + const url = `https://ethereum.org${window.location.pathname}%23quiz` + const hashtags = ["ethereumquiz", "ethereum", "quiz"] + const tweet = `${encodeURI( + `I just took the "${quizData.title}" quiz on ethereum.org and scored ${numberOfCorrectAnswers} out of ${quizData.questions.length}! Try it yourself at ${url}` + )}` + + window.open( + `https://twitter.com/intent/tweet?text=${tweet}&hashtags=${hashtags}` + ) + } + + const handleContinue = () => { + if (!currentQuestionAnswerChoice) return + + setUserQuizProgress((prev) => [...prev, currentQuestionAnswerChoice]) + setCurrentQuestionAnswerChoice(null) + setShowAnswer(false) + + // Reset quiz status (modifies bg color for mobile) + if (!isStandaloneQuiz) { + statusHandler?.("neutral") + } + + if (finishedQuiz) { + trackCustomEvent({ + eventCategory: "Quiz widget", + eventAction: "Other", + eventName: "Submit results", + eventValue: `${quizScore}%`, + }) + } + } + + const handleNextQuiz = () => { + currentHandler?.(nextQuiz) + } + + return { + quizData, + showAnswer, + currentQuestionAnswerChoice, + showConfetti, + progressBarBackground, + showResults, + numberOfCorrectAnswers, + isPassingScore, + ratioCorrect, + quizScore, + setUserStats, + currentQuestionIndex, + handleSelection, + selectedAnswer, + handleRetryQuestion, + handleShare, + hasNextQuiz, + handleContinue, + initialize, + finishedQuiz, + handleSubmitAnswer, + handleNextQuiz, + } +} diff --git a/src/components/Quiz/QuizzesModal.tsx b/src/components/Quiz/QuizzesModal.tsx index b8fd60428aa..16bf5cce20b 100644 --- a/src/components/Quiz/QuizzesModal.tsx +++ b/src/components/Quiz/QuizzesModal.tsx @@ -5,6 +5,8 @@ import { ModalContent, ModalCloseButton, ModalProps, + ModalContentProps, + Center, } from "@chakra-ui/react" import { QuizzesHubContext } from "./context" @@ -16,12 +18,15 @@ interface IProps extends ModalProps { const QuizzesModal: React.FC = ({ children, ...rest }) => { const { status: quizStatus } = useContext(QuizzesHubContext) - const statusColor = - quizStatus === "neutral" - ? "neutral" - : quizStatus === "success" - ? "success.light" - : "error.light" + const getStatusColor = (): ModalContentProps["bg"] => { + if (quizStatus === "neutral") { + return "neutral" + } + if (quizStatus === "success") { + return "success.neutral" + } + return "error.neutral" + } return ( = ({ children, ...rest }) => { scrollBehavior="inside" {...rest} > - + - - +
+ {children} - +
) } diff --git a/src/components/Quiz/QuizzesStats.tsx b/src/components/Quiz/QuizzesStats.tsx index 9f0ad228d87..9bfe6641bdf 100644 --- a/src/components/Quiz/QuizzesStats.tsx +++ b/src/components/Quiz/QuizzesStats.tsx @@ -3,9 +3,9 @@ import { Box, Circle, Flex, - Grid, GridItem, Progress, + SimpleGrid, Stack, Text, } from "@chakra-ui/react" @@ -66,18 +66,19 @@ const QuizzesStats: React.FC = () => { } = getFormattedStats(language, average) return ( - - + + {/* user stats */} - - + { { handleShare({ score: userScore, total: totalQuizzesPoints }) } w={{ base: "full", lg: "auto" }} - mt={{ base: 2, lg: 0 }} + mt={{ base: "2", lg: 0 }} > - + {
- + {userScore} /{totalQuizzesPoints} @@ -128,20 +128,15 @@ const QuizzesStats: React.FC = () => { - - + + {" "} {formattedUserAverageScore} - + {" "} {numberOfCompletedQuizzes}/{totalQuizzesNumber} @@ -150,56 +145,52 @@ const QuizzesStats: React.FC = () => { - + {/* community stats */} - - + - - - - - {/* Data from Matomo, manually updated */} - {formattedCollectiveAverageScore} - - - - - - - - {/* Data from Matomo, manually updated */} - - {formattedCollectiveQuestionsAnswered} - + - - - - - - - - - {/* Data from Matomo, manually updated */} - {formattedCollectiveRetryRate} - + {( + [ + { + labelId: "average-score", + value: formattedCollectiveAverageScore, + }, + { + labelId: "questions-answered", + value: formattedCollectiveQuestionsAnswered + "+", + }, + { + labelId: "retry", + value: formattedCollectiveRetryRate, + }, + ] satisfies Array<{ labelId: string; value: string }> + ).map(({ labelId, value }) => ( + + + + + {/* Data from Matomo, manually updated */} + {value} + + ))} - +
) diff --git a/src/components/UpgradeTableOfContents.tsx b/src/components/UpgradeTableOfContents.tsx index 5a449d8c27e..8fd5d93d0ee 100644 --- a/src/components/UpgradeTableOfContents.tsx +++ b/src/components/UpgradeTableOfContents.tsx @@ -56,9 +56,15 @@ const TableOfContentsLink: React.FC<{ item: Item }> = (props) => { position="relative" display="inline-block" // `li :last-child` global selector wants to override this without `!important` - mb="0.5rem !important" - color="text300" + mb="1rem !important" + textDecoration="none" + color="body.medium" fontWeight="normal" + fontSize="xl" + _hover={{ + color: "primary.hover", + textDecoration: "none", + }} _visited={{}} > {trimmedTitle(item.title)} @@ -105,19 +111,10 @@ function UpgradeTableOfContents(props: { as="nav" p={0} mb={8} - textAlign="end" overflowY="auto" display={{ base: "none", l: "block" }} > - + diff --git a/src/components/icons/Icons.stories.tsx b/src/components/icons/Icons.stories.tsx index 5399aa3b8bb..b4778ec6e54 100644 --- a/src/components/icons/Icons.stories.tsx +++ b/src/components/icons/Icons.stories.tsx @@ -46,6 +46,7 @@ import { EconomicalIcon, EthpoolGlyphIcon, GreenCheckProductGlyphIcon, + P2PGlyphIcon, KilnGlyphIcon, LidoGlyphIcon, LiquidityTokenIcon, @@ -132,6 +133,7 @@ const iconsDefinitions = [ EconomicalIcon, EthpoolGlyphIcon, GreenCheckProductGlyphIcon, + P2PGlyphIcon, KilnGlyphIcon, LidoGlyphIcon, LiquidityTokenIcon, diff --git a/src/components/icons/staking/P2PGlyphIcon.tsx b/src/components/icons/staking/P2PGlyphIcon.tsx new file mode 100644 index 00000000000..0dc95ee497b --- /dev/null +++ b/src/components/icons/staking/P2PGlyphIcon.tsx @@ -0,0 +1,28 @@ +import React from "react" +import { createIcon } from "@chakra-ui/react" + +export const P2PGlyphIcon = createIcon({ + displayName: "P2PGlyphIcon", + viewBox: "0 0 32 32", + defaultProps: { + width: "32px", + height: "32px", + fill: "currentColor", + }, + path: [ + , + , + , + , + , + , + ], +}) diff --git a/src/components/icons/staking/index.ts b/src/components/icons/staking/index.ts index 46757a5437e..ff206007319 100644 --- a/src/components/icons/staking/index.ts +++ b/src/components/icons/staking/index.ts @@ -12,6 +12,7 @@ export * from "./DockerGlyphIcon" export * from "./EconomicalIcon" export * from "./EthpoolGlyphIcon" export * from "./GreenCheckProductGlyphIcon" +export * from "./P2PGlyphIcon" export * from "./KilnGlyphIcon" export * from "./ChainLaboGlyphIcon" export * from "./LaunchnodesGlyphIcon" diff --git a/src/content/bridges/index.md b/src/content/bridges/index.md index 7f6a5664ab4..7dd48d74df5 100644 --- a/src/content/bridges/index.md +++ b/src/content/bridges/index.md @@ -6,7 +6,7 @@ lang: en # Blockchain bridges {#prerequisites} -_Web3 has evolved into an ecosystem of L1 blockchains and L2 scaling solutions, each designed with unique capabilities and trade-offs. As the number of blockchains protocols increases, so does [the demand to move assets across chains](). To fulfill this demand, we need bridges._ +_Web3 has evolved into an ecosystem of L1 blockchains and L2 scaling solutions, each designed with unique capabilities and trade-offs. As the number of blockchain protocols increases, so does [the demand to move assets across chains](). To fulfill this demand, we need bridges._ diff --git a/src/content/community/code-of-conduct/index.md b/src/content/community/code-of-conduct/index.md index 0dd45d32983..8f14a5f8c52 100644 --- a/src/content/community/code-of-conduct/index.md +++ b/src/content/community/code-of-conduct/index.md @@ -39,7 +39,7 @@ This Code of Conduct applies to all ethereum.org spaces (such as GitHub, Discord ### Our standards {#our-standards} -Examples of behaviour that contributes to creating a positive environment include: +Examples of behavior that contributes to creating a positive environment include: - Using welcoming and inclusive language - Being respectful of differing viewpoints and experiences diff --git a/src/content/community/get-involved/index.md b/src/content/community/get-involved/index.md index 715e585a63f..465e4007eb1 100644 --- a/src/content/community/get-involved/index.md +++ b/src/content/community/get-involved/index.md @@ -29,7 +29,7 @@ Do you have a background in mathematics, cryptography, or economics? You might b - Write an EIP 1. Submit your idea on [Ethereum Magicians](https://ethereum-magicians.org) 2. Read [EIP-1](https://eips.ethereum.org/EIPS/eip-1) - **Yes, that's the _entire_ document.** - 3. Follow the directons in EIP-1. Reference it as you write your draft. + 3. Follow the directions in EIP-1. Reference it as you write your draft. - Learn how to become an [EIP Editor](https://eips.ethereum.org/EIPS/eip-5069) - You can peer-review EIPs right now! See [open PRs with the `e-review` tag](https://github.com/ethereum/EIPs/pulls?q=is%3Apr+is%3Aopen+label%3Ae-review). Provide technical feedback on the `discussion-to` link. - Participate in [EIP Governance](https://github.com/ethereum-cat-herders/EIPIP) diff --git a/src/content/community/grants/index.md b/src/content/community/grants/index.md index f8f710791b8..88a227b64ec 100644 --- a/src/content/community/grants/index.md +++ b/src/content/community/grants/index.md @@ -20,7 +20,7 @@ These programs support the broad Ethereum ecosystem by offering grants to a wide - [DAO Grants](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) - _Google spreadsheet of organizations offering grants_ - [Crunchbase for Web3 Grants](https://www.cryptoneur.xyz/web3-grants) - _Filter and search for grants by category, use case, amount, and more. Contribute to help others find the right grant._ - [Academic Grants](https://esp.ethereum.foundation/academic-grants) - _Grants to support Ethereum-related academic work_ -- [Blockworks Grantfarm](https://blockworks.co/grants/programs) - \_Blockworks has compiled a comprehensive directory of all grants, RFPs, and bug bounties. +- [Blockworks Grantfarm](https://blockworks.co/grants/programs) - _Blockworks has compiled a comprehensive directory of all grants, RFPs, and bug bounties._ ## Project specific {#project-specific} diff --git a/src/content/community/language-resources/index.md b/src/content/community/language-resources/index.md index 70e20ddd539..f6c15a5e071 100644 --- a/src/content/community/language-resources/index.md +++ b/src/content/community/language-resources/index.md @@ -72,7 +72,7 @@ If you are bilingual and want to help us reach more people, you can also get inv - [Gwei.cz](https://gwei.cz) - local community around Web3, creates educational content, organises online and in-person events - [Gwei.cz Příručka](https://prirucka.gwei.cz/) - Ethereum guide for beginners - [DAO Příručka](https://dao.gwei.cz/) - beginner's guide to the DAOs -- [Mastering Ethereum](https://ipfs.infura-ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) - Mastering Ethereum in Czech +- [Mastering Ethereum](https://ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) - Mastering Ethereum in Czech ### French {#fr} diff --git a/src/content/community/research/index.md b/src/content/community/research/index.md index b4e2796ec4a..42ae2fa0aa8 100644 --- a/src/content/community/research/index.md +++ b/src/content/community/research/index.md @@ -156,7 +156,7 @@ Sharding Ethereum's blockchain has long been part of the development roadmap. Ho #### Recent research {#recent-research-5} -- [ecdsa on FGPAs](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738) +- [ecdsa on FPGAs](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738) ## Security {#security} diff --git a/src/content/community/support/index.md b/src/content/community/support/index.md index be97d664077..89882394c5a 100644 --- a/src/content/community/support/index.md +++ b/src/content/community/support/index.md @@ -39,7 +39,7 @@ Looking for an Ethereum wallet? [Explore our full list of Ethereum wallets](/wal Building can be hard. Here are some development focused spaces with experienced Ethereum developers that are happy to help. - [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/) diff --git a/src/content/contributing/adding-exchanges/index.md b/src/content/contributing/adding-exchanges/index.md index d86402a793b..bf88d785930 100644 --- a/src/content/contributing/adding-exchanges/index.md +++ b/src/content/contributing/adding-exchanges/index.md @@ -20,7 +20,7 @@ Because of this context, we need some specific information when you suggest an e ## What we need {#what-we-need} -- The geographical restrictions that apply to the exchange +- The geographical restrictions that apply to the exchange. Geographic restrictions associated with the exchange should be detailed on a dedicated page or section of the exchange's website. - The currencies users can use to buy ETH - Proof that the exchange is a legitimate trading company - Any additional information you might have – this might be information about the company like years of operation, financial backing etc. diff --git a/src/content/contributing/translation-program/content-buckets/index.md b/src/content/contributing/translation-program/content-buckets/index.md index 323055bc894..a672ffc2b24 100644 --- a/src/content/contributing/translation-program/content-buckets/index.md +++ b/src/content/contributing/translation-program/content-buckets/index.md @@ -45,8 +45,8 @@ Below is a breakdown of the website pages each content bucket contains. - [Decentralized finance (DeFi)](/defi/) - [Introduction to smart contracts](/smart-contracts/) -- [Decentralized identity)](/decentralized-identity/) -- [Decentralized social networks)](/social-networks/) +- [Decentralized identity](/decentralized-identity/) +- [Decentralized social networks](/social-networks/) - [Decentralized science (DeSci))](/desci/) ## 6) Staking pages {#staking-pages} diff --git a/src/content/contributing/translation-program/faq/index.md b/src/content/contributing/translation-program/faq/index.md index b98fe5f8fef..dc08578442e 100644 --- a/src/content/contributing/translation-program/faq/index.md +++ b/src/content/contributing/translation-program/faq/index.md @@ -18,7 +18,7 @@ The goal of the Translation Program is to make Ethereum content accessible to ev For this reason, the Translation Program is open and voluntary, and participation is not subject to compensation. If we were to compensate translators for the number of words they translate, we could only invite those with sufficient translation experience (professional translators) to join the Translation Program. This would make the Translation Program exclusionary and prevent us from reaching the outlined goals, specifically: allowing everyone to participate and get involved with the ecosystem. -We make every effort to enable our contributors to succeed in the Ethereum ecosystem; many non-monteary incentives are in place such as: [offering POAPs](/contributing/translation-program/acknowledgements/#poap) and a [translator certificate](/contributing/translation-program/acknowledgements/#certificate), as well as organizing the [Translation Leaderboards](/contributing/translation-program/acknowledgements/) and [listing all of our translators on the site](/contributing/translation-program/contributors/). +We make every effort to enable our contributors to succeed in the Ethereum ecosystem; many non-monetary incentives are in place such as: [offering POAPs](/contributing/translation-program/acknowledgements/#poap) and a [translator certificate](/contributing/translation-program/acknowledgements/#certificate), as well as organizing the [Translation Leaderboards](/contributing/translation-program/acknowledgements/) and [listing all of our translators on the site](/contributing/translation-program/contributors/). ## How do I translate strings with ``? {#tags} diff --git a/src/content/contributing/translation-program/playbook/index.md b/src/content/contributing/translation-program/playbook/index.md index ca742814ad7..9867675b09a 100644 --- a/src/content/contributing/translation-program/playbook/index.md +++ b/src/content/contributing/translation-program/playbook/index.md @@ -192,7 +192,7 @@ An example workflow in this case would be: Read more about translation workflows: -[Content rules on the five phrases of the translation workflow](https://contentrules.com/creating-translation-workflow/) +[Content rules on the five phases of the translation workflow](https://contentrules.com/creating-translation-workflow/) [Smartling on what is translation workflow management](https://www.smartling.com/resources/101/what-is-translation-workflow-management/) diff --git a/src/content/dao/index.md b/src/content/dao/index.md index a354ea7fcb9..ca1050288ce 100644 --- a/src/content/dao/index.md +++ b/src/content/dao/index.md @@ -81,7 +81,7 @@ In many DAOs, transactions will be automatically executed if a quorum of members #### A famous example {#governance-example} -[Nouns](https://nouns.wtf) – In Nouns DAO, a transaction is automatically executed if a quorum of votes is met and a majority votes affimrative, as long as it is not vetoed by the founders. +[Nouns](https://nouns.wtf) – In Nouns DAO, a transaction is automatically executed if a quorum of votes is met and a majority votes affirmative, as long as it is not vetoed by the founders. ### Multisig governance {#governance-example} diff --git a/src/content/decentralized-identity/index.md b/src/content/decentralized-identity/index.md index 65819bec5f6..8733ce5bb6b 100644 --- a/src/content/decentralized-identity/index.md +++ b/src/content/decentralized-identity/index.md @@ -119,7 +119,7 @@ Here's an example to show how on-chain attestations might work in practice: 3. Decentralized identity harnesses blockchain technology, which creates trust between different parties and provides cryptographic guarantees to prove the validity of attestations. -4. Decentralized identity makes identity data portable. Users store attestations and identifiers in mobile wallet and can share with any party of their choice. Decentralized identifiers and attestations are not locked into the database of the issuing organization. +4. Decentralized identity makes identity data portable. Users store attestations and identifiers in a mobile wallet and can share with any party of their choice. Decentralized identifiers and attestations are not locked into the database of the issuing organization. 5. Decentralized identity should work well with emerging zero-knowledge technologies that will enable individuals to prove they own or have done something without revealing what that thing is. This could become a powerful way to combine trust and privacy for applications such as voting. diff --git a/src/content/deprecated-software/index.md b/src/content/deprecated-software/index.md index ec866dcbf1b..2374399b9ed 100644 --- a/src/content/deprecated-software/index.md +++ b/src/content/deprecated-software/index.md @@ -339,7 +339,7 @@ Shut down in Fall 2021 **Summary** -Cover was an DeFi insurance protocol running on Ethereum and other EVM-based networks. +Cover was a DeFi insurance protocol running on Ethereum and other EVM-based networks. **Archives** diff --git a/src/content/desci/index.md b/src/content/desci/index.md index 7e7d5308d03..ed0799a3105 100644 --- a/src/content/desci/index.md +++ b/src/content/desci/index.md @@ -18,7 +18,7 @@ Decentralized science (DeSci) is a movement that aims to build public infrastruc DeSci aims to create an ecosystem where scientists are incentivized to openly share their research and receive credit for their work while allowing anyone to access and contribute to the research easily. DeSci works off the idea that scientific knowledge should be accessible to everyone and that the process of scientific research should be transparent. DeSci is creating a more decentralized and distributed scientific research model, making it more resistant to censorship and control by central authorities. DeSci hopes to create an environment where new and unconventional ideas can flourish by decentralizing access to funding, scientific tools, and communication channels. -Decentralized science allows for more diverse funding sources (from [DAOs](/dao/), [quadratic donations](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) to crowdfunding and more), more accessible access data and methods, and by providing incentives for reproducibility. +Decentralized science allows for more diverse funding sources (from [DAOs](/dao/), [quadratic donations](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) to crowdfunding and more), more accessible data and methods, and by providing incentives for reproducibility. ### Juan Benet - The DeSci Movement @@ -104,7 +104,7 @@ Explore projects and join the DeSci community. - [OceanDAO: DAO governed funding for data-related science](https://oceanprotocol.com/dao) - [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.molecule.to/) +- [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) diff --git a/src/content/developers/docs/apis/json-rpc/index.md b/src/content/developers/docs/apis/json-rpc/index.md index 1b38f48cd0a..d085f13ca2a 100755 --- a/src/content/developers/docs/apis/json-rpc/index.md +++ b/src/content/developers/docs/apis/json-rpc/index.md @@ -915,7 +915,7 @@ Creates new message call transaction or a contract creation, if the data field c - `gas`: `QUANTITY` - (optional, default: 90000) Integer of the gas provided for the transaction execution. It will return unused gas. - `gasPrice`: `QUANTITY` - (optional, default: To-Be-Determined) Integer of the gasPrice used for each paid gas. - `value`: `QUANTITY` - (optional) Integer of the value sent with this transaction. -- `data`: `DATA` - The compiled code of a contract OR the hash of the invoked method signature and encoded parameters. +- `input`: `DATA` - The compiled code of a contract OR the hash of the invoked method signature and encoded parameters. - `nonce`: `QUANTITY` - (optional) Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce. ```js @@ -926,7 +926,8 @@ params: [ gas: "0x76c0", // 30400 gasPrice: "0x9184e72a000", // 10000000000000 value: "0x9184e72a", // 2441406250 - data: "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675", + input: + "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675", }, ] ``` diff --git a/src/content/developers/docs/design-and-ux/index.md b/src/content/developers/docs/design-and-ux/index.md index 9dca28557d2..81d322097ec 100644 --- a/src/content/developers/docs/design-and-ux/index.md +++ b/src/content/developers/docs/design-and-ux/index.md @@ -21,20 +21,22 @@ Effective design goes beyond creating visually appealing user interfaces. It inv This is a curated list of user research done in web3 that may help with design and product decisions or work as an inspiration to conduct own study. -- [CRADL: Crypto Research and Design Lab](https://project-cradl.notion.site/Crypto-Research-and-Design-Lab-50a7127f34ed4c88ad95c7cedf7fbe36) -- [CRADL: UX in Cryptocurrency](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) -- [CRADL: Onboarding to Cryptocurrency](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) -- [ConSensys: The State of Web3 perception around the world 2023](https://consensys.io/insight-report/web3-and-crypto-global-survey-2023) -- [Staking survey: Key trends, takeaways, and predictions - Eth Staker](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) -- [Survey: The state of Defi 2023](https://stateofdefi.org/) -- [Usability and user satisfaction survey - Ethereum.org](https://lookerstudio.google.com/reporting/0a189a7c-a890-40db-a5c6-009db52c81c9) -- [Usability study: Coverage pools](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) -- [Usability study: Multi App Staking]() -- [2022 DAO Research Update: What do DAO Builders Need?](https://blog.aragon.org/2022-dao-research-update/) -- [ConSensys: DeFi User Research Report 2022](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) -- [Bitcoin UX report](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) -- [Metaverse: User Research Report](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) -- [Going on Safari: Researching Users in the Metaverse](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube) (video, 27 min) +| Area of focus | Name | +| :------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Crypto onboarding | [CRADL: Crypto Research and Design Lab](https://project-cradl.notion.site/Crypto-Research-and-Design-Lab-50a7127f34ed4c88ad95c7cedf7fbe36) | +| Crypto onboarding | [CRADL: UX in Cryptocurrency](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) | +| Crypto onboarding | [CRADL: Onboarding to Cryptocurrency](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) | +| Crypto onboarding | [Bitcoin UX report](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) | +| Crypto onboarding | [ConSensys: The State of Web3 perception around the world 2023](https://consensys.io/insight-report/web3-and-crypto-global-survey-2023) | +| Staking | [Staking: Key trends, takeaways, and predictions - Eth Staker](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) | +| Staking | [Multi App Staking]() | +| DAO | [2022 DAO Research Update: What do DAO Builders Need?](https://blog.aragon.org/2022-dao-research-update/) | +| DeFi | [The state of Defi 2023](https://stateofdefi.org/) | +| DeFi | [Coverage pools](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) | +| DeFi | [ConSensys: DeFi User Research Report 2022](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) | +| Metaverse | [Metaverse: User Research Report](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) | +| Metaverse | [Going on Safari: Researching Users in the Metaverse](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube) (video, 27 min) | +| Ethereum.org UX stats | [Usability and user satisfaction survey dashboard - Ethereum.org](https://lookerstudio.google.com/reporting/0a189a7c-a890-40db-a5c6-009db52c81c9) | ## Design for web3 {#design-for-web3} diff --git a/src/content/developers/docs/evm/index.md b/src/content/developers/docs/evm/index.md index 7be53944c9c..859ff205648 100644 --- a/src/content/developers/docs/evm/index.md +++ b/src/content/developers/docs/evm/index.md @@ -66,6 +66,7 @@ Over Ethereum's nine year history, the EVM has undergone several revisions, and - [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 {#further-reading} diff --git a/src/content/developers/docs/frameworks/index.md b/src/content/developers/docs/frameworks/index.md index a082708936a..bd83e0e135b 100644 --- a/src/content/developers/docs/frameworks/index.md +++ b/src/content/developers/docs/frameworks/index.md @@ -114,7 +114,6 @@ Before diving into frameworks, we recommend you first read through our introduct - [Community Forum](https://forum.openzeppelin.com/c/support/17) - **OpenZeppelin SDK development has ended** - ## Further reading {#further-reading} _Know of a community resource that helped you? Edit this page and add it!_ diff --git a/src/content/developers/docs/nodes-and-clients/index.md b/src/content/developers/docs/nodes-and-clients/index.md index 84f84248074..0427d92ed2c 100644 --- a/src/content/developers/docs/nodes-and-clients/index.md +++ b/src/content/developers/docs/nodes-and-clients/index.md @@ -139,7 +139,7 @@ This table summarizes the different clients. All of them pass [client tests](htt | [Nethermind](http://nethermind.io/) | C#, .NET | Linux, Windows, macOS | Mainnet, Sepolia, Goerli, and more | Snap (without serving), Fast, Full | Archive, Pruned | | [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | Mainnet, Sepolia, Goerli, and more | Snap, Fast, Full | Archive, Pruned | | [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Mainnet, Sepolia, Goerli, and more | Full | Archive, Pruned | -| [Reth](https://github.com/paradigmxyz/reth) | Rust | Linux, Windows, macOS | Mainnet, Sepolia, Goerli, and more | Full | Archive, Pruned | +| [Reth](https://github.com/paradigmxyz/reth) | Rust | Linux, Windows, macOS | Mainnet, Sepolia, Goerli, and more | Full | Archive, Pruned | For more on supported networks, read up on [Ethereum networks](/developers/docs/networks/). diff --git a/src/content/developers/docs/nodes-and-clients/run-a-node/index.md b/src/content/developers/docs/nodes-and-clients/run-a-node/index.md index 5eccc3a013d..b973e4b8bc8 100644 --- a/src/content/developers/docs/nodes-and-clients/run-a-node/index.md +++ b/src/content/developers/docs/nodes-and-clients/run-a-node/index.md @@ -152,7 +152,7 @@ Here are the release pages of clients where you can find their pre-built binarie ##### Execution clients - [Besu](https://github.com/hyperledger/besu/releases) -- [Erigon](https://github.com/ledgerwatch/erigon#usage) (Doesn't provide a pre-built binary, has to be compiled) +- [Erigon](https://github.com/ledgerwatch/erigon/releases) - [Geth](https://geth.ethereum.org/downloads/) - [Nethermind](https://downloads.nethermind.io/) diff --git a/src/content/developers/docs/scaling/optimistic-rollups/index.md b/src/content/developers/docs/scaling/optimistic-rollups/index.md index 692da4e98f9..3074a9e077a 100644 --- a/src/content/developers/docs/scaling/optimistic-rollups/index.md +++ b/src/content/developers/docs/scaling/optimistic-rollups/index.md @@ -260,6 +260,6 @@ Multiple implementations of Optimistic rollups exist that you can integrate into - [How do optimistic rollups work (The Complete guide)](https://www.alchemy.com/overviews/optimistic-rollups) - [Everything you need to know about Optimistic Rollup](https://research.paradigm.xyz/rollups) - [The Essential Guide to Arbitrum](https://newsletter.banklesshq.com/p/the-essential-guide-to-arbitrum) -- [How does Optimism's Rollup really work?](https://research.paradigm.xyz/optimism) +- [How does Optimism's Rollup really work?](https://www.paradigm.xyz/2021/01/how-does-optimisms-rollup-really-work) - [OVM Deep Dive](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52) - [What is the Optimistic Virtual Machine?](https://www.alchemy.com/overviews/optimistic-virtual-machine) diff --git a/src/content/developers/tutorials/nft-minter/index.md b/src/content/developers/tutorials/nft-minter/index.md index 984a227203b..826d553c16f 100644 --- a/src/content/developers/tutorials/nft-minter/index.md +++ b/src/content/developers/tutorials/nft-minter/index.md @@ -189,7 +189,7 @@ If you go to the `App.js` file, which is the main component in React that acts a Now that we understand what we're working with, let's set up our Ethereum wallet! -##: Set up your Ethereum wallet {#set-up-your-ethereum-wallet} +## Set up your Ethereum wallet {#set-up-your-ethereum-wallet} For users to be able to interact with your smart contract they will need to connect their Ethereum wallet to your dapp. diff --git a/src/content/developers/tutorials/uniswap-v2-annotated-code/index.md b/src/content/developers/tutorials/uniswap-v2-annotated-code/index.md index e7c84085e46..f1f3561de0a 100644 --- a/src/content/developers/tutorials/uniswap-v2-annotated-code/index.md +++ b/src/content/developers/tutorials/uniswap-v2-annotated-code/index.md @@ -366,7 +366,7 @@ If the time elapsed is not zero, it means we are the first exchange transaction } ``` -Each cost accumulator is updated with the latest cost (reserve of the other token/reserve of this token) times the elapsed time in seconds. To get an average price you read the cumulative price is two points in time, and divide by the time difference between them. For example, assume this sequence of events: +Each cost accumulator is updated with the latest cost (reserve of the other token/reserve of this token) times the elapsed time in seconds. To get an average price, you read the cumulative price in two points in time and divide by the time difference between them. For example, assume this sequence of events: | Event | reserve0 | reserve1 | timestamp | Marginal exchange rate (reserve1 / reserve0) | price0CumulativeLast | | -------------------------------------------------------- | --------: | --------: | --------- | -------------------------------------------: | -------------------------: | diff --git a/src/content/energy-consumption/index.md b/src/content/energy-consumption/index.md index 12139154562..c9fca235ebf 100644 --- a/src/content/energy-consumption/index.md +++ b/src/content/energy-consumption/index.md @@ -8,40 +8,42 @@ lang: en Ethereum is a green blockchain. Ethereum's [proof-of-stake](/developers/docs/consensus-mechanisms/pos) consensus mechanism uses ETH instead of [energy to secure the network](/developers/docs/consensus-mechanisms/pow). Ethereum's energy consumption is approximately [~0.0026 TWh/yr](https://carbon-ratings.com/eth-report-2022) across the entire global network. -The energy consumption estimate for Ethereum comes from a [CCRI (Crypto Carbon Ratings Institute)](https://carbon-ratings.com) study. They generated bottom-up estimates of the electricity consumption and the carbon footprint of the Ethereum network ([see the report](https://carbon-ratings.com/eth-report-2022)). They measured the electricity consumption of different nodes with various hardware and client software configurations. The estimated **2,601 MWh** (0.0026 TWh) for the network’s annual electricity consumption corresponds to yearly carbon emissions of **870 tonnes CO2e** applying regional-specific carbon intensity factors. This value changes as nodes enter and leave the network - you can keep track using a rolling 7-day average estimate by the [Cambridge Blockchain Network Sustainability Index](https://ccaf.io/cbnsi/ethereum) (note that they use a slightly different method for their estimates - details available on their site). +The energy consumption estimate for Ethereum comes from a [CCRI (Crypto Carbon Ratings Institute)](https://carbon-ratings.com) study. They generated bottom-up estimates of the electricity consumption and carbon footprint of the Ethereum network ([see the report](https://carbon-ratings.com/eth-report-2022)). They measured the electricity consumption of different nodes with various hardware and client software configurations. The estimated **2,601 MWh** (0.0026 TWh) for the network’s annual electricity consumption corresponds to yearly carbon emissions of **870 tonnes CO2e** applying regional-specific carbon intensity factors. This value changes as nodes enter and leave the network - you can keep track using a rolling 7-day average estimate by the [Cambridge Blockchain network Sustainability Index](https://ccaf.io/cbnsi/ethereum) (note that they use a slightly different method for their estimates - details available on their site). -To contextualize Ethereum's energy consumption, we can compare annualized estimates for some other industries. This helps us better understand whether the estimate for Ethereum is high or low. +To contextualize Ethereum's energy consumption, we can compare annualized estimates for some other products and industries. This helps us better understand whether the estimate for Ethereum is high or low. -The chart above displays the estimated yearly energy consumption in TWh/yr for Ethereum, compared to several other industries. The estimates provided are sourced from publicly available information, accessed in May 2023, with links to the sources available in the table below: +The chart above displays the estimated energy consumption in TWh/yr for Ethereum, compared to several other products and industries. The estimates provided are sourced from publicly available information, accessed in July 2023, with links to the sources available in the table below. -| | Annualized energy consumption (TWh) | Comparison to PoS Ethereum | Source | -| :-------------------- | :---------------------------------: | :------------------------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Global data centers | 200 | 77,000x | [source](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) | -| Gold mining | 131 | 50,000x | [source](https://ccaf.io/cbnsi/cbeci/comparisons) | -| Bitcoin | 131 | 50,000x | [source](https://ccaf.io/cbnsi/cbeci/comparisons) | -| PoW Ethereum | 78 | 30,000x | [source](https://digiconomist.net/ethereum-energy-consumption) | -| Youtube (direct only) | 12 | 4600x | [source](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf) | -| Gaming in USA | 34 | 13,000x | [source](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) | -| Netflix | 0.451 | 173x | [source](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) | -| PayPal | 0.26 | 100x | [source](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261) | -| AirBnB | 0.02 | 8x | [source]() | -| PoS Ethereum | 0.0026 | 1x | [source](https://carbon-ratings.com/eth-report-2022) | +| | Annualized energy consumption (TWh) | Comparison to PoS Ethereum | Source | +| :------------------ | :---------------------------------: | :------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| Global data centers | 190 | 73,000x | [source](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) | +| Bitcoin | 149 | 53,000x | [source](https://ccaf.io/cbnsi/cbeci/comparisons) | +| Gold mining | 131 | 50,000x | [source](https://ccaf.io/cbnsi/cbeci/comparisons) | +| Gaming in USA\* | 34 | 13,000x | [source](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) | +| PoW Ethereum | 21 | 8,100x | [source](https://ccaf.io/cbnsi/ethereum/1) | +| Google | 19 | 7,300x | [source](https://www.gstatic.com/gumdrop/sustainability/google-2022-environmental-report.pdf) | +| Netflix | 0.457 | 176x | [source](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) | +| PayPal | 0.26 | 100x | [source]() | +| AirBnB | 0.02 | 8x | [source]() | +| **PoS Ethereum** | **0.0026** | **1x** | [source](https://carbon-ratings.com/eth-report-2022) | -It is complicated to get accurate estimates for energy consumption, especially when what is being measured has a complex supply chain or deployment details that influence its efficiency. Consider Netflix or Youtube as examples. Estimates of their energy consumption vary depending upon whether they only include the energy used to maintain their systems and deliver content to users (_direct expenditure_) or whether they include the expenditure required to produce content, run corporate offices, advertise, etc (_indirect expenditure_). Indirect usage could also include the energy required to consume content on end-user devices such as TVs, computers and mobiles, which in turn depends on which devices are used. +\*Includes end user devices such as PCs, laptops, and gaming consoles. -There is some discussion of this issue on [Carbon Brief](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix). In the table above, the value reported for Netflix includes their self-reported _direct_ and _indirect_ usage. Youtube only provides an estimate of their own _direct_ energy expenditure, which is around [12 TWh/yr](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf). +Getting accurate estimates for energy consumption is complicated, especially when what is being measured has a complex supply chain or deployment details that influence its efficiency. For example, estimates of energy consumption for Netflix and Google vary depending upon whether they only include the energy used to maintain their systems and deliver content to users (_direct expenditure_) or whether they include the expenditure required to produce content, run corporate offices, advertise, etc (_indirect expenditure_). Indirect expenditure could also include the energy required to consume content on end-user devices such as TVs, computers and mobiles. -The table and chart above also include comparisons to Bitcoin and proof-of-work Ethereum. It is important to note that the energy consumption of proof-of-work networks is not static - it changes day-to-day. The value used for proof-of-work Ethereum was from just before [The Merge](/roadmap/merge/) to proof-of-stake, as predicted by [Digiconomist](https://digiconomist.net/ethereum-energy-consumption). Other sources, such as the [Cambridge Blockchain Network Sustainability Index](https://ccaf.io/cbnsi/ethereum/1) estimate the energy consumption to have been much lower (closer to 20 TWh/yr). Estimates for Bitcoin's energy consumption also vary widely between sources and it is a topic that attracts a lot of nuanced [debate](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/) about not only the amount of energy consumed but the sources of that energy and the related ethics. Energy consumption does not necessarily map precisely to environmental footprint because different projects might use different energy sources, for example a lesser or greater proportion of renewables. For example, [Cambridge Bitcoin Electricity Consumption Index](https://ccaf.io/cbnsi/cbeci/comparisons) indicate that the Bitcoin network demand could theoretically be powered by gas flaring or electricity that would otherwise be lost in transmission and distribution. Ethereum's route to sustainability was to replace the energy-hungry part of the network with a green alternative. +The estimates above are not perfect comparisons. The amount of indirect expenditure that is accounted for varies by source, and rarely includes the energy from end-user devices. Each underlying source includes more details on what is being measured. + +The table and chart above also include comparisons to Bitcoin and proof-of-work Ethereum. It is important to note that the energy consumption of proof-of-work networks is not static and changes day-to-day. Estimates can also vary widely between sources. The topic attracts nuanced [debate](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/), not only about the amount of energy consumed, but also about the sources of that energy and the related ethics. Energy consumption does not necessarily map precisely to environmental footprint because different projects might use different energy sources, including a lesser or greater proportion of renewables. For example, [Cambridge Bitcoin Electricity Consumption Index](https://ccaf.io/cbnsi/cbeci/comparisons) indicates that the Bitcoin network demand could theoretically be powered by gas flaring or electricity that would otherwise be lost in transmission and distribution. Ethereum's route to sustainability was to replace the energy-hungry part of the network with a green alternative. You can browse energy consumption and carbon emission estimates for many industries on the [Cambridge Blockchain Network Sustainability Index site](https://ccaf.io/cbnsi/ethereum). ## Per-transaction estimates {#per-transaction-estimates} -Many articles estimate "per-transaction" energy expenditure for blockchains. This can be misleading because the energy required to propose and validate a block is independent of the number of transactions within it. A per transaction unit of energy expenditure implies that fewer transactions would lead to smaller energy expenditure and vice-versa, which is not the case. Also, per-transaction estimates are very sensitive to how a blockchain's transaction throughput is defined, and tweaking this definition can be gamed to make the value seem larger or smaller. +Many articles estimate "per-transaction" energy expenditure for blockchains. This can be misleading because the energy required to propose and validate a block is independent of the number of transactions within it. A per-transaction unit of energy expenditure implies that fewer transactions would lead to smaller energy expenditure and vice-versa, which is not the case. Also, per-transaction estimates are very sensitive to how a blockchain's transaction throughput is defined, and tweaking this definition can be gamed to make the value seem larger or smaller. -For example, on Ethereum, the transaction throughput is not only that of the base layer - it is also the sum of the transaction throughput of all of its "[layer 2](/layer-2/)" rollups. Layer 2's are not generally included in calculations, but accounting for the additional energy consumed by sequencers (small) and the number of transactions they process (large) would likely drastically reduce per-transaction estimates. This is one reason why comparisons of energy consumption per transaction across platforms can be misleading. +On Ethereum, for example, the transaction throughput is not only that of the base layer - it is also the sum of the transaction throughput of all of its "[layer 2](/layer-2/)" rollups. Layer 2's are not generally included in calculations, but accounting for the additional energy consumed by sequencers (small) and the number of transactions they process (large) would likely drastically reduce per-transaction estimates. This is one reason why comparisons of per-transaction energy consumption across platforms can be misleading. ## Ethereum's carbon debt {#carbon-debt} @@ -51,7 +53,7 @@ From the very beginning, Ethereum planned to implement a proof-of-stake based co ![Comparing Ethereum's energy consumption pre- and post-Merge, using the Eiffel Tower (330 meters tall) on the left to symbolize the high energy consumption before The Merge, and a small 4 cm tall Lego figure on the right to represent the dramatic reduction in energy usage after The Merge](energy_consumption_pre_post_merge.png) -CCRI estimate that The Merge reduced Ethereum's annualized electricity consumption by more than **99.988%**. Likewise, Ethereum’s carbon footprint was decreased by approximately **99.992%** (from 11,016,000 to 870 tonnes CO2e). To put this in perspective, the reduction in emissions is like going from the height of the Eiffel Tower to a small plastic toy figure, as illustrated in the figure above. As a result, the environmental cost of securing the network is drastically reduced. At the same time, the network's security is believed to have improved. +CCRI estimates that The Merge reduced Ethereum's annualized electricity consumption by more than **99.988%**. Likewise, Ethereum’s carbon footprint was decreased by approximately **99.992%** (from 11,016,000 to 870 tonnes CO2e). To put this in perspective, the reduction in emissions is like going from the height of the Eiffel Tower to a small plastic toy figure, as illustrated in the figure above. As a result, the environmental cost of securing the network is drastically reduced. At the same time, the network's security is believed to have improved. ## A green application layer {#green-applications} diff --git a/src/content/guides/how-to-create-an-ethereum-account/wallet-box.png b/src/content/guides/how-to-create-an-ethereum-account/wallet-box.png index 5d9ce916467db43e5c24bb890ba32e8dc7e4b139..e56fd136d4b1d02bbea4def7da2ac15126aaec98 100644 GIT binary patch literal 32785 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 diff --git a/src/content/history/index.md b/src/content/history/index.md index 2f45204872a..a70e930acdb 100644 --- a/src/content/history/index.md +++ b/src/content/history/index.md @@ -310,6 +310,7 @@ The Istanbul fork: The Constantinople fork: +- Reduced block [mining](/developers/docs/consensus-mechanisms/pow/mining/) rewards from 3 to 2 ETH. - Ensured the blockchain didn't freeze before [proof-of-stake was implemented](#beacon-chain-genesis). - Optimised the [gas](/glossary/#gas) cost of certain actions in the [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). - Added the ability to interact with addresses that haven't been created yet. @@ -322,7 +323,7 @@ The Constantinople fork:

  • EIP-1014allows you to interact with addresses that have yet to be created.
  • EIP-1052optimises cost of certain on-chain actions.
  • -
  • EIP-1234makes sure the blockchain doesn't freeze before proof-of-stake.
  • +
  • EIP-1234makes sure the blockchain doesn't freeze before proof-of-stake and reduces block reward from 3 to 2 ETH.
  • diff --git a/src/content/nft/index.md b/src/content/nft/index.md index fccbb91c170..43f8ad3f655 100644 --- a/src/content/nft/index.md +++ b/src/content/nft/index.md @@ -14,15 +14,15 @@ summaryPoint3: Powered by smart contracts on the Ethereum blockchain. ## What are NFTs? {#what-are-nfts} -NFTs are tokens that are individually unique. Each NFT has different properties (non-fungible) and is provably scarce. This is different from tokens such as ERC-20s where every token in a set is identical and has the same properties ('fungible'). You don't care which specific dollar bill you have in your wallet, because they are all identical and worth the same. However, you _do_ care which specific NFT you own, because they all have individual properties that distinguish them from others ('non-fungible'). +NFTs are tokens that are individually unique. Each NFT has different properties (non-fungible) and is provably scarce. This is different from tokens such as ETH or other Ethereum based tokens like USDC where every token is identical and has the same properties ('fungible'). You don't care which specific dollar bill (or ETH) you have in your wallet, because they are all identical and worth the same. However, you _do_ care which specific NFT you own, because they all have individual properties that distinguish them from others ('non-fungible'). -The uniqueness of each NFT enables tokenization of things like art, collectibles, or even real estate, where one specific unique NFT represents some specific unique real world or digital item. Ownership of an asset is secured by the Ethereum blockchain – no one can modify the record of ownership or copy/paste a new NFT into existence. +The uniqueness of each NFT enables tokenization of things like art, collectibles, or even real estate, where one specific unique NFT represents some specific unique real world or digital item. Ownership of an asset is publicly verifiable on Ethereum blockchain. ## The internet of assets {#internet-of-assets} -NFTs and Ethereum solve some of the problems that exist on the internet today. As everything becomes more digital, there's a need to replicate the properties of physical items like scarcity, uniqueness, and proof of ownership in a way that isn't controlled by a central organization. For example, with NFTs, you can own a music mp3 that is not specific to one company's specific music app, or you can own a social media handle that you can sell or swap, but can't be arbitrarily taken away from you by a platform provider. +NFTs and Ethereum solve some of the problems that exist on the internet today. As everything becomes more digital, there's a need to replicate the properties of physical items like scarcity, uniqueness, and proof of ownership in a way that isn't controlled by a central organization. For example, with NFTs, you can own a music mp3 file across all Ethereum based apps and not be bound to one company's specific music app like Spotify or Apple Music. You can own a social media handle that you can sell or swap, but can't be arbitrarily taken away from you by a platform provider. Here's how an internet of NFTs compared to the internet most of us use today looks... @@ -30,19 +30,13 @@ Here's how an internet of NFTs compared to the internet most of us use today loo | An NFT internet | The internet today | | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -| You own your assets! Only you can sell or swap them. | You rent an asset from some organization. | +| You own your assets! Only you can sell or swap them. | You rent an asset from some organization and it can be taken away from you. | | NFTs are digitally unique, no two NFTs are the same. | A copy of an entity often cannot be distinguished from the original. | | Ownership of an NFT is stored on the blockchain for anyone to verify. | Ownership records of digital items are stored on servers controlled by institutions – you must take their word for it. | | NFTs are smart contracts on Ethereum. This means they can easily be used in other smart contracts and apps on Ethereum! | Companies with digital items usually require their own "walled garden" infrastructure. | | Content creators can sell their work anywhere and can access a global market. | Creators rely on the infrastructure and distribution of the platforms they use. These are often subject to terms of use and geographical restrictions. | | NFT creators can retain ownership rights over their own work, and program royalties directly into the NFT contract. | Platforms, such as music streaming services, retain the majority of profits from sales. | -## How do NFTs work? {#how-nfts-work} - -Like any token issued on Ethereum, NFTs are issued by a smart contract. The smart contract conforms to one of several NFT standards (commonly ERC-721 or ERC-1155) that define what functions the contract has. The contract can create ('mint') NFTs and assign them to a specific owner. Ownership is defined in the contract by mapping specific NFTs to specific addresses. The NFT has an ID and typically metadata associated with it that make the specific token unique. - -When someone creates or mints an NFT, they are really executing a function in the smart contract that assigns a specific NFT to their address. This information is stored in the contract's storage, which is part of the blockchain. The contract creator can write additional logic into the contract, for example limiting the total supply or defining a royalty to be paid to the creator each time a token is transferred. - ## What are NFTs used for? {#nft-use-cases} NFTs are used for many things, including: @@ -62,7 +56,7 @@ Maybe you are an artist that wants to share their work using NFTs, without losin Or consider a ticket to a sporting event. Just as an organizer of an event can choose how many tickets to sell, the creator of an NFT can decide how many replicas exist. Sometimes these are exact replicas, such as 5000 General Admission tickets. Sometimes several are minted that are very similar, but each slightly different, such as a ticket with an assigned seat. These can be bought and sold peer-to-peer without paying ticket handlers and the buyer always with assurance of the ticket authenticity by checking the contract address. -On ethereum.org, NFTs are used to demonstrate that people have contributed to our GitHub repository or attended calls, and we've even got our own NFT domain name. If you contribute to ethereum.org, you can claim a POAP NFT. Some crypto meetups have used POAPs as tickets. [More on contributing](/contributing/#poap). +On ethereum.org, NFTs are used to demonstrate that people have meaningfully contributed to our Github repository (programmed the website, written or modified an article...), translated our content, or attended our community calls, and we've even got our own NFT domain name. If you contribute to ethereum.org, you can claim a POAP NFT. Some crypto meetups have used POAPs as tickets. [More on contributing](/contributing/#poap). ![ethereum.org POAP](./poap.png) @@ -72,6 +66,20 @@ This website also has an alternative domain name powered by NFTs, **ethereum.eth +## How do NFTs work? {#how-nfts-work} + +NFTs, like any digital items on the Ethereum blockchain, are created through a special Ethereum based computer program called a "smart contract." These contracts follow certain rules, like the ERC-721 or ERC-1155 standards, which determine what the contract can do. + +The NFT smart contract can do a few key things: + +- **Create NFTs:** It can make new NFTs. +- **Assign Ownership:** It keeps track of who owns which NFTs by linking them to specific Ethereum addresses. +- **Give Each NFT an ID:** Each NFT has a number that makes it unique. Additionally, there's usually some information (metadata) attached to it, describing what the NFT represents. + +When someone "creates" or "mints" an NFT, they're basically telling the smart contract to give them ownership of a particular NFT. This information is securely and publicly stored in the blockchain. + +Furthermore, the creator of the contract can add extra rules. They might limit how many of a certain NFT can be made or decide that they should get a small royality fee whenever the NFT changes hands. + ### NFT security {#nft-security} Ethereum's security comes from proof-of-stake. The system is designed to economically disincentivize malicious actions, making Ethereum tamper-proof. This is what makes NFTs possible. Once the block containing your NFT transaction becomes finalized it would cost an attacker millions of ETH to change it. Anyone running Ethereum software would immediately be able to detect dishonest tampering with an NFT, and the bad actor would be economically penalized and ejected. diff --git a/src/content/refi/index.md b/src/content/refi/index.md index ff455d87deb..fb768f0722b 100755 --- a/src/content/refi/index.md +++ b/src/content/refi/index.md @@ -18,7 +18,7 @@ summaryPoint3: A tool to drastically scale ecological benefit assets like verifi Instead, ReFi aims to solve environmental, communal, or social problems by creating regenerative cycles. These systems create value for participants while simultaneously benefiting ecosystems and communities. -One of the foundations of ReFi is the concept of regenerative economics pioneered by John Fullerton of the [Capital Institute](https://capitalinstitute.org). He proposed eight interconnected principles that underlie systemic health: +One of the foundations of ReFi is the concept of regenerative economics pioneered by John Fullerton of the Capital Institute. He proposed [eight interconnected principles](https://capitalinstitute.org/8-principles-regenerative-economy/) that underlie systemic health: ![Eight interconnected principles](../../assets/use-cases/refi-regenerative-economy-diagram.png) diff --git a/src/content/translations/ar/defi/index.md b/src/content/translations/ar/defi/index.md index 8333492c416..73ed6f192f7 100644 --- a/src/content/translations/ar/defi/index.md +++ b/src/content/translations/ar/defi/index.md @@ -31,7 +31,7 @@ summaryPoint3: استنادًا إلى التكنولوجيا مفتوحة ال - يمكن للخدمات المالية أن تمنعك من الحصول على مدفوعاتك. - تعتبر بياناتك الشخصية من الرسوم الخفية للخدمات المالية. - يمكن للحكومات والمؤسسات المركزية إغلاق الأسواق حسب الرغبة. -- غالبًا ما تقتصر ساعات التداول على ساعات العمل في منطقة زمنية محددة. +- يتم اقتصار ساعات التداول في الغالب على ساعات العمل في منطقة زمنية محددة. - يمكن أن تستغرق تحويلات الأموال أيامًا بسبب العمليات البشرية الداخلية. - هناك علاوة على الخدمات المالية لأن المؤسسات الوسيطة بحاجة إلى اقتطاعها. @@ -40,7 +40,7 @@ summaryPoint3: استنادًا إلى التكنولوجيا مفتوحة ال | DeFi | التمويل التقليدي | | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | | أنت تملك أموالك. | أموالك تحتجزها الشركات. | -| أنت تتحكم في أين تذهب أموالك وكيف يتم إنفاقها. | عليك أن تثق في أن الشركات لا تسيء إدارة أموالك، مثل إقراض المقترضين المحفوفين بالمخاطر. | +| أنت تتحكم في أين تذهب أموالك وكيف يتم إنفاقها. | عليك وضع ثقتك في الشركات حتى لا تسيء إدارة أموالك، مثل إقراض الأموال إلى المقترضين غير المضمونين. | | يتم تحويل الأموال في غضون دقائق. | قد تستغرق المدفوعات أيامًا بسبب العمليات اليدوية. | | نشاط المعاملة مجهول الهوية. | يرتبط النشاط المالي ارتباطًا وثيقًا بهويتك. | | التمويل اللامركزي مفتوح لأي شخص. | يجب عليك التقدم بالطلب لاستخدام الخدمات المالية. | @@ -53,7 +53,7 @@ summaryPoint3: استنادًا إلى التكنولوجيا مفتوحة ال ## لقد بدأت مع عملة بيتكوين... {#bitcoin} -من نواح عدة، كانت عملة بيتكوين أول تطبيق للتمويل اللامركزي. تتيح لك عملة بيتكوين بالفعل امتلاك القيمة والتحكم فيها وإرسالها إلى أي مكان حول العالم. وهي تفعل ذلك بواسطة تقديم طريقة لعدد كبير من الأشخاص، الذين لا يثقون ببعضُهم البعض، كي يوافقوا على سجل الحسابات دون الحاجة لوسيط موثوق. عملة بيتكوين مفتوحة لأي شخص ولا أحد يملك سلطة تغيير قواعده. قواعد عملة بيتكوين، مثل الندرة والانفتاح، مكتوبة في التكنولوجيا. وهي لا تشبه التمويل التقليدي حيث يمكن للحكومات طباعة المال مما يقلل قيمة مدخراتك، أو يمكن للشركات إغلاق الأسواق. +من نواح عدة، كانت عملة بيتكوين أول تطبيق للتمويل اللامركزي. تتيح لك عملة بيتكوين بالفعل امتلاك القيمة والتحكم فيها وإرسالها إلى أي مكان حول العالم. وهي تفعل ذلك بواسطة تقديم طريقة لعدد كبير من الأشخاص، الذين لا يثقون ببعضُهم البعض، كي يوافقوا على سجل الحسابات دون الحاجة لوسيط موثوق. عملة بيتكوين مفتوحة لأي شخص ولا أحد يملك سلطة تغيير قواعده. قواعد عملة بيتكوين، مثل الندرة والانفتاح، مكتوبة في التكنولوجيا. حيث إنها لا تشبه التمويل التقليدي حيث يمكن للحكومات طباعة الأموال ما يؤدى إلى خفض قيمة مدخراتك، أو يمكن للشركات إغلاق الأسواق. إثيريوم يستند على هذه المبادئ. كما هو الحال مع عملة بيتكوين، فإن القواعد لا يمكن أن تتغير عليكم والجميع يمكنه الوصول. لكنها أيضا تجعل هذه الأموال الرقمية قابلة للبرمجة، باستخدام [العقود الذكية](/glossary#smart-contract)، وبالتالي ستتمكن من الذهاب إلى ما هو أبعد من التخزين وإرسال القيمة. @@ -133,7 +133,7 @@ summaryPoint3: استنادًا إلى التكنولوجيا مفتوحة ال اليوم، تتمحور عملية إقراض واقتراض الأموال حول الأفراد المعنيين. تحتاج البنوك قبل إقراض الأموال إلى معرفة ما إذا كان من المرجح أن تسدده. -يعمل الإقراض اللامركزي دون أن يضطر أي من الطرفين إلى تحديد هويته. بدلا من ذلك، يجب على المقترض أن يقدم ضمانة احتياطية يحصل عليها المقرض تلقائيًا إذا لم يسدد قرضه. قد يقبل بعض المقرضين بـ NFT كضمان إضافي. NFT هي صكوك لأصل فريد، لوحة فنية مثلًا. [المزيد حول NFT](/nft/) +يعمل الإقراض اللامركزي دون أن يضطر أي من الطرفين إلى تحديد هويته. بدلاً من ذلك، يجب على المقترض تقديم ضمان إضافي يحصل عليه المقرض تلقائيًا في حالة عدم السداد. قد يقبل بعض المقرضين بـ NFT كضمان إضافي. NFT هي صكوك لأصل فريد، لوحة فنية مثلًا. [المزيد حول NFT](/nft/) هذا يسمح لك باقتراض المال دون شيكات ائتمانية أو تسليم معلومات خاصة. @@ -143,7 +143,7 @@ summaryPoint3: استنادًا إلى التكنولوجيا مفتوحة ال #### الكفاءات الضريبية {#tax-efficiencies} -يتيح الاقتراض إمكانية الوصول إلى الأموال التي تحتاجها دون الحاجة إلى بيع ETH الخاص بك (حدث خاضع للضريبة). بدلاً من ذلك، يمكنك استخدام ETH كضمانة إضافية للحصول على قرض بالعملة المستقرة. مما يعطيك التدفق النقدي الذي تحتاجه ويسمح لك بالحفاظ على ETH. العملات المستقرة هي رموز مميزة أكثر جدوى عندما نحتاج إلى النقود لأنها لا تتقلب في القيمة مثل ETH. [المزيد حول العملات المستقرة](#stablecoins) +يتيح الاقتراض إمكانية الوصول إلى الأموال التي تحتاجها دون الحاجة إلى بيع ETH الخاص بك (حدث خاضع للضريبة). بدلاً من ذلك، يمكنك استخدام ETH كضمان إضافي للحصول على قرض بالعملة التابعة. مما يعطيك التدفق النقدي الذي تحتاجه ويسمح لك بالحفاظ على ETH. العملات المستقرة هي رموز مميزة أكثر جدوى عندما نحتاج إلى النقود لأنها لا تتقلب في القيمة مثل ETH. [المزيد حول العملات المستقرة](#stablecoins) #### القروض السريعة {#flash-loans} @@ -157,7 +157,7 @@ summaryPoint3: استنادًا إلى التكنولوجيا مفتوحة ال وهذا يعني أن الكثير من المنطق يجب أن يكون متضمنًا في معاملة مشبوهة للغاية. ومن الأمثلة البسيطة على ذلك شخص يأخذ قرضًا سريعًا لاقتراض كم كبير من أصل بسعر واحد حتى يتمكن من بيعه في بورصة مختلفة بسعر أعلى. -لذلك سيحدث ضمن المعاملة الواحدة ما يلي: +لذا سيحدث ما يلي في عملية التحويل الواحدة: - فلنفترض أنك اقترضت المبلغ X من $asset بسعر 1.00 دولار من البورصة A - ثم بعت الكم X من $asset في البورصة B بسعر 1.10 دولار @@ -233,7 +233,7 @@ summaryPoint3: استنادًا إلى التكنولوجيا مفتوحة ال هناك منتجات لإدارة الأموال على إثيريوم تحاول تنمية حافظتك على أساس استراتيجية من اختيارك. بشكل تلقائي ومفتوح للجميع، ولا يحتاج إلى مدير بشري يقتطع جزءًا من أرباحك. -ومن الأمثلة الجيدة على ذلك [DeFi Pluse Index fund (DPI)](https://defipulse.com/blog/defi-pulse-index/). هذا صندوق يعيد توازن الرصيد تلقائيًا لضمان أن حافظتك دائمًا تتضمن [أعلى عملات التمويل اللامركزي عن طريق رأسمالية السوق](https://www.coingecko.com/en/defi). لا تحتاج أبدًا إلى إدارة أي من التفاصيل ويمكنك السحب من الصندوق متى ما رغبت. +ومن الأمثلة الجيدة على ذلك [DeFi Pluse Index fund (DPI)](https://defipulse.com/blog/defi-pulse-index/). هذا تمويل يعيد توازن الرصيد تلقائيًا لضمان أن محفظتك تحتوى دائمًا على [أعلى عملات التمويل اللامركزي في رأسمالية السوق](https://www.coingecko.com/en/defi). لا تحتاج أبدًا إلى إدارة أي من التفاصيل ويمكنك السحب من الصندوق متى ما رغبت. شاهد التطبيقات اللامركزية للاستثمار @@ -274,7 +274,7 @@ summaryPoint3: استنادًا إلى التكنولوجيا مفتوحة ال يهدف التأمين اللامركزي إلى جعل التأمين أرخص، وأسرع في الدفع، وأكثر شفافية. ومع المزيد من الأتمتة، تصبح تغطية التأمين ميسورة التكلفة و تغدو المدفوعات أسرع بكثير. والبيانات المستخدمة للبت في المطالبات تتمتع بشفافية تامة. -يمكن لمنتجات إثيريوم، حالها حال جميع البرامج، أن تعاني من الأخطاء والاستغلال. لذا فإن الكثير من منتجات التأمين الموجودة في المجال تركز على حماية مستخدميها من فقدان أموالهم. إلا أن هناك مشاريع بدأت في بناء تغطية لكل ما يمكن للحياة أن تفاجئنا به. ومن الأمثلة الجيدة على ذلك غطاء Etherisc's Crop الذي يهدف إلى [حماية صغار المزارعين في كينيا من الجفاف والفيضانات](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc). ويمكن للتأمين اللامركزي أن يوفر تغطية أرخص للمزارعين الذين يواجهون أسعارًا باهظة في التأمين التقليدي. +يمكن لمنتجات إثيريوم، حالها حال جميع البرامج، أن تعاني من الأخطاء والاستغلال. لذا فإن الكثير من منتجات التأمين الموجودة في المجال تركز على حماية مستخدميها من فقدان أموالهم. إلا أن هناك مشاريع بدأت ببناء تغطية لكل ما يمكن للحياة أن تفاجئنا به. ومن الأمثلة الجيدة على ذلك غطاء Etherisc's Crop الذي يهدف إلى [حماية صغار المزارعين في كينيا من الجفاف والفيضانات](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc). ويمكن للتأمين اللامركزي أن يوفر تغطية أرخص للمزارعين الذين يواجهون أسعارًا باهظة في التأمين التقليدي. اطلع على تطبيقات التأمين اللامركزية @@ -317,7 +317,7 @@ summaryPoint3: استنادًا إلى التكنولوجيا مفتوحة ال 1. سلسلة الكتل - يحتوي إثيريوم على تاريخ المعاملات وحالة الحسابات. 2. الأصول - عملة [ETH](/eth/) والرموز المميزة الأخرى (العملات). -3. البروتوكولات - [عقود ذكية](/glossary/#smart-contract) التي تقدم وظيفة، على سبيل المثال خدمة تسمح بالإقراض اللامركزي للأصول. +3. البروتوكولات - [العقود الذكية](/glossary/#smart-contract) التي تقدم وظيفة، على سبيل المثال خدمة تسمح بالإقراض اللامركزي للأصول. 4. [التطبيقات](/dapps/) - المنتجات التي نستخدمها لإدارة البروتوكولات والوصول إليها. ## بناء التمويل اللامركزي {#build-defi} @@ -338,7 +338,7 @@ summaryPoint3: استنادًا إلى التكنولوجيا مفتوحة ال ### مقالات التمويل اللامركزي {#defi-articles} -- [A beginner's guide to DeFi](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu, January 6 2020_ - (دليل المبتدئين لتعلم التمويل اللامركزي) +- [دليل المبتدئين لتعلم التمويل اللامركزي](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu, 6 يناير، 2020_ ### مقاطع الفيديو {#videos} diff --git a/src/content/translations/ar/desci/index.md b/src/content/translations/ar/desci/index.md index eeccfbfe630..6bb5842d8a3 100644 --- a/src/content/translations/ar/desci/index.md +++ b/src/content/translations/ar/desci/index.md @@ -110,6 +110,7 @@ Web3 لديه القدرة على تعطيل نموذج التمويل المع - [معمل الاستدلال النشط](https://www.activeinference.org/) - [CureDAO: منصة الصحة الدقيقة المملوكة للمجتمع](https://docs.curedao.org/) - [IdeaMarkets: تمكين المصداقية العلمية اللامركزية](https://ideamarket.io/) +- [معامل DeSci](https://www.desci.com/) نحن نرحب بقائمة من اقتراحات المشاريع الجديدة - يرجى إلقاء نظرة على [سياسة القائمة](/contributing/adding-desci-projects/) للبدء! diff --git a/src/content/translations/ar/refi/index.md b/src/content/translations/ar/refi/index.md new file mode 100644 index 00000000000..3cfe16636e4 --- /dev/null +++ b/src/content/translations/ar/refi/index.md @@ -0,0 +1,79 @@ +--- +title: التمويل المتجدد (ري فاي) +description: نظرة عامة على التمويل المتجدد (ري فاي) وحالات استخدامه. +lang: ar +template: use-cases +emoji: ":recycle:" +sidebarDepth: 2 +image: ../../../../assets/future_transparent.png +alt: "" +summaryPoint1: اقتصاد بديل قائم على أُسُس متجددة +summaryPoint2: محاولة لتسخير الإيثريوم في سبيل حل الأزمات التي تتطلب تنسيق عالمي مثل التغيرات المناخية +summaryPoint3: أداة تسهم في توسع الأصول الإيكولوجية كالحصص الكربونية الموثقة +--- + +## ماهو التمويل المتجدد (ري فاي)؟ {#what-is-refi} + +**التمويل المتجدد (ري فاي)** هو مجموعة من الأدوات والأفكار المبنية على البلوكتشين بهدف خلق بيئات اقتصادية ذو طبيعة متجددة وليست استخراجية أو مُستغِلة. بطبيعة الحال، ينتهي المطاف بالأنظمة الاستخراجية باستنزاف الموارد المتاحة والانهيار، فمع غياب الآليات المتجددة، تفتقر هذه الأنظمة إلى المرونة. يعمل التمويل المتجدد (ري فاي) وفقًا لفرضية أن خلق القيمة النقدية يجب أن لا يتصاحب مع العملية غير المستدامة لاستخلاص الموارد من كوكبنا ومجتمعاتنا. + +بدلاً من ذلك، يهدف التمويل المتجدد (ري فاي) إلى إيجاد حلول للمشاكل البيئية، والمجتمعية، والاجتماعية من خلال إنشاء دورات متجددة. فهذه الأنظمة توازن بين إنشاء القيمة للمشاركين، ومنفعة الأنظمة البيئية والمجتمعية. + +يعتبر مفهوم الاقتصادات المتجددة، المبتكر من قِبل جون فولرتون من [Capital Institute](https://capitalinstitute.org)، أحد أُسُس التمويل المتجدد (ري فاي). اقترح فولرتون ثمانية مبادئ مترابطة تكمن وراء الصحة البنيوية: + +![ثمانية مبادئ مترابطة](../../assets/use-cases/refi-regenerative-economy-diagram.png) + +تدرك مشاريع التمويل المتجدد (ري فاي) هذه المبادئ بواسطة [العقود الذكية](/developers/docs/smart-contracts/) و [تطبيقات التمويل اللامركزي](/defi/) (دي فاي)، لتحفيز السلوكيات المتجددة، كاستعادة النظم البيئية المتدهورة، وتسير التعاون واسع النطاق لمجابهة مشاكل عالمية، مثل التغير المناخي وفقدان التنوع الحيوي. + +يتشابه التمويل المتجدد (ري فاي) مع حركة [العلم اللامركزي (دي ساي)](/desci/)، والتي تستخدم الإيثريوم كمنصة لتويمل المعرفة العلمية وإنشائها ومراجعتها ونسبها وتخزينها ونشرها. يمكن استغلال أدوات العلم اللامركزي (دي ساي) لتطوير معايير وممارسات قابلة للتحقق، لتنفيذ الأنشطة المتجددة ومراقبتها، كزراعة الأشجار، وتخليص المحيط من البلاستيك، أو استعادة النظم الإيكولوجية المتدهورة. + +## ترميز الحصص الكربونية {#tokenization-of-carbon-credits} + +يعتبر **[سوق الكربون الطوعي (في سي أِم)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** وسيلة لتمويل المشاريع ذات تأثير إيجابي موثق على انبعاثات غاز الكربون، إما من خلال تقليل الانبعاثات الصادرة، أو إزالة الغازات الدفينة المنبعثة في الجو. تحصل هذه المشاريع على أصل يدعى "الحصص الكربونية"، من بعد التحقق منهم، و الذي يمكن أن يباع إلى الأشخاص و المؤسسات، الراغبة بدعم التدابير المناخية. + +بالإضافة لهذه السوق، توجد لدينا أسواق كربون مُكَلَفة من قبل الحكومة ("أسواق الامتثال")، والتي تهدف إلى ترسيخ سعر الكربون، والتحكم في معروض التصاريح التي ستوزع، من خلال القوانين والأنظمة، ضمن نطاق حاكمية محدد (دولة أو منطقة)ه تحفز أسواق الامتثال مصادر التلوث ضمن حاكميتهم على تخفيف الانبعاثات ولكن هذه الأسواق غير قادرة على المساهمة في إزالة الغازات الدفينة المنبعثة مسبقًا في الجو. + +وعلى الرغم من تطور هذه الأسواق على مر العقود، فإنها لا تزال تعاني من عدة مشاكل، أبرزها ما يلي: + +1. التجزء الزائد للسيولة النقدية +2. آليات معاملة مبهمة +3. رسوم باهظة +4. سرعة التداول بطيئة جدًا +5. افتقار قابلية التطور + +ربما يمثل انتقال هذه الأسواق، من الشكل التقليدي إلى ** أسواق الكربون الرقمية (دي سي أِم) ** القائمة على البلوكتشين، فرصة لترقية التكنولوجيا المعتمدة للتحقق، و تسيير المعاملات، واستهلاك الحصص الكربونية. تسمح البلوكتشينات بإنشاء بيانات يمكن توثيقها من العامة، كما تسمح بالوصول إلى قاعدة أكبر من المستخدمين، إضافة إلى المساهمة في زيادة السيولة النقدية. + +توظف مشاريع التمويل المتجدد (ري فاي) تقنية البلوكتشين في سبيل التقليل من المشاكل التي تواجهها الأسواق التقليدية: + +- **حيث تتركز السيولة النقدية ضمن أعداد قليلة من مجموعات السيولة النقدية** والتي يمكن أن يداولها الجميع بحرية. المستخدمون الفرديون والمؤسسات على حد سواء يمكنهم استخدام هذه المجموعات، من دون الحاجة إلى البحث اليدوي عن بائع/مشترٍ، دفع رسوم المشاركة، أو حتى التسجيل المسبق. +- **كما أن جميع المعاملات مسجلة على بلوكتشين عامة**. يمكن تتبع المسار، الناتج عن أنشطة التداول، الذي يسلكه كل رصيد كربوني إلى الأبد بمجرد توافره في أسواق الكربون الرقمية. +- **ناهيك عن أن سرعة المعاملة تكاد أن تكون فورية**. قد تستغرق عملية الحصول على كمية كبيرة من الحصص الكربونية من الأسواق التقليدية أيامًا أو أسابيع بينما تستغرق نفس العملية بضع لحظات في أسواق الكربون الرقمية. +- **تحدث عملية التداول بدون وسطاء**، الذين يفرضون رسومًا باهظة. فبالاستناد الى بيانات إحدى شركات التحليلات،[ تحسن الحصص الكربونية الرقمية التكلفة بنسبة ٦٢%، بالمقارنة مع الحصص التقليدية](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/) على سجلات للائتمان الكربوني للمساعدة على توثيق مصداقية الحصص الكربونية الخاصة بالمشاريع. كما يشغلون قواعد البيانات التي نشأت منها الحصص الكربونية القابلة للنقل أو الاستعمال (مُستَهَلَك). + +هناك موجة جديدة من المشاريع المبتكرة التي يتم بناؤها على بلوكتشين، والتي تحاول تعطيل شاغلي الوظائف في هذا القطاع. + +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/) فقط مشاريع محددة تم تطويرها وفقًا لمعايير الحصص الكربونية التابعة لهم، والتي يصدرونها ولديهم سوقهم المخصصة لها. + +4. القضبان الأساسية والبنية التحتية التي تسهل عملية توسيع نطاق تأثير وكفاءة سلسلة التوريد بأكملها في سوق الكربون. توفر [KlimaDAO](http://klimadao.finance/) السيولة النقدية باعتبارها منفعة عامة (تسمح لأي شخص بشراء أو بيع الحصص الكربونية بسعر شفاف)، وتحفز زيادة إنتاجية أسواق الكربون والتقاعد من خلال المكافآت، وتوفر أدوات قابلة للتشغيل البيني سهلة الاستخدام للوصول إلى البيانات المتعلقة بها، فضلاً عن الحصول عليها والتقاعد، ومجموعة واسعة من الحصص الكربونية التي تم تحويلها إلى رموز مميزة. + +## التمويل المتجدد (ري فاي) خارج أسواق الكربون {#refi-beyond} + +على الرغم من التركيز بشكل قوي حاليًا على أسواق الكربون بشكل عام وتحويل سوق الكربون الطوعية إلى سوق الكربون الرقمية بشكل خاص في نطاق هذا المجال، فإن مصطلح "التمويل المتجدد (ري في)" لا يقتصر على الكربون فحسب. ويمكن تطوير أصول بيئية أخرى بخلاف الحصص الكربونية وتحويلها إلى رموز مميزة، ما يعني أنه يمكن أيضًا تسعير العوامل الخارجية السلبية الأخرى ضمن الطبقات الأساسية للأنظمة الاقتصادية المستقبلية. علاوة على ذلك، يمكن تطبيق الجانب التجديدي لهذا النموذج الاقتصادي على مجالات أخرى، مثل تمويل المنافع العامة عبر منصات التمويل التربيعية مثل [Gitcoin](https://gitcoin.co/). إن المنظمات القائمة على فكرة المشاركة المفتوحة والتوزيع العادل للموارد تعمل على تمكين الجميع من توجيه الأموال إلى مشاريع البرمجيات مفتوحة المصدر، إضافة إلى المشاريع التعليمية والبيئية والمجتمعية. + +من خلال تغيير مسار رأس المال بعيدًا عن الممارسات الاستخراجية نحو التدفق المتجدد، يمكن للمشاريع والشركات التي توفر منافع اجتماعية أو بيئية أو مجتمعية - والتي قد تفشل في تحقيق التمويل في التمويل التقليدي - أن تنطلق وتنشئ تأثيرات خارجية إيجابية للمجتمع. بسرعة وسهولة أكبر. كما أن التحول إلى نموذج التمويل هذا يفتح المجال أمام أنظمة اقتصادية أكثر شمولية، حيث يكون بوسع الأشخاص من كافة الفئات الديموغرافية أن يصبحوا مشاركين نشطين بدلاً من مجرد كونهم مراقبين سلبيين. يقدم التمويل المتجدد (ري في) رؤية إيثريوم كآلية لتنسيق العمل بشأن التحديات الوجودية التي تواجه الجنس البشري وجميع أشكال الحياة على كوكبنا، باعتبارها الطبقة الأساسية لنموذج اقتصادي جديد، ما يتيح مستقبلاً أكثر شمولاً واستدامة لقرون قادمة. + +## مزيد من المعلومات عن التمويل المتجدد (ري فاي) + +- [نظرة عامة رفيعة المستوى عن العملات الكربونية وموضعهم بالاقتصاد](https://www.klimadao.finance/blog/the-vision-of-a-carbon-currency) +- [وزارة المستقبل، رواية تصوّر دور العملات المدعومة بالكربون في مجابهة التغير المناخي](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future) +- [تقرير مفصّل من قِبل Taskforce لتطوير أسواق الكربون الطوعية](https://www.iif.com/Portals/1/Files/TSVCM_Report.pdf) +- [مسرد المصطلحات كيفين أووكي وإيفان ميازونو كنقطة دخول إلى عالم التمويل المتجدد (ري فاي)](https://coinmarketcap.com/alexandria/glossary/regenerative-finance-refi) diff --git a/src/content/translations/ar/smart-contracts/index.md b/src/content/translations/ar/smart-contracts/index.md index e587d7a834d..3e07ca53d5c 100644 --- a/src/content/translations/ar/smart-contracts/index.md +++ b/src/content/translations/ar/smart-contracts/index.md @@ -6,71 +6,61 @@ lang: ar # مدخل إلى العقود الذكية {#introduction-to-smart-contracts} -العقود الذكية هي لبنات البناء الأساسية [لتطبيقات إثيريوم](/dapps/). وهي برامج حاسوبية مخزنة على سلسلة الكتل تسمح بتحويل العقود التقليدية إلى عقود رقمية موازية. تتبع العقود الذكية المنطق بصرامة - وتتبع هيكلية 'إذا تحقق هذا الشرط، إذن افعل هذه العملية'. وبالتالي فإنها تعمل بالضبط وفقًا للمنطق البرمجي التي بُنيت عليه و لا يمكن تعديلها. +العقود الذكية هي عبارة عن كتل بناء أساسية في طبقة تطبيق الإيثريوم. هي برامج حاسوبية مُخزنة على بلوكتشين تتبع منطق "إذا هذا ثم ذلك"، وهي مضمونة التنفيذ وفقًا لقواعد محددة في النص البرمجي الخاص بها، والذي لا يمكن تغييره بمجرد إنشائه. -وقد صاغ نيك سزابو مصطلح "العقد الذكي". حيث كتب في عام 1994، [مقدمة للمفهوم](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html) ثم كتب في عام 1996 [استكشاف لما يمكن أن تفعله العقود الذكية](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html). +وقد صاغ نيك سزابو مصطلح "العقد الذكي". حيث كتب في عام 1994، [مقدمة للمفهوم](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html)ثم كتب في عام 1996 [استكشاف لما يمكن أن تفعله العقود الذكية](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html). -لقد تصور نيك سزابو سوقًا رقميًا مبنيًا على هذه العمليات التلقائية والآمنة والمشفرة. كحيز يمكن أن تتم فيه المعاملات المالية والأعمال التجارية بغنى عن الوسطاء و دون الاعتماد على الثقة بين الأطراف. جاءت اليوم عقود إثيريوم الذكية لتجعل هذه الفكرة قابلة للتطبيق. +تصوّر Szabo سوقًا رقمية تمكّن فيه العمليات الآلية والمشفرة بشكل آمن حدوث المعاملات ووظائف الأعمال بدون الحاجة إلى وسطاء موثوق بهم. وجدت عقود إيثريوم الذكية لجعل هذه الفكرة قابلة للتطبيق. -## ما هي العقود؟ {#what-are-contracts} +### وضع الثقة في العقود التقليدية {#trust-and-contracts} -ربما تراودك فكرة: _"أنا لست محامياً! فما المبرر حتى أهتم بالعقود؟"_. ينظر معظم الناس للعقود على أنها مجرد شروط واتفاقيات أو وثائق قانونية طويلة لا داعي لها. +تتمثل إحدى أكبر مشاكل العقود التقليدية في الحاجة إلى وجود أشخاص موثوق بهم لمتابعة نتائج العقد. -العقود هي مجرد اتفاقيات. أي أنه يمكن تضمين أي شكل من الاتفاقيات في شروط العقد. تلقى الاتفاقيات الشفوية أو العقود الورقية قبولًا في عدة أمور، ولكنها لا تخلو من العيوب. +إليك مثالًا: -### الثقة والعقود {#trust-and-contracts} +أليس وبوب يخوضان سباق دراجات. فلنفترض أن أليس راهنت بوب على 10 دولارات أنها ستفوز عليه في السباق. ولأن بوب واثق من قدرته على الفوز في السباق، وافق على الرهان. في النهاية، سبقت أليس بوب بفارق كبير وكانت هي الرابحة دون أدنى شك. لكن بوب رفض دفع الرهان مدعيًا أنه بالتأكيد أليس قد غشت. -إحدى أهم المشاكل في العقود التقليدية هي الحاجة لوجود أشخاص موثوق بهم لمتابعة نتائج العقد. - -مثالا على ذلك: - -أليس وبوب لديهما سباق دراجات. فلنفترض أن أليس راهنت بوب على 10 دولارات أنها ستفوز عليه في السباق. ولأن بوب واثق من قدرته على الفوز في السباق، وافق على الرهان. في النهاية، سبقت أليس بوب بفارق كبير وكانت هي الرابحة دون أدنى شك. لكن بوب رفض دفع الرهان مدعيًا أنه بالتأكيد أليس قد غشت. - -هذا مثال بسيط يوضح المشكلة المتعلقة بأي اتفاقية غير ذكية. وحتى لو استوفيت شروط الاتفاق (أي أنت الفائز في السباق)، فلابد أن تضع ثقتك بشخص آخر يفي بالاتفاقية (أي الدفع في الرهان). - -## العقود الذكية {#smart-contracts} - -العقود الذكية تجعل الاتفاقيات رقمية عن طريق تحويل شروط الاتفاقية إلى نص برمجي يُنفذ تلقائيًا عند تحقق شروط العقد. +هذا مثال بسيط يوضح المشكلة المتعلقة بأي اتفاقية غير ذكية. وحتى لو استوفيت شروط الاتفاق (أي أنت الفائز في السباق)، فلا بد أن تضع ثقتك بشخص آخر يفي بالاتفاقية (أي الدفع في الرهان). ### آلة بيع رقمية {#vending-machine} أبسط تشبيه مجازي لعقد ذكي هو آلة بيع تعمل بشكل مماثل إلى حد ما للعقد الذكي - مدخلات محددة تضمن نتائج محددة. - أنت تختار المنتج -- آلة البيع تظهر ثمن شراء المنتج المطلوب -- أنت تدخل المبلغ الصحيح -- آلة البيع تتحقق من أنك أدخلت المبلغ الصحيح -- آلة البيع تخرج المنتج المختار +- تعرض آلة البيع السعر +- أنت تدفع السعر المطلوب +- تتأكد آلة البيع من أنك دفعت المبلغ الصحيح +- تمنحك آلة البيع السلعة التي قمت بشرائها -لن تخرج آلة البيع سوى المنتج المرغوب فقط عند استيفاء جميع الشروط. ففي حال لم تحدد المنتج أو تُدخل ما يكفي من المال، فإن آلة البيع لن تعطيك المنتج الذي ترغب به. +لن تخرج آلة البيع سوى المنتج المرغوب فيه فقط عند استيفاء جميع الشروط. ففي حال لم تحدد المنتج أو تُدخل ما يكفي من المال، فإن آلة البيع لن تعطيك المنتج الذي ترغب به. ### التنفيذ التلقائي {#automation} -واحدة من أهم الفوائد التي تتمتع بها العقود الذكية مقارنةً بالعقود العادية هي أن الالتزامات تنفذ تلقائياً عندما تتحقق شروط العقد. ليس هناك حاجة لانتظار تنفيذ النتيجة بواسطة أي شخص. بعبارة أخرى: العقود الذكية تزيل الحاجة إلى الوثوق بالأشخاص. +الميزة الرئيسية من العقد الذكي هي أنه ينفذ بشكل حتمي نص برمجي واضح عند تحقُق بعض الشروط. لا داعي لانتظار كائن بشري لتفسير النتيجة أو مناقشتها. وهذا يؤدى بدوره إلى الاستغناء عن الوسطاء الموثوق بهم. -مثلًا، يمكن كتابة عقد ذكي للاحتفاظ بمبلغ من المال في صندوق ضمان للطفل، و لا يسمح له بسحب الأموال إلا بعد تاريخ محدد. فلو حاول سحب الأموال قبل التاريخ المحدد في العقد، فإن العقد الذكي لن يسمح بتنفيذ عملية السحب. أو يمكنك كتابة عقد يعطيك تلقائيًا نسخة رقمية من حيازة السيارة عندما تدفع ثمنها للتاجر. +مثلًا، يمكن كتابة عقد ذكي للاحتفاظ بمبلغ من المال في صندوق ضمان للطفل، و لا يسمح له بسحب الأموال إلا بعد تاريخ محدد. إذا حاول الطفل سحب الأموال قبل التاريخ المحدد، لن يسمح العقد الذكي بتنفيذ عملية السحب. أو يمكنك كتابة عقد يعطي نسخة رقمية من حق ملكية السيارة عندما تدفع ثمنها للتاجر بشكل تلقائي. ### النتائج المتوقعة {#predictability} -العامل البشري هو أحد أكبر نِقَاط الضعف في العقود التقليدية. فمثلًا، قد يفسر قاضيان مستقلان عقدًا تقليديًا بطريقتين مُختلفتين. وبالتالي سيؤدي اختلاف تفسيراتهما إلى اتخاذ قرارات مختلفة وإلى نتائج متباينة. بينما تزيل العقود الذكية إمكانية حصول تفسيرات مختلفة. وبدلاً من ذلك، تنفذ العقود الذكية الالتزامات بدقة استناداً إلى الشروط المكتوبة ضمن النص البرمجي للعقد. وتعني هذه الدقة أنه بالنظر إلى نفس الظروف، فإن العقد الذكي سيسفر عن النتيجة نفسها. +تتسم العقود التقليدية بالغموض لأنها تعتمد على كائنات بشرية لتفسيرها وتنفيذها. مثلاً، قد يعطي اثنان من القضاة تفسيرًا مختلفًا لعقد ما، ما يؤدى إلى اتخاذ قرارات متعارضة ونتائج غير متكافئة. تلغي العقود الذكية إمكانية حدوث ذلك. وبدلاً من ذلك، تنفذ العقود الذكية الالتزامات بدقة استنادًا إلى الشروط المكتوبة ضمن النص البرمجي للعقد. وتعني هذه الدقة أنه في ظل الظروف نفسها، فإن العقد الذكي ستسفر عنه النتيجة نفسها. ### السجل العام {#public-record} -تُفيد العقود الذكية أيضا في المراجعة والتتبع. نظرًا لأن العقود الذكية في إثيريوم موجودة ضمن سلسلة كتل عامة، يمكن لأي شخص أن يتتبع على الفور عمليات نقل الأصول والمعلومات الأخرى المتعلقة بها. فمثلًا، يمكنك التحقق لترى ما إذا كان شخص ما قد أرسل أموالاً إلى عنوانك. +تُفيد العقود الذكية في التدقيق والتتبُع. نظرًا إلى أن العقود الذكية في إثيريوم موجودة ضمن بلوكتشين عامة، يمكن لأي شخص أن يتتبع على الفور عمليات نقل الأصول والمعلومات الأخرى المتعلقة بها. مثلاً، يمكنك التحقق من إرسال شخص ما أموالاً إلى عنوانك. ### حماية الخصوصية {#privacy-protection} -يُمكن للعقود الذكية أيضا حماية خصوصيتك. بما أن إثيريوم شبكة مستترة (يتاح للعموم عنوان تشفير فريد مرتبط بمعاملاتك وليس هويتك الشخصية)، يمكنك حماية خصوصيتك من المتتبعين. +كما تحمي العقود الذكية خصوصيتك. بما أن إثيريوم شبكة مستترة (يتاح للعموم عنوان تشفير فريد مرتبط بمعاملاتك وليس هويتك الشخصية)، يمكنك حماية خصوصيتك من المراقبين. ### الشروط مرئية {#visible-terms} -أخيرا، كما في العقود التقليدية، يمكنك التحقق من محتوى العقد الذكي قبل أن توقعه (أو أن تتفاعل معه). إلا أن الأمر الأفضل هو أن الشفافية العلنية للشروط الواردة في العقد تعني أنه بإمكان أي شخص أن يدقق تلك الشروط. +أخيراً، كما في العقود التقليدية، يمكنك التحقق من محتوى العقد الذكي قبل توقيعه (أو التفاعل معه بطريقة أو بأخرى). تضمن شفافية العقد الذكي أنه يمكن لأي شخص فحصه وتدقيقه. ## حالات استخدام العقود الذكية {#use-cases} -إذن فإن العقود الذكية هي برامج حاسوبية تعمل ضمن سلسلة الكتل. ويمكن أن تُنفذ التعليمات الواردة فيها تلقائيًا. كما يمكنك تتبع معاملات العقد، وتوقع سلوكه وحتى استخدامه دون الكشف عن هويتك. هذا رائع. ولكن ما فائدتها؟ حسنًا، العقود الذكية يمكن أن تؤدي في الأساس أي شيء تفعله برامج الكمبيوتر الأخرى. +يمكن للعقد الذكي تنفيذ أي إجراء بشكل أساسي يمكن للبرامج الحاسوبية تنفيذه. -يمكنها انجاز الحسابات، وإنشاء عملات، وتخزين البيانات، وتخزين NFT، وإرسال المراسلات، أو حتى إنشاء مخططات. وفيما يلي بعض الأمثلة الواقعية الشائعة: +يمكنها إجراء عمليات الحوسبة، وإنشاء عملات، وتخزين البيانات، وتخزين NFT، وإرسال المراسلات، أو حتى إنشاء مخططات. وفيما يلي بعض الأمثلة الواقعية الشائعة: - [عملات ثابتة](/stablecoins/) - [إنشاء أصول رقمية فريدة وتوزيعها](/nft/) diff --git a/src/content/translations/ar/social-networks/index.md b/src/content/translations/ar/social-networks/index.md index 830a076fdb8..3ba58c093b4 100644 --- a/src/content/translations/ar/social-networks/index.md +++ b/src/content/translations/ar/social-networks/index.md @@ -75,7 +75,7 @@ summaryPoint3: الرموز المميزة و NFTs تنشئ أساليب جدي ### Reddit {#reddit} -تبنت منصة Reddit [ نقاط المجتمع](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users)، بواسطة [الرموز المميزة ERC-20](/developers/docs/standards/tokens/erc-20/) التي يمكن للمستخدمين أن يكسبوها عن طريق نشر محتوى مميز، والإسهام في المجتمعات عبر الإنترنت (subreddits). يمكنك استبدال هذه الرموز المميزة ضمن subreddit [للحصول على امتيازات ومزايا حصرية](https://www.reddit.com/community-points/). في هذا المشروع، تعمل شركة Reddit مع Arbitrum، وهي إحدى أنواع [الطبقة 2](/layer-2/) لحزم المعاملات المصممة لتوسيع معاملات إثيريوم. +تبنت منصة Reddit [نقاط المجتمع](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users)، بواسطة [الرموز المميزة ERC-20](/developers/docs/standards/tokens/erc-20/) التي يمكن للمستخدمين أن يكسبوها عن طريق نشر محتوى مميز، والإسهام في المجتمعات عبر الإنترنت (subreddits). يمكنك استبدال هذه الرموز المميزة ضمن subreddit [للحصول على امتيازات ومزايا حصرية](https://www.reddit.com/community-points/). في هذا المشروع، تعمل شركة Reddit مع Arbitrum، وهي إحدى أنواع [الطبقة 2](/layer-2/) لحزم المعاملات المصممة لتوسيع معاملات إثيريوم. البرنامج نشط بالفعل مع العملة الرقمية من Subreddit [التي تشغل نسختها من نقاط المجتمع المُسماة"Moons"](https://www.reddit.com/r/CryptoCurrency/wiki/moons_wiki). وحسب الوصف الرسمي لـ Moons فهي "مكافآت يجنيها الناشرون، والمعلقون، والمنسقون مقابل مساهماتهم على subreddit". ولأن هذه الرموز المميزة موجودة على سلسلة الكتل (يستلمها المستخدمون على محافظهم)، فهي مستقلة عن Reddit ولا يمكن أخذها بعيدًا. @@ -93,8 +93,8 @@ summaryPoint3: الرموز المميزة و NFTs تنشئ أساليب جدي - **[Status.im](https://status.im/)** - _ Status هو تطبيق محادثة آمن ومفتوح المصدر، ويستخدم بروتوكول للنظراء، والتشفير من النهاية إلى النهاية لحماية رسائلك من تجسس الأطراف الثالثة._ - **[Mirror.xyz](https://mirror.xyz/)** - _ Mirror هي منصة لامركزية النشر مملوكة للمستخدم مبنية على إثيريوم للمستخدمين لحشد الأفكار، وتحويل المحتوى إلى نقود، وبناء مجتمعات عالية القيمة._ -- **[بروتوكول Lens](https://lens.xyz/)** - _ بروتوكول Lens هو مخطط اجتماعي لامركزي قابل للتعميم يساعد المبدعين على امتلاك محتواهم الخاص أينما يذهبون في العالم الرقمي للإنترنت اللامركزي._ -- **[Farcaster](https://farcaster.xyz/)** - _ Farcaster هي شبكة اجتماعية لامركزية بدرجة كافية. إنه بروتوكول مفتوح يمكنه دعم العديد من العملاء، تمامًا مثل البريد الإلكتروني._ +- **[بروتوكول Lens](https://lens.xyz/)** - _بروتوكول Lens هو مخطط اجتماعي لامركزي قابل للتعميم يساعد المبدعين على امتلاك محتواهم الخاص أينما يذهبون في العالم الرقمي للإنترنت اللامركزي._ +- **[Farcaster](https://farcaster.xyz/)** - _Farcaster هي شبكة اجتماعية لامركزية بدرجة كافية. إنه بروتوكول مفتوح يمكنه دعم العديد من العملاء، تمامًا مثل البريد الإلكتروني._ ## قراءة إضافية {#further-reading} @@ -104,6 +104,8 @@ summaryPoint3: الرموز المميزة و NFTs تنشئ أساليب جدي - [Social Networks Are the Next Big Decentralization Opportunity (الشبكات الاجتماعية هي االفرصة الكبرى القادمة للامركزية)](https://www.coindesk.com/tech/2021/01/22/social-networks-are-the-next-big-decentralization-opportunity/) — _بنبن جيرتزل_ - [Web3 holds the promise of decentralized, community-powered social networks (يبشر Web3 بشبكات اجتماعية لامركزية مدعومة من المجتمع](https://venturebeat.com/2022/02/26/web3-holds-the-promise-of-decentralized-community-powered-social-networks/) - _سوميت جوش_ - [An Overview of the Blockchain Social Media Landscape (نظرة عامة على وسائل التواصل الاجتماعي لسلسلة الكتلة](https://www.gemini.com/cryptopedia/blockchain-social-media-decentralized-social-media) — _Gemini Cryptopedia_ +- [How Blockchain Can Solve Social Media Privacy (كيف يمكن لسلسلة الكتل أن تحل مشكلة الخصوصية في وسائل التواصل الاجتماعي)](https://www.investopedia.com/news/ethereum-blockchain-social-media-privacy-problem-linkedin-indorse/) — _برابلين باجباي_ +- [Social Media Networks Are Coming To The Blockchain (انتقال وسائل التواصل الاجتماعي إلى سلسلة الكتل](https://businesstechguides.co/what-are-decentralized-social-networks) — _إيمانويل أوسيكا_ - [Sufficient Decentralization for Social Networks (لامركزية كافية للشبكات الاجتماعية](https://www.varunsrinivasan.com/2022/01/11/sufficient-decentralization-for-social-networks) _فارون سرينيفاسان_ ### مقاطع الفيديو {#videos} diff --git a/src/content/translations/ar/staking/dvt/index.md b/src/content/translations/ar/staking/dvt/index.md new file mode 100644 index 00000000000..eba4f82877f --- /dev/null +++ b/src/content/translations/ar/staking/dvt/index.md @@ -0,0 +1,91 @@ +--- +title: تقنية برنامج المدقق الموزع +description: تتيح تقنية برنامج المدقق الموزع توزيع عمليات برنامج مدقق إيثريوم على عدة جهات خارجية. +lang: ar +--- + +# تقنية برنامج المدقق الموزع {#distributed-validator-technology} + +تقنية برنامج المدقق الموزع (DVT) هي نهج لأمن برنامج المدقق الذي ينشر مسؤوليات الإدارة والتوقيع الرئيسية عبر جهات خارجية متعددة، لتقليل نقاط الإخفاق الفردية، وزيادة تكيف برنامج المدقق. + +تجري التقنية ذلك من خلال **فصل المفتاح الخاص** المستخدم لتأمين برنامج المدقق **عبر العديد من أجهزة الكمبيوتر** المنظمة في "مجموعة". وتتمثل ميزة ذلك في أن تجعل من الصعب للغاية على المهاجمين الوصول إلى المفتاح، لأنه لا يتم تخزينه بالكامل على جهاز واحد. كما تسمح لبعض العُقد بإيقاف الاتصال بالإنترنت، حيث يمكن إجراء التوقيع اللازم بواسطة مجموعة فرعية من الأجهزة في كل مجموعة. وهذا يقلل من نقاط العطل الفردية من الشبكة ويجعل مجموعة برنامج المدقق كلها أكثر قوة. + +![رسم تخطيطي يوضح كيفية فصل مفتاح برنامج المدقق الفردي إلى حصص رئيسية وتوزيعه على عُقد متعددة بمكونات مختلفة.](./dvt-cluster.png) + +## لماذا نحتاج إلى استخدام تقنية برنامج المدقق الموزع؟ {#why-do-we-need-dvt} + +### الأمان {#security} + +تنشئ برامج المدقق أزواجًا من المفاتيح العامة والخاصة، مفاتيح برنامج مدقق للمشاركة في إجماع الآراء ومفاتيح سحب لإتاحة إمكانية الوصول إلى الأموال. بينما يمكن لبرامج المدقق تأمين مفاتيح السحب غير المتصلة بالإنترنت، يجب أن تكون مفاتيح برامج المدقق الخاصة متصلة بالإنترنت على مدار الساعة. إذا تعرض المفتاح الخاص التابع لبرنامج المدقق للاختراق، فسيكون بإمكان منفذ الهجوم التحكم في برنامج المدقق، وهو ما يمكن أن يؤدي إلى حدوث شطب أو فقدان عملة ETH الخاصة بالمراهن. بإمكان تقنية برنامج المدقق الموزع تفادي هذا الخطر. إليك الطريقة: + +باستخدام تقنية برنامج المدقق الموزع، يمكن للمراهنين المشاركة في المراهنة مع الاحتفاظ بالمفتاح الخاص ببرنامج المدقق غير متصل بالإنترنت. يتم تحقيق ذلك عبر تشفير مفتاح برنامج المدقق الأصلي وتجزئته إلى عدة حصص من المفتاح. توجد حصص المفتاح على الإنترنت ويتم توزيعها على عدة عُقد تمكّن عمليات برنامج المدقق. ويُعد هذا الأمر ممكنًا لأن برامج مدقق إيثريوم تستخدم توقيعات قابلة للجمع، أي إنه من الممكن تجميع المفتاح عبر إضافة أجزائه المختلفة بعضها إلى بعض. ومن ثم يستطيع المراهن أن يحتفظ بمفتاح برنامج المدقق الأصلي الكامل بشكلٍ آمن دون الاتصال بالإنترنت. + +### عدم وجود نقطة عطل واحدة {#no-single-point-of-failure} + +عندما يتم تقسيم برنامج مدقق على مشغلات متعددة وآلات متعددة، يصبح بإمكانه تحمل حدوث حالات عطل في أحد أجزاء الأجهزة والبرامج دون أن يؤدي ذلك إلى عدم اتصاله بالإنترنت. كما يمكن تقليل مخاطر حدوث عطل باستخدام عمليات تهيئة الأجهزة والبرامج المتنوعة في العُقد الموجودة في المجموعة. لا تتوفر هذه المرونة في عمليات تهيئة برامج المدقق التي تستخدم عقدة واحدة - حيث تتوفر من استخدام طبقة تقنية برنامج المدقق الموزع. + +إذا تعطل أحد مكونات الجهاز في المجموعة (مثلاً، إذا كان هناك أربعة مشغلات في مجموعة برنامج مدقق ويستخدم أحدها عميلًا محددًا به خلل معين)، فإن بقية المشغلات تضمن استمرار عمل برنامج المدقق. + +### اللامركزية {#decentralization} + +السيناريو المثالي لإيثريوم أن تمتلك أكبر عدد ممكن من برامج المدقق المستقلة. ورغم ذلك، أصبح عدد قليل من مزودي خدمات المراهنة مشهورين للغاية ويمثلون جزءًا كبيرًا من إجمالي عملات ETH المراهن بها على الشبكة. بإمكان تقنية برنامج المدقق الموزع أن تتيح لهذه المشغلات العمل بشكلٍ لا يتعارض مع لامركزية المراهنة. وذلك لأن المفاتيح الخاصة بكل برنامج مدقق يتم توزيعها عبر العديد من الأجهزة وسيتطلب الأمر قدرًا أكبر من الانخراط لتحويل برنامج المدقق إلى برنامج ضار. + +بدون تقنية برنامج المدقق الموزع، يصبح من الأسهل على مزودي خدمات المراهنة استخدام عمليات تهيئة عميل واحد أو عميلين اثنين فقط لجميع برامج المدقق، وهو ما يزيد من أثر الخلل في العميل. يمكن استخدام تقنية برنامج المدقق الموزع لتوزيع المخاطر على العديد من عمليات تهيئة العملاء والأجهزة المختلفة، وهو الأمر الذي يوفر المرونة عبر التنوع. + +**تقدم تقنية برنامج المدقق الموزع المزايا التالية لإيثريوم:** + +1. **اللامركزية** في عملية إجماع الآراء الخاصة بإثبات المراهنة التابع لإيثريوم +2. تضمن **حيوية** الشبكة +3. تخلق مستوى من **التسامح مع خطأ** برنامج المدقق +4. **تخفض مستوى الثقة** في عملية تشغيل برنامج المدقق +5. **تخفض خطر الشطب** وخطر فترة توقف برنامج المدقق عن الخدمة +6. **تحسن من مستوى التنوع** (في العملاء ومراكز البيانات والأماكن والتشريعات وغيرها) +7. **تعزز مستوى أمان** إدارة مفاتيح برامج المدقق + +## ما آلية عمل تقنية برنامج المدقق الموزع؟ {#how-does-dvt-work} + +تتضمن حلول تقنية برنامج المدقق الموزع المكونات التالية: + +- **[نظام Shamir's secret sharing](https://medium.com/@keylesstech/a-beginners-guide-to-shamir-s-secret-sharing-e864efbf3648)** - تستخدم برامج المدقق [مفاتيح BLS](https://en.wikipedia.org/wiki/BLS_digital_signature). يمكن جمع "حصص مفاتيح" ("حصص المفاتيح") BLS الفردية لتشكيل مفتاح واحد (توقيع). في تقنية برنامج المدقق الموزع، المفتاح الخاص لبرنامج المدقق هو توقيعات BLS لكل مشغّل في المجموعة. +- **[مخطط توقيع العتبة](https://medium.com/nethermind-eth/threshold-signature-schemes-36f40bc42aca)** - يحدد عدد مشاركات المفاتيح الفردية المطلوبة لواجبات التوقيع، على سبيل المثال، 3 توقيعات من أصل 4. +- **[إنشاء المفاتيح الموزعة (DKG)](https://medium.com/toruslabs/what-distributed-key-generation-is-866adc79620)** - عملية تشفير تنشئ حصصًا من المفاتيح وتستخدم لتوزيع حصص مفتاح برنامج مدقق حالي أو جديد على العُقد الموجودة في المجموعة. +- **[الحوسبة المتعددة الأطراف (MPC)](https://messari.io/report/applying-multiparty-computation-to-the-world-of-blockchains)** - يتم إنشاء مفتاح برنامج المدقق الكامل بطريقة سرية عبر استخدام الحوسبة المتعددة الأطراف. لا يعرف أي من المشغلات الفردية المفتاح الكامل - فكل مشغل فردي لا يعرف إلا الجزء ("الحصة") الخاص به من المفتاح. +- **بروتوكول إجماع الآراء** - يختار بروتوكول إجماع الآراء واحدة من العُقد لتكون مقدم اقتراح الكتلة. تشارك العُقدة المختارة الكتلة مع بقية العُقد في المجموعة، التي تساهم بحصتها من المفتاح كي تتمكن من التوقيع الكلي. عندما يتم تجميع عدد كافٍ من حصص المفاتيح، يتم اقتراح الكتلة على إيثريوم. + +تتمتع برامج المدقق الموزع بمستوى مضمّن من تحمل الخطأ، ويمكنها الاستمرار في العمل حتى إذا كانت بعض العُقد الفردية غير متصلة بالإنترنت. يعني ذلك أن المجموعة تتمتع بالمرونة حتى لو تبين أن بعض العُقد الموجودة ضمنها ضارة أو خاملة. + +## حالات استخدام تقنية برنامج المدقق الموزع {#dvt-use-cases} + +تقنية برنامج المدقق الموزع له انعكاسات ملحوظة في قطاع المراهنة بالعموم: + +### المراهنون الفرديون {#solo-stakers} + +تتيح تقنية برنامج المدقق الموزع أيضًا المراهنة غير الاحتجازية من خلال السماح لك بتوزيع مفتاح برنامج المدقق الخاص بك عبر عُقد بعيدة مع إبقاء المفتاح الكامل غير متصل بالإنترنت تمامًا. يعني ذلك أن المراهنين الفرديين ليس عليهم إنفاق الأموال على الأجهزة، في حين أن توزيع حصص المفتاح يمكن أن يساعد في التعزيز ضد هجمات الاختراق المحتملة. + +### تجميد العملات كخدمة) {#saas} + +بإمكان المشغلين (مثل تجمعات الرهان والشركات المراهنة المؤسسية) الذين يديرون العديد من برامج المدقق استخدام تقنية برنامج المدقق الموزع لتقليل الخطر. عبر توزيع الهيكل الأساسي، يمكنهم إضافة مستوى من التكرار إلى عملياتهم وتنويع أنواع الأجهزة التي يستخدمونها. + +تشارك تقنية برنامج المدقق الموزع مسؤولية إدارة المفاتيح عبر العديد من العُقد، وهذا يعني أنه يمكن مشاركة تكلفة التشغيل أيضًا. بإمكان تقنية برنامج المدقق الموزع أيضًا تقليل المخاطر التشغيلية وتكاليف التأمين بالنسبة إلى مزودي خدمات المراهنة. + +### Staking pools {#staking-pools} + +نظرًا إلى إعدادات برنامج المدقق القياسية، فإن تجمعات الرهان ومزودي خدمات سيولة المراهنة لهم أن يمتلكوا عدة مستويات مختلفة من الثقة لدى مشغل واحد، حيث يتم نشر المكاسب والخسائر في جميع أنحاء التجمع. كذلك تعتمد هذه الخدمات على المشغلين لحماية مفاتيح التوقيع لأنه، حتى الآن، لم يكن لديهم أي خيار آخر. + +على الرغم من بذل جهود تقليدية لتوزيع المخاطر عبر توزيع المراهنات على مشغلين مختلفين، فإن كل مشغل لا يزال يدير مراهنة كبيرة بشكلٍ مستقل. الاعتماد على مشغل واحد يفرض مخاطر كبيرة إذا قدم هذا المشغل أداءً ضعيفًا، أو واجه فترات توقف عن العمل، أو تعرض للاختراق أو الأداء بطريقة ضارة. + +عبر الاستفادة من تقنية برنامج المدقق الموزع، يمكن تقليل الثقة المطلوبة من كل مشغل بدرجة كبيرة. **بإمكان تجمعات الرهان أن تتيح للمشغلين الاحتفاظ بالمراهنة دون الحاجة إلى الاحتفاظ بمفاتيح برنامج المدقق** (حيث يتم استخدام حصص المفاتيح فقط). تسمح هذه التقنية أيضًا بتوزيع المراهنات المُدارة على المزيد من المشغلين (مثلًا، بدلًا من استخدام مشغل واحد لإدارة 1000 برنامج مدقق، تتيح تقنية برنامج المدقق الموزع تشغيل برامج المدقق هذه بشكلٍ جماعي من قبل مشغلين متعددين). ستضمن عمليات تهيئة المشغل المتنوعة أنه في حال تعطل أحد المشغلين، سيظل الآخرون قادرين على المصادقة. ينتج عن ذلك مستوى من التكرار والتوزيع الذي يؤدي إلى أداء ومرونة محسنين، ويحقق أقصى قدر من المكافآت. + +توجد ميزة أخرى لتقليل الاعتماد على الثقة بمشغل واحد وهي أن تجمعات الرهان بإمكانها السماح بمشاركة أكثر انفتاحًا وبدون إذن للمشغل. عبر القيام بذلك، يمكن أن تقلل هذه الخدمات من مخاطرها، وتدعم لامركزية إيثريوم عبر استخدام مجموعات مختارة ولا تمتلك إذنًا من المشغلين، على سبيل المثال، من خلال قرن المراهنين الرئيسيين أو المزيد من المراهنين الصغار مع مراهنين أكبر. + +## العوائق المحتملة لاستخدام تقنية برنامج المدقق الموزع {#potential-drawbacks-of-using-dvt} + +- **مكونات إضافية** - تقديم عقدة تقنية برنامج المدقق الموزع يضيف جزءًا آخر إلى الشبكة بإمكانه أن يكون به خلل أو ضعف. تتمثل إحدى طرق التقليل من هذا الخطر في السعي إلى إجراء عمليات تنفيذ متعددة لعقدة تقنية برنامج المدقق الموزع، وهو ما يعني وجود العديد من عملاء هذه التقنية (مثلما يوجد عملاء متعددون لطبقات إجماع الآراء والتنفيذ). +- **تكاليف التشغيل** - نظرًا إلى أن تقنية المدقق الموزع توزع برنامج المدقق بين العديد من الأطراف، تظهر الحاجة إلى المزيد من العُقد للتشغيل بدلًا من الاعتماد على عقدة واحدة، وهو ما يؤدي إلى زيادة تكاليف التشغيل. +- **احتمال زيادة زمن الاستجابة** - نظرًا إلى استخدام تقنية برنامج المدقق الموزع بروتوكول إجماع الآراء لتحقيق إجماع الآراء بين العُقد المتعددة التي تشغّل برنامج المدقق، فمن المحتمل أن يؤدي ذلك إلى زيادة زمن الاستجابة. + +## قراءات إضافية {#further-reading} + +- [مواصفات برنامج مدقق إيثريوم الموزع (مستوى متقدم)](https://github.com/ethereum/distributed-validator-specs) +- [المواصفات التقنية لبرنامج مدقق إيثريوم الموزع](https://github.com/ethereum/distributed-validator-specs/tree/dev/src/dvspec) +- [تطبيق تجريبي لنظام Shamir secret sharing](https://iancoleman.io/shamir/) diff --git a/src/content/translations/ar/staking/pools/index.md b/src/content/translations/ar/staking/pools/index.md new file mode 100644 index 00000000000..03b0afbd755 --- /dev/null +++ b/src/content/translations/ar/staking/pools/index.md @@ -0,0 +1,85 @@ +--- +title: تجميد العملات المجمعة +description: نظرة عامة على كيفية بدء مراهنة عملة ETH المجمعة +lang: ar +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-pool.png +alt: يسبح ليزلي فرس النهر في حمام السباحة. +sidebarDepth: 2 +summaryPoints: + - راهن واحصل على مكافآت بأي مبلغ من ETH من خلال مشاركة الآخرين + - تجاوز الجزء الصعب وأسند عملية المدقق إلى جهة خارجية + - احتفظ برموز الرهانات المميزة في محفظتك الخاصة +--- + +## ما هو تجمع الرهان؟ {#what-are-staking-pools} + +إن تجمع الرهان هو نهج تعاوني يسمح للكثيرين ممن يمتلكون مبالغ قليلة من ETH بالحصول على 32 ETH اللازمة لتفعيل مجموعة من مفاتيح المدقق. لا يتم دعم وظيفة التجميع محلياً في البروتوكول، لذا تم إيجاد حلول منفصلة لتلبية هذه الحاجة. + +تعمل بعض تجمعات الرهان باستخدام العقود الذكية، حيث يمكن إيداع المبالغ في عقد، الذي يُدير ويتتبع حصتك بكل موثُوقية، ويُصدر لك رمزًا مميزًا يُمثل هذه القيمة. قد لا تشتمل التجمعات الأخرى على عقود ذكية وتتم من خلال الوساطة خارج السلسلة بدلاً من ذلك. + +## ما هي ميزات تجمع الرهان؟ {#why-stake-with-a-pool} + +إضافة إلى المزايا التي وضحناه في [مُقدمة عن المراهنة](/staking/)، تتضمن المراهنة في تجمعات حزمة من المزايا المتميزة. + + + + + + + + + +## الأمور التي يجب وضعها في اﻻعتبار {#what-to-consider} + +لا يتم دعم المراهنة المجمعة أو المفوضة محليًا في بروتوكول اﻻيثيريوم، ولكن نظرًا إلى طلب المستخدمين للمراهنة بأقل من 32 ETH، فقد تم إيجاد عدد متزايد من الحلول لتلبية هذا الطلب. + +يتم إنشاء كل تجمع والأدوات أو العقود الذكية التي يستخدمونها من قبل فرق مختلفة، وكلّ منها يتضمن مزايا ومخاطر. تُمكِّن التجمعات المستخدمين من مبادلة ETH الخاص بهم برمز مميز يمثل ETH التي تمت مراهنتها. الرمز المميز مفيد لأنه يسمح للمستخدمين بمبادلة أي كمية من ETH لكمية مماثلة من الرموز المميزة الحاملة للعائدات، التي تنشئ عائدات من مكافأت المراهنة التي يتم تطبيقها على ETH التي تمت مراهنته (والعكس صحيح) على التبادلات اللامركزية على الرغم من أن عملة ETH الفعلية تظل مراهنة في طبقة الإجماع. هذا يعني أن المبادلات المتكررة من منتج ETH ذي عائد مرتفع و"ETH الخام" سريعة وسهلة وليست متوفرة فقط في مضاعفات 32 ETH. + +ومع ذلك، تميل هذه الرموز المميزة التي تمثل عملة ETH التي تمت مراهنتها لخلق سلوكيات عصابية، حيث ينتهي الأمر بكمية كبيرة من عملة ETH التي تمت مراهنتها تحت سيطرة منظمات مركزية قليلة بدلًا من أن يتم توزيعه على العديد من الأفراد المستقلين. يخلق ذلك ظروفًا للرقابة أو استخراج القيمة. يجب أن يكون المقياس الذهبي للمراهنة دائمًا عبارة عن أفراد يشغلون عقد تدقيق على معداتهم الخاصة كلما أمكن ذلك. + +[مزيد من المعلومات عن مخاطر الرموز المميزة للمراهنة](https://notes.ethereum.org/@djrtwo/risks-of-lsd). + +تُستخدم مؤشرات السمات أدناه للتدليل على أي نقاط ضعف أو قوة ملحوظين يتمتع بهم تجمع الرهان المدرج. استخدم هذا القسم كمرجع لكيفية تحديد هذه السمات بينما تختار تجمعًا للانضمام إليه. + + + +## التعرف على تجمعات الرهان {#explore-staking-pools} + +تتوفر خيارات متنوعة لمساعدتك على إكمال الإعداد. استخدم المؤشرات أعلاه للمساعدة في إرشادك خلال الأدوات المتاحة أدناه. + + + + + +يُرجى مراعاة أهمية اختيار الخدمة التي تأخذ [تنوع العملاء](/developers/docs/nodes-and-clients/client-diversity/) على محمل الجد، لأنها تعمل على تحسين أمان الشبكة، وتحدّ من المخاطر التي تتعرض لها. تتم الإشارة إلى الخدمات التي تمتلك دليلًا على وضع حدود على أغلبية استخدامات العملاء بـ "تنويع عملاء التنفيذ" و"تنويع عملاء الإجماع". + +هل لديك اقتراح غاب عنا لأداة مراهنة؟ راجع [سياسة قائمة المنتجات](/contributing/adding-staking-products/) الخاصة بنا لمعرفة ما إذا كانت مناسبة، ثم أرسلها للمراجعة. + +## الأسئلة الشائعة {#faq} + + +عادةً، يتم إصدار الرموز المميزة للمراهنة وفقًا للمعيار ERC-20 للمراهنين، وتمثل هذه الرموز قيمة عملة ETH التي تمت مراهنتها إضافة إلى المكافآت. ضع في عين الاعتبار أن تجمعات الرهان المختلفة ستوزع مكافآت المراهنة لمستخدميها بطرق مختلفة بعض الشيء، لكن هذا هو الموضوع المشترك. + + + +الآن! تم تنفيذ تطوير الشبكة المعروف بـ Shanghai/Capella في أبريل ٢٠٢٣، وتم تقديم من خلاله ميزة سحب المراهنات. تتمع حسابات المدققين التي تدعم تجميعات الرهان الآن بإمكانية الخروج وسحب ETH على عنوان السحب المخصص. يتيح ذلك إمكانية استرداد أموال الجزء الخاص بك من الرهان مقابل عملة ETH الأساسية. تحقق من الأمر مع مزود الخدمة الخاص بك لمعرفة إذا ما كان يدعم هذه الوظيفة. + +وكحل بديل، تسمح بعض التجمعات التي تستخدم رموز مميزة للمراهنة وفقًا لمعيار ERC-20 لمستخدميها بتداول هذه الرموز المميزة في السوق المفتوحة، وتسمح لهم ببيع موضع المراهنة الخاص بهم، بشكلٍ يؤدي إلى انسحابهم من عملية المراهنة دون إزالة عملة ETH من عقد المراهنة. + +مزيد من المعلومات حول عمليات السحب المتعلقة بالمراهنات + + + +هناك العديد من أوجه التشابه بين خيار المراهنة المجمع، والمبادلات المركزية، مثل القدرة على المراهنة بمبالغ صغيرة من عملات ETH وتجميعهم معًا لتفعيل برامج المدققون. + +على عكس المبادلات المركزية، تستخدم العديد من خيارات المراهنة المجمعة الأخرى العقود الذكية و/أو الرموز المميزة للمراهنة، التي تكون عادةً وفقًا لمعيار الرموز المميزة ERC-20، والتي يمكن الاحتفاظ بها في محفظتكم الخاصة، كما يمكن بيعها وشراؤها كأي رمز مميز آخر. يضيف ذلك طبقة من النفوذ والأمان، من خلال منحك التحكم الكامل بالرموز المميزة الخاصة بك، لكن مع ذلك لا يمنحك سيطرة مباشرة على مصادقة عميل التدقيق الذي يعمل بالنيابة عنكم في الخلفية. + +تكون بعض خيارات التجمع أكثر لامركزية من غيرها عندما يتعلق الأمر بالعقود التي تدعمها. للترويج لصحة ولامركزية الشبكة، يتم تشجيع المراهنين دائمًا على اختيار خدمات تجميع تمكن مجموعة لامركزية غير مصرح بها من مشغلي العقدة. + + +## قراءة إضافية {#further-reading} + +- [المراهنة باستخدام RocketPool - نظرة عامة على المراهنة](https://docs.rocketpool.net/guides/staking/overview.html) - _وثائق RocketPool_ +- [مراهنة عملات إيثريوم باستخدام Lido](https://help.lido.fi/en/collections/2947324-staking-ethereum-with-lido) - _وثائق المساعدة الخاصة بـ Lido_ diff --git a/src/content/translations/ar/staking/saas/index.md b/src/content/translations/ar/staking/saas/index.md new file mode 100644 index 00000000000..20d199dc4b6 --- /dev/null +++ b/src/content/translations/ar/staking/saas/index.md @@ -0,0 +1,94 @@ +--- +title: تجميد العملات كخدمة +description: نظرة عامة على كيفية بدء مع تجميع ETH +lang: ar +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-saas.png +alt: يطوف ليزلي فرس النهر في السحاب. +sidebarDepth: 2 +summaryPoints: + - تتولى جهة خارجية مختصة بتشغيل العقد عمليات تشغيل عميلك المدقق + - خيار رائع لكل شخص يمتلك 32 ETH ولا يشعر بالراحة إزاء التعامل مع التعقيد التقني المرتبط بتشغيل عقدة + - خفض مستوى الثقة المطلوب، والحفاظ على ملكية مفاتيح السحب +--- + +## ما هي المراهنة كخدمة؟ {#what-is-staking-as-a-service} + +تمثل المراهنة كخدمة (SaaS) فئة من خدمات المراهنة حيث تقوم بإيداع 32 ETH الخاصة بك لتشغيل برنامج المدقق، لكنك تفوض عمليات تشغيل العقدة لجهة خارجية. تشمل هذه العملية عادةً الحصول على توجيه خلال إجراء الإعدادات الأولية، بما في ذلك إنشاء المفاتيح والإيداع، ثم تحميل مفاتيح التوقيع الخاصة بك إلى منصة التشغيل. يسمح ذلك للخدمة بتشغيل برنامج المدقق الخاص بك نيابة عنك، عادةً مقابل رسوم شهرية. + +## لم يجب المراهنة باستخدام خدمة؟ {#why-stake-with-a-service} + +لا يدعم بروتوكول إيثريوم بتفويض المراهنة، لذا تم تصميم هذه الخدمات لتلبية هذه الحاجة. إذا كنت تمتلك عملة 32 ETH لمراهنتها، ولكنك غير مرتاح إزاء التعامل مع المعدات، تسمح لك خدمات SaaS بإسناد الجزء الصعب إليهم بينما تحصل على كتلة مكافآت أصلية. + + + + + + + + + +## العناصر التي يجبُ أخذُها بعين اﻻعتبار {#what-to-consider} + +يتواجد عدد متزايد من موفري خدمات SaaS الذين يساعدونك على مراهنة عملة ETH الخاص بك، لكن هناك مميزات ومخاطر لكلٍ منهم. تتطلب جميع خيارات SaaS قدرًا إضافيًا من الثقة بالافتراضات مقارنةً بالمراهنة باستخدام معدات منزلية. قد تحتوي خيارات Saas على كود إضافي يغطي عملاء إيثريوم وقد لا يكون هذا الكود مفتوح المصدر أو متاحًا للتدقيق. كما تُحدث SaaS أثرًا سلبيًا على لامركزية شبكة إيثريوم. حسب الإعداد، قد لا يكون بإمكانك التحكم في برنامج المدقق الخاص بك - وبإمكان مشغل الخدمة التصرف في عملة ETH الخاص بكم بطريقة غير نزيهة. + +تُستخدم مؤشرات السمات أدناه للتدليل على أي نقاط ضعف أو قوة ملحوظين يتمتع بهم موفر خدمات SaaS المدرج. استخدم هذا القسم كمرجع لكيفية تحديد هذه السمات بينما تختار خدمة لمساعدتك على بدء رحلة المراهنة الخاصة بك. + + + +## التعرف على موفري خدمات المراهنة {#saas-providers} + +يتوفر أدناه بعض موفري خدمات المراهنة. استخدم المؤشرات أعلاه للمساعدة في إرشادك خلال هذه الخدمات. + + + +#### موفرو خدمات المراهنة + + + +يُرجى مراعاة أهمية اختيار الخدمة التي تدعم [تنوع العملاء](/developers/docs/nodes-and-clients/client-diversity/)، لأنها تعمل على تحسين أمان الشبكة، وتحدّ من المخاطر التي تتعرض لها. تتم الإشارة إلى الخدمات التي تمتلك دليلًا على وضع حدود على أغلبية استخدامات العملاء بـ "تنويع عملاء التنفيذ" و"تنويع عملاء الإجماع". + +#### مكونات المفاتيح + + + +هل لديك اقتراح غاب عنا بخصوص موفر خدمات المراهنة باعتبارها خدمة؟ راجع [سياسة قائمة المنتجات](/contributing/adding-staking-products/) الخاصة بنا لمعرفة ما إذا كانت مناسبة، ثم أرسلها للمراجعة. + +## الأسئلة الشائعة {#faq} + + +ستختلف الترتيبات من موفر خدمات إلى آخر، لكن العامل المشترك بينهم هو أنهم سيرشدونك خلال عملية إعداد مفاتيح التوقيع التي ستحتاجها (مفتاح لكل 32 ETH)، وتحميل هذه المفاتيح لموفر الخدمات للسماح له بالتدقيق نيابة عنك. لا تمنح مفاتيح التوقيع وحدها صلاحية بإجراء عملية سحب أو تحويل أو إنفاق لأموالكم. على كلٍ، تمنح هذه المفاتيح صلاحية التصويت في إجماع الآراء، والتي إذا لم يتم تنفيذها بشكل صحيح يمكن أن تؤدي إلى عقوبات الانقطاع عن الإنترنت أو الشطب. + + + +نعم. يتكون كل حساب من مفاتيح توقيع ومفاتيح سحب من BLS. ليتمكن المدقق من مصادقة حالة السلسلة، والمشاركة في لجان التزامن واقتراح كتل، يجب على العميل المدقق أن يمتلك وصولًا إلى مفاتيح التوقيع بشكلٍ مسبق. يجب أن تكون هذه المفاتيح متصلة بالإنترنت بشكلٍ ما، ولهذا يمكن اعتبارها بشكلٍ أصلي على أنها مفاتيح "قوية". مفاتيح التوقيع مطلوبة ليتمكن المدقق من المصادقة، وبالتالي يتم فصل المفاتيح المستخدمة لتحويل أو سحب الأموال لأسباب أمنية. + +تستخدم مفاتيح سحب BLS لتوقيع رسالة لمرة واحدة، والتي تعلن عن طبقة التنفيذ التي يجب تحويل مكافآت الرهان والأموال الصادرة إليها. بمجرد بث هذه الرسالة، لا تعد هناك حاجة إلى مفاتيح سحب BLS. بدلًا من ذلك، يتم تفويض التحكم بعمليات السحب بصورة دائمة إلى العنوان الذي قدمته. يتيح لك ذلك إعداد عنوان سحب مؤمن عبر وسائل تخزين غير متصلة بالإنترنت، ما يقلل من خطر الوصول إلى أموال المدقق الخاص بك، حتى في حال كان هناك شخص آخر يتحكم في مفاتيح توقيع المدقق الخاصة بك. + +تحديث بيانات اعتماد السحب هي خطوة مطلوبة لتمكين إجراء عمليات السحب. تتضمن هذه العملية إنشاء مفاتيح السحب الخاصة بك باستخدام عبارة الأصل الذاكرية. + +تأكد من الاحتفاظ بعبارة الأصل هذه بطريقة آمنة أو لن تتمكن من إنشاء مفاتيح السحب الخاصة بك عندما يحين الوقت. + +\*المراهنون الذين يوفرون عنوان سحب خلال عملية الإيداع الأولي لا يحتاجون إلى إجراء ذلك. تواصل مع موفر خدمة SaaS الخاص بكم للحصول على الدعم فيما يتعلق بكيفية تحضير برنامج المدقق الخاص بك. + + + +تم تطبيق عمليات سحب المراهنة في تحديث Shanghai/Capella في أبريل ٢٠٢٣. يجب على المراهنين توفير عنوان سحب (في حال لم يتم توفيره خلال عملية الإيداع الأولي)، وسيبدأ توزيع مدفوعات المكافآت تلقائيًا بشكلٍ دوري كل بضعة أيام. + +بإمكان المدققين أيضًا أن الخروج كليًا من عملية المراهنة، ما يتيح لهم إمكانية سحب رصيد ETH المتبقي لهم. ستحصل الحسابات التي وفرت عنوان سحب للتنفيذ، وأنهت عملية الخروج، على رصيدها بالكامل على عنوان السحب الذي تم توفيرة خلال عملية توزيع المكافآت الأولى. + +مزيد من المعلومات حول عمليات السحب المتعلقة بالمراهنات + + + +باستخدام موفر خدمات SaaS، فأنت بذلك تسند عملية العقدة الخاص بك إلى شخص آخر. لا يخلو ذلك من خطر ضعف أداء العقدة، الأمر الذي سيكون خارج سيطرتك. في حال تعرض المدقق الخاص بك للشطب، سيتم تطبيق عقوبة السحب من رصيد المدقق الخاص بك، كما سيتم سحب الرصيد بشكلٍ قسري وإزالته من تجمع المدقق. + +بعد إتمام عملية الشطب والخروج، سيتم تحويل الأموال المتبقية إلى عنوان السحب المخصص للمدقق. يتطلب ذلك توفير عنوان سحب لتمكين العملية. قد يكون تم توفيره خلال عملية الإيداع الأولي. في حالة عدم التوفر، يجب استخدام مفاتيح السحب الخاصة بالمدقق لتوقيع رسالة تكشف عن عنوان السحب. في حالة عدم توفير أي عنوان سحب، ستبقى الأموال مجمدة حتى يتم توفير عنوان سحب. + +تواصل مع موفر خدمة SaaS للاستفسار عن المزيد من التفاصيل حول الضمانات أو خيارات التأمين التي يقدمها، وعن تعليمات بخصوص كيفية توفير عنوان سحب. إذا كنت تفضل التمتع بالتحكم الكامل في إعداد المدقق الخاصة بك، تعرف على المزيد عن كيفية المراهنة بشكلٍ منفرد. + + +## قراءة إضافية {#further-reading} + +- [تقييم خدمات المراهنة](https://www.attestant.io/posts/evaluating-staking-services/) - _جيم ماكدونالد 2020_ diff --git a/src/content/translations/ar/staking/solo/index.md b/src/content/translations/ar/staking/solo/index.md new file mode 100644 index 00000000000..73532beb32e --- /dev/null +++ b/src/content/translations/ar/staking/solo/index.md @@ -0,0 +1,203 @@ +--- +title: المراهنة الفردية لعملة ETH الخاص بك +description: نظرة عامة إلى كيفية بدء المراهنة الفردية لعملة ETH الخاص بك +lang: ar +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-solo.png +alt: ليزلي فرس النهر على شريحة الحاسوب الخاصة بها. +sidebarDepth: 2 +summaryPoints: + - الحصول على أقصى قدر ممكن من المكافآت من البروتوكول مباشرةً نظير الحفاظ على أداء برنامج المدقق الخاص بك بشكلٍ صحيح وإبقائه متصلاً بالإنترنت + - تشغيل الأجهزة المنزلية، وتعزيز أمان ولامركزية شبكة إيثريوم بشكلٍ شخصي + - إلغاء الحاجة إلى الثقة، وعدم التوقف عن التحكم في المفاتيح التي تمنحك الوصول إلى أموالك +--- + +## ما المقصود بالمراهنة الفردية؟ {#what-is-solo-staking} + +المراهنة الفردية هي عملية [تشغيل عقدة إيثريوم](/run-a-node/) متصلة بالإنترنت، وإيداع 32 ETH لتفعيل [برنامج المدقق](#faq)، وهذا يمنحك إمكانية المشاركة مباشرةً في إجماع الآراء على الشبكة. + +**تزيد المراهنة الفردية من لامركزية شبكة إيثريوم**، وهو ما يجعل إيثريوم أكثر مقاومة للرقابة وأكثر قوة أمام الهجمات. قد لا تساعد أساليب المراهنة الأخرى الشبكة بالطرق نفسها. تُعد المراهنة الفردية أفضل خيار مراهنة لتأمين إيثريوم. + +تتكون عقدة إيثريوم من عميل طبقة التنفيذ (EL) إضافة إلى عميل طبقة إجماع الآراء (CL). البرامج هي برمجيات تعمل معًا، إلى جانب مجموعة صالحة من مفاتيح التوقيع، للتحقق من المعاملات والكتل، ومصادقة العنوان الصحيح للسلسلة، وتجميع عمليات المصادقة، واقتراح الكتل. + +يتحمل المراهنون الفرديون مسؤولية تشغيل الأجهزة اللازمة لتشغيل هؤلاء العملاء. يُوصى بشدة باستخدام آلة مخصصة لهذا الغرض يمكنك تشغيلها من المنزل، هذا مفيد للغاية لسلامة الشبكة. + +يتلقى المراهنون الفرديون المكافآت من البروتوكول مباشرةً نظير الحفاظ على أداء برنامج المدقق الخاص بهم وإبقائه متصلًا بالإنترنت. + +## لماذا يجب التفكير في المراهنة الفردية؟ {#why-stake-solo} + +تنطوي المراهنة الفردية على مسؤولية أكبر ولكنها توفر أقصى قدر من التحكم في أموالك وإعدادات المراهنة. + + + + + + + +## الاعتبارات التي ينبغي وضعها في الاعتبار قبل المراهنة الفردية {#considerations-before-staking-solo} + +بقدر ما نتمنى أن تكون المراهنة الفردية متاحة وتخلو من المخاطر للجميع، فهذا ليس حقيقة واقعة. هناك بعض الاعتبارات العملية والمهمة التي ينبغي وضعها في الاعتبار قبل اختيار المراهنة الفردية لعملة ETH الخاصة بك. + + + +عند تشغيل العقدة الخاصة بك، عليك تخصيص بعض الوقت لتعلم كيفية استخدام البرنامج الذي اخترته. يتضمن ذلك قراءة ملفات التوثيق ذات الصلة والتوافق مع قنوات التواصل الخاصة بفرق المطورين. + +كلما عرفت أكثر عن البرنامج الذي تشغّله وعن آلية عمل بروتوكول إثبات المراهنة، انخفضت المخاطر عليك كمراهن، وسيسهل من إصلاح أي مشكلات قد تواجهها كمُشغّل عقدة. + + + +يتطلب إعداد العُقد قدرًا معقولًا من الشعور بالراحة عند العمل باستخدام الحواسيب، على الرغم من أن الأدوات الجديدة تجعل هذه العملية أسهل بمرور الوقت. يُعد فهم واجهة سطر الأوامر أمرًا مفيدًا، لكنه لم يعد ضروريًّا كما كان الأمر من قبل. + +كما يتطلب الأمر إجراء إعداد أساسي للأجهزة، ومعرفة القليل عن الحد الأدنى من المواصفات المطلوب توفرها فيها. + + + +وكما هو الحال في طريقة تأمين المفاتيح الخاصة لعنوان Ethereum الخاص بك، فإنك ستحتاج إلى إنشاء مفاتيح خصوصًا لبرنامج المدقق الخاص بك. يجب أن تعرف كيفية الحفاظ على سلامة وأمان أي عبارات أصل أو مفاتيح خاصة.{' '} + +أمان إيثريوم ومنع الاحتيال + + + +أحيانًا ما تتعطل الأجهزة، وينقطع الاتصال بالشبكة، ويحتاج برنامج العميل إجراء تحديث في بعض الأحيان. صيانة العقدة هو أمر لا مهرب منه، وستتطلب بعضًا من انتباهك كل فترة. عليك التأكد من أنك على دراية بأي عمليات تحديث مرتقبة للشبكة أو للعميل. + + + +تتناسب المكافآت التي تحصل عليها مع الوقت الذي يكون برنامج المدقق الخاص بك متصلًا فيه بالإنترنت وتتم فيه المصادقة على نحوٍ سليم. تؤدي فترة التوقف إلى فرض عقوبات تتناسب مع عدد برامج المدقق الأخرى غير المتصلة بالإنترنت في الوقت نفسه، ولكنها لا تؤدي إلى شطبها. يُعد عرض النطاق الترددي أمرًا مهمًّا أيضًا، إذ يتم تقليل المكافآت على عمليات المصادقة التي لم تُجر في الوقت المناسب. تختلف المواصفات المطلوبة، ولكن يُوصى بامتلاك اتصال بسرعة ١٠ ميجا بايت/ثانية لعمليات التحميل والتنزيل. + + + +يختلف الشطب عن عقوبات عدم النشاط بسبب الوجود في وضع عدم الاتصال بالإنترنت، إذ يُعد من أشد العقوبات التي تُنفذ على البرامج الضارة. ومن خلال تشغيل عميل من الأقلية مع تحميل مفاتيحك على آلة واحدة فقط في المرة الواحدة، فإن خطر التعرض للشطب يكون في أدنى مستوياته. ومع ذلك، يجب أن يكون جميع المراهنين على دراية بمخاطر الشطب. + +معرفة المزيد عن مراحل برنامج المدقق والشطب + + + + + +## آلية العمل {#how-it-works} + + + +ستحصل على مكافآت ETH، عندما تكون نشطًا، وسيتم إيداعها في عنوان السحب الخاص بك بشكلٍ دوري. + +إذا رغبت في ذلك، يمكنك الإنهاء كبرنامج مدقق، الأمر الذي سيلغي ضرورة بقائك متصلاً بالإنترنت، ويوقف أي مكافآت أخرى. سيتم بعد ذلك سحب رصيدك المتبقي إلى عنوان السحب الذي حددته في أثناء مرحلة الإعداد. + +[مزيد من المعلومات حول عمليات السحب المتعلقة بالمراهنات](/staking/withdrawals/) + +## البدء في استخدام منصة تشغيل المراهنة {#get-started-on-the-staking-launchpad} + +منصة تشغيل المراهنة هي تطبيق مفتوح المصدر يساعدك على أن تصبح مراهنًا. سترشدك المنصة خلال اختيار عملائك، وإنشاء مفاتيحك وإيداع ETH الخاص بك في عقد إيداع المراهنة. يتم توفير قائمة مرجعية للتأكد من أنك غطيت كل الشروط اللازمة لإعداد برنامج المدقق الخاص بك بطريقة آمنة. + + + +## ما الأمور التي ينبغي مراعاتها مع أدوات إعداد العقدة والعميل {#node-tool-considerations} + +هناك عدد متزايد من الأدوات والخدمات التي تساعدك في إجراء المراهنة الفردية لعملة ETH الخاصة بك، ولكن لكل منها مخاطر وفوائد مختلفة. + +تُستخدَم مؤشرات السمات الواردة أدناه للإشارة إلى نقاط القوة أو الضعف الملحوظة التي قد تكون في أداة المراهنة المدرجة. استخدم هذا القسم كمرجع لكيفية تحديد هذه السمات في أثناء اختيارك للأدوات التي تساعدك في رحلة المراهنة. + + + +## استكشاف أدوات إعداد العقدة والعميل {#node-and-client-tools} + +تتوفر خيارات متنوعة لمساعدتك على إكمال الإعداد. استخدم المؤشرات أعلاه للمساعدة في إرشادك خلال الأدوات المتاحة أدناه. + + + +#### أدوات العقدة + + + +يُرجى ملاحظة أهمية اختيار [عميل من الأقلية](/developers/docs/nodes-and-clients/client-diversity/) لأنه يحسّن أمان الشبكة ويحد من المخاطر التي تتعرض لها. يُشار إلى الأدوات التي تتيح لك إعداد عميل من الأقلية على أنها "متعددة العملاء". + +#### مكونات المفاتيح + +These tools can be used as an alternative to the [Staking Deposit CLI](https://github.com/ethereum/staking-deposit-cli/) to help with key generation. + + + +هل لديك اقتراح غاب عنا لأداة مراهنة؟ راجع [سياسة قائمة المنتجات](/contributing/adding-staking-products/) الخاصة بنا لمعرفة ما إذا كانت مناسبة، ثم أرسلها للمراجعة. + +## استكشاف إرشادات المراهنة الفردية {#staking-guides} + + + +## الأسئلة الشائعة {#faq} + +إليك بعض أكثر الأسئلة شيوعًا حول المراهنة التي ينبغي معرفتها. + + + +برنامج المدقق هو كيان افتراضي يوجد في إيثريوم ويشارك في عملية إجماع الآراء لبروتوكول الإيثريوم. يتم استعراض برامج المدقق بواسطة الرصيد والمفتاح العام وغيرها من الخصائص. عميل برنامج المدقق هو البرنامج الذي يعمل نيابةً عن برنامج المدقق من خلال الاحتفاظ بمفتاحه الخاص واستخدامه. يمكن أن يحتفظ عميل برنامج مدقق واحد بعدة أزواج من المفاتيح، والتحكم في العديد من برامج المدقق. + + + + +يلزم وجود 32 ETH بالضبط لتفعيل كل زوج من المفاتيح المقترنة ببرنامج مدقق واحد. إن إيداع المزيد من عملات ETH في مجموعة واحدة من المفاتيح لا يزيد من المكافآت المحتملة، حيث يقتصر كل برنامج مدقق على رصيد فعال يبلغ قدره 32 ETH. هذا يعني أن المراهنة تتم بزيادات تبلغ 32 ETH، لكل منها مجموعة المفاتيح والرصيد الخاصان بها. + +لا تجرِ عملية إيداع بأكثر من 32 ETH لبرنامج مدقق واحد. إذ لن يزيد ذلك من مكافآتك. في حال تعيين عنوان سحب لبرنامج المدقق، سيتم سحب أي أموال تزيد على 32 ETH تلقائيًّا إلى هذا العنوان أثناء عملية التحقق من برنامج المدقق المقبلة. + +إذا كانت المراهنة الفردية تتطلب منك بذل الكثير من الجهد، ففكر في استخدام مزود خدمة المراهنة كخدمة، أو إذا كنت تعمل بأقل من 32 ETH، فتحقّق من تجمعات الرهان. + + + +لن يؤدي عدم الاتصال بالإنترنت إلى الشطب عندما تنهي الشبكة معاملاتها على نحوٍ سليم. يتم فرض عقوبات صغيرة على عدم النشاط إذا لم يكن برنامج المدقق الخاص بك متاحًا لإقرار حالة الشبكة لمدة دورة كاملة (مدة كل منها 6.4 دقائق)، ولكن هذه العقوبات تختلف تمامًا عن الشطب. هذه العقوبات أقل بقليل من مقدار المكافأة التي كنت ستحصل عليها لو كان برنامج المدقق متاحًا للإقرار، ويمكن تعويض الخسائر عبر الحفاظ على الاتصال بالإنترنت لفترة تعادل فترة عدم الاتصال. + +تجدر الإشارة إلى أن العقوبات المفروضة على عدم النشاط تتناسب مع عدد برامج المدقق غير المتصلة بالإنترنت في الوقت نفسه. وفي الحالات التي يكون فيها جزء كبير من الشبكة غير متصل بالإنترنت في آن واحد، فإن العقوبات المفروضة على كل من برامج المدقق هذه ستكون أكثر مما كانت في حال عدم توفر برنامج مدقق واحد. + +في الحالات القصوى، إذا توقفت الشبكة عن إنهاء معاملاتها نتيجة لعدم اتصال أكثر من ثلث برامج المدقق بالإنترنت، فسيتعرض هؤلاء المستخدمون لما يُعرف باسم تسرب عدم النشاط التربيعي، وهو استنزاف هائل لعملات ETH من حسابات برنامج المدقق غير المتصلة بالإنترنت. يتيح ذلك للشبكة إمكانية الإصلاح الذاتي في نهاية المطاف عبر استهلاك ETH الخاص ببرامج المدقق غير النشطة حتى يصل رصيدها إلى 16 ETH، وعندها سيتم إخراجها تلقائيًّا من تجمع برنامج المدقق. ستشكّل برامج المدقق المتصلة بالإنترنت المتبقية في النهاية أكثر من ثلثي الشبكة مجددًا، الأمر الذي يحقق الأغلبية المطلقة اللازمة لكي تنهي الشبكة معاملاتها مجددًا. + + + +باختصار، ليس هناك ضمان كامل لعدم التعرض للشطب، ولكن إذا تصرفت بحسن نية، وشغّلت أحد عملاء الأقلية، واحتفظت بمفاتيح التوقيع الخاصة بك على جهاز واحد في كل مرة، فإن خطر التعرض للشطب سيكون معدومًا تقريبًا. + +لا يوجد سوى عدد قليل من الطرق المحددة التي يمكن أن تؤدي إلى تعرض برنامج المدقق للشطب وإخراجه من الشبكة. وحتى وقت كتابة هذه السطور، كانت عمليات الشطب التي تمت حتى الآن، بشكلٍ حصري، نتاجًا لإعدادات الأجهزة الزائدة عن الحاجة حيث يتم تخزين مفاتيح التوقيع على جهازين منفصلين في وقت واحد. تخزين المفاتيح بهذه الطريقة يمكن أن يؤدي إلى حدوث تصويت مزدوج من مفاتيحك، وهو أمر يعد مخالفة تستوجب الشطب. + +كما تنطوي عملية تشغيل عميل لديه أغلبية كبيرة (أي عميل يستخدمه أكثر من ثلثي الشبكة) على خطر التعرض للشطب إذا تسبب خلل في هذا العميل بحصول تفرع في الشبكة. قد يؤدي ذلك إلى ظهور تفرع خطأ يصل إلى مرحلة إنهاء المعاملات. سيتطلب تصحيح الخطأ والعودة إلى السلسلة المقصودة تقديم تصويت انسحاب من خلال محاولة التراجع عن الكتلة النهائية. كما يمثل ذلك مخالفة تستوجب الشطب، ويمكن تفاديها عبر تشغيل عقدة أقلية بدلًا من عقدة أغلبية. + +الأخطاء المماثلة في عميل الأقلية لا يبلغ مرحلة الإنهاء ومن ثم لا تؤدي أبدًا إلى حدوث تصويت شامل، وهو الأمر الذي سيؤدي ببساطة إلى فرض عقوبات عدم النشاط وليس الشطب. + + + + + +قد يختلف العملاء الفرديون قليلاً من حيث الأداء وواجهة المستخدم، حيث يتم تطوير كل منهم من قِبل فرق مختلفة باستخدام مجموعة متنوعة من لغات البرمجة. ومع قول ذلك، فإنه لا يوجد نوع عملاء يعد "الأفضل". إذ يُعد جميع عملاء الإنتاج من البرامج الممتازة، وتؤدي جميعًا الوظائف الأساسية نفسها المتعلقة بمزامنة البلوكتشين والتفاعل معها. + +ونظرًا إلى تقديم جميع عملاء الإنتاج الوظيفة الأساسية نفسها، فمن الضروري للغاية في الواقع أن تختار عميل أقلية، أي عميلاً لا يتم استخدامه حاليًّا من قبل غالبية برامج المدقق الموجودة على الشبكة. قد يبدو ذلك معاكسًا للمنطق، ولكن تشغيل عميل أغلبية أو عميل أغلبية كبيرة يعرضك لخطرٍ متزايد من الشطب في حال حدوث خلل في هذا العميل. تشغيل عميل أقلية يخفض هذا الخطر بشكلٍ كبير. + +تعرّف على المزيد حول سبب أهمية تنوع العملاء + + + +على الرغم من أنه يمكن استخدام خادم افتراضي خاص (VPS) كبديل للأجهزة المنزلية، فإن الوصول المادي وموقع عميل برنامج المدقق الخاص بك يُعد أمرًا مهمًّا. تتيح الحلول السحابية المركزية مثل Amazon Web Services أو Digital Ocean عدم الاضطرار إلى شراء الأجهزة وتشغيلها، لكن ذلك يكون على حساب مركزية الشبكة. + +كلما زاد عدد عملاء برامج المدقق الذين يستخدمون حل تخزين سحابي مركزي واحد، زاد الخطر على هؤلاء المستخدمين. أي حدث يؤدي إلى عدم اتصال مزودي الخدمات هؤلاء بالإنترنت، إما عن طريق التعرض لهجوم أو نتيجة مطالب تنظيمية أو بسبب انقطاع بالكهرباء أو الإنترنت، سيؤدي إلى توقف كل عميل برنامج مدقق يعتمد على هذا الخادم لعدم الاتصال بالإنترنت في الوقت نفسه. + +علمًا أن عقوبات الانقطاع عن الإنترنت تزداد مع ازدياد عدد العملاء الآخرين المنقطعين عن الإنترنت. استخدم سيرفرًا خاصًّا افتراضيًّا يزيد من خطر عقوبات الانفصال عن الإنترنت ويجعلها أكثر قسوةً، ويزيد من عرضتكم لتسرب تربيعي أو خصم إذا كان الانقطاع عن الإنترنت واسع النطاق لدرجة كافية. ولتقليل المخاطر التي تتعرض لها والتي تتعرض لها الشبكة، فإننا ننصح بشدة أن يشتري المستخدمون أجهزتهم الخاصة وتشغيلها. + + + + +تتطلب عمليات السحب من أي نوع من سلاسل المنارة تعيين بيانات اعتماد السحب. + +يقوم المراهنون الجدد بتعيين هذه البيانات في وقت إنشاء المفاتيح وإيداعها. يمكن للمراهنين الحاليين الذين لم يسبق لهم تعيين هذه البيانات، تحديث مفاتيحهم لدعم هذه الوظيفة. + +بعد تعيين بيانات اعتماد السحب، سيتم توزيع مدفوعات المكافآت (عملات ETH المتراكمة التي تزيد على 32) بصورة دورية في عنوان السحب تلقائيًّا. + +لفتح رصيدك واسترداده بالكامل، عليك أيضًا إكمال عملية الخروج من برنامج المدقق. + +مزيد من المعلومات حول عمليات السحب المتعلقة بالمراهنات + + +## قراءة إضافية {#further-reading} + +- [مشكلة تنوع عملاء إيثريوم](https://hackernoon.com/ethereums-client-diversity-problem) - _@emmanuelawosika 2022_ +- [تقديم المساعدة بخصوص تنوع العملاء](https://www.attestant.io/posts/helping-client-diversity/) - _Jim McDonald 2022_ +- [تنوع العملاء في طبقة إجماع الآراء الخاصة بإيثريوم](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) - _jmcook.eth 2022_ +- [كيفية: التسوق لشراء أجهزة برنامج مدقق إيثريوم](https://www.youtube.com/watch?v=C2wwu1IlhDc) - _EthStaker 2022_ +- [بتعليمات مفصلة: كيفية الانضمام إلى شبكة تجريب إيثريوم 2.0](https://kb.beaconcha.in/guides/tutorial-eth2-multiclient) - _Butta_ +- [نصائح لتفادي التعرض للشطب من Eth2](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50) - _Raul Jordan 2020_ diff --git a/src/content/translations/ar/staking/withdrawals/index.md b/src/content/translations/ar/staking/withdrawals/index.md new file mode 100644 index 00000000000..c151cf2569c --- /dev/null +++ b/src/content/translations/ar/staking/withdrawals/index.md @@ -0,0 +1,217 @@ +--- +title: عمليات سحب تجميد العملات +description: ملخص الصفحة عن ماهية دفع عمليات سحب المراهنة، آلية عملها، والإجراءات التي يحتاج المراهنون إلى اتخاذها للحصول على مكافأتهم +lang: ar +template: staking +image: ../../../../../assets/staking/leslie-withdrawal.png +alt: ليزلي فرس النهر مع مكافأتها من المراهنة +sidebarDepth: 2 +summaryPoints: + - ساعد تحديث Shanghai/Capella على تمكين سحب المراهنة على إيثريوم + - يجب أن يقدم مشغلو برنامج المدقق عنوان السحب لتمكين هذه الخاصية + - يتم توزيع المكافآت تلقائيًّا كل بضعة أيام + - سيحصل المدققون الذين يخرجون من نظام المراهنة كليًّا على كامل رصيدهم المتبقي +--- + + +تم تمكين خاصية سحب المراهنة بفضل تحديث Shanghai/Capella الذي حدث في 12 أبريل 2023.  مزيد من المعلومات عن هذا التحديث + + +تشير **عمليات سحب المراهنة** إلى تحويل عملة ETH من حساب المدقق على طبقة إجماع إيثريوم (سلسلة المنارة) إلى طبقة التنفيذ حيث يمكن تداوله. + +**مدفوعات مكافآت الرصيد الفائض** للمدققين المساهمين بأكثر من 32 ETH سيتم إرسالها بشكل تلقائي ومنتظم إلى عنوان السحب المرتبط بكل مدقق، بمجرد أن يقدم المستخدم هذه العناوين. بإمكان المستخدمين أيضًا **الخروج من نظام المراهنة كليًّا**، بشكلٍ يتيح فتح قفل كامل رصيدهم كمدققين. + +## مكافآت المراهنة {#staking-rewards} + +تتم معالجة مدفوعات المكافآت لكافة حسابات المدققين النشطة والتي تمتلك رصيدًا ساريًا من رصيد 32 ETH. + +لا يساهم أي رصيد يتجاوز 32 ETH يتم ربحه من خلال المكافآت حقًّا في عملية الإيداع الأساسية، ولا يزيد من وزن المدقق في الشبكة، ولذلك يتم سحبها تلقائيًّا كدفعات مكافآت كل بضعة أيام. باستثناء الحاجة إلى توفير عنوان سحب لمرة واحدة، لا يتطلب استلام المكافآت أن يتخذ مشغل برنامج المدقق أي إجراء. يتم تنفيذ كافة هذه الإجراءات على طبقة الإجماع، لذلك لا توجد حاجة إلى رسوم غاز (رسوم معاملات) في أي خطوة. + +### كيف قطعنا هذا الشوط حتى وصلنا إلى هنا؟ {#how-did-we-get-here} + +على مدار السنوات الماضية، أجرت إيثريوم عدة تحديثات للشبكة، لتنتقل إلى شبكة يتم تأمينها بعملة ETH نفسها، بدلًا من عمليات تعدين مستهلكة للكهرباء كما كان الأمر في السابق. تُعرف المشاركة في طبقة الإجماع في إيثريوم الآن بالمراهنة، حيث يحجز المشاركون طوعيًّا كمية من عملة ETH، ويودعونها "للمراهنة"، للتمتع بإمكانية المشاركة في الشبكة. سيحصل المستخدمون الذين يتبعون القواعد على المكافآت، في حين سيتعرض المستخدمون الذين يحاولون الغش لعقوبات. + +منذ إطلاق عقد إيداع المراهنة في نوفمبر 2020، قام بعض رواد إيثريوم الشجعان بحجز أموالهم لتفعيل "برامج المدققين"، والحسابات الخاصة تمتلك الحق في المساهمة بالتحقق من الكتل واقتراحها، وفقًا لقواعد الشبكة. + +قبل تحديث Shanghai/Capella، لم تتمكن من استخدام عملة ETH التي تمت مراهنتها أو الوصول إليها. أما الآن، فيمكنك اختيار استلام مكافآتك بشكلٍ تلقائي لحسابٍ من اختيارك، وبإمكانك أيضًا سحب عملة ETH التي تمت مراهنتها متى شئت. + +### كيف يمكنني التحضير؟ {#how-do-i-prepare} + + + +### إشعارات مهمة {#important-notices} + +يلزم توفير عنوان للسحب لأي حساب مدقق قبل أن يصبح مؤهلاً لسحب عملة ETH من رصيده. + + + يمكن تخصيص عنوان سحب واحد فقط لكل حساب مدقق ولمرة واحدة فقط. بمجرد اختيار العنوان وإرساله إلى طبقة الإجماع، لا يمكن التراجع عن هذا الإجراء أو التغيير. تحقق جيدًا من ملكية ودقة العنوان الذي تم تقديمه قبل الإرسال. + + +لا يوجد أي تهديد على رصيدكم في الوقت الحالي في حال عدم تقديم عنوان سحب، بافتراض أن عبارة الأصل الذاكرة الخاصة بك لا تزال محفوظة بمكانٍ آمن بدون اتصال بالإنترنت، ولم يتم اختراقها بأي طريقة. سيؤدي عدم توفير عنوان سحب ببساطة إلى تراكم عملة ETH في حساب المدقق الخاص بك حتى يتم تقديم عنوان للسحب. + +## الخروج من نظام المراهنة بالكامل {#exiting-staking-entirely} + +يلزم توفير عنوان للسحب _قبل_ أن يصبح من الممكن تحويل أي رصيد من حساب المدقق. + +على المستخدمين الذين يريدون الخروج بالكامل من نظام المراهنة بالكامل وسحب كامل رصيدهم أن يوقعوا وينشروا رسالة "الانسحاب الطوعي" باستخدام مفاتيح المدقق التي ستبدأ عملية الخروج من نظام المراهنة. يتم إجراء ذلك باستخدام عميل المدقق الخاص بكم وإرساله عبر عقدة إجماع الآراء، ولا تتطلب العملية أي رسوم غاز. + +تستغرق عملية خروج مدقق من المراهنة فترات مختلفة من الزمن، حسب عدد المدققين الآخرين الذين يخرجون من المراهنة في نفس الوقت. بمجرد إتمام عملية الخروج، لن يعود هذا الحساب مسؤولًا عن أداء واجبات مدققي الشبكة، ويصير غير مؤهل للحصول على المكافآت، ولا يمتلك عملة ETH "قيد المراهنة". عند هذه المرحلة، ستتم الإشارة إلى الحساب على أنه "قابل للسحب" بالكامل. + +بمجرد أن تتم الإشارة إلى الحساب على أنه "قابل للسحب"، وبعد أن يتم تقديم بيانات اعتماد السحب، لا يتبقى أي شيء بإمكان المستخدم فعله سوى الانتظار. يتم فحص الحسابات بشكل تلقائي ومستمر من قبل مقدمي مقترحات الكتل للأموال المؤهلة التي تم الخروج منها، وسيتم تحويل رصيد حسابك بالكامل (المعروف أيضًا باسم "السحب الكامل") خلال عملية الفحص التالية. + +## متى يتم تمكين عمليات سحب المراهنة؟ {#when} + +أصبحت عمليات سحب المراهنة مفعلة! تم تفعيل وظيفة السحب كجزء من تحديث Shanghai/Capella التي حدثت في 12 أبريل 2023. + +ساعد تحديث Shanghai/Capella على تفعيل عملة ETH التي تمت مراهنتها سابقًا ليتم استردادها إلى حسابات إيثريوم عادية. أدى هذا إلى إغلاق حلقة السيولة، وجعلت إيثريوم تقترب خطوة واحدة من رحلتها نحو بناء نظام بيئي لا مركزي مستدام وقابل للتطوير وآمن. + +- [مزيد من المعلومات عن تاريخ إيثريوم](/history/) +- [مزيد من المعلومات عن خريطة طريق إيثريوم](/roadmap/) + +## ما هي آلية عمل مدفوعات السحب؟ {#how-do-withdrawals-work} + +يتم تحديد كون المدقق المحدد مؤهلاً للسحب أو لا من خلال حالة حساب المدقق نفسه. لا توجد إدخالات مستخدم مطلوبة في أي وقت ليحدد هل يجب أن يبدأ الحساب عملية سحب أم لا - تتم العملية كلها تلقائيًّا من خلال طبقة الإجماع في حلقة مستمرة. + +### أتريد المزيد من المعلومات المرئية؟ {#visual-learner} + +اطلع على هذا الشرح لعمليات سحب مراهنة الإيثيريوم من Finematics: + + + +### "فحص" المدقق {#validator-sweeping} + +عندما يتم جدولة مدقق ما لاقتراح الكتلة المقبلة، يلزم إنشاء قائمة انتظار للسحب، تصل إلى 16 عملية سحب مؤهلة. يتم إجراء ذلك من خلال البدء في الأساس بمؤشر المدقق 0، وتحديد أن هناك سحبًا مؤهلاً لهذا الحساب وفقًا لقواعد البروتوكول أو لا، وإضافته إلى قائمة الانتظار إن وجد. سيتابع المدقق الذي تم تعيينه لاقتراح الكتلة التالية من حيث توقفت الكتلة الأخيرة، ويتقدم بالترتيب إلى أجل غير مسمى. + + +فكر في الساعة التناظرية. يشير عقرب الساعة إلى الساعات، يتحرك باتجاهٍ واحد ولا يتخطى أي ساعة، ويعيد دورته مرة أخرى بعد أن يصل إلى الرقم الأخير.

    +الآن بدلاً من 1 إلى 12، تخيل أن الساعة تحتوي على 0 إلى N(إجمالي عدد حسابات المدقق التي تم تسجيلها على الإطلاق في طبقة إجماع الآراء، أكثر من 500000 ابتداءً من يناير 2023).

    . يشير عقرب الساعة إلى المدقق التالي الذي يجب التحقق من أهليته لعمليات السحب. يبدأ عند 0، ويتقدم على طول الطريق دون تخطي أي حسابات. عندما يتم بلوغ آخر مدقق، تعود الدورة للبدء مرة أخرى. +
    + +#### التحقق من أهلية حساب لعمليات السحب {#checking-an-account-for-withdrawals} + +بينما يفحص مقدم العرض المدقق عمليات السحب المحتملة، يتم تقييم كل مدقق يتم فحصه مقابل سلسلة قصيرة من الأسئلة لتحديد وجوب بدء السحب أو عدم وجوبه، وإذا كان الأمر كذلك، فما مقدار عملة ETH التي يجب سحبها. + +1. **هل تم توفير عنوان للسحب؟**، في حالة عدم توفير عنوان سحب، يتم تخطي الحساب دون بدء عملية سحب. +2. **هل خرج المدقق من المراهنة وأصبح قابلًا للسحب؟** إذا خرج المدقق كليًّا، فقد وصلنا إلى المرحلة التي يعتبر فيها حسابهم "قابلاً للسحب"، ثم ستتم معالجة السحب الكامل. سيؤدي ذلك إلى تحويل كامل الرصيد المتبقي إلى عنوان السحب. +3. **هل بلغ الرصيد الساري ذروته عند 32؟**، إذا كان الحساب يتضمن بيانات اعتماد السحب، ولم يتم الخروج منه بالكامل، ولديه مكافآت تزيد على 32 قيد الانتظار، فستتم معالجة السحب الجزئي الذي ينقل فقط المكافآت التي تزيد على 32 إلى عنوان السحب الخاص بالمستخدم. + +هناك إجراءان فقط يتم اتخاذهما من قبل مشغلي برنامج المدقق في أثناء دورة حياة المدقق وهو ما يؤثر في هذا التدفق بشكل مباشر: + +- توفير بيانات اعتماد السحب لإتاحة أي شكل من أشكال السحب +- الخروج من الشبكة، وهو ما سيؤدي إلى تحفيز سحب كامل + +### بدون رسوم للغاز {#gas-free} + +يتجنب هذا النهج في عمليات سحب المراهنة مطالبة المراهنين بتقديم معاملة يدويًّا تطلب سحب مبلغ معين من عملة ETH. هذا يعني أنه **لا توجد رسوم غاز (رسوم معاملات) مطلوبة**، وأن عمليات السحب لا تتنافس على الخروج من حيز كتلة طبقة التنفيذ. + +### ما هو عدد المرات التي سأحصل فيها على مكافآت المراهنة الخاصة بي؟ {#how-soon} + +يمكن معالجة 16 عملية سحب كحد أقصى في كتلة واحدة. وبهذا المعدل، يمكن معالجة 115,200 عملية سحب للمدقق يوميًّا (بافتراض عدم وجود خانات مفقودة). كما هو مذكور أعلاه، سيتم تخطي المدققين الذين لا يمتلكون عمليات سحب مؤهلة، وهو ما يقلل من الوقت اللازم لإنهاء عملية الفحص. + +وبتوسيع هذه العملية الحسابية، يمكننا تقدير الوقت الذي ستستغرقه معالجة عدد معين من عمليات السحب: + + + +| عدد عمليات السحب | الوقت المتخذ لإتمامها: | +| :--------------: | :--------------------: | +| 400,000 | 3.5 أيام | +| 500,000 | 4.3 أيام | +| 600,000 | 5.2 أيام | +| 700,000 | 6.1 أيام | +| 800,000 | 7.0 أيام | + + + +وكما هو موضح، فإن هذا يتباطأ مع وجود المزيد من المدققين على الشبكة. قد تؤدي زيادة الخانات المفقودة إلى إبطاء هذا بشكل متناسب، ولكن هذا سيمثل عمومًا الجانب الأبطأ من النتائج المحتملة. + +## أسئلة مكررة {#faq} + + +لا، إن عملية تقديم بيانات اعتماد السحب هي عملية يتم إجراؤها مرة واحدة، ولا يمكن تغييرها بمجرد إرسالها. + + + +من خلال تعيين عنوان سحب طبقة التنفيذ، تم تغيير بيانات اعتماد السحب الخاصة بهذا المدقق بشكل دائم. وهذا يعني أن بيانات الاعتماد القديمة لن تعمل بعد الآن، وسيتم توجيه بيانات الاعتماد الجديدة إلى حساب طبقة التنفيذ. + +يمكن أن تكون عناوين السحب إما عقدًا ذكيًّا (يتم التحكم فيه بواسطة النص البرمجي الخاص به)، أو حسابًا مملوكًا خارجيًّا (EOA، يتم التحكم فيه بواسطة مفتاح خاص). في الوقت الحالي، لا تمتلك هذه الحسابات طريقة لتوصيل رسالة مرة أخرى إلى طبقة إجماع الآراء التي من شأنها أن تشير إلى تغيير في بيانات اعتماد المدقق، ثم إن إضافة هذه الوظيفة من شأنها أن تضيف تعقيدًا غير ضروري إلى البروتوكول. + +كحل بديل لتغيير عنوان السحب لمدقق معين، يمكن للمستخدمين اختيار تعيين عقد ذكي كعنوان السحب الخاص بهم يمكنه التعامل مع تدوير المفاتيح، مثل الخزنة. يمكن للمستخدمين الذين خصصوا أموالهم لـ EOA الخاص بهم إجراء خروج كامل لسحب جميع أموالهم التي تمت مراهنتها، ثم إعادة المراهنة باستخدام بيانات اعتماد جديدة. + + + + +إذا كنت جزءًا من تجمع الرهان أو تحمل رموز المراهنة المميزة، يجب عليك الرجوع إلى موفر الخدمة الخاص بك للحصول على مزيد من التفاصيل حول كيفية التعامل مع عمليات سحب المراهنة، حيث تعمل كل خدمة بشكل مختلف. + +بشكل عام، يجب أن يتمتع المستخدمون بالحرية في استعادة عملة ETH الأساسية الخاصة بهم التي تمت مراهنتها، أو تغيير موفر خدمة المراهنة الذي يستخدمونه. إذا أصبح عدد مجمع معين كبيرًا جدًّا، فيمكن الخروج من الأموال واستردادها وإعادة رهنها مع موفر خدمة أصغر. أو، إذا جمعت ما يكفي من عملة ETH، فيمكنك المراهنة من المنزل. + + + + +أجل، ما دام المدقق قام بتوفير عنوان السحب. يجب توفير العنوان مرة واحدة لإتاحة أي عمليات سحب في البداية، ثم سيتم تشغيل دفعات المكافآت تلقائيًّا كل بضعة أيام مع كل عملية فحص للمدقق. + + + + +لا، إذا كان برنامج المدقق لا يزال نشطًا على الشبكة، فلن يتم السحب الكامل تلقائيًّا. يتطلب ذلك بدء عملية خروج طوعي يدويًّا. + +بمجرد أن يكمل المدقق عملية الخروج، وبافتراض أن الحساب يتضمن بيانات اعتماد للسحب، سيتم بعد ذلك سحب الرصيد المتبقي أثناء عملية فحص المدقق التالية. + + + + +تم تصميم عمليات السحب بحيث يتم دفعها تلقائيًّا، ونقل أي عملة ETH لا تساهم بشكل فعال في المراهنة. وهذا يشمل الأرصدة الكاملة للحسابات التي أكملت عملية الخروج. + +يتعذَّر طلب سحب كميات مُحدّدة من ETH يدويًّا. + + + + +يُنصح مشغلو برامج المدقق بزيارة صفحة منصة تشغيل عمليات سحب المراهنة حيث ستعثر على مزيد من التفاصيل حول إعداد المدقق لعمليات السحب. الاستعدادات، توقيت الأحداث، والمزيد من التفاصيل حول آلية عمل وظيفة عمليات السحب. + +لتجربة إعدادك على شبكة تجريب أولًا، تفضّل بزيارة منصة تشغيل المراهنة على شبكة جورلي التجريبية للبدء. + + + + +لا. بمجرد خروج برنامج المدقق وسحب الرصيد بالكامل، سيتم تحويل أي أموال إضافية تم إيداعها في برنامج المدقق هذا تلقائيًّا إلى عنوان السحب أثناء عملية فحص المدقق التالية. لإعادة مراهنة عملة ETH، يجب تفعيل مدقق جديد. + + +## قراءة إضافية {#further-reading} + +- [منصة تشغيل عمليات سحب المراهنة](https://launchpad.ethereum.org/withdrawals) +- [EIP-4895: إجراءات السحب المدفوعة من سلسلة المنارة كعمليات](https://eips.ethereum.org/EIPS/eip-4895) +- [رعاة القطط في إيثريوم - شانغاهاي](https://www.ethereumcatherders.com/shanghai_upgrade/index.html) +- [PEEPanEIP #94: سحب عملة ETH التي تمت مراهنتها (تجريبي) مع Potuz & Hsiao-Wei Wang](https://www.youtube.com/watch?v=G8UstwmGtyE) +- [PEEPanEIP#68: EIP-4895: إجراءات السحب المدفوعة من سلسلة المنارة كعمليات مع Alex stokes](https://www.youtube.com/watch?v=CcL9RJBljUs) +- [فهم الرصيد الساري لبرنامج المدقق](https://www.attestant.io/posts/understanding-validator-effective-balance/) diff --git a/src/content/translations/ca/energy-consumption/index.md b/src/content/translations/ca/energy-consumption/index.md index 0254da4e48d..c5837a81a8f 100644 --- a/src/content/translations/ca/energy-consumption/index.md +++ b/src/content/translations/ca/energy-consumption/index.md @@ -36,7 +36,7 @@ Així com a mecanisme de construcció de confiança en la prova de participació ![imatge](energy_use_per_transaction.png) -

    Estimació del consum energètic de la prova de treball per tx utilitzada en una figura en base a les dades de maig de 2021, al moment d'escriure la mateixa font suggeria un consum de fins a 175,56 kWh

    +

    Estimació del consum energètic de la prova de treball per tx utilitzada en una figura en base a les dades de maig de 2021, al moment d'escriure la mateixa font suggeria un consum de fins a 175,56 kWh

    Comparem aquests nombres amb un servei com ara Visa. 100.000 transaccions de Visa utilitzen 149 kWh d'energia[^2]. Assumint que la fragmentació o «sharding» s'ha implementat, la tasa actual de transaccions d'Ethereum (15 transaccions per segon) s'incrementaria al menys en 64 vegades (el nombre de «shards»), sense comptabilitzar les optimitzacions adicionals dels «rollups». Una estimació realista per a un Ethereum posfusió i fragmentat amb «rollups» és de [25.000 - 100.000](https://twitter.com/VitalikButerin/status/1312905884549300224?s=20) transaccions per segon. Podem utilitzar aquesta informació per a estimar una quantitat màxima i mínima de consum energètic per cada 100.000 transaccions. @@ -62,7 +62,7 @@ _També hem de tenir en compte que Ethereum no està limitat a simples transacci Mentre que el consum energètic d'Ethereum històricament ha estat substancial, hi ha hagut una gran inversió en temps de desenvolupament i intel·lecte en la transició des d'una validació de bloc més àvida d'energia a una més energèticament eficient. Citant [Bankless](http://podcast.banklesshq.com/), la millor forma de reduir l'energia consumida mitjançant la prova de treball és simplement «desconectant-la», que és l'aproximació que Ethereum s'ha proposat fer. - Si creieu que aquestes afirmacions són incorrectes o poden ser més exactes, plantegeu un problema o una PR. Són estimacions fetes per l'equip d'ethereum.org utilitzant informació accessible públicament i l'actual mapa d'Ethereum. Aquestes afirmacions no representen una promesa oficial des de la Fundació Ethereum. + Si creieu que aquestes afirmacions són incorrectes o poden ser més exactes, plantegeu un problema o una PR. Són estimacions fetes per l'equip d'ethereum.org utilitzant informació accessible públicament i l'actual mapa d'Ethereum. Aquestes afirmacions no representen una promesa oficial des de la Fundació Ethereum. ## Llegir-ne més {#further-reading} diff --git a/src/content/translations/de/community/code-of-conduct/index.md b/src/content/translations/de/community/code-of-conduct/index.md new file mode 100644 index 00000000000..a8cb0f0031b --- /dev/null +++ b/src/content/translations/de/community/code-of-conduct/index.md @@ -0,0 +1,75 @@ +--- +title: Verhaltenskodex +description: Die grundlegenden Standards, die wir für alle Bereiche von ethereum.org anstreben. +lang: de +--- + +## Mission {#mission} + +Die Entwicklung und Pflege der umfassendsten und barrierefreien Wissensplattform für Ethereum. + +## Werte {#values} + +Die ethereum.org-Community strebt nach folgenden Werten: + +- Lehrreich, um jedem zu helfen, Ethereum zu verstehen +- Inklusiv +- Barrierefrei +- Community-basiert +- Fokussiert auf die Ethereum zugrunde liegende Technologie und Anwendungsfälle +- Fokussiert auf Ethereum-Konzepte und -Gestaltungsprinzipien + +## Was wir nicht sind {#what-we-are-not} + +- Die Website der Ethereum Foundation +- Eine Plattform zur Werbung für Investitionen oder Gewinnstreben jeglicher Art +- Eine Plattform zur Förderung oder Unterstützung einzelner Projekte oder Organisationen +- Eine DEX, CEX oder eine andere Form von Finanzplattform +- Eine Plattform, die finanzielle oder rechtliche Beratung jeglicher Art anbietet + +## Verhaltenskodex {#code-of-conduct} + +### Versprechen {#pledge} + +Offene Beteiligung ist der Kern des Ethos von ethereum.org. Wir sind eine Website und eine Community, die von Tausenden von Mitwirkenden unterhalten wird. Und das ist nur möglich, wenn wir ein einladendes, partizipatives Umfeld aufrechterhalten. Zu diesem Zweck verpflichten sich die Mitwirkenden dieser Website, eine Umgebung frei von Belästigung für alle Teilnehmenden auf allen ethereum.org-Plattformen und den Community-Bereichen zu schaffen. Die ethereum.org-Community begrüßt und schätzt jeden, der sich konstruktiv und freundlich beteiligen möchte, unabhängig von Alter, Behinderung, ethnischer Zugehörigkeit, Geschlechtsmerkmalen, geschlechtlicher Identität, Erfahrungsstand, Fachgebiet, Bildung, sozioökonomischem Status, Nationalität, persönlichem Aussehen, Rasse, Religion oder anderen Aspekten der Vielfalt. + +### Geltungsbereich {#scope} + +Dieser Verhaltenskodex gilt für alle ethereum.org-Bereiche (wie z. B. GitHub, Discord, Figma Crowdin, Twitter und andere Online-Plattformen). Er gilt auch, wenn die Gemeinschaft in der realen Welt in der Öffentlichkeit vertreten ist, wie z. B. bei Meetings, Konferenzen und Veranstaltungen. + +### Unsere Standards {#our-standards} + +Beispiele für Verhaltensweisen, die ein positives Umfeld fördern: + +- Verwendung einer einladenden und integrativen Sprache +- Respekt gegenüber unterschiedlichen Standpunkten und Erfahrungen +- Konstruktive Kritik akzeptieren und/oder einfühlsam äußern +- Ruhiges und professionelles Verhalten bei der Lösung von Konflikten oder Meinungsverschiedenheiten +- Einfühlungsvermögen und Toleranz gegenüber anderen Mitgliedern der Gemeinschaft zeigen +- Ermutigung und Verstärkung neuer Stimmen in der Gemeinschaft + +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. +- 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 +- Social Engineering, Scamming oder sonstige Manipulation anderer Community-Mitglieder +- Werbung für Investitionen, Token, Projekte oder andere Dinge zum persönlichen, finanziellen oder nicht-monetären Vorteil +- Spamming von Servern mit themenfremden Inhalten +- Missachtung von Aufforderungen oder Warnungen der Community-Moderatoren +- Anderes Verhalten, das in einem professionellen Umfeld als unangemessen angesehen werden könnte + +### Meldung {#reporting} + +Verstöße gegen den Verhaltenskodex werden in der Regel für die Community sichtbar, da wir versuchen, alles in offenen bzw. öffentlichen Kanälen zu kommunizieren, damit die Community-Mitglieder sich selbst überprüfen können. + +Wenn jedoch etwas passiert, das Ihrer Meinung nach Aufmerksamkeit erfordert, können Sie es einer Person melden, die eine Moderationsrolle innehat (z. B. dem Discord-Guide), damit diese bei der Untersuchung helfen und die angemessene Reaktion ausführen kann. + +Wenn Sie etwas melden, geben Sie bitte so viele Details wie möglich an, einschließlich spezifischer Beispiele und Zeitstempel. Das trägt dazu bei, ein faires Ergebnis zu gewährleisten. + +### Durchsetzung {#enforcement} + +Je nach Schwere des Verstoßes können Personen, die gegen den Verhaltenskodex verstoßen, verwarnt bzw. vorübergehend oder dauerhaft aus der ethereum.org-Community verbannt werden. diff --git a/src/content/translations/de/community/get-involved/index.md b/src/content/translations/de/community/get-involved/index.md index 49dd2dfb81d..0e4d4d6ca66 100644 --- a/src/content/translations/de/community/get-involved/index.md +++ b/src/content/translations/de/community/get-involved/index.md @@ -8,6 +8,8 @@ lang: de Die Ethereum-Community besteht aus vielen unterschiedlichen Menschen mit verschiedensten Hintergründen und Fähigkeiten. Egal, ob Programmierer, Künstler oder Buchhalter, es gibt immer Wege, sich zu beteiligen. Im Folgenden finden Sie eine Liste mit Vorschlägen, die Sie vielleicht dabei unterstützt, durchzustarten. +Machen Sie sich zunächst mit der Mission und den Grundsätze von ethereum.org in unserem [Verhaltenskodex](/community/code-of-conduct) vertraut. + ## Entwickler {#developers} - Erfahren Sie mehr über Ethereum auf [ethereum.org/developers/](/developers/) @@ -21,14 +23,24 @@ Die Ethereum-Community besteht aus vielen unterschiedlichen Menschen mit verschi ## Wissenschaftler und Akademiker {#researchers-and-academics} -Haben Sie einen Hintergrund in Mathematik, kryptographie oder Wirtschaft? Vielleicht interessieren Sie sich für einige der bahnbrechenden Arbeiten, die im Ethereum-Ökosystem durchgeführt werden. - +Haben Sie einen Hintergrund in Mathematik, Kryptographie oder Wirtschaftswissenschaften? Vielleicht interessieren Sie sich für einige der innovativen Arbeiten, die im Ethereum-Ökosystem durchgeführt werden: + +- 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**. + 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. + - Beteiligen Sie sich an der [EIP-Verwaltung](https://github.com/ethereum-cat-herders/EIPIP). + - Trete dem [Ethereum Cat Herders Discord](https://discord.io/EthCatHerders) bei + - [Mehr zu EIPs](/eips/) - [Challenges.ethereum.org](https://challenges.ethereum.org/) – eine Reihe hochwertiger Forschungsprämien, bei denen Sie >100.000 USD verdienen können - [Ethresear.ch](https://ethresear.ch) – Ethereums primäres Forum für Forschung und das weltweit einflussreichste Forum für Kryptoökonomie -- [EF Research AMA](https://old.reddit.com/r/ethereum/comments/vrx9xe/ama_we_are_ef_research_pt_8_07_july_2022) – Eine fortlaufende Q&A-Reihe mit Forschern. Während sich die weiteren Teile öffnen, können alle Fragen stellen. +- [EF Research AMA](https://old.reddit.com/r/ethereum/comments/vrx9xe/ama_we_are_ef_research_pt_8_07_july_2022) – Eine fortlaufende Q&A-Reihe mit Wissenschaftlern. Während sich die weiteren Teile öffnen, können alle Fragen stellen. - [Wunschliste des Ethereum Ecosystem-Supportprogrramms](https://esp.ethereum.foundation/wishlist/) – Forschungsbereiche, für die das Ethereum Ecosystem-Supportprogramm aktiv Förderer sucht -[Erkunden Sie mehr aktive Forschungsbereiche](/community/research/). +[Erkunden Sie weitere aktive Forschungsbereiche](/community/research/). ## Nicht-technische Kompetenzen {#non-technical} @@ -122,3 +134,5 @@ Das Ethereum-Ökosystem hat es sich zur Aufgabe gemacht, das Allgemeinwohl und w - [ΜΓΔ](https://metagammadelta.com/) (Meta Gamma Delta) [@metagammadelta](https://twitter.com/metagammadelta) – _Von Frauen geführte Projekte_ - [MolochDAO](https://molochdao.com) [@MolochDAO](https://twitter.com/MolochDAO) – _Gemeinschaft zur Finanzierung der Entwicklung von Ethereum_ - [Raid-Gilde](https://raidguild.org) [@RaidGuild](https://twitter.com/RaidGuild) – _Kollektiv von Web3-Erstellern_ + +Denken Sie daran, sich an den [Verhaltenskodex](/community/code-of-conduct) von ethereum.org zu halten, wann und wie auch immer Sie zu ethereum.org beitragen. diff --git a/src/content/translations/de/community/grants/index.md b/src/content/translations/de/community/grants/index.md index b535a3f9223..03ad25bd0f7 100644 --- a/src/content/translations/de/community/grants/index.md +++ b/src/content/translations/de/community/grants/index.md @@ -35,10 +35,11 @@ Diese Projekte haben ihre eigenen Zuschüsse für Projektvorhaben zur Entwicklun - [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/)-Gemeinschaft_ -- [Web3 Zuschüsse](https://web3grants.net) – _Eine umfangreiche Liste von Web3/Krypto verwandten Förderungsprogrammen_ +- [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_ ## Quadratische Finanzierung {#quadratic-funding} diff --git a/src/content/translations/de/community/online/index.md b/src/content/translations/de/community/online/index.md index 139a5f76ff3..856eb9ee2d0 100644 --- a/src/content/translations/de/community/online/index.md +++ b/src/content/translations/de/community/online/index.md @@ -24,7 +24,7 @@ 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-Entwickler Ethereum-Hacker - Von ETHGlobal geführter Discord Chat: Eine Online-Gemeinschaft für Ethereum-Hacker auf der ganzen Welt CryptoDevs - Auf Ethereum Entwicklung fokussierte Discord-Community -EthStaker Discord - Gemeinschaft orientiert am Angebot von Projekt-Management-Unterstützung für Ethereum-Entwickler +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 Matos 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) diff --git a/src/content/translations/de/community/research/index.md b/src/content/translations/de/community/research/index.md new file mode 100644 index 00000000000..d5243bc92ae --- /dev/null +++ b/src/content/translations/de/community/research/index.md @@ -0,0 +1,396 @@ +--- +title: Aktive Bereiche Ethereum-Forschung +description: Machen Sie sich mit den verschiedenen Bereichen der offenen Forschung vertraut und erfahren Sie, wie auch Sie sich beteiligen können. +lang: de +--- + +# Aktive Bereiche Ethereum-Forschung {#active-areas-of-ethereum-research} + +Eine der Stärken von Ethereum ist, dass die aktive Forschung und die Entwickler-Community fortlaufend Verbesserungen hervorbringen. Viele begeisterte und kompetente Menschen aus aller Welt würden sich gerne bei aktuellen Problemstellungen rund um Ethereums einbringen. Doch es ist nicht immer einfach, herauszufinden, was diese Probleme sind. Auf dieser Seite finden Sie die wichtigsten aktiven Forschungsgebiete. So erhalten Sie einen groben Überblick über den neuesten Stand bei Ethereum. + +## So funktioniert die Forschung rund um Ethereum {#how-ethereum-research-works} + +Die Forschung um Ethereum ist offen und transparent, sie setzt auf die Grundsätze der [dezentralisierten Wissenschaft (DeSci)](https://hackernoon.com/desci-decentralized-science-as-our-chance-to-recover-the-real-science). Die Idee ist, Forschungswerkzeuge und Ergebnisse so offen und interaktiv wie möglich zu gestalten. Zum Beispiel durch ausführbare Notizhefte. Die Forschung um Ethereum entwickelt sich schnell. Neue Erkenntnisse werden offen in Foren wie [ethresear.ch](https://ethresear.ch/) veröffentlicht und diskutiert, anstatt über traditionelle Veröffentlichungen nach wiederholten Peer-Überprüfungen an die Community heranzutreten. + +## Allgemeine Forschungsressourcen {#general-research-resources} + +Unabhängig vom konkreten Thema gibt es viele Informationen zur Forschung um Ethereum. Sie können sie auf [ethresear.ch](https://ethresear.ch) und dem Discord-Kanal [ETH R&D](https://discord.gg/qGpsxSA) finden. Das sind die Orte, an denen die Ethereum-Forscher die neuesten Ideen und Entwicklungsmöglichkeiten diskutieren. + +Dieser Bericht wurde im Mai 2022 von [DelphiDigital](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum) veröffentlicht. Darin finden Sie einen guten Überblick über die Roadmaps von Ethereums. + +## Finanzierungsquellen {#sources-of-funding} + +Sie können sich auf entgeltlicher Basis an der Forschung um Ethereum beteiligen. Zum Beispiel hat die [Ethereum Foundation](/foundation/) kürzlich eine [Academic Grants-Finanzierungsrunde](https://esp.ethereum.foundation/academic-grants) betrieben. Sie finden Informationen zu aktiven und kommenden Finanzierungsmöglichkeiten auf [der Ethereum-Finanzierungsseite](/community/grants/). + +## Protokollforschung {#protocol-research} + +Protokollforschung beschäftigt sich mit der Grundebene von Ethereum – der Regeln, die definieren wie sich Knoten verbinden, miteinander kommunizieren, sich untereinander austauschen und die Daten von Ethereum speichern. Sie kommt zu einem Konsens zum aktuellen Stand der Blockchain. Protokollforschung wird auf oberster Ebene in zwei Kategorien geteilt: Konsens und Ausführung. + +### Konsensmechanismus {#consensus} + +Konsensforschung beschäftigt sich mit dem [Proof-of-Stake-Mechanismus von Ethereum](/developers/docs/consensus-mechanisms/pos/). Einige Beispiele zu Konsensforschungsgebieten: + +- Schwachstellen identifizieren und beheben; +- Die kryptoökonomische Sicherheit quantifizieren; +- Die Sicherheit oder Leistung bei der Implementierung der Klienten verbessern; +- Leichte Clients entwickeln. + +Genau wie zukunftsorientierte Forschung, werden einige fundamentale Neugestaltungen des Protokolls, wie beispielsweise die Entgültigkeit von Einzelslots (Single Slot Finality) genau erforscht, damit signifikante Verbesserungen für Ethereum möglich sind. Außerdem sind auch Effizienz, Sicherheit und Überwachung von Peer-to-Peer-Netzwerken zwischen Konsens-Clients wichtige Forschungsbereiche. + +#### Hintergrundinformationen {#background-reading} + +- [Einführung zu Proof-of-Stake](/developers/docs/consensus-mechanisms/pos/) +- [Casper-FGG Artikel](https://arxiv.org/abs/1710.09437) +- [Erläuterungen zu Casper-FGG](https://arxiv.org/abs/1710.09437) +- [Gasper Artikel](https://arxiv.org/abs/2003.03052) + +#### Aktuelle Forschung {#recent-research} + +- [Ethresear.ch – Konsens](https://ethresear.ch/c/consensus/29) +- [Barrierefreiheit-/Endgültigkeitskonflikt](https://arxiv.org/abs/2009.04987) +- [Einzelplatzfinalität (single slot finality)](https://ethresear.ch/t/a-model-for-cumulative-committee-based-finality/10259) +- [Proposer-Builder-Trennung](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance) + +### Ausführung {#execution} + +Die Ausführungsebene beschäftigt sich mit dem Ausführen von Transaktionen, dem Betrieb der [virtuellen Ethereum-Maschine (EVM)](/developers/docs/evm/) und dem Generieren von Ausführung-Payload zum Weiterleiten an die Ausführungsebene. Es gibt viele Bereiche der aktiven Forschung, dazu gehören: + +- Unterstützung von leichten Clients etablieren; +- Gas-Limits untersuchen; +- und neue Datenstrukturen (z. B. Verkle-Bäume) etablieren. + +#### Hintergrundinformationen {#background-reading-1} + +- [Einführung in EVM](/developers/docs/evm) +- [Ethresear.ch – Ausführungsebene](https://ethresear.ch/c/execution-layer-research/37) + +#### Aktuelle Forschung {#recent-research-1} + +- [Datenbankoptimierungen](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/db_faq.md) +- [Zustandsverfall](https://notes.ethereum.org/@vbuterin/state_expiry_eip) +- [Wege zum Zustandsverfall](https://hackmd.io/@vbuterin/state_expiry_paths) +- [Vorschläge für Verkel- und Zustandsverfall](https://notes.ethereum.org/@vbuterin/verkle_and_state_expiry_proposal) +- [Verlaufsmanagement](https://eips.ethereum.org/EIPS/eip-4444) +- [Verkle-Bäume](https://vitalik.ca/general/2021/06/18/verkle.html) +- [Datenverfügbarkeits-Sampling](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding) + +## Client-Entwicklung {#client-development} + +Ethereum-Clients sind Implementationen des Ethereum-Protokolls. Die Entwicklung von Clients ist die Realisierung der Ergebnisse der Protokollforschung, indem sie in diese Clients einfließen. Entwicklung von Klienten beinhaltet das Aktualisieren der Spezifikationen der Klienten und das Bauen von spezifischen Implementationen. + +Ein Ethereum-Knoten wird gebraucht, um zwei verschiedene Arten von Software zu betreiben: + +1. einen Konsens-Client, um den Kopf der Blockchain zu verfolgen, Blöcke zu kommunizieren und die Konsenslogik zu verarbeiten +2. einen Ausführungs-Client, um die virtuelle Ethereum-Maschine (EVM) zu unterstützen und Transaktionen sowie Smart Contracts auszuführen + +Auf der Seite für [Knoten und Clients](/developers/docs/nodes-and-clients/) finden Sie weitere Informationen zu Knoten und Clients und eine Liste aller derzeitigen Client-lmplementierungen. Sie können auch den Verlauf aller Ethereum-Aktualisierungen auf der [Verlaufsseite](/history/) finden. + +### Clients auf Ausführungsebene {#execution-clients} + +- [Spezifikation zu Clients auf Ausführungsebene](https://github.com/ethereum/execution-specs) +- [Ausführungs-API-Spezifikationen](https://github.com/ethereum/execution-apis) + +### Konsens-Clients {#consensus-clients} + +- [Spezifikationen zu Konsens-Clients](https://github.com/ethereum/consensus-specs) +- [Beacon API-Spezifikationen](https://ethereum.github.io/beacon-APIs/#/Beacon/getStateRoot) + +## Skalierung und Leistung {#scaling-and-performance} + +Das Skalieren von Ethereum ist ein äußerst wichtiger Forschungsbereich für Ethereum. Die aktuellen Ansätze beschäftigen sich damit, Transaktionen und Rollups auszulagen und diese so günstig wie möglich zu machen. Einführende Informationen zur Skalierung von Ethereum sind auf unserer [Skalierungsseite](/developers/docs/scaling) verfügbar. + +### Layer 2 {#layer-2} + +Es gibt jetzt mehrere Ebene-2-Protokolle, die Ethereum skalieren und verschiedene Techniken für die Stapelverarbeitung von Transaktionen nutzen und sie auf der Ebene 1 von Ethereum sichern. Bei diesem Thema gibt es eine rasante Entwicklung, mit viel Forschungs- und Entwicklungspotenzial. + +#### Hintergrundinformationen {#background-reading-2} + +- [Einführung in Ebene 2](/layer-2/) +- [Polynya: Rollups, DA und Modellketten](https://polynya.medium.com/rollups-data-availability-layers-modular-blockchains-introductory-meta-post-5a1e7a60119d) + +#### Aktuelle Forschung {#recent-research-2} + +- [Arbitrums faire-Ordnung von Sequenzern](https://eprint.iacr.org/2021/1465) +- [ethresear.ch – Ebene 2](https://ethresear.ch/c/layer-2/32) +- [Rollup-zentrierter Fahrplan (Roadmap)](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) +- [L2Beat](https://l2beat.com/) + +### Bridges {#bridges} + +Die sicheren und leistungsfähigen Brücken sind ein bestimmter Bereich der Ebene 2, für den mehr Forschung und Entwicklung erforderlich ist. Das beinhaltet Brücken zwischen einigen der Ebenen 2 und Brücken zwischen Ebene 1 und Ebene 2. Dieser Forschungsbereich ist besonders wichtig, da Angreifer sich häufig auf Brücken konzentrieren. + +#### Hintergrundinformationen {#background-reading-3} + +- [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]() + +#### Aktuelle Forschung {#recent-research-3} + +- [Brücken validieren](https://stonecoldpat.github.io/images/validatingbridges.pdf) + +### Sharding {#sharding} + +Das Sharding war auf der Ethereum-Blockchain lange Teil des Entwicklungs-Fahrplans. Jedoch gibt es neue Lösungsansätze, wie das "Danksharding", die zur Zeit im Mittelpunkt stehen. + +#### Hintergrundinformationen {#background-reading-4} + +- [Hinweise zu Proto-Danksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq) +- [Bankless Danksharding – Video](https://www.youtube.com/watch?v=N5p0TB77flM) +- [Sharding auf Ethereum – Forschungskompendium](https://notes.ethereum.org/@serenity/H1PGqDhpm?type=view) +- [Danksharding (Polynya)](https://polynya.medium.com/danksharding-36dc0c8067fe) + +#### Aktuelle Forschung {#recent-research-4} + +- [EIP-4844: Proto-Danksharding](https://eips.ethereum.org/EIPS/eip-4844) +- [Vitalik zu Sharding und Datenverfügbarkeits-Sampling](https://hackmd.io/@vbuterin/sharding_proposal) + +### Hardware {#hardware} + +[Das Betreiben von Knoten](/developers/docs/nodes-and-clients/run-a-node/) auf einfacher Hardware ist unabdingbar für die Dezentralisierung von Ethereum. Deshalb muss aktiv geforscht werden, um die Voraussetzungen an die Hardware für das Betreiben von Knoten abzubauen. + +#### Hintergrundinformationen {#background-reading-5} + +- [Ethereum on ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/) + +#### Aktuelle Forschung {#recent-research-5} + +- [ecdsa zu FGPAs](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738) + +## Sicherheit {#security} + +Sicherheit ist ein großes Thema, das Spam-/Scam-Prävention, Sicherheit der Wallets, Hardwaresicherheit, krypto-ökonomische Sicherheit, Fehlersuche und das Testen der Client-Software und der Schlüsselverwaltung beinhaltet. Erkenntnisse in diesem Bereichen zu fördern, wird dabei helfen, dass die Bereitschaft zur Annahme in der Öffentlichkeit gefördert wird. + +### Kryptografie und ZKP {#cryptography--zkp} + +Zero-Knowledge-Proofs (ZKP) und Kryptographie sind entscheident, wenn es dabei geht Privatsphäre und Sicherheit auf Ethereum und für die Anwendungen zu etablieren. Zero-Knowledge (Null-Wissen) ist eine relativ junge aber sich schnell entwickelnde Umgebung mit vielen offenen Forschungs- und Entwicklungsmöglichkeiten. Dazu gehört die Entwicklung von effizienteren Implementationen des [Keccak-Hashing-Algorithmus](https://hackmd.io/sK7v0lr8Txi1bgION1rRpw?view#Overview), die Suche nach polynomialen Verpflichtungen, die besser sind als die aktuell bestehenden, und die Senkung der Kosten für die Erstellung öffentlicher ecdsa-Schlüssel und die Verifikation von Signaturen. + +#### Hintergrundinformationen {#background-reading-6} + +- [0xparc-Blog](https://0xparc.org/blog) +- [zkp.science](https://zkp.science/) +- [Zero Knowledge-Podcast](https://zeroknowledge.fm/) + +#### Aktuelle Forschung {#recent-research-6} + +- [Aktuelle Neuerungen der elliptischen Kurvenkryptografie](https://ethresear.ch/t/the-ec-fft-algorithm-without-elliptic-curve-and-isogenies/11346) +- [Ethresear.ch ZK](https://ethresear.ch/c/zk-s-nt-arks/13) + +### Wallets {#wallets} + +Ethereum-Wallets können Browsererweiterungen, Desktop- und Handyapps oder Smart Contracts auf Ethereum sein. Es gibt auch aktive Forschung, die sich mit der sozialen Wiederherstellung von Wallets und dem Risiko in Zusammenhang mit der Schlüsselverwaltung von individuellen Nutzern befasst. Verbunden mit der Wallet-Entwicklung ist die Forschung für alternative Formen der Kontoabstraktion, was ein wichtiges zukünftiges Forschungsfeld ist. + +#### Hintergrundinformationen {#background-reading-7} + +- [Einführung in Wallets](/wallets/) +- [Einführung in die Wallet-Sicherheit](/security/) +- [ethresear.ch – Sicherheit](https://ethresear.ch/tag/security) +- [EIP-2938-Kontenabstraktion](https://eips.ethereum.org/EIPS/eip-2938) +- [EIP-4337-Kontenabstraktion](https://eips.ethereum.org/EIPS/eip-4337) + +#### Aktuelle Forschung {#recent-research-7} + +- [Validation, die sich mit Smart Contract-Wallets befasst](https://ethereum-magicians.org/t/validation-focused-smart-contract-wallets/6603) +- [Die Zukunft von Konten](https://ethereum-magicians.org/t/validation-focused-smart-contract-wallets/6603) +- [EIP-3074 AUTH- und AUTHCALL-Opcodes](https://eips.ethereum.org/EIPS/eip-3074) +- [Code an einer EOA-Adresse veröffentlichen](https://eips.ethereum.org/EIPS/eip-5003) + +## Community, Bildung und Reichweite {#community-education-and-outreach} + +Damit sich neue Nutzer mit Ethereum vertraut machen können, braucht es informative Ressourcen und Ansätze, um Reichweite zu schaffen. Das gehören Blog-Veröffentlichungen und Artikel, Bücher, Podcasts, Memes, lehrreiche Ressourcen und sonstige Ressourcen, die das Entstehen von Communitys fördern, für Einsteiger hilfreich sind und die Öffentlichkeit über Ethereum informiert. + +### UX/UI {#uxui} + +Um mehr Menschen für Ethereum zu begeistern, muss das Ökosystem die UX/UI verbessern. Dafür braucht es Designer und Produktexperten, die das Design von Wallets und anderen Anwendungen überarbeiten. + +#### Hintergrundinformationen {#background-reading-8} + +- [Ethresear.ch – UX/UI](https://ethresear.ch/c/ui-ux/24) + +#### Aktuelle Forschung {#recent-research-8} + +- [Web3 – Design-Discord](https://discord.gg/FsCFPMTSm9) +- [Web3 – Designgrundsätze](https://www.web3designprinciples.com/) +- [Ethereum Magicians – UX-Diskussionen](https://ethereum-magicians.org/t/og-council-ux-follow-up/9032/3) + +### Wirtschaft {#economics} + +Die wirtschaftliche Forschung rund um Ethereum verfolgt im Großen und Ganzen zwei Ansätze: das Validieren der Sicherheitsmechanismen, die abhängig von wirtschaftlichen Anreizen ("microeconomics") sind, und das Analysieren des Werteflusses zwischen Protokollen, Anwendungen und Nutzern ("macroeconomics"). Es gibt komplexe krypto-ökonomische Faktoren, die mit dem nativen Vermögenswert von Ethereum (Ether) und den darauf aufbauenden Token (z. B. NFTs und ERC20-Token) zusammenhängen. + +#### Hintergrundinformationen {#background-reading-9} + +- [Durchdachte Anreizgruppe](https://ethereum.github.io/rig/) +- [ETHconomics-Workshop auf Devconnect](https://www.youtube.com/playlist?list=PLTLjFJ0OQOj5PHRvA2snoOKt2udVsyXEm) + +#### Aktuelle Forschung {#recent-research-9} + +- [Empirische Analyse von EIP1559](https://arxiv.org/abs/2201.05574) +- [Balance in der zirkulierenden Versorgung](https://ethresear.ch/t/circulating-supply-equilibrium-for-ethereum-and-minimum-viable-issuance-during-the-proof-of-stake-era/10954) +- [Quantifizierung von MEV: Wie dunkel ist der Wald?](https://arxiv.org/abs/2101.05511) + +### Blockräume und Gebührenmärkte {#blockspace-fee-markets} + +Blockraum-Märkte regeln die Aufnahme von Endnutzertransaktionen, entweder direkt auf Ethereum (Ebene 1) oder auf überbrückten Netzwerken, wie zu Beispiel Rollups (Ebene 2). Auf Ethereum werden Transaktionen zum Gebührenmarkt im Protokoll als EIP-1599 übermittelt. Das schützt die Blockchain vor Spam und Preisstau. Auf beiden Ebenen könnten Transaktionen externe Veränderungen bedingen, bekannt als maximal extrahierbarer Wert (MEV), die das Potenzial haben, neue Marktstrukturen auszulösen, um solche externen Faktoren zu erfassen oder damit umzugehen. + +#### Hintergrundinformationen {#background-reading-10} + +- [Design des Transaktionsgebührenmechanismus für die Ethereum-Blockchain: eine Wirtschaftsanalyse von EIP-1559 (Tim Roughgarden, 2020)](https://timroughgarden.org/papers/eip1559.pdf) +- [Simulationen von EIP-1559 (Robust Incentives Group)](https://ethereum.github.io/abm1559) +- [Wirtschaftliche Überlegungen aus den wichtigsten Prinzipien übertragen](https://barnabe.substack.com/p/understanding-rollup-economics-from?utm_source=url) +- [Flash Boys 2.0: Frontrunning, Transaktionsneuanordnung und Konsens-Instabilität in dezentralisierten Austauschen](https://arxiv.org/abs/1904.05234) + +#### Aktuelle Forschung {#recent-research-10} + +- [Multidimensionale EIP-1559-Videopräsentation](https://youtu.be/QbR4MTgnCko) +- [Domänenübergreigender MEV](http://arxiv.org/abs/2112.01472) +- [MEV-Auktionen](https://ethresear.ch/t/mev-auction-auctioning-transaction-ordering-rights-as-a-solution-to-miner-extractable-value/6788) + +### Anreize für Proof-of-Stake {#proof-of-stake-incentives} + +Validatoren nutzen Ethereums native Währung (Ether) als Sicherheit gegen unehrliches Verhalten. Die Kryptoökonomien dieses Systems entscheiden über die Sicherheit des Netzwerks. Ausgefeilte Validatoren könnten die Gestaltung der Anreizebene (Incentive Layer) nutzen, um explizite Angriffe zu starten. + +#### Hintergrundinformationen {#background-reading-11} + +- [Masterclass der Wirtschaft Ethereums und das wirtschaftliche Modell](https://github.com/CADLabs/ethereum-economic-model) +- [Simulationen von PoS-Anreizen (Robust Incentives Group)](https://ethereum.github.io/beaconrunner/) + +#### Aktuelle Forschung {#recent-research-11} + +- [Verstärken der Zensurresistenz von Transaktionen mit Proposer/Builder-Unterscheidung (PBS).](https://notes.ethereum.org/s3JToeApTx6CKLJt8AbhFQ) +- [Drei Angriffe auf PoS von Ethereum](https://arxiv.org/abs/2110.10086) + +### Liquid Staking und seine Ableitungen {#liquid-staking-and-derivatives} + +Liquid Staking erlaubt Nutzern mit weniger als 32 ETH Stakingerträge zu erhalten, indem sie Ether mit einem Token austauschen, der gestakte Ether darstellt und in DeFi verwendet werden kann. Jedoch müssen die Anreize und Marktdynamiken, die mit Liquid Staking verbunden werden, erst noch gefunden werden. Es müssen zudem noch die Effekte, diewelche Liquid Staking auf Ethereums Sicherheit (z. B. das Risiko der Zentralisation) hat, gefunden werden. + +#### Hintergrundinformationen {#background-reading-12} + +- [Ethresear.ch – Liquid Staking](https://ethresear.ch/search?q=liquid%20staking) +- [Lido: der Weg zum vertrauenslosen Stakinig auf Ethereum](https://blog.lido.fi/the-road-to-trustless-ethereum-staking/) +- [Rocket Pool: Einführung in das Staking-Protokoll](https://medium.com/rocket-pool/rocket-pool-staking-protocol-part-1-8be4859e5fbd) + +#### Aktuelle Forschung {#recent-research-12} + +- [Abhebungen von Lido abwickeln](https://ethresear.ch/t/handling-withdrawals-in-lidos-eth-liquid-staking-protocol/8873) +- [Zugangsdaten zum Abheben](https://ethresear.ch/t/withdrawal-credential-rotation-from-bls-to-eth1/8722) +- [Die Risiken verbunden mit Ableitungen vom Liquid Staking](https://notes.ethereum.org/@djrtwo/risks-of-lsd) + +## Testing {#testing} + +### Formale Verifizierung {#formal-verification} + +Bei der formalen Verifizierung wird Code geschrieben, um zu überprüfen, ob die Konsensspezifikationen von Ethereum korrekt und fehlerfrei sind. Es gibt eine ausführbare Version der Spezifikation, die in Python geschrieben ist und sowohl Wartung als auch Entwicklung benötigt. Weitere Forschung kann helfen, die Python-Implementierung der Spezifikationen zu verbessern und neue Tools für die sichere Verifizierung von Korrektheit und Identitätsproblemen zu finden. + +#### Hintergrundinformationen {#background-reading-13} + +- [Einführung in die formale Verifizierung](https://ptolemy.berkeley.edu/projects/embedded/research/vis/doc/VisUser/vis_user/node4.html) +- [Formale Verifizierung (Intel)](https://www.cl.cam.ac.uk/~jrh13/papers/mark10.pdf) + +#### Aktuelle Forschung {#recent-research-13} + +- [Formale Verifizierung des Einzahlungsvertrags](https://github.com/runtimeverification/deposit-contract-verification) +- [Formale Verifizierung der Beacon Chain-Spezifikation](https://github.com/runtimeverification/deposit-contract-verification) + +## Datenwissenschaften und Analysen {#data-science-and-analytics} + +Es werden mehr Tools für die Datenanalyse benötigt. Außerdem braucht es mehr detaillierte Informationen zu Aktivität und Zustand des Ethereum-Netzwerks. + +### Hintergrundinformationen {#background-reading-14} + +- [Dune Analytics](https://dune.com/browse/dashboards) +- [Dashboard für Client-Vielfalt](https://clientdiversity.org/) + +#### Aktuelle Forschung {#recent-research-14} + +- [Robust Incentives Group – Datenanalyse](https://ethereum.github.io/rig/) + +## Anwendungen und Tools {#apps-and-tooling} + +Die Anwendungsebene unterstützt ein diverses Ökosystem von Programmen, die Transaktionen auf der Grundebene von Ethereum regeln. Entwicklungsteams finden durchgehend neue Wege, Ethereum zu nutzen, um zusammensetzbare, berechtigungsfreie und zensurresistente Versionen von wichtigen Web2-Anwendungen oder komplett neue Web3-native Konzepte zu erstellen. Zu selben Zeit werden neue Tools entwickelt, die den Bau von dApps auf Ethereum weniger komplex machen. + +### DeFi {#defi} + +Dezentralisierte Finanzen (DeFi) ist eine der Hauptanwendungen, die auf Ethereum aufbauen. DeFi versucht zusammensetzbare "Geld-Legosteine" zu erstellen, mit denen Nutzer Krypto-Vermögenswerte mit der Hilfe von Smart Contracts übertragen, ausleihen oder investieren können. DeFi ist eine Bereich, der sich rasant entwickelt. Forschung in sichere, effiziente und zugängliche Protokolle wird durchgehend gebraucht. + +#### Hintergrundinformationen {#background-reading-15} + +- [DeFi](/defi/) +- [Coinbase: Was ist DeFi?](https://www.coinbase.com/learn/crypto-basics/what-is-defi) + +#### Aktuelle Forschung {#recent-research-15} + +- [Dezentralisierte Finanzen, zentralisierte Besitztümer?](https://arxiv.org/pdf/2012.09306.pdf) +- [Optimismus: der Weg zu Transaktionen eines Unterdollars (Sub-Dollar)](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) + +### DAOs {#daos} + +Ein bedeutender Anwendungsbereich von Ethereum ist die Fähigkeit, sich in einer dezentralisierten Art, durch die Nutzung von DAOs, zu organisieren. Es wird intensiv daran geforscht, wie DAOs auf Ethereum entwickelt und genutzt werden können, um die Möglichkeiten als Koordinationsinstrument zu nutzen, das mit minimalem Vertrauen arbeiten kann. So lassen sich die Möglichkeiten der Menschen über die traditionellen Unternehmen und Organisationen hinaus erheblich erweitern. + +#### Hintergrundinformationen {#background-reading-16} + +- [Einführung in DAOs](/dao/) +- [Dao-Kollektiv](https://daocollective.xyz/) + +#### Aktuelle Forschung {#recent-research-16} + +- [Kartierung des Ökosystems von Dezentralisierten autonomen Organisationen (DAOs)](https://www.researchgate.net/publication/358694594_Mapping_out_the_DAO_Ecosystem_and_Assessing_DAO_Autonomy) + +### Entwicklertools {#developer-tools} + +Die Tools für Ethereum-Entwickler verbessern sich rasant. In diesem Bereich gibt es eine aktive Forschung und Entwicklung. + +#### Hintergrundinformationen {#background-reading-17} + +- [Tools nach Programmiersprache](/developers/docs/programming-languages/) +- [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} + +- [Eth- und Discord-Kanal zur Tool-Bereitstellung für die Konsensebene](https://discordapp.com/channels/595666850260713488/746343380900118528) + +### Oracles {#oracles} + +Orakel importieren Off-Chain-Daten in die Blockchain in einer genehmigungsfreien und dezentralen Art und Weise. Diese Daten auf die Chain zu bekommen, schafft für dApps die Grundlage, auf Phänomene aus der echten Welt umzugehen. Dazu gehören Preisveränderungen von Besitztümern der echten Welt, Ereignisse auf Off-Chain-Apps oder sogar Wetterveränderungen. + +#### Hintergrundinformationen {#background-reading-18} + +- [Einführung in Orakel](/developers/docs/oracles/) + +#### Aktuelle Forschung {#recent-research-18} + +- [Umfrage zu Blockchain-Orakeln](https://arxiv.org/pdf/2004.07140.pdf) +- [Whitepaper eines Chain-Links](https://chain.link/whitepaper) + +### App-Sicherheit {#app-security} + +Bei Angriffen auf Ethereum werden meist Schwachstellen von individuellen Anwendungen und nicht Schwachstellen des Protokolls selbst genutzt. Angreifer und Anwendungsentwickler sind dabei in einem Aufrüstungsduell um neue Angriffs- und Verteidigungsmöglichkeiten gefangen. Das bedeutet, dass es immer wichtige Forschung und Entwicklung benötigt, um Anwendungen vor Angriffen zu schützen. + +#### Hintergrundinformationen {#background-reading-19} + +- [Ausnutzungsbericht eines Wurmlochs (Wormhole)](https://blog.chainalysis.com/reports/wormhole-hack-february-2022/) +- [Liste von Angriffen auf Ethereum-Verträge – Post Mortem](https://forum.openzeppelin.com/t/list-of-ethereum-smart-contracts-post-mortems/1191) +- [Rekt News](https://twitter.com/RektHQ?s=20&t=3otjYQdM9Bqk8k3n1a1Adg) + +#### Aktuelle Forschung {#recent-research-19} + +- [ethresear.ch – Anwendungen](https://ethresear.ch/c/applications/18) + +### Technologie-Stack {#technology-stack} + +Den gesamten Technologie-Stack von Ethereum zu dezentralisieren, ist ein wichtiger Forschungsbereich. Derzeit weisen dApps auf Ethereum für gewöhnlich eine Form der Zentralisierung auf, da sie sich auf zentralisierte Werkzeuge oder Infrastruktur verlassen müssen. + +#### Hintergrundinformationen {#background-reading-20} + +- [Ethereum-Stack](/developers/docs/ethereum-stack/) +- [Coinbase: Einführung zum Web3-Stack](https://blog.coinbase.com/a-simple-guide-to-the-web3-stack-785240e557f0) +- [Einführung in Smart Contracts](/developers/docs/smart-contracts/) +- [Einführung in dezentralisierte Speicher](/developers/docs/storage/) + +#### Aktuelle Forschung {#recent-research-20} + +- [Smart-Contract-Kombinierbarkeit](/developers/docs/smart-contracts/composability/) diff --git a/src/content/translations/de/community/support/index.md b/src/content/translations/de/community/support/index.md index b227564e5f9..8f3fd3c2db9 100644 --- a/src/content/translations/de/community/support/index.md +++ b/src/content/translations/de/community/support/index.md @@ -43,6 +43,7 @@ Erstellen kann durchaus schwer sein. Hier finden Sie einige Breiche mit Schwerpu - [Ethereum StackExchange](https://ethereum.stackexchange.com/) - [StackOverflow](https://stackoverflow.com/questions/tagged/web3) - [Web3 University](https://www.web3.university/) +- [LearnWeb3](https://discord.com/invite/learnweb3) In unserem Bereich mit [Ethereum-Entwicklerressourcen](/developers/) finden Sie auch Dokumentationen und Entwicklungsleitfäden. @@ -64,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.gg/ethstaker) +- [EthStaker-Discord](https://discord.io/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/src/content/translations/de/contributing/adding-desci-projects/index.md b/src/content/translations/de/contributing/adding-desci-projects/index.md new file mode 100644 index 00000000000..2d5091c7a30 --- /dev/null +++ b/src/content/translations/de/contributing/adding-desci-projects/index.md @@ -0,0 +1,44 @@ +--- +title: DeSci-Projekte hinzufügen +description: Richtlinien, die wir beim Hinzufügen von Links zu Projekten auf der DeSci-Seite auf ethereum.org verwenden +lang: de +--- + +# Projekte hinzufügen {#adding-projects} + +Wir möchten sicherstellen, dass wir eine Vielzahl von Projekten zeigen und einen guten Überblick über die DeSci-Landschaft geben. + +Es steht jedem frei, ein Projekt vorzuschlagen, das auf der DeSci-Seite auf ethereum.org gelistet werden soll. Ebenso kann jeder, dem ein Projekt auffällt, das nicht mehr relevant ist oder unsere Auswahlkriterien nicht mehr erfüllt, vorschlagen, dass es entfernt wird. + +## Der Entscheidungsrahmen {#the-decision-framework} + +### Aufnahmekriterien: die Must-haves {#the-must-haves} + +- **Open Source Code/data** – Die Transparenz von Code und Daten ist ein zentrales DeSci-Prinzip, daher dürfen DeSci-Projekte grundsätzlich nicht Closed Source sein. Die Codebasis sollte zugänglich und idealerweise offen für PRs sein. +- **DeSci-Projekte sollten nachweislich dezentralisiert sein** – Das könnte bedeuten, dass sie von einer DAO verwaltet werden oder dass sie mit einem dezentralen Tech-Stack einschließlich nicht-pfändbarer Wallets aufgebaut werden. Dabei handelt es sich höchstwahrscheinlich um prüfbare Smart Contracts auf Ethereum. +- **Ehrliche und genaue Angaben**: Es wird erwartet, dass alle vorgeschlagenen Projektangebote ehrliche und genaue Angaben enthalten. Produkte, die falsche Angaben machen, z. B. Ihr Produkt als "Open Source" deklarieren, obwohl es das nicht ist, werden entfernt. +- **Nachweisliches Engagement für die Erweiterung des Zugangs zur Wissenschaft** – Ein DeSci-Projekt sollte in der Lage sein, darzulegen, wie es die Teilnahme an der Wissenschaft auf die breite Öffentlichkeit ausweitet, nicht nur auf Inhaber von Token/NFT. +- **Global zugänglich** – Ihr Projekt hat keine geografischen Einschränkungen oder KYC-Anforderungen, die bestimmte Personen vom Zugang zu Ihrer Dienstleistung ausschließen. +- **Informative Website und Dokumentation** – Es ist wichtig, dass die Besucher der Projektwebsite verstehen können, was das Projekt eigentlich tut, wie es zur Dezentralisierung der wissenschaftlichen Infrastruktur beiträgt und wie sie sich beteiligen können. +- **Das Projekt sollte Teil des Ethereum-Ökosystems sein** – Bei ethereum.org glauben wir, dass Ethereum (und seine Layer 2) die geeignete Basis für die DeSci-Bewegung ist. +- **Das Projekt ist relativ gut etabliert** – Das Projekt hat echte Nutzer, die seit einigen Monaten auf die Dienste des Projekts zugreifen können. + +### Nice-to-Haves + +- **Verfügbar in mehreren Sprachen** – Ihr Projekt wird in mehrere Sprachen übersetzt, so dass Nutzer in aller Welt darauf zugreifen können. +- **Lehrmittel** – Ihr Produkt sollte über ein gut gestaltetes Onboarding-Erlebnis bieten, um den Benutzern zu helfen und sie zu informieren. Alternativ sind Informationen zu Lerninhalten wie Artikel oder Videos hilfreich. +- **Überprüfungen durch Dritte** – Ihr Produkt wurde von einer vertrauenswürdigen dritten Partei professionell auf Schwachstellen geprüft. +- **Kontaktstelle** – Eine Kontaktstelle für das Projekt (z. B. ein Vertreter einer DAO oder einer Gemeinschaft) hilft uns sehr, genaue Informationen zu erhalten, wenn Änderungen vorgenommen werden. Somit bleibt die Aktualisierung von ethereum.org bei der Erfassung künftiger Informationen überschaubar. + +## Wartung {#maintenance} + +Ethereum befindet sich in der Entwicklung. Daher kommen und gehen Teams und Produkte und Innovationen finden täglich statt, so dass wir unsere Inhalte regelmäßig überprüfen: + +- sicherstellen, dass alle aufgelisteten Projekte weiterhin unsere Kriterien erfüllen +- Überprüfen, ob Produkte vorgeschlagen wurden, die unsere Kriterien besser erfüllen als die derzeit aufgeführten + +Ethereum.org wird von der Open-Source-Community gepflegt; wir sind auf die Hilfe der Community angewiesen, um diese Seite auf dem neuesten Stand zu halten. Wenn Sie bemerken, dass Informationen zu den aufgelisteten Projekten aktualisiert werden müssen, öffnen Sie bitte ein Ticket oder einen Pull-Request in unserem Github-Repository. + +## Nutzungsbedingungen {#terms-of-use} + +Bitte beachten Sie auch unsere[Nutzungsbedingungen](/terms-of-use/). Die Informationen auf ethereum.org werden ausschließlich zu allgemeinen Informationszwecken bereitgestellt. diff --git a/src/content/translations/de/contributing/adding-developer-tools/index.md b/src/content/translations/de/contributing/adding-developer-tools/index.md index 55193892fa5..80a3592005b 100644 --- a/src/content/translations/de/contributing/adding-developer-tools/index.md +++ b/src/content/translations/de/contributing/adding-developer-tools/index.md @@ -56,6 +56,6 @@ Sofern die Produkte nicht ausdrücklich anders geordnet sind, z. B. alphabetisch Wenn Sie ein Entwicklertool zu ethereum.org hinzufügen möchten, das die Kriterien erfüllt, erstellen Sie einen Eintrag auf GitHub. - + Ticket erstellen diff --git a/src/content/translations/de/contributing/adding-exchanges/index.md b/src/content/translations/de/contributing/adding-exchanges/index.md index cb6384396bd..db9479568ec 100644 --- a/src/content/translations/de/contributing/adding-exchanges/index.md +++ b/src/content/translations/de/contributing/adding-exchanges/index.md @@ -35,6 +35,6 @@ Außerdem sind diese Informationen die Grundlage, dass ethereum.org darauf vertr Wenn Sie eine Börse zu ethereum.org hinzufügen möchten, erstellen Sie einen Eintrag auf GitHub. - + Ein Thema erstellen diff --git a/src/content/translations/de/contributing/adding-glossary-terms/index.md b/src/content/translations/de/contributing/adding-glossary-terms/index.md index c6b3a6bef34..96a378257d0 100644 --- a/src/content/translations/de/contributing/adding-glossary-terms/index.md +++ b/src/content/translations/de/contributing/adding-glossary-terms/index.md @@ -23,4 +23,4 @@ Die Bewertungen euer Glossarbegriffe erfolgt anhand der folgenden Kriterien: ## Ihren Begriff hinzufügen {#how-decisions-about-the-site-are-made} -Wenn Sie einen Glossarbegriff zu ethereum.org hinzufügen möchten und er die Kriterien erfüllt, [erstellen Sie einen Eintrag auf GitHub](https://github.com/ethereum/ethereum-org-website/issues/new?template=suggest_glossary_term.md). +Wenn Sie einen Glossarbegriff zu ethereum.org hinzufügen möchten und er die Kriterien erfüllt, [erstellen Sie einen Eintrag auf 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/src/content/translations/de/contributing/adding-layer-2s/index.md b/src/content/translations/de/contributing/adding-layer-2s/index.md index 1693580f96f..f2c463427bf 100644 --- a/src/content/translations/de/contributing/adding-layer-2s/index.md +++ b/src/content/translations/de/contributing/adding-layer-2s/index.md @@ -8,7 +8,7 @@ lang: de Wir möchten sicherstellen, dass die bestmöglichen Ressourcen vorhanden sind, damit Benutzer sich sicher und informiert in der Ebene 2 bewegen können. -Jeder kann vorschlagen, eine Ebene 2 auf ethereum.org hinzuzufügen. Wenn es eine Ebene 2 gibt, die wir vergessen haben, **[schlagen Sie sie gerne vor](https://github.com/ethereum/ethereum-org-website/issues/new?&template=suggest_layer2.md).** +Jeder kann vorschlagen, eine Ebene 2 auf ethereum.org hinzuzufügen. Wenn es eine Layer 2 gibt, die wir vergessen haben, **[schlagen Sie sie gerne vor](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_layer2.yaml).** Wir listen derzeit L2s auf den folgenden Seiten auf: @@ -50,6 +50,8 @@ _Wir betrachten andere Skalierungslösungen, die nicht Ethereum für Datenverfü **Datum der Inbetriebnahme des Projekts** +- Eine Layer 2, die seit über 6 Monaten auf dem Mainnet "live" ist + - Neuere Projekte, die noch nicht von Nutzern getestet wurden, werden seltener aufgeführt. **Externes Sicherheitsaudit** @@ -90,6 +92,6 @@ _Wir betrachten andere Skalierungslösungen, die nicht Ethereum für Datenverfü Wenn Sie eine Ebene 2 zu ethereum.org hinzufügen möchten, erstellen Sie einen Eintrag auf GitHub. - + Eintrag erstellen diff --git a/src/content/translations/de/contributing/adding-products/index.md b/src/content/translations/de/contributing/adding-products/index.md index 790117c6266..12e7a4cb218 100644 --- a/src/content/translations/de/contributing/adding-products/index.md +++ b/src/content/translations/de/contributing/adding-products/index.md @@ -1,38 +1,34 @@ --- title: Produkte hinzufügen -description: Richtlinien zum Hinzufügen von Wallets und dApps zu ethereum.org +description: Die Richtlinie, die wir beim Hinzufügen von dApps zu ethereum.org verwenden lang: de --- -_Ein Hinweis zum Hinzufügen von Wallets: Im Rahmen [unserer Q1-Produkt-Roadmap](https://github.com/ethereum/ethereum-org-website/issues/5105) überarbeiten wir unsere Wallets-Seite. Dazu gehört auch eine detailliertere Ausarbeitung der Auflistungskriterien für unsere Wallets-Seite. Solange wir keine übearbeiteten Kriterien für die Auflistung von Wallets recherchiert, festgelegt und veröffentlicht haben, werden aktiv keine neuen Wallets auf der Website hinzugefügt._ - # Ethereum-Produkte hinzufügen {#adding-products} -Jedem steht es frei, an geeigneter Stelle neue Wallets und dApps für den Inhalt von ethereum.org vorzuschlagen. **Nein, wir werden Ihre dApp nicht auf unserer Homepage auflisten** 😜 +Jedem steht es frei, neue dApps für den Inhalt von ethereum.org vorzuschlagen, insofern das angemessen ist. **Nein, wir werden Ihre dApp nicht auf unserer Homepage auflisten** 😜 -Wallets und dApps werden aktuell auf folgenden Seiten gelistet: +dApps sind derzeit hier aufgelistet: -- ethereum.org/wallets -- ethereum.org/wallets/find-wallet - ethereum.org/dapps - ethereum.org/get-eth -**Schlagen Sie neue Ergänzungen nur auf diesen Seiten vor.** +**Bitte schlagen Sie nur neue Ergänzungen auf diesen Seiten vor.** -Obwohl wir neue Ergänzungen begrüßen, wurden die aktuellen Wallets und dApps im Hinblick auf die Erfahrung ausgewählt, die wir für unsere Nutzerinnen und Nutzer schaffen möchten. Grundlage dafür bilden einige unserer Designprinzipien: +Obwohl wir neue Ergänzungen begrüßen, haben wir die aktuellen Apps auf der Grundlage der Erfahrung ausgewählt, die wir für unsere Nutzer schaffen wollen. Diese beruhen auf einigen unserer Designprinzipien: - _Inspirierend_: Alles, was auf ethereum.org zu finden ist, sollte den Nutzern etwas Neues bieten. - _Eine gute Geschichte_: Das, was aufgelistet ist, sollte einen "Aha"-Moment auslösen. - _Glaubwürdig_: Alle aufgeführten Inhalte sollten legitime Unternehmen/Projekte sein, um das Risiko für die Nutzer zu minimieren. -Insgesamt möchte **ethereum.org ein "nahtloses Einführungserlebnis" für neue Nutzer bieten**. Aus diesem Grund werden folgende Kriterien für das Hinzufügen von Wallets/dApps berücksichtigt: +Insgesamt will **ethereum.org ein "nahtloses Einführungserlebnis" für neue Nutzer/innen bieten**. Aus diesem Grund werden folgende Kriterien für das Hinzufügen von dApps berücksichtigt: - Anwenderfreundlichkeit - Interoperabilität mit anderen Produkten - Sicherheit - Langlebigkeit -Im Folgenden wird der Entscheidungsrahmen ausführlich dargestellt. Sie können uns gerne Feedback geben oder Änderungen vorschlagen. +Hier ist unser Entscheidungsrahmen im Detail. Sie können uns gerne Feedback geben oder Änderungen vorschlagen. ## Der Entscheidungsrahmen {#decision-framework} @@ -45,22 +41,14 @@ Im Folgenden wird der Entscheidungsrahmen ausführlich dargestellt. Sie können ### Kriterien für die Rangfolge: optionale Aspekte {#criteria-for-ranking-the-nice-to-haves} -Auf Grundlage folgender Kriterien wird bestimmt, wie die Listung von dApps oder Wallets auf ethereum.org erfolgt. - -**Wallets** - -- **Fiat on-ramps**: Das verhindert mögliche Störungen, die neue Benutzer mit einer Wallet erleben. Wenn es erforderlich ist, dass Nutzer eine Wallet über eine Börse finanzieren, kann es aufgrund von Prüfungen der Kundenidentität Tage dauern, bis die Wallet nutzbar ist. -- **Unterstützt von der Mehrheit der dApps**: Der Inhalt von ethereum.org zielt darauf ab, dass Nutzer mit einer Wallet und ETH startklar sind, bevor ihnen dApps gezeigt werden. Unterstützen dApps die Verbindung mit Ihrer Wallet nicht, könnte das die Erfahrung stark beeinträchtigen. +Auf Grundlage folgender Kriterien wird bestimmt, wie die Listung von dApps auf ethereum.org erfolgt. **dApps** - **Der Zugriff ist über die meisten gelisteten Wallets möglich**: dApps sollten mit den meisten Wallets funktionieren, die auf ethereum.org gelistet sind. - **Benutzer können es selbst ausprobieren**: Ein einzelner Benutzer sollte Ihre dApp benutzen und ein reales Ergebnis damit realisieren können. - -**Beides** - - **Onboarding**: Ihr Produkt sollte eine gut gestaltete Onboarding-Erfahrung bieten, um den Benutzern zu helfen und sie zu informieren. Alternativ sind Informationen zu Lerninhalten wie Artikel oder Videos hilfreich. -- **Keine Aufbewahrung**: Nutzer kontrollieren Ihr Geld. Wenn Ihr Produkt verschwindet, können die Nutzer weiterhin auf ihr Guthaben zugreifen und es bewegen. +- **Keine Verwahrung**: Nutzer kontrollieren ihr Geld. Wenn Ihr Produkt verschwindet, können die Nutzer weiterhin auf ihr Guthaben zugreifen und es bewegen. - **Global zugänglich**: Ihr Produkt ist nicht mit geografischen Einschränkungen oder KYC-Anforderungen verbunden, die bestimmte Personen vom Zugang zu Ihrer Dienstleistung ausschließen. - **Open Source**: Ihr Code sollte zugänglich sein und Sie sollten PRs von der breiten Gemeinschaft akzeptieren. - **Community**: Sie haben eine eigene Community, vielleicht ein Discord, in der Benutzer mit Ihrem Team interagieren können, wenn sie Hilfe benötigen oder neue Funktionen vorschlagen möchten. @@ -74,17 +62,17 @@ Ein gelistetes Produkt, das nur die "Must-haves" erfüllt, kann gestrichen werde Weitere Aspekte, die bei der Entscheidung eine Rolle spielen: - Wenn Elemente hinzugefügt anstatt ersetzt zu werden, kommt es dann zu einer Beeinträchtigung der Benutzererfahrung? - - Unsere Seite ist vorwiegend gedacht, um Informationen zu Ethereum und den relevanten Konzepte zu bieten. Wenn zu viele Optionen für die Benutzer hinzugefügt werden, leidet darunter die Lesbarkeit und infolge der Nutzen. + - Unsere Seite ist primär dazu gedacht, um Informationen zu Ethereum und den relevanten Konzepten zu bieten. Wenn zu viele Optionen für die Benutzer hinzugefügt werden, leidet darunter die Lesbarkeit und infolge der Nutzen. - Lähmen die Auswahlmöglichkeiten auf der Seite nun die Benutzer? - So wie auf Netflix, wenn Sie stundenlang das ganze Angebot durchgehen, weil Sie sich nicht enscheiden können, was Sie sich anschauen sollen. Es ist riskant, neue Benutzer mit zu viel Auswahl zu verwirren. Das ist eine Designentscheidung, für die ethereum.org verantwortlich ist. -Doch Sie können sich sicher sein, **dass es Links zu anderen Websites geben wird, die weitere dApps/Wallets bewerten** +Aber seien Sie versichert, **dass es Links zu anderen Websites geben wird, die mehr dApps bewerten** ### Produktanordnung {#product-ordering} -Sofern die Produkte nicht ausdrücklich anders geordnet sind, z. B. alphabetisch, werden sie in der Reihenfolge der Hinzufügung angezeigt, von neu nach älter. Die neuesten Produkte erscheinen also am Ende der Liste. +Sofern die Produkte nicht ausdrücklich anders geordnet sind, z. B. alphabetisch, werden sie in der Reihenfolge der Hinzufügung angezeigt, von neu zu alt. Die neuesten Produkte erscheinen also am Ende der Liste. ### Nutzungsbedingungen {#terms-of-use} @@ -94,10 +82,10 @@ Beachten Sie auch unsere [Nutzungsbedingungen](/terms-of-use/). Die Informatione Ethereum befindet sich in der Entwicklung. Daher kommen und gehen Teams und Produkte und Innovationen finden täglich statt, so dass wir unsere Inhalte regelmäßig überprüfen: -- Sicherstellen, dass alle aufgeführten Wallets und Dapps weiterhin unsere Kriterien erfüllen +- sicherstellen, dass alle gelisteten dApps weiterhin unsere Kriterien erfüllen - Überprüfen, ob Produkte vorgeschlagen wurden, die unsere Kriterien besser erfüllen als die derzeit aufgeführten -Sie können uns dabei helfen, indem Sie das hier überprüfen und uns Bescheid geben. [Erstellen Sie ein Ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&projects=&template=feature_request.yaml&title=Feature+request) oder senden Sie eine E-Mail an [website@ethereum.org](mailto:website@ethereum.org). +Sie können uns dabei helfen, indem Sie das hier überprüfen und uns Bescheid geben. [Erstellen Sie ein Ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) oder senden Sie eine E-Mail an [website@ethereum.org](mailto:website@ethereum.org) _Wir untersuchen auch Optionen für Abstimmungen, damit die Community ihre Präferenzen angeben und die besten Produkte hervorheben kann, die wir dann empfehlen können._ @@ -105,8 +93,8 @@ _Wir untersuchen auch Optionen für Abstimmungen, damit die Community ihre Präf ## Ihr Produkt hinzufügen {#add-your-product} -Wenn Sie eine Wallet oder dApp zu ethereum.org hinzufügen möchten und das Produkt die Kriterien erfüllt, erstellen Sie einen Eintrag auf GitHub. +Wenn Sie eine dApp zu ethereum.org hinzufügen möchten und sie die Kriterien erfüllt, erstellen Sie einen Eintrag auf GitHub. - + Eintrag erstellen diff --git a/src/content/translations/de/contributing/adding-staking-products/index.md b/src/content/translations/de/contributing/adding-staking-products/index.md index 0162c5c9d67..7f22df424a2 100644 --- a/src/content/translations/de/contributing/adding-staking-products/index.md +++ b/src/content/translations/de/contributing/adding-staking-products/index.md @@ -8,7 +8,7 @@ lang: de Wir möchten sicherstellen, dass wir die bestmöglichen Ressourcen auflisten und gleichzeitig die Sicherheit und das Vertrauen der Nutzer gewährleisten. -Jeder kann ein Staking-Produkt oder einen Service zur Hinzufügung auf ethereum.org vorschlagen. Wenn wir ein Produkt übersehen haben, **[dann schlagen Sie es bitte vor](https://github.com/ethereum/ethereum-org-website/issues/new?&template=suggest_staking_product.md).** +Jeder kann ein Staking-Produkt oder einen Service zur Hinzufügung auf ethereum.org vorschlagen. Wenn wir ein Produkt übersehen haben, **[dann schlagen Sie es bitte vor](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_staking_product.yaml).** Auf den folgenden Seiten finden Sie eine Liste der Staking-Produkte und Services, die wir derzeit anbieten: @@ -20,7 +20,7 @@ Der Proof-of-Stake wurde am 1. Dezember 2020 auf der Beacon Chain eingeführt. D ## Der Entscheidungsrahmen {#the-decision-framework} -Die Entscheidung, ein Produkt auf ethereum.org zu listen, ist von mehrern Faktoren abhängig. Mehrer Kriterien werden bei der Entscheidung über die Aufnahme eines Produkts oder einer Dienstleistung gemeinsam berücksichtigt. Je mehr dieser Kriterien erfüllt sind, desto wahrscheinlicher ist eine Aufnahme in die Liste. +Die Entscheidung, ein Produkt auf ethereum.org zu listen, ist von mehrern Faktoren abhängig. Mehrer Kriterien werden bei der Entscheidung über die Aufnahme eines Produkts oder einer Dienstleistung gemeinsam berücksichtigt. Je mehr dieser Kriterien erfüllt sind, umso wahrscheinlicher ist eine Aufnahme in die Liste. **Erstens: Um welche Art von Produkt oder Dienstleistung handelt es sich?** @@ -50,6 +50,11 @@ Die eingereichten Staking-Produkte oder Services werden anhand von folgenden Kri - Für welche Schritte der Benutzererfahrung ist es erforderlich, dass Vertrauen in die Menschen gesetzt wird, die entweder die Schlüssel zu ihren Geldern halten oder die Belohnungen richtig verteilen? - Damit wird die "Vertrauenswürdigkeit" des Produkts oder Services ermittelt. +**Liefert das Projekt genaue und zuverlässige Informationen?** + +- Es ist von entscheidender Bedeutung, dass die Website des Produkts aktuelle, genaue und nicht irreführende Informationen enthält, insbesondere wenn sie sich auf das Ethereum-Protokoll oder andere verwandte Technologien beziehen. +- Beiträge, die Fehlinformationen, veraltete Details oder potenziell irreführende Aussagen über Ethereum oder andere relevante Themen enthalten, werden nicht aufgelistet oder werden entfernt, wenn sie bereits aufgelistet sind. + **Welche Plattformen werden unterstützt?** - z. B. Linux, macOS, Windows, iOS, Android @@ -82,35 +87,35 @@ Für jegliche benutzerdefinierte Software oder Smart Contracts: Für Softwareprodukte im Zusammenhang mit der Einrichtung, Verwaltung oder Migration von Nodes oder Clients: -**Welche Konsensebenen-Clients (z. B. Lighthouse, Teku, Nimbus, Prysm) werden unterstützt?** +**Welche Clients auf Konsensebene (d. h. Lighthouse, Teku, Nimbus, Prysm) werden unterstützt?** - Welche Clients werden unterstützt? Kann der Nutzer wählen? - Das wird zur Ermittlung der "Multi-Client"-Bewertung des Produkts verwendet. #### Staking als Service {#staking-as-a-service} -Für [Staking-as-a-Service-Angebote](/staking/saas/) (d. h. delegierter Node-Betrieb): +Für [Staking-as-a-Service-Listings](/staking/saas/) (d. h. delegierter Node-Betrieb): **Wie hoch sind die Gebühren für die Nutzung des Services?** - Wie ist die Gebührenstruktur, gibt es z. B. eine monatliche Gebühr für den Service? -- Gibt es zusätzliche Anforderungen für das Staking? +- Gibt es zusätzliche Staking-Anforderungen? **Müssen sich die Nutzer für ein Konto registrieren?** - Kann jemand den Service ohne Genehmigung oder KYC nutzen? - Auf diese Weise wird der Aspekt der "Berechtigungsfreiheit" für das Produkt bewertet. -**Wer hat die Unterschrifts- und Abhebungsschlüssel?** +**Wer hat die Singatur- und Abhebungsschlüssel?** - Auf welche Schlüssel hat der Benutzer Zugriff? Auf welche Schlüssel hat der Service Zugriff? - Das wird zur Ermittlung der "Vertrauenswürdigkeit" des Produkts herangezogen. -**Wie groß ist die Kundenvielfalt der betriebenen Nodes?** +**Wie groß ist die Kundenvielfalt der betriebenen Knoten?** -- Wie viel Prozent der Validierungsschlüssel werden vorwiegend von einem Client der Konsensebene (CL) ausgeführt? -- Seit der letzten Bearbeitung wird vowiegend Prysm als Konsensebenen-Client von den Node-Betreibern verwendet. Das ist gefährlich für Netzwerk. Wenn ein CL-Client derzeit von mehr als 33 % des Netzes genutzt wird, fordern wir Daten zur Nutzung an. -- Auf dieser Grundlage wird die Bewertung für "Diverse Clients" ermittelt. +- Wie viel Prozent der Validierungsschlüssel werden von einem Client der Konsensebene (CL) ausgeführt? +- Seit der letzten Bearbeitung wird vowiegend Prysm als Konsensebenen-Client von den Knotenbetreibern verwendet. Das ist gefährlich für Netzwerk. Wenn ein CL-Client derzeit von mehr als 33 % des Netzes genutzt wird, fordern wir Daten zur Nutzung an. +- Auf dieser Grundlage wird für das Produkt der Aspekt "Diverse Clients" bewertet. #### Staking-Pool {#staking-pool} @@ -130,16 +135,16 @@ Für [Staking-Services im Pool](/Staking/pools/): - Um welche Token handelt es sich? Wie funktionieren sie? Wie lauten die Vertragsadressen? - Das wird zur Ermittlung der "Liquiditäts-Token"-Bewertung des Produkts verwendet. -**Können Nutzer als Node-Betreiber teilnehmen?** +**Können Nutzer als Knotenbetreiber teilnehmen?** - Was ist erforderlich, um Validator-Clients mit den gepoolten Mitteln zu betreiben? - Ist hierfür die Genehmigung einer Einzelperson, eines Unternehmens oder einer DAO erforderlich? -- Auf diese Weise wird der Aspekt "berechtigungsfreie Nodes" für das Produkts bewertet. +- Auf diese Weise wird der Aspekt "berechtigungsfreie Knoten" für das Produkt bewertet. -**Wie groß ist die Kundenvielfalt bei den Betreibern der Pool-Nodes?** +**Wie groß ist die Kundenvielfalt bei den Betreibern der Poolknoten?** -- Wie viel Prozent der Node-Betreiber verwenden einen Mehrheits-Client der Konsensebene (CL)? -- Seit der letzten Bearbeitung wird vowiegend Prysm als Konsensebenen-Client von den Node-Betreibern verwendet. Das ist gefährlich für Netzwerk. Wenn ein CL-Client derzeit von mehr als 33 % des Netzes genutzt wird, fordern wir Daten zur Nutzung an. +- Wie viel Prozent der Knotenbetreiber verwenden einen Mehrheits-Client der Konsensebene (CL)? +- Seit der letzten Bearbeitung wird vowiegend Prysm als Konsensebenen-Client von den Knotenbetreibern verwendet. Das ist gefährlich für Netzwerk. Wenn ein CL-Client derzeit von mehr als 33 % des Netzes genutzt wird, fordern wir Daten zur Nutzung an. - Auf dieser Grundlage wird für das Produkt der Aspekt "Diverse Clients" bewertet. ### Weitere Kriterien: optionale Aspekte {#other-criteria} @@ -148,7 +153,7 @@ Für [Staking-Services im Pool](/Staking/pools/): - z. B. Browser-Anwendung, Desktop-Anwendung, mobile Anwendung, CLI -**Bietet die Software für das Node-Tooling eine einfache Möglichkeit, zwischen den Clients zu wechseln?** +**Bietet die Software für das Knoten-Tooling eine einfache Möglichkeit, zwischen den Clients zu wechseln?** - Kann der Benutzer mit dem Tool einfach und sicher zwischen Clients wechseln? @@ -166,6 +171,6 @@ Die Codelogik und die Gewichtungen für diese Kriterien sind derzeit in [dieser Wenn Sie ein Staking-Produkt oder einen Staking-Service zu ethereum.org hinzufügen möchten, erstellen Sie einen Eintrag auf GitHub. - + Eintrag erstellen diff --git a/src/content/translations/de/contributing/adding-wallets/index.md b/src/content/translations/de/contributing/adding-wallets/index.md new file mode 100644 index 00000000000..a81b0ebe4fb --- /dev/null +++ b/src/content/translations/de/contributing/adding-wallets/index.md @@ -0,0 +1,75 @@ +--- +title: Wallets hinzufügen +description: Richtlinien, die wir verwenden, wenn wir eine Wallet zu ethereum.org hinzufügen +lang: de +--- + +# Wallets hinzufügen {#adding-wallets} + +Wir wollen sicherstellen, dass wir eine Vielzahl von Wallets zeigen, die die funktionsreiche Landschaft der Wallets abdecken, so dass die Nutzer sich sicher auf Ethereum bewegen können. + +Jeder kann einen Vorschlag zum Hinzufügen einer Wallet auf ethereum.org machen. Sollten wir eine Wallet übersehen haben, schlagen Sie sie bitte vor! + +Jeder kann eine neue Wallet vorschlagen. Wallets sind derzeit hier aufgelistet: + +- [ethereum.org/wallets/find-wallet/](/wallets/find-wallet/) +- [ethereum.org/wallets/](/wallets/) + +Wallets verändern sich auf Ethereum rasch. Wir haben versucht, ein gerechtes Framework für Überlegungen auf ethereum.org zu schaffen. Allerdings werden sich die Kriterien für die Auflistung im Laufe der Zeit verändern und weiterentwickeln. + +## Der Entscheidungsrahmen {#the-decision-framework} + +### Aufnahmekriterien: die Must-haves {#the-must-haves} + +- **Ein sicherheitsgeprüftes Produkt** – ob durch ein Audit, ein internes Sicherheitsteam, einen offenen Source-Code oder eine andere Methode, die Sicherheit Ihrer Wallet muss zuverlässig sein. So lässt sich das Risiko für unsere Nutzerinnen und Nutzer verringern. Zudem ist das ein Zeichen für die Ernsthaftigkeit eines Produkts. +- **Eine Wallet, die seit mehr als sechs Monaten "live" ist ODER von einer Gruppe mit einer seriösen Erfolgsbilanz herausgegeben wurde** – das ist ein weiterer Hinweis auf Sicherheit. Sechs Monate sind ein guter Zeitraum, in dem kritische Fehler und Sicherheitslücken gefunden werden könnten. Wir bitten um sechs Monate, um Forks herauszufiltern, die schnell als Projekte aufgegeben werden. +- **Bearbeitung durch ein aktives Team** – das trägt dazu bei, die Qualität zu gewährleisten und sicherzustellen, dass ein Nutzer Unterstützung für seine Fragen erhält. +- **Ehrliche und genaue Angaben**: Es wird erwartet, dass alle vorgeschlagenen Projektangebote ehrliche und genaue Angaben enthalten. Produkte, die falsche Angaben machen, z. B. Ihr Produkt als "Open Source" deklarieren, obwohl es das nicht ist, werden entfernt. +- **Ansprechpartner** – Ein Ansprechpartner für die Wallet hilft uns erheblich, genaue Informationen zu erhalten, wenn Änderungen vorgenommen werden. Somit bleibt die Aktualisierung von ethereum.org bei der Erfassung künftiger Informationen überschaubar. + +### Weitere Kriterien: optionale Aspekte {#the-nice-to-haves} + +- **Globaler Zugang** – Ihre Wallet hat keine geografischen Einschränkungen oder KYC-Anforderungen, die bestimmte Personen vom Zugang zu Ihrem Service ausschließen. +- **Verfügbarkeit in mehreren Sprachen** – Ihre Wallet wird in mehrere Sprachen übersetzt, so dass Nutzer auf der ganzen Welt darauf zugreifen können. +- **Open source** – die gesamte Code-Basis Ihres Projekts (nicht nur die Module) sollte zugänglich sein und Sie sollten PRs von der größeren Gemeinschaft akzeptieren. +- **Keine Verwahrung** – Nutzer kontrollieren ihr Geld. Wenn Ihr Produkt verschwindet, können die Nutzer weiterhin auf ihr Guthaben zugreifen und es bewegen. +- **Unterstützung von Hardware-Wallets** – Nutzer können ihre Hardware-Wallets anschließen, um Transaktionen zu signieren. +- **WalletConnect** – Nutzer können sich über WalletConnect mit dApps verbinden. +- **Importieren von Ethereum RPC-Endpunkten** – Benutzer können Knoten-RPC-Daten importieren, so dass sie sich mit einem Knoten ihrer Wahl oder anderen EVM-kompatiblen Netzwerken verbinden können. +- **NFTs** – Nutzer können ihre NFTs in der Wallet einsehen und mit ihnen interagieren. +- **Verbindung zu Ethereum-Anwendungen** – Nutzer können sich mit Ethereum-Anwendungen verbinden und diese nutzen. +- **Staking** – Nutzer können ihre Investitionen direkt über die Wallet tätigen. +- **Swaps** – Nutzer können Token über die Wallet tauschen. +- **Multichain-Netzwerke** – Ihre Wallet unterstützt standardmäßig den Zugriff auf mehrere Blockchain-Netzwerke. +- **Layer-2-Netzwerke** – Ihre Wallet unterstützt standardmäßig den Zugang zu Layer-2-Netzwerken. +- **Anpassen der Gasgebühren** – Ihre Wallet ermöglicht es den Nutzern, die Gasgebühren für ihre Transaktionen anzupassen (Grundgebühr, Prioritätsgebühr, maximale Gebühr). +- **ENS-Unterstützung** – Ihre Wallet erlaubt es Benutzern, Transaktionen an ENS-Namen zu senden. +- **ERC-20-Unterstützung** – Ihre Wallet ermöglicht es Nutzern, ERC-20-Token-Verträge zu importieren, oder ERC-20-Token automatisch abzufragen und anzuzeigen. +- **EIP-1559 (Typ 2)-Transaktionen** – Ihre Wallet unterstützt EIP-1559 (Typ 2)-Transaktionen. +- **Krypto kaufen** – Ihre Wallet unterstützt Nutzer beim direkten Kauf und Onboarding von Krypto. +- **Verkauf für Geldwerte** – Ihre Wallet unterstützt den Verkauf und die Abhebung von Geldwerten direkt auf eine Karte oder ein Bankkonto. +- **Multisig** – Ihre Wallet unterstützt mehrere Signaturen, um eine Transaktion zu signieren. +- **Social Recovery** – Ihre Wallet unterstützt Guardians und ein Nutzer kann seine Wallet mithilfe dieser Guardians wiederherstellen, wenn er seine Seed-Phrase verliert. +- **Eigenes Support-Team** – Ihre Wallet hat ein eigenes Support-Team, an das sich die Nutzer bei Problemen wenden können. +- **Lehrreiche Ressourcen/Dokumentation** – Ihr Produkt sollte über ein gut gestaltetes Onboarding-System verfügen, um den Benutzern zu helfen und sie zu informieren. Alternativ sind Informationen zu Lerninhalten wie Artikel oder Videos hilfreich. + +## Eine Wallet hinzufügen {#adding-a-wallet} + +Wenn Sie eine Wallet zu ethereum.org hinzufügen möchten, erstellen Sie ein Ticket auf GitHub. + + + Ein Thema erstellen + + +## Wartung {#maintenance} + +Ethereum befindet sich in der Entwicklung. Daher kommen und gehen Teams und Produkte und Innovationen finden täglich statt, so dass wir unsere Inhalte regelmäßig überprüfen: + +- Sicherstellen, dass alle aufgeführten Wallets und dApps weiterhin unsere Kriterien erfüllen +- Überprüfen, ob Produkte vorgeschlagen wurden, die unsere Kriterien besser erfüllen als die derzeit aufgeführten + +Ethereum.org wird von der Open-Source-Community gepflegt; wir sind auf die Hilfe der Community angewiesen, um diese Seite auf dem neuesten Stand zu halten. Wenn Ihnen Informationen zu den aufgelisteten Wallets auffallen, die aktualisiert werden müssen, öffnen Sie bitte [ein Ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=wallet+%3Apurse%3A&template=suggest_wallet.yaml) oder [Pull Request](https://github.com/ethereum/ethereum-org-website/pulls)! + +## Nutzungsbedingungen {#terms-of-use} + +Bitte beachten Sie auch unsere[Nutzungsbedingungen](/terms-of-use/). Die Informationen auf ethereum.org werden ausschließlich zu allgemeinen Informationszwecken bereitgestellt. diff --git a/src/content/translations/de/contributing/content-resources/index.md b/src/content/translations/de/contributing/content-resources/index.md index 8b117200fa3..2b69be39335 100644 --- a/src/content/translations/de/contributing/content-resources/index.md +++ b/src/content/translations/de/contributing/content-resources/index.md @@ -27,6 +27,6 @@ Die Lernressourcen werden anhand der folgenden Kriterien bewertet: Wenn Sie eine Inhaltsressource zu ethereum.org hinzufügen möchten und diese die Kriterien erfüllt, erstellen Sie einen Eintrag auf GitHub. - + Eintrag erstellen diff --git a/src/content/translations/de/contributing/design-principles/index.md b/src/content/translations/de/contributing/design-principles/index.md index 5418046bf97..4eb06cd09fd 100644 --- a/src/content/translations/de/contributing/design-principles/index.md +++ b/src/content/translations/de/contributing/design-principles/index.md @@ -90,4 +90,4 @@ Sie können unsere Designgrundsätze in Aktion sehen, und zwar [überall auf uns Obwohl diese Grundsätze auf die ethereum.org-Website ausgerichtet sind, hoffen wir, dass große Teile davon repräsentativ für die Werte des Ethereum-Ökosystems insgesamt stehen (z. B. lassen sich Einflüsse aus den [Grundsätzen des Ethereum-Whitepapers](https://github.com/ethereum/wiki/wiki/White-Paper#philosophy) erkennen). Vielleicht möchten Sie sogar einige davon für Ihr eigenes Projekt berücksichtigen. -Teilen Sie uns Ihre Gedanken mit auf unserem [Discord Server](https://discord.gg/CetY6Y4) oder bei [ein Problem melden](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&projects=&template=feature_request.yaml&title=Feature+request). +Teilen Sie uns Ihre Gedanken mit auf unserem [Discord-Server](https://discord.gg/CetY6Y4) oder indem Sie [ein Thema erstellen](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=). diff --git a/src/content/translations/de/contributing/design/adding-design-resources/index.md b/src/content/translations/de/contributing/design/adding-design-resources/index.md new file mode 100644 index 00000000000..f295e7f13d0 --- /dev/null +++ b/src/content/translations/de/contributing/design/adding-design-resources/index.md @@ -0,0 +1,67 @@ +--- +title: Design-Ressourcen hinzufügen +description: Richtlinien und Anforderungen zur Gewährleistung der Qualität von Designmaterialien auf ethereum.org +lang: de +--- + +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. + +Um sicherzustellen, dass wir einen hohen Informationsstandard aufrechterhalten und wertvolle Einblicke fördern, haben wir eine Listing-Policy eingeführt: + +## Research-Studien und Dashboards {#Research-studies} + +1. Solide Methodik + +a. Aus der Methodik sollte klar hervorgehen, wie die Daten erhoben wurden. + +b. Die Anzahl der an der Untersuchung beteiligten Personen sollte angegeben werden. + +c. Die verwendeten Forschungsmethoden sollten beschrieben werden. + +2. Relevanz für Web3-Designer und allgemeine Designanwendungsfälle + +a. Das Forschungsthema sollte für Web3-Designer relevant sein und gängige Designanwendungsfälle behandeln. + +3. Fokus auf Erkenntnisgewinn + +a. Das primäre Ziel des Textes sollte die Vermittlung von Erkenntnissen sein und nicht die Werbung für ein bestimmtes Projekt oder Unternehmen. + +## Artikel {#Articles} + +1. Relevanz für Web3-Designer/-Forscher und bekannte Web3-Designanwendungsfälle + +a. Das Thema des Artikels sollte für Web3-Designer und -Forscher relevant sein und sich auf gängige Anwendungsfälle von Web3-Design konzentrieren. + +2. Qualität der Beiträge + +a. Der Artikel sollte frei von Grammatik- und Rechtschreibfehlern sein. + +b. Der Schwerpunkt sollte auf der Vermittlung der wichtigsten Erkenntnisse und Erfahrungen liegen. + +c. Der Text sollte prägnant und auf den Punkt gebracht sein. + +3. Ziel des Textes + +a. Das Hauptziel des Artikels sollte die Vermittlung von Erkenntnissen und nicht die Werbung für ein bestimmtes Projekt oder Unternehmen sein. + +## Communities/DAOs {#Communities-and-DAOs} + +1. Die Website muss klar angeben, wie man der DAO/Community beitreten kann + +2. Klare Vorteile der Mitgliedschaft + +a. Die Vorteile einer Mitgliedschaft sollten an prominenter Stelle stehen. + +**Beispiele**: Feedback zur Arbeit erhalten, Zugang zu Jobangeboten oder Bounties, Austausch von Design- und Forschungserkenntnissen. + +3. Aktive und lebendige Kommunikation auf Discord + +a. Die Discord-Community sollte sich durch eine lebendige und engagierte Kommunikation auszeichnen. + +b. Die Moderatoren sollten sich aktiv an der Pflege der Gemeinschaft beteiligen und Diskussionen leiten. + +c. Die Community sollte in den letzten zwei Wochen wertvolle und produktive Unterhaltungen geführt haben. + +Durch die Einhaltung dieser Kriterien wollen wir ein lebendiges und lehrreiches Umfeld innerhalb unserer Gemeinschaft fördern. Wir sind davon überzeugt, dass diese Zulassungsrichtlinie unseren Nutzern den Zugang zu zuverlässigen, relevanten und aufschlussreichen Ressourcen ermöglicht. Wir danken Ihnen für Ihr Verständnis und Ihre Mitarbeit bei der Aufrechterhaltung der Qualität der Inhalte auf unserer Plattform. diff --git a/src/content/translations/de/contributing/design/index.md b/src/content/translations/de/contributing/design/index.md new file mode 100644 index 00000000000..9a5a771bae7 --- /dev/null +++ b/src/content/translations/de/contributing/design/index.md @@ -0,0 +1,77 @@ +--- +title: Mitarbeit am Design +description: Mitarbeit am Design bei ethereum.org +lang: de +--- + +# Mitarbeit am Design bei ethereum.org {#design-contributions} + +Design ist ein wichtiger Bestandteil eines jeden Projekts. Wenn Sie Ihre Zeit und Ihre Design-Fähigkeiten für Ethereum.org einsetzen, können Sie dazu beitragen, die Benutzerfreundlichkeit für unsere Besucher zu verbessern. Die Mitarbeit an einem Open-Source-Projekt bietet Ihnen die Möglichkeit, relevante Erfahrungen zu sammeln und Ihre Fähigkeiten in einer kollaborativen Umgebung zu entwickeln. Sie werden die Chance haben, mit anderen Designern, Entwicklern und Community-Mitgliedern zusammenzuarbeiten, die alle ihre eigenen Perspektiven und Einsichten miteinbringen. + +Letztendlich ist das eine großartige Möglichkeit, ein vielfältiges und beeindruckendes Portfolio aufzubauen, das Ihre Designfähigkeiten unter Beweis stellt. + +## Wie kann ich etwas beitragen? + +### 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. + +1. Das Design-Team wird ein Mockup-Design auf [Discord](https://discord.com/invite/CetY6Y4) und auf [GitHub](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8) veröffentlichen. +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} + +Geben Sie Feedback zu unserer Website: + +1. Besuchen Sie ethereum.org und lesen Sie die Seiten durch. +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} + +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. + +1. Gehen Sie durch die Website und achten Sie auf ihr Design. +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} + +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. + +1. Schauen Sie sich unsere Website an und achten Sie auf das Design, oder gehen Sie zu unserem GitHub-Repository und überprüfen Sie Issues, die mit dem Tag ["Design required"](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8) gekennzeichnet sind. +2. Machen Sie sich Gedanken über die Lösung und entwerfen Sie sie. (Idealerweise unter Verwendung unseres [Designsystems](https://www.figma.com/community/file/1134414495420383395)). +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} + +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. + +1. Wählen Sie ein Thema aus dem [Design-System-Board](https://github.com/ethereum/ethereum-org-website/labels/design%20system) auf GitHub aus, an dem Sie arbeiten möchten, oder erstellen Sie ein neues. +2. Fordern Sie an, dass Ihnen das ausgewählte Thema zugewiesen wird. +3. Beginnen Sie mit dem Design der gewünschten Komponente in figma. +4. Teilen Sie es dem Designteam auf GitHub mit, sobald Sie eine Überprüfung oder Hilfe benötigen. +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} + +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. + +1. Machen Sie sich Gedanken über Designthemen, die auf ethereum.org behandelt werden sollten und die für die Designer in diesem Bereich von Nutzen wären. +2. Gehen Sie zu unserem GitHub-Repository und [öffnen Sie ein Thema](https://github.com/ethereum/ethereum-org-website/issues/new), um ein Thema vorzuschlagen (schreiben Sie den Inhalt noch nicht). +3. Warten Sie auf die Freigabe durch das Designteam. +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} + +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. + +1. Gehen Sie auf unsere Website und suchen Sie nach Seiten, auf denen neue Infografiken hinzugefügt werden könnten. +2. Vergewissern Sie sich, dass der Illustrationsstil mit unseren [Assets](/assets/) übereinstimmt. +3. Gehen Sie zu unserem GitHub-Repository und [machen Sie einen Vorschlag](https://github.com/ethereum/ethereum-org-website/issues/new) für die Illustration. +4. Das Designteam wird sie dann prüfen. +5. Wir erstellen ein neues Thema, um einen Entwickler zu bitten, das neue Bild zu implementieren. diff --git a/src/content/translations/de/contributing/index.md b/src/content/translations/de/contributing/index.md index 66996a90953..9fbce896630 100644 --- a/src/content/translations/de/contributing/index.md +++ b/src/content/translations/de/contributing/index.md @@ -16,17 +16,21 @@ Die ethereum.org-Website, wie Ethereum im Großen und Ganzen, ist ein Open-Sourc - [Arbeiten an offenen Themen](https://github.com/ethereum/ethereum-org-website/issues) _ – Arbeit, die wir als notwendig erachten_ - [Beitrag zum Überstzungsprogramm](/contributing/translation-program/)_ – Helfen Sie uns, ethereum.org in neuen Sprachen verfügbar zu machen_ -- [Community-Ressourcen hinzufügen](/contributing/content-resources/) _– Fügen Sie eine(n) hilfreiche(n) Artikel oder Ressource zu einer relevanten Seite hinzu_ -- [Produkt hinzufügen](/contributing/adding-products/) _ – Fügen Sie eine dApp oder ein Wallet zu einer relvanten Seite hinzu_ +- [Hilfe bei der Gestaltung der Website](/contributing/design/) _ – Designer aller Stufen können zur Verbesserung der Website beitragen_ +- [Community-Ressourcen hinzufügen](/contributing/content-resources/) _ – Fügen Sie eine(n) hilfreiche(n) Artikel oder Ressource zu einer relevanten Seite hinzu_ +- [Produkt hinzufügen](/contributing/adding-products/) _ – Fügen Sie eine dApp oder eine Wallet zu einer relvanten Seite hinzu_ - [Entwicklungstools hinzufügen](/contributing/adding-developer-tools/) _ – Fügen Sie Entwicklungstools zu einer relvanten Seite hinzu_ - [Handelsplatz hinzufügen](/contributing/adding-exchanges/) _ – Fügen Sie einen Handelsplatz zu unserer [Börsensuche hinzu](/get-eth/#country-picker)_ - [ Unsere Forschung verbessern](https://www.notion.so/efdn/Ethereum-org-User-Persona-Memo-b44dc1e89152457a87ba872b0dfa366c) _ – Geben Sie uns Feedback zu unserer Forschung oder betreiben Sie Ihre eigene_ -- [Funktionsanfrage](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&projects=&template=feature_request.yaml&title=Feature+request) _ – Informieren Sie uns über Ihre Ideen zu neuen Funktionen oder Desings_ +- [Ein Feature vorschlagen](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) _ – Lassen Sie uns wissen, wenn Sie irgendwelche Ideen für ein neues Feature oder Design haben_ - [Glossarbegriff hinzufügen](/contributing/adding-glossary-terms) _ – Helfen Sie uns, das Ethereum-[Wörterbuch](/glossary/) zu vergrößern_ -- [Inhalte erstellen/bearbeiten](/contributing/#how-to-update-content) _ – Empfehlen Sie neue Seiten oder verbessern Sie bereits bestehende_ -- [Ebene 2 hinzufügen](/contributing/adding-layer-2s/) _ – Fügen Sie einer relevanten Seite eine Ebene 2 hinzu_ -- [Staking-Produkt oder -Service hinzufügen](/contributing/adding-staking-products/) – _Fügen Sie ein Projekt hinzu, dass das Solo-Staking, das Pool-Staking oder das Staking als Service ermöglicht_ -- [Eine Wallet hinzufügen](/contributing/adding-wallets/) _- Fügen Sie eine Wallet für die [Finde-Wallets-Seite](/wallets/find-wallet/) hinzu._ +- [Inhalt erstellen/bearbeiten](/contributing/#how-to-update-content) _ – Neue Seiten vorschlagen oder bereits vorhandene Seiten verbessern_ +- [Eine layer 2 hinzufügen](/contributing/adding-layer-2s/) _ – Eine Layer 2 einer relevanten Seite hinzufügen_ +- [Hinzufügen eines Staking-Produkts oder einer Dienstleistung](/contributing/adding-staking-products/)_ – Fügen Sie ein Projekt hinzu, das die Solo-, Pool-Staking oder Staking als Dienstleistung unterstützt._ +- [Ein Wallet hinzufügen](/contributing/adding-wallets/) _ – Eine Wallet zur Seite [der Wallet-Suche](/wallets/find-wallet/) hinzufügen_ +- [Schlagen Sie ein Projekt für unsere DeSci Seite vor](/contributing/adding-desci-projects/) _ – Fügen Sie ein Projekt hinzu, das auf Ethereum gebaut wurde und zur dezentralen Wissenschaft beiträgt_ +- [Quizfragen](/contributing/quizzes/) _ – Hinzufügen, Aktualisieren und Löschen von Quizfragen für eine bestimmte Seite_ +- [Designressourcen vorschlagen](/contributing/design/adding-design-resources/) _ – Hilfreiche Designressourcen hinzufügen, aktualisieren und löschen_ _Haben Sie Fragen?_ 🤔 Sie erreichen uns auf unserem [Discord-Server](https://discord.gg/CetY6Y4). @@ -46,6 +50,7 @@ Bevor Sie einen Beitrag leisten, sollten Sie sich mit folgenden Themen vertraut - die sich entwickelnde [Vision von ethereum.org](/about/) - unsere [Designgrundsätze](/contributing/design-principles/) - unser [Styleguide](/contributing/style-guide/) +- unser [Verhaltenskodex](/community/code-of-conduct) ## So werden Entscheidungen für die Site getroffen {#how-decisions-about-the-site-are-made} diff --git a/src/content/translations/de/contributing/quizzes/index.md b/src/content/translations/de/contributing/quizzes/index.md new file mode 100644 index 00000000000..b5e63307a76 --- /dev/null +++ b/src/content/translations/de/contributing/quizzes/index.md @@ -0,0 +1,62 @@ +--- +title: Quiz hinzufügen +description: Die Richtlinie, die wir beim Hinzufügen von Quiz zu ethereum.org anwenden +lang: de +--- + +# Quizze {#quizzes} + +Quizfragen bieten den Nutzern die Möglichkeit, sich selbst zu testen. So können sie feststellen, ob sie den Inhalt der Seite, die sie gerade gelesen haben, verstanden haben. Die Fragen sollten sich nur auf den Inhalt der Seite beziehen und nicht nach Informationen fragen, die nicht auf der Seite erwähnt werden. + +Die Fragen sind wie folgt aufgebaut: Die Frage, 1 richtige Antwort mit einer Erklärung, warum sie richtig ist, 3 falsche Antworten mit einer Erklärung, warum sie falsch sind. + +Einige Beispiele für aktuelle Quizfragen finden Sie hier: + +- [Layer 2](/layer-2) +- [NFT](/nft/) +- [Was ist Ethereum?](/what-is-ethereum/) +- [Was ist ETH?](/eth/) + +## Lernquiz hinzufügen + +Wenn es eine Seite gibt, für die noch kein Lernquiz erstellt wurde, [öffnen Sie ein Thema](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) für diese Seite. + +Geben Sie die folgenden Informationen an: + +- Die Seite, zu der Sie ein Quiz hinzufügen möchten +- 5 Fragen mit den folgenden Informationen: + - Der Abschnitt der Seite, auf den sich die Frage bezieht + - Die Frage selbst + - 1 richtige Antwort mit einer Erklärung, warum sie richtig ist + - 3 falsche Antworten, jeweils mit einer Erklärung, warum sie falsch sind + +## Quizfrage hinzufügen + +Wenn Sie eine Frage zur Fragensammlung für ein Quiz hinzufügen möchten, [öffnen Sie ein Thema](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) und geben Sie die folgenden Informationen an: + +- Die Seite, zu der Sie eine Quizfrage hinzufügen möchten +- Geben Sie für jede Frage die folgenden Informationen an: + - Der Abschnitt der Seite, auf den sich die Frage bezieht + - Die Frage selbst + - 1 richtige Antwort mit einer Erklärung, warum sie richtig ist + - 3 falsche Antworten, jeweils mit einer Erklärung, warum sie falsch sind + +## Quizfrage aktualisieren + +Wenn Sie eine Frage in einer Fragensammlung für ein Quiz aktualisieren möchten, [öffnen Sie ein Thema](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) und geben Sie die folgenden Informationen an: + +- Die Seite, auf der Sie eine Quizfrage aktualisieren möchten +- Geben Sie für jede zu aktualisierende Frage die folgenden Informationen an: + - Der Abschnitt der Seite, auf den sich die Frage bezieht + - Wortlaut der Frage, die Sie aktualisieren möchten + - Aktualisierter Wortlaut + - 1 richtige Antwort mit einer Erklärung, warum sie richtig ist + - 3 falsche Antworten, jeweils mit einer Erklärung, warum sie falsch sind + +## Quizfrage entfernen + +Wenn der Inhalt einer Frage nicht mehr auf der Seite vorhanden ist und sie entfernt werden soll, [öffnen Sie ein Thema](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml), um die Frage zu entfernen, und geben Sie die folgenden Informationen an: + +- Die Seite, auf der Sie eine Quizfrage löschen möchten +- Die Frage, die Sie löschen möchten +- Gegebenenfalls eine Erläuterung, warum die Frage entfernt werden soll diff --git a/src/content/translations/de/contributing/translation-program/how-to-translate/index.md b/src/content/translations/de/contributing/translation-program/how-to-translate/index.md new file mode 100644 index 00000000000..82ae7137fca --- /dev/null +++ b/src/content/translations/de/contributing/translation-program/how-to-translate/index.md @@ -0,0 +1,89 @@ +--- +title: Übersetzen – so geht's +lang: de +description: Anweisungen für die Verwendung von Crowdin zur Übersetzung von ethereum.org +--- + +# Übersetzen – so geht's {#how-to-translate} + +## Ein visueller Leitfaden {#visual-guide} + +Für visuell Lernende: Luka führt Sie durch die Einrichtung von Crowdin. Alternativ können Sie die gleichen Schritte auch im nächsten Abschnitt nachlesen. + + + +## Schriftlicher Leitfaden {#written-guide} + +### Beteiligen Sie sich an unserem Projekt auf Crowdin {#join-project} + +Sie müssen sich bei Ihrem Crowdin-Konto anmelden oder sich registrieren, wenn Sie noch kein Konto haben. Für die Anmeldung benötigen Sie lediglich ein E-Mail-Konto und ein Passwort. + + + Am Projekt teilnehmen + + +### Wählen Sie Ihre Sprache {#open-language} + +Nachdem Sie sich bei Crowdin angemeldet haben, sehen Sie eine Projektbeschreibung und eine Liste aller verfügbaren Sprachen. Jede Sprache enthält außerdem Informationen über die Gesamtzahl der übersetzbaren Wörter und einen Überblick darüber, wie viele Inhalte in einer bestimmten Sprache bereits übersetzt und genehmigt wurden. + +Wählen Sie die Sprache, in die Sie übersetzen möchten, um die Liste der Dateien anzuzeigen, die für die Übersetzungen zur Verfügung stehen. + +![Liste von Sprachen auf Crowdin](./list-of-languages.png) + +### Suchen Sie ein Dokument, an dem Sie arbeiten möchten {#find-document} + +Der Inhalt der Website ist in eine Reihe von Dokumenten und Inhaltsbereichen unterteilt. Sie können den Fortschritt jedes Dokuments auf der rechten Seite überprüfen. Wenn der Übersetzungsfortschritt unter 100 % liegt, können Sie daran mitarbeiten. + +Ist Ihre Sprache nicht aufgeführt? [Eröffnen Sie ein Ticket](https://github.com/ethereum/ethereum-org-website/issues/new/choose) oder fragen Sie in unserem [Discord](/discord/) nach. + +![Übersetzte und nicht übersetzte Dateien auf Crowdin](./crowdin-files.png) + +Ein Hinweis zu den Inhaltsbereichen: Wir nutzen 'Inhaltsbereiche' in Crowdin, um den Inhalt mit der höchsten Priorität zuerst zu veröffentlichen. Wenn Sie sich eine Sprache ansehen, zum Beispiel [Philippinisch](https://crowdin.com/project/ethereum-org/fil#), sehen Sie Ordner für Inhaltsbereiche ("1. Startseite", "2. Grundlagen", "3. Exploring", usw.). + +Wir empfehlen Ihnen, in dieser numerischen Reihenfolge zu übersetzen (1 → 2 → 3 → ⋯), um sicherzustellen, dass die Seiten mit der größten Wirkung zuerst übersetzt werden. + +[Mehr zu ethereum.org-Inhaltsbereichen](/contributing/translation-program/content-buckets/) + +### Übersetzen {#translate} + +Nachdem Sie die zu übersetzende Datei ausgewählt haben, wird sie im Online-Editor geöffnet. Wenn Sie noch nicht mit Crowdin gearbeitet haben, finden Sie in dieser Kurzanleitung eine Erläuterung der Grundlagen. + +![Online-Crowdin-Editor](./online-editor.png) + +**_1 – Linke Seitenleiste_** + +- Nicht übersetzt (rot) – Text, an dem noch nicht gearbeitet wurde. Das sind die Zeichenfolgen, die übersetzt werden sollten. +- Übersetzt (grün) – Text, der bereits übersetzt, aber noch nicht überprüft wurde. Gerne können Sie alternative Übersetzungen vorschlagen oder über die Schaltflächen ''+'' und ''-'' im Editor über bestehende Übersetzungen abstimmen. +- Genehmigt (Häkchen) – Text, der bereits überprüft wurde und derzeit auf der Website live ist. + +Sie können auch die Schaltflächen oben verwenden, um nach bestimmten Zeichenfolgen zu suchen, sie nach Status zu filtern oder die Ansicht zu ändern. + +**_2 – Editor-Bereich_** + +Der Hauptübersetzungsbereich – der Ausgangstext wird oben angezeigt, mit zusätzlichem Kontext und Screenshots, falls verfügbar. Um eine neue Übersetzung vorzuschlagen, geben Sie Ihre Übersetzung in das Feld ''Enter translation here" (Übersetzung hier eingeben') ein und klicken Sie auf "Save" (Speichern). + +In diesem Abschnitt finden Sie auch vorhandene Übersetzungen der Zeichenfolge und Übersetzungen in andere Sprachen sowie Translation-Memory-Übereinstimmungen und Vorschläge für maschinelle Übersetzungen. + +**_3 – Rechte Seitenleiste_** + +Hier können Sie Kommentare finden, Einträge aus dem Übersetzungsspeicher (Translation Memory, TM) oder dem Glossar. In der Standardansicht werden die Kommentare angezeigt und Übersetzer haben die Möglichkeit, zu kommunizieren, Probleme aufzuwerfen oder falsche Übersetzungen zu melden. + +Über die Schaltflächen oben können Sie auch zum Übersetzungsspeicher wechseln, wo Sie nach bereits existierenden Übersetzungen suchen können, oder zum Glossar, das Beschreibungen und Standardübersetzungen von zentralen Begriffen beinhaltet. + +Möchten Sie mehr erfahren? Sehen Sie sich die [Dokumentation zur Verwendung des Online-Crowdin-Editors](https://support.crowdin.com/online-editor/) an. + +### Überprüfungsprozess {#review-process} + +Sobald Sie die Übersetzung abgeschlossen haben (d.h. alle Dateien für einen Inhaltsbereich 100% anzeigen), wird unser professioneller Übersetzungsdienst den Inhalt überprüfen (und möglicherweise bearbeiten). Sobald die Überprüfung abgeschlossen ist (d. h. der Überprüfungsfortschritt beträgt 100%), werden wir sie zur Website hinzufügen. + + + Verwenden Sie keine maschinell erstellten Übersetzungen für das Projekt. Alle Übersetzungen werden vor der Veröffentlichung auf der Website überprüft. Wenn sich herausstellt, dass die von Ihnen vorgeschlagenen Übersetzungen maschinell erstellt wurden, werden sie abgelehnt und Übersetzerinnen und Übersetzer, die häufig maschinelle Übersetzungen verwenden, werden aus dem Projekt entfernt. + + +### Kontakt {#get-in-touch} + +Haben Sie noch Fragen? Oder möchten Sie mit unserem Team und anderen Übersetzern zusammenarbeiten? Verfassen Sie Ihre Beiträge im Kanal #translations unseres[Discord-Servers von ethereum.org](/discord/) + +Sie können uns auch unter translations@ethereum.org kontaktieren. + +Vielen Dank für Ihre Teilnahme am ethereum.org-Übersetzungsprogramm. diff --git a/src/content/translations/de/contributing/translation-program/index.md b/src/content/translations/de/contributing/translation-program/index.md index 31455331739..653053bcbb4 100644 --- a/src/content/translations/de/contributing/translation-program/index.md +++ b/src/content/translations/de/contributing/translation-program/index.md @@ -20,6 +20,8 @@ Das ethereum.org Übersetzungsprogramm ist offen und jeder kann dazu beitragen! 4. Maschinelle Übersetzungen werden nicht genehmigt. 5. Alle Übersetzungen werden überprüft, bevor sie zur Seite hinzugefügt werden. Daher gibt es eine kurze Verzögerung, bevor Ihre Übersetzungen veröffentlicht werden. +_Treten Sie dem [ethereum.org-Discord](/discord/) bei, um an Übersetzungen mitzuarbeiten, Fragen zu stellen, Feedback und Ideen zu teilen oder einer Übersetzungsgruppe beizutreten._ + Mit dem Übersetzen beginnen @@ -30,37 +32,52 @@ Die Ethereum-Community hat das Ziel, global und inklusiv zu sein. Doch ein Groß Das Übersetzungsprogramm von ethereum.org zielt darauf ab, Ethereum jedermann zugänglich zu machen, indem ethereum.org und andere Ethereum-Inhalte in so viele Sprachen wie möglich übersetzt werden. -Lesen Sie mehr über das ethereum.org Übersetzungsprogramm [Mission und Vision](/contributing/translation-program/mission-and-vision). +Lesen Sie mehr über Mission und Vision des Übersetzungsprogramms auf ethereum.org. ### Unsere bisherigen Fortschritte {#our-progress} -- [**3,800 +** Übersetzer](/contributing/translation-program/contributors/) -- [Die Seite ist in **48** Sprachen verfügbar](/languages/) -- [**2,9 Millionen** Wörter übersetzt im Jahr 2021](/contributing/translation-program/acknowledgements/) -- [**1,9 Millionen** Worte wurden 2022 bisher übersetzt](/contributing/translation-program/acknowledgements/) +- [**5.100 +** Übersetzer](/contributing/translation-program/contributors/) +- [Die Seite ist in **54** Sprachen verfügbar](/languages/) +- [**3 Millionen** Wörter übersetzt im Jahr 2022](/contributing/translation-program/acknowledgements/) + + + +### Danksagungen {#acknowledgements} + +Ethereum.org wird von Tausenden von Community-Mitgliedern übersetzt und sie bilden den wichtigsten Teil des Übersetzungsprogramms. Wir wollen unseren Übersetzern Anerkennung entgegenbringen und sie auf ihrem Karriereweg unterstützen. Hier sind einige der Auszeichnungen für unsere Übersetzer: + +#### Zertifikat {#certificate} + +Wenn Sie zum Übersetzungsprogramm beigetragen haben und mindestens 5.000 Ihrer übersetzten Wörter genehmigt wurden, haben Sie Anspruch auf ein ethereum.org-Übersetzerzertifikat. [Mehr über Zertifikate](/contributing/translation-program/acknowledgements/#certificate) + +#### POAPs {#poaps} + +Alle unsere Übersetzer haben Anspruch auf ein POAP (Proof of Attendance Protocol) – ein NFT, das ihren Beitrag zum Übersetzungsprogramm von ethereum.org belegt. [Mehr über POAPs](/contributing/translation-program/acknowledgements/#poap) + +#### Danksagungen an die Übersetzer {#translator-acknowledgements} + +Öffentliche Anerkennungen unserer besten Übersetzer durch [Leaderboards](/contributing/translation-program/acknowledgements/) und eine [Liste aller Übersetzer, die zum Übersetzungsprogramm beitragen](/contributing/translation-program/contributors/). + +#### Belohnungen {#rewards} -Wenn Sie sich engagieren und uns helfen möchten, die globale Ethereum-Community zu vergrößern, indem Sie die Website in Ihre Sprache übersetzen, sollten Sie Folgendes beachten! +In der Vergangenheit haben wir unsere aktivsten Beitragenden rückwirkend mit Tickets für Ethereum-Konferenzen wie [Devcon](https://devcon.org/en/) und [Devconnect](https://devconnect.org/) sowie mit exklusiven ethereum.org-Artikeln belohnt. - - Sehen Sie sich unsere Seite für die Übersetzeranerkennungen an und{" "} - fordern Sie Ihren POAP-Token an. Wenn Sie 2022 ethereum.org übersetzt haben, wartet ein einzigartiger POAP auf Sie.{" "} - Mehr zu POAPs - +Wir denken ständig über neue und innovative Möglichkeiten nach, unsere Mitwirkenden zu belohnen, also bleiben Sie dran! -### Anleitungen & Ressourcen {#guides-and-resources} +### Anleitungen und Ressourcen {#guides-and-resources} Wenn Sie zum Übersetzungsprogramm beitragen oder daran denken, sich zu beteiligen, sollten Sie sich die folgenden Übersetzungsanleitungen ansehen: - [Übersetzungsleitfaden](/contributing/translation-program/translators-guide/)_ – Anleitungen und Tipps für ethereum.org-Übersetzer_ - [Übersetzungs-FAQs](/contributing/translation-program/faq/)_ – häufig gestellte Fragen und Antworten zum Übersetzungsprogramm von ethereum.org_ - [Editorleitfaden für Crowdin-Online](https://support.crowdin.com/online-editor/)_ – ein ausführlicher Ratgeber für die Nutzung des Online-Crowdin-Editors und seiner umfangreichen Funktionen_ -- [Inhaltsbereiche](/contributing/translation-program/content-buckets/)_ – welche Seiten zu welchem Inhaltsbereich von ethereum.org gehören_ +- [Inhaltsbereich](/contributing/translation-program/content-buckets/)_ – welche Seiten gehören zu welchen Inhaltsbereichen von ethereum.org_ Für andere nützliche Übersetzungstools, Übersetzergemeinschaften und Blog-Einträge des Übersetzungsprogramms besuchen Sie bitte die [Ressourcenseite](/contributing/translation-program/resources/). ## Kontaktieren Sie uns {#get-in-touch} -Haben Sie noch Fragen? Oder möchten Sie mit unserem Team und anderen Übersetzern zusammenarbeiten? Verfassen Sie Ihre Beiträge im #translations Kanal unseres[Discord-Servers von ethereum.org](https://discord.gg/6WX7E97) +Haben Sie noch Fragen? Oder möchten Sie mit unserem Team und anderen Übersetzern zusammenarbeiten? Verfassen Sie Ihre Beiträge im Kanal #translations unseres[Discord-Servers von ethereum.org](https://discord.gg/6WX7E97) Sie können uns auch unter translations@ethereum.org kontaktieren. diff --git a/src/content/translations/de/contributing/translation-program/mission-and-vision/index.md b/src/content/translations/de/contributing/translation-program/mission-and-vision/index.md new file mode 100644 index 00000000000..e5a2c8124af --- /dev/null +++ b/src/content/translations/de/contributing/translation-program/mission-and-vision/index.md @@ -0,0 +1,25 @@ +--- +title: Mission und Vision +lang: de +description: Aufgabe und Vision des Übersetzungsprogramms von ethereum.org +--- + +# Mission und Vision {#mission-and-vision} + +Die Ethereum-Community hat das Ziel, global und inklusiv zu sein. Doch ein Großteil des Inhalts richtet sich nur an englischsprachige Personen und lässt die weltweit 6 Milliarden Menschen, die kein Englisch sprechen, außen vor. Damit ethereum.org für die weltweite Community als Zugang zu Ethereum fungieren kann, ist es unserer Meinung nach wichtig, den nicht englisch sprechenden Menschen Ethereum-Inhalte in ihrer Muttersprache zur Verfügung zu stellen. + +Das Übersetzungsprogramm von ethereum.org zielt darauf ab, Ethereum jedermann zugänglich zu machen, indem ethereum.org und andere Ethereum-Inhalte in so viele Sprachen wie möglich übersetzt werden. + +## Unsere Mission {#our-mission} + +- Übersetzte Versionen der Website bereitstellen, um Besuchern weltweit die Möglichkeit zu geben, in ihrer Muttersprache mehr über Ethereum zu erfahren +- Mehr Mitgliedern die Teilnahme an der globalen Ethereum-Community erleichtern +- Den Austausch von Ethereum-Informationen und Wissen zugänglicher und inklusiver gestalten +- Mitglieder der Community dazu ermuntern, Übersetzungen zu Ethereum und so zum Ökosystem beizutragen +- Leidenschaftliche Mitwirkende identifizieren, die sich am Ökosystem beteiligen möchten, sich mit ihnen verbinden und Orientierungshilfen bieten + +## Unsere Vision {#our-vision} + +- Wichtige Inhalte für Mitglieder der Ethereum-Community aus so vielen Ländern und Teilen der Welt wie möglich übersetzen +- Den wissensaustausch über Sprachen hinweg unterstützen, um eine besser informierte und gebildete Ethereum-Community zu schaffen +- Inklusivität und Zugänglichkeit von Ethereum verbessern, indem Sprachbarrieren beseitigt werden, die nicht englischsprachige Personen daran hindern, dem Ökosystem beizutreten diff --git a/src/content/translations/de/contributing/translation-program/resources/index.md b/src/content/translations/de/contributing/translation-program/resources/index.md new file mode 100644 index 00000000000..ac150f272f4 --- /dev/null +++ b/src/content/translations/de/contributing/translation-program/resources/index.md @@ -0,0 +1,45 @@ +--- +title: Ressourcen für Übersetzer/Innen +lang: de +description: Nützliche Ressourcen für ethereum.org-Übersetzer +--- + +# Ressourcen {#resources} + +Nachfolgend finden Sie einige nützliche Anleitungen und Tools für ethereum.org-Übersetzer sowie Übersetzergemeinschaften und Updates. + +## Leitfäden {#guides} + +- [Leitfaden für die Übersetzung](/contributing/translation-program/translators-guide/) _ – Anweisungen und Tipps für ethereum.org-Übersetzer_ +- [Übersetzungs-FAQs](/contributing/translation-program/faq/)_ – häufig gestellte Fragen und Antworten zum Übersetzungsprogramm von ethereum.org_ +- [Editorleitfaden für Crowdin-Online](https://support.crowdin.com/online-editor/)_ – ein ausführlicher Ratgeber für die Nutzung des Online-Crowdin-Editors und seiner umfangreichen Funktionen_ +- [Inhaltsbereich](/contributing/translation-program/content-buckets/)_ – welche Seiten gehören zu welchen Inhaltsbereichen von ethereum.org_ + +## Tools {#tools} + +- [Microsoft Language Portal](https://www.microsoft.com/en-us/language) _ – nützlich um Standardübersetzungen für technische Begriffe zu finden und zu überprüfen_ +- [Linguee](https://www.linguee.com/) _ – Suchmaschine für Übersetzungen und ein Wörterbuch, in dem Sie nach Wörtern und auch nach Phrasen suchen können_ +- [Proz-Begriffssuche](https://www.proz.com/search/) _ – Datenbank für Übersetzungen, Wörterbücher und Glossare für Fachbegriffe_ +- [Eurotermbank](https://www.eurotermbank.com/) _ – Sammlungen von Terminologie zu europäischen Themen in 42 Sprachen_ + +## Communities {#communities} + +- [Sprachenspezifische Discord-Übersetzungsgruppen](/discord/) _ – eine Initiative zur Verbindung von ethereum.org-Übersetzern mit Übersetzungsgruppen_ +- [Chinesische Übersetzergruppe](https://www.notion.so/Ethereum-org-05375fe0a94c4214acaf90f42ba40171) _ – Begriffsseite für die einfachere Koordination zwischen den chinesischen Übersetzern_ + +## Letzte Aktualisierungen {#latest-updates} + +Damit Sie beim aktuellen Fortschritt des Übersetzungsprogramms auf dem Laufenden bleiben, folgen Sie dem [Ethereum Foundation-Blog](https://blog.ethereum.org/): + +- [Oktober 2021, Updates für Meilensteine](https://blog.ethereum.org/2021/10/04/translation-program-update/) +- [Dezember 2020, Updates für Meilensteine](https://blog.ethereum.org/2020/12/21/translation-program-milestones-updates-20/) +- [Juli 2020, Updates für Meilensteine](https://blog.ethereum.org/2020/07/29/ethdotorg-translation-milestone/) +- [August 2019, Start des Übersetzungsprogramms](https://blog.ethereum.org/2019/08/20/translating-ethereum-for-our-global-community/) + +## Sprechstunde für Übersetzerinnen und Übersetzer {#office-hours} + +Jeden zweiten Mittwoch im Monat haben wir Sprechstunde für Übersetzer. Diese finden im Sprachkanal #office-hours auf dem [ethereum.org-Discord](/discord/) statt, wo Sie auch die genauen Zeiten und weitere Details finden. + +Während der Geschäftszeiten haben unsere Übersetzer die Möglichkeit, Fragen zum Übersetzungsprozess zu stellen, Feedback zum Programm zu geben, ihre Ideen mitzuteilen oder einfach mit dem ethereum.org-Kernteam zu plaudern. Schließlich wollen wir diese Zusammentreffen nutzen, um die neuesten Entwicklungen im Übersetzungsprogramm mitzuteilen und wichtige Tipps und Anleitungen an unsere Mitwirkenden weiterzugeben. + +Wenn Sie ethereum.org-Übersetzerin und -Übersetzer sind oder werden möchten, können Sie gerne an einer dieser Sitzungen teilnehmen. diff --git a/src/content/translations/de/contributing/translation-program/translators-guide/index.md b/src/content/translations/de/contributing/translation-program/translators-guide/index.md index e52d73a2941..7f2e94fba19 100644 --- a/src/content/translations/de/contributing/translation-program/translators-guide/index.md +++ b/src/content/translations/de/contributing/translation-program/translators-guide/index.md @@ -116,7 +116,7 @@ Am besten ist es, Links direkt aus der Quelle zu kopieren, entweder durch Anklic ![Beispiel für einen Link.png](./example-of-link.png) -Links erscheinen im Quelltext auch in Form von Tags (z. B. <0> ). Wenn Sie mit dem Mauszeiger über den Tag fahren, zeigt der Editor den vollständigen Inhalt an. Manchmal stellen diese Tags auch Links dar. +Links erscheinen im Quelltext auch in Form von Tags (z. B. <0> ). Wenn Sie mit dem Mauszeiger über das Tag fahren, zeigt der Editor den vollständigen Inhalt an. Manchmal stellen diese Tags auch Links dar. Es ist sehr wichtig, die Links aus der Quelle zu kopieren und die Reihenfolge nicht zu verändern. diff --git a/src/content/translations/de/developers/docs/accounts/accounts.png b/src/content/translations/de/developers/docs/accounts/accounts.png new file mode 100644 index 0000000000000000000000000000000000000000..75e00bb0368e5d17d7ec8e7071df79318d0d73fd GIT binary patch literal 36256 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 oc={XK$LV=y;K%=hM^F personal.newAccount() -Passphrase: -Repeat passphrase: -"0x5e97870f263700f46aa00d967821199b9bc5a120" +``` +> clef newaccount --keystore + +Please enter a password for the new account to be created: +> -> personal.newAccount("h4ck3r") -"0x3d80b31a78c30fc628f20b2c89d7ddbf6e53cedc +------------ +INFO [10-28|16:19:09.156] Your new key was generated address=0x5e97870f263700f46aa00d967821199b9bc5a120 +WARN [10-28|16:19:09.306] Please backup your key file path=/home/user/go-ethereum/data/keystore/UTC--2022-10-28T15-19-08.000825927Z--5e97870f263700f46aa00d967821199b9bc5a120 +WARN [10-28|16:19:09.306] Please remember your password! +Generated account 0x5e97870f263700f46aa00d967821199b9bc5a120 ``` -[GETH-Dokumentation](https://geth.ethereum.org/docs) +[Dokumentation für Geth](https://geth.ethereum.org/docs) Es ist möglich, neue öffentliche Schlüssel von deinem privaten Schlüssel abzuleiten, aber nicht, einen privaten Schlüssel von öffentlichen Schlüsseln abzuleiten. Dies bedeutet, dass es unerlässlich ist, einen privaten Schlüssel sicher und, wie der Name schon sagt, **PRIVAT** aufzubewahren. -Du benötigst einen privaten Schlüssel, um Nachrichten und Transaktionen zu signieren, die eine Signatur nach außen anzeigen. Andere können dann die Unterschrift verwenden, um deinen öffentlichen Schlüssel abzuleiten und den Autor der Nachricht zu verifizieren. In deiner App kannst du eine JavaScript-Bibliothek verwenden, um Transaktionen ins Netzwerk zu senden. +Du benötigst einen privaten Schlüssel, um Nachrichten und Transaktionen zu signieren, die eine Signatur nach außen anzeigen. Andere können dann die Unterschrift verwenden, um deinen öffentlichen Schlüssel abzuleiten und den Autor der Nachricht zu verifizieren. In deiner App kannst du eine Javascript-Bibliothek verwenden, um Transaktionen ins Netzwerk zu senden. ## Vertragskonten {#contract-accounts} @@ -95,13 +100,19 @@ Beispiel: Die Vertragsadresse wird in der Regel angegeben, wenn ein Vertrag an die Ethereum Blockchain versendet wird. Diese Adresse stammt von der Erstelleradresse und der Anzahl der Transaktionen, die von dieser Adresse versendet werden (die „nonce“). +## Schlüssel für Validatoren {#validators-keys} + +Es gibt einen weiteren Schlüsseltyp in Ethereum, der mit dem Wechsel von Proof-of-Work zu Proof-of-Stake für den Konsensmechanismus eingeführt wurde. Dieser nennt sich BLS-Schlüssel und wird verwendet, um Validatoren zu identifizieren. Diese Schlüssel lassen sich sehr effizient aggregieren, um die Bandbreite zu reduzieren, die das Netzwerk benötigt, um einen Konsens zu erzielen. Ohne diese Schlüsselaggregation wäre der minimale Stake für Validatoren viel höher. + +[Mehr über Schlüssel für Validatoren](/developers/docs/consensus-mechanisms/pos/keys/). + ## Ein Hinweis zu Wallets {#a-note-on-wallets} -Ein Konto ist kein Wallet. Ein Konto ist das Schlüsselpaar für ein Ethereum-Konto, das dem Benutzer gehört. Eine Wallet ist eine Schnittstelle oder Anwendung, über die du mit deinem Ethereum-Konto interagieren kannst. +Ein Konto ist kein Wallet. Ein Konto ist das Schlüsselpaar für ein Ethereum-Konto, das dem Benutzer gehört. Eine Wallet ist eine Schnittstelle oder Anwendung, über die Sie mit Ihrem Ethereum-Konto interagieren können. ## Eine visuelle Demo {#a-visual-demo} -Austin führt dich durch Hash-Funktionen und Schlüsselpaare. +Austin führt Sie durch Hash-Funktionen und Schlüsselpaare. @@ -109,7 +120,9 @@ Austin führt dich durch Hash-Funktionen und Schlüsselpaare. ## Weiterführende Informationen {#further-reading} -_Du kennst Community-Resourcen die dir geholfen haben? Bearbeite diese Seite und füge sie hinzu!_ +- [Ethereum Accounts verstehen](https://info.etherscan.com/understanding-ethereum-accounts/) – Etherscan + +_Gibt es Community-Resourcen, die Sie hilfreich fanden? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ ## Verwandte Themen {#related-topics} diff --git a/src/content/translations/de/developers/docs/apis/backend/index.md b/src/content/translations/de/developers/docs/apis/backend/index.md index 4078585a7a2..db7bb864cde 100644 --- a/src/content/translations/de/developers/docs/apis/backend/index.md +++ b/src/content/translations/de/developers/docs/apis/backend/index.md @@ -1,22 +1,22 @@ --- -title: Backend API-Bibliotheken +title: Backend-API-Bibliotheken description: Eine Einführung in die Ethereum-Client-APIs, über die Sie mit der Blockchain Ihrer Anwendung interagieren können. lang: de --- -Damit eine Softwareanwendung mit der Ethereum-Blockchain interagieren kann (z. B. Lesen von Blockchain-Daten und/oder Senden von Transaktionen an das Netzwerk), muss es sich mit einem Ethereum-Node verbinden. +Damit eine Softwareanwendung mit der Ethereum-Blockchain interagieren kann (z. B. Lesen von Blockchain-Daten und/oder Senden von Transaktionen an das Netzwerk), muss es sich mit einem Ethereum-Knoten verbinden. -Zu diesem Zweck implementiert jeder Ethereum-Client die [JSON-RPC](/developers/docs/apis/json-rpc/)-Spezifikation, damit es einen einheitlichen Satz von [Endpunkten](/developers/docs/apis/json-rpc/#json-rpc-methods) gibt, auf die sich Anwendungen verlassen können. +Zu diesem Zweck implementiert jeder Ethereum-Client die [JSON-RPC](/developers/docs/apis/json-rpc/)-Spezifikation, damit es einen einheitlichen Satz von [Methoden](/developers/docs/apis/json-rpc/#json-rpc-methods) gibt, auf die sich Anwendungen verlassen können. -Wenn Sie eine bestimmte Programmiersprache verwenden möchten, um sich mit einem Ethereum-Node zu verbinden, können Sie auf eine der komfortablen Bibliotheken in diesem Ökosystem zurückgreifen, die Ihnen das Leben erleichtern. Mit diesen Programmbibliotheken können Entwickler intuitive, einzeilige Methoden schreiben, um JSON-RPC-Anfragen ("unter der Haube") zu initialisieren, die mit Ethereum interagieren. +Wenn Sie eine bestimmte Programmiersprache verwenden möchten, um sich mit einem Ethereum-Knoten zu verbinden, können Sie auf eine der komfortablen Bibliotheken in diesem Ökosystem zurückgreifen, die Ihnen das Leben erleichtern. Mit diesen Programmbibliotheken können Entwickler intuitive, einzeilige Methoden schreiben, um JSON-RPC-Anfragen („unter der Haube“) zu initialisieren, die mit Ethereum interagieren. ## Voraussetzungen {#prerequisites} Es könnte hilfreich sein, den [Ethereum-Stack](/developers/docs/ethereum-stack/) und die [Ethereum-Clients](/developers/docs/nodes-and-clients/) zu verstehen. -## Warum eine Programmbibliothek verwenden? {#why-use-a-library} +## Warum eine Bibliothek verwenden? {#why-use-a-library} -Mit diesen Programmbibliotheken lässt sich die direkte Interaktion mit einem Ethereum-Node erheblich vereinfachen. Zudem bieten sie Dienstprogrammfunktionen (z. B. Umwandlung von ETH zu GWei), so dass Sie als Entwickler weniger Zeit damit verbringen, Probleme mit Ethereum-Clients zu lösen, und sich auf die einzigartigen Funktionen Ihrer Applikation konzentrieren können. +Durch Abstraktion vereinfachen diese Programmbibliotheken die komplexe direkte Interaktion mit einem Ethereum-Knoten. Zudem bieten sie auch Dienstprogrammfunktionen (z. B. ETH in GWei umwandeln), so dass Sie als Entwickler weniger Zeit mit den Problemstellungen der Ethereum-Clients verbringen müssen und sich stärker auf die einzigartige Funktion Ihrer Anwendung konzentrieren können. ## Verfügbare Bibliotheken {#available-libraries} @@ -32,22 +32,40 @@ Mit diesen Programmbibliotheken lässt sich die direkte Interaktion mit einem Et - [blockcypher.com](https://www.blockcypher.com/) - [Dokumentation](https://www.blockcypher.com/dev/ethereum/) -**Infura –** **_die Ethereum-API als Dienst_** +**Blast by Bware Labs -** **_Dezentrale APIs für Ethereum Mainnet und Testnetzwerke._** + +- [blastapi.io](https://blastapi.io/) +- [Dokumentation](https://docs.blastapi.io) +- [Discord](https://discord.com/invite/VPkWESgtvV) + +**Infura –** **_Die Ethereum-API als Dienst_** - [infura.io](https://infura.io) - [Dokumentation](https://infura.io/docs) - [GitHub](https://github.com/INFURA) -**Cloudflare-Ethereum-Gateway** +**Cloudflare-Ethereum-Gateway.** - [cloudflare-eth.com](https://cloudflare-eth.com) +**Coinbase Cloud Node -** **_Blockchain Infrastruktur-API._** + +- [Coinbase Cloud Node](https://www.coinbase.com/cloud/products/node) +- [Dokumentation](https://docs.cloud.coinbase.com/node/reference/welcome-to-node) + **DataHub von Figment -** **_Web3-API-Dienste mit Ethereum-Mainnet und -Testnets_** - [DataHub](https://www.figment.io/datahub) - [Dokumentation](https://docs.figment.io/introduction/what-is-datahub) -**Nodesmith –** **_JSON-RPC-API-Zugriff auf Ethereum-Mainnet und -Testnets_** +**NFTPort -** **_Ethereum Daten- und Mint-APIs._** + +- [nftport.xyz](https://www.nftport.xyz/) +- [Dokumentation](https://docs.nftport.xyz/) +- [GitHub](https://github.com/nftport/) +- [Discord](https://discord.com/invite/K8nNrEgqhE) + +**Nodesmith –** **_JSON-RPC-API-Zugriff auf Ethereum-Mainnet und -Testnetzwerke_** - [nodesmith.io](https://nodesmith.io/network/ethereum/) - [Dokumentation](https://nodesmith.io/docs/#/ethereum/apiRef) @@ -56,10 +74,11 @@ Mit diesen Programmbibliotheken lässt sich die direkte Interaktion mit einem Et - [ethercluster.com](https://www.ethercluster.com/) -**Chainstack –** **_geteilte und dedizierte Ethereum-Nodes als Dienst_** +**Chainstack -** **_Elastische und dedizierte Ethereum-Nodes als Dienst._** - [chainstack.com](https://chainstack.com) - [Dokumentation](https://docs.chainstack.com) +- [Ethereum API-Referenz](https://docs.chainstack.com/api/ethereum/ethereum-api-reference) **QuickNode –** **_Blockchain-Infrastruktur als Dienstleistung_** @@ -76,7 +95,7 @@ Mit diesen Programmbibliotheken lässt sich die direkte Interaktion mit einem Et **web3j –** **_eine Java-/Android-/Kotlin-/Scala -Integrationsbibliothek für Ethereum_** - [GitHub](https://github.com/web3j/web3j) -- [Dokumentation](https://docs.web3j.io/) +- [Dokumente](https://docs.web3j.io/) - [Gitter](https://gitter.im/web3j/web3j) **Rivet –** **_Ethereum- und Ethereum Classic-APIs als Service unterstützt durch Open-Source-Software_** @@ -85,7 +104,7 @@ Mit diesen Programmbibliotheken lässt sich die direkte Interaktion mit einem Et - [Dokumentation](https://rivet.cloud/docs/) - [GitHub](https://github.com/openrelayxyz/ethercattle-deployment) -**Nethereum –** **_eine Open-Source-basierte .NET-Integrationsbibliothek für Blockchain_** +**Nethereum -** **_Eine Open Source .NET Integration-Library für Blockchain_** - [GitHub](https://github.com/Nethereum/Nethereum) - [Dokumentation](http://docs.nethereum.com/en/latest/) @@ -111,16 +130,53 @@ Mit diesen Programmbibliotheken lässt sich die direkte Interaktion mit einem Et - [Dokumentation](https://docs.zmok.io/) - [Discord](https://discord.gg/fAHeh3ka6s) +**NOWNodes - _Full Nodes und Block Explorers._** + +- [NOWNodes.io](https://nownodes.io/) +- [Dokumentation](https://documenter.getpostman.com/view/13630829/TVmFkLwy#intro) + +**Moralis -** **_EVM API-Anbieter auf Unternehmensebene._** + +- [moralis.io](http://moralis.io) +- [Dokumentation](https://docs.moralis.io/) +- [GitHub](https://github.com/MoralisWeb3) +- [Discord](https://discord.com/invite/KYswaxwEtg) +- [Forum](https://forum.moralis.io/) + +**Chainbase -** **_All-in-One web3-Dateninfrastruktur für Ethereum._** + +- [chainbase.com](https://chainbase.com/) +- [Dokumentation](https://docs.chainbase.com/) +- [Discord](https://discord.gg/Wx6qpqz4AF) + +**GetBlock-** **_Blockchain als Dienstleistung für Web3-Entwicklung_** + +- [GetBlock.io](https://getblock.io/) +- [Dokumentation](https://getblock.io/docs/) + +**BlockPi -** **_Bereitstellung von effizienteren und schnellen RPC-Diensten_** + +- [blockpi.io](https://blockpi.io/) +- [Dokumentation](https://docs.blockpi.io/) +- [GitHub](https://github.com/BlockPILabs) +- [Discord](https://discord.com/invite/xTvGVrGVZv) + +**Tokenview -** **_Die allgemeine API-Plattform für die Multi-Crypto-Blockchain._** + +- [services.tokenview.io](https://services.tokenview.io/) +- [Dokumentation](https://services.tokeniew/docs?type=api) +- [Github](https://github.com/Tokenview) + ## Weiterführende Informationen {#further-reading} -_Kennen Sie eine Community-Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ +_Sie kennen Community-Resourcen die Ihnen geholfen haben? Bearbeiten Sie diese Seite und fügen Sie sie hinzu!_ ## Verwandte Themen {#related-topics} -- [Nodes und Clients](/developers/docs/nodes-and-clients/) +- [Knotenpunkte und Clients](/developers/docs/nodes-and-clients/) - [Entwicklungs-Frameworks](/developers/docs/frameworks/) ## Ähnliche Tutorials {#related-tutorials} -- [Web3js einrichten, um die Ethereum-Blockchain in JavaScript zu nutzen](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– Leitfaden für die Einrichtung von web3.js in Ihrem Projekt_ -- [Smart Contract von JavaScript abrufen](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– mit dem DAI-Token können Sie die Funktion "Verträge aufrufen" mit JavaScript verwenden_ +- [Web3js einrichten, um die Ethereum-Blockchain in JavaScript zu nutzen](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– Leitfaden für die Einrichtung von web3.js in Ihrem Projekt._ +- [Aufruf eines intelligenten Vertrags mit JavaScript](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– Mit dem DAI-Token können Sie die Funktion „Verträge aufrufen“ mit JavaScript verwenden._ diff --git a/src/content/translations/de/developers/docs/apis/javascript/index.md b/src/content/translations/de/developers/docs/apis/javascript/index.md index 67e1c28023e..845d0262178 100644 --- a/src/content/translations/de/developers/docs/apis/javascript/index.md +++ b/src/content/translations/de/developers/docs/apis/javascript/index.md @@ -6,10 +6,12 @@ lang: de Damit eine Web-Anwendung mit der Ethereum-Blockchain interagieren kann (z. B. Auslesen von Blockchain-Daten und/oder Senden von Transaktionen an das Netzwerk), muss sie sich mit einem Ethereum-Node verbinden. -Zu diesem Zweck implementiert jeder Ethereum-Client die [JSON-RPC](/developers/docs/apis/json-rpc/)-Spezifikation. Damit erhält er einen einheitlichen Satz von [Endpunkten](/developers/docs/apis/json-rpc/endpoints/), auf die sich Anwendungen verlassen können. +Zu diesem Zweck implementiert jeder Ethereum-Client die [JSON-RPC](/developers/docs/apis/json-rpc/)-Spezifikation, damit es einen einheitlichen Satz von [Endpunkten](/developers/docs/apis/json-rpc/#json-rpc-methods) gibt, auf die sich Anwendungen verlassen können. Wenn Sie sich über JavaScript mit einem Ethereum-Node verbinden möchten, ist das auch über VanillaJavaScript möglich. Doch es existieren noch weitere Lösungen in Programmbibliotheken in diesem Ökosystem, die das alles viel einfacher machen. Mit diesen Programmbibliotheken können Entwickler intuitive, einzeilige Methoden schreiben, um JSON-RPC-Anfragen ("unter der Haube") zu initialisieren, die mit Ethereum interagieren. +Bitte beachten Sie, dass seit [der Zusammenführung](/roadmap/merge/) zwei verbundene Teile von Ethereum-Software benötigt werden, um einen Knoten zu betreiben. Ein Ausführungsclient und ein Konsensclient. Bitte stellen Sie sicher, dass Ihr Knoten sowohl über einen Ausführungs- als auch einen Konsensclient verfügt. Wenn sich Ihr Knoten nicht auf einem lokalen Rechner (Ihr Knoten läuft z. B. auf einer AWS-Instanz) befindet, müssen Sie die IP-Adressen im Tutorial entsprechend anpassen. Für weitere Informationen schauen Sie sich unsere Seite zum [Betreiben eines Knotens](/developers/docs/nodes-and-clients/run-a-node/) an. + ## Voraussetzungen {#prerequisites} Sie müssen JavaScript verstehen. Zusätzlich ist es hilfreich, wenn Sie den [Ethereum-Stack](/developers/docs/ethereum-stack/) und [Ethereum-Clients](/developers/docs/nodes-and-clients/) ebenfalls verstehen. @@ -27,12 +29,12 @@ Sie können sich über einen Provider und diese Bibliotheken mit Ethereum verbin **Ether-Beispiel** ```js -// Ein Web3Provider verpackt einen Standard Web3 Provider, dieser ist -// was MetaMask injiziert als window.ethereum in jede Seite +// A Web3Provider wraps a standard Web3 provider, which is +// what MetaMask injects as window.ethereum into each page const provider = new ethers.providers.Web3Provider(window.ethereum) -// Das MetaMask Plugin erlaubt es auch Transaktionen zu signieren um -// Ether zu übertragen und um zu bezahlen für das Wechseln von Status in der Blockchain. +// The MetaMask plugin also allows signing transactions to +// send ether and pay to change state within the blockchain. // Dazu benötigen wir den Unterzeichner vom Konto... const signer = provider.getSigner() ``` @@ -66,13 +68,13 @@ Sobald die Einrichtung abgeschlossen ist, können Sie folgende Abfragen für die - Ressourcen-Schätzung - Smart-Contract-Ereignisse - Netzwerk-ID -- und mehr... +- und weitere... ### Wallet-Funktionalität {#wallet-functionality} -Mit den Funktionen dieser Programmbibliotheken können Sie Wallets erstellen, Schlüssel verwalten und Transaktionen signieren. +Diese Programmbibliotheken bieten Ihnen die Funktionalität, um Wallets zu erstellen, Schlüssel zu verwalten und Transaktionen zu signieren. -Hier ist ein Beispiel von Ether +Hier ist ein Beispiel von Ethers ```js // Erstelle eine Wallet-Instanz aus einem Mnemonik... @@ -142,9 +144,9 @@ wallet.getTransactionCount() wallet.sendTransaction(tx) ``` -[Vollständige Dokumentation lesen](https://docs.ethers.io/v5/api/signer/#Wallet) +[Lesen Sie die ganzen Dokumente](https://docs.ethers.io/v5/api/signer/#Wallet) -Nach der Einrichtung bestehen folgende Möglichkeiten: +Einmal eingerichtet, können Sie: - Konten erstellen - Transaktionen senden @@ -153,11 +155,11 @@ Nach der Einrichtung bestehen folgende Möglichkeiten: ### Mit den Funktionen von Smart Contracts interagieren {#interact-with-smart-contract-functions} -JavaScript-Client-Bibliotheken ermöglichen Ihrer Anwendung, Smart-Contract-Funktionen aufzurufen. Dafür lesen sie die Application Binary Interface (ABI) eines kompilierten Vertrags. +JavaScript-Client-Bibliotheken ermöglichen Ihrer Anwendung, Smart Contract-Funktionen aufzurufen. Dafür lesen sie die Application Binary Interface (ABI) eines kompilierten Vertrags. -Die ABI erklärt im Wesentlichen die Vertragsfunktionen im JSON-Format. Damit können Sie den Vertrag wie ein normales JavaScript-Objekt verwenden. +Die ABI erklärt im Wesentlichen die Funktionen des Vertrags im JSON-Format und erlaubt die Verwendung wie ein normales JavaScript-Objekt. -Folgender Solidity-Vertrag würde... +Also folgender Solidity-Vertrag: ```solidity contract Test { @@ -177,7 +179,7 @@ contract Test { } ``` -... zu nachfolgendem JSON werden: +Würde in nachfolgendem JSON resultieren: ```json [{ @@ -206,7 +208,7 @@ contract Test { }] ``` -Das ermöglicht Folgendes: +Dies bedeutet Sie können: - Sie können eine Transaktion an den Smart Contract senden und seine Methode ausführen. - Sie können eine Ressourcen-Schätzung aufrufen, für die eine Ausführungsmethode in der EVM bei Ausführung erforderlich wird. @@ -255,7 +257,7 @@ ethers.utils.formatEther(balance) - [GitHub](https://github.com/graphprotocol/) - [Discord](https://thegraph.com/discord) -**light.js –** **_Eine reaktive High-Level-JS-Bibliothek, die für Light Clients optimiert wurde_** +**light.js –** **_Eine reaktive High-Level-JS-Bibliothek, die für leichte Clients optimiert wurde._** - [GitHub](https://github.com/openethereum/js-libs/tree/master/packages/light.js) @@ -269,22 +271,27 @@ ethers.utils.formatEther(balance) - [Dokumentation](https://docs.alchemy.com/reference/api-overview) - [GitHub](https://github.com/alchemyplatform/alchemy-web3) -**Alchemy NFT API –** **_API für den Abruf von NFT-Daten, einschließlich Eigentumsrechten, Metadatenattributen und mehr_** +**Alchemy NFT API –** **_API für den Abruf von NFT-Daten, einschließlich Eigentumsrechten, Metadatenattributen und mehr._** - [Dokumentation](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api) - [GitHub](https://github.com/alchemyplatform/alchemy-web3) +**Viem -** **_Schnittstelle in TypeScript für Ethereum._** + +- [Dokumentation](https://viem.sh) +- [GitHub](https://github.com/wagmi-dev/viem) + ## Weiterführende Informationen {#further-reading} -_Kennen Sie eine Community Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ +_Sie kennen Community-Resourcen die Ihnen geholfen haben? Bearbeiten Sie diese Seite und fügen Sie sie hinzu!_ ## Verwandte Themen {#related-topics} - [Knotenpunkte und Clients](/developers/docs/nodes-and-clients/) - [Entwicklungs-Frameworks](/developers/docs/frameworks/) -## Verwandte Tutorials {#related-tutorials} +## Ähnliche Tutorials {#related-tutorials} -- [Web3js einrichten, um die Ethereum-Blockchain in JavaScript zu nutzen](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/)_– so richten Sie web3.js in Ihrem Projekt ein_ -- [Smart Contract mit JavaScript aufrufen](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– Mit dem DAI-Token die Funktion "Verträge aufrufen" mit JavaScript verwenden_ -- [Transaktionen über web3 und Alchemy senden](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) _– Schritt-für-Schritt-Komplettlösung zum Senden von Transaktionen aus dem Backend_ +- [Web3js einrichten, um die Ethereum-Blockchain in JavaScript zu nutzen](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– Leitfaden für die Einrichtung von web3.js in Ihrem Projekt._ +- [Aufruf eines intelligenten Vertrags mit JavaScript](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– Mit dem DAI-Token können Sie die Funktion „Verträge aufrufen“ mit JavaScript verwenden._ +- [Transaktionen über web3 und Alchemy senden](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) _– Schritt-für-Schritt-Komplettlösung zum Senden von Transaktionen aus dem Backend._ diff --git a/src/content/translations/de/developers/docs/apis/json-rpc/index.md b/src/content/translations/de/developers/docs/apis/json-rpc/index.md index 515e108239f..f4f8f0ac6be 100644 --- a/src/content/translations/de/developers/docs/apis/json-rpc/index.md +++ b/src/content/translations/de/developers/docs/apis/json-rpc/index.md @@ -4,16 +4,11 @@ description: Ein zustandsloses, leichtgewichtiges Remote Procedure Call (RPC)-Pr lang: de --- -Damit eine Softwareanwendung mit der Ethereum-Blockchain interagieren kann (indem sie Blockchain-Daten liest und/oder Transaktionen an das Netzwerk sendet), muss sie sich mit einem Ethereum-Node verbinden. +Damit eine Software-Anwendung mit der Ethereum-Blockchain interagieren kann – entweder um Blockchain-Daten zu lesen oder Transaktionen an das Netzwerk zu senden – muss sie mit einem Ethereum-Knoten verbunden werden. -Zu diesem Zweck implementiert jeder [Ethereum-Client](/developers/docs/nodes-and-clients/#execution-clients) eine [JSON-RPC-Spezifikation](http://www.jsonrpc.org/specification). Damit erhält er einen einheitlichen Satz von Methoden, auf die sich Anwendungen verlassen können. +Zu diesem Zweck implementiert jeder [Ethereum-Client](/developers/docs/nodes-and-clients/#execution-clients) eine [JSON-RPC-Spezifikation](https://github.com/ethereum/execution-apis), sodass eine einheitliche Methode vorliegt, auf die sich Anwendungen verlassen können, unabhängig von der spezifischen Nodes oder Client Implementierung. -JSON-RPC ist ein zustandsloses, leichtgewichtiges Remote Procedure Call (RPC)-Protokoll. In erster Linie definiert die Spezifikation verschiedener Datenstrukturen und die Regeln für deren Verarbeitung. Sie ist transportunabhängig, da die Konzepte innerhalb eines Prozesses, über Sockets, über HTTP oder in vielen verschiedenen Nachrichtenübermittlungsumgebungen verwendet werden können. Verwendet wird dabei das Datenformat JSON (RFC 4627). - -## JSON-RPC-Ressourcen {#json-rpc-resources} - -- [JSON-RPC-Spezifikation von Ethereum](https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/ethereum/eth1.0-apis/assembled-spec/openrpc.json&uiSchema[appBar][ui:splitView]=true&uiSchema[appBar][ui:input]=false&uiSchema[appBar][ui:examplesDropdown]=false) -- [JSON-RPC Spezifikation GitHub Repo von Ethereum](https://github.com/ethereum/eth1.0-apis) +[JSON-RPC](https://www.jsonrpc.org/specification) ist ein zustandsloses, leichtgewichtiges Remote-Prozeduraufruf-(RPC)-Protokoll. Es definiert mehrere Datenstrukturen und die Regeln für deren Verarbeitung. Sie ist transportunabhängig, da die Konzepte innerhalb eines Prozesses, über Sockets, über HTTP oder in vielen verschiedenen Nachrichtenübermittlungsumgebungen verwendet werden können. Verwendet wird dabei das Datenformat JSON (RFC 4627). ## Client-Implementierungen {#client-implementations} @@ -23,8 +18,2368 @@ Ethereum-Clients können bei der Implementierung der JSON-RPC-Spezifikation jewe Es ist möglich, über die JSAON-RPC-API direkt mit Ethereum-Clients zu interagieren, doch für dApp-Entwickler gibt es häufig einfachere Optionen. Es gibt viele [JavaScript-](/developers/docs/apis/javascript/#available-libraries) und [Backend-API-](/developers/docs/apis/backend/#available-libraries) Bibliotheken, die Wrapper für die JSON-RPC-API bereitstellen. Mithilfe dieser Bibliotheken können Entwickler intuitive, einzeilige Methoden in der Programmiersprache ihrer Wahl schreiben, um JSON-RPC-Anforderungen (unter der Haube) zu initialisieren, die mit Ethereum interagieren. +## Konsensclient-APIs {#consensus-clients} + +Diese Seite befasst sich hauptsächlich mit der JSON-RPC-API, die von Ethereum-Ausführungsclients verwendet wird. Konsensclients haben jedoch auch eine RPC-API, mit der Benutzer Informationen über den Knoten abfragen sowie Beacon-Blöcke, Beacon-Zustand und andere konsensbezogene Informationen direkt von einem Knoten anfordern können. Diese API ist auf der Webseite [Beacon API](https://ethereum.github.io/beacon-APIs/#/) dokumentiert. + +Es wird auch eine interne API für die Kommunikation zwischen Clients innerhalb eines Knotens verwendet, d. h. sie ermöglicht es dem Konsensclient und dem Ausführungsclient, Daten auszutauschen. Dies wird als „Engine API“ bezeichnet und die Spezifikationen sind auf [GitHub](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) verfügbar. + +## Spezifikationen des Ausführungsclients {#spec} + +[ Lesen Sie die vollständige JSON-RPC-API-Spezifikation auf GitHub](https://github.com/ethereum/execution-apis). + +## Konventionen {#conventions} + +### Hexadezimalwert-Kodierung {#hex-encoding} + +In JSON werden zwei Schlüssel-Datentypen übertragen: Roh-Byte-Arrays und Mengen. Beide werden mit einer Hex-Kodierung übertragen, haben jedoch unterschiedliche Anforderungen an das Format. + +#### Mengen {#quantities-encoding} + +Wenn Mengen (Ganzzahlen, Kommazahlen) kodiert werden: Als Hexadezimalwert kodieren, ein „0x“ als Präfix hinzufügen und die kompakteste Darstellung verwenden (kleine Ausnahme: Null sollte als „0x0“ dargestellt werden). + +Hier sind einige Beispiele: + +- 0x41 (entspricht Dezimalwert 65) +- 0x41 (entspricht Dezimalwert 1024) +- RICHTIG: „0x“ (sollte immer mindestens eine Ziffer enthalten - Null ist „0x0“) +- RICHTIG: „0x400“ (führende Nullen sind nicht zulässig) +- RICHTIG: „0xff“ (muss mit „0x“ prefixiert werden) + +### Unformatierte Daten {#unformatted-data-encoding} + +Wenn unformatierte Daten kodiert werden (Byte-Arrays, Kontoadressen, Hashes, Bytecode-Arrays): Als Hex kodieren, „0x“ als Präfix hinzufügen, zwei Hex-Ziffern pro Byte. + +Hier sind einige Beispiele: + +- 0x41 (Größe 1, „A“) +- 0x004200 (Größe 3, „\0B\0“) +- 0x (Größe 0, "") +- FALSCH: 0xf0f0f (muss eine gerade Anzahl von Ziffern haben) +- FALSCH: 004200 (muss 0x als Präfix hinzufügen) + +### Der Standardblockparameter {#default-block} + +Die folgenden Methoden haben einen zusätzlichen Standardblockparameter: + +- [eth_getBalance](#eth_getbalance) +- [eth_getCode](#eth_getcode) +- [eth_getTransactionCount](#eth_gettransactioncount) +- [eth_getStorageAt](#eth_getstorageat) +- [eth_call](#eth_call) + +Wenn Anfragen gestellt werden, die den Zustand von Ethereum beeinflussen, bestimmt der letzte Standardblockparameter die Höhe des Blocks. + +Folgende Optionen sind für den Standardblockparameter möglich: + +- `HEX String` - eine ganzzahlige Blocknummer +- `String „frühestes“` für den frühesten/Genesis-Block +- `String „neueste“` - für den neuesten abgebauten Block +- `String „sicher“` - für den neuesten sicheren Block +- `String „finalisiert“` - für den neuesten finalisierten Block +- `String „ausstehend“` - für den ausstehenden Zustand/Transaktionen + +## Beispiele + +Auf dieser Seite stellen wir Beispiele dafür bereit, wie man einzelne JSON_RPC API-Endpunkte mit dem Befehlszeilenwerkzeug [curl](https://curl.se) verwendet. Diese Beispiele für einzelne Endpunkte finden sich im Abschnitt [Curl-Beispiele](#curl-examples) unten. Weiter unten auf der Seite stellen wir auch ein [End-to-End-Beispiel](#usage-example) bereit, wie man mithilfe eines Geth-Nodes, der JSON_RPC API und curl einen Smart Contract kompiliert und bereitstellt. + +## Curl-Beispiele {#curl-examples} + +Beispiele zur Verwendung der JSON_RPC-API durch Ausführen von [curl](https://curl.se)-Anfragen an einem Ethereum-Knoten werden unten bereitgestellt. Jedes Beispiel enthält eine Beschreibung des spezifischen Endpunkts, seiner Parameter, seines Rückgabetyps und ein Beispiel dafür, wie es verwendet werden sollte. + +Es kann sein, dass die curl-Anfragen eine Fehlermeldung im Zusammenhang mit dem Inhaltstyp zurückgeben. Das liegt daran, dass die Option `--data` den Inhaltstyp auf `application/x-www-form-urlencoded` festlegt. Wenn Ihr Knoten sich darüber beschwert, setzen Sie den Header manuell, indem Sie am Anfang des Aufrufs `-H "Content-Type: application/json"` platzieren. In den Beispielen ist auch die URL/IP & Port-Kombination nicht enthalten, die als letztes Argument an curl übergeben werden muss (z. B. `127.0.0.1:8545`). Ein vollständiger curl-Aufruf, der diese zusätzlichen Daten enthält, hat folgende Form: + +```shell +curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' 127.0.0.1:8545 +``` + +## Kommunikation, Zustand, Verlauf {#gossip-state-history} + +Eine Handvoll Kernmethoden von JSON-RPC erfordern Daten aus dem Ethereum-Netzwerk und gehören in drei Hauptkategorien: _Kommunikation, Zustand, Verlauf_. Verwenden Sie die Links in diesen Abschnitten, um zu jeder Methode zu springen, oder verwenden Sie das Inhaltsverzeichnis, um die gesamte Liste der Methoden zu durchsuchen. + +### Kommunikationsmethoden {#gossip-methods} + +> Diese Methoden verfolgen die Spitze der Blockchain. Das ist der Weg, wie Transaktionen sich im Netzwerk verbreiten, in Blöcke aufgenommen werden und wie Clients von neuen Blöcken erfahren. + +- [eth_blockNumber](#eth_blocknumber) +- [eth_sendRawTransaction](#eth_sendrawtransaction) + +### Zustandsmethoden {#state_methods} + +> Methoden, die den aktuellen Zustand aller gespeicherten Daten melden. Der „Zustand“ ist wie ein großes gemeinsames Stück RAM und enthält Kontostände, Vertragsdaten und Gasabschätzungen. + +- [eth_getBalance](#eth_getbalance) +- [eth_getStorageAt](#eth_getstorageat) +- [eth_getTransactionCount](#eth_gettransactioncount) +- [eth_getCode](#eth_getcode) +- [eth_call](#eth_call) +- [eth_estimateGas](#eth_estimategas) + +### Verlaufsmethoden {#history_methods} + +> Abrufen historischer Aufzeichnungen jedes Blocks bis zum Genesis-Block. Dies ist wie eine große Nur-hinzufügen-Datei, die alle Blockheaders, Blockinhalte, Onkelblöcke und Transaktionsbelege enthält. + +- [eth_getBlockTransactionCountByHash](#eth_getblocktransactioncountbyhash) +- [eth_getBlockTransactionCountByNumber](#eth_getblocktransactioncountbynumber) +- [eth_getUncleCountByBlockHash](#eth_getunclecountbyblockhash) +- [eth_getUncleCountByBlockNumber](#eth_getunclecountbyblocknumber) +- [eth_getBlockByHash](#eth_getblockbyhash) +- [eth_getBlockByNumber](#eth_getblockbynumber) +- [eth_getTransactionByHash](#eth_gettransactionbyhash) +- [eth_getTransactionByBlockHashAndIndex](#eth_gettransactionbyblockhashandindex) +- [eth_getTransactionByBlockNumberAndIndex](#eth_gettransactionbyblocknumberandindex) +- [eth_getTransactionReceipt](#eth_gettransactionreceipt) +- [eth_getUncleByBlockHashAndIndex](#eth_getunclebyblockhashandindex) +- [eth_getUncleByBlockNumberAndIndex](#eth_getunclebyblocknumberandindex) + +## JSON-RPC API-Methoden {#json-rpc-methods} + +### web3_ClientVersion {#web3_clientversion} + +Gibt die aktuelle Client-Version zurück. + +**Parameter** + +Keine + +**Rückgabewert** + +`String` - Die aktuelle Client-Version + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc":"2.0", + "result": "Mist/v0.9.3/darwin/go1.4.1" +} +``` + +### web3_sha3 {#web3_sha3} + +Gibt Keccak-256 (_nicht_ der standardisierte SHA3-256) von den gegebenen Daten zurück. + +**Parameter** + +1. `DATA` - Die Daten, die in einen SHA3-Hash konvertiert werden sollen + +```js +params: ["0x68656c6c6f20776f726c64"] +``` + +**Rückgabewert** + +`DATA` - Das SHA3-Ergebnis des gegebenen Strings. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64}' +// Result +{ + "id":64, + "jsonrpc": "2.0", + "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad" +} +``` + +### net_version {#net_version} + +Gibt die aktuelle Netzwerk-ID zurück. + +**Parameter** + +Keine + +**Rückgabewert** + +`String` - Die aktuelle Netzwerk-ID. + +Die vollständige Liste der aktuellen Netzwerk-IDs ist verfügbar unter [chainlist.org](https://chainlist.org). Einige häufige sind: + +- `1`: Ethereum Mainnet +- `5`: Goerli Testnetz +- `11155111`: Sepolia Testnetz + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc": "2.0", + "result": "3" +} +``` + +### net_listening {#net_listening} + +Gibt `true` zurück, wenn der Client aktiv auf Netzwerkverbindungen hört. + +**Parameter** + +Keine + +**Rückgabewert** + +`Boolean` - `true`, wenn zuhörend, ansonsten `false`. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc":"2.0", + "result":true +} +``` + +### net_peerCount {#net_peercount} + +Gibt die Anzahl der aktuell mit dem Client verbundenen Peers zurück. + +**Parameter** + +Keine + +**Rückgabewert** + +`QUANTITY` - Ganzzahlwert, der die Anzahl der verbundenen Peers repräsentiert. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}' +// Result +{ + "id":74, + "jsonrpc": "2.0", + "result": "0x2" // 2 +} +``` + +### eth_protocolVersion {#eth_protocolversion} + +Gibt die aktuelle Ethereum-Protokollversion zurück. Beachten Sie, dass diese Methode [nicht in Geth verfügbar](https://github.com/ethereum/go-ethereum/pull/22064#issuecomment-788682924) ist. + +**Parameter** + +Keine + +**Rückgabewert** + +`String` - Die aktuelle Ethereum-Protokollversion + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc": "2.0", + "result": "54" +} +``` + +### eth_syncing {#eth_syncing} + +Gibt ein Objekt mit Daten zum Synchronisierungsstatus oder `false` zurück. + +**Parameter** + +Keine + +**Rückgabewert** + +`Objekt|Boolean`, Ein Objekt mit Synchronisierungsstatus-Daten oder `FALSE`, wenn nicht synchronisiert wird: + +- `startingBlock`: `QUANTITY` - Der Block, bei dem der Import begonnen hat (wird nur zurückgesetzt, nachdem die Synchronisierung ihren Kopf erreicht hat) +- `currentBlock`: `QUANTITY` - Der aktuelle Block, identisch zu eth_blockNumber +- `highestBlock`: `QUANTITY` - Der geschätzte höchste Block + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": { + startingBlock: '0x384', + currentBlock: '0x386', + highestBlock: '0x454' + } +} +// Or when not syncing +{ + "id":1, + "jsonrpc": "2.0", + "result": false +} +``` + +### eth_coinbase {#eth_coinbase} + +Gibt die Coinbase-Adresse des Clients zurück. + +**Parameter** + +Keine + +**Rückgabewert** + +`DATA`, 20 Bytes - die aktuelle Coinbase-Adresse. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":64}' +// Result +{ + "id":64, + "jsonrpc": "2.0", + "result": "0x407d73d8a49eeb85d32cf465507dd71d507100c1" +} +``` + +### eth_chainId {#eth_chainId} + +Gibt die Blockchain-ID zurück, die für das Signieren der Replay-geschützten Transaktionen verwendet wird. + +**Parameter** + +Keine + +**Rückgabewert** + +`chainId`, Hexadezimalwert als String, der den Ganzzahlwert der aktuellen Chain-ID repräsentiert. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc": "2.0", + "result": "0x1" +} +``` + +### eth_mining {#eth_mining} + +Gibt `true` zurück, wenn der Client aktiv neue Blöcke schürft. + +**Parameter** + +Keine + +**Rückgabewert** + +`Boolean` - Gibt `true` zurück, wenn der Client aktiv mint, andernfalls `false`. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":71}' +// +{ + "id":71, + "jsonrpc": "2.0", + "result": true +} +``` + +### eth_hashrate {#eth_hashrate} + +Gibt die Anzahl der Hashes pro Sekunde zurück, mit der die Node mint. + +**Parameter** + +Keine + +**Rückgabewert** + +`QUANTITY` - Anzahl der Hashes pro Sekunde. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":71}' +// Result +{ + "id":71, + "jsonrpc": "2.0", + "result": "0x38a" +} +``` + +### eth_gasPrice {#eth_gasprice} + +Gibt den aktuellen Preis pro Gas in Wei zurück. + +**Parameter** + +Keine + +**Rückgabewert** + +`QUANTITY` - Ganzzahl des aktuellen Gaspreises in Wei. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}' +// Result +{ + "id":73, + "jsonrpc": "2.0", + "result": "0x1dfd14000" // 8049999872 Wei +} +``` + +### eth_accounts {#eth_accounts} + +Gibt eine Liste von Adressen zurück, die dem Client gehören. + +**Parameter** + +Keine + +**Rückgabewert** + +`Array von DATEN`, 20 Bytes - Adressen, die dem Client gehören. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"] +} +``` + +### eth_blockNumber {#eth_blocknumber} + +Gibt die Anzahl des aktuellsten Blocks zurück. + +**Parameter** + +Keine (None) + +**Rückgabewert** + +`QUANTITY` - Ganzzahliger Wert der Blocknummer, auf der sich der Client derzeit befindet. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}' +// Result +{ + "id":83, + "jsonrpc": "2.0", + "result": "0x4b7" // 1207 +} +``` + +### eth_getBalance {#eth_getbalance} + +Gibt das Guthaben des Kontos der angegebenen Adresse zurück. + +**Parameter** + +1. `DATA`, 20 Bytes - Adresse, deren Guthaben überprüft werden soll. +2. `QUANTITY|TAG` – Ganzzahlige Blocknummer oder der String `"latest"`, `"earliest"` oder `"pending"`, siehe [Standardblockparameter](/developers/docs/apis/json-rpc/#default-block) + +```js +params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"] +``` + +**Rückgabewert** + +`QUANTITY` ist ein Ganzzahlwert, der das aktuelle Gleichgewicht in Wei darstellt. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x0234c8a3397aab58" // 158972490234375000 +} +``` + +### eth_getStorageAt {#eth_getstorageat} + +Gibt den Wert aus einer Speicherposition an einer gegebenen Adresse zurück. + +**Parameter** + +1. `DATA`, 20 Bytes - Adresse des Speichers. +2. `QUANTITY` - Ganzzahlwert der Position im Speicher. +3. `QUANTITY|TAG` – Ganzzahlige Blocknummer oder der String `"latest"`, `"earliest"` oder `"pending"`, siehe [Standardblockparameter](/developers/docs/apis/json-rpc/#default-block) + +**Rückgabewert** + +`DATA` - Der Wert an dieser Speicherposition. + +**Beispiel:** Die Berechnung der richtigen Position hängt vom abzurufenden Speicher ab. Betrachten Sie den folgenden Vertrag, der unter `0x295a70b2de5e3953354a6a8344e616ed314d7251` von der Adresse `0x391694e7e0b0cce554cb130d723a9d27458f9298` bereitgestellt wurde. + +``` +contract Storage { + uint pos0; + mapping(address => uint) pos1; + function Storage() { + pos0 = 1234; + pos1[msg.sender] = 5678; + } +} +``` + +Das Abrufen des Wertes von pos0 ist einfach: + +```js +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"} +``` + +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)) +``` + +Das bedeutet, um den Speicher auf pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] abzurufen, müssen wir die Position berechnen mit: + +```js +keccak( + decodeHex( + "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + + "0000000000000000000000000000000000000000000000000000000000000001" + ) +) +``` + +Die Geth-Konsole, die mit der Web3-Bibliothek geliefert wird, kann verwendet werden, um die Berechnung durchzuführen: + +```js +> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001" +undefined +> web3.sha3(key, {"encoding": "hex"}) +"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9" +``` + +Nun, um den Speicher abzurufen: + +```js +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"} +``` + +### eth_getTransactionCount {#eth_gettransactioncount} + +Gibt die Anzahl der _gesendeten_ Transaktionen von einer Adresse zurück. + +**Parameter** + +1. `DATA`, 20 Bytes - Adresse. +2. `QUANTITY|TAG` – Ganzzahlige Blocknummer oder der String `"latest"`, `"earliest"` oder `"pending"`, siehe [Standardblockparameter](/developers/docs/apis/json-rpc/#default-block) + +```js +params: [ + "0x407d73d8a49eeb85d32cf465507dd71d507100c1", + "latest", // state at the latest block +] +``` + +**Rückgabewert** + +`QUANTITY` - Ganzzahlwert der Anzahl der von dieser Adresse gesendeten Transaktionen. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","latest"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_getBlockTransactionCountByHash {#eth_getblocktransactioncountbyhash} + +Gibt die Anzahl der Transaktionen in einem Block zurück, der dem angegebenen Block-Hash entspricht. + +**Parameter** + +1. `DATA`, 32 Bytes - Hash eines Blocks + +```js +params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"] +``` + +**Rückgabewert** + +`QUANTITY` - Ganzzahlwert der Anzahl der Transaktionen in diesem Block. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xb" // 11 +} +``` + +### eth_getBlockTransactionCountByNumber {#eth_getblocktransactioncountbynumber} + +Gibt die Anzahl der Transaktionen in einem Block zurück, die der gegebenen Blocknummer entsprechen. + +**Parameter** + +1. `QUANTITY|TAG` - Ganzzahlwert einer Blocknummer oder der String `"earliest"`, `"latest"` or `"pending"`, wie im [Standardblockparameter](/developers/docs/apis/json-rpc/#default-block) beschrieben. + +```js +params: [ + "0xe8", // 232 +] +``` + +**Rückgabewert** + +`QUANTITY` - Ganzzahlwert der Anzahl der Transaktionen in diesem Block. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xa" // 10 +} +``` + +### eth_getUncleCountByBlockHash {#eth_getunclecountbyblockhash} + +Gibt die Anzahl der Onkel in einem Block zurück, der der gegebenen Blockhash entspricht. + +**Parameter** + +1. `DATA`, 32 Bytes - Hash eines Blocks + +```js +params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"] +``` + +**Rückgabewert** + +`QUANTITY` - Ganzzahlwert für die Anzahl der Onkel in diesem Block. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_getUncleCountByBlockNumber {#eth_getunclecountbyblocknumber} + +Gibt die Anzahl der Onkel in einem Block zurück, der der gegebenen Blocknummer entspricht. + +**Parameter** + +1. `QUANTITY|TAG` - Ganzzahlwert einer Blocknummer oder der String „latest“, „earliest“ oder „pending“, wie im [Standardblockparameter](/developers/docs/apis/json-rpc/#default-block) beschrieben + +```js +params: [ + "0xe8", // 232 +] +``` + +**Rückgabewert** + +`QUANTITY` - Ganzzahlwert für die Anzahl der Onkel in diesem Block. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_getCode {#eth_getcode} + +Gibt den Code an einer gegebenen Adresse zurück. + +**Parameter** + +1. `DATA`, 20 Bytes - Adresse +2. `QUANTITY|TAG` – Ganzzahlige Blocknummer oder der String `"latest"`, `"earliest"` oder `"pending"`, siehe [Standardblockparameter](/developers/docs/apis/json-rpc/#default-block) + +```js +params: [ + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x2", // 2 +] +``` + +**Rückgabewert** + +`DATA` - Der Code von der angegebenen Adresse. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x2"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056" +} +``` + +### eth_sign {#eth_sign} + +Die Methode Unterschrift berechnet eine Ethereum-spezifische Signatur mit: `sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))`. + +Durch das Hinzufügen eines Präfixes zur Nachricht wird die berechnete Signatur als Ethereum-spezifische Signatur erkennbar. Dies verhindert Missbrauch, bei dem eine bösartige dApp beliebige Daten (z. B. Transaktionen) signieren und die Signatur nutzen kann, um sich als Opfer auszugeben. + +Hinweis: Die zum Signieren verwendete Adresse muss entsperrt sein. + +**Parameter** + +1. `DATA`, 20 Bytes - Adresse +2. `DATA`, N Bytes - Nachricht zum Signieren + +**Rückgabewert** + +`DATA`: Signatur + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "0xdeadbeaf"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b" +} +``` + +### eth_signTransaction {#eth_signtransaction} + +Signiert eine Transaktion, die zu einem späteren Zeitpunkt an das Netzwerk gesendet werden kann, indem sie mit [eth_sendRawTransaction](#eth_sendrawtransaction) verwendet wird. + +**Parameter** + +1. `Objekt` - Das Transaktionsobjekt + +- `from`: `DATA`, 20 Bytes - Die Adresse, von der die Transaktion gesendet wird. +- `to`: `DATA`, 20 Bytes - (Optional beim Erstellen eines neuen Vertrags) Die Adresse, an die die Transaktion gerichtet ist. +- `gas`: `MENGE` - (Optional, Standard: 90000) Ganzzahl des Gases, das für die Transaktionsausführung bereitgestellt wurde. Es wird ungenutztes Gas zurückgegeben. +- `gasprice`: `QUANTITY` - (Optional, Standard: Noch zu bestimmen) Ganzzahlwert des Gaspreises, der für jedes bezahlte Gas in Wei verwendet wird. +- `value`: `QUANTITY` - (Optional) Ganzzahlwert, der mit dieser Transaktion in Wei gesendet wird. +- `data`: `DATA` - Der kompilierte Code eines Vertrags ODER der Hash der aufgerufenen Methode Signatur und codierter Parameter. +- `nonce`: `QUANTITY` - (Optional) Ganzzahl einer Nonce. Dies ermöglicht es, eigene ausstehende Transaktionen mit der gleichen Nonce zu überschreiben. + +**Rückgabewert** + +`DATA`, Das signierte Transaktionsobjekt. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"id": 1,"jsonrpc": "2.0","method": "eth_signTransaction","params": [{"data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675","from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","gas": "0x76c0","gasPrice": "0x9184e72a000","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","value": "0x9184e72a"}]}' +// Result +{ + "id": 1, + "jsonrpc": "2.0", + "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b" +} +``` + +### eth_sendTransaction {#eth_sendtransaction} + +Erzeugt eine neue Transaktion für einen Nachrichtenaufruf oder eine Vertragserstellung, wenn das Datenfeld einen Code enthält. + +**Parameter** + +1. `Objekt` - Das Transaktionsobjekt + +- `from`: `DATA`, 20 Bytes - Die Adresse, von der die Transaktion gesendet wird. +- `to`: `DATA`, 20 Bytes - (Optional beim Erstellen eines neuen Vertrags) Die Adresse, an die die Transaktion gerichtet ist. +- `gas`: `MENGE` - (Optional, Standard: 90000) Ganzzahlwert des Gases, das für die Transaktionsausführung bereitgestellt wurde. Es wird ungenutztes Gas zurückgegeben. +- `gasprice`: `QUANTITY` – (Optional, Standard: Noch zu bestimmen) Ganzzahlwert des Gaspreises, der für jedes bezahlte Gas verwendet wird. +- `Value`: `QUANTITY` - (Optional) Ganzzahlwert des mit dieser Transaktion gesendeten Werts. +- `data`: `DATA` - Der kompilierte Code eines Vertrags ODER der Hash der aufgerufenen Methode Signatur und kodierter Parameter. +- `nonce`: `QUANTITY` - (Optional) Ganzzahlwert einer Nonce. Dies ermöglicht es, eigene ausstehende Transaktionen mit der gleichen Nonce zu überschreiben. + +```js +params: [ + { + from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155", + to: "0xd46e8dd67c5d32be8058bb8eb970870f07244567", + gas: "0x76c0", // 30400 + gasPrice: "0x9184e72a000", // 10000000000000 + value: "0x9184e72a", // 2441406250 + data: "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675", + }, +] +``` + +**Rückgabewert** + +`DATA`, 32 Bytes – Der Transaktions-Hash oder der Null-Hash, wenn die Transaktion noch nicht verfügbar ist. + +Verwenden Sie [eth_getTransactionReceipt](#eth_gettransactionreceipt), um die Vertragsadresse zu erhalten, nachdem die Transaktion gemint wurde, als Sie einen Vertrag erstellt haben. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{see above}],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" +} +``` + +### eth_sendRawTransaction {#eth_sendrawtransaction} + +Erstellt eine neue Nachrichtenaufruftransaktion oder eine Vertragserstellung für signierte Transaktionen. + +**Parameter** + +1. `DATA`, Die signierten Transaktionsdaten. + +```js +params: [ + "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675", +] +``` + +**Rückgabewert** + +`DATA`, 32 Bytes – Der Transaktions-Hash oder der Null-Hash, wenn die Transaktion noch nicht verfügbar ist. + +Verwenden Sie [eth_getTransactionReceipt](#eth_gettransactionreceipt), um die Vertragsadresse zu erhalten, nachdem die Transaktion gemint wurde, als Sie einen Vertrag erstellt haben. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[{see above}],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" +} +``` + +### eth_call {#eth_call} + +Führt sofort einen neuen Nachrichtenaufruf aus, ohne eine Transaktion auf der Blockchain zu erstellen. + +**Parameter** + +1. `Object` - Das Transaktionsaufrufobjekt + +- `from`: `DATA`, 20 Bytes - (Optional) Die Adresse, von der die Transaktion gesendet wird. +- `to`: `DATA`, 20 Bytes – Die Adresse, an die die Transaktion gerichtet ist. +- `gas`: `QUANTITY` - (Optional) Ganzzahlwert des für die Transaktionsausführung bereitgestellten Gases. eth_call verbraucht kein Gas, aber dieser Parameter kann von einigen Ausführungen benötigt werden. +- `gasprice`: `QUANTITY` - (Optional) Ganzzahlwert des Gaspreises, der für jedes bezahlte Gas verwendet wird +- `value`: `QUANTITY` - (Optional) Ganzzahlwert des mit dieser Transaktion gesendeten Werts +- `data`: `DATA` - (optional) Hash der Methode Unterschrift und der kodierten Parameter. Einzelheiten finden Sie unter [Ethereum Contract ABI in der Solidity-Dokumentation](https://docs.soliditylang.org/en/latest/abi-spec.html) + +2. `QUANTITY|TAG` – Ganzzahlige Blocknummer oder der String `"latest"`, `"earliest"` oder `"pending"`, siehe [Standardblockparameter](/developers/docs/apis/json-rpc/#default-block) + +**Rückgabewert** + +`DATA` - Der Rückgabewert des ausgeführten Vertrages. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{see above}],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x" +} +``` + +### eth_estimateGas {#eth_estimategas} + +Generiert und gibt eine Schätzung zurück, wie viel Gas erforderlich ist, damit die Transaktion abgeschlossen werden kann. Die Transaktion wird nicht zur Blockchain hinzugefügt. Beachten Sie, dass die Schätzung aus verschiedenen Gründen, einschließlich der EVM-Mechanik und der Leistung des Knotens, erheblich höher sein kann als die tatsächlich von der Transaktion verbrauchte Gasmenge. + +**Parameter** + +Siehe [eth_call](#eth_call)-Parameter, mit Ausnahme, dass alle Eigenschaften optional sind. Wenn kein Gaslimit angegeben ist, verwendet Geth das Blockgaslimit aus dem anstehenden Block als Obergrenze. Infolgedessen reicht die zurückgegebene Schätzung möglicherweise nicht aus, um die Abfrage/Transaktion auszuführen, wenn die Gasmenge höher als das ausstehende Blockgaslimit ist. + +**Rückgabewert** + +`QUANTITY` - Die verbrauchte Gasmenge. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{see above}],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x5208" // 21000 +} +``` + +### eth_getBlockByHash {#eth_getblockbyhash} + +Gibt Informationen zu einem Block per Hash zurück. + +**Parameter** + +1. `DATA`, 32 Bytes - Hash eines Blocks. +2. `Boolean` - Bei `true` werden die vollständigen Transaktionsobjekte zurückgegeben, bei `false` nur die Hashes der Transaktionen. + +```js +params: [ + "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", + false, +] +``` + +**Rückgabewert** + +`Object` - Ein Blockobjekt oder `null`, wenn kein Block gefunden wurde: + +- `number`: `QUANTITY` - Die Blocknummer. `null`, wenn es ein ausstehender Block ist. +- `hash`: `DATA`, 32 Bytes - Hash des Blocks. `null`, wenn es ein ausstehender Block ist. +- `parentHash`: `DATA`, 32 Bytes - Hash des übergeordneten Blocks. +- `nonce`: `DATA`, 8 Bytes - Hash des generierten Proof-of-Work. `null`, wenn es ein ausstehender Block ist. +- `sha3Uncles`: `DATA`, 32 Bytes - SHA3 der Onkeldaten im Block. +- `logsBloom`: `DATA`, 256 Bytes - Der Bloom-Filter für die Protokolle des Blocks. `null`, wenn es ein ausstehender Block ist. +- `TransaktionsRoot`: `DATA`, 32 Bytes - Das Stammverzeichnis der Transaktions-Trie des Blocks. +- `stateRoot`: `DATA`, 32 Bytes – Die Wurzel des endgültigen Zustands-Trie des Blocks. +- `receiptsRoot`: `DATA`, 32 Bytes - Die Wurzel des Quittungstries des Blocks. +- `miner`: `DATA`, 20 Bytes - Die Adresse des Begünstigten, dem die Mining-Belohnungen gegeben wurden. +- `difficulty`: `QUANTITY` - Ganzzahlwert der Schwierigkeit für diesen Block. +- `totalDifficulty`: `QUANTITY` - Ganzzahlwert der Gesamtschwierigkeit der Blockchain bis zu diesem Block. +- `extraData`: `DATA` - Das Feld „zusätzliche Daten“ dieses Blocks. +- `size`: `QUANTITY` - Ganzzahlwert der Größe dieses Blocks in Bytes. +- `gasLimit`: `QUANTITY` - Das maximal zulässige Gas in diesem Block. +- `gasUsed`: `QUANTITY` - Das insgesamt von allen Transaktionen in diesem Block verbrauchte Gas. +- `timestamp`: `QUANTITY` - Der Unix-Zeitstempel für den Zeitpunkt, zu dem der Block sortiert wurde. +- `transactions`: `Array` - Array von Transaktionsobjekten oder 32-Byte-Transaktions-Hashes, abhängig vom zuletzt angegebenen Parameter. +- `uncles`: `Array` - Array von Onkel-Hashes. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", false],"id":1}' +// Result +{ +{ +"jsonrpc": "2.0", +"id": 1, +"result": { + "difficulty": "0x4ea3f27bc", + "extraData": "0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32", + "gasLimit": "0x1388", + "gasUsed": "0x0", + "hash": "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "miner": "0xbb7b8287f3f0a933474a79eae42cbca977791171", + "mixHash": "0x4fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843", + "nonce": "0x689056015818adbe", + "number": "0x1b4", + "parentHash": "0xe99e022112df268087ea7eafaf4790497fd21dbeeb6bd7a1721df161a6657a54", + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "size": "0x220", + "stateRoot": "0xddc8b0234c2e0cad087c8b389aa7ef01f7d79b2570bccb77ce48648aa61c904d", + "timestamp": "0x55ba467c", + "totalDifficulty": "0x78ed983323d", + "transactions": [ + ], + "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncles": [ + ] +} +} +``` + +### eth_getBlockByNumber {#eth_getblockbynumber} + +Gibt Informationen über eine Block-für-Block-Nummer zurück. + +**Parameter** + +1. `QUANTITY|TAG` - Ganzzahlwert einer Blocknummer oder der String `"earliest"`, `"latest"` or `"pending"`, wie im [Standardblockparameter](/developers/docs/apis/json-rpc/#default-block) beschrieben. +2. `Boolean` - Bei `true` werden die vollständigen Transaktionsobjekte zurückgegeben, bei `false` nur die Hashes der Transaktionen. + +```js +params: [ + "0x1b4", // 436 + true, +] +``` + +**Rückgabewerte** Siehe [eth_getBlockByHash](#eth_getblockbyhash) + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1b4", true],"id":1}' +``` + +Ergebnis siehe [eth_getBlockByHash](#eth_getblockbyhash) + +### eth_getTransactionByHash {#eth_gettransactionbyhash} + +Gibt die Informationen über eine Transaktion zurück, die anhand des Transaktions-Hashs angefordert wurde. + +**Parameter** + +1. `DATA`, 32 Bytes - Hash einer Transaktion + +```js +params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"] +``` + +**Rückgabewert** + +`Object` - Ein Transaktionsobjekt oder `null`, wenn keine Transaktion gefunden wurde: + +- `blockHash`: `DATA`, 32 Bytes - Hash des Blocks, in dem sich diese Transaktion befand. `null`, wenn es aussteht. +- `blockNumber`: `QUANTITY` - Blocknummer, in der sich diese Transaktion befand. `null`, wenn es aussteht. +- `from`: `DATA`, 20 Bytes - Adresse des Senders. +- `gas`: `QUANTITY` - Vom Sender bereitgestelltes Gas. +- `gasPrice`: `QUANTITY` - Vom Sender bereitgestellter Gaspreis in Wei. +- `hash`: `DATA`, 32 Bytes - Hash der Transaktion. +- `input`: `DATA` - Die mit der Transaktion gesendeten Daten. +- `nonce`: `QUANTITY` - Die Anzahl der von dem Sender vor dieser Transaktion durchgeführten Transaktionen. +- `to`: `DATA`, 20 Bytes - Adresse des Empfängers. `null` wenn es sich um eine Vertragserstellungstransaktion handelt. +- `transactionIndex`: `QUANTITY` - Ganzzahlwert der Transaktionsindexposition im Block. `null`, wenn es aussteht. +- `value`: `QUANTITY` - Der übertragene Wert in Wei. +- `v`: `QUANTITY` - ECDSA Wiederherstellungs-ID +- `r`: `QUANTITY` - ECDSA Signatur r +- `s`: `QUANTITY` - ECDSA Signatur s + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"],"id":1}' +// Result +{ + "jsonrpc":"2.0", + "id":1, + "result":{ + "blockHash":"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", + "blockNumber":"0x5daf3b", // 6139707 + "from":"0xa7d9ddbe1f17865597fbd27ec712455208b6b76d", + "gas":"0xc350", // 50000 + "gasPrice":"0x4a817c800", // 20000000000 + "hash":"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b", + "input":"0x68656c6c6f21", + "nonce":"0x15", // 21 + "to":"0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb", + "transactionIndex":"0x41", // 65 + "value":"0xf3dbb76162000", // 4290000000000000 + "v":"0x25", // 37 + "r":"0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea", + "s":"0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c" + } +} +``` + +### eth_getTransactionByBlockHashAndIndex {#eth_gettransactionbyblockhashandindex} + +Gibt Informationen über eine Transaktion anhand des Block-Hashs und der Transaktionsindexposition zurück. + +**Parameter** + +1. `DATA`, 32 Bytes - Hash eines Blocks. +2. `QUANTITY` - Ganzzahlwert der Transaktionsindexposition. + +```js +params: [ + "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", + "0x0", // 0 +] +``` + +**Rückgabewert** Siehe [eth_getTransactionByHash](#eth_gettransactionbyhash) + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}' +``` + +Ergebnis siehe [eth_getTransactionByHash](#eth_gettransactionbyhash) + +### eth_getTransactionByBlockNumberAndIndex {#eth_gettransactionbyblocknumberandindex} + +Gibt Informationen über eine Transaktion anhand der Blocknummer und der Transaktionsindexposition zurück. + +**Parameter** + +1. `QUANTITY|TAG` - Eine Blocknummer oder die Zeichenfolge `"earliest"`, `"latest"` oder `"pending"`, wie im [Standardblockparameter](/developers/docs/apis/json-rpc/#default-block). +2. `QUANTITY` - Die Transaktionsindexposition. + +```js +params: [ + "0x29c", // 668 + "0x0", // 0 +] +``` + +**Rückgabewert** Siehe [eth_getTransactionByHash](#eth_gettransactionbyhash) + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}' +``` + +Ergebnis siehe [eth_getTransactionByHash](#eth_gettransactionbyhash) + +### eth_getTransactionReceipt {#eth_gettransactionreceipt} + +Gibt den Beleg einer Transaktion anhand des Transaktions-Hashs zurück. + +**Hinweis** Der Beleg ist für ausstehende Transaktionen nicht verfügbar. + +**Parameter** + +1. `DATA`, 32 Bytes - Hash einer Transaktion + +```js +params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"] +``` + +**Rückgabewert** `Object` - Ein Transaktionsbeleg-Objekt oder `null`, wenn kein Beleg gefunden wurde: + +- `transactionHash`: `DATA`, 32 Bytes - Hash der Transaktion. +- `transactionIndex`: `QUANTITY` - Ganzzahlwert der Transaktionsindexposition im Block. +- `blockHash`: `DATA`, 32 Bytes - Hash des Blocks, in dem sich diese Transaktion befand. +- `blockNumber`: `QUANTITY` - Blocknummer, in der sich diese Transaktion befand. +- `from`: `DATA`, 20 Bytes - Adresse des Senders. +- `to`: `DATA`, 20 Bytes - Adresse des Empfängers. null, wenn es sich um eine Vertragserstellungstransaktion handelt. +- `cumulativeGasUsed` : `QUANTITY` - Die Gesamtmenge an Gas, die bei Ausführung dieser Transaktion im Block verwendet wurde. +- `effectiveGasPrice` : `QUANTITY` - Die Summe der Grundgebühr und der Tipp, die pro Einheit Gas bezahlt wurde. +- `gasUsed`: `QUANTITY` - Die Menge an Gas, die von dieser bestimmten Transaktion allein verwendet wurde. +- `contractAddress`: `DATA`, 20 Bytes - Die Vertragsadresse, die erstellt wurde, falls die Transaktion eine Vertragserstellung war, andernfalls `null`. +- `logs`: `Array` - Array von Log-Objekten, die diese Transaktion generiert hat. +- `logsBloom`: `DATA`, 256 Bytes - Bloom-Filter für leichte Clients, um schnell verwandte Logs abzurufen. +- `type`: `QUANTITY` - Ganzzahlwert des Transaktionstyps, `0x0` für veraltete Transaktionen, `0x1` für Zugriffslistentypen, `0x2` für dynamische Gebühren. + +Es gibt auch _entweder_ zurück: + +- `root` : `DATA` 32 Bytes des vorherigen Transaktions-Stateroots (vor Byzantium) +- `status`: `QUANTITY` entweder `1` (Erfolg) or `0` (Fehler) + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"],"id":1}' +// Result +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "blockHash": + "0xa957d47df264a31badc3ae823e10ac1d444b098d9b73d204c40426e57f47e8c3", + "blockNumber": "0xeff35f", + "contractAddress": null, // string of the address if it was created + "cumulativeGasUsed": "0xa12515", + "effectiveGasPrice": "0x5a9c688d4", + "from": "0x6221a9c005f6e47eb398fd867784cacfdcfff4e7", + "gasUsed": "0xb4c8", + "logs": [{ + // logs as returned by getFilterLogs, etc. + }], + "logsBloom": "0x00...0", // 256 byte bloom filter + "status": "0x1", + "to": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "transactionHash": + "0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5", + "transactionIndex": "0x66", + "type": "0x2" + } +} +``` + +### eth_getUncleByBlockHashAndIndex {#eth_getunclebyblockhashandindex} + +Gibt Informationen über einen Onkel eines Blocks anhand von Hash und Onkel-Indexposition zurück. + +**Parameter** + +1. `DATA`, 32 Bytes - Der Hash eines Blocks. +2. `QUANTITY` - Die Indexposition des Onkels. + +```js +params: [ + "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", + "0x0", // 0 +] +``` + +**Rückgabewerte** Siehe [eth_getBlockByHash](#eth_getblockbyhash) + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}' +``` + +Ergebnis siehe [eth_getBlockByHash](#eth_getblockbyhash) + +**Hinweis**: Ein Onkel enthält keine einzelnen Transaktionen. + +### eth_getUncleByBlockNumberAndIndex {#eth_getunclebyblocknumberandindex} + +Gibt Informationen über einen Onkel eines Blocks nach Nummer und Indexposition des Onkels zurück. + +**Parameter** + +1. `QUANTITY|TAG` - Eine Blocknummer oder die Zeichenfolge `"earliest"`, `"latest"` oder `"pending"`, wie im [Standardblockparameter](/developers/docs/apis/json-rpc/#default-block). +2. `QUANTITY` - Die Indexposition des Onkels. + +```js +params: [ + "0x29c", // 668 + "0x0", // 0 +] +``` + +**Rückgabewerte** Siehe [eth_getBlockByHash](#eth_getblockbyhash) + +**Hinweis**: Ein Onkel enthält keine einzelnen Transaktionen. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}' +``` + +Ergebnis siehe [eth_getBlockByHash](#eth_getblockbyhash) + +### eth_getCompilers {#eth_getcompilers} + +Gibt eine Liste der verfügbaren Compiler im Client zurück. + +**Parameter** Keine + +**Rückgabewerte** `Array` – Array der verfügbaren Compiler. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCompilers","params":[],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": ["solidity", "lll", "serpent"] +} +``` + +### eth_compileSolidity {#eth_compile_solidity} + +Gibt kompilierten Solidity Code zurück. + +**Parameter** + +1. `String` - Der Quellcode. + +```js +params: [ + "contract test { function multiply(uint a) returns(uint d) { return a * 7; } }", +] +``` + +**Rückgabewerte** `DATA` - Der kompilierte Quellcode. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSolidity","params":["contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": { + "code": "0x605880600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b603d6004803590602001506047565b8060005260206000f35b60006007820290506053565b91905056", + "info": { + "source": "contract test {\n function multiply(uint a) constant returns(uint d) {\n return a * 7;\n }\n}\n", + "language": "Solidity", + "languageVersion": "0", + "compilerVersion": "0.9.19", + "abiDefinition": [ + { + "constant": true, + "inputs": [ + { + "name": "a", + "type": "uint256" + } + ], + "name": "multiply", + "outputs": [ + { + "name": "d", + "type": "uint256" + } + ], + "type": "function" + } + ], + "userDoc": { + "methods": {} + }, + "developerDoc": { + "methods": {} + } + } +} +``` + +### eth_compileLLL {#eth_compileLLL} + +Gibt kompilierten LLL Code zurück. + +**Parameter** + +1. `String` - Der Quellcode. + +```js +params: ["(returnlll (suicide (caller)))"] +``` + +**Rückgabewerte** `DATA` - Der kompilierte Quellcode. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileLLL","params":["(returnlll (suicide (caller)))"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056" // the compiled source code +} +``` + +### eth_compileSerpent {#eth_compileserpent} + +Gibt kompilierten Serpent Code zurück. + +**Parameter** + +1. `String` - Der Quellcode. + +```js +params: ["/* some serpent */"] +``` + +**Rückgabewerte** `DATA` - Der kompilierte Quellcode. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSerpent","params":["/* some serpent */"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056" // the compiled source code +} +``` + +### eth_newFilter {#eth_newfilter} + +Erstellt, basierend auf den Filteroptionen, ein Filterobjekt. Wenn sich der Status ändert, erfolgt eine Benachrichtung (Protokolle). Um zu überprüfen, ob sich der Status geändert hat, rufen Sie [eth_getFilterChanges](#eth_getfilterchanges) auf. + +**Hinweis zum Festlegen von Themenfiltern:** Themen sind auftragsabhängig. Eine Transaktion mit einem Protokoll mit den Themen [A, B] wird mit den folgenden Themenfiltern abgeglichen: + +- `[]` „alles“ +- `[A]` „A an erster Stelle (und alles danach)“ +- `[null, B]` „Alles an erster Stelle UND B an zweiter Stelle (und alles danach)“ +- `[A, B]` „A an erster Stelle UND B an zweiter Stelle (und alles danach)“ +- `[[A, B], [A, B]]` „(A ODER B) an erster Stelle UND (A ODER B) an zweiter Stelle (und alles danach)“ +- **Parameter** + +1. `Objekt` - Die Filteroptionen: + +- `fromBlock`: `QUANTITY|TAG` - (optional, Standard: `"latest"`) Ganzzahlige Blocknummer oder `"latest"` für den letzten geminten Block oder `"pending"`, `"earliest"` für noch nicht geminte Transaktionen. +- `toBlock`: `QUANTITY|TAG` - (Optional, Standard: `"latest"`) Ganzzahlige Blocknummer oder `"latest"` für den letzten geminten Block oder `"pending"`, `"earliest"` für noch nicht geminte Transaktionen. +- `Adresse`: `DATA|Array`, 20 Bytes - (Optional) Vertragsadresse oder eine Liste von Adressen, von denen Protokolle stammen sollen. +- `topics`: `Array of DATA`, - (Optional) Array von 32 Bytes `DATA`-Themen. Themen sind auftragsabhängig. Jedes Thema kann auch ein Array von DATEN mit „oder“-Optionen sein. + +```js +params: [ + { + fromBlock: "0x1", + toBlock: "0x2", + address: "0x8888f1f195afa192cfee860698584c030f4c9db1", + topics: [ + "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + null, + [ + "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x0000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc", + ], + ], + }, +] +``` + +**Rückgabewerte** `QUANTITY` - Eine Filter-ID. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x12341234"]}],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_newBlockFilter {#eth_newblockfilter} + +Erstellt einen Filter im Knoten, um Sie zu benachrichtigen, wenn ein neuer Block ankommt. Um zu überprüfen, ob sich der Status geändert hat, rufen Sie [eth_getFilterChanges](#eth_getfilterchanges) auf. + +**Parameter** Keine + +**Rückgabewerte** `QUANTITY` - Eine Filter-ID. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_newPendingTransactionFilter {#eth_newpendingtransactionfilter} + +Erstellt einen Filter im Knoten, um Sie zu benachrichtigen, wenn eine neue ausstehende Transaktionen eintrifft. Um zu überprüfen, ob sich der Status geändert hat, rufen Sie [eth_getFilterChanges](#eth_getfilterchanges) auf. + +**Parameter** Keine + +**Rückgabewerte** `QUANTITY` - Eine Filter-ID. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_uninstallFilter {#eth_uninstallfilter} + +Deinstalliert einen Filter mit gegebener ID. Sollte immer aufgerufen werden, wenn die Uhr nicht mehr benötigt wird. Zusätzlich Timeout für Filter, wenn sie für einen bestimmten Zeitraum nicht mit [eth_getFilterChanges](#eth_getfilterchanges) angefordert werden. + +**Parameter** + +1. `QUANTITY` – Die Filter-ID. + +```js +params: [ + "0xb", // 11 +] +``` + +**Rückgabewerte** `Boolean` - `true`, wenn der Filter erfolgreich deinstalliert wurde, andernfalls `false`. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0xb"],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": true +} +``` + +### eth_getFilterChanges {#eth_getfilterchanges} + +Abfragemethode für einen Filter, der ein Array von Protokollen zurückgibt, die seit der letzten Abfrage aufgetreten sind. + +**Parameter** + +1. `QUANTITY` – Die Filter-ID. + +```js +params: [ + "0x16", // 22 +] +``` + +**Rückgabewerte** `Array` - Array von Protokollobjekten oder ein leeres Array, wenn sich seit der letzten Abfrage nichts geändert hat. + +- Für mit `eth_newBlockFilter` erstellte Filter sind die Rückgabewerte Block-Hashes (`DATA`, 32 Bytes), z. `["0x3454645634534..."]`. +- Für Filter, die mit `eth_newPendingTransactionFilter` erstellt wurden, sind die Rückgabewerte Transaktions-Hashes (`DATA`, 32 Bytes), z. `["0x6345343454645..."]`. +- Für mit `eth_newFilter` erstellte Filter sind Protokolle Objekte mit folgenden Parametern: + - `removed`: `TAG` - `true`, als das Protokoll aufgrund einer Neustrukturierung der Blockchain entfernt wurde. `false`, wenn es sich um ein gültiges Protokoll handelt. + - `logIndex`: `QUANTITY` – Ganzzahlwert der Protokollindexposition im Block. `null`, wenn es sich um ein ausstehendes Protokoll handelt. + - `transactionIndex`: `QUANTITY` - Ganzzahlwert der Transaktionsindexposition, aus der das Protokoll erstellt wurde. `null`, wenn es sich um ein ausstehendes Protokoll handelt. + - `transactionHash`: `DATA`, 32 Bytes - Hash der Transaktionen, aus denen dieses Protokoll erstellt wurde. `null`, wenn es sich um ein ausstehendes Protokoll handelt. + - `blockHash`: `DATA`, 32 Bytes - Hash des Blocks, in dem sich dieses Protokoll befand. `null`, wenn es aussteht. `null`, wenn es sich um ein ausstehendes Protokoll handelt. + - `blockNumber`: `QUANTITY` - Die Blocknummer, in der sich dieses Protokoll befand. `null`, wenn es aussteht. `null`, wenn es sich um ein ausstehendes Protokoll handelt. + - `Adresse`: `DATA`, 20 Bytes - Adresse, von der dieses Protokoll stammt. + - `data`: `DATA` - Enthält ein oder mehrere nicht indizierte 32 Byte Argumente des Protokolls. + - `topics`: `Array of DATA` - Array von 0 bis 4 32 Bytes `DATA` von indizierten Protokollargumenten. (In _Solidity_: Das erste Thema ist der _Hash_ der Signatur des Ereignisses (z. B. `Deposit (address,bytes32,uint256)`), es sei denn, Sie haben das Ereignis mit dem `anonymous`-Spezifizierer deklariert.) +- **Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0x16"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": [{ + "logIndex": "0x1", // 1 + "blockNumber":"0x1b4", // 436 + "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d", + "transactionHash": "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf", + "transactionIndex": "0x0", // 0 + "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d", + "data":"0x0000000000000000000000000000000000000000000000000000000000000000", + "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"] + },{ + ... + }] +} +``` + +### eth_getFilterLogs {#eth_getfilterlogs} + +Gibt ein Array aller Protokolle zurück, die dem Filter mit der angegebenen ID entsprechen. + +**Parameter** + +1. `QUANTITY` – Die Filter-ID. + +```js +params: [ + "0x16", // 22 +] +``` + +**Rückgabewerte** Siehe [eth_getFilterChanges](#eth_getfilterchanges) + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x16"],"id":74}' +``` + +Ergebnis siehe [eth_getFilterChanges](#eth_getfilterchanges) + +### eth_getLogs {#eth_getlogs} + +Gibt ein Array aller Protokolle zurück, die mit einem bestimmten Filterobjekt übereinstimmen. + +**Parameter** + +1. `Object` - Die Filteroptionen: + +- `fromBlock`: `QUANTITY|TAG` - (optional, Standard: `"latest"`) Ganzzahlige Blocknummer oder `"latest"` für den letzten geminten Block oder `"pending"`, `"earliest"` für noch nicht geminte Transaktionen. +- `toBlock`: `QUANTITY|TAG` - (Optional, Standard: `"latest"`) Ganzzahlige Blocknummer oder `"latest"` für den letzten geminten Block oder `"pending"`, `"earliest"` für noch nicht geminte Transaktionen. +- `Adresse`: `DATA|Array`, 20 Bytes - (Optional) Vertragsadresse oder eine Liste von Adressen, von denen Protokolle stammen sollen. +- `topics`: `Array of DATA`, - (Optional) Array von 32 Bytes `DATA`-Themen. Themen sind auftragsabhängig. Jedes Thema kann auch ein Array von DATEN mit „oder“-Optionen sein. +- `blockhash`: `DATA`, 32 Bytes - (optional, **future**) Mit dem Hinzufügen von EIP-234 wird `blockHash` eine neue Filteroption sein, die die zurückgegebenen Protokolle auf den einzelnen Block mit dem 32-Byte-Hash `blockHash` beschränkt. Die Verwendung von `blockHash` entspricht `fromBlock` = `toBlock` = die Blocknummer mit Hash `blockHash`. Wenn `blockHash` in den Filterkriterien vorhanden ist, sind weder `fromBlock` noch `toBlock` zulässig. + +```js +params: [ + { + topics: [ + "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + ], + }, +] +``` + +**Rückgabewerte** Siehe [eth_getFilterChanges](#eth_getfilterchanges) + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":74}' +``` + +Ergebnis siehe [eth_getFilterChanges](#eth_getfilterchanges) + +### eth_getWork {#eth_getwork} + +Gibt den Hash des aktuellen Blocks, den SeedHash und die zu erfüllende Randbedingung („Ziel“) zurück. + +**Parameter** Keine + +**Rückgabewerte** `Array` - Array mit den folgenden Eigenschaften: + +1. `DATA`, 32 Bytes - Pow-Hash des aktuellen Block-Headers +2. `DATA`, 32 Bytes – Der Seed-Hash, der für den DAG verwendet wird. +3. `DATA`, 32 Bytes - die Randbedingung („Ziel“), 2^256 / Schwierigkeitsgrad. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getWork","params":[],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": [ + "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", + "0x5EED00000000000000000000000000005EED0000000000000000000000000000", + "0xd1ff1c01710000000000000000000000d1ff1c01710000000000000000000000" + ] +} +``` + +### eth_submitWork {#eth_submitwork} + +Wird zum Einreichen einer Proof-of-Work-Lösung verwendet. + +**Parameter** + +1. `DATA`, 8 Bytes - Die gefundene Nonce (64 Bit) +2. `DATA`, 32 Bytes - Der Pow-Hash des Headers (256 Bit) +3. `DATA`, 32 Bytes - Der Mix Digest (256 Bit) + +```js +params: [ + "0x0000000000000001", + "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", + "0xD1FE5700000000000000000000000000D1FE5700000000000000000000000000", +] +``` + +**Rückgabewerte** `Boolean` - gibt `true` zurück, wenn die bereitgestellte Lösung gültig ist, andernfalls `false`. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":73}' +// Result +{ + "id":73, + "jsonrpc":"2.0", + "result": true +} +``` + +### eth_submitHashrate {#eth_submithashrate} + +Wird zum Senden der Mining-Hashrate verwendet. + +**Parameter** + +1. `Hashrate`, eine hexadezimale String-Darstellung (32 Byte) der Hashrate +2. `ID`, String – Eine zufällige hexadezimale (32 Byte) ID, die den Client identifiziert + +```js +params: [ + "0x0000000000000000000000000000000000000000000000000000000000500000", + "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c", +] +``` + +**Rückgabewerte** `Boolean` - gibt `true` zurück, wenn die Übermittlung erfolgreich war, andernfalls `false`. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":["0x0000000000000000000000000000000000000000000000000000000000500000", "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"],"id":73}' +// Result +{ + "id":73, + "jsonrpc":"2.0", + "result": true +} +``` + +### db_putString (veraltet) {#db_putstring} + +Speichert einen String in der lokalen Datenbank. + +**Hinweis** diese Funktion ist veraltet. + +**Parameter** + +1. `String` - Name der Datenbank. +2. `String` - Name des Schlüssels. +3. `String` - Zu speichernder String. + +```js +params: ["testDB", "myKey", "myString"] +``` + +**Rückgabewerte** `Boolean` - gibt `true` zurück, wenn der Wert gespeichert wurde, andernfalls `false`. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"db_putString","params":["testDB","myKey","myString"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": true +} +``` + +### db_getString (veraltet) {#db_getstring} + +Gibt String aus der lokalen Datenbank zurück. **Hinweis** diese Funktion ist veraltet. + +**Parameter** + +1. `String` - Name der Datenbank. +2. `String` - Name des Schlüssels. + +```js +params: ["testDB", "myKey"] +``` + +**Rückgabewerte** `String` - Der zuvor gespeicherte String. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"db_getString","params":["testDB","myKey"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": "myString" +} +``` + +### db_putHex (veraltet) {#db_puthex} + +Speichert Binärdaten in der lokalen Datenbank. **Hinweis** diese Funktion ist veraltet. + +**Parameter** + +1. `String` - Name der Datenbank. +2. `String` - Name des Schlüssels. +3. `DATA` - Die zu speichernden Daten. + +```js +params: ["testDB", "myKey", "0x68656c6c6f20776f726c64"] +``` + +**Rückgabewerte** `Boolean` - gibt `true` zurück, wenn der Wert gespeichert wurde, andernfalls `false`. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"db_putHex","params":["testDB","myKey","0x68656c6c6f20776f726c64"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": true +} +``` + +### db_getHex (veraltet) {#db_gethex} + +Gibt Binärdaten aus der lokalen Datenbank zurück. **Hinweis** diese Funktion ist veraltet. + +**Parameter** + +1. `String` - Name der Datenbank. +2. `String` - Name des Schlüssels. + +```js +params: ["testDB", "myKey"] +``` + +**Rückgabewerte** `DATA` - Die zuvor gespeicherten Daten. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"db_getHex","params":["testDB","myKey"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": "0x68656c6c6f20776f726c64" +} +``` + +### shh_version (veraltet) {#shh_post} + +Gibt die aktuelle Whisper-Protokollversion zurück. + +**Hinweis** diese Funktion ist veraltet. + +**Parameter** Keine + +**Rückgabewerte** `String` - Die aktuelle Version des Whisper-Protokolls + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_version","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc": "2.0", + "result": "2" +} +``` + +### shh_post (veraltet) {#shh_version} + +Sendet eine Flüsternachricht. + +**Hinweis** diese Funktion ist veraltet. + +**Parameter** + +1. `Object` - Das Flüsterpost-Objekt: + +- `from`: `DATA`, 60 Bytes - (Optional) Die Identität des Absenders. +- `to`: `DATA`, 60 Bytes - (Optional) Die Identität des Empfängers. Wenn vorhanden, wird Flüstern die Nachricht verschlüsseln, so dass nur der Empfänger sie entschlüsseln kann. +- `topics`: `Array of DATA` - Array von `DATA`-Themen, damit der Empfänger Nachrichten identifizieren kann. +- `Payload`: `DATA` - Die Nutzlast der Nachricht. +- `Priorität`: `QUANTITY` - Der Ganzzahlwert der Priorität in einem Bereich von ... (?). +- `ttl`: `QUANTITY` - Ganzzahlwert der verbleibenden Zeit in Sekunden. + +```js +params: [ + { + from: "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1", + to: "0x3e245533f97284d442460f2998cd41858798ddf04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a0d4d661997d3940272b717b1", + topics: [ + "0x776869737065722d636861742d636c69656e74", + "0x4d5a695276454c39425154466b61693532", + ], + payload: "0x7b2274797065223a226d6", + priority: "0x64", + ttl: "0x64", + }, +] +``` + +**Rückgabewerte** `Boolean` - gibt `true` zurück, wenn die Nachricht gesendet wurde, andernfalls `false`. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_post","params":[{"from":"0xc931d93e97ab07fe42d923478ba2465f2..","topics": ["0x68656c6c6f20776f726c64"],"payload":"0x68656c6c6f20776f726c64","ttl":0x64,"priority":0x64}],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": true +} +``` + +### shh_newIdentity (veraltet){#shh_newidentity} + +Erstellt eine neue Flüsteridentität im Client. + +**Hinweis** diese Funktion ist veraltet. + +**Parameter** Keine + +**Rückgabewerte** `DATA`, 60 Bytes - Die Adresse der neuen Identität. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newIdentity","params":[],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xc931d93e97ab07fe42d923478ba2465f283f440fd6cabea4dd7a2c807108f651b7135d1d6ca9007d5b68aa497e4619ac10aa3b27726e1863c1fd9b570d99bbaf" +} +``` + +### shh_hasIdentity (veraltet){#shh_hasidentity} + +Überprüft, ob der Client die privaten Schlüssel für eine bestimmte Identität besitzt. + +**Hinweis** diese Funktion ist veraltet. + +**Parameter** + +1. `DATA`, 60 Bytes - Die zu überprüfende Identitätsadresse. + +```js +params: [ + "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1", +] +``` + +**Rückgabewerte** `Boolean` - gibt `true` zurück, wenn der Client den privaten Schlüssel für diese Identität besitzt, andernfalls `false`. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_hasIdentity","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": true +} +``` + +### shh_newGroup (veraltet){#shh_newgroup} + +**Hinweis** diese Funktion ist veraltet. + +**Parameter** Keine + +**Rückgabewerte** `DATA`, 60 Bytes - Die Adresse der neuen Gruppe. (?) + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newGroup","params":[],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xc65f283f440fd6cabea4dd7a2c807108f651b7135d1d6ca90931d93e97ab07fe42d923478ba2407d5b68aa497e4619ac10aa3b27726e1863c1fd9b570d99bbaf" +} +``` + +### shh_addToGroup (veraltet){#shh_addtogroup} + +**Hinweis** diese Funktion ist veraltet. + +**Parameter** + +1. `DATA`, 60 Bytes – Die Identitätsadresse, die einer Gruppe hinzugefügt werden soll (?). + +```js +params: [ + "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1", +] +``` + +**Rückgabewerte** `Boolean` - Gibt `true` zurück, wenn die Identität erfolgreich zur Gruppe hinzugefügt wurde, andernfalls `false` (?). + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_addToGroup","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": true +} +``` + +### shh_newFilter (veraltet){#shh_newfilter} + +Erstellt einen Filter, um Benachrichtigungen bei Empfang einer Flüsternachricht zu erhalten, die den Filteroptionen entspricht. **Hinweis** diese Funktion ist veraltet. + +**Parameter** + +1. `Object` - Die Filteroptionen: + +- `to`: `DATA`, 60 Bytes - (Optional) Die Identität des Empfängers. _Wenn vorhanden, wird es versuchen, eingehende Nachrichten zu entschlüsseln, wenn der Client den privaten Schlüssel für diese Identität besitzt._ +- `topics`: `Array of DATA` - Array von `DATA`-Themen, die den Themen der eingehenden Nachricht entsprechen sollen. Sie können folgende Kombinationen verwenden: + - `[A, B] = A && B` + - `[A, [B, C]] = A && (B || C)` + - `[null, A, B] = ALLES && A && B` `null` funktioniert als Joker + - + +```js +params: [ + { + topics: ["0x12341234bf4b564f"], + to: "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1", + }, +] +``` + +**Rückgabewerte** `QUANTITY` - Der neu erstellte Filter. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newFilter","params":[{"topics": ['0x12341234bf4b564f'],"to": "0x2341234bf4b2341234bf4b564f..."}],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": "0x7" // 7 +} +``` + +### shh_uninstallFilter (veraltet){#shh_uninstallfilter} + +Deinstalliert einen Filter mit gegebener ID. Sollte immer aufgerufen werden, wenn die Uhr nicht mehr benötigt wird. Zusätzlich Timeout für Filter, wenn sie für einen bestimmten Zeitraum nicht mit [shh_getFilterChanges](#shh_getfilterchanges) angefordert werden. **Hinweis** diese Funktion ist veraltet. + +**Parameter** + +1. `QUANTITY` – Die Filter-ID. + +```js +params: [ + "0x7", // 7 +] +``` + +**Rückgabewerte** `Boolean` - `true`, wenn der Filter erfolgreich deinstalliert wurde, andernfalls `false`. + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_uninstallFilter","params":["0x7"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": true +} +``` + +### shh_getFilterChanges (veraltet){#shh_getfilterchanges} + +Abfrageverfahren für Flüsterfilter. Gibt neue Nachrichten seit dem letzten Aufruf dieser Methode zurück. **Hinweis** Der Aufruf der Methode [shh_getMessages](#shh_getmessages) setzt den Puffer für diese Methode zurück, sodass Sie keine doppelten Nachrichten erhalten. **Hinweis** diese Funktion ist veraltet. + +**Parameter** + +1. `QUANTITY` – Die Filter-ID. + +```js +params: [ + "0x7", // 7 +] +``` + +**Rückgabewerte** `Array` - Array von Nachrichten, die seit der letzten Abfrage empfangen wurden: + +- `Hash`: `DATA`, 32 Bytes (?) - Der Hash der Nachricht. +- `from`: `DATA`, 60 Bytes - Der Absender der Nachricht, falls ein Absender angegeben wurde. +- `to`: `DATA`, 60 Bytes - Der Empfänger der Nachricht, falls ein Empfänger angegeben wurde. +- `expiry`: `QUANTITY` - Ganzzahlwert der Zeit in Sekunden, wann diese Nachricht ablaufen soll (?). +- `ttl`: `QUANTITY` - Ganzzahlwert der Zeit, die die Nachricht im System schweben soll, in Sekunden (?). +- `sent`: `QUANTITY` - Ganzzahlwert des Unix-Zeitstempels, als die Nachricht gesendet wurde. +- `topics`: `Array of DATA` - Array von `DATA`-Themen, die die Nachricht enthielt. +- `Payload`: `DATA` - Die Nutzlast der Nachricht. +- `workProved`: `QUANTITY` - Ganzzahlwert der Arbeit, die diese Nachricht erforderte, bevor sie gesendet wurde (?). + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getFilterChanges","params":["0x7"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": [{ + "hash": "0x33eb2da77bf3527e28f8bf493650b1879b08c4f2a362beae4ba2f71bafcd91f9", + "from": "0x3ec052fc33..", + "to": "0x87gdf76g8d7fgdfg...", + "expiry": "0x54caa50a", // 1422566666 + "sent": "0x54ca9ea2", // 1422565026 + "ttl": "0x64", // 100 + "topics": ["0x6578616d"], + "payload": "0x7b2274797065223a226d657373616765222c2263686...", + "workProved": "0x0" + }] +} +``` + +### shh_getMessages (veraltet) {#shh_getmessages} + +Erhalten Sie alle Nachrichten, die einem Filter entsprechen. Im Gegensatz zu `shh_getFilterChanges` gibt dies alle Nachrichten zurück. + +**Hinweis** diese Funktion ist veraltet. + +**Parameter** + +1. `QUANTITY` – Die Filter-ID. + +```js +params: [ + "0x7", // 7 +] +``` + +**Rückgabewerte** Siehe [shh_getFilterChanges](#shh_getfilterchanges) + +**Beispiel** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getMessages","params":["0x7" +],"id":73}' +``` + +Ergebnis siehe [shh_getFilterChanges](#shh_getfilterchanges) + +## Anwendungsbeispiel {#usage-example} + +### Bereitstellen eines Vertrags mit JSON_RPC {#deploying-contract} + +Dieser Abschnitt enthält eine Demonstration, wie ein Vertrag nur mithilfe der RPC-Schnittstelle bereitgestellt wird. Es gibt alternative Wege zur Bereitstellung von Verträgen, bei denen diese Komplexität abstrahiert wird – zum Beispiel die Verwendung von Bibliotheken, die auf der RPC-Schnittstelle wie [web3.js](https://web3js.readthedocs.io/) und [web3.py](https://github.com/ethereum/web3.py) aufbauen. Diese Abstraktionen sind im Allgemeinen leichter zu verstehen und weniger fehleranfällig, es ist dennoch hilfreich zu verstehen, was im Hintergrund passiert. + +Das Folgende ist ein unkomplizierter Smart Contract namens `Multiply7`, der über die JSON-RPC-Schnittstelle auf einem Ethereum-Knoten bereitgestellt wird. Dieses Tutorial geht davon aus, dass der Reader bereits einen Geth-Knoten ausführt. Weitere Informationen zu Nodes und Clients finden Sie [hier](/developers/docs/nodes-and-clients/run-a-node). Bitte sehen Sie in der jeweiligen [Client-Dokumentation](/developers/docs/nodes-and-clients/) nach, wie Sie den HTTP-JSON-RPC für Nicht-Geth-Clients starten. Die meisten Clients werden standardmäßig auf `localhost:8545` bereitgestellt. + +```javascript +contract Multiply7 { + event Print(uint); + function multiply(uint input) returns (uint) { + Print(input * 7); + return input * 7; + } +} +``` + +Stellen Sie zunächst sicher, dass die HTTP-RPC-Schnittstelle aktiviert ist. Das bedeutet, dass wir Geth beim Start mit dem `--http`-Flag versehen. In diesem Beispiel verwenden wir den Geth-Knoten in einer privaten Entwicklungs-Blockchain. Mit diesem Ansatz benötigen wir keine Ether im echten Netzwerk. + +```bash +geth --http --dev console 2>>geth.log +``` + +Dadurch wird die HTTP-RPC-Schnittstelle auf `http://localhost:8545` gestartet. + +Wir können überprüfen, ob die Schnittstelle läuft, indem wir die Coinbase-Adresse und den Kontostand mit [curl](https://curl.se) abrufen. Bitte beachten Sie, dass sich die Daten in diesen Beispielen auf Ihrem lokalen Knoten unterscheiden. Wenn Sie diese Befehle ausprobieren möchten, ersetzen Sie die Anfrageparameter in der zweiten Curl-Anfrage durch das Ergebnis, das von der ersten zurückgegeben wird. + +```bash +curl --data '{"jsonrpc":"2.0","method":"eth_coinbase", "id":1}' -H "Content-Type: application/json" localhost:8545 +{"id":1,"jsonrpc":"2.0","result":["0x9b1d35635cc34752ca54713bb99d38614f63c955"]} + +curl --data '{"jsonrpc":"2.0","method":"eth_getBalance", "params": ["0x9b1d35635cc34752ca54713bb99d38614f63c955", "latest"], "id":2}' -H "Content-Type: application/json" localhost:8545 +{"id":2,"jsonrpc":"2.0","result":"0x1639e49bba16280000"} +``` + +Da Zahlen hexadezimal kodiert sind, wird der Saldo in Wei als hexadezimaler String zurückgegeben. Wenn wir das Guthaben in Ether als Zahl haben möchten, können wir web3 von der Geth-Konsole verwenden. + +```javascript +web3.fromWei("0x1639e49bba16280000", "ether") +// "410" +``` + +Jetzt, da es etwas Ether in unserer privaten Entwicklungs-Blockchain gibt, können wir den Vertrag bereitstellen. Der erste Schritt besteht darin, den Multiply7-Vertrag in Bytecode zu kompilieren, der an die EVM gesendet werden kann. Um Solc, den Solidity-Compiler, zu installieren, folgen Sie der [Solidity-Dokumentation](https://docs.soliditylang.org/en/latest/installing-solidity.html). (Möglicherweise möchten Sie eine ältere `solc`-Version verwenden, um der [Version des verwendeten Compilers für unser Beispiel zu entsprechen](https://github.com/ethereum/solidity/releases/tag/v0.4.20).) + +Der nächste Schritt besteht darin, den Multiply7-Vertrag in Bytecode zu kompilieren, der an die EVM gesendet werden kann. + +```bash +echo 'pragma solidity ^0.4.16; contract Multiply7 { event Print(uint); function multiply(uint input) public returns (uint) { Print(input * 7); return input * 7; } }' | solc --bin + +======= :Multiply7 ======= +Binary: +6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029 +``` + +Jetzt, da wir den kompilierten Code haben, müssen wir bestimmen, wie viel Gas es kostet, ihn einzusetzen. Die RPC-Schnittstelle hat eine `eth_estimateGas`-Methode, die uns eine Schätzung bereitstellt. + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_estimateGas", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 5}' -H "Content-Type: application/json" localhost:8545 +{"jsonrpc":"2.0","id":5,"result":"0x1c31e"} +``` + +Und schließlich stellen Sie den Vertrag bereit. + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "gas": "0x1c31e", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 6}' -H "Content-Type: application/json" localhost:8545 +{"id":6,"jsonrpc":"2.0","result":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"} +``` + +Die Transaktion wird von dem Knoten akzeptiert und ein Transaktions-Hash wird zurückgegeben. Dieser Hash kann verwendet werden, um die Transaktion zu verfolgen. Der nächste Schritt besteht darin, die Adresse zu ermitteln, an der unser Vertrag bereitgestellt wird. Jede ausgeführte Transaktion erstellt einen Beleg. Dieser Beleg enthält verschiedene Informationen über die Transaktion, wie z. B. in welchem Block die Transaktion enthalten war und wie viel Gas von der EVM verbraucht wurde. Wenn eine Transaktion einen Vertrag erstellt, enthält sie auch die Vertragsadresse. Wir können den Beleg mit der RPC-Methode `eth_getTransactionReceipt` abrufen. + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_getTransactionReceipt", "params": ["0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"], "id": 7}' -H "Content-Type: application/json" localhost:8545 +{"jsonrpc":"2.0","id":7,"result":{"blockHash":"0x77b1a4f6872b9066312de3744f60020cbd8102af68b1f6512a05b7619d527a4f","blockNumber":"0x1","contractAddress":"0x4d03d617d700cf81935d7f797f4e2ae719648262","cumulativeGasUsed":"0x1c31e","from":"0x9b1d35635cc34752ca54713bb99d38614f63c955","gasUsed":"0x1c31e","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","to":null,"transactionHash":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf","transactionIndex":"0x0"}} +``` + +Unser Vertrag wurde am `0x4d03d617d700cf81935d7f797f4e2ae719648262` erstellt. Ein Nullergebnis anstelle eines Belegs bedeutet, dass die Transaktion stattgefunden hat und noch nicht in einen Block aufgenommen wurde. Warten Sie einen Moment und überprüfen Sie, ob Ihr Miner ausgeführt wird, und versuchen Sie es erneut. + +#### Interaktion mit Smart Contracts {#interacting-with-smart-contract} + +In diesem Beispiel senden wir eine Transaktion mit `eth_sendTransaction` an die Methode `multiply` des Vertrags. + +`eth_sendTransaction` erfordert mehrere Argumente, insbesondere `from`, `to` und `data`. `From` ist die öffentliche Adresse unseres Kontos und `to` ist die Vertragsadresse. Das Argument `data` enthält eine Nutzlast, die definiert, welche Methode aufgerufen werden muss und mit welchen Argumenten. Hier kommt die [ABI (Application Binary Interface)](https://docs.soliditylang.org/en/latest/abi-spec.html) ins Spiel. Die ABI ist eine JSON-Datei, die festlegt, wie Daten für die EVM definiert und kodiert werden. + +Die Bytes der Nutzlast definieren, welche Methode im Vertrag aufgerufen wird. Dies sind die ersten 4 Bytes aus dem Keccak-Hash über den Funktionsnamen und seine Argumenttypen, kodiert in hex. Die Multiplizieren-Funktion akzeptiert ein uint, welches ein Alias für uint256 ist. Damit bleibt uns: + +```javascript +web3.sha3("multiply(uint256)").substring(0, 10) +// "0xc6888fa1" +``` + +Der nächste Schritt besteht darin, die Argumente zu kodieren. Es gibt nur einen uint256, sagen wir den Wert 6. Die ABI hat einen Abschnitt, der angibt, wie uint256-Typen kodiert werden. + +`int: enc(X)` ist die Big-Endian-Zweierkomplementkodierung von X, aufgefüllt auf der Seite höherer Ordnung (links) mit 0xff für negatives X und mit Null > Bytes für positives X, sodass die Länge ein Vielfaches von 32 Bytes ist. + +Dies wird zu `0000000000000000000000000000000000000000000000000000000000006` kodiert. + +Durch die Kombination des Funktionsselektors und des kodierten Arguments werden unsere Daten zu `0xc6888fa10000000000000000000000000000000000000000000000000000000000006`. + +Dies kann nun an den Knoten gesendet werden: + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeb85a5557e5bdc18ee1934a89d8bb402398ee26a", "to": "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d", "data": "0xc6888fa10000000000000000000000000000000000000000000000000000000000000006"}], "id": 8}' -H "Content-Type: application/json" localhost:8545 +{"id":8,"jsonrpc":"2.0","result":"0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74"} +``` + +Da eine Transaktion gesendet wurde, wurde ein Transaktions-Hash zurückgegeben. Das Abrufen des Belegs ergibt: + +```javascript +{ + blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55", + blockNumber: 268, + contractAddress: null, + cumulativeGasUsed: 22631, + gasUsed: 22631, + logs: [{ + address: "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d", + blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55", + blockNumber: 268, + data: "0x000000000000000000000000000000000000000000000000000000000000002a", + logIndex: 0, + topics: ["0x24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"], + transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74", + transactionIndex: 0 + }], + transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74", + transactionIndex: 0 +} +``` + +Der Beleg enthält ein Protokoll. Dieses Protokoll wurde von der EVM bei der Transaktionsausführung generiert und in den Beleg aufgenommen. Die Funktion `multiply` zeigt, dass das Ereignis `Print` mit der Eingabe mal 7 ausgelöst wurde. Da das Argument für das Ereignis `Print` ein uint256 war, können wir es gemäß den ABI-Regeln dekodieren, was uns die erwartete Dezimalzahl 42 zurücklässt. Abgesehen von den Daten ist es erwähnenswert, dass Themen verwendet werden können, um festzustellen, welches Ereignis das Protokoll erstellt hat: + +```javascript +web3.sha3("Print(uint256)") +// "24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da" +``` + +Dies war nur eine kurze Einführung in einige der häufigsten Aufgaben, die die direkte Verwendung von JSON-RPC demonstrieren. + ## Verwandte Themen {#related-topics} -- [Nodes und Clients](/developers/docs/nodes-and-clients/) +- [JSON-RPC-Spezifikation](http://www.jsonrpc.org/specification) +- [Knotenpunkte und Clients](/developers/docs/nodes-and-clients/) - [JavaScript-APIs](/developers/docs/apis/javascript/) - [Backend-APIs](/developers/docs/apis/backend/) +- [Ausführende Clients](/developers/docs/nodes-and-clients/#execution-clients) diff --git a/src/content/translations/de/developers/docs/blocks/index.md b/src/content/translations/de/developers/docs/blocks/index.md index fc38747a8ee..71c2cbeb275 100644 --- a/src/content/translations/de/developers/docs/blocks/index.md +++ b/src/content/translations/de/developers/docs/blocks/index.md @@ -12,58 +12,141 @@ Blöcke sind ein sehr anfängerfreundliches Thema. Um dir jedoch zu helfen, dies ## Warum Blöcke? {#why-blocks} -Um sicherzustellen, dass alle Teilnehmer des Ethereum-Netzwerks einen synchronisierten Zustand beibehalten und sich über den genauen Verlauf der Transaktionen einig sind, fassen wir die Transaktionen in Blöcken zusammen. Das bedeutet, dass Dutzende (oder Hunderte) Transaktionen auf einmal übergeben, bestätigt und synchronisiert werden. +Um sicherzustellen, dass alle Teilnehmer des Ethereum-Netzwerks einen synchronisierten Zustand beibehalten und sich über den genauen Verlauf der Transaktionen einig sind, fassen wir die Transaktionen in Blöcken zusammen. Das bedeutet, dass Dutzende (oder Hunderte) von Transaktionen in einem Durchgang übergeben, bestätigt und synchronisiert werden. ![Ein Diagramm, das Transaktionen in einem Block zeigt, die Zustandsänderungen verursachen](./tx-block.png) _Diagramm angepasst von [Ethereum EVM illustriert](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ -Durch die Aufteilung der Übertragungen geben wir allen Netzwerkteilnehmern genügend Zeit, einen Konsens zu finden: Obwohl Transaktionsanfragen dutzende Male pro Sekunde auftreten, werden Blöcke auf Ethereum etwa alle fünfzehn Sekunden übertragen. +Durch die zeitliche Verteilung der Commits geben wir allen Netzwerkteilnehmern genügend Zeit, einen Konsens zu erzielen: Obwohl Transaktionsanfragen dutzende Male pro Sekunde erfolgen, werden Blöcke auf Ethereum nur alle zwölf Sekunden erstellt und festgeschrieben. ## Wie Blöcke funktionieren {#how-blocks-work} Um die Transaktionsgeschichte zu erhalten, sind Blöcke streng sortiert (jeder neu erstellte Block enthält einen Verweis auf den übergeordneten Block), und Transaktionen innerhalb von Blöcken sind ebenfalls streng geordnet. Außer in seltenen Fällen, zu einem bestimmten Zeitpunkt, sind sich alle Teilnehmer des Netzwerks über die genaue Anzahl und Geschichte der Blöcke einig und arbeiten daran, die aktuellen Live-Transaktionsanfragen in den nächsten Block zu integrieren. -Sobald ein Block von einem Miner im Netzwerk zusammengesetzt wird (geschürft), wird er an den Rest des Netzwerks weitergeleitet: Alle Nodes fügen diesen Block am Ende ihrer Blockchain hinzu und das Mining (Schürfen) geht weiter. Der genaue Prozess der Blockmontage (Schürfen) und der Commitment/Konsensus-Prozess werden derzeit durch das „Proof-of-Work-Protokoll" von Ethereum spezifiziert. +Sobald ein Block von einem zufällig ausgewählten Validator im Netzwerk erstellt wird, wird er im gesamten Netzwerk verbreitet. Alle Knoten fügen diesen Block dann am Ende ihrer Blockchain hinzu und ein neuer Validator wird ausgewählt, um den nächsten Block zu erstellen. Der genaue Prozess der Blockzusammenstellung und Festlegung/Konsensbildung ist zurzeit in Ethereums Proof-of-Stake-Protokoll festgelegt. -### Eine visuelle Demo {#a-visual-demo} +## Proof-of-Stake-Protokoll {#proof-of-work-protocol} - +Proof-of-Stake bedeutet Folgendes: -## Proof-of-Work-Protokoll {#proof-of-work-protocol} +- Validierende Nodes müssen 32 ETH als Sicherheit gegen Fehlverhalten in einen Einzahlungsvertrag einlagern. Das dient dem Schutz des Netzwerks, da nachweislich unehrliches Verhalten zum anteiligen oder vollständigen Verlust des Einsatzes führt. +- In jedem Slot (zwölf Sekunden voneinander entfernt) wird zufällig ein Validator ausgewählt, um als Vorschlagender für einen Block zu agieren. Sie bündeln Transaktionen, führen sie aus und bestimmen einen neuen „Zustand“. Sie verpacken diese Informationen in einen Block und geben sie an andere Validatoren weiter. +- Andere Validatoren, die von dem neuen Block erfahren, führen die Transaktionen erneut aus, um sicherzustellen, dass sie der vorgeschlagenen Änderung des globalen Zustands zustimmen. In der Annahme, dass der Block gültig ist, fügen sie ihn zu ihrer eigenen Datenbank hinzu. +- Wenn ein Validator von zwei konkurrierenden Blöcken für denselben Slot erfährt, wählt er mit seinem Fork-Wahlalgorithmus den Block aus, der von den meisten eingesetzten ETH unterstützt wird. -Proof-of-Work bedeutet Folgendes: - -- Mining-Knoten müssen eine variable, aber beträchtliche Menge an Energie, Zeit und Rechenleistung aufwenden, um ein "Legitimationszertifikat" für einen Block zu erstellen, den sie dem Netzwerk vorschlagen. Dies trägt u. a. zum Schutz des Netzes vor Spam-/Denial-of-Service-Angriffen bei, da Zertifikate in der Herstellung teuer sind. -- Andere Miner, die von einem neuen Block mit einem gültigen Legitimationszertifikat erfahren, müssen den neuen Block als den kanonischen nächsten Block auf der Blockchain akzeptieren. -- Die genaue Zeit, die ein bestimmter Miner benötigt, um dieses Zertifikat zu erstellen, ist eine Zufallsvariable mit hoher Varianz. Dies stellt sicher, dass es unwahrscheinlich ist, dass zwei Miner gleichzeitig Validierungen für einen vorgeschlagenen nächsten Block erstellen. Wenn ein Miner einen zertifizierten neuen Block erstellt und verbreitet, kann er fast sicher sein, dass der Block vom Netzwerk als kanonischer nächster Block auf der Blockchain akzeptiert wird, ohne dass es zu Konflikten kommt (obwohl es auch ein Protokoll für den Umgang mit Konflikten gibt, falls zwei Ketten zertifizierter Blöcke fast gleichzeitig erstellt werden). - -[Mehr zum Mining](/developers/docs/consensus-mechanisms/pow/mining/) +[Mehr über Proof-of-Stake](/developers/docs/consensus-mechanisms/pos) ## Was enthält ein Block? {#block-anatomy} -- `Zeitstempel` – die Zeit, zu der der Block gemint wurde. -- `Blocknummer` – die Länge der Blockchain in Blöcken. -- `Basisgebühr pro Gas` – die Mindestgebühr pro Gas, die erforderlich ist, damit eine Transaktion in den Block aufgenommen wird. -- `Schwierigkeit` – der Aufwand, der erforderlich ist, um den Block abzubauen. -- `mixHash` – ein eindeutiger Bezeichner für diesen Block. -- `parentHash` – der eindeutige Bezeichner des vorhergehenden Blocks (so werden die Blöcke in einer Kette verknüpft). -- `Transaktionen` – die im Block enthaltenen Transaktionen. -- `stateRoot` – der gesamte Status des Systems: Kontosalden, Vertragsspeicher, Vertragscode und Konto-Nonce sind darin enthalten. -- `nonce` – ein Hash, der in Kombination mit dem mixHash beweist, dass der Block den [Proof-of-Work](/developers/docs/consensus-mechanisms/pow/) durchlaufen hat. +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 | +| `state_root` | Der Stamm-Hash des Zustandsobjekts | +| `hauptteil` | Ein Objekt, das mehrere Felder enthält, wie unten definiert | + +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 | +| `proposer_slashings` | Liste der zu streichenden Validatoren | +| `attester_slashings` | Liste der zu streichenden Validatoren | +| `beglaubigungen` | Liste der Bescheinigungen zugunsten des aktuellen Blocks | +| `einzahlungen` | Liste der neuen Einlagen zum Einzahlungsvertrag | +| `voluntary_exits` | Liste der Validatoren, die das Netzwerk verlassen | +| `sync_aggregate` | Teilmenge der Validatoren, die zur Bedienung von leichten Clients verwendet wird | +| `execution_payload` | Vom Ausführungs-Client übergebene Transaktionen | + +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 | + +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 | +| `quelle` | Der letzte berechtigte Kontrollpunkt | +| `target` | Der Grenzblock der neuesten Epoche | + +Die Ausführung der Transaktionen in der `execution_payload` aktualisiert den globalen Zustand. Alle Clients führen die Transaktionen in der `execution_payload` erneut aus, um sicherzustellen, dass der neue Zustand dem Zustand im neuen Block im Feld `state_root` entspricht. Auf diese Weise stellen Clients sicher, dass ein neuer Block gültig und sicher ist, um ihn der Blockchain hinzuzufügen. Der `execution payload` selbst ist ein Objekt mit mehreren Feldern. Es gibt auch einen `execution_payload_header`, der wichtige zusammengefasste Informationen über die auszuführenden Daten enthält. Diese Datenstrukturen sind wie folgt organisiert: + +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 | +| `receipts_root` | Hash des Transaktionsempfänger-Baums | +| `logs_bloom` | Datenstruktur, die Ereignisprotokolle enthält | +| `prev_randao` | Verwendeter Wert in einer zufälligen Validatorauswahl | +| `block_number` | Die Nummer des aktuellen Blocks | +| `gas_limit` | Maximales für diesen Block erlaubtes Gas | +| `gas_used` | Die eingesetzte Menge an Gas in diesem Block | +| `Zeitstempel` | Die Blockzeit | +| `extra_data` | Beliebige zusätzliche Daten als rohe Bytes | +| `base_fee_per_gas` | Der Basisgebührenwert | +| `block_hash` | Hash des ausführenden Blocks | +| `transactions_root` | Stamm-Hash der Transaktionen in der Nutzlast | +| `withdrawal_root` | Stamm-Hash der Abhebungen in der Nutzlast | + +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 | +| `receipts_root` | Hash des Transaktionsempfänger-Baums | +| `logs_bloom` | Datenstruktur, die Ereignisprotokolle enthält | +| `prev_randao` | Verwendeter Wert in einer zufälligen Validatorauswahl | +| `block_number` | Die Nummer des aktuellen Blocks | +| `gas_limit` | Maximales für diesen Block erlaubtes Gas | +| `gas_used` | Die eingesetzte Menge an Gas in diesem Block | +| `Zeitstempel` | Die Blockzeit | +| `extra_data` | Beliebige zusätzliche Daten als rohe Bytes | +| `base_fee_per_gas` | Der Basisgebührenwert | +| `block_hash` | Hash des ausführenden Blocks | +| `Transaktionen` | Liste der Transaktionen, die ausgeführt werden sollen | +| `abhebungen` | Liste der Abhebungsobjekte | + +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 | +| `validatorIndex` | Validatorindexwert | ## Blockzeit {#block-time} -Die Blockzeit bezieht sich auf die Zeit, die für das Mining eines neuen Blocks benötigt wird. In Ethereum beträgt die durchschnittliche Blockzeit zwischen 12 und 14 Sekunden und wird nach jedem Block ausgewertet. Die erwartete Blockzeit wird als Konstante auf Protokollebene festgelegt und dient dazu, die Sicherheit des Netzwerks zu schützen, wenn die Miner mehr Rechenleistung einsetzen. Die durchschnittliche Blockzeit wird mit der erwarteten Blockzeit verglichen, und wenn die durchschnittliche Blockzeit höher ist, dann wird die Schwierigkeit im Block-Header verringert. Wenn die durchschnittliche Blockzeit kleiner ist, wird die Schwierigkeit im Block-Header erhöht. +Die Blockzeit bezieht sich auf die Zeit zwischen Blöcken. In Ethereum wird Zeit in Einheiten zu je zwölf Sekunden aufgeteilt. Diese heißen "Slots". In jedem Slot wird ein Validator ausgewählt, der einen Block vorschlägt. Geht man davon aus, dass alle Validatoren online und voll funktionsfähig sind, wird es in jedem Slot einen Block gegen. Die zugehörige Blockzeit beträgt dann 12 Sekunden. Es kann jedoch vorkommen, dass Validatoren offline sind, wenn sie dazu aufgerufen werden einen Block vorzuschlagen. Der zugehörige Slot bleibt dann leer. + +Diese Implementierung unterscheidet sich von PoW-basierten Blockchain-Systemen, in denen die Erzeugung eines Blocks zu den probabilistischen Verfahren gehört, wodurch die Mining-Schwierigkeit des Protokolls ausgeglichen wird. Die [durchschnittliche Blockverbreitungszeit](https://etherscan.io/chart/blocktime) von Ethereum ist ein perfektes Beispiel für die Implementierung von Proof of Stake und damit für den Wechsel von Proof of Work (PoW) zu Proof of Stake (PoS), der durch eine weitere Anpassung der Blockverbreitungszeit auf 12 Sekunden ermöglicht wurde. ## Blockgröße {#block-size} -Ein finaler, wichtiger Hinweis ist, dass Blöcke selbst in ihrer Größe begrenzt sind. Jeder Block hat eine Zielgröße von 15 Millionen Gas, aber die Größe der Blöcke wird entsprechend der Netznachfrage erhöht oder verringert, bis zur Blockgrenze von 30 Millionen Gas (doppelte Zielblockgröße). Die Gesamtmenge des von allen Transaktionen im Block verbrauchten Gases muss unter dem Blockgaslimit liegen. Dies ist wichtig, weil dadurch sichergestellt wird, dass Blöcke nicht willkürlich groß sein können. Wenn Blöcke beliebig groß sein könnten, würden weniger leistungsstarke Nodes aufgrund von Platz- und Geschwindigkeitsanforderungen allmählich nicht mehr mit dem Netzwerk Schritt halten können. +Ein finaler, wichtiger Hinweis ist, dass Blöcke selbst in ihrer Größe begrenzt sind. Jeder Block hat eine Zielgröße von 15 Millionen Gas, aber die Größe der Blöcke wird entsprechend der Netznachfrage erhöht oder verringert, bis zur Blockgrenze von 30 Millionen Gas (doppelte Zielblockgröße). Die Gesamtmenge des von allen Transaktionen im Block verbrauchten Gases muss unter dem Blockgaslimit liegen. Das ist wichtig, weil dadurch sichergestellt wird, dass Blöcke nicht willkürlich groß sein können. Wenn Blöcke beliebig groß sein könnten, würden weniger leistungsstarke Knoten aufgrund von Platz- und Geschwindigkeitsanforderungen allmählich nicht mehr mit dem Netzwerk Schritt halten können. Je größer der Block, desto höher ist die erforderliche Verarbeitungsleistung, um den Block rechtzeitig für das nächste Zeitintervall zu berechnen. Das ist ein ganz zentraler Aspekt, der durch die Begrenzung der Blockgröße umgangen wird. ## Weiterführende Informationen {#further-reading} -_Kennst du eine Community-Ressource, die dir geholfen hat? Bearbeite diese Seite und füge sie hinzu!_ +_Sie kennen Community-Resourcen die Ihnen geholfen haben? Bearbeiten Sie diese Seite und fügen Sie sie hinzu!_ ## Verwandte Themen {#related-topics} -- [Mining](/developers/docs/consensus-mechanisms/pow/mining/) - [Transaktionen](/developers/docs/transactions/) - [Ressourcen](/developers/docs/gas/) +- [Proof-of-Stake](/developers/docs/consensus-mechanisms/pos) diff --git a/src/content/translations/de/developers/docs/blocks/tx-block.png b/src/content/translations/de/developers/docs/blocks/tx-block.png new file mode 100644 index 0000000000000000000000000000000000000000..edaaf573586cdbbca5fec8b195efe28b9135914d GIT binary patch literal 17156 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 +kum(6bpUWIp%9Q*9V{juJSf6^U@kH{_BjI}SaU z+6Wg(0@%px(An1j;TTDYdJT}Io1d(vOGZ6d}*4v|aC`c~a9+cX*&uTF5k1 z?t=xdLUdx}&A9>P%}0?K{~euVeWnAtaq!7fFjiNAJ0Y6ebt;B<4n(9J|A$B(ZhwPD zJB?5A?qPmb8Nin3YR|n)UH`iV_Na`%4R%tOa$U&=bO#d7Z9D6J^UGHO5gB6$sB->7 z!CB!wOGU=@lqX@EeL^RvpBo4f-ryv|Cb7i?d0DcvUO7kSqd5}(CXJjd4Nz6pRmEJV zYk)|$^n0edTqa)^TS%fl^W+D=;gn?ZccGiW0DqnubUWJO-jcq@k>aj%OCZBDFruO) zfXvTwMT9ZlAais}4|*|+Ac;!^^g44{K$QXgY4-sc>=YpR&1ni+zj!}9un~Jpy&zL{ zCd9hrN)M=miO^F8_)$B}yR;rG%Lj`$rVh9hH@|8IdgZDYJV(<(mm3i4E1K@R3)B(P z{N8|qy|9vlgRp<4TR&J-uaYRNiX4NTerEneL2F7;-x+KLW&2&0rE$-Yj)Yl+dK5oY zHlE3wvCLc>^gaFOaDVjUlyvl?y7Tqw{ZMPwhg5MKU>y**tHf?TcfRL4YParP8-Vu| z$7fn+=ZXc{Gy}r5BCcjF$R=Qv8~vvgW1QV{T2zK#D>{GXX=uu3%7L#)`1;q z4%FxZ-8%K$o!Ps`9BCdP+e{PvfW5?hzsY7;!I+Xswnc!bGBLF930o&G+X)I!uwn=x z28Eu-eP?OI2{n(Oo2gTqTua!@0z@W;lQP%!Il|)R6fjAqo#hy-WPAc3?f48VxFPqM zmj*v(W~V>CjZm0#yV%!)qKVkI$u;ZuVCoa0Ci{p=3m5_Ov+QG-bF}y?gf& zu)uWaS#h~Hu)MUmd)5;Z_OfSJ7U4=WtfIN!`gY9ShOEX=A4s?WkuuoGG#Ic1Y)p%d z?UD&OKs;(2e)DsaSD6EDY4lemVXC;}R`{{;=PXUxzlT--Na`G$Z~6?22#NrSbAz17 z{7$RilO`@Wjnd?w?wn#6tIOMFZ!Av)V^!n(URf_UA*b`h0!%EhQwig%7Okdtmmu!Z z$CoqZwACkD8ev|5Ea@Bz2$ntpR^St`&Xsvii{bdYb?|(Ldtl3xJ8m=TMcdlXukPaduidX*1-s>MQWPW6#U_GfJaH@%ahb1yZw-98(j^kb{rEpMh$0pP*Z5N}IQSiQbDeFquW~>BKU1vz z2P2dJ9@4DV1d_Iq)gMZqp13WHY`Pe<|_Dz7LspjP_|)f*wFH1hfK`Bz2J|V_49c;|FV#4g(djKl2{;5p7@p+sEqh(0D`Vc zu`v??Dxkd`|dJGuC2ed9AEju7y47&R4DjzuX(F!OJ zbv44_`!WPD@GNp}T*pnJ3{2oZbA+oYzj{u+jOckbqTm{^ zX8#AG&Z|oQQ;Eg@|9a3hh)v4RU6KgY-CBUZ#c%8=``ccau~sy5v@-ala{89#n*yg- zAgvcTT0_d++-mDjD*q<1<(L0gsQwn{LJLs9zQzHz{C~gx*B*ffSOU=vck`lwEC%1J Pk$9!3p->}l`QiTn5F^N= literal 0 HcmV?d00001 diff --git a/src/content/translations/de/developers/docs/dapps/index.md b/src/content/translations/de/developers/docs/dapps/index.md index e79e8d32166..6d254390a3a 100644 --- a/src/content/translations/de/developers/docs/dapps/index.md +++ b/src/content/translations/de/developers/docs/dapps/index.md @@ -4,7 +4,7 @@ description: lang: de --- -Eine dezentralisierte Anwendung ist eine Anwendung, die auf einem dezentralisierten Netzwerk aufgebaut ist. Dies kombiniert einen [Smart Contract](/developers/docs/smart-contracts/) und eine Frontend-Benutzeroberfläche. Beachte, dass Smart Contracts in Ethereum zugänglich und transparent sind – wie offene APIs –, also kann deine Dapp sogar einen Smart Contract enthalten, den eine andere Person geschrieben hat. +Eine dezentralisierte Anwendung (dapp) ist eine Anwendung, die auf einem dezentralisierten Netzwerk aufgebaut ist. Dies kombiniert einen [Smart Contract](/developers/docs/smart-contracts/) und eine Frontend-Benutzeroberfläche. Beachte, dass Smart Contracts in Ethereum zugänglich und transparent sind – wie offene APIs –, also kann deine Dapp sogar einen Smart Contract enthalten, den eine andere Person geschrieben hat. ## Voraussetzungen {#prerequisites} @@ -33,12 +33,12 @@ Ein Smart Contract ist ein Code, der auf der Ethereum-Blockchain existiert und g - **Privatsphäre** – Du musst keine echte Identität zur Verfügung stellen, um eine Dapp bereitzustellen oder mit einer zu interagieren. - **Resistenz gegen Zensur** - keine einzige Entität im Netzwerk kann Benutzer daran hindern, Transaktionen zu übertragen, Dapps bereitzustellen oder Daten der Blockchain auszulesen. - **Komplette Datenintegrität** – Daten, die auf der Blockchain gespeichert sind, sind unveränderbar und unbestreitbar, dank kryptographischer Primitivität. Böswillige Akteure können keine Transaktionen oder andere Daten, die bereits öffentlich gemacht wurden, fälschen. -- **Vertrauenslose Berechnung/überprüfbares Verhalten** – Smart Contracts können analysiert werden und garantieren, dass sie auf vorhersehbare Weise ausgeführt werden, ohne dass man einer zentralen Autorität vertrauen muss. Das ist bei traditionellen Modellen nicht der Fall. Wenn wir zum Beispiel Online-Banking-Systeme nutzen, müssen wir darauf vertrauen, dass die Finanzinstitute unsere Finanzdaten nicht missbrauchen, keine Aufzeichnungen manipulieren und uns nicht hacken. +- **Vertrauenslose Berechnung/überprüfbares Verhalten** – Smart Contracts können analysiert werden und garantieren, dass sie auf vorhersehbare Weise ausgeführt werden, ohne dass dafür das Vertrauen in eine zentrale Autorität vorausgesetzt wird. Das ist bei traditionellen Modellen nicht der Fall. Wenn wir zum Beispiel Online-Banking-Systeme nutzen, müssen wir darauf vertrauen, dass die Finanzinstitute unsere Finanzdaten nicht missbrauchen, keine Aufzeichnungen manipulieren und uns nicht hacken. ## Nachteile der Dapp-Entwicklung {#drawbacks-of-dapp-development} -- **Wartung** – Dapps können schwieriger zu warten sein, weil der Code und die Daten, die auf der Blockchain veröffentlicht werden, schwerer zu ändern sind. Für Entwickler ist es schwierig ihre Dapps (oder die zugrunde liegenden Daten, die von einer Dapp gespeichert werden) zu aktualisieren, sobald sie bereitgestellt wurden, selbst wenn in einer alten Version Fehler oder Sicherheitsrisiken festgestellt werden. -- **Performance-Overhead** – Es gibt einen enormen Performance-Overhead und die Skalierung ist sehr schwierig. Um den Grad an Sicherheit, Integrität, Transparenz und Zuverlässigkeit zu erreichen, den Ethereum anstrebt, führt jeder Node jede Transaktion aus und speichert sie. Darüber hinaus benötigt Proof-of-Work auch Zeit. Eine "Back-of-the-Envelope"-Rechnung setzt den Leistungsaufwand auf etwa das 1.000.000-Fache der Standardrechnung. +- **Wartung** – Dapps können schwieriger zu warten sein, weil der Code und die Daten, die auf der Blockchain veröffentlicht werden, schwerer zu ändern sind. Für Entwickler ist es schwierig ihre dApps (oder die zugrunde liegenden Daten, die von einer dApp gespeichert werden) zu aktualisieren, sobald sie bereitgestellt wurden, selbst wenn in einer alten Version Fehler oder Sicherheitsrisiken festgestellt werden. +- **Performance-Overhead** – Es gibt einen enormen Performance-Overhead und die Skalierung ist sehr schwierig. Um den Grad an Sicherheit, Integrität, Transparenz und Zuverlässigkeit zu erreichen, den Ethereum anstrebt, führt jeder Node jede Transaktion aus und speichert sie. Hinzu kommt, dass der Proof-of-Stake-Konsens ebenfalls Zeit benötigt. - **Netzüberlastung** – Wenn eine Dapp zu viele Rechenressourcen verbraucht, gerät das gesamte Netzwerk ins Stocken. Derzeit kann das Netzwerk nur etwa 10 bis 15 Transaktionen pro Sekunde verarbeiten; wenn Transaktionen schneller eingehen, kann der Pool an unbestätigten Transaktionen schnell anschwellen. - **Benutzererfahrung** – Es könnte schwieriger sein, eine benutzerfreundliche Erfahrung zu entwickeln, weil es für den durchschnittlichen Endbenutzer zu schwer sein könnte, die notwendigen Tools für eine wirklich sichere Interaktion mit der Blockchain einzurichten. - **Zentralisierung** – Benutzer- und entwicklerfreundliche Lösungen, die auf der Basisschicht von Ethereum aufgebaut sind, könnten am Ende ohnehin wie zentralisierte Dienste aussehen. Solche Dienste können zum Beispiel Schlüssel oder andere sensible Informationen serverseitig speichern, ein Frontend über einen zentralen Server bedienen oder wichtige Geschäftslogik auf einem zentralen Server ausführen, bevor sie in die Blockchain geschrieben werden. Durch die Zentralisierung werden viele (wenn nicht alle) Vorteile der Blockchain gegenüber dem traditionellen Modell aufgehoben. @@ -47,7 +47,7 @@ Ein Smart Contract ist ein Code, der auf der Ethereum-Blockchain existiert und g -## Werkzeuge für das Erstellen von Dapps {#dapp-tools} +## Tools zum Erstellen von dApps {#dapp-tools} **Scaffold-ETH _- Experimentiere schnell mit Solidity, indem du ein Frontend verwendest, das sich an deinen Smart Contract anpasst._** @@ -68,15 +68,23 @@ Ein Smart Contract ist ein Code, der auf der Ethereum-Blockchain existiert und g - [etherflow.quiknode.io](https://etherflow.quiknode.io/) - [GitHub](https://github.com/abunsen/etherflow) +**thirdweb _- SDKs in jeder Sprache, Smart Contracts, Tools und Infrastruktur für die Web3-Entwicklung._** + +- [Website](https://thirdweb.com/) +- [Dokumentation](https://portal.thirdweb.com/) +- [GitHub](https://github.com/thirdweb-dev/) + ## Weiterführende Informationen {#further-reading} -- [Die Architektur einer Web 3.0 Anwendung](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) – _Preethi Kasireddy_ +- [Entdecken Sie dApps](/dapps) +- [Die Architektur einer Web 3.0-Anwendung](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) – _Preethi Kasireddy_ - [Ein Leitfaden für dezentrale Anwendungen aus dem Jahr 2021](https://limechain.tech/blog/what-are-dapps-the-2021-guide/) – _LimeChain_ - [Was sind dezentrale Apps?](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps) – _Gemini_ +- [Beliebte Dapps](https://www.alchemy.com/dapps) – _Alchemy_ -_Kennst du eine Community-Ressource, die dir geholfen hat? Bearbeite diese Seite und füge sie hinzu!_ +_Sie kennen Community-Resourcen die Ihnen geholfen haben? Bearbeiten Sie diese Seite und fügen Sie sie hinzu!_ ## Verwandte Themen {#related-topics} -- [Eine Anleitung zum Ethereum-Stack](/developers/docs/ethereum-stack/) +- [Einführung in den Ethereum-Stack](/developers/docs/ethereum-stack/) - [Entwicklungs-Frameworks](/developers/docs/frameworks/) diff --git a/src/content/translations/de/developers/docs/data-and-analytics/block-explorers/index.md b/src/content/translations/de/developers/docs/data-and-analytics/block-explorers/index.md index b8ae8644d31..106c3a46664 100644 --- a/src/content/translations/de/developers/docs/data-and-analytics/block-explorers/index.md +++ b/src/content/translations/de/developers/docs/data-and-analytics/block-explorers/index.md @@ -13,66 +13,59 @@ Sie sollten das Basiskonzept von Ethereum verstehen, damit Sie die Daten, die Si ## Dienste {#services} -- [Etherscan](https://etherscan.io/) – _Auch verfügbar auf Chinesisch, Koreanisch, Russisch, und Japanisch_ -- [Etherchain](https://www.etherchain.org/) -- [Ethplorer](https://ethplorer.io/) – _Auch verfügbar auf Chinesisch, Spanisch, Französisch, Türkisch, Russisch, Koreanisch und Vietnamesisch_ -- [Blockchair](https://blockchair.com/ethereum) – _Auch verfügbar auf Spanisch, Französisch, Italienisch, Niederländisch, Portugiesisch, Russisch, Chinesisch, und Persisch_ +- [Etherscan](https://etherscan.io/) -_Auch in Chinesisch, Koreanisch, Russisch und Japanisch verfügbar_ +- [Beaconcha.in](https://beaconcha.in/) +- [Blockchair](https://blockchair.com/ethereum) -_Auch in Spanisch, Französisch, Italienisch, Niederländisch, Portugiesisch, Russisch, Chinesisch und Farsi verfügbar_ - [Blockscout](https://blockscout.com/) +- [Etherchain](https://www.etherchain.org/) +- [Ethplorer](https://ethplorer.io/) -_Auch in Chinesisch, Spanisch, Französisch, Türkisch, Russisch, Koreanisch und Vietnamesisch verfügbar_ - [OKLink](https://www.oklink.com/eth) +- [Otterscan](https://otterscan.io/) +- [Rantom](https://rantom.app/) +- [Sirato](https://www.web3labs.com/sirato) +- [EthVM](https://www.ethvm.com/) +- [DexGuru Block Explorer](https://ethereum.dex.guru/) ## Daten {#data} -Ethereum ist von Grund auf transparent und damit ist auch alles überprüfbar. Block-Explorer bieten eine Oberfläche, um diese Informationen zu erhalten. Das gilt sowohl für das Ethereum-Netzwerk als auch für die Testnets, wenn Sie diese Daten benötigen. +Ethereum ist von Grund auf transparent und damit ist auch alles überprüfbar. Block-Explorer bieten eine Oberfläche, um diese Informationen zu erhalten. Das gilt sowohl für das Ethereum-Netzwerk als auch für die Testnets, wenn Sie diese Daten benötigen. Die Daten werden in Ausführungsdaten und Konsensdaten unterteilt. Die Ausführungsdaten beziehen sich auf die Transaktionen, die in einem bestimmten Block ausgeführt wurden. Die Konsensdaten beziehen sich auf die Blöcke selbst und die Validatoren, die sie vorgeschlagen haben. Im Folgenden finden Sie eine Zusammenfassung der Arten von Daten, die Sie über einem Block-Explorer erhalten können: -### Blöcke {#blocks} +### Ausführungsdaten {#execution-data} -Neue Blöcke werden etwa alle 12 Sekunden zu Ethereum hinzugefügt (Schwankungen können auftreten), so dass es einen nahezu konstanten Strom an Daten gibt, die den Block-Explorern hinzugefügt werden. Blöcke enthalten viele wichtige Daten, die Sie vielleicht hilfreich finden: +Neue Blöcke werden alle 12 Sekunden zu Ethereum hinzugefügt (es sei denn, ein Block-Proposer verpasst seinen Zug), so dass den Block-Explorern ein nahezu konstanter Datenstrom hinzugefügt wird. Blöcke enthalten viele wichtige Daten, die Sie vielleicht hilfreich finden: **Standarddaten** -- Blockhöhe – Blocknummer und Länge der Blockchain (in Blöcken) zur Erstellung des aktuellen Blocks -- Zeitstempel – Die Uhrzeit, zu der ein Miner den Block abgebaut hat -- Transaktionen – Die Anzahl an Transaktionen, die im Block enthalten sind -- Miner – Die Adresse des Miners, der den Block abgebaut hat -- Belohnung – Der Betrag an ETH, den der Miner für das Hinzufügen des Blocks erhalten hat (Standardprämie 2ETH + Transaktionsentgelte der Transaktionen im Block) -- Schwierigkeitsgrad – Die Schwierigkeit, die mit dem Abbau des Blocks verbunden ist -- Größe – Die Datengröße innerhalb des Block (gemessen in Bytes) -- Ressourcenverbrauch – Die Gesamteinheiten an Ressourcen, die von den Transaktionen im Block verbraucht wurden -- Ressourcenlimit – Das Ressourcenlimit, das durch die Transaktionen im Block festgelegt wurde -- Zusätzliche Daten – Sämtliche zusätzlichen Daten, die der Miner in den Block aufgenommen hat +- Blockhöhe - Die Blocknummer und Länge der Blockchain (in Blöcken) bei der Erstellung des aktuellen Blocks +- Zeitstempel - Die Zeit, zu der ein Block vorgeschlagen wurde +- Transaktionen - Die Anzahl der im Block enthaltenen Transaktionen +- Gebührenempfänger - Die Adresse, die Gas-Trinkgelder aus Transaktionen erhalten hat +- Block-Prämie - Der ETH-Betrag, der dem Validator, der den Block vorgeschlagen hat, zugesprochen wurde +- Größe - Die Größe der Daten innerhalb des Blocks (gemessen in Bytes) +- Verbrauchtes Gas - Gesamte Gaseinheiten, die von den Transaktionen im Block verbraucht wurden +- Gaslimit - Die Gaslimits, die von den Transaktionen im Block gesetzt wurden +- Grundgebühr pro Gas - Der Mindestmultiplikator, der erforderlich ist, damit eine Transaktion in einen Block aufgenommen werden kann +- Verbrannte Gebühren - Wie viel ETH in einem Block verbrannt wird +- Extra Daten - Alle zusätzlichen Daten, die der Miner in den Block aufgenommen hat **Erweiterte Daten** -- Hash – Der kryptographische Hash, der den Header des Blocks darstellt (die eindeutige Kennung des Blocks) -- Eltern-Hash – Der Hash des Blocks, der vor dem aktuellen Block kam -- Sha3Uncles – Der kombinierte Hash aus allen Onkeln für ein bestimmtes übergeordnetes Element -- StateRoot – Der Wurzel-Hash des Merkle-Baums, der den gesamten Zustand des Systems speichert -- Nonce – Ein Wert, der verwendet wird um den Proof-of-Work für einen Block durch einen Miner anzuzeigen - -**Onkel-Blöcke** - -Onkel-Blöcke werden erzeugt, wenn zwei Miner, fast zur selben Zeit, Blöcke erstellen – nur ein Block kann über die Nodes validiert werden. Diese Blöcke werden nicht aufgenommen, Miner erhalten aber dennoch eine Belohnung für die Arbeit. - -Block-Explorer liefern folgende Informationen über Onkel-Blöcke: - -- Eine Onkel-Blocknummer -- Eine Uhrzeit, zu der sie erschienen sind -- Die Blockhöhe, auf der sie erstellt wurden -- Wer ihn geschürft hat -- Die ETH-Belohnung +- Hash - Der kryptografische Hash, der den Kopf eines Blocks darstellt (der eindeutige Identifier des Blocks) +- Parent Hash - Der Hash des Blocks, der vor dem aktuellen Block kam +- StateRoot - Der Wurzelhash des Merkle-Baums, der den gesamten Zustand des Systems speichert ### Ressourcen {#gas} -Block-Explorer geben nicht nur Informationen zum Ressourcenverbrauch in Transkationen und Blöcken an, manche zeigen auch Informationen zu den aktuell im Netzwerk gültigen Ressourcenpreisen an. Das hilft Ihnen dabei, die Nutzung des Netzwerks zu verstehen, sichere Transaktionen auszuführen und nicht mehr Ressourcen zu beanspruchen als notwendig ist. Suchen Sie nach APIs, die Ihnen helfen können, diese Informationen in den Produktschnittstelle zu finden. Ressourcenspezifische Datenabdeckungen: +Block-Explorer geben nicht nur Informationen zum Ressourcenverbrauch in Transkationen und Blöcken an, manche zeigen auch Informationen zu den aktuell im Netzwerk gültigen Ressourcenpreisen an. Das hilft Ihnen dabei, die Nutzung des Netzwerks zu verstehen, sichere Transaktionen auszuführen und nicht mehr Ressourcen zu beanspruchen als notwendig. Suchen Sie nach APIs, die Ihnen helfen können, diese Informationen in die Produktschnittstelle zu integrieren. Ressourcenspezifische Datenabdeckungen: -- Geschätztes Ressourcenvolumen, das für eine sichere, aber langsamere Transaktion erforderlich ist (+ geschätzter Preis und geschätzte Zeit) -- Geschätztes Ressourcenvolumen, das für durchschnittliche Transaktionen erforderlich ist (+ geschätzter Preis und geschätzte Zeit) -- Geschätztes Ressourcenvolumen, das für eine schnelle Transaktion erforderlich ist (+ geschätzter Preis und geschätzte Zeit) -- Durchschnittliche Bestätigungszeit basierend auf dem Ressourcenpreis -- Aufträge, die Ressourcen verbrauchen, sprich: beliebte Produkte, die einen hohen Nutzen im Netz aufweisen -- Konten, die Ressourcen ausgeben, also häufige Netzwerknutzer +- Geschätzte Gaseinheiten, die für eine sichere, aber langsame Transaktion benötigt werden (+ geschätzter Preis und Dauer) +- Geschätzte Gaseinheiten, die für eine durchschnittliche Transaktion benötigt werden (+ geschätzter Preis und Dauer) +- Geschätzte Gaseinheiten, die für eine schnelle Transaktion benötigt werden (+ geschätzter Preis und Dauer) +- Durchschnittliche Bestätigungszeit auf Basis des Gaspreises +- Verträge, die Gas verbrauchen - mit anderen Worten: beliebte Produkte, die im Netz viel genutzt werden +- Konten, die Gas ausgeben - mit anderen Worten, häufige Nutzer des Netzes ### Transaktionen {#transactions} @@ -80,23 +73,23 @@ Block-Explorer werden häufig eingesetzt, um den Status der Transaktionen abzuru **Standarddaten** -- Transaktions-Hash – Ein Hash, der beim Absenden der Transaktion generiert wird -- Status – Gibt an, ob die Transaktion aussteht, fehlgeschlagen oder abgeschlossen ist -- Block – Der Block, in den die Transaktion integriert wurde -- Zeitstempel – Die Uhrzeit, zu der ein Miner die Transaktion abgebaut hat -- Von – Das Konto, das die Transaktion tätigt -- An – Die Adresse des Empfängers oder Smart Contract, mit dem die Transaktion interagiert -- Übertragene Token – Eine Liste von Token, die als Teil der Transaktion übertragen wurden -- Wert – Der gesamte ETH-Wert, der übertragen wird -- Transaktionsgebühr – Die Gebühr, die an den Miner für die Verarbeitung der Transaktion gezahlt wird (berechnet nach Ressourdenpreis\oder erforderlichen Ressourcen). +- Transaktionshash - Ein Hash, der bei der Übermittlung der Transaktion generiert wird +- Status - Ein Hinweis darauf, ob die Transaktion ausstehend, fehlgeschlagen oder erfolgreich ist +- Block - Der Block, in dem die Transaktion enthalten ist +- Zeitstempel - Der Zeitpunkt, zu dem ein Miner die Transaktion verarbeitet hat +- From - Die Adresse des Kontos, das die Transaktion übermittelt hat +- To - Die Adresse des Empfängers oder des Smart Contracts, mit dem die Transaktion interagiert +- Übertragene Token - Eine Liste der Token, die als Teil der Transaktion übertragen wurden +- Wert - Der Gesamtwert der übertragenen ETH +- Transaktionsgebühr - Der Betrag, der an den Miner gezahlt wird, um die Transaktion zu verarbeiten (berechnet durch den Gaspreis \ verwendetes Gas) **Erweiterte Daten** -- Ressourcenlimit – Das maximale Ressourcenvolumen, das für die Transaktion verbraucht werden darf -- Eingesetzte Ressourcen – Die von der Transaktion tatsächlich verbrauchten Ressourcen -- Ressourcenpreis – Der Preis pro Ressourceneinheit -- Nonce – Die Transaktionsnummer für die `Absenderadresse` (wichtig ist, zu bedenken, dass die Nummer bei 0 beginnt, also wäre eine Nonce von `100` tatsächlich die 101. Transaktion, die von diesem Konto eingereicht wurde -- Eingabedaten – Alle zusätzlichen Informationen, die für die Transaktion erforderlich sind +- Gaslimit - Die maximale Anzahl von Gaseinheiten, die diese Transaktion verbrauchen kann +- Verbrauchtes Gas - Die tatsächliche Menge an Gaseinheiten, die die Transaktion verbraucht hat +- Gaspreis - Der festgelegte Preis pro Gaseinheit +- Nonce - Die Transaktionsnummer für die Absenderadresse`"from"` (denken Sie daran, dass diese bei 0 beginnt, so dass eine Nonce von `100` die 101ste Transaktion wäre, die von diesem Konto übermittelt wurde) +- Eingabedaten - Alle zusätzlichen Informationen, die für die Transaktion erforderlich sind ### Konten {#accounts} @@ -104,132 +97,126 @@ Es gibt viele Daten, auf die Sie über ein Konto zugreifen können. Daher wird h **Benutzerkonten** -- Kontoadresse – Die öffentliche Adresse, an die Sie Geld senden können -- ETH-Saldo – Die Menge an ETH auf diesem Konto -- Gesamter ETH-Wert – Der Wert der ETH -- Token – Die dem Konto zugeordneten Token und deren Wert -- Transaktionsverlauf – Eine Liste aller Transaktionen, bei denen dieses Konto entweder Absender oder Empfänger war +- Account-Adresse - Die öffentliche Adresse, an die Sie Geld senden können +- ETH-Guthaben - Der ETH-Betrag, der mit diesem Konto verbunden ist +- Total Eth value - Der Wert der ETH +- Token - Dem Konto zugeordnete Token und ihr Wert +- Transaktionshistorie - Eine Liste aller Transaktionen, bei denen dieses Konto entweder der Absender oder der Empfänger war -**Smart Contracts** +**Intelligente Verträge** Smart-Contract-Konten verfügen über die gleichen Daten wie ein Benutzerkonto, doch einige Block-Explorer zeigen zusätzlich auch einige Codeinformationen an. Beispiele: -- Vertragsersteller – Die Adresse, die den Vertrag in die Blockchain gestellt hat -- Erstellungstransaktion – Die Transaktion, die die Integration des Smart Contracts in die Blockchain beinhaltet -- Quellcode – Der Solidity- oder Vyper-Code des Smart Contracts -- Contract-ABI – die Application Binary Interface des Vertrages, die Abrufe, die ein Vertrag vornimmt, und die empfangenen Daten -- Vertragserstellungscode – Der kompilierte Bytecode des Smart Contracts, wird beim Kompilieren eines Smart Contracts erstellt, der in Solidity, Vyper oder einer anderen Programmiersprache geschrieben ist -- Vertragsereignisse – Der Verlauf der Methoden, die im Smart Contract angewendet wurden. Grundsätzlich eine Möglichkeit, zu sehen, wie und wie häufig der Vertrag verwendet wird. +- Vertragsersteller - Die Adresse, die den Vertrag im Mainnet bereitgestellt hat +- Erstellungstransaktion - Die Transaktion, die die Bereitstellung im Mainnet beinhaltete +- Quellcode - Der Solidity- oder Vyper-Code des Smart Contracts +- Vertrags-ABI - Die „Application Binary Interface“ - die Aufrufe, die der Vertrag tätigt, und die empfangenen Daten +- Vertragserstellungscode - Der kompilierte Bytecode des Smart Contracts – wird erstellt, wenn Sie einen in Solidity oder Vyper usw. geschriebenen Smart Contract kompilieren +- Vertragsereignisse - Eine Historie der im Smart Contract aufgerufenen Methoden – im Grunde eine Möglichkeit zu sehen, wie der Vertrag verwendet wird und wie oft ### Token {#tokens} Token sind eine Art von Vertrag und enthalten ähnliche Daten wie ein Smart Contract. Doch dadurch, dass sie einen Wert haben und gehandelt werden können, weisen sie zusätzliche Datenpunkte auf: -- Typ – Ob es sich um einen ERC-20, ERC-721 oder einen anderen Tokenstandard handelt -- Preis – Wenn es sich um ERC-20-Token handelt, weisen sie einen aktuellen Marktwert auf -- Market Cap – Wenn es sich um ERC-20 handelt, weisen sie eine Marktobergrenze auf (berechnet nach Preis\*Gesamtangebot) -- Gesamtangebot – Die Anzahl Token in Umlauf -- Halter – Die Anzahl der Adressen, die den Token halten -- Transfers – Wie oft der Token zwischen Konten übertragen wurde -- Transaktionsverlauf – Ein Verlauf aller Transaktionen, einschließlich der Token -- Vertragsadresse – Die Adresse des Tokens, der in die Blockchain intergiert wurde -- Dezimalstellen – ERC-20-Token sind teilbar und haben Dezimalstellen +- Typ - Ob es sich um einen ERC-20, ERC-721 oder einen anderen Token-Standard handelt +- Preis - Wenn es sich um einen ERC-20 handelt, haben sie einen aktuellen Marktwert +- Marktkapitalisierung - Wenn es sich um einen ERC-20 handelt, haben sie eine Marktkapitalisierung (berechnet durch Preis\*Gesamtangebot) +- Gesamtangebot - Die Anzahl der im Umlauf befindlichen Token +- Inhaber - Die Anzahl der Adressen, die den Token halten +- Transfers - Die Anzahl der Übertragungen des Tokens zwischen Konten +- Transaktionshistorie - Eine Historie aller Transaktionen, die den Token betreffen +- Vertragsadresse - Die Adresse des Tokens, die im Mainnet bereitgestellt wurde +- Nachkommastellen - ERC-20-Token sind teilbar und haben Nachkommastellen ### Netzwerk {#network} -Natürlich gibt es einige Daten, die Informationen zum Netzwerkzustand bieten. Diese sind ganz spezifisch für den Proof-of-work-Konsensmechanismus von Ethereum. Wenn Ethereum zum Proof-of-Stake übergeht, werden einige dieser Daten überflüssig. +Einige Blockdaten geben Aufschluss über den Zustand von Ethereum im Allgemeinen. -- Schwierigkeitsgrad – Die derzeitige Schwierigkeid des Minings -- Hashrate – Eine Schätzung, wie viele Hashes von Ethereum-Minern erzeugt werden, die versuchen, den aktuellen Ethereum-Block oder einen bestimmten Block zu lösen -- Gesamte Transaktionen – Die Anzahl an Transaktionen seit der Erstellung von Ethereum -- Transaktionen pro Sekunde – Die Anzahl an Transaktionen, die innerhalb einer Sekunde verarbeitet werden können -- ETH-Preis – Der aktuelle Marktwert von 1 ETH -- Gesamter ETH-Bestand – Anzahl der ETH im Umlauf, dabei gilt es zu bedenken, dass für jeden neu geschaffenen Block neue ETH als Blockbelohnungen geschaffen werden -- Market Cap – Berechnung des Preises\*Bestände. +- Gesamttransaktionen - Die Anzahl der Transaktionen seit dem Start von Ethereum +- Transaktionen pro Sekunde - Die Anzahl der Transaktionen, die innerhalb einer Sekunde verarbeitet werden können +- ETH-Preis - Die aktuelle Bewertung von 1 ETH +- Gesamtes ETH-Angebot - Anzahl der im Umlauf befindlichen ETH - neue ETH werden bei der Erstellung jedes Blocks in Form von Block-Prämien geschaffen +- Marktkapitalisierung - Berechnung des Preises\*Angebot ## Daten der Konsensebene {#consensus-layer-data} -Verbesserungen für die Skalierbarkeit befinden sich noch in der Entwicklung, doch es lohnt sich, über einige der Datenpunkte zu sprechen, die Sie über Explorer erhalten können. Alle diese Daten sind bereits für die Testnets verfügbar. - -Wenn Sie mit der Roadmap nicht vertraut sind, finden Sie Informationen in [unserem Überblick über die Ethereum-Upgrades](/roadmap/). - ### Epoche {#epoch} -Die Beacon Chain erstellt Gremien von Validatoren, die am Ende jeder Epoche (alle 6,4 Minuten) aus Sicherheitsgründen nach dem Zufallsprinzip zusammengestellt werden. Epochendaten enthalten: +Aus Sicherheitsgründen werden am Ende jeder Epoche (alle 6,4 Minuten) zufällig ausgewählte Gruppen von Validatoren gebildet. Epochendaten enthalten: - Epochennummer -- Abgeschlossener Status – Ob die Epoche abgeschlossen wurde (Ja/Nein) -- Uhrzeit – Die Uhrzeit, zu der die Epoche endete -- Beglaubigungen – Die Anzahl der Beglaubigungen in der Epoche (Stimmen für Blöcke innerhalb von Zeitabschnitten) -- Einlagen – Die Anzahl der ETH-Einlagen, die in der Epoche enthalten sind (Validatoren müssen ETH staken, also in einem Smart Contract hinterlegen, um Validatoren zu werden) -- Slashings – Anzahl an Strafen, die den Antragstellern von Blöcken oder Beglaubigungen erteilt werden -- Wahlbeteiligung – Die Menge der zur Validierung von Blöcken gestakten (hinterlegten) ETH -- Validatoren – Anzahl der für die Epoche aktiven Validatoren -- Durchschnittlicher Validator-Saldo – Durchschnittlicher Saldo aktiver Validatoren -- Slots – Anzahl der in der Epoche enthaltenen Zeitabschnitte (Slots enthalten einen gültigen Block) +- Abgeschlossener Status - Ob die Epoche abgeschlossen wurde (Ja/Nein) +- Zeit - Die Zeit, zu der die Epoche endete +- Attestierungen - Die Anzahl der Attestierungen in der Epoche (Stimmen für Blöcke innerhalb von Slots) +- Einzahlungen - Die Anzahl der ETH-Einzahlungen, die in der Epoche enthalten sind (Validatoren müssen ETH einsetzen, um Validatoren zu werden) +- Slashings - Anzahl der Strafen, die an die Proposer von Blöcken oder an die Attestierer vergeben wurden +- Abstimmungsbeteiligung - Die Menge an eingesetzter ETH, die zur Attestierung von Blöcken verwendet wurde +- Validatoren - Anzahl der aktiven Validatoren für die Epoche +- Durchschnittliches Guthaben der Validatoren - Durchschnittliches Guthaben der aktiven Validatoren +- Slots - Anzahl der in der Epoche enthaltenen Slots (Slots beinhalten einen gültigen Block) ### Slot {#slot} Slots sind Möglichkeiten für die Blockerstellung. Folgende Daten sind zu Slots verfügbar: -- Epoche – Die Epoche, in der der Slot gültig ist +- Epoche - Die Epoche, in der der Slot gültig ist - Slot-Nummer -- Status – Der Status des Slot (Vorgeschlagen/Verpasst) -- Uhrzeit – Der Zeitstempel des Slots -- Proposer – Der Validator, der den Block für den Slot vorgeschlagen hat -- Block-Root - Die Hash-Datenstruktur des BeaconBlock -- Übergeordneter Root – Der Hash des vorherigen Blocks -- Status-Root – Die Hash-Datenstruktur des BeaconState -- Signatur -- Randao reveal -- Graffiti – Ein Block-Proposer kann 32 Byte lange Nachrichten in seinem Blockvorschlag enthalten -- Ausführungsdetails +- Status - Der Status des Slots (Vorgeschlagen/Fehlgeschlagen) +- Zeit - Zeitstempel des Slots +- Proposer - Der Validierer, der den Block für den Slot vorgeschlagen hat +- Blockwurzel - Die Hash-Tree-Wurzel des Beacon-Blocks +- Parent Root - Der Hash-Wert des vorhergehenden Blocks +- Statuswurzel - Die Hash-Tree-Wurzel des BeaconState +- Signature +- Randao Reveal +- Graffiti - Ein Block-Proposer kann seinem Block-Vorschlag eine 32 Byte lange Nachricht beifügen +- Ausführungsdaten - Block-Hash - - Zähler für hinterlegten Einsatz - - Root für hinterlegten Einsatz -- Beglaubigungen – Anzahl an Beglaubigungen für den Block in diesem Slot -- Hinterlegter Einsatz – Anzahl von hinterlegten Einsätzen während eines Slots -- Freiwillige Abbrüche – Anzahl an Validatoren, die den Slot verlassen haben -- Slashings – Anzahl an Strafen, die den Antragstellern von Blöcken oder Beglaubigungen erteilt werden -- Stimmen – Die Validatoren, die für den Block in diesem Slot gestimmt haben + - Anzahl der Einzahlungen + - Einzahlungswurzel +- Attestierungen - Anzahl der Attestierungen für den Block in diesem Slot +- Einzahlungen - Anzahl der Einzahlungen in diesem Slot +- Freiwillige Austritte - Anzahl der Validierer, die während des Slots ausgeschieden sind +- Slashings - Anzahl der Strafen, die an die Proposer von Blöcken oder an die Attestierer vergeben wurden +- Abstimmungen - Die Validatoren, die für den Block in diesem Slot gestimmt haben ### Blöcke {#blocks-1} -Blöcke der Konsensebene funktionieren anders, da Miner durch Validatoren ersetzt werden und mit der Beacon Chain Slots und Epochen in Ethereum eingeführt werden. Damit gibt es neue Daten: +Proof-of-Stake unterteilt die Zeit in Slots und Epochen. Damit gibt es neue Daten: -- Proposer – Der Validator, der per Algorithmus ausgewählt wurde, den neuen Block vorzuschlagen -- Epoche – Die Epoche, in der der Block vorgeschlagen wurde -- Slot – Der Zeitabschnitt, in dem der Block vorgeschlagen wurde -- Beglaubigungen – Die Anzahl an Beglaubigungen im Slot. Beglaubigungen sind wie Abstimmungen. Sie geben an, dass der Block bereit ist, in die Beacon Chain aufgenommen zu werden. +- Proposer - Der Validator, der algorithmisch ausgewählt wurde, um den neuen Block vorzuschlagen +- Epoche - Die Epoche, in der der Block vorgeschlagen wurde +- Slot - Der Slot, in dem der Block vorgeschlagen wurde +- Attestierungen - Die Anzahl der im Slot enthaltenen Attestierungen - Attestierungen sind wie Stimmen, die anzeigen, dass der Block bereit ist, in die Beacon Chain aufgenommen zu werden ### Validatoren {#validators} Validatoren sind dafür verantwortlich, Blöcke vorzuschlagen und sie innerhalb der Slots zu bestätigen. -- Validatornummer – Eindeutige Zahl, die für den Validator steht -- Aktueller Saldo – Der Kontostand des Validators einschließlich der Belohnungen -- Effektiver Saldo – Der Saldo des Validators, der für das Staking verwendet wird -- Einkommen – Die Belohnungen oder Strafen, die der Validator erhält -- Status – Ob der Validator aktuell online und aktiv ist oder nicht -- Beglaubigungseffektivität – Die durchschnittliche Zeit, die benötigt wird, bis die Beglaubigungen des Validators in die Blockchain aufgenommen werden -- Aktivierungsberechtigung – Datum (und Epoche), zu dem der Validator zur Validierung verfügbar wurde -- Aktiv seit – Datum (und Epoche), zu dem der Validator aktiv wurde -- Vorgeschlagene Blöcke – Der Block, den der Validator vorgeschlagen hat -- Beglaubigungen – Die Beglaubigungen, die der Validator vorgelegt hat -- Hinterlegter Einsatz – Die Erstelleradresse, Transaktions-Hash, Blocknummer, Zeitstempel, Betrag und Status der Staking-Einzahlung durch den Validator +- Validator-Nummer - Eindeutige Nummer, die den Validator repräsentiert +- Aktueller Kontostand - Der Kontostand des Validators einschließlich der Prämien +- Effektives Guthaben - Das Guthaben des Validators, das für Staking verwendet wird +- Einkommen - Die Prämien oder Strafen, die der Validator erhalten hat +- Status - Ob der Validator gerade online und aktiv ist oder nicht +- Attestierungseffektivität - Die durchschnittliche Zeit, die es dauert, bis die Attestierungen des Validators in die Chain aufgenommen werden +- Berechtigung zur Aktivierung - Datum (und Epoche), an dem der Validator für die Validierung verfügbar wurde +- Aktiv seit - Datum (und Epoche), an dem der Validator aktiv wurde +- Vorgeschlagene Blöcke - Der Block, den der Validator vorgeschlagen hat +- Attestierungen - Die Attestierungen, die der Validator vorgelegt hat +- Einzahlungen - Die Absenderadresse, der Transaktionshash, die Blocknummer, der Zeitstempel, der Betrag und der Status der vom Validator getätigten Staking-Einzahlungen ### Beglaubigungen {#attestations} -Beglaubigungen sind "Ja"-Stimmen für die Aufnahme von Blöcken in die Chain. Ihre Daten beziehen sich auf eine Aufzeichnung der Beglaubigung und der bestätigenden Validatoren. +Attestierungen sind „Ja“-Stimmen für die Aufnahme von Blöcken in die Chain. Ihre Daten beziehen sich auf eine Aufzeichnung der Attestierung und der bestätigenden Validatoren. -- Slot – Der Zeitabschnitt, in dem die Beglaubigung erfolgte -- Komiteeindex – Der Index des Validatoren-Ausschusses im gegebenen Slot -- Aggregations-Bits – Stellt die aggregierte Beglaubigungen aller an der Beglaubigung teilnehmenden Validatoren dar -- Validatoren – Die Validatoren, die die Beglaubigung erstellt haben -- Beacon-Block-Root – Verweist auf den Block, für den Validatoren beglaubigen -- Quelle – Verweist auf die zuletzt berechtigte Epoche -- Ziel – Verweist auf die neueste Epochengrenze -- Signatur +- Slot - Der Slot, in dem die Attestierung stattgefunden hat +- Komitee-Index - Der Index des Komitees für den gegebenen Slot +- Aggregationsbits - Stellt die aggregierte Attestierung aller an der Attestierung beteiligten Validatoren dar +- Validatoren - Die Validatoren, die Attestierungen bereitgestellt haben +- Wurzel des Beacon-Blocks - Zeigt auf den Block, für den die Validatoren attestieren +- Quelle - Zeigt auf die letzte geprüfte Epoche +- Target - Zeigt auf die letzte Epochengrenze +- Signature ### Netzwerk {#network-1} @@ -237,38 +224,26 @@ Die Daten der obersten Ebene der Konsensebene umfassen Folgendes: - Aktuelle Epoche - Aktueller Slot -- Aktive Validatoren – Anzahl der aktiven Validatoren -- Ausstehende Validatoren – Anzahl der Validatoren, die noch aktiviert werden müssen -- Staked ETH – Menge der ETH, die im Netzwerk gestaket wurden -- Durchschnittlicher Saldo – Durchschnittlicher ETH-Saldo der Validatoren +- Aktive Validatoren - Anzahl der aktiven Validatoren +- Ausstehende Validatoren - Anzahl der Validatoren, die darauf warten, aktiv zu werden +- Staked ETH - Höhe der im Netzwerk gestakten ETH +- Durchschnittliches Guthaben - Durchschnittliches ETH-Guthaben der Validatoren ## Block Explorer {#block-explorers} -- [Etherscan](https://etherscan.io/) – Ein Block Explorer, mit dem Sie Daten für Ethereum mainnet, Ropsten Testnet, Kovan Testnet, Rinkeby Testnet und Goerli Testnet abrufen können. -- [Blockscout](https://blockscout.com/) – Konzentriert sich auf die folgenden Netzwerke: - - xDai – Eine clevere Kombination aus dem DAI-Stablecoin von MakerDAO und der Sidechain- und Tokenbridge-Technologie von POA - - POA – Eine Sidechain und ein autonomes Netzwerk, das von einer Gruppe vertrauenswürdiger Validatoren gesichert wird. Alle Validatoren im Netzwerk sind US-amerikanische Notare. Ihre Informationen sind öffentlich zugänglich. - - POA Sokol Testnet - - ARTIS – Eine Ethereum-konforme Blockchain - - [LUKSO L14](https://blockscout.com/lukso/l14) – L14 fungiert als erstes Testnetzwerk, um der LUKSO-Community zu ermöglichen, auf einer gemeinsamen Infrastruktur aufzubauen und zu testen - - qDai -- [Etherchain](https://www.etherchain.org/) – Ein Block Explorer für das Ethereum-Mainnet -- [Ethplorer](https://ethplorer.io/) – Ein Block Explorer mit Schwerpunkt auf Token für das Ethereum-Mainnet und das Kovan Testnet -- [Blockchair](https://blockchair.com/ethereum) – Der privateste Ethereum-Explorer. Auch zum Sortieren und Filtern von (Mempool) Daten. - -## Beacon Chain-Block Explorer (Konsensebene) {#beacon-chain-block-explorers} - -- [https://beaconcha.in/](https://beaconcha.in/) -- [https://beaconscan.com/](https://beaconscan.com/) -- [https://ethscan.org/](https://ethscan.org/) (fork of beaconcha.in) +- [Etherscan](https://etherscan.io/) - ein Block-Explorer, mit dem Sie Daten für Ethereum Mainnet und Goerli Testnetz abrufen können +- [Beaconcha.in](https://beaconcha.in/) - ein Open-Source-Block-Explorer für Ethereum Mainnet und Goerli Testnetz +- [Blockchair](https://blockchair.com/ethereum) – Der privateste Ethereum-Explorer. Auch zum Sortieren und Filtern von (Mempool-) Daten +- [Etherchain](https://www.etherchain.org/) - Ein Block-Explorer für das Ethereum Mainnet +- [Ethplorer](https://ethplorer.io/) - ein Block-Explorer mit Fokus auf Token für das Ethereum Mainnet und das Kovan Testnetz +- [Rantom](https://rantom.app/) - Ein krypto-freundlicher Open-Source-Dienst, der in seine dezentrale Finanzplattform (DeFi)& integriert ist Visualisierung des Transaktionsvolumens von NFTs für einen detaillierten Überblick ## Weiterführende Informationen {#further-reading} -_Kennen Sie eine Community Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ +_Kennen Sie eine Community-Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ ## Verwandte Themen {#related-topics} -- [Mining](/developers/docs/consensus-mechanisms/pow/mining/) - [Transaktionen](/developers/docs/transactions/) - [Konten](/developers/docs/accounts/) - [Netzwerke](/developers/docs/networks/) diff --git a/src/content/translations/de/developers/docs/data-and-analytics/index.md b/src/content/translations/de/developers/docs/data-and-analytics/index.md index d9e82561ba6..9786009828a 100644 --- a/src/content/translations/de/developers/docs/data-and-analytics/index.md +++ b/src/content/translations/de/developers/docs/data-and-analytics/index.md @@ -6,7 +6,7 @@ lang: de ## Einführung {#Introduction} -Da die Nutzung des Netzwerks weiter zunimmt, steigt damit die Menge an wertvollen Informationen in den On-Chain-Daten. Da das Datenvolumen stark ansteigt, kann die Berechnung und Aggregation dieser Informationen für die Berichtersterstellung oder den Betrieb einer dApp zu einem zeit- und prozessintensiven Unterfangen werden. +Da die Nutzung des Netzwerks weiter zunimmt, steigt damit die Menge an wertvollen Informationen in den On-Chain-Daten. Da das Datenvolumen rapide zunimmt, kann die Berechnung und Aggregation dieser Informationen zur Erstellung von Berichten oder zur Steuerung einer dApp ein Zeit- und arbeitsintensives Unterfangen werden. Wenn Sie dabei auf vorhandene Datenanbieter setzen, können Sie die Entwicklung beschleunigen, genauere Ergebnisse liefern und den laufenden Wartungsaufwand reduzieren. Das bietet Ihnen die Möglichkeit, dass Sie ein Team nur mit den wesentlichen Funktionen betrauen, das Sie mit Ihrem Projekt bieten möchten. @@ -16,20 +16,30 @@ Sie sollten das Grundkonzept des [Block -Explorers](/developers/docs/data-and-an In puncto architektonische Grundlagen sollten Sie mit den Begriffen [API](https://www.wikipedia.org/wiki/API) und [REST](https://www.wikipedia.org/wiki/Representational_state_transfer) vertraut sein, auch in der Theorie. +## Block Explorer {#block-explorers} + +Viele [Block-Explorer](/developers/docs/data-and-analytics/block-explorers/) bieten [RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer)-[API-](https://www.wikipedia.org/wiki/API)Gateways, die Entwicklern Einblick in Echtzeitdaten zu Blöcken, Transaktionen, Minern, Konten und anderen Aktivitäten in der Chain gewähren. + +Entwickler können diese Daten dann verarbeiten und umwandeln, um ihren Nutzern einzigartige Einblicke und Interaktionen mit der [Blockchain](/glossary/#blockchain) zu ermöglichen. So liefert [Etherscan](https://etherscan.io) beispielsweise Ausführungs- und Konsensdaten für jeden 12s-Slot. + ## The Graph {#the-graph} Das [Graph Network](https://thegraph.com/) ist ein dezentrales Indexierungsprotokoll zur Organisation von Blockchain-Daten. Anstatt für die Aggregation von On-Chain-Daten Datenspeicher, ob zentral oder außerhalb der Chain, zu erstellen und zu verwalten, können Entwickler mit The Graph serverlose Anwendungen erstellen, die vollständig auf einer öffentlichen Infrastruktur laufen. -Mit [GraphQL](https://graphql.org/) können Entwickler jede der verfügbaren offenen APIs abfragen, die als Sub-Graphen bekannt sind, um die für ihre dApp erforderlichen Informationen zu erhalten. Durch die Abfrage dieser indizierten Sub-Graphen profitieren Berichte und dApps nicht nur von Leistung und Skalierbarkeit, sondern auch von der integrierten Genauigkeit, die über Netzwerkkonsens bereitgestellt wird. Sobald dem Netzwerk neue Verbesserungen und/oder Sub-Graphen hinzugefügt werden, können Ihre Projekte schnell iterieren, um von diesen Verbesserungen zu profitieren. +Mit [GraphQL](https://graphql.org/) können Entwickler jede der kuratierten offenen APIs, die sogenannten Sub-Graphen, abfragen, um die notwendigen Informationen zu erhalten, die sie für ihre dApp benötigen. Durch die Abfrage dieser indizierten Sub-Graphen erhalten Berichte und Anwendungen nicht nur Leistungs- und Skalierbarkeitsvorteile, sondern auch die integrierte Genauigkeit, die durch den Netzwerkkonsens bereitgestellt wird. Sobald dem Netzwerk neue Verbesserungen und/oder Sub-Graphen hinzugefügt werden, können Ihre Projekte schnell iterieren, um von diesen Verbesserungen zu profitieren. -## Block-Explorer {#block-explorers} +## Client-Diversität -Viele [Block-Explorer](/developers/docs/data-and-analytics/block-explorers/) bieten [RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer)-[API-](https://www.wikipedia.org/wiki/API)Gateways, die Entwicklern Einblick in Echtzeitdaten zu Blöcken, Transaktionen, Minern, Konten und anderen Aktivitäten in der Chain gewähren. +Die [Client-Vielfalt](/developers/docs/nodes-and-clients/client-diversity/) ist wichtig für die allgemeine Sicherheit des Ethereum-Netzwerks, da sie die Widerstandsfähigkeit gegen Fehler und Schwachstellen gewährleistet. Es gibt inzwischen mehrere Dashboards zur Client-Vielfalt, darunter [clientdiversity.org](https://clientdiversity.org/), [rated.network](rated.network), [execution-diversity.info](https://execution-diversity.info/) und [Ethernodes](https://ethernodes.org/). + +## Dune Analytics {#dune-analytics} -Entwickler können diese Daten dann verarbeiten und umwandeln, um ihren Nutzern einzigartige Einblicke und Interaktionen mit der [Blockchain](/glossary/#blockchain) zu ermöglichen. +[Dune Analytics](https://dune.com/) verarbeitet Blockchain-Daten in relationalen Datenbanktabellen (PostgreSQL und DatabricksSQL) vor, ermöglicht Benutzern die Abfrage von Blockchain-Daten mit SQL und die Erstellung von Dashboards auf der Grundlage der Abfrageergebnisse. Die On-Chain-Daten sind in 4 Rohtabellen organisiert: `Blöcke`, `Transaktionen`, (Event) `Logs` und (Call) `Traces`. Beliebte Verträge und Protokolle liegen entschlüsselt vor und jedes hat seinen eigenen Satz von Event- und Call-Tabellen. Diese Event- und Call-Tabellen werden weiterverarbeitet und in Abstraktionstabellen nach der Art der Protokolle organisiert, z. B. Dex, Lending, Stablecoins usw. ## Weiterführende Informationen {#further-reading} - [Graph Network-Übersicht](https://thegraph.com/docs/en/about/network/) - [Graph-Abfrageplatz](https://thegraph.com/explorer/subgraph/graphprotocol/graph-network-mainnet?version=current) - [API-Code-Beispiele auf EtherScan](https://etherscan.io/apis#contracts) +- [Beaconcha.in Beacon Chain Explorer](https://beaconcha.in) +- [Dune Basics](https://docs.dune.com/#dune-basics) diff --git a/src/content/translations/de/developers/docs/development-networks/index.md b/src/content/translations/de/developers/docs/development-networks/index.md index f056e284244..66c24ddb964 100644 --- a/src/content/translations/de/developers/docs/development-networks/index.md +++ b/src/content/translations/de/developers/docs/development-networks/index.md @@ -18,10 +18,10 @@ Entwicklungsnetzwerke sind im Wesentlichen Ethereum-Kunden (Implementierungen vo **Warum nicht einfach einen Ethereum-Knoten lokal betreiben?** -Sie _könnten_ [einen Node](/developers/docs/nodes-and-clients/#running-your-own-node) betreiben (wie Geth, Erigon oder Nethermind), da aber Entwicklungsnetze speziell für die Entwicklung konzipiert werden, sind sie oft mit praktischen Funktionen ausgestattet wie die folgenden: +Sie _könnten_ [einen Knoten betreiben](/developers/docs/nodes-and-clients/#running-your-own-node), da jedoch Entwicklungsnetzwerke speziell für die Entwicklung erstellt werden, sind sie oft mit praktischen Funktionen ausgestattet wie: - Seeding deterministisch mit Daten für die lokale Blockchain durchführen (z. B. Konten mit ETH-Guthaben) -- Blöcke sofort mit jeder erhaltenen Transaktion in der Reihenfolge und ohne Verzögerung abbauen +- Sofortige Erzeugung von Blöcken mit jeder empfangenen Transaktion, in der richtigen Reihenfolge und ohne Verzögerung - Verbesserte Debugging- und Protokollierungsfunktionen ## Verfügbare Tools {#available-projects} @@ -47,9 +47,35 @@ Hardhat Network beinhaltet Hardhat, eine Ethereum-Entwicklungsumgebung für Prof - [Website](https://hardhat.org/) - [GitHub](https://github.com/nomiclabs/hardhat) +### Lokale Beacon Chains {#local-beacon-chains} + +Einige Konsensclients verfügen über integrierte Tools, um lokale Beacon Chains zu Testzwecken zu erstellen. Anleitungen für Lighthouse, Nimbus und Lodestar sind verfügbar: + +- [Lokales Testnetz unter Verwendung von Lodestar](https://chainsafe.github.io/lodestar/usage/local/) +- [Lokales Testnetz unter Verwendung von Lighthouse](https://lighthouse-book.sigmaprime.io/setup.html#local-testnets) +- [Lokales Testnetz unter Verwendung von Nimbus](https://github.com/status-im/nimbus-eth1/blob/master/fluffy/docs/local_testnet.md) + +### Öffentliche Ethereum Test-Chains {#public-beacon-testchains} + +Es gibt auch zwei öffentliche Testimplementierungen von Ethereum: Goerli und Sepolia. Das empfohlene Testnetz mit langfristiger Unterstützung ist Goerli, auf dem potenziell jeder validieren kann. Bei Sepolia handelt es sich um eine neuere, kleinere Chain, die ebenfalls auf absehbare Zeit gewartet werden soll und deren Validatoren ausgewählt sind (d. h. es gibt keinen offnen Zugang zu neuen Validatoren in diesem Testnetz). Die Ropsten Chain wird voraussichtlich im 4. Quartal 2022 und die Rinkeby Chain im 2. und 3. Quartal 2023 veraltet sein. + +- [Goerli Staking Launchpad](https://goerli.launchpad.ethereum.org/) +- [Ropsten, Rinkeby & Kiln, Ankündigung der Abschaltung](https://blog.ethereum.org/2022/06/21/testnet-deprecation) + +### Kurtosis Ethereum-Paket {#kurtosis} + +Kurtosis ist ein Build-System für Multi-Container-Testumgebungen, das es Entwicklern ermöglicht, lokal reproduzierbare Instanzen von Blockchain-Netzwerken zu erstellen. + +Das Ethereum-Paket Kurtosis instanziiert lokal ein containerisiertes und parametrisierbares Ethereum-Testnetz mit Unterstützung für mehrere verschiedene Clients auf Ausführungsebene (EL) und Konsensebene (CL) und eine n-fache Anzahl von Knoten. Kurtosis verwaltet alle lokalen Port-Mappings und Service-Verbindungen für einfaches dApp- und Smart Contract-Prototyping bzw. -Testen. + +- [Ethereum Netzwerk-Paket](https://github.com/kurtosis-tech/eth-network-package) +- [Website](https://www.kurtosis.com/) +- [Github](https://github.com/kurtosis-tech/kurtosis) +- [Dokumentation](https://docs.kurtosis.com/) + ## Weiterführende Informationen {#further-reading} -_Kennen Sie eine Community-Ressource die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ +_Sie kennen Community-Resourcen die Ihnen geholfen haben? Bearbeiten Sie diese Seite und fügen Sie sie hinzu!_ ## Verwandte Themen {#related-topics} diff --git a/src/content/translations/de/developers/docs/ethereum-stack/index.md b/src/content/translations/de/developers/docs/ethereum-stack/index.md index cae863493b7..2d5c5a715a1 100644 --- a/src/content/translations/de/developers/docs/ethereum-stack/index.md +++ b/src/content/translations/de/developers/docs/ethereum-stack/index.md @@ -1,5 +1,5 @@ --- -title: Eine Anleitung zum Ethereum-Stack +title: Einführung in den Ethereum-Stack description: Eine Vorstellung der verschiedenen Ebenen des Ethereum-Stacks und wie sie zusammen passen lang: de --- @@ -10,11 +10,11 @@ Es gibt jedoch zentrale Komponenten von Ethereum, die dabei helfen, ein gedankli ## Ebene 1: Ethereum-Virtual Machine {#ethereum-virtual-machine} -Die [Ethereum-Virtual Machine (EVM)](/developers/docs/evm/) ist die Laufzeitumgebung für Smart Contracts in Ethereum. Alle Smart Contracts und Statusänderungen auf der Ethereum-Blockchain erfolgen über [Transaktionen](/developers/docs/transactions/). Die EVM übernimmt die gesamte Transaktionsabwicklung im Ethereum-Netzwerk. +Die [Ethereum Virtual Machine (EVM)](/developers/docs/evm/) ist die Laufzeitumgebung für Smart Contracts in Ethereum. Alle Smart Contracts und Statusänderungen auf der Ethereum-Blockchain erfolgen über [Transaktionen](/developers/docs/transactions/). Die EVM übernimmt die gesamte Transaktionsabwicklung im Ethereum-Netzwerk. Wie bei jeder virtuellen Maschine erzeugt die EVM einen Abstraktionsgrad zwischen dem ausführenden Code und der ausführenden Maschine (einem Ethereum-Node). Derzeit läuft die EVM auf Tausenden von Knoten auf der ganzen Welt. -Unter der Haube verwendet die EVM eine Reihe von Opcode-Anweisungen, um bestimmte Aufgaben auszuführen. Diese (140 einmaligen) Opcodes erlauben es der EVM Turing-Vollständig zu sein. Das bedeutet, dass die EVM in der Lage ist, nahezu alles zu berechnen, sofern ausreichend Ressourcen verfügbar sind. +Unter der Haube verwendet die EVM eine Reihe von Opcode-Anweisungen, um bestimmte Aufgaben auszuführen. Diese (140 einmaligen) Opcodes erlauben es der EVM [Turing-komplett](https://en.wikipedia.org/wiki/Turing_completeness) zu sein, was bedeutet, dass die EVM in der Lage ist, fast alles zu berechnen, wenn man genügend Ressourcen hat. Als dApp-Entwickler müssen Sie über die EVM nicht mehr wissen, als dass sie existiert und sie alle Anwendungen auf Ethereum zuverlässig ohne Ausfallzeiten betreibt. @@ -46,7 +46,7 @@ Obwohl diese APIs kein notwendiger Bestandteil des Stacks sind, gestalten sie di ## Ebene 5: Endbenutzeranwendungen {#end-user-applications} -Auf der obersten Ebene des Stacks befinden sich benutzerorientierte Anwendungen. Das sind die Standardanwendungen, die Sie heute regelmäßig nutzen und erstellen: in erster Linie Web- und Mobilanwendungen. +Auf der obersten Ebene des Stacks befinden sich benutzerorientierte Anwendungen. Das sind die Standardanwendungen, die Sie heute regelmäßig nutzen aund aufhauen: in erster Linie Web- und Mobilanwendungen. Die Art und Weise, wie Sie diese Benutzeroberflächen entwickeln, bleibt im Wesentlichen unverändert. Meist müssen Benutzer nicht wissen, dass die von ihnen verwendete Anwendung auf einer Blockchain erstellt wurde. diff --git a/src/content/translations/de/developers/docs/evm/evm.png b/src/content/translations/de/developers/docs/evm/evm.png new file mode 100644 index 0000000000000000000000000000000000000000..8e3271e2e29de730701b4e1d5f221bb8c7940485 GIT binary patch literal 38252 zcmdqIcT`hf*ENb26#)eVrK+HyQbd|k1*G>P(ve<5?+_AffG7d!z4sI#%s7_X3#kx?os zzR)HkJO7l7?Ck4H7fDxKSVs6r|6O)fH1HrJqo6(gcZMt}6)st?PRRO*Dxyeg)bj9=+Dv7o5WWJ3f2a;Zrs#H z$pK2ge|vtXu7((modz2ypjcfScf$8wTW$(G`u$smW(kxXQUeMkXZ~JcdEy-Z`|2AR zzn_t2hLdD>&;0(*_4F*&?+=>3=b8UJ_v;eLNJxLr7p}Yh{_y4p`~2?@WI+nw{ycUi z;?23=m*`l}kpKR`CH}wF&?|Z}{d0T2!oTMjHqf;#JJ}o_H9Bf`wGJ9sTJBbUk2VP*-8AT6%xZE%!;%$KKg(2!#hr zd@>BE8)o1N=`awh0KspFIXqkjeKuKz#z?lS_k1AC^#F4Ae(muSn+?k%P0ijP`qz$4 z>E7K-+zv(9SV8WM?SK6EjO7R9SJFBxUOK1!zuHnlX$1=49To~Doga0JTZYd$t*y+ykF{w- zYm`h*J0-dzOgqN=~|w<_HJ(^yfV}x8sGjW#g%sE0)AA?gZcF7~6n-mdS~UvBBZDLq7vW zd6GGYAGbP}05i@&Qkj|8MpZKATx%+?$E3qtr%W~{aW`3`8g-bwYQcBP7=j_a&CX34 zSvlUK4`TC;2l*GlsZK_4$zAJK!%0NV*9u1Cl>X_jd$*NZU8;!BP7H+!vrVb!@pI=% zlAWJDnui4v!KtKNpflsQub0_MXB<3Y`1ZKCPjUde#1z9eOs+~ z8G$Q)b$Ps&;b`wk&pP<0gMI5sR2AEay?XjwKSttcXjf4I*tn|*) zS==t%Hn`n0U?%9H+dWnTv?MNL&S<`G+js6jm~qY$due6X<-OB@NWX}%P5B7m4v2Tw zRAAjn*zEmgxa~CK>he^EkQ=Rn<`aHFluQUQ z$|IF&K}q1Lioqb6G7$XpLV}y_Eg>9XnEo}#)O*>VifU#N&oWPg{ToP#fv*1-4)=Cw zaR+fguYV(+dq(t&X}kK-%G^(fgICQB4G98DLXrga?6&`g12{n=yUrn!{!vvnD!tSKn+MKk|&7OV1vbnS_4CBcRFCu1}?&?T

    y&RBCYwqnmeXnA8B?8 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 TKeOAuf*j-N>gTe~DWM4f23t>` literal 0 HcmV?d00001 diff --git a/src/content/translations/de/developers/docs/evm/index.md b/src/content/translations/de/developers/docs/evm/index.md index 72ea77dfef5..6204d6d4187 100644 --- a/src/content/translations/de/developers/docs/evm/index.md +++ b/src/content/translations/de/developers/docs/evm/index.md @@ -6,15 +6,15 @@ lang: de Die physische Überschreibung der EVM kann nicht auf dieselbe Weise beschrieben werden, wie eine Wolke oder Ozeanwelle. Sie _existiert_ vielmehr als eine zusammenhängende Einheit, die von tausenden verbundenen Computern, die einen Ethereum-Client laufen lassen, aufrechterhalten wird. -Das Ethereum-Protokoll selbst besteht ausschließlich zu dem Zweck, den kontinuierlichen, ununterbrochenen und unveränderlichen Betrieb dieser speziellen Zustandsmaschine aufrechtzuerhalten. Es ist das Umfeld, in dem alle Ethereum-Konten und Smart Contracts existieren. Bei jedem Block in der Kette hat Ethereum genau einen "kanonischen" Zustand und die EVM definiert die Regeln für die Berechnung eines neuen gültigen Zustands von Block zu Block. +Das Ethereum-Protokoll selbst dient ausschließlich dem Zweck, den kontinuierlichen, ununterbrochenen und unveränderlichen Betrieb dieser speziellen Zustandsmaschine aufrechtzuerhalten. Es ist die Umgebung, in der alle Ethereum-Konten und Smart Contracts leben. Bei jedem Block in der Kette hat Ethereum genau einen "kanonischen" Zustand und die EVM definiert die Regeln für die Berechnung eines neuen gültigen Zustands von Block zu Block. ## 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 du dich mit Kryptografie-/Blockchain-Konzepten wie [Hash-Funktionen](https://wikipedia.org/wiki/Cryptographic_hash_function), [Proof-of-Work](https://wikipedia.org/wiki/Proof_of_work) und dem [Merkle-Baum](https://wikipedia.org/wiki/Merkle_tree) auskennst. +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. ## Vom Ledger zur Zustandsmaschine {#from-ledger-to-state-machine} -Die Analogie eines 'verteilten Schalters' wird oft verwendet, um Blockchains wie Bitcoin zu beschreiben, die eine dezentrale Währung mit grundlegenden Tools der Kryptographie ermöglichen. Eine Kryptowährung verhält sich wie eine "normale" Währung, da es Regeln gibt, die bestimmen, was man tun kann und was nicht, um den Ledger zu verändern. Zum Beispiel kann eine Bitcoin-Adresse nicht mehr Bitcoin ausgeben, als sie zuvor erhalten hat. Diese Regeln untermauern alle Transaktionen auf Bitcoin und vielen anderen Blockchains. +Die Analogie eines 'verteilten Schalters' wird oft verwendet, um Blockchains wie Bitcoin zu beschreiben, die eine dezentrale Währung mit grundlegenden Tools der Kryptographie ermöglichen. Der Ledger führt eine Aufzeichnung von Aktivitäten, die sich an eine Reihe von Regeln halten müssen, die wiederum bestimmen, welche Aktionen erfolgen bzw. nicht erfolgen können, um den Ledger zu verändern. Zum Beispiel kann eine Bitcoin-Adresse nicht mehr Bitcoin ausgeben, als sie zuvor erhalten hat. Diese Regeln untermauern alle Transaktionen auf Bitcoin und vielen anderen Blockchains. Während Ethereum seine eigene native Kryptowährung (Ether) hat, die fast genau den gleichen intuitiven Regeln folgt, ermöglicht es auch eine wesentlich leistungsfähigere Funktion: [Smart Contracts](/developers/docs/smart-contracts/). Für diese komplexere Funktion ist eine ausgeklügeltere Analogie erforderlich. Anstelle eines verteilten Ledgers ist Ethereum eine verteilte [Zustandsmaschine](https://wikipedia.org/wiki/Finite-state_machine). Ethereums Zustand ist eine große Datenstruktur, die nicht nur alle Konten und Kontostände enthält, sondern einen _Maschinenzustand_, der nach einer vordefinierten Reihe von Regeln von Block zu Block wechselt und beliebigen Maschinencode ausführen kann. Die spezifischen Regeln für das Ändern des Zustands von Block zu Block werden vom EVM definiert. @@ -32,7 +32,7 @@ Bei einem alten gültigen Zustand `(S)` und einem neuen Satz gültiger Transakti ### Zustand {#state} -Im Rahmen von Ethereum ist der Zustand eine enorme Datenstruktur, die eine [ modifizierte Merkle-Patricia-Trie](https://eth.wiki/en/fundamentals/patricia-tree) genannt wird, die alle [Konten](/developers/docs/accounts/) durch Hashes verbunden hält und mit einem einzigen Root-Hash in der Blockchain abrufbar ist. +Im Rahmen von Ethereum ist der Zustand eine enorme Datenstruktur, die [ modifizierte Merkle-Patricia-Trie](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) genannt wird, die alle [Konten](/developers/docs/accounts/) durch Hashes verbunden hält und mit einem einzigen Stamm-Hash in der Blockchain abrufbar ist. ### Transaktionen {#transactions} @@ -56,9 +56,9 @@ Kompilierter Smart-Contract-Bytecode wird als eine Anzahl von EVM-[Opcodes ausge Alle Implementierungen der EVM müssen sich nach der im Yellowpaper von Ethereum beschriebenen Spezifikation richten. -Während der fünfjährigen Geschichte von Ethereum hat die EVM mehrere Revisionen durchlaufen und es gibt mehrere Implementierungen der EVM in verschiedenen Programmiersprachen. +Während der siebenjährigen Geschichte von Ethereum hat die EVM mehrere Revisionen durchlaufen. Zudem gibt es mehrere Implementierungen der EVM in verschiedenen Programmiersprachen. -Alle [Ethereum-Clients](/developers/docs/nodes-and-clients/#execution-clients) enthalten eine EVM-Implementierung. Zusätzlich gibt es mehrere Standalone-Implementierungen, einschließlich: +[Ethereum-Ausführungs-Clients](/developers/docs/nodes-and-clients/#execution-clients) enthalten eine EVM-Implementierung. Zusätzlich gibt es mehrere eigenständige Implementierungen, einschließlich: - [Py-EVM](https://github.com/ethereum/py-evm) - _Python_ - [evmone](https://github.com/ethereum/evmone) - _C++_ @@ -71,6 +71,7 @@ Alle [Ethereum-Clients](/developers/docs/nodes-and-clients/#execution-clients) e - [Jellopaper aka KEVM: Semantics of EVM in K](https://jellopaper.org/) - [The Beigepaper](https://github.com/chronaeon/beigepaper) - [Opcodes der virtuellen Maschine von Ethereum](https://www.ethervm.io/) +- [Betriebscodes für die Referenzdokumente für die virtuelle Ethereum-Maschine](https://www.evm.codes/) - [Eine kurze Einführung in die Dokumentation von Solidity](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6) ## Verwandte Themen {#related-topics} diff --git a/src/content/translations/de/developers/docs/evm/opcodes/index.md b/src/content/translations/de/developers/docs/evm/opcodes/index.md new file mode 100644 index 00000000000..f6f6ab2d273 --- /dev/null +++ b/src/content/translations/de/developers/docs/evm/opcodes/index.md @@ -0,0 +1,170 @@ +--- +title: Opcodes für die EVM +description: Eine Liste aller verfügbaren Opcodes für die virtuelle Ethereum-Maschine (EVM). +lang: de +--- + +## Übersicht {#overview} + +Das ist eine aktualisierte Version der EVM-Referenzseite unter [wolflo/evm-opcodes](https://github.com/wolflo/evm-opcodes). Auch aus dem [Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf), dem [Jello Paper](https://jellopaper.org/evm/), und der [Geth](https://github.com/ethereum/go-ethereum)-Implementierung. Das soll eine zugängliche Referenz sein, aber sie ist nicht besonders streng. Wenn Sie sich sicher sein wollen, und Kenntnis von jedem Sonderfall haben benötigen, ist es ratsam, das Jello Paper oder eine Client-Implementierung zu verwenden. + +Suchen Sie nach einer interaktiven Referenz? Sehen Sie sich [evm.codes](https://www.evm.codes/) an. + +Für Operationen mit dynamischen Gaskosten, siehe [gas.md](https://github.com/wolflo/evm-opcodes/blob/main/gas.md). + +💡 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` | diff --git a/src/content/translations/de/developers/docs/frameworks/index.md b/src/content/translations/de/developers/docs/frameworks/index.md index 7af17ffac0f..79fe258550c 100644 --- a/src/content/translations/de/developers/docs/frameworks/index.md +++ b/src/content/translations/de/developers/docs/frameworks/index.md @@ -10,8 +10,8 @@ Für den Aufbau einer vollwertigen dApp sind unterschiedliche Technologieteile e Frameworks bieten zahlreiche direkt einsetzbare Funktionen wie: -- Funktionen zum Aufsetzen einer lokalen Blockchain-Instanz. -- Dienste zum Kompilieren und Testen von Smart Contracts. +- Funktionen, um eine lokale Blockchain-Instanz aufzusetzen +- Dienstprogramme zum Kompilieren und Testen von Smart Contracts - Client-Entwicklungs-Add-ons zur Erstellung Ihrer anwenderorientierten Anwendung im selben Projekt/Repository - Konfiguration für die Verbindung zu Ethereum-Netzwerken und zur Bereitstellung von Verträgen, sei es zu einer lokal laufenden Instanz oder für ein öffentliches Netzwerk von Ethereum - Dezentralisierte App-Verteilung – Integration mit Speicheroptionen wie IPFS @@ -42,47 +42,69 @@ Bevor Sie sich mit Frameworks beschäftigen, empfehlen wir, dass Sie sich mit de - [Dokumentation](https://eth-brownie.readthedocs.io/en/latest/) - [GitHub](https://github.com/eth-brownie/brownie) -**Web3j –** **_Eine Plattform für die Entwicklung von Blockchain-Anwendungen auf JVM_** +**Web3j –** **_Eine Plattform für die Entwicklung von Blockchain-Anwendungen auf JVM._** -- [Webseite](https://www.web3labs.com/web3j-sdk) +- [Website](https://www.web3labs.com/web3j-sdk) - [Dokumentation](https://docs.web3j.io) - [GitHub](https://github.com/web3j/web3j) -**OpenZeppelin SDK –** **_Das Ultimative Smart -Contract-Toolkit: Eine Reihe von Tools, die Ihnen helfen, zu entwickeln, kompilieren, aktualisieren, verteilen und mit Smart Contracts zu interagieren_** +**OpenZeppelin SDK –** **_Das ultimative Smart Contract-Toolkit: Eine Reihe von Tools, die Ihnen helfen, zu entwickeln, zu kompilieren, zu aktualisieren, zu verteilen und mit Smart Contracts zu interagieren._** - [OpenZeppelin SDK](https://openzeppelin.com/sdk/) - [GitHub](https://github.com/OpenZeppelin/openzeppelin-sdk) - [Community-Forum](https://forum.openzeppelin.com/c/support/17) -**Create Eth App –** **_Ethereum-basierte Apps mit einem Befehl erstellen, zur Auswahl steht ein breitest Angebot an UI-Frameworks und DeFi-Vorlagen_** +**Create Eth App –** **_Ethereum-basierte Apps mit einem Befehl erstellen. Zur Auswahl steht ein breitest Angebot an UI-Frameworks und DeFi-Vorlagen._** - [GitHub](https://github.com/paulrberg/create-eth-app) - [Templates](https://github.com/PaulRBerg/create-eth-app/tree/develop/templates) -**Scaffold-Eth –** **_Ethers.js-, Hardhat- und React-Komponenten und Hooks für web3: alles, was Sie brauchen, um mit der Entwicklung dezentraler Anwendungen auf Basis von Smart Contracts zu beginnen_** +**Scaffold-Eth -** **_Ethers.js + Hardhat + React-Komponenten und Hooks für web3: alles, was Sie brauchen, um mit der Entwicklung dezentraler Anwendungen auf Basis von Smart Contracts zu beginnen._** - [GitHub](https://github.com/austintgriffith/scaffold-eth) -**The Graph –** **_The Graph für die effiziente Abfrage von Blockchain-Daten_** +**Tenderly -** **_Web3-Entwicklungsplattform, die es Blockchain-Entwicklern ermöglicht, Smart Contracts zu erstellen, zu testen, zu debuggen, zu überwachen und zu betreiben bzw. die dApp-Nutzererfahrung zu verbessern._** + +- [Website](https://tenderly.co/) +- [Dokumentation](https://docs.tenderly.co/ethereum-development-practices) + +**The Graph –** **_The Graph für die effiziente Abfrage von Blockchain-Daten._** - [Website](https://thegraph.com/) - [Tutorial](/developers/tutorials/the-graph-fixing-web3-data-querying/) -**Alchemy –** **_Ethereum-Entwicklungsplattform_** +**Alchemy-\*\***_Ehereum-Entwicklungsplattform_\*\* - [alchemy.com](https://www.alchemy.com/) - [GitHub](https://github.com/alchemyplatform) - [Discord](https://discord.com/invite/A39JVCM) -**Foundry –** **_Ein unglaublich schnelles, tragbares und modulares Toolkit für die Entwicklung von Ethereum-Anwendungen, die in Rust geschrieben wird_** +**Foundry –** **_Ein unglaublich schnelles, portables und modulares Toolkit für die Entwicklung von Ethereum-Anwendungen, geschrieben in Rust._** -- [Dokumentation](https://onbjerg.github.io/foundry-book/) +- [Dokumentation](https://book.getfoundry.sh/) - [GitHub](https://github.com/gakonst/foundry/) - [Werkzeuge für Foundry](https://github.com/crisgarner/awesome-foundry) +**NodeReal -** **_Ethereum Entwicklungs-Plattform._** + +- [Nodereal.io](https://nodereal.io/) +- [GitHub](https://github.com/node-real) +- [Discord](https://discord.gg/V5k5gsuE) + +**thirdweb SDK -** **_Erstellen Sie Web3-Anwendungen, die mit Ihren Smart Contracts interagieren können, indem Sie die leistungsstarken SDKs und CLI verwenden._** + +- [Dokumentation](https://portal.thirdweb.com/sdk/) +- [GitHub](https://github.com/thirdweb-dev/) + +**Chainstack -** **_Web3 (Ethereum und andere) Entwicklungsplattform._** + +- [chainstack.com](https://www.chainstack.com/) +- [GitHub](https://github.com/chainstack) +- [Discord](https://discord.gg/BSb5zfp9AT) + ## Weiterführende Informationen {#further-reading} -_Kennen Sie eine Community-Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ +_Sie kennen Community-Resourcen die Ihnen geholfen haben? Bearbeiten Sie diese Seite und fügen Sie sie hinzu!_ ## Verwandte Themen {#related-topics} diff --git a/src/content/translations/de/developers/docs/gas/gas.png b/src/content/translations/de/developers/docs/gas/gas.png new file mode 100644 index 0000000000000000000000000000000000000000..93e6ead39a0f2fa4ea4c6090e505b443d94b198d GIT binary patch literal 44203 zcmeFYcTiLP`!*OonslT{?*h^Ur1uhf z4?UEGz@Fgq{l4>?cV_?E-PzgMGsAF_ob#!7yRQ5GMCxj*k`Xf!gFqlMbu}eD5a@;& z2z2fFO#2+J@(@Q=twmhDUx%6PN}zageZTlD#Q_{Q`a@+Rp6_ASoNxyXS4 z3H3j_4JFHu`(J+2v`Ok+zFV@kBycw_#l!tmT)6mdU~&H|Qea&FpSbLV;TyIZUzzP- zJGCKwxP1W)+_!~`mwK)C%6})YdrmamKQ&D;yNuaj`1jWqztN%j7dd#0Pn!vuO{+O= z*M|-p4FCRkr)gKG8*WVHnx26Q__;9S-cz>5glkkT)+`81jsQIpxQ_b>qIA2#e09Tq za1)RT;F4RWa=p5F-F0XF>IU>t^(Wrd-9NFf|GuWgibr_$&0DE!^9*HTHvnd(61vN^aln(EmzK{(7Q zK6~22AF$|i<1+OXNa>cM0WeHT1~??=#$}?_F{cY}lfic8^V;{Cqom9k&^@V=$)k{Y zH?GO?bW&nHJ&%ru8wrx$?;_cmZZHIuttF0C*#6N8fGI1cE~mH&1)Ev>@7?yX!;~2~ z!0{-b8Q?^o-F>Jj@r#o(5oNqqEklAhBgmMIvcpU<<;!O|l!TkH^*le6K%hC+X9eCgqPS;=-> zN#fkLt))5SI3EBjyv8rR8@e0I?fqa|q9tpytf3;PDh(QA!WonXQX=`g7XtF!A0AI+ z5MRK5g{%}&-M|B9pWOAv=c;%gwQK%SbS`8gW+Y2u16g6_x|jl&Jm$AYNHK;|j5GGn zeBM!WIa-TC3f}F|II|uKNV@nmnNvIFBJ^}z^jGgYOp|tI{6y!tDAXfP`v=mRVb?_V zv~hT;I>k-7G>xfJ+eJ2{vkTGR`(vq?47rwhjy(#5sO+)7|Dn-8AWBPIgQ@J}i=}Pg z+}t1B@FO@O>|c6!zLw;`P%Ut7hRo_^sOM(UaoIkSAl%yU>U;QEQ`9lJn>}IuJc=OZ z=5Cfn+BtT7D<4r21=HEp?)}|BVDr)T1%2&Ws%V+=SxLMkU5>dSM`GvD9?c0e$u9M4 zZjO0CeB_pW-;Y=41PURHm4Bs_-HV{l>sN5SC8YzUdy&7K@36_Bac_I?L#XyIMbF?} z%-l_s^?>_+7*h;UaX$rY)oa6g0iSCKF00>Dvl9ICg`Pj;h02A@x{?I#;T+9_wfv;4 z0oasl`?q)ku44*(j9=8WPX8%#zv9v^{!z>6u-E0nN-rZa*OaepFN|Tw4=n((IW0py z-LLS|ZG3pZ>KL8-JHeIxqhIN~$kDEMzlbl=mJlp@|M~inM1YOa`1mB-g3sOf1lD&C zXIx)D}rB0VC9gZ@;0tIt>bS~ zrkmM~=bcXtpVu16LVc5C;x)~RGH7!`+0AOzw>tG%Qjdia4}z(EAkQLl)X5-1t9@1d zck0c4>#skL3jdhk@=a30rWQ*q`!)XY)CYDbw|LgDwf)=Q$cQ%l#^aWDMtstps?3t| zvJwwN-aA9~yW|Q)AaZG(pQC&x!Ev$_89hn-=J5SP@N+j#Gu@z@acZKufFU`=zCYiq z60}kc$mqxpE4Y51urX9KECefDOU$aDX{vFhh;4YNZTw-O^-TkG_u$mR;`t{vPLtvN zZ#)sU4do%7j-!qX{VdZne&7ag#A#~8&W#q03(??dIPt~dpKF*Tztkm`IK8ron{h@r z7h@k8QpP5W5P*JMd0@(C#MdQOV;aR)lT}3w?!ogPtSdC~2)1#3y5ltb7*RoBdzKn} z1My4c28U{pXu`-*d9o(k&DKa8)9;Hu-$lzxLg^c1q-S%&JGQmWk^@p{v%YCjo}MC` zAO%@>v=wzh;-pW2J(K%p|27yclQ;OX#U{leaAT5{*~jr_*p@g|iihlom*Z%@Ft>jF zK4xb>WMF{lvH!9UG@9l8F55pNf}$koQ;e@9E|HZTJo=JESDC>7Bw8 zm-8((Pol^W-QagWrGF z7r<*e>RUc{=~>`&6+R80q2}a};lp?W`a1_~8qr1~sl_>kBGTV3?vyoL+(~@L7^HGq zl@k+Vlx4l>SG!tTcjTep%F4iGup(XEd$`fS2HK>!vi+M1E_shx5khs&z%mV64n4GH zBZaYQ`P>Ej!x4-Y+8pYcYy*=GHd8oOgU@aogILX4cmoACDXB8=vmW z&@zU9N|LOSPL+|`iqKxgK3me!>X5W)m)>lH#ey*ZI#x@lV$|A0 zM-yLPJI#G(y19~xRt&n0pLFL`8Xlacq%samQFk`K~sOLe|C#lv4lMBnHa_^A0^o$D4d^`v>v zUwSlM zpjo`xXTDdncB+!RmdT}dh|`2QE$1nE1k0AfQFKkGDn5v>I;oc()C5iEQ5fjjaZY^< zW}&Wdc31MEKXjKxvS5k#1asLi*xKr3*AsIAftWkQX+OvV{dLe4i^_Sr&HxX7 zh@H@?^pC75d6>b#kIPwvKs$h4EFVt* z%RK)3CNP()H{VJDHbGdle;fRkH3o-u4k%qgc1}%~ujP-fdi8h0tWaxfrn>&#p{6UE zvE8J^16E=6VW3;M{PN!?R2Dj(gbbHc=Qm&aZO!E0-xOF*C;Z#I7hj_A8YvSTJ(4~# zXBv@v0h6b6Cl&At$4zCJFhCksGcJkiSFS(hG|ub3UeihGe#6q1$TIspXkZ{l8&a<% zOYpJP4FFKNVSSRTSW&krWPRT)bZ((mM5qFXSf%uyCX~*wq6tg=pdfYX@zA3)^ zoQ@V0-6w=0%gl|5O_uf9rnwH1qX--i8nQUJr2M>l&*PD_r}E6UIQX=!;2B4R`lRFz zm`dd*UV7Qt#dU%~{r=8Aa4aJTq@(>hWFJ;vP@&J1P%0{gdokcIa` zr2ph{#3b7qF@Qk7_dbc+zT?vo(kT{{OAM41{dG75A#E~aDB7I(%oZ@F#Edg~B3-7X z3xU9B7>b)OVw?CNjVQ4T#G4;^h>pD@1b?ZbzSOQSYDw3U+}h&N6P36pATlks9hB&$ z&z<=iKp2l=$iRB$ZDb;BB2=nZQt9bGeQ&Z*gY2J>B|xYKJW$LoH*p&!Ixt;-H^3`j z{^j4j%9(2;1LCgNg4rh8mQLprgY7%9h>KRu%kcfa4aNNAKz^+5i-q?+?_3;lc*SJP zDFG6cCgc)19nRC@ENgS_y?abnu0??ZKHq$}Y<%HEIvO7AJ4XSLv6cxR(r;LcV$$^`;46aH>bXzt ztIC7@Y(m%0G=h;b{_AyaahhR%{xSY8$m^;Jk2eQ#q9eC0hY{#D*cMsBP>fjDZ~(x? z&Z&hkF!n2W?#D#%kRe@5c2JGzSTIp>Qh&AptzS^$|()agyVYIi^z!$r5Hco)o$p~?a=iorXD4(B>M<*`> zKq=`Q^~s~7@8+NFt~U?mns_f0*-J9&o;_FW*DCRvEl@_6uHu|#-30n)O&!8;C1@BNI&+?w4+!s zQHDPCB`?pXxFP!zIoh{DKCYWEWlB!FQ}y`QcW#mu??sO@hO#%KG{>ENtl#Y>M-Yed zes$65V~~`bfaUJ}N)z&aB7y8DhQDu=MkZ4M4*7do>0#oTXUdE|L&0YOOM76k)BS zU%!U&naFtL7wr6i=xgf7>e=ivtD{XoFywXzLI7)^54Oi95bGz*7YMXg=SoT#a9AyF zoEGri_amkc{?H~g?%=DDi^RtZP9x%3O=caUq%nl}mVHvR9NF`9TRf)!x;mCDd7M*W zYlFYgc7EDQ*14`q%YNJxvwUlK!;gja;+ExUYrcsna&qlQUe85dOToVFX%l$Z*?2r; zIw!d?GFg+Mzzb(+Da~>6VW*l~ZT_jTuAaBz6hgmCa@_th2(exI#X-Ta8Zy6<_jslbpX`5-F$44T3=8o_i zbAqX-T&5jf7WU5@W_Q&pS0VSmuv`o-_#xd8;QXgW+liVpO&w8}x);#Mm+o4WbKH-f z_?Gjgl0Bkn@|=u;uo8dz$`fI%t*JM$XrHHb5hY;1lq)UNy6xy7iXXlnidx0luk(?}Z7WM<1JM}9$rAsvKg|#xF7H$@^%x)ZCGo**jIGzl_c1}L8i4bC}wnr*p7vbfx zlkc%NfJIqv0nECeO*1zCnxVuEdgSC|!o*D8sGYI*xz6{LT%;wp9#a<4FpUkRZu=uG za(KVxjm(sR@nx%2)l@|%)M&_<3?e_lDu*BXK^3>HbBRkzELb+zo~(0W>bwrW75H2U zjuzmV9OjODxKf^0hJON_=v8kuiBAOE1kP=yeall&QXUawTV13}3Ev9HJ?;i0^XXMo zFG@c=5D^e*O0*qHL?lZ{n1sAP_RI@Xahco}4V1MBdHX!kuugMFOLOyw)10Q@evGEa z=zNe&98E)LQ19CiWa8GV-b}rAoaKLQ_s={?cbLY7Swu`az;|<(-r&yi9$k}|qHNCN z5nA&~Q86R&xk2^<{QY#UW_wr_@?n|0y3vo7qYb#ga9ixF>!kSqG}ZDn6jg2Q zsy|TgXTiiPd|^K;fL^VO^bu}QpVU46bS>oTFa+(2#{C!$DHgM8`3=oMoDS5WQ`WmpMuPFEi zE#$20wEO)Fxwx63+Oz3HtfZ!<)oaVs3o1eqcmjq~dit;Z=o@&ylRxdpJab!$R%f`1w4HY~Pg5Hg&NYAAj?K{}&% zK4h@4F?sdZJtX)jPeBe6*$ssh%}g9m<)>+#&9!wL#u(pI&GvUEJv!zajFta}3p?a0 zx9uF08dtvH4SU*C@&HQmPeu|4E<$84n41_CO;;ZG%0~dP3oG;68_iuKU+skX6GJvK z?l0Q(*LL{!6?3W1!-h@alMqU2Tu7^Hg(6f$)lRXIOh(sGyI~QN%`|ixkRrsdbCdw`CV<#y4HJSx(HWF-^p5x*-X1u=vUj$Csc-2Rl0z{p# z6$00LpHOrD3TJ~>>~m^IHKKn}Z%9v5z$9vdL=2fL0sjBv;=>8oCi%9ZOW*L^OV}Hh zq(#5ZLbeFB`|ZPEoW%J%P74L_PmYT|PbvW4%1v{DFnNzXv)P@hwCTBTGxZ@PfS(9} zlQ<%wT&U{*fNTVDXo>g&g4!>v^;=%!+dRIx!Lh#1;DzAmj< z+JTK0FiRGdtz_a3u2WivPbS2?M+pRtMl_zwJ0CQ7iSrY9?hMx;GF#YZck6o35~TpeeFmx5;85K;SXPy zLy5}9Enwn}NZq}s0V0Kng-%VRtW*HDDRtG#Jp4Lk7~8^p$Uv4qz$lGWOuRX^{**uA z80m|C0|1X?%MI5%U*0(jyk*A4QYao~yU?~M-FqDsu5ZgEMMuKv7O# z2mNqq|4N}#8sE`i$Ll=)=k%YDF5J%Q$~xthd2Ds#UyC+NSl|^PfRBj(x*0()P4vM3 zhg1AY{qaT@J}y}{`PMqVVWn9oxYipqYo4%V!D@Cy|F%i# ze3sF%_h$7vC;z}(HrWxQSHOJW1k})n)j^Y#zrxsvWm+>L!n-CG_%J8l#8Tdu{c~y5 z-berDu+lf*g)tJIaP_ue@BG7H_qj(VR(GAM_^1n?RnmFFDx!+g`-uDsDy|B#dG$;9 zODNq0qLbI_rI!fS0pY+Np#X#l_sDJkDSIz^J5MgNjfHEmJFPK*4GT1rmORDeiUIhF z44K!mF*#YN31;NLX}&{Ra5ULgL`rQIazGe0GC^@0nb_OJ92QH(U3U>OPHAXrV~>N}o*d&PoJJ1ne@vbhIpB zcaBbkYu1XKkcHG7a2x~kdihUBFI8RJ$m(+v2)uh9b`}ZJj$H+3pH=%5!NpT&I$^BD+LnAO-FhX%$_wF_oJCTaR}V5-n)Z7k@paLl$BHFm(z+~#3}5~6$$0Q z%4mkYD6YbjFLje@QTb9^5Hl|lQ=4u*Ugi9dQ_}OE7$*WU^33>Z-cMxBe3Jhn^>s@Z zvENOp5hf#2!ZN<4_7bbNh33;P#Z^iN!L9NUEOkE|<0nULObE!Ogj@d94ZUtNdI4BD zAgB<`cd%A9jk6IBcsc!tYS?MC<5y(a$KjlI##c$>CYj@AC5vR1)_2_|=(<|guMS-|y zy}w6_#L9%MNb3h$94k?gMUZRzA4cTpVHgu&Q34`cqaT)#b{RUae@iNep31P!uwE<> z4`zSN(RoM0TOvH?&lTEg3(qbd{@4AiOV+vq@^V7!LMpX!7iaWu4>yhRu`sdRVYxq8 z<{0`RN&lrGUT-@3S3(6BRG?iH;=U{Oxezf-czF!YvMFm3xOm#wr*@UE@6>8a0-$=t6Ay|_yd2Lqn-59Au=W(?Dk@Nlnburcw5i4*LYlm zmhg(^aC&-h4QJPs+w61qZB_30p*Iu>B7kW<_&bUYV**Wml*;1KuvR5@d%qL862RHm zttpM!{?xOfnjsIlMjl4d;cG}DMn{PEo24gyno=1f7C7)6lQ6YL(S-UwOCSaXVq)9G zM#u4_hb0O2wowjgPMhD}h3Ht|bVM%A7!vx>Z~5{osTl0yluh$H+K=)D_sr?MDT3|> zL%b)kARS?Kq5sR1H`iAs#{*kOK4oO^k}Lki0}aMMZr?2M@XW$FWnI5~mViHVLlL7) zG1u@6CD+#)g#N6%H($F!_Jqd}FT*PhxyI3Ta zk%6sMZ+BmIcSZ}>hdf&7Ik_AmAQ`tfEitcJ3IAj_Y3yAw`O5Iw0{Ug%kOEZR27l{f z9vnO2Dj#e9VEz=P@3<`!xJI2O+-?@o66W3YSS)?;!lAj+B_BJ6Wvhi+#jnuhj#oP>SRH0`Kn6H>YQHM-ij~P<5_LzU3NGu@(wK zJc%;nl{RPN-bXzcl`%{M6MW{ z*zWf#lf^Y1skserLsPYk-{i*98GCmEn+w>FFrN@oL$6p2WomSP8rd{pf+jmhy<2H& z%$}(z>VZ9Ta^*v=CDNv00{Lbr4gI_7wjVr5MDAAf-;=tl43%NU{5HNnR58Nh=(C*_ zLkt)IXCQ#wwvr^08XjV&_O3NtL7K~8azXnb zt*day6)G(u-O-)vIoUB7LXfB+%)G3Y2kDw|LWN~n@fUw;lV)Qo-k!0CL(f*sO3MN+ z-weQ*lauXNuS1}wIbbz>TkFBHIp@tQ6~z(ft=pp{e{Y6hR=G92qI%p-AR_!ZZRJi@!l>7CQAWAaTCv3OySxmIG zR8S^{nS*wXIF~yBM4=YX{|duqY@znR=hC|3IDbR$&Xeyr-^oal}z(&K~10EnK7`ORP8&p;XfIy9Ac~ zqRn8F=qd>c0*QCWkPll5ODPXmIDDl_9f(hYdnr)DxE~Dka`D}Dl}%c#@HV2AQgV6e zvnB<}bf70-bHX%aUZR7KjbpQ)na*9*GEsmjr9W&?W%AgyVKP@LOQvj%TQUm1P{2>d z`1*AkMMnx1wbUw8l0}V$8fcQ9<>YRci6&Y@jFNG6Qv(B6kelFR+tpY;MVupU(3k5e zhnpCL*wFcD%tfN3Y9VwH*H>Q=$m@|;6Ydx4h$x3%-FsW-NX~o7ZICAf@Owf?JG5K2`Sw4?Q5ogiB zk1$r#{`v_I*;|b8Tg+P(;kmw@jTbr{Qr4LzslX zi9*oXo6$#gUdMGYXGDmnwSyyge*@)T8DVIFw=_6(GCC-5gpwTrqtQ09XPbotC?2!M z3~QIo8~^o{{|#9Nz-J4*G5*OaG$_+Xj=$AtubH7)Y>?Qb>pJ8_AXQYfzQxh|RRJ z?A7~yQD?!HGWE{n^R*DyCBmv_MbB&*@o<~^RnxDZL5UoPur9I^djZ0{qKX{*!eKfm zPEr&ilL0+ipBRXw)&hKKfjBy$K=hNdGmc!SEr_nzhdZ*C2U$_N2#*wb;1l+p&r{3an}VvIR3 z@fLfm8d1G+PGuuH<>T5SZ^?1mB*G)<^eT%)VrJmWQ5p=~ zfK2yk{po5*Xr(I8H}YYxh`Y+q?)Nt51UHU%4>?RC`=`rM6rd_>YSY_ZMik#ANB}$e z!qy3Ai|!X}vTutO>E>~`7}3PNZOmNF=vG{P7973!uP7KU`FlEHk4Dn$$G)tku^co# zZDkrVpWr|-`i5R7Ba@vx+$=O#h>m%={iQ+x(~(kjDXZV6bN1{GnBpP*71~aoNF#mB zD0tV#zc8x}B4YRxu%zt%Ge!5&M6EIU^(2ya>3!8g?@K+#XJmwB_9$e8L;IX6J0wDO zu5i<|h2uqaZ{->pu_Ur$4qNh1>amHW#L%G@EsorITcu|ekrdZa<;*zeHqe95YSL-w zt0s0-+B`0|XQfEWMPs8@CZ{MZqWMpiWa<%-2=8lPNfdi7`e|ubTccxPo~L^H__%;= zQx!ImvHERua*${5ZSsQ6G-sAdwh0%r|63B7yYw(Izvla-Pi_yIb1#0~pfOVut>}74 zPb`q4U=_}Hc%2M2vZn$+c#xs;3TKUZ3#JwToSJ93u=Ct%* z19MpuF&Gyo35PfQRCLdXfDsY0)ft?+?FCtgy78wH$^H1k7Q=M>Pl?y%UhOM0{O~xE zN88#j6-ZAC3wsAp#a7{zb_OKCmUPf*V1)ya1|fHba=$R)=FVuuee}U>FXNK?eBc!f zv{=LbEf;8D=^ANw*lltvmF6oBp}{8P&e%ztUV{w~H-6xv5nd)_|KpqkzA)R=R){hg z#MEAbK#z`a{JNZTdN8oehg#b@1dU^s3j|kbptCE(>s%soX}UUfNFY6&_P2Y`@|AW- zh=eLkq63~@CD1`gMW&+IF1@K=IXfqBuguHe>7D0LWg3aaVk|_G zEiD|UsvuR(6s&<2(Eb=!>A?|RHc#Y3JfP^t5--{mNM^;gnz6^>qQj`U0g7 zg`}AgOX0VSWW7tCofSgx7doc+PNJE`r!--mD>mr%OP9>`;$2v4k>yE3;>88i9Srk8 zqV}qB@%h(hXFZT4EXES)-aJ<>F&Bq`CFYCh$kfhUn8smt8s`FS#$vVZt)reEzfbNv zC4zv#GpD6^uidXiXD*m*jS06~?GG^RPqJ-E^VC)zglTG z-Xr9mIikJ;_Fe{MDP#ZVtdm6R;lZ%|62^YX@92H3U}L{a?HTkK%Ht2r8Tz%cxKxoN zb*Fx-ete?GgrxFlw}(M`^}%%zHX29ajNlu()VL}xgf^kP7s9h#ttUe)%iD}AwzK0A zQ?Deq(#)MBf=3p?tJ)H&!rd>2ghj|6z2$2pq&4H7sM*|L zTTWuM$tHe}|Neq8Q~)U={h2^+iTxNzTzJWIz0Q2D(4q{h;YiG20Z(laD+x=nzgvvN z^P+cgY7T6T%u%tktooBG@yp<20r-gZvj%^C_VdaQymy7S73G8T6!ORH*oeTO5#lTD z2-=z8sXL-`disizff>B4FW!9rFzq~M=nH*a5Ek7jxW(ct0@hsFb4DKPai#B6ee8_p znUWKj>8$`qbD(Z7bbLaGU#KzOcL*}$kKh(IH2knvXRyU|vaJ#H=q4Rqbe-)i-Ei#R zw4mfiG$t(sYU%1mhcTb@}(KGW*VDpA*_cw9d<-L*IsAivJ z^+{;aJ+&Rx`EwyWQ*W(T=9S0kAlUg1)3YcK?C<(H5uYrU+o z-fUInM(rLr7H3kO7B^aUPMVX4FP1OV{vd$jvn{4yAGthJo?TU*t(0x;`Q3|~^MLP% zGqLxGQj=*nZAa0xs9WeHhfF~R%fGN~`lKV*?{=h~*L1{c!-R%CF7~ep`3?*oFAs~@5^H)YWIM0lC^S1;=vc0{ba6-|0TZ+z&pAl#o_^ky z-ex&L%Q75BZRl`ayqtaavZp3u37%+k^8GPKMB%|;WI4K(+5Y+yGM^{S5#Z<^vgCRd2W5@kit_q`AzL(JZcT^8Co+l7BsYYzt3>zM3LpVsotF_Hv8*sM1Z18 z0HNdsN6o2YhVz=Ncjj^r%dSC!AmAy7jKJ{oKt_k>n`R-5Y!kx}7>}3NJ z8aY?Vl}H>p9B`M&zn?p4FCEI{T#|~Oq;4v6&&tP}ivOtUEIdjoF1+b=t_ctIrSJQc;;IWH>Qz@tQjVxqbgXm5GF2^SxAR8!T!p<<~V-Xg>#}x zfpSj5sH2ek$nEJaVde*+m(d%QJrrV2qn$p*WeX}9<98ci8RN@)OC@}h!-R6kjBakA z{tJhl%DH~SpV6M9bN8U|@e0Ho9IMWB7-nUzGMG%r)Nl-cSB9B)}P4>*1@E$%{t9O!|RC!@u&Qf*JS`*AGt zFrW^;1k^05teJ{_Zgl>lMo54EchEN3tW*^brYsBH02-|Bk3+cCl2JM3QKc-ecYdj; zfA{uI>b0t;IyXAW?7Mfv(mA+`JKr2v-cGgC4hlL!e5Q6Wh&{FkAfQp@Cq=G5#NtO5 zhAT1QTpQR7gn5mjb{a8{;WMiUpD1SQ5Rl=$WyVhgyE-Rg*>kZ|goe+!Lv?TK{-JzC zzhmG04*$l~pJ3%g4)w6`ro4l!r)_htK}<|GH~LEktm(7He;E#}BVJ`Vl$gMI8Re{S zC_TM+0%98iF{iz?zO1~^fkqWNi`QYRL?tgQ5DskJPWR3{5Avv0QXgz2?60H@|fU=-hyNY**#<#X_7r+Dmy9YYyh-fb1z&N;&3AHRKse>3^yd!@8Z9f?@0 zyoC>jmYnn83mUAuEko~6*U5)UnGv0d5;Z@GhB3*F;9~aIb>HIRU9-a^-8{KsEt{9_ zD0j}qD_XV31zET>Q~4~Y_{<2ZnjAEteNL9O7X|fgn%b1)DJf@OwvqKXvaTb|Z>1QI zS3GCyTOdky>Y|d0*z7&Zq~3H5dy-?>Gw$BV`A%e{VvE&S;*R@n?cM{Pow~Vr58KO- z{Lfg-w8waW;4Alg>y_?Jr?o+Rj;U}`{A;??I1DDI=z4FX0PfnSMynUK+ip;BG8>?n z%S(om9RLraJ0||D3;HS**JU!A1>ptE{+T$Ck+jyhcVDl74LB`PTLl)2vMH`9yh6Y)z@6w7Am*RVZ^Dm*rUD(u{eYQNgE7uIc=H zD>7Ul)KxA@mi=^!5Q!;rqcV=n#$<{mI{pKAs4cYDeCeM`6Mc9u(19Afp%mQ?E1MTJhZH+zZ#eo>Tt^&v7_MN5gaUCxCl~+A;wr(O#-h zY?#oNUCIS?&)+fIkJHIW*$R6?M11OwsoWivA)9NB#R49rX;o1c^rig)5G}JGcpl_# zu#Vm=W8V3e3ziRY{GFGTk}`v!yR`M)n`N$I`o1__&O9G+SB zY3mVJgTP`3|=*` zA+bp-uRQ$Tyg`!0k?D+(R*%3opv7sA@gFR7j%}I#j?>}e$B5&-CBTtPlztN3K3ons z@0Q7-x*EC(J+2G)`wY-`GWnz)jr{LsORV_YwMCudy7JS0j33%o0H>n1sPy>yZZBzX z(!BGeKRBv>!4Z*<2Nn79-SO^}`ARhU*E)87j7M}ibHba3ITUetCX{YRY{GL4qY0y# zA{0TAf_Wac_nqo(p5-q-KDnP>w5)sUWWohKtKf+lr-%NM$%PvYg7VCP0xJ;cWA3~h zmxBb+F!+Z=hKH6i3wSH?{(ke(4^v{e!Ny%ZGKE?7STcoRNTc~}LBE4+Z#rs8Y7NSq znmFxLwM|pMRPN2>{TE!p`Us4Axj(A0N_?GO_Od@whIQAKtG*D4o>G-A_UHes(e}zo zHs-A`i{bN9)UbZJw0N&DKJhev+TH~2)Pn$)yVAOUG9>1^OAUv_j*AML;oQ2k$Qeug zS`O!Ez)x+r6tcRy09o#u0dLQ9FZ0eht!LYF@BRDN^ii<^%qK9f1rv*kZiBa&$4%w+H^geTVoYy zI`SCucE%%(Gq9doN*<`>oLha%w-K>Whjgt|T_H)9T4mS_K=vR*|Tq941{k4}FagS1eZ7|v5 zQ+SU>&QHI9dKB`QjXobVGW(pcsdw_Q2AkLm9^WcQz+rWc4(KI$6!8~`_W{Xc8@}aJ~hcEPh)UDAMPprE%A6<-j*OQ#q1vs7T3ZG95 z&2ANZ(C=JO^FIQuv;AAPHogL!`xxKF1W&D0M^)}pLly|;xImjG(t&fem(^)rW1x_Z z{iETC?N?csTI2D%LHO1lw#|bUcm8P%$Y~0_FycIvDjoT&jZOxUqKjQmg}!2vYx4Yy|4p*d#QU>68M*HxO(~j&F8oq zLh&+x0>J-jpvsi4?6(^5nf~BN3=oK>g_8E_=6@~&?yLW2&ad-ZZO(kUN0^iru=Bhe zPuJs*l*jX}-oy|ST-h>+Iirq3?7zhca(zS>P(Cs~8{hy22qdQ9#pdcXo0O8#!=ZRP z`ufNxC}wB}!G&`bpx1YdfD%8CDSNU*gEwlvxYR%H9p11Xxc^7>$ao#GK@iCG2F}BS z1|V0kJPq2B9Ltyj*8)!Wh~2spi*pysaI61!eS|`pL9ZRIh%31?UOM;NAW+QT6WnOCj1ShhlS0D4%x?W1 zowC@nTF#4-dvUAG|7$rAH6OB^9Wz$|<6>$B@cQ?1B5~a|>vd6?IRP&-;{kjK?)pEM zNX{(Up|Ps`W$Yc*7=f$jaj21Z`Cm5cY4(_)oMXu^X!Uu7}NcrvxnvAvH<6w zZV2h|WDWl2QJ?}9LO{A_Lcwy7Z0XNqKk(FZTPtJUFvypD~1ofT{6``eHWQ^g>4 zYFB<>jQAlt%-=Lf%IaQ$2TF$vgSl3l_Y@9@L&B+10=8h^Fi}#eb zVwgqhhA#j%@tAMRE=`3M+`+eXoblb+qx9n0YD!Q;={(FKz(l9Q;=;QPpcO@(B}Efk zLSp_%L%x?x&&t$dd%q7?br)GyOPrVyBO~(A>g$gCUJMq+}Da+Xdmcq zQgF0ZRt_JC9S&g8I++o3!S&tBN9aXUW;L@007361xrXoR4Lb#C=F24RO#lhb~ zK21&yj4ejt&Cb|3vO{Qg$lC6vS_T$iL7VSUlbbxrfVyWHag0LS zV`lmfpG{D6!&$77>X)V<*|s z-jTt9k1wX<&*vDd+Q+=`BEsir{LlBCv#Tg@9j!BwKFKdd^~=~qsD$R1v|V7484OAt zG)2U&kI8%n21s~}unXJdFF!K1Zj@8Wd~e<6cuJ*7p2nK ztgCORy3iG@93+Bk`Sov(`MgJDmtASdwkQ1W^7Un{n2hO|#s*pFZ+e22?O~Q=^sY6i z`har<{h{OV4b9BbkRSHy>>;^M!&hK~U9Got6G-Q)+-#s=kvJ;Cg{Kt)^BJV(v z_8*7Wb=&loJtF4c={Gep-?89<bWp#AnF%w`1lByY8K!3dU3N`EqL(5%iL4o$+f{ zqKeWed%T6Wh70fHBYb95$1xp4Z_!nLWFX#7kWs)TuN&=EsKG}M7k_!g6LDX)qnTs4 zzD zK#t>~<6loLYp8Mx_#caOKZw{;d=armllWaZT4k&3Z?u-aOXaH6J8}XO6w-XvoRivE zJ1=-Y2=!fixI3I@&sC^&2HQp~FOCNihp>;E9^yW^=2|F@CNK_RlG5JL9eQL>$b z%#gje?2KcNlD$X9k(IqeNXRBDPWIk=J@@JR`#tlIr@wj?pLO5&dtUGB;%zH(HeKdw zvx-_>_KNs-564HiLJwcGhZF^x9XU# z;K+Hrr;Rq4NMVASY1DhMl|iau3{G=?Sp<-Vd&ke|QEv69snn&A=$!%LIJ)uX)br3t zRj0x^3oQQ!nQ!Whh)+X9#DaWzg3x7#vJaL|@VQY96T2=rwfWx*gEeS@l7kk(w~1x9{ttLW`W%dBKG06 zXnxaV$!`H$awV?G?cT*ZXt~nJ?!B>jF7C=t*X9iMe!h+~_%a|7&h6s8-n!WIIBRS^ zo>)YD<+8uD$l(8$?Sn7G7xnyK(9E{IUPwIEXMH`R0H5cX@Wb{Z5Zn_{!0h?r(BNpQ zX6ry=?>Ug7cRg`uJ!f(^rY$Be@7LZg!7*Zb6)FWCdRvWN{GrIp;S(=GU|6u^w%&W!r(HP3$b@n$oV@9*M{8mPeV?&wSQ13Yt{z42 zUSfk`*mI=(&r>@0)2U4mzo5whE(^9tDPm+-Psw;Ib;Rnw%>AqwHvPpj%5~#Wwbfp} z>}6V%1;5Y;gBKLB$eT}vyLaCo%M8Lf#o4V%ejwynRQ&#fIU326kdA27MDo^VjMsWl zqtT=SUCr=!aoz#W_^+GX`dDZIR0>!MA$VyfsXc5n`2f8)%9#Nb2X@2)<(rzYNJI9MI;%H z^5N!BhY4Bm`2-wv)9?iN2wqt-gTQ`6*}5mQ3WrutY}V0r22A^GLwhT)5Ab6Db$@^f zwZ4b05Tsc&Joo7TgDuAzror~@Q5&#>_A?%{Q73e{<1+PsCyDzY(07)Z8CKrE%VoPnJKrQ&-!bNYX51~ z?Zcl5^Z)k3Kc`c~38Dn2`IgBU(&OVzI$lt;GgtkQ<>TB?ib(?Tu0J}^6DiG$-_^6v zG%x469;O@BoW3!bZz-7E6wTDWmdQ42`$70Brv{5HCXE5OSYb!*OAX9 zc91$QQZLH2 zC9v*!*})#?ZQ={J9wkVUeL)QQrU_cW^Na9hJ3~5pzGFXbYwF?f-m{sr-%NMmswSsF zU=I&5WvA8}Ng%(E;T3L4pho?~Ut5fcZ`OjHjFwHL)~+r~W=TjldoK5yWjmV2J`6tc z!a){el5~-G^5*xAy==tzsrzgDDX!K;0>OVB!NEGw5Ndn9(Ru&8^AT--2U&>Tfcjgl zB$PcfWYf=?Vnw`^?m}@9pqK{QQS2P9b}@-8-EGJ96sXO&~6opA4--I>v&)rFNy$dFW#Ck9%!#9c?IRQ;5N zhihOdlGRw`y>^}w#DaBfOk*4e_-UKEoNvCTf8Nx6P-QttGW081k2V<)0M9DJ8ysvD z>)?Ayeh9)~lRH@P-V#ZPw2t)=_!JYs_Y;*BDkKwxjIHL)T3Hr?%&0+4ZgW#8#42k% zG_TYy9^!#3r1tcG?*Iz0)}Bs)iY0;I77wt#z=od0cwc8lz3WDc?tqCs*6_b|Ddrv; zZcCf|tUF(CVRRAH-WZ8149tcBh*h{f_rmN8Uyr}Ee}-%&7D3mRRfl=431mbyJ<&J} z`oIk-SF1-()WOKwFYIOnr{ZM1sGKd+b}$VG9j>T(#JMNR_3Y|O7G#sCeyT@Z7_JEu z((ydRW%c^QI*xU>3t{NR=8qc(@;D0&qT}-)S@7Di+Qu|r`JN7JnzX)>J#?>z5l(g7)hAND!*CpxH!^h{|r=2i&ai- zyzOTYioNBAxDJIw7t0y}54!@xGpC!a?Ao^*&}0Tbe%;2CBDM?-3{SB{;3=rM81yrdIIyDVqUm4)2yl_MY& z*7e4e%W7_LR@WzFDwe+^H;s|z!cX#lUo1Pzn*M~CE2{rkVB_z2A4Qj^;VW^_uxMbp zc2~^`pMy+)O-_mB?a6nJNXI)u9H67`7i7qm2})$l7%^-kcr^$bIhKnMb95(OA4~HX zli8Qf#m1bg>6hhL4j#S?Jex_{&lkL)mUA*Wk&A(m{RbhZrCJ3Fu;WNLMmU>QM*@}a zU5TyvN&A4-IC|%$orOn`A5X}zr*l|e2ZOLoj#L(kkRwMI$(iV_QYmuWXd443g0JXn9^ zbG+egM;~@PSjH&|ExJ#EU1ZcXJ9Rsh=f+mbf{Z%Jfl}sYzwCJ^Ig5L1?`;+(NFGn1 z#Wp63$(khk&U;RsYq}K!baw@^;;Sw9P*g10s!O3X-GhIm!R&_ABXD%zrwz+BmfRo0 zt6>xG=u|keYnxC%)PPB?<k@ZEvroOnw8<5tzSSi zSp}n`U5Ea=^c{2stm2;wz|-26mo%7r_zFUwAXNg&8!vw4LWD0Hr9Tsp|6IRTw+p5I zVqYu!j_p~RBI9bh%X^3r8FR62LHbHjs<`>_E)VaI`UhqQ4OUh?s>!x!Xf=_j%jd?v zhO)hwUukNkK9_xrk9S%+cPiRtk zSb2L~V0#BUnaO=kO*K)48Ru42xUXfmoWjmy^1q{YsdBI(0s_${J!DyycD$Zx8(eSC zeieDI^#T>}~d4G6CqzS(sdzbjHXiRWyj?X9@GaFFgT6OqP%P#eB)`7GE&45@Q^J%+K{z^s!WvoG#?Izm97EUg87292q`! zElt|G`e@ZH%DL}RoRaZmO048PG_AB|M;HgDCP`($9j~}`JuD@g&(U71E^MP zJODe~vi8IJZrkt?JP;GItLB;QaAlyAn~CbdnyY4SbCW1jrwKAe!mB?W*1N-rkCQ3q z8-_pA<&9lx;6xAgzGmkqFDY4a z96fA&ZM*fUs@)f#BLa&$hB`BMG86fvh#y5#OLY6E;panAeKLZl`fu(Mv5~2f-Dct4 zrmdG^pstWhu(+5yp4{DYd$(EI12Z$4JsA`! z!H}&Oc7Q(M_4q{{jTf^LICHC8GX-Tc+u0JFma=TmZM)}420A1uTqz~T4s9REiMe@@ z&)JrZhTlbx-AXju{tXLtVG#M)`&NK3d^Ipm)BW}joZ;4`e@P32WQ@Aa?8|l2kY4@! z+tcha=w&*77=Ej+?4u$tnbDm;Aik{qn3w+A`XbVXumt%$n7SyjgAq=^Eh2(Nc@Cop zm%EvlxGK+955XvXuv6;@3oF6K(++ek!&s*YAn^mI_vX7%O;{9Y#l5`L+$6JI!zl`O zjJsR*ot4al>WeKZ8JP6LrNiFq#?k-R4@h1N z$7Tr@xOCyz9*5Yo`nzdSrbxCAZQA#`Z@cP2DfhVes0}JV`iTvjOCxi;(W~^-$3&4sl#Xn zZAkW9R;7cSsy+O7CDZ~fVKV-k=|6H}04=7uxxfzKVI6aiT>6@vhq^#+cA!yQYV zGTqJrpN}Amyb6w$&o&I{j9Hk!9&rrPK!|{-K;R|n!hhh7CFOZL_Ba*VcbMCw_{v-5A>a*N_mji}8Wk$gvuXbQoL)bg zREEak&;sVNU3>UXW$B82dNzf@%x~G$D8%dFjc@r$uUCx;FehgA4ewIl9keB_+S|;u zPWkxmEA*rMfx_Ts&E%Ti1K36S&}xW;;L&-`;9XS4NoQn?QS=HieYTki(+nj26auw9 znw_LDvIZ%#4alu{T*k-eIlWu-T1B4X3JIk3IuK7>>YQ(mV{D)Lp6X{cwED&iuhMf> zPXh3(7Uv$NBy#%%jHI6KY_FWJW^wn#QkkkexF+sCJd*ia)KQ3FWSB8 z!ph#MM?^pEQ8AS1lHW~tQCV5K>6PT-YO*%IZtSsr!GLP2lkx}Q(A&vlzYk{p;V2(N zlhGvMb@Y1K_NVRi(WlpSJ09la2>Mi45i1hA3z~hgL)LMS1da)`j$o>3yB>U?jghHv z!X#4znU;B#|82=iFH2Gqtfm5VC$^W@o{qn~gn5!-Yy57xi9*PYZjTh#@%E#BOb!B4P2dcgbI^7i>wp z;>!TjZ)oMmLyT?bpOYx>K*p%9FZsx`;km_Q(jC$GqZMSLN{@w%4O=e$d`x(NWKKtB zlE;{{yaq65mmKNjT2$svfQ^P~Qb2SH+HU2W4EWLAX4LMCIeyDQTPWK#FijdPJT3%X zidsCx>|R5tOS`n^HGoXFjuNtk)P7JckIqcXY@+≤Q}|5|lX+OEx-N{3DGhFl9r} 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 ETH). Anstatt z. B. zu sagen, dass dein Gas 0,000000001 Ether kostet, kannst du sagen, dass dein Gas 1 Gwei kostet. Das Wort "gwei" selbst bedeutet "giga-wei" und entspricht 1.000.000.000 wei. Wei selbst (benannt nach [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), dem Erfinder von [B-Geld](https://www.investopedia.com/terms/b/bmoney.asp)) ist die kleinste Einheit von ETH. - -## Vor dem London-Upgrade {#pre-london} +Die Gasgebühr entspricht **dem Volumen des verbrauchten Gases für eine spezifische Transaktion multipliziert mit dem Preis je Gaseinheit**. Die Gebühr wird unabhängig davon gezahlt, ob eine Transaktion erfolgreich ist oder nicht. -Die Art und Weise, wie die Transaktionsgebühren im Ethereum-Netzwerk berechnet wurden, änderte sich mit dem [London-Upgrade](/history/#london) vom August 2021. Hier ist eine Zusammenfassung, wie die Dinge früher funktionierten: - -Nehmen wir an, Alice müsste Bob 1 ETH zahlen. Bei der Transaktion liegt das Gaslimit bei 21.000 Einheiten und der Gaspreis bei 200 gwei. - -Die Gesamtgebühr wäre gewesen: `Gaseinheiten (Limit) * Gaspreis pro Einheit`, d. h. `21.000 * 200 = 4.200.000 gwei` oder 0,0042 ETH. +![Ein Diagramm, das zeigt, wo Gas im EVM-Betrieb benötigt wird](./gas.png) _Diagramm angepasst von [Ethereum EVM illustriert](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ -Wenn Alice das Geld schickt, werden 1,0042 ETH von ihrem Konto abgezogen. Bob würden 1,0000 ETH gutgeschrieben werden. Der Miner würde 0,0042 ETH erhalten. +Gasgebühren sind in der originären Währung von Ethereum, Ether (ETH), zu entrichten. Die Gaspreise werden in der Regel in Gwei angegeben, einer Untereinheit von ETH. Jede Gwei entspricht einem Milliardstel einer ETH (0,000000001 ETH oder 10-9 ETH). -Dieses Video bietet einen kurzen Überblick über Gas und warum es existiert: +Anstatt z. B. zu sagen, dass dein Gas 0,000000001 Ether kostet, kannst du sagen, dass dein Gas 1 Gwei kostet. - +Das Wort "gwei" ist eine Kurzform von "giga-wei", was "Milliarde wei" bedeutet. Ein gwei entspricht einer Milliarde wei. Wei selbst (benannt nach [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), dem Erfinder von [B-Geld](https://www.investopedia.com/terms/b/bmoney.asp)) ist die kleinste Einheit von ETH. -## Nach dem London-Upgrade {#post-london} +## Wie werden die Gasgebühren berechnet? {#how-are-gas-fees-calculated} -[Das London-Upgrade](/history/#london) wurde am 5. August 2021 eingeführt, um Transaktionen auf Ethereum für die Nutzer berechenbarer zu machen, indem der Transaktionsgebühren-Mechanismus von Ethereum überarbeitet wurde. Zu den wichtigsten Vorteilen dieser Änderung gehören eine bessere Schätzung der Transaktionsgebühren, eine allgemein schnellere Aufnahme von Transaktionen und die Kompensation der ETH-Ausgabe durch das Verbrennen eines Prozentsatzes der Transaktionsgebühren. +Sie können die Menge an Gas, die Sie zu zahlen bereit sind, festlegen, wenn Sie eine Transaktion einreichen. Durch das Angebot einer festgelegten Gasmenge beteiligen Sie sich an einer Auktion zur Einbeziehung Ihrer Transaktion in den nächsten Block. Bei einem zu niedrigen Gasangebot verringert sich die Wahrscheinlichkeit, dass Validierer Ihre Transaktion für die Einbindung in den nächsten Block auswählen, was zu einer verzögerten oder sogar nicht erfolgenden Ausführung Ihrer Transaktion führen kann. Wenn Sie zu viel bieten, könnten Sie ETH verschwenden. Wie können Sie also feststellen, wie viel Sie zahlen müssen? -Seit dem Upgrade des Londoner Netzes gibt es für jeden Block eine Grundgebühr, den Mindestpreis pro Gaseinheit für die Aufnahme in diesen Block, der vom Netz auf der Grundlage der Nachfrage nach Blockraum berechnet wird. Da die Grundgebühr der Transaktionsgebühr verbrannt wird, wird von den Nutzern erwartet, dass sie bei ihren Transaktionen auch ein Trinkgeld (Prioritätsgebühr) festlegen. Das Trinkgeld entschädigt die Miner für die Ausführung und Weitergabe von Nutzertransaktionen in Blöcken und wird voraussichtlich von den meisten Wallets automatisch festgelegt. +Der Gesamtbetrag, den Sie zahlen, wird in zwei Komponenten aufgeteilt: die `Grundgebühr `und die `Prioritätsgebühr` (Trinkgeld). -Die Berechnung der gesamten Transaktionsgebühr funktioniert wie folgt: `Gaseinheiten (Limit) * (Grundgebühr + Trinkgeld)` +Die `Grundgebühr` wird durch das Protokoll festgelegt - Sie müssen mindestens diesen Betrag zahlen, damit Ihre Transaktion als gültig betrachtet wird. Die `Prioritätsgebühr` ist ein Trinkgeld, das Sie auf die Grundgebühr aufschlagen, um Ihre Transaktion für die Validierer attraktiv zu machen, so dass diese sie für die Aufnahme in den nächsten Block auswählen. -Sagen wir, Jordan muss Taylor 1 ETH zahlen. Bei der Transaktion liegt das Gaslimit bei 21.000 Einheiten und die Grundgebühr bei 100 gwei. Jordan enthält ein Trinkgeld von 10 gwei. +Eine Transaktion, für die nur die `Grundgebühr` gezahlt wird, ist zwar technisch gesehen gültig, wird aber wahrscheinlich nicht berücksichtigt, da sie den Validierern keinen Anreiz bietet, sie einer anderen Transaktion vorzuziehen. Die "richtige" `Prioritätsgebühr` wird durch die Netzwerkauslastung zu dem Zeitpunkt bestimmt, an dem Sie Ihre Transaktion senden. Wenn es viel Nachfrage gibt, müssen Sie Ihre `Prioritätsgebühr` möglicherweise höher ansetzen, aber wenn es weniger Nachfrage gibt, können Sie weniger bezahlen. -Mit der obigen Formel können wir dies als `21.000 * (100 + 10) = 2.310.000 gwei` oder 0,00231 ETH berechnen. +Nehmen wir zum Beispiel an, Jordan muss Taylor 1 ETH bezahlen. Ein ETH-Transfer erfordert 21.000 Gaseinheiten, und die Grundgebühr beträgt 10 gwei. Jordan enthält ein Trinkgeld von 2 gwei. -Wenn Jordan das Geld schickt, werden 1,00231 ETH von seinem Konto abgezogen. Taylor werden 1,0000 ETH gutgeschrieben. Der Miner erhält das Trinkgeld von 0,00021 ETH. Die Grundgebühr von 0,0021 ETH wird verbrannt. +Die Gesamtgebühr würde sich nun wie folgt zusammensetzen: -Zusätzlich kann Jordan auch eine maximale Gebühr (`maxFeePerGas`) für die Transaktion festlegen. Die Differenz zwischen der Höchstgebühr und der tatsächlichen Gebühr wird Jordan zurückerstattet, d. h. `Erstattung = Höchstgebühr - (Grundgebühr + Prioritätsgebühr)`. Jordan kann einen Höchstbetrag für die Ausführung der Transaktion festlegen und muss sich keine Sorgen machen, dass er "über" die Grundgebühr hinaus zahlt, wenn die Transaktion ausgeführt wird. +`Verbrauchte Gaseinheiten * (Grundgebühr + Prioritätsgebühr)` -### Blockgröße {#block-size} +wobei die `Grundgebühr` ein durch das Protokoll bestimmter Wert und die `Prioritätsgebühr` ein vom Benutzer gesetzter Wert als Anreiz für den Validierer ist. -Vor dem London-Upgrade hatte Ethereum Blöcke mit fester Größe. In Zeiten hoher Netznachfrage waren diese voll ausgelastet. Infolgedessen mussten die Nutzer/Nutzerinnen oft warten, bis die hohe Nachfrage nachließ, um in einen Block aufgenommen zu werden, was zu einem schlechten Nutzererlebnis führte. +z.B. `21,000 * (10 + 2) = 252,000 gwei` (0.000252 ETH). -Mit dem London-Upgrade wurden in Ethereum Blöcke mit variabler Größe eingeführt. Jeder Block hat eine Zielgröße von 15 Millionen Gas, aber die Größe der Blöcke wird entsprechend der Netznachfrage erhöht oder verringert, bis zur Blockgrenze von 30 Millionen Gas (2x die Zielblockgröße). Das Protokoll erreicht durch den Prozess des _Tâtonnement_ eine gleichgewichtige Blockgröße von durchschnittlich 15 Millionen. Das heißt, wenn die Blockgröße die Zielblockgröße übersteigt, erhöht das Protokoll die Grundgebühr für den folgenden Block. Ebenso senkt das Protokoll die Grundgebühr, wenn die Blockgröße kleiner als die Zielblockgröße ist. Der Betrag, um den die Grundgebühr angepasst wird, ist proportional dazu, wie weit die aktuelle Blockgröße vom Zielwert entfernt ist. [Mehr über Blöcke](/developers/docs/blocks/). +Wenn Jordan das Geld versendet, werden 1,000252 ETH von Jordans Konto abgezogen. Taylor werden 1,0000 ETH gutgeschrieben. Der Validator erhält das Trinkgeld von 0,000042 ETH. Die `Grundgebühr` von 0,00021 ETH wird verbrannt. ### Grundgebühr {#base-fee} -Jeder Block hat eine Grundgebühr, die als Reservepreis dient. Um in einen Block aufgenommen zu werden, muss der angebotene Preis pro Gas mindestens der Grundgebühr entsprechen. Die Grundgebühr wird unabhängig vom aktuellen Block berechnet und richtet sich stattdessen nach den vorherigen Blöcken. Das macht die Transaktionsgebühren für die Nutzer/Nutzerinnen berechenbarer. Wenn der Block abgebaut wird, wird diese Grundgebühr "verbrannt" und aus dem Verkehr gezogen. +Jeder Block hat seine eigene Basisgebühr, welche als reservierter Preis erscheint. Um in einen Block aufgenommen zu werden, muss der angebotene Preis pro Gas mindestens der Grundgebühr entsprechen. Die Grundgebühr wird unabhängig vom aktuellen Block berechnet und richtet sich stattdessen nach den vorherigen Blöcken. Das macht die Transaktionsgebühren für die Nutzer/Nutzerinnen berechenbarer. Bei der Erstellung des Blocks wird diese **Grundgebühr "verbrannt"** und damit aus dem Verkehr gezogen. 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. @@ -73,9 +65,9 @@ Die Grundgebühr wird anhand einer Formel berechnet, die die Größe des vorheri | 7 | 30 m | 12,5 % | 180,2 gwei | | 8 | 30 m | 12,5 % | 202,7 gwei | -Im Vergleich zum Markt vor der Londoner Gasauktion führt diese Änderung des Transaktionsgebühren-Mechanismus dazu, dass die Gebührenvorhersage zuverlässiger ist. Der obigen Tabelle folgend, um eine Transaktion auf Block Nummer 9 zu erstellen, wird eine Wallet den Nutzer mit Sicherheit wissen lassen, dass die **maximale Grundgebühr**, die zum nächsten Block hinzugefügt werden soll, `aktuelle Grundgebühr * 112,5%` oder `202,8 gwei * 112,5% = 228,1 gwei` ist. +Der obigen Tabelle folgend: Um eine Transaktion auf Block Nummer 9 zu erstellen, wird eine Wallet den Nutzer mit Sicherheit wissen lassen, dass die **maximale Grundgebühr**, die dem nächsten Block hinzugefügt wird, `aktuelle Grundgebühr * 112,5%` oder `202,7 gwei * 112,5% = 228,1 gwei` ist. -Außerdem ist es unwahrscheinlich, dass wir längere Spitzen von vollen Blöcken sehen werden, weil die Grundgebühr bei einem vollen Block so schnell steigt. +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 | | ----------- | --------------: | ---------------: | -------------------: | @@ -87,83 +79,77 @@ Außerdem ist es unwahrscheinlich, dass wir längere Spitzen von vollen Blöcken ### Prioritätsgebühr (Trinkgeld) {#priority-fee} -Vor dem London-Upgrade erhielten die Miner die gesamte Gasgebühr für jede in einem Block enthaltene Transaktion. - -Da die neue Grundgebühr verbrannt wurde, führte das London-Upgrade eine Prioritätsgebühr (Trinkgeld) ein, um Minern einen Anreiz zu geben, eine Transaktion in den Block aufzunehmen. Ohne Trinkgelder würde es sich für Miner lohnen, leere Blöcke abzubauen, da sie die gleiche Blockbelohnung erhalten würden. Unter normalen Bedingungen bietet ein kleines Trinkgeld den Minern einen minimalen Anreiz, eine Transaktion durchzuführen. Für Transaktionen, die vor anderen Transaktionen im selben Block bevorzugt ausgeführt werden müssen, ist ein höheres Trinkgeld notwendig, um konkurrierende Transaktionen zu überbieten. +Die Prioritätsgebühr (Trinkgeld) bietet den Validierern einen Anreiz, eine Transaktion in den Block aufzunehmen. Ohne Trinkgeld wäre es für Validierer wirtschaftlich rentabel, leere Blöcke zu schürfen, da sie die gleiche Blockbelohnung erhalten würden. Kleine Trinkgelder geben den Validierern einen minimalen Anreiz, eine Transaktion aufzunehmen. Damit Transaktionen vor anderen Transaktionen im selben Block bevorzugt ausgeführt werden, kann ein höheres Trinkgeld hinzugefügt werden, um zu versuchen, konkurrierende Transaktionen zu überbieten. ### Maximale Gebühr {#maxfee} -Um eine Transaktion im Netzwerk auszuführen, können Nutzer/Nutzerinnen ein maximales Limit angeben, das sie bereit sind, für die Ausführung ihrer Transaktion zu zahlen. Dieser optionale Parameter ist als `maxFeePerGas` bekannt. Damit eine Transaktion ausgeführt werden kann, muss die maximale Gebühr die Summe aus der Grundgebühr und dem Trinkgeld übersteigen. Der Absender der Transaktion erhält die Differenz zwischen der maximalen Gebühr und der Summe aus Grundgebühr und Trinkgeld zurück. - -### Berechnung der Gebühren {#calculating-fees} - -Einer der Hauptvorteile des London-Upgrades ist die Verbesserung der Benutzererfahrung bei der Festlegung der Transaktionsgebühren. Bei Wallets, die das Upgrade unterstützen, geben die Wallet-Anbieter nicht mehr explizit an, wie viel du bereit bist, für deine Transaktion zu zahlen, sondern legen automatisch eine empfohlene Transaktionsgebühr fest (Grundgebühr + empfohlene Prioritätsgebühr), um die Komplexität für ihre Nutzer zu reduzieren. - -## EIP-1559 {#eip-1559} - -Die Implementierung der [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) im London-Upgrade hat den Mechanismus der Transaktionsgebühren komplexer gemacht als die vorherige Gaspreisauktion. Dies hat aber den Vorteil, dass die Gasgebühren berechenbarer sind, was zu einem effizienteren Markt für Transaktionsgebühren führt. Nutzer können Transaktionen mit einem `maxFeePerGas` einreichen, der angibt, wie viel sie bereit sind, für die Ausführung der Transaktion zu zahlen. Dabei können sie sicher sein, dass sie nicht mehr als den Marktpreis für Gas (`baseFeePerGas`) zahlen und alles, was darüber hinausgeht, abzüglich ihres Trinkgelds zurückerstattet bekommen. +Um eine Transaktion im Netzwerk auszuführen, können Nutzer/Nutzerinnen ein maximales Limit angeben, das sie bereit sind, für die Ausführung ihrer Transaktion zu bezahlen. Dieser optionale Parameter ist als `maxFeePerGas` bekannt. Damit eine Transaktion ausgeführt werden kann, muss die maximale Gebühr die Summe aus der Grundgebühr und dem Trinkgeld übersteigen. Der Absender der Transaktion erhält die Differenz zwischen der maximalen Gebühr und der Summe aus Grundgebühr und Trinkgeld zurück. -Dieses Video erklärt EIP-1559 und die Vorteile, die es bringt: +### Blockgröße {#block-size} - +Jeder Block hat eine Zielgröße von 15 Millionen Gas, aber die Größe der Blöcke wird entsprechend der Netznachfrage erhöht oder verringert, bis zur Blockgrenze von 30 Millionen Gas (die zweifache Zielblockgröße). Das Protokoll erreicht durch den Prozess des _Tâtonnement_ eine gleichgewichtige Blockgröße von durchschnittlich 15 Millionen. Das heißt, wenn die Blockgröße die Zielblockgröße übersteigt, erhöht das Protokoll die Grundgebühr für den folgenden Block. Ebenso senkt das Protokoll die Grundgebühr, wenn die Blockgröße kleiner als die Zielblockgröße ist. Der Betrag, um den die Grundgebühr angepasst wird, ist proportional dazu, wie weit die aktuelle Blockgröße vom Zielwert entfernt ist. [Mehr über Blöcke](/developers/docs/blocks/). -Wenn du interessiert bist, kannst du hier die genauen [EIP-1559 Spezifikationen](https://eips.ethereum.org/EIPS/eip-1559) nachlesen. +### Berechnung der Gasgebühren in der Praxis {#calculating-fees-in-practice} -Gehe mit diesem Link weiter in den Kaninchenbau hinein: [EIP-1559 Resources](https://hackmd.io/@timbeiko/1559-resources). +Sie können ausdrücklich angeben, wie viel Sie bereit sind zu zahlen, damit Ihre Transaktion ausgeführt wird. Die meisten Anbieter von Wallets legen jedoch automatisch eine empfohlene Transaktionsgebühr fest (Grundgebühr + empfohlene Prioritätsgebühr), um die Komplexität für die Nutzer zu verringern. ## Warum gibt es Gasgebühren? {#why-do-gas-fees-exist} -Kurzum: Gasgebühren helfen dabei, das Ethereum-Netz sicher zu halten. Indem wir für jede Berechnung, die im Netzwerk ausgeführt wird, eine Gebühr verlangen, verhindern wir, dass schlechte Akteure das Netzwerk spammen. Um versehentliche oder feindliche Endlosschleifen oder andere Rechenverschwendung in Code zu vermeiden, muss jede Transaktion eine Grenze für die Anzahl der Rechenschritte festlegen, die sie zur Codeausführung verwenden kann. Die Grundeinheit der Berechnung ist "Gas". +Kurzum, Gasgebühren helfen dabei, das Ethereum-Netz sicher zu halten. Indem wir für jede Berechnung, die im Netzwerk ausgeführt wird, eine Gebühr verlangen, verhindern wir, dass Akteure mit böswilligen Absichten das Netzwerk spammen. Um versehentliche oder feindliche Endlosschleifen oder andere Verschwendung von Rechenlast in Code zu vermeiden, muss jede Transaktion eine Grenze für die Anzahl der Rechenschritte festlegen, die sie zur Codeausführung verwenden kann. Die Grundeinheit der Berechnung ist "Gas". Auch wenn eine Transaktion ein Limit beinhaltet, wird jedes nicht verbrauchte Gas an den Nutzer zurückgegeben (d. h. `max fee - (base fee + tip)` wird zurückgegeben). -![Ein Diagramm, das zeigt, wie ungenutztes Gas zurückerstattet wird](../transactions/gas-tx.png) _Diagramm angepasst von [Ethereum EVM illustriert](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +![Diagramm zeigt, wie ungenutztes Gas zurückerstattet wird](../transactions/gas-tx.png) _Diagramm angepasst von [Ethereum EVM illustriert](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ ## Was ist das Gaslimit? {#what-is-gas-limit} -Das Gaslimit bezieht sich auf die maximale Menge an Gas, die du bei einer Transaktion verbrauchen möchtest. Kompliziertere Transaktionen mit [smarten Verträgen](/developers/docs/smart-contracts/) erfordern mehr Rechenarbeit und damit ein höheres Gaslimit als eine einfache Zahlung. Ein Standard-ETH-Transfer erfordert ein Gaslimit von 21.000 Gaseinheiten. +Das Gaslimit bezieht sich auf die maximale Menge an Gas, die Sie bereit sind, bei einer Transaktion zu verbrauchen. Kompliziertere Transaktionen mit [Smart Contracts](/developers/docs/smart-contracts/) erfordern mehr Rechenarbeit und damit ein höheres Gaslimit als eine einfache Zahlung. Ein Standard-ETH-Transfer erfordert ein Gaslimit von 21.000 Gaseinheiten. -Wenn du zum Beispiel ein Gaslimit von 50.000 für einen einfachen ETH-Transfer festlegen würdest, würde die EVM 21.000 verbrauchen und du würdest die restlichen 29.000 zurückbekommen. Wenn du jedoch zu wenig Gas angibst, z. B. ein Gaslimit von 20.000 für einen einfachen ETH-Transfer, wird die EVM deine 20.000 Gaseinheiten verbrauchen und versuchen, die Transaktion durchzuführen, aber sie wird nicht abgeschlossen. Die EVM macht dann alle Änderungen rückgängig, aber da der Miner bereits Arbeit im Wert von 20.000 Gaseinheiten geleistet hat, ist dieses Gas verbraucht. +Wenn Sie zum Beispiel ein Gaslimit von 50.000 für einen einfachen ETH-Transfer festlegen würden, würde die EVM 21.000 verbrauchen und Sie würden die restlichen 29.000 zurückbekommen. Wenn Sie jedoch zu wenig Gas angeben, z. B. ein Gaslimit von 20.000 für einen einfachen ETH-Transfer, wird die EVM Ihre 20.000 Gaseinheiten verbrauchen und versuchen, die Transaktion durchzuführen, aber sie wird nicht abgeschlossen. Die EVM macht dann alle Änderungen rückgängig, da der Validierer jedoch bereits Arbeit im Wert von 20.000 Gaseinheiten geleistet hat, ist dieses Gas verbraucht. ## Warum können die Gasgebühren so hoch sein? {#why-can-gas-fees-get-so-high} -Die hohen Gasgebühren sind auf die Beliebtheit von Ethereum zurückzuführen. Für jede Operation auf Ethereum muss Gas verbraucht werden, und der Gasplatz ist pro Block begrenzt. Zu den Gebühren gehören Berechnungen, das Speichern oder Verarbeiten von Daten oder die Übertragung von Token, die unterschiedliche Mengen von "Gas"-Einheiten verbrauchen. Je komplexer die Funktionalität einer App wird, desto mehr Operationen führt ein Smart Contract aus, was bedeutet, dass jede Transaktion mehr Platz in einem Block begrenzter Größe einnimmt. Wenn die Nachfrage zu groß ist, müssen die Nutzer/Nutzerinnen einen höheren Trinkgeldbetrag anbieten, um zu versuchen, die Transaktionen anderer Nutzer/Nutzerinnen zu überbieten. Ein höheres Trinkgeld kann die Wahrscheinlichkeit erhöhen, dass deine Transaktion in den nächsten Block gelangt. - -Wie viel wir für eine bestimmte Transaktion bezahlen müssen, wird nicht allein durch den Gaspreis bestimmt. Um die Transaktionsgebühr zu berechnen, müssen wir das verbrauchte Gas mit der Transaktionsgebühr multiplizieren, die in gwei gemessen wird. +Die hohen Gasgebühren sind auf die Beliebtheit von Ethereum zurückzuführen. Wenn die Nachfrage zu groß ist, müssen die Nutzer höhere Trinkgeldbeträge anbieten, um darüber zu versuchen, die Transaktionen anderer Nutzer zu überbieten. Ein höheres Trinkgeld kann die Wahrscheinlichkeit erhöhen, dass Ihre Transaktion in den nächsten Block gelangt. Außerdem führen komplexere Smart-Contract-Anwendungen möglicherweise eine hohle Anzahl an Operationen durch, um ihre Funktionen zu unterstützen, so dass sie viel Gas verbrauchen. ## Initiativen zur Senkung der Gaskosten {#initiatives-to-reduce-gas-costs} -Die Ethereum-[Skalierbarkeits-Upgrades](/roadmap/) sollten letztendlich einige der Probleme mit den Gasgebühren lösen, was wiederum die Plattform in die Lage versetzen wird, Tausende von Transaktionen pro Sekunde zu verarbeiten und global zu skalieren. +Die [Skalierbarkeits-Upgrades](/roadmap/) für Ethereum waren letztendlich dazu gedacht, einige der Probleme mit den Gasgebühren lösen. Das wiederum soll die Plattform in die Lage versetzen, Tausende von Transaktionen pro Sekunde zu verarbeiten und global zu skalieren. Die Skalierung auf Layer 2 ist eine der wichtigsten Initiativen, um die Gaskosten, das Nutzererlebnis und die Skalierbarkeit deutlich zu verbessern. [Mehr zur Skalierung mit Layer 2](/developers/docs/scaling/#layer-2-scaling) -Das neue Proof-of-Stake-Modell, das auf der Beacon Chain eingeführt wurde, soll den hohen Stromverbrauch und die Abhängigkeit von spezieller Hardware reduzieren. Diese Kette wird es dem dezentralen Ethereum-Netzwerk ermöglichen, sich zu verständigen und das Netzwerk sicher zu halten, während der Energieverbrauch begrenzt wird, indem stattdessen ein finanzielles Commitment verlangt wird. +## Was war das London-Upgrade/EIP-1559? {#what-was-the-london-upgrade-eip-1559} -Jeder, der mindestens 32 ETH besitzt, kann diese einsetzen, um ein Validator zu werden, welcher für die Verarbeitung von Transaktionen, die Validierung von Blöcken und das Vorschlagen neuer Blöcke für die Kette verantwortlich ist. Nutzer mit weniger als 32 ETH können an Staking-Pools teilnehmen. +Vor dem London-Upgrade hatte Ethereum Blöcke mit fester Größe. In Zeiten hoher Netzwerknachfrage arbeiteten diese Blöcke mit voller Kapazität. Infolgedessen mussten die Nutzer oft warten, bis die Nachfrage zurückging, um in einen Block aufgenommen zu werden. Das führte zu einer schlechten Nutzererfahrung. Mit dem London-Upgrade wurden Blöcke variabler Größe in Ethereum eingeführt. -## Strategien zur Senkung der Gaskosten {#strategies-for-you-to-reduce-gas-costs} +Die Berechnungsart für Transaktionsgebühren im Ethereum-Netzwerk änderte sich mit dem [London-Upgrade](/history/#london) vom August 2021. Vor dem London-Upgrade wurden die Gebühren ohne Trennung von `Basis-` und `Prioritätsgebühren` wie folgt berechnet: -Wenn du die Gaskosten für deine ETH senken willst, kannst du ein Trinkgeld setzen, um die Prioritätsstufe deiner Transaktion anzugeben. Die Miner werden Transaktionen mit einem höheren Trinkgeld pro Gas "bearbeiten" und ausführen, da sie die von dir gezahlten Trinkgelder behalten können und weniger geneigt sind, Transaktionen mit niedrigeren Trinkgeldern auszuführen. +Angenommen, Alice müsste Bob 1 ETH zahlen. Bei der Transaktion liegt das Gaslimit bei 21.000 Einheiten und der Gaspreis bei 200 gwei. -Wenn du die Gaspreise überwachen willst, damit du deine ETH günstiger verschicken kannst, kannst du viele verschiedene Tools nutzen, wie z. B.: +Die Gesamtgebühr würde sich wie folgt berechnen: `Gas units (limit) * Gas price per unit` d. h. `21,000 * 200 = 4,200,000 gwei` oder 0,0042 ETH -- [Etherscan](https://etherscan.io/gastracker) _Transaktionsgaspreis-Schätzer_ -- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _Gasschätzungs-Chrome-Erweiterung, die sowohl Typ 0 Legacy-Transaktionen als auch Typ 2 EIP-1559-Transaktionen unterstützt_ +Durch die Implementierung von [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) im Rahmen des London-Upgrades wurde der Mechanismus der Transaktionsgebühren komplexer, aber die Gasgebühren wurden einfacher vorauszusagen und das führte zu einem effizienteren Markt für Transaktionsgebühren. Die Nutzer können Transaktionen mit einer `maxFeePerGas` einreichen, die dem Betrag entspricht, den sie bereit sind, für die Ausführung der Transaktion zu zahlen. Dabei wissen sie, dass sie nicht mehr als den Marktpreis für Gas (`baseFeePerGas`) zahlen werden und alles, was darüber hinausgeht, abzüglich ihres Trinkgelds, zurückerstattet bekommen. -- [ETH-Tankstelle](https://ethgasstation.info/) _Verbraucherorientierte Metriken für den Ethereum-Gasmarkt _ -- [Cryptoneur-Gasgebührenrechner](https://www.cryptoneur.xyz/gas-fees-calculator) _Berechnen Sie Gasgebühren in Ihrer lokalen Währung für verschiedene Transaktionsarten im Mainnet, Arbitrum und Polygon._ +In diesem Video werden EIP-1559 und die Vorteile, die es bringt, erläutert: -## Verwandte Tools {#related-tools} + -- [Bloxy Gas Analytics](https://stat.bloxy.info/superset/dashboard/gas/?standalone=true) _Netzwerk-Gas-Statistik_ -- [Blocknative's Gas Platform](https://www.blocknative.com/gas) _Gas Schätzung API powered by Blocknative's global mempool data platform_ +## Gasgebühren überwachen {#moitoring-gas-fees} -## Weiterführende Informationen {#further-reading} +Wenn Sie die Gaspreise überwachen möchten, damit Sie Ihre ETH günstiger verschicken können, stehen Ihnen unterschiedliche Tools zur Verfügung, wie zum Beispiel: -- [Ethereum Gas erklärt](https://defiprime.com/gas) -- [Reduziere den Gasverbrauch deiner Smart Contracts](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a) -- [Proof-of-Stake vs. Proof-of-Work](https://blockgeeks.com/guides/proof-of-work-vs-proof-of-stake/) +- [Etherscan](https://etherscan.io/gastracker) _Transaktionsgaspreis-Schätzer_ +- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _Chrome-Erweiterung zur Gasschätzung, die sowohl Typ 0 Legacy-Transaktionen als auch Typ 2 EIP-1559-Transaktionen unterstützt_ +- [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator) _Berechnen Sie Gasgebühren in Ihrer lokalen Währung für verschiedene Transaktionsarten im Mainnet, Arbitrum und Polygon._ + +## Verwandte Werkzeuge {#related-tools} -## Verwandte Themen {#related-topics} +- [Blocknative's Gas Platform](https://www.blocknative.com/gas) _API zur Gasschätzung von Blocknative's Global Mempool Data Platform_ -- [Mining](/developers/docs/consensus-mechanisms/pow/mining/) +## Weiterführende Informationen {#further-reading} + +- [Ethereum Gas erklärt](https://defiprime.com/gas) +- [Den Gasverbrauch von Smart Contracts reduzieren](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a) +- [Proof-of-Stake und Proof-of-Work im Vergleich](https://blockgeeks.com/guides/proof-of-work-vs-proof-of-stake/) +- [Strategien für Programmierer zur Optimierung des Gasverbrauchs](https://www.alchemy.com/overviews/solidity-gas-optimization) +- [Spezifikationen zu EIP-1559](https://eips.ethereum.org/EIPS/eip-1559). +- [Ressourcen von Time Beiko zu EIP-1559](https://hackmd.io/@timbeiko/1559-resources). diff --git a/src/content/translations/de/developers/docs/ides/index.md b/src/content/translations/de/developers/docs/ides/index.md index 72abb95bf7e..43cb274337e 100644 --- a/src/content/translations/de/developers/docs/ides/index.md +++ b/src/content/translations/de/developers/docs/ides/index.md @@ -1,37 +1,40 @@ --- -title: Integrierte Entwicklungsumgebungen (IDEs) +title: Integrierte Entwicklungsumgebungen (Integrated Development Environments, IDEs) description: lang: de --- -Wenn es um die Einrichtung einer [integrierten Entwicklungsumgebung (IDE)](https://wikipedia.org/wiki/Integrated_development_environment) geht, lässt sich die Programmierung von Anwendungen auf Ethereum mit der Programmierung jedes anderen Softwareprojekts vergleichen. Die Auswahl ist groß, daher ist es empfehlenswert, die Auswahl der IDE oder des Code-Editor an Ihren Vorstellungen zu orientieren. Vermutlich ist für Ihre Ethereum-Entwicklung die IDE am besten geeignet, die Sie bereits für Ihre herkömmliche Softwareentwicklung nutzen. +Wenn es um die Einrichtung einer [integrierten Entwicklungsumgebung (IDE)](https://wikipedia.org/wiki/Integrated_development_environment) geht, lässt sich die Programmierung von Anwendungen auf Ethereum mit der Programmierung jedes anderen Softwareprojekts vergleichen. Die Auswahl ist groß, daher ist es empfehlenswert, die Auswahl der IDE oder des Code-Editors an Ihren Vorstellungen zu orientieren. Vermutlich ist für Ihre Ethereum-Entwicklung die IDE am besten geeignet, die Sie bereits für Ihre herkömmliche Softwareentwicklung nutzen. ## Webbasierte IDEs {#web-based-ides} -Wenn Sie sich erst einmal mit dem Code vertraucht machen möchten, bevor Sie [eine lokale Entwicklungsumgebung aufsetzen](/developers/local-environment/), bieten sich diese Web-Apps an, die für die Entwicklung von Ethereum-Smart-Contracts konzipiert sind. +Wenn Sie sich erst einmal mit dem Code vertraut machen möchten, bevor Sie [eine lokale Entwicklungsumgebung aufsetzen](/developers/local-environment/), bieten sich diese Web-Apps an, die für die Entwicklung von Ethereum Smart Contracts konzipiert sind. -**Remix –** **_Eine webbasierte IDE mit integrierter Code-Analyse und einer Test-Blockchain-VM_** +**[Remix](https://remix.ethereum.org/)** - **_Webbasierte IDE mit integrierter statischer Analyse und einer virtuellen Test-Blockchain-Maschine_** -- [remix.ethereum.org](https://remix.ethereum.org/) +- [Dokumentation](https://remix-ide.readthedocs.io/en/latest/#) +- [Gitter](https://gitter.im/ethereum/remix) -**EthFiddle –** **_Eine webbasierte IDE, mit der Sie einen Smart Contract schreiben, kompilieren und debuggen können_** +**[ChainIDE](https://chainide.com/)** - **_Eine cloudbasierte Multi-Chain-IDE_** -- [ethfiddle.com](https://ethfiddle.com/) -- [Gitter](https://gitter.im/loomnetwork/ethfiddle) +- [Dokumentation](https://chainide.gitbook.io/chainide-english-1/) +- [Hilfeforum](https://forum.chainide.com/) + +**[Replit (Solidity Starter - Beta)](https://replit.com/@replit/Solidity-starter-beta)** - **_Eine anpassbare Entwicklungsumgebung für Ethereum mit Hot Reloading, Fehlerprüfung und erstklassiger Testnetz-Unterstützung_** -**ChainIDE –** **_Eine cloudbasierte Multi-Chain-IDE_** +- [Dokumentation](https://docs.replit.com/) -- [chainide.com](https://chainide.com/) +**[Tenderly Sandbox](https://sandbox.tenderly.co/)** - **_Eine schnelle Prototyping-Umgebung, in der Sie Smart Contracts im Browser mit Solidity und JavaScript schreiben, ausführen und debuggen können_** -**Replit –** **_Eine anpassbare Entwicklungsumgebung für Ethereum mit Hot-Reloading, Fehlerprüfung und erstklassiger Testnet-Unterstützung_** +**[EthFiddle](https://ethfiddle.com/)** - **_Webbasierte IDE, mit der Sie Ihren Smart Contract schreiben, kompilieren und debuggen können_** -- [Solidity-Starter](https://replit.com/@replit/Solidity-starter-beta) +- [Gitter](https://gitter.im/loomnetwork/ethfiddle) ## Desktop-IDEs {#desktop-ides} -Die meisten etablierten IDEs haben Plugins entwickelt, um die Ethereum-Entwicklungserfahrung zu verbessern. Alle bieten mindestens Syntaxhervorhebung für [Smart-Contract-Sprachen](/developers/docs/smart-contracts/languages/). +Die meisten etablierten IDEs haben Plugins entwickelt, um die Ethereum-Entwicklungserfahrung zu verbessern. Alle bieten mindestens Syntaxhervorhebung für [Smart Contract-Sprachen](/developers/docs/smart-contracts/languages/). -**Visual Studio Code –** **_Eine professionelle plattformübergreifende IDE mit offizieller Ethereum-Unterstützung_** +**Visual Studio Code -** **_Eine professionelle plattformübergreifende IDE mit offizieller Ethereum-Unterstützung_** - [Visual Studio Code](https://code.visualstudio.com/) - [Azure Blockchain Workbench](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/microsoft-azure-blockchain.azure-blockchain-workbench?tab=Overview) @@ -42,9 +45,9 @@ Die meisten etablierten IDEs haben Plugins entwickelt, um die Ethereum-Entwicklu - [Atom](https://atom.io/) - [GitHub](https://github.com/atom) -- [Ethereum-Packages](https://atom.io/packages/search?utf8=%E2%9C%93&q=keyword%3Aethereum&commit=Search) +- [Ethereum-Pakete](https://atom.io/packages/search?utf8=%E2%9C%93&q=keyword%3Aethereum&commit=Search) -**JetBrains IDEs (IntelliJ IDEA, usw.) – ** **_Wichtige Werkzeuge für Softwareentwickler und -teams_** +**JetBrains IDEs (IntelliJ IDEA, usw.) ** **_Unverzichtbare Werkzeuge für Softwareentwickler und -teams_** - [JetBrains](https://www.jetbrains.com/) - [GitHub](https://github.com/JetBrains) @@ -58,8 +61,11 @@ Die meisten etablierten IDEs haben Plugins entwickelt, um die Ethereum-Entwicklu ## Plug-ins und Erweiterungen {#plugins-extensions} - [Solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) – Ethereum-Solidity-Sprache für Visual Studio Code +- [Solidity + Hardhat für VS Code](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity) - Solidity- und Hardhat-Unterstützung durch das Hardhat-Team - [Prettier Solidity](https://github.com/prettier-solidity/prettier-plugin-solidity) – Code-Formatierer mit Prettier ## Weiterführende Informationen {#further-reading} -_Kennen Sie eine Community-Ressource die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ +- [Ethereum IDEs](https://www.alchemy.com/list-of/web3-ides-on-ethereum) _- Liste von Alchemy über Ethereum-IDEs_ + +_Kennst du eine Community-Ressource, die dir geholfen hat? Bearbeite diese Seite und füge sie hinzu!_ diff --git a/src/content/translations/de/developers/docs/index.md b/src/content/translations/de/developers/docs/index.md index 3d74c4418fb..dfb508cc36b 100644 --- a/src/content/translations/de/developers/docs/index.md +++ b/src/content/translations/de/developers/docs/index.md @@ -1,16 +1,16 @@ --- -title: Ethereum-Entwicklungs-Dokumentation -description: Einführung in die ethereum.org-Entwicklerdokumentation. +title: Dokumentation zur Ethereum-Entwicklung +description: Einführung in die Entwicklerdokumentation zu ethereum.org. lang: de --- -Diese Dokumentation soll dir helfen, mit Ethereum zu entwickeln. Es umfasst Ethereum als Konzept, erklärt den Ethereum-Technologie-Stack, dokumentiert fortgeschrittene Themen für komplexere Anwendungen und Anwendungsfälle. +Diese Dokumentation soll Ihnen dabei helfen, mit Ethereum zu entwickeln. Darin wird das Konzept von Ethereum erläutert sowie der Technologie-Stack von Ethereum. Außerdem sind fortgeschrittene Themen für komplexere Anwendungen und Anwendungsfälle dokumentiert. -Dies ist eine Open-Source-Community-Anstrengung, also zögere nicht, neue Themen vorzuschlagen oder neue Inhalte hinzuzufügen, und gib Beispiele an, wo immer du denkst, dass dies hilfreich sein könnte. Alle Entwicklerdokumentationen können auf GitHub editiert werden. Falls du dir nicht sicher bist wie, [folge einfach dieser Anleitung](https://github.com/ethereum/ethereum-org-website/blob/dev/docs/editing-markdown.md). +Diese Dokumentation wird von der Open-Source-Community gepflegt, also zögern Sie nicht, neue Themen vorzuschlagen oder neue Inhalte hinzuzufügen. Geben Sie dabei Beispiele an, wenn das Ihrer Meinung nach hilfreich ist. Die gesamte Entwicklungsdokumentation kann auf GitHub bearbeitet werden. Falls Sie sich nicht sicher sind wie, [befolgen Sie einfach diese Anleitung](https://github.com/ethereum/ethereum-org-website/blob/dev/docs/editing-markdown.md). ## Entwicklungsmodule {#development-modules} -Wenn dies dein erster Versuch bei der Entwicklung mit Ethereum ist, empfehlen wir dir, ganz vorne zu beginnen und dich wie bei einem Buch durchzuarbeiten. +Wenn das Ihr erster Versuch bei der Entwicklung mit Ethereum ist, empfehlen wir Ihnen, ganz vorne zu beginnen und sich wie bei einem Buch durchzuarbeiten. ### Grundsätzliche Themen {#foundational-topics} diff --git a/src/content/translations/de/developers/docs/intro-to-ether/index.md b/src/content/translations/de/developers/docs/intro-to-ether/index.md index 2d9d981e762..9ce2df75ec2 100644 --- a/src/content/translations/de/developers/docs/intro-to-ether/index.md +++ b/src/content/translations/de/developers/docs/intro-to-ether/index.md @@ -18,7 +18,7 @@ Die erste Kryptowährung war Bitcoin, die vom Pseudonym Satoshi Nakamoto erschaf ## Was ist Ether? {#what-is-ether} -**Ether (ETH)** ist die Kryptowährung, die für viele Dinge im Ethereum-Netzwerk verwendet wird. Grundsätzlich ist es die einzig akzeptable Form der Bezahlung von Transaktionsgebühren, und nach [The Merge](/roadmap/merge) wird Ether erforderlich sein, um Blöcke im Mainnet zu validieren und vorzuschlagen. Ether werden u. a. auch als primäre Form von Sicherheiten auf den [DeFi](/defi)-Kreditmärkten, als Rechnungseinheit auf NFT-Marktplätzen, als Bezahlung für die Erbringung von Dienstleistungen oder für den Verkauf von Gütern in der realen Welt und mehr verwendet. +**Ether (ETH)** ist die Kryptowährung, die für viele Dinge im Ethereum-Netzwerk verwendet wird. Grundsätzlich ist es die einzig akzeptable Form der Bezahlung von Transaktionsgebühren, und nach [der Zusammenführung](/roadmap/merge) wird Ether benötigt, um Blöcke auf dem Mainnet zu validieren und vorzuschlagen. Ether werden u. a. auch als primäre Form von Sicherheiten auf den [DeFi](/defi)-Kreditmärkten, als Rechnungseinheit auf NFT-Marktplätzen, als Bezahlung für die Erbringung von Dienstleistungen oder für den Verkauf von Gütern in der realen Welt und mehr verwendet. Ethereum ermöglicht es Entwicklern, [**dezentrale Anwendungen (dapps)**](/developers/docs/dapps) zu erstellen, die sich alle einen Pool von Rechenleistung teilen. Da dieser gemeinsame Pool endlich ist, braucht Ethereum einen Mechanismus, um zu bestimmen, wer ihn nutzen darf. Andernfalls könnte eine App versehentlich oder böswillig alle Netzwerkressourcen verbrauchen, was anderen den Zugriff auf die App verwehren würde. @@ -32,19 +32,19 @@ Es ist [üblich](https://www.reuters.com/article/us-crypto-currencies-lending-in Minting ist der Prozess, bei dem neuer Ether im Ethereum-Ledger erstellt wird. Das zugrundeliegende Ethereum-Protokoll erstellt den neuen Ether, und es ist nicht möglich, dass ein Nutzer Ether erstellt. -Ether wird gemintet, wenn ein Miner einen Block auf der Ethereum-Blockchain erstellt. Als Anreiz für Miner gewährt das Protokoll in jedem Block eine Belohnung, die das Guthaben einer Adresse erhöht, die vom Miner des Blocks festgelegt wurde. Die Blockbelohnung hat sich im Laufe der Zeit geändert und beträgt heute 2 ETH pro Block. +Ether wird als Belohnung für jeden vorgeschlagenen Block und an jedem Epochen-Checkpoint für andere Validierungsaktivitäten geprägt, die mit dem Erreichen des Konsenses in Zusammenhang stehen. Der Gesamtbetrag, der ausgegeben wird, hängt von der Anzahl der Validatoren und der Höhe ihrer Einsätze ab. Diese Gesamtausgabe wird im Idealfall, wenn alle Validierer ehrlich und online sind, gleichmäßig unter den Validierern aufgeteilt, doch in der Realität variiert sie je nach Leistung der Validierer. Etwa 1/8 der Gesamtausgabe geht an den Block-Vorschlagenden, der Rest wird auf die weiteren Validierer verteilt. Block-Vorschlagende erhalten auch Trinkgelder aus Transaktionsgebühren und MEV-bezogenen Einnahmen, aber diese stammen aus recyceltem Ether, nicht aus der Neuausstellung. ## Ether verbrennen {#burning-ether} -Neben der Erzeugung von Ether durch Blockprämien kann Ether auch durch einen Prozess namens "Verbrennen" zerstört werden. Wenn Ether verbrannt wird, wird er dauerhaft aus dem Verkehr gezogen. +Neben der Erzeugung von Ether durch Blockbelohnungen kann Ether auch durch einen Prozess namens "Burning" zerstört werden. Wenn Ether verbrannt wird, wird er dauerhaft aus dem Verkehr gezogen. Bei jeder Transaktion auf Ethereum wird Ether verbrannt. Wenn Nutzer für ihre Transaktionen bezahlen, wird eine grundlegende Gasgebühr vernichtet, die vom Netzwerk entsprechend der Transaktion festgelegt wird. Dies, zusammen mit variablen Blockgrößen und einer maximalen Gasgebühr, vereinfacht die Abschätzung der Transaktionsgebühren auf Ethereum. Wenn die Nachfrage im Netzwerk hoch ist, können [Blöcke](https://etherscan.io/block/12965263) mehr Ether verbrauchen, als sie minten, wodurch die Ausgabe von Ether effektiv ausgeglichen wird. -Die Verbrennung der Grundgebühr verhindert diverse Möglichkeiten der Miner zur Manipulation. Wenn beispielsweise die Miner ihre Grundgebühr erhalten, können sie ihre eigenen Transaktionen kostenlos einbeziehen und die Grundgebühr für alle anderen erhöhen. Alternativ könnten sie die Grundgebühr an einige Nutzer außerhalb der Kette zurückerstatten, was zu einem undurchsichtigen und komplexen Markt für Transaktionsgebühren führen würde. +Das Verbrennen der Grundgebühr verhindert, dass ein Block-Produzent Transaktionen manipulieren kann. Wenn beispielsweise Block-Ersteller die Grundgebühr erhalten, könnten sie ihre eigenen Transaktionen kostenlos einbeziehen und die Grundgebühr für alle anderen erhöhen. Alternativ könnten sie die Grundgebühr an einige Nutzer außerhalb der Kette zurückerstatten, was zu einem undurchsichtigen und komplexen Markt für Transaktionsgebühren führen würde. ## Stückelung von Ether {#denominations} -Da viele Transaktionen auf Ethereum klein sind, hat Ether mehrere Stückelungen, die für kleinere Beträge referenziert werden können. Von diesen Stückelungen sind Wei und gwei besonders wichtig. +Da der Wert vieler Transaktionen auf Ethereum gering ist, hat Ether mehrere Stückelungen, die als kleinere Rechnungseinheiten bezeichnet werden können. Von diesen Stückelungen sind Wei und gwei besonders wichtig. Wei ist die kleinstmögliche Menge an Ether. Daher basieren viele technische Implementierungen, wie das [Ethereum Yellowpaper](https://ethereum.github.io/yellowpaper/paper.pdf), auf Berechnungen in Wei. @@ -67,11 +67,12 @@ Wenn es sich bei der Empfängeradresse um einen [Smart Contract](/developers/doc Nutzer können den Ether-Saldo jedes [Kontos](/developers/docs/accounts/) abfragen, indem sie das `balance`-Feld des Kontos einsehen, das den Ether-Bestand in Wei anzeigt. -[Etherscan](https://etherscan.io) ist ein beliebtes Tool zur Überprüfung von Adresssalden über eine webbasierte Anwendung. Zum Beispiel zeigt [diese Etherscan-Seite](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae) den Kontostand der Ethereum Foundation. +[Etherscan](https://etherscan.io) ist ein beliebtes Tool zur Überprüfung von Adresssalden über eine webbasierte Anwendung. Zum Beispiel zeigt [diese Etherscan-Seite](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae) den Kontostand der Ethereum Foundation. Kontostände können auch über Wallets oder direkt durch Anfragen an die Knoten abgefragt werden. ## Weiterführende Informationen {#further-reading} - [Definition von Ether und Ethereum](https://www.cmegroup.com/education/courses/introduction-to-ether/defining-ether-and-ethereum.html) - _CME Group_ - [Ethereum Whitepaper](/whitepaper/): Der ursprüngliche Vorschlag für Ethereum. Dieses Dokument enthält eine Beschreibung von Ether und der Beweggründe für seine Entstehung. +- [Gwei-Rechner](https://www.alchemy.com/gwei-calculator): Dieser Gwei-Rechner konvertiert Wei, Gwei und Ether. Geben Sie einfach einen Betrag an Wei, Gwei oder ETH ein, die Umrechnung erhalten Sie automatisch. _Kennst du eine Community-Ressource, die dir geholfen hat? Bearbeite diese Seite und füge sie hinzu!_ diff --git a/src/content/translations/de/developers/docs/intro-to-ethereum/index.md b/src/content/translations/de/developers/docs/intro-to-ethereum/index.md index 8215d727572..bd120e14d67 100644 --- a/src/content/translations/de/developers/docs/intro-to-ethereum/index.md +++ b/src/content/translations/de/developers/docs/intro-to-ethereum/index.md @@ -14,83 +14,79 @@ Eine Blockchain wird am besten als öffentliche Datenbank beschrieben, die über Jeder Computer im Netzwerk muss jedem neuen Block und der Kette als Ganzes zustimmen. Diese Computer werden als " Nodes" bezeichnet. Die Nodes stellen sicher, dass jeder, der mit der Blockchain interagiert, die gleichen Daten hat. Um diese verteilte Vereinbarung zu erreichen, brauchen Blockchains einen Konsensmechanismus. -Ethereum verwendet derzeit einen [Proof-of-Work](/developers/docs/consensus-mechanisms/pow/)-Konsensmechanismus. Das bedeutet, dass jeder, der neue Blöcke zur Kette hinzufügen möchte, ein schwieriges Rätsel lösen muss, für das viel Rechenleistung benötigt wird. Das Lösen des Puzzles "beweist", dass die Rechenressourcen verwendet wurden. Dies wird als [Mining](/developers/docs/consensus-mechanisms/pow/mining/) bezeichnet. Mining funktioniert nach einem rauen Versuch-und-Fehler-Prinzip, aber das erfolgreiche Hinzufügen eines Blocks wird in ETH belohnt. +Ethereum verwendet einen [Proof-of-Stake-basierten Konsensmechanismus](/developers/docs/consensus-mechanisms/pos/). Jeder, der der Chain neue Blöcke hinzufügen möchte, muss seine ETH – die native Kryptowährung der Ethereum-Blockchain – staken, die als Sicherheit und zum Ausführen der Validatorsoftware verwendet werden können. Diese "Validatoren" können dann nach dem Zufallsprinzip ausgewählt werden, um Blöcke einzureichen, die dann zur Überprüfung an andere Validatoren gesendet und zur Blockchain hinzugefügt werden. Es gibt ein System mit Belohnungen bzw. Strafen, das für die Teilnehmer einen starken Anreiz darstellt, ehrlich zu agieren und weitestgehend online verfügbar zu sein. -Neue Blöcke werden an die Nodes im Netzwerk gesendet, geprüft und verifiziert, wodurch der Zustand der Blockchain für alle aktualisiert wird. +Wenn Sie sehen möchten, wie Blockchain-Daten gehasht und anschließend an den Verlauf der Blockreferenzen angehängt werden, sollten Sie sich [diese Demo](https://andersbrownworth.com/blockchain/blockchain) von Anders Brownworth und das dazugehörige Video unten ansehen. -Zusammenfassend lässt sich also festhalten: Wenn du ETH an jemanden sendest, muss die Transaktion gemint und in einen neuen Block aufgenommen werden. Der aktualisierte Zustand wird dann mit dem gesamten Netzwerk geteilt. - -Schau dir an, wie Austin dich durch Blockchains führt: - - - -Wenn du sehen willst, wie die Blockchain Daten hasht und der vorherige Block auf alle vorherigen Blöcke verweist, solltest du dir [diese Demo](https://andersbrownworth.com/blockchain/blockchain) von Anders Brownworth und das dazugehörige Video unten ansehen. - -Schau dir an, wie Anders Hashes in Blockchains erklärt: +Sehen Sie sich die Erklärung von Anders Brownworth zu Blockchains an: ## Was ist Ethereum? {#what-is-ethereum} -Im Ethereum-Universum gibt es einen einzigen kanonischen Computer (genannt die Ethereum virtuelle Maschine oder kurz EVM), dessen Zustand jeder im Ethereum-Netzwerk zustimmt. Jeder, der am Ethereum-Netzwerk (jeder Ethereum-Node) teilnimmt, behält eine Kopie des Zustands dieses Computers. Zusätzlich kann jeder Teilnehmer eine Anfrage an diesen Computer senden, um beliebige Berechnungen durchzuführen. Wenn eine solche Anfrage gesendet wird, überprüfen andere Teilnehmer/Teilnehmerinnen im Netzwerk die Berechnung und führen sie aus ("execute"). Diese Ausführung führt zu einer Zustandsänderung in der EVM, die bestätigt und im gesamten Netzwerk verbreitet wird. +Ethereum ist eine Blockchain mit einem eingebetteten Computer. Dieser ist die Grundlage für den Aufbau von Anwendungen und Organisationen auf dezentrale, genehmigungsfreie und zensurresistente Weise. + +Im Ethereum-Ökosystem gibt es einen einzigen kanonischen Computer (genannt die virtuelle Ethereum-Maschine oder kurz EVM), dessen alle Teilnehmer jeder im Ethereum-Netzwerk zustimmen. Jeder, der am Ethereum-Netzwerk (jeder Ethereum-Knoten) teilnimmt, behält eine Kopie des Zustands dieses Computers. Zusätzlich kann jeder Teilnehmer eine Anfrage an diesen Computer senden, um beliebige Berechnungen durchzuführen. Wenn eine solche Anfrage gesendet wird, überprüfen andere Teilnehmenden im Netzwerk die Berechnung und führen sie aus ("execute"). Diese Ausführung führt zu einer Zustandsänderung in der EVM, die bestätigt und im gesamten Netzwerk verbreitet wird. -Rechenanfragen werden als Transaktionsanfragen bezeichnet; die Aufzeichnung aller Transaktionen und des aktuellen Zustands der EVM wird auf der Blockchain gespeichert, die wiederum von allen Nodes gespeichert und vereinbart wird. +Rechenanfragen werden als Transaktionsanfragen bezeichnet; die Aufzeichnung aller Transaktionen und des aktuellen Zustands der EVM wird auf der Blockchain gespeichert, die wiederum von allen Knoten gespeichert und vereinbart wird. Kryptographische Mechanismen stellen sicher, dass Transaktionen, die einmal als gültig verifiziert und in die Blockchain aufgenommen wurden, später nicht mehr manipuliert werden können. Dieselben Mechanismen stellen auch sicher, dass alle Transaktionen signiert und mit den entsprechenden "Berechtigungen" ausgeführt werden (niemand außer Alice selbst sollte in der Lage sein, digitale Vermögenswerte von ihrem Konto zu versenden). ## Was ist Ether? {#what-is-ether} -**Ether (ETH)** ist die einheimische Kryptowährung von Ethereum. Der Zweck von Ether ist es, einen Markt für Berechnungen zu ermöglichen. Ein solcher Markt bietet einen wirtschaftlichen Anreiz für die Teilnehmer/Teilnehmerinnen, Transaktionsanfragen zu verifizieren und auszuführen und dem Netzwerk Rechenressourcen zur Verfügung zu stellen. +**Ether (ETH)** ist die native Kryptowährung von Ethereum. Der Zweck von ETH ist es, einen Markt für Berechnungen zu ermöglichen. Ein solcher Markt bietet einen wirtschaftlichen Anreiz für die Teilnehmenden, Transaktionsanfragen zu verifizieren und auszuführen und dem Netzwerk Rechenressourcen zur Verfügung zu stellen. + +Jeder Teilnehmer, der eine Transaktionsanforderung sendet, muss dem Netzwerk auch einen gewissen Betrag an ETH als Prämie anbieten. Das Netzwerk vergibt diese Prämie an denjenigen, der die Transaktion verifiziert, ausführt, in die Blockchain einträgt und an das Netzwerk weiterleitet. -Jeder Teilnehmer, der eine Transaktionsanfrage sendet, muss dem Netzwerk auch einen bestimmten Betrag an Ether als Kopfgeld anbieten. Dieses Kopfgeld erhält derjenige, der die Transaktion verifiziert, ausführt, in die Blockchain einträgt und an das Netzwerk weiterleitet. +Die Höhe der gezahlten ETH entspricht den für die Berechnung benötigten Ressourcen. Diese Prämien verhindern auch, dass böswillige Teilnehmer das Netzwerk absichtlich verstopfen, indem sie die Ausführung unendlicher Berechnungen oder anderer ressourcenintensiver Skripte anfordern, da diese Teilnehmer für die Berechnungsressourcen bezahlen müssen. -Die Menge an Ether, die bezahlt wird, entspricht der Zeit, die für die Berechnung benötigt wird. Diese Kopfgelder verhindern auch, dass böswillige Teilnehmer/Teilnehmerinnen das Netzwerk absichtlich verstopfen, indem sie die Ausführung von unendlichen Berechnungen oder anderen ressourcenintensiven Skripten anfordern, da diese Teilnehmer für die Rechenzeit bezahlen müssen. +ETH wird auch verwendet, um dem Netzwerk auf drei Arten kryptoökonomische Sicherheit zu geben: 1) Es wird als Mittel zur Belohnung von Validierern verwendet, die Blöcke vorschlagen oder unehrliches Verhalten anderer Validierer aufdecken; 2) Es wird von Validierern als Sicherheit gegen unehrliches Verhalten eingesetzt – wenn Validierer versuchen, sich falsch zu verhalten, kann das die Zerstörung ihrer ETH zur Folge haben; 3) Es wird verwendet, um "Stimmen" für neu vorgeschlagene Blöcke abzuwägen, was in die Fork-Auswahl des Konsensmechanismus einfließt. ## Was sind Smart Contracts? {#what-are-smart-contracts} -In der Praxis schreiben die Teilnehmer/Teilnehmerinnen nicht jedes Mal einen neuen Code, wenn sie eine Berechnung auf der EVM anfordern wollen. Vielmehr laden Anwendungsentwickler Programme (wiederverwendbare Codeschnipsel) in den EVM-Speicher hoch, und die Nutzer stellen Anfragen, um diese Codeschnipsel mit unterschiedlichen Parametern auszuführen. Wir nennen die Programme, die hochgeladen und durch das Netzwerk ausgeführt werden, Smart Contracts (intelligente Verträge). +In der Praxis schreiben die Teilnehmenden nicht jedes Mal einen neuen Code, wenn sie eine Berechnung auf der EVM anfordern wollen. Vielmehr laden Anwendungsentwickler Programme (wiederverwendbare Codeschnipsel) in den EVM-Speicher hoch, und die Nutzer stellen Anfragen, um diese Codeschnipsel mit unterschiedlichen Parametern auszuführen. Wir nennen die Programme, die hochgeladen und durch das Netzwerk ausgeführt werden, Smart Contracts (intelligente Verträge). -Ganz grundsätzlich kannst du dir einen Smart Contract wie eine Art Verkaufsautomat vorstellen: ein Skript, das, wenn es mit bestimmten Parametern aufgerufen wird, bestimmte Aktionen oder Berechnungen durchführt, wenn bestimmte Bedingungen erfüllt sind. Zum Beispiel könnte ein einfacher Händler-Smart-Contract das Eigentum an einem digitalen Vermögenswert erstellen und zuweisen, wenn der Interessent einem bestimmten Empfänger Ether sendet. +Ganz grundsätzlich können Sie sich einen Smart Contract wie eine Art Verkaufsautomat vorstellen: ein Skript, das, wenn es mit bestimmten Parametern aufgerufen wird, bestimmte Aktionen oder Berechnungen durchführt, wenn bestimmte Bedingungen erfüllt sind. Zum Beispiel könnte ein einfacher Verkäufer-Smart-Contract das Eigentum an einem digitalen Vermögenswert schaffen und zuweisen, wenn der Aufrufer ("caller") ETH an einen bestimmten Empfänger sendet. -Jeder Entwickler kann einen Smart Contract erstellen und im Netzwerk öffentlich machen, während die Blockchain als Datenschicht gegen eine Gebühr an das Netzwerk genutzt wird. Jeder Benutzer kann dann, wiederum gegen eine Gebühr an das Netzwerk, den Smart Contract aufrufen, um seinen Code auszuführen. +Jeder Entwickler kann einen Smart Contract erstellen und im Netzwerk öffentlich machen, während die Blockchain als Datenebene gegen eine Gebühr an das Netzwerk genutzt wird. Jeder Benutzer kann dann, wiederum gegen eine Gebühr an das Netzwerk, den Smart Contract aufrufen, um seinen Code auszuführen. -Mit Smart Contracts können Entwickler/Entwicklerinnen beliebig komplexe nutzerorientierte Apps und Dienste entwickeln und bereitstellen, wie z. B. Marktplätze, Finanzinstrumente, Spiele etc. +Mit Smart Contracts können Entwickler und Entwicklerinnen beliebig komplexe nutzerorientierte Apps und Dienste entwickeln und bereitstellen, wie z. B. Marktplätze, Finanzinstrumente, Spiele etc. ## Terminologie {#terminology} ### Blockchain {#blockchain} -Die Sequenz aller Blöcke, die dem Ethereum-Netzwerk in der Geschichte des Netzwerks übertragen wurden. So benannt, weil jeder Block einen Verweis auf den vorherigen Block enthält, was uns hilft, eine Zuordnung über alle Blöcke (und damit über die genaue Historie) aufrechtzuerhalten. +Die Sequenz aller Blöcke, die dem Ethereum-Netzwerk in der Geschichte des Netzwerks übertragen wurden. Sie werden so genannt, weil jeder Block einen Verweis auf den vorherigen Block enthält. Das hilft uns, eine Ordnung über alle Blöcke (und damit über den genauen Verlauf) zu erhalten. ### ETH {#eth} -Die native Kryptowährung von Ethereum. Nutzer zahlen Ether an andere Nutzer, damit ihre Code-Ausführungsanfragen erfüllt werden. +**Ether (ETH)** ist die einheimische Kryptowährung von Ethereum. Nutzer zahlen ETH an andere Nutzer, damit ihre Anfragen zur Ausführung des Codes erfüllt werden. [Mehr zu ETH](/developers/docs/intro-to-ether/) ### EVM {#evm} -Die Ethereum Virtual Machine ist der globale virtuelle Computer, dessen Zustand jeder Teilnehmer im Ethereum-Netzwerk speichert und dem er zustimmt. Jeder Teilnehmer kann die Ausführung von beliebigem Code auf der EVM beantragen. Jede Codeausführung ändert den Zustand der EVM. +Die virtuelle Ethereum-Machine ist der globale virtuelle Computer, dessen Zustand jeder Teilnehmer im Ethereum-Netzwerk speichert und dem er zustimmt. Jeder Teilnehmer kann die Ausführung von beliebigem Code auf der EVM beantragen. Jede Codeausführung ändert den Zustand der EVM. [Mehr zur EVM](/developers/docs/evm/) ### Nodes {#nodes} -Die realen Maschinen, die den EVM-Zustand speichern. Nodes kommunizieren miteinander, um Informationen über den EVM-Zustand und neue Zustandsänderungen zu verbreiten. Jede/r Nutzer/in kann auch die Ausführung von Code anfordern, indem er/sie eine Anfrage zur Codeausführung von einem Node aus sendet. Das Ethereum-Netzwerk selbst ist das Aggregat aller Ethereum-Nodes und deren Kommunikation. +Die realen Maschinen, die den EVM-Zustand speichern. Knoten kommunizieren miteinander, um Informationen über den EVM-Zustand und neue Zustandsänderungen zu verbreiten. Alle Nutzer können auch die Ausführung von Code anfordern, indem sie eine Anfrage zur Codeausführung von einem Knoten aus senden. Das Ethereum-Netzwerk selbst ist das Aggregat aller Ethereum-Knoten und deren Kommunikation. [Mehr zu Nodes](/developers/docs/nodes-and-clients/) ### Konten {#accounts} -Wo Ether gespeichert wird. Nutzer können Konten initialisieren, Ether in die Konten einzahlen und Ether von ihren Konten auf andere Benutzer übertragen. Konten und Kontostände werden in einer großen Tabelle in der EVM gespeichert; sie sind Teil des EVM-Zustands. +Wo ETH gespeichert wird: Benutzer können Konten eröffnen, ETH auf diese Konten einzahlen und ETH von ihren Konten an andere Benutzer übertragen. Konten und Kontostände werden in einer großen Tabelle in der EVM gespeichert. Sie sind Teil der EVM-Zustands. [Mehr über Konten](/developers/docs/accounts/) ### Transaktionen {#transactions} -Eine "Transaktionsanfrage" ist der formale Begriff für eine Anfrage zur Codeausführung auf der EVM, und eine "Transaktion" ist eine erfüllte Transaktionsanfrage und die damit verbundene Änderung des EVM-Zustands. Jeder Benutzer kann eine Transaktionsanfrage an das Netzwerk von einem Node senden. Damit sich die Transaktionsanfrage auf den vereinbarten EVM-Zustand auswirkt, muss sie von einem anderen Node validiert, ausgeführt und an das Netzwerk übertragen werden. Die Ausführung eines Codes führt zu einer Zustandsänderung in der EVM. Nach der Integration wird diese Zustandsänderung an alle Nodes im Netzwerk übertragen. Einige Beispiele für Transaktionen: +Eine "Transaktionsanfrage" ist der formale Begriff für eine Anfrage zur Codeausführung auf der EVM, und eine "Transaktion" ist eine erfüllte Transaktionsanfrage und die damit verbundene Änderung des EVM-Zustands. Jeder Benutzer kann eine Transaktionsanfrage an das Netzwerk von einem Knoten aus senden. Damit sich die Transaktionsanfrage auf den vereinbarten EVM-Zustand auswirkt, muss sie von einem anderen Knoten validiert, ausgeführt und an das Netzwerk übertragen werden. Die Ausführung eines Codes führt zu einer Zustandsänderung in der EVM. Nach der Integration wird diese Zustandsänderung an alle Knoten im Netzwerk übertragen. Einige Beispiele für Transaktionen: -- Schicke X Ether von meinem Konto an das Konto von Alice. +- X ETH von meinem Konto an das Konto von Alice senden. - Veröffentliche Smart-Contract-Code in den EVM-Zustand. - Führe den Code des Smart Contracts unter Adresse X in der EVM mit Argumenten Y aus. @@ -104,17 +100,17 @@ Da das Transaktionsvolumen sehr hoch ist, werden die Transaktionen in Stapeln od ### Smart Contracts {#smart-contracts} -Ein wiederverwendbares Code-Snippet (ein Programm), das ein Entwickler in den EVM-Zustand veröffentlicht. Jeder kann anfragen, dass der Smart-Contract-Code ausgeführt wird, indem er eine Transaktionsanfrage stellt. Da Entwickler beliebige ausführbare Anwendungen in die EVM (Spiele, Marktplätze, Finanzinstrumente etc.) schreiben können, werden diese oft in übergeordneter Form auch [dApps oder dezentralisierte Apps](/developers/docs/dapps/) genannt. +Ein wiederverwendbarer Codeschnipsel (ein Programm), den ein Entwickler in den EVM-Zustand veröffentlicht. Jeder kann anfragen, dass der Smart-Contract-Code ausgeführt wird, indem er eine Transaktionsanfrage stellt. Da Entwickler beliebige ausführbare Anwendungen in die EVM (Spiele, Marktplätze, Finanzinstrumente etc.) schreiben können, werden diese oft auch [dApps oder dezentralisierte Apps](/developers/docs/dapps/) genannt. [Mehr zu Smart Contracts](/developers/docs/smart-contracts/) ## Weiterführende Informationen {#further-reading} - [Ethereum-Whitepaper](/whitepaper/) -- [Wie funktioniert Ethereum überhaupt?](https://www.preethikasireddy.com/post/how-does-ethereum-work-anyway) – _Preethi Kasireddy_ +- [Wie funktioniert Ethereum überhaupt?](https://www.preethikasireddy.com/post/how-does-ethereum-work-anyway) – _Preethi Kasireddy_ (**Hinweis:** Diese Ressource ist immer noch wertvoll, doch Sie sollten sich bewusst sein, dass sie aus der Zeit vor [der Zusammenführung](/roadmap/merge) stammt und sich daher noch auf den Proof-of-Work-Mechanismus von Ethereum bezieht – Ethereum ist jetzt durch [Proof-of-Stake](/developers/docs/consensus-mechanisms/pos) gesichert) -_Kennst du eine Community-Ressource, die dir geholfen hat? Bearbeite diese Seite und füge sie hinzu!_ +_Kennen Sie eine Community-Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ ## Verwandte Tutorials {#related-tutorials} -- [Ein Entwickler-Guide zu Ethereum, Teil 1](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _– Eine sehr anfängerfreundliche Erkundung von Ethereum mit Python und web3.py_ +- [Eine Anleitung für Entwickler zu Ethereum, Teil 1](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _ – eine einsteigerfreundliche Einführung zu Ethereum mit Python und web3.py_ diff --git a/src/content/translations/de/developers/docs/networks/index.md b/src/content/translations/de/developers/docs/networks/index.md index 83080f43db5..4a32ec80066 100644 --- a/src/content/translations/de/developers/docs/networks/index.md +++ b/src/content/translations/de/developers/docs/networks/index.md @@ -4,125 +4,137 @@ description: Eine Übersicht über Ethereums Netzwerke und wo man Testnet Ether lang: de --- -Da Ethereum ein Protokoll ist, kann es mehrere unabhängige "Netzwerke" geben, die diesem Protokoll entsprechen, jedoch nicht miteinander interagieren. +Ethereum-Netzwerke sind Gruppen von verbundenen Computern, die über das Ethereum-Protokoll kommunizieren. Es gibt nur ein Ethereum-Mainnet, aber zu Test- und Entwicklungszwecken können unabhängige Netzwerke eingerichtet werden, die denselben Protokollregeln entsprechen. Es gibt viele unabhängige "Netzwerke", die dem Protokoll folgen, ohne miteinander zu interagieren. Sie können sogar ein lokales Netzwerk auf Ihrem eigenen Computer starten, um Ihre Smart Contracts und Web3-Anwendungen zu testen. -Netzwerke sind verschiedene Ethereum-Umgebungen, auf die du für Entwicklung, Tests oder Produktionsanwendungsfälle zugreifen kannst. Dein Ethereum-Konto wird in den verschiedenen Netzwerken funktionieren, aber dein Kontostand und die zugehörige Transaktionsgeschichte werden nicht von Ethereums Hauptnetzwerk auf andere Netzwerke übertragen. Zu Testzwecken ist es nützlich zu wissen, welche Netzwerke verfügbar sind und wie man Testnet ETH erhält, um damit zu experimentieren. +Ihr Ethereum-Konto funktioniert in den verschiedenen Netzwerken, aber Ihr Kontostand und Ihr Transaktionsverlauf werden nicht vom Ethereum-Mainnet übernommen. Für Testzwecke ist es nützlich zu wissen, welche Netzwerke verfügbar sind und wie man Testnet-ETH erhält, um sich auszuprobieren. Generell ist es aus Sicherheitsgründen nicht empfehlenswert, Mainnet-Konten in Testnets wiederzuverwenden oder umgekehrt. ## Voraussetzungen {#prerequisites} -Du solltest die Grundlagen von Ethereum verstehen, bevor du über die verschiedenen Netzwerke liest, da die Testnetze dir eine günstige und sichere Version von Ethereum bieten, um damit herumzuspielen. Starte mit unserer [Einführung in Ethereum](/developers/docs/intro-to-ethereum/). +Sie sollten die [Grundlagen von Ethereum](/developers/docs/intro-to-ethereum/) verstehen, bevor Sie sich über die verschiedenen Netzwerke informieren, denn die Testnetzwerke bieten Ihnen eine billige, sichere Version von Ethereum, mit der Sie Dinge ausprobieren können. ## Öffentliche Netzwerke {#public-networks} -Öffentliche Netzwerke sind für jedermann auf der Welt mit einer Internetverbindung zugänglich. Jeder kann Transaktionen in einer öffentlichen Blockchain lesen oder erstellen und die ausgeführten Transaktionen validieren. Die Vereinbarung über Transaktionen und den Zustand des Netzwerks wird durch einen Konsens von Netzwerkteilnehmern getroffen. +Öffentliche Netzwerke sind für jedermann auf der Welt mit einer Internetverbindung zugänglich. Jeder kann Transaktionen in einer öffentlichen Blockchain lesen oder erstellen und die ausgeführten Transaktionen validieren. Der Konsens zwischen den Peers entscheidet über die Aufnahme von Transaktionen und den Zustand des Netzwerks. -### Mainnet {#mainnet} +### Ethereum-Mainnet {#ethereum-mainnet} Mainnet ist die primäre öffentliche Ethereum-Produktions-Blockchain, bei der Transaktionen mit tatsächlichem Wert im dezentralisierten Ledger stattfinden. Wenn Menschen und Börsen ETH-Preise diskutieren, sprechen sie über Mainnet ETH. -### Testnetze {#testnets} +### Ethereum-Testnets {#ethereum-testnets} Zusätzlich zum Mainnet gibt es öffentliche Testnetze. Dabei handelt es sich um Netzwerke, die von Protokollentwicklern oder Smart-Contract-Entwicklern eingesetzt werden, um sowohl Protokoll-Upgrades als auch potenzielle Smart Contracts in einer produktionsähnlichen Umgebung zu testen, bevor sie ins Mainnet gelangen. Stelle dir dies als Analog zur Produktion im Vergleich zu Staging-Servern vor. -Es ist generell wichtig, jeden Vertragscode, den du auf einem Testnetz schreibst, zu testen, bevor du ihn in das Mainnet einbringst. Wenn du eine dApp erstellst, die an bestehende Smart Contracts angeknüpft ist, haben die meisten Projekte Kopien in Testnetze, mit denen du interagieren kannst, bereitgestellt. +Sie sollten jeden Contract-Code, den Sie schreiben, in einem Testnet testen, bevor Sie ihn im Mainnet einsetzen. dApps, die mit bestehenden Smart Contracts integriert werden, haben Kopien der meisten Projekte in Testnets bereitgestellt. -Die meisten Testnetze verwenden den Konsensmechanismus Proof-of-Authority. Dies bedeutet, dass eine kleine Anzahl von Nodes ausgewählt wird, um Transaktionen zu validieren und neue Blöcke zu erstellen – und ihre Identität im Prozess zu hinterlegen. Es ist schwer, das Mining auf einem Testnetz zu fördern, was es aufgrund geringer Validierungsressourcen verwundbar machen kann. +Die meisten Testnets begannen mit einem berechtigten Proof-of-Authority-Konsensmechanismus. Dies bedeutet, dass eine kleine Anzahl von Nodes ausgewählt wird, um Transaktionen zu validieren und neue Blöcke zu erstellen – und ihre Identität im Prozess zu hinterlegen. Alternativ dazu bieten einige Testnets einen offenen Proof-of-Stake-Konsensmechanismus, bei dem jeder testweise einen Valitador laufen lassen kann, genau wie beim Ethereum-Mainnet. -ETH auf Testnetzen hat keinen echten Wert. Daher gibt es keine Märkte für Testnet ETH. Da du ETH benötigst, um tatsächlich mit Ethereum zu interagieren, bekommen die meisten Leute Testnet ETH von Faucets. Die meisten Faucets sind Webapplikationen, bei denen du eine Adresse eingeben kannst, an die die ETH gesendet werden sollen. +ETH in Testnets soll keinen wirklichen Wert haben. Es wurden jedoch Märkte für bestimmte Arten von Testnet-ETH geschaffen, die knapp oder schwer zu bekommen sind. Da Sie ETH benötigen, um tatsächlich mit Ethereum zu interagieren (sogar auf Testnets), erhalten die meisten Nutzer Testnet-ETH kostenlos von Faucets. Die meisten Faucets sind Webapplikationen, bei denen Sie eine Adresse eingeben können, an die die ETH gesendet werden sollen. -#### Arbitrum Rinkeby {#arbitrum-rinkeby} +#### Welches Testnet soll ich benutzen? -Ein Testnetz für [Arbitrum](https://arbitrum.io/). +Die beiden öffentlichen Testnets, die die Client-Entwickler derzeit betreiben, sind Sepolia und Goerli. Sepolia ist ein Netz für Smart Contract- und Anwendungsentwickler zum Testen ihrer Anwendungen. Das Goerli-Netz ermöglicht es Protokollentwicklern, Netzwerk-Upgrades zu testen, bzw. erlaubt es Stakern, laufende Validatoren zu testen. -##### Arbitrum Rinkeby faucets +#### Sepolia {#sepolia} -- [FaucETH](https://fauceth.computing.org) (Multi-Chain-faucet ohne die Notwendigkeit eines sozialen Kontos) -- [Chainlink faucet](https://faucets.chain.link/) -- [Paradigmatischer Faucet](https://faucet.paradigm.xyz/) +**Sepolia ist das empfohlene Standard-Testnet für die Anwendungsentwicklung**. Das Sepolia-Netz verwendet ein berechtigtes Validator-Set. Es ist relativ neu, d. h. der Status und Verlauf sind beide recht klein. Das bedeutet, dass das Netzwerk schnell zu synchronisieren ist und dass der Betrieb eines Knotens weniger Speicherplatz erfordert. Das ist nützlich für Benutzer, die schnell einen Knoten einrichten und direkt mit dem Netzwerk interagieren möchten. -#### Görli {#goerli} +- Geschlossener Validatorensatz, kontrolliert von Client und Testteams +- Neues Testnet, weniger Anwendungen im Einsatz als auf anderen Testnets +- Schnelle Synchronisierung und minimaler Speicherplatzbedarf für den Betrieb eines Knotens -Ein Proof-of-Authority-Testnetz, das über verschiedene Clients hinweg funktioniert. +##### Ressourcen -##### Görli faucets +- [Website](https://sepolia.dev/) +- [GitHub](https://github.com/eth-clients/sepolia) +- [Otterscan](https://sepolia.otterscan.io/) +- [Etherscan](https://sepolia.etherscan.io) -- [Görli faucet](https://faucet.goerli.mudit.blog/) -- [Chainlink faucet](https://faucets.chain.link/) -- [Alchemy Goerli Faucet](https://goerlifaucet.com/) +##### Faucets -#### Kintsugi {#kintsugi} +- [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) -Ein Fusionstestnetz für Ethereum. +#### Goerli _(Langzeit-Support)_ {#goerli} -##### Kintsugi faucets +_Hinweis: [Das Goerli-Testnetz ist veraltet](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17) und wird 2023 durch [Holesovice](https://github.com/eth-clients/holesovice) ersetzt. Sie sollten die Migration Ihrer Anwendungen auf Sepolia in Erwägung ziehen._ -- [FaucETH](https://fauceth.computing.org) (Multi-Chain-Faucet ohne die Notwendigkeit eines Social-Kontos) -- [Kintsugi faucet](https://faucet.kintsugi.themerge.dev/) +Goerli ist ein Testnet zum Testen, Validieren und Staking. Das Goerli-Netzwerk ist offen für Benutzer, die einen Testnet-Validator betreiben möchten. Staker, die Protokoll-Upgrades testen wollen, bevor sie im Mainnet eingesetzt werden, sollten daher Goerli benutzen. -#### Kovan {#kovan} +- Offenes Validator-Set, Staker können Netzwerk-Upgrades testen +- Großer State, nützlich zum Testen komplexer Smart-Contract-Interaktionen +- Langwierige Synchronisierung und hoher Speicherbedarf für den Betrieb eines Knotens -Ein Proof-of-Authority-Testnetz für diejenigen, die OpenEthereum-Clients verwenden. +##### Ressourcen -##### Kovan faucets +- [Website](https://goerli.net/) +- [GitHub](https://github.com/eth-clients/goerli) +- [Etherscan](https://goerli.etherscan.io) -- [FaucETH](https://fauceth.computing.org) (Multi-Chain-Faucet ohne die Notwendigkeit eines Social-Kontos) -- [Kovan faucet](https://faucet.kovan.network/) -- [Chainlink faucet](https://faucets.chain.link/) -- [Paradigm faucet](https://faucet.paradigm.xyz/) +##### Faucets -#### Optimistischer Kovan {#optimistic-kovan} +- [QuickNode Goerli Faucet](https://faucet.quicknode.com/drip) +- [Grabteeth](https://grabteeth.xyz/) +- [PoW-Faucet](https://goerli-faucet.pk910.de/) +- [Paradigm-Faucet](https://faucet.paradigm.xyz/) +- [Alchemy Goerli Faucet](https://goerlifaucet.com/) +- [All That Node Goerli Faucet](https://www.allthatnode.com/faucet/ethereum.dsrv) +- [Coinbase Wallet Faucet | Goerli](https://coinbase.com/faucets/ethereum-goerli-faucet) +- [Chainstack Goerli-Faucet](https://faucet.chainstack.com/goerli-faucet) -Ein Testnetz für [Optimismus](https://www.optimism.io/). +Um einen Validator im Goerli-Testnet zu starten, verwenden Sie das [Launchpad "cheap goerli validator"](https://goerli.launchpad.ethstaker.cc/en/) von ethstaker. -##### Optimistische Kovan-Faucets +### Layer-2-Testnets {#layer-2-testnets} -- [FaucETH](https://fauceth.computing.org) (Multi-Chain-Faucet ohne die Notwendigkeit eines Social-Kontos) -- [Paradigmatischer Faucet](https://faucet.paradigm.xyz/) +[Layer-2 (L2)](/layer-2/) ist ein Sammelbegriff, der eine bestimmte Gruppe von Ethereum-Skalierungslösungen beschreibt. Ein Layer-2 ist eine separate Blockchain, die Ethereum erweitert und die Sicherheitsgarantien von Ethereum erbt. Layer-2-Testnets sind in der Regel eng mit öffentlichen Ethereum-Testnets gekoppelt. -#### Rinkeby {#rinkeby} +#### Arbitrum Goerli {#arbitrum-goerli} -Ein Proof-of-Authority-Testnetz für diejenigen, die den Geth-Client verwenden. +Ein Testnet für [Arbitrum](https://arbitrum.io/). -##### Rinkeby faucets +##### Faucets -- [FaucETH](https://fauceth.computing.org) (Multi-Chain-Faucet ohne die Notwendigkeit eines Social-Kontos) -- [Alchemy faucet](https://RinkebyFaucet.com) -- [Chainlink faucet](https://faucets.chain.link/) -- [Paradigm faucet](https://faucet.paradigm.xyz/) -- [Rinkeby faucet](https://faucet.rinkeby.io/) +- [Chainlink-Faucet](https://faucets.chain.link/) -#### Ropsten {#ropsten} +#### Optimistic Goerli {#optimistic-goerli} -Ein Proof-of-Work-Testnetz. Das bedeutet, es ist die beste gleichartige Testnetzumgebung von Ethereum. +Ein Testnet für [Optimism](https://www.optimism.io/). -##### Ropsten faucets +##### Faucets -- [FaucETH](https://fauceth.computing.org) (Multi-Chain-Faucet ohne die Notwendigkeit eines Social-Kontos) -- [Paradigmatischer Faucet](https://faucet.paradigm.xyz/) +- [Paradigm-Faucet](https://faucet.paradigm.xyz/) +- [Coinbase Wallet Faucet | Optimism Goerli](https://coinbase.com/faucets/optimism-goerli-faucet) ## Private Netzwerke {#private-networks} -Ein Ethereum-Netzwerk ist ein privates Netzwerk, wenn seine Nodes nicht mit einem öffentlichen Netzwerk verbunden sind (d. h. Hauptnetz oder ein Testnetz). 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 (d. h. Mainnet oder ein Testnet). In diesem Zusammenhang bedeutet privat nur reserviert oder isoliert statt geschützt oder sicher. ### Entwicklungsnetzwerke {#development-networks} -Um eine Ethereum-Anwendung zu entwickeln, ist es ratsam, sie in einem privaten Netzwerk auszuführen, um zu sehen, wie sie funktioniert, bevor du sie in der Blockchain verteilst. Ähnlich wie du auf deinem Computer einen lokalen Server für Webentwicklung erstellst, kannst du eine lokale Blockchain-Instanz erstellen, um deine dApp zu testen. Dies ermöglicht eine wesentlich schnellere Iteration als ein öffentliches Testnetz. +Um eine Ethereum-Anwendung zu entwickeln, ist es ratsam, sie in einem privaten Netzwerk auszuführen, um zu sehen, wie sie funktioniert, bevor Sie sie in der Blockchain einsetzen. Ähnlich wie Sie auf Ihrem Computer einen lokalen Server für die Webentwicklung erstellen, können Sie eine lokale Blockchain-Instanz erstellen, um Ihre dApp zu testen. Das ermöglicht eine wesentlich schnellere Iteration als ein öffentliches Testnet. -Es gibt Projekte und Tools, die dabei hilfreich sind. Erfahre mehr über [Entwicklungsnetzwerke](/developers/docs/development-networks/). +Es gibt Projekte und Tools, die dabei hilfreich sind. Erfahren Sie mehr über [Entwicklungsnetzwerke](/developers/docs/development-networks/). ### Konsortium-Netzwerke {#consortium-networks} -Der Konsensprozess wird von einer vordefinierten Gruppe von Nodes gesteuert, die vertrauenswürdig sind, z. B. ein privates Netzwerk bekannter akademischer Institutionen, die jeweils einen einzelnen Node stellen, wodurch Blöcke mit einer Schwelle von Unterzeichnern innerhalb des Netzwerks validiert werden. +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. -Wenn ein öffentliches Ethereum-Netzwerk wie das öffentliche Internet ist, kannst du dir ein Konsortium-Netzwerk als privates Intranet vorstellen. +Wenn ein öffentliches Ethereum-Netzwerk wie das öffentliche Internet ist, dann ist ein Konsortialnetzwerk wie ein privates Intranet. ## Verwandte Tools {#related-tools} -- [Kettenliste](https://chainlist.org/) _Liste der EVM-Netzwerke, um Wallets und Anbieter mit der entsprechenden Ketten-ID und Netzwerk-ID zu verbinden_ -- [EVM-basierte Ketten](https://github.com/ethereum-lists/chains) _GitHub Repo der Ketten-Metadaten, die Chainlist_ unterstützen +- [Chain-Liste](https://chainlist.org/) _Liste der EVM-Netzwerke, um Wallets und Anbieter mit der entsprechenden Chain-ID und Netzwerk-ID zu verbinden_ +- [EVM-basierte Chains](https://github.com/ethereum-lists/chains) _GitHub Repo der Chain-Metadaten, die die Chain-Liste_ unterstützen ## Weiterführende Informationen {#further-reading} -_Kennst du eine Community-Ressource, die dir geholfen hat? Bearbeite diese Seite und füge sie hinzu!_ +- [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/) diff --git a/src/content/translations/de/developers/docs/nodes-and-clients/archive-nodes/index.md b/src/content/translations/de/developers/docs/nodes-and-clients/archive-nodes/index.md new file mode 100644 index 00000000000..3b322e8eeac --- /dev/null +++ b/src/content/translations/de/developers/docs/nodes-and-clients/archive-nodes/index.md @@ -0,0 +1,80 @@ +--- +title: Ethereum-Archivierungsknoten +description: Ein Überblick über Archivierungsknoten +lang: de +sidebarDepth: 2 +--- + +Ein Archivierungsknoten ist eine Instanz eines Ethereum-Clients, die für den Aufbau eines Archives aller vergangenen Zustände konfiguriert ist. Er ist ein hilfreiches Tool für bestimmte Anwendungsfälle, jedoch könnte der schwieriger zu betreiben sein als ein vollständiger Knoten. + +## Voraussetzungen {#prerequisites} + +Sie sollten das Konzept eines [Ethereum-Knotens](/developers/docs/nodes-and-clients/), [seines Aufbaus](/developers/docs/nodes-and-clients/node-architecture/), [seiner Synchronisierungsstrategien](/developers/docs/nodes-and-clients/#sync-modes) und wie man ihn [betreibt](/developers/docs/apis/json-rpc/) und [nutzt](/developers/docs/nodes-and-clients/run-a-node/), verstehen. + +## Was ist ein Archivierungsknoten + +Um die Bedeutung eines Archivierungsknotens zu verstehen, sollten wir zunächst das Konzept des Zustand klären. Ethereum kann als _Transaktionsbasierte Zustandsmaschine_ bezeichnet werden. Er besteht aus Konten und Anwendungen, die Transaktion ausführen, die ihren Zustand ändern. Die globalen Daten mit Informationen über jeden Account und Vertrag, wird in einer Trie-Datenbank gespeichert, die sich Zustand nennt. Dies wird verwaltet durch den Client der Ausführungsebene und beinhaltet: + +- Guthaben und Nonce eines Kontos +- Vertragscode und Speicher +- Konsensbezogene Daten, z. B. Staking-Einzahlungsvertrag + +Um mit dem Netzwerk interagieren sowie neue Blöcke produzieren und verifizieren zu können, müssen Ethereum-Clients mit den neuesten Änderungen (der Spitze der Blockchain) und daher mit dem aktuellen Zustand Schritt halten. Ein auf der Ausführungsebene bestehender Client, der als vollständiger Knoten konfiguriert ist, verifiziert und folgt dem neuesten Zustand des Netzwerks, speichert jedoch nur einige der letzten Zustände, z. B. den Zustand, der mit den letzten 128 Blöcken verbunden wird. Dadurch kann er mit Umlagerungen der Blockchain umgehen und schnellen Zugriff auf die letzten Daten bereitstellen. Den letzten Zustand brauchen alle Clients, um eingehende Transaktionen verifizieren und das Netzwerk nutzen zu können. + +Man kann sich diesen Zustand als vorübergehenden Schnappschuss des Netzwerks an einem bestimmten Block und das Archiv als eine Wiederholung vom Verlauf des Netzwerks vorstellen. + +Vergangene Zustände können sicher entfernt werden, da sie nicht für das Betreiben des Netzwerks erforderlich sind und es für die Clients unnötig wäre, veraltete Daten zu behalten. Zustände, die vor irgendeinem „letzten“ Block (z. B. 128 Blocks vor der Spitze) existiert haben, werden praktisch weggeworfen. Vollständige Knoten behalten nur vergangene Daten der Blockchain (Blöcke und Transaktionen) und gelegentliche vergangene Schnappschüsse, die sie nutzen können, um ältere Zustände bei Bedarf wiederherzustellen. Dies erfolgt, indem sie die letzten Transaktionen im EVM erneut ausführen, was rechnerisch angefordert werden kann, wenn der erwünschte Zustand weit vom nächsten Schnappschuss entfernt ist. + +Dies bedeutet jedoch, dass der Zugang zu einem vergangenen Zustand eines vollständigen Knotens viel Rechenleistung erfordert. Der Klient muss möglicherweise alle vergangenen Transaktionen ausführen, um einen historischen Zustand seit Anfang zu berechnen. Archivierungsknoten lösen dies, indem sie nicht nur die letzten, sondern jeden einzelnen Zustand nach dem Erzeugen eines Blocks speichern. Es findet quasi einen Kompromiss, wobei mehr Speicherplatz erforderlich ist. + +Es ist wichtig zu beachten, dass das Netzwerk nicht von Archivierungsknoten abhängt, um vergangene Daten zu speichern und bereitzustellen. Wie oben erwähnt, können alle vergangenen Zustände auf einem vollständigen Knoten abgeleitet werden. Transaktionen werden auf jedem vollständigen Knoten (zur Zeit kleiner als 400 G) gespeichert und können so das gesamte Archiv wiedergeben. + +### Anwendungsfälle + +Die normale Nutzung von Ethereum, wie das Senden von Transaktionen, das Bereitstellen von Verträgen, dem Verifizieren vom Konsens usw. erfordert keinen Zugang zu vergangenen Zuständen. Nutzer sollten nie einen Archivierungsknoten benötigen, um mit dem Netzwerk normal interagieren zu können. + +Der größte Vorteil eines Zustandsarchivs ist der schnelle Zugang zu Abfragen über vergangene Zustände. Ein Archivierungsknoten würde zum Beispiel direkt Ergebnisse auf Abfragen wie die Folgenden liefern: + +- _Was war der ETH-Kontostand von Account 0x1337... an Block 15537393?_ +- _Was war der Kontostand vom Token 0x in Vertrag 0x an Block 1920000?_ + +Wie oben erklärt, müsste ein vollständiger Node diese Daten über die Ausführung von EVM generieren, was die CPU belastet und viel Zeit benötigt. Archivierungsknoten greifen darauf direkt über den Speicher zu und können direkt Antworten liefern. Diese Eigenschaft ist für bestimmte Teile der Infrastruktur nützlich, wie zum Beispiel: + +- Serviceanbieter wie Block-Explorer +- Forscher +- Sicherheitsanalysten +- Dapp-Entwickler +- Prüfung und Einhaltung von Regeln + +Es gibt einige kostenlose [Anbieter](/developers/docs/nodes-and-clients/nodes-as-a-service/), die auch Zugang zu vergangenen Daten liefern. Da es anspruchsvoller ist, einen Archivierungsknoten zu betreiben, ist dieser Zugang oft limitiert und funktioniert nur für gelegentlichen Zugriff. Wenn Ihr Projekt durchgängigen Zugriff auf vergangene Daten benötigt, sollten Sie sich überlegen, selber einen Archivierungsknoten zu betreiben. + +## Implementierung und Nutzung + +Archivierungsknoten bedeutet in diesem Kontext, dass dem Nutzer, dem Clients der Ausführungsebene gegenüberstehen, Daten zur Verfügung gestellt werden, während sie die Zustands-Datenbank verwalten und JSON-RPC Endpunkte bereitstellen. Konfigurationsoptionen, Synchronisierungszeit und die Größe der Datenbank können je nach Client variieren. Weitere Details finden Sie in der Client-Dokumentation. + +Bevor Sie ihren eigenen Archivierungsknoten starten, sollten Sie die Unterschiede zwischen den Clients und vor allem den verschiedenen [Hardwareanforderungen](/developers/docs/nodes-and-clients/run-a-node/#requirements) kennen. Die meisten Clients sind nicht für diese Funktion optimiert und ihre Archive benötigen über 12 TB Speicherplatz. Zum Vergleich: Implementierungen wie Erigon können dieselben Daten in weniger als 3 TB speichern, was sie zur effektivsten Art zum Betreiben eines Archivierungsknotens macht. + +## 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. + +### Hardware + +Versichern Sie sich immer, dass ihre Hardware alle Voraussetzungen für einen gegebenen Modus in der Dokumentation des Clients erfüllt. Die größte Voraussetzung für Archivierungsknoten ist dabei der Speicherplatz. Je nach Client variiert dieser von 3 TB bis 12 TB. Obwohl HDD als eine bessere Lösung für große Datenmengen gesehen werden kann, wird eine SSD für das kontinuierliche Synchronisieren und Aktualisieren der Blockchain-Spitze benötigt. [SATA](https://www.cleverfiles.com/help/sata-hard-drive.html)-Datenträger sind ausreichend, jedoch sollten sie von zuverlässiger Qualität, also mindestens [TLC](https://blog.synology.com/tlc-vs-qlc-ssds-what-are-the-differences) sein. Festplatten können in einen Desktop Computer oder einen Server mit genügend Slots eingebaut werden. Diese speziellen Geräte sind ideal, um Knoten mit hoher Verfügbarkeit zu betreiben. Es ist durchaus möglich, Archivierungsknoten auf einem Laptop zu betreiben. Die Portabilität erfordert jedoch zusätzliche Kosten. + +Alle Daten müssen in einen einzigen Speicherort passen, deshalb müssen Festplatten beispielsweise mit [RAID0](https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0) oder [LVM](https://web.mit.edu/rhel-doc/5/RHEL-5-manual/Deployment_Guide-en-US/ch-lvm.html) zusammengelegt werden. Es könnte sich auch lohnen, [ZFS](https://en.wikipedia.org/wiki/ZFS) zu nutzen, da es „Kopieren beim Schreiben“ (Copy-on-write) unterstützt. Dadurch wird sicherstellt, dass Daten korrekt auf die Festplatten geschrieben werden, ohne dass geringfügige Fehler entstehen. + +Für mehr Stabilität und Sicherheit bei der Prävention gegen die Beschädigung der Datenbanken, besonders in einer professionellen Einrichtung, sollten sie sich überlegen [ECC Speicher](https://en.wikipedia.org/wiki/ECC_memory) zu verwenden, sollte Ihr System dies unterstützen. Die Größe des RAM sollte genauso groß wie für einen vollständigen Knoten sein. Mehr RAM kann jedoch dazu beitragen, die Synchronisierung zu beschleunigen. + +Während der ersten Synchronisierung führen Clients im Archivierungsmodus jede Transaktion seit der Genesis aus. Die Ausführungsgeschwindigkeit ist vor allem limitiert durch die CPU, daher kann eine schnellere CPU dazu beitragen, die erste Synchronisierung zu beschleunigen. Bei einem durchschnittlichen Computer kann die erste Synchronisierung bis zu einem Monat dauern. + +## Weiterführende Informationen {#further-reading} + +- [Ethereum vollständiger Knoten vs Archivierungsknoten](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) - _QuickNode, September 2022_ +- [Building Your Own Ethereum Archive Node](https://tjayrush.medium.com/building-your-own-ethereum-archive-node-72c014affc09) - _Thomas Jay Rush, August 2021_ +- [How to set up Erigon, Erigon’s RPC and TrueBlocks (scrape and API) as services](https://magnushansson.xyz/blog_posts/crypto_defi/2022-01-10-Erigon-Trueblocks) _– Magnus Hansson, aktualisiert September 2022_ + +## Verwandte Themen {#related-topics} + +- [Knotenpunkte und Clients](/developers/docs/nodes-and-clients/) +- [Einen Knoten betreiben](/developers/docs/nodes-and-clients/run-a-node/) diff --git a/src/content/translations/de/developers/docs/nodes-and-clients/bootnodes/index.md b/src/content/translations/de/developers/docs/nodes-and-clients/bootnodes/index.md new file mode 100644 index 00000000000..38c121bb83e --- /dev/null +++ b/src/content/translations/de/developers/docs/nodes-and-clients/bootnodes/index.md @@ -0,0 +1,31 @@ +--- +title: Einführung zu Ethereum Bootnodes +description: Grundlegend benötigte Informationen zum Verständnis von Bootnodes +lang: de +--- + +Wenn ein neuer Knoten dem Ethereum-Netzwerk beitritt, muss er sich mit anderen Knoten, sich sich bereits im Netzwerk befinden, verbinden, damit er neue Peers finden kann. Diese Eintrittspunkte in das Ethereum-Netzwerk werden Bootnodes genannt. Clients haben häufig eine Liste von Bootnodes fest einkodiert. Diese Bootnodes werden normalerweise vom Ethereum Foundation Entwicklerteam oder den Client-Teams betrieben. Beachten Sie dabei, dass Bootnodes nicht dasselbe wie statische Knoten sind. Statische Knoten werden immer wieder aufgerufen, während Bootnodes nur aufgerufen werden, wenn es genug Peers zum Verbinden gibt. Der Knoten muss zudem neue komplexere Verbindungen aufbauen. + +## Verbinden mit einem Bootnode {#connect-to-a-bootnode} + +Die meisten Clients verfügen über eine integrierte Liste von Bootnodes. Aber möglicherweise möchten Sie auch Ihren eigenen Bootnode betreiben, oder einen nutzen, der nicht Teil der fest einkodierten Liste des Clients ist. In diesem Fall können Sie sie spezifizieren, wenn Sie ihren Client wie folgt starten (Beispiel gilt für Geth, bitte überprüfen Sie die Dokumentation Ihres Clients): + +``` +geth --bootnodes "enode://@:" +``` + +## Betrieb eines Bootnodes {#run-a-bootnode} + +Bootnodes sind vollständige Knoten, die nicht hinter einem NAT ([Network Address Translation](https://www.geeksforgeeks.org/network-address-translation-nat/)) stehen. Jeder vollständige Knoten kann als Bootnode wirken, solange er öffentlich zugänglich ist. + +Wenn Sie einen Knoten starten, sollte er sich in Ihren ["Enode"](/developers/docs/networking-layer/network-addresses/#enode) einloggen. Dieser ist ein öffentlicher Identifikator, den andere nutzen können, um sich mit Ihrem Knoten zu verbinden. + +Der Enode wird normalerweise bei jedem Neustart neu generiert, schauen Sie sich daher die Dokumentation Ihres Clients an. Dort erfahren Sie, wie man einen beständigen Enode für Ihren Bootnode erzeugt. + +Ein guter Bootnode benötigt möglichst viele Peers, die an ihm andocken können, daher wird empfohlen, die maximale Anzahl davon zu erhöhen. Einen Bootnode mit vielen Peers auszuführen, kann die benötigte Bandbreite signifikant vergrößern. + +## Verfügbare Bootnodes {#available-bootnodes} + +Eine Liste bereits verfügbarer Bootnodes in go-Ethereum finden Sie [hier](https://github.com/ethereum/go-ethereum/blob/master/params/bootnodes.go#L23). Diese Bootnodes werden von der Ethereum Foundation und dem go-Ethereum Team gewartet. + +Es gibt weitere Listen von Bootnodes, die von Freiwilligen gepflegt werden. Stellen Sie sicher, dass Sie immer mindestens einen offiziellen Bootnode verwenden, da Sie sonst Opfer eines Eclipse-Angriffs werden könnten. diff --git a/src/content/translations/de/developers/docs/nodes-and-clients/client-diversity/index.md b/src/content/translations/de/developers/docs/nodes-and-clients/client-diversity/index.md new file mode 100644 index 00000000000..9dd6b3ba85b --- /dev/null +++ b/src/content/translations/de/developers/docs/nodes-and-clients/client-diversity/index.md @@ -0,0 +1,109 @@ +--- +title: Client-Diversität +description: Eine ausführliche Erklärung über die Bedeutung der Client-Vielfalt für Ethereum. +lang: de +sidebarDepth: 2 +--- + +Das Verhalten eines Ethereum-Knotens wird durch die von ihm ausgeführte Client-Software gesteuert. Es gibt mehrere Ethereum-Clients auf Produktionsebene, die jeweils von verschiedenen Teams in verschiedenen Sprachen entwickelt und gepflegt werden. Die Clients werden nach einer gemeinsamen Spezifikation aufgebaut, die sicherstellt, dass die Clients nahtlos miteinander kommunizieren und die gleiche Funktionalität haben sowie ein gleichwertiges Nutzererlebnis bieten. Im Moment jedoch ist die Verteilung von Clients auf Knotenpunkte nicht gleich genug, um diese Netzwerkbefestigung auf sein volles Potenzial zu realisieren. Idealerweise teilen sich Nutzer ungefähr gleich über die verschiedenen Clients hinweg und bringen so viel Client-Vielfalt wie möglich ins Netzwerk. + +## Voraussetzungen {#prerequisites} + +Wenn Sie noch nicht wissen, was Nodes und Clients sind, lesen Sie [Nodes und Clients](/developers/docs/nodes-and-clients/). [Ausführungs-](/glossary/#execution-layer) und [Konsensebenen](/glossary/#consensus-layer) sind im Glossar definiert. + +## Warum gibt es mehrere Clients? {#why-multiple-clients} + +Es gibt mehrere, unabhängig voneinander entwickelte und gewartete Clients, weil die Client-Vielfalt das Netzwerk widerstandsfähiger gegen Angriffe und Fehler macht. Mehrere Clients sind die einzigartige Stärke von Ethereum – andere Blockchains verlassen sich auf die Unfehlbarkeit eines einzigen Clients. Es reicht jedoch nicht aus, einfach mehrere Clients zur Verfügung zu haben, sie müssen von der Community angenommen werden und die Anzahl der aktiven Knoten muss relativ gleichmäßig auf sie verteilt sein. + +## Warum ist die Client-Vielfalt wichtig? {#client-diversity-importance} + +Viele unabhängig voneinander entwickelte und gewartete Clients sind für die Sicherheit eines dezentralen Netzwerks unerlässlich. Lassen Sie uns die Gründe dafür untersuchen. + +### Fehler {#bugs} + +Ein Fehler in einem einzelnen Client stellt ein geringeres Risiko für das Netzwerk dar, wenn er nur eine Minderheit der Ethereum-Knoten repräsentiert. Bei einer annähernd gleichmäßigen Verteilung der Knoten auf viele Clients ist die Wahrscheinlichkeit, dass die meisten Clients von einem gemeinsamen Problem betroffen sind, gering. Das Netzwerk ist daher robuster. + +### Verteidigung gegen Angriffe {#resilience} + +Die Client-Vielfalt bietet auch eine gewisse Widerstandsfähigkeit gegen Angriffe. Ein Angriff, bei dem [ein bestimmter Client in einen bestimmten Bereich der Chain gelockt wird](https://twitter.com/vdWijden/status/1437712249926393858), dürfte zum Besipiel kaum erfolgreich sein, da andere Clients wahrscheinlich nicht auf die gleiche Weise ausgenutzt werden können und die kanonische Chain nicht beschädigt wird. Eine geringe Client-Vielfalt erhöht das Risiko, das mit einem Hack auf den dominanten Client verbunden ist. Die Client-Vielfalt hat sich bereits als wichtiger Schutz gegen böswillige Angriffe auf das Netzwerk erwiesen. So war beispielsweise der Denial-of-Service-Angriff von Shanghai im Jahr 2016 möglich, weil es den Angreifern gelang, den dominanten Client (Geth) dazu zu bringen, einen „Slow Disk I/O-Vorgang“ zehntausende Male pro Block auszuführen. Da auch alternative Clients online waren, die diese Schwachstelle nicht aufwiesen, konnte Ethereum dem Angriff widerstehen und weiterarbeiten, während die Schwachstelle in Geth behoben wurde. + +### Finalität von Proof-of-stake {#finality} + +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). + +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. + +### Gemeinsame Verantwortung {#responsibility} + +Bei Mehrheitsclients fallen außerdem Personalkosten an. Ein kleines Entwicklungsteam wird dadurch stärker belastet und trägt mehr Verantwortung. Je geringer die Client-Vielfalt ist, desto größer ist die Last der Verantwortung für die Entwickler, die den Mehrheitsclient pflegen. Die Verteilung dieser Verantwortung auf mehrere Teams ist vorteilhaft für die Sicherheit des Knoten-Netzwerks und für das Personalnetzwerk von Ethereum. + +## Aktuelle Client-Vielfalt {#current-client-diversity} + +![Ein Tortendiagramm, das die Client-Vielfalt zeigt](./client-diversity.png) _Diagramm-Daten von [ethernodes.org](https://ethernodes.org) und [clientdiversity.org](https://clientdiversity.org/)_ + +Die beiden Tortendiagramme oben zeigen Momentaufnahmen der aktuellen Client-Vielfalt für die Ausführungs- und die Konsensschicht (zum Zeitpunkt der Erstellung im Januar 2022). Die Ausführungsebene wird überwiegend von [Geth](https://geth.ethereum.org/) dominiert, mit [Open Ethereum](https://openethereum.github.io/) an zweiter mit weitem Abstand, [Erigon](https://github.com/ledgerwatch/erigon) an dritter und [Nethermind](https://nethermind.io/) an vierter Stelle, wobei andere Clients weniger als 1 % des Netzwerks ausmachen. Der am häufigsten verwendete Client auf der Konsensschicht - [Prysm](https://prysmaticlabs.com/#projects) - ist nicht so dominant wie Geth, macht aber immer noch über 60 % des Netzwerks aus. [Lighthouse](https://lighthouse.sigmaprime.io/) und [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) machen ca. 20 % bzw. ca. 14 % aus. Andere Clients werden nur selten verwendet. + +Die Daten der Ausführungsebene wurden am 23.01.2022 von [Ethernodes](https://ethernodes.org) bezogen. Die Daten für Konsensclients stammen von [Michael Sproul](https://github.com/sigp/blockprint). Die Daten der Konsensclients sind schwieriger zu beschaffen, da die Clients der Konsensschicht nicht immer eindeutige Spuren hinterlassen, anhand derer sie identifiziert werden können. Die Daten wurden mit einem Klassifizierungsalgorithmus generiert, der manchmal einige der Minderheitenclients vertauscht (siehe [hier](https://twitter.com/sproulM_/status/1440512518242197516) für weitere Einzelheiten). Im obigen Diagramm werden diese mehrdeutigen Klassifizierungen mit einem Entweder-Oder-Label behandelt (z. B. Nimbus/Teku). Nichtsdestotrotz ist es klar, dass die Mehrheit des Netzwerks Prysm verwendet. Bei den Daten handelt es sich um eine Momentaufnahme über einen festen Satz von Blöcken (in diesem Fall Beacon-Blöcke in den Slots 2048001 bis 2164916), und die Dominanz von Prysm war zeitweise höher, über 68 %. Obwohl es sich nur um Momentaufnahmen handelt, vermitteln die Werte im Diagramm einen guten allgemeinen Eindruck vom aktuellen Stand der Client-Vielfalt. + +Aktuelle Daten zur Client-Vielfalt für die Konsensebene sind jetzt unter [clientdiversity.org](https://clientdiversity.org/) verfügbar. + +## Ausführungsebene {#execution-layer} + +Bisher hat sich die Diskussion über die Client-Vielfalt hauptsächlich auf die Konsensschicht konzentriert. Auf den Ausführungsclient [Geth](https://geth.ethereum.org) entfallen jedoch derzeit rund 85 % aller Knoten. Dieser Prozentsatz ist aus denselben Gründen problematisch wie bei den Konsensclients. Zum Beispiel könnte ein Fehler in Geth, der die Transaktionsabwicklung oder die Konstruktion der Ausführungsnutzlast betrifft, dazu führen, dass Konsensclients problematische oder fehlerhafte Transaktionen abschließen. Daher wäre Ethereum sicherer mit einer gleichmäßigeren Verteilung der Ausführungsclients, idealerweise mit keinem Client, der mehr als 33 % des Netzwerks repräsentiert. + +## Verwenden eines Minderheitenclients {#use-minority-client} + +Um die Client-Vielfalt zu verbessern, müssen nicht nur einzelne Nutzer Minderheitenclients wählen, sondern auch Mining-/Validatoren-Pools und Institutionen wie die großen dApps und Börsen, um ihre Clients zu wechseln. Allerdings können alle Nutzer ihren Teil dazu beitragen, das derzeitige Ungleichgewicht auszugleichen und die Nutzung der gesamten verfügbaren Ethereum-Software zu forcieren. Nach der Zusammenführung müssen alle Knotenbetreiber einen Ausführungsclient und einen Konsensclient betreiben. Die Wahl von Kombinationen der unten vorgeschlagenen Clients wird dazu beitragen, die Client-Vielfalt zu erhöhen. + +### Ausführungs-Clients {#execution-clients} + +[Besu](https://www.hyperledger.org/use/besu) + +[Nethermind](https://downloads.nethermind.io/) + +[Erigon](https://github.com/ledgerwatch/erigon) + +[Go-Ethereum](https://geth.ethereum.org/) + +### Konsens-Clients {#consensus-clients} + +[Nimbus](https://nimbus.team/) + +[Lighthouse](https://github.com/sigp/lighthouse) + +[Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) + +[Lodestar](https://github.com/ChainSafe/lodestar) + +[Prysm](https://docs.prylabs.network/docs/getting-started) + +Technisch versierte Nutzer können dazu beitragen, diesen Prozess zu beschleunigen, indem sie mehr Anleitungen und Dokumentationen für Minderheitenclients schreiben und ihre Kollegen, die Knoten betreiben, ermutigen, von den dominanten Clients wegzugehen. Anleitungen für den Wechsel zu einem Minderheitskonsensclient finden Sie auf [clientdiversity.org](https://clientdiversity.org/). + +## Dashboards für Client-Vielfalt {#client-diversity-dashboards} + +Verschiedene Dashboards geben Echtzeit-Statistiken zur Client-Vielfalt für die Ausführungs- und Konsensebene. + +**Konsensebene:** + +- [Rated.network](https://www.rated.network/) +- [clientdiversity.org](https://clientdiversity.org/) **Ausführungsebene:** + +- [execution-diversity.info](https://execution-diversity.info/) +- [Ethernodes](https://ethernodes.org/) + +## Weiterführende Informationen {#further-reading} + +- [Client-Vielfalt auf der Konsensebene von Ethereum](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) +- [Ethereum-Zusammenführung: Führen Sie den Mehrheitsclient auf eigene Gefahr aus!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _Dankrad Fiest, 24. März 2022_ +- [Bedeutung der Client-Vielfalt](https://our.status.im/the-importance-of-client-diversity/) +- [Liste der Ethereum-Knotendienste](https://ethereumnodes.com/) +- [Die „Fünf Gründe“ für das Problem der Client-Vielfalt](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08) +- [Ethereum-Vielfalt und wie man sie löst (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU) +- [clientdiversity.org](https://clientdiversity.org/) + +## Verwandte Themen {#related-topics} + +- [Einen Ethereum-Knoten betreiben](/run-a-node/) +- [Knotenpunkte und Clients](/developers/docs/nodes-and-clients/) diff --git a/src/content/translations/de/developers/docs/nodes-and-clients/eth1eth2client.png b/src/content/translations/de/developers/docs/nodes-and-clients/eth1eth2client.png new file mode 100644 index 0000000000000000000000000000000000000000..205f636b3a2c6f266788e625e6a32589e5a7bc94 GIT binary patch literal 140780 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 literal 0 HcmV?d00001 diff --git a/src/content/translations/de/developers/docs/nodes-and-clients/index.md b/src/content/translations/de/developers/docs/nodes-and-clients/index.md index e492e86ae92..534574fc80b 100644 --- a/src/content/translations/de/developers/docs/nodes-and-clients/index.md +++ b/src/content/translations/de/developers/docs/nodes-and-clients/index.md @@ -1,313 +1,273 @@ --- title: Nodes und Clients -description: Eine Übersicht über Ethereum-Nodes und Client-Software, wie eine Node eingerichtet wird und warum du dies tun solltest. +description: Eine Übersicht über Ethereum-Nodes und Client-Software, wie eine Node eingerichtet wird und warum Sie dies tun sollten. lang: de sidebarDepth: 2 --- -Ethereum ist ein verteiltes Netzwerk von Computern, auf denen Software (sogenannte Nodes) läuft, die Blöcke und Transaktionsdaten verifizieren kann. Du benötigst eine Anwendung, bekannt als Client, auf deinem Gerät, um einen Node zu "betreiben". +Ethereum ist ein verteiltes Netzwerk von Computern (bekannt als Nodes), auf denen Software ausgeführt wird, um Blöcke und Transaktionsdaten zu verifizieren. Die Software muss auf Ihrem Computer ausgeführt werden, um ihn in einen Ethereum-Knoten zu verwandeln. Für die Bildung eines Knotens sind zwei separate Softwarekomponenten (die sogenannten „Clients“) erforderlich. ## Voraussetzungen {#prerequisites} -Du solltest das Konzept eines Peer-to-Peer-Netzwerks und die [Grundlagen der EVM](/developers/docs/evm/) verstehen, bevor du tiefer eintauchst und deine eigene Instanz eines Ethereum-Clients startest. Lies unsere [Einführung in Ethereum](/developers/docs/intro-to-ethereum/). +Sie sollten das Konzept eines Peer-to-Peer-Netzwerks und die [Grundlagen der EVM](/developers/docs/evm/) verstehen, bevor Sie tiefer eintauchen und Ihre eigene Instanz eines Ethereum-Clients starten. Lesen Sie unsere [Einführung in Ethereum](/developers/docs/intro-to-ethereum/). -Wenn dir das Thema Nodes neu ist, empfehlen wir dir, zunächst unsere benutzerfreundliche Einführung zum [Betreiben eines Ethereum-Nodes](/run-a-node) zu lesen. +Wenn Ihnen das Thema Nodes neu ist, empfehlen wir Ihnen, zunächst unsere benutzerfreundliche Einführung zum [Betreiben eines Ethereum-Nodes](/run-a-node) zu lesen. ## Was sind Nodes und Clients? {#what-are-nodes-and-clients} -"Node" bezieht sich auf eine laufende Client-Software. Ein Client ist eine Implementierung von Ethereum, die alle Transaktionen in jedem Block prüft und das Netzwerk somit sicher und die Daten genau hält. +Ein „Node“ ist jede Instanz von Ethereum-Client-Software, die mit anderen Computern verbunden ist, auf denen ebenfalls Ethereum-Software ausgeführt wird und so ein Netzwerk bildet. Ein Client ist eine Implementierung von Ethereum, die Daten entsprechend der Protokollregeln verifiziert und das Netzwerk sicher hält. Ein Knoten muss zwei Clients ausführen: einen Konsens- und einen Ausführungsclient. -Du kannst eine Echtzeitansicht des Ethereum-Netzwerks sehen, indem du dir diese [Karte der Nodes](https://etherscan.io/nodetracker) ansiehst. +- Der Ausführungsclient (auch als Execution Engine, EL-Client oder früher Eth1-Client bekannt) empfängt neue Transaktionen, die im Netzwerk übertragen werden, führt sie im EVM aus und verwaltet den aktuellen Zustand und die Datenbank aller aktuellen Ethereum-Daten. +- Der Konsensclient (auch als Beacon-Node, CL-Client oder früher Eth2-Client bekannt) implementiert den Proof-of-Stake-Konsensalgorithmus, der es dem Netzwerk ermöglicht, basierend auf validierten Daten des Ausführungsclients eine Einigung zu erzielen. Darüber hinaus gibt es einen dritten Teil der Software, den so genannten „Validator“, der dem Konsensclient hinzugefügt werden kann und es einem Knoten ermöglicht, sich an der Sicherung des Netzwerks zu beteiligen. -Es gibt viele [Ethereum-Clients](/developers/docs/nodes-and-clients/#execution-clients) in einer Vielzahl von Programmiersprachen wie Go, Rust, JavaScript, Typescript, Python, C# .NET, Nim und Java. Was diese Implementierungen gemeinsam haben, ist dass sie alle einer formalen Spezifikation folgen (ursprünglich das [Ethereum Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf)). Diese Spezifikation bestimmt, wie das Ethereum-Netzwerk und die Blockchain funktionieren. +Diese Clients arbeiten zusammen, um den aktuellen Stand der Ethereum Chain zu verfolgen und den Nutzern die Interaktion mit dem Ethereum-Netzwerk zu ermöglichen. Der modulare Aufbau mit mehreren Softwarekomponenten, die zusammenarbeiten, wird als [„gekapselte Komplexität“](https://vitalik.ca/general/2022/02/28/complexity.html)bezeichnet. Dieser Ansatz erleichterte die nahtlose Ausführung [der Zusammenführung](/roadmap/merge), macht die Wartung und Entwicklung von Client-Software einfacher und ermöglicht die Wiederverwendung einzelner Clients, beispielsweise im [Layer-2-Ökosystem](/layer-2/). -![Ausführungs-Client](./client-diagram.png) Vereinfachtes Diagramm dessen, was einen Ethereum-Client ausmacht. +![Gekoppelte Ausführungs und Konsensclients](./eth1eth2client.png) Vereinfachtes Diagramm eines gekoppelten Ausführungs- und Konsensclients. -## Node-Typen {#node-types} - -Wenn du [einen eigenen Node](/developers/docs/nodes-and-clients/run-a-node/) betreiben willst, solltest du verstehen, dass es verschiedene Arten von Nodes gibt, die Daten unterschiedlich konsumieren. In der Tat können Clients 3 verschiedene Arten von Nodes betreiben: Light, Full und Archive. Es gibt auch Optionen für verschiedene Synchronisierungsstrategien, die eine schnellere Synchronisationszeit ermöglichen. Die Synchronisierung bezieht sich darauf, wie schnell sie die aktuellsten Informationen über Ethereums Zustand erhalten kann. - -### Full-Node {#full-node} - -- Speichert die kompletten Blockchain-Daten. -- Beteiligt sich an der Blockprüfung, überprüft alle Blöcke und Zustände. -- Alle Zustände können von einem Full-Node abgeleitet werden. -- Bedient das Netzwerk und liefert Daten auf Anfrage. +### Client-Diversität {#client-diversity} -### Light-Node {#light-node} +Sowohl [Ausführungsclients](/developers/docs/nodes-and-clients/#execution-clients) als auch [Konsensclients](/developers/docs/nodes-and-clients/#consensus-clients) existieren in einer Vielzahl von Programmiersprachen, die von verschiedenen Teams entwickelt wurden. -- Speichert nur die Header-Kette und fordert alles andere an. -- Kann die Gültigkeit der Daten gegen die Zustandswurzeln in den Block-Headern überprüfen. -- Nützlich für Geräte mit geringer Kapazität, wie Embedded-Geräte oder Mobiltelefone, die es sich nicht leisten können, Gigabyte an Blockchain-Daten zu speichern. - -### Archive-Node {#archive-node} - -- Speichert alles wie im Full-Node und baut zusätzlich ein Archiv von historischen Zuständen auf. Wird benötigt, wenn du z. B. einen Kontostand bei Block #4.000.000 abfragen oder einfach und zuverlässig [deine eigenen Transaktionen testen willst, ohne sie mit OpenEthereum](https://openethereum.github.io/JSONRPC-trace-module#trace_callmany) zu minen. -- Diese Daten stellen Einheiten von Terabytes dar, was Archive-Nodes für durchschnittliche Benutzer weniger attraktiv macht, aber für Dienste wie Blockexplorer, Wallet-Hersteller und die Blockchainanalyse nützlich sein kann. - -Das Synchronisieren von Clients in jedem anderen Modus als dem Archiv führt zu reduzierten (pruned) Blockchain-Daten. Das bedeutet, es gibt kein Archiv mit allen historischen Zuständen, aber der vollständige Node ist in der Lage, diese bei Bedarf zu erstellen. - -## Warum sollte ich einen Ethereum-Node betreiben? {#why-should-i-run-an-ethereum-node} +Wenn mehrere Client-Implementierungen vorhanden sind, kann das Netzwerk gestärkt werden, indem die Abhängigkeit von einer einzigen Codebasis verringert wird. Das ideale Ziel besteht darin, Vielfalt zu erreichen, ohne dass ein einziger Client das Netzwerk dominiert, um somit potenzielle Einzelstellen von Fehlerquellen zu eliminieren. Die Vielfalt der Sprachen lädt auch eine breitere Entwicklergemeinschaft ein und ermöglicht es ihnen, Integrationen in ihrer bevorzugten Sprache zu erstellen. -Durch das Ausführen eines Nodes kannst du Ethereum vertraulich und privat nutzen, während das Ökosystem unterstützt wird. +Erfahren Sie mehr über [Client-Vielfalt](/developers/docs/nodes-and-clients/client-diversity/). -### Vorteile für dich {#benefits-to-you} +Diese Implementierungen haben gemeinsam, dass sie alle einer einzigen Spezifikation folgen. Spezifikationen legen fest, wie das Ethereum-Netzwerk und die Blockchain funktionieren. Jedes technische Detail ist definiert, und die Spezifikationen können wie folgt gefunden werden: -Wenn du deinen eigenen Node betreibst, kannst du Ethereum auf eine wirklich private, autarke und vertrauenslose Weise verwenden. Du musst dem Netzwerk nicht vertrauen, weil du die Daten mit deinem Client selbst überprüfen kannst. "Nicht vertrauen, überprüfen" ist ein beliebtes Mantra der Blockchain. +- Ursprünglich wurde das [Ethereum Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf) erstellt +- [Ausführungsspezifikationen](https://github.com/ethereum/execution-specs/) +- [Konsensspezifikationen](https://github.com/ethereum/consensus-specs) +- [EIPs](https://eips.ethereum.org/), die bei verschiedenen [Netzwerk-Upgrades](/history/) implementiert wurden -- Dein Node überprüft alle Transaktionen und Blöcke selbstständig gegen Konsensregeln. Das bedeutet, du musst dich nicht auf andere Nodes im Netzwerk verlassen oder ihnen vollständig vertrauen. -- Du musst deine Adressen und Salden nicht an zufälligen Nodes veröffentlichen. Alles kann mit deinem eigenen Client überprüft werden. -- Deine dApp kann sicherer und privater sein, wenn du einen eigenen Node verwendest. [MetaMask](https://metamask.io), [MyEtherWallet](https://myetherwallet.com) und einige andere Wallets können einfach mit deinem eigenen lokalen Node verknüpft werden. -- Du kannst deine eigenen RPC-Endpunkte programmieren. -- Du kannst dich mit deinem Node über **Interprozesskommunikation (IPC)** verbinden oder den Node umschreiben, um dein Programm als Plugin zu laden. Das garantiert eine niedrige Latenzzeit, die erforderlich ist, um deine Transaktionen so schnell wie möglich zu ersetzen (d. h. Frontrunning). +### Verfolgung von Knoten im Netzwerk {#network-overview} -![Wie du auf Ethereum über deine Anwendung und Nodes zugreifst](./nodes.png) +Es gibt mehrere Tracker, die einen Echtzeit-Überblick über die Knoten im Ethereum-Netzwerk bieten. Beachten Sie, dass diese Crawler aufgrund der Natur dezentraler Netzwerke nur einen begrenzten Überblick über das Netzwerk bieten können und möglicherweise unterschiedliche Ergebnisse melden. -### Netzwerkvorteile {#network-benefits} +- [Karte der Knotenpunkte](https://etherscan.io/nodetracker) von Etherscan +- [Ethernodes](https://ethernodes.org/) von Bitfly +- [Crawler für Ethereum-Knoten](https://crawler.ethereum.org/) +- [Nodewatch](https://www.nodewatch.io/) von Chainsafe, Crawler für Konsensknoten -Eine Vielzahl von Nodes ist wichtig für Ethereums Gesundheit, Sicherheit und operative Belastbarkeit. - -- Sie bieten Light-Clients Zugriff auf Blockchain-Daten, die davon abhängen. Bei hohen Nutzungspitzen muss es genug vollständige Knoten geben, um die Synchronisation von Light-Nodes zu unterstützen. Light-Nodes speichern nicht die gesamte Blockchain, sondern verifizieren die Daten über die [Zustandswurzel in Block-Headern](/developers/docs/blocks/#block-anatomy). Sie können bei Bedarf weitere Informationen von Blöcken anfragen. -- Full-Nodes erzwingen die Konsensregeln für den Proof-of-Work, so dass sie nicht dazu gebracht werden können, Blöcke zu akzeptieren, die den Regeln nicht folgen. Dies bietet zusätzliche Sicherheit im Netzwerk, denn wenn alle Nodes Light-Nodes wären, die keine vollständige Verifizierung durchführen, könnten Miner das Netzwerk angreifen und zum Beispiel Blöcke mit höheren Belohnungen erstellen. - -Wenn du einen Full-Node betreibst, profitiert das gesamte Ethereum Netzwerk. - -## Betreiben eines eigenen Nodes {#running-your-own-node} - -Hast du Interesse, deinen eigenen Ethereum-Client zu betreiben? - -Eine anfängerfreundliche Einführung findest du auf unserer [Node-Seite](/run-a-node). +## Node-Typen {#node-types} -Wenn du eher ein technischer Benutzer bist, kannst du [einen eigenen Node](/developers/docs/nodes-and-clients/run-a-node/) mit der Kommandozeile aufbauen. +Wenn Sie [Ihren eigenen Knoten betreiben möchten](/developers/docs/nodes-and-clients/run-a-node/), sollten Sie verstehen, dass es verschiedene Arten von Knoten gibt, die Daten unterschiedlich konsumieren. Die Clients können drei verschiedene Arten von Knoten ausführen: leichte, vollständige und Archivknoten. Es gibt auch Optionen für verschiedene Synchronisierungsstrategien, die eine schnellere Synchronisierungszeit ermöglichen. Die Synchronisierung bezieht sich darauf, wie schnell sie die aktuellsten Informationen über Ethereums Zustand erhalten kann. -### Projekte {#projects} +### Vollständige Knoten {#full-node} -[**Wähle einen Client aus und folge den Anweisungen.**](#clients) +Vollständige Knoten führen eine Block-für-Block-Validierung der Blockchain durch, einschließlich des Herunterladens und Verifizierens des Block-Inhalts und der Statusdaten für jeden Block. Es gibt verschiedene Klassen von vollständigen Knoten – einige beginnen mit dem Genesis-Block und verifizieren jeden einzelnen Block in der gesamten Geschichte der Blockchain. Andere beginnen ihre Verifizierung bei einem neueren Block, den sie für gültig halten (z. B. Geths „Snap Sync“). Unabhängig davon, wo die Verifizierung beginnt, behalten vollständige Knoten nur eine lokale Kopie relativ aktueller Daten (in der Regel die jüngsten 128 Blöcke), so dass ältere Daten gelöscht werden können, um Speicherplatz zu sparen. Ältere Daten können wiederhergestellt werden, wenn sie benötigt werden. -**Ethnode -** **_Betreibe einen Ethereum-Node (Geth oder OpenEthereum) für lokale Entwicklung._** +- Speichert die vollständigen Blockchain-Daten (obwohl diese regelmäßig „geprunt“ werden, so dass ein vollständiger Knoten nicht alle Zustandsdaten bis zurück zur Genesis speichert) +- Beteiligt sich an der Blockprüfung, überprüft alle Blöcke und Zustände. +- Alle Status können entweder aus dem lokalen Speicher abgerufen oder von einem Full Node aus „Snapshots“ neu generiert werden. +- Bedient das Netzwerk und liefert Daten auf Anfrage. -- [GitHub](https://github.com/vrde/ethnode) +### Archivierungsnode {#archive-node} -**dAppNode -** **_Eine Betriebssystem-GUI für den Betrieb von Web3-Nodes, einschließlich Ethereum und der Beacon Chain, auf einer eigenen Maschine._** +Archivierungsnodes sind Full Nodes, die jeden Block seit Genesis verifizieren und niemals irgendwelche heruntergeladenen Daten löschen. -- [dappnode.io](https://dappnode.io) +- Speichert alles im Full Node und baut zusätzlich ein Archiv von vergangenen Zuständen auf. Sie werden wird benötigt, wenn Sie z. B. einen Kontostand im Block #4.000.000 abfragen oder einfach und zuverlässig Ihre eigenen Transaktionen testen möchten, ohne sie mithilfe von Tracing zu schürfen. +- Diese Daten werden in Einheiten von Terabytes dargestellt, was die Archivierungsknoten für den Durchschnittsnutzer weniger attraktiv macht, jedoch für Dienste wie Blockexplorer, Wallet-Anbieter und Chain-Analytics nützlich sein kann. -### Ressourcen {#resources} +Das Synchronisieren von Clients in jedem anderen Modus als dem Archiv führt zu reduzierten (pruned) Blockchain-Daten. Das bedeutet, es gibt kein Archiv mit allen vergangenen Zuständen, der vollständige Node ist jedoch in der Lage, diese bei Bedarf zu erstellen. -- [Running Ethereum Full Nodes: A Complete Guide](https://medium.com/coinmonks/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _Nov 7, 2019 - Justin Leroux_ -- [Node Configuration Cheat Sheet](https://dev.to/5chdn/ethereum-node-configuration-modes-cheat-sheet-25l8) _Jan 5, 2019 - Afri Schoedon_ -- [How To Install & Run a Geth Node](https://www.quiknode.io/guides/infrastructure/how-to-install-and-run-a-geth-node) _Oct 4, 2020 - Sahil Sen_ -- [How To Install & Run a OpenEthereum (fka. Parity) Node](https://www.quiknode.io/guides/infrastructure/how-to-run-a-openethereum-ex-parity-client-node) _Sept 22, 2020 - Sahil Sen_ +Erfahren Sie mehr über [Archivierungsnodes](/developers/docs/nodes-and-clients/archive-nodes). -## Alternativen {#alternatives} +### Leichte Nodes {#light-node} -Der Betrieb eines eigenen Nodes kann schwierig sein und du musst nicht immer eine eigene Instanz betreiben. In diesem Fall kannst du einen Drittanbieter wie [Infura](https://infura.io), [Alchemy](https://alchemyapi.io) oder [QuikNode](https://www.quiknode.io) verwenden. Alternativ dazu ist [ArchiveNode](https://archivenode.io/) ein von der Community finanzierter Archivknoten, der unabhängigen Entwicklern, die sich dies sonst nicht leisten könnten, Archivdaten auf der Ethereum-Blockchain zur Verfügung stellen soll. Einen Überblick über die Verwendung dieser Dienste findest du unter [Nodes als Dienst](/developers/docs/nodes-and-clients/nodes-as-a-service/). +Anstatt jeden Block herunterzuladen, laden Light Nodes nur Block-Header herunter. Diese Header enthalten zusammenfassende Informationen über den Inhalt der Blöcke. Alle anderen Informationen, die der leichte Node benötigt, werden von einem Full Node angefordert. Der leichte Node kann dann die empfangenen Daten unabhängig mit den Zustandswurzeln in den Block-Headern abgleichen. Leichte Nodes ermöglichen es Nutzern, am Ethereum-Netzwerk teilzunehmen, ohne die leistungsstarke Hardware oder hohe Bandbreite zu benötigen, die für den Betrieb von Full Nodes erforderlich sind. Irgendwann könnten leichte Nodes auf Mobiltelefonen oder eingebetteten Geräten laufen. Leichte Nodes nehmen nicht am Konsens teil (d.h. sie können nicht minen/validieren), sie können jedoch auf die Ethereum-Blockchain mit denselben Funktionen und Sicherheitsgarantien zugreifen wie ein Full Node. -Wenn jemand in deiner Community einen Ethereum-Node mit einer öffentlichen API betreibt, kannst du deine Light Wallets (wie MetaMask) auf einen Community-Node [via Custom RPC](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node) verweisen lassen und so mehr Privatsphäre erreichen als mit einer zufälligen vertrauenswürdigen Drittpartei. +Leichte Clients sind ein Bereich, in dem Ethereum aktiv entwickelt wird. Es wird erwartet, dass wir bald neue leichte Clients für die Konsens- und Ausführungsebene entwickeln werden. Es gibt potenziell auch Wege, leichte Client-Daten über das [Gossip-Netzwerk](https://www.ethportal.net/) bereitzustellen. Dies ist vorteilhaft, da das Gossip-Netzwerk ein Netzwerk von leichten Nodes unterstützen könnte, ohne dass Full Nodes zur Bedienung von Anfragen erforderlich sind. -Wenn du andererseits einen Client betreibst, kannst du ihn mit deinen Freunden teilen, die ihn vielleicht brauchen. +Ethereum unterstützt noch keine große Population von leichten Nodes, jedoch ist die Unterstützung von leichten Nodes ein Bereich, der sich in naher Zukunft voraussichtlich schnell entwickeln wird. Insbesondere Clients wie [Nimbus](https://nimbus.team/), [Helios](https://github.com/a16z/helios) und [LodeStar](https://lodestar.chainsafe.io/) sind derzeit stark auf leichte Nodes ausgerichtet. -## Ausführungs-Clients (früher "Eth1-Clients") {#execution-clients} +## Warum sollte ich einen Ethereum-Node betreiben? {#why-should-i-run-an-ethereum-node} -Die Ethereum-Community unterhält mehrere quelloffene Ausführungs-Clients (früher als "Eth1-Clients" oder einfach "Ethereum-Clients" bezeichnet), die von verschiedenen Teams in unterschiedlichen Programmiersprachen entwickelt wurden. Dies macht das Netzwerk stärker und vielfältiger. Das ideale Ziel ist es, Vielfalt zu erreichen, ohne dass ein Client dominiert, um jede Art von Single Point of Failure zu reduzieren. +Der Betrieb eines eigenen Knotens ermöglicht es Ihnen, Ethereum auf private, autarke und vertrauenswürdige Weise zu nutzen und gleichzeitig das Netz zu unterstützen, da es so robuster und dezentraler wird. -Diese Tabelle gibt einen Überblick über die verschiedenen Clients. Sie alle bestehen [Client-Tests](https://github.com/ethereum/tests) und werden aktiv gewartet, um mit Netzwerk-Upgrades auf dem neuesten Stand zu bleiben. +### Ihre Vorteile {#benefits-to-you} -| Client | Sprache | Betriebssystem | Netzwerke | Sync-Strategien | Zustandsreduzierung | -| ----------------------------------------------------------------------- | -------- | --------------------- | -------------------------------------------- | ------------------- | ------------------- | -| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, MacOS | Mainnet, Görli, Rinkeby, Ropsten | Snap, Full | Archive, Pruned | -| [Nethermind](http://nethermind.io/) | C#, .NET | Linux, Windows, MacOS | Mainnet, Görli, Ropsten, Rinkeby und weitere | Fast, Beam, Archive | Archive, Pruned | -| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, MacOS | Mainnet, Rinkeby, Ropsten, Görli und weitere | Fast, Full | Archive, Pruned | -| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, MacOS | Mainnet, Görli, Rinkeby, Ropsten | Full | Archive, Pruned | -| [OpenEthereum (veraltet)](https://github.com/openethereum/openethereum) | Rust | Linux, Windows, MacOS | Mainnet, Kovan, Ropsten und weitere | Warp, Full | Archive, Pruned | +Der Betrieb eines eigenen Knotens erlaubt es Ihnen, Ethereum auf private, autarke und vertrauenswürdige Weise zu nutzen. Sie müssen dem Netzwerk nicht vertrauen, da Sie die Daten mit Ihrem Client selbst überprüfen können. „Nicht vertrauen, überprüfen“ ist ein beliebtes Mantra der Blockchain. -**Beachte, dass OpenEthereum [veraltet](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) ist und nicht mehr gewartet wird.** Verwende es mit Vorsicht und wechsle lieber zu einer anderen Client-Implementierung. +- Ihr Node überprüft alle Transaktionen und Blöcke selbstständig anhand der Konsensregeln. Das bedeutet, dass Sie sich nicht auf andere Nodes im Netzwerk verlassen oder ihnen vollständig vertrauen müssen. +- Sie können ein Ethereum-Wallet mit Ihrem eigenen Knoten verwenden. Sie können dApps sicherer und privater nutzen, da Sie Ihre Adressen und Guthaben nicht an Vermittler weitergeben müssen. Alles kann mit Ihrem eigenen Client überprüft werden. [MetaMask](https://metamask.io), [Frame](https://frame.sh/) und [viele andere Wallets](/wallets/find-wallet/) bieten einen RPC-Import, der es ihnen ermöglicht, Ihren Node zu nutzen. +- Sie können andere Dienste betreiben und selbst hosten, die auf Daten von Ethereum angewiesen sind. Das kann zum Beispiel ein Beacon-Chain-Validator, Software wie Layer 2, Infrastruktur, Block-Explorer, Zahlungsprozessoren usw. sein. +- Sie können Ihre eigenen benutzerdefinierten [RPC-Endpunkte](/developers/docs/apis/json-rpc/) bereitstellen. Sie könnten diese Endpunkte sogar öffentlich anbieten, um der Community zu helfen, große zentrale Anbieter zu vermeiden. +- Sie können sich mit Ihrem Knoten über **Interprozesskommunikation (IPC)** verbinden oder den Knoten umschreiben, um Ihr Programm als Plugin zu laden. Dies garantiert eine niedrige Latenzzeit, was sehr hilfreich ist, z. B. bei der Verarbeitung großer Datenmengen mit web3-Bibliotheken oder wenn Sie Ihre Transaktionen so schnell wie möglich ersetzen müssen (z. B. Frontrunning). +- Sie können ETH direkt einsetzen, um das Netzwerk zu sichern und Prämien zu verdienen. Siehe [Solo-Staking](/staking/solo/) für den Einstieg. -Weitere Informationen zu unterstützten Netzwerken findest du unter [Ethereum-Netzwerke](/developers/docs/networks/). +![So greifen Sie über Ihre Anwendung und Nodes auf Ethereum zu](./nodes.png) -### Vorteile verschiedener Implementierungen {#advantages-of-different-implementations} +### Vorteile des Netzwerks {#network-benefits} -Jeder Client hat einzigartige Anwendungsfälle und Vorteile, daher solltest du einen auf deinen eigenen Präferenzen basierenden wählen. Die Client-Vielfalt ermöglicht die Fokussierung der Implementierungen auf verschiedene Funktionen und Benutzergruppen. Du kannst einen Client basierend auf Features, Support, Programmiersprache oder Lizenzen auswählen. +Eine Vielzahl von Nodes ist wichtig für die Gesundheit, Sicherheit und operative Belastbarkeit von Ethereum. -#### Go Ethereum {#geth} +- Full Nodes setzen die Konsensregeln durch, sodass sie nicht dazu verleitet werden können, Blöcke zu akzeptieren, die nicht den Regeln entsprechen. Dies sorgt für zusätzliche Sicherheit im Netzwerk, denn wenn alle Knoten leichte Nodes wären, die keine vollständige Verifizierung durchführen, könnten Validatoren das Netzwerk angreifen. +- Im Falle eines Angriffs, der die kryptoökonomischen Verteidigungsmechanismen von [Proof-of-Stake](/developers/docs/consensus-mechanisms/pos/#what-is-pos) überwindet, kann eine „soziale Wiederherstellung“ durch Full Nodes erfolgen, die sich dafür entscheiden, der „ehrlichen“ Chain zu folgen. +- Mehr Knoten im Netzwerk führen zu einem vielfältigeren und robusteren Netzwerk, dem ultimativen Ziel der Dezentralisierung, das ein zensurresistentes und zuverlässiges System ermöglicht. +- Full Nodes bieten den Zugang zu Blockchain-Daten für leichte Clients, die darauf angewiesen sind. Light Nodes speichern nicht die gesamte Blockchain, sondern verifizieren die Daten über die [Zustandswurzeln in den Block-Headern](/developers/docs/blocks/#block-anatomy). Sie können bei Bedarf weitere Informationen von Full Nodes anfordern. -Go Ethereum (kurz Geth) ist eine der ursprünglichen Implementierungen des Ethereum-Protokolls. Derzeit ist es der am weitesten verbreitete Client mit der größten Benutzerbasis und der größten Vielfalt an Tools für Benutzer und Entwickler. Es ist in Go geschrieben, vollständig Open Source und unter der GNU LGPL v3 lizenziert. +Wenn Sie einen Full Node betreiben, profitiert das gesamte Ethereum-Netzwerk davon, auch wenn Sie keinen Validator betreiben. -#### OpenEthereum {#openethereum} - -OpenEthereum ist ein schneller, funktionsreicher und fortgeschrittener CLI-basierter Ethereum-Client. Es wurde entwickelt, um die notwendige Infrastruktur für schnelle und zuverlässige Dienste bereitzustellen, die eine schnelle Synchronisierung und maximale Laufzeit erfordern. Das Ziel von OpenEthereum ist es, der schnellste, leichteste und sicherste Ethereum-Client zu sein. Es bietet eine saubere, modulare Codebase für +## Betreiben eines eigenen Nodes {#running-your-own-node} -- eine einfache Anpassung, -- eine leichte Integration in Dienstleistungen oder Produkte, -- einen minimalen Arbeitsspeicher und Speicherfußabdruck. +Haben Sie Interesse, Ihren eigenen Ethereum-Client zu betreiben? -OpenEthereum wird unter Verwendung der neuesten Rust-Programmiersprache entwickelt und unter GPLv3 lizenziert. +Eine anfängerfreundliche Einführung finden Sie auf unserer Seite [Betreiben eines Knotens](/run-a-node). -**Beachte, dass OpenEthereum [veraltet](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) ist und nicht mehr gewartet wird.** Verwende es mit Vorsicht und wechsle lieber zu einer anderen Client-Implementierung. +Wenn Sie eher ein technisch erfahrener Benutzer sind, finden Sie hier weitere Details und Optionen, wie Sie [Ihren eigenen Knoten einrichten können](/developers/docs/nodes-and-clients/run-a-node/). -#### Nethermind {#nethermind} +## Alternativen {#alternatives} -Nethermind ist eine Ethereum-Implementierung, die mit dem C# .NET Technologie-Stack erstellt wurde, der auf allen wichtigen Plattformen, einschließlich ARM, läuft. Es bietet eine großartige Leistung mit +Die Einrichtung eines eigenen Knotens kann Sie Zeit und Ressourcen kosten, aber Sie müssen nicht immer eine eigene Instanz betreiben. In diesem Fall können Sie sich an einen externen API-Anbieter wenden. Einen Überblick zur Verwendung dieser Dienste finden Sie unter [Nodes als Dienstleistung](/developers/docs/nodes-and-clients/nodes-as-a-service/). -- einer optimierten virtuellen Maschine, -- Zustandszugriff, -- Netzwerken und reichhaltigen Funktionen wie Prometheus/Grafana-Dashboards, Seq Enterprise Logging Support, JSON RPC Tracing und Analytics-Plugins. +Wenn jemand in Ihrer Community einen Ethereum-Knoten mit öffentlichen APIs betreiben, können Sie Ihre Wallet in einen Community-Knoten über Custom RPC einbinden, um Ihre Privatsphäre besser zu schützen als bei der zufälligen Auswahl eines vertrauenswürdigen Dritten. -Nethermind bietet auch eine [detaillierte Dokumentation](https://docs.nethermind.io), starke Entwicklerunterstützung, eine Online-Community und 24/7-Support für Premiumnutzer. +Wenn Sie andererseits einen Client betreiben, können Sie ihn mit Ihren Freunden teilen, die eventuell Bedarf haben. -#### Besu {#besu} +## Ausführende Clients {#execution-clients} -Hyperledger Besu ist ein unternehmensorientierter Ethereum-Client für öffentliche und private Netzwerke. Er bietet alle Funktionen des Ethereum-Mainnets, von Tracing bis GraphQL, hat ein umfangreiches Monitoring und wird von ConsenSys unterstützt, sowohl in offenen Community-Kanälen als auch durch kommerzielle SLAs für Unternehmen. Er ist in Java geschrieben und ist durch Apache 2.0 lizenziert. +Die Ethereum-Community unterhält mehrere quelloffene Ausführungsclients (früher als „Eth1-Clients“ oder einfach „Ethereum-Clients“ bezeichnet), die von verschiedenen Teams in unterschiedlichen Programmiersprachen entwickelt wurden. Dadurch wird das Netz stärker und [vielfältiger](/developers/docs/nodes-and-clients/client-diversity/). Das ideale Ziel ist es, Vielfalt zu erreichen, ohne dass ein Client dominiert, um jede Art von einzelnen Ausfallpunkten zu reduzieren. -#### Erigon {#erigon} +Diese Tabelle gibt einen Überblick über die verschiedenen Clients. Sie alle bestehen [Client-Tests](https://github.com/ethereum/tests) und werden aktiv gewartet, um mit Netzwerk-Upgrades auf dem neuesten Stand zu bleiben. -Erigon, früher bekannt als Erigon, ist eine Abspaltung von Go Ethereum, die auf Geschwindigkeit und Speicherplatzeffizienz ausgerichtet ist. Erigon ist eine komplett neu entwickelte Implementierung von Ethereum, die derzeit in Go geschrieben ist, aber auch in anderen Sprachen implementiert werden soll. Das Ziel von Erigon ist es, eine schnellere, modularere und optimierte Implementierung von Ethereum anzubieten. Es kann eine vollständige Synchronisierung des Archiv-Nodes mit weniger als 2 Tb Speicherplatz in weniger als 3 Tagen durchführen +| Client | Sprache | Betriebssystem | Netzwerke | Synchronisationsstrategien | Zustandsreduzierung | +| ----------------------------------------------- | -------- | --------------------- | ------------------------------------ | ------------------------------- | ------------------- | +| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, MacOS | Mainnet, Sepolia, Goerli | Snap, Full | Archiv, Reduziert | +| [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 | -### Synchronisationsmodi {#sync-modes} +Weitere Informationen zu unterstützten Netzwerken finden Sie unter [Ethereum-Netzwerke](/developers/docs/networks/). -Um die aktuellen Daten im Netzwerk zu verfolgen und zu überprüfen, muss sich der Ethereum-Client mit dem neuesten Netzwerkstatus synchronisieren. Dazu werden Daten von Peers heruntergeladen, ihre Integrität kryptographisch verifiziert und eine lokale Blockchain-Datenbank aufgebaut. +Jeder Client bietet einzigartige Anwendungsfälle und Vorteile, daher sollten Sie einen basierend auf Ihren eigenen Präferenzen wählen. Die Client-Vielfalt ermöglicht die Fokussierung der Implementierungen auf verschiedene Funktionen und Benutzergruppen. Sie können einen Client basierend auf Funktionen, Support, Programmiersprache oder Lizenzen auswählen. -Die Synchronisationsmodi stellen verschiedene Ansätze für diesen Prozess mit unterschiedlichen Kompromissen dar. Die Clients unterscheiden sich auch in der Implementierung von Synchronisationsalgorithmen. Beziehe dich immer auf die offizielle Dokumentation des von dir gewählten Clients, um Einzelheiten zur Implementierung zu erfahren. +### Besu {#besu} -#### Überblick über die Strategien {#overview-of-strategies} +Hyperledger Besu ist ein Ethereum-Client auf Unternehmensebene für öffentliche und private Netzwerke. Er bietet alle Funktionen des Ethereum-Mainnets, von Tracing bis GraphQL, bietet ein umfangreiches Monitoring und wird von ConsenSys unterstützt, sowohl in offenen Community-Kanälen als auch durch kommerzielle SLA für Unternehmen. Er ist in Java geschrieben und durch Apache 2.0 lizenziert. -Allgemeiner Überblick über die Synchronisierungsansätze, die in Mainnet-Ready-Clients verwendet werden: +Die umfangreiche [Dokumentation](https://besu.hyperledger.org/en/stable/) von Besu führt Sie durch alle Details der Funktionen und Einstellungen. -##### Full sync +### Erigon {#erigon} -Bei full sync werden alle Blöcke (einschließlich Headern, Transaktionen und Quittungen) heruntergeladen und der Zustand der Blockchain inkrementell generiert, indem jeder Block ab Genesis ausgeführt wird. +Erigon, früher bekannt als Turbo-Geth, begann als eine Abspaltung von Go Ethereum, die auf Geschwindigkeit und Speicherplatzeffizienz ausgerichtet ist. Es ist eine komplett neu entwickelte Implementierung von Ethereum, die derzeit in Go geschrieben ist, aber auch in anderen Sprachen implementiert werden kann. Das Ziel von Erigon ist es, eine schnellere, modularere und optimierte Implementierung von Ethereum anzubieten. Es kann eine vollständige Synchronisierung von Archivierungsknoten mit etwa 2 TB Speicherplatz in weniger als 3 Tagen durchführen. -- Minimiert das Vertrauen und bietet höchste Sicherheit, indem jede Transaktion verifiziert wird. -- Bei einer steigenden Anzahl von Transaktionen kann es Tage bis Wochen dauern, alle Transaktionen zu bearbeiten. +### Go Ethereum {#geth} -##### Fast sync +Go Ethereum (kurz Geth) ist eine der ursprünglichen Implementierungen des Ethereum-Protokolls. Derzeit ist es der am weitesten verbreitete Client mit der größten Benutzerbasis und der größten Vielfalt an Tools für Benutzer und Entwickler. Es ist in Go geschrieben, vollständig Open Source und unter der GNU LGPL v3 lizenziert. -Die schnelle Synchronisierung lädt alle Blöcke herunter (einschließlich Headern, Transaktionen und Quittungen), überprüft alle Header, lädt den Zustand herunter und vergleicht ihn mit den Headern. +Erfahren Sie mehr über Geth in der [Dokumentation](https://geth.ethereum.org/docs/). -- Verlässt sich auf die Sicherheit des Konsensmechanismus. -- Die Synchronisierung dauert nur ein paar Stunden. +### Nethermind {#nethermind} -##### Light sync +Nethermind ist eine Ethereum-Implementierung, die mit dem C# .NET Tech-Stack erstellt wurde, unter der LGPL-3.0 lizenziert ist und auf allen wichtigen Plattformen, einschließlich ARM, läuft. Sie bietet eine großartige Leistung mit: -Der Light-Client-Modus lädt alle Block-Header und Blockdaten herunter und prüft einige zufällig. Synchronisiert nur die Spitze der Kette vom vertrauenswürdigen Kontrollpunkt. +- einer optimierten virtuellen Maschine, +- Zustandszugriff, +- Netzwerken und umfassenden Funktionen wie Prometheus/Grafana-Dashboards, Seq Enterprise Protokoll-Support, JSON RPC Tracing- und Analyse-Plugins. -- Ruft nur den neuesten Zustand ab und verlässt sich dabei auf das Vertrauen in die Entwickler und den Konsensmechanismus. -- Der Client ist in wenigen Minuten mit dem aktuellen Netzwerkstatus einsatzbereit. +Nethermind bietet außerdem eine [detaillierte Dokumentation](https://docs.nethermind.io), starke Entwicklerunterstützung, eine Online-Community und Support rund um die Uhr für Premiumnutzer. -[Mehr über Light-Clients](https://www.parity.io/blog/what-is-a-light-client/) +## Konsens-Clients {#consensus-clients} -##### Snap sync +Es gibt mehrere Konsensclients (früher als „Eth2“-Clients bekannt), die dazu da sind, die [Konsens-Upgrades](/roadmap/beacon-chain/) zu unterstützen. Sie sind für die gesamte konsensbezogene Logik verantwortlich, einschließlich des Fork-Choice-Algorithmus, der Verarbeitung von Attestierungen und der Verwaltung von [Proof-of-Stake](/developers/docs/consensus-mechanisms/pos)-Prämien und Strafen. -Eingeführt von Geth. Durch die Verwendung von dynamischen Snapshots, die von Peers bereitgestellt werden, werden alle Konto- und Speicherdaten abgerufen, ohne dass zwischengeschaltete Trie-Nodes heruntergeladen werden müssen, und der Merkle-Trie wird dann lokal rekonstruiert. +| Client | Sprache | Betriebssysteme | Netzwerke | +| ------------------------------------------------------------- | ---------- | --------------------- | ------------------------------------------------------------------- | +| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux, Windows, MacOS | Beacon Chain, Goerli, Pyrmont, Sepolia, Ropsten und weitere | +| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux, Windows, MacOS | Beacon Chain, Goerli, Sepolia, Ropsten und weitere | +| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, MacOS | Beacon Chain, Goerli, Sepolia, Ropsten und weitere | +| [Prysm](https://docs.prylabs.network/docs/getting-started/) | Los | Linux, Windows, MacOS | Beacon Chain, Gnosis, Goerli, Pyrmont, Sepolia, Ropsten und weitere | +| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux, Windows, MacOS | Beacon Chain, Gnosis, Goerli, Sepolia, Ropsten und weitere | -- Schnellste von Geth entwickelte Synchronisierungsstrategie, derzeit die Standardstrategie -- Spart eine Menge Festplattenkapazität und Netzwerkbandbreite, ohne die Sicherheit zu beeinträchtigen. +### Lighthouse {#lighthouse} -[Mehr über Snap](https://github.com/ethereum/devp2p/blob/master/caps/snap.md) +Lighthouse ist eine Konsens-Client-Implementierung, die in Rust unter der Apache-2.0-Lizenz geschrieben ist. Sie wird von Sigma Prime gewartet und ist seit der Entstehung der Beacon Chain stabil und produktionsbereit. Lighthouse wird von verschiedenen Unternehmen, Staking-Pools und Einzelpersonen genutzt. Es soll sicher, leistungsfähig und interoperabel in einer Vielzahl von Umgebungen sein – von Desktop-PCs bis hin zu anspruchsvollen automatisierten Implementierungen. -##### Warp-Sync +Die Dokumentation ist im [Lighthouse Book](https://lighthouse-book.sigmaprime.io/) zu finden -Implementiert durch OpenEthereum. Nodes generieren in regelmäßigen Abständen einen konsenskritischen Zustands-Snapshot, den jeder Peer über das Netzwerk abrufen kann, was eine schnelle Synchronisation von diesem Punkt aus ermöglicht. +### Lodestar {#lodestar} -- Der schnellste und auch standardmäßige Synchronisationsmodus von OpenEthereum basiert auf den statischen Snapshots, die von Peers generiert werden. -- Das ist eine ähnliche Strategie wie bei Snap-Sync, aber ohne bestimmte Sicherheitsvorteile. +Lodestar ist eine produktionsbereite Konsens-Client-Implementierung, die in Typescript unter der LGPL-3.0-Lizenz geschrieben wurde. Sie wird von ChainSafe Systems gewartet und ist der neueste der Konsensus-Clients für Solo-Staker, Entwickler und Forscher. Lodestar besteht aus einem Beacon-Knoten und einem Validator-Client, die auf JavaScript-Implementierungen von Ethereum-Protokollen basieren. Lodestar zielt darauf ab, die Benutzerfreundlichkeit von Ethereum mit leichten Clients zu verbessern, die Zugänglichkeit für eine größere Gruppe von Entwicklern zu erweitern und weiter zur Vielfalt des Ökosystems beizutragen. -[Mehr über Warp](https://openethereum.github.io/Beginner-Introduction#warping---no-warp) +Weitere Informationen finden Sie auf unserer [Lodestar-Website](https://lodestar.chainsafe.io/) -##### Beam-Sync +### Nimbus {#nimbus} -Implementiert von Nethermind und Trinity. Beam-Sync funktioniert wie Fast-Sync, lädt aber auch die Daten herunter, die zum Ausführen der neusten Blocks benötigt wird. Dies ermöglicht dir, die Chain schon innerhalb der ersten paar Minuten nach dem Start abzufragen. +Nimbus ist eine Konsens-Client-Implementierung, geschrieben in Nim unter der Apache-2.0-Lizenz. Sie ist ein produktionsbereiter Client und wird von Solo-Stakern und Staking-Pools verwendet. Nimbus ist auf Ressourceneffizienz ausgelegt, so dass er auf ressourcenbeschränkten Geräten und in der Unternehmensinfrastruktur gleichermaßen leicht ausgeführt werden kann, ohne dass die Stabilität oder die Prämien-Leistung beeinträchtigt wird. Ein geringerer Ressourcenbedarf bedeutet, dass der Client eine größere Sicherheitsmarge hat, wenn das Netzwerk unter Belastung steht. -- Synchronisiert den Zustand zuerst und ermöglicht die Abfrage von RPC in wenigen Minuten. -- Noch in der Entwicklung und nicht vollständig zuverlässig. Die Hintergrundsynchronisierung ist verlangsamt und RPC-Antworten könnten fehlschlagen. +Erfahren Sie mehr in den [Nimbus-Docs](https://nimbus.guide/) -[Mehr zu Beam](https://medium.com/@jason.carver/intro-to-beam-sync-a0fd168be14a) +### Prysm {#prysm} -#### Setup im Client {#client-setup} +Prysm ist ein vollwertiger, open-source Konsensclient, der in Go unter der GPL-3.0-Lizenz geschrieben wurde. Er verfügt über eine optionale Webapp-UI und legt großen Wert auf Benutzerfreundlichkeit, Dokumentation und Konfigurierbarkeit sowohl für Stake-at-Home- als auch für institutionelle Benutzer. -Clients bieten umfangreiche Konfigurationsmöglichkeiten für deine Bedürfnisse an. Wähle einfach einen aus, der am besten zu dir passt, basierend auf dem Niveau der Sicherheit, verfügbaren Daten und Kosten. Neben dem Synchronisations-Algorithmus kannst du auch verschiedene Arten von alten Daten automatisch reduzieren lassen (Pruning). Pruning ermöglicht das Löschen veralteter Daten (z. B. das Entfernen von Zustands-Trie-Nodes), die von den letzten Blocks unerreichbar sind. +Besuchen Sie die [Prysm-Docs](https://docs.prylabs.network/docs/getting-started/), um mehr zu erfahren. -Beachte die Dokumentation oder die Hilfeseite des Clients, um herauszufinden, welcher Synchronisationsmodus als Standard festgelegt ist. Du kannst beim Einrichten die standardmäßige Synchronisationsart bestimmen, in etwa so: +### Teku {#teku} -**Light-Sync in [GETH](https://geth.ethereum.org/) oder [ERIGON](https://github.com/ledgerwatch/erigon) einrichten** +Teku ist einer der ursprünglichen Clients der Beacon Chain-Genesis. Neben den üblichen Zielen (Sicherheit, Robustheit, Stabilität, Benutzerfreundlichkeit, Leistung) zielt Teku speziell darauf ab, alle verschiedenen Konsensclient-Standards vollständig zu erfüllen. -`geth --syncmode "light"` +Teku bietet sehr flexible Einsatzmöglichkeiten. Der Beacon Node und der Validator-Client können zusammen als ein ein Prozess ausgeführt werden, was für Solo-Staker äußerst praktisch ist. Die Nodes können aber auch separat für anspruchsvolle Staking-Operationen ausgeführt werden. Darüber hinaus ist Teku vollständig kompatibel mit [Web3Signer](https://github.com/ConsenSys/web3signer/) für die Sicherheit der Signierschlüssel und Slashing-Schutz. -Für mehr Informationen, lies die Anleitung dazu, [wie man einen Geth-Light-Node ausführt](/developers/tutorials/run-light-node-geth/). +Teku ist in Java unter der Apache 2.0 Lizenz geschrieben. Es wird vom Protokoll-Team bei ConsenSys entwickelt, das auch für Besu und Web3Signer verantwortlich ist. Erfahren Sie mehr in den [Teku-Docs](https://docs.teku.consensys.net/en/latest/). -**Einrichtung von Full-Sync mit Archive in [Besu](https://besu.hyperledger.org/)** +## Synchronisationsmodi {#sync-modes} -`besu --sync-mode=FULL` +Um die aktuellen Daten im Netzwerk zu verfolgen und zu überprüfen, muss sich der Ethereum-Client mit dem neuesten Netzwerkstatus synchronisieren. Dazu werden Daten von Peers heruntergeladen, wobei ihre Integrität kryptographisch verifiziert und eine lokale Blockchain-Datenbank aufgebaut wird. -Genau wie jede andere Konfiguration kann es mit der Startup-Flag oder in der Konfigurationsdatei definiert werden. Ein weiteres Beispiel ist [Nethermind](https://docs.nethermind.io/nethermind/), welches dich dazu auffordert, während der ersten Initialisierung eine Konfiguration auszuwählen, und danach eine Konfigurationsdatei erstellt. +Die Synchronisationsmodi stellen verschiedene Ansätze für diesen Prozess mit unterschiedlichen Kompromissen dar. Die Clients unterscheiden sich auch in der Implementierung von Synchronisationsalgorithmen. Beziehen Sie sich immer auf die offizielle Dokumentation des von Ihnen gewählten Clients, um Einzelheiten zur Implementierung zu erfahren. -## Konsens-Clients (früher als Eth2-Clients bekannt) {#consensus-clients} +### Synchronisationsmodi der Ausführungsebene {#execution-layer-sync-modes} -Es gibt mehrere Konsens-Clients (früher als Eth2-Clients bekannt), die dazu da sind, die [Konsens-Upgrades](/roadmap/beacon-chain/) zu unterstützen. Sie betreiben die Beacon Chain und werden den Ausführungen nach [The Merge](/roadmap/merge/) einen Proof-of-Stake-Konsensmechanismus zur Verfügung stellen. +#### Synchronisation vollständiger Archive {#full-sync} -| Client | Sprache | Betriebssysteme | Netzwerke | -| ----------------------------------------------------------- | ---------- | --------------------- | -------------------------------- | -| [Teku](https://pegasys.tech/teku) | Java | Linux, Windows, MacOS | Mainnet, Goerli | -| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, MacOS | Mainnet, Goerli | -| [Lighthouse](https://lighthouse-book.sigmaprime.io/) | Rust | Linux, Windows, MacOS | Mainnet, Goerli, Pyrmont | -| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux, Windows, MacOS | Mainnet, Goerli | -| [Prysm](https://docs.prylabs.network/docs/getting-started/) | Los | Linux, Windows, MacOS | Mainnet, Gnosis, Goerli, Pyrmont | +Bei vollständiger Synchronisierung werden alle Blöcke (einschließlich Headern, Transaktionen und Belegen) heruntergeladen und der Zustand der Blockchain wird inkrementell generiert, indem jeder Block ab Genesis ausgeführt wird. -## Hardware {#hardware} +- Minimiert das Vertrauen und bietet höchste Sicherheit, indem jede Transaktion verifiziert wird. +- Bei einer steigenden Anzahl von Transaktionen kann es Tage bis Wochen dauern, alle Transaktionen zu bearbeiten. -Die Hardwareanforderungen sind je nach Client unterschiedlich, aber im Allgemeinen nicht besonders hoch, da der Node nur synchronisiert bleiben muss. Verwechsle es nicht mit dem Mining, das viel mehr Rechenleistung erfordert. Die Synchronisation von Zeit und Leistung verbessert sich jedoch mit leistungsstärkerer Hardware. Je nach Bedarf und Wunsch kann Ethereum auf deinem Computer, Home-Server, Single-Board-Computer oder virtuellen privaten Servern in der Cloud ausgeführt werden. +#### Synchronisation vollständiger Snaps {#snap-sync} -Eine einfache Möglichkeit, deinen eigenen Node zu betreiben, ist die Verwendung von Plug-and-play-Boxen wie [dAppNode](https://dappnode.io/). Es stellt Hardware für laufende Clients und Anwendungen mit einer einfachen Benutzeroberfläche zur Verfügung. +Bei der Snap-Synchronisierung wird die Chain wie bei einer vollständigen Archiv-Synchronisierung Block für Block überprüft, wobei jedoch nicht mit dem Genesis-Block, sondern mit einem neueren „vertrauenswürdigen“ Prüfpunkt begonnen wird, von dem bekannt ist, dass er Teil der echten Blockchain ist. Der Knoten speichert in regelmäßigen Abständen Prüfpunkte und löscht dabei Daten, die älter als ein bestimmtes Alter sind. Diese Snapshots werden verwendet, um die Zustandsdaten zu regenerieren, wenn sie benötigt werden, anstatt sie für immer zu speichern. -### Voraussetzungen {#requirements} +- Schnellste Synchronisierungsstrategie, derzeit Standard im Ethereum-Mainnet +- Spart eine Menge Festplattenkapazität und Netzwerkbandbreite, ohne die Sicherheit zu beeinträchtigen -Bevor du einen Client installierst, stelle bitte sicher, dass dein Computer über genügend Ressourcen verfügt, um ihn auszuführen. Die Mindestanforderungen und die empfohlenen Anforderungen findest du weiter unten. Der wichtigste Teil ist jedoch der Festplattenplatz. Die Synchronisation der Ethereum-Blockchain ist Datentechnisch sehr ein-/ausgangsintensiv. Es ist am besten, ein SSD einzusetzen. Um einen Ethereum-Client auf HDD laufen zu lassen, benötigst du mindestens 8 GB RAM für den Cache. +[Mehr zur Snap-Synchronisation](https://github.com/ethereum/devp2p/blob/master/caps/snap.md) -#### Mindestanforderungen {#recommended-specifications} +#### Leichte Synchronisation {#light-sync} -- CPU mit 2+ Kernen -- Mindestens 4 GB RAM mit SSD, 8 GB+, wenn du eine HDD-Festplatte verwendest -- 8 MBit/s Bandbreite +Der Light-Client-Modus lädt alle Block-Header und Blockdaten herunter und prüft einige davon nach Zufallsprinzip. Synchronisiert nur die Spitze der Chain vom vertrauenswürdigen Kontrollpunkt. -#### Empfohlene Spezifikationen {#recommended-specifications} +- Ruft nur den neuesten Zustand ab und verlässt sich dabei auf das Vertrauen in die Entwickler und den Konsensmechanismus. +- Der Client ist in wenigen Minuten mit dem aktuellen Netzwerkstatus einsatzbereit. -- Schnelle CPU mit 4+ Kernen -- 16 GB+ RAM -- Schnelle SSD mit mindestens 500 GB freiem Speicherplatz -- 25+ MBit/s Bandbreite +**Hinweis**: Light Sync funktioniert noch nicht mit Proof-of-Stake Ethereum – Aber neue Versionen von Light Sync sollten bald erscheinen! -Der Sync-Modus, den du auswählst, wird einen Einfluss auf den benötigten Speicherplatz haben, deswegen haben wir schon einmal den notwendigen Speicherplatz für jeden Client abgeschätzt. +[Mehr über Light-Clients](/developers/docs/nodes-and-clients/light-clients/) -| Client | Festplattengröße (Fast Sync) | Festplattengröße (Full Archive) | -| ------------ | ---------------------------- | ------------------------------- | -| Geth | 400 GB+ | 6 TB+ | -| OpenEthereum | 280 GB+ | 6 TB+ | -| Nethermind | 200 GB+ | 5 TB+ | -| Besu | 750 GB+ | 5 TB+ | -| Erigon | N/A | 1 TB+ | +### Synchronisationsmodi der Konsensschicht {#consensus-layer-sync-modes} -- Hinweis: Erigon kann keinen Fast-Sync durchführen, aber Full-Pruning ist möglich (~500 GB) +#### Optimistische Synchronisation {#optimistic-sync} -![Ein Diagramm, das aufzeigt, dass die Gigabytes für eine Full-Synchronisation ansteigen](./full-sync.png) +Die „optimistische“ Synchronisierung ist eine Synchronisierungsstrategie nach der Zusammenführung, die als Opt-in und rückwärtskompatibel konzipiert ist und es Ausführungsknoten ermöglicht, sich über etablierte Methoden zu synchronisieren. Die Ausführungsengine kann auf _optimistische_ Weise Beacon-Blöcke importieren, ohne sie vollständig zu verifizieren, den neuesten Head finden und anschließend mit der Synchronisierung der Chain mit den oben genannten Methoden beginnen. Nachdem der Ausführungsclient aufgeholt hat, informiert er den Konsensclient über die Gültigkeit der Transaktionen auf der Beacon Chain. -![Ein Diagramm, das aufzeigt, dass die Gigabytes für eine Archive-Synchronisation ansteigen](./archive-sync.png) +[Mehr zur optimistischen Synchronisierung](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md) -Diese Diagramme zeigen, wie sich die Speicheranforderungen fortwährend ändern. Die aktuellsten Daten für Geth und OpenEthereum findest du auf [Full-Sync-Daten](https://etherscan.io/chartsync/chaindefault) und [Archive-Sync-Daten](https://etherscan.io/chartsync/chainarchive). +#### Kontrollpunkt-Synchronisation {#checkpoint-sync} -### Ethereum auf einem Einzelplatinen-Computer {#ethereum-on-a-single-board-computer} +Kontrollpunkt-Synchronisation, auch bekannt als Synchronisation der schwachen Subjektivität, schafft eine bessere Benutzererfahrung für die Synchronisation von Beacon Nodes. Sie basiert auf der Annahme [„schwacher Subjektivität“](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/), denn sie ermöglicht die Synchronisierung der Beacon Chain von einem aktuellen Kontrollpunkt schwacher Subjektivität anstelle der Genesis. Die Kontollpunkt-Synchronisation macht die anfängliche Synchronisationszeit deutlich schneller, mit ähnlichen Vertrauensannahmen wie bei der Synchronisation seit der [Genesis](/glossary/#genesis-block). -Die bequemste und günstigste Art, Ethereum-Nodes zu betreiben, ist die Benutzung eines Einzelboard-Computers mit ARM-Architektur wie den Raspberry Pi. [Ethereum auf ARM](https://twitter.com/EthereumOnARM) bietet Bilder von Geth-, OpenEthereum-, Nethermind- und Besu-Clients. Hier ist ein einfaches Tutorial dazu, [wie man einen ARM-Client aufsetzt und einrichtet](/developers/tutorials/run-node-raspberry-pi/). +In der Praxis bedeutet dies, dass Ihr Knoten eine Verbindung zu einem entfernten Dienst herstellt, um die letzten abgeschlossenen Zustände herunterzuladen und die Daten ab diesem Punkt weiter zu überprüfen. Der dritten Partei, die diese Daten liefert, wird vertraut. Sie sollte daher sorgfältig ausgewählt werden. -Kleine, erschwingliche und effiziente Geräte wie diese sind ideal für den Betrieb eines Nodes zu Hause. +Mehr über [Kontrollpunkt-Synchronisation](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice) ## Weiterführende Informationen {#further-reading} -Es gibt eine große Menge an Informationen über Ethereum-Clients im Internet. Hier sind ein paar Anhaltspunkte, die bei der Suche hilfreich sein könnten. +Es gibt viele Informationen über Ethereum-Clients im Internet. Hier sind ein paar Ressourcen, die hilfreich sein könnten. -- [Ethereum 101 - Part 2 - Understanding Nodes](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes, 13 February 2019_ -- [Running Ethereum Full Nodes: A Guide for the Barely Motivated](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 7 November 2019_ -- [Analyzing the hardware requirements to be an Ethereum full validated node](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau, 24 September 2018_ -- [Running a Hyperledger Besu Node on the Ethereum Mainnet: Benefits, Requirements, and Setup](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi, 7 May 2020_ +- [Ethereum 101 - Part 2 - Understanding Nodes](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes, 13. Februar 2019_ +- [Running Ethereum Full Nodes: A Guide for the Barely Motivated](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 7. November 2019_ ## Verwandte Themen {#related-topics} @@ -316,5 +276,4 @@ Es gibt eine große Menge an Informationen über Ethereum-Clients im Internet. H ## Verwandte Tutorials {#related-tutorials} -- [Running a Node with Geth](/developers/tutorials/run-light-node-geth/) _– How to download, install and run Geth. Covering syncmodes, the JavaScript console, and more._ -- [Turn your Raspberry Pi 4 into a validator 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 node running the execution layer (Mainnet) and / or the consensus layer (Beacon Chain / validator)._ +- [Verwandeln Sie Ihren Raspberry Pi 4 in einen Validator-Knoten nur durch die Installation der MicroSD Card – Installationsanweisung](/developers/tutorials/run-node-raspberry-pi/) _– Schalten Sie Ihren Raspberry Pi 4 ein, schließen Sie ein Ethernet-Kabel an, verbinden Sie die SSD-Festplatte und schalten Sie das Gerät ein, um den Raspberry Pi 4 in einen vollständigen Ethereum-Knoten zu verwandeln, der die Ausführungsebene (Mainnet) und/oder die Konsensebene (Beacon Chain/Validator) ausführt._ diff --git a/src/content/translations/de/developers/docs/nodes-and-clients/light-clients/index.md b/src/content/translations/de/developers/docs/nodes-and-clients/light-clients/index.md new file mode 100644 index 00000000000..c29b90a4adc --- /dev/null +++ b/src/content/translations/de/developers/docs/nodes-and-clients/light-clients/index.md @@ -0,0 +1,61 @@ +--- +title: Light Clients +description: Einführung zu leichten Clients von Ethereum. +lang: de +--- + +Der Betrieb eines vollständigen Knotens ist die vertrauenswürdigste, dezentralste, privateste und zensurresistenteste Möglichkeit, um mit Ethereum zu interagieren. Mit einem vollständigen Knoten können Sie Ihre eigene Kopie der Blockchain behalten. Auf dieser können sie Abfragen direkt ausführen und Sie haben einen direkten Zugriff auf das Peer-to-Peer-Netzwerk von Ethereum. Jedoch erfordert der Betrieb eines vollständigen Knotens eine signifikante Menge an Arbeitsspeicher, Speicherplatz und CPU. Das bedeutet, dass es nicht für jeden möglich ist seinen eigenen Knoten zu betreiben. Es gibt mehrere Lösungen dazu in der Ethereum-Roadmap, dazu gehört auch die Zustandslosigkeit, jedoch sind diese noch Jahre von ihrer Implementierung entfernt. Die kurzfristige Lösung dazu ist, einige Vorteile eines vollständigen Knotens mit großen Leistungsverbesserungen, die es ermöglichen einen Knoten mit sehr geringen Hardware-Anforderungen zu betreiben, einzutauschen. Knoten, die diesen Kompromiss erzielen, werden leichte Knoten (Light Nodes) genannt. + +## Was ist ein leichter Client {#what-is-a-light-client} + +Ein leichter Knoten ist ein Knoten, der auf der Software eines leichten Clients betrieben werden kann. Statt lokale Kopien der gesamten Daten der Blockchain zu speichern und unabhängig alle Änderungen mitzuverfolgen, fragen sie die notwendigen Daten von irgendeinem Anbieter ab. Der Anbieter könnte eine direkte Verbindung zu einem vollständigen Knoten oder irgendein zentraler RPC-Server sein. Die Daten werden dann vom leichten Knoten verifiziert. Dadurch kann er mit der Spitze der Blockchain mithalten. Der leichte Knoten verarbeitet nur Block-Header und lädt gelegentlich die echten Inhalte des Blocks herunter. Je nach Kombination von leichter und vollständiger Client-Software können Knoten in ihrer Leichtigkeit variieren. Zum Beispiel würde die leichteste Konfiguration darin bestehen, einen leichten Ausführungs-, sowie Konsensclient zu betreiben. Es ist auch wahrscheinlich, dass viele Knoten sich entscheiden, einen leichten Konsensclient mit einem vollen Ausführungsclient oder andersherum zu betreiben. + +## Wie funktionieren leichte Clients? {#how-do-light-clients-work} + +Als Ethereum damit begann, einen auf Proof-of-Stake basierenden Konsensmechanismus zu nutzen, wurde neue Infrastruktur, vor allem für leichte Clients, aufgebaut. Das funktioniert, indem alle 1,1 Tage eine Teilmenge von 512 Validatoren als **Synchronisierungskomitee** ausgewählt werden. Das Synchronisierungskomitee unterschreibt den Header von den letzten Blöcken. Jeder Block-Header beinhaltet die gesammelten Unterschriften der Validatoren im Synchronisierungskomitee und ein „Bitfeld“, das zeigt, welche Validatoren unterschrieben haben und welche nicht. Jeder Header beinhaltet auch eine Liste von Validatoren, von denen erwartet wird, den nächsten Block zu unterschreiben. Das bedeutet, dass ein leichter Client schnell sehen kann, dass das Synchronisierungskomitee den empfangenen Daten zustimmt und dass sie auch überprüfen können, ob das Synchronisierungskomitee das Original ist, indem sie die empfangenen mit den im letzten Block erwarteten Daten vergleichen. So kann der leichte Client sein Wissen über den letzten Ethereum-Block immer wieder erneuern, ohne den Block selbst, sondern nur den Header, herunterzuladen. + +Auf der Ausführungsebene gibt es keine einzige Spezifikation für einen leichten Ausführungsclient. Der Anwendungsbereich eines leichten Ausführungsclients kann ein „leichter Modus“ eines vollständigen Ausführungsclients sein, der über das gesamte EVM und alle Netzwerkfunktionen eines vollständigen Knotens verfügt, jedoch nur die Block Header verifiziert. Es kann jedoch auch ein stärker zerlegter Client sein, der sich stark darauf stützt, Anfragen an einen RPC-Anbieter weiterzuleiten, um mit Ethereum zu interagieren. + +## Warum sind leichte Clients so wichtig? {#why-are-light-clients-important} + +Leichte Clients sind wichtig, da sie Nutzern ermöglichen, eingehende Daten zu verifizieren, statt der Echtheit der Daten des Anbieters blind zu vertrauen. Dabei benötigen sie nur einen Bruchteil der rechnerischen Ressourcen eines vollständigen Knotens. Die Daten, die leichte Clients empfangen, können anhand von Block-Headern überprüft werden, von denen sie wissen, dass mindestens 2/3 einer zufälligen Menge von 512 Ethereum-Validatoren richtig unterschrieben wurden. Das ist ein sehr starker Beweis dafür, dass die Daten korrekt sind. + +Der leichte Client nutzt nur eine kleine Menge an Rechenstärke, Arbeitsspeicher und Speicherplatz, deshalb kann er sogar auf einer Anwendung oder im Browser eines Mobiltelefons ausgeführt werden. Leichte Clients ermöglichen vertrauensminimierten Zugriff auf Ethereum, genauso reibungslos wie einfach einem Drittanbieter zu vertrauen. + +Lassen Sie uns ein einfaches Beispiel nehmen. Stellen Sie sich vor, Sie wollen das Guthaben Ihres Accounts überprüfen. Dafür müssen sie eine Anfrage an einen Ethereum-Knoten stellen. Dieser Knoten wird seine lokale Kopie des Ethereum-Zustands nach Ihrem Guthaben überprüfen und dieses an Sie weiterleiten. Wenn Sie keinen direkten Zugriff auf einen Knoten haben, gibt es zentrale Betreiber, die diese Daten als Service anbieten. Sie können ihnen eine Anfrage schicken, die Betreiber überprüfen dann den Knoten und leiten die Ergebnisse an Sie weiter. Das Problem dabei ist, dass Sie dem Anbieter vertrauen müssen, Ihnen die korrekten Informationen zu geben. Sie wissen nie, ob die Informationen korrekt sind, wenn Sie sie nicht selbst verifizieren können. + +Ein leichter Client behebt dieses Problem. Sie können die Daten immer noch von einem externen Anbieter abfragen, sobald Sie jedoch die Daten erhalten, kommen diese mit einem Beweis, den Ihr leichter Knoten anhand der Informationen, die er vom Block-Header erhalten hat, überprüft. Statt eines vertrauten Betreibers wird Ethereum die Richtigkeit Ihrer Daten überprüfen. + +## Welche Innovationen ermöglichen leichte Clients? {#what-innovations-do-light-clients-enable} + +Der Hauptvorteil von leichten Clients ist, dass mehr Menschen unabhängigen Zugriff auf Ethereum bekommen können. Dabei sind die Hardware-Anforderungen überschaubar und die Abhängigkeit von Dritten minimal. Das ist gut für Nutzer, da diese ihre eigenen Daten verifizieren können, und gut für das Netzwerk, da es mehr und vielfältige Knoten gibt, die die Blockchain verifizieren. + +Die Möglichkeit, Ethereum-Knoten auf Geräten mit minimalem Speicherplatz, Arbeitsspeicher und Rechenleistung zu betreiben, ist einer der großen Innovationsbereiche, die von leichten Clients ermöglicht werden. Während Ethereum-Knoten heute große Mengen an Rechenressourcen benötigen, könnten leichte Clients in Browser eingebettet werden und auch auf Mobiltelefonen oder kleineren Geräten wie Smart Watches laufen. Das bedeutet, dass Ethereum Wallets mit integrierten Clients auch auf Mobiltelefonen betrieben werden könnten. Das bedeutet, dass mobile Wallets viel dezentraler sein könnten, da sie sich nicht auf einen Datenanbieter für ihre Daten verlassen müssen. + +Eine Erweiterung davon ist das Ermöglichen von Geräten mit **Internet der Dinge (Internet of Things, IoT)**. Ein leichter Client könnte verwendet werden, um schnell das Eigentum an einem Token-Guthaben oder einem NFT beweisen zu können. Mit all den Sicherheiten, die Synchronisierungskomitees anbieten, könnten leichte Clients Veränderungen am IoT hervorrufen. Stellen Sie sich einen [Fahrradverleih](https://youtu.be/ZHNrAXf3RDE?t=929) vor, der eine Anwendung mit integriertem leichten Client nutzt, um schnell zu verifizieren, dass Sie ein NFT des Fahrradverleihs besitzen. Dadurch würde ein Fahrrad für Sie entsperrt werden und Sie könnten es nutzen! + +Ethereum-Rollups würden ebenfalls von leichten Clients profitieren. Eines der großen Probleme für Rollups war, dass es bereits Angriffe auf die Brücken gab, die den Transfer von Anlagen vom Ethereum-Hauptnetz zu einem Rollup erlauben. Eine Schwachstelle sind die Oracles, die Rollups verwenden, um zu erkennen, ob ein Benutzer eine Einzahlung auf die Brücke vorgenommen hat. Wenn ein Oracle falsche Daten einspeist, könnte es dem Rollup vorgaukeln, dass eine Einzahlung auf die Brücke stattgefunden hat, und die Mittel fälschlicherweise freigeben. Ein in das Rollup eingebetteter leichter Client könnte zum Schutz vor korrupten Oracles verwendet werden, da die Einzahlung in die Brücke mit einem Nachweis versehen werden könnte, der vom Rollup vor der Freigabe von Token überprüft werden kann. Das gleiche Konzept könnte auch auf andere Brücken innerhalb der Blockchain angewendet werden. + +Leichte Clients könnten auch dazu verwendet werden, Ethereum-Wallets zu aktualisieren. Anstatt den von einem RPC-Provider bereitgestellten Daten zu vertrauen, könnte Ihre Wallet die Ihnen präsentierten Daten direkt mit einem eingebetteten leichten Client verifizieren. Dies würde die Sicherheit Ihrer Wallet erhöhen. Wenn Ihr RPC-Anbieter unehrlich war und Ihnen falsche Daten geliefert hat, könnte der eingebettete leichte Client Sie darüber informieren! + +## Wie ist der aktuelle Stand der Entwicklung von leichten Clients? {#current-state-of-development} + +Es befinden sich mehrere leichte Clients in der Entwicklung, darunter Ausführungs-, Konsens- und kombinierte Ausführungs-/Konsens-Light-Clients. Dies sind die Light-Client-Implementierungen, von denen wir zum Zeitpunkt der Erstellung dieser Seite wissen: + +- [Lodestar](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client): leichter Konsensclient in TypeScript +- [Helios](https://github.com/a16z/helios): kombinierter leichter Ausführungs- und Konsensclient in Rust +- [Geth](https://github.com/ethereum/go-ethereum/tree/master/light): Light-Modus für Ausführungsclient (in Entwicklung) in Go +- [Nimbus](https://nimbus.guide/el-light-client.html): Leichter Konsensclient in Nim + +Unseres Wissens nach ist noch keiner dieser Clients produktionsreif. + +Es wird auch intensiv daran gearbeitet, die Art und Weise zu verbessern, wie leichte Clients auf Ethereum-Daten zugreifen können. Derzeit verlassen sich leichte Clients bei RPC-Anfragen an Full Nodes, die ein Client/Server-Modell verwenden. In Zukunft könnten die Daten jedoch auf eine dezentralere Weise angefordert werden, indem ein dediziertes Netzwerk wie das [Portal-Netzwerk](https://www.ethportal.net/) verwendet wird, das die Daten über ein Peer-to-Peer Gossip-Protokoll an leichte Clients weiterleiten könnte. + +Andere [Roadmap-Elemente](/roadmap/) wie [Verkle-Bäume](/roadmap/verkle-trees/) und [Zustandslosigkeit](/roadmap/statelessness/) werden schließlich dazu führen, dass die Sicherheitsgarantien von leichten Clients denen von vollständigen Clients entsprechen. + +## Weiterführende Informationen {#further-reading} + +- [Zsolt Felfodhi über Geth Light Clients](https://www.youtube.com/watch?v=EPZeFXau-RE) +- [Etan Kissling über die Vernetzung von Light Clients](https://www.youtube.com/watch?v=85MeiMA4dD8) +- [Etan Kissling über Light Clients nach der Zusammenführung](https://www.youtube.com/watch?v=ZHNrAXf3RDE) +- [Piper Merriam: Der beschwerliche Weg zu funktionalen Light Clients](https://snakecharmers.ethereum.org/the-winding-road-to-functional-light-clients/) diff --git a/src/content/translations/de/developers/docs/nodes-and-clients/node-architecture/index.md b/src/content/translations/de/developers/docs/nodes-and-clients/node-architecture/index.md new file mode 100644 index 00000000000..1522866987d --- /dev/null +++ b/src/content/translations/de/developers/docs/nodes-and-clients/node-architecture/index.md @@ -0,0 +1,59 @@ +--- +title: Node-Architektur +description: Einleitung zum Aufbau von Ethereum-Knoten. +lang: de +--- + +Ein Ethereum-Knoten besteht aus zwei Clients: einem [Ausführungsclient](/developers/docs/nodes-and-clients/#execution-clients) und einem [Konsensclient](/developers/docs/nodes-and-clients/#consensus-clients). + +Als Ethereum noch den [Proof-of-Work](/developers/docs/consensus-mechanisms/pow/)-Algorithmus verwendete, war ein Ausführungsclient genug, um einen ganzen Ethereum-Knoten zu betreiben. Seit der Implementierung des [Proof-of-Stake](/developers/docs/consensus-mechanisms/pow/)-Algorithmus, muss der Ausführungsclient jedoch in Verbindung mit einer Software, die [„Konsensclient“](/developers/docs/nodes-and-clients/#consensus-clients) genannt wird, verwendet werden. + +Das folgende Diagramm zeigt die Verbindung zwischen zwei Ethereum-Clients. Die beiden Clients verbinden sich mit ihren eigenen Peer-to-Peer(P2P)-Netzwerken. Es werden separate P2P-Netzwerke benötigt, da der Ausführungsclient Transaktionen über ihr P2P Netzwerk kommuniziert, wodurch sie ihren lokalen Transaktionspool verwalten können. Konsensclients können dabei Blöcke über ihr eigenes P2P-Netzwerk kommunizieren, was Konsens und Wachstum der Blockchain ermöglicht. + +![](node-architecture-text-background.png) + +_Dieses Bild wurde von geth.ethereum.org geliehen und verwendet das Geth-Logo, um die Ausführungsclients zu repräsentieren. Es gibt andere Optionen für den Ausführungsclient, z. B. Erigon, Nethermind und Besu_ + +Damit diese Zwei-Client-Struktur funktioniert, müssen Konsensclients in der Lage sein Transaktionsbündel an den Ausführungsclient weiterzuleiten. Dadurch das die Transaktionen lokal ausgeführt werden, kann der Client validieren, dass die Transaktionen keine der Ethereum-Richtlinien verletzen und dass die vorgeschlagene Aktualisierung des Ethereum-Zustands korrekt ist. Wenn der Knoten als Blockerzeuger ausgewählt wird, muss der Konsensclient ebenfalls in der Lage sein, ein Bündel von Transaktionen von Geth anzufragen, damit diese Teil des neuen Blocks werden können. Er muss sie ausführen können, um den globalen Zustand zu aktualisieren. Diese Kommunikation zwischen den Clients wird durch eine lokale RPC-Verbindung unter Verwendung der [Engine API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) verarbeitet. + +## Was macht der Ausführungsclient? {#execution-client} + +Der Ausführungsclient ist für das Verarbeiten von Transaktionen, das Vermitteln von Transaktionen, die Zustandsverwaltung und die Unterstützung der Virtuellen Ethereum-Maschine ([EVM](/developers/docs/evm/)) zuständig. Jedoch ist er **nicht** für das Erstellen von Blöcken, das Vermitteln von Blöcken oder das Verwalten der Konsenslogik zuständig. Dies sind die Aufgaben des Konsensclients. + +Der Ausführungsclient erstellt Ausführungsnutzlasten – die Liste der Transaktionen, die aktualisierten Zustandsbäume, und andere ausführungsbezogene Daten. Konsensclients beinhalten die Ausführungsnutzlast in jedem Block. Der Ausführungsclient ist außerdem zuständig für das Wiederausführen von Transaktionen in einem neuen Block, um sicherzugehen, dass diese gültig sind. Transaktionen werden auf dem Computer, der in den Ausführungsclients integriert ist, ausgeführt, bekannt als die [Virtuelle Ethereum-Maschine (EVM)](/developers/docs/evm). + +Der Ausführungsclient bietet außerdem eine Nutzeroberfläche für Ethereum über [RPC-Methoden](/developers/docs/apis/json-rpc), die es Nutzern ermöglicht, die Ethereum Blockchain abzufragen und Transaktionen einzuschicken sowie Smart Contracts einzusetzen. Es ist üblich, das RPC-Aufrufe von einer Bibliothek wie [Web3js](https://docs.web3js.org/),[Web3py](https://web3py.readthedocs.io/en/v5/) oder einer Nutzeroberfläche, wie z. B. einer Browser-Wallet verarbeitet werden. + +Zusammengefasst ist der Ausführungsclient: + +- Ein Nutzergateway zu Ethereum +- Das Zuhause der Virtuellen Ethereum-Maschine, des Zustands von Ethereums und des Transaktionspools. + +## Was macht der Konsensclient? {#consensus-client} + +Der Konsensclient befasst sich mit der gesamten Logik, die ein Knoten braucht, um mit dem Ethereum-Netzwerk synchronisiert zu bleiben. Das beinhaltet das Empfangen von Blöcken von Peers und das Betreiben eines Abspaltungsalgorithmus, um sicherzugehen, dass der Knoten immer der Blockchain mit den meisten Attestierungen (gewichtet nach effektiven Guthaben von Validatoren) folgt. Ähnlich zum Ausführungsclient haben Konsensclients ihr eigenes P2P-Netzwerk, über das sie Blöcke und Attestierungen teilen können. + +Der Konsensclient nimmt nicht an Attestierungen oder dem Vorschlagen von Blöcken teil. Das wird von einem Validator übernommen, eine optionale Erweiterung zu einem Konsensclient. Ein Konsensclient ohne Validator hält nur mit der Spitze der Blockchain mit, was dem Knoten ermöglicht, synchronisiert zu bleiben. Das ermöglicht dem Nutzer, Dinge mit Ethereum über ihren Ausführungsclient abzuwickeln, mit der Sicherheit, dass diese sich auf der richtigen Blockchain befinden. + +## Validatoren {#validators} + +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/). + +## Vergleich der Knotenkomponenten {#node-comparison} + +| Ausführungsclient | Konsensclient | Validator | +| ------------------------------------------------------- | ------------------------------------------------------------------------------- | -------------------------------------- | +| Übermittelt Transaktionen über sein P2P-Netzwerk | Übermittelt Blöcke und Attestierungen über sein P2P-Netzwerk | Schlägt Blöcke vor | +| Führt Transaktionen (erneut) aus | Betreibt den Abspaltungsalgorithmus | Sammelt Prämien/Strafen | +| Verifiziert eingehende Zustandsänderungen | Verfolgt die Spitze der Blockchain | Stellt Attestierungen aus | +| Verwaltet Zustands- und Belegsbäume | Verwaltet den Beacon-Zustand (beinhaltet Konsens- und Ausführungsinformationen) | Benötigt 32 ETH, um gestaked zu werden | +| Erzeugt Ausführungsnutzlast | Behält Überblick über die gesammelte Zufälligkeit in RANDAO | Kann „abgeschlagen“ (geslashed) werden | +| Deckt JSON-RPC API auf, um mit Ethereum zu interagieren | Behält den Überblick über Begründung und Finalisierung | | + +## Weiterführende Informationen {#further-reading} + +- [Proof-of-Stake](/developers/docs/consensus-mechanisms/pos) +- [Blockvorschlag](/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/src/content/translations/de/developers/docs/nodes-and-clients/node-architecture/node-architecture-text-background.png b/src/content/translations/de/developers/docs/nodes-and-clients/node-architecture/node-architecture-text-background.png new file mode 100644 index 0000000000000000000000000000000000000000..f658f984dd60179481bafe27f3063fd175209e09 GIT binary patch literal 309149 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 t^zLQP=Rm^D~2!4DJ-#3&ts0 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�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 Gu>S+p-2IdQ literal 0 HcmV?d00001 diff --git a/src/content/translations/de/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/src/content/translations/de/developers/docs/nodes-and-clients/nodes-as-a-service/index.md index 9a732912658..4f568f948c7 100644 --- a/src/content/translations/de/developers/docs/nodes-and-clients/nodes-as-a-service/index.md +++ b/src/content/translations/de/developers/docs/nodes-and-clients/nodes-as-a-service/index.md @@ -7,71 +7,118 @@ sidebarDepth: 2 ## Einführung {#Introduction} -Deinen eigenen [Ethereum-Node](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) zu betreiben kann eine Herausforderung sein, vor allem wenn du gerade beginnst oder während du schnell skalierst. Es gibt eine [Anzahl von Diensten](#popular-node-services), die optimierte Nodeinfrastrukturen für dich ausführen, damit du dich stattdessen auf die Entwicklung deiner Applikation oder deines Produkts konzentrieren kannst. Wir erklären dir, wie Node-Dienste funktionieren, welche Vor- und Nachteile sie haben und listen Anbieter auf, falls du anfangen willst, sie zu verwenden. +Ihren eigenen [Ethereum-Node](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) zu betreiben, kann eine Herausforderung sein, vor allem wenn Sie gerade beginnen oder beim schnellen Skalieren. Es gibt eine [Anzahl von Diensten](#popular-node-services), die optimierte Node-Infrastrukturen für Sie ausführen, damit Sie sich stattdessen auf die Entwicklung Ihrer Anwendung oder Ihres Produkts konzentrieren können. Wir erklären Ihnen, wie Node-Dienste funktionieren, welche Vor- und Nachteile sie haben und listen Anbieter auf, falls Sie anfangen möchten, sie zu verwenden. ## Voraussetzungen {#prerequisites} -Wenn du noch nicht weißt, was Nodes und Clients sind, schaue dir [Nodes und Clients](/developers/docs/nodes-and-clients/) an. +Wenn Sie noch nicht wissen, was Nodes und Clients sind, lesen Sie [Nodes und Clients](/developers/docs/nodes-and-clients/). + +## Staker {#stakoooooooooooooors} + +Solo-Staker müssen ihre eigene Infrastruktur betreiben, anstatt sich auf Drittanbieter zu verlassen. Das bedeutet, dass ein Ausführungsclient zusammen mit einem Konsensclient betrieben wird. Vor [der Zusammenführung](/roadmap/merge) war es möglich, nur einen Konsensclient zu betreiben und einen zentralisierten Anbieter für Ausführungsdaten zu verwenden; das ist jetzt nicht mehr möglich – ein Solo-Staker muss beide Clients betreiben. Es gibt jedoch Dienste, die diesen Prozess erleichtern können. + +[Lesen Sie mehr über das Betreiben eines Nodes](/developers/docs/nodes-and-clients/run-a-node/). + +Die auf dieser Seite beschriebenen Dienste gelten für Nicht-Staking-Nodes. ## Wie funktionieren Node-Dienste? {#how-do-node-services-work} -Node-Dienste betreiben im Hintergrund dezentralisierte Node-Clients für dich, so dass du dich um den Aufbau der Infrastruktur nicht zu kümmern brauchst. +Node-Dienste betreiben im Hintergrund dezentralisierte Node-Clients für Sie, so dass Sie sich nicht darum kümmern müssen. -Diese Dienste bieten in der Regel einen API-Schlüssel an, den du verwenden kannst, um in der Blockchain zu schreiben und zu lesen. Sie beinhalten oft den Zugriff auf [Ethereum-Testnetze](/developers/docs/networks/#testnets) zusätzlich zum Mainnet. +Diese Dienste bieten in der Regel einen API-Schlüssel an, den Sie verwenden können, um in der Blockchain zu schreiben und zu lesen. Sie beinhalten oft den Zugriff auf [Ethereum-Testnetze](/developers/docs/networks/#ethereum-testnets) zusätzlich zum Mainnet. -Einige Dienste bieten dir Ihren eigenen dedizierten Node, den sie für dich verwalten, während andere Load Balancer nutzen, um die Aktivität auf mehrere Nodes zu verteilen. +Einige Dienste bieten Ihnen ihren eigenen speziellen Node, den sie für Sie verwalten, während andere Load Balancer nutzen, um die Aktivität auf mehrere Nodes zu verteilen. -Fast alle Node-Dienste sind extrem einfach mit einer Zeilenänderung in deinen Code zu integrieren, um deinen selbst gehosteten Node auszutauschen oder sogar zwischen den Diensten selbst zu wechseln. +Fast alle Node-Dienste sind extrem einfach mit einer Zeilenänderung in Ihren Code zu integrieren, um Ihren selbst gehosteten Node auszutauschen oder sogar zwischen den Diensten selbst zu wechseln. -Oft laufen Node-Dienste mit einer Vielzahl von [Node-Clients](/developers/docs/nodes-and-clients/#execution-clients) und [Typen](/developers/docs/nodes-and-clients/#node-types), so dass du in einer API zusätzlich zu Client-spezifischen Methoden auf Voll- und Archivierungsnodes zugreifen kannst. +Oft laufen Node-Dienste mit einer Vielzahl von [Node-Clients](/developers/docs/nodes-and-clients/#execution-clients) und [Typen](/developers/docs/nodes-and-clients/#node-types), so dass Sie in einer API zusätzlich zu Client-spezifischen Methoden auf Voll- und Archivierungsnodes zugreifen können. -Es ist wichtig zu beachten, dass Node-Dienste keinesfalls deine privaten Schlüssel oder Informationen speichern können und sollten. +Es ist wichtig zu beachten, dass Node-Dienste keinesfalls Ihre privaten Schlüssel oder Informationen speichern können und sollten. ## Was sind die Vorteile bei der Verwendung eines Node-Dienstes? {#benefits-of-using-a-node-service} -Der Hauptvorteil bei der Nutzung eines Node-Dienstes besteht darin, die technische Zeit nicht zu benötigen, um die Nodes selbst aufzusetzen und zu verwalten. So kannst du dich auf den Aufbau deines Produkts konzentrieren, anstatt dich um die Wartung der Infrastruktur kümmern zu müssen. +Der Hauptvorteil bei der Nutzung eines Node-Dienstes besteht darin, dass keine Entwicklungszeit benötigt wird, um die Nodes selbst warten und zu verwalten. So können Sie sich auf den Aufbau Ihres Produkts konzentrieren, anstatt sich um die Wartung der Infrastruktur kümmern zu müssen. -Der Betrieb eigener Nodes kann sehr kostspielig sein, vom Speicherplatz über die Bandbreite bis hin zu wertvoller Entwicklungszeit. Dinge wie das Starten weiterer Nodes bei der Skalierung, das Aufrüsten von Nodes auf die neueste Version und die Sicherstellung der Zustandskonsistenz können von der Entwicklung und dem Einsatz von Ressourcen für dein gewünschtes Web3-Produkt ablenken. +Der Betrieb eigener Nodes kann sehr kostspielig sein, vom Speicherplatz über die Bandbreite bis hin zu wertvoller Entwicklungszeit. Dinge wie das Starten weiterer Nodes bei der Skalierung, das Aufrüsten von Nodes auf die neueste Version und die Sicherstellung der Zustandskonsistenz können von der Entwicklung und dem Einsatz von Ressourcen für Ihr gewünschtes Web3-Produkt ablenken. ## Was sind die Nachteile eines Node-Dienstes? {#cons-of-using-a-node-service} -Durch den Einsatz eines Node-Dienstes zentralisierst du den Infrastrukturaspekt deines Produkts. Aus diesem Grund bevorzugen Projekte, für die Dezentralisierung die oberste Priorität hat, eher selbst bereitgestellte Nodes gegenüber Outsourcing an Dritte. +Durch den Einsatz eines Node-Dienstes zentralisieren Sie den Infrastrukturaspekt Ihres Produkts. Aus diesem Grund bevorzugen Projekte, für die Dezentralisierung die oberste Priorität hat, eher selbst bereitgestellte Nodes gegenüber Outsourcing an Dritte. -Erfahre mehr über die [Vorteile des Betriebs deines eigenen Nodes](/developers/docs/nodes-and-clients/#benefits-to-you). +Erfahren Sie mehr über die [Vorteile des Betriebs Ihres eigenen Nodes](/developers/docs/nodes-and-clients/#benefits-to-you). ## Beliebte Node-Dienste {#popular-node-services} -Hier ist eine Liste der beliebtesten Ethereum-Nodeanbieter. Du bist eingeladen, fehlende hinzuzufügen! Jeder Node-Dienst bietet zusätzlich zu kostenlosen oder bezahlten Stufen verschiedene Vorteile und Funktionen. Bevor du dich entscheidest, solltest du untersuchen, welcher am besten zu deinen Bedürfnissen passt. +Hier ist eine Liste der beliebtesten Ethereum-Nodeanbieter. Fügen Sie gerne neue hinzu, die noch fehlen! Jeder Node-Dienst bietet zusätzlich zu kostenlosen oder bezahlten Stufen verschiedene Vorteile und Funktionen. Bevor Sie sich entscheiden, sollten Sie prüfen, welcher am besten zu Ihren Bedürfnissen passt. -- [**Alchemy**](https://www.alchemy.com/) +- [**Alchemy**](https://alchemy.com/) - [Dokumentation](https://docs.alchemyapi.io/) - Eigenschaften - - Kostenlose Tier-Option - - Skalierung nach Belieben - - Kostenlose Archivdaten - - Analysetools - - Dashboard - - Einzigartige API-Endpunkte - - Webhooks - - Direkter Support + - Die größte kostenlose Stufe bietet 300 Millionen Recheneinheiten pro Monat (ca. 30 Millionen getLatestBlock-Anfragen) + - Multichain-Unterstützung für Polygon, Starknet, Optimism, Arbitrum + - Verantwortlich für etwa 70 % der größten dApps und DeFi-Transaktionsvolumina von Ethereum + - Webhook-Benachrichtigungen in Echtzeit über Alchemy Notify + - Branchenführender Support und Zuverlässigkeit/Stabilität + - NFT-API von Alchemy + - Dashboard mit Request Explorer, Mempool Watcher und Composer + - Integrierter Testnetz-Faucet-Zugang + - Aktive Discord-Entwicklergemeinschaft mit 18.000 Nutzern +- [**All diese Nodes**](https://allthatnode.com/) + - [Dokumentation](https://docs.allthatnode.com/) + - Eigenschaften + - Die größte kostenlose Stufe bietet 150.000 Anfragen pro Tag + - Zugang zu über 24 Blockchain-Nodes + - RPC-, HTTPS- und WSS-Endpunkte + - Unbegrenzter Zugriff auf Archivdaten + - Support rund um die Uhr und Serververfügbarkeit über 99,9 % + - Ein Faucet ist auf mehreren Chains verfügbar + - Unbegrenzter Zugriff auf Endpunkte mit einer unbegrenzten Anzahl von API-Schlüsseln + - Trace-/Debug-Namespace ist verfügbar + - Automatisierte Updates + - Technischer Support - [**Ankr**](https://www.ankr.com/) - [Dokumentation](https://docs.ankr.com/) - Eigenschaften - - Ankr-Protokoll – offener Zugang zu öffentlichen RPC-API-Endpunkten für 8+ Ketten - - Lastausgleich und Überwachung der Node-Gesundheit für ein schnelles und zuverlässiges Gateway zum nächstgelegenen verfügbaren Node - - Premium-Tier mit WSS-Endpunkt und unbegrenzter Tarifgrenze - - Bereitstellung von vollständigen Nodes und Validierungs-Nodes für 40+ Ketten mit einem Klick - - Skalierung nach Belieben + - Ankr-Protokoll – offener Zugang zu öffentlichen RPC-API-Endpunkten für über 8 Chains + - Lastausgleich und Überwachung der Node-Sicherheit für ein schnelles und zuverlässiges Gateway zum nächstgelegenen verfügbaren Node + - Premium-Tier mit WSS-Endpunkt und unbegrenzter Rate + - Bereitstellung von vollständigen Nodes und Validierungs-Nodes für über 40 Chains mit einem Klick + - Skalierung nach Bedarf - Analysetools - Dashboard - RPC-, HTTPS- und WSS-Endpunkte - Direkter Support +- [**Blast**](https://blastapi.io/) + - [Dokumentation](https://docs.blastapi.io/) + - Eigenschaften + - Support für RPC und WSS + - Hosting von Nodes in mehreren Regionen + - Dezentrale Infrastruktur + - Öffentliche API + - Spezifischer kostenloser Plan + - Unterstützung für mehrere Blockchains (über 17 Blockchains) + - Archivierte Nodes + - Discord-Support rund um die Uhr + - Überwachung und Benachrichtigungen rund um die Uhr + - Eine Gesamt-Service-Level-Vereinbarung (SLA) von 99,9 % + - Mit Kryptowährungen bezahlen - [**BlockDaemon**](https://blockdaemon.com/) - [Dokumentation](https://ubiquity.docs.blockdaemon.com/) - Vorteile - Dashboard - Pro-Node-Basis - - Analyse + - Analysen +- [**BlockPI**](https://blockpi.io/) + - [Dokumentation](https://docs.blockpi.io/) + - Funktionen + - Robuste & verteilte Node-Struktur + - Bis zu 40 HTTPS- und WSS-Endpunkte + - Kostenloses Anmeldepaket und monatliches Paket + - Support für Trace-Methode und Archivdaten + - Pakete mit einer Gültigkeit von bis zu 90 Tagen + - Individueller Plan und Zahlung nach Verbrauch (Pay-as-you-go) + - Mit Kryptowährungen bezahlen + - Direkte Unterstützung & technischer Support - [**Chainstack**](https://chainstack.com/) - [Dokumentation](https://docs.chainstack.com/) - Eigenschaften @@ -79,120 +126,201 @@ Hier ist eine Liste der beliebtesten Ethereum-Nodeanbieter. Du bist eingeladen, - Gemeinsam genutzte Archiv-Nodes - GraphQL-Support - RPC- und WSS-Endpunkte - - Dedizierte Voll- und Archiv-Nodes + - Speziielle Voll- und Archiv-Nodes - Schnelle Synchronisierungszeit für gezielte Einsätze - - Bring deine Cloud mit + - Bringen Sie Ihre Cloud mit - Bezahlung pro Stunde - - Direkter 24/7-Support + - Direkter Support rund um die Uhr +- [**DataHub**](https://datahub.figment.io) + - [Dokumentation](https://docs.figment.io/) + - Eigenschaften + - Kostenlose Stufe mit 3.000.000 Anfragen pro Monat + - RPC- und WSS-Endpunkte + - Dedizierte Voll- und Archiv-Nodes + - Automatische Skalierung (Volumenrabatte) + - Kostenlose Archivdaten + - Service-Analysen + - Dashboard + - Direkter Support rund um die Uhr + - In Kryptowährung bezahlen (Unternehmen) +- [DRPC](https://drpc.org/) + - [Dokumentation](https://docs.drpc.org/) + - Eigenschaften + - Dezentralisierte RPC-Nodes + - Mehr als 15 Node-Anbieter + - Node-Ausgleich + - Unbegrenzte Anzahl an Recheneinheiten pro Monat in der kostenlosen Stufe + - Datenverifizierung + - Individuelle Endpunkte + - HTTP- und WSS-Endpunkte + - Unbegrenzte Schlüssel (kostenlose oder kostenpflichtige Stufen) + - Flexible Ausweichoptionen + - [Öffentlicher Endpunkt](https://eth.drpc.org) + - Kostenlose gemeinsam genutzte Archiv-Nodes - [**GetBlock**](https://getblock.io/) - - [Dokumentation](https://getblock.io/docs/get-started/authentication-with-api-key/) + - [Dokumente](https://getblock.io/docs/get-started/authentication-with-api-key/) - Eigenschaften - - Zugang zu 40+ Blockchain-Nodes + - Zugang zu über 40 Blockchain-Knoten - 40.000 kostenlose und tägliche Anfragen - Unbegrenzte Anzahl von API-Schlüsseln - Hohe Verbindungsgeschwindigkeit mit 1GB/sec - Verfolgen+Archivieren - - Erweiterte Analyse + - Erweiterte Analysen - Automatisierte Updates - Technischer Support - [**InfStones**](https://infstones.com/) - Eigenschaften - - Kostenlose Tier-Option - - Skalierung nach Belieben - - Analyse + - Option für kostenlose Stufe + - Skalierung nach Bedarf + - Analysen - Dashboard - Einzigartige API-Endpunkte - Dedizierte vollständige Nodes - Schnelle Synchronisierungszeit für gezielte Einsätze - - Direkter 24/7-Support + - Direkter Support rund um die Uhr - Zugang zu mehr als 50 Blockchain-Nodes - [**Infura**](https://infura.io/) - [Dokumentation](https://infura.io/docs) - Eigenschaften - - Kostenlose Tier-Option - - Skalierung nach Belieben - - Kostenlose Archivierungsdaten + - Option für kostenlose Stufe + - Skalierung nach Bedarf + - Kostenpflichtige Archivierungsdaten - Direkter Support - Dashboard - [**Kaleido**](https://kaleido.io/) - [Dokumentation](https://docs.kaleido.io/) - Eigenschaften - - Kostenloser Starter + - Kostenlose Starter-Stufe - Bereitstellung von Ethereum-Nodes mit einem Klick - Anpassbare Clients und Algorithmen (Geth, Quorum & Besu || PoA, IBFT & Raft) - - 500+ Verwaltungs- und Service-APIs + - Mehr als 500 Verwaltungs- und Service-APIs - RESTful-Schnittstelle für die Übermittlung von Ethereum-Transaktionen (unterstützt von Apache Kafka) - Ausgehende Streams für die Zustellung von Ereignissen (unterstützt von Apache Kafka) - - Umfassende Sammlung von "Off-Chain"- und Zusatzdiensten (z. B. bilateraler verschlüsselter Nachrichtenverkehr) + - Umfassende Sammlung von „Off-Chain“- und Zusatzdiensten (z. B. bilateraler verschlüsselter Nachrichtenverkehr) - Unkompliziertes Netzwerk-Onboarding mit Governance und rollenbasierter Zugriffskontrolle - Ausgefeilte Benutzerverwaltung für Administratoren und Endbenutzer - Hochgradig skalierbare, belastbare, unternehmensgerechte Infrastruktur - Verwaltung privater HSM-Schlüssel in der Cloud - - Ethereum Mainnet-Anbindung + - Ethereum Mainnet-Tethering - ISO 27000 und SOC 2, Typ-2-Zertifizierungen - Dynamische Laufzeitkonfiguration (z. B. Hinzufügen von Cloud-Integrationen, Änderung von Knoteneingängen usw.) - - Unterstützung für Multi-Cloud-, Multi-Region- und Hybrid-Einsatz-Orchestrierungen + - Unterstützung für Orchestrierungen von Multi-Cloud-, Multi-Region- und Hybrid-Bereitstellungen - Einfache SaaS-Preise auf Stundenbasis - - SLAs- und 24/7-Support + - SLA- und 24/7-Support +- [**Lava Network**](https://www.lavanet.xyz/) + - [Dokumentation](https://docs.lavanet.xyz/) + - Eigenschaften + - Kostenlose Testnetz-Nutzung + - Dezentrale Redundanz für hohe Verfügbarkeit + - Open-Source + - Vollständig dezentralisierte SDK + - Integration von Ethers.js + - Intuitive Projektmanagement-Benutzeroberfläche + - Konsensbasierte Datenintegrität + - Unterstützung für mehrere Blockchains - [**Moralis**](https://moralis.io/) - [Dokumentation](https://docs.moralis.io/) - Eigenschaften - Kostenloses Teilen von Nodes - Kostenlose gemeinsam genutzte Archiv-Nodes - - Datenschutzfokussiert (keine Logs-Politik) - - Kettenübergreifender Support - - Skalierung nach Belieben + - Datenschutzorientiert (keine Protokollrichtlinien) + - Chain-übergreifender Support + - Skalierung nach Bedarf - Dashboard - Einzigartiges Ethereum-SDK - Einzigartige API-Endpunkte - Direkter, technischer Support +- [**NodeReal MegaNode**](https://nodereal.io/) + - [Dokumentation](https://docs.nodereal.io/nodereal/meganode/introduction) + - Features + - Zuverlässige, schnelle und skalierbare RPC-API-Services + - Verbesserte API für Web3-Entwickler + - Unterstützung für mehrere Blockchains + - Kostenloser Einstieg +- [**NOWNodes**](https://nownodes.io/) + - [Dokumente](https://documenter.getpostman.com/view/13630829/TVmFkLwy) + - Eigenschaften + - Zugang zu mehr als 50 Blockchain-Nodes + - Kostenloser API-Schlüssel + - Block-Explorer + - API-Antwortzeit ≤ 1 Sekunde + - Support-Team rund um die Uhr (24/7) + - Persönlicher Account Manager + - Geteilte, archivierte, Backup- und Spezial-Nodes - [**Pocket Network**](https://www.pokt.network/) - - [Dokumentation](https://docs.pokt.network/home/) + - [Dokumente](https://docs.pokt.network/home/) - Eigenschaften - Dezentrales RPC-Protokoll und Marktplatz - - 1 Mio. Anfragen pro Tag für kostenlose Tiers (pro Endpunkt, max. 2) + - 1 Mio. Anfragen pro Tag für kostenlose Stufen (pro Endpunkt, max. 2) - [Öffentliche Endpunkte](https://docs.pokt.network/home/resources/public-rpc-endpoints) - - Pre-Stake+-Programm (wenn du mehr als 1 Mio. Anfragen pro Tag benötigst) - - Unterstützung von 15+ Blockchains - - 6400+ Nodes verdienen POKT für die Bedienung von Anwendungen - - Archivierungs- und Archivierungsnodes mit Rückverfolgung und Testnetz-Node-Unterstützung - - Ethereum Mainnet Node-Client-Diversität + - Pre-Stake+-Programm (wenn Sie mehr als 1 Mio. Anfragen pro Tag benötigen) + - Support für mehr als 15 Blockchains + - Über 6400 Nodes verdienen POKT für die Bedienung von Anwendungen + - Archivierungsnodes, Archivierungsnodes mit Rückverfolgung & Support für Testnetz-Node + - Client-Diversität für Ethereum Mainnet Node - Kein einzelner Ausfallpunkt - Keine Ausfallzeit - - Kosteneffiziente Near-Zero Tokenomics (POKT einmal für Netzwerkbandbreite einsetzen) - - Keine monatlichen versunkenen Kosten: Verwandle deine Infrastruktur in einen Vermögenswert - - Load-Balancing im Protokoll integriert - - Unendliche Skalierung der Anzahl von Anfragen pro Tag und der Nodes pro Stunde - - Die privatste und zensurresistenteste Option + - Kosteneffiziente nahe-Null Tokenomics (POKT einmal für Netzwerkbandbreite einsetzen) + - Keine monatlichen, verlorenen Kosten: Verwandeln Sie Ihre Infrastruktur in einen Vermögenswert + - Im Protokoll integrierter Lastausgleich + - Unendliche Skalierung der Anzahl von Anfragen pro Tag und der Nodes pro Stunde nach Bedarf + - Die Option für höchste Privatsphäre und Zensurresistenz - Praktische Unterstützung für Entwickler - [Pocket Portal](https://bit.ly/ETHorg_POKTportal)-Dashboard und Analysen -- [**QuikNode**](https://www.quiknode.io/) +- [**QuickNode**](https://www.quicknode.com) + - [Dokumente](https://www.quicknode.com/docs/) - Eigenschaften - - 7 Tage kostenlos - - Vielseitiger Support - - Webhooks - - Dashboard - - Analyse + - Technischer Support rund um die Uhr & Discord-Community für Entwickler + - Geobalanciertes, Multi-Cloud/Metal-unterstütztes Netzwerk mit geringer Latenz + - Unterstützung für mehrere Blockchains (Optimism, Arbitrum, Polygon + 11 weitere) + - Mittelebenen für Geschwindigkeit & Stabilität (Anrufweiterleitung, Cache, Indizierung) + - Smart Contract-Überwachung über Webhooks + - Intuitives Dashboard, Analysesuite, RPC-Composer + - Erweiterte Sicherheitsfunktionen (JWT, Maskierung, Whitelisting) + - NFT-Daten- und Analyse-API + - [SOC2-zertifiziert](https://www.quicknode.com/security) + - Geeignet für Entwickler und Unternehmen - [**Rivet**](https://rivet.cloud/) - - [Dokumentation](https://rivet.readthedocs.io/en/latest/) + - [Dokumente](https://rivet.readthedocs.io/en/latest/) + - Eigenschaften + - Option für kostenlose Stufe + - Skalierung nach Bedarf +- [**SenseiNode**](https://senseinode.com) + - [Dokumente](https://docs.senseinode.com/) - Eigenschaften - - Kostenlose Tier-Option - - Skalierung nach Belieben + - Spezielle und gemeinsam genutzte Nodes + - Dashboard + - Hosting außerhalb von AWS auf mehreren Hosting-Anbietern an verschiedenen Standorten in Lateinamerika + - Prysm- und Lighthouse-Clients - [**SettleMint**](https://console.settlemint.com/) - - [Dokumentation](https://docs.settlemint.com/) + - [Dokumente](https://docs.settlemint.com/) - Eigenschaften - Kostenlose Testphase - - Skalierung nach Belieben + - Skalierung nach Bedarf - GraphQL-Support - RPC- und WSS-Endpunkte - Dedizierte vollständige Nodes - - Bring deine Cloud mit + - Bringen Sie Ihre Cloud mit - Analysetools - Dashboard - Bezahlung pro Stunde - Direkter Support +- [**Tenderly**](https://tenderly.co/web3-gateway) + - [Dokumente](https://docs.tenderly.co/web3-gateway/web3-gateway) + - Eigenschaften + - Kostenlose Stufe einschließlich 25 Millionen Tenderly-Einheiten pro Monat + - Kostenloser Zugang zu historischen Daten + - Bis zu 8-mal schnellere Lesevorgänge bei lastintensiven Workloads + - 100 % konsistenter Lesezugriff + - JSON-RPC-Endpunkte + - UI-basierter RPC-Anforderungs-Builder und Vorschau der Anforderung + - Eng integriert mit Tenderlys Entwicklungs-, Debugging- und Testwerkzeugen + - Transaktionssimulationen + - Nutzungsanalysen und Filterung + - Einfache Zugriffsschlüssel-Verwaltung + - Dedizierter technischer Support per Chat, E-Mail und Discord - [**Watchdata**](https://watchdata.io/) - - [Dokumentation](https://docs.watchdata.io/) + - [Dokumente](https://docs.watchdata.io/) - Eigenschaften - Zuverlässigkeit der Daten - Ununterbrochene Verbindung ohne Ausfallzeiten @@ -202,14 +330,55 @@ Hier ist eine Liste der beliebtesten Ethereum-Nodeanbieter. Du bist eingeladen, - Unterstützung für unterschiedliche Nodes - Ressourcenskalierung - Hohe Verarbeitungsgeschwindigkeit +- [**ZMOK**](https://zmok.io/) + - [Dokumente](https://docs.zmok.io/) + - Eigenschaften + - Front-Running als Service + - Globale Transaktions-Mempool mit Such- und Filtermethoden + - Unbegrenzte Transaktionsgebühr und unendliches Gas für den Versand von Transaktionen + - Schnellster Zugriff auf den neuen Block und Lesen der Blockchain + - Die beste Preisgarantie pro API-Aufruf +- [**Chainbase**](https://www.chainbase.com/) + - [Dokumente](https://docs.chainbase.com) + - Eigenschaften + - Hochverfügbarer, schneller und skalierbarer RPC-Dienst + - Unterstützung für mehrere Blockchains + - Kostenlose Tarife + - Benutzerfreundliches Dashboard + - Bietet Blockchain-Datendienste über RPC hinaus + +[**Zeeve**](https://www.zeeve.io/) + +- [Dokumente](https://www.zeeve.io/docs/) +- Eigenschaften + - No-Code-Automatisierungsplattform auf Unternehmensebene, die die Bereitstellung, Überwachung und Verwaltung von Blockchain-Knoten und -Netzwerken ermöglicht + - Mind. 30 unterstützte Protokolle und Integrationen, mit der Möglichkeit weitere hinzuzufügen + - Wertsteigernde Web3-Infrastrukturdienste wie dezentraler Speicher, dezentrale Identität und Blockchain-Ledger-Daten-APIs für reale Anwendungsfälle + - Support und proaktives Monitoring rund um die Uhr stellen die Sicherheit der Knoten zu jeder Zeit sicher. + - RPC-Endpunkte bieten authentifizierten Zugang zu API, mühelose Verwaltung mit intuitiven Dashboards und Analysen. + - Bietet sowohl Optionen für verwaltete Clouds und Nutzung der eigenen Cloud und Support für die wichtigsten Cloud-Anbieter wie AWS, Azure, Google Cloud, Digital Ocean andere lokale Anbieter. + - Wir verwenden intelligentes Routing, um bei jeder Anfrage den dem Benutzer am nächsten gelegenen Knoten anzusteuern + +[**Tokenview**](https://services.tokenview.io/) + +- [Dokumente](https://services.tokeniew/docs?type=nodeService) +- Eigenschaften + - Technische Unterstützung rund um die Uhr & Dev Telegram APP-Community + - Multichain-Unterstützung (Bitcoin, Ethereum, Tron, BNB Smart Chain, Ethereum Classic) + - Sowohl die RPC- als auch die WSS-Endpunkte können genutzt werden + - Unbegrenzter Zugang zur Archivdaten-API + - Dashboard mit Request Explorer und Mempool Watcher + - NFT-Daten-API und Webhook-Benachrichtigung + - Mit Kryptowährung zahlen + - Externe Unterstützung für zusätzliche Verhaltenskriterien ## Weiterführende Informationen {#further-reading} -- [Liste der Ethereum-Nodedienste](https://ethereumnodes.com/) +- [Liste der Ethereum-Knotendienste](https://ethereumnodes.com/) ## Verwandte Themen {#related-topics} -- [Nodes und Clients](/developers/docs/nodes-and-clients/) +- [Knotenpunkte und Clients](/developers/docs/nodes-and-clients/) ## Verwandte Tutorials {#related-tutorials} diff --git a/src/content/translations/de/developers/docs/nodes-and-clients/nodes.png b/src/content/translations/de/developers/docs/nodes-and-clients/nodes.png new file mode 100644 index 0000000000000000000000000000000000000000..db2aa64bb0d06d4fdcc1db0f027d041bcd8f7e0d GIT binary patch literal 206001 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 u4u4qZ(Y9Z07GQ~nEVVPMDr literal 0 HcmV?d00001 diff --git a/src/content/translations/de/developers/docs/nodes-and-clients/run-a-node/diagram.png b/src/content/translations/de/developers/docs/nodes-and-clients/run-a-node/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..a220c3a5b442c3cdd757561b669b61841c8b4757 GIT binary patch literal 27324 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 Np{o0^TG{T^{{SeQH17Za literal 0 HcmV?d00001 diff --git a/src/content/translations/de/developers/docs/nodes-and-clients/run-a-node/index.md b/src/content/translations/de/developers/docs/nodes-and-clients/run-a-node/index.md index d17542cec91..e41f72495f8 100644 --- a/src/content/translations/de/developers/docs/nodes-and-clients/run-a-node/index.md +++ b/src/content/translations/de/developers/docs/nodes-and-clients/run-a-node/index.md @@ -1,164 +1,465 @@ --- -title: Errichte deinen eigenen Ethereum-Node +title: Errichten Sie Ihren eigenen Ethereum-Node description: Allgemeine Einführung in den Betrieb einer eigenen Ethereum-Client-Instanz. lang: de sidebarDepth: 2 --- -Der Betrieb einer eigener Node bietet dir verschiedene Vorteile, eröffnet neue Möglichkeiten und trägt zur Unterstützung des Ökosystems bei. Diese Seite führt dich durch die Einrichtung deines eigenen Nodes und die Teilnahme an der Validierung von Ethereum-Transaktionen. +Der Betrieb eines eigenen Nodes bietet Ihnen verschiedene Vorteile, eröffnet neue Möglichkeiten und trägt zur Unterstützung des Ökosystems bei. Diese Seite führt Sie durch die Einrichtung Ihres eigenen Nodes und die Teilnahme an der Validierung von Ethereum-Transaktionen. + +Bitte beachten Sie, dass seit [der Zusammenführung](/roadmap/merge) zwei Clients erforderlich sind, um einen Ethereum-Knoten zu betreiben; ein Client auf **Ausführungsebene (EL)** und ein Client auf **Konsensebene (CL)**. Auf dieser Seite zeigen wir Ihnen die Installation, Konfiguration und Verbindung dieser beiden Clients, um einen Ethereum-Knoten zu betreiben. ## Voraussetzungen {#prerequisites} -Du solltest verstehen, was ein Ethereum-Node ist und warum du möglicherweise einen Client betreiben solltest. Dies wird in [Nodes und Clients](/developers/docs/nodes-and-clients/) behandelt. +Sie sollten verstehen, was ein Ethereum-Knoten ist und warum Sie ggf. einen Client betreiben sollten. Dieses Thema wird unter [Nodes und Clients](/developers/docs/nodes-and-clients/) behandelt. -Wenn das Thema neu für dich ist oder du nach einem weniger technischen Weg suchst, empfehlen wir dir, zunächst unsere benutzerfreundliche Einführung zum [Betrieb eines Ethereum-Nodes](/run-a-node) zu lesen. +Wenn das Thema neu für Sie ist oder Sie nach einem weniger technischen Weg suchen, empfehlen wir Ihnen, zunächst unsere benutzerfreundliche Einführung zum [Betrieb eines Ethereum-Knotens](/run-a-node) zu lesen. ## Herangehensweise bestimmen {#choosing-approach} -Der erste Schritt beim Einrichten deines Nodes besteht in der Wahl der Herangehensweise. Du musst den Client (die Software), die Umgebung und die Parameter auswählen, mit denen du beginnen möchtest. >Hier sind alle verfügbaren [Mainnet-Clients](/developers/docs/nodes-and-clients/#advantages-of-different-implementations). +Der erste Schritt beim Einrichten Ihres Knotens besteht in der Wahl der Herangehensweise. Auf der Grundlage der Anforderungen und der verschiedenen Möglichkeiten müssen Sie die Client-Implementierung (sowohl für Ausführungs- als auch für Konsensclients), die Umgebung (Hardware, System) und die Parameter für die Client-Einstellungen auswählen. + +Diese Seite wird Sie dabei unterstützen, diese Entscheidungen zu treffen und die am besten geeignete Methode für den Betrieb Ihrer Ethereum-Instanz zu finden. + +Um aus Client-Implementierungen auszuwählen, sehen Sie sich alle verfügbaren Mainnet-fähigen [Ausführungsclients](/developers/docs/nodes-and-clients/#execution-clients), [Konsensclients](/developers/docs/nodes-and-clients/#consensus-clients) an und erfahren Sie mehr über [Client-Vielfalt](/developers/docs/nodes-and-clients/client-diversity). + +Entscheiden Sie, ob Sie die Software auf Ihrer eigenen [Hardware oder in der Cloud](#local-vs-cloud) betreiben möchten und berücksichtigen Sie dabei die [Anforderungen](#Anforderungen) des Clients. -#### Client-Einstellungen {#client-settings} +Nachdem Sie die Umgebung vorbereitet haben, installieren Sie die ausgewählten Clients entweder mit der[einsteigerfreundlichen Schnittstelle](#automatized-setup) oder [manuell](#manual-setup) über ein Terminal mit erweiterten Optionen. -Client-Implementierungen ermöglichen unterschiedliche Synchronisierungsmodi und verschiedene andere Optionen. [Synchronisierungsmodi](/developers/docs/nodes-and-clients/#sync-modes) stellen verschiedene Methoden zum Herunterladen und Validieren von Blockchain-Daten dar. Bevor du den Node startest, solltest du entscheiden, welchen Netzwerk- und Synchronisierungsmodus du verwenden möchtest. Das Wichtigste sind der Speicherplatz und die Synchronisierungszeit, die der Client benötigt. +Wenn Ihr Knoten ausgeführt wird und synchronisiert ist, können Sie diesen [nutzen](#benutzen-den-node), Sie sollten jedoch die [Wartung](#betreiben-den-node) im Auge behalten. -Alle Funktionen und Optionen sind in der Dokumentation des Clients zu finden. Es können verschiedene Client-Konfigurationen eingestellt werden, indem der Client mit den entsprechenden Flags ausgeführt wird. Zu Testzwecken kannst du einen Client in einem der Testnetze betreiben. [Übersicht der unterstützten Netzwerke](/developers/docs/nodes-and-clients/#execution-clients) +![Client-Setup](./diagram.png) ### Umgebung und Hardware {#environment-and-hardware} #### Lokal oder Cloud {#local-vs-cloud} -Ethereum-Clients können auf gewöhnlichen Computern laufen und benötigen keine spezielle Hardware, wie zum Beispiel beim Mining. Daher hast du je nach Bedarf verschiedene Optionen für den Einsatz. Zur Vereinfachung stellen wir uns vor, dass ein Node sowohl auf einem lokalen physischen Computer als auch auf einem Cloud-Server läuft: +Ethereum-Clients können auf gewöhnlichen Heim-Computern ausgeführt werden und benötigen keine spezielle Hardware, wie z. B. Mining-Maschinen. Sie haben also verschiedene Möglichkeiten, den Knoten je nach Ihren Bedürfnissen zu betreiben. Zur Vereinfachung stellen wir uns vor, dass ein Knoten sowohl auf einem lokalen physischen Computer als auch auf einem Cloud-Server ausgeführt werden kann: - Cloud - - Anbieter bieten eine hohe Serververfügbarkeit, statische öffentliche IP-Adressen + - Anbieter bieten eine hohe Serververfügbarkeit und statische öffentliche IP-Adressen - Ein dedizierter oder virtueller Server kann bequemer sein als ein eigener - Die Gegenleistung ist das Vertrauen in eine dritte Partei – den Serveranbieter - - Aufgrund der erforderlichen Speichergröße für einen vollständigen Node kann der Preis für einen gemieteten Server hoch werden + - Aufgrund der erforderlichen Speichergröße für vollständige Knoten kann der Preis für einen gemieteten Server hoch sein - Eigene Hardware - Vertrauenslosere und souveränere Vorgehensweise - Einmalige Investition - Option zum Kauf vorkonfigurierter Maschinen - - Du musst die Maschine physisch vorbereiten, warten und ggf. Fehler beheben + - Sie müssen den Rechner und das Netzwerk technisch vorbereiten, warten und möglicherweise Fehler beheben -Beide Optionen haben verschiedene Vorteile, die oben zusammengefasst sind. Wenn du eine Cloudlösung suchst, gibt es neben vielen traditionellen Cloud-Computing-Anbietern auch Dienste, die sich auf die Bereitstellung von Nodes konzentrieren. Beispiel: - -- [QuikNode](https://www.quiknode.io/) -- [Blockdaemon](https://blockdaemon.com) -- [LunaNode](https://www.lunanode.com/) -- [Alchemy](https://www.alchemy.com/) +Beide Optionen haben verschiedene Vorteile, die oben zusammengefasst sind. Wenn Sie eine Cloud-Lösung suchen, gibt es neben vielen traditionellen Cloud-Computing-Anbietern auch Dienste, die sich auf die Bereitstellung von Knoten konzentrieren. Unter [Nodes als Dienste](/developers/docs/nodes-and-clients/nodes-as-a-service/) finden Sie weitere Optionen für gehostete Nodes. #### Hardware {#hardware} -Ein zensurresistentes, dezentrales Netz sollte sich jedoch nicht auf Cloudanbieter verlassen. Es ist gesünder für das Ökosystem, wenn du deinen eigenen Node auf einer Hardware betreibst. Die einfachsten Optionen sind vorkonfigurierte Geräte, z. B.: +Ein zensurresistentes, dezentrales Netz sollte sich jedoch nicht auf Cloud-Anbieter verlassen. Stattdessen ist es für das Ökosystem gesünder, wenn Sie Ihren Node auf Ihrer eigenen lokalen Hardware betreiben. [Schätzungen](https://www.ethernodes.org/networkType/Hosting) zeigen, dass ein großer Teil der Knoten in der Cloud betrieben werden, was zu einer einzelnen Fehlerquelle führen kann. + +Ethereum-Clients können auf Ihrem Computer, Laptop, Server oder sogar auf einem Einplatinencomputer ausgeführt werden. Es ist zwar möglich, Clients auf Ihrem Heimcomputer auszuführen, jedoch kann ein eigens für Ihren Knoten eingerichteter Rechner dessen Leistung und Sicherheit erheblich verbessern und gleichzeitig die Auswirkungen auf Ihren primären Computer minimieren. + +Die Verwendung Ihrer eigenen Hardware kann sehr einfach sein. Es gibt viele einfache Optionen, aber auch fortgeschrittene Einstellungen für technisch versierte Personen. Schauen wir uns also die Voraussetzungen und Mittel für die Ausführung von Ethereum-Clients auf Ihrem Rechner an. + +#### Voraussetzungen {#requirements} + +Die Hardware-Anforderungen sind je nach Client unterschiedlich, aber im Allgemeinen nicht besonders hoch, da der Knoten nur synchronisiert bleiben muss. Verwechseln Sie das nicht mit dem Mining, das viel mehr Rechenleistung erfordert. Die Synchronisation von Zeit und Leistung verbessert sich jedoch mit leistungsstärkerer Hardware. + +Bevor Sie einen Client installieren, stellen Sie bitte sicher, dass Ihr Computer über genügend Ressourcen verfügt, um ihn auszuführen. Im Folgenden finden Sie die Mindestanforderungen und die empfohlenen Voraussetzungen. + +Der Engpass für Ihre Hardware ist meist der Speicherplatz. Die Synchronisierung der Ethereum-Blockchain ist sehr ein- und ausgabeintensiv und benötigt viel Speicherplatz. Am besten ist es, ein **Solid-State-Laufwerk (SSD)** mit Hunderten von GB freiem Speicherplatz zu haben, der selbst nach der Synchronisierung noch Speicherplatz zur Verfügung hat. + +Die Größe der Datenbank und die Geschwindigkeit der anfänglichen Synchronisierung hängen vom gewählten Client, seiner Konfiguration und der [Synchronisierungsstrategie](/developers/docs/nodes-and-clients/#sync-modes) ab. + +Vergewissern Sie sich auch, dass Ihre Internetverbindung nicht durch eine [Bandbreitenbeschränkung](https://wikipedia.org/wiki/Data_cap) begrenzt ist. Es wird empfohlen, eine nicht gebührenpflichtige Verbindung zu verwenden, da die anfängliche Synchronisierung und die an das Netzwerk übertragenen Daten Ihr Limit überschreiten könnten. + +##### Betriebssystem + +Alle Clients unterstützen die wichtigsten Betriebssysteme: Linux, MacOS, Windows. Das bedeutet, dass Ihre Knoten auf normalen Desktop- oder Server-Rechnern mit dem Betriebssystem (OS), welches Ihnen am besten passt, betrieben werden können. Stellen Sie sicher, dass Ihr Betriebssystem auf dem neuesten Stand ist, um mögliche Probleme und Sicherheitslücken zu vermeiden. + +##### Mindestanforderungen + +- CPU mit mind. 2 Kernen +- 8 GB RAM +- 2TB SSD +- Mind. 10 MBit/s Bandbreite + +##### Empfohlene Spezifikationen + +- Schnelle CPU mit mind. 4 Kernen +- Mind. 16 GB RAM +- Schnelle SSD mit mind. 2 TB +- Mind. 25 MBit/s Bandbreite + +Der von Ihnen gewählte Synchronisierungsmodus und Client wirken sich auf den Speicherplatzbedarf aus, wir haben jedoch den Speicherplatz, den Sie für jeden Client benötigen, im Folgenden geschätzt. + +| Client | Festplattengröße (Snap-Synchronisation) | Festplattengröße (Vollständiges Archiv) | +| ---------- | --------------------------------------- | --------------------------------------- | +| Geth | Mind. 500 GB | Mind. 12TB | +| Nethermind | Mind. 500 GB | Mind. 12TB | +| Besu | Mind. 800 GB | Mind. 12TB | +| Erigon | N/V | Mind. 2,5 TB | + +- Hinweis: Erigon bietet keine Snap-Synchronisation, aber Full Pruning ist möglich (ca. 500 GB) + +Bei Konsens-Clients hängt der Platzbedarf auch von der Client-Implementierung und den aktivierten Funktionen (z. B. Validator Slasher) ab, im Allgemeinen werden jedoch weitere 200 GB für Beacon-Daten benötigt. Mit einer großen Anzahl von Validatoren steigt auch die Bandbreitenbelastung. [Details zu den Anforderungen an Konsensclients finden Sie in dieser Analyse](https://medium.com/@migalabs/analysis-of-ethereum-2-consensus-clients-dfede8e0145e). + +#### Plug-and-Play-Lösungen {#plug-and-play} + +Die einfachste Möglichkeit, einen Knoten mit eigener Hardware zu betreiben, ist die Verwendung von Plug-and-Play-Modulen. Vorkonfigurierte Geräte von Anbietern bieten die unkomplizierteste Lösung: bestellen, anschließen, loslegen. Alles ist vorkonfiguriert und läuft automatisch mit einer intuitiven Anleitung und einem Dashboard zur Überwachung und Steuerung der Software. - [DappNode](https://dappnode.io/) - [Avado](https://ava.do/) -Überprüfe die minimalen und empfohlenen [Festplattenspeicherplatzanforderungen für jeden Client und Synchronisierungsmodus](/developers/docs/nodes-and-clients/#requirements). Im Allgemeinen sollte eine bescheidene Rechenleistung ausreichen. Das Problem ist in der Regel die Geschwindigkeit der Datenträger. Während der anfänglichen Synchronisierung führen Ethereum-Clients eine Menge Lese- und Schreibvorgänge durch. Daher wird SSD dringend empfohlen. Ein Client ist möglicherweise nicht einmal [in der Lage, den aktuellen Stand auf der Festplatte zu synchronisieren](https://github.com/ethereum/go-ethereum/issues/16796#issuecomment-391649278), und bleibt ein paar Blöcke hinter dem Mainnet zurück. Du kannst die meisten Clients auf einem [Einplatinencomputer mit ARM](/developers/docs/nodes-and-clients/#ethereum-on-a-single-board-computer/) betreiben. Du kannst auch das [Ethbian](https://ethbian.org/index.html)-Betriebssystem für Raspberry Pi 4 verwenden. Damit können Sie [einen Client durch das Flashen der SD-Karte](/developers/tutorials/run-node-raspberry-pi/) starten. Je nach Software und Hardware können die anfängliche Synchronisierungszeit und die Speicheranforderungen variieren. Achte darauf, [die Synchronisierungszeiten und Speicheranforderungen zu überprüfen](/developers/docs/nodes-and-clients/#recommended-specifications). Vergewissere dich auch, dass deine Internetverbindung nicht durch eine [Bandbreitenbeschränkung](https://wikipedia.org/wiki/Data_cap) begrenzt ist. Es wird empfohlen, eine nicht gebührenpflichtige Verbindung zu verwenden, da die anfängliche Synchronisierung und die an das Netzwerk übertragenen Daten dein Limit überschreiten könnten. +#### Ethereum auf einem Einplatinenrechner {#ethereum-on-a-single-board-computer} -#### Das Betriebssystem {#operating-system} +Eine einfache und kostengünstige Möglichkeit, einen Ethereum-Node zu betreiben, ist die Verwendung eines Einplatinenrechners, sogar mit einer ARM-Architektur wie dem Raspberry Pi. [Ethereum on ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/) bietet einfach auszuführende Implementierungen von mehreren Ausführungs- und Konsensclients für Raspberry Pi und anderer ARM-Boards. -Alle Clients unterstützen die wichtigsten Betriebssysteme: Linux, MacOS, Windows. Das bedeutet, dass deine Nodes auf normalen Desktop- oder Server-Rechnern mit dem Betriebssystem (OS), welches dir am besten passt, betrieben werden können. Stelle sicher, dass dein Betriebssystem auf dem neuesten Stand ist, um mögliche Probleme und Sicherheitslücken zu vermeiden. +Kleine, kostengünstige und effiziente Geräte wie diese sind ideal für den Betrieb eines Knotens im eigenen Haushalt, doch sollte man ihre begrenzte Leistung nicht überschätzen. ## Hochfahren des Nodes {#spinning-up-node} -### Abrufen der Client-Software {#getting-the-client} +Die eigentliche Client-Einrichtung kann entweder mit automatischen Startprogrammen (Launcher) oder manuell erfolgen, indem die Client-Software direkt eingerichtet wird. + +Für weniger fortgeschrittene Benutzer empfiehlt sich die Verwendung eines „Launchers“, einer Software, die Sie durch die Installation führt und den Client-Einrichtungsprozess automatisiert. Wenn Sie jedoch etwas Erfahrung im Umgang mit einem Terminal haben, sollten die Schritte zur manuellen Einrichtung einfach zu befolgen sein. + +### Geführte Einrichtung {#automatized-setup} + +Mehrere benutzerfreundliche Projekte zielen darauf ab, die Erfahrungen bei der Einrichtung eines Kunden zu verbessern. Diese Launcher bieten eine automatische Client-Installation und -Konfiguration, wobei einige sogar eine grafische Oberfläche für die geführte Einrichtung und Überwachung der Clients bieten. -Lade zunächst deine bevorzugte [Client-Software](/developers/docs/nodes-and-clients/#execution-clients) herunter. +Im Folgenden finden Sie einige Projekte, mit denen Sie Clients mit wenigen Klicks installieren und steuern können: -Du kannst einfach eine ausführbare Anwendung oder ein Installationspaket herunterladen, das für dein Betriebssystem und deine Architektur geeignet ist. Überprüfe immer die Signaturen und Prüfsummen der heruntergeladenen Pakete. Einige Clients bieten auch Repositorys zur einfacheren Installation und Aktualisierung an. Wenn du es bevorzugst, kannst du diese aus dem Quellcode erstellen. Alle Clients sind quelloffen, so dass du sie mit dem richtigen Compiler aus dem Quellcode erstellen kannst. +- [DappNode](https://docs.dappnode.io/user/quick-start/first-steps/) – DappNode wird nicht nur mit einer Maschine von einem Anbieter bereitgestellt. Die Software, der eigentliche Node Launcher und das Kontrollzentrum mit vielen Funktionen kann auf beliebiger Hardware eingesetzt werden. +- [eth-docker](https://eth-docker.net/) – Automatisierte Einrichtung unter Verwendung von Docker mit Schwerpunkt auf einfachem und sicherem Staking, erfordert grundlegende Terminal- und Docker-Kenntnisse, empfohlen für etwas fortgeschrittenere Benutzer. +- [Stereum](https://stereum.net/ethereum-node-setup/) – Ein Launcher für die Installation von Clients auf einem Remote-Server über eine SSH-Verbindung mit einer GUI-Einrichtungsanleitung, einem Kontrollzentrum und vielen anderen Funktionen. +- [NiceNode](https://www.nicenode.xyz/) – Ein Launcher mit einer einfachen Benutzerführung, um einen Node auf Ihrem Computer zu starten. Wählen Sie einfach Clients aus und starten Sie sie mit ein paar Klicks. Noch in der Entwicklung. +- [Sedge](https://docs.sedge.nethermind.io/docs/intro) – Node-Einrichtungstool, das mit Hilfe eines CLI-Assistenten automatisch eine Docker-Konfiguration erstellt. Geschrieben in Go von Nethermind. -Ausführbare Binärdateien für stabile Mainnet-Client-Implementierungen können von den jeweiligen Release-Seiten heruntergeladen werden: +### Manuelle Einrichtung von Clients {#manual-setup} +Die andere Möglichkeit besteht darin, die Client-Software manuell herunterzuladen, zu überprüfen und zu konfigurieren. Auch wenn einige Clients eine grafische Oberfläche bieten, erfordert eine manuelle Einrichtung immer noch Grundkenntnisse im Umgang mit dem Terminal, bietet aber viel mehr Möglichkeiten. + +Wie bereits erläutert, muss für die Einrichtung Ihres eigenen Ethereum-Knotens ein Paar bestehend aus Konsens- und Ausführungsclients ausgeführt werden. Einige Clients können einen „leichten Client“ der alternativen Art enthalten und synchronisieren, ohne dass weitere Software erforderlich ist. Für eine vollständige vertrauenswürdige Überprüfung sind jedoch beide Implementierungen erforderlich. + +#### Abrufen der Client-Software {#getting-the-client} + +Als erstes müssen Sie sich Ihre bevorzugte Software für den [Ausführungsclient](/developers/docs/nodes-and-clients/#execution-clients) und [Konsensclient](/developers/docs/nodes-and-clients/#consensus-clients) beschaffen. + +Sie können einfach eine ausführbare Anwendung oder ein Installationspaket herunterladen, das für Ihr Betriebssystem und Ihre Systemarchitektur geeignet ist. Überprüfen Sie immer die Signaturen und Prüfsummen der heruntergeladenen Pakete. Einige Clients bieten auch Repositories oder Docker-Abbildungen zur einfacheren Installation und Aktualisierung an. Alle Clients sind quelloffen, so dass Sie sie auch aus dem Quellcode erstellen können. Dies ist eine fortgeschrittenere Methode, jedoch kann sie in manchen Fällen erforderlich sein. + +Anleitungen zur Installation der einzelnen Clients finden Sie in der Dokumentation, die in den Client-Listen oben verlinkt ist. + +Dort finden Sie die Versionsseiten der Clients, auf denen Sie die vorgefertigten Binärdateien oder Anweisungen zur Installation finden können: + +##### 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) - [Geth](https://geth.ethereum.org/downloads/) -- [OpenEthereum](https://github.com/openethereum/openethereum/releases) - [Nethermind](https://downloads.nethermind.io/) -- [Besu](https://besu.hyperledger.org/en/stable/) -- [Erigon](https://github.com/ledgerwatch/erigon) -**Beachte, dass OpenEthereum [veraltet](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) ist und nicht mehr gewartet wird.** Verwende es mit Vorsicht und wechsle lieber zu einer anderen Client-Implementierung. +Es sei auch erwähnet, dass die Client-Vielfalt ein [Problem auf der Ausführungsebene](/developers/docs/nodes-and-clients/client-diversity/#execution-layer) darstellt. Den Lesern wird empfohlen, einen Minderheitenausführungsclient zu verwenden. + +##### Konsens-Clients + +- [Lighthouse](https://github.com/sigp/lighthouse/releases/latest) +- [Lodestar](https://chainsafe.github.io/lodestar/install/source/) (Bietet keine vorgefertigte Binärdatei, sondern nur eine Docker-Abbildung, die aus den Quelldateien erstellt werden muss) +- [Nimbus](https://github.com/status-im/nimbus-eth2/releases/latest) +- [Prysm](https://github.com/prysmaticlabs/prysm/releases/latest) +- [Teku](https://github.com/ConsenSys/teku/releases) + +[Client-Vielfalt](/developers/docs/nodes-and-clients/client-diversity/) ist entscheidend für Konsensknoten mit Validatoren. Wenn die Mehrheit der Validatoren mit einer Einzel-Client-Implementierung arbeitet, wird die Netzsicherheit gefährdet. Es wird daher empfohlen, einen Minderheits-Client zu wählen. + +[Informieren Sie sich über die aktuelle Nutzung von Netzwerkclients](https://clientdiversity.org/) und erfahren Sie mehr über [Client-Vielfalt](/developers/docs/nodes-and-clients/client-diversity). + +##### Verifizierung der Software + +Beim Herunterladen von Software aus dem Internet wird empfohlen, deren Integrität zu überprüfen. Diese Maßnahme ist zwar freiwillig, aber gerade bei essenziellen Infrastrukturkomponenten wie dem Ethereum-Client ist es wichtig, mögliche Angriffsvektoren zu kennen und zu vermeiden. Sofern Sie eine vorgefertigte Binärdatei heruntergeladen haben, ist es erforderlich, darauf zu vertrauen und das damit verbundene Risiko einzugehen, dass ein Angreifer die ausführbare Datei gegen eine bösartige Variante austauschen könnte. + +Entwickler signieren veröffentlichte Binärdateien mit ihren PGP-Schlüsseln, sodass Sie kryptografisch überprüfen können, dass Sie genau die von ihnen erstellte Software ausführen. Sie müssen lediglich die von den Entwicklern verwendeten öffentlichen Schlüssel erhalten, die auf den Client-Versionsseiten oder in der Dokumentation gefunden werden können. Nachdem Sie die Client-Version und ihre Signatur heruntergeladen haben, können Sie eine PGP-Implementierung wie z. B. [GnuPG](https://gnupg.org/download/index.html) verwenden, um sie problemlos zu verifizieren. Schauen Sie sich ein Tutorial zur Überprüfung von Open-Source-Software mit `gpg` auf [Linux](https://www.tecmint.com/verify-pgp-signature-downloaded-software/) oder [Windows/MacOS](https://freedom.press/training/verifying-open-source-software/) an. + +Eine weitere Form der Überprüfung besteht darin sicherzustellen, dass der Hash – ein eindeutiger kryptografischer Fingerabdruck – der heruntergeladenen Software mit dem vom Entwickler bereitgestellten übereinstimmt. Diese Vorgehensweise ist sogar unkomplizierter als die Verwendung von PGP, und bei einigen Programmen steht lediglich diese Option zur Verfügung. Führen Sie einfach die Hash-Funktion auf der heruntergeladenen Software aus und vergleichen Sie sie mit der auf der Veröffentlichungsseite angegebenen Funktion. Beispiel: + +``` +sha256sum teku-22.6.1.tar.gz + +9b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767dde +``` + +#### Client-Setup {#client-setup} + +Nach der Installation, dem Herunterladen oder dem Kompilieren der Client-Software sind Sie bereit, sie auszuführen. Das bedeutet lediglich, dass es mit der richtigen Konfiguration ausgeführt werden muss. Die Clients bieten eine vielfältige Auswahl an Konfigurationsoptionen, die verschiedene Funktionen aktivieren können. + +Lassen Sie uns mit den Optionen beginnen, die sich wesentlich auf die Leistung und die Datennutzung des Clients auswirken können. [Synchronisierungsmodi](/developers/docs/nodes-and-clients/#sync-modes) stellen verschiedene Methoden zum Herunterladen und Validieren von Blockchain-Daten dar. Bevor Sie den Knoten starten, sollten Sie entscheiden, welchen Netzwerk- und Synchronisierungsmodus Sie verwenden möchten. Die wichtigsten Faktoren, die berücksichtigt werden müssen, sind der benötigte Festplattenspeicher und die Synchronisationszeit des Clients. Achten Sie auf die Dokumentation des Clients, um festzustellen, welcher Synchronisationsmodus standardmäßig verwendet wird. Wenn dies nicht geeignet ist, wählen Sie einen anderen Client basierend auf Sicherheitsniveau, verfügbaren Daten und Kosten. Neben dem Synchronisations-Algorithmus können Sie auch verschiedene Arten von alten Daten automatisch reduzieren lassen (Pruning). Pruning ermöglicht das Löschen veralteter Daten, z. B. das Entfernen von Zustands-Trie-Nodes, die von den letzten Blocks unerreichbar sind. + +Weitere grundlegende Konfigurationsoptionen sind beispielsweise die Auswahl eines Netzwerks – Mainnet oder Testnetzwerke –, das Aktivieren eines HTTP-Endpunkts für RPC oder WebSockets, usw. Sämtliche Funktionen und Optionen finden Sie in der Dokumentation des Clients. Verschiedene Client-Konfigurationen können durch Ausführen des Clients mit den entsprechenden Flaggen direkt in der Befehlszeilenschnittstelle (CLI) oder der Konfigurationsdatei festgelegt werden. Jeder Client ist etwas anders; bitte konsultieren Sie immer die offizielle Dokumentation oder Hilfeseite für Details zu den Konfigurationsoptionen. + +Zu Testzwecken sollten Sie einen Client in einem der Testnetzwerke betreiben. [Siehe Übersicht der unterstützten Netzwerke](/developers/docs/nodes-and-clients/#execution-clients). + +Beispiele für laufende Ausführungsclients mit Grundkonfiguration finden Sie im nächsten Abschnitt. + +#### Starten des Ausführungsclients {#starting-the-execution-client} + +Bevor Sie die Ethereum-Client-Software starten, überprüfen Sie noch einmal, ob Ihre Systemumgebung bereit ist. Stellen Sie beispielsweise Folgendes sicher: + +- Dass unter Berücksichtigung des gewählten Netzwerk- und Synchronisierungsmodus genügend Speicherplatz vorhanden ist. +- Dass Speicher und CPU nicht durch andere Programme angehalten werden. +- Dass das Betriebssystem über die neueste Version verfügt. +- Dass das System die richtige Uhrzeit und das richtige Datum anzeigt. +- Dass Ihr Router und Ihre Firewall Verbindungen an abhörenden Ports akzeptiert. Standardmäßig verwenden Ethereum-Clients einen Listener(TCP)-Port und einen Discovery(UDP)-Port, beide standardmäßig 30303. -### Starten des Clients {#starting-the-client} +Führen Sie Ihren Client zunächst in einem Testnetz aus, um sicherzustellen, dass alles korrekt funktioniert. -Bevor du die Ethereum-Client-Software startest, überprüfe noch einmal, ob deine Umgebung bereit ist. Vergewissere dich z. B. +Sie müssen alle Client-Einstellungen, die nicht standardmäßig sind, zu Beginn angeben. Sie können Flags oder die Konfigurationsdatei verwenden, um Ihre bevorzugte Konfiguration anzugeben. Der Funktionsumfang und die Konfigurationssyntax jedes Clients unterscheiden sich. Schauen Sie sich die Dokumentation Ihres Clients für die Einzelheiten an. -- dass unter Berücksichtigung des gewählten Netzwerk- und Synchronisationsmodus genügend Speicherplatz vorhanden ist, -- dass Speicher und CPU nicht durch andere Programme angehalten werden, -- dass das Betriebssystem auf die neueste Version aktualisiert wird, -- dass das System die richtige Uhrzeit und das richtige Datum hat, -- dass dein Router und deine Firewall Verbindungen an abhörenden Ports akzeptieren. Standardmäßig verwenden Ethereum-Clients einen Listener(TCP)-Port und einen UDP-Port, beide standardmäßig 30303. +Ausführungs- und Konsensclients kommunizieren über einen authentifizierten Endpunkt, der in der [Engine-API](https://github.com/ethereum/execution-apis/tree/main/src/engine) angegeben ist. Um sich mit einem Konsensclient zu verbinden, muss der Ausführungsclient einen [`jwtsecret`](https://jwt.io/) in einem bekannten Pfad generieren. Aus Sicherheits- und Stabilitätsgründen sollten die Clients auf derselben Maschine ausgeführt werden, und beide Clients müssen diesen Pfad kennen, da dieser zur Authentifizierung einer lokalen RPC-Verbindung zwischen ihnen verwendet wird. Der Ausführungsclient muss auch einen Listening-Port für authentifizierte APIs festlegen. -Führe deinen Client zunächst in einem Testnetz aus, um sicherzustellen, dass alles korrekt funktioniert. [Die Ausführung eines Geth light node](/developers/tutorials/run-light-node-geth/) sollte helfen. Du musst alle Client-Einstellungen, die nicht standardmäßig sind, zu Beginn angeben. Du kannst Flags oder die Konfigurationsdatei verwenden, um deine bevorzugte Konfiguration zu deklarieren. Die Einzelheiten findest du in der Dokumentation deines Clients. Der Client führt seine Kernfunktionen aus, wählt die Endpunkte und beginnt mit der Suche nach Peers. Nach erfolgreicher Erkennung von Peers beginnt der Client mit der Synchronisierung. Die aktuellen Blockchain-Daten sind verfügbar, sobald der Client erfolgreich mit dem aktuellen Zustand synchronisiert wurde. +Dieser Token wird automatisch von der Client-Software generiert, in manchen Fällen müssen Sie dies jedoch selbst tun. Sie können ihn mit [OpenSSL](https://www.openssl.org/) erzeugen: -### Nutzung des Clients {#using-the-client} +``` +openssl rand -hex 32 > jwtsecret +``` -Clients bieten RPC-API-Endpunkte, mit denen du den Client steuerst und auf verschiedene Weise mit dem Ethereum-Netzwerk interagieren kannst: +#### Betreiben eines Ausführungsclients {#running-an-execution-client} -- manueller Aufruf mit einem geeigneten Protokoll (z. B. mit `curl`) +Dieser Abschnitt führt Sie durch die Einrichtung eines Ausführungsclients. Er dient nur als Beispiel für eine Grundkonfiguration, mit der der Client entsprechend dieser Einstellungen gestartet wird: + +- Festlegen des Netzwerks, mit dem eine Verbindung hergestellt werden soll, in unseren Beispielen Mainnet + - Sie können stattdessen [eines der Testnetzwerke](/developers/docs/networks/) für erste Tests Ihrer Einrichtung wählen +- Festlegen des Datenverzeichnisses, in dem alle Daten, einschließlich der Blockchain, gespeichert werden sollen + - Stellen Sie sicher, dass Sie den Pfad durch einen echten Pfad ersetzen, der z. B. auf Ihr externes Laufwerk verweist +- Aktivieren von Schnittstellen für die Kommunikation mit dem Client + - Einbeziehen von JSON RPC und Engine API für die Kommunikation mit dem Konsensclient +- Festlegen des Pfads zu `jwtsecret` für authentifizierte API + - Stellen Sie sicher, dass Sie den Beispielpfad durch einen echten Pfad ersetzen, auf den die Clients zugreifen können, z. B. `/tmp/jwtsecret`. + +Bitte beachten Sie, dass dies nur ein einfaches Beispiel ist, alle anderen Einstellungen werden auf die Standardeinstellung gesetzt. Beachten Sie die Dokumentation der einzelnen Clients, um sich über standardmäßige Werte, Einstellungen und Funktionen zu informieren. Weitere Funktionen, z. B. zur Ausführung von Validatoren, zur Überwachung usw., finden Sie in der Dokumentation des jeweiligen Clients. + +> Beachten Sie, dass die Schrägstriche `\` in den Beispielen nur der Formatierung dienen; Konfigurations-Flags können in einer einzigen Zeile definiert werden. + +##### Ausführen von Besu + +Dieses Beispiel startet Besu im Mainnet, speichert Blockchain-Daten im Standardformat unter `/data/ethereum`, aktiviert JSON RPC und Engine RPC für die Verbindung zum Konsensclient. Engine-API ist mit dem Token `jwtsecret` authentifiziert und nur Aufrufe von `localhost` sind erlaubt. + +``` +besu --network=mainnet \ + --data-path=/data/ethereum \ + --rpc-http-enabled=true \ + --engine-rpc-enabled=true \ + --engine-host-allowlist="*" \ + --engine-jwt-enabled=true \ + --engine-jwt-secret=/path/to/jwtsecret +``` + +Besu verfügt auch über eine Startoption, die eine Reihe von Fragen stellt und die Konfigurationsdatei generiert. Starten Sie den interaktiven Launcher mit: + +``` +besu --Xlauncher +``` + +[Dokumentation von Besu](https://besu.hyperledger.org/en/latest/HowTo/Get-Started/Starting-node/) enthält zusätzliche Optionen und Konfigurationsdetails. + +##### Ausführen von Erigon + +Dieses Beispiel startet Erigon im Mainnet, speichert Blockchain-Daten unter `/data/ethereum`, aktiviert JSON RPC, definiert, welche Namespaces erlaubt sind und aktiviert die Authentifizierung für die Verbindung zum Konsensclient, der durch den Pfad `jwtsecret` definiert ist. + +``` +erigon --chain mainnet \ + --datadir /data/ethereum \ + --http --http.api=engine,eth,web3,net \ + --authrpc.jwtsecret=/path/to/jwtsecret +``` + +Erigon führt standardmäßig eine vollständige Synchronisierung mit einer 8 GB HDD-Festplatte durch, was zu mehr als 2 TB an Archivdaten führen wird. Stellen Sie sicher, dass `datadir` auf eine Festplatte mit ausreichend freiem Speicherplatz verweist oder sehen Sie sich die `--prune`-Flagge an, welche verschiedene Arten von Daten reduzieren kann. In der `-Hilfe` von Erigon finden Sie weitere Informationen. + +##### Ausführen von Geth + +Dieses Beispiel startet Geth im Mainnet, speichert Blockchain-Daten unter `/data/ethereum`, aktiviert JSON RPC und definiert, welche Namespaces erlaubt sind. Es ermöglicht auch die Authentifizierung für den Verbindungsaufbau zum Konsensclient, welcher den Pfad zu `jwtsecret` benötigt, sowie eine Option, die festlegt, welche Verbindungen erlaubt sind; in unserem Beispiel nur von `localhost`. + +``` +geth --mainnet \ + --datadir "/data/ethereum" \ + --http --authrpc.addr localhost \ + --authrpc.vhosts="localhost" \ + --authrpc.port 8551 + --authrpc.jwtsecret=/path/to/jwtsecret +``` + +Überprüfen Sie die [Dokumentation für alle Konfigurationsoptionen](https://geth.ethereum.org/docs/fundamentals/command-line-options) und erfahren Sie mehr über das [Ausführen von Geth mit einem Konsensclient](https://geth.ethereum.org/docs/getting-started/consensus-clients). + +##### Ausführen von Nethermind + +Nethermind bietet verschiedene [Installationsoptionen](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/getting-started). Das Paket enthält verschiedene Binärdateien, darunter einen Launcher mit einem geführten Setup, mit dem Sie die Konfiguration interaktiv erstellen können. Alternativ finden Sie Runner, das die ausführbare Datei selbst ist, und Sie können sie einfach mit Konfigurationsflaggen ausführen. JSON RPC ist standardmäßig aktiviert. + +``` +Nethermind.Runner --config mainnet \ + --datadir /data/ethereum \ + --JsonRpc.JwtSecretFile=/path/to/jwtsecret +``` + +Die Nethermind-Dokumente bieten eine [vollständige Anleitung](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/running-nethermind-post-merge) zum Betrieb von Nethermind mit Konsensclients. + +Ein Ausführungsclient initiiert seine Kernfunktionen, wählt Endpunkte und beginnt mit der Suche nach Peers. Nach erfolgreicher Erkennung von Peers beginnt der Client mit der Synchronisierung. Der Ausführungsclient wartet auf eine Verbindung vom Konsensclient. Die aktuellen Blockchain-Daten sind verfügbar, sobald der Client erfolgreich mit dem aktuellen Zustand synchronisiert wurde. + +#### Starten des Konsensclients {#starting-the-consensus-client} + +Der Konsensclient muss mit der richtigen Port-Konfiguration gestartet werden, um eine lokale RPC-Verbindung zum Ausführungsclient herzustellen. Die Konsensclients müssen mit dem offengelegten Ausführungsclient-Port als Konfigurationsargument ausgeführt werden. + +Der Konsensclient benötigt außerdem den Pfad zum `jwt-secret` des Ausführungsclients, um die RPC-Verbindung zwischen ihnen zu authentifizieren. Ähnlich wie bei den obigen Ausführungsbeispielen verfügt jeder Konsensclient über ein Konfigurationsmerkmal, das den Pfad des jwt-Tokens als Argument annimmt. Dieser muss mit dem `jwtsecret`-Pfad übereinstimmen, der dem Ausführungsclient mitgeteilt wurde. + +Wenn Sie einen Validator betreiben möchten, fügen Sie unbedingt eine Konfigurationsflagge hinzu, die die Ethereum-Adresse des Gebührenempfängers angibt. Hier sammeln sich die Ether-Prämien für Ihren Validator. Jeder Konsensclient hat eine Option, z. B. `--suggested-fee-recipient=0xabcd1`, die eine Ethereum-Adresse als Argument nimmt. + +Wenn Sie eine Beacon Node in einem Testnetzwerk starten, können Sie viel Zeit bei der Synchronisierung sparen, indem Sie einen öffentlichen Endpunkt für die [Kontrollpunkt-Synchronisation](https://notes.ethereum.org/@launchpad/checkpoint-sync) verwenden. + +#### Betrieb eines Konsensclients + +##### Ausführen von Lighthouse + +Bevor Sie Lighthouse ausführen, erfahren Sie mehr über die Installation und Konfiguration im [Lighthouse Book](https://lighthouse-book.sigmaprime.io/installation.html). + +``` +lighthouse beacon_node \ + --network mainnet \ + --datadir /data/ethereum \ + --http \ + --execution-endpoint http://127.0.0.1:8551 \ + --execution-jwt /path/to/jwtsecret +``` + +##### Ausführen von Lodestar + +Installieren Sie die Lodestar-Software, indem Sie sie kompilieren oder das Docker-Abbild herunterladen. Weitere Informationen finden Sie in den [Dokumenten](https://chainsafe.github.io/lodestar/) und im umfassenden [Einrichtungsleitfaden](https://hackmd.io/@philknows/rk5cDvKmK). + +``` +lodestar beacon \ + --rootDir="/data/ethereum" \ + --network=mainnet \ + --eth1.enabled=true \ + --execution.urls="http://127.0.0.1:8551" \ + --jwt-secret="/path/to/jwtsecret" +``` + +##### Ausführen von Nimbus + +Nimbus wird sowohl mit Konsens- als auch mit Ausführungsclients geliefert. Es kann auf verschiedenen Geräten auch mit sehr bescheidener Rechenleistung ausgeführt werden. Nach der [Installation von Abhängigkeiten und von Nimbus selbst](https://nimbus.guide/quick-start.html) können Sie den Konsensclient starten: + +``` +nimbus_beacon_node \ + --network=mainnet \ + --web3-url=http://127.0.0.1:8551 \ + --rest \ + --jwt-secret="/path/to/jwtsecret" +``` + +##### Ausführen von Prysm + +Prysm wird mit einem Skript geliefert, das eine einfache automatische Installation ermöglicht. Einzelheiten sind in den [Prysm-Dokumenten](https://docs.prylabs.network/docs/install/install-with-script) zu finden. + +``` +./prysm.sh beacon-chain \ + --mainnet \ + --datadir /data/ethereum \ + --execution-endpoint=http://localhost:8551 \ + --jwt-secret=/path/to/jwtsecret +``` + +##### Ausführen von Teku + +``` +teku --network mainnet \ + --data-path "/data/ethereum" \ + --ee-endpoint http://localhost:8551 \ + --ee-jwt-secret-file "/path/to/jwtsecret" +``` + +Wenn sich ein Konsensclient mit dem Ausführungsclient verbindet, um den Einzahlungsvertrag zu lesen und die Validatoren zu identifizieren, verbindet er sich auch mit anderen Beacon Node-Peers und beginnt mit der Synchronisierung der Konsens-Slots ab der Genesis. Sobald der Beacon Node die aktuelle Epoche erreicht, wird die Beacon API für Ihre Validatoren nutzbar. Erfahren Sie mehr über [Beacon Node APIs](https://eth2docs.vercel.app/). + +### Hinzufügen von Validatoren {#adding-validators} + +Ein Konsensclient dient als Beacon Node, mit dem sich Validatoren verbinden können. Jeder Konsensclient verfügt über eine eigene Validierungssoftware, die in der jeweiligen Dokumentation ausführlich beschrieben wird. + +Der Betrieb eines eigenen Validators ermöglicht [Solo-Staking](/staking/solo/), die wirkungsvollste und vertrauenswürdigste Methode zur Unterstützung des Ethereum-Netzwerks. Allerdings ist dafür eine Einzahlung von 32 ETH erforderlich. Um einen Validator auf einem eigenen Knoten mit einem kleineren Betrag zu betreiben, könnte ein dezentraler Pool mit erlaubnisfreien Node-Betreibern wie [Rocket Pool](https://rocketpool.net/node-operators) interessant sein. + +Der einfachste Weg, mit dem Staking und der Generierung von Validatorenschlüsseln zu beginnen, ist die Verwendung des [Goerli Testnetz Staking Launchpads](https://goerli.launchpad.ethereum.org/), mit dem Sie Ihr Setup testen können, indem Sie [Nodes auf Goerli betreiben](https://notes.ethereum.org/@launchpad/goerli). Wenn Sie für das Mainnet bereit sind, können diese Schritte mit dem [Mainnet Staking Launchpad](https://launchpad.ethereum.org/) wiederholt werden. + +Auf der [Staking-Seite](/staking) finden Sie einen Überblick über die Staking-Optionen. + +### Verwendung eines Knotens {#using-the-node} + +Ausführungsclients bieten [RPC-API-Endpunkte](/developers/docs/apis/json-rpc/), mit denen Sie Transaktionen einreichen, mit dem Ethereum-Netzwerk interagieren oder Smart Contracts auf verschiedene Weise einsetzen können: + +- Manueller Aufruf mit einem geeigneten Protokoll (z. B. mit `curl`) - Anhängen einer bereitgestellten Konsole (z. B. `geth attach`) -- ihre Implementierung in Anwendungen +- Implementierung in Applikationen mit web3-Bibliotheken, z. B. [web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview), [ethers](https://github.com/ethers-io/ethers.js/) + +Verschiedene Clients verfügen über unterschiedliche Implementierungen der RPC-Endpunkte. Es gibt jedoch einen Standard-JSON-RPC, den Sie mit jedem Client verwenden können. Für einen Überblick [lesen Sie die JSON-RPC-Dokumente](/developers/docs/apis/json-rpc/). Anwendungen, die Informationen aus dem Ethereum-Netzwerk benötigen, können diesen RPC verwenden. Mit der beliebten Wallet MetaMask können Sie zum Beispiel [eine Verbindung zu Ihrem eigenen RPC-Endpunkt herstellen](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node), was erhebliche Vorteile für den Datenschutz und die Sicherheit mit sich bringt. + +Die Konsensclients stellen alle eine [Beacon API](https://ethereum.github.io/beacon-APIs) zur Verfügung, die verwendet werden kann, um den Status des Konsensclients zu überprüfen oder Blöcke und Konsensdaten herunterzuladen, indem Anfragen mit Tools wie [Curl](https://curl.se) gesendet werden. Weitere Informationen hierzu finden Sie in der Dokumentation des jeweiligen Konsensclients. + +#### Weitere Informationen hierzu finden Sie in der Dokumentation des jeweiligen Konsensclients. {#reaching-rpc} + +Der Standardport für den Ausführungsclient JSON-RPC ist `8545`, Sie können jedoch die Ports der lokalen Endpunkte in der Konfiguration ändern. Standardmäßig ist die RPC-Schnittstelle nur über den localhost Ihres Computers erreichbar. Um sie aus der Ferne zugänglich zu machen, können Sie sie der Öffentlichkeit präsentieren, indem Sie die Adresse zu `0.0.0.0` ändern. Hierdurch wird sie über das lokale Netz und öffentliche IP-Adressen erreichbar. In den meisten Fällen müssen Sie außerdem eine Portweiterleitung auf Ihrem Router einrichten. -Verschiedene Clients haben unterschiedliche Implementierungen der RPC-Endpunkte. Es gibt jedoch einen Standard-JSON-RPC, den du mit jedem Client verwenden kannst. Für einen Überblick, [lies die JSON-RPC-Dokumente](https://eth.wiki/json-rpc/API). Anwendungen, die Informationen aus dem Ethereum-Netzwerk benötigen, können diesen RPC verwenden. Mit der beliebten Wallet MetaMask kannst du zum Beispiel [eine lokale Blockchain-Instanz betreiben und dich mit ihr verbinden](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node). +Die Freigabe von Ports für das Internet ist mit Vorsicht zu genießen, da hierdurch jeder im Internet Ihren Knoten kontrollieren kann. Böswillige Akteure könnten auf Ihren Knoten zugreifen, um Ihr System zum Absturz zu bringen oder Ihr Geld zu stehlen, wenn Sie Ihren Client als Wallet verwenden. -#### Erreichen von RPC {#reaching-rpc} +Eine Möglichkeit, dies zu umgehen, besteht darin zu verhindern, dass potenziell schädliche RPC-Methoden geändert werden können. Mit Geth können Sie zum Beispiel veränderbare Methoden mit einer Flag deklarieren: `--http.api web3,eth,txpool`. -Der Standard-Port von JSON-RPC ist `8545`, aber du kannst die Ports der lokalen Endpunkte in der Konfigurationsdatei ändern. Standardmäßig ist die RPC-Schnittstelle nur über den localhost deines Computers erreichbar. Um sie aus der Ferne zugänglich zu machen, kannst du sie der Öffentlichkeit präsentieren, indem du die Adresse auf `0.0.0.0` änderst. Dadurch ist sie über lokale und öffentliche IP-Adressen zugänglich. In den meisten Fällen musst du auch eine Portweiterleitung auf deinem Router einrichten. +Der Zugriff auf die RPC-Schnittstelle kann durch die Entwicklung von Edge-Layer-APIs oder Webserver-Anwendungen wie Nginx und deren Verbindung mit der lokalen Adresse und dem Port Ihres Clients erweitert werden. Die Nutzung einer Middle-Layer kann Entwicklern auch die Möglichkeit geben, ein Zertifikat für sichere `https`-Verbindungen zur RPC-Schnittstelle einzurichten. -Du solltest dies jedoch mit Vorsicht tun, da dadurch jeder im Internet deinen Node kontrollieren kann. Böswillige Akteure könnten auf deinen Node zugreifen, um dein System zum Absturz zu bringen oder dein Geld zu stehlen, wenn du deinen Client als Geldbörse verwendest. +Die Einrichtung eines Webservers, eines Proxys oder einer nach außen gerichteten Rest-API ist nicht die einzige Möglichkeit, den Zugriff auf den RPC-Endpunkt Ihrer Node zu ermöglichen. Eine andere datenschutzfreundliche Möglichkeit, einen öffentlich erreichbaren Endpunkt einzurichten, ist das Hosten des Knotens auf einem eigenen [Tor](https://www.torproject.org/)-Onion-Dienst. Auf diese Weise können Sie den RPC außerhalb Ihres lokalen Netzes erreichen, ohne eine statische öffentliche IP-Adresse oder geöffnete Ports. Bei dieser Konfiguration kann der RPC-Endpunkt jedoch nur über das Tor-Netzwerk erreichbar sein, was nicht von allen Anwendungen unterstützt wird und zu Verbindungsproblemen führen kann. -Eine Möglichkeit, dies zu umgehen, besteht darin, zu verhindern, dass potenziell schädliche RPC-Methoden geändert werden können. Beispielsweise kannst du mit `geth` veränderbare Methoden mit einem Flag deklarieren: `--http.api web3,eth,txpool`. +Dazu müssen Sie Ihren eigenen [Onion-Service](https://community.torproject.org/onion-services/) erstellen. Schauen Sie sich [die Dokumentation](https://community.torproject.org/onion-services/setup/) über die Einrichtung des Onion-Services an, um Ihren eigenen zu hosten. Sie können ihn auf einen Webserver mit Proxy zum RPC-Port oder direkt auf den RPC verweisen. -Du kannst den Zugriff auf deine RPC-Schnittstelle auch hosten, indem du einen Webserverdienst wie Nginx auf die lokale Adresse und den Port deines Clients verweisen lässt. +Eine der beliebtesten Möglichkeiten, Zugang zu internen Netzen zu erhalten, ist schließlich eine VPN-Verbindung. Je nach Anwendungsfall und der Anzahl der Benutzer, die Zugang zu Ihrem Knoten benötigen, könnte eine sichere VPN-Verbindung eine Option sein. [OpenVPN](https://openvpn.net/) ist ein SSL-VPN mit vollem Funktionsumfang, das eine sichere Netzwerkerweiterung auf OSI-Ebene 2 oder 3 unter Verwendung des Branchenstandards SSL/TLS-Protokoll implementiert, flexible Client-Authentifizierungsmethoden auf der Grundlage von Zertifikaten, Smartcards und/oder Benutzername/Passwort-Anmeldeinformationen unterstützt und benutzer- oder gruppenspezifische Zugriffskontrollrichtlinien unter Verwendung von Firewall-Regeln für die virtuelle VPN-Schnittstelle ermöglicht. -Die datenschutzfreundlichste und einfachste Art, einen öffentlich erreichbaren Endpunkt einzurichten, ist das Hosten auf deinem eigenen [Tor](https://www.torproject.org/)-Onion-Dienst. Auf diese Weise kannst du den RPC außerhalb deines lokalen Netzes erreichen, ohne eine statische öffentliche IP-Adresse oder geöffnete Ports. Du kannst das folgendermaßen tun: +### Betreiben des Knotens {#operating-the-node} -- Installiere `tor`. -- Bearbeite die `torrc`-Konfiguration, um den versteckten Dienst mit der RPC-Adresse und dem Port deines Clients zu aktivieren. -- Starte den `tor`-Dienst neu. +Sie sollten Ihren Knoten regelmäßig überwachen, um sicherzustellen, dass er ordnungsgemäß funktioniert. Möglicherweise müssen Sie gelegentlich Wartungsarbeiten durchführen. -Sobald du Tor neu gestartet hast, erhältst du versteckte Dienstschlüssel und einen Hostnamen in deinem gewünschten Verzeichnis. Von diesem Zeitpunkt an wird dein RPC unter einem `.onion`-Hostnamen erreichbar sein. +#### Eine Node online lassen {#keeping-node-online} -### Betreiben des Nodes {#operating-the-node} +Ihr Knoten muss nicht die ganze Zeit online sein, Sie sollten ihn jedoch so oft wie möglich online lassen, damit er sich mit dem Netzwerk synchronisieren kann. Sie können ihn ausschalten, um ihn neu zu starten, bedenken Sie jedoch Folgendes: -Du solltest deinen Node regelmäßig überwachen, um sicherzustellen, dass er ordnungsgemäß funktioniert. Möglicherweise musst du gelegentlich Wartungsarbeiten durchführen. +- Das Herunterfahren kann einige Minuten dauern, wenn der aktuelle Status noch auf die Festplatte geschrieben wird. +- Erzwungene Abschaltungen können die Datenbank beschädigen, so dass Sie den gesamten Knoten neu synchronisieren müssen. +- Ihr Client wird nicht mehr mit dem Netzwerk synchronisiert und muss neu synchronisiert werden, wenn Sie ihn neu starten. Die Synchronisation des Knotens kann zwar an dem Punkt beginnen, an dem er zuletzt heruntergefahren wurde, aber je nachdem, wie lange er offline war, kann der Prozess einige Zeit dauern. -#### Den Node online halten {#keeping-node-online} +_Dies gilt nicht für Validierungsknoten auf Konsensebene._ Wenn Sie Ihren Knoten offline schalten, wirkt sich dies auf alle von ihm abhängigen Dienste aus. Wenn Sie einen Node für _Sicherungszwecke_ betreiben, sollten Sie versuchen, die Ausfallzeiten so gering wie möglich zu halten. -Dein Node muss nicht ununterbrochen online sein, aber du solltest ihn so oft wie möglich online halten, um ihn mit dem Netzwerk zu synchronisieren. Du könntest ihn ausschalten, um ihn neu zu starten, aber bedenke, dass +#### Erstellung von Client-Diensten {#creating-client-services} -- das Herunterfahren einige Minuten dauern kann, wenn der aktuelle Zustand noch auf die Festplatte geschrieben wird, -- erzwungene Abschaltungen die Datenbank beschädigen können, -- Dein Client wird nicht mehr mit dem Netzwerk synchronisiert und muss neu synchronisiert werden, wenn du ihn neu startest. +Erwägen Sie die Einrichtung eines Dienstes, der Ihren Client automatisch beim Start ausführt. Auf Linux-Servern wäre es zum Beispiel eine gute Praxis, einen Dienst zu erstellen, z. B. mit `systemd`, der den Client mit der richtigen Konfiguration unter einem Benutzer mit begrenzten Rechten ausführt und automatisch neu startet. -_Dies gilt nicht für Konsensschicht-Validierungs-Nodes._ Wenn du deinen Node offline schaltest, wirkt sich dies auf alle von ihm abhängigen Dienste aus. Wenn du einen Node für _Sicherungszwecke_ betreibst, solltest du versuchen, die Ausfallzeiten so gering wie möglich zu halten. +#### Aktualisieren von Clients {#updating-clients} -#### Erstellung eines Client-Dienstes {#creating-client-service} +Sie müssen Ihre Client-Software mit den neuesten Sicherheitspatches, Funktionen und [EIPs](/eips/) auf dem neuesten Stand halten. Besonders vor [Hard Forks](/history/) sollten Sie sicherstellen, dass Sie die richtigen Client-Versionen verwenden. -Ziehe in Erwägung, einen Dienst zu erstellen, der deinen Client beim Start automatisch ausführt. Auf Linux-Servern wäre es beispielsweise eine gute Praxis, einen Dienst zu erstellen, der den Client mit der richtigen Konfiguration und unter einem Benutzer mit begrenzten Rechten ausführt und automatisch neu startet. +> Vor wichtigen Netzwerk-Updates veröffentlicht EF einen Beitrag in seinem [Blog](https://blog.ethereum.org). Sie können [diese Ankündigungen abonnieren](https://groups.google.com/a/ethereum.org/g/announcements), um eine Benachrichtigung per E-Mail zu erhalten, wenn Ihr Knoten eine Aktualisierung benötigt. -#### Aktualisieren des Clients {#updating-client} +Die Aktualisierung der Clients ist sehr einfach. Jeder Client hat spezifische Anweisungen in seiner Dokumentation, im Allgemeinen besteht das Verfahren jedoch nur darin, die neueste Version herunterzuladen und den Client mit der neuen ausführbaren Datei neu zu starten. Der Client sollte dort weitermachen, wo er aufgehört hat, jedoch mit den vorgenommenen Aktualisierungen. -Du müsstest deine Client-Software mit den neuesten Sicherheitspatches, Funktionen und [EIPs](/eips/) auf dem neuesten Stand halten. Besonders vor [hard forks](/history/) solltest du sicherstellen, dass du die richtige Client-Version verwendest. +Jede Client-Implementierung hat eine von Menschen lesbare Versionszeichenfolge, die im Peer-to-Peer-Protokoll verwendet wird, aber auch über die Befehlszeile zugänglich ist. Anhand dieses Versionsstrings können die Nutzer überprüfen, ob sie die richtige Version verwenden. Außerdem ermöglicht er es Blockexplorern und anderen Analysewerkzeugen eine quantitative Analyse der Verteilung bestimmter Clients im Netz. Weitere Informationen zu den Versionsstrings finden Sie in der jeweiligen Client-Dokumentation. -Jede Client-Implementierung hat eine von Menschen lesbare Versionszeichenfolge, die im Peer-to-Peer-Protokoll verwendet wird, aber auch über die Befehlszeile zugänglich ist. Anhand dieses Versionsstrings können die Benutzer überprüfen, ob sie die richtige Version verwenden. Außerdem ermöglicht er es Blockexplorern und anderen Analysewerkzeugen eine quantitative Analyse der Verteilung bestimmter Clients im Netz. Weitere Informationen zu den Versionsstrings finden Sie in der jeweiligen Client-Dokumentation. +#### Ausführung zusätzlicher Dienste {#running-additional-services} -#### Durchführung zusätzlicher Dienste {#running-additional-services} +Wenn Sie einen eigenen Knoten betreiben, können Sie Dienste nutzen, die einen direkten Zugang zum Ethereum-Client-RPC erfordern. Dabei handelt es sich um Dienste, die auf Ethereum aufbauen, wie [Layer-2-Lösungen](/developers/docs/scaling/#layer-2-scaling), Backend für Wallets, Block-Explorer, Entwicklertools und andere Ethereum-Infrastruktur. -Wenn du deinen eigenen Node betreibst, kannst du Dienste nutzen, die einen direkten Zugang zum Ethereum-Client-RPC erfordern. Dies sind Dienste, die auf Ethereum aufbauen, wie [Layer-2-Lösungen](/developers/docs/scaling/#layer-2-scaling), Konsens-Clients und andere Ethereum-Infrastruktur. +#### Überwachung des Knotens {#monitoring-the-node} -#### Überwachung des Nodes {#monitoring-the-node} +Um Ihren Knoten ordnungsgemäß zu überwachen, sollten Sie Metriken sammeln. Clients stellen Metrik-Endpunkte bereit, damit Sie umfassende Daten über Ihren Knoten erhalten können. Verwenden Sie Tools wie [InfluxDB](https://www.influxdata.com/get-influxdb/) oder [Prometheus](https://prometheus.io/), um Datenbanken zu erstellen, die Sie in Software wie [Grafana](https://grafana.com/) in Visualisierungen und Diagramme umwandeln können. Es gibt viele Setups für die Verwendung dieser Software und verschiedene Grafana-Dashboards, mit denen Sie Ihre Knoten und das Netzwerk als Ganzes visualisieren können. Sehen Sie sich zum Beispiel das [Tutorial zur Überwachung von Geth](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/) an. -"Um deine Node richtig zu überwachen, solltest du Metriken sammeln. Clients stellen Metrik-Endpunkte bereit, damit du umfassende Daten über deinen Node erhalten kannst. Verwende Tools wie [InfluxDB](https://www.influxdata.com/get-influxdb/) oder [Prometheus](https://prometheus.io/) um Datenbanken zu erstellen, die du in Software wie [Grafana](https://grafana.com/) in Visualisierungen und Diagramme umwandeln kannst. Es gibt viele Setups für die Verwendung dieser Software und verschiedene Grafana-Dashboards, mit denen du deine Nodes und das Netzwerk als Ganzes visualisieren kannst. Behalte im Rahmen der Überwachung auch die Leistung deiner Maschine im Auge. Während der ersten Synchronisierung deiner Node kann die Client-Software sehr viel CPU und RAM beanspruchen. Zusätzlich zu Grafana kannst du die Tools deines Betriebssystems wie `htop` oder `uptime` verwenden, um dies zu tun. +Behalten Sie im Rahmen der Überwachung auch die Leistung Ihres Rechners im Auge. Während der ersten Synchronisierung Ihres Knotens kann die Client-Software sehr viel CPU und RAM beanspruchen. Zusätzlich zu Grafana können Sie dafür die Tools Ihres Betriebssystems wie `htop` oder `uptime` verwenden. ## Weiterführende Informationen {#further-reading} -- [Analyzing the hardware requirements to be an Ethereum full validated node](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau, 24 September 2018_ -- [Running Ethereum Full Nodes: A Guide for the Barely Motivated](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 7 November 2019_ -- [Running a Hyperledger Besu Node on the Ethereum Mainnet: Benefits, Requirements, and Setup](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi, 7 May 2020_ -- [Deploying Nethermind Ethereum Client with Monitoring Stack](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth, 8 July 2020_ +- [Leitfaden für Ethereum Staking](https://github.com/SomerEsat/ethereum-staking-guides) - _Somer Esat, häufig aktualisiert_ +- [Anleitung | Einrichtung eines Validators für das Staken auf dem Ethereum Mainnet](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _- CoinCashew, regelmäßig aktualisiert_ +- [ETHStaker-Anleitungen zum Ausführen von Validatoren in Testnetzwerken](https://github.com/remyroy/ethstaker#guides) - _ETHStaker, regelmäßig aktualisiert_ +- [FAQ zur Zusammenführung für Knotenbetreiber](https://notes.ethereum.org/@launchpad/node-faq-merge) - _Juli 2022_ +- [Analyzing the hardware requirements to be an Ethereum full validated node](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau, 24. September 2018_ +- [Running Ethereum Full Nodes: A Guide for the Barely Motivated](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 7. November 2019_ +- [Running a Hyperledger Besu Node on the Ethereum Mainnet: Benefits, Requirements, and Setup](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi, 7. Mai 2020_ +- [Deploying Nethermind Ethereum Client with Monitoring Stack](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth, 8. Juli 2020_ ## Verwandte Themen {#related-topics} -- [Nodes und Clients](/developers/docs/nodes-and-clients/) +- [Knotenpunkte und Clients](/developers/docs/nodes-and-clients/) - [Blöcke](/developers/docs/blocks/) - [Netzwerke](/developers/docs/networks/) diff --git a/src/content/translations/de/developers/docs/programming-languages/dart/index.md b/src/content/translations/de/developers/docs/programming-languages/dart/index.md index c4f96a95d56..14c9d1d5515 100644 --- a/src/content/translations/de/developers/docs/programming-languages/dart/index.md +++ b/src/content/translations/de/developers/docs/programming-languages/dart/index.md @@ -13,10 +13,10 @@ incomplete: true 1. [Truffle-Entwicklungssuite](https://www.trufflesuite.com/) installieren 2. Smart Contract in [Solidity](https://soliditylang.org/) schreiben 3. Benutzeroberfläche in Dart schreiben -- [Mobile dApp mit Flutter erstellen](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a) ist wesentlich kürzer und empfehlenswert für alle, die mit den Grundlagen bereits vertraut sind. +- Eine [mobile dApp mit Flutter zu erstellen](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a) ist wesentlich kürzer und empfehlenswert für alle, die mit den Grundlagen bereits vertraut sind - Wenn Sie Erklärungsvideos bevorzugen, ist [Ihre erste Blockchain-Flutter-App erstellen](https://www.youtube.com/watch?v=3Eeh3pJ6PeA) empfehlenswert. Die Dauer beträgt etwa eine Stunde. - Für Ungeduldige ist [Bau einer dezentralen Blockchain-Anwendung mit Flutter und Dart auf Ethereum](https://www.youtube.com/watch?v=jaMFEOCq_1s) empfehlenswert, denn die Dauer beträgt nur etwa zwanzig Minuten. -- [Integration von MetaMask in Flutter-Anwendungen](https://youtu.be/8qzVDje3IWk) – dieses kurze Video führt dich durch die Schritte zur Integration von MetaMask in Ihre Flutter-Anwendungen. +- [Integration von MetaMask in Flutter-Anwendungen](https://youtu.be/8qzVDje3IWk) – dieses kurze Video führt Sie durch die Schritte zur Integration von MetaMask in Ihre Flutter-Anwendungen ## Mit Ethereum Clients arbeiten {#working-with-ethereum-clients} diff --git a/src/content/translations/de/developers/docs/programming-languages/delphi/index.md b/src/content/translations/de/developers/docs/programming-languages/delphi/index.md index 9fc84aa3650..3b14b2392cb 100644 --- a/src/content/translations/de/developers/docs/programming-languages/delphi/index.md +++ b/src/content/translations/de/developers/docs/programming-languages/delphi/index.md @@ -11,7 +11,7 @@ Lernen, mit der Programmiersprache Delphi für Ethereum zu entwickeln -Verwende Ethereum, um dezentrale Anwendungen (oder „dApps“) zu erschaffen, die von den kryptografischen Begebenheiten von Kryptowährungen und der Blockchain-Technologie profitieren. Sie sind vertrauenswürdig, was bedeutet, dass dApps nach dem Hochladen auf Ethereum immer exakt wie programmiert ausgeführt werden. Sie können digitale Vermögenswerte verwalten und dadurch neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein, was bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann und sie so fast unmöglich zu zensieren ist. +Sie können mit Ethereum dezentrale Anwendungen (oder "dApps") erstellen, die von den Vorteilen der Kryptowährung und der Blockchain-Technologie profitieren. dApps sind vertrauenswürdig. Das bedeutet, dass dApps nach dem Hochladen auf Ethereum immer exakt wie programmiert ausgeführt werden. Darüber lassen sich digitale Vermögenswerte verwalten und neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein. Das bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann. Damit ist es fast unmöglich, sie zu zensieren. Erstellen Sie dezentrale Anwendungen auf Ethereum und interagieren Sie mit Smart Contracts in der Programmiersprache Delphi. @@ -51,5 +51,6 @@ Benötigen Sie für den Einstieg erst einmal allgemeinere Informationen? Dann em - [Delphi und Ethereum Name Service (ENS)](https://medium.com/@svanas/delphi-and-ethereum-name-service-ens-4443cd278af7) - [QuikNode, Ethereum und Delphi](https://medium.com/@svanas/quiknode-ethereum-and-delphi-f7bfc9671c23) - [Delphi und der Ethereum Dark Forest](https://svanas.medium.com/delphi-and-the-ethereum-dark-forest-5b430da3ad93) +- [Einen Token gegen einen anderen in Delphi austauschen](https://svanas.medium.com/swap-one-token-for-another-in-delphi-bcb999c47f7) Sind Sie an weiteren Informationen interessiert? Sehen Sie sich [ethereum.org/developers](/developers/) an. diff --git a/src/content/translations/de/developers/docs/programming-languages/dot-net/index.md b/src/content/translations/de/developers/docs/programming-languages/dot-net/index.md index 026a6f984dc..0a491247b6e 100644 --- a/src/content/translations/de/developers/docs/programming-languages/dot-net/index.md +++ b/src/content/translations/de/developers/docs/programming-languages/dot-net/index.md @@ -1,13 +1,13 @@ --- title: Ethereum für .NET-Entwickler -description: Erfahre, wie du mit .NET-basierten Projekten und Werkzeugen für Ethereum entwickeln kannst +description: Lernen, wie Sie .NET-basierte Projekte und Tools für die Ethereum-Entwicklung nutzen können lang: de incomplete: true ---

    -Verwende Ethereum, um dezentrale Anwendungen (oder „dApps“) zu erschaffen, die von den kryptografischen Begebenheiten von Kryptowährungen und der Blockchain-Technologie profitieren. Sie sind vertrauenswürdig, was bedeutet, dass dApps nach dem Hochladen auf Ethereum immer exakt wie programmiert ausgeführt werden. Sie können digitale Vermögenswerte verwalten und dadurch neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein, was bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann und sie so fast unmöglich zu zensieren ist. +Sie können mit Ethereum dezentrale Anwendungen (oder "dApps") erstellen, die von den Vorteilen der Kryptowährung und der Blockchain-Technologie profitieren. dApps sind vertrauenswürdig. Das bedeutet, dass dApps nach dem Hochladen auf Ethereum immer exakt wie programmiert ausgeführt werden. Darüber lassen sich digitale Vermögenswerte verwalten und neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein. Das bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann. Damit ist es fast unmöglich, sie zu zensieren. Erstellen Sie dezentrale Anwendungen auf Ethereum und interagieren Sie mit Smart Contracts unter Verwendung von Tools und Sprachen aus dem Microsoft-Technologie-Stack – unterstützt C#, Visual Basic .NET, F#, über Tools wie VSCode und Visual Studio, mit dem .NET Framework/.NET Core/.NET Standard. Stellen Sie eine Ethereum-Blockchain mit Microsoft Azure Blockchain in wenigen Minuten bereit. Ethereum lässt sich eben so gut einsetzen wie .NET. @@ -68,7 +68,7 @@ Benötigen Sie für den Einstieg erst einmal allgemeinere Informationen? Dann em - [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) – _Nethereum-Codegenerator mit UI in Blazor_ - [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) – _Ein .NET Wasm SPA Light-Blockchain-Explorer und einfache Wallet_ - [Wonka Business Rules Engine](https://docs.nethereum.com/en/latest/wonka/) – _Eine Business Rules-Engine (für die .NET-Plattform und die Ethereum-Plattform), die von Natur aus Metadaten-basiert ist_ -- [Nethermind](https://github.com/NethermindEth/nethermind) – _Ein .NET Core Ethereum-Client für Linux, Windows, MacOs_ +- [Nethermind](https://github.com/NethermindEth/nethermind) - _Ein .NET Core Ethereum-Client für Linux, Windows, MacOs_ - [eth-utils](https://github.com/ethereum/eth-utils/) – _Dienstprogrammfunktionen für das Arbeiten mit Codebasen, die mit Ethereum verwandt sind_ - [TestChains](https://github.com/Nethereum/TestChains) – _vorkonfigurierte .NET-Devchains für schnelles Feedback (PoA)_ @@ -76,9 +76,9 @@ Sind Sie an weiteren Informationen interessiert? Sehen Sie sich [ethereum.org/de ## .NET-Community-Mitwirkende {#dot-net-community-contributors} -Bei Nethereum halten wir uns meistens bei [Gitter](https://gitter.im/Nethereum/Nethereum) auf, wo jeder gerne Fragen stellen oder beantworten, Hilfe bekommen oder einfach nur beobachten kann. Fühlen Sie sich frei, eine PR zu erstellen oder ein neues Issue im [Nethereum GitHub Repository](https://github.com/Nethereum) zu eröffnen oder einfach nur die vielen Seiten/Beispielprojekte zu durchstöbern, die wir haben. Sie können uns auch auf [Discord](https://discord.gg/jQPrR58FxX) finden. +Bei Nethereum halten wir uns meistens bei [Gitter](https://gitter.im/Nethereum/Nethereum) auf, wo jeder gerne Fragen stellen oder beantworten, Hilfe bekommen oder einfach nur beobachten kann. Erstellen Sie gerne einen PR oder öffnen ein Problem im [Nethereum Github Repository](https://github.com/Nethereum) oder durchstöbern Sie einfach nur unsere vielen Seiten/Beispielprojekte. Sie können uns auch auf [Discord](https://discord.gg/jQPrR58FxX) finden. -Bei Nethermind nutzen wir [Gitter](https://gitter.im/nethermindeth/nethermind) um in Kontakt zu treten. Für PRs oder Probleme können Sie im [Nethermind Repository](https://github.com/NethermindEth/nethermind) fündig werden. +Wenn Sie neu bei Nethermind sind und Hilfe beim Einstieg benötigen, treten Sie unserem [Discord](http://discord.gg/PaCMRFdvWT) bei. Unsere Entwickler stehen Ihnen gerne bei Fragen zur Verfügung. Zögern Sie nicht, einen PR zu eröffnen oder Probleme im [Nethermind GitHub-Repository](https://github.com/NethermindEth/nethermind) aufzuzeigen. ## Andere zusammengefasste Listen {#other-aggregated-lists} diff --git a/src/content/translations/de/developers/docs/programming-languages/golang/index.md b/src/content/translations/de/developers/docs/programming-languages/golang/index.md index 334d43f1d44..bdf86dcd610 100644 --- a/src/content/translations/de/developers/docs/programming-languages/golang/index.md +++ b/src/content/translations/de/developers/docs/programming-languages/golang/index.md @@ -1,13 +1,13 @@ --- title: Ethereum für Go-Entwickler -description: Erfahre, wie du mit Go-basierten Projekten und Werkzeugen für Ethereum entwickeln kannst +description: Lernen, wie Sie mit Go-basierten Projekten und Werkzeugen für Ethereum entwickeln können lang: de incomplete: true --- -Verwenden Sie Ethereum, um dezentrale Anwendungen (oder "dApps") zu erstellen. Sie sind vertrauenswürdig, was bedeutet, dass dApps nach dem Hochladen auf Ethereum immer exakt wie programmiert ausgeführt werden. Sie sind dezentralisiert. Das bedeutet, dass sie auf einem Peer-to-Peer-Netzwerk laufen und es keine einzelne Fehlerquelle gibt. Keine einzelne Eintität oder Person kontrolliert sie und es ist fast unmöglich, sie zu zensieren. Sie können digitale Vermögenswerte kontrollieren, um neue Arten von Anwendungen zu erstellen. +Verwenden Sie Ethereum, um dezentrale Anwendungen (oder "dApps") zu erstellen. Solche dApps sind vertrauenswürdig. Das bedeutet, dass sie, sobald sie auf Ethereum hochgeladen wurden, immer exakt wie programmiert ausgeführt werden. Sie sind dezentralisiert. Das bedeutet, dass sie auf einem Peer-to-Peer-Netzwerk laufen und es keine einzelne Fehlerquelle gibt. Keine einzelne Eintität oder Person kontrolliert sie und es ist fast unmöglich, sie zu zensieren. Sie können digitale Vermögenswerte kontrollieren, um neue Arten von Anwendungen zu erstellen. ## Erste Schritte mit Smart Contracts und der Solidity-Sprache {#getting-started-with-smart-contracts-and-solidity} @@ -33,11 +33,11 @@ Sind Sie an einigen grundlegenden Informationen interessiert? Dann sehen Sie sic ## Artikel und Dokumente für Fortgeschrittene {#intermediate-articles-and-docs} - [Go-Ethereum-Dokumentation](https://geth.ethereum.org/docs/) – _Die Dokumentation für die offizielle Ethereum-Golang_ -- [Turbo-Geth-Programmierhandbuch](https://github.com/ledgerwatch/turbo-geth/blob/master/docs/programmers_guide/guide.md) – _Illustrierte Anleitung, inklusive State Tree, Multiproofs und Transaktionsverarbeitung_ -- [Turbo-Geth und Stateless Ethereum](https://youtu.be/3-Mn7OckSus?t=394) – _2020 Ethereum Community Conference (EthCC 3)_ -- [Turbo-Geth: Optimierung der Ethereum-Clients](https://www.youtube.com/watch?v=CSpc1vZQW2Q) – _2018 Devcon 4_ +- [Leitfaden für Erigon-Programmierer](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md) - _Illustrierter Leitfaden, einschließlich Zustandsbaum, Multi-Beweise und die Transaktionsverarbeitung_ +- [Erigon und zustandsloses Ethereum](https://youtu.be/3-Mn7OckSus?t=394) - _2020 Ethereum Community-Konferenz (EthCC 3)_ +- [Erigon: Optimierung von Ethereum-Clients](https://www.youtube.com/watch?v=CSpc1vZQW2Q) - _2018 Devcon 4_ - [Go Ethereum GoDoc](https://godoc.org/github.com/ethereum/go-ethereum) -- [Eine dApp mit Geth in Go erstellen](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/) +- [Erstellen einer dApp in Go mit Geth](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/) - [Mit einem privaten Ethereum-Netzwerk in Golang und Geth arbeiten](https://myhsts.org/tutorial-learn-how-to-work-with-ethereum-private-network-with-golang-with-geth.php) - [Einheitentests für Solidity-Verträge auf Ethereum mit Go](https://medium.com/coinmonks/unit-testing-solidity-contracts-on-ethereum-with-go-3cc924091281) - [Schnellreferenz für die Verwendung von Geth als Bibliothek](https://medium.com/coinmonks/web3-go-part-1-31c68c68e20e) @@ -48,13 +48,13 @@ Sind Sie an einigen grundlegenden Informationen interessiert? Dann sehen Sie sic - [Blockchain-as-a-Service-Apps mit Ethereum und Quorum](https://blockchain.dcwebmakers.com/blockchain-as-a-service-apps-using-ethereum-and-quorum.html) - [Verteilte Speicher-IPFS und Swarm in Ethereum-Blockchain-Anwendungen](https://blockchain.dcwebmakers.com/work-with-distributed-storage-ipfs-and-swarm-in-ethereum.html) - [Mobile Clients: Bibliotheken und Inproc-Ethereum-Nodes](https://github.com/ethereum/go-ethereum/wiki/Mobile-Clients:-Libraries-and-Inproc-Ethereum-Nodes) -- [Native DApps: Go-Bindungen an Ethereum-Verträge](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) +- [Native dAapps: Go-Bindings für Ethereum-Verträge](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) ## Go-Projekte und Tools {#go-projects-and-tools} - [Geth/Go Ethereum](https://github.com/ethereum/go-ethereum) - _Offizielle Go-Implementierung des Ethereum-Protokolls_ - [Go Ethereum-Codeanalyse](https://github.com/ZtesoftCS/go-ethereum-code-analysis) – _Überprüfung und Analyse des Go Ethereum-Quellcodes_ -- [Turbo-Geth](https://github.com/ledgerwatch/turbo-geth) – _Schnellere Ableitung von Go Ethereum_ +- [Erigon](https://github.com/ledgerwatch/erigon) - _Eine schnellere Variante von Go Ethereum mit Schwerpunkt auf Archivierungsknoten_ - [Golem](https://github.com/golemfactory/golem) – _Golem schafft einen globalen Markt für Rechenleistung_ - [Quorum](https://github.com/jpmorganchase/quorum) – _Eine private Implementierung von Ethereum, die Datenprivatsphäre unterstützt_ - [Prysm](https://github.com/prysmaticlabs/prysm) – _Ethereum 'Serenity' 2.0 Go-Implementation_ @@ -64,6 +64,7 @@ Sind Sie an einigen grundlegenden Informationen interessiert? Dann sehen Sie sic - [Ethereum-HD Wallet](https://github.com/miguelmota/go-ethereum-hdwallet) – _Ethereum-HD Wallet Derivate im Go_ - [Multi Geth](https://github.com/multi-geth/multi-geth) – _Unterstützung für viele Arten von Ethereum-Netzwerken_ - [Geth Light Client](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client) – _Light Ethereum-Subprotokoll-Geth-Implementierung_ +- [Ethereum Golang SDK](https://github.com/everFinance/goether) - _Eine einfache Ethereum-Wallet-Implementierung und Hilfsprogramme in Golang_ Sind Sie an weiteren Informationen interessiert? Sehen Sie sich [ethereum.org/developers](/developers/) an. diff --git a/src/content/translations/de/developers/docs/programming-languages/java/index.md b/src/content/translations/de/developers/docs/programming-languages/java/index.md index a9a185e3485..ee2584d9862 100644 --- a/src/content/translations/de/developers/docs/programming-languages/java/index.md +++ b/src/content/translations/de/developers/docs/programming-languages/java/index.md @@ -1,19 +1,19 @@ --- title: Ethereum für Java-Entwickler -description: Erfahre, wie du mit Java-basierten Projekten und Werkzeugen für Ethereum entwickeln kannst +description: Lernen, wie Sie mit Java-basierten Projekten und Werkzeugen für Ethereum entwickeln können lang: de incomplete: true --- -Verwende Ethereum, um dezentrale Anwendungen (oder „dApps“) zu erschaffen, die von den kryptografischen Begebenheiten von Kryptowährungen und der Blockchain-Technologie profitieren. Sie sind vertrauenswürdig, was bedeutet, dass dApps nach dem Hochladen auf Ethereum immer exakt wie programmiert ausgeführt werden. Sie können digitale Vermögenswerte verwalten und dadurch neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein, was bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann und sie so fast unmöglich zu zensieren ist. +Sie können mit Ethereum dezentrale Anwendungen (oder „dApps“) erstellen, die von den Vorteilen der Kryptowährung und der Blockchain-Technologie profitieren. Solche dApps sind vertrauenswürdig. Das bedeutet, dass sie, sobald sie auf Ethereum hochgeladen wurden, immer exakt wie programmiert ausgeführt werden. Darüber lassen sich digitale Vermögenswerte verwalten und neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein. Das bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann. Damit ist es fast unmöglich, sie zu zensieren. ## Erste Schritte mit Smart Contracts und der Solidity-Sprache {#getting-started-with-smart-contracts-and-solidity} **Erste Schritte bei der Integration von Java mit Ethereum** -Sind Sie an einigen grundlegenden Informationen interessiert? Dann sehen Sie sich auf [ethereum.org/learn](/learn/) oder [ethereum.org/developers](/developers/) um +Sind Sie an einigen grundlegenden Informationen interessiert? Dann sehen Sie sich auf [ethereum.org/learn](/learn/) oder [ethereum.org/developers](/developers/) um. - [Blockchain erklärt](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) - [Smart Contracts verstehen](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) diff --git a/src/content/translations/de/developers/docs/programming-languages/javascript/index.md b/src/content/translations/de/developers/docs/programming-languages/javascript/index.md index f992c867485..1d46d8e9b68 100644 --- a/src/content/translations/de/developers/docs/programming-languages/javascript/index.md +++ b/src/content/translations/de/developers/docs/programming-languages/javascript/index.md @@ -20,10 +20,11 @@ Sie können diese Bibliotheken verwenden, um mit Smart Contracts auf Ethereum zu - [Web3.js](https://web3js.readthedocs.io/) - [Ethers.js](https://docs.ethers.io/) _– Beinhaltet die Anwendung von Ethereum Wallets und Nutzungsmöglichkeiten in JavaScript und TypeScript._ +- [Viem](https://viem.sh) – Eine TypeScript-Schnittstelle für Ethereum, die zustandslose Primitive auf unterer Ebene für die Interaktion mit Ethereum bereitstellt. ### Smart Contracts {#smart-contracts} -Wenn Sie JavaScript-Entwickler sind und Ihren eigenen Smart Contract schreiben möchten, sollten Sie sich mit [Solidity](https://solidity.readthedocs.io) vertraut machen. Das ist die am weitesten verbreitete Smart-Contract-Sprache. Sie ist syntaktisch ähnlich wie JavaScript und erleichtert damit das Lernen. +Wenn Sie ein JavaScript-Entwickler sind und Ihren eigenen Smart Contract schreiben möchten, sollten Sie sich mit [Solidity](https://solidity.readthedocs.io) vertraut machen. Das ist die am weitesten verbreitete Smart-Contract-Sprache. Sie ist syntaktisch ähnlich wie JavaScript und erleichtert damit das Lernen. Mehr erfahren über [Smart Contracts](/developers/docs/smart-contracts/). @@ -50,10 +51,12 @@ Wenn Sie sich lieber den geschriebenen Code durchlesen, ist dieses JavaScript ei ### Knotenpunkte (Nodes) und Anwendungen (Clients) {#nodes-and-clients} -Derzeit befindet sich ein Ethereumjs-Client in der Entwicklung. Damit können Sie in Erfahrung bringen, wie Ethereum-Clients in einer Sprache arbeiten, die Sie verstehen. +Einer der Clients von Ethereum befindet sich derzeit in der aktiven Entwicklungsphase, sodass Sie einen Einblick in die Funktionsweise der Ethereum-Clients erhalten können, in einer Programmiersprache, die Sie verstehen: JavaScript! + +Früher wurde es auf unabhängigen [`Repositories`](https://github.com/ethereumjs/ethereumjs-client) aufgebaut, später wurde es jedoch als Paket in die Monorepo der virtuellen Maschine von Ethereum implementiert. **Sehen Sie sich den Client** -[`ethereumjs-client`](https://github.com/ethereumjs/ethereumjs-client) an +[`ethereumjs-client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client) an ## Andere Projekte {#other-projects} @@ -63,8 +66,8 @@ Im Bereich Ethereum-JavaScript gibt es noch weitere Neuerungen, darunter: - Tools zum Erstellen, Importieren und Exportieren von Ethereum-Schlüsseln - Eine Implementierung des `merkle-patricia-Baumes` – Eine Datenstruktur, die im Yellow-Paper von Ethereum skizziert wird. -In [EthereumJS Repo](https://github.com/ethereumjs) finden Sie Informationen zu allen Themen, an denen Sie Interessiert sind. +Forschen Sie in dem Bereich, der Sie am meisten interessiert, im [EthereumJS-Repository](https://github.com/ethereumjs) ## Weiterführende Informationen {#further-reading} -_Kennen Sie eine Community-Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ +_Sie kennen Community-Resourcen die Ihnen geholfen haben? Bearbeiten Sie diese Seite und fügen Sie sie hinzu!_ diff --git a/src/content/translations/de/developers/docs/programming-languages/python/index.md b/src/content/translations/de/developers/docs/programming-languages/python/index.md index 02ea090c8ab..168bc20dd08 100644 --- a/src/content/translations/de/developers/docs/programming-languages/python/index.md +++ b/src/content/translations/de/developers/docs/programming-languages/python/index.md @@ -1,13 +1,13 @@ --- title: Ethereum für Python-Entwickler -description: Erfahre, wie du mit Python-basierten Projekten und Werkzeugen für Ethereum entwickeln kannst +description: Lernen, wie Sie mit Python-basierten Projekten und Tools für Ethereum entwickeln können lang: de incomplete: true --- -Verwende Ethereum, um dezentrale Anwendungen (oder „dApps“) zu erschaffen, die von den kryptografischen Begebenheiten von Kryptowährungen und der Blockchain-Technologie profitieren. Sie sind vertrauenswürdig, was bedeutet, dass dApps nach dem Hochladen auf Ethereum immer exakt wie programmiert ausgeführt werden. Sie können digitale Vermögenswerte verwalten und dadurch neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein, was bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann und sie so fast unmöglich zu zensieren ist. +Sie können mit Ethereum dezentrale Anwendungen (oder "dApps") erstellen, die von den Vorteilen der Kryptowährung und der Blockchain-Technologie profitieren. Solche dApps sind vertrauenswürdig. Das bedeutet, dass sie, sobald sie auf Ethereum hochgeladen wurden, immer exakt wie programmiert ausgeführt werden. Darüber lassen sich digitale Vermögenswerte verwalten und neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein. Das bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann. Damit ist es fast unmöglich, sie zu zensieren. ## Erste Schritte mit Smart Contracts und der Solidity-Sprache {#getting-started-with-smart-contracts-and-solidity} @@ -23,13 +23,14 @@ Sind Sie an einigen grundlegenden Informationen interessiert? Dann sehen Sie sic ## Informationen für Einsteiger {#beginner-articles} - [Ein (Python)-Entwicklerhandbuch für Ethereum](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/) +- [Bericht über den Zustand von Python im Jahr 2023](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023) - [Eine Einführung in Smart Contracts mit Vyper](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/) - [Einen eigenen ERC20-Token mit Python und Brownie bereitstellen](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58) -- [Wie wird ein Ethereum-Vertrag mit Python Flask entwickelt?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e) +- [Wie entwickelt man einen Ethereum-Vertrag mit Python Flask?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e) - [Einführung in Web3.py · Ethereum für Python-Entwickler](https://www.dappuniversity.com/articles/web3-py-intro) -- [So rufen Sie eine Smart-Contract-Funktion mit Python und web3.py auf](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py) +- [Wie man eine Smart Contract-Funktion mit Python und web3.py aufruft](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py) -## Artikel für Fortgeschrittene {#intermediate-articles} +## Vertiefende Artikel {#intermediate-articles} - [dApp-Entwicklung für Python-Programmierer](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28) - [Eine Python-Ethereum-Schnittstelle erstellen: Teil 1](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d) @@ -48,9 +49,9 @@ Sind Sie an einigen grundlegenden Informationen interessiert? Dann sehen Sie sic ### Aktiv: {#active} - [Web3.py](https://github.com/ethereum/web3.py) – _Python-Bibliothek für die Interaktion mit Ethereum_ -- [Ape](https://github.com/ApeWorX/ape) – _Das Smart-Contract-Entwicklungstool für Python-Experten, Data Scientists und Sicherheitsexperten_ -- [Brownie](https://github.com/eth-brownie/brownie) – _Python-Framework zum Bereitstellen, Testen und Interagieren mit Ethereum-Smart Contracts_ -- [Vyper](https://github.com/ethereum/vyper/) – _Pythonic-Smart-Contract-Sprache für EVM_ +- [Vyper](https://github.com/ethereum/vyper/) – _Pythonic Smart Contract-Sprache für EVM_ +- [Ape](https://github.com/ApeWorX/ape) – _Das Smart Contract-Entwicklungstool für Python-Experten, Datenwissenschaftler und Sicherheitsexperten_ +- [Brownie](https://github.com/eth-brownie/brownie) – _Python-Framework zum Bereitstellen, Testen und Interagieren mit Ethereum Smart Contracts_ - [py-evm](https://github.com/ethereum/py-evm) – _Implementierung der Ethereum -Virtual Machine_ - [eth-tester](https://github.com/ethereum/eth-tester) – _Tools zum Testen von Ethereum-basierten Anwendungen_ - [eth-utils](https://github.com/ethereum/eth-utils/) – _Dienstprogrammfunktionen für das Arbeiten mit Codebasen, die mit Ethereum verwandt sind_ @@ -59,7 +60,7 @@ Sind Sie an einigen grundlegenden Informationen interessiert? Dann sehen Sie sic - [pydevp2p](https://github.com/ethereum/pydevp2p) – _Implementierung des Ethereum-P2P-Stacks_ - [pymaker](https://github.com/makerdao/pymaker) – _Python-API für Maker-Verträge_ - [siwe](https://github.com/spruceid/siwe-py) – _Mit Ethereum (siwe) für Python anmelden_ -- [Smart Contracts zum Testen](https://github.com/tradingstrategy-ai/smart-contracts-for-testing) – _Ein Python-Paket, das ERC-20, Uniswap und andere gängige Verträge zum Schreiben von Tests mit Web3.py bietet_ +- [Web3 DeFi für Ethereum-Integrationen](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _Ein Python-Paket mit fertigen Integrationen für ERC-20, Uniswap und andere populäre Projekte_ ### Archiviert/Nicht mehr verwaltet: {#archived--no-longer-maintained} @@ -78,10 +79,11 @@ Die folgenden Ethereum-basierten Projekte verwenden die auf dieser Seite erwähn - [Sushi](https://sushi.com/) verwendet [Python zum Verwalten und Bereitstellen ihrer Übertragungsverträge](https://github.com/sushiswap/sushi-vesting-protocols) - [Alpha Finance](https://alphafinance.io/) von Alpha Homora verwendet [ Brownie zum Testen und Bereitstellen von Smart Contracts](https://github.com/AlphaFinanceLab/alpha-staking-contract) -## Mitwirkende der Python-Community {#python-community-contributors} +## Python Community-Diskussionen {#python-community-contributors} -Der [Ethereum-Python-Community-Discord](https://discord.gg/9zk7snTfWe) beherbergt eine schnell wachsende Community mit umfangreichen Ressourcen für Diskussionen zu einem der oben genannten Projekte und verwandten Themen. +- [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 ## Andere aggregierte Listen {#other-aggregated-lists} -Das Vyper-Wiki hat eine [umfassende Liste mit Ressourcen für Vyper](https://github.com/ethereum/vyper/wiki/Vyper-tools-and-resources) +Das Vyper-Wiki verfügt über eine [umfassende Liste mit Ressourcen für Vyper](https://github.com/ethereum/vyper/wiki/Vyper-tools-and-resources) diff --git a/src/content/translations/de/developers/docs/programming-languages/ruby/index.md b/src/content/translations/de/developers/docs/programming-languages/ruby/index.md index 0c943da6dc6..4aff65e075e 100644 --- a/src/content/translations/de/developers/docs/programming-languages/ruby/index.md +++ b/src/content/translations/de/developers/docs/programming-languages/ruby/index.md @@ -7,7 +7,7 @@ incomplete: false -Verwende Ethereum, um dezentrale Anwendungen (oder „dApps“) zu erschaffen, die von den kryptografischen Begebenheiten von Kryptowährungen und der Blockchain-Technologie profitieren. Solche dApps sind vertrauenswürdig. Das bedeutet, dass sie, sobald sie auf Ethereum hochgeladen wurden, immer exakt wie programmiert ausgeführt werden. Darüber lassen sich digitale Vermögenswerte verwalten und neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein, was bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann und sie so fast unmöglich zu zensieren ist. +Sie können mit Ethereum dezentrale Anwendungen (oder "dApps") erstellen, die von den Vorteilen der Kryptowährung und der Blockchain-Technologie profitieren. Solche dApps sind vertrauenswürdig. Das bedeutet, dass sie, sobald sie auf Ethereum hochgeladen wurden, immer exakt wie programmiert ausgeführt werden. Darüber lassen sich digitale Vermögenswerte verwalten und neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein. Das bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann. Damit ist es fast unmöglich, sie zu zensieren. ## Erste Schritte mit Smart Contracts und der Solidity-Sprache {#getting-started-with-smart-contracts-and-solidity} diff --git a/src/content/translations/de/developers/docs/programming-languages/rust/index.md b/src/content/translations/de/developers/docs/programming-languages/rust/index.md index 93b786fb25a..c412733cdbe 100644 --- a/src/content/translations/de/developers/docs/programming-languages/rust/index.md +++ b/src/content/translations/de/developers/docs/programming-languages/rust/index.md @@ -1,13 +1,13 @@ --- title: Ethereum für Rust-Entwickler -description: Erfahre, wie du mit Rust-basierten Projekten und Werkzeugen für Ethereum entwickeln kannst +description: Lernen, wie Sie mit Rust-basierten Projekten und Tools für Ethereum entwickeln können lang: de incomplete: true --- -Verwende Ethereum, um dezentrale Anwendungen (oder „dApps“) zu erschaffen, die von den kryptografischen Begebenheiten von Kryptowährungen und der Blockchain-Technologie profitieren. Sie sind vertrauenswürdig, was bedeutet, dass dApps nach dem Hochladen auf Ethereum immer exakt wie programmiert ausgeführt werden. Sie können digitale Vermögenswerte verwalten und dadurch neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein, was bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann und sie so fast unmöglich zu zensieren ist. +Sie können mit Ethereum dezentrale Anwendungen (oder "dApps") erstellen, die von den Vorteilen der Kryptowährung und der Blockchain-Technologie profitieren. Solche dApps sind vertrauenswürdig. Das bedeutet, dass sie, sobald sie auf Ethereum hochgeladen wurden, immer exakt wie programmiert ausgeführt werden. Darüber lassen sich digitale Vermögenswerte verwalten und neuartige Finanzanwendungen erschaffen. Sie können dezentralisiert sein. Das bedeutet, dass keine einzelne Einheit oder Person sie kontrollieren kann. Damit ist es fast unmöglich, sie zu zensieren. ## Erste Schritte mit Smart Contracts und der Solidity-Sprache {#getting-started-with-smart-contracts-and-solidity} @@ -32,31 +32,33 @@ Sind Sie an einigen grundlegenden Informationen interessiert? Dann sehen Sie sic ## Fortgeschrittene Nutzungsmuster {#advanced-use-patterns} -- [pwasm_ethereum-Bibliothek von Externen, um mit dem Ethereum-ähnlichen Netzwerk zu interagieren](https://github.com/openethereum/pwasm-ethereum) +- [pwasm_ethereum Bibliothek von Externen, um mit dem Ethereum-ähnlichen Netzwerk zu interagieren](https://github.com/openethereum/pwasm-ethereum) - [Einen dezentralisierten Chat mit JavaScript und Rust erstellen](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52) -- [Eine dezentralisierte To-do-App mit Vue.js und Rust erstellen](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb) -- [Erste Schritte mit Enigma – In Rust-Programmiersprache](https://blog.enigma.co/getting-started-with-discovery-the-rust-programming-language-4d1e0b06de15) +- [Erstelle eine dezentralisierte Todo-App mit Vue.js & Rust](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb) + - [Eine Einführung in Secret Contracts](https://blog.enigma.co/getting-started-with-enigma-an-intro-to-secret-contracts-cdba4fe501c2) +- [Erstellen einer Blockchain in Rust](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/) ## Rust-Projekte und Tools {#rust-projects-and-tools} -- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) – _Sammlung von Externen, die mit dem Ethereum-ähnlichen Netzwerk interagieren_ -- [Lighthouse](https://github.com/sigp/lighthouse) – _Schneller Ethereum-Client der Konsensebene_ -- [Ethereum-WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) -- [oasis_std](https://docs.rs/oasis-std/0.2.7/oasis_std/) – _OASIS-API-Referenz_ -- [Solaris](https://github.com/paritytech/sol-rs) -- [SputnikVM](https://github.com/sorpaas/rust-evm) – _Implementierung der virtuellen Maschine von Rust Ethereum_ -- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) – _Wavelet-Smart Contract in Rust_ +- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _Sammlung von Externen zur Interaktion mit einem Ethereum-ähnlichen Netzwerk_ +- [Lighthouse](https://github.com/sigp/lighthouse) – _Schneller Ethereum-Client auf Konsensebene_ +- [Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _Vorgeschlagene Neugestaltung der Ausführungsebene für Ethereum Smart-Contracts mit einer deterministischen Teilmenge von WebAssembly_ +- [oasis_std](https://docs.rs/oasis-std/0.2.7/oasis_std/) - _OASIS-API-Referenz_ +- [Solaris](https://github.com/paritytech/sol-rs) - _Testumgebung für Solidity Smart Contracts Einheitstests unter Verwendung der nativen Parity Client EVM._ +- [SputnikVM](https://github.com/rust-blockchain/evm) – _Implementierung der virtuellen Maschine von Rust Ethereum_ +- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _Wavelet Smart Contract in Rust_ - [Foundry](https://github.com/gakonst/foundry) – _Toolkit für die Entwicklung von Ethereum-Anwendungen_ -- [Ethers_rs](https://github.com/gakonst/ethers-rs) – _Ethereum-Bibliothek und -Wallet-Implementierung_ -- [evm_rs](https://github.com/rust-blockchain/evm) – _Ethereum-Virtual-Machine-Implementierung in Rust_ +- [Ethers_rs](https://github.com/gakonst/ethers-rs) – _Ethereum-Bibliothek und Wallet-Implementierung_ - [SewUp](https://github.com/second-state/SewUp) – _Eine Bibliothek, die Ihnen hilft, Ihren Ethereum-Webassembly-Vertrag mit Rust zu erstellen und genau wie in einem gemeinsamen Backend zu entwickeln_ +- [Substreams](https://github.com/streamingfast/substreams) - _Indexierungstechnologie für parallele Blockchain-Daten_ +- [Reth](https://github.com/paradigmxyz/reth) Reth (kurz für Rust Ethereum) ist eine neue Implementierung eines vollständigen Knotens auf Ethereum Sind Sie an weiteren Informationen interessiert? Sehen Sie sich [ethereum.org/developers](/developers/) an. ## Mitwirkende der Rust-Community {#rust-community-contributors} -- [Ethereum-WebAssembly](https://gitter.im/ewasm/Lobby) +- [Ethereum WebAssembly](https://gitter.im/ewasm/Lobby) - [Oasis Gitter](https://gitter.im/Oasis-official/Lobby) - [Parity Gitter](https://gitter.im/paritytech/parity) - [Enigma](https://discord.gg/SJK32GY) diff --git a/src/content/translations/de/developers/docs/scaling/optimistic-rollups/index.md b/src/content/translations/de/developers/docs/scaling/optimistic-rollups/index.md index 24e97bf7586..a5f937af37a 100644 --- a/src/content/translations/de/developers/docs/scaling/optimistic-rollups/index.md +++ b/src/content/translations/de/developers/docs/scaling/optimistic-rollups/index.md @@ -53,5 +53,5 @@ Es gibt mehrere Implementierungen von optimistischen Rollups, die Sie in Ihre dA - [Alles, was Sie über Optimistic Rollup wissen müssen](https://research.paradigm.xyz/rollups) - [Der Leitfaden zu Arbitrum](https://newsletter.banklesshq.com/p/the-essential-guide-to-arbitrum) -- [Wie funktioniert das Rollup von Optimismus wirklich?](https://research.paradigm.xyz/optimism) +- [Wie funktioniert das Rollup von Optimismus wirklich?](https://www.paradigm.xyz/2021/01/how-does-optimisms-rollup-really-work) - [OVM Deep Dive](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52) diff --git a/src/content/translations/de/developers/docs/smart-contracts/compiling/index.md b/src/content/translations/de/developers/docs/smart-contracts/compiling/index.md index 8301593e22f..d90456c28b0 100644 --- a/src/content/translations/de/developers/docs/smart-contracts/compiling/index.md +++ b/src/content/translations/de/developers/docs/smart-contracts/compiling/index.md @@ -1,5 +1,5 @@ --- -title: Kompilieren von Smart Contracts +title: Smart Contracts erstellen description: Eine Erklärung, warum Sie Smart Contracts kompilieren müssen und was bei der Kompilierung tatsächlich passiert lang: de incomplete: true @@ -275,4 +275,4 @@ Unten ist die ABI für den ERC-20-Token-Contract. Ein ERC-20 ist ein Tokenstanda ## Verwandte Themen {#related-topics} - [JavaScript-Client-Bibliotheken](/developers/docs/apis/javascript/) -- [Ethereum-Virtual Machine (EVM)](/developers/docs/ethereum-virtual-machine/) +- [Ethereum-Virtual Machine (EVM)](/developers/docs/evm/) diff --git a/src/content/translations/de/developers/docs/smart-contracts/deploying/index.md b/src/content/translations/de/developers/docs/smart-contracts/deploying/index.md index 17dc6ca91ae..fe1aea23024 100644 --- a/src/content/translations/de/developers/docs/smart-contracts/deploying/index.md +++ b/src/content/translations/de/developers/docs/smart-contracts/deploying/index.md @@ -1,5 +1,5 @@ --- -title: Einsetzen von Smart Contracts +title: Smart Contracts bereitstellen description: lang: de --- @@ -12,18 +12,18 @@ Die Bereitstellung des Smart Contracts auf der Blockchain ist eigentlich nur das Sie sollten mit [Ethereum-Netzwerken](/developers/docs/networks/), [Transaktionen](/developers/docs/transactions/) und der [Anatomie von Smart Contracts](/developers/docs/smart-contracts/anatomy/) vor der Umsetzung von Smart Contracts vertraut sein. -Der Einsatz eines Vertrags kostet auch ETH, daher sollten Sie sich mit [Ressourcen und Gebühren](/developers/docs/gas/) auf Ethereum auskennen. +Die Veröffentlichung eines Contracts kostet auch Ether (ETH), da sie auf der Blockchain gespeichert werden. Daher sollten Sie mit [Gas und Gebühren](/developers/docs/gas/) auf Ethereum vertraut sein. Zu guter letzt muss ein Vertrag vor der Bereitstellung kompiliert werden. Lesen Sie also vorher den Beitrag [Smart Contracts kompilieren](/developers/docs/smart-contracts/compiling/). ## So laden Sie einen Smart Contract hoch {#how-to-deploy-a-smart-contract} -### Was Sie brauchen {#what-youll-need} +### Folgendes ist erforderlich {#what-youll-need} - Der Vertragsbytecode – dieser wird durch [Kompilierung](/developers/docs/smart-contracts/compiling/) generiert - Ether for gas – Sie setzen Ihre Ressourcengrenze wie bei anderen Transaktionen fest. Beachten Sie dabei jedoch, dass das Integrieren von Smart Contracts viel mehr Ressourcen erfordert als eine einfache ETH-Transaktion. - Ein Bereitstellungsskript oder Plug-in -- Zugang zu einem [Ethereum-Node](/developers/docs/nodes-and-clients/), entweder durch den Betrieb eines eigenen Node, die Verbindung zu einem öffentlichen Node oder über einen API-Schlüssel mit Hilfe eines [Node-Dienstes](/developers/docs/nodes-and-clients/nodes-as-a-service/) wie Infura oder Alchemy +- Zugriff auf einen [Ethereum-Knoten](/developers/docs/nodes-and-clients/), entweder durch Betreiben Ihres eigenen Knotens, durch Verbindung zu einem öffentlichen Knoten oder über einen API-Schlüssel mit einem [Node-Service](/developers/docs/nodes-and-clients/nodes-as-a-service/) ### Schritte zur Bereitstellung eines Smart Contracts {#steps-to-deploy} @@ -37,7 +37,7 @@ Sobald Ihr Smart Contract integriert ist, hat er eine Ethereum-Adresse, wie ande - [Remix](https://remix.ethereum.org) -**Tenderly – _Simulieren, debuggen und überwachen Sie alles auf EVM-kompatiblen Ketten, mit Echtzeitdaten_** +**Tenderly - _Web3-Entwicklungsplattform, die Debugging, Beobachtbarkeit und Infrastrukturbausteine für die Entwicklung, das Testen, die Überwachung und den Betrieb von Smart Contracts bietet_** - [tenderly.co](https://tenderly.co/) - [Dokumentation](https://docs.tenderly.co/) @@ -57,20 +57,26 @@ Sobald Ihr Smart Contract integriert ist, hat er eine Ethereum-Adresse, wie ande - [Dokumente über Netzwerke und Anwendungsbereitstellung](https://www.trufflesuite.com/docs/truffle/advanced/networks-and-app-deployment) - [GitHub](https://github.com/trufflesuite/truffle) +**thirdweb - _Einfache Bereitstellung eines beliebigen Vertrags für eine EVM-kompatible Blockchain mit einem einzigen Befehl_** + +- [Dokumentation](https://portal.thirdweb.com/deploy/) + ## Verwandte Tutorials {#related-tutorials} -- [Bereitstellung Ihres ersten Smart Contracts](/developers/tutorials/deploying-your-first-smart-contract/) _– Eine Einführung in die Bereitstellung Ihres ersten Smart Contracts in einem Ethereum-Testnetzwerk_ -- [Mit anderen Contracts aus Solidity interagieren](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– So bauen Sie einen Smart Contract aus einem bestehenden Vertrag auf und interagieren damit_ -- [So können Sie die Größe Ihres Vertrags verkleinern](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _– So verkleinern Sie die Größe Ihres Vertrags, um sie unter dem Limit zu halten und Ressourcen zu sparen_ +- [Bereitstellung Ihres ersten Smart Contracts](/developers/tutorials/deploying-your-first-smart-contract/) _– Eine Einführung in die Bereitstellung Ihres ersten Smart Contracts in einem Ethereum-Testnetzwerk._ +- [Hallo Welt | Smart Contract-Tutorial](/developers/tutorials/hello-world-smart-contract/) _– Ein leicht verständliches Tutorial zur Erstellung & Veröffentlichung eines einfachen Smart Contracts auf Ethereum._ +- [Mit anderen Verträgen aus Solidity interagieren](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– So können Sie einen Smart Contract aus einem bestehenden Vertrag aufbauen und mit ihm interagieren_ +- [So können Sie die Größe Ihres Vertrags reduzieren](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _– So reduzieren Sie die Größe Ihres Vertrags, um sie unter dem Limit zu halten und Gas zu sparen_ ## Weiterführende Informationen {#further-reading} -- [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) – _OpenZeppelin_ +- [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) - _OpenZeppelin_ - [Ihre Verträge mit Hardhat bereitstellen](https://hardhat.org/guides/deploying.html) – _Nomic Labs_ -_Kennen Sie eine Community-Ressource die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ +_Sie kennen Community-Resourcen die Ihnen geholfen haben? Bearbeiten Sie diese Seite und fügen Sie sie hinzu!_ ## Verwandte Themen {#related-topics} - [Entwicklungs-Frameworks](/developers/docs/frameworks/) -- [Einen Ethereum-Node starten](/developers/docs/nodes-and-clients/run-a-node/) +- [Einen Ethereum-Knoten betreiben](/developers/docs/nodes-and-clients/run-a-node/) +- [Nodes als Dienstleistung](/developers/docs/nodes-and-clients/nodes-as-a-service) diff --git a/src/content/translations/de/developers/docs/smart-contracts/index.md b/src/content/translations/de/developers/docs/smart-contracts/index.md index 1b1ff36b258..df70c592edd 100644 --- a/src/content/translations/de/developers/docs/smart-contracts/index.md +++ b/src/content/translations/de/developers/docs/smart-contracts/index.md @@ -8,7 +8,7 @@ lang: de Ein "Smart Contract" oder intelligenter Vertrag ist einfach ein Programm, das auf der Ethereum-Blockchain läuft. Es ist eine Sammlung von Anweisungen (seinen Funktionen) und Daten (seinem Zustand), die sich an einer bestimmten Adresse in der Ethereum-Blockchain befindet. -Smart Contracts sind eine Art [Ethereum-Konto](/developers/docs/accounts/). Sie können also ein Guthaben aufweisen und Transaktionen über das Netzwerk senden. Allerdings werden sie nicht von einem Benutzer gesteuert, sondern im Netzwerk bereitgestellt und wie programmiert ausgeführt. Benutzerkonten können dann mit einem Smart Contract interagieren, indem sie Transaktionen übermitteln, die eine im Smart Contract definierte Funktion ausführt. Smart Contracts können, wie auch herkömmliche Verträge, Regeln definieren und diese mittels Programmierung automatisch durchsetzen. Standardmäßig können Smart Contracts nicht gelöscht werden und Interaktionen mit ihnen sind irreversibel. +Smart Contracts sind eine Art [Ethereum-Konto](/developers/docs/accounts/). Das bedeutet, dass sie über ein Guthaben verfügen und Ziel von Transaktionen werden können. Allerdings werden sie nicht von einem Benutzer gesteuert, sondern im Netzwerk bereitgestellt und wie programmiert ausgeführt. Benutzerkonten können dann mit einem Smart Contract interagieren, indem sie Transaktionen übermitteln, die eine im Smart Contract definierte Funktion ausführt. Smart Contracts können, wie auch herkömmliche Verträge, Regeln definieren und diese mittels Programmierung automatisch durchsetzen. Standardmäßig können Smart Contracts nicht gelöscht werden und Interaktionen mit ihnen sind irreversibel. ## Voraussetzungen {#prerequisites} @@ -28,7 +28,7 @@ Geld + Produktauswahl = ausgeworfener Riegel Diese Logik ist in den Automaten einprogrammiert. -Einem Smart Contract wurde, wie auch einem Verkaufsautomaten, eine Logik einprogrammiert. Hier ist ein einfaches Beispiel dafür, wie ein solcher Verkaufsautomat als Smart Contract aussehen könnte: +Einem Smart Contract wurde, wie auch einem Verkaufsautomaten, eine Logik einprogrammiert. Hier ist ein einfaches Beispiel dafür, wie dieser Automat aussehen würde, wenn er ein in Solidity geschriebener intelligenter Vertrag wäre: ```solidity pragma solidity 0.8.7; @@ -67,7 +67,7 @@ Wenn ein Verkaufsautomat vorhanden ist, benötigt man keinen Verkäufer mehr. Ge ## Genehmigungsfrei {#permissionless} -Jeder kann einen Smart Contract erstellen und ihn im Netzwerk bereitstellen. Sie müssen nur lernen, wie Sie in einer [intelligenten Vertragssprache](/developers/docs/smart-contracts/languages/) codieren. Zudem benötigen Sie ausreichend ETH, um Ihren Vertrag bereitzustellen. Die Bereitstellung eines Smart Contracts ist technisch betrachtet eine Transaktion. Daher müssen Sie Ihre [Ressourcen](/developers/docs/gas/) genauso bezahlen wie Sie es für einen einfachen ETH-Transfer tun. Die Ressourcenkosten für die Vertragsbereitstellung sind jedoch weitaus höher. +Jeder kann einen Smart Contract erstellen und ihn im Netzwerk bereitstellen. Sie müssen nur lernen, wie Sie in einer [intelligenten Vertragssprache](/developers/docs/smart-contracts/languages/) codieren. Zudem benötigen Sie ausreichend ETH, um Ihren Vertrag bereitzustellen. Das Bereitstellen eines Smart Contracts ist technisch gesehen eine Transaktion, so dass Sie [Gas](/developers/docs/gas/) bezahlen müssen wie für eine einfache ETH-Überweisung. Allerdings sind die Gaskosten für die Vertragsbereitstellung weitaus höher. Ethereum bietet entwicklerfreundliche Sprachen zum Schreiben von Smart Contracts: @@ -80,18 +80,22 @@ Allerdings müssen sie kompiliert werden, bevor sie bereitgestellt werden könne ## Komposition {#composability} -Smart Contracts sind auf Ethereum öffentlich. Sie können sie sich als offene APIs vorstellen. Das bedeutet, Sie können andere Smart Contracts in Ihrem eigenen Smart Contract aufrufen, um die Möglichkeiten erheblich zu erweitern. Verträge können sogar andere Verträge bereitstellen. +Smart Contracts sind auf Ethereum öffentlich. Sie können sie sich als offene APIs vorstellen. Das bedeutet, dass Sie andere Smart Contracts in Ihrem eigenen Smart Contract aufrufen können, um die Anwendungsmöglichkeiten deutlich zu erweitern. Verträge können sogar andere Verträge bereitstellen. Erfahren Sie mehr über die [Kombinierbarkeit von Smart Contracts](/developers/docs/smart-contracts/composability/). ## Einschränkungen {#limitations} -Smart Contracts können alleine keine Informationen über Ereignisse der "echten Welt" erhalten, weil sie keine HTTP-Anfragen stellen können. Das ist beabsichtigt. Sich auf externe Informationen zu verlassen, könnte den für Sicherheit und Dezentralisierung wichtigen Konsens gefährden. +Smart Contracts allein können keine Informationen über Ereignisse in der „realen Welt“ erhalten, da sie keine Daten von Quellen außerhalb der Kette abrufen können. Das bedeutet, dass sie nicht auf Ereignisse in der realen Welt reagieren können. Das ist beabsichtigt. Sich auf externe Informationen zu verlassen, könnte den für Sicherheit und Dezentralisierung wichtigen Konsens gefährden. -Es gibt Möglichkeiten, das mittels [Orakel](/developers/docs/oracles/) zu umgehen. +Für Blockchain-Anwendungen ist es jedoch wichtig, dass sie auch Daten außerhalb der Chain benutzen können. Die Lösung sind [Orakel](/developers/docs/oracles/), d. h. Tools, die Off-Chain-Daten aufnehmen und sie für Smart Contracts verfügbar machen. Eine weitere Einschränkung von Smart Contracts ist die maximale Vertragsgröße. Ein Smart Contract kann maximal 24 KB groß sein, sonst gehen ihm die Ressourcen aus. Das kann mit [The Diamond Pattern](https://eips.ethereum.org/EIPS/eip-2535) behoben werden. +## Multisig-Verträge {#multisig} + +Multisig-Verträge (multiple Signaturen) sind Smart Contract-Accounts, die mehrere gültige Unterschriften erfordern, um eine Transaktion durchzuführen. Dies ist sehr nützlich, um einzelne Schwachstellen bei Verträgen zu vermeiden, die große Mengen an Ether oder anderen Token enthalten. Multisig-Verträge teilen außerdem die Verantwortung für die Vertragsausführung und die Schlüsselverwaltung auf mehrere Parteien auf und verhindern den Verlust eines einzigen privaten Schlüssels, der sonst zu einem irreversiblen Verlust von Geldern führt. Aus diesen Gründen können Multisig-Verträge für eine einfache DAO-Governance verwendet werden. Multisig-Verträge erfordern N Unterschriften von M möglichen akzeptablen Unterschriften (wobei N ≤ M und M > 1), um ausgeführt werden zu können. Üblicherweise werden `N = 3, M = 5` und `N = 4, M = 7` verwendet. Ein 4/7-Multisig-Vertrag erfordert vier von sieben möglichen gültigen Unterschriften. Das bedeutet, dass die Gelder auch dann noch abrufbar sind, wenn drei Unterschriften verloren gehen. In diesem Fall bedeutet es auch, dass die Mehrheit der Schlüsselinhaber zustimmen und unterschreiben muss, damit der Vertrag ausgeführt werden kann. + ## Ressourcen für Smart Contracts {#smart-contract-resources} **OpenZeppelin Contracts –** **_Bibliothek für die sichere Entwicklung von Smart Contracts_** @@ -100,13 +104,8 @@ Eine weitere Einschränkung von Smart Contracts ist die maximale Vertragsgröße - [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts) - [Community-Forum](https://forum.openzeppelin.com/c/general/16) -**DappSys –** **_Sichere, einfache, flexible Bausteine für Smart Contracts_** - -- [Dappsys](https://dappsys.readthedocs.io/) -- [GitHub](https://github.com/dapphub/dappsys) - ## Weiterführende Informationen {#further-reading} -- [Smart Contracts: The Blockchain Technology That Will Replace Lawyers](https://blockgeeks.com/guides/smart-contracts/) _– Blockgeeks_ -- [Best Practices for Smart Contract Development](https://yos.io/2019/11/10/smart-contract-development-best-practices/) _– 10. November 2019 – Yos Riady_ -- [Clean Contracts – ein Leitfaden zu intelligenten Vertragsmustern & Praktiken](https://www.wslyvh.com/clean-contracts/) _– 30. Juli 2020 – wslyvh_ +- [Coinbase: Was ist ein Smart Contract?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract) +- [Chainlink: Was ist ein Smart Contract?](https://chain.link/education/smart-contracts) +- [Video: Einfach erklärt – Smart Contracts](https://youtu.be/ZE2HxTmxfrI) diff --git a/src/content/translations/de/developers/docs/smart-contracts/languages/index.md b/src/content/translations/de/developers/docs/smart-contracts/languages/index.md index f12c71c5f54..134116b4229 100644 --- a/src/content/translations/de/developers/docs/smart-contracts/languages/index.md +++ b/src/content/translations/de/developers/docs/smart-contracts/languages/index.md @@ -88,6 +88,7 @@ Dieses Beispiel soll ein Gefühl vermitteln, wie die Smart-Contract-Syntax in So - Pythonische Programmiersprache - Stark typisiert - Kompilierter Code ist kurz und nachvollziehbar +- Effiziente Bytecode-Generierung - Hat beabsichtigterweise weniger Funktionen als Solidity – mit dem Ziel, die Smart Contracts sicherer und einfacherer auditierbar zu machen. Vyper bietet keine Untersützung für: - Modifikationen - Vererbung @@ -104,10 +105,16 @@ Weitere Informationen finden Sie im [Vyper-Grundprinzip](https://vyper.readthedo - [Dokumentation](https://vyper.readthedocs.io) - [Vyper am Beispiel](https://vyper.readthedocs.io/en/latest/vyper-by-example.html) +- [Mehr Vyper am Beispiel](https://vyper-by-example.org/) - [GitHub](https://github.com/vyperlang/vyper) -- [Vyper Gitter-Chatraum](https://gitter.im/vyperlang/community) +- [Vyper-Community Discord-Chat](https://discord.gg/SdvKC79cJk) - [Spickzettel](https://reference.auditless.com/cheatsheet) -- [Aktualisiert 8. Januar 2020](https://blog.ethereum.org/2020/01/08/update-on-the-vyper-compiler) +- [Entwicklungsframeworks für Smart Contracts und Tools für Vyper](/developers/docs/programming-languages/python/) +- [VyperPunk - Lernen Sie, Vyper Smart Contracts zu sichern und zu hacken](https://github.com/SupremacyTeam/VyperPunk) +- [VyperExamples - Beispiele zu Schwachstellen von Vyper](https://www.vyperexamples.com/reentrancy) +- [Vyper Hub für Entwicklung](https://github.com/zcor/vyper-dev) +- [Vyper Greatest Hits Smart Contract – Beispiele](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts) +- [Großartige, sorgfältig ausgewählte Vyper-Ressourcen](https://github.com/spadebuilders/awesome-vyper) ### Beispiel {#example} diff --git a/src/content/translations/de/developers/docs/smart-contracts/libraries/index.md b/src/content/translations/de/developers/docs/smart-contracts/libraries/index.md index dff94b05351..7ef778bd109 100644 --- a/src/content/translations/de/developers/docs/smart-contracts/libraries/index.md +++ b/src/content/translations/de/developers/docs/smart-contracts/libraries/index.md @@ -1,5 +1,5 @@ --- -title: Smart-Contract-Bibliotheken +title: Smart Contract-Bibliotheken description: lang: de --- @@ -16,7 +16,7 @@ Normalerweise finden Sie zwei Arten von Erstellungsblöcken in einer Smart Contr ### Verhaltensweisen {#behaviors} -Wenn Sie einen Smart Contract schreiben, ist es wahrscheinlich das Sie immer wieder dieselben Muster erstellen, zum Beispiel das Zuweisen einer _Admin-\_Adresse, um geschützte Vorgänge in einem Vertrag auszuführen, oder das Hinzufügen einer Notfall-\_Unterbrechungs_-Schaltfläche, falls ein unvorhergesehenes Problem auftritt. +Wenn Sie einen Smart Contract schreiben, ist es wahrscheinlich das Sie immer wieder dieselben Muster erstellen, zum Beispiel das Zuweisen einer _Admin_-Adresse, um geschützte Vorgänge in einem Vertrag auszuführen, oder das Hinzufügen einer Notfall-_Unterbrechungs_-Schaltfläche, falls ein unvorhergesehenes Problem auftritt. Smart-Contract-Bibliotheken bieten in der Regel wiederverwendbare Implementierungen dieser Vorgehensweisen als [Bibliotheken](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) oder über eine [Vererbung](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance) an. @@ -102,6 +102,11 @@ Schließlich sollten Sie bei der Entscheidung, ob Sie eine Bibliothek integriere - [GitHub](https://github.com/HQ20/contracts) +**thirdweb Solidity SDK -** **_Bietet die Tools, die zum effizienten Erstellen von benutzerdefinierten Smart Contracts erforderlich sind_** + +- [Dokumentation](https://portal.thirdweb.com/solidity/) +- [GitHub](https://github.com/thirdweb-dev/contracts) + ## Ähnliche Tutorials {#related-tutorials} - [Sicherheitsüberlegungen für Ethereum-Entwickler](/developers/docs/smart-contracts/security/) _– Ein Tutorial zu Sicherheitsüberlegungen beim Erstellen von Smart Contracts, einschließlich der Bibliotheksnutzung_ @@ -109,4 +114,4 @@ Schließlich sollten Sie bei der Entscheidung, ob Sie eine Bibliothek integriere ## Weiterführende Informationen {#further-reading} -_Kennen Sie eine Community-Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ +_Sie kennen Community-Resourcen die Ihnen geholfen haben? Bearbeiten Sie diese Seite und fügen Sie sie hinzu!_ diff --git a/src/content/translations/de/developers/docs/smart-contracts/security/index.md b/src/content/translations/de/developers/docs/smart-contracts/security/index.md index 6eba4950f93..f7513df2199 100644 --- a/src/content/translations/de/developers/docs/smart-contracts/security/index.md +++ b/src/content/translations/de/developers/docs/smart-contracts/security/index.md @@ -1,148 +1,246 @@ --- -title: Smart Contract – Sicherheit -description: Sicherheitserwägungen für Ethereum-Entwickler +title: Sicherheit von Smart Contracts +description: Ein Überblick über die Richtlinien für die Erstellung sicherer Ethereum Smart Contracts lang: de --- -Ethereum-Smart-Contracts sind extrem flexibel und in der Lage, sowohl große Mengen an Token (oft über $1B) zu halten, als auch unveränderliche Logik auf der Grundlage von zuvor eingesetztem Smart-Contract-Code auszuführen. Während das ein lebendiges und kreatives Ökosystem vernetzter Smart Contracts geschaffen hat, das ohne Vertrauen auskommt, ist es auch das perfekte Ökosystem, um Angreifer anzulocken, die davon profitieren, Schwachstellen in Smart Contracts und unerwartetem Verhalten in Ethereum auszunutzen. Code in Smart Contracts kann _normalerweise_ nicht geändert werden, um Sicherheitslücken zu schließen. Assets die aus Smart Contracts gestohlen wurden, können nicht zurück geholt werden und gestohlene Assets sind sehr schwer nachzuverfolgen. Die Gesamtsumme gestohlener oder verlorener Werte infolge von Problemen mit Smart Contracts beläuft sich auf weit über 1 Milliarde Dollar. Einige der größeren Codefehlern in Smart Contracts beinhalten: +Smart Contracts sind äußerst flexibel und in der Lage, große Mengen an Werten und Daten zu kontrollieren, während sie eine unveränderliche Logik auf der Grundlage von auf der Blockchain bereitgestelltem Code ausführen. So ist ein lebendiges Ökosystem aus vertrauenswürdigen und dezentralisierten Applikationen entstanden, das viele Vorteile gegenüber den alten Systemen bietet. Sie bieten auch eine Chance für Angreifer, die durch die Ausnutzung von Schwachstellen in Smart Contracts Profit machen wollen. -- [Parity Multi-Sig-Problem Nr. 1: 30 Millionen US-Dollar verloren](https://www.coindesk.com/30-million-ether-reported-stolen-parity-wallet-breach) -- [Parity Multi-Sig-Problem Nr. 2: 300 Millionen US-Dollar verschlossen (niemand hat Zugriff)](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether) -- [TheDAO-Hack, 3,6 Millionen ETH! Über 1 Milliarde US-Dollar in heutigen ETH-Werten](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) +Öffentliche Blockchains wie Ethereum erschweren das Problem der Sicherung von Smart Contracts zusätzlich. Der Code des veröffentlichten Vertrags _kann in der Regel _ nicht geändert werden, um Sicherheitslücken zu schließen, während die aus Smart Contracts gestohlenen Vermögenswerte aufgrund der Unveränderlichkeit extrem schwer nachzuverfolgen und meist nicht wiederherzustellen sind. + +Obwohl die Zahlen variieren, wird geschätzt, dass der Gesamtbetrag des gestohlenen oder verlorenen Werts aufgrund von Sicherheitsmängeln in Smart Contracts weit über 1 Milliarde US-Dollar beträgt. Dies beinhaltet hochkarätige Vorfälle, wie den [DAO-Hack](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) (3,6 Mio. ETH gestohlen, nach heutigen Preisen über 1 Milliarde US-Dollar wert), den [Parity Multi-Sig Wallet-Hack](https://www.coindesk.com/30-million-ether-reported-stolen-parity-wallet-breach) (30 Mio. US-Dollar von Hackern verloren) und das [Problem mit den eingefrorenen Parity-Wallets](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether) (über 300 Mio. US-Dollar in ETH gesperrt). + +Die oben genannten Probleme machen es für Entwickler zwingend erforderlich, in die Entwicklung sicherer, robuster und widerstandsfähiger Smart Contracts zu investieren. Die Sicherheit von Smart Contracts ist eine ernste Angelegenheit, die jeder Entwickler lernen sollte. In diesem Ratgeber werden Sicherheitsüberlegungen für Ethereum-Entwickler behandelt und Ressourcen zur Verbesserung der Smart Contract-Sicherheit vorgestellt. ## Voraussetzungen {#prerequisites} -Im Folgenden wird die Sicherheit von Smart Contracts erläutert. Als Voraussetzung sollten Sie daher mit [Smart Contracts](/developers/docs/smart-contracts/) vertraut sein oder sich vertraut machen, bevor Sie sich dem Thema Sicherheit widmen. +Stellen Sie sicher, dass Sie mit den [Grundlagen der Smart Contract-Entwicklung](/developers/docs/smart-contracts/) vertraut sind, bevor Sie sich mit der Sicherheit befassen. -## So schreiben Sie einen sicheren Smart-Contract-Code {#how-to-write-more-secure-smart-contract-code} +## Richtlinien für die Erstellung sicherer Ethereum Smart Contracts {#smart-contract-security-guidelines} -Bevor Sie Code im Ethereum-Mainnet einführen, ist es wichtig, ausreichende Vorsichtsmaßnahmen zu treffen, damit alle Vorgänge geschützt sind, die Werte betreffen und über den Smart Contract durchgeführt werden. In diesem Artikel werden wir einige spezielle Angriffe diskutieren, Ressourcen bereitstellen, um mehr über Angriffstypen zu erfahren. Außerdem erfahren Sie mehr über einige grundlegende Werkzeuge und Best Practices, um sicherzustellen, dass Ihre Verträge korrekt und sicher funktionieren. +### 1. Gestaltung geeigneter Zugriffskontrollen {#design-proper-access-controls} -## Audits sind keine Garantie {#audits-are-not-a-silver-bullet} +Bei Smart Contracts können Funktionen, die als `public` oder `external` markiert sind, von beliebigen extern verwalteten Konten (EOAs) oder Vertragskonten aufgerufen werden. Die Festlegung der öffentlichen Sichtbarkeit von Funktionen ist notwendig, wenn Sie möchten, dass andere Personen mit Ihrem Vertrag interagieren können. Funktionen, die als `private` gekennzeichnet sind, können jedoch nur von Funktionen innerhalb des Smart Contracts aufgerufen werden, nicht von externen Accounts. Jedem Netzwerkteilnehmer Zugang zu Vertragsfunktionen zu gewähren, kann zu Problemen führen, insbesondere wenn dies bedeutet, dass jeder Nutzer sensible Operationen durchführen kann (z. B. das Minting neuer Token). -Vor Jahren waren die Tools zum Schreiben, Kompilieren, Testen und Bereitstellen von Smart Contracts noch unausgereift. Das führte dazu, dass viele Projekte willkürlichen Solidity-Code schreiben konnten und ihn an einen Auditor übergaben, der den Code auf seine klare Funktionsweise und deren Sicherheit untersuchte. Im Jahr 2020 sind die Entwicklungsprozesse und Tools, die das Programmieren in Solidity unterstützen, wesentlich besser. Wenn Sie die Best Practices umsetzen, stellen Sie damit sicher, dass Ihr Projekt leichter zu verwalten ist, und erfüllen viele Sicherheitsaspekte für Ihr Projekt. Den Smart Contract am Ende einem Audit zu unterziehen, reicht als einziger Sicherheitsaspekt für Ihr Projekt nicht mehr aus. Die Sicherheit beginnt vor dem Schreiben der ersten Zeile des Smart-Contract-Codes, **und zwar mit geeigneten Design- und Entwicklungsprozessen**. +Um die unbefugte Nutzung von Smart Contract-Funktionen zu verhindern, müssen sichere Zugriffskontrollen implementiert werden. Die Zugriffskontrolle beschränkt die Möglichkeit, bestimmte Funktionen in einem Smart Contract zu nutzen, auf zugelassene Stellen, wie z. B. die für die Verwaltung des Vertrags zuständigen Konten. Das **Ownable-Modell** und **Rollenbasierte Kontrolle** sind zwei Parameter, die für die Implementierung der Zugriffskontrolle in Smart Contracts nützlich sind: -## Prozess der Entwicklung von Smart Contracts {#smart-contract-development-process} +#### Ownable-Modell {#ownable-pattern} -Mindestvoraussetzungen: +Beim Ownable-Modell wird während der Vertragserstellung eine Adresse als „Eigentümer“ des Vertrags festgelegt. Geschützten Funktionen wird ein `OnlyOwner`-Modifikator zugewiesen, der sicherstellt, dass der Vertrag die Identität der aufrufenden Adresse authentifiziert, bevor die Funktion ausgeführt wird. Aufrufe geschützter Funktionen von anderen Adressen als der des Vertragseigentümers werden immer zurückgewiesen, um unerwünschte Zugriffe zu verhindern. -- Der gesammte Code wird in einem Versionskontrollsystem gespeichert, wie z. B. Git. -- Alle Codeänderungen erfolgen über Pull-Anforderungen. -- Für alle Pull-Anforderungen gibt es mindestens einen Prüfer. _Wenn Sie alleine an einem Solo-Projekt arbeiten, sollten Sie überlegen, einen weiteren Solo-Autor zu finden und Codeprüfungen gegenseitig durchzuführen._ -- Ein einziger Befehl kompiliert, verteilt und führt eine Reihe von Tests für Ihren Code aus, und zwar mithilfe einer Ethereum-Entwicklungsumgebung (siehe: Truffle). -- Sie haben Ihren Code über grundlegende Codeanalysetools wie Mythril und Slither ausgeführt, idealerweise bevor die einzlenen Pull-Anforderungen zusammengeführt werden, um so Unterschiede in der Ausgabe zu vergleichen. -- Solidity zeigt KEINE Compiler-Warnungen an. -- Ihr Code ist gut dokumentiert. +#### Rollenbasierte Zugriffskontrolle {#role-based-access-control} -Es gibt noch viele weitere Aspekte des Entwicklungsprozesses, die erläutert werden könnten, doch diese Liste ist ein guter Ausgangspunkt. Weitere Informationen und ausführliche Erklärungen finden Sie in der [Checkliste für Prozessqualität von DeFiSafety](https://docs.defisafety.com/review-process-documentation/process-quality-audit-process). [DefiSafety](https://defisafety.com/) ist eine inoffizielle Publikation von verschiedenen großen und öffentlichen Ethereum-dApps. Im Rahmen des DeFiSafety-Bewertungssystems wird überprüft, wie gut sich das Projekt an diese Prozessqualitätsprüfungsliste hält. Dabei werden folgende Prozesse eingehalten: +Die Registrierung einer einzigen Adresse als `Eigentümer` in einem Smart Contract birgt das Risiko der Zentralisierung und stellt einen einzelnen Ausfallpunkt dar. Wenn die Kontoschlüssel des Eigentümers gefährdet sind, können Angreifer den entsprechenden Vertrag angreifen. Aus diesem Grund kann die Verwendung eines rollenbasierten Zugriffskontrollmusters mit mehreren administrativen Konten eine bessere Option sein. -- Sie erzeugen sichereren Code durch reproduzierbare, automatisierte Tests. -- Auditoren können Ihr Projekt effektiver prüfen. -- Neue Entwickler können einfacher einsteigen. -- Bietet Entwicklern die Möglichkeit, schnell zu iterieren, testen und Feedback zu Änderungen zu erhalten. -- So kommt es wahrscheinlich zu weniger Rückschritten in Ihrem Projekt. +Bei der rollenbasierten Zugriffskontrolle wird der Zugriff auf sensible Funktionen auf eine Reihe von vertrauenswürdigen Teilnehmern verteilt. So kann beispielsweise ein Konto für das Minting von Token zuständig sein, während ein anderes Konto Upgrades durchführt oder den Vertrag pausiert. Durch diese dezentrale Zugriffskontrolle werden „einzelne Ausfallpunkte“ eliminiert und die Vertrauensvoraussetzungen für Benutzer reduziert. -## Angriffe und Schwachstellen {#attacks-and-vulnerabilities} +##### Verwendung von Wallets mit Multi-Signature-Option -Da Sie nun Solidity-Code unter Beachtung eines effizienten Entwicklungsprozesses schreiben, sollten Sie sich mit einigen gängigen Schwachstellen vertraut machen, um ein Bild davon zu bekommen, was schief gehen kann. +Ein weiterer Ansatz für die Implementierung einer sicheren Zugriffskontrolle ist die Verwendung eines [Multi-Signatur-Kontos](/developers/docs/smart-contracts/#multisig) zur Verwaltung eines Vertrags. Im Gegensatz zu einem regulären EOA sind Multi-Signatur-Konten das Eigentum von mehreren Instanzen und erfordern Signaturen von einer Mindestanzahl von Konten, beispielsweise 3 von 5, um Transaktionen auszuführen. -### Re-entrancy (Wiedereintritt) {#re-entrancy} +Die Verwendung einer Mehrfachsignatur für die Zugriffskontrolle führt eine zusätzliche Sicherheitsebene ein, da Aktionen auf dem Zielvertrag die Zustimmung von mehreren Parteien erfordern. Dies ist besonders nützlich, wenn die Verwendung der Ownable-Funktion erforderlich ist, da es für einen Angreifer oder einen böswilligen Insider schwieriger ist, sensible Vertragsfunktionen für böswillige Zwecke zu manipulieren. -Re-entrancy ist eines der größten und bedeutendsten Sicherheitsprobleme, die bei der Entwicklung von Smart Contracts zu berücksichtigen sind. Da die EVM nicht mehrere Contracts gleichzeitig abwickeln kann, pausiert ein Vertrag, der einen anderen Contract aufruft, die Ausführung des Vertragsaufrufs und den Speicherzustand, bis der Aufruf zurückkehrt. An diesem Punkt läuft die Ausführung normal weiter. Durch dieses Pausieren und Neustarten kann eine Schwachstelle entstehen, die als "Re-entrancy" bekannt ist. +### 2. Verwenden Sie die Anweisungen require(), assert() und revert(), um Vertragsoperationen zu schützen. {#use-require-assert-revert} -Im Folgenden sehen Sie eine einfache Vertragsversion, der anfällig für eine Re-entrancy ist: +Wie bereits erwähnt, kann jeder Nutzer öffentliche Funktionen in Ihrem Smart Contract aufrufen, sobald dieser auf der Blockchain veröffentlicht wurde. Da Sie nicht im Voraus wissen können, wie externe Konten mit einem Vertrag interagieren werden, ist es ideal, interne Schutzmaßnahmen gegen problematische Funktionen zu implementieren, bevor Sie sie Veröffentlichen. Sie können korrektes Verhalten in Smart Contracts durch die Verwendung der Anweisungen `require()`, `assert()` und `revert()` erzwingen, um Ausnahmen auszulösen und Zustandsänderungen rückgängig zu machen, wenn die Ausführung bestimmte Anforderungen nicht erfüllt. -```solidity -// DIESER CONTRACT ENTHÄLT ABSICHTLICHE VERWUNDBARKEITEN, NICHT VERWENDEN! -contract Victim { - mapping (address => uint256) public balances; +**`require()`**: `require` werden am Anfang von Funktionen definiert und stellen sicher, dass vordefinierte Bedingungen erfüllt sind, bevor die aufgerufene Funktion ausgeführt wird. Eine `require`-Anweisung kann verwendet werden, um Nutzereingaben zu validieren, Zustandsvariablen zu überprüfen oder die Identität des aufrufenden Accounts zu authentifizieren, bevor eine Funktion ausgeführt wird. - function deposit() external payable { - balances[msg.sender] += msg.value; +**`assert()`**: `assert()` wird verwendet, um interne Fehler zu erkennen und Verletzungen von „Invarianten“ in Ihrem Code zu überprüfen. Eine Invariante ist eine logische Behauptung über den Zustand eines Vertrags, die für alle Funktionsausführungen gelten soll. Ein Beispiel für eine Invariante ist das maximale Gesamtangebot oder der maximale Saldo eines Token-Vertrags. Die Verwendung von `assert()` stellt sicher, dass Ihr Vertrag niemals einen verwundbaren Zustand erreicht, und falls doch, werden alle Änderungen an den Zustandsvariablen zurückgesetzt. + +**`revert()`**: `revert()` kann in einer if-else-Anweisung verwendet werden, die eine Ausnahme auslöst, wenn die erforderliche Bedingung nicht erfüllt ist. Der folgende Mustervertrag verwendet `revert()`, um die Ausführung von Funktionen zu überwachen: + +``` +pragma solidity ^0.8.4; + +contract VendingMachine { + address owner; + error Unauthorized(); + function buy(uint amount) public payable { + if (amount > msg.value / 2 ether) + revert("Not enough Ether provided."); + // Perform the purchase. } + function withdraw() public { + if (msg.sender != owner) + revert Unauthorized(); - function withdraw() external { - uint256 amount = balances[msg.sender]; - (bool success, ) = msg.sender.call.value(amount)(""); - require(success); - balances[msg.sender] = 0; + payable(msg.sender).transfer(address(this).balance); } } ``` -Um es einem Benutzer zu ermöglichen, ETH auszuzahlen, sind folgende Funktionen im Smart Contract gespeichert: +### 3. Testen Sie Smart Contracts und überprüfen Sie die Richtigkeit des Codes {#test-smart-contracts-and-verify-code-correctness} + +Die Unveränderlichkeit des Codes, der auf der [Ethereum Virtual Machine](/developers/docs/evm/) läuft, bedeutet, dass Smart Contracts ein höheres Maß an Qualitätsbewertung während der Entwicklungsphase erfordern. Wenn Sie Ihren Vertrag ausgiebig testen und auf unerwartete Ergebnisse achten, verbessern Sie die Sicherheit erheblich und schützen Ihre Nutzer auf lange Sicht. + +Die übliche Methode besteht darin, kleine Unit-Tests mit Scheindaten zu schreiben, die der Vertrag von den Nutzern erhalten würde. [Unit-Testing](/developers/docs/smart-contracts/testing/#unit-testing) ist gut, um die Funktionalität bestimmter Funktionen zu testen und sicherzustellen, dass ein Smart Contract wie erwartet funktioniert. + +Leider sind Unit-Tests für die Verbesserung der Sicherheit von Smart Contracts nur wenig effektiv, wenn sie nur isoliert angewendet werden. Ein Unit-Test kann beweisen, dass eine Funktion bei Mock-Daten korrekt ausgeführt wird, Unit-Tests sind jedoch nur so effektiv wie die Tests, die verfasst werden. Das macht es schwierig, unentdeckte Sonderfälle und Schwachstellen zu erkennen, die die Sicherheit Ihres Smart Contracts gefährden könnten. + +Ein besserer Ansatz besteht darin, Unit-Tests mit eigenschaftsbasierten Tests zu kombinieren, die mit [statischer und dynamischer Analyse](/developers/docs/smart-contracts/testing/#static-dynamic-analysis) durchgeführt werden. Die statische Analyse stützt sich auf Low-Level-Darstellungen, wie [Kontrollflussdiagramme](https://en.wikipedia.org/wiki/Control-flow_graph) und [abstrakte Syntaxstrukturen](https://deepsource.io/glossary/ast/), um die erreichbaren Programmzustände und Ausführungspfade zu analysieren. Bei dynamischen Analysetechniken wie Fuzzing wird Vertragscode mit zufälligen Eingabewerten ausgeführt, um Operationen zu erkennen, die gegen Sicherheitseigenschaften verstoßen. + +[Die formale Verifizierung](/developers/docs/smart-contracts/formal-verification) ist eine weitere Technik zur Überprüfung der Sicherheitseigenschaften von Smart Contracts. Im Gegensatz zu regulären Tests kann die formale Verifizierung schlüssig beweisen, dass ein Smart Contract keine Fehler enthält. Dies wird erreicht, indem eine formale Spezifikation erstellt wird, die die gewünschten Sicherheitseigenschaften festhält, um dann zu gewährleisten, dass ein Formmodell des Vertrags mit dieser Spezifikation übereinstimmt. + +### 4. Bitten Sie um eine unabhängige Überprüfung Ihres Codes {#get-independent-code-reviews} + +Nachdem Sie Ihren Vertrag getestet haben, sollten Sie andere bitten, den Quellcode auf Sicherheitsprobleme zu prüfen. Beim Testen werden nicht alle Schwachstellen in einem Smart Contract aufgedeckt, eine unabhängige Überprüfung erhöht jedoch die Wahrscheinlichkeit, dass Schwachstellen entdeckt werden. + +#### Audits (Prüfungen) {#audits} + +Die Beauftragung eines Smart Contract-Audits ist eine Möglichkeit zur Durchführung einer unabhängigen Code-Überprüfung. Prüfer spielen eine wichtige Rolle, wenn es darum geht sicherzustellen, dass Smart Contracts sicher und frei von Qualitätsmängeln und Planungsfehlern sind. + +Dennoch sollten Sie Audits nicht als Wunderwaffe betrachten. Smart Contract-Audits können nicht jeden Fehler aufspüren und sind hauptsächlich dazu gedacht, eine zusätzliche Runde von Überprüfungen durchzuführen, die dazu beitragen können, Probleme zu entdecken, die von den Entwicklern während der anfänglichen Entwicklung und Tests übersehen wurden. Sie sollten auch die [Best Practices für die Zusammenarbeit mit Prüfern](https://twitter.com/tinchoabbate/status/1400170232904400897) befolgen, z. B. den Code ordnungsgemäß dokumentieren und Inline-Kommentare hinzufügen, um den Nutzen eines Smart Contract-Audits zu maximieren. + +#### Aufdecken von Fehlern {#bug-bounties} + +Die Einrichtung eines Prämienprogramms für das Aufdecken von Fehlern (Bug Bounty Program) ist ein weiterer Ansatz zur Durchführung externer Codeüberprüfungen. Ein Bug Bounty ist eine finanzielle Belohnung für Personen (in der Regel Whitehat-Hacker), die Schwachstellen in einer Applikation entdecken. + +Wenn sie richtig eingesetzt werden, geben Bug Bounties den Mitgliedern der Hacker-Community einen Anreiz, Ihren Code auf kritische Fehler zu untersuchen. Ein reales Beispiel ist der „Infinite Money Bug“, der es einem Angreifer ermöglicht hätte, eine unbegrenzte Menge an Ether auf [Optimism](https://www.optimism.io/), einem [Layer 2](/layer-2/)-Protokoll, das auf Ethereum läuft, zu erzeugen. Glücklicherweise entdeckte ein Whitehat-Hacker [den Fehler](https://www.saurik.com/optimism.html) und meldete ihn dem Team, [und erhielt dafür eine hohe Belohnung](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/). + +Eine sinnvolle Strategie besteht darin, die Auszahlung eines Bug-Bounty-Programms im Verhältnis zur Höhe der auf dem Spiel stehenden Mittel festzulegen. Dieser als „[Skalierung zum Aufdecken von Fehlern](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)“ bezeichnete Ansatz bietet finanzielle Anreize für Einzelpersonen, Schwachstellen verantwortungsbewusst offenzulegen, anstatt sie auszunutzen. + +### 5. Befolgen Sie bei der Entwicklung von Smart Contracts die bewährten Methoden {#follow-smart-contract-development-best-practices} + +Die Verfügbarkeit von Audits und Bug Bounties entbindet Sie nicht von Ihrer Verantwortung, qualitativ hochwertigen Code zu schreiben. Die Sicherheit von Smart Contracts beginnt mit der Einhaltung geeigneter Planungs- und Entwicklungsprozesse: + +- Speichern Sie den gesamten Code in einem Versionskontrollsystem, z. B. Git + +- Nehmen Sie alle Codeänderungen über Pull Requests vor + +- Stellen Sie sicher, dass Pull-Requests mindestens einen unabhängigen Reviewer haben. Wenn Sie alleine an einem Projekt arbeiten, sollten Sie überlegen, ob Sie nicht andere Entwickler finden und mit diesen Code-Reviews austauschen + +- Verwendung einer [Entwicklungsumgebung](/developers/docs/frameworks/) zum Testen, Kompilieren und Bereitstellen von Smart Contracts + +- Überprüfen Sie Ihren Code mit grundlegenden Code-Analysetools wie Mythril und Slither. Idealerweise sollten Sie dies tun, noch bevor eine Pull-Anfrage eingebunden wird, und die Unterschiede in der Ergebnisausgabe vergleichen + +- Stellen Sie sicher, dass Ihr Code ohne Fehler kompiliert wird und der Solidity-Compiler keine Warnungen ausgibt + +- Dokumentieren Sie Ihren Code ordnungsgemäß (unter Verwendung von [NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html)) und beschreiben Sie Einzelheiten der Vertragsarchitektur in leicht verständlicher Sprache. Dies erleichtert es anderen, Ihren Code zu überprüfen und zu kontrollieren. + +### 6. Umsetzung solider Pläne für die Notfallwiederherstellung {#implement-disaster-recovery-plans} + +Die Entwicklung sicherer Zugriffskontrollen, die Implementierung von Funktionsmodifikatoren und andere Vorschläge können die Sicherheit von Smart Contracts verbessern, jedoch können sie die Möglichkeit böswilliger Angriffe nicht ausschließen. Der Aufbau sicherer Smart Contracts erfordert eine „Vorbereitung auf Fehler“ und einen Notfallplan, um wirksam auf Angriffe reagieren zu können. Ein angemessener Notfallwiederherstellungsplan umfasst einige oder alle der folgenden Komponenten: + +#### Aktualisierungen von Verträgen {#contract-upgrades} + +Obwohl Ethereum Smart Contracts standardmäßig unveränderlich sind, ist es möglich, durch die Verwendung von Upgrade-Mustern einen gewissen Grad an Veränderbarkeit zu erreichen. Die Aktualisierung von Verträgen ist dann erforderlich, wenn ein kritischer Fehler Ihren alten Vertrag unbrauchbar macht und die Einführung einer neuen Logik die sinnvollste Option darstellt. -1. Lesen, wie viel Guthaben ein Benutzer hat -2. Dem Nutzer diesen Betrag in ETH senden -3. Das Guthaben auf 0 zurücksetzen, so dass das Guthaben des Nutzers nicht doppelt ausgezahlt werden kann +Die Mechanismen zur Aktualisierung von Verträgen funktionieren unterschiedlich, wobei jedoch das „Proxy-Muster“ einer der beliebtesten Ansätze für die Aktualisierung von Smart Contracts ist. Proxy-Muster teilen den Zustand und die Logik einer Anwendung zwischen _zwei_ Verträgen auf. Der erste Vertrag (ein so genannter „Proxy-Vertrag“) speichert Zustandsvariablen (z. B. Benutzerguthaben), während der zweite Vertrag (ein so genannter „Logik-Vertrag“) den Code für die Ausführung von Vertragsfunktionen enthält. -Bei einem Aufruf von einem regulären Konto (z. B. Ihrem eigenen MetaMask-Konto) funktioniert dies wie erwartet: msg.sender.call.value() sendet Ihrem Konto einfach ETH. Allerdings können Smart Contracts auch Aufrufe tätigen. Wenn ein benutzerdefinierter bösartiger Vertrag die Funktion `withdraw()` aufruft, sendet msg.sender.call.value() nicht nur `amount` von ETH, sondern ruft auch implizit den Vertrag auf, um mit der Codeausführung zu beginnen. Stellen Sie sich diesen böswilligen Vertrag vor: +Konten interagieren mit dem Proxy-Vertrag, der alle Funktionsaufrufe über den [`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries) ein Low-Level-Aufruf, an den Logik-Vertrag weiterleitet. Im Gegensatz zu einem normalen Aufruf stellt `delegatecall()` sicher, dass der Code, welcher unter der Adresse des logischen Vertrags läuft, im Kontext des aufrufenden Vertrags ausgeführt wird. Das bedeutet, dass der Logikvertrag immer in den Speicher des Proxys schreibt (anstatt in seinen eigenen Speicher) und die ursprünglichen Werte von `msg.sender` und `msg.value` erhalten bleiben. + +Die Übertragung von Aufrufen an den Logikvertrag erfordert die Speicherung seiner Adresse im Speicher des Proxy-Vertrags. Um die Logik des Vertrags zu aktualisieren, muss daher nur ein anderer Logikvertrag eingesetzt und die neue Adresse im Proxy-Vertrag gespeichert werden. Da nachfolgende Aufrufe des Proxy-Vertrags automatisch an den neuen Logik-Vertrag weitergeleitet werden, hätten Sie den Vertrag „aktualisiert“, ohne den Code tatsächlich zu ändern. + +[Mehr zum Thema Aktualisieren von Verträgen](/developers/docs/smart-contracts/upgrading/). + +#### Notausschalter {#emergency-stops} + +Wie bereits erwähnt, können umfangreiche Prüfungen und Tests unmöglich alle Fehler in einem Smart Contract aufdecken. Wenn eine Schwachstelle in Ihrem Code nach der Veröffentlichung auftritt, ist es unmöglich, sie zu beheben, da Sie den Code, der unter der Vertragsadresse läuft, nicht ändern können. Außerdem kann die Implementierung von Upgrade-Mechanismen (z. B. Proxy-Muster) einige Zeit in Anspruch nehmen (sie erfordern oft die Zustimmung verschiedener Parteien), was den Angreifern nur mehr Zeit gibt, um mehr Schaden anzurichten. + +Die einzige Möglichkeit besteht darin, eine „Not-Aus“-Funktion zu implementieren, die Aufrufe anfälliger Funktionen in einem Vertrag blockiert. Notausschalter bestehen in der Regel aus den folgenden Komponenten: + +1. Eine globale Boolesche Variable, die angibt, ob sich der Smart Contract in einem gestoppten Zustand befindet oder nicht. Diese Variable wird bei der Einrichtung des Vertrags auf `false` gesetzt, schaltet aber auf `true` um, sobald der Vertrag gestoppt wird. + +2. Funktionen, die bei ihrer Ausführung auf die boolesche Variable verweisen. Auf diese Funktionen kann zugegriffen werden, wenn der Smart Contract in Betrieb ist, und sie werden unzugänglich, wenn die Notausfunktion ausgelöst wird. + +3. Eine Person, die Zugriff auf die Notausfunktion hat, die die Boolesche Variable auf `true` schaltet. Um böswillige Aktionen zu verhindern, kann der Aufruf dieser Funktion auf eine vertrauenswürdige Adresse (z. B. den Vertragsinhaber) beschränkt werden. + +Sobald der Vertrag den Notausschalter aktiviert, sind bestimmte Funktionen nicht mehr aufrufbar. Dies wird erreicht, indem die ausgewählten Funktionen in einen Modifikator verpackt werden, der auf die globale Variable verweist. Im Folgenden wird [ein Beispiel](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol) für die Umsetzung dieses Konzepts in einem Vertrag beschrieben: ```solidity -contract Attacker { - function beginAttack() external payable { - Victim(VICTIM_ADDRESS).deposit.value(1 ether)(); - Victim(VICTIM_ADDRESS).withdraw(); +// This code has not been professionally audited and makes no promises about safety or correctness. Use at your own risk. + +contract EmergencyStop { + + bool isStopped = false; + + modifier stoppedInEmergency { + require(!isStopped); + _; } - function() external payable { - if (gasleft() > 40000) { - Victim(VICTIM_ADDRESS).withdraw(); - } + modifier onlyWhenStopped { + require(isStopped); + _; + } + + modifier onlyAuthorized { + // Check for authorization of msg.sender here + _; + } + + function stopContract() public onlyAuthorized { + isStopped = true; + } + + function resumeContract() public onlyAuthorized { + isStopped = false; + } + + function deposit() public payable stoppedInEmergency { + // Deposit logic happening here + } + + function emergencyWithdraw() public onlyWhenStopped { + // Emergency withdraw happening here } } ``` -Der Aufruf von Attacker.beginAttack() startet einen Zyklus, der ähnlich aussieht: +Dieses Beispiel zeigt die grundlegenden Merkmale von Notstopps: -``` -0.) EOA-Aufrufe des Attacker.beginAttack() mit 1 ETH -0.) Attacker.beginAttack() hinterlegt 1 ETH in Opferaccount - - 1.) Angreifer -> Victim.withdraw() - 1.) Victim reads balances[msg.sender] - 1.) Opfer sendet ETH an den Angreifer (welcher die Standardfunktion ausführt) - 2.) Angreifer -> Victim.withdraw() - 2.) Victim reads balances[msg.sender] - 2.) Opfer sendet ETH an den Angreifer (welcher die Standardfunktion ausführt) - 3.) Angreifer -> Victim.withdraw() - 3.) Victim reads balances[msg.sender] - 3.) Opfer sendet ETH an den Angreifer (welcher die Standardfunktion ausführt) - 4.) Angreifer hat nicht mehr genug Gas, kehrt zurück ohne erneut aufzurufen - 3. saldo[msg.sender] = 0; - 2. Salden[msg.sender] = 0; (es war bereits 0) - 1.) Salden[msg.sender] = 0; (es war bereits 0) -``` +- `isStopped` ist ein Boolescher Wert, der zu Beginn `false` ergibt und `true`, wenn der Vertrag in den Notfallmodus wechselt. -Über den Aufruf von Attacker.beginAttack mit 1 ETH erfolgt ein Re-entrancy-Angriff auf das Opfer. Dadurch wird mehr ETH ausgezahlt, als in den Vertrag gegeben wurde (aus den Salden anderer Benutzer, was bewirkt, dass der Smart Contract des Ofers unterbesichert (under-collaterized) wird). +- Die Funktionsmodifikatoren `onlyWhenStopped` und `stoppedInEmergency` überprüfen die Variable `isStopped`. `stoppedInEmergency` wird verwendet, um Funktionen zu steuern, die nicht zugänglich sein sollten, wenn der Vertrag gefährdet ist (z. B. `deposit()`). Aufrufe dieser Funktionen werden einfach zurückgewiesen. -### So umgehen Sie Re-entrancy (der falsche Weg) {#how-to-deal-with-re-entrancy-the-wrong-way} +`onlyWhenStopped` wird für Funktionen verwendet, die in einem Notfall aufrufbar sein sollten (z. B. `emergencyWithdraw()`). Diese Funktionen können zur Lösung des Problems beitragen, weshalb sie nicht in der Liste der „eingeschränkten Funktionen“ aufgeführt sind. -Sie könnten in Erwägung ziehen, die Re-entrancy zu unterbinden, indem Sie einfach verhindern, dass Smart Contracts mit Ihrem Code interagieren. Sie suchen stackoverflow und finden dieses Code-Snippet mit Tonnen von Upvotes: +Die Verwendung einer Notstopp-Funktion ist eine wirksame Notlösung für den Umgang mit schwerwiegenden Schwachstellen in Ihrem Smart Contract. Allerdings müssen die Nutzer darauf vertrauen können, dass die Entwickler sie nicht aus eigennützigen Gründen aktivieren. Zu diesem Zweck kann die Kontrolle über den Notstopp dezentralisiert werden, indem er entweder einem On-Chain-Abstimmungsmechanismus, einer Zeitsperre oder der Genehmigung durch eine Multisig-Wallet unterworfen wird. -```solidity -function isContract(address addr) internal returns (bool) { - uint size; - assembly { size := extcodesize(addr) } - return size > 0; -} -``` +#### Überwachung von Ereignissen {#event-monitoring} + +[Ereignisse](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events) ermöglichen es Ihnen, Aufrufe von Smart Contract-Funktionen zu verfolgen und Änderungen an Zustandsvariablen zu überwachen. Ideal ist es, wenn Sie Ihren Smart Contract so programmieren, dass er immer dann ein Ereignis auslöst, wenn eine Partei eine sicherheitskritische Aktion durchführt (z. B. das Abheben von Guthaben). + +Die Protokollierung von Ereignissen und deren Überwachung off-chain bietet Einblicke in Vertragsvorgänge und hilft, böswillige Handlungen schneller zu entdecken. Das bedeutet, dass Ihr Team schneller auf Hacks reagieren und Maßnahmen ergreifen kann, um die Auswirkungen auf die Benutzer zu minimieren, z. B. das Anhalten von Funktionen oder die Durchführung eines Upgrades. + +Sie können sich auch für ein handelsübliches Überwachungsprogramm entscheiden, das automatisch Warnmeldungen weiterleitet, sobald jemand mit Ihren Verträgen interagiert. Mit diesen Tools können Sie benutzerdefinierte Warnmeldungen erstellen, die auf verschiedenen Auslösern basieren, z. B. dem Transaktionsvolumen, der Häufigkeit von Funktionsaufrufen oder den spezifischen Funktionen. Sie könnten zum Beispiel eine Warnung programmieren, die eingeht, wenn der in einer einzigen Transaktion abgehobene Betrag einen bestimmten Schwellenwert überschreitet. + +### 7. Sichere Governance-Systeme (Verwaltungssysteme) entwerfen {#design-secure-governance-systems} + +Vielleicht möchten Sie Ihre Anwendung dezentralisieren, indem Sie die Kontrolle über die wichtigsten Smart Contracts an Community-Mitglieder übergeben. In diesem Fall wird das Smart Contract-System ein Governance-Modul enthalten – einen Mechanismus, der es den Community-Mitgliedern ermöglicht, administrative Maßnahmen über ein On-Chain-Governance-System zu genehmigen. So können die Token-Inhaber beispielsweise über einen Vorschlag abstimmen, einen Proxy-Vertrag auf eine neue Implementierung zu aktualisieren. + +Eine dezentrale Verwaltung kann von Vorteil sein, insbesondere weil sie die Interessen von Entwicklern und Endnutzern in Einklang bringt. Dennoch können die Mechanismen zur Steuerung von Smart Contracts bei falscher Umsetzung neue Risiken mit sich bringen. Ein plausibles Szenario ist, dass ein Angreifer durch die Aufnahme eines [Flash-Darlehens](/defi/#flash-loans) enorme Stimmkraft (gemessen an der Anzahl der gehaltenen Token) erlangt und einen böswilligen Vorschlag durchsetzt. + +Eine Möglichkeit zur Vermeidung von Problemen im Zusammenhang mit der On-Chain-Governance besteht darin, [eine Zeitsperre zu nutzen](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/). Eine Zeitsperre verhindert, dass ein Smart Contract bestimmte Aktionen ausführt, bis eine bestimmte Zeitspanne verstrichen ist. Andere Strategien bestehen darin, jedem Token ein „Stimmgewicht“ zuzuweisen, das sich danach richtet, wie lange er gesperrt war, oder die Stimmkraft einer Adresse in einem historischen Zeitraum (z. B. 2-3 Blöcke in der Vergangenheit) anstelle des aktuellen Blocks zu messen. Beide Methoden verringern die Möglichkeit, schnell Stimmrechte anzuhäufen, um On-Chain-Abstimmungen zu beeinflussen. + +Mehr über die [Planung sicherer Governance-Systeme](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/) und [verschiedene Abstimmungsmechanismen in DAOs](https://hackernoon.com/governance-is-the-holy-grail-for-daos). + +### 8. Reduzierung der Komplexität des Codes auf ein Minimum {#reduce-code-complexity} + +Traditionelle Softwareentwickler sind mit dem KISS-Prinzip („Keep it simple, stupid“) vertraut, das davon abrät, unnötige Komplexität in das Softwaredesign einzubringen. Dies entspricht der seit langem vertretenen Auffassung, dass „komplexe Systeme auf komplexe Weise versagen“ und anfälliger für kostspielige Fehler sind. -Das scheint sinnvoll: Vertäge haben Code und wenn der Anrufer Code hat, erlauben Sie ihm keine Einzahlung. Fügen wir diesen Aspekt also hinzu: +Beim Schreiben von Smart Contracts ist es besonders wichtig, die Inhalte einfach zu halten, da Smart Contracts potenziell große Wertbeträge kontrollieren. Ein Tipp zur Vereinfachung beim Schreiben von intelligenten Verträgen ist die Wiederverwendung bestehender Bibliotheken, wie [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/4.x/), wo immer möglich. Da diese Bibliotheken von den Entwicklern ausgiebig geprüft und getestet wurden, verringert sich durch ihre Verwendung die Wahrscheinlichkeit, dass durch das Schreiben neuer Funktionen von Grund auf Fehler eingeführt werden. + +Ein weiterer allgemeiner Ratschlag lautet, kleine Funktionen zu schreiben und Verträge modulartig zu halten, indem die Logik auf mehrere Verträge aufgeteilt wird. Das Schreiben von einfacherem Code verringert nicht nur die Angriffsfläche in einem Smart Contract, sondern macht es auch einfacher, Rückschlüsse auf die Korrektheit des Gesamtsystems zu ziehen und mögliche Planungsfehler frühzeitig zu erkennen. + +### 9. Schutz vor häufigen Schwachstellen in Smart Contracts {#mitigate-common-smart-contract-vulnerabilities} + +#### Wiederholungsangriffe {#reentrancy} + +Die EVM erlaubt keine Nebenläufigkeit, was bedeutet, dass zwei Verträge, die an einem Nachrichtenaufruf beteiligt sind, nicht gleichzeitig ausgeführt werden können. Ein externer Aufruf unterbricht die Ausführung und den Speicher des aufrufenden Vertrags, bis der Aufruf erwidert wird, woraufhin die Ausführung normal fortgesetzt wird. Dieser Vorgang kann formal als Übertragung des [Kontrollflusses](https://www.computerhope.com/jargon/c/contflow.htm) auf einen anderen Vertrag beschrieben werden. + +Die Übertragung des Kontrollflusses an nicht vertrauenswürdige Verträge ist zwar meist harmlos, kann aber Probleme verursachen, wie z. B. Wiederholungsangriffe. Ein Wiederholungsangriff liegt vor, wenn ein böswilliger Vertrag in einen gefährdeten Vertrag eingreift, bevor der ursprüngliche Funktionsaufruf abgeschlossen ist. Diese Art des Angriffs lässt sich am besten anhand eines Beispiels erklären. + +Nehmen wir einen einfachen Smart Contract („Opfer“), der es jedem erlaubt, Ether einzuzahlen und abzuheben: ```solidity -// DIESER CONTRACT ENTHÄLT ABSICHTLICHE VERWUNDBARKEITEN, NICHT VERWENDEN! -contract ContractCheckVictim { - mapping (address => uint256) public balances; +// This contract is vulnerable. Do not use in production - function isContract(address addr) internal returns (bool) { - uint size; - assembly { size := extcodesize(addr) } - return size > 0; - } +contract Victim { + mapping (address => uint256) public balances; function deposit() external payable { - require(!isContract(msg.sender)); // <- NEW LINE balances[msg.sender] += msg.value; } @@ -155,39 +253,61 @@ contract ContractCheckVictim { } ``` -Wenn nun ETH eingezahlt werden soll, darf Ihre Adresse keinen Smart-Contract-Code enthalten. Das kann allerdings leicht mit dem folgenden Angreifervertrag ausgehebelt werden: +Dieser Vertrag stellt eine `withdraw()`-Funktion zur Verfügung, die es den Nutzern ermöglicht, zuvor in den Vertrag eingezahlte ETH abzuheben. Bei der Bearbeitung einer Abhebung führt der Vertrag die folgenden Vorgänge durch: -```solidity -contract ContractCheckAttacker { - constructor() public payable { - ContractCheckVictim(VICTIM_ADDRESS).deposit(1 ether); // <- New line - } +1. Überprüft das ETH-Guthaben des Nutzers +2. Sendet Guthaben an die anrufende Adresse +3. Setzt das Guthaben auf 0 zurück und verhindert so weitere Abhebungen durch den Nutzer + +Die Funktion `withdraw()` im `Victim`-Vertrag folgt einem „Prüfungen-Auswirkungen-Interaktionen“-Modell. Sie _prüft_, ob die für die Ausführung notwendigen Bedingungen erfüllt sind (d. h. der Nutzer hat ein positives ETH-Guthaben) und führt die _Interaktion_ durch, indem sie ETH an die Adresse des Aufrufers sendet, bevor sie die _Auswirkungen_ der Transaktion anwendet (d. h. das Guthaben des Nutzers reduziert). + +Wenn `withdraw()` von einem extern betriebenen Konto (EOA) aufgerufen wird, wird die Funktion wie erwartet ausgeführt: `msg.sender.call.value()` sendet ETH an den Aufrufer. Wenn `msg.sender` jedoch ein Smart Contract-Konto ist, welches `withdraw()` aufruft, wird das Senden von Geldmitteln mit `msg.sender.call.value()` auch die Ausführung von Code auslösen, der unter dieser Adresse gespeichert ist. +Stellen Sie sich vor, dass dies der Code ist, der an der Vertragsadresse veröffentlicht wird: + +```solidity + contract Attacker { function beginAttack() external payable { - ContractCheckVictim(VICTIM_ADDRESS).withdraw(); + Victim(victim_address).deposit.value(1 ether)(); + Victim(victim_address).withdraw(); } function() external payable { if (gasleft() > 40000) { - Victim(VICTIM_ADDRESS).withdraw(); + Victim(victim_address).withdraw(); } - } + } } ``` -Während sich der erste Angriff auf die Vertragslogik bezogen hat, liegt nun ein Angriff auf das Verhalten bei der Bereitstellung eines Ethereum-Vertrags vor. Bei der der Erstellung hat ein Vertrag seinen Code noch nicht zurückgegeben, der an seiner Adresse eingesetzt werden soll, doch er behält die volle EVM-Kontrolle WÄHREND dieses Prozesses. +Dieser Vertrag ist darauf ausgelegt, drei Dinge zu tun: + +1. Eine Einzahlung von einem anderen Konto akzeptieren (wahrscheinlich von der EOA des Angreifers) +2. 1 ETH in den Vertrag des Opfers einzahlen +3. Die im Smart Contract gespeicherten 1 ETH abheben -Technisch kann verhindert werden, dass Smart Contracts Ihren Code aufrufen. Verwenden Sie dafür folgende Zeile: +Hier ist nichts verkehrt, außer dass `Attacker` eine weitere Funktion hat, die `withdraw()` im `Victim` erneut aufruft, wenn das Gas, das vom eingehenden `msg.sender.call.value` übrig bleibt, mehr als 40.000 beträgt. Dies gibt `Attacker` die Möglichkeit, `Victim` erneut zu betreten und mehr Geld abzuheben, _bevor_ der erste Aufruf von `withdraw` abgeschlossen ist. Der Kreislauf sieht folgendermaßen aus: ```solidity -require(tx.origin == msg.sender) +- Attacker's EOA calls `Attacker.beginAttack()` with 1 ETH +- `Attacker.beginAttack()` deposits 1 ETH into `Victim` +- `Attacker` calls `withdraw() in `Victim` +- `Victim` checks `Attacker`’s balance (1 ETH) +- `Victim` sends 1 ETH to `Attacker` (which triggers the default function) +- `Attacker` calls `Victim.withdraw()` again (note that `Victim` hasn’t reduced `Attacker`’s balance from the first withdrawal) +- `Victim` checks `Attacker`’s balance (which is still 1 ETH because it hasn’t applied the effects of the first call) +- `Victim` sends 1 ETH to `Attacker` (which triggers the default function and allows `Attacker` to reenter the `withdraw` function) +- The process repeats until `Attacker` runs out of gas, at which point `msg.sender.call.value` returns without triggering additional withdrawals +- `Victim` finally applies the results of the first transaction (and subsequent ones) to its state, so `Attacker`’s balance is set to 0 ``` -Allerdings ist das noch immer keine gute Lösung. Einer der spannendsten Aspekte von Ethereum sind die Gestaltungsmöglichkeiten, wie sich Smart Contracts miteinander integrieren und aufeinander aufbauen. Wenn Sie die obige Zeile verwenden, beschränken Sie damit den Nutzen Ihres Projekts. +Da das Guthaben des Aufrufers nicht auf 0 gesetzt wird, bevor die Funktion ausgeführt wurde, können nachfolgende Aufrufe erfolgreich sein und dem Aufrufer ermöglichen, sein Guthaben mehrmals abzuheben. Diese Art von Angriff kann genutzt werden, um einem Smart Contract das Kapital zu entziehen, wie es beim [2016 DAO-Hack](https://www.coindesk.com/learn/2016/06/25/understanding-the-dao-attack/) geschehen ist. Wiederholungsangriffe sind auch heute noch ein kritisches Thema für Smart Contracts, wie [öffentliche Auflistungen von Reentrancy-Exploits](https://github.com/pcaversaccio/reentrancy-attacks) zeigen. + +##### So verhindert man Wiederholungsangriffe -### So umgehen Sie Re-entrancy (der richtige Weg) {#how-to-deal-with-re-entrancy-the-right-way} +Ein Ansatz für den Umgang mit Wiederholungsangriffen ist das [Prüfungen-Auswirkungen-Interaktionen-Modell](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern). Dieses Modell ordnet die Ausführung von Funktionen so an, dass Code, der vor der Ausführung notwendige Überprüfungen durchführt, zuerst kommt, gefolgt von Code, der den Vertragsstatus manipuliert, und Code, der mit anderen Verträgen oder EOAs interagiert, als letztes erfolgt. -Wenn Sie ganz einfach die Reihenfolge der Speicheraktualisierung und des externen Aufrufs ändern, verhindern Sie die Re-entrancy, die den Angriff ermöglichte. Ein Rückruf in die Auszahlung wird dem Angreifer zwar möglich, doch das ist nutzlos, da die `balances` bereits auf 0 gesetzt sind. +Das „Prüfungen-Auswirkungen-Interaktionen“-Modell wird in einer überarbeiteten Version des `Victim`-Vertrags verwendet, wie unten gezeigt: ```solidity contract NoLongerAVictim { @@ -200,128 +320,236 @@ contract NoLongerAVictim { } ``` -Der obige Code folgt dem Designmuster "Prüfungen-Auswirkungen-Interaktionen", das zum Schutz vor Re-entrancy beiträgt. [Hier erfahren Sie mehr über Prüfungen-Auswirkungen-Interaktionen](https://fravoll.github.io/solidity-patterns/checks_effects_interactions.html). +Dieser Vertrag führt eine _Überprüfung_ des Guthabens des Nutzers durch, wendet die _Auswirkungen_ der `withdraw()`-Funktion an (indem das Guthaben des Nutzers auf 0 zurückgesetzt wird) und fährt mit der _Interaktion_ (Senden von ETH an die Adresse des Nutzers) fort. Auf diese Weise wird sichergestellt, dass der Vertrag seinen Speicher vor dem externen Aufruf aktualisiert und die Bedingung der Wiederverknüpfung, die den ersten Angriff ermöglichte, beseitigt. Der `Attacker`-Vertrag könnte immer noch zurück in `NoLongerAVictim` aufrufen, aber da `balances[msg.sender]` auf 0 gesetzt wurde, werden zusätzliche Abhebungen einen Fehler auslösen. + +Eine andere Möglichkeit ist die Verwendung einer gegenseitigen Ausschlusssperre (allgemein als „Mutex“ bezeichnet), die einen Teil des Vertragsstatus sperrt, bis ein Funktionsaufruf abgeschlossen ist. Dies wird durch eine Boolesche Variable realisiert, die vor der Ausführung der Funktion auf `true` gesetzt wird und nach Beendigung des Aufrufs wieder auf `false` zurückkehrt. Wie im folgenden Beispiel zu sehen ist, schützt die Verwendung einer „Mutex“ eine Funktion vor wiederholten Aufrufen, während der ursprüngliche Aufruf noch in Bearbeitung ist, wodurch Wiederholungsangriffe effektiv verhindert werden. + +```solidity +pragma solidity ^0.7.0; -### So umgehen Sie Re-entrancy (die nukleare Option) {#how-to-deal-with-re-entrancy-the-nuclear-option} +contract MutexPattern { + bool locked = false; + mapping(address => uint256) public balances; -Jedes Mal, wenn Sie ETH an eine nicht vertrauenswürdige Adresse senden oder mit einem unbekannten Vertrag interagieren (wie beispielsweise das Aufrufen von `transfer()` einer von dir angegebenen Token-Adresse), eröffnet sich für Sie die Möglichkeit der RE-entrancy. **Durch die Gestaltung von Smart Contracts, die weder ETH senden noch nicht vertrauenswürdige Verträge aufrufen, verhindern Sie die Möglichkeit der Re-entrancy.** + modifier noReentrancy() { + require(!locked, "Blocked from reentrancy."); + locked = true; + _; + locked = false; + } + // This function is protected by a mutex, so reentrant calls from within `msg.sender.call` cannot call `withdraw` again. + // The `return` statement evaluates to `true` but still evaluates the `locked = false` statement in the modifier + function withdraw(uint _amount) public payable noReentrancy returns(bool) { + require(balances[msg.sender] >= _amount, "No balance to withdraw."); -## Weitere Angriffstypen {#more-attack-types} + balances[msg.sender] -= _amount; + bool (success, ) = msg.sender.call{value: _amount}(""); + require(success); -Die obigen Angriffstypen beziehen sich auf Probleme mit Smart-Contract-Code (Re-entrancy) und Ethereum-Kuriositäten (Codeausführung innerhalb der Vertragskonstruktoren, bevor Code unter der Vertragsadresse verfügbar ist). Doch es gibt viele weitere Angriffstypen, sie Sie kennen sollten: + return true; + } +} +``` -- Front-running (Vorweglaufen) -- ETH-Sendungsablehnung -- Ganzzahlüberlauf/-unterlauf +Sie können auch ein [Pull-Zahlungssystem](https://docs.openzeppelin.com/contracts/4.x/api/security#PullPayment) verwenden, bei dem die Nutzer Geld von den Smart Contracts abheben müssen, anstelle eines „Push-Zahlungssystems“, das Guthaben an Konten sendet. Dies verhindert die Möglichkeit, unbeabsichtigt Code an unbekannten Adressen auszulösen (und kann auch bestimmte Denial-of-Service-Angriffe verhindern). -Weiterführende Informationen: +#### Integer-Unterläufe und -Überläufe {#integer-underflows-and-overflows} -- [Consensys – Bekannte Smart-Contract-Angriffe](https://consensys.github.io/smart-contract-best-practices/attacks/) – Eine sehr gut lesbare Erklärung der wichtigsten Schwachstellen, mit Beispielcode für die meisten. -- [SWC Registry](https://swcregistry.io/docs/SWC-128) – Kuratierte Liste der CWEs, die für Ethereum und Smart Contracts gelten +Ein Integer-Überlauf tritt auf, wenn das Ergebnis einer arithmetischen Operation außerhalb des zulässigen Wertebereichs liegt, so dass es auf den niedrigsten darstellbaren Wert „überläuft“. Zum Beispiel kann ein `uint8` nur Werte bis zu 2^8-1=255 speichern. Arithmetische Operationen, die zu höheren Werten als `255` führen, führen zu einem Überlauf und setzen `uint` auf `0` zurück, ähnlich wie der Kilometerzähler eines Autos auf 0 zurückgesetzt wird, wenn er den maximalen Kilometerstand (999999) erreicht hat. -## Sicherheitstools {#security-tools} +Integer-Unterläufe treten aus ähnlichen Gründen auf: Die Ergebnisse einer arithmetischen Operation liegen unterhalb des zulässigen Bereichs. Angenommen, Sie versuchen, `0` in einem `uint8` zu dekrementieren, würde das Ergebnis einfach auf den maximal darstellbaren Wert (`255`) übergehen. -Es ist unumgänglich, dass Sie die Sicherheitsgrundlagen von Ethereum verstehen und mit einem professionellen Prüfer zusammenarbeiten. Doch für die Überprüfung Ihres Codes gibt es viele Tools, die helfen, mögliche Probleme in Ihrem Code zu beleuchten. +Sowohl Integer-Überläufe als auch -Unterläufe können zu unerwarteten Änderungen an den Zustandsvariablen eines Vertrags führen und eine ungeplante Ausführung zur Folge haben. Das folgende Beispiel zeigt, wie ein Angreifer einen arithmetischen Überlauf in einem Smart Contract ausnutzen kann, um eine ungültige Operation durchzuführen: -### Smart Contract – Sicherheit {#smart-contract-security} +``` +pragma solidity ^0.7.6; -**Slither –** **_In Python 3 geschriebener statischer Analyserahmen für Solidity_** +// This contract is designed to act as a time vault. +// User can deposit into this contract but cannot withdraw for at least a week. +// User can also extend the wait time beyond the 1 week waiting period. -- [GitHub](https://github.com/crytic/slither) +/* +1. Deploy TimeLock +2. Deploy Attack with address of TimeLock +3. Call Attack.attack sending 1 ether. You will immediately be able to + withdraw your ether. -**MythX –** **_Sicherheitsanalyse-API für Ethereum-Smart Contracts_** +What happened? +Attack caused the TimeLock.lockTime to overflow and was able to withdraw +before the 1 week waiting period. +*/ -- [mythx.io](https://mythx.io/) -- [Dokumentation](https://docs.mythx.io/) +contract TimeLock { + mapping(address => uint) public balances; + mapping(address => uint) public lockTime; -**Mythril –** **_Sicherheitsanalyse für EVM-Bytecode_** + function deposit() external payable { + balances[msg.sender] += msg.value; + lockTime[msg.sender] = block.timestamp + 1 weeks; + } -- [mythril](https://github.com/ConsenSys/mythril) -- [Dokumentation](https://mythril-classic.readthedocs.io/en/master/about.html) + function increaseLockTime(uint _secondsToIncrease) public { + lockTime[msg.sender] += _secondsToIncrease; + } -** Manticore –** **_Eine Befehlszeilenschnittstelle, die ein symbolisches Ausführungswerkzeug für Smart Contracts und Binärdaten einsetzt_** + function withdraw() public { + require(balances[msg.sender] > 0, "Insufficient funds"); + require(block.timestamp > lockTime[msg.sender], "Lock time not expired"); -- [GitHub](https://github.com/trailofbits/manticore) -- [Dokumentation](https://github.com/trailofbits/manticore/wiki) + uint amount = balances[msg.sender]; + balances[msg.sender] = 0; -**Securify –** **_Sicherheitsscanner für Ethereum-Smart Contracts_** + (bool sent, ) = msg.sender.call{value: amount}(""); + require(sent, "Failed to send Ether"); + } +} -- [securify.chainsecurity.com](https://securify.chainsecurity.com/) -- [Discord](https://discordapp.com/invite/nN77ckb) +contract Attack { + TimeLock timeLock; + + constructor(TimeLock _timeLock) { + timeLock = TimeLock(_timeLock); + } -**ERC20 Verifier –** **_Ein Verifizierungstool zur Prüfung der Übereinstimmung eines Vertrags mit dem ERC20-Standard_** + fallback() external payable {} + + function attack() public payable { + timeLock.deposit{value: msg.value}(); + /* + if t = current lock time then we need to find x such that + x + t = 2**256 = 0 + so x = -t + 2**256 = type(uint).max + 1 + so x = type(uint).max + 1 - t + */ + timeLock.increaseLockTime( + type(uint).max + 1 - timeLock.lockTime(address(this)) + ); + timeLock.withdraw(); + } +} +``` -- [erc20-verifier.openzeppelin.com](https://erc20-verifier.openzeppelin.com) -- [Forum](https://forum.openzeppelin.com/t/online-erc20-contract-verifier/1575) +##### Wie man Integer-Unterläufe und -Überläufe verhindert -### Formale Verifizierung {#formal-verification} +Ab Version 0.8.0 weist der Solidity-Compiler Code zurück, der zu Integer-Unterläufen und -Überläufen führt. Verträge, die mit einer niedrigeren Compiler-Version kompiliert wurden, sollten jedoch entweder Überprüfungen für Funktionen durchführen, die arithmetische Operationen beinhalten, oder eine Bibliothek (z. B. [SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math)) verwenden, die auf Unterlauf/Überlauf prüft. -**Informationen zur formalen Verifizierung** +#### Oracle-Manipulation {#oracle-manipulation} -- [How formal verification of smart-contacts works](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/) _20. Juli 2018 – Brian Marick_ -- [How Formal Verification Can Ensure Flawless Smart Contracts](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1) _20. Januar 2018 – Bernard Mueller_ +[Oracles](/developers/docs/oracles/) beziehen Off-Chain-Informationen und senden sie on-chain, damit Smart Contracts diese nutzen können. Mit Orakeln können Sie Smart Contracts entwerfen, die mit Off-Chain-Systemen wie z. B. Kapitalmärkten interagieren, was ihre Anwendung erheblich erweitert. -### Tools einsetzen {#using-tools} +Wenn das Orakel jedoch beschädigt ist und falsche Informationen on-chain sendet, werden Smart Contracts auf der Grundlage falscher Informationen ausgeführt, was zu Problemen führen kann. Dies ist die Grundlage des „Orakelproblems“, bei dem es darum geht sicherzustellen, dass die Informationen aus einem Blockchain-Orakel korrekt, aktuell und zeitnah sind. -Zwei der beliebtesten Tools für eine Smart-Contract-Sicherheitsanalyse sind: +Ein damit zusammenhängendes Sicherheitsproblem ist die Verwendung eines On-Chain-Orakels, z. B. einer dezentralen Börse, um den Spotpreis für ein Asset zu ermitteln. Leihplattformen in der [dezentralen Finanzbranche (DeFi)](/defi/) tun dies oft, um den Wert der Beleihungsobjekte eines Nutzers zu ermitteln, anhand derer er bestimmen kann, wie viel er leihen kann. -- [Slither](https://github.com/crytic/slither) by [Trail of Bits](https://www.trailofbits.com/) (hosted version: [Crytic](https://crytic.io/)) -- [Mythril](https://github.com/ConsenSys/mythril) von [ConsenSys](https://consensys.net/) (gehostete Version: [MythX](https://mythx.io/)) +Die DEX-Preise sind häufig korrekt, was vor allem darauf zurückzuführen ist, dass Arbitrageure die Gleichheit auf den Märkten wiederherstellen. Sie sind jedoch anfällig für Manipulationen, insbesondere wenn das On-Chain-Orakel die Preise von Assets auf der Grundlage historischer Handelsdaten berechnet (was normalerweise der Fall ist). -Beide Tools sind nützlich, um Ihren Code zu analysieren und Fehler zu melden. Für jedes Tool gibt es eine [commercial] gehostete Version, sie sind aber auch für den lokalen Betrieb verfügbar. Das folgende Beispiel ist ein schnelles Beispiel für die Ausführung von Slither, das in einem praktischen Docker-Image `trailofbits/eth-security-toolbox` zur Verfügung gestellt wird. Sofern noch nicht geschehen, sollten Sie [Node.js](https://nodejs.org/) installieren. +So könnte ein Angreifer beispielsweise den Spotpreis eines Assets künstlich in die Höhe treiben, indem er einen Blitzkredit aufnimmt, kurz bevor er mit Ihrem Kreditvertrag interagiert. Die Abfrage der DEX nach dem Preis des Assets würde einen höheren als den normalen Wert ergeben (da die große „Kaufbestellung“ des Angreifers die Nachfrage nach dem Asset verzerrt), so dass er mehr Geld leihen kann, als er sollte. Solche „Flash-Darlehensangriffe“ wurden genutzt, um das Vertrauen in Preis-Orakel bei DeFi-Anwendungen auszunutzen, was Protokolle Millionen an verlorenen Guthaben gekostet hat. -```bash -$ mkdir test-slither -$ curl https://gist.githubusercontent.com/epheph/460e6ff4f02c4ac582794a41e1f103bf/raw/9e761af793d4414c39370f063a46a3f71686b579/gistfile1.txt > bad-contract.sol -$ docker run -v `pwd`:/share -it --rm trailofbits/eth-security-toolbox -docker$ cd /share -docker$ solc-select 0.5.11 -docker$ slither bad-contract.sol -``` +##### So verhindert man Orakelmanipulation -Folgende Ausgabe wird erstellt: - -```bash -ethsec@1435b241ca60:/share$ slither bad-contract.sol -INFO:Detectors: -Reentrancy in Victim.withdraw() (bad-contract.sol#11-16): - External calls: - - (success) = msg.sender.call.value(amount)() (bad-contract.sol#13) - State variables written after the call(s): - - balances[msg.sender] = 0 (bad-contract.sol#15) -Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities -INFO:Detectors: -Low level call in Victim.withdraw() (bad-contract.sol#11-16): - - (success) = msg.sender.call.value(amount)() (bad-contract.sol#13) -Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls -INFO:Slither:bad-contract.sol analyzed (1 contracts with 46 detectors), 2 result(s) found -INFO:Slither:Use https://crytic.io/ to get access to additional detectors and GitHub integration -``` +Die Mindestanforderung zur Vermeidung von Orakelmanipulationen ist die Verwendung eines dezentralen Orakelnetzes, das Informationen aus mehreren Quellen abfragt, um einzelne Fehlerquellen zu vermeiden. In den meisten Fällen verfügen dezentrale Orakel über eingebaute kryptoökonomische Anreize, die die Nodes des Orakels dazu bringen, korrekte Informationen zu melden, was sie sicherer macht als zentralisierte Orakel. -Slither hat hier das Potenzial für eine Re-entrancy erkannt, identifiziert die Schlüsselzeilen, in denen das Problem auftreten könnte, und stellt einen Link für weitere Informationen zum Problem bereit: +Wenn Sie vorhaben, ein On-Chain-Orakel für Asset-Preise abzufragen, sollten Sie ein Orakel verwenden, das einen Mechanismus für zeitgewichtete Durchschnittspreise (TWAP) implementiert. Ein [TWAP-Orakel](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) fragt den Preis eines Assets zu zwei verschiedenen Zeitpunkten ab (die Sie ändern können) und berechnet den Spotpreis auf der Grundlage des erhaltenen Durchschnitts. Die Wahl längerer Zeiträume schützt Ihr Protokoll vor Preismanipulationen, da große Aufträge, die erst kürzlich ausgeführt wurden, keinen Einfluss auf die Preise der Assets haben können. -> Referenz: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities +## Ressourcen zur Sicherheit von Smart Contracts für Entwickler {#smart-contract-security-resources-for-developers} -So werden Sie schnell über mögliche Probleme mit Ihrem Code informiert. Wie alle automatisierten Testwerkzeuge ist Slither nicht perfekt und es irrt sich manchmal, indem es zu viel rückmeldet. Es kann vor einer möglichen Re-entrancy warnen, selbst wenn keine ausbeutbare Schwachstelle vorhanden ist. Oft ist die Überprüfung des UNTERSCHIEDS in der Slither-Ausgabe zwischen Codeänderungen extrem aufschlussreich, denn es hilft bei der Entdeckung von Schwachstellen, die viel früher eingeführt wurden, anstatt zu warten, bis Ihr Projektcode vollständig ist. +### Tools für die Analyse von Smart Contracts und die Überprüfung der Korrektheit des Codes {#code-analysis-tools} -## Weiterführende Informationen {#further-reading} +- **[Testing-Tools und -Bibliotheken](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** - _Sammlung von branchenüblichen Tools und Bibliotheken zur Durchführung von Unit-Tests, statischer Analyse und dynamischer Analyse von Smart Contracts._ -**Leitfaden für Best Practices zur Sicherheit von Smart Contracts** +- **[Formale Verifizierungstools](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)** - _Tools zur Verifizierung der funktionalen Korrektheit in Smart Contracts und zur Überprüfung von Invarianten._ -- [consensys.github.io/smart-contract-best-practices/](https://consensys.github.io/smart-contract-best-practices/) -- [GitHub](https://github.com/ConsenSys/smart-contract-best-practices/) -- [Sammlung von Sicherheitsempfehlungen und Best Practices](https://github.com/guylando/KnowledgeLists/blob/master/EthereumSmartContracts.md) +- **[Smart Contract-Auditing-Dienste](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** - _Liste von Organisationen, die Smart Contract-Auditing-Dienste für Ethereum-Entwicklungsprojekte anbieten._ -**Standard für die Sicherheitsüberprüfung von Smart Contracts (SCSVS)** +- **[Plattformen zum Aufdecken von Fehlern](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** - _Plattformen zur Koordinierung des Aufdeckens von Fehlern und zur Belohnung der verantwortungsvollen Offenlegung kritischer Schwachstellen in Smart Contracts._ -- [securing.github.io/SCSVS/](https://securing.github.io/SCSVS/) +- **[Fork Checker](https://forkchecker.hashex.org/)** - _Ein kostenloses Tool zur Überprüfung aller verfügbaren Informationen bezüglich Fork-Verträgen._ -_Kennen Sie eine Community-Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ +- **[ABI Encoder](https://abi.hashex.org/)** - _Ein frei nutzbarer Online-Service zum Kodieren Ihrer Solidity-Vertragsfunktionen und Konstruktor-Argumente._ -## Verwandte Tutorials {#related-tutorials} +### Tools für die Überwachung von Smart Contracts {#smart-contract-monitoring-tools} + +- **[OpenZeppelin Defender Sentinels](https://docs.openzeppelin.com/defender/sentinel)** - \_Ein Tool zur automatischen Überwachung und Reaktion auf Ereignisse, Funktionen und Transaktionsparameter in Ihren Smart Contracts.\_v + +- **[Tenderly Real-Time Alerting](https://tenderly.co/alerting/)** - _Ein Tool, um Echtzeit-Benachrichtigungen zu erhalten, wenn ungewöhnliche oder unerwartete Ereignisse auf Ihren Smart Contracts oder Wallets auftreten._ + +### Tools für die sichere Verwaltung von Smart Contracts {#smart-contract-administration-tools} + +- **[OpenZeppelin Defender Admin](https://docs.openzeppelin.com/defender/admin)** - _Schnittstelle für die Verwaltung von Smart Contracts, einschließlich Zugriffskontrollen, Upgrades und Pausieren._ + +- **[Safe](https://safe.global/)** - _Smart Contract-Wallet auf Ethereum, die eine Mindestanzahl von Personen benötigt, um eine Transaktion zu genehmigen, bevor sie stattfinden kann (M-of-N)._ + +- **[OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/4.x/)** - _Vertragsbibliotheken für die Implementierung von Verwaltungsfunktionen, einschließlich Vertragseigentum, Upgrades, Zugriffskontrollen, Governance, Pausierbarkeit und mehr._ + +### Dienstleistungen zur Prüfung von Smart Contracts {#smart-contract-auditing-services} + +- **[ConsenSys Diligence](https://consensys.net/diligence/)** - _Audit-Dienst für Smart Contracts, der Projekten im gesamten Blockchain-Ökosystem dabei hilft sicherzustellen, dass ihre Protokolle zur Veröffentlichung bereit sind und dem Schutz der Nutzer dienen._ + +- **[CertiK](https://www.certik.com/)** - _Blockchain-Sicherheitsunternehmen, das Pionierarbeit beim Einsatz modernster formaler Verifizierungstechnologie für Smart Contracts und Blockchain-Netzwerke leistet._ + +- **[Trail of Bits](https://www.trailofbits.com/)** - _Cybersicherheitsunternehmen, das Sicherheitsforschung mit der Mentalität von Angreifern kombiniert, um Risiken zu verringern und Code zu stärken._ + +- **[PeckShield](https://peckshield.com/)** - _Blockchain-Sicherheitsunternehmen, das Produkte und Dienstleistungen für die Sicherheit, den Datenschutz und die Nutzbarkeit des gesamten Blockchain-Ökosystems bietet._ + +- **[QuantStamp](https://quantstamp.com/)** - _Audit-Dienst, der die allgemeine Einführung der Blockchain-Technologie durch Sicherheits- und Risikobewertungsdienste erleichtert._ + +- **[OpenZeppelin](https://www.openzeppelin.com/security-audits)** - _Sicherheitsunternehmen für Smart Contracts, das Sicherheitsprüfungen für verteilte Systeme durchführt._ + +- **[Runtime Verification](https://runtimeverification.com/)** - _Sicherheitsunternehmen, spezialisiert auf die formale Modellierung und Verifizierung von Smart Contracts._ + +- **[Hacken](https://hacken.io)** - _Web3 Cybersicherheitsauditor mit 360-Grad-Ansatz für die Sicherheit der Blockchain._ + +- **[](https://nethermind.io/smart-contracts-audits)** - _Solidity und Cairo Audit-Dienste sorgen für Datenintegrität der Smart Contracts und Sicherheit der Nutzer im Ethereum- und Starknet-Ökosystem._ + +- **[HashEx](https://hashex.org/)** - _HashEx konzentriert sich auf die Prüfung von Blockchain und Smart Contracts, um die Sicherheit von Kryptowährungen zu gewährleisten, und bietet Dienstleistungen wie die Entwicklung von Smart Contracts, Penetrationstests und Blockchain-Beratung._ + +- **[Code4rena](https://code4rena.com/)** - _Eine wettbewerbsorientierte Plattform, die Anreize für Sicherheitsexperten zum Aufspüren von Schwachstellen bietet, um das Web3 sicherer zu machen._ + +### Plattformen zum Aufdecken von Fehlern {#bug-bounty-platforms} + +- **[Immunefi](https://immunefi.com/)** - _Bug-Bounty-Plattform für Smart Contracts und DeFi-Projekte, auf der Sicherheitsforscher Code überprüfen, Schwachstellen aufdecken, bezahlt werden und Krypto sicherer machen._ + +- **[HackerOne](https://www.hackerone.com/)** - _Schwachstellen-Koordinations- und Bug-Bounty-Plattform, die Unternehmen mit Penetrationstestern und Cybersecurity-Forschern zusammenbringt._ + +- **[HackenProof](https://hackenproof.com/)** - _Experten-Bug-Bounty-Plattform für Krypto-Projekte (DeFi, Smart Contracts, Wallets, CEX und mehr), auf der Sicherheitsexperten Triage-Dienste anbieten und Forscher für relevante, verifizierte Fehlerberichte bezahlt werden._ + +### Veröffentlichungen bekannter Schwachstellen und Exploits von Smart Contracts {#common-smart-contract-vulnerabilities-and-exploits} + +- **[ConsenSys: Smart Contract Known Attacks](https://consensys.github.io/smart-contract-best-practices/attacks/)** - _Einsteigerfreundliche Erklärung der wichtigsten Vertragsschwachstellen, mit Beispielcode für die meisten Fälle._ + +- **[SWC Registry](https://swcregistry.io/)** - _Ausgewählte Liste von Common Weakness Enumeration (CWE) Elementen, die auf Ethereum Smart Contracts zutreffen._ + +- **[Rekt](https://rekt.news/)** - _Regelmäßig aktualisierte Veröffentlichung von hochkarätigen Krypto-Hacks und Exploits, zusammen mit detaillierten Post-Mortem-Berichten._ + +### Herausforderungen beim Erlernen der Sicherheit von Smart Contracts {#challenges-for-learning-smart-contract-security} + +- **[Awesome BlockSec CTF](https://github.com/blockthreat/blocksec-ctfs)** - _Ausgewählte Liste von Blockchain Security War Games, Challenges und [Capture The Flag](https://www.webopedia.com/definitions/ctf-event/amp/) Wettbewerben und Lösungsbeschreibungen._ + +- **[Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/)** - _War Game zum Erlernen der offensiven Sicherheit von DeFi Smart Contracts und zum Aufbau von Fähigkeiten in der Fehlersuche und Sicherheitsprüfung._ + +- **[Ethernaut](https://ethernaut.openzeppelin.com/)** - _Web3/Solidity-basiertes War Game, bei dem jedes Level ein Smart Contract ist, der „gehackt“ werden muss._ + +### Bewährte Praktiken für die Sicherung von Smart Contracts {#smart-contract-security-best-practices} + +- **[ConsenSys: Ethereum Smart Contract Security Best Practices](https://consensys.github.io/smart-contract-best-practices/)** - _Umfassende Liste von Richtlinien zur Sicherung von Ethereum Smart Contracts._ + +- **[Nascent: Simple Security Toolkit](https://github.com/nascentxyz/simple-security-toolkit)** - _Sammlung praktischer, sicherheitsorientierter Anleitungen und Checklisten für die Entwicklung von Smart Contracts._ + +- **[Solidity Patterns](https://fravoll.github.io/solidity-patterns/)** - _Nützliche Zusammenstellung von sicheren Modellen und Best Practices für die Smart Contract-Programmiersprache Solidity._ + +- **[Solidity Docs: Security Considerations](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** - _Richtlinien zum Schreiben sicherer Smart Contracts mit Solidity._ + +- **[Smart Contract Security Verification Standard](https://github.com/securing/SCSVS)** - _Vierzehnteilige Checkliste zur Standardisierung der Sicherheit von Smart Contracts für Entwickler, Architekten, Sicherheitsüberprüfer und Anbieter._ + +### Tutorials zur Sicherheit von Smart Contracts {#tutorials-on-smart-contract-security} + +- [So schreibt man sichere Smart Contracts](/developers/tutorials/secure-development-workflow/) -- [Sicherer Entwicklungs-Workflow](/developers/tutorials/secure-development-workflow/) - [So verwenden Sie Slither, um Fehler in Smart Contracts zu finden](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) + - [So finden Sie mit Manticore Fehler in Smart Contract](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/) -- [Sicherheitsrichtlinien](/developers/tutorials/smart-contract-security-guidelines/) -- [Token-Sicherheit](/developers/tutorials/token-integration-checklist/) + +- [Smart Contract Sicherheitsrichtlinien](/developers/tutorials/smart-contract-security-guidelines/) + +- [Wie Sie Ihren Token-Vertrag sicher in beliebige Token integrieren](/developers/tutorials/token-integration-checklist/) diff --git a/src/content/translations/de/developers/docs/storage/index.md b/src/content/translations/de/developers/docs/storage/index.md index 0ee6b6491f0..faf3cef0569 100644 --- a/src/content/translations/de/developers/docs/storage/index.md +++ b/src/content/translations/de/developers/docs/storage/index.md @@ -27,7 +27,7 @@ Das wird als **Blockchain-basierte** Persistenz bezeichnet. Das Problem bei der Blockchain-basierten Persistenz ist, dass die Kette viel zu groß werden könnte, um alle Daten aufrechtzuerhalten und zu speichern (z. B. schätzen [viele Quellen](https://healthit.com.au/how-big-is-the-internet-and-how-do-we-measure-it/), dass das Internet über 40 Zetabyte Speicherkapazität benötigt). -Die Blockchain benötigt außerdem auch eine Art Anreizstruktur. Bei der Blockchain-basierten Persistenz gibt es das, und zwar in Form einer Zahlung an die Miner. Wenn Daten an die Chain angehängt werden, müssen die Nodes dafür bezahlt werden. +Die Blockchain benötigt außerdem auch eine Art Anreizstruktur. Bei der Blockchain-basierten Persistenz wird eine Zahlung an den Validator durchgeführt. Wenn Daten zur Blockchain hinzugefügt werden, werden die Validatoren für das Hinzufügen der Daten bezahlt. Plattformen mit Blockchain-basierter Persistenz: @@ -46,6 +46,9 @@ Plattformen mit vertragsbsierter Persistenz: - [Skynet](https://siasky.net/) - [Storj](https://storj.io/) - [0Chain](https://0chain.net/) +- [Crust-Netzwerk](https://crust.network) +- [Swarm](https://www.ethswarm.org/) +- [4EVERLAND](https://www.4everland.org/) ### Weitere Überlegungen {#additional-consideration} @@ -55,14 +58,19 @@ IPFS ist ein verteiltes System für die Speicherung und den Zugriff auf Dateien, - [Pinata](https://www.pinata.cloud/) _(IPFS Pinning Service)_ - [web3.storage](https://web3.storage/) _(IPFS/Filecoin Pinning Service)_ - [Infura](https://infura.io/product/ipfs) _(IPFS Pinning Service)_ +- [IPFS Scan](https://ipfs-scan.io) _(IPFS Pinning Explorer)_ +- [4EVERLAND](https://www.4everland.org/)_(IPFS Pinning Service)_ +- [Filebase](https://filebase.com) _(IPFS Pinning Service)_ + +SWARM ist eine dezentrale Datenspeicherungs- und Datenverteilungstechnologie mit einem Speicher-Incentive-System und einem Speicher-Mietpreis-Orakel. ## Datenaufbewahrung/Verfügbarkeit {#data-retention} -Systeme müssen für die Datenverfügbarkeit über einen Mechanismus verfügen, der genau das sicherstellt. +Systeme müssen für die Datenverfügbarkeit über einen Mechanismus verfügen, der genau dies sicherstellt. ### Herausforderungsmechanismus {#challenge-mechanism} -Einer der beliebtesten Wege zur Gewährleistung der Datenverfügbarkeit ist es, irgendeine Art von kryptographischer Herausforderung an die Nodes zu senden, die sie nur lösen können, wenn die Daten noch vorhanden sind. Ein einfaches Beispiel ist der Proof-of-Access von Arweave. Sie senden eine Herausforderung an Nodes, um zu sehen, ob sie über diese die Daten im aktuellsten Block sowie einem zufälligen Block in der Vergangenheit verfügen. Hat ein Node nicht die richtige Antwort, wird er bestraft. +Einer der beliebtesten Wege zur Gewährleistung der Datenverfügbarkeit ist es, irgendeine Art von kryptographischer Herausforderung an die Knoten zu senden, die sie nur lösen können, wenn die Daten noch vorhanden sind. Ein einfaches Beispiel ist der Proof-of-Access von Arweave. Sie senden eine Herausforderung an Knoten, um zu sehen, ob sie über diese die Daten im aktuellsten Block sowie einem zufälligen Block in der Vergangenheit verfügen. Hat ein Knoten nicht die richtige Antwort, wird er bestraft. Anbieter von dStorage mit einem Herausforderungsmechanismus: @@ -70,12 +78,14 @@ Anbieter von dStorage mit einem Herausforderungsmechanismus: - Skynet - Arweave - Filecoin +- Crust Netzwerk +- 4EVERLAND ### Dezentralität {#decentrality} -Es gibt keine tollen Tools, um den Grad der Dezentralität von Plattformen festzustellen. Doch im Allgemeinen sollte man die Tools verwenden, die keine Form von KYC für die Benutzung benötigen. +Es gibt keine hervorragenden Tools, um den Grad der Dezentralität von Plattformen festzustellen. Doch im Allgemeinen sollte man die Tools verwenden, die keine Form von KYC für die Benutzung benötigen. -Dezentrale Speichersysteme ohne KYC: +Dezentrale Tools ohne KYC: - 0Chain (gerade erfolgt die Implementierung einer Version ohne KYC) - Skynet @@ -83,22 +93,24 @@ Dezentrale Speichersysteme ohne KYC: - Filecoin - IPFS - Ethereum +- Crust Netzwerk +- 4EVERLAND ### Konsens {#consensus} -Die meisten der gelisteten Tools haben ihre eigene Version eines [Konsensmechanismus](/developers/docs/consensus-mechanisms/), basieren aber typischerweise auf [**Proof-of-Work (PoW)**](/developers/docs/consensus-mechanisms/pow/) oder [**Proof-of-Stake (PoS)**](/developers/docs/consensus-mechanisms/pos/). +Die meisten diesere Tools haben ihre eigene Version eines [Konsensmechanismus](/developers/docs/consensus-mechanisms/), basieren aber typischerweise auf [**Proof-of-Work (PoW)**](/developers/docs/consensus-mechanisms/pow/) oder [**Proof-of-Stake (PoS)**](/developers/docs/consensus-mechanisms/pos/). -PoW-basiert: +Basierend auf Proof-of-Work: - Skynet - Arweave -- Ethereum -PoS-basiert: +Basierend auf Proof-of-Stake: -- [Die Beacon Chain](/roadmap/beacon-chain/) +- Ethereum - Filecoin - 0Chain +- Crust Netzwerk ## Verwandte Werkzeuge {#related-tools} @@ -112,6 +124,7 @@ PoS-basiert: - [Storj.io](https://storj.io/) - [Dokumentation](https://docs.storj.io/) +- [GitHub](https://github.com/storj/storj) **Skynet – _Skynet ist eine dezentrale PoW-Chain speziell für ein dezentrales Web_** @@ -131,46 +144,64 @@ PoS-basiert: - [Dokumentation](https://docs.arweave.org/info/) - [Arweave](https://github.com/ArweaveTeam/arweave/) -**0chain – _0Chain ist eine Proof-of-Stake-dStorage-Plattform mit Sharding und Blobbers_** +**0chain – _0Chain ist eine Proof-of-Stake-dStorage-Plattform mit Sharding und Blobbers._** - [0Chain.net](https://0chain.net/) - [Dokumentation](https://docs.0chain.net/0chain/) - [GitHub](https://github.com/0chain/) -**Swarm – _Ein verteiltes Speichersystem und Content-Verteilungs-Service für den Ethereum-Web3-Stack_** +**Crust Netzwerk – _Crust ist eine dStorage Plattform auf dem IPFS._** + +- [Crust.network](https://crust.network) +- [Dokumentation](https://wiki.crust.network) +- [Github](https://github.com/crustio) + +**Swarm – _Ein verteiltes Speichersystem und Content-Verteilungs-Service für den Ethereum-Web3-Stack._** - [EthSwarm.org](https://www.ethswarm.org/) - [Dokumentation](https://docs.ethswarm.org/docs/) - [GitHub](https://github.com/ethersphere/) -**OrbitDB – _Eine dezentrale Peer-to-Peer-Datenbank die auf IPFS aufsetzt_** +**OrbitDB – _Eine dezentrale Peer-to-Peer-Datenbank, die auf IPFS basiert._** - [OrbitDB.org](https://orbitdb.org/) - [Dokumentation](https://github.com/orbitdb/field-manual/) - [GitHub](https://github.com/orbitdb/orbit-db/) -**Aleph.im – _Dezentrales Cloudprojekt (Datenbanken, Dateispeicherung, Computing und DID). Eine einzigartige Mischung aus Peer-to-Peer-Technologie – off-chain und on-chain. IPFS und Multi-Chain-Kompatibilität._** +**Aleph.im – _Dezentrales Cloudprojekt (Datenbanken, Dateispeicherung, Computing und DID). Eine einzigartige Mischung aus Peer-to-Peer-Technologie – Off-Chain und On-Chain. IPFS und Multi-Chain-Kompatibilität._** - [Aleph.im](https://aleph.im/) - [Dokumentation](https://aleph.im/#/developers/) - [GitHub](https://github.com/aleph-im/) -**Ceramic – _Nutzergesteuerte IPFS-Datenbankspeicher für datenintensive und anspruchsvolle Anwendungen_** +**Ceramic – _Nutzergesteuerte IPFS-Datenbankspeicher für datenintensive und anspruchsvolle Anwendungen._** - [Ceramic.network](https://ceramic.network/) - [Dokumentation](https://developers.ceramic.network/learn/welcome/) - [GitHub](https://github.com/ceramicnetwork/js-ceramic/) -**Filebase - _Die erste S3-kompatible Objektspeicherplattform, mit der Daten in mehreren dezentralen Speichernetzwerken wie IPFS, Sia, Skynet und Storj gespeichert werden können._** +**Filebase – _Ein S3-kompatibler dezentraler Speicher und geo-redundanter IPFS-Pinning-Service. Alle über Filebase auf IPFS hochgeladenen Dateien werden automatisch an die Filebase-Infrastruktur mit dreifacher Replikation auf der ganzen Welt gepinnt._** - [Filebase.com](https://filebase.com/) - [Dokumentation](https://docs.filebase.com/) - [GitHub](https://github.com/filebase) +**4EVERLAND - _Eine Web 3.0-Cloud-Computing-Plattform, die Speicher-, Rechen- und Netzwerk-Kernfunktionen integriert, S3-kompatibel ist und synchrone Datenspeicherung auf dezentralen Speichernetzwerken wie IPFS und Arweave bietet._** + +- [4everland.org](https://www.4everland.org/) +- [Dokumentation](https://docs.4everland.org/) +- [GitHub](https://github.com/4everland) + +**Kaleido – _Eine Blockchain-as-a-Service-Plattform mit IPFS-Knoten auf einen Klick_** + +- [Kaleido](https://kaleido.io/) +- [Dokumentation](https://docs.kaleido.io/kaleido-services/ipfs/) +- [GitHub](https://github.com/kaleido-io) + ## Weiterführende Informationen {#further-reading} -- [Was sind dezentrale Speichersysteme?](https://coinmarketcap.com/alexandria/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_ -- [Fünf gängige Mythen über dezentrale Speichersysteme](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) – _Storj_ +- [Was sind dezentrale Speichersysteme?](https://coinmarketcap.com/alexandria/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) – _CoinMarketCap_ +- [Fünf gängige Mythen über dezentrale Speichersysteme entlarvt](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) – _Storj_ _Kennen Sie eine Community-Ressource, die Ihnen geholfen hat? Bearbeiten Sie diese Seite und fügen Sie sie hinzu._ diff --git a/src/content/translations/de/developers/docs/transactions/gas-tx.png b/src/content/translations/de/developers/docs/transactions/gas-tx.png new file mode 100644 index 0000000000000000000000000000000000000000..c240e65ab7ace074c67f4f965c2aba0d886fdbcb GIT binary patch literal 26850 zcmdqIcT|&6_bwO}1uG&TAWc9(I!Nypic0Stl-@({5G&FVr9(hL2tBmW2`W{pfCMQ? z6bQWt0YVZ&=H0{srx+V+0Wi5-cVor>ZMzkKp@c7CyzCZ zK_D6h5a{ePx(h%Fm~&DBcwF>*Y!wIsU1mJ}IRnbgX9Wt+1R85U1l5dktO0+}xINH& z00PyeUOs+)9t3g^eWLNeH0;b4#Luqb-9+QZ*j(#I*OY&C_{I|C z#jx|Yd#%*3S4J%dp}k*65Z*r+@8NatNCz^y)_Qx;4T&0vo^^h>d@+-U=bV2H&6x(> zS1zv^U*DPk&GWqOwYOD$bxlR!*p6wTd2o5flo+C_W_xVqb6JIn8{E8gv^i#nTuKA< z@Bg14oky9L_x8k!MH<8wX>Xjv$yZrJXSc>>?$rxMu0$_-a6t!y&w)Uq!H6DzJ?~pK zlNg02k!{+M$+noO>gtXDrY|O65FVSEAFUuKhlyHqwCvc_#m9k6Lrd%umU%Z@QGI63 zO>;!Mt#mZ1z}-h5?@nqHl)D2==5odhr?0=DCPNK2#g~exx*mE`i^MgiAA60Y zFDPmcBW=CtmIrQa(j#Tzw+&);aAw%Xb^xoM^!%}XtOc>nJhP?}jLw>}W}Gew57=z8 zvAF?MjIT(`ejO#Fii&eMT-jP6lz;FM$t$(Z)o+aoYI;8Ka6yy4UgUrBV8L6pfUwzrC@&bG*nO{`Z`c{2Hjl%CX z$JWJ&!8oKk%F+&+`Wx0a5*fO$>W1DJ!W+2R?dTvsD^QdBVyzn# zvgX>Fq!l~qxI)Aur!lJj$5zUa;5z898UydUhm`vWUFiy=z1cxhJ!#t!TQjmJlM9`+ zElg+#tl!WFCS#ag&vf}yW~%p4LgJz5$WK!jW7t??TDx(k?+;I+dnQiAq`(ec;JzjN zC}BGs&fQ)Dh1pH6cwv}dJ|sk04QdbJygWvhqP!wk@~*JSt;7Xj^af(SD!t^V>@?=v&d2y2@_a)6J#% za7*w$*eHLf1}Qyi%eLVqms>oEg^uno*ruA3YNj(4dTtCgWqmMIIrzHXk#8&%!JT+1 zqtU1SyQ8+(qNP2Jq&y0X0Qdij0b3&4per^B_ZRxos>w~JlX>hGTkf#KCf+-(o$Zca z=w!4ST=8$sOj6>LS-eHgzV=FtZm*k-@fSxO)<`Ui+{74GfyuU7iRGPM*o+Z&^Xj2l zVzpI+Kdx?yxmR&L0#bpOQQrWt{Fz$WpX}n6`y(buW0o-k@Xcno(fAW!;>rCZzrw+AR8SBo?nRCY#o ziQo1^^&`YNiP;%AJjqZFdzbtnZu!y-zfsQhZv#tj!(4(fjLvUXK zd^JC2sdRnWe8-1_x$bAGtT8bGGxw6wFaMKPC8ETRyOp=lT?>1?U&bsxMrxK8Z`a$M zVI{Wp1HTs%IaoiwR}s^u8FL0&J&a$)7EfyT?`KVHheRHJ(<|xp_qJ$47gGok&vc#*@&HL4|yWh8$Z}z?=GOIRl zJ?<}mrof+@ylV>9>dz`(OCL&H91EHDoo!bedCfZW#hcgkFtLu{-o*+vGE2Fr5RodS zM67C_>~LrLHd1aa4>Z*PqfhyGonqK%f>hPwiBGu;>$;^UFtP0s{luHiE(hj48wFL9 zsjrOGc8MRqU-Xm*%KK68+2OBQ;#4ObA(xCcesjM03uF3$?LN!O%Avbj!0@V6FP`pQ z1dJO(u~LM9yI67W>n2r<3dmKmluouEc#(-G8&&O4x5^a=`V^irE~R`ll{H(ts<4;7 z^TXJBt|Mj&wy{Op{^g#sOk3RcDIeUC3&&Kj49UX>xV<)oAHLlf989pruZLtdrT_gQ zWV*SS+>4|7NYQvzXEwp&NiQAerkn7MpEKM9t$i3c%kAwrh6;YUCuvjfAY21&{8N-3 zE&1NEao}>wPj$s-rZYeI$>_0SEBCX8`I|20;!ERBx;Q0rbns>cPjTANhmOwv!b{;)DLm<`Jhy*JM~(*}8@^tPzsR|lhWl}9taU7)#BJU2%78d=G$ zch5qfQ^&1rW{)G|(XcD==$F(@Laz?4HE-i*xeHD=(-%1LmSR>AjRHH2gFUrKsac&j z+*`cELd%IMPr$nPPoe1X_|2$lcA#giKW@NGk$;QESuu^{-rH-wH4|fLS1ShxU!}=N z#dL(P*my_YnWER2OeFpe;Rx*t?)}#|qU97^Ji}V(RqMYg=h{^>TH6AxWpC>NDhhhGdJ!PBpckJ7{{RnAY{3g)0YR)0XRiT||79;_ZzT3T!baYXK5XDF zI5=K`5?<{OT68LkohMKZ3Ss1JvNvg*o6@@f3NN8AxIs`mKHM*-9u({wz)7iV!RmMv zKwH1A@&B>Z;EGty^H|Y_1fuW``}FpRptC8w^KpTUpGUpVrI1fZ4LC&#P!+K;s&_Kd zo{Zl+8G;bCPlxy7{Qa+WaXoLzbJP*RQoYDOFX3OXNc?7#yE_=wx3Ww%)U5PuP!TMxu+Gwd+qg`+u(zhXi<~N2s{2qvD{WUG2dY7Q6k5JvsN27_Osbi;1kR zV{Mb@52lo0m473VgVX83tFoOCW6e)bsZi6|1%154K8i@RhI6r6~8Y4^KpOsQ(NquhEA+g4Jqg95c!5fBTdncy3s_i^)i2#fehsA>ku*aeKSL*|3o79lh#@ z6Z|10U^vEXr6RP8_fOm!{J2~`YhzQjpCP7$f{iJ<;&W=F!;*En@t28Z3vp_K3pb}2 zd0xG1`KPv%vy#R0HHDr_6wIKc;qqvImx1N5vxu5N%hlrMnUm+++U$*DU^$>ty6mNW zFmyD$^JPuD7=pT`IAd|TM(_^^=Fp&Ygc`|xf(Xc=ZnqXH{AVPz)OpI0HK~wbVd{u}HG~8f+F`)>oF9xL9*2(lotetBKGy^$jYltQbqDMh&Sy z0eU>Fd!E*0;T0*Ey6V%fOC9H?66=NegzvTGRrP2di|n*lTv0Fb&;&Ck(cQzGfT_-& zIW4JQd6m?XuYWS(35X$Dn@X6Hf1)iO)9{Wr4@i;souFxYC&aEW>b}$6!`&f=lf?iE z!<{SZkAn?c{O>vD8C_-M(R-twp|JfMUZFS$Q#-&oDMckuV|J_YaM+TiRNgO|{U&g?EHAA?kjMSNpbO5UfsKl>y z{?*!1)7Q6h#-TE?wH1#8)UIcU+a8r4lm^ss$#I5>6D`)~O9*}hiVPf9!} zlgt(}%&u;EpX!;g>L)GCQ&G#Oaa4CW2$8N194&J%BeiE+_a|hyJY!(yW%#eTKb7B3EmWC_zrMcNm4<1ZK@qbVCEIc7YB6UccFJ2U{_sA$ICI@TLme+L> z4KJ|Mm#~pffL{Ok^^=xXdR>MR_G$Cay;m>G!pdH~@e{6KD9Yvgo*tl)mDgphCZ5+l zKYh`-sCz_sKJNaPNr>jO8mE$^AG&T-_;GwKUxh*iQd%En3Spx^1i!lRO;;vujgyN7 zz^IRcf1a7Q<-H3^WH4QRL~~V&$-9fkG*TH`^)Msm!Gjsv{^)-A-T2@WEPD(*io=XU z`XEti?)pjw{1}Fd4wcUKHG6-4e+2b8R&G3(*=Z$Hroo zyIrOp6PifzPd~Jn={ZyoD+3YuCah?s)^Y=u9%xT#|JyhJUcV{^kVY4?|6gPjaj?Ez z)3!?cV=A47 z3{v1Xw;66n9ZGZOqC+6d)h_S8xSaoS2r-uHUW*X}I@CQ$C(-7xBbbZqX|2eNkFFHH zUvZ+IlynvZlBBMC#7E*pAU-g1Wk15;<0`_~_3sS#)$Wc+IAE-aiy7Fup+s0U9i zt=HGL4(d1@CgOUJCoR<4TU23|RFR?n2J~_u)p2$c$Kjo_zN6eH;kipQ3KZ%2J!#s9Wv~R6_pcH8_gv!b;?YCe&X+tU=_-h*`40a zcC1eZp^!WeX_Go70N*z~i7a&vWW+ms3*?7RCcqhv1}#$33DjNng7zi#V!(K2#%XDR zm5|)0;Q$_Ae=?rZ3D6^huRsN$E2?MyD_(ltdHU`e;uN7I^E0Eq)`_Z~^zyA$WyLJA zkI;y6?1H6FM`N6s+0s32yZ30vvUTIpMN7k&#jiLEF$fineR|sG|7Rb`%S3pJ-Sy^E zNcdo)Q~OxPBtmEYRFct2`7dEi|I1h!t0yorRq3wn`i7Jod)>t8{|xHYi`Sn~!|dv_ zgC{2lG>wc2I1ajS?WQVM&+BCNi*4AvzVH}eSi2qE@dw$k{cktGw zccYg6tIeK55DyhFY%|e-%X)WX2n!)J|L?VH@;pqDw%|DF4mg&IO8zsjU{RKIrk0nmU9!cH3<7Y}ARNr?-VhIyBP><7RlY`8}4CDoYm#pFr z1_zsudMRB7I@vFrjH@#pOl~$hdxQeReDOTZ&C6I7qJ6{fXIf|3F*Wbdt^oMXv&T#9 z{d*b}{J`%ocm)3dkN+yl{6Am-_I!2EmH=u@d7>4rCr%v> ztZPu79g_BmmrtBRN-}GF-PQ)Pn^E4rI_E6%(e}>#l|yPz5U+ z{*=;an?bX5Xv^~4UOHMW8oTE%U|IkxtB+f=3bMb&%qKO5iq3*5R-_;rpzZ;`6ltsZ zq&fJ2aS7^v^}nT;l$6vL9eIE1yEn7NVqRh*bxyl!8!I`}$S+$Yq@CHM?KeL6!~>u} zut<#iGQ;!x{_Rb<@|mfw(vzr}i&lpk5T4hEC8|j@Q}PT5dbV_KrynoXoA9GH&ttpag=(Qqe8P$m(+p;} zxAd6@4l&c7BYi23s(HmTTI-(1X>MzWnDE5+E}>~5KKkzlf0kUat#FmDQ!iJmYlFJ= zdd&=4XVPEct!G8b;ug!tEur9B8)&WE&7(lVFXXR;aJTaDHHedT!xhHv7T1Qy8MsaKMa?i@2v~ zH9`KGyFoUD{a{e+GAA zTHJUg9nyA1i`2OX#Lp%##(gTK3*X}%VEy^PZELMuuxAaHRw7cgHZY(^ZVKWyse229 zS(Rn}uvTT3Ql%uMPx=D-|N7XS+}s=p(mFFfK&Yuyi6)s` zuc*n@o#(1tf#f53;G{Y{k>Z)~QqAn^&{S7MqcjP!TA(go4;x`;S(VE7tb=+UO^f0d z5!Omw%IVoxY%YXIT5s!AHWjznSPd&zTj?n-ZEE08;?dVg?T_v zZFEY09#G8pYn#DaX~(OYF0Fp|zwaoQGXvJiA~2Gd!tWM-(ug~^E^aEQpq~Dh4de7k zV^q?sdv&|7#;r4%hicm7V%^2QznRkfS|^z2&e7nloC|fHK~&%4h+84LD}ozhoMa6e zGVCniEA4yn%XVAIPPhS~Efv!CfE&jyzmkC1!?=U3bgVT;f16|Hq9#bv+B?w2JJfmO z&nJPAs1zU)gsNHi?bz9@QFt5ouco*9ci(oEB85Y9)nv>#f5<(op%WQQjkWf2w(&23 z$9*bMC`FGuJXRj{GY_Ftn(d4#DB04yU*DA5d`q}VNdlT?+qYn=Ht(ZMrWmFeJ{G5^7Z>fDN2lwlYH6WRg6p__Pn+<9ot(`UyaIW0e%xEe zT$`I~>KJ;$pQ5&7-(==heHz+BcoXjOqRA6Gth8%teU{+%%)=`czCtTLu&L^hruImU zYz$>xwG^{B))3V}MwG7|Y~GJ{badmez{i?xM5LCGk8xIV_9J;fkC(?EwiLLWiC2$X zPX*{ADE95f%(dwM4}7El(;xfEkCkZ>@b!3URYnGc-OHMMXZ%bHLiE%ICmz-t5-x*4 zH|d!FuTC5z^9xN;5)e>p6hJiKO~k0KX`VZyKoD2?4CpH_-ye|Wo4sZSnOp-Iu+NHS zOWMTCbmnH2 zs>z`tT?N=$&tQ>~sRI>mgXF%j!%=cy%#`e0sAT~(?l>*2BD<;XD`qMPqt3h+=d zpk?2xWo2WU+gq>Kn&=GcRn&i`2&W}i_IUvVtT=4|_VKg<74Xi}Zm-~i5_a0oY#))= zaR=y0B|YoVQdJ*uZ>KLC=EjPbWKwKPG(V!4D+gG5(RL^XLZMT@WO?n>f`?6u@1 zEp?9asSfAa<6f2OWT(jbklFc;7_*A$$%0M0NP_8e?f*pF3hKw#B7Y)*ZQXSV5M1=x z&d`44y~pLTxN)2!ozlJtezr( zD5!ZSf`4ewW^OCJh?>mw;K_7tLwJF&0V2wU5YXGG3c$8L&uPt!8Em~&f~iCL-|m$4 zaE4d&6Qh%Sy9!FIJ_a(O%$HMGa(Z#eu7L(qU0N8MgYoix%PcS}`X{iT-NLQ2N}}ut zwG9V(sn>LXB{5(Iwwvg^Efwvbc`?keDtAiMo< zMzV@ItRB@Wt~2cB85ulM2E%i|+d}Q6f+M{p0E_gvb83;d0CH|*?(e*o3E0Gl(PxIq zVn}irMxWRusuOu@O0s^WFRaz}sfFoATsV7pj29t7P%gRpG*sotiN-Tig<5%0S*Htg z<8&ifRff9&DBjr6SfV=K(S`6A1#^2xsTZ(3@7b=J>4@^g_z;p=Cc)k-9*?{hE68(s zecQszon273&``Lvuv~(lb7WOmj8 z6d@aDXSQAD4!KNxjNY)=2*@RG)s#f(?Tc8yVQpt0iC3*oOG6*TleWu=0Hrh>Zf?kx zfV(Un#K%Jq3err0E|&`cHTMW8pNE>k3XMLe4PJW+n~@qK00LXDoX>tzv@L->{3EuGp?V>PwrC zAmFtrP?s?fKEDOn;q+2?lNw;mp5aKjgYxtNz9V;;zJ^dBh_5z^&+u?|Hc;7V#{fx1 zHoyi&&261K^_3UHBdY3@py>IJ031sCU`}J@C5=kC1N)KDKRcvlt$xVc%FN#KsE*$v zY`Y;Ow#qL3Xu!9p0}H}XDj_M#S`hM44nGyvs=eC0T|1j zZ)xp&$r5dCSY+nLR<1mX{me*XxY9;PwH+Aa;L|lf1|;fO;5Gi;7%~vAtC{z0XcY%K zbQ%!6St;7ybkxOZBs;!s>RY8tyWvF|%ad!YkBS5wtg8Pw-+Nn{3bmixt#sHPE_vwq zw@WR@huefBRVyAvSXjJaYhDs!_i8&zVL7&ajVDI-GnCE{=sS|0Pet=UqIGuvBu(#HkmZQJ@EoWwUZ zL`82x$aQ^fdtrl~DUQ%^6k>GuT<@Zozb)crKO(3nPSHqq(r$dB@-#h0%0NkT*@?3C zI@zvw>!dZ71F*y9{Ys^?pv-Hh2x$6-!GeY1YuJ98k={_l{#x0K)yTiuIBfo5;}yyJ z-F2d~yA*TwzPFDXp&>%V!DODZ%x&f+opl@7D)Z3U>Tum-F2Q52l#n)lQ7U0;WriPj zvtn5e$PU0%uY|Wn|M3?Sa;wR&@|(F=_GqRmGj$nOi=QG|LX>fZ;#2|GRd~q`kP6Ut zWMiqC7oNx7Ulcx74Qx%*pnI2U6{>~ADHcsN>JbcCxNut#3`h^V+KbMVq2=qX-&#Og zy}8*5*L*)d+Ai>GVlW++p-uk28Z4tAge%{9>z%om4Q}*;mdn!#v5f8QR%I)5DoCGA zQM6-{Fh{7gBj}>UpsWkY?X+yvW?XjKH3D(pTiiw znRGt9Ox`pX82Pg;rixBjiCJNs`gC!*Q@IqyIO1_D`6|NINxKqdZPF3li*=3(r7TC! zE$qmjjIMvwE4{GoR9x4IT~%=5A1hAwniFE*g2HEgxggTz-l%$hu-hVsRQAA$q@vL#OZRUS{3xdL;2gd9frVan>A zruC>`fsfGs?ZJg8x80c1DcoZ@m;2+g*gh6J&SDgkM{nCUk#s;b(rxFjEU6s&Bc$V% zV7P@^+fbGk4v+(K!NkU&_{jJulB|7v7<%lK-MJHqi7pL@ItfY&oTD0M?i=WdEQTZk zR(8c?@KQ>ctvC4t&DSD}KwSHsusk;Fcl7G!m>0#otars{7mC24UDI9w{W8749JnLM zBc9905s$pgTQ&gT;VqW>a@g40AJ_B<=_7aAVk5*LFTpFJh*K8jHbpzgU@Y(`C4ec} z72iZBR-qLdO<)*ml9i*1)yJ_c^32U{e5WO)@^vZ{e>Zv<)4kje2*jSiHGo7)F z-oPCA7s58rX-d|G&qkGVZp^b~C{9J;+?B0nZ$K`iH+)L>AJceCIrv9D-_)tv$-XV( zQt4H_e0j(R+X1%eiWXHCuh!a$|Kz)Y6sZjE+tqV$*d^rP<|>Jv)g+uyMf~1qorWO` zycg?6l)p9C>4B}Pum!RDBCInlk7+n`dN@O)WI73|6lD~(VF8hcK?tFPr=cE}8nwF{ z;4b0LMb7Cvf67p4sN5Ebn3CU^or6^s8S%}8#1X|*r5h|GQlef7DWZv=icZ1$*cjPn z(DJ?>AX_b|4r2gaNHBDoqTnR{Suq&vru@7o3$9Zi@6<}lXTWFjxi5LhXgy!s4lK4@ zAvvLPW|bFs+neLRjZ3c@z7~50XQivSS37;S^bb>gC?cembg+8K2?frW5U-vO6oq|=;lCAjEb;su5yG#6kuWn+^7E_ zzlBA&@8JF+*u`gOYGkKxcKyDh!jfo}4_~ka9F-6o8G1HT9)==b7-uo|*96h(jm}oU zo%~|B+u9VOEPHirDR@tH77d<5k8OmjVYZvmYETqcLroZ*oP?2XP2OD-*_{00?agPP z#PpUYWV>}tsB5S%HQ+T8u64AFfTN)(>flumq=w)1Ido9Bo(E54?O5nB>|y>6XERcy z^T0>GbVZ%|s`01GC523yGyOMiazAYbek35h8xwiULSd|TgvCd#k-Q_YW~7hK*;014 zpMRa2e_Zb7oWl3DlR|5MuikQ$OV{HRu(oivA^7efU-$rNsZ}k)z8czJDARS)BaV<% z`5oJpy!n29t4^c%Kv_VI*aCzf+YX5G+{kj{^w9EsKz>K?{T!&@<@KJOe2RPjjk~PG zd(=z~HZ1z;`ZIs>+O%zs+DRRKCRS+iU5)*2G5Rfwz46H>IfrZNCzcVbf5CzmB3D1} zT+#cuYc6u*T4$1Y$k`Nr;lZP#AA|Tp^-RoBUo#gzBFd05!`aNty^a+sbT}$X9J>8w z&Mq`sTs7v%(Aw_K+EmBTn01;xepY1YOXuw9N&@vyPjnUDiJOcLvfs5Pv@IZ%)d?_@ zA?>sC?bR_0>dp+gwh?P0uASE;*_tUTn@n8Znm z^~3Fp4z;F3WyHcaD&49YK zJ}giz+~L43g>HGG{X5Y8bt^T>iC=Mst;p=1FlNT7(0`a6bicCTZnWy*UuO7G4sXZN z;jfN5$S!C5r7R^f#^WB-&XX$n%(ZLTZK+_MC_yk{Hog}~ZlW>sVH#5w=Olh*0z+S&x++- zRDRBUP37n-vR-%zoFK_7{!{t0=E_+$WP_SL%_WmmdhT57P??NyqdLq{omgi0$>qMm zHHK?Fp{qw+Hs&Am3Hf_ukDZW5rbZTKf^{RQkmJ|5fXKtBnk!ZnJJo=9YEvz-9NwQi zosRuMOSx?sJ)OFPkq?rEuc2Lo^-G_WmE)hGDQfyy zvDB_h3Kx7T2`VZXvwO+>55Cs*1VR3EZc%3gbXypdC@#A6>I>&;7!yMCCl2Ovjlbt?pxR3!hs{`b+0X$frRiG7O32M3#L2i9Z028;*i%26Fn z&^<)wP_ukWM)7YMxI?g$Vw+yE;%tFC`WDqa;@k(Ksh38 zWt{zNPv}ew1*NS1dvcgxqBPolmauR%dJC&P6r@s&`@2VqGCdE;Uk?u4!X!WXK zr9LWduibsBLn$-ah7gMKq;ln6xhlNdZO8G5kebv*CGUv6{uqP(7}=dH?8n+Ta)jwx zMCFyfihH_`o{rWBa;RU4R(h#DQ=-{d*lb1B<<-&(in-z+>_*#qvegou|ryy3Z_XSNry zIECg*NRJNkzLnUvE>;c&KRIv>`rg!jl;#yFW-u9x5mts(H#Y&%3$ONUiHWp@T|k>q zD8cFPHfMrcR`)u_JH)gW;-f`jutsSwz5Jio;Rw_~lVdbo{MrI4q#&8)qkZ;^^E)^R zh#i~XypgTD1y*}e**>c9xI`Z5=!rbK#>RZH6UztrY+2g=ePMMUf+A>l<@AsuMHn2R z3+lG7#fu=2Aqb*!5}6dn&SS& z#~&i|UYd4F5=1yRvT_SUZ*VI1(neRo9NY{g+WsvBP?tSfBm6EXFbh>#NEF*>y2VVM|pS7c?DZ#dFBxW38HwNDu zg2m6-2tdlBs8U$C6VYLnlvaNO54G5|*?BDL29>4c592s`+ennhR%Y=kRg30;_||{J z1Q8i|^mp_fF1#0Vy{M|nhCu7rjQhyUZ4@ET?c!2bK;*JI|Du&$W`5(xs4`ZdSry!U zau|E(>vs#Y=cao6NVRaRnD}9F&faua$e7enf5$F`U|J@8x59I6HLrM`R*pFGl~0-I!LR?-u?pABp7o`MZ_e>}&uf8h?0l^A0tBW3-2C9HYU-Y{Rc05 zYZ5Fp^0F0^mBNI-lPKRhv&(ZHu;1O^#=dkCm?vJXGfNelE- zIaLEPF0-OrBW*rsN7`CLP} zgIDCy-8JSWy|B} zzUfG$qn!()UmIg{L4ZO!$Q~hH^dGst0=pzrvGMkI45C`$-6+-WH!5iSa+S=tc>}>>P;P_CT8i}=x zsMip}DwwAv<@=zUKaKu)rxsK@4^Nb^&n)mvlT$wl6O4z#Yd=4&jZ`*QVxDu{ZCNSc z!%@sEpo`L%LHZ4oL`qOi#ZI=-)w*LE(&abcMQ6i--3rv*>k07S z(4ENJkp$!pKPW}#>zTm)Q|~k4-#5x+shC4dh;=6k=W$RXA;DdEDKuu=WDRA5%|OAs z9z^N^S~%~#`_v>DWnv9opLv(CvcnPp;wTgl&VLUWwNCiwE+);E-Jji1OiiUt+`qrT zju7BfJGN9}E}*`;Jb^ESJW#3>x!<}`GgjgNA)5gLo60O=f8!v6RFYoLQW9~J!n@Q` zN~c(m1IkXjbWQ)UZBHR0O4GVxRGBd2K_Tf)miGR}$#;60D9%rN+2dnnu)Om}$s;?3 za$CC#(P4nIbO-cow@h}=jp=XS_(g^QrZKYsAiex+-5ZU&3@liBwWH)c;#-NfFl&={ ztJuGRg=FWp{RxY7mdOl&!e?!_ZH(?GSRCu_ib^aKO{I34hYq4Qow{snH`QTos#yKd z<29ePe~a%X_8QE;u-Jw9w~qSO+3Id=P8OCnBoHzCrOoL)4@@6x-1qC}1FTCalciT2l!; zq`z^CB+~SDj#44dsEtfo{PYF05Btb2;C|bLH>yeg7BMm5o%%glqk%Jiwt!p6E1q(C z{taF)z62_I(%Y|g(!M4ivq-^d`rFF%pAVduL;FqssvqazmpFM1R7`CMP^DKtMlUQ7 z4Hd<>-0Zp}HLlk$qNwQ$>R&4pFR!)yPEFjhJY=z_4w>MikDa(hn;GH#A(heVG-nEh zVd}?*Ft&kdCu@cd75g{W)hW3mFqF~36Nb;<6UA-Op*D58geJ$riUS}MzHZ;G_n1MZ zXSctx{V>XRJt}`dF~u`s$X>0J@u&MBBbm9Mb%R1$lIl~ec@=9ZSE0Vp(Wj>6(g%1= z-vU}IJo!+Z{Wmt^18)LwC$$j0dJ}MW{CXm(KObSmn-qaC&5QHi&ScD(u5J6ekLJK` z!JQ>gwk&YE@767RSEyiGaBRKxmQOqk>%SF=){r+INLuRZUh}mADxO zI-0Wux5?*kfTJdD1`P!c+nZa5ZLm!)vv}eA#I@-T9=nJ&;54nRy{HIU))y?+xj(c2 zx#edJMdEm`QIdyC`&lilLUYUlrM?qzWgNS+5@M zWp#!8iEx-SD>oWtA9>Oyd~;ivpqO{l*K{sHIKI6trQ903SEKf*fN;!RU=1eJy`wvq zBKYuKGj-O?q?wN15dw%3UZtES9Dy_59~g5OykX?2c%rmd9?ttK&d^n@Ld=m` zAtR8hEekXKi(|a&@Q`Q^B+1= z&B2xlYnbwToSpZ|-hGBRjh5?_uzmbL4yEo*AKn`j^Ed7R6CTU{2CZN-EaPOBozbv- zXLz5L8&q|Xv?BcQUD>DAo6ogmR>CLqFiK_~H_m9$2zHXK&dV~;*@ZoSqYCH?u0_WD z!q3E`#`)I(J68L9a=%T}<%vvmyk`zhr^U$<#HuB%2yz7!fH#1vdxGS7Wc#8p7&U$w z+j5jDz-4s6z=COD{`<(b#e&lzB=PbAahvdWm#qnLT=ns?WQyRZQ7B`!p=zpRaXb7y zT`FnI4Q4X2qFXINT54G|P`AEd+#IuQhudG3X_SAQlj!bfDw~$0$9xS``|nERz%F#B z@rDX>0cA77(Sy-X^vslIkc@1O9`!PVcaNC(*TsdFQ0EU1c<+>p|1vz+hjcb69IdeG`c%R+vj%8QU zvvdrbUC^kFC z&t@z%np^Is-o_<^qc(m$7NC5OjhSO>tR6*Db;I*Enih!OsUD@2b-C#n^@{g=qh_0K zJK^x2RS`IZGIcJM|9jGd{=MAkW5-ro#ISdY(~rT)ngXG7L(yE(duiMevsV4XSTUp| z_2?6ejZmbS>KN7U=f+5S)6LL4*D#7$vWidsbBYn~{v#de&eHADl2MIhGIgnc2DHT~d+HYh5Vlv;m3_vI?x(>||3HxxKrL%znT%2{nMiJ)^t23FaHi2so?r z;nKBd9zQ0wXGWDKxWZLjv@eVm!r)`IVS`?4pL3cl?hH#GcGw`*0P&yXc9_+>M@!pj z$%WN*RkDB)e;W{5^WwYmW~l5N?Y=9%U;8L|?9SyU==8r@s_g>TYWpqnMrIFbYH6Ue zp9NwcBmJw6;g6bvv9FW_xk*321$2oc!>nGFtQSNA_gyUPf>XvsL75%pe#M($fTi@& ziHryFLmviGVn~1K)ieK;|67(XRQ-qOJ&6wZY(J(p1!NQe7XbX*y05-?t9wdsAKh;` zBPo4)A4b&g`_&hVr-@l#&kD?gvN``#Xb2R}{I|k8Kq32o3MGNU*8f(>I}cKjI=z)@ zc^|l=kl}ak+4dgSBtzC9j_VO?o8*nS`RO z2cbKW4jUHz#!aFQXm6C7=>O5MBtyU*(6R<2^Z$)719jh}3~!7+9Shfw{UlDU+I^D-)g#3U$^KR zDP3+WrMqf~@i^5bfb7^A4C9=u74f^@=TmNyo~2|XR)qO_hwjNoXkENKC~`jboZWNg z<97HSmx0=diQP`v*-PrkiY<0XP(9f^P>S=r2K1`oX@j<&dEx$w@r~AQPQ&RrJhL2| z|0Y@Rv`~F(_*$Y&`di}ji8k3HU&O=IZ59Au<;r6g#M#I#sSBt`7$J&rJ_BgCIR;04*~1 z`PAkg_BTS>QIexlk#BDIeENLcRru9hx!3BBZo(caj8#^?I1X-~(Q~z4naQNGb}lp7 z=-_3)&RrgouAJ?kKA$6&bEUB=GO7izxHJcHCwA5JRd7=u;mr>;-=AFA{lSgq>t7dD zPtG0*`jiuQ+nr>y*Xoy1f>X$O^RxR0d>z-=23w;oB zei%3zEmfaI!;XU0`ZZgt7-bC+@MmH+nmd`{-dH`XZ}c%(XlG@%Z`CnMpi>(bb$oR3 z*bTdH&URg1-`;L!;akw{>+h>$sqB;?}ejrOJ}@ey(^43WyXIz z4zv3wG0$ol8(!W{o0QB8T6zxd#={{>|o#~{Y9sNZ(_uS~u~ zM@+s0!_$RP#geMAGt|8F=q4M$iTdi?5RF(*>Lm8z)qM2G3Ct{Z%sn{Sj)D2*PvmYv z)o&e&A{DW?=d*lrX}EfFKQUVzZUIrM4+AuB$k+Ny&%BW+Es^w~V2I}~wlBlvAEC}e zuA;rX*al6VwP;}-xQu$@8v$Os`b`{M!}yaixlye?Kr|d$meEX(XCcS zpmy3HMoCD;9*<_e;V7xh8#dS4A)X^TjlHGK$P6*ibiVtT!*XdO>|3oh|CqW}a3 zoOBg03QaQ`vgh`oD0slQI3?995aL)p_r_EYnwbx`Q8*K+X`;<2IQ-$5)Tt(thhyAN zaG8N|ALtEZnNJU$)nIDfs|>m^&#L?Vda_2Q)#ILPYQ+E%_-=vH&5qbAtZ$Bce!&yc z$U3iA5;)>r{r>aWV-5;W^yEqIn`8cP@;joy)}Y$j-mes2RW zzrLV+)`4gC5fEJY{}N}g76E5etxK6*L)<!AI z<+c4c3e1-Pq;7=g#L=|HXrsF)t`TdhvyZ}Lrh;Mj{$KOF14|L z=;*H$xiNtM`yn=DtH8)t`%)AT2hF#lc-vAUj+nm$$0P#_#{20v07uqEdDFARoSs+A z4ztENb#DuVqFWbhy2}3a&Slc*Q1#w$n}5D753{1u8G5gr6}wDI2d|F7(!TgkbczXX zf5^&s9q{@4I14$6J-G07ky#IUmz}9*M9;;|r`+XP-)Ps*?#45{`w0!h+TFJMqEmDK z$9o&C{Y;JySb7CyQyr+X;k z-hu@YCzg6*>>n|ZDU*T>ya>OCm4jz?J!JShS-n~6B$~>PkWA+TGjU$?-Yb|0!fvP zDg~-E+pxCfC{tHvNGZfD`zdlF6lHgZ`C|NLMjt32qInwZj`G#oVUZ)BLMO}xDF4N@ zw#FTfrQkxA=T6x?0JbHzLGl|PG=cUgPC7dfURZ8ZK@O~TbvwM}N?HNPVD_ljpu=!y zE^wL4d?X;VC&drq@2f?(vtCZT1(;->+Xu_S7udx(fB>iP3DKQ5HF_b(K_NhXwDYh^>kZvGX}KkIQ1CGvVb-EKIzMI z5#qjf`1w84y&sqC)(*%_8ML}kK?Pa$v{iJ6oUaQ}#ap-|X@jC6-8!C*ep_}}bh7ZmczP=Al z0=iDLW`typqVQ1A4h!0Bq=}p=P*67q#s(mPEASgL7%3GlBo4`}s6KS?pO_Nzpmm$L zGRNMBBu{A-t~{KAL=QR0Dh8Ww5d7o}M-1CB4S>K^3Wf69ZI7)j$BD6L2`c%z7r)&7 z``vzINOpNIc@19`jO8E-F3fxTk2?_LHZ*odrBzfi;Eih?$?ovTd$($@p5G*ST>zFY z9tySkTdAJtCnlhqr!Ba2{1V=RwqH&lxBCxZN0l5qojto$mR6goBlF1L@_T>zG0GhL zsLLTMUYXP1C@#=+GGuJ%-}n_==4~C8Jfy;7!~aWn7oLmrRD>Fz2-gSQgxIaKTtZXUUzf(IE!^K6nqgaPd0!rk4cSR< z@a2pVG~{Ggy>dEpHz@er6h`Grp75gq-OK1owi-mwRC1E?SkupMhE&sHpAHdiS4p-~ zS0^>JE!#o5Kcy+G>@mg<@JXc154NMUQI)EotrFsXgDi$pl4ZF2w>!n~!PmvM-UQMp zVf@4}8J7IALeL_-_v*s6i3aI8>Ql=5llBS%@V{QDx0{nSHgCD|HJR_mIbIqrs9A~B z5WK#oxi_NCp0tQqfANA)v)Dx7mJF4XM{k=4w9XtAI8uRLxq_GCU z|D-Wq=GV``B}Km7@aqkiek3l=b=M_I)GNLHWp{bUbLJ@VUBK`Ff24nmAS5&qTC%n; zuAU_Gsrjx-*vy!$*pZ~Ty+G>#3$YbvRkBw!KYi~96B!Y#fh33jZR<08(rCZr=Qda9 zY~Z`|Bau_yW54o8lEl_5+x14l;N8^Pi4O$KR_fQM;RkDtrM~S$BfGwdGplauRqlID zU7W$jPqYK0WBy$s%L3d05T(?Sh<@qc**G~a`)nW8sX~K)1ZqwTm^{|Te4QvL3M5gj z?V1m~hV%8mN#fCrUA_b(;lOv{8#f_@psdyDsom9L*N}& zYx?$X<7z-~Z@DBw>i6DZ21hYv_Pt&1F2myr26;FfR%NyVfslAt;IC)}@s~0H=ej3+ zP<~rnm!(;KSQ=RFN7soF0(z@C*J@O#Kge~RMY-}_{wY%P{x5fj)qjn_;hvx3Mx{P0 z)D1;u1$6M!NR)$9nRV_!%lN@;r8*gvuKq1I-A(2>BZ^Z<0e~R+?~QZay#B`6eB&NI zt)GR^tN)USAb+YVI2ejAI3$i!&!9kJHrB|jGUwWI^I#X>$tR;wM<{opbMLZyN@&~3RmhwI7s@{+N;(LAzUP@>X^6>Q-Wt}g_G&j^WW|$ zw%}nMDZrn^c~AVMEU1jbA1JXXaFs2)qC^msz@;EkJjL5;)q2^u`D!{H-Y=6E*P9Z6 z4meTy8UE6X$7-PZVNa#Zook(s-2oq7p3$>h1i-iWfkfmL#wgypOCvc!#PQWfKR>** z*P-L#Kf6~0TJYD=OYQGu%^a6@drfmnFJ!zAzzuhG6z7Cw^^rq8a#ar19u^xi=i7+M~)Vw2VA`A7+-RA%gv44Silip7ottKjM_HCy7ydPNz>zi;rHh81{*5 zCB_U0Xp|QCUGri%H)O6lUbEnt?>po0W^bt#y1#8G_Uzelwg^#)w1^S~)D&F~uY_G; z*$YrmaIT5Y0bM}8G$)m|7f=I7zzIH!WinFYB??H7xVhDe+;Q<<&hE_Kn$^fsz|mip zev|P)ZB#BmcOzI%H_jnm8{3dKlw?N(a*Qdu@WCNCU$;FT)t}{x_ng9Wm1F~3A%xz+WxAR)lEb_))N5i&S6IEzN7^Z z94fkR`ot~-G?s*ZgzEyzQ7Tuv$~pDs(~O1clP%y*~V)suWP3^-pY zMSqH<1PfA<;Dhi%fX#N-ZR6z62uN#vGy#}JBst96iu?zGIpJ`XsXr=7hSe7OFXD4M zibJgm+0Du<2R=9KAsb3cm$Z3#GpFOc?LU_0P|Xwez7?i8ytB7F9C7HQOG}`D8W~zY z!E@ZSqA;jFQ1KvUm@u`*|5oe?qdfPChT% zZG3?h$xjp<_&VQ``=Vt&hAtccsO%Fxj=)DOZAO(nGX4zmHsy=k zZAiv9-B(_y@TxBLF=;7Uqz<>Mx6Hk3WUDtwf8_V#HC>qUXXoR^i<@ITaMR80LeUE) zsFL1OH`|;Uc{i}+rPO{o1#8{yd^>gyhIO(gwbpQmunI~4o&g+ zQzh2^VquEI82fo){< zi%2JH^RL3Xo3)3&iaSh{zT31$8{Fx2%_T16Sy`BF7WlX^3TWL}eKK-8>1Mp`BdaK; zPQ6bVX_5)H6E`flUltubefCsHNl|~+q3`WK2F)0_z+DycA)Dd|c?M%xg{L9c$7j@3 z_Uc*CHU`vD_Fes*C1R)=61uxrvg`m&Nhu2Q5|kX7*nM$isoBWH*hk76aI60E7BS9y^cJ#+zYqBRU%M?8}u|tcu}tT?yStC^fAF&n!E>Ibu`!F?I9hx;ACRtd0D- zKov2}`7Cg2`C5CIL3iQq+Not$s zJ5Qw%pWWlvbfG&h?XCAe3)UzNQA}=Lrc8-z;8F3o$03yOZTTHPPf9k zhf{pLQVYE1@xOW||Hh7VLw!A}1`SOy8ZW#6W#XiVQ4ay|* zd7!26nAJl?-UAHtZ!iAhJ8npSSopR6io8Kn)`z?zIiJ*;4ly_>pdOs1^oaA;%@)v> ztETpdHCrE_kgJ!nF6-{^$V25X4ONVl8GhRLZ*t1qS%{sM^4j~kG&e$^cKlX_pzA{s zp`@@Wa-CK`MBjSk-q16X4eRov#TibPG_a>?T@>{2c<>lOFtg+7eG3z_psRYM0p1nb zVf)h6wOeSXiK|^YkjuF)Gjoluc%ECIgTkE90GU{pj~X+e9rDrcd`5&4dpnXlSGqS8XbT)r2v0Ye53TV?Y|b+>TnDO$iG2-w zXQXK_KGdXC?vn@@(^KCYX1@`6l!(P0)6+R|aPH*G{WJ%R1TfQ#28y;BL!K+q7FYKg0wO3~M(C&VlOEIUAq?Q9~x7u(BOnM$=0st!9)x~XqZ|)YCsB` z7_`qM?d;H8x<4N2;tq`FG(ujbQAQ0Z(9rkpIF2!x@l)f4_)aqg#5hXkM%>i+COd|j zYriwcqktf*5bj-2d=s{s;PmO}&%g#YK;f3Ma6pJGsiu8jY;zqzLi{HIm#t%AdzweR zY#w`rfh(Deuyr`|NOPZOILy6z$wXSxODHmtSwf<-yfFoe$GSUm=--DS{xY?!2$^ZqdE9r!L)wn*Nlp1?e8W?Tdvi0_|608$GoV82Ftf8#cu_aU6YPP6|tiX zZY@3G5eUr0-)68iuUTPI4)faWtg(@diCS`^Ji4;_qd8nTAatzt>MIM2FP+0ljUn;1 zSe3ubt2;Z*S44Iuwk8T_j|Z5v8HJ%fG;fq@o%faa;|#i%{)v|KEjZ6Kzy){>O<{m+ z=v2SX$dGWS$NxM|>f^0j1=+o^W487@1Gpa|JH0`UhD}(Zv`YU3+fT=})t$r#I-D#MH|^m1>pG@}sDl}b}QRLTU|7-k>$u5FI0hF5G>SIqKHqhR(t z{g*HmSiYm8k%<_k{cUhDZ3AwNP1Ai~JNx^y4fn`|t#3q$Ohg{5G;PceZM8{&Xnb${ zDIp0%1(=^5(`nR^#2p1m;9uJ4@<36B2mxTIB*b57y#F#` zj|O7F@Lt2+tzV|~+M`O&N!A^_0Ph-(~GT5ocV1cEL^o`Cp>h&nC zZ6-^f+Ds;emM3Zq@j{oK4|Gija1K=o`}^hEcwa-= zz4|2fB^?Q&!!g;DLHFZP>MC`0Y76N!A#8f4%poS2io zQioRs8bi(`Vb9z>$g%L8Js3dF^)>0xu~HKRpE_!+m)Fxcqgh7vpyzEwgjtb``w&RI)T(9!c3zO&Gj1fy zjBkZe4%4>mF_1V$vfzf8M_e^+^vTKCk=A_VlLJIbCsL<6((95vgt<5(a47G9b zEYoprX2Vn<9s6W|CedL@Q0j6vrhHM9ThUZ)AAalC>hGLL@b^)o`zZA-U0^R$7RFYCuS(MZ&F4-i*jWzrHG&RM zj6LYdvj|U%!3-df(fla+by3;`0cyKlX*u1=Mc=4tJ^R2lL%+D>EzZ8Dhh$ZzepO-A9&Ppi*{iA^v)9cn;ykSnB7q zLH=g0^s@)8~MIeS~5Wb2m zzq$KZ+l!q1OZs=LD^g6%G&GkL$;hjl!X_^^_v$D}gXjd;p_Wm%Gy)%M^K2eZ8aa*x zb%WM)#D2#bXk@7)MLRa!V-mJ+(awS4iN+}|#&+D&p5N{cK9W>H;tr0A<_I;u2}`}$ z#td=RD=E_clec*FL!)iJlgfiO!!;&gyR1){RX+N4S*jpb^`2;Ft0(>94~<%0!S=;P z2@QYODqlV+0-i9-CaX@kfwgK~&It0|4*$O%fgPz8$$T6muv)FS#XLNwT`+RxkwWFu z1kV~FSaxJ$(1YkRtLE>0>>dyUDpE0%>>!0@E>)?K6l8r=Q0NEfDccQo!pTWZ%^;)e z%iMNR5+ zOnL0oLE1!0$m*ts83PCE**P(-pzkhsb%EV5Xc+u=>QT}!?EkwpF#q?R|8L@>H88t0 z5V)l=f|;rlmiDwzPEAod)MR9HiFU3-nsy}s+*UI1T!7QET;e#r^;{K-%jM55DP~E9 q7}4b)g}TzS>Gx9qgMO?r`|NKAf2=<1Zdsv!)-5dq&3tv+$o~N63cRfV literal 0 HcmV?d00001 diff --git a/src/content/translations/de/developers/docs/transactions/index.md b/src/content/translations/de/developers/docs/transactions/index.md index 7e7e01c225c..6a3ea63c57c 100644 --- a/src/content/translations/de/developers/docs/transactions/index.md +++ b/src/content/translations/de/developers/docs/transactions/index.md @@ -8,7 +8,7 @@ Transaktionen sind kryptographisch signierte Anweisungen von Konten. Ein Konto w ## Voraussetzungen {#prerequisites} -Um dir zu helfen, diese Seite besser zu verstehen, empfehlen wir dir, zuerst [ Konten](/developers/docs/accounts/), [Transaktionen](/developers/docs/transactions/) und unsere [Einführung in Ethereum](/developers/docs/intro-to-ethereum/) zu lesen. +Um dir zu helfen, diese Seite besser zu verstehen, empfehlen wir dir, zuerst [ Konten](/developers/docs/accounts/), [Transaktionen](/en/developers/docs/transactions/) und unsere [Einführung in Ethereum](/developers/docs/intro-to-ethereum/) zu lesen. ## Was ist eine Transaktion? {#whats-a-transaction} @@ -16,21 +16,23 @@ Eine Transaktion von Ethereum bezieht sich auf eine Aktion, die von einem extern ![Diagramm mit einer Zustandsänderung aus einer Transaktion](./tx.png) _Diagramm angepasst von [Ethereum EVM illustriert](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ -Transaktionen, die den Zustand der EVM verändern, müssen auf das gesamte Netzwerk übertragen werden. Jede Node kann eine Anfrage für eine Transaktion auf der EVM senden. Dann wird ein Miner/Validator die Transaktion ausführen und die daraus resultierende Zustandsänderung an den Rest des Netzwerks weiterleiten. +Transaktionen, die den Zustand der EVM verändern, müssen auf das gesamte Netzwerk übertragen werden. Jeder Knoten kann eine Anfrage zur Ausführung einer Transaktion an die EVM senden, woraufhin ein Validator die Transaktion ausführt und die daraus resultierende Statusänderung an den Rest des Netzwerks weitergibt. -Transaktionen erfordern eine Gebühr und müssen gemint werden, um Gültigkeit zu erlangen. Um diese Übersicht zu vereinfachen, werden wir die Gasgebühren und das Mining an anderer Stelle abdecken. +Transaktionen sind gebührenpflichtig und müssen in einem validierten Block enthalten sein. Um diesen Überblick zu vereinfachen, werden wir die Gas-Kosten und Validierungsgebühren an anderer Stelle behandeln. Eine abgeschlossene Transaktion enthält folgende Informationen: -- `recipient` – die Empfangsadresse (im Fall eines externen Kontos wird die Transaktion den Wert übertragen. Bei einem Smart-Contract-Konto wird die Transaktion den Vertragscode ausführen.) -- `signature` – der Identifikator des Absenders. Dies wird generiert, wenn der private Schlüssel des Absenders die Transaktion signiert und bestätigt, dass der Absender diese Transaktion autorisiert hat. -- `value` – Betrag der ETH zum Übertragen vom Absender zum Empfänger (in WEI, einer Stückelung von ETH) -- `data` – optionales Feld, um beliebige Daten einzubinden -- `gasLimit` – Die maximale Menge an Gaseinheiten, die von der Transaktion verbraucht werden können. Gaseinheiten stellen Berechnungsschritte dar. -- `maxPriorityFeePerGas` – die maximale Menge an Gas, die für den Miner als Trinkgeld enhalten sein soll -- `maxFeePerGas` – die maximale Menge an Gas, die für die Transaktion gezahlt werden soll (einschließlich `baseFeePerGas` und `maxPriorityFeePerGas`) +- `von` – der Adresse des Senders, der die Transaktion unterzeichnet. Es handelt sich dabei um ein externes Konto, da Vertragskonten keine Transaktionen senden können. +- `recipient` – die Empfangsadresse (im Fall eines externen Kontos wird die Transaktion den Wert übertragen. Bei einem Smart-Contract-Konto führt die Transaktion den Vertragscode aus.) +- `signature` – die Kennung des Absenders. Das wird generiert, wenn der private Schlüssel des Absenders die Transaktion signiert und bestätigt, dass der Absender diese Transaktion autorisiert hat. +- `nonce` – ein fortlaufend inkrementierender Zähler, der die Transaktionsnummer eines Kontos angibt +- `Wert` – gewünschte Menge an Ether (ETH), die vom Absender an den Empfänger zu überweisen sind (in WEI, ein Ether gleicht 1e + 18wei) +- `input data` – optionales Feld für die Eingabe beliebiger Daten +- `gasLimit` – die maximale Menge an Gaseinheiten, die von der Transaktion verbraucht werden können. Die [EVM](/developers/docs/evm/opcodes) gibt die Gas-Einheiten an, die für jeden Berechnungsschritt benötigt werden +- `maxPriorityFeePerGas` – der Höchstpreis des verbrauchten Gas, der als Trinkgeld an den Validierer weitergegeben wird +- `maxFeePerGas` – die maximale Gebühr pro Gas-Einheit, die für die Transaktion gezahlt werden soll (einschließlich `baseFeePerGas` und `maxPriorityFeePerGas`) -Gas ist eine Referenz auf die Berechnung, die erforderlich ist, um die Transaktion durch einen Miner/Validator zu verarbeiten. Benutzer müssen für diese Berechnung eine Gebühr bezahlen. Das `gasLimit` und `maxPriorityFeePerGas` bestimmen die maximale Transaktionsgebühr, die an den Miner gezahlt wird. [Mehr zu Gas](/developers/docs/gas/). +Gas ist ein Hinweis auf die Berechnung, die für die Bearbeitung der Transaktion durch einen Validierer erforderlich ist. Benutzer müssen für diese Berechnung eine Gebühr bezahlen. Das `gasLimit` und `maxPriorityFeePerGas` bestimmen die maximale Transaktionsgebühr, die an den Validator gezahlt wird. [Mehr zu Gas](/developers/docs/gas/). Das Transaktionsobjekt wird in etwa wie folgt aussehen: @@ -50,7 +52,7 @@ Aber ein Transaktionsobjekt muss mit dem privaten Schlüssel des Absenders signi Ein Ethereum-Client wie Geth wird diesen Signaturprozess bearbeiten. -Beispiel-[JSON-RPC](https://eth.wiki/json-rpc/API)-Aufruf: +Beispiel-[JSON-RPC](/developers/docs/apis/json-rpc)-Aufruf: ```json { @@ -97,14 +99,14 @@ Beispielantwort: } ``` -- Das `raw` ist die signierte Transaktion in rekursivem Längenpräfix (RLP) kodiertem Format. +- `raw` ist die signierte Transaktion in [Recursive Length Prefix (RLP)](/developers/docs/data-structures-and-encoding/rlp) in kodierter Form. - Das `tx` ist die signierte Transaktion im JSON-Format. Mit dem Signatur-Hash kann für die Transaktion kryptographisch nachgewiesen werden, dass sie vom Absender stammt und dem Netzwerk übermittelt wurde. ### Das Datenfeld {#the-data-field} -Die überwiegende Mehrheit der Transaktionen greift auf einen Vertrag über ein externes Konto zu. Die meisten Verträge sind in Solidity geschrieben und interpretieren ihr Datenfeld entsprechedn dem [application binary interface (ABI)](/glossary/#abi/). +Die überwiegende Mehrheit der Transaktionen greift auf einen Vertrag über ein externes Konto zu. Die meisten Verträge sind in Solidity geschrieben und interpretieren ihr Datenfeld entsprechedn dem [Application Binary Interface (ABI)](/glossary/#abi). Die ersten vier Bytes geben an, welche Funktion aufgerufen werden soll, wobei der Hash des Funktionsnamens und der Argumente verwendet wird. Manchmal kannst du die Funktion anhand des Selektors aus [dieser Datenbank](https://www.4byte.directory/signatures/) identifizieren. @@ -127,7 +129,7 @@ Entsprechend den ABI-Spezifikationen erscheinen Ganzzahlwerte (wie Adressen, die Bei Ethereum gibt es unterschiedliche Arten von Transaktionen: -- Reguläre Transaktionen: eine Transaktion von einer Wallet zur anderen. +- Reguläre Transaktionen: eine Transaktion von einem Konto auf ein anderes. - Vertragseinsatz-Transaktionen: eine Transaktion ohne "An"-Adresse, bei der das Datenfeld für den Vertragscode verwendet wird. - Ausführung eines Vertrags: eine Transaktion, die mit einem bereitgestellten Smart Contract interagiert. In diesem Fall ist die Adresse von "to" die des Smart Contracts. @@ -143,13 +145,13 @@ Damit Bob also Alice 1 ETH zu einer `BasisgebührPerGas` von 190 gwei und einer 0,0042 ETH ``` -Bobs Konto wird belastet mit **-1,0042 ETH** +Bobs Konto wird mit **-1,0042 ETH** belastet (1 ETH für Alice + 0,0042 ETH an Gas-Gebühren) Alices Konto wird **+1,0 ETH** gutgeschrieben Die Grundgebühr wird **-0,00399 ETH** verbrannt -Miner behält das Trinkgeld **+0,000210 ETH** +Validatoren behalten das "Trinkgeld" **+0,000210 ETH** Gas ist auch für alle Smart Contracts erforderlich. @@ -161,13 +163,10 @@ Jedes Gas, das nicht in einer Transaktion verwendet wird, wird auf das Benutzerk Sobald die Transaktion abgeschickt wurde, passiert Folgendes: -1. Sobald du eine Transaktion gesendet hast, erzeugt die Kryptographie einen Transaktions-Hash: `0x97d99bc77292111a21b12c933c949d4f31684f1d6954ff477d0477538ff017` -2. Die Transaktion wird dann in das Netzwerk übertragen und in einen Pool mit vielen anderen Transaktionen aufgenommen. -3. Ein Miner/Validator muss deine Transaktion auswählen und in einen Block einbinden, um die Transaktion zu überprüfen und sie als "erfolgreich" einzustufen. - - Du musst eventuell warten, wenn das Netzwerk beschäftigt ist und Miner/Validatoren nicht in der Lage sind, mit der Menge zu validierender Transaktionen mitzuhalten. -4. Deine Transaktion wird "Bestätigungen" erhalten. Die Anzahl der Bestätigungen ist die Anzahl der Blöcke, die seit dem Block, der deine Transaktion enthielt, erstellt wurde. Je höher die Zahl, desto größer ist die Gewissheit, dass das Netzwerk die Transaktion verarbeitet und anerkannt hat. - - Neuere Blöcke können umorganisiert werden, was den Eindruck erweckt, dass die Transaktion nicht erfolgreich war; die Transaktion kann jedoch noch gültig, aber in einem anderen Block enthalten sein. - - Die Wahrscheinlichkeit einer Reorganisation sinkt mit jedem weiteren geminten Block, d. h., je größer die Anzahl der Bestätigungen ist, desto unveränderlicher ist die Transaktion. +1. Ein Transaktions-Hash wird kryptografisch erzeugt: `0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017` +2. Die Transaktion wird dann an das Netzwerk weitergeleitet und zu einem Transaktionspool hinzugefügt, der aus allen anderen ausstehenden Netztransaktionen besteht. +3. Ein Validator muss Ihre Transaktion auswählen und in einem Block hinzufügen, um die Transaktion zu verifizieren und sie als "erfolgreich" zu bezeichnen. +4. Mit der Zeit wird der Block, der Ihre Transaktion enthält, auf "justified" und dann auf " finalized" hochgestuft. Mit diesen Hochstufungen steigt auch die Sicherheit, dass Ihre Transaktion erfolgreich war und nicht mehr verändert werden kann. Sobald ein Block abgeschlossen, also "finalized", ist, könnte er nur noch durch einen Angriff auf Netzwerkebene verändert werden, der viele Milliarden Dollar kosten würde. ## Eine visuelle Demo {#a-visual-demo} @@ -177,15 +176,13 @@ Schaue Austin bei einer Führung durch Transaktionen, Gas und Mining zu. ## Typisierter Transaktionsumschlag {#typed-transaction-envelope} -Ursprünglich hatte Ethereum ein einziges Format für Transaktionen. Jede Transaktion enthielt eine Nonce, einen Gaspreis, ein Gaslimit, eine Zieladresse, einen Wert, Daten, v, r und s. Diese Felder sind RLP-codiert und sehen in etwa so aus: +Ursprünglich hatte Ethereum ein einziges Format für Transaktionen. Jede Transaktion enthielt eine Nonce, einen Gaspreis, ein Gaslimit, eine Zieladresse, einen Wert, Daten, v, r und s. Diese Felder sind [RLP-kodiert](/developers/docs/data-structures-and-encoding/rlp/) und sehen etwa folgendermaßen aus: `RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])` Ethereum hat sich so entwickelt, dass es mehrere Transaktionsarten unterstützt, damit neue Funktionen wie Zugriffslisten und [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) implementiert werden können, ohne die alten Transaktionsformate zu beeinflussen. -[EIP-2718: Typisierter Transaktionsumschlag](https://eips.ethereum.org/EIPS/eip-2718) definiert einen Transaktionstyp, der ein Umschlag für zukünftige Transaktionstypen ist. - -EIP-2718 ist ein neuer allgemeiner Umschlag für typisierte Transaktionen. In dem neuen Standard werden Transaktionen wie folgt interpretiert: +[EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) ermöglicht dieses Verhalten. Transaktionen werden wie folgt interpretiert: `TransactionType || TransactionPayload` @@ -198,11 +195,10 @@ Die Felder sind wie folgt definiert: - [EIP-2718: Typisierter Transaktionsumschlag](https://eips.ethereum.org/EIPS/eip-2718) -_Kennst du eine Community-Ressource, die dir geholfen hat? Bearbeite diese Seite und füge sie hinzu!_ +_Du kennst Community-Ressourcen die dir geholfen haben? Bearbeite diese Seite und füge sie hinzu!_ ## Verwandte Themen {#related-topics} - [Konten](/developers/docs/accounts/) - [Ethereum Virtual Machine (EVM)](/developers/docs/evm/) - [Gas](/developers/docs/gas/) -- [Mining](/developers/docs/consensus-mechanisms/pow/mining/) diff --git a/src/content/translations/de/developers/docs/transactions/tx.png b/src/content/translations/de/developers/docs/transactions/tx.png new file mode 100644 index 0000000000000000000000000000000000000000..ba6bbd3abf8915bff42c0327995d65622b1a72df GIT binary patch literal 11020 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 Cb4|wp literal 0 HcmV?d00001 diff --git a/src/content/translations/de/developers/docs/web2-vs-web3/index.md b/src/content/translations/de/developers/docs/web2-vs-web3/index.md index 35d5a476554..92fd6f7abc0 100644 --- a/src/content/translations/de/developers/docs/web2-vs-web3/index.md +++ b/src/content/translations/de/developers/docs/web2-vs-web3/index.md @@ -6,7 +6,7 @@ lang: de Web2 bezieht sich auf die Version des Internets, die die meisten von uns heute kennen. Ein Internet dominiert von Unternehmen, die im Austausch für deine persönlichen Daten Dienstleistungen erbringen. Web3 bezieht sich im Kontext von Ethereum auf dezentrale Apps, die auf der Blockchain laufen. Dies sind Apps, mit denen jeder teilnehmen kann, ohne seine persönlichen Daten zu monetarisieren. -Suchen Sie nach einer anfängerfreundlicheren Einführung? Siehe unsere [Einführung in web3](/web3/). +Suchen Sie nach einer Einführung für Einsteiger? Schauen Sie sich unsere [Einführung in web3](/web3/) an. ## Web3 – Vorteile {#web3-benefits} @@ -15,7 +15,7 @@ Viele Web3-Entwickler haben aufgrund der inhärenten Dezentralisierung von Ether - Jeder, der im Netzwerk ist, hat die Erlaubnis, den Dienst zu nutzen – oder anders ausgedrückt, es ist keine Erlaubnis erforderlich. - Niemand kann dich blockieren oder dir den Zugang zum Dienst verweigern. - Zahlungen sind über den nativen Token, Ether (ETH), eingebaut. -- Ethereum ist turing-vollständig, was bedeutet, dass du fast alles programmieren kannst. +- Ethereum ist Turing-vollständig. Das bedeutet, dass Sie fast alles programmieren können. ## Praktische Vergleiche {#practical-comparisons} @@ -25,20 +25,20 @@ Viele Web3-Entwickler haben aufgrund der inhärenten Dezentralisierung von Ether | Ein Zahlungsservice kann beschließen, keine Zahlungen für bestimmte Arbeitsarten zuzulassen | Web3-Zahlungs-Apps erfordern keine persönlichen Daten und können Zahlungen nicht verhindern | | Server für Gig-Economy-Apps könnten ausfallen und die Einkommen der Arbeitnehmer beeinträchtigen | Web3-Server können nicht ausfallen – sie verwenden Ethereum, ein dezentralisiertes Netzwerk von tausenden Computern als Backend | -Dies bedeutet nicht, dass alle Dienste in eine dApp umgewandelt werden müssen. Diese Beispiele zeigen die wichtigsten Unterschiede zwischen Web2- und Web3-Dienstleistungen. +Das bedeutet nicht, dass alle Dienste in eine dApp umgewandelt werden müssen. Diese Beispiele zeigen die wichtigsten Unterschiede zwischen Web2- und Web3-Diensten. ## Web3 – Einschränkungen {#web3-limitations} Web3 hat momentan einige Einschränkungen: -- Skalierbarkeit – Transaktionen sind auf Web3 langsamer, da sie dezentral sind. Änderungen am Zustand, wie eine Zahlung, müssen von einem Miner/Validator bearbeitet und über das gesamte Netzwerk verbreitet werden. +- Skalierbarkeit – Transaktionen sind auf Web3 langsamer, da sie dezentral sind. Änderung am Zustand, wie eine Bezahlung, müssen von einem Knoten verarbeitet und durch das Netzwerk propagiert werden. - UX – Eine Interaktion mit Web3-Anwendungen kann zusätzliche Schritte, Software und Ausbildung erfordern. Dies kann eine Hürde für die Adoption sein. - Barrierefreiheit – Die fehlende Integration in moderne Webbrowser macht Web3 für die meisten Benutzer weniger zugänglich. - Kosten – Die erfolgreichsten dApps legen sehr kleine Teile ihres Codes auf die Blockchain, da dies teuer ist. ## Zentralisierung vs. Dezentralisierung {#centralization-vs-decentralization} -In der unten stehenden Tabelle findest du einige Vor- und Nachteile zentralisierter und dezentralisierter digitaler Netzwerke. +In der unten stehenden Tabelle finden Sie einige Vor- und Nachteile zentralisierter und dezentralisierter digitaler Netzwerke. | Zentralisierte Systeme | Dezentralisierte Systeme | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -50,7 +50,7 @@ In der unten stehenden Tabelle findest du einige Vor- und Nachteile zentralisier | Die zentrale Autorität kann Daten zensieren, wodurch Teile des Netzwerks von der Interaktion mit dem Rest des Netzes abgeschnitten werden könnten. | Zensur ist viel schwieriger, da Informationen viele Möglichkeiten haben, sich über das Netzwerk zu verbreiten. | | Die Teilnahme am Netzwerk wird von der zentralen Autorität kontrolliert. | Jeder kann am Netzwerk teilnehmen; es gibt keine „Gatekeeper“. Idealerweise sind die Teilnahmekosten sehr niedrig. | -Beachte, dass dies allgemeine Muster sind, die nicht in jedem Netzwerk zutreffend sind. Darüber hinaus liegt in Wirklichkeit der Grad der Zentralisierung bzw. Dezentralisierung eines Netzwerks auf einem Spektrum; kein Netzwerk ist vollständig zentralisiert oder vollständig dezentralisiert. +Beachten Sie, dass das allgemeine Muster sind, die nicht auf jedes Netzwerk zutreffen. In der Realität liegt der Grad der Zentralisierung bzw. Dezentralisierung eines Netzwerks in einem Spektrum. Kein Netzwerk ist vollständig zentralisiert oder vollständig dezentralisiert. ## Weiterführende Informationen {#further-reading} @@ -59,3 +59,4 @@ Beachte, dass dies allgemeine Muster sind, die nicht in jedem Netzwerk zutreffen - [Die Bedeutung der Dezentralisierung](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) _Feb 6, 2017 – Vitalik Buterin_ - [Why Decentralization Matters](https://medium.com/s/story/why-decentralization-matters-5e3f79f7638e) _Feb 18, 2018 – Chris Dixon_ - [Was ist Web 3.0 & Warum es wichtig ist](https://medium.com/fabric-ventures/what-is-web-3-0-why-it-matters-934eb07f3d2b) _Dez 31, 2019 – Max Mersch und Richard Muirhead_ +- [Warum wir Web 3.0 brauchen](https://medium.com/@gavofyork/why-we-need-web-3-0-5da4f2bf95ab)_Sep 12,2018 - Gavin Wood_ diff --git a/src/content/translations/de/energy-consumption/energy_consumption_pre_post_merge.png b/src/content/translations/de/energy-consumption/energy_consumption_pre_post_merge.png new file mode 100644 index 0000000000000000000000000000000000000000..4d24a4e3cffd781ed6a592b6621eff2c1d12e5a7 GIT binary patch literal 466309 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�=$CcGXU-2c_P=xqx@ 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�k70Rj-1{Wn{UvyfvNOlJObOT8U7cAeu)BLB*`|Pf zvg79cp5p!5{a@Vxs@Y?+w66KmstC`$s|m z56p_%A|W;$sgxd7jAvczJW@Uyg(+3SS2oDPnP&GD9>~?1LfpU7A|;uCG#aquiHBs7gvhY1HfMg*CHX1&b@8&fE7vN& z6OHhc(1d{UscyuO5&6P=$wia0f}0S~0qC$~>(b|a*>K_dlB+gzAjqdYJ^K^8W?8J; zp#~^ajUn@Z^Sdg76= z>VZM5jgYjOsE1&lXa|j|pYZgmyloo+FQA)z5?EF^+IB%z`lR2w63hymH#Fdoa7y)O zlTJY&0ijPJ%qR5EZw1Z17<`ch$L&kx#q3ZTbBRwMUZo^q3OB8umlQTPRp{a}+z|Hc z;)0KpXSC~Rkh_on?x%b7c<(j!eG*VewWKDuC?QNDO;_Mo#*>i<$BqLD7;UNzf9a(z zO*90rd~+6Pd|2z*qGS^F_U+BSXfkaQ6Q2QNFMTVUKKka7#!#mniRK2d_@RsSCasaT z^S}FA;lT;L`&y%qA!r^}fKPG&hTxBNhHi5fSLyrD;}a822tY)EPz=t0-8~%nn>eyH3`LUb2KEoElv^DF0abF;}pGL&sY*~Zsq|VGuYNQ_Sk%m z#DD>MY6FQvIw2up*FFTC>s6iaw$1lTy3WG<947uia7c}YOZqJGQd?UQ4|oDNh^i)H zGPYfnvFeE@Yl~DZXd^u$E3#c7cc`>VpIKU};`VvqN?EnKazsgu9{cW3N7%<1lP7vb zSc$r$NI&`K)R5+BCX3{#Mu_)vTFp(d!E<~{BEkL{?={56bW7WHx}&r@e~J! zn4P#%Bk?fxVlnM}ljn6sTV==7j-Z#s;t$kMRbKO<&QI!fCO{9_^o>o}Cd`GoCbxI3 z+#2YvuDL+oZsQ_A`*G81tc7&Im$I*2j+aJ37-@ynH436Io-|PtG1dsK+E{}v1N5hs z+&!$z(PQ6~oy>MY^aWbXtlw>y&U#E!_`Iplir{Fd9nfU;<`(j?>yqAm%Y%y4CQ(_Z z)bU_OfO#v}hu;>`rhADKif)b52hlETYYG`sB*-s$dM$5DE3qNN{{qlqQJ9b zQ0Un>vRYDy%}WXIyO%XH1GrJpU<%2owT+-0H*eGvPryb!r8@-u>gxL1Akcn1PKwft zPl6}nk@#iA>)M6G{okZ#Pu!ULy&wgi&J8d86QR_H8Puegv05OjZ5a-Hn z2$BM~JdWWB@cZ92cKdQBZj<)r0vp2%HFCqY6%K=yHWx&Hd%Nxe>3zFLHQY_ix9d56xl59Ya@wYN^#fj z`;TA$XEQOkJ(9xiQLH{Zb9gnziYTop-$S9xJCzkFbvTEyhBEH^TIa-*HS>9@_k-8z zswcowVY3q0c6>*pnAx+9vWufaACUVoP$QMH%Q=e+8hy{7$G z_;4E_sbsxivGMY(}q`jVj-GbutP4vZL-1)6JrF-@i6Y=pJcI5d$MT36Q7bB^>0jlM1L-6cc^mkSXFbX8A$hppDeNy^^=pR4 z#BdxUM{A<41OL0ReVMvNZs5OGgspsQ!hxF`cSIuhi&Vh1augI%6sSVa3#xsJgxjNz*A3bVkNy z{Pfqn;H!yT@+-wb~-RLF{n6$}RriScEGi>oHg4xjYq(jmE`)JGb~<}1foXoDbX(PHx=#o?LE zL~SbzZXg#N2~c%LkPd0xqH6j?U2tHVDqm##>MEdd^l?7l0uwZ|28M+p#nYqlFe5eJ zk|!C2?tYXDSWFDgO)+moqipkFvmf@pyk+ueLVme@-*dlau7{yXCU9Xp? zaFhlOVVv_}WldJi(M#^R%NwiLOy^*N^*ON{r8E(VeO`AR1w^XXqIISvN4g*Njd-*b z#>-HBt66ZX5Y73Qj0K|wXDegLSnn2p)TN2L)hljfigK-bi1JQ56%;`h~Bqa6s z_xIbMDgNDJfoRJAdy7$~2yf*?@G*?*G&wf+87ru;rLnXtky77b8D%X$QD(aDXknS8 z6(C~x+yIv|bx=9$eSgQph0ywDUdTkz7UrEZZ46NaNFk2|>VX$>R+C`gc zzImzzBcNjl0HzwRagj<3Li@H?*eaYiF*1-e3i|-o@L_bv_fK0}Jgc|cLYqf`Qzu}G zCS^0)Kd37i1!!xA8S(m>na1zW`bpPUTz&Bk+|27G!S%XCGo|Jw6|~_Cf-(SiVO^mb zcsw;eLU~wmf+yqbTC1~fE%9DD>z^hIic=1M2L5Q|>atn*;t#KR*yLOK$r=Fzz>PStY;Wr3XcH5*7iBqxpwGw5tkABS^kbblqiglSoD{-#g+3%LW6Us=MB z-hgG90_9fuG*c$K$t!zgbvpx6AezkrXjp6XH@Exxsb`6K9dG{EAD6xQfBSAmCPYew_j*jrLS?$MQNALe>sATHl9Tz8q%bXu!Q z4`;aT;0&54AtsU@&mc)ktKGr)p`86;OQ&alMn3Xu^?5*Wg`{=ShTxsiPD$@qh+2zu zgsibTy;{-YpGQTd)T1+hs!Hufq*UK~$Py3o+nb6F_otD+hMPDT->eFA-mwo)Fy-Ew zmRs2(&*~CJO8jehdEih0m?8=nZ)L0hWgnxd7Wz+%^D;6pgQJOu;r*8S`{=}H43m-a z*)6c9&8&VM6(HWvUUoYRr1LwxM?il-K_|X@Yiw*>q)J3PBUL&#_=i30vmkz>O#pFN3=kF*@aE9sf&Cd$;-6jiaD~ zNQo^0eR!LE)%TkC;jVMs;qP?+z%KZPTnNc$=`_jrmg&LZX@<1#u+9Dqt4~7G_(F|& z4vXN`uBQHX1<{0jI!N>}|hd)DzsK8qft7sWVvgJM3IJ z@Xid?#?}-9TA|Hs2DDV$zG5|-`+mmxz&yyvQE>Xgp#eXp)d#PvzrCMxeD1n3-$%|) zX3kPAd(409-Ii>6Fvc0>Qmd1}Ie-+l%z{?iL0+M?yj0{s)dhM|{1;PT_Y-XAL-c0h z($PZs;j{g%jE2PbJ%9`KA&|lr#nY^{pkYb2@uZYYo_^$1>r0Gmt6~bk&X*#9lLPEa z?IL8c4*VkGZKfXZ=+UxOM~uIH1M#iMWL>p0jx4&w!Y=Pf>F6ifl+aEE`3-vE7Sy#( zn-Yb`h$&V^o(ByN;4`pV=y8R$x9fz=(f&UBE;AY#Y5d8hH55=y;dFOv@VtAy4`Smo z=soG(sIU}s)`+y0g=Ysk)@!nAkDpOPHH9&5-mkbL&)K!1QM`x7#xoOg+EQ$!Y!!VZW2PcVD}JNUiA=#v3chQH%5=l^790mGMB0erkwz+N5Z!KghK%c+cQCjeiNo8bLm2g_yi7GS zSH}xty#=uDDH3^@mF%k>L)-IfaSGhtJ^*spLY_pXYQb!4*W&)A@romEBsKVxyc$J9 zyW1kQ!`(ai=tbGjj{YgT9+((CI*1CtjUdY~7=oc@ncjHMH_)f0vR^@?IAs^n7-(pE zKx%OM_bU4A$F2e!gZ~T^$dAKcNBDffCopk2`AoA@IhpZ~_XR6_qYJ@WecpY(ezx|E zN?PytJIT>6?U7cCm|R+l0B3q2V{aPsxYh^fE``cIo7B9+k|(Nmlj*XxHf1~HJYA~t z8$x=}?A-iD*S-rX9g7c>SjR$dyNB9eZFnSyF|rX`O{_qO)7mU&=$Q@LDW zntMlowzm@IRXJ0y*Z4U1Bw}G($l4Jez$DhS6Oir&VpGoSiSNH&iu$1WAEC~eN16isMJc3};n#I*NPXPO}r^zz%~5h*(v3$L&uYok>J+Hiza?zCR;vlHkMc_bYF-QfBS|8xI3*-xZq_1NW9xoF77Gic(j^sKeDNr;-8G6Rrax`h|{zp&Y!f-BPtiQ@a`84?<$z@$^uTC zqOHd#2~~Tku~L_OYU~>C#bKOb|Ifw)=ARkonM-?SpMcXI@hmy#WbDv zglOWy{6}Kj?z-#UYjtGMpBv1&!%pRBp$Ot`4*A;!AXxNV1t(|;gUG0hR#kOTO6INo zuSj}2(bABIZ-N3`T&vy15=R`eGSoXXGIer_h7j|-zG4-4jCAE4=8oid;gP(xx;=-c z0cykPy@S$TnHKm<#pVW;;*WNWBJ6z zSATq(BZ^@Q#Pf-5PP%u6hxn+xZw~uU<*7Cx9sVDzYOe<qsW8@%pcSSx%t z{RtQZ9~++kCY)%LUU@rVx9jX6rJl6R&E|}F`-*s90hJ7GvLL1diz2Z~8(8ekl{yW_ zPeF&<)1(JmAXR7K!`V|d{maw8sUKY5SAVpk>3AAqc-}!IhVeZGnv?cmDz*%Ao`&fI z{il#<;%S8Jx!e=3Xw1p<>!|2xuZQ&$cb2vj{)@xQvt7?tw7r{}FWB(61QJJ z3cgY~oE{r#Aq}&Qa$sZ|&I1gDkNwn)0e2G36~dag6Hr&F{#SMD9I;LYn>N-|1;?z{&|A~g9mY)+NNYl>bgdCEU^ z6UbfN{HwwuYT|&xVbUqTA`@h6Thi7xt=)BD7sGr7E8fwmfKl(yhUF4~&~;M8ga%(9 zTwzW4z9%nQFt~bhQj1Qr_J|!A`da~0rroWij)xg(#A}>7ZBd$)k$>-?*I3Liy8pe1 zxjzd_U@cjl)YK?v@&X4OYS2@E%<-53t%J<@;$PcMW3Pp75Dvud*!8cpH@ z`ea%0nk97OR{-FDl_l2fMjYec49+>0V3*c;(B>8L>zarAp~oM-8RC=UbvowzJB*?u z(11wTU`&iHr@LSQhBM#^O~*LK)zJ~TR~Zf)`-P+9&_e37rG$!F2EN{Q426@!JuKpV zjjAVJ7u(;`agPRU8ktG)sjQ100U!XkEWEhz6ic(ID+UI346b{<#% zLUC7ycOLe~fd#ceu+K+MU~#1zSuc2?kLC1%!Z-o%AolCyH^9F4?t^#X3FPDg4VqOE z>BAjUwQ6g}0Jb`-rR`cRD1$kx{{qduUV#zTTt9_&z1hjlX+l!GCR_&AO9t){3dPXA zKe0vJpBEIeu0y<*Z_4`13U7xz(nd98Q?jBzKC~Y}fbga^ftV_can4S?5Mq#^PjXU# zy`u1A3oWYuPg~6A2}j53Dn8nHWXo#JWY^IFfPEgjuLa>y^AjWn709Q7=hGK5eP*WL zkTYWwq=9*6N=$xf?>*{NHYAZ*a~lJJGo#i9Pt^_dsl%vrl7E}=~TXB9KTjq50K52_X=}Py5V({d`Oypk8(!5 zkZ1utKsoUCm<|vc9`jWE$BZ5qFzWn|sQwmj8z2NOHn+Ez*;o=AuEkW9&=s0EEVRMx zvfv=|c%8z$e>&v`oJy0gQcpYqu$lss^9x`QuZ3zo@1JVdjZxS5CtLPS2}Y?!dukKi zX`U&cdPJj~p)<0=nLpNS1-TX1M26agA@|QZZ%VW**cN^M>LcmPN*#O@Kaj(#!N4G! zC6WjdpRJfsSv>tVzVI-wATe@;0xT%xoQ{|{MU3Av2~9IHSk}f0*{6K6HT2CC=+X2x zva?}N(DmWQq1XnPLBdUa_5};@1HvKy%Yv?X zze7mSc7)TI8DF7X`?xv)dYz!5ABLv$z-x|7Gyq@CnET%QZ$sKJ%Jmz76*X`Ddk0_P zb8fp{qvjjDtGFT}yigR=pf8nk0HaMQPnUUgDZAOQGhI*QOU_euNeMDP%Pa8LkNk$V z3qpF_rg9q9ugw;9XV|u@_QU1X9~K$&#>lA|gIyVfPInW;(mxuDe-KFAU}+$lHPzHv z_neiPx5qu?j3NTG?;Jwo-AnP&q>Jw_sI6Fog;V7u5i)&tEWFNwSjHIiq$3KDdmoHL zqThSK{#Plk$*#|}%>5J^pAG<<^nI&;&;YQ`Lw=zk3f^wbry~BQhT3$ZTx#M_6g#iB z0-Hz4D3acmlP5eNy-tc!#las}(M(f!b3X)~xCda!OUd2ShdDd{Fc3gdDgHUcX9H3u zPxe5Z(@=61#Zn{2(&rQlN1}4v&lKm2?D^zcsQRJ9mh8L9l(*{l4eII&?tuFSbTUL3 z92ECuSExDwPO2oQ($jZqFe|mlq<_UV;Q#vJC(HY?amo!uZ#)mlK9nNv^w8bkAU#|> z7^Y#enaY$ATv+{~YnekS*sb+Wm6titPcCVT&^oJ-c2bXycg|Y2*4strba5&%Y9|GT zKB3QyIZ_JR8)L3to&FPgSf8k8-GBX23fjF|FO5)SB9wRk;jUd%XmE1ZETFFePtyw_ z4U8lH2;p6F_j3;XRETCDaG{as5I*MDM1=-tNX2UNDm7uXr$2Gdpu=_8N}pYR?AbHF zV@?DoNN9tt6h!Q4?xB6ib6R&hJd*s;podK>+j{f0pv#2A=D_8>E!f4!#xPFvQsD0R z`eHXZuG#f#jPd*%o9G+QoAuFJy_-Kg3M&q}NqknJo6-J_usN0X%4{}CKkwxijo{13 zI8aoAR9)>FU<`3{r=UVMzMQ#FHSf|ai#kTk~_&`xNqTPN|PWjDP`uK0+4 zX%A2N^dU*<`n)a23T*W`$dmLt5ieGC{QdoP5C@DnF3fC(f5S(j3grA24pPtjwB#7W zw7Tq#sz4ok5@1eWTZhlg+ zd23UW8x0*D_)!2zN2e|d)L6`zbB!zizpJ3kZbf>~RM>^!L5_C_iN4(yPPF~qI>1h^ z4cYOIR9N#BBZvO)m(U6@3E&xkqU-qwyV#|^Q|Z5CfGG=FHc&!d$*-H%B&GQ%;a>=bR? zRYjH5fC6HgK+~T*V8SomUl&7hM_OIkHv~iB7Ts!1%Kfo|4Hu9uzu}@*oJf=>VOQ5H z-K%Xw6cqvJvZsqI2}@NKO`$EyBVbX}DQ4Jm;2Yy~y4>{A5|K&Gf_pCW{Wxl30)@~! zj|Ba@^cR1nuJC-VMY=nZq!5dcikzcv;$So^lz0Rk1s$$YpAsC~AgzH5e+ra*Pt*-` zHXA{6f%{T!pb@)A8L7`|?`}hR$F(Q2g`u;9z-4>mb9$8Z@J)CVN%8*p(qqRuf;LHt zQojHJrLBQ%86x+rSIZ9Kj&d6IQvvU!8mEZ~70nQO;`6rm`p%&|qt(2-NH}43d}u_M zIpj79UA#ErhNdS;4U7YZFHOdGnw;}bxh3==OCuT)Gh~*#hX48m*b6*()M=|VQW6X8ezO!+*>DU%MqMOz z|A}J(^WiAj!Cma**A-hg&)%gU^-c`MG8yce(G42aU&OfLA{*F=4%}MK+j!f`wYYP2 zdWubJ+vn|fdCY?Br6{*)cpGoWv2usA?+@}I@~7p0TlW3um9u8tk-u@ zq~3A?;`{JqTyZ}mozcnC`W42>Isc&Q7x@={#|?fupZgoe=0Y~&Jsn60^f>_9|9tfP zB($dZd})Ge+l1jl9#mW`{jf84^7Up2m;dQza|i%=->{IakI7LajEQi^EU?K6QO z{-g(|ZC1eyTm}wUvm$|%^A5b-glTQzDidlL0>toqP8O>4obLrZV1Z3YaABHehavXU zDaP|#-&=g&u*&Dv6N-%e9@U&EnVEts$yzyhKwtU8Vm(p33z!x2m@L}T-@rFMJ)EEd z-vmP-usiY%krf%0rZUXy5^UxX4E%)H5X3TNoatb`Z(~7SG@|W-*zl_PZSBuNL+s-> z*1CcePiD4Fns!f(pqcQRDcMMCOxY*!Q50m6u_VjzndZ-HV!)^@OZr9 zb|b#nK@$D*-Ci=sMp7?(e-COge*?U_I*PbruDf^s_J`7xScYsVy2^tp9%6uvIM!&cp_`CNqg>f8yKaJ;H z)ylkcl$iyh^&)}AhRZ71XFhZjX8qPilmD>6*EXJMPwJ4DvKBbb>*`GKDh%$u+9SR5 z!}Zi7I+pA%68X^=@QE7Vna5Q@l0IRs`}HK!-D~OI|0xXxUR3h#+X)()+cNekf>=FY z?eF3pk8oneKVr4nuN@hz4Xk&A+VRNe7Q$3ZV1V2P4nS>KnOE6>55&ii%xIRYI&7bd zo9sPkZD&32lb&r?dZB4lMr~|tJ6vwbUAmZc2AHAE`nj`>*@#M1y(~dMRE|}T-e0+S2_`i*`qi0tIw@=8@o;8yGxvOFU<`P0 z^Y}h_m90Ge>7(?Y83r6JCUSLpkh+ z>tTRt;HR#OtPep2RI@G9921}g8jZXBe4H%m^a&is;NAC-`Psc<*^PKrOi7-G+W=x0s&7B*s1Wu<%X z3>k0_)1VK9pw9mcVQgVuw(ha^v;7~R&}hikIa9;V&3+%AZ!@^k(#=Yl}k-D zvi6~wh@1qmnCfdXwQ_y9wX!6eVIPuKV#W_UC&@WxSUL|-7t!RoZhSU8)JdwUrpf_g z%K!XuQJpMF&R%c5;NPD$kC()ho=%^q>Rq zz8T4F(94$GlBpwIBY!kL>GvsI8L_*7h#K(3`KEt`ph;fY_E+1l9g;Pg!r!=j`Chm& z&7QZV31Z&y#IW4mdOpNp{S#W-;yE>ya5M z(lMG5zqrZ`2e^coHi)8TyQVfkeLhJQD04RF3YG?bCHVCY{O(7AZvXdf4_j3mRZ&C+ ze~-3`se08N%#e|Q^c`x2x}*Xt#cCrMTpCNWUnyEU z3|u?4weWh7&R#fo{lYdcLjt$c)_px?r8Mq}km69xQ`^qwx6#6~G3fc0JC{yeiw@xl z&}CCfN=`!O+9COK{&E}7Jm(9+YMUjl?NWnB`lmX3$>(*Jdaw(pD!V&%Iu6G=ma2@Gzf!0gqxVJhW&#oPm)dk_lneB}~ zppO{*uz3A|HoVxNFq96jkrZ#a)M2d*3ChtI>qxrzXX6zJ?zh7-J;(Wkggk^R2Ywu{# zQ197;|2k;*bly0667FEnN2T~Z#a)FwtJ!;dY!0E)bB%{4 zod#OvC}uNakZ$|r=Y=Lzrm92}VozJ2ckAl86JyB=OC-eCyF^v~?=E1IJW!6{Vx!(b zxvgfxR~8oNc0zGQ=wlphhBNUEx?!RT(YO^jm2t%qi%U`oN8^J4kI>Y@@%Z%3{bE&Q zCWx9RQdi0rgRw(*JSpsZ2I6t-wEAT$Q{r*wg%Joxn7E;r%5;nN-nJ7)TCo>&Qy#DG zhgy30tbVXPbE_V&d}SMIP9di(!FjZ^)w4Y@&8%D4wURGAYraZ zPOG~YZ>zU7GNZk}7y$vN`k*r?TbWrTD5SX90d)OW5-`+Okq93DaCtbd zitx=tX8{5}?It&#mj(i^P({LEw4Yx^Qw*SpmC1)W<} ztIce%1vpQ|vh7<{HdUaAt4X;IDkM=~N?pH;X4Y?f3kFXLf+wnBg1T_dZ;MmBzv6xP zqg)(&bX@ly_~-RIby>C%{%h+4J?Fm9jQRMV0K!daqq1N4qeXvyi<|DA2UbpbRkmMF z$s+7MNxldJ4Fdi{1*#b5Hxuj?~6Y zC05M4205XDt1H}JznmPZTx+oCu}kykrvqSVs=t|^&|>D(oV4h8@>%GkE2p3ATXjNE zb5lqZRlpHs?>3^b|8|GFqsiNccgDTo^9ikC(a_nh(-1&uk3Ty*Ll#Ik&l=lFW<|_3 zeVEw5X5$s~8CP3-i`QQ}8eCYi-2`z@tKpTIQ5A=9QiXER#<0a1aq9WlQy+!O ztEZM!|CX>wz}V`c(8s_Sv7BVnKfC<9d$d!AmwEDm>z3|)dO3Ze;aGA70hf`u^@H-8 zc^Cgx4Sru&!qq4e8>jJ$4etOh6)}&&AH0=6S!inwdMfMcdDE(>X{eQ$@jnU*`me8J z$^ofBWtIA+H4Z5G-4kA$HLKCi`DbBae$N1Y@9X>XXkZp3Urvo(9L9M#tM-YHuMqHB zw@m$m=n4y9n4hjp64DDc1CtbJh=!#{U%K|dgwAlj+hm1Wj|9?_<)%1!b!cwLr;3^Z zbSx$pIj~WTJ<*eta`k^iGh5WOFt=%^CMAU%pSKuF-yBL+OLD%H&~1xg#i>wvEWgr7 ztNH_bhX8-NXB<5$lb9-7r)?6aTI+rhT%?rJH2?rbmAX;lv#L|yHwnmo;}>E^Cr3e@ zti9-?vJ4t*iQ(aA^E$Fl?t$nwvZ;MQkJ@j){xE3%aKPJJj)&>4ri~ER51(~lIWc2O zC;)cbKmEOb8MVo5j%EDOO~5{l{#MkjhW%(_~!*9f0tRQFn=!q8b^=`Mo|Ky z79Q_rUFJNA)GiVDau+uNCP=isnPGW>a&c}AJN_Xr5U0Y$v1v0Pk!Dn!U$%c3aRBVu z_?3zibAgRmf^zY95yM!HJP-cL63g1kcV}PuTvlR^ySCxY+VCrdva$}C6T%HRq@g)* zrM1g$Tye!Q5}XT=6#+q3R@S>7>?QE8CTp}Vn-4KkfrDZqD!5dU+rqo}2lfmON|zij zkV##Y(Fzo>{_;f|Jr9(X?_C_eXnQyxuAD@=iGE3bJO&td|EA5uskq^VneZhgs_J+u z1xW2H3S!O&R!g^>MI2?~UJf*>6se7anNr4Z3CdR5=1Kk;Ra{&?q(;W53;|d4pkk#0 z24cF*!fgGSkAm;~YU_AbO4i{W7KE6#Fe^r{mzu8x`OkW=-OdNWRTdCxz+jp@W2`fi zgja`IW5YzEA8amOk(&k*Ci@1H^hOVfRiKKE%LL9A3Gl}9*R7!70-c%53L$PxHZtzj z1LV8lLk=Uul-}+@n;aSwx(r^?NgS*YwTM}w-xGxhx3NRl7g^8gxcXsj_^|7les`l@ zlU_L}y9hU=2a3CU8}qKXCi*GN2WFc#9*=|j&dY!6|G@#JB}1+|$z6%dcz64BBZ^T? zoXZtg$o}@9Lfg5`y1uj>|LH~kULjzcb$AsIOTVs9ftYHVj>m6bICGsAv3pN{h0z;W zCz9<%$C)5AgR8dvD{iHHe>us_80{*HLLQA`^w&(#57lya7-*JRzUD~LoWgMEOgk#r z%pp}9f=HU9N)K>1)@(?E^S6IWY~C~5xpi=W0S|-<^C{m zMKZK&T#gECmg>D1p->hF*@oA5X$|ovgjIWP${ESYp|Z=48{|8D6E9<%VbHIQO>TUt z-aB-G<@Wgp{x?wy1C9LaZ%13A74|Ts=>I3P^e@uWBTk`B9^vaPoam)4q;)iQC${Aqze!VE(%&dMUD-srK)fr`dW}+Y(4t$&eUth zUs_5<=DI`VB!7qUh)LZ}4ZVONp%9WEE9gHan4Fd%)$)?VsZo z`cT+zN&}&U=i_mIU}ZLF{&AdXixs9@gt&oO%LJ2H(rW^zR4MoMt6l}~(A-3xB}`1t zo#oKZE;2tDT|>=Wi-o!4aNwaHj zGS^WqhE3~vI`9})@y!w%XS~3(eO=jpXF29zYEYWPg$`76PjtTE(`utCZ^8_-;}$j3 zsTSdKbs~SVWl>mNQ$`?%O37Dx4!?b5tvNGwe76909$5r3ZHWVafvQ96r`a!OA-u}ni1UHQP^-SqJWSZM8Y}SONuE8?53sdaQV;C|6_Nh_0hSt<{GKX`nddp-WAFQIjZXs6$s2O>@Mv!Y3K>=N zsJ6h!fesEYyu&$Tffx5MgoBh4_r>ZOI5L7S7IXAyX7YLKF7<`tISBGdIKvaT3Mt5M za4!kkRl2rwu+NIbuyhg+5KNTFjEnP=f|07(HSO)q@&IHVMjZ zDhMzC#YoLf8}!~AFk_3Tj|*xC@s(3zA)y+SkQ-~&>SMVRVRj)VTP@IUf$bl9-VroQ zaN{EBXlPeDWGC2gvXE7oFE1q&{tcmxC!Rh;m&*{UksNNEkiKvxdMyGKl{&uwaP@Rbrkm&ZPPB-0{p8|RQm>;L5rK%n>B?Y!kwnB;t&q1aDO*emFzV0 zLZka|n{k7=^z#6A$Wo;GQJ4lw+ZYu_)41X|g&y}>QA9iq$bpt3iFzur8v0yE5IiYH0$?WVJP9OZBM>$We^Kc)@QPsp5xC z3RIby7><5&@Vj;gqdEU$MbjIr@x@9f^PJBDxi&Jy{-dCKU{a4Mh7@bsbpS1L$jh=^ z<3FS3Q{G^4HNcGkgD4Y!>wW)Aa%ZFE&k9^IZN}ilA}u(*k5L>#PG4GLUSVcs9XtKAZ?a&at0DzuG64D z=ha(vGrKewf=0wm?yqq4!C`LN(Bk#SBwdbC__p?gXL;= zLGEYiK-;fVeB^hih7a$MO)%navGh7nR0C#pDkgW!xxXIpiPX{E#qgIA3;8SqwtHR3 z+oRl2{?D#LsREosF|1GY$E*N#{x0U$CQSTJ!>(%Yy^3nQu_(MC1?bG)-fs{v_FvC5 zstAiG$c40fYbw!RjHv4}@2M4UM20tfbI5>u*rv%RKL4glhx3}l>CSaCeVw4+^FQYjHN`U?%|D3#$fX}L z+SjoDxh`g@U!hzv^6`cfaLq6t1|(o0-&I!p6N|8@OOf18xy22){g_H(-7#k;YV1Z zPyAxD__gSD`#Ff_X(cQF^!bL{;-TY-jos;<^oc(pgJsd}!4Gz7e>&HO@*S-jBOVFA z4>qNr zMHg4n@4Zr~u6LrxL#jn^n`Zj2tq}yjEW~f~gzoZgKK8dc@qQk6{Zi5xnoVZN38soI zs|>V8 zcLncr0GuU?_D#}r+KgFY_X5{4oNWcu5T>@{7~7DGmqZOt+sR+^F{O+O(tl4+@CzhE z6W;ZEK_!6{SPv43Y6?%B6|!Et882}WRZ+spHs;mdv9q*YDi>>)N7Z%U-HcLFszDk_ zJO@m}g0QO0N#gF5GlGgmN?ID00O%`Q(3uWZbaf{Ua1$u*1KW@WVqO(kw2Sk9DJh`? zMKt~)ORM2&3covyu}HN!L^g}9oR9CNTm0bMx4_?fHXU9fb|k^1@H>3?on`aX3M4?p z@aaR0N>l2Q;<*EMS4L2zTKmbF1BC*CnW%dEmoM|GYP1R;avwu7vl))opPu+LeMfrx zuBa`<;UBbLt=JBSXPbC5gZTd@2mihv8nAXb4KlkwUB0leCb2h6qeq>J)YjnEqv@J& z3~@@rNx#G4aiZ_(2YaPA{czvcTpn{Qj_38h8v%6~^&`XvUM&>Q9X4+^4zqoogw~2S z{ELG!OgL+Lhg=1Ciok$ezXEbW&;86%P0#PQ)vNyzB}C!?(epPis9s*|d@-yCqucqO z_?%&eo~T&`3Pwc->0mxuM9=g$dYEB0X~Z;ASaI?sWk$UC$(T~5H9R$;qTdmqA|N4> zP`N(Js8{k8)|6aCphnF*hDsKu-|4b%^Ofm5e2H=nIb`t&@I*NM$Six{S=eJFnCBvn zX}7L-e!(H5)bNLMWrRyg_i3|qu#^TzdI;bh4sEk}y9hDM1Ka9~!<_Zh(>HiOI;rsD z5D#Dg$tX+I_ChQCXH-ofX^dwt*)34kzZMvS%09iOacnyus^C>IW}nHO2wJ5GXLGe| z40u|I9)IPHV378yT-oA1;Ocb!c5)T2&^tPc0@`h+=M*SVn5#`crBVo%jIA8haf>uYEK_x)jAWR132AwEeq&;xrkv(_G9^=hhZ%ORXDPXi;TF5tf8EOHK*lvrDWG+X5Hbz=E3fK}yeE zCZCNE_GX;me7^-)bx)d!S%`pv4uWKLZ3Fw11ywNI%npl8W1M&3X-u=ga_7SG?kXvM{$oYJ^YP<+molR2BTl} z!Gw12a7+RSjT;8m%=+td8|Sb39&)O@j@63Qfnd3JfHCW*WP;-E2;HLhN_NG2hrjkV zlo11l@5JfjJ0n$!7bOSvqYLe=xFO}{ymNWirMLFrx-6+la}WO>9io5$tJ8!^FI+vn zj7t(z#)n!U%WAxHgEi^%S_CTK!`>G|5t94Rvn>_&hBHQvJZ-eswDOfLKi0exVM>f_ z(%tEwnqAL6T02JUL`_O& zBRpjeyH2tp(I1lFzY8acNAR5$QMgeS=oK`O68NtgfMm9n)G-V3^x&QzB#8*rbO!kLcWe$f&{pEaudpvX80H0(w*vwEBzVZ0Gj7%Hp4TIANvDkZdKDD zIuT|)-eE7!$U=wb)vp(L*TZ?Uzm}9!4# zR@a1`Roc_#Uo}n42yI{i>z{oVOsmbSPQ1d zStR~k(2-YxY;FQdYWRqU>p{Q3q37qlTXnvTs>5hMQ-BCy)W^Lc`LwLVu1 zv7pJyX*L7{fQC9lox<&KokT_7SX?a5hsw*Gcne; zc3J#a8bP%G^kx3`EoV|+wlPcF598`hBoc{ZzY`W&$DX$lGNXByEW17jxILWFY+RNe z#>i2BNvLb8rQ5n{zON9JRvW)zJa)%(JU1$uOQQe_J&=pwJkkRtm+R6P+g zA?eSdK{fStvV8T_e*c_+#NFtv!P9xtWL@BSaDg%sHnuU4UK~H)v?G!U z8==a!Thd__-L4tB?V7rZ5v?!Ml%)}1g$%#{^V;&hmKHf0z*Q9mRi+^1sO!gdCRL9} zNLO>50`f!y=o8(CzM}Y$>Mfgbfc;SuM zrMGs}07VCsmuVU}_VJ^25r@m8;ki7w8W4^;wJC4r%w6#UM`^%R1@R!HB?aW6tE9HN z0}S5Q`o-#p)@GUNs{BRLS#$z({*fBGK0k+%W{I3B7sMbE);$|HdE#ro zH7yo5wF_CeZh_K+-Js3;RK3xH>*N2Hed!5@afvAj196wZxttdZ531lxTDg+8#d|etbV;4Ug1H zZ>)1D_4j4Z-dsocbT%sl>vpeE=We0NgpGHkp|4SK*s!3hj+K%q-K5J!11_8@kMAk? z+>g+pTk-34=`6kbzuflHAT_(ryFTvrY6`?RQAkisaqb6VmI;0#w~JBk|2YPo@|tZN z1g@B?vKy`m{~w~xI;yJm`})!i(j}eJ(jXz--Q67$2kGuE0qO4UknXNSNq0)8l<(%= z`~AIRFdRew@*LKF_IlQu^D`GgnoSWXL??05)bE3tr2iO2>2?6rakQ<@Cz9U%iS+89 zoz{&JK-62V@(2IYR!f+~>qGUGrnt$3%_1sAJJEvFRABjANDasn+c+~v$XTIajN(N* z-A>`5Fq7&6BPmQuTJwj$RqcVQ2?=Vr8*SX&@PIh!fx|NrDKO-cBmi=HRQH0Vhx;X|u%j$M^D zLOFVH4}i(JkJVcYKj(3bppRaYjYpRk-S!S+hYfb|J5i%E;{T$g#(o^lZS*l-R&=DG z5U&k#3T@}cj?=hNQ4J=9x<|tmX}zjF_TsKIM5z4~lnEX)Cv?_j&NGpO?^DcaMU+RI zSE`^}sw3+Sk;AFuAC$%K70b0-qZ3-vZ*ssf64g$OIMA=D_2HjhG~4-F5?WV-aB{N{ z2q(z>w0-`PRglJvIs3>kWJj4&k9_2+PaaRp|9F_+nEkv<6Y--4c-I8Y_m{C7u8A(s zLvZQ~jl%!4$s!$BET6X>a%Bbegn;Ow+ENt(6QtJOQE~R*#f91PqsHHW-0Nb;t!J$_ z3Z1vNcdeB*nWkz7=m;am*9%YH4l;S95MrD=ca+ryuSje=17{<>36{BG2LmqH82#ub zT4kJPzf--MKD7Y43<&gds;Q9DES2?+C?h?G#UY(7}pJNG@@2ikPDN2FC7-* z!(qM&x63g*f)mri*QFrAhd|%p)0O5OfTwW2&DIC0Z9<)00s(l83)RbHb z*RpWov&)?gM9QVJww-h!;$kxSA$ifJS}5f01FkXOkIdWmmj@?iOv7wV_6@J@T49Y z<_Hyqx6&pH--Z{xyo=<4Yr}9zeKCLUVm< zbp5&g>hSvz{l?`;@&^ub613-h(9WZx3yE%HfS4DUGgm^ONL*oOCl*_T z4>DPzwFwwBuq##qNvvK7eYmj{plj(4^$3Zbt6}XSmFX~L78O{|0vBy{iCRryL-B;_ z@#JwiaFA^<%|3X-@BIkM@KIxs^-pZf^18xrzbM3wlcjV#nl+ofWQWc{LiLXfp~<&} z5o&Rkr75UEu#|WLiS?izofXN#Pek6-%OJ3>T6E6Tu}`%(O~bsNuSGY>`f}MaJ*clF zwC?$Ef$f&qx=@yY_v9JRy4UptR13_-Mknh*LrfML;IFFG`m3xtEJ+YDKjMFZqu zy??lV{h=Z2yef;PWfGDNN0)m3KE@_Bql)b&?p6F}h-DYpZ&ChUaHRP$L(8!-AdohZlpgpb*T7ye5$V z&C5iz`57BI^Ae~$GWii>GUmid^3(>cU8>q~u}1a5IaP=qOchI2njK|4mz1DZk9V>C zO{UavIx=zGpAj6B7{5NX9@~pbzF}@(KX-BNRSjF>Frl=8nk-hhoX6h(c@0_ zPjT51^n(=yv3)sljx_O_7#@*fvlTr-&KOzeu0B^IG_aLZfE%*cE+qO3DARf1OND{U@@O;CA9{-d7XiWWV5w4M;~rqF)abnTeJ1(JKwrC8-(=Rt?|J09 zt8joku6^a&#|!m>rA+v}hld%Z(SKb@6-=z_xy0oMdd~LkR~JU_a(HyxgzsXlJC^<8Z4 z77EJkckR&kG2AJ76N&@Js|R%3<*Rp{56?(!A=FGeu7{hRZ~RvlUQUb@Izv^tSc%GH zX;dau+#Eu{+$TlJfSs8N8~%xMvJiZ+Mi9}+XI;qm>?fgOF8Leg1IC@6wgy}77ZD2C zoc$8Yb*l?q>|kRky2|>`sY0c)=Z;oC8jMJeK!||&FJ^QAg9#zw z|8t3YIk)E>@?^#&ti6Jp^1H0>cSw=5m zV6}ta{6#IN4$ETzhl|(GeMDtR25eB+chmg!`}bb)d|MB z$-Xe)H1v3zf7_$NKT)sXbSSn{)1x@f7ku%)Jm`LEax zc06LAwmqo@!bfL!zs^np5J>kYwR|2! z9tlb49m=w|z!*;;`B}x*k}mPRGhi#__B!;A((lLvKonG@pBhvhm)J`mGgZAvDwaG7^5wDlp?#n_4-()Bd)OHhyzJ(V28;(n z59TB{^UaRj7dVA*t5^gCVw7v~imfvRT+(hn%blK`4$Nsn(ZqO%f#^`i9z`$?A9tn( zaB<|bAE8we^A$ma_Zxpnfj9a{OTi$J%@;$=AEBU-nR8D!WQIwvhK;Z&$J1CU4|K^Gm03u-#_C+5trI<3hkOvsv1?4Vn6U^B~?#42n9IIDJ=d|-` zpR2@dWTSAe9y=r8B`?RB=Z$iWVqHCZ-ZKfzW=~`DE-ccD zaH_m%X0kbf&ciNTV5Rf3R)8#^_U6h6Xas1KDTgJucNzZ0y2Q7kAg?DJq7)xdjiT6g zKuoL)%gGrxdzln-;`mEQpmR#^^lc{{43zX6$#Ra10btS97mR82vdCV8&gx;n;<#rP zR&7n2R}Cb~fP&Tezr5NWfTK*ESm{jCvgS7sTRyM7>)}&yQdDMTo0jME$7Nxlh)%!C ztUK+~IsRk79wRQD*zlAbSdsgZ7m=c26t}HG9~_66;!5y(mI<4lYh5x=XvuzDu*Yt^ zlXSvcvbY4z@qzH}q21#}8)Zr`Z_{5+fI($PR02yHA|brU0-WRdIe$W-3#fF8{#J!! zZkIeqy=yfjCMj;#eG@v8{@BlT1ivSnOc|Gbe-}hZG;1y0TltM9-tKobI z?j{_Rc9=TNw*77EF7Z27l-pclM1lSKi;hY4A{ve^zcEHU(3KI0l)m7;OW>`uqL&|~ z!$G=`gx_X`+u6aSd?oG+i4K%3W~IdvzXSr=2J+7@R*?+$@IV>7F0Aq`Ws75oVPwo8WNM32?rq|HC1GGcuV61UOfAyi9)`Ao#yWtAFOc1^fr!CS;><1iz!q z*f1xk(?O{QQ}yk^{K;zgqg<)}bJf1vI`lCTQO`>Q*<=ekz59Lw5H;+T7LiuKb3@Rl zHVs*ND$Ih<7H*bqc3T|uxB$I5GNj(^3w&A;Jt*?PDv9)lk9iiCmSfnQZr!2=c}a2f zr0`y}P?yZECnyg;e#b4|N|SBGrmRSKv2b~>GHAm2RvSA;MXXh~(C&Q3gv)0VYCYh+ zC3PW8MnMdH3iFh}6WwZxU*QltR>w z+I}X3O9XN`ayuNM1ex41rHonPY1*i)^l4Fx%+}SVgfKbc_mX{zUjO0LYKwzdcoytK zh!cp4hVqzBoZofib>b@iPw$F(fAfnr1-~Hik-zi&T(kE#o0SGR^}pA2FHY9fD5J9I z0)ho>9Lf4t)SJ880bz^J$!11?5E*d)@Q2jKE6K(f^#APQ_XAr@kvf#OI9x&!rsj## zVcH#@DUo;p4a74u8|F-IIDEKp+c%toO3g! zPT`-Pz&f5M7jV0OCoV1lWI*TLx8oHXSeav>@m(n101k6{UFBNEVJ>ikG*#ixVrJ#| z$SVCCY`yBCQ?gtxp_7Rj9xL5+kswN-HlghXi~nH_+ak}*oD_0xc_jhqEn`Hc8J2Ah9dkJCmP3EpjOKdX{|S7REl9wmk?_g&e4Sr(D6hGurq$(R|9<&^ zbTwk{?GGj;lDoURg*;l2HUf>1?s4T&iG4D;XaQkc+cdB4RQ=GPcs;OtKQdjGqfSuE z1CS@T^-10LZaNaWF7hfIXGqrqHIynz@<{lDy(xvu;A$M{-tB@$QF3%3jXM}lvlfCj z(f&~Y%krj;K(5+T3zpf4cRr#a$)f{Djef6Wrlj1~uS~V9WMNb>DXxj%PH;A8$<`v3 zbM^>z=^NycY%AJ`Ty z%wW!6aK<siCkXDH3386KO!R@DK9e7%vwnPmr%z0(G0#C z?S(O9z<36)js5#pLZVFYYm;7^oZbKLT34N6D~?zLH?|t+d5?6gm$3<}QNu2!--;A^ zYr)}hsg@x?I~zlNN0d%%s%97gLUb+!T?ZE-kQPJ3x;OoJ-5(M*ug7sn4IM0(zCTQac;4oJj>V^*{` zKKv|Fl_%6r8}s&u@klfG9j@b_Gn>MN(|C$NL$ZsqbN0 z1npy4p7G7G8b(GndE&b^wlbj&r4Q(XW*=%bGa`Y@6QlWK-eWmn5BG>>vi;q|Iw20I z{RB7bydR=g%bMcCd}UxYuU@=0?C(bkkqy^x_NM zhBKC$N{PY;A#k*t_WK9GU%SX5FhHG6tK1T_DSX(#baoAHD}wVCbHs2#%1V}`Hq@pj zto*KAE6fPL1OqQtZ{_Yu9WJB!VI8%RfJQrMx@57cP`fpn8zrKNIVDVlH7Q1h&%8df zAXHOw#yQJ8RlVY<0d0Cm$i84^obRB&&YuH^c&ViKI$cVm0)75?0=hz-r)RRl-xkh} zjo4!GO3U%6N88WU_hd8McdxHsr}JhK0jKA+;pR}1t=u7U0s`ps15Mj-(>a`oM)-^GwRFO+wiA^ zuj_S|7Zhn22`3_7%ycgxA86w4eW~tsSvnW9clgqC?g`Uw*xP zcoBTi&}{xjIm zFSe36%v(^JZNCQ=t%Pt6ky`RP?~Ch$y4v;ZQthW~K=%ZMwW?}=z^!(vD=|lR8;l`` zPs?1M2_BeIhNEbQ9)siEoNej?L1w~Z9~2LC<*OG7jd$OxGd9`b>NbBmIgkB|>X2f^ z)_hj@LDXR=KWSS7PSjGgJJ@wP=&X&9mC@+pUIxu)OY9g|SX@?_irO zHQ@;<*L9|oR&Qem;-jZEOY}aPOfJ?qUbS}3xapyD0d-o3=(UeWUQn!ni_}wXO`%}- zM7MeM%$U8GPV-2B0mA!P_Tcq=t{syxzresD3ucwC+|s4G;uaRg*;5AtGp=k4{aG~gK#6@0yn zWwuH43GNrhKrQVs7tO1c%G1)wXyd@;RGB~Q@Vzakqb5+(M1b+vh?H2X!pG~sJ6)L; z8*4J$a(#L9=N2kox9q2IR7)!=;XRfI2xd|lPd8wO^rp8qk{XPA+$HG!vwT&?&PZFF zVYN@z*TVA>|IO_taP7LzIxF;EfX3lSc{QM`Yh~c(a;x!3r=oJXiO8l51krGzbvvtb z$>m$#DZH0*riV3tTc4fLu2D=zn$b>a~f72i$Wds(@)tms{S{Ap$`DA z<$E!!W$uVOJutse2!z=+yQF~8ZOqfGOA2>A~-G$_`y{#f*%!bYP;f`t$hOdhO zSUbLOR?2PoK3;8H5OU@n8ydQOmFk*xj#-m&qFSr!52?nod7I~__k?>b(zF}pY2nb` zp{+4CRM5qkQ(sg4D`{}IdgLbN=sEQpi}fe$U9o6P83zwlgA7RSKB>)pnzk_1yPuU= zYuvFqZ*=iF7#+K!3^bs|>fv1PS;!WY- zN#;k_0lxt&jX5cko%xtnibkBAFEqPwmaim|%Sr!?)O$}uC*=M<{k`j=P8$C0U`@b| z!KNk`9XvT;SUZ2M8`K%;Q7H|{fRwHMUA8a}j@a#s_eBq!c|yVR)=WJEMj5=J6&Z*E zJ%vS4t#Bb#e(3lW@Bme<==)?&XaY(uw_Np7l=_dOoAtU~#1aS2dGo@itoVF)OC~>l z{OAvDB%mvlnk!@a9V7*5ikNC^zRqgfYiyLj%zX%3Y*mAba>am6hk=c=MX70m4hj$HS)z=o>NC>}mhEf7ZG#9~(u)KjXQ zivCJd77}6I`^&qoZ>8Z+ySAgwdKy~-?1V)RE@u*KSqBsbv;gnQz*DdEml`pP9g7y1cxq?x44TF!$UMP(dz{RuA|!8|+ezqdh^c@+5r*|(#Xek0^H zF8R?GBuy!Hy~fvzb0wkD>k`(P2wgK?U8>q52H9d8fuC(iioH3+dNr#H4D_-`yw~|HtDwBh|;E zmXw&Nv6Mbm$&f89MM65Z&3S{bZ;71m+?1M(CT$sE+$Rk0)k&K39y;>MCuyTb4e!4q_LSUWwy|}|(;YNVKiI`r4O3bIpgoT*jV9P+;Ti)YJczL)wV2GYDhCuxH zfknJ(SE;N;@<~8ElzD5enC30hG3NKPQj6}O!&;lm;n~r^g;`*bDVoqBm8{B06OGH; zh#eC6D1eQu4|mwW>r(6+4OWS-=2qk>L<(s}qMu6##ApBW^hWD}Te7vAHMlMg(k6k{$XQMOTSRrJBNlH-WT>O2a^p zsb0MT%jsL|Kjx@sTA$j2w!XNCONCLv1rqmiFQ2(k1CwwKTF)ImmFKE| zowlf)`u^UQ+lA?co1c3;XtGrOrh^h=;ie;+@(3q6vwg=5-~DIp%-9}l;rhe~MNuJn zBF8lAJ16|ndfY!rH*%>pc=I_ss=}F{46Pde7O??+`};r7jWTf!8|odTKY|?e5LJS0 zI~6s@2D=J{J+uPvexc9K4T^on1ilq@`ui(l{77rhNa)I)OzOTD4F!yuv}bSLjf+4 z22nG_*qnQ217=Z=Q?SvpW_ZIWTw4_;jZUL-WlIq7YulL`)(+0KDG)0uP$-C#vM~JS z(o=^iSu`t2mFPG-&pvu{TGjn1#hX|lLA8o?qvcLhiwV1o;>U=oE-~8MwujTPGw;zb zHQ(3rJ68ue$NEM*7j~ts9=375_g|d6sn(H3h>>djubab-*VBy%^S29ph4$Gk8N~mh z&Ch57hIEem>{}jNSkh|S=auGg4vDVLUOz3>JojEDGEMMx9>5I33H}X z2u%y`CJB+(iwWy9>*W|iSpP3u8^}csVnIey3NrF&2}eP{6&EqGk=6BOYU}(3kgL** z6|&`I9_L5>9|y{kY6z6@##s#=1(#j)+WxS}MT4s>Hx#j#X~>b%Ayqypv^U2`j@$b42mKj4y=hEGjZZ*54}p*ks`` z+kwCy>qbPr=07c}Rs9>~WkGDE>S;xNtUS4;6r37`;E$Avt~7uFq5zY(tzJe($n^z2 zT3gaUcBP*s0>$OqU{qqmv0WkEuOOF8ItQ!n-jL2ccemptQYNvInKpi!h-l4V@=7o| z^Ynyb>Gve%)&fT7TF4yK`r4FiNyImcOASFhYV5yjZI;NbEh7qKg3R2F!|j6zfR1M6 zKQQ-AQgkRBlO|6g#wt}=~6Al!^Yocu$kD*n2%{U()>}$WAM)OFTQWT^C?D? zkg~}W+2hX+!=(ozwx3Yh*&z5qj$6Nn9@f6{&a8po81GtR*B0Y@PLA!q69`h><%Po4 zOCpd7AB_|K+sVV1hi7GFecZTb29g_@RutJ+Qzv%&7UTtnvj)KQ!5!rcxP5_y_^+b zMJuVf_^fO@h_DovU+{@rxD3$dv7d4l8l@}IEO{W>3Qi>Y=!uNxpzqv zDrxk0)2vaM@DRgCAvdTGLsDW!Efox`%Zt}~dU`2;E&&hf!?_ka+uNILo-C8-pYs`- ztcWTro7ZI&9_#bgBd;cL^qeT)a-H5yd7`1)^Bfsqz!h7(rtIEji8#f z{%M9UCeke7CTe+zW7UB~Skv+XSl=RIV|*m-EDgc?aCvg+B%*+VX>e$WM-EBpP<(#7 z#OZk{blBxq%;0rYJ{u z^SL{{wc0?g<0ZR131UfC;Sns_a%&Yt;cdh$4DZBs+ zqHoZt> zc;W%4Az{wk2Rm)7CD9mPa9?UvdT}RmklzP{?H^zsVuJGIyG8h;T{Tr zj`#bQR1GTEHIpG^7H^N60CT}V&r11^pT^yJm>1clWy}7aSZ$ITe*gS?@4QBsMyRC2?F#)gz158N^)kLQ+F)84sCl?4wGZFzh8Y@Dxewc zpMYgQzjYE}@oedh@4@`dQBWmpc<$Nr9f?5DWjG&e<_q3ZO;WNqtWL8%Oyn4!@O^(c zW(~MQsgOOl{VCm79T_94>t?<>zx+DwVQd2_+_^;7z&0#rU()TgIP`xZwLr}WgQag@ zb_8E{gd4T_CAEONTE?TS9Te~Wgxiz0~)qn?)_b0NG2Y^yEP@5A9> zXB17o=@A#}hL?KF79-u5>FYlAWwi|D`7{kR$lV09)#j?OC)ndrD75(`e>e=kpUFW$!TQEf06INF z*TVd_B+~PL{t8@rXj04O6FSdbuXgrJ_8+6dr4~7&Vq&(JBtjh@ca75Y!zVOGL}7uO z7kB4lQuR1q#pC1S1u&hwdY&0k5Kxx)ae_{V<(lC$=r9ktlFGQTo>q(~v~JYZ z-~-&iSKbWkANbsAxH&n$C8?BRVF-9PM+y7zak^`%gSpk{k}gKVF}ZJ#j)qwhX9nfc z=NWaH-sWJAKOY}GE`hw}T;)nyTxQ*{Hr~(qPOo)W>*wnsNs?PY(u`Hn_dGx!oPN?j zTmx}`hSrV^e8hi#TJ{|BW`M(T^$o&vP?CN3QO<)mOa8BOSG3|z&&S12hOJeJ02uVA zvpxP6n-V~}WD&L0xh7(AM35eeKIi!(wRo##rGZRXeKRaH$+Xq!V$$-}8=DXg8DuJn zw8>J!k`)fsu$d$hrR(D8s47;PAnX%?8Sm#bAdKZk`<;5b&WjPC#!7V{t66X z6kU>&CR55LFG}O28MM{k{ri1YdJmpFSn(pWvg9OT-lQ0C-zjB!1w+B%dgsEK)?h;t z?AH_JQoQ+-#;`7=#oNQ5rFn`!3cPawTV+UixOq+dPHG7!hKzjiHfxXx1u-YM!@krJ zQT;GTa@xM`1s!RH#Od-3-HV!A&#nxw|9rs6RQLF5_t(2(rty2N(lYf)bLWKF2KbB^ zjWVp8ncDc9w;b^NG}&cb%Ri1jow^eW|C9_O>+HV?TtYwmuKz*Lvo%@&^*4*;9g z$9|4irOO)`8%x~ptaR?#IAq{*ab#DVck)Czwh3*8<_1?z|v z;7wR`v6G&ks~WBzpso!8f0!9Q=K&NQi8KOaxekzTFsS4Sof<%+w>|6|5^YGxW#13b zDfk+z%dn^=roqjqiI^t9q7*J}60~_#oE1Ky-Bu*lX5W3UQ5E-JBo5F*K?@&~Tn1ko zwee5vZ3xGF7sAr9vTvw4`19ERP%uD^a^{S1FEC;{D@U0y-wO5yGK;nt+H{>aEOY2N z{GXnNX3|YmvT#yxL7A3=ZUaD!S5~+reN7xmWxi@@4~yC%2rLU@!$|qF6k&xH&|;2DT~S>29#~ z$PND5|K|hkikAT5P^zNj1gi0x1D0Hbxu>e*4OoZ)1|mMQMSU1@&2YML?8av2L1zs=CE-eRhsOHTzGWB&Vu4rhLIvFn1z z65n0-%YD8k!zPe?!uYY1iI*2UDq4TwXV)Jp)*}XDK>vBfEFU?rASxV+o619Vvv_S9 zuJWHN2HJ?@64)00q@bX1VPYc*HqyQFPLo``9cGCVi`L9KC@i}ABe8oJRy7S9Z@pHcxcLx{KRSBpu${4m9y<7 zXsdI0#J0OB%aqlf*sqguj`c=O&B$nA)^BOA(*Md}f;1!*k>9}V4d|xehJ@*M&5KYp%;yZl{uMh0JlaLe@CLR$XnUb>5;5cd0Q9r;c3>_l&v@NPI z{A^nhA%iaP3}2<&8suCoI9N;*LoU%v8-C60xz8P5I#ENfHZO%&PeH|Qfvhn`gk4N4 zeX&^Gp}s%tM$4=Bp7hf<;}4iSm`i*ushD+u4L$!Rb#$r4>OCQ+{orz=4X&*xYifTJ zO;fIVPdL)udx!!~6AIyD`F}u{{TZJ}M1C%Vj8bf+>UVdqdKaqRQw~0ZI#ATS51@ zrrU!I?Ck{9l9s%fO_A~tqMvW&=SqSMfx_MbtyzBFg|9Hgo_xK-*qf_`bOHi1-Jx*R zo8zhP)49Hej{zx{V(rxn)=B1N*!)!s*6barhy8$qqjyPhAYA?kB++imn;3ojZUI4E zrfgofUM*igGTXBtwPps{3kj+~*$Q+I8o1BYvu!)hIj0J=mB2|W8{|bz@v-HOsWa;H z@L&w~>SQ_Tuy(=yGkf(cGvMU6RZa}crK4zN@KM2|fpKohE2Z#h<4GA&Ona|dpu)s9 zFKn;(Dfa{h#OC-K5rHPaG%dip;b(?F=w|SBg9kn`0f=TQzEXiQ!eeTMCOa}g8LMLg zn9zxrwFa;ZZv%sJ{C{HXp8x)Onxf^YqMyQDGh&;yaEDX5p!@(a?J0e%9%+pqmOvZ7 z23})3>HK`+?Z(!;@#L_0?CvbqiFRFh-p22|=;7?S-mylpf$=duPMdKw9=ap={!4EA zM49y0-l3Jxtodg?g@{T4r}nIi-G$;a6hegNH-ah%i1gNg5`P-HxQT+TzWenXu^xZ_>uCT& z*wED2vrxH`>uSeLsi@n5Ma$j?n4riKM>cDrrsrk@(+Xg`i_v=Kb}3r|C^eJiO5ymx z$wK)HjkMB$Y6h{ifv+sx2>9;`)i6$Ah%%6Iw5JWZ#It)D0E0kl%D;!+7! zcnBo`5AhLhYN+XS33j|vNJRyVeCG=1(A43`pPFjU#>1Rtdw0>1jr&J78S4TX#@v}# zwXEvvMQTQ^W5+u?BEHxXaIT5hV zM6@pG06UrW>5H03=g26_$6(T9Wc>+C5vYDzZ$rutFxV~;c-9038bJUP<8XGp{HA}0R&KW=(fUWH8{2kc$(nx{KS;YNSxI%^{*5Ee<4(ulYI=?Bf8P|9og&2Qd}SyG ze6{=ELV}w3dmw(!??R|B5Bk zBf<@nq~Lz%ITgtLY(8npk}-;YHligTzS<+<31km1l&6*JuOY*xuNMI; zqK=e&zneW;}FkyOi6;hk~SfZ7@58E2Y*}S~lQVhKp*(;W) z7$;)9$ZTLkKy~bX- zg8}U(;v~H!L5VP{h0u^Qzk5aijX@%4FOE^#Edy!i=qhi8LoWU3RL{5R=g%j)-zM3_ zvx!z5{F(Y^8@%Rpm>XP)Sn zhaYWbZ-e**d3+;_YF9NUB4Qvz&E?QyY7oF=bUnhkA78u+1GCQ zw33-l!fF`kBZj^K0Vy`NPAwb&E_7iqny^?xBIKZujB>OvfrXcqoVM=w0A_frq~`a$ zn8zJ+vEUI|yk2zlrt>(%leKr@=B>&44(>uxOtB|hJTOajYJLkiaA_Ev&pusZR@dzu zHXgw%bkT-uwrX_q`ZnmDvN;f-2m*gg_HBtj@*Gs&fvS`Q*Bq%uMdpINm|{(cv+&9V zW#aYNNkS(ma~_gA@fY3$=dKR+)#lxK*R(lSWPB3RmS4{`8>)_?;4DJ*4z2yEM5xPW z5HO7&+<(uC3@+6%Wm#N>x`7qlQ zU*K{nH&=q3k|?|lq+-K2F`V2=9@KzU$gMbNc@7kkj(Y;SkLU)!u@r@{GcY1d=9g<} zM+?)mNq?!xouW1BQVz7Sb1aOqAN4vPV zkc{m)W!ppri0x;N|E~DDdGy;dRFf}+Kp5Us3*wQqMR`27;AI$!diBM@&H-yl=0Y#0 z^W7}@$<|4Lg_6f^uS+zJsoAR&%uzKiNv`fk6^A8VV zPN&;R5Hc6&QEqent)v^wSM%BwQ*-0?8yg!DO%Js#t@Hdn^HqB5@(q*dnQl-BeE3xy zttQ>Xs@3`ey+&^H%dlnCeq;@F38q)+Qi~aW2FV9wdhfX_trAqDoUbfFq47ERMdzl_ zd`^!xt4k$bbV*4Hcz^C_et)*s$KJIndH;5bIG6XpGW`1}n#VW~#ZW1Jzm{m^jfoD( zj@eFwE+YtN+NX^uA&77@nigiIO@KI%Ckc|B3EmHajgOQTAO{Or` z6xjG4TJgA2A0`_vD36ww7Y8{*5Gr__wm%QOA~Jy7>;oTMu;kC}b9w|+Vj7`e$RfG6 z@1pM-qFEPILK5u#tro>oM_Z!r@;$dVxOhH{BumS6|9e0JpN>!nZL$j(>Q3%o{{bh^ zCfkms5w?p2I+<#<8RHk3SsmS|LjKSRX^M$a*06Y*2Eql+9Ub*|30c?2C&%HFoTS1; zdpjW_m0xc`?^YYNLOstDHmlYie!-7ua2mv4BDz47{}wJaoJ#!)DID>xwgB2mw5*L4NIipI0eWhkVSq*caB2Db z#$iP&D6tC(BgvXdx)z*>oVJ4_YPuh^gj=_fMOJO&8fQwfP9FBzurAou zAboQFS1IFmP`48$v3Dm1f0tFU3Iz$GGkScc?U(o6NhQf&o1vl9a}^~s1iagBBMqKa zbn@EI$0Oi2JU_)-mxT!Df?9PuX>ajTjid|f1YH{79S(}%S34LXJ)7EU%=2NjbvxSs zNQ?e~XeM+gL==Og4v~|LO~=KrnTvbJNQ4NgRLUhXV7BTPW+X>X*^H;Le5ZwqN+cM& zEQ+WuOxGK11&xxg&Bb}7X@|=Z!a{2epO%)EQ`k7LC`BG0M$($DjHpi+opaiy&!WRY zP)QK2`dykO%zoao!8)V(%1Z=il$8BFqu*%3_13+5j`Pm9>cU2B56{IOV_1e+UDzSY zL;L9NJ2P0ad`Zo|2Yf|r2y&yDzYMBnOyB7ct=Vr}seOO3hlUjPg5(3)L~t^GS3hJ= z1W$7`H#JS#ue9xS08*Y!=CV5$drQE&f{wZUBA^=x1^TDU zCB*u-fTGY+Q?ma03RdHPqhj*l9S(qQDi7F$45GwpEu;GJgYJRs2=g-RYu42lNCm|l zMeJN;AJ{KgTapz&NoV6NHA-=MoS+YntV8aSX`>YOo^Jxl7$IZq@*HRbF=FyJ7t3fc zF3E``W-4-$O%0`>$tSzJyT<{>mj_=4nuVB_-8VmWt&!?byZoFIYd5_j!AJC4VXQll zAdzti>54@8hp@Dx2NG_5q&e~5{9rFS{rZLGkY+b)mZGN+D~;th86fN zUG|pZ589dkYkF5;j*DHseT&)dd&plxTG=_U8q&|DjS!w@Zu^jICI(hHnyjs@y-4G* zsiM33bS*_Hs-|YwI;YNBe{)xIL4)RTF-(lTt%RGv$V#bG{hUg>Ym0XbCi`q9M0VZ{ zTDSv`GY(#qAmod{R%jCjs1dRs9;&~TXyM}59#dDqkwC`v^R+v(N4os>OCK>dr3XvY*`OTrm11IAmh@tA;i!Kv-$_9QzB-rIRZ*nzvO*$tXowDEULKO zv;vyh8cl;7Hhz(6ME{2(LfG9pt@qvj3)Co1t;n*n1xB}J@_#j14PmCkc){#;EwCP* zp3xcxjbj0nfwUiKRhJEyHbXDCbYNO2;cO3@n}me39q@@1(;aJgWlGlc>& zDrjFVmB1{N81jT?xRL=7iI^0M4C&MB+H7g9E!EZpMq^Fs@>zVPfS_;!`hQLEj}>T- zFrVGw_;FxX8d94mK{T=q<1R-K!Tjji_j;K{?e zb%0`nor-6irfjN=I3dB5@xdd+?z zIx>8o4q2~oqFPP+l1t*R$XU{aKTe;Za5BHzjs}?=?2O5aNkWTP_&Lpo{0d-c=1aug zoaUKxWrs7bS6>5}Ey`&`W+UBZII*Vk`QESH|39YQI;yI0>mHWwI&?Q4Qlz^NAPv$D z(%sVC4bt7+(jqC{9#UGAMnJm1jrZR7_l?0njKN^QKF@yET64}dCz?Nk!ogN?f+wfzJI7F?Q#;T=NggGt z(fx|*@uw4u$6-~9_AeXL03q?=V*9E0-Q84QP{Kxpo4{_lHJ3e(N^HNM0{gs;YfJKS zEEbJvyAR@j|7>8?gA1-00FoulM%`;+#F3|ew9dz3EgPt&Adt*70ioJ1z70J+7?wzZ zI%nvZm>zNHSdIo0p5ly1&wDWVB0fE^xwQf+Z5`_FChl#hqe{QOS0X`RhF-%1uJH7H zABV&z`@$*^<-=q7X$O{i>iHV1U5OSP(LxA}=;#ZPXBHg#f7I#l38}-=chqbO6RPsE z2U(MJZ^_kb`hE>8Qsb}N{?QsD5J4wh{8qLsS*(7NwYK|A4$ay%skS8C$~kCxtd2CJ zE=4Y}NRQu>qIaAgszFDR$*Fsr)If63$)36?QLKUen~B|SwmWE9Zpih!f1M9C2{C!X zu%~+nfnoJenX^u^l7R~>w8U5jmG`>cD9nL0`ihg0iFu>bwZ+JK5lZuEKp0D@f)c!uv#sQoyvSf{mRa5XDfnoV83ii93N~Evzwwh?w-rjrITY$Qw_I0D9jSZ?r znM|SXSl^x}BC2^Vjl4J=2;n=TUy@2)+yx#y_|H<~2h_SGSvq~yUn=5hk_LI7kQAH6 z-b3(kHB=<26A_{{H7?`KR@xk|-=iAt>jobZ6A=YY9C1yQyndJquRR8rwYqI`oja6o!`|aAR-ZD{qJOSkXKwgPXIeZK~{7w3+~7FXK%l}MlNbrha)JZ&QU1$ z2}cYE<=oktyLRkpnRVYmWh763eE^mGL`-3#z>{O6%Q6E%AbK2xj7ja&E7DiHQx!9K z(}t;xuOq`DA;TlIZo_LyF|;OIcT#HM?xa;Sq9U>RUvH9&fz&>|)N%TmYD7;l>sOC3 zX4q=@94zxRdfdEdXPy(q$SY@3V+ozLKd%PABPTE06wZ!u)Y6xNE+*Ax2aEL(q^k=6 zz}|TKP@))rPEpf+V7}`Ep>#Lu)mugA2E}SVb1CH{fg7J2YJtr+lkp$FOKH(FCS#l| zMsm~D66-qDncnQ*^!i?AP79rF0pkr9+=H*%=)}~N&Fh5RBWb^SKmOt6R!$ujt@wcF z`;Gcdx(1#h;A8eB*+fMAHyuxu=k(IKZT7+pHsz?d=-W%+1C8o#@+co(jQI=(DVcmk zRFZ%6)3276R+RL&tdpu>yv>WsVyB0h6?UN|q*9l8!h6#*_-~+h>~2uy6`9R_rY07J z4}K2?+FH0-LhWf179K-Q<8U~NOKLp5yxJ|TT#|*Rl6(r(e<9#soK6pWFnb3F;gi|C z18Q~U`fPB~(*Q(E7wxaH_eTd~rS&*;VFw=lf*f&}Ik+maU^FfIUV1NMH$R{|Eji@> zO~HY8e1$4jG$c_uLn2FXuVCX=&+fhP3~uBYt4@hnKaILk@|~&t66s3q40&qV9hwzq zAq@<#CaI)anwj<4@GJ>3&?ub^!@I~(T5&UGm>xI@Yz-!MVFYXVC}}7@hIh4QRd=CW ziqy0&U21{jIx1_PbmEwU0zHvb8!C++!fv_yjo;-6UD!!6c18t>q9&JeS=G>c`8=1a+S9*vQrg*u-{9qP6< zZdy#e_@F6-!{~VZ>)|%gweDphJ^E!8T!h@(8IGHA3g7q-r@68`)#mqagmQ9C{~-D| z^#uJ7nvH!EdIV_T;%Rh|Q0$W9igJsJW{EzxCMxq=J)G9cp2{v%#L79R}?-2i)eij}qLX+ABKhVu}6c5D){rIM`skg0C|T zI2oi>d!}CTJxZEfRyOkD6{cbx`mdma=UxKnxuTdSUHE;6F{Zf-2Ce!ae!zTd^J4!K z`=?PcnP~yfquF7T`z!K9rSh%S4yf^ul&#)A=~n!FGGc3BaQz*D@}IT|ePC5{#yHb; zcS4~|CPq9vRgne*vzRNmZuf?PQ3v!`p}8i!h8;6RHNW~Z zyS8X{Pv5K>xJVE!n3)FL4W@bD@n02H!teVgv!HASwXs)eB+9X~>#RG1&e}nS zxut81{NN-BtcBwa;m$SuzG$(f`wie9%Udu<_nY4)b&{>7H{pfo?`+120XB>IF~VQl6A^tjG40gMFBO}uJN=sF;9yh9!^{1<)4LN2 zaDhiB$H%!a7Rwix*Mkw#;c2NoxEpZf&ze9K=3a5R^{ow}&P$=0s6{4i`0ury?<gczi|9Ah;?3J73*WOGzif}U^gML3p zv$c`QN%9E_u4s(l)8vFZnRD>*CH7W+DBLeChJ@aK?3`Ip56iS;J-{!8o4_aAv(s<_ z9J}_k!jWXKh)>_#yE^&fZR*R0B{GT0_XD2=tXms%L#N-ZYJ6m-HQJq$hKZ#-VP*Rg@jIEwu<)S=rQ?vf}V9@t#5i8MW~5(jH;q zit#hcNubE6!P=Z`!~!f_x;W_y^cCPIe|3vvK9q|C1X^85^=kfNjWy#ItLWa%j3Ilx zNhUrXGEARKWIaR4wLL@R4t>lKD+nXWsMI@aLhJQYn4h*XWDH0vT=zps3+C& zoUCXVnQp?L_Q@tJ0G=YYzsdtA>r=F&O*Qc#OIHFz3NufME04mIdY#ol4Fu=YSQSkI z4{r;eT4kB9vhwxm!MtrXAob*bB6Ypgx4#poi#xdt0u)gSP}p)xGvE-3umVe&|M?I) zkXPtoD;oFnOS0WQ+BI9>~*Q_^$1GwDIJ#Ek~m}YKtd)T<( znd_G;r*;OapvO`0>z}+Q6 zjJfbzbS@Qjv9t8hIV4J7WQ6xv>q^}SKrU~vT#&@m?$+k8qa+PQPz0qH+2F!A$nT^= zJ5SFgLHD0vZEs>8`_6%tMn6F=Uhexvd28fmS#$(Z5FPnkDm~7il7lVhe{Uq$l_Ici z-+33;lp3FjobwK2bW=$pUrKm`TBTcjY;3cGygezR1tjPsPC$fXJ!yP0!N1g+dZ}GH z#C?qbPwuo0ss}7uVSzI-b+?FQs@HT5XjTZ{(k>M+|)#%cSt=LtymXFoTTrSKzNb1YF1xC zeD@X;=;}Qw;%xn%w_A;1W>>I!u((^bONWqUbI~L0fkk!4@7_fE=;Zp;8Rxh~2w>GC zaq`3cwZiyO@5xR4Ai8=Gj;%LAeZ9lCYRE=YAJ>t0bG3W`B8j4wy?t(2+D@6Tp3Ly_ z<=4ZQ+S*#4?7BLv4gCMedFEy`4rIn-u>Jkru>SQrW)qrkBUj@O$mx(So-S2%MyD8p%qUc z7nGjuS=DA?u-|Bu)a@||>4}pP)!$8sr&pc#u%EG?0fFd(@0>E+|2IH8yas2Da&A0W zzz9m2^&Sk4QlE#`jL1*D3xBLxO8Ow9+jeXWw;&gyKnUf8+8Qk8rhC+U)d{pGHCHhk zSLWBQTtL^3KNjcn4Qr#g-x>HoLniR`<^v-K`fq0Hy=<$&Ci#X&q%`|}rZn=5Q2}hd zFtn=&*VjKeY;aB3e+il#t_2)rk3NX_uGuwflZZz<;Nyw!Fb#Vczb)37O!-yh0qPuy z#Vf(Nfa0(v1650xyGfg=PdY@?xQPa;fm|O_r97Od!%|SC74~vG_NqwBL%o^$!o3$2 zwBn?z2Nkqh?Qg^0>zM5o?HQC=Pn6QzNkM7Wf#nt;CrJ=6GTk9f4LW~3{2TUAgp=}s ztnW^{u7(mpJE&3Jd9SzfBRqMuOqIuAjqeWW{=>MUsO&~{WSM!2idAHq4&e)~BBIy; zbI22@b}>i(D?OBiFCF!)BV{{%?Dv!_Bgu5n(pleCHRC@WKn64JL$}B^WgZlLCDJDk zqlik9D=E0ORdd4^63UGM0E+{67<(QDulJ0_0J;7H-W|&VOuCFCFAwf%jks{rk zk#@|6vy||Z42l(}O!Ko!L-=$v1WT+iF#>lOYx^=QF*7eXLDUzGCTVY#8z)r`0g$V1 z9_{05pHwwCY!d($K<8buI$KUeSy_6gCUB)fbh9dA2y<~RD`EewY#A#U-);9VGcEIG zA*w7%#G$7c+JC=O@&kO+QitoVH)=<}HIGsaSwq0#f0%s!H$O2lnKVC+H53lNf`WF6 z3@fAAExV)X=@QvYzPVr!e#eDHFHe=v(^KU}hGZ8SGbJ*=*$C8_HyHWwwO7aUuP#ad zf)Z(`C6jA-Ihu3{ng#PlgITgB_4o704w_)DAhU+5a;zNYh%}&zd2W{9+QvG}Cl0A1 zqibD!txVsNsVj0JEFsPj^lz-tgyC{rP77eYSVLDsS%}l@@49=FC+D=zjVN7x=Z9mn z;W%AfVWe*KBSMWSdCG;+DLZIUec5Z#VBd-E?++PDzvkZn_T*z>Vd-6;qIBvqbDN!9 zxqNxZOV+;obgu-M&rH2?9Vn3X4B15zOw0CH0fuTZbIj4e zxMFw*#Aq!q!MQrEttKWFxK79Myu7F#-J6az7e>$5&%$px-z)BnGgRhb$Gmoqo?fYM zsm1U(=|JN6Y)wQ;8V;C(@6ihDji-4r^)EySwRk=zHL)j*La;;M12byW8R6Ty`YY z(6Iyi0*Dk|7pma2=$U{gG7+$ovG)Uu?~UOS;U$mb`jN~b2{~X$jf5p3Ak5a>LKiA{ z(hf~{m`9Ftv6ma7BI`$NWfqeSchcbfH0QD9f%b2-1Rg*eDVMQkn)#Y@jzoh}vQ!UN zi+V6u=)PO0*Kub{*b8*WtchGILG3^^Bm{*p;RL%^gKj7Y{mwP8FQW|^QPaS4=-N%K zkuYeyopngwNwE?;MZ4(e5+#zJb%^vVZ8e1H=KW0#6lSP;cr|G?DXJ+MH8OgCfi?7b z1=&mWV6z4g{VXrvEd%pqe{nR>Io~lpR&h(JN=h-Cm;i(|RHGpdn9I+i71Yf7i;l&s zdZn#;s5(=7>Z2}c2Q-A^sB%9kD5jYQmxb+?g6w|DRl*wt^k!|&e+P8}a1L6XNux{E zd{w}oFx8%hy71#p{5vIp1W2O@csTp8X0X=rVK~8ol!VM~eD{1bY<8XvX`Y@S27hH` z<^H70btN-b&?D~ybSG}t28tz@EcE^R!qeGx&+{XyQccVYq?^ywF6kO0iFNt(F#RkP zkFgrJw0Ep;N4c67a8Ox3wPokM)#~Vfp8XxzIrxf5+VHWT82&328DBy`ISA{JbHE=ajjNz^6pkh0iF-Fqj*zljP+E&N*n?_ThG=Z(_6ik( z3sPJI?w^F-0W4AUNySN5a~02L8-6Tl?%fyiOQNtc49vbsibfTZ{5>+`y}u_pZI&!2xxDAb{CK)nz%ciQ1{6^HbHRa=GL_0ddN*d00f zJpH9FR8+GUTafrXWr|z`8@`CRpNw?O-q|Iqed#(`N=0X>EjdpnB#MCw_pqAPJzJF~ z*O2!;Ax|(6R10a-wQ4Ow)&j6$qORm5rbyFyt5%y>7sxmohE}uDhvo47?Eamx%FN=O zavbyn0;#V+4`uTU$SZPQ%h|6=3NxR5`{dUs>)>3dR*8D+OF%;7J6|vP_Q%S~c%KU$ z=q=D1E#Bs72m_(yd3K}}#MYDME~HJj3eCEebo3C1w-~NPv3}#@~fEm-PXD#We4X2IW-Oe4K5Dj*}1~ z@ETPEcuK%XJ(snPj|6Q2p~G5$>*x!}xR`Ku<_rK%Db`+!MK#F<42gxZXklzWcvI#2 z$|ke7d^fC#4n$ESM7(inX5qQ$Y5mo!GizXivw{u2T=jlP5Jp{FJ1>SLRqXPC@w_zx zbR^!YzxtxWMi{a3LqN`nyq72VeC_1P?=4w!j0r}V-WsfihcJlL+O>f)IpEuPfoj~cKrHs%UM?@8+eH=Jk*Z&#=4qZ zB(s7*UW=p>>;Dlh=&mag9JRamT4{tZF$G+J#ZRs-Cl~uS9D7Y<>3P7oS9>)Q za4J=%Meue=lg+Tv$Zsp%vdtxiP;~^BD&B>VB72ST(wKu}*`eCJJc`ahuW2eqk_FlX zVa+OarVsn07c+Z%PF$aI6*uz})6^PE(&WvbmlH|UCOv6*a${dx3Uqdkv9hxA&!yFg ze5C$tS4aP7{DM4xG!4w(_;)lb+mNzaUN53QVXgiI zQP?njL*rKry&rFFunlT)&=PV5r%RD1w19{_EkQxSlm76>XAI^G^BR?v(y6$^tWzdU zuOd%Mhc3$cYoFIjIXA@F{~(8*A1Fm?6nsv`>)t4X;;bb}k)E?}>B_jRPCCLiIcI8_fUHV z{nw|c7f!N_3`M9ZvRuto5+C4eUU8(X0jN8>pdcKj|Eb6V+MsG7YUaKP__q``J%SxC zJo%b!VcW-C%0^piI!$TS_IWN0)ObpJW*Ria7DsjC|Bfc%9T>CjYq3%^_@X^2hp4Ug zNu-uKKR8OMC(Jn3hJl~I|DN9Cn+L_NLmwfUv+AWGry|pQObM}=gl_lnl-(EqUbaSS z!X@~o2GSn#T{eu1o>^w>y>mbcA2NQ&2b3ou;77u&+PxJBBP>MqRM7~HR-Zc!xcaK*Ct-C!r-H{Oj07SfNh-`Z z6?UTYg+?F0SoAWb5_Y`_R#|9vA{g)f^)Zvi^s??maht0x9$oae?_?l8YJ>uhnZL`X zEbjHGOaS53dKh`LVf$35L}9?=r~C&qYzOL* z4m#uek52*|CR;sJ`d8X^$j}fak~r+*;s$Z`!JlL+?Rglm3B|P4C|gI>9Zz zvuBy-CEd4i7P(6ljLr}ib3G}QPD2qR{_&cLNP$~Yis`oaoh6z8UKMPOP8$wIz|YSO zUgtZ&5u^J_qG98}Cjl-IlPz?61=|YujYD5X1&OGBKa)Uv|`1wvwMMdqx7SJZhtKt6syoGf?Q)y|Zp2@~FTPE91rNC9q2sSX!Fo z{TsOdb!HRxuvgCLM<*!=g=M1mj7w?6Ffk*)U1qn3<69D8&@zRWxHj%Fvh(kQa_pjHkw=o+^JHL=rsZ&TZED1EtqA;FTtgQ z&Pj0Mr?#;}jEjkxmkj0eKT>z%XQsMI=3Aatm4o2DJtP^*!Yr!C0VZ_}9bN0mZ`hmE z6O%(*RlS<3f4=`ONt|Z5;ovX_kAK3bKBDKbcgQU21}OwF;mH-lNvMmWyv%(s9HY$I zv(v#7V2n*Gxs1kUC2R^?TDURBLltzmU_R3j5fMdVBw)7nbM$S%D~XQ0&?QwJrRds# z(dQ%c(Zr*V9o-+;pMxpz zlmt%{))##u4|q}jvc|LkfZE~!)(jOrvPl>6O0-s z#9eu90^v*hf%txluGneQOOKmWyl;Y#*?Z<3^8Wq66X9*7te2zjs+c3_!D2%4+hclG zRValT4^xtb;EPqW`KvfQ#nLRQB)ecYYmnP}q!o>Vme1rA{=Za#;j#`gsRjQuq0o!I0W2G68^c8}w4b^!;G(J8)TY$xN zh(zJ5%nNYykfiax7hb;o-kw#6`=K{ANu1%|t|mIKWD=N__qK~vV;s>D-7&{5`|AL z!XpxpJ2=Qgs|qFZgk~IKRoHm?wwgsvuN?%jrgK)VLZ;28Vj~P$Yy7RAsv9#CVSe>Z zC0xj!0Z=oCY%Av{&n7i5Dk5VwJ5@`yRDNYSCo5?AZwjzXpCgSiKY4KI^2bNr#ch56 zviqG>7s;HwU{7~hVTXp+fQ5v2;o1QV<2ud(bkYJ|cWyo{Rc$Q0d=S+!zTCd)UsSB; zu7WSEHgts5r1!^{kB)DiRGvTP_`zoI2M>+E>=8s`$p)wx9UBjLzvk&(+3-PBf7;LYU-FDMPjeo%zd2Rymwr%E#=bJ8EX1(Fj@eb*ym)^^_h7ueGdVocrLmEY z3cA0$`_Vw_jGSNkq^Ivs6jSbmcl{y%C$qBX`B%}|CK@$hu5+Lj|W;k zHa`chl22B(Ee`sm53G^D0D#Xz_+vSYl4Seef;rdLZGGn+m%%WFg>d)uB_-*K`D(~g zHw=NIq^t$aK?pAiKt$BU+;1_ZK~!7FRr!jvdSgxv)WT|8 zMS7x)S| z%ntfxc;hQbJ9p=0x}kpGp#8xIsHt)qfF798fKa5GsTL6YAZF-+I85^RT^Rr(q1~fn zAL(qHBPu^=8xWI8WFpc0Bk?sgePzlVy1mIQeS&mSv<$t%q)CXynN-f^o-GHavo^SEN!Ncy` zB5rn^SG<1)e;cmu!t?I@n-zb64+a}b51ofS`ckM*VY~R-h;{#72%xoU};KoKAJ}z$x1`G5=dKeDqhZnwBwxuT6{g5C%`CVY#a4|Lt zbA`R`W=5(yWBxwO%XxnJ%2wds5)M;k zRzs)jSvP-X>`16vrL0X{S+$e)#WZ1Jr2GuDG!O)OP!GL0Son=12g#UTG8VwGvbWFI zvY5Ouo3^Gjqft{IdGl73?VpKj8K_7u3v*A9mSUu)9gR)lRXF1l@=q z_NiF&H2cfJ`sq7Ew41-TG3`6TKa3b$xRt?ZGmY^;!8rPkQsz(2fo5*(jj_~GXE^7A1}8hymevlPLoxrs;T`O_T&7?zA5C08ql zIOXwTnHd3c69KJa3L+;*asld@HZ`1=?IJi71Cooz>5nDOf{ zW`kS98ZpXHW1>RoP_J@NLK4;ka1p1;L1o{eOCB6l6pLaWF^RdvVSPa`+Mm5I>7kci zb@4P-leY9I;F@5Jcq)8Bt$L*aclc??sw&MmsUj8D5w2)JER_5v-Vn7@1P>>yGU{zc zUS6Q@Xec&n7l7R>t)KfyI_J)xG^hW4nW~?FRU17>!2X0es^6kx&G_q+2F- zQ=H>kRJZ0ubZx>4Kv-xC{S}LUOTMCiGgiZ4i0n==b=_j58K!tl@3X zlfi-NZ^9L{Jk~nK(X*aOfd~aZSB}Kip51qpwe#HgemdhGaT8 z+MXcoq?!Br3ORT81W1}^?jt2}`5SHkZUa4@(FA-SFo0I&+}a%S(G+}#&jb5x(`euR z1l9X4rl6P9u1C?VK>+jPM@lRVY*b@vs@yrt?)A-$y?U3#gdr9TpaV0}Yf#iL%-# zqx?U7_~5izjJ5fYNh?8}k05GY5Lv_&s+uF!*pM6q
    +$h=lL_!_o_!@V0oiLR8}KzoHfu6%|djw4D^0Q)wgj*<8I)jZM5mEgV=nfg}J+6@k~V z(&6{OFD+cE&aCgxg00d7LI6YpowzWugdf0MypwMvHSm0Auw}e>W99Kd0t0Cd4A!J* z%Kw9`Rvo^Xz9ntZt)Bf>2yV(>_q#=8K?Bg|Pp_47_ZZ*^*z<|Z3eX~G&nLJ`kW!eL zQZCu0TE>xhs}9(HHSxGLFHnefEIj;i0@L-@*;C(4_|ZIE@ZNPHFUN=@vM4rDg9uD` zBxynqv+G78@fGC~BjuVuQ9jCjd!M`oV6Atl+5xa>lgl%_Iq=GBdk`8NaQb+6$2;B& ze!pO~%lSA>SV(iH8dG1VxXrBP>vZ7McsYEn$y!F;eRNMzYH-G0)emKUC0be#b$KzV z>CYsd#df5}X%wa1zMtLXHh`F-{osmR6soIu{Dg#42i9MJ4VedS=TBSF1z;WjH5OdC z(tgN>^Mjy@gM&Ts>Q~EYcXIvVRs9!!#`1ouh2`3@on^cjSb;+_^4vm*;aqrm3G*#9 zn_;Rc9&NS`#PzRR`~bBF;!b!YJO1V+IOaQ+Y54=D-Aa9FM4~K0`I8f$kmAalYvU%v z@Y^G(a)Pn48TRf<;{fPVOgjNfZpHb2Gj;6W^ljl>G+Uuwo23|T!adtWCr9xl5>i!l z{sYcTsff$>v0OCVw-7mvFsQDMZ`FDCW#HPD>B-6?3f1=}n!3)9SYK}e*G%y;W`d2= zmpv=J|NJI0^VBdDsb7SLkwv{gl}PF{K_94Qr_C zlaNq^cYl6esLLqfv#4tY3F6=s3>hZYRwiZ<#*)G6MyT{e_SiVz>jE3m<&DX~3#p!8 zs=RZ{8nAI*dx1hxYyW>xD9)Sio1*htN5AT~fWcO~e}J7ebr69H7!M?qK&E%T`6xM% z(|`1dwj}hMET7Blc~EqvcpX_!5zKg#P=)$hhxu?Nq_9Y9_=Fkm8x6zJ5=*}x(l$Gn zhgVN-6;XjKeUAc%0dPx^;P`FhLp+OQwSU3Tk*e{0m?o~@(-?T%^R>Ja<`cmV%EO>h zP*fB@T^(&=37XIj>aclRjPG2k9vo-E%pveDd2@b3|4$bH+XD+74CIseXRfS#=L7u}w#d z1{h%~Zz_@FIq6uqrXVz1{eWe|aOamV>AR~Yn&=hxjDSC$h>{Ba?f9GbKIa}=OuHgJlW_mvbVLhO*i+#;3)z%Q*6N5 z%o67L-|heG0fN|UQi_xj7^>xkxk{Vp#w_7yqWnUT|40ir1hXLHir(!jr~it)9!Cyy zSwbPc_91F{{FGIuidi7;G5_32VM7d-UAl6dDYBp+z0_&>4 z9wBA_gaQe=e7MwmQlZmcxYKXA%3?G)<#VCyK8`(@?{NqE-Mq=Jv%iABr+ip3&NNq% zf|E#oMW_06e=Lis{EYXhGb^RRa4O(gRC)S6JS+5q)`>M#YRXLj!%{gvaAJb4xz*iU z&_fiN{FqzHJ8=S)~hMpE>t}{E^*yxUg>Ff4~Gyi_| z6?;B%q0>n0aPfRtC0%tmQdkq3u$HWXba=(SHR;f6mPm+{sMY(@qX|yqS&`95q{A=d zL?mC_bW*agz6CqpMMLOhhv*W`VVLmDt2d2v^?PdI^UBpd*aY&5oE4|!8lJ^KOb%^5 z4jvxT+Exvy?Eqv-#jcNF!F*FqA`d$&MrC?DzYZYGyl>p&J<}kukA=e)jBs934mLwsFE1&m^zqVs5WF3 zSSZmo$m$gPl()VV)9z=*gDSGnl@&qM-qj}bi|b(|B&5ZkmZlv6J{Sddq&0PFl^1;+J}2N zId{lp9MTm?9xAys>VF9Y0*VA-Q5}1)pF&8r+T-$m4mHp!VR+fh?>1Jy#Tx|6FJ~wYzL?k32C$8ljU5<_^%Nqs0 z4HXt8S%NHJnj1t-u9L>v9&wRDeU))UbbNWRIg#;Cvp31>f#1F-ZJCH(7Oom$u&wHPCd-eM)tk5O|EhW;Pa(rz{~647)TU*-@nIxPyH0>F zEeD#i*Kh|X4D0t?2hX3|`7GP2)D=hY(yr3*#xY~#vS(5fd)aMOt6(3%nuW|rrZgWC zKkOUQSw!a^b4%i;zOQOee8az#@NswSlhauGYRp){BUXN@Nz)8QcH2eryS*aZH?KSA z0ga1cqTH#A`K`J31-Elwv#@AxLDfhFu`zKgzvTkzgeI7IlfSRWv3bfJecD4PM+`Yu z)6;fm%rVx^y%emK&Z)O0pqxS%lqOll1g>KE-eNFT<8kJfGFhgM8(`_Ex+f{jBl1I? ziC}?sm+$T&T(a=<4UQk~zez}^1Chnovn7V4EY5iQv|PtB>AwTpD{04Q-gHe#jE4Y;!*?;8-T!UG%ZN|CnaFOr z3vk#tYUDr12ejaTtCb=@oT^G9oqpKb{A-4!6(hDF12i3xZ_uJLQ>PSJewHxlP?culw)Zib_iT`|pPf6URM|*A7E# zS5AWe)YWx1%7v|c@dygK{@J4S{0iTXME4U#Y(h>b*804d_r>Q1hc$ucb)8lO(55hm zg+&W?+{GNPo?8G*=I}*a_MdlB(#>GtQwbHlCcA zsv{>R=KsptVo#Kz4F7#o5t?Dy%hB-0NcY>XW}=jEb|be37$q*{q$=1Ec5_{tUvkvo zLo<=FH@b+#sb-dl-n!%d{J78sfbYXW7>@}jOt|9WukIbOBfY56-L@ro0j>b4X3L8< z=JR|Pvex;8CZfn;@@cj>T;FLBDwos{$o!OUkym#x@dW@mQo$AgfVAHhog$!L9S^6QT z;ixm!7)_H7=-rf8eV!lv@5CuQ|KXrNbY>Zm37deveV}($rGb@VIDPuPI%Cep?^|i+ zLb=&0C*iQ-aMl*{ar)+KQ zaf6Xn;}wf}?Li;K;E@pC;oZC=VbD?!YE z!mFv$#|Pud1iyFMBat?UFeXQ-a|3dLrsdVu&a95eofKvY<)m^83;O^OoYb9#EGSyv$vq*a*EB4s=v?d~C;9vU=ui_uB!=-4o-Sgz`On{IzBGt>R>D zDb+=vU(8ZQwxQ|Q2c&Px!j~yQgZO<3t%s_PuS3^zw70$fb0w1WIqm|U?2nFF=GxAv zV)bLNX6O7jr;i`Mx;QVuanfR5BkVmscyXW>cz<(e~Gs z#O#7tP%GevAfTvN`XWDeXjH!h2NTZo;`Df$*)gR85}q&9%389E45K_&$taJOqM=by zIEfOffL%ucpMR@(LF7{rjdW9~8t(t#hk@1bk*1nA6E1;%<q%sG>lN;>(EJPlpctcvG?4c zbefrQoN{H^oMbNL-C&TOP zj$IZ(mL*Lt5z+A0)1UkiStpcAcC$U$u~$vyy?Eb1TR~*7@S9w!+-K9z^I@(m!&Vw! zw9=Jd6A{%(y~D?YT%~NFal=AVNZW^qtIy0!XE(2mrso$YFJtvpOD6ufk~^$gm?HVT!)XY1 z>HeEqpHWw>PI50Y_r=&!_~k;vM8;0U@f`IE=oi?cqYk)W2=1JnrX9s@ifMfS-oCtbF56Dv<- zhN0mwPZ}6Nv5W`AtADQOh&|}B(ZCYA*@OekBQ{q%aKVW3iRi>CIU;b|P(;39*leHd z!eU1BwC&)Mr6MxacmG@P2CM*rNgCt*N+sC$2;5iAEcHksOJ3yn*+!w&k-=fZ*86VW zlYpA_OE`vhK6;c?{~s$yC=wF4Rcz!ZMmhFm&8>KDEgoYWv-mN>oUAAt2Lo0Yb)Is` zMyu(S{8$yGwI#Y3wuZee6kJ5M<+T!j~;Gm5}uqjM}GBFn5dmmfY`mz4lt< zW-|oHFlN*9(1scxXK^?94-f>D>^9O;_5mf7I{!`Y#0B5pZ|l<;_(CkIrE%wfQ$bTD`z5}11Lx7L3W772Zr zO$d0{b{i1E6PUAiYjFJ0Tp5b-tkp<(`e8c6I=VJyMQbbKAP9yLao?UxlJVn=+nrkE#wD7|yj>4O{ z&=cj;DR)KQ+g~cm9NWv^?O#DJ*PM4X_YQ0#BrJ#w11|Az=0$tZ{mMmNY19N4eCxw0 zHum9&ie3hi+!JP;7teWx!PRPvw?%9y?Nz^kb4N!e>Q9DADFPdTNf8Rflj1Rc@Yfw| zU0^mc0^o^;{ndH&?YR&14g=0mM%g%>7w)?UO#LIL+{;tMUp4zrY3b*?K8pUH}a zcW`&~1KA$;j12!und^AdoCxw^0-@w}Ng1n8oDQZ0_?OJ}(K08{`aC%Ek>!O|2NoHd zb7cMja>5Q??cf$x7u&Wn&I`@8$15n%zDGolHCibyUG9qX+aC;pyk`;?P2J!q9MO7w zZ*R&Rq z7lNQYkdD4Q0&YzgR0(gQ>-;mMhYd;LM=Fob?&vqq#2JT(JX7{Zp1v&6W6wy0#d9WU zLMKbp0Z->acar@vE<8wwqu7@Z=hNv^Ieg9_E%cu*U#P_9;7o)?ewCD`o4b5{&*u8` zMZn#-t@>Ap7c4VqJu0bP!BS&8az4kG7xBI1{i=avRd#3a+`d!HckD2!e%pk2z?x z;t1mK8XDpd=TGor9ByG|q*M9)=+I1#)s8|09>+Zx9gGlW)9S(l&mvk9?R2Jvcf}m* ze%A)=n!$&Xv&{#cS9}Zfw4S=3f2mWalSeE*pW0&6W6+r3w9LVVeyV;{1)eE|K02tx za#feF`1ptVlZqfdc3`{Xi%)5mX~->h!5jE zx4h3o?Rnl5{{}7mgBZKD&Uszyr$l`F-XgA0K<45{;rL@?UQ76F?!B_#ZYcm#QDhwU z$Gqv5{h9+^ni9ngMXpWI*ZqrxpU?G+Y?!$ITFFXofmRO#@m^)QiRG}}2&OJcSDiHo zsQprGa6Wvcn`D>g8*1>X{lE%>?w2oLL}NaG`Bxkr5R3LI@@RRu>HiRuvV~Y?ZT_5A z>o^d{Z-J;rNeJQm4eNe-IzL_6cp}KkGM!n#JB!nZ-xk;TsB+XbQbnfdxNIaRpXf{j>|@8IRdYcqPRTSX9;h2nv4KXl`!S*K!3#r^FY5|73B0 z{iqOMFrquT)xuX$i8-N!DTY$-yt2dgYB+FtSqI3@t|7#HU-2~4LnsYckaevN3Xt!9`2D7S zz2|wpRliQGQs`U3O3?B3u}{ADfuq36iu;rQKj4=Y^=aW5>v{W`=y?DT6fJJfyc%&i zex0jUNRJyepa1+x^l`lL>}=XNAdDOvtT5I&EPw?@qd)f&K|DVO;^-bV>O*x(h0` z0ZgR$*xT}G-o+_qp3YVht@`Z#Rn*3-w6W9ey}te_gOK7p-IQ)IQREi#i5O$Nm~W1J zGZH288x6KpLy-&_wMO4xy9bGFOPP#kzStt&SzHVbU7WeawyJPT!IXBD98O5ma&+sv z@AH{;Z060Vl}swaxt-l&_oJT4o(m}NxsX;;{W9A{vow)GyA zQB;?gmy-rO=ly?Fy=7RH+xPt~4V&)nZbVADK?LdUlk?B{QPIKw!rGBFS*6uda$to;V>KYnfL`R2v%LJ# zerxzUIO6uYoT;*fqPh06ot09?X)X`=MHvhb(s(Vd>BvA}C8sfQo?Z6#U zH8H)0^xR{ZW5{>(?`?=d2i-RdEh#ClKNl97)lAx7P3VJdzJ0IpsRwLfgxAYn@;8@r z`mEXSoy>+((FlgNotSs;#stE*H4NppuGeWOWb!7KzLStNKSNlU+fQTy|Gh)oZ-v+m zs}ZW`Cr6JGR?+tKuXXMZc_$WOcRmG`7M(pd?g}$a$nwcWy1(ocAG^@;rl4M1B$l!v zToL?dBZxAqW>Yj4CQEb)7+13VK#Y;z;$*x+?A#o8)b%d4BAQ^e z&HW!E?$-^5ojzHn>_W!DPTT20Pb5~@O{UUt#E4Q6SFAX>4{ID3mRMeNLmRG*sr#@T zp_D2X?;z~ljoGUbUAXa^^+J$QUx3mFIOJ?yx_G#YPSGR@>E8TiCIgQ*Ln@-u^_Lf0 z$M^EO1N&iw!KRv4;wSB)bzbJFd2SNj46?g21{x^AVi+lEFopeNVuCAhL&f1PnWQj` z&1y@vyGhjEY{q$PTejFa`wI zf_MblPRO5>I?CZBzA2Q`RA*z={PZ%`@zLQbFysBb-GMN*`YsGc zVVlQV^LxFt#zG$S=bFzt42i5QF$aVN{PIowRSK?sS)OM-l3S{|i%2MRzEoM#96NSy zCuAb_y3F5hV4242I$f>*G~G+mdD7$(whGD5NkEmEcsx{y>G8C`*fqXempf)`5>n++2h$Uwe76)`rFOwE8mITV4eIV|CSstFPl2sd30pb^7E6JA5OU$|*JrGiU&$ocPWFa5UU}GQeAC0&Ud% zsaPMEJe(5>2h{o`?M?tHE@sduJgTA$N~O}MHdBR+iBjG~R_K0vi47>Km6Al2lW1@m>d;dc)1p z+xz7B>B#SSfz|JJxGVeNH|?+A^BO|7YavVAJ*pFHYp6o^x8sO%a?AsiHPYxQ>9D@6 z!3xq5<$7&2-2CiB!?zO`){3Sc=Mf3)^=`7*UFaT>%|ysM1<9%b2h-tj!M;s2XAELSCMzalAFRn{3)@ z$)OXsAfsB05>F};PN8FAQrqqMC7yu}%=F6xnDfT{v+r-SBDlrFuzhANm@E{_h-Jn! z-0G8I+C+ZCq_Fh7XvK$0D)=KYX}@l1aS_DK%-OWHou^N}A2&Iv?{hk=|M+}*Oac6Q z=O09U;u6i;DF6ov;!?Fq=Cc ziee(%9jI}5fNamo|NHTF0$jNi-4-Q>Y>Hc>$c6i-LQqtP4hsZ~3T1ZRYU->+KSt9m zd!6e)^y!PgQj0C2ygpDyK+fS9;M}a$fSk+< zk*T3zsD+LvfNlFN@^Oj*pzi0hTK;sj`9>2(Mh#)+YDQqabS0Hxxlx=vZn{1_gxTHO z3tg@^1933tBF4nfz3;TemN}DKQ2|4d1{rO7pZk1j2y32XC<5cn2}d|0qB3?M+Qz?; z^>>L;wT#-B2bhM;5F$`TmdMc{2`X_$nRS)SX`@G)sv{r2;*kH+2=AX)QeGTbD6y0H zA;x&nUxL!qM=U8Ph#GI*ou=0qgDPIJS{6#Q6cPmLpB8uFXH6X4r4PM_o4Y5#4{fP| z_LE|%i;$(C|3?2 zK~Art0pa|ad36qip%C+2r;htX=T|J707_Gf)3xqykr_=sAWC??SvyGT|0}{PI*iiO z=whg`LOxPJ#leJahKMfxxs;7ZE1+F5eRcd}R>a-nw|BAh;AOc~O$3I*P*ie-7zHu3 zkD;s5wLd(mZ%YW(Fl^>Q?#Aa*ezDJ0&1eIV#nr{LIN)}CgJ{W- z75fn+v`e~mQ1;KC5+Nr^iP>bValJwaxKH@l8o>T0&G<}9bnjGmuit1r@mT) zB9EtSn{7LS+ZyfovUh4NI-&flh;136BfS=Q*(v^6m0ZtSj57>J*a&4cE%n25m;Wul z%6ihKt(S3xomrETj!Wp&s%qwA$air2?ZuP4epjFUBzMX{5^@1rS3&R3Vesb^#Iksu zc1C=MYXwo&@nIO#M;pDp*E0bh(a@)l%Mko47%?ZF$Hqikfxl71`w?b-!3eJF0iBejnF_A$pVd& zI@^TJbdf8nXekvYAFxcA0`l~S9S1R?CnIv6atA?)%uGg&S~ys7AJwo7QqlpOl41;r zK&zR(dvS77G9j>{?(H5%*B(YKwAR`ychwdcz8(sweAl z3Dpd}?I(iL1z!>=JMMv1fV2tcHW>$^;+Z%FW*Gl;p$t*ZuXSd{k`^!onPzlJrmrE` za!5=*jSJp0NtE5ax!=g{QjOp3;>z#?&0Rm=3e?9<-B&qjFa;H*qI5%3&myN)Zdut9 zX`crSG=`Z19n55fsPv$)-!nWBuOKKjP@)7@B!&MAwyQq7KWukby+NpXDp& zJ5Z9z_V%q}jSU}dI6HhiY;;^uHAClBMY^F$-kYNPcRA(`^UdwL<_G53T-NjO0JmEE z?EPNrkh9C?;CK5!(y#!5Yr+V}SzV5;3P(0DTZQFrdyPsjGc# z*)sz*H~J$1%a5DQ2uS3SzNcM9oof`G0tm+NK$rDSDWK?ilaf9LSkA!uH{A(get?n1 z;4LOj!F2i<7I{L40h1%~RxNrJj;Lu$=*IiTzoq1I*6o4&f3(aa?Xk-#l~pvR_GW-8 zPf_etSQJ@Ik&|8b%bZcO)?hbQu*sizs#N9Hx7=Shy1H&SB|Gk*ENuSWN9^$?gLu5YH7;^2FFd^(T zu8vJm(6x{K0}oT83|*xfdFgvLE-sj&`?^@m;}D^{t#L2FFALAX*`$0(AKr_B2IdHW zB6o6iEq&MsBW2Nz(uEbd-vXxC%?gy#T&jyMO&#>|HLTzCJ z)P(&oOevw@i;Ii+aj|`LvqD+}lXWCnxldizm7oIfU&2Lb%^oWpQ5K$(msyFaum4h1 zk({(e7R&cqVaJjJUB2ew)2{hnj@tQ7&DoFwbNwZN;WwsdcAZ0=9V3M;L z0-fzg_-sU`JH2>8gNZlH87!aMDe4j&F)4-PHb4hETv^#8YLn8?FQnqOww`QW-qzsC zO52*20_6B1uJAr(ET50fSvzHjE@;Ar^!O9DC%cse$=N}=Pp0&N9iTckg5~xm} zqaV*WU$#Y8=wbYRxYQ}0g=T$ub*TYYZ_hjYxsY*Ks1p0zuUoCGZ6{l#MI{O2Q35Y- zizdm%J%B!lHhWmn-CBSR&qASSMnn0az^RimhEGPXdGZZnPp=KX^}81fK1@XKOlqno z9tkfLW>A=6@iS8fX;#Qp7V^n}-ve#+b~GP=7eIm?Cxsdw5)L-H*?K!uYAYS6V=k-d zP3gY*g*L~HCBOxQOIqksixH}7#od)QQwEeh$a?oZj1xjU(2@;ET(eQX2nW4L zf_DmchLhyx1k;B)CvKmKFg4WqnlgULSjp(^yEFjxpGkLWm?Ua=fa`EzV;_x zH6BU#c=0$znJhO4u2QlD$o8aYQlTfnEPAX`HdEE9+NoHr1{;8IFv`7_6F%jJix_gX zE#5*gC8f;HSr#ms08n-^n=SRInEg_CuF5wEH1RgTNb2OA;)|iQGVwVUhPhdv&~QG` zy7%ZR`hrAL6QcfG%3k+aA%XW(duNCs zkOlV)B2-1);D5g;WnXGkB+=(W%+mpbx*FUTOJ+HPbku}OD%$>o?M{_)I=pA>3XkjJ z$`H;NuJTUDXUdc5dTsNHV+?iU0m-%3+WYU-c#sRoQcjXJ!{ftLy_>~ol&|^l%TLk7 zcy~^>B{`d%5EDA=I)zfLdeX1M)L2xw+?3cLm^~rCpM>xI z6!3`ok@GP%rR&Q>g&u#YuWy8rP$()+l<~?&g>?3xl}1BQTQh$}dOJ6{$nQ%TH7z28 zq^kPPpv5WohxtUAsaC9P;d-1DNv^{4${`t{CmxY3ociQ>~a-2iU~Wp$AuD$M5-t4hvMPVkMO1TXW(TCOyPsJaqt={loi1=|^aN{hJ|qU!^C&Z}sN& zjAkOm=ys{kwR-Gt@oe``k(uJHt@EFcf1{)SoW?# zF9GL`%$o}#W$}?kqGSebOfvPRd9J_nyMO^45%+)$s1)v0ZO!hnV35wslZO<#?M}C+ zA_oWJUi>OP**;sYxg}Hi8Lk3riT&~G7o7I~Er*Uuj_0toM*_+ILg6H6Jl@Clj^hGZ z4JxG1pJ@&1pN&&ei2{xq(l-JIj{PSm4O2!(M4b*r)sW^+HvvQI!F;RB0oDv0@M!w} zeTPSE0+@z*uVO%5?02bH_~387~oYN?^YF7tcDE><@&qU z;kUQ&Ia>g6gjP~pN@^bnhUFoN>H7%G-mmb?udM|?KG+^EH^l}7At_i&!!Uot?n&eN zKgz~4AREY%KHO|^mY5`P3A{s|lZpL=rY|5-AyJptWsuCKQ!$_6N5a$Y+RZkH`EY-b z#qW@3V{UJNE2tka$s6ta`o+0nxeQkN-ANjvl5k3sNuZ62J{y>u?{ygMHj%3PKzwXQ z)mNVH&BMXN|JHrEqI>ubNEPyw3_Bs}a3H#O6MEd2ufn@(SzRbRPXv1O*QFL|_|`vs z(3|+h3#%4yEq6;&EB!asa8Fatomnz`fk>Z6p{LWBsgG=)ug75>e87$FbcEr@xvebY zTv3*w($Gg|Z>zcT(kkg)&n>s>IPa2&lwDmq~d_* z@6JBY=Bwp%2STSy!yOS zpxdgd4K_^37tuQT7lQe^fmNZU2R&}2E&n0i|Fel3tSLy1HlhtS%&#FK+{F6Th;RYq zVIl6fZ%^T-gO3p--wYS%ury`xx>ydZuNxFLHMzk8&Q9-W;c=3T@2)E@zBb2;8$e=R zp;=*3Ygy~0&d9FKhj?;=m@mwu%rjTf(T3Aljv~|Syp2jFOn2TtC6K#nZ2T4AlfaR? zG6iYD0K$z0W5u#hP#O&yffj>wWDztjVi=69F>-0@Y02RF=l76Hg7Utr*3O>#t0u4o zVA^b8-%oTrT~^5h*$T<_r@?^y!4+=iz>96IpHj)nCNYEmIPzKWJP61NzqVN_ya>{5 zu0Ws#hbH#Y2Ym6T-<~!&z z^{PNsD^J7fW4sIjCk(Ac^`0HM^v69701??Q1!s_R%!8CwR3B8Q(4g`H&RRbmApJgA z{`)9&U~TwnQJmT={wtY}JDtPKO?RK{f&FpWU&h8B2UkFX5COej!FLpJ)u?r43Vz_^n1-W`CJjB^XSlFkM0T@X z(p*xTA;VQ#5fGR((?XlByCT4 zf<>w0Fs;z}A!G+!ej?6&uY`&g^SPvBf{_u}C& z<0B9x7Q_eXq)LGvrdsCt-%F;tB1)$0PYc_DuL-2ZKwTR*mEW&W7=yKnQYxuq>eU|e2>jg9@Bu9tzU z8LZ?0%|_7mYQSV1x(q8s-vbkt6D1oTCw%^vNxRZ|rNDJ}_QMcv4iGoA+M<9YaXOu; z?aGfp^i~V~+a4Ym$dAAMPV!YiP*AVSQ~qOZ;ZkM!7lS~(QLz@KtYob?3V(sq-p>{s zEZ!GSgltJHfmHIM&n0d-N-W)tnW*bea=_gV`g3#})K-rV+OPO(r#S)N)}R={2Q(D# z2Z;KHCNbrYxFcT&I@y@)M`V5`U9#A|R7|fQr|$ueL{RrhrZMrzclh`}(87(T%PN|S zQ7-`QVut5#rrXtit1sMDo7Or59Zp1za?z)XbRZFVxz)vrH+}T1E*cxs2UbP3&B!cT zoMN9Qfu1{I=uHnBcj)=<_`sUi@d~oY1*5kfysmDh-bX7&1Q$rD4kKW3r5p^)9DRkR z#J+*^NqxC2qPVzc`#pKE%iJpBBrUR8N~6=QJDAjhehzJL5FENujwm1=tY};V_b`#> ztlif?LY|Szf9fCr3J$9`W|uV_13q4qhACW}LXYm--F14n*2$KO{Io zPgE?`099gi_%Et>gy|vPssW>J)?t8S1hE=GJw=RtKyL&UV5B7dD5h zK}Aj8piy8+CdNwr87D1WMHf%gf)XAr$O@?@?8TQ_Ex1*r!S8t^rtsOt+^xv)(Dt>C%>sC3BQml6UyLf5IPvTdvRpAR$ z2?-7aELjcvKvu0yVO`s~t_TK_fh|4NhrH|Zdiyq^@ZlXQJS3+I6$b3fPAO6wewRNN zvj7}hU}YtXiSgoE9~9`O1ys@5*<#IcnE)|55d9_-S_xuT zE+^TOL;m1xhCw};U;7*;5iI4pZbf$OS{=TRdAoHsOJ!=#RapU@^0Wqf*lihQCRyHR zL+M76i-5CCmtp&}%}4n%@L_rV`ekU72J zk_|EYo1V3<_1mr3QFXG(Ma1vNzG(4Zs7&fKQ&O`ars{Ka7)09511NhR*kP*kOEn6n z$KL)wWFdGC?Ewc_ZyO?={LMe}hll00^A6LrD?m=T2mjG-vpY^@yipCFkn_#N&f~rQ z0qjmv5Ryja0gF+m){iRR_u`5d`7UdJcu*|p9`J%&1Of9=-tBsBk5e2h{hg|pS9-EE zjQ~OP0@|a@|90C`qSM_kNzhGk>}R+$DG85r_AH@ktPY8{hik`4adJ zj`oPkc1X9#dAnI&D3wY5jsz`9?8#2;gf1j6%jUK|VSE=e+O**y6oq`~N+P9DMFu`Z z^!$qQosyL{qqD1P&-?_w`4_~TVur{9L^c7d?lfe+b*JomW1uV~3>N)EJx=?PBDlve zXI=|CA@V~UL*qG!`(tOqH<)K|u4seu^t9CS^YY?*INcSB85YQ)1KSOPvbfx%i5(7QP_tOK zJ@gv&XmJ26#y_V{%XXI_N{i`W@V1gTwvJe44-kl+zl(ZKp$vnM7i$Crg%W-d-_)Dp z;ATBL@%v!VQMSEuy}H!AJ;p~1j4@VKqM1o-@UYB}ogry7Ax0nELiOYAXr-p6ejx@3 zSHpvQ(stFhC6iSOQw;fnH?AcrcLM+JN!t!nz-VLF-S?1#ldvbg7p%>Z=oIGBz3TET zA~(MGn_K>ArK5kekY(3c_p_$weLK!2_Du|p`Mr2WoiD;nIB=?M^WqW*@g-(hmTAI{ zzW@!GJmDSL%q(II{~6vPz@?)eRYw6AZp%oR%UcnypEw>ZG)%HA&ib*)h zveLtm{@cx58Z@`Z7@cg{u5_2{lVVa_NXRIM-5sO8R96xC`X0a$V37-fwuoNLLe48UB7vwUbI&uN_??@xw&t% zuZ;*aQ+JJxim)6S3?lmi#$F*@$qv`N$J|P_&p_pSs9#1ocqlV6*rlxyGnO+kJO$b$ zIaykq#I*AF)1%VdSiE8TGOB2lFpAMZ6uCK6X$ER_26)M1fp}lU4X!J7Pj1KkNVsfQ zVYSK;Wwp;@Vg`EL%OSQMN2eqd>jwQBOoz?pTWuIez4FQf{{AFGKp8Z69Xj|sObP!V z%BLl>^9jwRyp-eEgRGgQmuSF(B43q_&WyaOl>Al{szRXRHG7^R7$<} zKE$Y?C`60|VHJ_mK-GnqrXSAG`-Tb$6{Tz497k5l-@O!{cae`QQAexMe9fO~QMlxp zNeT-~mAQZGlw(;uZ_@k|0`-6dHA*d&|8LdY*mTjFcISmHr4p=VpYfII&)1(~P5n1c zHB*Mvx~35){Ep}VZ>)FLmxxG>Qw=1eQ#|qRG}>^iw}{!o(t(9CvGB6?|331U2tI`h zHDaLq?juK#xj93rV=>fRmQ==0WyU)J$Mrp;|JO!C~!}GvwKgy*di0$ zXTzd1KTkD+;KXSj!$ehb+lzi@aDF%45pci9`$uf#d0#6kN64{DC(qqp0~@vj0o5{dUyQ1uN-c#MSC#BG znTQ0w`fD(O4rX=D+ke(VYf&MPNp`aR0=o92wO?19cSch2Y*}6{ZZC!Oh|QbJmUaN= zsrc<{zYD{sNk(FIc}1QU&&xmh+m0>w9}9l%ZZHh()Q*x8-GFLBpkbf=0q|>S zX_!g_-SF9u07XuyBq(6QF9tZP=1;cF3*`v^_2_J2ux*8iC?>4Tg8Jtq-6<3;A$2{RpNurxNpn;Ut33)J3k#qy z_)z=%*ccBsfBNh-_YP9)Y^7azAdgUh%YtA*)f|>4NnWi{$luGo@@JhXS zGef6nW4b0f-@l;;@wwUbd42P`T`n)uRt-mNO(Ee!kV2ItCx{U7(k5*FB*%tBjVv6w z`NS0t#{LreGgHG1ik31@%K_FX)o+ApQl_`6WIJDn>Q<{R)> z@STvdiK&i7izZ>=V)gs+PP+2wF^$p}5L-4u;IvOvT$?&?9^G9~lP#R=@Yzq#1sK35 zuT)Y@`s2AP6u8s;b=2j?Dc1)|GH2^yU8cLlLJMQSuG+BxQ0D)w4XoBN-x~be2FWG@ zq+Y{6uHP${$QS{`aWFLJw?HbH_FGH)6C&@EqvMS&R3ZP|jkjo2$VVN|5H|^|-VlJ0 z2SqEN8MyZR)TF@jNvt4NBw#9ZwvlVT#TZUHo*!2tA}6j4%kbxf%ZW9iwK{AMD7BV| z0Z#OB6vIVQN{U#-KaXKpLOo6)qgJFU=}{#jIZuHu7Ju|W$WM|jis5ke9F70%hBTm3 z9fB04b7(6p$LM$G@ObzB7O8)Zc$?R;kMQ6wQ1J=;&7GiDFe%4xnLWJHVf6)aYN7$3 z=chRQXf=rcZiXYwNS8MJAAZq?#WiunHmaG1afJ#Ui3ajN#8aUIL~jb9`C{&SP|?&_ zIJJLeu;Q5ilCE<<2P`DxEryrBSqEy_-Sl-a-(sC+9(xa@r>0C^l%f~GE7Vd2l@=T9 z!A3?$c6SBAZHzuvb>{-yg_=_YARYc{*@ye3$rTE;_r|#mY&1GZ(v+BUlvQZE0z}P- zR=w^yZ<6(&2?X!<#0E{Q^7rUGRdO|gb!ZS1W$>AL-t;)kRyjWIIywE2=MT5Ko`jqhb>(2)Vp1E`k)Ge+?H!#fH#fY z`>HM*)9r7Ietj=Z3iEtyYHDCU>C-3otr>lf;~$SS8Sj0R?1@n~OTG$~&ak^=j6e&b znZx~C_yTM$c+Di2@pC|iy$ay?5MOED3Ce-s1)9dY%)@v1EWoTsu+l#qAH zfGeOKpjiVSNERw8Gvl(d(0}=jI;C)5s$L5PYvx`J>?^VSX&(o<2Rjb=>RMx=o7)!0HlhZpuMuFM< zVpeTWIybrTyC&%5!0+}mkISF0+3~St8{bu!HdNj${UR)jKi=EJE5c_F?vf)5Zwx_& zK$=qh+4|+O(Z;?U^flt0Z(5*a;B?UE@r;13E{Govkk)G+sDKjHwHA$vVK7rl;(pQv zXV_C%p-@AqP~04wjvqov+D7C3Fu7!Zbf^h5T|hr?>3>L};LU(iJT+BRRoheN#$J^W zVEH-azonD+3W7MWeBsX^A4d52`xGYArQzsM&*Mf#M@8BB9j~~#VLOJvvoYd4jC_@w zY991AUE;dx5%BeOK~!YI(Ly15xCv-l^SozyT3z91N%TC~+*3yr@4z6;*C$s_BUrq? z*^23q38K<0d(|+kf(Wbs(PFYGfC&JT*xV^7w~Ac=+lI~Kc7z0c^LzWvUd7|Xg{h;H z6FL=S)Y*zP`0VFyT!ZT@0kkN|-Jd|rd9~Ly%Y5@KioHOe{%1ZK_e!x%6kEHrC0q&R z;;)G7i`Z-R-+szSV6D_hQ^iw?&5shPN{K3!HZYda{h?z{DAumjQlOiYoa0ieP%|`f z2S7cU0oG=)T6}X|W4hO4-%*``-B93Uq6f7nQ`;?&kvhjZ1jwK0;$qO_N_ScFx<=;l zyMmrR3IR^hT;ROB8Etp{-=a?cvg<*9=zMGDU%)?sdMEXK{`?>$@9OIM1iFtr?&cIO zfv2Y!d3wB8hdM9ur!ZqC(rNgWYYvP{bXA0!E>w5+iml!59a@{+f4A$nY*~A}YT_Fh z7~nLprE?!&*^-KB^tpM0yXGt;p-RGgEG0q-(aRh)^Sjt0eddw#EBoIM{a-X!Hl(z5 zEW8CqdGZaT+|igmBz1Xccw-VUFdJ3l4zmSZ#U9aPyGu4MF0)4k1mm^Ev7y zN~%n)>*_BbS)A#f_;qIQ@b^gZ{5Nt%ats5P+zx|}jXVivQMc zj}ENvoZO+48i85}(VI2@h7q{Cqx={_&+?LzecTOuK)JvG5AqAXoqX6?vODsAestsW z*Np4Ucc4zRZe@`q9;gvWTgMRnFVGi3+s*R68r+wmz>+9|)w%(g8bSt0ypYn; z(^wgbG?=<4CSth-xfs3<^8%USfCqJNo5=g7%WGnJ89MtuUnq}l4=_-GW@MNVL$-bz z@Q~|5(_aJ5TVIMErJ5rgP`E0){s;EifqEY(HDhR|9yS9IZYwdfE(N?c%XQcQ5fmFy5LJb8SYAzo^1Lw?__}0@& zB$4aWb$;2RU9V`m>e<_)BTpO+IoYn3B52{Z{hW=5V?Ac?$L{JqPL%JAw8qpMQnVYR?PFh5 zHhy~?lgWT;%Yg7?ty$fP{X1+3ondoc--jE^WucFSJp38|z4d^k@Jl*goTf}^MVxw* zal0&L*YUk4Yz-9@j-rsBxt*O*Rp}r3YF3Yd;L2m*QdC?1{}Vnw2WTpWzrlL{HxGWn z#@FNexEKd4Y#K0EXFBS4cYYZ(dZGL@B zB`hHd-ZtCSS{UB%t+{n|gnI59v=M35r86?#jz)P!DXcHFcb`+D0RhL~(wirf`EF`u zGfDk6xKbTwz^zruV7j}bj<-Gec;f=HfTX<2*arNv?kb^xhWP6eY>^|MOw)rx-+sj} zzbaF0mc7VR5Iv9+avvuy^HfUqsMG=@MYHuPx-WoDZe*-`Z;%a00E0J2bL63VNd?Og zoPv9Nd=&lo5fQ*>i8YS~0C!q3&g1|M9;E2Moh1oHgNHB+3;5Nt#6(ykHsg}-+o9j> zAJS6%nYfgfmDP}nA?XK&rD=#`WZrI}M0HklzjlnAt+2Y-8@dI(Qr^Z!pI zh!FFssPermqq*{una6bLx}MP?d=Xbpll^X!?K+g1p6GPw%Jt0IHBf+~XnVaY$jzp0 zD;nqmUbhUrB&$fMy}8K(W9zypL^QMP5D_RyJ|1Zk|5Bm*yB5W67`O1Vk(pf;!5Kwv ziY!&elUx-$ehBNE61@nbRa7WruGxg+W0yz37uv{s{=1tkGDh~prEB&Kapn*uG1NjjmU7qti60WiX)`NI`~6tD0@KdML|4rEU|bKGKUA7^ zfazDC+)rmJXh=<3oQK^7l^dQS*MWLLPU~eIC?RfA=pjsk=z}0ZgU>eGzryS;{v`^)diw7*SWk61Ta=$y4$)tFT< zMFg_Fj#?HQsaF#|wvGQ&MYOROPaMQSs|AfnFeAGTJs7D*10Y>AC(9IiPpLY6tjj6o1k#nO%%3}Du}2d0 z#3vZ>Ys`s})s~#DSJ(tHLr-fIy)z+p`q|&T!}J20U#EsE!|0XC zb9JKkS{HsJV7Lc@LM^&aPO9xUf78d-l!BQ&=%hUkX6-P%=4^D-7QWUxI66WO69!vz z#atKSrzyP!K<&zR&~rWajKNyps_XIBvgdnHg>)eQSIuc>7}c2fZ^ixCMNmDA>#va~ zzEt>6o&_V9p?qfSE*}vvrVhpU(FezfTYFg zM8vrS&A~=u4Tj2tc#AKB`g24+f6YX-BFjg(4Rm8vz~{*7U?Gjj5v7U>n%r>$i$x^vT1%)9022pw`^`pfL;$62fX*rWTz~9*+%kv&6j4 zzgPS6AX&nFsnZHKKFJjTW^=_qT?%v;8>Omc?S7!#jvD^XnAd%j^?&Jjw1Y_Z7QIoDMe0Pn0yzQly-U2pO+te^=Fei($0?yl1)w8l zjNZqGd%#mACv%`6eU_+(1%0W(WcEp3p4OtH--eFgqH>=hvyAs69W1!H?FZ1vz{i5P z1nzz}rW-zI`ij;nSI28>@t+rBEff&*-i1&EN(zF)=Zv{=$9YyH4-C8+!N}znE-Hk`!lR4ZLjz61%(rCp1t9 z8M=IqAbKXDyOd;EzqGoDI3v3j45r9hmt%|gF*X(mMu@?)M&;tHg&)6WCyxO@((s3p za<7_y%Hm(W1VH~Q$)AdraBa0Y?o?ZlFcUDHEGRkU2oDYqA8rBY`f6^+P?X}rt90BV zXde;&Pko59*+=?d5M}$jy*#}|t~7izrHs}@%KTdVgA*0~hkN)y$U?Na^3oY{_`IF@ z*=D*$3B{%~;yLY)`9!MpNR70)do&x~%zY%bPzjQn3?$;5bF3iRAy*3_beQ+JOsps< z!9M74Ap*G_ex0~G)^#AlS*`#k0Py}X-n7~p7rF@2l8#^9Z;AQRzvQ{a7*YR3nBj{I zo{Nx#B6FcB3;{9qL#=J-QD<4|grTpZmeL@L++U}Z zq+?p!r=^U=*i%W)ZD|&2rsx#taxfy6jdDfr$~DRwz6QEjwA<_A=oRBZFfT&pVWA@l zunulOUtC^xP2?bv%k@~5`|D*@Af{n(eUqy`phuUTI)nKzIYrJycrtkONx=ldywkQ1 z`UfsamY$eIIdV)>*UZ3iedf<+Mw~zgERKjI+sSSGfrD43PVSfJ=;7$?3lU2Sq zJ$~~_OrM`!-V4=yRE3V^hq4~NqSW}{D93>*j?do$;u_gsZs7NX{9=sZ{s|xHI}ZO4 z6wFW2W|rpIH5rN2Wh^@8+@SkGj4UxKCmb%KQ|~kr|BYZ_dnScb@5Wpx%~k+#lLB6HiEuJF9X#{%e&}PnXk!KuPQx)?ld(rvaWpp%2Dt)*( zCFP3(@trt%!cQgPO0Zak{_NPz%_vl@aPBsAOgIq|`u^XlAIw~E7+N4YqVxPsMgF#1 zk@s~-srH<%A<8L}fiZQtS7G>3L0OgSr1=suWP|P~Kl}oVq@Wo)Cck-68$VW1=mnuv zDhE=`mIa!oC9xg96FyF33?(`HjdKe)cFhc#Q9Vxi#3A-mh+?CiMKu|(A zt6Ru6O!cy#F>98o)~^6OPI6UkSDr3^7hR44<`!qv_L)<>Jp3Q4u%5VxU$CuM4vSCD z1l5*vw)*wHHT8iU_EC8{5|oPOmNK^%Zyw{Ei+!N`8GeZbehn1)#>j4>Xek2LIZCgT zoswsk4rTl$VtJnWUhdnZ{R|#?M9V4AhIcbJAiIjtKU{M8GreCCfv-@7^$1o%-Sm3q zYR`T?c^Odo_13!mRZJp;a$|bE3mDp>)6md}7R1*yYS2|qM!aXk#@89he8)EQ6DHtO zJhDOqynAItx2~Kylt|a3N-Q)~ALokD7!(K*k*nPB?*1b^S=e_~n4N=!%K!G}t z9g`=WFJ==i-qXIP$)Ls}-rJq7I%%VTjc(*F6m&kEOD{x$H}esL=m*A+l03+_6>s8G z`tP;BU)4glmqaA(uO{4DAGHt0;cybH1Yfg)FHe*?tL^*$l~qP)qxM=uX+Jpa|E|u? z+jN$LE$>$e=6SZI!njogaG`E<@!*M<+v57fmHy*da)CL=-6x8;YX4htczW`;7}4;6 z+pRsxu&0Rlmz=`XDS!`FkSE=vPWTW&k-qhLE}J5b%}3E&StV92_DJ72xGW@;eu^ze zt3*^VI}D(0_^pYOqqgWAQEU+sRtjpqbT${Qsw((=A9~x8@4mYM9G%kAtET$;9~@j< zu4ze{V*jiKfRp&oT2SNp>KLG>@3~*FV^s5lT7Npd%em9ZDlg?@9zm2=J=L0y_znrU z*Mwl^eUP$010k7}vn(i52IiVIK2Dm<7z@8>&wVmF2siphv5;u^jXG<73TB97qO8PD zh68v+_vtC`cY1lC2SbEC5#k)ZuTMs+z07WL60)B&_2^urW}3d=qFpX}L}iU@F;Z*v z+&A^zmGrdJ!$9;=_7CFa`;Q_w4+g7Ma4mz-CsR}m?6cp^gTlIv#os>E79&liK!;JN z(Z5|zOdC$J(_mDq9+NCFV^J2Lz=Cj|3RLPl*$q0lsv=%vA4stO4wonFQg{tpg>WrL za}s#+loqZ1&XnF=$OeJJaE7}HKZzUHgDIuy&mC=Q4To*l3jpBdQwMoU^(C+TEB|=N z!G~BdTG0?-!+P}gw6tt9#M2*mQbGF1@#B7Ta-=~K=X1ATgldo-=cU!eL(*JKzD!cc z%q|zV0T#RmS&|H?fV9%I>5NixLK@yHtLASogxg9~iRU|jWh1c=N|ac(K6m^ktoWH2 zuRe&It5tEAH`y(%K0+%G46UvCT|ZvJp%QzpEA5mqO1vmCPW8utE7UJB4?*dV$g6m^ z6WWytdM(FOwBKNS0NP3k)sZq`wtHmnO$uA9SGXnKchN~WWzoy1i8{eju_G*)!7!;q zV-9PYr%{w{=h?;PNvqZ_LQ}2&M&wOWzm!vd3HRB;jSl~IH__hZn?%hu-H?6m>zwfCx}Qc6cDCkZ1xS*s*%PauH?|9)sDot>e` zPYm8Yd7x7_sm16#pF#vX;;mtJaVHr{kjeHlBunNpxPL-M5__YG@d&R0COC_MzzQpC zg~Aq!`UYI^kgi=$S_kW~zv)7+rASnPIs6RRVzmA{`gam&@Hj3;-i?oFAGg}#-7_IH ze*&(QjEO(p%0eeq84?9i=Y(5yYy}+mCMsvjyd+6Ie%ELk*z&%hw}UBF+2f!s&MIN2 zk&CTZG_ESJM@C}o8`fKGrm^;XfyM&~#bmLt1p)mp?3xLC3D|T=%A~5tL3Vt%2cNyH zG1+n9T!lBS+*p_3oqe8V{q^ZU#&m#T#?f)x|Fkmo?%e@v!#FU3y|D}62SfDwIueB* zPGkHs3LiD4{&|TJ|9gpT$#uqI2MXbpaKZyOt0?z-5%bi)m|(Hvi074#NCf5OXeLR> zbq3m1Q&7h0RgCaSjSiaLoX2Yfn2W;_<5E|_XW_xB{uEgNkKnfx=(DDDuIIS~>|5Fr zT3)DTjv0z+RNz-J4Fnl|sLIsFI4HSi!a}n$y+N;~!iFAT?Tq=U%0TG*m2Nx+2yAMk zTDuW<4}=aZ46zE_tTKUbiYc0Z-N zv?6N=Gl=vEd^}$2{OwvJ#E>A}+V~B>9D}_eTtWWoxAXcZ_=BglSEvG`0>wMG%bwMh>009x`c{o6@LobwxsTpo-l69lj{GVp;cW%&#_Rn?7wH2-W8MECeU=HNlGK2T^NIFS_NPDBfuZpc@CmewMZEEd8`P+?P3v%2br zMUALT_d1cukD|X48$S&8;|g)+Efiwe=)vX;q3sNz>HI%M@l85?TtS-> zGZ+W_5IQU$4bDx%%EBj3OVzJaz9zmkB?fbs7k(Nv%W7%a_A$4EC97?wYaRV!=UE~;%CrK{0b9@71D@ENSOZ@=7;D*a%1dWjV7>j zEx(McP(UoY5M z_s?>vDHF8zO?k!3D?%vI#Of@qtZ;!)8QiG;)+kgD(CWv5c3cj?OA}Z;Z-m5xZ0D<; z%Rv)Xwb8INdX%2Hbna?Jsz4s0CLrnB4Lsg*bYqoMDU@hhuk~#pGikf)Ww|=y2cFmC zp**ctoeRc?@Cauor-z48K*6{oE~m6Q@K@^KXz&W>Pqq4iNQ))~3kz$i`0n15fkYR= zT)-bjUDI2A^m?c^^}9KkzxHV6>QVqsVDSP)gM1!CfCDwr;wGPFwg@5ig5f)ZSlrR7 z?>2ruv&I&vu`sd40h9id!5leV0=-SfdRTVh&T1QTuwm%Y2czZqCie+Gn6JSQf@q#F z*!K+8pYIi?7?vggflxC&L&ggAM#4H_ROLH?Jfvbt3ruWp{UN1y4aiu(oQ3+ZLZ!YQ z)JbZ^RPJ9o)w_>tsOHjX(wVrY+8{s>>ncs>d=@XQ|;;%Zwpa zG(y5%WwU%r`O)WHVC@2*DET~3cZ>l8gHokG^iR@xM;LXon7KM^JDIvg$!p0O)o-YV ztjlP-k$dyyIwAhGrP=u-v=|}A3WB#(692&IfMU1z^CN@d2H1Tam+7_~F9Sede$6~c=uMN9_iWfJLI_^qT)`Pxq|%7xpnHFw zjiHpNe2SE?O{uDqI{DJD@>R*E4S`XTLxUlSEbjYie1LM%iv$N4h6IKJ>~C_(0Kc{M za)$5?puMy|+4_+O95?})0rU^)M=bzV`01~HZArBe^Iyn$Y;n;F2pwsSfckNIb7N=5 zZc)D(nnyC^(7bVGqEn&T+(+A2pETIZRc~|4wnrZuYXy1dRB{;%;Tnz9R?sXAcpFXk zn5n`+sVUAxoRK{G3d}o;vK%FyH;_##XK83sVxajI9D3;e!sVU(6ioQ0Nkrp*)1q5v0Gg8pTVTQ@F~Xz_YjwaFNR`XKIp=~`0&k)j4` zKU-(D@aYMHyiYLWS4qf#JDRc>>mkzCP&OQJ%&njb@@{F@WM>Ml%= zn(4Nka?bKJDdaiokRH)oE(AUMBBc@*E~x%_KdBuA&KduR5#kS&oi3)7{D9UE$!6Tb z!%!_7%n|k&hA=g(gIM^+r{^0Mg;_n>_Ahq=>g&1nNy&A6>f!p87T&STgN@nd0G!&( zq-3%{-i^~-7LCf@+IqtC`U`*<*Y>JbBLEaQaDzyhQQwehjY#xhG>Uoy-2VrLGJ>yK zR4+={0VSSZ@93b=H(-ABt7SQm`2DXro;NZfYy1{geySS3g&xV@SLs-lVQIb4{kybn zLMe>8U|K&!NEedN@wz@)VaamEwY9a4B<6E4Ssoi3YtKkdzTx4RwD3U|ueZtKHM^xD zV@Ky|izS!ALh5_~BQ|OC$SP6MLm+foaqSt2gc1dzMre;kSJGQ?pUro-zde30%ss$` zv(YjS&VICVZZ?>yt}J&VM#o~6D$TXYH-uM-!-P80uSi=p;H!-o%n_cgWf^8fp)~dL zd>B)^JShF*Z66c6FOs8T;jPQVydeJm6H)Qxx;JY&r(BGYu)SIJ`VgPGoiy zi|y2(m!ze-4SN#Rbfbu&Mz#Jh?xQupmX@&JUA5kJ*|N&@zadb%_q_0aU%~{T=|u=& z7og>K){9%A4ZT8!y>>n-baLFhlMw}Y8LT|;=q!g$ngU9`UZaQAweFUU5V6ZJg{QqL zF$SfV+kv9_ZznmK*$v8^pf-To_iGZ7215$isCc<|sxnX)l24yJ$7P_2RZx_XvFgPr zF^qxCy@2#CyV2!q_$F(4B4WZzMIkiFHhkhVCzK81hLRE)&&g+mh&G79S6&AjUeh}o=AIx~*KWLqieZ#LVH;jKh21J4b@6;~)i zjFrxL-9W=!=Bh=n^tP6{zzWYJtDwp?dpyF1(Gx%ni1rVl^dED9s=0)r@jsN;WxK10 zy#;+y;aFMKPPVY=kP)RfnU%YO@!L_H4}I0Ie4BNhz63hQykwkfOFvLIaU3`P{r3iu zu39TSI_GebyRwzc#KX3{KaF~#KHC9z>=Oa3FVC0-lho_v+65RWrs0o>>3?TuVP@; ziNOKJ6wj4L{zxZ}N3XfnLrfjJiyfTNCT;yA*mBdal{uD1gwqmN;8KC2o(dWpC zk)ETL=&6KN%sBn%@SdeET!z@Y$)>04UKDzpwO1j<{I-w7-J32V8wW7~qpC;M;13-2 z=Tp7T@4mp2U$PS)1V{jA|;r|E2s z(gSoHY<%;-`qDleCsJGNhXK17URIuX4bU;*R7@N99hl_!3n`=9&=5OmJ4L!7(Q2#- zvItcgP|8JAJ?m_DM0cizL-^&v9h~5MbdyxT;4k{S34I>f4^z`DRnWb7wH+_=mNe4~ zLU331Ib*0t_mB5KXouGP;L-rcFa1Lj0+M4Cr&1Z=zSi>ck-%N`7xUIQef|CUc2~Fn z3;O0nQKfqC13T*GpIpYYQ6}R*akYqqsop_=sNB~Invhk269j0|H@5&Q&Haks$jdWe z)At)|Xu!LSY40NZ@NLbd!C667Cg3S$zR0Ft_p)JD`Ng24DOD&HID18zf}074o)NHp zvGby*$!p^D9E5pXE(?o~I4JMwYSt|-XGC#lfsTPzKUE>&Zlf(`5Tzo*SR_ z3WwqN`w|2is<8`aZVl-_Rr{T95@e0g;a95aM6Tuj+#P7sf4-~ne7=c#zIi)YJCi7# zH`>j$npR0eZ{=9a4d^{_3-ZUy_TB8~1@9YQg#%$SB99Y;5nqFUhk&+2!E+S%Q z(3Mdw3OEzpWJNHN89?ktsK=aA}DLn>)Ez zB$9RGTU^Xy4Hz?Z{iPD!ZZ=Z$qnNaH^>rO!RUwwY(iqtYE4_asFuDei&5!<4DwDP2 zwDo z`#NGQMa*`vv$g59zG3){IO4x7WeMjRkCja;w(vR$C_lx(%bY|J#CCt*c0K={DOY?j zA?o=LIT#4V?wYG({ozRIsOSi!0dkbn!VPog^<+=m8QTF7v*X63UN>tW3-a?9kbo8G zTbYh#tKV`47O&f((9*#ZAVS6wCwVcl!wEY?YzLTK|LG2;8S$=iT;oz0#!zs?TYzjN zpO@i!^x*s~LO>iumN_cg1P}o7HX)4sfN5BkGW{riIp8i_fXS}^_^>0?{tP(3%CPH? zo7J|IOv>cP>J3lrH|Hs5X)$2y_YOY;d8P#xLfra)Y65LPkilFm(WX_}9p4?;BWRuc z&F9=tG0gOGWo;0dsXjIm*j1by0~dPh?-8?&1CGT~RHVv{cadLq1w-fO_1SGlz*1&5 z&oi*XXwBLkj#R8rT~ zEP8|TH?dUXt2q;0mtI01DSn-&c%9YOW3{~vEa47d3usY-JZx)UU<1Em2ZR^zIX|(T z5360e`{7J%XX_|YQKZf~6HE7Es1{>O78D3bGn%L7zdNuOTI;%<9?}g8x_8G27}8rC z^F$8dG)R=^C2|RZg*E!ET0hY$z73V6*%(_sl4ysj4pA$CG$_-5nW{a#KKnqH_E(nz zQ@M`vCu6;&cjEPW^Rq9@XzRnTAxG1q4;~wY3edMTEN~>}>Kez6SP&%KPlVi;MwF@i zrlWt!+<-J8#NR}=nGS^Hw4@e%S|3Ii((Y^=3P3yVv$3(bRX>zJs;6$z$nc5k`+* z+~VJ~G*(uB!kBUwE1c?0&FHg6t?5d{@X8+PTm$rh+P_Z;a4K!%WMvqQ0SwM|-L6~q zD|&7FG9;dm4*!536JL*ji9B%Vxm>HPzJm*J6!~`|hn1WDx#8qLi_4zfV_XI9eaX%M z^J*{=5yjSWiU5b89B8Tw0!mZTvOW6RD(`U!{ue~s)b;E;cy)Bll>HTuxgBerQK^n9zk zGxBAzRrMSj+`e!A;TqUrCCgn|^1*;fWYA*b%inPcA&jCBN#eR#zpchc`wfY8|&FSRU zUaicBvv_P)S+}A42h$alDbm?r69*77ctx`39Y^27{jFBN3l`!fmS4PYB}S>}<6Hm7 zY`P_A0*ZE7!0qy`U~+N~5@;w;qw3e42QRD9e&2mU47y%Utmhv2S|!p+BItSy!vy%c z1otX?X?2=YA%>WU1oy8$xg*?fo8(hKbwf5jSAPyDf{~l_*J0ivj6`%3YW-Sp0P%6c zl4hg}ok-t1utZUJ^?DhFX%HZM9a7GgIVx=Gf>S-8?#*J#!J!Dk@@Zn9R8gr?*So#E zib5rFwc~^RT|a=-(eKs!Na{Br4opOgc8xmA;V>W$q9{7DXZ+7gwH;>$CaeTfcYj1F zf+IqADyBWK6?qIFFMVqR=yk54Z5L7hUIRuVg7>l%Jo4|1h5(APnTYSHqa0Ecm|~nt zI`AO0cL_J&%=FXH)?hk0y<|Yc*n>&(_R_;vxVV#t!BT4b&o3Ojw-p(1IN*;M{$W>| zww9t899A*e1T##*rCSBR9KX2j*dOdcZ8lc|aRH5%1mZT26qnEy<=O~c-|i(stj$A zCjoXrno$R0;dR{T^W)0%<1_y2pp9wEOPSej|LNI}UONi<9^>~w8u5+NhYu&nth2~% zJVtq1y|y)$=ly*^sJCeo1@_;Cps?;f3eB}c@`_=wwf_;305H^?P45;*I@?0-52 zTwM=|KQ5u)?>Dlgec-Q%I|nMk(ieZbP|@5x_If1S@y;D&*Hwu^cS9WhAG*O;{tWGQk*C= zF#S4~o{CWhZ$fH?HHCF?T0U};ioxaJfKtkF2DWxc&UM!&YcRiBV|MJ$@TFhZ+=*1jaDT7hSyg9e=QB44$0XpQ3~VnX ze+zH~J#Ls&%`j&!{eDod*=d(%t=u0dz5PyJ-jL{%dczp(v-t3 z`OEM-8ji4Q3OKNIm3gvtb2B2;`81Gj;;7I6#a4f$DnyK^xuy94eZ}+a!w=_H{f(Uq zx)=WxG3u({v9ZCf+4lH^=%d{cYoB-@?*q45{+&@obKC*Dh_^PQ8E?NlA3Wc+mwP@5 z36Od}2??^8IL<3_^DHjS&dx&UlTK2HM@lbIM5;aJoqQsovp2d5l_C_OX)##eUQh6& zhD1laSLCFF15b7AI*q#>EQWNb&8WOmocGEtg0X-y=VKM;vaP|Jfq7p6mX&Cz#^wsLhK}p3+Izx<(OL+o7S>;+_5BIF=gy)bQOe z^@?u}*H$0CwK^WmFeRWI%$hVDFHL&yj%8sSs{j@;i|j#RSQ{1T*VmUNK(s~37rWozzNSl~3bqvRWLFj|R^8zDFsLI1VxY(gt;1^r&RhRJ ztu;_?fMll5!^_>1Pk-U!@%hQyB2aU;u6Vvot?667hVw@A@w+NjMVT$5xPy7Qvt$h2 zMHMT+^-oUPbEj!UfD#AahbkqTn|>AEuw4l&{6=hCwi1L%D9I%!5sx*dide$pO9tMi zP)NytnW*%#zg(yOiR(Nb1q?r6DrMl+TFJ zbnDae%{7dsa+tJ+%!fsn*(v}GPAozu+4>z2`TO%j8tPty|0)MD%qC}Gc=YWx(GoHM z9s~H1zWeP~((~sME&IEM4w_PI2>^(gwV7jO=jUeU6%d$MG`|{menmq&i55otwWj2g z)Rt0wKBYv|J5C%R$n*N<@xHl@%`83J%cDpKsuRPnC}Z=SCw~e`m-$;O*pk6#~6intidt(`w@8N+W4pmyr`XfXA%IM}eJo*Q&nB6zcBzn!JuU?Q0 zbp4q8FsOoK>&H4MkdHFbjJ3LU03Dv7@+KkTYw^k}#b zLlc^sR9c=fF?VwQONx=890Wu$qc?()VMTL6?sTw;q?iJ;^1IE6inYWVNutY+& z5X9L$2;{{$BVObN?qTf2$IXG44j()Xmz$j*aw-2ge^`+aG2w(`skTbiTvo2RI?uCt zM5q+84Icq_T9WQt?+jg!X|P6%%aJ>3zgb+0tf{aWk>&tMzs&>0^~GH%iP0a(*PKb*07bCW4 z$2oqZyzar2Zzh~lJoJ{z(m(}P^NJdC5>yhS^ilFiZd>#aw(wE7cus%@r=X6$dQt?f zvC5jHwd>{nG*uge@$+)EHzrjZ0U;rh(DhPH+G}Ed5Ab>k0OK6ll$|eE2-boQATEDx zg#x}CHQ((0TmSLG>m{E7+x_=oL3LNoxRjqDcRqM295K-sN+^E5*{ElQP%(O zNO zhDUKA#3sv36OF+znp}LICWJ} z7`^|m^{DyGYBz@YI%tRsRlq9aL_br&5;sfyhAVKA3*AsNaZl)OmlAHKVr5`&rX0yH*EsH5Vg+7xc%RyNrUq6o>eynyZ1jpjJCasGvMlC@=+7#Wk3+O2?oG@j zX6>}KwYf9GXPb4GCwzN=IOZO&=Zfd%Ge1ALlU~O$yQams#Z-{oPKJvU4|=2v)C&4Wh^&ge*B=U~Vp14U{S~nX*S6aKUR{jnF1Cl0~lg9=B8) z$1lj@6qy+L`>WZi4hOUJEDwb~b06 zjSxQDLl`l=sraO1%mMjvI03!tduVvSS_XQ+a7eSj$MTUT7Z?lZN)`cHyR2+>5?E@_ z0-_&7p|BYT1_m?8+f0+69g2{(0CsPXv8E#Pw%@NjS!-M3?=_VShp4YaQaR%=#<@HE zDB>Bo=QNVC_c<(HbD=nuv2Q>H1{o9JhR%Alyl6}4b#{-2n)rz9kXA~0-7S_XIgeC@3 z)`DFX4Wqt^rsurfMzr0c^PXLE0QZ-$WhY3!&hyTVoLo_Wgy%9^u-qyuW;-!|PYlGi zJY84ofIdFWgvzIna&ZX;@(2n}cwG)}mencRCAr_5A^%K zNt2g@fk^pEP?!eXbzkv+&@|3ECgMtPnX&AoT#LfeO7ADE9^Am#^ zA9Jt+{PmWff;^;=IHXo!7Jfm>w_H&U8PfB)7-~Nq&x&T3VK}r*@O7KJgKK$s$bE`b zkPYk!BQ@qhCcQ#MzETEeLZ^=YC{dxGr;NNhm1W5ltxZAjdr%Ubuq7OX`yEE8t84_? z^mN#DL@Dg0_IAH7kHZ`WbdE4q>1CdBk=u43tkC6uZA;gSepXJRvIUw+jR1$D01KU# zcYRDg@Qg&SC934SJ@eLswd_2I@$vAMPWy$PLVi}mA0Sm4^@fV%{aXFrTG6(^#mYOT z+Y(8XCN3^cjurXN@!ZVJkrF*|#|?__-JZMoc%wGV5f(HZ4%;zih-dx=Zturmw;p88 zgQgrlW0vlgzxJDToa@a92-Et~Qd7kj78hCcdjY+*bK4!oIwM9a7dPiS(N{Jk9&XCk ztPvG(bB}+taX8#S=TK)hn(;fI<}R!6cCfmXbZtn*E};`CX}Ip>tSgW7pB@5D==QsU z|L;_mO$-8fKP=>6$Ru3sO=!ltY!6s*It&g=3R#uSY^hYTFd$3PPQaq?(lTS00S%KL zSC2-yGDs&)@&^{;fzMd6hRZ-br-lLrO8~TC8xln#C0i`}foFYVkWF?YV-qpTN4y6&E{(upe6)GX<-Zy^-UE{whng()&Zc z*KA&V&}-&`tJJv>_Ck!G-e}!(wujg;8PyP9tZ>K<+Yv?)VUca|mxWx*td8mM3kP4i zA=mDA6<*w@0k1y%?OFlhq@CTN5q+qLd}};=$sK3(!>sq?EN3m-8Z5{C=gFH;Y{n

    El$@c48^!>ijYF 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ξu4k2Tv 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⩔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%0D=;yn2Uy3gO~9ZgPJFmJz5W~x;^7HlUHd8Ah>F* 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 TTdGWa26B+6tDnm{r-UW|fF{Fw literal 0 HcmV?d00001 diff --git a/src/content/translations/de/glossary/index.md b/src/content/translations/de/glossary/index.md index ec66a245afa..4b4e0e4aec4 100644 --- a/src/content/translations/de/glossary/index.md +++ b/src/content/translations/de/glossary/index.md @@ -27,7 +27,7 @@ Ein Objekt mit einer [Adresse](#address), einem Saldo, einer [Nonce](#nonce), op ### Adresse {#address} -Im Allgemeinen symbolisiert diese einen [EOA](#eoa) oder [Vertrag](#contract-account), welcher [Transaktionen](#transaction) auf der Blockchain empfangen (Zieladresse) oder senden (Quelladresse) kann. Genauer gesagt sind es die ganz rechten 160 Bit eines [Keccak-Hashs](#keccak-256) eines [öffentlichen ECDSA](#ecdsa) [-Schlüssels](#public-key). +Im Allgemeinen symbolisiert diese einen [EOA](#eoa) oder [Vertrag](#contract-account), dcher [Transaktionen](#transaction) auf der Blockchain empfangen (Zieladresse) oder senden (Quelladresse) kann. Genauer gesagt sind es die ganz rechten 160 Bit eines [Keccak-Hashs](#keccak-256) eines [öffentlichen ECDSA](#ecdsa) [-Schlüssels](#public-key). ### Binäre Anwendungsschnittstelle (ABI) {#abi} @@ -55,7 +55,7 @@ In [Solidity](#solidity), `assert(false)` kompiliert zu `0xfe`, ein ungültiger ### Attestierung {#attestation} -Eine Validator-Abstimmung für einen [Block](#block). Validatoren müssen Blöcke attestieren, um zu signalisieren, dass sie mit dem vom Block vorgeschlagenen Zustand einverstanden sind. +Eine Behauptung, die von einer Einheit aufgestellt wird, dass etwas wahr ist. Im Zusammenhang mit Ethereum müssen die Konsens-Validatoren eine Behauptung darüber aufstellen, wie sie den Zustand der Chain einschätzen. Zu bestimmten Zeiten ist jeder Validator dafür verantwortlich, verschiedene Bestätigungen zu veröffentlichen, die formell die Sicht dieses Validators bezüglich der Chain erklären, einschließlich des letzten abgeschlossenen Kontrollpunkts und der aktuellen Spitze der Blockchain. Beglaubigungen @@ -75,7 +75,7 @@ Jeder [Block](#block) hat einen Mindestpreis, der als „Grundgebühr" bezeichne ### Beacon Chain {#beacon-chain} -Die Beacon Chain ist die Blockchain, die [Proof-of-Stake](#pos) und [Validatoren](#validator) in Ethereum eingeführt hat. Sie hat seit November 2020 parallel zum Proof-of-Work Ethereum Mainnet gearbeitet, bis beide Blockchains im September 2022 vereinigt wurden, um das heutige Ethereum zu formen. +Die Beacon Chain ist die Blockchain, die [Proof-of-Stake](#pos) und [Validatoren](#validator) in Ethereum eingeführt hat. Sie lief neben dem Proof-of-Work Ethereum Mainnet von Dezember 2020 bis zur Zusammenführung der beiden Chains im September 2022, durch die das heutige Ethereum entstand. Beacon Chain @@ -87,7 +87,7 @@ Eine Positionsnummernrepräsentation, bei der die bedeutendste Ziffer zuerst im ### Block {#block} -Ein Block ist eine Informationseinheit, die von einem [Validator](#block-proposer) erstellt und über das Peer-to-Peer-Netzwerk an andere Nodes gesendet wurde. Blöcke enthalten Listen von auszuführenden Transaktionen und konsensbezogenen Informationen, die [Validatoren](#validator) erlauben, die Informationen im Block zu überprüfen. Dies erlaubt es Nodes, ihre Ansicht des Zustands von Ethereum zu aktualisieren. +Ein Block ist eine gebündelte Einheit von Daten, die eine geordnete Liste von Transaktionen und konsensbezogenen Informationen enthält. Blöcke werden von Proof-of-Stake-Validatoren vorgeschlagen und dann im gesamten Peer-to-Peer-Netz verbreitet, wo sie von allen anderen Nodes leicht unabhängig verifiziert werden können. Die Konsensregeln bestimmen, welche Inhalte eines Blocks als gültig angesehen werden, und ungültige Blöcke werden vom Netzwerk ignoriert. Die Reihenfolge dieser Blöcke und die darin enthaltenen Transaktionen bilden eine deterministische Kette von Ereignissen, deren Ende den aktuellen Zustand des Netzwerks darstellt. Blöcke @@ -111,7 +111,7 @@ Der spezifische Validator, der ausgewählt wurde, um einen Block in einem bestim ### Blockbelohnung {#block-reward} -Die Menge an Ether, mit der der Hersteller eines gültigen Blocks belohnt wird. +Der Betrag an Ether, der an den Antragsteller eines neuen gültigen Blocks ausgezahlt wird. ### Block-Status {#block-status} @@ -120,7 +120,7 @@ Die Zustände, in denen ein Block existieren kann. Zu den möglichen Zuständen - vorgeschlagen: der Block wurde von einem Validator vorgeschlagen - geplant: Validatoren senden derzeit Daten - verpasst/übersprungen: Der Antragsteller schlug keinen Block innerhalb des zulässigen Zeitrahmens vor. -- verwaist: Der Block wurde durch den Fork-Choice-Mechanismus wieder ausgeschlossen +- verwaist: der Block wurde durch den [Fork-Choice-Algorithmus](#fork-choice-algorithm) neu strukturiert ### Blockzeit {#block-time} @@ -128,11 +128,11 @@ Das Zeitintervall zwischen Blöcken, die zur Blockchain hinzugefügt werden. ### Block-Validierung {#block-validation} -Der Prozess um zu überprüfen, ob ein neuer Block gültige Transaktionen enthält und dass er auf der schwersten historischen Kette aufbaut. +Der Prozess der Überprüfung, ob ein neuer Block gültige Transaktionen und Signaturen enthält, baut auf der historisch längsten Chain auf und folgt allen anderen Konsensregeln. Gültige Blöcke werden am Ende der Chain hinzugefügt und an andere im Netzwerk weitergegeben. Ungültige Blöcke werden verworfen. ### Blockchain {#blockchain} -Eine Sequenz von [Blöcken](#block), wo jeder Block seinen Vorgänger verlinkt, bis zum [Genesisblock](#genesis-block). Die Integrität der Blockchain ist kryptoökonomisch durch einen auf Proof-of-Stake beruhenden Konsensmechanismus gesichert. +Eine Sequenz von [Blöcken](#block), von denen jeder auf seinen Vorgänger verweist, bis hin zum [Genesisblock](#genesis-block), indem er auf den Hash des vorherigen Blocks verweist. Die Integrität der Blockchain ist kryptoökonomisch durch einen auf Proof-of-Stake beruhenden Konsensmechanismus gesichert. Was ist eine Blockchain? @@ -172,7 +172,7 @@ Konvertieren von Code in einer Programmiersprache auf hoher Ebene (z. B. [Solidi ### Komitee {#committee} -Eine Gruppe von mindestens 128 [Validatoren](#validator), deren Aufgabe es ist, die Blöcke in jedem Slot zu validieren. Einer der Validatoren im Ausschuss ist der Aggregator, verantwortlich für die Zusammenfassung der Unterschriften aller anderen Validatoren im Komitee, die sich auf eine Attestierung einigen. +Eine Gruppe von mindestens 128 [Validatoren](#validator), deren Aufgabe es ist, die Blöcke in jedem Slot zu validieren. Einer der Validatoren im Ausschuss ist der Aggregator, verantwortlich für die Zusammenfassung der Unterschriften aller anderen Validatoren im Komitee, die sich auf eine Attestierung einigen. Nicht zu verwechseln mit dem [Synchronisierungskomitee](#sync-committee). ### Rechnerische Undurchführbarkeit {#computational-infeasibility} @@ -194,7 +194,11 @@ Die Konsensebene von Ethereum ist das Netzwerk der [Konsenskunden](#consensus-cl Die Block-Validierungsregeln, denen Full-Nodes folgen, um im Konsens mit anderen Nodes zu bleiben. Nicht zu verwechseln mit [Konsens](#consensus). -### Konstantinopel-Fork {#constantinople-fork} +### Zur Aufnahme in Betracht gezogen (CFI) {#cfi} + +Eine Kern-[EIP](#eip), die im Mainnet noch nicht aktiv ist, und Client-Entwickler stehen der Idee generell positiv gegenüber. Unter der Voraussetzung, dass sie alle Anforderungen für die Aufnahme in das Mainnet erfüllt, könnte sie möglicherweise in ein Netzwerk-Upgrade aufgenommen werden (nicht zwingend in das nächste). + +### Constantinople-Fork {#constantinople-fork} Der zweite Teil der [Metropolis](#metropolis)-Ausbaustufe, ursprünglich geplant für Mitte 2018. Erwartet wird neben anderen Änderungen ein Wechsel auf einen Hybrid-[Proof-of-Work](#pow)/[-Proof-of-Stake](#pos)-Konsensalgorithmus. @@ -202,27 +206,27 @@ Der zweite Teil der [Metropolis](#metropolis)-Ausbaustufe, ursprünglich geplant Ein Konto, das einen Code enthält, der ausgeführt wird, wenn es eine [Transaktion](#transaction) von einem anderen [Konto](#account) ([EOA](#eoa) oder [Vertrag](#contract-account)) erhält. -### Vertragserstellungs-Transaktion {#contract-creation-transaction} +### Vertragserstellungstransaktion {#contract-creation-transaction} -Eine spezielle [Transaktion](#transaction) mit der [Null-Adresse](#zero-address) als Empfänger, die verwendet wird, um einen [Vertrag](#contract-account) zu registrieren und ihn in der Ethereum-Blockchain aufzuzeichnen. +Eine spezielle [Transaktion](#transaction), die den Initiierungscode eines Vertrags enthält. Der Empfänger wird auf `null` gesetzt und der Vertrag wird an eine Adresse bereitgestellt, die aus der Benutzeradresse und dem `nonce` generiert wird. mit der ein [Vertrag](#contract-account) registriert und in der Ethereum-Blockchain aufgezeichnet wird. -### Kryptoökonomik {#cryptoeconomics} +### Kryptoökonomie {#cryptoeconomics} Die Ökonomie der Kryptowährungen. ## D {#section-d} -### Đ {#D-with-stroke} +### Đ {#d-with-stroke} Đ (D mit Strich) wird im alten Englisch, Mittel-Englisch, Isländisch and Färörisch verwendet, und steht für „Eth“ in Großbuchstaben. Es wird in Wörtern wie ĐEV oder Đapp (dezentrale Anwendung) benutzt, wo das Đ der nordische Buchstabe „eth“ ist. Das eth (Ð) in Großbuchstaben wird auch verwendet, um die Kryptowährung Dogecoin zu symbolisieren. Dies erscheint häufig in älterer Ethereum-Literatur, wird aber heute weniger häufig verwendet. -### DAG {#DAG} +### DAG {#dag} -DAG steht für Directed Acyclic Graph. Es handelt sich um eine Datenstruktur, die aus Nodes und Verbindungen zwischen ihnen besteht. Ethereum verwendet einen DAG in seinem [Proof-of-Work](#proof-of-work) Algorithmus, [Ethash](#ethash). +DAG steht für Directed Acyclic Graph. Es handelt sich um eine Datenstruktur, die aus Nodes und Verbindungen zwischen ihnen besteht. Vor der Zusammenführung verwendete Ethereum einen DAG in seinem [Proof-of-Work](#pow)-Algorithmus, [Ethash](#ethash), der jedoch in [Proof-of-Stake](#pos) nicht mehr verwendet wird. -### dApp {#dapp} +### DApp {#dapp} -Dezentrale Anwendungen. Es handelt sich zumindest um einen [Smart Contract (Intelligenten Vertrag)](#smart-contract) und um eine Web-Benutzeroberfläche. Allgemeiner ausgedrückt: Eine dApp ist eine Webanwendung, die auf offenen, dezentralisierten Peer-to-Peer-Infrastrukturdiensten aufbaut. Darüber hinaus beinhalten viele dApps dezentralen Speicher und/oder ein(e) Nachrichten-Protokoll und -Plattform. +Dezentrale Applikation. Es handelt sich zumindest um einen [Smart Contract (Intelligenten Vertrag)](#smart-contract) und um eine Web-Benutzeroberfläche. Allgemeiner ausgedrückt: Eine dApp ist eine Webanwendung, die auf offenen, dezentralen Peer-to-Peer-Infrastrukturdiensten aufbaut. Darüber hinaus beinhalten viele dApps dezentralen Speicher und/oder ein(e) Nachrichten-Protokoll und -Plattform. Einführung in dApps @@ -230,13 +234,13 @@ Dezentrale Anwendungen. Es handelt sich zumindest um einen [Smart Contract (Inte ### Datenverfügbarkeit {#data-availability} -Die Eigenschaft eines Zustands, dass jede Node, die mit dem Netzwerk verbunden ist, einen bestimmten Teil des Zustands herunterladen könnte, den sie möchte. +Die Eigenschaft eines Zustands, dass jeder Node, der mit dem Netzwerk verbunden ist, einen bestimmten Teil des Zustands herunterladen könnte, den er möchte. ### Dezentralisierung {#decentralization} Das Konzept von der Verschiebung von Steuerung und Ausführung von Prozessen weg von einer zentralen Entität. -### Dezentralisierte Autonome Organisationen (DAO) {#dao} +### Dezentrale Autonome Organisationen (DAO) {#dao} Ein Unternehmen oder eine andere Organisation, die ohne hierarchisches Management arbeitet. DAO kann sich auch auf einen am 30. April 2016 gestarteten Smart Contract mit dem Titel „The DAO" beziehen, der dann im Juni 2016 gehackt wurde. Dies motivierte letztendlich eine [Hard Fork](#hard-fork) (Codename DAO) auf Block 1.192.000, die den gehackten DAO-Vertrag rückgängig machte und Ethereum und Ethereum Classic in zwei konkurrierende Systeme aufspaltete. @@ -244,25 +248,25 @@ Ein Unternehmen oder eine andere Organisation, die ohne hierarchisches Managemen Dezentralisierte Autonome Organisationen (DAO) -### Dezentralisierte Börsen (DEX) {#dex} +### Dezentrale Börsen (DEX) {#dex} -Eine Art [dApp](#dapp), mit der Sie Token mit anderen im Netzwerk austauschen können. Sie benötigen [Ether](#ether), um eine (zur Zahlung von [Transaktionsgebühren](#transaction-fee)) zu verwenden, aber diese unterliegen keinen geografischen Einschränkungen wie zentralisierten Börsen. Jeder kann teilnehmen. +Eine Art [dApp](#dapp), mit der Sie Token mit anderen im Netzwerk austauschen können. Sie benötigen [Ether](#ether), um eine (zur Zahlung von [Transaktionsgebühren](#transaction-fee)) zu verwenden, diese unterliegen jedoch keinen geografischen Einschränkungen wie zentralen Börsen. Jeder kann teilnehmen. Dezentralisierte Börsen -### Beglaubigung {#deed} +### Urkunde {#deed} -Siehe [Nicht-fungible Token (NFT)](#nft) +Siehe [Nicht-fungible Token (NFT)](#nft). ### Einzahlungsvertrag {#deposit-contract} -Das Tor zum Staking auf Ethereum. Der Einzahlungsvertrag ist ein Smart Contract auf Ethereum, der Einzahlungen von ETH akzeptiert und die Validatorsalden verwaltet. Ein Validator kann nicht aktiviert werden, ohne ETH in diesen Vertrag einzuzahlen. Der Vertrag erfordert ETH und Eingabedaten. Diese Eingabedaten enthalten den öffentlichen Schlüssel des Validators und den öffentlichen Schlüssel zum Abheben des Guthabens, signiert vom privaten Schlüssel des Validators. Diese Daten werden benötigt, um einen Validator zu identifizieren und vom [Proof-of-Stake](#pos) Netzwerk akzeptiert zu werden. +Das Tor zum Staking auf Ethereum. Der Einzahlungsvertrag ist ein Smart Contract auf Ethereum, der Einzahlungen von ETH akzeptiert und die Validatorsalden verwaltet. Ein Validator kann nicht aktiviert werden, ohne ETH in diesen Vertrag einzuzahlen. Der Vertrag erfordert ETH und Eingabedaten. Diese Eingabedaten enthalten den öffentlichen Schlüssel des Validators und den öffentlichen Schlüssel zum Abheben des Guthabens, signiert vom privaten Schlüssel des Validators. Diese Daten werden benötigt, um einen Validator zu identifizieren und vom [Proof-of-Stake](#pos)-Netzwerk akzeptiert zu werden. ### DeFi {#defi} -Die Abkürzung steht für „dezentralisiertes Finanzwesen", eine breite Kategorie von [dApps](#dapp), die darauf abzielen, Finanzdienstleistungen auf der Grundlage der Blockchain und ohne Zwischenhändler anzubieten, so dass jeder, der über eine Internetverbindung verfügt, daran teilnehmen kann. +Die Abkürzung steht für „dezentrales Finanzwesen“, eine breite Kategorie von [dApps](#dapp), die darauf abzielen, Finanzdienstleistungen auf der Grundlage der Blockchain und ohne Zwischenhändler anzubieten, so dass jeder, der über eine Internetverbindung verfügt, daran teilnehmen kann. Decentralized Finance (DeFi) @@ -270,35 +274,35 @@ Die Abkürzung steht für „dezentralisiertes Finanzwesen", eine breite Kategor ### Schwierigkeit {#difficulty} -Eine netzwerkweite Einstellung, die bestimmt, wie viel Berechnung erforderlich ist, um eine gültige Nonce in [Proof-of-Work](#pow) Netzwerken zu erstellen. +Eine netzwerkweite Einstellung in [Proof-of-Work](#pow)-Netzwerken, die steuert, wie viel durchschnittliche Rechenleistung erforderlich ist, um einen gültigen Nonce zu finden. Die Schwierigkeit wird durch die Anzahl der führenden Nullen dargestellt, die im resultierenden Blockhash erforderlich sind, damit er als gültig angesehen wird. Dieses Konzept ist in Ethereum seit dem Übergang zu Proof-of-Stake veraltet. -### Schwierigkeitsbombe/Schwierigkeitssprenger {#difficulty-bomb} +### Schwierigkeitsbombe {#difficulty-bomb} -Geplante exponentielle Erhöhung der [Proof-of-Work](#pow) [Schwierigkeit](#difficulty), um den Übergang zu [Proof-of-Stake](#pos) anzuregen und die Wahrscheinlichkeit einer [Abspaltung](#hard-fork) zu verringern. Die Schwierigkeitsbombe wurde bei [dem Merge](/roadmap/merge/) entfernt. +Geplante exponentielle Erhöhung der [Proof-of-Work](#pow) [-Schwierigkeit](#difficulty), um den Übergang zu [Proof-of-Stake](#pos) anzuregen und die Wahrscheinlichkeit einer [Abspaltung](#hard-fork) zu verringern. Die Schwierigkeitsbombe wurde mit dem [Übergang zu Proof-of-Stake](/roadmap/merge) verworfen. ### Digitale Signatur {#digital-signatures} -Eine kurze Zeichenkette von Daten, die ein Benutzer für ein Dokument mit einem [privaten Schlüssel](#private-key) erzeugt, so dass jeder mit dem entsprechenden [öffentlichen Schlüssel](#public-key), der Unterschrift und dem Dokument überprüfen kann, dass (1) das Dokument vom Eigentümer dieses privaten Schlüssels „signiert" wurde und (2) das Dokument nach seiner Unterschrift nicht geändert wurde. +Eine kurze Zeichenkette von Daten, die ein Benutzer für ein Dokument mit einem [privaten Schlüssel](#private-key) erzeugt, so dass jeder mit dem entsprechenden [öffentlichen Schlüssel](#public-key), der Unterschrift und dem Dokument überprüfen kann, ob (1) das Dokument vom Eigentümer dieses privaten Schlüssels „signiert" wurde und (2) das Dokument nach seiner Unterschrift nicht geändert wurde. ### Entdeckung {#discovery} -Der Prozess, mit dem eine Ethereum-Node andere Nodes findet, mit denen eine Verbindung hergestellt werden soll. +Der Prozess, mit dem ein Ethereum-Node andere Nodes findet, mit denen eine Verbindung hergestellt werden soll. ### Verteilte Hash-Tabelle (DHT) {#distributed-hash-table} -Eine Datenstruktur mit `(Schlüssel, Wert)` Paaren, die von Ethereum-Nodes verwendet werden, um Peers zu identifizieren, mit denen sie sich verbinden und die zur Kommunikation genutzten Protokolle ermitteln. +Eine Datenstruktur mit `(key, value)` -Paaren, die von Ethereum-Nodes verwendet werden, um Peers zu identifizieren, mit denen sie sich verbinden und um die zur Kommunikation genutzten Protokolle zu ermitteln. ### Doppelausgabe {#double-spend} -Eine vorsätzliche Blockchain-Fork, bei der ein Benutzer mit einer ausreichend großen Anzahl an Mining-Kraft/-Anteilen eine Transaktion sendet, die etwas an Wert vom Netzwerk entfernt (z. B. die Umwandlung in Fiat-Geld oder die Tätitgung eines Kaufs außerhalb des Netzwerkes), und dann die Blockchain neu organisiert, um diese Transaktion wieder zu entfernen. Eine erfolgreiche Doppelausgabe hinterlässt dem Angreifer seine Vermögenswerte sowohl innerhalb als auch außerhalb der Blockchain. +Eine absichtliche Blockchain-Fork, bei der ein Nutzer mit einer ausreichend großen Menge an Mining-Power/Stake eine Transaktion sendet, die eine Währung außerhalb der Chain verschiebt (z. B. in Geld umwandelt oder einen Kauf außerhalb der Chain tätigt) und dann die Blockchain reorganisiert, um diese Transaktion zu entfernen. Eine erfolgreiche Doppelausgabe hinterlässt dem Angreifer seine Vermögenswerte sowohl innerhalb als auch außerhalb der Blockchain. ## E {#section-e} -### Elliptische Kurve digitaler Signatur Algorithmus (ECDSA) {#ecdsa} +### Elliptische Kurve digitaler Signaturalgorithmus (ECDSA) {#ecdsa} -Ein kryptografischer Algorithmus, der von Ethereum benutzt wird, um sicherzustellen, dass Gelder nur von deren Eigentümern ausgegeben werden können. Dies ist die bevorzugte Methode zur Erstellung von öffentlichen und privaten Schlüsseln. Relevant für die Generierung von Konto-[Adressen](#address) und die Überprüfung von [Transaktionen](#Transaktion). +Ein kryptographischer Algorithmus, der von Ethereum benutzt wird, um sicherzustellen, dass Gelder nur von deren Eigentümern ausgegeben werden können. Dies ist die bevorzugte Methode zur Erstellung von öffentlichen und privaten Schlüsseln. Relevant für die Generierung von Konto-[Adressen](#address) und für die Überprüfung von [Transaktionen](#Transaktion). ### Verschlüsselung {#encryption} @@ -310,7 +314,7 @@ Im Zusammenhang mit Kryptographie mangelt es an Vorhersehbarkeit oder am Level d ### Epoche {#epoch} -Ein Zeitraum von 32 [Slots](#slot) (6.4 Minuten). [Validator](#validator)-[Komitees](#committee) werden aus Sicherheitsgründen jede Epoche gemischt. In jeder Epoche gibt es die Möglichkeit, die Blockchain zu [finalisieren](#finality). +Ein Zeitraum von 32 [Slots](#slot), wobei jeder Slot 12 Sekunden beträgt, insgesamt also 6,4 Minuten. Validatoren-[Komitees](#committee) werden aus Sicherheitsgründen jede Epoche neu zusammengestellt. In jeder Epoche gibt es die Möglichkeit, die Blockchain zu [finalisieren](#finality). Jedem Validator werden zu Beginn einer jeden Epoche neue Aufgaben zugewiesen. Proof-of-Stake @@ -322,7 +326,7 @@ Ein Validator, der zwei Nachrichten sendet, die sich widersprechen. Ein einfache ### Eth1 {#eth1} -„Eth1" ist ein Begriff, der sich auf das Ethereum-Mainnet die bestehende Proof-of-Work Blockchain, bezieht. Dieser Begriff ist inzwischen im Vergleich zum Begriff „Ausführungsebene" veraltet. [Erfahren Sie mehr über diese Namensänderung](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/). +„Eth1" ist ein Begriff, der sich auf das Ethereum-Mainnet, die bestehende Proof-of-Work-Blockchain, bezieht. Dieser Begriff ist inzwischen im Vergleich zum Begriff „Ausführungsebene" veraltet. [Erfahren Sie mehr über diese Namensänderung](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/). Mehr zu den Ethereum-Upgrades @@ -350,17 +354,17 @@ Das ENS-Register ist ein zentraler [Vertrag](#smart-contract) der eine Zuordnung [Lesen Sie dazu mehr auf ens.domains](https://ens.domains) -### Ausführungskunde {#execution-client} +### Ausführungsclient {#execution-client} -Ausführungskunden (früher bekannt als „Eth1-Kunden"), wie Besu, Erigon, Go-Ethereum, oder Nethermind, werden mit der Abwicklung und Übertragung von Transaktionen beauftragt, und verwalten den Status von Ethereum. Sie führen die Berechnungen für jede Transaktion in der [Ethereum Virtual Machine](#evm) durch, um sicherzustellen, dass die Regeln des Protokolls eingehalten werden. +Ausführungsclients (früher als „Eth1-Clients“ bezeichnet) wie Besu, Erigon, Go-Ethereum (Geth) und Nethermind haben die Aufgabe, Transaktionen zu verarbeiten und zu übermitteln sowie den Zustand von Ethereum zu verwalten. Sie führen die Berechnungen für jede Transaktion mit der [Ethereum Virtual Machine](#evm) durch, um sicherzustellen, dass die Richtlinien des Protokolls eingehalten werden. -### Ausführungsebene {#execution-layer} +### Ausführungsschicht {#execution-layer} -Die Ausführungsebene von Ethereum ist das Netzwerk der [Ausführungskunden](#execution-client). +Die Ausführungsebene von Ethereum ist das Netzwerk der [Ausführungsclients](#execution-client). ### Extern geführtes Konto (EOA) {#eoa} -Extern geführte Konten (EAs) sind [Konten](#account), die von Benutzern kontrolliert werden, die ihre eigenen privaten Schlüssel besitzen, typischerweise in der Form von einem sogenannten „Seed-Phrase". Extern geführte Konten sind Konten, die mit keinem Code verknüpft sind. Normalerweise werden diese Konten mit einer [Wallet](#wallet) verwendet. +Extern geführte Konten (EOAs) sind [Konten](#account), die von [privaten Schlüsseln](#private-key) gesteuert werden, typischerweise generiert durch eine [Seed-Phrase](#hd-wallet-seed). Im Gegensatz zu Smart Contracts handelt es sich bei externen Konten um Konten, denen kein Code zugeordnet ist. Normalerweise werden diese Konten mit einer [Wallet](#Wallet) verwaltet. ### Ethereum-Anfrage zur Kommentierung (ERC) {#erc} @@ -386,13 +390,13 @@ Die vom Ethereum Ökosystem verwendete Kryptowährung, die [Gas](#gas)-Kosten ab ### Events {#events} -Ermöglichen die Verwendung von [EVM](#evm) Protokollierungseinrichtungen. [dApps](#dapp) können Ereignisse hören und sie verwenden, um JavaScript-Callbacks auf der Benutzeroberfläche zu aktivieren. +Ermöglicht die Verwendung von [EVM](#evm)-Protokollierungseinrichtungen. [dApps](#dapp) können Ereignisse hören und sie verwenden, um JavaScript-Callbacks auf der Benutzeroberfläche zu aktivieren. Events und Logs -### Ethereum Virtuelle Maschine (EVM) {#evm} +### Ethereum Virtual Machine (EVM) {#evm} Eine Stack-basierte virtuelle Maschine, die [Bytecode](#bytecode) ausführt. In Ethereum legt das Ausführungsmodell fest, wie der Systemzustand geändert wird, indem eine Reihe von Bytecode-Anweisungen und ein kleines Tupel von Umgebungsdaten angegeben werden. Dies wird durch ein formales Modell einer virtuellen Zustandsmaschine festgelegt. @@ -402,7 +406,7 @@ Eine Stack-basierte virtuelle Maschine, die [Bytecode](#bytecode) ausführt. In ### EVM-Assemblysprache {#evm-assembly-language} -Eine für Menschen lesbare Form von EVM [Bytecode](#bytecode). +Eine für Menschen lesbare Form von EVM-[Bytecode](#bytecode). @@ -420,25 +424,25 @@ Ein Service, der über einen [Smart Contract](#smart-contract) ausgeführt wird Testnetz-Faucets -### Finalisierung {#finality} +### Endgültigkeit {#finality} -Finalisierung ist die Garantie, dass sich eine Reihe von Transaktionen vor einer bestimmten Zeit nicht ändern und nicht rückgängig gemacht werden können. +Endgültigkeit ist die Garantie, dass sich eine Reihe von Transaktionen vor einer bestimmten Zeit nicht ändern und nicht rückgängig gemacht werden können. Proof-of-Stake-Finalisierung -### Finne (1 Finne entspricht 10¹⁵ Wei bzw. 1000 Finne entsprechen 1 Ether) {#finney} +### Finne {#finney} -Eine Stückelung von [Ether](#ether). 1 Finne = 1015 [Bei](#Bei). 103 Finney = 1 Ether. +Eine Recheneinheit von [Ether](#ether). 1 Finne = 1015 [Wei](#wei). 103 Finne = 1 Ether. ### Abspaltung (Gabelung, Fork) {#fork} -Eine Änderung des Protokolls, die die Erschaffung einer alternativen Kette, oder eine zeitliche Divergenz in zwei potenzielle Blockpfade verursacht. +Eine Änderung des Protokolls, die die Erschaffung einer alternativen Chain, oder eine zeitliche Divergenz in zwei potenzielle Blockpfade verursacht. ### Fork-Wahl-Algorithmus {#fork-choice-algorithm} -Der Algorithmus, der verwendet wird, um den Kopf der Blockchain zu identifizieren. Auf der Ausführungsebene wird der Kopf der Kette als derjenige identifiziert, der die größte Gesamtschwierigkeit hinter sich hat. Das bedeutet, dass der eigentliche Kopf der Kette derjenige ist, der die meiste Arbeit erfordert, um ihn zu minen. Auf der Konsensebene beobachtet der Algorithmus die gesammelten Bestätigungen der Validatoren ([LMD_GHOST](#lmd-ghost)). +Der Algorithmus, der verwendet wird, um den Kopf der Blockchain zu identifizieren. Auf der Ausführungsebene wird der Kopf der Kette als derjenige identifiziert, der die größte Gesamtschwierigkeit hinter sich hat. Das bedeutet, dass der eigentliche Kopf der Blockchain derjenige ist, der die meiste Arbeit erfordert, um ihn zu minen. Auf der Konsensebene beobachtet der Algorithmus die gesammelten Bestätigungen der Validatoren ([LMD_GHOST](#lmd-ghost)). ### Betrugssicher {#fraud-proof} @@ -458,7 +462,7 @@ Die erste Phase der Testentwicklung von Ethereum, die von Juli 2015 bis März 20 ### Gas {#gas} -Ein virtueller Treibstoff, der in Ethereum verwendet wird, um intelligente Verträge (Smart Contracts) und deren Berechnungen auszuführen. Die [EVM](#evm) misst den Gasverbrauch und begrenzt den Verbrauch von Rechenressourcen (siehe [Turing-fertig](#turing-complete)). +Ein virtueller Treibstoff, der in Ethereum verwendet wird, um Smart Contracts auszuführen. Die [EVM](#evm) misst den Gasverbrauch und begrenzt den Verbrauch von Rechenressourcen (siehe [Turing-fertig](#turing-complete)). Gas und Gebühren @@ -526,11 +530,11 @@ Eine Netzwerkstruktur, die die Abfrage von Informationen aus der gesamten [Block ### Austausch-Kunden-Adressprotokoll (ICAP) {#icap} -Eine Ethereum-Adressencodierung, die teilweise mit der International Bank Account Number (IBAN)-Codierung kompatibel ist und eine vielseitige, überprüfbare und interoperable Codierung für Ethereum-Adressen bietet. ICAP-Adressen verwenden einen neuen IBAN-Pseudo-Land-Code – XE, der für „eXtended Ethereum" steht, wie er in nicht gerichtlichen Währungen verwendet wird (z. B. XBT, XRP, XCP). +Eine Ethereum-Adressencodierung, die teilweise mit der IBAN-Codierung (International Bank Account Number) kompatibel ist und eine vielseitige, überprüfbare und interoperable Codierung für Ethereum-Adressen bietet. ICAP-Adressen verwenden einen neuen IBAN-Pseudo-Land-Code – XE, der für „eXtended Ethereum" steht, wie er in nicht gerichtlichen Währungen verwendet wird (z. B. XBT, XRP, XCP). ### Ice Age {#ice-age} -Eine [Hard Fork](#hard-fork) von Ethereum in Block 200.000, um eine exponentielle [Schwierigkeits](#difficulty)erhöhung einzuführen (aka [Schwierigkeitsbombe](#difficulty-bomb)) und dadurch einen Übergang zu [Proof-of-Stake](#pos) anzuregen. +Eine [Hard Fork](#hard-fork) von Ethereum in Block 200.000, um eine exponentielle [Schwierigkeits](#difficulty)erhöhung einzuführen (auch [Schwierigkeitsbombe](#difficulty-bomb) genannt) und dadurch einen Übergang zu [Proof-of-Stake](#pos) anzuregen. ### Integrierte Entwicklungsumgebung (IDE) {#ide} @@ -542,7 +546,7 @@ Eine Benutzerschnittstelle, die typischerweise einen Code-Editor, Compiler, Lauf ### Unveränderliches Problem von hochgeladenem Code {#immutable-deployed-code-problem} -Sobald der [Vertrags](#smart-contract)(oder [Bibliothek](#library))-Code auf Ethereum hochgeladen wurde, wird er unveränderlich. Standardsoftware-Entwicklungspraktiken basieren darauf, mögliche Fehler zu beheben und neue Funktionen hinzuzufügen. Daher stellt dies eine Herausforderung für die Smart-Contract-Entwicklung dar. +Sobald der [Vertrags](#smart-contract)(oder [Bibliothek](#library))-Code auf Ethereum hochgeladen wurde, wird er unveränderlich. Standardsoftware-Entwicklungspraktiken basieren darauf, mögliche Fehler zu beheben und neue Funktionen hinzuzufügen. Daher stellt dies eine Herausforderung für die Smart Contract-Entwicklung dar. Einsatz von Smart Contracts @@ -570,7 +574,7 @@ Auch bekannt als „Passwort-Stretching-Algorithmus", wird sie von [Keystore](#k ### Schlüsseldatei {#keyfile} -Das Privatschlüssel/Adresspaar jedes Kontos existiert als einzelne Schlüsseldatei in einem Ethereum-Kunden. Dies sind JSON-Textdateien, die den verschlüsselten privaten Schlüssel des Kontos enthalten, der nur mit dem Passwort entschlüsselt werden kann, das während der Kontoerstellung eingegeben wurde. +Das Privatschlüssel-/Adresspaar jedes Kontos existiert als einzelne Schlüsseldatei in einem Ethereum-Client. Dies sind JSON-Textdateien, die den verschlüsselten privaten Schlüssel des Kontos enthalten, der nur mit dem Passwort entschlüsselt werden kann, das während der Kontoerstellung eingegeben wurde. ### keccak-256 {#keccak-256} @@ -592,7 +596,7 @@ Ein Entwicklungsbereich, der sich darauf konzentriert, Verbesserungen auf das Et Ein Open-Source-On-Disk-Key-Value-Speicher, der als leichtgewichtige Einzelzweck-[Bibliothek](#library) mit Anbindungen an viele Plattformen implementiert ist. -### Library (Bibliothek) {#library} +### Bibliothek {#library} Eine spezielle Art von [Vertrag](#smart-contract), ohne zahlbare Funktionen, ohne Fallbackfunktion und ohne Datenspeicherung. Daher kann sie weder Ether empfangen oder aufbewahren noch Daten speichern. Eine Bibliothek dient als zuvor bereitgestellter Code, den andere Verträge für schreibgeschützte Berechnungen aufrufen können. @@ -600,41 +604,41 @@ Eine spezielle Art von [Vertrag](#smart-contract), ohne zahlbare Funktionen, ohn Smart-Contract-Bibliotheken -### Leichter Kunde {#light-client} +### Leichter Client {#light-client} -Ein Ethereum-Kunde, der keine lokale Kopie der [Blockchain](#blockchain) speichert oder Blöcke und [Transaktionen validiert](#transaction). Er bietet die Funktionen einer [Wallet](#wallet) und kann Transaktionen erstellen und übertragen. +Ein Ethereum-Client, der keine lokale Kopie der [Blockchain](#blockchain) speichert oder Blöcke und [Transaktionen validiert](#transaction). Er bietet die Funktionen einer [Wallet](#wallet) und kann Transaktionen erstellen und übertragen. ### LMD_GHOST {#lmd-ghost} -Der [Fork-Wahl-Algorithmus](#fork-choice-algorithm), der von den Konsenskunden von Ethereum verwendet wird, um den Kopf der Kette zu identifizieren. LMD-GHOST ist ein Akronym und steht für „Latest Message Driven Greediest Heaviest Observed SubTree", was bedeutet, dass der Kopf der Kette der Block mit der größten Ansammlung von [Attestierungen](#attestation) in seiner Geschichte ist. +Der [Fork-Wahl-Algorithmus](#fork-choice-algorithm), der von den Konsensclients von Ethereum verwendet wird, um den Kopf der Blockchain zu identifizieren. LMD-GHOST ist ein Akronym und steht für „Latest Message Driven Greediest Heaviest Observed SubTree", was bedeutet, dass der Kopf der Blockchain der Block mit der größten Ansammlung von [Attestierungen](#attestation) in seiner Geschichte ist. ## M {#section-m} ### Mainnet (Hauptnetz) {#mainnet} -Kurz für „Hauptnetzwerk". Dies ist die öffentliche Ethereum-[Blockchain](#blockchain). Reale ETH, echter Wert und reale Folgen. Auch als Layer 1 bekannt, wenn [Layer-2](#layer-2)-Skalierungslösungen diskutiert werden. (Siehe auch [Testnetz](#testnet)) +Kurz für „Hauptnetzwerk". Dies ist die öffentliche Ethereum-[Blockchain](#blockchain). Reale ETH, echter Wert und reale Folgen. Auch als Layer 1 bekannt, wenn [Layer-2](#layer-2)-Skalierungslösungen diskutiert werden. (Siehe auch [Testnetz](#testnet)). Ethereum-Netzwerke -### speicherschwer {#memory-hard} +### Speicherschwer {#memory-hard} Speicherschwere Funktionen sind Prozesse, die eine drastische Verringerung der Geschwindigkeit oder der Durchführbarkeit erleben, wenn sich der verfügbare Speicher auch nur leicht verringert. Ein Beispiel ist der Ethereum-Mining-Algorithmus [Ethash](#ethash). -### Merkle Patricia Trie {#merkle-patricia-tree} +### Merkle Patricia-Trie {#merkle-patricia-tree} -Eine Datenstruktur, die in Ethereum verwendet wird, um Schlüsselwert-Paare effizient zu speichern. +Eine Datenstruktur, die in Ethereum verwendet wird, um Schlüssel-Wert-Paare effizient zu speichern. -### Message (Nachricht) {#message} +### Nachricht {#message} Eine [interne Transaktion](#internal-transaction), die niemals serialisiert und nur innerhalb der [EVM](#evm) gesendet wird. ### Nachrichtenaufruf {#message-call} -Das Übergeben einer [Nachricht](#message) von einem Konto an ein anderes. Wenn das Zielkonto mit [EVM](#evm)-Code verknüpft ist, wird die virtuelle Maschine mit dem Zustand des Objekts gestartet, und die Nachricht wird bearbeitet. +Das Übergeben einer [Nachricht](#message) von einem Konto an ein anderes. Wenn das Zielkonto mit [EVM](#evm)-Code verknüpft ist, wird die virtuelle Maschine mit dem Zustand des Objekts gestartet und die Nachricht wird bearbeitet. ### Metropolis {#metropolis} @@ -642,15 +646,11 @@ Die dritte Entwicklungsphase von Ethereum, die im Oktober 2017 begann. ### Mining {#mining} -Der Prozess der Überprüfung von Transaktionen und der Ausführung von Verträgen auf der Ethereum-Blockchain im Austausch gegen eine Belohnung in Ether mit dem Minen jedes Blocks. So wurde Ethereum gesichert, bevor es zu [Proof-of-Stake](#pos) gewechselt hat. - -### Mining-Pool {#mining-pool} - -Das Sammeln von Ressourcen durch [Proof-of-Work](#pow) Miner, die ihre Rechenkraft teilen und [Blockbelohnungen](#block-reward) aufteilen. +Der Prozess des wiederholten Hashings eines Block-Headers, wobei ein [Nonce](#nonce) inkrementiert wird, bis das Ergebnis eine beliebige Anzahl führender binärer Nullen enthält. Dies ist der Prozess, durch den neue [Blöcke](#block) zu einer Proof-of-Work [Blockchain](#blockchain) hinzugefügt werden. So wurde Ethereum gesichert, bevor es zu [Proof-of-Stake](#pos) gewechselt hat. ### Miner {#miner} -Ein Netzwerkboote [](#node), der den gültigen [Proof-of-Work](#pow) für neue Blöcke durch wiederholtes Pass-Hashing (siehe [Ethash](#ethash)) findet. Miner sind nicht länger Teil von Ethereum - sie wurden durch Validatoren ersetzt, als Ethereum zu [Proof-of-Stake](#pos) gewechselt ist. +Ein Netzwerk-[Knoten](#node), der den gültigen [Proof-of-Work](#pow) für neue Blöcke durch wiederholtes Pass-Hashing (siehe [Ethash](#ethash)) findet. Miner sind nicht länger Teil von Ethereum – sie wurden durch Validatoren ersetzt, als Ethereum zu [Proof-of-Stake](#pos) gewechselt ist. Mining @@ -658,7 +658,7 @@ Ein Netzwerkboote [](#node), der den gültigen [Proof-of-Work](#pow) für neue B ### prägen (mint) {#mint} -Minting ist ein Vorgang, bei dem neue Token erstellt und in Umlauf gebracht werden, damit sie verwendet werden können. Die Erstellung eines neuen Tokens basiert auf einem dezentralisierten Mechanismus ohne Beteiligung einer Zentralbehörde. +Minting ist ein Vorgang, bei dem neue Token erstellt und in Umlauf gebracht werden, damit sie verwendet werden können. Die Erstellung eines neuen Tokens basiert auf einem dezentralen Mechanismus ohne Beteiligung einer Zentralbehörde. @@ -674,11 +674,11 @@ Verweist auf das Ethereum-Netzwerk, ein Peer-to-Peer-Netzwerk, das Transaktionen ### Netzwerk-Hashrate {#network-hashrate} -Die kollektive [Hashrate](#hashrate), die vom gesamten Mining-Netzwerk produziert wird. Mining auf Ethereum wurde abgeschaltet, als Ethereum zu [Proof-of-Stake](#pos) gewechselt ist. +Die kollektive [Hashrate](#hash-rate), die vom gesamten Mining-Netzwerk produziert wird. Mining auf Ethereum wurde abgeschaltet, als Ethereum zu [Proof-of-Stake](#pos) gewechselt ist. ### Non-fungible Token (NFT) {#nft} -Auch als „Deed" bekannt, ist dies ein Token-Standard, der durch den ERC-721-Vorschlag eingeführt wurde. NFTs können verfolgt und gehandelt werden, aber jeder Token ist einzigartig und unverwechselbar. Sie sind nicht austauschbar wie ETH und [ERC-20 Token](#token-standard). NFTs können das Eigentum an digitalen oder physischen Vermögenswerten repräsentieren. +Auch als „Deed“ bekannt, ist dies ein Token-Standard, der durch den ERC-721-Vorschlag eingeführt wurde. NFTs können verfolgt und gehandelt werden, aber jeder Token ist einzigartig und unverwechselbar. Sie sind nicht austauschbar wie ETH und [ERC-20 Token](#token-standard). NFTs können das Eigentum an digitalen oder physischen Vermögenswerten repräsentieren. Nicht-fungible Token (NFTs) @@ -703,13 +703,13 @@ Ein Wert in der Kryptographie, der nur einmal verwendet werden kann. Eine Konto- ## O {#section-o} -### Ommer- (Onkel-)Block {#ommer} +### Ommer-(Onkel-)Block {#ommer} -Wenn ein [Miner](#miner) einen gültigen [Block](#block) findet, könnte ein anderer Miner einen Konkurrenzblock veröffentlicht haben, der zuerst der Spitze der Blockchain hinzugefügt wird. Dieser gültige, aber veraltete Block kann von neueren Blöcken als _Ommers_ aufgenommen werden und erhält eine Teilblockbelohnung. Der Begriff „Ommer" ist der bevorzugte geschlechtsneutrale Begriff für das Geschwisterteil eines Elternblocks, aber es wird auch manchmal „Onkel" verwendet. Dies war für Ethereum relevant, als es sich um ein [Proof-of-Work](#pow) Netzwerk handelte, aber die Ommers sind keine Eigenschaft von [Proof-of-Stake](#pos) Ethereum, weil genau ein Block-Antragsteller in jedem Slot ausgewählt wird. +Wenn ein [Miner](#miner) einen gültigen [Block](#block) findet, könnte ein anderer Miner einen Konkurrenzblock veröffentlicht haben, der zuerst der Spitze der Blockchain hinzugefügt wird. Dieser gültige, aber veraltete Block kann von neueren Blöcken als _Ommers_ aufgenommen werden und erhält eine Teilblockbelohnung. Der Begriff „Ommer" ist der bevorzugte geschlechtsneutrale Begriff für das Geschwisterteil eines Elternblocks, aber es wird auch manchmal „Onkel" verwendet. Dies war für Ethereum relevant, als es sich um ein [Proof-of-Work](#pow)-Netzwerk handelte, aber die Ommers sind keine Eigenschaft von [Proof-of-Stake](#pos) Ethereum, weil genau ein Block-Antragsteller in jedem Slot ausgewählt wird. -### Optimistische Rollups (Optimistic Rollups) {#optimistic-rollup} +### Optimistische Rollups {#optimistic-rollup} -Ein [Rollup](#rollups) von Transaktionen, die [Betrugsnachweise](#fraud-proof) verwenden, um einen erhöhten Transaktionsdurchsatz auf [Layer 2](#layer-2) zu ermöglichen und gleichzeitig die Sicherheit von [Mainnet](#mainnet) (Layer 1) zu nutzen. Anders als [Plasma](#plasma), eine ähnliche Layer-2-Lösung, können Optimistische Rollups komplexere Transaktionstypen handhaben – alles, was in der [EVM](#evm) möglich ist, können auch sie abbilden. Sie haben Latenzprobleme im Vergleich zu [Zero-Knowledge Rollups](#zk-rollups), weil eine Transaktion durch den Betrugsnachweis angefochten werden kann. +Ein [Rollup](#rollups) von Transaktionen, die [Betrugsnachweise](#fraud-proof) verwenden, um einen erhöhten Transaktionsdurchsatz auf [Layer 2](#layer-2) zu ermöglichen und gleichzeitig die Sicherheit von [Mainnet](#mainnet) (Layer 1) zu nutzen. Anders als [Plasma](#plasma), eine ähnliche Layer-2-Lösung, können optimistische Rollups komplexere Transaktionstypen handhaben – alles, was in der [EVM](#evm) möglich ist, können auch sie abbilden. Sie haben Latenzprobleme im Vergleich zu [Zero-Knowledge-Rollups](#zk-rollups), weil eine Transaktion durch den Betrugsnachweis angefochten werden kann. Optimistische Rollups (Optimistic Rollups) @@ -729,19 +729,19 @@ Ein Orakel ist eine Brücke zwischen der [Blockchain](#blockchain) und der reale ### Parität {#parity} -Eine der bekanntesten interoperablen Implementierungen der Ethereum-Client-Software. +Eine der bekanntesten interoperablen Implementierungen der Ethereum Client-Software. ### Peer {#peer} Verbundene Computer mit Ethereum Client-Software und identischen Kopien der [Blockchain](#blockchain). -### Peer-to-Peer Netzwerk {#peer-to-peer-network} +### Peer-to-Peer-Netzwerk {#peer-to-peer-network} -Ein Netzwerk von Computern ([Peers](#peer)), die gemeinsam in der Lage sind, Funktionalitäten ohne zentralisierte, Server-basierte Dienste auszuführen. +Ein Netzwerk von Computern ([Peers](#peer)), die gemeinsam in der Lage sind, Funktionalitäten ohne zentrale serverbasierte Dienste auszuführen. ### Plasma {#plasma} -Eine Off-Chain-Skalierungslösung, die [Betrugsnachweise](#fraud-proof) verwendet, wie [Optimistische Rollups](#optimistic-rollups). Plasma ist auf einfache Transaktionen wie grundlegende Token-Transfers und Swaps beschränkt. +Eine Off-Chain-Skalierungslösung, die [Betrugsnachweise](#fraud-proof) verwendet, z. B. [Optimistische Rollups](#optimistic-rollups). Plasma ist auf einfache Transaktionen wie grundlegende Token-Transfers und Swaps beschränkt. Plasma @@ -753,11 +753,11 @@ Eine geheime Nummer, die es Nutzern von Ethereum ermöglicht, das Eigentum an ei ### Private Blockchain {#private-chain} -Eine vollständig private Blockchain ist eine mit erlaubtem Zugriff, die nicht öffentlich für den Gebrauch zugänglich ist. +Eine vollständig private Blockchain ist eine Blockchain mit erlaubtem Zugriff, die nicht öffentlich für den Gebrauch zugänglich ist. ### Proof-of-Stake (PoS) {#pos} -Eine Methode, mit der ein Kryptowährungs-Blockchain-Protokoll einen verteilten [Konsens](#consensus) erreichen soll. PoS bittet Benutzer, das Eigentum an einer bestimmten Anzahl von Kryptowährungen (ihr „Anteil" im Netzwerk) nachzuweisen, um an der Validierung von Transaktionen teilnehmen zu können. +Eine Methode, mit der ein Kryptowährungs-Blockchain-Protokoll einen verteilten [Konsens](#consensus) erreichen soll. PoS bittet Nutzer, das Eigentum an einer bestimmten Anzahl von Kryptowährungen (ihr „Anteil" im Netzwerk) nachzuweisen, um an der Validierung von Transaktionen teilnehmen zu können. Proof-of-Stake (Einsatznachweis) @@ -773,7 +773,7 @@ Ein Datenteil (der Nachweis), der eine signifikante Berechnung erfordert, um ihn ### Öffentlicher Schlüssel {#public-key} -Eine Nummer, abgeleitet über eine Einwegfunktion von einem privaten [Schlüssel](#private-key), die öffentlich zugänglich gemacht werden und von jedem verwendet werden kann, um eine digitale Signatur zu überprüfen, die mit dem entsprechenden privaten Schlüssel erstellt wurde. +Eine Nummer, abgeleitet über eine Einwegfunktion von einem [privaten Schlüssel](#private-key), die öffentlich zugänglich gemacht werden und von jedem verwendet werden kann, um eine digitale Signatur zu überprüfen, die mit dem entsprechenden privaten Schlüssel erstellt wurde. @@ -801,7 +801,7 @@ Ein von den Ethereum-Entwicklern entwickelter Codierungsstandard zur Codierung u ### Gruppierungen (Rollups) {#rollups} -Eine Art [Layer-2](#layer-2)-Skalierungslösung, die mehrere Transaktionen zusammenfasst und in einer einzigen Transaktion an [die Ethereum-Hauptkette](#mainnet) sendet. Dies ermöglicht Einsparungen bei [Gaskosten](#gas) und erhöht den [Transaktions](#transaction)durchsatz. Es gibt Optimistische und Zero-Knowledge-Gruppierungen, die verschiedene Sicherheitsmethoden anwenden, um diese Skalierbarkeitsgewinne anzubieten. +Eine Art [Layer-2](#layer-2)-Skalierungslösung, die mehrere Transaktionen zusammenfasst und in einer einzigen Transaktion an [die Ethereum-Haupt-Blockchain](#mainnet) sendet. Dies ermöglicht Einsparungen bei [Gaskosten](#gas) und erhöht den [Transaktions](#transaction)durchsatz. Es gibt Optimistische und Zero-Knowledge-Gruppierungen, die verschiedene Sicherheitsmethoden anwenden, um diese Skalierbarkeitsgewinne anzubieten. Gruppierungen (Rollups) @@ -821,7 +821,7 @@ Eine Familie kryptografischer Hashfunktionen, die vom National Institute of Stan ### Serenity {#serenity} -Die Phase der Ethereum-Entwicklung, die eine Reihe von Skalierungs- und Nachhaltigkeitsverbesserungen einleitete und früher als „Ethereum 2.0" oder „Eth2" bekannt war. +Die Phase der Ethereum-Entwicklung, die eine Reihe von Skalierungs- und Nachhaltigkeitsverbesserungen einleitete und früher als „Ethereum 2.0“ oder „Eth2“ bekannt war. Die Ethereum-Upgrades @@ -831,12 +831,12 @@ Die Phase der Ethereum-Entwicklung, die eine Reihe von Skalierungs- und Nachhalt Der Prozess der Umwandlung einer Datenstruktur in eine Sequenz von Bytes. -### Fragmentierung / Fragmentierungskette (Shard / Shard Chain) {#shard} +### Fragmentierung / Fragmentierungskette (Shard/Shard Chain) {#shard} -Fragmentierungsketten sind diskrete Abschnitte der gesamten Blockchain, für die Untergruppen von Validatoren verantwortlich sein können. Fragmentierungsketten werden einen erhöhten Transaktionsdurchsatz für Ethereum bieten, indem sie zusätzliche Daten für [Layer 2](#layer-2) Lösungen wie [Optimistische Gruppierungen](#optimistic-rollups) und [ZK-Gruppierungen](#zk-rollups) bereitstellen. +Shard Chains sind diskrete Abschnitte der gesamten Blockchain, für die Untergruppen von Validatoren zuständig sein können. Fragmentierungsketten werden einen erhöhten Transaktionsdurchsatz für Ethereum bieten, indem sie zusätzliche Daten für [Layer-2](#layer-2)- Lösungen wie [Optimistische Gruppierungen](#optimistic-rollups) und [ZK-Gruppierungen](#zk-rollups) bereitstellen. - Fragmentierungsketten + Danksharding ### Seitenkette (Sidechain) {#sidechain} @@ -861,7 +861,7 @@ Ein Slasher ist eine Entität, die Attestierungen prüft und nach Vergehen sucht ### Zeitspanne (Slot) {#slot} -Eine Zeitspanne (12 Sekunden), in der ein neuer Block von einem [Validator](#validator) im [Proof-of-Stake](#pos) System vorgeschlagen werden kann. Ein Slot kann leer sein. 32 Slots bilden eine [Epoche](#epoch). +Eine Zeitspanne (12 Sekunden), in der ein neuer Block von einem [Validator](#validator) im [Proof-of-Stake](#pos)-System vorgeschlagen werden kann. Ein Slot kann leer sein. 32 Slots bilden eine [Epoche](#epoch). Proof-of-Stake @@ -869,7 +869,7 @@ Eine Zeitspanne (12 Sekunden), in der ein neuer Block von einem [Validator](#val ### Intelligenter Vertrag (Smart Contract) {#smart-contract} -Ein Programm, das auf der Ethereum Rechnerinfrastruktur ausgeführt wird. +Ein Programm, das auf der Ethereum-Rechnerinfrastruktur ausgeführt wird. Einführung in Smart Contracts @@ -885,7 +885,7 @@ SNARK steht für „succinct non-interactive argument of knowledge" und ist eine ### Soft Fork {#soft-fork} -Eine Abweichung in einer [Blockchain](#blockchain), die auftritt, wenn sich die [Konsensregeln](#consensus-rules) ändern. Im Gegensatz zu einer [Hard Fork](#hard-fork)ist eine Soft Fork abwärtskompatibel. Das bedeutet, dass aktualisierte Nodes Blöcke, die von nicht aktualisierten Nodes erstellt wurden, validieren können, solange sie den neuen Konsensregeln folgen. +Eine Abweichung in einer [Blockchain](#blockchain), die auftritt, wenn sich die [Konsensregeln](#consensus-rules) ändern. Im Gegensatz zu einer [Hard Fork](#hard-fork) ist eine Soft Fork abwärtskompatibel. Das bedeutet, dass aktualisierte Nodes Blöcke, die von nicht aktualisierten Nodes erstellt wurden, validieren können, solange sie den neuen Konsensregeln folgen. ### Solidity {#solidity} @@ -919,12 +919,20 @@ Ein [ERC-20-Token](#token-standard) mit einem Wert, der an den Wert eines andere Ihre ETH einsetzen, um Ethereum-Validator zu werden +### Staking-Pool {#staking-pool} + +Die kombinierte ETH von mehr als einem Ethereum-Staker, die verwendet wird, um die 32 ETH zu erreichen, die zur Aktivierung eines Sets von Validator-Schlüsseln erforderlich sind. Ein Node-Betreiber verwendet diese Schlüssel, um am Konsens teilzunehmen, und die [Blockbelohnungen](#block-reward) werden unter den beitragenden Stakern aufgeteilt. Staking-Pools oder das Delegieren von Staking sind nicht Bestandteil des Ethereum-Protokolls, aber es wurden von der Community bereits viele Lösungen entwickelt. + + + Pool-Staking + + ### STARK {#stark} Die Abkürzung steht für „scalable transparent argument of knowledge" (skalierbares transparentes Wissensargument). Ein STARK ist eine Art [Zero-Knowledge-Nachweis](#zk-nachweis). - Zero-Knowledge Rollups + Zero-Knowledge Gruppierungen (Rollups) ### Zustand {#state} @@ -933,7 +941,7 @@ Eine Momentaufnahme aller Salden und Daten auf der Blockchain zu einem bestimmte ### Zustandskanäle {#state-channels} -Eine [Layer-2](#layer-2)-Lösung, bei der ein Kanal zwischen den Teilnehmern eingerichtet wird, in dem sie frei und kostengünstig handeln können. Nur eine [Transaktion](#transaction) zum Einrichten des Kanals und zum Schließen des Kanals wird an das [Mainnet](#mainnet) gesendet. Dies ermöglicht einen sehr hohen Transaktionsdurchsatz, setzt aber die Kenntnis der Teilnehmerzahl im Voraus und das Sperren von Assets voraus. +Eine [Layer-2](#layer-2)-Lösung, bei der ein Kanal zwischen den Teilnehmern eingerichtet wird, in dem sie frei und kostengünstig handeln können. Nur eine [Transaktion](#transaction) zum Einrichten des Kanals und zum Schließen des Kanals wird an das [Mainnet](#mainnet) gesendet. Dies ermöglicht einen sehr hohen Transaktionsdurchsatz, setzt aber die vorherige Kenntnis der Teilnehmerzahl und das Sperren von Assets voraus. Zustandskanäle @@ -945,15 +953,15 @@ Die qualifizierte Mehrheit ist die Bezeichnung für einen Betrag, der 2/3 (66 %) ### Synchronisieren {#syncing} -Der Prozess des Herunterladens der gesamten neuesten Version einer Blockchain auf eine Node. +Der Prozess des Herunterladens der gesamten neuesten Version einer Blockchain auf einen Node. ### Sync-Komitee {#sync-committee} -Das Sync-Komitee ist eine zufällig ausgewählte Gruppe von [Validatoren](#validator), die alle ~27 Stunden aktualisiert wird. Ihr Zweck ist es, gültige Block-Header mit ihrer Unterschrift zu versehen. Das Sync-Komitee ermöglicht es [leichten Kunden (light clients)](#light-client), den Kopf der Blockchain zu verfolgen, ohne auf das gesamte Validator-Set zugreifen zu müssen. +Das Sync-Komitee ist eine zufällig ausgewählte Gruppe von [Validatoren](#validator), die ca. alle 27 Stunden aktualisiert wird. Ihr Zweck ist es, gültige Block-Header mit ihrer Unterschrift zu versehen. Das Sync-Komitee ermöglicht es [leichten Clients](#light-client), den Kopf der Blockchain zu verfolgen, ohne auf das gesamte Validator-Set zugreifen zu müssen. ### Szabo {#szabo} -Eine Stückelung von [Ether](#ether). 1 szabo = 1012 [wei](#wei), 106 szabo = 1 Ether. +Eine Recheneinheit von [Ether](#ether). 1 szabo = 1012 [wei](#wei), 106 szabo = 1 Ether. @@ -965,7 +973,7 @@ Eine [Hard Fork](#hard-fork) der Ethereum Blockchain, die in Block 2.463.000 auf ### Terminale Gesamtschwierigkeit (Terminal Total Difficulty, TTD) {#terminal-total-difficulty} -Die Gesamtschwierigkeit ist die Summe der Ethash-Mining-Schwierigkeit für alle Blöcke bis zu einem bestimmten Punkt in der Blockchain. Die terminale Gesamtschwierigkeit ist ein spezifischer Wert für die Gesamtschwierigkeit, die als Trigger für die Ausführungskunden verwendet wurde, um ihr Mining abzuschalten und Funktionen zu aktivieren, die für den Übergang zu Proof-of-Stake verantwortlich sind. +Die Gesamtschwierigkeit ist die Summe der Ethash-Mining-Schwierigkeit für alle Blöcke bis zu einem bestimmten Punkt in der Blockchain. Die terminale Gesamtschwierigkeit ist ein spezifischer Wert für die Gesamtschwierigkeit, die als Trigger für die Ausführungsclients verwendet wurde, um ihr Mining abzuschalten und Funktionen zu aktivieren, die für den Übergang zu Proof-of-Stake verantwortlich sind. ### Testnetz {#testnet} @@ -977,11 +985,11 @@ Kurz für „Testnetzwerk", ein Netzwerk, das dazu dient, das Verhalten des Haup ### Token {#token} -Ein handelbares virtuelles Gut, das in Smart Contracts auf der Ethereum Blockchain definiert ist. +Ein handelbares virtuelles Gut, das in Smart Contracts auf der Ethereum-Blockchain definiert ist. ### Token-Standard {#token-standard} -Eingeführt mit dem ERC-20-Vorschlag, bietet dies eine standardisierte [Smart-Contract](#smart-contract)-Struktur für Fungible Token. Token desselben Vertrags können nachverfolgt und gehandelt werden und sind im Gegensatz zu [NFTs](#nft) austauschbar. +Eingeführt mit dem ERC-20-Vorschlag, bietet dies eine standardisierte [Smart Contract](#smart-contract)-Struktur für fungible Token. Token desselben Vertrags können nachverfolgt und gehandelt werden und sind im Gegensatz zu [NFTs](#nft) austauschbar. ERC-20 Token-Standard @@ -989,7 +997,7 @@ Eingeführt mit dem ERC-20-Vorschlag, bietet dies eine standardisierte [Smart-Co ### Transaktion {#transaction} -Daten, die an die Ethereum-Blockchain übergeben wurden, signiert von einem Ursprungs-[Konto ](#account), und eine bestimmte [Adresse](#address) anvisieren. Die Transaktion enthält Metadaten wie das [Gas-Limit](#gas-limit) für diese Transaktion. +Daten, die an die Ethereum-Blockchain übergeben wurden, signiert von einem Ursprungs-[Konto](#account), und die eine bestimmte [Adresse](#address) anvisieren. Die Transaktion enthält Metadaten wie das [Gas-Limit](#gas-limit) für diese Transaktion. Transaktionen @@ -997,19 +1005,19 @@ Daten, die an die Ethereum-Blockchain übergeben wurden, signiert von einem Ursp ### Transaktionsgebühr {#transaction-fee} -Eine Gebühr, die man bezahlen muss, wenn man das Ethereum-Netzwerk nutzen möchte. Beispiele dafür sind das Senden von Guthaben von Ihrer [Wallet](#wallet) oder einer [DApp](#dapp)-Interaktion, wie zum Beispiel das Tauschen von Token oder der Kauf eines NFTs. Sie können sich das wie eine Servicegebühr vorstellen. Diese Gebühr wird sich je nach Netzwerkauslastung ändern. Dies liegt daran, dass [Validatoren](#validator), die Verantwortlichen für die Bearbeitung Ihrer Transaktion, Transaktionen mit höheren Gebühren voraussichtlich Priorität einräumen werden – so dass Staus den Preis in die Höhe treiben. +Eine Gebühr, die man bezahlen muss, wenn man das Ethereum-Netzwerk nutzen möchte. Beispiele dafür sind das Senden von Guthaben von Ihrer [Wallet](#wallet) oder einer [dApp](#dapp)-Interaktion, wie zum Beispiel das Tauschen von Token oder der Kauf eines NFTs. Sie können sich das wie eine Servicegebühr vorstellen. Diese Gebühr wird sich je nach Netzwerkauslastung ändern. Der Grund dafür ist, dass [Validatoren](#validator), die für die Bearbeitung Ihrer Transaktion zuständig sind, wahrscheinlich Transaktionen mit höheren Gebühren bevorzugen – so treibt die Überlastung den Preis in die Höhe. Auf technischer Ebene bezieht sich die Transaktionsgebühr auf die Menge an [Gas](#gas), die Ihre Transaktion benötigt. -Die Senkung der Transaktionsgebühren ist derzeit von großem Interesse. Siehe [Layer 2](#layer-2) +Die Senkung der Transaktionsgebühren ist derzeit von großem Interesse. Siehe [Layer 2](#layer-2). ### Vertrauenslosigkeit {#trustlessness} -Die Fähigkeit eines Netzwerkes, Transaktionen zu vermitteln, ohne dass eine der beteiligten Parteien einem Dritten vertrauen muss +Die Fähigkeit eines Netzwerkes, Transaktionen zu vermitteln, ohne dass eine der beteiligten Parteien einem Dritten vertrauen muss. ### Turing vollständig {#turing-complete} -Ein nach dem englischen Mathematiker und Informatiker Alan Turing benanntes Konzept. Ein System von Regeln zur Datenmanipulation (wie z. B. eine Programmiersprache oder eine zelluläre Automaton) wird als „Turing complete" oder „computational universal" bezeichnet, wenn es verwendet werden kann, um eine beliebige Turing-Maschine zu simulieren. +Ein nach dem englischen Mathematiker und Informatiker Alan Turing benanntes Konzept: Ein System von Datenmanipulationsregeln (z. B. der Befehlssatz eines Computers, eine Programmiersprache oder ein Zellularautomat) gilt als „Turing complete“ oder „computationally universal“, wenn es zur Simulation einer beliebigen Turing-Maschine verwendet werden kann. @@ -1017,7 +1025,7 @@ Ein nach dem englischen Mathematiker und Informatiker Alan Turing benanntes Konz ### Validator {#validator} -Ein [Node](#node) in einem [Proof-of-Stake](#pos)-System, der für die Speicherung von Daten, die Verarbeitung von Transaktionen und das Hinzufügen neuer Blöcke zur Blockchain verantwortlich ist. Für eine aktive Validator-Software müssen Sie in der Lage sein, Einsätze von 32 ETH zu [staken](#staking). +Ein [Node](#node) in einem [Proof-of-Stake](#pos)-System, der für die Speicherung von Daten, die Verarbeitung von Transaktionen und das Hinzufügen neuer Blöcke zur Blockchain verantwortlich ist. Um die Validator-Software zu aktivieren, müssen Sie in der Lage sein, [32 ETH zu investieren.](#staking) Proof-of-Stake (Einsatznachweis) @@ -1038,15 +1046,15 @@ Die Sequenz von Zuständen, in denen ein Validator existieren kann. Dazu gehöre ### Validitätsnachweis {#validity-proof} -Ein Sicherheitsmodell für bestimmte [Layer-2](#layer-2)-Lösungen, bei denen zur Geschwindigkeitserhöhung Transaktionen gruppiert [„aufgerollt"](/#rollups) und als einzelne Transaktion an Ethereum übermittelt werden. Die Transaktionsberechnung erfolgt außerhalb der Kette und wird dann mit einem Nachweis ihrer Gültigkeit an die Hauptkette übertragen. Diese Methode erhöht die Anzahl der möglichen Transaktionen bei gleichzeitiger Aufrechterhaltung der Sicherheit. Einige [Rollups](#rollups) verwenden [Betrugsnachweise](#fraud-proof). +Ein Sicherheitsmodell für bestimmte [Layer-2](#layer-2)-Lösungen, bei denen zur Geschwindigkeitserhöhung Transaktionen [„aufgerollt"](/#rollups) und als einzelne Transaktion an Ethereum übermittelt werden. Die Transaktionsberechnung erfolgt off-chain und wird dann mit einem Nachweis ihrer Gültigkeit an die Hauptchain übertragen. Diese Methode erhöht die Anzahl der möglichen Transaktionen bei gleichzeitiger Aufrechterhaltung der Sicherheit. Einige [Rollups](#rollups) verwenden [Betrugsnachweise](#fraud-proof). - Zero-Knowledge-Rollups + Zero-Knowledge Gruppierungen (Rollups) ### Validium {#validium} -Eine Off-Chain-Lösung, die [Gültigkeitsnachweise](#validity-proof) verwendet, um den Transaktionsdurchsatz zu verbessern. Im Gegensatz zu [Zero-Knowledge-Rollups](#zk-rollup) werden Validium-Daten nicht auf Layer 1 im [Mainnet](#mainnet) gespeichert. +Eine Off-Chain-Lösung, die [Gültigkeitsnachweise](#validity-proof) verwendet, um den Transaktionsdurchsatz zu verbessern. Im Gegensatz zu [Zero-Knowledge Rollups](#zk-rollup) werden Validium-Daten nicht auf der Layer 1 [Mainnet](#mainnet) gespeichert. Validium @@ -1054,7 +1062,7 @@ Eine Off-Chain-Lösung, die [Gültigkeitsnachweise](#validity-proof) verwendet, ### Vyper {#vyper} -Eine Programmiersprache auf hohem Level mit Python-ähnlicher Syntax. Ziel ist es, näher an eine rein funktionale Sprache zu kommen. Von Vitalik Buterin erschaffen. +Eine Programmiersprache auf hohem Level mit Python-ähnlicher Syntax. Ziel ist es, näher an eine rein funktionale Sprache zu kommen. Von Vitalik Buterin erstellt. Vyper @@ -1074,7 +1082,7 @@ Software, die [private Schlüssel](#private-key) hält. Wird verwendet, um auf E ### Web3 {#web3} -Die dritte Version des Web. Erstmals vorgeschlagen von Dr. Gavin Wood, stellt Web3 eine neue Vision und den Fokus für Webanwendungen dar – von zentral geführten und verwalteten Anwendungen zu Anwendungen, die auf dezentralen Protokollen basieren (siehe [dApp](#dapp)). +Die dritte Version des Web. Web3 wurde erstmals von Dr. Gavin Wood vorgeschlagen und stellt eine neue Vision und einen neuen Schwerpunkt für Webanwendungen dar – von zentral betriebenen und verwalteten Anwendungen hin zu Anwendungen, die auf dezentralen Protokollen basieren (siehe [dapp](#dapp)). Web2 vs. Web3 @@ -1090,11 +1098,11 @@ Die kleinste Stückelung von [Ether](#ether). 1018 wei = 1 Ether. ### Null-Adresse {#zero-address} -Eine spezielle Ethereum-Adresse, die nur aus Nullen besteht und als Zieladresse von einer [Vertragserstellungs-Transaktion](#contract-creation-transaction) spezifiziert wird. +Eine Ethereum-Adresse, die ausschließlich aus Nullen besteht und häufig als Adresse verwendet wird, um Token aus dem eigenen Umlauf zu entfernen. Es ist zu unterscheiden zwischen dem Token-Burning(), bei dem Tokens über den Token-Burning-Mechanismus endgültig aus dem System der Smart Contracts entfernt werden, und dem Token-Burning, bei dem Tokens an diese Adresse gesendet werden. ### Zero-Knowledge-Nachweis {#zk-proof} -Ein Zero-Knowledge-Nachweis ist eine kryptografische Methode, die es einer Person ermöglicht, zu beweisen, dass eine Aussage wahr ist, ohne zusätzliche Informationen zu übermitteln. +Ein Zero-Knowledge-Nachweis ist eine kryptografische Methode, die es einer Person ermöglicht zu beweisen, dass eine Aussage wahr ist, ohne zusätzliche Informationen zu übermitteln. Zero-Knowledge Gruppierungen (Rollups) diff --git a/src/content/translations/de/history/index.md b/src/content/translations/de/history/index.md index b07cc8579dd..97ae7a5b231 100644 --- a/src/content/translations/de/history/index.md +++ b/src/content/translations/de/history/index.md @@ -11,20 +11,97 @@ Ein Zeitstrang aller wichtigsten Meilensteine, Forks und Aktualisierungen der Et -Forks entstehen, wenn wichtige technische Neuerungen oder Änderungen am Netzwerk vorgenommen werden müssen. Sie stammen in der Regel von den [Ethereum-Verbesserungsvorschlägen (EIPs)](/eips) ab und verändern die "Richtlinien" des Protokolls. +Forks entstehen, wenn größere technische Aktualisierungen oder Änderungen am Netzwerk vorgenommen werden müssen – sie gehen in der Regel aus Ethereum-Verbesserungsvorschlägen (EIPs) hervor und ändern die „Regeln“ des Protokolls. -Wenn für eine Standardsoftware eine Aktualisierung benötigt wird, veröffentlicht der Hersteller lediglich eine neue Version für den Endbenutzer. Blockchains arbeiten anders, da es keinen alleinigen Besitzer gibt. [Ethereum Anwendungen](/developers/docs/nodes-and-clients/) müssen die Software aktualisieren um neue Regeln zu implementieren. Plus Block Ersteller (Miner in einer Proof-of-Work Umgebung, Validatoren in einer Proof-of-Stake Umgebung) und Nodes erstellen neue Blöcke und müssen diese, entsprechend der neuen Richtlinien, validieren. [Mehr zu Konsensmechanismen](/Entwickler/Dokumente/Konsensmechanismen/) +Wenn für eine Standardsoftware eine Aktualisierung benötigt wird, veröffentlicht der Hersteller lediglich eine neue Version für den Endbenutzer. Blockchains arbeiten anders, da es keinen alleinigen Besitzer gibt. Ethereum-Clients müssen ihre Software aktualisieren, um die neuen Fork-Regeln zu implementieren. Plus Block Ersteller (Miner in einer Proof-of-Work Umgebung, Validatoren in einer Proof-of-Stake Umgebung) und Nodes erstellen neue Blöcke und müssen diese, entsprechend der neuen Richtlinien, validieren. Mehr zu Konsensmechanismen +Diese Regeländerungen können eine vorübergehende Aufspaltung des Netzwerks verursachen. Neue Blöcke konnen nach den neuen oder den alten Regeln erzeugt werden. Forks werden in der Regel im Voraus vereinbart, damit die Clients die Änderungen einheitlich übernehmen und der Fork mit den Upgrades zur Main Chain wird. In seltenen Fällen können jedoch Meinungsverschiedenheiten über Forks dazu führen, dass das Netzwerk dauerhaft gespalten wird – am bekanntesten ist die Entstehung von Ethereum Classic durch den DAO Fork. -Diese Regeländerungen können eine temporäre Teilung im Netzwerk erzeugen. Neue Blöcke konnen nach den neuen oder den alten Regeln erzeugt werden. Forks werden in der Regel im Voraus vereinbart, damit die Clients die Änderungen einheitlich übernehmen und der Fork mit den Upgrades zur Main Chain wird. In seltenen Fällen jedoch können Meinungsverschiedenheiten über Forks zu einer dauerhaften Spaltung des Netzwerks führen; am bekanntesten ist die Gründung von Ethereum Classic durch den [[DAO-Fork]](#dao-fork). + + +Springen Sie direkt zu Informationen über einige besonders wichtige vergangene Upgrades: [Die Beacon Chain](/roadmap/beacon-chain/); [Die Zusammenführung](/roadmap/merge/); und [EIP-1559](#london) + +Suchen Sie nach weiteren Protokoll-Upgrades? [Erfahren Sie mehr über anstehende Upgrades auf der Ethereum-Roadmap](/roadmap/). + + + +## 2023 {#2023} + +### Shanghai {#shanghai} + + + +#### Zusammenfassung {#shanghai-summary} + +Das Shanghai-Update ebnete den Weg für Staking-Auszahlungen auf der Ausführungsebene. Die Fusion mit dem Capella-Upgrade ermöglichte es Blöcken, Auszahlungen zu akzeptieren, wodurch Stakern erlaubt wurde, ihre ETH von der Beacon Chain auf der Ausführungsebene abzuheben. + + + +

      +
    • EIP-3651Führt die COINBASE-Adresse ein
    • +
    • EIP-3855Neue PUSH0-Anweisung
    • +
    • EIP-3860Initcode-Größenlimit
    • +
    • EIP-4895Beacon Chain Push-Abhebungen als Operationen
    • +
    • EIP-6049Veraltet SELFDESTRUCT
    • +
    -Suchst du nach weiteren Protokoll Verbesserungen? [Erfahre etwas über bevorstehende Upgrades von Ethereum](/roadmap/). +- [Lesen Sie die Spezifikation für das Shanghai-Upgrade](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md) + +--- + +### Capella {#capella} + + + +#### Zusammenfassung {#capella-summary} + +Das Capella-Update war das drittgrößte Upgrade für die Konsensebene (Beacon Chain) und ermöglichte Staking-Abhebungen. Mit Capella, das gleichzeitig mit dem Upgrade der Ausführungsebene, Shanghai, erfolgte, wurde die Staking-Abhebungsfunktion zur Verfügung gestellt. + +Das Upgrade für die Konsensebene ermöglichte es Stakern, die bei der ersten Einzahlung keine Abhebungen vornehmen durften, Abhebungen vorzunehmen. + +Das Upgrade hat auch eine automatische Kontenbereinigungsfunktion bereitgestellt, die kontinuierlich Validator-Konten auf verfügbare Prämienzahlungen oder vollständige Abhebungen überprüft und verarbeitet. + +- [Mehr zu Staking-Auszahlungen](/staking/withdrawals/). +- [Lesen Sie die Spezifikationen für das Capella-Upgrade](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/) ## 2022 {#2022} +### Paris (Die Zusammenführung) {#paris} + + + +#### Zusammenfassung {#paris-summary} + +Das Paris-Upgrade wurde durch das Erreichen einer [endgültigen Gesamtschwierigkeit](/glossary/#terminal-total-difficulty) von 58750000000000000000000 auf der Proof-of-Work-Blockchain ausgelöst. Dies geschah am 15. September 2022 im Block 15537393 und löste das Paris-Upgrade im nächsten Block aus. Paris war der Übergang zur [Zusammenführung (The Merge)](/roadmap/merge/) – seine wichtigste Funktion bestand darin, den [Proof-of-Work](/developers/docs/consensus-mechanisms/pow)-Mining-Algorithmus und die damit verbundene Konsenslogik abzuschalten und stattdessen [Proof-of-Stake](/developers/docs/consensus-mechanisms/pos) einzuschalten. Paris selbst war ein Upgrade für die [Ausführungsclients](/developers/docs/nodes-and-clients/#execution-clients) (entspricht Bellatrix auf der Konsensebene), das ihnen ermöglichte, Anweisungen von ihren verbundenen [Konsensclients](/developers/docs/nodes-and-clients/#consensus-clients) entgegenzunehmen. Hierfür musste ein neuer Satz interner API-Methoden aktiviert werden, der gemeinsam als [Engine-API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) bekannt ist. Dies war wohl das bedeutendste Upgrade in der Geschichte von Ethereum seit [Homestead](#homestead)! + +- [Lesen Sie die Spezifikation für das Paris-Upgrade](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md) + + + +
      +
    • EIP-3675Ermöglicht den Übergang des Ethereum-Netzwerks vom Konsensmechanismus Proof-of-Work (PoW) zum Proof-of-Stake (PoS).
    • +
    • EIP-4399 Die SCHWIERIGKEITEN mit der Wiederverwendung und Lesbarkeit des Opcodes werden durch den PREVRANDAO behoben
    • +
    + +
    + +--- + +### Bellatrix {#bellatrix} + + + +#### Zusammenfassung {#bellatrix-summary} + +Das Bellatrix-Upgrade war das zweite geplante Upgrade für die [Beacon Chain](/roadmap/beacon-chain), das die Blockchain auf die [die Zusammenführung](/roadmap/merge/) vorbereitete. Es setzt Validator-Strafen für Inaktivität und strafbare Vergehen auf alle ihre Werte. Bellatrix beinhaltet auch eine Aktualisierung der Fork-Choice-Regeln, um die Blockchain auf die Zusammenführung und den Übergang vom letzten Proof-of-Work-Block zum ersten Proof-of-Stake-Block vorzubereiten. Dies beinhaltet auch, dass die Konsensclients über die [Terminale Gesamtschwierigkeit](/glossary/#terminal-total-difficulty) von 58750000000000000000000 informiert werden. + +- [Lesen Sie die Spezifikation des Bellatrix-Upgrades](https://github.com/ethereum/consensus-specs/tree/dev/specs/bellatrix) + +--- + ### Gray Glacier {#gray-glacier} @@ -37,7 +114,9 @@ Das Gray Glacier Netzwerk-Upgrade hat die [Schwierigkeitsbombe](/glossary/#diffi -- [EIP-5133](https://eips.ethereum.org/EIPS/eip-5133) – _verzögert die Schwierigkeitsbombe bis September 2022_ +
      +
    • EIP-5133Verzögert die Explosion der Schwierigkeitsbombe bis Ende September 2022
    • +
    @@ -58,7 +137,9 @@ Das Arrow Glacier Netzwerk-Upgrade hat die [Schwierigkeitsbombe](/glossary/#diff -- [EIP-4345](https://eips.ethereum.org/EIPS/eip-4345) – _Verschiebung der Schwierigkeitsbombe bis Juni 2022_ +
      +
    • EIP-4345verzögert die Schwierigkeitsbombe bis Juni 2022
    • +
    @@ -70,15 +151,15 @@ Das Arrow Glacier Netzwerk-Upgrade hat die [Schwierigkeitsbombe](/glossary/#diff #### Zusammenfassung {#altair-summary} -Das Altair-Upgrade war das erste geplante Upgrade für die [Beacon Chain](/roadmap/beacon-chain). Es wurde als Unterstützung für „Sync-Komitees" hinzugefügt und somit das Aktivieren sogenannter „Light-Clients", die Inaktivität von Validatoren und die Reduzierung von Strafen bis hin zu ihren vollen Werten. +Das Altair-Upgrade war das erste geplante Upgrade für die [Beacon Chain](/roadmap/beacon-chain). Es wurde die Unterstützung für „Sync-Komitees“ hinzugefügt, die leichte Clients aktivierte und die Strafen für Inaktivität und Slashing von Validatoren erhöht, da die Entwicklung der Zusammenführung voranschritt. -- [Lesen Sie die Altair-Upgrade-Spezifikation](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair) +- [Lesen Sie die Spezifikation zum Altair-Upgrade](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair) -#### Fun Fact! {#altair-fun-fact} +#### Fun Fact! {#altair-fun-fact} -Altair war das erste große Netzwerk-Upgrade, für das es einen genauen Einführungszeitpunkt gab. Jedes vorherige Upgrade basierte auf einer angegebenen Blocknummer auf der Proof-of-Work-Kette, bei der die Blockzeiten variieren. Die Beacon Chain erfordert kein Lösen von Proof-of-Work und arbeitet stattdessen mit einem zeitbasierten Epochensystem, das aus 32 zwölfsekündigen „Slots" besteht, in denen Validatoren Blöcke vorschlagen können. Deshalb wussten wir genau, wann wir Epoche 74.240 erreichen würden und Altair live gehen würde! +Altair war das erste große Netzwerk-Upgrade, für das es einen genauen Einführungszeitpunkt gab. Jedes vorherige Upgrade basierte auf einer angegebenen Blocknummer auf der Proof-of-Work-Chain, bei der die Blockzeiten variieren. Die Beacon Chain erfordert kein Lösen von Proof-of-Work und arbeitet stattdessen mit einem zeitbasierten Epochensystem, das aus 32 zwölfsekündigen „Slots" besteht, in denen Validatoren Blöcke vorschlagen können. Deshalb wussten wir genau, wann wir Epoche 74.240 erreichen würden und Altair live gehen würde! -- [Beaconcha.in Glossar – Slots](https://kb.beaconcha.in/glossary#slots) +- [Blockzeit](/developers/docs/blocks/#block-time) --- @@ -88,19 +169,21 @@ Altair war das erste große Netzwerk-Upgrade, für das es einen genauen Einführ #### Zusammenfassung {#london-summary} -Das London-Upgrade führte die [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) ein, die den Markt für Transaktionsgebühren reformierte sowie Änderungen bei der Handhabung von Gasrückerstattungen und dem [Ice-Age](/glossary/#ice-age)-Zeitplan beinhaltete. +Das London-Upgrade führte die [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) ein, das den Markt für Transaktionsgebühren reformierte sowie Änderungen bei der Handhabung von Gasrückerstattungen und dem [Ice-Age](/glossary/#ice-age)-Zeitplan beinhaltete. -- [Sind Sie ein DApp-Entwickler? Bitte aktualisieren Sie Ihre Bibliotheken und Werkzeuge.](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/london-ecosystem-readiness.md) -- [Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/) -- [Die Erklärung der Ethereum Cat Herder lesen](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41) +- [Sind Sie ein dApp-Entwickler? Bitte aktualisieren Sie Ihre Bibliotheken und Werkzeuge.](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/london-ecosystem-readiness.md) +- [Lesen Sie die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/) +- [Lesen Sie die Erklärung der Ethereum Cat Herder](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41) -- [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) – _verbessert den Markt für Transaktionsgebühren_ -- [EIP-3198](https://eips.ethereum.org/EIPS/eip-3198) – _gibt die „BASEFEE" aus einem Block zurück_ -- [EIP-3529](https://eips.ethereum.org/EIPS/eip-3529) - _reduziert die Gasrückerstattungen für den EVM-Betrieb_ -- [EIP-3541](https://eips.ethereum.org/EIPS/eip-3541) - _verhindert die Bereitstellung von Verträgen, die mit „0xEF" beginnen_ -- [EIP-3554](https://eips.ethereum.org/EIPS/eip-3554) – _verschiebt die Eiszeit auf Dezember 2021_ +
      +
    • EIP-1559trägt zur Verbesserung der Marktbedingungen bei und senkt gleichzeitig die Transaktionsgebühren
    • +
    • EIP-3198zur Wiedergabe eines BASEFEE-Blockcodes
    • +
    • EIP-3529reduziert die Gasgebühren für EVM-Operationen
    • +
    • EIP-3541verhindert die Bereitstellung von Verträgen, verhindert, die mit 0xEF beginnen
    • +
    • EIP-3554plant, das Ice Age bis Dezember 2021 zu verlängern
    • +
    @@ -112,17 +195,19 @@ Das London-Upgrade führte die [EIP-1559](https://eips.ethereum.org/EIPS/eip-155 #### Zusammenfassung {#berlin-summary} -Mit dem Berliner Upgrade wurden die Gaskosten für bestimmte EVM-Aktionen optimiert und die Unterstützung für mehrere Transaktionsarten erweitert. +Mit dem Berlin-Upgrade wurden die Gaskosten für bestimmte EVM-Aktionen optimiert und die Unterstützung für mehrere Transaktionsarten erweitert. - [Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/) - [Lies die Erklärung der Ethereum Cat Herder](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80) -- [EIP-2565](https://eips.ethereum.org/EIPS/eip-2565) – _senkt ModExp-Gaskosten_ -- [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) – _ermöglicht eine einfachere Unterstützung für mehrere Transaktionsarten_ -- [EIP-2929](https://eips.ethereum.org/EIPS/eip-2929) – _Gaskostenerhöhungen für staatliche Zugangsopcodes_ -- [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) – _fügt optionale Zugriffslisten hinzu_ +
      +
    • EIP-2565senkt die Gaskosten für ModExp
    • +
    • EIP-2718ermöglicht einen viel einfacheren Zugang zu den verschiedenen Transaktionsdiensten
    • +
    • EIP-2929Gaskostenerhöhung für Zustandszugriffs-Opcodes
    • +
    • EIP-2930fügt eine optionale Zugriffsliste hinzu
    • +
    @@ -136,7 +221,7 @@ Mit dem Berliner Upgrade wurden die Gaskosten für bestimmte EVM-Aktionen optimi #### Zusammenfassung {#beacon-chain-genesis-summary} -Die [Beacon Chain](/roadmap/beacon-chain/) benötigte zum sicheren Betrieb 16.384 Einzahlungen von 32 gestakten ETH. Dazu kam es am 27. November, was bedeutet, dass die Beacon Chain am 1. Dezember 2020 mit der Erzeugung von Blöcken begann. Dies ist ein wichtiger erster Schritt, um die [Vision von Ethereum](/roadmap/vision/) zu erreichen. +Die [Beacon Chain](/roadmap/beacon-chain/) benötigte zum sicheren Betrieb 16.384 Einzahlungen von 32 gestakten ETH. Dazu kam es am 27. November, was bedeutet, dass die Beacon Chain am 1. Dezember 2020 mit der Erzeugung von Blöcken begann. Dies ist ein wichtiger erster Schritt zur Verwirklichung der [Ethereum-Vision](/roadmap/vision/). [Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2020/11/27/eth2-quick-update-no-21/) @@ -146,15 +231,15 @@ Die [Beacon Chain](/roadmap/beacon-chain/) benötigte zum sicheren Betrieb 16.38 --- -### Staking Einzahlungsvertrag auf Ethereum hochgeladen {#staking-deposit-contract} +### Staking-Einzahlungsvertrag bereitgestellt {#staking-deposit-contract} #### Zusammenfassung {#deposit-contract-summary} -Mit dem Stakingeinzahlungsvertrag wurde [Staking](/glossary/#staking) im Ökosystem von Ethereum eingeführt. Obwohl es sich um einen [Mainnet](/glossary/#mainnet)-Vertrag handelt, hatte er einen direkten Einfluss auf den Zeitplan für die Einführung der [Beacon Chain](/roadmap/beacon-chain/), einem wichtigen [Ethereum-Upgrade](/roadmap/). +Mit dem Staking-Einzahlungsvertrag wurde [Staking](/glossary/#staking) im Ökosystem von Ethereum eingeführt. Obwohl es sich um einen [Mainnet](/glossary/#mainnet)-Vertrag handelt, hatte er einen direkten Einfluss auf den Zeitplan für die Einführung der [Beacon Chain](/roadmap/beacon-chain/), einem wichtigen [Ethereum-Upgrade](/roadmap/). -[Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2020/11/04/eth2-quick-update-no-19/) +[Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2020/11/04/eth2-quick-update-no-19/) Staking @@ -168,14 +253,16 @@ Mit dem Stakingeinzahlungsvertrag wurde [Staking](/glossary/#staking) im Ökosys #### Zusammenfassung {#muir-glacier-summary} -Die Muir-Glacier-Abspaltung führte eine Verzögerung in die [Schwierigkeitsbombe](/glossary/#difficulty-bomb) ein. Erhöhungen der Blockschwierigkeitsstufe des [Proof-of-Work](/developers/docs/consensus-mechanisms/pow/) Konsensmechanismus drohte die Nutzbarkeit von Ethereum zu verringern, indem die Wartezeiten für das Senden von Transaktionen und die Verwendung von dApps erhöht werden. +Die Muir-Glacier-Fork führte eine Verzögerung in die [Schwierigkeitsbombe](/glossary/#difficulty-bomb) ein. Erhöhungen der Blockschwierigkeitsstufe des [Proof-of-Work](/developers/docs/consensus-mechanisms/pow/)-Konsensmechanismus drohten, die Nutzbarkeit von Ethereum zu verringern, indem die Wartezeiten für das Senden von Transaktionen und die Verwendung von dApps erhöht werden. -- [Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/) -- [Die Erklärung der Ethereum Cat Herder lesen](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210) +- [Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2019/12/23/ethereum-muir-glacier-upgrade-announcement/) +- [Lies die Erklärung der Ethereum Cat Herder](https://medium.com/ethereum-cat-herders/ethereum-muir-glacier-upgrade-89b8cea5a210) -- [EIP-2384](https://eips.ethereum.org/EIPS/eip-2384) – _verzögert die Schwierigkeitsbombe auf weitere 4.000.000 Blöcke, oder ~611 Tage._ +
      +
    • EIP-2384verzögert die Schwierigkeitsbombe um weitere 4.000.000 Blöcke, oder etwa 611 Tage.
    • +
    @@ -189,49 +276,54 @@ Die Muir-Glacier-Abspaltung führte eine Verzögerung in die [Schwierigkeitsbomb #### Zusammenfassung {#istanbul-summary} -Die Istanbul-Abspaltung: +Die Istanbul-Fork: -- Optimierte [Gas-](/glossary/#gas) Kosten für bestimmte Aktionen in der [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). -- Verbesserte Denial-of-Service Angriffswiderstandskraft. +- Optimierte die [Gaskosten](/glossary/#gas) für bestimmte Aktionen in der [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). +- Verbesserte Widerstandskraft gegen Denial-of-Service-Angriffe. - Machte [Skalierungslösungen der Ebene 2](/developers/docs/scaling/#layer-2-scaling) basierend auf SNARKs und STARKs leistungsstärker. - Aktivierte Ethereum und Zcash zur Interoperation. -- Erlaubte Verträge zur Einführung kreativerer Funktionen. +- Ermöglichte Verträgen, kreativere Funktionen einzuführen. -[Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/) +[Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/) -- [EIP-152](https://eips.ethereum.org/EIPS/eip-152) - _erlaubt Ethereum, mit datenschutzfreundlichen Währungen wie Zcash zu arbeiten._ -- [EIP-1108](https://eips.ethereum.org/EIPS/eip-1108) - _billigere Kryptographie zur Verbesserung der [gas](/Glossar/#Gas) Kosten._ -- [EIP-1344](https://eips.ethereum.org/EIPS/eip-1344) - _Schutz von Ethereum vor Replay-Angriffen durch Hinzufügen von „CHAINID" [opcode](/developers/docs/ethereum-stack/#ethereum-virtual-machine)._ -- [EIP-1884](https://eips.ethereum.org/EIPS/eip-1884) - _Optimierung der Opcode-Gaspreise basierend auf dem Verbrauch._ -- [EIP-2028](https://eips.ethereum.org/EIPS/eip-2028) - _verringert die Kosten für CallData, um mehr Daten in Blöcken zu ermöglichen - gut für [Layer 2 Skalierung](/developers/docs/scaling/#layer-2-scaling)._ -- [EIP-2200](https://eips.ethereum.org/EIPS/eip-2200) - _andere Opcode-Gaspreis-Änderungen._ +
      +
    • EIP-152ermöglicht es dem Ethereum-Netzwerk, mit anonymen Währungen wie Zcash zu arbeiten, wodurch das Recht auf Privatsphäre geschützt werden kann.
    • +
    • EIP-1108eine günstigere Kryptographie zur Optimierung der Gaskosten.
    • +
    • EIP-1344schützt Ethereum vor Wiederholungsangriffen durch Hinzufügen des CHAINID -Opcodes.
    • +
    • EIP-1884die Optimierung der Gaspreis-Verfahrenscodes auf der Grundlage des Gasverbrauchs.
    • +
    • EIP-2028reduziert die Kosten für „CallData“, mit dem Ziel, mehr Daten in den Blöcken zu implementieren – gut für Layer-2-Skalierbarkeit.
    • +
    • EIP-2200 +weitere Änderungen der Gaspreisverfahrenscodes.
    • +
    --- -### Konstantinopel {#constantinople} +### Constantinople {#constantinople} #### Zusammenfassung {#constantinople-summary} -Die Konstantinopel-Fork: +Die Constantinople-Fork: - Sie stellte sicher, dass die Blockchain nicht einfrieren konnte, bevor der [Proof-of-Stake](#beacon-chain-genesis) implementiert wurde. - Optimierte die [Gas-](/glossary/#gas)-Kosten für bestimmte Aktionen in der [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). - Fügte die Möglichkeit hinzu, mit Adressen zu interagieren, die noch nicht erstellt wurden. -[Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/) +[Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/) - + -- [EIP-145](https://eips.ethereum.org/EIPS/eip-145) – _optimiert Kosten bestimmter On-Chain-Aktionen._ -- [EIP-1014](https://eips.ethereum.org/EIPS/eip-1014) – _gestattet Ihnen das Interagieren mit Adressen, die noch erstellt werden müssen._ -- [EIP-1052](https://eips.ethereum.org/EIPS/eip-1052) – _optimiert die Kosten bestimmter On-Chain-Aktionen._ -- [EIP-1234](https://eips.ethereum.org/EIPS/eip-1234) – _verhindert die Einfrieren der Blockchain vor dem Proof-of-Stake._ +
      +
    • EIP-145optimiert die Kosten von bestimmten On-Chain-Aktionen.
    • +
    • EIP-1014erlaubt es Ihnen, Adressen zu verwenden, die noch nicht angelegt wurden.
    • +
    • EIP-1052optimiert die Kosten bestimmter On-Chain-Aktionen.
    • +
    • EIP-1234stellt sicher, dass die Blockchain vor dem Proof-of-Stake-Verfahren nicht eingefroren wird.
    • +
    @@ -247,24 +339,26 @@ Die Konstantinopel-Fork: Die Byzantium-Fork: -- Reduzierte die Block-[Mining](/developers/docs/consensus-mechanisms/pow/mining/)-Belohnungen von 5 auf 3 ETH. +- Reduzierte die Block-[Mining](/developers/docs/consensus-mechanisms/pow/mining/)-Prämien von 5 auf 3 ETH. - Verzögerte die [Schwierigkeitsbombe](/glossary/#difficulty-bomb) um ein Jahr. - Fügte die Möglichkeit hinzu, nicht zustandsverändernde Aufrufe zu anderen Verträgen zu tätigen. -- Hinzufügung bestimmter Kryptographie-Methoden, um [Layer-2-Skalierung](/developers/docs/scaling/#layer-2-scaling) zu ermöglichen. +- Fügte bestimmte Kryptographie-Methoden hinzu, um [Layer-2-Skalierung](/developers/docs/scaling/#layer-2-scaling) zu ermöglichen. [Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/) -- [EIP-140](https://eips.ethereum.org/EIPS/eip-140) - _ergänzt „REVERT„ Opcode._ -- [EIP-658](https://eips.ethereum.org/EIPS/eip-658) - _Statusfeld zu Transaktionsbestätigungen hinzugefügt, um Erfolg oder Misserfolg anzuzeigen._ -- [EIP-196](https://eips.ethereum.org/EIPS/eip-196) - _erweitert elliptische Kurve und skalare Multiplikation, um [ZK-Snarks](/developers/docs/scaling/zk-rollups/) zu ermöglichen._ -- [EIP-197](https://eips.ethereum.org/EIPS/eip-197) - \_erweitert elliptische Kurve und Skalarmultiplikation, um [ZK-Snarks](/entwickler/docs/scaling/zk-rollups/) zu ermöglichen. -- [EIP-198](https://eips.ethereum.org/EIPS/eip-198) - _ermöglicht RSA-Signaturprüfung._ -- [EIP-211](https://eips.ethereum.org/EIPS/eip-211) - _erweitert die Unterstützung für Rückgabewerte variabler Länge._ -- [EIP-214](https://eips.ethereum.org/EIPS/eip-214) - _erweitert den „STATICCALL"-Opcode, der nicht zustandsverändernde Aufrufe zu anderen Verträgen erlaubt._ -- [EIP-100](https://eips.ethereum.org/EIPS/eip-100) - _Ändert die Formel für die Schwierigkeitsanpassung._ -- [EIP-649](https://eips.ethereum.org/EIPS/eip-649) - _verzögert [difficulty bomb](/glossary/#difficulty-bomb) um 1 Jahr und reduziert die Blockbelohnung von 5 auf 3 ETH._ +
      +
    • EIP-140integriert den Operationscode REVERT.
    • +
    • EIP-658Statusfeld zu Transaktionsbelegen hinzugefügt, Erfolg oder Misserfolg anzuzeigen.
    • +
    • EIP-196integriert die elliptische Kurve sowie die Multiplikation mit einem Skalar, die die Verwendung von ZK-Snarks ermöglichen.
    • +
    • EIP-197fügt elliptische Kurven und Skalarmultiplikation hinzu, um ZK-Snarks zu ermöglichen.
    • +
    • EIP-198aktiviert Überprüfung der RSA-Signatur.
    • +
    • EIP-211fügt Unterstützung der Ausgabewerte eines Variableninhalts hinzu.
    • +
    • EIP-214integriert den Verfahrenscode, STATICCALL der nicht zustandsveränderte Aufrufe für andere Verträge erlaubt.
    • +
    • EIP-100ändert die Formel für die Einstellung des Schwierigkeitsgrades.
    • +
    • EIP-649verzögert die Schwierigkeitsbombe um ein Jahr und senkt die vollen Blockprämien von 5 auf 3 ETH.
    • +
    @@ -278,20 +372,22 @@ Die Byzantium-Fork: #### Zusammenfassung {#spurious-dragon-summary} -Die Spurious-Dragon-Fork war die zweite Reaktion auf die Denial-of-Service (DoS) Angriffe auf das Netzwerk (September/Oktober 2016) einschließlich: +Die Spurious-Dragon-Fork war die zweite Reaktion auf die Denial-of-Service(DoS)-Angriffe auf das Netzwerk (September/Oktober 2016), einschließlich: -- Abstimmen der Opcode-Preise, um zukünftige Angriffe auf das Netzwerk zu verhindern. -- Aktivierung des „Debloat“ (Wachstumsveringerung) des Blockchain-Zustandes. +- Abstimmen der Verfahrenscode-Preise, um zukünftige Angriffe auf das Netzwerk zu verhindern. +- Aktivierung von „Debloat“ (Wachstumsveringerung) für den Blockchain-Zustand. - Hinzufügen von Replay-Angriffsschutz. -[Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) +[Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) -- [EIP-155](https://eips.ethereum.org/EIPS/eip-155) – _verhindert, dass Transaktionen von einer Ethereum-Kette auf eine andere Kette übertragen werden, z. B. eine Testnet-Transaktion, die auf der Hauptkette von Ethereum wiedergegeben wird._ -- [EIP-160](https://eips.ethereum.org/EIPS/eip-160) – _passt die Preise für den Opcode „EXP" an - erschwert die Verlangsamung des Netzes durch rechenintensive Vertragsoperationen._ -- [EIP-161](https://eips.ethereum.org/EIPS/eip-161) – _ermöglicht die Entfernung von leeren Konten, die durch DOS-Angriffe hinzugefügt wurden._ -- [EIP-170](https://eips.ethereum.org/EIPS/eip-170) – _ändert die maximale Codegröße, die ein Vertrag auf der Blockchain haben kann, auf 24576 Bytes._ +
      +
    • EIP-155verhindert, dass Transaktionen von einer Ethereum-Blockchain wieder auf einer alternativen Blockchain gesendet werden. Beispiel: Eine Testnetz-Transaktion, die auf der Ethereum Haupt-Blockchain wiedergegeben wird.
    • +
    • EIP-160passt Preise des EXP-Verfahrenscodes an – und wirkt somit der Verlangsamung des Netzwerks durch rechenintensive Vertragsklauseln entgegen.
    • +
    • EIP-161ermöglicht das Löschen leerer Konten, die bei DOS-Attacken hinzugefügt wurden.
    • +
    • EIP-170ändert die maximale Codegröße, die ein Vertrag in der Blockchain haben kann, in 24576 Bytes.
    • +
    @@ -303,16 +399,18 @@ Die Spurious-Dragon-Fork war die zweite Reaktion auf die Denial-of-Service (DoS) #### Zusammenfassung {#tangerine-whistle-summary} -Die Tangerine-Whistle-Fork war die erste Reaktion auf die Denial-of-Service (DoS) Angriffe auf das Netzwerk (September/Oktober 2016) einschließlich: +Die Tangerine-Whistle-Fork war die erste Reaktion auf die Denial-of-Service(DoS)-Angriffe auf das Netzwerk (September/Oktober 2016), einschließlich: -- Lösung der dringenden Probleme im Bereich der Netzwerkgesundheit im Zusammenhang mit unterbewerteten Operationscodes. +- Lösung der dringenden Probleme im Bereich der Netzwerkgesundheit im Zusammenhang mit unterbewerteten Verfahrenscodes. -[Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/) +[Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/) - + -- [EIP-150](https://eips.ethereum.org/EIPS/eip-150) – _erhöht die Gaskosten von Opcodes, die in Spam -Attacken benutzt werden können._ -- [EIP-158](https://eips.ethereum.org/EIPS/eip-158) – _verringert die Zustandsgröße, indem eine große Anzahl leerer Konten erntfernt wird, die aufgrund von Fehlern in früheren Versionen des Ethereum-Protokolls zu sehr niedrigen Kosten in den Zustand gebracht wurden._ +
      +
    • EIP-150erhöht die Gaskosten der Verfahrenscodes, die bei Spam-Attacken verwendet werden können.
    • +
    • EIP-158reduziert die Zustandsgröße, indem sie eine große Anzahl leerer Konten entfernt, die aufgrund von Fehlern in früheren Versionen des Ethereum-Protokolls ursprünglich minimale Transaktionsgebühren enthielten.
    • +
    @@ -324,13 +422,13 @@ Die Tangerine-Whistle-Fork war die erste Reaktion auf die Denial-of-Service (DoS #### Zusammenfassung {#dao-fork-summary} -Die DAO-Abspaltung war eine Reaktion auf den [DAO-Angriff 2016](https://www.coindesk.com/markets/2016/06/25/understanding-the-dao-attack/), bei dem einem unsicheren [DAO](/glossary/#dao)-Vertrag durch einen Hack über 3,6 Millionen ETH entzogen wurden. Die Fork verschiebt das Guthaben aus dem fehlerhaften Vertrag in einen [neuen Vertrag](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754) mit einer einzigen Funktion: Abheben. Jeder, der Geld verloren hat, konnte 1 ETH für jeden 100 DAO-Token in seiner Wallet abheben. +Die DAO-Abspaltung war eine Reaktion auf den [DAO-Angriff 2016](https://www.coindesk.com/learn/understanding-the-dao-attack/), bei dem einem unsicheren [DAO](/glossary/#dao)-Vertrag durch einen Hack über 3,6 Millionen ETH entzogen wurden. Die Fork verschiebt das Guthaben aus dem fehlerhaften Vertrag in einen [neuen Vertrag](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754) mit einer einzigen Funktion: Abheben. Jeder, der Geld verloren hat, konnte 1 ETH für jeden 100 DAO-Token in seiner Wallet abheben. -Über diese Vorgehensweise wurde seitens der Ethereum-Community abgestimmt. Jeder ETH-Inhaber konnte über eine Transaktion auf [, einer Abstimmungsplattform,](http://v1.carbonvote.com/) abstimmen. Die Entscheidung zur Fork erreichte mehr als 85 % der Stimmen. +Über diese Vorgehensweise wurde seitens der Ethereum-Community abgestimmt. Jeder ETH-Inhaber konnte über eine Transaktion auf [, einer Abstimmungsplattform,](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/) abstimmen. Die Entscheidung für die Fork erhielt mehr als 85 % der Stimmen. -Einige Miner weigerten sich, die Abspaltung mitzutragen, da der Vorfall des DAO keinen Fehler im Protokoll darstellte. Sie gründeten [Ethereum Classic](https://ethereumclassic.org/). +Einige Miner weigerten sich, die Abspaltung mitzutragen, da der Vorfall des DAO keinen Fehler im Protokoll darstellte. Sie gründeten daraufhin [Ethereum Classic](https://ethereumclassic.org/). -[Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2016/07/20/hard-fork-completed/) +[Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2016/07/20/hard-fork-completed/) --- @@ -340,15 +438,18 @@ Einige Miner weigerten sich, die Abspaltung mitzutragen, da der Vorfall des DAO #### Zusammenfassung {#homestead-summary} -Die Homestead-Abspaltung, die in die Zukunft schaute. Sie enthielt mehrere Protokolländerungen und eine Änderung des Netzwerks, die Ethereum die Möglichkeit gab, weitere Netzwerk-Upgrades durchzuführen. +Die Homestead-Fork, die in die Zukunft schaute. Sie enthielt mehrere Protokolländerungen und eine Änderung des Netzwerks, die Ethereum die Möglichkeit gab, weitere Netzwerk-Upgrades durchzuführen. -[Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2016/02/29/homestead-release/) +[Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2016/02/29/homestead-release/) -- [EIP-2](https://eips.ethereum.org/EIPS/eip-2) – _führt Änderungen am Prozess der Vertragserstellung durch._ -- [EIP-7](https://eips.ethereum.org/EIPS/eip-7) – _fügt einen neuen Opcode hinzu: `DELEGATECALL`_ -- [EIP-8](https://eips.ethereum.org/EIPS/eip-8) – _führt devp2p Forward-Kompatibilitätsanforderungen ein_ +
      +
    • EIP-2ermöglicht es Bearbeitungen bei der Entwicklung von Smart Contracts vorzunehmen.
    • +
    • EIP-7 +führt einen neuen Verfahrenscode ein: DELEGATECALL
    • +
    • EIP-8präsentiert DEVP2P zur Erfüllung der Kompatibilitätsanforderungen
    • +
    @@ -362,9 +463,9 @@ Die Homestead-Abspaltung, die in die Zukunft schaute. Sie enthielt mehrere Proto #### Zusammenfassung {#frontier-thawing-summary} -Die Frontier-Thawing-Abspaltung hob das 5.000 [Gas](/glossary/#gas)-Limit pro [Block](/glossary/#block) auf und setzte den Standardgaspreis auf 51 [gwei](/glossary/#gwei). Dies erlaubte Transaktionen – Transaktionen benötigen 21.000 Gas. Die [Schwierigkeitsbombe](/glossary/#difficulty-bomb) wurde eingeführt, um eine zukünftige harte Abspaltung zu [Proof-of-Stake](/glossary/#pos) sicherzustellen. +Die Frontier-Thawing-Fork hob das 5.000 [Gas](/glossary/#gas)-Limit pro [Block](/glossary/#block) auf und setzte den Standardgaspreis auf 51 [gwei](/glossary/#gwei). Dies erlaubte Transaktionen – Transaktionen benötigen 21.000 Gas. Die [Schwierigkeitsbombe](/glossary/#difficulty-bomb) wurde eingeführt, um eine zukünftige harte Abspaltung zu [Proof-of-Stake](/glossary/#pos) sicherzustellen. -- [Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/) +- [Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/) - [Lesen Sie das Ethereum Protokoll-Update 1](https://blog.ethereum.org/2015/08/04/ethereum-protocol-update-1/) --- @@ -377,7 +478,7 @@ Die Frontier-Thawing-Abspaltung hob das 5.000 [Gas](/glossary/#gas)-Limit pro [B Frontier war live, aber soweit nur die Implementierung eines grundsätzlichen Rahmens des Ethereum-Projekts. Es folgte der erfolgreichen olympischen Testphase. Es war für technische Benutzer gedacht, speziell für Entwickler. [Blöcke](/glossary/#block) hatten ein [Gas](/glossary/#gas)-Limit von 5.000. Diese Zeit des „Auftauens" ermöglichte es den Minern, ihren Betrieb zu starten und für Early-Adopters, ihre Kunden zu installieren, ohne dies „überstürzen“ zu müssen. -[Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) +[Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) @@ -389,7 +490,7 @@ Frontier war live, aber soweit nur die Implementierung eines grundsätzlichen Ra Ether ging offiziell 42 Tage lang in den Verkauf. Man konnte es mit BTC kaufen. -[Die Ankündigung der Ethereum Foundation lesen](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/) +[Lies die Ankündigung der Ethereum Foundation](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/) --- diff --git a/src/content/translations/de/staking/dvt/index.md b/src/content/translations/de/staking/dvt/index.md new file mode 100644 index 00000000000..92096849b7b --- /dev/null +++ b/src/content/translations/de/staking/dvt/index.md @@ -0,0 +1,91 @@ +--- +title: Verteilte Validierungstechnologie (VVT) +description: Verteilte Validierungstechnologie (VVT) ermöglicht den verteilten Betrieb eines Ethereum-Validators durch mehrere Parteien. +lang: de +--- + +# Verteilte Validierungstechnologie (VVT) {#distributed-validator-technology} + +Verteilte Validatortechnologie (VVT) ist ein Ansatz zur Sicherheit für Validatoren, bei dem die Verwaltung von Schlüsseln und die Verantwortlichkeit für Unterschriften auf mehrere Parteien verteilt wird, um einzelne Fehler zu reduzieren und die Belastbarkeit des Validators zu erhöhen. + +Das geschieht durch die **Aufteilung des privaten Schlüssels**, der zur Absicherung eines Validators verwendet wird, **über viele Computer hinweg**, die in einem "Cluster" organisiert sind. Der Vorteil dabei: Für Angreifer wird es äußerst schwierig, Zugriff auf den Schlüssel zu erlangen, da er nicht vollständig auf einer einzigen Maschine gespeichert ist. Es ermöglicht auch, dass einige Knoten offline gehen können, da die erforderliche Signierung von einer Teilmenge der Maschinen in jedem Cluster durchgeführt werden kann. Das reduziert einzelne Fehlerpunkte im Netzwerk und macht das gesamte Validator-Set robuster. + +![Eine Grafik, die veranschaulicht, wie ein einzelner Validierungsschlüssel in Schlüsselteile aufgeteilt wird und diese auf mehrere Knoten mit verschiedenen Komponenten verteilt werden.](./dvt-cluster.png) + +## Wofür ist VVT erforderlich? {#why-do-we-need-dvt} + +### Sicherheit {#security} + +Die Validatoren generieren sowohl zwei öffentliche als auch private Schlüsselpaare: Validatorschlüssel zum Teilnehmen am Konsens und Abhebungsschlüssel zum Zugriff auf Gelder. Während die Validatoren die Abhebungsschlüssel in einem Offline-Speicher (Cold Storage) sichern können, müssen die privaten Schlüssel immer online sein. Wenn der private Schlüssel eines Validators kompromittiert wird, kann ein Angreifer den Validator kontrollieren und das kann zu "Slashing" oder zum Verlust der ETH des Stakers führen. VVT kann dabei helfen, dieses Risiko zu minimieren. Und so funktioniert es: + +Durch die Verwendung von VVT können Staker am Staking teilnehmen, während sie den privaten Schlüssel des Validators im Offline-Speicher (Cold Storage) aufbewahren. Erreicht wird das, indem der ursprüngliche, vollständige Validator-Schlüssel verschlüsselt und dann in Schlüsselteile aufgeteilt wird. Die Schlüsselteile sind online und werden an mehrere Knoten verteilt, was den verteilten Betrieb des Validators ermöglicht. Das ist möglich, weil Ethereum-Validatoren BLS-Signaturen verwenden, die additiv sind, d. h. der vollständige Schlüssel kann rekonstruiert werden, indem ihre Bestandteile zusammengefügt werden. So kann der Staker den vollständigen, ursprünglichen "Master"-Validator-Schlüssel sicher offline aufbewahren. + +### Kein einzelner Ausfallpunkt {#no-single-point-of-failure} + +Wenn ein Validator auf mehrere Operatoren und Maschinen verteilt ist, kann er einzelne Hardware- und Softwareausfälle überstehen, ohne offline zu gehen. Das Ausfallrisiko kann außerdem durch den Einsatz unterschiedlicher Hardware- und Softwarekonfigurationen über Knotenpunkte in einem Cluster gesenkt werden. Diese Ausfallsicherheit ist für Konfigurationen mit nur einem Knotenpunkt nicht verfügbar – sie bedingt sich durch die DVT-Schicht. + +Falls eine der Maschinen innerhalb eines Clusters ausfällt (Beispiel: Von vier Operatoren innerhalb eines Validatoren-Clusters nutzt ein Nutzer einen spezifischen Client, der fehlerhaft ist), stellen die anderen sicher, dass der Validator nach wie vor läuft. + +### Dezentralisierung {#decentralization} + +Das ideale Szenario für Ethereum ist es, so viele unabhängig arbeitende Validatoren zu haben, wie möglich. Dennoch sind ein paar wenige Anbieter von Staking-Services sehr beliebt geworden und haben daher einen substantiellen Anteil der im Netzwerk für Staking eingesetzten ETH unter Kontrolle. Mithilfe von DVT können diese Operatoren existieren und gleichzeitig die Dezentralisierung des Staking gewährleisten. Das liegt daran, dass die Schlüssel für jeden Validator auf viele Maschinen verteilt sind und es einer viel größeren Absprache bedarf, einen Validator mit böswilligen Absichten einzusetzen. + +Ohne VVT ist es für Staking-Anbieter einfacher, nur eine oder zwei Client-Konfigurationen für all ihre Validatoren zu unterstützen. Damit werden die Auswirkungen eines Fehlers einzelner Clients verstärkt. VVT kann verwendet werden, um das Risiko auf mehrere Client-Konfigurationen und unterschiedliche Hardware zu verteilen und so Widerstandsfähigkeit durch Vielfalt zu erreichen. + +**VVT bietet für Ethereum folgende Vorteile:** + +1. **Dezentralisierung** von Ethereums Proof-of-Stake-Konsens +2. Sichert den **aktiven Status** des Netzwerks +3. Schafft **Fehlertoleranz** für Validatoren +4. **Minimiertes Vertrauen** beim Betrieb von Validatoren +5. **Weniger Slashing** und Risiko von Ausfallzeiten +6. **Verbesserte Vielfalt** (Client, Datenzentrum, Standort, Regulierung, etc.) +7. **Erhöhte Sicherheit** bei der Verwaltung von Validatorschlüsseln + +## Wie funktioniert VVT? {#how-does-dvt-work} + +Ein VVT-Lösungsansatz beinhaltet folgende Komponenten: + +- **[Shamir's geheimes Teilen](https://medium.com/@keylesstech/a-beginners-guide-to-shamir-s-secret-sharing-e864efbf3648)** - Validatoren nutzen [BLS Schlüssel](https://en.wikipedia.org/wiki/BLS_digital_signature). Individuelle BLS-"Anteile eines Schlüssels" ("Schlüsselanteile") können kombiniert werden zu einem einzigen vereinigten Schlüssel (Signatur). Bei VVT ist der private Schlüssel für einen Validator die kombinierte BLS-Signatur jedes Operators im Cluster. +- **[Schwellenwert eines Signatur-Schemas](https://medium.com/nethermind-eth/threshold-signature-schemes-36f40bc42aca)** – Bestimmt die Anzahl der einzelnen Schlüsselanteile, die für Signieraufgaben erforderlich sind, z. B. 3 von 4. +- **[Verteilte Schlüsselgenerierung (DKG)](https://medium.com/toruslabs/what-distributed-key-generation-is-866adc79620)** – Kryptografischer Prozess, der die Schlüsselteile generiert und dazu dient, die Teile eines bestehenden oder neuen Validatorschlüssels an die Knoten in einem Cluster zu verteilen. +- **[Mehrparteienberechnung (MPC)](https://messari.io/report/applying-multiparty-computation-to-the-world-of-blockchains)** – Der vollständige Validierungsschlüssel wird im Geheimen mithilfe einer Mehrparteienberechnung generiert. Der vollständige Schlüssel ist keinem einzelnen Betreiber bekannt – sie kennen immer nur ihren eigenen Teil (ihren "Anteil"). +- **Konsensprotokoll** – Das Konsensprotokoll wählt einen Knoten aus, der den Block vorschlägt. Sie teilen den Block mit den anderen Knoten des Clusters, die ihre Schlüsselteile zur Gesamtsignatur hinzufügen. Wenn ausreichend Schlüsselteile zusammengekommen sind, wird der Block auf Ethereum vorgeschlagen. + +Verteilte Validatoren verfügen über eine eingebaute Fehlertoleranz und können selbst dann weiterarbeiten, wenn einige der einzelnen Knoten offline gehen. Das bedeutet, dass der Cluster selbst dann belastbar ist, wenn sich einige der Knoten darin als böswillig oder träge erweisen. + +## Anwendungsfälle von VVT {#dvt-use-cases} + +VVT hat erhebliche Auswirkungen auf die breite Staking-Branche: + +### Solo-Staker {#solo-stakers} + +VVT ermöglicht zudem depotloses Staking, indem es ermöglicht, Validatorenschlüssel über externe Knoten zu verteilen, während der gesamte Schlüssel offline bleibt. Das bedeutet, dass Solo-Staker nicht gezwungen sind, in erheblichem Umfang in Hardware zu investieren, während sie durch die Verteilung der Schlüsselteile gegen potentielle Angriffe gestärkt sind. + +### Staking als Dienstleistung (SaaS) {#saas} + +Betreiber (zum Beispiel Staking-Gemeinschaften (Staking Pools) und institutionelle Staker), die viele Validatoren verwalten, können über VVT ihr eigenes Risiko senken. Durch die verteilte Infrastruktur lässt sich der Betrieb redundanter und die eingesetzte Hardware abwechslungsreich gestalten. + +VVT verteilt die Verantwortung der Schlüsselverwaltung auf mehrere Knoten. So kann ein Teil der operativen Kosten geteilt werden. VVT kann zudem sowohl das Risiko als auch die Versicherungskosten für Staking-Anbieter verringern. + +### Staking-Pool {#staking-pools} + +Aufgrund von Standard-Validatoren sind Staking-Pools und Anbieter von Liquid Staking gezwungen, einzelen Betreibern in unterschiedlichem Maße Vertrauen entgegen zu bringen, da Gewinne und Verluste im gesamten Pool sozialisiert werden. Außerdem sind sie auf die Betreiber angewiesen, um die Signaturschlüssel zu sichern, da bis dato keine alternative Möglichkeit dazu bestand. + +Auch wenn seit jeher versucht wird, das Risiko zu streuen, indem die Anteile auf mehrere Betreiber verteilt werden, verwaltet jeder Betreiber nach wie vor einen erheblichen Anteil unabhängig. Sich auf einen einzigen Betreiber zu verlassen, birgt immense Risiken, wenn dieser nicht die gewünschten Leistungen erbringt, Ausfallzeiten hat, kompromittiert wird oder mit böswilligen Absichten agiert. + +Durch den Einsatz von VVT ist es in geringerem Umfang erforderlich, den Betreibern zu vertrauen. **Pools können es den Betreibern ermöglichen, Einsätze zu halten, ohne dass sie die Schlüssel der Validatoren verwahren müssen** (da nur Schlüsselanteile verwendet werden). Außerdem können verwaltete Einsätze auf mehrere Betreiber verteilt werden (z. B. kann ein einzelner Betreiber 1000 Validatoren verwalten, während diese Validatoren von mehreren Betreibern gemeinsam betrieben werden). Verschiedene Betreiberkonfigurationen stellen sicher, dass im Falle des Ausfalls eines Betreibers die anderen noch in der Lage sind, die Bescheinigung auszustellen. Das steigert Redundanz und Diversifizierung, die zu einer besseren Leistung und Widerstandsfähigkeit führt und gleichzeitig die Erträge maximiert. + +Ein weiterer Vorteil, einem einzelnen Betreiber weniger vertrauen zu müssen, besteht darin, dass Staking-Pools eine offenere und genehmigungsfreie Teilnahme von Betreibern ermöglichen können. Auf diese Weise können Dienste ihr Risiko reduzieren und die Dezentralisierung von Ethereum unterstützen, indem sie sowohl kuratierte als auch genehmigungsfreie Gruppen von Betreibern verwenden, z. B. durch die Verbindung von Home- oder kleineren Stakern mit größeren. + +## Mögliche Nachteile der Verwendung von DVT {#potential-drawbacks-of-using-dvt} + +- **Zusätzliche Komponente** – mit der Einführung eines VVT-Knotens wird ein weiteres Teil hinzugefügt, das möglicherweise fehlerhaft oder anfällig sein kann. Eine Möglichkeit, das abzumildern, besteht darin, mehrere Implementierungen eines VVT-Knotens anzustreben, d. h. mehrere VVT-Clients (ähnlich wie es mehrere Clients für die Konsens- und Ausführungsebene gibt). +- **Operative Kosten** – da VVT den Validator auf mehrere Parteien verteilt, sind mehr Knoten für den Betrieb erforderlich als nur ein einziger Knoten und das bedingt höhere Betriebskosten. +- **Potenziell erhöhte Latenzzeit** – da VVT ein Konsensprotokoll verwendet, um einen Konsens zwischen mehreren Knoten zu erreichen, die einen Validator betreiben, kann es potenziell zu einer erhöhten Latenzzeit kommen. + +## Weiterführende Informationen {#further-reading} + +- [Spezifikationen der verteilten Ethereum-Validatoren (hohe Stufe)](https://github.com/ethereum/distributed-validator-specs) +- [Technische Daten der verteilten Ethereum-Validatoren](https://github.com/ethereum/distributed-validator-specs/tree/dev/src/dvspec) +- [Shamir secret sharing – Demo-App](https://iancoleman.io/shamir/) diff --git a/src/content/translations/de/staking/pools/index.md b/src/content/translations/de/staking/pools/index.md index 4c1a8301d4f..f09a800d27b 100644 --- a/src/content/translations/de/staking/pools/index.md +++ b/src/content/translations/de/staking/pools/index.md @@ -10,7 +10,7 @@ sidebarDepth: 2 summaryPoints: - Staken Sie und verdienen Sie Belohnungen mit jedem ETH-Betrag, indem Sie Ihre Kräfte mit anderen bündeln - Überspringen Sie den schwierigen Teil und vertrauen Sie den Validator-Betrieb einem Drittanbieter an - - Halten Sie Liquiditäts-Token in Ihrer eigenen Wallet + - Halten Sie Staking-Token in Ihrer eigenen Wallet --- ## Was sind Staking-Pools? {#what-are-staking-pools} @@ -26,7 +26,7 @@ Zusätzlich zu den Vorteilen, die wir in unserer [Einführung zum Staking](/stak - + @@ -35,9 +35,9 @@ Zusätzlich zu den Vorteilen, die wir in unserer [Einführung zum Staking](/stak Gepooltes oder delegiertes Staking wird vom Ethereum-Protokoll nicht nativ unterstützt, aber angesichts der Nachfrage nach Benutzern, weniger als 32 ETH einzusetzen, wurde eine wachsende Zahl von Lösungen entwickelt, um diesen Bedarf zu befriedigen. -Jeder Pool und die von verschiedenen Teams entwickelten Tools oder Smart Contracts haben jeweils eigene Vorteile und Risiken. Pools ermöglichen Benutzern, ihr ETH gegen einen Token zu tauschen, der für das ETH steht, das gestaked wurde. Der Token wird als "Liquid Staking Derivative" bezeichnet. Benutzer können damit eine beliebige Menge ETH gegen eine entsprechende Menge eines zinsbringenden Tokens tauschen, der eine Rendite aus den Staking-Belohnungen generiert, die auf das zugrunde liegende gestakede ETH angewendet werden (und umgekehrt) auf dezentralen Börsen, obwohl das eigentliche ETH auf der Beacon Chain gestaked bleibt. Dies bedeutet, dass Tauschvorgänge zwischen einem zinsbringenden gestaked-ETH-Produkt und "rohem ETH" in beide Richtungen schnell, einfach und nicht nur mit 32 ETH verfügbar sind. +Jeder Pool und die von verschiedenen Teams entwickelten Tools oder Smart Contracts haben jeweils eigene Vorteile und Risiken. Pools ermöglichen Benutzern, ihr ETH gegen einen Token zu tauschen, der für das ETH steht, das gestaked wurde. Der Token ist nützlich, weil er es den Nutzern ermöglicht, einen beliebigen ETH-Betrag in einen gleichwertigen Betrag eines renditetragenden Tokens zu tauschen, der auf dezentralen Börsen eine Rendite aus den auf die zugrunde liegende eingesetzte ETH angewendeten Staking-Belohnungen generiert (und umgekehrt), auch wenn die eigentliche ETH auf der Konsensebene eingesetzt bleibt. Dies bedeutet, dass Tauschvorgänge zwischen einem zinsbringenden gestaked-ETH-Produkt und "rohem ETH" in beide Richtungen schnell, einfach und nicht nur mit 32 ETH verfügbar sind. -Allerdings bedingen diese liquiden Staking-Derivate tendenziell ein kartellähnliches Verhalten, eine große Menge an gestaktem ETH ist unter der Kontrolle weniger zentralisierter Organisationen und nicht in den Händen vieler unabhängiger Einzelpersonen. Dies schafft die Möglichkeit für Zensur oder Wertentzug. Der Goldstandard für Staking sollte darin bestehen, dass Einzelpersonen Validatoren, wann immer möglich, auf ihrer eigenen Hardware betreiben. +Allerdings kommt es mit diesen gestaketen ETH-Token zu kartellähnlichem Verhalten. Eine große Menge an gestaketem ETH gelangt unter Kontrolle einiger weniger zentralisierter Organisationen, anstatt sich auf viele unabhängige Individuen zu verteilen. Dies schafft die Möglichkeit für Zensur oder Wertentzug. Der Goldstandard für Staking sollte darin bestehen, dass Einzelpersonen Validatoren, wann immer möglich, auf ihrer eigenen Hardware betreiben. [Mehr zu den Risiken von Staking-Token](https://notes.ethereum.org/@djrtwo/risks-of-lsd). @@ -49,24 +49,24 @@ Attributindikatoren werden unten verwendet, um auf nennenswerte Stärken oder Sc Es gibt eine Vielzahl von Optionen, die Ihnen bei der Einrichtung helfen. Anhand der Indikatoren oben können Sie die Tools unten besser beurteilen. - -Hinweis: Es ist wichtig, einen Dienst zu wählen, der Client-Diversität ernst nimmt, da er die Sicherheit des Netzwerks verbessert und Ihr Risiko begrenzt. Dienstleistungen, die nachweislich die Mehrzahl der Kunden begrenzen, sind wie folgt markiert: „Diverse Kunden". - + +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". + 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-Liquiditäts-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 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. Sofort! Die Aktualisierung des Netzwerks auf Shanghai/Capella erfolgte im April 2023 und führte das Auszahlen von Staking-Mitteln ein. Validatoren haben nun die Möglichkeit, Staking-Pools, die sie unterstützen, zu verlassen und eine Auszahlung von ETH an ihre angegebene Adresse anzuweisen. Dies macht es möglich, Ihren Anteil am Stake gegen das zugrundeliegende ETH einzulösen. Bitte wenden Sie sich an Ihren Anbieter, um zu erfahren, wie er diese Funktionalität unterstützt. -Alternativ erlauben manche Pools, die ERC-20-Liquiditäts-Token benutzen, dass ihre Nutzer diese Token auf dem freien Markt handeln können. So können Sie Ihre Staking-Position verkaufen und praktisch die Gelder „abheben", ohne tatsächlich ETH vom Staking-Vertrag zu entfernen. +Alternativ dazu ermöglichen Pools, die einen ERC-20 Staking-Token verwenden, den Handel mit diesem Token auf dem freien Markt, so dass Sie Ihre Staking-Position verkaufen können, ohne tatsächlich ETH aus dem Staking-Vertrag zu entnehmen. Mehr zum Abheben von Staking @@ -74,7 +74,7 @@ Alternativ erlauben manche Pools, die ERC-20-Liquiditäts-Token benutzen, dass i Es gibt viele Ähnlichkeiten zwischen diesen gepoolten Staking-Optionen und zentralisierten Börsen, wie z. B. die Möglichkeit, kleine ETH-Beträge zu staken und sie zu bündeln, um Validatoren zu aktivieren. -Im Gegensatz zu zentralisierten Börsen nutzen viele andere gepoolte Staking-Optionen Smart Contracts und/oder Liquiditäts-Token. Dabei handelt es sich normalerweise um ERC-20-Token, die Sie in Ihrer eigenen Wallet aufbewahren und wie alle anderen Token kaufen oder verkaufen können. Dies bietet eine gewisse Souveränität und Sicherheit, da Sie die Kontrolle über Ihre Token besitzen. Allerdings haben Sie immer noch keine direkte Kontrolle über den Validator-Client, der in Ihrem Namen im Hintergrund Attestierungen ausgibt. +Im Gegensatz zu zentralisierten Börsen nutzen viele andere gepoolte Staking-Optionen Smart Contracts und/oder Staking-Token, bei denen es sich in der Regel um ERC-20-Token handelt, die Sie in Ihrer eigenen Wallet halten und wie jeden anderen Token kaufen oder verkaufen können. Dies bietet eine gewisse Souveränität und Sicherheit, da Sie die Kontrolle über Ihre Token besitzen. Allerdings haben Sie immer noch keine direkte Kontrolle über den Validator-Client, der in Ihrem Namen im Hintergrund Attestierungen ausgibt. Einige Pooling-Optionen sind im Hinblick auf die Nodes, die sie unterstützen, stärker dezentralisiert als andere. Um die Gesundheit und Dezentralisierung des Netzwerks zu fördern, werden Staker immer dazu ermutigt, einen Pooling-Service auszuwählen, der eine genehmigungsfreie, dezentrale Gruppe von Node-Betreibern ermöglicht. diff --git a/src/content/translations/de/staking/saas/index.md b/src/content/translations/de/staking/saas/index.md index 8f876e3372c..45a4395736b 100644 --- a/src/content/translations/de/staking/saas/index.md +++ b/src/content/translations/de/staking/saas/index.md @@ -23,15 +23,15 @@ Das Ethereum-Protokoll unterstützt keine Delegation von Staking, daher wurden d - - + + ## Bitte beachten {#what-to-consider} -Es gibt eine wachsende Anzahl von SaaS-Anbietern, die Ihnen beim Staken Ihres ETH helfen, doch jeder hat eigene Vorteile und Risiken. Sie sollten bedenken, dass alle SaaS-Optionen im Vergleich zum Home-Staking zusätzliches Vertrauen erfordern. SaaS-Optionen können zusätzlichen Code haben, der die Ethereum-Clients umgibt, der nicht offen oder überprüfbar ist. SaaS beeinträchtigt zudem die Dezentralisierung des Netzwerks. Je nach Einstellung haben Sie möglicherweise keine Kontrolle über Ihren Validator – der Betreiber könnte mit Ihrem ETH unehrlich handeln. +Es kommen immer mehr SaaS-Anbieter auf den Markt, die Ihnen beim Staking Ihrer ETH helfen. Doch alle haben ihre eigenen Vorteile und Risiken. Bei allen SaaS-Optionen müssen Sie im Vergleich zum Home-Staking mehr Vertrauen aufbringen. SaaS-Optionen können zusätzlichen Code haben, der die Ethereum-Clients umgibt, der nicht offen oder überprüfbar ist. SaaS beeinträchtigt zudem die Dezentralisierung des Netzwerks. Je nach Einstellung haben Sie möglicherweise keine Kontrolle über Ihren Validator – der Betreiber könnte mit Ihrem ETH unehrlich handeln. Attributindikatoren werden unten verwendet, um nennenswerte Stärken oder Schwächen eines gelisteten SaaS-Anbieters zu signalisieren. Nutzen Sie bei Ihrer Auswahl eines Diensts, dem Sie Ihr Staking anvertrauen möchten, diesen Abschnitt als Referenz dafür, wie wir diese Attribute definieren. @@ -41,19 +41,19 @@ Attributindikatoren werden unten verwendet, um nennenswerte Stärken oder Schwä Nachfolgend finden Sie einige verfügbare SaaS-Anbieter. Verwenden Sie die obigen Indikatoren für die Beurteilung dieser Dienste - -Hinweis: Es ist wichtig, dass sie die Client-Diversität unterstützen, denn das erhöht die Netzsicherheit und begrenzt Ihre Risiken. Dienstleister, die nachweislich die Mehrzahl der Kunden begrenzen, sind wie folgt markiert „Diverse Clients." - + #### SaaS-Anbieter +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". + #### Schlüssel-Generatoren -Sie haben einen Vorschlag zu einem SaaS-Anbieter, den wir noch nicht haben? Prüfen Sie unsere [Produktlistenrichtlinie](/contributing/adding-staking-products/), um festzustellen, ob dies passt, und senden Sie ihn uns zur Prüfung zu. +Sie haben einen Vorschlag zu einem SaaS-Anbieter, den wir noch nicht haben? 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} diff --git a/src/content/translations/de/staking/solo/index.md b/src/content/translations/de/staking/solo/index.md index 47674e8ff0e..d15d8250aa3 100644 --- a/src/content/translations/de/staking/solo/index.md +++ b/src/content/translations/de/staking/solo/index.md @@ -15,7 +15,7 @@ summaryPoints: ## Was ist Solo-Staking? {#what-is-solo-staking} -Solo-Staking ist das [Betreiben eines Ethereum-Knotens](/run-a-node/), der mit dem Internet verbunden ist, und das Hinterlegen von 32 ETH, um einen Validator zu aktivieren, wodurch Sie direkt am Netzwerkkonsens teilnehmen können. +Solo-Staking ist das [Betreiben eines Ethereum-Knotens](/run-a-node/), der mit dem Internet verbunden ist, und das Hinterlegen von 32 ETH, um einen [Validator zu aktivieren](#faq), wodurch Sie direkt am Netzwerkkonsens teilnehmen können. **Das Solo-Staking erhöht die Dezentralisierung des Ethereum-Netzwerks **, damit Ethereum gegen Zensur resistenter und gegen Angriffe robuster wird. Andere Staking-Methoden können das Netzwerk nicht auf die gleiche Weise unterstützen. Das Solo-Staking ist die beste Staking-Option zur Absicherung von Ethereum. @@ -53,9 +53,9 @@ Es erfordert auch eine sehr einfache Hardware-Konfiguration und ein gewisses Ver
    -Genauso wie private Schlüssel Ihre Ethereum-Adresse sichern, müssen Sie Schlüssel speziell für Ihren Validator generieren. Sie müssen verstehen, wie Sie Seed-Phrasen oder private Schlüssel sicher und geschützt aufbewahren. +Genauso wie private Schlüssel Ihre Ethereum-Adresse sichern, müssen Sie Schlüssel speziell für Ihren Validator generieren. Sie müssen sich informieren, wie Sie Seed-Phrasen oder private Schlüssel sicher aufbewahren.{' '} -Ethereum Sicherheit und Betrugsprävention +Ethereum-Sicherheit und Betrugsprävention @@ -69,7 +69,7 @@ Ihre Belohnungen sind proportional zu der Zeit, in der Ihr Validator online ist Im Gegensatz zu Strafen für Inaktivität in Offline-Zeiten ist Slashing eine viel schwerwiegendere Strafe, die auf böswillige Vergehen beschränkt ist. Wenn Sie einen Minderheiten-Client mit Ihren Schlüsseln jeweils auf nur einer Maschine laden, wird das Risiko des Schrumpfens minimiert. Davon abgesehen müssen sich alle Staker der Risiken von Slashing bewusst sein. -Für mehr Informationen zu Slashing und dem Lebenszyklus von Validatoren, nutzen Sie diesen Link + Mehr über Slashing und den Lebenszyklus von Validatoren @@ -103,21 +103,21 @@ Attributindikatoren werden unten verwendet, um auf nennenswerte Stärken oder Sc Es gibt eine Vielzahl von Optionen, die Ihnen bei der Einrichtung helfen. Verwenden Sie die obigen Indikatoren, um Sie durch die folgenden Tools zu führen. - -Bitte beachten Sie, wie wichtig es ist, einen Minderheits-Client 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 - + #### Node-Tools +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. + #### Schlüssel-Generatoren -Diese Tools können als Alternative zur [Staking-Einlage CLI](https://github.com/ethereum/staking-deposit-cli/) verwendet werden, um bei der Schlüsselgenerierung zu helfen. +Diese Tools können als Alternative zur [Staking-Einlage-CLI](https://github.com/ethereum/staking-deposit-cli/) genutzt werden, um bei der Schlüsselgenerierung zu helfen. -Haben Sie einen Vorschlag für ein Staking-Tool, das wir noch nicht haben? Sehen Sie sich unsere [Produktlistenrichtlinie](/contributing/adding-staking-products/) an, um zu sehen, ob sie gut passt, und um sie zur Überprüfung einzureichen. +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. ## Erkunden Sie Solo-Staking-Anleitungen {#staking-guides} @@ -125,7 +125,7 @@ Haben Sie einen Vorschlag für ein Staking-Tool, das wir noch nicht haben? Sehen ## Häufig gestellte Fragen {#faq} -Dies sind einige der häufigsten Fragen zum Thema Staking, über die es sich zu informieren lohnt. +Das sind einige der häufigsten Fragen zum Thema Staking. Es ist lohnenswert sich damit auseinanderzusetzen. @@ -181,6 +181,7 @@ Offline-Strafen sind proportional dazu, wie viele andere gleichzeitig offline si + Abhebungen jeglicher Art aus der Beaconchain erfordern die Angabe von Rücktrittsberechtigungen. Neue Staker setzen dies bei der Schlüsselgenerierung und Einzahlung. Bestehende Staker, die dies noch nicht eingestellt haben, können ihre Schlüssel aktualisieren, um diese Funktion zu unterstützen. @@ -198,5 +199,5 @@ Um Ihr gesamtes Guthaben zu entsperren und zu erhalten, müssen Sie auch den Pro - [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_ - [Anleitung: Ethereum-Validator-Hardware kaufen](https://www.youtube.com/watch?v=C2wwu1IlhDc) – _EthStaker 2022_ -- [Schritt für Schritt: Wie man dem Ethereum 2.0 Testnetz beitritt](https://kb.beaconcha.in/Guides/Tutorium-eth2-Multi-Client) - _Butta_ -- [Eth2-Slashing-Präventionstipps](https://medium.com/prysmatic-labs/eth2-Slashing-Präventionstipps-f6faa5025f50) – _Raul Jordan 2020_ +- [Schritt für Schritt: Wie man dem Ethereum 2.0 Testnetz beitritt](https://kb.beaconcha.in/Guides/Tutorium-eth2-Multi-Client) - _ Butta_ +- [Eth2-Slashing-Präventionstipps](https://medium.com/prysmatic-labs/eth2-Slashing-Präventionstipps-f6faa5025f50) – _Raul Jordan 2020 _ diff --git a/src/content/translations/de/staking/withdrawals/index.md b/src/content/translations/de/staking/withdrawals/index.md index c7f2d77242b..e989af698ec 100644 --- a/src/content/translations/de/staking/withdrawals/index.md +++ b/src/content/translations/de/staking/withdrawals/index.md @@ -44,7 +44,7 @@ Vor dem Shanghai/Capella-Upgrade konnten Sie Ihr gestaktes ETH nicht verwenden o Die Angabe einer Auszahlungsadresse ist ein erforderlicher Schritt für jedes Validator-Konto, bevor es für die Abhebung von ETH aus seinem Guthaben infrage kommt. - Jedem Validator-Konto kann nur einmal eine einzige Auszahlungsadresse zugewiesen werden. Sobald eine Adresse ausgewählt und an die Beacon Chain übermittelt wurde, kann dies nicht rückgängig gemacht oder erneut geändert werden. Überprüfen Sie die Besitzverhältnisse und die Richtigkeit der angegebenen Adresse, bevor Sie sie einreichen. + Jedem Validatoren-Konto kann nur eine einzige Abhebungsadresse zugewiesen werden, und zwar nur einmal. Sobald eine Adresse ausgewählt und an die Konsensus-Ebene übermittelt wurde, lässt sich dieser Vorgang nicht mehr rückgängig machen. Überprüfen Sie die Besitzverhältnisse und die Richtigkeit der angegebenen Adresse, bevor Sie sie einreichen. In der Zwischenzeit besteht keine Bedrohung für Ihre Gelder, wenn Sie dies nicht tun, vorausgesetzt, Ihre Mnemonic-/Seed-Phrase ist offline sicher aufbewahrt und wurde in keiner Weise kompromittiert. Wenn keine Auszahlungsinformationen hinzugefügt werden, bleibt das ETH einfach im Validator-Konto gesperrt, wie es bislang der Fall war, bis eine Auszahlungsadresse angegeben wird. @@ -53,7 +53,7 @@ In der Zwischenzeit besteht keine Bedrohung für Ihre Gelder, w Die Angabe einer Auszahlungsadresse ist erforderlich, bevor _irgendwelche_ Gelder aus dem Guthaben eines Validator-Kontos übertragen werden können. -Benutzer, die das Staking vollständig beenden und ihr gesamtes Guthaben abheben möchten, müssen auch eine „freiwillige Ausstiegsnachricht" mit Validator-Schlüsseln unterzeichnen und übermitteln, die den Prozess des Ausstiegs aus dem Staking einleitet. Dies wird mit Ihrem Validator-Client durchgeführt und an Ihren Beacon-Node übermittelt und erfordert kein Gas. +Benutzer, die das Staking vollständig beenden und ihr gesamtes Guthaben abheben möchten, müssen auch eine „freiwillige Ausstiegsnachricht" mit Validator-Schlüsseln unterzeichnen und übermitteln, die den Prozess des Ausstiegs aus dem Staking einleitet. Der Vorgang erfolgt mit Ihrem Validator-Client und wird an Ihren Konsens-Node übermittelt. Dafür fallen keine Gas-Kosten an. Der Prozess, bei dem ein Validator aus dem Staking aussteigt, dauert je nachdem, wie viele andere gleichzeitig aussteigen, unterschiedlich lange. Sobald der Vorgang abgeschlossen ist, ist dieses Konto nicht mehr dafür verantwortlich, Validator-Netzwerkaufgaben auszuführen, ist nicht mehr für Belohnungen berechtigt und hat sein ETH nicht mehr „aufs Spiel gesetzt". Zu diesem Zeitpunkt wird das Konto als vollständig „abhebbar" gekennzeichnet. @@ -83,9 +83,9 @@ Sehen Sie sich diese Erklärung für die Abhebungen von Ethereum von Finematics Es ist notwendig, dass ein Validator, der den nächsten Block vorschlagen soll, eine Warteschlange mit bis zu 16 zugelassenen Auszahlungen erstellt. Ursprünglich beginnt man mit dem Validator-Index 0 und prüft, ob es gemäß den Protokollregeln eine berechtigte Auszahlung für dieses Konto gibt. Ist dies der Fall, wird sie zur Warteschlange hinzugefügt. Der für den nächsten Block vorgesehene Validator knüpft ununterbrochen dort an, wo der vorherige aufgehört hat, und verfährt dabei in stetiger Reihenfolge. -Stellen Sie sich eine analoge Uhr vor. Der Zeiger der Uhr zeigt auf die Stunde, bewegt sich in eine Richtung, überspringt keine Stunden und kehrt schließlich nach Erreichen der letzten Zahl wieder zum Anfang zurück.

    -Stellen Sie sich nun vor, anstelle von 1 bis 12 hat die Uhr Zahlen von 0 bis N (die Gesamtzahl der jemals auf der Beacon Chain registrierten Validator-Konten beträgt über 500.000 Stand Januar 2023).

    -Der Zeiger der Uhr zeigt auf den nächsten Validator, der auf berechtigte Auszahlungen geprüft werden muss. Es beginnt bei 0 und schreitet rundherum fort, ohne irgendwelche Konten zu überspringen. Wenn der letzte Validator erreicht ist, beginnt der Zyklus von vorne. +Stellen Sie sich eine analoge Uhr vor. Der Zeiger der Uhr zeigt auf die Stunde, bewegt sich in eine Richtung, lässt keine Stunden aus und kehrt schließlich nach Erreichen der letzten Zahl wieder an den Anfang zurück.

    +Stellen Sie sich nun vor, dass die Uhr statt 1 bis 12 die Zahlen 0 bis N hat (die Gesamtzahl der jemals auf der Konsensus-Ebene registrierten Validatoren-Konten, über 500.000 im Januar 2023).

    +Der Zeiger auf der Uhr zeigt auf den nächstenValidator, der auf zulässige Abhebungen geprüft werden muss. Es beginnt bei 0 und schreitet rundherum fort, ohne irgendwelche Konten zu überspringen. Wenn der letzte Validator erreicht ist, beginnt der Zyklus von vorne.
    #### Überprüfung eines Kontos auf Auszahlungen {#checking-an-account-for-withdrawals} @@ -148,12 +148,12 @@ Als Alternative zur Änderung der Auszahlungsadresse für einen bestimmten Valid
    -Falls Sie Mitglied eines Staking-Pools sind oder liquide Staking-Derivate besitzen, sollten Sie Ihren Anbieter kontaktieren, um mehr über die Handhabung von Staking-Auszahlungen zu erfahren, da jedes Serviceangebot unterschiedlich funktioniert. +Wenn Sie Teil eines Staking-Pools sind oder Staking-Token besitzen, sollten Sie sich bei Ihrem Anbieter erkundigen, wie Staking-Auszahlungen gehandhabt werden, da jeder Dienst anders funktioniert. Im Allgemeinen sollten Benutzer in der Lage sein, ihr zugrundeliegendes gestaktes ETH zurückzufordern oder zu ändern, welchen Staking-Anbieter sie nutzen. Wenn ein bestimmter Pool zu groß wird, können Mittel abgezogen, eingelöst und mit einem kleineren Anbieter neu gestaked werden. Oder, wenn Sie genug ETH angesammelt haben, könnten Sie von zu Hause aus staken. diff --git a/src/content/translations/de/web3/web2.png b/src/content/translations/de/web3/web2.png new file mode 100644 index 0000000000000000000000000000000000000000..6c11d93301816282c42a2f2292cf5df98425d479 GIT binary patch literal 139084 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

    MrN(OHlRyC{D|;eU=Xr)6q*)8O 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 R;&}i7002ovPDHLkV1g}0qDBA! literal 0 HcmV?d00001 diff --git a/src/content/translations/de/web3/web3.png b/src/content/translations/de/web3/web3.png new file mode 100644 index 0000000000000000000000000000000000000000..6a39613dc953fdff4ac0c8fe414019c3bc5abee9 GIT binary patch literal 137504 zcmYIvdpOhY|Gy3*Qt`HORz|fs6FG#)sgWEuBZP*PLr$49QA(OIZzCedVZ$8eEFv<; ziMP|7BPM1lhsCI$`h2hJcVE}*+O^kT_x-x>=i~W!J|55erKN=lACCwR2L}h=EmK2l z4vu3h92`fsxKA9uAzk5;Km0lAXKEkF!NL2_pXUfiW|q+5%Oio-CI%cNs@T`VKgW^! zxAi$Vs*-s3T{$_93f0~+)Q5%~VYE0^KC*|&H2D6S?tj{5B%robeC6ydFjT;-odeLE zSM_0)qkN@$&nSWz_4UcMwc9xfVc-Z5I%+5$b0uOW?S(*mowrZh1RVwyuP-oI}39%F%R+3dqDTGf(^(C=T|i@;X9ml-Lx#M(xU*iHb>~%0b%c zkdn25J>m|IU0|(Vss6%Wk%6JS%`6JvcxTmB2hpih7JYVCcG82w18bfVp1ZF5JDmA$ z+pd-sW>VuCd7wevy*&{)rf%7>SjI;_a zpDW1UKRhe+7P;=B25W%K*B<%UAJIR)Z2i>J(M^)vjY-c=-h8f4vY81n1E5+i}e1tGfz!>VL456sgey6)D0#d z%p)-S+GCXjcl@lGakZ*}#L!e_%hclg23=~;n7f-3E+K0!oc>s0=oSfV?;uUVJ}ce1 zhwOAr4E8Fi^CV1Cd6P@F7bhg9D&J#UOof19l5hU;35%{!6?oasAvbtzq!m@UiQG2r z`mVtQVG=FbuW{n(_x7uK59Vf^weBsy`fo8&`;MxA9x=DRNAzOO->-jV`O0ggm0oE= zh=;ZbXRzmr<5D1|cQy6|;C+1pBMgavPARa4?EAb)nk8t>k#}Akx3+bcyGOPjjJJ8y zIeIip7qw_2)Uom^b<5AQL8rjWM7KK6wPcN>g{njF?dnKm@4iBbV|oz@4%>$6ZzSwqpdULN<89E66GeOA?X&EvGouvrGnM>j zx++IM#$QZPEXt~G6c>B>I8ftbHmJq{=o-ib)VQ)Z-n>}Pn?e9wXtmHn#~F45N{-f8 z9TI(p4kt05v{@O7^YQN3%Zxv6 zxBXGehD5tw5}_*Nxck&l?4{NudApL2LbV!p;`x;s-)VteI+0dKg&2>B@f!wwh2B@A zVr_!oT@t!z8$O_NdSdMuBeNlrV(k?EPIsbf8S#J^W;0TJv@BK^x*2mgc1ytNWzi%^ zZx2q52`t#&;a*;6U$q} zNemG|Y{i6jmXSVku{6@F;74l%Ij114x$Q>%#sS0#?nBa9v$5p)CDNVh=T66n-wNI^ zgTLG)@%&6n-Hi8E%nqByZh!u@c$aitT1CwXyuymy@w%xdDI_Fh+7{oAwH#EH5nKm@ zA2KMKuY0=%ADi^jc9n)ZpU{h_dVAvQ6Z?I6WihjjPOufaH-5-B<^6PW=Lc~EA8 z=RlWsfCTP)NiPMl^|Zx-8iCZU)>S8|JQr6yDgE3I-diiR*g~3p$V4RXe`FQR*eyS` z386KV=QgGHpJ4F<{HD#OqwzIl>vi&^FP@}&Rc)r_jm60@ApL+c_xFrn70a+JL}MLH zLIArTqNMLrN$D21V07X#tUF$d*R=8%QO_&aK$@()`c6Csd0e}$fUns^jL=nE9qxAe zlce`66p6G)3o|RoS5bA4u3=I}99xE8bZXR<)}T-l{d02VPP;{86C#4&A0L>8jV4hD zEDB6S%Vzy>;>QI zix<|e2Y=4GRL%o*ym6dO`<|Cvz7~-f$2;G(x=L|i0j6@3AeKd_h80&&=Imrk&tk%;99{T{?nyzj{?_sb`V zJWV1=2>WwKfj=Mdsc$H_EDGLwAD5d{v-2ko96rZCwccO8@*$(#8sdLF-=K^(O>6LO zy+^5gNaO@Vb%6Gxk@h?aSK9Z8`g}%h;_bEv{-@8kxwcl#b8I>sA7i?}v)3HZ5J5ru*1C;9lxmm!6@z3@${KPK~rJDngJlS%@E zf1*KpTuhE=6IytF%WsPMq{_aN~FMn!Y_&{!f& z*WAXUo6Pa-&9SxB>tj4rH_&84#A21%Z(GBegKkmM%T6c$sHHW9jZCt7z2Yec%K_Ec z^6n5EcPVQCaFXI5A~p_xxY2tCzOYwz$JN<0^m#(2#F~W>vM>o7l*KjfvZ^IuriR(= zi0IPNp1nql(s)CRWu|UNiLr%3DZ4lxNi+4+gYBb$Z{sr+|70-kBYnVlCs)4F>%f0u zv8C37L$>%v)dg|NPLuV5zc)-jm>$1|tTT(jemjjH2B&mSiZ>=b)7ey^9Sv^CBMmfzLkQS$LXr@G)akL z4B<}*eF@X5(TJYq#DkDWNUJ;br_KvL?B;H$4rKABAj&9>!Zh0>xlz7KdKvPYs-*IH z=8<#U_rq6yogu~X&>j;Xd*9q{&Rmf25#~oqXA{2iTd2Y9IUxGTA^n_*7r@GMPP+ zSRo23{bFwSb=eFewOS1Nt&KmTY~vs0(Sv8XXSV-f!@P(JXAMNc&e<61FJ=QkNCMqp zZiblhz6iHK+xQ|;ig$JG__H5xoUS3SU9QCPZ}#d8vnRIW5wHs{%7x7wxdvmzDSP%O ze~Pe7<5H0ucS}b$R@wA~FW@OnVvt&`gxR@NOK>#9h9d5DmWBS}@o+^hQJhl6Y5>F} z`5kvA{1_?{@qXQTum9qL8DSO8eLp8`&JOF&KvE)G5}NwPx*3&J@9`Vwgj`o^Jp*Hs zXQ{)J_I3J_rTeZ2z0?^Sq!Ing<>Qehe;I&?@WYB^K4WTDST}c|*x*S21hb8?d_qj< zYj5iPS`T-f&U1qQ$z51vB$=Y(ctR@KMl-S+IkE-!naqpERQqqaVa^EW>s?K2eavn7 zX`sc$!9C&6K^yo2C*u$H(fG2$ndVJPdS5dCx0}Vy&63(S$H@jRYGjfsLDlRpE!_?~r9sTXiI~+n%T{fi%2s#)Yh7Os74&3*RLT|E#*beyd{f z?T&ItzvN1TMC?ZDh$x z`klrFY?y||g*0223m>>ent_(YGh$0eV7PPZt5~sxFhHF6c%u6#yvBhCpl9D~-C*xx zkl5a+oY+!dr2~u1xEp0UdObh-#H{l0)E_eZC{9Yi#Q1i_m1xMr$A(-zX;Kpqz5$5z zXrR)I$Es4oQ~p_Zy}Y`)3#FFD(W%58bk^cQTYM$YuSzx;g9zG^mmpgw4s?g0d`bSk z(CFjk!y8d{@{2$z4m%o_=4^-rt(6(Rx70L| zw991c0v=B%t%$DarCPsrJso3+*RE6kaQ<^DYKN*S`i8J_YBeh@R*FEohpaeqh0|%> zH;psz=oQ**^OLrVtmcY9%B#1*zfFDrK*H;*4_zbC*Og#Hw9-^p{3T=DRQ63=R&cn< z<{l#g}CUS(wYc`vojstEZ% zhBSKirEW0}Hn?#K7_Tn15wU*BWgABDLpCEz)(&D7>{%7Y)k3_1)I0lvVmj6wOO3Ap z?jT{GMt5b)jQX`ztjh!gy%Ew*cyr*zM9{bbev;7WZ{8_VC^kN@inb&V(>`8!Vf`V4 zZ*1`$^?VSYqn}64gSD&QBMKYNoH}(X>jVFFBSYcP-tIan$Ew?)97tsL&E7>jBPqa< zK~wnHhN*@&Qr);#UVj1F=AqK+7M{nvc>dkXKvlpDHaPgsh2@ER=k%|5BgTUsB|qIJ z)ZH}TH{J#!ErQ^M4unz6^oLt1v`|4!tJ-UvYbx%cgVG>JrPScae!O#jpmwQ zlN$esip3D*T10mQ(noG7TU?RTNI;vos#e#S8f=0QZtUE#vrV1G50}ciut(Q~FH%)F z?<*CgkGgQ@H|>ZmO_x{QsbPKE__=fbdZ5VR9tkzXB&47z2@g~ZK678+QI35^34{%; z6gwOnG|IlY1*&t6mJ=Qt5S%PqPqt(~iNr*Bu()@$k4jRAY>op8O5Iug%w$#dpt#x6 ze_3H;#gnH`vKGC16~co>=`LShmt$LAQTJaGHu|}i1Mw2$1OXJDsEE%5R!iOpd>_J` zonunuEGK+uHBT zShgb5zdorqgv+Kc`-22!00eU}ah(f~rVI})|Di(iANY;7KUH)e1sd2PJL9n5xQ!YB zCxhKu28$;VJ=6^TkmYdqjY^+ab7s`b#jCbVep{`D>9q$Ae8X-r;z3E(xu;|c5_vlr z`MJKr34*1Mf0)At1p_?#mf`VV#Bh)6B&a>ZQ%>Owc%;LPoq`8)?mFQ)+BUT`EpNVM zuA{fMrv)RH>pkJb-MgM)H`6?IOsYJHO2E9)#}BUg)&x=}s8rS`KQAI8UAb*X2E3yD z&&9frp|A6)lf>TL>6U5wZ2jOMc0uN*wI>cJ1XWYhh z+RiGQI7lxm_(((|0`sF4OxvhcKXkS3uM47{*$@%g_;`5g1LGBdrTxZ64kb$6BlCKO z2Z3RK_NdRubU)M5((v^tfY2}KmNT@F~g7>ath>g^;(5k#3x+AAH6 zbUY?}q$1h5I9|3oX~R^uHhp(~)goi|=tH*>H;|IH@ie*3w2rGRhkwId%~|#5kTUll zzV_ca;fF9cRdV0~L~UU5Y=WP%0X04yEbABZzPuJkn&NR}c5&ce)u`NwibM>6C!k|1GEu zq;eEfs1J%2R<9oY2hb8@g=NKXm$_ z2l^OL89$M5_bop{y2ISwL$5cDFoE`FApqQ#dfYEI$&v{-fBQe$QZwK@2L0WdH-bd< z?>X``+YDfzX#>&*`j%0|DybTNGud~Kd>54KN?UAYPH5ZB%cN|gACziVGE+BeP1zS# z4h4@p+Wl7V?8A+XWep|hCc`rnqlLss({3SeN zh~sqkiwe^7U=6tE^%f)?o|pt3QU_xqG8Q$;_U~gE9|MxXKHA}|EW(Uj_6%szlqpQW zL^TRVupTu^E!YKv7`+uTmbb3W!8DNsdV(Dp8oJeoozq-X{w>SXWagz;6L3$zC|TX@ ziyan~PAc!}(k;@`mdPxys;e#?gNNtuH08Uoq7Q^%n~gkSj*6gDULO%D7 zmconwz*;dVIrWN47WO#a6Fzo7$S5tqfN!PPu=pK9Y)x9I~4f-3skCuhPk6zQBL zs8V&LF=; zI6yS0JbC_F<$-IRr=;v=`OCcA!-RRg+{$W8(DnYNMqHyok$8Liw$(}Zpe#Mi;FGA2 zLH-hQ-{0}m_8czKX+a*SM}w7*S*CL0%I@QtGbTEHQb0!kouz_3y#nSx*NoTY$xb2` zoEVC|R)g6Y6a4i$S()oa_1ZG`c1!jV4}bPYNzuhV3;s9^RoR1E z5k@U<-+dij(&Td6dyvTwc;L@^(PXms6Ee>oS@t%aN4MmAf3(MYPK|(4Q%zBdb;oG) zTtk%fSJVEg!4^7ocwGEDD(1wsOR?GTwAm=rrI{Az@^}L9!_Zs&YgHLd;1~Y`M&u4p zXz;py*n6qT7Z$!1g@W2D%fo%8U&mhG6Q|ogtDNez#zv?;Ds_o@?n%^aR<{7b*^HfT ztUo}h=P1aGLvO=4f&B-_1TcQKT@47edf)`?jZ^Q5bEmr7mR%3*9q<*aeQE8a;%a}y z@`T&C!!|+lEN-X&QuCcUl#i2VSdgRo7)@n#8uTA{TSp?eBo&qQ3g3vNjP4Hdj)X6j zIoHC5M`&{A+DhuomeZeag#71Xn>mkBF{+X~LRn*Qi_^C}yLAjY|QXNDe{&1CH zLVKNGfx+?do|@NU+SPvcFM6#Q!_)p4QoEXjGJm)c-#LLll+Z}S>#~Fmh(4u>ZKV-+ zllWCmTx3ll&JmA5_CCtG16t=c5^y32POIgmx*3ni@`Rnc`jztF)wrxpyQ*{6y6sM@ z>)EY8LCcrSePy(Q1^SSOp@kSVWl3T*V9+~RvT4Gf-r|HmC$tiEm+p)XMjjh4KOtEi zRqu;_C%Zr*)iw_FJ+{o>nh8 z>l|FhEmWs`G{5^CaNm2@G&jp9OP2h`YieEAy{OW5f7ONEaANshv{*5<1GG4SK~%F( z7|NSOr=BTOtV4$9D$yl0Ms%!YUI}XsbgQrRbu027&($g)vkoMT{5036Xpu8E z@3!6To>hYz>Wr1T>Fg9#Q=zD=r@NoKwKpk=R==S8*9BE@*LU0@BpVy;*N~)6ORR|z z%Uy9XF3Zw z0_SPsv26VP4@A7;ENZ+J7k(i>Q19?#H^IAO4GMc-?6X!i#hS zpIk6pI^v$LLf!M%#h0k6In^!-0nWO(MP$|tBFo8(kw9Q|LIlED#^^48x2YhzN@^4w zlDqG}2s`-X0@hf2g@+hzL=It`k~H4)6mC^{D?%+V)m3S#$^n#I+sB`O2l^l8zIvT3 z9>SiJL#<*d!r>`!4$#bP!d%YRimqGMjntB@X6I`iO5jUO+^Pnix>BkTODGXb!Q{)~&F^=t25aDXXgw+XYJXsPjx+fU7~Ne6bpeqT2{ zXEZkzIgN#2&e99Gt>x4B1(gfm`-iJb1AX{t5?Z48=cQg93`Dp|U9lYZ;!bcWTTk#$ zOiT%wbGk)V&4FH24Si|J%=Ndo%^^Ju|x;%+o}sgaVEr*Ge7-XN}{lRV6c2m?J-A@=VX~$a2C# z#40ple5NknLv>2-;~SdN@4BPufHtbxx+(_Q8@5jo48RSY9rx#H+I+FC7}ram|4TXQ z`G|#%+n^tDUpo0COrlhcphsSY8c+IJ7)jgb#^CzZ>s*`3Qz9xUB9VhTXHKe#ZjfF! zCy9k3Hy1U6eTj99%u+UGyXyODh^*yC0L2=Qll}09Kzkr+GlgijZk9bhUF%MdWzSc7 zWQKE@nFJqF+w8|_5bEra4IjqLH|`oj;b^l<4CFoh3;QjfdT0emP-^)f*VH=+tt z$`ii`utytsT$Ai>_N;eP_0ljm$a0)UH2{0#1&OIqHJA2(A(uFI6eIbjkv~GXA`f-F zx(>&q{aua_<`GdF2JnHME(;U1(-sSwoJe?k+I_ zVjIlj)hbVIMHdjg8GX}wfFY=f#EVu4Za(^N%Fa_;SFpNK=CsE57>{3|kpkCdpt z?HlP#clnzG>p5RfzF1EWwls3;5$x18IZQDn$GL=h?$djAUVw6loth(Ay2- zXiqfWCv<~$s@C#I4mJMtT<++1zt9Z@6|2(|cNx0xv#zXFb!utf<1LZU7DX|j54@4v z8cEjexLAqtmv!i56KAMMv((StqJVejG~r*TSF^t{CJq`zyaEZEwD5WFUkQT{VPv3> zOnFNOzKXJ!b=5n~A~DEl-k-0yyBX?>&!wn$evBg}T4&De5?X8_noLkp^Wr-Vq~rUJ z8QuwM?y~mPX;!?J1kax$s_~=a2kl^zQ>w4n8&E#7>ZM=g0~;UsK|;Lk!GzQf;JQ^H zf!#5H;|!|~N2GgMwU|(+wzGMQ?^6~Nc$m;Y^MQ5YQO z2PMkNP+>4C!l4K~SUV+^x<{P!bG-h@5B$!0f^|eXk5=XB!1KtLrFx@jo5ZKUtTXg+!TKp?I35hG^3d`YQJ8$}TN#-+>vU4yt5T>o-rGf%+KQwtBs6TJt?WK|pY_aCB z?$Nu)XlH*TGgzmyzhbnYFz78Qu_c)Bz3oSnOO=7{kFVMh^l;6%&&e{MqkaZ(lBMUVnp zH^3Sr34VxifxUC4F zAqz9h7kf_wl)7WZ?9ZCgw+PH1TX<30|!Q&m-zMS+Bx$#sDxYwA|vv!(qaq<^%V0iv&Tf-k@N_ZJC6se!y8%f>M9*O9GF5Y~gcU2{JMIuu$#+|UFkp#I+sr8>R?ZmbGxPuKe znzh%YUsUmOI3|}Unl!3Cr+{pEx1m7md)K^ym${j(XNqo#TD4#z}w?s43NFy-HaW z|HIn?IZb{Fo%A?JZ~?jVQyQ9VOiN2J`r1an?$bUCZlX&hWq4|&Qq1xNx?ctb56HIj zWdZ9-UATeE{&Ku$8`(*TgbS06zj<-t`s;ihDeZ6MK5Ciy``(Z$PklJvwd~RR*c_1* z=zb=81v#p?l;b%#IriM_up}SF|69tcM>xyj0ut92@0yFl4^^Qaa_~TXZss)&PLZAp zsT4@Yx{O(~2SjdCYq%uBL!IbzvVYr%^8)mFEW`(X z!H=Q;tA!hH8V$f!vw`_l)LwMS;$(Blg6R{%?*T;c=F{wdwIs!I)+Hy)5zi$Gn% z4|U%*lXY2AIr9uxakXmfKo@YNCFxiGfdcD;Ei*kqAgd*(e3s?mgB8@q#o=oyQE;N# zkZ~;mx>HVErZv+cnzpNtcNYE7r(^}zqki5_3|#NOGb+LUB)Jvs<42^3h&CT5dPd=rDe845o|59HEvsvP9iF z$FM<0hN`h~>h|JOf*@q4IaY1?)iGX$5}oeu2{D1?_|GYpy3By+&N|4Gr=0!@mwOwU zEOZ?LADKO;TSFDC!6fR*sni4viV^bg ziUD!m9z znx8)M@(9pkqS#xo(UyXa07=rX6bzj=T9sX_dP`_oQ579r4qhC;;1T#z4P&D&RHi>g zG+?$Jy=vhKXQed1Wz4z<*)Bxb=c3EsOACEw_-&+-l`)+v0ccP4x~gEx;yWuHcx$uT zkjYMNcWSUBaEGjmI&46ya_bH05EBriTk8!k5BC6ug17r6)lZDyn3Ihxi-s%V$kv0V z!oXK@PLqjAF8UnH>A*_B$H-f559b+hzLuqBM(S>|tdUjhEre`1h-J!6CYOv=>43RRfS zuV((rW3?RkxS>_*CGj?YV0~9!`+kSkqzb@^-@PcUz(C?Z8p8M~547_8N-QO%rrWwLsWro-Yt-C zt|$91#xd@-gf{cNOC@{Vv-${l31?+BTQGEu^%i%@xyPxR=gp>7!Ap~PQI9j0 zho$IJ6&3o(Bm`@RaNbJa{b$_T{^)lhI_gXUHAm*NX^C~8>h^RC0#kC9^_KaTKOk*Z z7yccoJ_LUeiLVBV3ENO`!LM+K4q{K6mHEmj%41HHH(_F=b@b^{(7o zGD1pl86<_@taOFBsl*%6#PRKKvG>Nnn45mqyy!8pN&|z9EUspjx_MpPwb5uY`}fWg z`|3l3E^aWj`BK&$@Pxn`8Vy!?!>O-gE%8#L`JBevfxNaoS(Z{WwMu6VaWLv{cERi# zI>^|QeubWpe28j8CN=Jxgv}1F>qdu41M-)Pj!j(JbL%Quycv+v+W+EL>ALtTWfBU} zCh5WT;R(8Xx%5zr^)IKs1_hu801xF9 z{T5Mt>!02DgaKR2lWp_Lz{v;n9jh5LOpPiadwU~bE;nc5`4O=o-^y0VdoO36z+paw zs2T5I>Z%=l<1J8=qMnW+QMtwu2>TlxNi#R^cV<4z;=hH3_Nmn06u2Gg>vE-}I55t+en-P3nvA zzP-f=?=y$n>HTTr!TaMx+FfE|`KN>tVt-dN3b!zui-8fkl%ZW7o?3@sWY1%;9#&Mu6OwP%zNVN%yr;j*Q*q%9jT8Q8$suxZBSJD0yV-4tabm@7qQVV&sW*g z;5f&D9Kx59!o|DjpB_=FbBCIy(QP>0pF4oWooZG=D!gBiUphZLP80E*)dY>wG!;(< z-=k^fFNhy9a=1QUu+LsdZBf&Cztf}jGV{R+z1^$oKX-Ni8fQhx*tSN)SNyWZMAfN+ z{FHlES7i;~@;@+^01Q#%8+rVc+oCcrD(0*VGUhmxMT=6JQ+adqL(84%c2j9`B1O)rXHc%%$6Gv>YRJ|G_KCqD`H~yOdu6b>%isd9 z|AkK;Z>-Nz*%(0&n2t(+2q}N3iqZ}GIfV8)`54Ovr z3Xh}IUl?r9tS0RBcPnA$WQ^`%eOVYyhcgtV`{l7b-a2BUK50j7-ee05K=Aug4?7zd zL@;gcN1kbJmKzCXRLE)Yo256NWvPGQl+OP^ioL91fv+d0>{b>9kaU4F?4=e=&ba-# zk^e!Rq4Bx=MC%OMXQh%zLr4DAdz2khs^2@H^Y>{#aTJy0v~G6YBhoHOHpqHl2xs|VPQPt?^uISAKi(3id~psrUrNvoBGzkRzo*R z-}TLyZCBccKIqWel>fkaWaOBKSpA8tg}&|(F5rem24)jFcWfg_?HaH*Bkb+KAeDlr zk{4yHZs}Bji!vsA1p}A3fTRb`R*y#ay$ty602g|!=h?3(X4#du-OnjW!p?Q1;Wi=j zDT!7&6%5s^$PKjQOHm=AiBn=$1C!Od#&z_`99*Yt$`VHWd!ScIqj>6imS$RPGZ$5h zs}4CnF~h}2)T7Q}o!C5JR@=FXuNU)1+>9NCU5(igNr7OauF|gzoR$L@mareVp2k6> z60>QVaqm=u@!ozu;-sWJEqG9?OiW=CzwWiV7`z9$Q5%}s48)@65iUrbWq$XVBJ zzE@Tu8LXsjYuvC_xD$+7&%;IrSE`?X;6BH9^G_XbCk`2S`Rvra3H_FqM&z4Vp%OITWPJUmmvyDXxm)!kB^=-RrMf>ev#i&Ez*+R<8mX z{#l;zlGbo0l-1k(-CGCs?)dVRVf$4T8w=q^6VCJNfQ##k)1g<6_O6TB)av5X1aql&zje}EtOxyt z)MxM0CS&4)FWo#J)*u2)TJG05#B5#$mbFliDh*-QU-3*Tu~%ego$a5TFw089^(t<) zNNUf?vXYzbj5ojqK{MMLHpMf?U|S#oUwolSe`rW)S<+^8V4`27mjS-I^l?Bs>fXiA zB*TS6aT8JWiDEtKB%*ERIykHPp58W|iq{Oj@=4PzdzlgrK5bhzF+ODJp8q%rQcVs&5jnu*J?GaO9}*W)8Z>@k zf!pW`;5*Yt*ovYo?0Pu=t>dHm(jnJjorVh!zrRbcYM9| zr>b(um})-0tGd;WsLpsr0l3!~bkfvlQV-!Q{W95MLaY!j+{kIL0j2ij>5^kZuAz+3 zBIEVIxp}C|Xi}#(#s>TX*zX-#lv?^iJHn-JBoJ_=t*YUYP0&cyX5dLTw^YJMw2SOv zJ04^P18KA=kZtF{Es*wIBN^B2mpQcW9mR}%j4~!U60h#a0vrjQ2_vOVX63WQyP|pB z4N{+JQTNZ?tV0?998!cYOvoQMBxc;!$p&rM*<(F!z6`E%;XtFY`_I|GxZ?_9uw|B+YwmL9SeTd{q zHgYS>9wkEqigQ&zI^z5-mhW8m0Ih+8Qt-D?4c@WbOOm8|X%(54cI*<*Lyrxw(#Jn7 zrVkr>zKGIo2|vmP@fGl$EBAAb-vd#()1^qmZ|s{i&0^q)<+GmZXHuN%x+X2Z)c?54 zF-g`5`jVBXuLqr%maP{%Wffz=vR}6zmz~pJ5840g>NY-+`VZaU!Lvl7;CAhupNgc% z&xg*(ztw0xBB~OHuP0O~ z1nC@dh)sP)LuEIwq>Nts{7cvDOq9(c?w*80aDZ6(k-~u8=`)WQV=cI5W6@X`D$@u@?Qp~yuj|?TW=1!ve0vIO|<%o(~@O}eI6_$G0|h1r@h7N zQ6JTLZ$O!nbsS?cI0 zdv;=DRxN2=BN*pakZ6_xhiGs9LjjAHZK%2*l(|TQC4ktn)-$xv^&%|S^*lg_`u>FALyY?dqEn2W^`S5Ru2>(2-+~|B zXDSL|>=`QXLT*PW9t_^m-?GPv|UzKdWMwE8MDNOv=zLT@9{JWIJ z%WK@QS)S%EH%9hyXw*x40^v-GOsG+bixn^BB2J9`uDTIpGm4vow8QDI0?Aw-H4P)q zZ%3cMlG0;Jv>Ali@5X2p-!M_xm{m>kf{g|g=P&vf<*Ul&5laPk>^xB3V&DZxto_P*_YSe$OGPGrB=@fT8?ysPA$a2)BW{>G%` zeD?0YSWhD%oacL)E487_(&OMI@ucj;AAAS*bw9tB|0ifCdw5>(@#u2|qO!jJ4Cfyq zmEX%z@n?Rjp3j0JBKDp0O@sIX*7l{Df1q zv`aYv)B5=!dBy~tS{g3DCwO43&Uovu&$AUXI`bNzEAim)ZjrIW*hcD()9_j0Bh24^ zVh)lAw!h{>m4*iy)4HT1tVcmyz;f8OBWQ+tKJ5c3bxZej65{Lr8`Tr-!{5el7`Ymy z6k9J8v`C@+6U{Z@Jnux-#wMhca+C3mWR)?Phe4K^6R-wJ0p~ucqrEdT04*zg%d91D z9K*G%{oN>|Txj13lax=FfNm`$(+S6v!;5n~drOyfF4};JKQdx=CD;>=U~Wq%)ky`; zdbl|A*GmfRATPdt(kpn-(0N9OpRx{o@|2FIJlY_(=hZ5i?3U|ZP=-z6UuhdqCG!2& zAC!)4tu~fG!_$m%mtEFilV?uivksFKVUo!;d0!Mb@_H5H+3=&0mq@s!VpBfJE6tC6$GVQ5v=DZ-QG@Gx^pd6K%KEGM7fMgqXGXkxtD(5b zH=fWfxOcNX@?N!8R8;APC_cB@WyA6>VThAT7l#>S65`QvAZjAX{%%*W=?|=Dd6>=ZJiR-{JT_ZQJDC6&ZRpe;=;j!^FoHW?u}#2>@{xb_e?IDqgLqU zIe!UbPg%mMT=~py@jmRA>W{ZA(Il1AJDm8EE?xIE>nVR-^IIErn0Ponm_EPSFq_i7 z9~drfrgnK!Ltwr76jbEhW@0({94M(If=Mth)O5>^95j@C{+B~s0rOlS+dMPCz9t$Z zctJjcF2Qq^fixNJ7^~iz_!q@$@4e1XI4C& z5@)V06MrgPXgAeh266#EB|HO8)WSNm2uyGTS$dkDwdd&mER)tS7=&xV@Bg(i=5zgs zQoxi91IDDPK$AI;Mjq9aKoEyCfjOA20 z&4*tlO1hV}mJW<~;R6m2iWduUo+ExeFd}G;$icY-n@m4yc8khgVLgLIBOyWc?(H1X zUlrE1J5ml|>BZaai=S=5YT@D>ECmUK__!@ki_|`@O5@Q(=+jm(hge^uzKih)K*6yw zYw96>J<<*ysL@QGxT4k)Q>$$x{pRx1>Qaoeh-m;z^Lfi1=CXfp zJ@CK|9!Y(hSh~}w%sv6GVa~W3T_A@hUsYLn=_5XoCJrR7F;rOg*!71WTkEg69e>|} z{S}$LnH4&rcK09QJZkH;2{CkkQt+QxI>%*W`295@l5P8mHi?;ratqr)3X<%aHdibW zqq@~_vyN%{?qI#UwOA@VtLGC>b5fohJ-&@n?&KhK6$_LM4zT5OPOr- zOlQaS;9VQm(b!S;>te#ULvc8!JWnt>==4fXril&*_0VDsEk9E9MAo`@cFJR&$u+$o z1SJEZlUg<%H08Bdo1KmKTMWL9$A*p5M(wqNd@I1;uvb;2k~SAYj8{j*WVc0Mh8Rz)Za0Pb_Fo(~EBOL$=$ZVcs#(`qoni!_e@qSDw-EZ@;w%jfvB!)m zliis4Zz;8^wKe%E+S`u1A0X0b|5KY4`MHBLEH$g`QO-*fuOT;XuD9^4T*!bIimuTj zpCY7GV%M3n9+c%7o{rN;OsGVD*iu;6=X~i&Kk^reIN}R)U*nRmy0F-lF*9 zr_tO0>FFGF=NzluMM{FS*}RE{&GE5h@ZBANSkb z@8*8L=Q89Hxs7H;%w@Ki&1JTI*Y^+b!@Qrb+j*Yzcw$Qu7-c!1fH|IPF$7al@SKYu z4tfaC9~~Gfe$xf%*{t#MCH7?0vU~5BC#TotjOW=>>4+SXxtGj9x%1K;sW0@DO)`u^GA~<9^UjtYI>mt$Fm7T&L+is`Y`88 z9i>FKuz7upJdHXmj*uo<o7UxCfck@x20sOyfjkCz&+vDy;>Ys!Cxe6C7u}Ua(V0pU_wLO;fq`CJo$2*u@d;0M_#(60QcSbJ!=&3h2WNE1+fVLuMNFg6#!)e%3 zIQ@e|Iyv6|B8VzSU)$eJ2>-d*)cbHL+T!9*O`yz(MKi2XHPS-V{&jcT9~sYYMxqPm zk^aj@ZE^}(ss|&o2LnG%;=LD0xsFg&C#Bu8`OT#Hr;xP>$&gxSPW=lWvO1B9Bn<)V zqBPO#0#DMtdCjbET^yQeFWnyrC31zjHJH1;+KNk;k+2d{J-M?`aPK9{jc^_0KayEK7WL%l-R06NTPmSFZu-G0eJLQsNH~%iaLgCbDW`NZw?A zDbZ_8v^(xgzFeGOMg3A8(GMF7aTQnDcHp=*T;MeW?Z^MOP#P)n8f`ZmB!b14w*ASr zbMcpJr2=K<#ISKi6=A9Th#0k!RAjr@tUUD+)Y(&)F3qksQM&H@;0)=0%hfAWu7tFX zM(`YVdJskV_44zpoehYOcYTV*lmbhzT8J)@oTcg?7MAAkxQP5x0I) z!RxFHhiwteoNu0Rz=OadDl1m~#+fd?KFPj5arM`98;_`EbA6WN1|_`of3|=Qe7n_hE=!PjOw(&JGxK zG{4*xPVwd2HR#zl_|dz=p*zG-9*Sd&fX=~fUs&VPA5QxUBJ3XM+?YaW&CT6dJ^#Ar zCpC#hE&b`${jy5|`zdx1!G65;)k|eGk^3U3x;>jj=)IaIBdDIU2TRDc(PO^TmKDK_ zWR!%wu#CCHaUSDx31aAMg^MsNE$aYRYwF+3Eq8rY%9OHBW6rdY`P=>IqYvBpa?)qs zv0S!dJ&lM07G>HS8weR&N>`Y8qC)jIbsWB1luzB-_+{qzv3M9rlaR@Qg3jQ!5@|Q`Rl+H5YtKr;+7@6vtij}a4DfTKiKX8v15F8{S~oEq}=7z5#L|i zB~Gj;A2?8;G5*TI5=ZR!0T*-kB5~nK}sWCuG?9k!rKz z2fOm^v3Xqn6DjKKDduL~u_nyT^pz?v1-B(Gtn{md7^oSn3gBLW(SPtGFaU za`wL_DW$YxD~5|ez;u2}c-Fq;M8U+`_-$R7p4s#WI_MXz?AB?evoJr(C|h?2`G*;2 zwkK4)a^sSoL9*{=|Py&?j6dCuchlUKp zUCj~+9``gH4y5e1>Fjm9LFFn)hVe0jr?+AX{-J==NE7BKGH3Fwzj5jqDg8CC3AulnrW zDgvD3_L0I*d=zqL=9;z8HRRcJB{Q!54YRFJ`ZSrdIj2gJ&b?!{al2LPspy_y{rx?Q zaedI74w-KxvbJu*YxdxAb{14O?>3R=@$vPIbHbr(GTzxkS3z2BXFT=OiZTMMv5AKE9dKY0ZXf8+g&{85bkNgYg?PqaTw z=j)ZzE|1P(znXB#=+^Fr*1^Q5;vYDeUw8RjWWeR1eMRPdgVt9R$?^16+!Bju;6AKZEw(7F zSIg3>G2maEd!StWx-yy6N|(J;7k(9ZFtiiO-(sgUPfo($2RP;`dz+33F_K%??* zw!S@9=>j;%s&V7V0X;6G!42^q3MDP{jRe{TDHyP(m%6mL6Ft9((E~$t_b_u|mV2w7 z1X==px5$go)&goHU)}2uh%c%XX{^jULa)E1BPvOy+scin21IEyOTEWNMcGm)MpX5` z#H+>G?P>rVtV+^68TANrjjN)f8+J!wWe8@zH20;ve@oa=*~?4&LBPSFY_S?r|I0Z_ z{dNsr&TmI%AoLSuNa{*#po~^5G$p!%ozGoDGwyePGGKLrw^4T~aKgG*ivfWl(UjFE zVj4}7DhXh930ooLQ3EY5U2&=lI22F9`Cy%GWECR z0)}&Q=eC`Y>0IFj?%#*l+00xKtro9%e%e&(;DyTMmgOA zqWz5qkFW@-Gzzcp&K7blX zx2PpU3-wCHYW0g>tj_eO1?$E7SJf22_S=apOW&0zK6#qe6&2u@RRdlv%f{yvXH+)% z*cDsJ_$?RrRn|e4RdwMFF6%@_!f7@{0O0&&Z9FDekQe(X5;>d=h=SdbuFBtNSCa8K z&L)~ha4V-RE#V&)$B}Nc=v4JVELOAIkBglyRHB*X>+@^4EB zhg%_*uB#$JHRMVp``ZEa@LgW8=yZIeZun2k3xcN7njp3}nK+8M3;+CJ6#NXx^hN5! z#0}F&iXCmS?)wk8WX1iSNDLAgY=wL6P{GRMV8&l_tJxc~SL z#{~N?qcqzoeJt^FkpTDw>G8=F=?lhEf=|YM9{nsA+~^27bYWLp;?!9T=o3`vc~%xs z$)h^446+or=>ow#x=s6J2rcd|3n6Q>UQB+WY-TBjIu#+CY+WXHIR%whTv>6JTi`+3 z?uP@LroyeAty_%5v+i|1_tQKr?p`(Pk{dwGb02sOB%v|_!!G4s(N6g(!rXO=jGbG= zXn=c$g&zmpTuOTv7%(VA|ENX_QhE{&CO<_Dg(rOFtc9KwisW2bkQ-=d5|~1Y^i-}) z7aPozHx3=nOEwZWK^_N)e?_D2TJ)_vVnQczFAgZPS9E2vEZ2SO)&5j|0lD74s==jM zQ+;0PH+gCn9b`tn3qV-^EiqZScQIpc2OlC>IIN~_0X1NGYed2i50{$Uu(FflZ50Om zoU&(OJj>F8uYVK%sX)((gmHd4Zy>!cv?T<7Q5f@@Olvdnh8Knc@)L~y2tfOezR$6o zTL?CA#&>*`o)w&(AA`;E$opx^u!vxdiEc!Kz^uj#?_2Ly$hQEvt>bdD{n$wS77&x< z*k@OD;F9`y7TdeJFtN1}CAK!|aFQFVS#tsm2>WiftET`u6@RPOs1P}%m*(NZUhX*=>g?idb8r6keHPQ7O}R_!_>_y; z{VbRKMR($Qkw>)%{TGw?GwxAVtM-oX>kDMd&Q`=a|2F$Hrc*w?by}9pU}T8kvtzk; zGC&@(Yuk)Y$LlIZ0r8oNIG0+6VKGscrE}Idj^f)I3-`!vJzF&an}2UQmEo}+!*5V- z;kWkLpy`E2t;t)oniuWi*YZ^>1x5$H!F*d$YXzeJ17S@kYGD@64kxyvy3)!>Rk4yBhm1KEL|&vOz{zDSR52bbTZGMDgX*$KjJ9 z%Mb&f>olLAz2rXOzlp!bjG@LK2ExRpfUMptojm5ITyU%Qqx7v$_vtBG6%)^LdORS& z=XXxF5Ftu=ily;rgM||OIQx;MgcdrWZX6B9Wv*zvqvEdZv@n+_yN=!o`SJ-0ya_<) z^BHqm#Qs!w`&eBwq;AeS-`A8pp5znj-)J05lx1%>8KKm)Hr$1*w-`7fm82zLE~hz4 zi)26tpX^Ml>k`VFE6hA(0a+Q`_!;MQa5l%hJyUF>j)?6gaoD%xYZ(?rIY(wA>5l%m zY%#`zh%GJty*Hl7XP`SFvlYb2I&ixPZB0yAOlV8=ACPbSUw>wHd_K6)T;tJGS5uMX4$&EF)2XvZf&DvKeg!-|LqQm01gheQcLwbe-`?|w zua3Tu+|aHCwOl=i%^HErL8NfIla-{SU5$g1xPyQWG$>_g`EO;5tG9L8RPi-Sy-*nTdb&)~y_D6Uxy%Nnvo;&kFw-uOxf~u|0^@`I-T*z7WN| zYKfjy5&RT~gc(VS%^K+96jpfVjbc6MrO6h}I%}O)A{=6p3h5;EuiZE59Zz$F-Vxhc zTnMY@rmTh<@*pW&*O>rcKjI4t97xuqHs^Yv(D z5v5l3tb8N3vqSBn&fkLzx{`^>^^F9NMIc})V+CO{k&-0rJtdpU2yFMyp_l|;xt34p ziQC000*(@y3l^6QN>Tx+x8-OAY?bj+aectq=+t-KPbmF1NAf_MHK>_kCN62GdrEHM z8>YEDN$4c0)w&6VqV&jI(c^bvcCBwnTeGk7-s=Dbq;&4C@P&(47fSuY_&zD(dRk5U z%G;xdrRUFgu9uh{(%h#r+tJ4Yb+FO92sE3zDZ<7l-|bYR>SE34s`|zbIK@&gSiSVD zaNw`h-J9Xg_`b8xOqNk67se+aOi%KrziIvav=QP_RN+n?OHE;$BMkRw`Q^r+ofFx#)gO;7&mgJl|k zvG`l`#gOHPJ4yfC+Ed67~yE((qXT7HYMV?%eZTc2TYPt}y0+qNz1Oy`qlSF`KFC;Sr1Y$r$4 zmslWd2e#axma%mYA1If8U(J`D>cls?W#*ZIZWl`M!fa|u-a)q12e>-PPU-C)0g}qSrbi`A+ zc4oWll+D$+tRS5YxQ)ixxSyDw_xE=%?DhlGbKCOKP_p3O|zr{aAYx`bW}xNavJgM z)8yD~FoW865H68~^5*&o7pinaZmni6V3rsSwaYuyod9Yy-N!V`6mFxh+FgidgXp|o zYAp$ENhTl42GDI*K#(U%sD%C|htJ@iJD91kPDJA29GS4Z3;VC_`EgJd)*D%LR281q zS-v?wnGo&J6h5)ZxkYL^`&z{Hy;{R(qlXeQJBthEqBRrS z!*artPoeO_5_NN1RJl@fQGq%smEpR=XD53U=en2A2HKhjw&WE6>c?1GFdcEeo^Ut9 zOjCKB2D9{N8|8IIVWtXhFQ>2@Ji{-9qd5LE#g(cGeyX^1%iTfLv#Lvf1z}-b;D;NrK+JD$^sKGV?_GO3EVFfO@5wb&0W8*Pa=p!OY*!w$Fs&O!%oIklLMHY+87`#6pqh8uGyR zwY{wXw*UCigr8K>Na!f}@{&9cI!8TekM@j3-zw*5a6N$N&2q>m^zCJ#ro(C=nbEF# zxrp?)IeG1b;limiC;UH1*?RHdFDUIT(q#^BW>$Pp8h)TX7t+B5NQ+A^Kf2OZ#jNxF zKq8UlN;Z9TF7c&B0F?oP@q4}*(<+9u8fq)__Hv(BSu$t|0M2LnxSE!;XT*!4t<{{1 zMX+B<3u$mH?tl`H8^4hSj^3HwCZ;e{Cbd3=`5u zw3x#JJbseRiuG!okMt`YSF~!*&9ZmrJ^QbJ1T8X z-SOl>fPQdee;A`{#rVRZP8DhmlQF8W{-cX5rILz~#W4kdQI9a@q#qUBSuCf%!^S&q z_&#dA6=@~S)3tO*TVvu=QFmHmC-TU*IH3aeex=2n#s2>}A6)n=)@! z=~6v6)Z<@c?$;|;U2YyxpGTsmb3FNs^@~)MVK$ge+)xE6N=9ZhIpvJ2wh)ZUaOc!@ z{WVazk}K$)I{Pm7l@r{eZg}NZEAhV^IA8^5)wJUg{<8IKYDHvjxu7A+Uth;;j1p-3 zP~)xJs2ULf8*Gk|MrmG=vMj6EObnG)U?{76Qb;pD(u7LGXU}qf-4*n`e^4s*yJqZ= zM@ru4;!O9=d9;1;b4BlUI2BIAi0C6QM+UVlv-y2xN?z7}1-fy%lGE0Osy_WDXdX)gV z#gf9BTbyiZ_Lfl_LC7{cezlI=I*~~hN^%#w4o*P&f9%FK)L>HWHW=C%o=hDqOZ#m2UOQS zlaMo=uv6!%S=Kw4pKrFwde9H9vp4?EAmz;j>$C$D3JAl&UZk zP~T#WE|^rYXn+0E>Go$#sx3~kq0#eTxj`&Qe|NCCLd;>)h8@pe2G#x5y&~K}9Ps*h z>sMbSd!VdmNmBrjWSjWnq{{D+#^Ud5B)frQt9P?*E^UND*gvyzE~}4tzSjMmYB9+S zCZTz!A{a^Zv1!rMM1{2)qV^GT-BcNuo+wv3Ap42^!T3-e)Z$Sps+=0{ZO5W3Vq1G- z(d>*0-nJo6Yu}nww|d@y6)de^V*(fYjgZ`^tD%4PEST;~j*Cm~xE~Q*1{qjlkxexl zl^I?xwAe();$9H43%|z4HjABj8Ll?~)==tOz%);rtXfMwpOSS26F%gfHxniZUpre& zd9!rPJD*YfbOl)AzX((<#GF|edtYljl8?tk*xNcMhqHmvMJy|itm>+H$YPZ8TzK9I zbB<9|ey9M8dpbQKOCMw`YwU9v1kl{MvM-mlLl*>RHI>r+X>i$w?1Qy-&Nd>uy)yRHaM_x;1Q^C`g*pwErHCc zU?Zs^z2@Y2eLr{UU#=?&{&?{cC|_IN6o1L2O{YO@YIe0cdKA`qE9_8u6XeHQ6D z?|@b}z^jIpthncYGaBvo^szs%yNrEcE<|Q6GwH#qkbYL1F(J0m z@lH^$>?koJW0hGsBlQ!@?unQC##RjlrR#H>E}I*jn*5OXW)@h-NlDBFQ*-m$-gttah2f9tFr?~a0SxhA z1+8J!MXsyiZ#6#9uIiw?D_?0*Cr=70@dYm6kq8eYd!CC>@f==Gt3u4|139;C z*kO0uu58{);a}o=94D^XTnJ@o?=QmSv*I@7SON@h{pV!3$<`sZ>>DSB^0E(zSNIU- zeaG+Kob`|ii6Rd3#mISipU_55CcB?49Jto}3+4I<6c+q7Ptnw=2^g42nh_hc=uJ;r~x6hq)2=%X51T0)i`|Z~QbRtsq!Up#BJOQNuN(z$1jl+kxylTKIEU{qLBj|Ae4hGWY{mco zR$vMgOHB08{di?li}FOmToWJ~x7BL$NRd0Gyv`R|)p4E8W(oD0CFRt6cAOb*7J4~9 zCa}s<-@=_(ACmikrP=n<%|$14b)9&6MHbiJI5u_X&ydP!$?VS>w+2@azYiQUmdL7b zquIMiRJ*dW|2d#Un-jvhdZ>IRK>H(u=q9U+PMl!-37^$qBgBJxHt7?(5f=r@Ep#hColeM zY9mV+iDF`(sA+f3H=KGRQi;&+Ox;~zd3|MuYI#AtmK%$}+ql)tKhh=*o{h5#;FL@` zdo%lt_sUOwc>;4-=E*|`uLOvp>CS_18dh~(zJXr(XMe|Lj+w2Fs$&xmD*`%Y2Gl|< zf3k4Y%L5I^v9-*6HD5q;39g?Lo#!WJ-ipsq9R|a%-n$QR_%p z)qTe(HQD$u13vbYNp(`&CR>mkI^Y7O+tF>X=Ng+oM%CI8D2#0W`0ucMt>gVOATmzjFzr?&V{@Z{anyjng>IgRw9#*JnO1k&jWsTwJt1R>`l^Xx*$&Qvr|0X- zwi($Sk}VnxiBe4o>7AXWBX36~x>m{X@F%2b32}+Mla4(LI4sM21hP^$?Qb}%Ra)U9 zGzpesn8T;PPuX+1xb-jJo}78J22mfQfan%%Ujjdq40u% zZcWK-gNx3Lc`W6*QFj|rr=ubhR+P(Pc<0B1;_}L%de8CoPsH1&OJf?E^?Q>^zXSSZ z^@B@tD+yk_lL04DV0)8@B?&{xL;r6ReseK}#x z@)l+7t<`%8Io$b`$OlpCvOm);6K_Q8{q)I^-ZeSR=D)1pg!F~A)-imZ9zGA<1P0p0 z8VnyNK*}glTt3PcN6|!G2lJ881c>^IC=Hji_1SS=w(-=^`+C>28p}paS#Ox zqWp^!Z>To6{q7{og@WombFQE{UTmw++SY94k9XPt0Q_XE{|6>?H*s@!HMoE9bHFpX zLl~tbt@AH!(|R&gM-6G&Lyq6PjD&=45_;Z1VeVny6iX~a=Q$FvLCa=+j6XH_fnhKx zd@(KdnfAv8lu~I;+Na6vY=Z$Ahh4iL8oX&CVqPKN$EoPWC(5JF0WkBRDj_m zWzPMXyLJy=2vUQxo}xh<(p7IHWywL0rZ&6i7?I^Sn3Dne->pp=h0yci3VbF3g^zLlKPQKBf0-(1T7`#ZIax)Dn8}>Z6gZSz48uO9gOS!#9_ZH5zq3WW#CI478}mG&u)( z)DgwyS^5_D-y=eZCaZQNb^)lJ$%T)FKKyW}Fqi?{#YUOpgfjfYfJ?=BS1f01Mqdgb zmCJnVz_Q8gf|QBNGk(MNJVskVXH171x<(OASq4t=+xeQr6g#qp88vL!YbNth=!Y@Y z-WOxZ&M*tS{Ihic+H-HYlpJH(v$uw%3xA=C91n-9-#~JX(6AzxsVd!M^Q4WICeX?5 zvtYd<~UW9_cUKLpdwbRZOj>uf+do=$7ETgX17jcR;{%Z*Mh)sblrNR0j5M z+beag6w75!#QGz4venmZ8>Gd~^_{IH_fWJPHxg?d&QK#$8HU$@L$zqbdEFNqz`jdlAAmK}y`{!QHccEf6~f&e|* zZ@1JiGBGr#RuxfhF@_$XEP7-15#-nb%ORjv4yvAHJTigL!D&`DgM_|l^tQ^w(p7-d zn%LjSS(G4T2V2#^Vs=h-QEH`n-QTr)dhVaJR>n+dMje993 zD2nuJfo;*+XGpj1tT2M~vtZr51Fk^TyX#@4u8+cHt--^Q-IPQ72kOdUMXds%>ktQ^ zXdoC=u4Y`yr|@Q((F1h=8B4*7G*1@6p?7ln^UGVukr8V6w!nk8_LoN3HT9I< z2m^d_qCi1wtiE89`orTOIr@nyyzNsqXgfpqCZ7m~n#5~3scFBz^}*8xLs<$BEU2ds z5oo{nBRJ`(Pu_s-9fxON`ZJ`mgP{VS<}pT73A%qsHx?kyq-3Sga~CJrY{dH7RgkTS*VcQJOsa;ehqg9PEj z#njiOTNiG*O%@9doz26Y{t%x)-HrG>OL;z~yC#Paz-o@V9;WMqudFCtYmazRh zQ_lq5W)XFf!USlnb7f2-((O{agf)r{4*hTniw{ZImUQqXxO^fhKS@6f#ihrElJ3qP@PDHH*$03QHRinqHtClRYdJE(^3^As@3EM0 zjQkJcW3i`e`1$;Nt|{`?*PTecx0JIdb^$*F|Gpw24O8%XFIRH!cK+72*Xa5clxE0A zcPVv&zpvhT)RVZU{;WSdoSeq_%z<(oPpR1%#ztw@-c7Y*bkLFR|sxlz&BA12R}=jwjX3QBk5pOLi(1d^fXf zyOMlnXO^1AqFmuA7bN%g*BKqgDXFCqSC*vlYrwzJH&zFn0Qr?&hZp`E3^J9Qi86QF zi9uQfpL$UgV7S=6Wl4a$*d=Z)L=zq1CLNV-=P%a!O$pbPyn%V^jn<;Mns1F~CIZ)N zw0V#&f`!M~==|Pc1OwEU!++V^{1OY+O`MOV5A&lzfz;M7P za%$m$A-$+#(D90J>fd};k|$h?>l#O`);@wxq?pM1N+ zUK*G;R8CXMyRw4|VMyubb}aA=&{hZs)W;jA{+`qj#QK2ukY94*b`$TEUhos|g!kRl zR*QSD2d-gE!QyKXY2ANsq)`8ZA8l`@)C6vlR&}l|`2r4h(L3yn!C$oUtk9RPewCZ} zUFv?b3Yc21l8XZqRaj-7*Z$EB`x|nwxB8~%BIq5tpRtr$POhHnR-yOM$Fjf~So-1Y zfkRCTW#uNu3~;o=^AU4WBhnrA6JdO__Kx==^v6DoRwOM{n_T%!dhzL?x($CZEgJBE`&w)+7GCi_ilE&w+_O*r=mfr zh3Vk>fLAj5XSAfP3hXmcVJ}PL&z-&aFsXWBgZ0bXHd)yKc^yWRhkH}s=EE@3e}7PF z(NMKUa!YT>MMT{`^NWnF_&n!hCml&1(XrtSF-(R@mQ?5Kap{YXugfi$&sQaZbyCrx zzTQoApgXDE3=v%+cYzEoh-|o}7kV`b=9vdVG2Gl?84p)b_k88}htxNiI78<@8^&1C zkzuc>Vv=o%3)CG9`bmkyo2oFyMhA|Bm_M7{So=)cEGV3Mu5FR!sdvJINMgx(6=$00 z-Wli)FNsb(OAAz!xkI8yJo3h~IR+O$?e; zJ(@kZX(%$Z$UBVYMNqj zn+2HbILs_JP$bAsBPa37v5gJw4APwbxfh%_ULu99lAnVA!JVuR?tdUMvNl;w<)q!y zGK&omCqMr4Oh<@H4oGmu+<#w?tWy| zcsLPH(P6RW%b#Q#mu~%x<;8kkW2T;eNyyjj{Ix{ru&1+2{*5oX^9#P`5&p4ywRjNp zd+2+NrP;c`2I`WOEZ(*q}>unw@HbbUVkgnVFv-=N$$B;NwnZJF7vV)<7L1 zrp=^GvG{&D-t%g*o*_3vfl=k@MIv8X%aR1EYr<_u?gTT;>`?=l)T$$-% zKWFCk-ibszxb_69U_3(M!49DHxnYO11~u@{>y`$u{0~P|x|&Z^(2Cie;4s{QfIWqJ zQ)75n2FjmSPB73Ja$Z;c!_Y4D$9k9p1eaQi3^_Qz<3W zKZ}I#_-QS(?LVU)ZX25Ir!UjJC!ys1Ng8rKNAk}F`SG^-tgP_k5u5N+yR_9)mK;fq zjpP^e^nIHKMz|?t|JGn@RFjhk;BD-8T}goy;mLJhnh^V~sO!y&t=D73R%KrntoM=% zz_2s1Hj<0$d&~4#tpX%42!}8!;52CrkOP&uT zp%g@HPxW(Aihn1+O-Ztc_GDM*4{0-)eD2~M$6=}ydVNVlS9Eqo<4`ccW@P`lWw2b{rQ z^*0>Xxl@2alEYtj?)9PSiEpsq@MmXh=C-YfVLnAo5nQkRtMo(v#(3jT-_%U5ij|3e6=F&CWO5&Ciob{9iSpS?_O-+S0hQVa(794r>_YA zZ)I#Tk$Lr+&M03*zn|bHekbEi_tjTpOq^9_D5h)K_an!cBq(ZP?71qbfzKSVxAV*F!;L&RU) z*7G5mJq8nsT0rM`=gl6;M<$lC@5V7^@0k{jB{n@21B5Z=XqZG{OJE(1{$}Iowp!0V z+?BQj37C^|%Ke0Th%5BAmOb>8vv})XFE_H{tfZHzJ`fSXX*}kx5^&YX5i&%JDLxm- zs(aTwQ-y3E(~!*YFY2l}q^;^q(k z^EiwO_%X|Y^nQk4flZK8-oZaHCtx1MdH_uw=ZLN}F$%>69 zo3Pd0+y~m7X{f-){%N%7?qY>!)Vu@Bb05PhOZ@2o2hq89T1<%hC9crJVHjV8MNxay z_$&h%D^5nLY2Fz;TZPN#z?wE&A)(KsY8Bnoo7J6#wq@6Hs{4oAOeZPn%U9=nk9?pd zjg>S0C0jBIFlklOan6h_SVe_F+Y1-zViO;0fn$qZc*>IzG`B5(yN9Xr>u0`k>_xTR z3pHfR9Tg6Im7m6fJA<)c=8sJ30?#ke1KVt`VnWoVl=m!~-(A^UG+q11r^l=R1u8)oY zjm|L!_k;rpi9O+sCoMZ708UEc!-IhD1V>O!*lcB#&=f1rKJ8#K1T}p4-Ch_VFL7z*CDi-3eYk?gFx4af&BC%#b%<0z|GZut?W?O*O?!!Yn6A)lGF{{2*qN%dWgV*4{P*xtqb9>la?<3+^J6 zF__;i0ki9Kvy35qF__DEN`E4xxWKa8Vd20Od3}SWu}4?vN0Q9w5fl>)QENUHSP$pe znFRHBd{2l{TUv(D21-EzKY9-FkcR+LHMLT`dlG8jODkGLfJVtr4^Q{nnC&v(F4mv{ z9Su6bJ<{;s_ItnRj}BS(4=<{PY3d4VM0eJb)PppS1lIqan`V1!*(L&l`gkDY9pRD` z-o=D(UH-?LDm}Y@2<)sq!1(s;C zE0%Sanutx8e^WLrW)KqKSuoi#lcsZ3(2bn~$h!9~#NHPJyyIj!etfYhy1kOj3les2pu_FaQ@l**l; z0XM^AYjXPTSWX*CYjA zy;a5xT?lgXu97=WY`X0SHjB9tve4`AUp3=pJIPSAubQ4w{Gb+6_Kk_NRe9T`86sSJ zF@7{;-7xXRz#P|!erBNfO6yhA4#fgQXw4!6idgaId~A`l0?uSOCG+zr&~#14)w-N4 z3(R9;WuVIYay;TgCYb=~ctoVw%gMQkm_U-+kSYV>%83jz zmPDYBz|jR;xe{ybkX!YKhNW|Z|w4Wzgf?ZUy*Ioz`f4T5UgA0=Gi z$mee2F{TU*GUTPN2b-=gkvt!yGrswHY-`{#;wTC!-sL8@e?FGB8n%0O)zJRG!?F0f zoG&eYJ^Kd^s;WBs(O)`5HK?QIv1lHG&dhF9M%|3UF0%?VClGl3ohF((^Fe= zzc&#BObYg|_8rTd&x?ZQGRBIj7ezszNh)O>_3G=k+MQa0^0q1Sio>ok+vRax7spIix;lw+aM@tsYJ)c0L* z|3QxstaTOU$=nG#-}Lsd^8LG(-D-Fu@gwbExF_gIDdTTj##ZZn(^SUggS#G9nJsOBIDGfReL*G`+h7s9?7#il;y2Yju| z;d0U)=8?B7;xm7}e|86z*)?%uIX}x4I9rO4>bO~PI_owwc;<}$L!EAvJXy*wvRuSm z;>?b%J;Y$aS%k`UW%VII3@My$Tp^O%?kAyofa)_}TR% z*GbAehYKVgT@^32Q~@9V;OYJdp|v0+>X3EKf}G0rs;N}(9a^~XHphzrm*y8&fyV6g z)OQ%63vp%ceJHD%&>FK7E#MxWsY99#x9F4oRnHf6Cu{|2pVMu*95eT!{35=UhZNu;yoB`+OLiD8y`z*NTL zH4iEBKbFotp6T~}{84hKNKrYAH|yX~3X!u4n~)sF$g!MC2#Yz*xv-eX95Tmpm@(($ zvM7vUD>=;}r-o%mB6KY!S|@ThdN|QoHI#+( zi!3896jAj9Ps@A1`#V1k@04=fvotI%t*DEVQFurz;*&lF8l|9`1%d@H`^T^!N%SY{ zD6%A1IERsUX^@5N7NujiTVSpT&d?^6ALUTS8@{){ld}E!AX@i&kT&b)^ZjHCQi3?< zwfy-O&{GmG;Za#n9gLI5Q?j_W^` z)~y7iSdcaT_4sxUnH$HbZ{5NwZv)bK;>E-~-NiXLs=9SeQ5{bhiD;7hyKD}l6RVWU ze!{5U#-F8#f67=s&AnC1IU=?e{Mr0;i5vkn%)LEng`G@AE62Xx*^JoMo)gvid$8cz z`CMXib$+ z|CqV_RN>Dt;_A?5W)yq($LpwHpEuzyklx)|iCVjfeL>W$&pQv;5e92Pl?3K2zLbnUVch%bP z=%NDR+p4X_;I01c0eYa_5kw)MI%S1%oI}Nm*8R*$gkR1$0sPwTl(OzBWZjP1-~Rbl zB!SaMuKNcYI{gW{)K8q_D>H?Id8V=SoOJxsI%zrA#2&toH^Hg6Lq`peD)%kQ6=pf| zQKXN7(f(@husy~g4P05jgB~PyX8c4xq$F-h+UT;4YW7oB$>yuNs4C`O(Ohg9*_J12 z8lGI|_Uf1}$6Df5Yu>W}5IrPY0PfZz=E#^hBEQGV-n=JGu*nMyik^@BDX* z!UyXvRpFhuF?%jcO1jfHY_zB5iGC9Yx*=wcNbx;klP=u}+0sNffP&Ul(y7e6s!7G> zGQI{&uFNYB*S7dptbJ*Y+cZ>Dd;6)A!83PYM8&#w^)BN8>2ob7K7TkTp0@h^Pwh>0 zaoL^a_3Rsg-@a+DYyLvI2Ynp+Ixj)+{+Y*q!4(K^T9KH_gkG8dwT`a)qnp;q@9` z{u@2=)9nxw5Qv$#?vrOXe=f+myj-sbJe?PjyGASr^lR1rqw$?BX++k2y_u8dvVj$sR^Y^x_3?&BptS>CIn(zmOK5Hx+~rme5=c+t#$-Oc_? z%zeV7XZRvJLw<**V`_k~o%gx{{92obxCrGBe?H4TUS0lzq_+i#LDVwUnV7nbPoa|k z1TuDFP)hcvQwb#Arf`1RGHcu52^9bBTp6UxxP0PlH%nwINii)E-xj4BF|PibGTbjv zdYo>8EneG>rf-O5~(FdC&9 zaO1p$6#2lzszC<2pA9882YCeN+w8oA>_s8c6@omhZ))kzncM|wj%aRay1T&p-`&_n zKPUAphq%E;9!Q^EW&Jb8_?if`WRuZ+&>fU)o^gJGul^Z^`j`>$g zV%q~a>m9tUVsh!QZ^+-De(#!v*GNZdT}?c!zg%_9&T>v>Tmq_Z9nCGnPi@zP*2yz| zD*jG03_=tCiX*fOlA~*_^0pQ~e!F(L3MDJD)6adJ`GyocTB;(h;sBb$ZCQZG_W!-e zdwM3sLLoHxY7N49A>W@|9UGQtRZ$-va_b|038!PmQmcbKjI488%EDFOZ3ARzrI5;t zRnc0&R^v)V;(uJwNVz)dC|rzd97U|vpo}qt+{CcbRo-`%DEv!E58}ZToSA`?%tt&?Zq8N-SqUr@3;mhhr zS1}JOea2)NCOcjSk~u5Yl%%u=M#-X&p>A(o#=nhhgd_(u+i=l51ZmlET`AK_!b;wb zKVLa-Zesl@=Pb{2dkc1@_h%iMb0#}j?n4|}t_Mh0vSNqRLg^%BMK3hD&gmXCQ%*&g zD0{6x2JWnF$Z$cuTLn(Jn|zqy1uxa_2=SDrd$C2;#)O*%OLswal-(%|^1Cf63sm~u zjR0KIs3z-KbiUet`bGz9yMo)3GtJRIU-#d|Js%HJGM`&s+6pt=K=`lS!)cy;4ncU$ zOw4P>^texc;=ie+{zCiSUno1_FJZmqR>%5#U_-*+Kk&RJIBSP2pY}mc7&+wU2pM^8wZLJpmK#N&k7=P@^;6`mnP3nJ#PQ|YRWQP?sR=nD`q!9)r0g+AHJRmb||?I-FG+CVRr|e>*Rc{ zy}7&bR|NXRZsjif1ekm>`6nwlSkm?@9&7BE$wqZy z2D|Zxb6@W)FhWooTSc?RkC|RgN}sS>q;W;%WpvB;?M-s|K2{(8)K zKW{E!{{Ejr9wDg@fhm}R%D=;d^f?NL9QvzLZq`f2+VrF{$X0Cpn_Q3`i^F?pWU(+V zm;FDPs0mVIs)T(Zwnm=T{KQHlqN2ahDSLh3oSB-1(7ojMq=btliSTP^XS4~|t%5ye zHnmfaUo%$zgRp2Id3Pk0z|z}t*2Gu)aPZ@!Zr)*;Ve7-Js&{o>0vD|fEH&Y)#%ILD zYz*t-N}g!XFRO4VxJSs_K&x=vCz3;O13bs$Yudfs<}qTL@R-=k9Up7DhzoT8xLqH} zj4HCm%kUfGC{P)yUYqPsZaH?J^h@K$hDX+V+W+QNbcJ_6UzcRy5c$~Gl;Phm@=dYScE=?qN_vfbUwT@8fG9v3&1ko5o8Ml}ru1j^uM_`u`mQjw(6jRlQuTeP+*- zSdthH!e>`dtV(Qj(-}x_N@5vDL1Kc6tb_FgJo&U!G7QU7ps=};vMaZ5P_`SGO4yH18WdNbn38uX~s1I`He%2ETwWLrCVLS z+Qgvx{XNPzCwP~RsTx>)4Oo}$Wr6S7dR%qi2x-Kg|irTBi}7dm<>XIY%?^P=6(%TgvMDJ zeL=}%jVX?8*YQOet|hy+)WdWSJs*BQs*OM>XkNJlQ0?|N0p=yofjP{JJ0w_@+vJ)$ zfq5Kw;ujnhfVgH-P&R-e8e8EMsYtnro6RKuI#Rg$Glwg|nSFC55777^yaX0t(Fg4VWC+Ti+H8d+PPwsXc0q`MC$M;9OXp5N{fX3Ia{o3uva_#t4ns znp~amP=C}vYV$plhUW(nZ3=)R<4Yo2#k(EHp0NVx3!#C)PdwEYm z@x!5zBryl;D$82k^N?510l1ZUwW8$R z|CXfIq*|PEe#%4p+K0N8B({&4kHayAj)@|OJEw--Uf7H2wgDkZPtgg$#qnwiFUfE( z(J7AjPnuMD$mlrccmM84$oc8Y6G;xwFDqUPy8baOxEZg-!F+ZcZo=)__KtsXV!4$m zEU4Xd0NK&nUrk>fFG~#ma20cVjgNi(N8#=Gx&SWz&94u}{z~s1dih7&!RX<%fly}h zJCYV~8z#zQ3q8=f5T6#C>qAg*Pzn>mikE(-r$NMa1QL-Xw(w9*mGCLEwQ+tn{4mhZQ*e2Ss@0QS)_?xo7JI z(63!1dvmo{KFYHcF63i>`XI)7P+x@5Ve6=|L%@lUN|P+l>6PSbpi|Og1_k49_`p(t z%!??FTGmQx(#hgu8sd0jxoa}nuor(rBF+vNq5_ry=Q3dqJg(sm=a)?8Y-g@|o6{#9 zMe`a5cl59mf}Ea$8kuW#tGgmHZr_uI?Mt53s~f!^4sB^|J0ZLAHO{ZXtXz;7Vhpe(*adVLuLOT-#`v zw!R~m07QJr^+>pqZDciGtM*w#PEYZ zj-6i;G`T~Cz*v;la9*d9HbpfIO);G!vSA1R?gUVD$+}$%g6@j(yTxN@|FsT?{7N(- zYsZ$XUoD!qg+!HTK}7;NK#yRfuKJrd8~W=m)P<9(LLbSgF!bU$fcAXo3R#GSIJvT4 zP@m+h;J+ICo*DjvYix?=-ZA;*P4xJwt?AF-+oGi zR1%t;d?*586<>|h{CX{jrlsG-mx3PFDtSHT|7XmBsA^k!l7SAiei}s^u1y+BMUEX{aAquXJmUzsE!9^*l9&9PvWxg*DB7Ti3mm z>a(*G0n?0q3!ASaVW!at+cwv$^|g{=A6@CX_xO2fb!#pDTv^U1>V$cY~oGM+wCB`=`ELr8B&8AtSn!?Cq*0d$vXRgW_E ziE6LEq(VGFcE_i^K^zKqd%WzZM1H zhYGp1T>PXb$~lGpv9^6-y?f^dKOeH;hajBc`#MKk59TImjvZn2F z`Q@K4XB3edTk56WqyrPz30lp%>`^+2c+^AGSTjuz_2hS6C0f-2wVYUi z|KSmrCL>ntF(HB45YXC$c|Ep#9HBC7+uYUp~EYLkik^;5d(Xq>__%AFeB6 zAAIXHXpP1SiV-pzu$LYki!Bn;3dEh1uobkJI=1 z#R1I4#OQuZ!w-1+G5q4KC~1&dcCwlLjOy+6r9NZ$nM!|{hAb5|c6;eYQ>|`iq!-mV z{OU+!|LmF({HeQpp8P)eqMQwO;l3Ex%tu7A@l&R?fKka+N++NHrJ-Nhx{ta;zeIuF z1+>@eX~>T(Sde>^EcB5tzQZWt%g7AX+f~M4>t5LPpf> zZngqPIK{7#zGap}#UMmpm3+z(P{Q545qtpbtIv758RH;Mm?`Myo(^0{R0>6Sa+7vHM08sH%OUkeD z)pgrKVlVB}5hDG@kNi#V%4PVEJXBC;s9^ktwwDo^@@5kWanzv5?!GlqM=aYHIJz@&9moSORNL4 ztU~SEZmhKf7tKUdN#hBRS6j+pBQTD3v?tV&V{W0YkJA%5ey<=<;4eZv;_BR1((hYU z)y9$R_V2_6!K8l=eJ0jAP&NHW?~Nwy*yN@F1gJv=oi~W()7>pje50Vs`ntM4+SjH{ zBI~t0iD?Q!47Yz$5w6>NV4kF>tPiX^^xWHv5o#`3Q!r4Gy)fPzC;CCOXh9!5MM>qx-(#%Mah_ct{(RaxK!S22@A{eJ2}H#YQ}BCFy@HN5ajta!MabGW zg~3d?(BEW#j)F%VZRI4R`$ZqrHWDiLmllFi)NUSlT86hZb^u+b-qxXVH!BgOkP!+) zfXQ)UYscMneG|yDQD;r*;I)bm;+4Iznv4)!?{EOv6lIq7amO>h&OFq|HnC3_7O_Y5qV6IEjtfjn4dwN6ql!fHk zJ%wB8CV%ycMk|hlsyx>m#dWneV=MVasl6e=F78}hi-d_|!E4@TM?ISjKYI%PfG}FD zwJOM5r+x~|8)RywGP%rl-e&OA-AX$+0Mtme`lKKua_v);x71iiRPDVTEwB-oklf+L z^}JD(bu^2D&#<-y1&&Yt1S~VczmUO3Ki#z1Hgvt~*>6^jn;1}g0b`2dEuoUc1+_l* zD35!lVWv|C4@4UhePh(V@GRXZox#@L>U~+$CF(MfpAM>+uT;zDoM?K5T_?D2#q=I%9ZBa~w2nfSIfft+ei z3QQW|>9)j{*B)znTF#3)dbV%I=!dJ&l>uqAQu)%yUq0sa!`f$!$chU4l04rndVBqv zEy)eCOk_<(!1Q)mXnHB3M!m3?TE_WX>laIeF&>%7{CO#Ubu{ z8LF}CVFBuR#7u97S7`-QMZ_+QVAZC4Go8mZqne4S7+ZX0QGhnr^(^?16HCe17$*%s z8IZeg82@DqznaBTi5k zq1nW1qOf{$5At@Ro3>wx+Q3SX&$Q{U>rzM+DJfXj6Fi1#5FLE^vVEBLDesauq%8{V zO>(7b6h>cW&gNb172s@u<7OPkz8<*%KOQ;5Aw0t+cPlAIt6wqe z$p%N_uR8vJ$%w_#3KXqY9LHGOuCwg5cW83v7$Lt`sYv-MlF)4iO`{VQTXz}}YmK%G zWk#ZMKC^qOSqf^t@EV@w!&OXMZ@BWWDd7juHXOFw#e^k!y0-Z%iXiK9E$Y76aY z@Q$qWH`vTP6}>QB^_EyLwMAB%k%xUy72F4?{!-2D9xB_?k{c2NgIr0dnyT|n7R z*wL=WfD@&UINqS7kzLDT4p|6qG&CGqzISAjmf!6Lmv+@%YbFFUCFk2euLMYmLT{w~v`VOvK80FLFqP|w^ zrW_|G?D1-Q`)x{qE+~^Tx&FX7ARwE_w^y2gg6OvVqGBbliYp3unueoGn)#B1=>sT3 z-yz|_6)P;{nXSSF9X3ffndGBGiLnUpUrIbs zRPh+K)KVtKo#h@%O^PV5BgEvZGnqsSqFl|M(2BRvuygIgK%}XK5OBPdPcQu18=QI9 zv)kaM>4^asNz%~ix4IMwUqFSB&0efEHV0tJ?}eQ)@Am9!&-&HA(IQApm71hYD50G= z2u0Rs7d5cDr+m4{%2A_4w;w}=G)(1(ECt`mlF9nk(mTyncSJ7zlrfbCt9&y(bJDVF znpULm4T!iBvxAQnWQ5#-5O0VNd$r3>G50{U7FXp+s7H(s=bD@Nr0(YR`tIE~|1KR0 zqmx6l>Shz=fKQXN0fQF(3lYf80U1w?v%o@gntLQ`<94{w)U@-{lz0#Nhn3d30Zp3*?}ucm98;>X5)ReDPYIdw24UVXWe=FQxTV8t28DwowvmRqyII(iO3@ZF zyNpg_tQI3=FhK!yQ}lF_cQIzaHiYe(<9qqzq|G)-ab} zId{a>?d>iu!ZlJGo&Df$aiT@%^NLv1M!DIG%dW*s54c_@hg1U&Jt&AnQ|-2#7J6Z9 zz^B+QZ{N*4p69CFdJ?43p2!y^hdVe(YN6vIujC6vV+(uF;($d+Uu1H3kX?r>K8##A z4EI=AvM_8fF6XR@nHOD!b1GKW_(4{A>6P4CkElM=QuB7D#r5GN9{!A(fD`nnU}|dz z@4UsWJWU}9&fi6AZG=pwd$5wpOw~pprxcPACiaEOK#f;(l?Z6tOwqJ{uYB7;ak8Zw zkLcgz*Mk<1)jwEOlIt8rEoROR^#PLH9uFJ0Sq7yxrM>rh=OBE4^aIbx`v+suak6Be znV(@@kxg5VUanlz|4eUHPdEZhM^kOj{DcT-DK2Cqt@20EQ3}hs2ro$NoZyp)ng216 z4zE3sN&?4Oaf{_3SIYynRG56j_9jLL0ar%x#&Y>CKJdL4K`)&6|Hu@wdG^p%6RMK0 zdHlx_WwF;sZl3s-yL?vLt66&O&-7n;HR(^1ABk7pk=6Cp<%`TB`O#l7##l)o-_q>z zAW0c$4402J%qR(@-{^i)fvFh-C8!~P*rL-I@ub$8xQWt zox&xmvy~mrhahkExT!~-->?~Sl0i6FhSJ|Lp;i-nj%guKZV3)Gc(wAL2k08ahy7fk z4^mLHjW|7t(aJ|0C9KOby^iQixVGQ!8QB7|eg8MU109l$scFdM0lE1S5lhhQmW@`B z$ef57Sd!*k>lP0TbGQjQq$;YbXmf~nr3Dn+K0>rzM=t}l>E15S8x#owO@Y+Xo8n|&gy;bjTILu5jw7ih7W|MdttO9{b3rZ; z1}(^QVVtO1Jcuv&EwQ)z-Y1{=*SzHE6W6ZcMlT_o$^olGZn-8`AzkgobzOQMq$P+D z^oibiqw>vwN@(Pcqx@2Gmx?T)-#K+Xw_Yvho_RMZ81u5ES5bQuMbG9Wd6Glq1510u zn4bcSzgyY_by2Yc=Bv{JnETFGfHEZAo_6<6p#h7I6}0?!f~S(e-%rUFM*`hHi}r$rEzY#gj9baC4Kv9XzW!JVbVt55?K1nB@l5MadI!<>AAY_ zkjE`@k<9AS2psRLaq4I?M*yiEHp<9R#x} zVa=8tWBCKtCtq^Yu3)PcFXobIke3}YqdsFnV9sM*u0Av^v3__Zn@mZ}x60&LL~n~{ zS;0oy(CIuf*Y*n$+LBcLx!2HSJwtI>BPxJ_Y`%wN4)D zavxKkup`f8Te{UgecT-}ww|lNnrj>uAiv*RKYjaciFtSUPE_uz?X6RD`J*~TEEG>h@empzh*i1lht_yeK#sHln z&%hD5Eu#i7fq{6%6ELpx#LYZRWI#O8hC4{or6%flwV7`8;@HCu zu~wgdjSD|zMTWBdv?zmC6HeqXqa3e;x{jD*hJ|+>pFY+|AMebt2fxqumgsxXaI4Pl zxon2{YHCQt^LD@9KeqPAnD6}yX!l!4$rxN=;>0Ht*O*S$s)J4StKW~ZJR~&HI-@ox zv(ek_#l3BN-#GcSn1{hk_QU^s+MB}BeBd6{##6rbE}(&h?BqvoxyP>6z~JAtn%r`& zr~pf&8As`dS7I}T{kkyiZk=bm-o~niMC{zbSCZQ5JaP^pE8kMTcv27+{8N>ppDp9l zsB(h#?SCaa0s4v2c0;X;$JdF z5f3>Rp-E!qqE`4r&J^1Y1uTFQx6>i>J zci4wi5!UWgH!xd!qq?ST6CC$8GZpr2ix^(*wc4I))$9}o`aON*5xVAWq=xo!)t~Lm z!#TSH>e>0LEBMR?MJs%7Gq3}H7fi_;TFdO9%CN+mu;pF~j~YL;Ozf==JD1Hqlp3{8 z^BE(0=dO1;Jw1(=o~D=IK0k?+tKaxkqWuxoE2%=Jj5POqNm+bIWo*IL)*B>LYn)5c zwMhY)Qsu)N%=@f*t3l1KuxXZ3&B;xkW1fYwBvJYPUO&(?QOkuU^fEb99D>H6# zir&L$x{EZm-g3RY3f7%X8n@=PR01OxVavjLC13c?ayZ~ zUt5-I73=i(R_V#(&Plsb`6*2ZTm$(aEG7?AGmW>+ZfHWcv& zDh8Oh9xI^AE7bI9C#SxTWzWi;oZl3bp_45bO+;c&$gx?jOA(|$g61rFW+RJSHYyZA|6bmKVs_h7I| zqlc*E>Z|`Mnp$HxQJrX-K9iQk!%t9N zA6hY`Jq5|_}y1uLYvT4;cS}1^BAV4Z9!SZr*6@TKVP}a%n84` zXu*;Fz?4Z!1{)PykRlA*4K}tAd~I~grRGrK#eK9ar;Wk-k4RBqk<}fW4=Nwu^37{; z2K)xjD-9hGu=dw6{k{CNNt>}eOS_23p>Yb? z95lT;@iT{e;C%L1n`OwO8;=EQ$W@Ra^Or48Tt?O}-l~v(RM0)b(z95-N?-BLAqY$# z_~8qZl%+&S2na(1H%0rsMQMj1Y`1ETK`L76sUp@5izQ#ZlUSGwj5JDrlg$*X-DL7; zUCD}MLA@52!Q$}ETuLT)b6rtjxqtZ7UnhfoDUN#9CZU_$veSr z@#1^qerp=Aa&oIU^lU8AmCIF--=gc2@L+O_zuxHUv=ZZ&e+FLo;BgEy+v~Y*ea5KxsaPtQ&3Cik1(31O_hJ#`PmoqK|G*REALhuEKspW1Xc8&FjzfqdXimZ)s6pGYAl2CaP)|)k>|~ z+h_cTTX|JvT+H-ldVBPq|0NeK03WUspQaCDWZ7+?qhB#hxKs(=51j#@Iy$-ujF!n0P2~t zd>_OD@)>PKS#;E0laj1!%e()kTYGHpNEBYdsax@a{o)+GKzJH?4W^Nm0YeCmz%lE0 zSy?NAV|bL)$Ga*T)X*OEL;OeYz*BLdAiU)*xB$T#vaQ$l-H|2zC68}4>|@3iFQ{p| zvJ-a9UIGx95@lipU#u-a7dvAYk&dwYpboeZB~SL{uVjq24ca$=)^Oi@(4&r6!G`>G z%5nO{8q_tg0Zmu$4cMXKj~#_R>AIO)Q%A7B_jZpTt>bh{HxOye|ia3KFEAsCeCWm03P^=1`lv;w&FuIu6-TuJM{>#?wudd#De+u(;>u z9&ep?k4TXea^h|?ZSgvty%OPXehl23_j^!Xv=z0UKu9PfW=2VCyOvpyV$|*)di^N!$`w6-3i(^-^LHx zlN(Oh?|wTWUfA~n(}4&tIwN48c4;co6D8!1ynOo3@th38;>eUUXsN{L#PHO z#n#Uy09nXiEkQo8-!wd_AYsq1MXzO@HwB>v;Emqc!15sRt$3Al~}DGXCP# z3Lj9%^mp>z{JOp~W9Y`Ji{YX>!7N1wGuRm6CRlSl9ct8pMmovUIXVlEML)4tZ{CfT zN}S80*N-XNOYL!HT&v@XvVDfH?i4C=vg`TQ7y=oO<6RlQ2qEMc$XfS9?Ug&u=iNap zC0hnzKclB_XnjDVp25U|dlh)A_Nqt$ohiDMp6(szDGkdK*!!1GC^dXk&ZltBfKx6j ze0)13l4SKm;p&i`vCUun*3bYQ8z)Mno98_amLX3*qYxRGqLte5b}ps_DtE9WOd^3)x8#S^-gb*U=- zS|;3G2e_SsI0N@?Bb+_18A;+oyl|2$CjN_@^1Btt`9NrePZkDh;+gOcS7Y!7;!xom z6lEXfgs=}A3#~b!@!JkNNAA%K5Rtc$dHrlFNA6TL@$esn>)vuMazoeS@1?c;7Qw8w zq2T@Y-ivq851nc549y;!b2~X&F*_zfvw9w{wVDE6U$VJDSDfVhf1CaZ<*NGR_kbwcI8R>tqkiLn&)X zUx#6Rda5iBAu3bDGvg)G}bhEql+W=SL#YcWBwvD-( z=O9rE;6tSP2H#ItXtv=v`$3AxrcYGZ&9s$@C{(l;qCB&Lu(((zk8^=NNFEy_6*_t#@aVLO~OXUUd~vR>2Bu%jJx;r3@5mB6<;B9CP}uG3*^d_J{XSH{#=N zDKAtrCGY!RSoLv6wXOQrN^GST? z=PRc`dM|7W0NC#LWRx$QKZsMmbt*6!x47($<{o|7#5`x&h0*Uv!9dUPk<3Y@IT2UZ zUPVuqG5yJ6%^>-|;qADElTCA&qkcZme)t{#s5jRxEzpLre23t?-F}bV-{EB;X-j-y zqZ&y|(lb%0NjW3j=%M77YKt@~GP^!cu|N|f$RkSoPPITgfp5WQju9!wZPuSPpQ6`6 zTi--}P>H;ZoVBZ>LDpY5ilvCTEjVEeY?{~o;9%3k@|cdg%_UsQ|sEd)-Hlq?r@42_1j zQUvEb2z(a5Gzf6WJg?Ti|?xMk&O<;As~pwJaqS7$ulsBC#&58$(CH4LV)dV!P#pYmK45`zmF^UBSrLN)8~GFp_JI1mb=ksz4fK_Y?J;GcVs}RxfgGJ>jkDGXyoNSITHun=hLpd zH~pHt^6K|pxm8g~dvdQWhyuyC>YGkqHF2sE`BVOK54=;G@{76>z_L*0&Aj+5Bh!UfdS_Wi=*tDF7VATVMrck5bF-0->pkL;;TOD_1ca2l`OTB$GI82H`wa2AV}9iMpL-=t>uYN5;6!LtC+G0cTrp6 zKEb+R#{;6J=1G-CM`4#mz6ZDQw({<%*A)m9^}N~(u10r`c*h;AdAMaixeJDHEc>Vgd8s7HFI~>g(PrIG^P?(^MG=9AeL<^1|()mEin6Dk27bYr`O!q)eiESTd+L6J2Tvuh4i z;Wed)XO#@@F}ez`r*sqxoLtt~>4u2SjuQN6t?WkJ8S3X(Wk zHf>}L)rhsDKtQ||ztqOg3n{B&G;2w`o_hMB9~vYjK1F{;dzQaZTzIu*u~38%gZHKn zJKI1@^}xL*@2oDio;VK{>zt2lJ+MXCkg?WAHUvhF2ld|K`mwx7_boJnjakq40AYkt z+c2rE=3T*Gx-HjkSdTzmwvf2FX~`WW8Si#_AO6Kmc1Y(O-L@r7Tn1s zy%vW0Ni4s*S9ZqBlq@>8w32M$6>2^b+)u+1wYsO#;3;P_J@|7Uv3hHNAgX_8WGD## zN!Sdm-g{aSd1ADrd{6fSGt}z{WB#aii{xr2x zZ!B(rEkM@TRLC{2tf>;di4Mcxnwo1;5%)6gvXcRQdB^B{R=$c>RMxY6^sYIiAc+1q z#TWiOd02r**7~dFv!IRdMrpo21(#g$2j1LeJ}o+1x9&Eml=bM%8rRP*AW(8bQ4u)FRTGB1{7KUF#Fc(L_g_|u-uWPt3wXd)8q#z zKcXLxoC>`7nkS?kf)TT1op}vBjC7z{id5pBxuV@O2ftwT`<|7Iu+h&p~h=|A@L8J)$ zw~9l_P4^uI$zDi&a)WkB!6jZ~1AL>tN$>>cP;@_REwRa=VlA_pu#5REHM??I7k8;1 z%g}O{`;E&?)qYr+`9YC2D&Hmu2rs#~E}lovq(Opgs2cTDa^>ERq^v@M&tk(MBgY|1 z?WhsWcyejnU%V$nu&tno?81qao6oD&;ZdMU;`-7KbV;wXG6Z6}yrOMo^l+<4E%rchh!lWOI1Fd0%kB z)z?p1J}p=9F0B7Y(zVAk{eS;TMHi&Nc z|6Dg8w*?JKGmnxHkziOjk8DzgT6bS#^T`8Qm`LA5qk?YoeKW#3#yWSx`csacX|z8~ z8+{?iZ4LLh8#LtuM)h`Ojb=U0kxUui(-R^Stf?V-(y)2aMIBQgBy{s8CJPWysEYvmMi&u&~5S+5a; zHoM+lk^*ys0N{MZ^2WvbP-8Eg*OIB3sl7!m6!j)_VkOQvND)^jnK!DX?JM7#h~U8) z_mOzn(_Ol{Fa^RI*tq=`zoVG;SThz(W#;WZ#=gk^2sdyjE-}XVrFSPH4DcQQDJKEE z@TD)jAVg}5^PrVve?}i0D<3oVbai;}Krz&qPx%_dKzj~C&?8msl&Ytb*@`M^yoxpm z%)`Y$DF8U3{0J6awJwTiPv3&YA=40>o^DHGEUkHcYwi8|cV;7)L zJOD-gPmkFo){(xiv}d{fE^8I`*9DECeIg^-@ooezbJxbt-~UX`a8 z&g-zO#w(Tpzf;3<*BetDFRb#IA*q&76eGCcG{> zC@%4E2;T-k9#_sFIy*N5k#*g$M+3F`dC`i#wf<(o54xdj@0tww$8KOf`{J(Jn8jXR zK-%OL0M;_3zeL9%v#c5R8B;A%zDwmVKRUsOP`>QtdM~`&fC`!!zf5!0NPPUE{M1Dve=02q zyzDQTd(lx#+b+XDbLBED93<8G9IT<;ZmrJldECt&QTdOeKL?roewU+P>2q9l&DWw{ zGF)$C-d}D`B}eld>&r-;&vhR9VSlXn%gRglN< zWzG`9=yC+x>}`b<6|<@@6nE#W^#@^?f|->}@K z%T#$;ml({eh0Gsq3h@Waroa>6(Q8N9%%X+N51ZBrth4 zU&^q ziz%hX=lBrNa-6AF_4@N@ycZ*DXN4J~=-SZL@zE_%&Bp7mNd4C=# z(jQ(ll8_NU>Q(|e??Mq9nN{#94%^MwZE(eV$*R=5K5VX=;7s|!bK}^;;D%e2cU~q^ z6gvp6R5E$a8&*Gt>q<#=C7cI80?*FwrKAN1uVr0(tIrKB@>4e5fH@&;3%FDyk;bMxXWb8jq9O zw}u<%CDk7ayJ>!}J<#lcHBCH1CnRuIki2f131;?*3l8+PLvUD~+nM+NgM z9xqjhqP5>^OiK8F68(+t6a7ucsm82cv)9y2p9ny(!0#LV&uK|kIbHG*u?;pK8#Yqr!tclLDRpWdj@jej-JmTzrY5q!MVSnbDU1Ygl=p&smtGLnn4 ze3ODH2rzPqZU;-UZD<4rRaD;ruSzm9Lxh`?S!~b?XBa(GR240P5Q_kml#6f8!15N6 zPi*2QS)bAtv;5sYOzcL<4CL7E(0^`Z?N`wrs|QZL7Dff_{dC#c;JiIqD!v`O0TuAD zQs3&l)5v6%&?fiyM)Nss5D5R3apfiPaLBa_!3)hPW}%Wufeh7i<9HWF21}h(dk2_^KZd%a>fdpQw zN%PWsQc@2^(8u3Wx^9vSe-rxdM=~3i^7^)RsgtS@!3ox8Y6#JI_tpk3kHk4t?#v4ws)f1%aMi{4P6v$yuAEB(BH09uy9_%B zky80+RA6wcWDOU)8>pzDe(>K3_E$`)JZ|qUUjgJYZsi(ujYnZ45X+qpW(!g(Btwz$g*BqD zVfHt{?Du9agg(qoBe5iY%gZX>Z{EClO2fGMbRtq>M@eo+dFQ{=2hUjvS8g8Kn0 zjRJ9rn@3sOfcMzn#joyxBdqa@)RzaK`J&a_OFD_%>_zkBR&RDgx5|8XdKIDr2m^e$28nU13;!lq7;K_UG zx1YNhVB=MhSr!*)_imV{_R^GZ;&cO4E~1mup=77}n~1%LUPJ)J_b{Nk(fyNGkxE+a zT-~hG;`!yG*zWs^$;I$!bW$>9z-XNJ#CX(Ckx@4dijfe&fkB^N!?*KU^J`IlA|#eM zaQ%Hs7PUo91XsokzFmmk;!Bi(#Jl-d_YwnZdz( zb!Q?#w)jgZ+7JjXr*JbW1X+U3qN{0l*F1v*)8EbpnN(nCcokCv4w3syG14SinS@xW zNQPk8khKQpxl@3()B15z)~+A-&HS3%DtCYDZ}NA|uaVxI`Yth+5+QhnUu`;POvcu8 zpLYO&y11*>&o6{zMfw2gw-N3Gs}5Ai&_%6wg9Ou<8{BeAN*})z{Uu}NM+N&ifGWM z)noVgZSO8i>`wF*<`)GFbVgQ4_9GjnD3wzE@d7TQP${YJF)03+;@-<2>u;*{WaWH9 zFLfs2kp5;K7f$=5PwgrFFzTcYniS6K6Y#1qotDC7{x{?E*GsZW#d;cv-5~D?-q+h$ zn#f5%(*j7nK9u$%zlv8u?D{w2-6qsYRtaaFjKC&$ZlFV5`AP?L9~vNf-2)zIIBTT6 z1#Gq?UjC#AOIc4PZ!b$({qN|-oAQWmQxlx{kmHY*`RDqQq3JU7@uP5PdQ?gnJx$6l zmEP4|6!3ulv{GI!vbt_kz7tDR%AAyi3Zt4isEuYtB_@A zQV!qNXTEihUq3qESi+^4U%0pY^s&CVealxycn{_6ka;ux`X~ZZ)GNyQ;M&Cyv(p<# z@SU<}EzQbnvC*I5D^42)o1lH4)Bc_Qf2a&s$u1^mw7wf894{O5S!y zeR2a$W_J^IGnNxASpm53xD~)=#L2t02tSe!l*xLv9u0RfA{a|rWg06QR76itC8f)x z5#BfHQ5pANrVN$!$>~VjYNt*f9}9AZC*&d~(&aRt<*aFJi-wEvdI_K2){L{dWgC)b zx~pj%Iux?gknsV_QVWWhp=O6dHs^U`OlCQd>Lu7^E_0P_9?u(LgzLuqM`=qjzVHq3>rvpbh4-lBH;WnNMf%zV z<%euCz}yJ6&sxEn3Mkh6v(>&<-Mni2$j_%|k+KnJ(5<4`|z{+ff8V->{Qn zBi$3$Lt;wT-v2#%?ODn~(pNXNcG^8w#qv!gGd$As_v{+lV02?0 zF-rvaA)!>avq+MI&JFp;xHdKhv;=5OYnJg=mthHcFBQ={Ap`$*{m)gr5~(NT<4iOr zH`&Yq?n!zNTuX1B6XZ0WEolV6h=%$^3SMtL+*LS;FZs{*;xjr64qQaNB ze4vL`UJ$t<>cIXU2R`t2y;8(0o}ZbH`TcCivz&Y0551o$M-0Q1BD8wJk9wdsP-43C zvXBwGHvmqy2mK`}_(7Sn@1zOi3Laf|XxyH_$^D3dK?%9&V-FfR& z5^6$6we%*!*7Jv*L$R*F=w+Zd$BLo5HOATtqM@&IezqIM;2cQZTUYZcaFe$MD)4ZZ zS$Qrqh2b2%M<>N?z!7@k^nkE!w;{x^U261S*rYhBgl*hrAak~sX{A)3uc?)HTm}4f z{%HIFj@v*?Zq8fTqKjeQKKryXr`ukPrC!f#0P{<4ek8H@>=W}cP^JJr3woWFm@-Smm>U_$t z?zkmTy@V0t)_|rnHMv{#gL1Nk`$Mh*xFRI2gnGuV9JBP4JKXOy|io z0^J6)iLa`C?5#Tf9QN3|$jepoz2DD@5P=fw$PM_mL8B)&q_~()%g)L9M21e&hMgV_ z%Agt?72!gAO+Ty>hw9{&4B9mO)F;(j3`T4MC#8kz7_KZ~86Q`^Inqu$rKX6APzK|*y z{5#5J=MTKZV3H*&kS8$l6K_JXjsIluK}wGQ6kOz(3*`7-YXm{Rq>(lAQ-*mFKr=|z z0`D@=rJAikNGbM$u04hMtEqD{@8d~ToGp&|HJboVxB`8U4ep{Yd@cY~f9Xn+9Kqj2 zm2d^*eulgHTJf5mZZx6sA=ee(H$PEv__AgtluXnbxE1en+=3!H$HNf@!SsOa)XB>~*^SIkJ6JW@irF$1#GaUV3=R9XMk5{e! zD&p>I0U9c#PeFj6dOxeaNLxa)+E$Qbx9leu`hB!B2P-A}*^awO+HlP8_v_j3<6yqA zz_zWWb59wTUn5q$#7)KC@B_(79Y{Ze(Q67&+wb_@X*VoyV(Esv~DHUSqL*5gMfJ+CtwUgV^s3#h4d+R^?=S z_I8=)7(bug`?cEZ`NGVrn4YEEkN*KUSgIFB_opl)UNsYHi07 zwd4HOz4k)Q7XJQ zJkD6u<2Ww&S1@@-R4CRIuv`$W1AeIlK00{tx0vUy4||YJM9-dEKwt#xRt<1)(|sg~ zQ+c8Qj@!tlPgeav$$3K*?`9RG-`=Z5Scd!~B{$mhSQz;pwhjFKAYkC*vTG81m6+k# z@|}NSfs8tze%IUfdlIH;+-tl}X*+{H2Q6sI8s8h(v7Te+O^^n|^$ULwQcrOX-YZ_K zM>!>E3_ZAhyJGTMQ7&VAjpDV@Yd{f7sSj>=kwC>aU?eQNZK(AsHn2si7YiGD&|bMT z=@Ml9^hC9HwY$Cn50zNwfcKqA*Q#i)#cIaHR z$dcmT?M4;Saz@zLmyQ2jxtYqfNF-#W_NbDu6IE`~j(K z@??1<#g(__DdUT-Pp%gnV^mfAj?MBTJ)neO*jYA(o!d&uRrsqTk*<@T!!@}Rd_~?A zvFecdju!(nQ`IfL)wTY~+eMvRs49(?jf}3mr;^yq9h8dZ*{JISd#GvkF> zW5|t%D8ac8D$FV__F&O-g_n_yeqNYN`mF#x|@W?e-VX(au(4z#w0 zV@Cc<%*ihAVMqtqxVjNKYv~-cfB3LL{NpWtzr#VtA>K2>J-DD1N0`Cjw{{2XtLJ(O ze@Gt)xxoB{401w+3etJgTFe=cCf-?5x~4U)%2fQKJt`~CB(1)?hGV3*oPMe8-h&2c z?Q%fjl-uURVepmmM^F6}a$DVAIp>C6hZXg4iC%`^fQOo>sg#&hYoLuQq)819%t8v*8@^biHuMtKp~krplfI%f9a$?G#>U3A)sjjaLGOJ$V1)pkl!{MP-J3P|ug0UWm>x?(MgmqcDN#hz?Z-{Y~%pa)RC zZCSrXa&`m^YTDcK(^;eY2ka|bfsS*DAx%fq89OT-yflf>I`?i`c^6C@%A-emeMGqCdcfSNF$1JKFvnwMDOL)w;QOp=-+|b&EVG1j!Wu zfnY71FGMYh1a@}Lrr8EfckB)juPhJPf+oxs*bK%1Y$(>5(rD)DyP)euCILU2Hd|S+ z8cm&tA8Z7R8-}Gx-YtO0P5UB?!RMi{LM}iO433{;e<7C z`>$K}RyUCl~&x!#rYU148t8`uY#C)mVWsKS}q&cze-f%tWT%eWEHB?!q&xEW2>l z5wg7+K}d8ipKOXr^ocBy3?_BNtGhMtsL>AAwv71p2p6_~=z=G8;BIqX-SPdX-+1zw zCF9ScE6Hl?qI}6QYrDmqMEKY_Xk|PB9j*7tKM}3vGw`c0U$V^l?8e@DoQ;~#y^pTy zFK$cqF9ntivSiL!gCkK*`4)}ib(<=|4v$IFC*QYq%tm0 z`n}+mE4(F}#c<9hRQhpBrWbq?O2@OwcG()Yo|x&ej*KEi2_7ETuv@G~%OsG>(=qB8&vc!9Ppwy=cDATT<0)X^xDj_jCYhDYNeltTPVcG$tvD8Kc(dSvkh*Q&@cU9 zCy>n0)!7KG5!$=rn0M$wpKEioU~xSb;L2T-btp9^1?D`qaqrx0k?asB$ui=(j3)*m zx^K9GO23T<0Rj2i0*+l^rbUTv#v>;7IsjsbLn+~7#G!SqE`qiq3%x=hYyvjyJ5H!z zf&bs+2@bO~0LyWGQ{nPhmJz#>@$)j#e(18MNL`KOeL|qwB&3CGu7>1iKc-(4KM27_ z`|I|$WjF5|svRzJ@WN?oX%8M)<1+`Ff< zZ{}3UG2VQ|RRNjQo$IjYrnBSP#q)d{d zj@D=Axdwk9KwQ@y7M!t$x;Dvnp=}9mh)RjfGn`Z z{z1_>qKNiLD~a!J{#SrEk(Z*b4;O|u1CX7+dxa$X#C{@7y9B@ioQ$bP&#PmjO}}WyfSoM)w4lkmW93Q}OEFd*aU;Wyo0)M| zsgQ%;h*5wkN+zPWXtEK=lM~~{b_yInL#*Y-P4Zd^r@-2k(CY$L*V1lEjybsrbVgnut!W%(XMJscg6$6Lq^!upFohzV0IdKl{)P4o z>x6db#fRRPM=Q7!ytPL-XC!Ju{*C2P^W==(setLA*cUqQq_PIe>m;qm)4ZH+z_}Rr z#itTRRxhnM90Gqu1@!ZW*q#_;8NJl*-G<;2Liv$5OCY(X72XfZJvR?XPY8OsQ~* zgD~eQY@1yNYcX4gkoo(`e;}xu)O^a&3_=R&nPhqTK-B>oxO$v0ZmZv-?Cg)Q}>c zLSJd+>9BZ~yOb0N`y84rWk&6XUvZs%`ED&_HQ=zZr0E7b!a_U!A>x?2%j{IPn{I>IM5sNUV&4fOBIycwcb ztTX;FbdkjA5g`u2f)6s1k=xxTmr%2IKDS-FP;q44;mM96 zRfeXaY&w5zoM|JFRur*>@8=Ps&Yf77u~fcCDwJ8~FC>D}MgJ}NdirU0uml;MM7%1S zc+~+txL1{^x~6y+!}E=x%W8V)_nOCr8P1WaC*~5;DID>w@ps_kpjxY6L1sKFTQ=Y- z9LJ~VdL>X5W!h8!cQv<8)%f~Kpn5quSw6X#b8s3F8N+4P&bGLaJll&pCIz_u$3+8f zBUgg$yx<=cA*VKa?zqTQifuTL(YAtWWNhZt`%n}D&u&91uCCPEOkh1-uPvZ7t~}B&HqGD= zZw%b{Emu>pItZ0C8Ktx8mv$;)mrqk1M?h(aoCtz|Yf}j2bg1HC^>h zVcyqg(vFI!xD6v|XD@V5$N7jK_8>RU5?ZBs#W^|BMb zlYY6K0EbUgY!Qf@yfvj-w)BZ^an1@tROZx!^yGb_*{jm&7chv18+a#d-)l9d)KQI5 zVN52e1?wneB(zG;KMz|iE8Ztg_^x)`m&%SV+s!{uzcqSs_eh8K z8XOJsaEzZn(hEJ(XO;|9rIL!=`Lh(U%Z|NW>HR5r z>B1qs_p>|f4pjMYnxZRXtjnd#>}P7ya5(MaKPC1=P{blV#~kGCrW7JEqnpQHXf_R3 z-<|U&KVqtyaVDQiL#SJ!hl~6b9K;dVnz4ZjeDexynZkiVrt4^BR|K)orGAuoPrDQL zEw71LzhnDbQmTX^v9PxAtIH{E;ADAJ>ZNcFic@r3G1eokXvJVh>D`I|c^T)<53_H% zWtn9ni+@CQMw$Np>v+NQ%BVDH90WM=l#2J~1lD=ey4H?*Xj1Y!{d|I{jYR=5cNkBW zH+(*;FK?ey;e?3D)(@4=?=Mg*qLc=+Uyip;nPz2eC4uAkf*W|eA#o&DjCusBC4vZb zh{m~Vb* z8R#*;Hr$Y9&!*zQ1h#gY7T8bEk@pYSsj~zX-);n2RCKLaC&+Rkrbf z*+ALZ>fDPyl%z){Jq&qMKN3&;E%fA-cNc3_Y%A8rFIx(NB)_*K_PD(W7k7ctzmF6x za+&=A^16#mo6L#uBd#p__PJIY_sNT~fBiM=(0mxTRB!?3nw##peIp|Bh1Hvq<#K0+ zZjl8L9qpHw2PcWo%USS;rOe((V6UvBluiO~;O=UOB$wXi=ljyZXF%@0F{*i#)zv53 zsuUnbt?6AqCURIoQ;4Y1sbSOjg+nBfyusT$A)a)(nh@;BrO(G7=159o4WFIQr5{L07iwk zUw5A5LaNlXKrpNOuS{0MhhMQQ0s{(^wMyep@x<>MZa<07dAl-J38;{f`>CbEt3(6e zR^s)ckNAC+DsC8c?f=|~(k9_gnGRVXZX{g4_9Y$bhaE0*p7kiKkym_aqa${~Q#6Bw4~^=ut9OMzc-6j~MI2E03z{N>J4P7Q!ybR@UYhM8adpG?f+RNdX(mSkBaJ%aezds*yuz8>XEOs3YsE@NuVog zazU2FpueoZ-)r$~H<((fKG$BvO1t32d6ld-*FD48&yQfvgBy_eKA|G`6ht_Aq2tBf z{3)OGfsVc>rLpWK&hY7zKygm5ST&j>6Bv3*fF}LEy~rt%Z2DdQs#Ws4aJJLRCBQF( z{RRI-_j76<*SWUu4LhoFc<_Q)M@M4<4UnV@4H4^6UW6&##tI{?i|(fByDjbqKWB%? zT7tVhCm+%Rz8PZj2jL~@rx?2hhL~hFr`@7uqju@6XhbW>Fx=$vk&E|N^Z~y2=0Yg( z9(%K(PX}&m-`Us}HT?8$5hHHaVuUbdiX@RcD|^V1Wl}W_fnqBPD63obPMX^Z0HFa;hF=rr>kL zr@ktV0$-gSsjPZn=WDfJIo(>;KXsOQWtL^Rd*FsyZ0oPUPqZb7CKR2Q0@wRntICczu~w1CJLy~I1olP)m(3x~In@zQO8KJFyyk=}$GH;KXK z9XO=T-`>TKjPF1R(1ns$X*b-2aT?2!zPTTf7P-3cdjZAyBX7l=W#IRGO48LIPw;)) zL^6>kot?gUW?)IuX@9dP@76=uYvz7#VGmm%-$fxbph{|gj2R>15MZSw^hg5NrAX3*?Av}wry@H^R^>CV-0L|e3{hsE0lMogkGc-1<$}_6WXFZMwxjQWkL$?i5eKzTS2`3#$XpOw zy%I6x^=trW;^v4EJIjv5nK>8~mS9m8ZAY^n-Fzv2FJIHj zG4j#GHu8Rbba=_9PekUQ;W#nmo1uw-RdYxj(6zx(i@StRRm{HO(z=}Kam)C@m`G$6 z&ndc%oDEP;L3m#Gn<{JD*>AYI*tSQSapqU3F?T)N02x?50DY$XI_4dIV6g0ver4l# z04p42^8UF~LX*`<3xVWsg7 z!bdIutyaMTV==Dp%YTZ*RV6hjI$F#d&mdTjrie#6(*u1kjdVxb|$w~*`Av2-BX-OObGBX*i1 z@-23I&*IkUozTixt~bR`=9@O;pN8I%+QT;3HR?T157WP;gR{!WBh9CTM;P}ln!jx4 z{G^}$1KUHDQg6*pkuqP5ZLZNlP5K@}#Q?1CXE-^jp1tiGrkfc%Qu}cw2GS`7FD2*5 z5d%;mgOdKuC|5gT;N9$RFJj<;y8$iou`A{)p8MLCLjuaH-EKev1Lr=tLC8*Gb4Mmz zQ~j$BMFwc^k@<--t(le0giuCO`>dkTs)yMi0>%E;H@t7#ylO6#Nj*;ajl8XDuQ=Pv6vSB_(SE~3V-}(9guKpOnCEQbNSs))td%H`X$G zuKvX}yed!jEzMZy()mf~51|WegZo*F5B|?wZO&!M93V1WGvCJ}Z`QM0f)|eG+7XvF zw=~(FR9?ASpz=KWX{T*`0XEeELVugP`14s6QyBNRG-`h~Ud$)Vj#x1pHW!*Ab3NSu zKS8pHK=ksoA~`bfRfYoFmw`{g#cVSECii-cIv*M}y}#cfZj&*==I0FH@&m!4ZtScZd6?KP z{R4QTk8jA;qF!og)`I=5V!4dyN+H`=TpG7cP%?IPqHG~N=CTav_|tiWRHp; zC{g$ItK0j0eZL{lA|5m3kz3;xELlAG)W^&T&lMUdDJ^cOmC+XM8xbot5wCRa5zWXs zZpU{Ul;EnpfLEhaFMF*v{IOH9`cR?^eD4$ZK=eI<3t}S$nzP#9p= zvoYPYhVELCp?F(9^jD%U+|8&RGl`vcStD^_>sQU=pTlz&PK{+EOKZq?>y!EZ$y`PR z+f{kcM#t~-$>zE}b9x*f`}iH-HJeli?4prbACYx`fYZnph$HYU zP_5feI3;iG;=+ycJs=tS1D9}eH#_s~QbZlC_;v{5`A4sb0Qn)VQ=wQcik#@a|7@3x!`D>+%i2@yrV!|z`J!7Zp+Fq-O%V- zDGCX@vP!Pxt6~QkfZlJFzMY@btwRL+75wH9lw37)RXHDIIxa5`^{XsVrL)r<^4@`4 z37eUYeqXu6KVd(s(hV(-{z-*JgOb|FF^Dg#qlH0u+d$Uq9M8af&WEsYLmYASK2=3h z3}Jx8y1MadYW<>VzV`BR!k*Huk)Mp>VE8%gGg1qcD6}HCf3{V(0=J%&G#9ywq^wF! zqU5jgMH@OF{~`%YsRpbTTtrR`^)cmjG{i7m=haOS8xyO~1#F%Fqx;`j$q|i#vuyb4 z0o=^1GXT>pTVkGM>{x{7j{@(5-g=axg7H4g7B&5QSG8$~x!sBT8r*&K$BF<14>%jZ zpA`n}alarm-KXpR8FlS8>22SH7p`MPG2Qq)g29^yckjJCzAG`$l^ad0G{M)3;D^&m zbHeMQQ6-&?QnM*A>0J@FzbcGU#;anCU1Uq16%6{GIbesR0@p_RV9pWR_f9nv)^ zzZ62h!ug(6Oz7@30Uvs? zc|zi&DyU(*Cr_dSma`I}KGw8mNX;P)-zEi6R>fAmeN0DI@1RXbq|_q)-)#<8h&g2r zs4%)`3YQV$TQOUTv+%GgbDMa5LNz`QHkmA2H(9@m5#wNR<&bd+61%b>Vuy(>UUU9$ z_Y8ERY3d|Q`_1^=YqcM4v&%9}AMJzMFLX%J0eg1y{dLe}xRT$oDi~=L+ zbN#_Ho+BP6l;o9LZIk?H>LRbQ1jB~)Up=|$lBAmwM#7@~(GFGKhF z?TvQ3R;}kbeAPO=zY0fGPG@>u3lHS`Ws7hKsqO1DL+PCivX?>RK0clIA1%kAV4>UZC*u5Sqo-|+t(6(h zWYHoO6MCJSL(gwPRe2b6B4n1L70#)jenUDU6n{NULL2fc?DAxo4AFTrHah0n?hnyZ zv?YCcHa9pL)qt?r)$QBb=zva&^fKEY8BwGh zp=ZH+9y=c&=$MfbhvkfM%-9kwP6zCbTWH_c`LpH4R1?5<`o-}7mN5IwvoiP+{3~R| zG}`w8Lq3Zs^%g$-d3IPW!lMc4g9jcTSw$|8KYM-s10TP-3lRIqNu_p1CP>~)H;ccn z4FO%@S`jJ^uOG@gVJ@wM5}tH~92njbpJK(X2efGl>9ne~XsJb_-UWSqs}weu0}vlF z*J+>442|TZ#s$sp4s37N(v~7?%Te08)ZsiK@(%d4sV~>( z0G{%$`${35kzXXIEz&vl4bYhzF&Dw)`nB|&#ykmcBiFNPH_^Ge3eU0OQh3CX`)cRIkwJiW(J zve=B@bBu41EsIVEbEKL6;E0YaL>yVkQ2Z5(!Ol55i#~*Iz!0)w>}xfzEbI0y%uKkH zjJu!;5m&YWpT~Zl=;Nqc$A!$Z*UZl@8@P#Yl_}e}@u8X+fQ-}lcVC|?1|$Q2#VKtu zRwYJ$5-cy3?EJTJ{IZz+vJtV#?o!e;tWLi4?1+PCjz>^3h{Zcudm!HY=lYZ2zZbG< zZn-gnH}Eg5$Wh{6Dm&ZOtmYY|z04aL>IOdI0X;##A1CL%rR~$w?^D6oq4^WVO})?3 z3^{Cul!R~M*9fxOBDMY*}uN%e^;WKex{caAVm(Z1Fq zVApA=C6JcWE}GKso}Ax5V^~wR$I65Ut3xqZIhlS2m*D942_{L+Zd;;N=;s*+Y<{#O z@JgH1t({Oz^zQdNIt8@%@GFg?ComUQv_?v7f?Rhx;0NPhZ>es!GShATe4k7hf(Blg zR>@yr)H76`j$rR8D6tRGGtt(u{|xS^tqrkO^Tlw@ewY23YU#a9sX$`6X{KnN*Cg6M z=Z1KcUZwJpO zC^xgpZmSu_&+x>Xd49%Fb~Zz5KMSub8jpA3Pmb%J@#ebw>4PcoyluQ+vd^V!7Ssdg zO$-)9pnE;~k$T6`|34ikr)IXI=aRyCLcb|w6smO)pHH}e3z7JZj70N01RoQn9ZgzP z5%+Aa_PXI6xpOZfkTZ&?dSx{|pZ-DE41*us;ydVQ-kM(wJ3OF!|3~9}dH6!zH>Nl) zY-T1v{EBt#2@XcJx-iEAC`Kp(l4&~Y`yXtmh~y^5=MrK7gug9VI4&4Wnmhmp)0p~a z{=4(%AR>Q}1wmku!ubj644)ko~vqz1pCrofdq z?t_XWu}cLn-}NDQb8Z_=R;#YxYg%lsu^|_L8O$EC-~sR9pYegieFAH2^LkdWFX)9J zYmX4TYB_*>S+BHT3u|1vajPkKR;Y2o@@3XRTaK+7h`PU8GO5(K#~6)syC{!ko(x8> zg1;1G(4b#8({Tde@pZ|897H{iY;&Yx&c1O-G2rTJuT5 zi?5oy_l6$?SvmR-SKP|Gtnz<6or^z{|NsA!SUNa_N)8i64iR#g4N1~LQVvT_6%skk zFwDrINKDEh45{QWP0oiolgVK#Ea&6c7&hng;di}1-`nl?CtR=VdR?#A^ZC3#9*>2W zXus@`L|xg$Gh2v-Zs}lX5W#8|o1 zgz$bDR$9b)Y6s{Xb^N9_`^%@)5Ne^}#vQ!YeC;8tYVXljuII2`4$_t}PE_eO5781| z;m*Ts?^X%!0c*372CnxYT?mRvTiW8iuI)C76rE@TJJkoWhIzboCm&#GUyUQ|iF?C; z$D%-T^$QAp*lfe7DgPt4%BU-DU$rZ-aFIAp8JGid$DW*beWpO4qAl zkL~_j?NY`ptTL2Fe5Lmwlv?+|)ulp-y*;>c-Q0{On3TbB;W@0lQpG4%R!cWmg`4J9 z*sxA)g4YFmi@|4cBuASrHGhdlWN2G+`Q$*PPVnjYLS5Mmv+?0qG$vAf$%$|K@NpRl z+LcO`Hr>VOkFw=J`c@~@y%N(DRiH#Ll8ctUob-zJk}QQeWdH8;PS-%v&M7nlq$1&0 zb0$b~-5;5r_3En*>m);m@j~3dw^Y8 zH+P9_@{L{3o-Fzp2`XmGvLUDgFxie8@c460Ys@X$+hdVhFPs7dj6^*Q);`v<$h->! z)`ab*4La*gM zQRg<^8x4e-RyAAx`Z{u}88cnU#{IQuRw(#Vuu`{%z)Y)U25)=TtbjACEKtV|=D~a6 zvt#>sd)?@`F^1LvX4fhD<)M%sHMIKv6Ps8Sn1+)(a=<-HjoVv08R6isaoPdGP(-Xm z8whQNo*@JESPrbX<+v4Gxp9pnHPsB$P<@d4aLEWf(< z_gvbss{1rtsyEUFu*?q!qOw5 zo3oj>K2YjcHzk(NGzI%r#KD*k&@G(Nn-12|4bmc{RRmaX<^Cvg5`xuVv+xY;i0|95 zB=u{q4}teOSL;xFO+~9&-{K6W?DkUUKy6DKS9Vz3#cWt|R}{*^Zb1AL?n5l6llsr+ zzE#BpWve}lq4^2F@DPo>hZ?qD>hL^?Qf=bDMBS@!56cF~i4T~iQk^0x46T2SPPSV= z%@&B-8z(J+)ajLkd&#@`-b!8Zi@a|sM}vGT)7&CW4E2nrb}s22WtKR7>NHA$X2jmV zHfgkb7ShszzCEt*VTl(<&4bDU)3M-Fi7AB1Gh7MmGendfX3&*_-R?;#WuQHgf zfg?}K9)6NO0tu7vpg34f)=B<~JODIGEEEB!B^jGMlYg;B-!Wlu=5x~KGpLB_viJq) zD3?T()2Oujd$`TEEx;+EV)({)NHh%nk)DzQ-;TqLeeB18N+0nZai^Oj?HYscvKQj9 zcc%t8#Uj&jT;3A?b9>5}!OV0$q!dOhN%OkhcZoilBm?V{ zAJp0W7W5r|`)x5iyijV)<5jC(a*i0MYg2>6i7lDm7~!@%B?>w?RMpcpTJbR(kt*Ln}xo9L9|8Pc}wX#unhC z(`d=0kI21G646M-2c#f^=#WFUb~{aV(;oy`ms{>Vn5yiauXA>*aJ7&B`bWPH@S9B1)7V7#^Bh2C%hfj zUZuiwmwIEnK9MMcItntwi3ScVu|^Ete+&Qto~X19Z>orZ9QOXwNGqzUf6hhNP)63aY4ohXAahDWw+J1`%0ozvc~oOjCEV{*6&=dU+(qs$=})B8AfDw@T@_* zd+U&f!wRZ;j00EU9RMhOZU`G`$Zyx8Xe2T8v2UxT$A=?hRvoHEdy9BG8CqjGcZQ}f zxF{7lhB4O>c+4oLM^(+B0Xbh|qxrHPC5eFF&#$wL7#?Y^YjC~#jF$)AVk_X{vGO&! zP@+qu)l>R|D*vl~!`d{4x+1)03g~u4@L(Ex{~> zZDH2kgh9L4#y_8t_fA|)+xSNMuxnb;tQ+OYZ(XNsj(6Cqd|XX-DezDeabCmmXevj- zDWL}De^YAW`m!YbUqN1;4Oe8RG;cJ}P{B3Fbu2}KfPtS$?=){{Gb~vzCuS!Ev7UA_ z@|tA}H2`pk?V22Dxxj6m$mX7Cw=5HxmH(mk1W6=b_w};MzND~L^N^sDzSE>ZmGD-| z9H^?p2UXPAy$x7#ztaQLblVsI5AIN7T zf+T}U_GtDRyc8R-CaV{selgB!ruFjlOsltu-|Pv$y$A9@QFItw?%L_xEjBII2w!p~ zOg6O#d>;JI0QZ!~!#Fm^($RWB9p&pRe_n9nm`OIE3j*CXREH&a+pLSb+}Yw=6HTt8 z-DVb55LfJws3&3{7rai4OL#jsx1<@A#$DMabIxNn>KwJ_{73P2=y`42+4jGym@&je zTY&oFW*Kd*(rJMOC6Ccqr{k(-hu)mKl^!;{1Q=X0jGJu7`qfx6kQ6~lGnncZ@{;1o zq7EMO?-!s_Y@yXlALEzrxKNTxp&!^x3;DpZ6JyzMEcbk5w5OoSZOT#q2$29d6D?WS z+#C?VfYigpsZ)1sQB27C`K0go{gP<#)Auem1l$n5taJr3LEYsjtx zCmCAwi;`Ni)z8CLk*-@pG?TAc|ex$}j7V_x>E0Hj! zd+pmD?yTb`>DW@^ShA2u1s^Us#b`HUrDwGqq$G|Ob}DzYi+3iZCD)_GcpjZ;MX(`C z?ncG!IVGTYcupl~DR!DwfTLyjtaU0l=2S`d%FR6(oj!k_R6EUC!-i%23Zn|tkI}{} zm-K)}N#B9daAguCvN>t4)koc~Qg!F%_gn>%Ut}(EDJ3)S91RF8nHSXSBRi+YuN?(i zQbRP)3|ggs%t|#?C&Gzn~MX|EbeDi z%8Q;d(JhMuHCcV78|ErFgep)!)*E2y%CkQF%FkvOx}#D^IR*<-?wxWK0E zR~af3v8D@raWBi<#CH&VRUh3iJ^OJ>_oJ7QW0BYg56fBV2cL2?P^;li?yETd-vPM{ z|9(*k-kc_jjSOP;tXQFtuX!Vg2l%K$N#1kw@ANvNmRcYP{8Eurj>j zEkL?B8zc{Hjh~s6TaecqQpP^95bKaqEhaFLjw5n2$Nw3KNt{8PpyGRe;_^Gn{+5ks z`2S(@|8XszxGu3O#Rr;>i6Vwtj>Mh&M7@y9geE^&_>B3NV-RXq4jNYVlNrH|Pd@d^ z*R^PsV|mmQ=S0UMs|oX!Aw#CUDL=J;1zlSh!UoAqo4oaFNxls$Pmgz}%JwBOp{JO+ zA2;42)BT^MNzwFc5R?Ed;l)KwUu`IUI!MdLun7?t7@2^tnE?qd=;y0=O5UpK;FFRl zPx(^!L;@GcY}HmI0ZO%Ya^e_B)mi=PIZYK->x=A13Z!2)PdQe4aYs6w$ijy07WSvZ zg5PAVH|zs)Ke0WX-RX}3j4q&{fBZUs1kxT*n$ZzrFS{S z_@2S99=eT~Yw7<8-Rax0*A8P5GD~OUg0-?S5B}Vr{3~0h`XhWvdgom|+9_}Yq}J zU_s|nUw4Fk{ClXd?j*uXET4Xhu422OPtu{+Y~XG~@Kf=Hx3u11|47sMm!iI2$9}V( zHo_ROH4m1T!fBHMH^m?Ig$0;8PyuCq`sl_^a@_UOxBjQAmttwSB!Mya^DoszJpu7w zfd!J=!~pa*pAx?qQ;O6fBVPG^dNcc<^$I5~ok8>Y&9Q$yKf3~98;>+Hpalbxj zTn!#K?R2-lq-S(Qy`uK6mU8)B?Tb1^QC)qW8 zEqM$1_dLRfI@S{%h^*jVz_}y%y>TgzY5_~HO_QZY8Fe9l!--$ipRdx1kRElduhjl| znI&+$>|q-|DEpJz)3};SJ1;?7hHl&g>HSG!A=@DCAPY--6kCDIi2WV?h$ZN1lGPfV zNYOC4&?dHTgYEDZx5@Zj(~iQP(FDC+{qG(Vy5!Ls3YbMbs3W*FTpn=Bt({D9eMF_% zWw)X!ARay^v}A$@mrXnNyu#$s3v}xK3I{>jtWIH>)$V73@;NuZW3=_2pL1SJ*j8W; zD8;vjcw3)9ldADftk6!#bY0=d#}QPh>xcINoh6}NC++TBHsvglqW4VkcuiAVS6!tV z5SmZ(-5{RHZMW3zh<_6E%snjIx6aM+7PHpzCED2Xe2U0#Msdv0#wsKoZK6z(`zL?@ zG8!HscH1kL&beV<{e-7n>aQygtdFw5yQuH^NcohXO%wKfg}{?USo@Rozq<0%@vV2Z zaG2>~zQn>?6;gvWILx)Y8EL)AJFgi*gpfwx6O3SI*7#9}8Xg&Q9|`A5Sl{bD*I})e zDm!XUJ5R=d)|Yv@$fng#!ORZJzG3hgl4&+DuNN`=PL4%gU4~M`<8ygmLl1^igM1Q^ zz7L^n9ivl1@+khrHqpDov=PQrXj}e}5i2Qw&|pdSfKym@}@{^i5s?g~yA*hh@O zD}x&+ej?3%)2s%gR5gM>d9YufA1JxV7%E_-(aH`g3gK)QFd*Rky+ z3m578WQ^YDU2}?ch6?k*F*-pn(_C#gCv9X*qQN<&BG3TX0V=EtAw%@Yr z2#2e)D{BgC9{(eIT`*izLmqA!MFxdH>Ykr`>o)Z|Rbp*&rwcfCsSnrZ|7c_v5MP!u z{BI5?{=mO{@TZV7afNkA)C=88BK{?T_s6TJ=UI=b=%b$u>IQVBX(C0woS6@$wK73g zthjSR!sk&LC~C6eWob6?#!W31J?OQ|-NWAA*#!Ut-yZxF~2FY=pZ4Lp!O5(pBcb%`quu71<#Hv^44v4&5nx2o30^eYE>k^08 zS?$9tK$>|*b1w5C#XudtLk@oux2k_r`u^*seeYljV8;$PHIPrOambL{b$fROu=Sq7 ze}C6piY(`BPU^Wn0mxM6qBwkQxpa`vp9cGy+9cM$bTkpmIRVXvm~~0lO0nnvKBrWy zxEbX#;Rvb>NrB=|;-GU+yBi3!-MP&E=4;#MCBxj zVEpcA3qF?lAs_d)(kxw#q)&C0*-fbyZ_pXp)V^w7Z6To?N!mF!)UPJ7&RlcBCX{$% zWoz&{Q~r9uzrAXY$!H9v|GX zfm*F@@qm%aR9PR~Dva$#M$f~Ok_7@y?EhP+_pkH^hk-V1e!!GPWK-7wn(R_U!fm93 zJqp+czXwn%F-WuIGh(Z2~iEPpNUHw3jt!?aa%A zPCh$7Q=ygrd*5?+f;#IQvanO650fg=*$*-22Ni2Rpl+HNT^6u!jz)yU!s zn@#d&@55+5Vuf!4`*xJUcxCC5{ESNaRm&eLtifw(Z4M9LZJcImWek#cnxw%NNXriV z-c*g_$buRQuq(`vn{Bs~V^{q#S9V=}Yz5ZQ^lX2ec+{jVt{{ z9Cf^58~ekRa78vFcDh}nr#NuHgo+<5pr1UhU;iuq-YN(Z+XoHWSushPaAFPAd6iv| zpxLesUv?*5VLrVmzL8c^E$)(q!*6_wD~*XEPR|bnvwyz35~cOQQKtXa6ma!+%W)G6 z)$6#Bz7gAHJF5HH4ji>a%pCa$v9sQ+at4>7--Qk-dB5;#K{v$v)%abok6&|Lq!nvz zKK}@WeQ?_|#8I5e-_uX~Bp2f6lw9D)v`_hA;othpLbu3`?*&k=T}AfGKet^9OLUHb z7XOG+5)8^YO>*g>UFpnsAAN^K*HvN4PDpHga1e9n4(p#plR+ud>maZD5T%#SrwBrO zCtQDPXG#{{+PUT|2TgwJ!=sKL7r#!~p;A!OVMQ>y)SLV7~efhm?=-7__2URz(v-q*0WVu-}68})F7JkXNQspGg3UVgS z+2?fpf+*l1Or7JF)(!R{9Z(xUy4e;!M*X&F#4zb3s$~08bf+ zX8xXjGkjCy5^B5X=ER)Kz1%aQl9Q z-8bL2rD;FCtU3$DIAH?b8+n5$mz0X2p|*82^l)r|>sDpH0`$|5lHHn;OqleXEw#Qn z&iMRTVj$TI{Tn1y73*W%k(35sh@c5jkpycwy4bUNu}~vx*ki(X5gpiUo>ZF=jr?j@IAL) zg>17vGnYGrvQIj`AjM4CqQ#L5{Mf3^#qVjdxG(03mT|M(r-H)e~%Ne*4R>1P|997DWFA1LMbSpR%{$bl#fIJ%`(G0q3-LXRlbRAxo%QRW7m4)&`8mBvnsBJz%VXNS-=(KG zfRUOTuL?soRN?*)`p-d7g6z<=Q-rMm+wHxRbsuQ{_(wN5+_HX7t^6y~aw~>>twy0T zyf?p;7lCS5{ov=6cGWdHMXEF%(G}UKVhQn0Z=Bl6D8!Y* zT?j!rUDm=iV`4o^KL>bw&*nC@@ddrLqdta2pmavHx~(9~7QUmyyY&uRp5E z378mE+wS)(+&O%^%=!#of&XC=(&T(dz3Y##Z9Du`^6{91D#T((T>V-%S!dYx68q=F zcZn7C%UAK<;unVkY8B%ArsUAnH`1&55;d}Q^{lBE*oA7-DTs8NehlP?X!SZ|Ol~2* zbqZ=Wlj2h%&)&wnt)DDAgQH<9tHTE>760W#sVUilH)p2tMv=|2wM7mA(Bz428~bL$ zN55}@$D6u3$VP$R!>CM@*UdUc64((l zvaK4!?v>TstefRmq4N#o6D{oirpBhbZTzN;?Pk7frujiU9NSuLg(+hHCHB#Lg;5S0 zIF#CrW^5dprsU3KiF&1))tczt2Y8D~*&b=F4rKNC+dl`?UE*zJgx} zHrwns;JXjrss-g3w4{ZMEB_9kpnq5iWx_zHRA^2J&{?@J)}A}>cT#g){!}bN;)Xa6 zYFgXnf&I<)kwdA}#FH@t*HTZi@(Yglvt~s&AtLi`YAasG1VgPM0kt zSYzkH;vErErBs_qw%=OS#aVt?CRO04P2<8g;8|If;#w{=!PeX&ud6n^;DgEv2NQ|78%^sSjd}{Ub2mi zk9E*u0lv`3jSf&W<)hV7=$%)of|q<+L*U7xD^!10yI1hdZzDC5X|j$tplQfT$PowN z27MNHSmJEPA_vS$+l_t-S;nVhCR{ZyS@j}vrz1RJOzZ9504l*~dn=iF@mbbqz8$wh z^;7d4Yv;-&+fwe>$_b>< z?&ug$G4`N!eYRfwv^atp>lhr7oP$kzc=@)77mCjo9)*5g_5g$%PdeN5%9BqPTh-f) zD*d$}|4m9x@|21x2VNZpc_a0Ak<^;-gTl7DIe22-J*`te%)N7x6do2HT~~RygG)QM zEq#BaR0Px_2kn#Ch#hKADk=%Ylm^)*9M4YgSe96xwJO$a5|xJupp4o1Q=G9 zU+R>7Zf|HLtm=o^uYIpDj(npMQYoMbTxFPBhvHBkiZQ!?|q zrRf!@+BdA@%$mDIi>vf4Go|)j$^7nkt^X}*aW*q_>3*E-T{yE!YVz-Ch1a%RwP=1z zMJK+)7@tGKYJK4mV+I#=mi?I;yJb zVTTIqR=NDwK}Pu%@LQj3fb$%}JI#6Au4yI+ueiEs<>dW|Uo)PyyxTRP8%*rgMN&Zo z>$P~c(TMWlx0);{-*W8TQP2J$jP}iz@Xko@V8x&&o8#1B0pAMqbe;fT$sw!36-@3* zWavFS!(;y0Ls8nT(!DLCLW#T?k03}wQO>y>mHPwut?+lqbQ{eL&V|hYIn{+W7+vnm zLL2HPOFYS7(&NG6sf`A{G1Np0o+^}wLX(Sh4O>S-t)g<@@x6J+2~^zXKIVN62LUx; zO#jmCER(;oKOEb(?hEf|p+5DJKiOj;(U&uCBXaXOX>BYT@O+%Z)wFv>f+y2>aeG=T zPjeX}5Q+ZsRJ$@ZY#iqQ?D0)+ixH0}mYCn%7$=IU;9(XjF(aTR@g$>a&X(i0TLjMX zG6;UddOA-d(;gRNZ1M9-`YUb$T{^jZS^&RPYu?;G;X3nzR+|? z19Cv~tXpFontR3fW~g`ge1pTu?`pH6-*!XcHZ?^pBTtj3hRc3A=taW5KTC;uLDVYG z9&CK6S%=@Ysp^D;W!>$d3)%b^*=~j(hf+a^ym{^e)q>O@&{=1dp0p*8>}C~I1d3&iE2)LRhWPq(jpk!lyY&6*d6n;c4f zgK+{*xD{i4luPta=V?DK!y9T%`9gC?OJD_&3zfIqS{W8a*3ZQ~@ zZ+%jGm{DtT@^@hGw8?YEOY=d#2RsMm2e^&d0>RDpqI&W%m^$y%3~6>`L_3c}pBS9x zM0$|%3kW%xue420mSg0Lo8ak6yf}cYG{dqKGR_wGQy%;k7C{{Q;;Pw;OgwW;dqXbD z2^gcxZ$Dy6$ks|jjHo!_mHDeaGP5Rf0HV?$;5$zW>uRh$b@2+LmH~7fgLBUo`tN)t z<;*UJUc$6K9Wy?t~5bP|H=0-FhiI8tyA(hmQVS|Xe zm6&Oz5dkz6M7^0vNUCtAO!1E&&2M)|giTf&r}GqBuVbf&AEKyssJGh6wG3UFLiZnu zIYRIL(iul|3t|9Tj&!isrZ#R^E$9PIVZ*2du+*o9OyQ;sIR?@`kN!Df+HJVw=+620 z&CaKp(~!xzC=JpU#IlK_FPVo2K=F}UUPNRM=YNOi`^!JXH?!kxb+*l>G_P0mi8V5- zt=Czva*9Ed0Fi;At*${mSO%nZ?yzrsEg3#C4CF?N+HFPRDJhv#oLnc6XOOG zhijY_MIFHhQ>2^|Kv^ZQw&bu6*e0&cc*4(4?T&zJV0+u)$vO5r{fUBGu2-fvuiXqD zc{ShbqIpG?2kwiktIq6{W^daD0BObN(a(3Tmk+}T_&vIqw$#F4myj#9PI}75!z8dw zNO$gl;MKL7W6%o31=>9$B-P@53K(ylaRKbTmc*~&PKnC|As<#G)4IIZcHuT(aV)da zx*Z&ll>y4)eI~K=^Z4QYd(X$VURjf|pk^*p6}aQx)l-{y5cL-CYp-`f_TXIDiv#|r z{b-3V`GU8jeZR9$S%G`~Q}ZZ^;r5W;^cCCKt)(DaaaX(X?WsXBYarX1m#4t<{7er2 zh*QZ6&EO}kJl*gNZI5P9v*9^LRrA;|^fP|{$>Vuh(niLL3#&3hXRslg)vVF2&DJzp z{NQI;jmJz61h1HEmm~1X?v%C-vFY7_!oY=6UhM*mw(UYj}M!g}{`sw8{C__vlN72j&NzVIcNKX+v zZ;-7}sOG5lLmZ?BN|BTPGt9?OG+hx*B)I^lbHUUDfI7*%ZVoCcN{wU#9&*RAL%B|K z1#g^pdeqd@Lzxhkx{+Az*zQ2!;vX%Tn8%Y#^!U>)X^kB-24#i3ujek!AbHT^it`*} zAbGat8xeUf@duX?@B=;?N!#Sd-lB5_v|rv^mlyra$K0zF$(bX);Blz+_gkr{{^VQl z^yVF=o#2?%xmlFNl7YUVF0ozhZ5Leq(m+up254)e2vk9hM-;r{H56%0+PBCGUfuB+dzLQ{loWNCox59|ImZ zsA+-I_~${#nZ1;ufB&~u8d;xLDtj(wF6n8B?GWEE&*Y3O;c5!bS*v})(+{U3h6Gq9 zV4EF4y35%9Oc!85s#ZD2AXSo_nZ2y_P!f@{1d=i9sM0N~x2h z>j!!GCxoq^#wI`U!W#(LtxX=c2EP!7gpf9DQUMks(B|a(qZe8@jH3SX7E)ieM_0Pm zLmzo-D=ZK$mF{!B{%Z`j5!r(v7MY~>?+r#U`)U+AX+4wCh|n{(;% z#bO!{P<}^8*ukqk|0hIP0C04G^tuUDR#lT7DZ!qp~_sX#E~}#CwJ8?Q@~|jy~Kk8is#AH@^R@4N-2kWt?kU zO(Z8Zu}{^kLO&-3I!{bHS5A%CWd+71dj+-f)vUe`;-I>jyJD4HxzX956LV< z!c-nQ4hbxFmfsyL@lMy~Pdt?=Fzo?_m~4$igi7XNAoLirMUyR&S+X!M@N;-cN|{Njzvf+L}onJE!?JT z0EUO`4=Y0zivjY_I%n_r(p6m#)IY3jj-2Z|d*IC8n|Zta{))n+j$Pq;i@L4MoakY` z@6CRvy@UO(SbjG3AQ(aUeFa2-T+{w;(CYuP4yZjrQ~ zw-uHOtqeFm=#^S**0v0IW#$M)o3E^C30;<1VDBmww7?)jSvy{k;d#uqEU4xNggn^+ z%lWJ??FTmt%YeCUWh8{_3;1GJbaHPCIGp+T?L_nu=%uy61u$GgKHa@Id)`8Vl+OII zjIZuRn)bhGw-ev}KItk41vjj>nUTh{LT{wgz`^v2o&R)pYYI?XOpTrUu2QT{p@TB9 z#L$`JqtAsk0lTdjSq8A*Tc>)?fEl1mf1iJ=W#03wTB3h2c$KDiL*k8#4uvdAC!fcy zoTI@!xF$o8rE3ieN+v)Qq+%lLzGs0<`~=!PLQBTb!DiSrO`#k<4z z1?Y-S;LZLs-)D8e)j_M2UBNL-Q9&V)KDUm`Omg~jJn-z!Zv>y;c+TjSnrJ{*n@oKC zN=yO1@oKj=`j6&o$r*>`WdK}!nyszst=qe`bfCw-Gy5|={vh=f<0n(o)=|ZG4qMO5n`~XAcug%ikdsBZ3&RJ0^UG zrCT4k&sRI!?K3gV-1;9Is7sPR07i545|M^od>=MM`OOI69$S=tFk_}!59OqlU{*Q` zL(0S3u+!A~{qdz;&6;^SDyJPBnYx5>{ig4c8-29NFoex+Hk)S zWEnCT4AKp;6{!%#oRfg;FW|{MXnz!Lf8YiM{ra`>Y;~4^e5_w6#=}t)%sAL52ww02 zenXGFRwC>7LUu=H-+!j_A}f9^tsT|dYTQUf|KY?w$%kD)ED^PXk@BZ%l~frJ27KDw zj(U@7X&9XN^{doWdbRveeoeLIqohjkmHh0IPpxcS@a7bwFf&@)#CKYox& zlj~-aHe6SIhLG&81teOvI{>`JtBFwq2~#v#W#JdfUTfR=CN;NY!$xj~W^u`_;sl{W zruDNrufM)nQwnFLUJPg;REZ}lR5rX{{eDKEAK%HG z+Jg#h-id}X+wk<;$dx{hgE+nxPrLVC6(G!$-MUL<&{q-LxvWXex3{(4)ClQavHSYQ zS8;0h->*$p4CRc9v(3oq{HGly#h7>i5Y;HXY$L0L z;ScTMLEjXP^$C*1$iS(Md*_qdLC>m|&t8$J_Zv>4`gYduL1aN+3Y(_T zij>wM#dlj;M}rf4OaJQfK7r3(k?%ZU_T5(^O@}wHr-USCEN}&ukL*gSTkSWDly(Lv z8W?%)Uy7sHQA1)rz1@y~5sPx5?cvwsYxHh!gvgeL+=C6pT+N^c85=#*$yhj8=NnU3 zNeJ85+aKR6F<(3ecs|^XTV(HNcI-|lK8@)*m|^ejIk@cD(CgYC`dRTQdcu(azk#X< zg8poOICJmS+e_c`be*Tot;&BSm4Jr#C>NO)Ru*vz3?MMOuhIL~Fh`cuAWLU@pw35T zOx#=Isb4?U|Nc~%^>LX0N$=?JF3G~^&-Pnwo(l_@Y>{5{A8Mo0S&6Wm5T$2hz^R1* zI~*)a&H`J+LYFrI7Z+}3aeB@x{K|)5i9eg~i?8(}caSFky0)l|E^|}%mogU0S5i!+ z>$cZEPH%nIkXgV{B5(^=^h`X!QQBcY@tjQVus=(U?zqB+h;_@~Mh^+RcE{6}=1HT= z{eeO)I6kbX#sJU!2s{S?uBx9g9bcB75`M(22xy!INi@)x&sOg4nbP@|Bz$h(Boj?L zeyDw^KJJa(i}w3!KkVEYca^%q)UC2L8vaZ8YOZiGNSLekBYV3jkK%TI1{6WiCPY;a zLCJ-8=5T{pC)CnDook1SFCPi(Fp6wy7&yWXuetXN{tNR=xfY60=kAxL&I;9Czal;B zI_`^5Z?FVHR6acyud%8{fbc+br6BUzdXdpPn=SK=f^tCZ8|OaZqa)0ubw zDQ? zxzi~Qf|&!?|L_Ur`a^%JO1N;cLpB398+7af*sD()f4rObl^)^gee`{EQx^P*SG=7T zo59A&&(N-}7Df8vKBUL@9uxn-f_2M}0ppHI^5}H*u!BASiyUrv`7}pgKox#7OVD>s z*ZabVylt&S>~HPJ-E*40T>-X-DbZC@^yq%PDHQ;P91|?26@3a7-@X66?eEY$-B(YW zxv^8!cC(9)2QzvpKSN}!}cOD z{%^y1Oxq7+8vB|CuWD7xs@BHjDB2Ru851To)~}3H@FA_cWi+gubURKP5Hnc&8}FYX zdL^DcNZbPHb@&$XuW}kX4`>gnY+>PlV2eOZA#?t{&qit)R}Prvr7kmzTz|eW`7_gZ zBOM-@KX0aguxZd|pLf;7H)J-w=kX`}H~iH^2KP`Kp4+8BR=NrHB!AmhcQjJI&jsA! ztU`Rutkk4y~iev!zfx9VE%&uuPe0t{dhkM4{OsS#K5&r$JIm=HQH7snSFJ^ zvk}+H=#~IB^qKJ{4MoeiduATvEnWk{H2&brNiBRx$)bQ0)a8aEbbDw|Z@Y{tvMD!asqyl)fxCyx<|xio`Nwy)N3 zKN9|pX2qf39nc_Z>VhMMTlYJLXGs5r`GbVw3CsDnUok6Q9`G6{t=}etOpEAyN}fEngoXm{ z;5k_2V41k?3KuaHeR4pC&vWF0hI)t>b4z|I=!ufPg@fsC9APD2(=9ox^(h&dRb3df zS?n;z!|87e;Z&6kMH9&J4O{v4p=4xQ`0LML{sh;IUx2D_vr4uwa#MP$cjI-`*xzpU+DT!Z&&<-?v=(Y}DP z!E5vcKR-?ptKkH}0Z4%`2c;G%rPve5e?YzrywgEMK`Z|nYHF{vf$Tep7 zM%HKhYGmr@@;2?D5IN4xW7G}O4)^$e4K5hv`s!hX4mX_u#|?RZeATJ)dE54$gkR{8 zAz0`^S5)Ccs(3tb5Y~aQ@=^uAti&^7nhw5ngajm|R#Uo*aX*8xI9fH6;m$1g6` zYwuek&cTm7iuX;nmzy2f?Al=UdUV2lop{j}newDPeQ1jYPMY_)zTP3p3CkPW?~rHL zMmD~<1Wq6Kpyy>Tj7$UK5D@M$+3^g>QvLIS;6V4zEz+N?<-kJXRkx343y-0@j_1ry zZn-#VO@F!__?f0dPWt#%$L3~UU!tv%3Tm&N+3=pm9L#p-6wlU_E=FF@d7&0+>G)W{ z(ZVz7O`k<@82C{skBb4*EX1U^i zwBKfte@q@3{xH;< zd{Zp;9ZO7~n!_{{onD1g9ESkc4T&tFm)Y2r4}LMoHmAiwaahi+?d$*UpXoQioxI*o zt7V4@$6wB|{mS1{8{zO zOq$i>q&lTuRZpyQgpbK5Ifi^}av5Y*h+0pA1 zQF=jIzhEVB*X{G4=hia5;uM6_-Axo!Jqhii$M*bVhfHTn^ed%)xsf=tTr)xcu->Nk zxV0s`jXNg)d#c-xkvPPljF1mkMTKo50;nu3bUsx8*oK?cp2kE{%zuIq)FH7XxGaGf z&d^5x69JlRHadw9S?m4ETE>^MYYf^GOLqC`0t1*M`N7Yp(1I)6Ij0@!kma6XyH4MP zXai@Nt*(AoFJ%vRS&J35?kcGmp|NoC4mMm0nd%lu0ER?5*W&Ff64HB$;Xh&*&EoF$ zQ1-})v&p)CYd0T9x+!D_KlsZhNZnsH4rK*?K*buL&-|JJ^%diL4ZShF8z+(Z-F|mO z!H9hWHS=L9+8?Tnpog}uf5IWPhn{nmge?cb?RM^9KB-j=l%AZ;M1yn9owJkh-X1R1(9L_7U!qK2RbhZ&V0;fyt2hOI*^+r{j9^d? z9erBzCboYuZXA;`2QRI@hTbv&a)r0ew)aM0g+l}|_A=_y^bNc-()%_PKUlpS|C&>-~B?y;TiHVd7Oi zPq;nM@1DA(bk7ie6Z8e&FK={5MARDtO-@ygaVcB}12y?TeHHh7QVaL2#&mM6I6H+3 zIpLWqZT(;1|Kv{M+FTA-#3x^x@lXoomie|vA$jatiBBJ~@Us4!%8+xPPlzIECuWm- zAx=?hHu9vFoagSW!Ub=$s$4-nR^-l+dhF#Po)Ip|_Db92VU<9z+pm<*xl`60aQ__4 zc3=EBf*4{xHr3U9Eod;K($HqfgX<2Ae)k1buWA2lb|RW+W^&vrb4sM$g=H2JNA$*7 zCBlA(&h2)5In{*xCo3a{%$t-O5Wz&rd`4c*1+D@rc4MR|xfyT!iL-BqloNhGmpxIY z6=lMW76T@IME~Yow>SLL>>!H};DXF#-1|q-SLr-76xp~8d6YoGTafC`{}EZcn0isR z7P{jlIVquhoE*6lv6t$5ekpfIKzPy0ho>TymM|-1K~}^38o7%;f$K}FDwyo+13_Lg z1{Cba?#xbM=K216kfiXk|Cp29Owz-U8RHE{?Y=fKa#)T32vNKqks0`T6tHJqPICQ3 zc~<5@e=G%M&+bYr9LmT@ro0G=9_HMX-}C3rC59{uQi-AsRRs`E?x%gUaM+XsqV#of zh$pCM00Cwk5b;N_b-+03vc5uEk53p49VNd|MU#^`=qr2=+}oUFCi>mEhsSY$+?03a z^MK-Mr0c@LSC%6;1feRkgqH@)bGi{k+QYd(&3L>%Lw6GVlF|cm2CR=orm%D@i0X(1 zO2aKa0;rAr>*wLkuR=j;19ZKN&qvVr>cZG`DFA=5&B&^b&#``YrvY>;qmaEeivFzf-&SF(i~ z`$oaA(~(@V>L;kB3gLp<&ciCR3_sedU^6z9`1kw^mXD5%-YL$))=df!Cj1muY;{2? zoEIT$0Y2RMz6OEoMg5x{TqQhw`_)Bei<&wOx_ow8@XKItP3>3sbLoGkn%_+YGu{oX zcCbF}6|SlJx)E=25B!aSr+KPdR1;q)e?+(P;nlehX>_2U(tQNGY@B{J+C#n;)t`f zNq+r|6e&m4K#ofxkW z9}*`-a2YXwHD#(y4CwC`y${YZTbhqHNSUh>tc)AZV8wI=sQ@~ z$X$ywdj1+3Pj)uNUZD8$7v zGYgd3DBYCv%I?PRt^Sq|2-lFEE8RD;gID}BNwyPw`xul5gl z@hvgl&Qsk`n}lbf%g6~8Mc~KPmm@WKY?j|ItEA*E)^cgu1ym04+8K;LhIRXem2DYtC(ni;5N!D1aTc!%5@9P{^TdJK*eS@iynlU}R{5YPYQ z3r>PJBulJ|RK9wwOnVoiNXHE6Tp%}T@a~qFS6vLWKV~|t&p7b_Y(N0&6TUkGOF&$V ztm;_MpQ%B?jgRc2o*-EPjiNyhq$YN+bgzeWdJ4+QpQ!Nh^#OCA_~P&MAS8BedF>uy zgHoTi{(LSvWnOP!%&BhgHgsCz2$(i7?z)L--EE1%sscMAM_9mETA`HvGL7$6kE*byUa2QzmO(ob zn6!;P@MJAqfFC#PZLCTs-7~NR6n@+K54+<7xsppQdwsiyTsFxaCz?z>P|6aNVBp~W zW1-8ERQ-^H-{OCAbgmHBLHTgfguU}ZORO>^i~1WH2Ntq2&VK{s558j!6=xH(JJvlJ zLcXN;e&B|uq&oKcHZ-66ysvI0q(j)>9ixg11UK%|b}~Vhtm=Ogwl=mx)vBLqD=<6P zl;~^q6g(=Jea zl^S0@omXH^+|VWCF-dux{IXzMwuAq@w|y{rpL<9`v(W^y#R15i(5WuhU#PV@mgO`m zvkdh2f{TOz*#61ZQp+R*ZaDDjg!sL;6AmUqKDkC^Ej79{r#hYMdd`VQ$FJ!FkMG3C z7XQl zV!TDi9e9sq&WBC^EUtPzn?$%vt1H>_<46SD5IC-2R%jkhZr z?6ya)t|{ajIgL0J;1*II?Uh{EUIPwf>$>;tPB#mJcFdoUep|mQKf4ZiwLT@$^n5$B zKEbbI+Zag{rxM@aBI``!|Izm+F?D6uD+Ezr5Cf9``y;rOE1xpvPX{i`{aUl!R>amF zYEel?Q@x{`>+*3B`Sq^@9&0w97z&=h;_F6>)5hAYhHmWB0kQywI{EykRAuDg9j%Vg zM6Gin7$y9C5*`=jDFF?QKCS)(;thiY*Lk^LQ3d@oD75bDrIF_U#iDz%eBR1_VwPdj z8|v1(DbP?@3HglI&$1GASg3jpTo4zEHr(dg39F;Yo?JpT=;m|w{7=!EyZT%&3cv}> z+t;wSarN*{rmy&*^|WjAlj|!ZZH#6HZ>EmnJ;Q`3DDA9SpGs<7iXvKbxq+~n{Ym#1 zDCC41xTEPKsK8Mz|NF9DQZiblA|PZaj7v2Lxb#>UI`+QgVXMqwWf3G!eBG*y0+nr1 z(hvwOu&=-GXOYkbKni!`7gxh7cJI{4Es1~imxyKMVl|sEZmNyi>JLMIh2OPuinumD zUeX8VsinyFDA=q02aat^A_cwk{i>Q*j)YBu8NN8?~E7?rL!B51!wT@rOBK{|gwgzmSN|CA0D&Y%}eF9wDb+Wni zTT4wgh#{n=9%yom%LTK&yz|60vl}6`;#2fA7nPK<2{f7k=6~N4X%EIn8TK_hD#p&g zq-LR`AUkLQ%*a8o2Ys!f{NvnzbBX~3JgqH6AOLAG1*?wOx6{7WbnkJo+;J3dmSUCk z4_j?i%nb89b>J5;>R}+|3;#@BaKrisFMN+CsDkal9XI!YFE#s}cAUKPy+!5&m+Bc* ze}4w>Pr`0ex9a!xvia=3yphfL(vsCg9~iLs7rG61kQ?fbUT^s$PPHu;bf&al8+=<+ zA(0R&y!|BC-hyd-$$a@H=m4r@~u`P?$Vc4v%t(# zLv`T~1{BtU+qmMfnlgkAbPkb7+gf8nydSY+Q;iMj<_AbqCnPhZH7mn0KeUYFf{GFT z`lNg*{OvArsOrS1V<%9#Wj0``h7A9pniVTa9ko>yF@?=(ku|i;z=U=R>w2p0&C))N4JL002j9_Yr?ZqKIac!3 zGE3944OZPvi~kW?HrpIpDF+J3X`p12V1=nXswNf2!}W%W-G?0RT6~vV%hu#}bcI1Y z;rzEHZ;>mKEUP5525dCWocgG6+I4JBty9RYG!=$(Z&H0@& z?j~u8>T`X!u1mNx!o2ex8t<#5;RFI1yhd&f{?A)n+Thkg!AY-L;a}RxV`*bd1E2!& zTnmF&{bn#8m&~@Ax$WH16ucobJnf1UhN9(Ha%Q14zC-~UGIkn zV0nX5mKXy-zn#zY6+l#ZnlqPT8sZUYX9sB`zM7W2* z<#i~L5_?G!1R3&;pjB7AZ2OKN^Gs+PMx6-#cUqns!F-?8)Bj{Z)Di(8zzpRGd%#ws zJshIqA#7;{3`<6w5AMyJ>Y%A7(3QDYN__-z}0S3Agnb`m;jvRvjLNzwm&XY)I z@-AVuW^YQwe%h*K{HFDWXNIHSEmovf+^Ig19_(1Yl2YxKH>FApav05v+SQl=}}QYMSGB-f=|KFMC+wSxRX2QSK116NC6+x2(>tO^0x@vse7=%_qPsM1CN- z=H>#@?eM4UHfR7Gw1L~zzoX+Ha&YSw_}<*`^nC9%+aQe}!n)j#!}P)++*8;}{Sd^; zw)!*qwh;x>e}GZ`^Cf8;?6-wz_EC%e%?6$MUm^AWh9SYnB!o?>OPg#yU_0FgwDNEg z=r|YdLyqWL90qtaaa>b;xnB;Zz%1MdhwOy3cAjqZ^`XH#Rb{`4(;Hjz&3=F<;20B! zZyN0?SM`}+^Um<|YgH$+@(+8Vj#?3tEfuAUj!+))(L&2$iRZ9e-)c=Bfn!x06UT(0 ztW{bLy)mu9?|DWbG~*QrZj8++lab?I75XZGMsym~o^aU2g^GQQnOu)NAW_W;bXEM3 zhLWqG<))&p#hOBq)@+QX`P_CcH>vwu6}wawSMpYfTTP-lq|?+{ejFq zE)Fm#bn8J*43M{vo6nJ}-qlo7{t@KvHpzo+3g4D^Zg?Nbqr>HjgZLxjv=V;nUYkw% zjBCDk=kPo2o;L3n*EKid5AHY^qzLCc#T`6_6RmW}%AMBzGb3A2B9wQ?gG~;&T3OpJ zuAhR%>8_Qfkn&kNz9-EFub?P`c*Hii2Ft^_$uH{ph?$J_=+ni++e=XY_mVzf) z(M)-A?IheBN-_j}w|fX2(Wme(@v;-}tj9Qob5nRFd|Eb9@@`&57PkzuARm3@0PCRkv1 zmhcbNGNkyGVFV-}IO!=5YY@jzy3s5{M@$VUs=VC|uUVS?b2A_4z=TQ5OL!~Q1Sl4Bp5i2Eq$PW-R2J@R}ve$tufkNK zvG5{J*AxmcUHe`889rV6SNh9YCf{5WA?`JVOTv*a{br6*-AVDl>Sfny`OyTSp7dTe z5|Um+(k?%lB32Eg@u@bT&K&sPBA&oi(0pHjnPB-{9p0b5?O!aKY8>i)TR&xiHf9;V zsjv}&F#^oHT#NN7LMH?}CUqbxMDS^x*0vzXaKS|D3M#W#C;p0wU70CgcI?ujT&loJ z57U}~OU^(Q6V>Vc!rHl4&oJp*l>^fZJC!mk&&S&NAgBgK1jYW;aN6ZR>LZ$k97SLP zrp6sv5lBA|0L=1a>pRVJIk64jE5snG2|5{}9B|P;lTw!XS+~G_%`LqDLoa{-neY0) zLhjQ?2zP=b%J7Ea{aHz8R0%YC)lilb%CQ41d~s5&#W*eRA|G zGpz8!v-(DUMoa036PmO1W}~6$kkt;rY4Xn7L6q6C3Q0zD1>1};%P8z0O3;Nf?*pruVs2C5;wNVAXzrJVpJp6(u&RylJ; z=$?6}{JEkkD>*%@7&9w_{c?FTtC+tQQc)MKTl%Hz7CtGzYhrfa>|xro;-tXGMH*rH zxi(?fob$#-A;vwTAB|gQ7ehT;$C@!dRS4aDZo z-8DNVA<%b=)nsee1qk;(zhQ?Y;k9BIWuKBRO z^WFgEGeKC=Pi+g{i`h*cbGrgG1$yzRp!{bBk|1e2k3*)cP6+d`u}}Wf9ht6dc~aZf zOPO6ycX4vXayKQH9O<$CqsnbMm$Z7CZ~EM}!S&$eG0Km6T0!H-BJqZAVWzrmaF?6j zB;400GqG)?gDrhjZ`;UZ)uewszayk@=JDq9Kz5I{$n_a7CdxSe4ZqnH#L<$^))d^q zxd7PEkl=QWx2yHz(>HdEl~tE=){%|&at|S#o~Rb;NfVDFP<9(gkAh!O?-Eq*(4@5I5_+zDb`&yxfbju-c)nzXjly5Ms=P?^S>0nY{=AO;5DM7%V=? zD^4;Vpr!`}vMDTJv-VHXit}Yg%DOSX>g*rY{$h-m%Iq6I_^xTHn}XG1S!hgHRLNfO zKe;D;4Njb>msz&OcFiCS0R-yB8pksDlYqR(~?=8zxP#pHOqO^6CDUM901V|uey0~0+TsQ;C1H}QYp;kre^?iH1wEE z1@Q-VR1n3BTEAh)b2to-x~iZ>9%AxLfw43-YGXL5#(0$|%yXF2O}6#XooTrTJYq&) zoSs44l6?RXH)CNbxkp~kKOH@Lp1XC9w4_a1{nxZr1eIXQ*X{XjN3&S?`AJE&wZ>DS z?T=h(14rMC&CIUozp9P)4ty;C!Q8r$zrJ0|Vo8ps*Qi+*JMTSl?51x(iK~cXft_i`w2rN6#G&DLDyU^Q<@h_6AWMgdPL1 zzwf2Q)xja8;|z^u;CxrL?e)KXI@^jCd0Sp(8ab&dCw@DWu!%lNTNRbW#o<7y^(2>; z>h1ei*VfE5#D@UfiyypoKT@`p_K0wYf3s0@^o#)UdS|aDk@KqnKZllJM6`NI^iZcz zrWQkpWcGkt^6Gs+1N2 zybqdWGw8^(^)IB~qqh{Ro7d%Y!9FD7-*$T^ZsuhrFX!6{--(?pH?rGbTuk#Sp7(H*=l8CnCr;>e=uo zfZ-N2k4$Ghei>J9fJ_aMo8222vdmjuv?KQhJTX6n-fs=LUIsHBJ(;F9zP;L&SX(zZ=D{QT~fWHdO7ChEo?>TzUYqx+r9t>a*n@1m}YDc%f-70|c{}MelJ?(fb1|Bv z9soF(nPqzV*L8YB#JYYTPa0>*(fJ|8hh5H#K$FESLa*n-O?+>>VAaI3&s1uv9wja& zFP)!R*~5;Fx62Hy$YD8h!5BQXB9|Eh6E_v|XXZ9&wHrD3OrLvxw-JkHo9zDKs&*d( zaugPv`fVItH)~SIa&4P&w{9~NzsPOg*LXH7ClWVhG$JSAdF5oK zU3>PzGy$%o9UA)0E+x>(3G%iFU(2tc6#68)=*`gF`&@G9Ip#)L^s3G%xS5*t%0h=Mv2V5hmJtNP)y*CfIqg;2((4q z$x_W0Hr@$^!hf-jpYov>oo<+>)^unsHQjVk$;NVg^J2%(&s0fP2uu^IbrTzMXiCrr z9AUvdWi7HVXX%B{3A|GJ%sJb4E4}hENQGJF2Z5z=S@i}oIvBBWaRngOhgTe(b7}`Y zDq@k)bxfhQwCjxaxwUXJcCUg|UN0`pMt!s3lfzN=-(u&v^*lCSeVt~3o1q^7a`!<; zqfgF0-~T!jUmE>5_e9?wfOOPlUKBCnpbJZ~FZvy7mm1SfuctIlHC6Z3Z zvC2#S()I+o_;z-vd0vuAuT{jfEvHmxZih#g>5af2vheF8w{ROPxQG!Qr2Ch{--d`o z%mGBFZVIvDh8>M&+S8|_F$ra4VT_>K4jAy3aR)0 zEZXcGEFWtW~K{_~7&%ID5X| z4ZapDDjKMjn+cC{`VXN~9(lYGwW6_N`hk!lz z=u3U7q&=sQ@WR8W-C?&B1jfaC)A|_lUj0{PaLkEx>$a1t{gJ$3x~C~of=9?_Xj@j_ zkC(qbY(&~rzf-Z6a94?O3c(Y}mk|y(w%a%0DbZH2Z$&Mm^V7P#%)bXWc7{oNN2GN8xxfg&jHd&_?E`NOL-KL|_yCI{LJ{rK3BvNz{q>=CdibV^BKeWr%fjo#x_}jX0XfF&%SghWy zZb-CCncYqV;~6E3my(U4q*9qV^~79W|C5?7de#$(Yd3vcr+jE#BUX9EG5fEA<<~1A z47XL_Mmf)#;FS8lV$7)TPD0z1TU!7h{6&1tC*OK^XvW;+gSYkkkvpiD-ypBNkgFYv zJ8FkloxjW_qWMu*v*qm5EuGF$xhD=Av# z!Ntpu-YHbjT$nLh$7mi~hu5Y?((AEa$Eg9uZPMD_i6>W2KBND5?+dM-sbLkW0)}B7 zwtVcuMBuV$?%Jr@{en|dc^@|8eto*0&=R@@*dFP{8BZ{56K|VQc~3kTu1P(a&I(%) zwRT}q@eCVh?H%92BJoq_r3aIbj+4626Y*^M&yF+fC*S;DgI>H3I3_c8bHDYJZT`ER zo9;UObAL6INDU|vPP!Crg_|7p;ld+b%S#_?ds|wcfkR@=zD&~jZ><>%4OEDy>#cW9 zXFs*Ix~=%jbxUVjB9fUbJRGvBc!*{t-SsHM*z#rZ>z=wIS9Z#qd=HznIe0ZrSbu7B z&u4b;Dr@RNFH_YS%98IECM3m&GJ6WoMKaP_bgJ!Augqs_Q)Mh0^L%juoE#}*4a!b= z>N{pqrRmWWriSiz`h#%zRkFFWh_Wf75J7VzMBI;i0BYL%yFMHd$zqQZaC4;x>jAL6 z%d3dRMFeMYgN@}FBCdWOmms9h#fwGzAntct2G~Vv4#roicF(;`sg@b<3`=Weu>Tno z@Wu)IScHyvZ;$aHKByfVm7B2+oo@4a{ST$B9O6*yI}`Xiw0jgnFS^W#NJ5sy_;YT@ z^Uq++mMYpOQ{EQysbF-yqXDZup()bS+_F_$@Ii;IFSE}i%B;k1pCM*M_}ZQ>OgI&y!Hkyl2sPH+3phBTrFHjF^fM5( zeaGr#yEn-s-n1FRnJL|Wv;`f+oq8Geo#|Q`&Odu2?^oXX#F4<=wLr-*Zt^-=&r3!kED-4Sx=B->*8hWR5 z(SH;+Xdb4JUTke!Wcy#nRugaGUI{jQk7B=4DS{(+_GlkA?fHa=u*7!xQ(`O{yW`Gx2yb(zL8x z3si+ax5aN@ym|jG(&CRfMp|HaYAhsgPLGZ!Yv^!;$SFI=?N1pCM7vSnmJ=fi+C}yl zUN&OaQV}LGd&#TOp53(9vQ%tFz|WjZ3la!9`tIlo&Pq_z{#4bao4NWOF+$HucqcyI zlXCxB;4D+0j=^x`=q=Kl{`-?kjDou6TcY)t&S2{VW;h~kOsw&kV@G`Br{qcQXbHg9 zbAFAuSjBBGvey&o$tT!)>w^8YMEewO1w%M>!2UE-C{vcjIwFs^@}TI=2`lTS6EteJ z{ByUuS<3PJx^ARvLDx@dEF(QGQN?W`eF^V_O1X06Zu@}|{ZqHr#txRfhqf5EdU$DP zeXCECrZ{e~*mG6R;z5?M6r@`V`##yNosvUYV=p9a%bVia0ufNbwWx8tjl@#QnH{gX z0aKmASGAP%t?yC3cSmK zW(2yS9!~@i3{6`ppBU2$T~7Vu`1IrtIJxl8C-<)4aWeJwij0|i0f2cE(d7}a$IX4f zl)RuO(N$q170d4&?COn{u+vNx*-xzS4;WX*FVj*F`GEwTsC(fvf=>p{E6{t^L36=n zZ)*QSonrK3wRa)`4O4R?<6iyY8XLTqC<701uyg z>{PX6BBX-W>Gn9uFQ1XNO8`8<)ljYcKavF?<@QP+-Q_AoS@zbg*x< zz^#DW%RGR2>to_yr*Xj-4^lWIo0=qG&Y09rEMr+e&D_L;I!9(`^Xr7;le z^j)(d=)M-a6LyP7$4K}mxF<@{qUpPP?)>{}D@j=`KSHmfwWz-BnrOqLq+WQ@6#2lS zy=96+*WFy8#pXxW(-V17Gl%?|{c34+J(M-FvNn7SK?KMVqO9k8-Afdr_st*3fd}Ys zzROiM%-Xd3>|RlE-CMi%iraF>f3A2}iBAcLh#pJTX=i^o)g4cSiW`&Okwl3oN;{~bk65GT|-o}|C+?M{yBz8p4^arM1Nf}qV12xpacV(hIo0n}zapWK z4k~POYiXh9-U#$YK(C80gRr~GNS|lVIHC6&8esEFaMHh~!E{Ax*=h8*oc95iAG}S7 zKME9AjN3+=H;0*DXzv2KsBaL)T^wkAW$NwB5@6T**z63r5d!E}aDu)(o({@Y?CcuP z){^N(LA6h|@_Xg4$w04IulwnC=Y_mlQ9Tg&w&!}B{cfwH!u8NbBILo|^c@Y~kk_qC zG2ibreayd90eTko$OX>9L9iX8N9BM0GiG1Uk?N2hx)g-s@~a-kwK&4+l~cF8F~*s7 z^~Yt%z5_^~dh0A5Y>vsFfRlSBbTNX@@~$XUp$qnkplC#EmjeL-&qRr}1 z3?c_VWl!w-+?ZDuF(O#w4s~4{7hvbU6x#TRdAIqD+g9R!H+-ryzIx2k*4H*Vt&-kc1C zcqBKuiOMV~l#6A;+J)ulT1%DDp{9z_kIZIiL|oNQ650&+Cab0V38uT>-X|MY_rsDkby~DO0x3S~a#Z6*MS8?xC*f>LPs$=iXMY9fMe>h}iJ+&E7$#aqVPXiiS zbwS6-iv97~F0g=4-N|&vQ=#^a`xH{)I!Rk*-tn(yng@&0wWds3hVfS;CfB}f+s&>Y zfgnDKh_lMTqNhV4ZX;pLk8e|VyK#A~A;tYELH{~LV&o14S~)kU9G$j#^&div7mNa> zRESn>n%NF|cWu=GEEMD&up5^Q=_{i8pHnt9mX^ek-}Z3)&vZ@#WR9l7N>K;yd^4hl z;KhIra66O8InTK~yXHT9R7@;_{UsY;XFy0U|gaDT;<~$t8)-Qhc4UQT8?=%G_aSpk5BKIar`eBRo9I-mZBk3+g((!QI zQ>88V*{!FAVuSOu3H1J2lV`}ARJKPAlNTP*j6ux{fnZ^LgFQfK^D`5ktV%zRql zO|n$}viXE+Fh+5SOAnX%>wlnVV0=-EQ2iPTFOr25eH=xuVR|e+J20_3xo(FQQEFG( zXVsTw@8jV__DdKNED-he!XuRrL2GYdKPT=5p$HOh`T7b9FiOIX$L>mx^5$QTY>!m9 z_A?9xZJ<=>3xyOjN`E>h^)7~&URe(1m@&{D^_^|AArL$%V)+Vixg}=xQ6=^FcD232 zEs`c>gZSE++#!C}`%K|!mZGkjowyq+&@228Uj+GvbwZabC;f+;w#-t}LsR@xN;*Va z4A)?2j9+1Yzjex)hNqw^5<+4I znjtU7P%7F;wMdGn(@6kio|YXZwI-hnc*Kf}L*GI?=yJRi-Dj(_$z( zpkMut>PJ)vsDnEqQ^@@o9ZH!4- z#Q#a@Fmw`PC;h$sh9X9;O+pADjBc6kCI!!^UsxCU$eBxej@I2ny{rl@y)SR#u}O?9 zu@KyIpWA)>AKSfiK98%@J}lYF7*i?vho^n(7uqkq%gDfXYV1y#nfdC7N{NQ!T&T`? z3NyhEbRE5`{4+ih{bSRP@DRu-TD+8I7ODsttI!n}BvbTOsek#0$j^<96a6zQV*gMI z11?n%1&Y3I*`>lBbb(SeXC;>f+5qc9rR2 zk!>L69gQo$o1I*!Z{)`5ek1U4lvM^SK~X|y zvx3asj2fz44+YhEXx=F!ynx{gZ%n|C)`a!F(P1`VB`zg|JoVf9SG4$_8Z5DnSWRl| z2Wu^5(-x%+pR>PSP^MST+{C|q8*N->cAE@z-Yfu7cltmd}DgOq+=WcJN6A}+(3$#r3&k?MkXoWuUjm6;^gMV(dxPdZ)^ zXpS1cOq{I}x@6nEvExhE8$&s1702X@Zh?w)j!gY(`UcN)A=TlfsU)+&35*iG)l;B(^7=0U`uTYLcO-p!PkeQ;-!Azc8M^m4f~{R(+WA4ySns zo0Oh7R5&qih3S_(*OxPC+v<~}Z?jW+tcAe^j76Cksq5L+p~#WkS2CVl-=?n?HLP+K zOl2W3+(o&P+;3Z(9r>?`+xi~XucFq{3#tFx!Q54Tfwugz_ByoO<&RZ-C3u(kMrZT7 zYSAF&LJi4BEq^2s5vpVZ^}n9FT_FN6^@Xte%^OBP85hayp2zMEbJwApoO4r%V594M zby3h_eZ}f|KBmeft8=4dOP=^?J05C6~dZq-Xp}# zfwI*1A!#c(lTroI+)wt-!#Xn|LGB!LX}aLmdvxx$eFu8E_xZ1JHb^T4z(=5X!c z9;dB#l%g3kGmUL*A`j#Kt{b=WhYxkJZZ__BVglg}xgvP#5a*|EaXjeOjJ?hi6z|MB z2*L#DY<<=J!Y-umr?3wfG=I+$%Fjq7hpS*WEt?~Uz*?>U>sWE@Ep@zIY1dD)_hIEZ z?N6ssgnUQ0HZ(}x^1p_yk5DOUB}wxlBi${!a)6nLK<`$DPgwPW#MqW*PHqMRV6BxA zpF9u$fZgHP*4nw;dTrU@S+35b%L#>Ib(+HzE6*+(+2~$rG221b>z8=X{4m%CT=pF- z=o%9>r)#Z*YCm7;1=UAA6n*e3$b{X&ZNUm167LuVgh#UX9Z9pzqiw1K=+_|faY&y3 zgV~YEyTw)w%OfGd)KjB#U*i%!6hPzB;?ZcWQ|vJJ$l$vU>xB5~#U>ltL(Vbc`8n;c zUYF9QBwwkN-Om;YbAHqKG}-x=_=BE@TK#o3rtzz@!I?d9tBdm$1Jint5x4~D+c+8+!UhF+IaXWRe%qqCa!v|`R4-}1*!;5PAxG5LH6eqjQYb` z1+SU&7!#hg#SRUw93kBC^=5mZvhJxniiGsqFe#xpesLurNGoY_(zjU=3Z5#O%P7ytl*cjG2!1)=d=?D)9?Ec zcyhS|=(t!`gwlnrX1U84=`1 zrucQ14*ODum4Zf{lj#M8e)=1ty;FaSB{z7W%cR_8rtk(koOIr#GmIBkxdtNaYBsyU zF6}V$poLBkrxzLC|C>9YMJ=mhcV>hRCfn==gy-`kzGdrKuBInLlUU;}_d}#V?F8Z8 z1sN8|{`vUUg3tkkx>AX%wB$37GX@uPXT!F+HQA!$c*GefgaayaWOwd+Pc-XKLvhqs zu^Lw}QAa%UcUu_%die2vosHJRwWtFNv7OA){l^c##7g@+ZckqffUUE|ZB9b4KCu`R z7zvp&2jTpv;(2E5;hz14>-$?7Jv-o%8hSePj8H<~a%Zg#X&YoO*rdkA23IRrpQc+N zYwA1X&iqwBDJXmon&(Cac+RgknL5VT)oHKRzm=J&^yQA6w61E9?GDoNXV;@voVgWK zreym;zStBn@+bMwGioY&%Mgn^p2(hx<^-$_m*<$&SlbRr@}ow?hFa*rgWsdNzeg^; z4^ zRI(0kibFMx^kj9W>L`6zviReBbE3pmC}$1&9gJ9s&uhC^uAHW*-rA26rxfPb>IdF472T)_ zSQs^PnnV|aW%jbH#;zsqSB09NVjs{nDYOHdW-zo{7X1w^F4+ zyIXe>gMFv%wO$jVs7SEWg!bpV*xDBB&-TpvU#6LuUK9P<_uRxM^5HCkEvN%Urs|hx zu>cJI!-;4%YCHAEcFqL3`%j%Kp{pj(blPHF42#>c!)`F?>`^v<1H=9K`}3#E?^BOn z6P7r~Rj}vzy|W~4-df1!2u3pzVA!@DRL{Gk*0kL^^IM6f{-Po?g1Aw+6pK;!qGYp}ZTrI)iK$^qfB1c6T>@ZrXD6NpI( z9vEGBV;&w|x?suLclW7s{)TPEPa&v{2UqQ&=SKx&LMo+9c74Y+rTSYm;}8F~|Ls?? zs|{JWUj2~Zplcc1DK#e8Wa46eq$!H8bhMpCIQZl597opbg=ytS+!e>%u-Wa~i>W$k zjm6cUc*bQuo*$F8-!wbBjYN#GwCZjpO0sg2=0t(wtF z7o3}Eo!{i0I(DIxp8St6N)MIsM>l(jeN=Z3> zl;@Bs_!k&%d3kD}9}OyX(H+{?5NF9X5}fT^e?a`et8?0$3m7F1$t zX5sx^HJWUTAHRSC^_3e&@|@b%JA;4aU+RpcmQTq{-hAt^Ydb0*i*Q59Q2Ki3>g`)I z)yC1eOTMz>ZZoFypV-#MeXN!?tWx7Ar}_X%KYQx{)iU(CPy|ElO;k%-j7{ z8aBsf9ZbHh37>lgk_STVMUJA`L|Jx+P55M+Spu$-rjOmdnTwWh`1jA;J_g4ve0$v_ z2hMTrSksrIN_urNYJ#$pKNyOJAxtW1W7e+ZN)*2{)OB4$NnPNaS2~!3(_Vhq1URBA z3ycq~;h_OvqbO)p4nZsVE;^gSeJMPWyp~ z^Fvxx+$lqFts3f8wagu#QVubP96BI5Q^+Zd#K>Dq+<#UYw@E_pElI?kU8X5IvJxFaqiBOdKq*s85H0hT9fvoKmq-m}o+ zL?b1;l`-%#Ngr}&V^aS=23d3uh7>nC&^b64MUGbTd9~%o8ZqSv= zRyfYJzH{&%UL>9(bWRO)@Jz6G^56^ZCNI8M)4uI zanUgo%{`3*swBV64mVsKJMsgcu&A=1QrDkg3^8$cnzt8O*U3peLgc?=*cLK;5af@4 zgqvlaJ0{hTD?{VN-EaW~OjrJNZq^?}`-tq*_-pU#H7@K(T+Ht~nCeLNreM`I=yTU|**&O+|& z|CoKu9*Fk)%~t-0(}w#w^sB>WrS_-}fO zh2n69{hF-Ka>`gbbH+N?O7uf71{? z#Jrqfd%I~boZl-+q>)M%Fd?*}qp5v;hQ^WF{R1b5Zn@w=?cK+)YXU+N|6!`&dFOsr zqYld2MrJVPo5HL<$PBO#{t;f|6bbM^|sTi1QuK0P#da(y(Y7T zSmZI99J=1W+7Ks7k$Hq53zxH1FWIB&E3WbTtN8LPCfe428AY`zVzpY0d)E3Ke>VuS}cN@3yKEK{J2SPI-!sz&XdmJ3|y?e&AF7M7=L5(TfH+S1zDJMInSig=sTH-1!i zkR_; z3el_GqZrYH2^y$CW8gU46ey>szP`pEKsgAU31994i@@&rGqTGVSHgD>1WI8LHaM9+bI>8r@d#J!eDnt zo_|O;56{SK$oY_OS}T)ug`b+^>=FakHasDQr5eMVn#(98JQN zE@fWd9fZ;_MR(rX2xg`c&>#O-@`0e9L(qd_-@`Wqq1FU=RZllx>+a;a?d*2~nrNkh zm*S{u?U5U6A5BAqkNS@3Y*@X8bfBgOn(Y{$8@0#gb>&dIc}lkDNt{V75fNB}pEz}I z9P2wqxJ=+`J?M&ZspHz-UuqPl-wpfCRtlMH{6fpCKFU)O?gZa~=-I}u_N z$aYl5oLjgz{w6NjYQsHYF}vxX*&y$Coro;mHp^W z2DJWLVDrg2RG>8T`bf-XW`Fg*)gKW$ke=7$a7XgJ&xK-m0`PFRWGQ%1ht@FUB-c-V zAW3Eon$(nYdH$`%oJLjF|7k?l(zy+odQkl061}37M~*LfFD3%}Hz*6u9NSfWA>Fei zy_|gQZ(IHK$G-%B>WP!uXRNOqENS>^08;rB;oIhCd#v`}?tAC{`$8ZxzVaNeM}2|y zHHPgDT-Q#JvPk7}KJ3(LPY7)4JAdD=Y#&s0Byco}MJEZKg%|vrxZ|+Ab>pLauFEVR zh}Gw0Fpxi{v78-E5_YCV#1{$b)UsN61VYfJ z38pGLt)eimJLoL}sM`E-=nMDV_x@0+`cXf}=3Joo04Vr9cBda6c z3`IYeH;xpz_0huXgpG>i`t5;y$7)QrW|q!|pLFfH^;tq&lGrN#F$#yc%oy}4bHADj zf(lgw7AH6pv;h_Q()rMS47IZ$lraK2ZdncHf=37D>S~3L?=3}I>l7SKH|wog97)Md zw5hF#KKK0Z%<=z3oBvN+FV_hz@w!M?h;#aEp@7a?inhY!kqYh8b?b7lJEf2@w#UEgZh^Z*}a_lq0Ddt~!5IM6-V z))|duXc}I{ZjZ~l_V+%|EMKYud`kECLwO$u4q~|@2-I({iF^hEr|%}+-D6Fq`9vk) z6lF6cmh-*0n-;C8+G6jjXdkp0ee*H!z>Fx;^LOG-DdUtChNkbzj17BQ<+2 zQA4@??tlDyXb>7gKOr5-$Ss&+E=KJTRYJJzZuHKnnY&&3#vmQxW(&KcZ&1^LA5M?1 zt)gB@YF(MGjgQ(&J|3^}n(pr!K5;=gaC_vw41qpUV`%|%RL?HCt~czMZ{q0eczjY~ z69>Sfc<{D&H{Gl$wifei?<0U7;%n0<9&G_1X^0?A*?P3ybXUenrje>(Kd49|8&OzIfA*Zjbb zDU%!;hvGtlho~0r!t)oeMw_(D3HB&TEne<2YinQ+n=97Ay3K_j&p2ZbV1=%a>&c&z z`TorQ{YMWNm$oXKfC!A=m+9Cxe3WY5KBjT1MRy}L9t$I(yfd>k04F*c`WjCGUh}!m z)L73`*bNNw^BT2PIOzlGZia*&oF+DG=iRxq2k@FIxU2bq^3k2?1wk@nokue#I3nWdQX{oUNVpCF7cSLT?zW zrUk5+wSIS*cP-Jqde&2Q?<-t_6n#zVii?S{41vUwuwlc08BqsaUOu)Hwi%d!0i}NR zw6OaE86M16UD`gN`Cf^4*@UN?gCUHc(lL#@NsGaZX>8S}s_-@i$Cg@%=6|1!4ny$^ z){0aqM5e6Y#2$p~`%)<39c*;p0JEsYhUAtscg=W@qIrIEE_F&t%S)qehkn`ba589S zd&4bVTQP~$(F@HWL?9hm&vTC(L9-4JDc$z}>>ZI-6Zz~?$GHFI&u+5jR{p%`F<0U5 z*EP@GDxtxO$>J$_=WeqWT)Q~{{}-K2Szj-vgBV3#e-Z>7c)VWRv{*E4nw$_-x>wma zeawA+@2Zia$nhIfkS@YV{PJ2WGn3qjO$(AB*U0Ay$Cf+xX*4U0OsscXY}Tqa=m(xUeLjFY<1jz!-G8#3^y zEm%-SS0o?KqHSuq^~U1E&bOz}azwF!n7EAP*<6WM1L!It#dz4xL0sE8e!Q^0%0t zJ?sRdj&8&VF!wZ>pATiz5|!>!A*4$Xy6qL*ywtnz*57Kcy$dP5*A3tCJtR??he9(< z6QO5&cZKs7xo6Vv{nfvGF6@VfI9|8=&Bd;gi)>MU`w>~=oCJit`CaP79cBR$8>M({pFpcuZHFVKvC*!NuPI?cgPWa^W8@@>F`tUQ*M zLO9CXyUx+F-KIok$|zh?>melu+I=VaSiL-G_z86JXFWX!U8EryObB=&BxXyadn5J zmIsL6>3Ba@B$yz8D}g-D3vzz9Z$+KaG9kz9Mf8he)dz0Pi_c$OSD$+;+Dwu!FDSH1 z4e;KyTwb3jLo8=1L^WPzkZxd-FeUMo7|hB z(tMOaRDpGkRE(+5XH1+=b>1XNozUu)mxm4G$FLTAvdMnoJtf_*QFq3rS3v%z!>C^I zafn3TSam?%okqYs&T9yT-Oi1XiRK(-z>bqOA&*99p?fb`M+1hes~sQ8-GAe)@xa?s zLr2L`<11G8wN^9piud+{oo_6n<%%>fouD5`QNMN5^?0|85sm~Bh{kVHtaREzakM#P zTRAB}VwA5)oAZqbXEpkm2|?56gF+1JrI+&PCF7Ut^uu*3n^(#x2C#F&eJc`)!X7!& z4HuHZi>AFl#P=rZF8G6I{LToxOP)Dq0VtE3Ep%dD9xzdqr&i<`Z-!^vsDAzt&iY9`QNgNjWf204WJMpXa)FLmzVKvEzw6g<45r<#V zowJ{BsL-iT-?>RA;9ITi5C?z`Li%gzEqo>UhN*G8D$RGVr zLtHfFikK$e;EnQYhj!Y=J`mXZA88xk5ASFmVNt0&|MnVYmqgs-MknVJxB~Fwm&>!$ z0XK<&5XmEOJq{POP>Z~q4Y84SD{_! z-_Y5&+0NHcy2w}T?b+OgV=Oy^$mZDJU~hYL)T>a>a*g?#aqQt0y|(e7w1VEVmSEib zO=A1D>d$+C#fwPea%115G?IMy?1(JY1n$l^=7PCJe}E0y`fhGJkutxi&ZSH~;exCyILO zZTZOc2C94Zx#rpmznML^bUOU-`)F#2#Cna7@LMR>>w3&50Ty-Vk2w0eY~AUD@_ubHAI{VN&P$b8S{od!&FmZ_PZjeX?qq>;<@@ie5pwGzT_mvU z)|x+?oyzamG~ucveB#b#vNrpBW*D6-Vd!n+Qovws>T%k~sQt`!$pR-rkjZe4zwo8~ z(qsS4*UZWm5P=6CBu8x!XMOdapSc!XJLk%-4rrpN|72g4$Rk4gCuahhDDADF-Y^{D z$9Va#(EGD5wcz~0vs-{6Y76sRftMD^9%E9^|J+p!v|8A_#PJ@@AY0!4$MSdi0E6xJ`F zQ+V>lQngcggH2vXp!OMTYXUgmN27Fm>)ZQ@WP~%ajf6&U@D>{>bY5-#Hb9%Isp!0} z_3i!NGq2hY3bP71yA)T{W_T(iEfC9g8Z{7M@}8NnrQt%-zDa4d&r*7QiD@&61`KdY zh`co`SOiZR`p*2-+PG(@>>#kz`dWMtiC5!WpHLpcc}89f?&-Fu;!?^3N4)Djr~~89X|f?0t}LR z0%u{ljOP$Ii`u;hj2FWJo(B~<@C@^FsbdQsKY~OlquFc3m+9&Ph5lt47wA2E%JcyB zJKm%mj{w|_wqgC0xyR3RPAj0vak=rCdK0|H#bd$rcLef-v?Y^lh2)tX?~hDOZRQ+7 z(KNHCetqw7>O&dGJwmrr+9@!r%0ClwD20@~eFk5SU%!2H86tt?yAwjSVd(XpRZDJOvfetA;vGlQr=NLl!ap2SwkvFgFL-7}ys_c)xj&$5C|*rz2F zDNWrY>Y0$u?7VU}7;xotyn1=^tQde)|Bf9E<=xS2(E2RC()a`C+QKqF46j^Ks^=rJ z2^jv8o?jffZ^b)!V4)bzvE}sLDki58u*g^l*A5tZPeascX^F3@?e^##O@0kCcFTLb z;ic=uhySngiOQBO`iJu-*Pr_E{PAGscZ_u4lxMt=t5acy+Z^lOfv94#xC=QCHrb~$ zeQIZ*?2^a>_4~!Ar&Cu^To87LHu@NJI#c1s{5rPQ^sIuyX{5mg?`QzQB7LB@>Hl&HrO$!{en0uO&l7e#b2 zh;%~DAJ!?hQ!|zhuacYDN)Vf~IIYtf7b!2^WI`!k+7Qa-9@N`w{>BvRrDfGpSdG-L zQ27o;{*J9t_;^)X(Yb6$v#!io=XoCInmpk8P||JvrVH1dxAL$@nQ<_aN{uI44+*x-{qF| z7Zmar5)H2;gw*8qiK{P%rYEo_({NHWm+3mc8qiy8TaHQ8Uzp+1mAq~%mQltPYZclA zjLx(O9)IC_*Z(ZsJB~oq04r_@*8U40jr}hA$z62#Px$Q{FY~g@j8-#BLl!sxw94l0 zM6YSn`T{T77&VOSc?(-ANNzH&t${8c)v3x~&1vn`T9tcFDW3_j36bYT*m68C_;S6! z&-8!@o1bz0uwU&vEqpO}=-{6G!PV3ImeP1GfK;b8>r_!IM=$$7V~HV6hKa?`*K3+w z$K+Z}aG=W+8UF38yAW#?GwT9jju~B)aBU3A`IHnQz`9QNW~PA3-L21r`&P*sD}s$J z=1I4HpHEjj9saRK6XhJbKQo*Bj{yBeJXE@<&0YAHuS!!aQMmDb+zpid)aGN?I?WF< zoLV#MS{3lt1Bb;rfu)z_ADhG@M;>-77QwnwoINJ!L6@pL9HS?uD9_up5nGwH(mGv4 zo-Px4%*7FXN!&=7yxwp{`w}Knch0e4J@+JeD-tu^=hE_}_W1vn(tNT76UTv(dpsqr zq*gSHRGr+sSdM_n$6L`~i1$5fMvM~EXmMQ13u4F3EP^APekT$PJVup-Y;k2;nX&4` zeX0)kKZanbjJZH8^-y4FbC~ipQ_Sj9F!HojZ$e+hgw~uY(m9T$^X@nhs!YtK1MEmo zcD@h-HqvVh?KUp_`5x(sbN4LZxMyk#ILFB$(UU!N@TscNvMnO2lM!a#!8p;w=0Ghn=Loe3z!z+kJI|k3)LP(>1t~X%i{i&}xVXsrFV5gB0eiZ|pI57G1L8}Y4{)nnO18SN< zQ6#I-_JeM`xRy5wADg_Y&xjr_HFr4A>~s@0j|K=cf`-aM=au!f{U0NJc}mabKM3t& z%YX6!795&2=QT`Xjz216z_81Ra6prQQ4QFr{Nvvv_*-`7SIAH z1kC=Ep_ggYz{-w6O^X{-Nosa=)9r2_AdWR^au2~pA+k!6(`9!E$Kwio<@4K)8b~lf zPK?TKxYD|4NP+1t=gtO0_QrgtZn+&ql)PL3QDLtRvf6ZF+VuXMGHzS!Kb1fK9Y8QO z$Q;}Ll>BSgA-;tL4>TM6ZB+1TwVqj)%i|?}ak=AoQb}Cv(g*OS^gJcMP8eMhK2{QZ zam4SRRZ7^S^LEUbn~I9?&g|5CpxM;*+eI*wf#gSXAcR7e*_4!nsCBm%;hBijj)WK$ zwnxlo6%q+66kHRz4CV3``^&=3Hf1cGB@g0mg97}~^Z8Esd|o{V8}4H@f6m_(o8uTA z;^ZSHwgo@X&svh^NKdKYrhG>faPO@(Q>-FC(Akze_mg%$qr(VXX1p5cgDU})Up#bc z-&hq+d1bVo{-$JO(s#>BYR7% zy(pHk_qqGIN${AJw)H47ik1Bv#qtQw#Z823Z$(02ZW@MZAdVfgzh5Bkp2MiDGf$!8 zGIvm?(wpy5>pMoRDC8#&Ib9mBL%QB2&Yc}wwS zyc}zK+~ky&UN!n6<&L7oLrz~}Onl5cXS2?mKX4uj*;E)pS?{+jMV*Pe8*iE@LU&wL zKDxqp=V<$Fk@i+;TDSz^BBlrH8XF|HjKgK>1_ztlENh@u$Y|H{v9J%@xhcDk^$a`n z_abx`95q&IY>KqVQiye#m$U0;I?B(fx{0Dun@Hy9TRaZ)%0vn?z*GHLf(#FW(B-IS z`%mGnzRu>}rA*4|I`#YE8QSN(j}M|~lSDKVUxIwj{&S~8serLTVJ+Tj`X1|Sc?0`x zaG>Ro5A3eO(lo-of?U9BhAa8t1PPO@ZSCeZo35EVQda2f2no$#-&erst|puR0yTes zZ$uz-@IVmTnV8XfVdFgReoi?bP=B2(9aa@02lIv&%e~`_p2bYSb4qn5jJTB+Owc4r3S!NzsiqmoNCg|9-BbTj$x!s`1_}sQZ@`H%ejjT z*;Ti%w9j(7+FPH{z4ei7@Bi}^Tai;Wyor4Sh!XaHmRb;Mg?V+#Q1(tzDMSMHWM%lo zO7*RBd#F>oy7F#ksS+I}ee!skT#&Z>Z(8WpU;G-)yR z~8$zS~@y@CJ^;2$2-eIs~Vy4X3z-g1M;X8z0a8?^Tv_KUh981 zLF{=SuwwAQA?Y$PBM1w1Q^TJTU{gJkEKGBgz}3j3F+zQem^SfLe55p^8`CVl&!Xy+`X2UOLE2VM{}oc9D~TT~)H65m^nf zH2Sq3mhO4Kow(?A7YU~))9l4a4~sB9E9pC!?I!r{BuH}8NZd;cK$--aRcjRkBc5~G zUD=l%>Xki$_59#nxjh(V>tsm^S8lyCAUGoX0or63fl?qn>$YG#ei}g80iOz1Vzpt} zSpMmL*#EF)LdZ6EDrD^YYiKRXvim~D_qEd#q;W80ZM9de#j6Rilj~!Clv8seO;p1B zW(m76z$yP@ZsB-&L}u_(0bQ-Z`Oy<$OqV9sCfHuH|4vI2R((#K^L0*S*x+EYprovg z*4#QwNiRoScJ~xg-Ww-mUn5jn9eO^5X+jNOc<%EiWGUvQ>K&5RY zCr};GnFAWi)?)Lx{M~@dATsk~-r#R7MrTRnCZg+r71nb2>Wp`!(Hwcg(ur06`p?QZ zhlo{TuI6U12wt(<*y{(*{fy$a%lrhBW(tz{ih zH^gAh*mJd!ebDdItx!kvwboA%36=f~F;T|kn++YEZ&$otyh!P3s0ubx@y+bnMYiDI zCe^)p3^|c^-e^v^5VXYn!j+I4W}ZXHsDaF{+Yi5%v)bn2N8&-^R4spa#t3R}=Y>aqK zh~`q4T5O*_+>5A0;Uzh0JxkW*FepOyxWXxA4#vOdJzqQ{9@^rCPe!wpK53uT&R~~|5qM<4pz^x4K5_y(l;-&G> z@G~ZIogYFALj0$4C4JJQj4f(m6X+~6`LFJqD7~f9+XOF{eNKdNNuNC|ZK709w|qN# z{Sgoi%{rGy(7ebtR-Wh~?}6}IwnWncX9AmE%&_u_)c+VJdt`A&M;UmN7{pU2jS`&D+i4WT3D|8;Bkl<#z9cZHaC!^dCMjjF3DS039Er=YwPqP58QR52@Wc^C>|!Lhr+eG>~cA@0|jhoFv(7r!sS z+prKu=)V2OD4j)j2ofAv8W`BNFAHq&{77SO2Q~jqSl={D)(C5@K3;!_76~>D)Cu1$ zI9;0-BC*4I-$EKEE*!ppex;@-AWtu>X|gE;qS?F_%4Lm~R5KJ$2;h4QIYDP$K`X9r zN%&xFZ18Lj()E#+tw4f;a@Q_@nS&PEe!3&e7Xc*SUeQ<`QM8%uGwnr`yCJqShR6wV z!oQ(|IUAife;%~DBU?sfo*SCF|6&`|99C{}fX-{&h3;&C>?C@5XFqYgoTff$Ie zNyn&C`K?cV<_Wu5wT`%h$EL_-s}B$YsdF2~i3}ZZWWc>yH_F?{<}b7$$P6`MFFz?* zX0-`vIu7;H7@~}JG@MtiO>-kK@XycS86Ol!z_{&`%L(Rr>n&JFhkN5_Olef#5or{A90af{$<$roU;CFru6LIO~-U=jqjp90Lp;tF*--UbY55tc zi}IU}Mh(Tn^RQa0xDWWIDR^hK+D&Sm_?UNOc0upFmP|lPvZb5zUB!0Qo6K8WIwir8z(CPx;C^RA`D~P=NTTaYLgPoP zhG)T8uD#YgixC%ky9q!mdZTN_NuE(E>CX{9QgIJ>2Y0_HC1a<2@$MM2uwQcX=0yU{ z>z%UKOP89$z9><5>cq*6*K5A_ub{Nl-L!TmQ={&S=6%R5X^focgTCf@VNk#KayC;M zZt#nLORqg)U$&#SQGDhmHU6)d(MwV+Fej#w3vBzKLH&L|2#N&lHJPAzpjC`GZDrq% zNVfI;=23kq7hK})js3H4@>UYa#-r8RdPC&Ea>D97etWr)8g6+<`*G&f?_tPlSNHler|p@prW@-yumt)UVhnCDE?|I8Q8qzB1|r~@-B_% z!&TuaNkm}X=LyJ9f1|s@*Glz+cyWm32`)fOj^cvzAB9l`srlV}2Z)Zz+5Y4+1}1`Q zZcF{C0T&%n0Y)*?^>TZkd*yMCry3hd!3zklOmtBOG_{0Q?gJXphYLz$|F^iVTl^j{ z2H7katW!FAstA{8P8+!R9DQ2okE^X#dSC6>iIf1`$P9GR-&DFMUOj7m-Y+qRw8pYP zrFKgHgzvOGJcaPt7;!X!a zx|dUh(%m7HuRj;=dJEUY8dZAoE#An5#81`4O^7V#pKD&>%C8D{neZ%i+50)=QjmC2 z^wiecchyNP&glJb&IL6&O>#}$;LmeQe+9?M66^G9&1Yo{aqP4hw~&Ysm6Cyk|jk)zfEMicKrSg-ZXlHDdk|Kyu?VLIk=N-m=_!8tq+4AOGW z5uqy5wBT+wgO#VPR_$T`-CT?oU$Hs`KP{4QU;8-2W2g{Us#bZKb|)&jvUA>UYcF`& z9irSFQ%}%VPsXa>fTso<)C<1s*{!*4u~*c3n2W}p9!}3+_MH8Tt+_yNykKqUjhR*i2Kr!4S~SqmM=7)ic@sx0IrSE)_aMOKz4hSt z+V3)1Us==JCTEg$@*T<S6sv!lsNpHM-)lRChQ8E!)-ftiu%d3UhYXk!I}J zWy#(MxIYj`X&Mqv2#)y(brJT56xHGzlsHE(|4igXZN@}EP9IH7gjH$eqTh#F=!cd+ z{8r4dqCAAL>kW~dHs|c=8kr@BzPG5>A`d8`ah}KCi1d^og9QxC`h;z9e33Y6Bupx9 z+0^{j>EXG{(zReUr7J~MT>;;?^IfgG-*fEGfD8SNRCV#1o%ua>v7KK_>^HT*fqJK? z>w+=`p+hBmu`WfTWcW#vFqQo-AegT`e#ZX(Zp>W`T@<@?t=75AYUZlElh6ujiAkP` z0ifpI1WDo&OKpyKL!Dc96|^gZ zjSZ)UYTnhm-(?9SUXbv?d=j&$q+V`Y`Q^wr(~!rEwlWYgwHOvhWc2`NY)DZs0 z>kseEEqxm(xa2butweguqUrDh0X$rB<63|I!v{%g-8$zkLp>Btuk?>9^J)($>BhSt zri~q?l~_8wX@RIy^}V@7USjpkLBtUKa5T_w$dLXMc{irQq|C{Sl}!M!J!Wd?e4i%2U9$gz&W=FytJ_hg zYy(*gcnV}Xx8?mUs$$0^z)`I2B;B}niXe*#VJfLU(aPM+@HbomWkMz4R?8EaYP_2n zV3lGPSUq9V2r}B$ehKGyLHHZs>Uh^>`U>WRPDjc;hjb378XH>Frs%5Re^4JkFdWTy zc&)`aPmfRsaCk)-1vM_FEXsBm3WIgG$Aqx6H?kHi?;2G5i&AQXSbIaHNs?(6HTjkB6by=P# zMR|iSO%^ih@`)eG9p8|m$a2DlplV)PUJu6v^%z6yaccxGCW?>j2f1Oub-MViPKa^{ z!SF=KwAZn0kT4JotZZ?JZ^XV}l0=~|v|a?8j?<%EBy#DoO!Y?x|I4vmKa5drU?va_ zws?Xy^F*<}bZRb+|uX8<4At`UJd1jsGo~8kiUO8tR@SpC0I5IWE_Zp2=0bT6u6Q zzIoMu!kd_mUjY@a+|99SCN$X$2^Jm%BZ5^*uHg}G3(tcR4vcHVDma5XSnG$(v49!~ zlhB*6RhaDgsrN2j+KJ%_6Za4nY;7dG%aiuI^!e@>HQ2o7_}`x1@p=QXM|*#Pjhy%j zt{V4@YE-YtImZOzSYd7l5h9YN9aF@Xz_Yb?V0Ye7*!yB^t19R5_DP$0LcD(~=7(@! z``Pb@OW}XL-a}5!(bm={{*~w+k&@Y5-jw!~ObF#|y=xwN--ms2HbquNIpAjfuRw|M zvWt6PtJNR7$;GZEo6 zi@W(-#wMgdUPo;C<7bD|9am_bPPhjeB3zP29%DIm9D6LzH7SUrSIVc{bb8LFrJYDS z`-s~sho)Yoox(kaQP+LiQ@&a0kOWI`(XR*0aoE7AvGfXdnegL(Ecdz7m|TZx+`sS* zBXzvx;J4!Umq9rL<=~R3&v}3~Z%yUfyU8vRIp5Z?OTw1a?ZOX#vCGP4f)aDG=%CNy zZTzNGMMvxxL%B-Flt3Zp)W8k!f~o}#?Dcg_(c|Jz==2-6gM^xwp-o=lfAtpfRBV^| zPX^BHAVH@o-`HaGs=Y#d;rFW5s-F_UhDXw&FMoarXV8`zYLFG)DnO0 z9)N^H(}{GMR0*x4c-RQY;rL`3qpJykuR(LDp)Fw5vm5IoK`VkiE!EnjLi1?QtUNI2 zIkiSK3v3ZXOzp$V5@k5P4XC4)YC)YMv^BBgvO6s$?r-zrD)jBzypHjVBpUb~o3gVF z9BNbh#i1Z{lk(X`#Ct%rJ$xp%R_V=#=4fJu+$8=j{@|&E2uZU`Mwcka6Lh+CT<L#SUTcZcxa+SB{JNN-ZRkj0 z$6WKekaF+;LVBf14N?#C9Y}GsfySnp&3|EM$bt#fyfd%z>7{PV8q0EVUC;l7Y3(;n z^#T2o<7KO*Oi7zQ~ zZoX>raJxzkwM;Ytr#RDBwwu0Xt#k4zF0=xdIt|&xHuC2LKEH-&=IyT7edE^h*emMf zvN6ah^qu*O;U2ZZ_-j~{N8*h#ZMOH7Ko6dYxb)3+^E10h+x@4gEVXv{(r>MyTlG7n zmOoqIQLS@h2Fw-Pf{|J92`;M(`!^;jbN8j{0#4+m=j?WHh6FB`ISI15?lqT7CO}~G z@yoATkXpHaB!*BL`!K&ga?<0rEWVk#9f;o>6nlMIU}sZ0)o5R#&oPcajd?SbLf!BE zfYtfu0i;ImQA2BxO7*7Xx~ul;di`STj0Ovi(1BJB{zx)-NI_lTdE3lQEBL<5?ML6udjkxASUZp0=YQW;tuBq;Er%@4B>h~1pLul3 zt{Jd+vsK(4&1R*TU@P|UqwZBK$=Rb3q9C^RYC}eBv)5-Kdx!-q$3dDq+(qm!U15wu zhG;26zH)XtqqY~#dt~jr1y+0iitUKP3q%I%v}rp`#k|K(1%!y&z8jKPP-cJbOi@V*D1#4Dc`f@w2BIXJnvWEQG_6i$gEwtO zkwY774Bglq#ffuX$NFNyTi6duJa3Asp&kY17>vTCX34Uuvrx&nn~1;c8O^P`)uXYo z8g~5c_;@V29Pb=UDo=rI^z>QZRTJXs=RC7A8K`)BRBhRFy=g6Hr8T31;E6|?50|_uIBM6RaL5qy#HaSlg>9;5@2=rQCUWNjH#fpSiA0fH}&$^!#@{6%mNUi*w5%5grt3i`P+AO9KPhr57308>x&+lu~U z+1n8cUJ&*Uqr+Q?%+=@{#-jhelOXo51N{vy>}j~R21};T%5vR&lH?P}1s%r#E53Kk zTor=$M2unqDlXaN9r4?Ci>WR_ScUgG=6(XJ7mS@LKG@`L%&ZVTwVxXp=KRh2 z3aJsjQAlA}c3}44qGiV$V46tKqj&iOKk)QclW_-_Yi6fe?|973kZc?x_fQRhD@rP} zSD5lPX5;I)fNe=INVg8szmDD$`)Bo~S($p}Y;azuEUV3_I(^Okjx`U&-JX^9Z$BKf z{Yv9WQ)6orfNrH2dAw&xhXLdQ&hg-`2)bUQ~5xK7S4Ax{dr~$`0^W|~CgY~KDH;dfv z*j-HQKtJ~$$4L)@(SMb#CZ4ux0IkdvnT6sNvQbF>Ik;8-bi`jLETf$Pff@=;3gr(d z6s|Z&2kJNcEjwQKbwIl@Wxuq<7FF-NM5*4#7EtmL*X{LY1)+~TY|#9Z9v+D)FVw6; zk><;9|3$E3M58L2iY?(LchN-6iM(u0D+;`=8eEPTQ_Db}e-0KSB9SX&Ek4VFpa%^s zta5GADP)5%$j4x5Zsre@!i{bw*I#h%wphMxy`*MkplFS2(|vE3i?>SLcl)Wug@i2S zjcK@Mi~Uvoc#y1hVWZ>Q#O~+=B47A07Pe-!FilJsXVp!dtOYHFU2D{q+)A(F9C%O_ zn+K#{UpFfGQ1`huDP{Lx&w*7SOOobcEx2rFJ((8En2ThG7S{sSK5GIDgwAmz`~;@7 z_m@6NtR}js4&#l^%gyR0UR9e}$GE#!uo8i)irJw){loALjCS6|1zyd@0ox9WGFLKV zSG1|+PQIYZWy@Jbm0b;2s-<9lF?DC!mYH!)Z!d0|=ao%2a@_hIT>-;+e8^%hE>f5} zyN5Nq`MPL&e%GWOEyvZp`>e`Q!*3pcDGg&H;+6FZy9S_r^|t|3;L0pd*!@>~5mKsI zDllF5R2NhB>j1pbz4E!mC;MM%D-S@qq1t*ROGeI7- zU#D=tXKo~U6Si4{jvx1cdEkQ53VY$0%WydGLBc$e)D)kQvPUHrH93clQ+fu ztU29diqT zp4RXh>-S?ax0iXc<>fOxnyOO@KCvttZ~`&fGcnW+w{BY>O3(PZ*R&$20HzPzZCfdA zUn{@3lC$xBUbnz;BIp*R=#tit#KaQKG!N2u508OxJY{}MNt-G>5Iy(^+N+eT2=4`7 zr*BL!kcyrWHt%RXhcY}-T(rOSce~I2R6l1^%WGQMRSskCq+M)B#Y?ORW89b0*J$2v z8z(DH3bCGF?T7TK$>)CFl;D}*SKhFnPjaJK~q%uAh zwkuz~0c>Kf$;DppT<@R#`~NsP4}U8E|BaUv8bl;nWn`5Z*@}!L>)?<*&nJ5wr$Yx7 zLLz$;m3458%wuIcIH$6OV;>yOiQ`zu_}$;%zwo~A$9=zF*Xz2T*Oxbtc?T#Ez5?@|A)j2d_J`(%co(GV za}(@98HCoPb`$a8-DPetA0>ifh(>G zt;U#`rRx*yr6C*$7$TsP8mmT3@|7Q7GB$=l$@D}ZH2zgjL5@w-$&TiH2ohxeI4Iwh zZFkm9;#nhwjfEGeE)@%qV)dNn#^mU%De z)9n_CVyrK6m|#w?ifR|C8CfAa_{B}bnhZ~?c~<%vmwi&I*YKwcE(w-)Qn z`ahL>HhZmk&r;Sp2XkSTW6n)iRLG3}50GA?b9>V|@IJ14vbmf3{MK*pV(YHDHmgs{ z?`f23$!=hLZjaWwtdI^3@?ZVWDpR3Vt`4ELN%H1OHupdq31jQOOZnWIecx#jbs-P? zw`-VDsU*~dH=tUU^MlE~##;a;A!FfJafdVDsFP=D-Z_TSmuSM(Jh(ZPTOxCo4uE=$ z91StmA9Yega#Br5B*hgT5zKFk)^bvAk3idVya<2whL5Ncx_n4u=ofQ-K0fx3DmLoF zR1k_QGdKxr4iwd{C?Bv@DO%f*ue}W$UwwS6usB0k%wFBzk35~qsRAM{s|gl9#RpOx z;wgW}pnO612>r5x8&GDhow-B`HXt8*9|!^kRp>SDtn#zn&w;af+kv#{fpQ%Ot^$_; zU*~GG)CENKv5ZXSm9!V2Jp(x$rusqlASR%4CtVLah95oc%fp`%9uqgRW|u|7pQ3#5?1M|l;mEH%VXz1^x3NJN$F{V?|Gm3hVe z+@19{Xv2qD_*gn~jPr_~CJ)?P=sw^BaTS7q$ZJBm;lrP1lgmJt!pF9au0d`YU*h)s z;E(<9#y8crbUxbqchNo1$e44oGRvDZZsT@{b~hU02l{>T6Rh7TSY#+O0c3gIVAPQ4 z3$}C`XI7GZDVE|3*s@`EaqO_zSn)fI$jXO*fusLtxuOIZ+Zm3Q_6kUbitPfM2LbNBj7FE@qABQ$t#nU5g)ZeW+8jUog z@fiC_4mhdje?-U?T}^QkeVr*Oa{8LYfBXpTo9o&?SwQdO?mK+T9xfJKpk|59 zmeS2-(qMc?hD`k2yrnL*%CS68?bp1eZXv&{8e1qoYEKAAvDM7#FGW~IUxPrQGB(AP z2f!B8{_majLE?ZVuOGPk#$RvYPak&Z&`k!arw4Jje!JnKxJ=9Td16}8c&sz_s%-i> zZG{c|Ktub=I?W?W^_Xa)1rdVO7>caa3Cs_H=GLvW_gG?-z10{=NPO^z4XYdt!2!>> z;P!H6iZ}1iaqZY{pB|-gjy`(9mSp3=dvbTTZtS#QUNtWc`NjKco$)HAMjTi4j@yXJ z+3^PBVB6Z8GA3i-Vr*fH4-6!O2GFpN6Mi)z*Q@VrSx%f7s*r;ns3+h+FLRCbBbCRI zUo>mu%@q>=Ck_SKQ+tBjhB{Fj#UC$x_skW^vqh>)ofqHD9w=#DF3U}J{$|6w+50E_ zF9chuQof5|7NzT}M5|lc$9E%TIX5a>esGjy2khxm8qgA8|NAdQSz!CjHZ;=IqR&Fo zT;zz+f>MIE&-I{kSTLceWBrvd7$p+i_Iyk=2e9k%==0ae_=our;6WZKh6Hqo+m_js zS>%ide20HI_oNbo;Za}oL%?IP-;QF>!f84`1qE`36>HiH(By6&ccXPC! zr`2PF{=<}LAM?EQvcTe}c8OuyyH@Hl!npW;m{?azhCSU|7SYAw{tz&!e=o&BeDnD+ z_6bk1&UIn(G#WO>1-jSEqB|-zcE_L5l$Z8LutjP7n$H`XeHAX^q)-_CGmnNQ`J_^V1kvFbY$(>mtxGn^sli)vAZ=XY6xul zvog_gOcmoPta|r7z|XtQ+2^-Z5ZByi$V`xJa@!AfuTol6`|7zL;)~;DYAU;u5FBy8 z=Pmz}QA)xeaU~r7@?b6gUiOW&g<~1=9PPy&!g-xHQ_$23*~zxF?@2LQ^NUr$P6xnk z5ni?55Jnnv2w<-f(ODH>X zMkpI8ry>2U=%WM=ildIQ%T7t+2=-UUAJzJsy!*A5b0nP*HHVFGpVGcl;*1TyAw%`) z=Nt&vNEmH{zsP4w9%DqiwtUz3FmEaV)XVVD@JnSMahiXGJak|J%xA*Z{3X!K7X)__ zlxNO+Z8mFe3BqW@#gvR8!g)a3p%c7~sU0{n?aod_nWGv6%=PB{yuI5t)j6I7;EDvj zHeaUZzi(-33fg~riA8skHwJ=J>&&Kbmu!DHxS&B>ynrxzrkqXbw(MF}8HV}d4wJ(5 zby-0vPvDy(%%Ou9Y@KkHIohA8-Xw-~noGRZaavs{;Uv871t{-`glfkOr&EAJXo zFNlw9LaI-yvWxZ6O!s?_x`H@{d>8&T3qHuWRqYz_oV8Z}xJpWA5m@w`y)4!f_V}t- zk))z9scM!hE34>a*Sd^3_nUR8bi3n(&o@-wwWj!;z^(W@!p0ii?KX1srtN{vC4!jp zne`_YWEVegeT@R|ZY7yN71J^Z%xeF}WR8_Jv^7?F|6dlvB5xnsLg&M@E);p{l)hNeSn*^qM-yaW^?@?zxoS#ep0U@D#Y$2-LlQ@4`aY^H>NZqe*Y^CM73T0@&>K zlb>o`q(hBZMT`Fq1Ir&QAr;DxW4{bAxAhFv?D^Pax6K;7uJ`C0vp;4}JoR~z zHyq)q(iASRW_Zc(YHr#IP}a6T2PVnoS3bHI5h9Kj2QN&^Hd*KJNzlI;M zu~bfpLDf@`z7)V^^8Wb_UVp1oNluA+zbYT}mUU3_eoiC;E&Wf@h8J|xt?~%zFS%I0Lok>79J7tqAC-!0U_5HEvOJjz0 zx=MR-R$L)@l5w+jYQjn^^LSnABTnKJKFAYys-tV=nL2o~zJ0PQ{yyxCgDHDR`;$G2 zXrt2lf$AP_i{~&1Q>H81&1*&>u6L`>nY2kk^EYPaYaO<#)Ivf>AWN%>ULMmY<06X7 zl(vD%8Zz2xMb1;wEcEtV{MPbazf_?T)nrJiAUQQd%)h8tOV;k$Ex|3lO`=VePY!;$ zP1$tt$Wf6VJ`?*u$X~y?dboRSL3OPze;SsvaSA!>pQYh7UwAaeIv9eCwB%NaY^ z=WZ|A7+?941^#$NCsu}kJzX6t#ZT*LJG6zt@VgvFpva698SO}a!);l`??{qXBJ>Tj zx8Ee|At;A^+k}<<$#-Agx+oQ7Yco#v8x>4E!`TQM>__5&5O| z;r>%2%_14sC8s7J$UVA^`@}ThisQO=Cw6o~_C8K_<+sH*`(YzB4~sCS3^s4w2s5jv zzAIS;d!LlMx%{RSJq_!8f)Zkl4dXiMST@_!j6gYZgI}*=y{-&&!y!jS6B>T02{7~h zOhQKNL)3M*H{{LCQ5oXv`zVrbh2Ug>`Oa0EI{A5zOW5n4Gz1=rsQervf}5VjzXzxt z-|w-*g_j$hpgbuiPu+XEVs~hd6PsS)KVaAIr+KE9j~FF=V8ldnv5TK9Rkvve{o!5PjT=Gq zjhp<2C2`Gw@|GrQNQVyislM1mr=9!kG5O_27JeJh&hKBZaOFpoqkYnSxWe*rwX^$Q z1RXb83bDx8xfh!s;Ppg#j4-=WCs9lZvj1ncc!wG0dihag_luTAQR|gaibXrizRF|K zMcnGm1rn<%?_EP9v3nx}+AI(aS0w-p zwARl*Y}Q<|AE{Q-jK{aI&E-cW&JOJcm4mgR+ow}>zJ#z8M3rLcIxv64K z_HP0HjpfpbK?{M@=E1f1-d{8X_=s^*>OSq{h$kpVH9^`iL42=sZq#d8Bi8yTF<#hxUXGJq__@QT9|wJTTA0r z4O;t$^71C;UH2l`f<=BH>&u459w6L4u`;)~$=;yb|F&Ht7r_Grf8%P^XIk&bIP*C} z!;)pSD-E@qc_ssleR181p#5WaZny5tBFrGaSZJQtWe(PGXr<@Q-~T^AUwuv1`KRVQ zhdGpA>f^fR(Q(Jf9>#j&eN3*Y>y@OezEiaJ70@^#e1{n+D>P$O3{*$7&ey5!EgeM@ zkBe73F)4Ak8!%>7Rq#kq@CetFO;hdA-yX5_%w03)jnGFL3L+wdmALbe-40n;SZugl zrZ@9{Gmoc8v$b$1>z3jG&65YYpQSDEtmQ&p24SPP+DLWhqvBHpL?|xNK$qm}En2J> z_M+OpIH7(+aeP9(1kodx0DUjeFlo5H`!b4L`tF2zl>Ak2d-6=5kLI`!Jn`Ek^~CHw z`4dTHBJNYc9um-VBLq~ecc{(D`QP3?oBAxW})QcP>SP{&De zgV{)Z*aU|p`{^I8Dvkj=fL0$Y!U;ej)wrpK7IR}S-i_R-vjYeMb*OWD{0!+mb8D71 z5?|krIM(sG&Z_b@K@g~oJm-zFwMWs<-k??UY_B<=O^VpJ?A@=P-90Q(u(VhhrxTSM zFdDz*c{S>}EokPcf!0Ix6w@3w!yb^tUy0T6>|0uM`@%p?FvQbQ z)(|`9BR}a7q8nwKAJb05<)am(gt8|I%gtTillH|N6Rz*w{`7AShUaDVZ?N>gtRQXW zTOr={>ZBlLL0DqUI}8p}lc5U~()bnG00ZQGk?vsgQ}#7I#|LE1VvZ+;{j-{v<2HeB}4tJnTZArSuDngJM!lDMPHIoL3&oVWh^hWVe+k6li#xPuMq#=!)z zOY9$&O%*S+NtCU_!gWRFrlxfXVn$PyQbW%C;;x9L<0-YW<^auBl_5EXiPDD|l}IaDux%<>$B?pXmyeJ!imNp>c+*X2u~%t477B^jeSmed<%8 zK^z#YCUNZ4UxDvR2#U%$4xU*3<*>{|k$h@f=O`9sBq&x6y>F1ks&#L$Um~0M{pYOp z182w8SQ}>qf@RWYD}l@0xX2E`n1U z-qK;E#->`Coa(3nD8+%&=UzA&!C#i;Ln-HOlIph`Z%sX-QXscI^GpFI@Ks7ODX8ij85QM+nyUwTE z{Xd$p!=f5wC;6fDc8!rHlJy3POi$R|v@j63JcIVzx)65^4*Y#Zg1lPfs99!`w*LK< zhW;Z5eshZjn)<=a$s2-L-bOBBcck<>L+e<-^0Cm%25;lT(kD--xjVq9fAoOJB21XZ zYc5$j65QhuMj!CX_*T`mq2%(GQtN)6U>>eaBwwJs1{kYXkPM-e?PT=Tr|XT*dM`z4`rip;c=O)cy!xq7^ZVE)H6o?%Ek?8&?{3k}f98bVIL6QN~BK?vpu z(}U6Hs5vd|%@Ncx&)F|UWYCN1I58avymH`C?E((yLuf zIVJ6kT#?q*T-NYU;J-%wO4&CkMMi3*jkfB1z_QhO1LJJ%%JFKmvy^MWnJ;hxwKEx{ zb7^HtO+i|`U=-m1}Y!58TYYO@fODS#?+*Z6t=`56V zIQkMi!TMW0+VgdW$C&|G#;J^SgAiWxK{L27;PmSK+a|->i4@?6$^Gm>h~a_fSgp&+ zQh>P!!{*?ppW|$kkFW!_8t#hYdA{;G1SY&`f^7LF=6z+$H(q6*4gJtmr=RU^e)DyW`m2JR12c$#s9 zY6&F&s#k{1gq#6aQK$z@ZSBFrO(lIDtDojv;|yjhY2uq6v!o+(uPTS~yG@sSd3$3g z%ieJ*nZeWO`m4yfo#*={Fj)+GkP-4Yk@z5Q*PP|(#m=$eS2jy-Py3az5J%&@!1VlG zC}w{?kYQXU_xJk8R~lt%*ixqzvhtiy11DPWZ}BgYpn2pA-;GTrN* zsmmOnrH@p(X5Y6{@oG!tOXpOvkXnJ>4}nb(9m>}L*yZs6fF!{`$)^`=*M21X)#$I< zxcJghH}Byr21Igx3KB(dPCLvwGfgrwYh^XBtc4#5@5HT%WyS*zshejzLX>kV!!wEV zGkUEAt$Dpev(WG4=Wj#Wlkq<!<=Y>|R6b`+VM5kWyZ+|#C(FjVQXMnSO--ER6nY(iGZTydxyN{}FBZaZdtNRMg zSL2aMo8>s;+Wj|xPhWM>eNN(AR$aj5u>mqD?Xdgl@4}h3-tYjYMI~J;oo^~E&ElXu zYPi5EN4%L)^!~Vd>gM+@)`M`$PSCPFE9KeLi``hH$33K}2!F<{^ErKLw6&`e<>hkq zHgw8`3U}QySqxk`&UYPk$Hq?7rvMXXJ*9`lgF6G#d z!J?*N%%1YSB{ebWGh<%D1OT@YNwa+sc7wNb$+o?nZ{locY5)Gzq3tjIjxKZ_Mlsd3 zf`u+0?{ux@f5Cde`Pp}nD|>er>h90qG>$Q}5>)oszu6OmfbFCg+Hk@1`fGLu@&dH? zM7-`fZgL=>(u$JEF%2{DSu4aB!BFJFW|^n{RjDzgI?CZ**Rw0zIW#9(<%+-N@Qg2=xFQ6Y-Uu*PLh0Ms{*@a^)3rfotBxd#5KW== zYe%H4){mr;y`SHn?9u?hk02S)6R>)Sf7kKu{ez3oK2OmVH2~zyBOaH zBRe_;uFvJmzP8CqbdF^*LAe@!kXD+g7qq=$Fsq98ve)zJpzVg;x%mAZ-8~8&;|^CGP%8onXIcSM*=;%)TZarFfGOW#(0x9$Fy$ zp2}U9@>#K8tbfGiS_uPW%~^8yxi5?@A?cF|&!^t_8e*<@966rBMsKA@mz^_SuYQw? zyiCtjZyIk2?(6sezFeKJoIm}DJO9(*^q6XW-_i4MfsS%@;^zz}QRSrnw3}@eLsI){ zBp>oUdx-5B=0LG-ws8P`oBK9Qe3VdUJGgx&=OYwv%+SNL(rv2{-A$`DyZmH>8c61= z{UHyG%ZwbdR2+mDYZ4>BN!{A%>lRNmaW!w4$NNI&T_ef_-$6Hz!GywH`VpCo!g!aH z5*bNWZ?7-omy-!8>k&giI6Z0?fPc4z61m6K3&y!NAAKRMq~(N2C&&+?Wx=EkB4N_v zNGm~g@jOd2B}W-Yc-lsB;lt3T95=2(sfI!LL)**u$n~o%|8xEAlVIOARLW1)`S$Rg z-OaWuW-2L;AI0SD3PFFc&8;s(LDEx#bMOJ%?6J>5!l(|t-2%0>@?rfoU@BdB48jIRLaD4b4FLe#Ch@Hgf0IWgyfZfdcNXG%#wIueLX}GN9hxiF z4CsjyxoKN*bXZGY@hZZXO0I=&e5AlaU9Lb4>CqBqDq{qHIs4K35awk3H6+m9P~&_d zH3sy>-S5kNOqoVKqvrR%o0c5z=fhox*s!Y;vl>V+E_^tk&ijfoUFn8O=SFA0m1Rf; zadokCaW*t?Q#Vz~i4=Ep^T^VeK9*Hlr`JqWAxTkaDXzpQ?n3PA=HT%LaSh?o+KP#x z`Hnx5(~s4hIfuiSN+6gxy3G?qN?*t2ZR2jq!AZR1ca?u+_1kY{P=PE&7SO!}idpj| z$|jumC4}d8Y|6cv=J53yY=6Nxry_rfdGHL^g;A=DA+=evH6-$R*jZn9_sC3SG`QsR zK2R{z?58XnPxT&pxp!OJ&;z47j!CwnS)CVj#(HE?FUOiyH^+YqIw^sR7KV5lYLgTwneiHbZiDr}3#K-?yej3D9@u`|N$JtciPYT7ackqmRPBr71x}!wuXJ~3 zJDC>xA6j3pV&^ERc_(MUz9rMqGGU2o>Bb_r7?u8lfVRLUTo?c=$Zcqrx~YSQPi2B_ zZRLE93ksrH1p~#)o9&SGLt0oy7vASo+>r%UkB^nG`>zc07v5=wi4NXE>xfDJ`Ggp4 za%kth3q}|Kr#1RD#&z;0^wMf^^Mx1--skHA+L#nOli-nA7Hs4SE8&k)Zr)QRT{{`n z97s23J5$LiZmAJ!=tT^z-{E0*$Gq#J(&UCOdY#0E05uLvf_8;f^c5&SO2l_0MpEm~Nys(N=% zjA#m(Uk@d_S61c&Z9JEe>?navgWqoO28Z=!3cvM#Vt=r`HYUe)Eap+hAIk#@C=cZd zKkdwh25efx8;Q5%<80x7&?gJ#QNv9bX!i^&S#lF$FN&%V2RV*eMNR0Px{E@Gk*CE0 z`B8Ov_Qo|j!udYf=Mo(EKyYelji&*G(a-MS`2|479aKT67D(W8MPVnX`*=<#N8$Ix>WzXsV9$0v3dZy zBCL}{Y&5TSAPpojQ4eF^a*~s%~f0Rt32! znz-0=$X*aF8WP!#)SB3PGA z!V2s>-*Rh!6kU|0a+8M%5_R1*$JgXaY|2u`)s3b=@_9leB6sjyjpjpO&7jjM>)Kpg z4_QXny8_qCGvCUogb_~t;!;}a$sBv24hJ>VBub5;92AxEG6Bc2B3%*CeLDLxav0aD zRi{3sImxe69`!>)b|%q5w{w3x1$|Wd`|*|*YGOjYwm15-1c+MxCjX&tbbU;WNPRL0 zVMoXA2aN~s=2}@&0`h|1gj%Kf;>Oj^#9=oUc89*j4~VHP2S#LBSHOaouOB_7BGxSt8o4>d zTBqiqjLM4^8yqv_p@G>&bI-$^=~9iKL1o)^6t>r@7jpYl7gT3r9&}Gr6P5zSD2vKd zF+3gt&z^1#6o4~ZjZ%nti2~D;ZtiQw6rIjEiW`|r=7hHqhTL(VBSctBJ0R)=z+7%n z9i=o~*K9FR3)D{kXU%q|ti3Q{=yLq!n=5Rahq<@cw3$Vvf?qTMg31KCNaF5RofHpu zpILy*x0isu(;2~cg?9=V>u=txh_Io@1r( zB^cQ_Rc3Z5j{o3|@9gK5jeTkPqBOvqz``AJLv9g)=cc&+NPjZ92 zOfP?0&Aw*=j06tKQeT7!_%=W{0Fl-$LaKm}zZ2 zP|v$_pq-gdOZ{~M`$!R#(S8mpVg-N3tSmU6*(a-uMS7;!R9l5j!o1Sgj=B{vcT8x+ z4Ib=*nmO(gF(oIsUEbAY?^pZBEWKBg`+ z5nkjlTj;I~sr&2{&=-mhz6WDgOz>|FqKziHIJYOat}vyyzk<6M)(j#KY)iZBAc+7cHqJB)O_Q0mMM=o?$zNpi z&EZBOS0vy;Qk$XT8BeqdkYSTDC#sp^kxwdkD z;-JZ)z6PseAvo=_b%i@{U3-d7jJa}xXNdcCh+_#WJKMWtrjQe;!W0~tM&V!0J z?&kRo@5_HUchFM#YAgMFC6-G{S_4iZLKI;i;6c#DYgR-v;Tfmi!WUr9p?Jm42QY`TT44_2M(FMs4l@L z<$QrW`H`)1MpBemVkn2G#Ajx7!IP;A5pY~C=V^*>x90k7 zb8^3lSC<|*UEKCN>Fb6>5liBX5?#@5bhGZno>>R%9nd+x-<`)L_u8O8aNoK_EWTp= zp?e;-BYYoBko%dY@Q4*D0(|^~hdG$+?k;~g_%>bk!7h|R?ThM1-rt&q-&*qGUd)wD4a{exA z!DH1%3M{)d5`VVz4w~{Q-P~(&Wyo&5b)IpC>>DFtyl`iP+)i<&N+)(T#2d&QR0gg9 z&asr%=X>!U+&pp=&#n15@mZePjO4o1kf5@&4@|tJwrWFO(`SLG5CT;v^V!KaT&jBI z))N-##hew6Tmm}yPwpeuYZqcSmnQ2fKGHb=L^!@$5A&c`ub(|-F}Qkt(y-2?m*veW zvQ%&>86O#Z6XQV&Wr+PzOMHH0Yrrm=R-g(p)-R~3DcijsUoru2jN}pbmA7kH_&W~io-T!0t&AO=`x$CfcM?b<<+;bMG&FwD zf`4zw=~UlpSK$q%-cd?}A#7L!g(PAR3Xk zki(8y!PU$b0VFmA3m^)H^tv$Btsd5(OZ$H_kC`n#Jt9QVy6_JKl&u={Iu$TS6*tWq zKRZFMy8AseS*=T`ti%#{e81HQ7RH7;^ei+jpT^r)TH8JCBn9S8`@g&kVX$Qf%2#g1d?~z91a>k09xbcgV`7c3=R^x^P zWq8mqxP%ID&>JK6gT*E%ocS_HWVaf9?+xnQk=P>+H;wHod)7c5Y-X{{TRYGSQx7}M z!49_g=)gOXrh z;%?vg+EKcY5?ga*!PW4^Nxx!ThWH2+TxP%uZRjx3&l9sOKCsHqXcscrbBAPJaqbIb zYpeXl>bFXD>$Ztpt!-Efvf5IdMpXoj|?h`G<>Qx9XW{F#5U+nd#Pa(r?PNt_ zfog5^9=5bXMX&^Sz#mH}Co~JJTuuG9VAJg3`BkrY z#TFXht)ENeCk(9OT*k;>XaBVc3hzD1>NlVlsnQ%@e_&+Lfd+yvzCewS60}* z*`RVxKy}JvoUGsvQ5E5(NfE&n$!}^qdRfI!ZK%k-(h1_MA-9k+&^kYXxYDfFgO#vD zc_^_xrH?X~(2NN%32?Hr*S=%bP7sJsKCCtN*Zz{~_B>SEYeJ&?tIXkftTL|k1XpW zGc+)YqYJ*a(aqeDLA!skF%7(~B0J(Uwp`cvXcb^PxbT%kGYKj2BvFeXJ=7X~84KZ+ zx$~A>0?5JrIHRpSb$^Q5s+=av?DcA?>PTf$87o{M&S|dDYVna>xC=8@7%TSMyy?M& zEuPRh8d3oyu*6+#>oOzS816wcbgPu_TfZW^7+vFN8`>zIVB)x`Mh%jaY7vA)nOD=wsVpH8hB(UX4y<6uHDc*g*Q9Fpbj*Qt(OMMa8_2W%p12%F1y*bWU zIgAMze)BkS*D!4Wc2X)EHMSr0j2Qd;>E}^|8eyc({X{5?dHw+9XJ?{QbIa!NCfljd z_Rb=8l=~>@-|M#BGc`*KLPc*Yy@6`0*go4f^HOcdPQ$Q^-8($yc{lpgMEvrSs$cno zWt-WNW!M+Ytj|i0L)gJo;ny??ZRAa<+$3{~lZ8joe=-Tq;uk--La%6Z>{4WVO$B{bM2-gKmMs*422_^-8D8jSk`o_87pv(pyEuKoz1}c=T-Lzjteig`OuQg}DI|SXal@_}70f@G zHiisUY5Kr5LQW?W;r2`gc!>S$$M8<`DGQ%7k6Ve3PZ63m|6V34Ye$=xt#-MjBtA(+ z$||%6`=rz9lyMbw6Ta_=S0G*p-kl6E)rp9?+s7r?OzW>MCH8NHPt8B<=XvFBb8 ze)$roOnjr!O#?*+v&zd*bpuwFi-R|>0-a5){|4xYX1*U#j;+e{l|^;X7SHn{}eqGS(_GtXZ* z8`~aLAz`LM94Cr3_Zx8Q*ETPlRZ1)&1u&KtG)HIYn(zIY%`Do-?!0>{!j6PH9vg_7 z9n!40Z1%*aTA6%Au#bD|J0SSyee#Y1=-xE2b6IdyK&3D?a(#ag+y)|HRCZJ&iN%6c z?|jCSks;(aq2;mzWXwr&$RV2z(=RL3a2 z%XPKH1CTP^R5IpY?h-j~HoduWONvR~#31!|O3sALsMFPFEdukNGG;W;Ws89-8q!#n zU@0vlEr4OHF9XceyyqblzdSFV20OX0Z_(|g$HIv_%(2%mnZ5igTezt?oXI%{f6ZI% z>Lrd{Ux3aXzhc)c8qzbR0mc%-c`(HLncw(t92vTC$Fvk;2HR#tOZOWF*sa z{VnElv(#s=s4F25%8{@zLL=;cuFpfGWPrBI{87X(mVM;wf@oC71^*KL_ zBF$gs{Nl?ke<69sA+5QO>{4Z_6q2{csK6i2VijthH~9*mTyu_X-@L@vR|GcTi?eRc zKR0NUf6b$7*#{$MP`-B6qS(}vyqik=8lRrAam@m|^I=r@5!1#=Aa#VQ*|ThghKs5!t!T!VjNFZ?Vw{oy?0b-{Sc4|8S&jvm>eT0fu5N}##0T^{6* zdJ}T~_er;vN3yB8ac^-yx!zY93`jRI&5-wQJx0n8N(`#iy2yDn)jV|08>s2wtnX|3 zlA2{zVZ|$c;>{{;(!$(lhM8qrawk730(=nVq&fv^iV2c*cmIw(=R-WPe(yuf=q2TGgff%ouW*Mv{26UWw zxrF(o!ayfpeeD(TyMh_ao$5Jr8A*c`M?ivI841jh*C&Eqjh|TANVyb7+ovhDVc`ZX`IA&lHP&+)q${{%AEC-(U>gce`5BCka_ zdFsEhMrZFT{na+SJ- zH*Cu7Z1LpPxPAC5F%xmABmIAEQn^7oB`;!*YZQNj=__&WhQU) z7TY#tDoXeQh5sh1L5Gcc zV*rkng=UPvs#KDuxHLvX_R$(N%fS9`9uaePPXBnV)y#i2x2~WCiX)} zu;uJcL9IuRf@9IZR!<6Ir()VO9b{)hFZf{yt-Kvx86UHSJx^F5_e%^KsjeMJ^2VT+ zRFX(n&ncO59peX~z1?1va9W+G93 z?^A%rqgyeqLYZS|#JnVr?Le7y$jV(v!M0=tVssC1qvSDUFO~j+`{m9=+?v?K5Q%zs zuXK@Gj$%9P=yD!4$vtkQX_AABhNL_5B17;1uG~X@q7v`ytjVK-=)z?DhU%}H+Ly?# zrdCWCM6oJ~8n$mIwW5~C zZOeFglT1-}HtL%ci3=45IEpfG=-K}&dC?PZj+gRNU0x>cro5;My74Z-clmi@h^NL~ z=%m~CW1fuHG_Dwkol`kV>|=&6T!A0bXtHvU?fdO7yl3h-2Qr(AO4@V&`QUX%9rqxw zSpMhvtbEZKW&V4`{jIk_!>!f^V;;rQsWob8Nv==X1|%>|N0Os61EcC5tpaHI-PS90 zux{(b;BkB2kXYxC5iYCj&vH6Rw*SEiQ$4}sQrS1M8+Nkn>7K#p)3o`dt!{Gt(pE6j z(me%5a6fC!Vn`-39xHtbeBNpiQ7l-a*JeqJA(jZit zaZ*yb%{wZqoi?Q=CR;hqQhtqgt;!>653T}`UC@d=%$Uz6tww>`mT`a4RL|<7;FlO| zNM$ssT6GONqu-x64{K+Vw@=Bu9^%^X`1;j+sfK)tQ`v-hycqVSMxCO>%F73H^0?Ju zc01nWv90b_aS64(furd{>4fhtDn`C(XvFknf=aoUa?~_x4n8WfuwnaOiy+xsGB!FN zlZ{nfmJGCoqpehgBJMxr9uVr}VoTY#7|6e%7zD8~w)1as!?E=_tWa$gzdn0WEu~-q z3nN4wh0LbHo~jR~@I7H$jkc_S^jd3+6I*hw3dR}|a=3@0f3fXhB_mP*S{^pOYWi>aP6QeW>o$iEnZ&o+Lw@}{0^mheJIXBM zK~B5t)3s&;_86b9wQGhg^agL0w9Z*Gj%g=@{&_y>y7}LI+$yHmVL!?l@RKqOSf%O^%K25e^?mTk=rWxl=P$KR5 zzYLL_x99US1y?uirqa$o3?5}491VduD_QLsO0M(XVV7Co)h!O0#D^G2G$EI&c48bG zXgsMoJIQe!v&bf9kqGM+=ofj?C-wJ+#T6mXd0#LPo=JEU?yqYne={m0&8 z^8go;&52}=O!0F+(n08~TFDziOrLT}lbOMTF2iT$D{D8+4GP@20H?IWif5amltS2$ zvqlEkHT{d{tmA*@b?s6a0KS0zvrb~2z^44BEp=k}`EYAJ1knuCCA^0}ME`QrX6Ak6 zvXc6^%y-woJfm44JonMzj4_{gn)s4#n%Ls-RSs%?u%x>Ur_#?k>n*Ykx#NV_EDV%; zzA;UP_vdnz{X@VMrcfz+8YE!C6Y8@G{>J3y4VR83taU(K%;#)yE zQW7vC^BBXTnNHgC?pP6fgwSd1m$S75pmB02H<3@LMWR5H zrCDHq3efaSOBqE4N%0x7(mNr{284y^)zSBr)85+|DuuRTA_hU!HZ%5)hzJP*oG%F< z0onjS2_~lQejr-b{rH?ZG}fyJP*UjJ&zpd{l~Uaa>*jeY!D_R_3g+klKA)6q9=?WV z7TW;_yf|+4jeB6XWuoSIeQ;-W%lJf?-py2oT*%grq^V7eNMsYgGqP)!j8V z4_{n6r^wLqD8+oDFI-TlyizVlxifBy-O;uATRqSODVP|W;fQ$9wey?-ogO?}ao2rL zjrf3!92xe!_GJUSny``qYaiC-NS3C=R&*n3@Nb@K853jh;niOR5qDlEsko-nOShln8AMi;zr-t3*Lpw+ zZqXO+kK8i4rZZ=G+t=SpL+meS8A>a@`ZDCHG44|x=n|_%`q~^Ee98P5tCes z$?*#kkV|ylIj`G`egiJX+=CK2BhDcqAA)%J-N%nVt9c2H6qw)IVNLgx|x!E~PwTHQdpP|3q**^)7b_~q! zUD=(?r1hK64^i>Nn{x77tLw|D4PUYU7b^_Z^LqldC^-h$UTfzuS6*fp#?JPuGg7O< z%2l}&%CY=*qWlg!zy3<>5L_quXCqi;5PNF5Uwhhgrv&JeIlpuVZ#NhhlYM+^mifa;#_j#Z{Rd~7zX=WkNNWfKyvkQ|}#;e-?K8bxb=f;SJPUj@Td^+Rid4kd~R$@ID8kTzU2@)7v?_s)SK(W?N3Kw zyF9o(@R}-!d(j;MQ}wld%4JzX5kA#MkuBv-b>4b~Q+i0%Sjt0Q^V8?4-hp~gtM9f; zRg?ppmwGoU3c!(ZCBx8-drBw*&7hPimf^J`>ZsJ1#hWS8x=>@tQnEa z`Yx0k$8a8W*N)YnlE6<451qlIUbE+fVDF*!(-}EBPq};E9T`97vuA(j10DHhvJ)>W zGs-f(k}^yVjlqhnG2P z&IlEHL_2S&^O7n8&b;O9I`hthit^_mT?$k0t};N>Yvxhz%8-a-UXk@W$Bv}q9Ne7P zJ+nEod#L@XzA7&1H{nP)TO42=_T#MFZqcGF)~NhY39E70!l}-6VgcXnv|?3xHXfp@ zKQt;K{S88hCnuiQwoLvve)GXR0?Bli;lXfqEG%;&?dm>|wBvlR&Xv`EPk~A3HzR_| zV_ShlG)Xukc#0&t5Nzi`SEN;iVISI~>+WG1x; zW=3jBJ<_nP>h9fn_3GW1bC=RwMZR5RG7Dq~&uf-;!O6W{d^^AX!S&$k-O5#mJPol#dhI-`v3 z)P1K-p_)sj7nk1)OsM%>U8@N6ICi4cNTOAAn)ri1-7Dgb{WDU!|GkhR zpQ=1Xs9id>BaC>R2%H+Ta}O11{B-BJReDs83qDVgas`gKD~E|A>&bbLbmMU^;{J}D z{~5UN@lof9m2=FxW4F!FA${*FyQ0dl+|`dVmgn=M;cUM;Pb6L)ot;km0%vb=kAdYV zm)6}Ky9A!cap>&Lo+4IXg_hcK-AZJ>N`de6!FqI4+gBp?jE$UQYWu)5CH(fUm(K@D zM{snsL*@`EGVX|(BAZGlyjC(vpS@8<`;}apGnVZ{&=onyag=^)eckg=Ju3+_4xr?y zaBUopdL9sI!-3~aR@1REuxtd~W@#MRfMS1%u&Yg$BIfEE%MdKjP!5eGe=9ihjpto5 z%aLm=>(-5NP{yUcr_}gLFFx=qXb{WfY_}NZAQo=IXoA^fSOkU^`AxWlP-kKqB)FOzxasN^eE(RXxk%*iMdR z&V=r|VY%C5I46l3hu2m)WYRtZuhU+K`*8PDjpLj$XI#@GG5eaeuFTBu(r5mdZKfUT zG4ralZa<2+J955367&rlNgx00o(Nnbe(sne<4)Getwc@tj+D-h-wBScjwoV1WRs%;&(*zRmI6lBv7ecr3Ut@(XgE^k zoV8f*>`@|e9S1R9JA#J99PLoY-Z`R{$m!@qojV)z;ed6n9MkF^`8qi%I_t+|8?Tk4 zW~?PYFK(UOTB`d@dk~a!bHF%aO^?6|5uWX@E2E<6Gyldu`#$xR`|L*A8BE+0Ip6U0 zJ?II4f4F@5<;C|zs~ZtTD8iN^tex=``CEyGuC`kNl2CPBwMp$$>iSGys;!F7yXbkf zo-;_#4a=yy)aRMN8y8om>ex%oM<=hwNNu?+!4Y%TkLz6@GgxhREs(6@bteVA+o!5? zqIg><<$u z-AabXK$#BqBx{{HOLLXxXC;EJ>QFZ~$BO);jLNv^B1O?zhpJBDEaW_Sc(F`*hf~A= z+q3aWVm8y-c_KDPiW{)zcrnb^GYZ&b}92A*Honlje@t zqUIfPzM)0XH*8_}e}BF_-(JP`=Jh)p$=;yI5t1z|W7#SVo+G_#e8d?@Skgg}$^kcL zDBGz^nF^h#cZ#TEA63LXk!6-qq}=tB95QDi;fTs;C}Y8fD0zS@^6rcy17*f1mAiXT zhM)DT<{=r>J&CwOBC4Hs+($}1uljS5?D0v2JEh2v>!d5TL#Y1U{J6;fJ>dwhB4c=7 z5kwcERRj}%7u_Yqjd8xOavp5`K&KqIXl%XX=vdAm%Bh{kt}u6nBUB z|NQsy&tHH4X*>VzkC#(zt90a>hpXG5oFi$@oJ{xnZ0k`G-A-F~M468K zj9qZ$t9Iq7pzGL3`-rs8s@;alE_e47UHd<~Pk5@&!!2-adiOQy;z{-%>GIc(H)N{c bmv`_Pp8};IX{t%_00000NkvXXu0mjfYNi + +## Αποκεντρωμένη ή Παραδοσιακή Τραπεζική {#defi-vs-tradfi} + +Ένας από τους καλύτερους τρόπους για να δούμε την προοπτική της DeFi είναι να κατανοήσουμε τα προβλήματα που υπάρχουν σήμερα. + +- Ορισμένοι δεν έχουν πρόσβαση ώστε να αποκτήσουν τραπεζικό λογαριασμό ή να κάνουν χρήση χρηματοοικονομικών υπηρεσιών. +- Η έλλειψη πρόσβασης σε χρηματοοικονομικές υπηρεσίες μπορεί να εμποδίσει τους ανθρώπους να βρουν εργασία. +- Οι χρηματοοικονομικές υπηρεσίες μπορούν να παρεμποδίσουν τις πληρωμές σας. +- Τα προσωπικά σας δεδομένα μπορούν να χρησιμοποιηθούν από τις χρηματοοικονομικές υπηρεσίες. +- Οι κυβερνήσεις και τα κεντρικά ιδρύματα έχουν την δυνατότητα να κλείσουν τις αγορές κατα βούληση. +- Οι ώρες συναλλαγών συχνά περιορίζονται στις εργάσιμες ώρες της συγκεκριμένης χρονικής ζώνης. +- Οι μεταφορές χρημάτων μπορεί να χρειαστούν αρκετές ημέρες λόγω εσωτερικών διαδικασιών από υπαλλήλους. +- Οι χρηματοοικονομικές υπηρεσίες κρατούν προμήθειες, επειδή οι ενδιάμεσες υπηρεσίες ζητούν το οικονομικό μερίδιό τους. + +### Σύγκριση {#defi-comparison} + +| DeFi | Παραδοσιακή Τραπεζική | +| ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Διατηρείτε οι ίδιοι τα χρήματά σας. | Τα χρήματά σας κατέχονται από εταιρείες. | +| Ελέγχετε πού στέλνονται τα χρήματά σας και πώς δαπανώνται. | Πρέπει να εμπιστεύεστε τις εταιρείες να μην κακοδιαχειρίζονται τα χρήματά σας, όπως ο δανεισμός σε ριψοκίνδυνους δανειολήπτες. | +| Οι μεταφορές κεφαλαίων πραγματοποιούνται σε λίγα λεπτά. | Οι πληρωμές για να εκτελεστούν μπορεί να χρειαστούν ημέρες λόγω μη αυτόματων διαδικασιών. | +| Η δραστηριότητα συναλλαγής είναι ανώνυμη. | Η οικονομική δραστηριότητα συνδέεται αυτόματα με την ταυτότητά σας. | +| Η DeFi είναι ανοιχτή σε οποιονδήποτε. | Πρέπει να κάνετε αίτηση ώστε να χρησιμοποιήσετε τις χρηματοπιστωτικές υπηρεσίες. | +| Οι αγορές είναι πάντα ανοικτές. | Οι αγορές κλείνουν επειδή οι υπάλληλοι έχουν ωράριο εργασίας. | +| Είναι φτιαγμένη ώστε να υπάρχει διαφάνεια και ο καθένας μπορεί να δει τα δεδομένα ενός προϊόντος και να επιθεωρήσει πώς λειτουργεί το σύστημα. | Τα χρηματοπιστωτικά ιδρύματα είναι κλειστά βιβλία: δεν μπορείτε να ζητήσετε να δείτε το ιστορικό των δανείων τους, το αρχείο των περιουσιακών τους στοιχείων που διαχειρίζονται και ούτω καθεξής. | + + + Εξερευνήστε εφαρμογές DeFi + + +## Η αρχή έγινε με το Bitcoin... {#bitcoin} + +Από πολλές απόψεις, το Bitcoin ήταν η πρώτη εφαρμογή DeFi. Το Bitcoin σας επιτρέπει να κατέχετε πραγματικά και να ελέγχετε την αξία του και να τη στέλνετε οπουδήποτε στον κόσμο. Αυτό επιτυγάνεται παρέχοντας μία λύση για ένα μεγάλο αριθμό ανθρώπων, που δεν εμπιστεύονται ο ένας τον άλλον, να συμφωνήσουν για ένα βιβλίο λογαριασμών χωρίς την ανάγκη ενός αξιόπιστου ενδιάμεσου φορέα. Το Bitcoin είναι ανοιχτό σε όλους και κανείς δεν έχει την εξουσία να αλλάξει τους κανόνες του. Οι κανόνες του Bitcoin, όπως η σπανιότητα και η διαφάνειά του, είναι γραμμένοι πάνω στην τεχνολογία. Δεν είναι σαν την παραδοσιακή χρηματοδότηση όπου οι κυβερνήσεις μπορούν να εκτυπώσουν χρήματα και να υποτιμούν τις αποταμιεύσεις σας και οι εταιρείες που μπορούν να κλείσουν τις αγορές. + +Το Ethereum βασίζεται σε αυτό. Όπως και στο Bitcoin, οι κανόνες δεν μπορούν να αλλάξουν για εσάς και όλοι έχουν πρόσβαση. Ακόμη, καθιστά αυτό το ψηφιακό χρήμα ικανό να προγραμματιστεί για να μπορείτε να το αξιοποιήσετε πέρα από την αποθήκευση και την αποστολή του, χρησιμοποιώντας τα [έξυπνα συμβόλαια](/glossary#smart-contract). + + + +## Προγραμματιζόμενα χρήματα {#programmable-money} + +Ακούγεται παράξενο... «γιατί να θέλω να προγραμματίσω τα χρήματά μου»; Ωστόσο, αυτό είναι περισσότερο μια προεπιλεγμένη δυνατότητα των ψηφιακών στοιχείων στο Ethereum. Οποιοσδήποτε μπορεί να προγραμματίσει κάτι λογικό σε πληρωμές. Έτσι, μπορείτε να πάρετε τον έλεγχο και την ασφάλεια του Bitcoin αναμειγνύοντας τις υπηρεσίες που παρέχονται από τα χρηματοπιστωτικά ιδρύματα. Αυτό σας επιτρέπει να κάνετε διάφορα με τα κρυπτονομίσματα που δεν μπορείτε να κάνετε με το Bitcoin, όπως να δανείσετε και να δανειστείτε, προγραμματισμό πληρωμών, επενδύσεις σε κεφάλαια και πολλά άλλα. + + +

    + + Εξερευνήστε εφαρμογές DeFi + + + +## Τι μπορείτε να κάνετε με τη DeFi; {#defi-use-cases} + +Υπάρχει μια αποκεντρωμένη εναλλακτική λύση για τις περισσότερες χρηματοπιστωτικές υπηρεσίες. Αλλά το Ethereum δημιουργεί επίσης ευκαιρίες για τη δημιουργία εντελώς νέων χρηματοπιστωτικών προϊόντων. Πρόκειται για μια συνεχώς αυξανόμενη λίστα. + +- [Στείλτε χρήματα παγκοσμίως](#send-money) +- [Μεταδώστε χρήματα παγκοσμίως](#stream-money) +- [Πρόσβαση σε νομίσματα σταθερής αξίας](#stablecoins) +- [Κεφάλαια δανεισμού με εγγύηση](#lending) +- [Δανεισμός χωρίς εγγύηση](#flash-loans) +- [Αποταμίευση κρυπτονομισμάτων](#saving) +- [Συναλλαγές ψηφιακών στοιχείων](#swaps) +- [Αυξήστε το χαρτοφυλάκιό σας](#investing) +- [Χρηματοδότηση των ιδεών σας](#crowdfunding) +- [Αγορά ασφαλιστικών υπηρεσιών](#insurance) +- [Διαχείριση του χαρτοφυλακίου σας](#aggregators) + + + +### Στείλτε χρήματα παγκοσμίως γρήγορα {#send-money} + +Ως blockchain, το Ethereum έχει σχεδιαστεί για την αποστολή συναλλαγών με ένα ασφαλή και παγκόσμιο τρόπο. Όπως το Bitcoin, το Ethereum κάνει την αποστολή χρημάτων σε όλο τον κόσμο τόσο εύκολα, όπως την αποστολή email. Απλά εισαγάγετε το [όνομα ENS](/nft/#nft-domains) των παραληπτών σας (όπως bob.eth) ή τη διεύθυνση του λογαριασμού τους από το πορτοφόλι σας και η πληρωμή σας θα πάει απευθείας σε αυτούς σε μερικά λεπτά (συνήθως). Για να στείλετε ή να λάβετε πληρωμές, θα χρειαστείτε ένα [πορτοφόλι](/wallets/). + + + Δείτε τις dapps πληρωμών + + +#### Στείλτε χρήματα παγκοσμίως... {#stream-money} + +Μπορείτε επίσης να στείλετε χρήματα μέσω του Ethereum. Αυτό σας επιτρέπει να πληρώσετε το μισθό κάποιου σε δευτερόλεπτα, δίνοντάς του τη δυνατότητα να έχει πρόσβαση στα χρήματά του και να τα αξιοποιήσει όπως θέλει. Ή νοικιάστε κάτι σε δευτερόλεπτα όπως ένα ντουλάπι αποθήκευσης ή ένα ηλεκτρικό σκούτερ. + +Αν δε θέλετε να στείλετε ή να μεταδώσετε [ETH](/eth/) λόγω της μεταβαλλόμενης η αξία του, υπάρχουν εναλλακτικά νομίσματα στο Ethereum όπως τα κρυπτονομίσματα σταθερής αξίας. + + + +### Πρόσβαση σε νομίσματα σταθερής αξίας {#stablecoins} + +Η μεταβλητότητα των κρυπτονομισμάτων είναι ένα πρόβλημα για πολλά χρηματοοικονομικά προϊόντα και γενικές δαπάνες. Η κοινότητα του DeFi έλυσε αυτό το πρόβλημα με τα κρυπτονομίσματα σταθερής αξίας. Η αξία τους παραμένει συνδεδεμένη με ένα άλλο περιουσιακό στοιχείο, συνήθως ένα δημοφιλές νόμισμα όπως τα δολάρια. + +Νομίσματα όπως το Dai ή το USDC έχουν σταθερή τιμή σε σχέση με το δολάριο. Αυτό τα καθιστά ιδανικά για κέρδη ή λιανικό εμπόριο. Πολλοί στη Λατινική Αμερική χρησιμοποίησαν τα κρυπτονομίσματα σταθερής αξίας ως τρόπο προστασίας των αποταμιεύσεων τους, λόγω της μεγάλης αβεβαιότητας με τα νομίσματα που έχουν εκδοθεί από την κυβέρνηση. + + + Περισσότερα για τα κρυπτονομίσματα σταθερής αξίας + + + + +### Δανεισμός {#lending} + +Ο δανεισμός χρημάτων από αποκεντρωμένους παρόχους προσφέρεται με δύο κύριους τρόπους. + +- Το «peer-to-peer», που σημαίνει ότι ένας δανειολήπτης θα δανειστεί απευθείας από ένα συγκεκριμένο δανειστή. +- Το «pool-based» όπου οι δανειστές παρέχουν κεφάλαιο (ρευστότητα) σε μια δεξαμενή από την οποία μπορούν να δανειστούν οι δανειολήπτες. + + + Δείτε τις dapps δανεισμού + + +Υπάρχουν πολλά πλεονεκτήματα με τη χρήση ενός αποκεντρωμένου δανειστή... + +#### Δανειοληψία με ιδιωτικότητα {#borrowing-privacy} + +Σήμερα, ο δανεισμός και το δάνειο χρημάτων αφορούν τα άτομα που εμπλέκονται. Οι τράπεζες πρέπει να γνωρίζουν αν είναι δυνατόν να εξοφληθεί ένα δάνειο πριν να το παρέχουν. + +Ο αποκεντρωμένος δανεισμός λειτουργεί χωρίς κανένα από τα δύο μέρη να χρειάζεται να ταυτοποιηθεί. Αντίθετα, ο δανειολήπτης πρέπει να δηλώσει εγγυήσεις που θα λάβει αυτόματα ο δανειστής εάν το δάνειό του δεν αποπληρωθεί. Ορισμένοι δανειστές δέχονται ακόμη και NFT ως εγγύηση. Τα NFT είναι μια πράξη σε ένα μοναδικό περιουσιακό στοιχείο, όπως μια ζωγραφική. [Περισσότερα για τα NTF](/nft/) + +Αυτό σας επιτρέπει να δανειστείτε χρήματα χωρίς ελέγχους πιστοληπτικής ικανότητας ή την υποβολή προσωπικών δεδομένων. + +#### Πρόσβαση σε παγκόσμια κεφάλαια {#access-global-funds} + +Όταν χρησιμοποιείτε έναν αποκεντρωμένο δανειστή έχετε πρόσβαση σε κεφάλαια που κατατίθενται από όλο τον κόσμο, όχι μόνο τα κεφάλαια που ελέγχει η τράπεζα ή το ίδρυμα. Αυτό καθιστά τα δάνεια πιο προσβάσιμα και βελτιώνει τα επιτόκια. + +#### Φορολογικές αποδόσεις {#tax-efficiencies} + +Ο δανεισμός μπορεί να σας δώσει πρόσβαση σε κεφάλαια χωρίς να χρειάζεται να πουλήσετε τα ETH σας (ένα φορολογητέο γεγονός). Αντίθετα, μπορείτε να χρησιμοποιήσετε τα ETH ως εγγύηση για ένα δάνειο με κρυπτονόμισμα σταθερής αξίας. Αυτό σας προσφέρει τη ρευστότητα μετρητών που χρειάζεστε και σας επιτρέπει να κρατήσετε τα ETH σας. Τα κρυπτονομίσματα σταθερής αξίας είναι ψηφιακά στοιχεία που είναι ποιο σταθερά όταν χρειάζεστε μετρητά, καθώς δε μεταβάλλεται η αξία τους όπως το ETH. [Περισσότερα για τα κρυπτονομίσματα σταθερής αξίας](#stablecoins) + +#### Στιγμιαία δάνεια {#flash-loans} + +Τα στιγμιαία δάνεια είναι μια πιο πειραματική μορφή αποκεντρωμένου δανεισμού που σας επιτρέπουν να δανειστείτε χωρίς εγγύηση ή παροχή προσωπικών πληροφοριών. + +Δεν είναι ευρέως προσβάσιμα σε μη τεχνικούς χρήστες αυτή τη στιγμή, αλλά αναμένεται να χρησιμοποιηθούν από όλους στο μέλλον. + +Λειτουργεί κατά βάση ότι το δάνειο λαμβάνεται και εξοφλείται στο πλαίσιο της ίδιας συναλλαγής. Αν δεν μπορεί να αποπληρωθεί, η συναλλαγή επανέρχεται σαν να μη συνέβη ποτέ. + +Τα κεφάλαια που χρησιμοποιούνται συχνά διατηρούνται σε δεξαμενές ρευστότητας (μεγάλες δεξαμενές κεφαλαίων που χρησιμοποιούνται για δανεισμό). Εάν δε χρησιμοποιηθούν σε μια δεδομένη στιγμή, αυτό δημιουργεί μια ευκαιρία για κάποιον να δανειστεί αυτά τα κεφάλαια, διεξάγοντας επιχείρηση μαζί τους και να τους αποπληρώσει πλήρως κυριολεκτικά την ίδια στιγμή που τον δανείζουν. + +Αυτό σημαίνει ότι απαιτούνται αρκετά λογιστικά να συμπεριληφθούν, σε μια πολύ εξατομικευμένη συναλλαγή. Ένα απλό παράδειγμα είναι όταν κάποιος λαμβάνει ένα στιγμιαίο δάνειο ενός ψηφιακού στοιχείου σε μια τιμή, ώστε να μπορεί να το πουλήσει σε διαφορετικό ανταλλακτήριο υψηλότερη τιμή. + +Έτσι, σε μία μόνο συναλλαγή, συμβαίνουν τα εξής: + +- Δανειζόσαστε το ποσό X $asset στο $1.00 από το ανταλλακτήριο Α +- Πουλάτε τα Χ $asset στο ανταλλακτήριο Β για $1.10 +- Αποπληρώνετε το δάνειο στο ανταλλακτήριο Α +- Κρατάτε το κέρδος μείον τις κρατήσεις της συναλλαγής + +Αν στο ανταλλακτήριο B έπεσε ξαφνικά η αξία και ο χρήστης δεν ήταν σε θέση να αγοράσει αρκετά για να καλύψει το αρχικό δάνειο, η συναλλαγή απλά θα αποτύχει. + +Για να μπορέσετε να εφαρμόσετε το παραπάνω παράδειγμα στον παραδοσιακό χρηματοπιστωτικό κόσμο, θα χρειαστείτε ένα σεβαστό χρηματικό ποσό. Αυτές οι στρατηγικές κέρδους είναι προσβάσιμες μόνο σε εκείνους με τον υπάρχοντα πλούτο. Τα στιγμιαία δάνεια αποτελούν παράδειγμα ενός μέλλοντος όπου η κατοχή χρημάτων δεν αποτελεί απαραίτητα προϋπόθεση για κέρδος χρημάτων. + +[Περισσότερα για τα στιγμιαία δάνεια](https://aave.com/flash-loans/) + + + +### Αρχίστε να εξοικονομείτε με κρυπτονομίσματα {#saving} + +#### Δανεισμός {#lending} + +Μπορείτε να κερδίσετε τόκους με τα κρυπτονομίσματά σας, δανείζοντάς τα και παρακολουθώντας το κεφάλαιό σας να αυξάνεται σε πραγματικό χρόνο. Αυτή τη στιγμή τα επιτόκια είναι πολύ υψηλότερα από ότι είναι πιθανό να βρείτε στην τοπική σας τράπεζα (αν είστε αρκετά τυχεροί ώστε να έχετε πρόσβαση σε μία από αυτές). Δείτε ένα παράδειγμα: + +- Δανείζετε τα 100 Dai σας, ένα [κρυπτονόμισμα σταθερής αξίας](/stablecoins/), σε ένα προϊόν όπως το Aave. +- Λαμβάνετε 100 Aave Dai (aDai) τα οποία αντιστοιχούν σε ψηφιακό στοιχείο που δηλώνει πως δανείσατε τα Dai σας. +- Τα aDai σας θα αυξηθούν με βάση το επιτόκιο και μπορείτε να δείτε το υπόλοιπό σας να αυξάνεται στο πορτοφόλι σας. Ανάλογα το ετήσιο ποσοστό επιτοκίου, το υπόλοιπο του πορτοφολιού σας θα εμφανίζεται σαν 100.1234 μετά από λίγες ημέρες ή ακόμα και ώρες! +- Μπορείτε να κάνετε ανάληψη ένα ποσό των κανονικών Dai που είναι ίσο με το υπόλοιπό aDai σας ανά πάσα στιγμή. + + + Δείτε dapps για δανεισμό + + +#### Κληρώσεις λαχείων χωρίς απώλεια {#no-loss-lotteries} + +Οι κληρώσεις λαχείων χωρίς απώλεια, όπως το PoolTogether είναι ένας διασκεδαστικός και καινοτόμος νέος τρόπος για να εξοικονομήσετε χρήματα. + +- Αγοράζετε 100 εισιτήρια χρησιμοποιώντας 100 Dai. +- Λαμβάνετε 100 plDai που αντιπροσωπεύουν τα 100 εισιτήρια σας. +- Αν επιλεγεί ένα από τα εισιτήρια σας, το υπόλοιπό σας plDai θα αυξηθεί κατά το ποσό του βραβείου. +- Αν δεν κερδίσετε, τα 100 plDai περνούν στην κλήρωση της επόμενης εβδομάδας. +- Μπορείτε να κάνετε ανάληψη ένα ποσό των κανονικών Dai που είναι ίσο με το υπόλοιπό plDai σας ανά πάσα στιγμή. + +Το έπαθλο δημιουργείται από όλους τους τόκους που προκύπτουν από τη χορήγηση των καταθέσεων εισιτηρίων, όπως στο παραπάνω παράδειγμα δανειοδότησης. + + + Δοκιμάστε το PoolTogether + + + + +### Ανταλλαγή κρυπτονομισμάτων {#swaps} + +Υπάρχουν χιλιάδες ψηφιακά στοιχεία στο Ethereum. Τα αποκεντρωμένα χρηματιστήρια (DEXs) σας επιτρέπουν να ανταλλάξετε διαφορετικά ψηφιακά στοιχεία όποτε θέλετε. Δε χάνετε τον έλεγχο των στοιχείων σας. Αυτό είναι σαν να χρησιμοποιείτε ένα ανταλλακτήριο συναλλάγματος όταν επισκέπτεστε μια διαφορετική χώρα. Αλλά, η έκδοση DeFi ποτέ δεν κλείνει. Οι αγορές είναι ανοιχτές 24/7, 365 ημέρες το χρόνο και η τεχνολογία εγγυάται ότι θα υπάρχει πάντα κάποιος να αποδεχθεί τη συναλλαγή. + +Για παράδειγμα, εάν θέλετε να χρησιμοποιήσετε τη λοταρία χωρίς απώλειες PoolTogether (που περιγράφεται παραπάνω), θα χρειαστείτε ένα κρυπτονόμισμα όπως το Dai ή το USDC. Αυτά τα DEX σάς επιτρέπουν να ανταλλάξετε τα ETH σας με αυτά τα κρυπτονομίσματα και να τα επιστρέψετε ξανά με την ολοκλήρωση. + + + Δείτε ανταλλακτήρια κρύπτο + + + + +### Προχωρημένες συναλλαγές {#trading} + +Υπάρχουν περισσότερο προηγμένες επιλογές για έμπορους που θα προτιμούσαν λίγο περισσότερο έλεγχο. Εντολές limit, μόνιμες, συναλλαγές δανείου και άλλα είναι όλα δυνατά. Με τις αποκεντρωμένες συναλλαγές έχετε πρόσβαση σε μια παγκόσμια ρευστότητα, η αγορά δεν κλείνει ποτέ και έχετε πάντα τον έλεγχο των περιουσιακών σας στοιχείων. + +Όταν χρησιμοποιείτε ένα κεντρικό χρηματιστήριο, πρέπει να καταθέτετε τα περιουσιακά σας στοιχεία πριν από τη συναλλαγή και να τα εμπιστεύεστε σε αυτό. Ενώ τα περιουσιακά σας στοιχεία κατατίθενται, διατρέχουν κίνδυνο, καθώς τα κεντρικά ανταλλακτήρια αποτελούν ελκυστικούς στόχους για τους χάκερ. + + + Δείτε εφαρμογές συναλλαγών + + + + +### Αυξήστε το χαρτοφυλάκιό σας {#investing} + +Υπάρχουν προϊόντα διαχείρισης κεφαλαίων στο Ethereum που θα προσπαθήσουν να αυξήσουν το χαρτοφυλάκιό σας με βάση μια στρατηγική της δικής σας επιλογής. Αυτό είναι αυτόματο, ανοιχτό σε όλους και δε χρειάζεται ανθρώπινη μεσολάβηση που θα περικόψει τα κέρδη σας. + +Ένα καλό παράδειγμα είναι το [ταμείο DeFi Pulse Index (DPI)](https://defipulse.com/blog/defi-pulse-index/). Αυτό είναι ένα αμοιβαίο κεφάλαιο που ισορροπεί ξανά αυτόματα για να διασφαλίσει ότι το χαρτοφυλάκιό σας περιλαμβάνει πάντα [τα κορυφαία κρυπτονομίσματα DeFi ανά κεφαλαιοποίηση αγοράς](https://www.coingecko.com/en/defi). Δε χρειάζεται ποτέ να διαχειριστείτε καμία από τις λεπτομέρειες και μπορείτε να κάνετε ανάληψη από το ταμείο όποτε θέλετε. + + + Δείτε εφαρμογές επενδύσεων + + + + +### Χρηματοδότηση των ιδεών σας {#crowdfunding} + +Το Ethereum είναι μια ιδανική πλατφόρμα για crowdfunding: + +- Οι πιθανοί χρηματοδότες μπορούν να προέλθουν από οπουδήποτε. Το Ethereum και τα κρυπτονομίσματά του είναι ανοιχτά σε οποιονδήποτε και οπουδήποτε στον κόσμο. +- Είναι διαφανές, ώστε οι έρανοι να μπορούν να αποδείξουν πόσα χρήματα έχουν συγκεντρωθεί. Μπορείτε ακόμη και να εντοπίσετε πώς δαπανώνται τα κεφάλαια αργότερα. +- Οι έρανοι μπορούν να ορίσουν αυτόματες επιστροφές χρημάτων εάν, για παράδειγμα, υπάρχει συγκεκριμένη προθεσμία και ελάχιστο ποσό που δε θα συμπληρωθεί. + + + Δείτε εφαρμογές χρηματοδότησης + + +#### Τετραγωνική χρηματοδότηση {#quadratic-funding} + +Το Ethereum είναι λογισμικό ανοιχτού κώδικα και μεγάλο μέρος της δουλειάς μέχρι στιγμής έχει χρηματοδοτηθεί από την κοινότητα. Αυτό οδήγησε στην ανάπτυξη ενός ενδιαφέροντος νέου μοντέλου συγκέντρωσης κεφαλαίων: της τετραγωνικής χρηματοδότησης. Αυτό έχει τη δυνατότητα να βελτιώσει τον τρόπο με τον οποίο χρηματοδοτούμε όλα τα είδη δημόσιων αγαθών στο μέλλον. + +Η τετραγωνική χρηματοδότηση διασφαλίζει ότι τα έργα που λαμβάνουν τη μεγαλύτερη χρηματοδότηση, είναι αυτά με τη μεγαλύτερη ζήτηση. Με άλλα λόγια, έργα που μπορούν να βελτιώσουν τη ζωή των περισσότερων ανθρώπων. Δείτε πώς λειτουργεί: + +1. Υπάρχει μια αντίστοιχη δεξαμενή δωρεών. +2. Ξεκινά ένας γύρος δημόσιας χρηματοδότησης. +3. Οι χρήστες μπορούν να προωθήσουν ένα έργο δωρίζοντας κάποια χρήματα. +4. Μόλις ολοκληρωθεί ο γύρος, η αντίστοιχη δεξαμενή διανέμεται στα έργα. Εκείνοι με την περισσότερη ζήτηση λαμβάνουν το υψηλότερο ποσό από την αντίστοιχη δεξαμενή. + +Αυτό σημαίνει ότι το Έργο Α με τις 100 δωρεές του 1 δολαρίου θα μπορούσε να καταλήξει με περισσότερη χρηματοδότηση από το Έργο Β με μία μόνο δωρεά των 10.000 δολαρίων (ανάλογα με το μέγεθος της αντίστοιχης δεξαμενής). + +[Περισσότερα για την τετραγωνική χρηματοδότηση](https://wtfisqf.com) + + + +### Ασφαλιστικές υπηρεσίες {#insurance} + +Η αποκεντρωμένη ασφάλιση στοχεύει να κάνει τη δυνατότητα ασφάλισης φθηνότερη, ταχύτερη στην πληρωμή και πιο διαφανή. Με περισσότερη αυτοματοποίηση, η κάλυψη είναι πιο προσιτή και οι πληρωμές είναι πολύ πιο γρήγορες. Τα δεδομένα που χρησιμοποιούνται για την απόφαση σχετικά με την αξίωσή σας είναι απολύτως διαφανή. + +Τα προϊόντα Ethereum, όπως κάθε λογισμικό, μπορεί να υστερούν από σφάλματα και εκμεταλλεύσεις. Έτσι, αυτή τη στιγμή πολλά προϊόντα ασφάλισης στον χώρο, επικεντρώνονται στην προστασία των χρηστών τους από την απώλεια κεφαλαίων. Ωστόσο, υπάρχουν έργα που αρχίζουν να δημιουργούν κάλυψη για οτιδήποτε μπορεί να μας συμβεί. Ένα καλό παράδειγμα αυτού είναι η κάλυψη Crop της Etherisc που στοχεύει να [προστατέψει τους μικροκαλλιεργητές στην Κένυα από ξηρασίες και πλημμύρες](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc). Η αποκεντρωμένη ασφάλιση μπορεί να προσφέρει φθηνότερη κάλυψη για τους αγρότες που συχνά αποτιμώνται από την παραδοσιακή ασφάλιση. + + + Δείτε εφαρμογές ασφάλισης + + + + +### Aggregators και διαχειριστές πορτοφολιού {#aggregators} + +Με τόσα πολλά που συμβαίνουν, θα χρειαστείτε έναν τρόπο να παρακολουθείτε όλες τις επενδύσεις, τα δάνεια και τις συναλλαγές σας. Υπάρχουν πολλά προϊόντα που σας επιτρέπουν να συντονίζετε όλη τη δραστηριότητά σας στο DeFi από ένα μέρος. Αυτή είναι η ομορφιά της ανοιχτής αρχιτεκτονικής του DeFi. Οι ομάδες μπορούν να δημιουργήσουν διεπαφές όπου δεν μπορείτε απλώς να δείτε το υπόλοιπο κεφαλαίου σας στα προϊόντα, αλλά μπορείτε να χρησιμοποιήσετε και τις δυνατότητές τους. Μπορεί να σας φανεί χρήσιμο καθώς εξερευνάτε περισσότερο το DeFi. + + + Δείτε εφαρμογές χαρτοφυλακίου + + + + +## Πώς λειτουργεί η DeFi; {#how-defi-works} + +Το DeFi χρησιμοποιεί κρυπτονομίσματα και έξυπνα συμβόλαια για να παρέχει υπηρεσίες που δε χρειάζονται μεσάζοντες. Στον σημερινό οικονομικό κόσμο, τα χρηματοπιστωτικά ιδρύματα λειτουργούν ως εγγυητές των συναλλαγών. Αυτό δίνει σε αυτά τα ιδρύματα τεράστια δύναμη επειδή τα χρήματά σας ρέουν μέσω αυτών. Επιπλέον, δισεκατομμύρια άνθρωποι σε όλο τον κόσμο δεν μπορούν καν να έχουν πρόσβαση σε τραπεζικό λογαριασμό. + +Στο DeFi, ένα έξυπνο συμβόλαιο αντικαθιστά το χρηματοπιστωτικό ίδρυμα κατά τη συναλλαγή. Ένα έξυπνο συμβόλαιο είναι ένας τύπος λογαριασμού Ethereum που μπορεί να κρατήσει κεφάλαια και μπορεί να τα στείλει/επιστρέψει με βάση ορισμένες προϋποθέσεις. Κανείς δεν μπορεί να αλλάξει αυτό το έξυπνο συμβόλαιο όταν έχει δημοσιευτεί και θα εκτελείται πάντα όπως έχει προγραμματιστεί. + +Ένα συμβόλαιο που έχει σχεδιαστεί για να μοιράζει ένα επίδομα ή χαρτζιλίκι θα μπορούσε να προγραμματιστεί να στέλνει χρήματα από τον λογαριασμό Α στον λογαριασμό Β κάθε Παρασκευή. Και αυτό θα το κάνει μόνο εφόσον ο Λογαριασμός Α έχει τα απαιτούμενα κεφάλαια. Κανείς δεν μπορεί να αλλάξει το συμβόλαιο και να προσθέσει τον λογαριασμό Γ ως παραλήπτη για να κλέψει χρήματα. + +Τα συμβόλαια είναι επίσης διαθέσιμα δημόσια για επιθεώρηση και έλεγχο από οποιονδήποτε. Αυτό σημαίνει ότι τα κακόβουλα συμβόλαια θα ελεγχθούν σύντομα από την κοινότητα αρκετά γρήγορα. + +Αυτό σημαίνει ότι υπάρχει προς το παρόν ανάγκη να εμπιστευόμαστε τα πιο τεχνικά μέλη της κοινότητας του Ethereum που μπορούν να διαβάσουν κώδικα. Η κοινότητα που βασίζεται σε ανοιχτό κώδικα, βοηθάει τους προγραμματιστές να ελέγχουν αλλά αυτή η ανάγκη θα μειωθεί με την πάροδο του χρόνου, καθώς τα έξυπνα συμβόλαια γίνονται ευκολότερα στην ανάγνωση και αναπτύσσονται άλλοι τρόποι για την απόδειξη της αξιοπιστίας του κώδικα. + +## Ethereum και DeFi {#ethereum-and-defi} + +Το Ethereum είναι το τέλειο θεμέλιο για το DeFi για διάφορους λόγους: + +- Κανείς δεν κατέχει το Ethereum ή τα έξυπνα συμβόλαια που ισχύουν σε αυτό. Έτσι δίνεται σε όλους την ευκαιρία να χρησιμοποιήσουν το DeFi. Αυτό σημαίνει επίσης ότι κανείς δεν μπορεί να αλλάξει τους κανόνες για εσάς. +- Τα προϊόντα DeFi μιλούν όλα την ίδια γλώσσα στα παρασκήνια: Ethereum. Αυτό σημαίνει ότι πολλά από τα προϊόντα συνεργάζονται άψογα. Μπορείτε να δανείσετε κρυπτονομίσματα σε μια πλατφόρμα και να ανταλλάξετε το έντοκο κρυπτονόμισμα σε διαφορετική αγορά σε μια εντελώς διαφορετική εφαρμογή. Αυτό είναι σαν να μπορείτε να εξαργυρώσετε πόντους επιβράβευσης στην τράπεζά σας. +- Τα ψηφιακά στοιχεία και τα κρυπτονομίσματα είναι ενσωματωμένα στο Ethereum, ένα κοινό Ledger. Η παρακολούθηση των συναλλαγών και της ιδιοκτησίας είναι θέμα του Ethereum. +- Το Ethereum επιτρέπει πλήρη οικονομική ελευθερία. Τα περισσότερα προϊόντα δε θα αναλάβουν ποτέ τη φύλαξη των κεφαλαίων σας, αφήνοντάς σας τον έλεγχο. + +Μπορείτε να σκεφτείτε το DeFi σε επίπεδα: + +1. Το blockchain – Το Ethereum περιέχει το ιστορικό συναλλαγών και την κατάσταση των λογαριασμών. +2. Τα ψηφιακά στοιχεία – [ETH](/eth/) και τα άλλα κρύπτο (νομίσματα). +3. Τα πρωτόκολλα – [Έξυπνα συμβόλαια](/glossary/#smart-contract) που παρέχουν τη λειτουργικότητα, για παράδειγμα, μια υπηρεσία που επιτρέπει τον αποκεντρωμένο δανεισμό περιουσιακών στοιχείων. +4. [Οι εφαρμογές](/dapps/) – Τα προϊόντα που χρησιμοποιούμε για τη διαχείριση και την πρόσβαση στα πρωτόκολλα. + +## Δημιουργία DeFi {#build-defi} + +Το DeFi είναι ανοιχτού κώδικα. Τα πρωτόκολλα και οι εφαρμογές DeFi είναι όλα διαθέσιμα για επιθεώρηση, ενσωμάτωση και καινοτομία. Λόγω αυτής της πολυεπίπεδης στοίβας (όλες μοιράζονται την ίδια βασική κρυπτοαλυσίδα και τα ψηφιακά στοιχεία), τα πρωτόκολλα μπορούν να αναμειχθούν και να συνδυαστούν για να ξεκλειδώσουν μοναδικές ευκαιρίες. + + + Περισσότερα για τη δημιουργία dapp + + +## Περισσότερες πληροφορίες {#futher-reading} + +### Δεδομένα DeFi {#defi-data} + +- [DeFi Prime](https://defiprime.com/) +- [DeFi Llama](https://defillama.com/) +- [DeFi Rate](https://defirate.com/) + +### Άρθρα DeFi {#defi-articles} + +- [Οδηγός για αρχάριους για το DeFi](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu, 6 Ιανουαρίου 2020_ + +### Βίντεο {#videos} + +- [Finematics - εκπαίδευση στην αποκεντρωμένη τραπεζική](https://finematics.com/) – _Βίντεο σε DeFi_ +- [The Defiant](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) - _Τα βασικά για την DeFi: Όλα όσα χρειάζεται να μάθετε για να ξεκινήσετε σε αυτό τον ιδιαίτερα πολύπλοκο χώρο._ +- [Whiteboard Crypto](https://youtu.be/17QRFlml4pA) _Τι είναι η DeFi;_ + +### Κοινότητες {#communities} + +- [DeFi Llama διακομιστής Discord](https://discord.gg/buPFYXzDDd) +- [DeFi Pulse διακομιστής Discord](https://discord.gg/Gx4TCTk) diff --git a/src/content/translations/el/desci/index.md b/src/content/translations/el/desci/index.md new file mode 100644 index 00000000000..b7298111a18 --- /dev/null +++ b/src/content/translations/el/desci/index.md @@ -0,0 +1,139 @@ +--- +title: Αποκεντρωμένη επιστήμη (DeSci) +description: Μια επισκόπηση της αποκεντρωμένης επιστήμης στο Ethereum +lang: el +template: use-cases +emoji: ":microscope:" +sidebarDepth: 2 +image: ../../../../assets/future_transparent.png +alt: "" +summaryPoint1: Μια παγκόσμια, ανοικτή εναλλακτική λύση στο τρέχον επιστημονικό σύστημα. +summaryPoint2: Τεχνολογία που επιτρέπει στους επιστήμονες να αντλήσουν χρηματοδοτήσεις, να εκτελέσουν πειράματα, να μοιραστούν δεδομένα, ιδέες και πολλά άλλα. +summaryPoint3: Δημιουργία πάνω στο ανοιχτό επιστημονικό κίνημα. +--- + +## Τι είναι η αποκεντρωμένη επιστήμη (DeSci); {#what-is-desci} + +Η αποκεντρωμένη επιστήμη (DeSci) είναι ένα κίνημα που στοχεύει στη δημιουργία δημόσιας υποδομής για χρηματοδότηση, δημιουργία, αναθεώρηση, πίστωση, αποθήκευση και διάδοση της επιστημονικής γνώσης δίκαια και χρησιμοποιώντας την τεχνολογία Web3. + +Η DeSci στοχεύει να δημιουργήσει ένα οικοσύστημα όπου οι επιστήμονες θα έχουν κίνητρα να μοιράζονται ανοιχτά την έρευνά τους και να λαμβάνουν εύσημα για το έργο τους, επιτρέποντας ταυτόχρονα σε οποιονδήποτε να έχει πρόσβαση και να συνεισφέρει στην έρευνα εύκολα. Η DeSci βασίζεται στην ιδέα ότι η επιστημονική γνώση πρέπει να είναι προσβάσιμη σε όλους και ότι η διαδικασία της επιστημονικής έρευνας πρέπει να είναι διαφανής. Η DeSci δημιουργεί ένα πιο αποκεντρωμένο και κατανεμημένο μοντέλο επιστημονικής έρευνας, καθιστώντας το πιο ανθεκτικό στη λογοκρισία και τον έλεγχο από τις κεντρικές αρχές. Η DeSci ελπίζει να δημιουργήσει ένα περιβάλλον όπου νέες και αντισυμβατικές ιδέες μπορούν να ανθίσουν με την αποκέντρωση της πρόσβασης στη χρηματοδότηση, τα επιστημονικά εργαλεία και τα κανάλια επικοινωνίας. + +Η αποκεντρωμένη επιστήμη επιτρέπει περισσότερες διαφορετικές πηγές χρηματοδότησης (από [DAO](/dao/), [τετραγωνικές δωρεές](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) για χρηματοδότηση και άλλα), πιο προσβάσιμα δεδομένα και μεθόδους πρόσβασης, παρέχοντας κίνητρα για αναπαραγωγιμότητα. + +### Juan Benet - Το Κίνημα DeSci + + + +## Πώς το DeSci βελτιώνει την επιστήμη {#desci-improves-science} + +Μια ελλιπής λίστα βασικών προβλημάτων και πώς η αποκεντρωμένη επιστήμη μπορεί να βοηθήσει στην αντιμετώπιση αυτών των ζητημάτων + +| **Αποκεντρωμένη επιστήμη** | **Παραδοσιακή επιστήμη** | +| -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | +| Η κατανομή των κεφαλαίων καθορίζεται από το κοινό χρησιμοποιώντας μηχανισμούς όπως οι τετραγωνικές δωρεές ή οι DAO. | Μικρές, κλειστές, κεντρικές ομάδες ελέγχουν στη διανομή των κεφαλαίων. | +| Συνεργάζεστε με χρήστες από όλο τον κόσμο σε δυναμικές ομάδες. | Οι χρηματοδοτικοί οργανισμοί και τα ιδρύματα του εσωτερικού περιορίζουν τις συνεργασίες σας. | +| Οι αποφάσεις χρηματοδότησης λαμβάνονται διαδικτυακά και με διαφάνεια. Διερευνώνται νέοι μηχανισμοί χρηματοδότησης. | Οι αποφάσεις χρηματοδότησης λαμβάνονται με μακρύ χρόνο διεκπεραίωσης και περιορισμένη διαφάνεια. Υπάρχουν λίγοι μηχανισμοί χρηματοδότησης. | +| Η κοινή χρήση εργαστηριακών υπηρεσιών γίνεται ευκολότερη και πιο διαφανής χρησιμοποιώντας το Web3. | Η κοινή χρήση εργαστηριακών πόρων είναι συχνά αργή και αδιαφανής. | +| Μπορούν να αναπτυχθούν νέα μοντέλα για δημοσίευση που χρησιμοποιούν Web3 για εμπιστοσύνη, διαφάνεια και γενική πρόσβαση. | Δημοσιεύετε μέσω καθιερωμένων οδών που συχνά αναγνωρίζονται ως αναποτελεσματικές, μεροληπτικές και εκμεταλλευτικές. | +| Μπορείτε να κερδίσετε ψηφιακά στοιχεία και φήμη για εργασία αξιολόγησης από χρήστες. | Η εργασία εξέτασης από χρήστες είναι δωρεάν, προς όφελος των κερδοσκοπικών εκδοτών. | +| Είστε κάτοχος της πνευματικής ιδιοκτησίας (IP) που δημιουργείτε και τη διανέμετε σύμφωνα με διαφανείς όρους. | Ο πάροχος της χώρας σας κατέχει την IP που δημιουργείτε. Η πρόσβαση στην IP δεν είναι διαφανής. | +| Κοινή χρήση όλης της έρευνας, συμπεριλαμβανομένων των δεδομένων από ανεπιτυχείς προσπάθειες, έχοντας όλα τα βήματα στην αλυσίδα. | Η μεροληψία δημοσίευσης σημαίνει ότι οι ερευνητές είναι πιο πιθανό να μοιραστούν πειράματα που είχαν επιτυχημένα αποτελέσματα. | + +## Το Ethereum και η DeSci {#ethereum-and-desci} + +Ένα αποκεντρωμένο επιστημονικό σύστημα θα απαιτήσει ισχυρή ασφάλεια, ελάχιστο χρηματικό κόστος, κόστος συναλλαγών και ένα πλούσιο οικοσύστημα για την ανάπτυξη εφαρμογών. Το Ethereum παρέχει όλα όσα χρειάζονται για τη δημιουργία μιας αποκεντρωμένης επιστήμης. + +## Χρήσεις της DeSci {#use-cases} + +Η DeSci δημιουργεί το επιστημονικό σύνολο εργαλείων για να ενσωματώσει τον ακαδημαϊκό χώρο του Web2 στον ψηφιακό κόσμο. Ακολουθεί ένα δείγμα περιπτώσεων χρήσης που μπορεί να προσφέρει το Web3 στην επιστημονική κοινότητα. + +### Δημοσίευση {#publishing} + +Είναι γνωστό πως η επιστημονική δημοσίευση είναι προβληματική, επειδή τη διαχειρίζονται εκδοτικοί οίκοι που βασίζονται σε δωρεάν εργασία από επιστήμονες, κριτικούς και συντάκτες για τη δημιουργία των εγγράφων, αλλά στη συνέχεια χρεώνουν υπέρογκα τέλη για τη δημοσίευση. Οι χρήστες, που συνήθως έχουν πληρώσει έμμεσα για το έργο και το κόστος δημοσίευσης μέσω της φορολογίας, συχνά δεν μπορούν να έχουν πρόσβαση στο ίδιο έργο χωρίς να πληρώσουν ξανά τον εκδότη. Τα συνολικά τέλη για τη δημοσίευση των μεμονωμένων επιστημονικών εργασιών είναι συχνά πενταψήφια ($USD), υπονομεύοντας την όλη έννοια της επιστημονικής γνώσης ως [ δημόσιο όφελος](https://www.econlib.org/library/Enc/PublicGoods.html) ενώ παράλληλα παράγει τεράστια κέρδη για μια μικρή ομάδα εκδοτών. + +Πλατφόρμες δωρεάν και ανοιχτής πρόσβασης υπάρχουν με τη μορφή διακομιστών προεκτύπωσης όπως το [ArXiv](https://arxiv.org/). Ωστόσο, αυτές οι πλατφόρμες στερούνται ποιοτικού ελέγχου, [μηχανισμών anti-sybil](https://csrc.nist.gov/glossary/term/sybil_attack) και δεν παρακολουθούν γενικά μετρήσεις σε επίπεδο άρθρου, δηλαδή συνήθως χρησιμοποιούνται μόνο για τη δημοσιοποίηση της εργασίας πριν από την υποβολή σε έναν παραδοσιακό εκδότη. Το SciHub παρέχει δωρεάν πρόσβαση στις δημοσιευμένες εργασίες, αλλά όχι νόμιμα και μόνο αφού οι εκδότες έχουν ήδη λάβει την πληρωμή τους και δημοσιεύσουν το έργο υπό αυστηρής νομοθεσίας περί πνευματικών δικαιωμάτων. Αυτό αφήνει ένα κρίσιμο κενό για πρόσβαση σε επιστημονικά έγγραφα και δεδομένα με ενσωματωμένο μηχανισμό νομιμότητας και ένα μοντέλο κινήτρων. Τα εργαλεία κατασκευής ενός τέτοιου συστήματος υπάρχουν στο Web3. + +### Αναπαραγωγικότητα και δυνατότητα αναπαραγωγής {#reproducibility-and-replicability} + +Η αναπαραγωγικότητα και η δυνατότητα αναπαραγωγής είναι τα θεμέλια της ποιοτικής επιστημονικής ανακάλυψης. + +- Αναπαραγόμενα αποτελέσματα μπορούν να επιτευχθούν πολλές φορές συνεχόμενα από την ίδια ομάδα χρησιμοποιώντας την ίδια μεθοδολογία. +- Δυνατότητα αναπαραγωγής μπορεί να επιτευχθεί από διαφορετική ομάδα χρησιμοποιώντας τα ίδια στοιχεία πειράματος. + +Τα νέα εγγενή εργαλεία Web3 μπορούν να διασφαλίσουν ότι η αναπαραγωγικότητα και η δυνατότητα αναπαραγωγής αποτελούν τη βάση της ανακάλυψης. Μπορούμε να συνδυάσουμε την ποιοτική επιστήμη στον τεχνολογικό ιστό του ακαδημαϊκού χώρου. Το Web3 προσφέρει τη δυνατότητα δημιουργίας βεβαιώσεων για κάθε στοιχείο ανάλυσης: τα πρωτογενή δεδομένα, την υπολογιστική μηχανή και το αποτέλεσμα της εφαρμογής. Η ομορφιά των συστημάτων συναίνεσης είναι ότι όταν δημιουργείται ένα αξιόπιστο δίκτυο για τη συντήρηση αυτών των στοιχείων, κάθε συμμετέχων του δικτύου μπορεί να είναι υπεύθυνος για την αναπαραγωγή του υπολογισμού και την επικύρωση κάθε αποτελέσματος. + +### Χρηματοδότηση {#funding} + +Το τρέχον πρότυπο μοντέλο για τη χρηματοδότηση της επιστήμης είναι ότι άτομα ή ομάδες επιστημόνων υποβάλλουν γραπτές αιτήσεις σε έναν οργανισμό χρηματοδότησης. Μια μικρή ομάδα έμπιστων ατόμων βαθμολογεί τις αιτήσεις και στη συνέχεια παίρνει συνέντευξη από τους υποψηφίους πριν χορηγήσει κεφάλαια σε μια μικρή μερίδα υποψηφίων. Εκτός από τη δημιουργία καθυστέρησης που μερικές φορές οδηγούν σε χρόνια αναμονής μεταξύ υποβολής αίτησης και λήψης επιχορήγησης, αυτό το μοντέλο είναι γνωστό ότι είναι πολύ ευάλωτο στις προκαταλήψεις, τα προσωπικά συμφέροντα και την πολιτική της επιτροπής αναθεώρησης. + +Μελέτες έχουν δείξει ότι οι επιτροπές αναθεώρησης επιχορηγήσεων κάνουν κακή δουλειά όσον αφορά την επιλογή προτάσεων υψηλής ποιότητας, καθώς οι ίδιες προτάσεις που δίνονται σε διαφορετικές ομάδες έχουν εξαιρετικά διαφορετικά αποτελέσματα. Καθώς η χρηματοδότηση γίνεται πιο σπάνια, συγκεντρώνεται σε μια μικρότερη δεξαμενή γνωστών ερευνητών με πιο ιδιαίτερα έργα. Το αποτέλεσμα έχει δημιουργήσει ένα υπερανταγωνιστικό τοπίο χρηματοδότησης, εδραιώνει διεστραμμένα κίνητρα και καταπνίγει την καινοτομία. + +Το Web3 έχει τη δυνατότητα να διαταράξει αυτό το μοντέλο χρηματοδότησης πειραματιζόμενο με διαφορετικά μοντέλα κινήτρων που αναπτύχθηκαν από τους DAO και γενικά το Web3. [Η αναδρομική χρηματοδότηση δημοσίων αγαθών](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c), [η τετραγωνική χρηματοδότηση](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), [η διακυβέρνηση DAO](https://www.antler.co/blog/daos-and-web3-governance) και οι [δομές κινήτρων με ψηφιακά στοιχεία](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design) είναι μερικά από τα εργαλεία Web3 που θα μπορούσαν να φέρουν επανάσταση στη χρηματοδότηση της επιστήμης. + +### Ιδιοκτησία ΙΡ και ανάπτυξη {#ip-ownership} + +Η πνευματική ιδιοκτησία (IP) είναι ένα μεγάλο πρόβλημα στην παραδοσιακή επιστήμη: από το να μένει κανείς κολλημένος στα πανεπιστήμια ή να μη χρησιμοποιείται σε βιοτεχνολογίες, έως το να είναι δύσκολο να αξιολογηθεί. Ωστόσο, η ιδιοκτησία ψηφιακών στοιχείων (όπως τα επιστημονικά δεδομένα ή τα άρθρα) είναι κάτι που το Web3 κάνει εξαιρετικά χρησιμοποιώντας τα [μη εναλλάξιμα κρυπτοπαραστατικά (NFT)](/nft/). + +Με τον ίδιο τρόπο που τα NFT μπορούν να μεταφέρουν έσοδα από μελλοντικές συναλλαγές στον αρχικό δημιουργό τους, μπορείτε να δημιουργήσετε αλυσίδες απόδοσης της αξίας με πλήρη διαφάνεια για να επιβραβεύσετε τους ερευνητές, τους κυβερνητικούς φορείς (όπως τους DAO) ή ακόμα και τα υποκείμενα των οποίων τα δεδομένα συλλέγονται. + +Τα [IP-NFT](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6) μπορούν επίσης να λειτουργήσουν ως κλειδί για ένα αποκεντρωμένο αποθετήριο δεδομένων των ερευνητικών πειραμάτων που διεξάγονται, συνδέοντας τη χρηματοοικονομική των NFT και της [DeFi](/defi/) (από την κλασματοποίηση έως τις ομάδες δανεισμού και εκτίμησης της αξίας). Επιτρέπει επίσης σε οντότητες στην αλυσίδα, τους DAO, όπως το [VitaDAO](https://www.vitadao.com/) να διεξάγουν έρευνα απευθείας σε αυτήν. Η εμφάνιση των μη μεταβιβάσιμων [ψηφιακών στοιχείων «soulbound»](https://vitalik.ca/general/2022/01/26/soulbound.html) μπορεί επίσης να παίξει σημαντικό ρόλο στο DeSci επιτρέποντας άτομα να αποδείξουν την εμπειρία και τα διαπιστευτήριά τους που συνδέονται με τη διεύθυνσή τους Ethereum. + +### Αποθήκευση δεδομένων, πρόσβαση και αρχιτεκτονική {#data-storage} + +Τα επιστημονικά δεδομένα μπορούν να γίνουν πολύ πιο προσιτά χρησιμοποιώντας τα μοτίβα Web3 και την κατανεμημένη αποθήκευση επιτρέποντας στην έρευνα να επιβιώσει από κατακλυσμικά γεγονότα. + +Το σημείο εκκίνησης πρέπει να είναι ένα σύστημα προσβάσιμο από οποιαδήποτε αποκεντρωμένη οντότητα που διαθέτει τα κατάλληλα επαληθεύσιμα διαπιστευτήρια. Αυτό επιτρέπει την ασφαλή αναπαραγωγή ευαίσθητων δεδομένων από αξιόπιστα μέρη, επιτρέποντας την αντίσταση στον πλεονασμό και τη λογοκρισία, την αναπαραγωγή των αποτελεσμάτων, ακόμη και τη δυνατότητα πολλά μέρη να συνεργάζονται και να προσθέτουν νέα δεδομένα στο σύνολο. Εμπιστευτικές υπολογιστικές μέθοδοι όπως [«compute-to-data»](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol) παρέχει εναλλακτικούς μηχανισμούς πρόσβασης στην αναπαραγωγή μη επεξεργασμένων δεδομένων, δημιουργώντας αξιόπιστα ερευνητικά περιβάλλοντα για τα πιο ευαίσθητα δεδομένα. Τα αξιόπιστα ερευνητικά περιβάλλοντα έχουν [αναφερθεί από το NHS](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb) ως μια μελλοντική λύση για το απόρρητο και τη συνεργασία δεδομένων, δημιουργώντας ένα οικοσύστημα όπου οι ερευνητές μπορούν να εργάζονται με ασφάλεια με δεδομένα επιτόπου, χρησιμοποιώντας τυποποιημένα περιβάλλοντα κοινής χρήσης κώδικα και πρακτικών. + +Οι ευέλικτες λύσεις δεδομένων Web3 υποστηρίζουν τα παραπάνω σενάρια και παρέχουν τη βάση για μια πραγματικά ανοιχτή επιστήμη, όπου οι ερευνητές μπορούν να δημιουργούν δημόσια αγαθά χωρίς άδειες πρόσβασης ή χρεώσεις. Οι λύσεις δημόσιων δεδομένων Web3 όπως το IPFS, το Arweave και το Filecoin έχουν βελτιστοποιηθεί για αποκέντρωση. Το dClimate, για παράδειγμα, παρέχει καθολική πρόσβαση σε δεδομένα για το κλίμα και τον καιρό, μεταξύ άλλων από μετεωρολογικούς σταθμούς και προγνωστικά κλιματικά μοντέλα. + +## Λάβετε μέρος {#get-involved} + +Εξερευνήστε τα έργα και εγγραφείτε στην κοινότητα DeSci. + +- [DeSci.Global: Γενικές εκδηλώσεις και ημερολόγιο συναντήσεων.](https://desci.global) +- [Η κρυπτοαλυσίδα για την επιστήμη Telegram.](https://t.me/BlockchainForScience) +- [Molecule: Παρέχετε και λάβετε χρηματοδότηση για τα ερευνητικά σας έργα.](https://discover.molecule.to/) +- [VitaDAO: Λάβετε χρηματοδότηση μέσω συμφωνιών έρευνας με χορηγία για έρευνα μακροζωίας.](https://www.vitadao.com/) +- [ResearchHub: Δημοσιεύστε μια επιστημονική έρευνα και συμμετάσχετε σε μια συζήτηση.](https://www.researchhub.com/) +- [LabDAO: fold a protein in-silico](https://alphafodl.vercel.app/) +- [dClimate API: Αναζήτηση δεδομένων για το κλίμα που συλλέγονται από μια αποκεντρωμένη κοινότητα.](https://api.dclimate.net/) +- [DeSci Foundation: DeSci δημιουργία εργαλείου δημοσίευσης.](https://descifoundation.org/) +- [DeSci.World: Σύντομη αγορά για να δουν οι χρήστες και να ασχοληθούν με την αποκεντρωμένη επιστήμη.](https://desci.world) +- [Πρωτόκολλο Fleming: Οικονομικά δεδομένα ανοιχτού κώδικα υποστηρίζοντας τη συλλογική βιοϊατρική έρευνα.](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd) +- [OceanDAO: DAO χρηματοδότησης για την επιστήμη που σχετίζεται με δεδομένα.](https://oceanprotocol.com/dao) +- [Opscientia: Ανοιχτές αποκεντρωμένες ροές επιστημονικών εργασιών.](https://opsci.io/research/) +- [LabDAO: fold a protein in-silico](https://alphafodl.vercel.app/) +- [Bio.xyz: Λάβετε χρηματοδότηση για το έργο βιοτεχνολογίας DAO ή desci.](https://www.molecule.to/) +- [ResearchHub: Δημοσιεύστε μια επιστημονική έρευνα και συμμετάσχετε σε μια συζήτηση.](https://www.researchhub.com/) +- [VitaDAO: Λάβετε χρηματοδότηση μέσω συμφωνιών έρευνας με χορηγία για έρευνα μακροζωίας.](https://www.vitadao.com/) +- [Πρωτόκολλο Fleming: Οικονομικά δεδομένα ανοιχτού κώδικα υποστηρίζοντας τη συλλογική βιοϊατρική έρευνα.](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd) +- [Εργαστήριο ενεργών εισροών](https://www.activeinference.org/) +- [CureDAO: Πλατφόρμα ανάλυσης υγείας που ανήκει στην κοινότητα.](https://docs.curedao.org/) +- [IdeaMarkets: Ενεργοποίηση της αποκεντρωμένης επιστημονικής αξιοπιστίας.](https://ideamarket.io/) +- [Εργαστήρια DeSci](https://www.desci.com/) + +Χαιρετίζουμε τις προτάσεις νέων έργων για τη λίστα. Δείτε την [πολιτική καταχώρισης](/contributing/adding-desci-projects/) για να ξεκινήσετε! + +## Περισσότερες πληροφορίες {#further-reading} + +- [DeSci Wiki των Jocelynn Pearl και Ultrarare](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#) +- [Ένας οδηγός για την αποκεντρωμένη βιοτεχνολογία από την Jocelynn Pearl για το μέλλον του a16z](https://future.a16z.com/a-guide-to-decentralized-biotech/) +- [Η περίπτωση για την DeSci](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/) +- [Οδηγός για DeSci](https://future.com/what-is-decentralized-science-aka-desci/) +- [Πηγές αποκεντρωμένης επιστήμης](https://www.vincentweisser.com/decentralized-science) +- [Molecule’s Biopharma IP-NFTs - Τεχνική περιγραφή](https://molecule.to/blog/molecules-biopharma-ip-nfts-a-technical-description) +- [Δημιουργώντας έμπιστα συστήματα επιστήμης του Jon Starr](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673) +- [Η εμφάνιση των βιοτεχνολογικών DAO](https://molecule.to/blog/the-emergence-of-biotech-daos) +- [Paul Kohlhaas - DeSci: Το μέλλον της αποκεντρωμένης επιστήμης (podcast)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a) +- [Μια ενεργή οντολογία συμπερασμάτων για την αποκεντρωμένη επιστήμη: από την εντοπιζόμενη αισθησιοποίηση στα επιστημικά κοινά](https://zenodo.org/record/6320575) +- [DeSci: Το μέλλον της έρευνας από τον Samuel Akinosho.](https://lucidsamuel.medium.com/desci-the-future-of-research-b76cfc88c8ec) +- [Χρηματοδότηση επιστήμης (Επίλογος: Η DeSci και οι νέες μεθόδοι κρύπτο) από την Nadia.](https://nadia.xyz/science-funding) +- [Η αποκέντρωση διακόπτει την ανάπτυξη των ναρκωτικών.](https://medium.com/id-theory/decentralisation-is-disrupting-drug-development-28b5ba5d447f) + +### Βίντεο {#videos} + +- [Τι είναι η αποκεντρωμένη επιστήμη;](https://www.youtube.com/watch?v=-DeMklVWNdA) +- [Συζήτηση μεταξύ του Vitalik Buterin και του επιστήμονα Aubrey de Gray σχετικά με τη διασταύρωση της έρευνας μακροζωίας και των κρυπτονομισμάτων.](https://www.youtube.com/watch?v=x9TSJK1widA) +- [Η επιστημονική δημοσίευση είναι προβληματική. Μπορεί το Web3 να το διορθώσει;](https://www.youtube.com/watch?v=WkvzYgCvWj8) +- [Juan Benet - DeSci, Ανεξάρτητα εργαστήρια & η Επιστήμη των δεδομένων μεγάλης κλίμακας.](https://www.youtube.com/watch?v=zkXM9H90g_E) +- [Sebastian Brunemeier - Πώς η DeSci μπορεί να τροποποιήσει τη Βιοϊατρική έρευνα & τα Επιχειρηματικά κεφάλαια.](https://www.youtube.com/watch?v=qB4Tc3FcVbM) diff --git a/src/content/translations/el/refi/index.md b/src/content/translations/el/refi/index.md new file mode 100644 index 00000000000..486aa2860f5 --- /dev/null +++ b/src/content/translations/el/refi/index.md @@ -0,0 +1,79 @@ +--- +title: Αναγεννητική Τραπεζική (ReFi) +description: Μια επισκόπηση της ReFi και οι περιπτώσεις χρήσης της. +lang: el +template: use-cases +emoji: ":recycle:" +sidebarDepth: 2 +image: ../../../../assets/future_transparent.png +alt: "" +summaryPoint1: Ένα εναλλακτικό οικονομικό σύστημα που βασίζεται σε αναγεννητικές αρχές. +summaryPoint2: Μια προσπάθεια αξιοποίησης του Ethereum για την επίλυση κρίσεων συντονισμού σε παγκόσμιο επίπεδο, όπως η κλιματική αλλαγή. +summaryPoint3: Ένα εργαλείο δραστικής κλιμάκωσης περιουσιακών στοιχείων οικολογικού οφέλους, όπως πιστοποιημένες αποτυπώσεις άνθρακα. +--- + +## Τι είναι η ReFi; {#what-is-refi} + +Η **Αναγεννητική τραπεζική (ReFi)** είναι ένα σύνολο εργαλείων και ιδεών που βασίζονται πάνω σε blockchain, στοχεύοντας στη δημιουργία οικονομιών που αναγεννιούνται και όχι από εξόρυξη ή εκμετάλλευση. Τελικά, τα συστήματα εξόρυξης εξαντλούν τους διαθέσιμους πόρους και καταρρέουν. Χωρίς αναγεννητικούς μηχανισμούς, τους λείπει η ανθεκτικότητα. Η ReFi λειτουργεί με την υπόθεση ότι η δημιουργία νομισματικής αξίας πρέπει να αποσυνδεθεί από τη μη βιώσιμη εξόρυξη πόρων από τον πλανήτη και τις κοινότητές μας. + +Αντίθετα, η ReFi στοχεύει στην επίλυση περιβαλλοντικών, κοινοτικών ή κοινωνικών προβλημάτων δημιουργώντας κύκλους αναγέννησης. Αυτά τα συστήματα δημιουργούν αξία για τους συμμετέχοντες ενώ ταυτόχρονα ωφελούν τα οικοσυστήματα και τις κοινότητες. + +Ένα από τα θεμέλια της ReFi είναι η έννοια της αναγεννητικής οικονομίας που πρωτοπαρουσιάστηκε από τον John Fullerton του [Capital Institute](https://capitalinstitute.org). Πρότεινε οκτώ αλληλένδετες αρχές που αποτελούν τη βάση της συστημικής υγείας: + +![Οκτώ αλληλένδετες αρχές](../../assets/use-cases/refi-regenerative-economy-diagram.png) + +Τα έργα ReFi υλοποιούν αυτές τις αρχές χρησιμοποιώντας [έξυπνα συμβόλαια](/developers/docs/smart-contracts/) και [αποκεντρωμένη χρηματοδότηση (DeFi)](/defi/) για δίνουν κίνητρα για αναγεννητικές συμπεριφορές, π.χ. την αποκατάσταση των υποβαθμισμένων οικοσυστημάτων και τη διευκόλυνση της μεγάλης κλίμακας συνεργασίας σε παγκόσμια ζητήματα όπως η κλιματική αλλαγή και η απώλεια βιοποικιλότητας. + +Η ReFi επικαλύπτεται επίσης με το κίνημα [αποκεντρωμένης επιστήμης (DeSci)](/desci/), το οποίο χρησιμοποιεί το Ethereum ως πλατφόρμα για τη χρηματοδότηση, τη δημιουργία, την αναθεώρηση, την πίστωση, την αποθήκευση και τη διάδοση της επιστημονικής γνώσης. Τα εργαλεία DeSci θα μπορούσαν να γίνουν χρήσιμα για την ανάπτυξη επαληθεύσιμων προτύπων και πρακτικών για την εφαρμογή και την παρακολούθηση αναγεννητικών δραστηριοτήτων όπως η φύτευση δέντρων, η αφαίρεση πλαστικού από τον ωκεανό ή η αποκατάσταση ενός υποβαθμισμένου οικοσυστήματος. + +## Tokenization των πιστώσεων άνθρακα {#tokenization-of-carbon-credits} + +Η **[εθελοντική αγορά άνθρακα (VCM)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** είναι ένας μηχανισμός χρηματοδότησης έργων με επαληθευμένο θετικό αντίκτυπο στις εκπομπές άνθρακα, είτε μειώνοντας τις συνεχιζόμενες εκπομπές είτε αφαιρώντας τα αέρια του θερμοκηπίου που ήδη εκπέμπονται, από την ατμόσφαιρα. Αυτά τα έργα λαμβάνουν ένα ψηφιακό στοιχείο που ονομάζεται «πιστώσεις άνθρακα» αφού επαληθευτούν, το οποίο μπορούν να πουλήσουν σε άτομα και οργανισμούς που θέλουν να υποστηρίξουν τις δράσεις για το κλίμα. + +Εκτός από το VCM, υπάρχουν επίσης αρκετές κυβερνητικές αγορές άνθρακα («αγορές συμμόρφωσης») που στοχεύουν στον καθορισμό της τιμής άνθρακα μέσω νόμων ή κανονισμών σε μια συγκεκριμένη δικαιοδοσία (π.χ. χώρα ή περιοχή), ελέγχοντας την παροχή αδειών που πρέπει να διανέμονται. Οι αγορές συμμόρφωσης δίνουν κίνητρα στους ρυπαίνοντες εντός της δικαιοδοσίας τους να μειώσουν τις εκπομπές, αλλά δεν είναι σε θέση να αφαιρέσουν τα αέρια του θερμοκηπίου που έχουν ήδη αποδεσμευτεί. + +Παρά την ανάπτυξή του τις τελευταίες δεκαετίες, το VCM συνεχίζει να υποφέρει από διάφορα ζητήματα: + +1. Υψηλή κατακερματισμένη ρευστότητα +2. Αδιαφανείς μηχανισμοί συναλλαγών +3. Υψηλές κρατήσεις +4. Πολύ αργή ταχύτητα συναλλαγών +5. Έλλειψη επεκτασιμότητας + +Η μετάβαση του VCM στη νέα **ψηφιακή αγορά άνθρακα (DCM)** που βασίζεται σε blockchain μπορεί να είναι μια ευκαιρία για την αναβάθμιση της υπάρχουσας τεχνολογίας για την επικύρωση, τη συναλλαγή και την κατανάλωση πιστώσεων άνθρακα. Οι blockchain επιτρέπουν την πρόσβαση σε δημόσια επαληθεύσιμα δεδομένα, σε ένα ευρύ φάσμα χρηστών, αποφέροντας περισσότερη ρευστότητα. + +Τα έργα ReFi χρησιμοποιούν τεχνολογία blockchain για να εξαλείψουν πολλά από τα προβλήματα της παραδοσιακής αγοράς: + +- **Η ρευστότητα συγκεντρώνεται σε έναν μικρό αριθμό δεξαμενών ρευστότητας** που μπορούν να συναλλάσσονται ελεύθερα από οποιονδήποτε. Μεγάλοι οργανισμοί καθώς και μεμονωμένοι χρήστες μπορούν να χρησιμοποιήσουν αυτές τις δεξαμενές χωρίς αυτόματες αναζητήσεις πωλητών/αγοραστών, τέλη συμμετοχής ή προηγούμενη εγγραφή. +- **Όλες οι συναλλαγές καταγράφονται σε δημόσιες κρυπτοαλυσίδες**. Η διαδρομή που ακολουθεί κάθε πίστωση άνθρακα λόγω της εμπορικής δραστηριότητας είναι ανιχνεύσιμη για πάντα μόλις γίνει διαθέσιμη στο DCM. +- **Η ταχύτητα συναλλαγής είναι σχεδόν άμεση**. Η εξασφάλιση μεγάλων ποσών πιστώσεων άνθρακα μέσω των αγορών παλαιού τύπου, μπορεί να διαρκέσει ημέρες ή εβδομάδες, αλλά αυτό μπορεί να επιτευχθεί σε λίγα δευτερόλεπτα με το DCM. +- **Η εμπορική δραστηριότητα πραγματοποιείται χωρίς μεσάζοντες**, οι οποίοι χρεώνουν υψηλές προμήθειες. Οι ψηφιακές πιστώσεις άνθρακα αντιπροσωπεύουν το [62% της βελτίωσης κόστους σε σύγκριση με τις αντίστοιχες παραδοσιακές πιστώσεις](https://www.klimadao.finance/blog/klimadao-analysis-of-the-base-carbon-tonne), σύμφωνα με τα στοιχεία μιας εταιρείας ανάλυσης. +- **Το DCM είναι επεκτάσιμο** και μπορεί να καλύψει τις απαιτήσεις ιδιωτών και πολυεθνικών εταιρειών. + +### Βασικά στοιχεία του DCM {#key-components-dcm} + +Τέσσερα κύρια στοιχεία συνθέτουν το τρέχον τοπίο του DCM: + +1. Μητρώα όπως το [Verra](https://verra.org/project/vcs-program/registry-system/) και το [Gold Standard](https://www.goldstandard.org/) επιβεβαιώνουν ότι τα έργα που δημιουργούν πιστώσεις άνθρακα είναι αξιόπιστα. Διαχειρίζονται επίσης τις βάσεις δεδομένων από τις οποίες προέρχονται οι ψηφιακές πιστώσεις άνθρακα και μπορούν να μεταφερθούν ή να χρησιμοποιηθούν (αποσύρονται). + +Υπάρχει ένα νέο κύμα καινοτόμων έργων που χτίζονται σε blockchain που επιχειρούν να διαταράξουν τους κατεστημένους φορείς σε αυτόν τον τομέα. + +2. Γέφυρες άνθρακα, δηλαδή tokenizer, παρέχουν τεχνολογία για την αναπαράσταση ή τη μεταφορά πιστώσεων άνθρακα από παραδοσιακά μητρώα στο DCM. Αξιοσημείωτα παραδείγματα περιλαμβάνουν το [Πρωτόκολλο Toucan](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/) προσφέρουν μόνο συγκεκριμένα έργα που έχουν αναπτυχθεί βάσει του δικού τους προτύπου πίστωσης άνθρακα, το οποίο εκδίδουν και για τα οποία έχουν τη δική τους αποκλειστική αγορά. + +4. Τα θεμέλια και οι υποδομές που διευκολύνουν την κλιμάκωση του αντίκτυπου και της αποτελεσματικότητας ολόκληρης της αλυσίδας εφοδιασμού της αγοράς άνθρακα. Το [KlimaDAO](http://klimadao.finance/) παρέχει ρευστότητα ως δημόσιο αγαθό (επιτρέποντας σε οποιονδήποτε να αγοράσει ή να πουλήσει πιστώσεις άνθρακα σε διαφανή τιμή), παρέχει κίνητρα για αυξημένη απόδοση των αγορών άνθρακα και συνταξιοδοτήσεις ως ανταμοιβή και παρέχει φιλικά προς τον χρήστη διαλειτουργικά εργαλεία για πρόσβαση σε δεδομένα, καθώς και για την απόκτηση και την απόσυρση μιας μεγάλης ποικιλίας πιστώσεων άνθρακα. + +## Η ReFi πέρα από τις αγορές άνθρακα {#refi-beyond} + +Αν και επί του παρόντος δίνεται μεγάλη έμφαση στις αγορές άνθρακα γενικά και στη μετάβαση του VCM στο DCM ειδικότερα εντός του χώρου, ο όρος «ReFi» δεν περιορίζεται αυστηρά στον άνθρακα. Άλλα περιβαλλοντικά πλεονεκτήματα πέρα από τις πιστώσεις άνθρακα μπορούν να αναπτυχθούν και να αναγνωριστούν, πράγμα που σημαίνει ότι άλλες αρνητικές εξωτερικές επιδράσεις μπορούν επίσης να αποτιμηθούν στα βασικά επίπεδα των μελλοντικών οικονομικών συστημάτων. Επιπλέον, η αναγεννητική πτυχή αυτού του οικονομικού μοντέλου μπορεί να εφαρμοστεί σε άλλους τομείς, όπως η χρηματοδότηση δημόσιων αγαθών μέσω τετραγωνικών πλατφορμών χρηματοδότησης όπως το [Gitcoin](https://gitcoin.co/). Οι οργανισμοί που βασίζονται στην ιδέα της ανοιχτής συμμετοχής και της δίκαιης κατανομής των πόρων δίνουν τη δυνατότητα σε όλους να διοχετεύουν χρήματα σε έργα λογισμικού ανοιχτού κώδικα, καθώς και σε εκπαιδευτικά, περιβαλλοντικά και κοινοτικά έργα. + +Μετατοπίζοντας την κατεύθυνση του κεφαλαίου μακριά από τις εξορυκτικές πρακτικές προς μια αναγεννητική ροή, τα έργα και οι εταιρείες που παρέχουν κοινωνικά, περιβαλλοντικά ή κοινοτικά οφέλη και που ενδέχεται να αποτύχουν τη χρηματοδότηση στην παραδοσιακή χρηματοδότηση, μπορούν να απογειωθούν και να δημιουργήσουν θετικές εξωτερικές επιδράσεις για την κοινωνία πολύ πιο γρήγορα και εύκολα. Η μετάβαση σε αυτό το μοντέλο χρηματοδότησης ανοίγει επίσης την πόρτα σε πολύ πιο περιεκτικά οικονομικά συστήματα, όπου άτομα όλων των δημογραφικών ομάδων μπορούν να γίνουν ενεργοί συμμετέχοντες και όχι απλώς παθητικοί παρατηρητές. Το ReFi προσφέρει ένα όραμα του Ethereum ως μηχανισμού συντονισμού δράσης στις υπαρξιακές προκλήσεις που αντιμετωπίζει το είδος μας και όλη η ζωή στον πλανήτη μας, ως το βασικό στρώμα ενός νέου οικονομικού παραδείγματος, που επιτρέπει ένα πιο περιεκτικό και βιώσιμο μέλλον για τους επόμενους αιώνες. + +## Διαβάστε περισσότερα για τη ReFi + +- [Μια επισκόπηση υψηλού επιπέδου των νομισμάτων άνθρακα και της θέσης τους στην οικονομία](https://www.klimadao.finance/blog/the-vision-of-a-carbon-currency) +- [Το Υπουργείο για το Μέλλον, ένα μυθιστόρημα που παρουσιάζει το ρόλο ενός νομίσματος που υποστηρίζεται από άνθρακα στην καταπολέμηση της κλιματικής αλλαγής](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future) +- [Λεπτομερής αναφορά από την Taskforce for Scaling Voluntary Markets Carbon](https://www.iif.com/Portals/1/Files/TSVCM_Report.pdf) +- [Καταχώρηση στο γλωσσάρι του CoinMarketCap του Kevin Owocki και του Evan Miyazono στο ReFi](https://coinmarketcap.com/alexandria/glossary/regenerative-finance-refi) diff --git a/src/content/translations/el/smart-contracts/index.md b/src/content/translations/el/smart-contracts/index.md new file mode 100644 index 00000000000..505238b28a0 --- /dev/null +++ b/src/content/translations/el/smart-contracts/index.md @@ -0,0 +1,84 @@ +--- +title: Έξυπνα συμβόλαια +description: Μια μη τεχνική εισαγωγή στα έξυπνα συμβόλαια +lang: el +--- + +# Εισαγωγή στα έξυπνα συμβόλαια {#introduction-to-smart-contracts} + +Τα έξυπνα συμβόλαια αποτελούν τα θεμελιώδη δομικά στοιχεία του επιπέδου εφαρμογών του Ethereum. Είναι προγράμματα υπολογιστών που είναι αποθηκευμένα στην κρυπτοαλυσίδα, τα οποία ακολουθούν τη λογική «αν συμβεί αυτό, τότε αυτό» και είναι εγγυημένα ότι εκτελούνται σύμφωνα με τους κανόνες που ορίζονται από τον κώδικά του, ο οποίος δεν μπορεί να αλλάξει από τη στιγμή που θα δημιουργηθεί. + +Ο Nick Szabo επινόησε τον όρο «έξυπνο συμβόλαιο». Το 1994, έγραψε [μια εισαγωγή σε αυτή την έννοια](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html) και το 1996 [μια ερεύνα για το τι θα μπορούσαν να κάνουν τα έξυπνα συμβόλαια](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html). + +Ο Szabo οραματίστηκε μια ψηφιακή αγορά όπου οι αυτόματες και κρυπτογραφικά ασφαλείς διαδικασίες επιτρέπουν τις συναλλαγές και τις επιχειρηματικές λειτουργίες να πραγματοποιούνται χωρίς την ανάγκη αξιόπιστων μεσαζόντων. Τα έξυπνα συμβόλαια στο Ethereum κάνουν το όραμα πράξη. + +### Εμπιστοσύνη στα συμβατικά συμβόλαια {#trust-and-contracts} + +Ένα από τα μεγαλύτερα προβλήματα με ένα παραδοσιακό συμβόλαιο, είναι η ανάγκη ύπαρξης αξιόπιστων ατόμων για ορθά αποτελέσματα. + +Δείτε ένα παράδειγμα: + +Η Alice και ο Bob θα κάνουν έναν αγώνα ποδηλάτου. Ας πούμε ότι η Alice στοιχηματίζει με τον Bob $10 πως θα κερδίσει τον αγώνα. Ο Bob είναι σίγουρος ότι θα είναι νικητής και συμφωνεί με αυτό το στοίχημα. Στο τέλος, η Alice τελειώνει τον αγώνα πολύ μπροστά από τον Μπομπ και είναι η ξεκάθαρη νικήτρια. Αλλά ο Bob αρνείται να πληρώσει το στοίχημα, ισχυριζόμενος ότι η Alice έκλεψε στον αγώνα. + +Αυτό το χαζό παράδειγμα καταδεικνύει το πρόβλημα με οποιοδήποτε μη έξυπνο συμβόλαιο. Ακόμη και αν πληρούνται οι προϋποθέσεις της συμφωνίας (δηλ. είσαστε ο νικητής του αγώνα), θα πρέπει να εμπιστευθείτε ένα άλλο άτομο για να εκπληρώσει τη συμφωνία (δηλ. την πληρωμή του στοιχήματος). + +### Ένας ψηφιακός αυτόματος πωλητής {#vending-machine} + +Ένα απλό παράδειγμα έξυπνου συμβολαίου είναι μια μηχανή αυτόματης πώλησης, η οποία λειτουργεί κάπως παρόμοια με ένα έξυπνο συμβόλαιο όπου συγκεκριμένες ενέργειες εγγυώνται προκαθορισμένα αποτελέσματα. + +- Επιλέγετε ένα προϊόν +- Ο αυτόματος πωλητής εμφανίζει την τιμή +- Πληρώνετε το τίμημα +- Ο αυτόματος πωλητής επαληθεύει ότι πληρώσατε το σωστό ποσό +- Ο αυτόματος πωλητής σας δίνει το αντικείμενο σας + +Ο αυτόματος πωλητής θα σας δώσει το προϊόν σας μόνο όταν θα πληρούνται όλες οι προϋποθέσεις. Αν δεν επιλέξετε ένα προϊόν ή δεν εισάγετε αρκετά χρήματα, ο αυτόματος πωλητής δε θα σας δώσει το προϊόν. + +### Αυτόματη εκτέλεση {#automation} + +Το κύριο πλεονέκτημα ενός έξυπνου συμβολαίου είναι ότι εκτελεί πάντοτε τον σαφή κώδικα όταν πληρούνται συγκεκριμένες προϋποθέσεις. Δε χρειάζεται να περιμένουμε κάποιον να ερμηνεύσει ή να διαπραγματευτεί το αποτέλεσμα. Με αυτό τον τρόπο αφαιρείται η ανάγκη για αξιόπιστους μεσάζοντες. + +Για παράδειγμα, θα μπορούσατε να συντάξετε ένα έξυπνο συμβόλαιο που κρατά κεφάλαια αποταμίευσης για ένα παιδί, επιτρέποντάς το να αποσύρει αυτά τα κεφάλαια μετά από μια συγκεκριμένη ημερομηνία. Εάν προσπαθήσει να κάνει ανάληψη πριν από αυτή την ημερομηνία, το έξυπνο συμβόλαιο δε θα εκτελεστεί. Διαφορετικά, θα μπορούσατε να συντάξετε ένα συμβόλαιο που σας δίνει αυτόματα μια ψηφιακή έκδοση του τίτλου ενός αυτοκινήτου όταν πληρώσετε τον αντιπρόσωπο. + +### Προβλέψιμα αποτελέσματα {#predictability} + +Τα παραδοσιακά συμβόλαια είναι διφορούμενα επειδή βασίζονται στον άνθρωπο για την ερμηνεία και την εφαρμογή τους. Για παράδειγμα, δύο δικαστές πιθανός να ερμηνεύσουν διαφορετικά ένα συμβόλαιο, γεγονός που θα μπορούσε να οδηγήσει σε ασυνεπείς αποφάσεις και άνισα αποτελέσματα. Τα έξυπνα συμβόλαια αφαιρούν αυτή την πιθανότητα. Αντιθέτως, τα έξυπνα συμβόλαια εκτελούνται ακριβώς με βάση τους όρους που αναγράφονται στον κώδικα της σύμβασης. Αυτή η ακρίβεια σημαίνει ότι, δεδομένων των ίδιων περιστάσεων, ένα έξυπνο συμβόλαιο θα αποδώσει το ίδιο αποτέλεσμα. + +### Δημόσια εγγραφή {#public-record} + +Τα έξυπνα συμβόλαια είναι χρήσιμα στον έλεγχο και παρακολούθηση. Δεδομένου ότι τα έξυπνα συμβόλαια του Ethereum βρίσκονται σε δημόσια κρυπτοαλυσίδα, ο καθένας μπορεί να παρακολουθήσει άμεσα τις μεταφορές περιουσιακών στοιχείων και άλλες σχετικές πληροφορίες. Για παράδειγμα, μπορείτε να ελέγξετε ότι κάποιος έστειλε χρήματα στη διεύθυνσή σας. + +### Προστασία ιδιωτικότητας {#privacy-protection} + +Τα έξυπνα συμβόλαια προστατεύσουν επίσης το απόρρητό σας. Δεδομένου ότι το Ethereum είναι ένα δίκτυο με ψευδώνυμα (οι συναλλαγές σας συνδέονται δημοσίως με μια μοναδική κρυπτογραφημένη διεύθυνση και όχι με την ταυτότητά σας), μπορείτε να προστατεύσετε το απόρρητο σας από παρατηρητές. + +### Ορατοί όροι {#visible-terms} + +Τέλος, όπως τα παραδοσιακά συμβόλαια, μπορείτε να ελέγξετε τι υπάρχει σε ένα έξυπνο συμβόλαιο πριν το υπογράψετε (ή να το χειριστείτε διαφορετικά). Η διαφάνεια ενός έξυπνου συμβολαίου εγγυάται ότι ο καθένας μπορεί να το ελέγξει. + +## Χρήσεις ενός έξυπνου συμβολαίου {#use-cases} + +Τα έξυπνα συμβόλαια μπορούν να κάνουν ουσιαστικά οτιδήποτε μπορούν να κάνουν τα προγράμματα υπολογιστών. + +Μπορούν να εκτελέσουν υπολογισμούς, να δημιουργήσουν ένα νόμισμα, να αποθηκεύσουν δεδομένα, να δημιουργήσουν NFT, να επικοινωνήσουν, ακόμη και να δημιουργήσουν γραφικά. Δείτε μερικά δημοφιλή, αληθινά παραδείγματα: + +- [Κρυπτονομίσματα σταθερής αξίας](/stablecoins/) +- [Δημιουργία και διανομή μοναδικών ψηφιακών περιουσιακών στοιχείων](/nft/) +- [Ένα αυτόματο, ανοικτό ανταλλακτήριο νομισμάτων](/get-eth/#dex) +- [Αποκεντρωμένα παιχνίδια](/dapps/?category=gaming) +- [Μια πολιτική ασφάλισης που πληρώνει αυτόματα](https://etherisc.com/) +- [Ένα πρότυπο που επιτρέπει στους ανθρώπους να δημιουργήσουν προσαρμοσμένα και διαλειτουργικά νομίσματα](/developers/docs/standards/tokens/) + +## Περισσότερα από έναν εικονικό μαθητή; {#visual-learner} + +Δείτε τη Finematics να εξηγεί τα έξυπνα συμβόλαια: + + + +## Περισσότερες πληροφορίες {#further-reading} + +- [Πώς θα αλλάξουν τον κόσμο τα έξυπνα συμβόλαια](https://www.youtube.com/watch?v=pA6CGuXEKtQ) +- [Έξυπνα Συμβόλαια: Η τεχνολογία blockchain που θα αντικαταστήσει τους δικηγόρους](https://blockgeeks.com/guides/smart-contracts/) +- [Έξυπνες συμβόλαια για προγραμματιστές](/developers/docs/smart-contracts/) +- [Μάθετε να συντάσσετε έξυπνα συμβόλαια](/developers/learning-tools/) +- [Mastering Ethereum - Τι είναι ένα έξυπνο συμβόλαιο;](https://github.com/ethereumbook/ethereumbook/blob/develop/07smart-contracts-solidity.asciidoc#what-is-a-smart-contract) diff --git a/src/content/translations/el/social-networks/index.md b/src/content/translations/el/social-networks/index.md new file mode 100644 index 00000000000..6f4eab9508f --- /dev/null +++ b/src/content/translations/el/social-networks/index.md @@ -0,0 +1,121 @@ +--- +title: Αποκεντρωμένα κοινωνικά δίκτυα +description: Μια επισκόπηση των αποκεντρωμένων κοινωνικών δικτύων στο Ethereum +lang: el +template: use-cases +emoji: ":mega:" +sidebarDepth: 2 +image: ../../../../assets/ethereum-learn.png +summaryPoint1: Πλατφόρμες βασισμένες στο Blockchain για κοινωνική αλληλεπίδραση, δημιουργία και διανομή περιεχομένου. +summaryPoint2: Τα αποκεντρωμένα κοινωνικά δίκτυα μέσων ενημέρωσης, προστατεύουν την ιδιωτικότητα των χρηστών και ενισχύουν την ασφάλεια των δεδομένων. +summaryPoint3: Τα κρυπτονομίσματα και τα NFT δημιουργούν νέους τρόπους δημιουργίας κέρδους από περιεχόμενο. +--- + +Τα κοινωνικά δίκτυα έχουν τεράστιο ρόλο στις καθημερινές μας επικοινωνίες και αλληλεπιδράσεις. Ωστόσο, ο κεντρικός έλεγχος αυτών των πλατφορμών έχει δημιουργήσει πολλά προβλήματα: παραβιάσεις δεδομένων, διακοπές του διακομιστή, de-platforming, λογοκρισία και παραβιάσεις των προσωπικών δεδομένων είναι μερικές από τις συνέπειες που τα μέσα κοινωνικής δικτύωσης κάνουν συχνά. Για την καταπολέμηση αυτών των θεμάτων, οι προγραμματιστές φτιάχνουν κοινωνικά δίκτυα στο Ethereum. Τα αποκεντρωμένα κοινωνικά δίκτυα μπορούν να διορθώσουν αρκετά από τα προβλήματα των παραδοσιακών πλατφορμών κοινωνικής δικτύωσης και να βελτιώσουν τη συνολική εμπειρία των χρηστών. + +## Αποκεντρωμένα κοινωνικά δίκτυα {#what-are-decentralized-social-networks} + +Τα αποκεντρωμένα κοινωνικά δίκτυα είναι πλατφόρμες βασισμένες στο blockchain που επιτρέπουν στους χρήστες να ανταλλάσσουν πληροφορίες, καθώς και να δημοσιεύουν και να διανέμουν περιεχόμενο σε ακροατήρια. Επειδή αυτές οι εφαρμογές λειτουργούν στο blockchain, μπορούν να αποκεντρωθούν και είναι ανθεκτικές στη λογοκρισία και τον αδικαιολόγητο έλεγχο. + +Πολλά αποκεντρωμένα κοινωνικά δίκτυα υπάρχουν ως εναλλακτικές λύσεις σε καθιερωμένες υπηρεσίες κοινωνικών μέσων, όπως το Facebook, το LinkedIn, το Twitter και το Medium. Ωστόσο, τα κοινωνικά δίκτυα που υποστηρίζονται από κρυπτοαλυσίδα έχουν μια σειρά από χαρακτηριστικά που τα τοποθετούν μπροστά από τις παραδοσιακές κοινωνικές πλατφόρμες. + +### Λειτουργία των αποκεντρωμένων κοινωνικών δικτύων {#decentralized-social-networks-overview} + +Τα αποκεντρωμένα κοινωνικά δίκτυα είναι μια κατηγορία [αποκεντρωμένων εφαρμογών (dapps)](/dapps/). Εφαρμογές που υποστηρίζονται από [έξυπνα συμβόλαια](/developers/docs/smart-contracts/) που αναπτύσσονται στην κρυπτοαλυσίδα. Ο κωδικός συμβολαίου χρησιμεύει ως υποστήριξη για αυτές τις εφαρμογές και καθορίζει την επιχειρηματική τους λογική. + +Οι παραδοσιακές πλατφόρμες μέσων κοινωνικής δικτύωσης βασίζονται σε βάσεις δεδομένων για την αποθήκευση των πληροφοριών χρήστη, του κώδικα προγράμματος και άλλων μορφών δεδομένων. Αυτό δημιουργεί ορισμένα σημεία αποτυχίας και προσθέτει σημαντική επικινδυνότητα. Για παράδειγμα, οι διακομιστές του Facebook [βγήκαν πέρυσι εκτός σύνδεσης για ώρες](https://www.npr.org/2021/10/05/1043211171/facebook-instagram-whatsapp-outage-business-impact), αποκόπτοντας τους χρήστες από την πλατφόρμα. + +Τα αποκεντρωμένα κοινωνικά δίκτυα υπάρχουν σε ένα δίκτυο από χρήστη σε χρήστη περιλαμβάνοντας χιλιάδες κόμβους σε όλο τον κόσμο. Ακόμα και αν κάποιοι κόμβοι αποτύχουν, το δίκτυο θα λειτουργεί αδιάκοπα, καθιστώντας τις εφαρμογές ανθεκτικές σε αστοχίες και διακοπές λειτουργίας. + +Χρησιμοποιώντας αποκεντρωμένα συστήματα αποθήκευσης όπως το [InterPlanetary File System (IPFS)](https://ipfs.io/), τα κοινωνικά δίκτυα που δημιουργήθηκαν στο Ethereum μπορούν να προστατεύσουν τις πληροφορίες των χρηστών από διαρροή και κακόβουλη χρήση. Κανείς δε θα πουλήσει τα προσωπικά σας στοιχεία σε διαφημιστές, ούτε οι χάκερ θα μπορούν να κλέψουν τα εμπιστευτικά σας στοιχεία. + +Πολλές πλατφόρμες κοινωνικής δικτύωσης που βασίζονται σε blockchain διαθέτουν δικό τους κρυπτονόμισμα ενισχύοντας τη δημιουργία εσόδων χωρίς τη χρήση διαφημίσεων. Οι χρήστες μπορούν να αγοράσουν αυτά τα ψηφιακά στοιχεία για να αποκτήσουν πρόσβαση σε ορισμένες λειτουργίες, να ολοκληρώσουν αγορές εντός της εφαρμογής ή να δώσουν συμβουλές στους αγαπημένους τους δημιουργούς περιεχομένου. + +## Πλεονεκτήματα αποκεντρωμένων κοινωνικών δικτύων {#benefits} + +1. Τα αποκεντρωμένα κοινωνικά δίκτυα είναι ανθεκτικά στη λογοκρισία και είναι ανοιχτά για όλους. Αυτό σημαίνει ότι οι χρήστες δεν μπορούν να αποκλειστούν, να τροποποιηθούν ή να περιοριστούν αυθαίρετα. + +2. Τα αποκεντρωμένα κοινωνικά δίκτυα έχουν δημιουργηθεί με εφαρμογές ανοιχτού κώδικα και καθιστούν τον πηγαίο κώδικά τους διαθέσιμο για δημόσιο έλεγχο. Καταργώντας την εφαρμογή αδιαφανών αλγορίθμων που είναι κοινά στα παραδοσιακά μέσα κοινωνικής δικτύωσης, αυτά που βασίζονται σε τεχνολογία blockchain μπορούν να ευθυγραμμίσουν τα ενδιαφέροντα των χρηστών και των δημιουργών πλατφορμών. + +3. Τα αποκεντρωμένα κοινωνικά δίκτυα εξαλείφουν τον «μεσάζοντα». Οι δημιουργοί περιεχομένου έχουν άμεση κυριότητα του περιεχομένου τους και αλληλεπιδρούν απευθείας με τους ακόλουθους, τους θαυμαστές, τους αγοραστές και άλλους, μόνο με τη μεσολάβηση του έξυπνου συμβολαίου μεταξύ τους. + +4. Καθώς οι dapp που εκτελούνται στο δίκτυο Ethereum, το οποίο υποστηρίζεται από ένα παγκόσμιο από χρήστη σε χρήστη δίκτυο κόμβων, τα αποκεντρωμένα κοινωνικά δίκτυα είναι λιγότερο επιρρεπή σε σφάλματα διακομιστή και διακοπές λειτουργίας. + +5. Οι αποκεντρωμένες πλατφόρμες κοινωνικής δικτύωσης προσφέρουν ένα βελτιωμένο πλαίσιο δημιουργίας εσόδων για δημιουργούς περιεχομένου, μέσω των μη εναλλάξιμων διακριτικών (NFT), πληρωμών κρυπτονομισμάτων εντός εφαρμογής και άλλων. + +6. Τα αποκεντρωμένα κοινωνικά δίκτυα προσφέρουν στους χρήστες υψηλό επίπεδο ιδιωτικότητας και ανωνυμίας. Για παράδειγμα, ένα άτομο μπορεί να συνδεθεί σε ένα κοινωνικό δίκτυο που βασίζεται στο Ethereum χρησιμοποιώντας ένα προφίλ ή πορτοφόλι ENS, χωρίς να χρειάζεται να μοιράζεται στοιχεία προσωπικής ταυτοποίησης (PII), όπως ονόματα, διευθύνσεις email κλπ. + +7. Τα αποκεντρωμένα κοινωνικά δίκτυα βασίζονται σε αποκεντρωμένη αποθήκευση και όχι σε κεντρικές βάσεις δεδομένων, οι οποίες είναι πολύ καλύτερες για την προστασία των δεδομένων χρήστη. + +## Αποκεντρωμένα κοινωνικά δίκτυα στο Ethereum {#ethereum-social-networks} + +Το δίκτυο Ethereum έχει γίνει το προτιμώμενο εργαλείο για προγραμματιστές που δημιουργούν αποκεντρωμένα μέσα κοινωνικής δικτύωσης, λόγω της δημοτικότητας των κρυπτονομισμάτων του (ERC-20/ERC-721) και της τεράστιας βάσης χρηστών του. Δείτε μερικά παραδείγματα κοινωνικών δικτύων που βασίζονται στο Ethereum: + +### Peepeth {#peepeth} + +Το [Peepeth](https://peepeth.com/) είναι μια πλατφόρμα microblogging παρόμοια με το Twitter. Λειτουργεί στο blockchain του Ethereum και χρησιμοποιεί IPFS για την αποθήκευση δεδομένων χρήστη. + +Οι χρήστες μπορούν να ανταλλάσουν σύντομα μηνύματα που ονομάζονται «Peeps», τα οποία δεν μπορούν να διαγραφούν ή να τροποποιηθούν. Μπορείτε να στείλετε χρήματα ή να λάβετε δωρεές σε οποιονδήποτε στην πλατφόρμα σε Ether (ETH) μέσα από την εφαρμογή. + +### Mirror {#mirror} + +Το [Mirror](https://mirror.xyz/) είναι μια πλατφόρμα γραφής με δυνατότητα web3 που στοχεύει να είναι αποκεντρωμένη και να ανήκει στους χρήστες. Οι χρήστες μπορούν να διαβάζουν και να γράφουν δωρεάν στο Mirror συνδέοντας απλά τα πορτοφόλια τους. Οι χρήστες μπορούν επίσης να συλλέγουν άρθρα και να εγγραφούν στους αγαπημένους τους συγγραφείς. + +Οι αναρτήσεις που δημοσιεύονται στο Mirror αποθηκεύονται μόνιμα στο Arweave, μια αποκεντρωμένη πλατφόρμα αποθήκευσης και μπορούν να κοπούν ως συλλεκτικά [μη εναλλάξιμα κρυπτοπαραστατικά (NFT)](/nft/) γνωστά ως Writing NFT. Τα Writing NFT είναι εντελώς δωρεάν για να δημιουργηθούν από τους συγγραφείς και η συλλογή τους γίνεται στο Ethereum L2, καθιστώντας τις συναλλαγές φθηνές, γρήγορες και φιλικές προς το περιβάλλον. + +### MINDS {#minds} + +Το [MINDS](https://www.minds.com/) είναι ένα από τα πιο χρησιμοποιούμενα αποκεντρωμένα κοινωνικά δίκτυα. Λειτουργεί όπως το Facebook και έχει ήδη συγκεντρώσει εκατομμύρια χρήστες. + +Οι χρήστες χρησιμοποιούν το κρυπτονόμισμα ERC-20 της πλατφόρμας $MIND για να πληρώσουν για αντικείμενα. Οι χρήστες μπορούν επίσης να κερδίσουν κρυπτονομίσματα $MIND δημοσιεύοντας δημοφιλές περιεχόμενο, συνεισφέροντας στο οικοσύστημα και παραπέμποντας άλλους στην πλατφόρμα. + +## Κοινωνικά δίκτυα Web2 στο Ethereum {#web2-social-networks-and-ethereum} + +Οι εγγενείς πλατφόρμες κοινωνικής δικτύωσης [Web3](/web3/) δεν είναι οι μόνες που προσπαθούν να ενσωματώσουν την τεχνολογία κρυπτοαλυσίδας στα μέσα κοινωνικής δικτύωσης. Πολλές κεντρικές πλατφόρμες σχεδιάζουν επίσης να ενσωματώσουν το Ethereum στην υποδομή τους: + +### Reddit {#reddit} + +Το Reddit έχει [πόντους από διαφημίσεις στην κοινότητα](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users), οι οποίοι είναι [κουπόνια ERC-20](/developers/docs/standards/tokens/erc-20/) που μπορούν να κερδίσουν οι χρήστες δημοσιεύοντας ποιοτικό περιεχόμενο και συνεισφέροντας σε διαδικτυακές κοινότητες (subreddits). Μπορείτε να εξαργυρώσετε αυτά τα κρυπτονομίσματα μέσα σε ένα subreddit για να [λάβετε αποκλειστικά προνόμια](https://www.reddit.com/community-points/). Για αυτό το έργο, το Reddit συνεργάζεται με το Arbitrum, μια συλλογή [επιπέδου 2](/layer-2/) που έχει σχεδιαστεί για την κλιμακωτή αναβάθμιση των συναλλαγών στο Ethereum. + +Το πρόγραμμα είναι ήδη σε λειτουργία, με το subreddit r/CryptoCurrency [που εκτελεί την έκδοση των σημείων κοινότητας που ονομάζεται "Moons"](https://www.reddit.com/r/CryptoCurrency/wiki/moons_wiki). Σύμφωνα με την επίσημη περιγραφή, το Moons «επιβραβεύει αφίσες, σχολιαστές και συντονιστές για τη συνεισφορά τους στο subreddit». Επειδή αυτά τα κρυπτονομίσματα βρίσκονται στην κρυπτοαλυσίδα (οι χρήστες τα λαμβάνουν σε πορτοφόλια), είναι ανεξάρτητα από το Reddit και δεν μπορούν να αφαιρεθούν. + +Μετά την ολοκλήρωση μιας φάσης beta στο δίκτυο δοκιμών του Rinkeby, οι πόντοι της κοινότητας Reddit βρίσκονται τώρα σε [Arbitrum Nova](https://nova.arbitrum.io/), μια κρυπτοαλυσίδα που συνδυάζει τις ιδιότητες μιας [πλευρικής αλυσίδας](/developers/docs/scaling/sidechains/) και ενός [optimistic πακέτου ενημέρωσης](/developers/docs/scaling/optimistic-rollups/). Εκτός από τη χρήση πόντων κοινότητας για την πρόσβαση σε ειδικές λειτουργίες, οι χρήστες μπορούν επίσης να τους ανταλλάξουν με fiat σε ανταλλακτήρια. Επίσης, ο αριθμός των πόντων κοινότητας που κατέχει ένας χρήστης καθορίζει την επιρροή τους στη διαδικασία λήψης αποφάσεων εντός της κοινότητας. + +### Twitter {#twitter} + +Τον Ιανουάριο του 2021, το Twitter Blue [κυκλοφόρησε την υποστήριξη για NFT](https://mashable.com/article/twitter-blue-nft-profile-picture), επιτρέποντας στους χρήστες να συνδέουν τα πορτοφόλια τους και να εμφανίζουν τα NFT ως φωτογραφίες προφίλ. Τη στιγμή που γράφονται αυτές οι γραμμές, η εταιρεία κοινωνικών μέσων έχει επίσης [ανακοινώσει σχέδια](https://www.theverge.com/2021/8/16/22627435/twitter-bluesky-lead-jay-graber-decentralized-social-web) για τη δημιουργία ενός αποκεντρωμένου κοινωνικού δικτύου στο μέλλον. + +### Instagram {#instagram} + +Τον Μάιο του 2022, το [Instagram ανακοίνωσε υποστήριξη για NFT](https://about.instagram.com/blog/announcements/instagram-digital-collectibles) στο Ethereum και το Polygon. Οι χρήστες μπορούν να δημοσιεύουν NFT απευθείας στο Instagram συνδέοντας το πορτοφόλι τους Ethereum. + +## Χρήση αποκεντρωμένων κοινωνικών δικτύων {#use-decentralized-social-networks} + +- **[Status.im](https://status.im/)** - _Το Status είναι μια ασφαλής εφαρμογή ανταλλαγής μηνυμάτων που χρησιμοποιεί το πρωτόκολλο ανοιχτού κώδικα, από χρήστη σε χρήστη και κρυπτογράφηση από άκρο σε άκρο για προστασία των μηνυμάτων σας από τρίτα μέρη._ +- **[Mirror.xyz](https://mirror.xyz/)** - _Το Mirror είναι αποκεντρωμένη, προσωπική πλατφόρμα δημοσιεύσεων, βασισμένη στο Ethereum, ώστε οι χρήστες να συγκεντρώνουν ιδέες, να δημιουργούν έσοδα από περιεχόμενο και να δημιουργούν κοινότητες υψηλής αξίας._ +- **[Το πρωτόκολλο Lens](https://lens.xyz/)** - _Το πρωτόκολλο Lens είναι αποκεντρωμένο κοινωνικό γράφημα που βοηθά τους δημιουργούς να αποκτήσουν την κυριότητα του περιεχομένου τους όπου και αν πάνε στον ψηφιακό κήπο του αποκεντρωμένου Διαδικτύου._ +- **[Farcaster](https://farcaster.xyz/)** - _Το Farcaster είναι επαρκώς αποκεντρωμένο κοινωνικό δίκτυο. Είναι ένα ανοιχτό πρωτόκολλο που μπορεί να υποστηρίξει πολλούς πελάτες, όπως και το email._ + +## Περισσότερες πληροφορίες {#further-reading} + +### Άρθρα {#articles} + +- [Αποκέντρωση μέσων κοινωνικής δικτύωσης: ένας οδηγός για τα κοινωνικά δίκτυα web3](https://www.coinbase.com/blog/decentralizing-social-media-a-guide-to-the-web3-social-stack) - _Coinbase Ventures_ +- [Τα κοινωνικά δίκτυα είναι η επόμενη μεγάλη ευκαιρία αποκέντρωσης](https://www.coindesk.com/tech/2021/01/22/social-networks-are-the-next-big-decentralization-opportunity/) — _Ben Goertzel_ +- [Το Web3 υπόσχεται αποκεντρωμένα κοινωνικά δίκτυα που υποστηρίζονται από την κοινότητα](https://venturebeat.com/2022/02/26/web3-holds-the-promise-of-decentralized-community-powered-social-networks/) — _Sumit Ghosh_ +- [Μια επισκόπηση του χώρου των μέσων κοινωνικής δικτύωσης σε Blockchain](https://www.gemini.com/cryptopedia/blockchain-social-media-decentralized-social-media) — _Cryptopedia Gemini_ +- [Πώς το Blockchain μπορεί να λύσει το απόρρητο των μέσων κοινωνικής δικτύωσης](https://www.investopedia.com/news/ethereum-blockchain-social-media-privacy-problem-linkedin-indorse/) — _Prableen Bajpai_ +- [Τα δίκτυα κοινωνικών μέσων έρχονται στο Blockchain](https://businesstechguides.co/what-are-decentralized-social-networks) — _Emmanuel Awosika_ +- [Επαρκής αποκέντρωση για κοινωνικά δίκτυα](https://www.varunsrinivasan.com/2022/01/11/sufficient-decentralization-for-social-networks) — _Varun Srinivasan_ + +### Βίντεο {#videos} + +- [Επεξήγηση αποκεντρωμένων μέσων κοινωνικής δικτύωσης](https://www.youtube.com/watch?v=UdT2lpcGvcQ) — _Coinmarketcap_ +- [Η DeSo Blockchain θέλει να αποκεντρώσει τα μέσα κοινωνικής δικτύωσης](https://www.youtube.com/watch?v=SG2HUiVp0rE) — _Τεχνολογία Bloomberg_ +- [Το μέλλον των αποκεντρωμένων μέσων κοινωνικής δικτύωσης των Balaji Srinivasan, Vitalik Buterin, Juan Benet](https://www.youtube.com/watch?v=DTxE9KV3YrE) — _ETHGlobal_ + +### Κοινότητες {#communities} + +- [Κατάσταση διακομιστή Discord](https://discord.com/invite/3Exux7Y) +- [Εναλλακτικός διακομιστής Discord](https://discord.com/invite/txuCHcE8wV) +- [r/CryptoCurrency subreddit](https://www.reddit.com/r/CryptoCurrency/) diff --git a/src/content/translations/es/developers/docs/apis/backend/index.md b/src/content/translations/es/developers/docs/apis/backend/index.md index 79c7fced3d1..70dc57e07a2 100644 --- a/src/content/translations/es/developers/docs/apis/backend/index.md +++ b/src/content/translations/es/developers/docs/apis/backend/index.md @@ -6,13 +6,13 @@ lang: es Para que una aplicación de software interactúe con la blockchain de Ethereum (por ejemplo, para que lea datos de la blockchain y/o envíe transacciones a la red), debe conectarse a un nodo de Ethereum. -Para ello, cada cliente de Ethereum implementa la especificación JSON-RPC para ofrecer un conjunto uniforme de endpoints con los que pueden contar las aplicaciones. +Para este propósito, cada cliente de Ethereum implementa la especificación [JSON-RPC](/developers/docs/apis/json-rpc/) de modo que exista un conjunto uniforme de [métodos](/developers/docs/apis/json-rpc/#json-rpc-methods) para las aplicaciones. Si deseas utilizar un lenguaje de programación específico para conectarte a un nodo Ethereum, inicia tu propia solución y ten en cuenta que hay varias bibliotecas dentro del ecosistema que lo hacen mucho más fácil. Mediante estas bibliotecas, los desarrolladores pueden escribir métodos intuitivos de una línea para iniciar solicitudes JSON RPC (de manera invisible), que interactúan con Ethereum. ## Requisitos previos {#prerequisites} -Comprender el [bloque de Ethereum](/developers/docs/ethereum-stack/) y a los [clientes de Ethereum](/docs/nodes-and-clients/) puede resultar útil. +Comprender la [pila de Ethereum](/developers/docs/ethereum-stack/) y los [clientes de Ethereum](/developers/docs/nodes-and-clients/) puede resultar útil. ## ¿Por qué usar una biblioteca? {#why-use-a-library} @@ -22,78 +22,161 @@ Estas bibliotecas eliminan en gran parte la complejidad de interactuar directame **Alchemy:** **_Plataforma de desarrollo de Ethereum._** -- [alchemyapi.io](https://alchemyapi.io) +- [alchemy.com](https://www.alchemy.com/) - [Documentación](https://docs.alchemyapi.io/) - [GitHub](https://github.com/alchemyplatform) -- [Discord](https://discord.gg/kwqVnrA) +- [Discord](https://discord.com/invite/A39JVCM) -**BlockCypher:** **_API web de Ethereum_** +**BlockCypher:** **_API web de Ethereum._** - [blockcypher.com](https://www.blockcypher.com/) - [Documentación](https://www.blockcypher.com/dev/ethereum/) +**Blast by Bware Labs:** **_API descentralizadas para redes de prueba y la red principal de Ethereum._** + +- [blastapi.io](https://blastapi.io/) +- [Documentación](https://docs.blastapi.io) +- [Discord](https://discord.com/invite/VPkWESgtvV) + **Infura: ** **_La API de Ethereum como servicio._** - [infura.io](https://infura.io) - [Documentación](https://infura.io/docs) - [GitHub](https://github.com/INFURA) -**La puerta de enlace de Ethereum Cloudflare.** +**Cloudflare Ethereum Gateway.** - [cloudflare-eth.com](https://cloudflare-eth.com) -**Nodesmith:** **_Acceso de API JSON-RPC a la red principal de Ethereum y a redes de prueba._** +**Coinbase Cloud Node:** **_API de infraestructura de cadena de bloques._** + +- [Coinbase Cloud Node](https://www.coinbase.com/cloud/products/node) +- [Documentación](https://docs.cloud.coinbase.com/node/reference/welcome-to-node) + +**DataHub by Figment:\*\*** _Servicios de API web3 con redes de prueba y la red principal de Ethereum._\*\* + +- [DataHub](https://www.figment.io/datahub) +- [Documentación](https://docs.figment.io/introduction/what-is-datahub) + +**NFTPort:** **_API de datos y minteo de Ethereum._** + +- [puertonft.xyz](https://www.nftport.xyz/) +- [Documentación](https://docs.nftport.xyz/) +- [GitHub](https://github.com/nftport/) +- [Discord](https://discord.com/invite/K8nNrEgqhE) + +**Nodesmith:** **_Acceso de API JSON-RPC a redes de prueba y la red principal de Ethereum._** - [nodesmith.io](https://nodesmith.io/network/ethereum/) - [Documentación](https://nodesmith.io/docs/#/ethereum/apiRef) -**Ethercluster:** **_Inicia tu propio servicio API de Ethereum compatible con ETH y ETC._** +**Ethercluster:** **_Inicie su propio servicio de API de Ethereum compatible con ETH y ETC._** - [ethercluster.com](https://www.ethercluster.com/) -**Chainstack:** **_Nodos de Ethereum como un servicio compartidos y exclusivos._** +**Chainstack:** **_Nodos elásticos y dedicados de Ethereum como servicio._** - [chainstack.com](https://chainstack.com) - [Documentación](https://docs.chainstack.com) +- [Referencia de API de Ethereum](https://docs.chainstack.com/api/ethereum/ethereum-api-reference) -**QuikNode:** **_Plataforma de desarrollo de blockchain._** +**QuickNode:** **_Infraestructura de cadena de bloques como servicio._** -- [quiknode.io](https://quiknode.io) +- [quicknode.com](https://quicknode.com) +- [Documentación](https://www.quicknode.com/docs) +- [Discord](https://discord.gg/NaR7TtpvJq) **Herramientas de Python:** **_Variedad de bibliotecas para interactuar con Ethereum a través de Python._** - [py.ethereum.org](http://python.ethereum.org/) -- [GitHub de web3.py](https://github.com/ethereum/web3.py) +- [Github de web3.py](https://github.com/ethereum/web3.py) - [Chat de web3.py](https://gitter.im/ethereum/web3.py) **web3j:** **_Biblioteca de integración de Java/Android/Kotlin/Scala para Ethereum._** - [GitHub](https://github.com/web3j/web3j) -- [Documentación](https://docs.web3j.io/) +- [Documentos](https://docs.web3j.io/) - [Gitter](https://gitter.im/web3j/web3j) -**Rivet: ** **_API de Ethereum y Ethereum Classic como un servicio impulsado por software de código abierto._** +**Rivet:** **_API de Ethereum y Ethereum Classic como servicio impulsadas por software de código abierto._** - [rivet.cloud](https://rivet.cloud) - [Documentación](https://rivet.cloud/docs/) - [GitHub](https://github.com/openrelayxyz/ethercattle-deployment) -**Nethereum:** **_Una biblioteca de integración .NET de código abierto para blockchain._** +**Nethereum:** **_Biblioteca de integración .NET de código abierto para la cadena de bloques._** - [GitHub](https://github.com/Nethereum/Nethereum) - [Documentación](http://docs.nethereum.com/en/latest/) - [Discord](https://discord.com/invite/jQPrR58FxX) +**Tatum:** **_Plataforma definitiva de desarrollo de cadena de bloques._** + +- [Tatum](https://tatum.io/) +- [GitHub](https://github.com/tatumio/) +- [Documentación](https://docs.tatum.io/) +- [Discord](https://discord.gg/EDmW3kjTC9) + +**Watchdata:** **_Proporcione acceso sencillo y seguro de API a la cadena de bloques de Ethereum._** + +- [Watchdata](https://watchdata.io/) +- [Documentación](https://docs.watchdata.io/) +- [Discord](https://discord.com/invite/TZRJbZ6bdn) + +**Zmok:** **_Nodos Ethereum orientados a la velocidad como API JSON-RPC/WebSockets._** + +- [zmok.io](https://zmok.io/) +- [GitHub](https://github.com/zmok-io) +- [Documentación](https://docs.zmok.io/) +- [Discord](https://discord.gg/fAHeh3ka6s) + +**NOWNodes: _Nodos completos y exploradores de bloques._** + +- [NOWNodes.io](https://nownodes.io/) +- [Documentación](https://documenter.getpostman.com/view/13630829/TVmFkLwy#intro) + +**Moralis:** **_Proveedor de API de EVM de nivel empresarial._** + +- [moralis.io](http://moralis.io) +- [Documentación](https://docs.moralis.io/) +- [GitHub](https://github.com/MoralisWeb3) +- [Discord](https://discord.com/invite/KYswaxwEtg) +- [Foro](https://forum.moralis.io/) + +**Chainbase:** **_Infraestructura de datos web3 de Ethereum todo en uno._** + +- [chainbase.com](https://chainbase.com/) +- [Documentación](https://docs.chainbase.com/) +- [Discord](https://discord.gg/Wx6qpqz4AF) + +**GetBlock:** **_Cadena de bloques como servicio para el desarrollo web3_** + +- [GetBlock.io](https://getblock.io/) +- [Documentación](https://getblock.io/docs/) + +**BlockPi:\*\***_ Proporcione servicios RPC más eficientes y rápidos._\*\* + +- [blockpi.io](https://blockpi.io/) +- [Documentación](https://docs.blockpi.io/) +- [GitHub](https://github.com/BlockPILabs) +- [Discord](https://discord.com/invite/xTvGVrGVZv) + +**Tokenview:** **_La plataforma general de API de Blockchain Multi-Crypto._** + +- [services.tokenview.io](https://services.tokenview.io/) +- [Documentación](https://services.tokeniew/docs?type=api) +- [Github](https://github.com/Tokenview) + ## Más información {#further-reading} -_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ +_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._ ## Temas relacionados {#related-topics} -- [Nodos y clientes](/developers/docs/nodes-and-clients/) -- [Frameworks de desarrollo](/developers/docs/frameworks/) +- [ Nodos y clientes](/developers/docs/nodes-and-clients/) +- [Entornos de desarrollo](/developers/docs/frameworks/) ## Tutoriales relacionados {#related-tutorials} -- [Configurar Web3js para utilizar la blockchain de Ethereum en JavaScript:](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _ Instrucciones para configurar web3.js en tu proyecto._ -- [Solicitar un contrato inteligente desde JavaScript:](/developers/tutorials/calling-a-smart-contract-from-javascript/) _ con ayuda del token Dai, ver como invocar funciones de contratos usando JavaScript._ +- [Configurar Web3js para utilizar la cadena de bloques de Ethereum en Javascript:](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _Instrucciones para configurar web3.js en su proyecto._ +- [Invocar un contrato inteligente desde JavaScript:](/developers/tutorials/calling-a-smart-contract-from-javascript/) _ con el token DAI, vea cómo invocar funciones de contratos usando Javascript._ diff --git a/src/content/translations/es/developers/docs/apis/javascript/index.md b/src/content/translations/es/developers/docs/apis/javascript/index.md index 5b697c42a82..6e80359ed9c 100644 --- a/src/content/translations/es/developers/docs/apis/javascript/index.md +++ b/src/content/translations/es/developers/docs/apis/javascript/index.md @@ -6,33 +6,35 @@ lang: es Para que una aplicación web interactúe con el blockchain de Ethereum (es decir, para que lea datos de blockchain y/o envíe transacciones a la red), este debe conectarse a un nodo de Ethereum. -Con esta finalidad, cada cliente de Ethereum implementa la especificación de JSON-RPC (protocolo Remote Procedure Call codificado en JSON) para que haya un conjunto uniforme de puntos finales "endpoints" en los que las aplicaciones pueden confiar. +Para esto, cada cliente de Ethereum implementa una especificacion [JSON-RPC](/developers/docs/apis/json-rpc/), para que haya un grupo uniforme de [endpoints](/developers/docs/apis/json-rpc/#json-rpc-methods) en que las aplicaciones pueden confiar. Si quieres usar JavaScript para conectar con un nodo de Ethereum, puedes usar VanillaJS (Vanilla JavaScript). Sin embargo, hay varias bibliotecas de conveniencia que existen dentro del ecosistema que lo simplifican. Con estas bibliotecas, los desarrolladores pueden escribir intuitivamente métodos de una línea para iniciar requerimientos de JSON RPC (de manera oculta) que interactúan con Ethereum. +Tenga en cuenta que desde [La Fusión](/roadmap/merge/), dos piezas conectadas de software de Ethereum― un cliente de ejecucion y un cliente de consenso― son necesarias para ejecutar un nodo. Asegúrese de que su nodo incluya tanto un cliente de ejecución como un cliente de consenso. Si su nodo no se encuentra en su computadora local (por ejemplo, se ejecuta en una instancia de AWS), actualice las direcciones IP en el tutorial según corresponda. Para obtener más información, vea nuestra página sobre [ejecutar un nodo](/developers/docs/nodes-and-clients/run-a-node/). + ## Requisitos previos {#prerequisites} -Además de para comprender JavaScript, podría ser útil para entender el [bloque de Ethereum](/developers/docs/ethereum-stack/) y a los [clientes de Ethereum](/developers/docs/nodes-and-clients/). +Además de para comprender JavaScript, podría ser útil entender la [pila de Ethereum](/developers/docs/ethereum-stack/) y los [clientes de Ethereum](/developers/docs/nodes-and-clients/). ## ¿Por qué usar una biblioteca? {#why-use-a-library} -Estas bibliotecas eliminan en gran parte la complejidad de interactuar directamente con un nodo Ethereum. También proporcionan funciones útiles (por ejemplo, convertir ETH a Gwei) de modo que, como desarrollador, puedas dedicar menos tiempo a lidiar con las complejidades de los clientes de Ethereum y centrarte más en las características únicas de tu aplicación. +Estas bibliotecas eliminan en gran parte la complejidad de interactuar directamente con un nodo Ethereum. Estas también proporcionan funciones útiles (p. ej., convertir ETH a Gwei) para que así un desarrollador gaste menos tiempo tratando con las complejidades de los clientes de Ethereum y pase más tiempo enfocado en la funcionalidad única de tu aplicación. ## Características de la biblioteca {#library-features} ### Conectar a nodos Ethereum {#connect-to-ethereum-nodes} -Mediante proveedores, estas bibliotecas te permiten conectarte a Ethereum y leer tus datos, ya sea sobre JSON-RPC, INFURA, Etherscan, Alchemy o MetaMask. +Mediante proveedores, estas bibliotecas le permiten conectarse a Ethereum y leer sus datos, ya sea sobre JSON-RPC, INFURA, Etherscan, Alchemy o MetaMask. -**Ejemplo de Ether** +**Ejemplo de Ethers** ```js -// Un Web3Provider enlaza un proveedor estándar Web3, en el -// que MetaMask se inyecta como window.ethereum en cada página +// A Web3Provider wraps a standard Web3 provider, which is +// what MetaMask injects as window.ethereum into each page const provider = new ethers.providers.Web3Provider(window.ethereum) -// El plugin MetaMask también permite firmar transacciones para -// enviar Ether y pagar el cambio de estado dentro de la blockchain. +// The MetaMask plugin also allows signing transactions to +// send ether and pay to change state within the blockchain. // Para esto, necesitamos al titular de la cuenta... const signer = provider.getSigner() ``` @@ -61,7 +63,7 @@ var web3 = new Web3( // en Linux, la ruta es: "/users/myuser/.ethereum/geth.ipc" ``` -Una vez configurado, estarás habilitado para consultar en la blockchain: +Una vez configurado, estará habilitado a consultar en la cadena de bloques: - números de bloque - estimaciones del gas @@ -71,79 +73,79 @@ Una vez configurado, estarás habilitado para consultar en la blockchain: ### Funcionalidad de la cartera {#wallet-functionality} -Estas bibliotecas te darán la funcionalidad para crear carteras, administrar claves y firmar transacciones. +Estas bibliotecas le darán la funcionalidad para crear billeteras, administrar claves y firmar transacciones. A continuación se incluyen algunos ejemplos de Ethers ```js // Crear una instancia de la cartera desde un mnemonic... mnemonic = - "anuncia el patrón de miembro de la sala a escala seca esfuerzo de escala suave de weasel de jazz" -walletMnemonic = Wallet.romMnemonic(mnemonic) + "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol" +walletMnemonic = Wallet.fromMnemonic(mnemonic) // ...or from a private key walletPrivateKey = new Wallet(walletMnemonic.privateKey) -walletMnemonic.ddress === walletPrivateKey.address -// verdadero +walletMnemonic.address === walletPrivateKey.address +// true -// La dirección como una promesa por la cartera de Signer API -Mnemonic.etAddress() +// The address as a Promise per the Signer API +walletMnemonic.getAddress() // { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' } -// Una dirección de cartera también está disponible sincrónicamente -walletMnemonic.ddress +// A Wallet address is also available synchronously +walletMnemonic.address // '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' -// Los componentes criptográficos internos +// The internal cryptographic components walletMnemonic.privateKey // '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db' -walletMnemonic.ublicKey +walletMnemonic.publicKey // '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64' -// El mnemónico del monedero -walletMnemonic.nemonic +// The wallet mnemonic +walletMnemonic.mnemonic // { -// locale: 'en', -// ruta: 'm/44\'/60\'/0\'/0/0', -// frase: 'anunciar el patrón de miembro de la sala el esfuerzo de escala seca de la escala de la unidad de jazz weasel aferrado' +// locale: 'en', +// path: 'm/44\'/60\'/0\'/0/0', +// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol' // } -// Nota: Una cartera creada con una clave privada no -// tiene un mnemónico (la derivación lo impide) -walletPrivateKey.nemonic +// Note: A wallet created with a private key does not +// have a mnemonic (the derivation prevents it) +walletPrivateKey.mnemonic // null -// Firmando un mensaje -walletMnemonic.ignMessage("Hola Mundo") +// Signing a message +walletMnemonic.signMessage("Hello World") // { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' } tx = { to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72", - value: utils.arseEther("1.0"), + value: utils.parseEther("1.0"), } -// Firmando una transacción -walletMnemonic.ignTransaction(tx) +// Signing a transaction +walletMnemonic.signTransaction(tx) // { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' } -// El método de conexión devuelve una nueva instancia del -// Wallet conectado a un proveedor -wallet = walletMnemonic.onnect(provider) +// The connect method returns a new instance of the +// Wallet connected to a provider +wallet = walletMnemonic.connect(provider) -// Consultando la red +// Querying the network wallet.getBalance() // { Promise: { BigNumber: "42" } } -wallet.etTransactionCount() +wallet.getTransactionCount() // { Promise: 0 } -// Enviando ether +// Sending ether wallet.sendTransaction(tx) ``` [Leer la documentación completa](https://docs.ethers.io/v5/api/signer/#Wallet) -Una vez configurado, podrás: +Una vez configurado, podrá: - crear cuentas - enviar transacciones @@ -152,11 +154,11 @@ Una vez configurado, podrás: ### Interactuar con las funciones del contrato inteligente {#interact-with-smart-contract-functions} -Las bibliotecas de cliente de JavaScript permiten que tu aplicación solicite funciones de contrato inteligente mediante la lectura de la Interfaz Binaria de Aplicación (ABI) de un contrato compilado. +Las bibliotecas de clientes Javascript permiten que su aplicación invoque funciones de contratos inteligentes mediante la lectura de la Interfaz Binaria de Aplicación (ABI) de un contrato compilado. -El ABI esencialmente explica las funciones del contrato en un formato JSON y te permite usarlo como un objeto JavaScript normal. +La ABI esencialmente explica las funciones del contrato en un formato JSON y le permite usarlo como un objeto JavaScript normal. -Así que el siguiente contrato Solidity: +Así que el siguiente contrato de Solidity: ```solidity contract Test { @@ -180,10 +182,10 @@ Resultaría en el siguiente JSON: ```json [{ - "tip":"constructor", - "pagable":false, + "type":"constructor", + "payable":false, "stateMutability":"nonpayable" - "inputs":[{"name":"testInt", type":"uint256"}], + "inputs":[{"name":"testInt","type":"uint256"}], },{ "type":"function", "name":"foo", @@ -191,34 +193,34 @@ Resultaría en el siguiente JSON: "payable":false, "stateMutability":"nonpayable", "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}], - "outputs":[{"name":"", type":"address"}] + "outputs":[{"name":"","type":"address"}] },{ "type":"event", "name":"Event", - "inputs":[{"indexed":true, name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}], + "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}], "anonymous":false - }, + },{ "type":"event", "name":"Event2", - "inputs":[{"indexed":true,"name":"b", type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}], + "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}], "anonymous":false }] ``` -Esto significa que puedes: +Esto significa que puede: -- Enviar una transacción al contrato inteligente y ejecutarla con el método +- Enviar una transacción al contrato inteligente y ejecutar su método - Promover la estimación del gas que tomará un método de ejecución cuando se ejecute en la máquina virtual EVM - Desplegar un contrato - Y mucho más... ### Funciones de utilidad {#utility-functions} -Las funciones de utilidad te dan atajos prácticos que hacen que la construcción sea más fácil con Ethereum. +Las funciones de utilidad le dan atajos prácticos que hacen que la construcción o creación sea más fácil con Ethereum. -Los valores de ETH vienen en Wei por defecto. 1 ETH = 1 000 000 000 000 000 000 WEI (esto significa que estás trabajando con muchos números) `web3.utils.toWei` // convierte los Ether a Wei por ti. +Los valores de ETH vienen en Wei por defecto. 1 ETH = 1.000.000.000.000.000.000 WEI (esto significa que está trabajando con muchos números) `web3.utils.toWei` convierte ether a Wei. -Y en Ethers esto sería así: +Y en ethers esto sería así: ```js // Obtener el saldo de una cuenta (por dirección o nombre ENS) @@ -236,17 +238,17 @@ ethers.utils.formatEther(balance) ## Bibliotecas disponibles {#available-libraries} -**Web3.js:** **_API de JavaScript de Ethereum._** +**Web3.js:** **_API de Javascript de Ethereum._** - [Documentación](https://docs.web3js.org/) - [GitHub](https://github.com/ethereum/web3.js/) -**Ethers.js:** **_ Implementación completa de la cartera de Ethereum y utilidades en JavaScript y TypeScript._** +**Ethers.js:** **_ Implementación completa de billetera de Ethereum y utilidades en JavaScript y TypeScript._** -- [Documentación](https://docs.ethers.io/ethers.js/html/) +- [Documentación](https://docs.ethers.io/) - [GitHub](https://github.com/ethers-io/ethers.js/) -**The Graph:** **_Un protocolo para catalogar datos de Ethereum y IPFS, y consultarlos usando GraphQL._** +**The Graph:** **_Un protocolo para indexar datos de Ethereum y IPFS, y consultarlos usando GraphQL._** - [The Graph](https://thegraph.com/) - [Graph Explorer](https://thegraph.com/explorer/) @@ -254,31 +256,41 @@ ethers.utils.formatEther(balance) - [GitHub](https://github.com/graphprotocol/) - [Discord](https://thegraph.com/discord) -**light.js:** **_Una biblioteca de JS optimizada y de alto nivel para clientes ligeros._** +**light.js:** **_Una biblioteca de JS de alto nivel optimizada para clientes ligeros._** - [GitHub](https://github.com/openethereum/js-libs/tree/master/packages/light.js) -**Web3-wrapper:** **_Typescript alternativo a Web3.js._** +**Web3-wrapper:** **_Alternativa de Typescript para Web3.js._** - [Documentación](https://0x.org/docs/web3-wrapper#introduction) - [GitHub](https://github.com/0xProject/0x-monorepo/tree/development/packages/web3-wrapper) -**Alchemyweb3:** **_Wrapper alrededor de Web3.js con reintentos automáticos y API mejoradas._** +**Alchemyweb3:** **_Wrapper en torno a Web3.js con reintentos automáticos y API mejoradas._** - [Documentación](https://docs.alchemy.com/reference/api-overview) - [GitHub](https://github.com/alchemyplatform/alchemy-web3) +**Alchemy NFT API:** **_API para obtener datos NFT, incluyendo propiedad, metadatos de atributos y más._** + +- [Documentación](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api) +- [GitHub](https://github.com/alchemyplatform/alchemy-web3) + +**viem:** **_Interfaz de TypeScript para Ethereum._** + +- [Documentación](https://viem.sh) +- [GitHub](https://github.com/wagmi-dev/viem) + ## Más información {#further-reading} -_¿Conoces algún recurso comunitario que te haya servido de ayuda? Edita esta página y añádelo._ +_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._ ## Temas relacionados {#related-topics} -- [Nodos y clientes](/developers/docs/nodes-and-clients/) -- [Frameworks de desarrollo](/developers/docs/frameworks/) +- [ Nodos y clientes](/developers/docs/nodes-and-clients/) +- [Entornos de desarrollo](/developers/docs/frameworks/) ## Tutoriales relacionados {#related-tutorials} -- [Configurar Web3js para utilizar el blockchain de Ethereum en JavaScript](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– Instrucciones de configuración de web3.js para tu proyecto._ -- [Llamar un contrato inteligente desde JavaScript](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– Utilizando un token Dai, ver como llamar a la función de contratos usando JavaScript._ +- [Configurar Web3js para utilizar la cadena de bloques de Ethereum en Javascript:](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _Instrucciones para configurar web3.js en su proyecto._ +- [Invocar un contrato inteligente desde JavaScript:](/developers/tutorials/calling-a-smart-contract-from-javascript/) _ con el token DAI, vea cómo invocar funciones de contratos usando Javascript._ - [Enviar transacciones usando web 3.0 y Alchemy:](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) _Tutorial de paso a paso para enviar transacciones desde el backend._ diff --git a/src/content/translations/es/developers/docs/apis/json-rpc/index.md b/src/content/translations/es/developers/docs/apis/json-rpc/index.md new file mode 100644 index 00000000000..49d3ce3d082 --- /dev/null +++ b/src/content/translations/es/developers/docs/apis/json-rpc/index.md @@ -0,0 +1,2385 @@ +--- +title: API JSON-RPC +description: Protocolo de llamada de procedimiento remoto (RPC) sin estado y liviano para clientes de Ethereum. +lang: es +--- + +Para que una aplicación de software interactúe con la cadena de bloques de Ethereum (leyendo datos de la blockchain o enviando transacciones a la red), se debe conectar a un nodo de Ethereum. + +Para este propósito, cada [cliente de Ethereum](/developers/docs/nodes-and-clients/#execution-clients) implementa una [especificación JSON-RPC](https://github.com/ethereum/execution-apis) para que haya un conjunto uniforme de métodos que las aplicaciones puedan usar, sin importar la implementación de nodo o cliente específica. + +[JSON-RPC](https://www.jsonrpc.org/specification) es un protocolo de llamada de procedimiento remoto (RPC) liviano y sin estado. Define distintas estructuras de datos y las reglas para su procesamiento. Es independiente del transporte en el sentido de que los conceptos se pueden usar dentro del mismo proceso, por sockets, HTTP o distintos entornos de intercambio de mensajes. Utiliza JSON (RFC 4627) como formato de datos. + +## Implementaciones de cliente {#client-implementations} + +Cada cliente de Ethereum puede utilizar diferentes lenguajes de programación al implementar la especificación JSON-RPC. Consulte [documentación de cada cliente](/developers/docs/nodes-and-clients/#execution-clients) para obtener más detalles relacionados con su lenguaje de programación. Recomendamos revisar la documentación de cada cliente para obtener la información más actualizada del soporte de API. + +## Bibliotecas de conveniencia {#convenience-libraries} + +Aunque puede elegir interactuar directamente con los clientes de Ethereum a través de la API de JSON-RPC, a menudo hay opciones más fáciles para los desarrolladores de dapps. Existen muchas librerías de [JavaScript](/developers/docs/apis/javascript/#available-libraries) y [API de backend](/developers/docs/apis/backend/#available-libraries) para proporcionar wrappers sobre la API de JSON-RPC. Con estas bibliotecas, los desarrolladores pueden escribir métodos intuitivos de una sola línea en el lenguaje de programación que escojan para realizar peticiones JSON-RPC (debajo del capó) que interactúen con Ethereum. + +## API de clientes de consenso {#consensus-clients} + +Esta página trata principalmente la API de JSON-RPC usada por los clientes de ejecución de Ethereum. Sin embargo, los clientes de consenso también tienen una API de RPC que permite a los usuarios consultar información sobre el nodo, solicitar bloques de Baliza, ver el estado de la Baliza y otra información relacionada con el consenso directamente desde un nodo. Esta API está documentada en la [página web de la API de Baliza](https://ethereum.github.io/beacon-APIs/#/). + +También se utiliza una API interna para la comunicación intercliente dentro de un nodo; esto es, permite al cliente de consenso y el cliente de ejecución intercambiar datos. Esta es la llamada "Engine API", y las especificaciones están disponibles en [GitHub](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md). + +## Especificaciones de clientes de ejecución {#spec} + +[Lea la especificación completa de la API de JSON-RPC en Github](https://github.com/ethereum/execution-apis). + +## Convenciones {#conventions} + +### Codificación de valor hexadecimal {#hex-encoding} + +Se pasan dos tipos de datos clave por JSON: arrays de bytes sin formato y cantidades. Ambos se pasan con una codificación hexadecimal pero con diferentes requisitos de formato. + +#### Cantidades {#quantities-encoding} + +Al codificar cantidades (enteros, números): codificar como hexadecimal, agregar prefijo "0x", la representación más compacta (pequeña excepción: el cero debe representarse como "0x0"). + +He aquí algunos ejemplos: + +- 0x41 (65 en decimal) +- 0x400 (1024 en decimal) +- WRONG: 0x (siempre debe tener al menos un dígito - cero es "0x0") +- WRONG: 0x0400 (no se permiten ceros a la izquierda) +- WRONG: ff (debe tener el prefijo 0x) + +### Datos sin formato {#unformatted-data-encoding} + +Cuando se codifican datos sin formato (arrays de bytes, direcciones de cuentas, hashes, arrays de bytecode): codificar como hex, agregar prefijo "0x", dos dígitos hexadecimales por byte. + +Estos son algunos ejemplos: + +- 0x41 (tamaño 1, "A") +- 0x004200 (tamaño 3, "\0B\0") +- 0x (tamaño 0, "") +- WRONG: 0xf0f0f (debe ser un número par de dígitos) +- WRONG: 004200 (debe tener el prefijo 0x) + +### El parámetro de bloque por defecto {#default-block} + +Los siguientes métodos tienen un parámetro de bloque predeterminado adicional: + +- [eth_getBalance](#eth_getbalance) +- [eth_getCode](#eth_getcode) +- [eth_getTransactionCount](#eth_gettransactioncount) +- [eth_getStorageAt](#eth_getstorageat) +- [eth_call](#eth_call) + +Cuando se hacen peticiones que actúan sobre el estado de Ethereum, el último parámetro de bloque por defecto determina la altura del bloque. + +Las siguientes opciones son posibles para el parámetro defaultBlock: + +- `HEX String`: un número de bloque entero +- `String "earliest"`: para el bloque inicial +- `String "latest"`: para el último bloque minado +- `String "safe"`: para el último bloque de encabezado seguro +- `String "finalized"`: para el último bloque finalizado +- `String "pending"`: para el estado/transacciones pendientes + +## Ejemplos + +En esta página proporcionamos ejemplos de cómo utilizar los endpoints individuales de la API JSON_RPC usando la herramienta de línea de comandos, [curl](https://curl.se). Estos ejemplos individuales de endpoints se encuentran a continuación en la sección de [ejemplos de curl](#curl-examples). Más adelante en la página, también proporcionamos un [ejemplo de extremo a extremo](#usage-example) para compilar y desplegar un contrato inteligente usando un nodo Geth, la API de JSON_RPC y curl. + +## Ejemplos de Curl {#curl-examples} + +A continuación se proporcionan ejemplos del uso de la API JSON_RPC realizando solicitudes [curl](https://curl.se) a un nodo Ethereum. Cada ejemplo incluye una descripción del endpoint específico, sus parámetros, el tipo de retorno y un ejemplo práctico de cómo debe utilizarse. + +Las peticiones curl pueden mostrar un mensaje de error relacionado con el tipo de contenido. Esto se debe a que la opción `--data` establece el tipo de contenido en `application/x-www-form-urlencoded`. Si su nodo se queja de esto, establezca manualmente el encabezado colocando `-H "Content-Type: application/json"` al inicio de la llamada. Los ejemplos tampoco incluyen la combinación de URL/IP y puerto que debe ser el último argumento dado a curl (ej: `127.0.0.1:8545`). Una solicitud de curl completa, incluyendo estos datos adicionales, tiene la siguiente forma: + +```shell +curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' 127.0.0.1:8545 +``` + +## Gossip, estado, historial {#gossip-state-history} + +Un puñado de métodos JSON-RPC básicos requieren datos de la red Ethereum, y se dividen claramente en tres categorías principales: _Gossip, Estado e Historial_. Utilice los enlaces de estas secciones para saltar a cada método o utilice la tabla de contenidos para explorar toda la lista de métodos. + +### Métodos gossip {#gossip-methods} + +> Estos métodos rastrean la cabeza de la cadena. Así es como las transacciones se abren camino por la red, encuentran su camino en los bloques y cómo los clientes descubren nuevos bloques. + +- [eth_blockNumber](#eth_blocknumber) +- [eth_sendRawTransaction](#eth_sendrawtransaction) + +### Métodos de estado {#state_methods} + +> Métodos que informan el estado actual de todos los datos almacenados. El "estado" es como una gran porción compartida de RAM, e incluye saldos de cuentas, datos de contratos y estimaciones de gas. + +- [eth_getBalance](#eth_getbalance) +- [eth_getStorageAt](#eth_getstorageat) +- [eth_getTransactionCount](#eth_gettransactioncount) +- [eth_getCode](#eth_getcode) +- [eth_call](#eth_call) +- [eth_estimateGas](#eth_estimategas) + +### Métodos de historial {#history_methods} + +> Obtiene registros históricos de cada bloque hasta el bloque inicial. Esto es como un gran archivo append-only e incluye todas las cabeceras de bloques, cuerpos de bloques, bloques tíos y recibos de transacción. + +- [eth_getBlockTransactionCountByHash](#eth_getblocktransactioncountbyhash) +- [eth_getBlockTransactionCountByNumber](#eth_getblocktransactioncountbynumber) +- [eth_getUncleCountByBlockHash](#eth_getunclecountbyblockhash) +- [eth_getUncleCountByBlockNumber](#eth_getunclecountbyblocknumber) +- [eth_getBlockByHash](#eth_getblockbyhash) +- [eth_getBlockByNumber](#eth_getblockbynumber) +- [eth_getTransactionByHash](#eth_gettransactionbyhash) +- [eth_getTransactionByBlockHashAndIndex](#eth_gettransactionbyblockhashandindex) +- [eth_getTransactionByBlockNumberAndIndex](#eth_gettransactionbyblocknumberandindex) +- [eth_getTransactionReceipt](#eth_gettransactionreceipt) +- [eth_getUncleByBlockHashAndIndex](#eth_getunclebyblockhashandindex) +- [eth_getUncleByBlockNumberAndIndex](#eth_getunclebyblocknumberandindex) + +## Métodos de la API de JSON-RPC {#json-rpc-methods} + +### web3_clientVersion {#web3_clientversion} + +Muestra la versión actual del cliente. + +**Parámetros** + +Ninguno + +**Devuelve** + +`String`: La versión actual del cliente + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc":"2.0", + "result": "Mist/v0.9.3/darwin/go1.4.1" +} +``` + +### web3_sha3 {#web3_sha3} + +Muestra el Keccak-256 (_no_ el SHA3-256 estandarizado) de los datos dados. + +**Parámetros** + +1. `DATA`: Los datos para convertir en un hash SHA3 + +```js +params: ["0x68656c6c6f20776f726c64"] +``` + +**Devuelve** + +`DATA`: El resultado SHA3 de la cadena dada. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64}' +// Result +{ + "id":64, + "jsonrpc": "2.0", + "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad" +} +``` + +### net_version {#net_version} + +Muestra el ID de red actual. + +**Parámetros** + +Ninguno + +**Devuelve** + +`String`: El ID de red actual. + +La lista completa de los ID de red actuales está disponible en [chainlist.org](https://chainlist.org). Algunos comunes son: + +- `1`: Red principal de Ethereum +- `5`: Red de prueba Goerli +- `11155111`: Red de prueba Sepolia + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc": "2.0", + "result": "3" +} +``` + +### net_listening {#net_listening} + +Muestra `true` si el cliente está escuchando activamente las conexiones de red. + +**Parámetros** + +Ninguno + +**Devuelve** + +`Boolean`: `true` cuando está escuchando, de lo contrario `false`. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc":"2.0", + "result":true +} +``` + +### net_peerCount {#net_peercount} + +Muestra el número de personas conectadas al cliente. + +**Parámetros** + +Ninguno + +**Devuelve** + +`QUANTITY`: número entero de pares conectados. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}' +// Result +{ + "id":74, + "jsonrpc": "2.0", + "result": "0x2" // 2 +} +``` + +### eth_protocolVersion {#eth_protocolversion} + +Muestra la versión actual del protocolo Ethereum. Tenga en cuenta que este método [no está disponible en Geth](https://github.com/ethereum/go-ethereum/pull/22064#issuecomment-788682924). + +**Parámetros** + +Ninguno + +**Devuelve** + +`String`: La versión actual del protocolo Ethereum + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc": "2.0", + "result": "54" +} +``` + +### eth_syncing {#eth_syncing} + +Muestra un objeto con datos sobre el estado de sincronización o `false`. + +**Parámetros** + +Ninguno + +**Devuelve** + +`Object|Boolean`: Un objeto con datos de estado de sincronización o `FALSE` cuando no se sincroniza: + +- `startingBlock`: `QUANTITY` - El bloque en el que comenzó la importación (sólo se reiniciará, después de que la sincronización alcanzó su cabeza) +- `currentBlock`: `QUANTITY` - El bloque actual, igual que eth_blockNumber +- `highestBlock`: `QUANTITY` - El bloque más alto estimado + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": { + startingBlock: '0x384', + currentBlock: '0x386', + highestBlock: '0x454' + } +} +// Or when not syncing +{ + "id":1, + "jsonrpc": "2.0", + "result": false +} +``` + +### eth_coinbase {#eth_coinbase} + +Muestra la dirección coinbase del cliente. + +**Parámetros** + +Ninguno + +**Devuelve** + +`DATA`, 20 bytes - la dirección actual de Coinbase. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":64}' +// Result +{ + "id":64, + "jsonrpc": "2.0", + "result": "0x407d73d8a49eeb85d32cf465507dd71d507100c1" +} +``` + +### eth_chainId {#eth_chainId} + +Muestra el ID de cadena utilizado para firmar transacciones protegidas contra repetición. + +**Parámetros** + +Ninguno + +**Devuelve** + +`chainId`: valor hexadecimal como una cadena que representa el número entero del ID de cadena actual. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc": "2.0", + "result": "0x1" +} +``` + +### eth_mining {#eth_mining} + +Retorna `true` si el cliente está minando activamente nuevos bloques. + +**Parámetros** + +Ninguno + +**Devuelve** + +`Boolean`: retorna `true` si cliente está minando, de lo contrario `falso`. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":71}' +// +{ + "id":71, + "jsonrpc": "2.0", + "result": true +} +``` + +### eth_hashrate {#eth_hashrate} + +Retorna el número de hashes por segundo con los que el nodo está minando. + +**Parámetros** + +Ninguno + +**Devuelve** + +`QUANTITY`: número de hashes por segundo. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":71}' +// Result +{ + "id":71, + "jsonrpc": "2.0", + "result": "0x38a" +} +``` + +### eth_gasPrice {#eth_gasprice} + +Retorna el precio actual por gas en wei. + +**Parámetros** + +Ninguno + +**Regresa** + +`CANTIDAD`: número entero del precio actual de gas en wei. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}' +// Result +{ + "id":73, + "jsonrpc": "2.0", + "result": "0x1dfd14000" // 8049999872 Wei +} +``` + +### eth_accounts {#eth_accounts} + +Retorna una lista de direcciones de propiedad del cliente. + +**Parámetros** + +Ninguno + +**Regresa** + +`Array of DATA`, 20 Bytes - direcciones de propiedad del cliente. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"] +} +``` + +### eth_blockNumber {#eth_blocknumber} + +Retorna el número de bloque más reciente. + +**Parámetros** + +Ninguno + +**Regresa** + +`CANTIDAD`: número entero del número de bloque actual en el que se encuentra el cliente. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}' +// Result +{ + "id":83, + "jsonrpc": "2.0", + "result": "0x4b7" // 1207 +} +``` + +### eth_getBalance {#eth_getbalance} + +Retorna el saldo de la cuenta de la dirección dada. + +**Parámetros** + +1. `DATA`, 20 Bytes - dirección en la que se verifica el saldo. +2. `QUANTITY|TAG`: número de bloque entero o la cadena `"latest"`, `"earliest"` o `"pending"` , consulte el [parámetro de bloque predeterminado](/developers/docs/apis/json-rpc/#default-block) + +```js +params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"] +``` + +**Regresa** + +`QUANTITY`: número entero del saldo actual en wei. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x0234c8a3397aab58" // 158972490234375000 +} +``` + +### eth_getStorageAt {#eth_getstorageat} + +Retorna el valor de una posición de almacenamiento en una dirección dada. + +**Parámetros** + +1. `DATA`, 20 Bytes - dirección de almacenamiento. +2. `QUANTITY`: número entero de la posición en el almacenamiento. +3. `QUANTITY|TAG`: número de bloque entero o la cadena `"latest"`, `"earliest"` o `"pending"` , consulte el [parámetro de bloque predeterminado](/developers/docs/apis/json-rpc/#default-block) + +**Regresa** + +`DATA`: el valor de esta posición de almacenamiento. + +**Ejemplo** El calculo de la posición correcta depende del almacenamiento a recuperar. Considere el siguiente contrato implementado en `0x295a70b2de5e3953354a6a8344e616ed314d7251` por la dirección `0x391694e7e0b0cce554cb130d723a9d27458f9298`. + +``` +contract Storage { + uint pos0; + mapping(address => uint) pos1; + function Storage() { + pos0 = 1234; + pos1[msg.sender] = 5678; + } +} +``` + +Recuperar el valor de pos0 es sencillo: + +```js +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"} +``` + +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)) +``` + +Esto signifíca que para recuperar el almacenamiento en pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"] necesitamos calcular la posición con: + +```js +keccak( + decodeHex( + "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + + "0000000000000000000000000000000000000000000000000000000000000001" + ) +) +``` + +La consola geth que viene con la biblioteca web3 puede ser utilizada para hacer el cálculo: + +```js +> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001" +undefined +> web3.sha3(key, {"encoding": "hex"}) +"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9" +``` + +Ahora para obtener el almacenamiento: + +```js +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"} +``` + +### eth_getTransactionCount {#eth_gettransactioncount} + +Muestra el número de transacciones _enviadas_ de una dirección. + +**Parámetros** + +1. `DATA`, 20 Bytes - dirección. +2. `QUANTITY|TAG`: número de bloque entero o la cadena `"latest"`, `"earliest"` o `"pending"` , consulte el [parámetro de bloque predeterminado](/developers/docs/apis/json-rpc/#default-block) + +```js +params: [ + "0x407d73d8a49eeb85d32cf465507dd71d507100c1", + "latest", // state at the latest block +] +``` + +**Regresa** + +`QUANTITY`: número entero de las transacciones enviadas desde esta dirección. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","latest"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_getBlockTransactionCountByHash {#eth_getblocktransactioncountbyhash} + +Muestra el número de transacciones en un bloque de un bloque que coinicide con el hash del bloque dado. + +**Parámetros** + +1. `DATA`, 32 Bytes - hash de un bloque + +```js +params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"] +``` + +**Regresa** + +`QUANTITY`: número entero de transacciones de este bloque. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xb" // 11 +} +``` + +### eth_getBlockTransactionCountByNumber {#eth_getblocktransactioncountbynumber} + +Muestra el número de transacciones de un bloque que coincide con el número de bloque dado. + +**Parámetros** + +1. `QUANTITY|TAG`: número entero de un número de bloque, o la cadena `"earliest"`, `"latest"` o `"pending"`, como en el [parámetro de bloque predeterminado](/developers/docs/apis/json-rpc/#default-block). + +```js +params: [ + "0xe8", // 232 +] +``` + +**Regresa** + +`QUANTITY`: número entero de transacciones de este bloque. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xa" // 10 +} +``` + +### eth_getUncleCountByBlockHash {#eth_getunclecountbyblockhash} + +Muestra el número de tíos en un bloque a partir de un bloque que coincide con el hash del bloque dado. + +**Parámetros** + +1. `DATA`, 32 Bytes - hash de un bloque + +```js +params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"] +``` + +**Regresa** + +`QUANTITY`: número entero de tíos en este bloque. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_getUncleCountByBlockNumber {#eth_getunclecountbyblocknumber} + +Muestra el número de tíos de un bloque que coincide con el número del bloque dado. + +**Parámetros** + +1. `CANTIDAD|TAG`: número entero de bloque, o la cadena "latest", "earliest" o "pending"; consulte el [parámetro de bloque predeterminado](/developers/docs/apis/json-rpc/#default-block) + +```js +params: [ + "0xe8", // 232 +] +``` + +**Regresa** + +`QUANTITY`: número entero de tíos en este bloque. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_getCode {#eth_getcode} + +Muestra el código en una dirección dada. + +**Parámetros** + +1. `DATA`, 20 Bytes - dirección +2. `QUANTITY|TAG`: número de bloque entero o la cadena `"latest"`, `"earliest"` o `"pending"` , consulte el [parámetro de bloque predeterminado](/developers/docs/apis/json-rpc/#default-block) + +```js +params: [ + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x2", // 2 +] +``` + +**Regresa** + +`DATA`: el código de una dirección dada. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x2"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056" +} +``` + +### eth_sign {#eth_sign} + +El método de firma calcula una firma especifíca de Ethereum con: `sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))`. + +Añadiendo un prefijo al mensaje, hace que la firma calculada sea reconocible como una firma especifíca de Ethereum. Esto previene el uso inadecuado donde una dapp maliciosa pueda firmar datos arbitrarios (ej: transacción) y use la firma para hacerse pasar por la víctima. + +Nota: La dirección con la que se firma debe estar desbloqueada. + +**Parámetros** + +1. `DATA`, 20 Bytes - dirección +2. `DATA`, N Bytes - mensaje a firmar + +**Regresa** + +`DATA`: Firma + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "0xdeadbeaf"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b" +} +``` + +### eth_signTransaction {#eth_signtransaction} + +Firma una transacción que pueda enviarse a la red más adelante usando [eth_sendRawTransaction](#eth_sendrawtransaction). + +**Parámetros** + +1. `Objet`: Objeto de la transacción + +- `from`: `DATA`, 20 Bytes - La dirección desde donde la transacción es enviada. +- `to`: `DATA`, 20 Bytes - (opcional cuando se crea un nuevo contrato) La dirección a la cual se envía la transacción. +- `gas`: `QUANTITY` - (opcional, por defecto; 90000) Entero del gas propuesto para ejecutar la transacción. Devuelve el gas no utilizado. +- `gasPrice`: `QUANTITY` - (opcional, predeterminado: Por determinar) Entero del gasPrice utilizado para cada gas pagado en Wei. +- `value`: `QUANTITY` - (opcional) entero del valor enviado con esta transacción, en Wei. +- `data`: `DATA` - El código compilado de un contrato O el hash del método de firma invocado y los parámetros codificados. +- `nonce`: `QUANTITY` - (opcional) Entero del nonce. Esto permitirá sobrescribir sus propias transacciones pendientes que usen el mismo nonce. + +**Regresa** + +`DATA`: Objeto de transacción con firma. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"id": 1,"jsonrpc": "2.0","method": "eth_signTransaction","params": [{"data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675","from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","gas": "0x76c0","gasPrice": "0x9184e72a000","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","value": "0x9184e72a"}]}' +// Result +{ + "id": 1, + "jsonrpc": "2.0", + "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b" +} +``` + +### eth_sendTransaction {#eth_sendtransaction} + +Crea una nueva transacción de llamada de mensaje o una creación de contrato si el campo de datos contiene el código. + +**Parámetros** + +1. `Objet`: Objeto de la transacción + +- `from`: `DATA`, 20 Bytes - La dirección desde donde la transacción es enviada. +- `to`: `DATA`, 20 Bytes - (opcional cuando se crea un nuevo contrato) La dirección a la cual se envía la transacción. +- `gas`: `QUANTITY` - (opcional, por defecto; 90000) Entero del gas propuesto para ejecutar la transacción. Devuelve el gas no utilizado. +- `gasPricd`: `QUANTITY` - (opcional, por defecto: Por determinar) Entero del gasPrice usado por cada gas pagado. +- `value`: `QUANTITY` - (opcional) Entero del valor enviado con la transacción. +- `data`: `DATA` - El código compilado de un contrato O el hash del método de firma invocado y los parámetros codificados. +- `nonce`: `QUANTITY` - (opcional) Entero del nonce. Esto permitirá sobrescribir sus propias transacciones pendientes que usen el mismo nonce. + +```js +params: [ + { + from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155", + to: "0xd46e8dd67c5d32be8058bb8eb970870f07244567", + gas: "0x76c0", // 30400 + gasPrice: "0x9184e72a000", // 10000000000000 + value: "0x9184e72a", // 2441406250 + data: "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675", + }, +] +``` + +**Regresa** + +`DATA`, 32 Bytes - El hash de la transacción el hash cero si la transacción no está disponible aún. + +Use [eth-getTransactionReceipt](#eth_gettransactionreceipt) para conseguir la dirección del contrato, después de que la transacción se minó, cuando creó un contrato. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{see above}],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" +} +``` + +### eth_sendRawTransaction {#eth_sendrawtransaction} + +Crea una nueva transacción de llamada de mensaje o la creación de un contrato para transacciones firmadas. + +**Parámetros** + +1. `DATA`: Los datos de la transacción con firma. + +```js +params: [ + "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675", +] +``` + +**Regresa** + +`DATA`, 32 Bytes - El hash de la transacción el hash cero si la transacción no está disponible aún. + +Use [eth-getTransactionReceipt](#eth_gettransactionreceipt) para conseguir la dirección del contrato, después de que la transacción se minó, cuando creó un contrato. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[{see above}],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331" +} +``` + +### eth_call {#eth_call} + +Ejecuta una nueva llamada de mensaje inmediatamente sin crear una transacción en la cadena de bloques. + +**Parámetros** + +1. `Object`: El objeto de la llamada en la transacción + +- `from`: `DATA`, 20 Bytes - (opcional) La dirección desde donde se envía la transacción. +- `to`: `DATA`, 20 Bytes - La dirección a la cual se envía la transacción. +- `gas`: `QUANTITY` - (opcional) Entero del gas proporcionado para la ejecución de la transacción. eth_call consume cero gas, pero este parámetro tal vez sea necesario para algunas ejecuciones. +- `gasPrice` `QUANTITY` - (opcional) Entero del precio del gas usado por cada gas pagado +- `value`: `QUANTITY` - (opcional) Entero del valor enviado con la transacción +- `data`: `DATA` - (opcional) Hash de la firma del método y parámetros codificados. Para obtener más información, consulte [ABI de contratos de Ethereum en la documentación de Solidity](https://docs.soliditylang.org/en/latest/abi-spec.html). + +2. `QUANTITY|TAG`: número de bloque entero o la cadena `"latest"`, `"earliest"` o `"pending"` , consulte el [parámetro de bloque predeterminado](/developers/docs/apis/json-rpc/#default-block) + +**Regresa** + +`DATA`: el valor de un contrato ejecutado. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{see above}],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x" +} +``` + +### eth_estimateGas {#eth_estimategas} + +Genera y retorna el valor estimado de gas necesario para permitir que se complete la transacción. La transacción no se añadirá a la cadena de bloques. Puede ser que esa estimación sea significativamente más alta que la cantidad actual de gas usada por la transacción por una variedad de razones, incluidos los mecanismos de la EVM y el desempeño del nodo. + +**Parámetros** + +Consulte los parámetros [eth_call](#eth_call), excepto que todas las propiedades sean opcionales. Si no se especifica ningún límite de gas, geth usa el límite de gas del bloque pendiente como límite superior. Como resultado, la estimación devuelta podría no ser suficiente para ejecutar la llamada/transacción cuando la cantidad de gas sea mayor que el límite de gas del bloque pendiente. + +**Regresa** + +`QUANTITY`: monto de gas usado. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{see above}],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x5208" // 21000 +} +``` + +### eth_getBlockByHash {#eth_getblockbyhash} + +Retorna información acerca de un bloque por hash. + +**Parámetros** + +1. `DATA`, 32 Bytes - Hash de un bloque. +2. `Boolean` - Si es `true` retorna los objetos de transacción completos, si es `false` solo los hashes de las transacciones. + +```js +params: [ + "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", + false, +] +``` + +**Regresa** + +`Object`: Un objeto de bloque, o `null` cuando no se encuentra ningún bloque: + +- `number`: `QUANTITY` - número de bloque. `null` cuando el bloque está pendiente. +- `hash`: `DATA`, 32 Bytes - hash del bloque. `null` cuando el bloque está pendiente. +- `parentHash`: `DATA`, 32 Bytes - hash del bloque principal. +- `nonce`: `DATA`, 8 Bytes - hash de la prueba de trabajo generada. `null` cuando el bloque está pendiente. +- `sha3Uncles`: `DATA`, 32 Bytes - SHA3 de los datos de tíos en el bloque. +- `logsBloom`: `DATA`, 256 Bytes - el filtro bloom para los registros del bloque. `null` cuando el bloque está pendiente. +- `transactionsRoot`: `DATA`, 32 Bytes - la raíz del trie de transacciones del bloque. +- `stateRoot`: `DATA`, 32 Bytes - la raíz del trie de estado final del bloque. +- `receiptsRoot`: `DATA`, 32 Bytes - la raíz del trie de recibos del bloque. +- `miner`: `DATA`, 20 Bytes - la dirección del beneficiario a quien se entregaron las recompensas de minado. +- `difficulty`: `QUANTITY` - número entero de la dificultad de este bloque. +- `totalDifficulty`: `QUANTITY` - número entero de la dificultad total de la cadena hasta este bloque. +- `extraData`: `DATA` - el campo de "datos extra" de este bloque. +- `size`: `QUANTITY` - número entero del tamaño de este bloque en bytes. +- `gasLimit`: `QUANTITY` - el máximo gas permitido en este bloque. +- `ggasUsed`: `QUANTITY` - el total de gas usado por todas las transacciones en este bloque. +- `timestamp`: `QUANTITY` - la marca de tiempo unix del momento en que se recopiló el bloque. +- `transactions`: `Array` - Matriz de los objetos de transacción, o hashes de transacción de 32 bytes dependiendo del último parámetro dado. +- `uncles`: `Array` - Matriz de hashes tíos. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", false],"id":1}' +// Result +{ +{ +"jsonrpc": "2.0", +"id": 1, +"result": { + "difficulty": "0x4ea3f27bc", + "extraData": "0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32", + "gasLimit": "0x1388", + "gasUsed": "0x0", + "hash": "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "miner": "0xbb7b8287f3f0a933474a79eae42cbca977791171", + "mixHash": "0x4fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843", + "nonce": "0x689056015818adbe", + "number": "0x1b4", + "parentHash": "0xe99e022112df268087ea7eafaf4790497fd21dbeeb6bd7a1721df161a6657a54", + "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "size": "0x220", + "stateRoot": "0xddc8b0234c2e0cad087c8b389aa7ef01f7d79b2570bccb77ce48648aa61c904d", + "timestamp": "0x55ba467c", + "totalDifficulty": "0x78ed983323d", + "transactions": [ + ], + "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncles": [ + ] +} +} +``` + +### eth_getBlockByNumber {#eth_getblockbynumber} + +Retorna información acerca de un bloque por número de bloque. + +**Parámetros** + +1. `QUANTITY|TAG`: número entero de un número de bloque, o la cadena `"earliest"`, `"latest"` o `"pending"`, como en el [parámetro de bloque predeterminado](/developers/docs/apis/json-rpc/#default-block). +2. `Boolean` - Si es `true` retorna los objetos de transacción completos, si es `false` solo los hashes de las transacciones. + +```js +params: [ + "0x1b4", // 436 + true, +] +``` + +**Retorna**Vea[eth_getBlockByHash](#eth_getblockbyhash) + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1b4", true],"id":1}' +``` + +Resultado ver [eth_getBlockByHash](#eth_getblockbyhash) + +### eth_getTransactionByHash {#eth_gettransactionbyhash} + +Muestra la información acerca de una transacción requerida por el hash de transacción. + +**Parámetros** + +1. `DATA`, 32 Bytes - hash de una transacción + +```js +params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"] +``` + +**Regresa** + +`Object`: Un objeto de transacción, o `null` cuando no se encontró la transacción: + +- `blockHash`: `DATA`, 32 Bytes - hash del bloque donde estaba esta transacción. `null` cuando está pendiente. +- `blockNumber`: `QUANTITY` - número de bloque donde estaba está transacción. `null` cuando está pendiente. +- `from`: `DATA`, 20 Bytes - dirección del emisor. +- `gas`: `QUANTITY` - gas proporcionado por el emisor. +- `gasPrice`: `QUANTITY` - precio del gas proporcionado por el emisor en Wei. +- `hash`: `DATA`, 32 Bytes - hash de la transacción. +- `input`: `DATA` - los datos que se mandan junto con la transacción. +- `nonce`: `QUANTITY` - el número de transacciones hechas por el emisor antes de esta. +- `to`: `DATA`, 20 Bytes - dirección del receptor. `null` cuando se trata de una operación de creación de contrato. +- `transactionIndex`: `QUANTITY` - número entero de la posición del índice de transacciones en el bloque. `null` cuando está pendiente. +- `value`: `QUANTITY` - valor transferido en Wei. +- `v`: `QUANTITY` - ID de recuperación de ECDSA +- `r`: `QUANTITY` - firma r de ECDSA +- `s`: `CANTIDAD` - firma s de ECDSA + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"],"id":1}' +// Result +{ + "jsonrpc":"2.0", + "id":1, + "result":{ + "blockHash":"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", + "blockNumber":"0x5daf3b", // 6139707 + "from":"0xa7d9ddbe1f17865597fbd27ec712455208b6b76d", + "gas":"0xc350", // 50000 + "gasPrice":"0x4a817c800", // 20000000000 + "hash":"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b", + "input":"0x68656c6c6f21", + "nonce":"0x15", // 21 + "to":"0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb", + "transactionIndex":"0x41", // 65 + "value":"0xf3dbb76162000", // 4290000000000000 + "v":"0x25", // 37 + "r":"0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea", + "s":"0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c" + } +} +``` + +### eth_getTransactionByBlockHashAndIndex {#eth_gettransactionbyblockhashandindex} + +Muestra información acerca de una transacción por hash de bloque y la posición del índice de la transacción. + +**Parámetros** + +1. `DATA`, 32 Bytes - hash de un bloque. +2. `QUANTITY`: número entero de la posición del índice de la transacción. + +```js +params: [ + "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331", + "0x0", // 0 +] +``` + +**Muestra** Vea [eth_getTransactionByHash](#eth_gettransactionbyhash) + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}' +``` + +Resultado ver [eth_getTransactionByHash](#eth_gettransactionbyhash) + +### eth_getTransactionByBlockNumberAndIndex {#eth_gettransactionbyblocknumberandindex} + +Muestra información acerca de una transacción por número de bloque y la posición del índice de transacción. + +**Parámetros** + +1. `QUANTITY|TAG`: un número de bloque o la cadena `"earliest"`, `"latest"` o `"pending"` , como en el [parámetro de bloque predeterminado](/developers/docs/apis/json-rpc/#default-block). +2. `QUANTITY`: la posición del índice de la transacción. + +```js +params: [ + "0x29c", // 668 + "0x0", // 0 +] +``` + +**Muestra** Vea [eth_getTransactionByHash](#eth_gettransactionbyhash) + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}' +``` + +Resultado ver [eth_getTransactionByHash](#eth_gettransactionbyhash) + +### eth_getTransactionReceipt {#eth_gettransactionreceipt} + +Muestra el recibo de una transacción por hash de transacción. + +**Tenga presente** que el recibo no está disponible para transacciones pendientes. + +**Parámetros** + +1. `DATA`, 32 Bytes - hash de una transacción + +```js +params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"] +``` + +**Returns** `Object`: Objeto de recibo de transacción o `null` cuando no se encontró un recibo: + +- `transactionHash`: `DATA`, 32 Bytes - hash de la transacción. +- `transactionIndex`: `QUANTITY` - número entero de la posición del índice de transacciones en el bloque. +- `blockHash`: `DATA`, 32 Bytes - hash del bloque donde estaba esta transacción. +- `blockNumber`: `QUANTITY` - número de bloque donde estaba está transacción. +- `from`: `DATA`, 20 Bytes - dirección del emisor. +- `to`: `DATA`, 20 Bytes - dirección del receptor. null cuando se trata de una transacción de creación de contrato. +- `acumulativeGasUsed` : `QUANTITY` - La cantidad total de gas utilizado cuando esta transacción se ejecutó en el bloque. +- `PeffectiveGasPrice` : `QUANTITY` - La suma de la tarifa base y propina pagada por unidad de gas. +- `gasUsed`: `QUANTITY` - La cantidad de gas usado solo por esta transacción específica. +- `contractAddress`: `DATA`, 20 Bytes - La dirección del contrato creada, si la transacción fue una creación de contrato; de lo contrario `null`. +- `logs`: `Array` - Array de los objetos del registro que generó esta transacción. +- `logsBloom`: `DATA`, 256 Bytes - filtro Bloom para clientes ligeros para recuperar rápidamente los registros relacionados. +- `type`: `QUANTITY` - número entero del tipo de transacción, `0x0` para transacciones heredadas, `0x1` para tipos de lista de acceso, `0x2` para las tasas dinámicas. + +También muestra _una de las siguientes_ : + +- `root` : `DATA` 32 bytes de ruta de estado postransacción (prebizantino) +- `status`: `QUANTITY` `1` (éxito) o `0` (falla) + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"],"id":1}' +// Result +{ + "jsonrpc": "2.0", + "id": 1, + "result": { + "blockHash": + "0xa957d47df264a31badc3ae823e10ac1d444b098d9b73d204c40426e57f47e8c3", + "blockNumber": "0xeff35f", + "contractAddress": null, // string of the address if it was created + "cumulativeGasUsed": "0xa12515", + "effectiveGasPrice": "0x5a9c688d4", + "from": "0x6221a9c005f6e47eb398fd867784cacfdcfff4e7", + "gasUsed": "0xb4c8", + "logs": [{ + // logs as returned by getFilterLogs, etc. + }], + "logsBloom": "0x00...0", // 256 byte bloom filter + "status": "0x1", + "to": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "transactionHash": + "0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5", + "transactionIndex": "0x66", + "type": "0x2" + } +} +``` + +### eth_getUncleByBlockHashAndIndex {#eth_getunclebyblockhashandindex} + +Muestra información sobre un tío de un bloque por hash y posición del índice del tío. + +**Parámetros** + +1. `DATA`, 32 Bytes - El hash de un bloque. +2. `QUANTITY`: Posición de índice del tío. + +```js +params: [ + "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", + "0x0", // 0 +] +``` + +**Retorna**Vea[eth_getBlockByHash](#eth_getblockbyhash) + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}' +``` + +Resultado ver [eth_getBlockByHash](#eth_getblockbyhash) + +**Nota**: Un tío no contiene transacciones individuales. + +### eth_getUncleByBlockNumberAndIndex {#eth_getunclebyblocknumberandindex} + +Muestra información sobre un tío de un bloque por número y posición de índice del tío. + +**Parámetros** + +1. `QUANTITY|TAG`: un número de bloque o la cadena `"earliest"`, `"latest"` o `"pending"` , como en el [parámetro de bloque predeterminado](/developers/docs/apis/json-rpc/#default-block). +2. `QUANTITY`: Posición de índice del tío. + +```js +params: [ + "0x29c", // 668 + "0x0", // 0 +] +``` + +**Retorna**Vea[eth_getBlockByHash](#eth_getblockbyhash) + +**Nota**: Un tío no contiene transacciones individuales. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}' +``` + +Resultado ver [eth_getBlockByHash](#eth_getblockbyhash) + +### eth_getCompilers {#eth_getcompilers} + +Muestra una lista de compiladores disponibles en el cliente. + +**Parameters** Ninguno + +**Returns** `Array`: Array de compiladores disponibles. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCompilers","params":[],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": ["solidity", "lll", "serpent"] +} +``` + +### eth_compileSolidity {#eth_compile_solidity} + +Muestra el código de Solidity compilado. + +**Parámetros** + +1. `String`: Código fuente. + +```js +params: [ + "contract test { function multiply(uint a) returns(uint d) { return a * 7; } }", +] +``` + +**Muestra** `DATA`: Código fuente compilado. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSolidity","params":["contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": { + "code": "0x605880600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b603d6004803590602001506047565b8060005260206000f35b60006007820290506053565b91905056", + "info": { + "source": "contract test {\n function multiply(uint a) constant returns(uint d) {\n return a * 7;\n }\n}\n", + "language": "Solidity", + "languageVersion": "0", + "compilerVersion": "0.9.19", + "abiDefinition": [ + { + "constant": true, + "inputs": [ + { + "name": "a", + "type": "uint256" + } + ], + "name": "multiply", + "outputs": [ + { + "name": "d", + "type": "uint256" + } + ], + "type": "function" + } + ], + "userDoc": { + "methods": {} + }, + "developerDoc": { + "methods": {} + } + } +} +``` + +### eth_compileLLL {#eth_compileLLL} + +Retorna el código compiled_LLL. + +**Parámetros** + +1. `String`: Código fuente. + +```js +params: ["(returnlll (suicide (caller)))"] +``` + +**Muestra** `DATA`: Código fuente compilado. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileLLL","params":["(returnlll (suicide (caller)))"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056" // the compiled source code +} +``` + +### eth_compileSerpent {#eth_compileserpent} + +Retorna el código serpiente compilado. + +**Parámetros** + +1. `String`: Código fuente. + +```js +params: ["/* some serpent */"] +``` + +**Muestra** `DATA`: Código fuente compilado. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSerpent","params":["/* some serpent */"],"id":1}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056" // the compiled source code +} +``` + +### eth_newFilter {#eth_newfilter} + +Crea un objeto de filtro, basado en las opciones de filtrado, que notifica cuando haya un cambio en el estado (registros). Para revisar si hubo un cambio en el estado, llamar a [eth_getFilterChanges](#eth_getfilterchanges). + +**Nota sobre la especificación de filtros de temas:** Los Los temas dependen del orden. Una transacción con un registro con los temas [A, B] coincidirá con los siguientes filtros de temas: + +- `[]` "cualquiera" +- `[A]` "A el la primera posición (¿y algo después?)" +- `[null, B]` "cualquier cosa en primera posición Y B en segunda posición (¿y algo después?)" +- `[A, B]` "A en primera posición Y B en segunda posición (¿y algo después?)" +- `[[A, B], [A, B]]` "(A ó B) en primera posición Y (A ó B) en segunda posición (¿y algo después?)" +- **Parámetros** + +1. `Object` - Las opciones del filtro: + +- `fromBlock`: `QUANTITY|TAG` - (opcional, por defecto: `"latest") número entero de bloque, o `"latest"` para el último bloque minado, o `"pending"`, `"earliest"` para las transacciones no minadas aún. +- `toBlock`: `QUANTITY|TAG` - (opcional, por defecto: `"latest"`) número entero de bloque, o `"latest"` para el último bloque minado o `"pending"`, `"earliest"` para las transacciones que no se han minado aún. +- `address`: `DATA|Array`, 20 Bytes - (opcional) Dirección de contrato o una lista de las direcciones desde donde deben originarse los registros. +- `topics`: `Array de DATA`, - (opcional) Array de temas de `DATA` de 32 bytes. Los temas dependen del orden. Cada tema puede también ser un array de DATA con opciones "or" (o). + +```js +params: [ + { + fromBlock: "0x1", + toBlock: "0x2", + address: "0x8888f1f195afa192cfee860698584c030f4c9db1", + topics: [ + "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + null, + [ + "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "0x0000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc", + ], + ], + }, +] +``` + +**Muestra** `QUANTITY`: ID de filtro. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x12341234"]}],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_newBlockFilter {#eth_newblockfilter} + +Crea un nuevo filtro en el nodo que notifica cuando llega un nuevo bloque. Para revisar si hubo un cambio en el estado, llamar a [eth_getFilterChanges](#eth_getfilterchanges). + +**Parameters** Ninguno + +**Muestra** `QUANTITY`: ID de filtro. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_newPendingTransactionFilter {#eth_newpendingtransactionfilter} + +Crea un filtro en el nodo para notificar cuando llegan nuevas transacciones pendientes. Para revisar si hubo un cambio en el estado, llamar a [eth_getFilterChanges](#eth_getfilterchanges). + +**Parameters** Ninguno + +**Muestra** `QUANTITY`: ID de filtro. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0x1" // 1 +} +``` + +### eth_uninstallFilter {#eth_uninstallfilter} + +Desinstala un filtro con un ID dado. Debe invocarse siempre cuando ya no se necesite watch. Los filtros adicionales vencen cuando no tienen solicitud de [eth_getFilterChanges](#eth_getfilterchanges) por un período de tiempo. + +**Parámetros** + +1. `QUANTITY`: ID de filtro. + +```js +params: [ + "0xb", // 11 +] +``` + +**Muestra** `Boolean` - `true` si el filtro fue satisfactoriamente desinstalado; caso contrario`false`. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0xb"],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": true +} +``` + +### eth_getFilterChanges {#eth_getfilterchanges} + +Método de sondeo para un filtro, que retorna un array de registros que ocurrieron desde el último sondeo. + +**Parámetros** + +1. `QUANTITY`: ID de filtro. + +```js +params: [ + "0x16", // 22 +] +``` + +**Muestra** `Array`: Array de objetos de registro o un array vacío si no cambió nada desde el último sondeo. + +- Para los filtros creados con `eth_newBlockFilter`, los resultados son hashes de bloque (`DATA`, 32 bytes), p. ej., `["0x3454645634534..."]`. +- Para filtros creados con `eth_newPendingTransactionFilter` los resultados son hashes de transacciones(`DATA`, 32 Bytes), por ejemplo, `["0x6345343454645..."]`. +- Para filtros creados con `eth_newFilter` los registros son objetos con los siguientes parametros: + - `removed`: `TAG` - `true` cuando el registro fue removido debido a una reorganización de la cadena. `false` si el registro es válido. + - `logIndex`: `QUANTITY` - número entero de la posición del índice del registro en el bloque. `null` cuando el registro está pendiente. + - `transactionIndex`: `QUANTITY` - número entero de posición de índice de transacciones desde donde se creó el registro. `null` cuando el registro está pendiente. + - `transactionHash`: `DATA`, 32 Bytes - hash de transacciones desde donde se creó el registro. `null` cuando el registro está pendiente. + - `blockHash`: `DATA`, 32 Bytes - hash del bloque donde estaba este registro. `null` cuando está pendiente. `null` cuando el registro está pendiente. + - `blockNumber`: `QUANTITY` - número de bloque donde estaba este registro. `null` cuando está pendiente. `null` cuando el registro está pendiente. + - `address`: `DATA`, 20 Bytes - dirección donde se originó este regustro. + - `data`: `DATA` - contiene uno o más argumentos no indexados de 32 bytes del registro. + - `topics`: `Array de DATA` - Array de 0 a 4 32 Bytes `DATA` de argumentos de registros indexados. (En _Solidity_: El primer tema es el _hash_ de la firma del evento (ej.: `Deposit(address,bytes32,uint256)`), excepto que declare el evento con el especificador `anonymous`) +- **Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0x16"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": [{ + "logIndex": "0x1", // 1 + "blockNumber":"0x1b4", // 436 + "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d", + "transactionHash": "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf", + "transactionIndex": "0x0", // 0 + "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d", + "data":"0x0000000000000000000000000000000000000000000000000000000000000000", + "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"] + },{ + ... + }] +} +``` + +### eth_getFilterLogs {#eth_getfilterlogs} + +Devuelve una matriz de todos los registros que coinciden con el filtro con el ID dado. + +**Parámetros** + +1. `QUANTITY`: ID de filtro. + +```js +params: [ + "0x16", // 22 +] +``` + +**Muestra** Ver [eth_getFilterChanges](#eth_getfilterchanges) + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x16"],"id":74}' +``` + +Resultado ver [eth_getFilterChanges](#eth_getfilterchanges) + +### eth_getLogs {#eth_getlogs} + +Devuelve una matriz de todos los registros que coinciden con un objeto de filtro dado. + +**Parámetros** + +1. `Object` - Las opciones del filtro: + +- `fromBlock`: `QUANTITY|TAG` - (opcional, por defecto: `"latest") número entero de bloque, o `"latest"` para el último bloque minado, o `"pending"`, `"earliest"` para las transacciones no minadas aún. +- `toBlock`: `QUANTITY|TAG` - (opcional, por defecto: `"latest"`) número entero de bloque, o `"latest"` para el último bloque minado o `"pending"`, `"earliest"` para las transacciones que no se han minado aún. +- `address`: `DATA|Array`, 20 Bytes - (opcional) Dirección de contrato o una lista de las direcciones desde donde deben originarse los registros. +- `topics`: `Array de DATA`, - (opcional) Array de temas de `DATA` de 32 bytes. Los temas dependen del orden. Cada tema puede también ser un array de DATA con opciones "or" (o). +- `blockhash`: `DATA`, 32 Bytes - (opcional, **future**) Con la adición de EIP-234, `blockHash` será una nueva opción de filtro que restringe los registros retornados al bloque único con el hash de 32 bytes `blockHash`. Usar `blockHash` es equivalente a `fromBlock` = `toBlock` = el número de bloque con hash `blockHash`. Si `blockHash` está presente en los criterios de filtro, no se permiten ni `fromBlock` ni `toBlock`. + +```js +params: [ + { + topics: [ + "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", + ], + }, +] +``` + +**Muestra** Ver [eth_getFilterChanges](#eth_getfilterchanges) + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":74}' +``` + +Resultado ver [eth_getFilterChanges](#eth_getfilterchanges) + +### eth_getWork {#eth_getwork} + +Devuelve el hash del bloque actual, el seedHash, y la condición límite que debe cumplirse (''target'', objetivo). + +**Parameters** Ninguno + +**Muestra** `Array`: Matriz con las siguientes propiedades: + +1. `DATA`, 32 Bytes - pow-hash de encabezado del bloque actual +2. `DATA`, 32 Bytes - el seed hash usado para el DAG. +3. `DATA`, 32 Bytes - la condición de límite (''target''), 2^256 / dificultad. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getWork","params":[],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": [ + "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", + "0x5EED00000000000000000000000000005EED0000000000000000000000000000", + "0xd1ff1c01710000000000000000000000d1ff1c01710000000000000000000000" + ] +} +``` + +### eth_submitWork {#eth_submitwork} + +Se utiliza para presentar una solución de prueba de trabajo. + +**Parámetros** + +1. `DATA`, 8 Bytes - El nonce encontrado (64 bits) +2. `DATA`, 32 Bytes - El pow-hash del encabezado (256 bits) +3. `DATA`, 32 Bytes - El digest del mix (256 bits) + +```js +params: [ + "0x0000000000000001", + "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", + "0xD1FE5700000000000000000000000000D1FE5700000000000000000000000000", +] +``` + +**Muestra** `Boolean` - `true` si la solución es valida, caso contrario`false`. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":73}' +// Result +{ + "id":73, + "jsonrpc":"2.0", + "result": true +} +``` + +### eth_submitHashrate {#eth_submithashrate} + +Usado para enviar el hashrate de minado. + +**Parámetros** + +1. `Hashrate`: cadena hexadecimal que representa (32 bytes) el hashrate +2. `ID`, String - un ID hexadecimal (32 bytes) aleatorio que identifica el cliente + +```js +params: [ + "0x0000000000000000000000000000000000000000000000000000000000500000", + "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c", +] +``` + +**Muestra** `Boolean` - `true` si el envío se realizó correctamente, caso contrario `false`. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":["0x0000000000000000000000000000000000000000000000000000000000500000", "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"],"id":73}' +// Result +{ + "id":73, + "jsonrpc":"2.0", + "result": true +} +``` + +### db_putString (obsoleto) {#db_putstring} + +Almacena una cadena en la base de datos local. + +**Nota**: Esta función está obsoleta. + +**Parámetros** + +1. `String`: Nombre de la base de datos. +2. `String`: Nombre de clave. +3. `String`: Cadena a almacenar. + +```js +params: ["testDB", "myKey", "myString"] +``` + +**Muestra** `Boolean` - `true` si el valor fue almacenado, caso contrario `false`. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"db_putString","params":["testDB","myKey","myString"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": true +} +``` + +### db_getString (obsoleto) {#db_getstring} + +Retorna la cadena desde la base de datos local. **Nota**: Esta función está obsoleta. + +**Parámetros** + +1. `String`: Nombre de la base de datos. +2. `String`: Nombre de clave. + +```js +params: ["testDB", "myKey"] +``` + +**Muestra** `String`: Cadena previamente almacenada. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"db_getString","params":["testDB","myKey"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": "myString" +} +``` + +### db_putHex (obsoleto) {#db_puthex} + +Almacena datos binarios en la base de datos local. **Nota**: Esta función está obsoleta. + +**Parámetros** + +1. `String`: Nombre de la base de datos. +2. `String`: Nombre de clave. +3. `DATA`: Datos a almacenar. + +```js +params: ["testDB", "myKey", "0x68656c6c6f20776f726c64"] +``` + +**Muestra** `Boolean` - `true` si el valor fue almacenado, caso contrario `false`. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"db_putHex","params":["testDB","myKey","0x68656c6c6f20776f726c64"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": true +} +``` + +### db_getHex (obsoleto) {#db_gethex} + +Retorna datos binarios desde una base de datos local. **Nota**: Esta función está obsoleta. + +**Parámetros** + +1. `String`: Nombre de la base de datos. +2. `String`: Nombre de clave. + +```js +params: ["testDB", "myKey"] +``` + +**Muestra** `DATA`: Datos previamente almacenados. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"db_getHex","params":["testDB","myKey"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": "0x68656c6c6f20776f726c64" +} +``` + +### shh_version (obsoleto) {#shh_post} + +Retorna la versión actual del protocolo whisper. + +**Nota**: Esta función está obsoleta. + +**Parameters** Ninguno + +**Muestra** `String`: Version actual del protocolo whisper + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_version","params":[],"id":67}' +// Result +{ + "id":67, + "jsonrpc": "2.0", + "result": "2" +} +``` + +### shh_post (obsoleto) {#shh_version} + +Envía un mensaje whisper. + +**Nota**: Esta función está obsoleta. + +**Parámetros** + +1. `Object`: Objeto del post whisper: + +- `from`: `DATA`, 60 Bytes - (opcional) Identidad del emisor. +- `to`: `DATA`, 60 Bytes - (opcional) Identidad del receptor. Cuando esté presente, whisper cifrará el mensaje para que solo el receptor pueda descifrarlo. +- `topics`: `Array of DATA` - Array de `DATA` temas para que el receptor identifique mensajes. +- `payload`: `DATA` - la carga útil del mensaje. +- `priority`: `QUANTITY` - Número entero de la prioridad en un rango desde ... (?). +- `ttl`: `QUANTITY` - Número entero de tiempo para existir en segundos. + +```js +params: [ + { + from: "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1", + to: "0x3e245533f97284d442460f2998cd41858798ddf04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a0d4d661997d3940272b717b1", + topics: [ + "0x776869737065722d636861742d636c69656e74", + "0x4d5a695276454c39425154466b61693532", + ], + payload: "0x7b2274797065223a226d6", + priority: "0x64", + ttl: "0x64", + }, +] +``` + +**Muestra** `Boolean` - `true` si el mensaje fue enviado, caso contrario `false`. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_post","params":[{"from":"0xc931d93e97ab07fe42d923478ba2465f2..","topics": ["0x68656c6c6f20776f726c64"],"payload":"0x68656c6c6f20776f726c64","ttl":0x64,"priority":0x64}],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": true +} +``` + +### shh_newIdentity (obsoleto){#shh_newidentity} + +Crea una nueva identidad de whisper en el cliente. + +**Nota**: Esta función está obsoleta. + +**Parameters** Ninguno + +**Muestra** `DATA`, 60 Bytes - dirección de la nueva identidad. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newIdentity","params":[],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xc931d93e97ab07fe42d923478ba2465f283f440fd6cabea4dd7a2c807108f651b7135d1d6ca9007d5b68aa497e4619ac10aa3b27726e1863c1fd9b570d99bbaf" +} +``` + +### shh_hasIdentity (obsoleto){#shh_hasidentity} + +Comprueba si el cliente posee las claves privadas de una identidad determinada. + +**Nota**: Esta función está obsoleta. + +**Parámetros** + +1. `DATA`, 60 Bytes - Dirección de la identidad a revisar. + +```js +params: [ + "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1", +] +``` + +**Muestra** `Boolean` - `true` si el cliente tiene la clave privada de la identidad, caso contrario `false`. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_hasIdentity","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": true +} +``` + +### shh_newGroup (obsoleto){#shh_newgroup} + +**Nota**: Esta función está obsoleta. + +**Parameters** Ninguno + +**Muestra** `DATA`, 60 Bytes - la dirección del nuevo grupo. (?) + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newGroup","params":[],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": "0xc65f283f440fd6cabea4dd7a2c807108f651b7135d1d6ca90931d93e97ab07fe42d923478ba2407d5b68aa497e4619ac10aa3b27726e1863c1fd9b570d99bbaf" +} +``` + +### shh_addToGroup (obsoleto){#shh_addtogroup} + +**Nota**: Esta función está obsoleta. + +**Parámetros** + +1. `DATA`, 60 Bytes - Dirección de la identidad a añadir a un grupo (?). + +```js +params: [ + "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1", +] +``` + +**Muestra** `Boolean` - `true` si la identidad fue satisfactoriamente agregada al grupo, caso contrario`false` (?). + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_addToGroup","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}' +// Result +{ + "id":1, + "jsonrpc": "2.0", + "result": true +} +``` + +### shh_newFilter (obsoleto){#shh_newfilter} + +Crea un filtro para notificar cuando el cliente recibe un mensaje whisper que coincide con las opciones de filtro. **Nota**: Esta función está obsoleta. + +**Parámetros** + +1. `Object` - Las opciones del filtro: + +- `to`: `DATA`, 60 Bytes - (opcional) Identidad del receptor. _Cuando esté presente, intentará descifrar cualquier mensaje entrante si el cliente posee la clave privada de esta identidad._ +- `topics`: `Array of DATA` - Array de `DATA` temas con los que deben coincidir los temas del mensaje entrante. Puede usar las siguientes combinaciones: + - `[A, B] = A && B` + - `[A, [B, C]] = A && (B || C)` + - `[null, A, B] = ANYTHING && A && B` `null` funciona como comodín + - + +```js +params: [ + { + topics: ["0x12341234bf4b564f"], + to: "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1", + }, +] +``` + +**Muestra** `QUANTITY`: filtro recién creado. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newFilter","params":[{"topics": ['0x12341234bf4b564f'],"to": "0x2341234bf4b2341234bf4b564f..."}],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": "0x7" // 7 +} +``` + +### shh_uninstallFilter (obsoleto){#shh_uninstallfilter} + +Desinstala un filtro con un ID dado. Debe invocarse siempre cuando ya no se necesite watch. Además, los filtros agotan el tiempo de espera cuando no reciben una solicitud de [shh_getFilterChanges](#shh_getfilterchanges) durante un período de tiempo. **Nota**: Esta función está obsoleta. + +**Parámetros** + +1. `QUANTITY`: ID de filtro. + +```js +params: [ + "0x7", // 7 +] +``` + +**Muestra** `Boolean` - `true` si el filtro fue satisfactoriamente desinstalado; caso contrario`false`. + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_uninstallFilter","params":["0x7"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": true +} +``` + +### shh_getFilterChanges (obsoleto){#shh_getfilterchanges} + +Método de sondeo para filtros whisper. Retorna los nuevos mensajes desde la última llamada a este método. **Tenga en cuenta** que al llamar al método [shh_getMessages](#shh_getmessages) se restablecerá el buffer de este método de modo que no reciba mensajes duplicados. **Nota**: Esta función está obsoleta. + +**Parámetros** + +1. `QUANTITY`: ID de filtro. + +```js +params: [ + "0x7", // 7 +] +``` + +**Muestra** `Array`: array de mensajes recibidos desde el último sondeo: + +- `hash`: `DATA`, 32 Bytes (?) - El hash del mensaje. +- `from`: `DATA`, 60 Bytes - El remitente del mensaje, si el remitente fue especificado. +- `to`: `DATA`, 60 Bytes - El receptor del mensaje, si el receptor fue especificado. +- `expiry`: `QUANTITY` - número entero de tiempo en segundos cuando este mensaje debe expirar (?). +- `ttl`: `QUANTITY` - Número entero de tiempo que el mensaje debe flotar en el sistema en segundos (?). +- `sent`: `QUANTITY` - Número entero de marca de tiempo unix en que el mensaje fue enviado. +- `topics`: `Array of DATA` - Array de `DATA` temas que contenía el mensaje. +- `payload`: `DATA` - la carga útil del mensaje. +- `workProved`: `QUANTITY` - Número entero del trabajo requerido por el mensaje antes de enviarse (?). + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getFilterChanges","params":["0x7"],"id":73}' +// Result +{ + "id":1, + "jsonrpc":"2.0", + "result": [{ + "hash": "0x33eb2da77bf3527e28f8bf493650b1879b08c4f2a362beae4ba2f71bafcd91f9", + "from": "0x3ec052fc33..", + "to": "0x87gdf76g8d7fgdfg...", + "expiry": "0x54caa50a", // 1422566666 + "sent": "0x54ca9ea2", // 1422565026 + "ttl": "0x64", // 100 + "topics": ["0x6578616d"], + "payload": "0x7b2274797065223a226d657373616765222c2263686...", + "workProved": "0x0" + }] +} +``` + +### shh_getMessages (obsoleto) {#shh_getmessages} + +Consiga todos los mensajes que coincidan con un filtro. A diferencia de `ssh_getFilterChanges`, esto muestra todos los mensajes. + +**Nota**: Esta función está obsoleta. + +**Parámetros** + +1. `QUANTITY`: ID de filtro. + +```js +params: [ + "0x7", // 7 +] +``` + +**Retorna** Ver [ssh_getFilterChanges](#shh_getfilterchanges) + +**Ejemplo** + +```js +// Request +curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getMessages","params":["0x7" +],"id":73}' +``` + +Resultado ver [ssh_getFilterChanges](#shh_getfilterchanges) + +## Ejemplo de uso {#usage-example} + +### Implementar un contrato usando JSON_RPC {#deploying-contract} + +Está sección incluye una demostración de cómo implementar un contrato usando solo la interfaz RPC. Existen rutas alternativas para implementar contratos donde esta complejidad no está en juego: por ejemplo, usar biblioteas creadas sobre la interfaz RPC como [web3.js](https://web3js.readthedocs.io/) y [web3.py](https://github.com/ethereum/web3.py). Estas abstracciones son generalmente fáciles de entender y menos propensas a errores, pero sigue siendo de ayuda entender qué es lo que sucede "debajo del capó". + +El siguiente es un contrato inteligente sencillo llamado `Multiply7` que se implementará usando la interfaz JSON-RPC en un nodo Ethereum. Este tutorial asume que el lector actualmente corre un nodo Geth. Más información sobre nodos y clientes disponible [aquí](/developers/docs/nodes-and-clients/run-a-node). Consulte la documentación de cada [cliente individual](/developers/docs/nodes-and-clients/) para ver cómo iniciar el JSON-RCP HTTP para clientes no Geth. La mayoría de clientes por defecto sirven en `localhost:8545`. + +```javascript +contract Multiply7 { + event Print(uint); + function multiply(uint input) returns (uint) { + Print(input * 7); + return input * 7; + } +} +``` + +Lo primero que debe hacer es asegurarse de que la interfaz HTTP RPC está habilitada. Esto significa que proporcionamos a Geth el indicador `--http` al inicio. En este ejemplo usamos el nodo Geth en una cadena de desarrollo privada. Con este enfoque, no necesitamos ether en la red real. + +```bash +geth --http --dev console 2>>geth.log +``` + +Esto iniciará la interfaz HTTP RPC en `http://localhost:8545`. + +Podemos verificar que la interfaz se está ejecutando recuperando la dirección y el saldo de Coinbase usando [curl](https://curl.se). Tenga en cuenta que los datos usados en este ejemplo pueden ser diferentes en su nodo local. Si desea probar estos comandos, reemplace los parámetros de solicitud en la segunda solicitud curl con el resultado devuelto por la primera. + +```bash +curl --data '{"jsonrpc":"2.0","method":"eth_coinbase", "id":1}' -H "Content-Type: application/json" localhost:8545 +{"id":1,"jsonrpc":"2.0","result":["0x9b1d35635cc34752ca54713bb99d38614f63c955"]} + +curl --data '{"jsonrpc":"2.0","method":"eth_getBalance", "params": ["0x9b1d35635cc34752ca54713bb99d38614f63c955", "latest"], "id":2}' -H "Content-Type: application/json" localhost:8545 +{"id":2,"jsonrpc":"2.0","result":"0x1639e49bba16280000"} +``` + +Debido a que los números están codificados en formato hexadecimal, el saldo se muestra en wei como una cadena hexadecimal. Si queremos tener el saldo en ether como número, podemos usar web3 desde la consola Geth. + +```javascript +web3.fromWei("0x1639e49bba16280000", "ether") +// "410" +``` + +Ahora que hay algo de ether en nuestra cadena de desarrollo privado, podemos implementar el contrato. El primer paso es compilar el contrato Multiply7 en un código de bytes que se pueda enviar a la EVM. Para instalar solc, el compilador de Solidity, siga la [documentación de Solidity](https://docs.soliditylang.org/en/latest/installing-solidity.html). (Es posible que desee utilizar una versión anterior de `solc` para que coincida con [la versión del compilador utilizada para nuestro ejemplo](https://github.com/ethereum/solidity/releases/tag/v0.4.20).) + +El siguiente paso es compilar el contrato Multiply7 en código de bytes que se pueda enviar a la EVM. + +```bash +echo 'pragma solidity ^0.4.16; contract Multiply7 { event Print(uint); function multiply(uint input) public returns (uint) { Print(input * 7); return input * 7; } }' | solc --bin + +======= :Multiply7 ======= +Binary: +6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029 +``` + +Ahora que tenemos el código compilado, necesitamos determinar cuánto gas cuesta implementarlo. La interfaz RPC tiene un método `eth_estimateGas` que nos dará una estimación. + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_estimateGas", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 5}' -H "Content-Type: application/json" localhost:8545 +{"jsonrpc":"2.0","id":5,"result":"0x1c31e"} +``` + +Y finalmente implementamos el contrato. + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "gas": "0x1c31e", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 6}' -H "Content-Type: application/json" localhost:8545 +{"id":6,"jsonrpc":"2.0","result":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"} +``` + +La transacción es aceptada por el nodo y se devuelve un hash de la transacción. Esta hash puede usarse para rastrear la transacción. El siguiente paso es determinar la dirección donde se implementa el contrado. Cada transacción ejecutada debe crear un recibo. Este recibo contiene información sobre la transacción como en qué bloque fue incluida la transacción y cuánto gas usó la EVM. Si una transacción crea un contrato, también contendrá la dirección del contrato. Podemos recuperar el recibo con el método RPC `eth_getTransactionReceipt`. + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_getTransactionReceipt", "params": ["0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"], "id": 7}' -H "Content-Type: application/json" localhost:8545 +{"jsonrpc":"2.0","id":7,"result":{"blockHash":"0x77b1a4f6872b9066312de3744f60020cbd8102af68b1f6512a05b7619d527a4f","blockNumber":"0x1","contractAddress":"0x4d03d617d700cf81935d7f797f4e2ae719648262","cumulativeGasUsed":"0x1c31e","from":"0x9b1d35635cc34752ca54713bb99d38614f63c955","gasUsed":"0x1c31e","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","to":null,"transactionHash":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf","transactionIndex":"0x0"}} +``` + +Nuestro contrato fue creado en `0x4d03d617d700cf81935d7f797f4e2ae719648262`. Un resultado nulo en lugar de un recibo significa que la transacción no ha sido incluida en un bloque todavía. Espere un momento y verifique si su minero se está ejecutando y vuelva a intentarlo. + +#### Interactuar con contratos inteligentes {#interacting-with-smart-contract} + +En este ejemplo enviaremos una transacción utilizando `eth_sendTransaction` al método `multiply` del contrato. + +`eth_sendTransaction` requiere varios argumentos, específicamente `from`, `to` y `data`. `From` es la dirección pública de nuestra cuenta y `to` es la dirección del contrato. El argumento `data` contiene una carga útil que define a qué método se debe llamar y con qué argumentos. Aquí es donde entra en juego la [ABI (interfaz binaria de la aplicación)](https://docs.soliditylang.org/en/latest/abi-spec.html). La ABI es un archivo JSON que define cómo definir y codificar datos para la EVM. + +Los bytes de la carga útil definen qué método del contrato se invoca. Estos son los primeros 4 bytes del hash de Keccak sobre el nombre de la función y sus tipos de argumentos, codificados en formato hexadecimal. La función de multiplicación acepta un uint que es un alias para uint256. Esto nos deja con: + +```javascript +web3.sha3("multiply(uint256)").substring(0, 10) +// "0xc6888fa1" +``` + +El siguiente paso es codificar los argumentos. Solo hay un uint256, digamos, el valor 6. La ABI tiene una sección que especifica cómo codificar tipos uint256. + +`int: enc(X)` es la codificación en complemento a 2 big-endian de X, rellenada en el lado de orden superior (izquierda) con 0xff para X negativo y con cero > bytes para X positivo tal que la longitud sea un múltiplo de 32 bytes. + +Esto se codifica a `000000000000000000000000000000000000000000000000000000000000000006`. + +Combinando el selector de funciones y el argumento codificado, nuestros datos serán `0xc6888fa10000000000000000000000000000000000000000000000000000000000000006`. + +Esto ahora puede enviarse al nodo: + +```bash +curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeb85a5557e5bdc18ee1934a89d8bb402398ee26a", "to": "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d", "data": "0xc6888fa10000000000000000000000000000000000000000000000000000000000000006"}], "id": 8}' -H "Content-Type: application/json" localhost:8545 +{"id":8,"jsonrpc":"2.0","result":"0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74"} +``` + +Desde que la transacción fue enviada, se devolvió un hash de transacción. Recuperar el recibo da: + +```javascript +{ + blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55", + blockNumber: 268, + contractAddress: null, + cumulativeGasUsed: 22631, + gasUsed: 22631, + logs: [{ + address: "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d", + blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55", + blockNumber: 268, + data: "0x000000000000000000000000000000000000000000000000000000000000002a", + logIndex: 0, + topics: ["0x24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"], + transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74", + transactionIndex: 0 + }], + transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74", + transactionIndex: 0 +} +``` + +El recibo contiene un registro. Este registro fue generado por la EVM en la ejecución de la transacción e incluido en el recibo. La función `multiply` muestra que el evento `Print` fue elevado con la entrada multiplicada por 7 veces. Dado que el argumento del evento `Print` fue un uint256, podemos decodificarlo de acuerdo con las reglas de ABI, lo que nos dejará con el decimal eperado 42. Además de los datos, vale la pena señalar que los temas se pueden usar para determinar qué evento creó el registro: + +```javascript +web3.sha3("Print(uint256)") +// "24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da" +``` + +Esta fue solo una breve introducción a algunas de las tareas más comunes, demostrando el uso directo de JSON-RPC. + +## Temas relacionados {#related-topics} + +- [Especificación JSON_RPC](http://www.jsonrpc.org/specification) +- [ Nodos y clientes](/developers/docs/nodes-and-clients/) +- [API de JavaScript](/developers/docs/apis/javascript/) +- [API de back-end](/developers/docs/apis/backend/) +- [Clientes de ejecución](/developers/docs/nodes-and-clients/#execution-clients) diff --git a/src/content/translations/es/developers/docs/bridges/index.md b/src/content/translations/es/developers/docs/bridges/index.md new file mode 100644 index 00000000000..0979d137d36 --- /dev/null +++ b/src/content/translations/es/developers/docs/bridges/index.md @@ -0,0 +1,135 @@ +--- +title: Puentes +description: Una visión general para reducir la brecha a los desarrolladores +lang: es +--- + +Con la proliferación de las cadenas de bloques L1 y las soluciones de [escalamiento](/developers/docs/scaling/) L2, junto con el gran crecimiento del número de aplicaciones descentralizadas operando en varias cadenas o pasando a la modalidad multicadena, la necesidad por establecer comunicación y de poder mover activos a través de estás cadenas se han convertido en una parte esencial de la infraestructura de red. Existen diferentes tipos de puentes que hacen esto posible. + +## La necesidad de puentes {#need-for-bridges} + +Los puentes existen para poder conectar las redes de cadena de bloques entre sí. Permiten la conectividad e interoperatividad entre las cadenas de bloques. + +Las cadenas de bloques existen en entornos aislados, lo que significa que no hay manera de que estas se comuniquen con otras de forma natural. Como resultado, si bien podría haber una significativa actividad e innovación dentro de un ecosistema, esto se verá limitado por la falta de conectividad e interoperabilidad con otros ecosistemas. + +Los puentes ofrecen una manera de que los entornos aislados de cadenas de bloques puedan conectarse entre sí. Establecen una vía de transporte entre las cadenas de bloques donde tokens, mensajes, datos arbitrarios e incluso llamadas a [contratos inteligentes](/developers/docs/smart-contracts/) puedan transferirse de una cadena hacia otra. + +## Beneficio de los puentes {#benefits-of-bridges} + +En pocas palabras, los puentes posibilitan numerosos casos de uso, ya que permiten que las redes de cadenas de bloques intercambien datos y muevan activos entre sí. + +Las cadenas de bloques tienen fortalezas, debilidades y enfoques únicos para crear aplicaciones (como velocidad, rendimiento, costo, etc.). Los puentes ayudan al desarrollo del ecosistema cripto en general porque permiten que las cadenas de bloques aprovechen las innovaciones de las demás. + +En el caso de los desarrolladores, los puentes permiten lo siguiente: + +- La transferencia de cualquier tipo de datos, información y activos entre cadenas; +- La posibilidad de usar nuevas funciones y casos de uso para protocolos a medida en los puentes expandan su espacio de diseño para lo que pueden ofrecer los protocolos. Por ejemplo, un protocolo para yield farming implementado originalmente en la red principal de Ethereum puede ofrecer pools de liquidez en todas las cadenas compatibles con la EVM; +- La oportunidad de aprovechar las fortalezas de diferentes cadenas de bloques. Por ejemplo, los desarrolladores pueden beneficiarse de las bajas comisiones que ofrecen las diferentes soluciones de capa 2 implementando sus dApps en rollups, cadenas laterales, y los usuarios pueden establecer puentes para aprovecharlos; +- Coloración entre desarrolladores de varios ecosistemas de cadenas de bloques para crear nuevos productos; +- Atracción de usuarios y comunidades de varios ecosistemas a sus dapps. + +## ¿Cómo funcionan los puentes? {#how-do-bridges-work} + +Si bien hay muchos [tipos de diseños de puentes](https://blog.li.fi/what-are-blockchain-bridges-and-how-can-we-classify-them-560dc6ec05fa), resaltan tres formas de facilitar la transferencia de activos entre cadenas: + +- **Bloqueo y minteo:** Bloquear los activos en la cadena de origen y mintear activos en la cadena de destino. +- **Quemar y mintear:** Quemar activos en la cadena de origen y mintearlos en la cadena de destino. +- **Intercambios atómicos:** Intercambiar activos en la cadena fuente por activos en la cadena de destino con otra parte. + +## Tipos de puentes {#bridge-types} + +Los puentes usualmente se clasifican en los siguientes tipos: + +- **Puentes nativos:** Estos puentes son típicamente creados para impulsar liquidez en una cadena de bloques en particular, haciendo que los usuarios puedan mover activos fácilmente al ecosistema. Por ejemplo, el [Arbitrum Bridge](https://bridge.arbitrum.io/) se creó para que los usuarios establezcan un puente entre la red principal de Ethereum y Arbitrum de forma práctica. Otros tipos de puentes incluyen Polygon PoS Bridge, [Optimism Getawat](https://app.optimism.io/bridge), etc. +- **Puentes basados en validador u oráculos:** Estos puentes se apoyan en un conjunto de validadores u oráculos externos para validar las transferencias entre cadenas. Ejemplos: Multichain y Across. +- **Puentes de pase de mensajes generalizados:** Estos puentes pueden transferir activos, junto con mensajes y datos arbitrarios entre cadenas. Ejemplos: Nomad y LayerZero. +- **Redes de liquidez:** Estos puentes principalmente se enfocan en la transferencia de activos desde una cadena de bloques a otra vía intercambios atómicos. Generalmente, no soportan el envío de mensajes entre cadenas. Ejemplos: Connext y Hop. + +## Algunas compensaciones que debe considerar {#trade-offs} + +Los puentes no son soluciones perfectas. De hecho, deben sacrificarse algunas cuestiones para el propósito. Desarrolladores y usuarios pueden evaluar los puentes basándose en los siguientes factores: + +- **Seguridad:** ¿Quién verifica el sistema? Los puentes asegurados por validadores externos son típicamente menos seguros que los puentes con seguridad local o nativa de los validadores de la cadena de bloques. +- **Conveniencia:** ¿Cuánto tiempo toma completar una transacción, y cuántas transacciones necesitó firmar el usuario? Para un desarrollador, ¿cuánto tiempo se tarda en integrar un puente y qué tan complejo es el proceso? +- **Conectividad:** ¿Cuáles son las diferentes redes de destino que el puente puede conectar (a saber, rollups, redes laterales, otras cadenas de bloque de capa 1, etc.) y qué tan difícil es integrar una nueva cadena de bloques? +- **Habilidad para pasar datos más complejos:** ¿Puede un puente permitir la transferencia de mensajes y datos arbitrarios más complejos a través de cadenas o solo admite transferencias de activos multicadena? +- **Rentabilidad:** ¿Cuánto cuesta transferir activos a través de cadenas mediante un puente? Típicamente, los puentes cobran una comisión fija o variable dependiendo de la tarifa de gas y la liquidez de las rutas específicadas. También es crítico evaluar la rentabilidad de un puente según el capital requerido para garantizar su seguridad. + +A un alto nivel, los puentes pueden categorizarse como de confianza y sin confianza. + +- **De confianza:** Los puentes de confianza son verificados externamente. Usan un conjunto de verificadores externos (federaciones con multifirma, sistemas computacionales multiparte, redes de oráculos) para enviar los datos a través de las cadenas. Como resultado, pueden ofrecer una gran conectividad y permiten el pase de mensajes completamente generalizado a través de cadenas. También tienden a funcionar con velocidad y rentabilidad. Esto tiene como costo la seguridad, ya que los usuarios tienen que confiar en la seguridad del puente. +- **Sin confianza:** Estos puentes se basan en las cadenas de bloques que conectan y sus validadores para transferir mensajes y tokens. Son "sin confianza" porque no añaden nuevas suposiciones de confianza (además de las cadenas de bloques). Como resultado, los puentes sin confianza se consideran más seguros que los puentes de confianza. + +Para evaluar los puentes sin confianza en función de otros factores, debemos dividirlos en puentes de pase de mensajes generalizados y redes de liquidez. + +- **Puentes de pase de mensajes generalizados:** Estos puentes son excelentes en materia de seguridad y la capacidad de transferir datos más complejos a través de cadenas. Por lo general, también son buenos en términos de rentabilidad. Sin embargo, estas fortalezas generalmente vienen a expensas de la conectividad para los puentes de clientes ligeros (por ejemplo, IBC) e inconvenientes de velocidad para los puentes optimistas (por ejemplo, Nomad) que utilizan pruebas de fraude. +- **Redes de liquidez:** Estos puentes utilizan intercambios atómicos para transferir activos y son sistemas verificados localmente (es decir, utilizan los validadores de las cadenas de bloques subyacentes para verificar las transacciones). Como resultado, sobresalen por seguridad y velocidad. Además, se consideran comparativamente rentables y ofrecen una buena conectividad. Sin embargo, la principal compensación es su incapacidad para transmitir datos más complejos, ya que no admiten la transmisión de mensajes entre cadenas. + +## Riesgo con los puentes {#risk-with-bridges} + +Los puentes se asocian a los tres [más importantes hackeos en DeFi](https://rekt.news/leaderboard/) y todavía están en las primeras etapas de desarrollo. El uso de cualquier puente conlleva los siguientes riesgos: + +- **Riesgo del contrato inteligente:** Si bien muchos puentes han pasado con éxito las auditorías, todo lo que se necesita es una falla en un contrato inteligente para que los activos estén expuestos a hackeos (por ejemplo: [Wormhole Bridge de Solana](https://rekt.news/wormhole-rekt/)). +- **Riesgos financieros sistémicos:** Muchos puentes utilizan activos envueltos para mintear versiones canónicas del activo original en una nueva cadena. Esto expone al ecosistema a un riesgo sistémico, ya que hemos visto versiones envueltas de tokens explotadas. +- **Riesgo de contraparte:** Algunos puentes utilizan un diseño confiable que requiere que los usuarios confíen en la suposición de que los validadores no harán un complot para robar los fondos de los usuarios. La necesidad de que los usuarios confíen en estos actores de terceros los expone a riesgos como los rug pulls, la censura y otras actividades maliciosas. +- **Problemas abiertos:** Dado que los puentes se encuentran en las primeras etapas de desarrollo, hay muchas preguntas sin respuesta relacionadas con el rendimiento de los puentes en diferentes condiciones del mercado, como los tiempos de congestión de la red, y durante eventos imprevistos, como ataques a nivel de red o reversiones de estado. Esta incertidumbre plantea ciertos riesgos, cuyo grado aún se desconoce. + +## ¿Cómo pueden usar los puentes las dapps? {#how-can-dapps-use-bridges} + +Estas son algunas aplicaciones prácticas que los desarrolladores pueden considerar sobre los puentes y llevar su dapp a otras cadenas: + +### Integración de puentes {#integrating-bridges} + +Para los desarrolladores, hay muchas maneras de añadir soporte para puentes: + +1. **Construir su propio puente:** Construir un puente seguro y confiable no es fácil, especialmente si toma una ruta más minimizada en cuanto a confianza. Además, esto requiere años de experiencia y conocimientos técnicos relacionados con los estudios de escalabilidad e interoperabilidad. Por otra parte, se requeriría un equipo práctico para mantener un puente y atraer suficiente liquidez para hacerlo viable. + +2. **Mostrar a los usuarios múltiples opciones de puente:** Muchas [dapps](/developers/docs/dapps/) requieren que los usuarios tengan su token nativo para interactuar con ellas. Para permitir a los usuarios acceder a sus tokens, ofrecen diferentes opciones de puente en su sitio web. No obstante, este método es una solución rápida al problema, ya que aleja al usuario de la interfaz de la dapp y aun así requiere que interactúe con otras dapps y puentes. Esta es una experiencia de incorporación engorrosa y más propensa a que se cometan errores. + +3. **Integración de un puente:** Esta solución no requiere que la dapp envíe a los usuarios a las interfances del puente y el DEX externas. Permite que las dapps mejoren la experiencia de incorporación del usuario. No obstante, este enfoque tiene sus limitaciones: + + - La evaluación y el mantenimiento de puentes son difíciles y requieren mucho tiempo. + - Seleccionar un puente crea un único punto de falla y dependencia. + - La dapp está limitada por las capacidades del puente. + - Los puentes por sí solos podrían no ser suficientes. Las dapps podrían necesitar que los DEX ofrezcan más funcionalidad, como intercambios entre cadenas. + +4. **Integración de múltiples puentes:** Esta solución resuelve muchos problemas asociados con la integración de un solo puente. No obstante, también tiene limitaciones, ya que la integración de múltiples puentes consume recursos y crea gastos generales técnicos y de comunicación para los desarrolladores, el recurso más escaso en criptografía. + +5. **Integración de un agregador de puentes:** Otra opción para las dapps es la integración de una solución de agregación de puentes que les dé acceso a múltiples puentes. Los agregadores de puentes heredan las fortalezas de todos los puentes y, por lo tanto, no están limitados por las capacidades de un único puente. En particular, los agregadores de puentes suelen mantener las integraciones de puentes, lo que evita a la dapp la molestia de mantenerse al tanto de los aspectos técnicos y operativos de una integración de puente. + +Dicho esto, los agregadores de puentes también tienen sus limitaciones. Por ejemplo, si bien pueden ofrecer más opciones de puente, normalmente hay muchos más puentes disponibles en el mercado aparte de los que se ofrecen en la plataforma del agregador. Además, al igual que los puentes, los agregadores de puentes también están expuestos a los riesgos de los contratos inteligentes y la tecnología (más contratos inteligentes = más riesgos). + +Si una dapp va por la ruta de integrar un puente o un agregador, hay diferentes opciones en función de la profundidad de la integración. Por ejemplo, si solo se trata de una integración de front-end para mejorar la experiencia de incorporación del usuario, una dapp integraría el widget. Sin embargo, si la integración es para explorar estrategias de cadena cruzada más profundas como el staking, el yield farming, etc., la dapp integra el SDK o la API. + +### Implementar una dapp en múltiples cadenas {#deploying-a-dapp-on-multiple-chains} + +Para implementar una dapp en múltiples cadenas, los desarrolladores pueden usar plataformas de desarrollo como [Alchemy](https://www.alchemy.com/), [Hardhat](https://hardhat.org/), [Truffle](https://trufflesuite.com/), [Moralis](https://moralis.io/), etc. Por lo general, estas plataformas vienen con complementos componibles que pueden permitir que las dapps se hagan multicadena o se usen en otras. Por ejemplo, los desarrolladores pueden usar un proxy de implementación determinista ofrecido por el [complemento hardhat-deploy](https://github.com/wighawag/hardhat-deploy). + +#### Ejemplos: + +- [Cómo crear dapps multicadena](https://moralis.io/how-to-build-cross-chain-dapps/) +- [Crear un mercado de NFT entre cadenas](https://youtu.be/WZWCzsB1xUE) +- [Moralis: Creación de dapps de NFT multicadena](https://www.youtube.com/watch?v=ehv70kE1QYo) + +### Monitoreo de la actividad de contratos entre cadenas {#monitoring-contract-activity-across-chains} + +Para monitorear la actividad de los contratos entre cadenas, los desarrolladores pueden usar subgrafos y plataformas de desarrollador como Tenderly para observar los contratos inteligentes en tiempo real. Estas plataformas también tienen herramientas que ofrecen una mayor funcionalidad de monitoreo de datos para actividades multicadena, como la comprobación de [eventos emitidos por contratos](https://docs.soliditylang.org/en/v0.8.14/contracts.html?highlight=events#events), etc. + +#### Herramientas + +- [The Graph](https://thegraph.com/en/) +- [Antiguamente](https://tenderly.co/) + +## Más información {#further-reading} + +- [Puntes de cadena de bloques](/bridges/): ethereum.org +- [Puntes de cadena de bloques: crear redes de redes criptográficas](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) 8 de septiembre de 2021, Dmitriy Berenzon +- [El trilema de interoperabilidad](https://blog.connext.network/the-interoperability-trilemma-657c2cf69f17) 1 de octubre de 2021, Arjun Bhuptani +- [Clústeres: cómo los puentes de confianza y de confianza minimizada dan forma al panorama multicadena](https://blog.celestia.org/clusters/) 4 de octubre de 2021, Mustafa Al-Bassam +- [LI.FI: con los puentes, la confianza es un espectro](https://blog.li.fi/li-fi-with-bridges-trust-is-a-spectrum-354cd5a1a6d8) 28 de abril de 2022, Arjun Chand + +Además, aquí hay algunas presentaciones útiles de [James Prestwich](https://twitter.com/_prestwich) que pueden ayudar a desarrollar una comprensión más profunda de los puentes: + +- [Crear puentes, no jardines amurallados](https://youtu.be/ZQJWMiX4hT0) +- [Breaking Down Bridges](https://youtu.be/b0mC-ZqN8Oo) +- [Por qué se están quemando los puentes](https://youtu.be/c7cm2kd20j8) diff --git a/src/content/translations/es/developers/docs/data-and-analytics/block-explorers/index.md b/src/content/translations/es/developers/docs/data-and-analytics/block-explorers/index.md index 9bd152b58e8..34087219f9a 100644 --- a/src/content/translations/es/developers/docs/data-and-analytics/block-explorers/index.md +++ b/src/content/translations/es/developers/docs/data-and-analytics/block-explorers/index.md @@ -9,265 +9,241 @@ Los exploradores de bloques son tu portal de acceso a los datos de Ethereum. Pue ## Requisitos previos {#prerequisites} -Es necesario que comprendas los conceptos básicos de Ethereum para poder entender los datos que te ofrece un explorador de bloques. Empieza con [una introducción a Ethereum](/developers/docs/intro-to-ethereum/). +Es necesario que comprendas los conceptos básicos de Ethereum para poder entender los datos que te ofrece un explorador de bloques. Empiece con [una introducción a Ethereum](/developers/docs/intro-to-ethereum/). ## Servicios {#services} -- [Etherscan](https://etherscan.io/):_ También disponible en chino, coreano, ruso y japonés_ -- [Etherchain](https://www.etherchain.org/) -- [Ethplorer](https://ethplorer.io/) -- [Blockchair](https://blockchair.com/ethereum):_ También disponible en español, francés, italiano, holandés, portugués, ruso, chino y farsi_ +- [Etherscan:](https://etherscan.io/) _También disponible en chino, coreano, ruso y japonés_ +- [Beaconcha.in](https://beaconcha.in/) +- [Blockchair:](https://blockchair.com/ethereum) _También disponible en inglés, francés, italiano, neerlandés, portugués, ruso, chino y farsi_ - [Blockscout](https://blockscout.com/) +- [Etherchain](https://www.etherchain.org/) +- [Ethplorer:](https://ethplorer.io/) _También disponible en chino, español, francés, turco, ruso, coreano y vietnamita_ - [OKLink](https://www.oklink.com/eth) +- [Otterscan](https://otterscan.io/) +- [Rantom](https://rantom.app/) +- [Sirato](https://www.web3labs.com/sirato) +- [EthVM](https://www.ethvm.com/) +- [Explorador de bloques DexGuru](https://ethereum.dex.guru/) ## Datos {#data} -El diseño de Ethereum es transparente para que todo su contenido sea verificable. Los exploradores de bloques proporcionan una interfaz para obtener esta información. Y, en caso de que necesites información, esto es así tanto para la red principal de Ethereum como para las redes de pruebas. +El diseño de Ethereum es transparente para que todo su contenido sea verificable. Los exploradores de bloques proporcionan una interfaz para obtener esta información. Y, en caso de que necesites información, esto es así tanto para la red principal de Ethereum como para las redes de pruebas. Los datos se dividen en datos de ejecución y datos de consenso. Los datos de ejecución se refieren a las transacciones que fueron ejecutadas en un bloque específico. Los datos de consenso se refieren a los propios bloques y a los validadores que los propusieron. A continuación se incluye un resumen de los tipos de datos que puedes obtener en el explorador de bloques. -### Bloques {#blocks} +### Datos de ejecución {#execution-data} -A Ethereum se añaden bloques nuevos aproximadamente cada 12 segundos (esto puede fluctuar). Por eso, hay un flujo de datos casi constante agregándose a los exploradores de bloques. Los bloques contienen mucha información importante que puede resultarte útil: +Nuevos bloques se agregan cada 12 segundos a Ethereum (a menos que quien propone el bloque pierda su turno), por ende de forma constante se va agregando un flojo de datos a los exploradores de bloques. Los bloques contienen mucha información importante que puede resultarte útil: **Datos estándar** -- Altura del bloque: El número de bloque y la longitud de la blockchain (en bloques) durante la creación del bloque actual. -- Registro de tiempo: El tiempo durante el que un minero mina el bloque. -- Transacciones: El número de transacciones incluidas dentro del bloque. -- Minero: La dirección del minero que minó el bloque. -- Recompensa: La cantidad de ETH adjudicada al minero a cambio de agregar el bloque (la recompensa estándar es de 2 ETH + cualquier tarifa de transacción de las transacciones incluidas en el bloque). -- Dificultad: La dificultad relacionada con la minería del bloque. -- Tamaño: El tamaño de los datos que contiene el bloque (se mide en bytes). -- Gas utilizado: El total de unidades de gas que utilizan las transacciones incluidas en el bloque. -- Límite de gas: El límite total de gas establecido por las transacciones en el bloque. -- Datos extra: Cualquier dato adicional que el minero haya incluido en el bloque. +- Altura del bloque: El número de bloque y altura de la cadena de bloques (en bloques) en la creación del bloque actual +- Marca de tiempo: Momento en el cual fue propuesto el bloque +- Transacciones: El número de transacciones incluidas en el bloque +- Destinatario de comisión: La dirección que recibió las propinas de gas por las transacciones +- Recompensa del bloque: La cantidad de ETH conseguida por el validador que propuso el bloque +- Tamaño: El tamaño de los datos en el bloque (representados en bytes) +- Gas usado: Las unidades totales de gas usadas por las transacciones en el bloque +- Límite de gas: El límite total de gas establecido por las transacciones en el bloque +- Tarifa base por gas: El multiplicador mínimo de gas requerido para que una transacción sea incluida en el bloque +- Comisiones quemadas: Cuánto ETH se quema en el bloque +- Datos extras: Cualquier dato extra que el minero incluyó en el bloque **Datos avanzados** -- Hash: El hash criptográfico que representa la cabecera del bloque (es el único identificador del bloque). -- Parent hash: El hash del bloque que precede al bloque actual. -- Sha3Uncles: El hash combinado de todos los bloque de tipo "uncle" para un determinado bloque de tipo "parent". -- StateRoot: El hash raíz del árbol Merkle, que almacena todo el estado del sistema. -- Nonce: Un valor utilizado para que el minero pueda demostrar la Prueba de trabajo de un bloque. - -**Bloques de tipo "uncle"** - -Los bloques de tipo "uncle" se crean cuando 2 mineros generan bloques casi al mismo tiempo; solo se puede validar un bloque por los nodos. Estos no se incluyen, pero siguen recibiendo una recompensa por el trabajo. - -Los exploradores de bloques proporcionan la siguiente información acerca de los bloques de tipo "uncle": - -- Un número de bloque de tipo "uncle". -- El momento en que sucedieron. -- La altura del bloque en el que se crearon. -- La identidad de quién lo minó. -- La recompensa de ETH. +- Hash: El hash criptografico que representa el encabezado del bloque (el identificador único del bloque) +- Hash principal: El hash del bloque anterior al bloque actual +- StateRoot: El hash raíz del Merkle trie que guarda el estado entero del sistema ### Gas {#gas} -Los exploradores de bloques no solo te ofrecerán datos sobre el uso de gas en las transacciones y los bloques, sino que te proporcionarán información sobre los precios del gas actual de la red. Esto te servirá de ayuda para comprender el uso de la red, enviar transacciones seguras y no realizar un gasto demasiado alto de gas. Busca las API que te ayuden a obtener esta información en la interfaz de tus productos. Coberturas de datos específicos de gas: +Los exploradores de bloques no solo le ofrecerán datos sobre el uso de gas en las transacciones y los bloques, sino que también le proporcionarán información sobre los precios del gas actuales de la red. Esto le servirá de ayuda para comprender el uso de la red, enviar transacciones seguras y no realizar un gasto demasiado alto de gas. Busque API que lo ayuden a obtener esta información en la interfaz de sus productos. Los datos específicos del gas incluyen: -- Unidades estimadas de gas necesarias para realizar una transacción segura pero lenta (+ duración y precio estimado). -- Unidades estimadas de gas necesarias para realizar una transacción normal (+ duración y precio estimado). -- Unidades estimadas de gas necesarias para realizar una transacción rápida (+ duración y precio estimado). -- Tiempo de confirmación medio basado en el precio del gas. -- Los contratos están consumiendo gas, en otras palabras, productos populares que se están utilizando mucho en la red. -- Cuentas que están gastando gas, en otras palabras, usuarios frecuentes de la red. +- Unidades estimadas de gas necesarias para realizar una transacción segura pero lenta (+ duración y precio estimados) +- Unidades estimadas de gas necesarias para realizar una transacción normal (+ duración y precio estimados) +- Unidades estimadas de gas necesarias para realizar una transacción rápida (+ duración y precio estimados) +- Tiempo de confirmación medio basado en el precio del gas +- Contratos que consumen gas: en otras palabras, productos populares muy utilizados en la red +- Cuentas que usan gas: en otras palabras, usuarios frecuentes de la red ### Transacciones {#transactions} -Los exploradores de bloques se han convertido en un lugar común para que las personas puedan seguir el progreso de sus transacciones. Esto se debe a que el nivel de detalle que puedes obtener proporciona certezas adicionales. Entre los datos de la transacción se incluyen: +Los exploradores de bloques se han convertido en un lugar común para que las personas puedan seguir el progreso de sus transacciones. Esto se debe a que el nivel de detalle que puede obtener proporciona certezas adicionales. Los datos de las transacciones incluyen: **Datos estándar** -- Hash de la transacción: Un hash generado cuando la transacción se envía. -- Estado: Un indicador de si la transacción está pendiente, ha fallado o se ha realizado con éxito. -- Bloque: El bloque en el que se ha incluido la transacción. -- Registro de tiempo: La hora a la que un minero minó la transacción. -- Desde: La dirección de la cuenta que envió la transacción. -- Hacia: La dirección del destinatario o el contrato inteligente con el que interactúa la transacción. -- Tokens transferidos: Una lista de tokens que se transfirieron como parte de la transacción. -- Valor: El valor total de ETH que se transfiere. -- Tarifa por transacción: La cantidad pagada al minero para procesar la transacción (calculada según el precio del gas/\*gas utilizado). +- Hash de la transacción: El hash generado cuando la transacción es enviada +- Estado: El indicador que señala si la transacción está pendiente, falló o fue completada +- Bloque: El bloque en el cual la transacción fue incluida +- Marca de tiempo: Momento en el que el minero minó la transacción +- Desde: La dirección de la cuenta que envió la transacción +- Hacia: La dirección del receptor o contrato inteligente con el que interactúa la transacción +- Tokens transferidos: Todos los tokens que fueron transferidos como parte de la transacción +- Valor: El valor total de ETH transferidos +- Comisión de transacción: La cantidad pagada para que el minero procese la transacción (precio del gas \* gas usado) **Datos avanzados** -- Límite de gas: El número máximo de unidades de gas que la transacción puede consumir. -- Gas utilizado: La cantidad actual de unidades de gas que la transacción ha consumido. -- Precio del gas: El precio establecido por unidad de gas. -- Nonce: El número de transacción de la dirección `Desde` (ten en mente que empieza desde 0, así que un nonce de `100` sería actualmente la transacción número 101 enviada por esta cuenta). -- Datos de entrada: Cualquier información adicional que requiere la transacción. +- Límite de gas: El número máximo de unidades de gas que esta transaccion puede consumir +- Gas usado: La cantidad real de unidades de gas que consumió la transacción +- Precio del gas: El precio establecido por unidad de gas +- Nonce: El número de transacción de la dirección `from` (tenga en cuenta que empieza en 0, por ende, un nonce de `100` actualmente sería la transacción número 101 enviada por esta cuenta +- Datos de entrada: Cualquier información extra requerida por la transacción ### Cuentas {#accounts} -Se puede acceder a una gran cantidad de datos sobre las cuentas. Por eso, se suele recomendar utilizar varias cuentas para que tus activos y valores no se puedan rastrear con facilidad. Además, se están desarrollando varias soluciones para que las transacciones y la actividad de la cuenta se mantengan con mayor privacidad. De todos modos, a continuación se indican los datos disponibles para las cuentas: +Se puede acceder a una gran cantidad de datos sobre las cuentas. Por eso, se suele recomendar utilizar varias cuentas para que sus activos y valores no se puedan rastrear con facilidad. Además, se están desarrollando varias soluciones para que las transacciones y la actividad de la cuenta tengan mayor privacidad. De todos modos, estos son los datos disponibles sobre las cuentas: **Cuentas de usuario** -- Dirección de la cuenta: La dirección pública que puedes utilizar para enviar fondos. -- Saldo de ETH: La cantidad de ETH relacionado con la cuenta. -- Valor total de ETH: El valor de ETH. -- Tokens: Los tokens relacionados con la cuenta y su valor. -- Historial de transacciones: Una lista de todas las transacciones donde esta cuenta era el remitente o el destinatario. +- Dirección de la cuenta: La dirección pública que puede usar para enviar fondos +- Saldo de ETH: La cantidad de ETH asociada a esa cuenta +- Valor total ETH: El valor total de ETH +- Tokens: Los tokens asociados a la cuenta con su valor +- Historial de transacciones: La lista de todas las transacciones donde la cuenta fue el enviador o receptor **Contratos inteligentes** -Las cuentas de contratos inteligentes tienen todos los datos que tendrá la cuenta de usuario, pero algunos exploradores de bloques también mostrarán información sobre códigos. Los ejemplos incluyen: +Las cuentas de contratos inteligentes tienen todos los datos que tendrá una cuenta de usuario, pero algunos exploradores de bloques también mostrarán información sobre el código. Los ejemplos incluyen: -- Creador del contrato: La dirección que implementó el contrato a la red principal. -- Transacción de creación: La transacción que incluye la implementación a la red principal. -- Código fuente: El código de tipo Solidity o Vyper del contrato inteligente. -- Contrato ABI: La interfaz binaria de la aplicación del contrato, es decir, las llamadas que el contrato hace y los datos que recibe. -- Código de creación del contrato: El bytecode compilado del contrato inteligente; se crea cuando se compila un contrato inteligente escrito en Solidity o Vyper, etc. -- Eventos del contrato: Un historial de los métodos que se utilizan en el contrato inteligente. Básicamente es una manera de ver cómo se está utilizando el contrato y con qué frecuencia. +- Creador del contrato: La dirección que implementó el contrato en la red principal +- Transacción de creación: La transacción que incluyó la implementación en la red principal +- Código fuente: El código escrito en Solidity o Vypee del contrato inteligente +- ABI del contracto: La Interfaz Binaria de la Aplicación del contrato; las llamadas que el contrato hace y los datos que recibe +- Código de creación de contrato: El bytecode compilado del contrato inteligente (creado cuando compila un contrato inteligente escrito en Solidity o Viper, etc.) +- Eventos del contrato: Historial de los métodos invocados en el contrato inteligente; básicamente una forma de ver cómo el contrato está siendo usado y con qué frecuencia ### Tokens {#tokens} -Los tokens son un tipo de contrato así que incluirán datos similares a un contrato inteligente. Sin embargo, como tienen valor y se pueden intercambiar, tienen puntos de datos adicionales: +Los tokens son un tipo de contrato, por lo que van a tener datos similares a un contrato inteligente. Sin embargo, como tienen valor y se pueden comercializar, tienen puntos de datos adicionales: -- Tipo: Puede tratarse de un ERC-20, ERC-721 u otro token estándar. -- Precio: Si se trata de un ERC-20, tendrá un valor de mercado actual. -- Capitalización de mercado: Si se trata de un ERC-20, tendrán una capitalización de mercado (calculado por precio/oferta total). -- Oferta total: El número de tokens en circulación. -- Portadores: El número de direcciones que tiene el token. -- Transferencias: El número de veces que el token se ha transferido entre cuentas. -- Historial de transacciones: Un historial de todas las transacciones que incluyen el token. -- Dirección del contrato: La dirección del token que se implementó en la red principal. -- Decimales: Tokens ERC-20 divisibles y con decimales. +- Tipo: Ya sean ERC-20, ERC-721 o cualquier otro tipo de estándar +- Precio: Si son ERC-20, tendrán un valor de mercado +- Capitalización de mercado: Si son ERC-20 van a tener una capitalización de mercado (precio\*suministro total) +- Suministro total: El número total de tokens en circulación +- Poseedores: El número de direcciónes que poseen el token +- Transferencia: El número de veces que el token ha sido transferido entre cuentas +- Historial de transacciones: El historial de todas las transacciones que incluyen el token +- Dirección del contrato: La dirección del token que fue implementado en la red principal +- Decimales: Los tokens ERC-20 son divisibles y tienen decimales ### Red {#network} -Obviamente, existen algunos datos que hablan de la salud de la red. Estos son bastante específicos con respecto al mecanismo de consenso de la Prueba de trabajo de Ethereum. Cuando Ethereum pase a Eth2, algunos de estos datos serán redundantes: - -- Dificultad: La dificultad actual de minería. -- Tasa de Hash: Una estimación de como algunos mineros de de Ethereum están generando hashes e intentando resolver el bloque actual de Ethereum o cualquier otro bloque. -- Total de transacciones: El número de transacciones realizadas desde la creación de Ethereum. -- Transacciones por segundo: El número de transacciones procesadas por segundo. -- Precio ETH: Las valoraciones actuales de 1 ETH. -- Suministro total de ETH: El número de ETH en circulación; recuerda que un nuevo ETH se genera con la creación de cada bloque en forma de recompensas en bloque. -- Capitalización de mercado: El cálculo del precio/demanda. - -## Datos de Eth2 {#consensus-layer-data} +Algunos datos de bloque refieren a la salud de Ethereum de manera más integral. -Las actualizaciones de Eth2 están todavía en desarrollo, pero vale la pena comentar algunos de los puntos de información que podrán proporcionarte los exploradores. De hecho, todos estos datos ya están disponibles para las redes de pruebas. +- Total de transacciones: El número de transacciones desde que Ethereum fue creado +- Transacciones por segundo: El número de transacciones procesables en un segundo +- Precio de ETH: El valor actual de 1 ETH +- Suministro total de ETH: Número de ETH en circulación; recordemos que se crean nuevos ETH con la creación de cada bloque en forma de recompensa de bloques +- Capitalización de mercado: Precio\*Suministro -Si no estás familiarizado con Eth2, revisa [nuestra visión general de las actualizaciones de Eth2](/roadmap/). +## Datos de la capa de consenso {#consensus-layer-data} ### Epoch {#epoch} -La primera actualización de Eth2, la cadena de baliza, creará comités de validadores que se aleatorizan al final de cada epoch (cada 6,4 minutos) por razones de seguridad. Los datos de epoch incluyen: - -- Número de epoch. -- Estado finalizado: Si el epoch ha sido finalizado (sí/no). -- Tiempo: La hora a la que el epoch ha finalizado. -- Certificados: El número de transacciones en el epoch (votos por bloques dentro de los slots). -- Depósitos: El número de depósitos de ETH incluidos en el epoch (los validadores deben apostar ETH para convertirse en validadores). -- Cortes: El número de sanciones impuestas a los usuarios que proponen bloques o certificadores. -- Participación de votación: Es la cantidad de ETH apostados que se utiliza para certificar bloques. -- Validadores: El número de validadores activos para el epoch. -- Saldo promedio del validador: El saldo promedio de los validadores activos. -- Slots: El número de slots incluidos en el epoch (slots incluidos en un bloque válido). - -### Slot {#slot} - -Los slots son oportunidades para crear bloques; los datos disponibles para cada slot incluyen: - -- Epoch: El epoch en el que el slot es válido. -- Número de slot. -- Estado: El estado del slot (propuesto/perdido). -- Tiempo: El registro de tiempo del slot. -- Proponente: El validador que propuso el bloque para el slot. -- Raíz del bloque: La raíz del árbol hash del bloque de baliza. -- Raíz primaria: El hash del bloque que llegó antes. -- Raíz del estado: La raíz del árbol hash del estado de baliza. -- Firma. -- Revelación de fase RanDAO. -- Graffiti: Un usuario que propone bloques puede incluir un mensaje largo de 32 bytes a este bloque propuesto. -- Datos de Eth1. - - Hash del bloque. - - Cantidad de depósitos. - - Depósito raíz. -- Certificaciones: El número de certificaciones del bloque en el slot. -- Depósitos: El número de depósitos durante este slot. -- Salidas voluntarias: El número de validadores que quedaron durante el slot. -- Cortes: El número de sanciones impuestas a los usuarios que proponen bloques o certificadores. -- Votos: Los validadores que han votado el bloque en este slot. +Por razones de seguridad, se crean comités de validadores aleatorizados al final de cada época (epoch) (cada 6,4 minutos). Los datos de época incluyen: + +- Número de época +- Estado finalizado: Indica si se finalizó la época (Sí/No) +- Hora: Momento en que terminó la época +- Atestaciones: El número de atestaciones en la época (votos por bloques dentro de las ranuras) +- Depósitos: El número de depósitos de ETH incluidos en la época (los validadores tienen que apostar ETH para convertirse en validadores) +- Slashings: El número de penalizaciones a quienes proponen bloques o atestadores +- Participación de votos: El número de ETH apostado usado para certificar bloques +- Validadores: El número de validadores activos para la época +- Saldo promedio de validadores: El saldo promedio de los validadores activos +- Ranuras (slots): Número de slots includos en la época (las ranuras incluyen un bloque válido) + +### Ranura {#slot} + +Las ranuras son oportunidades para crear bloques; los datos disponibles para cada ranura incluyen: + +- Época: La época en que la ranura es válida +- Número de ranura +- Estado: El estado de la ranura (propuesto/perdido) +- Hora: La marca de tiempo de la ranura +- Proponente: El validador que propuso el bloque en la ranura +- Raíz de bloque: La hash-tree-root del BeaconBlockHash +- Raíz principal: El hash del bloque anterior +- Raíz de estado: La hash-tree-root del BeaconState +- Firma +- Revelación de Randao +- Graffiti: Quien propone el bloque puede incluir un mensaje de 32 bytes en su propuesta de bloque +- Datos de ejecución + - Hash del bloque + - Cantidad de depósitos + - Raíz de depósito +- Atestaciones: Número de atestaciones para el bloque en esta ranura +- Depósitos: Número de depósitos durante esta ranura +- Salidas voluntarias: El número de validadores que se retiraron durante la ranura +- Slashings: El número de penalizaciones a quienes proponen bloques o atestadores +- Votos: Los validadores que votaron por el bloque en esta ranura ### Bloques {#blocks-1} -En Eth2 los bloques trabajan de manera diferente porque los mineros se sustituyen por validadores y la cadena de baliza introduce slots y epochs a Ethereum. Esto se traduce en datos nuevos. +La prueba de participación divide el tiempo entre ranuras y épocas. Esto significa datos nuevos. -- Proponente: El validador que se ha elegido algorítmicamente para proponer el nuevo bloque. -- Epoch: El epoch en el que se ha propuesto el bloque. -- Slot: El slot en el que se ha propuesto el bloque. -- Certificados: El número de certificados incluidos en el slot. Los certificados son como votos que indican que el bloque está listo para pasar a la cadena de baliza. +- Proponente: El validador que fue algorítmicamente elegido para proponer el bloque nuevo +- Época: La época en la que el bloque fue propuesto +- Ranura: La ranura en la cual el bloque fue propuesto +- Atestaciones: El número de atestaciones incluidas en la ranura; las atestaciones son como votos que indican que el bloque está listo para ir hacia la Cadena de Baliza ### Validadores {#validators} -Los validadores son los responsables de proponer bloques y certificarlos dentro de los slots. - -- Número de validador: El número único que representa al validador. -- Saldo actual: El saldo del validador, que incluye las recompensas. -- Saldo efectivo: El saldo del validador que se utiliza para participar. -- Ingresos: Las recompensas o sanciones que recibe el validador. -- Estado: Si el validador está actualmente conectado y activo o no. -- Eficacia de la certificación: El tiempo promedio que tardan los certificados del validador en ser incluidos en la cadena. -- Elegibilidad para activación: La fecha (y epoch), en la que el validador estuvo disponible para validar. -- Activo desde: La fecha (y epoch), en la que el validador comenzó a estar activo. -- Bloques propuestos: El bloque que el validador ha propuesto. -- Certificaciones: Las certificaciones que el validador ha proporcionado. -- Depósitos: La dirección del remitente, el hash de la transacción, el número de bloque, el registro de tiempo, la cantidad y el estado del depósito de participación que ha realizado el validador. - -### Certificaciones {#attestations} - -Las certificaciones son votos positivos ("sí") para incluir votos en la cadena. Sus datos están relacionados con un registro de la certificación y con los validadores que la realizaron. - -- Slot: El slot en el que se realizó la certificación. -- Índice del comité: El índice del comité en el slot indicado. -- Bits de agregación: Representa la certificación agregada de todos los validadores participantes en la certificación. -- Validadores: Los validadores que proporcionan certificaciones. -- Raíz del bloque Beacon: Los puntos del bloque en el que certifican los validadores. -- Fuente: Los puntos hasta la última epoch justificada. -- Meta: Los puntos hasta el último límite del epoch. -- Firma. +Los validadores son los responsables de proponer bloques y certificarlos dentro de las ranuras. + +- Número de validador: El número único que representa al validador +- Saldo actual: El balance del validador incluyendo las recompensas +- Saldo efectivo: El saldo del validador que se usa para el staking +- Ingresos: Las recompensas o penalizaciones recibidas por el validador +- Estado: Si el validador está actualmente online y activo, o no +- Efectividad de atestaciones: El tiempo promedio que toman las atestaciones del validador para ser incluídas en la cadena +- Elegibilidad para activación: Fecha (y época) en que el validador estará disponible para poder validar +- Activo desde: Fecha (y época) en que el validador comenzó a estar activo +- Bloques propuestos: Los bloques que el validador ha propuesto +- Atestaciones: El número de atestaciones que el validador ha proporcionado +- Depósitos: Dirección desde, hash de transacción, número de bloque, marca de tiempo, cantidad y estado del depósito de staking hecho por el validador + +### Atestaciones {#attestations} + +Las atestaciones (o certificaciones) son votos positivos ("sí") para incluir bloques en la cadena. Sus datos están relacionados con un registro de la certificación y con los validadores que la realizaron. + +- Ranura: La ranura en la que tuvo lugar la atestación +- Índice del comité: El índice del comité en la ranura dada +- Bits de agregación: Representan las atestaciones agregadas por todos los validadores participantes en la atestación +- Validadores: Los validadores que propusieron las atestaciones +- Raíz del bloque de Baliza: Apunta al bloque al cual los validadores están atestando +- Fuente: Apunta a la época justificada más reciente +- Target: Apunta al límite de época más reciente +- Firma ### Red {#network-1} -Los datos de Eth2 de nivel superior incluyen los siguientes: +Los datos de nivel superior de la capa de consenso incluyen lo siguiente: -- Epoch actual. -- Slot actual. -- Validadores activos: El número de validadores activos. -- Validadores pendientes: El número de validadores pendientes de activación. -- ETH apostado: La cantidad de ETH apostada en la red. -- Saldo promedio: El saldo promedio de ETH de los validadores. +- Época actual +- Ranura actual +- Validadores activos: Número de validadores activos +- Validadores pendientes: Número de validadores esperando ser activos +- ETH apostado: Cantidad de ETH en staking en la red +- Saldo promedio: Saldo promedio de ETH de los validadores ## Exploradores de bloques {#block-explorers} -- [Etherscan](https://etherscan.io/): Puedes utilizar un explorador de bloques para obtener datos de la red principal de Ethereum, la red de pruebas Ropsten, la red de pruebas Kovan, la red de pruebas Rinkeby y la red de pruebas Goerli. -- [Blockscout](https://blockscout.com/): Se centra en las siguientes redes: - - xDai: Combinación inteligente de la moneda estable DAI del MakerDAO, y la Sidechain y tecnología TokenBridge de POA. - - POA: Sidechain y una red autónoma asegurada por un grupo de validadores de confianza. Todos los validadores de la red son notarios de los Estados Unidos, y su información está disponible públicamente. - - Red de pruebas Sokol POA. - - ARTIS: Blockchain compatible con Ethereum. - - [LUKSO L14](https://blockscout.com/lukso/l14) – L14 funciona como la primera red de pruebas, permite a la comunidad LUKSO construir y probar una infraestructura común. - - qDai. -- [Etherchain](https://www.etherchain.org/): Un explorador de bloques para la red principal de Ethereum. -- [Ethplorer](https://ethplorer.io/): Un explorador de bloques con un enfoque en tokens para la red principal de Ethereum y la red de pruebas de Kovan. -- [Blockchair](https://blockchair.com/ethereum): El explorador de Ethereum más privado. Además, puede ordenar y filtrar datos (mempool). - -## Exploradores de bloques de Eth2 {#beacon-chain-block-explorers} - -- [https://beaconcha.in/](https://beaconcha.in/) -- [https://beaconscan.com/](https://beaconscan.com/) +- [Etherscan](https://etherscan.io/): Un explorador de bloques que puede usar para buscar datos de la red principal de Ethereum y la red de pruebas Goerli +- [Beaconcha.in](https://beaconcha.in/): Un explorador de bloques de código abierto para la red principal de Ethereum y la red de pruebas Goerli +- [Blockchair](https://blockchair.com/ethereum): El explorador de Ethereum más privado. También para clasificación y filtrado de datos (mempool) +- [Etherchain](https://www.etherchain.org/): Un explorador de bloques para la red principal de Ethereum +- [Ethplore](https://ethplorer.io/): Un explorador de bloques con enfoque en tokens para la red principal de Ethereum y la red de pruebas Kovan +- [Rantom](https://rantom.app/): Un visor de código abierto y fácil de usar de información detallada de transaccinoes DeFI y NFT -## Más información {#further-reading} +## Para seguir leyendo {#further-reading} -_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ +_¿Conoce algún recurso comunitario que le haya sido de ayuda? Edite la página y añádalo._ ## Temas relacionados {#related-topics} -- [Minería](/developers/docs/consensus-mechanisms/pow/mining/) - [Transacciones](/developers/docs/transactions/) - [Cuentas](/developers/docs/accounts/) - [Redes](/developers/docs/networks/) diff --git a/src/content/translations/es/developers/docs/data-and-analytics/index.md b/src/content/translations/es/developers/docs/data-and-analytics/index.md new file mode 100644 index 00000000000..3bfd0d8e68d --- /dev/null +++ b/src/content/translations/es/developers/docs/data-and-analytics/index.md @@ -0,0 +1,46 @@ +--- +title: Datos y análisis +description: "¿Cómo obtener datos y análisis en cadena para usarlos en tus dapps?" +lang: es +--- + +## Introducción {#Introduction} + +A medida que aumente la utilización de la red, habrá una cantidad creciente de información valiosa en los datos en cadena. A medida que el volumen de datos crece rápidamente, calcular y agregar esta información para reportar o impulsar una dApp puede costar tiempo y el proceso puede ser un poco agotador. + +El aprovechamiento de los proveedores de datos existentes puede agilizar el desarrollo, producir resultados más precisos y reducir los constantes esfuerzos de mantenimiento. Esto permitirá a un equipo concentrarse en la funcionalidad principal que su proyecto pretende ofrecer. + +## Prerrequisitos {#prerequisites} + +Debe comprender el concepto básico de [Exploradores de bloques](/developers/docs/data-and-analytics/block-explorers/) para comprender cómo usarlos mejor en el contexto de análisis de datos. Además, familiarícese con el concepto de un [índice](/glossary/#index) para comprender las ventajas que añaden al diseño de un sistema. + +En cuanto a los fundamentos de la arquitectura, entender qué es una [API](https://www.wikipedia.org/wiki/API) y [REST](https://www.wikipedia.org/wiki/Representational_state_transfer), incluso en teoría. + +## Exploradores de bloques {#block-explorers} + +Muchos [Exploradores de bloques](/developers/docs/data-and-analytics/block-explorers/) ofrecen gateways de [API](https://www.wikipedia.org/wiki/API) [RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer) que proporcionarán a los desarrolladores visibilidad de los datos en tiempo real sobre bloques, transacciones, mineros, cuentas y otra actividad en la cadena. + +Los desarrolladores pueden luego procesar y transformar estos datos para dar a sus usuarios una visión e interacciones únicas con la [cadena de bloques](/glossary/#blockchain). Por ejemplo, [Etherscan](https://etherscan.io) provee información de ejecución y consenso por cada ranura 12s. + +## The Graph {#the-graph} + +El [Graph Network](https://thegraph.com/) es un protocolo de indexación descentralizado para organizar datos de la cadena de bloques. En lugar de crear y gestionar almacenes de datos fuera de la cadena y centralizados para agregar datos en la cadena, con The Graph, los desarrolladores pueden crear aplicaciones sin servidor que se ejecutan completamente en infraestructura pública. + +Usando [GraphQL](https://graphql.org/), los desarrolladores pueden consultar cualquiera de las API curadas, conocidas como sub-graphs, para adquirir la información necesaria que necesitan para manejar sus dApps. Consultando estos sub-graphs indexados, los informes y las dApps no solo consiguen ventajas de rendimiento y escalabilidad, sino también la precisión integrada de los consensos de la red. A medida que se añaden nuevas mejoras y/o sub-graphs a la red, sus proyectos pueden iterar rápidamente para aprovechar estas mejoras. + +## Diversidad de clientes + +La [diversidad de clientes](/developers/docs/nodes-and-clients/client-diversity/) es importante para la salud general de la red de Ethereum porque esta provee resistencia a errores y exploits. Ahora hay varios paneles de diversidad de clientes, incluidos [clientdiversity.org](https://clientdiversity.org/), [ated.network](https://rated.network), [execution-diversity.info](https://execution-diversity.info/) y +Ethernodes. + +## Dune Analytics {#dune-analytics} + +[Dune Analytics](https://dune.com/) preprocesa los datos de la cadena de bloques y los integra en tablas de bases de datos relacionales (PostgreSQL y DatabricksSQL), permitiendo a los usuarios consultar los datos de la cadena usando SQL y crear paneles de control con los resultados de dichas consultas. Los datos en cadena son organizados en 4 categorías: `bloques`, `transacciones`, `registros` (de eventos) y `rastreos` (de llamadas). Se decodificaron contratos y protocolos populares, y cada uno de ellos tiene sus propios conjuntos de llamadas y eventos. Estas tablas de eventos y llamadas son procesadas y organizadas en tablas abstractas ordenadas por el tipo de protocolo, por ejemplo: dex, préstamos, monedas estables, etc. + +## Más información {#further-reading} + +- [Descripción general de Graph Network](https://thegraph.com/docs/en/about/network/) +- [Graph Query Playground](https://thegraph.com/explorer/subgraph/graphprotocol/graph-network-mainnet?version=current) +- [Ejemplos de código API en EtherScan](https://etherscan.io/apis#contracts) +- [Explorador de la cadena de Baliza Beaconcha.in](https://beaconcha.in) +- [Aspectos básicos de Dune](https://docs.dune.com/#dune-basics) diff --git a/src/content/translations/es/developers/docs/data-availability/index.md b/src/content/translations/es/developers/docs/data-availability/index.md new file mode 100644 index 00000000000..430bcba289b --- /dev/null +++ b/src/content/translations/es/developers/docs/data-availability/index.md @@ -0,0 +1,83 @@ +--- +title: Disponibilidad de datos +description: Descripción general de los problemas y soluciones relacionados con la disponibilidad de datos en Ethereum +lang: es +--- + +"No confíe, verifique" es un principio común en Ethereum. La idea es que su nodo pueda verificar de manera independiente que la información que recibe es correcta ejecutando todas las transacciones en los bloques que recibe de sus pares para asegurarse de que los cambios propuestos coincidan exactamente con los calculados de manera independiente por el nodo. Esto significa que los nodos no tienen que confiar en que los remitentes del bloque sean honestos. Esto no es posible si falta información. + +La **disponibilidad de datos** se refiere a la confianza que un usuario puede tener en que los datos necesarios para verificar un bloque estén realmente disponibles para todos los participantes de la red. Para los nodos completos en la capa 1 de Ethereum, esto es relativamente simple; el nodo completo descarga una copia de todos los datos en cada bloque: los datos _deben_ estar disponibles para que la descarga sea posible. Un bloque con datos faltantes sería descartado en lugar de ser agregado a la cadena de bloques. Esto es la "disponibilidad de datos en cadena" y es una característica de las cadenas de bloques monolíticas. Los nodos completos no pueden ser engañados para aceptar transacciones inválidas porque descargan y ejecutan cada transacción por sí mismos. Sin embargo, en el caso de las cadenas de bloques modulares, los rollups de capa 2 y los clientes ligeros, el panorama de la disponibilidad de datos es más complejo, lo cual requiere de procedimientos de verificación más sofisticados. + +## Prerrequisitos {#prerequisites} + +Debe tener una buena comprensión de los [fundamentos de la cadena de bloques](/developers/docs/intro-to-ethereum/), especialmente de los [mecanismos de consenso](/developers/docs/consensus-mechanisms/). Esta página también asume que el lector está familiarizado con [bloques](/developers/docs/blocks/), [transacciones](/developers/docs/transactions/), [nodos](/developers/docs/nodes-and-clients/), [soluciones de escalabilidad](/developers/docs/scaling/) y otros temas relevantes. + +## El problema de la disponibilidad de datos {#the-data-availability-problem} + +El problema de la disponibilidad de datos es la necesidad de demostrar a toda la red que la forma resumida de algunos datos de transacción que se están agregando a la cadena de bloques realmente representa un conjunto de transacciones válidas, pero hacerlo sin requerir que todos los nodos descarguen todos los datos. Todos los datos de transacción son necesarios para verificar de manera independiente los bloques, pero requerir que todos los nodos descarguen todos los datos de transacción es un obstáculo para el escalamiento. Las soluciones al problema de disponibilidad de datos buscan proporcionar garantías suficientes de que todos los datos de transacción estuvieron disponibles para que los participantes de la red que no descargan y almacenan los datos los pudieran verificar. + +Los [nodos ligeros](/developers/docs/nodes-and-clients/light-clients) y los [rollups de capa 2](/developers/docs/scaling) son ejemplos importantes de participantes en la red que requieren garantías sólidas de disponibilidad de datos, pero que no pueden descargar y procesar los datos de transacción por sí mismos. Evitar la descarga de datos de transacción es lo que hace que los nodos ligeros sean ligeros y permite que las rollups sean soluciones efectivas de escalamiento. + +La disponibilidad de datos también es una preocupación fundamental para futuros clientes ["sin estado" (stateless)](/roadmap/statelessness) de Ethereum que no necesiten descargar ni almacenar datos de estado para verificar bloques. Los clientes sin estado aún necesitan estar seguros de que los datos estén disponibles _en algún lugar_ y que han sido procesados correctamente. + +## Soluciones de disponibilidad de datos {#data-availability-solutions} + +### Muestreo de disponibilidad de datos (DAS) {#data-availability-sampling} + +El muestreo de disponibilidad de datos (DAS) es una forma en la que la red verifica que los datos están disponibles sin ejercer demasiada presión sobre ningún nodo individual. Cada nodo (incluidos los nodos que no realizan staking) descarga un pequeño subconjunto seleccionado al azar de los datos totales. La descarga exitosa de las muestras confirma con alto grado de confianza que todos los datos están disponibles. Esto se basa en la codificación de borrado de datos, que expande un conjunto dado de datos con información redundante (la forma en que se hace esto es ajustando una función conocida como un _polinomio_ sobre los datos y evaluando ese polinomio en puntos adicionales). Esto permite que los datos originales se recuperen a partir de los datos redundantes cuando sea necesario. Una consecuencia de esta creación de datos es que, si _cualquiera_ de los datos originales no está disponible, _la mitad_ de los datos expandidos terminará faltando. La cantidad de muestras de datos descargadas por cada nodo puede ajustarse de manera que sea _extremadamente_ probable que al menos uno de los fragmentos de datos muestreados por cada cliente falte _si_ menos de la mitad de los datos está realmente disponible. + +El DAS se va a utilizar para garantizar que los operadores de rollups pongan a disposición sus datos de transacciones luego de que se haya implementado [EIP-4844](/roadmap/danksharding). Los nodos de Ethereum van a tomar muestras aleatorias de los datos de transacción proporcionados en blobs utilizando el esquema de redundancia explicado anteriormente para asegurarse de que existan todos los datos. La misma técnica también podría emplearse para estar seguros de que los productores de bloques estén poniendo a disposición todos sus datos, garantizando así la seguridad de los clientes ligeros. De manera similar, bajo la [separación entre constructor/generador de bloques y proponente](/roadmap/pbs), solo el generador de bloques estaría obligado a procesar un bloque completo, mientras que otros validadores harían la verificación utilizando el muestreo de disponibilidad de datos. + +### Comités de disponibilidad de datos {#data-availability-committees} + +Los Comités de Disponibilidad de Datos (DAC) son entidades de confianza que proporcionan o certifican la disponibilidad de datos. Los DAC pueden ser utilizados en lugar del Muestreo de Disponibilidad de Datos [o en combinación con él](https://hackmd.io/@vbuterin/sharding_proposal#Why-not-use-just-committees-and-not-DAS) . Las garantías de seguridad que vienen con los comités dependen de la configuración específica. Ethereum utiliza subconjuntos de validadores seleccionados al azar para dar fe de la disponibilidad de datos para nodos ligeros, por ejemplo. + +Algunos validiums también utilizan DAC. El DAC es un conjunto de nodos confiables que almacenan copias de datos sin conexión. El DAC está obligado a poner los datos a disposición en caso de disputa. Los miembros del DAC también publican atestaciones o certificaciones en la cadena para demostrar que los datos mencionados están efectivamente disponibles. Algunos validiums reemplazan los DAC con un sistema de validadores de prueba de participación (PoS). Aquí, cualquier persona puede convertirse en un validador y almacenar datos fuera de la cadena. Sin embargo, deben proporcionar una "garantía o fianza", que se deposita en un contrato inteligente. En caso de comportamiento malicioso, como que el validador retenga los datos, la garantía puede acuchillarse (cortarse). Los comités de disponibilidad de datos basados en la prueba de participación son considerablemente más seguros que los DAC regulares porque incentivan directamente el comportamiento honesto. + +## Disponibilidad de datos y nodos ligeros {#data-availability-and-light-nodes} + +Los [nodos ligeros](/developers/docs/nodes-and-clients/light-clients) necesitan validar que los encabezados de los bloques que reciben son correctos sin descargar los datos de dichos bloques. El precio de ser tan ligeros es la incapacidad de verificar de forma independiente los encabezados de los bloques mediante la reejecución de transacciones de manera local, como lo hacen los nodos completos. + +Los nodos ligeros de Ethereum confían en conjuntos aleatorios de 512 validadores que fueron asignados a un _comité de sincronización_. El comité de sincronización funciona como un DAC, el cual señala a los clientes ligeros que los datos en el encabezado son correctos mediante una firma criptográfica. El comité de sincronización se renueva diariamente. El encabezado de cada bloque informa a los nodos ligeros cuáles son los validadores que tienen que esperar que autoricen el _próximo_ bloque, de tal manera que no sean engañados y terminen confiando en un grupo malicioso que se haga pasar por el auténtico comité de sincronización. + +Sin embargo, ¿qué es lo que sucede si un atacante de alguna u otra manera _logra_ hacer pasar el encabezado de un bloque malicioso a los clientes ligeros y los convence de que fue autorizado por un comité de sincronización honesto? En ese escenario, el atacante podría incluir transacciones no válidas y el cliente ligero las aceptaría ciegamente, ya que no verifican independientemente todos los cambios de estado resumidos en el encabezado del bloque. Para protegerse de esto, el cliente ligero puede utilizar pruebas de fraude. + +La forma en que estas pruebas de fraude funcionan es que un nodo completo, al detectar que una transición de estado inválida se difunde por la red, podría generar rápidamente un pequeño conjunto de datos para demostrar que una transición de estado propuesta es imposible que surja de un conjunto dado de transacciones y transmitir esos datos a sus pares. Los nodos ligeros podrían recoger dichas pruebas de fraude y utilizarlas para descartar encabezados de bloques incorrectos, asegurándose de que permanezcan en la misma cadena honesta que los nodos completos. + +Esto depende de nodos completos que tengan acceso a los datos completos de las transacciones. Un atacante que propague el encabezado incorrecto de un bloque y sumado a eso no ponga a disposición los datos de transacciones podría evitar que los nodos completos generen pruebas de fraude. Los nodos completos podrían emitir una advertencia sobre un bloque incorrecto, pero no podrían respaldar su advertencia con pruebas, ya que los datos no estaban disponibles para generarlas. + +La solución a este problema de disponibilidad de datos es el muestreo de disponibilidad de datos (DAS). Los nodos ligeros descargan fragmentos muy pequeños y aleatorios de los datos de estado completo y utilizan estas muestras para verificar que el conjunto de datos completo esté disponible. La probabilidad real de asumir equivocadamente que los datos completos están disponibles luego de descargar N fragmentos aleatorios se puede calcular: [por ejemplo, para 100 fragmentos, la probabilidad es de 10^-30](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html), es decir que es extremadamente improbable. + +Incluso en este escenario, ataques que retengan solo unos pocos bytes podrían pasar desapercibidos fácilmente para aquellos clientes que realizan solicitudes de datos aleatorios. La solución se alcanza mediante la codificación de borrado, que reconstruye pequeñas partes de datos faltantes para luego utilizarlas para verificar las modificaciones de estado propuestas. Posteriormente se puede construir una prueba de fraude utilizando los datos reconstruidos, evitando que los nodos ligeros acepten encabezados incorrectos. + +**Nota:** El DAS y las pruebas de fraude aún no se implementaron en los clientes ligeros de Ethereum en prueba de participación, pero están contemplados dentro del plan de desarrollo, probablemente en forma de pruebas basadas en ZK-SNARK. Actualmente los clientes ligeros usan una forma de DAC: verifican las identidades del comité de sincronización y luego confían en los encabezados de bloque firmados que reciben. + +## Disponibilidad de datos y rollups de capa 2 {#data-availability-and-layer-2-rollups} + +Las [soluciones de escalabilidad de capa 2](/layer-2/), como los [rollups](/glossary/#rollups), reducen los costos de transacción y aumentan la capacidad de procesamiento de Ethereum gracias a que procesan transacciones fuera de la cadena. Las transacciones de los rollups se comprimen y son publicadas en lotes en Ethereum. Los lotes representan en una sola transacción en Ethereum miles de transacciones individuales realizadas fuera de la cadena. Esto reduce la congestión en la capa base y disminuye las tarifas para los usuarios. + +Sin embargo, solo es posible confiar en las transacciones de "resumen" publicadas en Ethereum si el cambio de estado propuesto puede ser verificado de manera independiente y confirmado como resultado de aplicar todas las transacciones individuales fuera de la cadena. Si los operadores de los rollup no ponen a disposición los datos de transacción para esta verificación, podrían estar enviando datos incorrectos a Ethereum. + +Los [rollups optimistas](/developers/docs/scaling/optimistic-rollups/) publican datos de transacciones de manera comprimida en Ethereum y esperan cierto tiempo (normalmente 7 días) para permitir que verificadores independientes comprueben los datos. Si alguno identifica un problema, puede generar una prueba de fraude y utilizarla para impugnar al rollup. La consecuencia sería una reversión en la cadena y la omisión del bloque inválido. Esto solo es posible si los datos están disponibles. Actualmente, los datos se ponen a disposición permanentemente como `CALLDATA`, que residen permanentemente en la cadena. Sin embargo, EIP-4844 pronto va a permitir que los rollups publiquen sus datos de transacción en un almacenamiento de tipo blob más económico. Esto no sería un almacenamiento permanente. Los verificadores independientes van a tener que consultar los blobs y presentar sus impugnaciones en el lapso de 1-3 meses antes de que los datos sean eliminados de la capa 1 de Ethereum. La disponibilidad de datos solamente va a estar garantizada por el protocolo de Ethereum durante ese corto período de tiempo. Luego de ese lapso, la responsabilidad va a recaer en otras entidades del ecosistema de Ethereum. Cualquier nodo puede verificar la disponibilidad de datos utilizando DAS, es decir, descargando pequeñas muestras aleatorias de los datos de los blobs. + +Los [rollups de conocimiento cero (ZK)](/developers/docs/scaling/zk-rollups) no necesitan publicar los datos de la transacción, ya que las [pruebas de validez de conocimiento cero](/glossary/#zk-proof) garantizan la corrección de las transiciones de estado. Sin embargo, la disponibilidad de datos sigue siendo un problema porque no podemos garantizar la funcionalidad del rollup de ZK (o interactuar con él) sin acceso a sus datos de estado. Por ejemplo, los usuarios no pueden conocer sus saldos si un operador retiene detalles sobre el estado del rollup. Además, no pueden realizar actualizaciones de estado utilizando la información contenida en un bloque recién agregado. + +## Disponibilidad de datos frente a capacidad de recuperación de datos {#data-availability-vs-data-retrievability} + +La disponibilidad de datos es diferente de la capacidad de recuperación de datos. La disponibilidad de datos es la garantía de que los nodos completos han podido acceder y verificar el conjunto completo de transacciones asociadas con un bloque específico. No es necesario que los datos sean accesibles para siempre. + +La recuperabilidad de datos es la capacidad de los nodos para recuperar _información histórica_ de la cadena de bloques. Estos datos históricos no son necesarios para verificar nuevos bloques, solo son necesarios para sincronizar nodos completos del bloque inicial o para servir solicitudes históricas específicas. + +El protocolo principal de Ethereum se ocupa principalmente de la disponibilidad de datos, no de su capacidad de recuperación. La capacidad de recuperación de datos puede ser proporcionada por una pequeña población de nodos de archivo ejecutados por terceros, o puede distribuirse a través de la red utilizando el almacenamiento de archivos descentralizado, como la [Portal Network](https://www.ethportal.net/). + +## Más información {#further-reading} + +- [¿Qué es la disponibilidad de datos?](https://medium.com/blockchain-capital-blog/wtf-is-data-availability-80c2c95ded0f) +- [¿Qué es la disponibilidad de datos?](https://coinmarketcap.com/alexandria/article/what-is-data-availability) +- [El panorama de disponibilidad de datos fuera de la cadena de Ethereum](https://blog.celestia.org/ethereum-off-chain-data-availability-landscape/) +- [Manual básico sobre las comprobaciones de disponibilidad de datos](https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html) +- [Explicación de la propuesta de fragmentación + DAS](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling) +- [Nota sobre la disponibilidad de datos y la codificación de borrado](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding#can-an-attacker-not-circumvent-this-scheme-by-releasing-a-full-unavailable-block-but-then-only-releasing-individual-bits-of-data-as-clients-query-for-them) +- [Comités de disponibilidad de datos](https://medium.com/starkware/data-availability-e5564c416424) +- [Comités de disponibilidad de datos de prueba de participación](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf) +- [Soluciones al problema de la capacidad de recuperación de datos](https://notes.ethereum.org/@vbuterin/data_sharding_roadmap#Who-would-store-historical-data-under-sharding) diff --git a/src/content/translations/es/developers/docs/design-and-ux/index.md b/src/content/translations/es/developers/docs/design-and-ux/index.md new file mode 100644 index 00000000000..2449f788db3 --- /dev/null +++ b/src/content/translations/es/developers/docs/design-and-ux/index.md @@ -0,0 +1,83 @@ +--- +title: Diseño y experiencia de usuario (UX) en web3 +description: Introducción al diseño y experiencia del usuario e investigación en el contexto web 3 y Ethereum +lang: es +--- + +¿Es nuevo en el diseño con Ethereum? Este es el lugar adecuado para usted. La comunidad de Ethereum tiene recursos escritos para presentarle los conceptos básicos de diseño e investigación de Web3. Aprenderá sobre conceptos básicos que pueden diferir de otros diseños de aplicaciones con los que esté familiarizado. + +¿Necesita primero una comprensión más básica de la Web3? Eche un vistazo a [**Learn hub**](/learn/). + +## Comience con la investigación de los usuarios {#Start-with-user-research} + +El diseño efectivo va más allá de la creación de interfaces de usuario visualmente atractivas. Implica obtener una comprensión profunda de las necesidades, los objetivos y los factores impulsores del usuario. Por lo tanto, recomendamos encarecidamente que todos los diseñadores adopten un proceso de diseño, como el [**proceso de doble diamante**](), para garantizar que su trabajo sea deliberado e intencional. + +- [La Web3 necesita más investigadores y diseñadores de experiencia de usuario](https://akasha.org/blog/2022/10/11/akasha-conversation-09-web3-ux-researchers-and-designers): visión general de la madurez actual del diseño +- [Guía sencilla para la investigación de la experiencia de usuario en la Web3](https://uxplanet.org/a-complete-guide-to-ux-research-for-web-3-0-products-d6bead20ebb1): guía sencilla sobre cómo investigar +- [Cómo abordar las decisiones de experiencia de usuario en Web3](https://archive.devcon.org/archive/watch/6/data-empathy-how-to-approach-ux-decisions-in-web3/): breve descripción de la investigación cuantitativa y cualitativa y las diferencias entre los dos (video, 6 min) +- [Ser investigador de UX en Web3](https://medium.com/@georgia.rakusen/what-its-like-being-a-user-researcher-in-web3-6a4bcc096849): visión personal de lo que es ser un investigador de experiencia de usuario en Web3 + +## Estudios de investigación en Web3 {#Research-in-web3} + +Esta es una lista curada de investigaciones de usuarios realizadas en Web3 que pueden ayudar con las decisiones de diseño y productos, o servir de inspiración para llevar a cabo su propio estudio. + +- [CRADL: Laboratorio de Investigación y Diseño Criptográfico](https://project-cradl.notion.site/Crypto-Research-and-Design-Lab-50a7127f34ed4c88ad95c7cedf7fbe36) +- [CRADL: experiencia de usuario en criptomonedas](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) +- [CRADL: introducción a las criptomonedas](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) +- [Encuesta de participación (staking): tendencias clave, conclusiones y predicciones; Eth Staker](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) +- [Encuesta: Estado de Defi 2023](https://stateofdefi.org/) +- [Encuesta de usabilidad y satisfacción del usuario - Ethereum.org](https://lookerstudio.google.com/reporting/0a189a7c-a890-40db-a5c6-009db52c81c9) +- [Estudio de usabilidad: pools de cobertura](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) +- [Estudio de usabilidad: Multi App Staking]() +- [Actualización de investigación de DAO 2022: ¿qué necesitan los constructores de DAO?](https://blog.aragon.org/2022-dao-research-update/) +- [ConSensys: informe de investigación de usuarios de DeFi 2022](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) +- [Informe de experiencia de usuario de Bitcoin](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) +- [Metaverso: informe de investigación de usuarios](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) +- [Going on Safari: investigación de usuarios en el metaverso](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube) (video, 27 min) + +## Diseño para Web3 {#Design-for-web3} + +- [Principios de diseño de Web3](https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1): marco de reglas de experiencia de usuario para dapps basadas en cadenas de bloques +- [Principios de diseño de cadena de bloques](https://medium.com/design-ibm/blockchain-design-principles-599c5c067b6e): lecciones aprendidas por el equipo de diseño de cadena de bloques de IBM +- [Dimensiones de la UX de Web3](https://uxdesign.cc/the-levels-of-web3-user-experience-4f2ad113e37d): análisis de las diferentes capas de la UX en Web3 y sus desafíos +- [Patrones de diseño en Web3](https://www.web3designpatterns.io/): biblioteca curada de patrones de diseño de productos web3 reales +- [W3design.io](https://w3design.io/): biblioteca curada de flujos de interfaz de usuario de diferentes proyectos en el ecosistema +- [Neueux.com](https://neueux.com/apps): biblioteca de interfaz de usuario de flujos de usuario con diversas opciones de filtrado + +## Estudios de casos de diseño de Web3 {#Design-case-studies} + +- [Cómo escribir mejores mensajes de error de Web3](https://medium.com/@JonCrabb/how-to-design-better-web3-error-messages-bd96e12fa582) +- [Consejos de diseño de Defi](https://medium.com/@JonCrabb/defi-design-tips-vol-12-8600f4374714) +- [Deep Work Studio](https://deepwork.studio/case-studies/) +- [Manual de UX cripto](https://www.cryptouxhandbook.com/) +- [Vender un NFT en OpenSea](https://builtformars.com/case-studies/opensea) +- [Wallet UX teardown how wallets need to change](https://www.youtube.com/watch?v=oTpuxYj8JWI&ab_channel=ETHDenver) (video, 20 minutos) + +## Bounties de diseño {#Bounties} + +- [Dework](https://app.dework.xyz/bounties) +- [Gitcoin](https://bounties.gitcoin.co/explorer) +- [Hackatons de Buildbox](https://gitcoin.co/hackathons) +- [ETHGlobal](https://ethglobal.com/) + +## DAO y comunidades de diseño {#Design-DAOs-and-communities} + +Involúcrese en organizaciones profesionales impulsadas por la comunidad o únase a grupos de diseño para discutir temas y tendencias relacionados con el diseño y la investigación con otros miembros. + +- [Vectordao.com](https://vectordao.com/) +- [Deepwork.studio](https://www.deepwork.studio/) +- [Designer-dao.xyz](https://www.designer-dao.xyz/) +- [We3.co](https://we3.co/) +- [Openux.xyz](https://openux.xyz/about) +- [web3trends.org](https://web3trends.org/) +- [Web3Design de código abierto](https://www.web3designers.org/) + +## Sistemas de diseño {#Design-systems} + +- [Optimism Design](https://www.figma.com/@oplabs) (Figma) +- [Sistema de diseño de Ethereum.org](https://www.figma.com/@ethdotorg) (Figma) +- [Finity, un sistema de diseño para Web3 de Polygon](https://finity.polygon.technology/) (Figma) +- [Sitema de diseño para ENS](https://thorin.ens.domains/) +- [Sistema de diseño para Mirror](https://degen-xyz.vercel.app/) + +**Los artículos y los proyectos enumerados en esta página no son endorsements o promociones oficiales**, y se proporcionan solo con fines informativos. Añadimos enlaces a esta página según los criterios de nuestra [política de listado](/contributing/design/adding-design-resources). Si desea que añadamos un proyecto/artículo, edite esta página en [GitHub](https://github.com/ethereum/ethereum-org-website/blob/dev/src/content/developers/docs/design-and-ux/index.md). diff --git a/src/content/translations/es/developers/docs/development-networks/index.md b/src/content/translations/es/developers/docs/development-networks/index.md index b0b1bb49aa0..f4fe97aa7f0 100644 --- a/src/content/translations/es/developers/docs/development-networks/index.md +++ b/src/content/translations/es/developers/docs/development-networks/index.md @@ -18,11 +18,11 @@ Las redes de desarrollo son esencialmente clientes de Ethereum (implementaciones **¿Por qué no basta con ejecutar localmente un nodo estándar de Ethereum?** -_Podrías_ [ejecutar un nodo](/developers/docs/nodes-and-clients/#running-your-own-node) (como Geth, OpenEthereum o Nethermind); sin embargo, ya que las redes de desarrollo están construidas específicamente para el desarrollo, estas suelen estar repletas de las siguientes características: +_Podría_ [ejecutar un nodo](/developers/docs/nodes-and-clients/#running-your-own-node), pero, dado a que las redes de desarrollo están diseñadas específicamente para el desarrollo, a menudo vienen repletas de funciones convenientes como: -- Siembran la blockchain local con datos (p. ej., cuentas con saldos en ETH). -- Minan instantáneamente bloques con cada transacción que reciben, en orden y sin retrasos. -- Disponen de funciones mejoradas de solución de errores y depuración +- Sembrar de forma determinista su cadena de bloques local con datos (p. ej., cuentas con saldos en ETH). +- Producir bloques al instante con cada transacción que recibe, en orden y sin demora +- Funcionalidad mejorada para depurar y registrar ## Herramientas disponibles {#available-projects} @@ -40,18 +40,44 @@ Ganache proporciona una aplicación de escritorio (Ganache UI) y una herramienta ### Red de tipo Hardhat {#hardhat-network} -Una red local de Ethereum diseñada para el desarrollo. Te permite implementar tus contratos, ejecutar tus pruebas y depurar tu código. +Una red local de Ethereum diseñada para el desarrollo. Le permite implementar sus contratos, ejecutar sus pruebas y depurar su código. La red de tipo Hardhat viene integrada con Hardhat, que es un entorno de desarrollo de Ethereum para profesionales. - [Sitio web.](https://hardhat.org/) - [GitHub](https://github.com/nomiclabs/hardhat) +### Cadenas de baliza locales {#local-beacon-chains} + +Algunos clientes de consenso tienen herramientas integradas para implementar cadenas de baliza locales con fines de prueba. Las instrucciones para Lighthouse, Nimbus y Lodestar están disponibles: + +- [Red de prueba local con Lodestar](https://chainsafe.github.io/lodestar/usage/local/) +- [Red de prueba local con Lighthouse](https://lighthouse-book.sigmaprime.io/setup.html#local-testnets) +- [Red de prueba local con Nimbus](https://github.com/status-im/nimbus-eth1/blob/master/fluffy/docs/local_testnet.md) + +### Cadenas de prueba públicas de Ethereum {#public-beacon-testchains} + +También hay dos implantaciones de prueba públicas mantenidas de Ethereum: Goerli y Sepolia. La red de prueba recomendada con soporte a largo plazo es Goerli, en la que cualquiera es libre de validar. Sepolia es una cadena más nueva y más pequeña que también se espera que se mantenga en el futuro próximo, con un conjunto de validadores autorizados (lo que significa que no hay acceso general a nuevos validadores en esta red de prueba). Se espera que la cadena Ropsten quede obsoleta en el cuarto trimestre de 2022 y que la cadena Rinkeby quede obsoleta en el segundo o tercer trimestre de 2023. + +- [Launchpad de staking de Goerli](https://goerli.launchpad.ethereum.org/) +- [Anuncio de baja de Ropsten, Rinkeby y Kiln](https://blog.ethereum.org/2022/06/21/testnet-deprecation) + +### Paquete de Ethereum de Kurtosis {#kurtosis} + +Kurtosis es un sistema de construcción para entornos de prueba de múltiples contenedores que permite a los desarrolladores levantar localmente instancias reproducibles de redes de cadena de bloques. + +El paquete de Kurtosis de Ethereum crea una instancia local de una red de prueba de Ethereum contenedorizada y parametrizable, con soporte para múltiples clientes diferentes de capa de ejecución (EL) y capa de consenso (CL) y un número n de nodos. Kurtosis maneja con elegancia todas las asignaciones de puertos locales y las conexiones de servicio para facilitar la creación de prototipos y pruebas de dApp y contratos inteligentes. + +- [Paquete de red Ethereum](https://github.com/kurtosis-tech/eth-network-package) +- [Sitio web](https://www.kurtosis.com/) +- [Github](https://github.com/kurtosis-tech/kurtosis) +- [Documentación](https://docs.kurtosis.com/) + ## Leer más {#further-reading} -_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ +_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._ ## Temas relacionados {#related-topics} -- [Frameworks de desarrollo](/developers/docs/frameworks/) -- [Configura tu entorno de desarrollo local.](/developers/local-environment/) +- [Entornos de desarrollo](/developers/docs/frameworks/) +- [Configurar un entorno de desarrollo local](/developers/local-environment/) diff --git a/src/content/translations/es/developers/docs/ethereum-stack/index.md b/src/content/translations/es/developers/docs/ethereum-stack/index.md index bea1cc2c301..cbb19c6bbd0 100644 --- a/src/content/translations/es/developers/docs/ethereum-stack/index.md +++ b/src/content/translations/es/developers/docs/ethereum-stack/index.md @@ -4,17 +4,17 @@ description: Un tutorial de las diferentes capas de la pila de Ethereum y acerca lang: es --- -Como cualquier paquete de software, la "pila de Ethereum" completa variará de un proyecto a otro, en función de tus objetivos de negocio. +Como sucede con cualquier pila de software, la "pila de Ethereum" variará de un proyecto a otro dependiendo de sus objetivos. Sin embargo, existen tecnologías base de Ethereum que te ayudarán a hacerte una idea de cómo interactúan las apps de software con la blockchain de Ethereum. Comprender cómo funcionan las capas de la pila te ayudará a entender las diferentes maneras de integrar Ethereum en los proyectos de software. ## Nivel 1: Máquina virtual de Ethereum {#ethereum-virtual-machine} -La [máquina virtual de Ethereum (EVM, por sus siglas en inglés)](/developers/docs/evm/) es el entorno de ejecución de los contratos inteligentes en Ethereum. Todos los contratos inteligentes y los cambios de estado de la blockchain de Ethereum se ejecutan mediante las [transacciones](/developers/docs/transactions/). La EVM gestiona todo el procesamiento de las transacciones en la red de Ethereum. +La [máquina virtual de Ethereum (EVM)](/developers/docs/evm/) es el entorno de ejecución de los contratos inteligentes en Ethereum. Todos los contratos inteligentes y los cambios de estado de la blockchain de Ethereum se ejecutan mediante las [transacciones](/developers/docs/transactions/). La EVM gestiona todo el procesamiento de las transacciones en la red de Ethereum. Como sucede con cualquier máquina virtual, la EVM crea una nivel de abstracción entre el código de ejecución y la máquina de ejecución (un nodo de Ethereum). Actualmente la EVM está ejecutándose en cientos de nodos distribuidos por todo el mundo. -De manera invisible, la EVM utiliza un conjunto de instrucciones de códigos de operación para ejecutar tareas específicas. Estos códigos de operación (140 únicos) permiten a la EVM ser un Turing completo, lo que significa que, si dispone de los recursos suficientes, la EVM es capaz de ejecutar casi cualquier cosa. +De manera invisible, la EVM utiliza un conjunto de instrucciones de códigos de operación para ejecutar tareas específicas. Estos (140 únicos) opcodes permiten que la EVM sea [Turing-complete](https://en.wikipedia.org/wiki/Turing_completeness), lo que significa que la EVM es capaz de computar o calcular casi cualquier cosa si cuenta con suficientes recursos. Como desarrollador de dapps, no necesitas saber mucho de la EVM aparte de la que existe y de que potencia de forma fiable todas las aplicaciones en Ethereum sin tiempos de inactividad. @@ -24,19 +24,19 @@ Los [contratos inteligentes](/developers/docs/smart-contracts/) son programas ej Los contratos inteligentes están escritos con [lenguajes de programación](/developers/docs/smart-contracts/languages/) específicos, que se compilan en bytecodes de la EVM (instrucciones de máquina de bajo nivel llamados códigos de operación). -Los contratos inteligentes no solo sirven como bibliotecas de código abierto, esencialmente son servicios de API abierta que funcionan ininterrumpidamente y no se pueden dar de baja. Los contratos inteligentes proporcionan funciones públicas con las que las aplicaciones ([dapps](/developers/docs/dapps/)) pueden interactuar sin tener que disponer de permisos. Cualquier aplicación puede integrarse con contratos inteligentes implementados para componer su funcionalidad (como las fuentes de datos o los intercambios descentralizados). Cualquier persona puede implementar nuevos contratos en Ethereum con el propósito de agregar funciones personalizadas para satisfacer las necesidades de sus aplicaciones. +Los contratos inteligentes no solo sirven como bibliotecas de código abierto, esencialmente son servicios de API abierta que funcionan ininterrumpidamente y no se pueden dar de baja. Los contratos inteligentes proveen funciones públicas con las que los usuarios y aplicaciones ([dapps](/developers/docs/dapps/)) pueden interactuar entre ellos, sin necesidad de permiso. Cualquier aplicación puede integrarse con contratos inteligentes implementados para componer funcionalidades, como agregar [feeds de datos](/developers/docs/oracles/) o para admitir swaps de tokens. Cualquier persona puede implementar nuevos contratos en Ethereum con el propósito de agregar funciones personalizadas para satisfacer las necesidades de sus aplicaciones. Como desarrollador de dapps, deberás escribir contratos inteligentes solo si deseas agregar una funcionalidad personalizada a la blockchain de Ethereum. Quizá pienses que puedes satisfacer la mayoría de las necesidades de tu proyecto integrándolo con contratos inteligentes existentes, por ejemplo, si deseas ofrecer compatibilidad para los pagos con stablecoins o activar el intercambio descentralizado de tokens. ## Nivel 3: Nodos de Ethereum {#ethereum-nodes} -Para que una aplicación interactúe con la blockchain de Ethereum (es decir, lea los datos de la blockchain o envíe transacciones a la red), debe conectarse a un [nodo de Ethereum](/developers/docs/nodes-and-clients/). +Para que una apliación interactúe con la cadena de bloques de Ethereum, debe estar conectada a un [nodo de Ethereum](/developers/docs/nodes-and-clients/). Conectarse a un nodo le permite leer datos de la cadena de bloques y/o enviar transacciones a la red. -Los nodos de Ethereum son ordenadores que ejecutan un software: un cliente de Ethereum. Un cliente es una implementación de Ethereum que verifica todas las transacciones en cada bloque, lo que mantiene la seguridad de la red y la precisión de los datos. Los nodos de Ethereum SON la blockchain de Ethereum. Almacenan colectivamente el estado de la blockchain de Ethereum y llegan a un consenso sobre transacciones para transformar el estado de la blockchain. +Los nodos de Ethereum son ordenadores que ejecutan un software: un cliente de Ethereum. Un cliente es una implementación de Ethereum que verifica todas las transacciones en cada bloque, lo que mantiene la seguridad de la red y la precisión de los datos. **Los nodos de Ethereum son la cadena de bloques de Ethereum**. Almacenan colectivamente el estado de la blockchain de Ethereum y llegan a un consenso sobre transacciones para transformar el estado de la blockchain. -Al conectar tu aplicación a un nodo de Ethereum (mediante la especificación JSON RPC), tu aplicación es capaz de leer datos desde la blockchain (como saldos de cuenta de usuario), así como de transmitir nuevas transacciones a la red (como transferir ETH entre cuentas de usuarios o ejecutar funciones de contratos inteligentes). +Al conectar su aplicación a un nodo de Ethereum (a través de la [JSON-RPC API](/developers/docs/apis/json-rpc/)), su aplicación puede leer datos de la cadena de bloques (como los saldos de las cuentas de usuario), así como transmitir nuevas transacciones a la red (como transferir ETH entre cuentas de usuario o ejecutar funciones de contratos inteligentes). -## Nivel 4: API de cliente de Ethereum {#ethereum-client-apis} +## Nivel 4: API de clientes de Ethereum {#ethereum-client-apis} Muchas bibliotecas de conveniencia (construidas y mantenidas por la comunidad de código abierto de Ethereum) permiten a tus aplicaciones de usuario final conectarse y comunicarse con la blockchain de Ethereum. @@ -56,4 +56,6 @@ Revisa nuestra guía para [configurar un entorno de desarrollo local](/developer ## Más información {#further-reading} +- [La arquitectura de una aplicación Web 3.0](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_ + _¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ diff --git a/src/content/translations/es/developers/docs/frameworks/index.md b/src/content/translations/es/developers/docs/frameworks/index.md index afde62fa4a3..06b7535366d 100644 --- a/src/content/translations/es/developers/docs/frameworks/index.md +++ b/src/content/translations/es/developers/docs/frameworks/index.md @@ -18,7 +18,7 @@ Los frameworks incluyen muchas funcionalidades listas para usar: ## Requisitos previos {#prerequisites} -Antes de sumergirte en los frameworks, te recomendamos que leas nuestra introducción a las [dapps](/developers/docs/dapps/) y a la [pila de Ethereum](/developers/docs/ethereum-stack/). +Antes de profundizar en los marcos o frameworks, le recomendamos que lea nuestra introducción a las [dapps](/developers/docs/dapps/) y a la [pila de Ethereum](/developers/docs/ethereum-stack/). ## Frameworks disponibles {#available-frameworks} @@ -27,51 +27,84 @@ Antes de sumergirte en los frameworks, te recomendamos que leas nuestra introduc - [trufflesuite.com](https://www.trufflesuite.com/) - [GitHub](https://github.com/trufflesuite/truffle) -**Epirus:** **_ es Una plataforma de desarrollo, implementación y supervisión de las aplicaciones de la blockchain en la máquina virtual de Java (JVM, por sus siglas en inglés)_** - -- [Página de inicio](https://www.web3labs.com/epirus) -- [Documentación](https://docs.epirus.io) -- [GitHub](https://github.com/epirus-io/epirus-cli) - -**Hardhat:** **_El entorno de desarrollo de Ethereum para profesionales_**. +**Alchemy:** **_Plataforma de desarrollo de Ethereum._** - [hardhat.org](https://hardhat.org) - [GitHub](https://github.com/nomiclabs/hardhat) -**OpenZeppelin SDK:** **_El kit definitivo de herramientas para contratos inteligentes; una serie de herramientas para ayudarte a desarrollar, compilar, actualizar, implementar e interactuar con contratos inteligentes._** +**Ape:** **_La herramienta de desarrollo de contratos inteligentes para pythonistas, científicos de datos y profesionales de seguridad._** -- [SDK de OpenZeppelin](https://openzeppelin.com/sdk/) -- [GitHub](https://github.com/OpenZeppelin/openzeppelin-sdk) -- [Foro de la comunidad](https://forum.openzeppelin.com/c/support/17) +- [Documentación](https://docs.apeworx.io/ape/stable/) +- [GitHub](https://github.com/ApeWorX/ape) -**Brownie:** **_Un entorno de desarrollo basado en Python y un framework de pruebas._** +**Brownie: \*\***_Un entorno de desarrollo y framework de pruebas basado en Python._\*\* - [Documentación](https://eth-brownie.readthedocs.io/en/latest/) - [GitHub](https://github.com/eth-brownie/brownie) -**Create Eth App:** **_ Creación de aplicaciones basadas en Ethereum mediante un comando. Incluyen una amplia oferta de frameworks de UI y plantillas DeFi para elegir._** +**Web3j:** **_Plataforma para desarrollar aplicaciones de la cadena de bloques en JVM._** + +- [Página de inicio](https://www.web3labs.com/web3j-sdk) +- [Documentación](https://docs.web3j.io) +- [GitHub](https://github.com/web3j/web3j) + +**OpenZeppelin SDK: \*\***_El kit definitivo de herramientas para contratos inteligentes; una serie de herramientas que lo ayuda a desarrollar, compilar, actualizar, implementar e interactuar con contratos inteligentes._\*\* + +- [SDK de OpenZeppelin](https://openzeppelin.com/sdk/) +- [GitHub](https://github.com/OpenZeppelin/openzeppelin-sdk) +- [Foro de la comunidad](https://forum.openzeppelin.com/c/support/17) + +**Cree una app de Eth:** **_Cree aplicaciones basadas en Ethereum con un comando. Incluye una amplia oferta de marcos de UI y plantillas DeFi para elegir._** - [GitHub](https://github.com/paulrberg/create-eth-app) - [Plantillas](https://github.com/PaulRBerg/create-eth-app/tree/develop/templates) -**scaffold-eth -** **_Hardhat + Create Eth App: Todo lo necesario para iniciar la construcción de aplicaciones descentralizadas y basadas en contratos inteligentes_**. +**Scaffold-Eth:** **_Componentes y hooks para web3 de Ethers.js + Hardhat + React; todo lo que necesita para comenzar a crear aplicaciones descentralizadas impulsadas por contratos inteligentes._** - [GitHub](https://github.com/austintgriffith/scaffold-eth) -**The Graph:** **_El gráfico para realizar consultas sobre datos de la blockchain de manera eficiente_**. +**Tenderly:** **_Plataforma de desarrollo web3 que permite a los desarrolladores de cadena de bloques crear, probar, depurar, monitorear y operar contratos inteligentes y mejorar la experiencia de usuario de dapps._** + +- [Sitio web](https://tenderly.co/) +- [Documentación](https://docs.tenderly.co/ethereum-development-practices) + +**The Graph:** **_The Graph para consultar datos de la cadena de bloques de manera eficiente._** - [Sitio web](https://thegraph.com/) - [Tutorial](/developers/tutorials/the-graph-fixing-web3-data-querying/) -**Alchemy -** **_Plataforma de Desarrollo de Ethereum._** +**Alchemy:** **_Plataforma de desarrollo de Ethereum._** -- [alchemyapi.io](https://alchemyapi.io/) +- [alchemy.com](https://www.alchemy.com/) - [GitHub](https://github.com/alchemyplatform) -- [Discord](https://discord.gg/kwqVnrA) +- [Discord](https://discord.com/invite/A39JVCM) + +**Foundry:** **_Kit de herramientas rápido, portátil y modular para el desarrollo de aplicaciones de Ethereum escritas en Rust._** + +- [Documentación](https://book.getfoundry.sh/) +- [GitHub](https://github.com/gakonst/foundry/) +- [Herramientas para Foundry](https://github.com/crisgarner/awesome-foundry) + +**QuikNode:** **_Plataforma de desarrollo de Ethereum._** + +- [Nodereal.io](https://nodereal.io/) +- [GitHub](https://github.com/node-real) +- [Discord](https://discord.gg/V5k5gsuE) + +**thirdweb SDK:** **_Cree aplicaciones web3 que pueden interactuar con sus contratos inteligentes usando nuestros potentes SDK y CLI._** + +- [Documentación](https://portal.thirdweb.com/sdk/) +- [GitHub](https://github.com/thirdweb-dev/) + +**Chainstack:** **_Plataforma de desarrollo web3 (Ethereum y otros)._** + +- [chainstack.com](https://www.chainstack.com/) +- [GitHub](https://github.com/chainstack) +- [Discord](https://discord.gg/BSb5zfp9AT) ## Leer más {#further-reading} -_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ +_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._ ## Temas relacionados {#related-topics} diff --git a/src/content/translations/es/developers/docs/ides/index.md b/src/content/translations/es/developers/docs/ides/index.md index 4e57a2c8c3f..7d7de0cb5dd 100644 --- a/src/content/translations/es/developers/docs/ides/index.md +++ b/src/content/translations/es/developers/docs/ides/index.md @@ -4,38 +4,68 @@ description: lang: es --- -Cuando se trata de configurar un [entorno de desarrollo integrado (IDE)](https://wikipedia.org/wiki/Integrated_development_environment), la implantación con Ethereum es similar a con cualquier otro proyecto de software. Como hay muchas opciones para elegir, te recomendamos que selecciones la que mejor se adapte a tus preferencias. +Cuando se trata de configurar un [ IDE (Entorno de Desarrollo Integrado)](https://wikipedia.org/wiki/Integrated_development_environment), programar aplicaciones en Ethereum es similar a programar cualquier otro proyecto de software. Hay muchas opciones para elegir, por eso, al final del día, elija el IDE o editor de código que mejor se ajuste a sus preferencias. Probablemente la mejor opción de IDE para su desarrollo de Ethereum es el IDE que ya usa para el desarrollo tradicional de software. -## IDE basados en web {#web-based-ides} +## IDE basados en la Web {#web-based-ides} Si te planteas jugar un poco con el código antes de [configurar un entorno de desarrollo local](/developers/local-environment/), estas aplicaciones web están diseñadas a medida para el desarrollo de contratos inteligentes de Ethereum. -**Remix:** **_IDE basado en web con análisis estático integrado, y una máquina virtual para pruebas de blockchain._** +**[Remix:](https://remix.ethereum.org/)** **_IDE basado en la Web con análisis estático integrado y una máquina virtual de prueba de cadena de bloques_** -- [remix.ethereum.org](https://remix.ethereum.org/) +- [Documentos](https://remix-ide.readthedocs.io/en/latest/#) +- [Gitter](https://gitter.im/ethereum/remix) -**EthFiddle:** **_IDE basado en web, que permite escribir, compilar y depurar contratos inteligentes_**. +**[CadenaIDE:](https://chainide.com/)** **_Un IDE multicadena basado en la nube_** + +- [Documentos](https://chainide.gitbook.io/chainide-english-1/) +- [Foro de ayuda](https://forum.chainide.com/) + +**[Replit (Solidity Starter - Beta):](https://replit.com/@replit/Solidity-starter-beta)** **_Entorno de desarrollo personalizable para Ethereum con recarga en caliente, verificación de errores y soporte de priemra clase para redes de prueba _** + +- [Documentos](https://docs.replit.com/) + +**[Tenderly Sandbox:](https://sandbox.tenderly.co/)** **_Un entorno de creación rápida de prototipos donde puede escribir, ejecutar y depurar contratos inteligentes en el navegador usando Solidity y JavaScript_** + +**[EthFiddle:](https://ethfiddle.com/)** **_IDE basado en la Web que le permite escribir, compilar y depurar su contrato inteligente_** -- [ethfiddle.com](https://ethfiddle.com/) - [Gitter](https://gitter.im/loomnetwork/ethfiddle) ## IDEs de escritorio {#desktop-ides} -La mayoría de los IDE establecidos disponen de plugins integrados para mejorar la experiencia de desarrollo de Ethereum. Como mínimo, proporcionan sintaxis resaltadas para [lenguajes de contratos inteligentes](/developers/docs/smart-contracts/languages/). +La mayoría de los IDE establecidos han desarrollado complementos para mejorar la experiencia de desarrollo de Ethereum. Como mínimo, proporcionan resaltado de sintaxis para [lenguajes de contratos inteligentes](/developers/docs/smart-contracts/languages/). -**Visual Studio Code:** **_IDE multiplataforma profesional con compatibilidad oficial con Ethereum._** +**Visual Studio Code:** **_IDE multiplataforma profesional con soporte oficial de Ethereum_ ** -- [Código de Visual Studio](https://code.visualstudio.com/) +- [Visual Studio Code](https://code.visualstudio.com/) - [Azure Blockchain Workbench](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/microsoft-azure-blockchain.azure-blockchain-workbench?tab=Overview) - [Muestras de código](https://github.com/Azure-Samples/blockchain/blob/master/blockchain-workbench/application-and-smart-contract-samples/readme.md) - [GitHub](https://github.com/microsoft/vscode) -**Atom** **_: Un editor de texto hackeable para el siglo XXI_**. +**Atom\*\***_: Un editor de texto hackeable para el siglo XXI_\*\* - [Atom](https://atom.io/) - [GitHub](https://github.com/atom) - [Paquetes de Ethereum](https://atom.io/packages/search?utf8=%E2%9C%93&q=keyword%3Aethereum&commit=Search) -## Más lectura {#further-reading} +**IDE JetBrains (IntelliJ IDEA, etc.) ** **_Herramientas esenciales para desarrolladores y equipos de software_** + +- [JetBrains](https://www.jetbrains.com/) +- [GitHub](https://github.com/JetBrains) +- [IntelliJ Solidity](https://github.com/intellij-solidity/intellij-solidity/) + +**Remix Desktop:** **_Experimente IDE de Remix en su máquina local_** + +- [Descargar](https://github.com/ethereum/remix-desktop/releases) +- [GitHub](https://github.com/ethereum/remix-desktop) + +## Complementos y extensiones {#plugins-extensions} + +- [solidity:](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) Lenguaje Solidity de Ethereum para Visual Studio Code +- [Solidity + Hardhat para VS Code:](https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity) Soporte para Solidity y Hardhat por el equipo de Hardhat +- [Prettier Solidity:](https://github.com/prettier-solidity/prettier-plugin-solidity) Formateador de código con Prettier + +## Más información {#further-reading} + +- [IDE de Ethereum:](https://www.alchemy.com/list-of/web3-ides-on-ethereum)_ Lista de Alchemy de IDE de Ethereum_ -_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ +_¿Conoce algún recurso en la comunidad que le ayudara? ¡Edite esta página y añádala!_ diff --git a/src/content/translations/es/developers/docs/mev/index.md b/src/content/translations/es/developers/docs/mev/index.md index 6d237975e77..e2ef170f80d 100644 --- a/src/content/translations/es/developers/docs/mev/index.md +++ b/src/content/translations/es/developers/docs/mev/index.md @@ -6,21 +6,21 @@ lang: es El valor máximo extraíble (MEV) se refiere al valor máximo que se puede extraer de la producción de bloques por encima de la recompensa de bloques y las tarifas de gas estándares incluyendo, excluyendo y cambiando el orden de las transacciones en un bloque. -### Valor extraíble del minero +### Valor extraíble del minero {#miner-extractable-value} -Este concepto se aplicó por primera vez en el contexto de [prueba de trabajo](/developers/docs/consensus-mechanisms/pow/) e inicialmente se denominaba "valor extraíble del minero". Esto es porque en la prueba de trabajo, los mineros controlan la inclusión, la exclusión y el orden de las transacciones. Sin embargo, después del paso a la prueba de participación mediante [La fusión](/roadmap/merge), los validadores serán responsables de estas funciones y ya no se aplicará el minado. Los métodos de extracción de valor aquí presentes seguirán estando después de esta transición, y por lo tanto se necesitaba un cambio de nombre. Para mantener el mismo acrónimo para la continuidad manteniendo el mismo significado fundamental, el "valor extraíble máximo" ahora se usa como un reemplazo más inclusivo. +El valor máximo extraíble se aplicó por primera vez en el contexto de [prueba de trabajo](/developers/docs/consensus-mechanisms/pow/), e inicialmente se refería a él como "valor extraíble de minero". Esto es porque en la prueba de trabajo, los mineros controlan la inclusión, la exclusión y el orden de las transacciones. No obstante, desde la transición a la prueba de participación a través de [La Fusión](/roadmap/merge), los validadores han sido responsables de estas funciones, y la minería ya no forma parte del protocolo Ethereum. Como los métodos de extracción de valor todavía existen, se utiliza en su lugar el término "valor máximo extraíble" actualmente. -## Pre requisitos {#prerequisites} +## Requisitos previos {#prerequisites} -Asegúrese de estar familiarizado con las [transacciones](/developers/docs/transactions/), los [bloques](/developers/docs/blocks/), el [gas](/developers/docs/gas/) y el [minado](/developers/docs/consensus-mechanisms/pow/mining/). Familiarizarse con las [dApps](/dapps/) y [DeFi](/defi/) también le será muy útil. +Asegúrese de estar familiarizado con las [transacciones](/developers/docs/transactions/), los [bloques](/developers/docs/blocks/), la [prueba de participación](/developers/docs/consensus-mechanisms/pos) y el [gas](/developers/docs/gas/). Familiarizarse con las [dApps](/dapps/) y [DeFi](/defi/) también le será muy útil. ## Extracción de MEV {#mev-extraction} -En teoría, el MEV recae totalmente en los mineros debido a que los mineros son la única parte que puede garantizar la ejecución de una oportunidad de MEV rentable (al menos en la cadena de prueba de trabajo actual; esto cambiará luego de [La fusión](/roadmap/merge/)). De cualquier manera, en la práctica, una gran porción del MEV es extraído por participantes de la red independientes conocidos como "buscadores". Los buscadores ejecutan algoritmos complejos en datos de la cadena de bloques para detectar oportunidades rentables de MEV y tienen bots que en automático envían esas transacciones rentables a la red. +En teoría, el MEV se acumula por completo en los validadores porque son la única parte que puede garantizar la ejecución de una oportunidad rentable de MEV. De cualquier manera, en la práctica, una gran porción del MEV es extraído por participantes de la red independientes conocidos como "buscadores". Los buscadores ejecutan algoritmos complejos en datos de la cadena de bloques para detectar oportunidades rentables de MEV y tienen bots que en automático envían esas transacciones rentables a la red. -Los mineros obtienen una porción del MEV total de cualquier forma, ya que los buscadores están dispuestos a pagar altas tarifas de gas (que van al minero) a cambio de una mayor probabilidad de inclusión de sus transacciones rentables en un bloque. Asumiendo que los buscadores son económicamente racionales, la tarifa de gas que estarán dispuestos a pagar será de un monto hasta un 100% del MEV del buscador ( porque si la tarifa de gas fuera más alta, el buscador estaría perdiendo dinero). +Los validadores obtienen una parte de la cantidad total de MEV de todos modos porque los buscadores están dispuestos a pagar altas tarifas de gas (que van al validador) a cambio de una mayor probabilidad de incluir sus transacciones rentables en un bloque. Asumiendo que los buscadores son económicamente racionales, la tarifa de gas que estarán dispuestos a pagar será de un monto hasta un 100% del MEV del buscador ( porque si la tarifa de gas fuera más alta, el buscador estaría perdiendo dinero). -Así, en algunas oportunidades de MEV altamente competitivas, como el [arbitraje en DEX](#mev-examples-dex-arbitrage), los buscadores podría llegar a pagar un 90% o incluso más de los ingresos totales en MEV en tarifas de gas al minero, pues mucha gente quiere ejecutar la misma transacción de arbitraje rentable. Esto es porque la única manera de garantizar que esas transacciones de arbitraje se ejecuten es que envíen la transacción con el precio de gas más alto. +Con eso, para algunas oportunidades de MEV altamente competitivas, como [arbitraje de DEX](#mev-examples-dex-arbitrage), los buscadores pueden tener que pagar el 90% o incluso más de sus ingresos totales de MEV en tarifas de gas al validador porque muchas personas quieren ejecutar la misma transacción de arbitraje rentable. Esto es porque la única manera de garantizar que esas transacciones de arbitraje se ejecuten es que envíen la transacción con el precio de gas más alto. ### Gas golfing {#mev-extraction-gas-golfing} @@ -34,9 +34,7 @@ En vez de programar algoritmos complejos capaces de detectar oportunidades de ME ### Flashbots {#mev-extraction-flashbots} -Flashbots es un proyecto independiente que extiende el cliente go-ethereum con un servicio que permite a los buscadores enviar transacciones MEV a mineros sin revelarlas a la zona de espera pública. Esto evita el frontrunning por parte de los frontrunners generalizados. - -Al momento de escribir este artículo, una parte significativa de las transacciones de MEV se enrutan mediante Flashbots, lo que significa que los frontrunners generalizados no son tan efectivos como lo solían ser. +Flashbots es un proyecto independiente que amplía los clientes de ejecución con un servicio que permite a los buscadores enviar transacciones de MEV a los validadores sin revelarlas a la zona de espera o mempool pública. Esto evita el frontrunning por parte de los frontrunners generalizados. ## Ejemplos de MEV {#mev-examples} @@ -52,9 +50,11 @@ Funciona así: si dos DEX ofrecen el mismo token a diferentes precios, alguien p ### Liquidaciones {#mev-examples-liquidations} -Las liquidaciones de protocolo de préstamo presentan otra muy conocida oportunidad de MEV. +Las liquidaciones del protocolo de préstamos presentan otra muy conocida oportunidad de MEV. + +Los protocolos de préstamo como Maker y Aave requieren que los usuarios depositen alguna garantía o colateral (por ejemplo, ETH). Este colateral depositado se utiliza para luego hacer un préstamo a otros usuarios. -Los protocolos de préstamo como Maker y Aavve funcionan requiriendo a los usuarios que depositen algún tipo de colateral (por ejemplo, ETH). Los usuarios pueden pedir prestados diferentes activos y tokens de otras personas dependiendo de lo que necesiten (por ejemplo, pueden pedir prestado MKR si quieren votar sobre una propuesta de gobernanza de MakerDAO o SUSHI si quieren ganar una porción de las comisiones de transacción en Sushiswap) hasta una cierta cantidad de su colateral depositado, por ejemplo, un 30% (el porcentaje de poder de préstamo exacto está determinado por el protocolo). Los usuarios a los que piden prestados los otros tokens funcionan como prestamistas en este caso. +Los usuarios pueden pedir prestados activos y tokens de otros dependiendo de lo que necesiten (por ejemplo, puede pedir prestado MKR si desea votar en una propuesta de gobernanza de MakerDAO) hasta un cierto porcentaje de la garantía depositada. Por ejemplo, si la cantidad del préstamo es de un máximo del 30%, un usuario que deposite 100 DAI en el protocolo puede pedir prestado por un valor de hasta 30 DAI de otro activo. El protocolo determina el porcentaje exacto de poder de endeudamiento, o préstamo. Como el valor del colateral de quien pide el préstamo fluctúa, también lo hace su poder de préstamo. Si, debido a las fluctuaciones del mercado, el valor de los activos prestados excede, digamos, el 30% del valor de su colateral (nuevamente, el porcentaje exacto está determinado por el protocolo), el protocolo típicamente permite a cualquiera liquidar el colateral, pagando al instante a los prestamistas (esto es similar al funcionamiento de las [llamadas de margen](https://www.investopedia.com/terms/m/margincall.asp) en las finanzas tradicionales). Si se liquida el colateral, el prestatario generalmente tiene que pagar una tasa de liquidación importante, parte de la cual va al liquidador, que es donde entra en juego la oportunidad de MEV. @@ -102,7 +102,7 @@ En la capa de aplicación, algunas formas de MEV, como las transacciones sándwi En la capa de red, los frontrunners generalizados y las subastas de precio de gas en las que suelen participar (cuando dos o más frontrunners compiten para que su transacción se incluya en el siguiente bloque aumentando progresivamente el precio del gas de sus transacciones) dan como resultado congestión de la red y altos precios del gas para todos los demás que intentan realizar transacciones regulares. -Más allá de lo que suceda _dentro de_ los bloques, el MEV puede tener efectos perjudiciales _entre_ los bloques. Si el MEV disponible en un bloque excede significativamente la recompensa de bloque estándar, los mineros querer reminar bloques y capturar el MEV para ellos, causando la reorganización de la cadena de bloques y la inestabilidad del consenso. +Más allá de lo que suceda _dentro de_ los bloques, el MEV puede tener efectos perjudiciales _entre_ los bloques. Si el MEV disponible en un bloque excede significativamente la recompensa de bloque estándar, se puede incentivar a los validadores a reorganzar los bloques y capturar el MEV para ellos mismos, causando la reorganización de la cadena de bloques y la inestabilidad del consenso. Esta posibilidad de reorganización de la cadena de bloques se ha [explorado previamente en la cadena de bloques de Bitcoin](https://dl.acm.org/doi/10.1145/2976749.2978408). A medida que la recompensa de bloque de Bitcoin se reduce a la mitad y las comisiones de transacción componen una porción cada vez más grande de la recompensa de bloque, surgen situaciones en las que se vuelve económicamente racional que los mineros renuncien a la recompensa del siguiente bloque y en su lugar reminen bloques pasados con tarifas más altas. Con el crecimiento del MEV, podría ocurrir el mismo tipo de situación en Ethereum, lo que amenaza la integridad de la cadena de bloques. @@ -110,20 +110,112 @@ Esta posibilidad de reorganización de la cadena de bloques se ha [explorado pre La extracción del MEV se disparó a principios de 2021, lo que dio lugar a precios extremadamente altos del gas en los primeros meses del año. El surgimiento del relay de MEV de Flashbots ha reducido la efectividad de los frontrunners generalizados y ha quitado de la cadena las subastas de gas, lo que resultó en la baja de precios del gas para los usuarios corrientes. -Si bien muchos buscadores todavía están ganando mucho dinero con el MEV, a medida que las oportunidades se vuelvan más conocidas y cada vez más buscadores compitan por la misma oportunidad, los mineros captarán cada vez más ingresos de MEV totales (porque el mismo tipo de subastas de gas que se describió originalmente también ocurre en Flashbots, aunque de forma privada, y los mineros captarán los ingresos resultantes del gas). El MEV además no es exclusivo de Ethereum, y a medida que las oportunidades se vuelven más competitivas en Ethereum, los buscadores se están pasando a cadenas de bloques alternativas como Binance Smart Chain, donde existen oportunidades de MEV similares a las de Ethereum con menos competencia. +Si bien muchos buscadores todavía están ganando buen dinero con el MEV, a medida que las oportunidades se vuelven más conocidas y más y más buscadores compiten por la misma oportunidad, los validadores capturarán más y más ingresos totales de MEV (porque el mismo tipo de subastas de gas que se describió originalmente anteriormente también ocurren en Flashbots, aunque de forma privada, y los validadores capturarán el ingreso resultante del gas). El MEV además no es exclusivo de Ethereum, y a medida que las oportunidades se vuelven más competitivas en Ethereum, los buscadores se están pasando a cadenas de bloques alternativas como Binance Smart Chain, donde existen oportunidades de MEV similares a las de Ethereum con menos competencia. + +Por otro lado, la transición de prueba de trabajo a prueba de participación y el esfuerzo continuo para escalar Ethereum utilizando rollups cambian el panorama de MEV de maneras que todavía no están claras. Todavía no es bien sabido cómo tener proponentes de bloques garantizados conocidos ligeramente de antemano cambia la dinámica de extracción de MEV en comparación con el modelo probabilístico en la prueba de trabajo o cómo esto se alterará cuando se implementen la [elección de líder secreto único](https://ethresear.ch/t/secret-non-single-leader-election/11789) y [tecnología de validador distribuido](/staking/dvt/). Del mismo modo, queda por ver qué oportunidades de MEV existen cuando la mayor parte de la actividad de los usuarios se aleje de Ethereum y se lleve a sus rollups y shards de capa 2. + +## MEV en la prueba de participación (PoS) de Ethereum {#mev-in-ethereum-proof-of-stake} + +Como se explicó, el MEV tiene implicaciones negativas para la experiencia general del usuario y la seguridad de la capa de consenso. Pero la transición de Ethereum a un consenso de prueba de participación (apodado "La Fusión") potencialmente introduce nuevos riesgos relacionados con el MEV: + +### Centralización de validadores {#validator-centralization} + +En Ethereum posterior a la Fusión, los validadores (habiendo hecho depósitos de seguridad de 32 ETH) llegan a un consenso sobre la validez de los bloques añadidos a la cadena de Baliza. Dado que 32 ETH pueden estar fuera del alcance de muchos, [unirse a un grupo de staking o participación](/staking/pools/) puede ser una opción más factible. No obstante, una distribución saludable de [participantes en solitario](/staking/solo/) es ideal, ya que mitiga la centralización de los validadores y mejora la seguridad de Ethereum. + +Sin embargo, se cree que la extracción de MEV es capaz de acelerar la centralización de los validadores. Esto se debe en parte a que, como los validadores [ganan menos por proponer bloques](/roadmap/merge/issuance/#how-the-merge-impacts-ETH-supply) que los mineros actualmente, la extracción de MEV puede [influir en gran medida en las ganancias de los validadores](https://github.com/flashbots/eth2-research/blob/main/notebooks/mev-in-eth2/eth2-mev-calc.ipynb) después de La Fusión. + +Es probable que los grupos de participación más grandes tengan más recursos para invertir en las optimizaciones necesarias para capturar oportunidades de MEV. Cuanto más MEV extraen estos grupos, más recursos tienen para mejorar sus capacidades de extracción de MEV (y aumentar los ingresos generales), esencialmente creando [economías de escala](https://www.investopedia.com/terms/e/economiesofscale.asp#). + +Con menos recursos a su disposición, los participantes en solitario pueden no poder beneficiarse de las oportunidades de MEV. Esto puede aumentar la presión sobre los validadores independientes para que se unan a poderosos grupos de participación para aumentar sus ganancias, reduciendo la descentralización en Ethereum. + +### Zonas de espera (mempools) con permisos {#permissioned-mempools} + +En respuesta a los ataques de sandwiching y frontrunning, los operadores podrían comenzar a realizar acuerdos fuera de la cadena con validadores para la privacidad de las transacciones. En lugar de enviar una posible transacción de MEV a la zona de espera o mempool pública, el trader la envía directamente al validador, que la incluye en un bloque y divide las ganancias con el trader. + +Los "pools o grupos oscuros" son una versión más grande de este arreglo y funcionan como zonas de espera con permiso y de solo acceso abiertas a los usuarios dispuestos a pagar ciertas tarifas. Esta tendencia disminuiría la falta de permisos y la no necesidad de confianza de Ethereum, y potencialmente transformaría la cadena de bloques en un mecanismo de "pago para jugar" que favorezca al mejor postor. + +Las zonas de espera con permisos también acelerarían los riesgos de centralización descritos en la sección anterior. Los grandes grupos que ejecutan múltiples validadores probablemente se beneficiarán de ofrecer privacidad de transacciones a los traders y los usuarios, aumentando sus ingresos de MEV. + +Combatir estos problemas relacionados con el MEV después de la Fusión de Ethereum es un área central de investigación. Hasta la fecha, dos soluciones propuestas para reducir el impacto negativo del MEV en la descentralización y la seguridad de Ethereum después de la Fusión son **Proposer-Builder Separation (PBS)** y la **Builder API**. + +### Separación proponente-constructor {#proposer-builder-separation} + +Tanto en la prueba de trabajo como en la prueba de participación, un nodo que construye un bloque lo propone para su adición a la cadena a otros nodos que participan en el consenso. Un nuevo bloque se convierte en parte de la cadena canónica después de que otro minero construye sobre él (en PoW) o recibe certificaciones de la mayoría de los validadores (en Pos). + +La combinación de roles de productor de bloques y proponente de bloques es lo que introduce la mayoría de los problemas relacionados con el MEV descritos anteriormente. Por ejemplo, los nodos de consenso son incentivados a desencadenar reorganizaciones de la cadena en ataques de bandidos de tiempo (time-bandit) para maximizar las ganancias de MEV. + +[La separación proponente-constructor](https://ethresear.ch/t/proposer-block-builder-separation-friendly-fee-market-designs/9725) (PBS) está diseñada para mitigar el impacto del MEV, especialmente en la capa de consenso. La principal característica de PBS es la separación de las reglas del productor de bloques y el proponente de bloques. Los validadores siguen siendo responsables de proponer y votar sobre los bloques, pero una nueva clase de entidades especializadas, llamadas **constructores de bloques**, tienen la tarea de ordenar transacciones y construir construcción. + +Bajo PBS, un constructor de bloques crea un paquete de transacciones y hace una oferta por su inclusión en un bloque de la Cadena de Baliza (como la "carga útil de ejecución"). El validador seleccionado para proponer el siguiente bloque luego comprueba las diferentes ofertas y elige el paquete con la tarifa más alta. PBS esencialmente crea un mercado de subastas, donde los constructores negocian con los validadores que venden espacio de bloques. + +Los diseños actuales de PBS utilizan un [esquema commit-reveal](https://gitcoin.co/blog/commit-reveal-scheme-on-ethereum/) en el que los constructores solo publican un compromiso criptográfico con el contenido de un bloque (encabezado de bloque) junto con sus ofertas. Después de aceptar la oferta ganadora, el proponente crea una propuesta de bloque firmada que incluye el encabezado del bloque. Se espera que el constructor de bloques publique el cuerpo completo del bloque después de ver la propuesta de bloque firmada, y también debe recibir suficientes [atestaciones](/glossary/#attestation) de los validadores antes de que se finalice. + +#### ¿Cómo mitiga la separación proponente-constructor el impacto del MEV? {#how-does-pbs-curb-mev-impact} + +La separación entre proponentes y constructores en el protocolo reduce el efecto del MEV en el consenso eliminando la extracción del MEV del ámbito de los validadores. En su lugar, los constructores de bloques que ejecuten hardware especializado capturarán las oportunidades de MEV en el futuro. + +Esto no excluye totalmente a los validadores de los ingresos relacionados con MEV no obstante, ya que los constructores deben pujar alto para que sus bloques sean aceptados por los validadores. De todas maneras, si los validadores ya no se centran directamente en optimizar los ingresos de MEV, la amenaza de ataques time-bandit se reduce. + +La separación entre proponentes y constructores también reduce los riesgos de centralización de MEV. Por ejemplo, el uso de un esquema commit-reveal elimina la necesidad de que los constructores confíen en que los validadores no robarán la oportunidad de MEV o la expondrán a otros constructores. Esto reduce la barrera para que los participantes en solitario se beneficien del MEV; de lo contrario, los constructores tenderían a favorecer grandes pools con reputación fuera de la cadena y a realizar acuerdos fuera de la cadena con ellos. + +Del mismo modo, los validadores no tienen que confiar en los constructores para que no retengan cuerpos de bloques o publiquen bloques no válidos porque el pago es incondicional. La tarifa del validador todavía se procesa incluso si el bloque propuesto no está disponible o es declarado no válido por otros validadores. En este último caso, el bloque simplemente se descarta, lo que obliga al constructor de bloques a perder todas las tarifas de transacción y los ingresos de MEV. + +### Builer API {#builder-api} + +Si bien la separación proponente-constructor promete reducir los efectos de la extracción de MEV, su implementación requiere cambios en el protocolo de consenso. Específicamente, la regla de [elección de bifurcación](/developers/docs/consensus-mechanisms/pos/#fork-choice) en la Cadena de Baliza tendría que actualizarse. La [Builder API](https://github.com/ethereum/builder-specs), de constructor, es una solución temporal destinada a proporcionar una implementación que funcione de la separación proponente-constructor, aunque con mayores suposiciones de confianza. + +La Builder API es una versión modificada de la [Engine API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md) utilizada por los clientes de capa de consenso para solicitar cargas útiles de ejecución a los clientes de la capa de ejecución. Como se describe en la [especificación del validador honesto](https://github.com/ethereum/consensus-specs/blob/dev/specs/bellatrix/validator.md), los validadores seleccionados para las tareas de propuesta de bloques solicitan un paquete de transacciones de un cliente de ejecución conectado, que incluyen en el bloque de la Cadena de Baliza propuesto. + +La Builder API también actúa como middleware entre los validadores y los clientes de la capa de ejecución; pero es diferente porque permite a los validadores de la Cadena de Baliza obtener bloques de entidades externas (en lugar de construir un bloque localmente utilizando un cliente de ejecución). + +A continuación se muestra una descripción general de cómo funciona la Builder API: + +1. La Builder API conecta al validador con una red de constructores de bloques que ejecutan clientes de capa de ejecución. Al igual que en PBS, los constructores son partes especializadas que invierten en la construcción de bloques que consumen muchos recursos y utilizan diferentes estrategias para maximizar los ingresos obtenidos de MEV + propina de prioridad. + +2. Un validador (que ejecuta un cliente de capa de consenso) solicita cargas útiles de ejecución junto con ofertas de la red de constructores. Las ofertas de los constructores contendrán el encabezado de la carga útil de ejecución —un compromiso criptográfico con el contenido de la carga útil— y una tarifa que se pagará al validador. + +3. El validador revisa las ofertas entrantes y elige la carga útil de ejecución con la tarifa más alta. Usando la Builder API, el validador crea una propuesta de bloque de baliza "ciega" que incluye solo su firma y el encabezado de carga útil de ejecución, y la envía al constructor. + +4. Se espera que el constructor que ejecuta la Builder API responda con la carga útil de ejecución completa al ver la propuesta de bloque ciega. Esto permite al validador crear un bloque de baliza "firmado", que propaga por toda la red. + +5. Aún se espera que un validador que utilice la Builder API construya un bloque localmente en caso de que el constructor de bloques no responda con prontitud, para que no se pierdan las recompensas de la propuesta de bloque. Sin embargo, el validador no puede crear otro bloque utilizando las transacciones ahora reveladas u otro conjunto, ya que equivaldría a _equivocación_ (firmar dos bloques dentro de la misma ranura), lo que es una ofensa que se puede acuchillar. + +Un ejemplo de implementación de la Builder API es [MEV Boost](https://github.com/flashbots/mev-boost), una mejora del [mecanismo de subasta de Flashbots](https://docs.flashbots.net/Flashbots-auction/overview/) diseñado para reducir las externalidades negativas de MEV en Ethereum. La subasta de Flashbots permite a los mineros en prueba de trabajo subcontratar el trabajo de construcción de bloques rentables a partes especializadas llamadas **buscadores**. + +Los buscadores buscan oportunidades lucrativas de MEV y envían paquetes de transacciones a los mineros junto con una [puja de precio sellado](https://en.wikipedia.org/wiki/First-price_sealed-bid_auction) para su inclusión en el bloque. El minero que ejecuta mev-geth, una versión bifurcada del cliente go-ethereum (Geth), solo tiene que elegir el paquete con más ganancias y minarlo como parte del nuevo bloque. Para proteger a los mineros del spam y las transacciones no válidas, los paquetes de transacciones pasan por **relayers** para su validación antes de llegar a los mineros. + +MEV Boost conserva el mismo funcionamiento de la subasta original de Flashbots, aunque con nuevas funciones diseñadas para el cambio de Ethereum a prueba de participación. Los buscadores todavía encuentran transacciones de MEV rentables para su inclusión en bloques, pero una nueva clase de partes especializadas, llamadas **constructores**, son responsables de agregar transacciones y paquetes en bloques. Un constructor acepta ofertas de precio sellado de los buscadores y ejecuta optimizaciones para encontrar la orden más rentable. + +El relayer sigue siendo responsable de validar los paquetes de transacciones antes de pasarlos al proponente. Sin embargo, MEV Boost introduce **escrows** responsables de proporcionar [disponibilidad de datos](/developers/docs/data-availability/) mediante el almacenamiento de cuerpos de bloques enviados por constructores y encabezados de bloque enviados por validadores. Aquí, un validador conectado a un relay solicita las cargas útiles de ejecución disponibles y utiliza el algoritmo de ordenación de MEV Boost para seleccionar el encabezado de la carga útil con la puja + propinas de MEV más valiosas. + +#### ¿Cómo mitiga la Builder API el impacto del MEV? {#how-does-builder-api-curb-mev-impact} + +El principal beneficio de la Builder API es su potencial para democratizar el acceso a las oportunidades de MEV. El uso de esquemas commit-reveal elimina las suposiciones de confianza y reduce las barreras de entrada para los validadores que buscan beneficiarse del MEV. Esto debería reducir la presión sobre los participantes en solitario para que se integren a grandes grupos de participación con el fin de aumentar las ganancias de MEV. + +La implementación generalizada de la Builder API fomentará una mayor competencia entre los constructores de bloques, lo que aumenta la resistencia a la censura. A medida que los validadores revisan las ofertas de varios constructores, el intento de un constructor de censurar una o más transacciones de usuario debe superar a todos los demás constructores sin censura para tener éxito. Esto aumenta drásticamente el costo de censurar a los usuarios y desalienta la práctica. + +Algunos proyectos, como MEV Boost, utilizan la Builder API como parte de una estructura general diseñada para proporcionar privacidad de las transacciones a ciertas partes, como los traders que intentan evitar los ataques de frontrunning/sandwiching. Esto se logra proporcionando un canal de comunicación privado entre los usuarios y los constructores de bloques. A diferencia de las zonas de espera o mempools con permisos descritas anteriormente, este enfoque es beneficioso por las siguientes razones: + +1. La existencia de múltiples constructores en el mercado hace que la censura sea poco práctica, lo que beneficia a los usuarios. Por el contrario, la existencia de pools oscuros centralizados y basadas en la confianza concentraría el poder en manos de unos pocos constructores de bloques y aumentaría la posibilidad de censura. -A medida que las DeFi crecen y aumentan en popularidad, el MEV pronto podría superar significativamente la recompensa de bloques base de Ethereum. Con ello surge una posibilidad creciente de reminado de bloques egoísta e inestabilidad del consenso. Algunos consideran que esto es una amenaza existencial para Ethereum, y la desincentivación del minado para uno mismo es un área de investigación activa en la teoría del protocolo Ethereum. Una solución que está siendo explorada actualmente es el [smoothing de recompensas de MEV](https://ethresear.ch/t/committee-driven-mev-smoothing/10408), es decir la reducción de la divergencia. +2. El software de la Builder API es de código abierto, lo que permite a cualquier persona ofrecer servicios de creación de bloques. Esto significa que los usuarios no se ven obligados a usar ningún constructor de bloques en particular y mejora la neutralidad y la no necesidad de permisos de Ethereum. Además, los traders que buscan MEV no contribuirán inadvertidamente a la centralización mediante el uso de canales de transacciones privados. ## Recursos relacionados {#related-resources} +- [Documentos de Flashbots](https://docs.flashbots.net/) - [Flashbots GitHub](https://github.com/flashbots/pm) -- [MEV-Explore](https://explore.flashbots.net/) _Panel de control y explorador de transacciones en vivo para transacciones MEV_ +- [MEV-Explore:](https://explore.flashbots.net/) _Explorador del Panel de control y de transacciones en vivo para transacciones de MEV_ +- [mevboost.org:](https://www.mevboost.org/) _Rastreador con estadísticas en tiempo real para relays de MEV-Boost y constructores de bloques_ ## Más información {#further-reading} - [¿Qué es el valor extraíble del minero (MEV)?](https://blog.chain.link/what-is-miner-extractable-value-mev/) -- [MEV y yo](https://research.paradigm.xyz/MEV) +- [MEV y yo](https://www.paradigm.xyz/2021/02/mev-and-me) - [Ethereum es un bosque oscuro](https://www.paradigm.xyz/2020/08/ethereum-is-a-dark-forest/) - [Escapar del bosque oscuro](https://samczsun.com/escaping-the-dark-forest/) - [Flashbots: frontrunning en la crisis de MEV](https://medium.com/flashbots/frontrunning-the-mev-crisis-40629a613752) - [Hilos sobre MEV de @bertcmiller](https://twitter.com/bertcmiller/status/1402665992422047747) +- [MEV-Boost: Fusionar la arquitectura de Flashbots lista](https://ethresear.ch/t/mev-boost-merge-ready-flashbots-architecture/11177) +- [¿Qué es el impulso de MEV?](https://www.alchemy.com/overviews/mev-boost) +- [¿Por qué ejecutar mev-boost?](https://writings.flashbots.net/writings/why-run-mevboost/) +- [La Guía de Hitchhikers hacia Ethereum](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum) diff --git a/src/content/translations/es/developers/docs/oracles/index.md b/src/content/translations/es/developers/docs/oracles/index.md index 9c9dc3c7653..48ea2d1b055 100644 --- a/src/content/translations/es/developers/docs/oracles/index.md +++ b/src/content/translations/es/developers/docs/oracles/index.md @@ -1,311 +1,88 @@ --- title: Oráculos -description: Los oráculos ayudan a proporcionar datos del mundo real a tu aplicación de Ethereum, ya que los contratos inteligentes, por sí solos, no pueden consultar información del mundo real. +description: Los oráculos proporcionan a los contratos inteligentes de Ethereum acceso a los datos del mundo real para aprovechar más casos de uso y otorgar mayor valor a los usuarios. lang: es -incomplete: true --- -Los oráculos son feeds de datos que conectan Ethereum a información del mundo real, externa a la blockchain (off-chain) para que puedas consultar datos en tus contratos inteligentes. Por ejemplo, las dapps de mercados de predicciones utilizan oráculos para establecer pagos basados en eventos. Un mercado de predicción podría pedirte que apostases tu ETH sobre el próximo presidente de los Estados Unidos. Utilizarán un oráculo para confirmar el resultado y pagar a los ganadores. +Los oráculos son feeds de datos que extraen datos de las fuentes de datos de la cadena de bloques (off-chain - fuera de la cadena) y los ponen en la cadena de bloques (on-chain - dentro de la cadena) para que los contratos inteligentes los usen. Esto es necesario porque los contratos inteligentes que se ejecutan en Ethereum no pueden acceder a la información almacenada fuera de la red de la cadena de bloques. -## Pre requisitos {#prerequisites} +Dar a los contratos inteligentes la capacidad de ejecutarse usando entradas de datos fuera de la cadena amplía el valor de las aplicaciones descentralizadas. Por ejemplo, los mercados descentralizados de predicción usan los oráculos para proporcionar información sobre los resultados con los que pueden validar las predicciones de los usuarios. Supongamos que Alice apuesta 20 ETH sobre quién será el próximo presidente de EE.UU. En ese caso, la dapp del mercado de predicciones necesita un oráculo para confirmar los resultados de las elecciones y determinar si Alice puede recibir el pago. -Asegúrate de estar familiarizado con los [nodos](/developers/docs/nodes-and-clients/), [los mecanismos de consenso](/developers/docs/consensus-mechanisms/) y la [anatomía de los contratos inteligentes](/developers/docs/smart-contracts/anatomy/), especialmente con los eventos. +## Requisitos previos {#prerequisites} -## ¿Qué es un oráculo? {#what-is-an-oracle} +Esta página asume que el lector está familiarizado con los fundamentos de Ethereum, incluyendo [nodos](/developers/docs/nodes-and-clients/), [mecanismos de consenso](/developers/docs/consensus-mechanisms/)y la [EVM](/developers/docs/evm/). También debe tener un buen entendimiento de [contratos inteligentes](/developers/docs/smart-contracts/) y [anatomía de un contrato inteligente](/developers/docs/smart-contracts/anatomy/), especialmente [eventos](/glossary/#events). -Un oráculo es un puente entre la blockchain y el mundo real. Los oráculos actúan como API internas a la cadena de bloques (on-chain), que puedes consultar a fin de aportar información a los contratos inteligentes. Esta información podría ser muy variada: desde datos de precios hasta informes climáticos. Los oráculos pueden también ser bidireccionales y usarse para "enviar" datos al mundo real. +## ¿Qué es un oráculo de la cadena de bloques? {#what-is-a-blockchain-oracle} -Ver explicación de Patrick sobre los oráculos: +Los oráculos son aplicaciones que consiguen, verifican y transmiten información externa (es decir, información almacenada fuera de la cadena) a contratos inteligentes que se ejecutan en la cadena de bloques. Además de “extraer” datos fuera de la cadena y transmitirlos en Ethereum, los oráculos también pueden “empujar” información de la cadena de bloques a sistemas externos. Un ejemplo de esto último podría ser un oráculo que desbloquee un bloqueo inteligente una vez que el usuario envía la comisión a través de una transacción de Ethereum. - +Los oráculos actúan como un “puente” conectando contratos inteligentes en cadenas de bloques con proveedores de datos fuera de la cadena. Sin oráculos, las aplicaciones de contratos inteligentes solo podrían acceder a datos de la misma cadena. Un oráculo proporciona un mecanismo para activar funciones de contratos inteligentes usando datos fuera de cadena. -## ¿Por qué son necesarios? {#why-are-they-needed} +Los oráculos difieren en función de la fuente de datos (una o varias fuentes), los modelos de confianza (centralizados o descentralizados) y la arquitectura del sistema (inmediato-lectura, publicación-suscripción y solicitud-respuesta). También podemos distinguir entre oráculos basados en si recuperan datos externos para el uso de contratos en cadena (oráculos de entrada), envían información de la cadena de bloques a aplicaciones fuera de la cadena (oráculos de salida) o realizan tareas computacionales fuera de la cadena (oráculos computacionales). -En una cadena de bloques como Ethereum, es necesario que cada nodo de la red sea capaz de replicar cada transacción y obtener el mismo resultado de manera garantizada. Las API introducen información potencialmente variable. Si le enviara una cierta cantidad de ETH a alguien según un valor de $USD acordado y para ello utilizara una API, la consulta arrojaría un resultado diferente de un día para otro. Esto sin mencionar que la API podría ser hackeada o tornarse obsoleta. Si esto ocurriera, los nodos de la red no podrán lograr un acuerdo sobre el estado actual de Ethereum, lo que llevaría a una ruptura del [consenso](/developers/docs/consensus-mechanisms/). +## ¿Por qué los contratos inteligentes necesitan oráculos? {#why-do-smart-contracts-need-oracles} -Los oráculos resuelven este problema publicando la información en la cadena de bloques. Así, cualquier nodo que replique la transacción usará los mismos datos inmutables que se publicaron en la red. Para ello, un oráculo típicamente constará de un contrato inteligente y algunos componentes externos a la cadena que consultan diversas API y posteriormente envían transacciones para actualizar los datos de los contratos inteligentes. +La mayoría de los desarrolladores ven los contratos inteligentes como simples piezas de código ejecutándose en direcciones específicas en la cadena de bloques. Sin embargo, una visión más [general de los contratos inteligentes](/smart-contracts/) es que son programas de software autoejecutados capaces de hacer cumplir acuerdos entre partes una vez que se cumplen condiciones específicas, lo que explica el término “contratos inteligentes” -### El problema de los oráculos {#oracle-problem} +Pero usar contratos inteligentes para hacer cumplir acuerdos entre personas no es fácil, dado que Ethereum es determinista. Un [sistema determinista](https://en.wikipedia.org/wiki/Deterministic_algorithm) es uno que siempre produce los mismos resultados dado un estado inicial y una entrada particular —no hay aleatoriedad o variación en el proceso de calcular resultados (o salidas) a partir de entradas. -Como hemos mencionado, las transacciones de Ethereum no pueden acceder a información fuera de la cadena directamente. Al mismo tiempo, confiar en una sola fuente de confianza para proporcionar la información es inseguro e invalida la descentralización de un contrato inteligente. Esto es conocido como el problema de los oráculos. +Para lograr la ejecución determinista, las cadenas de bloques limitan los nodos a alcanzar un consenso sobre preguntas binarias simples (verdadero/falso) usando _solo_ datos almacenados en la propia cadena de bloques. Ejemplos de estas preguntas incluyen: -Podemos evitar este problema usando un oráculo descentralizado que extraiga información de diferentes fuentes; si una fuente de información es hackeada o falla, el contrato inteligente continuará funcionando según lo previsto. +- “¿Firmó el propietario de la cuenta (identificado por una clave pública) esta transacción con la clave privada emparejada?” +- “¿Esta cuenta tiene fondos suficientes para cubrir la transacción?” +- “¿Es esta transacción válida en el contexto de este contrato inteligente?”, etc. -### Seguridad {#security} +Si las cadenas de bloques recibieran información de fuentes externas (o sea, del mundo real), el determinismo sería imposible de lograr, evitando así que los nodos acordaran sobre la validez de los cambios en el estado de la cadena de bloques. Tomemos por ejemplo un contrato inteligente que ejecuta una transacción basada en el tipo de cambio actual ETH-USD obtenido de una API de precios tradicional. Esta figura probablemente cambiaría con frecuencia (sin mencionar que la API podría quedar obsoleta o ser hackeada), lo que significa que los nodos que ejecutan el mismo código del contrato llegarían a resultados diferentes. -Un oráculo es tan seguro como las fuentes de datos que utiliza. Si una dapp usa Uniswap como oráculo para el feed de precio ETH/DAI, un atacante podría modificar dicho precio en Uniswap para manipular la comprensión de precio actual de la dapp. Un ejemplo de cómo combatir esto es [un sistema de feed](https://developer.makerdao.com/feeds/) como el utilizado por MakerDAO, el cual coteja precios desde muchos feeds de datos externos en vez de confiar solo en una fuente de datos. +Para una cadena de bloques pública, como Ethereum, que tiene miles de nodos alrededor del mundo que procesan transacciones, el determinismo es crítico. Sin una autoridad central que sirva como fuente de verdad, se espera que los nodos lleguen al mismo estado después de aplicar las mismas transacciones. Un caso en el que el nodo A ejecuta el código de un contrato inteligente y obtiene "3" como resultado, mientras que el nodo B obtiene "7" después de ejecutar la misma transacción causaría que el consenso se rompa y eliminaría el valor de Ethereum como plataforma de computación descentralizada. -### Arquitectura {#architecture} +El escenario descrito anteriormente también destaca el problema de diseñar cadenas de bloques para extraer información de fuentes externas. Sin embargo, los oráculas resuelven este problema tomando información de fuentes fuera de la cadena y almacenándola en la cadena de bloques para que los contratos inteligentes la consumen. Puesto que la información almacenada en la cadena es inalterable y está disponible públicamente, los nodos de Ethereum pueden usar de forma segura los datos fuera de la cadena importados por el oráculo para calcular los cambios de estado sin romper el consenso. -Este es un ejemplo de una arquitectura simple de un oráculo, pero hay más formas de activar el cálculo fuera de la cadena. +Para ello, un oráculo se compone típicamente de un contrato inteligente que corre en la cadena y algunos componentes fuera de la cadena. El contrato en cadena recibe solicitudes de datos de otros contratos inteligentes, que pasa al componente fuera de la cadena (llamado nodo oráculo). Este nodo de oráculo puede consultar fuentes de datos (usando interfaces de programación de aplicaciones, por ejemplo) y enviar transacciones para almacenar los datos solicitados en el almacenamiento del contrato inteligente. -1. Emite un registro con su [evento de contrato inteligente](/developers/docs/smart-contracts/anatomy/#events-and-logs). -2. Un servicio fuera de cadena se suscribió (generalmente usando algo como el comando JSON-RPC `eth_subscribe`) a estos registros específicos. -3. El servicio fuera de cadena realiza algunas tareas según se define en el registro. -4. El servicio fuera de cadena responde con los datos solicitados en una transacción secundaria al contrato inteligente. +Esencialmente, un oráculo de cadena de bloques es un puente entre la brecha de información entre la cadena de bloques y el entorno externo, lo que crea “contratos inteligentes híbridos”. Un contrato inteligente híbrido funciona en función de una combinación de código de contrato en cadena e infraestructura fuera de la cadena. Los mercados descentralizados de predicción, descritos en la introducción, son un excelente ejemplo de contratos inteligentes híbridos. Otros ejemplos podrían ser los contratos inteligentes de seguros de cosechas que pagan cuando un conjunto de oráculos determinan que se han producido ciertas condiciones meteorológicas. -Esta es la forma de obtener datos de una manera de 1 a 1. Sin embargo, para mejorar la seguridad, es posible que desee descentralizar la forma en que recopila sus datos fuera de cadena. +## ¿Cuál es el problema de los oráculos? {#the-oracle-problem} -El siguiente paso podría ser tener una red de estos nodos haciendo estas llamadas a diferentes API y fuentes, y agregando los datos en cadena. +Es fácil dar acceso a los contratos inteligentes a datos fuera de la cadena confiando en una entidad (o múltiples entidades) para que introduzcan información extrínseca en la cadena de bloques almacenándola en la carga útil de datos de una transacción. Pero esto plantea nuevos problemas: -[Off-Chain Reporting de Chainlink](https://blog.chain.link/off-chain-reporting-live-on-mainnet/) (Chainlink OCR) ha mejorado esta metodología haciendo que la red de oráculos fuera de cadena se comunique entre sí. firmen criptográficamente sus respuestas, agreguen sus respuestas fuera de cadena y envíen solo una transacción en cadena con el resultado. De esta manera, se consume menos gas, pero aún obtiene la garantía de datos descentralizados, ya que cada nodo ha firmado su parte de la transacción, lo que hace que el nodo que envía la transacción no pueda modificarla. La política de escalamiento entra en acción si el nodo no realiza transacciones y lo hace el siguiente nodo. +- ¿Cómo verificamos si la información inyectada se extrajo de la fuente correcta o si fue manipulada? -## Uso {#usage} +- ¿Cómo garantizamos que estos datos estén siempre disponibles y se actualicen regularmente? -Usando servicios como Chainlink, puede referenciar datos descentralizados en cadena que se hayan sacado del mundo real y agregado. Algo así como un patrimonio público, pero para datos descentralizados. También puede crear sus propias redes de oráculos modulares para obtener cualquier dato personalizado que esté buscando. Además, puede hacer cómputo fuera de la cadena y enviar información al mundo real también. Chainlink tiene infraestructura para: +El llamado "problema de los oráculos" demuestra los problemas que conlleva el uso de oráculos de cadenas de bloques para enviar entradas a contratos inteligentes. Es fundamental asegurarse de que los datos de un oráculo sean correctos; de lo contrario, la ejecución inteligente del contrato producirá resultados erróneos. También es importante la no necesidad de confianza: tener que confiar en que los operadores de oráculos proporcionen información precisa quita a los contratos inteligentes sus cualidades más características. -- [Obtener feeds de precios de criptomonedas en su contrato](https://chain.link/solutions/defi) -- [Generar números aleatorios verificables (útiles para gaming)](https://chain.link/solutions/chainlink-vrf) -- [Hacer llamadas a API externas](https://docs.chain.link/docs/request-and-receive-data): un caso de uso novedoso de esto es [revisar reservas de wBTC](https://cointelegraph.com/news/1b-in-wrapped-bitcoin-now-being-audited-using-chainlink-s-proof-of-reserve) +Diferentes oráculos difieren en su enfoque para resolver el problema del oráculo, y exploramos estos enfoques más adelante. Si bien ningún oráculo es perfecto, los méritos de un oráculo deben medirse en función de cómo maneje los siguientes desafíos: -Este es un ejemplo de cómo obtener el precio más reciente de ETH en su contrato inteligente usando un feed de precios de Chainlink: +1. **Corrección**: Un oráculo no debe causar que los contratos inteligentes provoquen cambios de estado con base en datos no válidos fuera de la cadena. Por esta razón, un oráculo debe garantizar la _autenticidad_ y la _integridad_ de los datos: autenticidad significa que los datos fueron obtenidos de la fuente correcta, mientras que integridad significa que los datos permanecieron intactos (no fueron alterados) antes de ser enviados a la cadena. -### Feeds de datos de Chainlink {#chainlink-data-feeds} +2. **Disponibilidad**: Un oráculo no debe retrasar o impedir que los contratos inteligentes ejecuten acciones y activen cambios de estado. Esta cualidad requiere que los datos de un oráculo estén _disponibles bajo petición_ sin interrupción. -```solidity -pragma solidity ^0.6.7; - -import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol"; - -contract PriceConsumerV3 { - - AggregatorV3Interface internal priceFeed; - - /** - * Network: Kovan - * Aggregator: ETH/USD - * Address: 0x9326BFA02ADD2366b30bacB125260Af641031331 - */ - constructor() public { - priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331); - } - - /** - * Returns the latest price - */ - function getLatestPrice() public view returns (int) { - ( - uint80 roundID, - int price, - uint startedAt, - uint timeStamp, - uint80 answeredInRound - ) = priceFeed.latestRoundData(); - return price; - } -} -``` - -[Puede probar esto en remix con este enlace](https://remix.ethereum.org/#version=soljson-v0.6.7+commit.b8d736ae.js&optimize=false&evmVersion=null&gist=0c5928a00094810d2ba01fd8d1083581) - -[Ver la documentación](https://docs.chain.link/docs/get-the-latest-price) - -### Chainlink FAV {#chainlink-vrf} - -Chainlink FAV (del acrónimo en inglés de función aleatoria verificable) es una fuente justa y verificable de aleatoriedad diseñada para contratos inteligentes. Los desarrolladores de contratos inteligentes pueden utilizar Chainlink VRF como un generador de números aleatorios (GNA) a prueba de manipulaciones para crear contratos inteligentes confiables para cualquier aplicación que esté basada en resultados impredecibles: - -- NFT y juegos de cadena de bloques -- Asignación aleatoria de tareas y recursos (por ejemplo, asignación aleatoria de jueces a casos) -- Elección de una muestra representativa para mecanismos de consenso - -Los números aleatorios son difíciles de lograr porque las cadenas de bloques son deterministas. - -El trabajo con oráculos de Chainlink fuera de los feeds de datos sigue el [ciclo de solicitud y recepción](https://docs.chain.link/docs/architecture-request-model) de trabajar con Chainlink. Utilizan el token LINK para enviar gas de oráculo a los proveedores de oráculos para mostrar respuestas. El token LINK está diseñado específicamente para funcionar con oráculos y se basa en el token ERC-677 actualizado, el cual ofrece compatibilidad con versiones anteriores de [ERC-20](/developers/docs/standards/tokens/erc-20/). El siguiente código, si se implementa en la red de prueba de Kovan, recuperará un número aleatorio comprobado de forma criptográfica. Para hacer la solicitud, financie el contrato con algún token LINK de la red de prueba, que puede obtener del [Faucet de LINK de Kovan](https://kovan.chain.link/). - -```javascript - -pragma solidity 0.6.6; - -import "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol"; - -contract RandomNumberConsumer is VRFConsumerBase { - - bytes32 internal keyHash; - uint256 internal fee; - - uint256 public randomResult; - - /** - * Constructor inherits VRFConsumerBase - * - * Network: Kovan - * Chainlink VRF Coordinator address: 0xdD3782915140c8f3b190B5D67eAc6dc5760C46E9 - * LINK token address: 0xa36085F69e2889c224210F603D836748e7dC0088 - * Key Hash: 0x6c3699283bda56ad74f6b855546325b68d482e983852a7a82979cc4807b641f4 - */ - constructor() - VRFConsumerBase( - 0xdD3782915140c8f3b190B5D67eAc6dc5760C46E9, // VRF Coordinator - 0xa36085F69e2889c224210F603D836748e7dC0088 // LINK Token - ) public - { - keyHash = 0x6c3699283bda56ad74f6b855546325b68d482e983852a7a82979cc4807b641f4; - fee = 0.1 * 10 ** 18; // 0.1 LINK (varies by network) - } - - /** - * Requests randomness from a user-provided seed - */ - function getRandomNumber(uint256 userProvidedSeed) public returns (bytes32 requestId) { - require(LINK.balanceOf(address(this)) >= fee, "Not enough LINK - fill contract with faucet"); - return requestRandomness(keyHash, fee, userProvidedSeed); - } - - /** - * Callback function used by VRF Coordinator - */ - function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override { - randomResult = randomness; - } -} -``` - -### Chainlink Keepers {#chainlink-keepers} - -Los contratos inteligentes no pueden activar o iniciar sus propias funciones en momentos arbitrarios o bajo condiciones arbitrarias. Los cambios de estado solo pueden ocurrir cuando otra cuenta inicia una transacción (como un usuario, un oráculo o un contrato). La [Red Chainlink Keepers](https://docs.chain.link/docs/chainlink-keepers/introduction/) proporciona opciones para contratos inteligentes a fin de externalizar tareas de mantenimiento regular de manera minimalizada y descentralizada. - -Para usar Ckainlink Keepers, un contrato inteligente debe implementar [KeeperCompatibleInterface](https://docs.chain.link/docs/chainlink-keepers/compatible-contracts/), que consta de dos funciones: - -- `checkUpkeep`: verifica si el contrato requiere trabajo. -- `performUpkeep`: realiza el trabajo en el contrato, si se lo indica checkUpkeep. - -El siguiente ejemplo es un contrato de contador simple. La variable `counter` se incrementa en uno por cada llamada a `performUpkeep`. Puede [revisar el siguiente código usando Remix](https://remix.ethereum.org/#url=https://docs.chain.link/samples/Keepers/KeepersCounter.sol) - -```javascript -// SPDX-License-Identifier: MIT -pragma solidity ^0.7.0; - -// KeeperCompatible.sol imports the functions from both ./KeeperBase.sol and -// ./interfaces/KeeperCompatibleInterface.sol -import "@chainlink/contracts/src/v0.7/KeeperCompatible.sol"; - -contract Counter is KeeperCompatibleInterface { - /** - * Public counter variable - */ - uint public counter; - - /** - * Use an interval in seconds and a timestamp to slow execution of Upkeep - */ - uint public immutable interval; - uint public lastTimeStamp; - - constructor(uint updateInterval) { - interval = updateInterval; - lastTimeStamp = block.timestamp; - - counter = 0; - } - - function checkUpkeep(bytes calldata /* checkData */) external override returns (bool upkeepNeeded, bytes memory /* performData */) { - upkeepNeeded = (block.timestamp - lastTimeStamp) > interval; - // We don't use the checkData in this example. Los datos de verificación se definen cuando se registró el Upkeep. - } - - function performUpkeep(bytes calldata /* performData */) external override { - lastTimeStamp = block.timestamp; - counter = counter + 1; - // We don't use the performData in this example. Los datos de rendimiento son generados por la llamada de Keeper a su función checkUpkeep - } -} -``` - -Después de implementar un contrato compatible con Keeper, debe registrar el contrato para [Upkeep](https://docs.chain.link/docs/chainlink-keepers/register-upkeep/) y depositar fondos con LINK para notificar a la Red de Keepers sobre su contrato, de modo que su trabajo se realice continuamente. - -### Proyectos de Keepers {#keepers} - -- [Chainlink Keepers](https://keepers.chain.link/) -- [Red Keep3r](https://docs.keep3r.network/) +3. **Compatibilidad con incentivos**: Un oráculo debe fomentar que proveedores de datos fuera de la cadena envíen información correcta a los contratos inteligentes. La compatibilidad con incentivos implica _atribuibilidad_ y _responsabilidad_. La atribuibilidad permite correlacionar información externa con su proveedor, mientras que la responsabilidad vincula a los proveedores de datos con la información que proporcionan, de modo que puedan ser recompensados o penalizados en función de la calidad de la información proporcionada. -### Llamada a la API de Chainlink {#chainlink-api-call} +## ¿Cómo funciona un servicio de oráculo de cadena de bloques? {#how-does-a-blockchain-oracle-service-work} -Las [llamadas a la API de Chainlink](https://docs.chain.link/docs/make-a-http-get-request) son la forma más fácil de obtener datos del mundo fuera de la cadena en la forma tradicional en que funciona la Web: llamadas a la API. Una sola instancia de esto y teniendo un solo oráculo hacen que el proceso sea centralizado por naturaleza. Para mantener una verdadera descentralización, una plataforma de contratos inteligentes necesitaría usar numerosos nodos encontrados en un [mercado externo de datos](https://market.link/). +### Usuarios {#users} -[Implementar el siguiente código en remix en la red kovan para probar](https://remix.ethereum.org/#version=soljson-v0.6.7+commit.b8d736ae.js&optimize=false&evmVersion=null&gist=8a173a65099261582a652ba18b7d96c1) +Los usuarios son entidades (es decir, contratos inteligentes) que necesitan información externa a la cadena de bloques para completar acciones específicas. El flujo de trabajo básico de un servicio de oráculo comienza con un usuario que envía una solicitud de datos al contrato del oráculo. Las solicitudes de datos generalmente responderán algunas o todas las siguientes preguntas: -Esto también sigue el ciclo de solicitud y recepción de los oráculos y necesita que el contrato reciba fondos de Kovan LINK (el gas de los oráculos) para funcionar. +1. ¿Qué fuentes pueden consultar los nodos fuera de la cadena para obtener la información solicitada? -```javascript -pragma solidity ^0.6.0; +2. ¿Cómo procesan los informantes la información de fuentes de datos y extraen puntos de datos útiles? -import "@chainlink/contracts/src/v0.6/ChainlinkClient.sol"; +3. ¿Cuántos nodos de oráculos pueden participar en la recuperación de los datos? -contract APIConsumer is ChainlinkClient { +4. ¿Cómo deben manejarse las discrepancias en los informes de oráculos? - uint256 public volume; +5. ¿Qué método se debe aplicar para filtrar las presentaciones y agregar o resumir los informes en un único valor? - address private oracle; - bytes32 private jobId; - uint256 private fee; +### Contrato de oráculo {#oracle-contract} - /** - * Network: Kovan - * Oracle: 0x2f90A6D021db21e1B2A077c5a37B3C7E75D15b7e - * Job ID: 29fa9aa13bf1468788b7cc4a500a45b8 - * Fee: 0.1 LINK - */ - constructor() public { - setPublicChainlinkToken(); - oracle = 0x2f90A6D021db21e1B2A077c5a37B3C7E75D15b7e; - jobId = "29fa9aa13bf1468788b7cc4a500a45b8"; - fee = 0.1 * 10 ** 18; // 0.1 LINK - } - - /** - * Create a Chainlink request to retrieve API response, find the target - * data, then multiply by 1000000000000000000 (to remove decimal places from data). - */ - function requestVolumeData() public returns (bytes32 requestId) - { - Chainlink.Request memory request = buildChainlinkRequest(jobId, address(this), this.fulfill.selector); - - // Set the URL to perform the GET request on - request.add("get", "https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD"); - - // Set the path to find the desired data in the API response, where the response format is: - // {"RAW": - // {"ETH": - // {"USD": - // { - // "VOLUME24HOUR": xxx.xxx, - // } - // } - // } - // } - request.add("path", "RAW.ETH.USD.VOLUME24HOUR"); - - // Multiply the result by 1000000000000000000 to remove decimals - int timesAmount = 10**18; - request.addInt("times", timesAmount); - - // Sends the request - return sendChainlinkRequestTo(oracle, request, fee); - } - - /** - * Receive the response in the form of uint256 - */ - function fulfill(bytes32 _requestId, uint256 _volume) public recordChainlinkFulfillment(_requestId) - { - volume = _volume; - } -} -``` - -Puede obtener más información acerca de las aplicaciones de Chainlink leyendo el [blog para desarrolladores de Chainlink](https://blog.chain.link/tag/developers/). - -## Servicios de oráculos {#other-services} - -- [Chainlink](https://chain.link/) -- [Witnet](https://witnet.io/) -- [Provable](https://provable.xyz/) -- [Paralink](https://paralink.network/) -- [Dos.Network](https://dos.network/) +El contrato de oráculo es el componente en cadena para el servicio de oráculo: escucha las solicitudes de datos de otros contratos, retransmite consultas de datos a los nodos de oráculo y transmite los datos devueltos a los contratos de los clientes. Este contrato también puede realizar algún procesamiento en los puntos de datos devueltos para producir un valor agregado que envíe al contrato solicitante. -### Creación de un contrato inteligente de oráculo {#build-an-oracle-smart-contract} +El contrato de oráculo expone algunas funciones que los contratos de cliente invocan al realizar una solicitud de datos. Tras recibir una nueva consulta, el contrato inteligente emitirá un [evento de registro](/developers/docs/smart-contracts/anatomy/#events-and-logs) con detalles de la solicitud de datos. Esto notifica a los nodos fuera de cadena suscritos al registro (generalmente usando algo como el comando JSON-RPC `eth_subscribe`), que proceden a recuperar los datos definidos en el evento de registro. -Este es un ejemplo de un contrato inteligente de oráculo diseñado por Pedro Costa. Puede encontrar anotaciones adicionales en su artículo: [ Implementación de un oráculo de cadena de bloques en Ethereum](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e). +A continuación se muestra un [ejemplo de contrato de oráculo](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) proporcionado por Pedro Costa. Este es un simple servicio de oráculo que puede consultar API fuera de la cadena a petición de otros contratos inteligentes y almacenar la información solicitada en la cadena de bloques: ```solidity pragma solidity >=0.4.21 <0.6.0; @@ -322,7 +99,7 @@ contract Oracle { string urlToQuery; //API url string attributeToFetch; //json attribute (key) to retrieve in the response string agreedValue; //value from key - mapping(uint => string) anwers; //answers provided by the oracles + mapping(uint => string) answers; //answers provided by the oracles mapping(address => uint) quorum; //oracles which will query the answer (1=oracle hasn't voted, 2=oracle has voted) } @@ -386,9 +163,9 @@ contract Oracle { bool found = false; while(!found) { //find first empty slot - if(bytes(currRequest.anwers[tmpI]).length == 0){ + if(bytes(currRequest.answers[tmpI]).length == 0){ found = true; - currRequest.anwers[tmpI] = _valueRetrieved; + currRequest.answers[tmpI] = _valueRetrieved; } tmpI++; } @@ -398,7 +175,7 @@ contract Oracle { //iterate through oracle list and check if enough oracles(minimum quorum) //have voted the same answer has the current one for(uint i = 0; i < totalOracleCount; i++){ - bytes memory a = bytes(currRequest.anwers[i]); + bytes memory a = bytes(currRequest.answers[i]); bytes memory b = bytes(_valueRetrieved); if(keccak256(a) == keccak256(b)){ @@ -419,24 +196,235 @@ contract Oracle { } ``` -_Nos encantaría tener más documentación sobre la creación de un contrato inteligente de oráculo. Si puede colaborar, cree una PR._ +### Nodos de oráculos {#oracle-nodes} + +El nodo de oráculo es el componente fuera de cadena del servicio de oráculo: extrae información de fuentes externas, como API alojadas en servidores de terceros, y la pone en cadena para el consumo de contratos inteligentes. Los nodos de oráculo escuchan los eventos del contrato de oráculo en cadena y proceden a completar la tarea descrita en el registro. + +Una tarea común de los nodos de oráculo es enviar una solicitud [HTTP GET](https://www.w3schools.com/tags/ref_httpmethods.asp) a un servicio de API, analizar la respuesta para extraer datos relevantes, formatearla en una salida legible para la cadena de bloques y enviarla en cadena incluyéndola en una transacción al contrato de oráculo. También se le podría solicitar al nodo de oráculo que certifique la validez e integridad de la información enviada utilizando “pruebas de autenticidad”, las cuales exploraremos más adelante. + +Los oráculos computacionales también usan los nodos fuera de cadena para realizar tareas computacionales intensivas, que serían poco prácticas para ejecutar en cadena, dados los costos de gas y los límites de tamaño de los bloques. Por ejemplo, el nodo de oráculo podría tener la tarea de generar una figura verificablemente aleatoria (por ejemplo, para juegos basados en la cadena de bloques). + +## Patrones de diseño de los oráculos {#oracle-design-patterns} + +Los oráculos son de diferentes tipos, incluyendo _inmediato-lectura_,_publicar-suscribir_ y*solicitud-respuesta*, siendo los dos últimos los más populares entre los contratos inteligentes de Ethereum. A continuación se presenta una breve descripción de los dos tipos de servicios de oráculo: + +### Oráculos publicar-suscribir {#publish-subscribe-oracles} + +Un servicio de oráculo basado en un mecanismo de publicación-suscripción (publish-subscribe) expone un "feed de datos" que otros contratos pueden leer regularmente para obtener información. En este caso se espera que los datos cambien frecuentemente, por lo que los contratos de los clientes deben estar atentos a las actualizaciones de los datos en el almacenamiento del oráculo. Un excelente ejemplo es un oráculo que provee información sobre el último precio de ETH-USD a los usuarios. + +### Oráculos solicitud-respuesta {#request-response-oracles} + +Una configuración de solicitud-respuesta permite que el contrato del cliente solicite datos arbitrarios distintos de los proporcionados por un oráculo publicación-suscripción. Los oráculos de solicitud-respuesta son ideales en las siguientes condiciones: + +- El conjunto de datos es demasiado grande para guardarse en el almacenamiento de un contrato inteligente. + +- Los usuarios solo necesitarán un pequeña parte de los datos en cualquier momento. + +Aunque son más complejos que los modelos de publicación-suscripción, los oráculos del tipo solicitud-respuesta son basicamente lo que describimos en la sección anterior. El oráculo tendrá un componente en la cadena que recibe una solicitud de datos y la pasa a un nodo fuera de la cadena para procesarla. + +Los usuarios que inician la consulta de datos deben cubrir el costo de recuparar la información de la fuente fuera de la cadena. El contrato del cliente también debe de proporcionar fondos para cubrir los costos del gas incurridos por el contrato del oráculo para devolver la respuesta a través de la función callback especificada en la solicitud. + +## Tipos de oráculos {#types-of-oracles} + +### Oráculos centralizados {#centralized-oracles} + +Un oráculo centralizado está controlado por una sola entidad responsable de agregar información fuera de la cadena y actualizar los datos del oráculo según se solicite. Los oráculos centralizados son eficientes, ya que se basan en una única fuente de verdad. Incluso podrián ser preferibles en los casos en que el propietario publique conjuntos de datos patentados directamente con una firma ampliamente aceptada. Sin embargo, el uso de un oráculo centralizado implica varios problemas. + +#### Bajas garantías de corrección {#low-correctness-guarantees} + +Con los oráculos centralizados, no hay forma de confirmar si la información proporcionada es correcta o no. El proveedor del oráculo puede tener "reputación", pero eso no elimina la posibilidad de que alguien se vuelva deshonesto o que un hacker manipule el sistema. Si el oráculo se corrompe, los contratos inteligentes se ejecutarán en función de datos incorrectos. + +#### Poca disponibilidad {#poor-availability} + +No se garantiza que los oráculos centralizados siempre hagan que los datos fuera de la cadena estén disponibles para otros contratos inteligentes. Si el proveedor decide apagar el servicio o un hacker secuestra el componente fuera de la cadena del oráculo, su contrato inteligente corre el riesgo de sufrir un ataque de negación de servicio (DoS). + +#### Mala compatibilidad con incentivos {#poor-incentive-compatibility} + +Los oráculos centralizados a menudo tienen incentivos mal diseñados o inexistentes para que el proveedor de datos envíe información precisa e inalterada. Pagar al oráculo por sus servicios puede alentar un comportamiento honesto, pero esto puede no ser suficiente. En vistas de que los contratos inteligentes controlan enormes cantidades de valor, la recompensa por manipular los datos de oráculo es mayor que nunca. + +### Oráculos descentralizados {#decentralized-oracles} + +Los oráculos descentralizados están diseñados para superar las limitaciones de los oráculos centralizados mediante la eliminación de puntos únicos de falla. Un servicio de oráculo descentralizado consta de múltiples participantes en una red entre pares que forman un consenso sobre datos fuera de la cadena antes de enviarlos a un contrato inteligente. + +Un oráculo descentralizado debería (idealmente) no tener permiso, no necesitar confianza y estar libre de la administración de una parte central; en realidad, la descentralización entre los oráculos está en un espectro. Existen redes de oráculos semidescentralizadas en las que cualquiera puede participar, pero con un "propietario" que aprueba y elimina nodos en función del rendimiento histórico. Tambien existen redes de oráculos totalmente descentralizadas: por lo general, se ejecutan como cadenas de bloques independientes y tienen mecanismos de consenso definidos para coordinar nodos y castigar el mal comportamiento. + +El uso de oráculos descentralizados tiene los siguientes beneficios: + +### Altas garantías de corrección {#high-correctness-guarantees} + +Los oráculos descentralizados intentan lograr la corrección de los datos utilizando diferentes enfoques. Esto incluye el uso de pruebas que acrediten la autenticidad y la integridad de la información devuelta y el requisito de que varias entidades acuerden colectivamente la validez de los datos fuera de la cadena. + +#### Pruebas de autenticidad {#authenticity-proofs} + +Las pruebas de autenticidad son mecanismos criptográficos que permiten la verificación independiente de la información recuperada de fuentes externas. Estas pruebas pueden validar la fuente de la información y detectar posibles alteraciones en los datos despues de la recuperación. + +Ejemplos de pruebas de autenticidad incluyen: + +**Pruebas de Seguridad de la Capa de Transporte (TLS)**: Los nodos de oráculo a menudo recuperan datos de fuentes externas mediante una conexión HTTP segura basada en el protocolo de Seguridad de la Capa de Transporte (TLS). Algunos oráculos descentralizados utilizan pruebas de autenticidad para verificar las sesiones TLS (es decir, confirmar el intercambio de información entre un nodo y un servidor específico) y confirmar que el contenido de la sesión no se haya alterado. + +**Certificaciones de Entorno de Ejecución de Confianza (TEE)**: Un [entorno de ejecución de confianza](https://en.wikipedia.org/wiki/Trusted_execution_environment) (TEE) es un entorno computacional que está aislado de los procesos operativos de su sistema host. Los TEE garantizan que cualquier código de aplicación o datos almacenados/utilizados en el entorno informático conserven la integridad, la confidencialidad y la inmutabilidad. Los usuarios tambien pueden generar una certificación para demostrar que una instancia de la aplicación se está corriendo dentro del entorno de ejecución de confianza. + +Ciertas clases de oráculos descentralizados requieren que los operadores de nodos de oráculo proporcionen certificaciones de TEE. Esto le confirma a un usuario que el operador del nodo está ejecutando una instancia del oráculo del cliente en un entrono de ejecución confiable. Los TEE evitan que los procesos externos alteren o lean el código y los datos de una aplicación; por lo tanto, esas certificaciones prueban que el nodo del oráculo ha mantenido la información intacta y confidencial. + +#### Validación de información basada en el consenso {#consensus-based-validation-of-information} + +Los oráculos centralizados se basan en una única fuente de verdad cuando proporcionan datos a contratos inteligentes, lo que introduce la posibilidad de publicar información inexacta. Los oráculos descentralizados resuelven este problema al confiar en múltiples nodos de oráculo para consultar información fuera de la cadena. Al comparar datos de múltiples fuentes, los oráculos descentralizados reducen el riesgo de pasar información no válida a los contratos en cadena. + +Los oráculos descentralizados, sin embargo, deben de lidiar con las discrepancias en la información recuperada de múltiples fuentes fuera de la cadena. Para minimizar las diferencias en la información y garantizar que los datos pasados al contrato del oráculo reflejen la opinión coletiva de los nodos de oráculo, los oráculos descentralizados utilizan los siguientes mecanismos: + +##### Votar/apostar por la precisión de los datos + +Algunas redes de oráculos descentralizados requieren que los participantes voten o apuesten por la precisión de las respuestas a las consultas de datos (por ejemplo., "¿Quién ganó las elecciones estadounidenses de 2020?") utilizando el token nativo de la red. Luego, un protocolo de agregación agrega los votos, las apuestas y toma la respuesta apoyada por la mayoría como la válida. + +Los nodos cuyas respuestas se desvían de la respuesta mayoritaria son penalizados con la distribución de sus tokens a otros que proporcionen valores más correctos. Obligar a los nodos a proporcionar un vínculo antes de proporcionar datos incentiva las respuestas honestas, ya que se supone que son actores económicos racionales que intentan maximizar los rendimientos. + +La apuesta/votacion también protege a los oráculos descentralizados de los "Sybil attacks", donde actores maliciosos crean múltiples identidades para jugar con el sistema de consenso. Sin embargo, apostar no puede prevenir "la carga gratuita" (nodos de oráculos que copian datos de otros) y "la validación diferida" (o "lazy validation", nodos de oráculos que siguen a la mayoría sin verificar la información ellos mismos). + +##### Mecanismos de punto de Schelling + +[Punto de Shelling]() es un concepto de la teoría de juegos que asume que múltiples entidades siempre darán por defecto una solución común a un problema en ausencia de cualquier comunicación. Los mecanismos de punto de Shelling se utilizan a menudo en redes de oráculos descentralizados para permitir que los nodos lleguen a un consenso sobre las respuestas a las solicitudes de datos. + +Un ejemplo reciente es [SchellingCoin](https://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/), una propuesta de data feed donde los participantes envían respuestas a preguntas "scalar" (preguntas cuyas respuestas son descritas por magnitud, ejemplo., "Cuál es el precio del ETH?"), junto con un depósito. Los usuarios que proporcionen valores entre el [percentil](https://en.wikipedia.org/wiki/Percentile) 25 y 75 son recompensados, mientras que aquellos cuyos valores se desvíen de la media son penalizados. + +Si bien SchellingCon no existe en la actualidad, un número de oraculos descentralizados —principalmente los [Oráculos del Protocolo Maker](https://docs.makerdao.com/smart-contract-modules/oracle-module)— usan el mecanismo de punto de Schelling para mejorar la precisión los datos de los oráculos. Cada oráculo Maker consta de una red de nodos P2P fuera de la cadena ("relayers" y "feeds") que suministran precios de mercado para activos colaterales y un contrato "Mediador" en cadena que calcula el promedio de todos los valores proporcionados. Una vez que el periodo de atraso especificado termina, el valor medio se vuelve el nuevo precio de referencia del activo asociado. + +Otros ejemplos de oráculos que usan el mecanismo de punto de Schelling serían [ChainLink Off-Chain Reporting](https://docs.chain.link/docs/off-chain-reporting/) y Witnet. En ambos sistemas, las respuestas de los nodos de oráculo en la red peer-to-peef son agregados en un único valor agregado, como una media o promedio. Los nodos son recompensados o castigados de acuerdo con la medida en que sus respuestas se alinean o se desvían del valor agregado. + +Los mecanismos de punto de Schelling son atractivos porque minimizan la huella en la cadena (solo se necesita enviar una transacción), al tiempo que garantizan la descentralización. Esta última es posible porque los nodos deben firmar la lista de respuestas enviadas antes de que se introduzcan en el algoritmo que produce el valor medio/mediana. + +### Disponibilidad {#availability} + +Los servicios descentralizados de oráculos garantizan una alta disponibilidad de los datos fuera de la cadena para los contratos inteligentes. Esto se logra descentralizando tanto la fuente de información fuera de la cadena como los nodos responsables de transferir la información en la cadena. + +Esto garantiza la tolerancia a fallas, ya que el contrato de oráculo puede confiar en múltiples nodos (que también usan múltiples fuentes de datos) para ejecutar consultas de otros contratos. La descentralización a nivel de la fuente _y_ de nodo-operador es crucial: una red de nodos de oráculo que sirvan información recuperada de la misma fuente se encontrará con el mismo problema que un oráculo centralizado. + +También es posible que los oráculos basados en participación puedan reducir los operadores de nodos que no responden rápidamente a las solicitudes de datos. Esto incentiva significativamente a los nodos de oráculo a invertir en infraestructura tolerante a fallas y a proporcionar datos de manera oportuna. + +### Buena compatibilidad con incentivos {#good-incentive-compatibility} + +Los oráculos descentralizados implementan varios diseños de incentivos para evitar el comportamiento [Bizantino](https://en.wikipedia.org/wiki/Byzantine_fault) entre los nodos del oráculo. Específicamente, logran _atribuibilidad_ y _responsabilidad_: + +1. A menudo se requiere que los nodos de oráculo descentralizados firmen los datos que proporcionan en respuesta a las solicitudes de datos. Esta información ayuda a evaluar el rendimiento histórico de los nodos de oráculo, de modo que los usuarios pueden filtrar los nodos de oráculo poco fiables al hacer solicitudes de datos. Un ejemplo es el [Sistema de Reputación Algorítmica de Witnet](https://docs.witnet.io/intro/about/architecture#algorithmic-reputation-system). + +2. Los oráculos descentralizados, como se explicó anteriormente, pueden requerir que los nodos pongan una participación o apuesta en su confianza en la veracidad de los datos que envían. Si la reclamación se comprueba, esta participación se puede devolver junto con recompensas por un servicio honesto. Pero también se puede acuchillar en caso de que la información sea incorrecta, lo que hace que se tenga responsabilidad. + +## Aplicaciones de los oráculos en los contratos inteligentes {#applications-of-oracles-in-smart-contracts} + +Los siguientes son casos de uso comunes de oráculos en Ethereum: + +### Recuperación de datos financieros {#retrieving-financial-data} + +Las aplicaciones de [finanzas descentralizadas](/defi/) (DeFi) permiten el préstamo, la toma de préstamos y el comercio de activos entre pares. Esto a menudo requiere obtener información relacionada con las finanzas, incluidos los datos del tipo de cambio (para calcular el valor fiduciario de las criptomonedas o comparar los precios de dos tokens) y los datos de los mercados de capitales (para calcular el valor de los activos tokenizados, como el oro o el dólar estadounidense). + +Si planea crear un protocolo de préstamo DeFi, por ejemplo, tendrá que consultar los precios vigentes del mercado de los activos (por ejemplo, ETH) depositados como colateral o garantía. Esto es para que su contrato inteligente pueda determinar el valor de los activos colaterales y cuánto se puede pedir prestado al sistema. + +"Oráculos de precios" populares (como a menudo se los llama) en DeFi incluyen Chainlink Price Feeds, [Open Price Feed](https://compound.finance/docs/prices) de Compound Protocol, [Time-Weighted Average Prices (TWAPs)](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) de Uniswap y [Maker Oracles](https://docs.makerdao.com/smart-contract-modules/oracle-module). Es recomendable entender las limitaciones de estos oráculos de precios antes de integrarlos en su proyecto. Este [artículo](https://blog.openzeppelin.com/secure-smart-contract-guidelines-the-dangers-of-price-oracles/) proporciona un análisis detallado de lo que se debe tener en cuenta cuando se planea utilizar cualquiera de los oráculos de precio mencionados. + +A continuación se muestra un ejemplo de cómo puede recuperar el último precio de ETH en su contrato inteligente utilizando un feed de precios de Chainlink: + +```solidity +pragma solidity ^0.6.7; + +import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol"; + +contract PriceConsumerV3 { + + AggregatorV3Interface internal priceFeed; + + /** + * Network: Kovan + * Aggregator: ETH/USD + * Address: 0x9326BFA02ADD2366b30bacB125260Af641031331 + */ + constructor() public { + priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331); + } + + /** + * Returns the latest price + */ + function getLatestPrice() public view returns (int) { + ( + uint80 roundID, + int price, + uint startedAt, + uint timeStamp, + uint80 answeredInRound + ) = priceFeed.latestRoundData(); + return price; + } +} +``` + +### Generar aleatoriedad verificable {#generating-verifiable-randomness} + +Ciertas aplicaciones de cadena de bloques, como los juegos basados en la cadena de bloques o los esquemas de lotería, requieren un alto nivel de imprevisibilidad y aleatoriedad para funcionar de manera efectiva. No obstante, la ejecución determinista de las cadenas de bloques elimina cualquier fuente de aleatoriedad. + +El enfoque habitual es utilizar funciones criptográficas pseudoaleatorias, como `blockhash`, pero esto es propenso a la [manipulación por parte de otros actores](https://ethereum.stackexchange.com/questions/3140/risk-of-using-blockhash-other-miners-preventing-attack#:~:text=So%20while%20the%20miners%20can,to%20one%20of%20the%20players.), a saber, mineros que resuelven el algoritmo de prueba de trabajo. Además, el [cambio de Ethereum a prueba de participación](/roadmap/merge/) significa que los desarrolladores ya no pueden confiar en `blockhash` para la aleatoriedad en la cadena (sin embargo, el mecanismo [RANDAO](https://eth2book.info/altair/part2/building_blocks/randomness) de la Cadena de Baliza proporciona una fuente alternativa de aleatoriedad). + +Es posible generar el valor aleatorio fuera de la cadena y enviarlo en la cadena, pero hacerlo impone altos requisitos de confianza a los usuarios. Deben creer que el valor se generó realmente a través de mecanismos impredecibles y no se alteró en tránsito. + +Los oráculos diseñados para el cálculo fuera de la cadena resuelven este problema generando de forma segura resultados aleatorios fuera de la cadena que transmiten en cadena junto con pruebas criptográficas que dan fe de la imprevisibilidad del proceso. Un ejemplo es [Chainlink VRF](https://docs.chain.link/docs/chainlink-vrf/) (función aleatoria verificable), que es un generador de números aleatorios (RNG) demostrablemente justo y a prueba de manipulaciones útil para crear contratos inteligentes confiables para aplicaciones que dependen de resultados impredecibles. Otro ejemplo es [API3 QRNG](https://docs.api3.org/explore/qrng/), que sirve la generación de números aleatorios cuánticos (QRNG); es un método público de RNG Web3 basado en fenómenos cuánticos, servido con la cortesía de la Universidad Nacional de Australia (ANU). + +### Obtener resultados para los eventos {#getting-outcomes-for-events} + +Con los oráculos, crear contratos inteligentes que respondan a eventos del mundo real es fácil. Los servicios de oráculo lo hacen posible, ya que permiten que los contratos se conecten a API externas a través de componentes fuera de la cadena y consuman información de esas fuentes de datos. Por ejemplo, la dapp de predicción mencionada anteriormente puede solicitar a un oráculo que muestre resultados de las elecciones de una fuente fuera de la cadena confiable (por ejemplo, Associated Press). + +El uso de oráculos para recuperar datos basados en resultados del mundo real permite otros casos de uso novedosos, incluidas las aplicaciones de seguros descentralizadas. Un contrato inteligente de seguros que pague a los usuarios necesitará información precisa (por ejemplo, datos meteorológicos, informes de desastres, etc.) para funcionar de manera efectiva. + +### Automatización de contratos inteligentes {#automating-smart-contracts} + +Contrariamente a las descripciones populares, los contratos inteligentes no se ejecutan automáticamente: una cuenta de propiedad externa (EOA), u otra cuenta de contrato, debe activar las funciones correctas para ejecutar el código del contrato. En la mayoría de los casos, la mayor parte de las funciones del contrato son públicas y pueden ser invocadas por las EOA y otros contratos. + +Pero también hay _funciones privadas_ dentro de un contrato que son inaccesibles para otros; estas suelen ser críticas para la funcionalidad general de la dapp. Ejemplos potenciales incluyen una función `mintERC721Token()` que mintee periódicamente nuevos NFT para los usuarios, una función para otorgar pagos en un mercado de predicción o una función para desbloquear tokens apostados en un DEX. + +Los desarrolladores tendrán que activar dichas funciones a diferentes intervalos para mantener el funcionamiento de la aplicación. No obstante, esto podría llevar a que se pierdan más horas en tareas mundanas para los desarrolladores, por lo que la automatización de la ejecución de contratos inteligentes es atractiva. + +Algunas redes de oráculo descentralizadas ofrecen servicios de automatización que permiten que los nodos de oráculo fuera de la cadena activen funciones de contratos inteligentes de acuerdo con parámetros definidos por el usuario. Por lo general, esto requiere "registrar" el contrato de destino en el servicio de oráculo, proporcionar fondos para pagar al operador del oráculo y especificar las condiciones o los tiempos para activar el contrato. + +Un ejemplo es la [Keeper Network](https://chain.link/keepers) de Chainlink, que proporciona opciones para que los contratos inteligentes externalicen tareas de mantenimiento regulares de una manera minimizada y descentralizada. Lea la [documentación oficial de Keeper](https://docs.chain.link/docs/chainlink-keepers/introduction/) para obtener información sobre cómo hacer que su contrato sea compatible con Keeper y usar el servicio Upkeep. + +## Uso de oráculos de cadena de bloques {#use-blockchain-oracles} + +Hay varias aplicaciones de oráculo que puede integrar en su dapp de Ethereum: + +**[Chainlink:](https://chain.link/)** _Las redes de oráculos descentralizadas de Chainlink proporcionan entradas, salidas y cálculos a prueba de manipulaciones para brindar respaldo a contratos inteligentes avanzados en cualquier cadena de bloques. _ + +**[Witnet:](https://witnet.io/)** _Witnet es un oráculo sin permiso, descentralizado y resistente a la censura que ayuda a los contratos inteligentes a reaccionar a eventos del mundo real con sólidas garantías criptoeconómicas. _ + +**[UMA Oracle:](https://uma.xyz)** _El oráculo optimista de UMA permite que los contratos inteligentes envíen y reciban rápidamente cualquier tipo de datos para diferentes aplicaciones, incluidos los seguros, los derivados financieros y los mercados de predicción. _ + +**[Tellor:](https://tellor.io/)** _Tellor es un protocolo de oráculo transparente y sin permisos para que su contrato inteligente obtenga fácilmente cualquier dato cuando lo necesite. _ + +**[Band Protocol:](https://bandprotocol.com/)** _El Band Protocol es una plataforma de oráculo de datos multicadena que agrega y conecta datos del mundo real y API con contratos inteligentes. _ + +**[Paralink:](https://paralink.network/)** _Paralink proporciona una plataforma de oráculos de código abierto y descentralizada para contratos inteligentes que corran en Ethereum y otras cadenas de bloques populares._ + +**[Pyth Network:](https://pyth.network/)** _La red Pyth es una red de oráculos financieros first-party diseñada para publicar datos continuos del mundo real en cadena en un entorno resistente a la manipulación, descentralizado y autosostenible. _ + +**[API3 DAO:](https://www.api3.org/)** _API3 DAO ofrece soluciones de oráculo first-party que ofrecen mayor transparencia, seguridad y escalabilidad de la fuente en una solución descentralizada para contratos inteligentes._ ## Para profundizar sobre el tema {#further-reading} **Artículos** -- [¿Qué es un oráculo de cadena de bloques?](https://chain.link/education/blockchain-oracles) - _Chainlink_ -- [¿Qué es un oráculo de cadena de bloques?](https://betterprogramming.pub/what-is-a-blockchain-oracle-f5ccab8dbd72) - _Patrick Collins_ -- [Oráculos descentralizados: descripción completa](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) – _Julien Thevenard_ -- [Implementación de un oráculo de cadena de bloques en Ethereum](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) – _Pedro Costa_ -- [¿Por qué los contratos inteligentes no pueden hacer llamadas a API?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) - _StackExchange_ -- [¿Por qué necesitamos oráculos descentralizados](https://newsletter.banklesshq.com/p/why-we-need-decentralized-oracles) - _Bankless_ -- [Así que quiere usar un oráculo de precios](https://samczsun.com/so-you-want-to-use-a-price-oracle/) - _samczsun_ +- [¿Qué es un oráculo de cadena de bloques?](https://chain.link/education/blockchain-oracles) — _Chainlink_ +- [¿Qué es un oráculo de cadena de bloques?](https://betterprogramming.pub/what-is-a-blockchain-oracle-f5ccab8dbd72) — _Patrick Collins_ +- [Oráculos descentralizados: descripción detallada](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) — _Julien Thevenard_ +- [Implementación de un oráculo de cadena de bloques en Ethereum](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) — _Pedro Costa_ +- [¿Por qué los contratos inteligentes no pueden hacer llamadas de API?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) — _StackExchange_ +- [¿Por qué necesitamos oráculos descentralizados](https://newsletter.banklesshq.com/p/why-we-need-decentralized-oracles) — _Bankless_ +- [Así que quiere usar un oráculo de precios](https://samczsun.com/so-you-want-to-use-a-price-oracle/) — _samczsun_ -**Videos** +**Vídeos** -- [Oráculos y la expansión de la utilidad de la cadena de bloques](https://youtu.be/BVUZpWa8vpw) -_Real Vision Finance_ +- [Oráculos y la expansión de la utilidad de la cadena de bloques](https://youtu.be/BVUZpWa8vpw) — _Real Vision Finance_ +- [Las diferencias entre los oráculos de primera parte y los de terceros](https://blockchainoraclesummit.io/first-party-vs-third-party-oracles/) — _Blockchain Oracle Summit_ **Tutoriales** -- [Como obtener el precio actual de Ethereum en Solidity](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) - _Chainlink_ +- [¿Cómo obtener el precio actual de Ethereum en Solidity?](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) — _Chainlink_ + +**Proyectos de ejemplo** + +- [Proyecto de inicio completo de Chainlink para Ethereum en Solidity](https://github.com/hackbg/chainlink-fullstack) — _HackBG_ diff --git a/src/content/translations/es/developers/docs/programming-languages/dart/index.md b/src/content/translations/es/developers/docs/programming-languages/dart/index.md new file mode 100644 index 00000000000..e1f2df929f5 --- /dev/null +++ b/src/content/translations/es/developers/docs/programming-languages/dart/index.md @@ -0,0 +1,28 @@ +--- +title: Ethereum para desarrolladores de Dart +description: Aprenda a programar para Ethereum usando el lenguaje Dart +lang: es +incomplete: true +--- + +## Por dónde empezar con los contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity} + +## Tutoriales {#tutorials} + +- [Flutter and Blockchain – Hello World Dapp](https://www.geeksforgeeks.org/flutter-and-blockchain-hello-world-dapp/) le muestra los pasos para comenzar: + 1. Cómo instalar el [conjunto de herramientas de desarrollo de Truffle](https://www.trufflesuite.com/) + 2. Cómo escribir un contrato inteligente en [Solidity](https://soliditylang.org/) + 3. Cómo escribir una interfaz de usuario en Dart +- [Crear una dapp móvil con Flutter](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a) es mucho más breve, lo que puede ser mejor si ya sabe lo básico. +- Si prefiere aprender mirando un video, puede ver [Construya su primera app de cadena de bloques en Flutter](https://www.youtube.com/watch?v=3Eeh3pJ6PeA), que dura una hora. +- Si es impaciente, tal vez prefiera [Crear una app decentralizada de cadena de bloques con Flutter y Dart en Ethereum](https://www.youtube.com/watch?v=jaMFEOCq_1s), que dura solo veinte minutos. +- [Integrar MetaMask en aplicación de Flutter](https://youtu.be/8qzVDje3IWk): este video corto le enseña los pasos para integrar MetaMask en sus aplicaciones de Flutter. + +## Trabajar con clientes de Ethereum {#working-with-ethereum-clients} + +Puede usar Ethereum para crear aplicaciones decentralizadas (o "dapps") que utilicen los beneficios de las criptomonedas y la tecnología de cadena de bloques. Al momento, hay al menos dos bibliotecas actualizadas para que Dart a fin de usar la [API de JSON-RPC](/developers/docs/apis/json-rpc/) para Ethereum. + +1. [Web3dart de simonbutler.eu](https://pub.dev/packages/web3dart) +1. [Ethereum 5.0.0 de darticulate.com](https://pub.dev/packages/ethereum) + +También hay bibliotecas adicionales que le permiten manipular direcciones de Ethereum específicas, o que le permiten recuperar precios de diferentes criptomonedas. [Puede ver la lista completa aquí](https://pub.dev/dart/packages?q=ethereum). diff --git a/src/content/translations/es/developers/docs/programming-languages/delphi/index.md b/src/content/translations/es/developers/docs/programming-languages/delphi/index.md index 47bc7de1471..56885d21a30 100644 --- a/src/content/translations/es/developers/docs/programming-languages/delphi/index.md +++ b/src/content/translations/es/developers/docs/programming-languages/delphi/index.md @@ -15,7 +15,7 @@ Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprov ¡Construye aplicaciones descentralizadas sobre Ethereum e interactúa con contratos inteligentes usando el lenguaje de programación Delphi! -## Comenzar con los contratos inteligentes y el lenguaje de Solidity {#getting-started-with-smart-contracts-and-the-solidity-language} +## Empezando con contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-the-solidity-language} **De los primeros pasos para integrar Delphi con Ethereum** @@ -32,7 +32,7 @@ Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprov - [¿Qué es Delphereum?](https://github.com/svanas/delphereum/blob/master/README.md) - [Conectando a Delphi a un blockchain local (en memoria)](https://medium.com/@svanas/connecting-delphi-to-a-local-in-memory-blockchain-9a1512d6c5b0) -- [Conectando Delphi a la red principal de Ethereum](https://medium.com/@svanas/connecting-delphi-to-the-ethereum-main-net-5faf1feffd83) +- [Conectar Delphi a la red principal de Ethereum](https://medium.com/@svanas/connecting-delphi-to-the-ethereum-main-net-5faf1feffd83) - [Conectando Delphi a los contratos Inteligentes](https://medium.com/@svanas/connecting-delphi-to-smart-contracts-3146b12803a1) **¿Deseas omitir la configuración por ahora y pasar directamente a los ejemplos?** @@ -40,7 +40,7 @@ Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprov - [Un contrato inteligente de 3 minutos y Delphi: Parte 1](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-61d998571d) - [Un contrato inteligente de 3 minutos y Delphi: Parte 2](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-part-2-446925faa47b) -## Artículos de nivel intermedio {#intermediate-articles} +## Artículos intermedios {#intermediate-articles} - [Generando una firma de mensaje firmado por Ethereum en Delphi](https://medium.com/@svanas/generating-an-ethereum-signed-message-signature-in-delphi-75661ce5031b) - [Transferir ether con Delphi](https://medium.com/@svanas/transferring-ether-with-delphi-b5f24b1a98a4) @@ -50,5 +50,7 @@ Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprov - [Delphi y Ethereum Name Service (ENS)](https://medium.com/@svanas/delphi-and-ethereum-name-service-ens-4443cd278af7) - [QuikNode, Ethereum y Delphi](https://medium.com/@svanas/quiknode-ethereum-and-delphi-f7bfc9671c23) +- [Delphi y el Ethereum Dark Forest](https://svanas.medium.com/delphi-and-the-ethereum-dark-forest-5b430da3ad93) +- [Intercambie un token por otro en Delphi](https://svanas.medium.com/swap-one-token-for-another-in-delphi-bcb999c47f7) -¿Buscas más recursos? Revisa [ethereum.org/developers](/developers/). +¿Buscas más recursos? Visita [ethereum.org/developers.](/developers/). diff --git a/src/content/translations/es/developers/docs/programming-languages/dot-net/index.md b/src/content/translations/es/developers/docs/programming-languages/dot-net/index.md index b685f2236bd..392cb6aca68 100644 --- a/src/content/translations/es/developers/docs/programming-languages/dot-net/index.md +++ b/src/content/translations/es/developers/docs/programming-languages/dot-net/index.md @@ -11,7 +11,7 @@ Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprov Construye aplicaciones descentralizadas sobre Ethereum e interactúa con contratos inteligentes usando herramientas y lenguajes del stack de tecnología de Microsoft , compatibles con C#, # Visual Basic .NET, F#, sobre herramientas como VSCode y Visual Studio, a través de .NET Framework/.NET Core/.NET Standard. Implementa una blockchain de Ethereum en Azure mediante Microsoft Azure Blockchain en tan solo unos minutos. ¡Trae el amor de .NET a Ethereum! -## Comenzar con los contratos inteligentes y el lenguaje de Solidity {#getting-started-with-smart-contracts-and-the-solidity-language} +## Empezando con contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-the-solidity-language} **Da los primeros pasos para integrar .NET con Ethereum** @@ -29,7 +29,7 @@ Construye aplicaciones descentralizadas sobre Ethereum e interactúa con contrat - [Nethereum, Iniciando](https://docs.nethereum.com/en/latest/getting-started/) - [Instalación de Visual Studio Code para Solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) - [Un flujo de trabajo para desarrolladores de .NET que crean y utilizan contratos inteligentes de Ethereum](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2) -- [Integración de contratos inteligentes con Nethereum](https://kauri.io/#collections/getting%20started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereum) +- [Integración de contratos inteligentes con Nethereum](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm) - [Creación de una interfaz entre .NET y contratos inteligentes Ethereum de blockchain mediante Nethereum](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933), también en [中文版](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1) - [Nethereum: Una biblioteca de integración de .NET de código abierto para blockchain](https://kauri.io/#collections/a%20hackathon%20survival%20guide/nethereum-an-open-source-.net-integration-library/) - [Escribir transacciones de Ethereum en la base de datos de SQL mediante Nethereum](https://medium.com/coinmonks/writing-ethereum-transactions-to-sql-database-using-nethereum-fd94e0e4fa36) @@ -62,23 +62,23 @@ Construye aplicaciones descentralizadas sobre Ethereum e interactúa con contrat - [Nethereum.DappHybrid](https://github.com/Nethereum/Nethereum.DappHybrid) - [Arquitectura de referencia de back-end de Ujo Nethereum](https://docs.nethereum.com/en/latest/nethereum-ujo-backend-sample/) -## Proyectos de .NET, herramientas y otras cosas divertidas {#dot-net-projects-tools-and-other-fun-stuff} +## Proyectos, herramientas y otras cosas divertidas de .NET {#dot-net-projects-tools-and-other-fun-stuff} -- [Nethereum Playground](http://playground.nethereum.com/): _Compila, crea y ejecuta fragmentos de código de Nethereum en el navegador_ -- [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor): _Generador de código de Nethereum con IU en Blazor_ -- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor): _Un explorador de blockchain ligero de .NET Wasm SPA y una cartera sencilla_ -- [Wonka Business Rules Engine](https://docs.nethereum.com/en/latest/wonka/): _Un motor de reglas de negocio (para ambas plataformas .NET y Ethereum) que está inherentemente impulsado por metadatos_ -- [Nethermind](https://github.com/NethermindEth/nethermind): _Un cliente de .NET Core Ethereum para Linux, Windows, MacOs_ +- [Nethereum Playground:](http://playground.nethereum.com/) _Compila, crea y ejecuta fragmentos de código de Nethereum en el navegador_ +- [Nethereum Codegen Blazor:](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) _Generador de código de Nethereum con IU en Blazor_ +- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) : _Un explorador de blockchain ligero de .NET Wasm SPA y una cartera sencilla_ +- [Wonka Business Rules Engine:](https://docs.nethereum.com/en/latest/wonka/)_ Un motor de reglas de negocio (para ambas plataformas .NET y Ethereum) que está inherentemente impulsado por metadatos_ +- [Nethermind:](https://github.com/NethermindEth/nethermind) _Cliente .NET Core Ethereum para Linux, Windows, MacOS_ - [eth-utils](https://github.com/ethereum/eth-utils/): _Funciones de utilidad para trabajar con bases de código relacionadas con Ethereum_ -- [TestChains](https://github.com/Nethereum/TestChains): _DevChains de .NET preconfiguradas para responder rápidamente (PoA)_ +- [TestChains:](https://github.com/Nethereum/TestChains) _DevChains de .NET preconfiguradas para responder rápidamente (PoA)_ -¿Buscas más recursos? Echa un vistazo a [ethereum.org/developers.](/developers/). +¿Buscas más recursos? Visita [ethereum.org/developers.](/developers/). ## Colaboradores de la comunidad de .NET {#dot-net-community-contributors} -En Nethereum, utilizamos [Gitter](https://gitter.im/Nethereum/Nethereum), una plataforma en la que los usuarios pueden preguntar o responder preguntas, obtener ayuda o simplemente relajarse. Siéntete libre de hacer un PR o abrir una incidencia en el [repositorio de GitHub de Nethereum](https://github.com/Nethereum), o simplemente navega por los muchos proyectos paralelos/de muestra que tenemos. ¡También puedes encontrarnos en [Discord](https://discord.gg/jQPrR58FxX)! +En Nethereum, utilizamos [Gitter](https://gitter.im/Nethereum/Nethereum), una plataforma en la que los usuarios pueden preguntar o responder preguntas, obtener ayuda o simplemente relajarse. Siéntase libre de hacer una PR o abrir un problema en el [repositorio de GitHub de Nethereum](https://github.com/Nethereum), o simplemente navegue por los muchos proyectos laterales/de muestra que tenemos. ¡También puedes encontrarnos en [Discord](https://discord.gg/jQPrR58FxX)! -En Nethermind, pongamonos en contacto con a través de [Gitter](https://gitter.im/nethermindeth/nethermind). En el caso de las PR e incidencias, revisa el [repositorio de GitHub de Nethermind](https://github.com/NethermindEth/nethermind). +Si es nuevo en Nethermind y necesita ayuda para comenzar, únase a nuestro [Discord](http://discord.gg/PaCMRFdvWT). Nuestros desarrolladores están a su disposición para responder sus preguntas. No dude en abrir una PR o en plantear cualquier problema en el [repositorio de GitHub de Nethermind](https://github.com/NethermindEth/nethermind). ## Otras listas adicionales {#other-aggregated-lists} diff --git a/src/content/translations/es/developers/docs/programming-languages/golang/index.md b/src/content/translations/es/developers/docs/programming-languages/golang/index.md index 9c7d961431d..dc143489638 100644 --- a/src/content/translations/es/developers/docs/programming-languages/golang/index.md +++ b/src/content/translations/es/developers/docs/programming-languages/golang/index.md @@ -9,7 +9,7 @@ incomplete: true 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. -## Comenzar con los contratos inteligentes y el lenguaje de Solidity {#getting-started-with-smart-contracts-and-solidity} +## Empezando con contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity} **Da los primeros pasos para integrar Go con Ethereum** @@ -33,28 +33,28 @@ Usa Ethereum para crear aplicaciones descentralizadas (o "dapps"). Estas dapps p ## Artículos y documentos de nivel intermedio {#intermediate-articles-and-docs} - [Documentación Ethereum de Go](https://geth.ethereum.org/docs/): _La documentación oficial para Ethereum Golang_ -- [Guía del Programador Erigon](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md): _Guía ilustrada que incluye el árbol de estado, multi-pruebas y procesamiento de transacciones_ -- [Erigon and Stateless Ethereum](https://youtu.be/3-Mn7OckSus?t=394): _Conferencia de la Comunidad Ethereum (EthCC 3)_ -- [Erigon: Optimizando clientes de Ethereum](https://www.youtube.com/watch?v=CSpc1vZQW2Q) - _Devcon 2018 4_ +- [Guía del programador de Erigon:](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md) _Guía ilustrada que incluye el árbol de estado, multipruebas y procesamiento de transacciones_ +- [Erigon y Ethereum sin estado:](https://youtu.be/3-Mn7OckSus?t=394) _Conferencia de la Comunidad de Ethereum 2020 (EthCC 3)_ +- [Erigon: optimizar clientes Ethereum](https://www.youtube.com/watch?v=CSpc1vZQW2Q) _Devcon 2018 4_ - [Go Ethereum GoDoc](https://godoc.org/github.com/ethereum/go-ethereum) -- [Crear una dapp en Go con Geth](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/) +- [Crear un dapp en ir con Geth](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/) - [Trabajar con la red privada Ethereum con Golang y Geth](https://myhsts.org/tutorial-learn-how-to-work-with-ethereum-private-network-with-golang-with-geth.php) - [Unidad de prueba de contratos de Solidity en Ethereum con Go](https://medium.com/coinmonks/unit-testing-solidity-contracts-on-ethereum-with-go-3cc924091281) - [Referencia rápida para usar Geth como biblioteca](https://medium.com/coinmonks/web3-go-part-1-31c68c68e20e) -## Patrones de uso avanzado {#advanced-use-patterns} +## Patrones de uso avanzados {#advanced-use-patterns} - [El fondo simulado de GETH](https://kauri.io/#collections/An%20ethereum%20test%20toolkit%20in%20Go/the-geth-simulated-backend/#_top) - [Aplicaciones de Blockchain-as-a-Service que utilizan Ethereum y Quorum](https://blockchain.dcwebmakers.com/blockchain-as-a-service-apps-using-ethereum-and-quorum.html) - [Almacenamiento distribuido IPFS y Swarm en aplicaciones Ethereum Blockchain](https://blockchain.dcwebmakers.com/work-with-distributed-storage-ipfs-and-swarm-in-ethereum.html) - [Clientes móviles: Bibliotecas y nodos Inproc Ethereum](https://github.com/ethereum/go-ethereum/wiki/Mobile-Clients:-Libraries-and-Inproc-Ethereum-Nodes) -- [Dapps nativas: Enlaces de Go a contratos Ethereum](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) +- [Aplicaciones nativas: Bindings de Go para contratos de Ethereum](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) -## Proyectos y Herramientas de Go {#go-projects-and-tools} +## Proyectos y herramientas de Go {#go-projects-and-tools} - [Geth/Go Ethereum](https://github.com/ethereum/go-ethereum): _Implementación oficial en Go del protocolo Ethereum_ - [Análisis de código Go de Ethereum](https://github.com/ZtesoftCS/go-ethereum-code-analysis): _Revisión y análisis del código fuente de Go para Ethereum_ -- [Erigon](https://github.com/ledgerwatch/erigon)_: Derivada más rápida de Go Ethereum_ +- [Erigon:](https://github.com/ledgerwatch/erigon) _Derivado más rápido de Go Ethereum, con un enfoque en nodos de archivo_ - [Golem](https://github.com/golemfactory/golem): _Golem está creando un mercado global orientado al poder de la informática_ - [Quorum](https://github.com/jpmorganchase/quorum): _Una implementación autorizada de Ethereum compatible con la privacidad de datos_ - [Prysm](https://github.com/prysmaticlabs/prysm): _Implementación de Go de Ethereum 'Serenity' 2.0_ @@ -64,8 +64,9 @@ Usa Ethereum para crear aplicaciones descentralizadas (o "dapps"). Estas dapps p - [Cartera Ethereum HD](https://github.com/miguelmota/go-ethereum-hdwallet): _Derivaciones en Go de la cartera Ethereum HD _ - [Multi Geth](https://github.com/multi-geth/multi-geth): _Soporte para muchos tipos de redes Ethereum_ - [Cliente Geth Light](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client): _Implementación Geth del subprotocolo Light Ethereum_ +- [Ethereum Golang SDK:](https://github.com/everFinance/goether) _Implementación simple de billetera Ethereum y utilidades en Golang_ -¿Buscas más recursos? Echa un vistazo a [ethereum.org/developers.](/developers/) +¿Buscas más recursos? Visite [ethereum.org/developers](/developers/). ## Colaboradores de la comunidad de Go {#go-community-contributors} diff --git a/src/content/translations/es/developers/docs/programming-languages/index.md b/src/content/translations/es/developers/docs/programming-languages/index.md index 3bf78311914..e13a903258a 100644 --- a/src/content/translations/es/developers/docs/programming-languages/index.md +++ b/src/content/translations/es/developers/docs/programming-languages/index.md @@ -4,20 +4,26 @@ description: lang: es --- -Una idea errónea común es que los desarrolladores deben escribir contratos inteligentes para construir sobre Ethereum. Esto es falso. Una de las bellezas de la red y la comunidad Ethereum es que puedes [participar](/community/) en cualquier lenguaje de programación. +Un idea equivocada común es que los desarrolladores deben escribir [contratos inteligentes](/developers/docs/smart-contracts/) para poder crear en Ethereum. Esto es falso. Una de las bellezas de la red y la comunidad Ethereum es que puedes [participar](/community/) en cualquier lenguaje de programación. Ethereum y su comunidad abrazan el código abierto. Puedes encontrar proyectos comunitarios (implementaciones de clientes, API, frameworks de desarrollo y herramientas de prueba) en una amplia variedad de idiomas. ## Escoge tu lenguaje {#data} -Selecciona el idioma que desees para encontrar proyectos, recursos y comunidades virtuales: +Seleccione su lenguaje de programación de preferencia para encontrar proyectos, recursos y comunidades virtuales: -- [Ethereum para desarrolladores de Java](/developers/docs/programming-languages/java/) -- [Ethereum para desarrolladores de Python](/developers/docs/programming-languages/python/) -- [Ethereum para desarrolladores de JavaScript](/developers/docs/programming-languages/javascript/) +- [Ethereum para desarrolladores de Dart](/developers/docs/programming-languages/dart/) +- [Ethereum para desarrolladores de Delphi](/developers/docs/programming-languages/delphi/) +- [Ethereum para desarrolladores de .NET](/developers/docs/programming-languages/dot-net/) - [Ethereum para desarrolladores de Go](/developers/docs/programming-languages/golang/) +- [Ethereum para desarrolladores Java](/developers/docs/programming-languages/java/) +- [Ethereum para desarrolladores de JavaScript](/developers/docs/programming-languages/javascript/) +- [Ethereum para desarrolladores de Python](/developers/docs/programming-languages/python/) +- [Ethereum para desarrolladores de Ruby](/developers/docs/programming-languages/ruby/) - [Ethereum para desarrolladores de Rust](/developers/docs/programming-languages/rust/) -- [Ethereum para desarrolladores de .NET](/developers/docs/programming-languages/dot-net/) -- [Ethereum para desarrolladores de Delphi](/developers/docs/programming-languages/delphi/) -¿Tu lenguaje no está entre estas opciones? Solicitar una nueva página [abriendo un problema](https://github.com/ethereum/ethereum-org-website/issues/new/choose) +### ¿Qué pasa si mi lenguaje no es compatible? {#other-lang} + +Si desea vincular a recursos o apuntar a una comunidad virtual para un lenguaje de programación adicional, puede solicitar una nueva página [abriendo un problema](https://github.com/ethereum/ethereum-org-website/issues/new/choose). + +Si solo quiere escribir código para interactuar con la cadena de bloques usando un lenguaje no admitido actualmente, puede usar la [interfaz JSON-RPC](/developers/docs/apis/json-rpc/) para conectar con la red Ethereum. Cualquier lenguaje de programación que pueda usar TCP/IP puede usar esta interfaz. diff --git a/src/content/translations/es/developers/docs/programming-languages/java/index.md b/src/content/translations/es/developers/docs/programming-languages/java/index.md index e105f2e373d..de679c19c89 100644 --- a/src/content/translations/es/developers/docs/programming-languages/java/index.md +++ b/src/content/translations/es/developers/docs/programming-languages/java/index.md @@ -1,5 +1,5 @@ --- -title: Ethereum para desarrolladores de Java +title: Ethereum para desarrolladores Java description: Aprende cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Java lang: es incomplete: true @@ -9,18 +9,18 @@ incomplete: true 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. -## Comenzar con los contratos inteligentes y el lenguaje de Solidity {#getting-started-with-smart-contracts-and-solidity} +## Empezando con contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity} **Da los primeros pasos para integrar Java con Ethereum** -¿Necesitas una introducción más básica para empezar? Visita [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/) +¿Necesitas una introducción más básica para empezar? Visite [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). -- [Blockchain explicada](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) -- [Comprender los contratos inteligentes](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [Explicación de la cadena de bloques](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [Explicación de los contratos inteligentes](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) - [Escribir el primer contrato inteligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) - [Aprender a compilar e implementar Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) -## Trabajar con clientes de Ethereum +## Trabajar con clientes de Ethereum {#working-with-ethereum-clients} Aprende cómo usar [Web3J](https://github.com/web3j/web3j) y Hyperledger Besu, dos clientes líderes de Java Ethereum @@ -33,7 +33,7 @@ Aprende cómo usar [Web3J](https://github.com/web3j/web3j) y Hyperledger Besu, d - [Ejecución de un nodo Besu (Pantheon) de Hyperledger en las pruebas de integración de Java](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests) - [Hoja de Cheat Web3j]() -## Artículos de nivel intermedio {#intermediate-articles} +## Artículos intermedios {#intermediate-articles} - [Gestión del almacenamiento en una aplicación de Java con IPFS](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs) - [Administrar tokens de tipo ERC20 en Java con Web3j](https://kauri.io/article/d13e911bbf624108b1d5718175a5e0a0/manage-erc20-tokens-in-java-with-web3j) @@ -43,16 +43,16 @@ Aprende cómo usar [Web3J](https://github.com/web3j/web3j) y Hyperledger Besu, d - [Uso de Eventeum para construir una caché de datos de contratos inteligentes de Java](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache) -## Proyectos y herramientas de Java {#java-projects-and-tools} +## Proyectos y herramientas Java {#java-projects-and-tools} - [Besu de Hiperledger (Pantheon) (cliente de Ethereum)](https://docs.pantheon.pegasys.tech/en/stable/) - [Web3J (biblioteca para interactuar con los clientes de Ethereum)](https://github.com/web3j/web3j) - [Evento (Event Listener)](https://github.com/ConsenSys/eventeum) - [Mahuta (herramientas de Dev para IPFS)](https://github.com/ConsenSys/mahuta) -¿Buscas más recursos? Echa un vistazo a [ethereum.org/developers.](/developers/) +¿Buscas más recursos? Visita [ethereum.org/developers.](/developers/) -## Colaboradores de la comunidad de Java {#java-community-contributors} +## Colaboradores de la comunidad Java {#java-community-contributors} - [Constructores de E/S](https://io.builders) - [Kauri](https://kauri.io) diff --git a/src/content/translations/es/developers/docs/programming-languages/javascript/index.md b/src/content/translations/es/developers/docs/programming-languages/javascript/index.md index 357172884ab..5395ceb70da 100644 --- a/src/content/translations/es/developers/docs/programming-languages/javascript/index.md +++ b/src/content/translations/es/developers/docs/programming-languages/javascript/index.md @@ -12,7 +12,7 @@ Hay posibilidad de programar en JavaScript (o algo similar) en [todos los nivele ### Bibliotecas API JavaScript {#javascript-api-libraries} -Si quieres escribir JavaScript para consultas del blockchain, enviar transacciones y demás, la forma más conveniente es utilizando la [biblioteca de API de JavaScript](/developers/docs/apis/javascript/). Estas API permiten a los desarrolladores interactuar fácilmente con los nodos [de la red Ethereum](/developers/docs/nodes-and-clients/). +Si quiere escribir JavaScript para consultar la cadena de bloques, enviar transacciones y demás, la forma más conveniente es utilizando la [biblioteca de API de JavaScript](/developers/docs/apis/javascript/). Estas API permiten a los desarrolladores interactuar fácilmente con los [nodos de la red Ethereum](/developers/docs/nodes-and-clients/). Puedes utilizar estas bibliotecas para interactuar con contratos inteligentes en Ethereum de modo que es posible construir una dapp que solo utilice JavaScript para interactuar con contratos preexistentes. @@ -20,10 +20,11 @@ Puedes utilizar estas bibliotecas para interactuar con contratos inteligentes en - [Web3.js](https://web3js.readthedocs.io/) - [Ethers.js](https://docs.ethers.io/) _: Incluye la implementación de una cartera de Ethereum y utilidades en JavaScript y TypeScript._ +- [viem:](https://viem.sh) interfaz de TypeScript para Ethereum que proporciona primitives de bajo nivel sin estado para interactuar con Ethereum. ### Contratos inteligentes {#smart-contracts} -Si eres un programador de JavaScript y deseas escribir un contrato inteligente propio, te interesa familiarizarte con [Solidity](https://solidity.readthedocs.io). Es el lenguaje más popular para contratos y está muy inspirado en JavaScript. +Si es desarrollador de JavaScript y quiere escribir su propio contrato inteligente, tal vez quiera familiarizarse con [Solidity](https://solidity.readthedocs.io). Este es el contrato de lenguaje inteligente más popular y es sintácticamente similar a JavaScript, lo que hace que sea más fácil de aprender. Más información sobre [contratos inteligentes](/developers/docs/smart-contracts/). @@ -31,7 +32,7 @@ Más información sobre [contratos inteligentes](/developers/docs/smart-contract ### La máquina virtual de Ethereum {#the-ethereum-virtual-machine} -Hay una implementación de la máquina virtual de [Ethereum](/developers/docs/evm/) en JavaScript. Soporta las últimas reglas de bifurcación. Las reglas de bifurcación se refieren a los cambios realizados a la EVM como resultado de las actualizaciones previstas. +Hay una implementación JavaScript de la [máquina virtual de Ethereum](/developers/docs/evm/). Soporta las últimas reglas de bifurcación. Las reglas de bifurcación se refieren a los cambios realizados a la EVM como resultado de las actualizaciones previstas. Esto está dividido en varios paquetes de JavaScript, los cuales pueden ser revisados para un mayor entendimiento: @@ -50,10 +51,12 @@ Si prefieres leer el código, JavaScript podría ser una buena alternativa para ### Nodos y clientes {#nodes-and-clients} -Hay un cliente Ethereumjs en desarrollo. Esto te permitirá profundizar en cómo trabajan los clientes de Ethereum en un idioma que puedas comprender. +Un cliente de Ethereumjs es un desarrollo activo que le permite profundizar en cómo funcionan los clientes Ethereum en un idioma que comprenda; JavaScript. -**Revisa el cliente** -[`ethereumjs-client`](https://github.com/ethereumjs/ethereumjs-client) +Solía ​​estar alojado en un [`repositorio`](https://github.com/ethereumjs/ethereumjs-client) independiente; sin embargo, luego se fusionó con el monorepo EthereumVM como un paquete. + +**Revise el cliente** +[`ethereumjs-client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client) ## Otros proyectos {#other-projects} @@ -63,8 +66,8 @@ También están ocurriendo muchas otras cosas en la tierra de Ethereum JavaScrip - herramientas para generar, importar y exportar claves de Ethereum. - una implementación del `merkle-patricia-tree`: Una estructura de datos descrita en el papel amarillo de Ethereum. -Accede a aquello que más te interesa en el repositorio [EthereumJS repo](https://github.com/ethereumjs) +Profundice en cualquier tema que le interese en el [repositorio EthereumJS](https://github.com/ethereumjs). -## Leer más {#further-reading} +## Más información {#further-reading} -_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ +_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._ diff --git a/src/content/translations/es/developers/docs/programming-languages/python/index.md b/src/content/translations/es/developers/docs/programming-languages/python/index.md index a08f123906b..56b14d792c9 100644 --- a/src/content/translations/es/developers/docs/programming-languages/python/index.md +++ b/src/content/translations/es/developers/docs/programming-languages/python/index.md @@ -9,7 +9,7 @@ incomplete: true 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. -## Comenzar con los contratos inteligentes y el lenguaje de Solidity {#getting-started-with-smart-contracts-and-solidity} +## Comenzar con los contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity} **Da los primeros pasos para integrar Python con Ethereum** @@ -22,9 +22,10 @@ Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprov ## Artículos para principiantes {#beginner-articles} -- [La guia del desarollador Python para Ethereum](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/) +- [Guía del programador (Python) para Ethereum](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/) +- [Informe sobre el estado de Python en la cadena de bloques 2023](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023) - [Una introducción a los contratos inteligentes con Vyper](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/) -- [Crea tu propio token ERC20 usando Python y Brownie](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58) +- [Implemente su propio token ERC20 con Python y Brownie](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58) - [¿Cómo desarrollar un contrato de Ethereum mediante Python Flask?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e) - [Introducción a Web3.py · Ethereum para desarrolladores de Python](https://www.dappuniversity.com/articles/web3-py-intro) - [Cómo llamar a una función de contrato inteligente mediante Python y web3.py](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py) @@ -34,54 +35,55 @@ Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprov - [Desarrollo de Dapp para programadores de Python](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28) - [Creación de una interfaz de Python Ethereum: Parte 1](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d) - [Contratos inteligentes de Ethereum en Python: Una guía completa (ish)](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988) -- [Usando Brownie y Python para desarrollar Smart Contracts](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp) -- [Creando NFTs en OpenSea usando Brownie](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/) +- [Utilizar Brownie y Python para implementar contratos inteligentes](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp) +- [Crear NFT en OpenSea con Brownie](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/) -## Patrones de uso avanzado {#advanced-use-patterns} +## Patrones de uso avanzados {#advanced-use-patterns} -- [Compilar, desplegar y llamar a contratos inteligentes de Ethereum mediante Python](https://yohanes.gultom.me/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/) -- [Analizar contratos inteligentes de Solifity con Slither](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/) -- [Blockchain Fintech Tutorial: Préstamos usando Python](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/) +- [Compilar, desplegar y llamar a contratos inteligentes de Ethereum mediante Python](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/) +- [Analizar contratos inteligentes de Solifity con Slither](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither) +- [Tutorial fintech para la cadena de bloques: prestar y pedir prestado con Python](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/) ## Proyectos y herramientas de Python {#python-projects-and-tools} ### Activos: {#active} -- [Web3.py](https://github.com/ethereum/web3.py) - _Biblioteca de Python para interactuar con Ethereum_ -- [Brownie](https://github.com/eth-brownie/brownie) - Framework de Python para implementar, probar e interactuar con Smart Contracts de Ethereum\_ -- [Vyper](https://github.com/ethereum/vyper/) - _Lenguaje tipo Python de Smart Contract para EVM_ -- [py-evm](https://github.com/ethereum/py-evm) - _implementación de la Ethereum Virtual Machine_ -- [eth-tester](https://github.com/ethereum/eth-tester) - _herramientas para probar aplicaciones basadas en Ethereum_ -- [eth-utils](https://github.com/ethereum/eth-utils/) - _funciones de utilidad para trabajar con bases de código relacionadas con Ethereum_ -- [py-solc-x](https://pypi.org/project/py-solc-x/) - _Envoltura de Python alrededor del compilador solc solidity con soporte 0.5.x_ -- [py-wasm](https://github.com/ethereum/py-wasm) - _implementación en Python del interprete de web assembly_ -- [pydevp2p](https://github.com/ethereum/pydevp2p) - _implementación de la pila Ethereum P2P_ -- [pymaker](https://github.com/makerdao/pymaker) - _API de Python para contratos Maker_ -- [siwe](https://github.com/spruceid/siwe-py) - _Inicie sesión con Ethereum (siwe) para Python_ -- [Smart contracts para pruebas](https://github.com/tradingstrategy-ai/smart-contracts-for-testing) - _Un paquete de Python que viene con contratos comunes como ERC-20, Uniswap y para escribir pruebas con Web3.py_ +- [Web3.py:](https://github.com/ethereum/web3.py) _biblioteca de Python para interactuar con Ethereum_ +- [Vyper:](https://github.com/ethereum/vyper/) _lenguaje de contratos inteligentes tipo Python para la EVM_ +- [Ape:](https://github.com/ApeWorX/ape) _herramienta de desarrollo de contratos inteligentes para pythonistas, informáticos y profesionales de seguridad_ +- [Brownie](https://github.com/eth-brownie/brownie): _Un entorno de trabajo de Python para implementar, probar e interactuar con contratos inteligentes de Ethereum_ +- [py-evm:](https://github.com/ethereum/py-evm) _implementación de la máquina virtual de Ethereum_ +- [eth-tester:](https://github.com/ethereum/eth-tester) _herramientas para probar aplicaciones basadas en Ethereum_ +- [eth-utils](https://github.com/ethereum/eth-utils/): _Funciones de utilidad para trabajar con bases de código relacionadas con Ethereum_ +- [py-solc-x:](https://pypi.org/project/py-solc-x/) _wrapper de Python en torno al compilador de Solidity con soporte 0.5.x_ +- [py-wasm:](https://github.com/ethereum/py-wasm) _implementación de Python del intérprete de WebAssembly_ +- [pydevp2p:](https://github.com/ethereum/pydevp2p) _implementación de la pila P2P de Ethereum_ +- [pymaker:](https://github.com/makerdao/pymaker) _API de Python para contratos de Maker_ +- [siwe:](https://github.com/spruceid/siwe-py) _inicio de sesión con Ethereum (siwe) para Python_ +- [DeFi Web3 para integraciones Ethereum:](https://github.com/tradingstrategy-ai/web3-ethereum-defi) _paquete de Python con integraciones listas para ERC-20, Uniswap y otros proyectos populares_ -### Archivados / Sin soporte: {#archived--no-longer-maintained} +### Archivados/ya no mantenidos: {#archived--no-longer-maintained} -- [Trinity](https://github.com/ethereum/trinity) - _Cliente Python para Ethereum_ -- [Mamba](https://github.com/arjunaskykok/mamba) - _framework para escribir, compilar y desplegar smart contracts escrito en el lenguaje Vyper_ +- [Trinity:](https://github.com/ethereum/trinity) _cliente Python de Ethereum_ +- [Mamba:](https://github.com/arjunaskykok/mamba) _entorno de trabajo para escribir, compilar e implementar contratos inteligentes escritos con Vyper_ -¿Buscas más recursos? Echa un vistazo a [ethereum.org/developers.](/developers/) +¿Buscas más recursos? Visite [ethereum.org/developers](/developers/). -## Proyectos usando herramientas Python {#projects-using-python-tooling} +## Proyectos que usan herramientas de Python {#projects-using-python-tooling} -Los siguientes proyectos basados en Ethereum utilizan las herramientas mencionadas en esta página. Los repositorios de código abierto relacionados sirven como una buena referencia para el código de ejemplo y las mejores prácticas. +Los siguientes proyectos basados en Ethereum utilizan las herramientas mencionadas en esta página. Los repositorios de código abierto relacionados sirven como una buena referencia para código de ejemplo y mejores prácticas. -- [Yearn Finance](https://yearn.finance/) y [el repositorio del baúl de contratosde Yearn](https://github.com/yearn/yearn-vaults) -- [Curve](https://curve.fi/) y [el repositorio de smart contractsde Curve](https://github.com/curvefi/curve-contract) -- [BadgerDAO](https://badger.com/) y [smart contracts usando las herramientas Brownie](https://github.com/Badger-Finance/badger-system) -- [Sushi](https://sushi.com/) usa [Python en la gestión y el despliegue de contratos de vesting](https://github.com/sushiswap/sushi-vesting-protocols) -- [Alpha Finance](https://alphafinance.io/), de Alpha Homora, usa [Brownie para probar y desplegar smart contracts](https://github.com/AlphaFinanceLab/alpha-staking-contract) +- [Yearn Finance](https://yearn.finance/) y el [repositorio de Yearn Vault Contracts](https://github.com/yearn/yearn-vaults) +- [Curve](https://curve.fi/) y el [repositorio de contratos inteligentes de Curve](https://github.com/curvefi/curve-contract) +- [BadgerDAO](https://badger.com/) y [contratos inteligentes con cadena de herramientas Brownie](https://github.com/Badger-Finance/badger-system) +- [Sushi](https://sushi.com/) usa [Python en la gestión e implementación de sus contratos de vesting](https://github.com/sushiswap/sushi-vesting-protocols) +- [Alpha Finance](https://alphafinance.io/), de la fama de Alpha Homora, usa [Brownie para probar e implementar contratos inteligentes](https://github.com/AlphaFinanceLab/alpha-staking-contract) -## Colaboradores de la comunidad de Python {#python-community-contributors} +## Debate de la comunidad de Pyton {#python-community-contributors} -[Ethereum Python Community Discord](https://discord.gg/9zk7snTfWe) alberga una comunidad en rápido crecimiento y es la comunidad dedicada -a debates sobre cualquiera de los proyectos anteriores y temas relacionados. +- [Discord de la comunidad de Python para Ethereum](https://discord.gg/9zk7snTfWe) para Web3.py y otras discusiones sobre el marco Python +- [Discord de Vyper](https://discord.gg/SdvKC79cJk) para debatir sobre programación de contratos inteligentes Vyper -## Otras listas adicionales {#other-aggregated-lists} +## Otras listas agregadas {#other-aggregated-lists} -La wiki de Vyper tiene una [lista increíble de recursos para Vyper](https://github.com/ethereum/vyper/wiki/Vyper-tools-and-resources +La wiki de Vyper tiene una [increíble lista de recursos para Vyper](https://github.com/ethereum/vyper/wiki/Vyper-tools-and-resources). diff --git a/src/content/translations/es/developers/docs/programming-languages/ruby/index.md b/src/content/translations/es/developers/docs/programming-languages/ruby/index.md new file mode 100644 index 00000000000..0f082a7691c --- /dev/null +++ b/src/content/translations/es/developers/docs/programming-languages/ruby/index.md @@ -0,0 +1,61 @@ +--- +title: Ethereum para desarrolladores de Ruby +description: Aprenda cómo desarrollar para Ethereum mediante proyectos y herramientas basados en Rust. +lang: es +incomplete: false +--- + + + +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. + +## Por dónde empezar con los contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity} + +**Dé los primeros pasos para integrar Rust con Ethereum.** + +¿Necesitas una introducción más básica para empezar? Echa un vistazo a [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). + +- [Blockchain explicada](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [Comprender los contratos inteligentes](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) +- [Escribir el primer contrato inteligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract) +- [Aprende a compilar e implementar Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) + +## Artículos para principiantes {#beginner-articles} + +- [Comprender finalmente las cuentas de Ethereum](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe) +- [Autenticar finalmente usuarios de Rails con MetaMask](https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj) +- [Iniciar sesión con Ethereum: biblioteca de Ruby y ejemplos de Rails](https://blog.spruceid.com/sign-in-with-ethereum-ruby-library-release-and-rails-examples/) +- [Cómo conectarse a la red Ethereum usando Ruby](https://www.quicknode.com/guides/web3-sdks/how-to-connect-to-the-ethereum-network-using-ruby) +- [Cómo generar una nueva dirección de Ethereum en Ruby](https://www.quicknode.com/guides/web3-sdks/how-to-generate-a-new-ethereum-address-in-ruby) + +## Artículos intermedios {#intermediate-articles} + +- [Aplicación de cadena de bloques con Ruby](https://www.nopio.com/blog/blockchain-app-ruby/) +- [Use Ruby conectado a Ethereum, para ejecutar el contrato inteligente](https://titanwolf.org/Network/Articles/Article?AID=87285822-9b25-49d5-ba2a-7ad95fff7ef9) + +## Proyectos y herramientas de Rust {#ruby-projects-and-tools} + +### Activos {#active} + +- [eth.rb](https://github.com/q9f/eth.rb): _Biblioteca de Ruby y cliente RPC para manejar cuentas de Ethereum, mensajes y transacciones_ +- [keccak.rb](https://github.com/q9f/keccak.rb): _El hash Keccak (SHA3) usado por Ethereum_ +- [siwe-ruby:](https://github.com/spruceid/siwe-ruby) _Implementación de Ruby de acceso con Ethereum_ +- [siwe_rails:](https://github.com/spruceid/siwe_rails) _Rails gem que agrega rutas de inicio de sesión de SIWE_ +- [siwe-rails-examples:](https://github.com/spruceid/siwe-rails-examples) _ejemplos de SIWE usando Ruby on Rails con controlador personalizado_ +- [omniaut-siwe:](https://github.com/spruceid/omniauth-siwe) _Estrategia de OmniAuth para el acceso con Ethereum (SIWE)_ +- [omniauth-mft:](https://github.com/valthon/omniauth-nft) _Estrategia de OmniAuth para la autenticación mediante propiedad de NFT_ +- [ethereum-on-rails](https://github.com/q9f/ethereum-on-rails): _Plantilla de Ethereum en Rails que permite conectar MetaMask con Ruby en Rails_ + +### Archivados / Ya no mantenidos {#archived--no-longer-maintained} + +- [web3-eth](https://github.com/spikewilliams/vtada-ethereum): _Llamar métodos RPC de nodos de Ethereum con Ruby_ +- [ethereum_tree](https://github.com/longhoangwkm/ethereum_tree): _Biblioteca de Ruby para generar direcciones ETH desde una billetera con determinismo jerárquico según el estándar BIP32_ +- [etherlite:](https://github.com/budacom/etherlite) _Integración de Ethereum para Ruby en Rails_ +- [Ethereum.rb:](https://github.com/EthWorks/ethereum.rb) _Cliente de Ethereum en Ruby que usa la interfaz JSON-RPC para el envío de transacciones, la creación e interacción con contratos, así como un kit de herramientas útil para trabajar con los nodos de Ethereum_ +- [omniauth-ethereum.rb:](https://github.com/q9f/omniauth-ethereum.rb) _Implementación de la estrategia de proveedor de Ethereum para OmniAuth_ + +¿Buscas más recursos? Revise [la página de inicio para desarrolladores](/developers/). + +## Colaboradores de la comunidad de Rust {#ruby-community-contributors} + +El [grupo de Telegram de Ruby para Ethereum](https://t.me/ruby_eth) es el anfitrión de una comunidad en rápido crecimiento y el recurso dedicado a debates sobre cualquiera de los proyectos anteriores y temas relacionados. diff --git a/src/content/translations/es/developers/docs/programming-languages/rust/index.md b/src/content/translations/es/developers/docs/programming-languages/rust/index.md index af49e80aaa5..38caefdcc8d 100644 --- a/src/content/translations/es/developers/docs/programming-languages/rust/index.md +++ b/src/content/translations/es/developers/docs/programming-languages/rust/index.md @@ -9,11 +9,11 @@ incomplete: true 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. -## Comenzar con los contratos inteligentes y el lenguaje de Solidity {#getting-started-with-smart-contracts-and-solidity} +## Empezar con contratos inteligentes y el lenguaje Solidity {#getting-started-with-smart-contracts-and-solidity} **Da los primeros pasos para integrar Rust con Ethereum** -¿Necesitas una introducción más básica para empezar? Visita [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). +¿Necesitas una introducción más básica para empezar? Visite [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). - [Blockchain explicada](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) - [Comprender los contratos inteligentes](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) @@ -23,32 +23,38 @@ Utiliza Ethereum para crear aplicaciones descentralizadas (o "dapps"), que aprov ## Artículos para principiantes {#beginner-articles} - [Seleccionar a un cliente de Ethereum](https://www.trufflesuite.com/docs/truffle/reference/choosing-an-ethereum-client) -- [El cliente de Ethereum basado en Rust](https://wiki.parity.io/Setup) +- [El cliente Ethereum de Rust](https://openethereum.github.io/)\***Note que OpenEthereum [ha quedado obsoleto](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) y no se mantiene.** Úselo con precaución y preferiblemente cambie a otro cliente. - [Enviar una transacción a Ethereum mediante Rust](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/) - [Una introducción a los contratos inteligentes con el cliente de Parity Ethereum](https://wiki.parity.io/Smart-Contracts) -- [Un tutorial paso a paso sobre cómo escribir contratos en Rust Wasm para Kovan](https://github.com/paritytech/pwasm-tutorial) +- [Tutorial paso a paso sobre cómo escribir contratos en Rust Wasm para Kovan](https://github.com/paritytech/pwasm-tutorial) -## Artículos de nivel intermedio {#intermediate-articles} +## Artículos intermedios {#intermediate-articles} ## Patrones de uso avanzado {#advanced-use-patterns} - [Biblioteca externa pwasm_ethereum para interactuar con redes similares a Ethereum](https://github.com/openethereum/pwasm-ethereum) - [Construir un chat descentralizado mediante JavaScript y Rust](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52) - [Crear una aplicación descentralizada de tareas con Vue.js & Rust](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb) -- [Introducción a Enigma: Un lenguaje de programación de Rust](https://blog.enigma.co/getting-started-with-discovery-the-rust-programming-language-4d1e0b06de15) + - [Una introducción a los contratos secretos](https://blog.enigma.co/getting-started-with-enigma-an-intro-to-secret-contracts-cdba4fe501c2) +- [Cree una cadena de bloques en Rust](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/) ## Proyectos y herramientas de Rust {#rust-projects-and-tools} -- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum): _Colección de recursos externos para interactuar con redes similares a Ethereum._ -- [WebAssembly de Ethereum](https://ewasm.readthedocs.io/en/mkdocs/) -- [oasis_std](https://docs.rs/oasis-std/0.2.7/oasis_std/): _Referencia de la API de OASIS_ -- [Solaris](https://github.com/paritytech/sol-rs) -- [SputnikVM](https://github.com/sorpaas/rust-evm): _Implementación de máquina virtual de Ethereum_ -- [Paridad](https://github.com/paritytech/parity-ethereum): _Cliente de Ethereum basado en Rust_ -- [Wavelet:](https://wavelet.perlin.net/docs/smart-contracts) _Contrato inteligente de Wavelet en Rust_ - -¿Buscas más recursos? Echa un vistazo a [ethereum.org/developers.](/developers/) +- [pwasm-ethereum:](https://github.com/paritytech/pwasm-ethereum) _colección de recursos externos para interactuar con redes similares a Ethereum_ +- [Lighthouse:](https://github.com/sigp/lighthouse) _cliente de capa de consenso de Ethereum rápido_ +- [Ethereum WebAssembly:](https://ewasm.readthedocs.io/en/mkdocs/) _rediseño propuesto de la capa de ejecución de contratos inteligentes de Ethereum utilizando un subconjunto determinístico de WebAssembly_ +- [oasis_std](https://docs.rs/oasis-std/0.2.7/oasis_std/): _referencia de la API de OASIS_ +- [Solaris:](https://github.com/paritytech/sol-rs) _arnés de pruebas unitarias de contratos inteligentes de Solidity usando la Parity Client EVM nativa._ +- [SputnikVM:](https://github.com/rust-blockchain/evm) _implementación de máquina virtual de Ethereum de Rust_ +- [Wavelet:](https://wavelet.perlin.net/docs/smart-contracts) _contrato inteligente de Wavelet en Rust_ +- [Foundry:](https://github.com/gakonst/foundry) _kit de herramientas de desarrollo de aplicaciones de Ethereum_ +- [Ethers_rs:](https://github.com/gakonst/ethers-rs) _implementación de billetera y biblioteca de Ethereum_ +- [SewUp:](https://github.com/second-state/SewUp) _biblioteca para ayudarlo a crear su contrato de Ethereum WebAssembly con Rust y desarrollar en un backend común_ +- [Substreams:](https://github.com/streamingfast/substreams) _tecnología de indexación de datos de cadena de bloques con paralelización_ +- [Reth](https://github.com/paradigmxyz/reth): Reth (abreviatura de Rust Ethereum) es una nueva implementación de nodo completo de Ethereum + +¿Buscas más recursos? Visite [ethereum.org/developers.](/developers/) ## Colaboradores de la comunidad de Rust {#rust-community-contributors} diff --git a/src/content/translations/es/developers/docs/scaling/optimistic-rollups/index.md b/src/content/translations/es/developers/docs/scaling/optimistic-rollups/index.md index dec6b38bb2a..1088f1ee345 100644 --- a/src/content/translations/es/developers/docs/scaling/optimistic-rollups/index.md +++ b/src/content/translations/es/developers/docs/scaling/optimistic-rollups/index.md @@ -53,5 +53,5 @@ Existen múltiples implementaciones de rollups optimistas que puede integrar en - [Todo lo que debes saber sobre Optimistic rollup](https://research.paradigm.xyz/rollups) - [Guía esencial sobre Arbitrum](https://newsletter.banklesshq.com/p/the-essential-guide-to-arbitrum) -- [¿Cómo funciona realmente el rollup de Optimism?](https://research.paradigm.xyz/optimism) +- [¿Cómo funciona realmente el rollup de Optimism?](https://www.paradigm.xyz/2021/01/how-does-optimisms-rollup-really-work) - [Análisis detallado de OVM](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52) diff --git a/src/content/translations/es/developers/docs/smart-contracts/composability/index.md b/src/content/translations/es/developers/docs/smart-contracts/composability/index.md index ec71872ffb2..533f52b6dd0 100644 --- a/src/content/translations/es/developers/docs/smart-contracts/composability/index.md +++ b/src/content/translations/es/developers/docs/smart-contracts/composability/index.md @@ -1,19 +1,77 @@ --- -title: Composición del contrato inteligente +title: Componibilidad de los contratos inteligentes description: lang: es incomplete: true --- -## Una breve introducción {#a-brief-introduction} +## Breve introducción {#a-brief-introduction} -Los contratos inteligentes son públicos en Ethereum y se pueden considerar API abiertas. No necesitas escribir tu propio contrato inteligente para convertirte en un desarrollador de dapp, solo necesitas saber cómo interactuar con ellos. Por ejemplo, puedes utilizar los contratos inteligentes existentes de [Uniswap](https://uniswap.exchange/swap), un mercado descentralizado, para manejar toda la lógica del intercambio de tokens en tu aplicación; No necesitas empezar desde cero. [Revisa algunos de sus contratos](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts). +Los contratos inteligentes son públicos en Ethereum y se pueden considerar API abiertas. No necesitas escribir tu propio contrato inteligente para convertirte en un desarrollador de dapp, solo necesitas saber cómo interactuar con ellos. Por ejemplo, puedes utilizar los contratos inteligentes existentes de [Uniswap](https://uniswap.exchange/swap), un mercado descentralizado, para manejar toda la lógica del intercambio de tokens en tu aplicación; No necesitas empezar desde cero. Consulte algunos de sus contratos [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) y [v3](https://github.com/Uniswap/uniswap-v3-core/tree/main/contracts). + +## ¿Qué es la componibilidad? {#what-is-composability} + +La componibilidad es combinar distintos componentes para crear nuevos sistemas o resultados. En el desarrollo de software, la componibilidad significa que los desarrolladores pueden reutilizar componentes de software ya existentes para crear nuevas aplicaciones. Una buena manera de entender la componibilidad es pensar en elementos componibles como si fueran bloques de Lego. Cada Lego puede ser combinado con otro, permitiéndole construir estructuras complejas combinando diferentes Legos. + +En Ethereum, todos los contratos inteligentes son una especie de Lego: puede usar contratos inteligentes de otros proyectos como bloques fundamentales para su proyecto. Esto significa que no tiene que invertir tiempo en reinventar la rueda o partir desde cero. + +## ¿Cómo funciona la componibilidad? {#how-does-composability-work} + +Los contratos inteligentes de Ethereum son como API públicas, por lo que cualquiera puede interactuar con el contrato inteligente o integrarlos en dapps para añadir nuevas funcionalidades. La componibilidad de los contratos inteligentes generalmente se basa en tres principios: modularidad, autonomía y capacidad de descubrimiento: + +**1. Modularidad**: Es la capacidad de los componentes individuales para realizar una tarea específica. En Ethereum, cada contrato inteligente tiene un caso de uso específico (como se muestra en el ejemplo de Uniswap). + +**2. Autonomía**: Los elementos componibles deben ser capaces de funcionar de forma independiente. Cada contrato inteligente en Ethereum es autoejecutable y puede funcionar sin depender de otras partes del sistema. + +**3. Capacidad de descubrimiento**: Los desarrolladores no pueden invocar contratos externos o integrar bibliotecas de software en aplicaciones si los primeros no están disponibles públicamente. Por diseño, los contratos inteligentes son de código abierto; cualquiera puede invocar un contrato inteligente o realizar una bifurcación de la base de código. + +## Beneficios de la componibilidad {#benefits-of-composability} + +### Ciclo de desarrollo más corto {#shorter-development-cycle} + +La componibilidad reduce el trabajo que los desarrolladores tienen que hacer al crear [dapps](/dapps/#what-are-dapps). [Como indica Naval Ravikant:](https://twitter.com/naval/status/1444366754650656770) "Código abierto significa que cada problema tiene que resolverse una vez." + +Si hay un contrato inteligente que resuelve un problema, otros desarrolladores pueden reutilizarlo, por lo que no tienen que resolver el mismo problema. De esta manera, los desarrolladores pueden usar las bibliotecas de software ya existentes y añadir funcionalidad adicional para crear nuevas dapps. + +### Mayor innovación {#greater-innovation} + +La componibilidad fomenta la innovación y la experimentación porque los desarrolladores son libres de reutilizar, modificar, duplicar o integrar código de código abierto para crear los resultados deseados. Como resultado, los equipos de desarrollo dedican menos tiempo a funcionalidad básica y pueden dedicar más tiempo a experimentar con nuevas funciones. + +### Mejor experiencia de usuario {#better-user-experience} + +La interoperabilidad entre los componentes del ecosistema Ethereum mejora la experiencia de usuario. Los usuarios pueden disfrutar de una mayor funcionalidad cuando las dapps integran contratos inteligentes externos que en un ecosistema fragmentado donde las aplicaciones no puedan comunicarse. + +Utilizaremos un ejemplo de trading de arbitraje para mostrar los beneficios de la interoperabilidad: + +Si un token opera a un precio más alto en el `exchange A` que en el `exchange B`, entonces se puede aprovechar la diferencia de precio para obtener beneficios. Sin embargo, solo puede hacer esto si se tiene suficiente capital para financiar la transacción (comprar el token en el `exchange B` y venderlo en el `exchange A`). + +En una situación donde no tiene suficientes fondos para cubrir la operación, un préstamo flash o instantáneo podría ser la mejor idea. Los [prestámos flash](/defi/#flash-loans) son algo muy técnico, pero la idea básica es que se puede pedir prestado activos (sin colateral) y devolver lo mismo en _una_ transacción. + +Volviendo a nuestro ejemplo inicial, un trader de arbitraje puede tomar un préstamo flash grande, comprar tokens del `exchange B`, venderlos en el `exchange A`, devolver el capital + los intereses, y quedarse con la diferencia, dentro de la misma transacción. Esta compleja lógica requiere combinar llamadas a múltiples contratos, lo que no sería posible si los contratos inteligentes no pudieran ser interoperables. + +## Ejemplos de componibilidad en Ethereum {#composability-in-ethereum} + +### Intercambio de tokens {#token-swaps} + +Si crea un dapp que requiere que las transacciones se paguen en ETH, puede permitir que los usuarios paguen en otros tokens ERC-20 integrando la lógica de intercambio de tokens. El código convertirá automáticamente el token del usuario a ETH antes de que el contrato ejecute la función invocada. + +### Gobernanza {#governance} + +Crear sistemas de gobernanza a medida para una [DAO](/dao/) puede ser costoso y consumir mucho tiempo. En su lugar, se podría utilizar un kit de herramientas de gobernanza de código abierto, como [Aragon Client](https://client.aragon.org/), para arrancar la DAO y poder crear rápidamente un marco de gobernanza. + +### Gestión de identidades {#identity-management} + +En lugar de crear un sistema de autenticación personalizado o usar proveedores centralizados, puede integrar herramientas de identidad descentralizada (DID) para gestionar la autenticación de los usuarios. Un ejemplo es [SpruceID](https://www.spruceid.com/), un conjunto de herramientas de código abierto que ofrece la funcionalidad de "Iniciar sesión con Ethereum" que permite a los usuarios autenticar identidades con una billetera de Ethereum. ## Tutoriales relacionados {#related-tutorials} -- [Composición del contrato: Los bloques de construcción para el desarrollo de contratos inteligentes de Ethereum](https://blog.decentlabs.io/contract-composability-the-building-blocks-of-ethereum-smart-contract-development/) -- [Comienza el desarrollo de tu interfaz Dapp con create-eth-app,](/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/)_ un resumen sobre cómo usar create-eth-app para crear apps con contratos inteligentes previamente formulados. _ +- [Componibilidad de los contratos: bloques fundamentales para el desarrollo de contratos inteligentes de Ethereum](https://www.decentlabs.io/blog/contract-composability-the-building-blocks-of-ethereum-smart-contract-development) +- [Comience con el desarrollo de fontend de dapp con create-eth-app:](/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/)_ un resumen sobre cómo usar create-eth-app para crear apps con contratos inteligentes populares previamente formulados. _ + +## Más información {#further-reading} -## Más lectura {#further-reading} +_¿Conoce algún recurso en la comunidad que le haya servido de ayuda? Edita esta página y añádelo._ -_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ +- [Componibilidad es innovación](https://future.a16z.com/how-composability-unlocks-crypto-and-everything-else/) +- [Por qué la componibilidad es importante para la Web3](https://hackernoon.com/why-composability-matters-for-web3) +- [¿Qué es la componibilidad?](https://blog.aragon.org/what-is-composability/#:~:text=Aragon,connect%20to%20every%20other%20piece.) diff --git a/src/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md b/src/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md new file mode 100644 index 00000000000..2b447eb65c7 --- /dev/null +++ b/src/content/translations/es/developers/docs/smart-contracts/formal-verification/index.md @@ -0,0 +1,283 @@ +--- +title: Verificación formal de contratos inteligentes +description: Visión general de la verificación formal de los contratos inteligentes de Ethereum +lang: es +--- + +Los [contratos inteligentes](/developers/docs/smart-contracts/) están haciendo posible crear aplicaciones descentralizadas, sin confianza y robustas que introduzcan nuevos casos de uso y proporcionen valor a los usuarios. Debido a que los contratos inteligentes manejan grandes cantidades de valor, la seguridad es una consideración crítica para los desarrolladores. + +La verificación formal es una de las técnicas recomendadas para mejorar la [seguridad de los contratos inteligentes](/developers/docs/smart-contracts/security/). La verificación formal, que utiliza [métodos formales](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/) para especificar, diseñar y verificar programas, se ha utilizado durante años para garantizar la corrección de los sistemas críticos de hardware y software. + +Cuando se implementa en contratos inteligentes, la verificación formal puede demostrar que la lógica comercial de un contrato cumple con una especificación predefinida. En comparación con otros métodos para evaluar la corrección del código de un contrato, como las pruebas, la verificación formal ofrece garantías más sólidas de que un contrato inteligente sea funcionalmente correcto. + +## ¿Qué es la verificación formal? {#what-is-formal-verification} + +La verificación formal se refiere al proceso de evaluación de la corrección de un sistema con respecto a una especificación formal. En términos más simples, la verificación formal nos permite comprobar si el comportamiento de un sistema cumple con algunos requisitos (es decir, hace lo que queremos). + +Los comportamientos esperados del sistema (un contrato inteligente en este caso) se describen utilizando un modelado formal, mientras que los lenguajes de especificación permiten la creación de propiedades formales. Las técnicas de verificación formal pueden verificar que la implementación de un contrato cumpla con sus especificaciones y derivar una prueba matemática de la corrección del contrato. Cuando un contrato cumple con su especificación, se describe como "funcionalmente correcto", "correcto por diseño" o "correcto por construcción". + +### ¿Qué es un modelo formal? {#what-is-a-formal-model} + +En informática, un [modelo formal](https://en.wikipedia.org/wiki/Model_of_computation) es una descripción matemática de un proceso computacional. Los programas se abstraen en funciones matemáticas (ecuaciones), con un modelo que describe cómo se calculan los resultados (o salidas) de las funciones dada una entrada. + +Los modelos formales proporcionan un nivel de abstracción sobre el que se puede evaluar el análisis del comportamiento de un programa. La existencia de modelos formales permite la creación de una _especificación formal_, que describe las propiedades deseadas del modelo en cuestión. + +Se utilizan diferentes técnicas para modelar contratos inteligentes para la verificación formal. Por ejemplo, algunos modelos se utilizan para razonar sobre el comportamiento de alto nivel de un contrato inteligente. Estas técnicas de modelado aplican una vista de caja negra (black-box view) a los contratos inteligentes, viéndolos como sistemas que aceptan entradas y ejecutan cálculos basados en esas entradas. + +Los modelos de alto nivel se centran en la relación entre los contratos inteligentes y los agentes externos, como las cuentas de propiedad externa (EOA), las cuentas de contratos y el entorno de la cadena de bloques. Dichos modelos son útiles para definir propiedades que especifican cómo debe comportarse un contrato en respuesta a ciertas interacciones del usuario. + +Por el contrario, otros modelos formales se centran en el comportamiento de bajo nivel de un contrato inteligente. Si bien los modelos de alto nivel pueden ayudar a razonar sobre la funcionalidad de un contrato, pueden fallar en la captura de detalles sobre el funcionamiento interno de la implementación. Los modelos de bajo nivel aplican una vista de caja blanca (white-box view) al análisis del programa y se basan en representaciones de nivel más bajo de aplicaciones de contratos inteligentes, como rastreos de programas y [gráficos de flujo de control](https://en.wikipedia.org/wiki/Control-flow_graph), para razonar sobre las propiedades relevantes para la ejecución de un contrato. + +Los modelos de bajo nivel se consideran ideales, ya que representan la ejecución real de un contrato inteligente en el entorno de ejecución de Ethereum (es decir, la [EVM](/developers/docs/evm/)). Las técnicas de modelado de bajo nivel son especialmente útiles para establecer propiedades de seguridad críticas en contratos inteligentes y detectar posibles vulnerabilidades. + +### ¿Qué es una especificación formal? {#what-is-a-formal-specification} + +Una especificación es simplemente un requisito técnico que un sistema en particular debe cumplir. En la programación, las especificaciones representan ideas generales sobre la ejecución de un programa (es decir, lo que el programa debe hacer). + +En el contexto de los contratos inteligentes, las especificaciones formales se refieren a _propiedades_: descripciones formales de los requisitos que un contrato debe cumplir. Tales propiedades se describen como "invariantes" y representan afirmaciones lógicas sobre la ejecución de un contrato que deben seguir siendo verdaderas en todas las circunstancias posibles, sin ninguna excepción. + +Por lo tanto, podemos pensar en una especificación formal como una colección de declaraciones escritas en un lenguaje formal que describen la ejecución prevista de un contrato inteligente. Las especificaciones cubren las propiedades de un contrato y definen cómo debe comportarse el contrato en diferentes circunstancias. El propósito de la verificación formal es determinar si un contrato inteligente posee estas propiedades (invariantes) y que estas propiedades no se violen durante la ejecución. + +Las especificaciones formales son fundamentales para desarrollar implementaciones seguras de contratos inteligentes. Los contratos que no implementan invariantes o cuyas propiedades se ven violadas durante la ejecución son propensos a vulnerabilidades que pueden dañar la funcionalidad o causar explotaciones, o exploits, maliciosas. + +## Tipos de especificaciones formales para contratos inteligentes {#formal-specifications-for-smart-contracts} + +Las especificaciones formales permiten el razonamiento matemático sobre la corrección de la ejecución de un programa. Al igual que con los modelos formales, las especificaciones formales pueden capturar propiedades de alto nivel o el comportamiento de bajo nivel de la implementación de un contrato. + +Las especificaciones formales se derivan utilizando elementos de [lógica del programa](https://en.wikipedia.org/wiki/Logic_programming), que permiten un razonamiento formal sobre las propiedades de un programa. Una lógica de programa tiene reglas formales que expresan (en lenguaje matemático) el comportamiento esperado de un programa. Se utilizan varias lógicas de programa para crear especificaciones formales, incluyendo [lógica de alcanzabilidad](https://en.wikipedia.org/wiki/Reachability_problem), [lógica temporal](https://en.wikipedia.org/wiki/Temporal_logic) y [lógica de Hoare](https://en.wikipedia.org/wiki/Hoare_logic). + +Las especificaciones formales para los contratos inteligentes se pueden clasificar ampliamente como **especificaciones de alto nivel** o **especificaciones de bajo nivel**. Independientemente de a qué categoría pertenezca una especificación, debe describir de manera adecuada e inequívoca la propiedad del sistema que se desea analizar. + +### Especificaciones de alto nivel {#high-level-specifications} + +Como su nombre lo indica, una especificación de alto nivel (también llamada "especificación orientada a modelos") describe el comportamiento de alto nivel de un programa. Las especificaciones de alto nivel modelan un contrato inteligente como una [máquina de estado finito](https://en.wikipedia.org/wiki/Finite-state_machine) (FSM), que puede hacer la transición entre estados mediante la realización de operaciones, con la lógica temporal utilizada para definir propiedades formales para el modelo FSM. + +[Las lógicas temporales](https://en.wikipedia.org/wiki/Temporal_logic) son "reglas para razonar sobre proposiciones calificadas en términos de tiempo (por ejemplo, "Tengo _siempre_ hambre" o "Yo _eventualmente_ tendré hambre")." Cuando se aplican a la verificación formal, las lógicas temporales se utilizan para hacer afirmaciones sobre el comportamiento correcto de los sistemas modelados como máquinas de estado. Específicamente, una lógica temporal describe los estados futuros en los que puede estar un contrato inteligente y cómo hace la transición entre estados. + +Las especificaciones de alto nivel generalmente capturan dos propiedades temporales críticas para los contratos inteligentes: **seguridad** y **vitalidad**. Las propiedades de seguridad representan la idea de que "nunca pasa nada malo" y generalmente expresan invariancia. Una propiedad de seguridad puede definir requisitos generales de software, como la ausencia de [deadlock](https://www.techtarget.com/whatis/definition/deadlock), o expresar propiedades específicas del dominio para los contratos (por ejemplo, invariantes en el control de acceso para funciones, valores admisibles de variables de estado o condiciones para transferencias de tokens). + +Tomemos por ejemplo este requisito de seguridad que cubre las condiciones para usar el `transfer()` o `transferFrom()` en los contratos de tokens ERC-20: _"El saldo de un remitente nunca es inferior a la cantidad solicitada de tokens que se enviarán". _. Esta descripción en lenguaje natural de un invariante de contrato se puede traducir en una especificación formal (matemática), que luego se puede comprobar rigurosamente para verificar su validez. + +Las propiedades de vitalidad afirman que "algo bueno finalmente sucede" y se refieren a la capacidad de un contrato para progresar por diferentes estados. Un ejemplo de una propiedad de vitalidad es la "liquidez", que se refiere a la capacidad de un contrato para transferir sus saldos a usuarios a petición. Si se viola esta propiedad, los usuarios no podrían retirar los activos almacenados en el contrato, como lo que sucedió con el [incidente de la billetera de Parity](https://www.cnbc.com/2017/11/08/accidental-bug-may-have-frozen-280-worth-of-ether-on-parity-wallet.html). + +### Especificaciones de bajo nivel {#low-level-specifications} + +Las especificaciones de alto nivel toman como punto de partida un modelo de estado finito de un contrato y definen las propiedades deseadas de este modelo. En contraste, las especificaciones de bajo nivel (también llamadas "especificaciones orientadas a propiedades") a menudo modelan programas (contratos inteligentes) como sistemas que constan de una colección de funciones matemáticas y describen el comportamiento correcto de dichos sistemas. + +En términos más simples, las especificaciones de bajo nivel analizan _rastros del programa_ e intentan definir las propiedades de un contrato inteligente sobre estos rastros. Los rastros, o pistas, se refieren a secuencias de ejecuciones de funciones que alteran el estado de un contrato inteligente; por lo tanto, las especificaciones de bajo nivel ayudan a especificar los requisitos para la ejecución interna de un contrato. + +Las especificaciones formales de bajo nivel se pueden dar como propiedades de estilo Hoare o invariantes en las rutas de ejecución. + +### Propiedades de estilo Hoare {#hoare-style-properties} + +La [lógica de Hoare](https://en.wikipedia.org/wiki/Hoare_logic) proporciona un conjunto de reglas formales para razonar sobre la corrección de los programas, incluidos los contratos inteligentes. Una propiedad de estilo Hoare está representada por un triple Hoare {_P_}_c_{_Q_}, donde _c_ es un programa y _P_ y _Q_ son predicados sobre el estado del _c_ (es decir, el programa), descrito formalmente como _precondiciones_ y _poscondiciones_, respectivamente. + +Una precondición es un predicado que describe las condiciones requeridas para la correcta ejecución de una función; los usuarios que invocan o llaman al contrato deben cumplir con este requisito. Una poscondición es un predicado que describe la condición que una función establece si se ejecuta correctamente; los usuarios pueden esperar que esta condición sea verdadera después de invocar la función. Un _invariante_ en la lógica de Hoare es un predicado que se conserva mediante la ejecución de una función (es decir, no cambia). + +Las especificaciones de estilo Hoare pueden garantizar _corrección parcial_ o _corrección total_. La implementación de la función de un contrato es "parcialmente correcta" si la condición previa es verdadera antes de que se ejecute la función, y si la ejecución termina, la poscondición también es verdadera. La prueba de corrección total se obtiene si una condición previa es verdadera antes de que se ejecute la función, se garantiza que la ejecución terminará y, cuando lo hace, la poscondición se mantiene verdadera. + +Obtener una prueba de corrección total es difícil, ya que algunas ejecuciones pueden retrasarse antes de terminar, o nunca terminar en absoluto. Dicho esto, la cuestión de si la ejecución termina es posiblemente un punto discutible, ya que el mecanismo de gas de Ethereum evita bucles de programa infinitos (la ejecución termina con éxito o termina debido a un error de "sin gas"). + +Las especificaciones de contratos inteligentes creadas utilizando la lógica de Hoare tendrán condiciones previas, poscondiciones e invariantes definidos para la ejecución de funciones y bucles en un contrato. Las precondiciones a menudo incluyen la posibilidad de entradas erróneas a una función, con condiciones posteriores que describen la respuesta esperada a dichas entradas (por ejemplo, lanzar una excepción específica). De esta manera, las propiedades de estilo Hoare son efectivas para garantizar la corrección de las implementaciones de los contratos. + +Muchos marcos de verificación formal utilizan especificaciones de estilo Hoare para probar la corrección semántica de las funciones. También es posible añadir propiedades de estilo Hoare (como aserciones) directamente al código del contrato utilizando las declaraciones `require` y `assert` en Solidity. + +Las declaraciones `require` expresan una condición previa o invariante y a menudo se utilizan para validar las entradas del usuario, mientras que `assert` captura una poscondición necesaria para la seguridad. Por ejemplo, se puede lograr un control de acceso adecuado para las funciones (un ejemplo de una propiedad de seguridad) utilizando `require` como una comprobación previa de la identidad de la cuenta invocante. Del mismo modo, un invariante sobre los valores permitidos de las variables de estado en un contrato (por ejemplo, el número total de tokens en circulación) se puede proteger de la violación mediante el uso de `assert` para confirmar el estado del contrato después de la ejecución de la función. + +### Propiedades de nivel de rastreo {#trace-level-properties} + +Las especificaciones basadas en rastros o pistas describen las operaciones que hacen la transición de un contrato entre diferentes estados y las relaciones entre estas operaciones. Como se explicó anteriormente, los rastros son secuencias de operaciones que alteran el estado de un contrato de una manera particular. + +Este enfoque se basa en el modelo de contratos inteligentes como sistemas de transición de estados con algunos estados predefinidos (descritos por variables de estado) junto con un conjunto de transiciones predefinidas (descritas por funciones de contrato). Además, un [gráfico de flujo de control](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/) (CFG), que es una representación gráfica del flujo de ejecución de un programa, se utiliza a menudo para describir la semántica operativa de un contrato. Aquí, cada rastro se representa como una ruta en el gráfico de flujo de control. + +Principalmente, las especificaciones de nivel de rastreo se utilizan para razonar sobre los patrones de ejecución interna en los contratos inteligentes. Al crear especificaciones de nivel de rastreo, afirmamos las rutas de ejecución admisibles (es decir, transiciones de estado) para un contrato inteligente. Usando técnicas, como la ejecución simbólica, podemos verificar formalmente que la ejecución nunca siga un camino no definido en el modelo formal. + +Usemos un ejemplo de un contrato de [DAO](/dao/) que tiene algunas funciones de acceso público para describir las propiedades a nivel de rastreo. Aquí, asumimos que el contrato de DAO permite a los usuarios realizar las siguientes operaciones: + +- Depositar fondos + +- Votar una propuesta después de depositar fondos + +- Reclamar un reembolso si no votan una propuesta + +Ejemplos de propiedades de nivel de rastreo podrían ser _"los usuarios que no depositan fondos no pueden votar sobre una propuesta"_ o _"los usuarios que no voten sobre una propuesta siempre deben poder reclamar un reembolso"_. Ambas propiedades afirman secuencias de ejecución preferidas (la votación no puede ocurrir _antes_ de depositar fondos, y reclamar un reembolso no puede ocurrir _después_ de votar sobre una propuesta). + +## Técnicas para la verificación formal de contratos inteligentes {#formal-verification-techniques} + +### Comprobación de modelos {#model-checking} + +La comprobación de modelos es una técnica de verificación formal en la que un algoritmo compara un modelo formal de un contrato inteligente con sus especificaciones. En la comprobación de modelos, los contratos inteligentes a menudo se representan como sistemas de transición de estado, mientras que las propiedades en estados de contrato permisibles se definen utilizando la lógica temporal. + +La comprobación de modelos requiere crear una representación matemática abstracta de un sistema (es decir, un contrato) y expresar las propiedades de este sistema utilizando fórmulas basadas en [lógica proposicional](https://www.baeldung.com/cs/propositional-logic). Esto simplifica la tarea del algoritmo de verificación del modelo, es decir, demostrar que un modelo matemático satisface una fórmula lógica dada. + +La comprobación de modelos en la verificación formal se utiliza principalmente para evaluar las propiedades temporales que describen el comportamiento de un contrato a lo largo del tiempo. Las propiedades temporales de los contratos inteligentes incluyen _seguridad_ y _vitalidad_, que explicamos anteriormente. + +Por ejemplo, una propiedad de seguridad relacionada con el control de acceso (por ejemplo, _Solo el propietario del contrato puede invocar `selfdestruct`_) se puede escribir en lógica formal. En lo sucesivo, el algoritmo de comprobación de modelos puede verificar si el contrato cumple con esta especificación formal. + +La comprobación de modelos utiliza la exploración espacial de estado, lo que implica la construcción de todos los estados posibles de un contrato inteligente y el intento de encontrar estados alcanzables que resulten en violaciones de propiedad. Sin embargo, esto puede conducir a un número infinito de estados (conocidos como el "problema de la explosión de estado"), por lo que los verificadores de modelos se basan en técnicas de abstracción para hacer posible el análisis eficiente de los contratos inteligentes. + +### Prueba de teorema {#theorem-proving} + +La prueba de teorema es un método de razonamiento matemático sobre la corrección de los programas, incluidos los contratos inteligentes. Implica transformar el modelo del sistema de un contrato y sus especificaciones en fórmulas matemáticas (declaraciones lógicas). + +El objetivo de la prueba de teorema es verificar la equivalencia lógica entre estas afirmaciones. La "equivalencia lógica" (también llamada "doble implicación lógica") es un tipo de relación entre dos declaraciones de tal manera que la primera declaración es verdadera _si y solo si_ la segunda declaración es verdadera. + +La relación requerida (equivalencia lógica) entre las declaraciones sobre el modelo de un contrato y su propiedad se formula como una declaración demostrable (llamada teorema). Usando un sistema formal de inferencia, el verificador de teoremas automatizado puede verificar la validez del teorema. En otras palabras, un verificador de teoremas puede probar de manera concluyente que el modelo de un contrato inteligente coincide con precisión con sus especificaciones. + +Mientras que la comprobación de modelos modela contratos como sistemas de transición con estados finitos, la comprobación de teoremas puede manejar el análisis de sistemas de estados infinitos. Sin embargo, esto significa que un verificador de teoremas automatizado no siempre puede saber si un problema lógico es "determinable" o no. + +Como resultado, a menudo se requiere asistencia humana para guiar al verificador de teoremas en la obtención de pruebas de corrección. El uso de asistencia humana en la verificación de teoremas hace que sea más costosa de usar que la verificación de modelos, que es totalmente automatizada. + +### Ejecución simbólica {#symbolic-execution} + +La ejecución simbólica es un método para analizar un contrato inteligente mediante la ejecución de funciones utilizando _valores simbólicos_ (por ejemplo, `x > 5`) en lugar de _valores concretos_ (por ejemplo, `x == 5`). Como técnica de verificación formal, la ejecución simbólica se utiliza para razonar formalmente sobre las propiedades de nivel de rastreo en el código de un contrato. + +La ejecución simbólica representa un rastreo de ejecución como una fórmula matemática sobre los valores de entrada simbólicos, también llamado _predicado de ruta_. Se utiliza un [solucionador SMT](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories) para comprobar si un predicado de ruta es "satisfacible" (es decir, existe un valor que puede satisfacer la fórmula). Si una ruta vulnerable es satisfacible, el solucionador SMT generará un valor concreto que active la ejecución hacia esa ruta. + +Supongamos que la función de un contrato inteligente toma como entrada un valor `uint` (`x`) y se revierte cuando `x` es mayor que `5` y también menor que `10`. Encontrar un valor para `x` que desencadene el error utilizando un procedimiento de prueba normal requeriría ejecutar docenas de casos de prueba (o más) sin la garantía de encontrar realmente una entrada que desencadene un error. + +Por el contrario, una herramienta de ejecución simbólica ejecutaría la función con el valor simbólico: `X > 5 ∧ X < 10` (es decir, `x` es mayor que 5 Y `x` es menor que 10). El predicado de ruta asociado `x = X > 5 ∧ X < 10` se daría luego a un solucionador SMT para que lo resuelva. Si un valor en particular satisface la fórmula `x = X > 5 ∧ X < 10`, el solucionador SMT lo calculará; por ejemplo, el solucionador podría producir `7` como valor para `x`. + +Debido a que la ejecución simbólica se basa en las entradas en un programa, y el conjunto de entradas para explorar todos los estados alcanzables es potencialmente infinito, sigue siendo una forma de prueba. Sin embargo, como se muestra en el ejemplo, la ejecución simbólica es más eficiente que las pruebas regulares para encontrar entradas que desencadenen violaciones de propiedades. + +Además, la ejecución simbólica produce menos falsos positivos que otras técnicas basadas en propiedades (por ejemplo, fuzzing) que generan entradas aleatorias a una función. Si se activa un estado de error durante la ejecución simbólica, entonces es posible generar un valor concreto que active el error y reproducir el problema. + +La ejecución simbólica también puede proporcionar cierto grado de prueba matemática de corrección. Considere el siguiente ejemplo de una función de contrato con protección contra desbordamiento: + +``` +function safe_add(uint x, uint y) returns(uint z){ + + z = x + y; + require(z>=x); + require(z>=y); + + return z; +``` + +Un rastreo de ejecución que resulte en un desbordamiento de enteros tendría que satisfacer la fórmula: `z = x + y AND (z >= x) AND (z=>y) AND (z < x OR z < y)`. Es poco probable que se resuelva una fórmula de este tipo, por lo que servirá como prueba matemática de que la función `safe_add` nunca resulte en el desbordamiento de enteros. + +### ¿Por qué usar la verificación formal para los contratos inteligentes? {#benefits-of-formal-verification} + +#### Necesidad de fiabilidad {#need-for-reliability} + +La verificación formal se utiliza para evaluar la corrección de los sistemas críticos para la seguridad cuya falla puede tener consecuencias devastadoras, como la muerte, lesiones o la ruina financiera. Los contratos inteligentes son aplicaciones de alto valor que controlan enormes cantidades de valor, y simples errores en el diseño pueden conducir a [pérdidas irrecuperables para los usuarios](https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/amp/). Sin embargo, la verificación formal de un contrato antes de la implementación puede aumentar las garantías de que funcionará como se espera una vez que se ejecute en la cadena de bloques. + +La fiabilidad es una cualidad muy deseada en cualquier contrato inteligente, especialmente porque el código implementado en la máquina virtual de Ethereum (EVM) suele ser inmutable. Dado que las actualizaciones posteriores al lanzamiento no son fácilmente accesibles, la necesidad de garantizar la fiabilidad de los contratos hace necesaria una verificación formal. La verificación formal es capaz de detectar problemas complicados, como desbordamientos hacia arriba y hacia abajo, el reingreso y optimizaciones de gas deficientes, que los auditores y los verificadores pueden pasar por alto. + +#### Demostrar la corrección funcional {#prove-functional-correctness} + +Las pruebas de programa son el método más común para demostrar que un contrato inteligente cumple con algunos requisitos. Esto implica ejecutar un contrato con una muestra de los datos que se espera que maneje y analizar su comportamiento. Si el contrato devuelve los resultados esperados para los datos de muestra, entonces los desarrolladores tienen una prueba objetiva de su corrección. + +No obstante, este enfoque no puede probar la ejecución correcta de valores de entrada que no formen parte de la muestra. Por lo tanto, probar un contrato puede ayudar a detectar errores (es decir, si algunas rutas de código no devuelven los resultados deseados durante la ejecución), pero **no puede probar de manera concluyente la ausencia de errores**. + +Por el contrario, la verificación formal puede demostrar formalmente que un contrato inteligente cumple con los requisitos para un rango infinito de ejecuciones _sin_ ejecutar el contrato en absoluto. Esto requiere crear una especificación formal que describa con precisión los comportamientos correctos del contrato y desarrollar un modelo formal (matemático) del sistema del contrato. Así, podremos seguir un procedimiento de prueba formal para comprobar la coherencia entre el modelo del contrato y su especificación. + +Con la verificación formal, la cuestión de verificar si la lógica comercial de un contrato satisface los requisitos es una proposición matemática que puede ser probada o refutada. Al probar formalmente una proposición, podemos verificar un número infinito de casos de prueba con un número finito de pasos. De esta manera, la verificación formal tiene mejores perspectivas de demostrar que un contrato es funcionalmente correcto con respecto a una especificación. + +#### Objetivos de verificación ideales {#ideal-verification-targets} + +Un objetivo de verificación describe el sistema que se verificará formalmente. La verificación formal se utiliza mejor en "sistemas integrados" (software pequeños y simples que forman parte de un sistema más grande). También son ideales para dominios especializados que tienen pocas reglas, ya que esto facilita la modificación de las herramientas para verificar las propiedades específicas del dominio. + +Los contratos inteligentes, al menos hasta cierto punto, cumplen con ambos requisitos. Por ejemplo, el pequeño tamaño de los contratos de Ethereum hace que sean adecuados para la verificación formal. Del mismo modo, la EVM sigue reglas simples, lo que facilita la especificación y verificación de las propiedades semánticas de los programas que se ejecutan en ella. + +### Ciclo de desarrollo más rápido {#faster-development-cycle} + +Las técnicas de verificación formal, como la verificación de modelos y la ejecución simbólica, son generalmente más eficientes que el análisis regular del código de los contratos inteligentes (realizado durante pruebas o auditorías). Esto se debe a que la verificación formal se basa en valores simbólicos para probar las afirmaciones ("¿qué pasa si un usuario intenta retirar _n_ ether?") a diferencia de las pruebas que utilizan valores concretos ("¿qué pasa si un usuario intenta retirar 5 ethers?"). + +Las variables de entrada simbólicas pueden cubrir múltiples clases de valores concretos, por lo que los enfoques de verificación formal prometen más cobertura de código en un período de tiempo más corto. Cuando se utiliza de manera efectiva, la verificación formal puede acelerar el ciclo de desarrollo para los desarrolladores. + +La verificación formal también mejora el proceso de creación de aplicaciones descentralizadas (dapps), ya que reduce los costosos errores de diseño. La actualización de los contratos (cuando es posible) para corregir vulnerabilidades requiere una extensa reescritura de las bases de código y más esfuerzo invertido en el desarrollo. La verificación formal puede detectar muchos errores en las implementaciones de contratos que los verificadores y los auditores pueden pasar por alto, y proporciona una gran oportunidad de solucionar esos problemas antes de implementar un contrato. + +## Desventajas de la verificación formal {#drawbacks-of-formal-verification} + +### Coste del trabajo manual {#cost-of-manual-labor} + +La verificación formal, especialmente la verificación semiautomatizada en la que un humano guía al verificador para obtener pruebas de corrección, requiere un trabajo manual considerable. Además, la creación de especificaciones formales es una actividad compleja que requiere un alto nivel de habilidad. + +Estos factores (esfuerzo y habilidad) hacen que la verificación formal sea más exigente y costosa en comparación con los métodos habituales para evaluar la corrección de los contratos, como las pruebas y las auditorías. No obstante, pagar el costo de una auditoría de verificación completa es práctico, teniendo en cuenta el costo de los errores en las implementaciones de contratos inteligentes. + +### Falsos negativos {#false-negatives} + +La verificación formal solo puede comprobar si la ejecución del contrato inteligente coincide con la especificación formal. Como tal, es importante asegurarse de que la especificación describa correctamente los comportamientos esperados de un contrato inteligente. + +Si las especificaciones están mal escritas, las violaciones de las propiedades —que apuntan a ejecuciones vulnerables— no pueden ser detectadas por la auditoría de verificación formal. En este caso, un desarrollador podría asumir erróneamente que el contrato está libre de errores. + +### Problemas de rendimiento {#performance-issues} + +La verificación formal tiene una serie de problemas de rendimiento. Por ejemplo, los problemas de explosión de estado y ruta encontrados durante la comprobación de modelos y la comprobación simbólica, respectivamente, pueden afectar a los procedimientos de verificación. Además, las herramientas de verificación formal a menudo utilizan solucionadores SMT y otros solucionadores de restricciones en su capa subyacente, y estos solucionadores se basan en procedimientos computacionalmente intensivos. + +Además, no siempre es posible que los verificadores de programas determinen si una propiedad (descrita como una fórmula lógica) se puede satisfacer o no (el "[problema de decidibilidad](https://en.wikipedia.org/wiki/Decision_problem)") porque es posible que un programa nunca termine. Como tal, podría ser imposible probar algunas propiedades para un contrato, incluso si está bien especificado. + +## Herramientas de verificación formal para contratos inteligentes de Ethereum {#formal-verification-tools} + +### Lenguajes de especificación para crear especificaciones formales {#specification-languages} + +**Act**: \_\*Act permite la especificación de actualizaciones de almacenamiento, pre/poscondiciones e invariantes del contrato. Su conjunto de herramientas también tiene backends de prueba capaces de probar muchas propiedades a través de Coq, solucionadores SMT o hevm.\*\* + +- [GitHub](https://github.com/ethereum/act) +- [Documentación](https://ethereum.github.io/act/) + +**Scribble:** \_\*Scribble transforma las anotaciones de código del lenguaje de especificación de Scribble en afirmaciones concretas que comprueban la especificación. \*\* + +- [Documentación](https://docs.scribble.codes/) + +**Dafny:** \_\*Dafny es un lenguaje de programación listo para la verificación que se basa en anotaciones de alto nivel para razonar y demostrar la corrección del código.\*\* + +- [GitHub](https://github.com/dafny-lang/dafny) + +### Verificadores de programas para comprobar la corrección {#program-verifiers} + +**Certora Prover:** _Certora Prover es una herramienta de verificación formal automática para comprobar la corrección del código en contratos inteligentes. Las especificaciones están escritas en CVL (Certora Verification Language), y las violaciones de propiedad se detectan mediante una combinación de análisis estático y resolución de restricciones. _ + +- [Sitio web](https://www.certora.com/) +- [Documentación](https://docs.certora.com/en/latest/index.html) + +**Solidity SMTChecker:** \_\*El SMTChecker de Solidity es un comprobador de modelos integrado basado en SMT (Satisfiability Modulo Theories) y resolución de Horn. Confirma si el código fuente de un contrato coincide con las especificaciones durante la compilación y comprueba estáticamente las violaciones de las propiedades de seguridad. \*\* + +- [GitHub](https://github.com/ethereum/solidity) + +**solc-verify:** \_\*solc-verify es una versión extendida del compilador de Solidity que puede realizar una verificación formal automatizada en el código de Solidity utilizando anotaciones y verificación de programa modular. \*\* + +- [GitHub](https://github.com/SRI-CSL/solidity) + +**KEVM:** \_\*KEVM es una semántica formal de la máquina virtual de Ethereum (EVM) escrita en el marco K. KEVM es ejecutable y puede probar ciertas afirmaciones relacionadas con propiedades utilizando la lógica de accesibilidad. \*\* + +- [GitHub](https://github.com/runtimeverification/evm-semantics) +- [Documentación](https://jellopaper.org/) + +### Marcos lógicos para la prueba de teoremas {#theorem-provers} + +**Isabelle:** _Isabelle/HOL es un asistente de prueba que permite expresar fórmulas matemáticas en lenguaje formal y proporciona herramientas para probar esas fórmulas. La aplicación principal es la formalización de pruebas matemáticas y, en particular, la verificación formal, que incluye probar la corrección de hardware o software informático y probar las propiedades de lenguajes y protocolos informáticos. _ + +- [GitHub](https://github.com/isabelle-prover) +- [Documentación](https://isabelle.in.tum.de/documentation.html) + +**Coq:** _Coq es un verificador de teoremas interactivo que le permite definir programas utilizando teoremas y generar de forma interactiva pruebas de corrección revisadas por máquina. _ + +- [GitHub](https://github.com/coq/coq) +- [Documentación](https://coq.github.io/doc/v8.13/refman/index.html) + +### Herramientas basadas en la ejecución simbólica para detectar patrones vulnerables en contratos inteligentes {#symbolic-execution-tools} + +**Manticore:** \__Manticore es una herramienta de ejecución simbólica para el análisis de contratos inteligentes_. \* + +- [GitHub](https://github.com/trailofbits/manticore) +- [Documentación](https://github.com/trailofbits/manticore/wiki) + +**hevm:** \_\*hevm es un motor de ejecución simbólica y comprobador de equivalencia para el bytecode de EVM. \*\* + +- [GitHub](https://github.com/dapphub/dapptools/tree/master/src/hevm) + +**Mito:** _Una herramienta de ejecución simbólica para detectar vulnerabilidades en los contratos inteligentes de Ethereum_ + +- [GitHub](https://github.com/ConsenSys/mythril-classic) +- [Documentación](https://mythril-classic.readthedocs.io/en/develop/) + +## Para mayor información {#further-reading} + +- [Cómo funciona la verificación formal de los contratos inteligentes](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/) +- [Cómo la verificación formal puede garantizar contratos inteligentes sin errores](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1) +- [Visión general de los proyectos de verificación formal en el ecosistema de Ethereum](https://github.com/leonardoalt/ethereum_formal_verification_overview) +- [Verificación formal de extremo a extremo del contrato inteligente de depósito de Ethereum 2.0](https://runtimeverification.com/blog/end-to-end-formal-verification-of-ethereum-2-0-deposit-smart-contract/) +- [Verificar formalmente el contrato inteligente más popular del mundo](https://www.zellic.io/blog/formal-verification-weth) +- [SMTChecker y la verificación formal](https://docs.soliditylang.org/en/v0.8.15/smtchecker.html) diff --git a/src/content/translations/es/developers/docs/smart-contracts/testing/index.md b/src/content/translations/es/developers/docs/smart-contracts/testing/index.md index 9880bc7ada0..60a562355f2 100644 --- a/src/content/translations/es/developers/docs/smart-contracts/testing/index.md +++ b/src/content/translations/es/developers/docs/smart-contracts/testing/index.md @@ -1,47 +1,304 @@ --- title: Prueba de contratos inteligentes -description: +description: Descripción general de las técnicas y consideraciones para probar contratos inteligentes de Ethereum. lang: es -incomplete: true --- -## Herramientas de prueba y bibliotecas {#testing-tools-and-libraries} +Las cadenas de bloques públicas como Ethereum son inmutables, lo que dificulta cambiar el código de un contrato inteligente después de su implementación. Existen [patrones de actualización de contratos](/developers/docs/smart-contracts/upgrading/) para realizar "actualizaciones virtuales", pero son difíciles de implementar y requieren consenso social. Además, una actualización solo puede corregir un error _después_ de que se descubre: si un atacante descubre la vulnerabilidad primero, su contrato inteligente corre el riesgo de sufrir una explotación. -**Waffle: ** **_Un entorno de trabajo para desarrollar y realizar pruebas de contratos inteligentes avanzados (basado en ethers.js)._** +Por estos motivos, probar los contratos inteligentes antes de [implementarlos](/developers/docs/smart-contracts/deploying/) en la Red principal es un requisito mínimo de [seguridad](/developers/docs/smart-contracts/security/). Hay muchas técnicas para probar contratos y evaluar que el código sea correcto; lo que elija depende de sus necesidades. Sin embargo, un paquete de pruebas compuesto por diferentes herramientas y enfoques es ideal para detectar fallas de seguridad mayores y menores en el código de un contrato. -- [getwaffle.io](https://getwaffle.io/) -- [GitHub](https://github.com/EthWorks/Waffle) +## Requisitos previos {#prerequisites} -**Solidity-Coverage:** **_Herramienta alternativa de cobertura de código de Solidity._** +Esta página explica cómo probar contratos inteligentes antes de implementarlos en la red Ethereum. Supone que está familiarizado con los [contratos inteligentes](/developers/docs/smart-contracts/). -- [GitHub](https://github.com/sc-forks/solidity-coverage) +## ¿Qué son las pruebas de contratos inteligentes? {#what-is-smart-contract-testing} -**Whiteblock Genesis: ** **_Una plataforma de desarrollo de punto a punto y pruebas para la blockchain._** +La prueba o evaluación de contratos inteligentes es el proceso de verificar que el código de un contrato inteligente funcione como se espera. Las pruebas son útiles para comprobar si un contrato inteligente en particular cumple con los requisitos de confiabilidad, usabilidad y seguridad. -- [Whiteblock.io](https://whiteblock.io) -- [Documentación](https://docs.whiteblock.io) -- [GitHub](https://github.com/whiteblock/genesis) +Aunque los enfoques varían, la mayoría de los métodos de prueba requieren la ejecución de un contrato inteligente con una pequeña muestra de los datos que se espera que maneje. Si el contrato produce resultados correctos para los datos de muestra, se supone que funciona correctamente. La mayoría de las herramientas de prueba proporcionan recursos para escribir y ejecutar [casos de prueba](https://en.m.wikipedia.org/wiki/Test_case) para comprobar si la ejecución de un contrato coincide con los resultados esperados. -**Entorno de pruebas de OpenZeppelin:** **_Las pruebas de contratos inteligentes más rápidas. Configuración en línea para una experiencia increíble._** +### ¿Por qué es importante probar contratos inteligentes? {#importance-of-testing-smart-contracts} -- [GitHub](https://github.com/OpenZeppelin/openzeppelin-test-environment) -- [Documentación](https://docs.openzeppelin.com/test-environment/) +Como los contratos inteligentes a menudo gestionan activos financieros de alto valor, los errores menores de programación pueden y a menudo llevan a [pérdidas masivas para los usuarios](https://rekt.news/leaderboard/). Las pruebas rigurosas pueden, sin embargo, ayudarle a descubrir problemas en el código de un contrato inteligente y arreglarlos antes del lanzamiento en la Red principal. -**Asistentes de pruebas de OpenZeppelin:** **_Biblioteca para pruebas de contratos inteligentes de Ethereum. Asegúrate de que tus contratos se comportan como esperabas._** +Aunque es posible actualizar un contrato si se descubre un error, las actualizaciones son complejas y pueden [provocar errores](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/) si se manejan incorrectamente. Actualizar un contrato invalida aún más el principio de inmutabilidad y carga a los usuarios con supuestos de confianza adicionales. Por el contrario, un plan integral para probar su contrato mitiga los riesgos de seguridad de los contratos inteligentes y reduce la necesidad de realizar actualizaciones complejas en la lógica después de su implementación. -- [GitHub](https://github.com/OpenZeppelin/openzeppelin-test-helpers) -- [Documentación](https://docs.openzeppelin.com/test-helpers) +## Métodos para probar contratos inteligentes {#methods-for-testing-smart-contracts} + +Los métodos para probar los contratos inteligentes de Ethereum se agrupan en dos categorías generales: **pruebas automáticas** y **pruebas manuales**. Las pruebas automáticas y las pruebas manuales ofrecen beneficios y compensaciones únicos, pero usted puede combinar ambas para crear un plan sólido para analizar sus contratos. + +### Prueba automatizada {#automated-testing} + +Las pruebas automatizadas utilizan herramientas que comprueban automáticamente el código de un contrato inteligente para detectar errores en la ejecución. El beneficio de las pruebas automatizadas proviene del uso de [scripts](https://www.techtarget.com/whatis/definition/script?amp=1) para guiar la evaluación de las funcionalidades del contrato. Las pruebas con scripts pueden programarse para ejecutarse repetidamente con intervención humana mínima, lo que hace que sean más eficientes que los métodos manuales de prueba. + +Las pruebas automatizadas son particularmente útiles cuando las pruebas son repetitivas y consumen mucho tiempo, son difíciles de llevar a cabo manualmente, son susceptibles a errores humanos o implican la evaluación de funciones contractuales críticas. Pero las herramientas de pruebas automatizadas pueden tener inconvenientes: pueden pasar por alto ciertos errores y producir muchos [falsos positivos](https://www.contrastsecurity.com/glossary/false-positive). Por lo tanto, combinar las pruebas automatizadas con pruebas manuales para contratos inteligentes es el enfoque ideal. + +### Pruebas manuales {#manual-testing} + +Las pruebas manuales son asistidas por las personas e implican ejecutar cada caso de prueba en su paquete de herramientas de prueba uno tras otro al analizar la corrección de un contrato inteligente. Esto se diferencia de las pruebas automatizadas, donde usted puede ejecutar varias pruebas aisladas simultáneamente en un contrato y obtener un informe que muestre todas las pruebas fallidas y aprobadas. + +Las pruebas manuales pueden ser llevadas a cabo por un solo individuo siguiendo un plan de prueba escrito que cubra diferentes escenarios de prueba. También puede hacer que múltiples individuos o grupos interactúen con un contrato inteligente durante un período especificado como parte de la prueba manual. Los verificadores compararán el comportamiento real del contrato contra el comportamiento esperado, marcando cualquier diferencia como bug o error. + +Las pruebas manuales efectivas requieren recursos considerables (habilidad, tiempo, dinero y esfuerzo), y es posible –debido al error humano– perder ciertos errores mientras se ejecutan las verificaciones. Pero las pruebas manuales también pueden ser beneficiosas, por ejemplo, un verificador humano (p. ej., un auditor) puede utilizar la intuición para detectar casos extremos que una herramienta de pruebas automatizadas pasaría por alto. + +## Pruebas automatizadas para contratos inteligentes {#automated-testing-for-smart-contracts} + +### Pruebas unitarias {#unit-testing-for-smart-contracts} + +Las pruebas unitarias evalúan las funciones del contrato por separado y comprueban que cada componente funcione correctamente. Las pruebas unitarias bien hechas deben ser sencillas, rápidas de ejecutar y proporcionar una idea clara de lo que salió mal si fallan. + +Las pruebas unitarias son útiles para comprobar que las funciones devuelvan valores esperados y que el almacenamiento del contrato se actualice correctamente después de la ejecución de la función. Además, ejecutar pruebas unitarias después de hacer cambios en la base de código de los contratos asegura que añadir una nueva lógica no introduzca errores. A continuación hay algunas pautas para ejecutar pruebas unitarias eficaces: + +#### Directrices para las pruebas unitarias en contratos inteligentes {#unit-testing-guidelines} + +##### 1. Comprender la lógica de negocio y el flujo de trabajo de sus contratos + +Antes de escribir pruebas unitarias, debe saber qué funcionalidades ofrece un contrato inteligente y cómo los usuarios accederán y utilizarán esas funciones. Esto es particularmente útil para ejecutar [pruebas de ruta feliz](https://en.m.wikipedia.org/wiki/Happy_path) que determinan si las funciones en un contrato devuelven el resultado esperado para entradas de usuario válidas. Explicaremos este concepto usando este ejemplo (abreviado) de [un contrato de subasta](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple-open-auction). + +``` +constructor( + uint biddingTime, + address payable beneficiaryAddress + ) { + beneficiary = beneficiaryAddress; + auctionEndTime = block.timestamp + biddingTime; + } + +function bid() external payable { + + if (block.timestamp > auctionEndTime) + revert AuctionAlreadyEnded(); + + if (msg.value <= highestBid) + revert BidNotHighEnough(highestBid); + + if (highestBid != 0) { + pendingReturns[highestBidder] += highestBid; + } + highestBidder = msg.sender; + highestBid = msg.value; + emit HighestBidIncreased(msg.sender, msg.value); + } + + function withdraw() external returns (bool) { + uint amount = pendingReturns[msg.sender]; + if (amount > 0) { + pendingReturns[msg.sender] = 0; + + if (!payable(msg.sender).send(amount)) { + pendingReturns[msg.sender] = amount; + return false; + } + } + return true; + } + +function auctionEnd() external { + if (block.timestamp < auctionEndTime) + revert AuctionNotYetEnded(); + if (ended) + revert AuctionEndAlreadyCalled(); + + ended = true; + emit AuctionEnded(highestBidder, highestBid); + + beneficiary.transfer(highestBid); + } +} +``` + +Se trata de un simple contrato de subasta diseñado para recibir ofertas durante el periodo de oferta. Si la `highestBid` (oferta más alta) aumenta, la oferta más alta anterior recibe su dinero; una vez finalizado el período de oferta, el `beneficiary` (beneficiario) llama al contrato para obtener su dinero. + +Pruebas unitarias para un contrato como este cubrirían diferentes funciones que un usuario podría invocar al interactuar con el contrato. Un ejemplo sería hacer una prueba unitaria que compruebe si un usuario puede hacer una oferta mientras la subasta está en curso (es decir, las llamadas a `bid()` son exitosas) o una que compruebe si un usuario puede hacer una oferta más alta que la actual `highestBid`. + +Entender el flujo de trabajo operacional de un contrato también ayuda a escribir pruebas unitarias que comprueben si la ejecución cumple los requisitos. Por ejemplo, el contrato de subasta especifica que los usuarios no puedan realizar ofertas cuando la subasta haya finalizado (es decir, cuando `auctionEndTime` sea inferior a `block.timestamp`). Así, un desarrollador podría ejecutar una prueba unitaria que compruebe si las llamadas a la función `bid()` tienen éxito o fallan cuando la subasta ha terminado (a saber, cuando `auctionEndTime` > `block.timestamp`). + +##### 2. Evaluar todas las suposiciones relacionadas con la ejecución del contrato + +Es importante documentar cualquier suposición sobre la ejecución de un contrato y escribir pruebas unitarias para verificar la validez de esos supuestos. Aparte de ofrecer protección contra la ejecución inesperada, probar las afirmaciones lo obligan a pensar en operaciones que podrían romper el modelo de seguridad de un contrato inteligente. Un consejo útil es ir más allá de "pruebas de usuarios felices" y escribir pruebas negativas que comprueben si una función falla para las entradas incorrectas. + +Muchos marcos de pruebas unitarias le permiten crear aserciones, que son declaraciones simples que indican lo que un contrato puede o no puede hacer, y ejecutar pruebas para verificar si esas aserciones se cumplen durante la ejecución. Un desarrollador que trabaje en el contrato de subasta descrito anteriormente podría hacer las siguientes afirmaciones sobre su comportamiento antes de ejecutar pruebas negativas: + +- Los usuarios no pueden realizar ofertas cuando la subasta haya finalizado o aún no haya comenzado. + +- El contrato de subasta se revertirá si una oferta cae por debajo del límite aceptable o del monto mínimo. + +- A los usuarios que no logren ganar la oferta se les acreditarán sus fondos + +**Nota**: Otra forma de probar suposiciones es escribir pruebas que activen [modificadores de funciones](https://docs.soliditylang.org/en/v0.8.16/contracts.html#function-modifiers) en un contrato, especialmente declaraciones `require`, `assert` y `if...else`. + +##### 3. Medir la cobertura de código + +La [cobertura de código](https://en.m.wikipedia.org/wiki/Code_coverage) es una métrica de prueba que realiza un seguimiento del número de ramificaciones, líneas y declaraciones ejecutadas en su código ejecuado durante las pruebas. Las pruebas deben tener una buena cobertura de código; de lo contrario, puede obtener "falsos negativos" que hagan que el contrato pase todas las pruebas cuando en realidad existen vulnerabilidades. Registrar una alta cobertura de código, sin embargo, brinda la garantía de que todas las declaraciones y funciones en un contrato inteligente fueron suficientemente probadas para verificar que son correctas. + +##### 4. Utilizar marcos de pruebas bien desarrollados + +La calidad de las herramientas utilizadas para ejecutar pruebas unitarias en sus contratos inteligentes es crucial. Un marco de pruebas ideal es aquel que se mantiene regularmente, proporciona funciones útiles (por ejemplo, capacidades de registro e informes) y ha sido ampliamente utilizado y evaluado por otros desarrolladores. + +Los marcos de pruebas unitarias para contratos inteligentes de Solidity están disponibles en diferentes lenguajes (principalmente JavaScript, Python y Rust). A continuación, puede encontrar algunas guías para obtener información sobre cómo comenzar a ejecutar pruebas unitarias con diferentes marcos de pruebas: + +- **[Ejecutar pruebas unitarias con Truffle](https://trufflesuite.com/docs/truffle/testing/testing-your-contracts/)** +- **[Ejecutar pruebas unitarias con Brownie](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** +- **[Ejecutar pruebas unitarias con Foundry](https://book.getfoundry.sh/forge/writing-tests)** +- **[Ejecutar pruebas unitarias con Waffle](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)** +- **[Ejecutar pruebas unitarias con Remix](https://remix-ide.readthedocs.io/en/latest/unittesting.html#write-tests)** +- **[Ejecutar pruebas unitarias con Ape](https://docs.apeworx.io/ape/stable/userguides/testing.html)** +- **[Ejecutar pruebas unitarias con Hardhat](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** + +### Pruebas de integración {#integration-testing-for-smart-contracts} + +Mientras que las pruebas unitarias depuran las funciones de un contrato de forma aislada, las pruebas de integración evalúan los componentes de un contrato inteligente en su conjunto. Las pruebas de integración pueden detectar problemas que surjan de llamadas a múltiples contratos o interacciones entre diferentes funciones en un mismo contrato inteligente. Por ejemplo, pueden ayudar a comprobar si cosas como la [herencia](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance) e inyección de dependencias funcionan correctamente. + +Las pruebas de integración son útiles si su contrato adopta una arquitectura modular o interactúa con otros contratos en cadena durante la ejecución. Una forma de ejecutar pruebas de integración es [bifurcar la cadena de bloques](/glossary/#fork) a una altura específica (usando una herramienta como [Ganache](https://trufflesuite.com/docs/ganache/) o [Hardhat](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks)) y simular interacciones entre su contrato y contratos implementados. + +La cadena de bloques bifurcada se comportará de manera similar a la Red principal y tendrá cuentas con estados y saldos asociados. Pero solo actúa como un entorno de desarrollo local sandbox (aislado), lo que significa que no necesitará ETH real para las transacciones, por ejemplo, ni sus cambios afectarán el protocolo de Ethereum real. + +### Prueba basada en propiedades {#property-based-testing-for-smart-contracts} + +Las pruebas basadas en propiedades son el proceso de verificar que un contrato inteligente satisfaga alguna propiedad definida. Las propiedades aseveran hechos sobre el comportamiento de un contrato que se esperan que sean verdaderos en diferentes escenarios: un ejemplo de una propiedad de contrato inteligente podría ser "Las operaciones aritméticas en el contrato nunca se desbordan o caen por debajo de los valores aceptables". + +El **análisis estático** y el **análisis dinámico** son dos técnicas comunes para ejecutar pruebas basadas en propiedades, y ambos pueden verificar que el código de un programa (un contrato inteligente en este caso) satisfaga alguna propiedad predefinida. Algunas herramientas de pruebas basadas en propiedades vienen con reglas predefinidas sobre las propiedades de contrato esperadas y verifican el código contra esas reglas, mientras que otras le permiten crear propiedades personalizadas para un contrato inteligente. + +#### Análisis estático {#static-analysis} + +Un analizador estático toma como entrada el código fuente de un contrato inteligente y produce resultados declarando si un contrato satisface una propiedad o no. A diferencia del análisis dinámico, el análisis estático no implica la ejecución de un contrato para analizar si funciona correctmente. En su lugar, razona sobre todas las posibles rutas que un contrato inteligente podría tomar durante la ejecución (es decir, examinando la estructura del código fuente para determinar lo que significaría para la operación de los contratos en tiempo de ejecución). + +[Linting](https://www.perforce.com/blog/qac/what-lint-code-and-why-linting-important) y las [pruebas estáticas](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis) son métodos comunes para ejecutar un análisis estático en los contratos. Ambos requieren analizar representaciones de bajo nivel de la ejecución de un contrato, como [árboles de sintaxis abstracta](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) y [gráficos de flujo de control](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/) generados por el compilador. + +En la mayoría de los casos, el análisis estático es útil para detectar problemas de seguridad como el uso de construcciones inseguras, errores de sintaxis o violaciones de los estándares de codificación en el código de contratos. Sin embargo, los analizadores estáticos son conocidos generalmente por ser poco efectivos al detectar vulnerabilidades más profundas, y pueden producir demasiados falsos positivos. + +#### Análisis dinámico {#dynamic-analysis} + +El análisis dinámico genera entradas simbólicas (por ejemplo, en [ejecución simbólica](https://en.m.wikipedia.org/wiki/Symbolic_execution)) o entradas concretas (p. ej., en [fuzzing](https://owasp.org/www-community/Fuzzing)) a las funciones de contratos inteligentes para ver si algún rastro de ejecución viola propiedades específicas. Esta forma de pruebas basadas en propiedades difiere de las pruebas unitarias en que los casos de prueba cubren múltiples escenarios y un programa maneja la generación de casos de prueba. + +El [fuzzing](https://halborn.com/what-is-fuzz-testing-fuzzing/) es un ejemplo de una técnica de análisis dinámico para verificar propiedades arbitrarias en contratos inteligentes. Un fuzzer invoca funciones en un contrato objetivo con variaciones aleatorias o mal formadas de un valor de entrada definido. Si el contrato inteligente entra en un estado de error (p. ej., donde falle una afirmación), el problema se reporta y las entradas que impulsan la ejecución hacia la ruta vulnerable se producen en un informe. + +El fuzzing es útil para evaluar el mecanismo de validación de entrada de un contrato inteligente, ya que un manejo inadecuado de entradas inesperadas podría resultar en una ejecución no intencionada y producir efectos peligrosos. Esta forma de pruebas basadas en propiedades puede ser ideal por varias razones: + +1. **Escribir casos de prueba para abordar muchos escenarios es difícil.** Una prueba de propiedad solo requiere que defina un comportamiento y un rango de datos con los que probar el comportamiento; el programa genera automáticamente casos de prueba basados en la propiedad definida. + +2. **Es posible que su paquete de herramientas de prueba no cubra suficientemente todas las rutas posibles dentro del programa.** Incluso con una cobertura del 100 %, es posible pasar por alto casos extremos. + +3. **Las pruebas unitarias prueban que un contrato se ejecute correctamente para los datos de muestra, pero no se sabe si el contrato se ejecutará correctamente para entradas fuera de la muestra.** Las pruebas basadas en propiedades ejecutan un contrato objetivo con múltiples variaciones de un valor de entrada dado para encontrar rastros de ejecución que causen fallas de afirmación. Así, una prueba de propiedad proporciona más garantías de que un contrato se ejecutará correctamente para una amplia clase de datos de entrada. + +### Directrices para ejecutar pruebas basadas en propiedades en contratos inteligentes {#running-property-based-tests} + +Ejecutar pruebas basadas en propiedades típicamente comienza con la definición de una propiedad (p. ej., ausencia de [desbordamientos de enteros](https://github.com/ConsenSys/mythril/wiki/Integer-Overflow)) o una colección de propiedades que desee verificar en un contrato inteligente. También puede ser necesario definir un rango de valores dentro del cual el programa pueda generar datos para entradas de transacción al escribir pruebas de propiedad. + +Una vez configurada correctamente, la herramienta de prueba basada en propiedades ejecutará las funciones del contrato inteligente con entradas generadas al azar. Si hay alguna violación de afirmación, obtendrá un informe con datos de entrada concretos que violan la propiedad en evaluación. Vea algunas de las siguientes guías para comenzar a ejecutar pruebas basadas en propiedades con diferentes herramientas: + +- **[Análisis estático de contratos inteligentes con Slither](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/slither#slither)** +- **[Pruebas basadas en propiedades con Brownie](https://eth-brownie.readthedocs.io/en/stable/tests-hypothesis-property.html)** +- **[Contratos de fuzzing con Foundry](https://book.getfoundry.sh/forge/fuzz-testing)** +- **[Contratos de fuzzing con Echidna](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna#echidna-tutorial)** +- **[Ejecución simbólica de contratos inteligentes con Manticore](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore#manticore-tutorial)** +- **[Ejecución simbólica de contratos inteligentes con Mythril](https://mythril-classic.readthedocs.io/en/master/tutorial.html)** + +## Pruebas manuales para contratos inteligentes {#manual-testing-for-smart-contracts} + +Las pruebas manuales de contratos inteligentes a menudo vienen más tarde en el ciclo de desarrollo después de ejecutar pruebas automatizadas. Esta forma de verificación evalúa el contrato inteligente como un producto totalmente integrado para ver si se comporta como se especifica en los requisitos técnicos. + +### Probar contratos en una cadena de bloques local {#testing-on-local-blockchain} + +Si bien las pruebas automatizadas realizadas en un entorno de desarrollo local pueden proporcionar información útil de depuración, querrá saber cómo se comporta su contrato inteligente en un entorno de producción. Sin embargo, la implementación en la cadena principal de Ethereum incurre en tarifas de gas —por no mencionar que usted o sus usuarios pueden perder dinero real si su contrato inteligente todavía tiene errores—. + +Probar su contrato en una cadena de bloques local (también conocida como una [red de desarrollo](/developers/docs/development-networks/)) es una alternativa recomendada a las pruebas en la Red principal. Una cadena de bloques local es una copia de la cadena de bloques de Ethereum que se ejecuta localmente en su computadora y simula el comportamiento de la capa de ejecución de Ethereum. Como tal, puede programar transacciones para interactuar con un contrato sin incurrir en gastos significativos. + +Ejecutar contratos en una cadena de bloques local podría ser útil como una forma de prueba de integración manual. Los [contratos inteligentes son altamente componibles](/developers/docs/smart-contracts/composability/), lo que permite la integración con protocolos existentes —pero aun así necesitará asegurarse de que estas complejas interacciones en cadena produzcan los resultados correctos—. + +[Más información sobre las redes de desarrollo.](/developers/docs/development-networks/) + +### Pruebas de contratos en redes de pruebas {#testing-contracts-on-testnets} + +Una red de pruebas o testnet funciona exactamente como la Red principal de Ethereum, excepto que usa Ether (ETH) sin valor real. Implementar su contrato en una [red de pruebas](/developers/docs/networks/#ethereum-testnets) significa que cualquiera puede interactuar con él (por ejemplo, a través del frontend de la dapp) sin poner fondos en riesgo. + +Esta forma de prueba manual es útil para evaluar el flujo de extremo a extremo de la aplicación desde el punto de vista del usuario. Aquí, los beta testers también pueden realizar ejecuciones de prueba y reportar cualquier problema en la lógica de negocio del contrato y su funcionalidad general. + +Implementar en una red de pruebas después de probar en una cadena de bloques local es ideal, ya que la primera está más cerca del comportamiento de la Máquina virtual de Ethereum. Por lo tanto, es común que muchos proyectos nativos de Ethereum implementen dapps en redes de prueba para evaluar la operación de contratos inteligentes en condiciones reales. + +[Más información sobre las redes de prueba de Ethereum.](/developers/docs/development-networks/#public-beacon-testchains) + +## Pruebas vs. verificación formal {#testing-vs-formal-verification} + +Si bien las pruebas ayudan a confirmar que un contrato devuelva los resultados esperados para algunas entradas de datos, no puede probar de manera concluyente lo mismo para las entradas no utilizadas durante las pruebas. La verificación de un contrato inteligente, por lo tanto, no puede garantizar la "corrección funcional" (o sea, no puede mostrar que un programa se comporte como se espera para _todos_ los conjuntos de valores de entrada). + +La verificación formal es un método para evaluar que un software funcione como se espera comprobando si un modelo formal del programa coincide con la especificación formal. Un modelo formal es una representación matemática abstracta de un programa, mientras que una especificación formal define las propiedades de un programa (a saber, afirmaciones lógicas sobre la ejecución del programa). + +Dado que las propiedades están escritas en términos matemáticos, es posible verificar que un modelo formal (matemático) del sistema satisfaga una especificación utilizando reglas lógicas de inferencia. Por lo tanto, se dice que las herramientas de verificación formal producen una "prueba matemática" del funcionamiento adecuado de un sistema. + +A diferencia de las pruebas, la verificación formal puede utilizarse para verificar si una ejecución de contrato inteligente satisface una especificación formal para _todas_ las ejecuciones (es decir, no tiene errores) sin necesidad de ejecutarlo con datos de muestra. Esto no solo reduce el tiempo dedicado a ejecutar cientos de pruebas unitarias, sino que también es más eficaz para detectar vulnerabilidades ocultas. Dicho esto, las técnicas de verificación formal están en un espectro que depende de su dificultad de aplicación y utilidad. + +[Más información sobre la verificación formal de contratos inteligentes.](/developers/docs/smart-contracts/formal-verification) + +## Pruebas vs. auditorías y recompensas por errores {#testing-vs-audits-bug-bounties} + +Como se ha mencionado, las pruebas rigurosas rara vez pueden garantizar la ausencia de errores en un contrato; los enfoques de verificación formal pueden proporcionar mayores garantías de corrección, pero actualmente son difíciles de usar y suponen costes considerables. + +Aun así, puede aumentar aún más la posibilidad de captar vulnerabilidades en un contrato obteniendo una revisión de código independiente. Las [auditorías de contratos inteligentes](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/) y [recompensas por detectar errores](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7) son dos formas de hacer que otros analicen sus contratos. + +Las auditorías son realizadas por auditores con experiencia en encontrar casos de fallas de seguridad y malas prácticas de desarrollo en contratos inteligentes. Una auditoría generalmente incluirá pruebas (y posiblemente verificación formal), así como una revisión manual de toda la base de código. + +Por su parte, un programa de recompensa por errores generalmente involucra ofrecer una recompensa financiera a un individuo (comúnmente descrito como [hackers de sombrero blanco]()) que descubra una vulnerabilidad en un contrato inteligente y lo divulgue a los desarrolladores. Las recompensas por detectar errores son similares a las auditorías, ya que implican pedir a otros que ayuden a encontrar defectos en los contratos inteligentes. + +La diferencia principal es que los programas de recompensas por errores están abiertos a la comunidad de desarrolladores y hackers más amplia y atraen a una amplia clase de hackers éticos y profesionales de seguridad independientes con habilidades y experiencia únicas. Esto puede ser una ventaja con respecto a las auditorías de contratos inteligentes, que dependen principalmente de equipos que pueden poseer conocimientos limitados o acotados. + +## Herramientas y bibliotecas de prueba {#testing-tools-and-libraries} + +### Herramientas de pruebas unitarias {#unit-testing-tools} + +- **[solidity-coverage:](https://github.com/sc-forks/solidity-coverage)** _Herramienta de cobertura de código para contratos inteligentes escritos en Solidity._ + +- **Waffle:[ ](https://ethereum-waffle.readthedocs.io/en/latest/)**Un marco de trabajo para desarrollar y realizar pruebas de contratos inteligentes con nivel avanzado (basado en ethers.js)\_\_. + +- **[Remix Tests:](https://github.com/ethereum/remix-project/tree/master/libs/remix-tests)** _Herramienta para probar contratos inteligentes de Solidity. Funciona debajo del plugin de Remix IDE "Solidity Unit Testing", que se utiliza para escribir y ejecutar casos de prueba para un contrato._ + +- **[OpenZeppelin Test Helpers:](https://github.com/OpenZeppelin/openzeppelin-test-helpers)** _Biblioteca de afirmaciones para pruebas de contratos inteligentes de Ethereum. Asegúrese de que sus contratos se comporten como esperaba._ + +- **[Truffle Tests:](https://hardhat.org/hardhat-runner/docs/guides/test-contracts#testing-contracts)** _Marco de pruebas automatizadas que facilita las pruebas de sus contratos._ + +- **[Marco de pruebas unitarias de Brownie:](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** _Brownie utiliza Pytest, un marco de pruebas rico en funciones que le permite escribir pequeñas pruebas con código mínimo, escala bien para proyectos grandes y es altamente extendible._ + +- **[Foundry Tests:](https://github.com/foundry-rs/foundry/tree/master/forge)** _Foundry ofrece Forge, un marco de pruebas de Ethereum rápido y flexible capaz de ejecutar pruebas unitarias simples, comprobaciones de optimización de gas y fuzzing de contratos._ + +- **[Hardhat Tests:](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** _Marco para probar contratos inteligentes basado en ethers.js, Mocha y Chai._ + +- **[ApeWorx:](https://docs.apeworx.io/ape/stable/userguides/testing.html)** _Marco de desarrollo y pruebas basado en Python para contratos inteligentes dirigidos a la Máquina virtual de Ethereum._ + +### Herramientas de pruebas basadas en propiedades {#property-based-testing-tools} + +#### Herramientas de análisis estático {#static-analysis-tools} + +- **[Slither:](https://github.com/crytic/slither)** _Marco de análisis estático de Solidity basado en Python para encontrar vulnerabilidades, mejorar el funcionamiento del código y escribir análisis personalizados para contratos inteligentes._ + +- **[Ethlint:](https://ethlint.readthedocs.io/en/latest/)** _Linter para hacer cumplir las mejores prácticas de estilo y seguridad para el lenguaje de programación de contratos inteligentes Solidity._ + +#### Herramientas de análisis dinámico {#dynamic-analysis-tools} + +- **[Echidna:](https://github.com/crytic/echidna/)** _Fuzzer rápido de contratos para detectar vulnerabilidades en contratos inteligentes a través de pruebas basadas en propiedades._ + +- **[Diligence Fuzzing:](https://consensys.net/diligence/fuzzing/)** _Herramienta automatizada de fuzzing útil para detectar violaciones de propiedades en el código de un contrato inteligente._ + +- **[Manticore:](https://manticore.readthedocs.io/en/latest/index.html)** _Marco de ejecución simbólica dinámico para analizar bytecode de EVM._ + +- **[Mythril:](https://github.com/ConsenSys/mythril-classic)** _Herramienta de evaluación de bytecode de EVM para detectar vulnerabilidades en los contratos utilizando taint analysis, concolic analysis y verificación de flujo de control._ + +- **[Diligence Scribble:](https://consensys.net/diligence/scribble/)** _Scribble es una herramienta de verificación de tiempo de ejecución y lenguaje de especificación que le permite anotar contratos inteligentes con propiedades que le permiten probar automáticamente los contratos con herramientas como Diligence Fuzzing o MythX._ ## Tutoriales relacionados {#related-tutorials} -- [Configuración de la integración continua de Solidity y Truffle:](/developers/tutorials/solidity-and-truffle-continuous-integration-setup/) _Cómo configurar Travis o Circle CI para realizar pruebas de Truffle junto con útiles plugins._ -- [Visión general de los productos de pruebas:](/developers/tutorials/guide-to-smart-contract-security-tools/) _Una visión general y una comprobación de los diferentes productos de pruebas._ +- [Cómo configurar la Integración Continua (CI) de Travis o Circle para pruebas de Truffle](/developers/tutorials/solidity-and-truffle-continuous-integration-setup/) +- [Visión general y comparación de productos de pruebas](/developers/tutorials/guide-to-smart-contract-security-tools/) \_ - [Cómo utilizar Echidna para probar contratos inteligentes](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/) -- [Cómo utilizar Manticore para encontrar errores en contratos inteligentes](/developers/tutorials/how-to-use-manticor-to-find-smart-contract-bugs/) -- [Cómo utilizar Slither para encontrar errores en contratos inteligentes](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) -- [Cómo simular los contratos de Solidity para probar](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/) +- [Cómo utilizar Manticore para encontrar errores en contratos inteligentes](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/) +- [Cómo usar Slither para encontrar errores en contratos inteligentes](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) +- [Cómo simular contratos de Solidity para pruebas](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/) - [Cómo migrar de las pruebas de Truffle al entorno de prueba de OpenZeppelin](https://docs.openzeppelin.com/test-environment/0.1/migrating-from-truffle) +- [Cómo probar contratos después de que han sido implementados en una red](https://fulldecent.blogspot.com/2019/04/testing-deployed-ethereum-contracts.html) ## Más información {#further-reading} -_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ +- [Guía detallada para probar contratos inteligentes de Ethereum](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297) +- [Cómo probar los contratos inteligentes de Ethereum](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d) +- [Guía de pruebas unitarias de MolochDAO para desarrolladores](https://github.com/MolochVentures/moloch/tree/4e786db8a4aa3158287e0935dcbc7b1e43416e38/test#moloch-testing-guide) +- [Cómo probar contratos inteligentes como una estrella de rock](https://forum.openzeppelin.com/t/test-smart-contracts-like-a-rockstar/1001) diff --git a/src/content/translations/es/developers/docs/smart-contracts/upgrading/index.md b/src/content/translations/es/developers/docs/smart-contracts/upgrading/index.md new file mode 100644 index 00000000000..f3bca59df95 --- /dev/null +++ b/src/content/translations/es/developers/docs/smart-contracts/upgrading/index.md @@ -0,0 +1,165 @@ +--- +title: Mejora de los contratos inteligentes +description: Descripción general de patrones de actualización para los contratos inteligentes en Ethereum +lang: es +--- + +Los contratos inteligentes en Ethereum son programas que se ejecutan solos y que funcionan en la máquina virtual de Ethereum (EVM). Estos programas están diseñados para ser inmutables, lo que impide cualquier actualización en la lógica empresarial una vez que el contrato fue implementado. + +Si bien la inmutabilidad es necesaria para no requerir de confianza, la descentralización y la seguridad de los contratos inteligentes puede ser una desventaja en ciertos casos. Por ejemplo, el código inmutable puede hacer que sea imposible para los desarrolladores corregir contratos vulnerables. + +Sin embargo, investigación más profunda en la mejora de los contratos inteligentes llevó a la introducción de diversos patrones de actualización. Estos patrones de actualización permiten a los desarrolladores actualizar los contratos inteligentes (manteniendo la inmutabilidad) colocando lógica empresarial en diferentes contratos. + +## Requisitos previos {#prerequisites} + +Debe contar con un buen entendimiento de los [contratos inteligentes](/developers/docs/smart-contracts/), la [anatomía de los contratos inteligentes](/developers/docs/smart-contracts/anatomy/) y la [Máquina virtual de Ethereum (EVM)](/developers/docs/evm/). Esta guía también asume que los lectores tengan conocimiento sobre programación de contratos inteligentes. + +## ¿Qué es la actualización de un contrato inteligente? {#what-is-a-smart-contract-upgrade} + +La actualización de un contrato inteligente implica cambiar la lógica empresarial de un contrato inteligente a la vez que se preserva el estado del contrato. Es importante aclarar que la capacidad de actualización y la mutabilidad no son lo mismo, especialmente en el contexto de contratos inteligentes. + +Todavía no puede cambiar un programa implementado en una dirección en la red Ethereum. Pero puede cambiar el código que se ejecuta cuando los usuarios interactúan con un contrato inteligente. + +Esto se puede llevar a cabo a través de los siguientes métodos: + +1. Creando múltiples versiones de un contrato inteligente y migrando el estado (es decir, los datos) del contrato antiguo a una nueva instancia del contrato. + +2. Creando contratos separados para almacenar la lógica empresarial y el estado. + +3. Utilizando patrones de proxy para delegar llamadas de funciones de un contrato proxy inmutable a un contrato de lógica modificable. + +4. Creando un contrato principal inmutable que se comunique con, y dependa de, contratos satélite flexibles para ejecutar funciones específicas. + +5. Utilizando el patrón de diamante para delegar llamadas de funciones de un contrato proxy a contratos de lógica. + +### Mecanismo de actualización 1: migración del contrato {#contract-migration} + +La migración de contratos se basa en el uso de versiones, que consiste en crear y gestionar estados únicos del mismo software. La migración de un contrato implica implementar una nueva instancia de un contrato inteligente existente y la transferencia del almacenamiento y los saldos al nuevo contrato. + +El nuevo contrato tendrá un almacenamiento vacío, lo que le permitirá recuperar los datos del contrato anterior y escribirlos en la nueva implementación. Luego va a tener que actualizar todos los contratos que interactuaron con el contrato antiguo para reflejar la nueva dirección. + +El último paso en la migración de contratos es convencer a los usuarios para que cambien y usen el nuevo contrato. La nueva versión del contrato va a mantener los saldos y direcciones de los usuarios, lo cual preserva la inmutabilidad. Si se trata de un contrato basado en tokens, también tendrá que ponerse en contacto con los exchanges para que descarten el contrato anterior y comiencen a usar el nuevo contrato. + +La migración de contratos es una medida relativamente sencilla y segura para actualizar contratos inteligentes sin interrumpir las interacciones de los usuarios. Sin embargo, la migración manual de almacenamiento y saldos de usuarios al nuevo contrato consume mucho tiempo y puede generar altos costes de gas. + +[Más sobre la migración de contratos.](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/) + +### Mecanismo de actualización 2: separación de datos {#data-separation} + +Otro método para actualizar contratos inteligentes es separar la lógica empresarial y el almacenamiento de datos en contratos diferentes. Esto significa que los usuarios interactúan con el contrato de lógica, mientras que los datos se almacenan en el contrato de almacenamiento. + +El contrato de lógica contiene el código que se ejecuta cuando los usuarios interactúan con la aplicación. También conserva la dirección del contrato de almacenamiento e interactúa con él para obtener y establecer datos. + +Mientras tanto, el contrato de almacenamiento contiene el estado asociado con el contrato inteligente, como los saldos y direcciones de los usuarios. Tenga en cuenta que el contrato de almacenamiento es propiedad del contrato de lógica y está configurado con la dirección de este último en la implementación. Esto evita que contratos no autorizados llamen al contrato de almacenamiento o actualicen sus datos. + +Por defecto, el contrato de almacenamiento es inmutable, pero se puede reemplazar el contrato de lógica al que apunta con una nueva implementación. Esto va a cambiar el código que se ejecuta en la EVM, manteniendo el almacenamiento y los saldos intactos. + +Utilizar este método de actualización requiere actualizar la dirección del contrato de lógica en el contrato de almacenamiento. También hay que configurar el nuevo contrato de lógica con la dirección del contrato de almacenamiento por las razones explicadas anteriormente. + +El patrón de separación de datos es posiblemente más fácil de implementar en comparación con la migración de contratos. Sin embargo, hay que gestionar varios contratos e implementar esquemas de autorización complejos para proteger los contratos inteligentes de actualizaciones maliciosas. + +### Mecanismo de actualización 3: patrones de proxy {#proxy-patterns} + +El patrón de proxy también utiliza la separación de datos para mantener la lógica empresarial y los datos en contratos diferentes. Sin embargo, en un patrón de proxy, el contrato de almacenamiento (llamado proxy) llama al contrato de lógica durante la ejecución del código. Esto es una inversión del método de separación de datos, donde el contrato de lógica llama al contrato de almacenamiento. + +Esto es lo que sucede en un patrón de proxy: + +1. Los usuarios interactúan con el contrato proxy, que almacena datos, pero que no contiene la lógica empresarial. + +2. El contrato proxy almacena la dirección del contrato de lógica y delega todas las llamadas de funciones al contrato de lógica (que contiene la lógica empresarial) utilizando la función `delegatecall`. + +3. Luego de que la llamada se reenvía al contrato de lógica, los datos devueltos por el contrato de lógica se recuperan y se devuelven al usuario. + +El uso de los patrones de proxy requiere una comprensión de la función **delegatecall**. Básicamente, `delegatecall` es un opcode que permite que un contrato llame a otro contrato, mientras que la ejecución real del código se realiza en el contexto del contrato invocante. Una implicación del uso de `delegatecall` en patrones de proxy es que el contrato de proxy lee y escribe en su almacenamiento y ejecuta la lógica almacenada en el contrato de lógica como si llamara a una función interna. + +De la [documentación de Solidity](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#delegatecall-callcode-and-libraries): + +> _Existe una variante especial de una llamada de mensaje, llamada **delegatecall**, que es idéntica a una llamada de mensaje, aparte del hecho de que el código en la dirección de destino se ejecuta en el contexto (es decir, en la dirección) del contrato de llamada y `msg.sender` y `msg.value` no cambian sus valores.\_\_Esto significa que un contrato puede cargar dinámicamente código de una dirección diferente en tiempo de ejecución. El almacenamiento, la dirección actual y el saldo todavía se refieren al contrato de llamada, solo se toma el código de la dirección llamada._ + +El contrato de proxy sabe invocar `delegatecall` cada vez que un usuario llama a una función porque tiene una función `fallback` integrada. En la programación de Solidity, la [función fallback](https://docs.soliditylang.org/en/latest/contracts.html#fallback-function) se ejecuta cuando una llamada a una función no coincide con las funciones especificadas en un contrato. + +Hacer que el patrón de proxy funcione requiere escribir una función fallback personalizada que especifique cómo el contrato de proxy debe manejar las llamadas de función que no admite. En este caso, la función fallback del proxy está programada para iniciar una delegatecall y redirigir la solicitud del usuario a la implementación del contrato de lógica actual. + +El contrato de proxy es inmutable de forma predeterminada, pero se pueden crear nuevos contratos de lógica con lógica empresarial actualizada. Realizar la actualización es cuestión de cambiar la dirección del contrato de lógica al que se hace referencia en el contrato proxy. + +Al apuntar el contrato de proxy a un nuevo contrato de lógica, el código que se ejecuta cuando los usuarios llaman a la función de contrato de proxy cambia. Esto nos permite actualizar la lógica de un contrato sin pedir a los usuarios que interactúen con un nuevo contrato. + +Los patrones de proxy son un método popular para actualizar los contratos inteligentes porque eliminan las dificultades asociadas con la migración de contratos. No obstante, los patrones de proxy son más complicados de usar y pueden introducir defectos críticos, como [function selector clashes](https://medium.com/nomic-foundation-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357), si se usan incorrectamente. + +[Más información sobre los patrones de proxy](https://blog.openzeppelin.com/proxy-patterns/). + +### Mecanismo de actualización 4: patrón de estrategia {#strategy-pattern} + +Esta técnica está influenciada por el [patrón de estrategia](https://en.wikipedia.org/wiki/Strategy_pattern), que fomenta la creación de programas de software que interactúan con otros programas para implementar funciones específicas. Aplicar el patrón de estrategia al desarrollo de Ethereum significaría crear un contrato inteligente que llame a las funciones de otros contratos. + +El contrato principal en este caso contiene la lógica empresarial central, pero interactúa con otros contratos inteligentes ("contratos satélite") para ejecutar ciertas funciones. Este contrato principal también almacena la dirección de cada contrato satélite y puede cambiar entre diferentes implementaciones del contrato satélite. + +Puede crear un nuevo contrato satélite y configurar el contrato principal con la nueva dirección. Esto le permite cambiar _estrategias_ (es decir, implementar nueva lógica) para un contrato inteligente. + +Aunque es similar al patrón de proxy explicado anteriormente, el patrón de estrategia es diferente porque el contrato principal, con el que interactúan los usuarios, mantiene la lógica empresarial. El uso de este patrón le brinda la oportunidad de introducir cambios limitados en un contrato inteligente sin afectar a la infraestructura central. + +El principal inconveniente es que este patrón es principalmente útil para implementar actualizaciones menores. Además, si el contrato principal se ve comprometido (por ejemplo, a través de un hackeo), no podrá usar este método de actualización. + +### Mecanismo de actualización 5: patrón de diamante {#diamond-pattern} + +El patrón de diamante puede considerarse una mejora en el patrón de proxy. Los patrones de diamante difieren de los patrones de proxy porque el contrato de proxy de diamante puede delegar llamadas de función a más de un contrato de lógica. + +Los contratos de lógica del patrón de diamante se conocen como _facets_. Para que el patrón de diamante funcione, se debe crear un mapeo en el contrato de proxy que mapee [selectores de funciones](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector) a diferentes direcciones de facets. + +Cuando un usuario realiza una llamada a una función, el contrato de proxy comprueba el mapeo para encontrar el facet responsable de ejecutar esa función. Luego invoca `delegatecall` (usando la función fallback) y redirige la llamada al contrato de lógica apropiado. + +El patrón de actualización de diamante tiene algunas ventajas sobre los patrones tradicionales de actualización de proxy: + +1. Le permite actualizar una pequeña parte del contrato sin cambiar todo el código. El uso del patrón de proxy para las actualizaciones requiere la creación de un contrato de lógica completamente nuevo, incluso para actualizaciones menores. + +2. Todos los contratos inteligentes (incluidos los contratos de lógica utilizados en los patrones de proxy) tienen un límite de tamaño de 24 Kb, lo que puede ser una limitación, especialmente para contratos complejos que requieren más funciones. El patrón de diamante facilita la solución de este problema dividiendo las funciones en múltiples contratos de lógica. + +3. Los patrones de proxy adoptan un enfoque general para acceder a los controles. Una entidad con acceso a funciones de actualización puede cambiar el contrato _entero_. Pero el patrón de diamante permite un enfoque de permisos modular, en el que puede restringir a las entidades la actualización de ciertas funciones dentro de un contrato inteligente. + +[Más información sobre el patrón de diamante](https://eip2535diamonds.substack.com/p/introduction-to-the-diamond-standard?s=w). + +## Pros y contras de la actualización de los contratos inteligentes {#pros-and-cons-of-upgrading-smart-contracts} + +| Ventajas | Desventajas | +| --------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Una actualización de contrato inteligente puede facilitar la corrección de las vulnerabilidades descubiertas en la fase posterior a la implementación. | La actualización de los contratos inteligentes es contraria a la idea de la inmutabilidad del código, lo que tiene implicaciones para la descentralización y la seguridad. | +| Los desarrolladores pueden usar actualizaciones de lógica para añadir nuevas funciones a las aplicaciones descentralizadas. | Los usuarios deben confiar en que los desarrolladores no modifiquen los contratos inteligentes arbitrariamente. | +| Las actualizaciones de los contratos inteligentes pueden mejorar la seguridad de los usuarios finales, ya que los errores se pueden corregir rápidamente. | La programación de la funcionalidad de actualización en contratos inteligentes añade mayor complejidad y aumenta la posibilidad de fallas críticas. | +| Las actualizaciones de contratos dan a los desarrolladores más espacio para experimentar con diferentes funciones y mejorar las dapps con el tiempo. | La oportunidad de actualizar los contratos inteligentes puede animar a los desarrolladores a lanzar proyectos más rápido sin hacer la debida diligencia durante la fase de desarrollo. | +| | El control de acceso inseguro o la centralización en los contratos inteligentes pueden facilitar que los actores maliciosos realicen actualizaciones no autorizadas. | + +## Consideraciones para actualizar los contratos inteligentes {#considerations-for-upgrading-smart-contracts} + +1. Utilice mecanismos seguros de control de acceso/autorización para evitar actualizaciones no autorizadas de contratos inteligentes, especialmente si se utilizan patrones de proxy, patrones de estrategia o separación de datos. Un ejemplo es restringir el acceso a la función de actualización, de modo que solo el propietario del contrato pueda invocarlo. + +2. La actualización de contratos inteligentes es una actividad compleja y requiere un alto nivel de diligencia para evitar la introducción de vulnerabilidades. + +3. Reduzca los supuestos de confianza descentralizando el proceso de implementación de actualizaciones. Posibles estrategias incluyen el uso de un [contrato de billetera multifirma](/developers/docs/smart-contracts/#multisig) para controlar las actualizaciones o requerir que los [miembros de la DAO](/dao/) voten sobre la aprobación de la actualización. + +4. Tenga en cuenta los costos involucrados en la actualización de contratos. Por ejemplo, copiar el estado (por ejemplo, saldos de los usuarios) de un contrato antiguo a un nuevo contrato durante la migración de un contrato puede requerir más de una transacción, lo que significa más tarifas de gas. + +5. Considere la posibilidad de implementar **timelocks** (o bloqueos de tiempo) para proteger a los usuarios. Un timelock se refiere a un retraso impuesto en los cambios en un sistema. Los timelocks se pueden combinar con un sistema de gobernanza multifirma para controlar las actualizaciones: si una acción propuesta alcanza el umbral de aprobación requerido, no se ejecuta hasta que transcurre el período de retraso predefinido. + +Los timelocks dan a los usuarios algo de tiempo para salir del sistema si no están de acuerdo con un cambio propuesto (por ejemplo, una actualización de lógica o nuevos esquemas de tarifas). Sin timelocks, los usuarios deben confiar en que los desarrolladores no implementen cambios arbitrarios en un contrato inteligente sin previo aviso. La desventaja de los timelocks es que restringen la capacidad de parchear rápidamente las vulnerabilidades. + +## Recursos {#resources} + +**OpenZeppelin Upgrades Plugins: _Conjunto de herramientas para implementar y asegurar contratos inteligentes actualizables. _** + +- [GitHub](https://github.com/OpenZeppelin/openzeppelin-upgrades) +- [Documentación](https://docs.openzeppelin.com/upgrades) + +## Tutoriales {#tutorials} + +- [Actualización de sus contratos inteligentes | Tutorial de YouTube](https://www.youtube.com/watch?v=bdXJmWajZRY) por Patrick Collins +- [Tutorial de migración de contratos inteligentes de Ethereum](https://medium.com/coinmonks/ethereum-smart-contract-migration-13f6f12539bd) por Austin Griffith +- [Uso del patrón de proxy UUPS para actualizar contratos inteligentes](https://blog.logrocket.com/author/praneshas/) por Pranesh A.S +- [Tutorial de Web3: Escribir un contrato inteligente actualizable (proxy) usando OpenZeppelin](https://dev.to/yakult/tutorial-write-upgradeable-smart-contract-proxy-contract-with-openzeppelin-1916) por fangjun.eth + +## Más información {#further-reading} + +- [El estado de las actualizaciones de contratos inteligentes](https://blog.openzeppelin.com/the-state-of-smart-contract-upgrades/) por Santiago Palladino +- [Múltiples formas de actualizar un contrato inteligente de Solidity](https://cryptomarketpool.com/multiple-ways-to-upgrade-a-solidity-smart-contract/): Blog Crypto Market Pool +- [Aprenda: Actualización de contratos inteligentes](https://docs.openzeppelin.com/learn/upgrading-smart-contracts): Documentos de OpenZeppelin +- [Patrones de proxy para la actualización de los contratos de Solidity: proxies transparentes vs. proxies UUPS](https://mirror.xyz/0xB38709B8198d147cc9Ff9C133838a044d78B064B/M7oTptQkBGXxox-tk9VJjL66E1V8BUF0GF79MMK4YG0) por Naveen Sahu +- [¿Cómo funcionan las actualizaciones de diamante?](https://dev.to/mudgen/how-diamond-upgrades-work-417j) por Nick Mudge diff --git a/src/content/translations/es/developers/docs/smart-contracts/verifying/index.md b/src/content/translations/es/developers/docs/smart-contracts/verifying/index.md new file mode 100644 index 00000000000..89162d68784 --- /dev/null +++ b/src/content/translations/es/developers/docs/smart-contracts/verifying/index.md @@ -0,0 +1,107 @@ +--- +title: Verificación de contratos inteligentes +description: Descripción general de la verificación del código fuente de contratos inteligentes en Ethereum +lang: es +--- + +Los [contratos inteligentes](/developers/docs/smart-contracts/) están diseñados para ser "trustless", o sin confianza, lo que significa que los usuarios no deben tener que confiar en terceros (por ejemplo, desarrolladores y empresas) antes de interactuar con un contrato. Como requisito para esta no necesidad de confianza, los usuarios y otros desarrolladores deben poder verificar el código fuente de un contrato inteligente. La verificación del código fuente asegura a los usuarios y los desarrolladores que el código de contrato publicado es el mismo código que se ejecuta en la dirección del contrato en la cadena de bloques de Ethereum. + +Es importante hacer la distinción entre "verificación del código fuente" y "[verificación formal](/developers/docs/smart-contracts/formal-verification/)". La verificación del código fuente, que se va a explicar en detalle a continuación, hace referencia a constatar que el código fuente proporcionado de un contrato inteligente en un lenguaje de alto nivel (por ejemplo, Solidity) se compila en el mismo bytecode que se va a ejecutar en la dirección del contrato. Por el otro lado, la verificación formal hace referencia a verificar la corrección de un contrato inteligente, lo que significa que el contrato se comporta según lo esperado. Aunque depende del contexto, generalmente la verificación de contratos se refiere a la verificación del código fuente. + +## ¿Qué es la verificación del código fuente? {#what-is-source-code-verification} + +Antes de implementar un contrato inteligente en la [Máquina virtual de Ethereum (EVM)](/developers/docs/evm/), los desarrolladores [compilan](/developers/docs/smart-contracts/compiling/) el código fuente del contrato, el cual consiste en instrucciones [escritas en Solidity](/developers/docs/smart-contracts/languages/) u otro lenguaje de programación de alto nivel, en bytecode. Dado que la EVM no puede interpretar instrucciones de alto nivel, es necesario compilar el código fuente a bytecode (es decir, instrucciones de bajo nivel para la máquina) para ejecutar la lógica del contrato en la EVM. + +La verificación del código fuente implica comparar el código fuente de un contrato inteligente con el bytecode compilado utilizado durante la creación del contrato para detectar la existencia de cualquier diferencia. Verificar los contratos inteligentes es importante porque el código del contrato que se difunde puede ser diferente del que se ejecuta en la cadena de bloques. + +La verificación de un contrato inteligente permite investigar lo que hace un contrato a través del lenguaje de alto nivel en el que está escrito, sin necesidad de leer código de máquina. Las funciones, los valores y generalmente los nombres de las variables y los comentarios suelen permanecer iguales en el código fuente original que se compila e implementa. Esto facilita mucho la lectura del código. La verificación del código fuente también permite la documentación del código, para que los usuarios finales sepan para qué está diseñado un contrato inteligente. + +### ¿Qué es una verificación completa? {#full-verification} + +Existen partes del código fuente que no afectan al bytecode compilado, como los comentarios o los nombres de variables. Eso significa que dos códigos fuente con nombres de variables diferentes y comentarios diferentes podrían verificar el mismo contrato. Con eso, un actor malicioso podría agregar comentarios engañosos o proporcionar nombres confusos a las variables dentro del código fuente y hacer que el contrato se verifique con un código fuente diferente al código fuente original. + +Es posible evitar dicho escenario agregando datos adicionales al bytecode que sirvan como una _garantía criptográfica_ de la exactitud del código fuente y como una _huella digital_ de la información de compilación. La información necesaria se encuentra en los [metadatos del contrato en Solidity](https://docs.soliditylang.org/en/v0.8.15/metadata.html), y el hash de este archivo se agrega al bytecode de un contrato. Puede verlo en acción en el [playground de metadatos](https://playground.sourcify.dev). + +El archivo de metadatos contiene información sobre la compilación del contrato, incluidos los archivos fuente y sus hashes. Esto significa que, si cambia cualquier configuración de compilación o incluso un byte en uno de los archivos fuente, el archivo de metadatos cambia. En consecuencia, el hash del archivo de metadatos, que se agrega al bytecode, también cambia. Esto quiere decir que, si el bytecode de un contrato y el hash de metadatos agregado coinciden con el código fuente y la configuración de compilación proporcionados, podemos estar seguros de que este es exactamente el mismo código fuente utilizado en la compilación original; ni siquiera un solo byte es diferente. + +Este tipo de verificación que utiliza el hash de metadatos se denomina **"[verificación completa](https://docs.sourcify.dev/docs/full-vs-partial-match/)"** (también conocida como "verificación perfecta"). Si los hashes de los metadatos no coinciden o no se tienen en cuenta en la verificación, se trataría de una "coincidencia parcial", la cual actualmente es la forma más común de verificar contratos. De esta forma, sin la verificación completa, se corre el riesgo de que se [inserte código malicioso](https://samczsun.com/hiding-in-plain-sight/) que no se refleje en el código fuente verificado. La mayoría de los desarrolladores no son conscientes de la verificación completa y no guardan el archivo de metadatos de su compilación, por lo que hasta ahora la verificación parcial ha sido el método estándar para verificar contratos. + +## ¿Por qué es importante la verificación del código fuente? {#importance-of-source-code-verification} + +### No necesidad de confianza {#trustlessness} + +La no necesidad de confianza ("truslessness") es posiblemente la premisa más importante para los contratos inteligentes y las [aplicaciones descentralizadas (dApps)](/developers/docs/dapps/). Los contratos inteligentes son "inmutables" y no pueden ser modificados; un contrato solo va a ejecutar la lógica comercial definida en el código en el momento de la implementación. Esto significa que los desarrolladores y las empresas no pueden manipular el código de un contrato luego de implementarlo en Ethereum. + +Para que un contrato inteligente no necesite confianza, el código del contrato debe estar disponible para su verificación independiente. Si bien el bytecode compilado de cada contrato inteligente está disponible públicamente en la cadena de bloques, el lenguaje de bajo nivel es difícil de entender, tanto para los desarrolladores como para los usuarios. + +Los proyectos disminuyen las suposiciones de confianza al hacer público el código fuente de sus contratos. Pero esto conlleva otro problema: es difícil verificar que el código fuente publicado coincida con el bytecode del contrato. En este escenario, se pierde el valor de la no necesidad de confianza porque los usuarios deben confiar en que los desarrolladores no van a cambiar la lógica comercial de un contrato (es decir, cambiando el bytecode) antes de implementarlo en la cadena de bloques. + +Las herramientas de verificación de código fuente proporcionan garantías de que los archivos de código fuente de un contrato inteligente coinciden con el código de emsamblaje. El resultado es un ecosistema sin confianza, donde los usuarios no confían ciegamente en terceros y en su lugar verifican el código antes de depositar fondos en un contrato. + +### Seguridad del usuario {#user-safety} + +Con los contratos inteligentes, generalmente hay mucho dinero en juego. Esto requiere garantías de seguridad más altas y la verificación de la lógica de un contrato inteligente antes de utilizarlo. El problema es que los desarrolladores inescrupulosos pueden engañar a los usuarios insertando código malicioso en un contrato inteligente. Sin verificación, los contratos inteligentes maliciosos pueden tener [puertas traseras](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts), mecanismos de control de acceso controvertidos, vulnerabilidades explotables y otras cosas que ponen en riesgo la seguridad de los usuarios y que podrían pasar desapercibidas. + +Publicar los archivos de código fuente de un contrato inteligente facilita que las personas interesadas, como los auditores, evalúen el contrato en busca de posibles vectores de ataque. Con múltiples partes verificando de manera independiente un contrato inteligente, los usuarios tienen garantías más sólidas de su seguridad. + +## Cómo verificar el código fuente de los contratos inteligentes de Ethereum {#source-code-verification-for-ethereum-smart-contracts} + +[Implementar un contrato inteligente en Ethereum](/developers/docs/smart-contracts/deploying/) requiere enviar una transacción con una carga útil de datos (código bytecode compilado) a una dirección especial. La carga útil de datos se genera compilando el código fuente, junto con los [argumentos constructor](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor) de la instancia del contrato que se adjuntan a la carga útil de datos en la transacción. La compilación es determinista, lo que significa que siempre produce la misma salida (es decir, el bytecode del contrato) si se utilizan los mismos archivos fuente y ajustes de compilación (como por ejemplo la versión del compilador, el optimizador, etc). + +![Diagrama que muestra la verificación del código fuente de un contrato inteligente](./source-code-verification.png) + +Verificar un contrato inteligente básicamente consta de los siguientes pasos: + +1. Ingresar en un compilador los archivos de origen y la configuración de compilación. + +2. El compilador produce el bytecode del contrato. + +3. Obtener el bytecode del contrato implementado en una dirección específica. + +4. Comparar el bytecode implementado con el bytecode recompilado. Si los códigos coinciden, el contrato se verifica con el código fuente y la configuración de compilación proporcionados. + +5. Además, si los hashes de metadatos al final del bytecode coinciden, la coincidencia será completa. + +Tenga en cuenta que esta es una descripción simplificada de la verificación y existen muchas excepciones que no funcionarían de esta manera, como sería el caso de tener [variables inmutables](https://docs.sourcify.dev/docs/immutables/). + +## Herramientas de verificación de código fuente {#source-code-verification-tools} + +El proceso tradicional de verificar contratos puede ser complejo. Es por eso que tenemos herramientas para verificar el código fuente de los contratos inteligentes implementados en Ethereum. Estas herramientas automatizan gran parte de la verificación del código fuente y también curan contratos verificados en beneficio de los usuarios. + +### Etherscan {#etherscan} + +Aunque es mayormente conocido como un [explorador de cadena de bloques de Ethereum](/developers/docs/data-and-analytics/block-explorers/), Etherscan también ofrece un [servicio de verificación de código fuente](https://etherscan.io/verifyContract) para desarrolladores y usuarios de contratos inteligentes. + +Etherscan le permite volver a compilar el bytecode del contrato a partir de la carga útil de datos original (código fuente, dirección de la biblioteca, configuración del compilador, dirección del contrato, etc). Si el bytecode recompilado está asociado con el bytecode (y a los parámetros constructor) del contrato en la cadena, [el contrato está verificado](https://info.etherscan.com/types-of-contract-verification/). + +Una vez verificado, el código fuente de su contrato recibe una etiqueta de "Verificado" y se publica en Etherscan para que otros puedan auditarlo. También se agrega a la sección de [Contratos verificados](https://etherscan.io/contractsVerified/), que es un repositorio de contratos inteligentes con código fuente verificado. + +Etherscan es la herramienta más utilizada para verificar contratos. Sin embargo, la verificación de contratos de Etherscan tiene una desventaja: no compara el **hash de metadatos** del bytecode en la cadena con el bytecode recompilado. Por lo tanto, las coincidencias en Etherscan son coincidencias parciales. + +[Más información sobre la verificación de contratos en Etherscan](https://medium.com/etherscan-blog/verifying-contracts-on-etherscan-f995ab772327). + +### Sourcify {#sourcify} + +[Sourcify](https://sourcify.dev/#/verifier) es otra herramienta para verificar contratos que es de código abierto y descentralizada. Sourcify no es un explorador de bloques y solo verifica contratos en [distintas redes basadas en la Máquina virtual de Ethereum](https://docs.sourcify.dev/docs/chains). Sourcify actúa como una infraestructura pública sobre la cual otras herramientas pueden construir, y tiene como objetivo permitir interacciones con contratos más amigables para los humanos utilizando la [Interfaz Binaria de Aplicación (ABI, por sus siglas en inglés)](developers/docs/smart-contracts/compiling/#web-applications) y comentarios [NatSpec](/developers/docs/smart-contracts/compiling/#web-applications) que se encuentran en el archivo de metadatos. + +A diferencia de Etherscan, Sourcify admite coincidencias completas con el hash de metadatos. Los contratos verificados se alojan en su correspondiente [repositorio público](https://docs.sourcify.dev/docs/repository/) en HTTP y en [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs), que es un almacenamiento descentralizado [cuya dirección es determinada por su contenido](https://web3.storage/docs/concepts/content-addressing/). Esto permite obtener el archivo de metadatos de un contrato a través de IPFS, ya que el hash de metadatos añadido es un hash de IPFS. + +Además, también se pueden recuperar los archivos de código fuente a través de IPFS, ya que los hashes de IPFS de estos archivos también se encuentran en los metadatos. Un contrato puede ser verificado proporcionando el archivo de metadatos y los archivos de origen a través de su API o [Interfaz de Usuario (UI)](https://sourcify.dev/#/verifier), o utilizando complementos. La herramienta de monitoreo de Sourcify también escucha las creaciones de contratos en nuevos bloques e intenta verificar los contratos si sus metadatos y archivos de origen están publicados en IPFS. + +[Más información sobre la verificación de contratos en Sourcify](https://blog.soliditylang.org/2020/06/25/sourcify-faq/). + +### Antiguamente {#tenderly} + +La plataforma [Tenderly](https://tenderly.co/) permite a los desarrolladores de Web3 crear, probar, monitorear y operar contratos inteligentes. Al combinar herramientas de depuración con observabilidad y bloques de construcción de infraestructura, Tenderly ayuda a los desarrolladores a acelerar el desarrollo de contratos inteligentes. Para habilitar por completo las funciones de Tenderly, los desarrolladores deben realizar la [verificación del código fuente](https://docs.tenderly.co/monitoring/contract-verification) utilizando varios métodos. + +Es posible verificar un contrato de forma privada o pública. Si se verifica de forma privada, el contrato inteligente es visible solo para usted (y otros miembros de su proyecto). Verificar un contrato de manera pública lo hace visible para todos los usuarios de la plataforma Tenderly. + +Puede verificar contratos utilizando el [Panel](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-a-smart-contract), el [plugin de Hardhat para Tenderly](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-the-tenderly-hardhat-plugin) o la [Línea de Comandos (CLI)](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli). + +Cuando verifica contratos a través del Panel, necesita importar el archivo fuente o el archivo de metadatos generado por el compilador de Solidity, la dirección/red y la configuración del compilador. + +Usar el complemento de Hardhat para Tenderly permite tener un mayor control sobre el proceso de verificación con menos esfuerzo, lo que permite elegir entre la verificación automática (sin código) y la verificación manual (basada en código). + +## Más información {#further-reading} + +- [Verificación del código fuente de un contrato](https://programtheblockchain.com/posts/2018/01/16/verifying-contract-source-code/) diff --git a/src/content/translations/es/developers/docs/smart-contracts/verifying/source-code-verification.svg b/src/content/translations/es/developers/docs/smart-contracts/verifying/source-code-verification.svg new file mode 100644 index 00000000000..c209c6233c7 --- /dev/null +++ b/src/content/translations/es/developers/docs/smart-contracts/verifying/source-code-verification.svg @@ -0,0 +1,41 @@ + + + + + + + + Recompilar + + + Ajustes de compilación + + + bytecode + + + coincide? + + diff --git a/src/content/translations/es/developers/docs/standards/index.md b/src/content/translations/es/developers/docs/standards/index.md index af57f9b1853..57bc5ae53a1 100644 --- a/src/content/translations/es/developers/docs/standards/index.md +++ b/src/content/translations/es/developers/docs/standards/index.md @@ -17,24 +17,42 @@ Normalmente se introducen estándares como [Propuestas de mejora de Ethereum](/e - [Tablón de discusión de EIP](https://ethereum-magicians.org/c/eips) - [Introducción a la Gobernanza de Ethereum](/governance/) - [Resumen de gobernanza de Ethereum](https://web.archive.org/web/20201107234050/https://blog.bmannconsulting.com/ethereum-governance/) _31 de marzo de 2019, Mann Boris_ -- [Gobernanza de desarrollo del protocolo Ethereum y coordinación de actualización de la red](https://hudsonjameson.com/2020-03-23-ethereum-protocol-development-governance-and-network-upgrade-coordination/) _23 de marzo de 2020 - Hudson Jameson_ -- [Lista de reproducción de todas las reuniones de Ethereum Core Dev](https://www.youtube.com/playlist?list=PLaM7G4Llrb7zfMXCZVEXEABT8OSnd4-7w) _(lista de reproducción de YouTube)_ +- [Gobernanza de desarrollo del protocolo de Ethereum y coordinación de actualización de la red](https://hudsonjameson.com/2020-03-23-ethereum-protocol-development-governance-and-network-upgrade-coordination/) _23 de marzo de 2020, Hudson Jameson_ +- [Lista de reproducción de todas las reuniones de desarrolladores principales de Ethereum](https://www.youtube.com/playlist?list=PLaM7G4Llrb7zfMXCZVEXEABT8OSnd4-7w) _(lista de reproducción de YouTube)_ ## Tipos de estándares {#types-of-standards} -Algunos EIP hacen referencia a estándares de nivel aplicación (por ejemplo, un estándar sobre el formato de un contrato inteligente), los cuales se presentan como [Solicitudes de comentarios de Ethereum (ERC por sus siglas en inglés)](https://eips.ethereum.org/erc). Muchos ERC son estándares críticos utilizados ampliamente en todo el ecosistema de Ethereum. +Hay tres tipos de EIP: -- [Lista de ERC](https://eips.ethereum.org/erc) +- Standards Track: describe cualquier cambio que afecte a la mayoría o a todas las implementaciones de Ethereum +- [Meta Track](https://eips.ethereum.org/meta): describe un proceso en torno a Ethereum o propone un cambio en un proceso +- [Informational Track](https://eips.ethereum.org/informational): describe un problema de diseño de Ethereum o proporciona directrices generales o información a la comunidad de Ethereum + +Además, el Standard Track se subdivide en 4 categorías: + +- [Core](https://eips.ethereum.org/core): mejoras que requieren una bifurcación de consenso +- [Networking](https://eips.ethereum.org/networking): mejoras en torno a devp2p y el Light Ethereum Subprotocol (LES), así como propuestas de mejoras a las especificaciones de protocolo de red de whisper y swarm. +- [Interface](https://eips.ethereum.org/interface): mejoras en torno a especificaciones y estándares API/RPC del cliente, y ciertos estándares a nivel del lenguaje, como nombres de métodos y ABI de contratos. +- [ERC](https://eips.ethereum.org/erc): estándares y convenciones a nivel de aplicación + +Puede encontrar información más detallada sobre estos diferentes tipos y categorías en [EIP-1](https://eips.ethereum.org/EIPS/eip-1#eip-types) ### Estándares de tokens {#token-standards} - [ERC-20](/developers/docs/standards/tokens/erc-20/): Una interfaz para tokens fungibles (intercambiables), como tokens de votación, tokens de staking o monedas virtuales. + - [ERC-1363](https://eips.ethereum.org/EIPS/eip-1363): Define una interfaz de token para los tokens ERC que soporta la ejecución del código del destinatario después de la transferencia o transferFrom, o código spender después de la aprobación. - [ERC-721](/developers/docs/standards/tokens/erc-721/): Una interfaz para tokens no fungibles (NFT), como un deed de una obra de arte o una canción. -- [ERC-777](/developers/docs/standards/tokens/erc-777/): Un estándar de token que mejora ERC-20. + - [ERC-2309](https://eips.ethereum.org/EIPS/eip-2309): Un evento estandarizado emitido al crear/transferir uno, o muchos tokens no fungibles usando identificadores consecutivos de token. + - [ERC-4400](https://eips.ethereum.org/EIPS/eip-4400): Extensión de interfaz para el rol de consumidor EIP-721. + - [ERC-4907](https://eips.ethereum.org/EIPS/eip-4907): Añada un rol de tiempo limitado con permisos restringidos a los tokens ERC-721. +- [ERC-777](/developers/docs/standards/tokens/erc-777/) - **(NO RECOMENDEDO**: Un mejora de estándar de tokens respecto de ERC-20. - [ERC-1155](/developers/docs/standards/tokens/erc-1155/): Un estándar de token que puede contener activos fungibles y no fungibles. +- [ERC-4626](/developers/docs/standards/tokens/erc-4626/): Estándar de bóveda tokenizada diseñado para optimizar y unificar los parámetros técnicos de las bóvedas que otorgan rendimiento. + +Obtenga más información sobre los [estándar de tokens](/developers/docs/standards/tokens/). -Obtén más información sobre [tokens estándar](/developers/docs/standards/tokens/). +## Más lectura {#further-reading} -## Más lecturas {#further-reading} +- [Propuestas de mejora de Ethereum (EIP)](/eips/) -_¿Conoce algún recurso comunitario que le haya sido de ayuda? Edite esta página y añádalo._ +_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ diff --git a/src/content/translations/es/developers/docs/standards/tokens/erc-1155/index.md b/src/content/translations/es/developers/docs/standards/tokens/erc-1155/index.md index ba18f223a89..10dec629362 100644 --- a/src/content/translations/es/developers/docs/standards/tokens/erc-1155/index.md +++ b/src/content/translations/es/developers/docs/standards/tokens/erc-1155/index.md @@ -10,18 +10,18 @@ Una interfaz para contratos que administran múltiples tipos de tokens. Un solo **¿Qué se entiende por estándar multitoken?** -La idea es simple y busca crear una interfaz de contrato inteligente que pueda representar y controlar cualquier cantidad y tipo de token fungible y no fungible. De esta manera, los tokens ERC-1155 pueden hacer las mismas funciones que los tokens [ERC-20](/developers/docs/standards/tokens/erc-20/) y los tokens [ERC-721](/developers/docs/standards/tokens/erc-721/), e incluso ambas al mismo tiempo. Y lo mejor de todo, mejorar la funcionalidad de ambos estándares, haciéndolos más eficientes y corrigiendo errores evidentes en la implementación de los estándares ERC-20 y ERC-721. +La idea es simple y busca crear una interfaz de contrato inteligente que pueda representar y controlar cualquier cantidad y tipo de token fungible y no fungible. De esta manera, los tokens ERC-1155 pueden hacer las mismas funciones que los tokens [ERC-20](/developers/docs/standards/tokens/erc-20/) y los tokens [ERC-721](/developers/docs/standards/tokens/erc-721/), e incluso ambas al mismo tiempo. Mejora el funcionamiento de los estándares ERC-20 y ERC-721, haciéndolos más eficientes y corrigiendo errores obvios de implementación. El token ERC-1155 se describe completamente en [EIP-1155](https://eips.ethereum.org/EIPS/eip-1155). -## Prerrequisitos {#prerequisites} +## Requisitos previos {#prerequisites} Para una mejor comprensión de esta página, recomendamos que primero lea acerca de los [estándares de token](/developers/docs/standards/tokens/), [ERC-20](/developers/docs/standards/tokens/erc-20/) y [ERC-721](/developers/docs/standards/tokens/erc-721/). ## Características y funciones de ERC-1155: {#body} - [Transferencia en lotes](#batch_transfers): transfiera múltiples activos en una sola llamada. -- [Saldos en lote](#batch_balance): obtenga saldos de múltiples activos en una sola llamada. +- [Saldos en lote](#batch_balance): obtenga saldos de multiples activos en una sola llamada. - [Aprobación en lote](#batch_approval): apruebe todos los tokens en una dirección. - [Hooks](#recieve_hook): reciba hooks de tokens. - [Compatibilidad con NFT](#nft_support): si el suministro solo es 1, trátelo como un NFT. @@ -29,7 +29,7 @@ Para una mejor comprensión de esta página, recomendamos que primero lea acerca ### Transferencias en lote {#batch-transfers} -Las transferencias en lote funcionan de manera muy similar a las transferencias regulares ERC-20. Veamos la función regular de transferencia de ERC-20 `transferFrom`: +Las tranferencias en lote funcionan de manera muy similar a las transferencias regulares ERC-20. Veamos la funcion regular `transferFrom` ERC-20: ```solidity // ERC-20 @@ -45,7 +45,7 @@ function safeBatchTransferFrom( ) external; ``` -La única diferencia en ERC-1155 es que pasamos los valores como una matriz y también pasamos una serie o matriz de ID. Por ejemplo, en el caso de `ids=[3, 6, 13]` y `values=[100, 200, 5]`, la transferencia resultante será +La unica diferencia en ERC-1155 es que nosotros pasamos los valores en forma de array y tambien pasamos un array de ID. Por ejemplo, en el caso de `ids=[3, 6, 13]` y `values=[100, 200, 5]`, la transferencia resultante será 1. Transferir 100 tokens con el ID 3 de `_from` a `_to`. 2. Transferir 200 tokens con el ID 6 de `_from` a `_to`. @@ -97,7 +97,7 @@ function isApprovedForAll( Las aprobaciones son ligeramente diferentes a las de ERC-20. En lugar de aprobar cantidades especificas, establece un operador en aprobado o no aprobado mediante `setApprovalForAll`. -La lectura del estado actual puede realizarse con `isApprovedForAll`. Como puede ver, es todo o nada. No puede definir cuántos tokens aprobar ni qué clase de token. +La lectura del estado actual puede realizarse con `isApprovedForAll`. Como puede ver, es una operación de todo o nada. No puede definir cuántos tokens aprobar ni qué clase de token. Esto se diseñó así intencionalmente pensando en la simplicidad. Solamente puede aprobar todo para una dirección. @@ -136,11 +136,11 @@ Ya hemos hablado un poco acerca de algunas reglas de transferencia segura en exp 3. cualquier balance(s) del tenedor(es) del token(s) en `_ids` es menor(es) que el monto (los montos) respectivo(s) en `_values` enviado al destinatario. 4. ocurre cualquier otro error. -_Nota_: Todas las funciones de lote, incluyendo hook, también existen como versiones sin lote. Esto se hace para la eficiencia del gas, considerando que la transferencia de un solo activo probablemente siga siendo la manera más comúnmente utilizada. Las hemos dejado de lado para mayor simplicidad en las explicaciones, incluidas las reglas de transferencia segura. Los nombres son idénticos, solo quite el lote ("Batch"). +_Nota_: Todas las funciones de lote, incluyendo hook, también existen como versiones sin lote. Esto se hace para la eficiencia del gas, considerando que la transferencia de un solo activo probablemente siga siendo la manera más comúnmente utilizada. Las hemos dejado de lado para mayor simplicidad en las explicaciones, incluidas las reglas de transferencia segura. Los nombres son identicos, solo quite el lote ("Batch"). ## Más información {#further-reading} - [EIP-1155: estándar multitoken](https://eips.ethereum.org/EIPS/eip-1155) - [ERC-1155: Documentos de Openzeppelin](https://docs.openzeppelin.com/contracts/3.x/erc1155) -- [ERC-1155: repositorio de GitHub](https://github.com/enjin/erc-1155) +- [ERC-1155: Repositorio de GitHub](https://github.com/enjin/erc-1155) - [API de NFT de Alchemy](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api) diff --git a/src/content/translations/es/developers/docs/standards/tokens/erc-20/index.md b/src/content/translations/es/developers/docs/standards/tokens/erc-20/index.md index 35007088fe8..b02118308d8 100644 --- a/src/content/translations/es/developers/docs/standards/tokens/erc-20/index.md +++ b/src/content/translations/es/developers/docs/standards/tokens/erc-20/index.md @@ -22,13 +22,13 @@ Una característica tan poderosa de Ethereum debe ser manejada con un estándar **¿Qué es el ERC-20?** -El ERC-20 introduce un estándar para los tokens funcionales, es decir, tienen una propiedad que hace que cada token sea exactamente igual (en tipo y valor) que otro token. Por ejemplo, un token ERC-20 actúa igual que ETH, es decir, 1 token es y siempre será igual a todos los demás tokens. +El ERC-20 introduce un estándar para los tokens fungibles, es decir, tienen una propiedad que hace que cada token sea exactamente igual (en tipo y valor) que otro token. Por ejemplo, un token ERC-20 actúa igual que ETH, es decir, 1 token es y siempre será igual a todos los demás tokens. -## Prerrequisitos {#prerequisites} +## Requisitos previos {#prerequisites} - [Cuentas](/developers/docs/accounts) - [Contratos inteligentes](/developers/docs/smart-contracts/) -- [Estándares de tókenes](/developers/docs/standards/tokens/) +- [Estándares de token](/developers/docs/standards/tokens/) ## Cuerpo {#body} @@ -118,7 +118,7 @@ simplified_abi = [ } ] -dai_contract = w3.eth.contract(address=w3.toChecksumAddress(dai_token_addr), abi=simplified_abi) +dai_contract = w3.eth.contract(address=w3.to_checksum_address(dai_token_addr), abi=simplified_abi) symbol = dai_contract.functions.symbol().call() decimals = dai_contract.functions.decimals().call() totalSupply = dai_contract.functions.totalSupply().call() / 10**decimals @@ -129,7 +129,7 @@ print("===== %s =====" % symbol) print("Total Supply:", totalSupply) print("Addr Balance:", addr_balance) -weth_contract = w3.eth.contract(address=w3.toChecksumAddress(weth_token_addr), abi=simplified_abi) +weth_contract = w3.eth.contract(address=w3.to_checksum_address(weth_token_addr), abi=simplified_abi) symbol = weth_contract.functions.symbol().call() decimals = weth_contract.functions.decimals().call() totalSupply = weth_contract.functions.totalSupply().call() / 10**decimals @@ -141,8 +141,9 @@ print("Total Supply:", totalSupply) print("Addr Balance:", addr_balance) ``` -## Más información {#further-reading} +## Leer más {#further-reading} - [EIP-20: Estándar de token ERC-20](https://eips.ethereum.org/EIPS/eip-20) - [Tokens de OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/tokens#ERC20) - [OpenZeppelin: Implementación de ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol) +- [Alchemy: Guía de tokens ERC20 de Solidity](https://www.alchemy.com/overviews/erc20-solidity) diff --git a/src/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md b/src/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md new file mode 100644 index 00000000000..962127d559b --- /dev/null +++ b/src/content/translations/es/developers/docs/standards/tokens/erc-4626/index.md @@ -0,0 +1,207 @@ +--- +title: Estándar de bóveda tokenizada ERC-4626 +description: Un estándar para las bóvedas de rendimiento. +lang: es +--- + +## Introducción {#introduction} + +ERC-4626 es un estándar para optimizar y unificar los parámetros técnicos de las bóvedas que otorgan rendimiento. Proporciona una API estándar para las bóvedas de rendimiento tokenizadas que representan acciones de un único token ERC-20 subyacente. ERC-4626 también esboza una extensión opcional para las bóvedas tokenizadas que usan ERC-20, ofreciendo funcionalidad básica para depósitos, retiros de tokens y lectura de saldos. + +**El papel del ERC-4626 en las bóvedas de rendimiento** + +Los mercados de préstamos, los agregadores y los tokens que intrínsecamente dan interés ayudan a los usuarios a encontrar el mejor rendimiento en sus tokens criptográficos mediante la ejecución de diferentes estrategias. Estas estrategias se llevan a cabo con ligeras variaciones, que podrían ser propensas a errores o desperdiciar recursos de desarrollo. + +ERC-4626 en bóvedas de rendimiento reducirá el esfuerzo de integración y desbloqueará el acceso al rendimiento en varias aplicaciones con poco esfuerzo especializado de los desarrolladores gracias a la creación de patrones de implementación más consistentes y robustos. + +El token ERC-4626 se describe en detalle en [EIP-4626](https://eips.ethereum.org/EIPS/eip-4626). + +## Prerrequisitos {#prerequisites} + +Para comprender mejor esta página, recomendamos leer primero sobre [estándares de token](/developers/docs/standards/tokens/) y [ERC-20](/developers/docs/standards/tokens/erc-20/). + +## Funciones y características de ERC-4626: {#body} + +### Métodos {#methods} + +#### asset {#asset} + +```solidity +function asset() public view returns (address) +``` + +Esta función devuelve la dirección del token subyacente utilizado en la bóveda para contabilidad, depósito y retiro. + +#### totalAssets {#totalassets} + +```solidity +function totalAssets() public view returns (uint256) +``` + +Esta función devuelve la cantidad total de activos subyacentes que se poseen en la bóveda. + +#### convertToShares {#convertoshares} + +```solidity +function convertToShares(uint256 assets) public view returns (uint256 shares) +``` + +Esta función devuelve la cantidad de `shares` (acciones) que serían intercambiadas por la bóveda por la cantidad de `assets` (activos) proporcionados. + +#### convertToAssets {#convertoassets} + +```solidity +function convertToAssets(uint256 shares) public view returns (uint256 assets) +``` + +Esta función devuelve la cantidad de `assets` que serían intercambiados por la bóveda por la cantidad de `shares` proporcionadas. + +#### maxDeposit {#maxdeposit} + +```solidity +function maxDeposit(address receiver) public view returns (uint256) +``` + +Esta función devuelve la cantidad máxima de activos subyacentes que pueden depositarse en una sola llamada de depósito ([`deposit`](#deposit)) por parte del `receiver` (receptor). + +#### previewDeposit {#previewdeposit} + +```solidity +function previewDeposit(uint256 assets) public view returns (uint256) +``` + +Esta función permite a los usuarios simular los efectos de su depósito en el bloque actual. + +#### deposit {#deposit} + +```solidity +function deposit(uint256 assets, address receiver) public returns (uint256 shares) +``` + +Esta función deposita `assets` de los tokens subyacentes en la bóveda y otorga la propiedad de acciones (`shares`) al receptor (`receiver`). + +#### maxMint {#maxmint} + +```solidity +function maxMint(address receiver) public view returns (uint256) +``` + +Esta función devuelve la cantidad máxima de acciones que pueden mintearse en una sola llamada de [`mint`](#mint) (minteo) por parte del receptor (`receiver`). + +#### previewMint {#previewmint} + +```solidity +function previewMint(uint256 shares) public view returns (uint256) +``` + +Esta función permite a los usuarios simular los efectos de su minteo en el bloque actual. + +#### mint {#mint} + +```solidity +function mint(uint256 shares, address receiver) public returns (uint256 assets) +``` + +Esta función mintea exactamente `shares` acciones de la bóveda al `receiver` depositando `assets` de los tokens subyacentes. + +#### maxWithdraw {#maxwithdraw} + +```solidity +function maxWithdraw(address owner) public view returns (uint256) +``` + +Esta función devuelve la cantidad máxima de activos subyacentes que se pueden retirar del saldo del propietario (`owner`) con una única llamada a [`withdraw`](#withdraw) (retiro). + +#### previewWithdraw {#previewwithdraw} + +```solidity +function previewWithdraw(uint256 assets) public view returns (uint256) +``` + +Esta función permite a los usuarios simular los efectos de su retiro en el bloque actual. + +#### withdraw {#withdraw} + +```solidity +function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares) +``` + +Esta función quema `shares` del `owner` y envía exactamente `assets` token de la bóveda al `receiver`. + +#### maxRedeem {#maxredeem} + +```solidity +function maxRedeem(address owner) public view returns (uint256) +``` + +Esta funcion retorna la cantidad máxima de acciones que pueden ser reclamadas del saldo del `owner` a traves de una llamada a [`redeem`](#redeem) (canjeo o reclamo). + +#### previewRedeem {#previewredeem} + +```solidity +function previewRedeem(uint256 shares) public view returns (uint256) +``` + +Esta función permite a los usuarios simular el efecto de su canjeo en el bloque actual. + +#### redeem {#redeem} + +```solidity +function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets) +``` + +Esta función canjea un número específico de `shares` del `owner` y envía `assets` del token subyacente de la bóveda al `receiver`. + +#### totalSupply {#totalsupply} + +```solidity +function totalSupply() public view returns (uint256) +``` + +Devuelve el número total de acciones no canjeadas de la bóveda en circulación. + +#### balanceOf {#balanceof} + +```solidity +function balanceOf(address owner) public view returns (uint256) +``` + +Devuelve la cantidad total de acciones de la bóveda que el `owner` tiene actualmente. + +### Eventos {#events} + +#### Evento de depósito + +**DEBE** ser emitido cuando se depositan tokens en la bóveda mediante los métodos [`mint`](#mint) y [`deposit`](#deposit) + +```solidity +event Deposit( + address indexed sender, + address indexed owner, + uint256 assets, + uint256 shares +) +``` + +Donde `sender` es el usuario que intercambió `assets` por `shares` y transfirió esas `shares` al `owner`. + +#### Evento de retiro + +**DEBE** ser emitido cuando un depositante retira acciones de la bóveda con los métodos [`redeem`](#redeem) o [`withdraw`](#withdraw). + +```solidity +event Withdraw( + address indexed sender, + address indexed receiver, + address indexed owner, + uint256 assets, + uint256 share +) +``` + +Donde `sender` es el usuario que desencadenó el retiro e intercambió `shares`, en posesión de `owner`, por `assets`. `receiver` es el usuario que recibió los `assets` retirados. + +## 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) diff --git a/src/content/translations/es/developers/docs/standards/tokens/erc-721/index.md b/src/content/translations/es/developers/docs/standards/tokens/erc-721/index.md index 4f542157b65..cebd04ea94e 100644 --- a/src/content/translations/es/developers/docs/standards/tokens/erc-721/index.md +++ b/src/content/translations/es/developers/docs/standards/tokens/erc-721/index.md @@ -14,13 +14,13 @@ Una ficha no funcional (NFT) se utiliza para identificar algo o a alguien de una El ERC-721 introduce una norma para NFT, en otras palabras, este tipo de ficha es único y puede tener un valor diferente que otra ficha del mismo contrato inteligente, tal vez debido a su antigüedad, rareza o incluso a algo como su visualidad. Espera, ¿visual? -¡Sí! Todos los NFT tienen una variable `uint256` llamada `tokenId`, así para cualquier Contrato ERC-721, el par `dirección del contrato, uint256 tokenId` debe ser único globalmente. Dicho esto, un dApp puede tener un "convertidor" que utilice el `tokenId` como entrada y produzca una imagen de algo genial, como zombies, armas, habilidades o gatitos increíbles. +¡Sí! Todos los NFT tienen una variable `uint256` llamada `tokenId`, así para cualquier Contrato ERC-721, el par `dirección del contrato, uint256 tokenId` debe ser único globalmente. Dicho esto, una dapp puede tener un "convertidor" que utilice el `tokenId` como entrada y produzca una imagen de algo atractivo, ¡como zombies, armas, habilidades o increíbles gatitos! -## Prerrequisitos {#prerequisites} +## Requisitos previos {#prerequisites} - [Cuentas](/developers/docs/accounts/) - [Contratos inteligentes](/developers/docs/smart-contracts/) -- [Estándares de tokens](/developers/docs/standards/tokens/) +- [Estándares de token](/developers/docs/standards/tokens/) ## Cuerpo {#body} @@ -56,7 +56,7 @@ De [EIP-721](https://eips.ethereum.org/EIPS/eip-721): ### Ejemplos {#web3py-example} -Vamos a ver la importancia de un estándar para que inspeccionemos fácilmente cualquier contrato de token de ERC-721 en Ethereum. Sólo necesitamos la Interfaz binaria de aplicaciones de contrato (ABI) para crear una interfaz a cualquier Token ERC-721. Como puedes ver a continuación, usaremos una ABI simplificada, para que sea un ejemplo de fricción bajo. +Vamos a ver la importancia de un estándar para que inspeccionemos fácilmente cualquier contrato de token de ERC-721 en Ethereum. Sólo necesitamos la Interfaz binaria de aplicaciones de contrato (ABI) para crear una interfaz a cualquier Token ERC-721. Como puedes ver a continuación, usaremos un ABI simplificado, para que sea un ejemplo de fricción baja. #### Ejemplo de Web3.py {#web3py-example} @@ -127,7 +127,7 @@ ck_extra_abi = [ } ] -ck_contract = w3.eth.contract(address=w3.toChecksumAddress(ck_token_addr), abi=simplified_abi+ck_extra_abi) +ck_contract = w3.eth.contract(address=w3.to_checksum_address(ck_token_addr), abi=simplified_abi+ck_extra_abi) name = ck_contract.functions.name().call() symbol = ck_contract.functions.symbol().call() kitties_auctions = ck_contract.functions.balanceOf(acc_address).call() @@ -148,25 +148,25 @@ tx_event_abi = { } # We need the event's signature to filter the logs -event_signature = w3.sha3(text="Transfer(address,address,uint256)").hex() +event_signature = w3.keccak(text="Transfer(address,address,uint256)").hex() -logs = w3.eth.getLogs({ - "fromBlock": w3.eth.blockNumber - 120, - "address": w3.toChecksumAddress(ck_token_addr), +logs = w3.eth.get_logs({ + "fromBlock": w3.eth.block_number - 120, + "address": w3.to_checksum_address(ck_token_addr), "topics": [event_signature] }) # Notes: -# - 120 blocks is the max range for CloudFlare Provider +# - Increase the number of blocks up from 120 if no Transfer event is returned. # - If you didn't find any Transfer event you can also try to get a tokenId at: # https://etherscan.io/address/0x06012c8cf97BEaD5deAe237070F9587f8E7A266d#events # Click to expand the event's logs and copy its "tokenId" argument - recent_tx = [get_event_data(w3.codec, tx_event_abi, log)["args"] for log in logs] -kitty_id = recent_tx[0]['tokenId'] # Paste the "tokenId" here from the link above -is_pregnant = ck_contract.functions.isPregnant(kitty_id).call() -print(f"{name} [{symbol}] NFTs {kitty_id} is pregnant: {is_pregnant}") +if recent_tx: + kitty_id = recent_tx[0]['tokenId'] # Paste the "tokenId" here from the link above + is_pregnant = ck_contract.functions.isPregnant(kitty_id).call() + print(f"{name} [{symbol}] NFTs {kitty_id} is pregnant: {is_pregnant}") ``` El contrato de CryptoKitties tiene algunos eventos interesantes aparte de los estándar. @@ -200,15 +200,15 @@ ck_extra_events_abi = [ # We need the event's signature to filter the logs ck_event_signatures = [ - w3.sha3(text="Pregnant(address,uint256,uint256,uint256)").hex(), - w3.sha3(text="Birth(address,uint256,uint256,uint256,uint256)").hex(), + w3.keccak(text="Pregnant(address,uint256,uint256,uint256)").hex(), + w3.keccak(text="Birth(address,uint256,uint256,uint256,uint256)").hex(), ] # Here is a Pregnant Event: # - https://etherscan.io/tx/0xc97eb514a41004acc447ac9d0d6a27ea6da305ac8b877dff37e49db42e1f8cef#eventlog -pregnant_logs = w3.eth.getLogs({ - "fromBlock": w3.eth.blockNumber - 120, - "address": w3.toChecksumAddress(ck_token_addr), +pregnant_logs = w3.eth.get_logs({ + "fromBlock": w3.eth.block_number - 120, + "address": w3.to_checksum_address(ck_token_addr), "topics": [ck_event_signatures[0]] }) @@ -216,9 +216,9 @@ recent_pregnants = [get_event_data(w3.codec, ck_extra_events_abi[0], log)["args" # Here is a Birth Event: # - https://etherscan.io/tx/0x3978028e08a25bb4c44f7877eb3573b9644309c044bf087e335397f16356340a -birth_logs = w3.eth.getLogs({ - "fromBlock": w3.eth.blockNumber - 120, - "address": w3.toChecksumAddress(ck_token_addr), +birth_logs = w3.eth.get_logs({ + "fromBlock": w3.eth.block_number - 120, + "address": w3.to_checksum_address(ck_token_addr), "topics": [ck_event_signatures[1]] }) @@ -231,11 +231,12 @@ recent_births = [get_event_data(w3.codec, ck_extra_events_abi[1], log)["args"] f - [CryptoKitties](https://www.cryptokitties.co/) es un juego centrado en criables, coleccionables y tan adorables criaturas que llamamos CryptoKitties. - [Sorare](https://sorare.com/) es un juego de fútbol de fantasía global en el que puedes coleccionar coleccionables de ediciones limitadas, gestiona tus equipos y compite para ganar premios. - [Ethereum Name Service (ENS)](https://ens.domains/) ofrece un Nombre en forma descentralizada de abordar los recursos tanto dentro y fuera de la cadena de bloques utilizando nombres sencillos y legibles por humanos. -- [Unstoppable Domains](https://unstoppabledomains.com/) es una empresa con sede en San Francisco que crea dominios en blockchains. Los dominios de blockchain reemplazan las direcciones de criptomonedas por nombres legibles por humanos y se pueden usar para habilitar sitios web resistentes a la censura. -- [Las tarjetas no encadenadas](https://godsunchained.com/) son un TCG en la blockchain de Ethereum, que utiliza los NFT para representar la propiedad real en los activos del juego. -- [Bored Ape Yacht Club](https://boredapeyachtclub.com) es una colección de 10.000 NFT únicos que, además de ser una obra de arte de probada rareza, actúa como token de membresía del club, lo que proporciona ventajas y beneficios a los miembros que aumentan con el tiempo como resultado de los esfuerzos de la comunidad. +- [POAP](https://poap.xyz) entrega NFT gratis a las personas que asisten a eventos o completan acciones específicas. Los POAP se pueden crear y distribuir de forma gratuita. +- [Unstoppable Domains](https://unstoppabledomains.com/) es una empresa con sede en San Francisco que crea dominios en cadenas de bloques. Los dominios de cadena de bloques reemplazan las direcciones de criptomonedas por nombres legibles por humanos y se pueden usar para habilitar sitios web resistentes a la censura. +- [Tarjetas de Gods Unchained:](https://godsunchained.com/) TCG en la cadena de bloques de Ethereum que utiliza NFT para otorgar propiedad real en los activos del juego. +- [Bored Ape Yacht Club](https://boredapeyachtclub.com) es una colección de 10.000 NFT únicos que, además de ser obras de arte de probada rareza, actúa como token de membresía del club, lo que proporciona ventajas y beneficios a los miembros que aumentan con el tiempo como resultado de los esfuerzos de la comunidad. -## Más información {#further-reading} +## Leer más {#further-reading} - [EIP-721: ERC-721 Estándar de token no fungible](https://eips.ethereum.org/EIPS/eip-721) - [OpenZeppelin: Documentos de ERC-721](https://docs.openzeppelin.com/contracts/3.x/erc721) diff --git a/src/content/translations/es/developers/docs/standards/tokens/erc-777/index.md b/src/content/translations/es/developers/docs/standards/tokens/erc-777/index.md index 3e6437b6ca7..9f257b5d28b 100644 --- a/src/content/translations/es/developers/docs/standards/tokens/erc-777/index.md +++ b/src/content/translations/es/developers/docs/standards/tokens/erc-777/index.md @@ -4,11 +4,15 @@ description: lang: es --- +## Advertencia {#warning} + +**ERC-777 es dificil de implementar de forma apropiada debido a su [susceptibilidad a diferentes formas de ataque](https://github.com/OpenZeppelin/openzeppelin-contracts/issues/2620). En cambio es recomendable usar [ERC-20](/developers/docs/standards/tokens/erc-20/). **Esta página permanece como un archivo histórico. + ## ¿Introducción? {#introduction} -ERC-777 es un estándar de token fungible que mejora el estándar [ERC-20](/developers/docs/standards/tokens/erc-20/). +ERC-777 es un estándar de token fungible que mejora el estándar [ERC-20](/developers/docs/standards/tokens/erc-20/) existente. -## Prerrequisitos {#prerequisites} +## Pre-requisitos: {#prerequisites} Para entender mejor esta página, recomendamos que primero lea acerca de [ERC-20](/developers/docs/standards/tokens/erc-20/). @@ -18,7 +22,7 @@ ERC-777 proporciona las siguientes mejoras sobre ERC-20. ### Hooks {#hooks} -Los hooks son una función descrita en el código de los contratos inteligentes. Se recurre a ellos cuando se envían o reciben tokens a través de un contrato. Esto permite que un contrato inteligente reaccione a tokens entrantes o salientes. +Los hooks son una función descrita en el código de los contratos inteligentes. Se recurre a ellos cuando se envían o reciben tokens a través de un contrato. Esto permite que un contato inteligente reaccione a tokens entrantes o salientes. Los hooks se registran y descubren usando el estándar [ERC-1820](https://eips.ethereum.org/EIPS/eip-1820). @@ -30,12 +34,12 @@ Los hooks se registran y descubren usando el estándar [ERC-1820](https://eips.e ### Decimales {#decimals} -El estándar también resuelve la confusión en torno a ` decimales` causada en ERC-20. Esta claridad mejora la experiencia del desarrollador. +El estándar también resuelve la confusión en torno a los ` decimales` de ERC-20. Esta claridad mejora la experiencia del desarrollador. -### Compatibilidad con versiones anteriores de ERC-20 {#backwards-compatibility-with-erc-20} +### Compatibilidad retrospectiva con ERC-20 {#backwards-compatibility-with-erc-20} Se puede interactuar con contratos ERC-777 como si fueran contratos ERC-20. -## Seguir leyendo {#further-reading} +## Más información {#further-reading} -[EIP-777: estándar de token](https://eips.ethereum.org/EIPS/eip-777) +[Estándar de token EIP-777](https://eips.ethereum.org/EIPS/eip-777) diff --git a/src/content/translations/es/developers/docs/standards/tokens/index.md b/src/content/translations/es/developers/docs/standards/tokens/index.md index b147dff5189..741847b3289 100644 --- a/src/content/translations/es/developers/docs/standards/tokens/index.md +++ b/src/content/translations/es/developers/docs/standards/tokens/index.md @@ -7,9 +7,9 @@ incomplete: true ## Introducción {#introduction} -Uno de los muchos estándares de desarrollo de Ethereum se centra en las interfaces de token. Estas normas garantizan que los contratos inteligentes sigan siendo composibles, por ejemplo, cuando un nuevo proyecto emite un token, ayudan a que estos sigan siendo compatible con los intercambios descentralizados existentes. +Muchos estándares de desarrollo de Ethereum se centran en las interfaces de token. Estas normas garantizan que los contratos inteligentes sigan siendo composibles, por ejemplo, cuando un nuevo proyecto emite un token, ayudan a que estos sigan siendo compatible con los intercambios descentralizados existentes. -## Prerrequisitos {#prerequisites} +## Requisitos previos {#prerequisites} - [Estándares de desarrollo de Ethereum](/developers/docs/standards/) - [Contratos inteligentes](/developers/docs/smart-contracts/) @@ -22,10 +22,13 @@ Aquí están algunos de los estándares de token más populares de Ethereum: - [ERC-721](/developers/docs/standards/tokens/erc-721/): Una interfaz para tokens no fungibles (NFT), como un deed de una obra de arte o una canción. - [ERC-777](/developers/docs/standards/tokens/erc-777/): ERC-777 permite a los usuarios crear funciones adicionales, como un contrato mixto para lograr mejoras en la privacidad de las transacciones o una función de recuperación de emergencia para rescatarlo si pierde sus claves privadas. - [ERC-1155](/developers/docs/standards/tokens/erc-1155/): ERC-1155 permite operaciones y empaquetado de transacciones más eficientes, lo que permite ahorrar costos. Este estándar de token permite crear tanto utility tokens (como $BNB o $BAT) como tokens no fungibles como CryptoPunks. +- [ERC-4626](/developers/docs/standards/tokens/erc-4626/): Estándar de bóveda tokenizada diseñado para optimizar y unificar los parámetros técnicos de las bóvedas que otorgan rendimiento. -## Más información {#further-reading} +La lista completa de propuestas [ERC](https://eips.ethereum.org/erc). -_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ +## Leer más {#further-reading} + +_¿Conoce algún recurso de la comunidad que le haya servido de ayuda? Edite esta página y añádalo._ ## Tutoriales relacionados {#related-tutorials} diff --git a/src/content/translations/es/developers/docs/storage/index.md b/src/content/translations/es/developers/docs/storage/index.md index 4763a0f8265..81566b80f05 100644 --- a/src/content/translations/es/developers/docs/storage/index.md +++ b/src/content/translations/es/developers/docs/storage/index.md @@ -2,34 +2,209 @@ title: Almacenamiento descentralizado description: Resumen de qué es el almacenamiento descentralizado y herramientas disponibles para integrarse en una dapp. lang: es -incomplete: true -isOutdated: true --- -En contraposición a un servidor centralizado gestionado por una sola empresa u organización, los sistemas de almacenamiento descentralizados consisten en una red de punto a punto de operadores de usuario, que poseen una porción de los datos generales creando un sistema resistente de almacenamiento y compartición de archivos. +A diferencia de un servidor centralizado operado por una sola compañía u organización, los sistemas de almacenamiento descentralizado constan de una red de pares de usuario-operadores que mantienen una parte de la información general, lo que crea un sistema flexible de almacenamiento de archivos compartidos. Estos pueden estar en una aplicación basada en cadena de bloques o cualquier red de pares. + +Ethereum en sí puede usarse como un sistema de almacenamiento descentralizado, y de hecho lo es cuando se trata de almacenamiento de código en todos los contratos inteligentes. Sin embargo, cuando se trata de grandes cantidades de datos, no es para ello que se diseñó Ethereum. La cadena crece constantemente, pero al momento de escribir este artículo, la cadena de Ethereum tiene alrededor de 500 GB - 1 TB ([dependiendo del cliente](https://etherscan.io/chartsync/chaindefault)), y cada nodo de la red debe poder almacenar toda la información. Si la cadena se expandiera a grandes cantidades de información (digamos 5 TB), no sería viable que todos los nodos siguieran ejecutándose. Además, el costo de implementar todos estos datos en la red principal sería prohibitivo por las tarifas de [gas](/developers/docs/gas). + +Debido a estas limitaciones, necesitamos una cadena o metodología diferente para almacenar grandes cantidades de datos de manera descentralizada. + +Al analizar opciones de almacenamiento descentralizado (dStorage), hay algunas cosas que el usuario debe tener en cuenta. + +- Mecanismo de persistencia / estructura de incentivos +- Aplicación de retención de datos +- Descentralidad +- Consensos + +## Mecanismo de persistencia / estructura de incentivos {#persistence-mechanism} + +### Basado en Blockchain {#blockchain-based} + +Para que cierta información persista para siempre, necesitamos utilizar un mecanismo de persistencia. Por ejemplo, en Ethereum el mecanismo de persistencia se basa en dar cuenta de toda la cadena al ejecutar un nodo. Se van añadiendo datos al final de la cadena, y esta continúa creciendo, lo que requiere que cada nodo replique todos los datos incorporados. + +Esto se conoce como persistencia **basada en la cadena de bloques**. + +El problema de la persistencia basada en la cadena de bloques es que la cadena podría llegar a ser demasiado grande para mantener y almacenar todos los datos de forma viable (p. ej., [distintas fuentes](https://healthit.com.au/how-big-is-the-internet-and-how-do-we-measure-it/) estiman que Internet requeriría más de 40 Zetabytes de capacidad de almacenamiento). + +La cadena de bloques, además, debe tener alguna estructura de incentivos. Por la persistencia basada en la cadena de bloques, se realiza un pago al validador. Cuando los datos se añaden a la cadena, se paga a los validadores para que añadan los datos. + +Plataformas con persistencia basada en la cadena de bloques: + +- Ethereum +- [Arweave](https://www.arweave.org/) + +### Basado en contratos {#contract-based} + +La persistencia **basada en contratos** intuye que los datos no pueden ser replicados por cada nodo y almacenados para siempre, y en su lugar deben ser mantenidos con acuerdos contractuales. Hay acuerdos realizados con múltiples nodos que se comprometen a mantener ciertos datos durante un período de tiempo. Estos deberán ser reembolsados o renovados cuando expiran para seguir manteniendo los datos. + +En la mayoría de los casos, en lugar de almacenar todos los datos en la cadena, se almacena solo el hash del lugar donde se encuentran los datos en la cadena. De esta manera no es necesario escalar toda la cadena para poder mantener la información completa. + +Plataformas con persistencia basada en contratos: + +- [Filecoin](https://docs.filecoin.io/about-filecoin/what-is-filecoin/) +- [Skynet](https://siasky.net/) +- [Storj](https://storj.io/) +- [0Chain](https://0chain.net/) +- [Crust Network](https://crust.network) +- [Swarm](https://www.ethswarm.org/) +- [4EVERLAND](https://www.4everland.org/) + +### Consideraciones adicionales {#additional-consideration} + +IPFS es un sistema distribuido para almacenar y acceder a archivos, sitios web, aplicaciones y datos. No cuenta con un sistema de incentivos, pero se puede utilizar con cualquiera de las soluciones de incentivos basadas en contrato anteriores para una mayor persistencia. Otra forma de persistir datos en IPFS es trabajar con un servicio de "pinning" de datos, que mantendrá los datos fijados para usted. Incluso puede ejecutar su propio nodo de IPFS y contribuir a la red para persistir gratuitamente sus datos y/o los de los demás. + +- [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/) +- [Pinata:](https://www.pinata.cloud/) _Servicio de fijación de IPFS_ +- [web3.storage:](https://web3.storage/) _Servicio de pinning para IPFS/Filecoin_ +- [Infura:](https://infura.io/product/ipfs) _Servicio de pinning en IPFS_ +- [IPFS Scan:](https://ipfs-scan.io) _Explorador de pinning de IPFS_ +- [4EVERLAND:](https://www.4everland.org/) Servicio de pinning de IPFS +- [Filebase:](https://filebase.com) _Servicio de pinning de IPFS_ + +SWARM es una tecnología descentralizada de almacenamiento y distribución de datos con un sistema de incentivos de almacenamiento y un oráculo del precios de alquiler de almacenamiento. + +## Retención de datos {#data-retention} + +Para conservar los datos, es necesario que los sistemas cuenten con algún mecanismo que asegure la conservación de los datos. + +### Mecanismo de desafíos {#challenge-mechanism} + +Una de las formas más populares de aseguraese de que se están conservando los datos es usar un tipo de desafío criptográfico que se emita a los nodos para asegurarse de que aún tienen los datos. Un ejemplo simple de esto es la prueba de acceso de Arweave. Emiten un desafío a los nodos para comprobar si tienen los datos en el bloque más reciente y en un bloque pasado aleatorio. Si el nodo no responde, se lo penaliza. + +Tipos de dStorage que utilizan un mecanismo de desafíos: + +- 0Chain +- Skynet +- Arweave +- Filecoin +- Crust Network +- 4EVERLAND + +### Descentralización {#decentrality} + +No existen buenas herramientas para medir el nivel de descentralización de las plataformas, pero en general querrá utilizar herramientas que no requieran de algún tipo de KYC para proporcionar evidencia de que no son centralizadas. + +Herramientas descentralizadas sin KYC: + +- 0Chain (implementando una edición sin KYC) +- Skynet +- Arweave +- Filecoin +- IPFS +- Ethereum +- Crust Network +- 4EVERLAND + +### Consensos {#consensus} + +La mayoría de estas herramientas tienen su propia versión de un [mecanismo de consenso](/developers/docs/consensus-mechanisms/) pero generalmente se basan en la [**prueba de trabajo (PoW)**](/developers/docs/consensus-mechanisms/pow/) o la [**prueba de participación (PoS)**](/developers/docs/consensus-mechanisms/pos/). + +Basado en prueba de trabajo: + +- Skynet +- Arweave + +Basado en prueba de participación: + +- Ethereum +- Filecoin +- 0Chain +- Crust Network ## Herramientas relacionadas {#related-tools} -**IPFS:** **_el Sistema de archivos InterPlanetary es un sistema de almacenamiento descentralizado y de referencia de archivos para Ethereum._** +**IPFS: _InterPlanetary File System es un sistema descentralizado de almacenamiento y referencia de archivos para Ethereum._** -- [ipfs.io](https://ipfs.io/) +- [Ipfs.io](https://ipfs.io/) - [Documentación](https://docs.ipfs.io/) - [GitHub](https://github.com/ipfs/ipfs) -**Swarm:** **_Una plataforma de almacenamiento distribuida y un servicio de distribución de contenido para la pila de web3 de Ethereum._** +**Storj DCS: _Almacenamiento de objetos de nube descentralizado seguro, privado y compatible con S3 para desarrolladores._** + +- [Storj.io](https://storj.io/) +- [Documentación](https://docs.storj.io/) +- [GitHub](https://github.com/storj/storj) + +**Skynet: _Skynet es una cadena de PoW descentralizada dedicada a una Web descentralizada._** + +- [Skynet.net](https://siasky.net/) +- [Documentación](https://siasky.net/docs/) +- [GitHub](https://github.com/SkynetLabs/) + +**Filecoin: _Filecoin fue creado por el equipo creador de IPFS. Es una capa de incentivos basada en los ideales de IPFS._** + +- [Filecoin.io](https://filecoin.io/) +- [Documentación](https://docs.filecoin.io/) +- [GitHub](https://github.com/filecoin-project/) + +**Arweave: _Arweave es una plataforma de dStorage._** + +- [Arweave.org](https://www.arweave.org/) +- [Documentación](https://docs.arweave.org/info/) +- [Arweave](https://github.com/ArweaveTeam/arweave/) + +**0chain: _0Chain es una plataforma de dStorage de prueba de participación con sharding y blobbers._** + +- [0Chain.net](https://0chain.net/) +- [Documentación](https://docs.0chain.net/0chain/) +- [GitHub](https://github.com/0chain/) + +**Crust Network: _Crust es una plataforma de dStorage basada en IPFS._** + +- [Crust.network](https://crust.network) +- [Documentación](https://wiki.crust.network) +- [Github](https://github.com/crustio) + +**Swarm: _Plataforma de almacenamiento distribuido y servicio de distribución de contenido para la pila web3 de Ethereum._** + +- [EthSwarm.org](https://www.ethswarm.org/) +- [Documentación](https://docs.ethswarm.org/docs/) +- [GitHub](https://github.com/ethersphere/) + +**OrbitDB: _Base de datos "peer-to-peer" sobre IPFS._** + +- [OrbitDB.org](https://orbitdb.org/) +- [Documentación](https://github.com/orbitdb/field-manual/) +- [GitHub](https://github.com/orbitdb/orbit-db/) + +**Aleph.im: _Proyecto de nube descentralizada (base de datos, almacenamiento de archivos, computación y DID). Una combinación única de tecnología P2P fuera de cadena y en cadena. Compatibilidad con IPFS y multicadena._** + +- [Aleph.im](https://aleph.im/) +- [Documentación](https://aleph.im/#/developers/) +- [GitHub](https://github.com/aleph-im/) + +**Ceramic: _Almacenamiento de bases de datos IPFS con control del usuario para aplicaciones ricas en datos e interesantes._** + +- [Ceramic.network](https://ceramic.network/) +- [Documentación](https://developers.ceramic.network/learn/welcome/) +- [GitHub](https://github.com/ceramicnetwork/js-ceramic/) + +**Filebase: _Almacenamiento descentralizado compatible con S3 y servicio de pinning de IPFS con redundancia geográfica. Todos los archivos subidos a IPFS a través de Filebase se fijan automáticamente a la infraestructura de Filebase con una replicación 3x en todo el mundo._** + +- [Filebase.com](https://filebase.com/) +- [Documentación](https://docs.filebase.com/) +- [GitHub](https://github.com/filebase) + +**4EVERLAND: _Plataforma de computación en la nube web 3.0 que integra capacidades centrales de almacenamiento, computación y redes, es compatible con S3 y proporciona almacenamiento de datos sincrónico en redes de almacenamiento descentralizadas como IPFS y Arweave._** + +- [4everland.org](https://www.4everland.org/) +- [Documentación](https://docs.4everland.org/) +- [GitHub](https://github.com/4everland) -- [Swarm](https://ethersphere.github.io/swarm-home/) -- [GitHub](https://github.com/ethersphere/swarm) +**Kaleido: _Plataforma de cadena de bloques como servicio con nodos IPFS con clic en un botón_** -**OrbitDB: ** **_una base de datos de punto a punto acerca de IPFS._** +- [Kaleido](https://kaleido.io/) +- [Documentación](https://docs.kaleido.io/kaleido-services/ipfs/) +- [GitHub](https://github.com/kaleido-io) -- [Documentación](https://github.com/orbitdb/field-manual) -- [GitHub](https://github.com/orbitdb/orbit-db) +## Más información {#further-reading} -## Más lectura {#further-reading} +- [¿Qué es el almacenamiento descentralizado?](https://coinmarketcap.com/alexandria/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_ +- [Cinco mitos comunes que no son ciertos sobre el almacenamiento descentralizado](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_ -_¿Conoces algún recurso en la comunidad que te haya servido de ayuda? Edita esta página y añádelo._ +_¿Conoce algún recurso en la comunidad que le ayudara? ¡Edite la página y añádala!_ ## Temas relacionados {#related-topics} -- [Frameworks de desarrollo](/developers/docs/frameworks/) +- [Entornos de desarrollo](/developers/docs/frameworks/) diff --git a/src/content/translations/es/eips/index.md b/src/content/translations/es/eips/index.md index 19a2c404c68..07bd86d4876 100644 --- a/src/content/translations/es/eips/index.md +++ b/src/content/translations/es/eips/index.md @@ -46,7 +46,7 @@ Los editores de EIP retirados son: Si deseas convertirte en un editor de EIP, por favor revisa [EIP-5069](https://eips.ethereum.org/EIPS/eip-5069). -Los editores EIP deciden cuándo una propuesta está ya madura para convertirse en una EIP, y ayudan a los autores de EIP a sacar adelante sus propuestas. [Los Ethereum Cat Herders](https://ethereumcatherders.com/) ayudan a organizar reuniones entre los editores de EIP y la comunidad (ver [EIPIP](https://github.com/ethereum-cat-herders/EIPIP)). +Los editores EIP deciden cuándo una propuesta está ya madura para convertirse en una EIP, y ayudan a los autores de EIP a sacar adelante sus propuestas. [Los Ethereum Cat Herders](https://www.ethereumcatherders.com/) ayudan a organizar reuniones entre los editores de EIP y la comunidad (ver [EIPIP](https://github.com/ethereum-cat-herders/EIPIP)). El proceso de normalización completo junto con el gráfico correspondiente se describe en [EIP-1](https://eips.ethereum.org/EIPS/eip-1) diff --git a/src/content/translations/es/roadmap/account-abstraction/index.md b/src/content/translations/es/roadmap/account-abstraction/index.md new file mode 100644 index 00000000000..a6616033820 --- /dev/null +++ b/src/content/translations/es/roadmap/account-abstraction/index.md @@ -0,0 +1,126 @@ +--- +title: Abstracción de la cuenta +description: Una visión general de los planes de Ethereum para hacer que las cuentas de usuario sean más sencillas y seguras. +lang: es +summaryPoints: + - La abstracción de cuenta facilita la construcción de carteras con contrato inteligente. + - Las carteras de contrato inteligente facilitan la gestión de acceso a las cuentas de la red de Ethereum. + - Las claves perdidas y expuestas se pueden recuperar usando múltiples copias de seguridad. +--- + +# Abstracción de la cuenta {#account-abstraction} + +Los usuarios interactúan con Ethereum usando **[cuentas de propiedad externa (o EOA)](/glossary/#eoa)**. Esta es la única forma de empezar una transacción o generar un contrato inteligente. Esto limita cómo los usuarios pueden interactuar con Ethereum. Por ejemplo, dificulta la creación de transacciones en lote y requiere que los usuarios siempre mantengan un saldo en ETH para costear el gas. + +La abstracción de cuentas es una forma de rosolver estos problemas, que permite a los usuarios programar flexiblemente con mayor seguridad y mejores experiencias de usuario en sus cuentas. Esto puede suceder [actualizando las cuentas de propiedad externa (o EOA)](https://eips.ethereum.org/EIPS/eip-3074) para que puedan ser controladas por contratos inteligentes, o por [la actualización de los contratos inteligentes](https://eips.ethereum.org/EIPS/eip-2938) para que puedan iniciar transacciones. Ambas opciones requieren cambios en el protocolo de Ethereum. Existe también una tercera vía que implica añadir un [segundo sistema de transacciones independiente](https://eips.ethereum.org/EIPS/eip-4337) para ejecutarlo en paralelo con el protocolo existente. De cualquier forma, el resultado será acceder a Ethereum con carteras de contrato inteligente, ya sea de forma nativa como parte del protocolo existente o por una red de transacciones complementaria. + +Las billeteras de contrato inteligente desbloquean múltiples beneficios para los usuarios, incluyendo: + +- Definir reglas propias de seguridad flexibles. +- Recuperar su cuenta si se pierden las claves. +- Compartir la seguridad de su cuenta entre dispositivos y personas de confianza. +- pagar por el gas de alguien más, o que alguien pague el suyo +- Hacer transacciones en lote (p. ej., aprobar y ejecutar un intercambio de una vez). +- Más oportunidades de que DApps y desarrolladores de carteras innoven en las experiencias de usuario. + +Estos beneficios no son respaldados nativamente hoy, porque solo las cuentas de propiedad externa ([EOAs](/glossary/#eoa)) pueden empezar transacciones. Las EOAs son simplemente pares de claves público-privadas. Funcionan de la siguiente forma: + +- Si tiene la clave privada, puede hacer _lo que quiera_ siempre respetando el marco normativo de la Máquina Virtual de Ethereum (EVM). +- Si no tiene la clave privada, no puede hacer _nada_. + +Si pierde sus claves, no pueden recuperarse y las claves robadas dan a los ladrones acceso instantáneo a todos los fondos de una cuenta. + +Las carteras de contrato inteligente son la solución a este problema, aunque hoy en día es difícil programarlas, porque al fin y al cabo cualquier lógica implementada tendrá que trasladarse a un conjunto de transacciones EOA antes de que Ethereum las procese. La abstracción de cuenta permite que los contratos inteligentes inicien transacciones por sí solos, para que cualquier lógica que el usuario desee implementar pueda codificarse dentro de la misma cartera de contrato inteligente y ejecutarse en Ethereum. + +En última instancia, la abstracción de la cuenta respalda a las carteras de contrato inteligente, simplificando su construir y protegiendo su uso. Con la abstracción de cuenta, los usuarios pueden disfrutar de todos los beneficios de Ethereum sin tener que conocer ni preocuparse por los detalles tecnológicos. + +## Más allá de las fases semilla {#beyond-seed-phrases} + +Las cuentas de la actualidad son seguras porque usan claves privadas que son calculadas a partir de fases semilla. Cualquier persona que tenga acceso a una fase semilla puede fácilmente descubrir la clave privada que protege una cuenta y acceder a todos los activos que protege. Si se pierden una clave privada y una frase semilla, nunca podrá recuperarlas y los activos que controlaban se congelarán para siempre. Es complejo proteger estas frases semilla, incluso para los usuarios más expertos; la estafa de la frase semilla es una de las formas más comunes de fraude electrónico. + +La abstracción de cuenta solucionará este problema al usar un contrato inteligente para retener los activos y autorizar transacciones. Estos contratos inteligentes pueden entonces decorarse con lógica personalizada para hacerlos todo lo seguros y adaptados al usuario que sea posible. A fin de cuentas, igual usará claves privadas para controlar el acceso a su cuenta, pero con redes de seguridad que la simplifiquen y la vuelvan más seguras de gestionar. + +Por ejemplo, se pueden añadir claves de copia de seguridad a la cartera por si las pierde o accidentalmente expone su clave principal. Llegado el caso, podría reemplazarlas por una clave nueva y segura, con el permiso de las claves de copa de seguridad. Podrá asegurar ambas claves de diferentes formas, o confiarlas a diferentes garantes de confianza. Lo cual dificultará que un ladrón obtenga acceso completo a sus fondos. Del mismo modo, puede añadir reglas a la cartera para reducir el impacto si su clave principal es vulnerable, por ejemplo, puede permitir que transacciones de bajo valor se comprueben con una sola firma, mientras que las transacciones de mayor valor requieran la aprobación de múltiples firmantes autenticados. Hay otras maneras en las que las carteras de contrato inteligente pueden ayudarle a frustrar robos, por ejemplo, tener una lista blanca puede servir para bloquear cada transacción, a menos que esté en una dirección de confianza o comprobada por muchas de sus claves previamente aprobadas. + +### Ejemplos de seguridad lógica que puede construirse en una billetera de contrato inteligente: + +- **Autorización multifirma**: puede compartir credenciales de autorización entre múltiples personas o dispositivos de confianza. Posteriormente, puede configurarse el contrato para que las transacciones de más de un valor predeterminado requieran la autorización de cierta proporción (p. ej., 3/5) de las partes de confianza. Por ejemplo, las transacciones de alto valor podrían requerir la aprobación tanto de un dispositivo móvil como de una cartera de hardware, o las firmas de cuentas distribuidas a familiares de confianza. +- **Congelación de cuenta**: si se pierde un dispositivo o está expuesto, la cuenta puede bloquearse desde otro dispositivo autorizado, protegiendo así los activos del usuario. +- **Recuperación de la cuenta**: ¿Ha perdido un dispositivo u olvidado una contraseña? En la actualidad, esto significa que sus activos podrían congelarse para siempre. Con una cartera de contrato inteligente, se pueden establecer algunas cuentas previamente autorizadas que autoricen nuevos dispositivos y restablezcan el acceso. +- **Establecer límites de transacción**: especificar umbrales diarios de cantidades máximas que se puedan transferir desde la cuenta al día/semana/mes. Esto significa que si un intruso acede a su cuenta, no podrá sacar todo de una vez y usted tendrá ocasiones de congelar y restablecer el acceso. +- **Crear listas blancas**: solo permitir transacciones a ciertas direcciones que sepa que son seguras. Esto significa que _incluso en caso de que_ le robaran su clave privada, el intruso no podría enviar fondos a las cuentas destinatarias que no estén en la lista blanca. Para modificar estas listas blancas se requerirían múltiples firmas, de modo que el intruso no pudiera añadir su propia dirección a la lista, a menos que tuviese acceso a varias de sus claves de copias de seguridad. + +## Mejor experiencia de usuario {#better-user-experience} + +La abstracción de cuenta permite una **mejor experiencia global de usuario** así como una **seguridad mejorada**, porque añade la compatibilidad con carteras de contrato inteligente dentro del protocolo. La razón más importante de esto es que proveerá a desarrolladores de contratos inteligentes, billeteras y aplicaciones, mayor libertad para innovar en la experiencia de usuario en formas que aún no logramos anticipar. Algunas mejoras obvias que traerá la abstracción de cuenta incluyen la agrupación de transacciones para aumentar la velocidad y la eficiencia. Por ejemplo, un simple intercambio debería ser una sencilla operación, pero hoy requiere la firma de múltiples transacciones para aprobar el uso de tókenes individuales antes del intercambio. La abstracción de cuenta elimina esa fricción al permitir las transacciones agrupadas. Además, las transacciones agrupadas podrían aprobar el valor exacto de los tókenes requeridos para cada transacción y anular las aprobaciones una vez completada la transacción, proporcionando seguridad adicional. + +La gestión del gas también se mejora mucho con la abstracción de cuenta. Las aplicaciones, no solo pueden ofrecer el pago de las tarifas de gas de sus usuarios, las tarifas de gas también pueden pagarse con otros tókenes además de ETH, lo que libera a los usuarios de tener que mantener un balance de ETH para transacciones de fondos. Esto funcionaría intercambiando los tókenes de los usuarios por ETH dentro del contrato y luego usando ETH para pagar el gas. + + + +La gestión del gas es una de las principales fricciones de los usuarios de Ethereum, principalmente porque ETH es el único activo que puede usarse para pagar por transacciones. Imagine que tiene una cartera con USDC, pero sin ETH. No podrá mover o intercambiar esos tókenes USDC, porque no puede pagar el gas. No puede intercambiar los USDC por ETH tampoco, porque eso en sí mismo cuesta gas. Tendrá que mandar más ETH a su cuenta desde una plataforma de cambio u otra dirección para solucionar el problema. Con billeteras de contrato inteligente, podrá simplemente pagar por gas en USDC, liberando su cuenta. Ahora no tendrá que mantener un balance de ETH en todas sus cuentas. + +La abstracción de cuenta también permite a los desarrolladores de DApp ser creativos con la gestión del gas. Por ejemplo, puede empezar a pagar a su DEX favorito una tarifa fija mensual por transacciones ilimitadas. DApps podría ofrecer el pago de todas sus tarifas de gas en su nombre como recompensa por usar su plataforma, o como una oferta de incorporación. Los desarrolladores podrán innovar en el tema del gas más fácilmente cuando las carteras de contrato inteligente sean compatibles con el protocolo. + + + +Las sesiones de confianza también pueden transformar potencialmente la experiencia del usuario, especialmente para aplicaciones como juegos, donde se necesitan aprobar grandes cantidades de transacciones pequeñas en poco tiempo. La aprobación individual de cada transacción rompería la experiencia de juego, pero la aprobación permanente es insegura. Una billetera de contrato inteligente podría aprobar ciertas transacciones por un tiempo fijo, hasta valores específicos o solo para ciertas direcciones. + +También es interesante considerar cómo las compras podrían cambiar con la abstracción de cuenta. Hoy, cada transacción debe aprobarse y ejecutarse desde una cartera prefinanciada con la cantidad suficiente de tókenes correctos. Con la abstracción de cuenta, la experiencia podría ser más parecida a la compra familiar en línea, donde un usuario podría llenar una «cesta» con artículos de un toque para comprarlo todo, con toda la lógica requerida cubierta por el contrato, no por el usuario. + +Estos son solo algunos ejemplos de cómo las experiencias de usuario podrían pasar al siguiente nivel con la abstracción de cuenta, pero habrá muchos más que todavía no hemos imaginado. La abstracción de cuenta libera a los desarrolladores de las limitaciones de los EOA actuales, permitiéndoles aprovechar las ventajas de web2 a web3 sin sacrificar la custodia propia y además piratear creativamente nuevas experiencias de usuario. + +## ¿Cómo se implementará la abstracción de cuenta? {#how-will-aa-be-implemented} + +Las carteras de contrato inteligente existen actualmente, pero es un desafío implementarlas debido a que la EVM no las admite. En cambio, se basan en proteger un código relativamente complejo con transacciones estándar de Ethereum. Ethereum puede cambiar esto al permitir que contratos inteligentes inicien transacciones, controlando la lógica necesaria en los contratos inteligentes de Ethereum en vez de fuera de la cadena. Al colocar la lógica en los contratos inteligentes se aumenta la descentralización de Ethereum, ya que elimina la necesidad de «repetidores» ejecutados por desarrolladores de carteras para traducir mensajes firmados por el usuario de transacciones regulares de Ethereum. + + + +EIP-2771 introduce el concepto de transacciones meta, lo que le permite a terceros pagar por los costes de gas de un usuario sin hacer cambios en el protocolo de Ethereum. En principio base es enviar las transacciones firmadas por un usuario a un contrato de transitario. El transitario es una entidad de confianza que verifica que las transacciones sean válidas antes de enviarlas a un repetidor de gas. Esto se realiza fuera de la cadena, evitando la necesidad de pagar gas. El repetidor de gas transfiere la transacción a un contrato «destinatario», pagando el gas necesario para que la transacción se ejecute en Ethereum. La transacción se ejecuta si el destinatario conoce y se fía del transitario. Este modelo le facilita a los desarrolladores la implementación de transacciones sin gas para usuarios. + + + + + +EIP-4337 es el primer paso hacia la compatibilidad con la cartera de contrato inteligente de forma descentralizada que no requiere cambios en el protocolo de Ethereum. En vez de modificar la capa de consenso para ser compatible con carteras de contrato inteligente, se añade un nuevo sistema por separado al protocolo de intercambio de información de transacción normal. Este sistema de nivel superior se construye alrededor de un nuevo objeto llamado UserOperation que recoge acciones de un usuario junto con firmas relevantes. Estas acciones UserOperation se emiten después a una zona de espera donde los validadores pueden reunirlas en una «transacción agrupada». La transacción agrupada representa una secuencia de muchas UserOperations individuales y puede incluirse en bloques de Ethereum como una transacción normal para que los validadores la recojan usando modelos de selección similares que maximizan las tarifas. + +El funcionamiento de las carteras también cambiaría en el marco del EIP-4337. En lugar de que cada cartera implemente de nuevo la lógica segura común, aunque compleja, esas funciones se externalizarían a un contrato global de cartera conocido como el "punto de entrada". Esto controlaría las operaciones que pagan las tarifas y ejecutan el código de EVM para que los desarrolladores de carteras puedan centrarse en proporcionar una experiencia de usuario excelente. + +Nota el contrato de punto de entrada EIP 4337 se implementó en la red principal de Ethereum el 1 de marzo del 2023. Puede ver el contrato en Etherscan. + + + + + +EIP-2938 tiene como objetivo actualizar el protocolo de Ethereum al introducir un nuevo tipo de transacción, AA_TX_TYPE que incluye tres campos: nonce, destino y datos, donde nonce es un contador de transacciones, destino es la dirección de contrato del punto de entrada datos es el código byte de EVM. Para ejecutar estas transacciones, hay dos instrucciones nuevas (conocidas como códigos operativos) que se deben añadir a la EVM: NONCE y PAYGAS. El código OP NONCE registra la secuencia de transacción y PAYGAS calcula y retira el gas necesario para ejecutar una transacción del balance del contrato. Estas nuevas características le permiten a Ethereum respaldar nativamente las carteras de contrato inteligente, dado que la infraestructura necesaria se integra en el protocolo de Ethereum. + +Tenga en cuenta que EIP-2938 no está activo actualmente. La comunidad ahora está favoreciendo el EIP-4337 porque no requiere cambios en el protocolo. + + + + + +EIP-3074 pretende actualizar las cuentas de propiedad externa de Ethereum al permitirles delegar control a un contrato inteligente. Esto significa que la lógica del contrato inteligente podría aprobar transacciones originadas por una EOA. Esto podría permitir características como el patrocinio de gas y transacciones por lotes. Para que esto funcione, dos nuevos códigos operativos deben añadirse a la EVM: AUTH y AUTHCALL. Con EIP-3074 los beneficios de una cartera de contrato inteligente están disponibles sin necesitar un contrato, en su lugar, un contrato de tipo específico sin estado, ni fiabilidad, no actualizable, conocido como «invocador» hace las transacciones. + +Tenga en cuenta que EIP-3074 no está activo actualmente. La comunidad ahora está favoreciendo el EIP-4337 porque no requiere cambios en el protocolo. + + + +## Progreso actual {#current-progress} + +Las billeteras de contrato inteligente ya están disponibles, pero existen más actualizaciones necesarias para hacerlas todo lo descentralizadas y sin permisos como sea posible. El EIP-4337 es una propuesta madura que no requiere ningún cambio en el protocolo de Ethereum, así que es posible que se pueda implementar prontamente. Sin embargo, las actualizaciones que alteran el protocolo de Ethereum no se encuentran en desarrollo activo en este momento, por lo que esos cambios pueden llevar bastante tiempo en enviarse. También es posible que la abstracción de cuenta se realice de forma suficientemente buena con el EIP-4337 y así no se requieran cambios de protocolo. + +## Más información {#further-reading} + +- [erc4337.io](https://www.erc4337.io/) +- [Panel de debate sobre la abstracción de cuenta en Devcon, Bogotá](https://www.youtube.com/watch?app=desktop&v=WsZBymiyT-8) +- [«¿Por qué la abstracción de cuenta es un punto de inflexión para DApps?» Devcon, Bogotá](https://www.youtube.com/watch?v=OwppworJGzs) +- [«ELI5 La abstracción de cuenta» en Devcon, Bogotá](https://www.youtube.com/watch?v=QuYZWJj65AY) +- [Notas de Vitalik «El camino a la abstracción de cuenta»](https://notes.ethereum.org/@vbuterin/account_abstraction_roadmap#Transaction-inclusion-lists) +- [Publicación de blog de Vitalik sobre carteras de recuperación social](https://vitalik.ca/general/2021/01/11/recovery.html) +- [Notas de EIP-2938](https://hackmd.io/@SamWilsn/ryhxoGp4D#What-is-EIP-2938) +- [Documentación de EIP-2938](https://eips.ethereum.org/EIPS/eip-2938) +- [Notas de EIP-4337](https://medium.com/infinitism/erc-4337-account-abstraction-without-ethereum-protocol-changes-d75c9d94dc4a) +- [Documentación de EIP-4337](https://eips.ethereum.org/EIPS/eip-4337) +- [Documentación de EIP-2771](https://eips.ethereum.org/EIPS/eip-2771) +- [«Aspectos básicos de la abstracción de cuenta»: ¿Qué es abstracción de cuenta? Parte I](https://www.alchemy.com/blog/account-abstraction) diff --git a/src/content/translations/es/roadmap/beacon-chain/index.md b/src/content/translations/es/roadmap/beacon-chain/index.md index 503eac3f748..fb9220dba4c 100644 --- a/src/content/translations/es/roadmap/beacon-chain/index.md +++ b/src/content/translations/es/roadmap/beacon-chain/index.md @@ -13,27 +13,25 @@ summaryPoint3: La cadena de baliza introdujo la lógica de consenso y bloqueó e La cadena de baliza enviada el 1 de diciembre de 2020 formalizó la prueba de participación como mecanismo de consenso de Ethereum con la actualización a La Fusión el 15 de septiembre de 2022. -## ¿Qué era la cadena de baliza? {#what-is-the-beacon-chain} +## ¿Qué es la cadena de baliza? {#what-is-the-beacon-chain} -La cadena de bloques fue el nombre de la cadena de bloques de prueba de participación original lanzada en 2020. Fue creada para mostrar que la lógica de consenso de la prueba de participación era segura y sostenible, antes de habilitarla en la red principal de Ethereum. Por esta razón, estuvo funcionando paralelamente con la prueba de trabajo de Ethereum. Al desconectar la prueba de trabajo y habilitar la prueba de participación en Ethereum, fue necesario instruir a la cadena de baliza a que aceptara las transacciones alojadas en la agrupación de cadena original de Ethereum. Luego, estas se agruparon en bloques y posteriormente se organizaron en la cadena de bloques usando un mecanismo de consenso basado en la prueba de participación. Al mismo tiempo, los clientes originales de Ethereum apagaron su minería, propagación de bloques y lógica de consenso, confiándolo todo a la cadena de baliza. A este evento se le denominó [La Fusión](/roadmap/merge/). Una vez completada La Fusión, dejó de haber dos cadenas de bloques, convirtiéndose en una única cadena de Ethereum con prueba de participación. +La cadena de baliza es el nombre original de la cadena de bloques de la prueba de participación que fue lanzada en 2020. Fue creada para mostrar que la lógica de consenso de la prueba de participación era segura y sostenible, antes de habilitarla en la red principal de Ethereum. Por esta razón, estuvo funcionando paralelamente con la prueba de trabajo de Ethereum. La Cadena de Baliza fue una cadena de bloques 'vacios', pero al cambiar a prueba de trabajo y al cambiar a prueba de participación en Ethereum requiere instrucciones a la Cadena de Baliza para aceptar data de transacciones de clientes de ejecución, juntarlos en bloques y después organizarlos en la cadena de bloques usando un mecanismo de consenso usando una base prueba de participación. Al mismo tiempo, los clientes originales de Ethereum apagaron su minería, propagación de bloques y lógica de consenso, confiándolo todo a la cadena de baliza. A este evento se le denominó [La Fusión](/roadmap/merge/). Una vez producida La Fusión, ya no había dos cadenas de bloques. En lugar de ello, solo había una prueba de participación en Ethereum, que ahora requiere dos clientes diferentes por nodo. La cadena de baliza es ahora la capa de consenso, una red entre pares de clientes de consenso que maneja el bloque de intercambio de información y la lógica de consenso, mientras que los clientes originales forman la capa de ejecución, que es la responsable del intercambio de información y de la ejecución de transacciones, y de la gestión del estado de Ethereum. Las dos capas pueden comunicarse entre sí usando Engine API. ## ¿Qué hace la cadena de baliza? {#what-does-the-beacon-chain-do} -El nombre de la cadena de baliza era el nombre utilizado para referirse al libro mayor de cuentas encargado de orquestar y coordinar a los [participantes](/staking/) de la red de Ethereum mucho antes de que estos comenzaran a validar transacciones reales de Ethereum. No se encargaba de procesar transacciones ni de las interaccones con contratos inteligentes. - -Dio paso al mecanismo de consenso (o «capa de consenso») que reemplazó el minado de la prueba de trabajo de Ethereum y trajo consigo mejoras significativas a la red. - -La cadena de baliza es un elemento fundacional para el [Ethereum seguro, escalable y amigable al medioambiente que tenemos en la actualidad](/roadmap/vision/). +Cadena de baliza es el nombre que se le ha dado a un libro mayor de cuentas que dirigía y coordinaba la red de [participantes](/staking/) de Ethereum antes de que esos participantes comenzaran a validar bloques reales de Ethereum. No procesa transacciones ni maneja interacciones de contratos inteligentes, porque eso se esta haciendo a través de la capa de ejecución. La cadena de baliza es responsable de cosas como la gestión de bloques y certificaciones, de la ejecución del algoritmo de bifurcación y de la gestión de recompensas y penalizaciones. Lea más en nuestra [página de arquitectura de nodos](/developers/docs/nodes-and-clients/node-architecture/#node-comparison). ## El impacto de la cadena de baliza {#beacon-chain-features} ### Introducción a la participación {#introducing-staking} -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 participador, será el encargado de ejecutar el software que crea y valida los nuevos bloques de la cadena. +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 rol similar al que solía realizar el [minado](/developers/docs/mining/), pero con muchas diferencias entre ambos. El minado 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. El minado tampoco requería de 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. -La transición de Ethereum a la prueba de participación le hace significativamente más segura y descentralizada en comparación con la prueba de trabajo. La red se vuelve más descentralizada y menos propensa a ataques con el aumento de personas participando en ella. +Y usando la prueba de participación como un mecanismo de consenso es un componente fundamental para [la seguridad, respecto al medio ambiente y la escalabilidad de Ethereum que tenemos ahora](/roadmap/vision/). Si le interesa convertirse en validador y contribuir con la seguridad de Ethereum, obtenga más información sobre la participación. @@ -43,9 +41,9 @@ La transición de Ethereum a la prueba de participación le hace significativame Al producirse la fusión entre la cadena de baliza y la red principal de Ethereum, la comunidad de Ethereum comenzó a interesarse por la escalabilidad de la red. -La prueba de participación ofrece las ventajas de contar con un registro de todos los productores de bloques aprobados de cualquier período de tiempo, todos ellos con ETH en participación. Este registro establece el escenario para la posibilidad de «dividir y vencer», pero establece de manera precisa la derivación de responsabilidades de la red. +La prueba de participación ofrece las ventajas de contar con un registro de todos los productores de bloques aprobados en cualquier período de tiempo, todos ellos con ETH en participación. Este registro establece el escenario para la posibilidad de «dividir y vencer», pero determina de manera precisa la derivación de responsabilidades de la red. -Esta responsabilidad se diferencia de la responsabilidad de la prueba de trabajo, en donde los mineros no tenían obligaciones con la red, quienes podían detener el minado y desactivar el software del nodo permanentemente sin que esto tuviera repercusiones. Tampoco había un registro de quién proponía los bloques, por lo que no había forma de dividir apropiadamente las responsabilidades de la red. +Esta responsabilidad se diferencia de la responsabilidad de la prueba de trabajo, en donde los mineros no tenían obligaciones con la red, quienes podían detener la minería y desactivar el software del nodo permanentemente sin que esto tuviera repercusiones. Tampoco existía un registro de quién proponía los bloques, por lo que no había forma de dividir apropiadamente las responsabilidades de la red. [Más sobre la fragmentación](/roadmap/danksharding/) @@ -63,7 +61,7 @@ En sus comienzos, la cadena de baliza existía de manera independiente a la red ### Los fragmentos y la cadena de baliza {#shards-and-beacon-chain} -La fragmentación solo podría ser implementada en el ecosistema de Ethereum de manera segura a través del mecanismo de consenso de la prueba de participación. La cadena de baliza introdujo apuestas, que se «fusionaron» con la red principal, allanando el camino para la fragmentación y así ayudar a una mayor escalabilidad de Ethereum. +La fragmentación solo podría implementarse en el ecosistema de Ethereum de manera segura a través del mecanismo de consenso de la prueba de participación. La cadena de baliza introdujo apuestas, que se «fusionaron» con la red principal, allanando el camino para la fragmentación y así contribuir a una mayor escalabilidad de Ethereum. Cadenas de fragmentos @@ -72,4 +70,5 @@ La fragmentación solo podría ser implementada en el ecosistema de Ethereum de ## Más información - [Más sobre las futuras actualizaciones de Ethereum](/roadmap/vision) +- [Más sobre arquitectura de nodos](/developers/docs/nodes-and-clients/node-architecture) - [Más sobre la prueba de participación](/developers/docs/consensus-mechanisms/pos) diff --git a/src/content/translations/es/roadmap/danksharding/index.md b/src/content/translations/es/roadmap/danksharding/index.md new file mode 100644 index 00000000000..2ae939160b6 --- /dev/null +++ b/src/content/translations/es/roadmap/danksharding/index.md @@ -0,0 +1,91 @@ +--- +title: Danksharding +description: "Más información sobre ProtoDanksharding y Danksharding: dos mejoras secuenciales para escalar Ethereum." +lang: es +summaryPoints: + - Danksharding es una actualización multifase para mejorar la escalabilidad y capacidad de Ethereum. + - ProtoDanksharding es la primera etapa y añade objetos binarios a bloques de datos. + - Los bloques de datos ofrecen una forma más barata para que las acumulaciones envíen datos a Ethereum y esos costes pueden repercutir en los usuarios en forma de tarifas de transacción más bajas. + - Posteriormente, con la Danksharding completa, difundirá la responsabilidad de verificar los bloques de datos entre subconjuntos de nodos, escalando aún más Ethereum, a más de 100.000 transacciones por segundo. +--- + +# Danksharding {#danksharding} + +Gracias a **Danksharding** (es decir, a la fragmentación), Ethereum se convierte en una cadena de bloques realmente escalable, aunque para llegar aquí, hay varias actualizaciones de protocolo necesarias. **ProtoDanksharding** es un paso intermedio en el camino. Ambas tienen como objetivo hacer que las transacciones a la capa 2 sean tan baratas como sea posible para los usuarios y deben escalar Ethereum a >100.000 transacciones por segundo. + +## ¿Qué es ProtoDanksharding? {#what-is-protodanksharding} + +ProtoDanksharding, también conocido como [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), es una manera para que las [acumulaciones](/layer2/#rollups) añadan datos más baratos a bloques. El nombre proviene de los investigadores que propusieron la idea: Protolambda y Dankrad Feist. En la actualidad, las acumulaciones no abaratan precisamente el coste de las transacciones para los usuarios, ya que tienen que enviarlas en `CALLDATA`. Su coste es elevado, ya que requiere del procesamiento de todos los nodos de Ethereum y viven siempre en la cadena, aunque las acumulaciones solo necesitan datos por un tiempo limitado. ProtoDanksharding introduce los blobs de datos que se pueden enviar y adjuntar a los bloques. Los datos en estos blobs no son accesibles a la EVM y se eliminan automáticamente después de un periodo de tiempo fijo (1-3 meses). Esto significa que las acumulaciones pueden enviar datos de forma más barata y repercutir el ahorro al usuario final en la forma de transacciones baratas. + + + +Las acumulaciones son una forma de escalar en Ethereum por lotes de transacciones fuera de la cadena y después publicar los resultados en Ethereum. Una acumulación se compone básicamente de dos partes: de datos y de verificación de la ejecución. Los datos son la secuencia total de transacciones que procesa una acumulación para producir un cambio en el estado publicado por Ethereum. La verificación de ejecución es la reejecución de esas transacciones por algún actor honesto (un «proveedor») para asegurarse de que el cambio del estado propuesto sea correcto. Para verificar la ejecución, los datos de las transacciones tienen que estar disponibles durante un tiempo para que cualquiera los descargue y verifique. Esto significa que el proveedor puede identificar y cuestionar cualquier mala conducta del secuenciador de acumulaciones. Sin embargo, no tiene que estar dispobible para siempre. + + + + + +Las acumulaciones envían compromisos a sus datos de transacción en cadena y también hacen que los datos estén disponibles en masas de datos. Esto significa que los proveedores pueden verificar que los compromisos son válidos y desafiar los datos que ellos creen que sea incorrectos. Dentro del nodo, el cliente de consenso mantiene las masas de datos. Los clientes de consenso certifican que ellos han visto los datos y que se están propagando por la red. Si los datos se mantuvieran para siempre, estos clientes se saturarían y sus requisitos para ejecutar los nodos serían ingentes. En lugar de ello, los datos se «podan» (o se limpian) automáticamente del nodo cada 1-3 meses. Las certificaciones del cliente de consenso demuestran que los proveedores tenían suficientes oportunidades de comprobar los datos. Operadores de acumulaciones, usuarios y otros operadores pueden almacenar los datos actuales fuera de la cadena. + + + +### ¿Cómo se verifican los datos de una masa? {#how-are-blobs-verified} + +Las acumulaciones publican las transacciones que ejecutan en las masas de datos. También publican un «compromiso» con los datos. Para ello, ajustan una función polinómica a los datos. Esta función puede evaluarse en varios puntos. Por ejemplo, si definimos una función extremadamente simple `f(x) = 2x-1` entonces podemos evaluarla por `x = 1`, `x = 2`, `x = 3` dando el resultado `1, 3, 5`. Un proveedor aplica la misma función a los datos y la evalúa en los mismos puntos. Si cambian los datos originales, la función no será idéntica y, por lo tanto, tampoco se evaluarán los mismos valores en cada punto. En realidad, el compromiso y prueba son más complicados, porque ellos están involucrados en funciones criptográficas. + +### ¿Qué es KZG? {#what-is-kzg} + +KZG significa Kate-Zaverucha-Goldberg: el nombre de los tres [autores originales](https://link.springer.com/chapter/10.1007/978-3-642-17373-8_11) de un esquema que reduce una masa de datos hasta un pequeño [«compromiso» criptográfico](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html). Tiene que verificarse la masa de datos enviada por una acumulación para garantizar que la misma no se esté comportando indebidamente. Esto incluye un proveedor que reejecuta las transacciones en la masa para verificar la fiabilidad del compromiso. Es igual que la forma en que los clientes de ejecución comprueban la validez de las transacciones de Ethereum en la capa 1 usando pruebas de Merkle. KZG es una prueba alternativa que ajusta una ecuación polinómica a la información. El compromiso evalúa el polinomio en algún punto secreto de datos. Un proveedor encajaría el mismo polinómico de los datos y lo evaluaría en los mismos valores, asegurándose de que el resultado fuera el mismo. Es una forma de comprobar que los datos son compatibles con las técnicas de conocimiento cero usadas por algunas acumulaciones y eventualmente otras partes del protocolo de Ethereum. + +### ¿Qué es la ceremonia KZG? {#what-is-a-kzg-ceremony} + +Una ceremonia KZG es una forma en la que muchas personas de la comunidad de Ethereum pueden generar en conjunto una cadena aleatoria de números secretos que pueden utilizarse para verificar alguna información. Es muy importante que esta cadena de números no sea conocida y no pueda ser recreada por nadie. Para asegurarnos de ello, cada persona que participa en la ceremonia recibe una cadena del participante previo. Entonces crean nuevos valores aleatorios (por ejemplo, permitiendo que su navegador registre el movimiento de su ratón) y los mezclan con el valor anterior. Luego envían el valor al siguiente participante y lo destruyen de su máquina local. Mientras una persona en la ceremonia haga esto con honestidad, el valor final será desconocido para un atacante. La ceremonia EIP-4844 KZG fue abierta al público y decenas de miles de personas participaron para agregar su propia entropía. Para frustrar la ceremonia, el 100 % de los participantes tendría que actuar de mala fe. Desde la perspectiva de los participantes, si saben que se han comportado mal, no necesitan confiar en nadie más, porque saben que aseguraron la ceremonia (cumplieron individualmente con el requisito de 1-de-N participantes honestos). + + + +Cuando una acumulación publica datos en un bloque, proporcionan un «compromiso» que publican en la cadena. Este compromiso es el resultado de evaluar un ajuste polinómico a los datos en ciertos puntos. Estos puntos vienen definidos por los números aleatorios generados en la ceremonia KZG. Los demostradores pueden luego evaluar el polinómico en los mismos puntos para comprobar los datos; si llegan a los mismos valores, entonces los datos son correctos. + + + + + +Si alguien conoce las ubicaciones aleatorias utilizadas para el compromiso, le resultará fácil generar un nuevo polinómico que se ajuste a esos puntos específicos (es decir, una «colisión»). Esto significa que podrían añadir o eliminar datos de la masa y aún así proporcionar una prueba válida. Para evitarlo, en lugar de proporcionar a los demostradores las ubicaciones secretas reales, en realidad reciben las ubicaciones recogidas en una «caja negra» criptográfica utilizando curvas elípticas. Estas mezclan efectivamente los valores de tal manera que los valores originales no se pueden invertir, pero con un álgebra ingeniosa, los demostradores y verificadores aún pueden evaluar polinómicos en los puntos que representan. + + + + + Ni el Danksharding ni el ProtoDanksharding siguen el modelo de fragmentación («sharding», en inglés) tradicional que buscaba dividir la cadena de bloques en varias partes. Las cadenas de fragmentación ya no forman parte de la hoja de ruta. En su lugar, Danksharding utiliza el muestreo distribuido de datos en varias masas para escalar Ethereum. Su implementación es mucho más sencilla. A este modelo a veces se le denomina «fragmentación de datos». + + +## ¿Qué es Danksharding? {#what-is-danksharding} + +Danksharding es la máxima expresión de la escalabilidad de las acumulaciones, que comenzó con ProtoDanksharding. Danksharding aportará una gran cantidad de espacio en Ethereum para que las acumulaciones depositen sus datos comprimidos de transacciones. Esto significa que Ethereum será compatible con cientos de acumulaciones individuales con facilidad y hará realidad la posibilidad de realizar millones de transacciones por segundo. + +Esto funciona mediante la expansión de las masas de datos adjuntos a los bloques, pasando de 1 en ProtoDanksharding a 64 en Danksharding completo. El resto de los cambios necesarios son todas actualizaciones en la forma en que operan los clientes de consenso para permitirles gestionar las grandes masas. La hoja de ruta ya incluye varias de estas modificaciones con otros objetivos independientes del Danksharding. Por ejemplo, Danksharding requiere que se haya implementado la separación entre el generador de propuestas y el constructor de bloques. Esta es una actualización que separa las tareas de construir bloques y proponer bloques entre diferentes validadores. De manera similar, el Danksharding requiere el muestreo de disponibilidad de datos, aunque también es necesario para el desarrollo de clientes muy ligeros que no almacenen mucha información histórica («clientes sin estado»). + + + +La separación entre generador de propuestas y constructor de bloques es necesaria para evitar que los validadores individuales tengan que generar compromisos y pruebas costosas para 32 Mb de masas de datos. Esto ejercería demasiada presión sobre los participantes domésticos y les obligaría a invertir en hardware más potente, lo que perjudica la descentralización. En su lugar, los constructores de bloques especializados asumen la responsabilidad de este costoso trabajo computacional. Luego, ponen sus bloques a disposición de los proponentes de bloques para su difusión. El proponente de bloques simplemente elige el bloque que sea más rentable. Cualquiera puede verificar las masas de datos de manera económica y rápida, lo que significa que cualquier validador normal puede comprobar que los constructores de bloques se están comportando de manera honesta. Esto permite procesar grandes masas sin sacrificar la descentralización. Los constructores de bloques que se comporten de manera incorrecta simplemente podrían ser expulsados de la red con un recorte como penalización, y otros ocuparían su lugar debido a que la construcción de bloques es una actividad rentable. + + + + + +El muestreo de disponibilidad de datos es necesario para que los validadores verifiquen de manera rápida y eficiente las masas de datos. Mediante el muestreo de disponibilidad de datos, los validadores pueden estar muy seguros de que las masas de datos están disponibles y se ha comprometido correctamente. Cada validador puede muestrear aleatoriamente solo algunos puntos de datos y crear una prueba, lo que significa que ningún validador tiene que verificar la masa entera. Si falta algún dato, se identifica rápidamente y la masa se rechazará. + + + +### Progreso actual {#current-progress} + +La implementación completa del Danksharding está aún fuera de escena. Sin embargo, ProtoDanksharding debería llegar relativamente pronto. Al cierre de la edición de este documento (febrero de 2023), la ceremonia KZG sigue abierta y hasta el momento ha atraído a más de 50.000 contribuyentes. El [EIP](https://eips.ethereum.org/EIPS/eip-4844) para el ProtoDanksharding está maduro, la especificación se ha acordado y los clientes implementaron prototipos que actualmente se están probando y preparando para producción. El siguiente paso es implementar los cambios en una red de prueba pública. Puede estar al tanto con la [lista de verificación de preparación del EIP 4844](https://github.com/ethereum/pm/blob/master/Breakout-Room/4844-readiness-checklist.md#client-implementation-status). + +### Más información {#further-reading} + +- [Notas sobre el ProtoDanksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq), _Vitalik Buterin_ +- [Notas de Dankrad sobre Danksharding](https://notes.ethereum.org/@dankrad/new_sharding) +- [Dankrad, Proto y Vitalik comentan el Danksharding](https://www.youtube.com/watch?v=N5p0TB77flM) +- [La ceremonia KZG](https://ceremony.ethereum.org/) +- [La charla en Devcon de Carl Beekhuizen en configuraciones de confianza](https://archive.devcon.org/archive/watch/6/the-kzg-ceremony-or-how-i-learnt-to-stop-worrying-and-love-trusted-setups/?tab=YouTube) +- [Más información sobre el muestreo de disponibilidad para masas de datos](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling) +- [Dankrad Feist sobre compromisos y pruebas en KZG](https://youtu.be/8L2C6RDMV9Q) +- [Compromisos polinómicos KZG](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html) diff --git a/src/content/translations/es/roadmap/future-proofing/index.md b/src/content/translations/es/roadmap/future-proofing/index.md new file mode 100644 index 00000000000..a3f04d16c86 --- /dev/null +++ b/src/content/translations/es/roadmap/future-proofing/index.md @@ -0,0 +1,38 @@ +--- +title: Ethereum garantía futura +description: Estas actualizaciones consolidan a Ethereum como el fundamento descentralizado y resiliente del futuro, en todas sus formas. +lang: es +image: ../../../../../assets/roadmap/roadmap-future.png +alt: "Hoja de ruta de Ethereum" +template: roadmap +--- + +Algunas partes de la hoja de ruta no son obligatorias para escalar o asegurar a Ethereum a corto plazo, pero preparan la estabilidad y fiabilidad de Ethereum en el futuro. + +## Resistencia cuántica {#quantum-resistance} + +Parte de la criptografía que asegura el presente de Ethereum se alterará cuando la computación cuántica se haga realidad. Aunque es probable que la computación cuántica esté a décadas de distancia de ser una amenaza genuina para la criptografía moderna, Ethereum se está construyendo para ser segura por los siglos de los siglos. Esto significa hacer a [Ethereum cuántico resistente](https://consensys.net/blog/developers/how-will-quantum-supremacy-affect-blockchain/) tan pronto como sea posible. + +El desafío al que se enfrentan los desarrolladores de Ethereum es que el protocolo actual de prueba de participación se base en una estrategia de firmas muy eficiente conocida como BLS para añadir votos en bloques válidos. Las computadoras cuánticas son capaces de descodificar esta estrategia de firmas, no obstante, las alternativas cuántico-resistentes no son tan eficientes. + +Las [estrategias comprometidas «KZG»](/roadmap/danksharding/#what-is-kzg) que Ethereum utiliza en múltiples ocasiones para generar secretos criptográficos tienen vulnerabilidad cuántica. Actualmente, esto se evita usando «configuraciones seguras» en las que muchos usuarios generan una aleatoriedad a la que las computadoras cuánticas no pueden aplicar ingeniería inversa. De cualquier forma, la solución idónea sería incorporar simplemente criptografía cuántica segura. Hay dos enfoques principales que podrían convertirse en sustituciones eficientes de las estrategias BLS: [el basado en STARK](https://hackmd.io/@vbuterin/stark_aggregation) y [el basado en redes](https://medium.com/asecuritysite-when-bob-met-alice/so-what-is-lattice-encryption-326ac66e3175) de firmas. Se siguen investigando y elaborando prototipos. + + Lea acerca de KZG y las configuraciones seguras + +## Ethereum más simple y eficiente {#simpler-more-efficient-ethereum} + +La complejidad crea oportunidades para errores o vulnerabilidades que los intrusos pueden explotar. En consecuencia, parte de la hoja de ruta está simplificando Ethereum y eliminando el código que ha estado pendiente de varias actualizaciones, pero que ya no se necesita o que ahora puede mejorarse. A los desarrolladores les resulta más sencillo y dinámico mantener y razonar una base de código. + +Se realizarán múltiples actualizaciones a la [Máquina Virtual de Ethereum (EVM)](/developers/docs/evm) para hacerla más simple y eficiente. Estas incluyen [eliminar el código operativo AUTODESTRUCTOR](https://hackmd.io/@vbuterin/selfdestruct): un comando rara vez usado que no se necesita más y que, en algunas circunstancias, puede llegar a ser peligroso, especialmente si se combina con otras actualizaciones futuras del modelo de almacenamiento de Ethereum. Los clientes de Ethereum aún apoyan algunos tipos de transacciones antiguas que ahora pueden eliminarse completamente. La forma en que se calcula el gas también se puede mejorar y se pueden implementar métodos más eficientes para la aritmética que respalda ciertas operaciones criptográficas. + +Igualmente, hay actualizaciones que pueden hacerse en otras áreas para los clientes actuales de Ethereum. Un ejemplo es que la ejecución actual y los clientes de consenso usan un tipo diferente de comprensión de la información. Será mucho más fácil e intuitivo compartir datos entre clientes si la estrategia de compresión está unificada en toda la red. + +## Progreso actual {#current-progress} + +La mayoría de las actualizaciones requeridas para la garantía futura de Ethereum están aún en fase de investigación y su implementación aún puede tardar varios años. Actualizaciones como eliminar SELF-DESTRUCT y armonizar la estrategia de comprensión usada en la ejecución y en los clientes de consenso probablemente lleguen antes que la criptografía cuántica resistente. + +**Más información** + +- [Gas](/developers/docs/gas) +- [EVM](/developers/docs/evm) +- [Estructura de datos](/developers/docs/data-structures-and-encoding) diff --git a/src/content/translations/es/roadmap/index.md b/src/content/translations/es/roadmap/index.md new file mode 100644 index 00000000000..221d75b9b55 --- /dev/null +++ b/src/content/translations/es/roadmap/index.md @@ -0,0 +1,117 @@ +--- +title: Hoja de ruta de Ethereum +description: El camino hacia una mayor escalabilidad, seguridad y sostenibilidad para Ethereum. +lang: es +template: roadmap +image: ../../../../assets/roadmap/roadmap-main.png +alt: "Hoja de ruta de Ethereum" +summaryPoints: +buttons: + - label: Actualizaciones futuras + toId: "¿Qué cambios están pendientes?" + - label: Actualizaciones anteriores + to: /history/ + variant: borrador +--- + +Ethereum ya es una plataforma poderosa para la coordinación global, pero aún se está mejorando. Un conjunto ambicioso de mejoras actualizará Ethereum de su forma actual a una plataforma de máxima resiliencia a escala completa. Estas actualizaciones se establecen en la hoja de ruta de Ethereum. + +**Para obtener más información sobre las actualizaciones anteriores de Ethereum, visite nuestra página [Historia](/history/)** + +## ¿Qué cambios le esperan a Ethereum? {#what-changes-are-coming} + +La hoja de ruta de Ethereum describe las mejoras específicas que se harán en el protocolo en el futuro. En general, la hoja de ruta traerá los siguientes beneficios a los usuarios de Ethereum: + + + + + + + + +## ¿Por qué Ethereum necesita una hoja de ruta? {#why-does-ethereum-need-a-roadmap} + +Ethereum se actualiza periódciamente para mejorar su escalabilidad, seguridad o sostenibilidad. Uno de los principales puntos fuertes de Ethereum es la adaptación a medida que surgen nuevas ideas de la investigación y el desarrollo. La adaptabilidad le da a Ethereum la flexibilidad para hacer frente a los desafíos emergentes y mantenerse al día con los avances tecnológicos más avanzados. + + + +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 suelen comenzar como debates en un foro como [ethresear.ch](https://ethresear.ch/), [Ethereum magicians](https://www.figma.com/exit?url=https%3A%2F%2Fethereum-magicians.org%2F) o en el servidor de Discord de EthR&D. 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/) + + + + +

    ¿Qué era ETH2?

    + +

    El término Eth2 se usaba comúnmente para describir el futuro de Ethereum antes del cambio a la prueba de participación, pero se eliminó gradualmente a favor de una terminología más precisa.Originalmente se usó para diferenciar la red Ethereum antes del cambio a la prueba de participación y la red después, o a veces para referirse a los diferentes clientes de Ethereum (los clientes de ejecución a veces se denominaban clientes ETH1 y los clientes de consenso a veces se denominaban clientes ETH2).

    + +
    + +## ¿Cambiará la hoja de ruta de Ethereum con el tiempo? {#will-ethereums-roadmap-change-over-time} + +Sí, casi seguro que sí. La hoja de ruta es el plan actual para actualizar Ethereum, que cubre los planes a corto plazo y futuros. Esperamos que la hoja de ruta cambie a medida que se disponga de nueva información y tecnología. + +Piense en la hoja de ruta de Ethereum como un conjunto de intenciones para mejorar Ethereum; es la mejor hipótesis de los principales investigadores y desarrolladores sobre el camino más óptimo de Ethereum. + +## ¿Cuándo terminará la hoja de ruta? {#when-will-the-roadmap-be-finished} + +Ethereum implementará algunas actualizaciones en los próximos seis meses (por ejemplo, retiradas de participación); otras tienen una prioridad más baja y es probable que no se implementen durante los próximos 5-10 años (por ejemplo, la resistencia cuántica). Dar un tiempo preciso de cada actualización es complicado de predecir, ya que muchos elementos de la hoja de ruta se trabajan en paralelo y se desarrollan a diferentes velocidades. La urgencia de una actualización también puede cambiar con el tiempo dependiendo de factores externos (por ejemplo, un salto repentino en el rendimiento y la disponibilidad de los ordenadores cuánticos puede hacer que la criptografía resistente a los cuánticos sea más urgente). + +Una forma de pensar en el desarrollo de Ethereum es por analogía con la evolución biológica. Es más probable que una red que sea capaz de adaptarse a los nuevos desafíos y mantener la aptitud tenga más éxito que la resistente al cambio, aunque a medida que la red se vuelve cada vez más eficiente, escalable y segura, se requerirán menos cambios en el protocolo. + +## ¿Tengo que hacer algo cuando haya una actualización? {#do-i-have-to-do-anything-when-there-is-an-upgrade} + +Las actualizaciones tienden a no afectar a los usuarios finales, excepto al proporcionar mejores experiencias de usuario y un protocolo más seguro y tal vez más opciones sobre cómo interactuar con Ethereum. Los usos finales no están obligados a participar activamente en una actualización, ni están obligados a hacer nada para asegurar sus activos. Los operadores de nodos tendrán que actualizar sus clientes de cara a una actualización. Algunas actualizaciones pueden provocar cambios para los desarrolladores de aplicaciones. Por ejemplo, las actualizaciones de caducidad del historial pueden llevar a los desarrolladores de aplicaciones a obtener datos históricos de nuevas fuentes. + +## ¿Y qué pasa con The Verge, The Splurge, etc? {#what-about-the-verge-splurge-etc} + +[Vitalik Buterin propusó una visión para la hoja de ruta de Ethereum](https://twitter.com/VitalikButerin/status/1588669782471368704) que estaba organizada en varias categorías vinculadas por sus efectos a la arquitectura de Ethereum. Incluía: + +- The Merge: actualizaciones relacionadas con el cambio de prueba de trabajo a prueba de participación +- The Surge: actualizaciones relacionadas con la escalabilidad mediante acumulaciones y fragmentación de datos. +- The Scourge: mejoras relacionadas con la resistencia a la censura, la descentralización y los riesgos de protocolo de MEV. +- The Verge: actualizaciones relacionadas con la verificación de bloques más fácilmente. +- The Purge: actualizaciones relacionadas con la reducción de los costes computacionales de la ejecución de los nodos y la simplificación del protocolo. +- The Splurge: otras actualizaciones que no encajan bien en las categorías anteriores. + +Decidimos no usar esta terminología porque queríamos usar un modelo más simple y centrado en el usuario. Aunque utilizamos un lenguaje centrado en el usuario, la visión sigue siendo la misma que la propuesta por Vitalik. + +## ¿Qué pasa con la fragmentación? {#what-about-sharding} + +La fragmentación está dividiendo la cadena de bloques de Ethereum para que los subconjuntos de validadores solo sean responsables de una fracción del total de datos. Originalmente, esta iba a ser la forma de escalar Ethereum. Sin embargo, las acumulaciones de la capa 2 se han desarrollado mucho más rápido de lo esperado y ya han proporcionado mucha escalabilidad, y proporcionarán mucha más después de que se implemente ProtoDanksharding. Esto significa que ya no se necesitan «cadenas fragmentadas» y se han eliminado de la hoja de ruta. + +## ¿Busca actualizaciones técnicas específicas? {#looking-for-specific-technical-upgrades} + +- [Danksharding](/roadmap/danksharding): Danksharding hace que las acumulaciones de capa 2 sean mucho más baratas para los usuarios al añadir «masas» de datos a los bloques de Ethereum. +- [Retiradas de participación](/staking/withdrawals): la actualización de Shanghai/Capella posibilitó las retiradas de participación en Ethereum, lo que permitió a las personas desbloquear su ETH en participación. +- [Finalidad de una sola ranura](/roadmap/single-slot-finality): en lugar de esperar quince minutos, los bloques podrían proponerse y finalizarse en la misma ranura. Esto resulta más práctico para las aplicaciones y mucho más difícil de atacar. +- [Separación entre proponentes y constructores](/roadmap/pbs): dividir las tareas de construcción de bloques y propuestas de bloques entre validadores separados crea una forma más justa, más resistente a la censura y eficiente para que Ethereum llegue a un consenso. +- [Eleccion de líder secreto](/roadmap/secret-leader-election): se puede utilizar una criptografía inteligente para garantizar que la identidad del actual proponente de bloques no se haga pública, protegiéndolos de ciertos tipos de ataques. +- [Abstracción de cuenta](/roadmap/account-abstraction): la abstracción de cuenta es una clase de actualización que admite carteras de contratos inteligentes de forma nativa en Ethereum, en lugar de tener que usar middleware complejo. +- [Árboles de Verkle](/roadmap/verkle-trees): los árboles de Verkle son una estructura de datos que se puede utilizar para habilitar clientes sin estado en Ethereum. Estos clientes «sin estado» requerirán una pequeña cantidad de espacio de almacenamiento, pero aún así podrán verificar nuevos bloques. +- [Sin estado](/roadmap/statelessness): los clientes sin estado podrán verificar nuevos bloques sin tener que almacenar grandes cantidades de datos. Esto proporcionará todos los beneficios de ejecutar un nodo con solo una pequeña fracción de los costes actuales. diff --git a/src/content/translations/es/roadmap/merge/index.md b/src/content/translations/es/roadmap/merge/index.md index 099df5e27f9..63a8692d639 100644 --- a/src/content/translations/es/roadmap/merge/index.md +++ b/src/content/translations/es/roadmap/merge/index.md @@ -50,7 +50,7 @@ A pesar de intercambiar la prueba de trabajo y transicionar a la prueba de parti [Más información sobre la seguridad de Ethereum](/security/#eth2-token-scam) -### Operadores de nodos y desarrolladores de dApps {#node-operators-dapp-developers} +### Operadores de nodos y desarrolladores de DApps {#node-operators-dapp-developers} -La Fusión trajo consigo cambios relacionados con el consenso, que también incluyen modificaciones en aspectos como: +La Fusión vino con cambios en el consenso, que también incluye cambios relacionados con:< -- Estructura de bloques. -- Programación de ranuras y bloques. -- Cambios en el código de operaciones. -- Fuentes de aleatoriedad en cadena. -- Conceptos de _safe head_ y _finalized blocks_ para iniciar y cerrar los bloques. +
      +
    • estructura de bloque
    • +
    • secuenciación de bloques/ranuras
    • +
    • cambios en el código operativo
    • +
    • fuentes de aleatoriedad en cadena
    • +
    • concepto de cabeza segura y bloques finalizados
    • +
    + +Para obtener más información, eche un vistazo a esta publicación en el blog de Tim Beiko sobre Cómo afecta La Fusión a la capa de aplicación de Ethereum. -Para más información, consulte la publicación de Tim Beiko sobre [Cómo La Fusión influirá en la capa de aplicación de Ethereum](https://blog.ethereum.org/2021/11/29/how-the-merge-impacts-app-layer/).
    ## La Fusión y el consumo de energía {#merge-and-energy} @@ -115,26 +118,29 @@ La Fusión coloca a Ethereum en una nueva fase de actualizaciones escalables que + Hay dos tipos de nodos en Ethereum: los que pueden proponer bloques y los que no. Los nodos que proponen bloques son solo un pequeño número total de todos los nodos de Ethereum. Esta categoría incluye los nodos mineros bajo prueba de trabajo (PoW) y los nodos validadores bajo prueba de participación (PoS). Esta categoría requiere comprometer recursos económicos (como el poder de hash de la GPU en una prueba de trabajo o ETH depositado en prueba de participación) a cambio de poder proponer ocasionalmente el siguiente bloque y ganar recompensas del protocolo. Los demás nodos de la red (es decir, la mayoría) no necesitan comprometer ningún recurso económico más allá de un ordenador de consumo con 1-2 TB de almacenamiento disponible y una conexión a Internet. Estos nodos no proponen bloques, pero siguen desempeñando un papel fundamental en la seguridad de la red, al tener un registro de todos los nodos que sí proponen bloques analizando la inclusión de nuevos y verificando su validez a su llegada, de acuerdo con las reglas de consenso de la red. Si el bloque es válido, el nodo continúa propagándolo por la red. Si el bloque no es válido por cualquier motivo, el software del nodo lo ignorará como no válido y detendrá su propagación. -Cualquier persona puede ejecutar un nodo que no produzca bloques con cualquiera de los dos mecanismos de consenso (prueba de trabajo o prueba de participación); se recomienda encarecidamente a todos los usuarios que dispongan de los medios necesarios. Ejecutar un nodo es inmensamente valioso para Ethereum y aporta beneficios adicionales a cualquier persona que ejecute uno, como la mejora de la seguridad, la privacidad y la resistencia a la censura. +Cualquier persona bajo cualquier mecanismo de consenso (prueba de trabajo o prueba de participación) puede ejecutar un nodo que no produzca bloques; se recomienda encarecidamente para todos los usuarios si tienen los medios. Ejecutar un nodo es inmensamente valioso para Ethereum y aporta beneficios adicionales a cualquier persona que ejecute uno, como la mejora de la seguridad, la privacidad y la resistencia a la censura. -La posibilidad de que cualquiera pueda dirigir su propio nodo es absolutamente esencial para mantener la descentralización de la red Ethereum. +La capacidad de cualquier persona tiene de ejecutar su propio nodo es absolutamente esencial para mantener la descentralización de la red Ethereum. -[Más sobre la ejecución de su propio nodo](/run-a-node/) +Más información sobre cómo ejecutar su propio nodo. + Las tarifas de gas son producto de la demanda de la red en relación con la capacidad de la misma. La Fusión dejó obsoleto el uso del mecanismo de prueba de trabajo, permitiendo la transición a la prueba de participación para el consenso, pero no cambió de manera significativa ninguno de los parámetros que influyen de manera directa la capacidad o rendimiento de la red. -Con una [hoja de ruta centrada en las acumulaciones](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698), los esfuerzos se centran en escalar la actividad de los usuarios en la [capa 2](/layer-2/), al tiempo que se habilita la red principal de la capa 1 como una capa de liquidación descentralizada y segura, optimizada para el almacenamiento de datos de las acumulaciones, para ayudar a abaratar exponencialmente sus transacciones. La transición a la prueba de participación es un precursor fundamental para conseguirlo. [Más sobre el gas y las tasas.](/developers/docs/gas/) +Con una hoja de ruta centrada en las acumulaciones, los esfuerzos se están centrando en escalar la actividad del usuario en la capa 2, al tiempo que se le permite la red principal de la capa 1 ser una capa de liquidación descentralizada segura optimizada para el almacenamiento de datos de la acumulación y así ayudar a hacer que las transacciones sean exponencialmente más baratas. La transición a la prueba de participación es un precursor fundamental para conseguirlo. Más información sobre el gas y las tarifas. + -El ETH apostado y sus recompensas continúan retenidos sin posibilidad de ser retirados. La actualización de Shanghai contempla las retiradas. - +contentPreview="False, but staking withdrawals have since been enabled via the Shanghai/Capella upgrade."> - -Podrá resultar contradictorio para lo antes señalado en la nota que las retiradas no estén habilitadas hasta la actualización de Shanghai, no obstante los validadores tendrán acceso inmediato a las recompensas derivadas de las tarifas y MEV de las propuestas de bloques. +Inicialmente, después de La Fusión, los participantes solo podían acceder a las propinas de tarifas y MEV que se ganaban como resultado de las propuestas de bloques. Estas recompensas se acreditan a una cuenta sin participación controlada por el validador (conocida como el destinatario de la tarifa), y están disponibles de inmediato. Estas recompensas están separadas de las recompensas del protocolo para realizar las tareas de validación. -El protocolo emite ETH como recompensa a los validadores por contribuir al consenso. La capa de consenso influye en la emisión de nuevo ETH, donde el validador tiene una dirección unica que contendrá el ETH apostado y las recompensas del protocolo. Este ETH está bloqueado hasta Shanghai. +Desde la mejora de la red Shanghai/Capella, los participantes pueden designar una dirección de retirada para comenzar a recibir pagos automáticos de cualquier saldo en exceso (más de 32 ETH por recompensas del protocolo). Esta actualización también permitió a los validadores desbloquear y reclamar el total de su saldo al salir de la red. + +Más información sobre la retirada de participaciones. -El ETH de la capa de ejecución se cuenta por separado desde la capa de consenso. Cuando los usuarios ejecutan transacciones en la red principal de Ethereum, hay que pagar ETH para cubrir el gas, incluyendo una propina al validador. Este ETH ya se encuentra en la capa de ejecución, el protocolo NO lo emite de nuevo, y está disponible para el validador de forma inmediata (siempre que se proporcione al software cliente una dirección de «recepción de la comisión» adecuada). -Después de que la actualización de Shanghai habilitara las retiradas, se incentivará a todos los validadores a retirar el balance apostado que esté por encima de los 32 ETH, ya que estos fondos no proporcionan mayor rendimiento y que de por sí se encuentran bloqueados. Dependiendo de la TAE (determinada por el total de ETH depositado), pueden ser incentivados a salir de su(s) validadores para reclamar todo su saldo o potencialmente apostar aún más usando sus recompensas para ganar más rendimiento. +Desde que la actualización Shanghai/Capella activó las retiradas, los validadores tienen el incentivo de retirar su saldo excedente de participación por encima de los 32 ETH, pues estos fondos no suman al rendimiento y sólo están bloqueados. Dependiendo de la tasa efectiva anual (o APR, según sus siglas en inglés), que viene determinada por el total de ETH depositado, se puede animar a su(s) validadores a reclamar todo su saldo o potencialmente apostar aún más usando sus recompensas para ganar más rendimiento. + +Un detalle importante que cabe recalcar es que el ritmo de las salidas de un validador total las limita el protocolo, y sólo puede salir cierto número de validadores por época (cada 6,4 minutos). Este límite fluctúa dependiendo del número de validadores activos, pero llega a aproximadamente el 0,33 % del total de ETH en participación que puede salir de la red en un solo día. -Una advertencia importante es que las salidas completas de los validadores están limitadas por el protocolo, por lo que solo pueden salir seis validadores por época (cada 6,4 minutos, es decir, 1.350 al día, o solo ~43.200 ETH al día de más de 10 millones de ETH apostados). Este límite se ajusta en función del total de ETH depositado y evita un éxodo masivo de fondos. Además, evita que un atacante potencial utilice su depósito para cometer una acción penalizada con un recorte y que saque todo su saldo en el misma época antes de que el protocolo pueda aplicar la penalización. +Esto evita un éxodo masivo de fondos en participación. Además, evita que un potencial atacante con acceso a una gran parte del total de ETH en participación actúe de mala fe y que se pueda recortar/retirar todo el saldo del validador causante en la misma época, antes de que el protocolo pueda hacer cumplir la penalización mediante recorte. -La TAE es intencionadamente dinámica, lo que permite a un mercado de participantes equilibrar cuánto están dispuestos a recibir para ayudar a asegurar la red. Cuando se habiliten las retiradas, si la tasa es demasiado baja, los validadores saldrán a una tasa limitada por el protocolo. Poco a poco, esto aumentará la TAE para todos los que se queden, atrayendo a nuevos participantes o a los que regresen. +La APR también es intencionalmente dinámica, lo que permite a un mercado de participantes equilibrar cuánto están dispuestos a que se les pague para ayudar a proteger la red. Si la tasa es muy baja, los validadores se retirarán a un ritmo limitado por el protocolo. Poco a poco, esto aumentará la APR para todos los que se queden, atrayendo a nuevos participantes o a los que regresen. ## ¿Qué pasó con «Eth2»? {#eth2} @@ -203,9 +207,9 @@ En su lugar, los bloques serán propuestos desde un nodo validado que tenga ETH ### La Fusión y actualización Shanghai {#merge-and-shanghai} -Con la intención de simplificar y maximizar los esfuerzos centrados en una transición fructífera a la prueba de participación, la actualización de La Fusión no incluirá algunas características previamente anticipadas, como la posibilidad de retirar ETH apostados. Está previsto que la actualización de Shanghái se produzca después de La Fusión, lo que permitirá a los participantes retirarse. +Con la intención de simplificar y maximizar los esfuerzos centrados en una transición fructífera a la prueba de participación, la actualización de La Fusión no incluirá algunas características previamente anticipadas, como la posibilidad de retirar ETH apostados. Esta funcionalidad se habilitó de forma separada con la actualización Shanghai/Capella. -Manténgase al día sobre la [Planificación de la actualización de Shanghai en GitHub](https://github.com/ethereum/pm/issues/450), o el [Blog de investigación y desarrollo de EF](https://blog.ethereum.org/category/research-and-development/). Aquellos que quieran saber más, pueden ver la charla [Lo que ocurrirá después de La Fusión](https://youtu.be/7ggwLccuN5s?t=101), que dio Vitalik, en el evento ETHGlobal en abril de 2021. +Aquellos que quieran saber más, pueden ver la charla [Lo que ocurrirá después de La Fusión](https://youtu.be/7ggwLccuN5s?t=101), que dio Vitalik, en el evento ETHGlobal en abril de 2021. ### La fusión y la fragmentación {#merge-and-data-sharding} diff --git a/src/content/translations/es/roadmap/merge/issuance/index.md b/src/content/translations/es/roadmap/merge/issuance/index.md new file mode 100644 index 00000000000..eab06f0b79a --- /dev/null +++ b/src/content/translations/es/roadmap/merge/issuance/index.md @@ -0,0 +1,134 @@ +--- +title: Cómo La Fusión impactó en el suministro de ETH +description: Explicación de cómo La Fusión impactó en el suministro de ETH +lang: es +--- + +# Cómo La Fusión impactó en el suministro de ETH {#how-the-merge-impacts-ETH-supply} + +La Fusión ocurrida en septiembre de 2022 representó la transición de las redes de Ethereum de prueba de trabajo a prueba de participación. La forma en la que se emitieron ETH sufrió cambios en el momento de la transición. Anteriormente, se emitieron nuevos ETH desde dos fuentes: la capa de ejecución (es decir, la red principal) y la capa de consenso (es decir, la cadena de baliza). Desde La Fusión, la emisión en la capa de ejecución está ahora en cero. Veamos esto por partes. + +## Componentes de la emisión de ETH {#components-of-eth-issuance} + +Podemos analizar el suministro de ETH en dos fuerzas principales: la emisión y la quema. + +La **emisión** es el proceso de creación de ETH. La **quema** es la destrucción de los ETH existente y su consiguiente eliminación de la circulación. La tasa de emisión y quema se calcula basándose en varios parámetros, y el equilibrio entre ellos determina la tasa de inflación/deflación del ether. + + + +- Antes de la transición a la prueba de participación, los mineros emitían aproximadamente 13.000 ETH/día. +- Los participantes emiten aproximadamente 1.700 ETH/día, en función de una participación total de alrededor de 14 millones de ETH. +- La emisión exacta de participaciones fluctúa en función del total de ETH apostado. +- **Desde La Fusión, solo permanece ~1.700 ETH/día, reduciendo la emisión total de ETH a ~88%**. +- La quema: fluctúa dependiendo de la demanda de red. _Si_ se observa un precio medio de gas de al menos 16 gwei en un día determinado, esto compensa efectivamente los ~1.700 ETH que emiten los validadores y baja la inflación neta de ETH a cero o menos en ese día. + + + +## Antes de La Fusión (historia) {#pre-merge} + +### La emisión de la capa de ejecución {#el-issuance-pre-merge} + +Bajo la prueba de trabajo, los mineros solo interactuaban con la capa de ejecución y se les compensaba con un bloque de recompensas, si eran los primeros mineros en resolver el siguiente bloque. Desde la [actualización Constantinople](/history/#constantinople) en 2019, esta recompensa era de 2 ETH por bloque. Los mineros también recibían recompensas por publicaciones de bloques [ommer](/glossary/#ommer), que eran bloques válidos que no acababan en la cadena más larga/predilecta. Estas recompensas eran de un máximo 1,75 ETH por ommer, y suponían _un extra_ a la recompensa emitida desde el bloque predilecto. El proceso de minería era una actividad económica intensa, que históricamente requería altos niveles de emisión de ETH para ser sostenible. + +### La emisión de la capa de consenso {#cl-issuance-pre-merge} + +La [cadena de baliza](/history/#beacon-chain-genesis) empezó en 2020. En vez de mineros, está asegurada por validadores que usan pruebas de participación. Esta cadena era impulsada por usuarios de Ethereum que depositaban ETH unidireccionalmente en un contrato inteligente de red principal (la capa de ejecución), que la cadena de baliza escucha, acreditando al usuario una cantidad equivalente de ETH en la cadena nueva. Hasta que ocurrió La Fusión, los validadores de la cadena de baliza no estaban procesando transacciones y estaban principalmente llegando a consensos sobre el estado del grupo de validadores entre sí. + +A los validadores de la cadena de baliza se les recompensaba con ETH por confirmar el estado de la cadena y proponer bloques. Las recompensas (o penalizaciones) se calculaban y distribuían en cada época (cada 6,4 minutos) en función del rendimiento del validador. Las recompensas de los validadores son **considerablemente** inferiores a las recompensas de los mineros que se emitían anteriormente con la prueba de trabajo (2 ETH cada ~13,5 segundos), ya que el funcionamiento de un nodo de validador no supone un gasto tan elevado, ni requiere o garantiza una gran recompensa. + +### Análisis de la emisión antes de La Fusión {#pre-merge-issuance-breakdown} + +Suministro total de ETH: **~120.520.000 ETH** (en el momento de La Fusión en septiembre de 2020) + +**La emisión de la capa de ejecución:** + +- Se calculaba en 2,08 ETH por 13,3 segundos\*: **~4.930.000** ETH emitidos en un año +- Resultó en una tasa de inflación de **aproximadamente del 4,09%** (4,93 M por año / 120,5 M en total) +- \*Esto incluye los 2 ETH por bloque predilecto, además de los 0,08 ETH en promedio a lo largo del tiempo en bloques ommer. También utiliza 13,3 segundos, el objetivo de tiempo del bloque de referencia sin ninguna influencia de una [bomba de dificultad](/glossary/#difficulty-bomb). ([Ver fuente](https://bitinfocharts.com/ethereum/)) + +**La emisión de la capa de consenso:** + +- Usando 14.000.000 del total de ETH participantes, la tasa de emisión de ETH es aproximadamente de 1700 ETH/día ([Ver fuente](https://ultrasound.money/)) +- Lo que da como resultado **~620.500** ETH emitidos en un año. +- Lo que generó una tasa de inflación de **aproximadamente 0,52%** (620,5 K por año / 119,3 M en total). + + +Tasa de emisión anual total (antes de La Fusión): ~4,61% (4,09% + 0,52%)

    +~88,7% de la emisión iba a los mineros en la capa de ejecución (4,09 / 4,61 * 100)

    +~11,3% era emitida para los participantes en la capa de consenso (0,52 / 4,61 * 100) +
    + +## Después de La Fusión (Presente) {#post-merge} + +### La emisión de la capa de ejecución {#el-issuance-post-merge} + +La emisión de la capa de ejecución desde La Fusión es cero. La prueba de trabajo ya no es un medio válido de producción de bloques bajo las actualizaciones de las reglas del consenso. Toda la actividad de la capa de ejecución está agrupada en «bloques de baliza», que publicarán y certificarán validadores de prueba de participación. Las recompensas por certificar y publicar bloques de baliza se contabilizan por separado en la capa de consenso. + +### La emisión de la capa de consenso {#cl-issuance-post-merge} + +La emisión de la capa de consenso continúa hoy, como lo hacía antes de La Fusión, con pequeñas recompensas para validadores que certifican y proponen bloques. Las recompensas de validadores continúan acumulándose en los _balances del validador_ que se administran dentro de la capa de consenso. A diferencia de las cuentas corrientes (cuentas de «ejecución»), que pueden hacer transacciones en red principal, estas son cuentas de Ethereum separadas que no pueden hacer transacciones libremente con otras cuentas de Ethereum. Los fondos de estas cuentas solo pueden retirarse en una única dirección de ejecución específica. + +Desde la actualización de Shanghai/Capella ocurrida en abril de 2023, se han habilitado estas retiradas para participantes. Se incentiva la retirada de _ganancias/recompensas (con balance mayor a 32 ETH)_ de los participantes, ya que de otra manera estos fondos no contribuyen a su peso de participación (que es de máximo 32). + +Los participantes también pueden optar por salir y extraer su balance entero de validador. Para garantizar la estabilidad de Ethereum, se limita el número de validadores que pueden salir al mismo tiempo. + +Aproximadamente el 0,33 % del total de validadores puede salir cada día. Por defecto, cuatro (4) validadores pueden salir por época (cada 6,4 minutos, o 900 por día). Un validador adicional (1) puede salir por cada 65.536 (216) validadores adicionales sobre 262.144 (218). Por ejemplo, con más de 327.680 validadores, cinco (5) pueden salir por época (1.125 por día). Se permitirán seis (6) con un total de validadores activos de 393,216, y así sucesivamente. + +Cuantos más validadores salgan, más se irá reduciendo gradualmente el número máximo de validadores existentes hasta un mínimo de cuatro con la intención de evitar una desestabilización de los ETH apostados al producirse un valor alto de retirada simultánea. + +### Análisis de la inflación después de La Fusión {#post-merge-inflation-breakdown} + +- Suministro total de ETH: **~120.520.000 ETH** (en el momento de La Fusión en septiembre de 2020) +- La emisión de la capa de ejecución: **0** +- La emisión de la capa de consenso: igual a la anterior, **~0,52%** tasa emitida anualmente (con un total de 14 millones de ETH apostados) + + +Tasa de emisión anual total: ~0,52%

    +Reducción neta de la emisión anual de ETH: ~88,7% ((4,61% - 0,52%) / 4,61% * 100) +
    + +## La quema {#the-burn} + +La fuerza opuesta a la emisión de ETH es la tasa a la cual se quema ETH. Para que se ejecute una transacción en Ethereum, se debe pagar una comisión mínima (conocida como «tarifa de base»), que fluctúa constantemente (bloque-a-bloque) dependiendo de la actividad de la red. La tarifa se debe pagar en ETH y se _requiere_ para que se considere una transacción válida. La tarifa se _quema_ durante el proceso de la transacción, eliminándola de la circulación. + + +La quema de la comisión empezó con la actualización London en agosto del 2021, y no se le han implementado más cambios desde La Fusión. + + +Además de la tarifa implementada en la actualización London, los validadores también pueden incurrir en penalizaciones por estar fuera de línea, o peor aún, se les puede recortar por romper las reglas específicas que amenazan la seguridad de la red. Estas penalizaciones ocasionan una reducción de ETH del saldo de los validadores, que no recompensa directamente ninguna otra cuenta, quemándolos/eliminándolos efectivamente de circulación. + +### Cálculo del precio medio del gas en deflación {#calculating-average-gas-price-for-deflation} + +Como discutimos anteriormente, la cantidad de ETH emitida en un día determinado es dependiente del total de ETH apostado. Al cierre de la edición de este documento, roza los 1.700 ETH/día. + +Para determinar el precio medio del gas requerido para compensar completamente esta emisión en un período de 24 horas, empezaremos calculando el número total de bloques en un día, dando un tiempo de bloque de 12 segundos: + +- `(1 bloque / 12 segundos) * (60 segundos/minuto) = 5 bloques/minuto` +- `(5 bloques/minuto) * (60 minutos/hora) = 300 bloques/hora` +- `(300 bloques/hora) * (24 horas/día) = 7.200 bloques/día` + +Cada bloque apunta a `15x10^6 gas/bloque` ([más en gas](/developers/docs/gas/)). Partiendo de estos datos, podemos entender el precio medio del gas (en unidades de gwei/gas) requerido para compensar la emisión, ya que la emisión total diaria es de 1.700 ETH: + +- `7200 bloques/día * 15x10^6 gas/bloque *`**`Y gwei/gas`**`* 1 ETH/ 10^9 gwei = 1700 ETH/día` + +Partiendo de que `Y`: + +- `Y = (1.700(10^9))/(7.200 * 15(10^6)) = (17x10^3)/(72 * 15) = 16 gwei` (redondeando a solo dos dígitos significativos) + +Otra forma de organizar este último paso sería reemplazando `1.700` por una variable `X` que representa la emisión diaria de ETH, y simplifica el resto a: + +- `Y = (X(10^3)/(7200 * 15)) = X/108` + +Podemos simplificar y escribir esto como la función de `X`: + +- `f(X) = X/108` donde `X` es la emisión diaria de ETH, y `f(X)` representa el precio gwei/gas requerido para compensar toda la emisión nueva de ETH. + +Así que, por ejemplo, si `X` (emisión diaria de ETH) aumenta a 1.800 en función del total de ETH apostado, `f(X)` (gwei requerido para compensar toda la emisión) entonces sería `17 gwei` (usando 2 dígitos significativos) + +## Más información {#further-reading} + +- [La Fusión](/roadmap/merge/) +- [Ultrasound.money](https://ultrasound.money/): _Tableros disponibles para visualizar la emisión y quema de ETH en tiempo real_ +- [Registrando la emisión de Ethereum](https://www.attestant.io/posts/charting-ethereum-issuance/): _Jim McDonald 2020_ diff --git a/src/content/translations/es/roadmap/pbs/index.md b/src/content/translations/es/roadmap/pbs/index.md new file mode 100644 index 00000000000..139ab09b503 --- /dev/null +++ b/src/content/translations/es/roadmap/pbs/index.md @@ -0,0 +1,51 @@ +--- +title: Separación del creador de propuestas +description: Aprenda cómo y por qué los validadores de Ethereum separarán sus responsabilidades de construcción y transmisión de bloques. +lang: es +--- + +# Separación del creador de propuestas {#proposer-builder-separation} + +Los validadores de Ethereum del presente crean _y_ transmiten bloques. Agrupan transacciones de las que han oído hablar en una red de intercambio de información y las agrupan en un bloque que se envía a los pares en la red de Ethereum. **Separación del proponente-constructor (PBS)** dividie estas tareas entre múltiples validadores. Los constructores de bloques son responsables de la creación de bloques y de ofrecerlos al proponente de bloques de cada espacio. El proponente de bloque no puede ver su contenido, simplemente elige el más rentable y paga una tasa al constructor del bloque antes de enviarlo a sus pares. + +Es una actualización importante por varias razones. En primer lugar, porque crea oportunidades para prevenir que una transacción sea censurada en el nivel de protocolo. En segundo lugar, evita que validadores aficionados sean superados por figuras institucionales que pueden optimizar la rentabilidad de sus construcciones de bloques. Y en tercer lugar, ayuda a Ethereum a escalar, ya que habilita las actualizaciones de Danksharding. + +## PSB y resistencia a la censura {#pbs-and-censorship-resistance} + +Separar a proponentes y constructores de bloques dificulta que los constructores de bloques puedan censurar las transacciones. Esto se debe a que se puede añadir un criterio de inclusión relativamente complejo, para asegurarse de que no haya censura antes de proponer el bloque. Ya que el proponente de bloque es una entidad separada del constructor de bloque, este puede adoptar el papel de protector contra censuras de los constructores de bloques. + +Por ejemplo, pueden introducirse unas listas de inclusión para que cuando los validadores sepan sobre las transacciones, pero no las vean incluidas en los bloques, puedan imponerlas como condiciones indispensables en el siguiente bloque. La lista de inclusión es generada a partir de la zona de espera local de proponedores de bloques (la lista de transacciones de las que es consciente) y enviada a sus pares justo antes de que se proponga un bloque. Si falta alguna de las transacciones de la lista de inclusión, el proponente puede rechazar el bloque y añadir la transacción faltante antes de proponerla, o proponerla y que la rechacen otros validadores cuando la reciban. También existe una versión potencialmente más eficiente de esta idea que verifica que los constructores deben utilizar por completo el espacio del bloque disponible y si no lo hacen, las transacciones se añaden desde la lista de inclusión del proponente. Esta es un área de investigación aún activa y la configuración óptima para las listas de inclusión todavía no se ha determinado. + +[Las zonas de espera encriptadas](https://www.youtube.com/watch?v=fHDjgFcha0M&list=PLpktWkixc1gUqkyc1-iE6TT0RWQTBJELe&index=3) también imposibilitarán a constructores y proponentes saber qué transacciones se están incluyendo en un bloque hasta después de que el bloque se haya transmitido. + + + +Las organizaciones poderosas pueden presionar a los validadores para censurar transacciones para o de ciertas direcciones. Los validadores ceden a esta presión al detectar direcciones de la lista negra en sus grupos de transacciones y omitirlas de los bloques que proponen. Después de PBS, esto ya no será posible, porque los proponentes de bloques no sabrán qué transacciones están transmitiendo en sus bloques. Cumplir las reglas de censura ―por ejemplo, con la elaboración de un proyecto de ley en esa región― puede que sea importante para ciertos individuos o aplicaciones. En estos casos, se cumple a nivel de la solicitud, mientras que el protocolo se mantiene sin permisos ni censura. + + + +## PBS y MEV {#pbs-and-mev} + +**Valor de extracción máximo (MEV)** se refiere a los validadores que maximizan su rentabilidad al ordenar transacciones favorables. Ejemplos comunes incluyen el intercambio arbitrario en bolsas descentralizadas (p. ej., favorecerse por anticipado de una gran venta o compra) o identificar oportunidades para liquidar posiciones DeFi. Maximizar MEV requiere sofisticados conocimientos técnicos y software personalizado adjuntado a validadores normales, aumentando las probabilidades de que los operadores institucionales superen a validadores individuales y aficionados en extracciones MEV. Esto significa que la rentabilidad de las participaciones probablemente sea más alta con operadores centralizados, creando una fuerza centralizadora que disuade las participaciones domésticas. + +PBS soluciona este problema, ya que reconfigura la economía de MEV. En lugar de que el proponente de bloques haga su propia búsqueda de MEV, simplemente tomará un bloque de todos los que ofrecen los constructores de bloques. Puede que los constructores de bloques hayan realizado una extracción sofisticada de MEV, pero la recompensa va al proponente del bloque. Esto significa que incluso cuando un grupo pequeño de constructores de bloques especializados domina la extracción de MEV, la recompensa irá a cualquier validador en la red, incluyendo participaciones individuales domésticas. + + + +Los individuos pueden recibir incentivos a participar en agrupaciones en vez de hacerlo en solitario, debido a las sugerentes recompensas ofrecidas por las estrategias sofisticadas de MEV. Separar la construcción y la propuesta de bloques, significa que los MEV extraídos serán distribuidos a más validadores en lugar de que sean centralizados con los buscadores más efectivos de MEV. Al mismo tiempo, permitir la existencia de constructores de bloques especializados alivia el peso de la construcción de bloques de los individuos y evita que estos roben MEV, al tiempo que maximiza el número de validadores independientes e individuales que pueden verificar la fiabilidad de los bloques. El concepto importante es «asimetría de probador-verificador» que se refiere a la idea de que la producción centralizada de bloques está bien, siempre y cuando haya una red descentralizada, masiva y robusta de validadores que puedan verificar que los bloques son honestos. La descentralización es un medio, no un objetivo final; lo que queremos son bloques honestos. + + +## PBS y Danksarding {#pbs-and-danksharding} + +Danksharding es la manera en que Ethereum alcanzará >100.000 transacciones por segundo y minimizará las comisiones por usuarios acumulados. Se basa en PBS porque agrega a la carga de trabajo de los constructores de bloques, quienes tendrán que calcular pruebas de datos acumulados de hasta 64 MB en menos de 1 segundo. Esto probablemente requiera constructores especializados que puedan destinar una cantidad considerable de hardware a la tarea. De cualquier forma, en la situación actual, la construcción de bloques podría centralizarse cada vez más alrededor de operadores más sofisticados y poderosos por la extracción de MEV. La separación de proponente-constructor es la forma en que puede englobar esta realidad y evitar que ejerza una fuerza centralizadora sobre la validación de bloques (la parte importante) o la distribución de recompensas apostadas. Un gran beneficio secundario es que los constructores de bloques especializados también están dispuestos y son capaces de registrar las pruebas de datos necesarias para Danksharding. + +## Progreso actual {#current-progress} + +PBS está en una fase avanzada de investigación, pero aún hay algunas cuestiones importantes de diseños por resolver antes de presentarlas como prototipo a los clientes de Ethereum. Todavía no hay una especificación terminada. Esto significa que PBS está a un año de distancia o más. Revise la última actualización en el [estado de investigación](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance). + +## Más información {#further-reading} + +- [Estado de la investigación: resistencia a la censura bajo PBS](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance) +- [Diseños de mercado con tarifas de PBS interesantes](https://ethresear.ch/t/proposer-block-builder-separation-friendly-fee-market-designs/9725) +- [PSB y resistencia a la censura](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Secondary-auctions) +- [Listas de inclusión](https://notes.ethereum.org/@fradamt/H1ZqdtrBF) diff --git a/src/content/translations/es/roadmap/scaling/index.md b/src/content/translations/es/roadmap/scaling/index.md new file mode 100644 index 00000000000..dd9f84cccab --- /dev/null +++ b/src/content/translations/es/roadmap/scaling/index.md @@ -0,0 +1,47 @@ +--- +title: Escalar en Ethereum +description: Las acumulaciones agrupan transacciones en lotes y lo hacen fuera de la cadena, reduciendo costes para el usuario. Sin embargo, la forma en que las acumulaciones gestionan los datos es muy cara en estos momentos, limitando con ello la posibilidad de tener transacciones baratas. Proto-anksharing se encarga de solucionarlo. +lang: es +image: ../../../../../assets/roadmap/roadmap-transactions.png +alt: "Hoja de ruta de Ethereum" +template: roadmap +--- + +Ethereum escala utilizando las [capas 2](/layer-2/#rollups)(también conocidas como acumulaciones o «rollups»), que agrupan transacciones y envían el resultado a Ethereum. Aunque las acumulaciones son hasta ocho veces más baratas que la red principal de Ethereum, es posible optimizarlas aún más para reducir costes para los usuarios finales. Las acumulaciones dependen de algunos componentes centralizados que los desarrolladores podrán eliminar en la medida en que dichas acumulaciones maduren. + + +
      +
    • Actualmente las acumulaciones son ~3-8x más baratas que la capa 1 de Ethereum
    • +
    • Las acumulaciones ZK pronto reducirán un ~40-100 las tarifas.
    • +
    • Los próximos cambios en Ethereum traerán un incremento de ~100-1.000 en escalabilidad.
    • +
    • Los usuarios deberían beneficiarse con transacciones que cuesten menos de 0,001 USD.
    • +
    +
    + +## Abaratar los datos {#making-data-cheaper} + +Las acumulaciones agrupan un gran número de transacciones, las ejecutan y envían los resultados a Ethereum. Esto genera una gran cantidad de datos que necesitan estar disponibles para todos, de forma que cualquiera pueda ejecutar las transacciones por sí mismo y verificar que el operador de la acumulación ha actuado con honestidad. Si alguien encuentra una discrepancia, puede denunciarla. + +### ProtoDanksharding {#proto-danksharding} + +Los datos de las acumulaciones se almacenan en Ethereum de forma permanente, lo que tiene un coste elevado. Más del 90 % del coste de la transacción que los usuarios pagan en las acumulaciones se debe a este almacenamiento de datos. Para reducir los costes de las transacciones, podemos trasladar los datos a un nuevo almacenamiento temporal masivo. Las masas de datos son más baratas, ya que no son permanentes; se eliminan de Ethereum una vez que ya no se necesitan. Almacenar datos de las acumulaciones a largo plazo se convierte en una responsabilidad de las personas que los necesitan, como los operadores de acumulación, los intercambios, los servicios de indexación, etc. Añadir transacciones masivas a Ethereum es parte de una actualización conocida como «ProtoDanksharding». Se espera que esté lista relativamente pronto, tal vez a finales de 2023. + +Después de que las transacciones masivas se hayan convertido en parte del protocolo Ethereum a través de ProtoDanksharding, se podrán añadir muchas masas a los bloques de Ethereum. Esto traerá otro aumento sustancial (>x 100) del rendimiento de Ethereum y una reducción en los costes de transacción. + +### Danksharding {#danksharding} + +La segunda fase de expansión de los datos guardados masivamente es complicada, porque requiere nuevos métodos para comprobar si los datos de las acumulaciones están disponibles en la red y depende de que se puedan separar las responsabilidades de los validadores en la construcción y propuesta de bloques. También requiere una forma de demostrar criptográficamente que los validadores han verificado pequeños subconjuntos de los datos masivos. + +Este segundo paso es conocido como [«Danksharding»](/roadmap/danksharding/). Es probable que aún tarde varios años en implementarse en su totalidad. Danksharding se basa en otros desarrollos como [separar la construcción y la propuesta de bloques](/roadmap/pbs) y nuevos diseños de red que permitan a la red confirmar eficientemente que los datos están disponibles, muestreando aleatoriamente unos cuantos kilobytes cada vez, lo que se denomina [muestreo de disponibilidad de datos (DAS)](/developers/docs/data-availability). + +Más información sobre la fragmentación. + +## Descentralizar las acumulaciones {#decentralizing-rollups} + +Las [acumulaciones](/layer-2) ya están escalando en Ethereum. Un ecosistema rico en [proyectos sobre acumulaciones](https://l2beat.com/scaling/tvl) permite que los usuarios hagan una transacción rápida y económica, con un rango de garantías de seguridad. Sin embargo, las acumulaciones se han implementado inicialmente utilizando secuenciadores centralizados (ordenadores que realizan todo el procesamiento de transacciones y la agregación antes de enviarlas a Ethereum). Esto los hace vulnerables a la censura, porque los operadores de los secuenciadores pueden ser sancionados, sobornados o verse expuestos a riesgos. Al mismo tiempo, [las acumulaciones se diferencian](https://l2beat.com) en la forma en que validan los datos entrantes. La mejor forma es que los «probadores» presenten pruebas de fraude o pruebas de validez, pero no todas las acumulaciones están a ese nivel. Incluso aquellas acumulaciones que utilizan pruebas de validez/fraude utilizan un pequeño grupo de probadores conocidos. Por lo tanto, el siguiente paso crítico en la escalabilidad de Ethereum es distribuir la responsabilidad de ejecutar secuenciadores y probadores entre más personas. + +Más información sobre las acumulaciones. + +## Progreso actual {#current-progress} + +Es probable que ProtoDanksharding sea uno de los primeros componentes de la hoja de ruta en implementarse. Los pasos en computación descentralizada necesarios para configurarlo ya están en marcha y varios clientes han implementado prototipos para manejar datos en masa. Es probable que el Danksharding completo aún no vea la luz en varios años, ya que depende de que se completen varios otros elementos de la hoja de ruta en primer lugar. Descentralizar la infraestructura de acumulaciones seguramente será un proceso gradual: hay muchas acumulaciones distintas que están construyendo sistemas ligeramente diferentes y se descentralizarán totalmente a diferentes velocidades. diff --git a/src/content/translations/es/roadmap/secret-leader-election/index.md b/src/content/translations/es/roadmap/secret-leader-election/index.md new file mode 100644 index 00000000000..f0862306ff3 --- /dev/null +++ b/src/content/translations/es/roadmap/secret-leader-election/index.md @@ -0,0 +1,44 @@ +--- +title: Elección secreta del líder +description: Explicación de cómo la elección secreta de líder puede ayudar a proteger a los validadores contra ataques. +lang: es +summaryPoints: + - La dirección IP de los proponentes del bloque se puede conocer de antemano, lo que los hace vulnerables a ataques. + - La elección secreta del líder oculta la identidad de los validadores para que no se puedan conocer de antemano. + - Una extensión de esta idea es hacer que la selección del validador sea aleatoria en cada ranura. +--- + +# Elección secreta del líder {#single-secret-leader-election} + +En el mecanismo de consenso basado en las [pruebas de participación](/developers/docs/consensus-mechanisms/pos) de hoy en día, la lista de los próximos proponentes de bloque es pública y es posible ubicar sus direcciones IP. Esto significa que los atacantes podrían identificar qué validadores deben proponer un bloque y perjudicarles con un ataque de negación de servicio (DOS) que les imposibilite proponer su bloque a tiempo. + +Esto podría crear oportunidades para que un atacante se beneficie. Por ejemplo, un proponente de bloque seleccionado para una ranura `n+1` podría negar servicio (DOS) al proponente en la ranura `n` para que pierda la oportunidad de proponer un bloque. Esto permitiría al proponente de bloque atacante extraer el MEV de ambas ranuras; o reunir todas las transacciones que se deberían dividido en dos bloques y en lugar de eso incluirlas todas en una, ahorrándose las tarifas asociadas. Es probable que esto afecte más a los validadores domésticos que a los validadores institucionales sofisticados que pueden usar métodos más avanzados para protegerse de ataques DOS y podría entonces ser una fuerza centralizadora. + +Hay varias soluciones para este problema. Una de ellas es la [tecnología de validador distribuida](https://github.com/ethereum/distributed-validator-specs) que tiene como objetivo difundir las múltiples tareas relacionadas con la ejecución de un validador entre varias máquinas, con redundancia, para que sea mucho más difícil que un atacante impida que se proponga un bloque en un espacio determinado. De cualquier forma, la solución más robusta es la **Elección de Líder Singular Secreto (o SSLE, por sus siglas en inglés)**. + +## Elección de líder singular secreto {#secret-leader-election} + +En SSLE, la criptografía inteligente se usa para asegurar que solo el validador seleccionado sepa que ha sido seleccionado. Esto funciona al hacer que cada validador envíe un compromiso a un secreto que todos comparten. Los compromisos se mezclan y reconfiguran para que nadie pueda asociar los compromisos a los validadores, aunque cada validador sabe qué compromiso le pertenece. Después, se elige un compromiso aleatoriamente. Si un validador detecta que se ha elegido su compromiso, saben que es su turno de proponer un bloque. + +La implementación principal de esta idea se conoce como [La Batidora](https://ethresear.ch/t/whisk-a-practical-shuffle-based-ssle-protocol-for-ethereum/11763). Que trabaja de la siguiente forma: + +1. Los validadores se comprometen a un secreto compartido. El esquema de compromiso está diseñado para que pueda enlazarse a la identidad de un validador, aunque también es aleatorio para que ningún tercero pueda hacer una ingeniería inversa de los enlaces y asociar un compromiso específico con un validador específico. +2. Al principio de una época, se elige un conjunto aleatorio de validadores para enviar muestras de compromisos de 16.384 validadores, usando RANDAO. +3. Para las siguientes 8.182 ranuras (1 día), los proponentes de bloques mezclan y aleatorizan un subconjunto de los compromisos usando su propia entropía privada. +4. Una vez mezclados, se utiliza RANDAO para crear una lista ordenada de los compromisos. Esta lista se asocia a las ranuras de Ethereum. +5. Los validadores ven que su compromiso está asociado a una ranura específica, y cuando las ranuras llegan pueden proponer un bloque. +6. Repita estos pasos para que la asignación de compromisos a ranuras esté siempre por delante de la ranura actual. + +Esto le impide a los atacantes saber de antemano qué validador específico propondrá el siguiente bloque, lo que inhabilita los ataques DOS. + +## Elección de Líder no Singular Secreto (SnSLE) {#secret-non-single-leader-election} + +También existe una propuesta separada que tiene como objetivo crear un escenario donde cada validador tiene una oportunidad aleatoria de proponer un bloque en cada ranura, de manera parecida a cómo se decidió la propuesta de bloque en la prueba de trabajo, conocida como **Elección de Líder no Singular Secreto (SnSLE)**. Una forma sencilla de hacer esto es usando la función RANDAO para seleccionar validadores de manera aleatoria en el protocolo del día. La idea con RANDAO es que se genere un número suficientemente aleatorio al mezclar pedazos enviados por múltiples validadores independientes. En SnSLE, estos pedazos pueden usarse para elegir el siguiente proponente de bloque, por ejemplo al elegir el pedazo de menor valor. El margen de pedazos válidos puede limitarse para ajustar la probabilidad de selección de validadores independientes en cada ranura. Al confirmar que el pedazo debe ser inferior a `2^256 * 5 / N` donde `N` = número de validadores activos, la posibilidad de que se seleccione a cualquier validador en cada ranura, sería de `5/N`. En este ejemplo, habría solo un 99,3 % de probabilidad de que al menos un proponente generara un pedazo válido en cada ranura. + +## Progreso actual {#current-progress} + +Tanto SSLE como SnSLE están en fase de investigación. Todavía no hay especificación lista para ninguna de las dos. SSLE y SnSLE son propuestas que compiten entre sí, ya que no pueden implementarse juntas. Necesitan una investigación y un desarrollo más en profundidad antes de lanzarse, así como la creación de prototipos e implementación en las redes de prueba pública. + +## Más información {#further-reading} + +- [SnSLE](https://ethresear.ch/t/secret-non-single-leader-election/11789) diff --git a/src/content/translations/es/roadmap/security/index.md b/src/content/translations/es/roadmap/security/index.md new file mode 100644 index 00000000000..3752a65445e --- /dev/null +++ b/src/content/translations/es/roadmap/security/index.md @@ -0,0 +1,48 @@ +--- +title: Un Ethereum más seguro +description: Ethereum es la plataforma de contratos inteligentes más segura y descentralizada que existe. Sin embargo, todavía se pueden hacer mejoras para que Ethereum siga resistiendo a cualquier tipo de ataque en el futuro. +lang: es +image: ../../../../../assets/roadmap/roadmap-security.png +alt: "Hoja de ruta de Ethereum" +template: roadmap +--- + +Ethereum ya es una plataforma de contratos inteligentes muy segura y descentralizada. Sin embargo, todavía se pueden hacer mejoras para que Ethereum siga resistiendo a cualquier tipo de ataque en el futuro. Esto incluye cambios sutiles en la forma en que los clientes de Ethereum gestionan los bloques en conflicto, así como aumentar la velocidad a la que la red considera que los bloques están ["finalizados"](/developers/docs/consensus-mechanisms/pos/#finality) (lo que significa que no pueden cambiarse sin pérdidas económicas extremas para un atacante). + +También hay mejoras que dificultan mucho más la censura de transacciones al hacer que los proponentes de bloques desconozcan el contenido real de sus bloques, y nuevos métodos para identificar cuándo un cliente está censurando. Juntas, estas mejoras actualizarán el protocolo de la prueba de participación, de manera que los usuarios, desde individuos hasta corporaciones, tengan confianza instantánea en sus aplicaciones, datos y activos en Ethereum. + +## Retiradas de participaciones {#staking-withdrawals} + +La actualización de prueba de trabajo a prueba de participación comenzó con los pioneros de Ethereum apostando su ETH en un contrato de depósito. Ese ETH se usó para proteger la red. Sin embargo, ese ETH no se puede desbloquear y devolver a los usuarios. Permitir la retirada de ETH es una parte crítica de la mejora de la prueba de participación. Además de que las retiradas son un componente crítico de un protocolo de prueba de participación completamente funcional, permitir las retiradas también es beneficioso para la seguridad de Ethereum, ya que permite a los participantes usar sus recompensas de ETH para otros fines que no sea la participación. Esto significa que los usuarios que desean liquidez no tienen que depender de los derivados de participación líquida (LSD) que pueden ser una fuerza centralizadora en Ethereum. Está previsto que se complete esta actualización el 12 de abril de 2023. + +Descubra más cosas sobre las retiradas. + +## Defenderse contra ataques {#defending-against-attacks} + +Incluso después de las retiradas, hay mejoras que se pueden hacer en el protocolo [de prueba de participación](/developers/docs/consensus-mechanisms/pos/) de Ethereum. Uno se lo conoce como [view-merge](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739): un algoritmo de elección de bifurcación más seguro que dificulta ciertos ataques sofisticados. + +Reducir el tiempo que Ethereum tarda en finalizar bloques podría proveer una mejor experiencia de usuario y evitar ataques sofisticados «reorg», en los que los atacantes intentan reordenar bloques muy recientes para obtener beneficios o para censurar ciertas transacciones. [**Finalidad de ranura única (SSF)**](/roadmap/single-slot-finality/) es una forma de minimizar el retraso de finalización. En la actualidad hay 15 minutos de bloques en los que un atacante puede, en teoría, convencer a los otros validadores para reconfigurar. Con SSF, hay 0. Los usuarios, desde individuos hasta aplicaciones e intercambios, se benefician de una rápida garantía de que sus transacciones no se revertirán y de que la red se beneficia al cerrar toda una categoría de ataques. + +Más información sobre la finalidad de ranura única. + +## Defenderse contra la censura {#defending-against-censorship} + +La descentralización evita que los individuos o pequeños grupos de validadores se vuelvan demasiado influyentes. Las nuevas tecnologías de participación pueden ayudar a garantizar que los validadores de Ethereum se mantengan lo más descentralizados posible, al tiempo que los defienden contra fallos de hardware, software y red. Esto incluye el software que comparte las responsabilidades del validador a través de múltiples nodos. Esto se conoce como **tecnología de validador distribuido (DVT)**. Las participaciones agrupadas tienen incentivos a usar DVT, porque permite que múltiples ordenadores participen colectivamente en la validación, añadiendo redundancia y tolerancia a fallos. También divide las claves del validador en varios sistemas, en lugar de tener operadores individuales que ejecuten múltiples validadores. Esto hace que a los operadores deshonestos les resulte más difícil coordinar los ataques a Ethereum. En conjunto, la idea es obtener beneficios de seguridad ejecutando validadores como _comunidades_ en lugar de como individuos. + +Lea acerca de la tecnología de validación distribuida + +La implementación de la **separación proponente-constructor (PBS)** mejorará drásticamente la defensa integrada de Ethereum contra la censura. PBS permite a un validador crear un bloque y a otro transmitirlo a través de la red Ethereum. Esto asegura que las ganancias de los algoritmos de maximización de ganancias profesionales de construcción de bloques se compartan de manera más justa en toda la red, **evitando que la participación se concentre** con los participantes institucionales de mejor rendimiento a lo largo del tiempo. El proponente de bloques puede seleccionar el bloque más rentable que le ofrece un mercado de constructores de bloques. Para censurar, un proponente de bloques a menudo tendría que elegir un bloque menos rentable, que sería **económicamente irracional y también obvio para el resto de los validadores** en la red. + +Hay posibles complementos para PBS, como transacciones cifradas y listas de inclusión, que podrían mejorar aún más la resistencia a la censura de Ethereum. Esto hace que el constructor de bloques y el proponente no vean las transacciones reales incluidas en sus bloques. + +Más información acerca de la separación entre proponentes y constructores. + +## Proteger a los validadores {#protecting-validators} + +Es posible que un atacante sofisticado pueda identificar a los próximos validadores y enviarles correo basura para evitar que propongan bloques; esto se conoce como un ataque de **denegación de servicio (DoS)**. La implementación de [**elección de líder secreto (SLE)**](/roadmap/secret-leader-election) protegerá contra este tipo de ataque al evitar que los proponentes de bloques sean conocidos de antemano. Esto funciona mezclando continuamente un conjunto de compromisos criptográficos que representan a los proponentes de bloques candidatos y utilizando su orden para determinar qué validador se selecciona, de tal manera que solo los propios validadores conozcan su pedido por adelantado. + +Más información acerca de la elección del líder secreto. + +## Progreso actual {#current-progress} + +Las actualizaciones de seguridad en la hoja de ruta se encuentran en etapas avanzadas de investigación, aunque no se espera que se implementen aún próximamente. Los siguientes pasos para view-merge, PBS, SSF y SLE consisten en finalizar una especificación y comenzar a construir prototipos. diff --git a/src/content/translations/es/roadmap/single-slot-finality/index.md b/src/content/translations/es/roadmap/single-slot-finality/index.md new file mode 100644 index 00000000000..2e423142f83 --- /dev/null +++ b/src/content/translations/es/roadmap/single-slot-finality/index.md @@ -0,0 +1,66 @@ +--- +title: Finalidad de la ranura única +description: Explicación de la finalidad de la ranura única +lang: es +--- + +# Finalidad de la ranura única {#single-slot-finality} + +Un bloque de Ethereum tarda aproximadamente 15 minutos en finalizar. Sin embargo, podemos hacer que un mecanismo de consenso de bloques validados de Ethereum sea más eficiente y disminuya dramáticamente el tiempo que tarda en finalizarse. En lugar de esperar 15 minutos, la misma ranura podría proponer y finalizar los bloques. Este concepto se conoce como **finalidad de la ranura única (SSF)**. + +## ¿Qué es la finalidad? {#what-is-finality} + +En la prueba de participación de Ethereum basada en el mecanismo de consenso, la «finalidad» se refiere a la garantía de que un bloque no puede alterarse o eliminarse de la cadena de bloques sin quemar por lo menos un 33 % del total apostado de ETH. Esta es la seguridad de la «criptoeconómica». La confianza viene de que el coste asociado con el cambio de orden o del contenido de la cadena es extremadamente alto, desincentivando a que cualquier entidad económica racional de hacerlo. + +## ¿Por qué es interesante que tarde menos en finalizar? {#why-aim-for-quicker-finality} + +El tiempo actual que tarda en finalizar es demasiado largo. La mayoría de los usuarios no quieren esperar 15 minutos para finalizar una transacción y esto es un inconveniente para aplicaciones e intercambios que deseen una alta velocidad de transacción y que tienen que esperar mucho tiempo para asegurarse de que sus transacciones sean permanentes. Tener un retraso entre bloques propuestos y su finalidad crea oportunidades de reorganizaciones a corto plazo que atacantes podrían usar para censurar ciertos bloques o extraer MEV. El mecanismo que se encarga de actualizar los bloques por etapas también es bastante complejo y se han hecho varios parches para prevenir riesgos de seguridad, lo que lo convierte en una de las partes de la base de código de Ethereum donde es más probable que surjan errores. Estos problemas podrían ser todos eliminados reduciendo el tiempo de finalidad a una ranura única. + +## La compensación en/tiempo/gastos/general de la descentralización {#the-decentralization-time-overhead-tradeoff} + +La garantía de finalidad no es una propiedad inmediata de un nuevo bloque; la finalidad de un nuevo bloque lleva su tiempo. La razón reside en que los validadores que representen al menos 2/3 del ETH total apostado en la red tengan la oportunidad de votar (o «certificar») el bloque para que se considere finalizado. Cada nodo validador en la red tiene que procesar las certificaciones de los otros nodos para saber si el bloque ha alcanzado o no el mínimo de dos terceras partes. + +Cuanto menos tarde en finalizar, más potencia de computación se requiere de cada nodo, porque el procesamiento de certificación ha de hacerse más rápido. Asimismo, cuantos más nodos de validación existan en la red, más certificaciones tiene que procesar cada bloque, lo que suma más poder de procesamiento requerido de los validadores. Y cuanto más poder de procesamiento se requiera, menos personas pueden participar en la red, ya que el hardware que se necesita para ejecutar cada nodo validador será más costoso. Aumentar el tiempo entre bloques disminuye el poder computacional requerido en cada nodo, pero también aumenta el tiempo para la finalidad, porque las certificaciones se procesan más lentamente. + +Por lo tanto, hay una compensación entre el coste (poder de computación), la descentralización (el número de nodos que pueden participar en la validación en la cadena) y el tiempo para finalizar. El sistema ideal busca optimizar elpoder de computación mínimo, la descentralización máxima y el tiempo de finalización mínimo. + +El mecanismo de consenso actual de Ethereum equilibra estos tres parámetros por medio de: + +- **Ajustar el mínimo de participación a 32 ETH**. Esto fija un máximo de certificaciones que cada nodo puede procesar y, por lo tanto, también fija un máximo de los requisitos computacionales (costes) de cada nodo. +- **Ajusta el tiempo de finalidad a ~ 15 minutos**. Esto da suficiente tiempo para que los validadores puedan ejecutarlo en ordenadores domésticos con seguridad y aún así procesar las certificaciones de cada bloque. + +Con el diseño del mecanismo actual, para acortar la finalidad, es necesario que se reduzca el número de validadores en la red o se incrementen los requisitos de hardware en cada nodo. Sin embargo, hay mejoras que pueden hacerse a la forma en que las certificaciones se procesan que pueden permitir contar más certificaciones sin aumentar coste de cada nodo. El procesamiento más eficiente puede permitir que se alcance la finalidad en una sola ranura, en lugar de a través de dos épocas. + +## Rutas hacia la SSF {#routes-to-ssf} + + + +El mecanismo de consenso actual combina certificaciones de multiples validadores, conocidos como comités, para reducir el número de mensajes que cada validador tiene que procesar para validar un bloque. Cada validador tiene una oportunidad para certificar en cada época (32 ranuras) pero en cada ranura, solo un subgrupo de validadores, conocido como comité de certificación. Ellos lo hacen al dividirse en subredes en las que se seleccionan a unos cuantos validadores para ser «agregadores». Cada agregador combina todas las firmas de parte de los validadores en su subred en una sola firma. Los agregadores que incluyen los números más grandes de contribuidores individuales pasan su firma combinada al bloque del proponente, quien la incluye en el bloque, junto con la firma combinada de otros comités. + +Este proceso proporciona suficiente capacidad para que cada validador vote en cada época, ya que 32 ranuras _ 64 comités _ 256 validadores por comité = 524.288 validadores por época`. Al cierra de la edición de este documento (febrero de 2023) hay ~513.000 validadores activos. + +En este esquema, cada validador solo puede votar en un bloque para distribuir sus certificaciones a través de la época completa. Sin embargo, hay formas potenciales de mejorar el mecanismo para que _cada validador tenga la oportunidad de certificar en cada ranura_. + + +Desde que se designó el mecanismo de consenso de Ethereum, el esquema de agregación de firmas (BLS, por sus siglas en inglés) ha resultado ser mucho más escalable de lo que se pensó inicialmente, mientras que también ha mejorado la posibilidad de que los clientes procesen y verifiquen firmas. Resulta que procesar certificaciones de un gran número de validadores puede, de hecho, hacerse en una única ranura. Por ejemplo, con un millón de validadores, votando cada uno dos veces en cada ranura y 16 segundos para cada ranura, se requerirán nodos para verificar firmas a un ritmo mínimo de 125.000 certificaciones por segundo para procesar todo el millón de certificaciones en la ranura. En realidad, a un ordenador normal le lleva cerca de 500 nanosegundos hacer la verificación de una firma, lo que significa que se pueden hacer 125.000 en ~62,5 ms - muy por debajo del umbral de un segundo. + +La creación de supercomités podría aumentar aún más la eficacia p. ej., 125.000 validadores seleccionados aleatoriamente por ranura. Solo estos validadores pueden votar en un bloque y, por lo tanto, solo estos subconjuntos de validadores deciden si un bloque se finaliza. Que esto sea una buena idea o no depende, en realidad, de lo caro que la comunidad prefiera que sea un ataque exitoso a Ethereum. Porque en lugar de requerir 2/3 del total de ether apostado, un atacante puede finalizar un bloque deshonesto con 2/3 del ether apostado*en ese supercomité*. Esto todavía es un área activa de la investigación, aunque parece que para un conjunto de validadores lo suficientemente grande como para requerir un supercomité en primer lugar, el coste de atacar uno de esos supercomités sería extremadamente alto (p. ej., el coste de un ataque expresado en ETH sería de `2/3 * 125.000 * 32 = ~2,6 millones de ETH`). El coste del ataque puede ajustarse aumentando el tamaño del conjunto de validadores (p. ej.,. ajusta el tamaño del validador para que el coste del ataque sea igual a 1 millón de ether, 4 millones de ether, 10 millones de ether, etc). Los [sondeos preliminares](https://youtu.be/ojBgyFl6-v4?t=755) de la comunidad parecen sugerir que 1-2 millones de ether es un coste aceptable de ataque, que implica ~65.536 - 97.152 validadores por supercomité. + +Sin embargo, la verificación no es obstáculo verdadero, la agregación de las firmas es el verdadero reto de nodos validadores. Escalar la agregación de firmas probablemente requerirá aumentar el número de validadores en cada subred, incrementar la cantidad de subredes o agregar una capa adicional de agregación (por ejemplo, implementar un comité de comités). Parte de la solución podría ser permitir a agregadores especializados, de la misma manera que la construcción de bloques y la generación de compromiso para los datos de las acumulaciones se externalicen a constructores de bloques especializados bajo el marco de la separación proponente-constructor (PBS) y Danksharding. + +## ¿Cuál es la función de la norma de elección de bifuración en SSF? {#role-of-the-fork-choice-rule} + +El mecanismo de consenso actual depende de una estrecha relación entre el parámetro de finalidad (el algoritmo que determina si dos tercios de los validadores certificaron cierta cadena) y la norma de elección de bifurcación (el algoritmo que decide qué cadena es la correcta en caso de haber múltiples opciones). El algoritmo de decisión de bifurcación solo tiene en cuenta bloques _desde_ el último bloque finalizado. En SSF no habría ningún bloque que la regla de elección de bifurcación pudiera considerar, porque la finalidad ocurre en la misma ranura cuando se propone el bloque. Esto significa que en SSF,_ya sea_ el algoritmo de elección de bifurcación _o_ el mecanismo de finalidad estarían activos en cualquier momento dado. El mecanismo de finalidad finalizaría un bloque con 2/3 de los validadores en línea certificando con honestidad. Si un bloque no puede exceder el 2/3 del umbral, la regla de elección de bifurcación se pondría en marcha para determinar qué cadena seguir. Esto también supone una oportunidad de mantener el mecanismo de pérdida por inactividad que recupera una cadena donde >1/3 de los validadores se desconectan, aunque con algunos matices adicionales. + +## Asuntos pendientes {#outstanding-issues} + +La agregación de escalabilidad aumentando el número de validadores por subred supone el problema de generar una mayor carga en la red entre pares. Y lo que sucede al añadir capas de agregación es que es bastante complejo de organizar y agrega latencia (es decir, puede llevarle al proveedor del bloque más tiempo controlar todos los agregadores de subredes). Tampoco está claro cómo liderar en el caso de que haya más validadores activos en la red que de los que se pueda procesar de forma viable en cada ranura, incluso agregando la firma BLS. Una solución potencial pasa por que todos los validadores certifiquen cada ranura y se prescinda de los comités en SSF, el límite de 32 ETH en el saldo efectivo podría eliminarse por completo, lo que significa que los operadores que manejan múltiples validadores puedan consolidar su participación y ejecutar menos, reduciendo el número de mensajes que los nodos validadores tengan que procesar para tener en cuenta todo el grupo de validadores. Esto depende de que los grandes participantes estén de acuerdo en consolidar los validadores. Es posible imponer un tope fijo de números de validadores o la cantidad de ETH apostado en cualquier momento. Sin embargo, esto requiere algún mecanismo para decidir a qué validadores se les permite participar y a quiénes no, o quién es responsable de crear efectos secundarios indeseados. + +## 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]). + +## Más información {#further-reading} + +- [Vitalik habla de SSF en EDCON 2022](https://www.youtube.com/watch?v=nPgUKNPWXNI) +- [Notas de Vitalik: en rumbo a la finalidad de ranura única](https://notes.ethereum.org/@vbuterin/single_slot_finality) diff --git a/src/content/translations/es/roadmap/statelessness/index.md b/src/content/translations/es/roadmap/statelessness/index.md new file mode 100644 index 00000000000..e3daac3f90c --- /dev/null +++ b/src/content/translations/es/roadmap/statelessness/index.md @@ -0,0 +1,103 @@ +--- +title: Vencimiento del estado, sin estado e historial +description: Explicación del historial de vencimiento y sin estado de Ethereum +lang: es +--- + +# Vencimiento del estado, sin estado e historial {#statelessness} + +La capacidad de ejecutar nodos de Ethereum en un hardware modesto es fundamental para una verdadera descentralización. Esto se debe a que ejecutar un nodo da a los usuarios la capacidad de verificar la información mediante la realización de comprobaciones criptográficas de forma independiente en lugar de confiar en un tercero para que les facilite los datos. Ejecutar un nodo permite a los usuarios enviar transacciones directamente a la red entre pares de Ethereum en lugar de tener que confiar en un intermediario. La descentralización no es posible si estos beneficios solo están al alcance de aquellos usuarios que pueden disponer de costoso hardware. En su lugar, los nodos deberían poder ejecutarse con requisitos de procesamiento y memoria extremadamente modestos, para que puedan ejecutarse en teléfonos móviles, microordenadores o de fondo en un ordenador doméstico. + +Hoy en día, los requisitos de espacio en el disco son la principal barrera que impide el acceso universal a los nodos. Esto se debe principalmente a la necesidad de almacenar grandes masas de datos sobre el estado de Ethereum. Los datos sobre el estado contienen información vital y necesaria para procesar correctamente nuevos bloques y transacciones. Al cierre de la edición de este documento, se recomienda un SSD rápido de 2 TB para ejecutar un nodo Ethereum completo. Para un nodo que no «poda» ningún dato más antiguo, el requisito de almacenamiento crece alrededor de 14 GB/semana, y los nodos de archivo que almacenan todos los datos desde el inicio se acercan a los 12 TB (al cierre de la edición de este artículo, en febrero de 2023). + +Los discos duros más baratos se pueden usar para almacenar datos más antiguos, pero son demasiado lentos para mantenerse al día con los bloques entrantes. Mantener los modelos de almacenamiento actuales para los clientes, mientras se hace que los datos sean más baratos y fáciles de almacenar es solo una solución temporal y parcial al problema, porque el crecimiento del estado de Ethereum es «sin límites», lo que significa que los requisitos de almacenamiento solo pueden aumentar, y las mejoras tecnológicas siempre tendrán que seguir el ritmo del crecimiento continuo del estado. En su lugar, los clientes deben encontrar nuevas formas de verificar bloques y transacciones que no dependan de la búsqueda de datos en bases de datos locales. + +## Reducción del almacenamiento para los nodos {#reducing-storage-for-nodes} + +Hay varias formas de reducir la cantidad de datos que cada nodo tiene que almacenar, cada una de las cuales requiere que el protocolo central de Ethereum se actualice hasta cierto punto: + +- **El vencimiento del historial**: permite que los nodos descarten los datos de estado más antiguos que los bloques X, pero no cambia la forma en que el cliente de Ethereum gestiona los datos de estado. +- **El vencimiento del estado**: permite que los datos de estado que no se utilizan con frecuencia se vuelvan inactivos. Los clientes pueden ignorar los datos inactivos hasta que se resuciten. +- **Sin estado débil**: solo los productores de bloques necesitan acceso a datos de estado completo, otros nodos pueden verificar bloques sin una base de datos de estado local. +- **Sin estado fuerte**: ningún nodo necesita acceso a los datos completos del estado. + +## Vencimiento de datos {#data-expiry} + +### Vencimiento del historial {#history-expiry} + +El vencimiento del historial se refiere a los clientes que «podan» los datos más antiguos que es poco probable que necesiten, de modo que solo almacenen una pequeña cantidad de datos históricos, descartando los datos más antiguos en beneficio de datos nuevos cuando lleguen. Hay dos razones por las que los clientes requieren datos históricos: sincronizar y atender las solicitudes de datos. Originalmente, los clientes tenían que sincronizar desde el bloque inicial, verificando que cada bloque sucesivo fuera correcto hasta la cabeza de la cadena. Hoy en día, los clientes utilizan «puntos de control de subjetividad débiles» para abrirse camino hacia la cabeza de la cadena. Estos puntos de control son puntos de partida de confianza, como tener un bloque de génesis cerca del presente en lugar del comienzo mismo de Ethereum. Esto significa que los clientes pueden eliminar toda la información antes del punto de control de subjetividad débil más reciente sin perder la capacidad de sincronizarse con la cabeza de la cadena. Actualmente, los clientes atienden solicitudes (que llegan a través de JSON-RPC) de datos históricos al obtenerlos de sus bases de datos locales. Sin embargo, con el vencimiento del historial, ya no se podrá lograr si se han podado los datos solicitados. Para atender a estos datos históricos se necesitan algunas soluciones innovadoras. + +Una opción es que los clientes soliciten datos históricos de sus pares utilizando una solución como Portal Network. Portal Network es una red entre pares en desarrollo para atender a datos históricos, donde cada nodo almacena una pequeña parte del historial de Ethereum, de tal manera que todo el historial existe distribuido a través de la red. Las solicitudes se atienden buscando pares que almacenen los datos relevantes y solicitándoselo. Alternativamente, dado que generalmente son aplicaciones las que requieren acceso a datos históricos, puede convertirse en su responsabilidad almacenarlos. También puede haber suficientes actores altruistas en el espacio de Ethereum que estén dispuestos a mantener archivos históricos. Podría ser un DAO que gire para gestionar el almacenamiento de datos históricos, o idealmente será una combinación de todas estas opciones. Estos proveedores podrían servir los datos de muchas maneras, como en un torrente, FTP, Filecoin o IPFS. + +La caducidad de la historia es algo controvertida porque hasta ahora Ethereum siempre ha garantizado implícitamente la disponibilidad de cualquier dato histórico. Siempre ha existido la posibilidad de hacer una sincronización completa desde el inicio, incluso si se basa en la reconstrucción de algunos datos más antiguos a partir de instantáneas. El vencimiento del historial impulsa el deber de proporcionar esta garantía fuera del protocolo central de Ethereum. Esto podría introducir nuevos riesgos de censura si se trata de organizaciones centralizadas que terminan interviniendo para proporcionar datos históricos. + +EIP-4444 aún no está aún listo para enviarse, pero es un tema sobre el que se está hablando. Curiosamente, los desafíos con EIP-4444 no son tanto técnicos, sino sobre todo de gestión comunitaria. Para que se envíe, debe haber una aceptación por parte de la comunidad que incluya no solo el acuerdo, sino también los compromisos de almacenar y servir datos históricos de entidades de confianza. + +Esta actualización no cambia fundamentalmente la forma en que los nodos de Ethereum manejan los datos de estado, solo cambia la forma en que se accede a los datos históricos. + +### Vencimiento del estado {#state-expiry} + +Por vencimiento del estado se refiere a la eliminación del estado de los nodos individuales si no se ha accedido recientemente. Hay varias formas en las que esto podría implementarse, incluyendo: + +- **Vencimiento por alquiler**: cobrar un «alquiler» a las cuentas y que venzan cuando su alquiler llegue a cero. +- **Vencimiento por tiempo**: hacer que las cuentas estén inactivas si no hay lectura/escritura en esa cuenta durante algún tiempo. + +El vencimiento por alquiler podría ser un alquiler directo que se cobra a las cuentas para mantenerlas en la base de datos de estado activo. La expiración por tiempo podría ser por cuenta regresiva desde la última interacción de la cuenta, o podría ser el vencimiento periódico de todas las cuentas. También podría haber mecanismos que combinen elementos de los modelos basados en el tiempo y el alquiler, por ejemplo, las cuentas individuales persisten en el estado activo si pagan una pequeña tarifa antes del vencimiento en función del tiempo. Con el vencimiento del estado, es importante tener en cuenta que el estado inactivo **no se elimina**, solo se almacena por separado del estado activo. El estado inactivo puede resucirarse en el estado activo. + +Una forma factible de hacerlo sería probablemente tener un árbol de estado para períodos de tiempo específicos (tal vez ~1 año). Cada vez que comienza un nuevo período, también lo hace un árbol estatal completamente nuevo. Solo se puede modificar el árbol de estado actual, todos los demás son inmutables. Solo se espera que los nodos de Ethereum retengan el árbol de estado actual y el siguiente más reciente. Esto requiere una forma de marcar la hora de una dirección con el período en el que existe. Hay [varias formas posibles](https://ethereum-magicians.org/t/types-of-resurrection-metadata-in-state-expiry/6607) de hacerlo, pero la opción principal requiere que [las direcciones se alarguen](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485) para acomodar la información adicional con el beneficio añadido de que las direcciones más largas son mucho más seguras. El elemento de la hoja de ruta que hace esto se llama [extensión de espacio de direcciones](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485). + +De manera similar al vencimiento del historial, la responsabilidad del vencimiento del estado para almacenar datos antiguos de estado se exime de los usuarios individuales y se delega a otras entidades, como proveedores centralizados, miembros de la comunidad altruistas o soluciones descentralizadas más futuristas, como Portal Network. + +El vencimiento del estado todavía está en la fase de investigación y aún no está lista para enviarla. El vencimiento del estado puede ocurrir más tarde que los clientes sin estado y el vencimiento del historial, porque esas actualizaciones hacen que la mayoría de los validadores puedan gestionar fácilmente los grandes tamaños de estado. + +## Sin estado {#statelessness} + +El término sin estado no es del todo preciso, ya que no significa que se elimine el concepto de «estado», sino que implica cambios en la forma en que los nodos de Ethereum gestionan los datos de estado. Un estado sin estado en sí mismo tiene dos vertientes: el sin estado débil y el fuerte. La apátrida débil permite que la mayoría de los nodos se quede sin estado al poner la responsabilidad del almacenamiento estatal en unos pocos. La apátrida fuerte elimina por completo la necesidad de que cualquier nodo almacene los datos completos del estado. Tanto el sin estado debil como el fuerte ofrecen los siguientes beneficios a los validadores normales: + +- sincronización casi instantánea +- capacidad de validar bloques fuera de orden +- nodos capaces de ejecutarse con requisitos de hardware muy bajos (por ejemplo, en teléfonos) +- los nodos pueden ejecutarse en discos duros baratos porque no se requiere lectura/escritura de disco +- compatible con futuras actualizaciones de la criptografía de Ethereum + +### Sin estado débil {#weak-statelessness} + +El sin estado débil implica cambios en la forma en que los nodos de Ethereum verifican los cambios de estado, pero no elimina por completo la necesidad de almacenamiento de estado en todos los nodos de la red. En cambio, la apátrida débil pone la responsabilidad del almacenamiento de estado en los proponentes de bloques, mientras que todos los demás nodos de la red verifican los bloques sin almacenar los datos de estado completos. + +**En un sin estado débil, proponer bloques requiere acceso a datos de estado completos, sin embargo verificar los bloques no requiere datos de estado.** + +Para que esto suceda, debe haberse implementado en los clientes de Ethereum los [árboles de Verkle](../verkle-trees). Los árboles de Verkle son una estructura de datos de sustitución para almacenar datos de estado de Ethereum que permiten que los «testigos» pequeños y de tamaño fijo de los datos se pasen entre pares y se utilicen para verificar bloques, en lugar de verificar bloques contra bases de datos locales. [La separación entre proponentes y constructores](/roadmap/pbs/) también es necesaria, porque esto permite que los constructores de bloques sean nodos especializados con hardware más potente, y esos son los que requieren acceso a los datos de estado completo. + + + +El sin estado depende de que los constructores de bloques mantengan una copia de los datos del estado completos para que puedan generar testigos y que sirvan para verificar el bloque. Otros nodos no necesitan acceso a los datos del estado, toda la información necesaria para verificar el bloque está disponible en el testigo. Esto crea una situación en la que proponer un bloque es caro, pero verificar el bloque es barato, lo que implica que menos operadores ejecutarán un nodo de propuesta de bloque. Sin embargo, la descentralización de los proponentes de bloques no es crítica, siempre y cuando el mayor número posible de participantes puedan verificar de forma independiente que los bloques que proponen son válidos. + +Más información sobre las notas de Dankrad. + + +Los proponentes de bloques utilizan los datos del estado para crear «testigos», el conjunto mínimo de datos que prueban los valores del estado que las transacciones están cambiando en un bloque. Otros validadores no mantienen el estado, solo almacenan la raíz del estado (un hash de todo el estado). Reciben un bloqueo y un testigo y los usan para actualizar su raíz de estado. Esto hace que un nodo de validación sea extremadamente ligero. + +El sin estado débil se encuentra en un estado avanzado de investigación, pero depende de la separación proponente-constructor y de que se hayan implementado los árboles de Verkle para que se puedan pasar pequeños testigos entre pares. Esto significa que el sin estado débil todavía tardará probablemente unos años en integrarse en la red principal de Ethereum. + +### Sin estado fuerte {#strong-statelessness} + +El sin estado fuerte elimina por completo la necesidad de que cualquier bloque almacene los datos completos del estado. En su lugar, las transacciones se envían con testigos que pueden añadir los productores de bloques. Los productores de bloques son entonces responsables de almacenar solo ese estado que se necesita para generar testigos para las cuentas pertinentes. La responsabilidad del estado se traslada casi en su totalidad a los usuarios, ya que envían testigos y «listas de acceso» para declarar con qué cuentas y claves de almacenamiento están interactuando. + +Los investigadores han estudiado el sin estado fuerte, aunque actualmente no se espera que forme parte de la hoja de ruta de Ethereum; es más probable que con el sin estado débil sea suficiente para las necesidades de escalabilidad de Ethereum. + +## Progreso actual {#current-progress} + +El sin estado débil, el vencimiento del historial y el vencimiento del estado están en la fase de investigación y se espera que se envíen dentro de varios años. No hay garantía de que todas estas propuestas se implementen, por ejemplo, si el vencimiento del estado se implementa primero, es posible que ya no sea necesario implementar también el vencimiento del historial. También hay otros elementos de la hoja de ruta, como los [árboles de Verkle](/roadmap/verkle-trees) y [la separación entre proponentes y constructores](/roadmap/pbs) que deben completarse primero. + +## Más información {#further-reading} + +- [Vitalik comenta el sin estado en AMA](https://www.reddit.com/r/ethereum/comments/o9s15i/impromptu_technical_ama_on_statelessness_and/) +- [Una teoría de la gestión del tamaño del estado](https://hackmd.io/@vbuterin/state_size_management) +- [Limitación del estado: resurrección-conflicto-minimizado](https://ethresear.ch/t/resurrection-conflict-minimized-state-bounding-take-2/8739) +- [En rumbo hacia el sin estado y el vencimiento del estado](https://hackmd.io/@vbuterin/state_expiry_paths) +- [Especificación EIP-4444](https://eips.ethereum.org/EIPS/eip-4444) +- [Alex Stokes habla sobre EIP-4444](https://youtu.be/SfDC_qUZaos) +- [¿Por qué es tan importante acabar sin estado?](https://dankradfeist.de/ethereum/2021/02/14/why-stateless.html) +- [Las notas conceptuales originales del cliente sin estado](https://ethresear.ch/t/the-stateless-client-concept/172) +- [Más información sobre el vencimiento del estado](https://hackmd.io/@vbuterin/state_size_management#A-more-moderate-solution-state-expiry) +- [Aún más información sobre el vencimiento del estado](https://hackmd.io/@vbuterin/state_expiry_paths#Option-2-per-epoch-state-expiry) diff --git a/src/content/translations/es/roadmap/user-experience/index.md b/src/content/translations/es/roadmap/user-experience/index.md new file mode 100644 index 00000000000..e816bfb627f --- /dev/null +++ b/src/content/translations/es/roadmap/user-experience/index.md @@ -0,0 +1,36 @@ +--- +title: Mejorar la experiencia de usuario +description: "Todavía es demasiado complejo el uso de Ethereum para la mayoría de las personas. Para fomentar la adopción masiva, Ethereum debe reducir drásticamente sus barreras de entrada: los usuarios deben obtener los beneficios del acceso descentralizado, sin permiso y resistente a la censura a Ethereum, pero debe ser tan sencillo como usar una aplicación Web2 tradicional." +lang: es +image: ../../../../../assets/roadmap/roadmap-ux.png +alt: "Hoja de ruta de Ethereum" +template: roadmap +--- + +El uso de Ethereum debe simplificarse; desde la gestión de claves y carteras hasta el inicio de transacciones. Para facilitar la adopción masiva, Ethereum debe aumentar drásticamente la facilidad de uso, permitiendo a los usuarios experimentar un acceso sin permiso y resistente a la censura a Ethereum con la experiencia sin fricciones de usar aplicaciones Web2. + +## Más allá de las fases semilla {#no-more-seed-phrases} + +Las cuentas de Ethereum están protegidas por un par de claves que se utilizan para identificar las cuentas (clave pública) y firmar mensajes (clave privada). Una clave privada es una especie de contraseña maestra: permite el acceso completo a una cuenta de Ethereum. Esta es una forma diferente de operar para las personas más familiarizadas con los bancos y las aplicaciones Web2 que administran cuentas en nombre de un usuario. Para que Ethereum alcance la adopción masiva sin depender de terceros centralizados, debe haber una forma directa y sin fricciones de que un usuario tome la custodia de sus activos y mantenga el control de sus datos sin tener que entender la criptografía de claves público-privadas y la gestión de claves. + +La solución a esto es el uso de carteras de contratos inteligentes para interactuar con Ethereum. Las carteras de contratos inteligentes crean formas de proteger las cuentas en caso de pérdida o robo de las claves, suponen oportunidades para una mejor detección y defensa del fraude, y permiten que las carteras obtengan nuevas funciones. Aunque las carteras de contratos inteligentes existen hoy en día, son difíciles de construir porque el protocolo Ethereum necesita soportarlas mejor. Este soporte adicional se conoce como abstracción de cuentas. + +Más información sobre la abstracción de cuentas + +## Nodos para todos + +Los usuarios que ejecutan nodos no tienen que confiar en terceros para proporcionarles datos, y pueden interactuar de forma rápida, privada y sin permiso con la cadena de bloques de Ethereum. Sin embargo, ejecutar un nodo en este momento requiere conocimientos técnicos y destinar un espacio en disco considerable, lo que significa que muchas personas deben confiar en intermediarios en su lugar. + +Hay varias actualizaciones que simplificarán y reducirán la dependencia de recursos de la ejecución de los nodos. La forma en que se almacenan los datos se cambiará para utilizar una estructura más eficiente en el espacio conocida como **Verkle Tree**. Además, con [sin estado](/roadmap/statelessness) o [vencimiento de datos](/roadmap/statelessness/#data-expiry), los nodos de Ethereum no necesitarán almacenar una copia de todos los datos del estado de Ethereum, lo que reducirá drásticamente los requisitos de espacio en el disco duro. [Los nodos ligeros](/developers/docs/nodes-and-clients/light-clients/) ofrecerán muchos beneficios de ejecutar un nodo completo, pero se pueden ejecutar fácilmente en teléfonos móviles o dentro de simples aplicaciones de navegador. + +Más información acerca de los árboles Verkle + +Con estas actualizaciones, las barreras para ejecutar un nodo se reducen efectivamente a cero. Los usuarios se beneficiarán de un acceso seguro y sin permiso a Ethereum sin tener que sacrificar un considerable espacio en el disco o la CPU de su ordenador o teléfono móvil, ni tampoco tendrán que depender de terceros para acceder a los datos o a la red cuando utilicen aplicaciones. + +## Progreso actual {#current-progress} + +Las billeteras de contrato inteligente ya están disponibles, pero existen más actualizaciones necesarias para hacerlas todo lo descentralizadas y sin permisos como sea posible. EIP-4337 es una propuesta madura que no requiere ningún cambio en el protocolo de Ethereum. El principal contrato inteligente requerido para el EIP-4337 se desplegó en marzo de 2023. + +El sin estado total todavía está en la fase de investigación y es probable que su implementación aún esté a varios años vista. Hay varios hitos en el camino hacia el sin estado total, incluida la caducidad de los datos, que pueden implementarse antes. Antes deben completarse otros elementos de la hoja de ruta, como los [árboles de Verkle](/roadmap/verkle-trees/) y [la separación proponente-constructor](/roadmap/pbs/). + +Las redes de prueba del árbol de Verkle ya están en funcionamiento, y la siguiente fase consiste en ejecutar clientes habilitados para el árbol de Verkle en redes de prueba privadas y luego públicas. Puede ayudar a acelerar el progreso implementando contratos en las redes de prueba o ejecutando clientes de la red de prueba. diff --git a/src/content/translations/es/roadmap/verkle-trees/index.md b/src/content/translations/es/roadmap/verkle-trees/index.md new file mode 100644 index 00000000000..6673f211a64 --- /dev/null +++ b/src/content/translations/es/roadmap/verkle-trees/index.md @@ -0,0 +1,65 @@ +--- +title: Árboles Verkle +description: Una descripción de alto nivel de los árboles Verkle y cómo se utilizarán para actualizar Ethereum +lang: es +summaryPoints: + - Descubra qué son los árboles de Verkle + - Descubra por qué los árboles de Verkle son una actualización útil para Ethereum +--- + +# Árboles Verkle {#verkle-trees} + +Los árboles de Verkle (una palabra combinada de «Vector commitment» o compromiso vectorial y «Merkle Trees») son una estructura de datos que se puede utilizar para actualizar los nodos de Ethereum y así dejen de almacenar grandes cantidades de datos de estado sin perder la capacidad de validar bloques. + +## Sin estado {#statelessness} + +Los árboles de Verkle son un paso crítico en el rumbo hacia los clientes de Ethereum sin estado. Los clientes sin estado son aquellos que no tienen que almacenar toda la base de datos estatal para validar los bloques entrantes. En lugar de usar su propia copia local del estado de Ethereum para verificar los bloques, los clientes sin estado usan un «testigo» de los datos del estado que llegan con el bloque. Un testigo es una colección de piezas individuales de los datos estatales que se requieren para ejecutar un conjunto particular de transacciones, y una prueba criptográfica de que el testigo es realmente parte de los datos completos. El testigo se utiliza _en lugar de_ de la base de datos de estado. Para que esto funcione, los testigos deben ser muy pequeños, para que puedan transmitirse de forma segura a través de la red a tiempo para que los validadores los procesen en un plazo de 12 segundos. La estructura de datos del estado actual no es adecuada, porque los testigos son demasiado grandes. Los árboles de Verkle resuelven el problema al habilitar pequeños testigos, eliminando una de las principales barreras de clientes sin estado. + + + +Actualmente, los clientes de Ethereum utilizan una estructura de datos conocida como «Patricia Merkle Trie» para almacenar sus datos de estado. La información sobre las cuentas individuales se almacena como hojas en el trie y los pares de hojas se agrupan repetidamente hasta que solo queda un hash. A este hash final se le conoce como la «raíz». Para verificar los bloques, los clientes de Ethereum ejecutan todas las transacciones en un bloque y actualizan su estado local. El bloque se considera válido si la raíz del árbol local es idéntica a la proporcionada por el proponente del bloque, porque cualquier diferencia en el cálculo realizado por el proponente del bloque y el nodo de validación haría que el hash raíz fuera completamente diferente. El problema con esto es que la verificación de la cadena de bloques requiere que cada cliente almacene todo el estado trie para el bloque de cabeza y varios bloques históricos (el valor predeterminado en Geth es mantener los datos de estado para 128 bloques detrás de la cabeza). Esto requiere que los clientes tengan acceso a una gran cantidad de espacio en disco, lo que es una barrera para ejecutar nodos completos en hardware barato y de bajo consumo. Una solución a esto es actualizar el trie de estado a una estructura más eficiente (árbol de Verkle) que se pueda resumir utilizando un pequeño «testigo» de los datos que se pueden compartir en lugar de los datos de estado completos. El cambio de formato de los datos del estado a un árbol de Verkle es un trampolín para pasar a los clientes sin estado. + + + +## ¿Qué es un testigo y por qué lo necesitamos? {#what-is-a-witness} + +Verificar un bloque significa volver a ejecutar las transacciones contenidas en el bloque, aplicar los cambios a la prueba de estado trie de Ethereum y calcular el nuevo hash raíz. Un bloque verificado es aquel cuyo hash raíz de estado calculado es el mismo que el proporcionado con el bloque (porque esto significa que el proponente de bloques realmente hizo el cálculo que dice que hizo). En los clientes de Ethereum de hoy en día, la actualización del estado requiere acceso a todo el estado trie, que es una gran estructura de datos que debe almacenarse localmente. Un testigo solo contiene los fragmentos de los datos de estado que se requieren para ejecutar las transacciones en el bloque. Un validador solo puede usar esos fragmentos para verificar que el proponente de bloques haya ejecutado las transacciones de bloque y actualizado el estado correctamente. Sin embargo, esto significa que el testigo debe transferirse entre pares en la red Ethereum lo suficientemente rápido como para que cada nodo lo reciba y procese de forma segura dentro de una ranura de 12 segundos. Si el testigo es demasiado grande, algunos nodos podrían tardar demasiado en descargarlo y mantenerlo sincronizado con la cadena. Esta es una fuerza de centralización porque significa que solo los nodos con conexiones rápidas a Internet pueden participar en la validación de bloques. Con los árboles de Verkle no es necesario almacenar el estado en su disco duro; _solo_ necesita comprobar que un bloque esté contenido dentro del propio bloque. Por desgracia, los testigos que se pueden producir a partir de los tries de Merkle son demasiado grandes para apoyar a los clientes sin estado. + +## ¿Por qué los árboles de Verkle permiten testigos más pequeños? {#why-do-verkle-trees-enable-smaller-witnesses} + +La estructura de un Merkle Trie hace que los tamaños de los testigos sean muy grandes, demasiado grandes para transmitir de forma segura entre pares dentro de un espacio de 12 segundos. Esto se debe a que el testigo es una ruta que conecta los datos, que se mantienen en las hojas, con el hash raíz. Para verificar los datos, es necesario tener no solo todos los hashes intermedios que conectan cada hoja con la raíz, sino también todos los nodos «de los hermanos». Cada nodo de la prueba tiene un hermano con el que se hace un hash para crear el siguiente hash hasta el trie. Y eso supone una gran cantidad de datos. Los árboles Verkle reducen el tamaño del testigo al acortar la distancia entre las hojas del árbol y su raíz, además de eliminar la necesidad de proporcionar nodos hermanos para verificar el hash raíz. Se obtendrá aún más eficiencia de espacio mediante el uso de un potente esquema de compromiso polinómico en lugar del compromiso vectorial de estilo hash. El compromiso polinómico permite que el testigo tenga un tamaño fijo, independientemente del número de hojas que demuestre. + +Bajo el esquema de compromiso polinómico, los testigos tienen tamaños manejables que se pueden transferir fácilmente en la red entre pares. Esto permite a los clientes verificar los cambios de estado en cada bloque con una cantidad mínima de datos. + + + +El tamaño del testigo varía dependiendo del número de hojas que incluya. Suponiendo que el testigo cubre 1.000 hojas, un testigo para un trie de Merkle sería de aproximadamente 3,5 Mb (suponiendo 7 niveles para el trie). Un testigo de los mismos datos en un árbol de Verkle (suponiendo 4 niveles para el árbol) sería de unos 150 kB - **aproximadamente 23 veces más pequeño**. Esta reducción en el tamaño de los testigos permitirá que los testigos clientes sin estado sean aceptablemente pequeños. Los testigos polinómicos son 0,128 -1 kB dependiendo del compromiso polinómico específico que se utilice). + + + +## ¿Cuál es la estructura de un árbol de Verkle? {#what-is-the-structure-of-a-verkle-tree} + +Los árboles de Verkle son `(llave, valor)` pares donde las llaves son elementos de 32 bytes compuestos por un _tallo de 31 bytes_ y un solo byte _sufijo_. Estas claves están organizadas en nodos de _extensión_ y nodos _internos_. Los nodos de extensión representan una sola raíz para 256 hijos con diferentes sufijos. Los nodos internos también tienen 256 hijos, pero pueden ser otros nodos de extensión. La principal diferencia entre el árbol Verkle y la estructura del árbol Merkle es que el árbol Verkle es mucho más plano, lo que significa que hay menos nodos intermedios que conectan una hoja con la raíz y, por lo tanto, menos datos necesarios para generar una prueba. + +![](./verkle.png) + +[Bibliografía para profundizar sobre la estructura de los árboles Verkle.](https://blog.ethereum.org/2021/12/02/verkle-tree-structure) + +## Progreso actual {#current-progress} + +Las redes de prueba del árbol de Verkle ya están en funcionamiento, pero todavía se requieren sustanciales actualizaciones pendientes para los clientes en apoyo de los árboles de Verkle. Puede ayudar a acelerar el progreso implementando contratos en las redes de prueba o ejecutando clientes de la red de prueba. + +[Explore la red de pruebas de Verkle en Beverly Hills](https://beverlyhills.ethpandaops.io) + +[Vea a Guillaume Ballet explicar la red de prueba de Condrieu Verkle](https://www.youtube.com/watch?v=cPLHFBeC0Vg) (tenga en cuenta que la prueba de Condrieu fue una prueba de trabajo y ahora se ha sustituido por la [red de prueba de Kaustinen](https://kaustinen.ethdevops.io)). + +## Más información {#further-reading} + +- [Dankrad Feist explica los árboles Verkle en PEEPanEIP](https://www.youtube.com/watch?v=RGJOQHzg3UQ) +- [Guillaume Ballet explica los árboles de Verkle en ETHGlobal](https://www.youtube.com/watch?v=f7bEtX3Z57o) +- [«Cómo los árboles de Verkle hacen que Ethereum sean claro y directo» por Guillaume Ballet en Devcon 6](https://www.youtube.com/watch?v=Q7rStTKwuYs) +- [Piper Merriam sobre clientes sin estado en ETHDenver 2020](https://www.youtube.com/watch?v=0yiZJNciIJ4) +- [Dankrad Fiest explica los árboles de Verkle y el cliente sin estado en el pódcast Conocimiento cero](https://zeroknowledge.fm/episode-202-stateless-ethereum-verkle-tries-with-dankrad-feist/) +- [Vitalik Buterin comenta los árboles de Verkle](https://vitalik.ca/general/2021/06/18/verkle.html) +- [Dankrad Feist habla de los árboles de Verkle](https://dankradfeist.de/ethereum/2021/06/18/verkle-trie-for-eth1.html) +- [Documentación EIP de los árboles de Verkle](https://notes.ethereum.org/@vbuterin/verkle_tree_eip#Illustration) diff --git a/src/content/translations/fa/bridges/index.md b/src/content/translations/fa/bridges/index.md new file mode 100644 index 00000000000..cadfb870e45 --- /dev/null +++ b/src/content/translations/fa/bridges/index.md @@ -0,0 +1,137 @@ +--- +title: مقدمه‌ای بر پل‌های بلاک‌چین +description: پلها به كاربران اجازه مي دهند دارايي هايشان را بين بلاك چينهاي مختلف انتقال دهند +lang: fa +--- + +# پل‌های زنجیره‌‌ی بلوکی {#prerequisites} + +_Web3 به راه‌حل‌های مقیاس‌پذیری اكوسيستم لايه 1 و اكوسيستم لايه 2 تبدیل شدند که هركدام از اين لايه ها داراي توانایی‌ها و قوانين منحصربه‌فرد هستند. در حالی كه پروتكل‌هاي بلاكچين افزايش مي يابند، [ تقاضا براي جابجايي دارايي روي زنجيره ها افزايش مي بايد.]() براي پاسخ به اين نياز ما به پلها نياز داريم._ + + + +## پل ها چه هستند؟ {#what-are-bridges} + +پلهاي بلاك چين دقيقا مثل پلهاي واقعی در دنياي فيزيكي هستند. همانطور كه يك پل فيريكي دو محل فيزيكي را به هم مرتبط مي كند يك پل بلاك چين نيز دو اکوسیستم بلاكچين را به هم متصل مي كند. پلها ارتباط بين بلاكچين ها را با انتقال اطلاعات و دارايی ها امكان پذير مي كنند. + +با يك مثال مسئله را توضيح مي دهيم: + +شما اهل آمريكا هستيد و می خواهيد به اروپا سفر كنيد. شما دلار داريد ولي به يورو نياز داريد. براي تبديل دلار به يورو از يك صرافي با كارمزد كم كمك مي گيريد. + +اما اگر بخواهيد يك تبديل مشابه را برای استفاده از یک بلاكچين متفاوت انجام دهید، چه کار خواهید کرد؟ فرض كنيد مي خواهيد اتريوم شبكه اصلي را با اتريوم در‌ [آربيتروم](https://arbitrum.io/) مبادله كنيد. مثل تبديل پولي كه براي يورو انجام داديم، به يك مكانيزم نياز داريم تا بتوانيم اتر بلاك چين اصلي را به اتر بلاك چين آربیتروم تبديل كنيم. پل ها چنين انتقالي را امكان پذير مي كنند. در اين مثال [آربیتروم داراي يك پل اصلي است](https://bridge.arbitrum.io/) كه مي تواند اتر را از شبکه اصلی به آربیتروم انتقال دهد. + +## چرا به پلها نياز داريم؟ {#why-do-we-need-bridges} + +تمام بلاك چين ها محدوديت هاي خود را دارند. اتريوم براي مقیاس‌پذیری و تامين تقاضا نياز به رول آپ ها دارد. جايگزينهايي مثل Solana و Avalanche به صورت متفاوت طراحي شده اند تا داده‌های ورودی بیشتر را ممکن سازند اما با قربانی کردن تمركززدایی. + +با این حال، تمام بلاك چينها به صورت ايزوله توسعه پیدا می‌کنند و قوانين مربوط به خودشان و همچنين مكانيزمهاي اجماع متفاوت دارند. یعنی نمي توانند به صورت طبيعي با هم ارتباط پيدا كنند و توكنها آزادنه نمي توانند بين بلاک چین‌ها حركت كنند. + +پلها براي اتصال بلاكچينها هستند و اجازه انتقال اطلاعات و توكنها را بين آنها مي دهند. + +پلها موارد زير را ممکن می‌سازند: + +- انتقال دارايي و اطلاعات بين زنجيره +- اپليكيشنهاي غير متمركز مي توانند به توانایی‌های بلاكچين های مختلف دسترسي داشته باشند - به این ترتیب توانایی‌های خود را افزایش می‌دهند (در حالی که پروتکل‌ها اکنون فضاي طراحی بيشتري براي خلاقيت دارند). +- کاربران می‌توانند به پلتفرمهاي جديد دسترسی پیدا کنند و از مزایای زنجيره هاي مختلف استفاده کنند. +- توسعه دهندگان اکوسیستم‌های مختلف بلاك چين می‌توانند همکاری کنند و پلتفرمهاي جديدي را براي كاربرها بسازند. + +[چگونه توکن ها را به لایه دوم ارتباط دهیم](/guides/how-to-use-a-bridge/) + + + +## موارد استفاده پلها {#bridge-use-cases} + +سناريوهاي مختلفي كه مي توان از پلها استفاده كرد در زير ارائه شده است: + +### هزينه انتقال پايين تر {#transaction-fees} + +فرض كنيد كه شما اتر را در شبکه اصلی بلاكچين اتريوم داريد ولي مي خواهيد قیمت تراکنش كمتري را براي کاوش اپليكيشنهاي غیرمتمرکز مختلف پرداخت كنيد. با پل زدن اترتان از شبکه اصلی بلاكچين به رول‌آپ لايه 2 می‌توانید از قیمت‌‌های تراکنش پایین‌تر بهره‌مند شوید. + +### اپليكيشن‌های غير متمركز روي بلاكچين‌های دیگر {#dapps-other-chains} + +فرض كنيد شما از Aave در شبکه اصلی اتریوم استفاده کرده‌اید تا USDT قرض بدهید ولي نرخ بهره قرض دادن USDT با استفاده از Aave در Polygon بالاتر است. + +### کاوش اكوسيستم‌های بلاكچين {#explore-ecosystems} + +اگر شما اتر در شبکه اصلی اتریوم داريد و مي خواهيد یک لایه 1 جایگزین را برای امتحان کردن اپلیکیشن‌های غیرمتمرکز اصلی آنها کاوش کنید. با استفاده از يك پل مي توانيد اتر خود را از شبکه اصلی اتریوم به لایه 1 جایگزین منتقل کنید. + +### دارايی‌های رمز ارز اصلی خود {#own-native} + +فرض كنيد مي خواهيد بيتكوين (BTC) خودتان را داشته باشيد ولي فقط در شبكه اصلي اتريوم پول داريد. براي بدست آوردن بيتكوين در اتريوم مي توانيد بيتكوين تبدیل یافته (WBTC) خريداري كنيد. با اين حال، WBTC یک توکن ERC-20 در شبكه اتريوم است که به این معنی است که یک نسخه اتريوم بیتکوین است، نه دارایی اصلی در بلاک‌چین يتكوين. براي داشتن بيتكوين اصلي بايد به كمك پل دارايی‌های خود را از اتريوم به بيتكوين انتقال دهيد. با اين كار WBTC خود را به بيتكوين اصلي پل می‌زنید و تغيير مي دهيد. به شكل مشابه ممكن است شما داراي بيتكوين باشيد و بخواهيد از آن در پروتكلهاي ديفاي اتريوم بهره ببريد. اين امر نيازمند آن است كه يك پل در جهت مخالف از بيتكوين به رپد بيتكوين استفاده شود که می‌توان از آن به عنوان دارایی در اتریوم استفاده کرد. + + + البته مي توانيد تمام كارهاي فوق را توسط صرافي متمركز انجام دهيد. با این حال، در این صورت با انجام چند مرحله می توانید بهتر از پل مورد نظر استفاده کنید، مگر آن که پول‌هایتان از قبل در صرافی باشد. + + + + +## انواع پل {#types-of-bridge} + +پلها انواع مختلفی از نظر طرح و پیچیدگی دارند. به طور کلی پلها به دو گروه تقسیم می شوند: بدون نیاز به اعتماد و نیازمند به اعتماد. + +| پلهای با نیاز به اعتماد | پل های بدون نیاز به اعتماد | +| --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| پلهای نیازمند به اعتماد به یک سیستم یا نهاد مرکزی برای استفاده از آنها وابسته هستند. | پل‌های بدون اعتماد، با استفاده از قراردادهای هوشمند و الگوریتم‌ها کار می‌کنند. | +| آنها فرض اعتماد پذیر بودن را در رابطه با سرپرستی دارایی و امنیت پل دارا می باشند. کابران بیشتر به شهرت اپراتور پل اعتماد می‌کنند. | آنها بدون نیاز به اعتماد هستند این به این معنی است که امنیت پل مشابه امنیت بلاک چین مورد نظر است. | +| کاربران باید کنترل دارایی های خود را واگذار کنند. | از طریق قرار داد هوشمند، با پل‌های بدون اعتماد کاربران می توانند کنترل دارایی خود را در اختیار داشته باشند. | + +به طور مشخص می توان گفت که در پلهایی که نیاز به اعتماد می باشد شما به پلتفرم مورد نظر اعتماد می کنید در حالی که در پلهای بدون اعتماد با حداقل اعتماد کردن و صرفا با فرض درست بودن دامنه های زیر ساخت کار انجام می شود. این اصطلاحات در زیر توضیح داده شده است: + +- بدون اعتماد\*\*: داشتن امنیت معادل با دامنه های زیر ساخت. که توسط آرجون بوپتانی در این مقاله توضیح داده شده است + + - در مدل دارای اعتماد:\*\* با افزودن تاییدکننده‌های بیرونی،‌ میزان امنیت از سطح زیرساخت خارج می‌شود که این کار باعث کاهش امنیت اقتصادی رمز ارز می شود. + + برای این که تفاوت های اساسی بین دو روش بهتر جا بیفتد یک مثال ارائه می شود: + + فرض کنید شما داخل گیت امنیتی فرودگاه هستید. دو روش برای گیت کنترل وجود دارد: + + 1. روش دستی - که تمام جزئیات بلیت و کارت شناسایی توسط افسران مربوطه قبل از دادن کارت پرواز انجام می شود. + +2. کنترل توسط خودتان - با دستگاه انجام می شود که در آن اطلاعات پروازتان را وارد می‌کنید و اگر همه چیز درست باشد، کارت پرواز را دریافت می‌کنید. + +نقاط کنترل دستی، شبیه به حالتی است که برای مثال افسران به عنوان شخص سوم مدارک شما را بررسی می کند. به عنوان کاربر به مراکز معتبر اعتماد می کنید تا تصمیم درست را بگیرند و از اطلاعات خصوصی شما به درستی استفاده کنند. + +مدلی که توسط خود کاربر چک می شود مشابه مدل بدون نیاز به اعتماد می باشد، چون نقش اپراتور حذف می شود و با کمک تکنولوژی امور مربوطه را انجام می دهد. کاربر همیشه کنترل اطلاعات شخصی خود را بدون اعتماد به شخص ثالث در اختیار دارد. + +بسیاری از پلها مدلهای مابین این دو حالت معرفی می کنند و دارای درجه ای از عدم نیاز به اعتماد هستند. + + + +## خطر استفاده از پلها {#bridge-risk} + +پلها در مرحله ابتدایی توسعه می باشند. به عبارتی طراحی بهینه پلها هنوز به صورت کامل کشف نشده است. استفاده از هر کدام از پلها خطر مربوط به خود را دارد: + +- خطر قرارداد هوشمند —\*\* وجود باگ در کد ممکن است باعث از بین رفتن دارایی بشود + + - خطر تکنولوژی—\*\* خطای نرم افزاری و باگ کد و خطای انسانی و حملات خرابکاری احتمال دارد اقدامات کاربران را مختل کند + + با این حال پلهای نیازمند به اعتماد از آنجا که تصورهای اعتماد را افزایش می‌دهند، می توانند خطرات مضاعفی را به همراه داشته باشند، مثل: + + - خطر سانسور—\*\* کنترل کنندگان پل به صورت تئوریک می توانند کاربران را از انتقال دارایی هایشان در پل منع کنند + + - خطر سرپرستی—\*\* کنترل کنندگان پل حتی می توانند اقدام به تبانی برای دزدی دارایی های کاربران کنند دارایی های کابرها در خطر هستند اگر: + + - یک باگ در قرارداد هوشمند باشد + +- کاربر مرتکب خطا شود +- بلاکچین مورد استفاده هک شود +- اپارتورهای پل در پلهای نیاز به اعتماد صادق نباشند +- پل هک شود + +یکی از آخرین هکهای اتفاق افتاده مربوط به پل، [Wormhole از Solana می باشد که در آن 120000 رپد اتر معادل 325 میلیون دلار دزدیده شد](https://rekt.news/wormhole-rekt/). بسیاری از [هکهای بزرگ در بلاک چین از طریق پلها اتفاق می افتد](https://rekt.news/leaderboard/). + +پلها برای کسانی که می خواهند به اتریوم لایه 2 بروند و همچنین برای کسانی که می خواهند اکوسیستمهای دیگر را کشف کنند دارای نقش حیاتی هستند. با این حال با توجه به خطرات مرتبط با پل‌ها، کاربران باید مبادلاتی را که پلها انجام می‌دهند بفهمند. برخی از [استراتژی های امنیت کراس‌چین](https://blog.debridge.finance/10-strategies-for-cross-chain-security-8ed5f5879946). + + + +## بیشتر بخوانید {#further-reading} + +- [EIP-5164: اجرای کراس‌چین](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658)_تاریخ 18 ژوئن 2022 - برندان اسلتاین_ +- [چارچوب ریسک L2Bridge](https://gov.l2beat.com/t/l2bridge-risk-framework/31)_تاریخ 5 ژوئیه 2022 - بارتک کیپوسوسکی_ +- [«چرا در آینده به سمت چند زنجیره‌ای پیش می رویم نه کراس چین.»](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/)_تاریخ 8 ژانویه 2022 - ویتالیک بوترین_ +- [پلهای بلاک چینی چه هستند و چگونه آنها را دسته بندی کنیم؟](https://blog.li.finance/what-are-blockchain-bridges-and-how-can-we-classify-them-560dc6ec05fa)_تاریخ 18 فوریه 2021 - آرجون چاند_ +- [کراس چین‌ها چه هستند؟](https://www.alchemy.com/overviews/cross-chain-bridges)_تاریخ 10 می 2022 - الکمی_ +- پل‌های بلاک‌چین:‌ساختن شبکه‌های رمز ارز*8 سپتامبر 2021 - دیمیتری برنزون* +- [پل ها در فضای کریپو](https://medium.com/chainsafe-systems/bridges-in-crypto-space-12e158f5fd1e)_تاریخ 23 اوت 2021 - بن آدار هیمان_ +- [انتخاب سخت قابلیت استفاده متقابل](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17)_تاریخ 1 اکتبر 2021 - آرجون بوپتانی_ +- [امنیت پلها: انجام درست ارتباط بین زنجیره‌ای](https://medium.com/dragonfly-research/secure-the-bridge-cross-chain-communication-done-right-part-i-993f76ffed5d)_تاریخ 23 اوت 2021 - سلیا وان_ diff --git a/src/content/translations/fa/community/code-of-conduct/index.md b/src/content/translations/fa/community/code-of-conduct/index.md new file mode 100644 index 00000000000..8aba2389696 --- /dev/null +++ b/src/content/translations/fa/community/code-of-conduct/index.md @@ -0,0 +1,75 @@ +--- +title: آیین‌نامه رفتاری +description: استانداردهای اصلی که ما در کل فضای ethereum.org برای آن‌ها تلاش می‌کنیم. +lang: fa +--- + +## مأموریت {#mission} + +توسعه و حفظ جامع‌ترین و دسترس‌پذیرترین مرکز دانش برای شبکۀ اتریوم. + +## ارزش‌ها {#values} + +جامعۀ ethereum.org در تلاش است که این‌گونه باشد: + +- آموزشی؛ با قصد کمک به همه افراد در فهمیدن اتریوم +- فراگیر +- در دسترس +- جامعه-محور +- متمرکز بر تکنولوژی و کاربردهای اصلی اتریوم +- متمرکز بر معنای کلی و اصول طراحی اتریوم + +## آنچه ما نیستیم {#what-we-are-not} + +- وبسایت بنیاد اتریوم +- یک پلتفرم برای ترویج سرمایه‌گذاری و یا کسب سود از هر نوعی +- پلتفرمی برای ارتقا یا حمایت از پروژه‌ها یا سازمان‌ها +- یک DEX یا CEX یا نوع دیگری از پلتفرم‌های مالی +- پلتفرمی که مشاورۀ مالی یا حقوقی از هر نوع ارائه می‌دهد + +## آیین‌نامه رفتاری {#code-of-conduct} + +### تعهد {#pledge} + +مشارکت باز و آزادانه، هستۀ اصلی صفات و شخصیت جامعۀ ethereum.org است. ما یک وبسایت و جامعه‌ای استقراریافته توسط هزاران مشارکت‌کننده هستیم که فقط از طریق ایجاد یک محیط مشارکتی و پذیرا امکان‌پذیر است. برای این مقصود، مشارکت‌کنندگان تعهد می‌دهند که یک محیط عاری از تعرض و آزار برای تمام اعضای مشارکت‌جو در هر یک از پلتفرم‌ها و انجمن‌های ethereum.org به وجود آورند. وبسایت ethereum.org پذیرای هر فردی است که به مشارکت سازنده و دوستانه علاقه دارد و بدون توجه به سن، قومیت، جنسیت، هویت، سطح مهارت و تجربه، زمینۀ کاری، تحصیلات، وضعیت اقتصادی-اجتماعی، ملیت، ظاهر شخصی، نژاد، مذهب یا هر بُعد دیگر گوناگونی، به آن‌ها ارزش می‌نهد. + +### محدوده {#scope} + +این آیین‎‌نامۀ رفتاری در تمام فضای کاری ethereum.org مانند GitHub، Discord، Twitter، Figma Crowdin و سایر پلتفرم‌های آنلاین و همچنین هر جا که این جامعه در فضای عمومی دنیای واقعی (نشست‌ها، کنفرانس‌ها و رویدادها) ظاهر می‌شود، صادق است. + +### استانداردهای ما {#our-standards} + +مثال‌های رفتاری که به ایجاد یک محیط سازنده و مثبت کمک می‌کند شامل این موارد است: + +- استفاده از زبان خوشایند و فراگیر +- محترم شمردن تجربیات و دیدگاه‌های متفاوت +- پذیرش موقرانه و یا طرح همدلانۀ انتقاد‌های سازنده +- حفظ آرامش و رفتار حرفه‌ای هنگام حل تعارض‌ها و اختلاف نظر +- نشان دادن همدلی و بردباری در مواجهه با سایر اعضای جامعه +- تشویق و تقویت آرا و نظرات جدید در جامعه + +مثال‌های رفتارهای غیرقابل پذیرش از سوی اعضا شامل این موارد است: + +- خشونت فیزیکی، خشونت تهدید آمیز یا ترغیب و ترویج خشونت فیزیکی از هر نوع +- استفاده از زبان و تصاویر جنسیت‌زده یا تحمیل توجه جنسی ناخواسته +- جعل هویت سایرین یا ادعای دروغِ داشتن رابطه با یک فرد یا سازمان. +- مسخره کردن، نظرات توهین‌آمیز یا تحقیرآمیز و حملات شخصی یا سیاسی +- آزار رساندن به سایر اعضای جامعه در کانال‌های عمومی و خصوصی +- منتشر کردن اطلاعات خصوصی دیگران مانند آدرس فیزیکی یا الکترونیکی، بدون اجازۀ صریح +- مهندسی اجتماعی، اسکم کردن یا اعمال نفوذ بر اعضای جامعه +- تبلیغ و ترویج فرصت‌های سرمایه‌گذاری‌، توکن‌ها، پروژه‌ها یا هر نوع دیگر از عایدی شخصی مالی یا غیرمالی +- ارسال اطلاعات هرز به سرور با موضوعات غیرمرتبط +- بی‌اعتنایی به درخواست‌ها و هشدارهای مدیران انجمن‌ها و جوامع +- اقدام به هر گونه رفتار دیگر که در یک محیط حرفه‌ای می‌تواند نامناسب پنداشته شود + +### گزارش‌دهی {#reporting} + +تخطی از آیین‌نامه رفتاری، اغلب بر اعضای جامعه آشکار خواهد بود چون ما هر کاری را در کانال‌ها و فضای باز و عمومی انجام می‌دهیم، در واقع می‌گذاریم خودِ اعضای جامعه، پلیس باشند و نظم را برقرار کنند. + +به هر حال اگر اتفاقی افتاد که از نظرتان نیاز به توجه و رسیدگی دارد، می‌توانید آن را با فردی که نقش میانجی‌گری دارد (برای مثال راهنمای دیسکورد) مطرح کنید تا بتوانند به فرایند بررسی و واکنش مناسب کمک کنند. + +هنگام گزارش‌دهی بهتر است تا جایی که می‌توانید جزئیات مختلف مانند مثال‌های خاص و برچسب‌های زمان را درج کنید. این کار در دست‌یابی به نتیجه‌ای عادلانه اثربخش است. + +### اعمال قانون {#enforcement} + +افرادی که قوانین رفتاری را نقض کنند، بسته به شدت عمل ممکن است هشدار بگیرند، به صورت موقت محروم شوند یا مشمول ممنوعیت دائمی از جامعۀ ethereum.org شوند. diff --git a/src/content/translations/fa/community/get-involved/index.md b/src/content/translations/fa/community/get-involved/index.md index d31ac3b66fc..57163a4f052 100644 --- a/src/content/translations/fa/community/get-involved/index.md +++ b/src/content/translations/fa/community/get-involved/index.md @@ -8,6 +8,8 @@ lang: fa جامعه‌ی اتریوم شامل افرادی با زمینه‌ها و مهارت‌های مختلف است. فرقی نمی‌کند توسعه‌دهنده باشد، هنرمند یا حسابدار؛ راه‌هایی برای مشارکت وجود دارد. در اینجا فهرستی از پیشنهاداتی که ممکن است به شما در شروع کار کمک کند، وجود دارد. +با مطالعه ماموریت و ارزش های ethereum.org در [منشور اخلاقی](/community/code-of-conduct) ما شروع کنید. + ## توسعه‌دهندگان {#developers} - در [ethereum.org/developers/](/developers/) درباره اتریوم یاد بگیرید و آن را امتحان کنید @@ -21,14 +23,24 @@ lang: fa ## محققان و دانشگاهیان ‍ {#researchers-and-academics} -آیا سابقه‌ای در زمینه ریاضیات، رمزنگاری یا اقتصاد دارید؟ ممکن است به برخی از کارهای پیشرفته‌ای که در اکوسیستم اتریوم انجام می‌شود علاقه‌مند باشید - -- [Challenges.ethereum.org](https://challenges.ethereum.org/) - مجموعه‌ای از جایزه‌های تحقیقاتی با ارزش، که در آن می‌توانید تا 100,000 دلار آمریکا کسب کنید +آیا سابقه‌ای در زمینه ریاضیات، رمزنگاری یا اقتصاد دارید؟ ممکن است به برخی از کارهای پیشرفته‌ای که در اکوسیستم اتریوم انجام می‌شود علاقه‌مند باشید: + +- نوشتن یا بررسی یک پیشنهاد بهبود اتریوم + - یک EIP (پیشنهاد بهبود اتریوم) بنویسید + 1. ایده خود را در [Ethereum Magicians](https://ethereum-magicians.org) ارسال کنید + 2. [EIP-1](https://eip.ethereum.org/EIPS/eip-1) را بخوانید - **بله، این _کل_ سند است.** + 3. دستورالعمل ها را در EIP-1 دنبال کنید. در حین نگارش پیش نویس، به آن ارجاع دهید. + - یاد بگیرید که چگونه یک [ویرایشگر EIP](https://eips.ethereum.org/EIPS/eip-5069) شوید + - حالا می توانید EIPها را مورد بازبینی قرار دهید! [PRهای موجود با تگ`e-review` را مشاهده کنید](https://github.com/ethereum/EIPs/pulls?q=is%3Apr+is%3Aopen+label%3Ae-review). بازخورد فنی را با کلیک بر `discussion-to` ثبت کنید. + - در [حاکمیت پیشنهادهای بهبود اتریوم](https://github.com/ethereum-cat-herders/EIPIP) مشارکت کنید + - به [Ethereum Cat Herders Discord](https://discord.io/EthCatHerders) بپیوندید + - [اطلاعات بیشتر درباره EIPها](/eips/) +- [Challenges.ethereum.org](https://challenges.ethereum.org/) - مجموعه‌ای از جایزه‌های تحقیقاتی با ارزش، که در آن می‌توانید تا >100,000 دلار آمریکا کسب کنید - [Ethresear.ch](https://ethresear.ch) - انجمن اصلی اتریوم برای تحقیقات، و تأثیرگذارترین انجمن جهان برای اقتصاد رمزنگاری -- [EF Research AMA](https://old.reddit.com/r/ethereum/comments/vrx9xe/ama_we_are_ef_research_pt_8_07_july_2022) - مجموعه‌ای ادامه‌دار از پرسش و پاسخ با پژوهشگران. با باز شدن هر قسمت جدید، هر کسی می‌تواند سؤالاتش را ارسال کند. -- [فهرست نیازمندی‌های برنامه‌ی پشتیبانی اکوسیستم](https://esp.ethereum.foundation/wishlist/) - زمینه‌های تحقیقاتی که برنامه‌ی پشتیبانی اکوسیستم اتریوم فعالانه به دنبال درخواست‌های کمک مالی است +- [EF Research AMA](https://old.reddit.com/r/ethereum/comments/vrx9xe/ama_we_are_ef_research_pt_8_07_july_2022) - مجموعه‌ای ادامه‌دار از پرسش &و پاسخ با پژوهشگران. با باز شدن هر قسمت جدید، هر کس می‌تواند سؤالاتش را ارسال کند. +- [فهرست نیازمندی‌های برنامه‌ پشتیبانی اکوسیستم](https://esp.ethereum.foundation/wishlist/) - زمینه‌های تحقیقاتی که در آنها برنامه‌ پشتیبانی اکوسیستم اتریوم فعالانه به دنبال درخواست‌های کمک مالی است -[حیطه‌های پژوهشی فعال بیشتری را مشاهده کنید](/community/research/). +[حیطه‌های پژوهشی فعال بیشتری را کشف کنید](/community/research/). ## مجموعه‌ی مهارت‌های غیرفنی {#non-technical} @@ -41,7 +53,7 @@ lang: fa ### در مورد اتریوم مطلب بنویسید {#write-content} - اتریوم نیاز به نویسندگان خوبی دارد که بتوانند ارزش آن را به زبان ساده توضیح دهند -- برای انتشار مقالات خود آماده نیستید؟ مشارکت در تولید محتوای موجود در منابع انجمن مانند را در نظر بگیرید، یا محتوای جدیدی را برای ethereum.org پیشنهاد دهید! +- برای انتشار مقالات خود آماده نیستید؟ کمک به بهبود مطالب و مقالات کنونی موجود در منابع جامعه اتریوم، یا [پیشنهاد محتوای جدید برای ethereum.org](/contributing/) را به عنوان راهی برای مشارکت در نظر بگیرید! ### پیشنهاد یادداشت‌برداری برای تماس‌های انجمن {#take-notes} @@ -54,26 +66,26 @@ lang: fa ### راه‌اندازی یک گره {#run-a-node} -به هزاران عملگر گره بپیوندید تا به تمرکززدایی بیشتر اتریوم کمک کنید. +به هزاران اپراتور گره بپیوندید تا به تمرکززدایی بیشتر اتریوم کمک کنید. - [اطلاعات بیشتر در مورد نحوه‌ی اجرای یک گره](/developers/docs/nodes-and-clients/run-a-node/) ### اتر خود را سهام‌گذاری کنید {#staking} -با سهام‌گذاری اتریوم خود می‌توانید پاداش به دست آورید و در عین حال به ایمن‌سازی شبکه‌ی اتریوم کمک کنید. +با سهام‌گذاری ETH خود می‌توانید پاداش به دست آورید و در عین حال به ایمن‌سازی شبکه‌ اتریوم کمک کنید. - [اطلاعات بیشتر درباره سرمایه‌گذاری](/staking/) ### حمایت از پروژه‌ها {#support-projects} -اکوسیستم اتریوم به دنبال تأمین مالی کالاهای عمومی و پروژه‌های تأثیرگذار است. با کمک‌های مالی بسیار کوچک می‌توانید حمایت خود را نشان دهید و اجازه دهید کارهای مهم محقق شود. +اکوسیستم اتریوم به دنبال تأمین مالی کالاهای عمومی و پروژه‌های تأثیرگذار است. با کمک‌های مالی بسیار کوچک می‌توانید حمایت خود را نشان دهید و کمک کنید کارهای مهم محقق شود. - [Gitcoin](https://gitcoin.co/fund) - [clr.fund](https://clr.fund/#/about) ## متخصصان مالی و حسابداران {#financial-professionals} -- اتریوم خانه‌ی اکوسیستم «امور مالی غیرمتمرکز» است - شبکه‌ای از پروتکل‌ها و برنامه‌های کاربردی که یک سیستم مالی جایگزین را ارائه می‌دهد. اگر در امور مالی حرفه‌ای هستید، برخی از برنامه های دیفای را در [DeFi Llama](https://defillama.com/) یا [DeFiPrime](https://defiprime.com) بررسی کنید +- اتریوم خانه‌ی اکوسیستم «امور مالی غیرمتمرکز» است - شبکه‌ای از پروتکل‌ها و برنامه‌های کاربردی که یک سیستم مالی جایگزین را ارائه می‌دهد. اگر در امور مالی حرفه‌ای هستید، به برخی اپلیکیشن‌های اقتصادی غیرمتمرکز (DeFi) در [DeFi Pulse](https://defillama.com/) یا [DeFiPrime](https://defiprime.com) سر بزنید - حسابدار هستید؟ دارایی‌های موجود در اتریوم - اتر، توکن‌ها، دیفای و غیره - بسیاری از مسائل جدید حسابداری را معرفی می‌کنند. می‌توانید با بررسی پروژه‌هایی که هدفشان کمک به کاربران ارزهای دیجیتال برای حل چالش‌های دفترداری و حسابداری است، مانند [Rotki](https://rotki.com/)، شروع کنید ## مدیران محصول ‍ {#product-managers} @@ -100,10 +112,12 @@ lang: fa - [فرصت‌های شغلی وب 3](https://web3.career) - [Web3 Army](https://web3army.xyz/) - [فرصت‌های شغلی Crypto Valley](https://cryptovalley.jobs/) +- [فرصت‌های شغلی اتریوم](https://startup.jobs/ethereum-jobs) +- [CryptoJobster](https://cryptojobster.com/tag/ethereum/) ## پیوستن به DAO {#decentralized-autonomous-organizations-daos} -«DAOها» سازمان‌های مستقل غیرمتمرکز هستند. این گروه‌ها از فناوری اتریوم برای تسهیل سازماندهی و همکاری استفاده می‌کنند. به عنوان مثال، برای کنترل عضویت، رأی دادن در مورد پیشنهادها، یا مدیریت دارایی‌های مشارکتی. درست است که DAOها هنوز آزمایشی هستند، اما فرصت‌هایی را برای شما فراهم می کنند تا گروه‌هایی را که با آن‌ها همسو هستید پیدا کنید و تأثیر خود را روی جامعه‌ی اتریوم افزایش دهید. [درباره‌ی DAOها بیشتر بدانید](/dao/) +«DAOها» سازمان‌های مستقل غیرمتمرکز هستند. این گروه‌ها از فناوری اتریوم برای تسهیل سازماندهی و همکاری استفاده می‌کنند. به عنوان مثال، برای کنترل عضویت، رأی دادن در مورد پیشنهادها، یا مدیریت دارایی‌های مشارکتی. درست است که DAOها هنوز آزمایشی هستند، اما فرصت‌هایی را برای شما فراهم می کنند تا گروه‌هایی را که با آن‌ها همسو هستید پیدا کنید و تأثیر خود را روی جامعه‌ اتریوم افزایش دهید. [درباره‌ DAOها بیشتر بدانید](/dao/) - [DAOSquare](https://www.daosquare.io) [@DAOSquare](https://twitter.com/DAOSquare) - _مفهوم DAO را در زمینه غیر فناوری ترویج می‌کند و به مردم کمک در ایجاد ارزش از طریق DAO کمک می‌کند_ - [Developer DAO](https://www.developerdao.com/) [@developer_dao](https://twitter.com/developer_dao) - _جامعه‌ی سازندگانی که به مالکیت جمعی اینترنت اعتقاد دارند_ @@ -120,3 +134,5 @@ lang: fa - [ΜΓΔ](https://metagammadelta.com/) (متا گاما دلتا) [@metagammadelta](https://twitter.com/metagammadelta) - _پروژه‌های تحت هدایت زنان_ - [MolochDAO](https://molochdao.com) [@MolochDAO](https://twitter.com/MolochDAO) - _جامعه‌ای با تمرکز بر تأمین مالی توسعه‌ی اتریوم_ - [Raid Guild](https://raidguild.org) [@RaidGuild](https://twitter.com/RaidGuild) - _مجموعه‌ی سازندگان Web3_ + +لطفا هر زمان خواستید در ethereum.org مشارکت کنید به یاد داشته باشید از [منشور اخلاقی](/community/code-of-conduct) ethereum.org پیروی کنید! diff --git a/src/content/translations/fa/community/grants/index.md b/src/content/translations/fa/community/grants/index.md index 692a73a6c09..4d593e28199 100644 --- a/src/content/translations/fa/community/grants/index.md +++ b/src/content/translations/fa/community/grants/index.md @@ -20,7 +20,8 @@ lang: fa - [Moloch DAO](https://www.molochdao.com/) - _حریم خصوصی، مقیاس‌پذیری لایه‌ی 2، امنیت کلاینت و غیره_ - [Open Grants](https://opengrants.com/explore) - [ کمک‌های مالی DAO](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) - _صفحه‌گسترده Google از سازمان‌های ارائه‌دهنده‌ی کمک‌هزینه_ -- [کمک‌های مالی لایه 2](https://esp.ethereum.foundation/layer-2-grants) - _بنیاد اتریوم برای پشتیبانی از برنامه‌های لایه 2 حمایت مالی ، تجزیه و تحلیل و آموزش ارائه می‌کند_ +- [Crunchbase برای حمایت های مالی Web3](https://www.cryptoneur.xyz/web3-grants)-_فیلتر و جست و جوی کمک های مالی بر اساس دسته،کاربرد، مقدار، و غیره. مشارکت کنید تا دیگران کمک مالی مورد نیاز خود را بهتر بیابند._ +- [کمک های مالی تحصیلی](https://esp.ethereum.foundation/academic-grants)-_کمک های مالی برای تحقیقات آکادمیک مربوط به اتریوم_ ## خاص هر پروژه {#project-specific} @@ -29,13 +30,15 @@ lang: fa - [برنامه‌ی کمک‌های مالی Aave](https://aavegrants.org/) - _[Aave](https://aave.com/) DAO_ را اعطا می‌کند - [Balancer](https://balancergrants.notion.site/Balancer-Community-Grants-23e562c5bc4347cd8304637bff0058e6) – _صندوق اکوسیستم [Balancer](https://balancer.fi/)_ - [Chainlink Grants Program](https://chain.link/community/grants) - _ کمک‌های مالی اجتماعی [Chainlink](https://chain.link/)_ -- [برنامه‌ی کمک‌های مالی Compound](https://compoundgrants.org/) - اکوسیستم مالی _[Compound](https://compound.finance/)_ -- [سازمان کمک‌های مالی اکوسیستم Lido‏ (LEGO)](https://lego.lido.fi/) – _[اکوسیستم تأمین مالی Lido](https://lido.fi/)_ -- [برنامه‌ی MetaMask‏](https://metamaskgrants.org/) - _سازمان مستقل غیرمتمرکز کمک‌های مالی کارمندمحور_ -- [برنامه‌ی کمک هزینه mStable](https://docs.mstable.org/advanced/grants-program) - _انجمن [mStable](https://mstable.org/)_ +- [برنامه‌ی کمک‌های مالی Compound](https://compoundgrants.org/) - اکوسیستم مالی \_[Compound](https://compound.finance/) +- [برنامه کمک‌های مالی Decentraland](https://governance.decentraland.org/grants/) – _[Decentraland](https://decentraland.org/) DAO Metaverse_ +- [سازمان کمک‌های مالی اکوسیستم لیدو (LEGO)](https://lego.lido.fi/) - اکوسیستم مالی[Lido](https://lido.fi/) +- [برنامه MetaMask](https://metamaskgrants.org/) - _[MetaMask](https://metamask.io/) سازمان مستقل غیرمتمرکز کمک‌های مالی کارمندمحور_ +- [برنامه‌ کمک هزینه mStable](https://docs.mstable.org/advanced/grants-program) - انجمن _[mStable](https://mstable.org/)_ +- [برنامه حمایت مالی شبکه (SKALE)](https://skale.space/developers#grants)-_اکوسیستم[شبکه SKALE](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/)_ +- [برنامه‌ کمک‌های مالی UMA](https://grants.umaproject.org/) - _[ حمایت مالی از برنامه‌نویسان UMA](https://umaproject.org/)_ +- [برنامه‌ کمک مالی Uniswap](https://www.unigrants.org/) - _جامعه‌ [Uniswap](https://uniswap.org/)_ - [کمک‌های مالی Web3](https://web3grants.net) - _یک فهرست گسترده از برنامه‌های کمک‌های مالی مرتبط با web3/رمزارز_ ## کمک مالی درجه‌ی دوم {#quadratic-funding} diff --git a/src/content/translations/fa/community/online/index.md b/src/content/translations/fa/community/online/index.md index 4385f4afde7..d0d11b6b668 100644 --- a/src/content/translations/fa/community/online/index.md +++ b/src/content/translations/fa/community/online/index.md @@ -24,12 +24,12 @@ lang: fa Cat Herderهای اتریوم - جامعه‌ای با محوریت ارائه‌ی کمک در بحث مدیریت پروژه برای توسعه‌ی اتریوم هکرهای اتریوم - فضای گفتگوی Discord تحت مدیریت ETHGlobal: یک انجمن آنلاین برای هکرهای اتریوم در سراسر جهان CryptoDevs - انجمن Discord متمرکز بر توسعه‌ی اتریوم -EthStaker Discord - جامعه‌ای با محوریت ارائه‌ی کمک در بحث مدیریت پروژه برای توسعه‌ی اتریوم +دیسکورد EthStaker - راهنمایی، آموزش، حمایت و مجموعه منابعی برای سهام گذاران کنونی و آینده که از سوی اعضای جامعه Ethstaker تهیه شده و اداره میشود تیم وب سایت Ethereum.org - با تیم و افراد جامعه توسعه و طراحی وب ethereum.org گفتگو کنید -Matos Discord - جامعه‌ی خالقان web3 که در آن سازندگان، چهره‌های مطرح صنعت و علاقه‌مندان به اتریوم دور هم جمع می‌شوند. ما مشتاق توسعه، طراحی و فرهنگ وب 3 هستیم. بیایید در ساختن، همراه ما شوید. -Solidity Gitter - تالار گفتگو برای توسعه‌ی solidity‏ (Gitter) -Solidity Matrix - تالار گفتگو برای توسعه‌ی solidity‏ (Matrix) -Ethereum Stack Exchange _- انجمن پرسش و پاسخ_ +دیسکورد Matos - جامعه‌ خالقان web3 که در آن سازندگان، چهره‌های مطرح صنعت و علاقه‌مندان به اتریوم دور هم جمع می‌شوند. ما مشتاق توسعه، طراحی و فرهنگ Web3 هستیم. بیایید در ساختن، همراه ما شوید. +Solidity Gitter - فضای گفتگو برای توسعه‌ solidity (Gitter) +Solidity Matrix - فضای گفتگو برای توسعه‌ solidity (Matrix) +بورس سهام اتریوم _- انجمن پرسش و پاسخ_ Peeranha _- انجمن پرسش و پاسخ غیرمتمرکز_ ## یوتیوب و توییتر {#youtube-and-twitter} diff --git a/src/content/translations/fa/community/research/index.md b/src/content/translations/fa/community/research/index.md new file mode 100644 index 00000000000..f681286f77d --- /dev/null +++ b/src/content/translations/fa/community/research/index.md @@ -0,0 +1,396 @@ +--- +title: حوزه‌های تحقیقات در حال انجام در اتریوم +description: حوزه‌های مختلف تحقیق باز را کاوش کنید و یاد بگیرید که چگونه درگیر مشارکت کنید. +lang: fa +--- + +# حوزه‌های تحقیقات در حال انجام در اتریوم {#active-areas-of-ethereum-research} + +یکی از نقاط قوت اولیه اتریوم این است که گروهی از محققان و مهندسان به‌صورت پیوسته در حال بهبود آن هستند. بسیاری از افراد ماهر و مشتاق در سرتاسر جهان مشتاقند که در زمینه‌ مسائل مهم اتریوم مشغول به کار شوند اما فهمیدن آن که کدام مسائل در درجه اول از اهمیت قرار دارند همیشه آسان نیست. این صفحه، به عنوان یک راهنمایی کلی درباره آخرین پیشرفتهای اتریوم، به حوزه‌های تحقیقاتی مهم و کلیدی اشاره می‌کند. + +## تحقیق اتریوم چگونه انجام می‌شود {#how-ethereum-research-works} + +تحقیق اتریوم روشن و شفاف است و به اصول [علم غیرمتمرکز (DeSci)](https://hackernoon.com/desci-decentralized-science-as-our-chance-to-recover-the-real-science) پایبند است. یکی از اصول اتریوم این است که ابزارها و خروجی‌های تحقیق تا حد امکان در دسترس و تعاملی باشند، مثلاً از طریق دفترچه‌های قابل اجرا. تحقیقات اتریوم با سرعت بالایی انجام می‌شوند و یافته‌های جدید، به جای اینکه پس از بررسی متخصصان به صورت سنتی منتشر شود و به جامعه برسد در انجمن‌هایی مانند [ethresear.ch](https://ethresear.ch/) منتشر می‌شوند و مورد بحث قرار می‌گیرند. + +## منابع تحقیقاتی عمومی {#general-research-resources} + +صرف نظر از این موضوع مشخص، اطلاعات زیادی درباره تحقیقات اتریوم در [ethresear.ch](https://ethresear.ch) و کانال [Eth R&D Discord](https://discord.gg/qGpsxSA) دردسترس عموم قرار گرفته است. این دو اصلی‌ترین منابعی‌اند که محققان اتریوم درباره آخرین ایده‌ها و فرصت‌های توسعه در آن‌جا بحث و تبادل نظر می‌کنند. + +این گزارش که در می 2022 توسط [DelphiDigital](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum) منتشر شد نمای کلی خوبی از نقشه راه اتریوم ارائه می‌دهد. + +## منابع کمک‌های مالی {#sources-of-funding} + +شما می‌توانید برای شرکت در پروژه‌های تحقیقاتی اتریوم دستمزد بگیرید! به عنوان مثال، [بنیاد اتریوم](/foundation/) اخیراً یک [سری کمک هزینه مالی تحصیلی](https://esp.ethereum.foundation/academic-grants) ارائه کرد. می‌توانید اطلاعات مربوط به فرصت‌های مالی فعلی و آینده را در [ صفحه کمک‌های مالی اتریوم](/community/grants/) پیدا کنید. + +## تحقیقات پروتکل {#protocol-research} + +تحقیقات پروتکل به لایه پایه اتریوم برمی‌گردد - این لایه مجموعه‌ای از قوانینی‌ست که نحوه اتصال، ارتباط، تبادل و ذخیره داده‌های اتریوم توسط نودها را تعریف می‌کنند و در مورد وضعیت بلاکچین به اجماع می‌رسند. تحقیقات پروتکل به دو دسته تقسیم می‌شود: اجماع و اجرا. + +### اجماع {#consensus} + +تحقیقات اجماع با [مکانیسم اثبات سهام اتریوم](/developers/docs/consensus-mechanisms/pos/) در ارتباط است. چند نمونه از موضوعات تحقیق اجماع عبارتند از: + +- شناسایی و اصلاح آسیب‌پذیری‌ها؛ +- کمی کردن امنیت رمزنگاری‌شده؛ +- افزایش امنیت یا عملکرد اجراهای کاربر؛ +- توسعه کاربرهای سبک. + +علاوه بر تحقیقات آینده‌نگر، برای بهبود عمده اتریوم، در حال حاضر تحقیق روی برخی از طراحی‌های مجدد و مهم پروتکل، مانند نهایی شدن تک اسلات، نیز در جریان است. علاوه بر این، کارایی، ایمنی و نظارت بر شبکه‌های همتا به همتا بین کاربرهای اجماع نیز از موضوعات مهم تحقیقاتی است. + +#### پیشینه مطالعاتی {#background-reading} + +- [Introduction to proof-of-stake](/developers/docs/consensus-mechanisms/pos/) +- [Casper-FFG paper](https://arxiv.org/abs/1710.09437) +- [توضیح‌دهنده Casper-FFG](https://arxiv.org/abs/1710.09437) +- [Gasper paper](https://arxiv.org/abs/2003.03052) + +#### جدیدترین تحقیقات {#recent-research} + +- [اجماع Ethresear.ch](https://ethresear.ch/c/consensus/29) +- [معضل دسترسی/قطعیت](https://arxiv.org/abs/2009.04987) +- [قطعیت اسلات منفرد](https://ethresear.ch/t/a-model-for-cumulative-committee-based-finality/10259) +- [جداسازی سازنده-پیشنهاددهنده](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance) + +### اجرا {#execution} + +لایه اجرا، به اجرای تراکنش‌ها، اجرای [ماشین مجازی اتریوم (EVM)](/developers/docs/evm/) و ساخت ظرفیت ترابری اجرایی برای انتقال به لایه اجماع مربوط می‌شود. در این حوزه موضوعات متنوعی برای تحقیق وجود دارد، از جمله: + +- پشتیبانی سبک از کاربر؛ +- تحقیق در مورد حد گاز؛ +- و ترکیب ساختارهای داده جدید (به‌عنوان مثال Verkle Tries). + +#### پیشینه مطالعاتی {#background-reading-1} + +- [مقدمه‌ای بر EVM](/developers/docs/evm) +- [لایه اجرای Ethresear.ch](https://ethresear.ch/c/execution-layer-research/37) + +#### جدیدترین تحقیقات {#recent-research-1} + +- [بهینه‌سازی پایگاه داده](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/db_faq.md) +- [انقضا حالت](https://notes.ethereum.org/@vbuterin/state_expiry_eip) +- [مسیرهای منقضی شدن وضعیت](https://hackmd.io/@vbuterin/state_expiry_paths) +- [طرح Verkel و منقضی شدن وضعیت](https://notes.ethereum.org/@vbuterin/verkle_and_state_expiry_proposal) +- [مدیریت تاریخچه فعالیت‌ها](https://eips.ethereum.org/EIPS/eip-4444) +- [درختان ورکل](https://vitalik.ca/general/2021/06/18/verkle.html) +- [نمونه‌گیری دسترسی داده‌ها](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding) + +## توسعه کاربر {#client-development} + +کاربرهای اتریوم در واقع پیاده‌سازی پروتکل این شبکه‌اند. توسعه کاربر نتایج تحقیقات پروتکل را با ساختن آن‌ها در این کاربرها به واقعیت تبدیل می‌کند. توسعه کاربر شامل به روز رسانی ویژگی‌های کاربر و ایجاد روندهای اجرایی ویژه دیگر است. + +برای اجرای دو بخش از نرم‌افزار به یک گره اتریوم نیاز است: + +1. کاربر اجماع برای ردیابی راس بلاکچین، بلوک‌های بی‌مورد و مدیریت منطق اجماع +2. کاربر اجرایی برای پشتیبانی از ماشین مجازی اتریوم و اجرای تراکنش‌ها و قراردادهای هوشمند + +برای جزئیات بیشتر در مورد گره‌ها و کاربرها و فهرستی از تمام کاربرهای فعلی، به [صفحه گره‌ها و کاربرها](/developers/docs/nodes-and-clients/) مراجعه کنید. همچنین می‌توانید تاریخچه تمام به‌روزرسانی‌های اتریوم را در [صفحه تاریخچه](/history/) پیدا کنید. + +### کاربرهای اجرا {#execution-clients} + +- [مشخصات کاربر اجرا](https://github.com/ethereum/execution-specs) +- [مشخصات API اجرا](https://github.com/ethereum/execution-apis) + +### کاربرهای اجماع {#consensus-clients} + +- [مشخصات کاربر اجماع](https://github.com/ethereum/consensus-specs) +- [مشخصات Beacon API](https://ethereum.github.io/beacon-APIs/#/Beacon/getStateRoot) + +## مقیاس‌پذیری و عملکرد {#scaling-and-performance} + +مقیاس‌پذیری اتریوم برای محققان اتریوم جای پژوهش زیادی دارد. رویکردهای فعلی بر بارگذاری تراکنش‌ها بر روی رول-آپ‌ها و ارزان‌تر کردن آن‌ها با استفاده از توده‌های داده متمرکز است. اطلاعات مقدماتی در مورد مقیاس‌پذیری اتریوم را می‌توانید در [صفحه مقیاس‌پذیری](/developers/docs/scaling) ببینید. + +### لایه 2 {#layer-2} + +در حال حاضر چندین پروتکل لایه 2 وجود دارد که با استفاده از تکنیک‌های مختلف برای دسته‌بندی تراکنش‌ها و ایمن کردن آن‌ها در لایه 1، اتریوم را مقیاس‌بندی می‌کنند. این بخش به سرعت در حال رشد است و پتانسیل تحقیق و توسعه زیادی دارد. + +#### پیشینه مطالعاتی {#background-reading-2} + +- [مقدمه‌ای بر لایه 2](/layer-2/) +- [پالینیا: رول‌آپ‌ها، DA و زنجیره‌های مدولار](https://polynya.medium.com/rollups-data-availability-layers-modular-blockchains-introductory-meta-post-5a1e7a60119d) + +#### جدیدترین تحقیقات {#recent-research-2} + +- [رویکرد منصفانه آربیتروم برای مرتب‌کننده‌ها](https://eprint.iacr.org/2021/1465) +- [ethresear.ch لایه 2](https://ethresear.ch/c/layer-2/32) +- [نقشه راه رول-آپ محور](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) +- [L2Beat](https://l2beat.com/) + +### پل ها {#bridges} + +یکی از حوزه‌های لایه 2 که نیاز به تحقیق و توسعه بیشتر دارد، پل‌های ایمن و کارآمدند. این شامل پل‌هایی بین لایه‌‌های 2 مختلف و پل‌های بین لایه 1 و لایه 2 است. این حوزه تحقیقاتی بسیار مهمی است زیرا پل‌ها از اهداف مورد علاقه هکرها هستند. + +#### پیشینه مطالعاتی {#background-reading-3} + +- [مقدمه‌ای بر پل‌های بلاک‌چین](/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) +- [مقدار قفل‌شده در پل‌ها]() + +#### جدیدترین تحقیقات {#recent-research-3} + +- [اعتبارسنجی پل‌ها](https://stonecoldpat.github.io/images/validatingbridges.pdf) + +### زنجیره ای سازی {#sharding} + +زنجیره‌ای سازی بلاکچین اتریوم مدت‌هاست که بخشی از نقشه راه توسعه بوده است. با این حال، راه‌حل‌های مقیاس‌بندی جدید مانند Danksharding در حال حاضر در مرکز توجه‌اند. + +#### پیشینه مطالعاتی {#background-reading-4} + +- [یادداشت‌هایی درباره Proto-Danksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq) +- [ویدیویی درباره Danksharding بدون بانکداری](https://www.youtube.com/watch?v=N5p0TB77flM) +- [خلاصه تحقیق زنجیره‌ای‌سازی اتریوم](https://notes.ethereum.org/@serenity/H1PGqDhpm?type=view) +- [دنک شاردینگ (Polynya)](https://polynya.medium.com/danksharding-36dc0c8067fe) + +#### جدیدترین تحقیقات {#recent-research-4} + +- [EIP-4844: پروتو- دنک‌شاردینگ](https://eips.ethereum.org/EIPS/eip-4844) +- [نظر ویتالیک درباره به اشتراک‌گذاری و نمونه‌گیری از قابلیت دسترسی داده‌ها](https://hackmd.io/@vbuterin/sharding_proposal) + +### سخت‌افزار {#hardware} + +[اجرای گره‌ها](/developers/docs/nodes-and-clients/run-a-node/) بر روی سخت‌افزار ساده برای غیرمتمرکز نگه داشتن اتریوم اساسی است. بنابراین، بررسی راه‌های به حداقل رساندن نیازهای سخت‌افزاری برای اجرای گره‌ها یکی از حوزه‌های مهم تحقیقات است. + +#### پیشینه مطالعاتی {#background-reading-5} + +- [Ethereum on ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/) + +#### جدیدترین تحقیقات {#recent-research-5} + +- [ecdsa در FGPAها](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738) + +## ایمنی {#security} + +امنیت شبکه، حوزه گسترده‌ای است که جلوگیری از هرزنامه/کلاهبرداری، امنیت کیف پول، امنیت سخت‌افزار، امنیت ارز دیجیتال، پیدا کردن باگ‌ها و آزمایش اپلیکیشن‌ها و نرم‌افزار کاربر و مدیریت کلید را در بر می‌گیرد. انباشت اطلاعات در این زمینه به افزایش پذیرش در جریان اصلی کمک می‌کند. + +### رمزنگاری & ZKP {#cryptography--zkp} + +اثبات‌های دانش صفر (ZKP) و رمزنگاری، برای حفظ حریم خصوصی و امنیت در اتریوم و اپلیکیشن‌های آن حیاتی‌اند. دانش صفر، فضایی نسبتا جدید اما به سرعت در حال پیشرفت است و در خود فرصت‌های زیادی برای توسعه و تحقیق دارد. توسعه پیاده‌سازی‌های کارآمدتر [الگوریتم هشینگ Keccak](https://hackmd.io/sK7v0lr8Txi1bgION1rRpw?view#Overview)، یافتن تعهدهای چند جمله‌ای بهتر و کاهش هزینه تولید کلید عمومی ecdsa و مدارهای تأیید امضا برخی از امکانات این حوزه‌اند. + +#### پیشینه مطالعاتی {#background-reading-6} + +- [وبلاگ 0xparc](https://0xparc.org/blog) +- [zkp.science](https://zkp.science/) +- [پادکست دانش صفر](https://zeroknowledge.fm/) + +#### جدیدترین تحقیقات {#recent-research-6} + +- [پیشرفت اخیر در رمزنگاری منحنی بیضوی](https://ethresear.ch/t/the-ec-fft-algorithm-without-elliptic-curve-and-isogenies/11346) +- [Ethresear.ch ZK](https://ethresear.ch/c/zk-s-nt-arks/13) + +### کیف‌پول‌ها {#wallets} + +کیف پول‌های اتریوم به شکل افزونه‌های مرورگر، اپلیکیشن‌های دسکتاپ و موبایل یا قراردادهای هوشمند روی اتریوم در دسترس‌اند. کیف پول‌های بازیابی اجتماعی همچنان موضوع مهمی برای بررسی و پژوهش‌اند که برخی از خطرات مربوط به مدیریت کلید کاربر را کاهش می‌دهند. همراه با توسعه کیف‌های پول، اشکال جایگزین انتزاع حساب هم حوزه تحقیقات مهم اما نوپایی است. + +#### پیشینه مطالعاتی {#background-reading-7} + +- [مقدمه‌ای بر کیف پول‌ها](/wallets/) +- [مقدمه‌ای بر امنیت کیف پول‌](/security/) +- [امنیت ethresear.ch](https://ethresear.ch/tag/security) +- [انتزاع حساب EIP-2938](https://eips.ethereum.org/EIPS/eip-2938) +- [انتزاع حساب EIP-4337](https://eips.ethereum.org/EIPS/eip-4337) + +#### جدیدترین تحقیقات {#recent-research-7} + +- [کیف پول‌های قرارداد هوشمند متمرکز بر اعتبارسنجی](https://ethereum-magicians.org/t/validation-focused-smart-contract-wallets/6603) +- [آینده حساب‌ها](https://ethereum-magicians.org/t/validation-focused-smart-contract-wallets/6603) +- [EIP-3074 AUTH و کدگذاری های AUTHCALL](https://eips.ethereum.org/EIPS/eip-3074) +- [انتشار کد در یک آدرس EOA](https://eips.ethereum.org/EIPS/eip-5003) + +## جامعه، آموزش و پشتیبانی {#community-education-and-outreach} + +اتریوم برای جذب کاربران جدید به منابع آموزشی و رویکردهای جدید برای پشتیبانی نیازمند است. این منابع می‌توانند پست‌ها و مقالات وبلاگ، کتاب‌ها، پادکست‌ها، مِه‌مِه‌ها، دوره‌های آموزشی و هر چیز دیگری باشد که گروه‌هایی را می‌سازند، از افراد مبتدی استقبال می‌کنند و درباره اتریوم به افراد آموزش می‌دهند. + +### UX/UI {#uxui} + +همچنین برای جذب کاربران بیشتر به اتریوم، اکوسیستم باید UX/UI را بهبود بخشد. این امر مستلزم آن است که طراحان و کارشناسان محصول، طرح کیف پول‌ها و اپلیکیشن‌ها را دوباره بررسی کنند. + +#### پیشینه مطالعاتی {#background-reading-8} + +- [Ethresear.ch UX/UI](https://ethresear.ch/c/ui-ux/24) + +#### جدیدترین تحقیقات {#recent-research-8} + +- [دیسکورد طراحی Web3](https://discord.gg/FsCFPMTSm9) +- [اصول طراحی Web3](https://www.web3designprinciples.com/) +- [بحث UX ساحران اتریوم](https://ethereum-magicians.org/t/og-council-ux-follow-up/9032/3) + +### اقتصاد {#economics} + +تحقیقات اقتصادی در اتریوم دو رویکرد مشخص دارند: اعتبارسنجی امنیت مکانیسم‌های متکی بر انگیزه‌های اقتصادی (اقتصاد خرد) و تجزیه و تحلیل جریان‌های ارزش بین پروتکل‌ها، اپلیکیشن‌ها و کاربران (اقتصاد کلان). فاکتورهای اقتصادی-کریپتو پیچیده‌ای در رابطه با توکن اتریوم (اتر) و توکن‌های ساخته شده روی آن (به عنوان مثال NFTها و توکن‌های ERC20) وجود دارد. + +#### پیشینه مطالعاتی {#background-reading-9} + +- [گروه مشوق‌های بزرگ](https://ethereum.github.io/rig/) +- [کارگاه ETHconomics در Devconnect](https://www.youtube.com/playlist?list=PLTLjFJ0OQOj5PHRvA2snoOKt2udVsyXEm) + +#### جدیدترین تحقیقات {#recent-research-9} + +- [تجزیه و تحلیل تجربی EIP1559](https://arxiv.org/abs/2201.05574) +- [گردش تعادل عرضه](https://ethresear.ch/t/circulating-supply-equilibrium-for-ethereum-and-minimum-viable-issuance-during-the-proof-of-stake-era/10954) +- [تعیین کمیت MEV: جنگل چقدر تاریک است؟](https://arxiv.org/abs/2101.05511) + +### Blockspace و بازارهای کارمزد {#blockspace-fee-markets} + +بازارهای بلاک‌اسپیس، شمول تراکنش‌های کاربر نهایی، چه به طور مستقیم در اتریوم (لایه 1) یا در پل‌ها، به عنوان مثال، رول-آپ‌ها (لایه 2) را کنترل می‌کنند. تراکنش‌ها در اتریوم به بازار کارمزد فرستاده می‌شوند که درون پروتکل به‌عنوان EIP-1559 اجرا شده و از شبکه در برابر اسپم‌ها و تراکم قیمت‌گذاری محافظت می‌کند. در هر دو لایه، تراکنش‌ها ممکن است تأثیرات بیرونی داشته باشند که به عنوان حداکثر ارزش استخراج (MEV) شناخته می‌شود، که باعث خواهد شد ساختارهای بازار جدید این تاثیرات را بگیرند یا مدیریت کنند. + +#### پیشینه مطالعاتی {#background-reading-10} + +- [طرح مکانیزم کارمزد تراکنش برای بلاکچین اتریوم: یک تحلیل اقتصادی EIP-1559 (تیم راگاردن، 2020)](https://timroughgarden.org/papers/eip1559.pdf) +- [شبیه‌سازی‌های EIP-1559 (گروه مشوق‌های بزرگ)](https://ethereum.github.io/abm1559) +- [اصول اولیه اقتصاد رول-آپ‌ها](https://barnabe.substack.com/p/understanding-rollup-economics-from?utm_source=url) +- [Flash Boys 2.0: فرانت‌رانینگ، تراکنش مجدد، و بی‌ثباتی اجماع در صرافی‌های غیرمتمرکز](https://arxiv.org/abs/1904.05234) + +#### جدیدترین تحقیقات {#recent-research-10} + +- [ارائه ویدئویی چند بعدی EIP-1559](https://youtu.be/QbR4MTgnCko) +- [MEV با دامنه‌های متقاطع](http://arxiv.org/abs/2112.01472) +- [مزایده‌های MEV](https://ethresear.ch/t/mev-auction-auctioning-transaction-ordering-rights-as-a-solution-to-miner-extractable-value/6788) + +### مشوق‌های اثبات سهام {#proof-of-stake-incentives} + +اعتبارسنج‌ها، از دارایی بومی اتریوم (اتر) برای جلوگیری از رفتارهای غیرصادقانه به عنوان وثیقه استفاده می‌کنند. اقتصاد کریپتویی آن، امنیت شبکه را تضمین می‌کند. اعتبارسنج‌های پیشرفته، می‌توانند با سوءاستفاده از تفاوت‌های جزئی لایه پاداش، حملات صریحی برای شبکه تدارک ببینند. + +#### پیشینه مطالعاتی {#background-reading-11} + +- [مسترکلاس اقتصاد اتریوم و مدل اقتصادی](https://github.com/CADLabs/ethereum-economic-model) +- [شبیه‌سازی‌های مشوق‌های اثبات سهام (Robust Incentives Group)](https://ethereum.github.io/beaconrunner/) + +#### جدیدترین تحقیقات {#recent-research-11} + +- [افزایش مقاومت سانسوری تراکنش‌ها تحت جداسازی پیشنهاددهنده/سازنده (PBS)](https://notes.ethereum.org/s3JToeApTx6CKLJt8AbhFQ) +- [سه حمله به اتریوم PoS](https://arxiv.org/abs/2110.10086) + +### سهام‌گذاری نقدینه و مشتقات {#liquid-staking-and-derivatives} + +کاربرانی که کمتر از 32 اتر دارند با سهام گذاری نقدینه می‌توانند با معاوضه توکنی که اتر سهام گذاری شده را نمایندگی می‌کند سود دریافت کنند. با این حال، انگیزه‌ها و پویایی‌های بازار مرتبط با سهام گذاری نقدینه و همچنین تأثیر آن بر امنیت اتریوم (مانند خطرات متمرکز شدن) هنوز باید بررسی شود. + +#### پیشینه مطالعاتی {#background-reading-12} + +- [سهام گذاری نقدینه Ethresear.ch](https://ethresear.ch/search?q=liquid%20staking) +- [لیدو: راهی به سوی سهام گذاری بی‌نیاز از ‌اعتماد اتریوم](https://blog.lido.fi/the-road-to-trustless-ethereum-staking/) +- [استخر راکت: معرفی پروتکل سهام گذاری](https://medium.com/rocket-pool/rocket-pool-staking-protocol-part-1-8be4859e5fbd) + +#### جدیدترین تحقیقات {#recent-research-12} + +- [انجام برداشت‌ها از Lido](https://ethresear.ch/t/handling-withdrawals-in-lidos-eth-liquid-staking-protocol/8873) +- [Withdrawal credentials](https://ethresear.ch/t/withdrawal-credential-rotation-from-bls-to-eth1/8722) +- [خطرات مشتقات سهام گذاری نقدینه](https://notes.ethereum.org/@djrtwo/risks-of-lsd) + +## Testing {#testing} + +### تأیید رسمی {#formal-verification} + +راستی‌آزمایی رسمی، نوشتن کدی برای تأیید صحت و بدون اشکال بودن مشخصات اجماع اتریوم است. یک نسخه قابل اجرا از مشخصات نوشته شده در Python وجود دارد که نیاز به نگهداری و توسعه دارد. تحقیقات بیشتر می‌تواند به بهبود پیاده‌سازی خصوصیات Python کمک کند و ابزارهایی را اضافه کند که سلامت شبکه را قویاً تأیید و مشکلات آن را شناسایی کنند. + +#### پیشینه مطالعاتی {#background-reading-13} + +- [مقدمه‌ای بر تأیید رسمی](https://ptolemy.berkeley.edu/projects/embedded/research/vis/doc/VisUser/vis_user/node4.html) +- [تأیید رسمی (Intel)](https://www.cl.cam.ac.uk/~jrh13/papers/mark10.pdf) + +#### جدیدترین تحقیقات {#recent-research-13} + +- [تأیید رسمی قرارداد سپرده](https://github.com/runtimeverification/deposit-contract-verification) +- [تأیید رسمی مشخصات Beacon Chain](https://github.com/runtimeverification/deposit-contract-verification) + +## علم داده و تجزیه و تحلیل {#data-science-and-analytics} + +برای آگاهی از فعالیت در اتریوم و سلامت شبکه نیاز به ابزارهای تجزیه و تحلیل داده ها و داشبوردهای بیشتری وجود دارد. + +### پیشینه مطالعاتی {#background-reading-14} + +- [Dune Analytics](https://dune.com/browse/dashboards) +- [داشبورد تنوع کاربر](https://clientdiversity.org/) + +#### جدیدترین تحقیقات {#recent-research-14} + +- [تجزیه و تحلیل داده‌های گروه مشوق‌های بزرگ](https://ethereum.github.io/rig/) + +## اپلیکیشن‌ها و ابزارسازی {#apps-and-tooling} + +لایه اپلیکیشن از اکوسیستم متنوعی از برنامه‌ها پشتیبانی می‌کند که تراکنش‌ها را در لایه پایه اتریوم مستقر می‌کنند. تیم توسعه، با ایجاد نسخه‌های قابل ترکیب، بی‌نیاز از مجوز و مقاوم در برابر سانسور از برنامه‌های مهم Web2 یا ایجاد مفاهیم کاملاً جدید بومی Web3، به‌صورت پیوسته در حال یافتن راه‌های جدیدی برای استفاده از اتریوم است. در همین زمان، ابزار جدیدی در حال توسعه است که باعث می‌شود ساخت اپلیکیشن‌های غیرمتمرکز در اتریوم ساده‌تر شود. + +### DeFi {#defi} + +امور مالی غیرمتمرکز (DeFi) یکی از کلاس‌های اصلی اپلیکیشن‌های ساخته شده بر روی اتریوم است. هدف DeFi ایجاد «لگوهای پول» قابل ترکیب است که با آن کاربران می‌توانند با استفاده از قراردادهای هوشمند دارایی‌های رمزارزی را ذخیره کنند، انتقال دهند، وام بگیرند و روی رمزارزها سرمایه‌گذاری کنند. دیفای با سرعت بالایی در حال پیشرفت و به‌روزرسانی است. تحقیق در مورد پروتکل‌های ایمن، کارآمد و قابل دسترس، به صورت مستمر ضروری است. + +#### پیشینه مطالعاتی {#background-reading-15} + +- [DeFi](/defi/) +- [کوین‌بیس: دی‌فای چیست؟](https://www.coinbase.com/learn/crypto-basics/what-is-defi) + +#### جدیدترین تحقیقات {#recent-research-15} + +- [امور مالی غیرمتمرکز، مالکیت متمرکز؟](https://arxiv.org/pdf/2012.09306.pdf) +- [اپتیمیسم: مسیر معاملات غیردلاری](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) + +### DAOها {#daos} + +سازماندهی غیرمتمرکز با DAO ها یکی از موارد قابل توجه از اتریوم است. در مورد اینکه چطور می‌توان برای اجرای فرم‌های بهتر حکمرانی، به‌عنوان یک ابزار هماهنگی با حداقل اعتماد، DAOها را در اتریوم توسعه داد، تحقیقات زیادی در حال انجام است. + +#### پیشینه مطالعاتی {#background-reading-16} + +- [مقدمه‌ای بر DAOها](/dao/) +- [DAO اشتراکی](https://daocollective.xyz/) + +#### جدیدترین تحقیقات {#recent-research-16} + +- [نقشه‌برداری اکوسیستم DAO](https://www.researchgate.net/publication/358694594_Mapping_out_the_DAO_Ecosystem_and_Assessing_DAO_Autonomy) + +### ابزارهای توسعه‌دهنده {#developer-tools} + +ابزارهای توسعه‌دهندگان اتریوم به سرعت در حال بهبودند. تحقیقات و توسعه‌های زیادی در این زمینه عمومی در حال انجام است. + +#### پیشینه مطالعاتی {#background-reading-17} + +- [ابزارسازی با زبان برنامه‌نویسی](/developers/docs/programming-languages/) +- [چارچوب‌های توسعه‌دهندگان](/developers/docs/frameworks/) +- [فهرست ابزارهای توسعه‌دهندگان اجماع](https://github.com/ConsenSys/ethereum-developer-tools-list) +- [استانداردهای توکن](/developers/docs/standards/tokens/) +- [بیاستک: ابزارهای اتریوم](https://biastek.com/ethereum-tools/) +- [CryptoDevHub: ابزارهای EVM](https://cryptodevhub.io/wiki/ethereum-virtual-machine-tools) + +#### جدیدترین تحقیقات {#recent-research-17} + +- [کانال ابزارسازی اجماع دیسکورد R&D اتر](https://discordapp.com/channels/595666850260713488/746343380900118528) + +### اوراکل‌ها {#oracles} + +اوراکل‌ها داده‌های بیرون از زنجیره را به روشی بی‌نیاز از مجوز و غیرمتمرکز وارد بلاکچین می‌کنند. با دریافت این داده‌ها در زنجیره، اپلیکیشن‌های غیرمتمرکز می‌توانند نسبت به پدیده‌های دنیای واقعی مانند نوسانات قیمت در دارایی‌های دنیای واقعی، رویدادهای اپلیکیشن‌های خارج از زنجیره یا حتی تغییرات آب‌وهوا واکنش نشان دهند. + +#### پیشینه مطالعاتی {#background-reading-18} + +- [مقدمه‌ای بر اوراکل‌ها](/developers/docs/oracles/) + +#### جدیدترین تحقیق {#recent-research-18} + +- [بررسی اوراکل‌های بلاکچین](https://arxiv.org/pdf/2004.07140.pdf) +- [وایت‌پیپر چین‌لینک](https://chain.link/whitepaper) + +### امنیت اپلیکیشن {#app-security} + +هکر‌های اتریوم معمولاً به جای خود پروتکل از آسیب‌‌پذیری‌های اپلیکیشن‌ها سوء استفاده می‌کنند. هکرها و توسعه‌دهندگان اپلیکیشن‌ها، در رقابت تسلحیاتی برای توسعه حملات و دفاع‌های جدید قفل شده‌اند. بنابراین، برای ایمن نگه‌داشتن اپلیکیشن‌ها و جلوگیری از هک شدن آن‌ها تحقیقات در این زمینه اهمیت بالایی دارد. + +#### پیشینه مطالعاتی {#background-reading-19} + +- [گزارش سوءاستفاده از Wormhole](https://blog.chainalysis.com/reports/wormhole-hack-february-2022/) +- [فهرست قراردادهای اتریوم‌های پس از هک](https://forum.openzeppelin.com/t/list-of-ethereum-smart-contracts-post-mortems/1191) +- [Rekt News](https://twitter.com/RektHQ?s=20&t=3otjYQdM9Bqk8k3n1a1Adg) + +#### جدیدترین تحقیقات {#recent-research-19} + +- [اپلیکیشن‌های ethresear.ch](https://ethresear.ch/c/applications/18) + +### پشته فناوری {#technology-stack} + +تمرکززدایی از پشته فناوری در اتریوم یک حوزه تحقیقاتی مهم است. در حال حاضر، dappهایی که روی اتریوم ساخته شده‌اند معمولا به واسطه اتکا به ابزارها یا زیرساخت‌های متمرکز به‌طور کامل غیرمتمرکز نیستند. + +#### پیشینه مطالعاتی {#background-reading-20} + +- [سهام اتریوم](/developers/docs/ethereum-stack/) +- [کوین‌بیس: مقدمه‌ای بر پشته Web3](https://blog.coinbase.com/a-simple-guide-to-the-web3-stack-785240e557f0) +- [معرفی قراردادهای هوشمند](/developers/docs/smart-contracts/) +- [مقدمه‌ای بر حافظه غیرمتمرکز](/developers/docs/storage/) + +#### جدیدترین تحقیقات {#recent-research-20} + +- [ترکیب پذیری قراردادهای هوشمند](/developers/docs/smart-contracts/composability/) diff --git a/src/content/translations/fa/community/support/index.md b/src/content/translations/fa/community/support/index.md index 1f5c8be893d..921145e32b8 100644 --- a/src/content/translations/fa/community/support/index.md +++ b/src/content/translations/fa/community/support/index.md @@ -38,10 +38,12 @@ _این یک فهرست جامع نیست. برای پیدا کردن پشتیب ساختن می‌تواند سخت باشد. در اینجا برخی از فضاهای متمرکز توسعه با توسعه‌دهندگان باتجربه‌ای وجود دارند که خوشحال می‌شوند به شما کمکی کنند. +- [دانشگاه شیمی](https://university.alchemy.com/#starter_code) - [دیسکورد CryptoDevs](https://discord.gg/Z9TA39m8Yu) - [StackExchange اتریوم](https://ethereum.stackexchange.com/) - [StackOverflow](https://stackoverflow.com/questions/tagged/web3) - [دانشگاه Web3](https://www.web3.university/) +- [LearnWeb3](https://discord.com/invite/learnweb3) همچنین می‌توانید مستندات و راهنمای توسعه را در بخش [منابع توسعه‌دهندگان اتریوم](/developers/) ما بیابید. @@ -57,12 +59,13 @@ _این یک فهرست جامع نیست. برای پیدا کردن پشتیب - [Hardhat](https://discord.gg/xtrMGhmbfZ) - [Truffle](https://discord.gg/8uKcsccEYE) - [Alchemy](http://alchemy.com/discord) +- [Tenderly](https://discord.gg/fBvDJYR) ## راه‌اندازی یک گره {#node-support} اگر از یک گره یا یک اعتبارسنج استفاده می‌کنید، در اینجا چند انجمن وجود دارد که به شما در شروع کار کمک می‌کنند. -- [دیسکورد EthStaker](https://discord.gg/ethstaker) +- [دیسکورد EthStaker](https://discord.io/ethstaker) - [ردیت EthStaker](https://www.reddit.com/r/ethstaker) اکثر تیم‌هایی که کلاینت های اتریومی را می‌سازند، فضاهای اختصاصی و عمومی دارند که می‌توانید از آنها پشتیبانی دریافت کنید و سؤال بپرسید. diff --git a/src/content/translations/fa/decentralized-identity/index.md b/src/content/translations/fa/decentralized-identity/index.md index 407cfdf58e5..9f5e61d1b7d 100644 --- a/src/content/translations/fa/decentralized-identity/index.md +++ b/src/content/translations/fa/decentralized-identity/index.md @@ -131,7 +131,7 @@ summaryPoint3: به لطف رمزنگاری، کاربران اکنون ابزا ### 1. لاگین های همگانی {#universal-dapp-logins} -هویت غیرمتمرکز می‌تواند به جایگزینی ورودهای مبتنی بر رمز عبور با کمک کند. احراز هویت غیرمتمرکز بی‌انجامد. ارائه دهندگان خدمات می توانند تصدیق هایی را برای کاربران صادر کنند که می توانند در کیف پول اتریوم ذخیره شوند. یک تصدیق بعنوان نمونه می تواند یک [NFT](/nft/) باشد که به دارنده اجازه دسترسی به یک انجمن آنلاین را می دهد. +هویت غیرمتمرکز می‌تواند به جایگزینی ورودهای مبتنی بر رمز عبور با [احراز هویت غیرمتمرکز](https://www.ibm.com/blogs/blockchain/2018/10/decentralized-identity-an-alternative-to-password-based-authentication/). ارائه دهندگان خدمات می توانند تصدیق هایی را برای کاربران صادر کنند که می توانند در کیف پول اتریوم ذخیره شوند. یک تصدیق بعنوان نمونه می تواند یک [NFT](/nft/) باشد که به دارنده اجازه دسترسی به یک انجمن آنلاین را می دهد. سپس یک تابع [Sign-In with Ethereum](https://login.xyz/) سرورها را قادر می‌سازد تا حساب اتریوم کاربر را تأیید کنند و گواهی لازم را از آدرس حساب خود دریافت کنند. این بدان معناست که کاربران می توانند بدون نیاز به حفظ رمزهای عبور طولانی به پلتفرم ها و وب سایت ها دسترسی داشته باشند و این تجربه آنلاین را برای کاربران بهبود می بخشد. @@ -176,10 +176,10 @@ summaryPoint3: به لطف رمزنگاری، کاربران اکنون ابزا - [هویت غیرمتمرکز (جلسه پخش زنده جایزه)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s) - _یک ویدیوی توضیح دهنده عالی در مورد هویت غیرمتمرکز توسط آندریاس آنتونوپولوس_ - [ورود با اتریوم و هویت غیرمتمرکز با Ceramic، IDX، React و 3ID Connect](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _آموزش YouTube در مورد ایجاد یک سیستم مدیریت هویت برای ایجاد، خواندن و به روز رسانی نمایه کاربر با استفاده از کیف پول اتریوم توسط نادر دبیت_ - [BrightID - هویت غیرمتمرکز در اتریوم](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _قسمت پادکست بدون بانک در مورد BrightID، یک راه حل هویت غیرمتمرکز برای اتریوم_ -- [اینترنت خارج از زنجیره: هویت غیرمتمرکز & اعتبار قابل تأیید](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — _ارائه EthDenver 2022 توسط Evin McMullen_ +- [اینترنت خارج از زنجیره: هویت غیرمتمرکز & اعتبار قابل تأیید](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — ارائه EthDenver 2022 توسط Evin McMullen ### جوامع {#communities} - [اتحاد ERC-725 در GitHub](https://github.com/erc725alliance) — _حامی استاندارد ERC725 برای مدیریت هویت در بلاک چین اتریوم_ -- [سرور SpruceID Discord](https://discord.com/invite/Sf9tSFzrnt) — _انجمن برای علاقه مندان و توسعه دهندگانی که روی ورود به سیستم با اتریومکار می کنند_ +- [سرور SpruceID Discord](https://discord.com/invite/Sf9tSFzrnt) — *انجمن برای علاقه مندان و توسعه دهندگانی که روی ورود به سیستم با اتریوم*کار می کنند - [Veramo Labs](https://discord.gg/sYBUXpACh4) — _جامعه ای از توسعه دهندگان که در ساخت چارچوبی برای داده های قابل تأیید برای برنامه ها مشارکت دارند_ diff --git a/src/content/translations/fa/defi/index.md b/src/content/translations/fa/defi/index.md index 31094d69e2f..0c4b9c09046 100644 --- a/src/content/translations/fa/defi/index.md +++ b/src/content/translations/fa/defi/index.md @@ -31,7 +31,7 @@ DeFi یک واژه‌ی کلی برای محصولات و خدمات مالی د - خدمات مالی می‌توانند مانع از پرداخت حقوق شما شوند. - یکی از هزینه‌های پنهان خدمات مالی، اطلاعات شخصی شماست. - دولت‌ها و نهادهای متمرکز می‌توانند هر زمان خواستند بازارها را ببندند. -- ساعات خرید و فروش اغلب محدود به ساعات اداری ویژه‌ی یک منطقه‌ی زمانی است. +- ساعات خرید و فروش اغلب محدود به ساعات اداری ویژه‌ یک منطقه‌ زمانی است. - به دلیل رویه‌های انسانی، تراکنش‌های مالی ممکن است روزها طول بکشند. - خدمات مالی کارمزد دارند چرا که نهادهای میانجی می‌خواهند سهم خود را دریافت کنند. @@ -40,7 +40,7 @@ DeFi یک واژه‌ی کلی برای محصولات و خدمات مالی د | DeFi | امور مالی سنتی | | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | | شما مالک پول خود هستید. | پول‌ شما توسط شرکت‌ها نگهداری می‌شود. | -| شما کنترل می‌کنید که پولتان کجا برود و چگونه خرج شود. | شما باید به شرکت‌ها اعتماد کنید که پولتان را به شکل اشتباه مدیریت نکنند، مثلاً آن را به افرادی که ریسک مالی دارند قرض ندهند. | +| شما کنترل می‌کنید که پولتان کجا برود و چگونه خرج شود. | شما باید به شرکت‌ها اعتماد کنید که پولتان را به شکل اشتباه مدیریت نکنند، مثلاً آن را به افراد پرریسک قرض ندهند. | | جابجایی پول در چند دقیقه انجام می‌شود. | پرداخت‌ها ممکن است به دلیل فرایندهای دستی تا چند روز طول بکشد. | | فعالیت تراکنش با نام مستعار انجام می‌شود. | فعالیت مالی کاملاً وابسته به هویت شخص است. | | DeFi برای همه آزاد است. | شما باید برای استفاده از خدمات مالی درخواست بدهید. | @@ -53,7 +53,7 @@ DeFi یک واژه‌ی کلی برای محصولات و خدمات مالی د ## همه چیز با بیت‌کوین شروع شد... {#bitcoin} -از خیلی جهات بیت‌کوین اولین برنامه‌ی DeFi محسوب می‌شود. بیت‌کوین به شما اجازه می‌دهد که ارزش را واقعاً در اختیار داشته باشید و کنترل کنید و برای هر کسی در هر کجای جهان بفرستید. بیت‌کوین این کار را با فراهم کردن راهی برای توافق بر یک دفترکل حاوی حساب‌های کاربری بدون نیاز به اعتماد به یک میانجی سوم برای تعداد زیادی آدم که به یکدیگر اعتماد ندارند انجام می‌دهد. بیت‌کوین برای همه آزاد است و هیچ‌کس نمی‌تواند برای آن قانون وضع کند. قوانین بیت‌کوین، مثل کمیابی و باز بودنش، در فناوری آن نهادینه شده‌اند. مانند امور مالی سنتی نیست که دولت‌ها بتوانند پول چاپ کنند و ارزش پول شما کم شود و شرکت‌ها بتوانند بازارها را ببندند. +از خیلی جهات بیت‌کوین اولین برنامه‌ی DeFi محسوب می‌شود. بیت‌کوین به شما اجازه می‌دهد که ارزش را واقعاً در اختیار داشته باشید و کنترل کنید و برای هر کسی در هر کجای جهان بفرستید. بیت‌کوین این کار را با فراهم کردن راهی برای توافق بر یک دفترکل حاوی حساب‌های کاربری بدون نیاز به اعتماد به یک میانجی سوم برای تعداد زیادی آدم که به یکدیگر اعتماد ندارند انجام می‌دهد. بیت‌کوین برای همه آزاد است و هیچ‌کس نمی‌تواند برای آن قانون وضع کند. قوانین بیت‌کوین، مثل کمیابی و باز بودنش، در فناوری آن نهادینه شده‌اند. مانند امور مالی سنتی نیست که دولت‌ها بتوانند پول چاپ کنند که ارزش پس‌اندازهای شما کم شود و شرکت‌ها بتوانند بازارها را ببندند. اتریوم بر همین اساس ساخته شده‌است. همانند بیت‌کوین، قوانین برای شما و هر کسی که به آن دسترسی دارد تغییر نمی‌کند. اما با استفاده از [قراردادهای هوشمند](/glossary#smart-contract) این پول دیجیتال قابل‌برنامه‌نویسی شده‌است تا بتوانید کارهایی فراتر از نگهداری و انتقال ارزش انجام دهید. @@ -143,7 +143,7 @@ DeFi یک واژه‌ی کلی برای محصولات و خدمات مالی د #### کارآیی مالیاتی {#tax-efficiencies} -قرض گرفتن می‌تواند به شما اجازه دهد که از سرمایه‌هایی که نیاز دارید بدون فروختن اتر خود (که مالیات دارد) استفاده کنید. در عوض می‌توانید از اتر خود به‌عنوان وثیقه برای دریافت پایدارز استفاده کنید. با این کار جریان نقدینگی لازم را خواهید داشت و می‌توانید اتر خود را نگه‌داری کنید. پایدارزها توکن‌هایی هستند که هنگام نیاز به وجه نقد بسیار بهتر هستند، چون برخلاف اتر نوسانات ارزشی ندارند. [اطلاعات بیشتر درباره‌ی پایدارزها](#stablecoins) +قرض گرفتن می‌تواند به شما اجازه دهد که از سرمایه‌هایی که نیاز دارید بدون فروختن اتر خود (که مالیات دارد) استفاده کنید. در عوض می‌توانید از ETH خود به‌عنوان وثیقه برای دریافت وام استیبل کوین استفاده کنید. با این کار جریان نقدینگی لازم را خواهید داشت و می‌توانید اتر خود را نگه‌داری کنید. پایدارزها توکن‌هایی هستند که هنگام نیاز به وجه نقد بسیار بهتر هستند، چون برخلاف اتر نوسانات ارزشی ندارند. [اطلاعات بیشتر درباره‌ی پایدارزها](#stablecoins) #### وام لحظه‌ای {#flash-loans} @@ -274,7 +274,7 @@ DeFi یک واژه‌ی کلی برای محصولات و خدمات مالی د هدف بیمه‌ی غیرمتمرکز ارزان‌تر ساختن، سریع‌تر شدن فرایند پرداخت و شفافیت بیشتر صنعت بیمه‌ است. با خودکارسازی بیشتر، پوشش مالی به صرفه‌تر و پرداخت‌ها بسیار سریع‌تر خواهند بود. اطلاعاتی که برای تصمیم‌گیری درباره‌ی ادعای دریافت خسارت شما استفاده می‌شوند کاملاً شفاف هستند. -محصولات اتریوم، همچون هر نرم‌افزار دیگر، ممکن است دچار باگ یا مشکل شوند. بنابراین اکنون محصول بیمه‌ای بسیار زیادی در این فضا روی محافظت از کاربرانشان در برابر از دست دادن سرمایه تمرکز دارند. با این حال، پروژه‌هایی هستند که سعی در پوشش تمام خطرات مربوط به زندگی دارند. یک مثال خوب، پوشش Etherisc's Crop است که هدفش [ محافظت از مالکان مزارع کوچک در کنیا در مقابل خشکی و سیل](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc) است. بیمه‌ی غیرمتمرکز می‌تواند به‌نسبت بیمه‌ی سنتی، پوشش ارزان‌تری به کشاورزان ارائه دهد. +محصولات اتریوم، همچون هر نرم‌افزار دیگر، ممکن است دچار باگ یا مشکل شوند. بنابراین اکنون محصول بیمه‌ای بسیار زیادی در این فضا روی محافظت از کاربرانشان در برابر از دست دادن سرمایه تمرکز دارند. با این حال، پروژه‌هایی وجود دارند که برای پوشش تمام خطرات مربوط به زندگی اجرا می‌شوند. یک مثال خوب، پوشش Etherisc's Crop است که هدفش [ محافظت از مالکان مزارع کوچک در کنیا در مقابل خشکی و سیل](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc) است. بیمه‌ی غیرمتمرکز می‌تواند به‌نسبت بیمه‌ی سنتی، پوشش ارزان‌تری به کشاورزان ارائه دهد. مشاهده‌ی برنامه‌های غیرمتمرکز بیمه‌ای @@ -317,7 +317,7 @@ DeFi از ارزهای رمزنگاری شده و قرارداد هوشمند ا 1. زنجیره‌ی بلوکی – اتریوم شامل تاریخچه‌ی تراکنش‌ها و وضعیت حساب‌ها است. 2. دارایی‌ها – [اتر (ETH)](/eth/) و دیگر توکن‌ها (ارزها). -3. پروتکل‌ها – [قراردادهای هوشمند](/glossary/#smart-contract) که عملکرد را امکان‌پذیر می‌کنند؛ مثلاً خدمتی که امکان قرض دادن دارایی‌ها را به صورت غیرمتمرکز فراهم می‌کند. +3. پروتکل‌ها – [قراردادهای هوشمندی](/glossary/#smart-contract) که عملکرد را امکان‌پذیر می‌کنند؛ مثلاً خدمتی که امکان قرض دادن دارایی‌ها را به صورت غیرمتمرکز فراهم می‌کند. 4. [برنامه‌های کاربردی](/dapps/) – محصولاتی که برای مدیریت و دسترسی به پروتکل‌ها استفاده می‌کنیم. ## DeFi را بسازید {#build-defi} @@ -338,7 +338,7 @@ DeFi یک جنبش متن‌باز است. پروتکل‌ها و برنامه ### مقاله‌های DeFi {#defi-articles} -- [راهنمای DeFi برای مبتدیان](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu،‏ 6 ژانویه 2020_ +- [راهنمای امور مالی غیرمتمرکز (DeFi) برای مبتدیان](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu، تاریخ 6 ژانویه 2020_ ### ویدیوها {#videos} diff --git a/src/content/translations/fa/desci/index.md b/src/content/translations/fa/desci/index.md index 0e76ff01722..5f81b225391 100644 --- a/src/content/translations/fa/desci/index.md +++ b/src/content/translations/fa/desci/index.md @@ -110,6 +110,7 @@ Web3 این پتانسیل را دارد که با آزمایش مدل‌های - [آزمایشگاه استنتاج فعال](https://www.activeinference.org/) - [CureDAO: پلتفرم سلامت دقیق متعلق به جامعه](https://docs.curedao.org/) - [IdeaMarkets: امکان اعتبار علمی غیرمتمرکز](https://ideamarket.io/) +- [DeSci Labs](https://www.desci.com/) ما از پیشنهادهایی برای فهرست کردن پروژه‌های جدید استقبال می‌کنیم - لطفاً برای شروع به خط مشی فهرست [](/contributing/adding-desci-projects/) ما نگاه کنید! diff --git a/src/content/translations/fa/developers/docs/accounts/accounts.png b/src/content/translations/fa/developers/docs/accounts/accounts.png new file mode 100644 index 0000000000000000000000000000000000000000..6ccb76911d146f18f8d3a161e729a1ff3f69be67 GIT binary patch literal 32042 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 personal.newAccount() -Passphrase: -Repeat passphrase: -"0x5e97870f263700f46aa00d967821199b9bc5a120" +``` +> کلید حساب جدید --keystore + +لطفا یک رمز عبور برای ایجاد حساب جدید وارد کنید: +> <رمز عبور> -> personal.newAccount("h4ck3r") -"0x3d80b31a78c30fc628f20b2c89d7ddbf6e53cedc" +------------ +INFO [10-28|16:19:09.156] کلید جدید شما ایجاد شد آدرس=0x5e97870f263700f46aa00d967821199b9bc5a120 +WARN [10-28|16:19:09.306] لطفاً از مسیر فایل کلید خود نسخه پشتیبان تهیه کنید=/home/user/go-ethereum/data/keystore/UTC--2022-10-28T15-19-08.000825927Z--5e9737000f200f201b60b201b60b201b66b66b66b66b61b69b69b60b6b6b6b6b5b6b6b5b6b5b6b6b5b6b6b5b6b5b6b6b5b10b6b5b6b5b10b6b5b6b5b6b5b5b5b5b5b5b5b5b5bwd +هشدار [10-28|16:19:09.306] لطفا رمز عبور خود را به خاطر بسپارید! +حساب ایجاد شده 0x5e97870f263700f46aa00d967821199b9bc5a120 ``` -[مستندات GETH](https://geth.ethereum.org/docs) +[مستندات Geth](https://geth.ethereum.org/docs) شما می‌توانید از کلید خصوصی خود کلیدهای عمومی جدید به دست بیاورید، اما نمی‌توانید از کلیدهای عمومی کلید خصوصی به دست بیاورید. این یعنی شما باید کلید خصوصی خود را امن، و همان‌طور که اسمش می‌گوید، **خصوصی** نگه دارید. @@ -95,9 +100,15 @@ Repeat passphrase: آدرس قرارداد معمولا وقتی داده می‌شود که قرارداد توسط زنجیره‌ی بلوکی اتریوم گسترش داده می‌شود. آدرس از طریق سازنده‌ی آدرس و عدد تراکنش آن آدرس («Nonce») می‌آید. -## یادداشتی درباره‌ی کیف پول‌ها {#a-note-on-wallets} +## کلیدهای اعتبار سنج {#validators-keys} + +همچنین نوع دیگری از کلید در اتریوم وجود دارد که زمانی معرفی شد که اتریوم از اثبات کار به اجماع مبتنی بر اثبات سهام تغییر کرد. اینها کلیدهای 'BLS' هستند و برای شناسایی اعتبارسنج ها استفاده می شوند. این کلیدها را می توان به طور مؤثر جمع کرد تا پهنای باند مورد نیاز برای رسیدن به اجماع شبکه را کاهش دهد. بدون این تجمیع کلید، حداقل سهام برای یک اعتبارسنج بسیار بیشتر می‌شد. -حساب با کیف پول متفاوت است. یک حساب یک جفت‌کلید برای یک حساب اتریوم تحت مالکیت کاربر است. یک کیف پول یک رابط یا برنامه‌ی کاربردی است که به شما اجازه می‌دهد با حساب اتریومتان ارتباط برقرار کنید. +[اطلاعات بیشتر در مورد کلیدهای اعتبارسنج](/developers/docs/consensus-mechanisms/pos/keys/). + +## یادداشتی درباره‌ کیف پول‌ها {#a-note-on-wallets} + +حساب با کیف پول متفاوت است. یک حساب، یک جفت‌ کلید برای یک حساب اتریوم تحت مالکیت کاربر است. یک کیف پول، یک رابط یا اپلیکیشن است که به شما اجازه می‌دهد با حساب اتریومتان ارتباط برقرار کنید. ## یک نسخه‌ی آزمایشی تصویری {#a-visual-demo} @@ -109,7 +120,9 @@ Repeat passphrase: ## بیشتر بخوانید {#further-reading} -_آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش و آن را اضافه کنید!_ +- [درک حساب های اتریوم](https://info.etherscan.com/understanding-ethereum-accounts/) - etherscan + +_آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش کنید و به آن اضافه کنید!_ ## موضوعات مرتبط {#related-topics} diff --git a/src/content/translations/fa/developers/docs/blocks/index.md b/src/content/translations/fa/developers/docs/blocks/index.md index a52834e5564..835689a7eff 100644 --- a/src/content/translations/fa/developers/docs/blocks/index.md +++ b/src/content/translations/fa/developers/docs/blocks/index.md @@ -12,58 +12,141 @@ lang: fa ## چرا بلوک‌ها؟ {#why-blocks} -برای اطمینان از این که تمام افرادی که در شبکه‌ی اتریوم مشارکت دارند در یک وضعیت مشترک هستند و بر یک تاریخچه‌ی مشترک از تراکنش‌های توافق دارند، ما تراکنش‌ها را به بلوک‌ها دسته‌بندی می‌کنیم. این به این معنی است که ده‌ها (یا صدها) تراکنش یک‌جا به صورت مشترک کامیت (commit) می‌شوند، مورد توافق قرار می‌گیرند و همگام می‌شوند. +برای اطمینان از این که تمام افرادی که در شبکه‌ی اتریوم مشارکت دارند در یک وضعیت مشترک هستند و بر یک تاریخچه‌ی مشترک از تراکنش‌های توافق دارند، ما تراکنش‌ها را به بلوک‌ها دسته‌بندی می‌کنیم. این یعنی ده ها (یا صدها) تراکنش به صورت یکجا انجام می‌شوند و مورد توافق قرار می گیرند و همزمان به زنجیره اضافه می شوند. ![یک نمودار که تراکنش‌های یک بلوک که باعث تغییر وضعیت می‌شوند را نشان می‌دهد](./tx-block.png) _نمودار برگرفته از [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ -با فاصله انداختن بین کامیت‌ها، به تمام مشارکت‌کنندگان شبکه این فرصت داده می‌شود که به اجماع برسند: حتی با این که ده‌ها درخواست تراکنش در ثانیه اتفاق می‌افتند، بلوک‌های اتریوم تقریبا هر پانزده ثانیه یکبار کامیت می‌شوند. +با ایجاد فاصله زمانی بین هر بلاک، ما به همه شرکت‌کنندگان شبکه زمان کافی می دهیم که به اجماع ملحق شوند: این یعنی اگر ده ها درخواست ثبت عملیات جدید در ثانیه ارائه شود فقط هر دوازده ثانیه یک بار هر بلاک اتریوم به زنجیره اضافه می شود. ## بلوک‌ها چگونه کار می‌کنند {#how-blocks-work} برای حفظ تاریخچه‌ی تراکنش‌ها، بلوک‌ها ترتیب کاملاً مشخصی دارند‌ (هر بلوک جدیدی که ساخته می‌شود شامل یک ارجاع به بلوک والد خود است)، و تراکنش‌های درون هر بلوک هم ترتیب کاملاً مشخصی دارند. جز در موارد نادر، همواره همه‌ی مشارکت‌کنندگان شبکه بر سر تعداد دقیق و تاریخچه‌ی بلوک‌ها توافق دارند و در حال کار بر روی درخواست‌های تراکنش در حال انجام فعلی برای بلوک بعدی هستند. -زمانی که یک بلوک توسط یک استخراج‌گر روی شبکه گردآوری شد (استخراج شد)، میان بقیه‌ی افراد شبکه پخش می‌شود؛ همه‌ی گره‌ها این بلوک را به انتهای زنجیره‌ی بلوکی خود اضافه می‌کنند و استخراج ادامه می‌یابد. این فرایند بلوک‌چینی (استخراج) و فرایند کامیت/وفاق به نام پروتکل «اثبات کار» اتریوم شناخته می‌شود. +زمانی که یک بلاک توسط یک اعتبارسنج که رندم انتخاب شده است داخل شبکه گذاشته می‌شود، این به بقیه شبکه تکثیر می شود، همه گره‌ها این بلاک را به زنجیره خود اضافه می کنند و اعتبارسنج جدید برای بلاک بعدی انتخاب می شود. فرایند اضافه شدن بلاک و اجماع/تعهد در حال حاضر با پروتکل اثبات سهام اتریوم مشخص می شود. -### یک نسخه‌ی آزمایشی تصویری {#a-visual-demo} +## پروتکل اثبات سهام {#proof-of-work-protocol} - +پروتکل اثبات سهام دارای معانی زیر می باشد: -## پروتکل اثبات کار {#proof-of-work-protocol} +- گره‌های اعتبارسنجی باید مقدار 32 اتر در یک قرارداد مشخص سهام‌گذاری کنند تا در برابر رفتارهای خطا به عنوان یک وثیقه عمل کند. این موضوع به امنیت شبکه کمک می کند چون اقدامات غیر صادقانه می تواند بخشی از دارایهای سهام‌گذاری شده یا تمام آن را از بین ببرد. +- در هر اسلات ( فاصله زمانی دوازده ثانیه بین هر بلاک) یک اعتبارسنج بصورت تصادفی به عنوان پیشنهاد دهنده بلاک انتخاب می شود. آنها تراکنشها را با یکدیگر جمع می کنند و آنها را اجرا می کنند و و یک «حالت» جدید را در زنجیره ایجاد می کنند. آنها این داده ها را داخل یک بلاک جمع می کنند و آن را برای دیگر اعتبارسنج‌ها انتقال می دهند. +- باقی اعتبارسنجها که این اطلاعات را دریافت کرده اند، خود آن بلاک را اجرا می کنند تا از صحت تغییرات اعمال شده به حالت کلی بلاک چین مطمئن شوند. با فرض این که یک بلاک درست است، آنها می توانند آن را به دیتا بیس خود اضافه کنند. +- اگر یک اعتبارسنج متوجه شود که دو بلاک همزمان در یک اسلات تایید شده اند از الگوریتم فورک استفاده می کنند و آن بلاکی را اضافه می کند که اتر بیشتری را سهام گذاری کرده است. -اثبات کار به معنای زیر است: - -- گره‌های استخراج باید میزان متغیر اما قابل‌توجهی انرژی، زمان و توان پردازشی را برای ساختن «گواهی مشروعیت» برای پیشنهاد یک بلوک به شبکه خرج کنند. این کار کمک می‌کند که در شبکه حملات اسپم/ممانعت از خدمات رخ ندهد، چون تهیه‌ی این گواهی‌ها هزینه‌بر است. -- سایر استخراج‌گران که درباره‌ی بلوک جدید با یک گواهی مشروعیت معتبر شنیده‌اند باید بلوک جدید را به عنوان بلوک بعدی زنجیره‌ی بلوکی بپذیرند. -- زمان دقیق برای هر استخراجگر برای رسیدن به این گواه یک متغیر رندوم با واریانس بالا است. با این کار اطمینان حاصل می‌شود که احتمال این که دو استخراج‌گر همزمان یک بلوک را پیشنهاد دهند پایین باشد؛ وقتی که یک استخراج‌گر یک بلوک جدید گواهی‌شده را می‌سازد و پخش می‌کند، می‌توانند تقریباً مطمئن باشند که این بلوک بدون تعارض توسط شبکه به عنوان بلوک جدید زنجیره‌ی بلوکی پذیرفته می‌شود (هر چند که پروتکلی برای حل مشکل تعارض و مشکل ساخت دو زنجیره‌ی همزمان برای دو بلوک گواهی‌شده وجود دارد). - -[اطلاعات بیشتر درباره استخراج](/developers/docs/consensus-mechanisms/pow/mining/) +[اطلاعات بیشتر درباره‌ی اثبات سهام](/developers/docs/consensus-mechanisms/pos) ## چه چیزی در یک بلوک است؟ {#block-anatomy} -- `برچسب زمان` - زمانی که بلوک استخراج شده است. -- `blockNumber` - تعداد بلوک‌های درون زنجیره بلوکی. -- `کارمزد پایه بر گاز` - کمترین میزان کارمزد بر گاز لازم برای هر تراکنش که داخل بلوک بیاید. -- `سختی` - توان لازم برای استخراج بلوک. -- `mixHash` - یک شناسه‌ی یکتا برای آن بلوک. -- `هش پدر` یک مشخص‌کننده‌ی یکتا برای بلوکی که قبل از این بلوک آمده است (بلوک‌ها در یک زنجیره این‌گونه به هم متصل هستند). -- `تراکنش‌ها` - تراکنش‌های درون بلوک. -- `ریشه‌ی وضعیت` - وضعیت کلی سیستم: موجودی حساب‌ها، حافظه‌ی قراردادها، کد قراردادها و nounceهای حساب‌ها در آن هستند. -- `نانس` - یک هش که وقتی با mixHash ترکیب می‌شود اثبات می‌کند که بلوک از [اثبات کار](/developers/docs/consensus-mechanisms/pow/) گذشته است. +مقدار زیادی اطلاعات داخل یک بلوک می باشد. در بالاترین سطح، یک بلوک دارای فیلدهای زیر می باشد: + +| میدان | توضیح | +| :--------------- | :------------------------------------------------------------------- | +| `اسلات` | اسلاتی که بلوک به آن متعلق است | +| `proposer_index` | شناسه اعتبارسنجی که بلاک را پیشنهاد می‌کند | +| `parent_root` | هش بلاک قبلی | +| `state_root` | هش ریشه موضوع حالت | +| `body` | یک موضوع چندین فیلد را داخل خود ذخیره می کند که در زیر ارائه شده است | + +`بدنه` بلاک که خود دارای چندین فیلد می باشد: + +| میدان | توضیح | +| :------------------- | :------------------------------------------------------------------------ | +| `randao_reveal` | یک مقدار که برای تعیین پیشنهاددهنده بلاک بعدی استفاده می شود | +| `eth1_data` | اطلاعاتی در مورد قرارداد سپرده | +| `graffiti` | داده اختیاری که برای تگ بلاک‌ها استفاده می شود | +| `proposer_slashings` | لیست اعتبارسنجهایی که قرار است اسلش شوند | +| `attester_slashings` | لیست اعتبارسنجهایی که قرار است اسلش شوند | +| `تصدیق‌ها` | لیست تصدیق‌هایی که بلاک فعلی را تایید می‌کنند | +| `سپرده` | لیست سپرده‌های جدید مربوط به قرارداد سپرده | +| `voluntary_exits` | لیست اعتبارسنج‌های در حال خروج از شبکه | +| `sync_aggregate` | زیر مجموعه ای از اعتبارسنج‌هایی که برای کاربرهای رقیق سرویس رسانی می کنند | +| `execution_payload` | تراکنشهایی که از کاربرهای اجرایی عبور کرده اند | + +فیلد `تصدیق ها` که در واقع لیستی از تمام تصدیق های بلاک می باشد. تصدیق ها دارای اطلاعات مربوط به خود هستند که چندین قطعه داده را داخل خود دارند. هر تصدیق دارای اطلاعات زیر می باشد: + +| میدان | توضیح | +| :----------------- | :-------------------------------------------------- | +| `aggregation_bits` | لیستی از اعتبارسنج‌ها که در این تصدیق شرکت کرده اند | +| `داده‌‌ها` | یک کانتینر که چند تا فیلد فرعی دارد | +| `امضا` | یک امضا گروهی از تمام اعتبارسنج‌های تصدیق کننده | + +فیلد `داده‌` در `تصدیق` شامل موارد زیر می باشد: + +| میدان | توضیح | +| :------------------ | :----------------------------------------------------- | +| `اسلات` | اسلات مربوط به تصدیق | +| `index` | شاخص‌های مربوط به اعتبارسنج‌های تصدیق | +| `beacon_block_root` | هش ریشه مربوط به بلاک بیکن که این موضوع را در خود دارد | +| `منبع` | آخرین نقطه بازرسی تایید شده | +| `target` | آخرین بلاک مرز ایپوک | + +اجرا کردن تراکنشها داخل `محل اجراها` باعث اپدیت شدن حالت کلی بلاکچین می شود. تمام کاربرها نراکنشهای مربوط به `محل اجرای` بلاکها را مجددا اجرا می کنند که مطمئن شوند که حالت جدید با فیلد `ریشه بلاک` همخوانی دارد. با این فرایند کاربرها می توانند اعلام کنند که یک بلاک معتبر است و برای اضافه شدن به بلاک چین آنها امنیت دارد. `محل اجراها` نیز خود داری چندین فیلد می باشد. همچنین یک تیتر با عنوان `محل اجرا` وجود دارد که خلاصه ای از داده‌های اجرا را در خود نگه می دارد. ساختارهای داده مطابق زیر سازماندهی می‌شوند: + +`تیتر یا سربرگ محل اجرا` که فیلدهای زیر را دارد: + +| میدان | توضیح | +| :------------------ | :------------------------------------------------------ | +| `parent_hash` | هش بلاک والد | +| `fee_recipient` | آدرس حسابی که قرار است کارمزد تراکنش به آن پرداخت شود | +| `state_root` | هش ریشه مربوط به حالت کلی بعد از اعمال تغییرات این بلاک | +| `receipts_root` | هش رسیدهای تراکنش | +| `logs_bloom` | ساختار داده ها دارای گزارش‌های رویداد | +| `prev_randao` | مقدار استفاده شده در انتخاب اعتبارسنج تصادفی | +| `block_number` | شماره بلاک فعلی | +| `gas_limit` | ماگزیمم گاز اجازه داده شده در این بلاک | +| `gas_used` | مقدار واقعی گاز استفاده شده در این بلاک | +| `برچسب زمان` | زمان بلاک | +| `extra_data` | اطلاعات اضافی دلخواه به عنوان بایت‌های خام | +| `base_fee_per_gas` | مقدار کارمزد پایه | +| `block_hash` | هش بلاک اجرایی | +| `transactions_root` | هش ریشه تراکنشها داخل محل اجرا | +| `withdrawal_root` | هش ریشه برداشت‌ها در محل اجرا | + +`محل اجرا` نیز خود دارای موارد زیر است (توجه کنید که این با سربرگ یکی است، جز این که به جای هش ریشه تراکنشها، شامل لیست واقعی تراکنشها و اطلاعات برداشت است): + +| میدان | توضیح | +| :----------------- | :------------------------------------------------------ | +| `parent_hash` | هش بلاک والد | +| `fee_recipient` | آدرس حسابی که قرار است کارمزد تراکنش به آن پرداخت شود | +| `state_root` | هش ریشه مربوط به حالت کلی بعد از اعمال تغییرات این بلاک | +| `receipts_root` | هش رسیدهای تراکنش | +| `logs_bloom` | ساختار داده ها دارای گزارش‌های رویداد | +| `prev_randao` | مقدار استفاده شده در انتخاب اعتبارسنج تصادفی | +| `block_number` | شماره بلاک فعلی | +| `gas_limit` | ماگزیمم گاز اجازه داده شده در این بلاک | +| `gas_used` | مقدار واقعی گاز استفاده شده در این بلاک | +| `برچسب زمان` | زمان بلاک | +| `extra_data` | اطلاعات اضافی دلخواه به عنوان بایت‌های خام | +| `base_fee_per_gas` | مقدار کارمزد پایه | +| `block_hash` | هش بلاک اجرایی | +| `تراکنش‌ها` | لیست تراکنشهایی که باید اجرا شوند | +| `برداشت وجه` | لیست موضوع‌های برداشت | + +لیست `برداشت‌ها` شامل موضوع‌های `برداشت` با ساختاربندی زیر: + +| میدان | توضیح | +| :--------------- | :------------------------------ | +| `آدرس` | آدرس حسابی که که برداشت شده است | +| `amount` | مقدار برداشت شده | +| `index` | مقدار شاخص برداشت | +| `validatorIndex` | مقدار شاخص اعتبارسنج | ## زمان بلوک {#block-time} -زمان بلوک نشان‌دهنده‌ی میزان زمانی است که نیاز است تا یک بلوک جدید استخراج شود. در اتریوم، میانگین زمان بلوک بین 12 تا 14 ثانیه است و بعد از هر بلوک محاسبه می‌شود. زمان بلوک مورد انتظار به‌عنوان یک عدد ثابت مشخص در لایه‌ی پروتکل مشخص می‌شود و برای تأمین امنیت شبکه‌ هنگامی که استخراج‌گران توان پردازشی بیشتری اضافه می‌کنند استفاده می‌شود. میانگین زمان بلوک با زمان بلوک مورد انتظار مقایسه می‌شود و اگر میانگین زمان بلوک بیشتر باشد، سختی در هدر بلوک کاهش می‌یابد. اگر میانگین زمان بلوک کمتر باشد، سختی در هدر بلوک افزایش خواهد یافت. +زمان بلاک، به بلاکهای جدا شده از هم با زمان اشاره دارد. در اتریوم، زمان به دوره های دوازده ثانیه به نام 'اسلات' تقسیم شده است. در هر اسلات یک اعتبارسنج برای پیشنهاد دادن بلاک انتخاب میشود. با فرض اینکه تمام اعتبارسنج‌ها آنلاین و کاملا آماده هستند، در هر اسلات یک بلوک به وجود می آید، و به این ترتیب زمان هر بلاک 12 ثانیه می شود. با این حال، گاهی اوقات اعتبار سنجی که قرار است بلاک را تایید کند آنلاین نیست تا بلاک را پیشنهاد دهد، در نتیجه اسلات بعضی اوقات خالی میماند. + +این اجرا با سیستم‌های اثبات-کار که در آن طول زمانی بلوک ها احتمالی است و با سختی استخراج هدف پروتکل تغییر می کند متفاوت است. [زمان تقریبی هر بلاک](https://etherscan.io/chart/blocktime) در اتریوم مثال کاملی از این است که در آن گذار از اثبات کار به اثبات سهام می‌تواند به طور آشکار بر پایه هماهنگی زمان بلاک 12 ثانیه‌ای جدید استنتاج شود. ## اندازه‌ی بلوک {#block-size} -یک نکته‌ی مهم نهایی این است که بلوک‌ها از نظر اندازه محدود هستند. هر بلوک اندازه‌ی هدفی به میزان 15 میلیون گاز دارد، اما اندازه‌ی بلوک‌ها می‌تواند بسته به تقاضای شبکه‌ بیشتر یا کمتر شود و بیشترین حد آن 30 میلیون گاز است (2 برابر اندازه‌ی هدف بلوک). مجموع کل گاز خرج‌شده توسط تراکنش‌ها در یک بلوک باید کمتر از حد گاز بلوک باشد. این نکته‌ی مهمی است، چون نشان می‌دهد یک بلوک نمی‌تواند به‌اندازه‌ی دلخواه بزرگ باشد. اگر بلوک‌ها بتوانند به اندازه‌ی دلخواه بزرگ باشند، آن‌گاه گره‌های کاملی که اندکی قدرت کمتری دارند با توجه به سرعت و فضای مورد نیاز نمی‌توانند با شبکه پیش بیایند. +یک نکته‌ مهم نهایی این است که خود بلوک‌ها از نظر اندازه محدود هستند. هر بلوک یک اندازه‌ هدف به میزان 15 میلیون گاز دارد، اما اندازه‌ بلوک‌ها می‌تواند بسته به تقاضای شبکه‌ بیشتر یا کمتر شود و بیشترین حد آن 30 میلیون گاز است (2 برابر اندازه‌ هدف بلوک). مجموع کل گاز خرج‌شده توسط همه تراکنش‌ها در بلوک باید کمتر از حد گاز بلوک باشد. این نکته‌ مهمی است، چون تضمین می‌کند که یک بلوک نمی‌تواند به‌اندازه‌ دلخواه بزرگ باشد. اگر بلوک‌ها بتوانند به اندازه‌ دلخواه بزرگ باشند، آن‌گاه گره‌های کاملی که اندکی قدرت کمتری دارند با توجه به سرعت و فضای مورد نیاز به تدریج نمی‌توانند با شبکه پیش بیایند. هر چه بلوک بزرگتر باشد، توان محاسبه بیشتری برای پردازش به موقع آن در بلوک بعدی لازم است. این یک نیروی متمرکز کننده است، که با محدود کردن سایز بلوک محدود می‌شود. ## بیشتر بدانید {#further-reading} -_آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش کنید و آن را اضافه کنید!_ +_آیا می‌خواهید در مورد منابع جامعه که به شما کمک کرده بدانید؟ این صفحه را ویرایش و اضافه کنید!_ ## موضوعات مرتبط {#related-topics} -- [استخراج](/developers/docs/consensus-mechanisms/pow/mining/) - [تراکنش‌ها](/developers/docs/transactions/) - [گاز](/developers/docs/gas/) +- [اثبات سهام](/developers/docs/consensus-mechanisms/pos) diff --git a/src/content/translations/fa/developers/docs/blocks/tx-block.png b/src/content/translations/fa/developers/docs/blocks/tx-block.png new file mode 100644 index 0000000000000000000000000000000000000000..18ca975ebfefb8f64b459d46f4bb2dc6ec3c87cf GIT binary patch literal 14935 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 literal 0 HcmV?d00001 diff --git a/src/content/translations/fa/developers/docs/dapps/index.md b/src/content/translations/fa/developers/docs/dapps/index.md index 1653a2dc844..18d146703bc 100644 --- a/src/content/translations/fa/developers/docs/dapps/index.md +++ b/src/content/translations/fa/developers/docs/dapps/index.md @@ -25,41 +25,41 @@ lang: fa برای معرفی dapp‌ها، باید قراردادهای هوشمند را معرفی کنیم - چون اصطلاح بهتری نداریم آن را بک‌اند برای dapp می‌نامیم. برای یک نمای کلی دقیق، به بخش ما در مورد [قراردادهای هوشمند](/developers/docs/smart-contracts/) بروید. -قرارداد هوشمند کدی است که بر روی زنجیره‌ی بلوکی اتریومی وجود دارد و دقیقاً طبق برنامه اجرا می‌شود. پس از بکارگیری قراردادهای هوشمند در شبکه، نمی‌توانید آن‌ها را تغییر دهید. dappها می‌توانند غیرمتمرکز باشند، زیرا منطقی نوشته‌شده در قرارداد کنترلشان می‌کند، نه یک فرد یا شرکت. این مهم همچنین به این معنی است که شما باید قراردادهای خود را با دقت طراحی کنید و آن‌ها را کاملاً آزمایش کنید. +قرارداد هوشمند کدی است که بر روی زنجیره‌ی بلوکی اتریوم وجود دارد و دقیقاً طبق برنامه اجرا می‌شود. پس از استقرار قراردادهای هوشمند در شبکه، نمی‌توانید آن‌ها را تغییر دهید. dappها می‌توانند غیرمتمرکز باشند، زیرا منطق نوشته‌شده در قرارداد کنترلشان می‌کند، نه یک فرد یا شرکت. این مهم همچنین به این معنی است که شما باید قراردادهای خود را با دقت طراحی کنید و آن‌ها را کاملاً آزمایش کنید. ## مزایای توسعه‌ی dapp {#benefits-of-dapp-development} -- **خرابی صفر** – وقتی قراردادی هوشمند بکارگرفته شده است و روی زنجیره‌ی بلوکی قرار گرفته است، شبکه به‌عنوان یک کل همیشه می‌تواند به کلاینت‌هایی که دنبال تعامل با قرارداد هستند خدمات‌رسانی کند. بنابراین فعالان بداندیش نمی‌توانند حملات به خدمات را با هدف قرار دادن dappهای منفرد آغاز کنند. -- **حریم خصوصی** - برای بکارگیری یا تعامل با یک dapp، نیازی به ارائه‌ی هویت واقعی ندارید. +- **خرابی صفر** – وقتی قراردادی هوشمند مستقر شده و روی زنجیره‌ی بلوکی قرار گرفته است، شبکه به‌عنوان یک کل همیشه می‌تواند به کلاینت‌هایی که دنبال تعامل با قرارداد هستند خدمات‌رسانی کند. بنابراین فعالان بداندیش نمی‌توانند حملات به خدمات را با هدف قرار دادن dappهای منفرد آغاز کنند. +- **حریم خصوصی** - برای استقرار یا تعامل با یک dapp، نیازی به ارائه‌ی هویت واقعی ندارید. - **مقاومت در برابر سانسور** – هیچ نهاد واحدی در شبکه نمی‌تواند کاربران را از ارسال تراکنش‌ها، استقرار dapp‌ها یا خواندن داده‌ها از زنجیره‌ی بلوکی منع کند. -- **صحت و تمامیت کامل داده** - داده‌های ذخیره‌شده در زنجیره‌ی بلوکی، به لطف رمزنگاری‌های اولیه، تغییرناپذیر و غیرقابل‌انکار هستند. عوامل بداندیش نمی‌توانند تراکنش‌ها یا سایر داده‌هایی را که قبلاً عمومی شده‌اند جعل کنند. -- **محاسبات بدون اعتماد/رفتار قابل تأیید** – قراردادهای هوشمند را می‌توان تجزیه و تحلیل کرد و تضمین کرد که به روش‌های قابل پیش‌بینی و بدون نیاز به اعتماد به یک مقام مرکزی اجرا شوند. این مورد در مدل‌های سنتی صادق نیست. به عنوان مثال، هنگامی که ما از سیستم‌های بانکداری برخط استفاده می‌کنیم، باید اعتماد کنیم که مؤسسات مالی از داده‌های مالی ما سوء استفاده نمی‌کنند، سوابق را دستکاری نمی‌کنند یا هک نمی‌شوند. +- **صحت و تمامیت کامل داده** - داده‌های ذخیره‌شده در زنجیره‌ی بلوکی، به لطف رمزنگاری‌های اولیه، تغییرناپذیر و غیرقابل‌انکار هستند. عوامل بداندیش نمی‌توانند تراکنش‌ها یا سایر داده‌هایی را که قبلاً عمومی شده‌اند، جعل کنند. +- **محاسبات بدون اعتماد/رفتار قابل تأیید** – قراردادهای هوشمند را می‌توان تجزیه و تحلیل کرد و تضمین کرد که به روش‌های قابل‌پیش‌بینی و بدون نیاز به اعتماد به یک مقام مرکزی اجرا شوند. این مورد در مدل‌های سنتی صادق نیست. به عنوان مثال، هنگامی که ما از سیستم‌های بانکداری آنلاین استفاده می‌کنیم، باید اعتماد کنیم که مؤسسات مالی از داده‌های مالی ما سوء استفاده نمی‌کنند، سوابق را دستکاری نمی‌کنند یا هک نمی‌شوند. ## معایب توسعه‌ی dapp {#drawbacks-of-dapp-development} -- **نگهداری** – نگهداری از Dappها دشوارتر است زیرا اصلاح کد و داده‌های منتشر شده در زنجیره‌ی بلوکی سخت‌تر است. برای توسعه‌دهندگان سخت است که به‌روزرسانی‌های dapp خود (یا داده‌های زیربنایی ذخیره‌شده توسط dapp) را پس از بکارگیری آن‌ها انجام دهند - حتی اگر اشکالات یا خطرات امنیتی در نسخه‌ی قدیمی شناسایی شده باشند. -- **سربار عملکرد** - سربار عملکرد بسیار زیادی وجود دارد، و مقیاس‌پذیری واقعاً سخت است. برای دستیابی به سطح امنیت، صحت و تمامیت، شفافیت و قابلیت اطمینان مورد نظر اتریوم، هر گره هر تراکنش را اجرا و ذخیره می‌کند. علاوه بر این، اثبات کار نیز زمان‌بر است. یک محاسبه سر انگشتی، سربار را چیزی در حدود 1,000,000 برابر محاسبات استاندارد فعلی نشان می‌دهد. +- **نگهداری** – نگهداری از dappها دشوارتر است زیرا اصلاح کد و داده‌های منتشر شده در زنجیره‌ی بلوکی سخت‌تر است. برای توسعه‌دهندگان سخت است که به‌روزرسانی‌های dapp خود (یا داده‌های زیربنایی ذخیره‌شده توسط dapp) را پس از استقرار آن‌ها انجام دهند، حتی اگر اشکالات یا خطرات امنیتی در نسخه‌ی قدیمی شناسایی شده‌باشند. +- **سربار عملکرد** - سربار عملکرد بسیار زیادی وجود دارد، و مقیاس‌پذیری واقعاً سخت است. برای دستیابی به سطح امنیت، صحت و تمامیت، شفافیت و قابلیت اطمینان مورد نظر اتریوم، هر گره هر تراکنش را اجرا و ذخیره می‌کند. علاوه بر این، اجماع اثبات سهام نیز به زمان نیاز دارد. - **ازدحام شبکه** – وقتی یک برنامه از منابع محاسباتی بیش از حد استفاده می‌کند، از کل شبکه پشتیبان‌گیری می‌شود. در حال حاضر، شبکه فقط می‌تواند حدود ‏10‎-15 تراکنش را در ثانیه پردازش کند. اگر تراکنش‌ها سریع‌تر از این ارسال شوند، مجموعه تراکنش‌های تأیید نشده به سرعت می‌تواند افزایش یابد. - **تجربه‌ی کاربری** – مهندسی تجربیات کاربرپسند ممکن است دشوارتر باشد، زیرا عموماً برای کاربر نهایی عادی سخت است که مجموعه‌ای از ابزار لازم برای تعامل با زنجیره‌ی بلوکی را به شیوه‌ای واقعاً ایمن را ایجاد کند. -- **متمرکز کردن** – راه‌حل‌های کاربرپسند و توسعه‌دهنده‌پسند ساخته‌شده بر مبنای لایه‌ی پایه اتریوم ممکن است به هر حال شبیه سرویس‌های متمرکز به نظر برسند. به‌عنوان مثال، چنین سرویس‌هایی ممکن است کلیدها یا سایر اطلاعات حساس را در سمت سرور ذخیره کنند، با استفاده از یک سرور متمرکز یک فرانت‌اند ارائه دهند، یا قبل از نوشتن در زنجیره‌ی بلوکی، منطق تجاری مهمی را بر روی یک سرور متمرکز اجرا کنند. متمرکزسازی بسیاری از (اگر نه همه) مزایای زنجیره‌ی بلوکی را نسبت به مدل سنتی حذف می‌کند. +- **متمرکز کردن** – راه‌حل‌های کاربرپسند و توسعه‌دهنده‌پسند ساخته‌شده بر روی لایه‌ی پایه اتریوم ممکن است به هر حال شبیه سرویس‌های متمرکز به نظر برسند. به‌عنوان مثال، چنین سرویس‌هایی ممکن است کلیدها یا سایر اطلاعات حساس را در سمت سرور ذخیره کنند، با استفاده از یک سرور متمرکز یک فرانت‌اند ارائه دهند، یا قبل از نوشتن در زنجیره‌ی بلوکی، منطق تجاری مهمی را بر روی یک سرور متمرکز اجرا کنند. متمرکزسازی بسیاری از (اگر نه همه) مزایای زنجیره‌ی بلوکی را نسبت به مدل سنتی حذف می‌کند. ## با تصویر راحت‌تر یاد می‌گیرید؟ {#visual-learner} -## ابزارهای dapp {#dapp-tools} +## ابزارهایی برای ساخت dapps {#dapp-tools} -**Scaffold-ETH _- به‌سرعت Solidity را با استفاده از یک فرانت‌اند که با قرارداد هوسمندتان سازگار است آزمایش کنید._** +**Scaffold-ETH _- به‌سرعت Solidity را با استفاده از یک فرانت‌اند که با قرارداد هوشمندتان سازگار است آزمایش کنید._** - [گیت‌هاب](https://github.com/austintgriffith/scaffold-eth) - [dapp نمونه](https://punkwallet.io/) -**برنامه‌ی اتریومی بسازید _- با یک فرمان برنامه‌های مجهز به اتریوم بسازید._** +**برنامه‌ی اتریومی بسازید _- با یک فرمان برنامه‌های بر پایه‌ی اتریوم بسازید._** - [گیت‌هاب](https://github.com/paulrberg/create-eth-app) -\*\*Dapp با یک کلیک \_- ابزار FOSS برای تولید صفحات فرانت dapp از -ABI. +\*\*One Click Dapp \_- ابزار FOSS برای تولید صفحات فرانت dapp از +‏ABI‏. - [oneclickdapp.com](https://oneclickdapp.com) - [گیت هاب](https://github.com/oneclickdapp/oneclickdapp-v1) @@ -69,15 +69,23 @@ ABI. - [etherflow.quiknode.io](https://etherflow.quiknode.io/) - [گیت‌هاب](https://github.com/abunsen/etherflow) +**thirdweb _- کیت توسعهٔ نرم‌افزار به هر زبان، قراردادهای هوشمند، ابزارها، و زیرساخت توسعه Web3._** + +- [صفحه اصلی](https://thirdweb.com/) +- [اسناد](https://portal.thirdweb.com/) +- [گیت هاب](https://github.com/thirdweb-dev/) + ## بیشتر بخوانید {#further-reading} -- [معماری یک برنامه Web 3.0](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _پریتی کسیردی_ -- [راهنمای 2021 برای برنامه‌های غیرمتمرکز](https://limechain.tech/blog/what-are-dapps-the-2021-guide/) - _LimeChain_ -- [برنامه‌های غیرمتمرکز چه هستند؟](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps) - _Gemini_ +- [کاوش در صرافی‌های غیرمتمرکز](/dapps) +- [معماری یک اپلیکیشن Web 3.0](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _پریتی کسیردی_ +- [راهنمای 2021 برای اپلیکیشن‌های غیرمتمرکز](https://limechain.tech/blog/what-are-dapps-the-2021-guide/) -‏ _LimeChain_ +- [اپلیکیشن‌های غیرمتمرکز چه هستند؟](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps) -‏ _Gemini_ +- [اپلیکیشن‌های غیرمتمرکز پرطرفدار](https://www.alchemy.com/dapps) - _Alchemy_ -_آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش کنید و آن را اضافه کنید!_ +_آیا می‌خواهید در مورد منابع جامعه که به شما کمک کرده بدانید؟ این صفحه را ویرایش و اضافه کنید!_ ## موضوعات مرتبط {#related-topics} -- [مقدمه‌ای بر پشته‌ی اتریوم](/developers/docs/ethereum-stack/) +- [مقدمه ای بر پشته اتریوم](/developers/docs/ethereum-stack/) - [چارچوب‌های توسعه](/developers/docs/frameworks/) diff --git a/src/content/translations/fa/developers/docs/evm/evm.png b/src/content/translations/fa/developers/docs/evm/evm.png new file mode 100644 index 0000000000000000000000000000000000000000..dd2ef30f1ce8084def48b31a6ecfc5bd25874f0c GIT binary patch literal 30152 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 ضروری است. همچنین راحت بودن با مفاهیم رمزنگاری/زنجیره‌ی بلوکی همچون [توابع هش](https://wikipedia.org/wiki/Cryptographic_hash_function)، اثبات کار و [درخت مرکل](https://wikipedia.org/wiki/Merkle_tree) نیز مفید خواهد بود. +برای درک EVM آشنایی اولیه با اصطلاحات رایج در علوم کامپیوتر مانند [بایت](https://wikipedia.org/wiki/Byte)، [حافظه](https://wikipedia.org/wiki/Computer_memory) و یک [پشته]() ضروری است. همچنین راحت بودن با مفاهیم رمزنگاری/بلاکچین مانند [توابع هش](https://wikipedia.org/wiki/Cryptographic_hash_function) و درخت مرکل. ## از دفتر کل تا ماشین حالات متناهی {#from-ledger-to-state-machine} -تشبیه «دفتر کل توزیع‌شده» اغلب برای توصیف زنجیره‌های بلوکی مانند بیت‌کوین استفاده می‌شود که یک ارز غیرمتمرکز را با استفاده از ابزارهای بنیادین رمزنگاری امکان‌پذیر می‌سازد. یک ارز رمزنگاری‌شده مانند یک ارز عادی عمل می‌کند زیرا قوانینی را که می‌توان و نمی‌توان برای اصلاح دفتر کل انجام داد، تعیین می‌کند. به عنوان مثال، یک آدرس بیت کوین نمی‌تواند بیت کوین بیشتری از آنچه قبلا دریافت کرده است خرج کند. این قوانین زیربنای تمامی تراکنش‌های بیت‌کوین و بسیاری از زنجیره‌های بلوکی دیگر است. +تشبیه «دفتر کل توزیع‌شده» اغلب برای توصیف زنجیره‌های بلوکی مانند بیت‌کوین استفاده می‌شود که یک ارز غیرمتمرکز را با استفاده از ابزارهای بنیادین رمزنگاری امکان‌پذیر می‌سازد. دفتر کل سوابقی از فعالیت ها را حفظ می کند که باید به مجموعه ای از قوانین پایبند باشد که آنچه را که شخص می تواند و نمی تواند انجام دهد تا دفتر کل را اصلاح کند، تعیین می کنند. به عنوان مثال، یک آدرس بیت کوین نمی‌تواند بیت کوین بیشتری از آنچه قبلا دریافت کرده است خرج کند. این قوانین زیربنای تمامی تراکنش‌های بیت‌کوین و بسیاری از زنجیره‌های بلوکی دیگر است. در حالی که اتریوم دارای رمزارز بومی خود (اتر) است که تقریباً به‌طور کامل از قوانین شهودی مشابهی پیروی می‌کند، کارکرد بسیار قدرتمندتری را نیز ممکن می‌سازد: [قراردادهای هوشمند](/developers/docs/smart-contracts/). برای این ویژگی پیچیده‌تر، قیاس پیچیده‌تری نیز لازم است. به جای یک دفتر کل توزیع شده، اتریوم یک [ماشین حالات متناهی](https://wikipedia.org/wiki/Finite-state_machine) توزیع‌شده است. وضعیت اتریوم یک ساختار داده‌ی بزرگ است که نه‌تنها همه حساب‌ها و موجودی‌ها را در خود نگه می‌دارد، بلکه _وضعیت ماشین_ را نیز در خود جای می‌دهد که می‌تواند طبق مجموعه‌ای از قوانین از پیش تعریف‌شده از بلوکی به بلوک دیگر تغییر کند و کد ماشینی دلخواه را اجرا کند. قوانین خاص تغییر حالت از بلوک به بلوک توسط EVM تعریف شده است. -![نموداری که ساختار EVM را نشان می‌دهد](./evm.png) _نمودار برگرفته از[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +![نموداری که ساختار EVM را نشان می‌دهد](./evm.png) _نمودار برگرفته از[‏Ethereum EVM illustrated‏](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ ## تابع گذار حالت اتریوم {#the-ethereum-state-transition-function} @@ -32,7 +32,7 @@ Y(S, T)= S' ### وضعیت {#state} -در زمینه‌ی اتریوم، وضعیت یک ساختار داده‌های عظیم به نام [درخت مارکل پاتریشیای اصلاح‌شده](https://eth.wiki/en/fundamentals/patricia-tree) است که همه‌ی [حساب‌ها](/developers/docs/accounts/) را با هش مرتبط نگه می‌دارد و به یک هش ریشه‌ای که در زنجیره بلوکی ذخیره‌شده قابل تقلیل است. +در زمینه‌ی اتریوم، وضعیتْ یک ساختار داده‌ای عظیم به نام [درخت مارکل پاتریشیای اصلاح‌شده](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) است که همه‌ی [حساب‌ها](/developers/docs/accounts/) را با هش مرتبط نگه می‌دارد و به یک هش ریشه‌ای که در زنجیره‌ی بلوکی ذخیره‌شده قابل تقلیل است. ### تراکنش‌ها {#transactions} @@ -48,22 +48,22 @@ EVM به صورت یک [ماشین پشته‌ای](https://wikipedia.org/wiki/S با این حال، قراردادها حاوی یک درخت _حافظه_ مرکل پاتریشیا (به‌عنوان یک آرایه کلمه قابل آدرس‌دهی به کلمه) هستند که با حساب موردنظر و بخشی از حالت همگانی مرتبط است. -بایت‌کد قرارداد هوشمند کامپایل‌شده به صورت تعدادی [کدگذاری‌های](/developers/docs/evm/opcodes) EVM اجرا می‌شود که عملیات‌های استاندارد پشته مانند `XOR`، `AND `، `ADD`، `SUB` و غیره را انجام می‌دهد. EVM همچنین تعدادی عملیات پشته‌ی مخصوص زنجیره‌ی بلوکی را نیز اجرا می‌کند، مانند `ADDRESS`، `BALANCE`، `BLOCKHASH` و غیره. +بایت‌کد قرارداد هوشمند کامپایل‌شده به صورت تعدادی [کدگذاری‌های‏](/developers/docs/evm/opcodes) EVM اجرا می‌شود که عملیات‌های استاندارد پشته مانند `XOR‏`،‏ `AND‏ `، `ADD`،‏ `SUB` و غیره را انجام می‌دهد. EVM همچنین تعدادی عملیات پشته‌ی مخصوص زنجیره‌ی بلوکی را نیز اجرا می‌کند، مانند `ADDRESS`،‏ `BALANCE`،‏ `BLOCKHASH` و غیره. -![نموداری که نشان می‌دهد کجا گاز برای عملیات EVM موردنیاز است](../gas/gas.png) _نمودارها برگرفته از[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +![نموداری که نشان می‌دهد کجا گاز برای عملیات EVM موردنیاز است](../gas/gas.png) _نمودارها برگرفته از[‏Ethereum EVM illustrated‏](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ ## پیاده‌سازی EVM {#evm-implementations} تمام پیاده‌سازی‌های EVM باید به مشخصاتی که در یلو پیپر اتریوم توضیح داده شده است پایبند باشند. -در طول تاریخ 5 ساله اتریوم، EVM مورد بازنگری‌های متعددی قرار گرفته است و چندین پیاده‌سازی EVM در زبان‌های برنامه‌نویسی مختلف وجود دارد. +در تاریخ 9 ساله اتریوم، EVM دست‌خوش چندین بازنگری شده است و چندین اجرا و پیاده‌سازی از EVM در زبان های مختلف برنامه نویسی وجود دارد. -تمامی [کلاینت‌های اتریومی](/developers/docs/nodes-and-clients/#execution-clients) یک پیاده‌سازی EVM را دربر دارند. به‌علاوه چندین پیاده‌سازی مستقل وجود دارد، از جمله: +[کاربرهای اجرای اتریوم](/developers/docs/nodes-and-clients/#execution-clients) شامل یک اجرای EVM هستند. علاوه بر این، چندین اجرای مستقل وجود دارد، از جمله: -- [Py-EVM](https://github.com/ethereum/py-evm) - _پایتون_ -- [evmone](https://github.com/ethereum/evmone) - _سی‌پلاس‌پلاس_ -- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) - _جاوا اسکریپت_ -- [eEVM](https://github.com/microsoft/eevm) - _سی‌پلاس‌پلاس_ +- [Py-EVM](https://github.com/ethereum/py-evm) ‏- _‏پایتون_ +- [evmone](https://github.com/ethereum/evmone) ‏- _سی‌پلاس‌پلاس_ +- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) ‏- _جاوا اسکریپت_ +- [eEVM](https://github.com/microsoft/eevm) ‏- _سی‌پلاس‌پلاس_ ## اطلاعات بیشتر {#further-reading} @@ -71,6 +71,7 @@ EVM به صورت یک [ماشین پشته‌ای](https://wikipedia.org/wiki/S - [Jellopaper با نام مستعار KEVM: معناشناسی EVM در K](https://jellopaper.org/) - [بژپیپر](https://github.com/chronaeon/beigepaper) - [کدگذاری‌های ماشین مجازی اتریوم](https://www.ethervm.io/) +- [مرجع تعاملی کدگذاری های ماشین مجازی اتریوم](https://www.evm.codes/) - [مقدمه‌ای کوتاه در مستندات Solidity](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6) ## موضوعات مرتبط {#related-topics} diff --git a/src/content/translations/fa/developers/docs/evm/opcodes/index.md b/src/content/translations/fa/developers/docs/evm/opcodes/index.md new file mode 100644 index 00000000000..c8af37ba1ac --- /dev/null +++ b/src/content/translations/fa/developers/docs/evm/opcodes/index.md @@ -0,0 +1,170 @@ +--- +title: کدگذاری ها برای ماشین مجازی اتریوم (EVM) +description: لیستی از همه کدگذاری های (opcodes) موجود برای ماشین مجازی اتریوم (EVM). +lang: fa +--- + +## نگاه اجمالی {#overview} + +این یک نسخه بروز شده از صفحه مرجع EVM در [wolflo/evm-opcodes](https://github.com/wolflo/evm-opcodes) است. همچنین از [Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf)، [Jello Paper](https://jellopaper.org/evm/) و پیاده‌سازیِ [geth](https://github.com/ethereum/go-ethereum) گرفته شده است. این به عنوان یک مرجع قابل دسترس در نظر گرفته شده است، اما به شکل ویژه دقیق نیست. اگر می‌خواهید از درستی هر حالت خاصی که نرم‌افزار در آن قرار می‌گیرد مطمئن باشید، توصیه می‌شود از Jello Paper یا پیاده‌سازی کاربر استفاده کنید. + +به دنبال یک مرجع تعاملی هستید؟ پس اینجا را ببینید [evm.codes](https://www.evm.codes/). + +برای عملیات هایی با هزینه گس پویا، به [gas.md](https://github.com/wolflo/evm-opcodes/blob/main/gas.md) مراجعه کنید. + +💡 نکته: برای مشاهده کل خطوط، از `[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` | diff --git a/src/content/translations/fa/developers/docs/gas/gas.png b/src/content/translations/fa/developers/docs/gas/gas.png new file mode 100644 index 0000000000000000000000000000000000000000..63e12d54287e38fe11b29c16bd205c01ffa21084 GIT binary patch literal 37613 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 I&MBb@06f4T7XSbN literal 0 HcmV?d00001 diff --git a/src/content/translations/fa/developers/docs/gas/index.md b/src/content/translations/fa/developers/docs/gas/index.md index e58cd245fcf..51787d46b13 100644 --- a/src/content/translations/fa/developers/docs/gas/index.md +++ b/src/content/translations/fa/developers/docs/gas/index.md @@ -8,59 +8,51 @@ lang: fa ## پیش‌نیازها {#prerequisites} -برای درک بهتر این صفحه، توصیه می‌شود که ابتدا [تراکنش‌ها](/developers/docs/transactions/) و [ماشین مجازی اتریوم](/developers/docs/evm/) مطالعه شود. +برای درک بهتر این صفحه، توصیه می‌شود که ابتدا [تراکنش‌ها](/developers/docs/transactions/) و [ماشین مجازی اتریوم](/developers/docs/evm/) را مطالعه کنید. ## گاز چیست؟ {#what-is-gas} گاز به واحدی گفته می‌شود که میزان زحمت محاسباتی موردنیاز را برای اجرای یک عمل خاص در شبکه‌ی اتریوم اندازه‌گیری می‌کند. -از آن‌جا که هر تراکنش اتریوم نیاز به منابع محاسباتی برای اجرا دارد، هر تراکنش نیاز به کارمزد دارد. گاز به کارمزد موردنیاز برای انجام موفق یک تراکنش بر روی اتریوم گفته می‌شود. +از آنجا که هر تراکنش اتریوم برای اجرا به منابع محاسباتی نیاز دارد، این منابع باید پرداخت شوند تا اطمینان حاصل شود که اتریوم در برابر اسپم آسیب پذیر نیست و نمی تواند در حلقه های محاسباتی نامحدود گیر کند. پرداخت برای محاسبه به شکل کارمزد گاز انجام می شود. -![نموداری که نشان می‌دهد کجا گاز در عملیات‌های EVM موردنیاز است](./gas.png) _نمودار برگرفته از[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +کارمزد گاز **مقدار گازی است که برای انجام عملیات استفاده می شود، ضربدر هزینه هر واحد گاز**. کارمزد صرف نظر از موفقیت یا شکست یک تراکنش پرداخت می شود. -کارمزد گاز به شکل ارز مبدا اتریوم، اتر (ETH)، پرداخت می‌شود. قیمت گاز به شکل gwei که خود یک خرده‌ارز از اتر است مشخص می‌شود - هر gwei برابر 0.000000001 اتر است (10-9 اتر). برای مثال به این که بگوییم گاز 0.000000001 اتر است، شما می‌توانید بگویید که گاز به انداره‌ی 1 gwei است. واژه‌ی 'gwei' خود به معنی «گیگا-wei» است که برابر 1,000,000,000 wei است. wei (نام‌گذازی شده از [weiDai](https://wikipedia.org/wiki/Wei_Dai) سازنده‌ی [b-money](https://www.investopedia.com/terms/b/bmoney.asp)) خود کوچکترین واحد اتر است. +![نموداری که نشان می‌دهد کجا گاز در عملیات‌های EVM مورد نیاز است](./gas.png) _نمودار برگرفته از [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ -## پیش از ارتقای لندن {#pre-london} +کارمزد گاز باید با ارز بومی اتریوم یعنی اتر (ETH) پرداخت شود. قیمت گاز معمولا برحسب Gwei، که یکی از شاخه های ETH است، بیان می شود. هر Gwei برابر با یک میلیاردم ETH است (0.000000001 ETH یا 10-9 ETH). -روشی که کارمزد تراکنش در شبکه‌ی اتریوم محاسبه می‌شد با [ارتقای لندن](/history/#london) در آگوست 2021 تغییر کرد. خلاصه‌ای از روش پیشین در زیر آورده شده است: +برای مثال به جای این که بگوییم گاز 0.000000001 اتر است، می‌توانید بگویید گاز به انداره‌ 1 gwei است. -فرض کنید که آلیس باید 1 اتر به باب می‌پرداخت. در تراکنش محدوده گاز برابر 21,000 واحد بود و قیمت گاز برابر 200 gwei. +کلمه 'Gwei' مخفف 'Giga-wei' است که به معنای 'میلیارد wei' است. یک Gwei برابر یک میلیارد wei است. Wei (نام‌گذاری شده از [wei Dai](https://wikipedia.org/wiki/Wei_Dai) سازنده‌ [b-money](https://www.investopedia.com/terms/b/bmoney.asp)) خود کوچکترین واحد اتر است. -کارمز کلی معادل `واحد گاز (محدوده) * قیمت گاز به ازای هر واحد` یعنی `21,000 * 200 = 4,200,000 gwei` یا 0.0042 اتر است +## چگونه کارمزدهای گاز محاسبه می شوند؟ {#how-are-gas-fees-calculated} -زمانی که آلیس پول را می‌فرستاد، 1.0042 اتر از حساب آلیس کم می‌شد. باب 1.0000 اتر دریافت می‌کرد. استخراج‌گر 0.0042 اتر دریافت می‌کرد. +می توانید مقدار گازی را که مایل به پرداخت آن هستید در هنگام ارائه یک تراکنش تنظیم کنید. با پیشنهاد مقدار مشخصی گاز، پیشنهاد می کنید که تراکنش شما در بلاک بعدی قرار گیرد. اگر مبلغ بسیار کمی پیشنهاد دهید، اعتبارسنج ها احتمال کمتری دارند که تراکنش شما را برای ورود انتخاب کنند، به این معنی که ممکن است تراکنش شما دیر انجام شود یا اصلا انجام نشود. اگر بیش از حد پیشنهاد دهید، ممکن است مقداری ETH را هدر دهید. بنابراین، چگونه می توانید بگویید که چقدر باید پرداخت کنید؟ -این ویدئو گاز و علت وجودش را به‌طور اجمالی بررسی می‌کند: +مجموع گاز که پرداخت می کنید به دو بخش تقسیم می شود: `کارمزد پایه` و `کارمزد اولویت` (انعام). - +`کارمزد پایه` توسط پروتکل تعیین می شود - شما باید حداقل این مبلغ را پرداخت کنید تا تراکنش شما معتبر تلقی شود. `کارمزد اولویت` انعامی است که شما به کارمزد پایه اضافه می کنید تا تراکنش شما برای اعتبارسنجان جذاب شود تا آنها آن را برای ورود به بلاک بعدی انتخاب کنند. -## پس از ارتقای لندن {#post-london} +تراکنشی که تنها `کارمزد پایه` را پرداخت می کند، از نظر فنی معتبر است اما احتمال شامل شدن آن بعید به نظر می رسد زیرا هیچ انگیزه ای برای اعتبارسنجان وجود ندارد که آن را نسبت به تراکنش های دیگر انتخاب کنند. کارمزد `اولویت` "صحیح" با استفاده از شبکه در زمانی که تراکنش خود را ارسال می کنید تعیین می شود - اگر تقاضای زیادی وجود داشته باشد، ممکن است مجبور شوید کارمزد `اولویت` خود را بالاتر تنظیم کنید، اما وقتی تقاضای کمتری وجود داشته باشد، می توانید هزینه کمتری پرداخت کنید. -[ارتقای لندن](/history/#london) در 5 آگوست 2021 با تعمیرات اساسی در مکانیزم کارمزد تراکنش اتریوم پیاده‌سازی شد تا تراکنش‌های اتریوم برای کاربر پیش‌بینی‌پذیرتر باشد. مزایای کلی که با این تغییر معرفی شدند عبارتند از تخمین بهتر کارمزد تراکنش، افزایش سرعت گنجاندن تراکنش‌ در بلوک به‌طور کلی و کاهش صدور اتر با سوزاندن درصدی از کارمزد تراکنش. +برای مثال، فرض کنید جردن باید 1 ETH به تیلور بپردازد. یک انتقال ETH به 21000 واحد گاز نیاز دارد و هزینه پایه 10 Gwei است. جردن 2 gwei را به‌عنوان انعام اضافه می‌کند. -از زمانی که ارتقای شبکه‌ی لندن انجام شده است، هر بلوک دارای یک کارمزد پایه‌ است، که حداقل هزینه بر اساس واحد گاز برای گنجاندن در این بلوک است، و این رقم بر اساس تقاضا برای فضای بلوک توسط شبکه محاسبه می‌شود. وقتی کارمزد پایه‌ی کارمزد تراکنش سوزانده می‌شود، از کاربران همچنین انتظار می‌رود که یک انعام (کارمزد اولویت) در تراکنش‌هایشان لحاظ کنند. این انعام برای اجرا و گنجاندن تراکنش‌های کاربر درون بلوک‌ها به استخراج‌گر پرداخت می‌شود و انتظار می‌رود که توسط اکثر کیف پول‌ها به‌صورت خودکار مشخص شود. +حال هزینه کل برابر است با: -محاسبه‌ی کل کارمزد تراکنش به این صورت است: ` واحد گاز (حد) * (کارمزد پایه + انعام)` +`واحدهای گاز مصرفی * (کارمزد پایه + کارمزد اولویت)` -فرض کنید جردن باید 1 اتر به تیلور بپردازد. در این تراکنش حد گاز برابر با 21,000 واحد و کارمزد پایه برابر 100 gwei است. جردن 10 gwei را به‌عنوان انعام اضافه می‌کند. +که در آن `کارمزد پایه` مقداری است که توسط پروتکل تعیین می شود و `کارمزد اولویت` مقداری است که توسط کاربر به عنوان انعام به اعتبارسنج تعیین می شود. -با استفاده از فرمول بالا داریم `21,000 * (100 + 10) = 2,310,000 gwei` یا 0.00231 اتر. +یعنی `21,000 * (10 + 2) = 252,000 Gwei` (یا 0.000252 ETH). -زمانی که جوردن پول را می‌فرستد، 1.00231 اتر از حساب جوردن کم می‌شود. تیلور 1.0000 اتر دریافت می‌کند. استخراج‌گر به میزان 0.00021Eth اتر انعام دریافت می‌کند. کارمزد پایه‌ی 0.0021 اتر سوزانده می‌شود. - -علاوه بر این، جردن می‌تواند برای تراکنش حداکثر کارمزد (`maxFeePerGas`) تعیین کند. تفاوت بین ماکسیمم کارمزد و کارمزد واقعی به جردن پس داده می‌شود یعنی `بازگشت = ماکسیمم کارمزد - (کارمزد پایه + کارمزد اولویت)`. جردن می‌تواند برای اجرای تراکنش حداکثر مبلغی تعیین کند و نگران پرداخت بیش از حد «بالاتر» از کارمزد پایه هنگام اجرای تراکنش نباشد. - -### اندازه‌ی بلوک {#block-size} - -پیش از ارتقای لندن، بلوک‌های اتریوم اندازه‌ی ثابتی داشتند. هنگامی که تقاضای شبکه بالا بود، این بلوک‌ها در ظرفیت کامل عمل می‌کردند. در نتیجه، کاربران عموماً باید صبر می‌کردند که تقاضای بالا کاهش یابد تا بتوانند در یک بلوک جای بگیرند، و این موضوع باعث می‌شد که تجربه‌ی کاربری چندان خوب نباشد. - -ارتقای لندن بلوک‌های دارای اندازه‌ی متغیر را به اتریوم معرفی کرد. هر بلوک اندازه‌ی هدفی به اندازه‌ی 15 میلیون گاز دارد اما سایز بلوک‌ها می‌تواند بسته به تقاضای شبکه‌ بیشتر یا کمتر شود و بیشترین حد آن 30 میلیون گاز است (2 برابر اندازه‌ی بلوک). پروتکل در فرایند _tâtonnement_ به‌طور میانگین به اندازه‌ی بلوک متوازن 15 میلیون دست می‌یابد. این بدین معنا است که اگر اندازه‌ی بلوک از اندازه‌ی هدف بلوک بیشتر باشد، پروتکل کارمزد پایه‌ را برای بلوک بعدی بیشتر می‌کند. به صورتی مشابه، پروتکل زمانی که اندازه‌ی بلوک از اندازه‌ی هدف بلوک کمتر باشد کارمزد پایه‌ را کاهش می‌دهد. مقداری که کارمزد پایه با آن تنظیم می‌شود بستگی به فاصله‌ی اندازه‌ی بلوک از اندازه‌ی هدف دارد. [اطلاعات بیشتر درباره‌ی بلوک‌ها](/developers/docs/blocks/). +زمانی که جردن پول را می‌فرستد، 1.000252 اتر از حساب جردن کم می‌شود. تیلور 1.0000 اتر دریافت می‌کند. اعتبارسنج انعام 0.000042 ETH را دریافت می کند. `هزینه پایه` به مقدار 0.00021 ETH سوزانده می شود. ### کارمزد پایه {#base-fee} -هر بلوک یک کارمزد پایه دارد که به‌عنوان قیمت ذخیره عمل می‌کند. جهت احراز شرایط برای گنجانده‌شدن در بلوک، قیمت ارائه‌شده برای گاز باید حداقل به اندازه‌ی کارمزد پایه باشد. کارمزد پایه به‌طور مستقل از این بلوک محاسبه می‌شود و توسط بلوک قبلی مشخص می‌شود - که باعث می‌شود کارمزد تراکنش برای کاربران پیش‌بینی‌پذیرتر باشند. زمانی که بلوک استخراج می‌شود این کارمزد پایه سوزانده می‌شود و از چرخه خارج می‌شود. +هر بلوک یک کارمزد پایه دارد که به‌عنوان قیمت ذخیره عمل می‌کند. جهت احراز شرایط برای گنجانده‌ شدن در بلوک، قیمت ارائه‌ شده برای گاز باید حداقل به اندازه‌ کارمزد پایه باشد. کارمزد پایه به‌طور مستقل از این بلوک محاسبه می‌شود و توسط بلوک‌های قبلی مشخص می‌شود - که باعث می‌شود کارمزدهای تراکنش برای کاربران پیش‌بینی‌پذیرتر باشند. هنگامی که بلوک ایجاد می شود این **هزینه پایه "سوزانده" می شود** و از گردش خارج می شود. -کارمزد پایه توسط فرمولی که اندازه‌ی بلوک قبلی (میزان گازی که توسط تمام تراکنش‌ها استفاده شده است) را با اندازه‌ی هدف مقایسه می‌کند محاسبه می‌شود. اگر اندازه‌ی بلوک از اندازه‌ی هدف بلوک بیشتر شود، کارمزد پایه حداکثر به اندازه‌ی 12.5% در هر بلوک افزایش می‌یابد. این رشد نمایی باعث می‌شود که از نظر اقتصادی به‌صرفه نباشد که اندازه‌ی بلوک سقف نامحدودی داشته باشد. +کارمزد پایه توسط فرمولی که اندازه‌ بلوک قبلی (مقدار گازی که توسط تمام تراکنش‌ها استفاده می‌شود) را با اندازه‌ هدف مقایسه می‌کند، محاسبه می‌شود. اگر اندازه‌ بلوک از اندازه‌ هدف بلوک بیشتر شود، کارمزد پایه حداکثر به اندازه‌ ‎12.5%‏ در هر بلوک افزایش می‌یابد. این رشد نمایی باعث می‌شود که از نظر اقتصادی به‌صرفه نباشد که اندازه‌ بلوک تا ابد بالا بماند. | شماره‌ی بلوک | گاز لحاظ‌شده | افزایش کارمزد | کارمزد پایه‌ی فعلی | | ------------ | -----------: | ------------: | -----------------: | @@ -73,9 +65,9 @@ lang: fa | 7 | 30 میلیون | 12.5% | 180.2 gwei | | 8 | 30 میلیون | 12.5% | 202.7 gwei | -به نسبت بازار حراج گاز قبل از لندن، این تغییر مکانیزم بدون کارمزد تراکنش باعث می‌شود که پیش‌بینی کارمزد قابل اتکاتر بشود. با توجه به جدول فوق - برای ثبت یک تراکنش در بلوک شماره‌ی 9 یک کیف پول به کاربر اجازه می‌دهد که با قطعیت بداند که **حداکثر کارمزد پایه** که به بلوک بعدی اضافه می‌شود برابر است با `کارمزد پایه‌ی فعلی * 112.5%` یا `202.8 gwei * 112.5% = 228.1 gwei` خواهد بود. +با توجه به جدول فوق - برای ثبت یک تراکنش در بلوک شماره‌ 9 یک کیف پول به کاربر اجازه می‌دهد که با قطعیت بداند که **حداکثر کارمزد پایه** که به بلوک بعدی اضافه می‌شود برابر با `کارمزد پایه‌ فعلی * ‎112.5%‏` یا `202.7 gwei * 112.5% = 228.1 gwei` خواهد بود. -همچنین باید خاطرنشان کرد احتمال اینکه بلوک‌های پر ادامه پیدا کنند کم است، چرا که سرعت بالا رفتن کارمزد پایه برای بلوک‌های پر بسیار زیاد است. +همچنین باید خاطرنشان کرد احتمال اینکه بلوک‌های پر ادامه پیدا کنند، به دلیل سرعت بالا رفتن کارمزد پایه قبل از یک بلوک‌ پر، کم است. | شماره‌ی بلوک | گاز لحاظ‌شده | افزایش کارمزد | کارمزد پایه‌ی فعلی | | ------------ | -----------: | ------------: | -----------------: | @@ -87,83 +79,77 @@ lang: fa ### کارمزد اولویت (انعام) {#priority-fee} -پیش از ارتقای لندن، استخراج‌گران کل کارمزد گاز را از همه‌ی تراکنش‌های درون بلوک دریافت می‌کردند. - -با روش جدید که در آن کارمزد پایه سوزانده می‌شود، ارتقای لندن کارمزد اولویت (انعام) را معرفی کرد تا استخراج‌گران تشویق به گنجاندن یک تراکنش در بلوک شوند. بدون انعام برای استخراج‌گران از نظر اقتصادی به صرفه است که بلوک‌های خالی را استخراج کنند چرا که همان میزان پاداش بلوک را دریافت می‌کنند. در شرایط عادی، یک انعام کوچک می‌تواند باعث شود که استخراج‌گران تشویق به گنجاندن تراکنش شوند. برای تراکنش‌هایی که لازم است ترجیحاً زودتر از بقیه‌ی تراکنش‌ها در این بلوک گنجانده شوند، انعام بیشتری نیاز خواهد بود که استخراج‌گران تشویق شوند آن را زودتر بگنجانند. +کارمزد اولویت (انعام) اعتبارسنجان را تشویق می کند تا یک تراکنش را در بلوک بگنجانند. بدون انعام، برای اعتبارسنجان از نظر اقتصادی به صرفه است که بلوک‌های خالی را استخراج کنند چرا که همان میزان پاداش بلوک را دریافت می‌کنند. انعام های کم به اعتبارسنجان انگیزه حداقلی برای گنجاندن یک تراکنش می دهند. برای این که تراکنش‌ها ترجیحاً زودتر از بقیه‌ تراکنش‌ها در بلوک یکسان گنجانده شوند، انعام بیشتری می تواند اضافه شود تا از تراکنش های رقیب پیشی بگیرند. -### حداکثر هزینه {#maxfee} +### حداکثر کارمزد {#maxfee} -برای اجرای یک تراکنش در شبکه، کاربران می‌توانند برای پرداخت کارمزد تراکنششان سقف مشخص کنند. این پارامتر دلخواه به نام `maxFeePerGas` شناخته می‌شود. برای اجرای یک تراکنش، حداکثر کارمزد باید از مجموع کارمزد پایه و انعام بیشتر باشد. فرستنده‌ی تراکنش تفاضل حداکثر کارمزد و مجموع کارمزد پایه و انعام را بازپس خواهد گرفت. +برای اجرای یک تراکنش در شبکه، کاربران می‌توانند برای پرداخت کارمزد تراکنششان سقف مشخص کنند. این پارامتر دلخواه به نام `maxFeePerGas` شناخته می‌شود. برای اجرای یک تراکنش، حداکثر کارمزد باید از مجموع کارمزد پایه و انعام بیشتر باشد. فرستنده‌ تراکنش تفاضل حداکثر کارمزد و مجموع کارمزد پایه و انعام را بازپس خواهد گرفت. -### کارمزد محاسبه {#calculating-fees} +### اندازه‌ بلوک {#block-size} -یکی از نکات مثبت ارتقای لندن، بهبود تجربه‌ی کاربر برای تنظیم کارمزد تراکنش است. در کیف پول‌هایی که این ارتقا را پشتیبانی می‌کنند، به جای این که خودتان دقیقاً مشخص کنید که چه قدر می‌خواهید برای اجرای تراکنشان بپردازید، کیف پول میزان توصیه‌شده‌ای از کارمزد تراکنش (کارمزد پایه + کارمزد اولویت توصیه‌شده) را پیشنهاد می‌دهد تا میزان پیچیدگی برای کاربر کاهش یابد. +هر بلوک اندازه‌ هدفی به اندازه‌ 15 میلیون گاز دارد اما سایز بلوک‌ها می‌تواند بسته به تقاضای شبکه‌ بیشتر یا کمتر شود و بیشترین حد آن 30 میلیون گاز است (2 برابر اندازه‌ بلوک). پروتکل از طریق فرایند _tâtonnement_ به‌طور میانگین به اندازه‌ بلوک متوازن 15 میلیون دست می‌یابد. این بدین معنا است که اگر اندازه‌ بلوک از اندازه‌ هدف بلوک بیشتر باشد، پروتکل کارمزد پایه‌ را برای بلوک بعدی بیشتر می‌کند. به صورتی مشابه، پروتکل زمانی که اندازه‌ بلوک از اندازه‌ هدف بلوک کمتر باشد کارمزد پایه‌ را کاهش می‌دهد. مقداری که کارمزد پایه با آن تنظیم می‌شود بستگی به فاصله‌ اندازه‌ بلوک از اندازه‌ هدف دارد. [اطلاعات بیشتر درباره‌ بلوک‌ها](/developers/docs/blocks/). -## EIP-1559 {#eip-1559} +### محاسبه کارمزدهای گاز در عمل {#calculating-fees-in-practice} -پیاده‌سازی [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) در ارتقای لندن باعث شد که مکانیزم پرداخت کارمزد تراکنش پیچیده‌تر از حراجی قیمت گاز شود، اما مزیتش این است که کارمزد گاز پیش‌بینی‌پذیرتر شود و در نتیجه بازار کارمزد تراکنش کاراتر می‌شود. کاربران می‌توانند تراکنش را با یک `maxFeePerGas` مطابق با مبلغی که مایل هستند برای اجرای تراکنششان بپردازند ارسال کنند؛ با علم به این که نیازی نیست چیزی بیشتر از قیمت بازار برای گاز (`baseFeePerGas`) بپردازند، و اضافه‌پرداخت بیشتر از انعامشان را بازپس بگیرند. +می توانید به صراحت اعلام کنید که برای اجرای تراکنش خود حاضر به پرداخت چه مبلغی هستید. با این حال، اکثر ارائه دهندگان کیف پول به طور خودکار کارمزد تراکنش پیشنهادی (کارمزد پایه + کارمزد اولویت توصیه شده) را تنظیم خواهند کرد تا میزان پیچیدگی تحمیل شده بر کاربران خود را کاهش دهند. -این ویدئو EIP-1559 و مزایای آن را توضیح می‌دهد: +## چرا کارمزد گاز وجود دارد؟ {#why-do-gas-fees-exist} - +به طور خلاصه، کارمزد گاز به حفظ امنیت شبکه اتریوم کمک می‌کند. با درخواست کارمزد برای اجرای هر محاسبه روی شبکه، ما از اسپم کردن شبکه توسط خرابکاران جلوگیری می‌کنیم. برای جلوگیری از حلقه‌های بینهایت خواسته یا ناخواسته یا دیگر هدررفت‌های محاسباتی در کد، هر تراکنش لازم است مشخص کند که چند گام محاسباتی از اجرای کد را می‌تواند استفاده کند. واحد محاسباتی پایه «گاز» است. -اگر مشتاق هستید، می‌توانید [مشخصاتEIP-1559](https://eips.ethereum.org/EIPS/eip-1559) را به‌طور دقیق بخوانید. +هر چند که تراکنش حدی دارد، اما گاز استفاده نشده در یک تراکنش به کاربر بازگردانده می‌شود (یعنی `حداکثر کارمزد - (کارمزد پایه + انعام)` برگردانده می‌شود). -برای کسب دانش عمیق‌تر در این باره [منابع EIP-1559](https://hackmd.io/@timbeiko/1559-resources) را مطالعه کنید. +![شکلی نشان‌دهنده‌ی نحوه‌ی بازپرداخت گاز مصرف‌نشده](../transactions/gas-tx.png) _نمودار برگرفته از [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ -## چرا کارمزد گاز وجود دارد؟ {#why-do-gas-fees-exist} +## حد گاز چیست؟ {#what-is-gas-limit} -به طور خلاصه، کارمزد گاز به حفظ امنیت شبکه اتریوم کمک می‌کند. با درخواست کارمزد برای اجرای هر محاسبه روی شبکه، ما از اسپم کردن شبکه توسط عاملان بد جلوگیری می‌کنیم. برای جلوگیری از حلقه‌های بینهایت خواسته یا ناخواسته یا دیگر هدررفت‌های محاسباتی در کد، هر تراکنش لازم است مشخص کند که چند گام محاسباتی از اجرای کد را می‌تواند استفاده کند. واحد محاسباتی پایه «گاز» است. +حد گاز به حداکثر میزان گازی که می‌خواهید برای یک تراکنش مصرف کنید گفته می‌شود. تراکنش‌های پیچیده‌تر شامل [قراردادهای هوشمند](/developers/docs/smart-contracts/) نیاز به کار محاسباتی بیشتر دارند، در نتیجه نسبت به یک پرداخت ساده نیاز به حد گاز بالاتری دارند. یک انتقال استاندارد اتر نیاز به حد گازی برابر با 21,0000 واحد گاز دارد. -هر چند که تراکنش حدی دارد، اما گاز استفاده نشده در یک تراکنش به کاربر بازگردانده می‌شود (یعنی `حداکثر کامزد - (کارمزد پایه + انعام)` برگردانده می‌شود). +برای مثال اگر حد گاز را برای یک انتقال ساده‌ اتر برابر با 50,000 قرار دهید، ماشین مجازی اتریوم 21,000 عدد را مصرف کرده و شما 29,000 عدد مانده را پس می‌گیرید. هر چند، اگر گاز بسیار پایینی مشخص کنید، برای مثال حد گاز برابر 20,000 برای یک انتقال ساده‌ اتر، ماشین مجازی اتریوم همه‌ 20,000 واحد گاز را مصرف می‌کند تا تراکنش را انجام دهد اما تراکنش کامل نخواهد شد. ماشین مجازی اتریوم همه‌ تغییرات را برمی‌گرداند اما از آنجا که اعتبارسنج به اندازه‌ 20,000 واحد گاز کار کرده‌ است، آن گاز مصرف می‌شود. -![نمودار چگونگی استرداد گاز مصرف نشده را نشان می‌دهد](../transactions/gas-tx.png) _نمودار برگرفته از[Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +## چرا کارمزد گاز می‌تواند انقدر زیاد شود؟ {#why-can-gas-fees-get-so-high} -## حد گاز چیست؟ {#what-is-gas-limit} +بالا بودن کارمزد گاز به دلیل محبوبیت اتریوم است. اگر تقاضای بیش از حد وجود داشته باشد، کاربران باید انعام بیشتری بدهند تا تلاش کنند از تراکنش‌های دیگر کاربران جلو بیفتند. انعام بیشتر می‌تواند باعث شود احتمال اینکه تراکنش در بلوک بعدی ثبت شود بیشتر شود. همچنین، اپلیکیشن های پیچیده‌تر قرارداد هوشمند ممکن است عملیات زیادی برای پشتیبانی از عملکردهای خود انجام دهند و باعث شوند آن ها گاز زیادی مصرف کنند. -حد گاز به حداکثر میزان گازی که شما برای یک تراکنش مصرف می‌کنید گفته می‌شود. تراکنش‌های پیچیده‌تر شامل [قراردادهای هوشمند](/developers/docs/smart-contracts/) نیاز به کار محاسباتی بیشتر دارند، در نتیجه نسبت به یک پرداخت ساده نیاز به حد گاز بالاتری دارند. یک انتقال استاندارد اتر نیاز به حد گازی برابر با 21,0000 واحد گاز دارد. +## ابتکارها برای کاهش هزینه‌های گاز {#initiatives-to-reduce-gas-costs} -برای مثال اگر شما حد گاز را برای یک انتقال ساده‌ی اتر برابر با 50,000 قرار دهید، ماشین مجازی اتریوم 21,000 عدد را مصرف کرده و شما 29,000 عدد مانده را پس می‌گیرید. هر چند، اگر شما گاز بسیار پایینی مشخص کنید، برای مثال حد گاز برابر 20,000 برای یک انتقال ساده‌ی اتر، ماشین مجازی اتریوم همه‌ی 20,000 واحد گاز را مصرف می‌کند تا تراکنش را انجام دهد اما تراکنش کامل انجام نخواهد شد. ماشین مجازی اتریوم همه‌ی تغییرات را برمی‌گرداند اما از آنجا که استخراج‌گر به اندازه‌ی 20,000 واحد گاز کار کرده‌ است، گاز مصرف می‌شود. +[ارتقاهای مقیاس‌پذیری](/roadmap/) اتریوم در نهایت باید به برخی از مسائل مربوط به کارمزد گاز رسیدگی کند، که به نوبه‌ خود، پلتفرم را قادر می‌سازد تا هزاران تراکنش را در ثانیه پردازش کند و در سطح جهانی مقیاس‌پذیر شود. -## چرا کارمزد گاز می‌تواند انقدر زیاد شود؟ {#why-can-gas-fees-get-so-high} +مقیاس‌پذیری لایه‌ 2 یک ابتکار اولیه برای بهبود هزینه‌ گاز، تجربه کاربری و مقیاس‌پذیری است. [اطلاعات بیشتر درباره‌ مقیاس‌پذیری لایه‌ 2](/developers/docs/scaling/#layer-2-scaling). -بالا بودن کارمزد گاز به دلیل محبوبیت اتریوم است. انجام هر عملی در اتریوم نیاز به مصرف گاز دارد و حجم گاز در هر بلوک محدود است. محاسبات کارمزد، نگهداری و دستکاری داده یا جابه‌جایی توکن‌ها مقادیر متفاوتی از واحد «گاز» را مصرف می‌کنند. هر چه کارایی برنامه‌ی غیر متمرکز پیچیده‌تر شود، تعداد اعمالی که قرارداد هوشمند انجام می‌دهد بیشتر می‌شود، به این معنی که هر تراکنش فضای بیشتر از اندازه‌ی محدود بلوک را در اختیار می‌گیرد. اگر تقاضای بیش از حد وجود داشته باشد، کاربران باید انعام بیشتری بدهند تا تلاش کنند از تراکنش‌های دیگر کاربران جلو بیفتند. انعام بیشتر می‌تواند باعث شود احتمال اینکه تراکنش در بلوک بعدی ثبت شود بیشتر شود. +## ارتقاء لندن (London Upgrade) / EIP - 1559 چه بود؟ {#what-was-the-london-upgrade-eip-1559} -قیمت گاز به تنهایی مشخص نمی‌کند برای یک تراکنش چقدر باید بپردازیم. برای محاسبه‌ی کارمزد تراکنش باید میزان گاز استفاده شده را در کارمزد تراکنش ضرب کنیم که با gwei اندازه‌گیری می‌شود. +پیش از ارتقاء لندن، بلوک‌های اتریوم اندازه‌ ثابتی داشتند. در زمان تقاضای بالای شبکه، این بلوک ها با ظرفیت کامل کار می کردند. در نتیجه، کاربران عموماً باید صبر می‌کردند که تقاضای بالا کاهش یابد تا بتوانند در یک بلوک جای بگیرند، و این موضوع باعث می‌شد تجربه‌ کاربری چندان خوب نباشد. ارتقاء لندن بلوک‌های با اندازه‌ متغیر را به اتریوم معرفی کرد. -## ابتکار عمل برای کاهش هزینه‌های گاز {#initiatives-to-reduce-gas-costs} +روشی که کارمزد تراکنش در شبکه‌ اتریوم محاسبه می‌شد با [ارتقاء لندن](/history/#london) در اوت 2021 تغییر کرد. قبل از ارتقاء لندن، کارمزدها بدون تفکیک کارمزدهای `پایه` و `اولویت` به شرح زیر محاسبه می شد: -[ارتقاهای مقیاس‌پذیری](/roadmap/) اتریوم در نهایت باید به برخی از مسائل مربوط به کارمزد گاز رسیدگی کند، که به نوبه‌ی خود، پلتفرم را قادر می‌سازد تا هزاران تراکنش را در ثانیه پردازش کند و در سطح جهانی مقیاس‌پذیر شود. +فرض کنید آلیس باید 1 اتر به باب می‌پرداخت. در این تراکنش محدوده‌ گاز برابر 21,000 واحد بود و قیمت گاز برابر 200 gwei. -مقیاس‌پذیری لایه‌ی 2 یک ابتکار اولیه برای بهبود هزینه‌ی گاز، تجربه‌ی کاربری و مقیاس‌پذیری است. [اطلاعات بیشتر درباره‌ی مقیاس‌پذیری لایه‌ی 2](/developers/docs/scaling/#layer-2-scaling). +کارمز کلی معادل `واحد گاز (محدوده) * قیمت گاز به ازای هر واحد` یعنی `21,000 * 200 = 4,200,000 Gwei` یا 0.0042 ETH است -مدل جدید اثبات سهام که روی زنجیره‌ی بیکن معرفی شد، باید مصرف زیاد انرژی و اتکای زیاد به سخت‌افزارهای اختصاصی را کاهش دهد. این زنجیره به شبکه‌ی غیرمتمرکز اتریوم امکان می‌دهد که موافقت کند و شبکه را ایمن نگه دارد، و در عین حال مصرف انرژی را در عوض با الزام تعهد مالی محدود می‌کند. +اجرای [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) در ارتقاء لندن باعث شد که مکانیزم پرداخت کارمزد تراکنش پیچیده‌تر شود، اما کارمزدهای گاز را قابل پیش‌بینی‌تر کرد که منجر به بازار کارمزد تراکنش کارآمدتر شد. کاربران می‌توانند تراکنش را با یک `maxFeePerGas` مطابق با مبلغی که مایل هستند برای اجرای تراکنششان بپردازند ارسال کنند؛ با علم به این که نیازی نیست چیزی بیشتر از قیمت بازار برای گاز (`baseFeePerGas`) بپردازند، و اضافه‌پرداخت بیشتر از انعامشان را بازپس بگیرند. -هر شخص با حداقل 32 اتر می‌تواند سهام‌گذاری کند و تبدیل به یک اعتبارسنج شود که وظیفه‌اش بررسی تراکنش، اعتبارسنجی بلوک‌ها و پیشنهاد بلوک جدید برای اضافه شدن به زنجیره‌ است. کاربرانی که کمتر از 32 اتر دارند می‌توانند به استخرهای سهام‌گذاری ملحق شوند. +این ویدئو EIP-1559 و مزایای آن را توضیح می‌دهد: -## راهبردهایی برای کاهش هزینه‌ی گاز شما {#strategies-for-you-to-reduce-gas-costs} + -اگر به دنبال کاهش هزینه‌ی گاز برای اترتان هستید، می‌توانید یک انعام مشخص برای اولویت‌بندی تراکنش خود مشخص کنید. استخراج‌گران روی تراکنش‌هایی که انعام بیشتری بر اساس گاز می‌دهند «کار می‌کنند»، چون آن‌ها می‌توانند انعام را نگه‌ دارند و در نتیجه برای اجرای تراکنش‌هایی با انعام کمتر انگیزه‌ی کمتری خواهند داشت. +## نظارت بر کارمزدهای گاز {#moitoring-gas-fees} -اگر می‌خواهید قیمت گاز را رصد کنید، تا بتوانید اترتان را با هزینه‌ی کمتری بفرستید، می‌توانید از ابزارهای متفاوتی مثل موارد زیر استفاده کنید: +اگر می‌خواهید قیمت گاز را رصد کنید، تا بتوانید اترتان را با هزینه‌ کمتری بفرستید، می‌توانید از ابزارهای متفاوتی مثل موارد زیر استفاده کنید: - [Etherscan](https://etherscan.io/gastracker) _تخمین‌زننده‌ی قیمت گاز تراکنش_ -- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _افزونه‌ی Chrome برای تخمین گاز با پشتیبانی تراکنش‌های نوع 0 میراث (Legacy) و تراکنش‌های نوع 2 EIP-1559._ - -- [ETH Gas Station](https://ethgasstation.info/) _آمار و ارقام مصرف‌کننده‌محور بازار گاز اتریوم_ -- [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator) _Calculate gas fees in your local currency for different transaction types on Mainnet, Arbitrum, and Polygon._ +- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _افزونه‌ Chrome برای تخمین گاز با پشتیبانی تراکنش‌های نوع 0 میراث (Legacy) و تراکنش‌های نوع 2 EIP-1559‏._ +- [ماشین حساب کارمزد گاز Cryptoneur](https://www.cryptoneur.xyz/gas-fees-calculator) _کارمزد گاز را برای انواع مختلف تراکنش در Mainnet و Arbitrum و Polygon به ارز محلی خود محاسبه کنید._ ## ابزارهای مرتبط {#related-tools} -- [Bloxy Gas Analytics](https://stat.bloxy.info/superset/dashboard/gas/?standalone=true) _آمار گاز شبکه‌ی اتریوم_ -- [پلتفرم گاز Blocknative](https://www.blocknative.com/gas) _وب سرویس تخمین گاز توسط پلفترم داده‌ی استخر حافظه‌ی جهانی Blocknative_ +- [پلتفرم گاز Blocknative‏](https://www.blocknative.com/gas) _وب سرویس تخمین گاز تحت پشتیبانی پلفترم داده‌ استخر حافظه‌ جهانی Blocknative‏_ ## بیشتر بخوانید {#further-reading} - [توضیحی درباره‌ی گاز اتریوم](https://defiprime.com/gas) - [کاهش مصرف گاز قراردادهای هوشمندتان](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a) - [اثبات سهام در مقابل اثبات کار](https://blockgeeks.com/guides/proof-of-work-vs-proof-of-stake/) - -## موضوعات مرتبط {#related-topics} - -- [استخراج](/developers/docs/consensus-mechanisms/pow/mining/) +- [استراتژی های بهینه‌سازی گاز برای توسعه دهندگان](https://www.alchemy.com/overviews/solidity-gas-optimization) +- [اسناد EIP-1559](https://eips.ethereum.org/EIPS/eip-1559). +- [منابع EIP-1559 تیم بیکو](https://hackmd.io/@timbeiko/1559-resources). diff --git a/src/content/translations/fa/developers/docs/index.md b/src/content/translations/fa/developers/docs/index.md index ccdbd36b555..78e4465405a 100644 --- a/src/content/translations/fa/developers/docs/index.md +++ b/src/content/translations/fa/developers/docs/index.md @@ -1,16 +1,16 @@ --- -title: اسناد توسعه‌‌ی اتریوم -description: معرفی مستندات توسعه‌ی ethereum.org. +title: اسناد توسعه‌‌ اتریوم +description: معرفی مستندات توسعه‌ ethereum.org. lang: fa --- -مستندات برای کمک به شما برای ساختن با اتریوم طراحی شده‌اند. این مستندات اتریوم را در مقام یک مفهوم شرح می‌دهد، فناوری پشته‌ی اتریوم را توضیح می‌دهد و موضوعات پیشرفته را برای برنامه‌های کاربردی و موارد استفاده‌ی پیچیده‌تر مستند می‌کند. +مستندات برای کمک به شما برای ساختن با اتریوم طراحی شده‌اند. این مستندات، اتریوم را در مقام یک مفهوم شرح می‌دهد، پشته‌ فناوری اتریوم را توضیح می‌دهد و موضوعات پیشرفته را برای اپلیکیشن‌ها و موارد پیچیده‌تر مستند می‌کند. -مستندات به کوشش جامعه‌ی متن‌باز تهیه می‌شود، پس برای پیشنهاد دادن موضوعات جدید، افزودن محتوای جدید، ساخت مثال و هرچیزی که فکر می‌کنید مفید است راحت باشید. تمام مستندات می‌توانند در گیت‌هاب ویرایش شوند - اگر مطمئن نیستید چگونه می‌توان این کار را انجام دارد، [ این دستورالعمل‌ها را دنبال کنید](https://github.com/ethereum/ethereum-org-website/tree/dev/docs/editing-markdown.md). +مستندات به کوشش جامعه‌ متن‌ باز تهیه می‌شود، پس برای پیشنهاد دادن موضوعات جدید، افزودن محتوای جدید، ساخت مثال و هرچیزی که فکر می‌کنید مفید است راحت باشید. تمام مستندات می‌توانند در گیت‌هاب ویرایش شوند - اگر مطمئن نیستید چگونه می‌توان این کار را انجام دارد، [ این دستورالعمل‌ها را دنبال کنید](https://github.com/ethereum/ethereum-org-website/blob/dev/docs/editing-markdown.md). ## ماژول‌های توسعه {#development-modules} -اگر این اولین تلاش شما برای توسعه‌ی اتریوم است، ما به شما پیشنهاد می‌کنیم یادگیری و کار را از طریق یک کتاب شروع کنید. +اگر این اولین تلاش شما برای توسعه‌ اتریوم است، به شما پیشنهاد می‌کنیم یادگیری و کار را از طریق یک کتاب شروع کنید. ### موضوعات بنیادی {#foundational-topics} diff --git a/src/content/translations/fa/developers/docs/intro-to-ether/index.md b/src/content/translations/fa/developers/docs/intro-to-ether/index.md index 416e3515f68..dfe1a1ac5fe 100644 --- a/src/content/translations/fa/developers/docs/intro-to-ether/index.md +++ b/src/content/translations/fa/developers/docs/intro-to-ether/index.md @@ -18,7 +18,7 @@ lang: fa ## اتر چیست؟ {#what-is-ether} -**اتر (ETH)** ارز رمزنگاری‌شده‌ای است که برای بسیاری چیزها در شبکه‌ی اتریوم استفاده می‌شود. به طور ویژه اتر برای پرداخت هزینه تراکنش ها استفاده می شود و همچنین [بعد از ادغام] (upgrades/merge/)، اتر برای صحت سنجی و پیشنهاد بلاک جدید در شبکه اصلی استفاده می شود. اتر همچنین به‌عنوان شکل اصلی وثیقه در بازارهای وام‌دهی [دیفای](/defi)، به‌عنوان واحد حساب در بازارهای NFT، به‌عنوان پرداخت کسب‌شده برای انجام خدمات یا فروش کالاهای واقعی و موارد دیگر استفاده می‌شود. +**اتر (ETH)** ارز رمزنگاری‌شده‌ای است که برای بسیاری چیزها در شبکه‌ی اتریوم استفاده می‌شود. اساساً، این تنها روش قابل قبول پرداخت برای کارمزد تراکنش است و پس از [ادغام](/roadmap/merge)، اتر برای اعتبارسنجی و پیشنهاد بلوک‌ها در شبکه اصلی لازم است. اتر همچنین به‌عنوان شکل اصلی وثیقه در بازارهای وام‌دهی [دیفای](/defi)، به‌عنوان واحد محاسبه در بازارهای NFT، به‌عنوان پرداخت کسب‌شده برای انجام خدمات یا فروش کالاهای واقعی و موارد دیگر استفاده می‌شود. اتریوم به توسعه‌دهندگان اجازه می‌دهد [**برنامه‌های غیرمتمرکز (dappها)**](/developers/docs/dapps) ایجاد کنند که همگی دارای قدرت محاسباتی مشترک هستند. این استخر مشترک محدود است، بنابراین اتریوم به مکانیزمی برای تعیین اینکه چه کسی می‌تواند از آن استفاده کند نیاز دارد. در غیر این صورت، یک dapp می‌تواند به‌طور تصادفی یا به‌طور مخرب تمام منابع شبکه را مصرف کند، که باعث می‌شود دسترسی دیگران به آن مسدود شود. @@ -26,25 +26,25 @@ lang: fa بنابراین، حتی اگر یک dapp بداندیش یک حلقه بی‌نهایت ارسال کند، تراکنش تا زمان مصرف اتر تمام می‌شود و خاتمه می‌یابد و به شبکه اجازه می‌دهد به حالت عادی بازگردد. -به‌کار بردن اتر و اتریوم [به‌جای](https://www.reuters.com/article/us-crypto-currencies-lending-insight-idUSKBN25M0GP#:~:text=price%20of%20ethereum) [یکدیگر](https://abcnews.go.com/Business/bitcoin-slumps-week-low-amid-renewed-worries-chinese/story?id=78399845#:~:text=cryptocurrencies%20including%20ethereum) [متداول](https://www.cnn.com/2021/03/14/tech/nft-art-buying/index.html#:~:text=price%20of%20ethereum) است — وقتی مردم به «قیمت اتریوم» اشاره می کنند، به قیمت اتر اشاره می‌کنند. +به‌کار بردن اتر و اتریوم [به‌جای](https://www.reuters.com/article/us-crypto-currencies-lending-insight-idUSKBN25M0GP#:~:text=price%20of%20ethereum) [یکدیگر](https://abcnews.go.com/Business/bitcoin-slumps-week-low-amid-renewed-worries-chinese/story?id=78399845#:~:text=cryptocurrencies%20including%20ethereum) [متداول](https://www.cnn.com/2021/03/14/tech/nft-art-buying/index.html#:~:text=price%20of%20ethereum) است — وقتی مردم به «قیمت اتریوم» اشاره می کنند، در واقع به قیمت اتر اشاره می‌کنند. ## استخراج اتر {#minting-ether} -استخراج فرایندی است که در آن اتر جدید در دفتر کل اتریوم ایجاد می‌شود. پروتکل زیربنایی اتریوم اتر جدید را ایجاد می‌کند و امکان ایجاد اتر برای کاربر وجود ندارد. +استخراج فرایندی است که در آن اتر جدید در دفتر کل اتریوم ایجاد می‌شود. پروتکل زیربنایی اتریوم، اتر جدید را ایجاد می‌کند و امکان ایجاد اتر برای کاربر وجود ندارد. -زمانی که یک استخراج‌گر یک بلوک را در زنجیره‌‌ی بلوکی اتریوم ایجاد می‌کند، اتر ساخته می‌شود. این پروتکل به عنوان مشوقی برای استخراج‌گرها، در هر بلوک یک پاداش را اعطا می‌کند و آدرس حساب تعیین‌شده توسط استخراج‌کننده‌ی بلاک را افزایش می‌دهد. پاداش بلوک در طول زمان تغییر کرده است و امروز 2 اتر در هر بلوک است. +اتر به عنوان پاداش برای هر بلوک پیشنهادی و در هر نقطه بازرسی ایپوک برای سایر فعالیت های اعتبارسنج مربوط به رسیدن به اجماع ضرب می شود. مجموع مبلغ صادر شده به تعداد اعتباردهنده ها و مقدار اتری که آنها سهام‌گذاری کرده اند بستگی دارد. این صدور کل به طور مساوی بین اعتبار سنج ها در حالت ایده آل تقسیم می شود که همه اعتبار سنج های قابل اعتماد و آنلاین هستند، اما در واقعیت، بر اساس عملکرد اعتبار سنج متفاوت است. حدود 1/8 از کل صدور به پیشنهاد دهنده بلوک می رسد. باقیمانده در بین اعتبارسنجهای دیگر توزیع می‌شود. پیشنهاد دهندگان بلاک نیز انعام‌هایی را از کارمزد تراکنش ها و درآمدهای مرتبط با MEV دریافت می کنند، اما اینها از اتر بازیافت شده است، نه صدور جدید. ## سوزاندن اتر {#burning-ether} -علاوه بر ایجاد اتر از طریق پاداش‌های بلوک، اتر می‌تواند توسط فرایندی به نام «سوزاندن» از بین برود. وقتی اتر می‌سوزد، برای همیشه از چرخه‌ی زنجیره خارج می‌شود. +همانند ایجاد اتر از طریق پاداش های بلوک، اتر می توانند از طریق یک فرآیند به نام 'سوزاندن' از بین برود. وقتی اتر می‌سوزد، برای همیشه از چرخه‌ی زنجیره خارج می‌شود. -سوختن اتر در تمام تراکنش‌ها روی اتریوم رخ می‌دهد. وقتی هزینه تراکنش کاربران پرداخت می شود، یک هزینه پایه با توجه به تقاضای شبکه ثبت شده و از چرخه خارج می شود که به همراه حداکثر کارمزد گاز و اندازه متغیر [بلوک] (https://etherscan.io/block/12965263)، کارمزد نهایی تراکنش را مشخص می کند. وقتی تقاضای شبکه زیاد باشد، میزان اتر سوزانده شده از آنچه که استخراج می شود بیشتر شده و از تولید مقدار زیاد آن جلوگیری می گند. +سوختن اتر در تمام تراکنش‌های روی اتریوم رخ می‌دهد. هنگامی که کاربران برای تراکنش‌های خود پرداخت می‌کنند، هزینه‌ی گاز پایه که توسط شبکه بر اساس تقاضای تراکنش تعیین می‌شود، از بین می‌رود. این موضوع به همراه اندازه‌ی بلوک‌های متغیر و حداکثر کارمزد گاز، تخمین کارمزد تراکنش را در اتریوم ساده می‌کند. وقتی تقاضای شبکه زیاد است، [بلوک‌ها](https://etherscan.io/block/12965263) می‌توانند اتر بیشتری نسبت به تولید خود بسوزانند و به‌طور مؤثری تولید اتر را جبران کنند. -سوزاندن کارمزد پایه از راه‌های مختلفی که ماینرها می‌توانند از آن برای دستکاری شبکه استفاده کنند، جلوگیری می‌کند. برای مثال اگر ماینرها کارمزد پایه را دریافت می کردند، می توانستند تراکنش های خود را به صورت رایگان درج کنند و کارمزد پایه را برای بقیه افزایش دهند. از طرف دیگر، آنها می توانند کارمزد پایه را به برخی از کاربران خارج از زنجیره بازپرداخت کنند، که منجر به بازار کارمزد تراکنش مبهم و پیچیده تر می شود. +سوزاندن کارمزد پایه، مانع از دستکاری تراکنش ها از سوی تولیدکنندگان بلوک می شود. برای مثال، اگر تولیدکنندگان بلوک کارمزد پایه را دریافت می‌کردند، می‌توانستند تراکنش‌های خود را به‌صورت رایگان درج کنند و کارمزد پایه را برای بقیه افزایش دهند. از طرف دیگر، آنها می توانند کارمزد پایه را به برخی از کاربران خارج از زنجیره بازپرداخت کنند، که منجر به بازار کارمزد تراکنش مبهم و پیچیده‌تر می‌شود. ## واحدهای خرد اتر {#denominations} -از آنجایی که بسیاری از تراکنش‌ها در اتریوم کوچک هستند، اتر دارای چندین واحد شمارش است که ممکن است برای مقادیر کمتر به آن‌ها اشاره شود. از میان این واحدهای شمارش، Wei و gwei از اهمیت ویژه‌ای برخوردارند. +از آنجایی که مقدار بسیاری از تراکنش‌ها در اتریوم کوچک هستند، اتر دارای چندین نام است که ممکن است برای مقادیر کمتر به آن‌ها اشاره شود. از میان این واحدهای شمارش، Wei و gwei از اهمیت ویژه‌ای برخوردارند. Wei کوچکترین مقدار ممکن اتر است و در نتیجه بسیاری از پیاده‌سازی‌های فنی مانند [یلو پیپر اتریوم](https://ethereum.github.io/yellowpaper/paper.pdf)، تمام محاسبات خود را بر اساس Wei انجام خواهند داد. @@ -57,7 +57,7 @@ Gwei که مخفف giga-wei است، اغلب برای توصیف هزینه‌ ## انتقال اتر {#transferring-ether} -هر تراکنش در اتریوم حاوی یک فیلد `value` است که مقدار اتری را که باید منتقل شود، بر حسب wei، برای ارسال از آدرس فرستنده به آدرس گیرنده مشخص می‌کند. +هر تراکنش در اتریوم حاوی یک بخش `value` است که مقدار اتری را که باید منتقل شود، بر حسب wei، برای ارسال از آدرس فرستنده به آدرس گیرنده مشخص می‌کند. با توجه به اینکه آدرس گیرنده یک [قرارداد هوشمند](/developers/docs/smart-contracts/) است، زمانی که این قرارداد هوشمند کد خود را اجرا می‌کند، می‌توان از این اتر منتقل‌شده برای پرداخت هزینه‌ی گاز استفاده شود. @@ -65,13 +65,14 @@ Gwei که مخفف giga-wei است، اغلب برای توصیف هزینه‌ ## استعلام اتر {#querying-ether} -کاربران می‌توانند موجودی اتر هر [حساب](/developers/docs/accounts/) را با بررسی فیلد `موجودی` حساب، که دارایی‌های اتر را بر حسب wei نشان می‌دهد، استعلام کنند. +کاربران می‌توانند موجودی اتر هر [حساب](/developers/docs/accounts/) را با بررسی بخش `موجودی` حساب، که دارایی‌های اتر را بر حسب wei نشان می‌دهد، استعلام کنند. -[Etherscan](https://etherscan.io) یک ابزار محبوب برای بررسی موجودی حساب از طریق برنامه‌ای مبتنی بر وب است. برای مثال، [این صفحه‌ی Etherscan‏](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae) حساب بنیاد اتریوم را نشان می‌دهد. +[Etherscan](https://etherscan.io) یک ابزار محبوب برای بررسی موجودی حساب از طریق برنامه‌ای مبتنی بر وب است. برای مثال، [این صفحه‌ی Etherscan‏](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae) حساب بنیاد اتریوم را نشان می‌دهد. موجودی حساب را می‌توان با استفاده از کیف پول یا به‌طور مستقیم با درخواست از گره‌ها جستجو کرد. ## بیشتر بخوانید {#further-reading} - [تعریف اتر و اتریوم](https://www.cmegroup.com/education/courses/introduction-to-ether/defining-ether-and-ethereum.html) – _گروه CME‏_ -- [وایت‌پیپر اتریوم](/whitepaper/): پیشنهاد اصلی برای اتریوم. این سند شامل توضیحاتی درباره‌ی اتر و انگیزه‌های ساخت آن است. +- [برگه سفید اتریوم](/whitepaper/): پیشنهاد اصلی برای اتریوم. این سند شامل توضیحاتی درباره‌ی اتر و انگیزه‌های ساخت آن است. +- [ماشین حساب Gwei](https://www.alchemy.com/gwei-calculator): از این ماشین حساب gwei برای تبدیل آسان wei‏، gwei و اتر استفاده کنید. به سادگی هر مقدار wei‏، gwei یا ETH را وصل کنید و تبدیل را به‌طور خودکار محاسبه کنید. -_آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش کنید و آن را اضافه کنید!_ +_آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش کنید و به آن اضافه کنید!_ diff --git a/src/content/translations/fa/developers/docs/intro-to-ethereum/index.md b/src/content/translations/fa/developers/docs/intro-to-ethereum/index.md index d1b166d3513..6917b4429ee 100644 --- a/src/content/translations/fa/developers/docs/intro-to-ethereum/index.md +++ b/src/content/translations/fa/developers/docs/intro-to-ethereum/index.md @@ -14,107 +14,103 @@ lang: fa همه رایانه‌های درون شبکه باید با هر بلوک جدید و نیز کل زنجیره‌ی بلوک‌ها موافقت داشته باشند. این رایانه‌ها به‌عنوان «گره» شناخته می‌شوند. گره‌ها اطمینان حاصل می‌کنند همه افرادی که با زنجیره‌ی بلوکی تعامل می‌کنند داده‌های یکسانی در اختیار داشته باشند. برای دستیابی به چنین توافقی، زنجیره‌های بلوکی به یک مکانیزم اجماع نیاز دارند. -در حال حاضر اتریوم از یک مکانیزم اجماع [اثبات کار](/developers/docs/consensus-mechanisms/pow/) استفاده می‌کند. بدین معنی که هر فردی بخواهد بلوک جدیدی به زنجیره اضافه کند، باید یک معادله‌ی پیچیده را حل کند که نیازمند قدرت پردازشی بسیار زیادی است. حل کردن معادله «ثابت می‌کند» که شما «کار» مورد انتظار را با استفاده از منابع پردازشی انجام داده‌اید. به این فرایند [استخراج](/developers/docs/consensus-mechanisms/pow/mining/) گفته می‌شود. استخراج عموماً مستلزم آزمون و خطای بسیار زیادی است، اما افزودن موفقیت‌آمیز یک بلوک جدید با دریافت اتر به‌عنوان پاداش همراه است. +اتریوم از یک [مکانیزم اجماع مبتنی بر اثبات سهم](/developers/docs/consensus-mechanisms/pos/) استفاده می‌کند. هرکس که می خواهد بلوک های جدیدی را به زنجیره اضافه کند باید ETH - یعنی ارز اصلی در اتریوم- را وثیقه بگذارد و نرم‌افزار اعتبارسنج را اجرا کند. سپس این "اعتبارسنج ها" می توانند به صورت تصادفی انتخاب شوند تا بلوک هایی را پیشنهاد دهند که اعتبارسنج های دیگر بررسی می کنند و به بلاک‌چین اضافه می کنند. سیستمی از پاداش ها و جریمه‌ها وجود دارد که هرچه بیشتر شرکت کنندگان را به صداقت و در دسترس بودن آنلاین تشویق می کند. -بلوک‌های جدید به کلیه گره‌های شبکه ارسال می‌شوند و توسط آن‌ها بررسی و تایید می‌شوند. بدین ترتیب وضعیت زنجیره‌ی بلوکی برای همه به‌روزرسانی می‌شود. +اگر دوست دارید ببینید داده های بلاک‌چین چگونه هش می شوند و پس از آن به تاریخچه ارجاعات بلاک اضافه می شوند، حتما [این دمو](https://andersbrownworth.com/blockchain/blockchain) را توسط آندرس براون ورث بررسی کنید و ویدئوی همراه آن را در زیر تماشا کنید. -پس به‌طور خلاصه، وقتی برای کسی اتر می‌فرستید، تراکنش مورد نظر باید ضرب شده و در یک بلوک جدید گنجانده شود. سپس وضعیت جدید با کل شبکه به اشتراک گذاشته می‌شود. - -در این ویدئو آستین شما را قدم به قدم با زنجیره‌ی بلوکی آشنا می‌کند: - - - -برای اینکه ببینید چگونه زنجیره‌ی بلوکی داده‌ها را «هش» می‌کند و چگونه یک بلوک به کلیه بلوک‌های قبلی خود ارجاع می‌دهد، [این دمو](https://andersbrownworth.com/blockchain/blockchain) که توسط آندِرس براون‌ورث تهیه شده است را مشاهده کرده و ویدئوی مربوط به آن را در زیر تماشا کنید. - -توضیحات آندِرس را در رابطه با «هش» در زنجیره‌ی بلوکی تماشا کنید: +توضیحات آندِرس را در رابطه با «هش» در بلاک‌چین تماشا کنید: ## اتریوم چیست؟ {#what-is-ethereum} -در دنیای اتریوم، یک رایانه واحد و مرکزی وجود دارد (به نام ماشین مجازی اتریوم یا EVM) که وضعیت آن مورد توافق همه‌ی افراد حاضر در شبکه اتریوم است. همه‌ی شرکت‌کنندگان در شبکه‌ی اتریوم (همه‌ی گره‌های اتریوم) یک رونوشت از وضعیت این رایانه را نگهداری می‌کنند. علاوه بر این، هر شرکت‌کننده می‌تواند درخواستی برای انجام محاسبات دلخواه به این رایانه ارسال کند. هرگاه چنین درخواستی منتشر گردد، سایر شرکت‌کنندگان در شبکه آن را بازبینی می‌کنند، تأیید می‌کنند و محاسبات مورد نظر را انجام می دهند («اجرا» می‌کنند). اجرای این محاسبات موجب تغییر وضعیت در EVM می‌گردد، که در کل شبکه کامیت شده و منتشر می‌شود. +اتریوم یک بلاک‌چین است که یک کامپیوتر در آن تعبیه شده است. این اساس ساخت اپلیکیشن‌ها و سازمان‌ها به روشی غیرمتمرکز، بدون مجوز و مقاوم در برابر سانسور است. + +در دنیای اتریوم، یک رایانه واحد و استاندارد وجود دارد (به نام ماشین مجازی اتریوم یا EVM) که وضعیت آن مورد توافق همه‌ افراد حاضر در شبکه اتریوم است. همه‌ شرکت‌کنندگان در شبکه‌ اتریوم (همه‌ گره‌های اتریوم) یک رونوشت از وضعیت این رایانه را نگهداری می‌کنند. علاوه بر این، هر شرکت‌کننده می‌تواند درخواستی برای انجام محاسبات دلخواه به این رایانه ارسال کند. هرگاه چنین درخواستی منتشر گردد، سایر شرکت‌کنندگان در شبکه آن را بازبینی می‌کنند، تأیید می‌کنند و محاسبات مورد نظر را انجام می دهند («اجرا» می‌کنند). اجرای این محاسبات موجب تغییر وضعیت در EVM می‌گردد، که در کل تحویل و تکثیر می‌شود. -درخواست انجام محاسبه درخواست تراکنش نامیده می‌شود؛ تاریخچه‌ی کلیه‌ی تراکنش‌ها و وضعیت فعلی EVM روی زنجیره‌ی بلوکی ذخیره می‌شود، که متقابلاً تمام گره‌های شبکه در مورد آن توافق دارند و آن را ذخیره می‌کنند. +درخواست انجام محاسبه، درخواست تراکنش نامیده می‌شود؛ تاریخچه‌ کلیه‌ تراکنش‌ها و وضعیت فعلی EVM روی بلاک‌چین ذخیره می‌شود، که متقابلاً تمام گره‌های شبکه در مورد آن توافق کرده و آن را ذخیره می‌کنند. -مکانیزم‌های رمزنگاری اطمینان حاصل می‌کند به محض اینکه تراکنش‌ها به‌عنوان تراکنش معتبر تأیید شده و به زنجیره‌ی بلوکی اضافه شدند، دیگر قابل دستکاری نباشند. همین مکانیزم‌ها همچنین اطمینان حاصل می‌کننده هر تراکنشی با «مجوزهای» مناسب امضا شوند و اجرا شوند (هیچ‌کس غیر از آلیس نباید بتواند از حساب آلیس برداشت سرمایه‌های دیجیتال ارسال کند). +مکانیزم‌های رمزنگاری تضمین می‌کنند که به محض اینکه تراکنش‌ها به‌عنوان تراکنش معتبر تأیید شده و به بلاک‌چین اضافه شدند، دیگر قابل دستکاری نباشند. همین مکانیزم‌ها همچنین تضمین می‌کنند که هر تراکنش با «مجوزهای» مناسب امضا و اجرا شوند (هیچ‌کس غیر از خود آلیس نباید بتواند از حساب آلیس سرمایه‌های دیجیتال را برداشت کند). ## اتر چیست؟ {#what-is-ether} -**اتر (ETH)** ارز رمزنگاری‌شده بومی اتریوم است. هدف اتر فراهم‌سازی امکان محاسبه برای بازار است. چنین بازاری یک مشوق اقتصادی برای شرکت‌کنندگان جهت تأیید و اجرای درخواست‌های تراکنش و فراهم‌سازی منابع محاسباتی برای شبکه ایجاد می‌کند. +**اتر (ETH)** ارز رمزنگاری‌شده‌ بومی اتریوم است. هدف ETH فراهم‌سازی امکان محاسبه برای بازار است. چنین بازاری یک مشوق اقتصادی برای شرکت‌کنندگان جهت تأیید و اجرای درخواست‌های تراکنش و فراهم‌سازی منابع محاسباتی برای شبکه ایجاد می‌کند. + +هر شرکت‌کننده‌ که درخواست تراکنشی را پخش می‌کند باید مقداری ETH را هم به‌عنوان جایزه به شبکه ارائه دهد. این جایزه به کسی تعلق می‌گیرد که در نهایت کارِ تأیید تراکنش، اجرای آن، تحویل دادن آن به بلاک‌چین و پخش آن در شبکه را انجام می‌دهد. -هر شرکت‌کننده‌ای که درخواست تراکنشی را پخش می‌کند باید مقداری اتر را هم به‌عنوان جایزه به شبکه ارائه دهد. این جایزه به کسی تعلق می‌گیرد که در نهایت کارِ تأیید تراکنش، اجرای آن، کامیت کردن آن به زنجیره‌ی بلوکی و پخش آن در شبکه را انجام دهد. +مقدار ETH پرداخت‌شده، با منابع مورد نیاز برای انجام محاسبه تطابق دارد. این جایزه‌ها همچنین مانع از این می‌شوند که شرکت‌کنندگان بداندیش بتوانند عمداً با درخواست اجرای محاسبات بی‌نهایت یا سایر اسکریپت‌های پرمصرف شبکه را مسدود کنند، زیرا این شرکت‌کنندگان باید هزینه‌ منابع محاسبه را بپردازند. -مقدار اتر پرداخت‌شده با زمان موردنیاز برای انجام محاسبه تطابق دارد. این جایزه‌ها همچنین مانع از این می‌شوند که شرکت‌کنندگان بداندیش بتوانند عمداً با درخواست اجرای محاسبات بی‌نهایت یا سایر اسکریپت‌های پرمصرف شبکه را مسدود کنند، زیرا این شرکت‌کنندگان باید هزینه‌ی زمان محاسبه را بپردازند. +ETH (اتر) همچنین برای تامین امنیت اقتصاد-کریپتویی برای شبکه به سه روش اصلی استفاده می شود: 1) به عنوان وسیله ای برای پاداش دادن به اعتبارسنجانی که بلوک ها را پیشنهاد می دهند یا رفتار نادرست را از سوی دیگر اعتبارسنجان اعلام می کنند، استفاده می شود؛ 2) توسط اعتبارسنجان به عنوان وثیقه در برابر رفتار نادرست عمل می کند- اگر اعتبارسنجان تلاش کنند که رفتار نادرست داشته باشند ETH آنها می تواند نابود شود؛ 3) از آن برای وزن کردن "آرا" بلوک های پیشنهادی جدید استفاده می شود، که به بخش انتخاب فورک مکانیزم اجماع وارد می شود. ## قراردادهای هوشمند چه هستند؟ {#what-are-smart-contracts} -در عمل، شرکت‌کنندگان هر بار که می‌خواهند محاسبه‌ای در EVM درخواست کنند، کد جدیدی نمی‌نویسند. در عوض، توسعه‌دهندگان برنامه‌ها، دستوراتی (قطعه‌های قابل‌استفاده‌ی مجدد از کد) را در وضعیت EVM بارگذاری می‌کنند و کاربران درخواست‌هایی را برای اجرای این قطعه‌کدها با پارامترهای متفاوت ارائه می‌دهند. ما برنامه‌های بارگذاری‌شده روی شبکه و اجرا شده توسط شبکه را قراردادهای هوشمند می‌نامیم. +در عمل، شرکت‌کنندگان هر بار که می‌خواهند محاسبه‌ای در EVM درخواست کنند، کد جدیدی نمی‌نویسند. در عوض، توسعه‌دهندگان برنامه‌ها، دستوراتی (قطعه‌های قابل‌استفاده‌ مجدد کد) را در وضعیت EVM بارگذاری می‌کنند و کاربران درخواست‌هایی را برای اجرای این قطعه‌ کدها با پارامترهای متفاوت ارائه می‌دهند. ما برنامه‌های بارگذاری‌شده روی شبکه و اجرا شده توسط شبکه را قراردادهای هوشمند می‌نامیم. -در سطحی بسیار ابتدایی، می‌توانید یک قرارداد هوشمند را مشابه یک دستگاه فروش خودکار در نظر بگیرید: اسکریپتی که وقتی با پارامترهای خاصی فراخوانی می‌شود، در صورت برآورده شدن شرایط خاص، برخی اقدامات یا محاسبات را انجام می‌دهد. به‌عنوان مثال، اگر تماس‌گیرنده اتر را به گیرنده‌ی خاصی ارسال کند، یک قرارداد هوشمند ساده‌ی فروشنده می‌تواند مالکیت یک دارایی دیجیتال را ایجاد و به آن اختصاص دهد. +در سطحی بسیار ابتدایی، می‌توانید یک قرارداد هوشمند را مشابه یک دستگاه فروش خودکار در نظر بگیرید: اسکریپتی که وقتی با پارامترهای خاصی فراخوانی می‌شود، در صورت برآورده شدن شرایط خاص، برخی اقدامات یا محاسبات را انجام می‌دهد. به‌عنوان مثال، اگر فراخوان‌کننده اتر را برای گیرنده‌ خاصی ارسال کند، یک قرارداد هوشمند فروشنده‌ ساده می‌تواند مالکیت یک دارایی دیجیتال را ایجاد کند و به آن اختصاص دهد. -هر توسعه‌دهنده‌ای می‌تواند با استفاده از زنجیره‌ی بلوکی به‌عنوان لایه‌ی داده، در ازای هزینه‌ای که به شبکه می‌پردازد، یک قرارداد هوشمند بسازد و آن را برای شبکه عمومی کند. سپس هر کاربر می‌تواند دوباره با پرداخت هزینه‌ای به شبکه، قرارداد هوشمند را برای اجرای کد آن فراخوانی کند. +هر توسعه‌دهنده‌ می‌تواند با استفاده از بلاک‌چین به‌عنوان لایه‌ داده، در ازای هزینه‌ای که به شبکه می‌پردازد، یک قرارداد هوشمند بسازد و آن را برای شبکه عمومی کند. سپس هر کاربر می‌تواند دوباره با پرداخت هزینه‌ای به شبکه، قرارداد هوشمند را برای اجرای کد آن فراخوانی کند. -بنابراین، با قراردادهای هوشمند، توسعه‌دهندگان می‌توانند برنامه‌های کاربردی و سرویس‌های دلخواه پیچیده‌ای را بسازند و به‌کار بگیرند که با کاربر مواجه هستند، مانند: بازارها، ابزارهای مالی، بازی‌ها و غیره. +بنابراین، با قراردادهای هوشمند، توسعه‌دهندگان می‌توانند اپلیکیشن‌ها و سرویس‌های دلخواه پیچیده‌ای را بسازند و به‌کار بگیرند که با کاربر مواجه هستند، مانند: بازارها، ابزارهای مالی، بازی‌ها و غیره. ## اصطلاح‌شناسی {#terminology} ### زنجیره‌ی بلوکی {#blockchain} -دنباله‌ای از تمام بلوک‌هایی که در تاریخچه‌ی شبکه به شبکه اتریوم کامیت شده‌اند. دلیل این نام‌گذاری آن است که هر بلوک حاوی یک ارجاع به بلوک قبلی است، که به ما کمک می‌کند ترتیب تمام بلوک‌ها (و در نتیجه تاریخچه‌ی دقیق) را حفظ کنیم. +دنباله‌ای از تمام بلوک‌هایی که در تاریخچه‌ شبکه به شبکه اتریوم تحویل شده‌اند. این نام‌گذاری به این دلیل است که هر بلوک حاوی یک ارجاع به بلوک قبلی است که به ما کمک می‌کند ترتیبی را در تمام بلوک‌ها حفظ کنیم (و در نتیجه تاریخچه دقیق). ### اتر {#eth} -ارز رمزنگاری‌شده‌ی بومی اتریوم. کاربران به سایر کاربران اتر می‌پردازند تا درخواست‌های اجرای کد آن‌ها اجرا شود. +**اتر (ETH)** ارز رمزنگاری‌شده‌ی بومی اتریوم است. کاربران به سایر کاربران اتر پرداخت می‌کنند تا درخواست‌های اجرای کد آن‌ها انجام شود. [اطلاعات بیشتر درباره‌ی اتر](/developers/docs/intro-to-ether/) ### ماشین مجازی اتریوم (EVM) {#evm} -ماشین مجازی اتریوم یک رایانه‌ی مجازی جهانی است که هر شرکت‌کننده در شبکه‌ی اتریوم وضعیت آن را ذخیره می‌کند و با آن موافق است. هر شرکت‌کننده می‌تواند اجرای کد دلخواه را در EVM درخواست کند و اجرای کد، وضعیت EVM را تغییر می‌دهد. +ماشین مجازی اتریوم یک رایانه‌ مجازی جهانی است که هر شرکت‌کننده در شبکه‌ اتریوم وضعیت آن را ذخیره می‌کند و با آن موافق است. هر شرکت‌کننده می‌تواند اجرای کد دلخواه را در EVM درخواست کند و اجرای کد، وضعیت EVM را تغییر می‌دهد. -[اطلاعات بیشتر درباره‌ی EVM](/developers/docs/evm/) +[اطلاعات بیشتر درباره‌ EVM](/developers/docs/evm/) ### گره {#nodes} -ماشین‌های واقعی که وضعیت EVM را ذخیره می‌کنند. گره‌ها با یکدیگر ارتباط برقرار می‌کنند تا اطلاعات مربوط به وضعیت EVM و تغییرات وضعیت جدید را منتشر کنند. هر کاربر همچنین می‌تواند با پخش یک درخواست اجرای کد از یک گره، اجرای آن کد را درخواست کند. شبکه‌ی اتریوم خود مجموعه‌ای از تمام گره‌های اتریوم و ارتباطات آنها است. +ماشین‌های واقعی که وضعیت EVM را ذخیره می‌کنند. گره‌ها با یکدیگر ارتباط برقرار می‌کنند تا اطلاعات مربوط به وضعیت EVM و تغییرات وضعیت جدید را تکثیر کنند. هر کاربر همچنین می‌تواند با پخش یک درخواست اجرای کد از یک گره، اجرای آن کد را درخواست کند. شبکه‌ اتریوم خود مجموعه‌ای از تمام گره‌های اتریوم و ارتباطات آنها است. [اطلاعات بیشتر درباره‌ی گره‌ها](/developers/docs/nodes-and-clients/) ### حساب {#accounts} -جایی که اتر در آن ذخیره می‌شود. کاربران می‌توانند حساب بسازند، اتر را به حساب واریز کنند و اتر را از حساب‌های خود به حساب‌های سایر کاربران منتقل کنند. حساب و مانده‌حساب در جدولی بزرگ در EVM ذخیره می‌شوند؛ آن‌ها بخشی از وضعیت کلی EVM هستند. +جایی که اتر ذخیره می‌شود. کاربران می‌توانند حساب‌ها را راه‌اندازی کنند، اتر را به حساب‌ها واریز کنند و اتر را از حساب‌های خود به سایر کاربران انتقال دهند. حساب و موجودی حساب در جدولی بزرگ در EVM ذخیره می‌شوند؛ آن‌ها بخشی از وضعیت کلی EVM هستند. [اطلاعات بیشتر در مورد حساب‌ها](/developers/docs/accounts/) ### تراکنش‌ها {#transactions} -«درخواست تراکنش» اصطلاح رسمی برای اشاره به درخواست اجرای کد در EVM است و «تراکنش» یک درخواست تراکنش انجام‌شده و تغییر مربوطه در وضعیت EVM است. هر کاربر می‌تواند درخواست تراکنش را از یک گره به شبکه ارسال کند. برای اینکه درخواست تراکنش بر وضعیت EVM توافق‌شده تأثیر بگذارد، باید توسط گره‌ی دیگری تأیید شود، اجرا شود و «به شبکه کامیت شود». اجرای هر کدی باعث تغییر وضعیت در EVM می‌شود. در صورت کامیت شدن، این تغییر وضعیت در تمامی گره‌های شبکه پخش می‌شود. چند نمونه از تراکنش‌ها: +«درخواست تراکنش» اصطلاح رسمی برای اشاره به درخواست اجرای کد در EVM است و «تراکنش» یک درخواست تراکنش انجام‌ شده و تغییر مربوطه در وضعیت EVM است. هر کاربر می‌تواند درخواست تراکنش را از یک گره به شبکه ارسال کند. برای اینکه درخواست تراکنش بر وضعیت EVM توافق‌شده تأثیر بگذارد، باید توسط گره‌ دیگری تأیید شود، اجرا شود و «به شبکه تحویل شود». اجرای هر کد باعث تغییر وضعیت در EVM می‌شود. در صورت تحویل شدن، این تغییر وضعیت در تمام گره‌های شبکه پخش می‌شود. چند نمونه از تراکنش‌ها: -- ارسال X اتر را از حساب من به حساب آلیس. -- اجرای تعدادی کد قرارداد هوشمند را در وضعیت EVM. -- اجرای کد قرارداد هوشمند موجود در آدرس X در EVM با آرگومان Y. +- X اتر را از حساب من به حساب آلیس ارسال کنید. +- تعدادی کد قرارداد هوشمند را در وضعیت EVM اجرا کنید. +- کد قرارداد هوشمند موجود در آدرس X در EVM با آرگومان Y را اجرا کنید. [اطلاعات بیشتر در مورد تراکنش‌ها](/developers/docs/transactions/) ### بلوک‌ها {#blocks} -حجم تراکنش‌ها بسیار زیاد است، بنابراین تراکنش‌ها به صورت دسته‌ای یا بلوکی «کامیت» می‌شوند. بلوک‌ها معمولا شامل ده‌ها تا صدها تراکنش هستند. +حجم تراکنش‌ها بسیار زیاد است، بنابراین تراکنش‌ها به صورت دسته‌ای یا بلوکی «تحویل» می‌شوند. بلوک‌ها معمولا شامل ده‌ها تا صدها تراکنش هستند. -[اطلاعات بیشتر در رابطه با بلوک‌ها](/developers/docs/blocks/) +[اطلاعات بیشتر درباره بلوک‌ها](/developers/docs/blocks/) ### قراردادهای هوشمند {#smart-contracts} -یک قطعه کد قابل‌استفاده مجدد (یک برنامه) که یک توسعه‌دهنده آن را در وضعیت EVM منتشر می‌کند. هر کسی می‌تواند با درخواست تراکنش، درخواست کند که کد قرارداد هوشمند اجرا شود. از آنجایی که توسعه‌دهندگان می‌توانند با انتشار قراردادهای هوشمند، برنامه‌های اجرایی دلخواه را در EVM (بازی‌ها، بازارها، ابزارهای مالی و غیره) بنویسند، این‌ها اغلب [‏dappها یا برنامه‌های غیرمتمرکز](/developers/docs/dapps/) نیز نامیده می‌شوند. +یک قطعه کد قابل‌استفاده مجدد (یک برنامه) که یک توسعه‌دهنده آن را در وضعیت EVM منتشر می‌کند. هر کس می‌تواند با درخواست تراکنش، درخواست کند که کد قرارداد هوشمند اجرا شود. از آنجا که توسعه‌دهندگان می‌توانند با انتشار قراردادهای هوشمند، برنامه‌های اجرایی دلخواه را در EVM (بازی‌ها، بازارها، ابزارهای مالی و غیره) بنویسند، این‌ها اغلب [‏dappها یا اپلیکیشن‌های غیرمتمرکز](/developers/docs/dapps/) نیز نامیده می‌شوند. [اطلاعات بیشتر درباره قراردادهای هوشمند](/developers/docs/smart-contracts/) ## بیشتر بخوانید {#further-reading} - [وایت‌پیپر اتریوم](/whitepaper/) -- [بگذریم، اتریوم چگونه کار می‌کند؟](https://www.preethikasireddy.com/post/how-does-ethereum-work-anyway) - _پریتی کسیردی_ +- [به هر حال اتریوم چگونه کار می کند؟](https://www.preethikasireddy.com/post/how-does-ethereum-work-anyway) - _Preethi Kasirdy_ (**توجه** این منبع هنوز ارزشمند است اما آگاه باشید که این منبع پیش از [ادغام](/roadmap/merge) است و بنابراین هنوز هم به مکانیزم اثبات کار اتریوم اشاره دارد - اتریوم در واقع اکنون با استفاده از [اثبات سهام](/developers/docs/consensus-mechanisms/pos) ایمن شده است) -_آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش کنید و آن را اضافه کنید!_ +_آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش کنید و به آن اضافه کنید!_ ## آموزش‌های مرتبط {#related-tutorials} -- [راهنمایی برای توسعه‌دهنده‌ی اتریوم، قسمت 1](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _– یک کاوش بسیار مبتدی در اتریوم با استفاده از Python و web3.py‏_ +- [راهنمای اتریوم برای توسعه‌دهندگان، بخش 1](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _– بررسی بسیار کاربرپسند اتریوم با استفاده از پایتون و web3.py_ diff --git a/src/content/translations/fa/developers/docs/networks/index.md b/src/content/translations/fa/developers/docs/networks/index.md index ca4babd64e9..9b79531c429 100644 --- a/src/content/translations/fa/developers/docs/networks/index.md +++ b/src/content/translations/fa/developers/docs/networks/index.md @@ -4,125 +4,137 @@ description: مروری بر شبکه‌های اتریوم و محل دریاف lang: fa --- -از آنجایی که اتریوم یک پروتکل است، این بدان معناست که می‌تواند چندین «شبکه» مستقل مطابق با این پروتکل وجود داشته باشند که با یکدیگر تعامل نداشته باشند. +شبکه های اتریوم گروهی از کامپیوتر های متصل به هم هستند که از طریق پروتکل اتریوم با هم ارتباط برقرار میکنند. تنها یک شبکه اصلی اتریوم وجود دارد، اما شبکه‌ های مستقلی مطابق با قوانین پروتکلی یکسان می توانند به منظور آزمایش و توسعه ایجاد شوند. تعداد زیادی "شبکه‌ های" مستقل وجود دارند که بدون تعامل با یکدیگر با پروتکل تطابق دارند. حتی می توانید برای آزمایش قراردادهای هوشمند و اپلیکیشن‌ های Web3 خود، یکی را بر روی کامپیوتر خود به صورت محلی راه اندازی کنید. -شبکه‌ها محیط‌های مختلف اتریوم هستند که می‌توانید برای توسعه، آزمایش یا تولید به آن‌ها دسترسی داشته باشید. حساب اتریوم شما در شبکه‌های مختلف کار می‌کند، اما موجودی حساب و سابقه‌ی تراکنش‌های شما از شبکه اصلی اتریوم منتقل نمی‌شود. برای اهداف آزمایشی، دانستن اینکه کدام شبکه‌ها در دسترس هستند و چگونه می‌توان اتر شبکه تست را برای استفاده دریافت کرد مفید است. +حساب اتریوم شما در شبکه های مختلف کار می کند، اما موجودی حساب و سابقه‌ی تراکنش شما از شبکه‌ی اصلی اتریوم منتقل نمی‌شود. برای مقاصد آزمایشی، دانستن اینکه کدام شبکه‌ها در دسترس هستند و چگونه می‌توان اتر شبکه آزمایشی را برای کار کردن با آن به دست آورد، مفید است. به طور کلی، بنا به دلایل امنیتی، اسفاده مجدد از حساب های شبکه اصلی بروی شبکه‌ آزمایشی یا برعکس، توصیه نمی شود. ## پیش‌نیازها {#prerequisites} -قبل از مطالعه در مورد شبکه‌های مختلف باید اصول اولیه اتریوم را بدانید، چون شبکه‌های تست نسخه‌ای ارزان و ایمن از اتریوم را برای کار در اختیار شما قرار می‌دهند. [معرفی اتریوم](/developers/docs/intro-to-ethereum/) ما را امتحان کنید. +قبل از کسب اطلاعات در مورد شبکه‌های مختلف، باید [اصول اتریوم](/developers/docs/intro-to-ethereum/) را بدانید، زیرا شبکه‌های تست نسخه‌ای ارزان و ایمن از اتریوم را برای تجربه کردن در اختیار شما قرار می‌دهند. ## شبکه‌های عمومی {#public-networks} -شبکه‌های عمومی برای هر کسی در جهان با اتصال به اینترنت قابل‌دسترسی هستند. هر کسی می‌تواند تراکنش‌هایی را در یک زنجیره‌ی بلوکی عمومی بخواند یا ایجاد کند و تراکنش‌های در حال اجرا را تأیید کند. توافق در مورد تراکنش‌ها و وضعیت شبکه با اجماع همتایان تعیین می‌شود. +شبکه‌های عمومی برای هر کسی در جهان با اتصال به اینترنت قابل‌دسترسی هستند. هر کسی می‌تواند تراکنش‌هایی را در یک زنجیره‌ی بلوکی عمومی بخواند یا ایجاد کند و تراکنش‌های در حال اجرا را تأیید کند. اجماع بین همتایان در مورد گنجاندن تراکنش‌ها و وضعیت شبکه تصمیم می‌گیرد. -### شبکه‌ی اصلی {#mainnet} +### شبکه‌ی اصلی اتریوم {#ethereum-mainnet} شبکه‌ی اصلی اولین زنجیره‌ی بلوکی عمومی تولید اتریوم است که تراکنش‌های توزیع شده با ارزش واقعی در دفتر کل روی آن انجام می‌شود. وقتی مردم و صرافی‌ها درباره قیمت اتر صحبت می‌کنند، در مورد اتر روی شبکه‌ی اصلی صحبت می‌کنند. -### شبکه‌ی تست {#testnets} +### شبکه‌های تست اتریوم {#ethereum-testnets} -علاوه بر شبکه اصلی، شبکه‌های آزمایشی عمومی نیز وجود دارند. علاوه بر شبکه‌ی اصلی، شبکه‌های آزمایشی عمومی نیز وجود دارند. این را به‌عنوان یک آنالوگ برای تولید در مقابل سرورهای مرحله‌ای در نظر بگیرید. +علاوه بر شبکه اصلی، شبکه‌های تست عمومی نیز وجود دارند. علاوه بر شبکه‌ی اصلی، شبکه‌های تست عمومی نیز وجود دارند. این را به‌عنوان یک آنالوگ برای تولید در مقابل سرورهای مرحله‌ای در نظر بگیرید. -به‌طور کلی مهم است که هر کد قراردادی را که در یک شبکه‌ی آزمایشی می‌نویسید قبل از استقرار در شبکه‌ی اصلی آزمایش کنید. اگر در حال ساختن برنامه‌ای هستید که با قراردادهای هوشمند موجود ادغام می‌شود، اکثر پروژه‌ها نسخه‌هایی را در شبکه‌های آزمایشی مستقر کرده‌اند که می‌توانید با آنها تعامل داشته باشید. +قبل از استقرار در شبکه‌ی اصلی باید هر کد قراردادی را که روی یک شبکه‌ی تست می‌نویسید آزمایش کنید. قبل از استقرار در شبکه‌ی اصلی باید هر کد قراردادی را که روی یک شبکه‌ی تست می‌نویسید آزمایش کنید. -بیشتر شبکه‌های آزمایشی از مکانیزم اجماع اثبات اعتبار استفاده می‌کنند. این بدان معناست که تعداد کمی از گره‌ها برای اعتبارسنجی تراکنش‌ها و ایجاد بلوک‌های جدید انتخاب می‌شوند و هویت آن‌ها در این فرایند سهام‌گذاری می‌شود. ایجاد انگیزه برای استخراج در یک شبکه‌ی آزمایشی اثبات کار که می‌تواند آن را آسیب‌پذیر کند، دشوار است. +بیشتر شبکه‌ های تست با استفاده از یک گواهی صلاحیت مکانیزم اجماع مجاز شروع کرده اند. این بدان معناست که تعداد کمی از گره‌ها برای اعتبارسنجی تراکنش‌ها و ایجاد بلوک‌های جدید انتخاب می‌شوند و هویت آن‌ها در این فرایند سهام‌گذاری می‌شود. از سوی دیگر، بعضی شبکه های تست مکانیزم اثبات سهام عمومی دارند که درست مثل شبکه اصلی اتریوم، هر کس میتواند راه‌اندازی و نگهداری اعتبار سنج شبکه را تست کند. -اتر شبکه‌ی تست ارزش واقعی ندارد، بنابراین هیچ بازاری برای اتر شبکه‌ی تست وجود ندارد. از آنجایی که برای تعامل واقعی با اتریوم به اتر نیاز دارید، اکثر مردم اتر شبکه‌ی تست را از فاست‌ها دریافت می‌کنند. بیشتر فاست‌ها برنامه‌های تحت وب هستند که می‌توانید آدرسی را که درخواست ارسال اتر به آن آدرس را دارید در آن‌ها وارد کنید. +قرار است اتر در شبکه های تست ارزش واقعی نداشته باشد، یا این حال، بازارهایی برای انواع خاصی از شبکه تست اتر ایجاد شده است که دسترسی به آنها سخت شده است. از آنجا که برای تعامل واقعی با اتریوم به اتر احتیاج دارید (حتی بر روی شبکه تست)، بسیاری از افراد اتر شبکه‌ تست را از فاست ها به طور رایگان دریافت می کنند. بیشتر فاست‌ها برنامه‌های تحت وب هستند که می‌توانید آدرسی را که درخواست ارسال اتر به آن آدرس را دارید در آن‌ها وارد کنید. -#### Arbitrum Rinkeby {#arbitrum-rinkeby} +#### از کدام شبکه‌ تست باید استفاده کنم؟ -یک شبکه‌ی تست برای [‏Arbitrum‏](https://arbitrum.io/). +دو شبکه تست عمومی که کاربران توسعه‌دهنده در حال حاضر نگهداری میکنند Goerli و Sepolia هستند. Sepolia یک شبکه‌ برای قرارداد‌ و اپلیکیشن است که توسعه‌دهندگان برنامه های خود را روی آن آزمایش می کنند. شبکه‌ Goerli به توسعه‌دهندگان پروتکل اجازه می دهد ارتقا شبکه را آزمایش کنند، و به سهام گذاران اجازه می دهد تا اعتبارسنج های در حال اجرا را تست کنند. -##### فاست‌های Arbitrum Rinkeby +#### Sepolia {#sepolia} -- [FaucETH](https://fauceth.komputing.org) (فاست چند زنجیره‌ای بدون نیاز به داشتن حساب اجتماعی) -- [فاست Chainlink](https://faucets.chain.link/) -- [فاست Paradigm](https://faucet.paradigm.xyz/) +**Sepolia شبکه تست پیش فرض توصیه شده برای توسعه اپلیکیشن می باشد**. شبکه‌ Sepolia از یک مجموعه اعتبارسنج مجاز استفاده می کند. که این نسبتا جدید می باشد، و به این معنی است که تاریخچه و وضعیت آن بسیار کوچک می باشد. این به این معنی است که همگام‌سازی شبکه‌ بسیار سریع است و اجرای یک گره بر روی آن به حافظه کمی احتیاج دارد. این برای کاربرانی که می خواهند سریعا یک گره را چرخانده و با شبکه‌ به طور مستقیم تعامل داشته باشند، مفید است. -#### Görli {#goerli} +- مجموعه اعتبارسنج بسته، کنترل شده توسط کاربر &، تیم های تست +- شبکه‌ تست جدید، با استقرارر اپلیکیشن‌های کمتر نسبت به بقیه شبکه‌ های تست +- همگام سازی سریع و اجرای یک گره نیاز به حداقل فضای دیسک دارد -یک شبکه‌ی تست اثبات اعتبار که بین کلاینت‌ها کار می‌کند. +##### منابع -##### فاست‌های Görli +- [وب سایت](https://sepolia.dev/) +- [گیت هاب](https://github.com/eth-clients/sepolia) +- [Otterscan](https://sepolia.otterscan.io/) +- [Etherscan](https://sepolia.etherscan.io) -- [فاست Görli](https://faucet.goerli.mudit.blog/) -- [فاست Chainlink](https://faucets.chain.link/) -- [Alchemy Goerli Faucet](https://goerlifaucet.com/) +##### فاست ها -#### Kintsugi {#kintsugi} +- [فاست QuickNode Sepolia](https://faucet.quicknode.com/drip) +- [Grabteeth](https://grabteeth.xyz/) +- [فاست PoW](https://sepolia-faucet.pk910.de/) +- [فاست Sepolia](https://faucet.sepolia.dev/) +- [FaucETH](https://fauceth.komputing.org) +- [فاست کیف پول 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) -یک شبکه‌ی تست ادغامی برای اتریوم. +#### Goerli*(پشتیبانی طولانی مدت)* {#goerli} -##### فاست‌های Kintsugi +_توجه:[شبکه‌ تست Goerli منسوخ شده است](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17) و در 2023 با [Holesovice](https://github.com/eth-clients/holesovice) جایگزین خواهد شد. لطفاً انتقال اپلیکیشن‌های خود را به Sepolia در نظر بگیرید._ -- [FaucETH](https://fauceth.komputing.org) (فاست چندزنجیره‌ای بدون نیاز به داشتن حساب اجتماعی) -- [فاست‌ Kintsugi](https://faucet.kintsugi.themerge.dev/) +Goerli یک شبکه‌ تست برای آزمایش اعتبارسنجی و سهام گذاری است. شبکه‌ Goerli برای کاربرانی که می خواهند اعتبارسنجی یک شبکه‌ تست را اجرا کنند، باز است. سهام گذارانی که می خواهند آپدیت های پروتکل را قبل از پیاده‌سازی بر روی شبکه اصلی آزمایش کنند، پس باید از Goerli استفاده کنند. -#### Kovan {#kovan} +- مجموعه اعتبارسنج باز، سهام گذاران می توانند ارتقا شبکه‌ را تست کنند +- وضعیت بزرگ داده ای، مفید برای تست تعاملات قرارداد هوشمند پیچیده +- همگام سازی بیشتر طول میشکد و حافظه بیشتری برای اجرای گره احتیاج است -یک شبکه‌ی تست اثبات اعتبار برای کسانی که از کلاینت‌های OpenEthereum استفاده می‌کنند. +##### منابع -##### فاست‌های Kovan +- [وب‌سایت](https://goerli.net/) +- [گیت‌هاب](https://github.com/eth-clients/goerli) +- [Etherscan](https://goerli.etherscan.io) -- [FaucETH](https://fauceth.komputing.org) (فاست چندزنجیره‌ای بدون نیاز به داشتن حساب اجتماعی) -- [فاست Kovan](https://faucet.kovan.network/) -- [فاست Chainlink](https://faucets.chain.link/) -- [فاست Paradigm](https://faucet.paradigm.xyz/) +##### فاست ها -#### Optimistic Kovan {#optimistic-kovan} +- [فاست QuickNode Goerli](https://faucet.quicknode.com/drip) +- [Grabteeth](https://grabteeth.xyz/) +- [فاست PoW](https://goerli-faucet.pk910.de/) +- [فاست Paradigm](https://faucet.paradigm.xyz/) +- [فاست Alchemy Goerli](https://goerlifaucet.com/) +- [فاست All That Node Goerli](https://www.allthatnode.com/faucet/ethereum.dsrv) +- [فاست کیف پول Coinbase | Sepolia](https://coinbase.com/faucets/ethereum-goerli-faucet) +- [فاست Chainstack Sepolia](https://faucet.chainstack.com/goerli-faucet) -یک شبکه‌ی تست برای [Optimism](https://www.optimism.io/). +برای راه‌اندازی اعتبارسنج بر روی شبکه تست گورلی (Goerli)، از [سکوی پرتاپ"اعتبار سنج ارزان گورلی"](https://goerli.launchpad.ethstaker.cc/en/) که توسط جامعه Ethstaker ارائه میشود استفاده کنید. -##### فاست‌های Optimistic Kovan +### شبکه‌های تست لایه 2 {#layer-2-testnets} -- [FaucETH](https://fauceth.komputing.org) (فاست چندزنجیره‌ای بدون نیاز به داشتن حساب اجتماعی) -- [فاست Paradigm](https://faucet.paradigm.xyz/) +[لایه 2 (L2)](/layer-2/) یک اصطلاح جمعی برای توصیف مجموعه خاصی از راه‌حل‌های مقیاس‌پذیری اتریوم است. لایه 2 یک بلاک‌چین جداگانه است که اتریوم را گسترش می‌دهد و تضمین‌های امنیتی اتریوم را به ارث می‌برد. شبکه‌های تست لایه 2 معمولاً محکم به شبکه‌های تست عمومی اتریوم متصل می‌شوند. -#### Rinkeby {#rinkeby} +#### شبکه تست Arbitrum Goerli {#arbitrum-goerli} -یک شبکه‌ی تست اثبات اعتبار برای کسانی که از کلاینت Geth استفاده می‌کنند. +یک شبکه‌ تست برای [‏Arbitrum](https://arbitrum.io/). -##### فاست‌های Rinkeby +##### فاست ها -- [FaucETH](https://fauceth.komputing.org) (فاست چندزنجیره‌ای بدون نیاز به داشتن حساب اجتماعی) -- [فاست Alchemy](https://RinkebyFaucet.com) - [فاست Chainlink](https://faucets.chain.link/) -- [فاست Paradigm](https://faucet.paradigm.xyz/) -- [فاست Rinkeby](https://faucet.rinkeby.io/) -#### Ropsten {#ropsten} +#### Optimistic Goerli {#optimistic-goerli} -یک شبکه‌ی تست اثبات کار. این به این معنی است که این فاست بهترین بازنمایی مشابه اتریوم است. +یک شبکه‌ تست برای [Optimism](https://www.optimism.io/). -##### فاست‌های Ropsten +##### فاست ها -- [FaucETH](https://fauceth.komputing.org) (فاست چندزنجیره‌ای بدون نیاز به داشتن حساب اجتماعی) - [فاست Paradigm](https://faucet.paradigm.xyz/) +- [فاست کیف پول Coinbase | Sepolia](https://coinbase.com/faucets/optimism-goerli-faucet) ## شبکه‌های خصوصی {#private-networks} -یک شبکه‌ی اتریوم در صورتی که گره‌های آن به یک شبکه‌ی عمومی متصل نباشند یک شبکه‌ی خصوصی است (یعنی شبکه‌ی اصلی یا شبکه‌ی تست). در این زمینه، خصوصی فقط به معنای رزرو شده یا جدا شده است، نه محافظت‌شده یا امن. +یک شبکه‌ اتریوم در صورتی که گره‌های آن به یک شبکه‌ عمومی متصل نباشند یک شبکه‌ خصوصی است (یعنی شبکه اصلی یا یک شبکه تست). در این زمینه، خصوصی فقط به معنای رزرو شده یا جدا شده است، نه محافظت‌شده یا امن. ### شبکه‌های توسعه {#development-networks} -برای اینکه یک برنامه‌ی کاربردی اتریوم را توسعه دهید، لازم است آن را در یک شبکه‌ی خصوصی اجرا کنید تا قبل از بکارگیری نحوه‌ی کارکرد آن را ببینید. مشابه نحوه‌ی ایجاد یک سرور محلی در رایانه خود برای توسعه‌ی وب، می‌توانید یک نمونه زنجیره‌ی بلوکی محلی برای آزمایش dapp خود ایجاد کنید. این موضوع امکان تکرار بسیار سریع‌تر را نسبت به یک شبکه‌ی تست عمومی فراهم می‌کند. +برای اینکه یک اپلیکیشن اتریوم را توسعه دهید، لازم است آن را در یک شبکه‌ خصوصی اجرا کنید تا قبل از بکارگیری نحوه‌ کارکرد آن را ببینید. مشابه نحوه‌ ایجاد یک سرور محلی در رایانه خود برای توسعه‌ وب، می‌توانید یک نمونه بلاک‌چین محلی برای آزمایش اپلیکیشن غیرمتمرکز خود ایجاد کنید. این موضوع امکان تکرار بسیار سریع‌تر را نسبت به یک شبکه‌ تست عمومی فراهم می‌کند. -پروژه‌ها و ابزارهایی برای کمک به این امر اختصاص داده شده است. درباره‌ی [شبکه‌های توسعه](/developers/docs/development-networks/) بیشتر بدانید. +پروژه‌ها و ابزارهایی برای کمک به این امر اختصاص داده شده است. درباره‌ [شبکه‌های توسعه](/developers/docs/development-networks/) بیشتر بدانید. ### شبکه‌های کنسرسیومی {#consortium-networks} -فرایند اجماع توسط مجموعه‌ای از گره‌های از پیش تعریف‌شده که قابل‌اعتماد هستند کنترل می‌شود. به‌عنوان مثال، یک شبکه‌ی خصوصی از مؤسسات دانشگاهی شناخته‌شده که هر یک گره‌ای واحد را حکمرانی می‌کنند و بلوک‌ها توسط آستانه‌ای از امضاکنندگان در شبکه اعتبارسنجی می‌شوند. +فرایند اجماع توسط مجموعه‌ای از گره‌های از پیش تعریف‌شده که قابل‌اعتماد هستند کنترل می‌شود. به‌عنوان مثال، یک شبکه‌ خصوصی از مؤسسات دانشگاهی شناخته‌شده که هر یک گره‌ واحدی را حکمرانی می‌کنند، و بلوک‌ها توسط آستانه‌ای از امضاکنندگان در شبکه اعتبارسنجی می‌شوند. -اگر یک شبکه‌ی عمومی اتریوم مانند اینترنت عمومی است، می‌توانید یک شبکه‌ی کنسرسیومی را به‌عنوان یک اینترانت خصوصی در نظر بگیرید. +اگر یک شبکه‌ عمومی اتریوم مانند اینترنت عمومی است، یک شبکه‌ کنسرسیومی مثل یک اینترانت خصوصی است. ## ابزارهای مرتبط {#related-tools} -- [‏Chainlist‏](https://chainlist.org/) _فهرست شبکه‌های EVM برای اتصال کیف پول‌ها و ارائه‌دهندگان به شناسه‌ی زنجیره و شناسه‌ی شبکه‌ی مناسب_ -- [زنجیره‌های مبتنی بر EVM](https://github.com/ethereum-lists/chains) _مخزن فراداده‌های زنجیره‌ای گیت‌هاب که Chainlist را تقویت می‌کند_ +- [فهرست زنجیره‌](https://chainlist.org/) _فهرست شبکه‌های EVM برای اتصال کیف پول‌ها و ارائه‌دهندگان به شناسه‌ زنجیره و شناسه‌ شبکه مناسب_ +- [زنجیره‌های مبتنی بر EVM](https://github.com/ethereum-lists/chains) _مخزن فراداده‌های زنجیره در گیت‌هاب که فهرست زنجیره‌ را پشتیبانی می‌کند_ ## بیشتر بخوانید {#further-reading} -_آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش کنید و آن را اضافه کنید!_ +- [طرح پیشنهادی: چرخه زندگی قابل پیش‌بینی شبکه تست اتریوم](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17) +- [سیر تکامل شبکه های تست اتریوم](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/) diff --git a/src/content/translations/fa/developers/docs/transactions/gas-tx.png b/src/content/translations/fa/developers/docs/transactions/gas-tx.png new file mode 100644 index 0000000000000000000000000000000000000000..6a5ca117e8fe405bab927ed1abdcb2eeb0ff8236 GIT binary patch literal 21535 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 aijA;3(wV_M!sa9+a$UV*X;f?I7W)TTGWr_; literal 0 HcmV?d00001 diff --git a/src/content/translations/fa/developers/docs/transactions/index.md b/src/content/translations/fa/developers/docs/transactions/index.md index a4a6196cc94..4eaa31dd7bd 100644 --- a/src/content/translations/fa/developers/docs/transactions/index.md +++ b/src/content/translations/fa/developers/docs/transactions/index.md @@ -16,21 +16,23 @@ lang: fa ![شکلی نشان‌دهنده‌ی یک تراکنش که باعث تغییر وضعیت می‌شود](./tx.png) _نمودار برگرفته از [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ -تراکنش‌هایی که وضعیت EVM را تغییر می‌دهند، باید در کل شبکه پخش شوند. هر گره‌ای می‌تواند درخواستی برای اجرای تراکنش در EVM ارسال کند. پس از این اتفاق، یک استخراج‌گر تراکنش را اجرا می‌کند و تغییر حالت حاصل را به بقیه‌ی شبکه پخش می‌کند. +تراکنش‌هایی که وضعیت EVM را تغییر می‌دهند، باید در کل شبکه پخش شوند. هر گره‌ می‌تواند اجرای تراکنش در ماشین مجازی اتریوم (EVM) را درخواست کند؛ پس از این اتفاق، یک اعتبارسنج تراکنش را اجرا می‌کند و تغییر حالت حاصل را در بقیه شبکه تکثیر می‌کند. -تراکنش‌ها نیاز به کارمزد دارند و برای معتبر شدن باید استخراج شوند. برای ساده‌تر کردن این نمای کلی، کارمزدهای گاز و استخراج را در جای دیگری پوشش خواهیم داد. +تراکنش ها نیاز به کارمزد دارند و باید در یک بلوک تأیید شده قرار گیرند. برای ساده‌تر کردن این نمای کلی، کارمزدهای گاز و اعتبارسنجی را در جای دیگری پوشش خواهیم داد. تراکنش ارسالی شامل اطلاعات زیر است: -- `recipient` - آدرس دریافت‌کننده (اگر یک حساب با مالکیت خارجی باشد، تراکنش یک ارزش را منتقل می‌کند. اگر یک حساب قرارداد باشد، تراکنش کد قرارداد را اجرا می‌کند) -- `signature` - شناسه‌ی فرستنده. زمانی ایجاد می‌شود که کلید خصوصی فرستنده تراکنش را امضا کند و تأیید کند که فرستنده این تراکنش را مجاز کرده است -- `value` - مقدار اتر برای انتقال از فرستنده به گیرنده (به WEI، واحد خردی از اتر) -- `data` - فیلد اختیاری برای گنجاندن داده‌های دلخواه -- `gasLimit` - حداکثر مقدار واحدهای گازی که می‌تواند توسط تراکنش مصرف شود. واحدهای گاز مراحل محاسباتی را نشان می‌دهند -- `maxPriorityFeePerGas` - حداکثر مقدار گازی که باید به‌عنوان پاداش برای استخراج‌گر لحاظ شود -- `maxFeePerGas` - حداکثر مقدار گازی که مایل به پرداخت برای تراکنش است (شامل `baseFeePerGas` و `maxPriorityFeePerGas`) +- `از` - آدرس فرستنده که تراکنش را امضا خواهد کرد. این یک حساب مالکیت خارجی خواهد بود، چون حساب قرارداد نمیتواند تراکنش ارسال کنند. +- `دریافت‌کننده` - آدرس دریافت‌کننده (اگر یک حساب با مالکیت خارجی باشد، تراکنش یک ارزش را منتقل می‌کند. اگر یک حساب قرارداد باشد، تراکنش کد قرارداد را اجرا می‌کند) +- `امضاء` - شناسه‌ فرستنده. زمانی ایجاد می‌شود که کلید خصوصی فرستنده تراکنش را امضا کند و تأیید کند که فرستنده این تراکنش را مجاز کرده است +- `Nonce` - یک شمارنده که به شکل متوالی افزایش می یابد و تعداد تراکنش های حساب را نشان میدهد +- `ارزش` - مقدار اتر فرستاده شده از آدرس فرستنده تراکنش به گیرنده (این مقدار در واحد اندازه گیری WEI نمایش داده میشود، که هر اتر برابر با 1e+18 wei است) +- `داده ورودی(input data)` - قسمتی اختیاری برای قراردادن هر داده دلخواه +- `gasLimit` - حداکثر مقدار واحدهای گازی که می‌تواند توسط تراکنش مصرف شود. [ماشین مجازی اتریوم (EVM)](/developers/docs/evm/opcodes) واحدهای گاز لازم برای انجام هر مرحله محاسباتی تراکنش را مشخص می کند +- `حداکثر انعام به ازای هر گاز (maxPriorityFeePerGas)` - حداکثر قیمت گازهایی که به‌عنوان انعام به اعتبارسنج پرداخت میشود +- `حداکثر کارمزد به ازای هر گاز (maxFeePerGas)` - حداکثر قیمتی که کاربر به ازای هر واحد گاز مایل به پرداخت است (شامل `قیمت پایه به ازای هر گاز (baseFeePerGas)`و`حداکثر قیمت اولویت به ازای هر گاز (maxPriorityFeePerGas)`) -گاز به محاسباتی اشاره می‌کند که برای پردازش تراکنش توسط یک استخراج‌گر لازم است. کاربران برای این محاسبه باید هزینه‌ای بپردازند. `gasLimit` و `maxPriorityFeePerGas` حداکثر کارمزد تراکنش پرداختی به استخراج‌گر را تعیین می‌کنند. [درباره‌ی گاز بیشتر بدانید](/developers/docs/gas/). +گاز به محاسبات لازم برای پردازش تراکنش توسط اعتبارسنج اشاره میکند. کاربران برای این محاسبه باید هزینه‌ای بپردازند. `محدوده گاز (gasLimit)`، و`حداکثر قیمت اولویت به ازای هر گاز (maxPriorityFeePerGas)` نشان دهنده بیشترین کارمزد تراکنش پرداخت شده به اعتبارسنج می باشد. [درباره‌ی گاز بیشتر بدانید](/developers/docs/gas/). شی‌ء تراکنش کمی شبیه به این خواهد بود: @@ -50,7 +52,7 @@ lang: fa یک کلاینت اتریوم مانند Geth این فرایند امضا را انجام می‌دهد. -نمونه‌ی فراخوانی [JSON-RPC](https://eth.wiki/json-rpc/API): +نمونه‌ فراخوانی [JSON-RPC](/developers/docs/apis/json-rpc): ```json { @@ -97,59 +99,61 @@ lang: fa } ``` -- `raw` تراکنش امضاشده به شکل رمزگذاری‌شده با پیشوند طول بازگشتی (RLP) است +- `raw` تراکنشی امضا شده است در فرم کدگذاری شده [Recursive Length Prefix (RLP)](/developers/docs/data-structures-and-encoding/rlp) - `tx` تراکنش امضاشده به شکل JSON است با هش امضا، می‌توان به صورت رمزنگاری ثابت کرد که تراکنش از فرستنده آمده و به شبکه ارسال شده است. -### The data field {#the-data-field} +### فیلد داده‌ها {#the-data-field} -The vast majority of transactions access a contract from an externally-owned account. Most contracts are written in Solidity and interpret their data field in accordance with the [application binary interface (ABI)](/glossary/#abi). +اکثریت قریب‌به‌اتفاق تراکنش‌ها از طریق یک حساب دارای مالکیت خارجی به یک قرارداد دسترسی دارند. اکثر قراردادها در Solidity نوشته شده‌اند و فیلد داده‌های آن‌ها را مطابق با [رابط باینری برنامه (ABI)](/glossary/#abi) تفسیر می‌کنند. -The first four bytes specify which function to call, using the hash of the function's name and arguments. You can sometimes identify the function from the selector using [this database](https://www.4byte.directory/signatures/). +چهار بایت اول با استفاده از هش نام تابع و آرگومان‌ها مشخص می‌کند که کدام تابع را فراخوانی کند. گاهی اوقات می‌توانید تابع را از انتخابگر با استفاده از [این پایگاه داده](https://www.4byte.directory/signatures/) شناسایی کنید. -The rest of the calldata is the arguments, [encoded as specified in the ABI specs](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding). +بقیه فراخوان‌داده‌ها (calldata) آرگومان هستند، که [مطابق با مشخصات ABI مشخص شده‌اند](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding). -For example, lets look at [this transaction](https://etherscan.io/tx/0xd0dcbe007569fcfa1902dae0ab8b4e078efe42e231786312289b1eee5590f6a1). Use **Click to see More** to see the calldata. +برای مثال، بیایید به [این تراکنش](https://etherscan.io/tx/0xd0dcbe007569fcfa1902dae0ab8b4e078efe42e231786312289b1eee5590f6a1) نگاه کنیم. از **برای مشاهده‌ی بیشتر کلیک کنید** برای دیدن فراخوان‌داده‌ها استفاده کنید. -The function selector is `0xa9059cbb`. There are several [known functions with this signature](https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb). In this case [the contract source code](https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#code) has been uploaded to Etherscan, so we know the function is `transfer(address,uint256)`. +انتخابگر تابع `0xa9059cbb` است. چندین [تابع شناخته‌شده با این امضا وجود دارد](https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb). در این مورد [کد منبع قرارداد](https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#code) در Etherscan آپلود شده است، بنابراین می‌دانیم که این تابع `transfer(address, uint256)` است. -The rest of the data is: +بقیه داده‌ها عبارتند از: ``` 0000000000000000000000004f6742badb049791cd9a37ea913f2bac38d01279 000000000000000000000000000000000000000000000000000000003b0559f4 ``` -According to the ABI specifications, integer values (such as addresses, which are 20-byte integers) appear in the ABI as 32-byte words, padded with zeros in the front. So we know that the `to` address is [`4f6742badb049791cd9a37ea913f2bac38d01279`](https://etherscan.io/address/0x4f6742badb049791cd9a37ea913f2bac38d01279). The `value` is 0x3b0559f4 = 990206452. +با توجه به مشخصات ABI، مقادیر صحیح (مانند آدرس‌ها که اعداد صحیح 20 بایتی هستند) در ABI به صورت کلمات 32 بایتی ظاهر می‌شوند که ممکن است یک یا چند صفر در ابتدای آن‌ها قرار داده شود. بنابراین ما می‌دانیم که آدرس `«to»‏` +`4f6742badb049791cd9a302791cd9a302791cd99a32791cd99a310.com است. +`مقدار 0x3b0559f4 = 990206452 است.` ## انواع تراکنش‌ها {#types-of-transactions} -در اتریوم چند نوع مختلف تراکنش وجود دارد: +در اتریوم چند نوع تراکنش مختلف وجود دارد: -- تراکنش‌های منظم: تراکنش از یک کیف پول به کیف پولی دیگر. +- تراکنش های منظم: تراکنش از یک حساب به حساب دیگر. - تراکنش‌های استقرار قرارداد: تراکنش بدون آدرس «to»، که در آن از فیلد داده‌ها برای کد قرارداد استفاده می‌شود. -- Execution of a contract: a transaction that interacts with a deployed smart contract. In this case, 'to' address is the smart contract address. +- اجرای قرارداد: تراکنشی که با یک قرارداد هوشمند مستقر تعامل دارد. در این مورد، آدرس «to»، آدرس قرارداد هوشمند است. ### درباره‌ی گاز {#on-gas} همان‌طور که گفته شد، انجام تراکنش‌ها [گاز](/developers/docs/gas/) مصرف می‌کند. تراکنش‌های انتقال ساده به 21000 واحد گاز نیاز دارند. -بنابراین برای اینکه باب 1 اتر را به آلیس با `baseFeePerGas` 190 gwei و `maxPriorityFeePerGas` 10 gwei ارسال کند، باب باید هزینه‌ی زیر را بپردازد: +بنابراین برای اینکه باب 1 اتر را به آلیس با `baseFeePerGas` به میزان 190 gwei و `maxPriorityFeePerGas` به میزان 10 gwei ارسال کند، باب باید هزینه‌ی زیر را بپردازد: ``` (190 + 10) * 21000 = 4,200,000 gwei ---or-- -0.0042 ETH +--یا-- +0.0042 اتر ``` -حساب باب **1.0042- اتر** بدهکار خواهد شد +مقدار **1.0042 اتر** از حساب باب کسر خواهد شد (1 اتر برای آلیس + 0.0042 اتر برای هزینه گاز) به حساب آلیس **1.0+ اتر** بستانکار خواهد شد کارمزد پایه **0.00399- اتر** خواهد شد -استخراج‌گر **0.000210+ اتر** را نگه می‌دارد +اعتبارسنج انعام **+0.000210 ETH** را نگه می دارد گاز برای هر تعامل قرارداد هوشمند نیز لازم است. @@ -161,13 +165,12 @@ According to the ABI specifications, integer values (such as addresses, which ar هنگامی که تراکنش ارسال شد، موارد زیر اتفاق می‌افتد: -1. وقتی یک تراکنش را ارسال می‌کنید، رمزنگاری یک هش تراکنش ایجاد می‌کند: `0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017` -2. تراکنش سپس به شبکه پخش می‌شود و در یک استخر با بسیاری از تراکنش‌های دیگر گنجانده می‌شود. -3. یک استخراج‌گر باید تراکنش شما را انتخاب کند و آن را در یک بلوک قرار دهد تا تراکنش را تأیید کند و آن را «موفق» در نظر بگیرد. - - اگر شبکه مشغول باشد و استخراج‌گرها قادر به ادامه دادن نباشند، ممکن است در این مرحله منتظر بمانید. -4. تراکنش شما «تأییدات» را دریافت خواهد کرد. تعداد تأییدیه‌ها برابر با تعداد بلوک‌های ایجاد شده از زمان بلوکی است که شامل تراکنش شما می‌شود. هرچه این عدد بیشتر باشد، نشان دهنده‌ی اطمینان بیشتر از پردازش و شناسایی تراکنش توسط شبکه خواهد بود. - - بلوک‌های اخیر ممکن است دوباره سازماندهی شوند و این تصور را ایجاد کنند که تراکنش ناموفق بوده است. با این حال، تراکنش ممکن است همچنان معتبر باشد اما در بلوک دیگری گنجانده شود. - - احتمال سازماندهی مجدد با استخراج هر بلوک بعدی کاهش می‌یابد، یعنی هر چه تعداد تأییدات بیشتر باشد، تراکنش تغییرناپذیرتر است. +1. یک هشِ تراکنش به صورت رمزنگاری شده تولید میشود: `0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017` + +2. سپس تراکنش شما در شبکه مخابره می شود و به استخری که شامل تمامی تراکنش های شبکه است که در حال انتظار می باشند اضافه می شود. + +3. به منظور تایید و "موفقیت آمیز" در نظر گرفته شدن تراکنش شما، یک اعتبارسنج باید تراکنش شما را انتخاب کرده و داخل یک بلوک قرار دهد. +4. با گذر زمان بلوکی که حامل تراکنش شما است به وضعیت "مشروع" و سپس "نهایی" برروز رسانی می شود. این ارتقاها موجب می شوند که کاملا مطمئن شوید که تراکنش شما موفقیت آمیز بوده و هرگز تغییر نخواهد کرد. زمانی که یک بلوک "نهایی" شد فقط تنها زمانی که مورد یک حمله در حد و سطح شبکه قرار بگیرد می تواند تغییر یابد که چندین میلیارد دلار هزینه به بار خواهد آورد. ## یک نسخه‌ی آزمایشی تصویری {#a-visual-demo} @@ -177,17 +180,15 @@ According to the ABI specifications, integer values (such as addresses, which ar ## پاکت تراکنش تایپ‌شده {#typed-transaction-envelope} -اتریوم در ابتدا یک قالب برای تراکنش‌ها داشت. هر تراکنش حاوی نانش (nonce)، قیمت گاز، حد گاز، آدرس گیرنده، مقدار، داده، v، r و s بود. این فیلدها به صورت RLP کدگذاری شده‌اند و چیزی شبیه به این هستند: +اتریوم در ابتدا یک قالب برای تراکنش‌ها داشت. هر تراکنش حاوی نانس (nonce)، قیمت گاز، حد گاز، آدرس گیرنده، مقدار، داده، v، r و s بود. این فیلد ها [کدگذاری شده RLP](/developers/docs/data-structures-and-encoding/rlp/) هستند، تا چیزی شبیه این به نظر برسند: `RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])` اتریوم به گونه‌ای تکامل یافته است که از چندین نوع تراکنش پشتیبانی می‌کند تا پیاده‌سازی ویژگی‌های جدیدی مانند لیست‌های دسترسی و [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) را بدون تأثیر بر قالب‌های تراکنش قدیمی امکان‌پذیر سازد. -[EIP-2718: پاکت تراکنش تایپ‌شده](https://eips.ethereum.org/EIPS/eip-2718) نوعی از تراکنش را تعریف می‌کند که پوششی برای انواع تراکنش‌های آینده است. - -EIP-2718 یک پاکت جدید تعمیم یافته برای تراکنش‌های تایپ‌شده است. در استاندارد جدید، تراکنش‌ها به صورت زیر تفسیر می‌شوند: +[EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) چیزی است که به این رفتار اجازه می دهد. تراکنش ها به صورت زیر تفسیر می شوند: -`TransactionType || TransactionPayload` +`نوع معامله || TransactionPayload` که در آن فیلدها به صورت زیر تعریف می‌شوند: @@ -198,11 +199,10 @@ EIP-2718 یک پاکت جدید تعمیم یافته برای تراکنش‌ه - [EIP-2718: پاکت تراکنش تایپ‌شده](https://eips.ethereum.org/EIPS/eip-2718) -_آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش کنید و آن را اضافه کنید!_ +_آیا منبعی اجتماعی می‌شناسید که به شما کمک کرده باشد؟ این صفحه را ویرایش کنید و به آن اضافه کنید!_ ## موضوعات مرتبط {#related-topics} - [حساب‌ها](/developers/docs/accounts/) - [ماشین مجازی اتریوم (EVM)](/developers/docs/evm/) - [گاز](/developers/docs/gas/) -- [استخراج](/developers/docs/consensus-mechanisms/pow/mining/) diff --git a/src/content/translations/fa/developers/docs/transactions/tx.png b/src/content/translations/fa/developers/docs/transactions/tx.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5f3bc2e0a77c6e2113999c4a4cd58b961fb4d3 GIT binary patch literal 9157 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 literal 0 HcmV?d00001 diff --git a/src/content/translations/fa/developers/docs/web2-vs-web3/index.md b/src/content/translations/fa/developers/docs/web2-vs-web3/index.md index e1344defabd..4162df41553 100644 --- a/src/content/translations/fa/developers/docs/web2-vs-web3/index.md +++ b/src/content/translations/fa/developers/docs/web2-vs-web3/index.md @@ -6,9 +6,11 @@ lang: fa Web2 به نسخه‌ای از اینترنت اشاره دارد که امروزه اکثر ما می‌شناسیم. اینترنت تحت سلطه‌ی شرکت‌هایی که در ازای اطلاعات شخصی شما خدمات ارائه می‌دهند. در بافت اتریوم، Web3 به برنامه‌های غیرمتمرکز اطلاق می‌شود که روی زنجیره‌ی بلوکی اجرا می‌شوند. این‌ها برنامه‌هایی هستند که به هر کسی امکان می‌دهند بدون ثبت داده‌های شخصی خود مشارکت داشته باشد. +به دنبال منبعی هستید که برای مبتدیان مناسب‌تر باشد؟ [معرفی Web3‏](/web3/) ما را ببینید. + ## مزایای Web3 {#web3-benefits} -بسیاری از توسعه‌دهندگان Web3 به دلیل تمرکززدایی ذاتی اتریوم، ساخت dappها را انتخاب کرده‌اند: +بسیاری از توسعه‌دهندگان Web3 به دلیل تمرکززدایی ذاتی اتریوم، به سراغ ساختن dappها رفته‌اند: - هر کسی که در شبکه است اجازه استفاده از این سرویس را دارد - یا به عبارت دیگر، مجوز لازم نیست. - هیچ کس نمی‌تواند شما را مسدود کند یا از دسترسی شما به این سرویس جلوگیری کند. @@ -29,7 +31,7 @@ Web2 به نسخه‌ای از اینترنت اشاره دارد که امرو Web3 در حال حاضر محدودیت‌هایی دارد: -- مقیاس‌پذیری - تراکنش‌ها در Web3 کندتر هستند چون غیرمتمرکز هستند. تغییرات در وضعیت، مانند پرداخت، باید توسط یک استخراج‌گر پردازش شده و در سراسر شبکه منتشر شود. +- مقیاس‌پذیری - تراکنش‌ها در Web3 کندتر هستند چون غیرمتمرکز هستند. تغییرات در حالت، مانند پرداخت، باید توسط یک گره پردازش شده و در سراسر شبکه منتشر شود. - UX – تعامل با برنامه‌های web3 ممکن است به مراحل، نرم افزار و آموزش اضافی نیاز داشته باشد. این موضوع می‌تواند مانعی برای پذیرش باشد. - قابلیت دسترسی – عدم یکپارچگی در مرورگرهای وب مدرن باعث می‌شود که Web3 برای اکثر کاربران کمتر در دسترس باشد. - هزینه – اکثر dappهای موفق بخش‌های بسیار کوچکی از کد خود را روی زنجیره‌ی بلوکی قرار می‌دهند، چون این کار گران است. @@ -48,12 +50,13 @@ Web3 در حال حاضر محدودیت‌هایی دارد: | مرجع مرکزی می‌تواند داده‌ها را سانسور کند و به طور بالقوه بخش‌هایی از شبکه را از تعامل با بقیه شبکه قطع کند. | سانسور بسیار سخت‌تر است، زیرا اطلاعات راه‌های زیادی را برای انتشار در سراسر شبکه دارند. | | مشارکت در شبکه توسط مرجع مرکزی کنترل می‌شود. | هر کسی می‌تواند در شبکه مشارکت کند. هیچ «نگهبانی» وجود ندارد. در حالت ایده‌آل، هزینه‌ی مشارکت بسیار پایین است. | -توجه داشته باشید که این‌ها الگوهای کلی هستند که ممکن است در هر شبکه‌ای صادق نباشند. علاوه بر این، در واقعیت، میزان متمرکز/غیرمتمرکز بودن یک شبکه در یک طیف قرار دارند. هیچ شبکه‌ای کاملاً متمرکز یا کاملاً غیرمتمرکز نیست. +توجه داشته باشید که این‌ها الگوهای کلی هستند که ممکن است در هر شبکه‌ای صادق نباشند. علاوه بر این، در واقعیت، میزان متمرکز/غیرمتمرکز بودن یک شبکه در یک طیف قرار دارد. هیچ شبکه‌ای کاملاً متمرکز یا کاملاً غیرمتمرکز نیست. ## بیشتر بخوانید {#further-reading} -- [What is Web3?](/web3/) - _ethereum.org_ +- [Web3 چیست؟](/web3/) - _ethereum.org_ - [معماری یک برنامه Web 3.0](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _پریتی کسیردی_ - [معنای تمرکززدایی](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) _6 فوریه 2017، ویتالیک بوترین_ - [چرا تمرکززدایی مهم است](https://medium.com/s/story/why-decentralization-matters-5e3f79f7638e) _18 فوریه 2018 - کریس دیکسون_ - [Web 3.0 چیست و چرا مهم است](https://medium.com/fabric-ventures/what-is-web-3-0-why-it-matters-934eb07f3d2b) _31 دسامبر 2019 - مکس مِرش و ریچارد موریهد_ +- [چرا به وب 3.0 نیاز داریم](https://medium.com/@gavofyork/why-we-need-web-3-0-5da4f2bf95ab) _12 سپتامبر 2018 - گاوین وود_ diff --git a/src/content/translations/fa/energy-consumption/energy_consumption_pre_post_merge.png b/src/content/translations/fa/energy-consumption/energy_consumption_pre_post_merge.png new file mode 100644 index 0000000000000000000000000000000000000000..81382b9b08af17f92c35cb19a3dcefd406703107 GIT binary patch literal 470238 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%0DZ1#%|AtRYy+bhhDuS0=X}jIOQ|PSO-uB7$0`+}C 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 z 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

    fI%#F(AIdEI{)sEssI6V-1vdUPA8tDHbVjEGwr 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Ν`e=lOg{KWlW4zXutB6Y7O}2g3 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 xb7nxRmSWB*EW4un`cAlAM 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 a+u_e@HK%4>fj;7W;L0WB#n%^H@Bcp|R -اتریوم از زمان پیدایش خود، از الگوریتم اثبات کار بهره برده‌است. مهاجرت از الگوریتم اثبات کار به الگوریتم اثبات مالکیت سهام همواره هدفی اساسی برای اتریوم بوده‌است. با این حال، توسعه‌ی سیستم اثبات مالکیت سهامی که با اصول اساسی اتریوم برای امنیت و غیرمتمرکز بودن هم خوانی‌داشته باشد، کار ساده‌ای نیست. این کار مستلزم تحقیق بسیار زیاد و پیشرفت‌هایی در حوزه‌ی رمزنگاری، اقتصاد ارزهای رمزنگاری‌شده و طراحی مکانیزم برای رسیدن به نقطه‌ای است که در آن حرکت از الگوریتم اثبات کار به الگوریتم اثبات سهام ممکن باشد. +نمودار بالا مصرف سالانه انرژی اتریوم را در مقایسه با چندین صنعت دیگر در مقیاس ترا وات ساعت در سال نمایش می دهد. این تخمینهای ارائه شده، از منابع قابل دسترس عموم در ماه می سال 2023 بدست آمده اند که لینک این منابع در جدول زیر آمده است: -## مصرف انرژی الگوریتم اثبات کار {#proof-of-work} +| | مصرف انرژی سالانه (ترا وات ساعت در سال) | مقایسه با اتریوم گواه سهام | منبع | +| :------------------ | :-------------------------------------: | :------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| مراکز داده جهانی | 200 | 77,000x | [منبع](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) | +| استخراج طلا | 131 | 50,000x | [منبع](https://ccaf.io/cbnsi/cbeci/comparisons) | +| بیت کوین | 131 | 50,000x | [منبع](https://ccaf.io/cbnsi/cbeci/comparisons) | +| اتریوم PoW | 78 | 30,000x | [منبع](https://digiconomist.net/ethereum-energy-consumption) | +| یوتیوب (فقط مستقیم) | 12 | 4600x | [منبع](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf) | +| بازی در آمریکا | 34 | 13,000x | [منبع](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) | +| نتفلیکس | 0.451 | 173x | [منبع](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) | +| پی پال | 0.26 | 100x | [منبع](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261) | +| AirBnB | 0.02 | 8x | [منبع]() | +| اتریوم PoS | 0.0026 | 1x | [منبع](https://carbon-ratings.com/eth-report-2022) | -الگوریتم اثبات کار راهی بسیار قدرتمند برای ایمن‌سازی شبکه و اعمال تغییرات صادقانه در زنجیره‌ی بلوکی است، اما به چند دلیل مشکل‌ساز است. از آن جا که حق اسخراج یک بلوک نیاز به حل یک پازل محاسباتی قراردادی دارد، استخراج‌گران می‌توانند شانس خود را با هزینه کردن برای سخت‌افزار قوی‌تر بالاتر ببرند. این مشوق‌ها باعث ایجاد رقابتی سنگین بین استخراج‌گران می‌شود که مستلزم افزودن تجهیزات استخراجی با مصرف انرژی روزافزون است. در حال حاضر پروتکل اثبات کار اتریوم مصرف انرژی سالانه‌ای تقریباً برابر با مصرف انرژی سالانه‌ی کشور فنلاند[^1] و اثر کربنی شبیه به کشور سوییس[^1] دارد. +دستیابی به تخمین دقیقی از مصرف انرژی کار بسیار پیچیده ای می باشد، مخصوصا زمانی که آن چیزی که دارد اندازه گیری می شود دارای مجموعه ای از زنجیره ها با جزئیات بسیار زیاد باشد که روی بازده و کارایی آن تاثیر می گذارد. به عنوان مثال نت فلیکس و یوتیوب را در نظر بگیرید. تخمین‌های مصرف انرژی بسته به این که فقط شامل انرژی استفاده شده برای حفظ سیستم‌هایشان و تحویل محتوا به کاربران هستند یا نه (_هزینه مستقیم_) یا این که آیا شامل هزینه لازم برای تولید محتوا، اداره دفاتر سازمانی، تبلیغات و غیره (_هزینه غیرمستقیم_) هستند یا نه، متغیرند. استفاده غیرمستقیم می تواند همچنین شامل انرژی لازم برای مصرف محتوا در دستگاه‌های کاربر نهایی مانند تلویزیون، ‌کامپیوتر و موبایل باشد که در نتیجه به این بستگی دارد که در کدام دستگاه‌ها مورد استفاده قرار می گیرد. -## اثبات مالکیت سهام {#proof-of-stake} +در این آدرس بحثی در این خصوص انجام گرفته است [خلاصه کربن](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix). در جدول بالا مقدار گزارش شده برای نتفلیکس شامل مصرف _مستقیم_ و _غیر مستقیم_ توسط خود شرکت ارائه شده است. یوتیوب فقط تخمینی از مصرف _مستقیم_ انرژی را ارایه می‌کند که حدود [12 تراوات ساعت در سال](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf) است. -آینده‌ای سبزتر برای اتریوم در حال ساخت است. این آینده به شکل [زنجیره‌ی **اثبات سهام (PoS)**](/roadmap/beacon-chain/) است. در چارچوب [اثبات مالکیت سهام](/developers/docs/consensus-mechanisms/pos/)، حل پازل قراردادی ضروری نیست. حذف کردن حل پازل می‌تواند باعث کاهش شدید مصرف انرژی لازم برای امنیت شبکه شود. استخراج‌گران جای خود را به اعتبارسنج‌هایی می‌دهند که همان کار را انجام می‌دهند، با این تفاوت که بهجای اینکه دارایی خود را برای کار محاسباتی خرج کنند، اتر خود را به عنوان وثیقه برای انجام کار و رفتار صادقانه سهام‌گذاری می‌کنند. اگر اعتبارسنج کُند باشد (برای انجام برخی وظایف اعتبارسنجی برخط نباشد)، اتریوم سهام‌گذاری‌شده‌ی او می‌تواند به‌آرامی از بین برود، حال آنکه رفتار ناصادقانه قابل‌اثبات منجر به «جریمه‌ی کاهش سهم» دارایی‌های سهام‌گذاری‌شده می‌شود. این موضوع باعث تشویق قابل‌توجه مشارکت فعال و صادقانه در تأمین امنیت شبکه می‌شود. +جدول و نمودار بالا فوق همچنین شامل مقایسه های بیت کوین و اتریوم اثبات کار است. نکته حائز اهمیت این است که انرژی مصرفی شبکه‌های اثبات کار یک عدد ثابت نیست و روز به روز مقدار آن تغییر می کند. مقدار مصرف شده برای اثبات کار اتریوم فقط از زمان قبل از [ادغام](/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) نشان می‌دهد که تقاضای شبکه بیتکوین به صورت تئوریک می‌توانست توسط مشعلهای گاز یا برقی که قابلیت استفاده و توزیع ندارد تامین شود. اما اتریوم راه حل دیگری را به عنوان مصرف انرژی سبز برای شبکه خود معرفی کرده است. -همانند الگوریتم اثبات کار، یک موجودیت بداندیش نیاز به حداقل 51% از اتر سهام‌گذاری‌شده در شبکه دارد تا یک [حمله‌ی 51%](/glossary/#51-attack) را انجام دهد. با این حال، برخلاف الگوریتم اثبات کار، که در آن هزینه‌ی تولید انرژی هش موردنیاز برای استخراج تنها زیان بالقوه‌ی از دست دادن یک حمله‌ی ناموفق است، در الگوریتم اثبات مالکیت سهام، زیان احتمالی یک حمله تمام مقدار اتر استفاده‌شده به‌عنوان وثیقه است. این ساختار بازدارنده امکان امنیت شبکه با اثبات مالکیت سهام را فراهم می‌کند و در عین حال نیاز به مصرف انرژی برای محاسبات قراردادی را از بین می‌برد. توضیحات مفصل درباره‌ی امنیت شبکه تحت الگوریتم اثبات مالکیت سهام را می‌توان در [اینجا](/developers/docs/consensus-mechanisms/pos/) و [اینجا](https://vitalik.ca/general/2017/12/31/pos_faq.html) یافت. +می توانید مصرف انرژی و انتشار کربن برای صنایع مختلف را در [سایت شاخص پایداری شبکه بلاک چین کمبریج](https://ccaf.io/cbnsi/ethereum)ببینید. -## ادغام {#the-merge} +## تخمین‌های قبل از تراکنش {#per-transaction-estimates} -یک زنجیره‌ی در حال کار اثبات سهام به نام [زنجیره‌ی بیکن](/roadmap/beacon-chain/) وجود دارد که از دسامبر 2020 در حال کار است و نمایانگر میزان کار و پویایی پروتکل اثبات مالکیت سهام است. ادغام به نقطه‌ای از زمان اشاره می‌کند که اتریوم اثبات کار را رها می‌کند و به‌طور کامل از اثبات سهام استفاده می‌کند. انتظار می‌رود که این ادغام حوالی سه‌ماهه‌ی سوم/چهارم سال 2022 رخ دهد. [اطلاعات بیشتر در مورد ادغام](/roadmap/merge/). +بسیاری از مقاله‌ها، مصرف انرژی «قبل از تراکنش» را برای بلاک چین‌ها تخمین می زنند. این روش ممکن است گمراه‌کننده باشد، چون انرژی لازم برای پیشنهاد و تایید کردن یک بلوک، به تعداد تراکنش‌های داخل آن ربط ندارد. انرژی به ازا هر تراکنش به این معنی است که تراکنش کمتر یعنی مصرف انرژی کمتر و برعکس، که این درست نیست. همچنین تخمین انرژی به ازا تراکنش، بسیار به این ربط دارد که یک تراکنش بلاکچین چگونه تعریف می شود، و با بازی کردن با این تعریف می توان مقدار انرژی را بزرگ تر یا کوچکتر جلوه داد. -## مصرف انرژی اثبات مالکیت سهام {#proof-of-stake-energy} +به عنوان مثال در اتریوم تعداد داده های ورودی تراکنش فقط به لایه اصلی خلاصه نمی شود، بلکه تمام تعداد داده های ورودی همه رول آپهای [لایه 2](/layer-2/) را نیز شامل می شود. لایه 2ها به صورت کلی در محاسبات لحاظ نمی شوند، اما در نظر گرفتن انرژی اضافی مصرف شده از سوی ترتیب سنج‌ها ( کوچک) و تعداد تراکنشهای مورد پردازش آنها (بزرگ)، تخمین‌های پیش از تراکنش را به صورت قابل ملاحظه‌ کاهش می دهند. این یکی از دلایلی است که مقایسه‌های مصرف انرژی بر اساس تراکنش در پلتفترم‌ها ممکن است گمراه‌کننده باشند. -زنجیره‌ی بیکن در کنار اعتمادسازی برای مکانیزم اثبات مالکیت سهام، تخمینی از میزان مصرف انرژی اتریوم پس از ادغام نیز در اختیار ما قرار می‌دهد. [تخمینی جدید](https://blog.ethereum.org/2021/05/18/country-power-no-more/) پیشنهاد می‌دهد که ادغام به اثبات مالکیت سهام می‌تواند 99.95% میزان مصرف انرژی را کاهش دهد و اثبات مالکیت سهام از نظر مصرف انرژی بیش از 2000 برابر نسبت به اثبات کار به‌صرفه‌تر است. مصرف انرژی اتریوم برای هر گره روی شبکه تقریباً برابر با مصرف انرژی یک کامپیوتر خانگی خواهد بود. +## بدهی کربن مربوط به اتریوم {#carbon-debt} -![تصویر](energy_use_per_transaction.png) +مصرف انرژی اتریوم خیلی پایین است، اما این همیشه مورد مهم نیست. اتریوم اصلی بر پایه اثبات کار بود که هزینه محیطی خیلی بیشتری نسبت به مکانیسم فعلی اثبات سهام داشت. - +اتریوم از همان آغاز برنامه داشت که مکانیزم اجماع مبتنی بر اثبات سهام را پیاده سازی کند ولی این امر با در نظر گرفتن امنیت و غیر متمرکز نگه داشتن شبکه، نیاز به سالها تحقیق و توسعه داشت. بنابراین از مکانیسم اثبات کار برای راه‌اندازی شبکه استفاده شد. اثبات کار استخراجگرها را ملزم می‌کند که از سخت‌افزار محاسباتی‌شان برای محاسبه یک مقدار استفاده کنند و این فرایند نیازمند انرژی است. -اجازه بدهید این اعداد را با سرویسی مثل Visa مقایسه کنیم. 100,000 تراکنش Visa معادل 149 کیلووات ساعت انرژی مصرف می‌کند[^2]. با فرض اینکه زنجیره‌ای‌سازی اتفاق افتاده باشد، نرخ تراکنش فعلی اتریوم (15 تراکنش بر ثانیه) بیش از 64 برابر (تعداد زنجیره‌ها) خواهد شد؛ بدون در نظر گرفتن بهینه‌سازی‌های دیگر توسط rollupها. یک تخمین واقع‌گرایانه برای اتریوم زنجیره‌ای‌ساخته پس از ادغام با rollupها [25,000 تا 100,000](https://twitter.com/VitalikButerin/status/1312905884549300224?s=20) تراکنش در ثانیه است. ما می‌توانیم از این عدد برای تخمین بیشینه و کمینه‌ی میزان مصرف انرژی برای هر 100,000 تراکنش استفاده کنیم. +![مقایسه مصرف انرژی اتریوم قبل و بعد از ادغام با استفاده از برج ایفل (330 متر ارتفاع) در سمت چپ برای سمبولیزه کردن مصرف انرژی بالا پیش از ادغام،‌ و یک شکل لگوی کوچک 4 سانتی‌متری در سمت راست به نشانه کاهش شدید مصرف انرژی پس از ادغام](energy_consumption_pre_post_merge.png) -- 25,00 تراکنش بر ثانیه. -- `100,000/25,000= 4` ثانیه برای پردازش هر 100,000 تراکنش. +انجمن CCRI تخمین می‌زند که میزان مصرف انرژی از زمان ادغام اتریوم به میزان **99.988%** کاهش پیدا کرده است. به طور مشابه، مقدار تولید کربن نیز در حدود **99.992 %** کاهش پیدا کرده است (از 11016000 تن به 870 تن دی اکسید کربن). برای مشابه سازی تقاوت در آلودگی تولید شده، شبیه به این است که از برج ایفل به یک اسباب بازی کوچک پلاستیکی تغییر داشته ایم، همانطور که در شکل بالا نشان داده شده است. به عنوان نتیجه، هزینه زیست محیطی تامین امنیت شبکه به صورت عجیبی کاهش پیدا کرده است. همزمان، اعتقاد بر این است که امنیت شبکه نیز ارتقا پیدا کرده است. -ما همچنین می‌توانیم مصرف انرژی اتریوم در هر ثانیه را با استفاده از تخمین 10,000 اعتبارسنج فعالی که در حال ایمن نگه‌داشتن شبکه هستند تخمین بزنیم (هم‌اکنون بیش از [250,000 اعتبارسنج روی زنجیره‌ی بیکن وجود دارند](https://beaconscan.com/)، اما بسیاری از اعتبارسنج‌ها می‌توانند روی یک گره کارشان را انجام دهند. در حال حاضر، تخمین زده می‌شود که بین 3,000 تا 4,000 گره‌ی مستقل وجود دارد، پس تخمین 10,000 گره برای پس از ادغام معقول است): +## یک لایه سبز اپلیکیشن {#green-applications} -`1.44 کیلووات ساعت مصرف روزانه * 10,000 گره‌ی شبکه = 14,400 کیلووات ساعت` در هر روز. هر روز 86,400 ثانیه است، در نتیجه `‎14,400 / 86,400 =‏ 0.1667 کیلووات ساعت` در هر ثانیه. +در حالی که مصرف انرژی اتریوم بسیار اندک است، یک مجموعه قابل توجه، در حال رشد و بسیار فعال[**احیاکننده مالی (ReFi)**](/refi/) در بستر اتریوم وجود دارد. اپلیکیشن‌های ReFi از اجزای DeFi برای ساخت اپلیکیشن‌های مالی استفاده می‌کنند که اثرات خارجی مثبتی برای محیط زیست دارند. RiFi بخشی از یک شبکه گسترده تر به نام ["solarpunk"](https://en.wikipedia.org/wiki/Solarpunk) است که همراه با اتریوم حرکت می کند و هدف آن رشد تکنولوژیکی و نظارت محیط زیستی است. ویژگی هایی مثل غیر متمرکز بودن، عدم نیاز به اجازه و قابلیت ترکیب اتریوم، باعث شده است لایه پایه ایده‌آل برای گروه های RiFi و solarpunk باشد. -اگر آن را در مدت زمانی که برای پردازش 100,000 تراکنش طول می‌کشد ضرب کنیم: `0.1667‎ * 4‏ = 0.667 کیلووات ساعت`. - -این مقدار تقریبا برابر 0.4% از مصرف انرژی است که Visa برای همین تعداد تراکنش استفاده می‌کند، یا می‌توان گفت که مصرف انرژی در مقایسه با شبکه‌ی اثبات کار فعلی اتریوم، تقریباً 225 بار کمتر است. - -با همین محاسبات برای بیشترین میزان تراکنش بر ثانیه به عدد 0.1667 کیلووات ساعت بر ثانیه می‌رسیم که تقریبا 0.1% از مصرف انرژی Visa، یا تقریبا 894 بار کاهش است. - -_یادداشت: مقایسه بر اساس تعداد تراکنش‌ها کار تماماً دقیقی نیست، چرا که مصرف انرژی اتریوم برحسب زمان است. مصرف انرژی اتریوم در 1 دقیقه ثابت است؛ چه 1 تراکنش انجام دهد و چه 1,000 تراکنش._ - -_ما باید در نظر بگیریم که اتریوم تنها به تراکنش‌های مالی محدود نمی‌شود، بلکه یک بلتفرم کامل برای ساخت قراردادهای هوشمند و برنامه‌های غیر متمرکز است._ - -## یک اتریوم سبزتر {#green-ethereum} - -گرچه مصرف انرژی اتریوم از گذشته قابل‌توجه بوده است، توسعه‌دهندگان برای گذار از اعتبارسنجی با مصرف انرژی بالا به اعتبارسنجی با مصرف انرژی بهینه زمان و توان فکری قابل‌توجهی را صرف کرده‌اند. همان‌طور که [Bankless](http://podcast.banklesshq.com/) اشاره می‌کند، بهترین راه برای کاهش مصرف انرژی اتریوم با اثبات کار این است که خیلی راحت «آن را خاموش کنیم»، و این دقیقاً همان راهی است که اتریوم در پیش گرفته است. +پلتفرمهای بومی Web3 برای تامین هزینه کالاهای عمومی مثل [Gitcoin](https://gitcoin.co) میزگردهای مربوط به اقلیم را برای تحریک اجتماع محیط زیستی در بستر لایه اپلیکیشن اتریوم را اجرا می‌کنند. به خاطر این ابتکارها (و موارد دیگر مثل [DeSci](/desci/)) اتریوم از جنبه محیط زیستی و اجتماعی در حال تبدیل شدن به یک تکنولوژی کاملا مثبت است. - اگر فکر می‌کنید این آمار نادرست است یا می‌توان آن را دقیق‌تر گفت، لطفاً آن را در قالب یک موضوع یا PR مطرح کنید. این‌ها تخمین‌هایی است که توسط تیم ethereum.org و با استفاده از اطلاعات در دسترس عموم و نقشه‌ی راه فعلی اتریوم انجام شده است. این اظهارنظرها بیانگر وعده‌ای رسمی از طرف بنیاد اتریوم نیستند. + اگر فکر می‌کنید این صفحه می‌تواند دقیق‌تر شود، لطفاً آن را در قالب یک مشکل یا درخواست مطرح کنید. آمار این صفحه بر اساس داده های عمومی می باشد. آنها نشان‌دهنده اعلام رسمی یا قول تیم ethereum.org یا بنیاد اتریوم نیستند. -## اطلاعات بیشتر {#further-reading} +## بیشتر بخوانید {#further-reading} -- [انرژی به اندازه‌ی یک کشور، دیگر نه](https://blog.ethereum.org/2021/05/18/country-power-no-more/) – _کارل بیخویزن، 18 مه 2021_ -- [مصرف انرژی اتریوم](https://mirror.xyz/jmcook.eth/ODpCLtO4Kq7SCVFbU4He8o8kXs418ZZDTj0lpYlZkR8) -- [انتشار کربن اتریوم: یک تخمین پایین به بالا](https://kylemcdonald.github.io/ethereum-emissions/) – کایل مک‌دونالد +- [شاخص پایداری شبکه بلاک‌چین کمبریج](https://ccaf.io/cbnsi/ethereum) +- [گزارش کاخ سفید درباره اثبات کار بلاک‌چین‌ها](https://www.whitehouse.gov/wp-content/uploads/2022/09/09-2022-Crypto-Assets-and-Climate-Report.pdf) +- [انتشارات اتریوم: یک برآورد پایین به بالا](https://kylemcdonald.github.io/ethereum-emissions/) - _ کیلی مک دونالد_ - [شاخص مصرف انرژی اتریوم](https://digiconomist.net/ethereum-energy-consumption/) – _Digiconomist_ - [ETHMerge.com](https://ethmerge.com/) — *[@InsideTheSim](https://twitter.com/InsideTheSim)* +- [ادغام - مفاهیم مصرف برق و میزان انتشار کربن در شبکه اتریوم](https://carbon-ratings.com/eth-report-2022) - _CCRI_ +- [مصرف انرژی اتریوم](https://mirror.xyz/jmcook.eth/ODpCLtO4Kq7SCVFbU4He8o8kXs418ZZDTj0lpYlZkR8) ## موضوعات مرتبط {#related-topics} - [چشم‌انداز اتریوم](/roadmap/vision/) -- [زنجیره‌ی بیکن](/roadmap/beacon-chain) +- [زنجیره بیکن](/roadmap/beacon-chain) - [ادغام](/roadmap/merge/) -- [زنجیره‌ای‌سازی](/roadmap/beacon-chain/) - -### پانویس‌ها و منابع {#footnotes-and-sources} - -#### 1. مصرف انرژی اثبات کار اتریوم {#fn-1} - -[مصرف انرژی کشورها در مقایسه با اتریوم (تراوات ساعت سالانه)](https://digiconomist.net/ethereum-energy-consumption) - -#### 2. مصرف انرژی Visa {#fn-2} - -[مصرف انرژی میانگین شبکه‌ی بیت‌کوین برای هر تراکنش در مقایسه با شبکه‌ی VISA در سال 2020، Statista](https://www.statista.com/statistics/881541/bitcoin-energy-consumption-transaction-comparison-visa/) - -[گزارش مالی Visa سه‌ماهه‌ی چهارم سال 2020](https://s1.q4cdn.com/050606653/files/doc_financials/2020/q4/Visa-Inc.-Q4-2020-Operational-Performance-Data.pdf) diff --git a/src/content/translations/fa/governance/index.md b/src/content/translations/fa/governance/index.md index 36f73fc69be..37fc063688a 100644 --- a/src/content/translations/fa/governance/index.md +++ b/src/content/translations/fa/governance/index.md @@ -2,6 +2,7 @@ title: حاکمیت اتریوم description: مقدمه‌ای بر چگونگی تصمیم‌گیری برای اتریوم. lang: fa +postMergeBannerTranslation: صفحه-ارتقای-بعد-ادغام-بنر-حکومت-وود --- # مقدمه‌ای بر حاکمیت اتریوم {#introduction} @@ -20,11 +21,11 @@ _اگر هیچ‌کس مالک اتریوم نیست، تصمیمات دربار ## حاکمیت اتریوم {#ethereum-governance} -حاکمیت اتریوم فرایندی است که تغییرات پروتکل از طریق آن انجام می‌شود. لازم به ذکر است که این فرایند، ارتباطی به افراد و برنامه‌هایی که از پروتکل استفاده می‌کنند ندارد - اتریوم پروتکلی بدون نیاز به مجوز است. هر کسی در هر جای جهان می‌تواند در فعالیت‌های درون‌زنجیره‌ای (on-chain) مشارکت کند. هیچ قانونی برای افراد گذاشته نشده که چه‌کسی می‌تواند و چه کسی نمی‌تواند یک برنامه بسازد یا تراکنشی بفرستد. با این حال، فرایندی برای پیشنهاد تغییرات روی پروتکل هسته‌ای که این برنامه‌ها روی آن اجرا می‌شوند، وجود دارد. از آن جایی که مردم به پایداری اتریوم وابسته هستند، آستانه‌ی هماهنگی بسیار زیادی برای تغییرات هسته‌ای، از جمله فرایندهای فنی و اجتماعی، وجود دارد تا اطمینان حاصل شود که تغییرات اتریوم ایمن هستند و به‌طور گسترده توسط جامعه حمایت می‌شوند. +حاکمیت اتریوم فرایندی است که تغییرات پروتکل از طریق آن انجام می‌شود. لازم به ذکر است که این فرایند، ارتباطی به افراد و برنامه‌هایی که از پروتکل استفاده می‌کنند ندارد - اتریوم پروتکلی بدون نیاز به مجوز است. هر کسی در هر جای جهان می‌تواند در فعالیت‌های درون‌زنجیره‌ای (on-chain) مشارکت کند. هیچ قانونی برای افراد گذاشته نشده که چه‌کسی می‌تواند و چه کسی نمی‌تواند یک برنامه بسازد یا تراکنشی بفرستد. با این حال، فرآیندی برای پیشنهاد تغییرات در پروتکل اصلی وجود دارد، که برنامه های غیرمتمرکز روی آن کار می کنند. از آن جایی که مردم به پایداری اتریوم وابسته هستند، آستانه‌ی هماهنگی بسیار زیادی برای تغییرات هسته‌ای، از جمله فرایندهای فنی و اجتماعی، وجود دارد تا اطمینان حاصل شود که تغییرات اتریوم ایمن هستند و به‌طور گسترده توسط جامعه حمایت می‌شوند. ### حاکمیت درون‌زنجیره‌ای و برون‌زنجیره‌ای {#on-chain-vs-off-chain} -تکنولوژی زنجیره‌ی بلوکی امکان توانایی‌های حاکمیتی جدید، که به نام حاکمیت درون‌زنجیره‌ای شناخته می‌شوند، را فراهم می‌سازد. حاکمیت درون‌زنجیره‌ای یعنی تصمیم‌گیری در خصوص تغییرات پیشنهادی پروتکل با رأی سهام‌داران، که معمولاً دارندگان توکن حاکمیت هستند، انجام می‌شود، و رأی‌گیری روی زنجیره بلوکی اتفاق می‌افتد. در بعضی شکل‌های حاکمیت درون‌زنجیره‌ای، تغییرات پیشنهادی پروتکل به شکل کد نوشته شده و اگر سهام‌داران تغییرات را بپذیرند به‌طور خودکار به اجرا گذاشته می‌شود. +تکنولوژی زنجیره‌ی بلوکی امکان توانایی‌های حاکمیتی جدید، که به نام حاکمیت درون‌زنجیره‌ای شناخته می‌شوند، را فراهم می‌سازد. حاکمیت درون‌زنجیره‌ای یعنی تصمیم‌گیری در خصوص تغییرات پیشنهادی پروتکل با رأی سهام‌داران، که معمولاً دارندگان توکن حاکمیت هستند، انجام می‌شود، و رأی‌گیری روی زنجیره بلوکی اتفاق می‌افتد. در بعضی شکل‌های حاکمیت درون‌زنجیره‌ای، تغییرات پیشنهادی پروتکل قبلا به شکل کد نوشته شده و اگر سهام‌داران تغییرات را از طریق تایید تراکنش بپذیرند به‌طور خودکار به اجرا گذاشته می‌شود. رویکرد مقابل، یعنی حاکمیت برون‌زنجیره‌ای، یعنی هر تصمیمی برای تغییر پروتکل از طریق یک فرایند غیررسمی مباحثه‌های اجتماعی گرفته می‌شود، که اگر پذیرفته شود، در کد اعمال خواهد شد. @@ -33,7 +34,7 @@ _اگر هیچ‌کس مالک اتریوم نیست، تصمیمات دربار _گرچه در لایه‌ی پروتکل حاکمیت اتریوم برون‌زنجیره‌ای است، بسیاری از پروتکل‌هایی که روی اتریوم ساخته شده‌اند، مثل DAOها، از حاکمیت درون‌زنجیره‌ای استفاده می‌کنند._ - اطلاعات بیشتر درباره DAO ها + اطلاعات بیشتر درباره DAOها @@ -47,7 +48,7 @@ _گرچه در لایه‌ی پروتکل حاکمیت اتریوم برون‌ - **توسعه‌دهندگان برنامه‌ها/ابزارها**: این افراد برنامه‌هایی را می‌نویسند که روی زنجیره بلوکی اتریوم اجرا می‌شوند (مثل DeFi‏، NFTها و غیره) یا ابزارهایی می‌سازند که با اتریوم تعامل دارند (مثل کیف پول‌ها، بسته‌های آزمایش (test suites) و غیره). [درباره برنامه‌های غیرمتمرکز بیشتر بدانید](/dapps/). - **اپراتورهای گره‌**: این افراد گره‌هایی را اجرا می‌کنند که بلوک‌ها و تراکنش‌ها را پخش می‌کنند و هر تراکنش یا بلوک نامعتبری که ظاهر می‌شود را رد می‌کنند. [درباره گره‌ها بیشتر بدانید](/developers/docs/nodes-and-clients/). - **نویسندگان EIP**: این افراد پیشنهادهایی را برای تغییر پروتکل اتریوم در قالب پیشنهادهای بهبود اتریوم (EIPها) ارائه می‌دهند. [درباره EIP بیشتر بدانید](/eips/). -- **استخراج‌گران/اعتبارسنجان**: این افراد گره‌هایی را اجرا می‌کنند که می‌توانند بلوک‌های جدید را به زنجیره‌ی بلوکی اتریوم اضافه کنند. +- **اعتبارسنج ها**: این افراد گره هایی را اجرا می کنند که می توانند بلوک های جدید را به زنجیره بلوکی اتریوم اضافه کنند. - **توسعه‌دهندگان پروتکل** (همان «توسعه‌دهندگان هسته‌ای»): این افراد پیاده‌سازی‌های مختلف اتریوم را نگهداری می‌کنند (مثل go-ethereum‏، Nethermind‏، Besu‏ و Erigon در لایه‌ی اجرا یا Prysm‏، Lighthouse‏، Nimbus‏، Teku‏ و Lodestar در لایه‌ی وفاق). [درباره کلاینت‌های اتریوم بیشتر بدانید](/developers/docs/nodes-and-clients/). _یادداشت: هر فردی می‌تواند عضوی از چند گروه مختلف باشد (مثلا یک توسعه‌دهنده‌ی پروتکل می‌تواند EIP را نگه‌داری کند، و یک اعتبارسنج زنجیره‌ی بیکن را اجرا کند و از یک برنامه‌ی DeFi استفاده کند). برای شفافیت مفهومی، بهتر است که آن‌ها را از هم جدا کنیم._ @@ -56,7 +57,7 @@ _یادداشت: هر فردی می‌تواند عضوی از چند گروه ## EIP چیست؟ {#what-is-an-eip} -یکی فرایند مهم که در حاکمیت اتریوم استفاده می‌شود، ارائه‌ی **پیشنهادهای بهبود اتریوم (EIPها)** است. EIPها استانداردهایی هستند که ویژگی‌ها یا فرایندهای جدید را برای اتریوم مشخص می‌کنند. هرکسی در جامعه‌ی اتریوم می‌تواند EIP بسازد. برای مثال، هیچ‌یک از نویسنده‌های EIP-721، که یک EIP برای استانداردسازی NFTها است، به‌طور مستقیم روی توسعه‌ی پروتکل اتریوم کار نکرده‌اند. +یکی فرایند مهم که در حاکمیت اتریوم استفاده می‌شود، ارائه‌ی **پیشنهادهای بهبود اتریوم (EIPها)** است. EIPها استانداردهایی هستند که ویژگی‌ها یا فرایندهای جدید را برای اتریوم مشخص می‌کنند. هرکسی در جامعه‌ی اتریوم می‌تواند EIP بسازد. اگر علاقه مند به نوشتن EIP یا شرکت کردن در بررسی از سوی همتا و/یا حاکمیت هستید، نگاه کنید به: اطلاعات بیشتر درباره EIPها @@ -90,7 +91,7 @@ _یادداشت: هر فردی می‌تواند عضوی از چند گروه ### درک کارهای قبلی {#prior-work} -مدافعان EIP باید پیش از اقدام به ساخت یک EIP، که ممکن است روی شبکه‌ی اصلی اتریوم اجرا شود، با کارها و پیشنهادهای قبلی کاملاً آشنا باشند. در این صورت، EIP احتمالاً چیز جدیدی برای ارائه خواهد داشت که قبلاً رد نشده است. سه مکان اصلی برای تحقیق درباره‌ی این موضوع [مخزن EIP](https://github.com/ethereum/eips)، [جادوگران اتریوم](https://ethereum-magicians.org/) و [ethresear.ch](https://ethresear.ch/) هستند. +مدافعان EIP باید پیش از اقدام به ساخت یک EIP، که ممکن است روی شبکه‌ی اصلی اتریوم اجرا شود، با کارها و پیشنهادهای قبلی کاملاً آشنا باشند. در این صورت، EIP احتمالاً چیز جدیدی برای ارائه خواهد داشت که قبلاً رد نشده است. سه مکان اصلی برای تحقیق درباره‌ این موضوع عبارتند از [مخزن EIP](https://github.com/ethereum/EIPs)، [جادوگران اتریوم](https://ethereum-magicians.org/) و [ethresear.ch](https://ethresear.ch/). ### کارگروه‌ها {#working-groups} @@ -98,9 +99,9 @@ _یادداشت: هر فردی می‌تواند عضوی از چند گروه ### وفاق جامعه {#community-consensus} -در حالی که برخی EIPها بهبود فنی مستقیم با کمترین اختلاف هستند، برخی پیچیده‌تر بوده و ذاتاً بده‌بستان هستند که می‌توانند سهام‌داران مختلف را به اشکال مختلف تحت تاثیر قرار دهند. این بدان معناست که برخی EIPها در جامعه از برخی دیگر مناقشه‌برانگیزتر می‌شوند. +در حالی که برخی از EIP ها پیشرفت های فنی ساده با حداقل تفاوت های جزئی هستند، برخی پیچیده‌تر هستند و دارای معاوضه هایی هستند که به طرق مختلف بر سهامداران مختلف تأثیر می گذارد. این بدان معناست که برخی EIPها در جامعه از برخی دیگر مناقشه‌برانگیزتر هستند. -هیچ دستورالعمل مشخصی برای برخورد با پیشنهادهای مناقشه‌برانگیز وجود ندارد. از آن جا که توسعه‌دهندگانِ پروتکل هیچ راهی برای اجبار مردم به اعمال ارتقاهای شبکه ندارند، آن‌ها معمولاً از EIPهایی که مناقشه برانگیزبودنشان بر نفعشان برای اکثریت جامعه می‌چربد، دوری می‌کنند. +هیچ دستورالعمل مشخصی برای برخورد با پیشنهادهای مناقشه‌برانگیز وجود ندارد. این نتیجه طراحی غیرمتمرکز اتریوم است که به موجب آن هیچ گروه سهام داری نمی تواند دیگری را از طریق نیروی بی رحمانه ناگزیر کند: توسعه‌دهندگان پروتکل می توانند انتخاب کنند که تغییرات کد را اجرا نکنند؛ اپراتورهای گره می توانند انتخاب کنند که آخرین اتریوم کاربر را اجرا نکنند؛ تیم ها و کاربران اپلیکیشن می توانند انتخاب کنند که بر روی زنجیره تراکنش انجام ندهند. از آن جا که توسعه‌دهندگانِ پروتکل هیچ راهی برای اجبار مردم به اعمال ارتقاهای شبکه ندارند، آن‌ها معمولاً از EIPهایی که مناقشه برانگیزبودنشان بر نفعشان برای اکثریت جامعه می‌چربد، دوری می‌کنند. از مدافعان EIP انتظار می‌رود که از تمام سهام‌داران مرتبط بازخورد بگیرند. اگر مدافع یک EIP مناقشه‌برانگیز هستید، باید سعی کنید مخالفت‌هایی که با EIP می‌شود را برطرف کنید تا درباره‌ی EIP خود وفاق ایجاد کنید. با توجه به بزرگی و تنوع جامعه‌ی اتریوم، یک متر مشخص (مثل رأی‌گیری با کوین) وجود ندارد که بتوان برای رسیدن به وفاق اجتماعی از آن استفاده کرد، و از مدافعان EIP انتظار می‌رود که با شرایط پیشنهادهای خود سازگار شوند. @@ -146,16 +147,16 @@ _یادداشت: هر فردی می‌تواند عضوی از چند گروه -## توسعه‌ی زنجیره‌ی بیکن {#beacon-chain} +## حاکمیت زنجیره بیکن {#beacon-chain} فرایند حاکمیت اتریوم اغلب سرعت و کارایی را با آزاد بودن و فراگیر بودن طاق می‌زند. برای توسعه‌ی زنجیره‌ی بیکن، این زنجیره به‌طور جداگانه از شبکه‌ی اثبات کار اتریوم اجرا شد و رویه‌های حاکمیت شخصی خودش را اتخاذ کرد. -با وجود اینکه مشخصات و پیاده‌سازی توسعه همواره کاملا متن‌باز بوده‌است، فرایند رسمی‌ای که برای پیشنهاد به‌روزرسانی در بالا توضیح داده شد در آن استفاده نشده‌اند. این کار اجازه داد تغییرات سریع‌تر توسط محققین و پیاده‌کنندگان مشخص شده و پذیرفته شوند. +با وجود اینکه مشخصات و اجراهای توسعه همواره متن‌ کاملا باز بوده‌ است، فرایندهای رسمی‌ که برای پیشنهاد به‌روزرسانی در بالا توضیح داده شد در آن استفاده نشده‌اند. این کار اجازه داد تغییرات سریع‌تر توسط محققین و پیاده‌کنندگان مشخص شده و پذیرفته شوند. -وقتی که زنجیره‌ی بیکن با لایه‌ی اجرایی اتریوم ادغام شود، فرایند حاکمیت برای پیشنهاد تغییرات هماهنگ خواهد شد. فرایند پیاده‌سازی ادغام [اکنون در حال انجام](https://eips.ethereum.org/EIPS/eip-3675) است. +با ادغام زنجیره بیکن با لایه اجرایی اتریوم در 15 سپتامبر 2022 رویداد ادغام (The Merge) به عنوان بخشی از [ارتقا شبکه پاریس](/history/#paris) کامل شد. پیشنهاد [EIP-3675](https://eips.ethereum.org/EIPS/eip-3675) از حالت 'Last Call' به 'Final'، با کامل شدن گذر به مکانیزم اثبات سهام تغییر کرد. - اطلاعات بیشتر درباره ادغام + اطلاعات بیشتر درباره‌ی ادغام @@ -177,6 +178,6 @@ _یادداشت: هر فردی می‌تواند عضوی از چند گروه - [یادداشت‌هایی درباره ی حاکمیت زنجیره‌ی بلوکی](https://vitalik.ca/general/2017/12/17/voting.html) - _ویتالیک بوترین_ - [حاکمیت اتریوم چگونه کار می‌کند؟](https://cryptotesters.com/blog/ethereum-governance) - _Cryptotesters_ - [چگونگی کارکرد حاکمیت اتریوم](https://medium.com/coinmonks/how-ethereum-governance-works-71856426b63a) - _میکا زولتو_ -- [توسعه‌دهنده‌ی هسته‌ای اتریوم چیست؟](https://hudsonjameson.com/2020-06-22-what-is-an-ethereum-core-developer/) - _هادسون جیمز_ +- [توسعه‌دهنده‌ اصلی اتریوم چیست؟](https://hudsonjameson.com/2020-06-22-what-is-an-ethereum-core-developer/) - _هادسون جیمز_ - [حاکمیت، قسمت دوم: پلوتوکراسی همچنان بد است](https://vitalik.ca/general/2018/03/28/plutocracy.html) - _ویتالیک بوترین_ - [حرکت ورای حاکمیت رأی‌گیری با کوین](https://vitalik.ca/general/2021/08/16/voting3.html) - _ویتالیک بوترین_ diff --git a/src/content/translations/fa/guides/how-to-create-an-ethereum-account/index.md b/src/content/translations/fa/guides/how-to-create-an-ethereum-account/index.md new file mode 100644 index 00000000000..083b644f2d4 --- /dev/null +++ b/src/content/translations/fa/guides/how-to-create-an-ethereum-account/index.md @@ -0,0 +1,72 @@ +--- +title: چگونگی «ساخت» یک حساب اتریوم +description: راهنمای گام به گام درباره ساخت حساب اتریوم با استفاده از کیف پول. +lang: fa +--- + +# چگونگی «ساخت» یک حساب اتریوم + +همه هر لحظه می‌توانند به طور رایگان یک حساب اتریوم بسازند. اگرچه مسیرهای متعددی وجود دارد اما ساده‌ترین و معمول‌ترین روش، استفاده از اپلیکیشنی است که تحت عنوان کیف پول شناخته می‌شود. کیف پول‌ها کلیدها را تولید کرده و از آنها محافظت می‌کنند تا بتوانید از اتریوم استفاده کنید. می‌توانید از کیف پول خود برای ارسال تراکنش‌ها، بررسی موجودی توکن‌های خود و اتصال به برنامه‌های مبتنی بر اتریوم، مثل مراکز تبادل توکن، بازی‌ها، بازارهای NFT و غیره استفاده کنید. برخی از اپلیکیشن‌های "web2" هم اکنون به شما اجازه وارد شدن با اتریوم را هم می دهند. + +بر خلاف روند افتتاح حساب در یک شرکت، ساخت حساب در اتریوم رایگان و محرمانه است و نیازی به دریافت مجوز ندارد. حساب‌ها به واسطه کلیدهایی که نرم‌افزار کیف پول شما برایتان ایجاد می‌کند کنترل می‌شوند. کلیدها نه توسط یک نفر سوم ایجاد می‌شود و نه در هیچ سازمان متمرکزی ذخیره می‌شوند. + +## قدم اول: یک کیف پول انتخاب کنید + +کیف پول اپلیکیشنی است که به شما کمک می کند حساب اتریوم خود را مدیریت کنید. از کلیدهای شما برای ارسال و دریافت تراکنش ها و ورود به اپلیکیشن‌ها استفاده می کند. ده‌ها کیف پول مختلف وجود دارند که می‌توانید آن‌ها را انتخاب کنید، از جمله افزونه‌های موبایل، دسکتاپ یا حتی مرورگر. + + + یافتن یک کیف پول + + +اگر تازه‌کار هستید، می‌توانید فیلتر «New to crypto» را در صفحه «یافتن کیف پول» انتخاب کنید تا کیف‌هایی را که باید شامل همه ویژگی‌های لازم برای مبتدیان باشند، شناسایی کنید. + +![انتخاب فیلتر در صفحه 'انتخاب یک کیف پول'](./wallet-box.png) + +همچنین سایر فیلترهای پروفایل برای رفع نیازهای شما وجود دارد. اینها نمونه هایی از کیف پول‌های رایج هستند - قبل از اعتماد به هر نرم‌افزار باید تحقیق خود را انجام دهید. + +## قدم دوم: بارگذاری و نصب اپلیکیشن کیف پول + +هنگامی که تصمیم گرفتید یک کیف پول خاص را انتخاب کنید، به وب سایت رسمی آن یا app store مراجعه کنید، آن را دانلود و نصب کنید. همه آن‌ها باید رایگان باشند. + +## مرحله 3: اپلیکیشن را باز کنید و حساب اتریوم خود را ایجاد یا وارد کنید + +اولین باری که کیف پول جدید خود را باز می‌کنید ممکن است از شما خواسته شود بین ایجاد یک حساب جدید یا وارد کردن یک حساب موجود یکی را انتخاب کنید. روی ساخت حساب جدید کلیک کنید. + +## مرحله 4: عبارت بازیابی خود را ذخیره کنید + +برخی از اپلیکیشن‌ها از شما می‌خواهند یک «عبارت بذر» مخفی را ذخیره کنید (همچنین ممکن است این عبارت را به عنوان «عبارت بازیابی» یا «mnemonic» ببینید). ایمن نگه داشتن این "عبارت بذر" بسیار مهم است! عبارت بذر به منظور تولید یک کلید محرمانه برای یک حساب استفاده می‌شود که می تواند برای ورود و ارسال تراکنش‌ها استفاده شود. هر فردی که عبارت بذر را بداند می تواند کنترل تمام حساب های ایجاد شده توسط آن را در دست بگیرد. هرگز عبارت بذر خود را با کسی به‌ اشتراک نگذارید. عبارت بذر باید شامل 12 الی 24 کلمه تصادفی باشد (ترتیب کلمه ها اهمیت دارد). + +هنگامی که عبارت بذر خود را ذخیره کردید باید بتوانید به پنل کاربری کیف پول و موجودی خود دسترسی داشته باشید. نگاهی به راهنمای ما بیندازید:[چگونه از یک کیف پول استفاده کنید.](/guides/how-to-use-a-wallet) + +
    + + +
    می‌خواهید بیشتر بدانید؟
    + + راهنماهای دیگر ما را ببینید + +
    + +## پرسش‌های متداول + +### آیا کیف پول و حساب اتریوم من یکی هستند؟ + +خیر. کیف پول یک ابزار مدیریت است که به شما کمک می کند حساب‌های خود را مدیریت کنید. یک کیف پول ممکن است به چندین حساب دسترسی داشته باشد، و یک حساب می تواند توسط چندین کیف پول مورد دسترسی قرار گیرد. عبارت بذر برای ساختن حساب ها استفاده می شود که سپس بوسیله کیف پول کنترل می شوند. + +شما می توانید حساب ها را به عنوان برگ‌های درخت در نظر بگیرید که همه از یک عبارت بذر یکسان «رشد» می‌کنند. هر بذر منحصر یه فرد، درخت کاملا متفاوتی از حساب ها را می‌سازد. + +### آیا میتوانم بیتکوین به یک آدرس اتریوم و یا اتر به یک آدرس بیتکوین ارسال کنیم؟ + +خیر، نمی‌توانید. بیتکوین و اتر در دو شبکه متفاوت (یعنی بلاک‌چین‌های متفاوت) وجود دارند، هر کدام از آنها مدل‌های حسابرسی و فرمت آدرس منحصر به خود را دارند. تلاش های مختلفی برای پل زدن بین این دو شبکه وجود داشته است که فعال‌ترین آنها در حال حاضر [رپد بیتکوین یا WBTC](https://www.bitcoin.com/get-started/what-is-wbtc/) است. این به معنی تایید WBTC نیست، چون توکن WBTC از طریق یک راه‌کار سرپرستی است (به این معنی که یک گروه از افراد کنترل توابع حیاتی خاص را دارند) و اینجا تنها برای اطلاع‌رسانی از آن یاد شده است. + +### اگر من صاحب یک آدرس اتریوم باشم، صاحب همان آدرس روی سایر بلاک‌چین‌ها نیز هستم؟ + +می‌توانید در تمام بلاک‌چین‌هایی که از زیرساخت نرم‌افزاری یکسان با اتریوم (به عنوان زنجیره سازگار با EVM شناخته می شوند) استفاده می‌کنند از آدرس اتریومی خود استفاده کنید. این [لیست](https://chainlist.org/) بلاک‌چین‌هایی را که در آن می‌توانید از آدرس یکسان استفاده کنید نمایش میدهد. بعضی بلاک‌چین‌ها، مثل بیتکوین، قوانین شبکه کاملا متفاوتی اجرا می‌کنند و برای استفاده از آن شبکه به آدرس متفاوت با فرمت متفاوت احتیاج است. اگر از یک کیف پول مبتنی بر قرارداد هوشند استفاده می‌کنید، باید وب‌سایت ارائه دهنده خدمات را برای کسب اطلاعات درباره بلاک‌چین‌های مورد پشتیبانی بررسی کنید. + +### آیا نگهداری دارایی دیجیتال در کیف پول شخصی، ایمن‌تر از نگهداری آن در صرافی است؟ + +استفاده از کیف پول شخصی به معنی قبول مسئولیت امنیت دارایی‌هایتان است. متأسفانه مثال‌های زیادی از اتفاقات ناگوار در صرافی‌ها وجود دارند که باعث از دست رفتن سرمایه مشتریان آنها شده‌اند. داشتن یک کیف پول (به همراه عبارت بذر) خطرات مربوط به اعتماد به یک نهاد برای سرپرستی دارایی‌هایتان را از بین می‌برد. با این حال، باید امنیت کلیدهای خود را تامین کنید و از قرار گرفتن در معرض حمله فیشینگ، تایید اتفاقی تراکنش‌ها یا افشای کلیدها، تعامل با وبسایت‌های تقلبی و دیگر ریسک هایی که دارایی‌تان را به خطر می اندازند دوری کنید. ریسک ها و فواید متفاوتند. + +### اگر گوشی تلفن همراه/کیف پول سخت‌افزاری خودم را گم کنم، لازم است از همان اپلیکیشن کیف پول دیجیتال قبلی برای بازیابی حساب از دست رفته استفاده کنم؟ + +خیر، می‌توانید از کیف پول دیگری هم استفاده کنید. مادامی که عبارت بذر خود را داشته باشید می‌توانید با وارد کردن آن در اکثر کیف پول های دیجیتال حساب خود را بازیابی کنید. اگر زمانی خواستید این کار را انجام دهید مراقب باشید: بهتر است مطمئن شوید هنگام بازیابی کیف پول به اینترنت متصل نباشید تا از نشت اتفاقی عبارت بذر در اینترنت جلوگیری کنید. معمولا بازیابی دارایی‌های از دست رفته بدون داشتن عبارت بذر غیرممکن است. diff --git a/src/content/translations/fa/guides/how-to-id-scam-tokens/index.md b/src/content/translations/fa/guides/how-to-id-scam-tokens/index.md new file mode 100644 index 00000000000..1eeec722426 --- /dev/null +++ b/src/content/translations/fa/guides/how-to-id-scam-tokens/index.md @@ -0,0 +1,97 @@ +--- +title: چگونگی تشخیص توکن های کلاهبرداری +description: فهمیدن توکن های کلاهبرداری، آنها چگونه خود را قانونی جلوه می دهند و چگونه باید از آن ها اجتناب کرد. +lang: fa +--- + +# چگونگی تشخیص توکن های کلاهبرداری {#identify-scam-tokens} + +One of the most common uses for Ethereum is for a group to create a tradable token, in a sense their own currency. این توکن ها معمولا یک استاندارد [ERC-20](/developers/docs/standards/tokens/erc-20/) را دنبال می‌کنند. با این حال، هر جا که موارد استفاده قانونی وجود داشته باشد که ارزشی به همراه دارند، مجرمانی نیز وجود دارند که سعی بر دزدیدن آن ارزش برای خود دارند. + +دو روش وجود دارد که در آنها ممکن است شما را فریب دهند: + +- **فروش یک توکن کلاهبرداری به شما**، که ممکن است شبیه یک توکن قانونی باشد که قصد خرید آن را دارید، اما توسط کلاهبردارها صادر شده اند و ارزشی ندارند. +- **اغفال شما برای امضا کردن نراکتش های بد**، معمولا با هدایت شما به رابط کاربری خودشان. آنها ممکن است شما را وادار کنند تا به قراردادهایشان یک اجازه دسترسی بر روی توکن های ERC-20 خود بدهید که باعث افشای اظلاعات حساس و دسترسی آنها به دارایی شما می گردد، و سایر موارد. این رابط‌های کاربری ممکن است به بهترین نحو کپی از سایت های قابل اعتماد باشند،‌ ولی با حقه‌های مخفی. + +برای نشان دادن اینکه توکن های کلاهبرداری چه هستند و نحوه شناسایی آنها، قصد داریم یک مثال را بررسی کنیم:[`wARB`](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82). این توکن تلاش دارد تا شبیه توکن قانونی [`ARB`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1) باشد. + + + +آربیتروم سازمانی است که رول آپ های خوشبینانه را توسعه داده و مدیریت می کند. در ابتدا، آربیتروم به عنوان یک شرکت انتفاعی تشکیل شد اما سپس اقداماتی را در جهت غیر متمرکز شدن انجام داد. به عنوان بخشی از آن فرایند، آنها یک توکن حاکمیت قابل مبادله را صادر کردند. + + + + + +قراردادی در اتریوم وجود دارد که زمانیکه یک دارایی سازگار با ERC-20 نیست ما یک نسخه "رپد" از آن را ایجاد می کنیم که نام آن با "w" شروع می شود. بنابراین، به عنوان مثال، ما wBTC را برای بیتکوین و wETH را برای اتر داریم. + +ایجاد ورژن "رپد" از یک توکن ERC-20 که از قبل در اتریوم موجود است بی معنی خواهد بود، در حالی که کلاهبرداران تنها به ظاهر مشروع آن اتکا می کنند، نه به ماهیت زیربنایی آن. + + + +## توکن های کلاهبرداری چگونه کار می کنند؟ {#how-do-scam-tokens-work} + +تمام هدف اتریوم تمرکز زدایی است. این بدان معنی است که هیچ قدرت مرکزی وجود ندارد که بتواند دارایی های شما را ضبط کند یا مانع بکارگیری قرارداد هوشمند شما شود. اما این همچنین به این معناست که کلاهبرداران میتوانند هر قرارداد هوشمندی که می خواهند را بکار بگیرند. + + + +قراردادهای هوشمند برنامه‌هایی هستند که بر روی بلاک‌چین اتریوم اجرا می‌شوند. هر توکن ERC-20، برای مثال، به عنوان یک قرارداد هوشمند اجرا می شود. + + + +به طور خاص، آربیتروم قراردادی را به کار گرفت که از نماد `ARB` استفاده می کند. اما این امر، افراد دیگر را از بکارگیری قراردادی که از نماد دقیقا یکسان، یا یک نماد مشابه استفاده می کند، بازنمی‌دارد. هرکس که قرارداد را می نویسد تعیین می کند که قرارداد چه کاری انجام می دهد. + +## مشروع جلوه دادن {#appearing-legitimate} + +چندین ترفند وجود دارد که سازندگان توکن تقلبی انجام می دهند تا مشروع جلوه کنند. + +- **نام و علامت قانونی**. همانطور که قبلا ذکر شد، قراردادهای ERC-20 ممکن است نام و علامت مشابه قراردادهای ERC-20 دیگر را داشته باشند. برای امنیت، نمی توانید روی آن فیلدها حساب کنید. + +- **صاحبان قانونی**. توکن های تقلبی اغلب موجودی قابل توجهی را به آدرس هایی که انتظار می‌رود دارندگان قانونی توکن واقعی باشند ایردراپ می کنند. + + برای مثال، بیایید دوباره به `wARB` نگاه کنیم. [حدود 16% از توکن ها](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82?a=0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) در آدرسی نگهداری می شوند که برچسب عمومی آن [بنیاد آربیتروم: توسعه‌دهنده](https://etherscan.io/address/0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) است. این یک آدرس جعلی _نیست_، بلکه آدرسی است که [قرارداد واقعی ARB را روی شبکه اصلی اتریوم به کار گرفته است](https://etherscan.io/tx/0x242b50ab4fe9896cb0439cfe6e2321d23feede7eeceb31aa2dbb46fc06ed2670). + + از آنجا که موجودی ERC-20 یک آدرس، بخشی از حافظه ERC-20 قرارداد است، قرارداد می‌تواند آن را به عنوان هر چیزی که توسعه‌دهنده قرارداد دوست دارد تعیین کند. همچنین قرارداد میتواند انتقال‌ها را ممنوع کند، طوری که کاربران معتبر از شر آن توکن‌های تقلبی خلاص نخواهند شد. + +- ** انتقال های قانونی**. _صاحبان قانونی برای انتقال یک توکن جعلی به دیگران هزینه نمیکنند، بنابراین اگر انتقال هایی وجود داشته باشد، باید قانونی باشند، درست است؟_ **خیر،اشتباهه**. رویداد های `انتقال توکن` توسط قرارداد ERC-20 ساخته میشوند. یک کلاه بردار به آسانی می تواند یک قرارداد هوشمند بنویسد، طوری که آن اقدامات را ایجاد کند. + +## وبسایت های کلاه برداری {#websites} + +کلاه برداران همچنین می توانند وبسایت های بسیار قانع کننده ای ایجاد کنند، بعضی مواقع حتی کپی کردن دقیق سایت های معتبر با رابط های کاربری یکسان، ولی با ترفندهای ماهرانه. مثال‌ها می‌توانند لینک های خارجی باشند که قانونی به نظر می رسند و در واقع کاربر را به یک سایت کلاهبردار بیرونی می‌فرستند، یا دستورالعمل های نادرستی که کاربر را به سمت افشای کلیدهایشان یا ارسال وجوه به یک آدرس طرف مهاجم راهنمایی می کنند. + +بهترین روش برای جلوگیری از این، چک کردن دقیق URL سایت هایی است که بازدید می کنید، و آدرس سایت های معتبر شناخته شده را در نشانک های خود ذخیره کنید. سپس، می توانید از طریق نشانک ها به سایت های حقیقی دسترسی پیدا کنید، بدون اینکه تصادفا اشتباهات املایی داشته باشید یا به لینک های خارجی اتکا کنید. + +## چگونه از خود محافظت کنید؟ {#protect-yourself} + +1. **آدرس قرارداد را چک کنید**. توکن های قانونی توسط سازمان های قانونی تولید میشوند، و شما میتوانید آدرس‌های قرارداد را در وبسایت این سازمان ها ببینید. برای مثال، در [برای`ARB` میتوانید آدرس‌های قانونی را در اینجا ببینید](https://docs.arbitrum.foundation/deployment-addresses#token). + +2. **توکن های واقعی نقدینگی دارند**. گزینه دیگر، بررسی سایز استخر نقدینگی در [Uniswap](https://uniswap.org/) است که یکی از معمول‌ترین پروتکل های تبادل توکن است. این پروتکل، از استخرهای نقدینگی استفاده میکند، و سرمایه گذاران توکن های خود را به امید کسب درآمد از کارمزد معاملات، در این پلتفرم سپرده‌گذاری میکنند. + +توکن های جعلی، معمولا استخر‌های نقدینگی کوچکی دارند، اگر داشته باشند، چون کلاهبردارن نمی خواهند با دارایی واقعی خود ریسک کنند. برای مثال، استخر `ARB`/`ETH` در پروتکل Uniswap حدود یک میلیون دلار دارد ([برای مقدار به‌روز شده،‌ اینجا را ببینید](https://info.uniswap.org/#/pools/0x755e5a186f0469583bd2e80d1216e02ab88ec6ca)) و خرید و فروش مقدار کم باعث تغییر قیمت نمی‌شود: + +![خرید یک توکن قانونی](./uniswap-real.png) + +اما زمانی که بخواهید توکن جعلی `wARB` را حتی به اندازه بسیار کم بخرید، قیمت بیشتر از 90 درصد تغییر میکند: + +![خرید یک توکن جعلی](./uniswap-scam.png) + +این گواه دیگری است که به ما نشان می‌دهد `wARB` احتمالا توکن قانونی نیست. + +3. ** Etherscan را چک کنید**. بسیاری از توکن های جعلی توسط اعضای جامعه تشخیص داده شده و گزارش شده اند. این نوع توکن ها در [Etherscan نشانه گذاری شده اند](https://info.etherscan.com/etherscan-token-reputation/). در حالی که Etherscan یک منبع معتبر حقیقت نیست (این به طبیعت شبکه‌های غیرمتمرکز برمیگردد که در آن یک نهاد قدرت برای مشروع‌سازی وجود ندارد)، توکن هایی که توسط Etherscan به عنوان جعلی شناسایی شده اند احتمالا جعلی هستند. + + ![توکن جعلی در Etherscan](./etherscan-scam.png) + +## نتيجه گيری {#conclusion} + +تا زمانی که چیز ارزشمندی در دنیا وجود داشته باشد، کلاهبرداری وجود خواهند داشت که آن را از یکدیگر بدزدند، و در یک دنیای غیرمتمرکز هیچ کس برای حفاظت از شما غیر از خودتان وجود ندارد. امیدوارم این نکات را برای تشخیص توکن‌های قانونی از جعلی همیشه به یاد داشته باشید: + +- توکن های کلاهبرداری توکن های قانونی را جعل میکنند، آنها ممکن است از اسم و علامت یکسانی استفاده کنند. +- توکن های جعلی _نمیتوانند_ از آدرس قرارداد یکسان استفاده کنند. +- بهترین منبع برای آدرس یک توکن قانونی، سازمان سازنده آن توکن است. +- اگر آن در دسترس نبود، میتوانید از اپلیکیشن‌های پرطرفدار و مورد اطمینان مثل [Uniswap](https://app.uniswap.org/#/swap) و [Etherscan](https://etherscan.io/) استفاده کنید. diff --git a/src/content/translations/fa/guides/how-to-revoke-token-access/index.md b/src/content/translations/fa/guides/how-to-revoke-token-access/index.md new file mode 100644 index 00000000000..ad3e0c33ab6 --- /dev/null +++ b/src/content/translations/fa/guides/how-to-revoke-token-access/index.md @@ -0,0 +1,73 @@ +--- +title: چطور دست رسی یک قرارداد هوشمند را به دارایی های خود ممنوع کنیم +description: راهنمای لغو دسترسی غیرمجاز به توکن قرارداد هوشمند +lang: fa +--- + +# چطور دست رسی یک قرارداد هوشمند را به دارایی های خود ممنوع کنیم + +این راهنما، نحوۀ مشاهده لیست تمام قراردادهای هوشمندی را که به آن‌ها اجازۀ دسترسی به وجوه خود را داده‌اید، و چگونگی لغو آنها را به شما آموزش می‌دهد. + +بعضی وقت‌ها توسعه‌دهندگان خرابکار، درهای پشتی را برای ورود به قراردادهای هوشمند ایجاد می‌کنند که امکان دسترسی به منابع مالی کاربران ناآگاه قراردادهای هوشمند را فراهم می‌کنند. آنچه اغلب اتفاق می‌افتد این است که چنین پلتفرم‌هایی از کاربران اجازه می‌خواهند تا **تعداد نامحدودی توکن‌** را به‌منظور صرفه‌جویی در مقدار اندکی گس در آینده خرج کنند، اما این اجازه با افزایش ریسک همراه است. + +هنگامی که یک پلتفرم حق دسترسی نامحدود به یک توکن در کیف پول شما را داشته باشد، می‌تواند همۀ توکن‌ها را خرج کند، حتی اگر شما وجوه خود را از پلتفرم آنها به کیف پول شخصی خود منتقل کرده باشید. عوامل خرابکار همچنان می‌توانند با دسترسی به وجوه شما، آن‌ها را به کیف پول خود منتقل کنند بدون این‌که هیچگونه حق بازیابی برای شما باقی بگذارند. + +تنها راه محافظت‌ این است که از پروژه‌های جدید آزمایش‌نشده استفاده نکنید، فقط موارد مورد نیاز را تأیید کنید یا به‌طور منظم دسترسی‌ها را لغو کنید. اما، چگونه این کار را انجام دهید؟ + +## مرحلۀ 1: از ابزارهای لغو دسترسی استفاده کنید + +چندین وبسایت به شما این امکان را می‌دهند که قراردادهای هوشمند متصل به آدرس خود را مشاهده و لغو کنید. به وبسایت رجوع کنید و کیف پول خود را متصل کنید: + +- [Ethallowance](https://ethallowance.com/) (اتریوم) +- [Etherscan](https://etherscan.io/tokenapprovalchecker) (اتریوم) +- [Cointool](https://cointool.app/approve/eth) (شبکه های گوناگون) +- [Revoke](https://revoke.cash/) (شبکه های گوناگون) +- [Unrekt](https://app.unrekt.net/) (شبکه های گوناگون) +- [EverRevoke](https://everrise.com/everrevoke/) (شبکه های گوناگون) + +## مرحلۀ 2: کیف پول خود را متصل کنید + +پس از ورود به وبسایت، روی «Connect wallet» کلیک کنید. وبسایت باید از شما بخواهد که کیف پول خود را متصل کنید. + +اطمینان حاصل کنید که از یک شبکه یکسان در کیف پول و وبسایت خود استفاده می‌کنید. تنها قراردادهای هوشمند مربوط به شکبه انتخاب شده را خواهید دید. به عنوان نمونه، اگر به شبکۀ اصلی اتریوم متصل شوید، فقط قراردادهای اتریوم را خواهید دید، نه قراردادهای زنجیره‌های دیگر مانند پالیگان (Polygon). + +## مرحلۀ 3: قرارداد هوشمندی را که می‌خواهید لغو کنید انتخاب کنید + +باید تمام قراردادهایی را که اجازۀ دسترسی به توکن‌های شما را دارند، و حد مجاز خرج کردن آن‌ها را بینید. موردی را که قصد دارید لغو کنید پیدا کنید. + +اگر نمی‌دانید کدام قرارداد را باید انتخاب کنید، می‌توانید همۀ قراردادها را لغو کنید. هیچ مشکلی برای شما ایجاد نخواهد کرد، فقط دفعۀ بعد که خواستید از هر یک از این قراردادها استفاده کنید، ناگزیرید دوباره مجموعۀ جدیدی از مجوزها را اعطا کنید. + +## مرحله 4: دسترسی به پول‌های خود را لغو کنید + +پس از کلیک روی دکمۀ لغو، انتظار می‌رود که یک پیشنهاد تراکنش جدید را در کیف پول خود مشاهده کنید. این مسئله قابل انتظار است. برای لغو موفقیت‌آمیز می‌بایست هزینه‌‌ای بپردازید. بسته به شبکه، ممکن است پردازش آن از یک تا چند دقیقه طول بکشد. + +توصیه می‌کنیم پس از چند دقیقه، ابزار لغو را بازآوری کنید و کیف پول خود را دوباره متصل کنید تا مجدداً بررسی شود که آیا قرارداد لغوشده از فهرست حذف شده است یا خیر. + +توصیه می‌کنیم هرگز به هیچ پروژه‌ای اجازۀ دسترسی نامحدود به توکن‌های خود را ندهید و همۀ دسترسی‌های مجاز توکن را به‌طور منظم لغو کنید. لغو دسترسی توکن هرگز نباید منجر به از دست دادن پول‌ها شود، به‌خصوص اگر از ابزارهای مذکور در بالا استفاده می‌کنید. + +
    + + +
    می‌خواهید بیشتر بدانید؟
    + + راهنماهای دیگر ما را ببینید + +
    + +## پرسش‌های متداول + +### آیا لغو دسترسی به توکن، سهام‌گذاری، ادغام، وام دادن و غیره را نیز متوقف می‌کند؟ + +خیر، این کار هیچ‌‌یک از استراتژی‌های دیفای شما را تحت تاثیر قرار نمی‌دهد. شما در موقعیت‌های قبلی خود باقی خواهید ماند و به دریافت پاداش و غیره ادامه می‌دهید. + +### آیا قطع اتصال کیف پول از یک پروژه، با حذف مجوز استفاده از وجوه من همراه است؟ + +خیر، اگر اتصال کیف پول خود را از پروژه قطع کنید، اما مجوزهای دسترسی به توکن را اعطا کرده باشید، آنها همچنان می‌توانند از آن توکن‌ها استفاده کنند. باید آن دسترسی را لغو کنید. + +### مجوز قرارداد چه زمانی منقضی می‌شود؟ + +مجوزهای قرارداد هیچ تاریخ انقضای مشخصی ندارند. اگر مجوزهای قرارداد را اعطا کنید، حتی سال‌ها بعد از اعطا هم قابل استفاده‌اند. + +### چرا پروژه‌ها مجوز دسترسی نامحدود به توکن تعیین می‌کنند؟ + +پروژه‌ها اغلب این کار را برای به حداقل رساندن تعداد درخواست‌های مورد نیاز انجام می‌دهند، به این معنی که عمل تایید و پرداخت هزینۀ تراکنش تنها یک بار از سوی کاربر انجام می‌شود. اگرچه دسترسی نامحدود کارها را راحت می‌کند، اما بی‌احتیاطی در عمل «تایید» در سایت‌هایی که با گذشت زمان ثابت نشده یا ممیزی نشده‌اند، می‌تواند برای کاربران خطرناک باشد. برخی از کیف پول‌ها برای کم کردن ریسک، به شما این امکان را می‌دهند که مقدار توکن‌های تاییدشده را به صورت دستی محدود کنید. برای کسب اطلاعات بیشتر با خدمات‌دهندۀ کیف پول خود تماس بگیرید. diff --git a/src/content/translations/fa/guides/how-to-swap-tokens/index.md b/src/content/translations/fa/guides/how-to-swap-tokens/index.md new file mode 100644 index 00000000000..8f98c60ac33 --- /dev/null +++ b/src/content/translations/fa/guides/how-to-swap-tokens/index.md @@ -0,0 +1,67 @@ +--- +title: چطور می توان توکن ها را مبادله کرد +description: راهنمای تبادل توکن در اتریوم. +lang: fa +--- + +# چطور می توان توکن ها را مبادله کرد + +آیا از جستجوی یک صرافی که تمام توکن‌های محبوب شما را در لیست خود دارد، خسته شده‌اید؟ اغلب توکن‌ها را می‌توانید با استفاده از صرافی‌های غیرمتمرکز (Dex) تعویض کنید. + +تعویض توکن شامل مبادلۀ دو دارایی مختلف است که در شبکۀ اتریوم وجود دارند، برای مثال تعویض اتر با DAI (یک توکن در استاندارد ERC20). این فرآیند ارزان و سریع است. لازم است یک کیف پول رمزارز داشته باشید تا تبادل توکن را انجام دهید. + +**پیش‌شرط‌:** + +- برای نصب یک کیف پول رمزارز می‌توانید از این راهنمای آموزشی استفاده کنید:[چگونه یک حساب اتریوم «ثبت کنیم»](/guides/how-to-register-an-ethereum-account/) +- وجوهی به کیف پول خود واریز کنید + +## 1. کیف پول خود را به صرافی غیرمتمرکز دلخواه خود متصل کنید + +برخی از صرافی‌های محبوب: + +- [Uniswap](https://app.uniswap.org/#/swap) +- [Sushiswap](https://www.sushi.com/swap) +- [1Inch](https://app.1inch.io/#/1/unified/swap/ETH/DAI) +- [Curve](https://curve.fi/#/ethereum/swap) + +اگر تمایل دارید در این باره بیشتر بدانید که دیفای چیست و این نوع از صرافی‌ها چگونه کار می‌کنند، به شما [ کتابخانۀ Kernel](https://library.kernel.community/Topic+-+DeFi/Topic+-+DeFi) را توصیه می‌کنیم. + +## 2. جفت توکن مورد نظر خود برای تبادل را انتخاب کنید + +برای مثال، اتر و DAI را انتخاب کنید. مطمئن شوید که از یکی از این دو رمزارز در کیف پول خود موجودی کافی داشته باشید. ![رابط مشترک برای تعویض](./swap1.png) + +## 3. مقدار توکن‌هایی را که قصد مبادله آن‌ها را دارید، مشخص کنید + +صرافی به صورت خودکار محاسبه خواهد کرد که چه تعداد توکن خواهید گرفت. + +![رابط مشترک برای تعویض](./swap2.png) + +## 4. تراکنش را تایید کنید + +جزئیات تراکنش را بازبینی کنید. نرخ تعویض و هر گونه کارمزد دیگر را کنترل کنید تا از هر پیشامد نامطلوب پیشگیری کنید. + +![رابط مشترک برای بررسی تراکنش](./swap3.png) + +## 5. صبر کنید تا فرایند تراکنش انجام شود + +می‌توانید پیشرفت فرایند تراکنش را در هر مرورگر بلاک چین مشاهده کنید. این فرایند معمولا نباید بیش از 10 دقیقه طول بکشد. + +به محض تکمیل پردازش تراکنش، به صورت خودکار توکن‌های تعویض شده را در کیف پول خود دریافت خواهید کرد. +
    + + +
    می‌خواهید بیشتر بدانید؟
    + + راهنماهای دیگر ما را ببینید + +
    + +## پرسش‌های متداول + +### آیا می‌توانم از کیف پول خود اتر را با بیت کوین تعویض کنم؟ + +خیر، تنها می‌توانید توکن‌های بومی شبکۀ اتریوم مثل اتر، توکن‌های استاندارد ERC-20 یا توکن‌های NFT اتریوم را تعویض کنید. تنها می‌توانید به تعویض انواع «رپد» بیتکوین که در شبکۀ اتریوم هستند، اقدام کنید. + +### افت چیست؟ + +به تفاوت میان نرخ تعویض مورد انتظار شما و نرخ حقیقی اشاره دارد. diff --git a/src/content/translations/fa/guides/how-to-use-a-bridge/index.md b/src/content/translations/fa/guides/how-to-use-a-bridge/index.md new file mode 100644 index 00000000000..4655ae0fd3a --- /dev/null +++ b/src/content/translations/fa/guides/how-to-use-a-bridge/index.md @@ -0,0 +1,70 @@ +--- +title: چگونه توکن ها را به لایه دوم ارتباط دهیم +description: راهنمای نحوه انتقال توکن‌ها از اتریوم به لایه 2 با استفاده از یک پل. +lang: fa +--- + +# چگونه توکن ها را به لایه دوم ارتباط دهیم + +هرگاه ترافیک شبکۀ اتریوم زیاد شود، ممکن است گران‌تر شود. یکی از راه‌حل‌ها در مواجهه با این مشکل ایجاد «لایه‌های» جدید است: یعنی شبکه‌های مختلفی که به روش‌های مشابه با خود شبکۀ اتریوم کار می‌کنند. شبکه‌های معروف به لایه 2، با پردازش تعداد زیادی از تراکنش‌ها با کارمزد پایین به کاهش تراکم و هزینه در شبکۀ اتریوم کمک می‌کنند و تنها هر چند وقت یک بار نتایج پردازش‌ها را بر روی اتریوم ذخیره می‌کنند. به این ترتیب، لایه‌های 2 ما را قادر می‌سازند تا با سرعت بیش‌تر و هزینۀ کمتر تراکنش‌های خود را انجام دهیم. بسیاری از پروژه‌های رمزارزیِ محبوب، در حال انتقال به لایه‌های 2 به دلیل مزایای زیاد آنها هستند. آسان‌ترین راه برای انتقال توکن‌ها از شبکۀ اتریوم به لایۀ 2 استفاده از پل است. + +**پیش‌شرط‌:** + +- برای نصب یک کیف پول رمزارز می‌توانید از این راهنمای آموزشی استفاده کنید:[چگونه یک حساب اتریوم «ثبت کنیم»](/guides/how-to-register-an-ethereum-account/) +- وجوهی به کیف پول خود واریز کنید + +## 1. تصمیم بگیرید که از کدام شبکۀ لایه 2 می‌خواهید استفاده کنید + +می‌توانید در مورد پروژه‌های مختلف و لینک‌های مهم در [صفحۀ لایه 2](/layer-2/) ما اطلاعات بیشتری کسب کنید. + +## 2. به پل انتخاب شده بروید + +تعدادی از محبوب‌ترین لایه‌های 2: + +- [پل Arbitrum](https://bridge.arbitrum.io/?l2ChainId=42161) +- [پل Optimism](https://app.optimism.io/bridge/deposit) +- [پل شبکه Boba](https://gateway.boba.network/) + +## 3. با کیف‌پول خود به پل متصل شوید + +مطمئن شوید که کیف‌پولتان به شبکۀ اصلی اتریوم متصل است. اگر متصل نباشد، وبسایت به صورت خودکار از شما می‌خواهد که شبکۀ خود را تغییر دهید. + +![رابط مشترک برای پل زدن توکن‌ها](./bridge1.png) + +## 4. مبلغ مدنظرتان را مشخص کرده و آن را انتقال دهید + +برای جلوگیری از اتفاقات ناخوشایند، آنچه را که در ازای این انتقال در شبکه لایه 2 دریافت خواهید کرد و نیز کارمزدها را بررسی کنید. + +![رابط مشترک برای پل زدن توکن‌ها](./bridge2.png) + +## 5. تراکنش را در کیف‌پولتان تایید کنید + +باید با ETH هزینه انجام تراکنش را پرداخت کنید. + +![رابط مشترک برای پل زدن توکن‌ها](./bridge3.png) + +## 6. صبر کنید تا پول‌تان انتقال یابد + +این فرآیند نباید بیش‌تر از 10 دقیقه طول بکشد. + +## 7. شبکه لایه 2 انتخابی‌تان را به کیف‌پولتان اضافه کنید (اختیاری) + +می‌توانید از [chainlist.org](http://chainlist.org) برای پیداکردن جزئیات RPC شبکه استفاده کنید. به محض اینکه شبکه اضافه شود و تراکنش پایان یابد، باید توکن‌ها را در کیف‌پولتان مشاهده کنید. +
    + + +
    می‌خواهید بیشتر بدانید؟
    + + راهنماهای دیگر ما را ببینید + +
    + +## پرسش‌های متداول + +### اگر پول‌هایم در یک صرافی باشد چطور؟ + +ممکن است بتوانید سرمایۀ خود را مستقیماً از یک صرافی برداشت و به چند شبکۀ لایه 2 انتقال دهید. برای اطلاعات بیشتر، بخش «انتقال به لایه 2» را در [صفحه لایه 2](/layer-2/) ما بررسی کنید. + +### بعد از بریج و انتقال توکن‌هایم به لایه 2 می‌توانم دوباره به شبکۀ اصلی اتریوم برگردم؟ + +بله، شما همیشه می‌توانید دارایی‌تان را با استفاده از همان پل مجدداً به شبکۀ اصلی برگردانید. diff --git a/src/content/translations/fa/guides/how-to-use-a-wallet/index.md b/src/content/translations/fa/guides/how-to-use-a-wallet/index.md new file mode 100644 index 00000000000..cb9319364bf --- /dev/null +++ b/src/content/translations/fa/guides/how-to-use-a-wallet/index.md @@ -0,0 +1,88 @@ +--- +title: چطور می توان از یک کیف پول استفاده کرد +description: راهنمای ارسال و دریافت توکن ها و اتصال به پروژه های web3. +lang: fa +--- + +# چطور می توان از یک کیف پول استفاده کرد + +یاد بگیرید چگونه تمام عملکردهای اساسی یک کیف پول را اجرا کنید. اگر هنوز حساب ندارید، [ چگونه: یک حساب اتریوم باز کنیم](/guides/how-to-create-an-ethereum-account/) را چک کنید. + +## کیف پول خود را باز کنید + +باید پنل کاربری را ببینید که احتمالا موجودی شما را نشان می دهد و شامل دکمه هایی برای ارسال و دریافت توکن ها است. + +## دریافت رمز ارز + +آیا می خواهید کریپتو در کیف پول خود دریافت کنید؟ + +هر حساب اتریوم آدرس دریافت‌کننده خود را دارد که یک توالی منحصر به فرد از اعداد و حروف است. آدرس مانند شماره حساب بانکی عمل می کند. آدرس های اتریوم همواره با "0x" شروع می شوند. می توانید این آدرس را با هر کس به اشتراک بگذارید: انجام این کار بی خطر است. + +آدرس شما مانند آدرس منرل شماست: باید آن را به افراد بگویید تا آنها بتوانند شما را پیدا کنند. انجام این کار بی خطر است، چون شما همچنان می توانید در ورودی خود را با کلید دیگری که فقط شما دارید قفل کنید تا هیچ کس نتواند وارد شود، حتی اگر بدانند کجا زندگی می کنید. + +باید آدرس عمومی خود را به هر کسی که می خواهد برای شما پول ارسال کند بدهید. بسیاری از اپلیکیشن‌های کیف پول به شما اجازه کپی کردن آدرستان را می دهند یا یک کد QR برای استفاده آسانتر نشان می دهند. از تایپ دستی هرگونه آدرس اتریوم خودداری کنید. این کار به راحتی می تواند به اشتباهات اداری و از دادن پول منجر شود. + +اپلیکیشن‌های مختلف ممکن است متفاوت باشند یا از زبان های مختلف استفاده کنند، اما اگر بخواهید پولی منتقل کنید، آنها باید شما را از یک فرآیند مشابه عبور دهند. + +1. اپلیکیشن کیف پول خود را باز کنید. +2. روی "دریافت" (یا گزینه معادل آن) کلیک کنید. +3. آدرس اتریوم خود را در کلیپ بورد کپی کنید. +4. آدرس اتریوم دریافت کننده خود را به فرستنده بدهید. + +## فرستادن کریپتو + +آیا می خواهید ETH را به کیف پول دیگری ارسال کنید؟ + +1. اپلیکیشن کیف پول خود را باز کنید. +2. آدرس دریافت کننده را بگیرید و مطمئن شوید که به شبکه گیرنده یکسان متصل هستید. +3. آدرس دریافت را وارد کنید یا کد QR را با دوربین خود اسکن کنید، طوری که مجبور نیستید آدرس را به صورت دستی بنویسید. +4. در کیف پول خود بر روی "ارسال" کلیک کنید (یا گزینه مشابه دیگر). + +![فیلد آدرس کریپتو را بفرستید](./send.png) +
    + +5. بسیاری از دارایی ها، مانند Dai یا USDC، روی چندین شبکه‌ وجود دارند. هنگام انتقال توکن های کریپتو، مطمئن شوید که گیرنده از همان شبکه شما استفاده می کند، زیرا آنها قابل معاوضه نیستند. +6. مطمئن شوید که کیف پول شما ETH کافی برای پوشش دادن کارمزد تراکنش، که بسته به شرایط شبکه متفاوت است، دارد. اکثر کیف پول ها به صورت خودکار کارمزد پیشنهادی را به تراکنش اضافه می کنند که سپس می توانید آن را تایید کنید. +7. هنگامی که تراکنش شما پردازش شد، مقدار کریپتو مربوطه در حساب گیرنده نشان داده می شود. بسته به مقدار استفاده شده از شبکه در آن لحظه، این عمل ممکن است از چند ثانیه تا چند دقیقه طول بکشد. + +## وصل شدن به پروژه ها + +آدرس شما در تمام پروژه های اتریوم یکسان خواهد بود. شما نیاز به ثبت نام جداگانه در هیچ پروژه ای ندارید. هنگامی که کیف پول دارید، بدون هیچ اطلاعات اضافی می توانید به هر پروژه اتریوم متصل شوید. هیچ ایمیل یا اطلاعات شخصی دیگری نیاز نیست. + +1. از وبسایت هر پروژه بازدید کنید. +2. اگر صفحه آعازین وبسایت یک پروژه فقط یک توصیف ثابت از پروژه است، باید بتوانید در منو روی دکمه "بازکردن اپلیکیشن" کلیک کنید، که شما را به اپلیکیشن وب واقعی هدایت می کند. +3. پس از ورود به اپلیکیشن روی "اتصال" کلیک کنید + +![دکمه ای که به کاربر اجازه می دهد با یک کیف پول به وبسایت متصل شود](./connect1.png) + +4. کیف پول خود را از بین لیست گزینه های ارائه شده انتخاب کنید. اگر نمی توانید کیف پول خود را ببینید، ممکن است در زیر گزینه "WalletConnect" پنهان شده باشد. + +![انتخاب از لیست کیف پول ها برای اتصال](./connect2.png) + +5. برای برقرار کردن اتصال، درخواست امضا را در کیف پول خود تایید کنید. **برای امضای این پیام، نباید به پرداخت هیچ ETH نیاز باشد**. +6. همین! استفاده از اپلیکیشن را شروع کنید. در [صفحه برنامه های غیرمتمرکز](/dapps/#explore) می توانید پروژه های جالبی را پیدا کنید.
    + + +
    می‌خواهید بیشتر بدانید؟
    + + راهنماهای دیگر ما را ببینید + +
    + +## پرسش‌های متداول + +### اگر من صاحب یک آدرس اتریوم باشم، صاحب همان آدرس روی سایر بلاک‌چین‌ها نیز هستم؟ + +می توانید از یک آدرس یکسان در تمام بلاک‌چین‌های سازگار با EVM استفاده کنید (اگر کیف پول با عبارت بازیابی دارید). این [لیست](https://chainlist.org/) بلاک‌چین‌هایی را که در آن می‌توانید از آدرس یکسان استفاده کنید نمایش میدهد. بعضی بلاک‌چین‌ها، مثل بیتکوین، قوانین شبکه کاملا متفاوتی اجرا می‌کنند و برای استفاده از آن شبکه به آدرس متفاوت با فرمت متفاوت احتیاج است. اگر از یک کیف پول مبتنی بر قرارداد هوشند استفاده می‌کنید، باید وب‌سایت ارائه دهنده خدمات را برای کسب اطلاعات درباره بلاک‌چین‌های مورد پشتیبانی بررسی کنید. + +### آیا می توانم از یک آدرس یکسان در چند دستگاه استفاده کنم؟ + +بله، می توانید از یک آدرس یکسان در چند دستگاه استفاده کنید. کیف پول ها از نظر فنی فقط یک رابط برای نشان دادن موجودی‌تان به شما و انجام تراکنش ها هستند، و حساب شما در بلاک‌چین ذخیره می شود نه در کیف پول. + +### رمزارز را دریافت نکردم، از کجا می توانم وضعیت تراکنش را بررسی کنم؟ + +برای دیدن وضعیت هر تراکنش در زمان واقعی، می توانید از [جستجوگر‌های بلاک](/developers/docs/data-and-analytics/block-explorers/) استفاده کنید. تنها کاری که باید انجام دهید این است که آدرس کیف پول خود یا ID تراکنش را جستجو کنید. + +### آیا می توانم تراکنش ها را لغو کنم یا باز گردانم؟ + +خیر، پس ار تایید تراکنش، نمی توانید تراکنش را لغو کنید. diff --git a/src/content/translations/fa/guides/index.md b/src/content/translations/fa/guides/index.md new file mode 100644 index 00000000000..01da530b086 --- /dev/null +++ b/src/content/translations/fa/guides/index.md @@ -0,0 +1,27 @@ +--- +title: راهنماهای اتریوم +description: مجموعه راهنمایی های کاربردی که مبانی اتریوم را به مبتدی ها آموزش میدهند. +lang: fa +--- + +# راهنماهای اتریوم + +در آستانه ورود به دنیای اتریوم‌ هستید؟ راهنماهای عملی و گام به گام ما، آغاز و حرکت در مسیر دنیای این فناوری جدید را برای شما هموار می‌کنند. + +## شروع به کار + +1. [روش «ایجاد» حساب اتریوم](/guides/how-to-create-an-ethereum-account/) - همه افراد می‌توانند به‌صورت رایگان یک کیف‌پول ایجاد کنند. این راهنما نقطه آغاز مسیر را به شما نشان می‌دهد. + +2. [نحوه استفاده از کیف پول](/guides/how-to-use-a-wallet/) - مقدمه‌ای درباره آشنایی با مشخصات ابتدایی هر کیف پول و نحوه استفاده از آن‌ها. + +## اصول اولیه امنیتی + +1. [چطور می‌توانید دسترسی قراردادهای هوشمند به رمزارزهای خودتان را لغو کنید؟](/guides/how-to-revoke-token-access/)-این راهنما به شما کمک می‌کند تراکنش‌هایی را که خودتان آن را آغاز نکرده‌اید، لغو کنید، و جلوی تکرار آن را بگیرید. + +2. [نحوه شناسایی توکن‌های کلاهبرداری](/guides/how-to-id-scam-tokens/)- توکن‌های کلاهبرداری چه توکن‌هایی هستند، چطور خود را قانونی جلوه می‌دهند، با چه نشانه‌هایی می‌توان آن‌ها را شناخت و از کلاهبرداری‌ها جلوگیری کرد. + +## استفاده از اتریوم + +1. [چطور می‌توان توکن‌ها را به لایه 2 پل زد](/guides/how-to-use-a-bridge/)-به نظرتان تراکنش‌ها در شبکه اتریوم بیش از حد گران‌اند؟ از راه‌حل‌های مقیاس‌پذیر کردن اتریوم که به آن شبکه‌های لایه 2 می‌گویند استفاده کنید. + +2. [چطور توکن‌ها را تعویض کنیم](/guides/how-to-swap-tokens/)-آیا تصمیم دارید توکن‌های فعلی‌تان را به توکن‌های دیگری تبدیل کنید؟ این راهنمای ساده نشان خواهد داد که چگونه این کار را انجام دهید. diff --git a/src/content/translations/fa/refi/index.md b/src/content/translations/fa/refi/index.md new file mode 100644 index 00000000000..49d41ad62de --- /dev/null +++ b/src/content/translations/fa/refi/index.md @@ -0,0 +1,79 @@ +--- +title: امور مالی بازتولیدکننده (ReFi) +description: مروری بر ReFi و موارد استفاده فعلی آن. +lang: fa +template: use-cases +emoji: ":recycle:" +sidebarDepth: 2 +image: ../../../../assets/future_transparent.png +alt: "" +summaryPoint1: یک سیستم اقتصادی جایگزین ساخته شده بر پایه اصول بازتولیدکننده +summaryPoint2: تلاشی برای استفاده از اتریوم برای حل چالش های هماهنگی در سراسر جهان مثل تغییرات آب و هوایی +summaryPoint3: ابزاری برای مقیاس‌پذیری قابل توجه دارایی های سودمند زیست محیطی مانند اعتبارات کربن تایید شده +--- + +## Refi چیست؟ {#what-is-refi} + +**امور مالی بازتولیدکننده (ReFi)**مجموعه ای از ابزار ها و ایده ها است که بر روی بستر بلاکچین ساخته شده اند که هدف آن تولید اقتصادهایی است که بازتولیدکننده باشند، نه استخراجی یا استثمارگر. در نهایت، سیستم های استخراجی منابع موجود را استفاده کرده و از بین می برند که بدون هیچگونه ساز و کار بازتولیدکننده، فاقد قدرت خواهند بود. عملکرد ReFi بر این پنداشت است که ایجاد ارزش پولی باید از استخراج ناپایدار منابع از سیاره و از جوامع ما جدا شود. + +در عوض، هدف ReFi حل مشکلات محیط زیستی، همگانی، یا اجتماعی به وسیله ایجاد چرخه های بازتولیدکننده می باشد. این سیستم ها در حالی که برای شرکت کنندگان ارزش تولید می کنند، به طور همزمان به اکوسیستم ها و جوامع هم سود می رسانند. + +یکی از پایه های ReFi مفهوم اقتصاد بازتولیدکننده است که توسط جان فولرتون از [موسسه کاپیتال](https://capitalinstitute.org) مطرح شد. او 8 اصل به هم پیوسته را که زیربنای سلامت سیستماتیک را تشکیل می دهند پیشنهاد کرد: + +![هشت اصل به هم پیوسته](../../assets/use-cases/refi-regenerative-economy-diagram.png) + +پروژه های Refi این اصول را هنگام استفاده از [قرارداد های هوشمند](/developers/docs/smart-contracts/) و اپلیکیشن‌های[ سیستم های مالی غیر متمرکز (DeFi)](/defi/) به عنوان محرکی برای رفتارهای بازتولیدکننده به کار می گیرند. به عنوان مثال احیا اکوسیستم های تنزل یافته و تقویت همکاری ها در مقیاس بزرگ برای مسائل جهانی مانند تغییرات آب و هوا و تقلیل تنوع زیستی جانوری. + +ReFi همچنین با جنبش [دانش غیرمتمرکز (DeSci)](/desci/) همپوشانی دارد، که از اتریوم به عنوان پلتفرمی برای فراهم کردن سرمایه، تولید کردن، بررسی کردن، اعتبار دادن، ذخیره کردن، و منتشر کردن دانش علمی استفاده می کند. ابزارهای DeSci می توانند برای توسعه استاندارد ها و شیوه های تحقیق پذیر برای اجرا کردن و نظارت کردن بر فعالیت های بازتولیدکننده مانند کاشتن درختان، جمع‌آوری پلاستیک از اقیانوس، یا احیای یک اکوسیستم تخریب شده مفید باشند. + +## توکنیزه کردن اعتبارات کربنی {#tokenization-of-carbon-credits} + +**[بازار داوطلبانه کربن (VCM)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** مکانیزمی است برای تامین مالی پروژه هائی که تاثیر مثبت تایید شده ای بر انتشار کربن می گذارند؛ یا مداوم انتشارشان را کاهش می دهند، یا گاز های گل خانه ای را که قبلا در جو منتشر شده اند حذف می‌کنند. پس از تایید این پروژه ها، آن ها یک دارائی به نام "اعتبارات کربن" دریافت می کنند، که می توانند آن ها را به افراد و سازمان هایی که میخواهند از اقدامات آب و هوایی حمایت کنند بفروشند. + +علاوه بر VCM، چندین بازار کربن دستوری از طرف دولت («بازارهای سازگاری) وجود دارد که هدف آن ها تعیین قیمت کربن از طریق قوانین و مقررات در یک حوزه قضایی بخصوص (مثلا در یک کشور یا منطقه)، جهت کنترل صدور مجوزهایی است که باید توزیع شوند. بازارهای سازگاری، در حوزه حقوقی خود، آلایندگان را جهت کاهش انتشار گاز های گلخانه ای تشویق می کنند، اما قادر به پاک کردن گاز های گلخانه ای از قبل منتشر شده نیستند. + +علی رقم توسعه آن در دهه های اخیر، VCM هنوز با چالش های متعددی مواجه است: + +1. پراکندگی زیاد نقدینگی +2. مکانیزم های غیر شفاف تراکنش +3. هزینه های بالا +4. سرعت بسیار پایین معاملات +5. عدم مقیاس پذیری + +انتقال VCM به **بازار جدید کربن دیجیتال (DCM)** مبتنی بر بلاک چین ممکن است شانسی برای ارتقا دادن تکنولوژی موجود برای معتبر ساختن، معامله کردن و مصرف کردن اعتبارات کربن باشد. بلاکچین‌ها به داده های قابل تایید عمومی اجازه دسترسی برای طیف گسترده ای از کاربرها، و نقدینگی بیشتر را می دهند. + +پروژه های Refi با به کار گیری تکنولوژی بلاکچین تعداد زیادی از مشکلات بازار های سنتی را تسهیل می کنند: + +- ** نقدینگی در تعداد محدودی از استخر های نقدینگی متمرکز شده است** که هر شخص می تواند آزادانه آن را مبادله کند. تشکیلات بزرگ همانند اشخاص می توانند از این استخر های نقدینگی بدون جستجوی دستی فروشندگان و خریداران، پرداخت هزینه های مشارکت یا هزینه ثبت نام، استفاده کنند. +- **تمامی تراکنش ها به روی بلاکچین‌های عمومی ثبت می شوند**. مسیری که هر یک از اعتبارات کربن جهت فعالیت مبادله طی می کند، به محض در دسترس بودن در DCM برای همیشه قابل ردیابی خواهد بود. +- **سرعت تراکنش تقریبا آنی می باشد**. تامین مقادیر زیاد اعتبارات کربن از طریق بازارهای ارثی می تواند چندین روز یا هفته به طول بینجامد، در حالی که از طریق DCM در عرض چند ثانیه میسر خواهد بود. +- **فعالیت مبادله تجاری بدون هرگونه واسطه انجام می گیرد**، که کارمزد بالایی را درخواست می کنند. به توجه به داده های یک شرکت تحلیلی، اعتبارهای کربن دیجیتال باعث [ بهبود 62% هزینه نسبت به اعتبار های کربن سنتی](https://www.klimadao.finance/blog/klimadao-analysis-of-the-base-carbon-tonne) میشود. +- **DCM مقیاس پذیز است** و میتواند هم نیاز اشخاص و هم سازمان های بین المللی را بر طرف کند. + +### اجزای کلیدی DCM {#key-components-dcm} + +چشم انداز فعلی DCM شامل چهار جزء اصلی است: + +1. سازمان ها یا سیستم هایی مانند [Verra](https://verra.org/project/vcs-program/registry-system/) و [ Gold Standard](https://www.goldstandard.org/) از قابل اعتماد بودن پروژه هایی که اعتبارات کربن تولید می کنند اطمینان حاصل می کنند. آنها همچنین پایگاه های اطلاعاتی را مدیریت می کنند که اطلاعات کربن دیجیتال از آن ها منشأ می گیرد و می تواند منتقل یا مصرف شود (بازنشسته). + +موج جدیدی از پروژه های نوآورانه در حال ساخت بر روی بلاکچین‌ها وجود دارد که در حال تلاش برای ایجاد اختلال برای متصدیان در این بخش هستند. + +2. پل های کربنی، با نام مستعار مبدل توکن های دیجیتال، یک فناوری برای نمایش دادن یا انتقال اعتبارات کربن از سازمان های قدیمی به DCM را فراهم می کنند. مثال های قابل توجه شامل [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/) تنها پروژه های خاص را که زیر نظر استاندارد خودشان توسعه یافته اند ارائه میدهند، که صادر کننده اعتبار کربن خودشان هستند و برای هر کدام بازارچه مخصوص به خود را دارند. + +4. چارچوب و زیرساخت اساسی که امکان مقیاس‌پذیری اثربخشی و بازده کل زنجیره تامین را در بازار کربن فراهم می کند. [KlimaDAO](http://klimadao.finance/) نقدینگی را به عنوان کالای عمومی تامین می‌کند (امکان خرید یا فروش اعتبار کربن با قیمتی شفاف را برای هر کس فراهم میکند)، مشوق برای افزایش فعالیت در بازارهای کربن و بازنشستگی اعتبارات را از طریق پاداش‌ها، و ابزارهای ساده و هم‌تراز برای دسترسی به اطلاعات و همچنین به‌دست آوردن و بازنشستگی طیف گسترده‌ای از اعتبارات کربن توکن‌سازی‌شده فراهم می‌کند. + +## Refi فراتر از بازارهای کربن {#refi-beyond} + +با اینکه هم اکنون تاکید زیادی روی بازارهای کربن به طور کلی، و به خصوص انتقال VCM به DCM در این حوزه وجود دارد، Refi به کربن محدود نمیشود. دیگر دارایی‌های زیست‌محیطی فراتر از اعتبارات کربن هم میتوانند توسعه و توکنیزه شوند، که امکان گنجاندن سایر اثرات جانبی نامطلوب را در سطوح پایه ای سیستم‌های اقتصادی آینده فراهم می‌کند. علاوه بر این، جنبه بازتولیدکنندگی این مدل اقتصادی را میتوان برای سایر بخش نیز بکار برد مثل تامین سرمایه کالاهای عمومی از طریق پلتفرم های تامین مالی درجه دوم مثل [گیتکوین](https://gitcoin.co/). سازمان هایی که بنیاد آن ها بر اساس ایده مشارکت آزاد و توزیع منصفانه منابع نهادینه شده است همه را قادر می‌سازند سرمایه ها را به سمت پروژه های نرم افزاری منبع-باز، و نیز پروژه‌های آموزشی، محیط زیستی و پروژه های جامعه محور سرازیر کنند. + +با تغییر مسیر جریان سرمایه از فعالیت‌های استخراجی به سوی جریان بازتولیدکننده، پروژه‌ها و شرکت‌هایی که مزایای اجتماعی، زیست محیطی یا محلی ارائه می‌کنند - و ممکن است در سیستم سنتی تامین سرمایه ناموفق باشند - می‌توانند از جا بلند شوند و تأثیرات مثبت جانبی را برای جامعه به شکل سریع‌تر و آسان‌تر ایجاد کنند. انتقال به این نوع تأمین سرمایه، همچنین فرصتی برای ایجاد سیستم‌های اقتصادی فراگیر ایجاد می‌کند که در آنها افراد همه بافت‌های جمعیتی می‌توانند به صورت فعال مشارکت کنند، به جای اینکه فقط به طور غیرفعال ناظر باشند. ReFi چشم اندازی از اتریوم را ارائه میدهد که از آن به عنوان مکانیسمی برای هماهنگی مقابله با چالش‌های پیش روی ما و حیات روی سیاره‌‌مان استفاده میشود- به عنوان لایه پایه‌ای یک پارادایم اقتصادی جدید در آینده، این مکانیسم یک آینده فراگیرتر و پایدارتر برای قرون آینده را ممکن می‌سازد. + +## مطالعه بیشتر درباره ReFi + +- [نگاه کلی به ارز های کربن و جایگاه آنها در اقتصاد](https://www.klimadao.finance/blog/the-vision-of-a-carbon-currency) +- [وزارت آینده، رمانی که نقش ارزهای دارای پشتوانه کربن در مقابله با تغییرات اقلیمی را شرح می‌دهد](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future) +- [یک گزارش مفصل از سوی Taskforce for Scaling Voluntary Carbon Markets](https://www.iif.com/Portals/1/Files/TSVCM_Report.pdf) +- [توضیح واژه نامه CoinMarketCap از Kevin Owocki و Evan Miyazono درباره ReFi](https://coinmarketcap.com/alexandria/glossary/regenerative-finance-refi) diff --git a/src/content/translations/fa/security/index.md b/src/content/translations/fa/security/index.md index accfe5edf0f..99801e54378 100644 --- a/src/content/translations/fa/security/index.md +++ b/src/content/translations/fa/security/index.md @@ -55,8 +55,8 @@ lang: fa - [Bitwarden](https://bitwarden.com/) - [KeePass](https://keepass.info/) -- [LastPass](https://www.lastpass.com/) - [1Password](https://1password.com/) +- و یا دیگر [نرم افزارهای مدیریت پسورد توصیه شده](https://www.privacytools.io/secure-password-manager) را بررسی کنید ### از احراز هویت دو عاملی استفاده کنید {#two-factor-authentication} @@ -133,7 +133,7 @@ lang: fa ### از کیف پول سخت‌افزاری استفاده کنید {#use-hardware-wallet} -کیف پول سخت‌افزاری یک حافظه‌ی آفلاین برای کلید خصوصی است. آن‌ها ایمن‌ترین نوع کیف پول برای نگه‌داری کلید خصوصی‌تان هستند. +کیف پول سخت‌افزاری یک حافظه‌ی آفلاین برای کلید خصوصی است. آنها امن ترین روش برای نگهداری امن کلید خصوصی کیف پول شما به حساب می آیند: کلید خصوصی شما هرگز به اینترنت متصل نمیشود و کاملا بر روی دستگاه محلی شما ذخیره میشود. نگهداری کلیدهای خصوصی به‌صورت آفلاین به شدت ریسک هک شدن را پایین می‌آورد، حتی اگر هکر بتواند کنترل کامپیوتر شما را به دست آورد. @@ -154,11 +154,13 @@ lang: fa بسیاری از کیف پول‌های اتریوم برای حفاظت کردن از حساب‌ها در مقابل خالی شدن، محافظت با وضع محدودیت را پیشنهاد می‌دهند. +[چطور دست رسی یک قرارداد هوشمند را به دارایی های خود ممنوع کنیم](/guides/how-to-revoke-token-access/) + ## کلاهبرداری‌های رایج {#common-scams} -کلاهبرداران همیشه به دنبال راهی برای دزدیدن سرمایه‌ی شما هستند. توقف کامل کلاهبرداران غیرممکن است، اما می‌توان با آگاهی از عمده‌ی تکنیک‌های مورد استفاده می‌توان تلاش آن‌ها را کم‌اثر کرد. روش‌های زیادی برای کلاهبرداری وجود دارد، اما آن‌ها به‌طور کلی الگوهای مشابهی را در سطح بالا دنبال می‌کنند. در هر صورت، به یاد داشته باشید: +کلاهبرداران همیشه به دنبال راهی برای دزدیدن پول شما هستند. مقابله کامل با کلاهبرداران غیرممکن است، اما با آگاهی از عمده‌ تکنیک‌های مورد استفاده می‌توان تلاش آن‌ها را کم‌اثر کرد. روش‌های زیادی برای کلاهبرداری وجود دارد، اما آن‌ها به‌طور کلی الگوهای سطح بالای مشابهی را دنبال می‌کنند. در هر صورت، به یاد داشته باشید: - همیشه محتاط باشید - هیچ‌کس نمی‌خواهد به شما اتریوم رایگان یا با تخفیف بدهد @@ -166,33 +168,33 @@ lang: fa ### کلاهبرداری ارسال هدیه {#giveaway} -یکی از شایع‌ترین انواع کلاهبرداری مربوط به ارزهای رمزنگاری‌شده، کلاهبرداری ارسال هدیه است. این کلاهبرداری انواع مختلفی دارد، اما وعده‌ی کلی به این صورت است که اگر به آدرس کیف پول گفته‌شده اتر بفرستید، دو برابر آن به شما برگردانده می‌شود. *به همین دلیل، به کلاهبرداری 2-برای-1 نیز معروف است.* +یکی از شایع‌ترین انواع کلاهبرداری مربوط به ارزهای رمزنگاری‌شده، کلاهبرداری ارسال هدیه است. این کلاهبرداری انواع مختلفی دارد، اما وعده‌ کلی به این صورت است که اگر به آدرس کیف پول گفته‌شده اتر بفرستید، دو برابر آن به شما برگردانده می‌شود. *به همین دلیل، به کلاهبرداری 2 به 1 نیز معروف است.* -این کلاهبرداری‌ها معمولاً ایده‌ی «مدت زمان محدود برای مطالبه جایزه» را طرح می‌کنند تا افرادی که قدرت تصمیم‌گیری ضعیفی دارند را با تلقین حس اضطرار نابه‌جا تهییج کنند. +این کلاهبرداری‌ها معمولاً ایده‌ «مدت زمان محدود برای مطالبه جایزه» را طرح می‌کنند تا افرادی را که قدرت تصمیم‌گیری ضعیفی دارند با تلقین حس اضطرار نابه‌جا تهییج کنند. #### هک شبکه‌های اجتماعی {#social-media-hacks} -یک مورد سطح بالای این نوع کلاهبرداری در ژوئیه 2020 اتفاق افتاد که حساب توییتر افراد مشهور و سازمان‌ها هک شدند. هکر به‌طور همزمان یک هدیه‌ی بیتکوینی در شبکه‌های هک‌شده را ارسال کرد. علی‌رغم اقدام سریع و حذف توییت، هکرها توانستند 11 بیت کوین (معادل 500،000 دلار در سپتامبر 2021) را به جیب بزنند. +یک مورد معروف این نوع کلاهبرداری در ژوئیه 2020 اتفاق افتاد که حساب توییتر افراد مشهور و سازمان‌ها هک شدند. هکر به‌طور همزمان یک هدیه‌ بیتکوینی را در شبکه‌های هک‌شده ارسال کرد. علی‌رغم اقدام سریع و حذف توییت‌های فریبنده، هکرها توانستند 11 بیت کوین (معادل 500،000 دلار در سپتامبر 2021) را به جیب بزنند. ![یک کلاهبرداری در توییتر](./appleTwitterScam.png) #### کلاهبرداری در قالب هدیه‌ی افراد مشهور {#celebrity-giveaway} -کلاهبرداری در قالب هدیه‌ی افراد مشهور یکی دیگر از انواع رایج کلاهبرداری هدیه است. کلاهبرداران یک مصاحبه‌ی ویدیویی ضبط‌شده یا سخرانی در همایش با حضور یک فرد مشهور را در یوتوب به‌صورت زنده پخش می‌کنند - جوری که به نظر برسد آن فرد مشهور یک مصاحبه‌ی ویدیویی زنده دارد که در آن هدیه‌ای در قالب ارز رمزنگاری‌شده را تأیید می‌کند. +کلاهبرداری در قالب هدیه‌ از افراد مشهور یکی دیگر از انواع رایج کلاهبرداری هدیه است. کلاهبرداران یک مصاحبه‌ ویدیویی ضبط‌شده یا سخنرانی در همایش با حضور یک فرد مشهور را در یوتوب به‌صورت زنده پخش می‌کنند - جوری که به نظر برسد آن فرد مشهور یک مصاحبه‌ ویدیویی زنده دارد که در آن هدیه‌ای در قالب ارز رمزنگاری‌شده را تأیید می‌کند. -ویتالیک بوترین بیشتر اوقات در این کلاهبرداری مورد استفاده قرار می‌گیرد، اما بسیاری از افراد مطرح دیگر در حوزه‌ی ارزهای رمزنگاری‌شده نیز استفاده می‌شوند (مثال ایلان ماسک و چارلز هاسکینسون). دخیل کردن یک فرد بسیار مشهور می‌تواند به پخش زنده‌ی ویدیویی کلاهبرداران نوعی حس مشروعیت ببخشد (به نظر بودار می‌آید، اما پای ویتالیک هم وسط است، پس نباید مشکلی باشد!). +ویتالیک بوترین بیشتر اوقات در این کلاهبرداری مورد استفاده قرار می‌گیرد، اما بسیاری از افراد مطرح دیگر در حوزه‌ ارزهای رمزنگاری‌شده نیز استفاده می‌شوند (مثال ایلان ماسک و چارلز هاسکینسون). دخیل کردن یک فرد بسیار مشهور می‌تواند به پخش زنده‌ ویدیویی کلاهبرداران نوعی حس مشروعیت ببخشد (به نظر بودار می‌آید، اما پای ویتالیک هم وسط است، پس نباید مشکلی باشد!). -**هدیه‌ها همواره کلاهبرداری هستند. اگر شما سرمایه‌تان را به این حساب‌ها بفرستید، آن را برای همیشه از دست خواهید داد.** +**هدیه‌ها همیشه کلاهبرداری هستند. اگر پول‌تان را به این حساب‌ها بفرستید، آن را برای همیشه از دست خواهید داد.** ![یک کلاهبرداری در یوتوب](./youtubeScam.png) ### کلاهبرداری پشتیبانی {#support-scams} -ارز رمزنگاری شده یک فناوری نسبتاً نوپا است که خیلی وقت‌ها درست فهمیده نمی‌شود. یکی از کلاهبرداری‌های رایج که از این موضوع سوء استفاده می‌کند کلاهبرداری پشتیبانی است که در آن، کلاهبرداران خود را به‌عنوان عامل پشتیبانی کیف پول‌ها، صرافی‌ها یا زنجیره‌های بلوکی شناخته‌شده جا می‌زند. +ارز رمزنگاری شده یک فناوری نسبتاً نوپا است که خیلی وقت‌ها درست فهمیده نمی‌شود. یکی از کلاهبرداری‌های رایج که از این موضوع سوء استفاده می‌کند کلاهبرداری پشتیبانی است که در آن، کلاهبرداران خود را به‌عنوان عامل پشتیبانی کیف پول‌ها، صرافی‌ها یا بلاک‌چین‌های شناخته‌شده جا می‌زند. -اکثر بحث و گفتگوها درباره‌ی اتریوم روی دیسکورد انجام می‌شود. کلاهبرداران پشتیبانی معمولاً اهداف خود را با جستجوی کسانی که در کانال‌های عمومی دیسکورد سؤالات مربوط به پشتیبانی مطرح می‌کنند پیدا می‌کنند، و سپس جهت ارائه‌ی پشتیبانی به آن‌ها پیام خصوصی می‌فرستند. کلاهبرداران پشتیبانی با اعتمادسازی سعی می‌کنند شما را فریب دهند تا کلید خصوصی‌تان را افشا کنید یا سرمایه‌تان را به کیف پول آن‌ها بفرستید. +اکثر بحث و گفتگوها درباره‌ اتریوم روی Discord انجام می‌شود. کلاهبرداران پشتیبانی معمولاً افراد هدف خود را با جستجوی کسانی که در کانال‌های عمومی Discord سؤالات مربوط به پشتیبانی مطرح می‌کنند پیدا می‌کنند، و سپس جهت ارائه‌ پشتیبانی به آن‌ها پیام خصوصی می‌فرستند. کلاهبرداران پشتیبانی با اعتمادسازی سعی می‌کنند شما را فریب دهند تا کلید خصوصی‌تان را افشا کنید یا پول‌تان را به کیف پول آن‌ها بفرستید. -![یک کلاهبرداری پشتیبانی در دیسکورد](./discordScam.png) +![یک کلاهبرداری پشتیبانی در Discord](./discordScam.png) به‌عنوان یک قانون کلی، کارکنان هرگز ار راه‌های خصوصی و غیررسمی با شما ارتباط برقرار نمی‌کنند. چند نکته‌ی ساده که در برخورد با کلاهبرداری پشتیبانی باید در ذهن داشت از این قرار است: @@ -206,11 +208,19 @@ lang: fa +### کلاهبرداری توکن 'Eth2' {#eth2-token-scam} + +در آستانه [ادغام](/roadmap/merge/)، کلاهبرداران از سردرگمی در مورد عبارت "Eth2" استفاده کردند و سعی کردند کاربران را وادار کنند که ETH خود را در قبال "ETH2" بازخرید کنند. هیچ «ETH2» وجود ندارد، و هیچ توکن قانونی دیگری با The Merge معرفی نشد. ETH که قبل از The Merge مالک آن بودید، اکنون همان ETH است. **نیازی به انجام هیچ گونه اقدام در رابطه با اتریوم شما برای محاسبه تغییر از اثبات کار به اثبات سهام وجود ندارد**. + +کلاهبرداران ممکن است به عنوان "پشتیبانی" ظاهر شوند و به شما می گویند که اگر ETH خود را واریز کنید، "ETH2" پس خواهید گرفت. [پشتیبانی رسمی اتریوم](/community/support/) وجود خارجی ندارد و هیچ توکن جدیدی در کار نیست. هرگز عبارت بذر کیف پول خود را با کسی به‌ اشتراک نگذارید. + +_توجه: توکن‌ها/تیکرهای مشتقی وجود دارند که ممکن است نشان‌دهنده اتر سهام گذاری‌شده (یعنی rETH از استخر Rocket و stETH از Lido و ETH2 از Coinbase) باشد، اما این‌ها چیزی نیستند که شما نیاز به «مهاجرت به آن» داشته باشید._ + ### کلاهبرداری فیشینگ {#phishing-scams} -کلاهبرداری فیشینگ روش در حال رواج دیگری بین کلاهبرداران است که سعی می‌کنند از طریق آن موجودی کیف پول شما را بدزدند. +کلاهبرداری‌های فیشینگ روش در حال رواج دیگری بین کلاهبرداران است که سعی می‌کنند از طریق آن موجودی کیف پول شما را بدزدند. -برخی ایمیل‌های فیشینگ از کاربران می‌خواهند روی پیوندهایی کلیک کنند که آن‌ها را به سایت‌هایی می‌برد که از آن‌ها می‌خواهد عبارت seed را وارد کنند، گذرواژه‌شان را بازیابی کنند یا اتر بفرستند. برخی دیگر ممکن است از شما بخواهند که ناآگاهانه بدافزاری را نصب کنید تا کامپیوترتان را آلوده کند و دسترسی به فایل‌هایتان را در اختیار کلاهبرداران قرار بدهد. +برخی ایمیل‌های فیشینگ از کاربران می‌خواهند روی لینک‌هایی کلیک کنند که آن‌ها را به سایت‌هایی می‌برند که از آن‌ها می‌خواهد عبارت بذر را وارد کنند، گذرواژه‌شان را بازیابی کنند یا اتر بفرستند. برخی دیگر ممکن است از شما بخواهند ناآگاهانه بدافزاری را نصب کنید تا کامپیوترتان را آلوده کند و دسترسی به فایل‌هایتان را در اختیار کلاهبرداران قرار بدهد. اگر ایمیلی از فرستنده‌ای ناشناس دریافت کردید، به یاد داشته باشید: @@ -218,21 +228,21 @@ lang: fa - هیچ‌گاه گذرواژه‌ یا اطلاعات شخصی‌تان را برای کسی فاش نکنید - ایمیل‌های افراد ناشناس را پاک کنید -[اطلاعات بیشتر درباره‌ی کلاهبرداری فیشینگ](https://support.mycrypto.com/staying-safe/mycrypto-protips-how-not-to-get-scammed-during-ico) +[اطلاعات بیشتر درباره‌ پرهیز از کلاهبرداری فیشینگ](https://support.mycrypto.com/staying-safe/mycrypto-protips-how-not-to-get-scammed-during-ico) -### کلاهبرداری کارگزاری‌های معامله‌ی ارزهای رمزنگاری‌شده {#broker-scams} +### کلاهبرداری کارگزاری‌ معامله‌ ارزهای رمزنگاری‌شده {#broker-scams} -کارگزاری‌های معامله‌ی ارزهای رمزنگاری‌شده کلاهبردار ادعا می‌کنند که کارگزاری تخصصی ارزهای رمزنگاری شده هستند و به شما پیشنهاد می‌دهند که پولتان را بگیرند و به‌جای شما سرمایه‌گذاری کنند. قول بازگشت سرمایه‌ی غیرواقعی نیز این به‌همراه این پیشنهاد مطرح می‌شود. پس از آن که کلاهبردار سرمایه‌ی شما را گرفت، ممکن است رفتار شما را هدایت کند و از شما بخواهند سرمایه‌ی بیشتری به آن‌ها بدهید تا از دریافت سود بیشتر جا نمانید، یا اینکه ممکن است به‌کلی ناپدید شوند. +کارگزارهای تقلبی معامله‌ ارزهای رمزنگاری‌شده ادعا می‌کنند که کارگزار تخصصی ارزهای رمزنگاری شده هستند و به شما پیشنهاد می‌دهند که پولتان را بگیرند و به‌ جای شما سرمایه‌گذاری کنند. قول بازگشت سرمایه‌ غیرواقعی نیز به‌ همراه این پیشنهاد مطرح می‌شود. پس از آن که کلاهبردار سرمایه‌ شما را گرفت، ممکن است رفتار شما را هدایت کند و از شما بخواهد سرمایه‌ بیشتری به آن‌ها بدهید تا از دریافت سود بیشتر جا نمانید، یا اینکه ممکن است به‌ کلی ناپدید شوند. -این کارگزاری‌های جعلی با استفاده از حساب‌های جعلی در یوتوب اهداف خود را پیدا می‌کنند تا بتوانند در مورد کارگزاری شان یک صحبت به نظر طبیعی داشته باشند. این صحبت‌ها عموماR به شدت رای مثبت دریافت می‌کنند تا وجهه‌ی آن‌ها بهتر نشان داده شود اما این رأی‌های مثبت از طرف حساب‌های روباتی هستند. +این کارگزاری‌های جعلی با استفاده از حساب‌های جعلی در یوتیوب اهداف خود را پیدا می‌کنند تا بتوانند در مورد کارگزاری شان یک صحبت ظاهرا طبیعی داشته باشند. این صحبت‌ها عموما به شدت رای مثبت دریافت می‌کنند تا وجهه‌ آن‌ها بهتر نشان داده شود اما این رأی‌های مثبت از طرف حساب‌های روباتی هستند. **به غریبه‌های اینترنتی برای سرمایه‌گذاری به‌جای خودتان اعتماد نکنید. ارز رمزنگاری‌شده خود را از دست خواهید داد.** -![یک کلاهبرداری کارگزاری معاملاتی در یوتوب](./brokerScam.png) +![یک کلاهبرداری کارگزاری معاملاتی در یوتیوب](./brokerScam.png) -### کلاهبرداری استخر استخراج ارز رمزنگاری‌شده {#mining-pool-scams} +### کلاهبرداری‌های استخر استخراج ارز رمزنگاری‌شده {#mining-pool-scams} -در کلاهبرداری استخر استخراج، افرادی بدون اینکه خواسته باشید با شما ارتباط برقرار می‌کنند و ادعا می‌کنند که می‌توانید با پیوستند به استخر استخراج اتریوم سود زیادی کسب کنید. کلاهبردار ادعاهایی را مطرح می‌کند و تا وقتی لازم باشد با شما در ارتباط باقی می‌ماند. اساساً کلاهبردار شما را قانع می‌کند که اگر به استخر استخراج اتریوم بپیوندید، ارزهای رمزنگاری‌شده‌تان برای ساخت اتر استفاده خواهد شد و شما سود خود را به شکل اتر دریافت خواهید کرد. آن چه نهایتاً اتفاق می‌افتد این است که متوجه می‌شوید ارزهای رمزنگاری شده‌تان بازگشت سرمایه‌ی بسیار کمی دارند. هدف صرفاً ترغیب کردن شما به سرمایه‌گذاری بیشتر است. در نهایت، همه‌ی سرمایه‌ی شما به یک آدرس ناشناس فرستاده می‌شود و کلاهبردار ناپدید می‌شود یا در برخی موارد در دسترس می‌ماند، همان‌طور که در یک مورد جدید این اتفاق افتاد. +از سپتامبر 2022، استخراج در اتریوم دیگر امکان پذیر نیست. با این حال، کلاهبرداری استخر استخراج هنوز وجود دارد. کلاهبرداری استخر استخراج از افرادی سر می‌زند که به طور ناخواسته با شما تماس می گیرند و ادعا می کنند که می توانید با پیوستن به یک استخر استخراج اتریوم بازدهی زیادی داشته باشید. کلاهبردار ادعاهایی را مطرح می‌کند و تا وقتی لازم باشد با شما در ارتباط باقی می‌ماند. اساساً کلاهبردار شما را قانع می‌کند که اگر به استخر استخراج اتریوم بپیوندید، ارزهای رمزنگاری‌شده‌تان برای ساخت اتر استفاده خواهد شد و شما سود خود را به شکل اتر دریافت خواهید کرد. آن چه نهایتاً اتفاق می‌افتد این است که متوجه می‌شوید ارزهای رمزنگاری شده‌تان بازگشت سرمایه‌ی بسیار کمی دارند. هدف صرفاً ترغیب کردن شما به سرمایه‌گذاری بیشتر است. در نهایت، تمام وجوه شما به یک آدرس نامعلوم ارسال می‌شود و کلاهبردار یا ناپدید می‌شود یا در برخی موارد مانند یک مورد اخیر در تماس باقی می‌ماند. جان کلام، مراقب افرادی باشید که در رسانه‌های اجتماعی به شما پیام می‌دهند و از شما می‌خواهند عضو یک استخر استخراج شوید. وقتی ارز رمزنگاری‌شده‌تان را از دست بدهید، دیگر نمی‌توان آن را برگرداند. @@ -244,19 +254,11 @@ lang: fa [مردی 200 هزار دلار را در یک کلاهبرداری استخر استخراج از دست داد](https://www.reddit.com/r/CoinBase/comments/r0qe0e/scam_or_possible_incredible_payout/) -### کلاهبرداری توکن Eth2 {#eth2-token-scam} - -با توجه به این که [ادغام](/roadmap/merge/) قرار است در سال 2022 انجام شود، کلاهبرداران از سردرگمی حول نام «Eth2» سوءاستفاده می‌کنند و سعی می‌کنند کاربران را قانع می‌کنند که توکن‌های ETH خود را با توکن «ETH2» تعویض نمایند. هیچ توکنی به نام «ETH2» یا هر توکن دیگری با ادغام معرفی نخواهد شد. اِتری که امروز مالک آن هستید همان اتری خواهد بود که بعد از ادغام مالک آن خواهید بود، و هیچ نیازی به تعویض توکن‌های ETH برای ادغام وجود نخواهد داشت. - -کلاهبرداران ممکن است در پوشش «پشتیبانی» ظاهر شوند و به شما بگویند اگر توکن‌های ETH خود را به آن‌ها بفرستید، در ازای آن «ETH2» دریافت خواهید کرد. [پشتیبانی رسمی اتریوم](/community/support/) وجود خارجی ندارد و هیچ توکن جدیدی در کار نیست. هرگز عبارت seed خود را با کسی به‌اشتراک نگذارید. - -_توجه: توکن‌های مشتقی وجود دارند که ممکن است نشان‌دهنده اتر سهام گذاری‌شده (یعنی rETH از استخر Rocket و stETH از Lido و ETH2 از Coinbase) باشد، اما این‌ها چیزی نیستند که شما نیاز به «مهاجرت به آن» داشته باشید._ - ### کلاهبرداری ایردراپ {#airdrop-scams} -کلاهبرداری ایردراپ پروژه‌های جعلی‌ای هستند که یک دارایی (NFT، توکن) را به کیف پول شما ایردراپ می‌کنند و شما را به یک وب‌سایت کلاهبرداری هدایت می‌کنند تا دارایی ایردراپ‌شده را دریافت کنید. از شما خواسته می‌شود که با کیف پول اتریومتان وارد وب‌سایت شوید و با یک تراکنش برای پذیرش آن دارایی «موافقت کنید». این تراکنش با فرستادن کلیدهای خصوصی و عمومی شما به کلاهبردار، حسابتان را فاش می‌کند. شکل دیگر این کلاهبرداری این‌گونه است که شما تراکنشی را تأیید کنید که مبلغی را به حساب کلاهبردار واریز کند. +کلاهبرداری‌های ایردراپ پروژه‌های جعلی‌ای هستند که یک دارایی (NFT، توکن) را به کیف پول شما ایردراپ می‌کنند و شما را به یک وب‌سایت کلاهبرداری هدایت می‌کنند تا دارایی ایردراپ‌شده را دریافت کنید. از شما خواسته می‌شود که با کیف پول اتریومتان وارد وب‌سایت شوید و با یک تراکنش برای پذیرش آن دارایی «موافقت کنید». این تراکنش با فرستادن کلیدهای خصوصی و عمومی شما به کلاهبردار، حسابتان را فاش می‌کند. شکل دیگر این کلاهبرداری این‌گونه است که شما تراکنشی را تأیید کنید که مبلغی را به حساب کلاهبردار واریز می‌کند. -[اطلاعات بیشتر درباره‌ی کلاهبرداری ایردراپ](https://www.youtube.com/watch?v=LLL_nQp1lGk) +[اطلاعات بیشتر درباره‌ کلاهبرداری ایردراپ](https://www.youtube.com/watch?v=LLL_nQp1lGk) @@ -265,7 +267,7 @@ _توجه: توکن‌های مشتقی وجود دارند که ممکن است ### امنیت وب {#reading-web-security} - [به این دلیل نباید از پیامک برای احراز هویت دو عاملی استفاده کنید](https://www.theverge.com/2017/9/18/16328172/sms-two-factor-authentication-hack-password-bitcoin) - _The Verge_ -- [نزدیک به 3 میلیون دستگاه به بدافزاری روی افزونه‌های Chrome و Edge آلوده شدند](https://arstechnica.com/information-technology/2020/12/up-to-3-million-devices-infected-by-malware-laced-chrome-and-edge-add-ons/) - _دن گودین_ +- [نزدیک به 3 میلیون دستگاه به بدافزاری روی افزونه‌های Chrome و Edge آلوده شدند](https://arstechnica.com/information-technology/2020/12/up-to-3-million-devices-infected-by-malware-laced-chrome-and-edge-add-ons/) - _ دن گودین_ - [چگونه گذرواژه‌ای قوی بسازیم که فراموش نکنیم](https://www.avg.com/en/signal/how-to-create-a-strong-password-that-you-wont-forget) - _AVG_ - [کلید امنیتی چیست؟](https://help.coinbase.com/en/coinbase/getting-started/verify-my-account/security-keys-faq) - _Coinbase_ @@ -278,5 +280,9 @@ _توجه: توکن‌های مشتقی وجود دارند که ممکن است ### آموزش علیه کلاهبرداری {#reading-scam-education} +- [راهنما: تشخیص توکن های کلاهبرداری](/guides/how-to-id-scam-tokens/) - [ایمن ماندن: کلاهبرداری‌های رایج](https://support.mycrypto.com/staying-safe/common-scams) - _MyCrypto_ - [جلوگیری از کلاهبرداری](https://bitcoin.org/en/scams) - _Bitcoin.org_ +- [رشته توییتر در ایمیل‌ها و پیام‌های رایج فیشینگ رمزنگاری](https://twitter.com/tayvano_/status/1516225457640787969) - _تیلور موناهان_ + + diff --git a/src/content/translations/fa/smart-contracts/index.md b/src/content/translations/fa/smart-contracts/index.md index 418e4cc22e8..d6c6acd80fc 100644 --- a/src/content/translations/fa/smart-contracts/index.md +++ b/src/content/translations/fa/smart-contracts/index.md @@ -6,19 +6,13 @@ lang: fa # مقدمه‌ای بر قراردادهای هوشمند {#introduction-to-smart-contracts} -قراردادهای هوشمند بلوک‌های زیربنای سازنده‌ی [برنامه‌های اتریوم](/dapps/) هستند. آنها برنامه های کامپیوتری ذخیره شده روی بلاک چین هستند که امکان تبدیل قراردادهای سنتی به موازی های دیجیتال را فراهم می کنند. قراردادهای هوشمند بسیار منطقی بوده و از یک روال ساختارمند اگر-آنگاه استفاده می‌کنند. بدان معنا که دقیقاً به همان شیوه‌ای که کدنویسی شده اند عمل می‌کنند و غیرقابل تغییر هستند. +قرارداد های هوشمند بنیادی‌ترین اجزای سازنده لایه اپلیکیشن اتریوم هستند. آن ها برنامه های کامپیوتری دخیره شده بر روی بستر بلاکچین هستند که از منطق "اگر این بنابراین آن" پیروی می کنند و تضمین می شوند که بر اساس قوانین تعریف شده از سوی کد آن اجرا شوند و زمانی که ایجاد شدند دیگر قابل تغییر نخواهند بود. -نیک سابو برای اولین بار آن‌ها را «قرارداد هوشمند» نامید. در سال 1994، او [مقدمه‌ای بر مفهوم](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html) و در سال 1996 [کاوشی در مورد آنچه که قراردادهای هوشمند می‌توانند انجام دهند](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html) را نوشت. +نیک سابو برای اولین بار آن‌ها را «قرارداد هوشمند» نامید. او در سال 1994 اینگونه نوشت [مقدمه ای بر مفهوم قرارداد های هوشمند](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html)، و در 1996 نوشت [کاوشی بر آنچه قرارداد های هوشمند می توانند انجام دهند](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html). -نیک سابو یک بازار دیجیتالی را تجسم کرده بود که بر اساس این فرایندهای خودکار و امن رمزنگاری شده است. مکانی که در آن تراکنش‌ها و عملکردهای تجاری می‌توانند بدون اعتماد انجام شوند - بدون واسطه. قراردادهای هوشمند در اتریوم به این تجسم جامه‌ی عمل می‌پوشانند. +سابو یک بازار دیجیتال را تجسم کرد که در آن فرایندهای خودکار و امن از نظر رمزنگاری، تراکنش ها و وظایف کسب و کار را قادر می‌سازند بدون واسطه های مورد اعتماد رخ دهند. قراردادهای هوشمند در اتریوم به این تجسم جامه‌ عمل می‌پوشانند. -## قرارداد چیست؟ {#what-are-contracts} - -احتمالاً فکر می‌‌کنید:_ «من وکیل نیستم! چرا به قراردادها اهمیت بدهم؟»_. برای اکثر مردم، قراردادها توافق‌نامه‌های طولانی‌مدت و یا اسناد حقوقی خسته‌کننده را به ذهن متبادر می‌کنند. - -قرارداد همان توافق است. یعنی هر شکلی از توافق را می‌توان در قالب یک قرارداد گنجاند. توافقات شفاهی یا قراردادهایی که روی کاغذ نوشته می‌شوند برای خیلی چیزها قابل‌قبول هستند، اما بی‌نقص نیستند. - -### اعتماد و قرارداد {#trust-and-contracts} +### اعتماد در قراردادهای متعارف {#trust-and-contracts} یکی از بزرگترین مشکلات قراردادهای سنتی، نیاز به افراد مورد اعتماد برای پیگیری نتایج قرارداد است. @@ -28,49 +22,45 @@ lang: fa این مثال احمقانه، مشکل هر نوع توافق غیرهوشمند را نشان می‌دهد. حتی اگر شرایط توافق برآورده شود (یعنی شما برنده مسابقه شده باشید)، همچنان باید به شخص دیگری برای اجرای توافق اعتماد کنید (یعنی پرداخت مبلغ شرط‌بندی). -## قرارداد‌های هوشمند {#smart-contracts} - -قراردادهای هوشمند، قراردادها را دیجیتالی می‌کنند و شرایط یک قرارداد را به کد رایانه‌ای تبدیل می‌کنند که در صورت تحقق شرایط قرارداد، به‌طور خودکار اجرا می‌شود. - ### یک دستگاه فروش دیجیتال {#vending-machine} یک مثال ساده برای قرارداد هوشمند، دستگاه فروش خودکار است که تا حدودی شبیه به قرارداد هوشمند عمل می‌کند - ورودی‌های خاص خروجی‌های از پیش تعیین شده را تضمین می‌کنند. - شما یک محصول را انتخاب می‌کنید -- دستگاه فروش خودکار مبلغ مورد نیاز برای خرید محصول را نشان می‌دهد -- شما مبلغ لازم را پرداخت می‌کنید -- دستگاه فروش خودکار تأیید می‌کند که شما مبلغ لازم را پرداخت کرده‌اید -- دستگاه فروش خودکار محصول مورد نظر را به شما می‌دهد +- دستگاه فروش خودکار قیمت را نشان می دهد +- شما بهای آن را پرداخت می کنید +- دستگاه فروش خودکار تایید می کند که شما مبلغ درستی را پرداخت کرده اید +- وندینگ ماشین جنس را به شما می دهد -دستگاه فروش خودکار فقط پس از برآورده شدن تمام الزامات محصول مورد نظر را به شما می‌دهد. اگر محصولی را انتخاب نکنید یا پول کافی پرداخت نکنید، دستگاه فروش خودکار محصول را به شما تحویل نمی‌دهد. +دستگاه فروش خودکار فقط پس از برآورده شدن تمام الزامات، محصول مورد نظر را به شما می‌دهد. اگر محصولی را انتخاب نکنید یا پول کافی پرداخت نکنید، دستگاه فروش خودکار محصول را به شما تحویل نمی‌دهد. ### اجرای خودکار {#automation} -یکی از مهمترین مزایای قراردادهای هوشمند نسبت به قراردادهای معمولی این است که با تحقق شرایط قرارداد، نتیجه به‌طور خودکار اجرا می‌شود. نیازی نیست منتظر بمانید تا انسان نتیجه را اجرا کند. به عبارت دیگر: قراردادهای هوشمند نیاز به اعتماد را حذف می‌کند. +مزیت اصلی قراردادهوشمند این است که زمانی که شرایط مشخص موجود باشد، کد دستوری واضح و غیر مبهم را به طور قطعی اجرا می کند. نیازی نیست منتظر ماند تا انسان نتیجه را تفسیر یا راجع به آن مذاکره کند. این امر، نیاز به واسطه قابل اعتماد را از بین میبرد. -به‌عنوان مثال، می‌توانید یک قرارداد هوشمند بنویسید که مبلغی را برای یک کودک نگه دارد و به او اجازه دهد پس از یک تاریخ خاص مبلغ را برداشت کند. اگر او سعی کند وجه را قبل از تاریخ مشخص شده برداشت کند، قرارداد هوشمند اجرا نمیشود. یا می‌توانید قراردادی بنویسید که نسخه‌ی دیجیتالی سند خودرو را هنگام پرداخت ثمن معامله به فروشنده به‌طور خودکار به شما بدهد. +به‌عنوان مثال، می‌توانید یک قرارداد هوشمند بنویسید که مبلغی را برای یک کودک نزد شخص ثالث نگه دارد و به او اجازه دهد پس از یک تاریخ خاص مبلغ را برداشت کند. اگر سعی کند وجه را قبل از تاریخ مشخص شده برداشت کند، قرارداد هوشمند اجرا نمیشود. یا می‌توانید قراردادی بنویسید که نسخه‌ی دیجیتالی سند خودرو را هنگام پرداخت قیمت معامله به فروشنده به‌طور خودکار به شما بدهد. ### خروجی‌های قابل پیش‌بینی {#predictability} -عامل انسانی یکی از بزرگترین نقاط شکست قراردادهای سنتی است. برای مثال، دو قاضی ممکن است یک قرارداد سنتی را به طرق مختلف تفسیر کنند. تفاسیر آن‌ها می‌تواند منجر به آرا و نتایج متفاوت شود. قرارداد هوشمند امکان تفاسیر مختلف را از بین می‌برد. برخلاف قراردادهای سنتی، قراردادهای هوشمند دقیقاً بر اساس شرایط نوشته شده در کد قرارداد اجرا می‌شوند. این دقت به این معنی است که در شرایط یکسان، قرارداد هوشمند نتیجه یکسان را به همراه خواهد داشت. +قراردادهای سنتی مبهم هستند زیرا تفسیر و اجرای آنها به عهده انسان است. برای مثال، دو قاضی ممکن است تفسیر متفاوتی از یک قرارداد یکسان داشته باشند،که میتواند منجر به تصمیمات ناسازگار و نتیجه نهایی نابرابر شود. قراردادهای هوشمند این احتمال را از بین میبرند. در عوض، قراردادهای هوشمند دقیقاً بر اساس شرایط نوشته شده در کد قرارداد اجرا می‌شوند. این دقت به این معنی است که در شرایط یکسان، قرارداد هوشمند نتیجه یکسان را به همراه خواهد داشت. ### سابقه‌ی عمومی {#public-record} -قراردادهای هوشمند برای ممیزی و ردیابی هم مفید هستند. از آنجایی که قراردادهای هوشمند اتریوم بر روی یک زنجیره‌‌ی بلوکی عمومی قرار دارند، هر کسی می‌تواند فوراً انتقال دارایی‌ها و سایر اطلاعات مرتبط را ردیابی کند. مثلاً می‌توانید بررسی کنید که شخصی به آدرس شما پول ارسال کرده است یا نه. +قراردادهای هوشمند برای حسابرسی و ردیابی مفید هستند. از آنجایی که قراردادهای هوشمند اتریوم بر روی یک بلاکچین عمومی قرار دارند، هر کس می‌تواند فوراً انتقال دارایی‌ها و سایر اطلاعات مرتبط را ردیابی کند. برای مثال، شما میتوانید چک کنید که آیا کسی به آدرس شما پول فرستاده است یا نه. ### حفاظت از حریم خصوصی {#privacy-protection} -قراردادهای هوشمند همچنین می‌توانند از حریم خصوصی ما محافظت کنند. از آنجایی که اتریوم یک شبکه‌ی مستعار است (تراکنش‌های شما به‌صورت عمومی به یک آدرس رمزنگاری منحصربه‌فرد مرتبط است، نه هویت شما)، می‌توانید از حریم خصوصی خود در برابر ناظران محافظت کنید. +قراردادهای هوشمند همچنین می‌توانند از حریم خصوصی شما محافظت کنند. از آنجا که اتریوم یک شبکه‌ مستعار است (تراکنش‌های شما به‌صورت عمومی به یک آدرس رمزنگاری منحصربه‌فرد مرتبط هستند، نه هویت شما)، می‌توانید از حریم خصوصی خود در برابر ناظران محافظت کنید. ### قوانین مشخص {#visible-terms} -در نهایت، مانند قراردادهای عادی، شما قبل از امضای قرارداد هوشمند (یا هر نوع تعامل دیگر با آن) می‌توانید محتوای آن را بررسی نمایید. از این بهتر، شفافیت عمومی قوانین قرارداد به این معنی است که هر کسی می‌تواند آن را بررسی کند. +در نهایت، مانند قراردادهای سنتی، شما قبل از امضای قرارداد هوشمند (یا هر نوع تعامل دیگر با آن) می‌توانید محتوای آن را بررسی نمایید. بخاطر شفافیت قراردادهای هوشمند میتوان آنها را موشکافانه بررسی کرد. ## کاربردهای قراردادهای هوشمند {#use-cases} -خب، قراردادهای هوشمند برنامه‌های رایانه‌ای بر بستر زنجیره‌‌ی بلوکی هستند. آن‌ها می‌توانند به صورت خودکار اجرا شوند. شما قادرید روال اجرای تراکنش‌های آن ها را دنبال کنید، نحوه‌ی رفتارشان را پیش‌بینی کرده و به‌صورت دلخواه از آن‌ها استفاده کنید. جالب است، نه؟ ولی فایده‌ی آن چیست؟ خب، قراردادهای هوشمند اصولاً قادرند هر کار دیگری که توسط رایانه‌ها قابل انجام است را انجام دهند. +قراردادهای هوشمند اصولاً قادرند هر کاری را که توسط نرم‌افزارهای رایانه‌ای قابل انجام است انجام دهند. -این کار دیگر می‌تواند انجام محاسبات، ایجاد یکای پولی، ذخیره‌ی داده، استخراج توکن‌های غیرقابل معاوضه، برقراری ارتباط یا حتی ایجاد تصاویر گرافیکی باشد. در ادامه چند مثال از دنیای واقعی آورده شده است: +این کار دیگر می‌تواند انجام محاسبات، ایجاد واحد پولی، ذخیره‌ داده، استخراج توکن‌های غیرقابل معاوضه، برقراری ارتباط یا حتی ایجاد تصاویر گرافیکی باشد. در ادامه چند مثال معمول از دنیای واقعی آورده شده است: - [پایدارزها](/stablecoins/) - [ایجاد و توزیع دارایی‌های یکتای دیجیتال](/nft/) @@ -79,7 +69,7 @@ lang: fa - [یک بیمه‌نامه که به‌صورت خودکار پرداخت می‌کند.](https://etherisc.com/) - [استانداردی که به افراد امکان می‌دهد ارزهای سفارشی‌شده و قابل تعامل ایجاد کنند](/developers/docs/standards/tokens/) -## با تصویر راحت‌تر یاد می‌گیرید؟ {#visual-learner} +## فردی هستید که با توضیحات تصویری راحت‌ترید؟ {#visual-learner} Watch Finematics قراردادهای هوشمند را توضیح می‌دهد: diff --git a/src/content/translations/fa/social-networks/index.md b/src/content/translations/fa/social-networks/index.md index 0c9887a8419..6159583d7b1 100644 --- a/src/content/translations/fa/social-networks/index.md +++ b/src/content/translations/fa/social-networks/index.md @@ -71,7 +71,7 @@ summaryPoint3: توکن ها و نیفتی ها راه های جدیدی برا ## شبکه های اجتماعی Web2 در اتریوم {#web2-social-networks-and-ethereum} -پلتفرم‌های اجتماعی بومی [ Web3](/web3/) تنها پلتفرم‌هایی نیستند که تلاش می‌کنند فناوری بلاک چین را در رسانه‌های اجتماعی بگنجانند. بسیاری از پلتفرم های متمرکز نیز در حال برنامه ریزی برای ادغام اتریوم در زیرساخت خود هستند: +پلتفرم‌های اجتماعی بومی [Web3](/web3/) تنها پلتفرم‌هایی نیستند که تلاش می‌کنند فناوری بلاک چین را در رسانه‌های اجتماعی بگنجانند. بسیاری از پلتفرم های متمرکز نیز در حال برنامه ریزی برای ادغام اتریوم در زیرساخت خود هستند: ### Reddit {#reddit} diff --git a/src/content/translations/fa/staking/dvt/index.md b/src/content/translations/fa/staking/dvt/index.md new file mode 100644 index 00000000000..dcd9caa4580 --- /dev/null +++ b/src/content/translations/fa/staking/dvt/index.md @@ -0,0 +1,91 @@ +--- +title: فناوری اعتبارسنج توزیع‌شده +description: فناوری اعتبارسنج توزیع شده عملیات توزیع شده یک اعتبارسنج اتریوم را توسط چندین شخص فعال می کند. +lang: fa +--- + +# فناوری اعتبارسنج توزیع‌شده {#distributed-validator-technology} + +فناوری اعتبارسنج توزیع‌شده (DVT) یک روش امنیت‌بخشی به اعتبارسنج است که وظایف مدیریت کلید‌ها و امضای دیجیتال را در میان طرف‌های چندگانه پخش می‌کند تا از نقاط شکست واحد بکاهد و انعطاف اعتبارسنج را افزایش دهد. + +این کار را با **تقسیم کلید خصوصی** مورد استفاده برای امنیت‌ اعتبارسنج **بین تعداد زیادی کامپیوتر** که در یک «خوشه» سازمان‌دهی شده‌اند، انجام می‌دهد. مزیت این فناوری در این است که دست‌یابی به کلید را برای هکرها بسیار دشوار می‌کند زیرا کلید به شکل کامل روی یک دستگاه واحد ذخیره نمی‌شود. همچنین اجازه می‌دهد که برخی از گره‌ها آفلاین باشند به این علت که امضاهای لازم می‌توانند توسط زیرمجموعه‌ای از گره‌ها در هر خوشه انجام شوند. این امر، نقاط شکست واحد در شبکه را کاهش می‌دهد و کل مجموعۀ اعتبارسنج را مستحکم‌تر می‌سازد. + +![نمودار نشان می‌دهد چگونه یک کلید اعتبارسنج به تکه‌کلیدها تقسیم می‌شود و به چندین گره با اجزای گوناگون توزیع می‌شود.](./dvt-cluster.png) + +## چرا به فناوری اعتبارسنج توزیع‌شده نیاز داریم؟ {#why-do-we-need-dvt} + +### ایمنی {#security} + +اعتبارسنج‌ها دو جفت کلید عمومی- خصوصی می‌سازند: کلیدهای اعتبارسنجی برای مشارکت در اجماع و کلیدهای برداشت برای دسترسی به وجوه. در حالی که اعتبارسنج‌ها می‌توانند با ذخیره‌سازی سرد از امنیت کلیدهای برداشت اطمینان حاصل کنند، کلیدهای اعتبارسنجی باید به صورت 24/7 آنلاین باشند. در صورتی که یک کلید اعتبارسنج معیوب باشد، مهاجم می‌تواند کنترل گره اعتبارسنج را به دست گیرد و احتمال اسلشینگ یا از دست رفتن اتر سهام‌گذار افزایش می‌یابد. فناوری اعتبارسنج توزیع‌شده به حذف این ریسک کمک می‌کند. به این شکل: + +با استفاده از فناوری اعتبارسنج توزیع‌شده، سهام‌گذار ان می‌توانند همزمان با نگهداری کلید خصوصی اعتبارسنج در ذخیره‌سازی سرد، در فرایند سهام‌گذاری مشارکت کنند. این امکان با رمزگذاری کلید اعتبارسنج اصلی و کامل و سپس تقسیم آن به چندین تکه کلید میسر می‌شود. تکه‌کلیدها همیشه آنلاین هستند و بین چندین نود که عملیات توزیع شده را برای اعتبارسنج فعال می‌کنند توزیع می‌شوند. این امر امکان پذیر است زیرا اعتبارسنج‌های اتریوم از امضاهای BLS که افزودنی هستند استفاده می‌کنند، بدین معنا که کلید کامل را می‌توان بوسیله جمع کردن اجزای آنها بازسازی کرد. همین موضوع به سهام‌گذاران اجازه می‌دهد تا کلید اعتبارسنج کامل و اصلی را به شکلی امن به صورت آفلاین نگهداری کنند. + +### عدم وجود نقطه شکست واحد {#no-single-point-of-failure} + +وقتی یک اعتبارسنج بین چندین اپراتور و چندین دستگاه تقسیم می‌شود می‌تواند اختلالات نرم‌افزاری و سخت‌افزاری را بدون این که وقفه‌ای در فعالیت آن ایجاد شود، تحمل کند. همچنین ریسک اختلالات با استفاده از تنظیمات نرم‌افزاری و سخت‌افزاری متنوع در سطح گره‌های موجود در یک خوشه کم شود. این انعطاف در تنظیمات اعتبارسنج تک‌گره‌ای موجود نیست و با لایه فناوری اعتبارسنج توزیع‌شده امکان‌پذیر است. + +اگر یکی از عناصر یک دستگاه در یک خوشه به هر دلیل متوقف شود (برای مثال اگر چهار اپراتور در یک اعتبارسنج باشند و یکی از آن‌ها از کاربری استفاده کند که دچار مشکل است)، سایر اعضای خوشه تضمین خواهند کرد که اعتبارسنجی بدون مشکل ادامه یابد. + +### غیرمتمرکزسازی {#decentralization} + +سناریوی ایده‌آل برای شبکۀ اتریوم داشتن بیشترین تعداد گره اعتبارسنج مستقل است. به هر حال، تعداد محدودی از سهام‌گذاران بسیار محبوب شده‌اند و بخش قابل توجهی از کل توکن‌های اتر سهام‌گذاری شده در شبکه را شامل می‌شوند. DVT می‌تواند به این اپراتورها اجازه دهد همزمان با غیرمتمرکز بودنِ سهام‌گذاری، به قوت خود باقی بمانند. به این دلیل می‌توان گفت که کلیدها برای هر اعتبارسنج در سطح دستگاه‌های متعدد توزیع می‌شوند و تبانی بیشتری می‌طلبد تا یک اعتبارسنج به یک عامل زیان‌آور تبدیل شود. + +بدون DVT، برای سهام‌گذاران آسان‌تر است که تنها از یک یا دو پیکربندی برای تمام اعتبارسنج‌های خود استفاده کنند، همین موضوع اثر اشکالات کاربر را تشدید می‌کند. DVT می‌تواند به کار گرفته شود تا ریسک را در سطح تعداد زیادی پیکربندی کاربر و سخت‌افزار مختلف پخش کند و از طریق تنوع‌بخشی به ارتقای انعطاف کمک کند. + +**DVT این مزایا را به شبکه اتریوم عرضه می‌کند:** + +1. **غیر متمرکز کردن** اجماع اثبات سهام اتریوم +2. اطمینان از **سرزندگی** شبکه +3. ایجاد **تحمل نقص** برای اعتبارسنج +4. عملیات اعتبارسنج با **حداقل اعتماد** +5. **حداقل شدن اسلشینگ** و ریسک‌های اختلال +6. **تنوع را بهبود می‌دهد** (کاربر، مرکز داده، موقعیت، قوانین، غیره) +7. **ارتقای امنیت** مدیریت کلید اعتبارسنج + +## DVT چگونه کار می‌کند؟ {#how-does-dvt-work} + +یک راه‌حل DVT از این عناصر تشکیل شده است: + +- **[اشتراک‌گذاری رمزی شامیر](https://medium.com/@keylesstech/a-beginners-guide-to-shamir-s-secret-sharing-e864efbf3648)** - اعتبارسنج‌ها از [کلیدهای BLS](https://en.wikipedia.org/wiki/BLS_digital_signature) استفاده می‌کنند. «تکه‌های کلید» BLS («تکه‌های کلید») می‌توانند در یک کلید واحد (امضا) ترکیب شوند. در DVT، کلید خصوصی اعتبارسنج، متشکل از امضای ترکیبی BLS هر اپراتور در خوشه است. +- **[طرح امضای آستانه‌](https://medium.com/nethermind-eth/threshold-signature-schemes-36f40bc42aca)** - تعداد تکه‌های کلید مجزای مورد نیاز برای امضای وظایف را مشخص می‌کند، برای مثال، 3 از 4. +- **[تولید کلید توزیع شده (DKG)](https://medium.com/toruslabs/what-distributed-key-generation-is-866adc79620)** - فرایند رمزنگاری که تکه‌کلیدها را تولید می‌کند و از آن برای توزیع تکه‌های یک کلید اعتبارسنج جدید یا موجود به گره‌های درون یک خوشه استفاده می‌شود. +- **[محاسبه چندجانبه (MPC)](https://messari.io/report/applying-multiparty-computation-to-the-world-of-blockchains)** - نسخه کامل کلید اعتبارسنج به صورت مخفیانه با استفاده از محاسبه چندجانبه تولید می‌شود. هیچکدام از اپراتورها هرگز نسخه کامل کلید را نخواهند دانست - آنها فقط بخشی از آن ("تکه" خودشان) را می‌دانند. +- **پروتکل اجماع** - پروتکل اجماع یک گره را انتخاب می‌کند تا پیشنهاد دهندۀ بلاک باشد. آنها بلوک را با دیگر گره‌های درون خوشه که تکه‌کلیدهایشان را به امضای تجمیعی اضافه می‌کنند به اشتراک می‌گذارند. وقتی که تکه‌کلید به تعداد کافی جمع‌آوری شد، بلوک به اتریوم پیشنهاد داده می‌شود. + +اعتبارسنج‌های توزیع شده تحمل خطای داخلی دارند و می‌توانند حتی اگر تعدادی از گره‌ها آفلاین شوند به کار خود ادامه دهند. این یعنی خوشه منعطف است حتی در حالی که برخی از گره‌های داخل آن، مخرب یا تنبل باشند. + +## موارد استفاده DVT {#dvt-use-cases} + +DVT دستاوردهای برجسته‌ای برای صنعت سهامگذاری گسترده‌تر دارد: + +### سهامگذاران انفرادی {#solo-stakers} + +DVT با سهامگذاری غیرحضانتی به شما امکان می‌دهد کلید اعتبارسنج خود را در سراسر گره‌های دورکار توزیع کنید و در عین حال کلید کامل را کاملاً آفلاین نگه دارید. این بدان معناست که سهامگذاران خانگی لزوماً نیازی به هزینه سخت‌افزاری ندارند، درحالی‌که توزیع تکه‌کلیدها می‌تواند به تقویت آنها در برابر هک‌های احتمالی کمک کند. + +### سهام گذاری به عنوان یک سرویس (SaaS) {#saas} + +اپراتورهایی (مانند استخرهای سهامگذاری و سهامگذاران سازمانی) که اعتبارسنج‌های زیادی را مدیریت می‌کنند می‌توانند از DVT برای کاهش ریسک خود استفاده کنند. آنها بوسیله توزیع زیرساخت خود می‌توانند تزائد را به عملیات‌هایشان اضافه کنند و انواع سخت‌افزاری که استفاده می‌کنند را تنوع ببخشند. + +DVT مسئولیت مدیریت کلید را در بین چندین گره تقسیم می‌کند، یعنی برخی هزینه‌های عملیاتی را نیز می‌توان تقسیم کرد. DVT همچنین می‌تواند خطر عملیاتی و هزینه‌های بیمه را برای ارائه‌دهندگان سهامگذاری کاهش دهد. + +### Staking pools {#staking-pools} + +با توجه به تنظیمات استاندارد اعتبارسنج، استخرهای سهامگذاری و ارائه‌دهندگان سهامگذاری نقدینگی مجبورند سطوح مختلفی از اعتماد به یک اپراتور را داشته باشند زیرا سود و زیان در سراسر استخر به همه می‌رسد. آنها همچنین به اپراتورها از جهت محافظت از کلیدهای امضا متکی هستند، زیرا تاکنون هیچ گزینه دیگری برای آنها وجود نداشته است. + +حتی اگر به شکل سنتی تلاش‌هایی برای پخش خطر به‌وسیله توزیع سهام بین اپراتورهای متعدد انجام می‌شود، هر اپراتور هنوز یک سهم قابل توجه را به‌‌طور مستقل مدیریت می‌کند. اتکا بر یک اپراتور درصورتی که عملکرد ناکافی، مواجهه با خرابی، هک شدن، یا عملکرد مخرب داشته باشند خطرات زیادی را به همراه دارد. + +با استفاده از DVT، اعتماد موردنیاز به اپراتورها به حد قابل توجهی کاهش می‌یابد. **استخرها می‌توانند اپراتورها را قادر به نگهداری سهام بدون نیاز به حضانت کلیدهای اعتبارسنج سازند** (زیرا فقط از تکه‌کلیدها استفاده می‌شود). همچنین این امکان را می‌دهد تا سهام مدیریت شده بین اپراتورهای بیشتری توزیع شود (به‌عنوان مثال، به جای داشتن یک اپراتور تنها که 1000 اعتبارسنج را مدیریت می‌کند، DVT این اعتبارسنج‌ها را به‌طور جمعی توسط اپراتورهای متعدد اجرا می‌کند). پیکربندی‌های متنوع اپراتور تضمین می‌کند که اگر یکی از اپراتورها از کار بیفتد، سایرین همچنان قادر به امضا کردن هستند. این به تزائد و تنوع می‌انجامد که عملکرد و انعطاف را افزایش می‌دهد در حالی که پاداش‌ها حداکثر می‌شوند. + +یک مزیت دیگر برای کمینه کردن اعتماد به اپراتور واحد این است که استخرهای سهام‌گذاری می‌توانند از مشارکت آزاد و بدون مجوزِ اپراتورها پشتیبانی کنند. با انجام این کار، خدمات ریسک‌شان را کاهش می‌دهند و با استفاده از مجموعه‌های بدون مجوز و نگهبانی‌شده اپراتورها، برای مثال با جفت کردن سهام‌گذاران خرد با سهام‌گذاران بزرگتر، از غیر متمرکز بودنِ شبکۀ اتریوم پشتیبانی می‌کند. + +## ایرادات بالقوه استفاده از DVT {#potential-drawbacks-of-using-dvt} + +- **اجزای اضافی** - معرفی یک گرۀ DVT یک بخش دیگر اضافه می‌کند که احتمال دارد دچار نقص شود یا آسیب‌پذیر باشد. یک راه برای حذف این اثر، تلاش برای چندین پیاده‌سازی از یک گرۀ DVT است که به معنای چندین مشتری DVT است (مشابه با حالتی که چندین اپراتور برای لایه‌های اجماع و اجرا وجود دارد). +- **هزینه‌های عملیاتی**- از آنجا که DVT اعتبارسنج را بین چندین طرف توزیع می‌کند، به جای یک گره تنها، گره‌های بیشتری برای انجام عملیات مورد نیاز هستند، که قاعدتاً هزینه عملیاتی بالاتری را به همراه دارد. +- **افزایش بالقوه تاخیر** - از آنجا که DVT از یک پروتکل اجماع برای حصول اجماع بین چندین گره که یک اعتبارسنج را عملیاتی می‌کنند استفاده می‌کند، این امر می‌تواند افزایش تاخیر بالقوه‌ای را به همراه داشته باشد. + +## اطلاعات بیشتر {#further-reading} + +- [مشخصات اعتبارسنج توزیع‌شده اتریوم (سطح بالا)](https://github.com/ethereum/distributed-validator-specs) +- [مشخصات فنی اعتبارسنج توزیع‌شده اتریوم](https://github.com/ethereum/distributed-validator-specs/tree/dev/src/dvspec) +- [اپلیکیشن آزمایشی تقسیم راز شامیر](https://iancoleman.io/shamir/) diff --git a/src/content/translations/fa/staking/pools/index.md b/src/content/translations/fa/staking/pools/index.md index 36467069369..bb16b8de017 100644 --- a/src/content/translations/fa/staking/pools/index.md +++ b/src/content/translations/fa/staking/pools/index.md @@ -10,7 +10,7 @@ sidebarDepth: 2 summaryPoints: - از طریق تجمیع قوا با دیگران، هر چقدر اتریوم که می‌خواهید سهام‌گذاری کنید و پاداش کسب کنید - بخش سخت را رها کنید و عملیات اعتبارسنجی را به شخص ثالث بسپارید - - توکن‌های نقدینگی را در کیف پول خود نگه دارید + - توکن‌های سهامگذاری را در کیف‌پول خودتان نگه دارید --- ## استخر سهام‌گذاری چیست؟ {#what-are-staking-pools} @@ -24,15 +24,9 @@ summaryPoints: علاوه بر مزایایی که در [معرفی سهام‌گذاری](/staking/) بیان کردیم، سهام‌گذاری با استخر دارای چندین مزیت متمایز است. - - نهنگ نیستید؟ مشکلی نیست. اکثر استخرهای سهام‌گذاری به شما امکان می‌دهند تقریباً هر مقدار اتر را از طریق تجمیع با سایر سهام‌گذاران سهام‌گذاری کنید، برخلاف سهام‌گذاری انفرادی که به 32 اتر نیاز دارد. - - - سهام‌گذاری با استخر به آسانی تعویض توکن است. نیازی به نگرانی در مورد راه‌اندازی سخت‌افزار و نگهداری گره نیست. استخرها به شما امکان می‌دهند که اتر خود را سپرده‌گذاری کنید؛ این کار به عملگرهای گره امکان می‌دهد اعتبارسنج‌ها را اجرا کنند. سپس، پاداش‌ها منهای هزینه عملیات‌های گره بین مشارکت‌کنندگان توزیع می‌شود. - - - بسیاری از استخرهای سهام‌گذاری توکنی را ارائه می‌دهند که نشان‌دهنده ادعایی در مورد اتر سهام‌گذاری‌شده شما و پاداش‌هایی است که تولید می‌کند. این کار به شما امکان می‌دهد از اتر سهام‌گذاری‌شده خود، مثلاً به‌عنوان وثیقه در برنام‌های DeFi، استفاده کنید. - + + + @@ -41,7 +35,11 @@ summaryPoints: سهام‌گذاری مشترک یا تفویضی به‌طور بومی توسط پروتکل اتریوم پشتیبانی نمی‌شود، اما با توجه به تقاضای کاربران برای سهام‌گذاری کمتر از 32 اتر، راه‌حل‌های فزاینده‌ای برای پاسخگویی به این تقاضا ساخته شده است. -هر استخر و ابزارها یا قراردادهای هوشمند مورد استفاده آن توسط تیم‌های مختلف ساخته شده است و هر کدام خطرات و مزایای خاص خود را دارند. +هر استخر و ابزار یا قراردادهای هوشمند مورد استفاده‌ آنها توسط تیم های مختلف ساخته شده‌اند و هر کدام همراه با منافع و خطراتی هستند. استخرها کاربران را قادر می‌سازند تا اترهای خود را با توکنی که نمایانگر اتر سهامگذاری شده است تعویض کنند. این توکن مفید است زیرا به کاربران اجازه می دهد تا هر مقدار اتر دلخواه را با مقدار معادل یک توکن سودده مبادله کنند که سودی را از طریق پاداش‌های سهامگذاری اجرا شده بر روی اتر سهامگذاری شده اساسی (و بالعکس) در صرافی‌های غیرمتمرکز تولید می‌کند، حتی اگر اتر واقعی روی لایه اجماع ثابت بماند. این بدان معناست که مبادله مکرر بین محصول سودده‌ اتر سهامگذاری شده و "اتر خام" نه تنها در ضریب 32 اتر در دسترس است بلکه فرایندی سریع و آسان است. + +با این‌حال، این توکن‌های اتر سهامگذاری شده تمایل به ایجاد رفتارهای کارتل‌مانندی دارند که در آنجا مقدار زیادی از اتر سهامگذاری شده به جای اینکه در بین بسیاری از افراد مستقل پخش شود، تحت کنترل چند سازمان متمرکز قرار می‌گیرد. این اتفاق شرایطی را برای سانسور یا استخراج ارزش ایجاد می‌کند. استاندارد طلا برای سهامگذاری همیشه باید اشخاصی باشند که در هر زمان ممکن اعتبارسنج‌ها را بر روی سخت‌افزار خودشان اجرا کنند. + +[اطلاعات بیشتر درباره خطرات سهامگذاری توکن‌ها](https://notes.ethereum.org/@djrtwo/risks-of-lsd). شاخص‌های ویژگی در زیر برای نشان دادن نقاط قوت یا ضعف قابل توجهی که ممکن است یک استخر فهرست شده داشته باشد استفاده می‌شود. از این بخش به‌عنوان مرجعی برای نحوه تعریف این ویژگی‌ها هنگام انتخاب استخری برای پیوستن استفاده کنید. @@ -51,31 +49,32 @@ summaryPoints: گزینه‌های مختلفی برای کمک به شما در راه‌اندازی وجود دارد. از شاخص‌های بالا برای راهنمایی به خود در مورد ابزارهای زیر استفاده کنید. - -لطفاً از اهمیت انتخاب سرویسی که تنوع کلاینت را جدی بگیرد غافل نشوید، زیرا امنیت شبکه را بهبود می‌بخشد و ریسک شما را محدود می‌کند. سرویس‌هایی که شواهدی مبنی بر محدود کردن استفاده اکثر کلاینت‌ها دارند، با عنوان «کلاینت‌های متنوع» علامت‌گذاری می‌شوند. - + -ابزار سهام‌گذاری‌ای را پیشنهاد می‌دهید که نگنجانده‌ایم؟ [خط‌مشی فهرست‌بندی محصول](/contributing/adding-staking-products/) ما را برای اطمینان از مناسب بودن آن و ارسال آن جهت بررسی مشاهده کنید. +لطفاً از اهمیت انتخاب سرویسی که [تنوع کاربر](/developers/docs/nodes-and-clients/client-diversity/) را جدی بگیرد غافل نشوید، زیرا امنیت شبکه را بهبود می‌بخشد و ریسک شما را محدود می‌کند. سرویس‌هایی که مدارکی از محدود کردن استفاده اکثریت کاربران را دارند با عنوان "تنوع کاربر اجرایی" و "تنوع کاربر اجماعی" نشان داده می‌شوند. + +ابزار سهامگذاری‌‌ می‌شناسید که نگنجانده‌ایم؟ [سیاست فهرست‌بندی محصول](/contributing/adding-staking-products/) ما را برای اطمینان از مناسب بودن آن و ثبت آن جهت بررسی مشاهده کنید. -## سؤالات متداول {#faq} +## پرسش‌های متداول {#faq} -معمولاً توکن‌های نقدینگی ERC-20 برای سهام‌گذاران صادر می‌شوند که نشان‌دهنده ارزش اتر سهام‌گذاری‌شده به‌علاوه پاداش‌های آن‌ها است. در نظر داشته باشید که روش استخرهای مختلف برای توزیع پاداش‌های سهام‌گذاری بین کاربرانشان کمی با هم متفاوت است، اما این رویکرد رایج است. +معمولاً توکن‌های سهامگذاری ERC-20 برای سهامگذارانی چاپ می‌شوند که نمایانگر ارزش اتر سهامگذاری شده آنها به‌علاوه پاداش‌ باشند. در نظر داشته باشید که روش استخرهای مختلف برای توزیع پاداش‌های سهام‌گذاری بین کاربرانشان کمی با هم متفاوت است، اما این رویکرد رایج است. +همین حالا! ارتقاءهای شانگهای/کاپلا در آوریل سال 2023 رخ دادند، و برداشت‌های سهامگذاری را به همراه داشتند. حساب‌های اعتبارسنج که استخرهای سهامگذاری را پشتیبانی می‌کنند، اکنون قادرند که خارج شوند و اتر را به آدرس برداشت تعیین شده خود برداشت کنند. این امر امکان پس گرفتن سهم خودتان از سهم‌گذاری مربوط به اتر مربوطه را فراهم می‌سازد. با ارائه‌دهنده‌تان بررسی کنید که چگونه این عملکرد را پیشتیبانی می‌کنند. -در حال حاضر، برداشت وجه از اعتبارسنج اتریوم امکان‌پذیر نیست، که این امکان را محدود می‌کند که در واقع رمز نقدینگی خود را برای پاداش‌های اتر قفل شده در لایه‌ی اجماع بازخرید کنید. +از طرفی، استخرهایی که از توکن سهامگذاری ERC-20 استفاده می‌کنند به کاربرانشان امکان معامله این توکن در بازار آزاد معامله را می‌دهند، و به شما اجازه می‌دهند که موقعیت سهامگذاری خود را بفروشید، عملاً یعنی "برداشت کردن" بدون حذف اتر از قرارداد سهامگذاری. -از طرف دیگر، استخرهایی که از توکن نقدینگی ERC-20 استفاده می‌کنند، به کاربران اجازه می‌دهند تا این توکن را در بازار آزاد معامله کنند، و به شما این امکان را می‌دهند که موقعیت سهام خود را بفروشید، بدون اینکه عملاً اتر را از قرارداد سهام‌گذاری حذف کنید، عملاً «انصراف دهید». +اطلاعات بیشتر درباره برداشت‌های سهامگذاری شباهت‌های زیادی بین این گزینه‌های سهام‌گذاری مشترک و صرافی‌های متمرکز وجود دارد؛ نظیر توانایی سهام‌گذاری مقادیر کم اتر و ترکیب کردن آن‌ها برای فعال‌سازی اعتبارسنج‌ها. -برخلاف صرافی‌های متمرکز، بسیاری از گزینه‌های سهام‌گذاری مشترک دیگر از قراردادهای هوشمند و/یا توکن‌های نقدینگی استفاده می‌کنند که معمولاً توکن‌های ERC-20 هستند که می‌توان آن‌ها را در کیف پول خود نگه داشت و مانند هر توکن دیگری خرید یا فروخت. این کار با اعطای کنترل توکن‌هایتان به شما، لایه‌ای از حاکمیت و امنیت را ارائه می‌دهد، اما در عین حال روی کاربر اعتبارسنجی که از طرف شما در پس‌زمینه تصدیق می‌کند، کنترل مستقیمی ارائه نمی‌دهد. +برخلاف صرافی‌های متمرکز، بسیاری دیگر از گزینه‌های سهامگذاری مشترک از قراردادهای هوشمند و/یا توکن‌های سهامگذاری استفاده می‌کنند که معمولاً توکن‌های ERC-20 هستند که می‌توانید آنها را در کیف‌پول خود نگه دارید، و درست همانند هر توکن دیگری آنها را بخرید یا بفروشید. این کار با اعطای کنترل توکن‌هایتان به شما، لایه‌ای از حاکمیت و امنیت را ارائه می‌دهد، اما در عین حال روی کاربر اعتبارسنجی که از طرف شما در پس‌زمینه تصدیق می‌کند، کنترل مستقیمی ارائه نمی‌دهد. برخی از گزینه‌های ادغام از حیث گره‌هایی که آن‌ها را پشتیبانی می‌کنند غیرمتمرکزتر از سایرین هستند. برای ارتقای سلامت و عدم تمرکز شبکه، به سهام‌گذاران همواره توصیه می‌شود که سرویس ادغامی را انتخاب کنند که یک مجموعه غیرمتمرکز بدون مجوز از عملگرهای گره را فعال می‌کند. diff --git a/src/content/translations/fa/staking/saas/index.md b/src/content/translations/fa/staking/saas/index.md index 06463dd9151..b826bf4a92f 100644 --- a/src/content/translations/fa/staking/saas/index.md +++ b/src/content/translations/fa/staking/saas/index.md @@ -22,23 +22,16 @@ summaryPoints: پروتکل اتریوم به‌طور بومی از تفویض سهام پشتیبانی نمی‌کند، بنابراین این سرویس‌ها برای برطرف کردن این تقاضا ساخته شده‌اند. اگر 32 اتر برای سهام‌گذاری در اختیار دارید، اما در مواجهه با سخت‌افزار احساس راحتی نمی‌کنید، سرویس‌های SaaS به شما امکان می‌دهند تا زمانی که پاداش‌های بلوک بومی را دریافت می‌کنید، بخش سخت را تفویض کنید. - - 32 اتر خود را واریز کنید تا مجموعه کلیدهای امضای خود که در اجماع اتریوم شرکت خواهند کرد را فعال کنید. از طریق داشبوردها بر پیشرفت خود نظارت کنید و شاهد تجمیع پاداش‌های اتر باشید. - - - مشخصات سخت‌افزاری، راه‌اندازی، نگهداری گره و ارتقا را فراموش کنید. - ارائه‌دهندگان SaaS به شما این امکان را می‌دهند تا با بارگذاری اعتبارنامه امضای خود، بخش سخت را برون‌سپاری کنید. این کار به آن‌ها امکان می‌دهد با هزینه اندک، اعتبارسنج را از طرف شما اجرا کنند. - - - در بسیاری از موارد، کاربران مجبور نیستند از دسترسی به کلیدهایی که امکان برداشت یا انتقال وجوه سهام‌گذاری شده را فراهم می‌کنند، چشم‌پوشی کنند. این کلیدها با کلیدهای امضا متفاوت هستند و می‌توانند برای محدود کردن (اما نه از بین بردن) خطر شما به عنوان یک سهام‌گذار، جداگانه نگه داشته شوند. - + + + ## آنچه باید در نظر گرفته شود {#what-to-consider} -تعداد فزاینده‌ای از ارائه‌دهنده‌های سهام‌گذاری به‌عنوان سرویس وجود دارند که به شما کمک می‌کنند اتر خود را به اشتراک بگذارید، اما هر کدام خطرات و مزایای متفاوتی دارند. +تعداد فزاینده‌ای از ارائه‌دهندگان SaaS وجود دارند که در سهامگذاری اتر به شما کمک می‌کنند اما هرکدام از آنها مزایا و خطرات خاص خود را دارند. تمام گزینه‌های SaaS نیازمند فرضیه‌های اعتماد بیشتر در مقایسه با سهامگذاری خانگی هستند. گزینه‌های SaaS ممکن است کد اضافه‌ای داشته باشند که کاربرهای اتریوم را به طوری شکل می‌دهند که یا باز نیست یا قابل ممیزی نیست. همچنین SaaS تاثیر مخربی بر تمرکززدایی شبکه دارد. بسته به تنظیمات، ممکن است اعتبار‌سنج خود را کنترل نکنید - اپراتور با عدم صداقت می‌تواند از اتر شما استفاده کند. شاخص‌های ویژگی در زیر برای نشان دادن نقاط قوت یا ضعف قابل‌توجهی که ممکن است ارائه‌دهنده فهرست‌شده SaaS داشته باشد، استفاده می‌شود. از این بخش به عنوان مرجعی برای نحوه تعریف این ویژگی‌ها هنگام انتخاب سرویس برای کمک به خود در مسیر سهام‌گذاری استفاده کنید. @@ -48,41 +41,51 @@ summaryPoints: در زیر برخی از ارائه‌دهندگان SaaS قید شده‌اند. از شاخص‌های بالا برای راهنمایی درباره این خدمات استفاده کنید - -لطفاً از اهمیت انتخاب سرویسی که تنوع کلاینت را جدی بگیرد غافل نشوید، زیرا امنیت شبکه را بهبود می‌بخشد و ریسک شما را محدود می‌کند. سرویس‌هایی که شواهدی مبنی بر محدود کردن استفاده اکثر کلاینت‌ها دارند، با عنوان «کلاینت‌های متنوع» علامت‌گذاری می‌شوند. - - + #### ارائه‌دهندگان SaaS +لطفاً از اهمیت انتخاب سرویسی که [تنوع کلاینت](/developers/docs/nodes-and-clients/client-diversity/) را جدی بگیرد غافل نشوید، زیرا امنیت شبکه را بهبود می‌بخشد و ریسک شما را محدود می‌کند. سرویس‌هایی که مدارکی از محدود کردن استفاده اکثریت کاربران را دارند با عنوان "تنوع کاربر اجرایی" و "تنوع کاربر اجماعی" نشان داده می‌شوند. + #### تولید‌کنندگان کلید -یک ارائه‌دهنده سهام‌گذاری به‌عنوان خدمت را پیشنهاد می‌دهید که نگنجانده‌ایم؟ [خط‌مشی فهرست‌بندی محصول](/contributing/adding-staking-products/) ما را برای اطمینان از مناسب بودن آن و ارسال آن جهت بررسی مشاهده کنید. +یک ارائه‌دهنده سهام‌گذاری به‌عنوان خدمت را پیشنهاد می‌دهید که نگنجانده‌ایم؟ [سیاست فهرست‌بندی محصول](/contributing/adding-staking-products/) ما را برای اطمینان از مناسب بودن آن و ثبت آن جهت بررسی مشاهده کنید. -## سؤالات متداول {#faq} +## پرسش‌های متداول {#faq} - ترتیب امور بین ارائه‌دهندگان مختلف، متفاوت است، اما معمولاً راهنمایی می‌شوید که کلیدهای امضای مورد نیاز خود (یکی به‌ازای هر 32 اتر) را راه‌اندازی کنید، و آن‌ها را برای تأیید اعتبار از طرف خودتان، در ارائه‌دهنده‌ای بارگذاری کنید. کلیدهای امضا به تنهایی امکان برداشت، انتقال یا خرج کردن وجوه شما را ندارند. با این حال، آن‌ها توانایی رأی دادن برای حصول اجماع را فراهم می‌کنند، که اگر به درستی انجام نشود، می‌تواند منجر به جریمه آفلاین یا تقطیع شود. +ترتیب امور بین ارائه‌دهندگان مختلف، متفاوت است، اما معمولاً راهنمایی می‌شوید که کلیدهای امضای مورد نیاز خود (یکی به‌ازای هر 32 اتر) را راه‌اندازی کنید، و آن‌ها را برای تأیید اعتبار از طرف خودتان، در ارائه‌دهنده‌ای بارگذاری کنید. کلیدهای امضا به تنهایی امکان برداشت، انتقال یا خرج کردن وجوه شما را ندارند. با این حال، آن‌ها توانایی رأی دادن برای حصول اجماع را فراهم می‌کنند، که اگر به درستی انجام نشود، می‌تواند منجر به جریمه آفلاین یا تقطیع شود. -بله. هر حساب از هر دو کلید امضا و کلید خروج تشکیل شده است. برای اینکه اعتبارسنج وضعیت زنجیره را تأیید کند، در کمیته‌های همگام‌سازی شرکت کند و بلوک‌ها را پیشنهاد کند، کلیدهای امضا باید به آسانی توسط کلاینت اعتبارسنج قابل دسترسی باشند. این‌ها باید به شکلی به اینترنت متصل شوند، و بنابراین ذاتاً کلیدهای «داغ» در نظر گرفته می‌شوند. این یک الزام برای اعتبارسنج شماست تا بتواند تصدیق کند، و در نتیجه کلیدهای مورد استفاده برای انتقال یا برداشت وجه به دلایل امنیتی از هم جدا می‌شوند. +بله. هر حساب هم از کلیدهای امضای BLS و هم از کلیدهای برداشت BLS تشکیل شده است. برای اینکه اعتبارسنج وضعیت زنجیره را تأیید کند، در کمیته‌های همگام‌سازی شرکت کند و بلوک‌ها را پیشنهاد کند، کلیدهای امضا باید به آسانی توسط کلاینت اعتبارسنج قابل دسترسی باشند. این‌ها باید به شکلی به اینترنت متصل شوند، و بنابراین ذاتاً کلیدهای «داغ» در نظر گرفته می‌شوند. این یک الزام برای اعتبارسنج شماست تا بتواند تصدیق کند، و در نتیجه کلیدهای مورد استفاده برای انتقال یا برداشت وجه به دلایل امنیتی از هم جدا می‌شوند. + +کلیدهای برداشت BLS برای امضای پیام یک بار مصرفی که اعلام می‌کند پاداش‌های سهامگذاری و سرمایه خارج شده حساب باید به کدام لایه اجرایی بروند استفاده می‌شوند. به محض مخابره‌ این پیام، کلیدهای برداشت BLS دیگر مورد نیاز نیستند. در عوض کنترل وجوه برداشت شده، به صورت دائمی به آدرسی که شما ارائه داده اید منتقل و تفویض می‌شوند. با این کار می‌توانید آدرس برداشت را تنظیم کنید که متعلق به کیف‌پول سرد شما است تا خطر مربوط به وجوه اعتبارسنج خود را به حداقل برسانید حتی اگر شخص دیگری کلیدهای امضای اعتبارسنج شما را داشته باشد. + +بروزرسانی اطلاعات رمز برداشت، یک اقدام لازم برای فعالسازی امکان برداشت است. این فرایند شامل تولید کلیدهای برداشت با استفاده از عبارت بازیابی شما است. -همه این کلیدها را همیشه می‌توان با استفاده از عبارت 24 کلمه‌ای بازیابی‌تان به روشی تکرارپذیر دوباره تولید کرد. مطمئن شوید که از این عبارت بذر به‌طور ایمن پشتیبانی می‌گیرید، در غیر این صورت نمی‌توانید کلیدهای برداشت خود را در زمان لازم ایجاد کنید. +مطمئن شوید که پشتیبان امنی از این عبارت بازیابی دارید یا در هر زمان ممکن نخواهید توانست کلیدهای برداشت خود را تولید کنید. +/\*سهامگذارانی که آدرس برداشت را با واریز اولیه تدارک دیده‌اند نیازی به تنظیم این مورد ندارند. با ارائه دهنده سرویس SaaS خود برای راهنمایی در مورد نحوه راه اندازی اعتبار سنج خود تماس بگیرید. - وقتی 32 اتر را با یک ارائه‌دهنده SaaS به اشتراک می‌گذارید، آن اتر همچنان به قرارداد رسمی سهام‌گذاری واریز می‌شود. به این ترتیب، سهام‌گذاران SaaS در حال حاضر همان محدودیت‌های برداشتی را دارند که سهام‌گذاران انفرادی ارند. این بدان معناست که سهام‌گذاری اتر شما در حال حاضر یک سپرده‌گذاری یک طرفه است. این امر تا زمان ارتقای شانگهای ادامه خواهد داشت. +برداشت‌های سهامگذاری در ارتقاء شانگهای/کاپلا در آوریل 2023 پیاده‌سازی شدند. سهامگذاران باید یک آدرس برداشت ارائه کنند (البته اگر هنگام واریز اولیه ارائه نکرده‌اند)، و پرداخت پاداش‌ها به صورت خودکار طی دوره زمانی هر چند روز یک بار توزیع خواهند شد. + +اعتبارسنج‌ها همچنین می‌توانند به صورت کامل از نقش اعتبارسنج خارج شوند، که منجر به باز شدن موجودی اتر باقیمانده آنها برای برداشت خواهد شد. حساب‌هایی که یک آدرس برداشت اجرایی را ارائه کرده‌اند و فرایند خروج را تکمیل کرده‌اند تمام موجودی خود را در نوبت اعتبارسنج بعدی در آدرس برداشتی که ارائه کرده‌اند دریافت خواهند نمود. + +اطلاعات بیشتر درباره برداشت‌های سهامگذاری -با استفاده از یک ارائه‌دهنده SaaS، عملیات گره خود را به شخص دیگری تفویض می‌کنید. این کار، خطر عملکرد ضعیف گره را به همراه دارد، که در کنترل شما نیست. در صورتی که اعتبارسنج شما مشمول تقطیع شود، موجودی اعتبارسنج شما جریمه می‌شود و قاطعانه از استخر اعتبارسنج حذف می‌شود. این وجوه تا زمانی که برداشت در سطح پروتکل فعال نشود قفل خواهد شد. +با استفاده از یک ارائه‌دهنده SaaS، عملیات گره خود را به شخص دیگری تفویض می‌کنید. این کار، خطر عملکرد ضعیف گره را به همراه دارد، که در کنترل شما نیست. در صورتی که اعتبارسنج شما مشمول تقطیع شود، موجودی اعتبارسنج شما جریمه می‌شود و قاطعانه از استخر اعتبارسنج حذف می‌شود. + +پس از تکمیل فرایند اسلشینگ/خروج، این وجوه به آدرس برداشت اختصاص یافته به اعتبارسنج منتقل خواهند شد. این امر نیاز به ارائه یک آدرس برداشت برای فعالسازی دارد. آدرس برداشت ممکن است در واریز اولیه ارائه شده باشد. اگر آدرس برداشت ارائه نشده بود، لازم است از کلیدهای برداشت اعتبارسنج برای امضای پیام مشخص کننده آدرس برداشت استقاده شود. اگر آدرس برداشت ارائه نشده باشد، وجوه تا زمان ارائه آدرس، غیر قبل برداشت خواهند بود. -برای جزئیات بیشتر در مورد ضمانت‌ها یا گزینه‌های بیمه، با ارائه‌دهنده فردی SaaS تماس بگیرید. اگر ترجیح می‌دهید راه‌اندازی اعتبارسنج خود را کاملاً تحت کنترل داشته باشید، درباره نحوه به اشتراک گذاشتن اتر خود به‌صورت انفرادی بیشتر بدانید. +برای جزئیات بیشتر در مورد ضمانت‌ نامه ها یا بیمه و دستورالعمل‌هایی درباره نحوه ارائه آدرس برداشت، با ارائه‌دهنده سرویس SaaS تماس بگیرید. اگر ترجیح می‌دهید راه‌اندازی اعتبارسنج خود را کاملاً تحت کنترل داشته باشید، درباره نحوه به اشتراک گذاشتن اتر خود به‌صورت انفرادی بیشتر بدانید. ## بیشتر بخوانید {#further-reading} diff --git a/src/content/translations/fa/staking/solo/index.md b/src/content/translations/fa/staking/solo/index.md index bed08437a75..9c5de2a9273 100644 --- a/src/content/translations/fa/staking/solo/index.md +++ b/src/content/translations/fa/staking/solo/index.md @@ -17,6 +17,8 @@ summaryPoints: سهام‌گذاری انفرادی به عمل [اجرای یک گره اتریوم](/run-a-node/) متصل به اینترنت و واریز 32 اتر برای فعال کردن یک [اعتبارسنج](#faq) گفته می‌شود، که به شما امکان می‌دهد به‌طور مستقیم در اجماع شبکه شرکت کنید. +**سهامگذاری انفرادی، تمرکززدایی شبکه اتریوم را افزایش می‌دهد،** که منجر می‌شود اتریوم در برابر سانسور مقاوم‌تر و در مقابل مهاجمین مستحکم‌تر باشد. دیگر روش‌های سهامگذاری ممکن است به همین روش به شبکه کمک نکنند. سهامگذاری انفرادی بهترین گزینه سهامگذاری برای ایمن‌سازی اتریوم است. + یک گره‌ی اتریوم از یک کلاینت لایه اجرا (EL) و یک کلاینت لایه اجماع (CL) تشکیل شده است. این کلاینت‌ها نرم‌افزارهایی هستند که همراه با مجموعه‌ای از کلیدهای امضاکننده معتبر، برای تأیید تراکنش‌ها و بلوک‌ها، تصدیق کردن سر درست زنجیره، جمع‌آوری تأییدیه‌ها و پیشنهاد بلوک‌ها با هم کار می‌کنند. سهام‌گذارهای انفرادی مسئول کار با سخت‌افزار مورد نیاز برای اجرای این کلاینت‌ها هستند. قویاً توصیه می‌شود از یک دستگاه اختصاصی که در خانه به کار گرفته شود برای این کار استفاده کنید - این کار برای سلامت شبکه بسیار مفید است. @@ -25,18 +27,12 @@ summaryPoints: ## چرا به‌صورت انفرادی سهام‌گذاری کنیم؟ {#why-stake-solo} -سهام‌گذاری انفرادی با مسئولیت بیشتری همراه است، اما حداکثر کنترل را بر سرمایه‌های خود و تنظیمات سهام‌گذاری به شما ارائه می‌دهد. +سهامگذاری انفرادی مسئولیت‌ به همراه دارد اما حداکثر کنترل بر وجوه و تنظیمات سهامگذاری را به شما ارائه می‌دهد. - - وقتی اعتبارسنج شما آنلاین است، بدون هیچ واسطه‌ای، مستقیماً از پروتکل پاداش اتری دریافت کنید. - - - کلیدهای خودتان را نگه دارید. ترکیبی از کلاینت‌ها و سخت‌افزار را انتخاب کنید که به شما امکان می‌دهد ریسک خود را به حداقل برسانید و به سلامت و امنیت شبکه کمک کنید. سرویس‌های سهام‌گذاری شخص ثالث این تصمیمات را برای شما می‌گیرند و همیشه امن‌ترین انتخاب‌ها را انجام نمی‌دهند. - - - سهام‌گذاری انفرادی تأثیرگذارترین راه برای سهام‌گذاری است. با اجرای یک اعتبار سنج بر روی سخت‌افزار خود در خانه، استحکام، عدم تمرکز و امنیت پروتکل اتریوم را تقویت می‌کنید. - + + + ## ملاحظات لازم قبل از سهام‌گذاری انفرادی {#considerations-before-staking-solo} @@ -44,32 +40,37 @@ summaryPoints: درست است که ما آرزو می‌کنیم سهام‌گذاری انفرادی برای همه در دسترس و بدون ریسک باشد، اما واقعیت چنین نیست. چند موضوع عملی و جدی وجود دارد که باید قبل از انتخاب سهام‌گذاری انفرادی اتر خود در نظر داشته باشید. - - هنگام راه‌اندازی گره‌ی خود، باید مدتی را صرف یادگیری نحوه استفاده از نرم‌افزار انتخابی خود کنید. این کار شامل مطالعه‌ی مستندات مرتبط و هماهنگی با کانال‌های ارتباطی آن تیم‌های توسعه‌دهنده است. - هرچه بیشتر در مورد نرم‌افزاری که در حال اجرا هستید و نحوه‌ی کار اثبات سهام اطلاعات بیشتری کسب کنید، ریسک آن به‌عنوان یک سهام‌گذار برایتان کمتر خواهد بود و رفع هرگونه مشکلی که ممکن است در طول مسیر به عنوان عملگر گره ایجاد شود آسان‌تر خواهد بود. - - - راه‌اندازی گره به تسلط کافی در کار با رایانه نیاز دارد، گرچه ابزارهای جدید به مرور زمان این کار را آسان‌تر می‌کنند. درک رابط خط فرمان مفید است، اما دیگر به‌شدت موردنیاز نیست. - تنظیمات سخت‌افزاری بسیار ابتدایی و درک حداقل مشخصات توصیه‌شده نیز لازم است. - - - همان‌طور که کلیدهای خصوصی آدرس اتریوم شما را ایمن می‌کنند، باید کلیدهایی را به‌طور خاص برای اعتبارسنج خود ایجاد کنید. باید بدانید که چگونه هر عبارت بذر یا کلید خصوصی را امن و ایمن نگه دارید. -

    امنیت اتریوم و جلوگیری از کلاهبرداری

    -
    - - برداشت اتر سهام‌گذاری شده یا پاداش از موجودی اعتبارسنج هنوز پشتیبانی نمی‌شود. پشتیبانی از برداشت برای ارتقای آینده شانگهای برنامه‌ریزی شده است. باید پیش‌بینی کنید که اتر شما حداقل برای یک تا دو سال قفل می‌شود. پس از ارتقای شانگهای قادر به برداشت آزادانه کامل یا بخشی از سهام خود خواهید بود. - - - سخت‌افزار گهگاه خراب می‌شود، اتصالات شبکه بعضاً دچار مشکل می‌شوند و نرم‌افزار کلاینت هر از گاهی نیازمند ارتقا است. نگهداری از گره ناگزیر است و هر چند وقت یکبار نیازمند توجه شما خواهد بود. شما باید مطمئن باشید که از هرگونه ارتقای شبکه پیش‌بینی‌شده یا سایر ارتقاهای حیاتی مشتری آگاه هستید. - - - پاداش‌های شما متناسب با زمانی است که اعتبارسنج شما آنلاین است و به‌درستی تصدیق می‌کند. زمان خاموشی متناسب با تعداد اعتبارسنج‌های دیگر که همزمان آفلاین هستند مشمول جریمه می‌شود، اما به برخورد شدید منجر نمی‌شود. پهنای باند نیز مهم است، زیرا پاداش برای تصدیق‌هایی که به موقع دریافت نمی‌شوند کاهش می‌یابد. الزامات متفاوت خواهد بود، اما حداقل سرعت 10 مگابیت بر ثانیه برای بارگذاری و بارگیری توصیه می‌شود. - - - برخورد شدید که متفاوت از مجازات‌های عدم فعالیت برای آفلاین بودن است، مجازات بسیار جدی‌تری است که برای جرایم مخرب در نظر گرفته شده است. با اجرای یک کلاینت اقلیت با کلیدهایتان تنها روی یک دستگاه بارشده در آن واحد، ریسک برخورد شدید با شما به حداقل می‌رسد. همان‌طور که گفته شد، همه سهام‌گذاران باید از ریسک‌های برخورد شدید آگاه باشند. - -

    اطلاعات بیشتر در مورد برخورد شدید و چرخه عمر اعتبارسنج

    -
    + +هنگام راه‌اندازی گره‌ی خود، باید مدتی را صرف یادگیری نحوه استفاده از نرم‌افزار انتخابی خود کنید. این کار شامل مطالعه‌ی مستندات مرتبط و هماهنگی با کانال‌های ارتباطی آن تیم‌های توسعه‌دهنده است. + +هرچه بیشتر در مورد نرم‌افزاری که در حال اجرا هستید و نحوه‌ی کار اثبات سهام اطلاعات بیشتری کسب کنید، ریسک آن به‌عنوان یک سهام‌گذار برایتان کمتر خواهد بود و رفع هرگونه مشکلی که ممکن است در طول مسیر به عنوان عملگر گره ایجاد شود آسان‌تر خواهد بود. + + + +راه‌اندازی گره به تسلط کافی در کار با رایانه نیاز دارد، گرچه ابزارهای جدید به مرور زمان این کار را آسان‌تر می‌کنند. درک رابط خط فرمان مفید است، اما دیگر به‌شدت موردنیاز نیست. + +تنظیمات سخت‌افزاری بسیار ابتدایی و درک حداقل مشخصات توصیه‌شده نیز لازم است. + + + +همان‌طور که کلیدهای خصوصی آدرس اتریوم شما را ایمن می‌کنند، باید کلیدهایی را به‌ویژه برای اعتبارسنج خود ایجاد کنید. باید بدانید که چگونه هر عبارت بازیابی یا کلید خصوصی را ایمن نگه دارید.{' '} + +امنیت اتریوم و پیشگیری از کلاهبرداری + + + +سخت‌افزار گهگاه خراب می‌شود، اتصالات شبکه بعضاً دچار مشکل می‌شوند و نرم‌افزار کلاینت هر از گاهی نیازمند ارتقا است. نگهداری از گره ناگزیر است و هر چند وقت یکبار نیازمند توجه شما خواهد بود. شما باید مطمئن باشید که از هرگونه ارتقای شبکه پیش‌بینی‌شده یا سایر ارتقاهای حیاتی مشتری آگاه هستید. + + + +پاداش‌های شما متناسب با زمانی است که اعتبارسنج شما آنلاین است و به‌درستی تصدیق می‌کند. زمان خاموشی متناسب با تعداد اعتبارسنج‌های دیگر که همزمان آفلاین هستند مشمول جریمه می‌شود، اما به برخورد شدید منجر نمی‌شود. پهنای باند نیز مهم است، زیرا پاداش برای تصدیق‌هایی که به موقع دریافت نمی‌شوند کاهش می‌یابد. الزامات متفاوت خواهد بود، اما حداقل سرعت 10 مگابیت بر ثانیه برای بارگذاری و بارگیری توصیه می‌شود. + + + +برخورد شدید که متفاوت از مجازات‌های عدم فعالیت برای آفلاین بودن است، مجازات بسیار جدی‌تری است که برای جرایم مخرب در نظر گرفته شده است. با اجرای یک کلاینت اقلیت با کلیدهایتان تنها روی یک دستگاه بارشده در آن واحد، ریسک برخورد شدید با شما به حداقل می‌رسد. همان‌طور که گفته شد، همه سهام‌گذاران باید از ریسک‌های برخورد شدید آگاه باشند. + +اطلاعات بیشتر درباره جریمه و چرخه‌ حیات اعتبارسنج +
    @@ -78,9 +79,11 @@ summaryPoints: -در صورت تمایل، می‌توانید دیگر اعتبارسنج نباشید؛ بدین ترتیب، نیاز به آنلاین بودن از بین می‌رود و دریافت هرگونه پاداش بیشتر متوقف می‌شود. توجه داشته باشید که تا زمان ارتقای برنامه‌ریزی شده شانگهای _برداشت_ آن وجوه امکان‌پذیر نخواهد بود. +زمانی که فعال باشد شما پاداش اتر دریافت خواهید کرد، که به صورت دوره‌ای به آدرس برداشت شما واریز می‌گردد. -پس از شانگهای، کاربران خوهند توانست در صورت تمایل، پاداش‌ها و همچنین سهام خود را پس بگیرند. +در صورت تمایل، می‌توانید دیگر اعتبارسنج نباشید؛ بدین ترتیب، نیاز به آنلاین بودن از بین می‌رود و دریافت هرگونه پاداش بیشتر متوقف می‌شود. موجودی باقیمانده شما نیز سپس به آدرس برداشتی که در زمان تنظیمات اختصاص داده بودید واریز خواهد شد. + +[اطلاعات بیشتر درباره برداشت‌های سهامگذاری](/staking/withdrawals/) ## با Staking Launchpad کار را شروع کنید {#get-started-on-the-staking-launchpad} @@ -100,40 +103,40 @@ Staking Launchpad یک برنامه منبع‌باز است که به شما ک گزینه های مختلفی برای کمک کردن به شما در راه‌اندازی وجود دارد.‌ از شاخص‌های بالا برای راهنمایی درباره ابزارهای زیر استفاده کنید. - -لطفاً از اهمیت انتخاب کلاینت اقلیت غافل نشوید، زیرا امنیت شبکه را بهبود می‌بخشد و ریسک شما را محدود می‌کند. ابزارهایی که به شما امکان می‌دهند کلاینت اقلیت را راه‌اندازی کنید با عنوان «چندکلاینتی» نشان داده می‌شوند. - + #### ابزارهای گره +لطفاً از اهمیت انتخاب [کلاینت اقلیت](/developers/docs/nodes-and-clients/client-diversity/) غافل نشوید، زیرا امنیت شبکه را بهبود می‌بخشد و ریسک شما را محدود می‌کند. ابزارهایی که به شما امکان می‌دهند کاربر اقلیت را راه‌اندازی کنید با عنوان «چندکاربری» نشان داده می‌شوند. + #### تولید‌کنندگان کلید این ابزارها می‌توانند به‌عنوان جایگزینی برای [Staking Deposit CLI](https://github.com/ethereum/staking-deposit-cli/) برای کمک به تولید کلید استفاده شوند. -ابزار سهام‌گذاری‌ای را پیشنهاد می‌دهید که نگنجانده‌ایم؟ [خط‌مشی فهرست‌بندی محصول](/contributing/adding-staking-products/) ما را برای اطمینان از مناسب بودن آن و ارسال آن جهت بررسی مشاهده کنید. +ابزار سهامگذاری‌‌ می‌شناسید که نگنجانده‌ایم؟ [سیاست فهرست‌بندی محصول](/contributing/adding-staking-products/) ما را برای اطمینان از مناسب بودن آن و ثبت آن جهت بررسی مشاهده کنید. ## مشاهده‌ی راهنماهای سهام‌گذاری انفرادی {#staking-guides} -## سؤالات متداول {#faq} +## پرسش‌های متداول {#faq} -این ها چند مورد از متداول‌ترین سؤالات مربوط به سهام‌گذاری هستند که ارزش دانستن دارند. +اینها چند مورد از متداول‌ترین سؤالات مربوط به سهام‌گذاری هستند که ارزش دانستن دارند. -_اعتبارسنج_ یک موجودیت مجازی است که بر روی اتریوم زندگی می کند و در اجماع پروتکل اتریوم شرکت می کند. اعتبارسنج‌ها با موجودی، کلید عمومی و سایر مشخصات نشان داده می‌شوند. _کلاینت اعتبارسنج_ نرم افزاری است که با نگه داشتن و استفاده از کلید خصوصی از طرف اعتبارسنج عمل می‌کند. یک کلاینت اعتبارسنج منفرد می‌تواند چندین جفت کلید را در خود نگه دارد و اعتبارسنج‌های زیادی را کنترل کند. +یک اعتبارسنج یک موجود مجازی است که بر روی اتریوم زندگی می‌کند و در اجماع پروتکل اتریوم مشارکت می‌کند. اعتبارسنج‌ها با موجودی، کلید عمومی و سایر مشخصات نشان داده می‌شوند. کلاینت اعتبارسنج نرم‌افزاری است که با نگه داشتن و استفاده از کلید خصوصی آن، از طرف اعتبارسنج عمل می‌کند. یک کلاینت اعتبارسنج منفرد می‌تواند چندین جفت کلید را در خود نگه دارد و اعتبارسنج‌های زیادی را کنترل کند. هر جفت کلید مرتبط با یک اعتبارسنج دقیقاً به 32 اتر نیاز دارد تا فعال شود. واریز کردن اتر بیشتر به یک مجموعه کلید، پتانسیل پاداش را افزایش نمی‌دهد، زیرا هر اعتبارسنج محدود به موجودی مؤثر 32 اتر است. این بدان معنی است که سهام‌گذاری با افزایش‌های 32 اتری انجام می‌شود که هر کدام مجموعه‌ای از کلیدها و موجودی خاص خود را دارند. -بیش از 32 اتر برای یک اعتبارسنج واریز نکنید. این کار پاداش‌های شما را افزایش نخواهد داد و اعتبارسنج تا زمان به‌روزرسانی برنامه‌ریزی‌شده شانگهای قفل خواهد شد. +بیش از 32 اتر برای یک اعتبارسنج واریز نکنید. این کار پاداش‌های شما را زیادتر نمی‌کند. اگر یک آدرس برداشت برای اعتبارسنج تنظیم شده‌ باشد، وجوه بیشتر از 32 اتر به صورت خودکار به این آدرس در طی نوبت اعتبارسنج بعدی واریز خواهد شد. اگر سهام‌گذاری انفرادی برای شما بسیار سخت به نظر می‌رسد، از یک ارائه‌دهنده‌ی سهام‌گذاری به‌عنوان سرویس استفاده کنید، یا اگر با کمتر از 32 اتر کار می‌کنید، استخرهای سهام‌گذاری را بررسی کنید. @@ -155,8 +158,10 @@ _اعتبارسنج_ یک موجودیت مجازی است که بر روی ات اشکالات برابر در کلاینت اقلیت هرگز نهایی نمی‌شوند و بنابراین هرگز منجر به رأی فراگیر نمی‌شوند و صرفاً منجر به جریمه‌های عدم فعالیت و نه برخورد شدید می‌شوند. -

    درباره اهمیت اجرای یک کلاینت اقلیت بیشتر بدانید.

    -

    درباره پیشگیری از برخورد شدید بیشتر بدانید

    + @@ -175,6 +180,19 @@ _اعتبارسنج_ یک موجودیت مجازی است که بر روی ات جریمه‌های آفلاین بودن متناسب با تعداد کلاینت‌های دیگری است که همزمان آفلاین هستند. استفاده از VPS ریسک شدیدتر شدن جریمه‌های آفلاین بودن را تا حد زیادی افزایش می‌دهد و در صورتی که قطعی به اندازه کافی بزرگ باشد، خطر نشت درجه دوم یا کاهش را افزایش می‌دهد. برای به حداقل رساندن خطر خود و شبکه، به کاربران قویاً توصیه می‌شود که سخت‌افزار خود را تهیه کنند و اجرا کنند. + + +هر نوع برداشت از زنجیره بیکن نیازمند آن است که جزئیات رمز برداشت تنظیم شوند. + +سهامگذاران جدید این را در زمان تولید کلید و واریز تنظیم می‌کنند. سهامگذاران کنونی که قبلا این قسمت را تنظیم نکرده‌اند می‌توانند کلیدهایشان را برای پشتیبانی از این عملکرد ارتقا دهند. + +به محض تنظیم کردن اطالاعات رمز برداشت، پرداخت‌های پاداش (اتر جمع شده و بدست آمده از 32 اتر اولیه) به صورت دوره ای و به صورت خودکار به آدرس برداشت توزیع خواهد شد. + +برای باز کردن و بازپس‌گیری کل موجودی تان باید فرایند خروج از اعتبارسنج خود را نیز تکمیل کنید. + +اطلاعات بیشتر درباره برداشت‌های سهامگذاری + + ## بیشتر بخوانید {#further-reading} - [مشکل تنوع کلاینت اتریوم](https://hackernoon.com/ethereums-client-diversity-problem) - _@emmanuelawosika 2022_ diff --git a/src/content/translations/fa/staking/withdrawals/index.md b/src/content/translations/fa/staking/withdrawals/index.md new file mode 100644 index 00000000000..6bee3f0baa9 --- /dev/null +++ b/src/content/translations/fa/staking/withdrawals/index.md @@ -0,0 +1,218 @@ +--- +title: برداشت‌ها از سهام‌گذاری +description: این صفحه به طور خلاصه بیان می‌کند که برداشت‌های سهامگذاری خودکار چه هستند، چطور کار می‌کنند، و سهامگذاران برای دریافت پاداش‌هایشان به چه کار باید انجام بدهند +lang: fa +template: staking +image: ../../../../../assets/staking/leslie-withdrawal.png +alt: لزلی (Leslie) کرگدن، با پاداش سهام گذاری‌اش +sidebarDepth: 2 +summaryPoints: + - ارتقاء شانگهای/کاپلا برداشت‌های سهامگذاری را روی اتریوم فعال کرد + - اپراتورهای اعتبارسنج باید یک آدرس برداشت را برای فعالسازی فراهم کنند + - پاداش ها هر چند روز یک بار به صورت خودکار توزیع می‌شوند + - اعتبارسنج‌هایی که از سهامگذاری کاملاً خارج می‌شوند موجودی باقیمانده خود را دریافت خواهند نمود +--- + + +برداشت‌های سهامگذاری همراه با ارتقاء شانگهای/کاپلا که در 12 آوریل 2023 رخ داد فعال شدند. اطلاعات بیشتر درباره شانگهای/کاپلا + + +**برداشت‌های سهامگذاری** اشاره به انتقال‌های اتر از یک حساب اعتبارسنج روی لایه اجماعی اتریوم (زنجیره بیکن) به لایه اجرایی که می‌تواند در آنجا معامله شود دارند. + +**پرداخت پاداش موجودی اضافه** بیشتر از 32 اتر به صورت خودکار و مرتب به آدرس برداشت متصل به هر اعتبارسنج، که قبلاً یک بار توسط کاربر فراهم شده است ارسال خواهد شد. کاربران همچنین می‌توانند **کاملاً از سهامگذاری خارج شوند**، که کل موجودی اعتبارسنج‌ آنها را باز خواهد کرد. + +## پاداش‌های سهام‌گذاری {#staking-rewards} + +پرداخت پاداش‌ها به صورت خودکار برای حساب‌های اعتبارسنج فعال همراه با حداکثر موجودی مؤثر 32 اتری پردازش می‌شوند. + +هرگونه موجودی بالاتر از 32 اتر که از طریق پاداش‌ها به دست می‌آید، در واقع به اصل کار کمک نمی‌کند یا وزن این اعتبارسنج را در شبکه افزایش نمی‌دهد، و بنابراین به‌طور خودکار هر چند روز یک‌بار به‌عنوان پرداخت پاداش برداشت می‌شود. جدا از ارائه یک باره‌ آدرس برداشت، این پاداش‌ها نیازی به هیچ اقدامی از سوی اپراتور اعتبارسنج ندارند. همه اینها در لایه اجماع فعال می‌شوند، بنابراین هیچ گسی (کارمزد معامله) در هیچ مرحله‌ای مورد نیاز نیست. + +### چطور به اینجا رسیدیم؟ {#how-did-we-get-here} + +اتریوم طی چند سال گذشته تحت چندین ارتقاء شبکه قرار گرفته است و به جای ماینینگ انرژی‌بر که در گذشته وجود داشت، به شبکه‌ای که توسط خود اتریوم ایمن‌سازی شده تبدیل شده است. مشارکت در اجماع روی اتریوم اکنون تحت عنوان "سهامگذاری" شناخته می شود، زیرا شرکت‌کنندگان به‌طور داوطلبانه اتر را قفل کرده‌اند، و آن را برای امکان مشارکت در شبکه "در وضعیت سهامگذاری" قرار داده‌اند. کاربرانی که از قوانین تبعیت می‌کنند پاداش می‌گیرند، و هر تلاشی برای تقلب می‌تواند جریمه شود. + +از زمان راه‌اندازی قرارداد سپرده‌گذاری سهام در نوامبر 2020، برخی از پیشگامان شجاع اتریوم به‌طور داوطلبانه وجوهی را برای فعالسازی «اعتبارسنج‌ها» قفل کرده‌اند، یعنی حساب‌های ویژه‌ای که بر اساس قوانین شبکه،‌حق تصدیق رسمی و پیشنهاد بلوک‌ها را دارند. + +قبل از ارتقاء شانگهای/کاپلا، نمی‌توانید به اتر سهامگذاری شده خود دسترسی داشته باشید یا از آن استفاده کنید. اما الان، می‌توانید انتخاب کنید که پاداش‌های خود را به صورت خودکار در یک حساب منتخب دریافت کنید، و نیز می‌توانید اتر سهامگذاری شده خود را هر زمان که بخواهید برداشت کنید. + +### چگونه آماده شوم؟ {#how-do-i-prepare} + + + +### اطلاعیه های مهم {#important-notices} + +ارائه یک آدرس برداشت، یک قدم ضروری برای هر حساب اعتبارسنج قبل از واجد شرایط بودن آن برای برداشت اتر از موجودی آن است. + + + هر حساب اعتبارسنج می‌تواند فقط یک بار تنها به یک آدرس برداشت اختصاص یابد. پس از انتخاب یک آدرس و ارسال آن به لایه اجماع، نمی‌توان آن را لغو کرد یا دوباره تغییر داد. مالکیت و صحت آدرس ارائه شده را قبل از ثبت دوباره بررسی کنید. + + +در این میان هیچ تهدیدی برای وجوه شما به دلیل ارائه نکردن این مورد وجود ندارد، با این فرض که عبارت بازیابی شما در محیطی آفلاین نگهداری می‌شود و به هیچ وجه به خطر نیفتاده است. عدم افزودن اطلاعات رمز برداشت صرفاً اتر را تا زمانی که آدرس برداشت ارائه شود در حساب اعتبارسنج قفل می‌کند. + +## خروج کامل از سهامگذاری {#exiting-staking-entirely} + +فراهم کردن آدرس برداشت قبل از اینکه _هر_ انتقال وجهی بتواند به خارج از موجودی حساب اعتبارسنج منتقل شود الزامی است. + +کاربرانی که قصد خروج کامل از سهامگذاری و برداشت کامل موجودی خود را دارند، باید پیام "خروج داوطلبانه" را که روند خروج از سهامگذاری را آغاز خواهد کرد با کلیدهای اعتبارسنج امضا و مخابره کنند. این امر با کاربر اعتبارسنج شما انجام می‌شود و در گره اجماع شما ثبت می‌شود، و نیازی به پرداخت گس ندارد. + +فرآیند خروج یک اعتبارسنج از سهامگذاری، بسته به تعداد دیگری که همزمان خارج می‌شوند، زمان متغیری را می‌طلبد. پس از تکمیل، این حساب دیگر مسئول انجام وظایف اعتبارسنج در شبکه نخواهد بود، و دیگر واجد شرایط دریافت پاداش‌ها نیست، و اتر آن دیگر "در وضعیت سهامگذاری" نیست. در این زمان حساب، نشان کاملاً "قابل برداشت" را دریافت خواهد کرد. + +هنگامی که یک حساب نشان "قابل برداشت" را دریافت کند، و اطلاعات رمز برداشت ارائه شدند، کاربر به غیر از انتظار کشیدن کار دیگری لازم نیست انجام بدهد. حساب‌ها به‌طور خودکار و به‌طور مداوم توسط پیشنهادکنندگان بلوک برای وجوه خارج شده واجد شرایط جابجا می‌شوند، و موجودی حساب شما به‌طور کامل (که به عنوان "برداشت کامل" نیز شناخته می‌شود) در جابجایی بعدی منتقل می‌شود. + +## برداشت‌های سهامگذاری چه موقع فعال می‌شوند؟ {#when} + +برداشت‌های سهامگذاری فعال هستند! عملکرد برداشت به عنوان بخشی از ارتقاء شانگهای/کاپلا که در تاریخ 12 آوریل 2023 روی داد فعال شد. + +ارتقاء شانگهای/کاپلا این امکان را فراهم کرد که اتر سهامگذاری شده در درون حساب‌های معمول اتریوم بازپس گرفته شود. این امر حلقه نقدینگی سهامگذاری را بست و اتریوم را یک قدم به مسیر ساختن یک اکوسیستم غیرمتمرکز پایدار، مقیاس‌پذیر و امن نزدیک‌تر کرد. + +- [اطلاعات بیشتر درباره تاریخچه اتریوم](/history/) +- [اطلاعات بیشتر درباره نقشه‌راه اتریوم](/roadmap/) + +## پرداخت برداشت‌ها چگونه انجام می‌شوند؟ {#how-do-withdrawals-work} + +اینکه آیا یک اعتبارسنج مشخص واجد شرایط برداشت است یا نه، توسط وضعیت خود حساب اعتبارسنج تعیین می‌شود. هیچ اطلاعاتی از سوی کاربر در هر زمان معین برای تعیین اینکه آیا یک حساب باید شروع به برداشت کند یا نه لازم نیست - کل فرآیند به طور خودکار توسط لایه اجماع در یک حلقه پیوسته انجام می‌شود. + +### فردی هستید که با توضیحات تصویری راحت‌ترید؟ {#visual-learner} + +این توضیحات برداشت‌های سهامگذاری اتریوم ارائه شده از سوی Finematics را مرور کنید: + + + +### «انتقال» بین اعتبارسنج‌ها {#validator-sweeping} + +زمانی که یک اعتبارسنج قرار است بلوک بعدی را پیشنهاد کند، باید یک صف برداشت ایجاد کند، نهایتاً تا 16 برداشت واجد شرایط. این کار با شروع با شاخص اعتبارسنج 0 انجام می‌شود، یعنی تعیین اینکه آیا برداشت واجد شرایطی برای این حساب طبق قوانین پروتکل وجود دارد یا نه، و در صورت وجود آن را به صف اضافه کند. کار اعتبارسنج تنظیم شده برای پیشنهاد بلوک بعدی از جایی که آخرین بلوک متوقف شده است ادامه می‌یابد و این روند به‌ترتیب به طور نامحدود پیش می‌رود. + + +به یک ساعت آنالوگ فکر کنید. عقربه روی آن به ساعت اشاره می‌کند، در یک جهت پیش می‌رود، از روی هیچ ساعتی نمی‌‌پرد و در نهایت پس از رسیدن به آخرین عدد، دوباره از ابتدا شروع به چرخیدن می‌کند.

    +اکنون به جای اعداد 1 تا 12، تصور کنید ساعت دارای اعداد 0 تا N داشته باشد ( تا ژانویه 2023 تعداد کل حساب های اعتبارسنج که تا کنون در لایه اجماع ثبت شده اند، بیش از 500،000 بوده است).

    +عقربه روی ساعت به اعتبارسنج بعدی اشاره می‌کند که باید برای برداشت‌های واجد شرایط بررسی شود. این روند از عدد 0 شروع می‌شود، و بدون پریدن و رد شدن از هر حساب تا آخر پیش می‌رود. وقتی که به آخرین اعتبارسنج دست یافت، چرخه پیوسته به آغاز مسیر باز می‌گردد. +
    + +#### بررسی یک حساب برای برداشت {#checking-an-account-for-withdrawals} + +در حالی که یک پیشنهاددهنده در حال جابجایی بین اعتبارسنج‌ها برای برداشت‌های احتمالی است، هر اعتبارسنج که بررسی می‌شود با یک سری سوالات کوتاه ارزیابی می‌شود تا مشخص شود که آیا برداشت باید آغاز شود یا نه، و اگر چنین است، چه مقدار اتر باید برداشت شود. + +1. **آیا یک آدرس برداشت ارائه شده است؟** اگر هیچ آدرس برداشتی ارائه نشده است، از حساب عبور می‌کند و هیچ برداشتی انجام نمی‌شود. +2. ** آیا اعتبارسنج خارج شده و قابل برداشت است؟** اگر اعتبارسنج به طور کامل خارج شده باشد، و ما به ایپوکی رسیده باشیم که حساب آن "قابل برداشت" در نظر گرفته شود، برداشت کامل انجام می‌شود. با این کار کل موجودی باقیمانده به آدرس برداشت منتقل می‌شود. +3. **آیا موجودی مؤثر حداکثر 32 اتر است؟** اگر حساب دارای اطلاعات رمز برداشت باشد، به طور کامل از آن خارج نشده باشد، و دارای پاداش های در حال انتظار بالاتر از 32 باشد، یک برداشت جزئی پردازش خواهد شد که فقط پاداش‌های بالای 32 را به آدرس برداشت کاربر منتقل می‌کند. + +تنها دو اقدام وجود دارد که توسط اپراتورهای اعتبارسنج در طول چرخه عمر اعتبارسنج انجام می‌شود که مستقیماً بر این جریان تأثیر می‌گذارد: + +- ارائه اطلاعات رمز برداشت برای فعالسازی هر شکلی از برداشت +- خروج از شبکه، که منجر به برداشت کامل خواهد شد + +### بدون گس {#gas-free} + +این رویکرد برای برداشت‌های سهامگذاری از الزام سهامگذاران به ثبت دستی تراکنشی که درخواست برداشت مقدار خاصی از اتر را دارند، اجتناب می‌کند. این بدان معناست که **نیازی به گس (کارمزد تراکنش) نیست**، و برداشت‌ها نیز برای فضای بلوک لایه اجرایی موجود رقابت نمی‌کنند. + +### هر چند وقت یک‌بار پاداش‌های سهامگذاری را دریافت خواهم کرد؟ {#how-soon} + +حداکثر 16 برداشت را می‌توان در یک بلوک پردازش کرد. با این نرخ، می‌توان 115200 برداشت اعتبارسنج را در روز پردازش کرد (با فرض تلف نشدن هرگونه اسلات). همانطور که در بالا ذکر شد، اعتبارسنج‌های بدون حق برداشت نادیده گرفته می‌شوند، و زمان پایان جابجایی را کاهش می‌دهند. + +با گسترش این محاسبه، می‌توانیم زمان پردازش تعداد معینی از برداشت‌ها را تخمین بزنیم: + + + +| شمار برداشت ها | زمان تکمیل | +| :------------: | :--------: | +| 400,000 | 3.5 روز | +| 500,000 | 4.3 روز | +| 600,000 | 5.2 روز | +| 700,000 | 6.1 روز | +| 800,000 | 7.0 روز | + + + +می‌بینید که اعتبارسنج‌های بیشتر در شبکه سرعت آن را کاهش می‌دهند. افزایش در تعداد اسلات‌های از دست رفته می‌تواند سرعت را به نسبت کاهش دهد، اما این به طور کلی نشان‌دهنده سمت کندتر خروجی‌های احتمالی است. + +## پرسش‌های متداول {#faq} + + +نه، فرآیند ارائه اطلاعات رمز برداشت یک فرایند یک‌باره است و پس از ثبت دیگر قابل تغییر نیست. + + + +با تعیین یک آدرس برداشت لایه اجرا، اطلاعات رمز برداشت آن اعتبارسنج برای همیشه تغییر کرده است. این بدان معناست که اطلاعات رمز قدیمی دیگر عمل نمی‌کنند و اطلاعات رمز جدید به یک حساب لایه اجرا هدایت می‌شود. + +آدرس‌های برداشت می‌توانند یک قرارداد هوشمند (که توسط کد آن کنترل می‌شود)، یا یک حساب دارای مالکیت خارجی (EOA، که توسط کلید خصوصی آن کنترل می‌شود) باشند. در حال حاضر این حساب‌ها هیچ راهی برای انتقال یک پیام به لایه اجماع که نشان‌دهنده تغییر اطلاعات رمز اعتبارسنج باشد ندارند، و افزودن این قابلیت پیچیدگی زائدی را به پروتکل اضافه خواهد کرد. + +به‌عنوان یک راهکار جایگزین تغییر آدرس برداشت برای یک اعتبارسنج خاص، کاربران ممکن است یک قرارداد هوشمند را به‌عنوان آدرس برداشت خود تعیین کنند که می‌تواند چرخش کلید را انجام دهد، مثلاً یک گاوصندوق. کاربرانی که وجوه خود را روی EOA خود تنظیم می‌کنند، می‌توانند یک خروج کامل برای برداشت همه وجوه سهامگذاری شده خود انجام دهند، و سپس با استفاده از اطلاعات رمز جدید مجدداً سهامگذاری کنند. + + + + +اگر بخشی از یک استخر سهامگذاری هستید یا توکن‌های سهامگذاری را نگه می‌دارید، باید با ارائه‌دهنده خود درباره جزئیات بیشتر مربوط به نحوه انجام برداشت‌های سهامگذاری مشورت کنید، چون هر سرویس رویکرد متفاوتی دارد. + +در کل، کاربران باید آزاد باشند اتر سهامگذاری شده خود را پس بگیرند، یا اینکه ارائه‌دهنده‌ مورد استفاده خود را تغییر دهند. اگر یک استخر خاص بیش از حد بزرگ شود، وجوه را می‌توان خارج کرد، بازخرید کرد، و دوباره با یک ارائه‌دهنده کوچکتر سهامگذاری کرد. یا، اگر اتر کافی جمع‌آوری کرده‌اید می‌توانید بروید سراغ سهامگذاری در خانه. + + + + +بله، تا زمانی که اعتبارسنج شما یک آدرس برداشت ارائه کرده باشد. این باید یک بار ارائه شود تا در ابتدا هر شکلی از برداشت را فعال کند، سپس پرداخت‌های پاداش به طور خودکار هر چند روز یک‌بار با هر جابجایی اعتبارسنج فعال می‌شوتد. + + + + +نه، اگر اعتبارسنج شما همچنان در شبکه فعال باشد، برداشت کامل به صورت خودکار انجام نخواهد شد. این امر مستلزم آغاز دستی یک خروج داوطلبانه است. + +به محض اینکه اعتبارسنج فرایند خروج را تکمیل کرد و با فرض اینکه حساب دارای اطلاعات رمز برداشت است، باقیمانده موجودی سپس در طی انتقال اعتبارسنج بعدی برداشت خواهد شد. + + + + +برداشت‌ها به گونه‌ای طراحی شده‌اند که به‌طور خودکار انجام می شوند و هر اتر را که به طور فعال در سهامگذاری مشارکت ندارد منتقل می‌کنند. این امر شامل تمام موجودی حساب‌هایی است که فرایند خروج را تکمیل کرده‌اند. + +امکان درخواست دستی مقادیر خاصی از اتر برای برداشت وجود ندارد. + + + + +به اپراتورهای اعتبارسنج توصیه می‌شود از صفحه برداشت‌های سکوی پرتاب سهامگذاری بازدید کنند، که در آنجا جزئیات بیشتری درباره نجوه آماده‌سازی اعتبارسنج خود برای برداشت‌ها پیدا خواهید کرد. تهیه شده، زمان‌بندی رویدادها و اطلاعات بیشتر درباره چگونگی کار برداشت‌ها. + +برای امتحان اولیه تنظیمات خود در یک شبکه آزمایشی، به صفحه سکوی پرتاب سهامگذاری شبکه آزمایشی Goerli برای شروع مراجعه کنید. + + + + +خیر. به محض اینکه یک اعتبارسنج خارج شود و موجودی کامل آن برداشت شود، هرگونه وجوه اضافی که به آن اعتبارسنج سپرده می‌شود، به‌طور خودکار به آدرس برداشت منتقل خواهد شد. برای سهامگذاری مجدد اتر، یک اعتبارسنج جدید باید فعال شود. + + +## بیشتر بخوانید {#further-reading} + +- [برداشت‌های سکوی پرتاب سهامگذاری](https://launchpad.ethereum.org/withdrawals) +- [پروتکل EIP-4895: برداشت‌های زنجیره بیکن به‌عنوان عملیات‌ها](https://eips.ethereum.org/EIPS/eip-4895) +- [تیم ویراستاران اتریوم - شانگهای](https://www.ethereumcatherders.com/shanghai_upgrade/index.html) +- [PEEPanEIP شماره 94: برداشت اتر سهامگذاری شده (آزمایشی) با Potuz & Hsiao-Wei Wang](https://www.youtube.com/watch?v=G8UstwmGtyE) +- [PEEPanEIP شماره 68: پروپوزال EIP-4895: برداشت‌های خودکار زنجیره بیکن به‌عنوان عملیات با الکس استوکس](https://www.youtube.com/watch?v=CcL9RJBljUs) +- [آشنایی با موجودی مؤثر اعتبارسنج](https://www.attestant.io/posts/understanding-validator-effective-balance/) diff --git a/src/content/translations/fa/web3/index.md b/src/content/translations/fa/web3/index.md index 4592b4c46da..eaa158537ff 100644 --- a/src/content/translations/fa/web3/index.md +++ b/src/content/translations/fa/web3/index.md @@ -1,6 +1,6 @@ --- title: وب 3 چیست و چرا اهمیت دارد? -description: مقدمه‌ای بر وب 3- تکامل بعدی اینترنت - و چرایی اهمیت آن. +description: مقدمه‌ای بر Web3- تکامل بعدی اینترنت - و چرایی اهمیت آن. lang: fa --- @@ -8,19 +8,19 @@ lang: fa متمرکزسازی به فراهم‌سازی امکان حضور میلیاردها نفر در اینترنت کمک کرده است و زیرساخت پایدار و مستحکمی را ایجاد کرده است که بر بستر آن بنا شده است. در عین حال، تعداد انگشت‌شماری از نهادهای متمرکز کنترل بخش‌های وسیعی از اینترنت را در دست دارند و به طور یکجانبه تصمیم می‌گیرند که چه چیزی باید مجاز باشد و چه چیزی نباید مجاز باشد. -وب 3 پاسخی به این معضل است. وب 3 به جای اینترنت در انحصار شرکت‌های بزرگ فناوری، از تمرکززدایی استقبال می‌کند و توسط کاربرانش ساخته می‌شود، گردانده می‌شود و تحت مالکیت آن‌ها است. وب 3 قدرت را به‌جای شرکت‌ها در دست افراد قرار می‌دهد. قبل از اینکه در مورد وب 3 صحبت کنیم، بیایید ببینیم که چطور به اینجا رسیدیم. +وب 3 پاسخی به این معضل است. به جای شبکه‌ای که در انحصار شرکت‌های بزرگ فناوری است، Web3 از تمرکززدایی استقبال می‌کند و توسط کاربرانش ساخته می‌شود، گردانده می‌شود و تحت مالکیت آن‌ها است. وب 3 قدرت را به‌جای شرکت‌ها در دست افراد قرار می‌دهد. قبل از اینکه در مورد وب 3 صحبت کنیم، بیایید ببینیم که چطور به اینجا رسیدیم. -## اینترنت در آغاز راه {#early-internet} +## وب اولیه {#early-internet} -بیشتر مردم اینترنت را چیزی تصور می‌کنند که همیشه همراه زندگی مدرن بوده است – اینترنت اختراع شد و از آن زمان تاکنون وجود داشته است. با این حال، اینترنتی که امروزه می‌شناسیم که کاملاً متفاوت از تصور اولیه است. برای درک بهتر این موضوع، خوب است که تاریخچه‌ی کوتاه اینترنت را به دوره‌های کوچکتر تقسیم کنیم - وب 1.0 و وب 2.0. +بیشتر مردم اینترنت را چیزی تصور می‌کنند که همیشه همراه زندگی مدرن بوده است – اینترنت اختراع شد و از آن زمان تاکنون وجود داشته است. با این حال، اینترنتی که امروزه می‌شناسیم کاملاً متفاوت از تصور اولیه است. برای درک بهتر این موضوع، خوب است که تاریخچه‌ کوتاه اینترنت را به دوره‌های کوچکتر تقسیم کنیم - وب 1.0 و وب 2.0. ### وب 1.0: صرفاً خواندنی (2004-1990) {#web1} -در سال 1989، در سرن، ژنو، تیم برنرز-لی مشغول توسعه‌ی پروتکل‌هایی بود که به اینترنت تبدیل شدند. ایده‌ی او چه بود؟ برای ایجاد پروتکل‌های باز و غیرمتمرکز که امکان اشتراک‌گذاری اطلاعات را از هر نقطه روی زمین فراهم می‌کند. +در سال 1989، در سرن، ژنو، تیم برنرز-لی مشغول توسعه‌ پروتکل‌هایی بود که به اینترنت تبدیل شدند. ایده‌ی او چه بود؟ برای ایجاد پروتکل‌های باز و غیرمتمرکز که امکان اشتراک‌گذاری اطلاعات را از هر نقطه روی زمین فراهم می‌کند. -پیدایش اینترنت که اکنون با نام «وب 1.0» شناخته می‌شود، تقریباً بین سال‌های 1990 تا 2004 رخ داد. اینترنت در وب 1.0 عمدتاً وب‌سایت‌های ثابت متعلق به شرکت‌ها بود و تقریباً هیچ تعاملی بین کاربران - افرادی که به ندرت محتوا تولید می‌کردند- وجود نداشت، که باعث شد به‌عنوان وب صرفاً خواندنی شناخته شود. +پیدایش اولیه اینترنت که اکنون با نام «وب 1.0» شناخته می‌شود، تقریباً بین سال‌های 1990 تا 2004 رخ داد. وب 1.0 عمدتاً وب‌سایت‌های ثابت متعلق به شرکت‌ها بود و تقریباً هیچ تعاملی بین کاربران - افرادی که به ندرت محتوا تولید می‌کردند- وجود نداشت، که باعث شد به‌عنوان وبِ صرفاً خواندنی شناخته شود. ![معماری سرویس‌گیرنده-سرور، نشان‌دهنده‌ی وب 1.0](./web1.png) @@ -34,7 +34,7 @@ lang: fa ## وب 3.0: خواندنی-نوشتنی-داشتنی {#web3} -مفهوم «وب 3.0» توسط گاوین وود، یکی از بنیانگذاران [اتریوم](/what-is-ethereum/) اندکی پس از راه‌اندازی اتریوم در سال 2014 ابداع شد. گاوین راه‌حلی را برای مشکلی که بسیاری از پذیرندگان اولیه رمزارزها احساس می‌کردند به زبان آورد: اینترنت بیش از حد به اعتماد کردن نیاز داشت. به عبارتی دیگر، بیشتر فضای اینترنتی که امروزه مردم می‌شناسند و از آن استفاده می‌کنند، متکی به اعتماد به تعداد انگشت‌شماری از شرکت‌های خصوصی است تا در راستای منافع عمومی عمل کنند. +مفهوم «وب 3.0» توسط گاوین وود، یکی از بنیانگذاران [اتریوم](/what-is-ethereum/) اندکی پس از راه‌اندازی اتریوم در سال 2014 ابداع شد. گاوین راه‌حلی را برای مشکلی که بسیاری از پذیرندگان اولیه رمزارزها احساس می‌کردند به زبان آورد: وب بیش از حد به اعتماد کردن نیاز داشت. به عبارت دیگر، بیشتر فضای اینترنتی که امروزه مردم می‌شناسند و از آن استفاده می‌کنند، متکی به اعتماد به تعداد انگشت‌شماری از شرکت‌های خصوصی است تا در راستای منافع عمومی عمل کنند. ![معماری گره‌ی غیرمتمرکز، نشان‌دهنده‌ی وب 3](./web3.png) @@ -78,11 +78,26 @@ OnlyFans یک سایت محتوای ویژه‌ی بزرگسالان است که وب 2.0 از سازندگان محتوا می‌خواهد که به پلتفرم‌ها اعتماد کنند تا قوانین را تغییر ندهند، اما مقاومت در برابر سانسور ویژگی اصلی یک پلتفرم وب 3 است. +#### سازمان‌های خودمختار غیرمتمرکز (DAOها) {#daos} + +علاوه بر مالکیت داده‌های خود در Web3، می‌توانید با استفاده از توکن‌هایی که مانند سهام یک شرکت عمل می‌کنند، پلتفرم را به‌ عنوان یک گروه در اختیار داشته باشید. DAO به شما امکان می دهد مالکیت غیرمتمرکز یک پلتفرم را هماهنگ کنید و در مورد آینده آن تصمیم بگیرید. + +DAOها از نظر فنی به عنوان قراردادهای هوشمند توافق شده تعریف می شوند که تصمیم‌گیری غیرمتمرکز را بر روی استخری از منابع (توکن ها) خودکار می کنند. کاربران دارای توکن در مورد نحوه مصرف منابع رای می دهند و کد به طور خودکار نتیجه رای‌گیری را اجرا می‌کند. + +با این حال، مردم، بسیاری از جوامع Web3 را به عنوان DAO تعریف می کنند. همه این جوامع، سطوح مختلفی از تمرکززدایی و اتوماسیون با کد دارند. در حال حاضر، ما در حال بررسی این هستیم که DAO چیست و چگونه ممکن است در آینده تکامل یابد. + + +
    درباره DAO ها بیشتر بیاموزید
    + + اطلاعات بیشتر درباره DAO ها + +
    + ### هویت {#identity} -به‌طور سنتی، شما در هر پلتفرمی که استفاده می‌کنید یک حساب کاربری می‌سازید. برای مثال، ممکن است یک حساب توییتر، یک حساب یوتیوب و یک حساب ردیت داشته باشید. می‌خواهید نام نمایش‌داده‌شده به کاربران یا تصویر نمایه‌ی خود را تغییر دهید؟ شما باید این کار را برای هر حساب انجام دهید. در برخی موارد می‌توانید از حساب‌های خود در شبکه‌های اجتماعی برای ورود استفاده کنید، اما این موضوع یک مشکل آشنا را نشان می‌دهد - سانسور. با یک کلیک، این پلتفرم‌ها می‌توانند شما را از کل زندگی آنلاینتان محروم کنند. حتی بدتر از آن، بسیاری از پلتفرم‌ها از شما می‌خواهند که برای ایجاد یک حساب کاربری به آن‌ها اعتماد کنید و اطلاعات هویتی خود را در اختیارشان قرار دهید. +به‌طور سنتی، شما در هر پلتفرمی که استفاده می‌کنید یک حساب کاربری می‌سازید. برای مثال، ممکن است یک حساب توییتر، یک حساب یوتیوب و یک حساب ردیت داشته باشید. می‌خواهید نام نمایش‌داده‌شده یا تصویر نمایه‌ خود را تغییر دهید؟ باید این کار را برای هر حساب انجام دهید. در برخی موارد می‌توانید از حساب‌های خود در شبکه‌های اجتماعی برای ورود استفاده کنید، اما این موضوع یک مشکل آشنا را به همراه دارد - سانسور. با یک کلیک، این پلتفرم‌ها می‌توانند شما را از کل زندگی آنلاین‌تان محروم کنند. حتی بدتر از آن، بسیاری از پلتفرم‌ها از شما می‌خواهند که برای ایجاد یک حساب کاربری به آن‌ها اعتماد کنید و اطلاعات هویتی خود را در اختیارشان قرار دهید. -وب 3 این مشکلات را با فراهم‌سازی امکان کنترل هویت دیجیتال خود برای شما با آدرس اتریوم و نمایه‌ی ENS حل می‌کند. استفاده از یک آدرس اتریوم یک حساب کاربری واحد برای ورود را در سراسر پلتفرم ها فراهم می‌کند که امن، مقاوم در برابر سانسور و ناشناس است. +Web3 با فراهم‌سازی امکان کنترل هویت دیجیتال برای شما با آدرس اتریوم و نمایه‌ ENS، این مشکلات را حل می‌کند. استفاده از یک آدرس اتریوم، یک حساب کاربری واحد برای ورود را در سراسر پلتفرم ها فراهم می‌کند که امن، مقاوم در برابر سانسور و ناشناس است. با اتریوم وارد شوید @@ -90,7 +105,7 @@ OnlyFans یک سایت محتوای ویژه‌ی بزرگسالان است که ### پرداخت‌های بومی {#native-payments} -زیرساخت پرداخت وب 2 به بانک‌ها و پردازشگرهای پرداخت متکی است، به استثنای افرادی که حساب بانکی ندارند یا کسانی که درون مرزهای کشور اشتباهی زندگی می‌کنند. وب 3 از توکن‌هایی مانند [اتر](/eth/) برای ارسال مستقیم پول در مرورگر استفاده می‌کند و به شخص ثالث قابل‌اعتمادی نیاز ندارد. +زیرساخت پرداخت Web2 به بانک‌ها و پردازشگرهای پرداخت متکی است، به استثنای افرادی که حساب بانکی ندارند یا کسانی که درون مرزهای کشور اشتباهی زندگی می‌کنند. Web3 از توکن‌هایی مانند [اتر](/eth/) برای ارسال مستقیم پول در مرورگر استفاده می‌کند و به شخص ثالث قابل‌اعتمادی نیاز ندارد. اطلاعات بیشتر درباره‌ی اتر @@ -98,31 +113,31 @@ OnlyFans یک سایت محتوای ویژه‌ی بزرگسالان است که ## محدودیت‌های وب 3 {#web3-limitations} -علی‌رغم مزایای بی‌شمار وب ۳ در شکل فعلی‌اش، هنوز محدودیت‌های زیادی وجود دارد که اکوسیستم باید آن‌ها را برطرف کند تا شکوفا شود. +علی‌رغم مزایای بی‌شمار Web3 در شکل فعلی‌اش، هنوز محدودیت‌های زیادی وجود دارد که اکوسیستم باید آن‌ها را برطرف کند تا شکوفا شود. ### قابلیت دسترسی {#accessibility} -ویژگی‌های مهم وب 3، مانند ورود به سیستم با اتریوم، در حال حاضر برای همه بدون هزینه در دسترس است. اما، هزینه‌ی نسبی تراکنش‌ها هنوز برای بسیاری گران است. به دلیل کارمزدهای بالای تراکنش، احتمال کمتری وجود دارد که وب 3 در کشورهای کمتر ثروتمند و در حال توسعه مورد استفاده قرار گیرد. در اتریوم، این چالش‌ها از طریق [ارتقای شبکه](/roadmap/) و [راه‌حل‌های مقیاس‌بندی لایه 2](/developers/docs/scaling/) حل می‌شوند. این فناوری آماده است، اما ما به سطوح بالاتری از پذیرش در لایه 2 نیاز داریم تا وب 3 را برای همه در دسترس قرار دهیم. +ویژگی‌های مهم Web3، مانند ورود به سیستم با اتریوم، در حال حاضر برای همه بدون هزینه در دسترس است. اما، هزینه‌ نسبی تراکنش‌ها هنوز برای بسیاری گران است. به دلیل کارمزدهای بالای تراکنش، احتمال کمتری وجود دارد که Web3 در کشورهای کمتر ثروتمند و در حال توسعه مورد استفاده قرار گیرد. در اتریوم، این چالش‌ها از طریق پیاده‌سازی [نقشه راه](/roadmap/) و [راه‌حل‌های مقیاس‌پذیری لایه 2](/developers/docs/scaling/) حل می‌شوند. این فناوری آماده است، اما ما به سطوح بالاتری از پذیرش در لایه 2 نیاز داریم تا Web3 را برای همه در دسترس قرار دهیم. ### تجربه‌ی کاربری {#user-experience} -موانع فنی برای ورود به استفاده از وب 3 در حال حاضر بسیار زیاد است. کاربران باید نگرانی‌های امنیتی را درک کنند، اسناد فنی پیچیده را درک کنند و با رابط‌های کاربری غیرمعمول کار کنند. [ارائه‌دهندگان کیف پول](/wallets/find-wallet/)، به‌ویژه، برای حل این مشکل تلاش می‌کنند، اما قبل از پذیرش انبوه وب 3 به پیشرفت بیشتری نیاز است. +موانع فنی برای ورود به استفاده از Web3 در حال حاضر بسیار زیاد است. کاربران باید نگرانی‌های امنیتی را درک کنند، اسناد فنی پیچیده را درک کنند و با رابط‌های کاربری غیرمعمول کار کنند. [ارائه‌دهندگان کیف پول](/wallets/find-wallet/)، به‌ویژه، برای حل این مشکل تلاش می‌کنند، اما قبل از پذیرش انبوه Web3 به پیشرفت بیشتری نیاز است. ### آموزشی {#education} -وب 3 پارادایم‌های جدیدی را معرفی می‌کند که نیازمند یادگیری مدل‌های ذهنی متفاوتی نسبت به مدل‌های استفاده شده در وب 2.0 هستند. هنگای که وب 1.0 در اواخر دهه‌ی 1990 رفته‌رفته محبوبیت پیدا کرد، نیاز به یادگیری به شکلی مشابه به وجود آمد. طرفداران شبکه‌ی جهانی وب از تعداد زیادی تکنیک آموزشی برای آموزش مردم استفاده کردند؛ از استعاره‌های ساده (بزرگراه اطلاعات، مرورگرها، گشت و گذار در وب) گرفته تا [پخش های تلویزیونی](https://www.youtube.com/watch?v=SzQLI7BxfYI). وب 3 سخت نیست، اما متفاوت است. ابتکارات آموزشی که کاربران وب 2 را از این پارادایم‌های وب 3 آگاه می‌کند برای موفقیت آن حیاتی است. +Web3 پارادایم‌های جدیدی را معرفی می‌کند که نیازمند یادگیری مدل‌های ذهنی متفاوتی نسبت به مدل‌های استفاده شده در Web2.0 هستند. هنگامی که Web1.0 در اواخر دهه‌ 1990 رفته‌رفته محبوبیت پیدا کرد، نیاز به یادگیری به شکلی مشابه به وجود آمد. طرفداران شبکه‌ جهانی وب از تعداد زیادی تکنیک آموزشی برای آموزش مردم استفاده کردند؛ از استعاره‌های ساده (بزرگراه اطلاعات، مرورگرها، گشت و گذار در وب) گرفته تا [برنامه‌های تلویزیونی](https://www.youtube.com/watch?v=SzQLI7BxfYI). Web3 سخت نیست، اما متفاوت است. ابتکارات آموزشی که کاربران Web2 را از این پارادایم‌های Web3 آگاه می‌کند برای موفقیت آن حیاتی هستند. -Ethereum.org از طریق [برنامه‌ی ترجمه](/contributing/translation-program/)، با هدف ترجمه‌ی محتوای مهم اتریوم به زبان‌های هر چه بیشتر، به آموزش وب 3 کمک می‌کند. +Ethereum.org از طریق [برنامه‌ ترجمه](/contributing/translation-program/) ما با هدف ترجمه‌ محتوای مهم اتریوم به زبان‌های هر چه بیشتر، به آموزش Web3 کمک می‌کند. ### زیرساخت متمرکز {#centralized-infrastructure} -اکوسیستم وب 3 جوان است و به سرعت در حال تکامل است. در نتیجه، در حال حاضر وب 3 عمدتاً به زیرساخت‌های متمرکز (گیت‌هاب، توییتر، دیسکورد و غیره) بستگی دارد. بسیاری از شرکت‌های وب 3 به سرعت در حال تلاش برای پر کردن این شکاف‌ها هستند، اما ایجاد زیرساخت‌های باکیفیت و قابل اعتماد زمان می‌برد. +اکوسیستم Web3 جوان است و به سرعت در حال تکامل است. در نتیجه، در حال حاضر عمدتاً به زیرساخت‌های متمرکز (گیت‌هاب، توییتر، دیسکورد و غیره) متکی است. بسیاری از شرکت‌های Web3 به سرعت در حال تلاش برای پر کردن این شکاف‌ها هستند، اما ایجاد زیرساخت‌های باکیفیت و قابل اعتماد زمان می‌برد. ## آینده‌ای غیرمتمرکز {#decentralized-future} -وب 3 یک اکوسیستم جوان و در حال تکامل است. گاوین وود این اصطلاح را در سال 2014 ابداع کرد، اما بسیاری از این ایده‌ها به تازگی به واقعیت تبدیل شده‌اند. تنها در سال گذشته، افزایش قابل‌توجهی در علاقه به ارزهای دیجیتال، بهبود راه‌حل‌های مقیاس‌بندی لایه 2، آزمایش‌های عظیم با اشکال جدید حکومت‌داری و انقلاب‌هایی در هویت دیجیتال وجود داشته است. +Web3 یک اکوسیستم جوان و در حال تکامل است. گاوین وود این اصطلاح را در سال 2014 ابداع کرد، اما بسیاری از این ایده‌ها به تازگی به واقعیت تبدیل شده‌اند. تنها در سال گذشته، افزایش قابل‌توجهی در علاقه به ارزهای دیجیتال، بهبود راه‌حل‌های مقیاس‌‌پذیری لایه 2، آزمایش‌های عظیم با اشکال جدید حاکمیت و انقلاب‌هایی در هویت دیجیتال وجود داشته است. -ما تنها در ابتدای ایجاد اینترنت بهتر با وب 3 هستیم، اما با ادامه‌ی بهبود زیرساخت‌هایی که از آن پشتیبانی می‌کند، آینده‌ی اینترنت روشن به نظر می‌رسد. +ما تنها در ابتدای ایجاد وب بهتر با Web3 هستیم، اما با ادامه‌ بهبود زیرساخت‌هایی که از آن پشتیبانی می‌کند، آینده‌ اینترنت روشن به نظر می‌رسد. ## چطور می‌توانم مشارکت کنم {#get-involved} @@ -134,7 +149,7 @@ Ethereum.org از طریق [برنامه‌ی ترجمه](/contributing/translat ## بیشتر بخوانید {#further-reading} -وب 3 تعریف سفت و محکمی ندارد. شرکت‌کنندگان مختلف جامعه دیدگاه‌های متفاوتی در مورد آن دارند. چند نمونه از آن‌ها در ادامه ذکر شده است: +Web3 تعریف سفت و محکمی ندارد. شرکت‌کنندگان مختلف جامعه، دیدگاه‌های متفاوتی در مورد آن دارند. چند نمونه از آن‌ها در ادامه ذکر شده است: - [وب 3 چیست؟ توضیح تعامل غیرمتمرکز آینده](https://www.freecodecamp.org/news/what-is-web3/) – _نادر دبیت_ - [درک وب 3](https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae) – _ جاش استارک_ @@ -142,3 +157,5 @@ Ethereum.org از طریق [برنامه‌ی ترجمه](/contributing/translat - [چرا تمرکززدایی مهم است](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) - _کریس دیکسون_ - [فضای وب 3](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) – _a16z_ - [بحث وب ۳](https://www.notboring.co/p/the-web3-debate?s=r) - _پکی مک‌کورمیک_ + + diff --git a/src/content/translations/fa/web3/web2.png b/src/content/translations/fa/web3/web2.png new file mode 100644 index 0000000000000000000000000000000000000000..b553e3f75bef54d83d13e432ee0df1b436d34171 GIT binary patch literal 138917 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� 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
    KF8qAzabaa>ARPR$fexQqQo)w2Juaqzj^xS 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 SP%ZBO0000 یک پروتکل دانش صفر روشی است که به وسیلۀ آن یک طرف (اثبات‌کننده) می‌تواند به طرف دیگر (تاییدکننده) ثابت کند که چیزی درست است، بدون این‌ که هیچ اطلاعاتی جز این واقعیت که این عبارت خاص درست است فاش کند. + +اثبات‌های دانش صفر در طول سالیان بهبود یافته‌اند و اکنون در چندین اپلیکیشن در دنیای واقعی مورد استفاده قرار می‌گیرند. + +## چرا به اثبات دانش صفر نیاز داریم؟ {#why-zero-knowledge-proofs-are-important} + +اثبات‌ دانش صفر نشان‌دهندۀ یک پیشرفت چشمگیر در رمزنگاری کاربردی بود، زیرا وعدۀ بهبود امنیت اطلاعات برای افراد را می‌داد. در نظر بگیرید که چگونه می‌توانید ادعای خود (مثلاً «من شهروند کشور X هستم») را به یک طرف دیگر (مثلاً یک ارائه‌دهندۀ خدمات) اثبات کنید. برای اثبات ادعای خود می‌بایست «شواهدی» مانند پاسپورت ملی یا گواهینامۀ رانندگی ارائه دهید. + +اما این شیوه مشکلاتی دارد، بیش از همه، فقدان حریم خصوصی. زیرا اطلاعات شناسایی شخصی یا به‌اختصار PII اشتراک‌گذاری‌شده با سرویس‌های شخص ثالث، در پایگاه‌های دادۀ مرکزی ذخیره می‌شود که در برابر هک آسیب‌پذیرند. هم‌زمان با اهمیت یافتن سرقت هویت، درخواست‌ها برای ابزارهایی با قابلیت حفاظت بیشتر از حریم خصوصی به هنگام اشتراک‌گذاری اطلاعات حساس افزایش یافته است. + +اثبات دانش صفر با حذف نیاز به افشای اطلاعات برای اثبات اعتبار ادعاها، این مشکل را حل می‌کند. پروتکل دانش صفر، از گزاره (که «شاهد» نامیده می‌شود) به‌ عنوان ورودی استفاده می‌کند تا یک اثبات موجز برای اعتبار آن ایجاد کند. این اثبات، تضمین‌های محکمی برای صحت یک گزاره بدون افشای اطلاعات مورد استفاده در ایجاد آن ارائه می‌دهد. + +با رجوع به مثال قبلی، تنها مدرکی که برای اثبات ادعای شهروندی خود نیاز دارید، اثبات دانش صفر است. تاییدکننده تنها می‌بایست بررسی کند که آیا برخی از ویژگی‌های اثبات درست است یا نه تا متقاعد شود که گزارۀ اصلی نیز درست است. + +## اثبات دانش صفر چکونه کار میکند؟ {#how-do-zero-knowledge-proofs-work} + +اثبات دانش صفر به شما امکان می‌دهد که صحت یک گزاره را اثبات کنید، بدون این‌که محتوای آن گزاره را به اشتراک بگذارید یا چگونگی کشف حقیقت را فاش کنید. برای ممکن ساختن این امر، پروتکل‌های دانش صفر بر الگوریتم‌هایی تکیه می‌کنند که برخی داده‌ها را به ‌عنوان ورودی می‌گیرند و «درست» یا «نادرست» را به ‌عنوان خروجی برمی‌گردانند. + +یک پروتکل دانش صفر باید معیارهای زیر را برآورده کند: + +1. **کامل بودن**: اگر ورودی معتبر باشد، پروتکل دانش صفر همیشه پاسخ «درست» را برمی‌گرداند. از این رو، اگر گزارۀ اصلی درست باشد و اثبات‌کننده و تایید‌کننده صادقانه عمل کنند، اثبات را می‌توان پذیرفت. + +2. **صحت:** اگر ورودی نامعتبر باشد، از نظر تئوری غیرممکن است که پروتکل دانش صفر فریب بخورد تا پاسخ «درست» را بازگرداند. از این رو، یک اثبات‌کنندۀ دروغگو نمی‌تواند یک تاییدکنندۀ صادق را فریب دهد تا یک گزارۀ نامعتبر را معتبر بداند (مگر با یک احتمال ناچیز). + +3. **دانش صفر**: تاییدکننده، چیزی دربارۀ یک گزاره فراتر از اعتبار یا نادرستی آن یاد نمی‌گیرد (آن‌ها از گزاره، «دانش صفر» دارند). این الزام همچنین مانع می‌شود که تاییدکننده از طریق اثبات، به ورودی اصلی (محتوای گزاره) دست یابد. + +در شکل اولیه، یک اثبات دانش صفر از سه عنصر تشکیل شده است: **شاهد**،**چالش**، و **پاسخ**. + +- **شاهد**: با استفاده از اثبات دانش صفر، اثبات‌کننده می‌خواهد آگاهی خود از برخی اطلاعات محرمانه را اثبات کند. اطلاعات محرمانه، «شاهد» اثبات است، و آگاهی مفروض اثبات‌کننده درباره شاهد، مجموعه‌ای از پرسش‌ها را تعیین می‌کند که تنها از سوی یک طرف مطلع می‌تواند پاسخ داده شود. بنابراین، اثبات‌کننده فرایند اثبات را با انتخاب تصادفی یک پرسش، برآورد پاسخ و ارسال آن برای تاییدکننده آغاز می‌کند. + +- **چالش**: تاییدکننده به‌ طور تصادفی پرسش دیگری را از مجموعه انتخاب می‌کند و از اثبات‌کننده می‌خواهد که به آن پاسخ دهد. + +- **پاسخ**: اثبات‌کننده پرسش را می‌پذیرد، پاسخ را برآورد می‌کند و به تاییدکننده بازمی‌گرداند. پاسخ اثبات‌کننده، به تاییدکننده اجازه می‌دهد که بررسی کند آیا اولی واقعاً به شاهد دسترسی دارد یا خیر. برای اطمینان از این‌که اثبات‌کننده حدس‌های کورکورانه نمی‌زند و پاسخ‌های صحیحش از سر تصادف و شانس نیست، تاییدکننده سؤال‌های بیشتری می‌پرسد. با تکرار چندبارۀ این تعامل تا زمانی که رضایت تاییدکننده جلب شود، احتمال جعل شدن دانش شاهد از سوی اثبات کننده به میزان قابل توجهی کاهش می‌یابد. + +موارد بالا، ساختار یک «اثبات دانش صفر تعاملی» را شرح می‌دهد. پروتکل‌های اولیۀ دانش صفر از اثبات تعاملی استفاده می‌کردند، طبق این پروتکل‌ها، تایید اعتبار یک گزاره نیازمند ارتباط رفت و برگشتی میان اثبات‌کننده‌ها و تاییدکننده‌ها بود. + +یک مثال خوب که نحوۀ کار اثبات‌های تعاملی را روشن می‌کند، داستان معروف [غار علی بابا](https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave) از ژان ژاک کویسکوتر است. در این داستان، پگی (اثبات‌کننده) می‌خواهد بدون فاش کردن عبارت رمز، به ویکتور (تاییدکننده) ثابت کند که آن عبارت را می‌داند تا دری جادویی را باز کند. + +### اثبات دانش صفر غیرتعاملی {#non-interactive-zero-knowledge-proofs} + +هرچند اثبات تعاملی یک انقلاب محسوب می‌شد، اما کارایی چندانی نداشت، زیرا مستلزم این بود که دو طرف در دسترس باشند و به‌ طور مکرر با هم تعامل داشته باشند. حتی اگر یک تاییدکننده به صداقت یک اثبات‌کننده اعتقاد داشته باشد، اثبات برای تایید مستقل در دسترس نخواهد بود (محاسبۀ یک اثبات جدید نیازمند مجموعۀ جدیدی از پیام‌ها بین اثبات‌کننده و تاییدکننده است). + +برای حل این مشکل، مانوئل بلوم، پل فلدمن و سیلویو میکالی اولین [اثبات‌های دانش صفر غیرتعاملی](https://dl.acm.org/doi/10.1145/62212.62222) را پیشنهاد کردند که در آن اثبات‌کننده و تاییدکننده یک کلید مشترک دارند. این کلید اجازه می‌دهد که اثبات‌کننده دانش خود از برخی اطلاعات (به‌ عنوان مثال شاهد) را بدون ارائۀ خود اطلاعات اثبات کند. + +برخلاف اثبات‌های تعاملی، اثبات‌های غیرتعاملی فقط به یک دور ارتباط بین شرکت‌کنندگان (اثبات‌کننده و تاییدکننده) نیاز دارند. اثبات‌کننده، برای محاسبۀ اثبات دانش صفر، اطلاعات محرمانه را به یک الگوریتم ویژه می‌فرستد. این اثبات برای تاییدکننده ارسال می‌شود، و تاییدکننده با استفاده از الگوریتم دیگری بررسی می‌کند که آیا اثبات‌کننده اطلاعات محرمانه را می‌داند یا خیر. + +اثبات غیرتعاملی، ارتباط بین اثبات‌کننده و تاییدکننده را کاهش می‌دهد و اثبات‌کننده‌های دانش صفر را کارآمدتر می‌کند. علاوه بر آن، به‌محض تولید هر اثبات، برای تایید اشخاص دیگر (به شرط داشتن کلید مشترک و الگوریتم تایید) در دسترس است. + +اثبات‌ غیرتعاملی پیشرفتی برای فناوری دانش صفر محسوب می‌شد و باعث توسعۀ سیستم‌های اثبات مورد استفادۀ امروزی شد. در زیر به معرفی انواع آن‌ می‌پردازیم: + +### انواع اثبات دانش صفر {#types-of-zero-knowledge-proofs} + +#### ZK-SNARKs {#zk-snarks} + +ZK-SNARK مخفف عبارت **Zero-Knowledge Succinct Non-Interactive Argument of Knowledge** است. پروتکل ZK-SNARK دارای ویژگی‌های زیر است: + +- **دانش صفر**: یک تاییدکننده می‌تواند یکپارچگی یک گزاره را بدون دانستن چیز دیگری در مورد آن گزاره تایید کند. تنها دانش تاییدکننده از گزاره، درست یا نادرست بودن آن است. + +- **موجز**: اثبات دانش صفر کوچک‌تر از شاهد، و به‌سرعت قابل تایید است. + +- **غیرتعاملی**: اثبات «غیرتعاملی» است، زیرا اثبات‌کننده و تاییدکننده فقط یک دور باهم تعامل دارند، برخلاف اثبات‌های تعاملی که به چندین دور ارتباط نیاز دارند. + +- **استدلال**: اثبات، شرط «صحت» را برآورده می‌کند، بنابراین تقلب بسیار بعید است. + +- **(از) دانش**: اثبات دانش صفر بدون دسترسی به اطلاعات محرمانه (شاهد) قابل ساخت نیست. برای اثبات‌کننده‌ای که شاهد ندارد، اگر نگوییم غیرممکن، اما دشوار است که یک اثبات دانش صفر معتبر را محاسبه کند. + +«کلید مشترک» که قبلاً به آن اشاره کردیم، به پارامترهای عمومی‌ اشاره دارد که اثبات‌کننده و تاییدکننده توافق می‌کنند از آن‌ها در تولید و تایید شواهد استفاده کنند. تولید پارامترهای عمومی (که در مجموع، به ‌عنوان رشتۀ مرجع مشترک یا به‌اختصار CRS شناخته می‌شود) به دلیل اهمیت آن در امنیت پروتکل، یک عملیات حساس است. اگر آنتروپی (تصادفی بودن) مورد استفاده در تولید CRS به دست یک اثبات‌کنندۀ نااهل بیفتد، ممکن است اثبات‌های تقلبی را محاسبه کنند. + +[محاسبات چندجانبه که به‌اختصار MPC گفته می‌شود](https://en.wikipedia.org/wiki/Secure_multi-party_computation)، راهی برای کاهش ریسک در تولید پارامترهای عمومی است. در این نوع محاسبات، چندین طرف در یک [مراسم راه‌اندازی مورد اعتماد](https://zkproof.org/2021/06/30/setup-ceremonies/amp/) شرکت می‌کنند، که در آن هر فرد مقادیری تصادفی برای تولید CRS ارائه می‌کند. تا زمانی که یک طرف صادق بخشی از آنتروپی خود را از بین ببرد، پروتکل ZK-SNARK سلامت محاسباتی را حفظ می‌کند. + +راه‌اندازی‌های مورد اعتماد، کاربران را ملزم می‌کنند در تولید پارامتر به شرکت‌کنندگان اعتماد کنند. با این حال، توسعۀ ZK-STARKs پروتکل‌های اثباتی را فعال کرده است که با یک راه‌اندازی غیرمعتمد کار می‌کنند. + +#### ZK-STARKs {#zk-starks} + +ZK-STARK مخفف عبارت **Zero-Knowledge Scalable Transparent Argument of Knowledge** است. ZK-STARKها مشابه ZK-SNARKها هستند، با این تفاوت که ویژگی‌های زیر را دارند: + +- **مقیاس‌پذیر**: در مواقعی که اندازۀ شاهد بزرگ‌تر است، ZK-STARK در ایجاد و تایید مدارک، سریع‌تر از ZK-SNARK عمل می‌کند. با بزرگ‌تر شدن شاهد، زمان‌ مورد نیاز برای اثبات و تایید توسط اثبات‌های STARK تنها اندکی افزایش پیدا می‌کند (زمان‌های اثبات‌کننده و تاییدکنندۀ SNARK با افزایش اندازۀ شاهد به صورت خطی افزایش می‌یابند). + +- **شفاف**: برای ایجاد پارامترهای عمومی به منظور اثبات و تایید، ZK-STARK به جای این‌که به راه‌اندازی مورد اعتماد متکی باشد، به تصادف قابل تایید عمومی متکی است. بنابراین، در مقایسه با ZK-SNARK شفاف‌تر هستند. + +ZK-STARKها، نسبت به ZK-SNARKها اثبات‌های بزرگ‌تری تولید می‌کنند، به این معنی که معمولاً منابع/هزینۀ بیشتری برای تایید نیاز دارند. با این حال، ممکن است در برخی موارد (مانند اثبات مجموعه داده‌های بزرگ)، ZK-STARK نسبت به ZK-SNARK مقرون‌به‌صرفه‌تر باشد. + +## موارد استفادۀ اثبات دانش صفر {#use-cases-for-zero-knowledge-proofs} + +### پرداخت‌های ناشناس {#anonymous-payments} + +پرداخت‌های کارت اعتباری اغلب برای چندین طرف، از جمله ارائه‌دهندۀ خدمات پرداخت، بانک‌ها و سایر اشخاص ذینفع (مانند مقامات دولتی) قابل مشاهده است. هرچند نظارت مالی برای شناسایی فعالیت‌های غیرقانونی مزیت‌هایی دارد، اما حریم خصوصی شهروندان عادی را نیز تضعیف می‌کند. + +رمزارزها به‌ عنوان ابزاری در خدمت کاربران، برای انجام معاملات محرمانه و همتا به همتا در نظر گرفته شده بودند. اما بیشتر تراکنش‌های ارزهای دیجیتال در بلاک‌چین‌های عمومی به طور آشکار قابل مشاهده‌اند. هویت‌ کاربران اغلب مستعار است یا به طور عمدی به هویت‌ دنیای واقعی آن‌ها مرتبط می‌شود (مثلاً با قرار دادن آدرس‌های ETH در پروفایل‌های توییتر یا گیت‌هاب)، یا ممکن است با استفاده از تجزیه و تحلیل داده‌های اولیه و آفچین، با هویت‌ دنیای واقعی آن‌ها مرتبط شود. + +«سکه‌های حریم خصوصی» خاصی وجود دارد که برای تراکنش‌های کاملاً ناشناس طراحی شده‌اند. بلاک‌چین‌های متمرکز بر حریم خصوصی، مانند Zcash و Monero، از جزئیات تراکنش، از جمله آدرس‌های فرستنده/گیرنده، نوع دارایی، مقدار، و جدول زمانی تراکنش محافظت می‌کنند. + +شبکه‌های بلاک‌چین متمرکز بر حریم خصوصی با استفاده از فناوری دانش صفر در پروتکل، به گره‌ها اجازه می‌دهند تا تراکنش‌ها را بدون نیاز به دسترسی به داده‌های تراکنش تایید کنند. + +اثبات‌ دانش صفر همچنین برای ناشناس کردن تراکنش‌ها در بلاک‌چین‌های عمومی استفاده می‌شود. به عنوان مثال، Tornado Cash یک سرویس غیرمتمرکز و غیرسرپرستی است که به کاربران اجازه می‌دهد تا تراکنش‌های محرمانه را در اتریوم انجام دهند. Tornado Cash از اثبات دانش صفر برای مخفی کردن جزئیات تراکنش و تضمین حریم خصوصی مالی استفاده می‌کند. متأسفانه، به این دلیل که ابزارهای حفظ حریم خصوصی «انتخابی» هستند، با فعالیت‌های غیرقانونی همراهند. برای غلبه بر این امر، حریم خصوصی در نهایت باید به پیش‌فرض در بلاک‌چین‌های عمومی تبدیل شود. + +### حفاظت از هویت {#identity-protection} + +سیستم‌های کنونی مدیریت هویت، اطلاعات شخصی را در معرض خطر قرار می‌دهند. اثبات دانش صفر به افراد کمک می‌کند تا هویت خود را تایید، و در عین حال از اطلاعات حساس محافظت کنند. + +اثبات دانش صفر به‌ویژه در زمینۀ [هویت غیرمتمرکز](/decentralized-identity/) مفید است. هویت غیرمتمرکز (که «هویت خودمختار» نیز نامیده می‌شود) توانایی کنترل دسترسی به شناسه‌های شخصی را به فرد می‌دهد. اثبات شهروندی بدون فاش کردن جزئیات شناسۀ مالیاتی یا اطلاعات گذرنامه، نمونۀ خوبی است که نشان می‌دهد چگونه فناوری دانش صفر هویت غیرمتمرکز را امکان‌پذیر می‌کند. + +### احراز هویت {#authentication} + +استفاده از خدمات آنلاین پلتفرم‌ها مستلزم اثبات هویت و حق دسترسی شما به آن پلتفرم‌ها است. این امر اغلب مستلزم ارائۀ اطلاعات شخصی مانند نام، آدرس ایمیل، تاریخ تولد و غیره است. همچنین ممکن است لازم باشد رمزهای عبور طولانی را به خاطر بسپارید یا در خطر از دست دادن دسترسی باشید. + +با این حال، اثبات‌ دانش صفر می‌تواند احراز هویت را هم برای پلتفرم‌ها و هم برای کاربران ساده‌ کند. هنگامی که یک ZK-proof با استفاده از ورودی‌های عمومی (مانند داده‌هایی که عضویت کاربر در پلتفرم را تایید می‌کند) و ورودی‌های خصوصی (مانند جزئیات کاربر) تولید شد، کاربر می‌تواند به‌سادگی آن را برای احراز هویت خود در زمانی که نیاز به دسترسی دارد ارائه کند. این امر تجربۀ کاربران را بهبود می‌بخشد و سازمان‌ها را از نیاز به ذخیرۀ حجم عظیمی از اطلاعات کاربران معاف می‌کند. + +### محاسبه قابل تایید {#verifiable-computation} + +محاسبات قابل تایید یکی دیگر از کاربردهای فناوری اثبات دانش صفر برای بهبود طرح‌های بلاک‌چین است. محاسبه قابل تایید به ما امکان می‌دهد ضمن حفظ نتایج قابل تایید، محاسبات را به نهاد دیگری برون‌سپاری کنیم. آن نهاد نتیجه را همراه با اثباتی که تایید می‌کند برنامه به‌درستی اجرا شده است، ارسال می‌کند. + +اهمیت اساسی محاسبه قابل تایید، در بهبود سرعت پردازش بلاک‌چین‌ها بدون کاهش امنیت است. درک این موضوع مستلزم دانستن تفاوت‌‌های راه‌حل‌های پیشنهادی برای مقیاس‌پذیری اتریوم است. + +[راه‌حل‌های مقیاس‌پذیری آنچین](/developers/docs/scaling/#on-chain-scaling)، مانند شاردینگ، نیاز به اصلاح گستردۀ لایۀ پایۀ بلاک‌چین دارند. با این حال، این رویکرد بسیار پیچیده است و اشتباهات در پیاده‌سازی می‌تواند مدل امنیتی اتریوم را تضعیف کند. + +[راه‌حل‌های مقیاس‌پذیری آفچین](/developers/docs/scaling/#off-chain-scaling) نیازی به طراحی مجدد پروتکل هستۀ اتریوم ندارند. در عوض، برای بهبود توان عملیاتی در لایۀ پایۀ اتریوم به یک مدل محاسباتی برون‌سپاری شده تکیه می‌کنند. + +در عمل این‌گونه کار می‌کنند: + +- اتریوم به جای پردازش هر تراکنش، اجرا را در یک زنجیرۀ جداگانه بارگذاری می‌کند. + +- پس از پردازش تراکنش‌ها، زنجیرۀ دیگر، نتایج را برای اعمال به حالت اتریوم برمی‌گرداند. + +در اینجا، مزیت این است که اتریوم نیازی به اجرا ندارد و فقط باید نتایج حاصل از محاسبات برون‌سپاری‌شده را در حالت خود اعمال کند. این امر ازدحام شبکه را کاهش می‌دهد و در عین حال سرعت تراکنش را بهبود می‌بخشد (پروتکل‌های آفچین برای اجرای سریع‌تر بهینه می‌شوند). + +زنجیره نیاز به روشی دارد تا معاملات آفچین را بدون اجرای مجدد آن‌ها اعتبارسنجی کند، در غیر این صورت ارزش اجرای آفچین از بین می‌رود. + +اینجا همان جایی است که محاسبه قابل تایید وارد عمل می‌شود. هنگامی که یک گره، تراکنشی را خارج از اتریوم اجرا می‌کند، برای اثبات صحت اجرای آفچین، اثبات دانش صفر را ارائه می‌دهد. این اثبات (که [اثبات اعتبار](/glossary/#validity-proof) نامیده می‌شود) معتبر بودن یک تراکنش را تضمین می‌کند و به اتریوم اجازه می‌دهد تا نتیجه را در حالت خود اعمال کند، بدون این‌که انتظار داشته باشد کسی آن را مورد تردید قرار دهد. + +[رول آپ‌های دانش صفر](/developers/docs/scaling/zk-rollups) و [ولیدیوم‌ها](/developers/docs/scaling/validium/) دو راه‌حل مقیاس‌پذیری آفچین هستند که از اثبات اعتبار برای ارائۀ مقیاس‌پذیری ایمن استفاده می‌کنند. این پروتکل‌ها هزاران تراکنش را به صورت آف‌چین اجرا می‌کنند و اثبات‌هایی را برای تایید در شبکۀ اتریوم ارائه می‌کنند. این نتایج را می‌توان بلافاصله پس از تایید اثبات اعمال کرد که به اتریوم اجازه می‌دهد تراکنش‌های بیشتری را بدون افزایش محاسبه در لایۀ پایه پردازش کند. + +### کاهش رشوه و تبانی در رای‌گیری آنچین {#secure-blockchain-voting} + +طرح‌های رای‌گیری بلاک‌چین ویژگی‌های مناسب زیادی دارند: آن‌ها کاملاً قابل ممیزی، ایمن در برابر حملات، مقاوم در برابر سانسور و عاری از محدودیت‌های جغرافیایی هستند. اما حتی طرح‌های رای‌گیری آنچین نیز از مشکل **تبانی** مصون نیستند. + +تبانی که به عنوان «هماهنگی برای محدود کردن رقابت آزاد از طریق فریب دادن، گول زدن و گمراه کردن دیگران» تعریف می‌شود، ممکن است از طریق یک طرف بدخواه که با ارائۀ رشوه بر رای‌گیری تاثیر می‌گذارد، عملی شود. به عنوان مثال، آلیس ممکن است از باب رشوه بگیرد تا به `گزینۀ B` رأی دهد، حتی اگر ترجیح خودش `گزینۀ A` باشد. + +رشوه و تبانی، اثربخشی هر فرایندی را که از رای دادن به عنوان مکانیسم سیگنال‌دهی استفاده می‌کند کاهش می‌دهد (به‌ویژه در جایی که کاربران می‌توانند نحوۀ رای دادن خود را ثابت کنند). این امر می‌تواند عواقب قابل توجهی داشته باشد، به‌ویژه در مواردی که آرا تعیین‌کنندۀ تخصیص منابع کمیاب هستند. + +برای مثال، [مکانیسم‌های تامین مالی ثانویه](https://www.radicalxchange.org/concepts/plural-funding/) برای سنجش و اولویت‌‌بندی گزینه‌های خاص از میان پروژه‌های مختلف نفع عمومی، بر اعانه‌ها تکیه می‌کنند. هر اعانه به عنوان یک «رای» برای یک پروژۀ خاص محسوب می‌شود و هر پروژه‌ای که رای بیشتری بیاورد وجوه بیشتری از استخر مربوطه دریافت می‌کند. + +استفاده از رای‌گیری آنچین، تامین مالی ثانویه را مستعد تبانی می‌کند: تراکنش‌های بلاک‌چین عمومی هستند، بنابراین رشوه‌دهندگان می‌توانند فعالیت آنچین رشوه‌گیران را بررسی کنند تا ببینند چگونه «رای داده‌اند». به این ترتیب، بودجۀ ثانویه دیگر ابزاری موثر برای تخصیص بودجه بر اساس ترجیحات جمعی جامعه نخواهد بود. + +خوشبختانه، راه‌حل‌های جدیدتر مانند MACI که مخفف Minimum Anti-Collusion Infrastructure (زیرساخت ضد تبانی حداقل) است، از اثبات دانش صفر استفاده می‌کنند تا رای‌گیری آنچین (مانند مکانیسم‌های تامین مالی ثانویه) را در برابر رشوه و تبانی مقاوم کنند. MACI مجموعه‌ای از قراردادهای هوشمند و اسکریپت‌ها است که به یک مدیر مرکزی (که «هماهنگ‌کننده» نامیده می‌شود) اجازه می‌دهند تا رای‌ها را _بدون_ افشای جزئیات نحوۀ رای دادن افراد جمع‌آوری و شمارش کند. با این حال، هنوز هم می‌توان شمارش صحیح آرا یا مشارکت یک فرد خاص در رای‌گیری را تایید کرد. + +#### MACI چگونه با اثبات دانش صفر کار می‌کند؟ {#how-maci-works-with-zk-proofs} + +در ابتدا، هماهنگ‌کننده قرارداد MACI را بر روی شبکۀ اتریوم قرار می‌دهد، پس از آن کاربران می‌توانند برای رای دادن (با ثبت کلید عمومی خود در قرارداد هوشمند) ثبت‌نام کنند. کاربران با ارسال پیام‌های رمزگذاری‌شده از طریق کلید عمومی خود در قرارداد هوشمند رای می‌دهند (از جمله معیارهای دیگر این است که یک رای معتبر باید با جدیدترین کلید عمومی مرتبط با هویت کاربر امضا شود). سپس، هماهنگ‌کننده پس از پایان دورۀ رای‌گیری، همۀ پیام‌ها را پردازش می‌کند، آرا را جمع‌آوری و نتایج را در زنجیره تایید می‌کند. + +در MACI، از اثبات‌های دانش صفر برای اطمینان از صحت محاسبه استفاده می‌شود، زیرا هماهنگ‌کننده نمی‌تواند به ‌طور نادرست آرا را پردازش و نتایج را محاسبه کند. این امر با درخواست از هماهنگ‌کننده برای ایجاد اثبات‌های ZK-SNARK به دست می‌آید که تایید می‌کند الف) همۀ پیام‌ها به‌درستی پردازش شده‌اند؛ ب) نتیجۀ نهایی با مجموع آرای _معتبر_ مطابقت دارد. + +بنابراین، حتی بدون به اشتراک گذاشتن آرای تک‌تک کاربران (که معمولاً اتفاق می‌افتد)، MACI صحت و سلامت نتایج محاسبه‌شده در فرایند شمارش آرا را تضمین می‌کند. این ویژگی در کاهش اثربخشی طرح‌های تبانی اساسی مفید است. در ادامه، این احتمال را با استفاده از مثال قبلی رشوه دادن باب به آلیس برای رای دادن به گزینۀ مد نظرش، بررسی می‌کنیم: + +- آلیس با ارسال کلید عمومی خود به یک قرارداد هوشمند، برای رای دادن ثبت‌نام می‌کند. +- آلیس در ازای دریافت رشوه از باب، با او توافق می‌کند که به `گزینۀ B` رای دهد. +- آلیس به `گزینۀ B` رای می‌دهد. +- آلیس به‌ طور محرمانه یک تراکنش رمزگذاری‌شده برای تغییر کلید عمومی مرتبط با هویت خود ارسال می‌کند. +- آلیس با استفاده از کلید عمومی جدید، پیام دیگری (رمزگذاری‌شده) مبنی بر رای دادن به `گزینۀ A` به قرارداد هوشمند می‌فرستد. +- آلیس تراکنشی را به باب نشان می‌دهد تا بگوید او به `گزینۀ B` رای داده است (که نامعتبر است، زیرا کلید عمومی دیگر با هویت آلیس در سیستم مرتبط نیست) +- در حین پردازش پیام‌ها، هماهنگ‌کننده رای آلیس برای `گزینۀ B` را نادیده می‌گیرد و تنها رای `گزینۀ A` را می‌شمارد. از این رو، تلاش باب برای تبانی با آلیس و دستکاری در رای‌گیری آنچین با شکست مواجه می‌شود. + +استفاده از MACI نیازمند اعتماد به هماهنگ‌کننده مبنی بر تبانی نکردن با رشوه‌دهندگان یا تلاش برای رشوه دادن رای‌دهندگان از سوی او است. هماهنگ‌کننده می‌تواند پیام‌های کاربران را رمزگشایی کند (برای ایجاد اثبات لازم است)، بنابراین آن‌ها می‌توانند نحوۀ رای دادن هر فرد را به‌ طور دقیق تایید کنند. + +اما در مواردی که هماهنگ‌کننده صادق است، MACI ابزاری قدرتمند برای تضمین سلامت رای‌گیری آنچین است. این امر بیان‌کنندۀ دلیل محبوبیت آن در میان برنامه‌های تامین مالی ثانویه (مانند [↗clr.fund](https://clr.fund/#/about/maci)) است که به‌شدت بر صحت آرای تک‌تک افراد متکی است. + +[درباره MACI بیشتر بیاموزید](https://github.com/privacy-scaling-explorations/maci/blob/master/specs/01_introduction.md). + +## معایب استفاده از اثبات دانش صفر {#drawbacks-of-using-zero-knowledge-proofs} + +### هزینه‌های سخت‌افزاری {#hardware-costs} + +تولید اثبات‌های دانش صفر شامل محاسبات بسیار پیچیده‌ای است که تنها در ماشین‌های تخصصی به بهترین وجه انجام می‌شود. از آنجایی که این ماشین‌ها گرانقیمت‌اند، اغلب در دسترس افراد عادی نیستند. به‌علاوه، برنامه‌هایی که می‌خواهند از فناوری دانش صفر استفاده کنند، می‌بایست هزینه‌های سخت‌افزاری را لحاظ کنند، که احتمال دارد باعث افزایش هزینه‌ها برای کاربران نهایی شود. + +### هزینه‌های تایید اثبات {#proof-verification-costs} + +تایید اثبات‌ها همچنین نیازمند محاسبه پیچیده است و هزینه‌های پیاده‌سازی فناوری دانش صفر در برنامه‌ها را افزایش می‌دهد. این هزینه به‌ویژه در زمینۀ اثبات محاسبه است. به‌ عنوان مثال، رول‌آپ‌های ZK برای تایید یک اثبات ZK-SNARK در اتریوم حدود 500000 گس هزینه برمی‌دارد و هزینه‌های ZK-STARKها از این رقم هم بالاتر است. + +### مفروضات اعتماد {#trust-assumptions} + +در ZK-SNARK، رشته مرجع مشترک (Common Reference String) یا همان پارامترهای عمومی، یک بار تولید می‌شود و از آن پس، برای استفادۀ طرف‌هایی که مایل به شرکت در پروتکل دانش صفر هستند در دسترس خواهند بود. پارامترهای عمومی از طریق یک مراسم راه‌اندازی مورد اعتماد ایجاد می‌شوند، که در آن شرکت‌کنندگان مورد اعتمادند. + +اما در واقع، هیچ راهی برای کاربران وجود ندارد تا صداقت شرکا را ارزیابی کنند و آن‌ها ناگزیدند به قول توسعه‌دهندگان اطمینان کنند. اما ZK-STARKها نیازی به مفروضات اعتماد ندارند زیرا تصادفی بودن استفاده‌شده در تولید رشته (استرینگ) به ‌طور عمومی قابل تایید است. در همین حال، محققان در حال کار بر روی راه‌اندازی بدون اعتماد برای ZK-SNARKها هستند تا امنیت مکانیسم‌های اثبات را افزایش دهند. + +### تهدیدات محاسبات کوانتومی {#quantum-computing-threats} + +ZK-SNARK از الگوریتم‌های رمزنگاری انحنای بیضوی ([ECDSA](/glossary/#ecdsa)) برای رمزگذاری استفاده می‌کند. هرچند الگوریتم ECDSA در حال حاضر امن است، توسعۀ رایانه‌های کوانتومی می‌تواند مدل امنیتی آن را در آینده با شکست مواجه کند. + +ZK-STARK در برابر تهدید محاسبه کوانتومی مصون در نظر گرفته می شود، زیرا برای رمزگذاری از هش‌های مقاوم در برابر برخورد استفاده می‌کند. برخلاف جفت‌ کلیدهای عمومی-خصوصی که در رمزنگاری انحنای بیضوی استفاده می‌شوند، شکستن هش مقاوم در برابر برخورد، برای الگوریتم‌های محاسبات کوانتومی دشوارتر است. + +## بیشتر بخوانید {#further-reading} + +- [دانشمند کامپیوتر یک مفهوم را در 5 سطح دشواری توضیح می‌دهد](https://www.youtube.com/watch?v=fOGdb1CTu5c) - _کانال یوتیوب Wired_ +- [بررسی اجمالی موارد استفاده برای اثبات‌ دانش صفر](https://appliedzkp.org/#Projects) - _تیم کاوش‌های حریم خصوصی و مقیاس‌پذیری_ +- [SNARKها در مقایسه با STARKها و SNARKهای بازگشتی](https://www.alchemy.com/overviews/snarks-vs-starks) — _خلاصه‌های کیمیاگری_ +- [اثبات دانش صفر: بهبود حریم خصوصی در یک بلاک‌چین](https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/) - _دیمیتری لاورنوف_ +- [zk-SNARKها - یک مثال واقعی از دانش صفر و بررسی جامع آن](https://medium.com/coinmonks/zk-snarks-a-realistic-zero-knowledge-example-and-deep-dive-c5e6eaa7131c) - _آدام لوسیانو_ +- [ZK-STARKها - ایجاد اعتماد قابل تایید، حتی نسبت به رایانه‌های کوانتومی](https://medium.com/coinmonks/zk-starks-create-verifiable-trust-even-against-quantum-computers-dd9c6a2bb13d) - _آدام لوسیانو_ +- [مقدمه‌ای تقریبی دربارۀ چگونگی امکان zk-SNARKها](https://vitalik.ca/general/2021/01/26/snarks.html) - _ویتالیک بوترین_ +- [اثبات دانش صفر و نقش آن در بلاک‌چین چیست؟](https://www.leewayhertz.com/zero-knowledge-proof-and-blockchain/) - _لیوی هرتز_ diff --git a/src/content/translations/fil/bridges/index.md b/src/content/translations/fil/bridges/index.md new file mode 100644 index 00000000000..ae883141cbb --- /dev/null +++ b/src/content/translations/fil/bridges/index.md @@ -0,0 +1,134 @@ +--- +title: Panimula sa mga blockchain bridge +description: Binibigyang-daan ng mga bridge ang mga user na ilipat-ilipat sa iba't ibang blockchain ang pondo nila +lang: fil +--- + +# Mga blockchain bridge {#prerequisites} + +_Ang Web3 ay naging ecosystem ng mga L1 blockchain at L2 scaling solution, kung saan may mga natatanging kakayahan at trade-off ang bawat isa. Habang dumarami ang mga blockchain protocol, lumalaki rin [ang demand na ilipat-lipat ng chain ang mga asset](). Upang mapunan ang demand na ito, kailangan natin ng mga bridge._ + + + +## Ano ang mga bridge? {#what-are-bridges} + +Gumagana ang mga blockchain bridge na parang mga tulay sa tunay na buhay. Tulad kung paano pinag-uugnay ng pisikal na tulay ang dalawang pisikal na lokasyon, pinag-uugnay ng isang blockchain bridge ang dalawang blockchain ecosystem. Pinapadali ng mga bridge ang komunikasyon sa pagitan ng mga blockchain sa pamamagitan ng pag-transfer ng impormasyon at mga asset. + +Tingnan natin ang isang halimbawa: + +Naninirahan ka sa USA at nagpaplano kang bumiyahe sa Europe. Mayroon kang USD, pero kailangan mo ng EUR para sa mga gastusin. Upang gawing EUR ang USD mo, maaari kang gumamit ng currency exchange na may maliit na bayarin. + +Ngunit ano ang gagawin mo kung nais mong magsagawa ng katulad na exchange para gumamit ng ibang blockchain? Sabihin nating gusto mong i-exchange ang ETH sa Ethereum Mainnet sa ETH sa [Arbitrum](https://arbitrum.io/). Tulad ng currency exchange na ginawa natin para sa EUR, kailangan natin ng paraan upang ilipat ang ating ETH sa Arbitrum mula sa Ethereum. Ginagawang posible ng mga bridge ang ganitong transaksyon. Sa ganitong sitwasyon, [may native na bridge ang Arbitrum](https://bridge.arbitrum.io/) na makakapag-transfer ng ETH sa Arbitrum mula sa Mainnet. + +## Bakit kailangan natin ang mga bridge? {#why-do-we-need-bridges} + +May kanya-kanyang limitasyon ang lahat ng blockchain. Upang makasabay ang Ethereum sa demand, iniatas nito ang mga rollup. Iba naman ang pagkakadisenyo ng mga L1 tulad ng Solana at Avalanche upang magbigay-daan sa mas mataas na throughput pero ang kapalit nito ay decentralization. + +Gayunpaman, ang lahat ng blockchain ay dinede-develop sa mga isolated na environment at may iba't ibang panuntunan at consensus mechanism. Ibig sabihin nito, hindi makakakonekta sa native na paraan ang mga ito, at hindi magagawa ng mga token na magpalipat-lipat sa mga blockchain. + +Ginagamit ang mga bridge para pagkonektahin ang mga blockchain para makapag-transfer ng impormasyon at mga token ang mga ito sa isa't isa. + +Sa tulong ng mga bridge, naisasagawa ang mga sumusunod: + +- cross-chain na pag-transfer ng mga asset at impormasyon +- pag-access ng mga dapp sa mga kakayahan ng iba't ibang blockchain – na nagpapahusay sa kakayahan ng mga ito (dahil mayroon nang mas malawak na design space para sa inobasyon ang mga protocol). +- pag-access ng mga user sa mga bagong platform at paggamit ng mga benepisyo ng iba't ibang chain. +- pag-collaborate at paggawa ng mga developer mula sa iba't ibang blockchain ecosystem ng mga bagong platform para sa mga user. + +[Paano maidurugtong ang tokens sa layer 2](/guides/how-to-use-a-bridge/) + + + +## Mga use case ng bridge {#bridge-use-cases} + +Narito ang ilang sitwasyon kung saan maaari kang gumamit ng bridge: + +### Mas murang bayarin sa transaksyon {#transaction-fees} + +Sabihin nating mayroon kang ETH sa Ethereum Mainnet ngunit mas gusto mo ng mas murang bayarin sa transaksyon upang subukan ang iba't ibang dapp. Sa pamamagitan ng pag-bridge ng ETH mo sa Ethereum L2 rollup mula sa Mainnet, magiging mas mura ang iyong mga bayarin sa transaksyon. + +### Mga dapp sa iba pang blockchain {#dapps-other-chains} + +Kung gumagamit ka ng Aave sa Ethereum Mainnet para magpautang ng USDT ngunit mas mataas ang interest rate para sa pagpapautang ng USDT gamit ang Aave sa Polygon. + +### Tingnan ang mga blockchain ecosystem {#explore-ecosystems} + +Kung mayroon kang ETH sa Ethereum Mainnet at nais mong subukan ang isang alternatibong L1 para subukan ang mga native nitong dapp. Maaari kang gumamit ng bridge upang i-transfer ang iyong ETH sa alt L1 mula sa Ethereum Mainnet. + +### Mga sariling native na crypto asset {#own-native} + +Sabihin nating gusto mong magkaroon ng native na Bitcoin (BTC), ngunit nasa Ethereum Mainnet lang ang pondo mo. Upang magkaroon ng exposure sa BTC sa Ethereum, maaari kang bumili ng Wrapped Bitcoin (WBTC). Gayunpaman, ang WBTC ay isang ERC-20 token na native sa Ethereum network. Ibig sabihin, ito ay isang bersyon ng Bitcoin sa Ethereum at hindi ang orihinal na asset sa Bitcoin blockchain. Para magkaroon ng native na BTC, kailangan mong i-bridge ang iyong mga asset sa Bitcoin mula sa Ethereum gamit ang bridge. Ibi-bridge nito ang WBTC mo at gagawin nito itong native na BTC. Puwede ring mayroon ka nang BTC at gusto mo itong gamitin sa mga Ethereum DeFi protocol. Pabaligtad ang magiging pag-bridge nito, mula sa BTC patungong WBTC na siyang magagamit bilang asset sa Ethereum. + + + Maaari mo ring gawin ang lahat ng nabanggit gamit ang isang centralized exchange. Gayunpaman, maliban kung nasa isang exchange na ang iyong mga pondo, maraming hakbang ang kailangan para dito, at magiging mas mainam kung gumamit ka na lang ng bridge. + + + + +## Mga uri ng bridge {#types-of-bridge} + +Maraing uri ng disenyo at detalye ang mga bridge. Karaniwang nahahati sa dalawang kategorya ang mga bridge: mga trusted at trustless bridge. + +| Mga Trusted Bridge | Mga Trustless Bridge | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| Ang mga trusted bridge ay umaasa sa isang central entity o system para sa operasyon ng mga ito. | Pinapatakbo ang mga trust bridge gamit ang mga smart contract at algorithm. | +| May mga trust assumption ang mga ito kaugnay ng custody ng pondo at seguridad ng bridge. Umaasa ang karamihan sa mga user sa reputasyon ng operator ng bridge. | Trustless ang mga ito. Ibig sabihin, ang seguridad ng bridge ay kapareho ng seguridad ng pangunahing blockchain. | +| Kailangang ipaubaya ng mga user ang pagkontrol sa kanilang mga crypto asset. | Sa pamamagitan ng mga smart contract, binibigyang-daan ng mga trustless bridge ang mga user na kontrolin pa rin ang mga pondo nila. | + +Sa madaling salita, masasabi nating may mga trust assumption ang mga trust bridge, habang trust-minimized ang mga trust bridge at hindi gumagawa ang mga ito ng mga bagong trust assumption maliban para sa mga pangunahing domain. Narito kung paano maaaring ilarawan ang mga terminong ito: + +- **Trustless**: may seguridad na katumbas ng seguridad ng mga pangunahing domain. Gaya ng pagsasalarawan ni [Arjun Bhuptani sa artikulong ito.](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) +- **Mga trust assumption:** pag-alis sa seguridad ng mga pangunahing domain sa pamamagitan ng pagdaragdag ng mga external na verifier sa system, dahilan para maging hindi masyadong crypto-economically secure ito. + +Upang mas maintindihan ang mga pangunahing pagkakaiba ng dalawang pamamaraan, tingnan natin ang isang halimbawa: + +Isiping nasa security checkpoint ka sa airport. May dalawang uri ng mga checkpoint: + +1. Mga Manual Checkpoint — pinapangasiwaan ng mga opisyal na mano-manong tinitingnan ang lahat ng detalye ng iyong ticket at pagkakakilanlan bago ibigay ang boarding pass. +2. Self Check-In — pinapangasiwaan ng machine kung saan ilalagay mo ang mga detalye ng iyong flight at matatanggap mo ang boarding pass kung tama ang lahat ng detalye. + +Ang mga manual checkpoint ay katulad ng isang trusted model dahil pinapangasiwaan ito ng third party, ibig sabihin, ang mga opisyal. Bilang user, pinagkakatiwalaan mo ang mga opisyal na gumawa ng mga tamang pasya at gamitin ang iyong pribadong impormasyon sa angkop na paraan. + +Ang self check-in ay katulad ng trustless model dahil inaalis nito ang papel ng operator at gumagamit ito ng teknolohiya para sa operasyon nito. Palaging mananatiling kontrolado ng mga user ang kanilang data at hindi nila kailangang ipaubaya sa third party ang kanilang pribadong impormasyon. + +Gumagamit ang maraming bridging solution ng mga model sa pagitan ng dalawang uring ito, na may iba't ibang antas ng pagiging trustless. + + + +## Panganib sa paggamit ng mga bridge {#bridge-risk} + +Nasa mga unang yugto pa lang ng development ang mga bridge. Malaki ang posibilidad na hindi pa natutuklasan ang pinakamagandang disenyo ng bridge. May kaakibat na panganib ang pag-interact sa anumang uri ng bridge: + +- **Panganib sa Smart Contract —** ang panganib ng pagkakaroon ng bug sa code na maaaring magresulta sa pagkawala ng pondo ng user +- **Panganib sa Teknolohiya — **posibleng maabala ang operasyon ng user ng pagpalya ng software, buggy code, kamalian ng tao, spam, at mga mapaminsalang atake + +Dagdag pa rito, dahil ang mga trusted bridge ay nagdadagdag ng mga trust assumption, may kaakibat ang mga ito na mga karagdagang panganib tulad ng: + +- **Panganib sa Censorship —** maaaring hadlangan ng mga operator ng bridge ang mga user sa pag-transfer ng kanilang mga asset gamit ang bridge +- **Panganib sa Pag-aari —** maaaring magsabwatan ang mga operator ng bridge upang nakawin ang mga pondo ng mga user + +Nanganganib ang mga pondo ng user kung: + +- may bug sa smart contract +- magkakamali ang user +- na-hack ang pangunahing blockchain +- may masamang hangarin ang mga operator ng bridge sa isang trusted bridge +- na-hack ang bridge + +Ang isang kamakailang hack ay ang Wormhole bridge ng Solana, [kung saan 120k wETH ($325 milyong USD) ang nanakaw matapos ang pag-hack](https://rekt.news/wormhole-rekt/). Marami sa mga [pinakamalalaking hack sa mga blockchain ay may kinalaman sa mga bridge](https://rekt.news/leaderboard/). + +Mahalaga ang mga bridge sa mga user na nasa onboarding sa mga Ethereum L2, at maging sa mga user na gustong gumamit ng iba't ibang ecosystem. Gayunpaman, dahil sa mga panganib na kaakibat ng pag-interact sa mga bridge, dapat maunawaan ng mga user ang mga trade-off ng mga bridge. Ito ang ilang [estratehiya para sa cross-chain security](https://blog.debridge.finance/10-strategies-for-cross-chain-security-8ed5f5879946). + + + +## Karagdagang pagbabasa {#further-reading} + +- [EIP-5164: Cross-Chain Execution](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658) _Hunyo 18, 2022 - Brendan Asselstine_ +- [L2Bridge Risk Framework](https://gov.l2beat.com/t/l2bridge-risk-framework/31) _Hulyo 5, 2022 - Bartek Kiepuszewski_ +- ["Bakit ang kinabukasan ay magiging maraming chain, pero hindi magiging cross-chain."](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) _Enero 8, 2022 - Vitalik Buterin_ +- [Ano ang Mga Blockchain Bridge at Paano Natin Maiuuri ang Mga Ito?](https://blog.li.finance/what-are-blockchain-bridges-and-how-can-we-classify-them-560dc6ec05fa) _Pebrero 18, 2021 - Arjun Chand_ +- [Ano ang Mga Cross-Chain Bridge?](https://www.alchemy.com/overviews/cross-chain-bridges) _Mayo 10, 2022 - Alchemy_ +- [Mga Blockchain Bridge: Pagbuo ng Mga Network ng Mga Cryptonetwork](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) _Setyembre 8, 2021 - Dmitriy Berenzon_ +- [Mga Bridge sa Crypto-Space](https://medium.com/chainsafe-systems/bridges-in-crypto-space-12e158f5fd1e) _Agosto 23, 2021 - Ben Adar Hyman_ +- [Ang Interoperability Trilemma](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) _Okt 1, 2021 - Arjun Bhuptani_ +- [I-secure ang Bridge: Maayos na Cross-Chain Communication](https://medium.com/dragonfly-research/secure-the-bridge-cross-chain-communication-done-right-part-i-993f76ffed5d) _Agosto 23, 2021 - Celia Wan_ diff --git a/src/content/translations/fil/decentralized-identity/index.md b/src/content/translations/fil/decentralized-identity/index.md new file mode 100644 index 00000000000..6f7b42b0266 --- /dev/null +++ b/src/content/translations/fil/decentralized-identity/index.md @@ -0,0 +1,185 @@ +--- +title: Decentralized na identity +description: Ano ang decentralized identity at bakit ito importante? +lang: fil +template: use-cases +emoji: ":id:" +sidebarDepth: 2 +image: ../../../../assets/eth-gif-cat.png +summaryPoint1: Ang mga tradisyonal na identity system ay nakasentro sa pagbibigay, pagpapanatili at pagkontrol ng iyong mga identifier. +summaryPoint2: Inaalis ng decentralized identity ang pagdepende sa mga centralized na third party. +summaryPoint3: Dahil sa crypto, mayroon na ulit ang mga user ng mga tool para ibigay, pangasiwaan at kontrolin ang sarili nilang mga identifier at attestation. +--- + +Sinusuportahan ng identity ang halos lahat ng aspeto ng buhay mo ngayon. Sa paggamit ng mga serbisyo online, pagbubukas ng bank account, pagboto sa halalan, pagbili ng property, at paghahanap ng trabaho, kailangan mong patunayan ang iyong identity. + +Gayunpaman, matagal nang umaasa ang mga tradisyonal na identity management system sa mga centralized intermediary na nagbibigay, nangangasiwa, at kumokontrol sa iyong mga identifier at [attestation](#what-are-attestations). Ibig sabihin ito ay hindi mo makokontrol ang impormasyong nauugnay sa iyong identity o hindi ka makakapagpasya sa kung sino ang may access sa personally identifiable information (PII) at kung gaano kalawak ang access ng mga partidong ito. + +Para maayos ang mga problemang ito, mayroon kaming mga decentralized identity system na ginawa sa mga pampublikong blockchain tulad ng Ethereum. Sa tulong ng decentralized identity, mapapamahalaan ng mga indibidwal ang kanilang impormasyong nauugnay sa identity. Gamit ang mga decentralized identity solution, maaari _kang_ gumawa ng mga identifier at make-claim at mapapangasiwaan mo ang iyong mga attestation nang hindi nakadepende sa mga central authority, tulad ng mga service provider at ng pamahalaan. + +## Ano ang identity? {#what-is-identity} + +Tumutukoy ang identity sa pagkakakilala ng isang indibidwal sa kanyang sarili, ayon sa mga natatanging katangian. Tumutukoy ang identity sa pagiging isang _indibidwal_, ibig sabihin, isang partikular na tao. Ang identity ay maaari ding tumukoy sa iba pang entidad na hindi tao, gaya ng isang organisasyon o awtoridad. + +## Ano ang mga identifier? {#what-are-identifiers} + +Ang identifier ay impormasyong nagsisilbing pointer sa partikular na identity o mga identity. Kasama sa mga karaniwang identifier ang: + +- Pangalan +- Social security number/tax ID number +- Numero ng cellphone +- Petsa at lugar ng kapanganakan +- Mga kredensyal sa digital identification, hal., email address, username, avatar + +Ang mga tradisyonal na halimbawang ito ng mga identifier ay ibinibigay, pinapangasiwaan at kinokontrol ng mga central entity. Kailangan mo ng pahintulot mula sa iyong pamahalaan para palitan ang pangalan mo o mula sa isang social media platform para palitan ang handle mo. + +## Ano ang mga attestiation? {#what-are-attestations} + +Ang attestation ay isang claim na ginawa ng isang entity tungkol sa isa pang entity. Kung nakatira ka sa Estados Unidos, ang lisensya sa pagmamaneho na ibinigay sa iyo ng Department of Motor Vehicles (isang entidad) ay nagpapatunay na ikaw (isa pang entidad) ay legal na pinapayagang magmaneho ng kotse. + +Magkaiba ang mga attestation at mga identifier. Ang attestation ay _may_ mga identifier para tumukoy ng partikular na identity, at gumagawa ng claim tungkol sa isang attribute na nauugnay sa identity na ito. Kung kaya, may mga identifier ang iyong lisensya sa pagmamaneho (pangalan, petsa ng kapanganakan, address) ngunit ito rin ang pagpapatunay tungkol sa iyong legal na karapatang magmaneho. + +### Ano ang mga decentralized identifier? {#what-are-decentralized-identifiers} + +Ang mga tradisyonal na identifier tulad ng iyong legal na pangalan o email address ay umaasa sa mga third party—mga pamahalaan at email provider. Naiiba ang decentralized identifiers (DIDs)—hindi ibinibigay, pinapamahalaan, o kinokontrol ang mga ito ng anumang sentral na entity. + +Ang mga decentralized identifier ay ibinibigay, pinapangasiwaan, at kinokontrol ng mga indibidwal. Ang [Ethereum account](/developers/docs/accounts/) ay halimbawa ng isang decentralized identifier. Maaari kang gumawa ng mga account hangga't gusto mo nang hindi humihingi ng pahintulot ng kahit sino at nang hindi kinakailangang i-store ang mga ito sa isang sentral na registry. + +Ang mga decentralized identifier ay sino-store sa mga distributed ledger (blockchain) o peer-to-peer network. Dahil dito, ang decentralized identifiers (DIDs) ay [walang katulad sa mundo, nareresolba at may high availability, at mave-verify sa pamamagitan ng cryptography](https://w3c-ccg.github.io/did-primer/). Maaaring iugnay ang decentralized identifier sa iba't ibang entity, kasama na ang mga tao, organisasyon, o mga institusyon ng pamahalaan. + +## Paano naging posible ang mga decentralized identifier? {#what-makes-decentralized-identifiers-possible} + +### 1. Public Key Infrastructure (PKI) {#public-key-infrastructure} + +Ang public-key infrastructure (PKI) ay isang hakbang para sa seguridad ng impormasyon na bumubuo ng [pampublikong key](/glossary/#public-key) at [ pribadong key](/glossary/#private-key) para sa isang entity. Ang public-key cryptography ay ginagamit sa mga blockchain network upang patunayan ang identity ng user at patunayan ang pagmamay-ari sa mga digital asset. + +May pampubliko at pribadong key ang ilang decentralized identifier, tulad ng Ethereum account. Tinutukoy ng pampublikong key ang controller ng account, habang magagawa ng mga pribadong key na mag-sign at mag-decrypt ng mga mensahe para sa account na ito. Ang public key insfrastructure (PKI) ay nagbibigay ng mga patunay na kinakailangan upang i-authenticate ang mga entity at pigilan ang pagpapanggap at paggamit ng mga pekeng identity, at gumagamit ng[mga cryptographic signature](https://andersbrownworth.com/blockchain/public-private-keys/) upang i-verify ang lahat ng claim. + +### 2. Mga decentralized datastore {#decentralized-datastores} + +Ang blockchain ay nagsisilbing registry ng nave-verify na data: bukas, hindi kailangang umasa sa third party, at desentralisadong repository ng impormasyon. Dahil sa mga pampublikong blockchain, hindi kailangang i-store ang mga identifier sa mga sentralisadong registry. + +Kung kailangang kumpirmahin ng sinuman ang validity ng isang decentralized identifier, puwede nilang hanapin ang nauugnay na pampublikong key sa blockchain. Iba ito sa mga tradisyonal na identifier na nangangailangan ng mga third party para mag-authenticate. + +## Paano nagbibigay-daan ang mga "decentralized identifier" at "attestation" sa decentralized identity? {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity} + +Tumutukoy ang decentralized identity sa pananaw na dapat pribado, portable, at ikaw mismo ang kumokontrol sa impormasyong nauugnay sa identity, at ang mga decentralized identifier at attestation ang mga pangunahing bahagi nito. + +Sa konteksto ng decentralized identity, ang mga attestation (kilala rin bilang [Mga Nave-verify na Kredensyal](https://www.w3.org/TR/vc-data-model/)) ay mga claim ng issuer na hindi mababago at mave-verify sa pamamagitan ng cryptography. Ang bawat "attestation" o "Nave-verify na Kredensyal" na ibinibigay ng isang entity (hal., isang organisasyon) ay iniuugnay sa decentralized identifier (DID) nito. + +Dahil naka-store ang decentralized identifiers (DIDs) sa blockchain, maaaring i-verify ng sinuman ang validity ng isang attestation sa pamamagitan ng pagsusuri sa DID ng issuer sa Ethereum. Sa madaling salita, ang blockchain ng Ethereum ay nagsisilbing pandaigdigang direktoryo na nagbibigay-daan sa pag-verify ng mga DID na nauugnay sa mga partikular na entity. + +Dahil sa mga decentralized identifier, mave-verify at ikaw mismo ang kokontrol sa mga attestation. Kahit wala na ang issuer ng attestation, palaging may patunay ang may-ari ng pinagmulan at validity ng attestation. + +Mahalaga rin ang mga decentralized identifier sa pagprotekta sa privacy ng personal na impormasyon sa pamamagitan ng decentralized identity. Halimbawa, kung magsusumite ang isang indibidwal ng patunay ng attestation (lisensya sa pagmamaneho), hindi kailangang suriin ng partidong nagve-verify ang validity ng impormasyon sa patunay. Kailangan lang ng verifier ng mga crytographic guarantee ng authenticity ng attestation at identity ng nagbigay na organisasyon para matukoy kung valid ang patunay. + +## Mga uri ng attestation sa decentralized identity {#types-of-attestations-in-decentralized-identity} + +Naiiba sa tradisyonal na pamamahala ng identity ang pag-store at pagkuha sa impormasyon ng attestation sa isang Ethereum-based na identity ecosystem. Narito ang pangkalahatang-ideya ng iba't ibang paraan ng pagbibigay, pag-store, at pag-verify ng mga attestation sa mga decentralized identity system: + +### Mga off-chain na attestation {#off-chain-attestations} + +Ang isang alalahanin sa pag-store ng mga attestation on-chain ay maaaring maglaman ang mga ito ng impormasyon na gustong panatilihing pribado ng mga indibidwal. Dahil pampubliko ang Ethereum blockchain, hindi mainam na i-store dito ang mga ganitong attestation. + +Ang solusyon ay magbigay ng mga attestation, na pinapangasiwaan ng mga user off-chain sa mga digital wallet, pero na-sign gamit ang DID ng issuer na na-store on-chain. Ang mga attestation na ito ay naka-encode bilang [mga JSON Web Token](https://en.wikipedia.org/wiki/JSON_Web_Token) at dapat maglaman ng digital signature ng issuer—na nagpapadali sa pag-verify ng mga off-chain na claim. + +Narito ang isang hypothetical na sitwasyon na nagpapaliwanag sa mga off-chain na attestation: + +1. May unibersidad (ang issuer) na gumawa ng attestation (isang digital na sertipikong pang-akademiko), na-sign ito gamit ang mga key nito, at ibinigay ito kay Bob (may-ari ng identity). + +2. Naghahanap ng trabaho si Bob at gusto niyang patunayan ang kanyang mga kwalipikasyong pang-akademiko sa isang employer, kaya ibinahagi niya ang attestation galing sa mobile wallet niya. Maaaring kumpirmahin ng kumpanya (ang verifier) ang validity ng attestation sa pamamagitan ng pagsusuri sa DID ng issuer (ibig sabihin, ang public key nito sa Ethereum). + +### Mga off-chain na attestation na may persistent access {#offchain-attestations-with-persistent-access} + +Sa ilalim ng pagsasaayos na ito, ang mga attestation ay ginagawang mga JSON file at sino-store off-chain (pinakamainam kung sa [decentralized cloud storage](/developers/docs/storage/) platform, tulad ng IPFS o Swarm). Gayunpaman, ang [ hash](/glossary/#hash) ng JSON file ay sino-store on-chain at nili-link sa DID sa pamamagitan ng isang on-chain registry. Ang nauugnay na DID ay maaaring galing sa issuer ng attestation o sa recipient. + +Sa tulong ng paraang ito, nagkakaroon ang mga attestation ng blockchain-based persistence at napapanatiling naka-encrypt at nave-verify ang impormasyon ng mga claim. Binibigyang-daan din nito ang selective na pagsisiwalat dahil maaaring i-decrypt ng may-ari ng pribadong key ang impormasyon. + +### Mga on-chain na attestation {#onchain-attestations} + +Ang mga on-chain na attestation ay pinapangasiwaan sa [mga smart contract](/developers/docs/smart-contracts/) sa Ethereum blockchain. Ang smart contract (nagsisilbing registry) ay magmamapa ng attestation sa kaukulang on-chain na decentralized identifier (isang pampublikong key). + +Narito ang isang halimbawa upang ipakita kung paano gumagana ang mga on-chain na attestation: + +1. Pinaplano ng isang kumpanya (XYZ Corp) na magbenta ng mga share sa pagmamay-ari gamit ang isang smart contract pero gusto lang nito ng mga buyer na sumailalim sa background check. + +2. Maaaring hilingin ng XYZ Corp sa kumpanyang nagsasagawa ng mga background check na magbigay ng mga on-chain na attestation sa Ethereum. Papatunayan ng attestation na ito na nakapasa ang indibidwal sa background check nang hindi inilalantad ang anumang personal na impormasyon. + +3. Maaaring suriin ng smart contract na nagbebenta ng mga share ang registry contract para sa mga identity ng mga na-screen na buyer, kung kaya, malalaman ng smart contract kung sino ang pinapahintulutang bumili ng mga shares o hindi. + +### Soulbound tokens at identity {#soulbound} + +Puwedeng gamitin ang [soulbound tokens](https://vitalik.ca/general/2022/01/26/soulbound.html)(mga non-transferable na NFT) upang kolektahin ang impormasyon na partikular sa isang wallet. Epektibo itong gumagawa ng natatanging on-chain na identity patungo sa isang partikular na Ethereum address na maaaring kinabibilangan ng mga token na kumakatawan sa mga napagtagumpayan (hal. pagtatapos ng ilang partikular na online na kurso o paglampas sa isang threshold score sa isang laro) o pakikilahok sa komunidad. + +## Mga benepisyo ng decentralized identity {#benefits-of-decentralized-identity} + +1. Sa tulong ng decentralized identity, mas makokontrol ng indibidwal ang nakakatukoy na impormasyon. Maaaring i-verify ang mga decentralized identifier at attestation nang hindi umaasa sa mga centralized na awtoridad at mga serbisyo ng third party. + +2. Ang mga decentralized identity solution ay tumutulong para magkaroon ng paraan para sa pag-verify at pamamahala ng identity ng user na hindi kailangang umasa sa third party, seamless, at nagpoprotekta sa privacy. + +3. Ginagamit ng decentralized identity ang teknolohiya ng blockchain, na bumubuo ng tiwala sa pagitan ng iba't ibang partido at nagbibigay ng mga cryptographic guarantee para patunayan ang validity ng mga attestation. + +4. Ginagawang portable ng decentralized identity ang data ng identity. Sino-store ng mga user ang mga attestation at identifier sa mobile wallet at maibabahagi nila ang mga ito sa anumang partidong gusto nila. Hindi rin nakapirmi ang mga decentralized identifier at attestation sa database ng nagbibigay na organisasyon. + +5. Magagamit ang decentralized identity sa mga bagong zero-knowledge technology na magbibigay-daan sa mga indibidwal na patunayan na pagmamay-ari o ginawa nila ang isang bagay nang hindi ibinubunyag kung ano ito. Ito ay maaaring maging pinakamahusay na paraan para pagsamahin ang tiwala at privacy para magamit sa mga bagay tulad ng pagboto. + +6. Binibigyang-daan ng decentralized identity ang mga mekanismo laban sa Sybil attack na tukuyin kapag may isang indibidwal na taong nagpapanggap bilang maraming tao para dayain o i-spam ang isang system. + +## Mga use case ng decentralized identity {#decentralized-identity-use-cases} + +Maraming posibleng use case ang decentralized identity: + +### 1. Mga universal login {#universal-dapp-logins} + +Makakatulong ang decentralized identity na palitan ang mga pag-log in gamit ang password ng [decentralized authentication](https://www.ibm.com/blogs/blockchain/2018/10/decentralized-identity-an-alternative-to-password-based-authentication/). Maaaring magbigay ang mga service provider ng mga attestation sa mga user, na maso-store sa Ethereum wallet. Ang isang halimbawa ng attestation ay isang [NFT](/nft/) na nagbibigay sa may-ari ng access sa isang online na komunidad. + +Ang function na [Mag-sign in gamit ang Ethereum](https://login.xyz/) ay magbibigay-daan sa mga server na kumpirmahin ang Ethereum account ng user at kunin ang kinakailangang attestation mula sa account address niya. Ibig sabihin nito, maa-access ng mga user ang mga platform at website nang hindi kinakailangang tandaan ang mahahabang password at mapapahusay nito ang online experience ng mga user. + +### 2. KYC authentication {#kyc-authentication} + +Sa paggamit ng mga online na serbisyo, kailangang magbigay ng mga indibidwal ng mga attestation at kredensyal, tulad ng lisensya sa pagmamaneho o pambansang pasaporte. Ngunit nagdudulot ng problema ang paraang ito dahil maaaring makompromiso ang pribadong impormasyon ng user at hindi mave-verify ng mga service provider ang authenticity ng attestation. + +Binibigyang-daan ng decentralized identity ang mga kumpanya na iwasan ang mga karaniwang prosesong [Know-Your-Customer (KYC)](https://en.wikipedia.org/wiki/Know_your_customer) at i-authenticate ang mga identity ng user sa pamamagitan ng Mga Nave-verify na Kredensyal. Pinapababa nito ang gastos sa pamamahala ng identity at pinipigilan nito ang paggamit ng pekeng dokumentasyon. + +### 3. Pagboto at mga online na komunidad {#voting-and-online-communities} + +Ang online na pagboto at social media ay dalawang bagong paggamit ng decentralized identity. Madaling mamanipula ang mga scheme ng online na pagboto, lalo kung gumawa ang mga mapanlokong actor ng mga pekeng identity para bumoto. Mapapaganda ng paghiling sa mga indibidwal na magpresenta ng mga on-chain na attestation ang integridad ng mga proseso ng online na pagboto. + +Makakatulong ang decentralized identity sa paggawa ng mga online na komunidad na walang pekeng account. Halimbawa, kailangang i-authenticate ng bawat user ang identity nila gamit ang isang on-chain na identity system, tulad ng Ethereum Name Service, na nagpapaliit sa posibilidad na mapasok ito ng mga bot. + +### 4. Proteksyon laban sa Sybil attack {#sybil-protection} + +Ang mga Sybil attack ay tumutukoy sa mga indibidwal na nagpapanggap bilang maraming tao para manlinlang ng isang system at mapalakas ang impluwensya nila. Ang [mga application na nagbibigay ng grant](https://gitcoin.co/grants/) na gumagamit ng [quadratic voting](https://www.radicalxchange.org/concepts/plural-voting/) ay madaling mabiktima ng mga Sybil attack na ito dahil madadagdagan ang halaga ng grant kapag mas maraming tao ang bumoto para dito, kaya nahihikayat ang mga user na hatiin ang kanilang mga kontribusyon sa maraming identity. Nakakatulong ang mga decentralized identity na iwasan ito sa pamamagitan ng pag-aatang sa bawat kalahok na patunayang totoong tao sila, bagama't madalas na ginagawa ito nang hindi kinakailangang isiwalat ang partikular na pribadong impormasyon. + +## Gamitin ang decentralized identity {#use-decentralized-identity} + +Maraming malalaking proyekto ang gumagamit ng Ethereum bilang pundasyon para sa mga decentralized identity solution: + +- **[Ethereum Name Service (ENS)](https://ens.domains/)** - _Isang decentralized naming system para sa mga identifier na on-chain at nababasa ng machine, tuld ng mga address sa Ethereum wallet, mga content hash, at metadata._ +- **[SpruceID](https://www.spruceid.com/)** - _Isang decentralized identity project na nagbibigay-daan sa mga user na kontrolin ang digital identity gamit ang mga Ethereum account at ENS profile sa halip na umasa sa mga serbisyo ng third party._ +- **[Ethereum Attestation Service (EAS)](https://attest.sh/)** - _Isang decentralized ledger/protocol para sa paggawa ng mga on-chain o off-chain na attestation tungkol sa anumang bagay._ +- **[Proof of Humanity](https://www.proofofhumanity.id)** - _Ang Proof of Humanity (o PoH) ay isang social identity verification system na ginawa sa Ethereum._ +- **[BrightID](https://www.brightid.org/)** - _ Isang decentralized at open-source na social identity network na naglalayong baguhin ang pag-verify ng identity sa pamamagitan ng paggawa at pagsusuri ng isang social graph._ +- **[Proof-of-personhood Passport](https://proofofpersonhood.com/)** - _Isang decentralized digital identity aggregator._ + +## Karagdagang pagbabasa {#further-reading} + +### Mga Artikulo {#articles} + +- [Mga Use Case ng Blockchain: Blockchain sa Digital Identity](https://consensys.net/blockchain-use-cases/digital-identity/) — _ConsenSys_ +- [Ano ang Ethereum ERC725? Pamamahala ng Self-Sovereign Identity sa Blockchain](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) —_ Sam Town_ +- [Paano Malulutas ng Blockchain ang Suliranin sa Digital Identity](https://time.com/6142810/proof-of-humanity/) — _Andrew R. Chow_ +- [Ano ang Decentralized Identity at Bakit Dapat Kang Mag-alaala?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_ + +### Videos {#videos} + +- [Decentralized Identity (Bonus Livestream Session)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s) — _Isang magandang video na gawa ni Andreas Antonopolous na nagpapaliwanag sa decentralized identity_ +- [Mag-sign In sa Ethereum at Decentralized Identity gamit ang Ceramic, IDX, React, at 3ID Connect](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _Tutorial sa YouTube na gawa ni Nader Dabit tungkol sa pagbuo ng management system para sa paggawa, pagbabasa, at pag-update ng profile ng isang user gamit ang kanyang Ethereum wallet_ +- [BrightID - Decentralized Identity sa Ethereum](https://www.youtube.com/watch?v=D3DbMFYGRoM)— _Episode ng Bankless podcast kung saan pinag-uusapan ang BrightID, isang decentralized identity solution para sa Ethereum_ +- [The Off Chain Internet: Decentralized Identity at Mga Nave-verify na Kredensyal](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — Presentation ni Evin McMullen sa EthDenver noong 2022 + +### Mga Komunidad {#communities} + +- [ERC-725 Alliance sa GitHub](https://github.com/erc725alliance) — _Mga tagasuporta ng pamantayang ERC725 para sa pamamahala ng identity sa Ethereum blockchain_ +- [SpruceID Discord server](https://discord.com/invite/Sf9tSFzrnt) — _Komunidad para sa mga tagahanga at developer na nagtatrabaho sa Mag-sign in gamit ang Ethereum_ +- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _Isang komunidad ng mga developer na tumutulong sa pagbuo ng framework para sa nave-verify na data para sa mga application_ diff --git a/src/content/translations/fil/defi/index.md b/src/content/translations/fil/defi/index.md new file mode 100644 index 00000000000..15503bdf347 --- /dev/null +++ b/src/content/translations/fil/defi/index.md @@ -0,0 +1,352 @@ +--- +title: Desentralisadong Pananalapi (DeFi) +description: Pangkalahatang-ideya ng DeFi sa Ethereum +lang: fil +template: use-cases +emoji: ":money_with_wings:" +image: ../../../../assets/use-cases/defi.png +alt: Logo ng Eth na gawa sa mga lego brick. +sidebarDepth: 2 +summaryPoint1: Isang pandaigdigan at bukas na alternatibo sa kasalukuyang sistemang pinansyal. +summaryPoint2: Mga produkto na nagbibigay-daan sa iyong manghiram, mag-ipon, mag-invest, mag-trade, at iba pa. +summaryPoint3: Nakabatay sa open-source na teknolohiyang magagamit ng kahit sino para mag-program. +--- + +Ang DeFi ay isang bukas at pandaigdigang sistemang pinansyal na binuo para sa panahon ng internet - isang alternatibo sa isang sistema na mahirap unawain, mahigpit na kontrolado, at pinagbubuklod ng infrastructure at mga prosesong ilang dekada nang ginagamit. Sa tulong nito makokontrol at makikita mo ang iyong pera. Binibigyan ka nito ng pagkakataong makita ang mga pandaigdigang market at mga alternatibo sa iyong lokal na currency o mga opsyon sa pagbabangko. Binubuksan ng mga produkto ng DeFi ang mga serbisyong pinansyal sa sinumang may koneksyon sa internet at ang karamihan sa mga ito ay pagmamay-ari at pinapanatili ng mga user ng mga ito. Sa ngayon, daan-daang bilyong dolyar ng crypto na ang dumaan sa mga DeFi application at patuloy itong dumarami araw-araw. + +## Ano ang DeFi? {#what-is-defi} + +DeFi ang tawag sa mga produkto at serbisyong pinansyal na maaring gamitin ng sinumang makakagamit ng Ethereum - kahit sinong may koneksyon sa internet. Sa DeFi, laging bukas ang mga market at walang centralized na awtoridad na makakapigil ng mga pagbabayad o hindi magbibigay sa iyo ng access sa kahit ano. Ang mga serbisyong dating mabagal at nanganganib dahil sa human error ay awtomatiko at mas ligtas na ngayon dahil pinapangasiwaan na ang mga ito ng code na masusuri at mabubusisi ng kahit sino. + +Lumalaki ang ekonomiya ng crypto, kung saan puwede kang magpautang, manghiram, mag-trade, kumita ng interes, at iba pa. Gumamit ng DeFi ang mga taga-Argentina na marunong sa crypto para takasan ang matinding pagtaas ng presyo. May mga kumpanya nang nagsimulang i-stream sa kanilang mga empleyado ang kanilang mga suweldo nang real time. May ibang nakahiram at nakapagbayad ng mga loan na milyong-milyong dolyar ang halaga nang hindi nangangailangan ng anumang personal identification. + + + +## DeFi vs tradisyonal na pinansya {#defi-vs-tradfi} + +Ang isa sa mga pinakamagandang paraan upang makita ang potensyal ng DeFi ay unawain ang mga problemang umiiral ngayon. + +- May mga tao na hindi pinagkakalooban ng access para gumawa ng bank account o gumamit ng mga serbisyong pinansyal. +- Ang kakulangan ng access sa mga serbisyong pinansyal ay maaaring nakakahadlang para makahanap ng trabaho ang mga tao. +- Maaaring mapigilan ng mga serbisyong pinansyal na makuha mo ang iyong suweldo. +- Isa sa mga nakatagong singil ng mga serbisyong pinansyal ay ang iyong personal na data. +- Maaaring ipasara ng mga pamahalaan at centralized institution ang mga market kapag gusto nila. +- Ang oras ng pag-trade ay karaniwang limitado sa oras ng negosyo ng partikular na time zone. +- Maaaring abutin nang ilang araw ang mga pag-transfer ng pera dahil sa mga internal na prosesong ginagawa ng tao. +- May premium ang mga serbisyong pinansyal dahil kailangan ng mga intermediary institution ang kanilang parte. + +### Pag-kumpara {#defi-comparison} + +| DeFi | Tradisyonal na pinansya | +| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Hawak mo ang iyong pera. | Ang iyong pera ay hawak ng mga kumpanya. | +| Kontrolado mo kung saan mapupunta ang iyong pera at kung paano ito gagastusin. | Kailangan mong magtiwalang hindi papabayaan ng mga kumpanya ang pera mo, tulad ng pagpapahiram nito sa mga hindi mapagkakatiwalaang nangungutang. | +| Nangyayari ang mga pag-transfer ng pondo sa loob ng ilang minuto. | Maaaring tumagal nang ilang araw ang mga pagbabayad dahil sa mga manula na proseso. | +| Gumagamit ng mga hindi tunay na pangalan sa mga aktibidad sa transaksyon. | Talagang konektado ang pinansyal na aktibidad sa iyong identity. | +| Ang DeFi ay bukas para sa lahat. | Kailangan mong mag-apply para magamit ang mga serbisyong pinansyal. | +| Ang mga market ay palaging bukas. | Nagsasara ang mga market dahil kailangang magpahinga ng mga empleyado. | +| Transparency ang pundasyon nito – puwedeng tingnan ng kahit sino ang data ng produkto at suriin kung paano gumagana ang system. | Ang mga pinansyal institusyon ay parang mga saradong libro: hindi mo maaaring tingnan ang kanilang kasaysayan ng pautang, record ng mga pinapamahalaan nilang asset, at iba pa. | + + + I-explore ang mga DeFi app + + +## Nagsimula ito sa Bitcoin... {#bitcoin} + +Sa maraming paraan, ang Bitcoin ang unang DeFi application. Talagang pinapayagan ka ng Bitcoin na magmay-ari at kontrolin ang halaga nito at ipadala ito kahit saan sa mundo. Ginagawa nito ito sa pamamagitan ng pagbibigay ng paraan para sa maraming tao, na hindi umaasa sa isa't isa, na sumang-ayon sa isang ledger ng mga account na hindi nangangailangan ng isang pinagkakatiwalaang intermediary. Ang Bitcoin ay bukas sa lahat at walang sinuman ang may awtoridad na baguhin ang mga panuntunan nito. Ang mga panuntunan ng Bitcoin, tulad ng kanyang kakapusan at pagiging bukas, ay nakalagay na sa teknolohiya. Hindi ito katulad ng tradisyonal na pinansya kung saan maaaring mag-print ang mga pamahalaan ng pera na nagpapababa sa halaga ng iyong ipon at mga kumpanyang maaaring magpasara ng mga market. + +Mas pinapahusay pa ito ng Ethereum. Tulad ng Bitcoin, hindi maaaring magbago ang mga panuntunan nang biglaan at may access ang lahat. Ngunit ito rin ang dahilan kung bakit programmable ang digital money, gamit ang [mga smart contract](/glossary#smart-contract), kung kaya, hindi lang pag-store at pagpapadala ng halaga ang magagawa mo. + + + +## Programmable na pera {#programmable-money} + +Medyo kakaiba itong pakinggan... "bakit ko gugustuhing i-program ang pera ko"? Ngunit, isa itong default na feature ng mga token sa Ethereum. Kahit sino ay maaaring mag-program ng logic sa mga pagbabayad. Kaya makukuha mo ang kontrol at seguridad ng Bitcoin pati ang mga serbisyong ibinibigay ng mga pinansyal na institusyon. Dahil dito, magagawa mo sa mga cryptocurrency ang mga bagay na hindi mo magagawa sa Bitcoin, tulad ng pagpapautang at panghihiram, pag-iiskedyul ng mga pagbabayad, pag-invest sa mga index fund at iba pa. + + +
    Tingnan ang aming mga rekomendasyon para sa mga DeFi application na dapat subukan kung bago ka sa Ethereum.
    + + I-explore ang mga DeFi app + +
    + +## Ano ang magagawa mo sa DeFi? {#defi-use-cases} + +May decentralized na alternatibo sa karamihan sa mga serbisyong pinansyal. Ngunit nagbibigay din ang Ethereum ng pagkakataon para gumawa ng mga bagong-bagong pinansyal na produkto. Palaging nadaragdagan ang listahang ito. + +- [Magpadala ng pera sa iba't ibang bahagi ng mundo](#send-money) +- [Mag-stream ng pera sa iba't ibang bahagi ng mundo](#stream-money) +- [Ma-access ang mga stable na currency](#stablecoins) +- [Humiram ng pondo na may collateral](#lending) +- [Humiram nang walang collateral](#flash-loans) +- [Simulan ang pag-iipon ng crypto](#saving) +- [Mag-trade ng mga token](#swaps) +- [Palaguin ang iyong portfolio](#investing) +- [Pondohan ang iyong mga ideya](#crowdfunding) +- [Bumili ng insurance](#insurance) +- [Pamahalaan ang iyong portfolio](#aggregators) + + + +### Magpadala ng pera sa iba't ibang bahagi ng mundo nang mabilis {#send-money} + +Bilang isang blockchain, ang Ethereum ay idinisenyo para magpadala ng mga transaksyon sa ligtas at pandaigdigang paraan. Tulad ng Bitcoin, pinapadali ng Ethereum ang pagpapadala ng pera sa iba't ibang bahagi ng mundo, na parang nagpapadala lang ng email. Ilagay lang ang [ENS name](/nft/#nft-domains) (tulad ng bob.eth) ng recipient mo o ang kanyang account address mula sa iyong wallet at sa loob ng ilang minuto (karaniwan), direkta na niyang matatanggap ang bayad mo. Upang magpadala o tumanggap ng mga pagbabayad, kakailanganin mo ng [wallet](/wallets/). + + + Tingnan ang mga decentralized application (dapps) para sa pagbabayad + + +#### Mag-stream ng pera sa iba't ibang bahagi ng mundo... {#stream-money} + +Maaari ka ring mag-stream ng pera sa Ethereum. Binibigyang-daan ka nitong bayaran ang suweldo ng isang tao sa kada segundo, kaya agad niyang makukuha ang pera niya kapag kailangan niya ito. O magrenta ng isang bagay kada segundi, tulad ng storage locker o electric scooter. + +At kung ayaw mong magpadala o mag-stream ng [ETH](/eth/) dahil nagbabago-bago ang halaga nito, may mga alternatibong currency sa Ethereum: mga stablecoin. + + + +### Ma-access ang mga stable na currency {#stablecoins} + +Ang volatility ng cryptocurrency ay problema para sa maraming pinansyal na produkto at pangkalahatang paggastos. Inayos ito ng komunidad ng DeFi gamit ang mga stablecoin. Ipinapareho ang halaga ng mga ito sa isa pang asset, na karaniwang mas ginagamit na currency tulad ng dolyar. + +Ang mga coin tulad ng Dai o USDC ay may halagang nananatiling malapit sa isang dolyar. Dahil dito, mainam ito para sa pagkakaroon ng kita o retail. Maraming tao sa Latin America ang gumamit ng mga stablecoin bilang paraan para protektahan ang kanilang naipong pera sa panahon ng kawalan ng katiyakan pagdating sa mga currency na mula sa kanilang pamahalaan. + + + Iba pang detalye tungkol sa mga stablecoin + + + + +### Paghiram {#lending} + +Ang paghiram ng pera mula sa mga decentralized provider ay may dalawang pangunahing uri. + +- Peer-to-peer, na nangangahulugang direktang hihiram ang borrower sa isang partikular na lender. +- Pool-based kung saan nagbibigay ng pondo (liquidity) ang mga lender sa isang pool na mahihiraman ng mga borrower. + + + Tingnan ang dapps para sa panghihiram + + +Maraming benepisyo sa paggamit ng decentralized lender... + +#### Paghiram nang may privacy {#borrowing-privacy} + +Sa kasalukuyan, ang pagpapautang at panghihiram ng pera ay nauugnay sa mga indibidwal na may kinalaman dito. Kailangang malaman ng mga bangko kung malaman na mababayaran mo ang loan bago ito magpautang. + +Ang decentralized na pagpapautang ay nangyayari nang hindi kinakailangang magpakilala ng kahit aling panig. Sa halip, ang borrower ay dapat maglaan ng collateral na awtomatikong matatanggap ng lender kung sakali hindi mabayaran ang kanilang loan. May ilang lender na tumatanggap ng NFT bilang collateral. Ang mga NFT ay titulo para sa natatanging asset, tulad ng painting. [Iba pang detalye tungkol sa mga NFT](/nft/) + +Binibigyang-daan ka nitong humiram ng pera nang walang pagsusuri ng iyong credit o pagbibigay ng pribadong impormasyon. + +#### Access sa pandaigdigang pondo {#access-global-funds} + +Kapag gumamit ka ng decentralized lender, may access ka sa pondong idineposito sa iba't ibang bahagi ng mundo, hindi lang sa pondong hawak ng pinili mong bangko o institusyon. Pinapadali nito ang pagkuha ng mga loan at pinapababa nito ang interes. + +#### Tax-efficiencies {#tax-efficiencies} + +Kapag nanghiram, maa-access mo ang pondong kailangan mo nang hindi ibinebenta ang iyong ETH (isang taxable event). Sa halip, maaari mong gamitin ang ETH bilang collateral para sa stablecoin loan. Dahil dito, makukuha mo ang cash-flow na kailangan mo at hindi mawawala sa iyo ang ETH mo. Ang mga stablecoin ay mga token na mas mainam kapag kailangan mo ng cash dahil hindi nagbabago-bago ang halaga ng mga ito gaya ng ETH. [Iba pang detalye tungkol sa mga stablecoin.](#stablecoins) + +#### Mga flash loan {#flash-loans} + +Ang mga flash loan ay mas eksperimental na uri ng decentralized na pagpapautang kung saan puwede kang humiram kahit walang collateral o nang hindi nagbibigay ng anumang personal na impormasyon. + +Sa ngayon, hindi pa ito magagamit ng mga hindi maalam sa teknolohiya, pero ipinapahiwatig ng mga ito ang mga posibleng maisagawa ng lahat sa hinaharap. + +Gumagana ito kapag inutang ang loan at binayaran ito sa iisang transaksyon. Kung hindi ito mababayaran, bababalik sa dati ang transaksyon na parang walang nangyari. + +Ang pondo na kadalasang ginagamit ay nasa mga liquidity pool (malalaking grupo ng pondo na ginagamit para sa panghihiram). Kung hindi ginagamit ang mga ito sa ngayon, binibigyan nito ng pagkakataon ang isang tao na hiramin ang pondong ito, magnegosyo gamit ang mga ito, at bayaran ang mga ito nang buo sa halos parehong pagkakataon na hiniram ito. + +Ibig sabihin nito, maraming logic na dapat isama sa isang napaka-bespoke na transaksyon. Ang isang simpleng halimbawa ay ang paggamit ng isang tao ng flash loan para manghiram ng maraming asset sa isang presyo upang maibenta ito sa ibang exchange kung saan mas mataas ang presyo. + +Kung kaya, sa iisang transaksyon, ganito ang nangyayari: + +- Humiram ka ng halagang X ng $asset sa halagang $1.00 mula sa exchange A +- Ibinenta mo ang X na $asset sa exchange B sa halagang $1.10 +- Binayaran mo ang loan sa exchange A +- Makukuha mo ang kita maliban sa bayarin sa transaksyon + +Kung biglang bumaba ang supply ng exchange B at kulang ang binili ng user para sapatan ang orihinal na loan, hindi maisasagawa ang transaksyon. + +Para magawa ang halimbawa sa itaas sa tradisyonal na mundo ng pinansya, kakailanganin mo ng napakalaking halaga ng pera. Ang mga may pera lang ang makakagamit ng mga pamamaraang ito ng pagkakapera. Ang mga flash loan ay halimbawa ng kinabukasan kung saan hindi kailangang magkaroon ng pera para kumita ng pera. + +[Iba pang detalye tungkol sa mga flash loan](https://aave.com/flash-loans/) + + + +### Magsimulang mag-ipon gamit ang crypto {#saving} + +#### Pagpapautang {#lending} + +Maaari kang kumita ng interes sa iyong crypto sa pamamagitan ng pagpapautang nito at subaybayan ang paglago ng iyong pondo nang real time. Sa ngayon, mas mataas ang interes kaysa sa karaniwang makukuha mo sa iyong lokal na bangko (kung susuwertihin kang magkaroon ng access sa isang bangko). Narito ang isang halimbawa: + +- Ipapautang mo ang iyong 100 Dai, isang [stablecoin](/stablecoins/), sa isang produkto gaya ng Aave. +- Tatanggap ka ng 100 Aave Dai (aDai) na isang token na kumakatawan sa iyong ipinautang na Dai. +- Ang iyong aDai ay tataas base sa interes at makikita mo ang paglaki ng iyong balanse sa iyong wallet. Depende sa APR, maaaring maging 100.1234 ang balanse ng iyong wallet pagkatapos ng ilang araw o maging oras! +- Maaari kang mag-withdraw ng regular na Dai na katumbas ng iyong balanse sa aDai anumang oras. + + + Tingnan ang mga decentralized application (dapps) para sa pagpapautang + + +#### Mga no-loss lottery {#no-loss-lotteries} + +Ang mga no-loss lottery tulad ng PoolTogether ay masaya at bagong paraan upang mag-ipon ng pera. + +- Bibili ka ng 100 na ticket gamit ang 100 Dai token. +- Makakatanggap ka ng 100 plDai na kumakatawan sa iyong 100 ticket. +- Kung mananalo ang isa sa mga ticket mo, tataas ang iyong plDai balance ayon sa halaga ng prize pool. +- Kung hindi ka mananalo, maililipat ang iyong 100 plDai sa draw sa susunod na linggo. +- Maaari kang mag-withdraw ng regular na Dai na katumbas ng iyong plDai balance anumang oras. + +Ang prize pool ay mula sa lahat ng interes na kinikita mula sa pagpapautang ng mga ticket deposit tulad ng nabanggit sa halimbawa sa pagpapautang sa itaas. + + + Subukan ang PoolTogether + + + + +### Mag-exchange ng mga token {#swaps} + +May libo-libong token sa Ethereum. Sa tulong ng mga decentralized exchange (DEXs), mate-trade mo ang iba't ibang token kahit kailan mo gusto. Hinding-hindi mo bibitawan ang pagkontrol sa mga asset mo. Dito, para kang gumagamit ng currency exchange kapag pumunta sa ibang bansa. Ngunit hinding-hindi nagsasara ang bersyong DeFi. Ang mga market ay bukas 24/7, 365 araw kada taon at iginagarantiya ng teknolohiya na palaging may tatanggap ng trade. + +Halimbawa, kung nais mong gamitin ang no-loss lottery na PoolTogether (na inilalarawan sa itaas), kakailanganin mo ng token tulad ng Dai o USDC. Ang mga DEX na ito ay nagbibigay-daan sa iyo na i-swap ang iyong ETH sa mga token na iyon at i-swap ito ulit kapag tapos ka na. + + + Tingnan ang mga token exchange + + + + +### Advanced trading {#trading} + +Mayroong mga mas advanced na opsyon para sa mga trader na gusto ng kaunti pang kontrol. Ang mga limit order, perpetual, margin trading, at iba pa ay posibleng gawin. Sa pamamagitan ng Decentralized trading, magkakaroon ka ng access sa global na liquidity, hinding-hindi nagsasara ang market, palagi mong makokontrol ang mga asset mo. + +Kapag gumagamit ka ng centralized exchange, dapat mong ideposito ang mga asset mo bago mag-trade at dapat mong ipaubaya sa kanila ang mga ito. Habang nakadeposito ang iyong mga asset, nanganganib ang mga ito dahil mainit sa mata ng mga hacker ang mga centralized exchange. + + + Tingnan ang mga decentralized application (dapps) para sa trading + + + + +### Palaguin ang iyong portfolio {#investing} + +May mga produkto para sa pamamahala ng pondo sa Ethereum na susubukang palaguin ang iyong portfolio batay sa estratehiyang iyong pipiliin. Ito ay awtomatiko, bukas sa lahat, at hindi nangangailangan ng manager na makikihati sa iyong kita. + +Isang magandang halimbawa ang [ DeFi Pulse Index fund (DPI)](https://defipulse.com/blog/defi-pulse-index/). Ito ay isang pondo na awtomatikong nagre-rebalance upang tiyaking palaging makikita sa portfolio mo [ang mga nangungunang DeFi token ayon sa market capitalization](https://www.coingecko.com/en/defi). Hindi mo kailangang pamahalaan ang alinman sa mga detalye at puwede kang umalis sa pondo kung kailan mo gusto. + + + Tingnan ang mga decentralized application (dapps) para sa investment + + + + +### Pondohan ang iyong mga ideya {#crowdfunding} + +Magandang platform ang Ethereum para sa crowdfunding: + +- Maaaring manggagaling ang mga potensyal na funder kahit saan – bukas ang Ethereum at ang mga token nito para sa kahit sino at kahit saang sulok ng mundo. +- Transparent ito kaya maipapakita ng mga fundraiser kung magkano na ang naipong pera. At malalaman mo kung saan napupunta o nagagastos ang lahat ng ito. +- Maaaring mag-set up ang mga fundraiser ng mga awtomatikong refund kung, halimbawa, may tiyak na takdang oras at minimum na halaga na hindi natugunan. + + + Tingnan ang mga decentralized application (dapps) para sa crowdfunding + + +#### Kwadratik na pondo {#quadratic-funding} + +Ang Ethereum ay open source na software at marami sa mga naunang gawain nito ay pinondohan ng komunidad. Dahil dito, nagkaroon ng interesante at bagong fundraising model: ang quadratic funding. This has the potential to improve the way we fund all types of public goods in the future. + +Quadratic funding makes sure that the projects that receive the most funding are those with the most unique demand. In other words, projects that stand to improve the lives of the most people. Narito kung paano ito gumagana: + +1. May matching pool ng mga donasyon. +2. Magsisimula ang isang round ng public funding. +3. Maaaring ipahiwatig ng mga tao ang kanilang demand para sa isang proyekto sa pamamagitan ng pag-donate ng pera. +4. Kapag natapos na ang round, ang matching pool ay ipinapamahagi sa mga proyekto. Ang may pinakakakaibang demand ang makakakuha ng pinakamalaking halaga mula sa matching pool. + +Ibig sabihin nito, ang Proyekto A na may 100 na donasyon na nagkakahalaga ng 1 dolyar ay maaaring magkaroon ng mas maraming pondo kaysa sa Proyekto B na may isang donasyon na nagkakahalaga ng 10,000 dolyar (depende sa laki ng matching pool). + +[Iba pang detalye tungkol sa quadratic funding](https://wtfisqf.com) + + + +### Insurance {#insurance} + +Ang decentralized insurance ay may layuning gawing mas abot-kaya, mas pabilisin ang payout, at mas transparent ang insurance. Sa pamamagitan ng higit pang automation, mas abot-kaya ang coverage at mas mabibilis ang pay-out. Ang data na ginagamit upang magpasya sa iyong claim ay ganap na transparent. + +Ang mga produkto ng Ethereum, gaya ng anumang software, ay puwedeng magkaroon ng mga bug at puwedeng abusuhin. Kaya sa ngayon, maraming produkto ng insurance ang nakatuon sa pagprotekta sa mga user laban sa pagkawala ng pondo. Gayunpaman, may mga proyekto na nagsisimulang bumuo ng coverage para sa lahat ng puwede nating harapin sa buhay. Isang magandang halimbawa nito ay ang Crop cover ng Etherisc na may layuning [ protektahan ang maliliit na magsasaka sa Kenya laban sa tagtuyot at pagbaha](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc). Ang decentralized insurance ay maaaring magbigay ng mas abot-kayang presyo para sa mga magsasaka na kadalasang hindi kayang magbayad para sa tradisyonal na insurance. + + + Tingnan ang decentralized application (dapps) para sa insurance + + + + +### Mga aggregator at manager ng portfolio {#aggregators} + +Sa dami ng mga nangyayari, kakailanganin mo ng paraan upang subaybayan ang lahat ng iyong mga investment, loan, at trade. May iba't ibang produkto na nagbibigay-daan sa iyong i-coordinate ang lahat ng iyong aktibidad sa DeFi mula sa isang lugar. Ito ang kagandahan ng open architecture ng DeFi. Ang mga team ay maaaring bumuo ng mga interface kung saan hindi mo lang makikita ang iyong mga balanse sa iba't ibang produkto, maaari mo ring gamitin ang kanilang mga feature. Maaaring maging kapaki-pakinabang ito para sa iyo habang tinitingnan mo ang iba pang bahagi ng DeFi. + + + Tingnan ang decentralized application (dapps) para sa portfolio + + + + +## Paano gumagana ang DeFi? {#how-defi-works} + +Ang DeFi ay gumagamit ng mga cryptocurrency at smart contract upang magbigay ng mga serbisyong hindi nangangailangan ng mga intermediary. Sa kasalukuyang mundo ng pinansya, ang mga institusyong pinansyal ay nagsisilbing guarantor ng mga transaksyon. Binibigyan nito ang mga institusyong ito ng labis na kapangyarihan dahil dumadaan sa kanila ang pera mo. Dagdag pa rito, bilyon-bilyong tao sa buong mundo ang walang access sa bank account. + +Sa DeFi, pinapalitan ng smart contract ang pinansyal na institusyon sa transaksyon. Ang smart contract ay isang uri ng Ethereum account na maaaring humawak ng pondo at ipadala/ibalik ang mga ito base sa ilang partikular na kundisyon. Walang sinuman ang puwedeng magbago ng smart contract kapag live ito – palagi itong tatakbo ayon sa kung paano ito na-program. + +Ang isang kontrata na idinisenyo upang magbigay ng allowance o pocket money ay maaaring i-program na magpadala ng pera sa Account B mula sa Account A tuwing Biyernes. At gagawin lamang nito ito kung may sapat na pondo ang Account A. Walang sinuman ang puwedeng magbago ng kontrata at magdagdag ng Account C bilang recipient upang magnakaw ng pondo. + +Ang mga kontrata ay bukas din para tingnan at i-audit ng kahit sino. Ibig sabihin nito, madalas na masisiyasat kaagad ng komunidad ang hindi magagandang kontrata. + +Ito ay nangangahulugan na kailangan nating magtiwala sa mga mas teknikal na miyembro ng komunidad ng Ethereum na nakakapag-read ng code. Ang open-source based na komunidad ay tumutulong sa pagbabantay sa mga developer, pero hindi na ito masyadong kakailanganin sa paglipas ng panahon habang nagiging mas madaling i-read ang mga smart contract at gumagawa ng iba pang paraan para patunayan ang pagiging mapagkakatiwalaan ng code. + +## Ethereum at DeFi {#ethereum-and-defi} + +Ang Ethereum ang perpektong pundasyon para sa DeFi dahil sa mga sumusunod: + +- Walang nagmamay-ari sa Ethereum o sa mga smart contract na narito – binibigyan nito ang lahat ng pagkakataon na gumamit ng DeFi. Ibig sabihin din nito, walang makakapagbago ng mga panuntunan nang biglaan. +- Iisa ang language na ginagamit ng lahat ng produkto ng DeFi: Ethereum. Ibig sabihin, maayos na magagamit nang sama-sama ang marami sa mga produkto. Magagawa mong magpautang ng mga token sa isang platform at i-exchange ang token na may interes sa ibang market sa isang ganap na ibang application. Dito, para kang nagpapapalit ng loyalty points sa bangko mo. +- Ang mga token at cryptocurrency ay bahagi ng Ethereum, na isang nakabahaging ledger – magaling ang Ethereum sa pagsubaybay sa mga transaksyon at pagmamay-ari. +- Nagbibigay ng ganap na financial freedom ang Ethereum – hinding-hindi hahawakan ng karamihan sa mga produkto ang pondo mo, kaya ikaw talaga ang may kontrol. + +Maaaring isipin na may mga layer ang DeFi: + +1. Ang blockchain – na Ethereum ay naglalaman ng kasaysayan ng mga transaksyon at kalagayan ng mga account. +2. Ang mga asset –[ ETH](/eth/)at iba pang token (mga currency). +3. Ang mga protocol – [mga smart contract](/glossary/#smart-contract) na nagbibigay ng kakayahan, halimbawa, sa isang serbisyong nagpapahintulot ng decentralized na pagpapautang ng mga asset. +4. [Ang mga application](/dapps/) – ang mga produkto na ginagamit natin para pamahalaan at i-access ang mga protocol. + +## Gumawa ng DeFi {#build-defi} + +Ang DeFi ay isang open-source movement. Ang mga protocol at application ng DeFi ay bukas para i-inspect, i-fork, at pagandahin mo. Dahil sa layered stack na ito (gumagamit ang lahat ng ito ng parehong base blockchain at mga asset), ang mga protocol ay maaaring pagsama-samahin upang gumawa ng mga natatanging oportunidad. + + + Iba pang detalye tungkol sa mga decentralized application (dapps) para sa paggawa + + +## Karagdagang pagbabasa {#futher-reading} + +### DeFi data {#defi-data} + +- [DeFi Prime](https://defiprime.com/) +- [Defi Llama](https://defillama.com/) +- [DeFi Rate](https://defirate.com/) + +### Mga artikulo tungkol sa DeFi {#defi-articles} + +- [Gabay para sa mga baguhan sa DeFi](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu, Enero 6, 2020_ + +### Videos {#videos} + +- [Finematics - edukasyon tungkol sa decentralized finance](https://finematics.com/) – _Mga video tungkol sa DeFi_ +- [The Defiant](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) - _Mga pangunahing kaalaman sa DeFi: Lahat ng kailangan mong malaman para makapagsimula sa nakakalitong lugar na ito._ +- [Whiteboard Crypto](https://youtu.be/17QRFlml4pA)_Ano ang DeFi?_ + +### Mga Komunidad {#communities} + +- [Discord server ng DeFi Llama](https://discord.gg/buPFYXzDDd) +- [Discord server ng DeFi Pulse](https://discord.gg/Gx4TCTk) diff --git a/src/content/translations/fil/desci/index.md b/src/content/translations/fil/desci/index.md new file mode 100644 index 00000000000..5a648873f77 --- /dev/null +++ b/src/content/translations/fil/desci/index.md @@ -0,0 +1,139 @@ +--- +title: Decentralized science (DeSci) +description: Pangkalahatang-ideya ng decentralized science sa Ethereum +lang: fil +template: use-cases +emoji: ":microscope:" +sidebarDepth: 2 +image: ../../../../assets/future_transparent.png +alt: "" +summaryPoint1: Isang pandaigdigan at bukas na alternatibo sa kasalukuyang sistemang siyentipiko. +summaryPoint2: Isang teknolohiyang nagbibigay-daan sa mga siyentipiko na lumikom ng pondo, magsagawa ng mga eksperimento, magbahagi ng data, magbahagi ng mga kaalaman, at iba pa. +summaryPoint3: Pinapalawig ang open science movement. +--- + +## Ano ang decentralized science (DeSci)? {#what-is-desci} + +Ang decentralized science (DeSci) ay isang kilusang naglalayong gumawa ng pampublikong infrastructure para sa pagpopondo, paggawa, pagsusuri, pagkilala, pag-store, at pagpapalaganap ng kaalaman sa agham nang patas at pantay-pantay gamit ang Web3 stack. + +Layunin ng DeSci na gumawa ng ecosystem kung saan hinihikayat ang mga siyentipikong hayagang ibahagi ang kanilang pananaliksik at kilalanin para sa kanilang gawa habang binibigyang-daan ang kahit sino na i-access at mag-contribute sa pananaliksik nang walang kahirap-hirap. Pinagbabatayan ng DeSci ang ideyang dapat naa-access ng lahat ang siyentipikong kaalaman at dapat transparent ang proseso ng siyentipikong pananaliksik. Gumagawa ang DeSci ng mas decentralized at mas malawak na model ng siyentipikong pananaliksik. Kung kaya, mas mahihirapan ang mga central authority na i-censor o kontrolin ito. Umaasa ang DeSci na makakagawa ito ng environment kung saan mabubuo ang mga bago at hindi pangkaraniwang ideya sa pamamagitan ng pag-decentralize sa access sa pondo, mga scientific tool, at mga channel ng komunikasyon. + +Nagbibigay-daan ang decentralized science sa mas diverse na pinagmumulan ng pondo (mula sa [mga DAO](/dao/), [quadratic donation](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) hanggang sa crowdfunding at iba pa), mas accessible na data at paraan ng pag-access, at sa pamamagitan ng pagbibigay ng mga insentibo para sa reproducibility. + +### Juan Benet - Ang DeSci Movement + + + +## Paano pinapaunlad ng DeSci ang agham {#desci-improves-science} + +Isang hindi kumpletong listahan ng mga pangunahing problema sa agham at kung paano makakatulong ang decentralized science na tugunan ang mga isyung ito + +| **Decentralized science** | **Tradisyonal na agham** | +| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| Ang distribusyon ng pondo ay tinutukoy ng publiko gamit ang mga mekanismo tulad ng mga quadratic donation o DAO. | Mga maliit, eksklusibo, at centralized na grupo ang kumokontrol sa distribusyon ng pondo. | +| Nakikipag-collaborate ka sa mga kasamahan mula sa iba't ibang panig ng mundo sa mga dynamic na team. | Nililimitahan ng mga funding organization at home institution ang mga pakikipag-collaborate mo. | +| Ginagawa online at nang transparent ang mga desisyon sa pondo. Tumitingin ng mga bagong mekanismo sa pagpopondo. | Matagal bago makuha ang mga desisyon sa pondo at limitado lang ang transparency. Iilan lang ang mga mekanismo sa pagpopondo. | +| Mas madali at mas transparent ang pagbabahagi ng mga serbisyo sa laboratoryo gamit ang Web3 primitives. | Madalas na mabagal at hindi gaanong malinaw ang pagbabahagi ng mga mapagkukunan para sa laboratoryo. | +| Maaaring mag-develop ng mga bagong model para sa paglalathala na gumagamit ng Web3 primitives para sa tiwala, transparency, at pangkalahatang access. | Naglalathala ka sa pamamagitan ng mga itinakdang pathway na madalas na kinikilalang hindi epektibo, may kinikilingan, at mapagsamantala. | +| Maaari kang kumita ng mga token at makilala para sa pagsusuri ng gawa ng mga kasamahan. | Hindi ka babayaran para sa iyong pagsusuri sa gawa ng mga kasamahan, kung kaya, ang mga for-profit publisher ang nakikinabang. | +| Ikaw ang nagmamay-ari sa intellectual property (IP) na ginagawa mo at maipapamahagi mo ito ayon sa mga transparent na tuntunin. | Ang home institution mo ang nagmamay-ari sa IP na ginagawa mo. Hindi transparent ang access sa IP. | +| Dahil on-chain ang lahat ng hakbang, ibinabahagi ang buong pananaliksik, kasama ang data mula sa mga hindi matagumpay na eksperimento. | Dahil sa publication bias, mas malamang na ibahagi ng mga mananaliksik ang mga eksperimentong naging matagumpay. | + +## Ethereum at DeSci {#ethereum-and-desci} + +Ang decentralized science system ay mangangailangan ng maigting na seguridad, maliit na monetary cost at transaction cost, at mahusay na ecosystem para sa pag-develop ng application. Ibinibigay ng Ethereum ang lahat ng kailangan para gumawa ng decentralized science stack. + +## Mga use case ng DeSci {#use-cases} + +Ginagawa ng DeSci ang scientific toolset na mag-o-onboard sa Web2 academia sa digital na mundo. Nasa ibaba ang mga halimbawa ng mga use case na maibibigay ng Web3 na siyentipikong komunidad. + +### Paglalathala {#publishing} + +Ang paglalathala ng mga siyentipikong pananaliksik ay kilala bilang nakakaligalig dahil pinapamahalaan ito ng mga publishing house na umaasa sa libreng trabaho ng mga siyentipiko, reviewer, at editor para mabuo ang mga pananaliksik, ngunit maniningil ng napakamahal na bayarin sa paglalathala. Kadalasan, hindi naa-access ng publiko, na karaniwang hindi direktang nagbayad para sa pananaliksik at mga gastos sa paglalathala sa pamamagitan ng pagbubuwis, ang mismong pananaliksik nang hindi nagbabayad sa publisher. Ang kabuuang bayarin para sa paglalathala ng bawat isang siyentipikong pananaliksik ay kadalasang halagang may limang digit ($USD), na sumisira sa konsepto ng siyentipikong kaalaman bilang [public good](https://www.econlib.org/library/Enc/PublicGoods.html) habang kumikita ng napakalaking halaga para sa mallit na grupo ng mga publisher. + +Mayroong mga libre at open-access na platform gaya ng mga pre-print server, [tulad ng ArXiv](https://arxiv.org/). Gayunpaman, ang mga platform na ito ay walang paraan ng pagkontrol sa kalidad, [mekanismo laban sa Sybil attack,](https://csrc.nist.gov/glossary/term/sybil_attack) at karaniwang hindi sinusubaybayan ang mga pamantayan sa antas ng artikulo. Ibig sabihin nito, karaniwang ginagamit lang ang mga ito para magsapubliko ng pananaliksik bago isumite sa tradisyonal na publisher. Sa SciHub, libreng makukuha ang mga nailathalang pananaliksik, pero hindi legal. Makukuha lang din ang mga pananaliksik kapag nabayaran na ang mga publisher at naprotektahan na ng mga ito ang pananaliksik sa mahigpit na batas sa copyright. Dahil dito, malaki ang pangangailangan para sa accessible na siyentipikong pananaliksik at data na may naka-embed na mekanismo ng pagiging lehitimo at model para sa insentibo. Makikita sa Web3 ang mga tool para makagawa ng ganitong system. + +### Reproducibility at replicability {#reproducibility-and-replicability} + +Ang reproductibility at replicability ay mga pundasyon ng de-kalidad na scientific discovery. + +- Maaaring makuha ang mga reproducible na resulta nang maraming magkakasunod na beses ng parehong team gamit ang parehong pamamaraan. +- Maaaring makuha ng ibang grupo ang mga replicable na resulta gamit ang parehong experimental setup. + +Tinitiyak ng mga bagong Web3-native tool na pundasyon ng pagtuklas ang reproducibility at replicability. Puwede nating ilagay ang de-kalidad na agham sa teknolohikal na aspeto ng akademya. Sa Web3, makakagawa ng mga attestation para sa bawat bahagi ng pagsusuri: ang raw data, computational engine, at resulta ng application. Ang maganda sa mga consensus sytem ay kapag gumawa ng pinagkakatiwalaang network para sa pagpapanatili ng mga bahaging ito, maaaring maging responsable ang bawat kasapi ng network sa pag-reproduce ng kalkulasyon at pag-validate sa bawat resulta. + +### Pagpopondo {#funding} + +Sa kasalukuyan, ang standard model para sa pagpopondo sa agham ay sumusulat ang mga indibidwal o grupo ng mga siyentipiko ng mga aplikasyon sa isang funding agency. Binibigyan ng puntos ng isang maliit na panel ng mga pinagkakatiwalaang indibidwal ang mga aplikasyon at pagkatapos ay kinakapanayam ng mga ito ang mga kandidato bago igawad ang pondo sa ilang aplikante. Bukod sa paggawa ng mga hadlang na humahantong sa napakatagal na panahon ng paghihintay sa pagitan ng pag-apply at pagtanggap ng grant, kilala ang model na ito na madaling maimpluwensyahan ng mga personal na opinyon, pansariling interes, at pulitika ng review panel. + +Ayon sa mga pag-aaral, hindi napipili ng mga grant review panel ang mga de-kalidad na proposal dahil labis na naiiba ang resulta noong ibinigay ang mga parehong proposal sa ibang mga panel. Dahil sa kakulangan saa pondo, mas kaunti na lamang ang napagbibigyan nito, at mas nakatutok sa mga mas matagal nang mga mananaliksik na may mga proyektong konserbatibo. Dahil dito, naging sobrang kompetitibo ang pagkuha ng pondo, nagtakda ng mga hindi katanggap-tanggap na insentibo, at nalimitahan ang inobasyon. + +May potensyal ang Web3 na baguhin ang hindi epektibong funding model na ito sa pamamagitan ng pagsubok sa iba't ibang model para sa insentibo na ginawa ng DAO at Web3. Ang [retroactive public goods funding](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c), [quadratic funding](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), [DAO governance](https://www.antler.co/blog/daos-and-web3-governance) at [mga tokenized na incentive structure](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design) ang ilan sa mga Web3 tool na maaaring bumago sa pagpopondo para sa agham. + +### Pagmamay-ari at pag-develop sa IP {#ip-ownership} + +Ang intellectual property (IP) ay malaking problema sa tradisyonal na agham: mula sa pagkapako sa mga unibersidad, o hindi paggamit sa mga ito sa mga biotech, hanggang sa kahirapan sa pagtantya sa halaga nito. Gayunpaman, bihasa ang Web3 pagdating sa pagmamay-ari sa mga digital asset (tulad ng siyentipikong data o mga artikulo) sa tulong ng [mga non-fungible token (NFTs)](/nft/). + +Tulad kung paano nagagawa ng mga NFT na ibalik ang kita para sa mga susunod pang transaksyon sa orihinal na creator, puwede kang magtakda ng mga transparent na value attribution chain para gantimpalaan ang mga mananaliksik, governing body (tulad ng mga DAO), o maging ang mga subject na pinagkukunan ng data. + +Ang [IP-NFTs](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6) ay puwede ring maging susi sa repository ng decntralized data ng mga isinasagawang eksperimento sa pananaliksik, at puwede rin itong gamitin sa NFT at [DeFi](/defi/) financialization (mula sa fractionalization hanggang sa mga lending pool at value appraisal). Binibigyang-daan din nito ang mga native na on-chain na entity gaya ng mga DAO tulad ng [VitaDAO](https://www.vitadao.com/) na magsagawa ng pananaliksik nang direkta on-chain. Maaaring may mahalagang papel din sa DeSci ang pagdating ng mga non-transferable na ["soulbound" token](https://vitalik.ca/general/2022/01/26/soulbound.html) sa pamamagitan ng pagbibigay-daan sa mga indibidwal na patunayan ang kanilang karanasan at kredensyal na nauugnay sa kanilang Ethereum address. + +### Pag-store, pag-access, at architecture ng data {#data-storage} + +Ang siyentipikong data ay maaaring gawing mas accessible gamit ang mga pattern ng Web3, at binibigyang-daan ng malawak na storage na malampasan ng pananaliksik ang mga cataclysmic event. + +Dapat itong magsimula sa isang system na maa-access ng anumang decentralized identity na may hawak ng mga naaangkop at nave-verify na kredensyal. Dahil dito, secure na mare-replicate ng mga pinagkakatiwalaang partido ang sensitibong data, na nagbibigay-daan sa redundacy at paglaban sa censorship, reproduction ng mga resulta, at maging ang kakayahan ng maraming partido na mag-collaborate at magdagdag ng bagong data sa dataset. Ang mga paraan ng confidential computing tulad ng [compute-to-data](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol) ay nagbibigay ng mga alternatibong paraan ng pag-access sa pag-replicate ng raw data, na gumagawa ng mga Trusted Research Environment para sa mga pinakasensitibong data. Ang mga Trusted Research Environment ay [binanggit ng NHS](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb) bilang future-facing solution para sa privacy ng data at collaboration sa pamamagitan ng paggawa ng ecosystem kung saan secure na magagamit ng mga mananaliksik ang data on-site gamit ang mga standardized na environment para sa pagbabahagi ng code at mga kagaiwan. + +Sinusuportahan ng mga flexible na Web3 data solution ang mga sitwasyong nabanggit at nagsisilbi itong pundasyon para sa ganap na Open Science, kung saan makakagawa ng public goods are mga mananaliksik nang hindi nangangailangan ng mga pahintulot para ma-access o mga bayarin. Ang mga Web3 public data solution tulad ng IPFS, Arweave, at Filecoin ay ginawa para sa decentralization. Halimbawa, nagbibigay ang dClimate ng pangkalahatang access sa data ng klima at lagay ng panahon, kabilang iyong mula sa mga weather station at mga predictive climate model. + +## Makibahagi {#get-involved} + +Tingnan ang mga proyekto at sumali sa komunidad ng DeSci. + +- [DeSci.Global: kalendaryo ng mga global event at meetup](https://desci.global) +- [Telegram ng Blockchain for Science](https://t.me/BlockchainForScience) +- [Molecule: Maglaan at makakuha ng pondo para sa iyong mga proyektong pananaliksik](https://discover.molecule.to/) +- [VitaDAO: makatanggap ng pondo sa pamamagitan ng mga sponsored na research agreement para sa longevity research](https://www.vitadao.com/) +- [ResearchHub: mag-post ng resulta ng siyentipikong pag-aaral at makipag-usap sa mga kapwa mananaliksik](https://www.researchhub.com/) +- [LabDAO: mag-fold ng protein in-silico](https://alphafodl.vercel.app/) +- [dClimate API: mag-query ng data ng klima na kinolekta ng decentralized community](https://api.dclimate.net/) +- [DeSci Foundation: builder ng tool sa paglalathala ng DeSci](https://descifoundation.org/) +- [DeSci.World: one-stop shop para tingnan at mag-engage ang mga user sa decentralized science](https://desci.world) +- [Fleming Protocol: open-source data economy na naghihikayat ng collaborative na biomedical discovery](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd) +- [OceanDAO: pagpopondo na pinapamahalaan ng decentralized autonomous organization (DAO) para sa agham na nauugnay sa data](https://oceanprotocol.com/dao) +- [Opscientia: mga bukas na workflow ng decentralized science](https://opsci.io/research/) +- [LabDAO: mag-fold ng protein in-silico](https://alphafodl.vercel.app/) +- [Bio.xyz: makakuha ng pondo para sa iyong biotech DAO o desci project](https://www.molecule.to/) +- [ResearchHub: mag-post ng resulta ng siyentipikong pag-aaral at makipag-usap sa mga kapwa mananaliksik](https://www.researchhub.com/) +- [VitaDAO: makatanggap ng pondo sa pamamagitan ng mga sponsored na research agreement para sa longevity research](https://www.vitadao.com/) +- [Fleming Protocol: open-source data economy na naghihikayat ng collaborative na biomedical discovery](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd) +- [Active Inference Lab](https://www.activeinference.org/) +- [CureDAO: Platform para sa Precision Health na Pagmamay-ari ng Komunidad](https://docs.curedao.org/) +- [IdeaMarkets: nagbibigay-daan sa decentralized scientific credibility](https://ideamarket.io/) +- [DeSci Labs](https://www.desci.com/) + +Tumatanggap kami ng mga mungkahi para sa mga bagong proyekto na ililista - tingnan ang aming [patakaran sa pagsasama sa listahan](/contributing/adding-desci-projects/) para magsimula! + +## Karagdagang pagbabasa {#further-reading} + +- [DeSci Wiki ni Jocelynn Pearl at ng Ultrarare](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#) +- [Gabay sa decentralized biotech ni Jocelynn Pearl para sa a16z future](https://future.a16z.com/a-guide-to-decentralized-biotech/) +- [Ang sitwasyon para sa DeSci](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/) +- [Gabay sa DeSci](https://future.com/what-is-decentralized-science-aka-desci/) +- [Mga mapagkukunan tungkol sa decentralized science](https://www.vincentweisser.com/decentralized-science) +- [Biopharma IP-NFTs ng Molecule - Isang Teknikal na Paglalarawan](https://molecule.to/blog/molecules-biopharma-ip-nfts-a-technical-description) +- [Paggawa ng mga Trustless na System of Science ni Jon Starr](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673) +- [Ang Pag-usbong ng Biotech DAOs](https://molecule.to/blog/the-emergence-of-biotech-daos) +- [Paul Kohlhaas - DeSci: Ang Kinabukasan ng Decentralized Science (podcast)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a) +- [Isang Ontolohiya ng Aktibong Inference para sa Decentralized Science: mula sa Situated Sensemaking hanggang sa Epistemic Commons](https://zenodo.org/record/6320575) +- [DeSci: Ang Kinabukasan ng Pananaliksik ni Samuel Akinosho](https://lucidsamuel.medium.com/desci-the-future-of-research-b76cfc88c8ec) +- [Pondo para sa Agham (Epilogo: DeSci at bagong crypto primitives) ni Nadia](https://nadia.xyz/science-funding) +- [Binabago ng Decentralization ang Pag-develop ng Gamot](https://medium.com/id-theory/decentralisation-is-disrupting-drug-development-28b5ba5d447f) + +### Videos {#videos} + +- [Ano ang Decentralized Science?](https://www.youtube.com/watch?v=-DeMklVWNdA) +- [Usapan sa pagitan ni Vitalik Buterin at ng siyentipikong si Aubrey de Grey tungkol sa intersection ng longevity research at crypto](https://www.youtube.com/watch?v=x9TSJK1widA) +- [Sira ang Pampublikasyon ng Siyentipiko. Maaayos Ba Ito ng Web3?](https://www.youtube.com/watch?v=WkvzYgCvWj8) +- [Juan Benet - DeSci, Independent Labs, at Large Scale Data Science](https://www.youtube.com/watch?v=zkXM9H90g_E) +- [Sebastian Brunemeier - Paano Mababago ng DeSci ang Biomedical Research at Venture Capital](https://www.youtube.com/watch?v=qB4Tc3FcVbM) diff --git a/src/content/translations/fil/energy-consumption/energy_consumption_pre_post_merge.png b/src/content/translations/fil/energy-consumption/energy_consumption_pre_post_merge.png new file mode 100644 index 0000000000000000000000000000000000000000..e6bf50694aa3eba77d31bdb2b6dcc8e4e1b7b796 GIT binary patch literal 467086 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%0Df1-lBh4VuAOyXwRiKrKlvJ2IJ;Y`m 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 z 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 + +Ipinapakita ng chart sa itaas ang tinatantyang kinokonsumong enerhiya kada taon sa TWh/taon para sa Ethereum, kumpara sa ilan pang industriya. Ang mga pagtatantyang ibinigay ay galing sa mga impormasyong available sa pampubliko na kinuha noong Mayo 2023. Makikita sa talahanayan sa ibaba ang mga link sa mga source: + +| | Kinokonsumong enerhiya kada taon (TWh) | Paghahambing sa PoS Ethereum | 起源 | +| :--------------------- | :------------------------------------: | :--------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Mga global data center | 200 | 77,000x | [source](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) | +| Gold mining | 131 | 50,000x | [起源](https://ccaf.io/cbnsi/cbeci/comparisons) | +| Bitcoin | 131 | 50,000x | [起源](https://ccaf.io/cbnsi/cbeci/comparisons) | +| PoW Ethereum | 78 | 30,000x | [起源](https://digiconomist.net/ethereum-energy-consumption) | +| YouTube (direkta lang) | 12 | 4600x | [起源](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf) | +| Gaming sa USA | 34 | 13,000x | [起源](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) | +| Netflix | 0.451 | 173x | [起源](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) | +| PayPal | 0.26 | 100x | [起源](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261) | +| AirBnB | 0.02 | 8x | [起源]() | +| PoS Ethereum | 0.0026 | 1x | [起源](https://carbon-ratings.com/eth-report-2022) | + +Mahirap makakuha ng mga tumpak na pagtatantya para sa kinokonsumong kuryente, lalo na kung ang sinusukat ay may kumplikadong supply chain o mga detalye ng deployment na nakakaapekto sa pagiging epektibo nito. Tingnan ang Netflix o Youtube bilang mga halimbawa. Ang mga pagtatantya ng kinokonsumong enerhiya ng mga ito ay nag-iiba depende kung ang enerhiya lang na ginagamit upang panatilihin ang kanilang mga sistema at maipadala ang content sa mga user (_direct expenditure_) ang isasama o kung isasama ang gastos na kinakailangan upang gumawa ng content, pamahalaan ang opisina ng kumpanya, mag-advertise, atbp (_indirect expenditure_). Maaaring kasama rin sa hindi direktang paggamit ang enerhiyang kailangan para gumamit ng content sa mga device ng end user tulad ng mga TV, computer at mobile, na nakadepende naman sa kung aling mga device ang ginagamit. + +Pinag-usapan ang isyung ito sa [Carbon Brief](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix). Sa talahanayan sa itaas, kasama sa halagang iniulat para sa Netflix ang kanilang _direkta_ at _hindi direktang_ paggamit na sila mismo ang nag-ulat. Nagbigay lang ang YouTube ng pagtatantya ng sarili nilang _direktang_ paggamit ng enerhiya, na umaabot ng mga [12 TWh/taon](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf). + +Kasama rin sa talahanayan at chart sa itaas ang mga pagkukumpara sa Bitcoin at sa patunay ng gawain na Ethereum. Mahalagang tandaan na ang kinokonsumong enerhiya ng mga network na gumagamit ng patunay ng gawain ay hindi static - nagbabago ito araw-araw. Ang halagang ginamit para sa patunay ng gawain na Ethereum ang halagang ginagamit bago ang [The Merge](/roadmap/merge/) hanggang sa patunay ng stake, gaya ng sinabi ng [Digiconomist](https://digiconomist.net/ethereum-energy-consumption). Tinatantya ng iba pang source, tulad ng [Cambridge Blockchain Network Sustainability Index](https://ccaf.io/cbnsi/ethereum/1), na mas mababa ang kinokonsumong enerhiya (mas malapit sa 20 TWh/taon). Malaki rin ang pagkakaiba ng mga pagtatantya para sa kinokonsumong enerhiya ng Bitcoin, depende sa mga source at isa itong paksang [pinag-uusapan](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/) hindi lang kaugnay ng dami ng enerhiyang kinokonsumo, kundi maging kaugnay ng mga pinagmulan ng enerhiyang iyon at mga nauugnay na etika. Hindi tumpak na maiuugnay ang kinokonsumong enerhiya sa environmental footprint dahil maaaring gumamit ng iba't ibang pinagmulan ng enerhiya ang iba't ibang proyekto, halimbawa mas maliit o mas malaking bahagi ng renewables. Halimbawa, isinasaad ng [Cambridge Bitcoin Electricity Consumption Index](https://ccaf.io/cbnsi/cbeci/comparisons) na ang demand ng Bitcoin network ay maaaring gamitan ng gas flaring o kuryente na makokonsumo sa transmission at distribusyon. Para makamit ang sustainability, pinalitan ng Ethereum ng green na alternatibo ang bahagi ng network na malakas kumonsumo ng enerhiya. + +Puwede kang mag-browse ng mga pagtatantya ng kinokonsumong enerhiya at carbon emission para sa maraming industriya sa [site ng Cambridge Blockchain Network Sustainability Index](https://ccaf.io/cbnsi/ethereum). + +## Mga pagtatantya kada transaksyon {#per-transaction-estimates} + +Tinatantya ng maraming artikulo ang ginagamit na enerhiya ng mga blockchain kada transaksyon. Maaari itong makalito dahil ang enerhiyang kailangan para mag-propose at mag-validate ng isang block ay hindi nakasalalay sa bilang ng mga transaksyon dito. Sa unit na kada transaksyon ng paggamit ng enerhiya, ipinagpapalagay na mas maliit ang magagamit na enerhiya kapag mas kaunti ang mga transaksyon at vice-versa, na hindi naman totoo. Gayundin, ang mga pagtatantya na kada transaksyon ay napakasensitibo sa kung paano tinutukoy ang throughput ng transaksyon ng isang blockchain, at maaaring dayain ang definition na ito para magmukhang mas malaki o maliit ang halaga. + +Halimbawa, sa Ethereum, ang transaction throughput ay hindi lang sa base layer - ito rin ang kabuuang halaga ng throughput ng transaksyon ng lahat ng "[layer 2](/layer-2/)" rollup nito. Hindi karaniwang isinasama ang mga layer 2 sa mga kalkulasyon, pero kapag isinaalang-alang ang karagdagang enerhiyang kinokonsumo ng mga sequencer (maliit) at ang bilang ng mga transaksyong ipinoproseso ng mga ito (malaki), lubhang liliit ang mga pagtatantya na kada transaksyon. Isa ito sa mga dahilan kung bakit maaaring makalito ang pagkukumpara ng kinokonsumong enerhiya ng mga platform kada transaksyon. + +## Ang carbon debt ng Ethereum {#carbon-debt} + +Nakapakaunti ng enerhiyang ginagamit ng Ethereum, pero hindi ito palaging ganito. Dati, gumagamit ang Ethereum ng patunay ng gawain na may mas malaking environmental cost kaysa sa kasalukuyang mekanismong patunay ng stake. + +Sa simula pa lang, pinlano ng Ethereum na magpatupad ng consensus mechanism na bayau sa patunay ng stake, pero gumugol ng maraming taon ng nakalaang pananaliksik at pag-develop ang pagsasakatuparan nito nang hindi pinapabayaan ang seguridad at decentralization. Kung kaya, gumamit ng mekanismong patunay ng gawain para simulan ang network. Sa patunay ng gawain, kailangang gamitin ng mga miner ang kanilang computing hardware para magkalkula ng halaga, at gumagamit ang prosesong ito ng enerhiya. + +![Pagkukumpara ng kinokonsumong enerhiya ng Ethereum bago at matapos ang Merge gamit ang Eiffel Tower (may taas na 330 metro) sa kaliwa upang katawanin ang mataas na enerhiyang kinokonsumo bago ang The Merge, at isang maliit na 4 cm na Lego figure sa kanan upang katawanin ang malaking kabawasan sa ginagamit na enerhiya matapos ang The Merge](energy_consumption_pre_post_merge.png) + +Ayon sa pagtatantya ng CCRI, binawasan ng The Merge ang kinokonsumong enerhiya kada taon ng Ethereum ng mahigit **99.988%**. Gayundin, ang carbon footprint ng Ethereum ay nabawasan ng mga **99.992%** (naging 870 mula sa mula sa 11,016,000 tonnes CO2e). Upang maisalarawan ito, ipagpalagay na ang pagkabawas ng mga emission ay parang paglipat sa taas ng maliit na toy figure mula sa taas ng Eiffel Tower, gaya ng ipinapakita sa figure sa itaas. Bilang resulta, malaki ang mababawas sa environmental cost ng pag-secure sa network. Gayundin, pinaniniwalang napaigting ang seguridad ng network. + +## Isang green na application layer {#green-applications} + +Bagama't napakaliit ng kinokonsumong enerhiya ng Ethereum, mayroon ding mahalaga, lumalaki, at napakaaktibong komunidad ng [**regenerative finance (ReFi)**](/refi/) na nabubuo sa Ethereum. Ang mga ReFi application ay gumagamit ng mga DeFi component upang lumikha ng mga pinansyal na application na may positibong epekto sa kalikasan. Ang ReFi ay bahagi ng mas malawakang kilusang ["solarpunk"](https://en.wikipedia.org/wiki/Solarpunk) na malapit na nauugnay sa Ethereum at naglalayong pagsamahin ang teknolohikal na pag-unlad at pangangalaga sa kalikasan. Ang Ethereum ay decentralized, permissionless, at composable, kaya naman naaangkop itong base layer para sa mga komunidad ng ReFi at solarpunk. + +Ang mga public goods funding platform na native sa Web3 tulad ng [Gitcoin](https://gitcoin.co) ay nagsasagawa ng mga climate round upang isulong ang environmentally conscious na paggawa sa application layer ng Ethereum. Sa pamamagitan ng paggawa ng mga inisyatibang ito (at iba pa, hal., [DeSci](/desci/)), ang Ethereum ay nagiging isang teknolohiyang may positibong epekto sa kapaligiran at lipunan. + + + Kung sa tingin mo ay mas mapapatumpak pa ang page na ito, maghain ng isyu o pull request (PR). Ang stats sa page na ito ay mga pagtatantya batay sa data na available sa publiko - hindi kumakatawan ang mga ito sa isang opisyal na pahayag o pangako mula sa ethereum.org team, o sa Ethereum Foundation. + + +## Karagdagang pagbabasa {#further-reading} + +- [Indeks ng Sustainable Network ng Cambridge Blockchain](https://ccaf.io/cbnsi/ethereum) +- [Ulat mula sa White House tungkol sa mga blockchain na patunay ng gawain](https://www.whitehouse.gov/wp-content/uploads/2022/09/09-2022-Crypto-Assets-and-Climate-Report.pdf) +- [Mga Emission ng Ethereum: Isang Bottom-up na Pagtatantya](https://kylemcdonald.github.io/ethereum-emissions/) - _Kyle McDonald_ +- [Ethereum Energy Consumption Index](https://digiconomist.net/ethereum-energy-consumption/) - _Digiconomist_ +- [ETHMerge.com](https://ethmerge.com/) - _[@InsideTheSim](https://twitter.com/InsideTheSim)_ +- [The Merge - Mga Epekto sa Pagkonsumo ng Kuryente at Carbon Footprint ng Ethereum Network](https://carbon-ratings.com/eth-report-2022) - _CCRI_ +- [Ang kinokonsumong enerhiya ng Ethereum](https://mirror.xyz/jmcook.eth/ODpCLtO4Kq7SCVFbU4He8o8kXs418ZZDTj0lpYlZkR8) + +## Related topics {#related-topics} + +- [Ang mithiin ng Ethereum](/roadmap/vision/) +- [Ang Beacon Chain](/roadmap/beacon-chain) +- [Ang Pag-merge](/roadmap/merge/) diff --git a/src/content/translations/fil/governance/index.md b/src/content/translations/fil/governance/index.md new file mode 100644 index 00000000000..44daf74db40 --- /dev/null +++ b/src/content/translations/fil/governance/index.md @@ -0,0 +1,183 @@ +--- +title: Pamamahala ng Ethereum +description: Isang panimula sa kung paano nagpapasya tungkol sa Ethereum. +lang: fil +postMergeBannerTranslation: page-upgrades-post-merge-banner-governance-ood +--- + +# Panimula sa pamamahala ng Ethereum {#introduction} + +_Kung walang nagmamay-ari sa Ethereum, paano pinagpapasyahan ang mga nakaraan at susunod pang pagbabago sa Ethereum? Ang pamamahala ng Ethereum ay tumutukoy sa prosesong nagbibigay-daan sa mga naturang pagpapasya._ + + + +## Ano ang pamamahala? {#what-is-governance} + +Ang pamamahala ang mga sistemang ipinapatupad na nagbibigay-daan sa pagpapasya. Sa isang karaniwang organizational structure, ang executive team o board of directors ang nakakapagtakda ng pinal na pasya pagdating sa pagpapasya. O marahil ay pinagbobotohan ng mga shareholder ang mga proposal upang maisakatuparan ang pagbabago. Sa isang sistemang pulitikal, ang mga inihalal na opisyal ay maaaring magpatupad ng batas na nagsusumikap na katawanin ang mga ninanais ng kanilang mga nasasakupan. + +## Decentralized na pamamahala {#decentralized-governance} + +Walang sinumang nagmamay-ari o nagkokontrol sa Ethereum protocol, ngunit kailangan pa ring pagpasyahan ang pagpapatupad ng mga pagbabago upang tiyaking magtatagal at magtatagumpay ang network. Dahil walang nagmamay-ari dito, hindi tugmang solusyon ang tradisyonal na pamamahala ng organisasyon. + +## Pamamahala ng Ethereum {#ethereum-governance} + +Ang pamamahala ng Ethereum ang proseso kung saan ginagawa ang mga pagbabago sa protocol. Mahalagang bigyang-diin na hindi nauugnay ang prosesong ito sa kung paano ginagamit ng mga tao at application ang protocol - permissionless ang Ethereum. Makakasali ang kahit sino mula sa kahit saan sa mundo sa mga aktibidad on-chain. Walang nakatakdang panuntunan pagdating sa kung sino ang puwede o hindi puwedeng gumawa ng application o magpadala ng transaksyon. Gayunpaman, mayroong proseso upang magmungkahi ng mga pagbabago sa core protocol kung saan pinapatakbo ang mga decentralized application. Dahil maraming tao ang umaasa sa stability ng Ethereum, napakataas ng threshold sa koordinasyon para sa mga pagbabago sa core, kasama na ang mga social at teknikal na proseso, upang tiyaking secure at susuportahan ng nakararami sa komunidad ang anumang pagbabago sa Ethereum. + +### On-chain vs off-chain na pamamahala {#on-chain-vs-off-chain} + +Ang blockchain technology ay nagbibigay-daan sa mga bagong kakayahan sa pamamahala, na kilala bilang on-chain governance. Ang on-chain governance ay kapag pinagpapasyahan ang mga iminumungkahing pagbabago sa protocol sa pamamagitan ng boto ng stakeholder, na kadalasang mga nagmamay-ari ng governance token, at sa blockchain isinasagawa ang botohan. Sa ilang uri ng on-chain governance, ang mga iminumungkahing pagbabago sa protocol ay nakalagay na sa code at awtomatikong inilalapat kung inaprubahan ng mga stakeholder ang mga pagbabago sa pamamagitan ng pag-sign ng transaksyon. + +Sa kabaligtaran, ang off-chain governance ay kung saan nangyayari ang anumang pagpapasya kaugnay ng pagbabago sa protocol sa pamamagitan ng hindi pormal na proseso ng social discussion, na kung maaaprubahan ay ilalagay sa code. + +**Isinasagawa off-chain ang pamamahala ng Ethereum** kung saan bahagi ng proseso ang iba't ibang stakeholder. + +_Kahit off-chain ang pamamahala ng Ethereum sa antas ng protocol, maraming use case na ginawa sa Ethereum, tulad ng DAOs, ang gumagamit ng on-chain na pamamahala._ + + + Iba pang detalye tungkol sa DAOs + + + + +## Sino ang bahagi nito? {#who-is-involved} + +May iba't ibang stakeholder sa [komunidad ng Ethereum](/community/), at may papel ang bawat isa sa proseso ng pamamahala. Narito ang mga stakeholder simula sa mga pinakamalayo sa protocol hanggang sa mga pinakamalapit: + +- **Mga may-ari ng Ether**: nagmamay-ari ang mga taong ito ng iba't ibang halaga ng ETH. [Iba pang detalye tungkol sa ETH](/eth/). +- **Mga User ng Application**: nag-i-interact ang mga taong ito sa mga application sa Ethereum blockchain. +- **Mga Developer ng Application/Tooling**: nagra-write ang mga taong ito ng mga application na pinapatakbo sa Ethereum blockchain (hal., DeFi, NFTs, atbp.) o bumubuo sila ng tooling para mag-interact sa Ethereum (hal., mga wallet, test suite, atbp.). [Iba pang detalye tungkol sa dapps](/dapps/). +- **Mga Node Operator**: nagpapatakbo ang mga taong ito ng mga node na nagpo-propagate ng mga block at transaksyon, at hindi tinatanggap ng mga ito ang anumang hindi valid na transaksyon o block na matutuklasan ng mga ito. [Iba pang detalye tungkol sa mga node](/developers/docs/nodes-and-clients/). +- **Mga EIP Author**: nagmumungkahi ang mga taong ito ng mga pagbabago sa Ethereum protocol, sa pamamagitan ng mga Ethereum Improvement Proposal (EIPs). [Iba pang detalye tungkol sa EIPs](/eips/). +- **Mga Validator**: nagpapatakbo ang mga taong ito ng mga node na makakapagdagdag ng mga bagong block sa Ethereum blockchain. +- **Mga Protocol Developer** (kilala rin bilang "Mga Core Developer" ): pinapangalagaan ng mga taong ito ang iba't ibang implementation ng Ethereum (hal., go-ethereum, Nethermind, Besu, Erigon sa execution layer o Prysm, Lighthouse, Nimbus, Teku, Lodestar sa consensus layer). [Iba pang detalye tungkol sa mga Ethereum client](/developers/docs/nodes-and-clients/). + +_Tandaan: maaaring hindi lang sa isa sa mga grupong ito napapabilang ang sinumang indibidwal (hal. maaaring magtaguyod ng EIP, at magpatakbo ng beacon chain validator, at gumamit ng mga DeFi application ang isang protocol developer). Para malinaw itong maunawaan, pinakamadali kung pag-iiba-ibahin ang mga ito._ + + + +## Ano ang EIP? {#what-is-an-eip} + +Isang mahalagang proseso na ginagamit sa pamamahala ng Ethereum ang pagmumungkahi ng **mga Ethereum Improvement Proposal (EIPs)**. Ang EIPs ay mga pamantayan na nagtatakda ng mga potensyal na bagong feature o proseso para sa Ethereum. Makakagawa ng EIP ang kahit sino sa komunidad ng Ethereum. Kung interesado kang magsulat ng EIP o lumahok sa peer-review at/o pamamahala, tingnan ang: + + + Iba pang detalye tungkol sa EIPs + + + + +## Ang pormal na proseso {#formal-process} + +Ganito ang pormal na proseso para sa paglulunsad ng mga pagbabago sa Ethereum protocol: + +1. **Magmungkahi ng Core EIP**: gaya ng inilarawan sa [EIP-1](https://eips.ethereum.org/EIPS/eip-1#core-eips), ang unang hakbang sa opisyal na pagmumungkahi ng pagbabago sa Ethereum ay idetalye ito sa isang Core EIP. Magsisilbi itong opisyal na specification para sa EIP na ipapatupad ng mga Protocol Developer kung matatanggap ito. + +2. **Ipresenta ang iyong EIP sa mga Protocol Developer**: kapag nabuo mo na ang Core EIP na may input ng komunidad, dapat mo itong ipresenta sa mga Protocol Developer. Maaari mo itong gawin sa pamamagitan ng pagmumungkahing pag-usapan ito sa isang [AllCoreDevs call](https://github.com/ethereum/execution-specs/tree/master/network-upgrades#getting-the-considered-for-inclusion-cfi-status). Malamang na mayroon nang mga usapang nangyari nang asynchronous sa [Ethereum Magician's forum](https://ethereum-magicians.org/) o sa [Ethereum R&D Discord](https://discord.gg/mncqtgVSVw). + +> Ang mga sumusunod ang mga posibleng resulta ng yugtong ito: + +> - Isasaalang-alang ang EIP para sa network upgrade sa hinaharap +> - Hihiling ng mga teknikal na pagbabago +> - Maaaring hindi ito tanggapin kung hindi ito priyoridad o kung maliit lang ang pagbabago kung ikukumpara sa tindi ng pagsisikap sa pagpapatupad nito + +3. **Ulitin ang proseso hanggang sa mabuo ang pinal na proposal:** matapos matanggap ang feedback mula sa lahat ng nauugnay na stakeholder, malamang na kailangan mong baguhin ang una mong proposal para paigtingin ang seguridad nito o para mas mahusay nitong matugunan ang mga pangangailangan ng iba't ibang user. Kapag naisama na ng iyong EIP ang lahat ng pagbabagong sa tingin mo ay kinakailangan, kakailanganin mong ipresenta ito ulit sa mga Protocol Developer. Pagkatapos nito, mapupunta ka sa susunod na hakbang ng prosesong ito, o magkakaroon ng mga bagong alalahanin, kaya kakailanganin mo ulit baguhin ang iyong proposal. + +4. **Isasama ang EIP sa Network Upgrade**: kung maaprubahan, ite-test at ipapatupad ang EIP, isasaayos ito bilang bahagi ng isang network upgrade. Dahil malaki ang gagastusin sa koordinasyon ng mga network upgrade (kailangang sabay-sabay mag-upgrade ang lahat), karaniwang pinagsasama-sama ang mga EIP sa mga upgrade. + +5. **Ia-activate na ang Network Upgrade**: kapag na-activate na ang network upgrade, magiging live na ang EIP sa Ethereum network. _Tandaan: karaniwang ina-activate ang mga network upgrade sa mga testnet bago ito i-activate sa Ethereum Mainnet._ + +Ang flow na ito, bagama't lubhang pinasimple, ay nagbibigay ng pangkalahatang-ideya ng mahahalagang yugto para ma-activate ang isang pagbabago sa protocol sa Ethereum. Ngayon, tingnan natin ang mga hindi promal na salik na nakakaapekto sa prosesong ito. + +## Ang hindi pormal na proseso {#informal-process} + +### Pag-unawa sa mga naunang gawain {#prior-work} + +Dapat pag-aralan ng mga EIP Champion ang mga naunang gawain at proposal bago gumawa ng EIP na maaari talagang i-deploy sa Ethereum Mainnet. Sa ganitong paraan, inaasahang magdadala ang EIP ng bagong bagay na hindi pa tinatanggihan. Ang tatlong pangunahing lugar para i-research ito ay ang [EIP repository](https://github.com/ethereum/EIPs), [Ethereum Magicians](https://ethereum-magicians.org/), at [ethresear.ch](https://ethresear.ch/). + +### Mga working group {#working-groups} + +Maliit ang posibilidad na ipatupad sa Ethereum Mainnet ang unang draft ng EIP nang walang kailangang i-edit o baguhin. Karaniwang makikipagtulungan ang mga EIP Champion sa isang subset ng mga Protocol Developer para tiyakin, ipatupad, i-test, ulitin, at tapusin ang kanilang proposal. Noon pa man, nangangailangan ang mga working group na ito ng ilang buwan (at kung minsan ay ilang taon!) ng pagsisikap. Tulad nito, dapat ding makipagtulungan ang mga EIP Champion para sa mga naturang pagbabago sa mga nauugnay Application/Tooling Developer para makakuha ng feedback mula sa mga end user at maiwasan ang anumang panganib sa deployment. + +### Community consensus {#community-consensus} + +Bagama't mga direktang teknikal na pagpapahusay ang ilang EIPs, mas kumplikado ang iba at may mga tradeoff na makakaapekto sa iba't ibang stakeholder sa iba't ibang paraan. Ibig sabihin nito, may ilang EIPs na mas pinagtatalunan sa komunidad kaysa sa iba. + +Walang tiyak na estratehiya sa kung paano pangasiwaan ang mga pinagtatalunang proposal. Resulta ito ng decentralized na disenyo ng Ethereum kung saan hindi puwedeng puwersahin ng nag-iisang grupo ng mga stakeholder ang kabilang grupo: puwedeng piliin ng mga protocol developer na hindi ipatupad ang mga pagbabago sa code; puwedeng hindi patakbuhin ng mga node operator ang pinakabagong Ethereum client; puwedeng piliin ng mga team at user ng application na hindi mag-transact sa chain. Dahil walang paraan ang mga Protocol Developer para puwersahin ang mga taong gamitin ang mga network upgrade, iiwasan nilang magpatupad ng EIPs na mas pagtatalunan ng komunidad kaysa makakabenepisyo rito. + +Inaasahang hihingi ang mga EIP Champion ng feedback mula sa lahat ng nauugnay na stakeholder. Kung magiging champion ka ng pinagtatalunang EIP, dapat mong subukang tugunan ang mga pagtutol para magkaroon ng consensus ang iyong EIP. Dahil sa laki at pagkakaiba-iba ng komunidad ng Ethereum, walang nag-iisang pamantayan (hal., coin vote) na magagamit para sukatin ang consensus ng komunidad, at inaasahang makakaangkop ang mga EIP Champion sa mga sitwasyong nauugnay sa kanilang proposal. + +Bukod pa sa seguridad ng Ethereum network, dati pa man ay lubha nang pinapahalagahan ng mga Protocol Developer sa pinapahalagahan ng mga Application/Tooling Developer at mga Application user, lalo na't ang paggamit at pag-develop nila sa Ethereum ang dahilan kung bakit naeengganyo sa ecosystem ang iba pang stakeholder. Bukod pa rito, kailangang ipatupad ang EIPs sa lahat ng client implementation, na pinapamahalaan ng iba't ibang team. Bilang bahagi ng prosesong ito, karaniwang kailangang hikayatin ang maraming team ng mga Protocol Developer na mahalaga ang isang partikular na pagbabago at tinutulungan nito ang mga end user o may nilulutas itong problema sa seguridad. + + + +## Pag-aayos ng mga hindi pagkakasundo {#disagreements} + +Dahil maraming stakeholder na may iba't ibang motibasyon at paniniwala, hindi bihirang magkaroon ng mga hindi pagkakaunawaan. + +Karaniwang inaayos ang mga hindi pagkakaunawaan sa mahabang usapan sa mga pampublikong forum para maunawaan ang sanhi ng problema at hayaan ang sinuman na magpahayag ng kanyang opinyon. Kadalasang nagpaparaya ang isang grupo, o nagkakasundo sa isang opsyong katanggap-tanggap sa lahat. Kung ayaw magparaya ng isang grupo, maaaring magresulta sa chain split kung ipipilit ipatupad ang isang partikular na pagbabago. Nangyayari ang chain split kapag may ilang stakeholder na tututol sa pagpapatupad ng pagbabago sa protocol na magreresulta sa magkaiba at hindi compatible na bersyon ng pinapatakbong protocol, kung saan magmumula ang dalawang magkaibang blockchain. + +### Ang DAO fork {#dao-fork} + +Nangyayari ang mga fork kapag may mga pangunahing teknikal na pag-upgrade o pagbabago at babaguhin nito ang "mga panuntunan" ng protocol. Dapat i-update ng [mga Ethereum client](/developers/docs/nodes-and-clients/) ang kanilang software upang ipatupad ang mga panuntunan para sa fork. + +Ang DAO fork ay ginawa bilang tugon sa [DAO attack noong 2016](https://www.coindesk.com/understanding-dao-hack-journalists) kung saan nakuha sa isang hindi secure na [DAO](/glossary/#dao) contract ang mahigit 3.6 milyong ETH sa isang hack. Inilipat ng fork ang mga pondo mula sa palyadong contract sa bagong contract, kaya mare-recover ito ng kahit sinong nawalan ng pondo dahil sa pag-hack. + +Pinagbotohan ng komunidad ng Ethereum ang pagkilos na ito. Makakaboto ang sinumang nagmamay-ari ng ETH sa pamamagitan ng isang transaksyon sa [isang voting platform](http://v1.carbonvote.com/). Ang desisyong mag-fork ay umabot ng mahigit 85% ng mga boto. + +Mahalaga ring tandaan na bagama't nag-fork ang protocol para bumalik sa normal mula sa pag-hack, may ilang dahilan para kuwestiyunin ang katumbas na bigat ng boto sa pagpapasyang mag-fork: + +- Kaunti lang ang bumoto +- Hindi alam ng karamihan sa mga tao na mayroong botohan +- Ang mga may-ari ng ETH lang ang kinatawan ng boto, at hindi ang sinupamang kalahok sa system + +Hindi pumayag na mag-fork ang isang subset ng komunidad dahil sa tingin nila ay hindi isang depekto ang DAO incident sa protocol. Kalaunan ay binuo nila ang [Ethereum Classic](https://ethereumclassic.org/). + +Kasalukuyang gumagamit ang komunidad ng Ethereum ng patakaran sa hindi panghihimasok kung sakaling magkaroon ng mga bug sa contract o mawalan ng pondo para mapanatili ang mapagkakatiwalaang neutrality ng system. + +Manood pa ng mga video tungkol sa DAO hack: + + + + + +### Ang kahalagahan ng pag-fork {#forking-utility} + +Ang fork ng Ethereum/Ethereum Classic ay isang magandang halimbawa ng isang maayos na fork. Nagkaroon kami ng dalawang grupong talagang hindi magkasundo sa ilang core value. Kalaunan, napagpasyahan ng mga ito na kakayaning harapin ang mga panganib na kaakibat para maisagawa ang kanya-kanyang partikular na pagkilos. + +Malaki ang naiaambag ng kakayahang mag-fork sa kabila ng malalaking pagkakaiba sa pulitika, pilosopiya, o ekonomiya sa pagtatagumpay ng pamamahala ng Ethereum. Kung walang kakayahang mag-fork, ang alternatibo ay tuloy-tuloy na pag-aaway, puwersahan at sapilitang pakikilahok para sa mga gumawa ng Ethereum Classic, at pagkakaroon ng magkakaibang pananaw sa tagumpay para sa Ethereum. + + + +## Pamamahala ng Beacon Chain {#beacon-chain} + +Sa proseso ng pamamahala ng Ethereum, madalas na ipinagpapalit ang bilis at kahusayan para sa pagiging bukas. Upang mapabilis ang pag-unlad ng Beacon Chain, inilunsad ito nang hiwalay sa patunay ng gawain na Ethereum network at sinunod nito ang mga sarili nitong kagawian sa pamamahala. + +Bagama't palaging ganap na open source ang specification at mga pagpapatupad ng developement, hindi ginamit ang mga pormal na prosesong ginagamit para magmungkahi ng mga update. Dahil dito, mas mabilis na natukoy at napagkasunduan ng mga mananaliksik at implementer ang mga pagbabago. + +Noong mag-merge ang Beacon Chain at Ethereum execution layer noong ika-15 ng Setyembre, 2022, natapos ang The Merge bilang bahagi ng [Paris network upgrade](/history/#paris). Ang proposal na [EIP-3675](https://eips.ethereum.org/EIPS/eip-3675)ay ginawang 'Final' mula sa 'Last Call', kaya nailipat ito sa patunay ng stake. + + + Iba pang detalye tungkol sa The Merge + + + + +## Paano ako makakalahok? {#get-involved} + +- [Magmungkahi ng EIP](/eips/#participate) +- [Pag-usapan ang mga kasalukuyang proposal](https://ethereum-magicians.org/) +- [Makiisa sa diskusyon ng R&D](https://ethresear.ch/) +- [Sumali sa Ethereum R&D discord](https://discord.gg/mncqtgVSVw) +- [Magpatakbo ng Node](/developers/docs/nodes-and-clients/run-a-node/) +- [Mag-contribute sa pag-develop ng client](/developers/docs/nodes-and-clients/#execution-clients) +- [Core Developer Apprenticeship Program](https://blog.ethereum.org/2021/09/06/core-dev-apprenticeship-second-cohort/) + +## Karagdagang pagbabasa {#further-reading} + +Walang partikular na pagpapakahulugan ang pamamahala sa Ethereum. May iba't ibang pananaw dito ang iba't ibang miyembro ng komunidad. Narito ang ilan sa mga ito: + +- [Mga Tala sa Pamamahala ng Blockchain](https://vitalik.ca/general/2017/12/17/voting.html) - _Vitalik Buterin_ +- [Paano gumagana ang Pamamahala ng Ethereum?](https://cryptotesters.com/blog/ethereum-governance) – _Cryptotesters_ +- [Paano gumagana ang pamamahala ng Ethereum](https://medium.com/coinmonks/how-ethereum-governance-works-71856426b63a) – _Micah Zoltu_ +- [Ano ang Ethereum core developer?](https://hudsonjameson.com/2020-06-22-what-is-an-ethereum-core-developer/) - _Hudson Jameson_ +- [Pamamahala, Bahagi 2: Hindi Pa Rin Maganda ang Plutocracy](https://vitalik.ca/general/2018/03/28/plutocracy.html) - _Vitalik Buterin_ +- [Higitan ang coin voting governance](https://vitalik.ca/general/2021/08/16/voting3.html) - _Vitalik Buterin_ diff --git a/src/content/translations/fil/guides/how-to-create-an-ethereum-account/index.md b/src/content/translations/fil/guides/how-to-create-an-ethereum-account/index.md new file mode 100644 index 00000000000..f41a6b50ad2 --- /dev/null +++ b/src/content/translations/fil/guides/how-to-create-an-ethereum-account/index.md @@ -0,0 +1,72 @@ +--- +title: Paano "gumawa" ng Ethereum account +description: Isang step-by-step na gabay sa paggawa ng Ethereum account gamit ang isang wallet. +lang: fil +--- + +# Paano "gumawa" ng Ethereum account + +Maaaring gumawa ng Ethereum account nang libre ang kahit sino, kahit kailan. May ilang paraan, ngunit ang pinakamadali at pangkaraniwang paraan ay gamitin ang isang app na kilala bilang wallet. Gumagawa at sine-secure ng mga wallet ang mga key na nagbibigay-daan sa iyong gamitin ang Ethereum. Puwede mong gamitin ang wallet mo para magpadala ng mga transaksyon, tingnan ang mga balanse ng iyong token, at kumonekta sa mga apps na ginawa sa Ethereum, gaya ng mga token exchange, laro, mga NFT marketplace, at iba pa. Pinapayagan ka na rin ngayon ng ilang "web2" app na mag-sign in sa Ethereum. + +Hindi tulad ng pagbubukas ng bagong account sa isang kumpanya, ang paggawa ng Ethereum account ay malaya, pribado, at hindi kailangan ng pahintulot. Ang mga account ay kontrolado ng mga key na ginagawa mo sa tulong ng wallet mo, at hindi ibinibigay ng third party, o naka-store sa isang central registry. + +## Step 1: Pumili ng wallet + +Ang wallet ay isang app na tumutulong sa iyong pamahalaan ang iyong Ethereum account. Ginagamit nito ang iyong mga key para magpadala at tumanggap ng mga transaksyon at mag-sign in sa mga app. Maraming iba't ibang wallet na mapagpipilian—mobile, desktop, o kahit mga browser extension. + + + Maghanap ng wallet + + +Kung bago ka, maaari mong piliin ang filter na “Baguhan sa crypto” sa page na "maghanap ng wallet" upang matukoy ang mga wallet na naglalaman ng lahat ng kinakailangang feature na angkop para sa mga baguhan. + +![pagpili ng filter sa page na 'maghanap ng wallet'](./wallet-box.png) + +Mayroon ding iba pang filter ng profile na tutugon sa iyong mga pangangailangan. Ito ang mga halimbawa ng mga wallet na karaniwang ginagamit - dapat kang mag-research bago magtiwala sa anumang software. + +## Hakbang 2: I-download at i-install ang iyong wallet app + +Kapag nakapili ka na ng partikular na wallet, bisitahin ang opisyal na website o app store nito, i-download at i-install ito. Libre ang lahat ng ito. + +## Hakbang 3: Buksan ang app at gawin o i-import ang iyong Ethereum account + +Kapag binuksan mo ang bago mong wallet sa unang pagkakataon, posibleng papiliin ka kung gagawa ka ng bagong account o mag-i-import ka ng kasalukuyang account. Mag-click sa paggawa ng bagong account. + +## Hakbang 4: I-store ang iyong recovery phrase + +Hihilingin sa iyo ng ilang app na mag-save ng lihim na 'seed phrase' (makikita mo ring tinutukoy ito bilang "recovery phrase" o "mnemonic"). Napakahalagang panatilihing ligtas ang seed phrase na ito! Ang seed phrase ay ginagamit upang gumawa ng isang lihim na key para sa isang account na magagamit upang mag-sign at magpadala ng mga transaksyon. Makokontrol ng sinumang nakakaalam sa seed phrase ang lahat ng account nagawa nito. Huwag ibahagi ang seed phrase sa kahit sino. Ang seed phrase ay dapat maglaman ng 12 hanggang 24 na salitang random na pinili (mahalaga ang pagkakasunod-sunod ng mga salita). + +Kapag na-save mo na ang iyong seed phrase, makikita mo ang iyong balanse sa dashboard ng wallet mo. Tingnan ang aming gabay: [paano gumamit ng wallet.](/guides/how-to-use-a-wallet) + +
    + + +
    Gusto mong magbasa pa?
    + + Tingnan ang iba pa naming gabay + +
    + +## Mga karaniwang itanong + +### Magkapareho ba ang wallet ko at ang Ethereum account ko? + +Hindi. Ang wallet ay isang tool sa pamamahala na tumutulong sa iyong pamahalaan ang mga account. Maaaring magbigay ng access ang isang wallet sa ilang account, at maaaring ma-access ang isang account ng maraming wallet. Ang seed phrase ay ginagamit para gumawa ng mga account na kinokontrol ng wallet. + +Puwede mong ituring ang mga account bilang mga dahon sa puno na 'tumutubo' mula sa iisang seed phrase. Ang bawat natatanging seed ay magbubunga ng talagang naiibang puno ng mga account. + +### Maaari ba akong magpadala ng bitcoin sa isang Ethereum address, o ether sa isang Bitcoin address? + +Hindi puwede. Ang bitcoin at ether ay nasa dalawang magkahiwalay na network (ibig sabihin, magkaibang blockchain). May kanya-kanyang bookkeeping model at address format ang mga ito. May iba't ibang pagsisikap nang ginawa upang i-bridge ang dalawang magkaibang network, at ang pinakaaktibo sa mga ito ay ang [Wrapped bitcoin o WBTC](https://www.bitcoin.com/get-started/what-is-wbtc/). Hindi ito isang endorsement, dahil ang WBTC ay isang custodial solution (ibig sabihin, isang grupo ng mga tao na nagkokontrol ng ilang partikular na mahalagang function) at isinasaad lang ito dito para magbigay-kaalaman. + +### Kung nagmamay-ari ako ng ETH address, pagmamay-ari ko rin ba ang address na ito sa iba pang blockchain? + +Maaari mong gamitin ang parehong address sa lahat ng blockchains na gumagamit ng pangunahing software na katulad ng sa Ethereum (kilala bilang 'EVM-compatible'). Ipapakita sa iyo ng [listahang ito](https://chainlist.org/) kung aling mga blockchain ang maaari mong gamitin sa parehong address. Ang ilang blockchain, tulad ng Bitcoin, ay nagpapatupad ng ganap na naiibang set ng mga panuntunan ng network at kakailanganin mo ng ibang address na may ibang format. Kung mayroon kang smart contract wallet, dapat mong tingnan ang product website nito para sa iba pang impormasyon tungkol sa kung aling mga blockchain ang sinusuportahan. + +### Mas ligtas ba kung may sarili akong wallet kaysa kung ilalagay ko sa isang exchange ang pondo ko? + +Kapag may sarili kang wallet, ikaw ang responsable sa seguridad ng iyong mga asset. Sa kasamaang-palad, maraming halimbawa ng mga pumalyang exchange kung saan nawala ang pera ng mga customer nila. Kapag may wallet ka (na may seed phrase), mawawala ang panganib na nauugnay sa pagtitiwala sa isang entity na pangasiwaan ang mga asset mo. Gayunpaman, kailangan mong i-secure ang mga sarili mong key at iwasan ang mga phishing scam, hindi sinasadyang pag-apruba ng mga transaksyon o pagkakalantad ng mga key, pag-interact sa mga pekeng website, at iba pang panganib sa self-custody. Ang mga panganib at benepisyo ay magkaiba. + +### Kung mawawala ang aking telepono/hardware wallet, kailangan ko bang gamitin ulit ang parehong wallet app para maibalik ang nawalang pondo? + +Hindi, puwede kang gumamit ng ibang wallet. Hangga't hawak mo ang seed phrase, maaari mo itong ilagay sa karamihan sa mga wallet at ibabalik ng mga ito ang iyong account. Mag-ingat kung gagawin mo ito: siguraduhing hindi ka nakakonekta sa internet kapag nire-recover ang wallet para hindi mabunyag nang hindi sinasadya ang seed phrase mo. Madalas na hindi na mare-recover ang mga nawalang pondo kung wala ang seed phrase. diff --git a/src/content/translations/fil/guides/how-to-id-scam-tokens/index.md b/src/content/translations/fil/guides/how-to-id-scam-tokens/index.md new file mode 100644 index 00000000000..0f399b0a5b2 --- /dev/null +++ b/src/content/translations/fil/guides/how-to-id-scam-tokens/index.md @@ -0,0 +1,97 @@ +--- +title: Paano matukoy ang mga scam token +description: Pag-unawa sa mga scam token, paano nagmumukhang lehitimo ang mga ito, at kung paano maiiwasan ang mga ito. +lang: fil +--- + +# Paano matukoy ang mga scam token {#identify-scam-tokens} + +One of the most common uses for Ethereum is for a group to create a tradable token, in a sense their own currency. Karaniwang sumusunod ang mga token na ito sa isang pamantayan, ang [ERC-20](/developers/docs/standards/tokens/erc-20/). Gayunpaman, saanman may mga lehitimong use case na nagpapahusay nito, mayroon ding mga kriminal na sumusubok na kunin iyon para sa kanilang sarili. + +May dalawa silang paraan upang lokohin ka: + +- **Pagbebentahan ka ng scam token**, na maaaring kamukha ng lehitimong token na nais mong bilhin, pero galing sa mga scammer at walang halaga ito. +- **Panlilinlang sa iyo na mag-sign ng mga hindi magandang transaksyon**, na karaniwan nilang ginagawa sa pamamagitan ng pagpapapunta sa iyo sa sarili nilang user interface. Maaari nilang subukang kumbinsihin kang bigyan ang mga contract nila ng bahagi ng iyong mga ERC-20 token, na maglalantad ng sensitibong impormasyong magbibigay sa kanila ng access sa iyong mga asset, atbp. Ang mga user interface na ito ay halos kamukhang-kamukha ng mga matapat na site, ngunit may mga nakatagong pandaraya. + +Upang ipakita kung ano ang mga scam token, at kung paano matukoy ang mga ito, titingnan natin ang halimbawa nito: [`wARB`](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82). Sinusubukan ng token na ito na magmukhang lehitimong [`ARB`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1) token. + + + +Ang Arbitrum ay isang organisasyon na nagde-develop at namamahala ng
    mga optimistic rollup. Sa simula, ang Arbitrum ay itinatag bilang isang for-profit na kumpanya, ngunit kumilos ito para mag-decentralize. Bilang bahagi ng prosesong iyon, naglabas ito ng tradeable na governance token. + + + + + +May isang kasanayan sa Ethereum na kapag hindi nakakatugon sa ERC-20 ang isang asset, gumagawa tayo ng "wrapped" na bersyon nito na may pangalang nagsisimula sa "w". Halimbawa, mayroon tayong wBTC para sa bitcoin at wETH para sa ether. + +Hindi makatwirang gumawa ng wrapped na bersyon ng isang ERC-20 token na nasa Ethereum na, ngunit umaasa ang mga scammer sa pagmumukhang legitimate sa halip na sa katotohanan. + + + +## Paano gumagana ang mga scam token? {#how-do-scam-tokens-work} + +Ang layunin talaga ng Ethereum ay decentralization. Ibig sabihin nito, walang central na awtoridad na puwedeng kumumpiska ng iyong mga asset o pumigil sa iyong mag-deploy ng smart contract. Ngunit ibig sabihin rin nito, puwedeng mag-deploy ng anumang smart contract ang mga scammer. + + + +Ang mga smart contract ang mga program na tumatakbo sa Ethereum blockchain. Halimbawa, ang bawat ERC-20 token ay ipinapatupad bilang isang smart contract. + + + +Partikular dito, nag-deploy ang Arbitrum ng contract na gumagamit ng simbolong `ARB`. Ngunit, hindi nito napipigilan ang ibang tao na mag-deploy din ng contract na gumagamit ng mismong simbolong iyon, o ng katulad noon. Maitatakda ng gumagawa ng contract ang gagawin ng contract. + +## Pagmumukhang lehitimo {#appearing-legitimate} + +May ilang pandarayang ginagawa ang mga creator ng scam token para magmukhang lehitimo. + +- **Lehitimong pangalan at simbolo**. Tulad ng nabanggit kanina, maaaring magkapareho ang simbolo at pangalan ng mga ERC-20 contract at iba pang ERC-20 contract. Hindi mo maaasahan ang mga field na iyon para sa seguridad. + +- **Mga lehitimong may-ari**. Kadalasan, ine-airdrop ng mga scam token ang malalaking balanse sa mga address na parang lehitimong may-ari ng totoong token. + + Halimbawa, tingnan natin ulit ang `wARB`. [Nasa 16% ng mga token](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82?a=0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) ang pinapangasiwaan ng address na may pampublikong tag na [Arbitrum Foundation: Deployer](https://etherscan.io/address/0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f). _Hindi_ ito pekeng address, ito talaga ang address na [nag-deploy ng tunay na ARB contract sa Ethereum mainnet](https://etherscan.io/tx/0x242b50ab4fe9896cb0439cfe6e2321d23feede7eeceb31aa2dbb46fc06ed2670). + + Dahil ang ERC-20 balance ng isang address ay bahagi ng storage ng ERC-20 contract, maaari itong itakda ng contract ayon sa kagustuhan ng developer ng contract. Puwede ring ipagbawal ng contract ang mga pag-transfer nang sa gayon, hindi maaalis ng mga lehitimong user ang mga scam token na iyon. + +- **Mga lehitimong pag-transfer**. _Hindi magbabayad ang mga lehitimong may-ari para mag-transfer ng scam token sa iba, kaya kung may mga pag-transfer, lehitimo ito, tama?_ **Mali**. Ang mga `transfer` event ay mula sa ERC-20 contract. Madali para sa isang scammer na i-write ang contract sa paraang magsasagawa ng mga pagkilos na iyon. + +## Mga scammy website {#websites} + +Maaari ding gumawa ang mga scammer ng mga napakakapani-paniwalang website, na kung minsan pa ay mga eksaktong kopya ng mga tunay na site na may magkaparehong UI, ngunit may maliliit na pandaraya. Ang mga halimbawa ay mga external link na mukhang lehitimo pero dinadala pala ang user sa external scam website, o mga maling tagubilin na nagdidirekta sa user sa pag-expose ng kanyang mga key o pagpapadala ng mga pondo sa address ng attacker. + +Ang pinakamagandang kagawian upang maiwasan ito ay maingat na suriin ang URL ng mga site na bibisitahin mo, at i-save ang mga address ng mga kilalang lehitimong site sa iyong mga bookmark. Pagkatapos ay maa-access mo ang tunay na site sa pamamagitan ng iyong mga bookmark nang hindi sinasadyang magkamali sa spelling o umaasa sa mga external link. + +## Paano mo mapoprotektahan ang iyong sarili? {#protect-yourself} + +1. **Tingnan ang address ng contract**. Ang mga lehitimong token ay nagmumula sa mga lehitimong organisasyon, at makikita mo ang mga address ng contract sa website ng organisasyon. Halimbawa, [para sa `ARB`, makikita mo ang mga lehitimong address dito](https://docs.arbitrum.foundation/deployment-addresses#token). + +2. **Ang mga tunay na token ay may liquidity**. Ang isa pang opsyon ay tingnan ang laki ng liquidity pool sa [Uniswap](https://uniswap.org/), isa sa mga pinakakaraniwang protocol para sa pag-swap ng token. Ang protocol na ito ay gumagana gamit ang mga liquidity pool, kung saan idinedeposito ng mga investor ang kanilang mga token nang umaasang kikita sila mula sa mga bayarin sa trading. + +Karaniwang may maliliit na liquidity pool ang mga scam token, kung mayroon man, dahil ayaw ng mga scammer na gumamit ng mga totoong asset. Halimbawa, ang `ARB`/`ETH` Uniswap pool ay nangangasiwa ng halos isang milyong dolyar ([tingnan dito ang updated na halaga](https://info.uniswap.org/#/pools/0x755e5a186f0469583bd2e80d1216e02ab88ec6ca)) at hindi mababago ng pagbili o pagbebenta ng maliit na halaga ang presyo: + +![Pagbili ng lehitimong token](./uniswap-real.png) + +Ngunit kapag sinusubukan mong bilhin ang scam token na `wARB`, tataas ng mahigit 90% ang presyo kapag bumili ng kahit maliit na halaga: + +![Pagbili ng scam token](./uniswap-scam.png) + +Ito ay isa pang ebidensya na nagpapakita sa atin na ang `wARB` ay hindi lehitimong token. + +3. **Tingnan sa Etherscan**. Maraming scam token ang natukoy at naiulat na ng komunidad. Ang mga ganitong token ay [minamarkahan sa Etherscan](https://info.etherscan.com/etherscan-token-reputation/). Bagama't hindi mapagkakatiwalaang source ng katotohanan ang Etherscan (ang pagiging decentralized ng mga network ang dahilan kung bakit walang mapagkakatiwalaang source para sa pagiging lehitimo), ang mga token na matutukoy ng Etherscan bilang mga scam ay malamang na mga scam. + + ![Scam token sa Etherscan](./etherscan-scam.png) + +## Conclusion {#conclusion} + +Hangga't may halaga sa mundo, may mga scammer na magtatangkang nakawin ito para sa kanilang sarili, at sa isang decentralized na mundo, walang ibang magpoprotekta sa iyo kundi ikaw. Sana ay tandaan mo ang mga puntong ito para matukoy ang mga lehitimong token sa mga scam: + +- Ang mga scam token ay nagpapanggap na mga lehitimong token. Maaari nilang gamitin ang parehong pangalan, simbolo, atbp. +- _Hindi_ magagamit ng mga scam token ang parehong address ng contract. +- Ang pinakamahusay na source ng addres ng lehitimong token ay ang organisasyon na nagmamay-ari sa token. +- Kung hindi ito magawa, maaari mong gamitin ang mga sikat at mapagkakatiwalaang application tulad ng [Uniswap](https://app.uniswap.org/#/swap) at [Etherscan](https://etherscan.io/). diff --git a/src/content/translations/fil/guides/how-to-revoke-token-access/index.md b/src/content/translations/fil/guides/how-to-revoke-token-access/index.md new file mode 100644 index 00000000000..7f11fb7a96e --- /dev/null +++ b/src/content/translations/fil/guides/how-to-revoke-token-access/index.md @@ -0,0 +1,73 @@ +--- +title: Paano bawiin ang smart contract access sa iyong crypto funds +description: Gabay sa kung paano bawiin ang access ng mga mapanlamang na smart contract token +lang: fil +--- + +# Paano bawiin ang smart contract access sa iyong crypto funds + +Ituturo sa iyo sa gabay na ito kung paano tingnan ang listahan ng lahat ng smart contract na pinahintulutan mong i-access ang iyong pondo at kung paano kanselahin ang mga ito. + +Kung minsan, naglalagay ng mga backdoor ang mga mapaminsalang developer sa mga smart contract na nagbibigay sa kanila ng access sa mga pondo ng mga walang kamalay-malay na user na nag-interact sa smart contract. Kadalasan, ang nangyayari ay humihiling ang mga naturang platform ng pahintulot mula sa user na gumastos ng **walang limitasyong bilang ng mga token** upang makatipid ng kaunting gas sa hinaharap, pero may kaakibat itong mas malaking panganib. + +Kapag mayroon nang karapatan ang platform na i-access nang walang limitasyon ang token sa iyong wallet, puwede nitong gastusin ang lahat ng token na iyon kahit na-withdraw mo sa wallet mo ang mga pondo mula sa platform nito. Maa-access pa rin ng mga mapaminsalang actor ang mga pondo mo at mawi-withdraw nito ang mga ito sa kanilang mga wallet, at wala ka nang opsyon para i-recover ito. + +Ang mga proteksyon lang ay iwasang gamitin ang mga hindi pa nate-test na bagong proyekto, aprubahan lang ang kailangan mo, o regular na bawiin ang access. Paano mo ito gagawin? + +## Hakbang 1: Gamitin ang mga tool para sa pagbawi sa access + +May ilang website na pinapayagan kang tingnan at bawiin ang mga smart contract na konektado sa iyong address. Pumunta sa website at ikonekta ang iyong wallet: + +- [Ethallowance](https://ethallowance.com/) (Ethereum) +- [Etherscan](https://etherscan.io/tokenapprovalchecker) (Ethereum) +- [Cointool](https://cointool.app/approve/eth) (maraming network) +- [Revoke](https://revoke.cash/) (maraming network) +- [Unrekt](https://app.unrekt.net/) (maraming network) +- [EverRevoke](https://everrise.com/everrevoke/) (maraming network) + +## Hakbang 2: Ikonekta ang iyong wallet + +Kapag nasa website ka na, i-click ang "Ikonekta ang wallet". Ipo-prompt ka ng website na ikonekta ang iyong wallet. + +Siguraduhin mong gagamitin mo ang parehong network sa iyong wallet at website. Makikita mo lang ang mga smart contract na nauugnay sa network na pinili. Halimbawa, kung kokonekta ka sa Ethereum Mainnet, mga Ethereum contract lang ang makikita mo at hindi ang mga contract mula sa iba pang chain tulad ng Polygon. + +## Hakbang 3: Piliin ang smart contract na gusto mong bawiin + +Makikita mo ang lahat ng contract na binibigyan mo ng access sa mga token mo at ang mga spending limit ng mga ito. Piliin ang gusto mong i-terminate. + +Kung hindi mo alam kung aling contract ang pipiliin, puwede mong bawiin ang lahat ng ito. Hindi ito magdudulot ng anumang problema sa iyo, ngunit kailangan mong magbigay ng bagong set ng mga pahintulot sa susunod na mag-interact ka sa alinman sa mga contract na ito. + +## Hakbang 4: Bawiin ang access sa mga pondo mo + +Kapag na-click mo na ang bawiin, may makikita kang suhestyon sa bagong transaksyon sa wallet mo. Normal lang ito. Kakailanganin mong magbayad para maisagawa ang pagkansela. Depende sa network, maaaring tumagal nang isang minuto hanggang ilang minuto bago ito maiproseso. + +Ipinapayo naming i-refresh mo ang tool para sa pagbawi pagkalipas ng ilang minuto at ikonekta ulit ang iyong wallet para i-double check kung nawala na sa listahan ang binawing contract. + +Inirerekomenda rin naming huwag mong bigyan ng walang limitasyong access sa iyong mga token ang mga proyekto at regular na bawiin ang lahat ng access sa token allowance. Hindi ka dapat mawalan ng pondo kapag binawi mo ang access sa token, lalo na kung ginamit mo ang mga tool na nakalista sa itaas. + +
    + + +
    Gusto mong magbasa pa?
    + + Tingnan ang iba pa naming gabay + +
    + +## Mga karaniwang itanong + +### Kapag binawi ang access sa token, nate-terminate din ba ang staking, pooling, pagpapautang, atbp? + +Hindi nito maaapektuhan ang alinman sa mga estratehiya mo sa DeFi. Mananatili ka sa iyong mga posisyon at patuloy kang makakatanggap ng mga reward, atbp. + +### Magkapareho lang ba ang pagdiskonekta ng wallet sa proyekto at ang pag-aalis ng pahintulot na gamitin ang aking mga pondo? + +Hindi, kung ididiskonekta mo ang wallet mo sa proyekto, pero nagbigay ka ng mga pahintulot sa token allowance, magagamit pa rin ng mga ito ang mga token na iyon. Kailangan mong bawiin ang access na iyon. + +### Kailan mag-e-expire ang pahintulot ng contract? + +Walang expiration date sa mga pahintulot ng contract. Kung binigyan ka ng mga pahintulot sa contract, magagamit ang mga ito kahit lumipas na ang maraming taon mula nang ibinigay ang mga ito. + +### Bakit nagtatakda ang mga proyekto ng walang limitasyong token allowance? + +Kadalasang ginagawa ito ng mga proyekto para mapaliit ang bilang ng mga kahilingang kinakailangan. Ibig sabihin, isang beses lang kailangang magpahintulot ng user at isang beses lang niya kailangang bayaran ang bayarin sa transaksyon. Bagama't magiging madali ito, delikado para sa mga user na aprubahan ito nang basta-basta, sa mga site na hindi pa lubos na napatunayan o nao-audit. Pinapayagan ka ng ilang wallet na manual na limitahan ang bilang ng mga token na inaaprubahan para malimitahan ang iyong panganib. Magtanong sa iyong wallet provider para sa iba pang impormasyon. diff --git a/src/content/translations/fil/guides/how-to-swap-tokens/index.md b/src/content/translations/fil/guides/how-to-swap-tokens/index.md new file mode 100644 index 00000000000..7431ee89592 --- /dev/null +++ b/src/content/translations/fil/guides/how-to-swap-tokens/index.md @@ -0,0 +1,67 @@ +--- +title: Paano magpalit ng tokens +description: Isang gabay sa kung paano mag-swap ng mga token sa Ethereum. +lang: fil +--- + +# Paano magpalit ng tokens + +Pagod ka na bang maghanap ng exchange na naglilista ng lahat ng iyong paboritong token? Maaari mong i-swap ang karamihan sa mga token gamit ang mga decentralized exchange. + +Sa token swap, ine-exchange ang dalawang magkaibang asset sa Ethereum network, halimbawa, sina-swap ang ETH sa DAI (isang ERC-20 token). Napakabilis at napakamura lang ng proseso. Kakailanganin mo ng crypto wallet para mag-swap ng mga token. + +**Kinakailangan:** + +- magkaroon ng crypto wallet, puwede mong sundin ang tutorial na ito: [Paano: "Magparehistro" ng Ethereum account](/guides/how-to-register-an-ethereum-account/) +- magdagdag ng pondo sa iyong wallet + +## 1. Ikonekta ang iyong wallet sa decentralized exchange (DEX) na iyong pinili + +Ang ilang kilalang exchange ay: + +- [Uniswap](https://app.uniswap.org/#/swap) +- [Sushiswap](https://www.sushi.com/swap) +- [1Inch](https://app.1inch.io/#/1/unified/swap/ETH/DAI) +- [Curve](https://curve.fi/#/ethereum/swap) + +Kung nais mong magbasa pa tungkol sa DeFi at kung paano gumagana ang mga bagong uri ng exchange na ito, inirerekomenda namin ang [Kernel Library](https://library.kernel.community/Topic+-+DeFi/Topic+-+DeFi). + +## 2. Piliin ang pares ng mga token na gusto mong i-swap + +Halimbawa, ETH at DAI. Tiyaking may pondo ka sa isa sa dalawang token. ![Karaniwang interface para sa pag-swap](./swap1.png) + +## 3. Ilagay ang halaga ng mga token na nais mong i-trade at i-click ang swap + +Awtomatikong kakalkulahin ng exchange kung ilang token ang matatanggap mo. + +![Karaniwang interface para sa pag-swap](./swap2.png) + +## 4. Kumpirmahin ang transaksyon + +Suriin ang mga detalye ng transaksyon. Tingnan ang exchange rate at anupamang bayarin upang maiwasan ang mga hindi inaasahan. + +![Karaniwang interface para sa pagsusuri ng transaksyon](./swap3.png) + +## 5. Hintaying maiproseso ang transaksyon + +Makikita mo ang progreso ng transaksyon sa anumang blockchain explorer. Hindi dapat tumagal nang higit sa 10 minuto ang prosesong ito. + +Awtomatiko mong matatanggap ang mga na-swap na token sa wallet mo kapag naiproseso na ang transaksyon. +
    + + +
    Gusto mong magbasa pa?
    + + Tingnan ang iba pa naming gabay + +
    + +## Mga karaniwang itanong + +### Puwede ko bang i-swap ang ETH sa BTC mula sa aking wallet? + +Hindi, puwede ka lang mag-swap ng mga token na native sa Ethereum network, tulad ng ETH, mga ERC-20 token o NFTs. Puwede ka lang mag-swap ng mga "wrapped" na anyo ng Bitcoin na matatagpuan sa Ethereum. + +### Ano ang slippage? + +Ito ang pagkakaiba sa pagitan ng inaasahang exchange rate at aktwal na rate. diff --git a/src/content/translations/fil/guides/how-to-use-a-bridge/index.md b/src/content/translations/fil/guides/how-to-use-a-bridge/index.md new file mode 100644 index 00000000000..be2ba992a11 --- /dev/null +++ b/src/content/translations/fil/guides/how-to-use-a-bridge/index.md @@ -0,0 +1,70 @@ +--- +title: Paano maidurugtong ang tokens sa layer 2 +description: Isang gabay na nagpapaliwanag sa kung paano ilipat ang mga token sa layer 2 mula sa Ethereum gamit ang bridge. +lang: fil +--- + +# Paano maidurugtong ang tokens sa layer 2 + +Kapag maraming trapiko sa Ethereum, maaaring maging mahal ito. Ang isang solusyon dito ay gumawa ng mga bagong "layer": ibig sabihin, iba't ibang network na tumatakbo katulad mismo ng Ethereum. Ang mga Layer 2 na ito ay tumutulong na bawasan ang congestion at gastos sa Ethereum sa pamamagitan ng pagpoproseso ng mas maraming transaksyon sa mas murang bayarin, at paminsan-minsan lang na pag-store ng resulta ng mga ito sa Ethereum. Sa ganitong paraan, nabibigyang-daan tayo ng mga layer 2 na magsagawa ng transaksyon nang mas mabilis at mas mura. Maraming sikat na crypto project ang lumilipat sa mga layer 2 dahil sa mga benepisyong ito. Ang pinakasimpleng paraan upang ilipat ang mga token sa layer 2 mula sa Ethereum ay gumamit ng bridge. + +**Kinakailangan:** + +- magkaroon ng crypto wallet, puwede mong sundin ang tutorial na ito: [Paano: "Magparehistro" ng Ethereum account](/guides/how-to-register-an-ethereum-account/) +- magdagdag ng pondo sa iyong wallet + +## 1. Tukuyin kung aling layer 2 network ang nais mong gamitin + +Maaari kang magbasa pa tungkol sa iba't ibang proyekto at mahahalagang link sa aming [page para sa layer 2](/layer-2/). + +## 2. Pumunta sa napiling bridge + +Ang ilang kilalang layer 2 ay: + +- [Arbitrum bridge](https://bridge.arbitrum.io/?l2ChainId=42161) +- [Optimism bridge](https://app.optimism.io/bridge/deposit) +- [Boba network bridge](https://gateway.boba.network/) + +## 3. Kumonekta sa bridge gamit ang iyong wallet + +Siguraduhing konektado ang wallet mo sa Ethereum Mainnet network. Kung hindi, awtomatiko kang ipa-prompt ng website na lumipat ng network. + +![Karaniwang interface para sa pag-bridge ng mga token](./bridge1.png) + +## 4. Tukuyin ang halaga at ilipat ang pondo + +Tingnan ang halagang makukuha sa layer 2 network at ang bayarin upang maiwasan ang hindi inaasahan. + +![Karaniwang interface para sa pag-bridge ng mga token](./bridge2.png) + +## 5. Kumpirmahin ang transaksyon sa iyong wallet + +Kailangan mong magbayad ng ETH para sa pagpoproseso ng transaksyon. + +![Karaniwang interface para sa pag-bridge ng mga token](./bridge3.png) + +## 6. Maghintay na ilipat ang iyong mga pondo + +Hindi dapat tumagal nang higit sa 10 minuto ang prosesong ito. + +## 7. Idagdag ang piniling layer 2 network sa iyong wallet (opsyonal) + +Maaari kang gumamit ng [chainlist.org](http://chainlist.org) upang makita ang detalye ng RPC ng network. Kapag naidagdag na ang network at natapos na ang transaksyon, makikita mo na ang mga token sa iyong wallet. +
    + + +
    Gusto mong magbasa pa?
    + + Tingnan ang iba pa naming gabay + +
    + +## Mga karaniwang itanong + +### Paano kung may pondo ako sa isang exchange? + +Maaari mong i-withdraw ang ilang layer 2 nang direkta sa isang exchange. Tingnan ang seksyong “Lumipat sa layer 2” sa aming [page na Layer 2](/layer-2/) para sa iba pang impormasyon. + +### Puwede ba akong bumalik sa Ethereum mainnet kapag na-bridge ko na ang mga token ko sa L2? + +Oo, puwede mong ibalik ang iyong mga pondo sa mainnet anumang oras gamit ang parehong bridge. diff --git a/src/content/translations/fil/guides/how-to-use-a-wallet/index.md b/src/content/translations/fil/guides/how-to-use-a-wallet/index.md new file mode 100644 index 00000000000..882b2800701 --- /dev/null +++ b/src/content/translations/fil/guides/how-to-use-a-wallet/index.md @@ -0,0 +1,88 @@ +--- +title: Paano gumamit ng wallet +description: Isang gabay na nagpapaliwanag kung paano magpadala, tumanggap ng mga token, at kumonekta sa mga web3 project. +lang: fil +--- + +# Paano gumamit ng wallet + +Alamin kung paano gamitin ang lahat ng pangunahing function ng isang wallet. Kung wala ka pang wallet, tingnan ang aming [Paano: gumawa ng Ethereum account](/guides/how-to-create-an-ethereum-account/). + +## Buksan ang iyong wallet + +May makikita kang dashboard na magpapakita ng iyong balanse at may mga button para magpadala at tumanggap ng mga token. + +## Tumanggap ng cryptocurrency + +Gusto mo bang tumanggap ng crypto sa iyong wallet? + +Ang bawat Ethereum account ay may sariling address para sa pagtanggap na binubuo ng natatanging sequence ng mga numero at titik. Ang address ay parang bank account number. Palaging nagsisimula ang mga Ethereum address sa "0x". Maaari mong ibahagi ang address na ito sa sinuman: ligtas itong gawin. + +Ang iyong address ay parang address ng iyong tahanan: kailangan mo itong sabihin sa mga tao para mahanap ka nila. Ligtas itong gawin, dahil puwede mo pa ring i-lock ang pinto mo gamit ang ibang susi na ikaw lang ang may hawak, kaya walang makakapasok kahit alam nila kung saan ka nakatira. + +Kailangan mong ibigay ang iyong public address sa sinumang nagnanais na padalhan ka ng pera. Pinapayagan ka ng maraming wallet app na kopyahin ang iyong address o magpakita ng QR code na isa-scan para mas madaling gamitin. Iwasang mano-manong i-type ang anumang Ethereum address. Maaaring magkamali sa pag-type nito at maaaring mawalan ng pondo dahil dito. + +Magkakaiba ang iba't ibang app o gumagamit ang mga ito ng iba't ibang language, pero magkakatulad ang proseso na ipapagawa ng mga ito sa iyo kung sinusubukan mong mag-transfer ng mga pondo. + +1. Buksan ang iyong wallet app. +2. I-click ang "Tumanggap" (o anumang katulad na opsyon). +3. Kopyahin ang Ethereum address mo sa clipboard. +4. Ibigay sa sender ang iyong receiving Ethereum address. + +## Magpadala ng cryptocurrency + +Gusto mo bang magpadala ng ETH sa ibang wallet? + +1. Buksan ang iyong wallet app. +2. Kunin ang receiving address at siguraduhing nakakonekta ka sa network kung saan nakakonekta ang recipient. +3. Ilagay ang receiving address o i-scan ang QR code gamit ang camera mo para hindi mo na kailangang isulat ang address. +4. Mag-click sa button na “Magpadala” sa iyong wallet (o katulad na alternatibo). + +![Send field para sa crypto address](./send.png) +
    + +5. Maraming asset, tulad ng DAI o USDC, ang nasa maraming network. Kapag nagta-transfer ng mga crypto token, tiyaking magkapareho kayo ng ginagamit na network ng recipient, dahil hindi ito interchangeable. +6. Siguraduhing may sapat na ETH ang wallet mo para mabayaran ang bayarin sa transaksyon, nag nag-iiba depende sa mga kundisyon ng network. Awtomatikong idaragdag ng karamihan sa mga wallet ang iminumungkahing bayarin sa transakyon na maaari mong kumpirmahin. +7. Kapag naiproseso na ang iyong transaksyon, makikita ang kaukulang halaga ng crypto sa account ng recipient. Maaari itong tumagal nang ilang segundo hanggang ilang minuto, depende sa dami ng gumagamit ng network sa kasalukuyan. + +## Pagkonekta sa mga proyekto + +Hindi magbabago ang iyong address sa lahat ng Ethereum project. Hindi mo kailangang magparehistro nang hiwalay sa anumang proyekto. Kapag may wallet ka na, maaari kang kumonekta sa anumang Ethereum project nang walang anumang karagdagang impormasyon. Hindi kailangan ng anumang email o anupamang personal na impormasyon. + +1. Bisitahin ang website ng anumang proyekto. +2. Kung ang landing page ng proyekto ay isang static na paglalarawan lang ng proyekto, may maki-click ka dapat na button na "Buksan ang App" sa menu na magdadala sa iyo sa aktwal na web app. +3. Kapag nasa app ka na, i-click ang “Kumonekta” + +![Button na nagbibigay-daan sa user na kumonekta sa website gamit ang wallet](./connect1.png) + +4. Piliin ang iyong wallet mula sa listahan ng mga ibinigay na opsyon. Kung hindi mo makita ang wallet mo, maaaring nakatago ito sa ilalim ng opsyong “WalletConnect”. + +![Pagpili mula sa listahan ng mga wallet kung saan kokonekta](./connect2.png) + +5. Kumpirmahin ang kahilingan sa signature sa iyong wallet para maitakda ang koneksyon. **Hindi dapat gumastos ng anumang ETH para i-sign ang mensaheng ito**. +6. Tapos na! Simulan nang gamitin ang app. Makakakita ka ng mga kawili-wiling proyekto sa aming [dApps page](/dapps/#explore).
    + + +
    Gusto mong magbasa pa?
    + + Tingnan ang iba pa naming gabay + +
    + +## Mga karaniwang itanong + +### Kung nagmamay-ari ako ng ETH address, pagmamay-ari ko rin ba ang address na ito sa iba pang blockchain? + +Magagamit mo ang parehong address sa lahat ng EVM compatible blockchain (kung mayroon kang wallet na may recovery phrase). Ipapakita sa iyo ng [listahang ito](https://chainlist.org/) kung aling mga blockchain ang maaari mong gamitin sa parehong address. Ang ilang blockchain, tulad ng Bitcoin, ay nagpapatupad ng ganap na naiibang set ng mga panuntunan ng network at kakailanganin mo ng ibang address na may ibang format. Kung mayroon kang smart contract wallet, dapat mong tingnan ang product website nito para sa iba pang impormasyon tungkol sa kung aling mga blockchain ang sinusuportahan. + +### Puwede ko bang gamitin ang parehong address sa maraming device? + +Oo, puwede mong gamitin ang parehong address sa maraming device. Sa teknikal na aspeto, ang mga wallet ay interface lamang na nagpapakita ng iyong balanse at ginagamit para sa mga transaksyon, hindi naka-store ang iyong account sa loob ng wallet, kundi sa blockchain. + +### Hindi ko pa natanggap ang crypto, saan ko makikita ang status ng transaksyon? + +Maaari kang gumamit ng [ mga block explorer](/developers/docs/data-and-analytics/block-explorers/) upang makita ang status ng anumang transaksyon nang real time. Kailangan mo lang hanapin ang iyong wallet address o ang ID ng transaksyon. + +### Puwede ko bang kanselahin o ibalik ang mga transaksyon? + +Hindi, kapag nakumpirma na ang transaksyon, hindi mo na ito makakansela. diff --git a/src/content/translations/fil/guides/index.md b/src/content/translations/fil/guides/index.md new file mode 100644 index 00000000000..4a2eb8f79b0 --- /dev/null +++ b/src/content/translations/fil/guides/index.md @@ -0,0 +1,27 @@ +--- +title: Mga gabay sa Ethereum +description: Isang koleksyon ng mga praktikal na gabay na nagpapaliwanag ng mga pangunahing konsepto sa paggamit ng Ethereum para sa mga baguhan. +lang: fil +--- + +# Mga gabay sa Ethereum + +Gusto mo bang simulan ang iyong journey sa Ethereum? Ginagabayan ka ng aming mga praktikal na gabay sa bawat hakbang para magsimula, at mas pinapadali nitong gamitin ang bagong teknolohiyang ito. + +## Pagsisimula + +1. [Paano "gumawa" ng Ethereum account](/guides/how-to-create-an-ethereum-account/) - Libreng makakagawa ng wallet ang kahit sino. Ipapakita sa iyo ng gabay na ito kung saan magsisimula. + +2. [Paano gumamit ng wallet](/guides/how-to-use-a-wallet/) - Panimula sa mga basic na feature ng anumang wallet at kung paano gamitin ang mga ito. + +## Mga pangunahing kaalaman sa seguridad + +1. [Paano bawiin ang access ng smart contract sa iyong mga crypto fund](/guides/how-to-revoke-token-access/) - Kung bigla kang may makikitang transaksyon sa iyong wallet na hindi mo ginawa, ituturo sa iyo ng gabay na ito kung paano ito maiiwasang mangyari ulit. + +2. [Paano matukoy ang mga scam token](/guides/how-to-id-scam-tokens/) - Ano ang mga scam token, paano nagmumukhang lehitimo ang mga ito, at paano matukoy ang mga ito para protektahan ang iyong sarili at maiwasang ma-scam. + +## Paggamit ng Ethereum + +1. [Paano i-bridge ang mga token sa layer 2](/guides/how-to-use-a-bridge/) - Masyado bang mahal ang mga transaksyon sa Ethereum? Pag-isipang lumipat sa mga Ethereum scaling solution na tinatawag na mga layer2. + +2. [Paano mag-swap ng mga token](/guides/how-to-swap-tokens/) - Gusto mo bang i-exchange sa iba ang mga token mo? Ipapakita sa iyo ng simpleng gabay na ito kung paano ito gawin. diff --git a/src/content/translations/fil/refi/index.md b/src/content/translations/fil/refi/index.md new file mode 100644 index 00000000000..16c484f7397 --- /dev/null +++ b/src/content/translations/fil/refi/index.md @@ -0,0 +1,79 @@ +--- +title: Regenerative Finance (ReFi) +description: Pangkalahatang-ideya ng Regenerative Finance (ReFi) at mga kasalukuyang use case nito. +lang: fil +template: use-cases +emoji: ":recycle:" +sidebarDepth: 2 +image: ../../../../assets/future_transparent.png +alt: "" +summaryPoint1: Isang alternatibong sistema ng ekonomiya na ibinatay sa mga prinsipyong regenerative +summaryPoint2: Isang pagsubok na gamitin ang Ethereum upang malutas ang mga pandaigdigang problema sa koordinasyon tulad ng pagbabago ng klima +summaryPoint3: Isang tool na susukatin nang husto ang mga ecological benefit asset tulad ng mga verified na carbon credit +--- + +## Ano ang ReFi? {#what-is-refi} + +Ang **regenerative finance (ReFi)** ay isang hanay ng mga tool at ideya na ibinatay sa mga blockchain, na naglalayong gumawa ng mga ekonomiya na regenerative, sa halip na extractive o exploitative. Kalaunan, mauubos ng mga extractive system ang mga resource na available, at magko-collapse ang mga ito. Kapag walang regenerative na mekanismo, walang resilience ang mga ito. Ipinagpapalagay sa ReFi na dapat i-decouple ang paggawa ng monetary value sa hindi sustainable na paghango ng mga resource mula sa ating planeta at mga komunidad. + +Sa halip, layunin ng ReFi na lutasin ang mga problemang pangkalikasan, pangkomunidad, o panlipunan sa pamamagitan ng paggawa ng mga regenerative cycle. Mapapakinabangan ng mga kalahok ang mga system na ito habang nakikinabang din sa mga ito ang mga ecosystem at komunidad. + +Ang isa sa mga pundasyon ng ReFi ay ang konsepto ng regenerative economics na unang ginamit ni John Fullerton ng [Capital Institute](https://capitalinstitute.org). Nagpanukala siya ng walong magkakaugnay na prinsipyo na sumusuporta sa systemic health: + +![Walong magkakaugnay na prinsipyo](../../assets/use-cases/refi-regenerative-economy-diagram.png) + +Isinasakatuparan ng mga proyekto sa ReFi ang mga prinsipyong ito gamit ang [mga smart contract](/developers/docs/smart-contracts/) at mga [decentralized finance (DeFi)](/defi/) application para hikayatin ang mga regenerative na kagaiwan, hal., pagpapanumbalik ng sigla ng mga napinsalang ecosystem, at pangasiwaan ang large-scale collaboration sa mga pandaigdigang isyu tulad ng pagbabago ng klima at pagkaubos ng biodiversity. + +May pagkakapareho ang ReFi sa [decentralized science (DeSci)](/desci/) movement, na gumagamit ng Ethereum bilang platform para pondohan, gawin, suriin, kilalanin, i-store, at ipakalat ang siyentipikong kaalaman. Ang mga tool sa DeSci ay maaaring maging kapaki-pakinabang para sa pagbuo ng mga nave-verify na pamantayan at pamamaraan para sa pagpapatupad at pagsusubaybay sa mga regenerative na aktibidad tulad ng pagtatanim ng mga puno, pag-aalis ng plastic sa karagatan, o pagpapanumbalik ng sigla ng napinsalang ecosystem. + +## Tokenization ng mga carbon credit {#tokenization-of-carbon-credits} + +Ang **[voluntary carbon market (VCM)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** ay mekanismo para pondohan ang mga proyekto na may napatunayang positibong epekto sa mga carbon emission, tulad ng pababain ang mga kasalukuyang emission o alisin ang mga greenhouse gas na nasa atmosphere na. Matapos ma-verify, makakatanggap ang mga proyektong ito ng asset na tinatawag na "mga carbon credit," na maibebenta ng mga ito sa mga indibidwal at organisasyong gustong suportahan ang mga pagsisikap para protektahan ang klima. + +Bukod sa VCM, may mga carbon market na itinatakda ng pamahalaan (‘mga compliance market’) na naglalayong magtakda ng carbon price sa pamamagitan ng mga batas o regulasyon sa isang partikular na hurisdiksyon (hal. bansa o rehiyon), na nagkokontrol sa supply ng mga permit na ipapamahagi. Hinihikayat ng mga compliance market ang mga polluter sa kanilang hurisdiksyon na bawasan ang mga emission, pero wala silang kakayahang alisin ang mga greenhouse gas na nasa atmosphere na. + +Kahit dine-develop ito sa mga nakaraang dekada, patuloy na nakakaranas ang VCM ng iba't ibang isyu: + +1. Labis na fragmented na liquidity +2. Mga hindi malinaw na mekanismo para sa transaksyon +3. Mahal na bayarin +4. Napakabagal na trading +5. Kakulangan sa scalability + +Ang paglipat ng VCM sa bagong blockchain-based **digital carbon market (DCM)** ay maaaring maging oportunidad upang ma-upgrade ang kasalukuyang teknolohiya para sa pag-validate, pag-transact at paggamit ng mga carbon credit. Nagbibigay-daan ang mga blockchain sa publicly verifiable data, access para sa iba't ibang user, at higit na liquidity. + +Gumagamit ang mga proyekto sa ReFi ng blockchain technology para solusyonan ang marami sa mga problema ng tradisyonal na market: + +- **Tinitipon ang liquidity sa iilang liquidity pool** na malayang mate-trade ng kahit sino. Ginagamit ng malalaking organisasyon, pati na rin ng mga indibidwal na user ang mga pool na ito nang hindi manual na naghahanap ng mga seller/buyer, bayarin sa paglahok, o paunang pagpaparehistro. +- **Nire-record ang lahat ng transaksyon sa mga pampublikong blockchain**. Ang daang tinatahak ng bawat carbon credit dahil sa aktibidad sa trading ay palaging masusubaybayan sa sandaling maging available ito sa digital carbon market (DCM). +- **Halos agaran ang bilis ng transaksyon**. Maaaring abutin nang ilang araw o linggo ang pagkuha ng maraming carbon credit sa pamamagitan ng mga legacy market, pero magagawa ito sa loob ng ilang segundo sa DCM. +- **Isinasagawa ang mga gawain sa trading nang walang intermediary**, na naniningil ng mahal na bayarin. Ayon sa data mula sa isang analytics firm, kumakatawan ang mga digital carbon credit sa [62% pagpapabuti sa gastos kumpara sa mga katumbas na tradisyonal na credit](https://www.klimadao.finance/blog/klimadao-analysis-of-the-base-carbon-tonne). +- **Scalable ang DCM** at kaya nitong tugunan ang mga demand ng mga indibidwal at multinational corporation. + +### Mga pangunahing bahagi ng DCM {#key-components-dcm} + +Apat na pangunahing bahagi ang bumubuo sa kasalukuyang landscape ng DCM: + +1. Tinitiyak ng mga registry tulad ng [Verra](https://verra.org/project/vcs-program/registry-system/) at [Gold Standard](https://www.goldstandard.org/) na mapagkakatiwalaan ang mga proyektong gumagawa ng mga carbon credit. Nagpapatakbo rin ang mga ito ng mga database kung saan nagmumula ang mga digital carbon credit at maaaring i-transfer o maubos (hindi na gagamitin) ang mga ito. + +May bagong wave ng mga inobatibong proyekto na ibinabatay sa mga blockchain na sinusubukang baguhin ang mga kasalukuyang nasa sektor na ito. + +2. Ang mga carbon bridge, na kilala rin bilang mga tokenizer, ay nagbibigay ng teknolohiya upang ipakita o i-transfer sa DCM ang mga carbon credit mula sa mga tradisyonal na registry. Kabilang sa mga kilalang halimbawa ang [Toucan Protocol](https://toucan.earth/), [C3](https://c3.app/), at [Moss.Earth](https://moss.earth/). +3. Nag-aalok ang mga naka-integrate na serbisyo ng pag-iwas sa paglalabas ng carbon at/o credit sa pag-aalis sa mga end-user nang sa gayon ay makuha nila ang benepisyong pangkapaligiran ng isang credit at ibahagi sa mundo ang kanilang suporta sa mga pagsisikap para protektahan ang klima. + +May ilang serbisyo tulad ng [Klima Infinity](https://www.klimadao.finance/infinity) at [Senken](https://senken.io/) na nag-aalok ng iba't ibang uri ng mga proyektong binuo ng mga third party at inilabas sa ilalim ng mga itinakdang pamantayan tulad ng Verra; habang ang ibang serbisyo tulad ng [Nori](https://nori.com/) ay nag-aalok lang ng mga partikular na proyekto na ginawa sa ilalim ng sarili nilang pamantayan para sa carbon credit, na ibinibigay nila at pinaglalaanan nila ng sariling marketplace. + +4. Pinapangasiwaan ng mga kasalukuyang rail at infrastructure ang pagpapalawak ng epekto at kahusayan ng buong supply chain ng carbon market. Nagsu-supply ang [KlimaDAO](http://klimadao.finance/) ng liquidity bilang public good (nagbibigay-daan sa kahit sino na bumili o magbenta ng mga carbon credit sa transparent na presyo), nagbibigay ito ng mga reward kapalit ng mas mataas na throughput ng mga carbon market at pag-retire, at nagbibigay ito ng madaling gamiting interoperable tooling para ma-access ang data tungkol sa, pati na rin ang kumuha at mag-retire ng, iba't ibang tokenized na carbon credit. + +## Ang ReFi sa labas ng mga carbon market {#refi-beyond} + +Bagama't may matinding pagpapahalaga sa mga carbon market sa pangkalahatan at pag-transition ng VCM sa DCM partikular na sa loob ng space, hindi limitado sa carbon ang terminong “ReFi”. Maaaring gumawa at mag-tokenize ng iba pang environmental asset at hindi lang mga carbon credit. Ipinapahiwatig nitong maaari ding itakda ang presyo ng iba pang negatibong externality sa mga base layer ng mga susunod pang sistema ng ekonomiya. Dagdag pa rito, ang regenerative na aspeto ng economic model na ito ay maaaring gamitin sa iba't ibang aspeto, tulad ng pagsuporta sa pagpopondo sa mga public good sa pamamagitan ng mga quadratic funding platform gaya ng [Gitcoin](https://gitcoin.co/). Binibigyang-kakayahan ng mga organisasyon na ibinatay sa ideya ng pakikilahok na bukas sa lahat at pantay-pantay na pamamahagi ng mga resource ang lahat na maglaan ng pera sa mga proyekto sa open-source software, pati na rin sa mga proyektong pang-edukasyon, pangkalikasan, at pangkomunidad. + +Sa pamamagitan ng paglihis ng kapital sa mga extractive na kagawian at pagdirekta nito sa regenerative na flow, makakapagsimula nang mas mabilis at mas madali ang mga proyekto at kumpanya na nagbibigay ng mga benepisyong panlipunan, pangkapaligiran, o pangkomunidad—na posibleng hindi makakuha ng pondo sa tradisyonal na pinansya. Dahil sa pag-transition sa ganitong model ng pagpopondo, nagkakaroon din ng mga mas inklusibong sistema ng ekonomiya, kung saan ang mga tao mula sa bawat demograpiko ay puwedeng maging mga aktibong kalahok, sa halip na mga simpleng tagamasid lang. Ipinapakita ng ReFi ang Ethereum bilang mekanismo para sa pagsasaayos ng pagkilos sa mga banta sa pamumuhay na kinakaharap ng ating species at lahat ng buhay sa planeta natina ating planeta—bilang pangunahing haligi ng bagong uri ng ekonomiya, na nagbibigay daan sa mas matatag na kinabukasan sa mga susunod na siglo. + +## Karagdagang babasahin tungkol sa ReFi + +- [Isang high-level na pangkalahatang-ideya ng mga carbon currency at ang kanilang lugar sa ekonomiya](https://www.klimadao.finance/blog/the-vision-of-a-carbon-currency) +- [The Ministry for the Future, na isang nobela na nagpapakita ng papel ng isang carbon-backed currency sa paglaban sa pagbabago ng klima](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future) +- [Isang detalyadong ulat mula sa Taskforce for Scaling Voluntary Carbon Markets](https://www.iif.com/Portals/1/Files/TSVCM_Report.pdf) +- [Ang CoinMarketCap Glossary entry nina Kevin Owocki at Evan Miyazono tungkol sa ReFi](https://coinmarketcap.com/alexandria/glossary/regenerative-finance-refi) diff --git a/src/content/translations/fil/security/index.md b/src/content/translations/fil/security/index.md new file mode 100644 index 00000000000..889d829547b --- /dev/null +++ b/src/content/translations/fil/security/index.md @@ -0,0 +1,292 @@ +--- +title: Seguridad ng Ethereum at pag-iwas sa scam +description: Pananatiling ligtas sa Ethereum +lang: fil +--- + +# Seguridad ng Ethereum at pag-iwas sa scam {#introduction} + +Sa pag-usbong ng interes sa mga cryptocurrency, mahalagang matutunan ang pinakamagagandang kagawian sa paggamit ng cryptocurrency. Maaaring nakakatuwa at nakakasabik ang crypto, pero mayroon ding mga seryosong panganib. Kung isasagawa mo ang maliliit na gawain na ito sa simula, maiiwasan mo ang mga panganib na ito. + + + +## Pangunahing kaalaman sa seguridad sa web {#web-security} + +### Gumamit ng mga password na mahirap hulaan {#use-strong-passwords} + +[Mahigit 80% ng mga pag-hack sa ccount ay resulta ng mga madaling hulaan o ninakaw na password](https://cloudnine.com/ediscoverydaily/electronic-discovery/80-percent-hacking-related-breaches-related-password-issues-cybersecurity-trends/). Pinakamainam na gumamit ng mahabang kumbinasyon ng mga character, numero at simbolo para mapanatiling secure ang mga account mo. + +Ang isang karaniwang pagkakamali na ginagawa ng mga indibidwal ay gumagamit sila ng kumbinasyon ng dalawang o tatlong karaniwan at magkakaugnay na salita mula sa diksyonaryo. Ang mga ganitong uri ng mga password ay hindi secure dahil malaki ang tsansang mabiktima ang mga ito ng simpleng technique sa pag-hack na kilala bilang [dictionary attack](https://tl.wikipedia.org/wiki/Dictionary_attack). + +```md +Halimbawa ng password na madaling hulaan: CuteFluffyKittens! + +Halimbawa ng password na mahirap hulaan: ymv\*azu.EAC8eyp8umf +``` + +Isa pang karaniwang pagkakamali ang paggamit ng mga password na madaling hulaan o malaman sa pamamagitan ng [social engineering](). Hindi secure ang paglalagay ng pangalan sa pagkadalaga ng iyong nanay, mga pangalan ng iyong mga anak o alagang hayop, o mga petsa ng kapanganakan sa iyong password at mapapataas nito ang panganib na ma-hack ang password mo. + +#### Mga mainam na kagawian para sa password: {#good-password-practices} + +- Pahabain ang iyong mga password hangga't pinapayagan ka ng iyong password generator o ng form na sinasagutan mo na gawin ito +- Paghalo-haluin ang malalaking titik, maliliit na titik, mga numero at mga simbolo +- Huwag gamitin ang mga personal na detalye, tulad ng mga apelyido, sa iyong password +- Huwag gumamit ng mga karaniwang salita sa diksyonaryo + +[Iba pang detalye tungkol sa paggawa ng mga password na mahirap hulaan](https://terranovasecurity.com/how-to-create-a-strong-password-in-7-easy-steps/) + +### Gumamit ng mga walang katulad na password para sa lahat {#use-unique-passwords} + +Ang password na mahirap hulaan ay hindi nagbibigay ng sapat na proteksyon kung ito ay mabubunyag sa isang data breach. Sa website na [Have I Been Pwned](https://haveibeenpwned.com), matitingnan mo kung nabiktima ang iyong mga account sa anumang data breach na naka-store sa kanilang database. Kung nabiktima ang mga ito, **you dapat mong palitan kaagad ang mga apektadong password**. Kapag gumamit ng mga walang katulad na password para sa bawat account, mapapaliit ang panganib na magkaroon ng access ang mga hacker sa lahat ng account mo kapag nakompromiso ang isa sa mga password mo. + +### Gumamit ng password manager {#use-password-manager} + + +
    + Kapag gumamit ng password manager, ito ang bahalang gumawa ng mga password na mahirap hulaan at walang katulad, at tatandaan nito ang mga ito para sa iyo! Lubos naming inirerekomendang gumamit nito, at libre ang karamihan sa mga ito! +
    +
    + +Hindi mainam na tandaan ang mga password na mahirap hulaan at walang katulad para sa bawat account mo. Ang password manager ay nag-aalok ng secure at naka-encrypt na storage para sa lahat ng iyong password na maa-access mo gamit ang isang mahirap hulaang master password. Nagmumungkahi rin ito ng mga password na mahirap hulaan kapag nagsa-sign up para sa bagong serbisyo, kaya hindi mo kailangang gumawa ng sarili mong password. Aabisuhan ka rin ng maraming password manager kung nabiktima ka sa isang data breach, para mapalitan mo ang mga password bago ang anumang mapaminsalang atake. + +![Halimbawa ng paggamit ng password manager](./passwordManager.png) + +#### Sumubok ng password manager: {#try-password-manager} + +- [Bitwarden](https://bitwarden.com/) +- [KeePass](https://keepass.info/) +- [1Password](https://1password.com/) +- O tingnan ang iba pang [inirerekomendang password manager](https://www.privacytools.io/secure-password-manager) + +### Gumamit ng Two-Factor Authentication {#two-factor-authentication} + +Upang patunayang ikaw talaga iyan, may iba't ibang natatanging patunay na magagamit para sa pag-authenticate. Tinatawag ang mga ito na **mga factor** at ang tatlong pangunahing factor ay: + +- Isang bagay na alam mo (tulad ng password o panseguridad na tanong) +- Isang bagay na nauugnay sa iyo (tulad ng fingerprint o scanner ng iris/mukha) +- Isang bagay na pagmamay-ari mo (isang security key o authentication app sa iyong telepono) + +Ang paggamit ng **Two-Factor Authentication (2FA)** ay nagbibigay ng karagdagang *security factor* para sa iyong mga online account kaya hindi sapat na malaman lang ang password mo (isang bagay na alam mo) para ma-access ang isang account. Pinakakaraniwan, ang pangalawang factor ay isang randomized na 6-digit code, na kilala bilang **time-based one-time password (TOTP)**, na maa-access mo sa pamamagitan ng isang authenticator app tulad ng Google Authenticator o Authy. Ito ay gumagana bilang isang factor na "isang bagay na pagmamay-ari mo" dahil ang seed na gumagawa ng timed code ay naka-store sa iyong device. + + +
    + Tandaan: Ang paggamit ng SMS-based na 2FA ay madaling mabiktima ng  + + SIM jacking + +  at hindi ito secure. Para sa pinakamaigting na seguridad, gumamit ng serbisyo tulad ng{" "} + + Google Authenticator + +  o Authy. +
    +
    + +#### Mga security key {#security-keys} + +Para sa mga gusto pang paigtingin ang 2FA, gumamit ng security key. Ang mga security key ay mga physical hardware authentication device na gumagana katulad ng mga authenticator app. Ang paggamit ng security key ang pinakaligtas na paraan ng 2FA. Marami sa mga key na ito ang gumagamit ng FIDO Universal 2nd Factor (U2F) standard. [Magbasa pa tungkol sa FIDO U2F](https://www.yubico.com/authentication-standards/fido-u2f/). + +Manood pa tungkol sa 2FA: + + + +### I-uninstall ang mga browser extension {#uninstall-browser-extensions} + +Ang mga browser extension tulad ng mga Chrome extension o Add-on para sa Firefox ay maaaring magdagdag ng kapaki-pakinabang na functionality ng browser at mapaganda ang karanasan ng user, pero may kaakibat na panganib ang mga ito. Bilang default, ang karamihan sa mga browser extension ay humihiling ng access para 'i-read at baguhin ang data ng site', na nagbibigay sa kanila ng kakayahang gawin halos anumang bagay sa iyong data. Ang mga Chrome extension ay palaging awtomatikong naa-update, kaya ang isang dating ligtas na extension ay maaaring ma-update sa ibang pagkakataon at magdagdag ng mapaminsalang code. Hindi sinusubukang nakawin ng karamihan sa mga browser extension ang iyong data, pero dapat mong tandaan na kaya nila itong gawin. + +#### Manatiling ligtas sa pamamagitan ng: {#browser-extension-safety} + +- Pag-install lang ng mga browser extension mula sa mga pinagkakatiwalaang source +- Pag-aalis ng mga hindi ginagamit na browser extension +- Lokal na pag-install ng mga Chrome extension para ihinto ang awtomatikong pag-update (Advanced) + +[Iba pang detalye tungkol sa mga panganib ng mga browser extension](https://www.kaspersky.co.uk/blog/browser-extensions-security/12750/) + + + +## Pangunahing kaalaman sa seguridad ng crypto {#crypto-security} + +### I-level up ang iyong kaalaman {#level-up-your-knowledge} + +Ang isa sa mga pangunahing dahilan kung bakit nasa-scam ang mga tao sa crypto ay kakulangan sa pag-unawa. Halimbawa, kung hindi mo nauunawaan na ang Ethereum network ay decentralized at hindi pagmamay-ari ng kahit sino, madaling maging biktima ng isang taong nagpapanggap na customer service agent na nangangakong ibabalik ang nawawalang ETH mo kapalit ng iyong mga pribadong key. Napakagandang puhunan ng pag-aaral sa kung paano gumagana ang Ethereum. + + + Ano ang Ethereum? + + + + Ano ang ether? + + + +## Seguridad ng wallet {#wallet-security} + +### Huwag ipamigay ang iyong mga pribadong key {#protect-private-keys} + +**Huwag na huwag ibahagi ang iyong mga pribadong key!** + +Ang pribadong key ng iyong wallet ang nagsisilbing password sa iyong Ethereum wallet. Ito lang ang pumipigil sa sinumang nakakaalam ng iyong wallet address na tangayin ang lahat ng asset ng iyong account! + + + Ano ang Ethereum wallet? + + +#### Huwag kumuha ng mga screenshot ng iyong mga seed phrase o pribadong key {#screenshot-private-keys} + +Sa pagkuha ng screenshot ng iyong mga seed phrase o pribadong key, maaaring ma-sync ang mga ito sa cloud at dahil dito, posibleng ma-access ang mga ito ng mga hacker. Ang pagkuha ng mga pribadong key mula sa cloud ay karaniwang paraan ng pag-atake ng mga hacker. + +### Gumamit ng hardware wallet {#use-hardware-wallet} + +Ang hardware wallet ay nagbibigay ng offline na storage para sa mga pribadong key. Itinuturing ang mga ito na pinaka-secure na opsyon sa wallet para sa pag-store ng iyong mga pribadong key: hindi aabot sa internet ang iyong pribadong key at mananatili itong ganap na lokal sa iyong device. + +Kapag na-store offline ang mga pribadong key, lubos na liliit ang panganib na ma-hack, kahit na makontrol ng isang hacker ang iyong computer. + +#### Sumubok ng hardware wallet: {#try-hardware-wallet} + +- [Ledger](https://www.ledger.com/) +- [Trezor](https://trezor.io/) + +### I-double check ang mga transaksyon bago magpadala {#double-check-transactions} + +Ang hindi sinasadyang pagpapadala ng mga crypto sa maling wallet address ay isang karaniwang pagkakamali. **Ang isang transaksyon na ipinadala sa Ethereum ay hindi maaaring bawiin.** Maliban kung kilala mo ang may-ari ng address at makukumbinsi mo siyang ibalik sa iyo ang pondo mo, wala nang paraan para mabawi mo ang iyong pondo. + +Palaging siguraduhing eksaktong tumutugma ang address na pinapadalhan mo sa address ng inaasahang tagatanggap bago magpadala ng transaksyon. Ipinapayo rin na kapag nag-i-interact sa isang smart contract, basahin ang mensahe ng transaksyon bago mag-sign. + +### Magtakda ng mga limitasyon sa paggastos ng smart contract {#spend-limits} + +Kapag nag-i-interact sa mga smart contract, huwag hayaang walang limitasyon sa paggastos. Puwedeng maubos ng smart contract ang laman ng iyong wallet kapag walang limitasyon sa paggastos. Sa halip, itakda ang mga limitasyon sa paggastos sa halaga lang na kinakailangan para sa transaksyon. + +Maraming Ethereum wallet ang nag-aalok ng mga proteksyon ng limitasyon para hindi maubos ang laman ng mga account. + +[Paano bawiin ang smart contract access sa iyong crypto funds](/guides/how-to-revoke-token-access/) + + + +## Mga karaniwang scam {#common-scams} + +Ang mga scammer ay palaging naghahanap ng mga paraan upang kunin ang iyong pondo mula sa iyo. Hindi posibleng ganap na pigilan ang mga scammer, pero hindi sila masyadong magtatagumpay kung alam natin ang karamihan sa mga technique na ginagamit nila. May iba't ibang anyo ng mga scam na ito, ngunit karaniwang sumusunod ang mga ito sa mga parehong high-level pattern. Pinakamahalagang tandaan ang mga sumusunod: + +- laging maging mapanuri +- walang magbibigay sa iyo ng libre o discounted na ETH +- walang nangangailangan ng access sa iyong mga pribadong key o personal na impormasyon + +### Giveaway scam {#giveaway} + +Isa sa mga pinakaraniwang scam sa cryptocurrency ang giveaway scam. Maraming anyo ang giveaway scam, pero ang karaniwang ideya ay kung magpapadala ka ng ETH sa ibinigay na wallet address, madodoble ang ETH na ibabalik sa iyo. *Dahil dito, kilala rin ito bilang 2-for-1 scam.* + +Karaniwang tumutukoy ang mga scam na ito ng limitadong panahon para i-claim ang giveaway para magpadalos-dalos sa pagdedesisyon at pagmadaliin ang biktima. + +#### Mga social media hack {#social-media-hacks} + +Nangyari ang isang high-profile na bersyon nito noong Hulyo 2020, kung saan na-hack ang mga Twitter account ng mga kilalang celebrity at organisasyon. Kasabay nito, nag-post ang hacker ng Bitcoin giveaway sa mga na-hack na account. Kahit mabilis napansin at tinanggal ang mga mapanlinlang na tweet, nakapagtangay pa rin ang mga hacker ng 11 bitcoin (o katumbas ng $500,000 noong Setyembre 2021). + +![Isang scam sa Twitter](./appleTwitterScam.png) + +#### Celebrity giveaway {#celebrity-giveaway} + +Ang celebrity giveaway ay isa pang karaniwang anyo ng giveaway scam. Ang mga scammer ay kukuha ng recorded na video interview o conference talk ng isang celebrity at ila-livestream ito sa YouTube - kaya magmumukhang nagbibigay ang celebrity ng live video interview na nag-eendorso ng cryptocurrency giveaway. + +Si Vitalik Buterin ang pinakakaraniwang ginagamit sa scam na ito, ngunit marami pang ibang kilalang tao sa mundo ng crypto ang ginagamit (tulad nina Elon Musk o Charles Hoskinson). Nagmumukhang lehitimo ang livestream ng mga scammer dahil sa pagsasama ng kilalang tao (kaduda-duda ito, pero kasama naman si Vitalik, kaya ok ito!). + +**Palaging mga scam ang mga giveaway. Kung ipapadala mo ang iyong pondo sa mga account na ito, hindi mo na talaga ito mababawi.** + +![Isang scam sa YouTube](./youtubeScam.png) + +### Mga support scam {#support-scams} + +Ang cryptocurrency ay isang bago pa at hindi pa lubos na nauunawaang teknolohiya. Ang karaniwang scam na umaabuso sa ganitong sitwasyon ang support scam, kung saan ginagaya ng mga scammer ang mga support personnel para sa mga sikat na wallet, exchange, o blockchain. + +Nangyayari sa Discord ang karamihan sa mga usapan tungkol sa Ethereum. Karaniwang hahanapin ng mga support scammer ang kanilang target sa pamamagitan ng paghahanap ng mga tanong na nauugnay sa suporta sa mga pampublikong channel sa discord at pagkatapos ay pagpapadala sa nagtanong ng pribadong mensahe upang mag-alok ng suporta. Sa pamamagitan ng pagkuha ng tiwala, sinusubukan kang linlangin ng mga support scammer hanggang sa ibunyag mo ang iyong mga pribadong key o magpadala ka ng pera sa kanilang mga wallet. + +![Isang support scam sa Discord](./discordScam.png) + +Bilang pangkalahatang panuntunan, hinding-hindi makikipag-usap sa iyo ang staff sa pamamagitan ng mga pribado at hindi opisyal na channel. Ilang simpleng bagay na dapat tandaan kapag nakikipag-ugnayan sa suporta: + +- Huwag ibahagi ang iyong mga pribadong key, seed phrase o password +- Huwag hayaang magkaroon ng remote access ang kahit sino sa iyong computer +- Huwag makipag-ugnayan sa labas ng mga itinakdang channel ng organisasyon + + +
    + Babala: bagama't madalas mangyari sa Discord ang mga support-style na scam, maaari din itong mangyari sa anumang chat application kung saan nagaganap ang diskusyon tungkol sa crypto, kasama na ang email. +
    +
    + +### 'Eth2' token scam {#eth2-token-scam} + +Bago ang [The Merge](/roadmap/merge/), ginamit ng mga scammer ang kalituhan sa terminong 'Eth2' para hikayatin ang mga user na ipamalit ang kanilang ETH sa 'ETH2' token. Walang 'ETH2', at walang ibang lehitimong token na inilunsad kasabay ng The Merge. Ang ETH na pagmamay-ari mo bago ang The Merge ay kapareho ng ETH ngayon. **Walang kailangang gawin kaugnay ng ETH mo para maging patunay ng stake mula sa patunay ng gawain ang account**. + +Maaaring magmukhang "suporta" ang mga scammer, na magsasabing kung idedeposito mo ang iyong ETH, makakatanggap ka ng 'ETH2' bilang kabayaran. Walang [opisyal na suporta mula sa Ethereum](/community/support/), at walang bagong token. Huwag ibahagi ang iyong wallet seed phrase sa sinuman. + +_May mga derivative token/ticker na maaaring kumatawan sa staked ETH (ibig sabihin, rETH mula sa Rocket Pool, stETH mula sa Lido, ETH2 mula sa Coinbase), ngunit hindi mo kailangang "mag-migrate" patungo sa mga ito._ + +### Mga phishing scam {#phishing-scams} + +Ang mga phishing scam ay isa pang karaniwang paraan ng mga scammer upang subukang magnakaw ng pondo mula sa iyong wallet. + +Sa ilang phishing email, pinapa-click sa mga user ang mga link na magre-redirect sa kanila sa mga pekeng website, ipapalagay sa kanila ang kanilang seed phrase, ipapa-reset ang kanilang password o magpapapadala ng ETH. May ibang hihilingin sa iyong mag-install ng malware nang hindi mo nalalaman para ma-infect ang computer mo at bigyan ng access ang mga scammer sa mga file ng iyong computer. + +Kung makakatanggap ka ng email mula sa hindi kilalang sender, tandaan: + +- Huwag buksan ang link o attachment mula sa mga email address na hindi mo kilala +- Huwag ibunyag ang iyong personal na impormasyon o mga password sa sinuman +- I-delete ang mga email mula sa mga hindi kilalang sender + +[Iba pang detalye tungkol sa pag-iwas sa mga phishing scam](https://support.mycrypto.com/staying-safe/mycrypto-protips-how-not-to-get-scammed-during-ico) + +### Mga crypto trading broker scam {#broker-scams} + +Nagpapakilala ang mga scam crypto trading broker bilang mga specialist cryptocurrency broker na mag-aalok na kunin ang pera mo at i-invest ito para sa iyo. Karaniwang kaakibat ng alok na ito ang pangako ng hindi makatotohanang kita. Pagkatanggap ng scammer sa iyong pondo, maaari ka niyang paikutin at maaaring hilingin sa iyong magpadala pa ng pondo, upang hindi mo mapalampas ang mas malaking tubo sa investment, o maaari siyang tuluyang maglaho. + +Hinahanap ng mga mapanlinlang na broker na ito ang kanilang mga target sa pamamagitan ng paggamit ng mga pekeng account sa YouTube para magsimula ng mga tila natural na usapan tungkol sa broker. Kadalasang ina-upvote ang mga pag-uusap na ito para mas maging lehitimo, pero galing sa mga bot account ang mga upvote. + +**Huwag ipaubaya sa mga hindi kakilala sa internet ang pag-invest. Mawawala ang iyong crypto.** + +![Isang trading broker scam sa YouTube](./brokerScam.png) + +### Mga crypto mining pool scam {#mining-pool-scams} + +Mula noong Setyembre 2022, hindi na maaaring magmina sa Ethereum. Ngunit mayroon pa ring mga mining pool scam. Sa mga mining pool scam, may mga taong nakikipag-ugnayan sa iyo nang basta-basta at nagsasabing malaki ang kikitain mo kapag sumali ka sa isang Ethereum mining pool. Mangangako at patuloy na makikipag-ugnayan sa iyo ang scammer kahit gaano pa katagal. Susubukan ng scammer na kumbinsihin kang kapag sumali ka sa isang Ethereum mining pool, ang iyong cryptocurrency ay gagamitin upang gumawa ng ETH at tatanggap ka ng mga dividend sa anyo ng ETH. Sa huli, mapapansin mong ang maliit ang kinikita ng iyong cryptocurrency. Simpleng hakbang ito upang maengganyo kang mag-invest pa. Sa bandang huli, ipapadala ang lahat ng pondo mo sa hindi kilalang address, at maglalaho ang scammer, o sa ilang sitwasyon, patuloy siyang makikipag-ugnayan, tulad ng nangyari sa kamakailang insidente. + +Sa pangkalahatan, mag-ingat sa mga taong nakikipag-ugnayan sa iyo sa social media na hinihikayat kang sumali sa isang mining pool. Kapag nawala na ang iyong crypto, hindi na ito maibabalik. + +Ilang bagay na dapat tandaan: + +- Mag-ingat sa sinumang nakikipag-ugnayan sa iyo tungkol sa paraan para pagkakakitaan ang iyong crypto +- Mag-research tungkol sa staking, mga liquidity pool, o iba pang paraan ng pag-invest ng iyong crypto +- Bihirang maging lehitimo ang mga ganitong scheme. Kung lehitimo ang mga ito, malamang na mainstream na at malalaman mo ang mga ito. + +[Nawalan ng $200k ang isang lalaki sa mining pool scam](https://www.reddit.com/r/CoinBase/comments/r0qe0e/scam_or_possible_incredible_payout/) + +### Mga airdrop scam {#airdrop-scams} + +Sa mga airdrop scam, may scam project na mag-e-airdrop ng asset (NFT, token) sa iyong wallet at magpapapunta sa iyo sa isang scam website para i-claim ang in-airdrop na asset. Ipa-prompt kang mag-sign in gamit ang iyong Ethereum wallet at "aprubahan" ang isang transaksyon kapag sinusubukang mag-claim. Ikokompromiso ng transaksyong ito ang iyong account sa pamamagitan ng pagpapadala ng iyong mga pampubliko at pribadong key sa scammer. Sa alternatibong anyo ng scam na ito, maaaring ipakumpirma sa iyo ang isang transaksyon na nagpapadala ng pondo sa account ng scammer. + +[Iba pang detalye tungkol sa mga airdrop scam](https://www.youtube.com/watch?v=LLL_nQp1lGk) + + + +## Karagdagang pagbabasa {#further-reading} + +### Seguridad sa web {#reading-web-security} + +- [Ito ang dahilan kung bakit hindi dapat gumamit ng mga text para sa two-factor authentication](https://www.theverge.com/2017/9/18/16328172/sms-two-factor-authentication-hack-password-bitcoin) - _The Verge_ +- [Hanggang 3 milyong device na na-infect ng mga Chrome at Edge add-on na may malware](https://arstechnica.com/information-technology/2020/12/up-to-3-million-devices-infected-by-malware-laced-chrome-and-edge-add-ons/) - _Dan Goodin_ +- [Paano Gumawa ng Password na Mahirap Hulaan — Na Hindi Mo Malilimutan](https://www.avg.com/en/signal/how-to-create-a-strong-password-that-you-wont-forget) - _AVG_ +- [Ano ang security key?](https://help.coinbase.com/en/coinbase/getting-started/verify-my-account/security-keys-faq) - _Coinbase_ + +### Seguridad ng Crypto {#reading-crypto-security} + +- [Pagprotekta sa Sarili at sa Iyong Pondo](https://support.mycrypto.com/staying-safe/protecting-yourself-and-your-funds) - _MyCrypto_ +- [4 na Paraan Upang Manatiling Ligtas sa Crypto](https://www.coindesk.com/tech/2021/04/20/4-ways-to-stay-safe-in-crypto/) - _CoinDesk_ +- [Gabay sa Seguridad para sa Mga Walang Alam at Maging sa Mga May Alam](https://medium.com/mycrypto/mycryptos-security-guide-for-dummies-and-smart-people-too-ab178299c82e) - _MyCrypto_ +- [Seguridad sa Crypto: Mga Password at Authentication](https://www.youtube.com/watch?v=m8jlnZuV1i4) - _Andreas M. Antonopoulos_ + +### Pagbibigay-kaalaman tungkol sa scam {#reading-scam-education} + +- [Gabay: Paano tukuyin ang mga scam token](/guides/how-to-id-scam-tokens/) +- [Pananatiling Ligtas: Mga Karaniwang Scam](https://support.mycrypto.com/staying-safe/common-scams) - _MyCrypto_ +- [Pag-iwas sa Mga Scam](https://bitcoin.org/en/scams)- _Bitcoin.org_ +- [Twitter thread tungkol sa mga karaniwang crypto phishing email at message](https://twitter.com/tayvano_/status/1516225457640787969)- _Taylor Monahan_ + + diff --git a/src/content/translations/fil/smart-contracts/index.md b/src/content/translations/fil/smart-contracts/index.md new file mode 100644 index 00000000000..7b87df57dae --- /dev/null +++ b/src/content/translations/fil/smart-contracts/index.md @@ -0,0 +1,84 @@ +--- +title: Smarteng kontrata +description: Isang hindi teknikal na panimula sa mga smart contract +lang: fil +--- + +# Introduction to smart contracts {#introduction-to-smart-contracts} + +Ang mga smart contract ang mga pangunahing building block ng application layer ng Ethereum. Mga computer program ang mga ito na naka-store sa blockchain na sumusunod sa logic na "if this then that (kung ganito ang mangyayari, ito ang susunod na mangyayari)," at tiyak na mae-execute ang mga ito alinsunod sa mga panuntunan na tinukoy ng code nito, na hindi na mababago kapag nagawa na. + +Si Nick Szabo ang gumawa ng terminong "smart contract". Noong 1994, sumulat siya ng [panimula sa konsepto](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html), at noong 1996, sumulat siya ng [pagsusuri ng magagawa ng mga smart contract](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html). + +Gusto ni Szabo ng digital marketplace kung saan binibigyang-daan ng mga awtomatiko at cryptographically-secure na proseso na maisagawa ang mga transaksyon at business fuction nang walang pinagkakatiwalaang intermediary. Isinasagawa ng mga smart contract sa Ethereum ang mithiing ito. + +### Tiwala sa mga conventional na kontrata {#trust-and-contracts} + +Ang isa sa pinakamalalaking problema sa tradisyonal na kontrata ang pangangailangan ng mga mapagkakatiwalaang indibidwal na tuparin ang mga resulta ng kontrata. + +Narito ang isang halimbawa: + +Sina Alice at Bob ay nagkakarera sakay ng bisikleta. Sabihin nating pumusta ng $10 si Alice kay Bob na siya ang mananalo sa karera. Tiwala si Bob na siya ang mananalo at pumayag siya sa pusta. Sa huli, naungusan ni Alice si Bob at siya ang nanalo. Pero ayaw ibigay ni Bob ang ipinusta, at inaakusahan niya si Alice na nandaya. + +Ipinapakita ng nakakatawang halimbawang ang problema sa anumang non-smart agreement. Kahit na matugunan ang mga kundisyon ng kasunduan (halimbawa, ikaw ang nanalo sa karera), kailangan mo pa rin magtiwala sa ibang tao na tuparin ang kasunduan (ibig sabihin, ibigay ang ipinusta). + +### A digital vending machine {#vending-machine} + +Maihahambing ang smart contract sa isang vending machine, na gumagana na halos katulad ng smart contract - kapag naglagay ng mga partikular na input, siguradong makukuha ang mga paunang natukoy na output. + +- Pipili ka ng produkto +- Ipapakita ng vending machine ang presyo +- Babayaran mo ang presyo +- Kukumpirmahin ng vending machine na tama ang binayad mong halaga +- Ibibigay sa iyo ng vending machine ang iyong item + +Ilalabas lang ng vending machine ang gusto mong produkto kapag natugunan ang lahat ng kahingian. Kung hindi ka pipili ng produkto o kulang ang ilalagay mong pera, hindi ilalabas ng vending machine ang iyong produkto. + +### Awtomatikong pag-execute {#automation} + +Ang pangunahing benepisyo ng smart contract ay tiyak nitong ine-execute ang malinaw na code kapag natugunan ang ilang partikular na kundisyon. Hindi mo kailangang maghintayng tao para i-interpret ang o makipag-usap tungkol sa resulta. Inaalis nito ang pangangailangan ng mga pinagkakatiwalaang intermediary. + +Halimbawa, maaari kang mag-write ng smart contract na nag-iingat ng pondo sa escrow para sa isang bata, na magbibigay-daan sa kanyang kunin ang pondo pagkatapos ng isang partikular na petsa. Kung susubukan niyang kunin ang pondo bago ang petsang iyon, hindi mae-execute ang smart contract. O maari kang mag-write ng kontrata na awtomatiko kang binibigyan ng digital na bersyon ng titulo ng kotse kapag binayaran mo ang dealer. + +### Mga predictable outcome {#predictability} + +Malabo ang mga tradisyonal na kontrata dahil umaasa ang mga ito sa mga tao upang unawain at ipatupad ang mga ito. Halimbawa, maaaring magkaiba ang interpretasyon ng dalawang hukom sa isang kontrata, na maaaring magresulta sa hindi magkakaayon na desisyon at hindi patas na resulta. Inaalis ng mga smart contract ang posibilidad na ito. Sa halip, ine-execute ang mga smart contract nang tumpak batay sa mga kundisyong nakasulat sa code ng kontrata. Dahil sa katumpakang ito, kapag pareho ang mga sitwasyon, iisang resulta ang ibibigay ng smart contract. + +### Pampublikong record {#public-record} + +Ang mga smart contract ay kapaki-pakinabang para sa mga audit at pagsubaybay. Dahil nasa pampublikong blockchain ang mga smart contract ng Ethereum, agad na masusubaybayan ng kahit sino ang mga pag-transfer ng asset at iba pang nauugnay na impormasyon. Halimbawa, puwede mong alamin kung may nagpadala ng pera sa iyong address. + +### Pagprotekta sa privacy {#privacy-protection} + +Pinoprotektahan din ng mga smart contract ang iyong privacy. Dahil isang pseudonymous network ang Ethereum (pampublikong nakaugnay ang iyong mga transaksyon sa isang natatanging cryptographic address, at hindi sa iyong identity), kaya mapoprotektahan mo ang iyong privacy mula sa mga observer. + +### Mga nakikitang tuntunin {#visible-terms} + +Sa wakas, tulad ng mga tradisyonal na kontrata, matitingnan mo ang laman ng smart contract bago mo ito lagdaan (o kaya ay mag-interact dito). Sinisigurado ng transparency ng smart contract na masusuri ito ng kahit sino. + +## Mga use case ng smart contract {#use-cases} + +Sa pangkalahatan, magagawa ng mga smart contract ang anumang bagay na magagawa ng mga computer program. + +Magagawa ng mga itong mag-compute, gumawa ng currency, mag-store ng data, mag-mint ng NFTs, magpadala ng komunikasyon at maging gumawa ng graphics. Narito ang ilan sa mga kilalang halimbawa sa totoong buhay: + +- [Stablecoins](/stablecoins/) +- [Paggawa at pamamahagi ng mga natatangign digital asset](/nft/) +- [Isang awtomatiko at bukas na currency exchange](/get-eth/#dex) +- [Decentralized gaming](/dapps/?category=gaming) +- [Isang insurance policy na awtomatikong nagbabayad](https://etherisc.com/) +- [Isang pamantayan na nagbibigay-daan sa mga tao na gumawa ng mga naka-customize at interoperable na currency](/developers/docs/standards/tokens/) + +## More of a visual learner? {#visual-learner} + +Panoorin ang paliwanag sa Finematics tungkol sa mga smart contract: + + + +## Karagdagang pagbabasa {#further-reading} + +- [Paano Mababago ng Mga Smart Contract ang Mundo](https://www.youtube.com/watch?v=pA6CGuXEKtQ) +- [Mga Smart Contract: Ang Blockchain Technology na Papalit sa Mga Abogado](https://blockgeeks.com/guides/smart-contracts/) +- [Mga smart contract para sa mga developer](/developers/docs/smart-contracts/) +- [Matuto kung paano mag-write ng mga smart contract](/developers/learning-tools/) +- [Pagiging Bihasa sa Ethereum - Ano ang Smart Contract?](https://github.com/ethereumbook/ethereumbook/blob/develop/07smart-contracts-solidity.asciidoc#what-is-a-smart-contract) diff --git a/src/content/translations/fil/social-networks/index.md b/src/content/translations/fil/social-networks/index.md new file mode 100644 index 00000000000..88114462a36 --- /dev/null +++ b/src/content/translations/fil/social-networks/index.md @@ -0,0 +1,121 @@ +--- +title: Mga decentralized na social network +description: Pangkalahatang-ideya ng mga decentralized social network sa Ethereum +lang: fil +template: use-cases +emoji: ":mega:" +sidebarDepth: 2 +image: ../../../../assets/ethereum-learn.png +summaryPoint1: Mga blockchain-based na platform para sa social interaction, at paggawa at pamamahagi ng content. +summaryPoint2: Pinoprotektahan ng mga decentralized social media network ang privacy ng user at pinapaigting ng mga ito ang seguridad ng data. +summaryPoint3: Gumagawa ng mga bagong paraan ang mga token at NFT upang pagkakitaan ang content. +--- + +Malaki ang papel na ginagampanan ng mga social network sa ating pang-araw-araw na komunikasyon at pakikipag-ugnayan. Ngunit, ang centralized na kontrol ng mga platform na ito ay nagdulot ng maraming problema: ang mga data breach, mga pagbagsak ng server, pagtanggal sa platform, censorship, at mga pag-aabuso sa privacy ang ilan sa mga trade-off na kadalasang resulta sa social media. Upang labanan ang mga isyung ito, gumagawa ang mga developer ng mga social network sa Ethereum. Maaayos ng mga decentralized social network ang marami as mga problema ng tradisyonal na social networking platform at mapapaganda ng mga ito ang karanasan ng mga user sa pangkalahatan. + +## Ano ang mga decentralized social network? {#what-are-decentralized-social-networks} + +Ang mga decentralized social network ay mga blockchain-based platform na nagpapahintulot sa mga user na makipagpalitan ng impormasyon, pati na rin mag-publish at mamahagi ng content sa mga audience. Dahil tumatakbo sa blockchain ang mga application na ito, may kakayahan ang mga itong maging decentralized at maiiwasan ng mga ito ang censorship at hindi makatuwirang pagkontrol. + +Maraming decentralized social network ang nagsisilbing mga alternatibo sa mga kilala nang social media service tulad ng Facebook, LinkedIn, Twitter, at Medium. Ngunit may ilang feature ang mga blockchain-powered social network na nagpapalamang sa mga ito sa mga tradisyonal na social platform. + +### Paano gumagana ang mga decentralized social network? {#decentralized-social-networks-overview} + +Ang mga decentralized social network ay uri ng [mga decentralized application (dapps)](/dapps/) — mga application na pinapagana ng [mga smart contract](/developers/docs/smart-contracts/) na dineploy sa blockchain. Ang contract code ay nagsisilbing backend para sa mga app na ito at nagtatakda ng business logic ng mga ito. + +Umaasa ang mga tradisyonal na social media platform sa mga database upang mag-store ng impormasyon ng user, program code, at iba pang uri ng data. Ngunit gumagawa ito ng single point-of-failure at nagdudulot ng matinding panganib. Halimbawa, [ilang oras na naging offline](https://www.npr.org/2021/10/05/1043211171/facebook-instagram-whatsapp-outage-business-impact) ang mga server ng Facebook noong nakaraang taon, na naging dahilan upang hindi mapuntahan ng mga user ang platform. + +Nasa peer-to-peer network ang mga decentralized social network na binubuo ng libo-libong node sa iba't ibang bahagi ng mundo. Kahit magkaproblema ang ilang node, hindi maaantala ang network, kaya hindi papalya at hihinto ang mga application. + +Sa paggamit ng mga decentralized storage system tulad ng [InterPlanetary File System (IPFS)](https://ipfs.io/), mapoprotektahan ng mga social network na ginawa sa Ethereum ang impormasyon ng user mula sa pang-aabuso at mapaminsalang paggamit. Hindi ibebenta ng kahit sino ang iyong personal na impormasyon sa mga advertiser, at hindi rin mananakaw ng mga hacker ang mga kumpidensyal mong detalye. + +Maraming blockchain-based social platform na may mga native token na nagpapatakbo ng monetization kapag walang kita mula sa advertising. Maaaring bilhin ng mga user ang mga token na ito para ma-access ang ilang partikular na feature, magsagawa ng mga in-app na pagbili, o bigyan ng tip ang mga paborito nilang content creator. + +## Mga benepisyo ng mga decentralized social network {#benefits} + +1. Hindi nase-censor at bukas sa lahat ang mga decentralized social network. Ibig sabihin nito, hindi puwedeng i-ban, tanggalin sa platform, o limitahan ang mga user nang walang maayos na dahilan. + +2. Ibinatay ang mga decentralized social network sa mga open-source ideal at ginagawa nitong available para masiyasat ng publiko ang source code. Sa pamamagitan ng pag-aalis ng pagpapatupad ng mga malabong algrithm na pangkaraniwan sa tradisyonal na social media, maiaayon ng mga blockchain-based social network ang mgaa interes ng mga user at mga creator sa platform. + +3. Inaalis ng mga decentralized social network ang "middle-man". Ang mga content creator ang direktang nagmamay-ari sa kanilang content, at direkta silang nakikipag-ugnayan sa mga follower, fan, buyer, at iba pang partido, gamit lang ang smart contract. + +4. Bilang mga decentralized application (dapps) na tumatakbo sa Ethereum network, na itinataguyod ng pandaigdigan at peer-to-peer na network ng mga node, maliit ang posibilidad na makaranas ng downtime at paghinto ng server ang mga decentralized social network. + +5. Nagbibigay ang mga decentralized social platform ng mas magandang framework ng monetization para sa mga content creator sa pamamagitan ng mga non-fungible token (NFTs), mga in-app na pagbabayad ng crypto, at iba pa. + +6. Sa mga decentralized social network, mataas na antas ng privacy at anonymity ang nakukuha ng mga user. Halimbawa, maaaring mag-sign in ang isang indibidwal sa isang Ethereum-based social network gamit ang ENS profile o wallet—nang hindi kinakailangang magbahagi ng personally identifiable information (PII), tulad ng pangalan, email address, at iba pa. + +7. Umaasa ang mga decentralized social network sa decentralized storage, at hindi sa mga centralized database, na maituturing na mas mainam para sa pag-iingat sa data ng user. + +## Mga decentralized social network sa Ethereum {#ethereum-social-networks} + +Ang Ethereum network na ang pinipiling tool ng mga developer na gumagawa ng decentralized social media dahil sa kasikatan ng mga token nito (ERC-20/ERC-721) at sa malaking bilang ng mga user nito. Narito ang ilang halimbawa ng mga Ethereum-based social network: + +### Peepeth {#peepeth} + +Ang [Peepeth](https://peepeth.com/) ay isang microblogging platform na katulad ng Twitter. Tumatakbo ito sa Ethereum blockchain at gumagamit ito ng IPFS para mag-store ng data ng user. + +Puwedeng magpadala ang mga user ng maiikling mensahe na tinatawag na "Peeps," na hindi made-delete o mababago. Maaari kang kumuha ng mga tip o magbigay ng tip sa kahit sino sa platform sa ether (ETH) nang hindi umaalis sa app. + +### Mirror {#mirror} + +Ang [Mirror](https://mirror.xyz/) ay isang web3-enabled writing platform na may layuning maging decentralized at pagmamay-ari ng mga user. Ang mga user ay maaaring magbasa at magsulat nang libre sa Mirror sa pamamagitan lang ng pagkonekta ng kanilang mga wallet. Maaari ding mangolekta ng mga sulatin ang mga user at mag-subscribe sa mga paborito nilang manunulat. + +Ang mga post na nailathala sa Mirror ay permanenteng iso-store sa Arweave, isang decentralized storage platform, at maaaring i-mint bilang mga collectable na [non-fungible token (NFTs)](/nft/) na tinatawag na Writing NFTs. Ganap na libre para sa mga manunulat ang paggawa ng Writing NFTs, at nangyayari ang pagkolekta sa isang Ethereum L2 — kung kaya, mura, mabilis, at environmentally friendly ang mga transaksyon. + +### MINDS {#minds} + +Ang [MINDS](https://www.minds.com/) ay isa sa mga pinakaginagamit na decentralized social network. Gumagana ito tulad ng Facebook at mayroon na itong milyong-milyong user. + +Ginagamit ng mga user ang native ERC-20 token na $MIND ng platform para bayaran ang mga item. Maaari ding kumita ang mga user ng mga $MIND token sa pamamagitan ng paglalathala ng sikat na content, pag-contribute sa ecosystem, at pag-refer ng iba sa platform. + +## Mga Web2 social network sa Ethereum {#web2-social-networks-and-ethereum} + +Hindi lang ang mga native social platform sa [Web3](/web3/) ang sumusubok na i-incorporate ang blockchain technology sa social media. Pinaplano rin ng maraming centralized platform na i-integrate ang Ethereum sa kani-kanilang infrastructure: + +### Reddit {#reddit} + +Mayroon ang Reddit ng [touted Community Points](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users), na [mga ERC-20 token](/developers/docs/standards/tokens/erc-20/) makukuha ng mga user sa pamamagitan ng pag-post ng de-kalidad na content at pag-contribute sa mga online na komunidad (mga subreddit). Mare-redeem mo ang mga token na ito sa isang subreddit upang [makakuha ng mga eksklusibong pribilehiyo at benepisyo](https://www.reddit.com/community-points/). Para sa proyektong ito, nakikipagtulungan ang Reddit sa Arbitrum, na isang [layer 2](/layer-2/) rollup na idinisenyo para sukatin ang mga transaksyon sa Ethereum. + +Live na ang programa, at nagpapatakbo ang subreddit na r/CryptoCurrency [ng bersyon nito ng Community Points na tinatawag na "Moons"](https://www.reddit.com/r/CryptoCurrency/wiki/moons_wiki). Ayon sa opisyal na paglalarawan, "ginagantimpalaan ng Moons ang mga poster, commenter, at moderator para sa kanilang mga kontribusyon sa subreddit." Dahil ang mga token na ito ay nasa blockchain (natatanggap ng mga user ang mga ito sa kanilang mga wallet), hiwalay ang mga ito sa Reddit at hindi maaaring kunin. + +Matapos ang beta phase sa Rinkeby testnet, nasa [Arbitrum Nova](https://nova.arbitrum.io/) na ngayon ang Community Points sa Reddit, na isang blockchain na pinagsasama ang mga property ng [sidechain](/developers/docs/scaling/sidechains/) at [optimistic rollup](/developers/docs/scaling/optimistic-rollups/). Maliban sa paggamit ng Community Points para makuha ang mga espesyal na feature, maaari ding i-trade ng mga user sa fiat sa mga exchange. Gayudin, ang dami ng Community Points na pagmamay-ari ng isang user ang nagtatakda ng kanyang impluwensya sa proseso ng pagpapasya sa loob ng komunidad. + +### Twitter {#twitter} + +Noong Enero 2021, inilunsad ng Twitter Blue [ ang suporta para sa mga non-fungible token (NFTs)](https://mashable.com/article/twitter-blue-nft-profile-picture), na nagpapahintulot sa mga users na ikonekta ang kanilang mga wallet at ipakita ang NFTs bilang profile picture. Habang isinusulat ito, [nag-anunsyo rin ng mga plano](https://www.theverge.com/2021/8/16/22627435/twitter-bluesky-lead-jay-graber-decentralized-social-web) ang social media company na gumawa ng decentralized social network sa hinaharap. + +### Instagram {#instagram} + +Noong Mayo 2022, [inanunsyo ng Instagram ang suporta para sa NFTs sa Ethereum at Polygon](https://about.instagram.com/blog/announcements/instagram-digital-collectibles). Direktang mapo-post ng mga user ang NFTs sa Instagram sa pamamagitan ng pagkonekta ng kanilang Ethereum wallet. + +## Gumamit ng mga decentralized social network {#use-decentralized-social-networks} + +- **[Status.im](https://status.im/)** - _Ang Status ay isang secure na messaging app na gumagamit ng open-source, peer-to-peer protocol, at end-to-end encryption upang protektahan ang iyong mga mensahe mula sa mga third party._ +- **[Mirror.xyz](https://mirror.xyz/)** - _Ang Mirror ay isang decentralized publishing platform na pagmamay-ari ng mga user na ginawa sa Ethereum magawa ng mga user na mangalap ng mga ideya, pagkakitaan ang content, at bumuo ng mga high-value na komunidad._ +- **[Lens Protocol](https://lens.xyz/)** - _Ang Lens Protocol ay isang composable at decentralized social graph na tumutulong sa mga creator na maipakitang pagmamay-ari nila ang kanilang content saan man sila pumunta sa digital garden ng decentralized internet._ +- **[Farcaster](https://farcaster.xyz/)** - _Ang Farcaster ay isang sapat na decentralized na social network. Open protocol ito na puwedeng suportahan ang maraming client, katulad ng email._ + +## Karagdagang pagbabasa {#further-reading} + +### Mga Artikulo {#articles} + +- [Pag-decentralize sa social media: isang gabay sa web3 social stack](https://www.coinbase.com/blog/decentralizing-social-media-a-guide-to-the-web3-social-stack) - _Coinbase Ventures_ +- [Ang Mga Social Network ang Susunod na Malaking Oportunidad para sa Decentralization](https://www.coindesk.com/tech/2021/01/22/social-networks-are-the-next-big-decentralization-opportunity/) — _Ben Goertzel_ +- [Ang Web3 ang susi mga social network na decentralized at pinapatakbo ng komunidad](https://venturebeat.com/2022/02/26/web3-holds-the-promise-of-decentralized-community-powered-social-networks/) — _Sumit Ghosh_ +- [Pangkalahatang-ideya ng Landscape ng Blockchain Social Media](https://www.gemini.com/cryptopedia/blockchain-social-media-decentralized-social-media) — _Gemini Cryptopedia_ +- "[Paano Malulutas ng Blockchain ang Problema sa Privacy sa Social Media](https://www.investopedia.com/news/ethereum-blockchain-social-media-privacy-problem-linkedin-indorse/) — _Prableen Bajpai_." +- [Papunta na sa Blockchain ang Mga Social Media Network](https://businesstechguides.co/what-are-decentralized-social-networks) — _Emmanuel Awosika_ +- [Sapat na Decentralization para sa Mga Social Network](https://www.varunsrinivasan.com/2022/01/11/sufficient-decentralization-for-social-networks) — _Varun Srinivasan_ + +### Videos {#videos} + +- [Paliwanag Tungkol sa Decentralized Social Media](https://www.youtube.com/watch?v=UdT2lpcGvcQ) — _Coinmarketcap_ +- [Gustong I-decentralize ng DeSo Blockchain ang Social Media](https://www.youtube.com/watch?v=SG2HUiVp0rE) — _Bloomberg Technology_ +- [Ang Kinabukasan ng Decentralized Social Media kasama sina Balaji Srinivasan, Vitalik Buterin, Juan Benet](https://www.youtube.com/watch?v=DTxE9KV3YrE) — _ETHGlobal_ + +### Mga Komunidad {#communities} + +- [Discord Server ng Status](https://discord.com/invite/3Exux7Y) +- [Discord Server ng Mirror](https://discord.com/invite/txuCHcE8wV) +- [Subreddit na r/CryptoCurrency](https://www.reddit.com/r/CryptoCurrency/) diff --git a/src/content/translations/fil/staking/dvt/index.md b/src/content/translations/fil/staking/dvt/index.md new file mode 100644 index 00000000000..370f6183b37 --- /dev/null +++ b/src/content/translations/fil/staking/dvt/index.md @@ -0,0 +1,91 @@ +--- +title: Distributed validator technology +description: Gamit ang distributed validator technology, pinaghihiwa-hiwalay ang operasyon ng Ethereum validor sa maraming partido. +lang: fil +--- + +# Distributed validator technology {#distributed-validator-technology} + +Ang distributed validator technology (DVT) ay isang estratehiya sa seguridad ng validator kung saan pinaghihiwa-hiwalay sa maraming partido ang mga pangunahing responsibilidad at pag-sign para mabawasan ang mga single point of failure, at para mapahusay ang resiliency ng validator. + +Ginagawa ito sa pamamagitan ng **paghahati ng pribadong key** na ginagamit upang mag-secure ng validator **sa maraming computer** na isinaayos sa isang "cluster". Mainam ito dahil pinapahirap nito para sa mga attacker na magkaroon ng access sa key, dahil hindi ito naka-store nang buo sa kahit anong machine. Dahil din dito, puwedeng mag-offline ang ilang node, dahil magagawa ng isang subset ng mga machine sa bawat cluster ang kinakailangang pag-sign. Binabawasan nito ang mga single point of failure sa network at mas pinapahusay nito ang buong validator set. + +![Isang Diagram na nagpapakita kung paano hinahati ang isang validator key at inilalagay sa maraming node na may iba't ibang component.](./dvt-cluster.png) + +## Bakit kailangan natin ang DVT? {#why-do-we-need-dvt} + +### Seguridad {#security} + +Gumagawa ang mga validator ng dalawang pares ng pampubliko at pribadong key: mga validator key para sa pakikilahok sa consensus at mga withdrawal key para sa pag-access sa mga pondo. Bagama't mase-secure ng mga validator ang mga withdrawal key sa cold storage, dapat online 24/7 ang mga pribado key ng validator. Kung makokompromiso ang pribadong key ng validator, makokontrol ng attacker ang validator na posibleng maging dahilan ng pag-slash o pagkawala ng ETH ng staker. Makakatulong ang DVT na mapaliit ang panganib na ito. Narito kung paano: + +Sa pamamagitan ng paggamit ng DVT, puwedeng mag-stake ang mga staker habang nasa cold storage ang mga pribadong key ng validator. Magagawa ito sa pamamagitan ng pag-encrypt ng orihinal at kumpletong key ng validator at paghahati nito sa mga key share. Nananatili online ang mga key share at inilalagay sa maraming node, kung kaya, naisasagawa ang distributed na operasyon ng validator. Naisasagawa ito dahil gumagamit ang mga Ethereum validator ng mga BLS signature na additive. Ibig sabihin nito, mabubuo ulit ang kumpletong key sa pamamagitan ng pagsasama-sama ng mga component ng mga ito. Dahil dito, secure na maitatabi offline ng staker ang kumpleto at orihinal na 'master' key ng validator. + +### Walang single point of failure {#no-single-point-of-failure} + +Kapag hinati ang isang validator sa maraming operator at maraming machine, malalabanan nito ang mga pagpalya ng mga indibidwal na hardware at software nang hindi nagiging offline. Mapapaliit din ang mga panganib ng pagpalya sa pamamagitan ng paggamit ng iba't ibang configuration ng hardware at software sa mga node sa isang cluster. Hindi available ang ganitong resiliency sa mga configuration ng validator na may isang node - ito ay nagmumula sa DVT layer. + +Kung masisira ang isa sa mga component ng machine sa isang cluster (halimbawa, kung may apat na operator sa isang cluster ng validator at gumagamit ang isa sa mga ito ng partikular na client na may bug), tinitiyak ng ibang component na patuloy na tatakbo ang validator. + +### Desentralisasyon {#decentralization} + +Mainam para sa Ethereum na magkaroon ng lahat ng hiwalay na pinapatakbong validator na makakaya. Gayunpaman, may ilang staking provider na mas madalas na ginagamit at ang mga ito ang responsable sa malaking bahagi ng kabuuang halaga ng na-stake na ETH sa network. Puwedeng hayaan ng DVT ang mga operator na ito habang pinapanatili ang decentralization ng stake. Ito ay dahil inilalagay sa maraming machine ang mga key para sa bawat validator at kakailanganin ng mas malaking sabwatan para maging mapaminsala ang isang validator. + +Kung walang DVT, mas madali para sa mga staking provider na suportahan lang ang isa o dalawang configuration ng client para sa lahat ng kanilang mga validator, na nagpapatindi sa epekto ng isang bug sa client. Ang DVT ay maaaring gamitin upang ikalat ang panganib sa maraming configuration ng client at iba't ibang hardware, na siyang gumagawa ng resilience sa pamamagitan ng diversity. + +**Ibinibigay ng DVT ang mga sumusunod na benepisyo sa Ethereum:** + +1. **Decentralization** ng consensus ng patunay ng stake ng Ethereum +2. Tinitiyak ang **liveness** ng network +3. Gumagawa ng **tolerance sa problema** para sa mga validator +4. Operasyon ng **Trust minimized** na validator operation +5. **Mas kaunting slashing** at panganib ng downtime +6. **Pinapaigting ang diversity** (client, data center, lokasyon, regulasyon, at iba pa.) +7. **Pinaigting na seguridad** ng pamamahala ng key ng validator + +## Paano gumagana ang DVT? {#how-does-dvt-work} + +Ang DVT (Decentralized Virtual Token) solution ay naglalaman ng mga sumusunod na component: + +- **[Shamir's secret sharing](https://medium.com/@keylesstech/a-beginners-guide-to-shamir-s-secret-sharing-e864efbf3648)** - Gumagamit ang mga validator ng [mga BLS key](https://tl.wikipedia.org/wiki/Boneh%E2%80%93Lynn%E2%80%93Shacham). Ang mga indibidwal na "key share" ng BLS ("mga key share") ay maaaring pagsama-samahin sa isang aggregated key (signature). Sa DVT, ang pribadong key para sa isang validator ay ang pinagsama-samang BLS signature ng bawat operator sa cluster. +- **[Threshold signature scheme](https://medium.com/nethermind-eth/threshold-signature-schemes-36f40bc42aca)** - Itinatakda ang bilang ng mga indibidwal na key share na kailangan para sa mga gawain sa pag-sign, hal., 3 sa 4. +- **[Distributed key generation (DKG)](https://medium.com/toruslabs/ang-distributed-key-generation-dkg-221fa40d0b4a)** - Cryptographic na prosesong gumagawa ng mga key share at ginagamit upang ipamahagi ang mga share ng isang kasalukuyan o bagong key ng validator sa mga node sa isang cluster. +- **[Multiparty computation (MPC)](https://messari.io/report/applying-multiparty-computation-to-the-world-of-blockchains)** - Lihim na ginagawa ang kumpletong key ng validator gamit ang multiparty computation. Hindi malalaman ng kahit anong indibidwal na operator ang kumpletong key—isang bahagi lang nito ang malalaman ng mga ito (ang "share" ng mga ito). +- **Protocol ng Consensus** - Pumipili ang protocol ng consensus ng isang node upang maging proposer ng block. Kahati ng mga ito sa block ang iba pang node sa cluster, na nagdaragdag ng kanilang mga key share sa aggregate signature. Kapag sapat na ang mga key share na na-aggregate, ipo-propose sa Ethereum ang block. + +May built-in na tolerance sa problema ang mga distributed validator at patuloy na tatakbo ang mga ito kahit mag-offline ang ilan sa mga indibidwal na node. Ibig sabihin nito, resilient ang cluster kahit pa maging mapaminsala o lazy ang ilan sa mga node. + +## Mga use case ng DVT {#dvt-use-cases} + +May malalaking epekto ang DVT para sa mas malawak na industriya ng staking: + +### Mga solo staker {#solo-stakers} + +Binibigyang-daan din ng DVT ang non-custodial staking sa pamamagitan ng pagpapahintulot sa iyong ilagay ang key ng validator mo sa mga remote node habang pinapanatiling ganap na offline ang kumpletong key. Ibig sabihin nito, hindi kailangang maglaan ng pera ng mga home staker para sa hardware, habang mas malalabanan nila ang mga potensyal na pag-hack sa pamamagitan ng pamamahagi ng mga key share. + +### Staking as a service (SaaS) {#saas} + +Ang mga operator (tulad ng mga staking pool at institusyonal na staker) na namamahala ng maraming validator ay maaaring gumamit ng DVT upang mapaliit ang kanilang panganib. Sa pamamagitan ng pamamahagi ng kanilang infrastructure, makakapagdagdag ang mga ito ng redundancy sa kanilang mga operasyon at pag-iba-ibahin ang mga uri ng hardware na ginagamit ng mga ito. + +Ibinabahagi ng DVT ang responsibilidad para sa pamamahala ng key sa iba't ibang mga node, na nangangahulugang maibabahagi rin ang gastos sa operasyon. Mapapaliit ng DVT ang panganib sa operasyon at gastos sa insurance para sa mga staking provider. + +### Staking pools {#staking-pools} + +Dahil sa mga standard na setup ng validator, ang mga staking pool at liquid staking provider ay inaatasang magkaroon ng iba't ibang antas ng tiwala sa nag-iisang operator dahil ang mga kita at pagkalugi ay ipinapamahagi sa buong pool. Umaasa rin ang mga ito na poprotektahan ng mga operator ang mga signing key dahil, hanggang ngayon, wala nang iba pang opsyon ang mga ito. + +Kahit na gumawa ng mga tradisyonal na pagsisikap upang ikalat ang panganib sa pamamagitan ng pamamahagi ng mga stake sa maraming operator, hiwalay pa ring pinapamahalaan ng bawat operator ang isang malaking stake. Ang pagtitiwala sa nag-iisang operator ay nagdudulot ng malalaking panganib kung hindi magiging mahusay ang performance nito, magkaroon ito ng downtime, makokompromiso ito, o kumilos sa mapaminsalang paraan. + +Sa pamamagitan ng paggamit ng DVT, lubos na lumiliit ang tiwalang kailangan mula sa mga operator. **Sa tulong ng mga pool, puwedeng pangasiwaan ng mga operator ang mga stake nang hindi kinakailangang magkaroon ng mga key ng validator** (dahil mga key share lang ang ginagamit). Binibigyang-daan din nito na ipamahagi sa mas maraming operator ang mga stake (hal., sa halip na magkaroon ng nag-iisang operator na namamahala ng 1000 validator, binibigyang-daan ng DVT na pangasiwaan ang mga validator na iyon ng maraming operator). Titiyakin ng iba't ibang configuration ng operator na kung may masisira mang isang operator, makakapag-attest pa rin ang iba. Nagreresulta ito sa redundancy at diversification na nagdudulot ng mas magandang performance at resilience, habang mina-maximize ang mga reward. + +Ang isa pang benepisyo ng pagpapaliit sa tiwala sa nag-iisang operator ay maaaring pahintulutan ng mga staking pool ang mas bukas at walang pahintulot na partisipasyon ng mga operator. Sa pamamagitan nito, mapapaliit ng mga serbisyo ang kanilang panganib at masusuportahan nila ang decentralization ng Ethereum sa pamamagitan ng paggamit ng mga curated at walang pahintulot na hanay ng mga operator, halimbawa, sa pamamagitan ng pagpapares ng mga home o mas maliit na staker sa mas malalaking staker. + +## Mga potensyal na problema sa paggamit ng DVT {#potential-drawbacks-of-using-dvt} + +- **Karagdagang component** - ang pagdaragdag ng DVT node ay nagdaragdag ng isa pang bahagi na posibleng magkaproblema o maging vulnerable. Ang isang paraan upang maibsan ito ay ang pagtutok sa pagkakaroon ng maraming implementation ng isang DVT node, na tumutukoy sa maraming DVT client (tulad ng pagkakaroon ng maraming client para sa mga layer ng consensus at execution). +- **Gastos sa operasyon** - dahil ang DVT ang namamahagi ng validator sa maraming partido, nangangailangan ng mas maraming tool para sa operasyon sa halip na isang node lang, kaya mas lumalaki ang gastos sa operasyon. +- **Posibleng mas mataas na latency** - dahil gumagamit ang DVT ng protocol ng consensus para magkaroon ng consensus sa maraming mode na nagpapatakbo ng isang operator, posible itong magdulot ng mas mataas na latency. + +## Further Reading {#further-reading} + +- [Specs ng Ethereum distributed validator (mataas na antas)](https://github.com/ethereum/distributed-validator-specs) +- [Technical specs ng Ethereum distributed validator](https://github.com/ethereum/distributed-validator-specs/tree/dev/src/dvspec) +- [Shamir secret sharing demo app](https://iancoleman.io/shamir/) diff --git a/src/content/translations/fil/staking/pools/index.md b/src/content/translations/fil/staking/pools/index.md new file mode 100644 index 00000000000..92a55c9a1b9 --- /dev/null +++ b/src/content/translations/fil/staking/pools/index.md @@ -0,0 +1,85 @@ +--- +title: Pooled staking +description: Pangkalahatang-ideya tungkol sa kung paano magsimula sa pooled staking ng ETH +lang: fil +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-pool.png +alt: Lumalangoy sa pool ang rhino na si Leslie. +sidebarDepth: 2 +summaryPoints: + - Mag-stake at makakuha ng mga reward sa anumang halaga ng ETH sa pamamagitan ng pakikipagtulungan sa iba + - Ipaubaya ang validator sa third party para sa mas madali at simpleng proseso + - Ilagay ang mga staking token sa sarili mong wallet +--- + +## Ano ang mga staking pool? {#what-are-staking-pools} + +Isang collaborative approach ang mga staking pool para payagan ang maraming may mas maliliit na halaga ng ETH na makuha ang 32 ETH na kailangan para ma-activate ang isang set ng mga key ng validator. Hindi native na sinusuportahan sa protocol ang pooling functionality, kaya hiwalay na gumawa ng mga solution para tugunan ang pangangailangang ito. + +May ilang pool na gumagamit ng mga smart contract, kung saan maaaring ideposito ang mga pondo sa isang contract, na namamahala at sumusubaybay sa stake mo nang hindi umaasa sa third party, at nagbibigay sa iyo ng token na kumakatawan sa halagang ito. Maaaring hindi gumagamit ang ibang pool ng mga smart contract at off-chain na lang isinasaayos. + +## Bakit dapat mag-stake sa isang pool? {#why-stake-with-a-pool} + +Bukod sa mga benepisyo na aming inilahad sa aming [panimula sa staking](/staking/), ang staking sa isang pool ay may iba't ibang natatanging benepisyo. + + + + + + + + + +## Ano ang dapat isaalang-alang {#what-to-consider} + +Ang pooled o delegated staking ay hindi native na sinusuportahan ng Ethereum protocol, ngunit dahil sa demand ng mga user na mag-stake ng wala pang 32 ETH, mas maraming solution ang binuo upang punan ang demand na ito. + +Ang bawat tool at ang mga tool o smart contract na ginagamit ng mga ito ay ginawa ng iba't ibang team, at may mga benepisyo at panganib ang bawat isa sa mga ito. Binibigyang-daan ng mga pool ang mga user na i-swap ang ETH nila sa token na kumakatawan sa staked ETH. Ang token ay kapaki-pakinabang dahil ito'y binibigyang-daan nito ang mga user na i-swap ang kahit anong halaga ng ETH sa yield-bearing token na may katumbas na halaga na kumikita mula sa mga reward sa staking na inilalapat sa kasalukuyang staked ETH (at vice versa) sa mga decentralized exchange kahit na ang mismong ETH ay mananatiling staked sa consensus layer. Nangangahulugan ito na ang pag-swap sa at mula sa yield-bearing staked-ETH product at "raw ETH" ay mabilis, madali, at hindi lang available sa mga multiple ng 32 ETH. + +Gayunpaman, ang mga staked-ETH token na ito ay karaniwang nagdudulot ng mga kagawiang mala-cartel kung saan nakokontrol ng ilang centralized na organisasyon ang malaking halaga ng staked ETH sa halip na sa maraming independiyenteng indibidwal. Dahil dito, nagkakaroon ng sitwasyong nagbibigay-daan sa censorship o pagkuha ng halaga. Sa staking, palaging ang pinakamainam na sitwasyon ay ang mga indibidwal ang nagpapatakbo ng mga validator sa sarili nilang hardware hangga't maaari. + +[Iba pang detalye tungkol sa mga panganib ng pag-stake ng mga token](https://notes.ethereum.org/@djrtwo/risks-of-lsd). + +Gumagamit ng mga attribute indicator sa ibaba para ipakita ang mga kapansin-pansing kalakasan o kahinaan ng isang nakalistang staking pool. Gamitin ang seksyong ito bilang sanggunian sa kung paano namin tinutukoy ang mga attribute na ito habang pumipili ka ng pool na sasalihan. + + + +## Tingnan ang mga staking pool {#explore-staking-pools} + +May iba't ibang opsyon na available upang tulungan ka sa iyong setup. Gamitin ang mga indicator sa itaas para magabayan ka sa mga tool sa ibaba. + + + + + +Tandaan ang kahalagahan ng pagpili ng serbisyo na seryoso sa [client diversity](/developers/docs/nodes-and-clients/client-diversity/), dahil pinapaigting nito ang seguridad ng network, at nililimitahan nito ang iyong panganib. Matutukoy ang mga serbisyo na may patunay ng paglilimita ng pangunahing paggamit ng client sa pamamagitan ng "execution client diversity" at "consensus client diversity." + +May mungkahi para sa staking tool na hindi namin nabanggit? Tingnan ang aming [patakaran sa product listing](/contributing/adding-staking-products/) para malaman kung ito ay angkop, at isumite ito para masuri. + +## Mga karaniwang itanong {#faq} + + +Karaniwang ibinibigay ang mga ERC-20 staking token sa mga staker na kumakatawan sa halaga ng kanilang staked ETH at mga reward. Tandaan na medyo magkakaiba ang paraan ng iba't ibang pool ng pamamahagi ng mga reward para sa staking sa kanilang mga user, pero pangkaraniwan ito. + + + +Ngayon na! Ang Shanghai/Capella network upgrade ay nangyari noong Abril 2023, at inilunsad nito ang mga pag-withdraw sa staking. Ang mga validator accounts na sumusuporta sa mga staking pool ngayon ay may kakayahang umalis at i-withdraw ang ETH at ilagay sa kanilang itinakdang withdrawal address. Dahil dito, magkakaroon ka ng kakayahang i-redeem ang bahagi mo sa stake para sa kasalukuyang ETH. Magtanong sa iyong provider upang malaman kung paano nila sinusuportahan ang functionality na ito. + +Binibigyang-daan naman ng mga pool na gumagamit ng ERC-20 staking token ang mga user na i-trade ang token na ito sa open market. Kung gayon, maibebenta mo ang iyong staking position at makakapag-"withdraw" ka nang hindi inaalis ang EH sa staking contract. + +Iba pang detalye tungkol sa mga pag-withdraw sa staking + + + +Maraming pagkakatulad ang mga opsyong ito sa pooled staking at mga centralized exchange, gaya ng kakayahang mag-stake ng maliliit na halaga ng ETH at pagsama-samahin ang mga ito upang mapagana ang mga validator. + +Hindi katulad ng mga centralized exchange, gumagamit ang maraming iba pang opsyon sa pooled staking ng mga smart contract a/o mga staking token, na karaniwang mga ERC-20 token na puwedeng ilagay sa sarili mong wallet, at mabili o maibenta gaya ng ibang token. Nagbibigay ito ng layer ng sovereignty at seguridad sa pamamagitan ng pagbibigay sa iyo ng kontrol sa iyong mga token, pero hindi ka pa rin nito bibigyan ng direktang kontrol sa validator client na nagpapatunay para sa iyo sa background. + +May ilang opsyon sa pooling na mas decentralized kumpara sa iba pagdating sa mga node na sumusuporta sa mga ito. Upang itaguyod ang kalagayan at decentralization ng network, palaging hinihikayat ang mga staker na pumili ng pooling service na nag-e-enable ng isang set ng mga node operator na hindi kailangan ng pahintulot at decentralized. + + +## Karagdagang pagbabasa {#further-reading} + +- [Pag-stake gamit ang Rocket Pool - Pangkalahatang-ideya ng Staking](https://docs.rocketpool.net/guides/staking/overview.html) - _Mga dokumento ng RocketPool_ +- [Pag-stake ng Ethereum gamit ang Lido](https://help.lido.fi/en/collections/2947324-staking-ethereum-with-lido) - _Mga pantulong na dokumento ng Lido_ diff --git a/src/content/translations/fil/staking/saas/index.md b/src/content/translations/fil/staking/saas/index.md new file mode 100644 index 00000000000..9bc9155ac85 --- /dev/null +++ b/src/content/translations/fil/staking/saas/index.md @@ -0,0 +1,94 @@ +--- +title: Staking bilang serbisyo +description: Pangkalahatang-ideya tungkol sa kung paano magsimula sa pooled staking ng ETH +lang: fil +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-saas.png +alt: Lumulutang sa ulap ang rhino na si Leslie. +sidebarDepth: 2 +summaryPoints: + - Ang mga third-party node operator ang nangangasiwa sa operasyon ng iyong validator client + - Magandang opsyon para sa sinumang may 32 ETH na hindi kumportable sa pagiging teknikal at kumplikado ng pagpapatakbo ng node + - Iwasang umasa sa iba, at panatilihing hawak mo ang iyong mga withdrawal key +--- + +## Ano ang staking bilang serbisyo? {#what-is-staking-as-a-service} + +Ang Staking as a Service (“SaaS") ay kumakatawan sa kategorya ng mga serbisyo sa staking kung saan mo idineposito ang sarili mong 32 ETH para sa isang validator, ngunit itinatalaga mo ang operasyon ng node sa isang third-party operator. Kadalasan, sa prosesong ito, ginagabayan ka sa buong inisyal na pag-set up, na kinabibilangan ng paggawa at pag-deposit ng key, at pagkatapos ay ia-upload ng mga signing key mo sa operator. Sa tulong nito, papatakbuhin ng serbisyo ang iyong validator para sa iyo, na kadalasang may bayad kada buwan. + +## Bakit dapat mag-stake sa gamit ang isang serbisyo? {#why-stake-with-a-service} + +Hindi native na sinusuportahan ng Ethereum protocol ang pagtatalaga ng stake, kaya ginawa ang mga serbisyong ito para punan ang demand na ito. Kung mayroon kang 32 ETH na ise-stake, pero hindi ka kumportableng mangasiwa ng hardware, binibigyang-daan ka ng mga serbisyong SaaS na italaga ang mahirap na trabaho habang nakakakuha ka ng mga native na block reward. + + + + + + + + + +## Ano ang dapat isaalang-alang {#what-to-consider} + +Dumarami ang mga SaaS provider na tutulong sa iyong i-stake ang ETH mo, pero may kanya-kanyang benepisyo at panganib ang mga ito. Ang lahat ng opsyon sa SaaS ay nangangailangan ng mga karagdagang trust assumption kumpara sa home-staking. Ang mga opsyon sa Saas ay maaaring naglalagay ng karagdagang code sa mga Ethereum clients na hindi bukas o mao-audit. Mayroon ding hindi magandang epekto ang SaaS sa decentralization ng network. Depende sa setup, maaaring hindi mo kontrolado ang iyong validator - maaaring gamitin ng operator ang iyong ETH sa maling paraan. + +Ang mga attribute indicator ay ginagamit sa ibaba para ipakita ang mga kapansin-pansing kalakasan o kahinaas ng isang nakalistang SaaS provider. Gamitin ang seksyong ito bilang sanggunian sa pagtukoy ng mga katangian na ito habang pumipili ka ng serbisyong tutulong sa iyo sa iyong pag-stake. + + + +## Tingnan ang mga staking service provider {#saas-providers} + +Nasa ibaba ang ilang available na SaaS provider. Gamitin ang mga indicator sa itaas upang tulungan kang gamitin ang mga serbisyong ito + + + +#### Mga SaaS provider + + + +Tandaan ang kahalagahan ng pagsuporta sa [client diversity](/developers/docs/nodes-and-clients/client-diversity/) dahil pinapaigting nito ang seguridad ng network, at nililimitahan nito ang iyong panganib. Matutukoy ang mga serbisyo na may patunay ng paglilimita ng pangunahing paggamit ng client sa pamamagitan ng "execution client diversity" at "consensus client diversity." + +#### Mga Generator ng Key + + + +Mayroong mungkahi para sa staking-as-a-service provider na hindi namin napansin? Tingnan ang aming [patakaran sa product listing](/contributing/adding-staking-products/) para malaman kung ito ay angkop, at isumite ito para masuri. + +## Mga karaniwang itanong {#faq} + + +Mag-iiba ang mga usapan depende sa provider, pero karaniwan kang gagabayan sa pag-set up ng anumang signing key na kailangan mo (isa kada 32 ETH), at ia-upload ang mga ito sa iyong provider para payagan ang mga itong mag-validate para sa iyo. Hindi nagbibigay ang mga signing key ng anumang kakayahang mag-withdraw, mag-transfer, o gastusin ang iyong pondo. Gayunpaman, nagbibigay ang mga ito ng kakayahang bumoto para sa consensus, na kung hindi maayos na gagawin ay maaaring magdulot ng mga parusa offline o slashing. + + + +Oo. Ang bawat account ay binubuo ng mga BLS signing key at mga BLS withdrawal key. Upang magawa ng isang validator na patunayan ang kalagayan ng chain, lumahok sa mga sync committee at magmungkahi ng mga block, dapat maa-access kaagad ng validator client ang mga signing key. Dapat nakakonekta ang mga ito sa internet, at nang sa gayon ay maituturing na mga "hot" key. Isa itong kahingian para makapagpatunay ang iyong validator, kung kaya, pinaghihiwalay ang mga key na ginagamit para mag-transfer o mag-withdraw ng pondo para sa mga dahilang panseguridad. + +Ang mga BLS withdrawal key ay ginagamit upang mag-sign ng one-time na mensahe na nagtatakda kung saang execution layer account mapupunta ang mga staking reward at inilabas na pondo. Kapag na-broadcast na ang mensaheng ito, hindi na kailangan ang mga BLS withdrawal key. Sa halip, permanenteng itatalaga ang kontrol sa na-withdraw na pondo sa address na ibinigay mo. Binibigyang-daan ka nitong magtakda ng withdrawal address na naka-secure sa pamamagitan ng iyong sariling cold storage, na nagpapaliit sa posibilidad na manganib ang pondo ng iyong validator, kahit na may ibang nagkokontrol ng mga signing key ng iyong validator. + +Kailangang i-update ang mga kredensyal sa pag-withdraw para makapag-withdraw\*. Sa prosesong ito, gagawin ang mga withdrawal key gamit ang iyong mnemonic seed phrase. + +Tiyaking maingat mong iba-back up ang seed phrase na ito, kung hindi ay hindi mo magagawa ang iyong mga withdrawal key kapag kailangan na itong gawin. + +\*Hindi ito kailangang itakda ng mga staker na nagbigay ng withdrawal address na may inisyal na deposito. Magtanong sa iyong SaaS provider para sa suporta tungkol sa kung paano ihanda ang iyong validator. + + + +Inilunsad ang pag-withdraw sa staking sa Shanghai/Capella upgrade noong Abril 2023. Kailangang magbigay ng mga staker ng withdrawal address (kung hindi ito ibinigay sa inisyal na deposito), at awtomatikong sisimulang ipamahagi ang mga reward payment kada ilang araw. + +Puwede ring ganap na umalis ang mga validator bilang validator, na siyang mag-a-unlock ng natitirang nilang ETH balance para ma-withdraw. Matatanggap ng mga account na nagbigay ng execution withdrawal address at nakatapos ng proseso ng pag-alis ang kanilang buong balanse sa withdrawal address na ibinigay sa susunod na validator sweep. + +Iba pang detalye tungkol sa mga pag-withdraw sa staking + + + +Sa pamamagitan ng paggamit ng SaaS provider, ipinagkakatiwala mo ang operasyon ng node mo sa iba. May kaakibat itong panganib ng hindi magandang performance ng node, na hindi mo makokontrol. Kung ma-slash ang validator mo, papatawan ng parusa ang validator balance mo at puwersahang aalisin sa validator pool. + +Kapag natapos na ang proseso ng slashing/pag-alis, ita-transfer ang pondong ito sa withdrawal address na nakatalaga sa validator. Para ma-enable ito, kailangang magbigay ng withdrawal address. Maaaring naibigay na ito sa inisyal na deposito. Kung hindi, kakailanganing gamitin ang mga withdrawal key ng validator para mag-sign ng mensaheng nagdedeklara ng withdrawal address. Kung walang ibinigay na withdrawal address, hindi makukuha ang pondo hangga't hindi ito naibibigay. + +Makipag-ugnayan sa indibidwal na SaaS provider para sa iba pang detalye tungkol sa anumang guarantee o opsyon sa insurance, at para sa mga tagubilin sa kung paano magbigay ng withdrawal address. Kung gusto mong ikaw lang ang nagkokontrol ng iyong validator setup, magbasa pa tungkol sa kung paano i-solo stake ang iyong ETH. + + +## Karagdagang pagbabasa {#further-reading} + +- [Pagsusuri sa Mga Serbisyo sa Staking](https://www.attestant.io/posts/evaluating-staking-services/) - _Jim McDonald 2020_ diff --git a/src/content/translations/fil/staking/solo/index.md b/src/content/translations/fil/staking/solo/index.md new file mode 100644 index 00000000000..58bd53d5678 --- /dev/null +++ b/src/content/translations/fil/staking/solo/index.md @@ -0,0 +1,203 @@ +--- +title: I-solo stake ang iyong ETH +description: Pangkalahatang-ideya tungkol sa kung paano simulang i-solo stake ang iyong ETH +lang: fil +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-solo.png +alt: Ang rhino na si Leslie na nasa sarili niyang computer chip. +sidebarDepth: 2 +summaryPoints: + - Direktang makatanggap ng maximum rewards mula sa protocol para sa pagpapatakbo nang maayos sa iyong validator at pagpapanatili ritong online + - Patakbuhin ang home hardware at personal na magdagdag sa seguridad at decentralization ng Ethereum network + - Iwasang umasa sa iba, at huwag ibigay sa iba ang kontrol ng mga key sa pondo mo +--- + +## Ano ang solo staking? {#what-is-solo-staking} + +Ang solo staking ay tumutukoy sa [pagpapatakbo ng Ethereum node](/run-a-node/) na nakakonekta sa internet at pagdedeposito ng 32 ETH para mag-activate ng [validator](#faq), na nagbibigay sa iyo ng kakayahang direktang lumahok sa network consensus. + +**Pinapaigting ng solo staking ang decentralization ng Ethereum network**, kung kaya, mas naiiwasan ng Ethereum ang censorship at nalalabanan nito ang mga atake. Maaaring hindi makatulong sa network ang ibang paraan ng staking sa ganitong paraan. Ang solo staking ang pinakamainam na opsyon para sa pag-secure ng Ethereum. + +Ang isang Ethereum node ay binubuo ng execution layer (EL) client at consensus layer (CL) client. Ang mga client na ito ay mga software na nagtutulungan, kasama ang valid na set ng mga signing key, upang mag-verify ng mga transaksyon at mga block, patunayan ang tamang head ng chain, mag-aggregate ng mga attestation, at magmungkahi ng mga block. + +Ang mga solo staker ay responsable sa pagpapatakbo ng hardware na kinakailangan upang patakbuhin ang mga client na ito. Lubos na inirerekomendang gumamit ng nakalaang machine para dito na pinapatakbo mo sa tahanan–makakabuti ito para sa kalagayan ng network. + +Tinatanggap ng solo staker ang mga reward nang direkta mula sa protocol para sa maayos na pagpapatakbo sa kanyang validator at pagpapanatili ritong online. + +## Bakit dapat mag-solo stake? {#why-stake-solo} + +Sa solo staking, mas malaki ang responsibilidad mo pero makokontrol mo nang husto ang pondo at staking setup mo. + + + + + + + +## Mga dapat isaalang-alang bago mag-solo staking {#considerations-before-staking-solo} + +Kahit na gusto nating maging accessible at walang panganib ang solo staking para sa lahat, hindi ito makatotohanan. May ilang praktikal at seryosong bagay na dapat isaalang-alang bago piliing i-solo stake ang iyong ETH. + + + +Kapag pinapatakbo mo ang sarili mong node, dapat kang maglaan ng oras para alamin kung paano gamitin ang napili mong software. Kasama dito ang pagbabasa ng mga kaugnay na dokumentasyon at pagiging updated sa mga komunikasyon ng mga dev team. + +Kung mas nauunawaan mo ang software na iyong pinapatakbo at kung paano gumagana ang patunay ng stake, mas maliit ang panganib bilang staker, at mas madaling ayusin ang anumang problema na maaari mong kaharapin kalaunan bilang operator ng node. + + + +Kapag nagse-set up ng node, kailangang kumportableng gumamit ng mga computer, bagama't pinapadali ito ng mga bagong tool sa paglipas ng panahon. Makakatulong kung nauunawaan ang command-line interface, pero hindi na ito lubos na kinakailangan. + +Ito rin ay nangangailangan ng napaka-basic na hardware setup, at pag-unawa sa minimum na inirerekomendang specs. + + + +Tulad kung paano sine-secure ng mga pribadong key ang iyong Ethereum address, kakailanganin mong gumawa ng mga key na para mismo sa iyong validator. Dapat mong maunawaan kung paano panatilihing ligtas at secure ang anumang seed phrase o pribadong key.{' '} + +Seguridad at pag-iwas sa scam ng Ethereum + + + +May mga pagkakataon na papalya ang hardware, magkakaroon ng error sa mga koneksyon sa network, at may mga pagkakataong kakailanganing i-upgrade ang software ng client. Ang pangangalaga sa node ay hindi maiiwasan at kakailanganin mo itong bigyan ng pansin paminsan-minsan. Kakailanganin mong tiyaking magiging updated ka sa anumang inaasahang upgrade sa network, o iba pang mahahalagang pag-upgrade sa client. + + + +Ang iyong mga reward ay nakabatay sa oras na online ang iyong validator at maayos ang pag-attest. Magpapataw ng penalty para sa downtime na nakabatay sa bilang ng iba pang validator na offline sa parehong panahon, ngunit hindi ito magreresulta sa slashing. Ang bandwidth ay mahalaga rin, dahil nababawasan ang mga reward para sa mga attestation na hindi natatanggap sa tamang oras. Mag-iiba-iba ang mga kahingian, pero inirerekomenda ang hindi bababa sa 10 Mb/s na up at down. + + + +Naiiba sa mga penalty sa kawalan ng aktibidad na ipapataw dahil sa pagiging offline, ang slashing ay isang mas matinding penalty na ipinapataw para sa mga mapaminsalang pagkilos. Sa pamamagitan ng pagpapatakbo ng isang minority client nang naka-load ang iyong mga key sa iisang machine lang sa bawat pagkakataon, lumiliit ang panganib na makaranas ka ng slashing. Sa kabila nito, dapat alam ng lahat ng staker ang mga panganib ng slashing. + + Iba pang detalye tungkol sa slashing at validator lifecycle + + + + + +## Paano ito gumagana {#how-it-works} + + + +Habang aktibo ka, magkakaroon ka ng mga ETH reward, na ide-deposito paminsan-minsan sa iyong withdrawal address. + +Kung gusto mo, maaari kang umalis bilang validator, kung kaya, hindi mo na kailangang maging online at hindi mo na matatanggap ang anupamang reward. Ang iyong natitirang balanse ay iwi-withdraw sa withdrawal address na itatalaga mo sa panahon ng pag-set up. + +[Iba pang detalye tungkol sa mga pag-withdraw sa staking](/staking/withdrawals/) + +## Magsimula sa Staking Launchpad {#get-started-on-the-staking-launchpad} + +Ang Staking Launchpad ay isang open source na application na tutulong sa iyong maging staker. Gagabayan ka nito sa pagpili ng iyong mga client, paggawa ng mga key mo at pagdedeposito ng ETH mo sa staking deposit contract. May checklist na ibinibigay upang tiyakin na nagawa mo ang lahat para ligtas na ma-set up ang iyong validator. + + + +## Ano ang dapat isaalang-alang sa mga tool para sa node at client setup {#node-tool-considerations} + +Dumarami ang mga tool at serbisyo na tutulong sa iyong i-solo stake ang ETH mo, pero may iba't ibang panganib at benepisyo ang bawat isa sa mga ito. + +Ang mga attribute indicator ay ginagamit sa ibaba upang ipahiwatig ang mga kapansin-pansing kalakasan o kahinaan ng isang nakalistang staking tool. Gamitin ang seksyong ito bilang sanggunian sa kung paano namin tinutukoy ang mga attribute na ito habang pumipili ka ng mga tool na tutulong sa iyong staking journey. + + + +## Tingnan ang mga tool para sa pag-set up ng node at client {#node-and-client-tools} + +May iba't ibang opsyon na available upang tulungan ka sa iyong setup. Gamitin ang mga indicator sa itaas para magabayan ka sa mga tool sa ibaba. + + + +#### Mga tool para sa node + + + +Tandaan ang kahalagahan ng pagpili ng [minority client](/developers/docs/nodes-and-clients/client-diversity/) dahil pinapaigting nito ang seguridad ng network, at nililimitahan nito ang iyong panganib. Ang mga tool na nagbibigay-daan sa iyong mag-set up ng minority client ay tinutukoy bilang "multi-client." + +#### Mga Generator ng Key + +Ang mga tool na ito ay maaaring gamitin bilang alternatibo sa [Staking Deposit CLI](https://github.com/ethereum/staking-deposit-cli/) upang tumulong sa paggawa ng key. + + + +May mungkahi para sa staking tool na hindi namin nabanggit? Tingnan ang aming [patakaran sa product listing](/contributing/adding-staking-products/) para malaman kung ito ay angkop, at isumite ito para masuri. + +## Tingnan ang mga gabay sa solo staking {#staking-guides} + + + +## Mga karaniwang itanong {#faq} + +Ilan ito sa mga pinakakaraniwang tanong tungkol sa staking na mahalagang malaman. + + + +Ang validator ay isang virtual entity sa Ethereum at nakikilahok sa consensus ng Ethereum protocol. Ang mga validator ay kinakatawan ng isang balanse, pampublikong key, at iba pang property. Ang validator client ang software na kumikilos para sa validator sa pamamagitan ng pangangasiwa at paggamit sa pribadong key nito. Maaaring mangasiwa ang isang validator client ng maraming pares ng key, na nagkokontrol ng maraming validator. + + + + +Ang bawat key-pair na nauugnay sa isang validator ay nangangailangan ng eksaktong 32 ETH para ma-activate. Ang pagdedeposito ng mas maraming ETH sa isang set ng mga key ay hindi nagpapalaki sa posibildad na makakuha ng mga reward, dahil limitado ang bawat validator sa epektibong balanse na 32 ETH. Ibig sabihin nito, isinasagawa ang staking nang kada 32 ETH, kung saan may sariling set ng mga key at balanse ang bawat isa. + +Huwag magdeposito ng mahigit 32 ETH para sa isang validator. Hindi nito mapaparami ang iyong mga reward. Kung mayroon nang itinakdang withdrawal address para sa validator, ang sobrang pondo na higit sa 32 ETH ay awtomatikong iwi-withdraw sa address na ito sa susunod na validator sweep. + +Kung masyadong matrabaho para sa iyo ang solo staking, pag-isipang gumamit ng staking-as-a-service provider, o kung wala ka pang 32 ETH, tingnan ang mga staking pool. + + + +Ang pagiging offline kapag maayos na nagfa-finalize ang network ay HINDI magreresulta sa slashing. Magkakaroon ng maliliit na penalty para sa kawalan ng aktibidad kung ang iyong validator ay hindi available na magpatunay para sa isang partikular na epoch (tumatagal nang 6.4 minuto ang bawat isa), ngunit labis itong naiiba sa slashing. Ang mga penalty na ito ay bahagyang mas kaunti kaysa sa reward na maaari mo sanang makuha kung available para magpatunay ang validator, at mababawi ang mga pagkalugi sa pamamagitan ng halos katumbas na panahon ng pagiging online ulit. + +Tandaan na ang mga penalty para sa kawalan ng aktibidad ay nakabatay sa bilang ng mga validator na offline sa parehong panahon. Sa mga sitwasyon kung saan sabay-sabay na offline ang malaking bahagi ng network, mas malaki ang ipapataw na penalty para sa bawat isa sa mga validator na ito kumpara kung isang validator lang ang hindi available. + +Sa mga sukdulang sitwasyon, kung hihinto sa pag-finalize ang network dahil offline ang mahigit sa isang-katlo ng mga validator, mapeperhuwisyo ang mga user ng quadratic inactivity leak, na labis na pagkaubos ng ETH mula sa mga offline na validator account. Binibigyang-daan nito ang network na ayusin ang sarili nito sa pamamagitan ng paggamit ng ETH ng mga hindi aktibong validator hanggang sa maging 16 ETH ang kanilang balanse, at sa puntong iyon, awtomatiko silang aalisin sa validator pool. Kalaunan, mapupunan ulit ng mga natitirang online na validator ang 2/3 ng network, na siyang sasapat sa supermajority na kinakailangan para maisapinal ulit ang chain. + + + +Sa madaling salita, hindi ito ganap na masisigurado, ngunit kung kikilos ka nang walang masamang hangarin, magpapatakbo ka ng minority client at papanatilihin mo lang ang mga signing key mo sa isang machine sa bawat pagkakataon, halos zero ang tsansang masa-slash ka. + +Mayroon lang ilang partikular na paraan na maaaring magresulta sa pag-slash ng validator at pag-eject nito sa network. Habang isinusulat ito, ang mga slashing na nangyari ay produkto lang ng mga redundant na hardware setup kung saan sino-store ang mga signing key sa dalawang magkahiwalay na machine sa bawat pagkakataon. Ito ay maaaring hindi sinasadyang magresulta sa isang double vote mula sa iyong mga keys, na isang slashable offense. + +Ang pagpapatakbo ng isang supermajority client (anumang client na ginagamit ng mahigit 2/3 ng network) ay nagdadala rin ng panganib ng potensyal na pag-slash kung sakaling may bug ang client na ito na nagreresulta sa chain fork. Ito ay maaaring magdulot ng depektibong fork na maisasapinal. Upang maibalik sa tamang chain, kinakailangang magsumite ng surround vote sa pamamagitan ng pagsusumikap na bawiin ang isang naisapinal na block. Ito rin ay isang slashable offense at maaari itong maiwasan sa pamamagitan ng pagpapatakbo na lang ng isang minority client. + +Ang mga katumbas na bug sa isang minority client ay hindi kailanman maisasapinal at hindi kailanman magreresulta sa isang surround vote, at magdudulot lang ng mga penalty para sa kawalan ng aktibidad, hindi sa slashing. + + + + + +Maaaring medyo magkakaiba ang performance at user interface ng mga indibidwal na client, dahil ginawa ang bawat isa sa mga ito ng iba't ibang team gamit ang iba't ibang programming language. Gayunpaman, wala sa mga ito ang "pinakamahusay." Ang lahat ng production client ay magagandang uri ng software na nagsasagawa ng mga pangunahing function na mag-sync at mag-interact sa blockchain. + +Dahil ibinibigay ng lahat ng production client ang parehong basic functionality, napakahalaga na pumili ka ng minority client, ibig sabihin, anumang client na HINDI kasalukuyang ginagamit ng karamihan sa mga validator sa network. Maaaring hindi ito rasonable, pero ang pagpapatakbo ng majority o supermajority client ay maglalagay sa iyo sa mas malaking panganib ng slashing kung sakaling magkaroon ng bug sa client na iyon. Labis na nililimitahan ng pagpapatakbo ng minority client ang mga panganib na ito. + +Magbasa pa tungkol sa kung bakit mahalaga ang client diversity + + + +Bagama't maaaring gumamit ng virtual private server (VPS) bilang pamalit sa home hardware, ang pisikal na access at lokasyon ng iyong validator client ay mahalaga. Sa tulong ng mga centralized cloud solution tulad ng Amazon Web Services o Digital Ocean, hindi na kailangang kumuha at magpatakbo ng hardware, ngunit ang kapalit nito ay pag-centralize sa network. + +Kapag mas maraming validator client ang tumatakbo sa isang centralized cloud storage solution, mas magiging mapanganib ito para sa mga user na ito. Kapag nagkaroon ng anumang event na magpapa-offline sa mga provider na ito, isa mang atake, mga panregulatoryong demand, o simpleng pagkawala ng kuryente/internet, sabay-sabay na mag-o-offline ang bawat validator client na umaasa sa server na ito. + +Ang mga penalty sa pagiging offline ay nakabatay sa bilang ng iba pang provider na offline sa parehong panahon. Kapag gumamit ng VPS, mas mapapalaki ang panganib na mas magiging matindi ang ipapataw na penalty sa pagiging offline, at mapapalaki nito ang posibilidad na makaranas ka ng quadratic leaking o slashing kung sakaling maging masyadong malaki ang outage. Upang mapaliit ang panganib para sa iyo at sa network, lubos na hinihikayat ang mga user na kumuha at magpatakbo ng sarili nilang hardware. + + + + +Ang anumang uri ng withdrawal mula sa Beacon Chain ay nangangailangan ng pagtatakda ng mga kredensyal sa pag-withdraw. + +Itinatakda ito ng mga bagong staker sa panahon ng paggawa ng key at deposito. Puwedeng i-upgrade ng mga kasalukuyang staker na hindi pa nakapag-set nito ang kanilang mga key para masuportahan ang functionality na ito. + +Kapag naitakda na ang mga kredensyal sa pag-withdraw, ang mga reward payment (nalikom na ETH matapos ang unang 32) ay pana-panahong awtomatikong ipapamahagi sa withdrawal address. + +Upang ma-unlock at maibalik ang iyong buong balanse, dapat mo ring tapusin ang proseso ng pag-aalis ng iyong validator. + +Iba pang detalye tungkol sa mga pag-withdraw sa staking + + +## Karagdagang pagbabasa {#further-reading} + +- [Ang Problema ng Ethereum sa Client Diversity](https://hackernoon.com/ethereums-client-diversity-problem) - _@emmanuelawosika 2022_ +- [Pagtulong sa Client Diversity](https://www.attestant.io/posts/helping-client-diversity/) - _Jim McDonald 2022_ +- [Client diversity sa consensus layer ng Ethereum](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) - _jmcook.eth 2022_ +- [Paano Dapat Gawin: Bumili ng Hardware para sa Ethereum Validator](https://www.youtube.com/watch?v=C2wwu1IlhDc) - _EthStaker 2022_ +- [Step by Step: Paano sumali sa Ethereum 2.0 Testnet](https://kb.beaconcha.in/guides/tutorial-eth2-multiclient) - _Butta_ +- [Mga Tip para sa Pag-iwas sa Slashing sa Eth2](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50) - _Raul Jordan 2020_ diff --git a/src/content/translations/fil/staking/withdrawals/index.md b/src/content/translations/fil/staking/withdrawals/index.md new file mode 100644 index 00000000000..af141e048f0 --- /dev/null +++ b/src/content/translations/fil/staking/withdrawals/index.md @@ -0,0 +1,218 @@ +--- +title: Mga pag-withdraw ng stake +description: Page na nagbubuod sa kung ano ang mga pag-push withdraw sa staking, paano ito gumagana, at kung ano ang dapat gawin ng mga staker para makuha ang mga reward nila +lang: fil +template: staking +image: ../../../../../assets/staking/leslie-withdrawal.png +alt: Ang rhino na si Leslie kasama ng mga natanggap niyang reward mula sa staking +sidebarDepth: 2 +summaryPoints: + - Binigyang-daan ng Shanghai/Capella upgrade ang mga pag-withdraw sa staking sa Ethereum + - Upang magamit ang serbisyo, kinakailangan ng mga operator ng validator na magbigay ng withdrawal address + - Ang mga reward ay awtomatikong ipinapamahagi kada ilang araw + - Matatanggap ng mga validator na ganap na aalis sa staking ang kanilang natitirang balanse +--- + + +Ang pag-withdraw sa staking ay in-enable kasabay ng Shanghai/Capella ugrade na naganap noong Abril 12, 2023. Iba pang detalye tungkol sa Shanghai/Capella + + +Ang **mga pag-withdraw sa staking** ay tumutukoy sa mga pag-transfer ng ETH mula sa validator account na nasa consensus layer ng Ethereum (ang Beacon Chain), papunta sa execution layer kung saan ito magagamit sa mga transaksyon. + +Ang **mga reward payment para sa sobrang balanse** na mahigit 32 ETH ay awtomatiko at regular na ipapadala sa withdrawal address na naka-link sa bawat validator, kapag ibinigay na ito ng user. Ang mga user ay puwede ring **ganap na umalis sa staking**, na nagbubukas ng kanilang buong balanse bilang validator. + +## Mga reward mula sa staking {#staking-rewards} + +Ang mga reward payment ay awtomatikong ipinoproseso para sa mga aktibong validator account na may maxed out na effective balance na 32 ETH. + +Ang anumang balanse na mahigit 32 ETH na nakamit sa pamamagitan ng mga reward ay hindi talaga nagdadagdag sa pangunahing balanse, o hindi nagpapataas ng weight ng validator sa network, kaya, awtomatiko itong iwi-withdraw bilang reward payment kada ilang araw. Maliban sa pagbibigay ng withdrawal address isang beses, hindi kinakailangan ng anumang aksyon mula sa operator ng validator para sa mga reward na ito. Ito ay nagsisimula sa consensus layer, kung kaya, walang gas (bayarin sa transaksyon) na kinakailangan sa kahit anong hakbang. + +### Paano tayo nakarating dito? {#how-did-we-get-here} + +Sa mga nakaraang taon, ang Ethereum ay sumailalim sa ilang pag-upgrade sa network at nag-transition sa network na pinoprotektahan ng ETH mismo, sa halip ng energy-intensive mining tulad ng dati. Ang paglahok sa consensus sa Ethereum ay kinikilala na ngayon bilang "staking", dahil ang mga kalahok ay boluntaryong naglalagay ng kanilang ETH sa isang "stake" upang magkaroon ng kakayahan na makilahok sa network. Ang mga user na sumusunod sa mga panuntunan ay mabibigyan ng gantimpala, habang ang mga magtatangkang mandaya ay maaaring parusahan. + +Mula nang ilunsad ang staking deposit contract noong Nobyembre 2020, boluntaryong naglagay ang ilang matapang na nanguna sa Ethereum ng mga pondo upang i-activate ang "mga validator", na mga espesyal na account na may karapatang pormal na patunayan ang at magmungkahi ng mga block, alinsunod sa mga panuntunan ng network. + +Bago ang Shanghai/Capella upgrade, hindi mo magamit o ma-access ang iyong staked ETH. Ngunit ngayon, maaari mong piliin awtomatikong matanggap ang iyong mga reward sa isang piling account, at mawi-withdraw mo rin ang iyong staked ETH kung kailan mo gusto. + +### Paano ako maghahanda? {#how-do-i-prepare} + + + +### Mahahalagang paunawa {#important-notices} + +Ang pagbibigay ng withdrawal address ay isang kinakailangang hakbang para sa anumang validator account bago ito maging eligible na mag-withdraw ng ETH mula sa balanse nito. + + + Ang bawat validator account ay maaari lang magkaroon ng isang withdrawal address, nang isang beses lang. Kapag nakapili na ng address at naisumite na ito sa consensus layer, hindi na ito maaaring bawiin o baguhin ulit. I-double check ang pagmamay-ari at katumpakan ng address na ibinigay bago ito isumite. + + +Sa ngayon, walang banta sa pondo mo kung hindi mo ito ibibigay, basta't nananatiling ligtas offline ang iyong mnemonic/seed phrase, at hindi ito nakompromiso sa anumang paraan. Kung hindi maipapakita ang mga kredensyal sa pag-withdraw, hindi makukuha ang ETH sa validator account hangga't hindi nagbibigay ng withdrawal address. + +## Ganap na pag-alis sa staking {#exiting-staking-entirely} + +Kailangang magbigay ng withdrawal address bago ma-transfer ang _anumang_ pondo mula sa balanse ng validator account. + +Ang mga user na nagnanais na ganap na umalis sa staking at i-withdraw ang kanilang buong balanse ay kinakailangan ding mag-sign at mag-broadcast ng mensahe ng "boluntaryong pag-alis" gamit ang mga key ng validator para masimulan ang proseso ng pag-alis sa staking. Ito ay ginagawa gamit ang iyong validator client at isinusumite sa iyong consensus node, at hindi nangangailangan ng gas. + +Ang proseso ng pag-alis ng isang validator sa staking ay gumugugol ng iba't ibang oras, depende sa kung ilan pang validator ang umaalis sa parehong panahon. Kapag tapos na, ang account na ito ay hindi na magiging responsable sa pagganap ng mga tungkulin sa validator network, hindi na eligibile para sa mga reward, at hindi na rin nagse-"stake" ng kanilang ETH. Sa oras na ito, ang account ay ituturing na ganap nang "withdrawable". + +Kapag ang isang account ay na-flag na bilang "withdrawable", at nagbigay na ng mga kredensyal sa pag-withdraw, wala nang kailangang gawin ang user kundi maghintay. Ang mga account ay awtomatiko at tuloy-tuloy na isi-sweep ng mga block proposer para sa mga eligible na exited fund, at ita-transfer ang buong balanse ng iyong account (kilala rin bilang "full withdrawal") sa susunod na sweep. + +## Kailan pinapagana ang mga pag-withdraw sa staking? {#when} + +Live na ang mga pag-withdraw sa staking! Ang functionality ng pag-withdraw ay in-enable bilang bahagi ng Shanghai/Capella upgrade na naganap noong Abril 12, 2023. + +Ang Shanghai/Capella upgrade ang nagbigay-daan para maibalik ang staked ETH sa mga regular na Ethereum account. Sinubaybayan nito ang pag-stake ng liquidity, at inilapit nito ang Ethereum sa layunin nitong bumuo ng sustainable, scalable, at secure na decentralized ecosystem. + +- [Iba pang detalye tungkol sa kasaysayan ng Ethereum](/history/) +- [Iba pang detalye tungkol sa roadmap ng Ethereum](/roadmap/) + +## Paano gumagana ang mga withdrawal payment? {#how-do-withdrawals-work} + +Ang pagiging eligible ng isang partikular na validator para sa pag-withdraw ay tinutukoy sa pamamagitan ng kalagayan mismo ng validator account. Hindi kailangan ng anumang user input anumang oras upang matukoy kung dapat magsimula ng pag-withdraw ang account o hindi—ang buong proseso ay awtomatikong ginagawa ng consensus layer sa isang tuloy-tuloy na loop. + +### More of a visual learner? {#visual-learner} + +Tingnan ang paliwanag ng Finematics tungkol sa mga pag-withdraw sa staking ng Ethereum: + + + +### "Pag-sweep" ng validator {#validator-sweeping} + +Kapag nakaiskedyul ang isang validator na magmungkahi ng susunod na block, kailangan nitong gumawa ng withdrawal queue ng hanggang 16 na eligible withdrawal. Ito ay ginagawa sa pamamagitan ng pagsisimula sa validator index 0, pagtukoy kung may eligible withdrawal para sa account na ito batay sa mga panuntunan ng protocol, at pagdadagdag nito sa queue kung mayroon man. Ang validator na nakatakda na mag-propose ng susunod na bloke ay magpapatuloy kung saan iniwan ng huling bloke, at magpapatuloy ito nang sunod-sunod ng walang katapusan. + + +Para lang itong analog na orasan. Itinuturo ng kamay sa orasan ang oras, umuusad ito sa isang direksyon, wala itong nilalaktawang anumang oras, at sa huli ay bumabalik ito sa simula kapag naabot na nito ang huling numero.

    +Ngayon, sa halip na 1 hanggang 12, isipin na may 0 hanggang N (ang kabuuang bilang ng mga validator account na nairehistro sa consensus layer, na mahigit 500,000 mula noong Enero 2023).

    +Ituturo ng kamay sa orasan ang susunod na validator na kailangang tingnan kung may mga eligible withdrawal. Nagsisimula ito sa, at umuusad paikot nang hindi nilalaktawan ang anumang account. Kapag naabot na ang huling validator, babalik ang sa simula ang cycle. +
    + +#### Pagtingin kung may mga withdrawal ang account {#checking-an-account-for-withdrawals} + +Habang sini-sweep ng isang proposer ang mga validator para sa mga posibleng withdrawal, inihahambing ang bawat sinusuring validator sa maikling serye ng mga tanong para tukuyin kung dapat mag-trigger ng withdrawal, at kung oo, kung gaano karaming ETH ang dapat i-withdraw. + +1. **Mayroon bang ibinigay na withdrawal address?** Kung wala pang withdrawal address na ibinigay, lalaktawan ang account at hindi magsisimula ng anumang withdrawal. +2. **Inalis at mawi-withdraw ba ang validator?** Kung ganap nang inalis ang validator, at naabot na natin ang epoch kung saan maituturing nang "mawi-withdraw" ang kanilang account, magpoproseso ng full withdrawal. Ita-transfer nito ang buong natitirang balanse sa withdrawal address. +3. **Umabot na ba sa 32 ang effective balance?** Kung ang account ay may mga kredensyal sa pag-withdraw, hindi pa ganap na naiaalis, at may nakatenggang mga reward na mahigit 32, magpoproseso ng isang partial withdrawal na nagta-transfer lang ng mga reward na mahigit 32 sa withdrawal address ng user. + +May dalawang aksyon lang na ginagawa ng mga validator operator sa buong life cycle ng isang validator na direktang nakakaapekto sa flow na ito: + +- Magbigay ng mga kredensyal sa pag-withdraw upang ma-enable ang anumang uri ng withdrawal +- Umalis sa network, na magti-trigger ng full withdrawal + +### Walang gas {#gas-free} + +Sa estratehiyang ito sa mga pag-withdraw sa staking, hindi hinihiling sa mga staker na manual na magsumite ng transaksyon na nagpapa-withdraw ng partikular na dami ng ETH. Ibig sabihin nito, **hindi kailangan ng gas (bayarin sa transaksyon)**, at hindi rin nakikipag-agawan ang mga withdrawal para sa kasalukuyang execution layer block space. + +### Gaano kadalas kong matatanggap ang aking mga staking reward? {#how-soon} + +Maaaring magproseso ng hanggang 16 na withdrawal sa isang block. Sa bilis na 'yon, puwedeng magproseso ng 115,200 validator withdrawal kada araw (kung walang nilaktawang slot). Tulad ng nabanggit sa itaas, lalaktawan ang mga validator na walang eligible na withdrawal, na magpapabilis sa pagtatapos ng sweep. + +Kapag pinalawak ang kalkulasyong ito, matatantya natin ang oras na kakailanganin upang magproseso ng partikular na bilang ng mga withdrawal: + + + +| Bilang ng mga withdrawal | Tagal bago makumpleto | +| :----------------------: | :-------------------: | +| 400,000 | 3.5 araw | +| 500,000 | 4.3 araw | +| 600,000 | 5.2 araw | +| 700,000 | 6.1 araw | +| 800,000 | 7.0 araw | + + + +Tulad ng nakikita mo, babagal ito habang dumarami ang mga validator sa network. Kapag dumami ang mga nilaktawang slot, babagal ito nang husto, pero karaniwan nitong kakatawanin ang mas mabagal na posibleng resulta. + +## Mga karaniwang itanong {#faq} + + +Hindi, ang proseso ng pagbibigay ng mga kredensyal sa pag-withdraw ay one-time process, at hindi na maaaring baguhin kapag naisumite na. + + + +Sa pamamagitan ng pagtatakda ng withdrawal address ng execution layer, permanente nang nabago ang mga kredensyal sa pag-withdraw ng validator na iyon. Ito ay nangangahulugan na hindi na gagana ang mga lumang kredensyal, at sa execution layer account didirekta ang mga bagong kredensyal. + +Ang mga withdrawal address ay maaaring maging smart contract (kontrolado ng code nito), o externally owned account (EOA, kontrolado ng pribadong key nito). Sa kasalukuyan, ang mga account na ito ay walang paraan para magpadala ng mensahe pabalik sa consensus layer na magpapahiwatig ng pagbabago sa mga kredensyal ng validator, at magiging kumplikado ang protocol kahit hindi naman dapat kapag idinagdag ang functionality na ito. + +Bilang alternatibo sa pagbabago ng withdrawal address para sa partikular na validator, maaaring piliin ng mga user na magtakda ng isang smart contract bilang kanilang withdrawal address na maaaring pangasiwaan ang pag-rotate ng key, tulad ng Safe. Ang mga user na nagtatakda ng kanilang pondo sa kanilang sariling EOA ay maaaring magsagawa ng ganap na pag-alis para i-withdraw ang lahat ng kanilang na-stake na pondo, at pagkatapos ay mag-stake ulit gamit ang mga bagong kredensyal. + + + + +Kung bahagi ka ng isang staking pool o may hawak kang mga staking token, dapat kang magtanong sa iyong provider ng iba pang detalye tungkol sa kung paano pinapangasiwaan ang mga pag-withdraw sa staking, dahil magkakaiba ang paraan ng pangangasiwa ng bawat serbisyo. + +Sa pangkalahatan, dapat malaya ang mga user na kunin ang kasalukuyan nilang staked ETH, o magpalit ng staking provider na ginagamit nila. Kung masyado nang nagiging malaki ang isang partikular na pool, puwedeng alisin, i-redeem, at i-stake ulit ang pondo sa mas maliit na provider. O, kung nakalikom ka na ng sapat na ETH, maaari kang mag-stake mula sa bahay. + + + + +Oo, basta't may ibinigay na withdrawal address ang iyong validator. Dapat itong ibigay nang isang beses para inisyal na ma-enable ang anumang withdrawal, pagkatapos ay awtomatikong mati-trigger kada ilang araw ang mga reward payment sa bawat validator sweep. + + + + +Hindi, kung ang iyong validator ay aktibo pa sa network, hindi magaganap nang awtomatiko ang full withdrawal. Para mangyari ito, kailangang manual na magsimula ng boluntaryong pag-alis. + +Kapag natapos na ng validator ang proseso ng pag-alis, at kung may mga kredensyal sa pag-withdraw ang account, ang natitirang balanse ay saka iwi-withdraw sa susunod na validator sweep. + + + + +Ang mga withdrawal ay idinisenyo upang awtomatikong maiproseso, at ililipat nito ang anumang ETH na hindi aktibong nagko-contribute sa stake. Kasama dito ang mga kumpletong balanse para sa mga account na natapos na ang proseso ng pag-alis. + +Hindi posibleng manual na hilingin ang partikular na halaga ng ETH na iwi-withdraw. + + + + +Inirerekomenda sa mga operator ng validator na bisitahin ang page na Mga Pag-withdraw sa Staking sa Launchpad kung saan ka makakakita ng iba pang detalye tungkol sa kung paano ihanda ang iyong validator para sa mga withdrawal. pagiging handa, timing ng mga event, at iba pang detalye tungkol sa kung paano gumagana ang mga withdrawal. + +Upang subukan muna ang iyong setup sa isang testnet, bisitahin ang Goerli Testnet Staking Launchpad para magsimula. + + + + +Hindi. Kapag umalis na ang isang validator at na-wtihdraw na ang kumpletong balanse nito, awtomatikong ita-transfer ang anumang karagdagang pondong idineposito sa validator na iyon sa withdrawal address sa susunod na validator sweep. Upang mag-stake ulit ng ETH, kailangang mag-activate ng bagong validator. + + +## Karagdagang pagbabasa {#further-reading} + +- [Mga Pag-withdraw sa Staking sa Launchpad](https://launchpad.ethereum.org/withdrawals) +- [EIP-4895: Mga Beacon chain push withdrawal bilang mga operasyon](https://eips.ethereum.org/EIPS/eip-4895) +- [Ethereum Cat Herders - Shanghai](https://www.ethereumcatherders.com/shanghai_upgrade/index.html) +- [PEEPanEIP #94: Pag-withdraw sa Staked ETH (Testing) kasama sina Potuz at Hsiao-Wei Wang](https://www.youtube.com/watch?v=G8UstwmGtyE) +- [PEEPanEIP#68: EIP-4895: Mga Beacon chain push withdrawal bilang mga operasyon kasama si Alex Stokes](https://www.youtube.com/watch?v=CcL9RJBljUs) +- [Pag-unawa sa Validator Effective Balance](https://www.attestant.io/posts/understanding-validator-effective-balance/) diff --git a/src/content/translations/fil/web3/index.md b/src/content/translations/fil/web3/index.md new file mode 100644 index 00000000000..a4bdd808cbf --- /dev/null +++ b/src/content/translations/fil/web3/index.md @@ -0,0 +1,161 @@ +--- +title: Ano ang Web3 at bakit ito mahalaga? +description: Isang panimula sa Web3—ang susunod na pag-unlad ng World Wide Web—at kung bakit ito mahalaga. +lang: fil +--- + +# Panimula sa Web3 {#introduction} + +Nakatulong ang centralization upang bilyon-bilyong tao ang maging pamilyar sa World Wide Web at ginawa nito ang stable at mahusay na infrastructure kung nasaan ito ngayon. Kasabay nito, hawak ng ilang centralized entity ang malaking bahagi ng World Wide Web, na unilateral na nagpapasya sa kung ano dapat at hindi dapat pahintulutan. + +Web3 ang sagot sa suliraning ito. Sa halip na malalaking technology company lang ang nagpapatakbo sa Web, ginagamit ng Web3 ang decentralization, at binubuo, pinapatakbo, at pagmamay-ari ito ng mga user nito. Inilalagay ng Web3 ang kapangyarihan sa kamay ng mga tao kaysa sa mga kumpanya. Bago natin pagusapan ang Web3, alamin muna natin kung paano tayo nakarating dito. + + + +## Ang pagsisimula ng Web {#early-internet} + +Para sa maraming tao, ang Web ay hindi nagbabagong bahagi ng modernong buhay—na ito ay inimbento at patuloy na lang na ginagamit. Subalit ang Web na alam natin ngayon ay ibang iba sa orihinal na konsepto nito. Upang maunawaan natin ito, makatutulong na paghiwalayin ang maikling kasaysayan ng Web base sa pagsulong nito—Web 1.0 at Web 2.0. + +### Web 1.0: Read-Only (1990-2004) {#web1} + +Noong 1989, sa CERN sa Geneva, abala si Tim Berners-Lee sa paggawa ng mga protocol na magiging World Wide Web. Ang kanyang ideya? Ang gumawa ng bukas at decentralized na protocol kung saan maaaring magbahagi ng impormasyon nasaan ka man sa mundo. + +Ang kauna-unahang likha ni Berner-Lee na ngayon ay tinatawag na 'Web 1.0' ay tinatayang nag-umpisa sa pagitan ng 1990 hanggang 2004. Ang Web 1.0 ay halos puro mga static na website na pagmamay-ari ng mga kumpanya, at halos walang interaction sa pagitan ng mga user nito — bihirang gumawa ng content ang mga indibidwal — kung kaya, tinawag itong Read-Only Web. + +![Client-server architecture, na kumakatawan sa Web 1.0](./web1.png) + +### Web 2.0: Read-Write (2004-kasalukuyan) {#web2} + +Ang Web 2.0 ay nagsimula noong 2004 kasabay ng pag-usbong ng social media platform. Sa halip na read-only, naging read-write ang web. Sa halip na nagbibigay ang mga kumpanya ng content sa mga user, nagsimula rin silang magbigay ng mga platform para magbahagi ng user-generated content at mag-interact ang mga user. Habang dumarami ang taong online, may iilang kumpanya ang nagsimulang kontrolin ang masyadong lumalaking trapiko at halagang nabuo sa Web. Sa Web 2.0 din nagsimula ang revenue model na batay sa advertising. Bagama't nakakagawa ng content ang mga user, hindi nila ito pagmamay-ari o napagkakakitaan. + +![Client-server architecture, na kumakatawan sa Web 2.0](./web2.png) + + + +## Web 3.0: Read-Write-Own {#web3} + +Ang ideya ng 'Web 3.0' ay nagmula sa co-founder ng [Ethereum](/what-is-ethereum/) co-na si Gavin Wood matapos ilunsad ang Ethereum noong 2014. Isinakataga ni Gavin ang solusyon sa problema ng mga naunang pumasok sa crypto: masyado malaking tiwala ang hinihingi sa Web. Ibig sabihin nito, ang malaking bahagi ng Web na alam at ginagamit ng mga tao ngayon ay umaasang kikilos ang ilang pribadong kumpanya nang isinasaalang-alang ang kapakanan ng publiko. + +![Decentralized node architecture, na kumakatawan sa Web3](./web3.png) + +### Ano ang Web3? {#what-is-web3} + +Web3 ang naging katawagan sa pananaw ng makabago at mas maayos na internet. Ang Web3 ay gumagamit ng mga blockchain, cryptocurrency, at NFT upang ibigay sa mga user nito ang kapangyarihan sa pamamagitan ng pagmamay-ari. Ipinaliwanag ito nang mabuti sa [isang post sa Twitter noong 2020](https://twitter.com/himgajria/status/1266415636789334016): read-only ang Web1, read-write ang Web2, at magiging read-write-own ang Web 3. + +#### Mga pangunahing ideya ng Web3 {#core-ideas} + +Bagama't mahirap magbigay ng kongkretong pagpapakahulugan ng Web3, may ilang pangunahing prinsipyo na gumagabay sa pagkakabuo nito. + +- **Decentralized ang Web3:** sa halip na kontrolin ng malalaking kumpanya ang malaking bahagi ng internet, ang pagmamay-ari ay ipinapamahagi sa mga builder at user nito. +- **Hindi kailangan ng pahintulot ang Web3:** pantay na makakalahok ang lahat sa Web3, at walang hindi maisasama. +- **May native na pagbabayad ang Web3:** gumagamit ito ng cryptocurrency para sa paggastos at pagpapadala ng pera online sa halip na umasa sa makalumang infrastructure ng mga bangko at tagaproseso ng pagbabayad. +- **Trustless ang Web3:** pinapatakbo ito gamit ang mga incentive at ekonomikong mekanismo sa halip na umasa sa mga pinagkakatiwalaang third party. + +### Bakit mahalaga ang Web3? {#why-is-web3-important} + +Bagama't hindi lang sa Web3 matatagpuan ang mga kakaibang feature nito, at hindi nailalagay ang mga ito sa mga partikular na kategorya, sinubukan naming isa-isahin ang mga ito upang maging mas madaling maunawaan. + +#### Pagmamay-ari {#ownership} + +Ibinibigay ng Web3 sa iyo ang pagmamay-ari ng ng iyong mga digital asset sa kakaibang paraan. Halimbawa, sabihin nating naglalaro ka ng isang web2 na laro. Kapag bumili ka ng in-game item, direkta itong nauugnay sa iyong account. Kung ide-delete ng mga game creator ang account mo, mawawala ang mga item na ito. O kaya naman, kung huminto ka sa paglalaro, mawawala ang halaga na in-invest mo sa iyong mga in-game item. + +Pinapayagan ng Web3 ang pagmamay-ari sa pamamagitan ng [mga non-fungible token (NFTs)](/nft/). Walang sinuman, kahit ang mga game creator, ang may kapangyarihang bawiin ang iyong pagmamay-ari. At, kung hihinto ka sa paglalaro, maaari mong ibenta o i-trade ang iyong mga in-game item sa mga open market at mabawi ang iyong ipinuhunan. + + +
    Magbasa pa tungkol sa NFTs
    + + Iba pang detalye tungkol sa NFTs + +
    + +#### Paglaban sa censorship {#censorship-resistance} + +Ang power dynamic sa pagitan ng mga platform at content creator ay lubhang hindi balanse. + +Ang OnlyFans ay user-generated na adult content site na may mahigit 1 milyong content creator, at marami sa mga ito ang gumagamit ng platform bilang kanilang pangunahing pagkakakitaan. Noong Agosto 2021, inanunsyo ng OnlyFans na pinaplano nitong ipagbawal ang sexually explicit content. Nagalit ang mga creator sa platform sa anunsyo, dahil pakiramdam nila ay hindi sila hinahayaang kumita sa platform na tumulong sila sa pagbuo. Matapos ang backlash, mabilis na binawi ang desisyon. Bagama't nanalo ang mga creator sa laban na ito, ipinapakita nito ang problema para sa mga creator sa Web 2.0: maglalaho ang reputation mo at mga follower mo kung aalis ka sa platform. + +Sa Web3, ang iyong data ay mananatili sa blockchain. Kapag nagpasya kang umalis sa platform, makukuha mo ang reputation mo at maililipat mo ito sa ibang interface na mas akma sa iyong mga pinapahalagahan. + +Sa Web2.0, kailangan ng mga content creator na magtiwalang hindi babaguhin ng mga platform ang mga panuntunan, pero native na feature ng Web3 platform ang paglaban sa censorship. + +#### Decentralized autonomous organizations (DAOs) {#daos} + +Bukod sa pagmamay-ari sa data sa Web3, maaari mo ring maging pagmamay-ari ang platform bilang collective, gamit ang mga token na nagsisilbing mga share sa isang kumpanya. Hinahayaan ka ng DAOs na magsaayos ng decentralized na pagmamay-ari sa isang platform at gumawa ng mga pasya tungkol sa hinaharap nito. + +Ang DAOs ay tinutukoy bilang mga agreed-upon smart contract na ino-automate ang decentralized na pagpapasya sa pool ng mga resource (mga token). Boboto ang mga user na may mga token sa kung paano gagamitin ang mga resource, at awtomatikong isasagawa ng code ang resulta ng botohan. + +Gayunpaman, itinuturing na DAOs ng mga tao ang maraming komunidad sa Web3. May iba't ibang antas ng decentralization at automation ayon sa code ang mga komunidad na ito. Kasalukuyan naming tinitingnan kung ano ang DAOs at kung paano maaaring magbago ang mga ito sa hinaharap. + + +
    Magkaroon ng higit pang kaalaman tungkol sa DAOs
    + + Iba pang kaalaman ukol sa DAOs + +
    + +### Identity {#identity} + +Karaniwan, gagawa ka ng account para sa bawat platform na gagamitin mo. Halimbawa, maaaring mayroon kang Twitter account, Youtube account, at Reddit account. Gustong palitan ang iyong display name o profile picture? Kailangan mo iyong gawin sa bawat account. Maaari ka ring gumamit ng mga social sign-in sa ilang sitwasyon, ngunit magpepresenta ito ng isang pamilyar na problema—censorship. Sa isang click lang, maaaring hindi na ipa-access sa iyo ng mga platform na ito ang iyong buong buhay online. Mas malala pa rito, hinihingi ng maraming plaform na ipagkatiwala mo sa kanila ang personally identifiable information para gumawa ng account. + +Nilulutas ng Web3 ang mga problemang ito sa pamamagitan ng pagbibigay sayo ng kontrol sa iyong digital identity gamit ang Ethereum address at ENS profile. Kapag gumamit ng Ethereum address, iisang login na lang ang gagamitin sa mga platform na secure, ligtas sa censorship, at anonymous. + + + Mag-sign in sa Ethereum + + +### Mga native na pagbabayad {#native-payments} + +Ang paraan ng pagbabayad sa Web2 ay nakasalalay sa mga bangko at iba pang payment processor, hindi pa kasama rito ang mga taong walang bank account o nakatira sa mahihigpit na bansa. Gumagamit ang Web3 ng mga token gaya ng [ETH](/eth/) upang direktang magpadala ng pera sa browser at hindi nito kailangan ng pinagkakatiwalaang third party. + + + Iba pang kaalaman ukol sa ETH + + +## Web3 limitations (Mga limitasyon ng Web3) {#web3-limitations} + +Sa kabila ng napakaraming benepisyo ng Web3 sa kasalukuyan, marami pa ring limitasyon na dapat tugunan ng ecosystem para lumago ito. + +### Accessibility {#accessibility} + +Ang mahahalagang feature ng Web3, gaya ng Mag-sign in sa Ethereum, ay magagamit na ng kahit sino nang libre. Ngunit ang nauugnay na gastos sa mga transaksyon ay napakamahal pa rin para sa nakararami. Maliit ang posibilidad na gamitin ang Web3 sa mga umuunlad at hindi mayaman na bansa dahil sa mahal na bayarin sa transaksyon. Sa Ethereum, nilulutas ang mga problemang ito sa pamamagitan ng [roadmap](/roadmap/) at [mga layer 2 scaling solution](/developers/docs/scaling/). Handa na ang teknolohiya, ngunit kailangang mas marami ang gumamit ng layer 2 para maging accessible ang Web3 sa lahat. + +### Karanasan ng user {#user-experience} + +Sa kasalukuyan, masyadong mataas na teknikal na kaalaman ang kailangan para magamit ang Web3. Kailangang maunawaan ng mga user ang mga alalahanin sa seguridad, maintindihan ang kumplikado at teknikal na dokumentasyon, at alamin ang pasikot-sikot sa mga user interface na hindi madaling gamitin. Ang [mga Wallet provider](/wallets/find-wallet/) ay nagsisikap na solusyonan ito, pero mas malaking progreso ang kailangan bago magamit ng nakararami ang Web3. + +### Education (Edukasyon) {#education} + +Nagdadagdag ang Web3 ng mga bagong model kung saan kailangang pag-aralan ang mga mental model na naiiba sa mga ginagamit sa Web2.0. Nagkaroon ng katulad na kampanya sa pagbibigay-kaalaman noong sumisikat ang Web1.0 sa huling bahagi ng 1990s. Gumamit ang mga tagapagtaguyod ng world wide web ng maraming diskarte sa pagbibigay-kaalaman para bigyang-kaalaman ang publiko, mula sa mga simpleng talinhaga (ang information highway, mga browser, pag-surf sa web) hanggang sa [mga television broadcast](https://www.youtube.com/watch?v=SzQLI7BxfYI). Hindi mahirap unawain ang Web3, ngunit naiiba ito. Ang mga inisyatiba sa pagbibigay-kaalaman sa mga user ng Web2 tungkol sa mga modelo ng Web3 ay mahalaga para maging matagumpay ito. + +Tumutulong ang Ethereum.org sa pagbibigay-kaalaman tungkol sa Web3 sa pamamagitan ng aming [Translation Program](/contributing/translation-program/), na may layuning isalin ang mahalagang Ethereum content sa lahat ng wikang makakaya. + +### Centralized infrastructure {#centralized-infrastructure} + +Ang Web3 ecosystem ay bago pa lang at mabilis itong nagbabago. Dahil dito, pangunahing nakasalalay ito ngayon sa mga centralized infrastructure (GitHub, Twitter, Discord, atbp.). Maraming kumpanya ng Web3 ang nag-uunahang punan ang mga pagkukulang na ito, ngunit maraming oras ang kailangang gugulin upang makagawa ng de-kalidad at maaasahang infrastructure. + +## Isang decentralized na hinaharap {#decentralized-future} + +Ang Web3 ay nagsisimula pa lang at patuloy na umuunlad. Inimbento ni Gavin Wood ang termino noong 2014, ngunit ang karamihan sa mga ideyang ito ay kamakailan lang naisakatuparan. Noong nakaraang taon lang, kapansin-pansing dumami ang mga taong nagkainteres sa cryptocurrency, mga pagpapahusay sa mga layer 2 scaling solution, at malalaking eksperimento sa mga bagong anyo ng pamumuno, at rebolusyon sa digital identity. + +Nasa simula pa lang tayo ng paggawa ng mas magandang Web sa tulong ng Web3, pero habang patuloy nating pinapahusay ang infrastructure na susuporta dito, maganda ang hinaharap ng Web. + +## Paano ako makakalahok {#get-involved} + +- [Gumawa ng wallet](/wallets/) +- [Maghanap ng komunidad](/community/) +- [Tingnan ang mga Web3 application](/dapps/) +- [Sumali sa DAO](/dao/) +- [Gumawa sa Web3](/developers/) + +## Karagdagang pagbabasa {#further-reading} + +Walang malinaw na pagpapakahulugan sa Web3. May iba't ibang pananaw dito ang iba't ibang kalahok ng komunidad. Narito ang iilan sa kanila: + +- [Ano ang Web3? Pagpapaliwanag sa Decentralized Internet ng Hinaharap](https://www.freecodecamp.org/news/what-is-web3/) – _Nader Dabit_ +- [Pag-unawa sa Web 3](https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae) – _Josh Stark_ +- [Bakit Mahalaga ang Web3](https://future.a16z.com/why-web3-matters/) — _Chris Dixon_ +- [Bakit Mahalaga ang Decentralization](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) - _Chris Dixon_ +- [Ang Web3 Landscape](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) – _a16z_ +- [Ang Debate tungkol sa Web3](https://www.notboring.co/p/the-web3-debate?s=r) – _Packy McCormick_ + + diff --git a/src/content/translations/fil/web3/web2.png b/src/content/translations/fil/web3/web2.png new file mode 100644 index 0000000000000000000000000000000000000000..4bdf9a2681f7d9cbe627de04aedd8e78006c1a94 GIT binary patch literal 140231 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∨#jC2s=P^w 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 *}q^Pr0SdO5|VNX0T?T|7g3s7lxp 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 literal 0 HcmV?d00001 diff --git a/src/content/translations/fil/zero-knowledge-proofs/index.md b/src/content/translations/fil/zero-knowledge-proofs/index.md new file mode 100644 index 00000000000..3b7edaeb8d2 --- /dev/null +++ b/src/content/translations/fil/zero-knowledge-proofs/index.md @@ -0,0 +1,212 @@ +--- +title: Zero-knowledge proofs +description: Isang hindi teknikal na panimula sa mga zero-knowledge proof para sa mga baguhan. +lang: fil +--- + +## 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. + +Ang mga zero-knowledge proof ay unang lumitaw sa isang artikulo noong 1985 na, “[ "Ang knowledge complexity ng mga interactive proof system](http://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Proof%20Systems/The_Knowledge_Complexity_Of_Interactive_Proof_Systems.pdf)” na nagbibigay ng pagpapakahulugan ng mga zero-knowledge proof na malawakang ginagamit ngayon: + +> Ang zero-knowledge protocol ay isang pamamaraan kung saan ang isang tao (ang prover) ay maaring magpatunay sa isa pang tao (ang verifier) na isang bagay ay totoo, nang hindi inilalantad ang anumang impormasyon maliban sa katotohanang totoo ang partikular na pahayag na ito. + +Ang mga zero-knowledge proof ay humusay sa paglipas ng mga taon at ginagamit na ngayon sa ilang sitwasyon sa totoong buhay. + +## Bakit natin kailangan ang mga zero-knowledge proof? {#why-zero-knowledge-proofs-are-important} + +Itinuring na pagsulong sa applied cryptography ang mga zero-knowledge proof, dahil ipinangako ng mga itong paigtingin ang seguridad ng impormasyon para sa mga indibidwal. Isipin kung paano mo mapapatunayan ang isang pahayag (hal., "Ako ay mamamayan ng bansang X") sa ibang partido (hal., isang service provider). Kakailanganin mong magbigay ng “patunay” upang suportahan ang iyong pahayag, tulad ng pambansang passport o lisensya sa pagmamaneho. + +Ngunit may mga problema sa paraang ito, lalo na pagdating sa kakulangan sa privacy. Ang Personal Identifiable Information (PII) na ibinabahagi sa mga third-party na serbisyo ay sino-store sa mga central database, na maaaring maging biktima ng mga hack. Dahil nagiging kritikal na isyu ang identity theft, may mga panawagan para sa mas maraming paraan ng pagprotekta sa privacy kapag ibinabahagi ang sensitibong impormasyon. + +Nilulutas ng mga zero-knowledge proof ang problemang ito sa pamamagitan ng pag-aalis ng pangangailangang maglantas ng impormasyon upang patunayan ang validity ng mga pahayag. Ginagamit ng zero-knowledge protocol ang statement (tinatawag na ‘witness’) bilang input upang gumawa ng maikling patunay ng validity nito. Lubusang iginagarantiya ng patunay na ito na totoo ang statement nang hindi ibinubunyag ang impormasyong ginamit para gawin ito. + +Kapag binalikan natin ang nauna nating halimabawa, ang tanging ebidensyang kailangan mo upang patunayan ang iyong pahayag ng pagkamamamayan ay isang zero-knowledge proof. Kailangan lang tingnan ng verifier kung totoo ang ilang partikular na property ng patunay para makumbinsing totoo rin ang pangunahing pahayag. + +## Paano gumagana ang mga zero-knowledge proof? {#how-do-zero-knowledge-proofs-work} + +Sa tulong ng zero-knowledge proof, mapapatunayan mo ang katotohanan ng isang statement nang hindi ibinabahagi ang nilalaman ng statement o ibinubunyag kung paano mo natuklasan ang katotohanan. Upang gawin itong posible, umaasa ang mga zero-knowledge protocol sa mga algorithm na kumukuha ng ilang data bilang input at nagbabalik ng ‘true’ o ‘false’ bilang output. + +Dapat matugunan ng isang zero-knowledge protocol ang sumusunod na pamantayan: + +1. **Pagiging kumpleto**: Kung valid ang input, palaging ‘true’ ang ibabalik ng zero-knowledge protocol. Kaya, kung totoo ang pangunahing pahayag, at matapat na kikilos ang prover at verifier, maaaring tanggapin ang patunay. + +2. **Katumpakan**: Kung hindi valid ang input, imposibleng malinlang ang zero-knowledge protocol na ‘true’ ang ibalik. Kaya, hindi mapapaniwala ng isang nagsisinungaling na prover ang isang matapat na verifier na valid ang hindi valid na statement (maliban na lang sa napakaliit na posibilidad). + +3. **Zero-knowledge**: Wala nang ibang malalaman ang verifier tungkol sa isang statement bukod sa pagiging valid o false nito (“zero knowledge” sila sa statement). Mapipigilan din ng kahingiang ito na i-derive ng verifier mula sa orihinal na input (ang nilalaman ng statement) mula sa patunay. + +Sa basic na anyo, ang isang zero-knowledge proof ay binubuo ng tatlong element: **witness**, **hamon**, at **tugon**. + +- **Witness**: Sa isang zero-knowledge proof, nais ng prover na patunayan ang kaalaman sa ilang nakatagong impormasyon. Ang lihim na impormasyon ang “witness” sa patunay, at ipinagpapalagay na kaalaman ng prover tungkol sa witness ay gumagawa ng isang hanay ng mga tanong na masasagot lang ng partidong nakakaalam ng impormasyon. Kung kaya, sinisimulan ng prover ang proseso ng pagpapatunay sa pamamagitan ng random na pagpili ng isang tanong, pagkalkula sa sagot, at pagpapadala nito sa verifier. + +- **Hamon**: Random na pipili ang verifier ng isa pang tanong mula sa hanay at hihilingin nito sa prover na sagutin ito. + +- **Tugon**: Tatanggapin ng prover ang tanong, kakalkulahin ang sagot, at ibabalik ito sa verifier. Ang tugon ng prover ay nagbibigay-daan sa verifier na alamin kung talagang may access ang prover sa witness. Upang tiyaking nanghuhula at sinusuwerte sa pamimili ng tamang sagot ang prover, pipili pa ng mga itatanong ang verifier. Sa pamamagitan ng pagpapaulit-ulit ng interaction na ito nang maraming beses, lumiliit ang posibilidad na pinepeke lang ng prover ang kaalaman niya tungkol sa witness hanggang sa masiyahan ang verifier. + +Inilalarawan sa itaas ang structure ng ‘interactive na zero-knowledge proof’. Gumamit ng interactive na pagpapatunay sa mga unang zero-knowledge protocol, kung saan nakikipag-ugnayan sa isa't isa ang mga prover at verifier para i-verify ang pagiging valid ng statement. + +Isang magandang halimbawa na nagpapakita kung paano gumagana ang mga interactive na proof ay ang sikat na [kuwento ni Ali Baba sa kuweba](https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave) na gawa ni Jean-Jacques Quisquater. Sa kuwento, gustong patunayan ni Peggy (ang prover) kay Victor (ang verifier) na alam niya ang secret phrase upang buksan ang mahiwagang pinto nang hindi ito sinasabi. + +### Mga hindi interactive na zero-knowledge proof {#non-interactive-zero-knowledge-proofs} + +Bagama't makabago, hindi palaging magagamit ang interactive na pagpapatunay dahil kailangang available at nag-i-interact nang paulit-ulit ang dalawang partido. Kahit na kumbinsido ang verifier sa katapatan ng prover, hindi magagamit para sa independent verification ang patunay (sa pag-compute ng bagong patunay, kailangan ng bagong set ng mga mensahe sa pagitan ng prover at verifier). + +Upang malutas ang problemang ito, iminungkahi nina Manuel Blum, Paul Feldman, at Silvio Micali ang unang [mga hindi interactive na zero-knowledge proof](https://dl.acm.org/doi/10.1145/62212.62222) kung saan may shared key ang prover at verifier. Binibigyang-daan nito ang prover na ipakita ang kanyang kaalaman sa ilang impormasyon (ibig sabihin, witness) nang hindi ibinibigay ang mismong impormasyon. + +Hindi tulad ng mga interactive na proof, isang round lang ng komunikasyon sa pagitan ng mga kalahok (prover at verifier) ang kailangan sa mga hindi interactive na proof. Ipinapasa ng prover ang lihim na impormasyon sa isang espesyal na algoritjm para mag-compute ng zero-knowledge proof. Ipinapadala ang patunay na ito sa verifier, na susuri kung alam ng prover ang lihim na impormasyon gamit ang ibang algorithm. + +Sa hindi interactive na proofing, nababawasan ang komunikasyon sa pagitan ng prover at verifier, kaya nagiging mas epektibo ang mga ZK-proof. Bukod pa rito, kapag nagawa na ang isang proof, mave-verify ito ng kahit sino (na may access sa shared key at verification algorithm). + +Itinuring na pagsulong sa zero-knowledge technology ang mga hindi interactive na proof at pinasigla nito ang pag-develop ng mga proving system na ginagamit ngayon. Pag-uusapan natin ang mga uri na ito ng proof sa ibaba: + +### Mga uri ng mga zero-knowledge proof {#types-of-zero-knowledge-proofs} + +#### ZK-SNARKs {#zk-snarks} + +Ang ZK-SNARK ay isang acronym para sa **Zero-Knowledge Succinct Non-Interactive Argument of Knowledge**. Ang protocol ng ZK-SNARK ay may mga sumusunod na katangian: + +- **Zero-knowledge**: Puwedeng i-validate ng verifier ang integridad ng statement nang hindi inaalam ang anupamang detalye tungkol sa statement. Ang alam lang ng verifier tungkol sa statement ay kung totoo ito o hindi. + +- **Succinct**: Ang zero-knowledge proof ay mas maliit kaysa sa witness at mabilis na mave-verify. + +- **Hindi interactive**: ‘Hindi interactive’ ang proof dahil minsanan lang mag-i-interact ang prover at verifier, hindi tulad ng mga interactive proof na nangangailangan ng maraming round ng komunikasyon. + +- **Argument**: Natutugunan ng proof ang kahingiang ‘katumpakan’, kaya napakaliit ng posibilidad na magkaroon ng pandaraya. + +- **(Of) Knowledge**: Ang zero-knowledge proof ay hindi magagawa nang walang access sa lihim na impormasyon (witness). Mahirap, kung hindi man imposible, para sa isang prover na hindi hawak ang witness na mag-compute ng valid na zero-knowledge proof. + +Ang ‘shared key’ na nabanggit kanina ay tumutukoy sa mga pampublikong parameter na napagkasunduan ng prover at verifier na gamitin sa pag-generate at pag-verify ng mga proof. Ang pag-generate ng mga pampublikong parameter (sama-samang tinatawag bilang Common Reference String (CRS)) ay isang sensitibong operasyon dahil sa kahalagahan nito sa seguridad ng protocol. Kung ang entropy (randomness) na ginamit sa pag-generate ng CRS ay mapupunta sa mga kamay ng isang hindi matapat na prover, puwede siyang mag-compute ng mga pekeng proof. + +Ang [Multi-party computation (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) ay isang paraan para mabawasan ang mga panganib sa pag-generate ng mga pampublikong parameter. Maraming partido ang nakikiisa sa isang [trusted setup ceremony](https://zkproof.org/2021/06/30/setup-ceremonies/amp/), kung saan nagko-contribute ang bawat tao ng mga random value para mag-generate ng CRS. Basta't sisirain ng isang matapat na partido ang bahagi nito ng entropy, mananatili ang computational soundness ng ZK-SNARK protocol. + +Sa mga trusted setup, hinihiling sa mga user na pagkatiwalaan ang mga kalahok sa pag-generate ng parameter. Gayunpaman, noong na-develop ang ZK-STARKs, nagkaroon na ng mga protocol sa pagpapatunay na gumagana sa non-trusted setup. + +#### ZK-STARKs {#zk-starks} + +Ang ZK-STARK ay isang acronym para sa **Zero-Knowledge Scalable Transparent Argument of Knowledge**. Ang ZK-STARKs ay katulad ng ZK-SNARKs, pero ang mga ito ay: + +- **Scalable**: Ang ZK-STARK ay mas mabilis kaysa sa ZK-SNARK sa pag-generate at pag-verify ng mga proof kapag mas malaki ang witness. Sa mga STARK proof, medyo tumatagal lang ang paggawa ng proof at pag-verify habang lumalaki ang witness (tumatagal ang paggawa ng proof at pag-verify habang lumalaki ang witness). + +- **Transparent**: Ang ZK-STARK ay umaasa sa publicly verifiable randomness upang mag-generate ng mga pampublikong parameter para sa pagpapatunay at pag-verify sa halip na isang trusted setup. Kung kaya, mas transparent ang mga ito kumpara sa ZK-SNARKs. + +Ang ZK-STARKs ay nagpo-produce ng mas malalaking proof kaysa sa ZK-SNARKs, ibig sabihin, karaniwang mas malalaki ang overhead ng mga ito para sa pag-verify. Gayunpaman, may mga pagkakataon (tulad ng pagpapatunay ng malalaking dataset) kung saan mas makakatipid sa ZK-STARKs kaysa sa ZK-SNARKs. + +## Mga use case para sa mga zero-knowledge proof {#use-cases-for-zero-knowledge-proofs} + +### Mga anonymous na pagbabayad {#anonymous-payments} + +Kadalasan, nakikita ng maraming partido ang mga pagbabayad gamit ang credit card, kasama na ang payments provider, mga bangko, at iba pang interesadong partido (hal., mga awtoridad ng pamahalaan). Bagama't makakatulong ang financial surveillance sa pagtukoy ng ilegal na aktibidad, inilalagay din nito sa panganib ang privacy ng mga ordinaryong mamamayan. + +Ang mga cryptocurrency ay ginawa para magbigay ng paraan para makapagsagawa ang mga user ng mga pribado at peer-to-peer na transaksyon. Ngunit hayagang nakikita sa mga pampublikong blockchain ang karamihan sa mga transaksyon ng cryptocurrency. Ang mga pagkakakilanlan ng user ay madalas na gumagamit ng mga pseudonym at sadyang naka-link ang mga ito sa mga tunay na pagkakakilanlan (hal., sa pamamagitan ng paglalagay ng mga ETH address sa Twitter o Github profile) o maiuugnay sa mga tunay na pagkakakilanlan gamit ang basic na pagsusuri sa on at off-chain data. + +May partikular na “mga privacy coin” na idinisenyo para maging ganap na anonymous ang mga transaksyon. Itinatago ng mga blockchains na nakatuon sa privacy, tulad ng Zcash at Monero, ang mga detalye ng transaksyon, kabilang ang mga address ng sender/receiver, uri ng asset, dami, at ang timeline ng transaksyon. + +Sa pamamagitan ng paglalagay ng zero-knowledge technology sa protocol, pinapayagan ng mga blockchain network na nakatuon sa privacy ang mga node na mag-validate ng mga transaksyon nang hindi kinakailangang ma-access ang data ng transaksyon. + +Ang mga zero-knowledge proof ay ginagamit din sa mga anonymizing na transaksyon sa mga pampublikong blockchain. Halimbawa nito ang Tornado Cash, na isang decentralized at non-custodial na serbisyong nagbibigay-daan sa mga user na magsagawa ng mga pribadong transaksyon sa Ethereum. Ang Tornado Cash ay gumagamit ng mga zero-knowledge proof upang i-obfuscate ang mga detalye ng transaksyon at tiyakin ang financial privacy. Sa kasamaang-palad, iniuugnay ang mga ito sa ilegal na aktibidad dahil mga "opt-in" na privacy tool ang mga ito. Upang malabanan ito, dapat maging default ang privacy sa mga pampublikong blockchain. + +### Proteksyon ng pagkakakilanlan {#identity-protection} + +Inilalagay ng mga kasalukuyang identity management system ang personal na impormasyon sa panganib. Ang mga zero-knowledge proof ay makakatulong sa mga indibidwal na mag-validate ng pagkakakilanlan habang pinoprotektahan ang mga sensitibong detalye. + +Ang mga zero-knowledge proof ay partikular na kapaki-pakinabang sa konteksto ng [decentralized identity](/decentralized-identity/). Binibigyan ng decentralized identity (na tinatawag din na 'self-sovereign identity') ang indibidwal ng kakayahang kontrolin ang access sa mga personal identifier. Ang pagpapatunay ng iyong pagkamamamayan nang hindi ipinapakita ang detalye ng iyong tax ID o pasaporte ay magandang halimbawa ng kung paano binibigyang-daan ng zero-knowledge technology ang decentralized identity. + +### Pag-authenticate {#authentication} + +Kapag gumagamit ng mga online na serbisyo, kailangan mong patunayan ang iyong pagkakakilanlan at karapatang i-access ang mga platform na iyon. Kadalasan, kailangan mong magbigay ng personal na impormasyon, tulad ng mga pangalan, email address, petsa ng kapanganakan, at iba pa. Maaaring kailanganin mo ring tandaan ang mahahabang password para hindi mawalan ng access. + +Gayunpaman, mapapasimple ng mga zero-knowledge proof ang pag-authenticate para sa mga platform at user. Kapag gumawa ng ZK-proof gamit ang mga pampublikong input (hal., data na nagpapatunay sa pagiging miyembro ng user sa plataporma) at mga pribadong input (hal., mga detalye ng user), puwedeng ipakita na lang ito ng user para i-authenticate ang kanyang pagkakakilanlan kapag kailangan nilang i-access ang serbisyo. Pinapaganda nito ang karanasan para sa mga user at dahil dito, hindi na kailangan ng mga organisasyon na mag-store ng napakaraming impormasyon ng user. + +### Nave-verify na computation {#verifiable-computation} + +Ang nave-verify na computation ay isa pang paggamit ng zero-knowledge technology para sa pagpapaganda ng mga disenyo ng blockchain. Binibigyang-daan tayo ng nave-verify na computing na ipaubaya ang computation sa ibang entity habang pinapanatiling nave-verify ang mga resulta. Isinisumite ng entity ang resulta kasama ng patunay na nagve-verify na isinagawa nang tama ang programa. + +Ang verifiable computation ay mahalaga sa pagpapabilis ng pagpoproseso sa mga blockchain nang hindi binabawasan ang seguridad. Para maunawaan ito, kailangang malaman ang mga pagkakaiba sa mga iminumungkahiing solution para sa pag-scale ng Ethereum. + +Sa [mga on-chain scaling solution](/developers/docs/scaling/#on-chain-scaling), gaya ng sharding, kailangang baguhin nang husto ang base layer ng blockchain. Gayunpaman, napakakumplikado ng paraang ito at maaaring makaapekto sa security model ng Ethereum ang mga pagkakamali sa pagpapatupad. + +Sa [mga off-chain scaling solution](/developers/docs/scaling/#off-chain-scaling), hindi kailangang ibahin ang disenyo ng core protocol ng Ethereum. Sa halip, umaasa ang mga ito sa isang outsourced computation model upang mapabuti ang throughput sa base layer ng Ethereum. + +Ganito ito gumagana sa totoong buhay: + +- Sa halip na i-proseso ang bawat transaksyon, inililipat ng Ethereum ang pag-execute sa isang hiwalay na chain. + +- Pagkatapos i-proseso ang mga transaksyon, ibinabalik ng kabilang chain ang mga resulta para mailapat sa state ng Ethereum. + +Ang kagandahan nito, walang pag-execute na kailangang gawin ang Ethereum at kailangan lang nitong ilapat ang mga resulta mula sa in-outsource na computation sa state nito. Iniiwasan nitong magkaroon ng congestion sa network at pinapabilis din nito ang mga transaksyon (ang mga off-chain protocol ay nag-o-optimize para sa mas mabilis na pag-execute). + +Ang chain ay nangangailangan ng paraan para mag-validate ng mga off-chain na transaksyon nang hindi ine-execute ulit ang mga ito, kung hindi ay mawawala ang halaga ng off-chain execution. + +Dito papasok ang nave-verify na computation. Kapag nag-execute ang isang node ng transaksyon sa labas ng Ethereum, nagsusumite ito ng zero-knowledge proof upang patunayang tama ang off-chain execution. Iginagarantiya ng patunay na ito (tinatawag na [validity proof](/glossary/#validity-proof)) na valid ang isang transaksyon, kaya mailalapat ng Ethereum ang resulta sa state nito—nang hindi naghihintay na may mag-dispute nito. + +Ang [mga zero-knowledge rollup](/developers/docs/scaling/zk-rollups) at [validium](/developers/docs/scaling/validium/) ay dalawang off-chain scaling solution na gumagamit ng mga validity proof upang magbigay ng secure na scalability. Ang mga protocol na ito ay nag-e-execute ng libo-libong transaksyon off-chain at nagsusumite ng mga patunay para ma-verify sa Ethereum. Maaaring ilapat kaagad ang mga resultang iyon kapag na-verify na ang patunay, kaya makakapagproseso ang Ethereum ng mas maraming transaksyon nang hindi dinadagdagan ang computation sa base layer. + +### Pagpigil sa panunuhol at pagsasabwatan sa on-chain voting {#secure-blockchain-voting} + +Maraming magagandang katangian ang mga blockchain voting scheme: ganap na mao-audit, secure laban sa mga atake, matibay laban sa censorship, at walang heograpikal na limitasyon ang mga ito. Pero may nangyayari pa ring **pagsasabwatan** sa mga on-chain voting scheme. + +Ang pagsasabwatan, na tinutukoy bilang “pag-uusap upang limitahan ang bukas na kompetisyon sa pamamagitan ng panlilinlang, pandaraya, at panloloko ng iba,” ay maaaring mapansin sa isang mapanlinlang na actor na nakakaapekto sa botohan sa pamamagitan ng pag-aalok ng suhol. Halimbawa, maaaring makatanggap si Alice ng suhol mula kay Bob upang iboto ang `opsyon B` sa isang balota kahit na mas gusto niya ang `opsyon A`. + +Nililimitahan ng panunuhol at pagsasabwatan ang pagiging epektibo ng anumang prosesong gumagamit ng botohan bilang signaling mechanism (lalo na kung maipapakita ng mga user kung paano sila bumoto). Maaari itong magkaroon ng matitinding epekto, lalo na kung ang mga boto ay para sa paglalaan ng mga limitadong resource. + +Halimbawa, ang [mga quadratic funding mechanism](https://www.radicalxchange.org/concepts/plural-funding/) ay umaasa sa mga donasyon upang sukatin ang pinipili sa ilang partikular na opsyon sa iba't ibang public goods project. Ang bawat donasyon ay ibinibilang bilang isang "boto" para sa isang partikular na proyekto, at ang mga proyektong makakatanggap ng mas maraming boto ay makakakuha ng mas maraming pondo mula sa matching pool. + +Sa paggamit ng on-chain voting, madaling magsabwatan sa quadratic funding: pampubliko ang mga blockchain transaction, kaya matitingnan ng mga nanunuhol ang on-chain activity ng sinusuhulan para alamin kung paano sila “bumoto”. Sa ganitong paraan, hindi nagiging epektibong paraan ang quadratic funding para sa pag-allocate ng mga pondo batay sa pinagsama-samang kagustuhan ng komunidad. + +Sa kabutihang-palad, ang mga mas bagong solution tulad ng MACI (Minimum Anti-Collusion Infrastructure) ay gumagamit ng mga zero-knowledge proof upang gawing matibay laban sa panunuhol at pagsasabwatan ang on-chain voting (hal., mga quadratic funding mechanism). Ang MACI ay isang hanay ng mga smart contract at mga script na nagpapahintulot sa isang central administrator (tinatawag na "coordinator") na pagsama-samahin ang mga boto at itala ang mga resulta nang _hindi_ inilalantad ang mga detalye sa pagboto ng bawat indibidwal. Kahit ganito, maaari pa ring i-verify na wasto ang pagbibilang ng mga boto, o kumpirmahing bumoto ang isang partikular na indibidwal sa botohan. + +#### Paano gumagana ang MACI kasama ng mga zero-knowledge proof? {#how-maci-works-with-zk-proofs} + +Sa simula, dine-deploy ng coordinator ang MACI contract sa Ethereum, at pagkatapos nito, makakapag-sign up ang mga user upang makaboto (sa pamamagitan ng pagrerehistro ng kanilang pampublikong key sa smart contract). Bumoboto ang mga user sa pamamagitan ng pagpapadala ng mensaheng na-encrypt ng kanilang pampublikong key sa smart contract (dapat na-sign ang valid na boto ng pinakabagong pampublikong key na nauugnay sa identity ng user, at may iba pang pamantayan). Pagkatapos nito, ipinoproseso ng coordinator ang lahat ng mensahe kapag natapos na ang panahon ng pagboto, itinatala niya ang mga boto, at vine-verify niya ang mga resulta on-chain. + +Sa MACI, ginagamit ang mga zero-knowledge proof para tiyaking tama ang computation, kaya hindi magagawa ng coordinator na magkamali sa pagpoproseso ng mga boto at pagtatala ng mga resulta. Naisasagawa ito sa pamamagitan ng paghiling sa coordinator na mag-generate ng mga ZK-SNARK proof na nagve-verify na a) naiproseso nang tama ang lahat ng mensahe b) naaayon ang pinal na resulta sa kabuuang bilang ng lahat ng _valid_ na boto. + +Kung gayon, kahit walang ibinabahaging breakdwon ng mga boto kada user (na karaniwang nangyayari), iginagarantiya ng MACI ang integridad ng mga resultang kinalkula habang itinatala ang mga ito. Ang feature na ito ay nakakatulong para hindi maging epektibo ang mga basic scheme ng pagsasabwatan. Maaari natin itong suriin sa pamamagitan ng paggamit ng naunang halimbawa tungkol sa panunuhol ni Bob kay Alice para iboto ang partikular na opsyon: + +- Si Alice ay nagparehistro para bumoto sa pamamagitan ng pagpapadala ng kanyang pampublikong key sa isang smart contract. +- Si Alice ay pumayag na iboto ang `opsyon B` kapalit ng suhol mula kay Bob. +- Ibinoto ni Alice ang `opsyon B`. +- Palihim na nagpadala si Alice ng encrypted na transaksyon para palitan ang pampublikong key na nauugnay sa identity niya. +- Nagpadala si Alice ng isa pang (encrypted) na mensahe sa smart contract na bumoboto sa `opsyon A` gamit ang bagong pampublikong key. +- Ipinakita ni Alice kay Bob ang transaksyon kung saan `opsyon B` ang ibinoto niya (na hindi valid dahil hindi na nauugnay ang pampublikong key sa identity ni Alice sa system) +- Habang ipinoproseso ang mga mensahe, nilaktawan ng coordinator ang boto ni Alice para sa `opsyon B` at ang boto para sa `opsyon A` lang ang ibinilang niya. Samakatuwid, hindi matagumpay ang pagtatangka ni Bob na makipagsabwatan kay Alice at manipulahin ang on-chain vote. + +Sa paggamit ng MACI, _talagang_ kailangang magtiwala na hindi makikipagsabwatan sa mga manunuhol ang coordinator o hindi niya susubukang suhulan ang mga botante. Maaaring i-decrypt ng coordinator ang mga mensahe ng user (kinakailangan para sa paggawa ng proof), kaya tumpak niyang mave-verify kung paano bumoto ang bawat tao. + +Ngunit kung mananatiling matapat ang coordinator, ang MACI ay isang mahusay na tool para sa pagtitiyak ng kalinisan ng on-chain na pagboto. Ito ang dahilan sa likod ng kasikatan nito sa mga quadratic funding application (hal., [clr.fund](https://clr.fund/#/about/maci)) na umaasa nang husto sa integridad ng pagboto ng bawat indibidwal. + +[Magbasa pa tungkol sa MACI](https://github.com/privacy-scaling-explorations/maci/blob/master/specs/01_introduction.md). + +## Mga problema sa paggamit ng mga zero-knowledge proof {#drawbacks-of-using-zero-knowledge-proofs} + +### Gastos sa hardware {#hardware-costs} + +Kapag gumagawa ng mga zero-knowledge proof, kailangan ng mga napakakumplikadong kalkulasyon na pinakamainam na isinasagawa sa mga specialized machine. Dahil mahal ang mga machine na ito, madalas na hindi ito kayang bilhin ng mga regular na indibidwal. Dagdag pa rito, dapat isaalang-alang ng mga application na gustong gumamit ng zero-knowledge technology ang mga gastos sa hardware—na maaaring magpalaki ng gastusin ng mga end user. + +### Gastos sa pag-verify sa proof {#proof-verification-costs} + +Ang pag-verify ng mga proof ay nangangailangan din ng kumplikadong computation at nagpapalaki ng gastos sa pagpapatupad ng zero-knowledge technology sa mga application. Ang gastos na ito ay partikular na may kaugnayan sa pagpapatunay ng computation. Halimbawa, ang mga ZK-rollup ay nagbabayad ng ~ 500,000 gas para sa pag-verify ng iisang ZK-SNARK proof sa Ethereum, at mas mahal pang bayarin ang kailangan para sa ZK-STARKs. + +### Mga trust assumption {#trust-assumptions} + +Sa ZK-SNARK, ang Common Reference String (mga pampublikong parameter) ay ginagawa nang isang beses at maaaring gamitin ulit ng mga partidong nais sumali sa zero-knowledge protocol. Ang mga pampublikong parameter ay ginagawa sa pamamagitan ng isang trusted setup ceremony, kung saan inaasahang magiging matapat ang mga kalahok. + +Subalit wala talagang paraan para masukat ng mga user ang katapatan ng mga kalahok at kailangang pagkatiwalaan ng mga user ang sinasabi ng mga developer. Walang trust assumption ang ZK-STARKs dahil hayagang mave-verify ang randomness na ginamit sa paggawa sa string. Samantala, pinagsusumikapan ng mga mananaliksik ang mga non-trusted setup para sa ZK-SNARKs upang mapaigting ang seguridad ng ng mga mekanismo ng pagpapatunay. + +### Mga panganib ng quantum computing {#quantum-computing-threats} + +Ang ZK-SNARK ay gumagamit ng elliptic curve cryptography ([ECDSA](/glossary/#ecdsa)) para sa pag-encrypt. Bagama't secure sa ngayon ang ECDSA algorithm, maaaring sirain ng pagkakabuo ng mga quantum computer ang security model nito sa hinaharap. + +Ang ZK-STARK ay itinuturing na hindi apektado ng banta ng quantum computing, dahil gumagamit ito ng mga collision-resistant hash para sa pag-encrypt. Kumpara sa mga pares ng pampublikong key at pribadong key na ginagamit sa elliptic curve cryptography, mas mahihirapan ang mga quantum computing algorithm na pasukin ang collision-resistant hashing. + +## Karagdagang pagbabasa {#further-reading} + +- [Ipapaliwanag ng Isang Computer Scientist ang Isang Konsepto sa 5 Antas ng Kahirapan | WIRED](https://www.youtube.com/watch?v=fOGdb1CTu5c) - _Channel sa YouTube ng Wired_ +- [Pangkalahatang-ideya ng mga use case para sa mga zero-knowledge proof](https://appliedzkp.org/#Projects) — _Privacy and Scaling Explorations Team_ +- [SNARKs vs. STARKS vs. Recursive SNARKs](https://www.alchemy.com/overviews/snarks-vs-starks) — _Mga Pangkalahatang-ideya ng Alchemy_ +- [Isang Zero-Knowledge Proof: Pagpapahusay ng Privacy sa Blockchain](https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/) — _Dmitry Lavrenov_ +- [zk-SNARKs — Isang Makatotohanang Halimbawa at Malalimang Pagsusuri ng Zero-Knowledge](https://medium.com/coinmonks/zk-snarks-a-realistic-zero-knowledge-example-and-deep-dive-c5e6eaa7131c) — _Adam Luciano_ +- [ZK-STARKs — Gumawa ng Nave-verify na Trust, kahit laban sa mga Quantum Computer](https://medium.com/coinmonks/zk-starks-create-verifiable-trust-even-against-quantum-computers-dd9c6a2bb13d) — _Adam Luciano_ +- [Isang panimula sa pagiging posible ng zk-SNARKs](https://vitalik.ca/general/2021/01/26/snarks.html) — _Vitalik Buterin_ +- [Ano ang Zero-Knowledge Proof at ang Papel Nito sa Blockchain?](https://www.leewayhertz.com/zero-knowledge-proof-and-blockchain/) — _LeewayHertz_ diff --git a/src/content/translations/fr/defi/index.md b/src/content/translations/fr/defi/index.md index dfdff024a12..6183aa6d7cd 100644 --- a/src/content/translations/fr/defi/index.md +++ b/src/content/translations/fr/defi/index.md @@ -12,7 +12,7 @@ summaryPoint2: Des produits qui vous permettent d'emprunter, d'épargner, d'inve summaryPoint3: Basé sur une technologie open-source avec laquelle n'importe qui peut programmer. --- -DeFi est un système financier ouvert et mondial conçu pour l'ère de l'internet - une alternative à un système opaque, contrôlé rigoureusement et maintenu ensemble par des infrastructures et des processus vieux de plusieurs décennies. Il vous donne le contrôle et la visibilité de votre argent. Il vous offre une exposition aux marchés mondiaux et des alternatives à vos options bancaires ou monétaires locales. Les produits DeFi ouvrent des services financiers à toute personne disposant d'une connexion Internet et ils sont en grande partie la propriété de leurs utilisateurs. Jusqu'à présent, des dizaines de milliards de dollars de cryptomonnaies ont coulé à travers des applications DeFi et ils se développent chaque jour. +La DeFi est un système financier ouvert et mondial conçu pour l'ère de l'internet - une alternative à un système opaque, contrôlé rigoureusement et maintenu par des infrastructures et des processus vieux de plusieurs décennies. Il vous donne le contrôle et la visibilité de votre argent. Il vous offre une exposition aux marchés mondiaux et des alternatives à vos options bancaires ou monétaires locales. Les produits DeFi ouvrent des services financiers à toute personne disposant d'une connexion Internet et ils sont en grande partie la propriété de leurs utilisateurs. Jusqu'à présent, des dizaines de milliards de dollars de cryptomonnaies ont coulé à travers des applications DeFi et ils se développent chaque jour. ## Qu'est-ce que la DeFi ? {#what-is-defi} @@ -31,7 +31,7 @@ L'une des meilleures façons de voir le potentiel de la DeFi est de comprendre l - Les services financiers peuvent vous empêcher d'être payé. - Des frais cachés de services financiers sont vos données personnelles. - Les gouvernements et les institutions centralisées peuvent fermer les marchés à volonté. -- Les heures de trading sont souvent limitées aux heures d'ouverture d'un fuseau horaire spécifique. +- Les heures de trading sont souvent limitées aux heures de bureau sur un fuseau horaire spécifique. - Les transferts d'argent peuvent prendre des jours en raison de processus humains internes. - Il y a une prime pour les services financiers parce que les institutions intermédiaires ont besoin de leur part. @@ -233,7 +233,7 @@ Avec le trading centralisé, vous devez déposer vos actifs avant les échanges Il existe des outils de gestion de fonds sur Ethereum qui vous permettront de développer votre portefeuille en vous appuyant sur la stratégie de votre choix. C'est automatique, ouvert à tous, et personne ne pourra vous demander de commission. -Voilà un bon exemple [DeFi Pulse Index fund (DPI)](https://defipulse.com/blog/defi-pulse-index/). C'est un fond qui se rééquilibre automatiquement pour garantir qu'il inclue toujours [les meilleurs DeFi tokens par capitalisation boursière](https://www.coingecko.com/en/defi). Pas besoin de gérer les détails et vous pouvez retirer les fonds quand bon vous semble. +Voilà un bon exemple [DeFi Pulse Index fund (DPI)](https://defipulse.com/blog/defi-pulse-index/). C'est un fond qui se rééquilibre automatiquement pour garantir qu'il inclue toujours [les jetons DeFi ayant la meilleure capitalisation boursière](https://www.coingecko.com/en/defi). Pas besoin de gérer les détails et vous pouvez retirer les fonds quand bon vous semble. Voir les applications d'investissement dapps @@ -274,7 +274,7 @@ Cela veut dire qu'un projet A avec ses 100 donneurs de 1 dollar pourrait finir a L'assurance décentralisée vise à rendre l'assurance moins chère, plus rapide à rembourser et plus transparente. Avec davantage d'automatisation, la protection est plus abordable et les paiements sont beaucoup plus rapides. Les données utilisées pour décider de votre réclamation sont complètement transparentes. -Les produits Ethereum, comme n'importe quel logiciel, peuvent souffrir de bugs et d'exploits. Actuellement, de nombreux produits d'assurance dans l'espace sont axés sur la protection de leurs utilisateurs contre la perte de fonds. Cependant, il y a des projets qui commencent à construire une couverture pour tout ce que la vie peut nous donner. Un bon exemple de ceci est la couverture Etherisc's Crop qui vise à [protéger les petits agriculteurs kényans contre les sécheresses et les inondations](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc). Les assurances décentralisées peuvent offrir une couverture moins chère aux agriculteurs qui n'ont souvent pas les moyens d'accéder aux assurances traditionnelles. +Les produits Ethereum, comme n'importe quel logiciel, peuvent souffrir de bugs et d'exploits. Actuellement, de nombreux produits d'assurance dans l'espace sont axés sur la protection de leurs utilisateurs contre la perte de fonds. Cependant, il y a des projets qui commencent à construire une couverture pour tous les événements de la vie. Un bon exemple de ceci est la couverture Etherisc's Crop qui vise à [protéger les petits agriculteurs kényans contre les sécheresses et les inondations](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc). Les assurances décentralisées peuvent offrir une couverture moins chère aux agriculteurs qui n'ont souvent pas les moyens d'accéder aux assurances traditionnelles. Voir les assurances Dapps @@ -338,7 +338,7 @@ DeFi est un mouvement open source. Les protocoles et applications DeFi sont ouve ### Articles DeFi {#defi-articles} -- [Guide de la DeFi pour débutants](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) - _Sid Coelho-Prabhu, 6 janvier 2020_ +- [Un guide de la DeFi pour débutants](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) - _Sid Coelho-Prabhu, 6 janvier 2020_ ### Vidéos {#videos} diff --git a/src/content/translations/fr/desci/index.md b/src/content/translations/fr/desci/index.md index 81e434e76ab..8414305d690 100644 --- a/src/content/translations/fr/desci/index.md +++ b/src/content/translations/fr/desci/index.md @@ -110,6 +110,7 @@ Explorer les projets et rejoindre la communauté DeSci. - [Active Inference Lab](https://www.activeinference.org/) - [CureDAO : plateforme de santé de précision détenue par une communauté](https://docs.curedao.org/) - [IdeaMarkets : pour une crédibilité scientifique décentralisée renforcée](https://ideamarket.io/) +- [DeSci Labs](https://www.desci.com/) Nous accueillons volontiers les suggestions de nouveaux projets à répertorier - veuillez consulter notre [politique d'inscription](/contributing/adding-desci-projects/) pour commencer ! diff --git a/src/content/translations/fr/developers/docs/accounts/index.md b/src/content/translations/fr/developers/docs/accounts/index.md index 28ae15e42e3..63337bf63d9 100644 --- a/src/content/translations/fr/developers/docs/accounts/index.md +++ b/src/content/translations/fr/developers/docs/accounts/index.md @@ -8,7 +8,7 @@ Un compte Ethereum est une entité avec un solde en ether (ETH) qui peut réalis ## Prérequis {#prerequisites} -Les comptes sont un sujet très accessible pour les débutants, Pour vous aider à mieux comprendre cette page, nous vous recommandons de commencer par lire notre [introduction à Ethereum](/developers/docs/intro-to-ethereum/). +Pour vous aider à mieux comprendre cette page, nous vous recommandons de commencer par lire notre [introduction à Ethereum](/developers/docs/intro-to-ethereum/). ## Types de comptes {#types-of-account} @@ -42,7 +42,7 @@ Les deux types de comptes peuvent : Les comptes Ethereum comportent quatre champs : -- `nonce` – Compteur qui indique le nombre de transactions envoyées depuis le compte. Cela garantit que les transactions ne sont traitées qu'une seule fois. Dans un compte de contrat, ce nombre représente le nombre de contrats créés par ce compte +- `nonce` - Il s'agit soit d'un code indiquant le nombre de transactions envoyées à partir d'une adresse émettrice, soit du nombre de contrats créés auxquels vous pouvez avoir accès par le biais de la page dédiée aux contrats et aux adresses Ethereum (Account). Chaque adresse Ethereum (Account) peut être utilisée uniquement à chaque transaction en choisissant un nonce associé au bloc. Le rôle de ce dernier est de rendre impossible les attaques par rejeu, durant lesquelles des transactions signées sur une chaîne, sont réalisées et retransmises de manière continue sur l'autre chaîne. - `balance` – le nombre de wei possédés par cette adresse. Le wei est une unité divisionnaire de l'ETH. Il y a 1e+18 wei pour 1 ETH. - `codeHash` – ce hash est une référence au _code_ d'un compte dans la machine virtuelle Ethereum (EVM). Les comptes de contrat possèdent des fragments de code qui peuvent réaliser différentes opérations. Ce code EVM est exécuté si le compte reçoit un message. Contrairement aux autres champs, il ne peut pas être modifié. Tous ces fragments de code sont stockés dans une base de données à états, sous leur hachage correspondant, pour une récupération future. Cette valeur de hachage est connue en tant que codeHash. Pour les comptes externes, le champ du codeHash contient le hachage d'une chaîne vide. - `storageRoot` – Parfois connu sous le nom de hachage de stockage. Un hash 256 bits du nœud racine d'un arbre de Merkle qui encode le contenu de stockage du compte (une correspondance entre 256 bits entiers), encodé dans un arbre préfixé comme correspondance d'un hach Keccak 256 bits des clés d'entier en 256 bits en des valeurs entières encodées en RLP. Cet arbre encode le hash des contenus stockés de ce compte, et est vide pas défaut. @@ -120,6 +120,8 @@ Regardez Austin vous guider à travers les fonctions de hachage et les paires de ## Complément d'information {#further-reading} +- [Comprendre les Comptes Ethereum](https://info.etherscan.com/understanding-ethereum-accounts/) - etherscan + _Une ressource communautaire vous a aidé ? Modifiez cette page et ajoutez-la !_ ## Sujets connexes {#related-topics} diff --git a/src/content/translations/fr/developers/docs/apis/backend/index.md b/src/content/translations/fr/developers/docs/apis/backend/index.md index 96dfe9094f6..e2af751674c 100644 --- a/src/content/translations/fr/developers/docs/apis/backend/index.md +++ b/src/content/translations/fr/developers/docs/apis/backend/index.md @@ -143,19 +143,36 @@ Les bibliothèques suppriment une grande partie de la complexité de l'interacti - [Discord](https://discord.com/invite/KYswaxwEtg) - [Forum](https://forum.moralis.io/) -**GetBlock - _Blockchain-as-a-service pour le développement Web3_** +- [chainbase.com](https://chainbase.com/) +- [Documentation](https://docs.chainbase.com/) +- [Discord](https://discord.gg/Wx6qpqz4AF) + +**GetBlock-** **_Blockchain-as-a-service pour le développement du Web3_** - [GetBlock.io](https://getblock.io/) - [Documentation](https://getblock.io/docs/) +**BlockPi -** **_Fournit des services RPC plus efficaces et plus rapides_** + +- [blockpi.io](https://blockpi.io/) +- [Documentation](https://docs.blockpi.io/) +- [GitHub](https://github.com/BlockPILabs) +- [Discord](https://discord.com/invite/xTvGVrGVZv) + +**Tokenview -** **_La plateforme générale d'API de blockchain multi-crypto._** + +- [services.tokenview.io](https://services.tokenview.io/) +- [Documentation](https://services.tokeniew/docs?type=api) +- [Github](https://github.com/Tokenview) + ## Complément d'information {#further-reading} _Une ressource communautaire vous a aidé ? Modifiez cette page et ajoutez-la !_ ## Sujets connexes {#related-topics} -- [Nœuds et clients](/developers/docs/nodes-and-clients/) -- [Infrastructures de développement](/developers/docs/frameworks/) +- [ Nœuds et clients](/developers/docs/nodes-and-clients/) +- [Frameworks de développement](/developers/docs/frameworks/) ## Tutoriels connexes {#related-tutorials} diff --git a/src/content/translations/fr/developers/docs/apis/json-rpc/index.md b/src/content/translations/fr/developers/docs/apis/json-rpc/index.md index 39c2a37d5df..533705d52a0 100644 --- a/src/content/translations/fr/developers/docs/apis/json-rpc/index.md +++ b/src/content/translations/fr/developers/docs/apis/json-rpc/index.md @@ -358,7 +358,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":6 } ``` -## eth_chainId {#eth_chainId} +### eth_chainId {#eth_chainId} Retourne la chaîne ID utilisée pour la signature d'opérations protégées par la rediffusion. @@ -1239,7 +1239,10 @@ params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"] - `contractAddress`: `DATA`, 20 octets - L'adresse du contrat a été créée, si la transaction était une création de contrat, sinon `null`. - `logs`: `Tableau` - Tableau d'objets de log, que cette transaction a générés. - `logsBloom`: `DATA`, 256 octets - Filtre Bloom pour les clients légers pour récupérer rapidement les logs associés. -- `type`: `QUANTITY` - nombre entier du type de transaction, `0x00` pour les transactions héritées, `0x01` pour les types de listes d'accès, `0x02` pour les frais dynamiques. Il renvoie aussi _soit_ : +- `type`: `QUANTITY` - nombre entier du type de transaction, `0x00` pour les transactions héritées, `0x01` pour les types de listes d'accès, `0x02` pour les frais dynamiques. + +Il renvoie aussi _soit_ : + - `root` : `DATA` 32 octets de stateroot post-transaction (avant Byzantium) - `status`: `QUANTITY` soit `1` (succès) ou `0` (échec) @@ -1484,10 +1487,10 @@ Crée un objet filtre, basé sur les options de filtre, pour avertir lorsque l' 1. `Object` - Les options de filtre : -- `fromBlock`: `QUANTITY|TAG` - (optionnel, par défaut : `« latest »`) nombre de blocs entiers, ou `« latest »` pour le dernier bloc miné ou `« pendant »`, `« earliest »` pour les transactions non encore minées. -- `toBlock`: `QUANTITY|TAG` - (facultatif, par défaut : `« latest »`) Numéro de bloc d'entier ou `« latest »` pour le dernier bloc miné ou `« pending »`, `« earliest »` pour les transactions non encore minées. +- `fromBlock`: `QUANTITY|TAG` - (optionnel, par défaut : `"latest"`) nombre de blocs entiers, ou `"latest"` pour le dernier bloc miné ou `"pending"`, `"earliest"` pour les transactions non encore minées. +- `toBlock`: `QUANTITY|TAG` - (facultatif, par défaut : `"latest"`) Numéro de bloc d'entier ou `"latest"` pour le dernier bloc miné ou `"pending"`, `"earliest"` pour les transactions non encore minées. - `address`: `DATA|Array`, 20 octets - (facultatif) adresse contractuelle ou une liste d'adresses d'où les logs doivent provenir. -- `topics` : `Array of DATA`, - (facultatif) tableau de sujets `DATA` de 32 bytes. Les sujets dépendent de l'ordre. Chaque sujet peut également être un tableau de DATA avec des options « ou ». +- `topics`: `Array of DATA`, - (facultatif) tableau de 32 bytes `DATA` topics. Les sujets dépendent de l'ordre. Chaque sujet peut également être un tableau de DATA avec des options "ou". ```js params: [ @@ -1678,10 +1681,10 @@ Retourne un tableau de tous les logs correspondant à un objet filtre donné. 1. `Object` - Les options de filtre : -- `fromBlock`: `QUANTITY|TAG` - (optionnel, par défaut : `« latest »`) nombre de blocs entiers, ou `« latest »` pour le dernier bloc miné ou `« pendant »`, `« earliest »` pour les transactions non encore minées. -- `toBlock`: `QUANTITY|TAG` - (facultatif, par défaut : `« latest »`) Numéro de bloc d'entier ou `« latest »` pour le dernier bloc miné ou `« pending »`, `« earliest »` pour les transactions non encore minées. +- `fromBlock`: `QUANTITY|TAG` - (optionnel, par défaut : `"latest"`) nombre de blocs entiers, ou `"latest"` pour le dernier bloc miné ou `"pending"`, `"earliest"` pour les transactions non encore minées. +- `toBlock`: `QUANTITY|TAG` - (facultatif, par défaut : `"latest"`) Numéro de bloc d'entier ou `"latest"` pour le dernier bloc miné ou `"pending"`, `"earliest"` pour les transactions non encore minées. - `address`: `DATA|Array`, 20 octets - (facultatif) adresse contractuelle ou une liste d'adresses d'où les logs doivent provenir. -- `topics` : `Array of DATA`, - (facultatif) tableau de sujets `DATA` de 32 bytes. Les sujets dépendent de l'ordre. Chaque sujet peut également être un tableau de DATA avec des options « ou ». +- `topics`: `Array of DATA`, - (facultatif) tableau de 32 bytes `DATA` topics. Les sujets dépendent de l'ordre. Chaque sujet peut également être un tableau de DATA avec des options "ou". - `blockhash`: `DATA`, 32 octets - (facultatif, **futur**) À l'ajout de EIP-234, `blockHash` sera une nouvelle option de filtre qui restreint les logs retournés au bloc unique avec le hachage de 32 octets `blockHash`. Utiliser `blockHash` est équivalent à `fromBlock` = `toBlock` = le numéro de bloc avec le hachage `blockHash`. Si `blockHash` est présent dans les critères de filtre, alors ni `fromBlock` ni `toBlock` ne sont autorisés. ```js @@ -1798,7 +1801,7 @@ curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":[ } ``` -### db_putString (deprecated) {#db_putstring} +### db_putString (obsolète) {#db_putstring} Stocke une chaîne dans la base de données locale. @@ -1829,7 +1832,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"db_putString","params":["testDB" } ``` -### db_getString (deprecated) {#db_getstring} +### db_getString (obsolète) {#db_getstring} Retourne une chaîne depuis la base de données locale. **Remarque :** cette fonction est obsolète. @@ -1857,7 +1860,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"db_getString","params":["testDB" } ``` -### db_putHex (deprecated) {#db_puthex} +### db_putHex (obsolète) {#db_puthex} Stocke les données binaires dans la base de données locale. **Remarque :** cette fonction est obsolète. @@ -1886,7 +1889,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"db_putHex","params":["testDB","m } ``` -### db_getHex (deprecated) {#db_gethex} +### db_getHex (obsolète) {#db_gethex} Retourne des données binaires depuis la base de données locale. **Remarque :** cette fonction est obsolète. @@ -1914,7 +1917,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"db_getHex","params":["testDB","m } ``` -### shh_version (deprecated) {#shh_post} +### shh_version (obsolète) {#shh_post} Retourne la version actuelle du protocole de chuchotement. @@ -1937,7 +1940,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_version","params":[],"id":67 } ``` -### shh_post (deprecated) {#shh_version} +### shh_post (obsolète) {#shh_version} Envoie un message chuchoté. @@ -2008,7 +2011,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newIdentity","params":[],"id } ``` -### shh_hasIdentity (deprecated){#shh_hasidentity} +### shh_hasIdentity (obsolète){#shh_hasidentity} Vérifie si le client détient les clés privées pour une identité donnée. @@ -2039,7 +2042,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_hasIdentity","params":["0x04 } ``` -### shh_newGroup (deprecated){#shh_newgroup} +### shh_newGroup (obsolète){#shh_newgroup} **Remarque :** cette fonction est obsolète. @@ -2060,7 +2063,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newGroup","params":[],"id":7 } ``` -### shh_addToGroup (deprecated){#shh_addtogroup} +### shh_addToGroup (obsolète){#shh_addtogroup} **Remarque :** cette fonction est obsolète. @@ -2089,7 +2092,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_addToGroup","params":["0x04f } ``` -### shh_newFilter (deprecated){#shh_newfilter} +### shh_newFilter (obsolète){#shh_newfilter} Crée un filtre à notifier, lorsque le client reçoit un message chuchotant correspondant aux options de filtre. **Remarque :** cette fonction est obsolète. @@ -2128,7 +2131,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newFilter","params":[{"topic } ``` -### shh_uninstallFilter (deprecated){#shh_uninstallfilter} +### shh_uninstallFilter (obsolète){#shh_uninstallfilter} Désinstalle un filtre avec un identifiant donné. Doit toujours être appelé lorsque la montre n'est plus nécessaire. De plus, filtre le délai d'attente quand ils ne sont pas demandés avec [shh_getFilterChanges](#shh_getfilterchanges) pour une certaine période. **Remarque :** cette fonction est obsolète. @@ -2157,7 +2160,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_uninstallFilter","params":[" } ``` -### shh_getFilterChanges (deprecated){#shh_getfilterchanges} +### shh_getFilterChanges (obsolète){#shh_getfilterchanges} Méthode de vote pour les filtres chuchotants. Retourne les nouveaux messages depuis le dernier appel de cette méthode. **Note** appelant la méthode [shh_getMessages](#shh_getmessages) va réinitialiser le tampon pour cette méthode afin que vous ne receviez pas de messages dupliqués. **Remarque :** cette fonction est obsolète. @@ -2206,7 +2209,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getFilterChanges","params":[ } ``` -### shh_getMessages (deprecated) {#shh_getmessages} +### shh_getMessages (obsolète) {#shh_getmessages} Récupère tous les messages correspondant à un filtre. Contrairement à `shh_getFilterChanges` cela retourne tous les messages. diff --git a/src/content/translations/fr/developers/docs/blocks/index.md b/src/content/translations/fr/developers/docs/blocks/index.md index b89a8e88a60..c8adc71e945 100644 --- a/src/content/translations/fr/developers/docs/blocks/index.md +++ b/src/content/translations/fr/developers/docs/blocks/index.md @@ -22,7 +22,7 @@ En espaçant les engagements, nous donnons à tous les participants du serveur a Pour préserver l'historique des transactions, les blocs sont strictement ordonnés (chaque nouveau bloc créé contient une référence à son bloc parent), et les transactions au sein des blocs sont également strictement ordonnées. Sauf dans de rares cas, à tout moment, tous les participants au réseau sont d'accord sur le nombre exact et l'historique des blocs, et s'efforcent de regrouper les demandes de transactions en cours dans le bloc suivant. -Une fois qu'un bloc est assemblé par un validateur sur le réseau, il est propagé auprès du reste du réseau ; tous les nœuds ajoutent ce bloc à la fin de leur blockchain, et un nouveau validateur est sélectionné pour créer le bloc suivant. Le processus exact d'assemblage de blocs et le processus d'engagement/consensus sont actuellement spécifiés par le protocole de la « preuve d'enjeu » d'Ethereum. +Une fois qu'un bloc a été lié aux autres blocs par un validateur sélectionné aléatoirement sur le réseau, il est scellé au reste du réseau ; ce bloc ajouté à la chaîne de bloc (blockchain) est lié au précédent, et une copie est transmise à tous les noeuds du réseau, ensuite un autre validateur est sélectionné pour créer le nouveau bloc. Le processus exact d'assemblage de blocs et le processus d'engagement/consensus sont actuellement spécifiés par le protocole de la « preuve d'enjeu » d'Ethereum. ## Protocole de la preuve d'enjeu {#proof-of-work-protocol} @@ -100,8 +100,9 @@ Exécuter les transactions dans `execution_payload` met à jour l'état global. | `base_fee_per_gas` | la valeur des frais de base | | `block_hash` | hachage du bloc d'exécution | | `transactions_root` | hachage racine des transactions dans le bloc | +| `withdrawal_root` | hachage racine des retraits dans le bloc | -`execution_payload` contient lui-même ce qui suit (notez que cela est identique à l'en-tête sauf qu'au lieu du hachage racine des transactions, il inclut la liste réelle des opérations) : +`execution_payload` contient lui-même ce qui suit (notez que cela est identique à l'en-tête sauf qu'au lieu du hachage racine des transactions, il inclut la liste réelle des transactions et des informations de retrait) : | Champ | Description | | :----------------- | :-------------------------------------------------------------------------------- | @@ -119,10 +120,22 @@ Exécuter les transactions dans `execution_payload` met à jour l'état global. | `base_fee_per_gas` | la valeur des frais de base | | `block_hash` | hachage du bloc d'exécution | | `des transactions` | liste des transactions à exécuter | +| `retraits` | liste des objets de retrait | + +La liste `withdrawals` contient les objets `withdrawal` structurée de la façon suivante : + +| Champ | Description | +| :--------------- | :--------------------------------- | +| `address` | adresse du compte qui s'est retiré | +| `amount` | montant du retrait | +| `Index` | valeur d'index du retrait | +| `validatorIndex` | valeur d'index du validateur | ## Durée de blocage {#block-time} -Le temps de bloc fait référence au temps qui sépare les blocs. Dans Ethereum, le temps est divisé en unités de douze secondes appelées « créneau ». Pour chaque créneau, un validateur est choisi pour proposer un bloc. Si tous les validateurs sont en ligne et complétement opérationnels, il y aura un bloc dans chaque créneau, ce qui signifie que le temps de bloc est de 12 s. Occasionnellement, des validateurs peuvent être hors-ligne lorsqu'ils sont appelés pour valider un bloc, de sorte que les créneaux peuvent parfois être vide. Cela est différent des systèmes basés sur la preuve de travail où les temps de bloc sont probabilistes et ajustés selon la difficulté du minage. +Le temps de bloc fait référence au temps qui sépare les blocs. Dans Ethereum, le temps est divisé en unités de douze secondes appelées « créneau ». Pour chaque créneau, un validateur est choisi pour proposer un bloc. Si tous les validateurs sont en ligne et complétement opérationnels, il y aura un bloc dans chaque créneau, ce qui signifie que le temps de bloc est de 12 s. Occasionnellement, des validateurs peuvent être hors-ligne lorsqu'ils sont appelés pour valider un bloc, de sorte que les créneaux peuvent parfois être vide. + +Cette implémentation diffère des systèmes fondés sur la preuve de travail (PoW), dans lesquels la génération d'un bloc est une occurrence naturelle, compensée par la difficulté de mining du protocole. Le temps moyen de propagation des blocs d'Ethereum [average block time](https://etherscan.io/chart/blocktime) est l'exemple parfait de l'implementation de la preuve d'enjeu, et donc du passage de la preuve de travail (PoW) à la preuve d'enjeu (PoS), rendu possible grâce à un nouvel ajustement du temps de propagation des blocs, qui est passé à 12 secondes. ## Taille des blocs {#block-size} diff --git a/src/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/index.md b/src/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/index.md index 832c5f41e31..e7820a441fc 100644 --- a/src/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/index.md +++ b/src/content/translations/fr/developers/docs/consensus-mechanisms/pow/mining/index.md @@ -70,7 +70,7 @@ Regardez Austin vous guider à travers le minage et la blockchain de la preuve d ## L'algorithme de minage {#mining-algorithm} -Le réseau principal Ethereum n'a jamais utilisé qu'un seul algorithme de minage - ['Ethash'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash). Ethhash était le successeur d'un algorithme R&D original connu sous le nom de ["Dagger-Hashimoto"](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto). +Le réseau principal Ethereum n'a jamais utilisé qu'un seul algorithme de minage - ['Ethash'](/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash/). Ethhash était le successeur d'un algorithme R&D original connu sous le nom de ["Dagger-Hashimoto"](/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto/). [Plus de détails sur les algorithmes de minage](/developers/docs/consensus-mechanisms/pow/mining-algorithms/). diff --git a/src/content/translations/fr/developers/docs/dapps/index.md b/src/content/translations/fr/developers/docs/dapps/index.md index 575d333e3a0..f14306811e9 100644 --- a/src/content/translations/fr/developers/docs/dapps/index.md +++ b/src/content/translations/fr/developers/docs/dapps/index.md @@ -68,15 +68,23 @@ Un contrat intelligent est un code présent sur la blockchain Ethereum qui fonct - [etherflow.quiknode.io](https://etherflow.quiknode.io/) - [GitHub](https://github.com/abunsen/etherflow) +**thirdweb _- SDKs dans tous les langages, smart contrats, outils et infrastructure pour le développement web3._** + +- [Page d'accueil](https://thirdweb.com/) +- [Documentation](https://portal.thirdweb.com/) +- [GitHub](https://github.com/thirdweb-dev/) + ## Complément d'information {#further-reading} +- [Explorez des applications décentralisées](/dapps) - [L'Architecture d'une application Web 3.0](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_ - [Le guide 2021 pour les applications décentralisées](https://limechain.tech/blog/what-are-dapps-the-2021-guide/) - _LimeChain_ - [Qu'est-ce que les applications décentralisées ?](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps) - _Gemini_ +- [Dapps populaires](https://www.alchemy.com/dapps) - _Alchemy_ _Une ressource communautaire vous a aidé ? Modifiez cette page et ajoutez-la !_ ## Sujets connexes {#related-topics} - [Introduction à la pile Ethereum](/developers/docs/ethereum-stack/) -- [Infrastructures de développement](/developers/docs/frameworks/) +- [Frameworks de développement](/developers/docs/frameworks/) diff --git a/src/content/translations/fr/developers/docs/data-and-analytics/block-explorers/index.md b/src/content/translations/fr/developers/docs/data-and-analytics/block-explorers/index.md index 73c4ac397a4..603f78e2956 100644 --- a/src/content/translations/fr/developers/docs/data-and-analytics/block-explorers/index.md +++ b/src/content/translations/fr/developers/docs/data-and-analytics/block-explorers/index.md @@ -21,8 +21,10 @@ Pour que les données fournies par un explorateur de blocs aient du sens, vous d - [Ethplorer](https://ethplorer.io/) - _Aussi disponible en chinois, espagnol, français, turc, russe, coréen et vietnamien_ - [OKLink](https://www.oklink.com/eth) - [Otterscan](https://otterscan.io/) +- [Rantom](https://rantom.app/) - [Sirato](https://www.web3labs.com/sirato) - [EthVM](https://www.ethvm.com/) +- [Explorateurs de bloc DexGuru](https://ethereum.dex.guru/) ## Données {#data} @@ -234,6 +236,7 @@ Les données de couches de consensus de haut niveau comprennent les éléments s - [Blockchair](https://blockchair.com/ethereum) - L'explorateur Ethereum le plus privé. Egalement pour trier et filtrer des données (mempool). - [Etherchain](https://www.etherchain.org/) - un explorateur de blocs pour le réseau principal Ethereum - [Ethplorer](https://ethplorer.io/) - un explorateur de blocs avec une focalisation sur les jetons pour le réseau principal Ethereum et le réseau de test Kovan +- [Rantom](https://rantom.app/) - Un service crypto-friendly open-source, intégré à sa plateforme de finance décentralisée (DeFi) & Visualisation du volume de transactions des NFT pour une vision détaillée ## En savoir plus {#further-reading} diff --git a/src/content/translations/fr/developers/docs/development-networks/index.md b/src/content/translations/fr/developers/docs/development-networks/index.md index 99698d1a813..7d162144cac 100644 --- a/src/content/translations/fr/developers/docs/development-networks/index.md +++ b/src/content/translations/fr/developers/docs/development-networks/index.md @@ -62,11 +62,22 @@ Il y a aussi deux implémentations de test publiques maintenues d'Ethereum : Goe - [Plateforme de lancement de la mise en jeu de Goerli](https://goerli.launchpad.ethereum.org/) - [Ropsten, Rinkeby & Annonce de dépréciation Kiln](https://blog.ethereum.org/2022/06/21/testnet-deprecation) +### Pack Ethereum de Kurtosis {#kurtosis} + +Kurtosis est un système de construction d'environnements de test multi-conteneurs qui permet aux développeurs de créer localement des instances reproductibles de réseaux de blockchain. + +Le pack Ethereum Kurtosis permet de mettre localement en place un réseau de test Ethereum paramétrable, prenant en charge plusieurs clients différents de la couche d'exécution et de la couche de consensus, ainsi qu'un nombre "n" de nœuds. Kurtosis gère harmonieusement toutes les cartographies de ports locaux et les connexions de services pour faciliter le prototypage et le test des dApp et des contrats intelligents. + +- [Pack réseau Ethereum](https://github.com/kurtosis-tech/eth-network-package) +- [Site Web](https://www.kurtosis.com/) +- [Github](https://github.com/kurtosis-tech/kurtosis) +- [Documentation](https://docs.kurtosis.com/) + ## Complément d'information {#further-reading} _Une ressource communautaire vous a aidé ? Modifiez cette page et ajoutez-la !_ ## Sujets connexes {#related-topics} -- [Infrastructures de développement](/developers/docs/frameworks/) +- [Frameworks de développement](/developers/docs/frameworks/) - [Configurer un environnement de développement local](/developers/local-environment/) diff --git a/src/content/translations/fr/developers/docs/evm/index.md b/src/content/translations/fr/developers/docs/evm/index.md index 8878fb9ef32..c0b78e73adc 100644 --- a/src/content/translations/fr/developers/docs/evm/index.md +++ b/src/content/translations/fr/developers/docs/evm/index.md @@ -71,6 +71,7 @@ Les [clients d'exécution Ethereum](/developers/docs/nodes-and-clients/#executio - [Jellopaper aka KEVM : Sémantique de l'EVM en K](https://jellopaper.org/) - [Livre beige Ethereum](https://github.com/chronaeon/beigepaper) - [Codes d'opérations de l'EVM](https://www.ethervm.io/) +- [Documents de Référence aux Codes Opératoires de la Machine Virtuelle Ethereum](https://www.evm.codes/) - [Une courte introduction dans la documentation de Solidity](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6) ## Sujets connexes {#related-topics} diff --git a/src/content/translations/fr/developers/docs/evm/opcodes/index.md b/src/content/translations/fr/developers/docs/evm/opcodes/index.md new file mode 100644 index 00000000000..0243221d9a7 --- /dev/null +++ b/src/content/translations/fr/developers/docs/evm/opcodes/index.md @@ -0,0 +1,170 @@ +--- +title: Opcodes pour l'EMV +description: Une liste de tous les opcodes disponibles pour la machine virtuelle Ethereum. +lang: fr +--- + +## Aperçu {#overview} + +Il s'agit d'une version mise à jour de la page de référence de l'EMV sur [wolflo/evm-opcodes](https://github.com/wolflo/evm-opcodes). Également tirée du [Yellow Paper,](https://ethereum.github.io/yellowpaper/paper.pdf) du [Jello Paper](https://jellopaper.org/evm/) et de l'implémentation [geth](https://github.com/ethereum/go-ethereum). Ceci est destiné à être une référence accessible, mais ce n'est pas particulièrement rigoureux. Si vous souhaitez être sûr de la précision et conscient de chaque cas limite, il est conseillé d'utiliser le Jello Paper ou une implémentation de client. + +À la recherche d'une référence interactive ? Consultez [evm.codes](https://www.evm.codes/). + +Pour les opérations avec des coûts en gaz dynamiques, consultez [gas.md](https://github.com/wolflo/evm-opcodes/blob/main/gas.md). + +💡 Conseil rapide : Pour afficher des lignes entières, utilisez `[shift] + défilement` pour faire défiler horizontalement sur ordinateur. + +| Base | Nom | Gaz | Base | Résultat | Mémoire | Notes | +| :---: | :------------- | :---------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------- | :------------------------------ | :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | +| 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` | `Empreinte numérique` | | 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` | | push the constant value 0 onto stack | +| 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 | RETOUR | 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/src/content/translations/fr/developers/docs/frameworks/index.md b/src/content/translations/fr/developers/docs/frameworks/index.md index b15faf595aa..6155482103e 100644 --- a/src/content/translations/fr/developers/docs/frameworks/index.md +++ b/src/content/translations/fr/developers/docs/frameworks/index.md @@ -91,6 +91,17 @@ Avant de plonger dans les infrastructures, nous vous recommandons de commencer p - [GitHub](https://github.com/node-real) - [Discord](https://discord.gg/V5k5gsuE) +**thirdweb SDK -** **_Créez des applications web3 capables d'interagir avec vos smart contracts à l'aide de nos puissants SDK et CLI._** + +- [Documentation](https://portal.thirdweb.com/sdk/) +- [GitHub](https://github.com/thirdweb-dev/) + +**Chainstack -** **_Plateforme de développement Web3 (Ethereum et autres)._** + +- [chainstack.com](https://www.chainstack.com/) +- [GitHub](https://github.com/chainstack) +- [Discord](https://discord.gg/BSb5zfp9AT) + ## Complément d'information {#further-reading} _Une ressource communautaire vous a aidé ? Modifiez cette page et ajoutez-la !_ diff --git a/src/content/translations/fr/developers/docs/gas/index.md b/src/content/translations/fr/developers/docs/gas/index.md index bd60a78737f..4a997852f4f 100644 --- a/src/content/translations/fr/developers/docs/gas/index.md +++ b/src/content/translations/fr/developers/docs/gas/index.md @@ -14,41 +14,43 @@ Pour mieux comprendre cette page, nous vous recommandons de commencer par lire c Le gaz est l'unité qui mesure la quantité d'efforts de calculs requis pour exécuter des opérations spécifiques sur le réseau Ethereum. -Comme chaque transaction Ethereum nécessite des ressources informatiques pour s'exécuter, cela implique des frais. Le gaz correspond aux frais requis pour effectuer correctement une transaction sur Ethereum. +Étant donné que l'exécution de chaque transaction Ethereum nécessite des ressources informatiques, ces ressources doivent être payées pour garantir qu'Ethereum ne soit pas vulnérable au spam et ne reste pas bloqué dans des boucles de calcul infinies. Le paiement concernant le calcul se fait sous forme de frais de gaz. + +Les frais de gaz** correspondent à la somme de gaz utilisé pour effectuer une opération, multiplié au coût par unité de gaz**. Les frais sont payés, que la transaction réussisse ou échoue. ![Diagramme indiquant où le gaz est nécessaire dans les opérations EVM](./gas.png) _Schéma adapté à partir du document [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ -Fondamentalement, les frais de gaz sont payés en ether (ETH), la monnaie native d'Ethereum. Les prix du gaz sont indiqués en gwei, qui est une dénomination de l'ETH. Chaque gwei est égal à 0,00000001 ETH (10-9 ETH). Par exemple, au lieu de dire que votre gaz coûte 0,000000001 Ether, vous pouvez dire qu'il coûte 1 gwei. Le mot « gwei » signifie « giga-wei », et il est égal à 1 000 000 000 de wei. « Wei » (qui porte le nom de [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), le créateur de [b-money](https://www.investopedia.com/terms/b/bmoney.asp)), est la plus petite unité d'ETH. +Les frais de gaz doivent être payés dans la monnaie native d'Ethereum, l'éther (ETH). Le prix du gaz est généralement indiqué en gwei, qui est une dénomination de l'ETH. Chaque gwei est égal à un milliardième d'ETH (0,000000001 ETH ou 10-9 ETH). -## Avant la mise à jour de Londres {#pre-london} +Par exemple, au lieu de dire que votre gaz coûte 0,000000001 Ether, vous pouvez dire qu'il coûte 1 gwei. -Sur le réseau Ethereum, la façon dont les frais de transaction sont calculés a été modifiée avec [la mise à jour de Londres](/history/#london) d'août 2021. Voici un récapitulatif de la façon dont cela fonctionnait : +Le mot "gwei" est une contraction de "giga-wei", qui signifie "milliard de wei". Un gwei est égal à un milliard de wei. « Wei » (qui porte le nom de [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), le créateur de [b-money](https://www.investopedia.com/terms/b/bmoney.asp)), est la plus petite unité d'ETH. -Disons qu'Alice devait payer à Marc la somme d'1 ETH. Dans la transaction, la limite de gaz est de 21 000 unités et le prix du gaz est de 200 gwei. +## Comment sont calculées les frais de gaz ? {#how-are-gas-fees-calculated} -Les frais totaux auraient été : `unités de gaz (limite) * prix de gaz par unité` i. `21 000 * 200 = 4 200 000 gwei` ou 0,0042 ETH +Vous pouvez fixer le montant du gaz que vous êtes prêt à payer lorsque vous soumettez une transaction. En choissisant une certaine quantité de gaz, vous faites une offre pour que votre transaction soit incluse dans le bloc suivant. Si votre offre est insuffisante, les validateurs seront moins enclins à choisir votre transaction pour l'inclure, ce qui signifie que votre transaction risque d'être exécutée tardivement ou de ne pas être exécutée du tout. Si vous en offrez trop, vous risquez de gaspiller de l'ETH. Alors, comment savoir combien payer ? -## Après la mise à jour de Londres {#post-london} +Le montant total du gaz que vous payez est divisé en deux parties : `frais de base` et `frais de priorité` (pourboire). -Disons que Jordan doit payer à Thierry la somme d'1 ETH. Dans la transaction, la limite de gaz est de 21 000 unités et les frais de base sont de 10 gwei. Jordan y ajoute un pourboire de 2 gwei. +Les `frais de base` sont fixés par le protocole - vous devez payer au moins ce montant pour que votre transaction soit considérée comme valide. Les `frais de priorité ` sont un pourboire que vous ajoutez aux frais de base pour rendre votre transaction attrayante aux yeux des validateurs afin qu'ils la choisissent pour l'inclure dans le bloc suivant. -Le coût total serait maintenant : `unités de gaz utilisées x (frais de base + frais de priorité)` où les `frais de base` sont des valeurs définies par le protocole et les `frais de priorité` sont une valeur définie par l'utilisateur comme un pourboire pour le validateur. +Une transaction qui ne paie que les `frais de base` est techniquement valable, mais il est peu probable qu'elle soit incluse parce qu'elle n'incite pas les validateurs à la choisir plutôt qu'une autre transaction. Les frais de `priority` (priorité) "corrects" sont déterminés par l'utilisation du réseau au moment où vous émettez votre transaction. Si la demande est importante, vous devrez peut-être augmenter vos frais de `priority` ; dans le cas contraire, vous pourriez payer moins. -Ex. : `21.000 * (10 + 2) = 252 000 gwei` ou 0,000252 ETH. +Par exemple, disons que Jordan doit payer 1 ETH à Taylor. Un transfert d'ETH nécessite 21 000 unités de gaz et les frais de base sont de 10 gwei. Jordan y ajoute un pourboire de 2 gwei. -Lorsque Jordan enverra de l'argent, 1,000252 ETH sera déduit du compte de Jordan. Thierry sera crédité de 1,0000 ETH. Le validateur reçoit un pourboire de 0,000042 ETH. Les frais de base de 0,0021 ETH sont brûlés. +Le montant total des frais s'élèverait alors à : -De plus, Jordan peut également fixer des frais maximums (`maxFeePerGas`) pour la transaction. La différence entre les frais max et les frais réels est remboursée à Jordan, c'est-à-dire `remboursement = frais max - (frais de base + frais de priorité)`. Jordan peut fixer un montant maximum à payer pour l'exécution de la transaction et ne pas s'inquiéter de payer trop, « au-delà » des frais de base lorsque la transaction est exécutée. +`unités de gaz utilisées * ( frais de base + frais de priorité)` -### Taille des blocs {#block-size} +où les `frais de base` sont une valeur fixée par le protocole et les `frais de priorité` sont une valeur fixée par l'utilisateur en guise de pourboire au validateur. -Avant la mise à jour de Londres, Ethereum avait des blocs de taille fixe. En période de forte demande sur le réseau, ces blocs fonctionnaient à pleine capacité. En conséquence, les utilisateurs devaient souvent attendre que la forte demande diminue pour être inclus dans un bloc, ce qui entraînait une mauvaise expérience utilisateur. +ex. `21,000 * (10 + 2) = 252,000 gwei` (0.000252 ETH). -La mise à niveau de Londres a permis d'introduire des blocs de taille variable dans Ethereum. Chaque bloc vise une taille cible de 15 millions de gaz, mais leur taille s'adapte aux exigences du réseau, jusqu'à une limite de 30 millions de gaz (deux fois la taille cible de bloc). Le protocole atteint une taille d'équilibre de bloc de 15 millions en moyenne grâce au processus de _tâtonnement_. Cela signifie que si la taille du bloc est plus importante que la taille cible du bloc, le protocole augmentera les frais de base pour le bloc suivant. De même, le protocole diminuera les frais de base si la taille du bloc est inférieure à la taille cible du bloc. Le montant par lequel les frais de base sont ajustés est proportionnel à l'écart entre la taille actuelle et la taille cible du bloc. [En savoir plus sur les blocs](/developers/docs/blocks/). +Lorsque Jordan enverra de l'argent, 1,000252 ETH sera déduit du compte de Jordan. Thierry sera crédité de 1,0000 ETH. Le validateur reçoit un pourboire de 0,000042 ETH. Les `frais de base` de 0,00021 ETH sont brûlés. ### Frais de base {#base-fee} -Chaque bloc a des frais de base qui servent de prix de réserve. Pour être éligible à l'inclusion dans un bloc, le prix proposé en gaz doit être au moins égal aux frais de base. Les frais de base sont calculés indépendamment du bloc actuel et sont déterminés par les blocs qui le précèdent, ce qui rend les frais de transaction plus prévisibles pour les utilisateurs. Lorsque le bloc est miné, ces frais de base sont « brûlés », disparaissant ainsi de la circulation. +Chaque bloc a des frais de base qui servent de prix de réserve. Pour être éligible à l'inclusion dans un bloc, le prix proposé en gaz doit être au moins égal aux frais de base. Les frais de base sont calculés indépendamment du bloc actuel et sont déterminés par les blocs qui le précèdent, ce qui rend les frais de transaction plus prévisibles pour les utilisateurs. Lors de la création du bloc, les **frais de base sont "brûlés"**, ce qui les retire de la circulation. Les frais de base sont calculés par une formule qui compare la taille du bloc précédent (la quantité de gaz utilisée pour toutes les transactions) avec la taille cible. Les frais de base augmenteront d'un maximum de 12,5 % par bloc si la taille du bloc cible est dépassée. D'un point de vue économique, cette croissance exponentielle ne permet pas de garder indéfiniment des blocs de grande taille. @@ -63,9 +65,9 @@ Les frais de base sont calculés par une formule qui compare la taille du bloc p | 7 | 30 M | 12,5 % | 180,2 gwei | | 8 | 30 M | 12,5 % | 202,7 gwei | -Comparativement au marché aux enchères de gaz d'avant la mise à niveau de Londres, ce changement de mécanisme de frais de transaction permet une meilleure prédiction de ces frais. D'apres la table ci-dessus - afin de créer une transaction sur le bloc numéro 9, un portefeuille pourra faire savoir à l'utilisateur avec certitude que les **frais de base maximum** à ajouter au bloc suivant sont `les frais de base actuels * 112,5 %` ou `202,8 gwei * 112,5 % = 228,1 gwei`. +D'apres la table ci-dessus - afin de créer une transaction sur le bloc numéro 9, un portefeuille pourra faire savoir à l'utilisateur avec certitude que les **frais de base maximum** à ajouter au bloc suivant sont `les frais de base actuels * 112,5 %` ou `202,8 gwei * 112,5 % = 228,1 gwei`. -Il faut également souligner qu'il est peu probable d'assister à des pics prolongés de blocs complets, en raison de la vitesse à laquelle les frais de base augmentent en procédant à un bloc complet. +Il est également important de noter qu'il est peu probable que nous assistions à des pics prolongés de blocs complets en raison de la vitesse à laquelle les frais de base augmentent avant un bloc complet. | Numéro de bloc | Gaz inclus | Augmentation des frais | Frais de base actuels | | -------------- | ---------: | ---------------------: | --------------------: | @@ -77,29 +79,19 @@ Il faut également souligner qu'il est peu probable d'assister à des pics prolo ### Frais de priorité (pourboires) {#priority-fee} -Avant la mise à niveau de Londres, les mineurs recevaient l'ensemble des frais de gaz pour chaque transaction incluse dans un bloc. - -Les nouveaux frais de base étant détruits, la mise à niveau de Londres introduit des frais de priorité (pourboire) afin d'inciter les mineurs à inclure une transaction dans le bloc. Sans pourboires, les mineurs auraient un intérêt économique viable à miner des blocs vides, dans la mesure où ils recevraient la même récompense de bloc. Dans des conditions normales, un petit pourboire incite les mineurs à inclure une transaction. Pour que certaines transactions soient exécutées de préférence avant d'autres Dans le même bloc, un pourboire plus élevé sera nécessaire afin de tenter de surenchérir sur les autres transactions. +Les frais de priorité (pourboire) incitent les validateurs à inclure une transaction dans le bloc. En l'absence de pourboires, les validateurs trouveraient économiquement viable de miner des blocs vides, puisqu'ils recevraient la même récompense pour les blocs. Les petits pourboires n'incitent que très peu les validateurs à inclure une transaction. Pour que les transactions soient exécutées de préférence à d'autres transactions dans le même bloc, un pourboire plus élevé peut être ajouté pour tenter de surenchérir sur les transactions concurrentes. ### Frais maximums {#maxfee} Pour exécuter une transaction sur le réseau, les utilisateurs peuvent spécifier une limite maximale qu'ils sont prêts à payer pour que leur transaction soit exécutée. Ce paramètre optionnel est connu sous le nom de `maxFeePerGas`. Pour qu'une transaction soit exécutée, les frais max doivent dépasser la somme des frais de base et du pourboire. La différence entre les frais maximums et la somme des frais de base et du pourboire est remboursée à l'émetteur de la transaction. -### Le calcul des frais {#calculating-fees} - -L'un des principaux avantages de la mise à niveau de Londres est l'amélioration de l'expérience utilisateur lors de la définition des frais de transaction. Pour les portefeuilles qui prennent en charge la mise à niveau, au lieu d'indiquer explicitement combien vous êtes prêt à payer pour faire passer votre transaction, les fournisseurs de portefeuilles fixeront automatiquement des frais de transaction recommandés (frais de base + frais de priorité recommandés) pour réduire la complexité pesant sur leurs utilisateurs. - -## EIP-1559 {#eip-1559} - -L'intégration de [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) dans la mise à niveau Londres a rendu le mécanisme des frais de transaction plus complexe que les enchères précédentes sur le prix du gaz, mais elle a l'avantage de rendre les frais de gaz plus prévisibles, ce qui se traduit par une plus grande efficacité du marché des frais de transaction. Les utilisateurs peuvent soumettre des transactions avec un `maxFeePerGas` correspondant au montant qu'ils sont prêts à payer pour l'exécution de la transaction, sachant qu'ils ne paieront pas plus que le prix du marché pour le gaz (`baseFeePerGas`), et obtenir un remboursement du supplément, moins leur pourboire. - -Cette vidéo explique l'EIP-1559 et les avantages qu'il procure : +### Taille des blocs {#block-size} - +Chaque bloc vise une taille cible de 15 millions de gaz, mais leur taille s'adapte aux exigences du réseau, jusqu'à une limite de 30 millions de gaz (deux fois la taille cible de bloc). Le protocole atteint une taille d'équilibre de bloc de 15 millions en moyenne grâce au processus de _tâtonnement_. Cela signifie que si la taille du bloc est plus importante que la taille cible du bloc, le protocole augmentera les frais de base pour le bloc suivant. De même, le protocole diminuera les frais de base si la taille du bloc est inférieure à la taille cible du bloc. Le montant par lequel les frais de base sont ajustés est proportionnel à l'écart entre la taille actuelle et la taille cible du bloc. [En savoir plus sur les blocs](/developers/docs/blocks/). -Si vous êtes intéressé, vous pouvez lire [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559). +### Calculer les frais de gaz dans la pratique {#calculating-fees-in-practice} -Continuez à suivre le lapin avec ces [Ressources EIP-1559](https://hackmd.io/@timbeiko/1559-resources). +Vous pouvez indiquer explicitement le montant que vous êtes prêt à payer pour que votre transaction soit exécutée. Cependant, la plupart des fournisseurs de portefeuilles fixent automatiquement des frais de transaction recommandés (frais de base + frais de priorité recommandés) afin de réduire la complexité imposée à leurs utilisateurs. ## Pourquoi les frais de gaz existent-ils ? {#why-do-gas-fees-exist} @@ -111,15 +103,13 @@ Bien qu'une transaction comprenne une limite, tout gaz inutilisé dans une trans ## Qu'est-ce que la limite de gaz ? {#what-is-gas-limit} -La limite de gaz correspond à la quantité maximale de gaz que vous êtes prêt à consommer pour une transaction. Les transactions plus compliquées impliquant des [contrats intelligents](/developers/docs/smart-contracts/) nécessitent plus de travail de calcul, et donc une limite de gaz supérieure à celle d'un simple paiement. Un transfert standard d'ETH nécessite une limite de gaz de 21 000 unités de gaz. +La limite de gaz correspond à la quantité maximale de gaz que vous êtes prêt à consommer lors d'une transaction. Les transactions plus compliquées impliquant des [contrats intelligents](/developers/docs/smart-contracts/) nécessitent plus de travail de calcul, et donc une limite de gaz supérieure à celle d'un simple paiement. Un transfert standard d'ETH nécessite une limite de gaz de 21 000 unités de gaz. -Par exemple, si vous définissez votre limite de gaz à 50 000 pour un simple transfert ETH, l'EVM en consommera 21 000 et vous récupérerez les 29 000 restants. Cependant, si vous fixez un montant de gaz trop faible, par exemple une limite de gaz de 20 000 pour un simple transfert ETH, l'EVM consommera vos 20 000 unités de gaz en essayant de réaliser la transaction, mais celle-ci ne sera pas complète. L'EVM annule alors toute modification, mais puisque le mineur a déjà réalisé pour 20 000 unités de gaz en calculs, ce gaz est consommé. +Par exemple, si vous définissez votre limite de gaz à 50 000 pour un simple transfert ETH, l'EVM en consommera 21 000 et vous récupérerez les 29 000 restants. Cependant, si vous fixez un montant de gaz trop faible, par exemple une limite de gaz de 20 000 pour un simple transfert ETH, l'EVM consommera vos 20 000 unités de gaz en essayant de réaliser la transaction, mais celle-ci ne sera pas complète. L'EVM annule alors toute modification, mais comme le validateur a déjà effectué un travail d'une valeur de 20 000 unités de gaz, ce gaz est consommé. ## Pourquoi les frais de gaz peuvent-ils devenir si élevés ? {#why-can-gas-fees-get-so-high} -Les frais élevés de gaz sont le fruit de la popularité d'Ethereum. Effectuer une opération sur Ethereum nécessite de consommer du gaz, et l'espace de gaz est limité pour un bloc donné. Les frais comprennent les calculs, le stockage ou la manipulation de données ou le transfert de jetons, consommant différentes quantités d'unités de gaz. Au fur et à mesure que les fonctionnalités offertes par les dApps deviennent plus complexes, le nombre d'opérations réalisées par un contrat intelligent augmente également, de sorte que chaque transaction prend plus de place dans un bloc de taille limitée. S'il y a trop de demandes, les utilisateurs doivent offrir un montant de pourboire plus élevé pour essayer de surenchérir sur les transactions des autres utilisateurs. Un pourboire plus élevé augmentera la possibilité que votre transaction soit intégrée au prochain bloc. - -Le prix du gaz ne détermine pas à lui seul le montant que nous avons à payer pour une transaction particulière. Pour calculer les frais de transaction, il convient de multiplier le gaz utilisé par les frais de base en gaz, qui sont mesurés en gwei. +Les frais élevés de gaz sont le fruit de la popularité d'Ethereum. Si la demande est trop forte, les utilisateurs doivent proposer des pourboires plus élevés pour tenter de surenchérir sur les transactions des autres utilisateurs. Un pourboire plus élevé augmentera la possibilité que votre transaction soit intégrée au prochain bloc. De plus, les applications de contrats intelligents plus complexes peuvent effectuer de nombreuses opérations pour assurer leurs fonctions, ce qui leur fait consommer beaucoup de gaz. ## Initiatives mises en œuvre pour réduire les coûts du gaz {#initiatives-to-reduce-gas-costs} @@ -127,16 +117,28 @@ Le prix du gaz ne détermine pas à lui seul le montant que nous avons à payer La mise à l'échelle de la couche 2 est une initiative primordiale pour améliorer considérablement les coûts de gaz, l'expérience utilisateur et l'évolutivité. [En savoir plus sur la mise à l'échelle de la couche 2](/developers/docs/scaling/#layer-2-scaling). -## Stratégies permettant de réduire les frais de gaz {#strategies-for-you-to-reduce-gas-costs} +## Que fut la mise à niveau London / EIP-1559 ? {#what-was-the-london-upgrade-eip-1559} + +Avant la mise à jour de Londres, Ethereum avait des blocs de taille fixe. En période de forte demande du réseau, ces blocs fonctionnaient au maximum de sa capacité En conséquence, les utilisateurs devaient souvent attendre que la demande diminue pour être inclus dans un bloc, ce qui entraînait une mauvaise expérience utilisateur. La mise à niveau de Londres a permis d'introduire des blocs de taille variable dans Ethereum. -Si vous cherchez à réduire les frais de gaz pour votre ETH, vous pouvez définir un pourboire pour indiquer le niveau de priorité de votre transaction. Les mineurs « travailleront » et exécuteront des transactions qui offrent un pourboire plus élevé en gaz, car ils peuvent conserver les pourboires que vous offrez et seront moins enclins à exécuter des transactions offrant des pourboires moins élevés. +Sur le réseau Ethereum, la façon dont les frais de transaction sont calculés a été modifiée avec [la mise à jour de Londres](/history/#london) d'août 2021. Avant la mise à niveau de Londres, les frais étaient calculés sans distinguer les frais de `base` et de `priority`, comme suit : + +Disons qu'Alice devait payer à Marc la somme d'1 ETH. Dans la transaction, la limite de gaz est de 21 000 unités et le prix du gaz est de 200 gwei. + +Les frais totaux auraient été les suivants : `Gas units (limit) * Gas price per unit` (unités de gaz (limite) _ Prix du gaz par unité) soit `21 000 _ 200 = 4 200 000 gwei` ou 0,0042 ETH + +La mise en œuvre de [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) dans la mise à niveau de Londres a rendu le mécanisme de frais de transaction plus complexe, mais a rendu les frais de gaz plus prévisibles, ce qui s'est traduit par un marché des frais de transaction plus efficace. Les utilisateurs peuvent soumettre des transactions avec un`PrixMaximumParUnitéDeGaz`, ce que cela signifie c'est que les utilisateurs pourront eux-mêmes décider du montant qu'ils sont prêts à payer pour l'exécution de la transaction, et ce, en toute connaissance de cause du prix maximum de gaz à payer sur le marché. Un prix soumis supérieur à celui du marché, ne sera pas pris en compte, et le cas écheant, vous ne recevrez pas de communication ni de rémunération. (`PrixMinimumParUnitéDeGaz`). + +Cette vidéo explique l'EIP-1559 et les avantages qu'il procure : + + + +## Suivi des frais de gaz {#moitoring-gas-fees} Si vous voulez surveiller les prix du gaz et pouvoir envoyer votre ETH à moindre coût, vous pouvez utiliser différents outils comme : - [Etherscan](https://etherscan.io/gastracker) _- Évaluateur du prix du gaz pour une transaction_ - [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _Extension Chrome pour estimer le gaz à la fois pour les transactions de Type 0 et les transactions de Type 2 EIP-1559 ._ - -- [ETH Gas Station](https://ethgasstation.info/) _Indicateur orienté consommateur pour le marché du gaz Ethereum_ - [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator) _Calculez les frais de gaz dans votre devise locale pour différents types de transaction sur le réseau principal, Arbitrum et Polygon._ ## Outils connexes {#related-tools} @@ -148,7 +150,6 @@ Si vous voulez surveiller les prix du gaz et pouvoir envoyer votre ETH à moindr - [Explication du gaz sur Ethereum](https://defiprime.com/gas) - [Réduire la consommation de gaz de vos contrats intelligents](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a) - [Preuve d'enjeu contre preuve de travail](https://blockgeeks.com/guides/proof-of-work-vs-proof-of-stake/) - -## Sujets connexes {#related-topics} - -- [Le minage](/developers/docs/consensus-mechanisms/pow/mining/) +- [Des Stratégies pour Optimiser la Consommation de Gas, pour les Développeurs](https://www.alchemy.com/overviews/solidity-gas-optimization) +- [documentation EIP-1559](https://eips.ethereum.org/EIPS/eip-1559). +- [Ressources EIP-1559 de Time Beiko](https://hackmd.io/@timbeiko/1559-resources). diff --git a/src/content/translations/fr/developers/docs/ides/index.md b/src/content/translations/fr/developers/docs/ides/index.md index c8f49a73798..a05aa66621d 100644 --- a/src/content/translations/fr/developers/docs/ides/index.md +++ b/src/content/translations/fr/developers/docs/ides/index.md @@ -66,4 +66,6 @@ La plupart des IDE ont permis de construire des plugins pour améliorer l'expér ## Complément d'information {#further-reading} +- [ IDEs pour Ethereum](https://www.alchemy.com/list-of/web3-ides-on-ethereum) _- Liste d'IDEs pour Ethereum par Alchemy_ + _Une ressource communautaire vous a aidé ? Modifiez cette page et ajoutez-la !_ diff --git a/src/content/translations/fr/developers/docs/intro-to-ethereum/index.md b/src/content/translations/fr/developers/docs/intro-to-ethereum/index.md index f68e79c409d..96885a0c605 100644 --- a/src/content/translations/fr/developers/docs/intro-to-ethereum/index.md +++ b/src/content/translations/fr/developers/docs/intro-to-ethereum/index.md @@ -14,7 +14,7 @@ Une blockchain est une base de données publique qui est mise à jour et partag Chaque ordinateur du réseau doit accepter chaque nouveau bloc, ainsi que la chaîne dans son intégralité. Ces ordinateurs sont appelés des « nœuds ». Les nœuds garantissent que toutes les personnes qui interagissent avec la blockchain disposent des mêmes données. Pour assurer que tous les nœuds soient d'accord, les blockchains ont besoin d'un mécanisme de consensus. -Ethereum utilise un mécanisme de consensus basé sur [la preuve d'enjeu](/developers/docs/consensus-mechanisms/pos/). Celui qui souhaite ajouter un nouveau bloc à la chaîne doit miser au moins 32 ETH dans le contrat de dépôt et éxécuter un logiciel de validation. Il peut ensuite être choisi au hasard pour proposer des blocs que d'autres validateurs vérifient et ajoutent à la blockchain. Dans ce modèle, on trouve généralement une seule chaîne, mais les latences du réseau et les comportements malhonnêtes peuvent provoquer l'existence de plusieurs blocs à la même position près de la tête du réseau. Pour résoudre ce problème, un algorithme de sélection de fourche choisit un ensemble canonique de blocs. Les blocs sélectionnés sont ceux qui forment la chaîne la plus lourde, le terme « lourde » faisant référence au nombre de validateurs ayant soutenu les blocs (mesuré par le nombre d'ETH mis en enjeu). Il existe un système de récompenses et de pénalités qui incite fortement les participants à être honnêtes et disponibles en ligne autant que possible. +Ethereum utilise un mécanisme de consensus basé sur [la preuve d'enjeu](/developers/docs/consensus-mechanisms/pos/). Quiconque souhaite ajouter de nouveaux blocs à la chaîne, doit staker de l'ETH - la monnaie native d'Ethereum - qui pourra être utilisée en tant que collatéral et logiciel de validation. Ces "validateurs" peuvent ensuite être sélectionnés aléatoirement pour soumettre des blocs, lesquels seront envoyés à d'autres validateurs pour vérification et ajoutés à la chaîne de blocs. Il existe un système de récompenses et de pénalités qui incite fortement les participants à être honnêtes et disponibles en ligne autant que possible. Si vous souhaitez voir comment les données de la blockchain sont hachées puis ajoutées à l'historique des références des blocs, consultez [cette démo](https://andersbrownworth.com/blockchain/blockchain) d'Anders Brownworth et regardez la vidéo d'accompagnement ci-dessous. diff --git a/src/content/translations/fr/developers/docs/networks/index.md b/src/content/translations/fr/developers/docs/networks/index.md index 16f0c4615fe..99a7cf27dad 100644 --- a/src/content/translations/fr/developers/docs/networks/index.md +++ b/src/content/translations/fr/developers/docs/networks/index.md @@ -4,7 +4,7 @@ description: Une vue d'ensemble des réseaux Ethereum et où obtenir de l'ether lang: fr --- -Les réseaux constituent différents environnements Ethereum auxquels vous pouvez accéder à des fins de développement, de test ou de production. Comme Ethereum est un protocole, plusieurs « réseaux » indépendants peuvent se conformer au protocole sans interagir les uns avec les autres. +Les réseaux Ethereum sont des groupes d'ordinateurs connectés qui communiquent à l'aide du protocole Ethereum. Il n'existe qu'un seul réseau principal Ethereum, mais des réseaux indépendants conformes aux mêmes règles de protocole peuvent être créés à des fins de test et de développement. Il existe de nombreux "réseaux" indépendants qui se conforment au protocole sans interagir les uns avec les autres. Vous pouvez même en lancer un localement sur votre propre ordinateur pour tester vos contrats intelligents et vos applications web3. Votre compte Ethereum fonctionnera sur les différents réseaux, mais le solde de votre compte et votre historique de transactions ne seront pas transférés du réseau Ethereum principal. Pour les tests, il est utile de connaître les réseaux disponibles et la façon d'obtenir de l'ETH de test pour pouvoir vous amuser avec. En général, pour des raisons de sécurité, il n'est pas recommandé de réutiliser les comptes principaux sur les réseaux de test ou vice versa. @@ -30,7 +30,7 @@ Vous devriez tester tout code de contrat que vous écrivez sur un réseau de tes La plupart des réseaux de test ont commencé par utiliser le mécanisme de consensus de preuve d'autorité. Cela signifie qu'un petit nombre de nœuds sont choisis pour valider les transactions et créer des blocs, en mettant en jeu leur identité dans le processus. Alternativement, certains réseaux de test proposent un mécanisme de consensus ouvert, qui permet à tout le monde de tester un validateur, comme avec le réseau principal Ethereum. -L'ETH des réseaux de test n'a pas de valeur réelle, il n'existe donc pas de marché pour celui-ci. Puisque vous avez besoin d'ETH pour interagir avec Ethereum, la plupart des utilisateurs obtiennent de l'ETH de réseau de test via des robinets. La plupart des robinets sont des applications Web dans lesquelles vous saisissez l'adresse à laquelle vous demandez l'envoi d'ETH. +L'ETH sur les réseaux de test est censé n'avoir aucune valeur réelle ; cependant, des marchés ont été créés pour certains types d'ETH testnet qui sont devenus rares ou difficiles à obtenir. Étant donné que vous avez besoin d'ETH pour interagir avec Ethereum (même sur les testnets), la plupart des gens obtiennent l'ETH des testnets gratuitement via des robinets. La plupart des robinets sont des applications Web dans lesquelles vous saisissez l'adresse à laquelle vous demandez l'envoi d'ETH. #### Quel réseau de test dois-je utiliser ? @@ -53,16 +53,21 @@ Les deux réseaux de test publics que les développeurs de clients conservent ac ##### Robinets +- [QuickNode Sepolia Faucet](https://faucet.quicknode.com/drip) - [Grabteeth](https://grabteeth.xyz/) -- [PoW faucet](https://sepolia-faucet.pk910.de/) +- [Robinet PoW](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) +- [Robinet Sepolia Chainstack](https://faucet.chainstack.com/sepolia-faucet) #### Goerli _(support à long terme)_ {#goerli} _Remarque : [le réseau de test Goerli est obsolète](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17) et sera remplacé par [Holesovice](https://github.com/eth-clients/holesovice) en 2023. Veuillez envisager de migrer vos applications vers Sepolia._ -Goerli ess un réseau de test pour les tests de validation et de mise en jeu. Le réseau Goerli est ouvert aux utilisateurs souhaitant exécuter un validateur de réseau de test. Les utilisateurs désireux de tester les mises à jour de protocoles avant de les déployer sur le réseau principal sont donc invités à utiliser Goerli. +Goerli est un réseau de test qui permet de tester, de valider et de mettre en jeu. Le réseau Goerli est ouvert aux utilisateurs souhaitant exécuter un validateur de réseau de test. Les utilisateurs désireux de tester les mises à jour de protocoles avant de les déployer sur le réseau principal sont donc invités à utiliser Goerli. - Ensemble de validateurs ouvert, les validateurs peuvent tester les mises à jour du réseau - État diversifié, utile pour tester les interactions des contrats intelligents complexes @@ -76,28 +81,17 @@ Goerli ess un réseau de test pour les tests de validation et de mise en jeu. Le ##### Robinets +- [QuickNode Sepolia Faucet](https://faucet.quicknode.com/drip) - [Grabteeth](https://grabteeth.xyz/) - [Robinet PoW](https://goerli-faucet.pk910.de/) -- [Robinet Goerli](https://faucet.goerli.mudit.blog/) - [Robinet Paradigm](https://faucet.paradigm.xyz/) - [Robinet Alchemy Goerli](https://goerlifaucet.com/) - [Robinet All That Node Goerli](https://www.allthatnode.com/faucet/ethereum.dsrv) +- [Coinbase Wallet Faucet | Goerli](https://coinbase.com/faucets/ethereum-goerli-faucet) +- [Robinet Goerli Chainstack](https://faucet.chainstack.com/goerli-faucet) Pour lancer un validateur sur le réseau de test Goerli, utilisez la [plateforme de lancement "validateur goerli bon marché"](https://goerli.launchpad.ethstaker.cc/en/) d'ethstaker. -#### Rinkeby _(soutien à long terme)_ {#rinkeby} - -_Veuillez noter que [le réseau de test Rinkeby est obsolète](https://blog.ethereum.org/2022/11/30/ropsten-shutdown-announcement) et ne bénéficiera plus de mises à jour de son protocole. Veuillez envisager de migrer vos applications vers Sepolia._ - -Un réseau de test pour preuve d'autorité pour ceux qui utilisent les anciennes versions du client Geth. - -##### Robinets - -- [FaucETH](https://fauceth.komputing.org) (Robinet multichaînes fonctionnant sans avoir besoin d'un compte sur un réseau social) -- [Robinet Chainlink](https://faucets.chain.link/) -- [Robinet Paradigm](https://faucet.paradigm.xyz/) -- [Robinet Rinkeby](https://faucet.rinkeby.io/) - ### Réseaux de test de Couche 2 {#layer-2-testnets} [La couche 2 (Layer 2 - L2)](/layer-2/) est un terme collectif pour désigner un ensemble spécifique de solutions aptes à faire évoluer Ethereum. Une couche 2 est une blockchaià part entière qui prolonge Ethereum et hérite des garanties de sécurité d'Ethereum. Les réseaux de test de couche 2 sont généralement étroitement couplés aux réseaux publics de test Ethereum. @@ -108,18 +102,16 @@ Un réseau de test pour [Arbitrum](https://arbitrum.io/). ##### Robinets -- [FaucETH](https://fauceth.komputing.org) (Robinet multichaînes fonctionnant sans avoir besoin d'un compte sur un réseau social) - [Robinet Chainlink](https://faucets.chain.link/) -- [Robinet Paradigm](https://faucet.paradigm.xyz/) -#### Goerli Optimiste {#optimistic-goerli} +#### Optimistic Goerli {#optimistic-goerli} Réseau de test pour [Optimism](https://www.optimism.io/). ##### Robinets -- [FaucETH](https://fauceth.komputing.org) (Robinet multichaînes fonctionnant sans avoir besoin d'un compte sur réseau social) - [Robinet Paradigm](https://faucet.paradigm.xyz/) +- [Coinbase Wallet Faucet | Optimism Goerli](https://coinbase.com/faucets/optimism-goerli-faucet) ## Réseaux privés {#private-networks} diff --git a/src/content/translations/fr/developers/docs/programming-languages/golang/index.md b/src/content/translations/fr/developers/docs/programming-languages/golang/index.md index ac743a8ce9f..903ebe9533c 100644 --- a/src/content/translations/fr/developers/docs/programming-languages/golang/index.md +++ b/src/content/translations/fr/developers/docs/programming-languages/golang/index.md @@ -81,4 +81,4 @@ Vous cherchez davantage de ressources ? Consultez [ethereum.org/developers.](/d ## Autres ressources {#other-aggregated-lists} - [Génial Ethereum](https://github.com/btomashvili/awesome-ethereum) -- [Consensys: une liste définitive des outils pour les développeurs d'Ethereum](https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974) | [Source GitHub](https://github.com/ConsenSys/ethereum-developer-tools-list) +- [Consensys : une liste définitive des outils pour les développeurs d'Ethereum](https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974) | [Source GitHub](https://github.com/ConsenSys/ethereum-developer-tools-list) diff --git a/src/content/translations/fr/developers/docs/programming-languages/javascript/index.md b/src/content/translations/fr/developers/docs/programming-languages/javascript/index.md index 4be48af284b..10cff7bf7dc 100644 --- a/src/content/translations/fr/developers/docs/programming-languages/javascript/index.md +++ b/src/content/translations/fr/developers/docs/programming-languages/javascript/index.md @@ -20,6 +20,7 @@ Exploitez ces bibliothèques pour interagir avec des contrats intelligents sur E - [Web3.js](https://web3js.readthedocs.io/) - [Ethers.js](https://docs.ethers.io/) _- Comprend l'implémentation d'un portefeuille Ethereum et des utilitaires en JavaScript et TypeScript._ +- [viem](https://viem.sh) –est une proposition d'interface TypeScript pour Ethereum, fournissant des primitives permettant de programmer des opérations spécifiques, qui sont nécessaires pour interagir avec Ethereum. ### Contrats intelligents {#smart-contracts} @@ -50,10 +51,12 @@ Si vous préférez lire du code, ce extrait JavaScript peut être une excellente ### Nœuds et clients {#nodes-and-clients} -Il existe un client Ethereumjs en cours de développement. Cela vous permettra de découvrir comment les clients Ethereum fonctionnent dans un langage que vous comprenez. +L'un des clients logiciels d'Ethereum se trouve actuellement en phase de test, vous permettant ainsi de découvrir le fonctionnement des clients de test d'Ethereum, dans un langage de programmation qui vous est propre : JavaScript ! + +Il était jadis bâti sur des systèmes indépendants sur lesquels pouvaient être installés les systèmes d'exploitation hôte[`repository`](https://github.com/ethereumjs/ethereumjs-client), par contre, il a ensuite été implémenté en tant que paquet dans la monorepo de la machine virtuelle d'Ethereum. **Jetez un œil au client** -[`ethereumjs-client`](https://github.com/ethereumjs/ethereumjs-client) +[`ethereumjs-client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client) ## Autres projets {#other-projects} diff --git a/src/content/translations/fr/developers/docs/programming-languages/rust/index.md b/src/content/translations/fr/developers/docs/programming-languages/rust/index.md index 8f534bfadad..9a5d60e9c9d 100644 --- a/src/content/translations/fr/developers/docs/programming-languages/rust/index.md +++ b/src/content/translations/fr/developers/docs/programming-languages/rust/index.md @@ -51,6 +51,7 @@ Besoin d’une approche plus élémentaire ? Consultez [ethereum.org/learn](/le - [Foundry](https://github.com/gakonst/foundry)- _Boîte à outils pour le développement d'applications Ethereum_ - [Ethers_rs](https://github.com/gakonst/ethers-rs) - _Bibliothèque Ethereum et implémentation de portefeuille_ - [SewUp](https://github.com/second-state/SewUp) - _Bibliothèque pour vous aider aussi bien à créer votre contrat Webassembly Ethereum avec Rust que développer un backend commun._ +- [Substreams](https://github.com/streamingfast/substreams) - _Il s'agit de protocoles d'indexation décentralisés des données qui sont soumises à une période d'immobilisation _ - [Reth](https://github.com/paradigmxyz/reth) Reth (sous le nom de Rust Ethereum, en abrégé Reth, prononciation) : il s'agit d'une nouvelle implémentation de nœud complet sur Ethereum Vous cherchez davantage de ressources ? Consultez [ethereum.org/developers.](/developers/) diff --git a/src/content/translations/fr/developers/docs/scaling/optimistic-rollups/index.md b/src/content/translations/fr/developers/docs/scaling/optimistic-rollups/index.md index 55930bf23cc..da2d83fb6e2 100644 --- a/src/content/translations/fr/developers/docs/scaling/optimistic-rollups/index.md +++ b/src/content/translations/fr/developers/docs/scaling/optimistic-rollups/index.md @@ -260,6 +260,6 @@ Plusieurs implémentations de rollups optimistes existent, que vous pouvez inté - [Comment fonctionnent les rollups optimistes (Le guide complet)](https://www.alchemy.com/overviews/optimistic-rollups) - [Tout ce que vous devez savoir sur les rollups optimisés](https://research.paradigm.xyz/rollups) - [Le guide essentiel pour Arbitrum](https://newsletter.banklesshq.com/p/the-essential-guide-to-arbitrum) -- [Comment fonctionne réellement le rollup d'Optimism ?](https://research.paradigm.xyz/optimism) +- [Comment fonctionne réellement le rollup d'Optimism ?](https://www.paradigm.xyz/2021/01/how-does-optimisms-rollup-really-work) - [OVM Deep Dive](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52) - [Qu’est-ce que la machine virtuelle optimiste ?](https://www.alchemy.com/overviews/optimistic-virtual-machine) diff --git a/src/content/translations/fr/developers/docs/smart-contracts/deploying/index.md b/src/content/translations/fr/developers/docs/smart-contracts/deploying/index.md index aee467780a8..4e88d73a96c 100644 --- a/src/content/translations/fr/developers/docs/smart-contracts/deploying/index.md +++ b/src/content/translations/fr/developers/docs/smart-contracts/deploying/index.md @@ -57,6 +57,10 @@ Une fois déployé, votre contrat aura une adresse Ethereum comme les autres [co - [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/) + ## Tutoriels connexes {#related-tutorials} - [Déployer votre premier contrat intelligent](/developers/tutorials/deploying-your-first-smart-contract/) _– Introduction au déploiement de votre premier contrat intelligent sur un réseau de test Ethereum_ @@ -73,6 +77,6 @@ _Une ressource communautaire vous a aidé ? Modifiez cette page et ajoutez-la !_ ## Thèmes connexes {#related-topics} -- [Infrastructures de développement](/developers/docs/frameworks/) +- [Frameworks de développement](/developers/docs/frameworks/) - [Exécuter un nœud Ethereum](/developers/docs/nodes-and-clients/run-a-node/) - [Nœuds en tant que service](/developers/docs/nodes-and-clients/nodes-as-a-service) diff --git a/src/content/translations/fr/developers/docs/smart-contracts/index.md b/src/content/translations/fr/developers/docs/smart-contracts/index.md index ac87a89bb8b..53fe9290a53 100644 --- a/src/content/translations/fr/developers/docs/smart-contracts/index.md +++ b/src/content/translations/fr/developers/docs/smart-contracts/index.md @@ -67,7 +67,7 @@ Tout comme un distributeur automatique peut remplacer un employé dans une bouti ## Sans autorisation {#permissionless} -N'importe qui peut rédiger un contrat intelligent et le déployer sur le réseau. Il vous suffit d'apprendre à coder dans un [langage de contrat intelligent](/developers/docs/smart-contracts/languages/) et de disposer de suffisamment d'ETH pour déployer votre contrat. Techniquement, le fait de déployer un contrat intelligent est une transaction. L'auteur doit donc payer des frais de [Gaz](/developers/docs/gas/) de la même façon qu'il s'acquitterait de ces frais pour un simple transfert d'ETH. Toutefois, les frais de gaz pour le déploiement d'un contrat sont beaucoup plus élevés. +N'importe qui peut rédiger un contrat intelligent et le déployer sur le réseau. Il vous suffit d'apprendre à coder dans un [langage de contrat intelligent](/developers/docs/smart-contracts/languages/) et de disposer de suffisamment d'ETH pour déployer votre contrat. Techniquement, le fait de déployer un contrat intelligent est une transaction. L'auteur doit donc payer des frais de [gaz](/developers/docs/gas/) de la même façon qu'il s'acquitterait de ces frais pour un simple transfert d'ETH. Toutefois, les frais de gaz pour le déploiement d'un contrat sont beaucoup plus élevés. Pour la rédaction des contrats intelligents, Ethereum propose aux développeurs des langages conviviaux : @@ -86,9 +86,9 @@ En savoir plus sur la [composabilité des contrats intelligents](/developers/doc ## Limitations {#limitations} -Les contrats intelligents seuls ne peuvent pas obtenir d'informations sur les événements du "monde réel", dans la mesure où ils ne peuvent pas envoyer de requêtes HTTP. C'est un choix délibéré. Le fait de s'appuyer sur des informations externes pourrait compromettre le consensus, qui est essentiel en matière de sécurité et de décentralisation. +Les contrats intelligents seuls ne peuvent pas obtenir d'informations sur les événements du "monde réel", dans la mesure où ils ne peuvent pas récupérer de données depuis des sources hors chaîne. Cela signifie qu'ils ne peuvent pas réagir aux événements du monde réel. C'est un choix délibéré. Le fait de s'appuyer sur des informations externes pourrait compromettre le consensus, qui est essentiel en matière de sécurité et de décentralisation. -Il existe des moyens de contourner le problème en utilisant [oracles](/developers/docs/oracles/). +Il est toutefois important que les applications de la blockchain puissent utiliser des données hors chaîne. Pour ce faire, il est possible d'utiliser [oracles](/developers/docs/oracles/), des outils capables d'ingérer des données hors chaîne et de mettre à la disposition des contrats intelligents. Une autre limitation des contrats intelligents est la taille maximale des contrats. Un contrat intelligent ne peut pas dépasser 24 Ko, sans quoi il sera à court de gaz. Ceci peut être contourné en utilisant [Le modèle du diamant](https://eips.ethereum.org/EIPS/eip-2535). @@ -104,13 +104,8 @@ Les contrats multisig (signature multiple) sont des comptes de contrats intellig - [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts) - [Forum communautaire](https://forum.openzeppelin.com/c/general/16) -**DappSys -** **_Blocs de construction sûrs, simples et flexibles pour les contrats intelligents_** - -- [Dappsys](https://dappsys.readthedocs.io/) -- [GitHub](https://github.com/dapphub/dappsys) - ## Complément d'information {#further-reading} -- [Les Contrats intelligents : La technologie Blockchain qui va remplacer les juristes](https://blockgeeks.com/guides/smart-contracts/) _- Blockgeeks_ -- [Meilleures pratiques pour le développement de contrats intelligents](https://yos.io/2019/11/10/smart-contract-development-best-practices/) _- Yos Riady, 10 novembre 2019_ -- [Contrats propres - un guide sur les modèles et bonnes pratiques pour les contrats intelligents](https://www.wslyvh.com/clean-contracts/) _– 30 juillet 2020 - wslyvh_ +- [Coinbase : Qu'est-ce qu'un contrat intelligent ?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract) +- [Chainlink : Qu'est-ce qu'un contrat intelligent ?](https://chain.link/education/smart-contracts) +- [Vidéo : Expliqués Simplement - Les Contrats Intelligents](https://youtu.be/ZE2HxTmxfrI) diff --git a/src/content/translations/fr/developers/docs/smart-contracts/libraries/index.md b/src/content/translations/fr/developers/docs/smart-contracts/libraries/index.md index fc35c2a3e55..938717c0945 100644 --- a/src/content/translations/fr/developers/docs/smart-contracts/libraries/index.md +++ b/src/content/translations/fr/developers/docs/smart-contracts/libraries/index.md @@ -102,6 +102,11 @@ Enfin, au moment où vous décidez s'inclure une bibliothèque, considérez son - [GitHub](https://github.com/HQ20/contracts) +**SDK Solidity thirdweb -** **_Fournit les outils nécessaires pour construire efficacement des contrats intelligents personnalisés_** + +- [Documentation](https://portal.thirdweb.com/solidity/) +- [GitHub](https://github.com/thirdweb-dev/contracts) + ## Tutoriels connexes {#related-tutorials} - [Considérations de sécurité pour les développeurs Ethereum](/developers/docs/smart-contracts/security/) _- Tutoriel sur les considérations de sécurité lors de la construction de contrats intelligents, y compris l'utilisation de la bibliothèque_ diff --git a/src/content/translations/fr/developers/docs/smart-contracts/security/index.md b/src/content/translations/fr/developers/docs/smart-contracts/security/index.md index 8da4cdf59a2..77be68f22bb 100644 --- a/src/content/translations/fr/developers/docs/smart-contracts/security/index.md +++ b/src/content/translations/fr/developers/docs/smart-contracts/security/index.md @@ -504,6 +504,8 @@ Si vous comptez interroger un oracle sur le prix des actifs, envisagez d'utilise - **[HashEx](https://hashex.org/)** - _Les rapports d'audit présentés par HashEx relatifs à la blockchain et aux contrats intelligents, visent à garantir la sécurité des cryptomonnaies, fournissant des services tels que le développement des contrats intelligents, le test de pénétration, ou le conseil blockchain._ +- **[Code4rena](https://code4rena.com/)** - _Une plateforme concurrentielle, réputée pour ses audits de sécurité, qui prête main forte aux experts garantissant la sécurité des smart-contracts, dans l'objectif commun d'œuvrer à la sécurisation du Web3. _ + ### Plateformes de récompense de bug {#bug-bounty-platforms} - **[Immunefi](https://immunefi.com/)** - _Plateforme de récompense de bug pour les contrats intelligents et les projets DeFi, où les chercheurs en sécurité examinent le code, révèlent les vulnérabilités, sont payés et rendent les crypto-monnaies plus sûres._ diff --git a/src/content/translations/fr/developers/docs/transactions/index.md b/src/content/translations/fr/developers/docs/transactions/index.md index 76915b80dd0..d899f0355de 100644 --- a/src/content/translations/fr/developers/docs/transactions/index.md +++ b/src/content/translations/fr/developers/docs/transactions/index.md @@ -22,12 +22,13 @@ Les transactions requièrent des frais et doivent être incluses dans un bloc va Une transaction soumise comprend les informations suivantes : +- `depuis` - l'adresse de l'expéditeur qui signera la transaction. On aura donc une adresse émettrice, car les contrats et les adresses (Accounts) ne vous permettront pas d'envoyer des transactions. - `recipient` : adresse de réception (S'il s'agit d'un compte externe, la transaction va transférer la valeur. S'il s'agit d'un compte de contrat, la transaction exécutera le code du contrat.) - `signature` : identifiant de l'expéditeur. Cette signature est générée lorsque la clé privée de l'expéditeur signe la transaction, et confirme que l'expéditeur a autorisé cette transaction. -- `nonce` - un compteur d'incrémentation séquentielle qui indique le numéro de transaction du compte -- `value` : quantité d'ETH à transférer de l'expéditeur au destinataire (en WEI, une dénomination de l'ETH). -- `data` : champ facultatif destiné à inclure des données arbitraires. -- `gasLimit` : Quantité maximum d’unités de gaz pouvant être consommée par la transaction. Les unités de gaz représentent les étapes de calcul. +- `nonce` -, il s'agit d'une machine à travers laquelle un nombre maximum d'essais consécutifs est réalisé, il qualifie aussi le numéro de transactions dans la liste des transactions sortantes depuis votre adresse +- `valeur` - montants de l'Ether (ETH) à transférer de l'expéditeur au destinataire (libellé en WEI parallèlement à la valeur de l'Ether, qui atteint les 1e+18wei) +- `input data` – champ facultatif permettant d'inclure des données arbitraires +- `gasLimit` : Quantité maximum d’unités de gaz pouvant être consommée par la transaction. La [machine virtuelle d'Ethereum (EVM)](/developers/docs/evm/opcodes) donne une estimation de la quantité de gaz (unité virtuelle) nécessaire à une opération, ce qui permet de représenter les coûts informatiques d'une opération sur le réseau - `maxPriorityFeePerGas` : la quantité maximale de gaz à inclure comme pourboire pour le validateur - `maxFeePerGas` : montant maximum de gaz prêt à être payé pour la transaction (y compris `baseFeePerGas` et `maxPriorityFeePerGas`) @@ -98,7 +99,7 @@ Exemple de réponse : } ``` -- `raw` est la transaction signée sous forme de préfixe de longueur récursive (RLP) +- dans la Structure de Données Récursives (SDR), la transaction signée prend essentiellement la forme d'une séquence d'instructions codées`` [](/developers/docs/data-structures-and-encoding/rlp) - `tx` est la transaction signée sous la forme JSON Grâce au hachage de la signature, il est possible de prouver de façon cryptographique que la transaction provient de l'expéditeur et qu'elle a été soumise au réseau. @@ -162,10 +163,10 @@ Tout gaz non utilisé dans une transaction est remboursé sur le compte de l'uti Voici ce qui se passe une fois qu'une transaction a été soumise : -1. Quand vous envoyez une transaction, la cryptographie génère un hachage de transaction : `0x97d99bc77292111a21b12c933c949d4f31684f1d6954ff477d0477538ff017` -2. La transaction est ensuite diffusée sur le réseau et incluse dans un groupe comportant de nombreuses autres transactions. +1. Le hash de la transaction vient d'être généré grâce aux fonctions de hachage (suite d'opérations mathématiques et cryptographiques) : `0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017` +2. La transaction est ensuite diffusée sur le réseau et ajoutée à un pool de transactions composé de toutes les autres transactions réseau en attente. 3. Un validateur doit sélectionner votre transaction et l'inclure dans un bloc pour la vérifier et la considérer comme « réussie ». -4. Au fur et à mesure que le temps passe, le bloc contenant votre transaction sera mis à niveau vers « justifié » puis « finalisé ». Grâce à ces mises à niveau, vous êtes davantage assuré que votre transaction a été réussie et qu'elle ne sera jamais altérée. Une fois un bloc « finalisé », il ne pourrait être changé que par une attaque qui coûterait plusieurs milliards de dollars. +4. Au fur et à mesure que le temps passe, le bloc contenant votre transaction sera mis à niveau vers « justifié » puis « finalisé ». Grâce à ces mises à niveau, vous êtes davantage assuré que votre transaction a été réussie et qu'elle ne sera jamais altérée. Une fois qu'un bloc est "finalisé", il ne peut plus être modifié par une attaque au niveau du réseau qui coûterait plusieurs milliards de dollars. ## Démonstration visuelle {#a-visual-demo} @@ -175,7 +176,7 @@ Regardez Austin vous guider à travers les transactions, le gaz et le minage. ## Enveloppe de transaction saisie {#typed-transaction-envelope} -Ethereum avait à l'origine un unique format pour les transactions. Chaque transaction contenait une nonce, le prix du gaz, la limite de gaz, l'adresse de destination, la valeur, les données, v, r et s. Ces champs sont encodés en RLP, pour ressembler à ceci : +Ethereum avait à l'origine un unique format pour les transactions. Chaque transaction contenait une nonce, le prix du gaz, la limite de gaz, l'adresse de destination, la valeur, les données, v, r et s. Il s'agit de champs d'application [d'un RLP](/developers/docs/data-structures-and-encoding/rlp/), qui pourraient ressembler à ceci : `RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])` diff --git a/src/content/translations/fr/developers/tutorials/nft-minter/index.md b/src/content/translations/fr/developers/tutorials/nft-minter/index.md index 101b94e2294..09301561212 100644 --- a/src/content/translations/fr/developers/tutorials/nft-minter/index.md +++ b/src/content/translations/fr/developers/tutorials/nft-minter/index.md @@ -195,7 +195,7 @@ Si vous ouvrez le fichier `App.js`, qui est le composant principal en React agis Maintenant que nous comprenons ce avec quoi nous travaillons, mettons en place notre portefeuille Ethereum ! -## : Configurez votre portefeuille Ethereum {#set-up-your-ethereum-wallet} +## Configurez votre portefeuille Ethereum {#set-up-your-ethereum-wallet} Pour que les utilisateurs puissent interagir avec votre contrat intelligent, ils devront connecter leur portefeuille Ethereum à votre dApp. diff --git a/src/content/translations/fr/energy-consumption/index.md b/src/content/translations/fr/energy-consumption/index.md index 115f2b7f498..f8d4be8680c 100644 --- a/src/content/translations/fr/energy-consumption/index.md +++ b/src/content/translations/fr/energy-consumption/index.md @@ -6,36 +6,38 @@ lang: fr # Les dépenses énergétiques d'Ethereum {#proof-of-stake-energy} -Ethereum est une blockchain verte. Il utilise un mécanisme de consensus de [preuve d'enjeu](/developers/docs/consensus-mechanisms/pos), utilisant l'ETH au lieu de [l'énergie pour sécuriser le réseau](/developers/docs/consensus-mechanisms/pow). Le mécanisme de preuve d'enjeu d'Ethereum n'utilise que [~0.0026 TWh/yr](https://carbon-ratings.com/eth-report-2022) sur l'ensemble du réseau global. +Ethereum est une blockchain verte. Le mécanisme de consensus par [preuve d'enjeu](/developers/docs/consensus-mechanisms/pos) d'Ethereum utilise de l'ETH au lieu [d'énergie pour sécuriser le réseau](/developers/docs/consensus-mechanisms/pow). La consommation énergétique d'Ethereum est approximativement [0.0026 TWh/an](https://carbon-ratings.com/eth-report-2022) pour l'ensemble du réseau. -Le [CCRI (Crypto Carbon Ratings Institute)](https://carbon-ratings.com) a produit des estimations ascendantes de la consommation d'électricité et de l'empreinte carbone du réseau Ethereum ([voir le rapport](https://carbon-ratings.com/eth-report-2022)). Il a mesuré la consommation d'électricité de différents nœuds selon diverses configurations matérielles et logiciels clients. Il en résulte une estimation de **2,601 MWh** (0. 0026 TWh) pour la consommation annuelle d'électricité du réseau (septembre 2022), ce qui correspond à des émissions de carbone annuelles de **870 tonnes de CO2e** en appliquant des facteurs d'intensité de carbone spécifiques à la région. +L'estimation de la consommation énergétique d'Ethereum se base sur une étude réalisée par le [CCRI (Crypto Carbon Ratings Institute)](https://carbon-ratings.com). Ils ont généré des estimations détaillées de la consommation d'électricité et de l'empreinte carbone du réseau Ethereum ([voir le rapport](https://carbon-ratings.com/eth-report-2022)). Ils ont mesuré la consommation d'électricité de différents nœuds avec différentes configurations matérielles et différents logiciels clients. Ils ont estimé que les **2,601 MWh** (0.0026 TWh) d'électricité consommés annuellement par le réseau correspond à **870 tonnes CO2e** annuelles en appliquant des facteur régionaux d'ntensité de carbone. Cette valeur change au fur et à mesure que des nœuds entrent et sortent du réseau. Vous pouvez suivre ces variations grâce à l'Indice de Durabilité du Réseau Blockchain de Cambridge qui offre une estimation moyenne sur 7 jours (notez qu'ils utilisent une méthode légèrement différente pour leurs estimations - plus de détails sont disponibles sur leur site). + +Pour replacer la consommation énergétique d'Ethereum dans son contexte, nous pouvons comparer les estimations annualisées d'autres secteurs industriels. Cela nous aide à mieux comprendre si l'estimation pour Ethereum est élevée ou faible. -Le graphique ci-dessus montre la consommation annuelle estimée d'énergie en TWh/an pour divers secteurs (donnée de juin 2022). Il convient de noter que les estimations présentées dans le graphique proviennent de sources accessibles au public et pour lesquelles les liens figurent dans le tableau ci-dessous. CEBCI désigne l'indice de consommation d'électricité de Cambridge Bitcoin. Les valeurs sont fournies à titre d'illustration et ne constituent pas une estimation, une promesse ou une prévision officielle. +Le tableau ci-dessous montre la consommation énergétique estimée annuellement en TWh/an pour Ethereum, comparée à plusieurs autres secteurs. Les estimations fournies proviennent d'informations publiquement disponibles (consultées en mai 2023). Les liens vers les sources sont disponibles dans le tableau ci-dessous : + +| | Consommation d’énergie annualisée (TWh) | Comparaison avec Ethereum PoS | Source | +| :------------------------- | :-------------------------------------: | :---------------------------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Centres de données globaux | 200 | 77,000x | [source](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) | +| Extraction d'or | 131 | 50 000 x | [source](https://ccaf.io/cbnsi/cbeci/comparisons) | +| Bitcoin | 131 | 50 000 x | [source](https://ccaf.io/cbnsi/cbeci/comparisons) | +| Ethereum PoW | 78 | 30 000 x | [source](https://digiconomist.net/ethereum-energy-consumption) | +| Youtube (direct seulement) | 12 | 4600x | [source](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf) | +| Jeux vidéos aux États-Unis | 34 | 13 000 x | [source](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) | +| Netflix | 0,451 | 173 x | [source](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) | +| PayPal | 0,26 | 100 x | [source](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261) | +| Airbnb | 0,02 | 8x | [source]() | +| Ethereum PoS | 0,0026 | 1 x | [source](https://carbon-ratings.com/eth-report-2022) | -Pour mettre en perspective la consommation d'énergie d'Ethereum, nous pouvons comparer des estimations annualisées pour d'autres industries - cela nous permet de mieux comprendre si 0,0026 TWh est une quantité importante ou faible. Les données sont résumées dans le graphique en barres ci-dessus, mais le tableau ci-dessous founit plus de details : +Il est difficile d'obtenir des estimations précises de la consommation d'énergie, en particulier lorsque ce qui est mesuré a une chaîne d'approvisionnement complexe ou des caractéristiques de déploiement qui influencent son efficacité. Prenons Netflix ou Youtube comme exemples. Les estimations de leur consommation d'énergie varient selon qu'elles incluent uniquement l'énergie utilisée pour entretenir leurs systèmes et fournir du contenu aux utilisateurs (_dépenses directes_) ou qu'elles incluent les dépenses nécessaires pour produire du contenu, gérer les bureaux de l'entreprise, faire de la publicité, etc (_dépenses indirectes_). L'utilisation indirecte pourrait également inclure l'énergie nécessaire à la consommation de contenu sur les appareils des utilisateurs finaux tels que les téléviseurs, les ordinateurs et les téléphones portables, ce qui dépend également des appareils utilisés. -| | Consommation d’énergie annualisée (TWh) | Comparaison avec Ethereum PoS | Source | -| :------------------------- | :-------------------------------------: | :---------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| Extraction d'or | 240 | 92 000 x | [source](https://www.kitco.com/news/2021-05-17/Gold-s-energy-consumption-doubles-that-of-bitcoin-Galaxy-Digital.html) | -| Extraction d'or | 130 | 50 000 x | [source](https://ccaf.io/cbeci/index/comparisons) | -| Bitcoin | 130 | 50 000 x | [source](https://digiconomist.net/bitcoin-energy-consumption) | -| Bitcoin | 100 | 38 000 x | [source](https://ccaf.io/cbeci/index/comparisons) | -| YouTube | 244 | 94 000 x | [source](https://thefactsource.com/how-much-electricity-does-youtube-use/) | -| Centres de données globaux | 200 | 78 000x | [source](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) | -| Netflix | 0,45 | 175 x | [source](https://s22.q4cdn.com/959853165/files/doc_downloads/2020/02/0220_Netflix_EnvironmentalSocialGovernanceReport_FINAL.pdf) | -| Netflix | 94 | 36 000 x | [source](https://theshiftproject.org/en/article/unsustainable-use-online-video/) | -| PayPal | 0,26 | 100 x | [source](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261) | -| Jeux vidéos aux États-Unis | 34 | 13 000 x | [source](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) | -| Ethereum PoW | 78 | 30 000 x | [source](https://digiconomist.net/ethereum-energy-consumption) | -| Ethereum PoS | 0,0026 | 1 x | [source](https://carbon-ratings.com/eth-report-2022) | +Cette question est abordée sur [Carbon Brief](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix). Dans le tableau ci-dessus, la valeur déclarée pour Netflix comprend l'utilisation _directe_ et _indirecte_ déclarée par l'entreprise. Youtube ne fournit qu'une estimation de sa propre _dépense énergétique directe_, qui est d'environ [12 TWh/an](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf). -Les estimations de la dépense énergétique de YouTube ont aussi été décomposées par chaînes et par vidéos individuelles. [Ces estimations](https://thefactsource.com/how-much-electricity-does-youtube-use/) montrent que YouTube a consommé 175 fois plus d'énergie lors des visionnages de Gangnam Style en 2019 que l'Ethereum n'en utilise par an. +Le tableau et le graphique ci-dessus comprennent également des comparaisons avec Bitcoin et Ethereum proof-of-work. Il est important de noter que la consommation d'énergie des réseaux de preuve de travail n'est pas statique - elle évolue au jour le jour. La valeur utilisée pour Ethereum proof-of-work est celle juste avant [La Fusion](/roadmap/merge/), comme prédit par [Digiconomist](https://digiconomist.net/ethereum-energy-consumption). D'autres sources, telles que le [Cambridge Blockchain Network Sustainability Index](https://ccaf.io/cbnsi/ethereum/1) estiment que la consommation d'énergie a été beaucoup plus faible (plus proche de 20 TWh/an). Les estimations de la consommation d'énergie de Bitcoin varient également considérablement d'une source à l'autre et c'est un sujet qui suscite de nombreux [débats](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/) nuancés non seulement sur la quantité d'énergie consommée, mais aussi sur les sources de cette énergie et l'éthique qui s'y rattache. La consommation d'énergie ne correspond pas nécessairement à l'empreinte environnementale, car différents projets peuvent utiliser différentes sources d'énergie, par exemple une proportion plus ou moins grande d'énergies renouvelables. Par exemple, le [Cambridge Bitcoin Electricity Consumption Index](https://ccaf.io/cbnsi/cbeci/comparisons) indique que la demande du réseau Bitcoin pourrait théoriquement être alimentée par le brûlage de gaz ou par de l'électricité qui serait autrement perdue lors de la transmission et de la distribution. La voie de la durabilité empruntée par Ethereum a consisté à remplacer la partie du réseau gourmande en énergie par une alternative verte. -Il est compliqué d'obtenir des estimations précises de la consommation d'énergie, surtout lorsque ce qui est mesuré présente une chaîne d'approvisionnement complexe ou des détails de déploiement qui influencent son efficacité. Par exemple, nous avons inclus une estimation haute et une estimation basse pour l'extraction de l'or qui diffère d'environ 90 TWh. Les estimations de la consommation d'énergie de Netflix varient considérablement selon la source. Leurs propres estimations autodéclarées sont environ 20 fois plus faible qu'une estimation indépendante - il existe une discussion sur les raisons de ce phénomène sur [Carbon Brief](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix). De même, la consommation de Youtube est estimée à environ [244 TWh/an](https://thefactsource.com/how-much-electricity-does-youtube-use/), bien que l'énergie consommée dépende beaucoup du type d'appareil sur lequel les vidéos sont diffusées et de l'efficacité énergétique de l'infrastructure sous-jacente, comme les centres de données - les valeurs appropriées pour ces paramètres sont difficiles à estimer, de sorte qu'une marge d'incertitude substancielle existe. +Vous pouvez consulter les estimations de la consommation d'énergie et des émissions de carbone pour de nombreuses industries sur le site [Cambridge Blockchain Network Sustainability Index](https://ccaf.io/cbnsi/ethereum). -Le graphique ci-dessus inclut également des comparaisons avec Bitcoin et Ethereum lorsqu'il utilisait la preuve de travail. Les estimations de la consommation d'énergie du Bitcoin varient considérablement selon les sources. Ce sujet suscite beaucoup de [débats](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/) nuancés non seulement sur la quantité d'énergie consommée, mais aussi sur les sources de cette énergie et l'éthique qui y est associée. +## Estimations par transaction {#per-transaction-estimates} De nombreux articles estiment les dépenses énergétiques pour les blockchains « par transaction ». Cela peut être trompeur dans la mesure où l'énergie nécessaire pour proposer et valider un bloc est indépendante du nombre de transactions qu'il contient. Une unité de dépense énergétique par transaction implique qu'un nombre moins élevé de transactions entraînerait une moindre dépense énergétique et vice-versa, ce qui n'est pas le cas. En outre, l'estimation par transaction dépend fortement de la façon dont le débit de transaction d'une blockchain est défini, sachant qu'il est possible de jouer avec cette définition pour que la valeur semble plus ou moins grande. @@ -45,30 +47,31 @@ Par exemple, sur Ethereum, le débit de transaction n'est pas seulement celui de Les dépenses énergétiques d'Ethereum sont très faibles, mais cela n'a pas toujours été le cas. Ethereum utilisait à l'origine la preuve de travail : celle-ci avait un coût environnemental bien plus élevé que le mécanisme actuel de preuve d'enjeu. -Depuis le tout début, Ethereum prévoyait d'implémenter un mécanisme de consensus par preuve d'enjeu, mais il aura fallu des années de recherches et de développement ciblés pour y parvenir sans sacrifier la sécurité et la décentralisation. C'est pourquoi un mécanisme de preuve de travail a été utilisé pour faire démarrer le réseau. Un consensus de preuve de travail exige que les mineurs utilisent leur matériel informatique pour calculer une valeur, en dépensant de l'énergie pendant le processus. La consommation énergétique totale d'Ethereum a atteint son apogée en février 2022 avec un peu moins de 94 TWh/an lors du pic du marché haussier des cryptomonnaies. Juste avant le passage à la preuve d'enjeu, la consommation d'énergie avoisinait les [78 TWh/an](https://digiconomist.net/ethereum-energy-consumption), comparable à celle de l'Ouzbékistan, avec une émission de carbone équivalente à celle de l'Azerbaïdjan (33 MT/an). +Depuis le tout début, Ethereum prévoyait d'implémenter un mécanisme de consensus par preuve d'enjeu, mais il aura fallu des années de recherches et de développement ciblés pour y parvenir sans sacrifier la sécurité et la décentralisation. Par conséquent, un mécanisme de preuve de travail a été utilisé pour faire démarrer le réseau. Un consensus de preuve de travail exige que les mineurs utilisent leur matériel informatique pour calculer une valeur, en dépensant de l'énergie pendant le processus. -![Comparaison de la consommation d'énergie entre Ethereum pré-fusion et post-fusion. Sont présentées à gauche la tour Eiffel de 330 mètres de haut et à droite une figurine de jouet en plastique de 4 cm de haut vue à travers une loupe.](energy_consumption_pre_post_merge.png) +![Comparaison de la consommation d'énergie d'Ethereum avant et après La Fusion, en utilisant la tour Eiffel (300 mètres de haut) sur la gauche pour symboliser la grande consommation d'énergie avant La Fusion, et une petite figurine Lego de 4 cm de haut sur la droite pour représenter la réduction drastique de consommation d'énergie après La Fusion](energy_consumption_pre_post_merge.png) -Le CCRC a examiné l'impact de la transition d'Ethereum de la preuve de travail à la preuve d'enjeu. La consommation d'électricité annualisée a été réduite de plus de **99,988 %**. De même, l'empreinte carbone d'Ethereum a été réduite d'environ **99,992 %** (de 11.016.000 à 870 tonnes de CO2e). Dépeint métaphoriquement, cela correspond à une réduction des émissions de la hauteur de la Tour Eiffel à celle d'un petit jouet en plastique, comme indiqué dans la figure ci-dessus. Le coût environnemental de la sécurisation du réseau est de ce fait réduit de façon drastique. Simultanément, on estime que la sécurité du réseau a augmenté. +Le CCRI estime que The Merge a réduit la consommation d'électricité annualisée d'Ethereum de plus de **99,988%**. De même, l'empreinte carbone d'Ethereum a été réduite d'environ **99,992%** (de 11 016 000 à 870 tonnes de CO2e). Pour mettre les choses en perspective, la réduction des émissions équivaut à passer de la hauteur de la Tour Eiffel à celle d'une petite figurine en plastique, comme l'illustre la figure ci-dessus. Par conséquent, le coût environnemental de la sécurisation du réseau est considérablement réduit. Dans le même temps, la sécurité du réseau est présumée s'être améliorée. ## Une couche d'application verte {#green-applications} -Bien que la consommation d'énergie d'Ethereum soit très faible, il existe également une communauté de **finance régénérative (ReFi)** substantielle, croissante et très active sur Ethereum. Les applications ReFi utilisent les composants DeFi pour construire des applications financières présentant des externalités positives bénéfiques pour l'environnement. La ReFi fait partie d'un plus large mouvement [« solarpunk »](https://en.wikipedia.org/wiki/Solarpunk) qui est étroitement aligné avec Ethereum et vise à associer progrès technologiques et gérance environnementale. La nature décentralisée, sans permission et composable d'Ethereum en fait la couche de base idéale pour les communautés ReFi et solarpunk. +Bien que la consommation d'énergie d'Ethereum soit très faible, il existe également une communauté de [**finance régénérative (ReFi)**](/refi/) substantielle, croissante et très active qui construit sur Ethereum. Les applications ReFi utilisent les composants DeFi pour construire des applications financières présentant des externalités positives bénéfiques pour l'environnement. La ReFi fait partie d'un plus large mouvement [« solarpunk »](https://en.wikipedia.org/wiki/Solarpunk) qui est étroitement aligné avec Ethereum et vise à associer progrès technologiques et gérance environnementale. La nature décentralisée, sans permission et composable d'Ethereum en fait la couche de base idéale pour les communautés ReFi et solarpunk. Les plateformes de financement de biens publics natifs Web3 telles que [Gitcoin](https://gitcoin.co) exécutent des rondes climatiques pour stimuler la construction écologique sur la couche d'application d'Ethereum. Grâce au développement de ces initiatives (et d'autres comme par exemple [DeSci](/desci/)), Ethereum est en train de devenir une technologie positive sur le plan environnemental et social. - Si vous pensez que cette page pourrait être plus précise, veuillez soulever un problème ou un PR. Les statistiques de cette page sont des estimations basées sur des données publiques - elles ne représentent pas une déclaration officielle ou une promesse de l'équipe ethereum.org team ou de la Fondation Ethereum. + Si vous pensez que cette page pourrait être plus précise, veuillez soulever un problème ou un PR. Les statistiques de cette page sont des estimations basées sur des données publiques - elles ne représentent pas une déclaration officielle ou une promesse de l'équipe ethereum.org team ou de la Fondation Ethereum. ## Complément d'information {#further-reading} +- [Index de Durabilité des Réseaux Blockchain de Cambridge](https://ccaf.io/cbnsi/ethereum) - [Rapport de la Maison-Blanche sur les blockchains de preuve de travail](https://www.whitehouse.gov/wp-content/uploads/2022/09/09-2022-Crypto-Assets-and-Climate-Report.pdf) -- [Consommation énergétique d'Ethereum](https://mirror.xyz/jmcook.eth/ODpCLtO4Kq7SCVFbU4He8o8kXs418ZZDTj0lpYlZkR8) -- [Ethereum Emissions: A Bottom-up Estimate](https://kylemcdonald.github.io/ethereum-emissions/) – Kyle McDonald\_ -- [Ethereum Energy Consumption Index](https://digiconomist.net/ethereum-energy-consumption/) – _Digiconomist_ -- [ETHMerge.com](https://ethmerge.com/) — _[@InsideTheSim](https://twitter.com/InsideTheSim)_ +- [Les Émissions d'Ethereum : une estimation de bas à haut](https://kylemcdonald.github.io/ethereum-emissions/) - _Kyle McDonald_ +- [Index de Consommation d'Énergie d'Ethereum](https://digiconomist.net/ethereum-energy-consumption/) - _Digiconomist_ +- [ETHMerge.com](https://ethmerge.com/) - _[@InsideTheSim](https://twitter.com/InsideTheSim)_ - [La Fusion - Implications sur la consommation d'électricité et l'empreinte carbone du réseau Ethereum](https://carbon-ratings.com/eth-report-2022) - _CCRI_ +- [Consommation énergétique d'Ethereum](https://mirror.xyz/jmcook.eth/ODpCLtO4Kq7SCVFbU4He8o8kXs418ZZDTj0lpYlZkR8) ## Sujets connexes {#related-topics} diff --git a/src/content/translations/fr/governance/index.md b/src/content/translations/fr/governance/index.md index eed82899fea..43da462401c 100644 --- a/src/content/translations/fr/governance/index.md +++ b/src/content/translations/fr/governance/index.md @@ -57,7 +57,7 @@ _Note : Toute personne peut faire partie de plusieurs de ces groupes (par exempl ## Qu'est-ce qu'une EIP ? {#what-is-an-eip} -Un processus important utilisé dans la gouvernance Ethereum est la proposition de **Propositions d'amélioration Ethereum (EIP)**. Les EIP sont des normes qui spécifient de nouvelles fonctionnalités ou processus potentiels pour Ethereum. N'importe qui au sein de la communauté Ethereum peut créer une EIP. Par exemple, aucun des auteurs de l'EIP-721, l'EIP qui a standardisé les NFT, n'a travaillé directement sur le développement de protocoles Ethereum. +Un processus important utilisé dans la gouvernance Ethereum est la proposition de **Propositions d'amélioration Ethereum (EIP)**. Les EIP sont des normes qui spécifient de nouvelles fonctionnalités ou processus potentiels pour Ethereum. N'importe qui au sein de la communauté Ethereum peut créer une EIP. Si vous souhaitez écrire une EIP ou participer à une revue par les pairs, et/ou la gouvernance, voir : Plus d'infos les EIP diff --git a/src/content/translations/fr/guides/how-to-create-an-ethereum-account/index.md b/src/content/translations/fr/guides/how-to-create-an-ethereum-account/index.md new file mode 100644 index 00000000000..e02c306aa8d --- /dev/null +++ b/src/content/translations/fr/guides/how-to-create-an-ethereum-account/index.md @@ -0,0 +1,73 @@ +--- +title: Comment "créer" un compte Ethereum +description: Un guide étape par étape sur la création d'un compte Ethereum à l'aide d'un portefeuille. +lang: fr +--- + +# Comment créer un compte Ethereum + +Quiconque peut créer un compte Ethereum à tout moment, gratuitement. Il existe plusieurs façons de procéder, mais la plus simple et la plus courante consiste à utiliser une application appelée "portefeuille". Les portefeuilles créent et sécurisent les clés qui vous permettent d'utiliser Ethereum. Vous pouvez utiliser votre portefeuille pour réaliser des transactions, vérifier le solde de vos jetons et vous connecter à des applications construites sur Ethereum, telles que des échanges, des jeux, des places de marché NFT et bien d'autres encore. Certaines applications "web2" permettent désormais de se connecter avec Ethereum. + +Contrairement à l'ouverture d'un nouveau compte auprès d'une entreprise, la création d'un compte Ethereum se fait librement, en privé et sans demander d'autorisation. Les comptes sont contrôlés par des clés que votre logiciel de portefeuille vous aide à créer, et ils ne sont pas émis par un tiers ni stockés dans un registre centralisé. + +## Étape 1 : Choisir un portefeuille + +Un portefeuille est une application qui vous aide à gérer votre compte Ethereum. Il utilise vos clés pour envoyer et recevoir des transactions et se connecter à des applications. Il existe des dizaines de portefeuilles différents - mobiles, de bureau ou même des extensions de navigateur. + + + Trouver un portefeuille + + +Si vous êtes novice, vous pouvez sélectionner le filtre "Débutant dans les cryptos" sur la page "Trouver un portefeuille" pour identifier les portefeuilles qui devraient inclure toutes les fonctionnalités nécessaires pour les débutants. + +![ +Sélection de filtre sur la page "Trouver un portefeuille".](./wallet-box.png) + +Il y a aussi d'autres filtres de profil pour répondre à vos besoins. Il s'agit d'exemples de portefeuilles couramment utilisés - vous devez faire vos propres recherches avant de faire confiance à tout logiciel. + +## Étape 2: Téléchargez et installez votre application de portefeuille + +Une fois que vous avez choisi votre portefeuille , visitez leur site Web officiel ou l'application officielle, téléchargez et installez-le. Ils devraient tous être gratuits. + +## Étape 3 : Ouvrez l'application et générez ou importez votre compte Ethereum + +La première fois que vous ouvrez votre nouveau portefeuille, il vous sera demandé de choisir entre créer un nouveau compte ou importer un compte existant. Cliquez sur la création d'un nouveau compte. + +## Étape 4 : Conservez votre phrase de récupération + +Certaines applications vous demanderont de posséder une "seed phrase" ou suite de mots (souvent 12 ou 24) également entendue comme "phrase de récupération" ou moyen mnémonique. Conserver cette phrase de récupération relève de la plus haute importance. Cette phrase de récupération est utilisée pour générer une clé secrète (privée) reliée à un compte, et qui peut être utilisée pour signer puis envoyer des transactions. Toute personne qui aura accès à cette phrase de récupération, pourra ainsi prendre le contrôle de l'ensemble de vos comptes générés par celle-ci. Il ne faut jamais partager cette phrase de récupération (seed phrase) avec qui que ce soit. La phrase de récupération doit contenir une suite de 12 à 24 mots générés de manière aléatoire, mais l'ordre de ces mots s'avère des plus importants. + +Une fois votre phrase de récupération enregistrée, vous pourrez consulter le tableau de bord de votre portefeuille et l'accès au solde de celui-ci. Consultez notre guide : [comment utiliser un portefeuille.](/guides/how-to-use-a-wallet) + +
    + + +
    Vous voulez en savoir plus ?
    + + Consultez nos autres guides + +
    + +## Questions fréquemment posées + +### Est-ce que mon portefeuille et mon compte Ethereum sont les mêmes ? + +Non. Le portefeuille est un outil de gestion qui vous aide à gérer vos comptes. Un seul portefeuille peut donner accès à plusieurs comptes, et un seul compte peut être accessible par plusieurs portefeuilles. La phrase de récupération est utilisée dans le but de créer des comptes administrés par le portefeuille. + +Il suffit d'imaginer les comptes créés, telles les branches d'un arbre qui chacune, poussent toutes à partir d'une seule phrase de récupération. Chaque semence fera germer tout un arbre différent de comptes. + +### Puis-je envoyer des bitcoins à une adresse Ethereum, ou des ethers à une adresse Bitcoin ? + +Non, vous ne pouvez pas. Le bitcoin et l'ether existent sur deux réseaux distincts (c'est-à-dire des blockchains différentes), chacun ayant ses propres modèles de comptabilité et formats d'adresse. Il y a eu plusieurs tentatives de relier les deux réseaux différents, dont la plus active actuellement est[Bitcoin ou WBTC enveloppé](https://www.bitcoin.com/get-started/what-is-wbtc/). Ceci n'est pas une recommandation, car WBTC est une solution de garde (ce qui signifie qu'un groupe restreint de personnes contrôle certaines fonctions critiques) et est fourni ici à titre informatif uniquement. + +### Si je possède une adresse ETH, est-ce que je peux l'utiliser sur d'autres blockchains ? + +Vous pouvez utiliser la même adresse sur toutes les blockchains qui utilisent un logiciel sous-jacent similaire à Ethereum ("compatible-EVM"). Cette [liste](https://chainlist.org/) vous présente les blockchains que vous pouvez utiliser avec la même adresse. Certaines blockchains, comme Bitcoin, utilisent un ensemble de règles de réseau totalement différentes et vous aurez donc besoin d'une adresse différente fonctionnant sous un autre format. Si vous utilisez un portefeuille de contrats intelligents, vous pouvez consulter son site web pour plus d'informations sur les blockchains pris en charge. + +### Est-il plus sûr de garder mes fonds sur mon portefeuille plutôt que sur un échange ? + +Posséder son propre portefeuille signifie que l'on assume la responsabilité de la sécurité de ses biens. Il existe malheureusement de nombreux exemples d'échanges qui ont échoué et qui ont fait perdre de l'argent à leurs clients. Posséder un portefeuille (avec une phrase de récupération) élimine le risque lié à la confiance envers une entité qui conserverait vos actifs. Cependant, vous devez sécuriser vos propres clés et éviter les arnaques de phishing, l'approbation accidentelle de transactions ou l'exposition de vos clés, l'interaction avec des sites Web frauduleux et tout autre risque lié à la conservation privée. Les risques et les avantages sont différents. + +### Si je perds mon portefeuille téléphone/matériel, dois-je utiliser à nouveau la même application de portefeuille pour récupérer les fonds perdus ? + +Non, vous pouvez utiliser un autre portefeuille. Tant que vous possédez la phrase de récupération, vous pouvez la saisir dans la plupart des portefeuilles et cette action restaurera votre compte. Par contre, soyez prudent si vous avez besoin d'agir en ce sens : il est préférable de s'assurer que vous n'êtes pas connecté à Internet lorsque vous récupérez votre portefeuille, afin que votre phrase de récupération ne soit pas divulguée accidentellement. Le plus souvent, il est impossible de récupérer des fonds perdus sans la phrase de récupération. diff --git a/src/content/translations/fr/guides/how-to-id-scam-tokens/index.md b/src/content/translations/fr/guides/how-to-id-scam-tokens/index.md new file mode 100644 index 00000000000..8975896be4e --- /dev/null +++ b/src/content/translations/fr/guides/how-to-id-scam-tokens/index.md @@ -0,0 +1,97 @@ +--- +title: Comment identifier les jetons frauduleux +description: Comprendre les jetons frauduleux, comment ils se présentent comme légitimes et comment les éviter. +lang: fr +--- + +# Comment identifier les jetons frauduleux {#identify-scam-tokens} + +Ethereum est couramment utilisé par des groupes pour créer des jetons échangeables ou, dans un certain sens, leur propre monnaie. Ces jetons suivent généralement une norme, [ERC-20](/developers/docs/standards/tokens/erc-20/). Cependant, partout où il existe des cas d'utilisation légitimes qui apportent de la valeur, il y a aussi des criminels qui essaient de voler cette valeur à leur profit. + +Ils peuvent vous tromper de deux façons : + +- **Vente d'un jeton frauduleux**, qui peut ressembler au jeton légitime que vous souhaitez acheter, mais qui est émis par les escrocs et ne vaut rien. +- **Incitation à signer des transactions frauduleuses**, généralement en vous dirigeant vers leur propre interface utilisateur. Ils pourraient essayer de vous inciter à accorder à leurs contrats une allocation de vos jetons ERC-20, à divulguer des informations sensibles qui leur donneraient accès à vos actifs, etc. Ces interfaces utilisateurs peuvent être des clones presque parfaits de sites honnêtes, mais avec des astuces cachées. + +Pour illustrer ce que sont les jetons frauduleux et comment les identifier, nous allons examiner un exemple de jeton frauduleux : [`wARB`](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82). Ce jeton tente de ressembler au jeton [`ARB`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1) légitime. + + + +Arbitrum est une organisation qui développe et gère des
    rollups optimistiques. Au départ, Arbitrum était organisée comme une entreprise à but lucratif, mais elle a ensuite pris des mesures pour se décentraliser. Dans le cadre de ce processus, un jeton de gouvernance échangeable a été créé. + + + + + +Il existe une convention dans Ethereum selon laquelle lorsqu'un actif n'est pas conforme à la norme ERC-20, nous créons une version "enveloppée" de cet actif dont le nom commence par "w". Ainsi, par exemple, nous avons wBTC pour le bitcoin et wETH pour l'éther. + +Il n'est pas logique de créer une version enveloppée d'un jeton ERC-20 déjà présent sur Ethereum, mais les escrocs s'appuient sur l'apparence de légitimité plutôt que sur la réalité sous-jacente. + + + +## Comment fonctionnent les jetons frauduleux ? {#how-do-scam-tokens-work} + +L'objectif d'Ethereum est la décentralisation. Cela signifie qu'il n'y a pas d'autorité centrale qui puisse confisquer vos actifs ou vous empêcher de déployer un contrat intelligent. Mais cela signifie également que les escrocs peuvent déployer n'importe quel contrat intelligent. + + + +Les contrats intelligents sont les programmes qui s'exécutent sur la blockchain Ethereum. Chaque jeton ERC-20, par exemple, est implémenté comme contrat intelligent. + + + +Plus précisément, Arbitrum a déployé un contrat qui utilise le symbole `ARB`. Mais cela n'empêche pas d'autres personnes de déployer un contrat qui utilise exactement le même symbole, ou un symbole similaire. Quiconque rédige le contrat définit son contenu. + +## Paraître légitime {#appearing-legitimate} + +Les créateurs de jetons frauduleux ont recours à plusieurs astuces pour paraître légitimes. + +- **Nom et symbole légitimes**. Comme indiqué précédemment, les contrats ERC-20 peuvent avoir le même symbole et le même nom que d'autres contrats ERC-20. Vous ne pouvez pas compter sur ces champs pour assurer votre sécurité. + +- **Propriétaires légitimes**. Les jetons frauduleux créditent souvent des soldes importants à des adresses qui pourraient vraisemblablement détenir des jetons authentiques. + + Par exemple, regardons à nouveau `wARB`. [Environ 16 % des jetons](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82?a=0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) sont détenus par une adresse dont la balise publique est [Arbitrum Foundation: Deployer](https://etherscan.io/address/0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f). Il ne s'agit _pas_ d'une fausse adresse, c'est vraiment l'adresse qui a [déployé le vrai contrat ARB sur Ethereum mainnet](https://etherscan.io/tx/0x242b50ab4fe9896cb0439cfe6e2321d23feede7eeceb31aa2dbb46fc06ed2670). + + Étant donné que le solde ERC-20 d'une adresse fait partie du stockage du contrat ERC-20, il peut être spécifié par le contrat comme étant ce que souhaite le développeur du contrat. Il est également possible qu'un contrat interdise les transferts afin que les utilisateurs légitimes ne puissent pas se débarrasser de ces jetons frauduleux. + +- **Transferts légitimes**. _Les propriétaires légitimes ne paieraient pas pour transférer un jeton frauduleux à d'autres, donc s'il y a des transferts, ils doivent être légitimes, n'est-ce pas ? _ **Faux**. Les événements `Transfert` sont produits par le contrat ERC-20. Un escroc peut facilement rédiger le contrat de manière à ce qu'il produise ces actions. + +## Sites web frauduleux {#websites} + +Les escrocs peuvent également produire des sites web très convaincants, parfois même des clones précis de sites authentiques avec des interfaces utilisateur identiques, mais avec des astuces subtiles. Il peut s'agir, par exemple, de liens externes qui semblent légitimes mais qui renvoient l'utilisateur vers un site frauduleux, ou d'instructions incorrectes qui amènent l'utilisateur à exposer ses clés ou à envoyer des fonds à l'adresse d'un pirate. + +Une bonne pratique pour éviter cela est de vérifier soigneusement l'URL des sites que vous visitez et d'enregistrer les adresses de sites authentiques connus dans vos signets. Ensuite, vous pouvez accéder au site réel par le biais de vos signets sans faire accidentellement de fautes d'orthographe ou dépendre de liens externes. + +## Comment se protéger ? {#protect-yourself} + +1. **Vérifier l'adresse du contrat**. Les jetons légitimes proviennent d'organisations légitimes, et vous pouvez consulter les adresses des contrats sur le site web de l'organisation. Par exemple, [pour `ARB`, vous pouvez consulter les adresses légitimes ici](https://docs.arbitrum.foundation/deployment-addresses#token). + +2. **Les jetons réels ont de la liquidité**. Une autre option consiste à examiner la quantité de liquidités disponibles sur [Uniswap](https://uniswap.org/), l'un des protocoles d'échange de jetons les plus courants. Ce protocole utilise des pools de liquidité, dans lesquels les investisseurs déposent leurs jetons dans l'espoir d'un retour sur les frais de transaction. + +Les jetons frauduleux ont généralement de minuscules réserves de liquidités, voire aucune, parce que les fraudeurs ne veulent pas risquer des actifs réels. Par exemple, le pool `ARB`/`ETH` Uniswap contient environ un million de dollars ([voir ici pour la valeur à jour](https://info.uniswap.org/#/pools/0x755e5a186f0469583bd2e80d1216e02ab88ec6ca)) et acheter ou vendre une petite quantité ne changera pas le prix : + +![Acheter des jetons authentiques](./uniswap-real.png) + +Mais lorsque vous essayez d'acheter le jeton frauduleux `wARB`, même un achat minime modifierait le prix de plus de 90 % : + +![Acheter des jetons frauduleux](./uniswap-scam.png) + +Il s'agit d'un autre élément qui montre que `wARB` n'est probablement pas un jeton légitime. + +3. **Regarder sur Etherscan**. De nombreux jetons frauduleux ont déjà été identifiés et signalés par la communauté. Ces jetons sont [marqués sur Etherscan](https://info.etherscan.com/etherscan-token-reputation/). Bien qu'Etherscan ne soit pas une source de vérité faisant autorité (la nature des réseaux décentralisés fait qu'il ne peut y avoir de source de légitimité faisant autorité), les jetons identifiés par Etherscan comme étant frauduleux sont susceptibles de l'être. + + ![Les tokens frauduleux sur Etherscan](./etherscan-scam.png) + +## Conclusion {#conclusion} + +Tant qu'il y aura de la valeur dans le monde, il y aura des malfaiteurs qui tenteront de s'en emparer, et dans un monde décentralisé, il n'y a personne d'autre que vous-même pour vous protéger. Suivez ces indications pour vous aider à distinguer les jetons légitimes des arnaques : + +- Les jetons malveillants imitent des jetons légitimes en utilisant le même nom, symbole, etc. +- Les jetons malveillants _ne peuvent pas_ utiliser la même adresse de contrat. +- La meilleure source pour l'adresse légitime du jeton est l'organisation émettrice dudit jeton. +- À défaut, vous pouvez utiliser des applications populaires et fiables comme [Uniswap](https://app.uniswap.org/#/swap) et [Etherscan](https://etherscan.io/). diff --git a/src/content/translations/fr/guides/how-to-revoke-token-access/index.md b/src/content/translations/fr/guides/how-to-revoke-token-access/index.md new file mode 100644 index 00000000000..d6f9fa9c4d7 --- /dev/null +++ b/src/content/translations/fr/guides/how-to-revoke-token-access/index.md @@ -0,0 +1,73 @@ +--- +title: Comment révoquer l'accès des contrats intelligents à vos fonds crypto +description: Un guide pour révoquer l'accès des contrats intelligents +lang: fr +--- + +# Comment révoquer l'accès des contrats intelligents à vos fonds crypto + +Ce guide vous explique comment visualiser la liste de tous les contrats intelligents pour lesquels vous avez autorisé un accès à vos fonds et comment les révoquer. + +Parfois, des développeurs malveillants installent des portes dérobées dans les contrats intelligents, leur permettant d'accéder aux fonds des utilisateurs à leur insu. Souvent, il s'agit de plateformes demandant la permission à l'utilisateur de dépenser un **nombre illimité de jetons** en vue d'économiser de petites quantités de gas à l'avenir, mais cela s'accompagne d'un risque accru. + +Lorsque la plateforme possède un jeton de droit d'accès illimité à votre portefeuille, elle peut dépenser tous ces jetons, même si vous les avez rappatriés de la plateforme sur votre portefeuille. Une personne mal intentionnée peut accéder à vos fonds et les retirer, vous laissant sans possibilité de les récupérer. + +Vos options pour vous protéger sont de ne pas utiliser de ne pas utiliser de nouveaux projets non testés, de n'approuver que ce dont vous avez besoin et de régulièrement contrôler et révoquer les accès qui présentent un risque. Alors, comment fait-on ? + +## Étape 1 : Utiliser les outils de révocation d'accès + +Plusieurs sites Web vous permettent de visualiser et de révoquer les contrats intelligents connectés à votre adresse. Chacun de ces sites nécessite une connexion à votre portefeuille : + +- [Ethallowance](https://ethallowance.com/) (Ethereum) +- [Etherscan](https://etherscan.io/tokenapprovalchecker) (Ethereum) +- [Cointool](https://cointool.app/approve/eth) (plusieurs réseaux) +- [Revoke](https://revoke.cash/) (plusieurs réseaux) +- [Unrekt](https://app.unrekt.net/) (plusieurs réseaux) +- [EverRevoke](https://everrise.com/everrevoke/) (plusieurs réseaux) + +## Étape 2 : Connectez votre portefeuille + +Une fois que vous êtes sur le site Web, cliquez sur « Connecter le portefeuille ». Le site Web devrait vous inviter à connecter votre portefeuille. + +Assurez-vous d'utiliser le même réseau pour votre portefeuille et pour le site Web. Vous ne verrez que les contrats intelligents liés au réseau sélectionné. Par exemple, si vous vous connectez au réseau principal Ethereum, vous ne verrez que les contrats Ethereum et non les contrats d'autres chaînes comme Polygon. + +## Étape 3 : Sélectionnez un contrat intelligent que vous souhaitez révoquer + +Vous devriez voir tous les contrats qui sont autorisés à accéder à vos jetons ainsi que leurs limites de dépenses respectives. Identifiez les contrats que vous souhaitez révoquer. + +Si vous ne savez pas quel contrat choisir, vous pouvez tous les révoquer. Cela ne créera aucun problème de votre côte, mais lorsque vous aurez à interagir avec un contrat révoqué, vous devrez à nouveau lui accorder des droits d'accès. + +## Étape 4 : Révoquer l'accès à vos fonds + +Lorsque vous cliquez sur révoquer, vous devriez voir une nouvelle proposition de transaction dans votre portefeuille. C'est tout à fait normal. Vous devrez payer ces frais pour que la révocation soit validée. Selon le réseau, le délai de traitement de la requête peut varier d'une à plusieurs minutes. + +Nous vous conseillons de rafraîchir l'outil de révocation après quelques minutes et de reconnecter votre portefeuille pour vérifier à nouveau si le contrat révoqué a disparu de la liste. + +Nous vous recommandons de ne jamais autoriser de projets ayant un accès illimité à vos fonds et de révoquer régulièrement l'intégralité des droits de vos contrats intelligents. La révocation de l'accès aux jetons ne devrait jamais entraîner une perte de fonds, surtout si vous utilisez les outils mentionnés ci-dessus. + +
    + + +
    Vous voulez en savoir plus ?
    + + Consultez nos autres guides + +
    + +## Questions fréquemment posées + +### Est-ce que la révocation de l'accès aux jetons met également fin au staking, aux pools de liquidités, aux prêts, etc. ? + +Non, cela n'affectera aucune de vos stratégies DeFi. Vos positions et vos gains seront préservés. + +### Est-ce que déconnecter un portefeuille d'un projet équivaut à supprimer les permissions d'utilisation de mes fonds ? + +Non, si vous déconnectez votre portefeuille du projet, mais que vous avez accordé des droits d'accès avec un jeton, les droits d'accès accordés par le jeton restent valides. Vous devez révoquer cet accès. + +### Quelle est la date d'expiration du contrat ? + +Il n'y a pas de date d'expiration pour les permissions accordées par un contrat. Lorsque vous accordez des droits avec un contrat, ils restent valides même plusieurs années après leur octroi. + +### Pourquoi certains projets définissent-ils une allocation de jetons illimitée ? + +Les projets le font souvent pour minimiser le nombre de demandes requises, ce qui signifie que l'utilisateur n'a qu'à approuver une seule fois et qu'il ne paye les frais de transaction qu'une seule fois. Bien que pratique, cette solution peut s'avérer dangereuse pour les utilisateurs qui approuvent sans précaution les contrats sur des sites dont la fiabilité reste à prouver par le temps ou par des audits. Certains portefeuilles permettent d'établir une limite de transaction afin de limiter les risques. Consultez votre fournisseur de portefeuille pour plus d'informations. diff --git a/src/content/translations/fr/guides/how-to-swap-tokens/index.md b/src/content/translations/fr/guides/how-to-swap-tokens/index.md new file mode 100644 index 00000000000..37db7cfff13 --- /dev/null +++ b/src/content/translations/fr/guides/how-to-swap-tokens/index.md @@ -0,0 +1,67 @@ +--- +title: Comment échanger des jetons +description: Un guide pour échanger des jetons sur Ethereum. +lang: fr +--- + +# Comment échanger des jetons + +Fatigué de chercher un échange de cryptomonnaies qui répertorie tous vos jetons favoris ? Vous pouvez échanger la plupart des jetons en utilisant des échanges décentralisés. + +Un échange de jetons implique l'échange de deux actifs distincts et présents sur le réseau Ethereum, par exemple échanger ETH contre DAI (un jeton ERC-20). Le processus est à la fois très rapide et peu coûteux. Vous aurez besoin d'un portefeuille de cryptomonnaies pour échanger des jetons. + +**Prérequis :** + +- détenir un portefeuille de cryptomonnaies, vous pouvez suivre ce tutoriel : [Comment : "Enregistrer" un compte Ethereum](/guides/how-to-register-an-ethereum-account/) +- ajouter des fonds à votre portefeuille + +## 1. Connectez votre portefeuille à l'échange décentralisé (DEX) de votre choix + +Parmi les échanges décentralisés les plus connus : + +- [Uniswap](https://app.uniswap.org/#/swap) +- [Sushiswap](https://www.sushi.com/swap) +- [1Inch](https://app.1inch.io/#/1/unified/swap/ETH/DAI) +- [Curve](https://curve.fi/#/ethereum/swap) + +Si vous aimeriez en apprendre davantage sur la Finance Décentralisée (DeFi) et sur la façon dont ces nouveaux types d'échanges fonctionnent, nous vous recommandons la [Bibliothèque "Kernel"](https://library.kernel.community/Topic+-+DeFi/Topic+-+DeFi). + +## 2. Sélectionnez la paire de jetons que vous souhaitez échanger + +Par exemple, ETH et DAI. Assurez-vous d'avoir des fonds dans l'un des deux jetons. ![Interface commune pour les échanges](./swap1.png) + +## 3. Entrez le nombre de jetons que vous voulez échanger et cliquez sur échanger + +L'échange va calculer automatiquement le nombre de jetons que vous obtiendrez. + +![Interface commune pour les échanges](./swap2.png) + +## 4. Confirmez la transaction + +Vérifiez les détails de la transaction. Vérifiez le taux de change et tous les frais annexes pour éviter les mauvaises surprises. + +![Interface commune pour examiner la transaction](./swap3.png) + +## 5. Attendez que la transaction soit traitée + +Vous pouvez vérifier la progression de la transaction sur n'importe quel explorateur de blockchain. Cette procédure ne devrait pas prendre plus de 10 minutes. + +Vous recevez automatiquement les jetons échangés dans votre portefeuille lorsque la transaction est finalisée. +
    + + +
    Vous voulez en savoir plus ?
    + + Consultez nos autres guides + +
    + +## Questions fréquemment posées + +### Puis-je échanger des ETH contre des BTC depuis mon portefeuille ? + +Non, vous ne pouvez échanger que des jetons natifs du réseau Ethereum, tels que les jetons ETH, ERC-20 ou NFTs. Vous pouvez toutefois échanger des "Bitcoins enveloppés", qui sont des jetons conçus pour circuler sur le réseau Ethereum. + +### Qu'est-ce que l'effet de glissement ? + +Il s'agit de la différence entre votre taux de change prévu et le taux réel. diff --git a/src/content/translations/fr/guides/how-to-use-a-bridge/index.md b/src/content/translations/fr/guides/how-to-use-a-bridge/index.md new file mode 100644 index 00000000000..56fc819cd24 --- /dev/null +++ b/src/content/translations/fr/guides/how-to-use-a-bridge/index.md @@ -0,0 +1,70 @@ +--- +title: Comment transférer des jetons aux réseaux de seconde couche +description: Un guide expliquant comment déplacer des jetons d'Ethereum vers la couche Layer 2 à l'aide d'un pont (ou bridge). +lang: fr +--- + +# Comment transférer des jetons aux réseaux de seconde couche + +Si le trafic sur Ethereum devient trop important, cela peut devenir coûteux. Une solution possible consiste à créer de nouvelles "layers" : c'est-à-dire des réseaux secondaires qui fonctionnent de manière similaire à Ethereum lui-même. Ces "Layer 2s" aident à réduire la congestion et les coûts sur Ethereum en traitant beaucoup plus de transactions à des frais réduits, et en ne stockant les résultats de ces transactions sur Ethereum que de temps en temps. Ainsi, ces couches secondaires nous permettent de réaliser des transactions plus rapidement et à moindre coût. Beaucoup de projets crypto adopte cette approche pour ces bénéfices. Le moyen le plus simple de déplacer des jetons d'Ethereum vers une "Layer 2" est d'utiliser un pont (bridge). + +**Prérequis :** + +- détenir un portefeuille de cryptomonnaies, vous pouvez suivre ce tutoriel : [Comment : "Enregistrer" un compte Ethereum](/guides/how-to-register-an-ethereum-account/) +- ajouter des fonds à votre portefeuille + +## 1. Déterminez le réseau de seconde couche que vous souhaitez utiliser + +Vous pouvez en apprendre plus sur les différents projets et des liens importants sur notre [page sur la couche 2](/layer-2/). + +## 2. Accédez au pont sélectionné + +Quelques exemples de solutions de seconde couche populaires : + +- [Pont Arbitrum](https://bridge.arbitrum.io/?l2ChainId=42161) +- [Pont Optimism](https://app.optimism.io/bridge/deposit) +- [Pont Boba Network](https://gateway.boba.network/) + +## 3. Connectez-vous au pont avec votre portefeuille + +Assurez-vous que votre portefeuille est connecté au réseau principal Ethereum. Si ce n'est pas le cas, le site vous demandera automatiquement de changer de réseau. + +![Interface commune pour transférer des jetons](./bridge1.png) + +## 4. Indiquez le montant et transférez les fonds + +Vérifiez le montant que vous recevrez sur le réseau de seconde couche et les frais associés pour éviter les mauvaises surprises. + +![Interface commune pour transférer des jetons](./bridge2.png) + +## 5. Confirmez cette transaction dans votre portefeuille + +Vous devrez payer des frais en ETH pour traiter la transaction. + +![Interface commune pour transférer des jetons](./bridge3.png) + +## 6. Attendez que vos fonds soient transférés + +Cette opération ne devrait pas prendre plus de 10 minutes. + +## 7. Ajoutez le réseau de la seconde couche sélectionnée sur votre portefeuille (facultatif) + +Vous pouvez utiliser chainlist.org pour trouver les détails RPC du réseau. Une fois le réseau ajouté et la transaction terminée, vous devriez voir les jetons dans votre portefeuille. +
    + + +
    Vous voulez en savoir plus ?
    + + Consultez nos autres guides + +
    + +## Questions fréquemment posées + +### Et si j'ai des fonds sur une plateforme d'échange ? + +Il se pourrait que vous puissiez retirer vos fonds directement vers certains réseaux de seconde couche depuis une plateforme d'échange. Consultez notre section “Passer à la couche 2” sur notre [page sur la Couche 2](/layer-2/) pour plus d'information. + +### Puis-je revenir sur le réseau principal Ethereum après avoir transféré mes jetons vers une seconde couche 2 ? + +Oui, vous pouvez toujours rapatrier vos fonds vers le réseau principal en utilisant le même pont. diff --git a/src/content/translations/fr/guides/how-to-use-a-wallet/index.md b/src/content/translations/fr/guides/how-to-use-a-wallet/index.md new file mode 100644 index 00000000000..7383a92939b --- /dev/null +++ b/src/content/translations/fr/guides/how-to-use-a-wallet/index.md @@ -0,0 +1,88 @@ +--- +title: Comment utiliser un portefeuille +description: Un guide expliquant comment envoyer, recevoir des jetons et se connecter à des projets web3. +lang: fr +--- + +# Comment utiliser un portefeuille + +Apprenez à utiliser toutes les fonctions de base d'un portefeuille. Si vous n'en possédez pas encore, consultez notre[Comment : créer un compte Ethereum](/guides/how-to-create-an-ethereum-account/). + +## Ouvrir votre portefeuille + +Vous devriez voir un tableau de bord qui montrera probablement votre solde et contiendra des boutons pour envoyer et recevoir des jetons. + +## Recevoir de la cryptomonnaie + +Voulez-vous recevoir des cryptomonnaies dans votre portefeuille? + +Chaque compte Ethereum possède sa propre adresse de réception, qui est une séquence unique de chiffres et de lettres. L'adresse fonctionne comme un numéro de compte bancaire. Les adresses Ethereum commenceront toujours par « 0x ». Vous pouvez partager cette adresse avec n'importe qui: il est sécuritaire de le faire. + +Votre adresse est un peu comme l’adresse de votre domicile : vous devez la communiquez aux gens pour qu’ils puissent vous trouver. Vous pouvez agir ainsi en toute sécurité, car il est toujours possible de verrouiller votre porte principale via une autre clé, que vous seul détenez, afin que personne ne s'introduise, même s'il connaît l'adresse de votre domicile. + +Vous devez fournir à quiconque veut vous envoyer de l'argent avec votre adresse publique. De nombreuses applications de portefeuille vous permettent de copier votre adresse ou d'afficher un code QR à scanner pour une utilisation plus facile. Évitez de taper manuellement une adresse Ethereum. Cela peut facilement conduire à des erreurs de frappe et à des pertes de fonds. + +Différentes applications peuvent varier ou utiliser une langue différente, mais elles devraient vous conduire dans un processus similaire si vous essayez de transférer des fonds. + +1. Ouvrez votre application de portefeuille. +2. Cliquez sur « Recevoir » (ou sur le libellé similaire). +3. Copiez votre adresse Ethereum dans le presse-papiers. +4. Fournissez à l'expéditeur votre adresse Ethereum de réception. + +## Envoyer de la cryptomonnaie + +Voulez-vous envoyer ETH à un autre portefeuille ? + +1. Ouvrez votre application de portefeuille. +2. Obtenez l'adresse de réception et assurez-vous que vous êtes connecté au même réseau que le destinataire. +3. Entrez l'adresse de réception ou scannez un code QR avec votre caméra afin que vous n'ayez pas à écrire l'adresse manuellement. +4. Cliquez sur le bouton « Envoyer » dans votre portefeuille (ou sur une alternative de la même forme). + +![Champ d'envoi de l'adresse crypto](./send.png) +
    + +5. De nombreux actifs, comme le DAI ou l'USDC, existent sur plusieurs réseaux. Lors du transfert de crypto-jetons, assurez-vous que le destinataire utilise le même réseau que vous, car ceux-ci ne sont pas interchangeables. +6. Assurez-vous que votre portefeuille a suffisamment d'ETH pour couvrir les frais de transaction, qui varient selon les conditions du réseau. La plupart des portefeuilles ajouteront automatiquement les frais suggérés à la transaction que vous pourrez ensuite confirmer. +7. Une fois votre transaction traitée, le montant de crypto correspondant apparaîtra dans le compte du destinataire. Cette opération peut aller de quelques secondes à quelques minutes, en fonction de l'intensité de l'utilisation du réseau. + +## Connexion à des projets + +Votre adresse sera la même pour tous les projets Ethereum. Vous n'avez pas besoin de vous inscrire individuellement à un projet. Une fois que vous avez un portefeuille, vous pouvez vous connecter à n'importe quel projet Ethereum sans aucune information supplémentaire. Aucun courrier électronique ou autre renseignement personnel n'est nécessaire. + +1. Visitez le site Web de n'importe quel projet. +2. Si la page d'accueil du projet n'est qu'une description statique du projet, vous devriez être en mesure de cliquer sur le bouton « Ouvrir l'application » dans le menu qui vous mènera vers l'application web actuelle. +3. Une fois que vous êtes dans l'application, cliquez sur « Connecter ». + +![Bouton permettant à l'utilisateur de se connecter au site avec un portefeuille](./connect1.png) + +4. Sélectionnez votre portefeuille à partir de la liste des options fournies. Si vous ne pouvez pas voir votre portefeuille, il peut être caché sous l’option « WalletConnect ». + +![Sélection à partir d'une liste de portefeuilles avec lesquels se connecter](./connect2.png) + +5. Confirmez la demande de signature dans votre portefeuille pour établir la connexion. **La signature de ce message ne devrait pas nécessiter de dépenser des ETH**. +6. C’est tout! Commencez à utiliser l'application. Vous pouvez trouver des projets intéressants sur notre page [dApps](/dapps/#explore).
    + + +
    Vous voulez en savoir plus ?
    + + Consultez nos autres guides + +
    + +## Questions fréquemment posées + +### Si je possède une adresse ETH, est-ce que je peux l'utiliser sur d'autres blockchains ? + +Vous pouvez utiliser la même adresse sur toutes les blockchains compatibles EVM (si vous utilisez un portefeuille avec une phrase de récupération). Cette [liste](https://chainlist.org/) vous présente les blockchains que vous pouvez utiliser avec la même adresse. Certaines blockchains, comme Bitcoin, utilisent un ensemble de règles de réseau totalement différentes et vous aurez donc besoin d'une adresse différente fonctionnant sous un autre format. Si vous utilisez un portefeuille de contrats intelligents, vous pouvez consulter son site web pour plus d'informations sur les blockchains pris en charge. + +### Puis-je utiliser la même adresse sur plusieurs appareils ? + +Bien entendu, vous pouvez utiliser la même adresse sur plusieurs appareils. Techniquement, les portefeuilles ne sont qu'une interface permettant d'afficher votre solde et d'effectuer des transactions. Votre compte n'est pas directement stocké à l'intérieur du portefeuille, mais bien sur la blockchain. + +### Je n'ai pas reçu la cryptomonnaie, où puis-je vérifier l'état d'une transaction ? + +Vous pouvez utiliser [l'explorateur de bloc](/developers/docs/data-and-analytics/block-explorers/) afin de vérifier l'état d'une transaction en temps réel. Tout ce que vous avez à faire est de chercher l'adresse de votre portefeuille ou l'ID de la transaction. + +### Puis-je annuler ou retourner des transactions ? + +Non, une fois qu'une transaction est confirmée, vous ne pouvez pas annuler la transaction. diff --git a/src/content/translations/fr/guides/index.md b/src/content/translations/fr/guides/index.md new file mode 100644 index 00000000000..449e0da2b0b --- /dev/null +++ b/src/content/translations/fr/guides/index.md @@ -0,0 +1,27 @@ +--- +title: Guides sur Ethereum +description: Une collection de guides expliquant en pratique les bases de l'utilisation d'Ethereum pour les débutants. +lang: fr +--- + +# Guides sur Ethereum + +Vous souhaitez entamer votre aventure sur Ethereum ? Nos guides pratiques vous conduisent pas à pas pour bien débuter, et facilitent la navigation vers cette nouvelle technologie. + +## Premiers pas + +1. [Comment "créer" un compte Ethereum](/guides/how-to-create-an-ethereum-account/) -N'importe qui peut créer un portefeuille gratuitement. Ce guide vous montrera par où commencer. + +2. [Comment utiliser un portefeuille](/guides/how-to-use-a-wallet/) - Une introduction aux fonctionnalités de base de n'importe quel portefeuille et comment les utiliser. + +## Notions de sécurité + +1. [Comment révoquer l'accès des contrats intelligents à vos cryptos](/guides/how-to-revoke-token-access/) - Si vous découvrez une transaction dans votre portefeuille que vous n'avez pas initiée, ce guide vous apprendra comment éviter que cela ne se reproduise. + +2. [Comment identifier les arnaques aux jetons](/guides/how-to-id-scam-tokens/) - Que sont les jetons d'arnaque, comment parviennent-ils à se faire passer pour légitimes et comment les identifier pour vous protéger et éviter les escroqueries. + +## Utiliser Ethereum + +1. [Comment transférer des jetons vers une seconde couche](/guides/how-to-use-a-bridge/) - Les transactions sur Ethereum sont-elles trop coûteuses ? Pensez à passer aux solutions de mise à l'échelle Ethereum appelées secondes couches. + +2. [Comment échanger des jetons](/guides/how-to-swap-tokens/) - Souhaitez-vous échanger vos jetons contre un autre ? Ce guide simple vous montrera comment procéder. diff --git a/src/content/translations/fr/refi/index.md b/src/content/translations/fr/refi/index.md new file mode 100644 index 00000000000..a4e20581b28 --- /dev/null +++ b/src/content/translations/fr/refi/index.md @@ -0,0 +1,79 @@ +--- +title: Finance Régénérative (ReFi) +description: Une vue d'ensemble de la ReFi et de ses cas d'utilisation actuels. +lang: fr +template: use-cases +emoji: ":recycle:" +sidebarDepth: 2 +image: ../../../../assets/future_transparent.png +alt: "" +summaryPoint1: Un système économique alternatif fondé sur des principes de régénération +summaryPoint2: Une tentative d'utilisation d'Ethereum pour résoudre les crises de coordination au niveau mondial, telles que le changement climatique +summaryPoint3: Un outil permettant une augmentation drastique des bénéfices écologiques tels que les crédits de carbone vérifiés +--- + +## Qu'est-ce que la ReFi ? {#what-is-refi} + +**La finance régénérative (ReFi)** est un ensemble d'outils et d'idées construits sur les blockchains, qui visent à créer des économies régénératives, plutôt qu'extractives ou exploitantes. Les systèmes extractifs finissent par épuiser les ressources disponibles et s'effondrent ; en l'absence de mécanismes de régénération, ils manquent de résilience. La ReFi part du principe que la création de valeur monétaire doit être dissociée de l'extraction non durable des ressources de notre planète et de nos communautés. + +Le ReFi vise plutôt à résoudre des problèmes environnementaux, communautaires ou sociaux en créant des cycles de régénération. Ces systèmes créent de la valeur pour les participants tout en bénéficiant aux écosystèmes et aux communautés. + +L'un des fondements de la ReFi est le concept d'économie régénératrice dont John Fullerton, du [Capital Institute](https://capitalinstitute.org), a été le pionnier. Il a proposé huit principes interconnectés qui constituent la base de la santé systémique : + +![Huit principes interconnectés](../../assets/use-cases/refi-regenerative-economy-diagram.png) + +Les projets ReFi concrétisent ces principes en utilisant des [contrats intelligents](/developers/docs/smart-contracts/) et des [applications de finance décentralisée (DeFi)](/defi/) pour encourager les comportements régénérateurs, par exemple la restauration des écosystèmes dégradés, et faciliter la collaboration à grande échelle sur des questions mondiales telles que le changement climatique et la perte de biodiversité. + +La ReFi rejoint également le mouvement [science décentralisée (DeSci)](/desci/), qui utilise Ethereum comme plateforme pour financer, créer, réviser, créditer, stocker et diffuser des connaissances scientifiques. Les outils DeSci pourraient être utiles pour élaborer des normes et des pratiques vérifiables pour la mise en œuvre et le suivi d'activités régénératrices telles que la plantation d'arbres, l'élimination du plastique dans les océans ou la restauration d'un écosystème dégradé. + +## Tokenisation des crédits carbone {#tokenization-of-carbon-credits} + +Le **[marché volontaire du carbone (VCM)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** est un mécanisme de financement de projets qui ont un impact positif vérifié sur les émissions de carbone, soit en réduisant les émissions en cours, soit en éliminant les gaz à effet de serre déjà émis dans l'atmosphère. Après vérification, ces projets reçoivent un actif appelé "crédits carbone", qu'ils peuvent vendre à des particuliers et à des organisations désireux de soutenir l'action en faveur du climat. + +En plus du VCM, il existe également plusieurs marchés du carbone mandatés par les gouvernements ("marchés de conformité") qui visent à établir un prix du carbone par le biais de lois ou de réglementations au sein d'une juridiction particulière (par exemple, un pays ou une région), en contrôlant l'offre de permis à distribuer. Les marchés de conformité incitent les pollueurs relevant de leur juridiction à réduire leurs émissions, mais ils ne sont pas en mesure d'éliminer les gaz à effet de serre déjà émis. + +Malgré son développement au cours des dernières décennies, le VCM continue de souffrir d'une multitude de problèmes : + +1. Liquidité très fragmentée +2. Mécanismes de transaction opaques +3. Frais élevés +4. Vitesse de trading très lente +5. Manque de passage à l'échelle + +La transition du VCM vers le nouveau **marché numérique du carbone (DCM)** basé sur la blockchain pourrait être l'occasion de mettre à niveau la technologie existante pour la validation, la vente et la consommation des crédits carbone. Les blockchains permettent d'obtenir des données publiquement vérifiables, un accès pour un large éventail d'utilisateurs et une plus grande liquidité. + +Les projets utilisent la technologie de la blockchain pour atténuer de nombreux problèmes du marché traditionnel : + +- **La liquidité est concentrée sur un petit nombre de pools** où chacun peut commercer. Les grandes organisations comme les individus peuvent utiliser ces pools sans devoir rechercher manuellement des acheteurs/vendeurs, sans frais de participation ou sans enregistrement préalable. +- **Toutes les transactions sont enregistrées sur des blockchains publiques**. Le chemin que chaque crédit carbone prend en raison de l'activité de trading est retraçable à jamais dès qu'il est est rendu disponible dans le DCM. +- **La rapidité des transactions est quasiment instantanée**. Sécuriser de vastes quantités de crédits carbone via les marchés traditionnels peut prendre des jours ou des semaines, alors que ceci peut être réalisé en quelques secondes dans le DCM. +- **Les activités de trading ont lieu sans intermédiaires**, qui facturent des fortes commissions. Les crédits carbone numériques représentent une [amélioration du coût de 62% par rapport aux crédits traditionnels équivalents](https://www.klimadao.finance/blog/klimadao-analysis-of-the-base-carbon-tonne), d'après les données d'une société d'analyse. +- **Le DCM peut passer à l'échelle** et répondre aussi bien aux attentes des individus que des entreprises multinationales. + +### Composants clés du DCM {#key-components-dcm} + +Quatre éléments majeurs composent le paysage actuel du DCM : + +1. Des registres tels que [Verra](https://verra.org/project/vcs-program/registry-system/) et [Gold Standard](https://www.goldstandard.org/) veillent à ce que les projets créant des crédits carbone soient fiables. Ils gèrent également les bases de données dans lesquelles les crédits carbone numériques sont créés, transférés ou utilisés. + +Une nouvelle vague de projets innovants est en train d'être développée sur des blockchains dans le but de bouleverser les acteurs établis de ce secteur. + +2. Ponts carbone, aussi appelées tokeniseurs, fournissent la technologie pour représenter ou transférer les crédits carbones depuis les registres traditionnels vers les DCM. [Toucan Protocol](https://toucan.earth/), [C3](https://c3.app/), and [Moss.Earth](https://moss.earth/) font partie des exemples remarquables. +3. Les services intégrés offrent des crédits d'évitement ou de suppression de carbone aux utilisateurs finaux afin qu'ils obtiennent le bénéfice environnemental de leur crédit et partagent leur soutien à l'action climatique avec le monde. + +Certains, comme [Klima Infinity](https://www.klimadao.finance/infinity) et [Senken](https://senken.io/), proposent une grande variété de projets développés par des tiers et émis conformément à des normes établies telles que Verra ; d'autres, comme [Nori](https://nori.com/), ne proposent que des projets spécifiques développés selon leur propre norme de crédit carbone, qu'ils émettent et pour laquelle ils ont leur propre marché dédié. + +4. Les rails et l'infrastructure sous-jacente qui facilitent la montée en charge de l'impact et de l'efficacité de l'ensemble de la chaîne d'approvisionnement du marché du carbone. [KlimaDAO](http://klimadao.finance/) fournit de la liquidité comme un bien public (permettant à quiconque d'acheter ou de vendre des crédits carbone à un prix transparent), stimule les flux sur les marchés carbone et les retraits via des récompenses, et fournit un outillage interopérable et convivial pour accéder aux données, acquérir et retirer, une grande variété de crédits carbone tokenisés. + +## La ReFi au-delà des marchés du carbone {#refi-beyond} + +Bien qu'il y ait actuellement une grande attention portée aux marchés du carbone en général et à la transition du VCM au DCM en particulier, le terme "ReFi" n'est pas strictement limité au carbone. D'autres actifs environnementaux en dehors des crédits carbone peuvent être développés et tokenisés, ce qui signifiera que d'autres externalités négatives pourront également être valorisées au sein des couches de base des futurs systèmes économiques. De plus, l'aspect régénératif de ce modèle économique peut être appliqué à d'autres domaines, tels que le financement des biens publics via des plateformes de financement quadratique comme [Gitcoin](https://gitcoin.co/). Les organisations qui reposent sur l'idée de participation ouverte et de distribution équitable des ressources permettent à chacun de contribuer financièrement aux projets de logiciels open-source, ainsi qu'aux projets éducatifs, environnementaux et communautaires. + +En orientant le capital loin des pratiques extractives et vers un flux régénératif, les projets et les entreprises qui fournissent des avantages sociaux, environnementaux ou communautaires - et qui pourraient échouer à obtenir un financement dans la finance traditionnelle - peuvent démarrer et générer des externalités positives pour la société beaucoup plus rapidement et facilement. La transition vers ce modèle de financement ouvre également la voie à des systèmes économiques beaucoup plus inclusifs, où les personnes de toutes les catégories démographiques peuvent devenir des participants actifs plutôt que de simples observateurs passifs. ReFi propose une vision d'Ethereum en tant que mécanisme de coordination de l'action face aux défis existentiels auxquels notre espèce et toute vie sur notre planète sont confrontées - en tant que couche de base d'un nouveau paradigme économique, permettant un avenir plus inclusif et durable pour les siècles à venir. + +## Lectures complémentaires sur la ReFi + +- [Une vue d'ensemble des monnaies carbone et de leur place dans l'économie](https://www.klimadao.finance/blog/the-vision-of-a-carbon-currency) +- [The Ministry for the Future, un roman décrivant le rôle d'une monnaie adossée au carbone dans la lutte contre le changement climatique](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future) +- [Un rapport détaillé du Groupe de travail pour l'expansion des marchés volontaires du carbone](https://www.iif.com/Portals/1/Files/TSVCM_Report.pdf) +- [La ReFi sur le glossaire CoinMarketCap par Kevin Owocki et Evan Miyazono](https://coinmarketcap.com/alexandria/glossary/regenerative-finance-refi) diff --git a/src/content/translations/fr/security/index.md b/src/content/translations/fr/security/index.md index 4fc825dba45..0835d907dea 100644 --- a/src/content/translations/fr/security/index.md +++ b/src/content/translations/fr/security/index.md @@ -277,6 +277,7 @@ Les arnaques au airdrop : il s'agit d'un projet factice de distribution d'actif ### Prévention des arnaques {#reading-scam-education} +- [Guide : Comment identifier les jetons frauduleux](/guides/how-to-id-scam-tokens/) - [Staying Safe: Common Scams](https://support.mycrypto.com/staying-safe/common-scams) - _MyCrypto_ - [Avoiding Scams](https://bitcoin.org/en/scams) - _Bitcoin.org_ - [Fil Twitter sur les courriels et messages communs de phishing en cryptomonnaies](https://twitter.com/tayvano_/status/1516225457640787969) - _Taylor Monahan_ diff --git a/src/content/translations/fr/smart-contracts/index.md b/src/content/translations/fr/smart-contracts/index.md index 47c893c2b9d..b5b82c2e371 100644 --- a/src/content/translations/fr/smart-contracts/index.md +++ b/src/content/translations/fr/smart-contracts/index.md @@ -6,69 +6,59 @@ lang: fr # Introduction aux contrats intelligents {#introduction-to-smart-contracts} -Les contrats intelligents sont les éléments fondamentaux des [applications Ethereum](/dapps/). Ce sont des programmes informatiques stockés sur la blockchain qui permettent de convertir des contrats traditionnels en parallèles numériques. Les contrats intelligents suivent strictement une structure dite logique de type « Si » et « alors ». Cela implique qu'ils se comportent exactement tels qu'ils sont programmés et ne peuvent pas être modifiés. +Les contrats intelligents sont les éléments fondamentaux de la couche applicative d'Ethereum. Il s'agit de programmes informatiques stockés sur la blockchain qui suivent la logique "si ceci alors cela" et sont garantis de s'exécuter selon les règles définies par leur code, qui ne peut être modifié une fois créé. -L'expression « contrat intelligent » a été utilisée en premier par Nick Szabo. En 1994, il a rédigé [une présentation du concept](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html) puis, en 1996, [une étude approfondie sur les possibilités offertes par les contrats intelligents](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html). +L'expression « contrat intelligent » a été utilisée en premier par Nick Szabo. En 1994, il a écrit [une introduction au concept](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html), et en 1996 il a écrit [une exploration à ce que les contrats intelligents pourraient faire](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html). -Nick Szabo a imaginé un marché numérique basé sur ces processus automatiques et sécurisés par la cryptographie. Un lieu où les transactions et les activités économiques peuvent se dérouler en toute confiance, sans intermédiaire. Les contrats intelligents Ethereum concrétisent cette vision. +Szabo a imaginé un marché numérique où des processus automatiques et cryptographiquement sécurisés permettent aux transactions et aux fonctions commerciales de se dérouler sans intermédiaires de confiance. Les contrats intelligents Ethereum concrétisent cette vision. -## En quoi consistent ces contrats ? {#what-are-contracts} - -Vous pensez probablement : _"Je ne suis pas avocat ! Pourquoi devrais-je m'intéresser aux contrats ?"_. Pour la plupart des gens, les contrats évoquent des accords longs basés sur des conditions générales ou des documents juridiques sans intérêt et qui ne servent à rien. - -Les contrats ne sont que des accords. Autrement dit, toute forme d'accord peut être englobée dans les conditions d'un contrat. Les accords verbaux ou écrits sont acceptables dans de nombreuses situations, mais ils ne sont pas infaillibles. - -### Confiance et contrats {#trust-and-contracts} +### La confiance dans les contrats conventionnels {#trust-and-contracts} L'un des problèmes majeurs d'un contrat classique est la nécessité que des personnes de confiance assurent le suivi des résultats du contrat. En voici un exemple : -Alice et Bob font une course de vélo. Imaginons qu'Alice parie 10 € avec Bob qu'elle gagnera la course. Bob est sûr de gagner et accepte le pari. Finalement, Alice devance largement Bob et est le vainqueur incontestable. Mais Bob refuse de payer le pari, prétendant qu'Alice a dû tricher. +Alice et Bob font une course de vélo. Imaginons qu'Alice parie 10 € avec Bob qu'elle gagnera la course. Bob est sûr de gagner et accepte le pari. Finalement, Alice devance largement Bob et gagne de façon incontestable la course. Mais Bob refuse de payer le pari, prétendant qu'Alice a dû tricher. Cet exemple ridicule illustre le problème de tout accord non intelligent. Même si les conditions de l'accord sont remplies (ex. vous avez gagné la course), vous devez toujours faire confiance à une autre personne pour qu'elle respecte l'accord (ex. payer le pari). -## Contrats intelligents {#smart-contracts} - -Les contrats intelligents numérisent les accords en traduisant les conditions générales d'un contrat en code informatique qui s'exécute automatiquement lorsque les conditions du contrat sont respectées. - ### Distributeur automatique numérique {#vending-machine} Nous pouvons comparer simplement un contrat intelligent à un distributeur automatique, qui fonctionne de manière assez similaire à un contrat intelligent ; des intrants spécifiques qui garantissent des résultats prédéterminés. - Vous choisissez un produit -- Le distributeur automatique renvoie le montant nécessaire à l'achat du produit -- Vous introduisez le montant requis -- Le distributeur automatique vérifie que vous avez introduit le bon montant -- Le distributeur automatique distribue le produit choisi +- Le distributeur automatique affiche le prix +- Vous payez le prix +- Le distributeur automatique vérifie que vous avez payé le bon montant +- Le distributeur automatique vous remet votre article Le distributeur automatique ne distribuera le produit choisi que si toutes les conditions sont remplies. Si vous ne sélectionnez pas un produit ou que vous n'insérez pas le montant suffisant, le distributeur automatique ne distribuera pas le produit. ### Exécution automatique {#automation} -L'un des avantages les plus importants des contrats intelligents par rapport aux contrats traditionnels est que l'engagement issu d'un contrat est automatiquement exécuté lorsque les conditions de celui-ci sont remplies. Il n'y a pas besoin d'attendre qu'un humain exécute le résultat. En d'autres termes : les contrats intelligents éliminent le besoin de confiance. +Le principal avantage d'un contrat intelligent est qu'il exécute de manière déterministe un code non ambigu lorsque certaines conditions sont remplies. Il n'est pas nécessaire d'attendre qu'un humain interprète ou négocie le résultat. Il n'est donc plus nécessaire de recourir à des intermédiaires de confiance. -Par exemple, vous pouvez rédiger un contrat intelligent qui détient des fonds en fiducie pour un enfant, autorisant celui-ci à retirer des fonds seulement à partir d'une date précise. S'il essaie de retirer de l'argent avant ladite date, le contrat intelligent ne s'exécute pas. Ou encore, vous pouvez rédiger un contrat qui vous donne automatiquement une version numérique de la carte grise de votre nouvelle voiture lorsque vous payez le concessionnaire. +Par exemple, vous pouvez rédiger un contrat intelligent qui détient des fonds en fiducie pour un enfant, autorisant celui-ci à retirer des fonds seulement à partir d'une date précise. S'il essaie de se retirer avant cette date, le contrat intelligent ne s'exécutera pas. Vous pouvez également rédiger un contrat qui vous fournit automatiquement une version numérique du titre de propriété d'une voiture lorsque vous payez le concessionnaire. ### Résultats prévisibles {#predictability} -Le facteur humain est l'un des principaux points de défaillance des contrats traditionnels. Par exemple, deux juges individuels peuvent interpréter un contrat traditionnel de deux manières différentes. Leur interprétation propre pourrait conduire à une prise de décision différente et ainsi à des résultats inégaux. Les contrats intelligents écartent la possibilité d'interprétations différentes. En effet, les contrats intelligents s'exécutent précisément en fonction des conditions écrites dans le code du contrat. Cette précision signifie que, dans les mêmes circonstances, le contrat intelligent produit le même résultat. +Les contrats traditionnels sont ambigus parce qu'ils dépendent de l'homme pour leur interprétation et leur mise en œuvre. Par exemple, deux juges peuvent interpréter un contrat différemment, ce qui peut conduire à des décisions incohérentes et à des résultats inégaux. Les contrats intelligents éliminent cette possibilité. En effet, les contrats intelligents s'exécutent précisément en fonction des conditions écrites dans le code du contrat. Cette précision signifie que, dans les mêmes circonstances, le contrat intelligent produit le même résultat. ### Enregistrement public {#public-record} -Les contrats intelligents sont aussi utiles pour les audits et le suivi. Comme les contrats intelligents Ethereum sont sur une blockchain publique, tout le monde peut suivre instantanément les transferts d'actifs ainsi que toute autre information connexe. Vous pouvez, par exemple, vérifier que quelqu'un a envoyé de l'argent à votre adresse. +Les contrats intelligents sont utiles pour les audits et le suivi. Comme les contrats intelligents Ethereum sont sur une blockchain publique, tout le monde peut suivre instantanément les transferts d'actifs ainsi que toute autre information connexe. Vous pouvez par exemple vérifier si quelqu'un a envoyé de l'argent à votre adresse. ### Protection de la vie privée {#privacy-protection} -Les contrats intelligents peuvent également protéger votre vie privée. Ethereum étant un réseau pseudonyme (vos transactions sont liées publiquement à une adresse cryptographique unique, et non à votre identité), vous pouvez protéger votre vie privée. +Les contrats intelligents protègent également votre vie privée. Ethereum étant un réseau pseudonyme (vos transactions sont liées publiquement à une adresse cryptographique unique, et non à votre identité), vous pouvez protéger votre vie privée. ### Transparence des conditions {#visible-terms} -Enfin, comme pour les contrats, vous pouvez consulter le contenu d'un contrat intelligent avant de le signer (ou de le traiter d'une façon quelconque). Mieux encore, la transparence publique des conditions du contrat signifie que tout le monde peut l'examiner. +Enfin, comme pour les contrats traditionnels, vous pouvez vérifier le contenu d'un contrat intelligent avant de le signer (ou d'interagir avec). La transparence d'un contrat intelligent garantit que tout le monde peut l'examiner. ## Cas d'utilisation des contrats intelligents {#use-cases} -Les contrats intelligents sont donc des programmes informatiques qui vivent sur la blockchain. Ils peuvent s'exécuter automatiquement. Vous pouvez suivre leurs transactions, prédire leur fonctionnement et même les utiliser de manière pseudonyme. C'est bien. Mais à quoi peuvent-ils servir ? Les contrats intelligents peuvent faire à peu près tout ce que font les autres programmes informatiques. +Les contrats intelligents peuvent faire essentiellement tout ce que les programmes informatiques peuvent faire. Ils peuvent effectuer des calculs, produire de la monnaie, stocker des données, générer des NFT, envoyer des messages et même produire des visuels. Voici quelques exemples courants et concrets : @@ -79,7 +69,7 @@ Ils peuvent effectuer des calculs, produire de la monnaie, stocker des données, - [Police d'assurance qui paie automatiquement](https://etherisc.com/) - [Norme qui permet aux gens de créer des devises personnalisées et interopérables](/developers/docs/standards/tokens/) -## Vous comprenez mieux avec des images ? {#visual-learner} +## Davantage qu'un apprenant visuel ? {#visual-learner} Regardez Finematics expliquer les contrats intelligents : diff --git a/src/content/translations/fr/staking/dvt/index.md b/src/content/translations/fr/staking/dvt/index.md new file mode 100644 index 00000000000..9486ef848cf --- /dev/null +++ b/src/content/translations/fr/staking/dvt/index.md @@ -0,0 +1,95 @@ +--- +title: Technologie de Validation Distribuée (DVT) +description: La technologie de validation distribuée (DVT) ou Distributed validator technology, permet le fonctionnement distribué d'un validateur Ethereum par plusieurs entités. +lang: fr +--- + +# Technologie de Validation Distribuée (DVT) {#distributed-validator-technology} + +La Technologie de validation distribuée (DVT) est une approche à la sécurité des validateurs répartissant la gestion des clés et les responsabilités de signature multipartites, dans le but de réduire les points de défaillance uniques et d'augmenter la résilience des validateurs. + +La DVT l'accomplit** en divisant la clé privée** utilisée pour sécuriser un validateur** parmi de nombreux ordinateurs** organisés en "cluster". Ce qui présente l'avantage de rendre très compliqué pour les commanditaires d'attaques de pouvoir accéder à la clé, celle-ci n'étant pas stockée intégralement sur une seule et même machine. Ça permet aussi à certains nœuds de se déconnecter, car la nécessité de signature peut être effectuée par un sous-ensemble des machines dans chaque cluster. Ce qui réduit également les points de défaillance uniques provenant du réseau et rend l'ensemble du groupe de validateurs bien plus robuste. + +![Un schéma illustrant la façon dont une clé de validateur unique est divisée en fragments, puis distribuée à plusieurs nœuds ayant des composants variables.](./dvt-cluster.png) + +## Pourquoi avons-nous besoin de la Technologie de validation distribuée (DVT) ? {#why-do-we-need-dvt} + +### Sécurité {#security} + +Les validateurs génèrent deux paires de clés publique-privée : les clés du validateur pour participer au consensus et les clés de retrait pour accéder aux fonds. Ainsi, alors que les validateurs sécurisent les clés de retrait dans un stockage à froid, les validateurs des clés privées doivent absolument rester en ligne 7j/7 et h24. Si la clé d'un validateur s'avère compromise, un attaquant peut alors prendre le contrôle du validateur en question, pouvant alors conduire à une sanction voire à la perte des ETH stackés (verrouillage d'actifs). La Technologie DVT peut aider à amoindrir ce risque. Voici comment : + +En utilisant la Technologie DVT, les validateurs peuvent participer au jalonnement tout en conservant la clé-privée-validateur dans un stockage à froid. Ce processus est établi en encryptant la clé originale complète d'un validateur puis divise cette dernière en parts de clé. Les fragments de clé demeurent en ligne et distribués par de multiples nœuds, ce qui permet le fonctionnement distribué du validateur. C'est possible car les validateurs Ethereum utilisent des signatures BLS qui sont additives, ce qui signifie que la clé entière peut être reconstituée en additionnant leurs composants. Ça permet au participant de maintenir hors-ligne et en toute sécurité, la clé de validation du master original. + +### Zéro point de défaillance unique {#no-single-point-of-failure} + +Lorsqu'un validateur est réparti parmi de multiples opérateurs et machines, il peut résister aux défaillances individuelles du matériel (hardware et logiciels) sans se déconnecter. Le risque de défaillances peut aussi être réduit en utilisant des configurations matérielles et logicielles diverses sur les nœuds d'un cluster. Cette résilience est indisponible aux configurations de validateurs à nœud simple - qui découle de la couche DVT. + +Si l'un des composants d'une machine au sein d'un cluster tombe en panne (exemple : s'il y a quatre opérateurs dans un cluster de validateurs et que l'un d'eux utilise un client spécifique qui présente un bug), les autres veillent à ce que le validateur continue de fonctionner normalement. + +### Décentralisation {#decentralization} + +Le scénario idéal pour Ethereum est de posséder le plus grand nombre de validateurs opérables agissant de manière indépendante. Cependant, quelques fournisseurs d'actifs (ETH) sont devenus très populaires et représentent une part importante de la totalité d'ETH mis en enjeu sur le réseau. La Technologie de validation distribuée (DVT) peut permettre à ses opérateurs d'exister tout en préservant un jalonnement décentralisé. Car les clés pour chaque validateur sont distribuées entre de nombreuses machines (ordinateurs), ce qui nécessiterait une bien plus grande collision pour qu'un validateur devienne malveillant. + +Sans la Technologie DVT, il est plus facile pour les fournisseurs d'actifs de ne prendre en charge qu'une ou deux configurations client pour l'ensemble de leurs validateurs, accroissant ainsi l'impact d'un bug client. La technologie (DVT) peut être utilisée pour répandre le risque autour de multiples configurations client et différentes machines (hardware), créant une certaine résilience à travers le biais de la diversité. + +**La technologie DVT offre à Ethereum les avantages suivants : ** + +1. **Décentralisation** du consensus à Preuve d'enjeu d'Ethereum +2. Assurer la** disponibilité continue** du réseau +3. Établir une tolérance aux défaillances validateur +4. **Confiance minime**de l'opération validateur +5. **Minimiser les risques** de sanctions et d'interruptions +6. **Améliorer la diversité**(client, centre de données, lieu, régulation, etc.) +7. **Renforcer la sécurité** du management des clés-validateur + +## Comment fonctionne la Technologie de validation distribuée (DVT) ? {#how-does-dvt-work} + +Une solution DVT contient les éléments suivants : + +- Le partage secret de Shamir (SSS - algorithme cryptographique portant le nom de son créateur : Adi Shamir) Validateurs utilisant [des clés BLS](https://en.wikipedia.org/wiki/BLS_digital_signature) Les partages individuels de clés BLS (key shares) peuvent être combinés en une seule clé agrégée (signature). Dans la Technologie de validation distribuée (DVT), la clé privée d'un validateur est la combinaison de signatures BLS de chaque opérateur à l'intérieur du cluster. + + - Seuil du schéma de signature - Détermine le nombre de partages de clés individuelles requis au sujet des droits de signature. Exemple : 3 sur 4. + + - Génération de clés distribuées (DKG) - Processus cryptographique qui génère les partages de clé, puis utilisé à distribuer les partages d'une clé de validateur nouvelle ou déjà existante à l'endroit des nœuds d'un cluster. + + - **[Calcul multipartite (MPC)](https://messari.io/report/applying-multiparty-computation-to-the-world-of-blockchains)** - L'intégralité de la clé du validateur est générée de manière confidentielle via l'apport d'un calcul multipartite sécurisé. L'intégralité de la clé n'est jamais connue par aucun opérateur individuel : chaque opérateur n'a connaissance que de son propre fragment de clé (leur "part"). + +- **Protocole de consensus** - Le protocole de consensus sélectionne un nœud qui deviendra le proposant de bloc. Ils partagent ledit bloc avec les autres nœuds du cluster, qui ajoutent leurs fragments de clé à la signature agrégée. Lorsque suffisamment de fragments de clé ont été agrégés, le bloc est proposé sur Ethereum. + +Les validateurs distribués bénéficient d'une tolérance aux défaillances intégrées et peuvent continuer à fonctionner, et ce même, si certains des nœuds individuels demeurent hors-ligne. Il faut interpréter que le cluster est résistant, même si certains de ses nœuds s'avèrent être malveillants ou très peu actifs. + +## Cas d'utilisation de la Technologie de Validation Distribuée (DVT) {#dvt-use-cases} + +La DVT a des implications significatives pour l'ensemble de l'industrie du "staking" (verrouillage d'ETH dans le but de sécuriser la blockchain Ethereum) : + +### Mise en enjeu individuelle {#solo-stakers} + +La technologie DVT permet également une participation non-custodienne (staking), en vous autorisant à distribuer votre clé de validateur à travers des nœuds distants, tout en conservant l'intégralité de la clé de manière totalement hors-ligne. Ce qui signifie que les participants individuels n'ont pas nécessairement besoin d'investir dans du matériel (hardware), tandis que la distribution des fragments de clé, peut aider à les renforcer contre d'éventuelles attaques (hack). + +### Mise en jeu en tant que service (SaaS) {#saas} + +Les opérateurs comme les pools de staking (verrouillage d'actifs - ETH) ainsi que les fournisseurs d'actifs institutionnels gérant de multiples validateurs, peuvent utiliser la technologie de validation distribuée (DVT) afin de réduire leurs risques. En distribuant leur infrastructure, ils peuvent rajouter de la redondance à leurs opérations, et ainsi diversifier les types de matériel hardware qu'ils utilisent. + +La technologie DVT partage la responsabilité de la gestion des clés entre plusieurs nœuds, entendant le fait que certains coûts opérationnels peuvent également être répartis. La technologie DVT peut aussi réduire les coûts opérationnels et d'assurance pour les fournisseurs d'actifs. + +### Les pools de mise en jeu {#staking-pools} + +En raison des configurations standard des validateurs, les pools de staking et les fournisseurs de staking liquide, sont contraints à différents niveaux de confiance en un seul opérateur, depuis que gains et pertes sont partagés par l'ensemble du pool. Ils dépendent également des opérateurs afin de protéger les clés de signature, car jusqu'à présent, aucune autre option ne s'offrait à eux. + +Même si des efforts constants sont déployés pour diluer le risque en distribuant des participations entre plusieurs opérateurs, chaque opérateur gère toujours une part de verrouillage d'actifs (ETH) significative de façon indépendante. S'appuyer sur un seul opérateur présente des risques considérables, si celui-ci sous-performe, qu'il rencontre des périodes d'inactivité, qu'il est compromis, ou encore s'il agit par des actes malveillants. + +En optimisant la Technologie de validation distribuée (DVT), le niveau de confiance requis de la part des opérateurs s'en retrouve nettement réduit. **Les pools permettent entres autres aux opérateurs, de détenir des participations sans nécessiter la conservation des clés de validation** (seuls des fragments de clé sont utilisés). Ce qui permet de répartir les participations gérées entre plusieurs opérateurs (ex : au lieu d'avoir un opérateur unique administrant quelque 1000 validateurs, la technologie DVT permet auxdits validateurs d'être collectivement régentés par plusieurs opérateurs). Aussi, des configurations diverses d'opérateurs (validateurs) garantiront que si l'un des opérateurs rencontraient une faille technique, les autres garants du réseau pourraient toujours garantir l'attestation (processus de signature d'un bloc). Ce qui engendre une redondance et une diversification conduisant à de meilleures performances ajoutée à une plus grande résilience, tout en maximisant les récompenses. + +L'autre avantage de minimiser la confiance en un seul opérateur, c'est que les pools de staking permettent une participation plus ouverte sans le consentement des autres opérateurs. En procédant ainsi, les acteurs peuvent réduire leur risque et soutenir la décentralisation d'Ethereum, en utilisant tout à la fois des ensembles d'opérateurs supervisés et ouverts, par exemple, en associant des fournisseurs d'actifs (Staking) individuels ou de moindre envergure à des acteurs plus importants. + +## Inconvénients possibles à l'utilisation de la Technologie de validation distribuée (DVT) {#potential-drawbacks-of-using-dvt} + +- **Composant additionnel** - L' introduction d'un nœud DVT ajoute une partie supplémentaire potentiellement défectueuse ou vulnérable. Une manière d'atténuer cette situation est de forcer plusieurs mises en œuvre d'un nœud DVT, c'est-à-dire plusieurs clients DVT (tout comme il existe plusieurs clients pour le consensus en lui-même et les couches d'exécution). +- **Coûts opérationnels** - comme la technologie DVT distribue la validation de façon multipartite, davantage de nœuds sont requis pour le fonctionnement au lieu d'un nœud seul, ce qui génère des coûts liés à ce processus bien plus élevés. +- **Possibilité d'une latence accrue** - étant donné que la technologie DVT utilise un protocole de consensus pour finaliser ledit consensus via les nœuds multiples exploitant un validateur ; ce qui peut entraîner une latence accrue possible. + +## Complément d'information {#further-reading} + +- [Spécificités des validateurs distribués d'Ethereum (niveau élevé)](https://github.com/ethereum/distributed-validator-specs) +- [Spécificités techniques des validateurs distribués d'Ethereum](https://github.com/ethereum/distributed-validator-specs/tree/dev/src/dvspec) +- [Application démo de partage de secret Shamir](https://iancoleman.io/shamir/) diff --git a/src/content/translations/fr/staking/pools/index.md b/src/content/translations/fr/staking/pools/index.md index db25ab54414..da90aaab1cb 100644 --- a/src/content/translations/fr/staking/pools/index.md +++ b/src/content/translations/fr/staking/pools/index.md @@ -10,7 +10,7 @@ sidebarDepth: 2 summaryPoints: - Misez et gagnez des récompenses avec n'importe quel montant d'ETH en joignant vos forces à celles des autres - Laissez de côté la partie difficile et confiez la validation des opérations à une tierce partie - - Conservez les jetons de liquidité dans votre propre portefeuille + - Conservez vos jetons de staking dans votre propre portefeuille --- ## Que sont les groupes d'enjeu ? {#what-are-staking-pools} @@ -26,7 +26,7 @@ En plus des avantages que nous avons décrits dans notre [introduction à la mis - + @@ -35,9 +35,9 @@ En plus des avantages que nous avons décrits dans notre [introduction à la mis La mise en jeu mutualisée ou déléguée n'est pas prise en charge nativement par le protocole Ethereum, mais compte tenu de la demande des utilisateurs de miser moins de 32 ETH, un nombre croissant de solutions ont été construites pour répondre à cette demande. -Chaque pool et les outils ou contrats intelligents qu'ils utilisent ont été élaborés par différentes équipes, et chacun présente des avantages et des risques. Les pools permettent aux utilisateurs d'échanger leur ETH contre un jeton représentant l'ETH mis en jeu. Le jeton est connu sous le nom de « dérivé de staking liquide » ; ceci est utile parce que cela permet aux utilisateurs d'échanger n'importe quel montant d'ETH à un montant équivalent d'un jeton porteur de rendement qui génère un retour des récompenses de mise en jeu appliquées à l'ETH misé sous-jacent (et vice versa) sur les échanges décentralisés même si l'ETH réel reste misé sur la Chaîne phare (Beacon Chain). Cela signifie que les échanges entre un produit ETH mis en jeu générateur de rendement et l'« ETH brut» sont rapides, faciles et pas uniquement disponibles en multiples de 32 ETH. +Chaque pool et les outils ou contrats intelligents qu'ils utilisent ont été élaborés par différentes équipes, et chacun présente des avantages et des risques. Les pools permettent aux utilisateurs d'échanger leur ETH contre un jeton représentant l'ETH mis en jeu. Ce jeton est utile car il permet aux utilisateurs d'échanger n'importe quel montant d'ETH avec un montant équivalent d'un jeton porteur d'intérêts qui génère des rendements à partir des récompenses de staking appliqués aux ETH sous-jacents (et vice versa) sur les plateformes d'échanges décentralisées alors même que l'ETH réel reste mis en jeu sur la couche consensus. Cela signifie que les échanges entre un produit ETH mis en jeu générateur de rendement et l'« ETH brut» sont rapides, faciles et pas uniquement disponibles en multiples de 32 ETH. -Cependant, ces dérivés du staking liquide ont tendance à créer des comportements de type cartel, où une grande quantité d'ETH mis en jeu se retrouve sous le contrôle de quelques organisations centralisées plutôt que répartis entre de nombreux individus indépendants. Cela crée les conditions d'une censure ou d'une extraction de valeur. La norme d'excellence pour la mise en jeu devrait toujours porter sur des personnes individuelles qui exécutent des nœuds validateurs sur leur propre matériel, dans la mesure du possible. +Toutefois, ces jetons d'ETH mis en jeu ont tendance à créer des comportements assimilables à des cartels où de vastes montants d'ETH mis en jeu finissent sous le contrôle de quelques organisations centralisées plutôt que réparties à travers de nombreux individus indépendants. Cela crée les conditions d'une censure ou d'une extraction de valeur. La norme d'excellence pour la mise en jeu devrait toujours porter sur des personnes individuelles qui exécutent des nœuds validateurs sur leur propre matériel, dans la mesure du possible. [En savoir plus sur les risques de la mise en jeu de jetons](https://notes.ethereum.org/@djrtwo/risks-of-lsd). @@ -49,28 +49,24 @@ Les indicateurs d'attributs sont utilisés ci-dessous pour signaler des forces o De nombreuses options sont disponible pour vous aider dans votre configuration. Utilisez les indicateurs ci-dessus pour vous guider à travers les outils ci-dessous. - -Veuillez noter l'importance de choisir un service qui prend au sérieux la diversité des clients , car elle améliore la sécurité du réseau et limite vos risques. Les services dont il est prouvé qu'ils limitent l'utilisation des clients majoritaires sont indiqués comme "clients diversifiés". - + -Avez-vous une suggestion concernant un outil de mise en jeu que nous avons manqué ? Consultez notre [politique de liste de produits](/contributing/adding-staking-products/) pour voir s'il conviendrait, et le soumettre à examen. +Veuillez noter l'importance de choisir un service qui prend au sérieux [la diversité des clients](/developers/docs/nodes-and-clients/client-diversity/) , car elle améliore la sécurité du réseau et limite vos risques. Les services limitent l'émergence d'un client majoritaire sont indiqués avec "diversité des clients d'exécution" et "diversité des clients de consensus". + +Vous souhaitez suggérer un outil de mise en jeu que nous avons manqué ? Consultez notre [politique de liste de produits](/contributing/adding-staking-products/) pour voir s'il conviendrait, et le soumettre à examen. ## Questions fréquemment posées {#faq} -Habituellement, les jetons de liquidité ERC-20 émis envers les validateurs représentent la valeur de leur ETH misé auquel s'ajoutent des récompenses. Gardez en mémoire que les différents pools distribueront des récompenses de mise en jeu à leurs utilisateurs selon des règles différentes, mais c'est un sujet général. +Habituellement, les jetons ERC-20 de staking sont émis envers les validateurs et représentent la valeur de leur ETH misé auquel s'ajoutent des récompenses. Gardez en mémoire que les différents pools distribueront des récompenses de mise en jeu à leurs utilisateurs selon des règles différentes, mais c'est un sujet général. -Actuellement, il n'est pas possible de retirer des fonds d'un validateur Ethereum, ce qui limite la capacité à réellement échanger votre jeton de liquidité en échange des récompenses ETH bloquées dans la couche de consensus. - -La mise à niveau du réseau de Shanghai introduira la fonctionnalité de retrait prévue pour le 12 avril 2023. Tous les ETH misés resteront verrouillés jusqu'à ce moment-là. - -Après cette mise à niveau, les comptes de validateur soutenant les pools de mise en jeu auront la possibilité de sortir et de retirer l'ETH à leur adresse de retrait désignée. Cela vous permettra de racheter votre part de participation d'ETH sous-jacent. Vérifiez auprès de votre fournisseur de services pour savoir comment il supporte cette fonctionnalité. +Et c'est déjà le cas ! La mise à niveau du réseau Shanghai/Capella a eu lieu en avril 2023 et a introduit des retraits de staking. Après cette mise à niveau, les comptes de validateur soutenant les pools de mise en jeu auront la possibilité de sortir et de retirer l'ETH à leur adresse de retrait désignée. Cela permet de racheter votre part de mise en jeu pour l'ETH. Vérifiez auprès de votre fournisseur de services pour savoir comment il supporte cette fonctionnalité. -Alternativement, les pools qui utilisent un jeton de liquidité ERC-20 permettent aux utilisateurs d'échanger ce jeton sur le marché ouvert, vous permettant de vendre votre position de mise en jeu, de réaliser dans les faits un "retrait" sans pour autant retirer l'ETH du contrat de mise en jeu. +Alternativement, les pools qui utilisent les jetons de staking ERC-20 permettent à leurs utilisateurs d'échanger ce jeton sur le marché ouvert, vous permettant de vendre votre position de mise, en retirant sans pour autant supprimer l'ETH du contrat de staking. En savoir plus sur les retraits de mise en jeu. @@ -78,7 +74,7 @@ Alternativement, les pools qui utilisent un jeton de liquidité ERC-20 permetten Il existe de nombreuses similitudes entre ces options de mise en jeu mutualisée et les échanges centralisés, comme la capacité de mettre en jeu de petites quantités d'ETH et de les regrouper pour activer les validateurs. -Contrairement aux échanges centralisés, beaucoup d'autres options de mise en jeu mutualisée utilisent des contrats intelligents et/ou des jetons de liquidité, qui sont habituellement des jetons ERC-20 pouvant être détenus dans votre propre portefeuille, et achetés ou vendus comme n'importe quel autre jeton. Cela vous offre une couche de souveraineté et de sécurité en vous donnant le contrôle de vos jetons, mais ne vous donne toujours pas de contrôle direct sur le client de validateur qui atteste en votre nom en arrière-plan. +Contrairement aux plateformes d'échanges centralisés, beaucoup d'autres options de mise en jeu mutualisée utilisent des contrats intelligents et/ou des jetons de staking, qui sont habituellement des jetons ERC-20 pouvant être détenus dans votre propre portefeuille, et achetés ou vendus comme n'importe quel autre jeton. Cela vous offre une couche de souveraineté et de sécurité en vous donnant le contrôle de vos jetons, mais ne vous donne toujours pas de contrôle direct sur le client de validateur qui atteste en votre nom en arrière-plan. Certaines options de mise en commun sont plus décentralisées que d'autres concernant les nœuds qui les soutiennent. Pour promouvoir la santé et la décentralisation du réseau, les validateurs sont toujours encouragés à sélectionner un service de mutualisation offrant un ensemble décentralisé d'opérateurs de nœuds sans permission. diff --git a/src/content/translations/fr/staking/saas/index.md b/src/content/translations/fr/staking/saas/index.md index a35a64bff75..d50e83b6b75 100644 --- a/src/content/translations/fr/staking/saas/index.md +++ b/src/content/translations/fr/staking/saas/index.md @@ -23,15 +23,15 @@ Le protocole Ethereum ne soutient pas nativement la délégation de mise en jeu. - - + + ## Ce que vous devez prendre en compte {#what-to-consider} -Il existe un nombre croissant de fournisseurs de services SaaS pour vous aider à miser votre ETH, mais chacun présente différents avantages et risques. Vous devriez considérer que toutes les options SaaS requièrent des hypothèses de confiance supplémentaires par rapport au staking local. Les options Saas peuvent contenir du code supplémentaire qui n'est ni ouvert ni auditable, pour les clients Ethereum. Le SaaS a également un effet préjudiciable sur la décentralisation du réseau. Selon la configuration, il se peut que vous ne contrôliez pas votre validateur - l'opérateur pourrait agir malhonnêtement en utilisant votre ETH. +Il existe un nombre croissant de fournisseurs de services SaaS pour vous aider à miser votre ETH, mais chacun présente ses propres avantages et risques. Toutes les options SaaS requièrent des hypothèses de confiance supplémentaires par rapport à la mise en jeu individuelle depuis le domicile. Les options Saas peuvent contenir du code supplémentaire qui n'est ni ouvert ni auditable, pour les clients Ethereum. Le SaaS a également un effet préjudiciable sur la décentralisation du réseau. Selon la configuration, il se peut que vous ne contrôliez pas votre validateur - l'opérateur pourrait agir malhonnêtement en utilisant votre ETH. Les indicateurs sont listés ci-dessous pour signaler les forces ou faiblesses notables d'un fournisseur SaaS répertorié. Utilisez cette section comme référence pour définir ces indicateurs pendant que vous choisissez un pool à rejoindre. @@ -41,14 +41,14 @@ Les indicateurs sont listés ci-dessous pour signaler les forces ou faiblesses n Vous trouverez ci-dessous quelques fournisseurs SaaS disponibles. Utilisez les indicateurs ci-dessus pour vous guider à travers les outils ci-dessous - -Veuillez noter l'importance de choisir un service qui prend au sérieux la diversité des clients , car elle améliore la sécurité du réseau et limite vos risques. Les services dont il est prouvé qu'ils limitent l'utilisation des clients majoritaires sont indiqués comme "clients diversifiés". - + #### Fournisseurs SaaS +Veuillez noter l'importance de choisir un service qui prend au sérieux [la diversité des clients](/developers/docs/nodes-and-clients/client-diversity/) , car elle améliore la sécurité du réseau et limite vos risques. Les services limitent l'émergence d'un client majoritaire sont indiqués avec "diversité des clients d'exécution" et "diversité des clients de consensus". + #### Générateurs de clés @@ -58,7 +58,7 @@ Avez-vous une suggestion concernant un fournisseur de mise en jeu en tant que se ## Questions fréquemment posées {#faq} - Les dispositions varient d'un fournisseur à l'autre, mais en général, vous serez guidé à travers la configuration de toutes les clés de signature dont vous avez besoin (un par 32 ETH), afin de les télécharger à votre fournisseur et lui permettre de les valider en votre nom. Les clés de signature seules ne donnent aucune possibilité de retirer, de transférer ou de dépenser vos fonds. Cependant, elles donnent la possibilité de voter pour le consensus, ce qui, si ce n'est pas fait correctement, peut entraîner des pénalités de mise hors ligne ou de délestage. +Les dispositions varient d'un fournisseur à l'autre, mais en général, vous serez guidé à travers la configuration de toutes les clés de signature dont vous avez besoin (un par 32 ETH), afin de les télécharger à votre fournisseur et lui permettre de les valider en votre nom. Les clés de signature seules ne donnent aucune possibilité de retirer, de transférer ou de dépenser vos fonds. Cependant, elles donnent la possibilité de voter pour le consensus, ce qui, si ce n'est pas fait correctement, peut entraîner des pénalités de mise hors ligne ou de délestage. @@ -66,25 +66,25 @@ Oui. Chaque compte est composé à la fois de clés de signature BLS (B Les clés de retrait BLS sont utilisées pour signer un message unique qui indique à quel compte de couche d'exécution les récompenses de mise en jeu de compte et les fonds sortis doivent être envoyés. Une fois ce message diffusé, les clés de retrait BLS ne sont plus nécessaires. Au lieu de cela, le contrôle des fonds retirés est délégué de façon permanente à l'adresse que vous avez fournie. Cela vous permet de définir une adresse de retrait sécurisée via votre propre portefeuille de stockage à froid, minimisant le risque pour les fonds de votre validateur, même si quelqu'un d'autre contrôle les clés de signature de votre validateur. -La mise à jour des identifiants de retrait est une étape nécessaire pour activer les retraits avec la mise à niveau Shanghai. Ce processus consiste à générer les clés de retrait en utilisant votre phrase de récupération mnémotechnique. Assurez-vous que vous que cette phrase de récupération soit sauvegardée en toute sécurité ou vous ne pourrez pas générer vos clés de retrait le moment venu. +La mise à jour des identifiants de retrait est une étape nécessaire pour activer les retraits\*. Ce processus consiste à générer les clés de retrait en utilisant votre phrase de récupération mnémotechnique. + +Assurez-vous que vous que cette phrase de récupération soit sauvegardée en toute sécurité ou vous ne pourrez pas générer vos clés de retrait le moment venu. Les stakers qui ont fourni une adresse de retrait avec le dépôt initial n'ont pas besoin de la définir. Consultez votre fournisseur SaaS pour obtenir une assistance sur la façon de préparer votre validateur. -Lorsque vous mettez 32 ETH en jeu avec un fournisseur SaaS, cet ETH est toujours déposé dans le cadre du contrat officiel de dépôt de mise en jeu. Ainsi, les personnes qui misent avec SaaS sont limités par les mêmes restrictions de retrait que les stakers individuels, et les retraits ne sont pas autorisés jusqu'à la mise à niveau Shanghai. - -Les retraits de staking seront mis en œuvre lors de la prochaine mise à niveau de Shanghai, prévue pour le 12 avril 2023. Après cela, les personnes qui misent doivent fournir une adresse de retrait (si elle n'est pas fournie avec le dépôt initial) et les paiements de récompense commenceront automatiquement à être distribués de façon périodique à intervalles de quelques jours. +Les retraits de prises ont été mis en œuvre lors de la mise à niveau de Shanghai/Capella en avril 2023. Après cela, les personnes qui misent doivent fournir une adresse de retrait (si elle n'est pas fournie avec le dépôt initial) et les paiements de récompense commenceront automatiquement à être distribués de façon périodique à intervalles de quelques jours. -Cela permettra également de débloquer les fonds sortis. Les validateurs peuvent se retirer entièrement en tant que validateur, et ils recevront leur solde complet à l'adresse de retrait fournie. +Les validateurs peuvent également se retirer entièrement en tant que validateur, ce qui débloquera leur solde ETH restant pour le retrait. Les comptes qui ont fourni une adresse de retrait d’exécution et terminé le processus de sortie recevront tout leur solde à l’adresse de retrait fournie lors du prochain balayage du validateur. En savoir plus sur les retraits de mise en jeu -En utilisant un fournisseur SaaS, vous confiez l'exploitation de votre nœud à quelqu'un d'autre. Cela s'accompagne du risque de mauvaise performance du nœud, qui n'est pas sous votre contrôle. Dans le cas où votre validateur est banni, votre solde de validateur sera pénalisé et supprimé de force du groupe de validateurs. Ces fonds seront verrouillés jusqu'à ce que les retraits soient activés au niveau du protocole. +En utilisant un fournisseur SaaS, vous confiez l'exploitation de votre nœud à quelqu'un d'autre. Cela s'accompagne du risque de mauvaise performance du nœud, qui n'est pas sous votre contrôle. Dans le cas où votre validateur est banni, votre solde de validateur sera pénalisé et supprimé de force du groupe de validateurs. -La prochaine mise à niveau de Shanghai apporte la fonctionnalité de retrait. Cependant, il est nécessaire de fournir une adresse de retrait pour l'activer. Il se peut que l'adresse de retrait ait été fournie sur dépôt initial. Dans le cas contraire, les clés de signature du validateur devront être utilisées pour signer un message déclarant une adresse de retrait une fois la mise à niveau en ligne. +Une fois le processus de coupure ou de sortie terminé, ces fonds seront transférés à l'adresse de retrait assignée au validateur. Cela nécessite de fournir une adresse de retrait à activer. Il se peut que l'adresse de retrait ait été fournie sur dépôt initial. Sinon, les clés de retrait du validateur devront être utilisées pour signer un message indiquant une adresse de retrait. Si aucune adresse de retrait n'a été fournie, les fonds resteront verrouillés jusqu'à ce qu'ils soient fournis. Communiquez avec un fournisseur individuel de SaaS pour obtenir davantage de détails sur n'importe quelles garanties ou options d'assurance ainsi que des instructions sur la façon de fournir une adresse de retrait. Si vous préférez contrôler complètement la configuration de votre validateur, apprenez-en plus sur la façon de miser votre ETH de manière individuelle. diff --git a/src/content/translations/fr/staking/solo/index.md b/src/content/translations/fr/staking/solo/index.md index a2de814d5a1..b77323830ee 100644 --- a/src/content/translations/fr/staking/solo/index.md +++ b/src/content/translations/fr/staking/solo/index.md @@ -40,32 +40,37 @@ La mise en jeu individuelle demande plus de responsabilités, mais vous donne un Bien que nous souhaitions que la mise en jeu individuelle soit accessible et sans risque pour tout le monde, la réalité est différente. Diverses considérations pratiques et sérieuses sont à garder à l'esprit avant de choisir de miser vos ETH de manière individuelle. - - Lorsque vous opérerez votre propre nœud, vous devrez passer du temps à apprendre à utiliser le logiciel que vous avez choisi. Cela implique de lire la documentation adéquate et d'être connecté aux canaux de communication de ses équipes de développeurs. - Mieux vous comprendrez le logiciel que vous exécutez et comment la preuve d'enjeu fonctionne, moins ce sera risqué pour vous, et plus il vous sera facile de résoudre toute sorte de problèmes qui peuvent survenir en tant qu'opérateur de nœud. - - - La configuration des nœuds nécessite un niveau d'aisance raisonnable dans le travail avec des ordinateurs, bien que de nouveaux outils apparaissent au fil du temps pour rendre cela plus facile. Comprendre l'interface de ligne commande est utile, mais n'est plus strictement nécessaire. - Il faut également faire un petit peu de configuration matérielle et posséder une certaine compréhension des spécifications minimales recommandées. - - - Tout comme la façon dont les clés privées sécurisent votre adresse Ethereum, vous devrez générer des clés spécifiques pour votre validateur. Il est important de bien comprendre comment protéger les phrases de récupération ou les clés privées, et comment les stocker en toute sécurité. -

    Sécurité d'Ethereum et prévention des arnaques

    -
    - - Il n'est pour l'instant pas possible de retirer les ETH misés ou les récompenses du solde d'un validateur. La prise en charge des retraits est prévue pour la prochaine mise à niveau Shanghai. Après cela, les utilisateurs peuvent opter pour recevoir des paiements de récompense automatiquement, et peuvent retirer leur solde entier pour recevoir leurs fonds en retour. - - - Le matériel tombe parfois en panne, tout comme les connexions réseau, et les logiciels client ont parfois besoin d'être mis à jour. La maintenance des nœuds est inévitable et nécessitera occasionnellement votre attention. Il est préférable de se tenir au courant de toutes les mises à niveau du réseau prévues, ou d'autres mises à jour critiques des logiciels client. - - - Vos récompenses sont proportionnelles au temps passé par votre validateur en ligne et au fait qu'il atteste correctement. Tout temps passé hors ligne s'accompagne de pénalités proportionnelles au nombre de validateurs qui se trouvent hors ligne au même moment, mais ne donne pas lieu à des sanctions de délestage (slashing). La bande passante est également un facteur important, car les récompenses sont réduites pour les attestations qui ne sont pas reçues à temps. Les exigences varient, mais un minimum de 10 Mbit/s est recommandé (débits descendant et montant). - - - Les sanctions de délestage (slashing) diffèrent des pénalités d'inactivité (applicables si un validateur est hors ligne). Ce sont des pénalités bien plus graves, réservées aux délits ayant un caractère malveillant. Exécuter un client minoritaire en ayant vos clés chargées sur un seul appareil à la fois permet de minimiser le risque de délestage. Cela étant dit, toute personne plaçant des ETH doit être consciente du risque de délestage. - -

    En savoir plus sur le délestage et le cycle de vie du validateur

    -
    + +Lorsque vous opérerez votre propre nœud, vous devrez passer du temps à apprendre à utiliser le logiciel que vous avez choisi. Cela implique de lire la documentation adéquate et d'être connecté aux canaux de communication de ses équipes de développeurs. + +Mieux vous comprendrez le logiciel que vous exécutez et comment la preuve d'enjeu fonctionne, moins ce sera risqué pour vous, et plus il vous sera facile de résoudre toute sorte de problèmes qui peuvent survenir en tant qu'opérateur de nœud. + + + +La configuration des nœuds nécessite un niveau d'aisance raisonnable dans le travail avec des ordinateurs, bien que de nouveaux outils apparaissent au fil du temps pour rendre cela plus facile. Comprendre l'interface de ligne commande est utile, mais n'est plus strictement nécessaire. + +Il faut également faire un petit peu de configuration matérielle et posséder une certaine compréhension des spécifications minimales recommandées. + + + +Tout comme la façon dont les clés privées sécurisent votre adresse Ethereum, vous devrez générer des clés spécifiques pour votre validateur. Vous devez comprendre comment conserver toutes vos phrases de récupération ou vos clés privées en sécurité.{' '} + +Sécurité d'Ethereum et prévention des escroqueries + + + +Le matériel tombe parfois en panne, tout comme les connexions réseau, et les logiciels client ont parfois besoin d'être mis à jour. La maintenance des nœuds est inévitable et nécessitera occasionnellement votre attention. Il est préférable de se tenir au courant de toutes les mises à niveau du réseau prévues, ou d'autres mises à jour critiques des logiciels client. + + + +Vos récompenses sont proportionnelles au temps passé par votre validateur en ligne et au fait qu'il atteste correctement. Tout temps passé hors ligne s'accompagne de pénalités proportionnelles au nombre de validateurs qui se trouvent hors ligne au même moment, mais ne donne pas lieu à des sanctions de délestage (slashing). La bande passante est également un facteur important, car les récompenses sont réduites pour les attestations qui ne sont pas reçues à temps. Les exigences varient, mais un minimum de 10 Mbit/s est recommandé (débits descendant et montant). + + + +Les sanctions de délestage (slashing) diffèrent des pénalités d'inactivité (applicables si un validateur est hors ligne). Ce sont des pénalités bien plus graves, réservées aux délits ayant un caractère malveillant. Exécuter un client minoritaire en ayant vos clés chargées sur un seul appareil à la fois permet de minimiser le risque de délestage. Cela étant dit, toute personne plaçant des ETH doit être consciente du risque de délestage. + +Plus de détails sur le slashing et le cycle de vie du validateur +
    @@ -78,8 +83,6 @@ Lorsque vous êtes actif, vous gagnerez des récompenses ETH, qui seront dépos Si vous le désirez, vous pouvez vous retirer en tant que validateur, ce qui élimine l'obligation d'être en ligne et met fin à toute autre récompense. Votre solde restant sera alors retiré à l'adresse de retrait que vous avez désignée lors de la configuration. -_La mise à niveau de Shanghai est nécessaire pour permettre les paiements de récompense et les retraits complets des validateurs sortis._ - [En savoir plus sur les retraits de mise en jeu](/staking/withdrawals/) ## Commencer avec la plateforme de lancement de la mise en jeu {#get-started-on-the-staking-launchpad} @@ -100,14 +103,14 @@ Les indicateurs d'attributs sont utilisés ci-dessous pour signaler des forces o Il existe une variété d'options disponibles pour vous aider dans votre configuration. Utilisez les indicateurs ci-dessus pour vous guider à travers les outils ci-dessous. - -Veuillez noter l'importance de choisir un client minoritaire , car cela améliore la sécurité du réseau et limite vos risques. Les outils qui permettent de configurer un client minoritaire sont désignés comme "multi-client." - + #### Outils de nœud +Veuillez noter l'importance de choisir un [client minoritaire](/developers/docs/nodes-and-clients/client-diversity/) , car cela améliore la sécurité du réseau et limite vos risques. Les outils qui permettent de configurer un client minoritaire sont désignés comme "multi-client." + #### Générateurs de clés Ces outils peuvent être utilisés en alternative à [l'interface de dépôt de mise en jeu](https://github.com/ethereum/staking-deposit-cli/) pour vous aider à générer vos clés. @@ -126,14 +129,14 @@ Voici quelques-unes des questions les plus fréquentes relatives à la mise en j -Un validateur est une entité virtuelle existant sur Ethereum et participant au consensus du protocole Ethereum. Les validateurs sont représentés par un solde, une clé publique et d'autres propriétés. Un client validateur est le logiciel qui agit au nom du validateur en détenant et en utilisant sa clé privée. Un même client peut contenir plusieurs paires de clés, contrôlant de nombreux validateurs. +Un validateur est une entité virtuelle existant sur Ethereum et participant au consensus du protocole Ethereum. Les validateurs sont représentés par un solde, une clé publique et d'autres propriétés. Un client de validateur est le logiciel qui agit au nom du validateur en détenant et en utilisant sa clé privée. Un même client peut contenir plusieurs paires de clés, contrôlant de nombreux validateurs. Chaque paire de clés associée à un validateur nécessite exactement 32 ETH pour être activée. Déposer plus d'ETH sur un même ensemble de clés n'augmente pas le potentiel de récompense, car chaque validateur est limité à un solde effectif de 32 ETH. Cela signifie que la mise en jeu se fait par tranches de 32 ETH, chacune avec son propre jeu de clés et son propre solde. -Ne déposez pas plus de 32 ETH pour un seul validateur. Cela n'augmentera pas vos récompenses, et ils seront verrouillés jusqu'à la mise à jour de Shanghai. +Ne déposez pas plus de 32 ETH pour un seul validateur. Cela n'augmentera pas vos récompenses. Si une adresse de retrait a été définie pour le validateur, Les fonds excédentaires de 32 ETH seront automatiquement retirés à cette adresse lors du prochain balayage de validateur. Si la mise en jeu individuelle vous semble trop exigeante, envisagez d'utiliser un fournisseur de mise en jeu en tant que service, ou si vous possédez moins de 32 ETH, consultez les groupes d'enjeu. @@ -155,8 +158,10 @@ L'exécution d'un client supermajoritaire (tout client utilisé par plus de 2/3 Des bogues équivalents dans un client minoritaire ne seraient jamais finalisés et ne donneraient donc jamais lieu à un vote circulaire, et entraîneraient simplement des pénalités d'inactivité, et non un délestage. -

    En savoir plus sur l'importance d'exploiter un client minoritaire.

    -

    En savoir plus sur la prévention du délestage

    + @@ -176,9 +181,10 @@ Les pénalités hors ligne sont proportionnelles au nombre de personnes se trouv -Au moment de la mise à niveau de Shanghai, les paiements de récompense et les retraits complets des validateurs sortis commenceront. Les retraits de quelque nature que ce soit de la Chaîne Phare (Beacon Chain) exigent que les identifiants de retrait soient définis. -Les nouvelles personnes plaçant des ETH définissent ceci au moment de la génération et du dépôt de clés. Les personnes ayant déjà placé des ETH qui n'ont pas déjà défini cela peuvent mètre à jour leurs clés. Leurs clés pourront ainsi supporter cette fonctionnalité après la mise à niveau de Shanghai. +Les retraits de quelque nature que ce soit de la Chaîne Phare (Beacon Chain) exigent que les identifiants de retrait soient définis. + +Les nouvelles personnes plaçant des ETH définissent ceci au moment de la génération et du dépôt de clés. Les stakers existants qui n'ont pas déjà défini cela peuvent mettre à jour leurs clés pour supporter cette fonctionnalité. Une fois que les identifiants de retrait sont définis, les paiements de récompense (ETH cumulés par rapport aux 32 initiaux) seront distribués périodiquement à l'adresse de retrait automatiquement. diff --git a/src/content/translations/fr/staking/withdrawals/index.md b/src/content/translations/fr/staking/withdrawals/index.md index 033deae0785..bc27a6cd301 100644 --- a/src/content/translations/fr/staking/withdrawals/index.md +++ b/src/content/translations/fr/staking/withdrawals/index.md @@ -4,34 +4,36 @@ description: Page résumant ce que sont les retraits de staking, comment ils fon lang: fr template: staking image: ../../../../../assets/staking/leslie-withdrawal.png -alt: Leslie le rhinocéros avec ses récompenses de stacking +alt: Leslie le rhinocéros avec ses récompenses de staking sidebarDepth: 2 summaryPoints: - - La mise à niveau de Shanghai permet d'activer les retraits sur Ethereum + - La mise à niveau Shanghai/Capella a permis les retraits de staking sur Ethereum - Les opérateurs validateurs doivent fournir une adresse de retrait pour l'activer - Les récompenses sont automatiquement distribuées tous les deux ou trois jours - - Les validateurs qui quittent complètements le staking recevront leur solde restant + - Les validateurs qui quittent complètement le staking recevront leur solde restant --- - Les retraits de staking seront autorisés grâce à la mise à niveau de Shanghai/Capella. Cette mise à niveau du réseau Ethereum devrait avoir lieu au premier semestre de 2023. Plus de détails ci-dessous +Les retraits de staking ont été activés avec la mise à niveau Shanghai/Capella, qui a eu lieu le 12 avril 2023. Plus d'informations sur Shanghai/Capella -La mise à niveau Shanghai/Capella permet **des retraits de staking** sur Ethereum, autorisant les gens à débloquer des récompenses de staking ETH. Les paiements des récompenses seront automatiquement et régulièrement envoyés à une adresse de retrait fournie et liée à chaque validateur. Les utilisateurs peuvent également quitter le staking entièrement en débloquant la totalité de leur solde de validateur. +**Les retraits de staking** font référence aux transferts d'ETH depuis le compte d'un validateur sur la couche de consensus d'Ethereum (la chaîne phare) vers la couche d'exécution où ils peuvent être traités. + +**Les paiements des récompenses au dessus d'un solde** de 32 ETH seront automatiquement et régulièrement envoyés à une adresse de retrait liée à chaque validateur, une fois fourni par l’utilisateur. Les utilisateurs peuvent également **quitter le staking entièrement**, débloquer leur solde de validateur complet. ## Récompenses de staking {#staking-rewards} Les paiements de récompenses sont traités automatiquement pour les comptes des validateurs actifs avec un solde effectif de 32 ETH maximum. -Tout solde supérieur à 32 ETH gagné grâce aux récompenses ne contribue pas réellement au principal, ou à augmenter la pondération de ce validateur sur le réseau, et est donc automatiquement retiré comme paiement des récompenses tous les deux ou trois jours. En sus de fournir une adresse de retrait ponctuellement, ces récompenses ne nécessitent aucune action de la part de l'opérateur de validateur. Tout cela est initié à la couche de consensus, donc aucun gaz (frais de transaction) n'est requis à aucune étape. +Tout solde supérieur à 32 ETH gagné grâce aux récompenses ne contribue pas réellement au capital, ou à augmenter le poids de ce validateur sur le réseau, et se trouve donc automatiquement renvoyé après quelques jours lors du paiement des récompenses. À part fournir une adresse de retrait une seule fois, recevoir ces récompenses ne nécessite aucune action de la part de l'opérateur du nœud validateur. Tout cela est géré depuis la couche de consensus, donc aucun gaz (frais de transaction) n'est requis à aucune étape. ### Comment sommes-nous arrivés là ? {#how-did-we-get-here} -Au cours des dernières années, Ethereum a subi plusieurs mises à niveau de réseau en passant à un réseau sécurisé par ETH lui-même, au lieu de miner à haute intensité énergétique comme par le passé. Participer au consensus sur Ethereum est maintenant connu sous le nom de « mise en jeu », les participants ayant volontairement bloqué l'ETH, le plaçant « en stacking » pour pouvoir participer au réseau. Les utilisateurs qui suivent les règles seront récompensés, tandis que les tentatives de triche peuvent être pénalisées. +Au cours des dernières années, Ethereum a subi plusieurs mises à niveau de réseau en passant à un réseau sécurisé par ETH lui-même, plutôt que par un minage coûteux en énergie auparavant. Participer au consensus sur Ethereum est maintenant connu sous le nom de « staking », les participants ayant volontairement bloqué l'ETH, le mettant « en jeu » pour pouvoir participer au réseau. Les utilisateurs qui suivent les règles seront récompensés, tandis que les tentatives de triche peuvent être pénalisées. -Depuis le lancement du contrat de dépôt de staking en novembre 2020, certains courageux pionniers d'Ethereum ont volontairement bloqué des fonds pour activer les « validateurs », les comptes qui ont le droit de présenter une attestation officielle et de proposer des blocs, en suivant les règles du réseau. +Depuis le lancement du contrat de dépôt en staking en novembre 2020, certains courageux pionniers d'Ethereum ont volontairement bloqué des fonds pour activer des comptes « validateurs », spéciaux qui ont le droit d'attester formellement et de proposer des blocs, en suivant les règles du réseau. -Avant la mise à jour de Shanghai, vous ne pouviez pas utiliser ou accéder à vos ETH mis en jeu. Mais désormais vous pouvez choisir de recevoir automatiquement vos récompenses dans un compte fourni, et vous pouvez également retirer votre ETH misé quand vous le souhaitez. +Avant la mise à niveau de Shanghai/Capella, vous ne pouviez pas utiliser l'ETH déposé en staking. Mais désormais vous pouvez choisir de recevoir automatiquement vos récompenses dans un compte de votre choix, et vous pouvez également retirer vos ETH mis en jeu quand vous le souhaitez. ### Comment puis-je me préparer ? {#how-do-i-prepare} @@ -42,26 +44,29 @@ Avant la mise à jour de Shanghai, vous ne pouviez pas utiliser ou accéder à v Fournir une adresse de retrait est une étape requise pour tout compte de validateur avant d'être admissible à un retrait d'ETH sur son solde. - Chaque compte de validateur ne peut se voir attribué qu'une seule adresse de retrait. Une fois qu'une adresse est choisie et soumise à la chaîne phare (Beacon Chain), elle ne peut pas être annulée ou modifiée à nouveau. Vérifiez la propriété et l'exactitude de l'adresse fournie avant de la soumettre. + Chaque compte de validateur ne peut se voir attribué qu'une seule adresse de retrait. Une fois qu'une adresse est choisie et soumise à la couche de consensus, elle ne peut pas être annulée ou modifiée à nouveau. Vérifiez la propriété et l'exactitude de l'adresse fournie avant de la soumettre. -Il n'y a aucune menace concernant vos fonds dans l'intervalle pour ne pas fournir celle-ci. Ne pas ajouter d’identifiants de retrait laissera simplement l’ETH verrouillé sur le compte du validateur tel qu'il était jusqu'à jusqu’à ce qu’une adresse de retrait soit fournie. +Le fait de ne pas fournir cette adresse ne pose aucun danger pour vos fonds pendant ce temps, à condition que votre phrase mnémonique/de récupération soit restée en sécurité hors-ligne, et n'ait été compromise d'aucune façon. Ne pas ajouter d’identifiants de retrait laissera simplement l’ETH verrouillé sur le compte du validateur tel qu'il était jusqu'à jusqu’à ce qu’une adresse de retrait soit fournie. ## Quitter entièrement le staking {#exiting-staking-entirely} Fournir une adresse de retrait est nécessaire pour que _les fonds_ puissent être transférés sur un solde de compte de validateur. -Les utilisateurs qui cherchent à quitter entièrement le staking et à retirer leur solde complet doivent également signer et diffuser un message de « sortie volontaire » avec des clés de validateur qui lanceront le processus de sortie de la mise en jeu. Ceci est exécuté avec votre client de validateur et soumis à votre nœud de balise, et ne nécessite pas de gaz. +Les utilisateurs qui cherchent à quitter entièrement le staking et à retirer leur solde complet doivent également signer et diffuser un message de « sortie volontaire » avec des clés de validateur qui lanceront le processus de sortie de la mise en jeu. Ceci est exécuté avec votre client de validateur et soumis à votre nœud de consensus, et ne nécessite pas de gaz. -Le processus d'un validateur sortant du staking prend un temps variable, en fonction du nombre d'autres individus sortant en même temps. Une fois terminé, ce compte ne sera plus responsable de l'exécution des tâches du réseau de validateur, ne sera plus admissible aux récompenses, et n'aura plus d'ETH « en jeu ». À ce moment, le compte doit être marqué comme entièrement « retirable ». +Le processus d'un validateur sortant du staking prend un temps variable, en fonction du nombre d'autres individus sortant en même temps. Une fois terminé, ce compte ne sera plus responsable de l'exécution des tâches du réseau de validateur, ne sera plus admissible aux récompenses, et n'aura plus d'ETH « en jeu ». À ce moment, le compte sera marqué comme entièrement « retirable ». Une fois qu'un compte est marqué comme « retirable » et que les identifiants de retrait ont été fournis, un utilisateur n'a plus rien à faire d'autre qu'attendre. Les comptes sont automatiquement et continuellement balayés par les proposeurs de blocs pour les fonds sortis qui sont admissibles, et le solde de votre compte sera transféré en entier (également connu sous le nom de « retrait complet ») au cours du prochain balayage. ## Quand les retraits de staking sont-ils activés ? {#when} -Les fonctionnalités de retrait seront activées grâce à une mise à niveau simultanée du réseau en deux parties, **Shanghai + Capella**. +Les retraits de staking sont disponibles ! La fonction de retrait a été activée dans le cadre de la mise à niveau Shanghai/Capella qui a eu lieu le 12 avril 2023. + +La mise à niveau Shanghai/Capella a permis de récupérer de l'Ether précédemment mis en jeu vers un compte Ethereum standard. Cela a fermé la boucle de la liquidité mise en jeu, et a fait avancer Ethereum sur son chemin de construction d'un écosystème durable, évolutif, sûr et décentralisé. - +- [En savoir plus sur l'histoire d'Ethereum](/history/) +- [En savoir plus sur la feuille de route d'Ethereum](/roadmap/) ## Comment fonctionnent les paiements de retraits ? {#how-do-withdrawals-work} @@ -78,9 +83,9 @@ Consultez cette explication de Finematics sur les retraits de staking d'Ethereum Lorsqu'un validateur doit proposer le bloc suivant, il est tenu de constituer une file d'attente de retraits, pouvant aller jusqu'à 16 retraits éligibles. Pour ce faire, on commence par l'index 0 du validateur, on détermine s'il existe un retrait éligible pour ce compte selon les règles du protocole et on l'ajoute à la file d'attente si tel est le cas. Le validateur configuré pour proposer le bloc suivant reprendra là où le précédent s'est arrêté, progressant dans l'ordre indéfiniment. -Pensez à une horloge analogique. L'aiguille sur l’horloge pointe vers l’heure, progresse dans une direction, ne saute pas d’heures, et finit par se déplacer vers le début à nouveau après que le dernier nombre est atteint.

    -Maintenant au lieu de 1 à 12, imaginez que l'horloge a 0 à N (le nombre total de comptes de validateur qui ont déjà été enregistrés sur la chaîne phare, plus de 500 000 ans à compter de janvier 2023).

    -L'aiguille sur l’horlog pointe vers le validateur suivant qui doit être vérifié pour les retraits éligibles. Il commence à 0 et progresse tout autour sans sauter de compte. Lorsque le dernier validateur est atteint, le cycle reprend au début. +Pensez à une horloge analogique. L'aiguille de l’horloge pointe vers l’heure, progresse dans une direction, ne saute pas d’heures, et finit par revenir au début après que le dernier nombre est atteint.

    +Maintenant au lieu de 1 à 12, imaginez que l'horloge a 0 à N (le nombre total de comptes de validateur qui ont déjà été enregistrés sur la couche de consensus, plus de 500 000 en janvier 2023).

    +L'aiguille de l’horloge pointe vers le prochain validateur qui doit être vérifié pour les retraits éligibles. Il commence à 0 et progresse tout autour sans sauter de compte. Lorsque le dernier validateur est atteint, le cycle reprend au début.
    #### Vérification des retraits sur un compte {#checking-an-account-for-withdrawals} @@ -98,7 +103,7 @@ Seules deux actions entreprises par les opérateurs de validateurs au cours du c ### Sans gaz {#gas-free} -Cette approche des retraits de staking évite d'obliger les stakers à soumettre manuellement une transaction demandant le retrait d'une quantité particulière d'ETH. Cela signifie également qu'il n'y a **pas de gaz (frais de transaction) requis**, et que les retraits ne sont pas en concurrence avec l'espace de bloc de la couche d'exécution existante. +Cette approche des retraits de staking évite d'obliger les stakers à soumettre manuellement une transaction demandant le retrait d'une quantité particulière d'ETH. Cela signifie qu'aucun **gaz (frais de transaction)** n'est requis, et les retraits ne concurrencent pas non plus l'espace de bloc existant de la couche d'exécution. ### À quelle fréquence recevrai-je mes récompenses de mise en jeu ? {#how-soon} @@ -118,7 +123,7 @@ En élargissant ce calcul, nous pouvons estimer le temps nécessaire pour traite -Comme vous pouvez le constater, ce processus ralentit au fur et à mesure que le nombre de validateurs augmente sur le réseau. Une augmentation des blocs manqués pourrait ralentir proportionnellement ce phénomène, mais cela représente généralement le côté le plus lent des résultats possibles. +Comme vous pouvez le constater, ce processus ralentit au fur et à mesure que le nombre de validateurs augmente sur le réseau. Une augmentation des crénaux manqués pourrait ralentir proportionnellement ce phénomène, mais cela représente généralement le côté le plus lent des résultats possibles. ## Questions fréquemment posées {#faq} @@ -143,14 +148,15 @@ En guise d'alternative au changement d'adresse de retrait pour un validateur par
    -

    Si vous faites partie d'un groupe d'enjeux ou si vous détenez des produits dérivés de staking liquides, vous devez vous renseigner auprès de votre fournisseur pour savoir comment les retraits de staking affecteront votre contrat, car chaque service fonctionne différemment.

    -

    En général, les utilisateurs n'auront probablement rien à faire, et ces services ne seront plus limités par l'impossibilité de retirer des récompenses ou de sortir des fonds du validateur après cette mise à niveau.

    -

    Cela signifie que les utilisateurs peuvent désormais décider de racheter leurs ETH sous-jacents mis en jeu, ou de changer le fournisseur de mise en jeu qu'ils utilisent. Si un groupe particulier devient trop important, les fonds peuvent être retirés et rachetés, et remisés auprès d'un fournisseur plus petit. Ou, si vous avez accumulé suffisamment d'ETH, vous pouvez mise depuis chez vous.

    +Si vous faites partie d'un groupe d'enjeux ou si vous détenez des jetons de mise en jeu, vous devez vous renseigner auprès de votre fournisseur pour savoir comment les retraits de mise en jeu sont gérés, car chaque service fonctionne différemment. + +En général, les utilisateurs sont censés être libres de récupérer leur ETH sous-jacent mis en jeu, ou de changer le fournisseur de mise en jeu qu'ils utilisent. Si un groupe particulier devient trop important, les fonds peuvent être retirés, rachetés, et remisés auprès d'un fournisseur plus petit. Ou, si vous avez accumulé suffisamment d'ETH, vous pouvez miser depuis chez vous. +
    - -

    Oui, à condition que votre validateur ait fourni une adresse de retrait. Il doit être fourni une fois pour permettre tout retrait, puis les paiements de récompenses seront automatiquement déclenchés tous les deux ou trois jours avec chaque balayage de validateur.

    +Oui, à condition que votre validateur ait fourni une adresse de retrait. Elle doit être fournie une fois pour permettre tout retrait initialement, puis les paiements de récompenses seront automatiquement déclenchés tous les deux ou trois jours avec chaque balayage des validateurs.
    -

    Non, si votre validateur est toujours actif sur le réseau, un retrait total ne se fera pas automatiquement. Pour cela, il faut déclencher manuellement une sortie volontaire.

    -

    Une fois qu'un validateur a terminé le processus de sortie, et en supposant que le compte possède des identifiants de retrait, le solde restant sera alors retiré lors du prochain balayage du validateur.

    +Non, si votre validateur est toujours actif sur le réseau, un retrait total ne se fera pas automatiquement. Pour cela, il faut déclencher manuellement une sortie volontaire. + +Une fois qu'un validateur a terminé le processus de sortie, et en supposant que le compte possède des identifiants de retrait, le solde restant sera alors retiré lors du prochain balayage du validateur. +
    +Les retraits sont conçus pour être effectués automatiquement, en transférant tous les ETH qui ne contribuent pas activement à la mise. Cela comprend le solde complet pour les comptes qui ont terminé de processus de sortie. -

    Les retraits sont conçus pour être effectués automatiquement, en transférant tous les ETH qui ne contribuent pas activement à la mise. Il s'agit notamment des soldes complets des comptes

    -

    Il n'est pas possible de demander manuellement le retrait de quantités spécifiques d'ETH.

    +Il n'est pas possible de demander manuellement le retrait de quantités spécifiques d'ETH.
    -

    Il est recommandé aux opérateurs de validateurs de consulter la page Staking Launchpad Withdrawals où vous trouverez plus de détails sur la façon de se préparer, le calendrier des événements, et davantage d'informations sur le fonctionnement des retraits.

    +Il est recommandé aux opérateurs de validateurs de consulter la page Retraits de la mise en jeu où vous trouverez plus de détails sur la façon de préparer votre validateur aux retraits. préparés, le déroulé des événements, et plus de détails sur comment les retraits fonctionnent. + +Pour commencer en testant votre configuration sur un réseau de test, visitez la Platforme de lancement pour la mise en jeu sur le réseau de test Goerli. +
    - -

    Non. Une fois qu'un validateur est sorti et que son solde total a été retiré, tous les fonds supplémentaires déposés sur ce validateur seront automatiquement transférés à l'adresse de retrait lors du prochain balayage du validateur. Pour remettre en jeu l'ETH, un nouveau validateur doit être activé.

    +Non. Une fois qu'un validateur est sorti et que son solde total a été retiré, tous les fonds supplémentaires déposés sur ce validateur seront automatiquement transférés à l'adresse de retrait lors du prochain balayage du validateur. Pour remettre en jeu l'ETH, un nouveau validateur doit être activé.
    ## Complément d'information {#further-reading} @@ -206,4 +215,4 @@ eventName="read more"> - [Ethereum Cat Herders - Shanghai](https://www.ethereumcatherders.com/shanghai_upgrade/index.html) - [PEEPanEIP #94 : Retrait de l'ETH misé (Testing) avec Potuz & Hsiao-Wei Wang](https://www.youtube.com/watch?v=G8UstwmGtyE) - [PEEPanEIP#68 : EIP-4895 : Retraits de la chaîne de balises en tant qu'opérations avec des prises Alex](https://www.youtube.com/watch?v=CcL9RJBljUs) -- [Comprendre le solde effectif du validateur](https://www.attestant.io/posts/understanding-validator-effective-balance/) +- [Comprendre le Solde Effectif du Validateur](https://www.attestant.io/posts/understanding-validator-effective-balance/) diff --git a/src/content/translations/fr/zero-knowledge-proofs/index.md b/src/content/translations/fr/zero-knowledge-proofs/index.md index 2b20c38df27..8977565ea62 100644 --- a/src/content/translations/fr/zero-knowledge-proofs/index.md +++ b/src/content/translations/fr/zero-knowledge-proofs/index.md @@ -110,7 +110,7 @@ Les preuves à divulgation nulle de connaissance sont également utilisées pour Les systèmes actuels de gestion de l'identité mettent en péril les renseignements personnels. Les preuves à divulgation nulle peuvent aider les individus à valider leur identité tout en protégeant leurs données personnelles. -Les preuves à divulgation nulle sont particulièrement utiles dans un contexte de [décentralisation de l'identité](/decentralized-identity/). La décentralisation de l'identité (également appelée "'identité auto-souveraine") donne à l'individu la possibilité de contrôler l'accès à ses données personnelles. Prouver votre citoyenneté sans révéler les détails de vos documents d'identité est un bon exemple de la manière dont la technologie de la preuve à divulgation nulle de connaissance permet une décentralisation de l'identité. +Les preuves à divulgation nulle sont particulièrement utiles dans un contexte de [décentralisation de l'identité](/decentralized-identity). La décentralisation de l'identité (également appelée "'identité auto-souveraine") donne à l'individu la possibilité de contrôler l'accès à ses données personnelles. Prouver votre citoyenneté sans révéler les détails de vos documents d'identité est un bon exemple de la manière dont la technologie de la preuve à divulgation nulle de connaissance permet une décentralisation de l'identité. ### Authentification {#authentication} @@ -146,7 +146,7 @@ C'est ici que le calcul vérifiable entre en jeu. En effet, lorsqu'un nœud exé Les systèmes de vote de la blockchain ont de nombreuses caractéristiques favorables : ils sont entièrement auditables, blindés contre les attaques, résistants à la censure et exempts de contraintes géographiques. Mais même les systèmes de vote en chaîne ne sont pas immunisés contre le problème de la **collusion**. -Défini comme "entente visant à limiter la libre concurrence par le trucage, la fraude, et en trompant les autres", la collusion peut prendre la forme d'un individu malveillant influant sur le vote d'autrui en lui offrant des pots-de-vin. Par exemple Alice pourrait recevoir un pot-de-vin de Bob pour voter pour `l'option B` sur un bulletin même si elle préfère `l'option A`. +Défini comme "entente visant à limiter la libre concurrence par le trucage, la fraude, et en trompant les autres", la collusion peut prendre la forme d'un individu malveillant influant sur le vote d'autrui en lui offrant des pots-de-vin. Par exemple Alice pourrait recevoir un pot-de-vin de Bob pour voter pour l'`option B` sur un bulletin même si elle préfère l'`option A`. La corruption et la collusion limitent l'efficacité de tout processus utilisant le système de vote comme mécanisme de positionnement (en particulier lorsque les usagers peuvent révéler comment ils ont voté). Cela peut avoir des conséquences significatives, en particulier lorsque les votes déterminent l'affectation de ressources limitées. @@ -165,12 +165,12 @@ Dans MACI, des preuves à divulgation nulle sont utilisées pour assurer l'exact Ainsi, même sans partager une répartition des votes par utilisateur (comme c'est généralement le cas), MACI garantit l'intégrité des résultats calculés au cours du processus de décompte. Cette caractéristique permet de réduire l'efficacité des programmes de collusion de base. Nous pouvons étudier cette possibilité en utilisant l'exemple précédent de Bob soudoyant Alice pour voter pour une option: - Alice enregistre son vote en envoyant sa clé publique à un contrat intelligent. -- Alice accepte de voter pour l'option `B` en échange d'un pot-de-vin de Bob. -- Alice vote pour l'option `B`. +- Alice accepte de voter pour l'`option B` en échange d'un pot-de-vin de Bob. +- Alice vote pour l'`option B`. - Alice envoie secrètement une transaction chiffrée pour changer la clé publique associée à son identité. -- Alice envoie un autre message (chiffré) au contrat intelligent afin de voter pour l'option `A` en utilisant la nouvelle clé publique. -- Alice montre à Bob une transaction indiquant qu'elle a voté pour l'option `B` (qui est invalide car la clé publique n'est plus associée à l'identité d'Alice dans le système) -- Lors du traitement des messages, le coordinateur ignore le vote d'Alice pour l'option `B` et ne compte que le vote pour l'option `A`. Ainsi, la tentative de Bob de se joindre à Alice et de manipuler le vote sur la chaîne échoue. +- Alice envoie un autre message (chiffré) au contrat intelligent afin de voter pour l'`option A` en utilisant la nouvelle clé publique. +- Alice montre à Bob une transaction indiquant qu'elle a voté pour l'`option B` (qui est invalide car la clé publique n'est plus associée à l'identité d'Alice dans le système) +- Lors du traitement des messages, le coordinateur ignore le vote d'Alice pour l'`option B` et ne compte que le vote pour l'`option A`. Ainsi, la tentative de Bob de se joindre à Alice et de manipuler le vote sur la chaîne échoue. L'utilisation de MACI _nécessite_ de faire confiance au coordinateur pour ne pas collaborer avec des corrupteurs ou tenter de soudoyer les électeurs eux-mêmes. Le coordinateur peut déchiffrer les messages des utilisateurs (nécessaires à la création de la preuve), afin qu'ils puissent vérifier avec précision comment chaque personne a voté. diff --git a/src/content/translations/hi/bridges/index.md b/src/content/translations/hi/bridges/index.md new file mode 100644 index 00000000000..c868e76c37c --- /dev/null +++ b/src/content/translations/hi/bridges/index.md @@ -0,0 +1,134 @@ +--- +title: ब्लॉकचेन ब्रिज का परिचय +description: ब्रिज उपयोगकर्ताओं को अपने फंड को विभिन्न ब्लॉकचेन में स्थानांतरित करने की अनुमति देते हैं +lang: hi +--- + +# ब्लॉकचेन ब्रिज {#prerequisites} + +_Web3 L1 ब्लॉकचेन और L2 स्केलिंग समाधानों के एक पारिस्थितिकी तंत्र में विकसित हुआ है, जिसमे दोनों अपनी अपनी अनोखी काबिलियत और तालमेल से बने हैं। जैसे-जैसे ब्लॉकचेन प्रोटोकॉल की संख्या बढ़ती है, वैसे-वैसे [संपत्ति को चेन में स्थानांतरित करने की मांग]() होती है। इस मांग को पूरा करने के लिए हमें ब्रिज की जरूरत पड़ती है।_ + + + +## ब्रिज क्या है? {#what-are-bridges} + +ब्लॉकचेन ब्रिज असली दुनिया के ब्रिज की तरह काम करता है। जिस प्रकार एक ब्रिज दो भौतिक स्थानों को जोड़ता है, उसी प्रकार एक ब्लॉकचेन ब्रिज दो ब्लॉकचेन पारिस्थितिकी तंत्र को जोड़ता है। ब्रिज सूचना और परिसंपत्तियों के हस्तांतरण के माध्यम से ब्लॉकचेन के बीच संचार की सुविधा प्रदान करते हैं। + +आइए एक उदाहरण पर विचार करें: + +आप संयुक्त राज्य अमेरिका से हैं और यूरोप की यात्रा की योजना बना रहे हैं। आपके पास USD है, लेकिन खर्च करने के लिए आपको EUR की आवश्यकता है। अपने USD को EUR से बदलने के लिए आप एक छोटे से शुल्क पर मुद्रा एक्सचेंज का उपयोग कर सकते हैं। + +लेकिन, यदि आप किसी भिन्न ब्लॉकचेन का उपयोग करने के लिए समान एक्सचेंज करना चाहते हैं तो आप क्या करेंगे? मान लीजिए कि आप इथेरियम मेननेट पर ETH को [Arbitrum](https://arbitrum.io/) पर ETH से एक्सचेंज करना चाहते हैं। EUR के लिए हमारे द्वारा किए गए मुद्रा एक्सचेंज की तरह, हमें अपने ETH को इथेरियम से Arbitrum में स्थानांतरित करने के लिए एक तंत्र की आवश्यकता है। ब्रिज ऐसे लेन-देन को संभव बनाते हैं। इस मामले में, [Arbitrum के पास स्वयं का एक ब्रिज](https://bridge.arbitrum.io/) है जो की ETH को मेननेट से Arbitrum पर स्थानांतरित करता है। + +## हमें ब्रिज की आवश्यकता क्यों है? {#why-do-we-need-bridges} + +सभी ब्लॉकचेन की अपनी सीमाएँ हैं। इथेरियम के स्केल को बढ़ाने और मांग को पूरा करने के लिए, इसे रोलअप की आवश्यकता है। वैकल्पिक रूप से, Solana और Avalanche जैसे L1s को उच्च थ्रूपुट सक्षम करने के लिए अलग तरह से डिज़ाइन किया गया है लेकिन विकेंद्रीकरण की कीमत पर। + +हालाँकि, सभी ब्लॉकचेन अलग-अलग वातावरण में विकसित होते हैं और उनके अलग-अलग नियम और आम सहमति तंत्र होते हैं। इसका मतलब है कि वे मूल रूप से संचार नहीं कर सकते हैं, और टोकन ब्लॉकचेन के बीच स्वतंत्र रूप से नहीं घूम सकते हैं। + +ब्लॉकचेन को जोड़ने के लिए ब्रिज मौजूद हैं, जिससे उनके बीच सूचना और टोकन के हस्तांतरण की अनुमति मिलती है। + +ब्रिज सक्षम करते हैं: + +- परिसंपत्तियों और सूचनाओं का क्रॉस-चेन स्थानांतरण +- विभिन्न ब्लॉकचेन की ताकत तक पहुंचने के लिए dapps – इस प्रकार उनकी क्षमताओं को बढ़ाते हैं (क्योंकि प्रोटोकॉल में अब नवाचार के लिए अधिक डिज़ाइन स्थान है)। +- उपयोगकर्ता नए प्लेटफ़ॉर्म तक पहुंच सकते हैं और विभिन्न श्रृंखलाओं का लाभ उठा सकते हैं। +- उपयोगकर्ता के लिए सहयोग करने और नए प्लेटफ़ॉर्म बनाने के लिए विभिन्न ब्लॉकचेन पारिस्थितिकी तंत्र के डेवलपर्स। + +[टोकन को दूसरी परत से कैसे जोड़े](/guides/how-to-use-a-bridge/) + + + +## ब्रिज उपयोग के मामले {#bridge-use-cases} + +निम्नलिखित कुछ परिदृश्य हैं जहां आप ब्रिज का उपयोग कर सकते हैं: + +### कम लेनदेन शुल्क {#transaction-fees} + +मान लीजिए कि आपके पास इथेरियम मेननेट पर ETH है लेकिन आप विभिन्न dapps का पता लगाने के लिए सस्ता लेनदेन शुल्क चाहते हैं। अपने ETH को मेननेट से इथेरियम L2 रोलअप में जोड़कर, आप कम लेनदेन शुल्क का आनंद ले सकते हैं। + +### अन्य ब्लॉकचेन पर Dapps {#dapps-other-chains} + +यदि आप USDT को उधार देने के लिए इथेरियम मेननेट पर Aave का उपयोग कर रहे हैं, लेकिन Polygon पर Aave का उपयोग करके USDT को उधार देने की ब्याज दर अधिक है। + +### ब्लॉकचेन पारिस्थितिकी तंत्र का अन्वेषण करें {#explore-ecosystems} + +यदि आपके पास इथेरियम मेननेट पर ETH है और आप किसी अन्य L1 के मूल dapps को आज़माना चाहते हैं। आप ब्रिज की मदद से अपने इथेरियम मेननेट के ETH को अन्य L1 में स्थानांतरित कर सकते हैं। + +### स्वयं की मूल क्रिप्टो संपत्तियां {#own-native} + +मान लीजिए कि आप मूल Bitcoin (BTC) के मालिक बनना चाहते हैं, लेकिन आपके पास केवल इथेरियम मेननेट पर फंड हैं। इथेरियम पर BTC का एक्सपोज़र हासिल करने के लिए, आप रैप्ड Bitcoin (WBTC) खरीद सकते हैं। हालाँकि, WBTC इथेरियम नेटवर्क का मूल ERC-20 टोकन है, जिसका अर्थ है कि यह Bitcoin का इथेरियम संस्करण है और Bitcoin ब्लॉकचेन पर मूल संपत्ति नहीं है। मूल BTC के मालिक बनने के लिए, आपको एक ब्रिज के उपयोग से अपनी संपत्ति को इथेरियम से Bitcoin पर जोड़ना होगा। यह आपके WBTC को ब्रिज करके मूल BTC में परिवर्तित कर देगा। वैकल्पिक रूप से, हो सकता है कि आपके पास BTC हो और आप इसे इथेरियम DeFi प्रोटोकॉल में उपयोग करना चाहें। इसके लिए BTC को WBTC पर ब्रिज करना होगा, जिसके बाद इसे इथेरियम पर एक संपत्ति के रूप में इस्तेमाल किया जा सकता है। + + + आप एक केंद्रीकृत एक्सचेंज का उपयोग करके भी उपरोक्त सभी कार्य कर सकते हैं। हालाँकि, जब तक कि आपका फंड पहले से ही एक्सचेंज पर न हो, इसमें कई चरण शामिल होंगे, और आपके लिए ब्रिज का उपयोग करना बेहतर होगा। + + + + +## ब्रिज के प्रकार {#types-of-bridge} + +ब्रिजों की कई तरह की बनावट और जटिलताएं होती हैं। आम तौर पर, ब्रिज दो श्रेणियों में आते हैं: विश्वसनीय और विश्वासहीन ब्रिज। + +| विश्वसनीय ब्रिज | विश्वासहीन ब्रिज | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | +| विश्वसनीय ब्रिज अपने संचालन के लिए एक केंद्रीय इकाई या व्यवस्था पर निर्भर होते हैं। | विश्वासहीन ब्रिज स्मार्ट अनुबंध और एल्गोरिथम का उपयोग करके संचालित होते हैं। | +| धन की रखवाली और ब्रिज की सुरक्षा के संबंध में उनकी धारणाएँ भरोसेमंद हैं। उपयोगकर्ता अधिकतर ब्रिज प्रचालक की प्रतिष्ठा पर भरोसा करते हैं। | वे विश्वासहीन हैं, यानी, ब्रिज की सुरक्षा अंतर्निहित ब्लॉकचेन के समान ही है। | +| उपयोगकर्ता को अपनी क्रिप्टो संपत्तियों पर नियंत्रण छोड़ना होगा। | स्मार्ट अनुबंध के माध्यम से, विश्वासहीन ब्रिज यूज़र्स को अपने कोष पर नियंत्रण बनाए रखने में सक्षम बनाते हैं। | + +संक्षेप में, हम कह सकते हैं कि विश्वसनीय ब्रिज में विश्वास की धारणाएँ होती हैं, जबकि विश्वासहीन ब्रिज में विश्वास की धारणाएँ नहीं होती और वह अंतर्निहित डोमेन से परे नई विश्वास धारणाएँ नहीं बनाते। यह शब्द कुछ इस प्रकार वर्णित किये जा सकते हैं: + +- **विश्वसनीय**: अंतर्निहित डोमेन के समतुल्य सुरक्षा होना। जैसा कि [अर्जुन भुपतानी ने इस लेख](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) में बताया है। +- **विश्वास की धारणाएँ:** सिस्टम में बाहरी सत्यापनकर्ताओं को जोड़कर अंतर्निहित डोमेन की सुरक्षा से दूर जाना, इस प्रकार इसे क्रिप्टो-आर्थिक रूप से कम सुरक्षित बनाता है। + +दोनों दृष्टिकोणों के बीच मुख्य अंतरों की बेहतर समझ विकसित करने के लिए, आइए एक उदाहरण लें: + +कल्पना कीजिए कि आप हवाई अड्डे की सुरक्षा चौकी पर हैं। वहां दो प्रकार के चेकपॉइंट होते हैं: + +1. मैनुअल चेकपॉइंट — अधिकारियों द्वारा संचालित होते हैं जो बोर्डिंग पास सौंपने से पहले आपके टिकट और पहचान के सभी विवरणों की मैन्युअल रूप से जांच करते हैं। +2. सेल्फ चेक-इन — मशीन द्वारा संचालित जहां आप अपनी उड़ान का विवरण डालते हैं और सब कुछ ठीक होने पर बोर्डिंग पास प्राप्त करते हैं। + +मैनुअल चेकपॉइंट एक विश्वसनीय मॉडल के समान हैं क्योंकि यह अपने संचालन के लिए तीसरे पक्ष, यानी अधिकारियों पर निर्भर करता है। एक यूज़र के रूप में, आप सही निर्णय लेने और अपनी निजी जानकारी का सही से उपयोग करने के लिए अधिकारियों पर भरोसा करते हैं। + +सेल्फ चेक-इन एक भरोसेमंद मॉडल के समान है क्योंकि यह ऑपरेटर की भूमिका को हटा देता है और अपने संचालन के लिए प्रौद्योगिकी का उपयोग करता है। उपयोगकर्ता हमेशा अपने डेटा पर नियंत्रण रखते हैं और उन्हें अपनी निजी जानकारी के लिए किसी तीसरे पक्ष पर भरोसा नहीं करना पड़ता। + +कई ब्रिजिंग समाधान विश्वासहीनता की अलग-अलग परिमाण के साथ इन दो चरम सीमाओं के बीच का मॉडल अपनाते हैं। + + + +## ब्रिज के उपयोग के जोखिम {#bridge-risk} + +ब्रिज विकास के प्रारंभिक चरण में हैं। ऐसा लगता है कि सर्वोत्तम ब्रिज डिज़ाइन की खोज अभी तक नहीं हुई है। किसी भी प्रकार के ब्रिज से संपर्क करने में जोखिम होता है: + +- **स्मार्ट अनुबंध का जोखिम —** कोड में बग होने का जोखिम जिससे यूज़र के सारे धन की हानि हो सकती है +- **तकनीकी जोखिम —** सॉफ़्टवेयर विफलता, खराब कोड, मानवीय त्रुटि, स्पैम और दुर्भावनापूर्ण हमले संभवतः यूज़र संचालन को बाधित कर सकते हैं + +इसके अलावा, क्यूँकि विश्वसनीय ब्रिज विश्वास संबंधी धारणाएँ जोड़ते हैं, उनमें अतिरिक्त जोखिम भी होते हैं जैसे: + +- **सेंसरशिप का जोखिम —** ब्रिज ऑपरेटर यूज़र्स को ब्रिज का उपयोग करके अपनी संपत्ति स्थानांतरित करने से रोक सकते हैं +- **हिरासत में लेने का जोखिम—** ब्रिज संचालक यूज़र्स के धन को चुरा भी सकते हैं + +यूज़र का धन जोखिम में है अगर: + +- स्मार्ट अनुबंध में कोई बग हो +- यूज़र से कोई त्रुटि हो जाए +- मुख्य ब्लॉकचेन ही हैक हो जाए +- ब्रिज संचालकों का एक विश्वसनीय ब्रिज में दुर्भावनापूर्ण इरादा है +- ब्रिज ही हैक हो जाती है + +हाल ही में Solana का एक वर्महोल ब्रिज हैक हुआ था, [जिसमे 120 हज़ार wETH ($325 मिलियन USD) चोरी हो गए थे](https://rekt.news/wormhole-rekt/)। यह [ब्लॉकचेन ब्रिज के कुछ सबसे बड़े हैक्स](https://rekt.news/leaderboard/) में से एक था। + +ब्रिज यूज़र को इथेरियम L2s पर शामिल करने के लिए महत्वपूर्ण हैं, और यहां तक कि उन उपयोगकर्ताओं के लिए भी जो विभिन्न पारिस्थितिकी तंत्र का पता लगाना चाहते हैं। हालाँकि, ब्रिज के साथ बातचीत में शामिल जोखिमों को देखते हुए, उपयोगकर्ताओं को ब्रिज द्वारा किए जा रहे ट्रेड-बंद को समझना चाहिए। ये [क्रॉस-चेन सुरक्षा](https://blog.debridge.finance/10-strategies-for-cross-chain-security-8ed5f5879946) के लिए कुछ रणनीतियाँ हैं। + + + +## अग्रिम पठन {#further-reading} + +- [EIP-5164: क्रॉस-चेन निष्पादन](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658) _जून 18, 2022 - ब्रेंडन एस्सेलस्टाइन_ +- [L2 ब्रिज रिस्क फ्रेमवर्क](https://gov.l2beat.com/t/l2bridge-risk-framework/31) _जुलाई 5, 2022 - बरटेक कीपूसजेवस्की_ +- ["भविष्य मल्टी-चेन क्यों होगा, लेकिन यह क्रॉस-चेन नहीं होगा।"](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) _जनवरी 8, 2022 - विटालिक ब्यूटेरिन_ +- [ब्लॉकचेन ब्रिज क्या हैं और हम उन्हें कैसे वर्गीकृत कर सकते हैं?](https://blog.li.finance/what-are-blockchain-bridges-and-how-can-we-classify-them-560dc6ec05fa) _फरवरी 18, 2021 - अर्जुन चंद_ +- [क्रॉस-चेन ब्रिज क्या हैं?](https://www.alchemy.com/overviews/cross-chain-bridges) _मई 10, 2022 - Alchemy_ +- [ब्लॉकचेन ब्रिज: क्रिप्टोनेटवर्क्स के नेटवर्क का निर्माण](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) _सितम्बर 8, 2021 - दमित्रिय बैरेंज़ों_ +- [क्रिप्टो-स्पेस में ब्रिज](https://medium.com/chainsafe-systems/bridges-in-crypto-space-12e158f5fd1e) _अगस्त 23, 2021 - बेन आदर ह्यमन_ +- [इंटरऑपरेबिलिटी ट्राइलेम्मा](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) _अक्टूबर 1, 2021 - अर्जुन भुपतानी_ +- [ब्रिज को सुरक्षित करें: क्रॉस-चेन संचार सही ढंग से](https://medium.com/dragonfly-research/secure-the-bridge-cross-chain-communication-done-right-part-i-993f76ffed5d) _अगस्त 23, 2021 - सेलिया वैन_ diff --git a/src/content/translations/hi/energy-consumption/index.md b/src/content/translations/hi/energy-consumption/index.md new file mode 100644 index 00000000000..edbc8f4bb4b --- /dev/null +++ b/src/content/translations/hi/energy-consumption/index.md @@ -0,0 +1,80 @@ +--- +title: इथेरियम ऊर्जा खपत +description: इथेरियम की ऊर्जा खपत को समझने के लिए आवश्यक बुनियादी जानकारी को समझे। +lang: hi +--- + +# इथेरियम का ऊर्जा व्यय {#proof-of-stake-energy} + +इथेरियम एक ग्रीन ब्लॉकचेन है। इथेरियम का [प्रूफ-ऑफ-स्टेक](/developers/docs/consensus-mechanisms/pos) आम सहमति तंत्र, [नेटवर्क को सुरक्षित करने के लिए ऊर्जा](/developers/docs/consensus-mechanisms/pow) के बजाय ETH का उपयोग करता है। इथेरियम की ऊर्जा खपत पूरे वैश्विक नेटवर्क पर लगभग [~0.0026 TWh/yr](https://carbon-ratings.com/eth-report-2022) है। + +इथेरियम के लिए ऊर्जा खपत का अनुमान [CCRI (क्रिप्टो कार्बन रेटिंग इंस्टीट्यूट)](https://carbon-ratings.com) अध्ययन से आता है। उन्होंने इथेरियम नेटवर्क की बिजली की खपत और कार्बन फ़ुटप्रिंट के निचले स्तर के अनुमान तैयार किए है ([रिपोर्ट देखें](https://carbon-ratings.com/eth-report-2022))। उन्होंने विभिन्न हार्डवेयर और क्लाइंट सॉफ़्टवेयर कॉन्फ़िगरेशन के साथ विभिन्न नोड्स की बिजली खपत को मापा। नेटवर्क की वार्षिक बिजली खपत के लिए अनुमानित **2,601 MWh** (0.0026 TWh) क्षेत्रीय-विशिष्ट कार्बन तीव्रता कारकों को लागू करने वाले **870 टन CO2e** के वार्षिक कार्बन उत्सर्जन से मेल खाती है। यह मान बदलता है क्योंकि नोड्स नेटवर्क में प्रवेश करते हैं और छोड़ते हैं - आप [कैम्ब्रिज ब्लॉकचेन नेटवर्क सस्टेनेबिलिटी इंडेक्स](https://ccaf.io/cbnsi/ethereum) द्वारा रोलिंग 7-दिवसीय औसत अनुमान का उपयोग करके ट्रैक रख सकते हैं (ध्यान दें कि वे अपने अनुमानों के लिए थोड़ा अलग विधि का उपयोग करते हैं - विवरण उनकी साइट पर उपलब्ध हैं)। + +इथेरियम की ऊर्जा खपत को प्रासंगिक बनाने के लिए, हम कुछ अन्य उद्योगों के वार्षिक अनुमानों की तुलना कर सकते हैं। इससे हमें यह बेहतर ढंग से समझने में मदद मिलती है कि इथेरियम का अनुमान अधिक है या कम। + + + +उपरोक्त चार्ट कई अन्य उद्योगों की तुलना में इथेरियम के लिए TWh/yr में अनुमानित वार्षिक ऊर्जा खपत को प्रदर्शित करता है। प्रदान किए गए अनुमान सार्वजनिक रूप से उपलब्ध जानकारी से प्राप्त किए गए हैं, जिन्हें मई 2023 में एक्सेस किया गया था, नीचे दी गई तालिका में उपलब्ध स्रोतों के लिंक के साथ: + +| | वार्षिक ऊर्जा खपत (TWh) | PoS इथेरियम से तुलना | स्रोत | +| :------------------------------- | :---------------------: | :------------------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| वैश्विक डेटा केंद्र | 200 | 77,000x | [स्रोत](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) | +| गोल्ड माईनिंग | 131 | 50,000x | [स्रोत](https://ccaf.io/cbnsi/cbeci/comparisons) | +| Bitcoin | 131 | 50,000x | [स्रोत](https://ccaf.io/cbnsi/cbeci/comparisons) | +| PoW इथेरियम | 78 | 30,000x | [स्रोत](https://digiconomist.net/ethereum-energy-consumption) | +| Youtube (केवल प्रत्यक्ष) | 12 | 4600x | [स्रोत](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf) | +| संयुक्त राज्य अमेरिका में गेमिंग | 34 | 13,000x | [स्रोत](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) | +| Netflix | 0.451 | 173x | [स्रोत](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) | +| PayPal | 0.26 | 100x | [स्रोत](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261) | +| AirBnB | 0.02 | 8x | [स्रोत]() | +| PoS इथेरियम | 0.0026 | 1x | [स्रोत](https://carbon-ratings.com/eth-report-2022) | + +ऊर्जा खपत के लिए सटीक अनुमान प्राप्त करना जटिल है, खासकर जब जो मापा जा रहा है उसमें एक जटिल आपूर्ति श्रृंखला या डिप्लॉयमेंट विवरण है जो इसकी दक्षता को प्रभावित करता है। उदाहरण के तौर पर Netflix या Youtube पर विचार करें। उनकी ऊर्जा खपत का अनुमान इस बात पर निर्भर करता है कि क्या वे केवल अपने सिस्टम को बनाए रखने और उपयोगकर्ताओं को सामग्री वितरित करने के लिए उपयोग की जाने वाली ऊर्जा (_प्रत्यक्ष व्यय_) को शामिल करते हैं या क्या वे सामग्री का उत्पादन करने, कॉर्पोरेट कार्यालय चलाने, विज्ञापन आदि (_अप्रत्यक्ष व्यय_) के लिए आवश्यक व्यय शामिल करते हैं। अप्रत्यक्ष उपयोग में टीवी, कंप्यूटर और मोबाइल जैसे अंतिम यूज़र उपकरणों पर सामग्री का उपभोग करने के लिए आवश्यक ऊर्जा भी शामिल हो सकती है, जो बदले में इस बात पर निर्भर करती है कि कौन से उपकरणों का उपयोग किया जाता है। + +इस मुद्दे पर [कार्बन ब्रीफ](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix) पर कुछ चर्चा हुई है। उपरोक्त तालिका में, Netflix के लिए रिपोर्ट किए गए मूल्य में उनके स्वयं-रिपोर्ट किए गए _प्रत्यक्ष_ और _अप्रत्यक्ष_ उपयोग शामिल हैं। Youtube केवल अपने स्वयं के _प्रत्यक्ष_ ऊर्जा व्यय का अनुमान प्रदान करता है, जो लगभग [12 TWh/yr](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf) है। + +उपरोक्त तालिका और चार्ट में Bitcoin और प्रूफ-ऑफ-वर्क इथेरियम की तुलना भी शामिल है। यह ध्यान रखना महत्वपूर्ण है कि प्रूफ-ऑफ-वर्क नेटवर्क की ऊर्जा खपत स्थिर नहीं रहती है - यह दिन-प्रतिदिन बदलती रहती है। काम का सबूत इथेरियम के लिए उपयोग किया जाने वाला मूल्य [मर्ज](/roadmap/merge/) से ठीक पहले से लेकर हिस्सेदारी के सबूत तक था, जैसा कि [Digiconomist](https://digiconomist.net/ethereum-energy-consumption) ने पूर्वानुमानित किया था। [कैम्ब्रिज ब्लॉकचेन नेटवर्क सस्टेनेबिलिटी इंडेक्स](https://ccaf.io/cbnsi/ethereum/1) जैसे अन्य स्रोतों का अनुमान है कि ऊर्जा की खपत बहुत कम रही है (20 TWh/yr के करीब)। Bitcoin की ऊर्जा खपत के अनुमान भी स्रोतों के बीच व्यापक रूप से भिन्न होते हैं और यह एक ऐसा विषय है जो न केवल खपत ऊर्जा की मात्रा बल्कि उस ऊर्जा के स्रोतों और संबंधित नैतिकता के बारे में बहुत सारी बारीक [बहस को](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/) आकर्षित करता है। ऊर्जा की खपत आवश्यक रूप से पर्यावरणीय पदचिह्न के लिए सटीक रूप से माप नहीं करती है क्योंकि विभिन्न परियोजनाएं विभिन्न ऊर्जा स्रोतों का उपयोग कर सकती हैं, उदाहरण के लिए नवीकरणीय ऊर्जा का कम या अधिक अनुपात। उदाहरण के लिए, [कैम्ब्रिज Bitcoin बिजली खपत सूचकांक](https://ccaf.io/cbnsi/cbeci/comparisons) इंगित करता है कि Bitcoin नेटवर्क की मांग सैद्धांतिक रूप से गैस फ्लैरिंग या बिजली द्वारा संचालित हो सकती है जो अन्यथा ट्रांसमिशन और वितरण में खो जाएगी। स्थिरता के लिए इथेरियम का मार्ग नेटवर्क के ऊर्जा-भूखे हिस्से को हरे रंग के विकल्प के साथ बदलना था। + +आप [कैम्ब्रिज ब्लॉकचेन नेटवर्क सस्टेनेबिलिटी इंडेक्स साइट](https://ccaf.io/cbnsi/ethereum) पर कई उद्योगों के लिए ऊर्जा खपत और कार्बन उत्सर्जन अनुमान ब्राउज़ कर सकते हैं। + +## प्रति-लेन-देन अनुमान {#per-transaction-estimates} + +कई लेख ब्लॉकचेन के लिए "प्रति-लेनदेन" ऊर्जा व्यय का अनुमान लगाते हैं। यह भ्रामक हो सकता है क्योंकि ब्लोक का प्रस्ताव और सत्यापन करने के लिए आवश्यक ऊर्जा इसके भीतर लेनदेन की संख्या से स्वतंत्र होती है। ऊर्जा व्यय की प्रति लेनदेन इकाई का अर्थ है कि कम लेनदेन से कम ऊर्जा व्यय होगा और इसके विपरीत, जो कि ऐसा नहीं है। इसके अलावा, प्रति-लेन-देन अनुमान इस बात के प्रति बहुत संवेदनशील होते हैं कि ब्लॉकचेन के लेन-देन थ्रूपुट को कैसे परिभाषित किया जाता है, और इस परिभाषा में बदलाव करके मूल्य को बड़ा या छोटा दिखाया जा सकता है। + +उदाहरण के लिए, इथेरियम पर, लेनदेन थ्रूपुट न केवल आधार परत का है - यह इसके सभी "[लेयर 2](/layer-2/)" रोलअप के लेनदेन थ्रूपुट का योग भी है। लेयर 2 को आम तौर पर गणना में शामिल नहीं किया जाता है, लेकिन अनुक्रमकों (छोटे) द्वारा खपत अतिरिक्त ऊर्जा और उनके द्वारा संसाधित लेनदेन की संख्या (बड़े) के लिए लेखांकन प्रति-लेनदेन अनुमानों को काफी कम कर देगा। यह एक कारण है कि प्लेटफार्मों में प्रति लेनदेन ऊर्जा खपत की तुलना भ्रामक हो सकती है। + +## इथेरियम का कार्बन ऋण {#carbon-debt} + +इथेरियम का ऊर्जा व्यय बहुत कम है, लेकिन यह हमेशा मामला नहीं रहा है। इथेरियम मूल रूप से प्रूफ-ऑफ-वर्क का उपयोग करता था जिसमें वर्तमान प्रूफ-ऑफ-स्टेक तंत्र की तुलना में बहुत अधिक पर्यावरणीय लागत थी। + +शुरुआत से ही, इथेरियम ने एक प्रूफ-ऑफ-स्टेक आधारित आम सहमति तंत्र को लागू करने की योजना बनाई, लेकिन सुरक्षा और विकेंद्रीकरण का त्याग किए बिना ऐसा करने में केंद्रित अनुसंधान और विकास के वर्षों लग गए। इसलिए, नेटवर्क शुरू करने के लिए एक प्रूफ-ऑफ-वर्क तंत्र का उपयोग किया गया था। प्रूफ-ऑफ-वर्क के लिए खनिकों को एक मूल्य की गणना करने के लिए अपने कंप्यूटिंग हार्डवेयर का उपयोग करने की आवश्यकता होती है, प्रक्रिया में ऊर्जा खर्च होती है। + +![मर्ज से पहले और बाद में इथेरियम की ऊर्जा खपत की तुलना करते हुए, मर्ज से पहले उच्च ऊर्जा खपत का प्रतीक करने के लिए बाईं ओर एफिल टॉवर (330 मीटर लंबा) का उपयोग किया गया, और नाटकीय कमी का प्रतिनिधित्व करने के लिए दाईं ओर एक छोटा 4 सेमी लंबा लेगो चित्र बनाया गया जो मर्ज के बाद ऊर्जा का उपयोग दिखाता है](energy_consumption_pre_post_merge.png) + +CCRI का अनुमान है कि मर्ज ने इथेरियम की वार्षिक बिजली की खपत को **99.988%** से अधिक कम कर दिया। इसी तरह, इथेरियम के कार्बन पदचिह्न में लगभग **99.992%** (11,016,000 से 870 टन CO2e) की कमी आई थी। इसे परिप्रेक्ष्य में रखने के लिए, उत्सर्जन में कमी एफिल टॉवर की ऊंचाई से एक छोटे प्लास्टिक के खिलौने की आकृति तक जाने जैसा है, जैसा कि ऊपर दिए गए आंकड़े में दिखाया गया है। नतीजतन, नेटवर्क को सुरक्षित करने की पर्यावरणीय लागत काफी कम हो जाती है। वहीं, माना जा रहा है कि नेटवर्क की सुरक्षा में सुधार हुआ है। + +## हरे रंग की एप्लीकेशन परत {#green-applications} + +जबकि इथेरियम की ऊर्जा खपत बहुत कम है, इथेरियम पर एक पर्याप्त, बढ़ते और अत्यधिक सक्रिय [**पुनर्योजी वित्त (ReFi)**](/refi/) सामुदायिक भवन भी है। ReFi अनुप्रयोग वित्तीय अनुप्रयोगों के निर्माण के लिए DeFi घटकों का उपयोग करते हैं जिनमें पर्यावरण को लाभ पहुंचाने वाली सकारात्मक बाहरीपन होत हैं। ReFi एक व्यापक सौर ["सोलरपंक"](https://en.wikipedia.org/wiki/Solarpunk) आंदोलन का हिस्सा है जो इथेरियम के साथ निकटता से जुड़ा हुआ है और इसका उद्देश्य तकनीकी प्रगति और पर्यावरणीय नेतृत्व को जोड़ना है। इथेरियम की विकेन्द्रीकृत, अनुमति रहित और रचना योग्य प्रकृति इसे ReFi और सोलरपंक समुदायों के लिए आदर्श आधार परत बनाती है। + +[Gitcoin](https://gitcoin.co) जैसे Web3 देशी सार्वजनिक सामान फंडिंग प्लेटफार्म इथेरियम की एप्लीकेशन परत पर पर्यावरण के प्रति जागरूक निर्माण को प्रोत्साहित करने के लिए जलवायु राउंड चलाते हैं। इन पहलों (और अन्य, जैसे [DeSci](/desci/)) के विकास के माध्यम से, इथेरियम एक पर्यावरण और सामाजिक रूप से नेट-सकारात्मक तकनीक बन रहा है। + + + यदि आपको लगता है कि इस पृष्ठ को अधिक सटीक बनाया जा सकता है, तो कृपया कोई मुद्दा या PR उठाएं। इस पृष्ठ पर दिए गए आँकड़े सार्वजनिक रूप से उपलब्ध आंकड़ों पर आधारित अनुमान हैं - वे ethereum.org टीम या Ethereum फाउंडेशन के किसी आधिकारिक बयान या वादे का प्रतिनिधित्व नहीं करते हैं। + + +## अग्रिम पठन {#further-reading} + +- [कैम्ब्रिज ब्लॉकचेन नेटवर्क स्थिरता सूचकांक](https://ccaf.io/cbnsi/ethereum) +- [प्रूफ-ऑफ-वर्क ब्लॉकचेन पर व्हाइट हाउस की रिपोर्ट](https://www.whitehouse.gov/wp-content/uploads/2022/09/09-2022-Crypto-Assets-and-Climate-Report.pdf) +- [इथेरियम इमिशन्स: एक निचले से ऊपर का अनुमान](https://kylemcdonald.github.io/ethereum-emissions/) - _काइल मैकडोनाल्ड_ +- [इथेरियम ऊर्जा खपत सूचकांक](https://digiconomist.net/ethereum-energy-consumption/) - _Digiconomist_ +- [ETHMerge.com](https://ethmerge.com/) - _[@InsideTheSim](https://twitter.com/InsideTheSim)_ +- [मर्ज - इथेरियम नेटवर्क की बिजली की खपत और कार्बन फ़ुटप्रिंट पर प्रभाव](https://carbon-ratings.com/eth-report-2022) - _CCRI_ +- [इथेरियम की ऊर्जा खपत](https://mirror.xyz/jmcook.eth/ODpCLtO4Kq7SCVFbU4He8o8kXs418ZZDTj0lpYlZkR8) + +## संबंधित विषय {#related-topics} + +- [इथेरियम का दृष्टिकोण](/roadmap/vision/) +- [बीकन चेन](/roadmap/beacon-chain) +- [मर्ज](/roadmap/merge/) diff --git a/src/content/translations/hi/governance/index.md b/src/content/translations/hi/governance/index.md new file mode 100644 index 00000000000..e811f028605 --- /dev/null +++ b/src/content/translations/hi/governance/index.md @@ -0,0 +1,183 @@ +--- +title: इथेरियम शासन +description: इथेरियम से संबंधित निर्णय कैसे किए जाते हैं। +lang: hi +postMergeBannerTranslation: page-upgrades-post-merge-banner-governance-ood +--- + +# इथेरियम शासन का परिचय {#introduction} + +_अगर कोई भी इथेरियम को नहीं जानता, तो इथेरियम में अतीत और भविष्य के परिवर्तनों के बारे में निर्णय कैसे किए जाते हैं? इथेरियम शासन वो प्रक्रिया है जो ऐसे निर्णय लेने की अनुमति देती है।_ + + + +## शासन क्या है? {#what-is-governance} + +शासन वह व्यवस्था है जो निर्णय लेने की अनुमति देता है। एक विशिष्ट संगठनात्मक ढांचे में, कार्यकारी टीम या निदेशक मंडल का निर्णय अंतिम निर्णय हो सकता है। या शायद शेयरधारक बदलाव लाने के प्रस्तावों पर मतदान करते हैं। एक राजनीतिक व्यवस्था में, निर्वाचित अधिकारी ऐसा कानून बना सकते हैं जिससे उन्हें फायदा हो। + +## विकेन्द्रीकृत शासन {#decentralized-governance} + +इथेरियम प्रोटोकॉल का मालिक या नियंत्रण कोई एक व्यक्ति नहीं करता है, लेकिन नेटवर्क लंबे समय तक और उसकी सफलता सुनिश्चित करने के लिए परिवर्तनों को लागू करने के बारे में अभी भी निर्णय लेने की आवश्यकता है। स्वामित्व की यह कमी पारंपरिक संगठनात्मक शासन को एक असंगत समाधान बनाती है। + +## Ethereum गवर्नेंस {#ethereum-governance} + +इथेरियम शासन वह प्रक्रिया है जिसके द्वारा प्रोटोकॉल में बदलाव किए जाते हैं। यह बताना महत्वपूर्ण है कि यह प्रक्रिया इस बात से संबंधित नहीं है कि लोग और एप्लीकेशन प्रोटोकॉल का उपयोग कैसे करते हैं - इथेरियम के लिए अनुमति की आवश्यकता नहीं है। दुनिया में कहीं से भी कोई भी व्यक्ति ऑन-चेन गतिविधियों में भाग ले सकता है। कौन एप्लीकेशन बना सकता है या नहीं बना सकता या कौन लेनदेन भेज सकता है, इसके लिए कोई नियम निर्धारित नहीं हैं। हालाँकि, ऐसे कोर प्रोटोकॉल में बदलाव प्रस्तावित करने की एक प्रक्रिया है, जिस पर विकेंद्रीकृत एप्लीकेशन चलते हैं। चूंकि बहुत से लोग इथेरियम की स्थिरता पर निर्भर हैं, इसलिए सामाजिक और तकनीकी प्रक्रियाओं सहित मुख्य परिवर्तनों के लिए बहुत उच्च समन्वय सीमा है, ताकि यह सुनिश्चित किया जा सके कि इथेरियम में कोई भी परिवर्तन सुरक्षित और समुदाय द्वारा व्यापक रूप से समर्थित है। + +### ऑन-चेन बनाम ऑफ-चेन शासन {#on-chain-vs-off-chain} + +ब्लॉकचेन तकनीक नई शासन क्षमताओं की अनुमति देती है, जिसे ऑन-चेन शासन के रूप में जाना जाता है। ऑन-चेन शासन तब होता है जब प्रस्तावित प्रोटोकॉल परिवर्तन हितधारक वोट द्वारा तय किए जाते हैं, आमतौर पर शासन टोकन के धारकों द्वारा, और ब्लॉकचेन पर वोटिंग होती है। ऑन-चेन शासन के कुछ रूपों के साथ, प्रस्तावित प्रोटोकॉल परिवर्तन पहले से ही कोड में लिखे गए हैं और स्वचालित रूप से लागू किए जाते हैं यदि हितधारक लेनदेन पर हस्ताक्षर करके परिवर्तनों को मंजूरी देते हैं। + +विपरीत दृष्टिकोण, ऑफ-चेन शासन, वह है जहां किसी भी प्रोटोकॉल परिवर्तन के निर्णय सामाजिक चर्चा की अनौपचारिक प्रक्रिया के माध्यम से होते हैं, जिसे यदि अनुमोदित किया जाता है, तो कोड में लागू किया जाएगा। + +**इथेरियम शासन, प्रक्रिया** में शामिल विभिन्न प्रकार के हितधारकों के साथ ऑफ-चेन होता है। + +_जबकि प्रोटोकॉल स्तर पर इथेरियम शासन ऑफ-चेन है, कई उपयोग इथेरियम से ऊपर के मामलों में बनते हैं, जैसे कि DAO, जो ऑन-चेन शासन का उपयोग करते हैं।_ + + + DAO पर अधिक जानकारी + + + + +## कौन शामिल है? {#who-is-involved} + +[इथेरियम समुदाय](/community/) में विभिन्न हितधारक हैं, जिनमें से प्रत्येक शासन प्रक्रिया में भूमिका निभा रहा है। हितधारकों से प्रोटोकॉल से सबसे दूर से शुरू करके और ज़ूम इन करते हुए, हमारे पास है: + +- **ईथर धारक**: ये लोग ETH की मनमानी मात्रा रखते हैं। [ETH के बारे में अधिक जानकारी](/eth/)। +- **एप्लीकेशन उपयोगकर्ता**: ये लोग इथेरियम ब्लॉकचेन पर एप्लीकेशन के साथ बातचीत करते हैं। +- **एप्लीकेशन/टूलींग डेवलपर्स**: ये लोग ऐसे एप्लीकेशन लिखते हैं जो इथेरियम ब्लॉकचेन (जैसे DeFi, NFT, आदि) पर चलते हैं या इथेरियम (जैसे वॉलेट, टेस्ट सूट आदि) के साथ बातचीत करने के लिए टूलिंग का निर्माण करते हैं। [dapps के बारे में अधिक जानकारी](/dapps/)। +- **नोड ऑपरेटर**: ये लोग ऐसे नोड्स चलाते हैं जो ब्लोक और लेनदेन का प्रचार करते हैं, किसी भी अमान्य लेनदेन या ब्लॉक को अस्वीकार करते हैं। [नोड्स पर अधिक जानकारी](/developers/docs/nodes-and-clients/)। +- **EIP लेखक**: ये लोग इथेरियम सुधार प्रस्तावों (EIP) के रूप में इथेरियम प्रोटोकॉल में बदलाव का प्रस्ताव करते हैं। [EIP के बारे में अधिक जानकारी](/eips/)। +- **सत्यापनकर्ता**: ये लोग नोड्स चलाते हैं जो इथेरियम ब्लॉकचेन में नए ब्लॉक जोड़ सकते हैं। +- **प्रोटोकॉल डेवलपर्स** (जिन्हें "कोर डेवलपर्स" भी कहा जाता है): ये लोग विभिन्न इथेरियम कार्यान्वयन (जैसे गो-इथेरियम, Nethermind, Besu, निष्पादन परत पर Erigon या आम सहमति परत पर प्रिज़्म, Lighthouse, Nimbus, Teku, Lodestar) को बनाए रखते हैं। [इथेरियम क्लाइंट के बारे में अधिक जानकारी](/developers/docs/nodes-and-clients/)। + +_नोट: कोई भी व्यक्ति इनमें से कई समूहों का हिस्सा हो सकता है (उदाहरण के लिए एक प्रोटोकॉल डेवलपर EIP चैंपियन कर सकता है, और एक बीकन चेन सत्यापनकर्ता चला सकता है, और DeFi एप्लीकेशन का उपयोग कर सकता है)। वैचारिक स्पष्टता के लिए, हालांकि, उनके बीच अंतर करना सबसे आसान है।_ + + + +## एक EIP क्या है? {#what-is-an-eip} + +इथेरियम शासन में उपयोग की जाने वाली एक महत्वपूर्ण प्रक्रिया **इथेरियम सुधार प्रस्ताव (EIP)** का प्रस्ताव है। EIP इथेरियम के लिए संभावित नई सुविधाओं या प्रक्रियाओं को निर्दिष्ट करने वाले मानक हैं। इथेरियम समुदाय के भीतर कोई भी EIP बना सकता है। यदि आप EIP लिखने या सहकर्मी-समीक्षा और/या शासन में भाग लेने में रुचि रखते हैं, तो देखें: + + + EIP के बारे में अधिक जानकारी + + + + +## औपचारिक प्रक्रिया {#formal-process} + +इथेरियम प्रोटोकॉल में परिवर्तन शुरू करने के लिए औपचारिक प्रक्रिया इस प्रकार है: + +1. **कोर EIP का प्रस्ताव करें**: जैसा कि [EIP-1](https://eips.ethereum.org/EIPS/eip-1#core-eips) में वर्णित है, औपचारिक रूप से किसी इथेरियम में बदलाव का प्रस्ताव करने का पहला कदम, इसे कोर EIP में निर्दिष्ट करना है। यह एक EIP के लिए आधिकारिक विनिर्देश के रूप में कार्य करेगा जिसे प्रोटोकॉल डेवलपर्स स्वीकार किए जाने पर लागू करेंगे। + +2. **प्रोटोकॉल डेवलपर्स को अपना EIP प्रस्तुत करें**: एक बार जब आपके पास कोर EIP होता है जिसके लिए आपने सामुदायिक इनपुट एकत्र किया है, तो आपको इसे प्रोटोकॉल डेवलपर्स को प्रस्तुत करना चाहिए। आप इसे [AllCoreDevs कॉल](https://github.com/ethereum/execution-specs/tree/master/network-upgrades#getting-the-considered-for-inclusion-cfi-status) पर चर्चा के लिए प्रस्तावित करके ऐसा कर सकते हैं। यह संभावना है कि कुछ चर्चाएं पहले से ही [इथेरियम जादूगर के मंच](https://ethereum-magicians.org/) पर या [इथेरियम R&D Discord](https://discord.gg/mncqtgVSVw) में कभी-कभार हुई होंगी। + +> इस चरण के संभावित परिणाम हैं: + +> - EIP को भविष्य के नेटवर्क अपग्रेड के लिए माना जाएगा +> - तकनीकी परिवर्तन का अनुरोध किया जाएगा +> - यदि इसकी प्राथमिकता नहीं है या विकास के प्रयास के सापेक्ष सुधार पर्याप्त नहीं है, तो इसे अस्वीकार किया जा सकता है + +3. **एक अंतिम प्रस्ताव की ओर बढ़ना**: सभी प्रासंगिक हितधारकों से प्रतिक्रिया प्राप्त करने के बाद, आपको अपनी सुरक्षा में सुधार करने या विभिन्न उपयोगकर्ताओं की जरूरतों को बेहतर ढंग से पूरा करने के लिए अपने प्रारंभिक प्रस्ताव में बदलाव करने की आवश्यकता होगी। एक बार जब आपका EIP उन सभी परिवर्तनों को शामिल कर लेता है जो आपको लगता है कि आवश्यक हैं, तो आपको इसे प्रोटोकॉल डेवलपर्स को फिर से पेश करना होगा। फिर आप इस प्रक्रिया के अगले चरण में चले जाएंगे, या नई चिंताएं सामने आएंगी, जिसके लिए आपके प्रस्ताव पर पुनरावृत्तियों के एक और दौर की आवश्यकता होगी। + +4. **EIP नेटवर्क अपग्रेड में शामिल**: यह मानते हुए कि EIP अनुमोदित, परीक्षण और कार्यान्वित किया गया है, यह नेटवर्क अपग्रेड के हिस्से के रूप में निर्धारित हो जाता है। नेटवर्क अपग्रेड की उच्च समन्वय लागत को देखते हुए (सभी को एक साथ अपग्रेड करने की आवश्यकता है), EIP को आमतौर पर अपग्रेड में एक साथ जोड़ा जाता है। + +5. **नेटवर्क अपग्रेड सक्रिय किया गया**: नेटवर्क अपग्रेड सक्रिय होने के बाद, EIP इथेरियम नेटवर्क पर लाइव होगा। _नोट: नेटवर्क अपग्रेड आमतौर पर इथेरियम मेननेट पर सक्रिय होने से पहले टेस्टनेट पर सक्रिय होते हैं।_ + +यह प्रवाह बहुत आसान होते हुए भी इथेरियम पर सक्रिय होने वाले प्रोटोकॉल परिवर्तन के लिए महत्वपूर्ण चरणों का अवलोकन देता है। अब, आइए इस प्रक्रिया के दौरान खेल में अनौपचारिक कारकों को देखें। + +## अनौपचारिक प्रक्रिया {#informal-process} + +### पूर्व कार्य को समझें {#prior-work} + +EIP चैंपियंस को EIP बनाने से पहले ऐसे पूर्व कार्य और प्रस्तावों से खुद को परिचित करना चाहिए, जिसे इथेरियम मेननेट पर तैनाती के लिए गंभीरता से विचार किया जा सकता है। इस तरह उम्मीद है कि EIP ऐसा कुछ नया लाएगा जिसे पहले अस्वीकार नहीं किया गया है। इस पर शोध करने के लिए तीन मुख्य स्थान हैं [EIP रिपॉजिटरी](https://github.com/ethereum/EIPs), [इथेरियम जादूगर](https://ethereum-magicians.org/) और [ethresear.ch](https://ethresear.ch/)। + +### कार्य समूह {#working-groups} + +EIP का प्रारंभिक मसौदा संपादन या परिवर्तन के बिना इथेरियम मेननेट पर लागू होने की संभावना नहीं है। आम तौर पर, EIP चैंपियंस प्रोटोकॉल डेवलपर्स के उप-समूह के साथ काम करेंगे ताकि उनके प्रस्ताव को निर्दिष्ट, कार्यान्वित, परीक्षण, पुनरावृत्ति और अंतिम रूप दिया जा सके। ऐतिहासिक रूप से, इन कार्य समूहों को कई महीनों (और कभी-कभी वर्षों!) काम की आवश्यकता होती है। इस तरह के परिवर्तनों के लिए EIP चैंपियंस को अंतिम उपयोगकर्ता प्रतिक्रिया इकट्ठा करने और किसी भी तैनाती जोखिम को कम करने के अपने प्रयासों में प्रासंगिक एप्लीकेशन/टूलींग डेवलपर्स को शामिल करना चाहिए। + +### सामुदायिक आम सहमति {#community-consensus} + +जबकि कुछ EIP न्यूनतम बारीकियों के चलते सिर्फ तकनीकी सुधार हैं, कुछ अधिक जटिल हैं और व्यापार के साथ आते हैं जो विभिन्न हितधारकों को अलग-अलग तरीकों से प्रभावित करेंगे। इसका मतलब है कि कुछ EIP दूसरों की तुलना में समुदाय के भीतर अधिक विवादास्पद हैं। + +विवादास्पद प्रस्तावों को संभालने के तरीके पर कोई स्पष्ट प्लेबुक नहीं है। यह इथेरियम के विकेन्द्रीकृत डिजाइन का एक परिणाम है जिसके तहत कोई भी हितधारक समूह दूसरे को जबर्दस्ती के दबाव से मजबूर नहीं कर सकता है: प्रोटोकॉल डेवलपर्स कोड परिवर्तनों को लागू नहीं करने का विकल्प चुन सकते हैं; नोड ऑपरेटर नवीनतम इथेरियम क्लाइंट नहीं चलाने का विकल्प चुन सकते हैं; एप्लीकेशन टीम और उपयोगकर्ता श्रृंखला पर लेनदेन नहीं करने का विकल्प चुन सकते हैं। चूंकि प्रोटोकॉल डेवलपर्स के पास लोगों को नेटवर्क अपग्रेड अपनाने के लिए मजबूर करने का कोई तरीका नहीं है, इसलिए वे आम तौर पर EIP को वहाँ लागू करने से बचेंगे जहां विवादास्पदता व्यापक समुदाय के लाभों से अधिक है। + +EIP चैंपियंस से सभी संबंधित हितधारकों से प्रतिक्रिया मांगने की उम्मीद है। यदि आप खुद को एक विवादास्पद EIP के चैंपियन पाते हैं, तो आपको अपने EIP के आसपास आम सहमति बनाने के लिए आपत्तियों को संबोधित करने की कोशिश करनी चाहिए। इथेरियम समुदाय के आकार और विविधता को देखते हुए, एक भी मीट्रिक (जैसे सिक्का वोट) नहीं है जिसका उपयोग सामुदायिक सहमति को मापने के लिए किया जा सकता है, और EIP चैंपियंस से उनके प्रस्ताव की परिस्थितियों के अनुकूल होने की उम्मीद है। + +इथेरियम नेटवर्क की सुरक्षा से परे, प्रोटोकॉल डेवलपर्स द्वारा ऐतिहासिक रूप से महत्वपूर्ण अर्थ रखते हुए एप्लीकेशन/टूलींग डेवलपर्स और एप्लीकेशन उपयोगकर्ता क्या मूल्य देते हैं, यह देखते हुए कि इथेरियम पर उनका उपयोग और विकास अन्य हितधारकों के लिए पारिस्थितिकी तंत्र को आकर्षक बनाता है। इसके अतिरिक्त, EIP को सभी क्लाइंट कार्यान्वयन में लागू करने की आवश्यकता है, जो अलग-अलग टीमों द्वारा प्रबंधित किए जाते हैं। इस प्रक्रिया का एक हिस्सा आमतौर पर प्रोटोकॉल डेवलपर्स की कई टीमों को समझाने का मतलब है कि एक विशेष परिवर्तन मूल्यवान है और यह अंतिम उपयोगकर्ताओं की मदद करता है या सुरक्षा समस्या को हल करता है। + + + +## असहमति को संभालना {#disagreements} + +विभिन्न प्रेरणाओं और विश्वासों के साथ कई हितधारकों के होने का मतलब है कि असहमति असामान्य नहीं है। + +आम तौर पर, असहमति को सार्वजनिक मंचों पर लंबे समय तक चर्चा के साथ संभाला जाता है ताकि समस्या की जड़ को समझा जा सके और किसी को भी कम-ज्यादा करने की अनुमति मिल सके। आमतौर पर, एक समूह हार जाता है, या एक खुश माध्यम प्राप्त किया जाता है। यदि एक समूह दृढ़ता से पर्याप्त महसूस करता है, तो किसी विशेष परिवर्तन के माध्यम से मजबूर करने से चेन का विभाजन हो सकता है। एक चेन विभाजन तब होता है जब कुछ हितधारक प्रोटोकॉल परिवर्तन को लागू करने का विरोध करते हैं जिसके परिणामस्वरूप प्रोटोकॉल ऑपरेटिंग के विभिन्न, असंगत संस्करण होते हैं, जिसमें से दो अलग-अलग ब्लॉकचेन उभरते हैं। + +### DAO फोर्क {#dao-fork} + +फोर्क्स तब होते हैं जब नेटवर्क में प्रमुख तकनीकी उन्नयन या परिवर्तन करने और प्रोटोकॉल के "नियमों" को बदलने की आवश्यकता होती है। [इथेरियम क्लाइंट](/developers/docs/nodes-and-clients/) को नए फोर्क नियमों को लागू करने के लिए अपने सॉफ़्टवेयर को अपडेट करना होगा। + +DAO फोर्क [2016 DAO हमले](https://www.coindesk.com/understanding-dao-hack-journalists) के जवाब में था, जहां एक असुरक्षित [DAO](/glossary/#dao) अनुबंध से एक हैक में 3.6 मिलियन से अधिक ETH निकाल दिए गए। फोर्क ने धनराशि को दोषपूर्ण अनुबंध से एक नए अनुबंध में स्थानांतरित कर दिया, जिससे हैक में धनराशि खोने वाले किसी भी व्यक्ति को उसे पुनर्प्राप्त करने की अनुमति मिल सके। + +इस कार्यवाही पर इथेरियम समुदाय द्वारा मतदान किया गया था। कोई भी ETH धारक [किसी वोटिंग प्लेटफार्म](http://v1.carbonvote.com/) पर लेनदेन के माध्यम से वोट करने में सक्षम था। फोर्क का निर्णय 85% से अधिक वोटों तक पहुंच गया। + +यह ध्यान रखना महत्वपूर्ण है कि प्रोटोकॉल ने हैक को वापस लाने के लिए फोर्क किया था, लेकिन फोर्क का निर्णय लेने में वोट का महत्व कुछ कारणों से बहस का विषय है: + +- मतदान का प्रतिशत अविश्वसनीय रूप से कम था +- अधिकांश लोगों को पता ही नहीं था कि मतदान हो रहा है +- वोट केवल ETH धारकों का प्रतिनिधित्व करता है, सिस्टम में किसी अन्य प्रतिभागी का नहीं करता + +समुदाय के एक उपसमूह ने फोर्क करने से इनकार कर दिया, मुख्यतः क्योंकि उन्हें लगा कि DAO घटना प्रोटोकॉल में कोई दोष नहीं थी। उन्होंने [इथेरियम क्लासिक](https://ethereumclassic.org/) बनाया। + +आज, इथेरियम समुदाय ने सिस्टम की विश्वसनीय तटस्थता बनाए रखने के लिए अनुबंध बग या खोए हुए धन के मामलों में गैर-हस्तक्षेप की नीति अपनाई है। + +DAO हैक पर और देखें: + + + + + +### फोर्किंग की उपयोगिता {#forking-utility} + +इथेरियम/इथेरियम क्लासिक फोर्क किसी स्वस्थ फोर्क का एक उत्कृष्ट उदाहरण है। हमारे पास दो समूह थे जो कुछ बुनियादी मूल्यों पर एक-दूसरे से इतनी दृढ़ता से असहमत थे, क्यूँकि उन्हें लगता था कि अपनी विशिष्ट कार्यवाहियों को आगे बढ़ाने में शामिल जोखिम उठाने लायक है। + +महत्वपूर्ण राजनीतिक, दार्शनिक या आर्थिक मतभेदों का सामना करने की क्षमता इथेरियम शासन की सफलता में एक बड़ी भूमिका निभाती है। वैकल्पिक फोर्क की क्षमता के बिना अंदरूनी लड़ाई चल रही थी, अंततः इथेरियम क्लासिक का गठन करने वालों के लिए अनिच्छुक भागीदारी और इथेरियम की सफलता कैसी दिखती है, इसके बारे में एक अलग दृष्टिकोण था। + + + +## बीकन चेन शासन {#beacon-chain} + +इथेरियम शासन प्रक्रिया अक्सर खुलेपन और समावेशिता के लिए गति और दक्षता का ट्रेड करती है। बीकन चेन के विकास में तेजी लाने के लिए, इसे काम-का-सबूत इथेरियम नेटवर्क से अलग से लॉन्च किया गया और अपनी स्वयं की शासन प्रथाओं का पालन किया गया। + +जबकि विनिर्देश और विकास कार्यान्वयन हमेशा पूरी तरह से खुले स्रोत रहे हैं, ऊपर वर्णित अपडेट का प्रस्ताव करने के लिए उपयोग की जाने वाली औपचारिक प्रक्रियाओं का उपयोग नहीं किया गया था। इसने परिवर्तनों को निर्दिष्ट करने और शोधकर्ताओं और कार्यान्वयनकर्ताओं द्वारा जल्दी से सहमत होने की अनुमति दी। + +15 सितंबर, 2022 को बीकन चेन का इथेरियम निष्पादन परत के साथ मर्ज हो गया [पेरिस नेटवर्क अपग्रेड](/history/#paris) के हिस्से के रूप में मर्ज पूरा हो गया था। प्रस्ताव [EIP-3675](https://eips.ethereum.org/EIPS/eip-3675) को 'अंतिम कॉल' से 'अंतिम' में बदल दिया गया, जिससे हिस्सेदारी का सबूत में परिवर्तन पूरा हो गया। + + + मर्ज पर और अधिक + + + + +## मैं कैसे शामिल हो सकता हूं? {#get-involved} + +- [एक EIP प्रस्तावित करें](/eips/#participate) +- [वर्तमान प्रस्तावों पर चर्चा करें](https://ethereum-magicians.org/) +- [R&D चर्चा में शामिल हों](https://ethresear.ch/) +- [इथेरियम R&D discord में शामिल हों](https://discord.gg/mncqtgVSVw) +- [नोड चलाएं](/developers/docs/nodes-and-clients/run-a-node/) +- [क्लाइंट विकास में योगदान करें](/developers/docs/nodes-and-clients/#execution-clients) +- [कोर डेवलपर शिक्षुता प्रोग्राम](https://blog.ethereum.org/2021/09/06/core-dev-apprenticeship-second-cohort/) + +## अग्रिम पठन {#further-reading} + +इथेरियम में शासन को सटीक तरह से परिभाषित नहीं किया गया है। विभिन्न समुदाय प्रतिभागियों के इस पर विविध दृष्टिकोण हैं। यहां उनमें से कुछ हैं: + +- [ब्लॉकचेन शासन पर नोट्स](https://vitalik.ca/general/2017/12/17/voting.html) - _विटालिक ब्यूटेरिन_ +- [इथेरियम शासन कैसे काम करता है?](https://cryptotesters.com/blog/ethereum-governance) – _क्रिप्टोटेस्टर_ +- [इथेरियम शासन कैसे काम करता है](https://medium.com/coinmonks/how-ethereum-governance-works-71856426b63a) – _मीका ज़ोलटू_ +- [इथेरियम कोर डेवलपर क्या है?](https://hudsonjameson.com/2020-06-22-what-is-an-ethereum-core-developer/) - _हडसन जेमिसन_ +- [शासन, भाग 2: धनतंत्र अभी भी खराब है](https://vitalik.ca/general/2018/03/28/plutocracy.html) - _विटालिक ब्यूटेरिन_ +- [सिक्का मतदान शासन से आगे बढ़ना](https://vitalik.ca/general/2021/08/16/voting3.html) - _विटालिक ब्यूटेरिन_ diff --git a/src/content/translations/hi/guides/how-to-create-an-ethereum-account/index.md b/src/content/translations/hi/guides/how-to-create-an-ethereum-account/index.md new file mode 100644 index 00000000000..ac9897551f8 --- /dev/null +++ b/src/content/translations/hi/guides/how-to-create-an-ethereum-account/index.md @@ -0,0 +1,72 @@ +--- +title: इथेरियम खाते को कैसे "बनाएं" +description: वॉलेट के इस्तेमाल से इथेरियम खाता बनाने पर एक उत्तरोत्तर गाइड। +lang: hi +--- + +# इथेरियम खाते को कैसे बनाएं + +कोई भी इथेरियम खाते को कभी भी, मुफ्त में बना सकता है। वहा पर इसके कई तरीके है, लेकिन सबसे आसान और आम तरीका है की वॉलेट नाम से जाना जाने वाले ऐप का इस्तेमाल करें। वॉलेट कुंजियां बनाते है और उनको सुरक्षित रखते है, जो कि आपको इथेरियम का इस्तेमाल करने में सक्षम करते है। आप अपने वॉलेट का इस्तेमाल लेनदेन करने, अपने टोकन बैलेंस की जांच करने और इथेरियम पर निर्मित ऐप्लिकेशन जैसे कि टोकन एक्सचेंज, खेल, NFT बाजारों और बहुत कुछ इत्यादि में कर सकते है। कुछ "web2" ऐप अब आपको इथेरियम के साथ साइन इन की अनुमति देते है। + +किसी कंपनी के साथ खाता खोलने से अलग इथेरियम खाता खोलना स्वतंत्र रूप से, निजी तौर पर और किसी अनुमति की जरूरत के बगैर होता है। खाते उन चाबियों द्वारा नियंत्रित होते है जिन्हे आप वॉलेट सॉफ्टवेयर से बनाते है और इन्हें किसी तीसरी पक्ष जारी नही करते है और न ही इनका किसी केंद्रीय रजिस्ट्री में संग्रह किया जाता है। + +## चरण 1: एक वॉलेट चुनें + +वॉलेट एक ऐप है जो आपके इथेरियम खाते को मैनेज करने में आपकी मदद करता है। यह आपकी कुंजियों का इस्तेमाल लेनदेन भेजने और प्राप्त करना तथा ऐप्स में साइन इन में करता है। वहां पर चुनने के लिए दर्जनों विभिन्न वॉलेट हैं—मोबाइल, डेस्कटॉप और यहां तक कि ब्राउज़र के एक्सटेंशन भी। + + + वॉलेट खोजें + + +अगर आप नए है, तो वॉलेट चुनने के लिए आप "वॉलेट ढूंढे" पेज पर "क्रिप्टो पर नए" फिल्टर को चुन सकते है, जिसमे शुरुआती नए लोगो के लिए उपयुक्त जरूरी सभी सुविधाएं शामिल होनी चाहिए। + +!['वॉलेट ढूंढे' पेज पर फिल्टर चयन](./wallet-box.png) + +आपकी ज़रूरतों को पूरा करने वाले और भी दूसरे प्रोफ़ाइल फिल्टर है। ये कुछ आम तौर पर इस्तेमाल किए जाने वाले वॉलेट के उदाहरण - किसी भी सॉफ्टवेयर पर भरोसा करने से पहले आपको अपना शोध खुद करना चाहिए। + +## चरण 2: वॉलेट ऐप डाउनलोड और इंस्टॉल करें + +एक बार जब आप एक विशिष्ट वॉलेट का चुनाव कर लें, तो आप उनकी आधिकारिक वेबसाइट या ऐप स्टोर पर जाए और उसे डाउनलोड और इंस्टॉल करें। वे सभी मुफ्त होने चाहिए। + +## चरण 3: ऐप खोलें और अपना इथेरियम खाता बनाएं या इंपोर्ट करें + +जब पहली बार अपना नया वॉलेट खोलते है, तो आपसे नया खाता बनाने या फिर मौजूद को आयात करने के लिए कहा जाता है। नया खाता बनाने के विकल्प पर क्लिक करें। + +## चरण 4: अपना रिकवरी फ़्रेज़ स्टोर करें + +कुछ ऐप्लिकेशन आपसे गुप्त 'बीज वाक्यांश' (आपको यह "पुनर्प्राप्ति व्याक्यांश" या "स्मरणीय" के रूप में देखने को मिल सकता है) को सहेजने का अनुरोध करते है। इस बीज वाक्यांश को बचाकर रखना बहुत ज़्यादा महत्वपूर्ण है! बीज व्याक्यांश का इस्तेमाल एक खाते की गुप्त चाबी उत्पन्न करने के लिए किया जाता है जिसका लेनदेन साइन करने और भेजने के काम में आता है। जिस व्यक्ति को बीज वाक्यांश के बारे में पता है वो उसके द्वारा उत्पन्न होने वाले सभी खातों को नियंत्रित कर सकता है। बीज वाक्यांश किसी के साथ कभी साझा न करें। बीज वाक्यांश में 12 से 24 बेतरतीब ढंग से उत्पन्न शब्द होते है (शब्दों का क्रम मायने रखता है)। + +जब आप एक बार अपना बीज वाक्यांश सहेज लेते है तब आपको अपने बैलेंस के साथ अपने वॉलेट का डैशबोर्ड देखना चाहिए। हमारी मार्गदर्शक चेक आउट करें: [एक वॉलेट का इस्तेमाल कैसे करें।](/guides/how-to-use-a-wallet) + +
    + + +
    और अधिक सीखना चाहते है?
    + + हमारी अन्य गाइडें देखें + +
    + +## अक्सर पूछे जाने वाले सवाल + +### क्या मेरा वॉलेट और मेरा इथेरियम खाता एक ही हैं? + +नहीं। वॉलेट एक मैनेजमेंट टूल है जो आपके खाते का प्रबंधन करने में मदद करता है। अकेला वॉलेट अनेक खातों में प्रवेश दे सकता है और अकेले खाते तक कई वॉलेट से प्रवेश मिल सके। बीज वाक्यांश का इस्तेमाल खाते बनाने में होता है जिन्हे बाद में वॉलेट से नियंत्रित किया जाता है। + +आप खातों को उस पेड़ की पत्तियां सोच सकते है जो अकेले बीज वाक्यांश से ऊगा हुआ है। हर अनोखे बीज एक पूरी तरह से अलग खातों का पेड़ उगाते है। + +### क्या मैं bitcoin एक इथेरियम के पते पर भेज सकता हूं या इथर को एक Bitcoin के पते पर? + +नहीं, आप ऐसा नहीं कर सकते। Bitcoin और इथर दो अलग नेटवर्क पर मौजूद है (अर्थात, विभिन्न ब्लॉकचेन), हर उनके खुद के बहीखाता मॉडल और पता प्रारूप के साथ है। दो विभिन्न नेटवर्कों को साथ में जोड़ने के कई प्रयास किए गए है, दो विभिन्न नेटवर्कों को साथ में जोड़ने के कई प्रयास किए गए है, जिनमे से फिलहाल में सबसे सक्रिय [रैप्ड bitcoin या WBTC](https://www.bitcoin.com/get-started/what-is-wbtc/) है। यह कोई समर्थन नहीं है, क्योंकि WBTC एक संरक्षक समाधान है (जिसका अर्थ है कि लोगों का एक समूह कुछ महत्वपूर्ण कार्यों को नियंत्रित करता है) और यहां केवल सूचनात्मक उद्देश्यों के लिए प्रदान किया गया है। + +### अगर मैं ETH पते का मालिक हूं, क्या मैं दूसरी ब्लॉकचेन पर भी समान पते का मालिक हूं? + +आप उन सभी ब्लॉकचेन पर समान पते का इस्तेमाल कर सकते है जो इथेरियम के समान आधारित सॉफ्टवेयर का इस्तेमाल करते है (EVM-कंपेटिबल नाम से जाने जाते है)। यह [सूची](https://chainlist.org/) आपको दिखाएगी कि आप समान पते के साथ और कौन सी ब्लॉकचेन का इस्तेमाल कर सकते है। कुछ ब्लॉकचैन, जैसे Bitcoin, नेटवर्क नियमो का पूरा अलग सेट लागू करते है और आपको अलग पता प्रारूप के साथ अलग पते की ज़रूरत होगी। अगर आपके पास स्मार्ट अनुबंध का वॉलेट है, ब्लॉकचेन का समर्थन करने वाले प्रॉडक्ट के बारे में अधिक जानकारी के लिए आपको उसकी प्रॉडक्ट वेबसाइट देखनी चाहिए। + +### क्या मेरे पास खुद का मेरा वॉलेट होना मेरे फंड का एक्सचेंज पर रखना ज्यादा सुरक्षित है? + +आपका स्वयं का वॉलेट होने का मतलब है कि आप अपनी संपत्ति की सुरक्षा की जिम्मेदारी लेते है। बदकिस्मती से कई विफल एक्सचेंज के उदाहरण है जिन्होंने उनके ग्राहकों का धन खोया है। वॉलेट (बीज वाक्यांश के साथ) का मालिक होना आपकी संपत्ति रखने के लिए निकाय पर भरोसे से जुड़े जोखिम को हटाता है। हालांकि, आपको स्वयं की कुंजी को सुरक्षित करना होता है और फिशिंग अटैक, गलती से लेने-देन को मंजूरी देना या कुंजियों को दिखाना, नकली वेबसाइट पर जाना और स्व-अभिरक्षा के जोखिम से बचना होगा। जोखिम और फायदे अलग-अलग हैं। + +### अगर मैं फोन/हार्डवेयर वॉलेट को खो देता हूं, तो क्या मुझे खोए हुए फंड की वसूली के लिए समान वॉलेट ऐप का इस्तेमाल करने की ज़रूरत होगी? + +नहीं, आप एक अलग वॉलेट इस्तेमाल कर सकते हैं। जब तक आपके पास बीज वाक्यांश है आप इसे अधिकतर वॉलेट में डाल सकते है और वे आपका खाता रीस्टोर कर देंगे। अगर आपको यह कभी भी करने की आवश्यकता पड़े तो सावधानी रहें: सबसे अच्छा यहीं होगा कि आप सुनिश्चित करें कि जब अपना वॉलेट रीस्टोर कर रहे हो तब इंटरनेट से जुड़े नहीं हो, ताकि आपका बीज वाक्यांश गलती से लीक न हो जाए। बीज वाक्यांश के बगैर खोए हुए धन को पुनः प्राप्त करना अक्सर नामुनकिन होता है। diff --git a/src/content/translations/hi/guides/how-to-id-scam-tokens/index.md b/src/content/translations/hi/guides/how-to-id-scam-tokens/index.md new file mode 100644 index 00000000000..e785be7bcf9 --- /dev/null +++ b/src/content/translations/hi/guides/how-to-id-scam-tokens/index.md @@ -0,0 +1,97 @@ +--- +title: घोटाले वाले टोकन को कैसे पहचानें +description: घोटाले वाले टोकन को समझना, वे खुद को वैध कैसे दिखाते है, उन्हें अनदेखा कैसे करें। +lang: hi +--- + +# घोटाले वाले टोकन को कैसे पहचानें {#identify-scam-tokens} + +One of the most common uses for Ethereum is for a group to create a tradable token, in a sense their own currency. यह टोकन आमतौर पर एक मानक, [ERC-20](/developers/docs/standards/tokens/erc-20/) का पालन करते है। हालांकि, जहां कही पर भी ऐसे इस्तेमाल के मामले होते है जो मूल्य रखते है, वहा पर अपराधी भी होते है जो अपने लिए उस मूल्य को चुराने की कोशिश करते है। + +ऐसे दो तरीके है जिनसे वे आपको धोखा दे सकते हैं: + +- **घोटाले वाले टोकन बेचकर**, जो हो सकता है की वो वैध दिखाई दे जिन टोकन को आप खरीदना चाहते है, पर वो घोटालेबाजों के द्वारा जारी किए जाते है और उनकी कुछ कीमत नही होती है। +- **खराब लेनदेन को साइन करने के लिए आपको बरगलाया जाए**, आमतौर आपको उनके खुद के यूज़र इंटरफेस पर भेजकर किया जाता है। वे आपको अपने अनुबंधों में आपके ERC-20 टोकन पर छूट देने और संवेदनशील जानकारी को उजागर करने के लिए बाध्य करने का प्रयास कर सकते हैं, जो उन्हें आपकी संपत्तियों, आदि तक पहुंच प्रदान करती है। ये यूज़र इंटरफेस ईमानदार वेबसाइट के लगभग पूरे क्लोन हो, लेकिन छिपी हुई तरकीबों के साथ। + +यह दर्शाने के लिए की घोटाले वाले टोकन क्या होते है, और उनकी पहचान कैसे करते है, हम एक उदाहरण को देखते हैं: [`wARB`](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82)। यह टोकन वैध [`ARB`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1) टोकन के समान दिखने का प्रयास करता है। + + + +आर्बिट्रम वह संगठन है जो ऑप्टिमिस्टिक रोल अप का निर्माण और प्रबंधन करता है। शुरुआत में, Arbitrum एक फॉर-प्रॉफिट कंपनी के रूप में संगठित हुआ था, पर बाद में विकेंद्रीकरण के लिए कदम बढ़ाए। उस प्रक्रिया का हिस्सा होने से, उन्होंने एक व्यापार योग्य गवर्नेंस टोकन जारी किया। + + + + + +इथेरियम में एक परंपरा है की जब कोई संपत्ति ERC-20 अनुसार नही है तो हम उससे "रैप्ड" संस्करण निर्मित करते है साथ ही उनका नाम "w" से शुरू होता है। उदाहरण के लिए, हमारे पास bitcoin के लिए wBTC और इथर के लिए wETH है। + +एक ERC-20 टोकन का रैप्ड संस्करण निर्मित करने का कोई मतलब नहीं है जो कि पहले से इथेरियम पर है, लेकिन घोटालेबाज़ अंदरुनी वास्तविकता के बजाय वैधता के दिखावे पर भरोसा करते है। + + + +## स्कैम टोकन कैसे काम करते है? {#how-do-scam-tokens-work} + +इथेरियम का सम्पूर्ण उद्देश्य विकेंद्रीकरण करना है। इसका मतलब यह है कि कोई केंद्रीय प्राधिकरण नही है जो आपकी संपत्ति जब्त कर सके या आपको स्मार्ट अनुबंध को तैनात करने से रोक सकें। लेकिन इसका अर्थ यह भी है की घोटालेबाज़ भी अपनी इच्छानुसार कोई भी स्मार्ट अनुबंध तैनात कर सकते है। + + + +स्मार्ट अनुबंध वह प्रोग्राम है जो इथेरियम ब्लॉकचेन के ऊपर चलते है। उदाहरण के लिए, प्रत्येक ERC-20 टोकन, एक स्मार्ट अनुबंध की तरह लागू किए जाते है। + + + +विशेष रूप से, Arbitrum एक अनुबंध तैनात करता है जो `ARB` चिन्ह का इस्तेमाल करता है। लेकिन ये दूसरे लोगों को भी अनुबंधों को तैनात करने से नही रोकता है जो की बिल्कुल समान चिन्ह या अन्य समान का इस्तेमाल करते है। जो कोई भी अनुबंध लिखता है वह निर्धारित करता है की अनुबंध क्या करेगा। + +## वैध दिखाना {#appearing-legitimate} + +स्कैम टोकन बनाने वाले कई तरकिबे करते है ताकि वैध दिखाई पड़े। + +- **वैध नाम और चिन्ह**। जैसा की पहले उल्लिखित किया, ERC-20 अनुबंध के पास अन्य ERC-20 से समान नाम और चिन्ह हो सकता है। आप सुरक्षा के लिए उन क्षेत्रों पर निर्भर नहीं कर सकते। + +- **वैध स्वामी**। स्कैम टोकन अक्सर काफी मात्रा में शेष राशि को उन पतों पर एयरड्रॉप करते हैं जिनसे वास्तविक टोकन के वैध होल्डर होने की उम्मीद की जा सकती है। + + उदाहरण के लिए, आइए `wARB` को दोबारा देखें। [लगभग 16% टोकन](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82?a=0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) एक ऐसे पते पर रखे गए हैं जिसका सार्वजनिक टैग [Arbitrum फाउंडेशन: डिप्लॉयर है](https://etherscan.io/address/0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f)। यह कोई नकली पता _नहीं_ है, यह वास्तव में वह पता है जिससे [इथेरियम मेननेट पर असली ARB अनुबंध तैनात किया गया है](https://etherscan.io/tx/0x242b50ab4fe9896cb0439cfe6e2321d23feede7eeceb31aa2dbb46fc06ed2670)। + + क्योंकि किसी पते का ERC-20 संतुलन ERC-20 अनुबंध के स्टोरेज का हिस्सा है, इसे अनुबंध द्वारा निर्दिष्ट किया जा सकता है कि अनुबंध डेवलपर जो चाहे उसका संतुलन वह हो। किसी अनुबंध के लिए स्थानांतरण पर रोक लगाना भी संभव है ताकि वैध यूज़र उन घोटाले वाले टोकन से छुटकारा न पा सकें। + +- **वैध स्थानान्तरण**। _वैध मालिक स्कैन टोकन को दूसरों तक स्थानांतरित करने में भुगतान नही करते है, तो अगर वहां पर स्थानांतरण होंगे तो वह वैध होने चाहिए, है ना?_ **गलत**। `स्थानांतरण` के इवेंट्स ERC-20 द्वारा उत्पादन किया जाता है। घोटालेबाज़ भी आसानी से ऐसे अनुबंध को इस तरह से लिख सकता है की वह उन क्रियाओं को उत्पन्न करें। + +## धोखेबाज वेबसाइटें {#websites} + +घोटालेबाज भी बहुत ठोस विश्वासकारी वेबसाइट का उत्पादन कर सकते है, कभी कभी तो प्रमाणिक साइट के सटीक क्लोन एक जैसे UI के साथ, लेकिन सूक्ष्म तरकीबों के साथ में। उदाहरण ऐसे बाहरी लिंक हो सकते है जो वैध दिखाई दे असल में यूज़र को एक बाहरी स्कैम साइट पर भेजते है, गलत निर्देश जो यूज़र को उसकी चाबियों का उद्घाटन करने या हमलावर के पते पर धन भेजने में मार्गदर्शन करते है। + +इसे टालने का सबसे अच्छा अभ्यास है की आप जिस साइट पर जाते है उसके लिए URL की जांच सावधानी से करें, और ज्ञात साइट के पते अपने बुकमार्क में सहेज कर रखे। तब, आप अपने बुकमार्क के माध्यम से असली साइट में प्रवेश कर सकते है किसी गलती से वर्तनी त्रुटि किए बिना या बाहरी लिंक पर भरोसा किए बगैर। + +## आप खुद की रक्षा कैसे कर सकते है? {#protect-yourself} + +1. **अपने अनुबंध पते की जांच करें**। वैध टोकन वैध संगठनों से आते है, और आप अनुबंध पते संगठन की वेबसाइट पर देख सकते है। उदाहरण के लिए, [`ARB` के लिए वैध पते आप यहां देख सकते हो](https://docs.arbitrum.foundation/deployment-addresses#token)। + +2. **असली टोकन में लिक्विडिटी होती है**। एक दूसरा विकल्प है की [Uniswap](https://uniswap.org/) पर लिक्विडिटी पूल का आकार देंखे, सबसे आम टोकन स्वैपिंग प्रोटोकॉल में से एक है। यह प्रोटोकॉल लिक्विडिटी पूल का इस्तेमाल से काम करता है, जिसमें निवेशक ट्रेडिंग फीस से वापस आने की उम्मीद में उनके टोकन जमा करते है। + +आमतौर पर स्कैम टोकन के पास बहुत छोटे से लिक्विडिटी पूल होते है, अगर कोई होगा तो, क्योंकि घोटालेबाज़ असली संपत्ति को जोखिम में नहीं डालना चाहते। उदाहरण के लिए, `ARB`/`ETH` Uniswap पूल लगभग 10 लाख डॉलर रखते हैं ([कीमत की ताज़ा जानकारी के यह देंखे](https://info.uniswap.org/#/pools/0x755e5a186f0469583bd2e80d1216e02ab88ec6ca)) और छोटी रकम की खरीदी या बिक्री से कीमत में कोई बदलाव नहीं होने वाला है: + +![एक वैध टोकन खरीदना](./uniswap-real.png) + +लेकिन जब आप `wARB` स्कैम टोकन खरीदने की कोशिश करते है, एक छोटी सी खरीदारी भी कीमत को 90% से ज्यादा बदल देगी: + +![एक घोटाले वाला टोकन खरीदना](./uniswap-scam.png) + +यह एक दूसरा सबूत का टुकड़ा है जो हमें दर्शाता है की `wARB` के वैध टोकन होने की संभावना नही है। + +3. **इथरस्कैन में देखो**। पहले से ही ढेर सारे स्कैम टोकन की पहचान कर ली गई है और समुदाय द्वारा उनकी रिपोर्ट भी हो चुकी है। ऐसे टोकन को [इथरस्कैन में चिन्हित](https://info.etherscan.com/etherscan-token-reputation/) किए जाते है। पहले से ही ढेर सारे स्कैम टोकन की पहचान कर ली गई है और समुदाय द्वारा उनकी रिपोर्ट भी हो चुकी है। ऐसे टोकन को इथरस्कैन में चिन्हित किए जाते है। जबकि इथरस्कैन कोई सच का आधिकारिक स्त्रोत नही है (ये विकेंद्रीकृत नेटवर्क का स्वभाव है की वहा पर वैधता के लिए कोई आधिकारिक स्त्रोत नही होता है), टोकन जिनकी इथरस्केन द्वारा घोटाले के रूप में पहचान हुई है, तो उनकी स्कैम होने की संभावना होती है। + + ![इथरस्कैन में घोटाले वाला टोकन](./etherscan-scam.png) + +## Conclusion {#conclusion} + +जब तक दुनिया में मूल्य रहेगा तब तक दुनिया में घोटालेबाज़ रहेंगे जो इस मूल्य को अपने लिए चुराने का प्रयास करते रहेंगे, और विकेन्द्रीकृत दुनिया में आपके सिवाए आपकी रक्षा करने वाला कोई नहीं है। उम्मीद है की, आपको यह बातें याद रहेंगी जिनसे आप स्कैम से वैध टोकन बताने में मददगार होंगी: + +- स्कैम टोकन वैध टोकन का प्रतिरूपण करते है, वे एक ही नाम, चिन्ह इत्यादि का इस्तेमाल कर सकते है। +- स्कैम टोकन समान अनुबंध पते का इस्तेमाल _नहीं_ करते। +- वैध टोकन पते का सबसे अच्छा स्त्रोत वह संगठन है जिसका टोकन है। +- यह विफल होने पर आप लोकप्रिय, विश्वासकारी एप्लीकेशन जैसे कि [Uniswap](https://app.uniswap.org/#/swap) और [इथरस्कैन](https://etherscan.io/) का इस्तेमाल कर सकते है। diff --git a/src/content/translations/hi/guides/how-to-revoke-token-access/index.md b/src/content/translations/hi/guides/how-to-revoke-token-access/index.md new file mode 100644 index 00000000000..6c60e00baba --- /dev/null +++ b/src/content/translations/hi/guides/how-to-revoke-token-access/index.md @@ -0,0 +1,73 @@ +--- +title: अपने क्रिप्टो कोष के लिए स्मार्ट अनुबंध के प्रवेश को कैसे रद्द करें +description: शोषणकारी स्मार्ट अनुबंध टोकन पहुंच को रद्द कैसे करें के बारे में मार्गदर्शन +lang: hi +--- + +# अपने क्रिप्टो कोष के लिए स्मार्ट अनुबंध के प्रवेश को कैसे रद्द करें + +यह गाइड आपको सिखाएगी कि उन सभी स्मार्ट अनुबंधों की सूची कैसे देखें, जिन्हें आपने अपने फंड तक पहुंच की अनुमति दी है और उन्हें कैसे रद्द करें। + +कभी-कभी दुर्भावनापूर्ण डेवलपर्स स्मार्ट अनुबंधों को ऐक्सेस करने के दूसरे तरीके का निर्माण करते हैं जो स्मार्ट अनुबंध के साथ इंटरैक्ट करने वाले अनजान यूज़र के धन तक पहुंच की अनुमति देते हैं। अक्सर ऐसे प्लेटफ़ॉर्म भविष्य में थोड़ी मात्रा में गैस बचाने के प्रयास के लिए उपयोगकर्ता से **असीमित संख्या में टोकन** खर्च करने की अनुमति मांगते हैं, लेकिन इससे खतरा बढ़ जाता है। + +एक बार जब किसी प्लेटफ़ॉर्म को आपके वॉलेट पर टोकन तक असीमित पहुंच का अधिकार मिल जाता है, तो वे उन सभी टोकन को खर्च कर सकते हैं, भले ही आपने उनके प्लेटफ़ॉर्म से अपने वॉलेट में अपना धन निकाल लिया हो। दुर्भावनापूर्ण लोगों के पास अब भी आपके फ़ंड का ऐक्सेस हो सकता है और वे उन्हें अपने वॉलेट में निकाल सकते हैं और आपके पास रिफ़ंड का कोई विकल्प नहीं होगा। + +एकमात्र सुरक्षा यह है कि अप्रयुक्त नये प्रोजेक्ट का इस्तेमाल करने से बचें, केवल वही स्वीकृत करें जिसकी आपको आवश्यकता है, या नियमित रूप से ऐक्सेस रद्द कर दें। तो, आप ऐसा कैसे कर सकते हैं? + +## चरण 1: रिवोक एक्सेस टूल का इस्तेमाल करें + +कई वेबसाइटें आपको आपके पते से जुड़े स्मार्ट अनुबंधों को देखने और रद्द करने की सुविधा देती हैं। वेबसाइट पर जाएं और अपना वॉलेट कनेक्ट करें: + +- [इथअलावेंस](https://ethallowance.com/) (इथेरियम) +- [इथरस्कैन](https://etherscan.io/tokenapprovalchecker) (इथेरियम) +- [कॉइनटूल](https://cointool.app/approve/eth) (मल्टीपल नेटवर्क) +- [निरस्त करें](https://revoke.cash/) (मल्टीपल नेटवर्क) +- [अनरेक्ट](https://app.unrekt.net/) (मल्टीपल नेटवर्क) +- [EverRevoke](https://everrise.com/everrevoke/) (मल्टीपल नेटवर्क) + +## चरण 2: अपना वॉलेट कनेक्ट करें + +जब आप वेबसाइट पर आ जाएं, तो "कनेक्ट वॉलेट" पर क्लिक करें। वेबसाइट आपको अपना वॉलेट कनेक्ट करने के लिए कहेगी। + +सुनिश्चित करें कि आप अपने वॉलेट और वेबसाइट में समान नेटवर्क का इस्तेमाल कर रहे हैं। आप केवल चयनित नेटवर्क से संबंधित स्मार्ट अनुबंध देखेंगे। उदाहरण के लिए, अगर आप इथेरियम मेननेट से जुड़ते हैं, तो आप केवल इथेरियम अनुबंध देखेंगे, पॉलीगॉन जैसी अन्य चेन के अनुबंध नहीं। + +## चरण 3: उस स्मार्ट अनुबंध का चयन करें जिसे आप रद्द करना चाहते हैं + +आप उन सभी अनुबंधों को देख पाएंगे जिन्हें आपके टोकन और उनकी खर्च सीमा तक ऐक्सेस की अनुमति है। जिसे आप ख़त्म करना चाहते हैं उसे ढूंढें। + +अगर आप नहीं जानते कि कौन सा अनुबंध चुनना है, तो आप उन सभी को रद्द कर सकते हैं। इससे आपके लिए कोई समस्या पैदा नहीं होगी, लेकिन अगली बार जब आप इनमें से किसी भी अनुबंध के साथ बातचीत करेंगे, तो आपको अनुमतियों का एक नया सेट देना होगा। + +## चरण 4: अपने फंड तक पहुंच रद्द करें + +जब आप रिवोक पर क्लिक करेंगे, तो आपको अपने वॉलेट में एक नया लेनदेन सुझाव दिखाई देगा। यह अपेक्षित है। रद्दीकरण सफल होने के लिए आपको शुल्क का भुगतान करना होगा। नेटवर्क के आधार पर इसे संसाधित होने में एक मिनट से लेकर कई मिनट तक का समय लग सकता है। + +हम आपको सलाह देते हैं कि कुछ मिनटों के बाद रद्द करने वाले टूल को रीफ्रेश करें और अपने वॉलेट को दोबारा जांचने के लिए कनेक्ट करें कि क्या रद्द किया गया अनुबंध सूची से गायब हो गया है। + +हमारी सलाह है कि आप कभी भी प्रोजेक्ट को अपने टोकन तक असीमित पहुंच की अनुमति न दें और सभी टोकन भत्ते की पहुंच को नियमित रूप से रद्द कर दें। टोकन पहुंच रद्द करने से कभी भी धन की हानि नहीं होनी चाहिए, खासकर अगर आप ऊपर सूचीबद्ध टूल का इस्तेमाल करते हैं। + +
    + + +
    और अधिक सीखना चाहते है?
    + + हमारी अन्य गाइडें देखें + +
    + +## अक्सर पूछे जाने वाले सवाल + +### क्या टोकन पहुंच रद्द करने से स्टेकिंग, पूलिंग, उधार आदि भी समाप्त हो जाते हैं? + +नहीं, यह आपकी किसी भी DeFi रणनीति को प्रभावित नहीं करेगा। आप अपने पद पर बने रहेंगे और पुरस्कार आदि पाते रहेंगे। + +### क्या किसी प्रोजेक्ट से वॉलेट को डिस्कनेक्ट करना मेरे फंड के इस्तेमाल की अनुमति को हटाने के समान है? + +नहीं, अगर आप अपने वॉलेट को प्रोजेक्ट से अलग कर देते हैं, लेकिन आपने टोकन भत्ते की अनुमति दे दी है, तो वे अभी भी उन टोकन का इस्तेमाल कर सकते हैं। आपको वह ऐक्सेस रद्द करनी होगी। + +### अनुबंध की अनुमति कब खत्म होगी? + +अनुबंध अनुमतियों पर कोई समाप्ति तिथि नहीं है। अगर आप अनुबंध की अनुमति देते हैं, तो उनका इस्तेमाल अनुमति दिए जाने के वर्षों बाद भी किया जा सकता है। + +### प्रोजेक्ट असीमित टोकन भत्ता क्यों निर्धारित करते हैं? + +प्रोजेक्ट अक्सर आवश्यक अनुरोधों की संख्या को कम करने के लिए ऐसा करते हैं, जिसका अर्थ है कि यूज़र को केवल एक बार अनुमोदन करना होगा और लेनदेन शुल्क का भुगतान केवल एक बार करना होगा। सुविधाजनक होते हुए भी, उन साइटों पर लापरवाही से अनुमोदन करना उपयोगकर्ताओं के लिए खतरनाक हो सकता है जो समय के साथ सिद्ध नहीं हुई हैं या ऑडिट नहीं की गई हैं। कुछ वॉलेट आपको अपने जोखिम को सीमित करने के लिए स्वीकृत किए जाने वाले टोकन की मात्रा को मैन्युअल रूप से प्रतिबंधित करने की अनुमति देते हैं। अधिक जानकारी के लिए अपने वॉलेट प्रोवाइडर से संपर्क करें। diff --git a/src/content/translations/hi/guides/how-to-swap-tokens/index.md b/src/content/translations/hi/guides/how-to-swap-tokens/index.md new file mode 100644 index 00000000000..7a72006acbf --- /dev/null +++ b/src/content/translations/hi/guides/how-to-swap-tokens/index.md @@ -0,0 +1,67 @@ +--- +title: टोकन कैसे स्वैप करें +description: इथेरियम पर टोकन कैसे स्वैप करें, इस पर मार्गदर्शन। +lang: hi +--- + +# टोकन कैसे स्वैप करें + +क्या आप ऐसे एक्सचेंज की खोज करते-करते थक गए हैं जो आपकी सभी पसंदीदा टोकन सूचीबद्ध करता है? आप विकेन्द्रीकृत एक्सचेंजों का इस्तेमाल करके अधिकांश टोकन स्वैप कर सकते हैं। + +एक टोकन स्वैप में इथेरियम नेटवर्क पर मौजूद दो अलग-अलग संपत्तियों का आदान-प्रदान शामिल होता है, जैसे कि DAI (एक ERC-20 टोकन) के लिए ETH की अदला-बदली। यह प्रक्रिया बहुत तेज और सस्ती है। टोकन स्वैप करने के लिए आपके पास एक क्रिप्टो वॉलेट होना जरूरी है। + +**पूर्वावश्यकता:** + +- अगर आपके पास क्रिप्टो वॉलेट है, तो आप इस ट्यूटोरियल का अनुसरण कर सकते हैं: [कैसे करें: इथेरियम खाता "रजिस्टर" करें](/guides/how-to-register-an-ethereum-account/) +- अपने वॉलेट में धनराशि जोड़ें + +## 1. अपने वॉलेट को अपनी पसंद के विकेन्द्रीकृत एक्सचेंज (DEX) से कनेक्ट करें + +कुछ लोकप्रिय एक्सचेंज हैं: + +- [Uniswap](https://app.uniswap.org/#/swap) +- [सुशीस्वैप](https://www.sushi.com/swap) +- [1Inch](https://app.1inch.io/#/1/unified/swap/ETH/DAI) +- [कर्व](https://curve.fi/#/ethereum/swap) + +अगर आप इस बारे में ज़्यादा जानना चाहते हैं कि DeFi क्या है और ये नए प्रकार के एक्सचेंज कैसे काम करते हैं, तो हम [कर्नेल लाइब्रेरी](https://library.kernel.community/Topic+-+DeFi/Topic+-+DeFi) का सुझाव देते हैं। + +## २ टोकन की वह जोड़ी चुनें जिसे आप स्वैप करना चाहते हैं + +उदाहरण के लिए, ETH और DAI। सुनिश्चित करें कि आपके पास दो टोकन में से एक में धनराशि है। ![स्वैपिंग के लिए सामान्य इंटरफ़ेस](./swap1.png) + +## ३ आप जिस टोकन का ट्रे़ड करना चाहते हैं उसकी मात्रा दर्ज करें और स्वैप पर क्लिक करें + +एक्सचेंज स्वचालित रूप से गणना करेगा कि आपको कितने टोकन मिलेंगे। + +![स्वैपिंग के लिए सामान्य इंटरफ़ेस](./swap2.png) + +## 4. लेन-देन की पुष्टि करें + +लेन-देन के विवरण की समीक्षा करें। अप्रिय आश्चर्य से बचने के लिए विनिमय दर और किसी भी अन्य शुल्क की जांच करें। + +![लेन-देन की समीक्षा के लिए सामान्य इंटरफ़ेस](./swap3.png) + +## 5. लेन-देन प्रोसेस होने तक इंतज़ार करें + +आप किसी भी ब्लॉकचेन एक्सप्लोरर पर लेनदेन की प्रगति देख सकते हैं। इस प्रक्रिया में 10 मिनट से अधिक समय नहीं लगना चाहिए। + +लेन-देन संसाधित होने के बाद आपको अपने आप ही स्वैप किए गए टोकन आपके वॉलेट में प्राप्त हो जाएंगे। +
    + + +
    और अधिक सीखना चाहते है?
    + + हमारी अन्य गाइडें देखें + +
    + +## अक्सर पूछे जाने वाले सवाल + +### क्या मैं अपने वॉलेट से ETH को BTC से बदल सकते हैं? + +नहीं, आप केवल उन टोकन की अदला-बदली कर सकते हैं जो इथेरियम नेटवर्क के बारे में जानते हैं, जैसे ETH, ERC-20 टोकन या NFT। आप केवल Bitcoin के "रैप्ड" रूपों को स्वैप कर सकते हैं जो इथेरियम में होते हैं। + +### स्लिपेज क्या है? + +यह आपकी अपेक्षित विनिमय दर और वास्तविक दर के बीच का अंतर है। diff --git a/src/content/translations/hi/guides/how-to-use-a-bridge/index.md b/src/content/translations/hi/guides/how-to-use-a-bridge/index.md new file mode 100644 index 00000000000..0fca466d617 --- /dev/null +++ b/src/content/translations/hi/guides/how-to-use-a-bridge/index.md @@ -0,0 +1,70 @@ +--- +title: टोकन को दूसरी परत से कैसे जोड़े +description: एक गाइड जिसमें बताया गया है कि ब्रिज का इस्तेमाल करके टोकन को इथेरियम से लेयर 2 तक कैसे ले जा सकते हैं। +lang: hi +--- + +# टोकन को दूसरी परत से कैसे जोड़े + +अगर इथेरियम पर बहुत ज्यादा ट्रैफिक हो, तो यह महंगा हो सकता है। इसका एक समाधान नई "लेयरें" बनाना है: यानी अलग-अलग नेटवर्क जो इथेरियम के समान तरीकों से काम करते हैं। ये तथाकथित लेयर 2s कम शुल्क पर कई अधिक लेन-देन को संसाधित करके और समय-समय पर केवल इनके परिणाम को इथेरियम पर संग्रहीत करके इथेरियम पर भीड़ और लागत को कम करने में मदद करते हैं। इस प्रकार, ये लेयर 2s हमें तेज़ गति और कम लागत के साथ लेनदेन करने में सक्षम बनाती हैं। इन लाभों के कारण कई लोकप्रिय क्रिप्टो प्रोजेक्ट लेयर 2s इस्तेमाल करना शुरू कर रहे हैं। इथेरियम से लेयर 2 तक टोकन ले जाने का सबसे सरल तरीका ब्रिज का इस्तेमाल करना है। + +**पूर्वावश्यकता:** + +- अगर आपके पास क्रिप्टो वॉलेट है, तो आप इस ट्यूटोरियल का अनुसरण कर सकते हैं: [कैसे करें: इथेरियम खाता "रजिस्टर" करें](/guides/how-to-register-an-ethereum-account/) +- अपने वॉलेट में धनराशि जोड़ें + +## 1. निर्धारित करें कि आप किस लेयर 2 नेटवर्क का इस्तेमाल करना चाहते हैं + +आप हमारे [लेयर 2 पेज](/layer-2/) पर विभिन्न प्रोजेक्ट्स और महत्वपूर्ण लिंक के बारे में अधिक जान सकते हैं। + +## २ चयनित ब्रिज पर जाएं + +कुछ लोकप्रिय लेयर 2s हैं: + +- [Arbitrum ब्रिज](https://bridge.arbitrum.io/?l2ChainId=42161) +- [Optimism ब्रिज](https://app.optimism.io/bridge/deposit) +- [बोबा नेटवर्क ब्रिज](https://gateway.boba.network/) + +## ३ अपने वॉलेट से ब्रिज से जुड़ें + +सुनिश्चित करें कि आपका वॉलेट इथेरियम मेननेट नेटवर्क से जुड़ा है। अगर ऐसा नहीं है, तो वेबसाइट स्वचालित रूप से आपको नेटवर्क स्विच करने के लिए संकेत देगी। + +![टोकन ब्रिजिंग के लिए सामान्य इंटरफ़ेस](./bridge1.png) + +## 4. राशि निर्दिष्ट करें और धनराशि स्थानांतरित करें + +अप्रिय आश्चर्य से बचने के लिए लेयर 2 नेटवर्क पर आपको बदले में मिलने वाली राशि और फीस की समीक्षा करें। + +![टोकन ब्रिजिंग के लिए सामान्य इंटरफ़ेस](./bridge2.png) + +## 5. अपने वॉलेट में लेनदेन की पुष्टि करें + +लेनदेन को संसाधित करने के लिए आपको ETH के रूप में शुल्क का भुगतान करना होगा। + +![टोकन ब्रिजिंग के लिए सामान्य इंटरफ़ेस](./bridge3.png) + +## 6. अपने फंड के स्थानांतरित होने की प्रतीक्षा करें + +इस प्रक्रिया में 10 मिनट से अधिक समय नहीं लगना चाहिए। + +## 7. चयनित लेयर 2 नेटवर्क को अपने वॉलेट में जोड़ें (वैकल्पिक) + +आप नेटवर्क के RPC विवरण खोजने के लिए [chainlist.org](http://chainlist.org) का इस्तेमाल कर सकते हैं। एक बार जब नेटवर्क जुड़ जाता है और लेनदेन समाप्त हो जाता है, तो आपको अपने वॉलेट में टोकन दिखने चाहिए। +
    + + +
    और अधिक सीखना चाहते है?
    + + हमारी अन्य गाइडें देखें + +
    + +## अक्सर पूछे जाने वाले सवाल + +### अगर मेरे फंड एक्सचेंज पर हैं, तो क्या होगा? + +हो सकता है कि आप किसी एक्सचेंज से सीधे कुछ लेयर 2s तक निकासी करने में सक्षम हों। अधिक जानकारी के लिए हमारे [लेयर 2 पेज](/layer-2/) के "लेयर 2 पर जाएँ" अनुभाग देखें। + +### क्या कोई अपने टोकन को L2 पर ब्रिज करने के बाद इथेरियम मेननेट पर वापस जा सकता है? + +हां, आप उसी ब्रिज का इस्तेमाल करके हमेशा अपने फंड को मेननेट पर वापस ले जा सकते हैं। diff --git a/src/content/translations/hi/guides/how-to-use-a-wallet/index.md b/src/content/translations/hi/guides/how-to-use-a-wallet/index.md new file mode 100644 index 00000000000..8c2db9bf9ae --- /dev/null +++ b/src/content/translations/hi/guides/how-to-use-a-wallet/index.md @@ -0,0 +1,88 @@ +--- +title: वॉलेट का उपयोग कैसे करें +description: एक गाइड जिसमें बताया गया है कि कैसे टोकन भेजें, प्राप्त करें और web3 प्रोजेक्ट से जुड़ें। +lang: hi +--- + +# वॉलेट का उपयोग कैसे करें + +वॉलेट के सभी मूलभूत कार्यों को संचालित करना सीखें। अगर आपके पास अभी तक कोई खाता नहीं है, तो हमारा [कैसे करें: एक इथेरियम खाता बनाएं](/guides/how-to-create-an-ethereum-account/) देखें। + +## अपना वॉलेट खोलें + +आपको एक डैशबोर्ड दिखना चाहिए जिसमें शायद आपका बैलेंस दिखाएगा और इसमें टोकन भेजने और प्राप्त करने के लिए बटन होंगे। + +## क्रिप्टोकरेंसी प्राप्त करें + +क्या आप क्रिप्टो अपने वॉलेट में पाना चाहते हैं? + +प्रत्येक इथेरियम खाते का अपना प्राप्त पता होता है जो संख्याओं और अक्षरों का एक अद्वितीय क्रम होता है। यह पता बैंक खाता संख्या की तरह काम करता है। इथेरियम पते हमेशा "0x" से शुरू होते हैं। आप इस पते को किसी के साथ भी साझा कर सकते हैं: ऐसा करना सुरक्षित है। + +आपका पता आपके घर के पते जैसा है: आपको लोगों को बताना होगा कि आपका पता क्या है, ताकि वे आपको ढूंढ सकें। ऐसा करना सुरक्षित है, क्योंकि आप अभी भी अपने बाहर के दरवाज़े को किसी अन्य चाबी से बंद कर सकते हैं जिसे सिर्फ़ आप नियंत्रित करते हैं, ताकि कोई भी अंदर न आ सके, भले ही उन्हें पता हो कि आप कहां रहते हैं। + +जो कोई भी आपको पैसे भेजना चाहता है, आपको उसे अपना सार्वजनिक पता देना होगा। कई वॉलेट ऐप्लिकेशन आपको अपना पता कॉपी करने या आसान इस्तेमाल के लिए स्कैन करने के लिए QR कोड दिखाने की सुविधा देते हैं। किसी भी इथेरियम पते को मैन्युअल रूप से टाइप करने से बचें। इससे आसानी से लेखन संबंधी त्रुटियां हो सकती हैं और धन की हानि हो सकती है। + +अलग-अलग ऐप्स अलग-अलग हो सकते हैं या अलग-अलग भाषा का इस्तेमाल कर सकते हैं, लेकिन अगर आप फंड ट्रांसफर करने का प्रयास कर रहे हैं, तो आपको एक समान प्रक्रिया से गुजरना होगा। + +1. अपना वॉलेट ऐप खोलें। +2. "प्राप्त करें" (या इसी तरह शब्दों वाले विकल्प) पर क्लिक करें। +3. अपने इथेरियम पते को क्लिपबोर्ड पर कॉपी करें। +4. प्रेषक को अपना प्राप्तकर्ता इथेरियम पता दें। + +## क्रिप्टोकरेंसी भेजें + +क्या आप ETH को दूसरे वॉलेट में भेजना चाहेंगे? + +1. अपना वॉलेट ऐप खोलें। +2. प्राप्तकर्ता का पता प्राप्त करें और सुनिश्चित करें कि आप और प्राप्तकर्ता दोनों समान नेटवर्क से जुड़े हैं। +3. प्राप्तकर्ता पता दर्ज करें या अपने कैमरे से एक QR कोड स्कैन करें, ताकि आपको पता मैन्युअल रूप से लिखना न पड़े। +4. अपने वॉलेट में "भेजें" बटन (या इसी तरह शब्द वाले विकल्प) पर क्लिक करें। + +![क्रिप्टो पते के लिए फ़ील्ड भेजें](./send.png) +
    + +5. DAI या USDC जैसी कई संपत्तियां कई नेटवर्क पर मौजूद हैं। क्रिप्टो टोकन स्थानांतरित करते समय, सुनिश्चित करें कि प्राप्तकर्ता और आप एक ही नेटवर्क का इस्तेमाल कर रहे हैं, क्योंकि ये नेटवर्क विनिमेय नहीं हैं। +6. सुनिश्चित करें कि आपके वॉलेट में लेनदेन शुल्क को कवर करने के लिए पर्याप्त ETH है, जो नेटवर्क स्थितियों के आधार पर अलग होता है। अधिकांश वॉलेट स्वचालित रूप से सुझाए गए शुल्क को लेनदेन में जोड़ देंगे जिसकी आप पुष्टि कर सकते हैं। +7. एक बार आपका लेनदेन संसाधित हो जाने पर, संबंधित क्रिप्टो राशि प्राप्तकर्ता के खाते में दिखाई देगी। वर्तमान में नेटवर्क का कितना इस्तेमाल किया जा रहा है, इसके आधार पर इसमें कुछ सेकंड से लेकर कुछ मिनट तक का समय लग सकता है। + +## प्रोजेक्ट से जुड़ना + +आपका पता सभी इथेरियम प्रॉजेक्टों में समान होगा। आपको किसी भी प्रॉजेक्ट पर व्यक्तिगत रूप से पंजीकरण करने की आवश्यकता नहीं है। अगर आपके पास वॉलेट है, तो आप बिना किसी अतिरिक्त जानकारी के किसी भी इथेरियम प्रॉजेक्ट से जुड़ सकते हैं। ईमेल या किसी अन्य व्यक्तिगत जानकारी की आवश्यकता नहीं है। + +1. किसी भी प्रोजेक्ट की वेबसाइट पर जाएं। +2. अगर प्रॉजेक्ट का लैंडिंग पेज प्रॉजेक्ट का केवल एक स्थिर विवरण है, तो आप मेन्यू में "ऐप खोलें" बटन पर क्लिक कर सकते हैं जो आपको वास्तविक वेब ऐप पर ले जाएगा। +3. जब आप ऐप में हैं, तो "कनेक्ट" पर क्लिक करें + +![बटन जो उपयोगकर्ता को वॉलेट के साथ वेबसाइट से जुड़ने की अनुमति देता है](./connect1.png) + +4. दिए गए विकल्पों की सूची से अपना वॉलेट चुनें। अगर आप अपना वॉलेट नहीं देख पा रहे हैं, तो यह "WalletConnect" विकल्प के अंतर्गत छिपा हो सकता है। + +![कनेक्ट करने के लिए वॉलेट की सूची में से चयन करना](./connect2.png) + +5. कनेक्शन स्थापित करने के लिए अपने वॉलेट में हस्ताक्षर अनुरोध की पुष्टि करें। **इस संदेश पर हस्ताक्षर करने के लिए कोई ETH खर्च करने की आवश्यकता नहीं होनी चाहिए**। +6. बस इतना ही! ऐप का इस्तेमाल शुरू करें। आपको हमारे [dApps पेज](/dapps/#explore) पर कुछ दिलचस्प प्रोजेक्ट मिल सकते हैं।
    + + +
    और अधिक सीखना चाहते है?
    + + हमारी अन्य गाइडें देखें + +
    + +## अक्सर पूछे जाने वाले सवाल + +### अगर मैं ETH पते का मालिक हूं, क्या मैं दूसरी ब्लॉकचेन पर भी समान पते का मालिक हूं? + +आप सभी EVM संगत ब्लॉकचेन पर एक ही पते का इस्तेमाल कर सकते हैं (अगर आपके पास रिकवरी वाक्यांश के साथ वॉलेट का प्रकार है)। यह [सूची](https://chainlist.org/) आपको दिखाएगी कि आप समान पते के साथ और कौन सी ब्लॉकचेन का इस्तेमाल कर सकते है। कुछ ब्लॉकचैन, जैसे Bitcoin, नेटवर्क नियमो का पूरा अलग सेट लागू करते है और आपको अलग पता प्रारूप के साथ अलग पते की ज़रूरत होगी। अगर आपके पास स्मार्ट अनुबंध का वॉलेट है, ब्लॉकचेन का समर्थन करने वाले प्रॉडक्ट के बारे में अधिक जानकारी के लिए आपको उसकी प्रॉडक्ट वेबसाइट देखनी चाहिए। + +### क्या एक ही पते का इस्तेमाल कई उपकरणों पर किया जा सकता है? + +हां, आप एक ही पते का इस्तेमाल मल्टीपल डिवाइस पर कर सकते हैं। वॉलेट तकनीकी रूप से आपको अपना बैलेंस दिखाने और लेनदेन करने के लिए केवल एक इंटरफ़ेस है, आपका खाता वॉलेट के अंदर स्टोर नहीं होता, बल्कि ब्लॉकचेन पर होता है। + +### मुझे क्रिप्टो प्राप्त नहीं हुआ है, हम लेनदेन की स्थिति कहां देख सकते हैं? + +वास्तविक समय में किसी भी लेनदेन की स्थिति देखने के लिए आप [ब्लॉक एक्सप्लोरर](/developers/docs/data-and-analytics/block-explorers/) का इस्तेमाल कर सकते हैं। आपको बस अपना वॉलेट पता या लेनदेन की ID खोजना है। + +### क्या मैं लेनदेन रद्द या वापस कर सकता हूँ? + +नहीं, एक बार लेन-देन की पुष्टि हो जाने पर, आप लेन-देन रद्द नहीं कर सकते। diff --git a/src/content/translations/hi/guides/index.md b/src/content/translations/hi/guides/index.md new file mode 100644 index 00000000000..0526756e518 --- /dev/null +++ b/src/content/translations/hi/guides/index.md @@ -0,0 +1,27 @@ +--- +title: इथेरियम गाइड +description: शुरुआती लोगों के लिए इथेरियम का इस्तेमाल करने की मूल बातें समझाने वाली व्यावहारिक गाइडों का एक संग्रह। +lang: hi +--- + +# इथेरियम गाइड + +क्या आप अपनी इथेरियम यात्रा शुरू करना चाहते हैं? हमारी व्यावहारिक गाइड आपको शुरुआत में कदम-दर-कदम मार्गदर्शन करती है और इस नई प्रौद्योगिकी को नेविगेट करना आसान बनाती है। + +## चलो शूरू करे + +1. [इथेरियम खाते को कैसे "बनाएं"](/guides/how-to-create-an-ethereum-account/) - कोई भी मुफ्त में एक वॉलेट बना सकता है। यह गाइड आपको शुरुआत में मार्गदर्शन करेगी। + +2. [वॉलेट का इस्तेमाल कैसे करें](/guides/how-to-use-a-wallet/) - किसी भी वॉलेट की मौलिक सुविधाओं का परिचय और उन्हें कैसे इस्तेमाल करें। + +## सुरक्षा की मूल बातें + +1. [अपने क्रिप्टो धन के प्रति स्मार्ट अनुबंध पहुंच को कैसे रद्द करें](/guides/how-to-revoke-token-access/) - अगर आपके वॉलेट में अचानक कोई ऐसा लेनदेन दिखे जो आपने नहीं किया, तो यह गाइड आपको बताएगी कि फिर से ऐसा होने से कैसे रोकें। + +2. [घोटाले वाले टोकन को कैसे पहचानें](/guides/how-to-id-scam-tokens/) - घोटाले वाले टोकन क्या हैं, वे खुद को वैध कैसे दिखाते हैं और खुद को सुरक्षित रखने और धोखाधड़ी से बचने के लिए उन्हें कैसे पहचानें। + +## इथेरियम का इस्तेमाल करना + +1. [टोकन को लेयर 2 से कैसे जोड़ें](/guides/how-to-use-a-bridge/) - क्या इथेरियम लेनदेन बहुत महंगे हैं? लेयर 2s वाले इथेरियम स्केलिंग समाधान पर जाने पर विचार करें। + +2. [टोकन कैसे बदलें](/guides/how-to-swap-tokens/) - क्या आप अपने टोकन को एक अलग टोकन के लिए बदलना चाहते हैं? यह साधारण गाइड आपको बताएगी कि ऐसा कैसे करें। diff --git a/src/content/translations/hi/security/index.md b/src/content/translations/hi/security/index.md new file mode 100644 index 00000000000..3c3b1f16d99 --- /dev/null +++ b/src/content/translations/hi/security/index.md @@ -0,0 +1,292 @@ +--- +title: Ethereum सुरक्षा और धोखाधड़ी से रोकथाम +description: इथेरियम पर सुरक्षित रहना +lang: hi +--- + +# Ethereum सुरक्षा और धोखाधड़ी से रोकथाम {#introduction} + +क्रिप्टोकरेंसी में बढ़ती रुचि के साथ, क्रिप्टोकरेंसी का उपयोग करते समय सर्वश्रेष्ठ विधि सीखना आवश्यक है। क्रिप्टो मज़ेदार और रोमांचक हो सकता है, लेकिन इसमें खतरे भी हैं। यदि आप थोड़ी मात्रा में अग्रिम प्रयास करते हैं, तो आप इन जोखिमों को कम कर सकते हैं। + + + +## वेब सुरक्षा 101 {#web-security} + +### कठिन पासवर्ड का प्रयोग करें {#use-strong-passwords} + +[80% से अधिक खाते हैक कमजोर या चोरी हुए पासवर्ड के कारण होते हैं](https://cloudnine.com/ediscoverydaily/electronic-discovery/80-percent-hacking-related-breaches-related-password-issues-cybersecurity-trends/)। अक्षरों, संख्याओं और प्रतीकों का एक लंबा संयोजन आपके खातों को सुरक्षित रखने के लिए सबसे अच्छा है। + +दो से तीन सामान्य, संबंधित शब्दों के संयोजन का उपयोग करना एक सामान्य गलती है। [डिक्शनरी अटैक](https://wikipedia.org/wiki/Dictionary_attack) नाम के साधारण हैकिंग तकनीक के कारण ऐसे पासवर्ड असुरक्षित होते है। + +```md +कमजोर पासवर्ड का उदाहरण: CuteFluffyKittens! + +मजबूत पासवर्ड का उदाहरण: ymv\*azu.EAC8eyp8umf +``` + +एक और आम गलती ऐसे पासवर्ड का उपयोग करना है जिसका आसानी से अनुमान लगाया जा सकता है या [सोशल इंजीनियरिंग]() के माध्यम से पता लगाया जा सकता है। आपके पासवर्ड में आपकी मां का विवाहपूर्व नाम, आपके बच्चों या पालतू जानवरों के नाम, या जन्मतिथि शामिल करना सुरक्षित नहीं है और इससे आपके पासवर्ड के हैक होने का खतरा बढ़ जाता है। + +#### अच्छे पासवर्ड अभ्यास: {#good-password-practices} + +- पासवर्ड इतना लम्बा बनाएं जितना आपके पासवर्ड जेनरेटर या आपके द्वारा भरे जा रहे फॉर्म द्वारा अनुमति दी गई है +- बड़े अक्षर, छोटे अक्षर, संख्याओं और प्रतीकों के मिश्रण का उपयोग करें +- अपने पासवर्ड में व्यक्तिगत विवरण, जैसे परिवार के नाम, का उपयोग न करें +- आम शब्दकोश शब्दों का प्रयोग न करे + +[मजबूत पासवर्ड बनाने के बारे में अधिक जानकारी](https://terranovasecurity.com/how-to-create-a-strong-password-in-7-easy-steps/) + +### हर चीज़ के लिए अनोखे पासवर्ड का उपयोग करें {#use-unique-passwords} + +यदि डेटा उल्लंघन में पासवर्ड का पता चलता है तो एक मजबूत पासवर्ड उतनी सुरक्षा प्रदान नहीं करता है। वेबसाइट [Have I Been Pwned](https://haveibeenpwned.com) आपको यह जांचने की अनुमति देती है कि क्या आपके खाते उनके डेटाबेस में संग्रहीत किसी डेटा उल्लंघन में शामिल थे। यदि उनके पास है, तो आपको **तुरंत पासवर्ड बदल देना चाहिए**। प्रत्येक खाते के लिए अनोखा पासवर्ड का उपयोग करने से आपके किसी एक पासवर्ड के साथ छेड़छाड़ होने पर हैकर्स द्वारा आपके सभी खातों तक पहुंच प्राप्त करने का जोखिम कम हो जाता है। + +### पासवर्ड मैनेजर का उपयोग करें {#use-password-manager} + + +
    + पासवर्ड मैनेजर मजबूत, अनोखा पासवर्ड बनाने और उन्हें याद रखने का ध्यान रखता है! हम एक का उपयोग करने की सिफारिश करते हैं और उनमें से अधिकांश निःशुल्क हैं! +
    +
    + +आपके पास मौजूद हर खाते के लिए मजबूत, अनोखा पासवर्ड याद रखना आसान नहीं है। एक पासवर्ड मैनेजर आपके सभी पासवर्डों के लिए एक सुरक्षित, एन्क्रिप्टेड स्टोर प्रदान करता है जिसे आप एक मजबूत मास्टर पासवर्ड के माध्यम से एक्सेस कर सकते हैं। किसी नई सेवा के लिए साइन अप करते समय वे मजबूत पासवर्ड का भी सुझाव देते हैं, ताकि आपको अपना पासवर्ड न बनाना पड़े। कई पासवर्ड मैनेजर आपको यह भी बताएंगे कि क्या आप डेटा उल्लंघन में शामिल हैं, जिससे आप किसी भी हमले से पहले पासवर्ड बदल सकते हैं। + +![पासवर्ड मैनेजर उपयोग करने का उदाहरण](./passwordManager.png) + +#### एक पासवर्ड मैनेजर चुने: {#try-password-manager} + +- [Bitwarden](https://bitwarden.com/) +- [KeyPass](https://keepass.info/) +- [1Password](https://1password.com/) +- या अन्य [अनुशंसित पासवर्ड मैनेजर](https://www.privacytools.io/secure-password-manager) देखें + +### दो कारक प्रमाणीकरण का प्रयोग करे {#two-factor-authentication} + +अपनी पहचान साबित करने के लिए, विभिन्न अनोखे प्रमाण हैं जिनका उपयोग प्रमाणीकरण के लिए किया जा सकता है। इन्हें **फैक्टर** के रूप में जाना जाता है और यह हैं तीन मुख्य फैक्टर: + +- कुछ ऐसा जो आप जानते हों (जैसे पासवर्ड या सुरक्षा प्रश्न) +- कुछ ऐसा जो आप हैं (जैसे फ़िंगरप्रिंट या आईरिस/फ़ेशियल स्कैनर) +- कुछ ऐसा जो आपके पास है (एक सुरक्षा कुंजी या आपके फ़ोन पर प्रमाणीकरण ऐप) + +**टू-फैक्टर ऑथेंटिकेशन (2FA)** का उपयोग आपके ऑनलाइन खातों के लिए एक अतिरिक्त *सुरक्षा कारक* प्रदान करता है ताकि किसी खाते तक पहुंचने के लिए केवल आपका पासवर्ड जानना (कुछ ऐसा जो आप जानते हैं) पर्याप्त न हो। अक्सर, दूसरा कारक एक यादृच्छिक 6-अंकीय कोड होता है, जिसे **समय-आधारित वन-टाइम पासवर्ड (TOTP)** कहते है, जिसे आप Google Authenticator या Authy जैसे प्रमाणीकरण ऐप के माध्यम से प्राप्त कर सकते हैं। ये "कुछ आपके पास है" फैक्टर के रूप में काम करते हैं क्योंकि समयबद्ध कोड उत्पन्न करने वाला सीड आपके डिवाइस पर मौजूद होता है। + + +
    + नोट: SMS-आधारित 2FA का उपयोग करने पर आप  + + SIM जैकिंग + +  का शिकार हो सकते है और यह सुरक्षित नहीं है। सर्वोत्तम सुरक्षा के लिए, {" "} + + Google Authenticator + +  या Authy जैसी सेवा का उपयोग करें। +
    +
    + +#### सुरक्षा कुंजियाँ {#security-keys} + +जो लोग 2FA में आगे जाना चाहते हैं, वे सुरक्षा कुंजी का उपयोग करने पर विचार करें। सुरक्षा कुंजी भौतिक हार्डवेयर प्रमाणीकरण उपकरण हैं जो प्रमाणीकरण कर्ता ऐप्स की तरह ही काम करते हैं। सुरक्षा कुंजी का उपयोग करना 2FA का सबसे सुरक्षित तरीका है। इनमें से कई कुंजियाँ FIDO यूनिवर्सल सेकेंड फैक्टर (U2F) मानक पे काम करती हैं। [FIDO U2F के बारे में अधिक जानें](https://www.yubico.com/authentication-standards/fido-u2f/)। + +2FA पर और देखें: + + + +### ब्राउज़र एक्सटेंशन को अनइंस्टॉल करें {#uninstall-browser-extensions} + +Chrome एक्सटेंशन या Firefox ऐड-ऑन जैसे ब्राउज़र एक्सटेंशन उपयोगी ब्राउज़र कार्यक्षमता को बढ़ा सकते हैं और यूज़र अनुभव में सुधार कर सकते हैं, लेकिन वे जोखिम के साथ आते हैं। डिफ़ॉल्ट रूप से, अधिकांश ब्राउज़र एक्सटेंशन 'साइट डेटा को पढ़ने और बदलने' का ऐक्सेस मांगते हैं, जिससे उन्हें आपके डेटा के साथ लगभग कुछ भी करने की अनुमति मिल जाती है। Chrome एक्सटेंशन हमेशा स्वचालित रूप से अपडेट होते हैं, इसलिए पहले से सुरक्षित एक्सटेंशन दुर्भावनापूर्ण कोड को शामिल करने के लिए बाद में अपडेट हो सकता है। ज्यादातर ब्राउज़र एक्सटेंशन आपका डेटा चुराने का प्रयास नहीं करते, लेकिन आपको पता होना चाहिए कि वे ऐसा कर सकते हैं। + +#### इसके द्वारा सुरक्षित रहें: {#browser-extension-safety} + +- केवल विश्वसनीय स्रोतों से ही ब्राउज़र एक्सटेंशन इंस्टॉल करें +- न इस्तेमाल होने वाले ब्राउज़र एक्सटेंशन को हटा दे +- ऑटो-अपडेट को रोकने के लिए Chrome एक्सटेंशन को स्थानीय रूप से इंस्टॉल करें (उन्नत) + +[ब्राउज़र एक्सटेंशन के जोखिमों के बारे में अधिक जानकारी](https://www.kaspersky.co.uk/blog/browser-extensions-security/12750/) + + + +## क्रिप्टो सुरक्षा 101 {#crypto-security} + +### अपने जानकारी का स्तर बढ़ाएँ {#level-up-your-knowledge} + +सामान्यतः लोगों के साथ क्रिप्टो में धोखाधड़ी होने का सबसे बड़ा कारण इसकी समझ की कमी है। उदाहरण के लिए, यदि आप यह नहीं समझते हैं कि इथेरियम नेटवर्क विकेंद्रीकृत है और इसका स्वामित्व किसी के पास नहीं है, तो ग्राहक सेवा एजेंट होने का दिखावा करने वाले किसी व्यक्ति का शिकार होना आसान है जो आपकी निजी चाबियों के बदले में आपका खोया हुआ ETH वापस करने का वादा करता है। खुद को इथेरियम के कार्य करने के तरीके से शिक्षित करना एक सार्थक निवेश है। + + + इथिरीयम क्या है? + + + + ईथर क्या है? + + + +## वॉलेट की सुरक्षा {#wallet-security} + +### अपनी निजी चाबियाँ कभी न दें {#protect-private-keys} + +**कभी भी, किसी भी कारण से, अपनी निजी चाबियाँ साझा न करें!** + +आपके वॉलेट की निजी चाबी आपके इथेरियम वॉलेट के लिए पासवर्ड के रूप में कार्य करती है। यह एकमात्र चीज़ है जो आपके वॉलेट पता जानने वाले को आपके खाता से उसकी सारी संपत्ति ख़त्म करने से रोकती है! + + + इथेरियम वॉलेट क्या है? + + +#### अपने बीज वाक्यांश/निजी चाबी का स्क्रीनशॉट न लें {#screenshot-private-keys} + +अपने सीड वाक्यांशों या निजी चाबियों का स्क्रीनशॉट लेकर, आप उन्हें क्लाउड में डालते हैं और संभवतः उन तक हैकर्स की पहुँच को आसान बनाने का जोखिम उठाते हैं। क्लाउड से निजी चाबियाँ प्राप्त करना हैकर्स के लिए एक सामान्य आक्रमण वेक्टर है। + +### हार्डवेयर वॉलेट का उपयोग करें {#use-hardware-wallet} + +एक हार्डवेयर वॉलेट निजी चाबियों के लिए ऑफ़लाइन संग्रहण प्रदान करता है। आपकी निजी चाबियाँ संग्रहीत करने के लिए उन्हें सबसे सुरक्षित वॉलेट विकल्प माना जाता है: आपकी निजी चाबी कभी भी इंटरनेट को नहीं छूती है और आपके डिवाइस पर पूरी तरह से स्थानीय रहती है। + +निजी चाबियों को ऑफ़लाइन रखने से हैक होने का जोखिम काफी हद तक कम हो जाता है, भले ही किसी हैकर को आपके कंप्यूटर का नियंत्रण ही क्यूँ ना मिल जाए। + +#### हार्डवेयर वॉलेट आज़माएँ: {#try-hardware-wallet} + +- [Ledger](https://www.ledger.com/) +- [Trezor](https://trezor.io/) + +### लेनदेन करने के पहले दोबारा जांच करें {#double-check-transactions} + +गलती से गलत वॉलेट पता पर क्रिप्टो भेजना एक सामान्य गलती है। **इथेरियम पर भेजा गया लेन-देन इरिवर्सबल होता है।** जब तक आप पता के मालिक को जानते न हों और उन्हें अपना फंड वापस भेजने के लिए मना न सकें, तब तक आपके लिए अपना फंड वापस पाने का कोई रास्ता नहीं होगा। + +लेन-देन भेजने से पहले हमेशा सुनिश्चित करें कि जिस पते पर आप भेज रहे हैं वह वांछित प्राप्तकर्ता के पते से बिल्कुल मेल खाता हो। यह सलाह दी जाती है की स्मार्ट अनुबंध से बातचीत करते समय और हस्ताक्षर करने के पहले लेनदेन संदेश को पढ़ ले। + +### स्मार्ट अनुबंध की व्यय सीमा निर्धारित करें {#spend-limits} + +स्मार्ट अनुबंध के साथ बातचीत करते समय, असीमित खर्च सीमा की अनुमति न दें। असीमित खर्च स्मार्ट अनुबंध को आपके वॉलेट को खाली करने में सक्षम बना सकता है। इसके बजाय, खर्च सीमा केवल लेन-देन के लिए आवश्यक राशि तक ही सेट करें। + +कई इथेरियम वॉलेट खातों के ख़त्म होने से बचाने के लिए सीमा सुरक्षा प्रदान करते हैं। + +[अपने क्रिप्टो कोष के लिए स्मार्ट अनुबंध के प्रवेश को कैसे रद्द करें](/guides/how-to-revoke-token-access/) + + + +## सामान्य घोटाले {#common-scams} + +घोटालेबाज हमेशा आपकी धनराशि हड़पने के तरीके ढूंढते रहते हैं। घोटालेबाजों को पूरी तरह से रोकना असंभव है, लेकिन हम इस्तेमाल की जाने वाली ज्यादातर तकनीकों के बारे में जागरूक होकर उन्हें कम प्रभावी बना सकते हैं। इन घोटालों के कई रूप हैं, लेकिन सामान्यतः वे समान उच्च-स्तरीय पैटर्न को ही पालन करते हैं। यदि और कुछ नहीं, तो भी ये याद रखें: + +- हमेशा संदेहशील रहें +- कोई भी आपको मुफ़्त में या छूठ के साथ ETH नहीं देगा +- किसी को भी आपकी निजी चाबी या व्यक्तिगत जानकारी तक पहुंच की आवश्यकता नहीं है + +### उपहार का छलावा {#giveaway} + +क्रिप्टोकरेंसी में सबसे आम घोटालों में से एक उपहार का घोटाला है। उपहार के घोटाले के कई रूप हैं, लेकिन सबसे सामान्य आधार यह है की अगर आप दिए गए वॉलेट पते पर ETH भेजते हैं तो आपको दुगना ETH वापस मिलेगा। *इसी कारण से इसे 2-फॉर-1 घोटाले के रूप में भी जाना जाता है।* + +ये घोटाले आमतौर पर सीमित समय का झांसा देकर और उपहार पाने की आस में लोगो को तत्कालीन तौर पर ख़राब निर्णय लेने पर विवश कर देते हैं। + +#### सोशल मीडिया हैक {#social-media-hacks} + +इसका एक उच्च-प्रोफाइल रूप जुलाई 2020 में हुआ, जब प्रमुख हस्तियों और संगठनों के Twitter खाते हैक हो गए। हैकर ने साथ ही हैक किए गए खातों पर एक Bitcoin उपहार भी पोस्ट किया। हालाँकि भ्रामक करने वाले ट्वीट्स पर तुरंत ध्यान दिया गया और उन्हें हटाया गया, फिर भी हैकर्स 11 bitcoin (या सितंबर 2021 तक $500,000) लेकर भागने में कामयाब रहे। + +![Twitter पर घोटाला](./appleTwitterScam.png) + +#### प्रसिद्ध व्यक्ति द्वारा उपहार {#celebrity-giveaway} + +प्रसिद्ध व्यक्तियो द्वारा उपहार वितरण घोटाले का एक और सामान्य रूप है। स्कैमर्स किसी सेलिब्रिटी का रिकॉर्ड किया गया वीडियो इंटरव्यू या कॉन्फ्रेंस टॉक को लेकर उसे YouTube पर लाइवस्ट्रीम करेंगे - जिससे ऐसा प्रतीत होगा जैसे कि सेलिब्रिटी एक क्रिप्टोकरेंसी उपहार का समर्थन करते हुए लाइव वीडियो इंटरव्यू दे रहा हो। + +इस घोटाले में विटालिक ब्यूटेरिन का सबसे अधिक उपयोग किया जाता है, लेकिन क्रिप्टो में शामिल कई अन्य प्रमुख लोगों का भी उपयोग होता है (उदाहरण के लिए एलोन मस्क या चार्ल्स हॉकिंसन)। एक जाने-माने व्यक्ति को शामिल करने से घोटालेबाजों के लाइवस्ट्रीम की वैधता का एहसास होता है (यह अधूरा लगता है, लेकिन विटालिक शामिल है, इसलिए यह ठीक होना चाहिए!)। + +**उपहार हमेशा घोटाले होते हैं। यदि आप इन खातों में अपनी धनराशि भेजते हैं, तो आप उन्हें हमेशा के लिए खो देंगे।** + +![YouTube पर घोटाला](./youtubeScam.png) + +### समर्थन का घोटाला {#support-scams} + +क्रिप्टोकरेंसी अन्य तकनीकों की तुलना में एक नई और गलत समझी जाने वाली तकनीक है। इसका फायदा उठाने वाला एक आम घोटाला समर्थन घोटाला है, जहां घोटालेबाज लोकप्रिय वॉलेट, एक्सचेंज या ब्लॉकचेन के लिए समर्थन कर्मियों का रूप धारण करेंगे। + +इथेरियम के बारे में अधिकांश चर्चा Discord पर होती है। समर्थन घोटालेबाज आम तौर पर डिस्कॉर्ड के सार्वजनिक चैनलों में समर्थन प्रश्नों की खोज करके और फिर प्रश्न पूछने वाले को समर्थन करते हुए एक निजी सन्देश भेजकर अपना लक्ष्य ढूंढ लेंगे। विश्वास कायम करके, समर्थन घोटालेबाज आपकी निजी चाबियाँ प्रकट करने या आपके धन को उनके वॉलेट में भेजने के लिए आपको बरगलाने का प्रयास करते हैं। + +![Discord पर समर्थन घोटाला](./discordScam.png) + +एक सामान्य नियमानुसार, कर्मचारी कभी भी निजी, अनौपचारिक चैनलों के माध्यम से आपसे संवाद नहीं करेंगे। समर्थन लेते वक़्त ध्यान रखने योग्य कुछ सरल बातें: + +- अपनी निजी कुंजियाँ, बीज वाक्यांश या पासवर्ड कभी भी साझा न करें +- कभी भी किसी को अपने कंप्यूटर का रिमोट एक्सेस न दें +- किसी संगठन के नामांकित चैनलों के बाहर कभी भी संवाद न करें + + +
    + सावधान रहें: हालाँकि समर्थन-शैली के घोटाले आम तौर पर Discord पर होते हैं, वे ईमेल सहित किसी भी चैट एप्लीकेशन पर भी प्रचलित हो सकते हैं जहां क्रिप्टो चर्चा होती है। +
    +
    + +### 'Eth2' टोकन घोटाला {#eth2-token-scam} + +[मर्ज](/roadmap/merge/) की आड़ में, स्कैमर्स ने 'Eth2' शब्द के आसपास भ्रम का फायदा उठाया और उपयोगकर्ताओं को 'ETH2' टोकन के लिए अपने ETH को भुनाने की कोशिश की। 'ETH2' जैसा कुछ नहीं है, और मर्ज के साथ कोई अन्य वैध टोकन पेश नहीं किया गया था। जो ETH, मर्ज से पहले आपके पास था, वही ETH अब भी है। **खाते में प्रूफ-ऑफ-वर्क से प्रूफ-ऑफ-स्टेक में स्विच करने के लिए आपके ETH से संबंधित कोई भी बदलाव करने की आवश्यकता नहीं है**। + +घोटालेबाज "समर्थक" के रूप में प्रकट होते हैं, जो आपको बताते हैं कि यदि आप अपना ETH जमा करते हैं, तो आपको 'ETH2' वापस मिल जाएगा। जबकि यहाँ कोई [आधिकारिक इथेरियम समर्थक](/community/support/) नहीं है और न ही कोई नया टोकन है। अपना वॉलेट बीज वाक्यांश कभी भी किसी के साथ साझा न करें। + +_नोट: ऐसे व्युत्पन्न टोकन/टिकर हैं जो स्टेक किए गए ETH (यानी Rocket Pool से rETH, Lido से stETH, Coinbase से ETH2) का प्रतिनिधित्व कर सकते हैं, लेकिन ये कुछ ऐसी चीजें नहीं हैं जिनकी आपको "माइग्रेट" करने की आवश्यकता है।_ + +### फिशिंग घोटाले {#phishing-scams} + +फ़िशिंग घोटाले एक बढ़ते हुए सामान्य घोटाले है जिसका उपयोग घोटालेबाज आपके वॉलेट के धन को चुराने के प्रयास में करते हैं। + +कुछ फ़िशिंग ईमेल उपयोगकर्ताओं को उन लिंक पर क्लिक करने के लिए कहते हैं जो उन्हें नकली वेबसाइटों पर पुनः निर्देशित करेंगे, और उन्हें अपना बीज वाक्यांश दर्ज करने, पासवर्ड रीसेट करने या ETH भेजने के लिए कहेंगे। अन्य आपसे आपके कंप्यूटर को संक्रमित करने और घोटालेबाजों को आपके कंप्यूटर की फ़ाइलों तक पहुंच प्रदान करने के लिए अनजाने में मैलवेयर इंस्टॉल करने के लिए कह सकते हैं। + +यदि आपको किसी अज्ञात प्रेषक से ईमेल प्राप्त होता है, तो याद रखें: + +- जिन ईमेल पतों को आप नहीं पहचानते, उनसे आए किसी लिंक या अटैचमेंट को कभी न खोलें +- कभी भी अपनी निजी जानकारी या पासवर्ड किसी को न बताएं +- अज्ञात प्रेषकों द्वारा भेजे गए ईमेल हटा दें + +[फ़िशिंग घोटालों से बचने के बारे में और अधिक जानकारी](https://support.mycrypto.com/staying-safe/mycrypto-protips-how-not-to-get-scammed-during-ico) + +### क्रिप्टो ट्रेडिंग ब्रोकर घोटाले {#broker-scams} + +स्कैम क्रिप्टो ट्रेडिंग ब्रोकर, विशेषज्ञ क्रिप्टोकरेंसी ब्रोकर होने का दावा करते हैं, जो आपका पैसा लेने और आपकी ओर से निवेश करने की पेशकश करेंगे। आमतौर पर इस ऑफर में अवास्तविक रिटर्न के वादे भी होते हैं। घोटालेबाज को आपका धन प्राप्त होने के बाद, वे आपसे और अधिक धन भेजने के लिए कह सकते हैं, ताकि आप आगे के निवेश लाभ से न चूकें, या वे पूरी तरह से गायब हो सकते हैं। + +ये धोखेबाज ब्रोकर YouTube पर नकली खातों का उपयोग करके ब्रोकर के बारे में स्वाभाविक बातचीत शुरू करके अपना लक्ष्य ढूंढते हैं। वैधता बढ़ाने के लिए इन वार्तालापों को अक्सर अत्यधिक अपवोट किया जाता है, लेकिन ये सभी अपवोट बॉट खातों से होते हैं। + +**इंटरनेट पर अजनबियों पर अपनी ओर से निवेश करने के लिए भरोसा न करें। आप अपना क्रिप्टो खो देंगे।** + +![YouTube पर ट्रेडिंग ब्रोकर घोटाला](./brokerScam.png) + +### क्रिप्टो माईनिंग पूल घोटाले {#mining-pool-scams} + +सितंबर 2022 से, इथेरियम पर माईनिंग अब संभव नहीं है। हालाँकि, माईनिंग पूल घोटाले अभी भी मौजूद हैं। माईनिंग पूल घोटालों में ऐसे लोग शामिल होते हैं जो आपसे अनचाहे संपर्क करते हैं और दावा करते हैं कि आप इथेरियम माईनिंग पूल में शामिल होकर बड़ा रिटर्न कमा सकते हैं। घोटालेबाज दावा करेगा और चाहे जितना समय लगे, आपके संपर्क में रहेगा। मूल रूप से, घोटालेबाज आपको समझाने की कोशिश करेगा कि जब आप इथेरियम माईनिंग पूल में शामिल होंगे, तो आपकी क्रिप्टोकरेंसी का उपयोग ETH बनाने के लिए किया जाएगा और आपको ETH के रूप में लाभांश का भुगतान किया जाएगा। अंततः, आप देखेंगे कि आपकी क्रिप्टोकरेंसी छोटे रिटर्न दे रही है। यह बस आपको अधिक निवेश करने हेतु प्रेरित करने के लिए होता है। अंततः, आपकी सारी धनराशि एक अज्ञात पते पर भेज दी जाएगी, और घोटालेबाज या तो गायब हो जाएगा या कुछ मामलों में संपर्क में रहना जारी रखेगा, जैसा कि हाल के एक मामले में हुआ है। + +मूल बात यह है कि उन लोगों से सावधान रहें जो सोशल मीडिया पर आपसे संपर्क करके माईनिंग पूल का हिस्सा बनने के लिए कहते हैं। यदि आप अपना क्रिप्टो खो देते हैं, तो इसे पुनर्प्राप्त नहीं किया जा सकता है। + +याद रखने योग्य कुछ बातें: + +- अपने क्रिप्टो से पैसे कमाने के तरीकों के बारे में आपसे संपर्क करने वाले किसी भी व्यक्ति से सावधान रहें +- स्टेकिंग, तरलता पूल, या अपने क्रिप्टो निवेश के अन्य तरीकों के बारे में अपना शोध करें +- शायद ही कभी, ऐसी योजनाएँ वैध होती हैं। यदि वे होते, तो संभवतः वे मुख्यधारा में होते और आपने उनके बारे में सुना होता। + +[माईनिंग पूल घोटाले में एक आदमी को 200k डॉलर का नुकसान हुआ](https://www.reddit.com/r/CoinBase/comments/r0qe0e/scam_or_possible_incredible_payout/) + +### एयरड्रॉप घोटाले {#airdrop-scams} + +एयरड्रॉप घोटालों में एक घोटाला प्रोजेक्ट शामिल होता है जो आपके वॉलेट में एक संपत्ति (NFT, टोकन) को एयरड्रॉप करता है और आपको एयरड्रॉप संपत्ति का दावा करने के लिए एक घोटाला वेबसाइट पर भेजता है। दावा करने का प्रयास करते समय आपको अपने इथेरियम वॉलेट से साइन इन करने और लेनदेन को "अनुमोदित" करने के लिए कहा जाएगा। यह लेन-देन आपकी सार्वजनिक और निजी चाबियाँ घोटालेबाज को भेजकर आपके खाते से समझौता करता है। इस घोटाले का एक वैकल्पिक रूप यह हो सकता है कि आप एक लेनदेन की पुष्टि करें जो घोटालेबाज के खाते में धनराशि भेजता है। + +[एयरड्रॉप घोटालों पर अधिक जानकारी](https://www.youtube.com/watch?v=LLL_nQp1lGk) + + + +## अग्रिम पठन {#further-reading} + +### वेब सुरक्षा {#reading-web-security} + +- [यही कारण है कि आपको दो कारक प्रमाणीकरण के लिए टेक्स्ट का उपयोग नहीं करना चाहिए](https://www.theverge.com/2017/9/18/16328172/sms-two-factor-authentication-hack-password-bitcoin) - _The Verge_ +- [मैलवेयर-युक्त Chrome और Edge ऐड-ऑन से 3 मिलियन तक डिवाइस संक्रमित हुए](https://arstechnica.com/information-technology/2020/12/up-to-3-million-devices-infected-by-malware-laced-chrome-and-edge-add-ons/) - _डैन गुडिन_ +- [एक मजबूत पासवर्ड कैसे बनाएं - जिसे आप भूलेंगे नहीं](https://www.avg.com/en/signal/how-to-create-a-strong-password-that-you-wont-forget) - _AVG_ +- [सुरक्षा चाबी क्या है?](https://help.coinbase.com/en/coinbase/getting-started/verify-my-account/security-keys-faq) - _Coinbase_ + +### क्रिप्टो सुरक्षा {#reading-crypto-security} + +- [अपनी और अपने धन की सुरक्षा](https://support.mycrypto.com/staying-safe/protecting-yourself-and-your-funds) - _MyCrypto_ +- [क्रिप्टो में सुरक्षित रहने के 4 तरीके](https://www.coindesk.com/tech/2021/04/20/4-ways-to-stay-safe-in-crypto/) - _CoinDesk_ +- [डमी और स्मार्ट लोगों के लिए भी सुरक्षा गाइड](https://medium.com/mycrypto/mycryptos-security-guide-for-dummies-and-smart-people-too-ab178299c82e) - _MyCrypto_ +- [क्रिप्टो सुरक्षा: पासवर्ड और प्रमाणीकरण](https://www.youtube.com/watch?v=m8jlnZuV1i4) - _एंड्रियास एम. एंटोनोपोलोस_ + +### घोटाला शिक्षा {#reading-scam-education} + +- [गाइड: घोटाले वाले टोकन की पहचान कैसे करें](/guides/how-to-id-scam-tokens/) +- [सुरक्षित रहना: सामान्य घोटाले](https://support.mycrypto.com/staying-safe/common-scams) - _MyCrypto_ +- [घोटालों से बचना](https://bitcoin.org/en/scams) - _Bitcoin.org_ +- [सामान्य क्रिप्टो फ़िशिंग ईमेल और संदेशों पर Twitter थ्रेड](https://twitter.com/tayvano_/status/1516225457640787969) - _टेलर मोनाहन_ + + diff --git a/src/content/translations/hi/staking/dvt/index.md b/src/content/translations/hi/staking/dvt/index.md new file mode 100644 index 00000000000..9e2ba99930f --- /dev/null +++ b/src/content/translations/hi/staking/dvt/index.md @@ -0,0 +1,91 @@ +--- +title: वितरित सत्यापनकर्ता प्रौद्योगिकी +description: वितरित सत्यापनकर्ता तकनीक कई पार्टियों द्वारा इथेरियम सत्यापनकर्ता के वितरित संचालन को सक्षम बनाती है। +lang: hi +--- + +# वितरित सत्यापनकर्ता प्रौद्योगिकी {#distributed-validator-technology} + +वितरित सत्यापनकर्ता प्रौद्योगिकी (DVT) सत्यापनकर्ता सुरक्षा के लिए एक दृष्टिकोण है जो विफलता के एकल बिंदुओं को कम करने और सत्यापनकर्ता के लचीलेपन को बढ़ाने के लिए प्रमुख प्रबंधन और कई पक्षों में हस्ताक्षर करने की जिम्मेदारियों को फैलाता है। + +यह इसे **निजी कुंजी को विभाजित करके** करता है जो एक सत्यापनकर्ता को सुरक्षित करने के लिए उपयोग होती है, **कई कंप्यूटरों के बीच** जो "क्लस्टर" में व्यवस्थित किए जाते है। इसका लाभ यह है कि इससे हमलावरों को कुंजी तक पहुँचना बहुत मुश्किल हो जाता है, क्योंकि यह किसी एकल मशीन पर पूरी तरह से संग्रहित नहीं होती है। यह कुछ नोड्स को ऑफ़लाइन जाने की भी अनुमति देता है, क्योंकि आवश्यक हस्ताक्षर प्रत्येक क्लस्टर में मशीनों के सबसेट द्वारा किए जा सकते हैं। यह नेटवर्क से विफलता के एकल बिंदुओं को कम करता है और संपूर्ण सत्यापनकर्ता सेट को अधिक मजबूत बनाता है। + +![एक आरेख दिखाता है कि कैसे एक एकल सत्यापनकर्ता कुंजी को प्रमुख शेयरों में विभाजित किया जाता है और अलग-अलग घटकों के साथ कई नोड्स में वितरित किया जाता है।](./dvt-cluster.png) + +## हमें DVT की आवश्यकता क्यों है? {#why-do-we-need-dvt} + +### सुरक्षा {#security} + +सत्यापनकर्ता दो सार्वजनिक-निजी चाबी के जोड़े उत्पन्न करते हैं: आम सहमति में भाग लेने के लिए सत्यापनकर्ता चाबी और धन तक पहुंचने के लिए निकासी चाबी। जबकि सत्यापनकर्ता कोल्ड भंडारण में निकासी चाबी सुरक्षित कर सकते हैं, सत्यापनकर्ता निजी चाबी 24/7 ऑनलाइन होनी चाहिए। यदि सत्यापनकर्ता की निजी चाबी से छेड़छाड़ की जाती है, तो एक हमलावर सत्यापनकर्ता को नियंत्रित कर सकता है, जिससे संभावित रूप से हितधारक के ETH में कटौती या हानि हो सकती है। DVT इस जोखिम को कम करने में मदद कर सकता है। यहाँ है कैसे: + +DVT का उपयोग करके, स्टेकर सत्यापनकर्ता की निजी चाबी को कोल्ड भंडारण में रखते हुए स्टेकिंग में भाग ले सकते हैं। इसे मूल, पूर्ण सत्यापनकर्ता चाबी को एन्क्रिप्ट करके और फिर इसे प्रमुख शेयरों में विभाजित करके प्राप्त किया जाता है। प्रमुख शेयर ऑनलाइन रहते हैं और कई नोड्स में वितरित किए जाते हैं जो सत्यापनकर्ता के वितरित संचालन को सक्षम करते हैं। यह संभव है क्योंकि इथेरियम सत्यापनकर्ता BLS हस्ताक्षरों का उपयोग करते हैं जो योगात्मक होते हैं, अर्थात् पूर्ण चाबी को उनके घटक हिस्सों को जोड़कर पुनर्निर्मित किया जा सकता है। इससे स्टेकर को पूरी, मूल 'मास्टर' सत्यापनकर्ता चाबी को सुरक्षित तरीके से ऑफलाइन रखने की स्वीकृति होती है। + +### विफलता का एक भी बिंदु नहीं {#no-single-point-of-failure} + +जब एक सत्यापनकर्ता को कई ऑपरेटरों और कई मशीनों में विभाजित किया जाता है, तो यह व्यक्तिगत हार्डवेयर और सॉफ़्टवेयर विफलताओं का सामना कर सकता है बिना ऑफ़लाइन हुए। क्लस्टर में नोड्स में विविध हार्डवेयर और सॉफ़्टवेयर कॉन्फ़िगरेशन का उपयोग करके विफलताओं के जोखिम को भी कम किया जा सकता है। यह सहनशीलता एकल-नोड सत्यापनकर्ता विन्यासों के लिए उपलब्ध नहीं है - यह DVT लेयर से आता है। + +यदि क्लस्टर में मशीन के घटकों में से एक खराब हो जाता है (उदाहरण के लिए, यदि सत्यापनकर्ता क्लस्टर में चार ऑपरेटर हैं और एक विशिष्ट क्लाइंट का उपयोग करने वाले एक ऑपरेटर में एक बग होता है), तो अन्य यह सुनिश्चित करते हैं कि सत्यापनकर्ता चलता रहे। + +### विकेन्द्रीकरण {#decentralization} + +इथेरियम के लिए आदर्श परिदृश्य यह है कि जितना संभव हो उतने स्वतंत्र रूप से संचालित सत्यापनकर्ता हों। हालाँकि, कुछ स्टेकिंग प्रदाता बहुत लोकप्रिय हो गए हैं और नेटवर्क पर कुल स्टेक्ड ETH के एक बड़े हिस्से के लिए जिम्मेदार हैं। DVT हिस्सेदारी के विकेंद्रीकरण को संरक्षित करते हुए इन ऑपरेटरों को अस्तित्व में रहने की अनुमति दे सकता है। ऐसा इसलिए है क्योंकि प्रत्येक सत्यापनकर्ता की चाबियां कई मशीनों में वितरित की जाती हैं और सत्यापनकर्ता को दुर्भावनापूर्ण बनाने के लिए अधिक सांगठनिक योजना की जरूरत होगी। + +DVT के बिना, स्टेकिंग प्रदाताओं के लिए अपने सभी सत्यापनकर्ताओं के लिए केवल एक या दो क्लाइंट विन्यासों का समर्थन करना आसान होता है, जिससे क्लाइंट बग का प्रभाव बढ़ जाता है। DVT का उपयोग विभिन्न क्लाइंट विन्यासों और विभिन्न हार्डवेयर के बीच जोखिम को फैलाने और विविधता के माध्यम से सहनशीलता बनाने के लिए किया जा सकता है। + +**DVT इथेरियम को निम्नलिखित लाभ प्रदान करता है:** + +1. इथेरियम के हिस्सेदारी के सबूत की सहमति का **विकेंद्रीकरण** +2. नेटवर्क की **जीवनता** की सुनिश्चितता करता है +3. सत्यापनकर्ता **दोष सहनशीलता** बनाता है +4. **विश्वास न्यूनतम** सत्यापनकर्ता ऑपरेशन +5. **स्लैशिंग** और डाउनटाइम के जोखिम को कम करता है +6. **विविधता को बेहतर बनाता है** (क्लाइंट, डेटा सेंटर, स्थान, विनियमन आदि) +7. सत्यापनकर्ता चाबी प्रबंधन की **उन्नत सुरक्षा** + +## DVT कैसे काम करता है? {#how-does-dvt-work} + +एक DVT समाधान में निम्नलिखित घटक शामिल होते हैं: + +- **[शमीर का सीक्रेट शेयरिंग](https://medium.com/@keylesstech/a-beginners-guide-to-shamir-s-secret-sharing-e864efbf3648)** - सत्यापनकर्ता [BLS चाबी](https://en.wikipedia.org/wiki/BLS_digital_signature) का उपयोग करते हैं। व्यक्तिगत BLS "चाबी शेयर" ("चाबी शेयर") को एक एकीकृत चाबी (हस्ताक्षर) में जोड़ा जा सकता है। DVT में, एक सत्यापनकर्ता के लिए निजी चाबी क्लस्टर में प्रत्येक ऑपरेटर का संयुक्त BLS हस्ताक्षर है। +- **[सीमांत हस्ताक्षर योजना](https://medium.com/nethermind-eth/threshold-signature-schemes-36f40bc42aca)** - हस्ताक्षर करने के लिए आवश्यक व्यक्तिगत चाबी शेयरों की संख्या की निर्धारण करती है, उदाहरण के लिए, 4 में से 3। +- **[वितरित कुंजी पीढ़ी (DKG)](https://medium.com/toruslabs/what-distributed-key-generation-is-866adc79620)** - क्रिप्टोग्राफ़िक प्रक्रिया जो चाबी शेयर उत्पन्न करती है और क्लस्टर में नोड्स में मौजूदा या नई सत्यापनकर्ता चाबी के शेयर वितरित करने के लिए उपयोग की जाती है। +- **[बहुपक्ष गणना (MPC)](https://messari.io/report/applying-multiparty-computation-to-the-world-of-blockchains)** - बहुपक्ष गणना का उपयोग करके पूरी सत्यापनकर्ता कुंजी को गुप्त रूप से उत्पन्न किया जाता है। पूरी चाबी किसी व्यक्तिगत ऑपरेटर को कभी भी नहीं पता चलती है—उन्हें केवल अपने हिस्से (उनके "शेयर") का पता होता है। +- **सहमति प्रोटोकॉल** - सहमति प्रोटोकॉल एक नोड को ब्लॉक प्रस्तावक बनाने के लिए चुनता है। वे अन्य क्लस्टर में नोडों के साथ ब्लॉक साझा करते हैं, जो अपनी चाबी से शेयर्स को सकल हस्ताक्षर में जोड़ते हैं। जब पर्याप्त चाबी के शेयर्स को सकल किया जाता है, तो इथेरियम पर ब्लॉक प्रस्तावित किया जाता है। + +वितरित सत्यापनकर्ताओं के अंतर्गत फॉल्ट सहनशीलता होती है और यदि कुछ व्यक्तिगत नोड ऑफलाइन हो जाएं तो भी वे चलते रह सकते हैं। इसका मतलब यह है कि क्लस्टर सहनशील है, भले ही उसके भीतर के कुछ नोड दुर्भावनापूर्ण या आलसी हों। + +## DVT उपयोग के मामले {#dvt-use-cases} + +DVT व्यापक स्टेकिंग उद्योग के लिए महत्वपूर्ण प्रभाव डालता है: + +### एकल स्टेकर्स {#solo-stakers} + +DVT आपको पूरी चाबी को पूरी तरह से ऑफ़लाइन रखते हुए अपनी सत्यापनकर्ता चाबी को दूरस्थ नोड्स में वितरित करने की अनुमति देकर गैर-संरक्षित स्टेकिंग को भी सक्षम बनाता है। इसका मतलब है कि घर में स्थित स्टेकर्स को आवश्यकता नहीं होती है कि वे हार्डवेयर के लिए पैसे बहाएं, जबकि चाबी शेयरों को वितरित करने से उन्हें संभावित हैक के खिलाफ मजबूत करने में मदद मिल सकती है। + +### Staking as a service (SaaS) {#saas} + +ऑपरेटर्स (जैसे स्टेकिंग पूल और संस्थागत स्टेकर्स) जो कई सत्यापनकर्ताओं को प्रबंधित करते हैं, वे DVT का उपयोग अपने जोखिम को कम करने के लिए कर सकते हैं। अपने बुनियादी ढांचे को वितरित करके, वे अपने संचालन में अतिरेक जोड़ सकते हैं और उनके द्वारा उपयोग किए जाने वाले हार्डवेयर के प्रकारों में विविधता ला सकते हैं। + +DVT कई नोड्स में प्रमुख प्रबंधन के लिए जिम्मेदारी साझा करता है, जिसका अर्थ है कि कुछ परिचालन लागत भी साझा की जा सकती है। DVT प्रदाताओं को लेने के लिए परिचालन जोखिम और बीमा लागत को भी कम कर सकता है। + +### Staking pools {#staking-pools} + +मानक सत्यापनकर्ता सेटअप के कारण, स्टेकिंग पूल और लिक्विड स्टेकिंग प्रदाताओं को एकल-ऑपरेटर विश्वास के अलग-अलग स्तर रखने के लिए मजबूर किया जाता है क्योंकि पूरे पूल में लाभ और हानि का सामाजिकरण किया जाता है। वे हस्ताक्षर कुंजी की सुरक्षा के लिए ऑपरेटरों पर भी निर्भर हैं क्योंकि, अब तक, उनके लिए कोई अन्य विकल्प नहीं है। + +भले ही पारंपरिक रूप से कई ऑपरेटरों में हिस्सेदारी वितरित करके जोखिम फैलाने के प्रयास किए जाते हैं, फिर भी प्रत्येक ऑपरेटर स्वतंत्र रूप से एक महत्वपूर्ण हिस्सेदारी का प्रबंधन करता है। एक ही ऑपरेटर पर भरोसा करना बहुत जोखिम पैदा करता है यदि वे खराब प्रदर्शन करते हैं, डाउनटाइम का सामना करते हैं, समझौता करते हैं, या दुर्भावनापूर्ण रूप से कार्य करते हैं। + +DVT का लाभ उठाकर, ऑपरेटरों से आवश्यक विश्वास काफी कम हो जाता है। **पूल ऑपरेटरों को सत्यापनकर्ता कुंजी की हिरासत की आवश्यकता के बिना हिस्सेदारी रखने में सक्षम कर सकते हैं** (जैसा कि केवल प्रमुख शेयरों का उपयोग किया जाता है)। यह प्रबंधित हिस्सेदारी को अधिक ऑपरेटरों के बीच वितरित करने की अनुमति देता है (उदाहरण के लिए, 1000 सत्यापनकर्ताओं का प्रबंधन करने वाले एकल ऑपरेटर के बजाय, DVT उन सत्यापनकर्ताओं को सामूहिक रूप से कई ऑपरेटरों द्वारा चलाए जाने में सक्षम बनाता है)। विविध ऑपरेटर कॉन्फ़िगरेशन यह सुनिश्चित करेंगे कि यदि एक ऑपरेटर नीचे जायेगा, तो अन्य अभी भी सत्यापित करने में सक्षम होंगे। इसके परिणामस्वरूप अतिरेक और विविधीकरण होता है जो पुरस्कारों को अधिकतम करते हुए बेहतर प्रदर्शन और लचीलापन की ओर जाता है। + +एकल-ऑपरेटर विश्वास को कम करने का एक और लाभ यह है कि स्टेकिंग पूल से अधिक खुली और अनुमति रहित ऑपरेटर भागीदारी की अनुमति मिल सकती है। ऐसा करके, सेवाएं अपने जोखिम को कम कर सकती हैं और ऑपरेटरों के क्यूरेटेड और अनुमति रहित सेट दोनों का उपयोग करके इथेरियम विकेंद्रीकरण का समर्थन कर सकती हैं, उदाहरण के लिए, बड़े स्टेकिंग लोगों के साथ घर के या अधिक छोटे हितधारकों को जोड़कर। + +## DVT का उपयोग करने की संभावित कमियां {#potential-drawbacks-of-using-dvt} + +- **अतिरिक्त घटक** - DVT नोड पेश करना एक और हिस्सा जोड़ता है जो संभवतः दोषपूर्ण या कमजोर हो सकता है। इसे कम करने का एक तरीका DVT नोड के कई कार्यान्वयन के लिए प्रयास करना है, जिसका अर्थ है कई DVT क्लाइंट (इसी तरह आम सहमति और निष्पादन परतों के लिए कई क्लाइंट हैं)। +- **परिचालन लागत** - जैसा कि DVT कई पार्टियों के बीच सत्यापनकर्ता वितरित करता है, केवल एक नोड के बजाय संचालन के लिए अधिक नोड्स की आवश्यकता होती है, जो बढ़ी हुई परिचालन लागत का परिचय देती है। +- **संभावित रूप से बढ़ी हुई विलंबता** - चूंकि DVT एक सत्यापनकर्ता का संचालन करने वाले कई नोड्स के बीच आम सहमति प्राप्त करने के लिए एक आम सहमति प्रोटोकॉल का उपयोग करता है, इसलिए यह संभावित रूप से बढ़ी हुई विलंबता पेश कर सकता है। + +## अग्रिम पठन {#further-reading} + +- [इथेरियम वितरित सत्यापनकर्ता विनिर्देश (उच्च स्तर)](https://github.com/ethereum/distributed-validator-specs) +- [इथेरियम वितरित सत्यापनकर्ता तकनीकी विनिर्देश](https://github.com/ethereum/distributed-validator-specs/tree/dev/src/dvspec) +- [शमीर सीक्रेट शेयरिंग डेमो ऐप](https://iancoleman.io/shamir/) diff --git a/src/content/translations/hi/staking/pools/index.md b/src/content/translations/hi/staking/pools/index.md new file mode 100644 index 00000000000..d731aabadab --- /dev/null +++ b/src/content/translations/hi/staking/pools/index.md @@ -0,0 +1,85 @@ +--- +title: जमा हुआ दाव +description: पूल किए गए ETH स्टेकिंग के साथ शुरुआत करने के तरीके का अवलोकन +lang: hi +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-pool.png +alt: लेस्ली राइनो पूल में तैर रहा है। +sidebarDepth: 2 +summaryPoints: + - दूसरों के साथ जुड़कर ETH की किसी भी राशि के साथ दांव लगाएं और पुरस्कार अर्जित करें + - कठिन भाग को छोड़ें और सत्यापनकर्ता कार्रवाई को किसी तृतीय-पक्ष को सौंपें + - अपने स्वयं के वॉलेट में स्टेकिंग टोकन रखें +--- + +## स्टेकिंग पूल क्या हैं? {#what-are-staking-pools} + +स्टेकिंग पूल एक सहयोगी दृष्टिकोण है जो कम ETH वाले लोगों को सत्यापनकर्ता कुंजी के एक सेट बनाने के लिए ज़रूरी 32 ETH प्राप्त करने की अनुमति देता है। पूलिंग कार्यक्षमता प्रोटोकॉल के भीतर मूल रूप से समर्थित नहीं है, इसलिए इस आवश्यकता को पूरा करने के लिए समाधान अलग से बनाए गए थे। + +कुछ पूल स्मार्ट अनुबंधों का उपयोग करके संचालित होते हैं, जहां धन को एक अनुबंध में जमा किया जा सकता है, जो बिना विश्वास है और आपकी हिस्सेदारी को ट्रैक करता है, और आपको एक टोकन जारी करता है जो इस मूल्य का प्रतिनिधित्व करता है। हो सकता है कि अन्य पूल में स्मार्ट अनुबंध शामिल न हों और इसके बजाय ऑफ़-चेन के माध्यम से मध्यस्थता की जाती हो। + +## पूल के माध्यम से स्टेक को लगाएं? {#why-stake-with-a-pool} + +[स्टेकिंग के लिए हमारे परिचय](/staking/) में उल्लिखित लाभों के अलावा, पूल के साथ दांव लगाना कई अलग-अलग लाभों के साथ आता है। + + + + + + + + + +## क्या विचार करना है {#what-to-consider} + +पूल या डेलिगेटेड स्टेकिंग मूल रूप से इथेरियम प्रोटोकॉल द्वारा समर्थित नहीं है, लेकिन उपयोगकर्ताओं के लिए 32 ETH से कम हिस्सेदारी की मांग को देखते हुए इस मांग को पूरा करने के लिए समाधानों की बढ़ती संख्या का निर्माण किया गया है। + +प्रत्येक पूल और उनके द्वारा उपयोग किए जाने वाले उपकरण या स्मार्ट अनुबंध विभिन्न टीमों द्वारा बनाए गए हैं, और प्रत्येक लाभ और जोखिमों के साथ आता है। पूल करने से उपयोगकर्ता अपने ETH को स्टेक किए गए ETH का प्रतिनिधित्व करने वाले टोकन के साथ अदला-बदली कर सकते है। टोकन उपयोगी है, क्योंकि यह उपयोगकर्ताओं को ETH की किसी भी राशि को उपज-असर टोकन की बराबर राशि में अदला-बदली करने की अनुमति देता है जो विकेन्द्रीकृत एक्सचेंजों पर अंतर्निहित दांव वाले ETH (और इसके विपरीत) पर लागू स्टेकिंग पुरस्कारों से वापसी उत्पन्न करता है, भले ही वास्तविक ETH आम सहमति परत पर दांव लगा रहता है। इसका मतलब है कि उपज-असर वाले स्टेक-ETH उत्पाद से आगे और पीछे अदला-बदली करें और "रॉ ETH" त्वरित, आसान है और न केवल 32 ETH के गुणकों में उपलब्ध है। + +हालाँकि, ये स्टेक किए गए ETH टोकन कार्टेल जैसे व्यवहार पैदा करते हैं जहां बड़ी मात्रा में दांव पर लगा ETH कई स्वतंत्र व्यक्तियों में फैलने के बजाय कुछ केंद्रीकृत संगठनों के नियंत्रण में समाप्त होता है। यह सेंसरशिप या मूल्य निष्कर्षण के लिए स्थितियां बनाता है। स्टेकिंग के लिए स्वर्ण मानक हमेशा उन व्यक्तियों को होना चाहिए जो जब भी संभव हो अपने स्वयं के हार्डवेयर पर सत्यापनकर्ता चला रहे हों। + +[टोकन स्टेकिंग के जोखिमों पर और जाने](https://notes.ethereum.org/@djrtwo/risks-of-lsd)। + +विशेषता संकेतकों का उपयोग नीचे सूचीबद्ध स्टॉकिंग पूल की उल्लेखनीय ताकत या कमजोरियों को इंगित करने के लिए किया जाता है। इस अनुभाग का उपयोग इस संदर्भ के रूप में करें कि जब आप शामिल होने के लिए पूल चुन रहे हों, तो हम इन विशेषताओं को कैसे परिभाषित करते हैं। + + + +## स्टेकिंग पूल को एक्सप्लोर करें {#explore-staking-pools} + +आपके सेटअप में आपकी मदद करने के लिए कई प्रकार के विकल्प उपलब्ध हैं। नीचे दिए गए उपकरणों के माध्यम से मार्गदर्शन करने में मदद करने के लिए उपरोक्त संकेतकों का इस्तेमाल करें। + + + + + +कृपया एक ऐसी सेवा चुनने के महत्व पर ध्यान दें जो [क्लाइंट विविधता](/developers/docs/nodes-and-clients/client-diversity/) को गंभीरता से लेती है, क्योंकि यह नेटवर्क की सुरक्षा में सुधार करती है और आपके जोखिम को सीमित करती है। जिन सेवाओं में बहुमत क्लाइंट उपयोग को सीमित करने के सबूत हैं, उन्हें "निष्पादन ग्राहक विविधता" और "सहमति ग्राहक विविधता" के साथ इंगित किया जाता है। + +क्या आपके पास स्टेकिंग टूल के बारे कोई सुझाव है जिसे हम भूल गए हैं? यह देखने के लिए हमारी [उत्पाद लिस्टिंग नीति](/contributing/adding-staking-products/) देखें कि क्या यह एक अच्छा फिट होगा और इसे समीक्षा के लिए सबमिट करें। + +## अक्सर पूछे जाने वाले सवाल {#faq} + + +आम तौर पर ERC -20 स्टेकिंग टोकन हितधारकों को जारी किए जाते हैं जो उनके दांव वाले ETH प्लस पुरस्कारों के मूल्य का प्रतिनिधित्व करते हैं। ध्यान रखें कि विभिन्न पूल अपने उपयोगकर्ताओं को थोड़ा अलग तरीकों से पुरस्कार वितरित करेंगे, लेकिन यह सामान्य विषय है। + + + +अभी! शंघाई/कैपेला नेटवर्क अपग्रेड अप्रैल 2023 में हुआ और स्टेकिंग निकासी की सुविधा शुरू की है। जो सत्यापनकर्ता खाते स्टेकिंग पूल का समर्थन कर रहे हैं, उनके पास अब ETH बाहर निकलने और अपने निर्दिष्ट निकासी पते पर वापस लेने की क्षमता है। यह अंतर्निहित ETH के लिए हिस्सेदारी के अपने हिस्से को स्टेक की क्षमता को सक्षम बनाता है। यह देखने के लिए अपने प्रदाता से संपर्क करें कि वे इस कार्यक्षमता का समर्थन कैसे करते हैं। + +वैकल्पिक रूप से, ERC -20 स्टेकिंग टोकन का उपयोग करने वाले पूल उपयोगकर्ताओं को खुले बाजार में इस टोकन का व्यापार करने की अनुमति देते हैं, जिससे आप अपनी स्टेकिंग स्थिति बेच सकते हैं, वास्तव में ETH को दांव अनुबंध से हटाए बिना प्रभावी रूप से "वापस" ले सकते हैं। + +स्टेकिंग निकासी पर अधिक जानकारी + + + +इन पूल किए गए स्टेकिंग विकल्पों और केंद्रीकृत एक्सचेंजों के बीच कई समानताएं हैं, जैसे कि ETH की छोटी मात्रा को दांव पर लगाने की क्षमता और सत्यापनकर्ताओं को सक्रिय करने के लिए उन्हें एक साथ बंडल करना। + +केंद्रीकृत एक्सचेंजों के विपरीत, कई अन्य पूल किए गए स्टेकिंग विकल्प स्मार्ट अनुबंध और/या स्टेकिंग टोकन का उपयोग करते हैं, जो आमतौर पर ERC -20 टोकन होते हैं जिन्हें आपके स्वयं के वॉलेट में रखा जा सकता है और किसी भी अन्य टोकन की तरह खरीदा या बेचा जा सकता है। यह आपको अपने टोकन पर नियंत्रण देकर संप्रभुता और सुरक्षा की एक लेयर प्रदान करता है, लेकिन फिर भी आपको पृष्ठभूमि में आपकी ओर से सत्यापित सत्यापनकर्ता क्लाइंट पर सीधा नियंत्रण नहीं देता है। + +कुछ पूलिंग विकल्प दूसरों की तुलना में अधिक विकेन्द्रीकृत होते हैं जब उन्हें वापस करने वाले नोड्स की बात आती है। नेटवर्क के स्वास्थ्य और विकेंद्रीकरण को बढ़ावा देने के लिए, हितधारकों को हमेशा एक पूलिंग सेवा का चयन करने के लिए प्रोत्साहित किया जाता है जो नोड ऑपरेटरों के अनुमति रहित विकेन्द्रीकृत सेट को सक्षम बनाता है। + + +## अग्रिम पठन {#further-reading} + +- [रॉकेट पूल के साथ स्टेकिंग - स्टेकिंग ओवरव्यू](https://docs.rocketpool.net/guides/staking/overview.html) - _रॉकेटपूल डॉक्स_ +- [लिडो के साथ इथेरियम स्टेक करें](https://help.lido.fi/en/collections/2947324-staking-ethereum-with-lido) - _लिडो सहायता दस्तावेज_ diff --git a/src/content/translations/hi/staking/saas/index.md b/src/content/translations/hi/staking/saas/index.md new file mode 100644 index 00000000000..5722a818d05 --- /dev/null +++ b/src/content/translations/hi/staking/saas/index.md @@ -0,0 +1,94 @@ +--- +title: एक सेवा के रूप में स्टेकिंग +description: पूल किए गए ETH स्टेकिंग के साथ आरंभ करने का एक सिंहावलोकन +lang: hi +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-saas.png +alt: बादलों में तैरता हुआ राइनो लेस्ली। +sidebarDepth: 2 +summaryPoints: + - तीसरे पक्ष के नोड ऑपरेटर आपके सत्यापनकर्ता क्लाइंट के संचालन को संभालते हैं + - 32 ETH वाले किसी भी व्यक्ति के लिए बढ़िया विकल्प जो नोड चलाने की तकनीकी जटिलता से निपटने में सहज महसूस नहीं करता है + - भरोसा कम करें और अपनी निकासी कुंजियों की सुरक्षा बनाए रखें +--- + +## एक सेवा के रूप में स्टेकिंग क्या है? {#what-is-staking-as-a-service} + +स्टेकिंग एक सेवा के रूप में ("SaaS") ऐसी स्टेकिंग सेवाओं की एक श्रेणी का प्रतिनिधित्व करता है जहां आप एक सत्यापनकर्ता के लिए अपने 32 ETH जमा करते हैं, लेकिन नोड संचालन को आप तीसरे पक्ष के ऑपरेटर को सौंपते हैं। इस प्रक्रिया में आम तौर पर प्रारंभ में सेटअप के माध्यम से मार्गदर्शन किया जाता है, जिसमें कुंजी उत्पन्न करना और जमा करना, फिर ऑपरेटर को अपनी हस्ताक्षर कुंजियां अपलोड करना शामिल है। यह सेवा को आपकी ओर से आपके सत्यापनकर्ता को संचालित करने की अनुमति देती है, आमतौर पर मासिक शुल्क के लिए। + +## किसी सेवा के साथ स्टेकिंग क्यों? {#why-stake-with-a-service} + +इथेरियम प्रोटोकॉल मूल रूप से स्टेकिंग के प्रतिनिधित्व का समर्थन नहीं करता है, इसलिए इस मांग को पूरा करने के लिए इन सेवाओं का निर्माण किया गया है। अगर आपके पास 32 ETH स्टेक करने के लिए है, लेकिन आप हार्डवेयर से निपटने में सहज महसूस नहीं करते हैं, SaaS सेवाएं आपको कठिन भाग को सौंपने की अनुमति देती हैं जबकि आप मूल ब्लॉक पुरस्कार कमा रहे हैं। + + + + + + + + + +## क्या विचार करना है {#what-to-consider} + +आपके ETH को स्टेक करने में मदद करने के लिए SaaS प्रदाताओं की बढ़ती संख्या है, लेकिन उन सभी के अपने-अपने लाभ और जोखिम हैं। सभी SaaS विकल्पों में होम-स्टेकिंग की तुलना में अतिरिक्त विश्वास मान्यताओं की आवश्यकता होती है। Saas विकल्पों में इथेरियम क्लाइंटों को लपेटने वाला अतिरिक्त कोड हो सकता है जो स्वतंत्र या परीक्षण योग्य नहीं है। SaaS का नेटवर्क विकेंद्रीकरण पर भी हानिकारक प्रभाव पड़ता है। सेटअप पर निर्भर करते हुए, आप अपने सत्यापनकर्ता को नियंत्रित नहीं कर सकते - ऑपरेटर आपके ETH का उपयोग करके बेईमानी से कार्य कर सकता है। + +सूचीबद्ध SaaS प्रदाता की उल्लेखनीय शक्तियों या कमज़ोरियों का संकेत देने के लिए नीचे विशेषता संकेतकों का उपयोग किया जाता है। जब आप अपनी स्टेकिंग यात्रा में मदद के लिए कोई सेवा चुन रहे हों, तो इस अनुभाग का उपयोग संदर्भ के रूप में करें कि हम इन विशेषताओं को कैसे परिभाषित करते हैं। + + + +## स्टेकिंग सेवा प्रदाता को एक्सप्लोर करें {#saas-providers} + +नीचे कुछ उपलब्ध SaaS प्रदाता हैं। इन सेवाओं में मार्गदर्शन के लिए ऊपर दिए गए संकेतकों का उपयोग करें + + + +#### SaaS प्रदाता + + + +कृपया ध्यान दें कि [क्लाइंट विविधता](/developers/docs/nodes-and-clients/client-diversity/) का समर्थन महत्वपूर्ण है, क्योंकि यह नेटवर्क की सुरक्षा में सुधार और आपके जोखिम को सीमित करता है। जिन सेवाओं में बहुमत क्लाइंट उपयोग को सीमित करने के सबूत हैं, उन्हें "निष्पादन ग्राहक विविधता" और "सहमति ग्राहक विविधता" के साथ इंगित किया जाता है। + +#### कुंजी जनरेटर + + + +हमसे छूट गए किसी सेवा प्रदाता के रूप में स्टेकिंग के लिए सुझाव है? यह देखने के लिए हमारी [उत्पाद लिस्टिंग नीति](/contributing/adding-staking-products/) देखें कि क्या यह एक अच्छा फिट होगा और इसे समीक्षा के लिए सबमिट करें। + +## अक्सर पूछे जाने वाले सवाल {#faq} + + +विभिन्न प्रदाता-दर-प्रदाता की व्यवस्थाएं अलग-अलग होंगी, लेकिन आम तौर पर आपको किसी भी आवश्यक हस्ताक्षर कुंजी (प्रति 32 ETH में से एक) स्थापित करने और उन्हें आपकी ओर से मान्य करने की अनुमति देने के लिए, अपने प्रदाता पर अपलोड करने के माध्यम से निर्देशित किया जाएगा। अकेले हस्ताक्षर करने वाली कुंजियां आपके धन को निकालने, स्थानांतरित करने या खर्च करने की कोई क्षमता नहीं देती हैं। हालाँकि, वे आम सहमति के लिए मतदान डालने की क्षमता प्रदान करते हैं, जिसे अगर ठीक से नहीं किया गया तो ऑफ़लाइन दंड या कटौती हो सकती है। + + + +हां। प्रत्येक खाते में BLS हस्ताक्षर कुंजी और BLS निकासी कुंजी दोनों शामिल हैं। एक सत्यापनकर्ता के लिए श्रृंखला की स्थिति को प्रमाणित करने, सिंक समितियों में भाग लेने और ब्लॉक प्रस्तावित करने के लिए, सत्यापनकर्ता क्लाइंट द्वारा हस्ताक्षर कुंजी आसानी से पहुंच योग्य होनी चाहिए। ये किसी न किसी रूप में इंटरनेट से जुड़ा होना चाहिए और इसलिए इन्हें स्वाभाविक रूप से "हॉट" कुंजियां माना जाता है। यह आपके सत्यापनकर्ता के लिए एक आवश्यकता है ताकि प्रमाणित किया जा सके, और इस प्रकार सुरक्षा कारणों से धनराशि स्थानांतरित करने या निकालने के लिए उपयोग की जाने वाली कुंजियां अलग हो जाती हैं। + +BLS निकासी कुंजियों का उपयोग एक बार के संदेश पर हस्ताक्षर करने के लिए किया जाता है जो घोषित करता है कि निष्पादन परत खाता स्टेकिंग पुरस्कार और निकासित धनराशि को जाना चाहिए। एक बार जब यह संदेश प्रसारित हो जाता है, तो BLS निकासी कुंजियों की आवश्यकता नहीं रह जाती है। इसके बजाय, निकाली गई धनराशि पर नियंत्रण आपके द्वारा दिए गए पते पर स्थायी रूप से सौंप दिया जाता है। यह आपको अपने स्वयं के कोल्ड भंडारण के माध्यम से सुरक्षित निकासी पता सेट करने की अनुमति देता है, जिससे आपके सत्यापनकर्ता फंड के लिए जोखिम कम हो जाता है, भले ही कोई और आपके सत्यापनकर्ता हस्ताक्षर कुंजी को नियंत्रित करता हो। + +निकासी को सक्षम करने के लिए निकासी प्राधिकृतता को अपडेट करना एक आवश्यक कदम है\*। इस प्रक्रिया में निकासी कुंजियां उत्पन्न करने के लिए आपके नेमोनिक बीज वाक्यांश का उपयोग होता है। + +सुनिश्चित करें कि आप इस बीज वाक्यांश का सुरक्षित बैकअप बनाते हैं, नहीं तो आने वाले समय में आपके निकासी कुंजियां उत्पन्न करने में असमर्थ हो सकते हैं। + +\*जिन स्टेकर्स ने प्रारंभिक जमा के साथ निकासी का पता प्रदान किया है, उन्हें इसे सेट करने की आवश्यकता नहीं है। अपना सत्यापनकर्ता कैसे तैयार करें, इसके संबंध में सहायता के लिए अपने SaaS प्रदाता से संपर्क करें। + + + +अप्रैल 2023 में शंघाई/कैपेला अपग्रेड में स्टेकिंग निकासी लागू की गई थी। स्टेकर्स को एक निकासी पता प्रदान करने की आवश्यकता होती है (अगर प्रारंभिक जमा पर प्रदान नहीं किया गया है), और पुरस्कार भुगतान अपने आप नियमित अंतरालिक आधार पर कुछ दिनों में शुरू हो जाते हैं। + +सत्यापनकर्ता, सत्यापनकर्ता के रूप में भी पूरी तरह से बाहर निकल सकते हैं, जो निकासी के लिए उनके बचे हुए ETH शेष को अनलॉक कर देगा। जिन खातों ने निष्पादन निकासी पता प्रदान किया है और बाहर निकलने की प्रक्रिया पूरी कर ली है, उन्हें अगले सत्यापनकर्ता स्वीप के दौरान प्रदान किए गए निकासी पते पर उनकी पूरी शेष राशि प्राप्त होगी। + +स्टेकिंग निकासी पर अधिक जानकारी + + + +SaaS प्रदाता का उपयोग करके, आप अपने नोड का संचालन किसी और को सौंप रहे हैं। इसके साथ ही खराब नोड प्रदर्शन के जोखिम भी आता है, जो आपके नियंत्रण में नहीं होता है। अगर आपके सत्यापनकर्ता को स्लैश कर दिया जाता है, तो आपके सत्यापनकर्ता बैलेंस पर पेनल्टी लगाई जाएगी और सत्यापनकर्ता पूल से जबरन हटा दिया जाएगा। + +कटौती/बाहर निकलने की प्रक्रिया पूरी होने पर, ये धनराशि सत्यापनकर्ता को दिए गए निकासी पते पर स्थानांतरित कर दी जाएगी। इसे सक्षम करने के लिए निकासी पता प्रदान करना आवश्यक है। यह प्रारंभिक जमा पर प्रदान किया गया हो सकता है। अगर नहीं, तो निकासी पते की घोषणा करने वाले संदेश पर हस्ताक्षर करने के लिए सत्यापनकर्ता निकासी कुंजियों का इस्तेमाल करने की आवश्यकता होगी। अगर कोई निकासी पता प्रदान नहीं किया गया है, तो फंड तब तक लॉक रहेंगे, जब तक पता प्रदान नहीं किया जाता। + +सुरक्षा या बीमा विकल्पों के बारे में अधिक जानकारी और निकासी पता प्रदान करने के निर्देशों के लिए व्यक्तिगत SaaS प्रदाता से संपर्क करें। यदि आप अपने सत्यापनकर्ता सेटअप पर पूर्ण नियंत्रण रखना चाहते हैं, तो अपने ETH को अकेले दांव पर लगाने के तरीके के बारे में अधिक जानें। + + +## अग्रिम पठन {#further-reading} + +- [स्टेकिंग सेवाओं का मूल्यांकन](https://www.attestant.io/posts/evaluating-staking-services/) - _जिम मैकडॉनल्ड 2020_ diff --git a/src/content/translations/hi/staking/solo/index.md b/src/content/translations/hi/staking/solo/index.md new file mode 100644 index 00000000000..df1e7c1f19d --- /dev/null +++ b/src/content/translations/hi/staking/solo/index.md @@ -0,0 +1,203 @@ +--- +title: अकेले अपने ETH को दांव पर लगाएं +description: अपने ETH को अकेले दांव पर लगाना शुरू करने के तरीके का अवलोकन +lang: hi +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-solo.png +alt: लेस्ली राइनो अपने कंप्यूटर चिप पर। +sidebarDepth: 2 +summaryPoints: + - अपने सत्यापनकर्ता को ठीक से काम करने और ऑनलाइन रखने के लिए प्रोटोकॉल से सीधे अधिकतम पुरस्कार प्राप्त करें + - होम हार्डवेयर चलाएं और व्यक्तिगत रूप से इथेरियम नेटवर्क की सुरक्षा और विकेंद्रीकरण में जोड़ें + - विश्वास को हटा दें, और अपने धन की कुंजी का नियंत्रण कभी न छोड़ें +--- + +## सोलो स्टेकिंग क्या है? {#what-is-solo-staking} + +सोलो स्टेकिंग इंटरनेट से जुड़े एक [इथेरियम नोड को चलाने](/run-a-node/) और एक [सत्यापनकर्ता](#faq) को सक्रिय करने के लिए 32 ETH जमा करने का कार्य है, जिससे आपको नेटवर्क आम सहमति में सीधे भाग लेने की क्षमता मिलती है। + +**सोलो स्टेकिंग इथेरियम नेटवर्क के विकेंद्रीकरण को बढ़ाता है**, जिससे इथेरियम हमलों के खिलाफ अधिक सेंसरशिप-प्रतिरोधी और मजबूत हो जाता है। अन्य स्टेकिंग विधियां नेटवर्क को उसी तरह से मदद नहीं कर सकती हैं। इथेरियम को सुरक्षित करने के लिए सोलो स्टेकिंग सबसे अच्छा विकल्प है। + +एक इथेरियम नोड में एक निष्पादन परत (EL) क्लाइंट, साथ ही एक आम सहमति परत (CL) क्लाइंट दोनों होते हैं। ये क्लाइंट ऐसे सॉफ़्टवेयर हैं जो लेनदेन और ब्लॉक को सत्यापित करने, श्रृंखला के सही सिर को सत्यापित करने, एग्रीगेट एटेस्टेशन और ब्लॉक प्रस्तावित करने के लिए हस्ताक्षर कुंजी के एक वैध सेट के साथ एक साथ काम करते हैं। + +सोलो स्टेकर इन क्लाइंट्स को चलाने के लिए आवश्यक हार्डवेयर के संचालन के लिए जिम्मेदार हैं। इसके लिए एक समर्पित मशीन का उपयोग करने की अत्यधिक अनुशंसा की जाती है कि आप घर से काम करें-यह नेटवर्क के स्वास्थ्य के लिए बेहद फायदेमंद है। + +एक एकल हितधारक को अपने सत्यापनकर्ता को ठीक से काम करने और ऑनलाइन रखने के लिए प्रोटोकॉल से सीधे पुरस्कार प्राप्त होते हैं। + +## अकेले स्टेक क्यों करें? {#why-stake-solo} + +सोलो स्टेकिंग अधिक जिम्मेदारी के साथ आता है लेकिन आपको अपने फंड और स्टेकिंग सेटअप पर अधिकतम नियंत्रण प्रदान करता है। + + + + + + + +## सोलो स्टेकिंग से पहले विचाराधीन {#considerations-before-staking-solo} + +जितना हम चाहते हैं कि एकल सोलो स्टेकिंग सभी के लिए सुलभ और जोखिम मुक्त हो, यह वास्तविकता नहीं है। अपने ETH को अकेले दांव पर लगाने का विकल्प चुनने से पहले कुछ व्यावहारिक और गंभीर विचारों को ध्यान में रखना चाहिए। + + + +अपने स्वयं के नोड का संचालन करते समय आपको अपने द्वारा चुने गए सॉफ़्टवेयर का उपयोग करने के तरीके सीखने में कुछ समय बिताना चाहिए। इसमें प्रासंगिक दस्तावेज पढ़ना और उन डेवलपर टीमों के संचार चैनलों से अवगत होना शामिल है। + +जितना अधिक आप उस सॉफ़्टवेयर के बारे में समझते हैं जिसे आप चला रहे हैं और प्रूफ-ऑफ-स्टेक कैसे काम करता है, एक हितधारक के रूप में यह कम जोखिम भरा होगा और नोड ऑपरेटर के रूप में रास्ते में उत्पन्न होने वाली किसी भी समस्या को ठीक करना उतना ही आसान होगा। + + + +नोड सेटअप को कंप्यूटर के साथ काम करते समय एक उचित आराम स्तर की आवश्यकता होती है, हालांकि नए उपकरण समय के साथ इसे आसान बना रहे हैं। कमांड-लाइन इंटरफ़ेस की समझ सहायक है, लेकिन अब सख्ती से आवश्यक नहीं है। + +इसके लिए बहुत बुनियादी हार्डवेयर सेटअप की भी आवश्यकता होती है और न्यूनतम अनुशंसित विशिष्टताओं की कुछ समझ होती है। + + + +जैसे निजी कुंजियाँ आपके इथेरियम पते को सुरक्षित करती हैं, आपको विशेष रूप से अपने सत्यापनकर्ता के लिए कुंजियाँ उत्पन्न करने की आवश्यकता होगी। आपको यह समझना चाहिए कि किसी भी बीज वाक्यांशों या निजी कुंजियों को सुरक्षित कैसे रखा जाए।{' '} + +इथेरियम सुरक्षा और घोटाले की रोकथाम + + + +हार्डवेयर कभी-कभी विफल हो जाता है, नेटवर्क कनेक्शन त्रुटि देते हैं, और क्लाइंट सॉफ़्टवेयर को कभी-कभी अपग्रेड करने की आवश्यकता होती है। नोड रखरखाव अपरिहार्य है और कभी-कभी आपके ध्यान की आवश्यकता होगी। आप यह सुनिश्चित करना चाहेंगे कि आप किसी भी प्रत्याशित नेटवर्क अपग्रेड या अन्य महत्वपूर्ण क्लाइंट अपग्रेड से अवगत रहें। + + + +आपके पुरस्कार उस समय के समानुपाती होते हैं जब आपका सत्यापनकर्ता ऑनलाइन होता है और ठीक से सत्यापित होता है। डाउनटाइम एक ही समय में कितने अन्य सत्यापनकर्ता ऑफ़लाइन हैं, इसके अनुपात में दंड लगाता है, लेकिन इसके परिणामस्वरूप कटौती नहीं होती है। बैंडविड्थ भी मायने रखती है, क्योंकि समय पर सत्यापन नहीं मिलने पर पुरस्कार कम हो जाते हैं। आवश्यकताएं अलग-अलग होंगी, लेकिन कम से कम 10 Mb/s ऊपर और नीचे की सिफारिश की जाती है। + + + +ऑफ़लाइन होने के लिए निष्क्रियता दंड से अलग, दुर्भावनापूर्ण अपराधों के लिए कटौती एक अधिक गंभीर दंड है। एक समय में केवल एक मशीन पर अपनी कुंजियाँ लोड करके अल्पसंख्यक क्लाइंट चलाने से, कटौती का खतरा कम हो जाता है। कहा जा रहा है कि, सभी हितधारकों को कटौती के जोखिमों के बारे में पता होना चाहिए। + + सत्यापनकर्ता जीवनचक्र और कटौती कि अधिक जानकारी + + + + + +## यह कैसे काम करता है {#how-it-works} + + + +सक्रिय रहते हुए आप ETH पुरस्कार अर्जित करेंगे, जिसे समय-समय पर आपके निकासी पते में जमा किया जाएगा। + +यदि कभी वांछित हो, तो आप एक सत्यापनकर्ता के रूप में बाहर निकल सकते हैं जो ऑनलाइन होने की आवश्यकता को समाप्त करता है, और किसी भी अन्य पुरस्कार को रोकता है। फिर आपकी शेष राशि को उस निकासी पते पर वापस ले लिया जाएगा जिसे आप सेटअप के दौरान नामित करते हैं। + +[स्टेकिंग निकासी पर अधिक जानकारी](/staking/withdrawals/) + +## स्टेकिंग लॉन्चपैड पर आरंभ करें {#get-started-on-the-staking-launchpad} + +स्टेकिंग लॉन्चपैड एक ओपन सोर्स एप्लिकेशन है जो आपको एक हितधारक बनने में मदद करेगा। यह आपको अपने क्लाइंट्स को चुनने, अपनी कुंजियाँ उत्पन्न करने और अपने ETH को जमा करने के लिए मार्गदर्शन करेगा। यह सुनिश्चित करने के लिए एक चेकलिस्ट प्रदान की जाती है कि आपने अपने सत्यापनकर्ता को सुरक्षित रूप से सेट करने के लिए सब कुछ कवर किया है। + + + +## नोड और क्लाइंट सेटअप उपकरण के साथ जिसका विचार करना है {#node-tool-considerations} + +आपके ETH को एकल दांव अकेले स्टेकिंग पर लगाने में मदद करने के लिए उपकरणों और सेवाओं की बढ़ती संख्या है, लेकिन प्रत्येक अलग-अलग जोखिम और लाभ के साथ आते हैं। + +विशेषता संकेतकों का उपयोग नीचे उल्लेखनीय शक्तियों या कमजोरियों को इंगित करने के लिए किया जाता है जो एक सूचीबद्ध स्टेकिंग उपकरण में हो सकते हैं। इस अनुभाग का उपयोग एक संदर्भ के रूप में करें कि हम इन विशेषताओं को कैसे परिभाषित करते हैं, जबकि आप चुन रहे हैं कि आपकी स्टेकिंग यात्रा में मदद करने के लिए कौन से उपकरण हैं। + + + +## नोड और क्लाइंट सेटअप उपकरण का अन्वेषण करें {#node-and-client-tools} + +आपके सेटअप में आपकी मदद करने के लिए कई प्रकार के विकल्प उपलब्ध हैं। नीचे दिए गए उपकरणों के माध्यम से मार्गदर्शन करने में मदद करने के लिए उपरोक्त संकेतकों का इस्तेमाल करें। + + + +#### नोड उपकरण + + + +कृपया [अल्पसंख्यक क्लाइंट](/developers/docs/nodes-and-clients/client-diversity/) चुनने के महत्व पर ध्यान दें क्योंकि यह नेटवर्क की सुरक्षा में सुधार करता है, और आपके जोखिम को सीमित करता है। उपकरण जो आपको अल्पसंख्यक क्लाइंट सेटअप करने की अनुमति देते हैं, उन्हें "बहु-क्लाइंट" के रूप में निरूपित किया जाता है। + +#### कुंजी जनरेटर + +कुंजी उत्पन्न करने में मदद करने के लिए इन उपकरणों का उपयोग [स्टेकिंग डिपॉजिट CLI](https://github.com/ethereum/staking-deposit-cli/) के विकल्प के रूप में किया जा सकता है। + + + +क्या आपके पास स्टेकिंग टूल के बारे कोई सुझाव है जिसे हम भूल गए हैं? यह देखने के लिए हमारी [उत्पाद लिस्टिंग नीति](/contributing/adding-staking-products/) देखें कि क्या यह एक अच्छा फिट होगा और इसे समीक्षा के लिए सबमिट करें। + +## एकल स्टेकिंग गाइड का अन्वेषण करें {#staking-guides} + + + +## अक्सर पूछे जाने वाले सवाल {#faq} + +ये स्टेकिंग के बारे में कुछ सबसे सामान्य प्रश्न हैं जिनके बारे में जानना जरूरी है। + + + +सत्यापनकर्ता एक आभासी इकाई है जो इथेरियम पर रहता है और इथेरियम प्रोटोकॉल की आम सहमति में भाग लेता है। सत्यापनकर्ताओं को एक संतुलन, सार्वजनिक कुंजी और अन्य गुणों द्वारा दर्शाया जाता है। एक सत्यापनकर्ता क्लाइंट वह सॉफ्टवेयर है जो सत्यापनकर्ता की ओर से अपनी निजी कुंजी को पकड़कर और उपयोग करके कार्य करता है। एक एकल सत्यापनकर्ता क्लाइंट कई कुंजियों के जोड़े रख सकता है, कई सत्यापनकर्ताओं को नियंत्रित कर सकता है। + + + + +सत्यापनकर्ता से जुड़े प्रत्येक कुंजी-जोड़ी को सक्रिय होने के लिए ठीक 32 ETH की आवश्यकता होती है। कुंजियों के एक सेट में जमा अधिक ETH पुरस्कार क्षमता में वृद्धि नहीं करता है, क्योंकि प्रत्येक सत्यापनकर्ता 32 ETH के प्रभावी बैलेंस तक सीमित है। इसका मतलब यह है कि स्टेकिंग 32 ETH वृद्धि में की जाती है, प्रत्येक की कुंजी और बैलेंस का अपना सेट होता है। + +एकल सत्यापनकर्ता के लिए 32 ETH से अधिक जमा न करें। यह आपके पुरस्कारों में वृद्धि नहीं करेगा। यदि सत्यापनकर्ता के लिए निकासी पता सेट किया गया है, तो 32 ETH से अतिरिक्त धन अगले सत्यापनकर्ता स्वीप के दौरान स्वचालित रूप से इस पते पर वापस ले लिया जाएगा। + +यदि एकल स्टेकिंग आपके लिए बहुत अधिक मांग वाली लगती है, तो स्टेकिंग-सर्विस प्रदाता का उपयोग करने पर विचार करें, या यदि आप 32 ETH से कम के साथ काम कर रहे हैं, तो स्टेकिंग पूल देखें। + + + +जब नेटवर्क को ठीक से अंतिम रूप दिया जा रहा हो तो ऑफ़लाइन जाने से कटौती नहीं होगी। यदि आपका सत्यापनकर्ता किसी दिए गए युग (प्रत्येक 6.4 मिनट लंबे) के लिए सत्यापित करने के लिए उपलब्ध नहीं है, तो छोटे निष्क्रियता दंड लगाए जाते हैं, लेकिन यह कटौती से बहुत अलग है। ये दंड आपके द्वारा अर्जित पुरस्कार से थोड़ा कम हैं यदि सत्यापनकर्ता सत्यापित करने के लिए उपलब्ध था, और नुकसान को फिर से ऑनलाइन लगभग समान समय के साथ वापस अर्जित किया जा सकता है। + +ध्यान दें कि निष्क्रियता के लिए दंड इस बात के समानुपाती हैं कि एक ही समय में कितने सत्यापनकर्ता ऑफ़लाइन हैं। ऐसे मामलों में जहां नेटवर्क का एक बड़ा हिस्सा एक बार में ऑफ़लाइन है, इनमें से प्रत्येक सत्यापनकर्ता के लिए दंड एक एकल सत्यापनकर्ता अनुपलब्ध होने की तुलना में अधिक होगा। + +चरम मामलों में यदि नेटवर्क एक तिहाई से अधिक सत्यापनकर्ताओं के ऑफ़लाइन होने के परिणामस्वरूप अंतिम रूप देना बंद कर देता है, तो इन उपयोगकर्ताओं को एक द्विघात निष्क्रियता रिसाव के रूप में जाना जाता है, जो ऑफ़लाइन सत्यापनकर्ता खातों से ETH की घातीय निकासी है। यह नेटवर्क को अंततः निष्क्रिय सत्यापनकर्ताओं के ETH को जलाकर आत्म-उपचार करने में सक्षम बनाता है जब तक कि उनका बैलेंस 16 ETH तक नहीं पहुंच जाता है, जिस बिंदु पर उन्हें स्वचालित रूप से सत्यापनकर्ता पूल से निकाल दिया जाएगा। शेष ऑनलाइन सत्यापनकर्ताओं में अंततः 2/3 से अधिक नेटवर्क शामिल होगा, जो एक बार फिर श्रृंखला को अंतिम रूप देने के लिए आवश्यक सर्वोच्च बहुमत को संतुष्ट करेगा। + + + +संक्षेप में, इसकी कभी भी पूरी तरह से गारंटी नहीं दी जा सकती है, लेकिन यदि आप अच्छे विश्वास में कार्य करते हैं, एक अल्पसंख्यक क्लाइंट चलाते हैं और एक समय में केवल एक मशीन पर अपनी हस्ताक्षर कुंजी रखते हैं, तो कटौती होने का जोखिम लगभग शून्य है। + +केवल कुछ विशिष्ट तरीके हैं जिनके परिणामस्वरूप एक सत्यापनकर्ता को नेटवर्क से हटाया जा सकता है और बाहर निकाला जा सकता है। लेखन के समय, जो कटौती हुई है, वह विशेष रूप से अनावश्यक हार्डवेयर सेटअप का एक उत्पाद है जहां साइनिंग कुंजी एक बार में दो अलग-अलग मशीनों पर संग्रहीत की जाती हैं। यह अनजाने में आपकी कुंजियों से एक डबल वोट का परिणाम हो सकता है, जो एक कटौती निंदनीय अपराध है। + +एक सर्वोच्च बहुमत क्लाइंट (नेटवर्क के 2/3 से अधिक द्वारा उपयोग किए जाने वाले किसी भी क्लाइंट) को चलाने से इस क्लाइंट में बग होने की स्थिति में संभावित कटौती का जोखिम भी होता है जिसके परिणामस्वरूप चेन फोर्क होता है। इसके परिणामस्वरूप एक दोषपूर्ण फोर्क हो सकता है जिसे अंतिम रूप दिया जाता है। इच्छित श्रृंखला को वापस सही करने के लिए एक अंतिम ब्लॉक को पूर्ववत करने का प्रयास करके एक व्यापक वोट प्रस्तुत करने की आवश्यकता होगी। यह भी एक कटौती निंदनीय अपराध है और इसके बजाय अल्पसंख्यक क्लाइंट चलाकर इससे बचा जा सकता है। + +एक अल्पसंख्यक क्लाइंट में समकक्ष बग कभी भी अंतिम रूप नहीं देंगे और इस प्रकार कभी भी व्यापक वोट नहीं होगा, और इसके परिणामस्वरूप निष्क्रियता दंड होगा, कटौती नहीं। + + + + + +व्यक्तिगत क्लाइंट प्रदर्शन और यूज़र इंटरफ़ेस के संदर्भ में थोड़ा भिन्न हो सकते हैं, क्योंकि प्रत्येक को विभिन्न प्रोग्रामिंग भाषाओं का उपयोग करके विभिन्न टीमों द्वारा विकसित किया जाता है। कहा जा रहा है कि, उनमें से कोई भी "सर्वश्रेष्ठ" नहीं है। सभी उत्पादन ग्राहक सॉफ्टवेयर के उत्कृष्ट टुकड़े हैं, जो सभी ब्लॉकचेन के साथ सिंक करने और बातचीत करने के लिए एक ही मुख्य कार्य करते हैं। + +चूंकि सभी उत्पादन क्लाइंट एक ही बुनियादी कार्यक्षमता प्रदान करते हैं, इसलिए यह वास्तव में बहुत महत्वपूर्ण है कि आप एक अल्पसंख्यक क्लाइंट चुनें, जिसका अर्थ है कि कोई भी क्लाइंट जो वर्तमान में नेटवर्क पर अधिकांश सत्यापनकर्ताओं द्वारा उपयोग नहीं किया जा रहा है। यह उल्टा लग सकता है, लेकिन बहुमत या सर्वोच्च बहुमत क्लाइंट चलाने से आपको उस क्लाइंट में बग की स्थिति में कटौती का खतरा बढ़ जाता है। एक अल्पसंख्यक क्लाइंट चलाने से इन जोखिमों को काफी सीमित कर दिया जाता है। + +इस बारे में अधिक जानें कि क्लाइंट विविधता क्यों महत्वपूर्ण है + + + +यद्यपि एक वर्चुअल प्राइवेट सर्वर (VPS) का उपयोग होम हार्डवेयर के प्रतिस्थापन के रूप में किया जा सकता है, लेकिन आपके सत्यापनकर्ता क्लाइंट की भौतिक पहुंच और स्थान मायने रखता है। केंद्रीकृत क्लाउड समाधान जैसे Amazon Web Services या Digital Ocean नेटवर्क को केंद्रीकृत करने की कीमत पर हार्डवेयर प्राप्त करने और संचालित करने की सुविधा की अनुमति देते हैं। + +एकल केंद्रीकृत क्लाउड स्टोरेज समाधान पर चलने वाले अधिक सत्यापनकर्ता क्लाइंट, इन उपयोगकर्ताओं के लिए उतना ही खतरनाक हो जाता है। कोई भी घटना जो इन प्रदाताओं को ऑफ़लाइन ले जाती है, चाहे वह किसी हमले, विनियामक मांगों या सिर्फ बिजली/इंटरनेट आउटेज के कारण हो, इसके परिणामस्वरूप इस सर्वर पर निर्भर प्रत्येक सत्यापनकर्ता क्लाइंट एक ही समय में ऑफ़लाइन हो जाएगा। + +ऑफ़लाइन दंड इस बात के समानुपाती हैं कि एक ही समय में कितने अन्य ऑफ़लाइन हैं। VPS का उपयोग करने से जोखिम बढ़ जाता है कि ऑफ़लाइन दंड अधिक गंभीर होगा, और आउटेज काफी बड़ा होने की स्थिति में द्विघात लीक या कटौती का खतरा बढ़ जाता है। अपने जोखिम को कम करने के लिए, और नेटवर्क के लिए जोखिम कम करने के लिए, उपयोगकर्ताओं को अपने स्वयं के हार्डवेयर को प्राप्त करने और संचालित करने के लिए दृढ़ता से प्रोत्साहित किया जाता है। + + + + +बीकन चेन से किसी भी तरह की निकासी के लिए निकासी क्रेडेंशियल्स सेट करने की आवश्यकता होती है। + +नए हितधारकों ने इसे कुंजी-सृजन और जमा के समय निर्धारित किया। मौजूदा हितधारक जिन्होंने पहले से ही इसे सेट नहीं किया है, वे इस कार्यक्षमता का समर्थन करने के लिए अपनी कुंजियों को अपग्रेड कर सकते हैं। + +निकासी क्रेडेंशियल सेट हो जाने के बाद, इनाम भुगतान (प्रारंभिक 32 से अधिक संचित ETH) समय-समय पर निकासी पते पर स्वचालित रूप से वितरित किए जाएंगे। + +अपना पूरा बैलेंस वापस पाने और अनलॉक करने के लिए आपको अपने सत्यापनकर्ता से बाहर निकलने की प्रक्रिया भी पूरी करनी होगी। + +स्टेकिंग निकासी पर अधिक जानकारी + + +## अग्रिम पठन {#further-reading} + +- [इथेरियम की क्लाइंट विविधता समस्या](https://hackernoon.com/ethereums-client-diversity-problem) - _@emmanuelawosika 2022_ +- [क्लाइंट विविधता की मदद करना](https://www.attestant.io/posts/helping-client-diversity/) - _जिम मैकडॉनल्ड 2022_ +- [क्लाइंट विविधता इथेरियम की आम सहमति परत पर](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) - _jmcook.eth 2022_ +- [कैसे: इथेरियम सत्यापनकर्ता हार्डवेयर के लिए खरीदारी करें](https://www.youtube.com/watch?v=C2wwu1IlhDc) - _EthStaker 2022_ +- [चरण दर चरण: इथेरियम 2.0 टेस्टनेट में कैसे शामिल हों](https://kb.beaconcha.in/guides/tutorial-eth2-multiclient) - _बुट्टा_ +- [Eth2 कटौती रोकथाम युक्तियाँ](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50) - _रोल जॉर्डन 2020_ diff --git a/src/content/translations/hi/staking/withdrawals/index.md b/src/content/translations/hi/staking/withdrawals/index.md new file mode 100644 index 00000000000..b941d6bc630 --- /dev/null +++ b/src/content/translations/hi/staking/withdrawals/index.md @@ -0,0 +1,218 @@ +--- +title: स्टेकिंग निकालना +description: पेज संक्षेप में बताता है कि पुश निकासी क्या हैं, वे कैसे काम करते हैं, और हितधारकों को अपने पुरस्कार प्राप्त करने के लिए क्या करने की आवश्यकता है +lang: hi +template: staking +image: ../../../../../assets/staking/leslie-withdrawal.png +alt: लेस्ली राइनो अपने स्टेकिंग पुरस्कारों के साथ +sidebarDepth: 2 +summaryPoints: + - शंघाई/कैपेला अपग्रेड ने इथेरियम पर स्टेकिंग निकासी को सक्षम किया + - सत्यापनकर्ता ऑपरेटरों को सक्षम करने के लिए एक निकासी पता प्रदान करना होगा + - पुरस्कार स्वचालित रूप से हर कुछ दिनों में वितरित किए जाते हैं + - सत्यापनकर्ता जो पूरी तरह से बाहर निकलते हैं, उन्हें अपना शेष बैलेंस प्राप्त होगा +--- + + +12 अप्रैल, 2023 को हुए शंघाई/कैपेला अपग्रेड के साथ निकासी को सक्षम किया गया था। शंघाई/कैपेला के बारे में अधिक जानकारी + + +**स्टेकिंग निकासी** इथेरियम की कन्सेन्सस सहमति परत (बीकन चेन) पर एक सत्यापनकर्ता खाते से ETH के हस्तांतरण का संदर्भ लें, निष्पादन परत तक जहां इसके साथ लेनदेन किया जा सकता है। + +32 ETH से अधिक की **अतिरिक्त शेष राशि का इनाम भुगतान** स्वचालित रूप से और नियमित रूप से उपयोगकर्ता द्वारा प्रदान किए जाने के बाद प्रत्येक सत्यापनकर्ता से जुड़े निकासी पते पर भेजा जाएगा। उपयोगकर्ता अपने पूर्ण सत्यापनकर्ता बैलेंस को अनलॉक करते हुए, **पूरी तरह से स्टेकिंग से बाहर निकल सकते हैं।** + +## स्टेकिंग पुरस्कार {#staking-rewards} + +इनाम भुगतान स्वचालित रूप से सक्रिय सत्यापनकर्ता खातों के लिए संसाधित होते हैं, जिसमें अधिकतम 32 ETH की प्रभावी शेष राशि होती है। + +पुरस्कारों के माध्यम से अर्जित 32 ETH से ऊपर की कोई भी शेष राशि वास्तव में मूलधन में योगदान नहीं करती है, या नेटवर्क पर इस सत्यापनकर्ता के वजन में वृद्धि नहीं करती है, और इस प्रकार हर कुछ दिनों में इनाम भुगतान के रूप में स्वचालित रूप से वापस ले ली जाती है। एक बार वापसी पता प्रदान करने के अलावा, इन पुरस्कारों को सत्यापनकर्ता ऑपरेटर से किसी भी कार्रवाई की आवश्यकता नहीं है। यह सब कन्सेन्सस सहमति परत पर शुरू किया जाता है, इस प्रकार किसी भी कदम पर कोई गैस (लेनदेन शुल्क) की आवश्यकता नहीं होती है। + +### हम यहां कैसे पहुंचे? {#how-did-we-get-here} + +पिछले कुछ वर्षों में इथेरियम ने ऊर्जा-गहन खनन के बजाय ETH द्वारा सुरक्षित नेटवर्क में संक्रमण करने वाले कई नेटवर्क उन्नयन किए हैं। इथेरियम पर आम सहमति में भाग लेना अब "स्टेकिंग" के रूप में जाना जाता है, क्योंकि प्रतिभागियों ने स्वेच्छा से ETH को लॉक कर दिया है, जिससे इसे नेटवर्क में भाग लेने की क्षमता के लिए "दांव" पर रखा गया है। नियमों का पालन करने वाले यूजर्स को पुरस्कार दिया जाएगा, जबकि ठगी की कोशिश करने वालों को दंडित किया जा सकता है। + +नवंबर 2020 में स्टेकिंग डिपॉजिट कॉन्ट्रैक्ट की शुरुआत के बाद से, कुछ बहादुर इथेरियम अग्रदूतों ने स्वेच्छा से "सत्यापनकर्ताओं" को सक्रिय करने के लिए धन को लॉक कर दिया है, विशेष खाते जिनके पास नेटवर्क नियमों का पालन करते हुए ब्लॉक को औपचारिक रूप से सत्यापित करने और प्रस्तावित करने का अधिकार है। + +शंघाई/कैपेला अपग्रेड से पहले, आप अपने दांव वाले ETH का उपयोग या एक्सेस नहीं कर सकते थे। लेकिन अब, आप अपने पुरस्कारों को स्वचालित रूप से एक चुने हुए खाते में प्राप्त करने के लिए ऑप्ट-इन कर सकते हैं, और आप जब चाहें अपने दांव वाले ETH को वापस भी ले सकते हैं। + +### मैं कैसे तैयारी करूं? {#how-do-i-prepare} + + + +### ज़रूरी सूचनाएं {#important-notices} + +निकासी पता प्रदान करना किसी भी सत्यापनकर्ता खाते के लिए एक आवश्यक कदम है, इससे पहले कि वह ETH को अपनी शेष राशि से वापस लेने के लिए पात्र हो। + + + प्रत्येक सत्यापनकर्ता खाते को केवल एक एकल निकासी पता, एक बार सौंपा जा सकता है। एक बार जब कोई पता चुना जाता है और आम सहमति परत में प्रस्तुत किया जाता है, तो इसे पूर्ववत नहीं किया जा सकता है या फिर से बदला नहीं जा सकता है। सबमिट करने से पहले प्रदान किए गए पते के स्वामित्व और सटीकता की दोबारा जांच करें। + + +इस बीच इसे प्रदान नहीं करने के लिए आपके धन को कोई खतरा नहीं है, यह मानते हुए कि आपका नेमोनिक / बीज वाक्यांश ऑफ़लाइन सुरक्षित रहा है, और किसी भी तरह से समझौता नहीं किया गया है। निकासी क्रेडेंशियल्स जोड़ने में विफलता केवल ETH को सत्यापनकर्ता खाते में लॉक कर देगी क्योंकि यह तब तक रहा है जब तक कि निकासी पता प्रदान नहीं किया जाता है। + +## स्टेकिंग से पूरी तरह से बाहर निकलना {#exiting-staking-entirely} + +_किसी भी_ धन को सत्यापनकर्ता खाते की शेष राशि से स्थानांतरित करने से पहले निकासी पता प्रदान करना आवश्यक है। + +पूरी तरह से स्टैकिंग से बाहर निकलने और अपना पूरा बैलेंस वापस लेने के इच्छुक उपयोगकर्ताओं को सत्यापनकर्ता कुंजी के साथ एक "स्वैच्छिक निकास" संदेश पर हस्ताक्षर और प्रसारण करना होगा, जो स्टैकिंग से बाहर निकलने की प्रक्रिया शुरू करेगा। यह आपके सत्यापनकर्ता क्लाइंट के साथ किया जाता है और आपके आम सहमति नोड में प्रस्तुत किया जाता है, और गैस की आवश्यकता नहीं होती है। + +एक सत्यापनकर्ता के स्टेकिंग से बाहर निकलने की प्रक्रिया में परिवर्तनीय मात्रा में समय लगता है, यह इस बात पर निर्भर करता है कि एक ही समय में कितने अन्य बाहर निकल रहे हैं। एक बार पूरा होने के बाद, यह खाता अब सत्यापनकर्ता नेटवर्क कर्तव्यों को पूरा करने के लिए जिम्मेदार नहीं होगा, अब पुरस्कारों के लिए योग्य नहीं है, और अब उनका ETH "दांव पर" नहीं है। इस समय खाते को पूरी तरह से "निकासी योग्य" के रूप में चिह्नित किया जाएगा। + +एक बार जब किसी खाते को "निकासी योग्य" के रूप में चिह्नित किया जाता है, और निकासी क्रेडेंशियल प्रदान किए जाते हैं, तो उपयोगकर्ता को प्रतीक्षा के अलावा और कुछ करने की आवश्यकता नहीं होती है। पात्र निकास निधियों के लिए ब्लॉक प्रस्तावकों द्वारा खातों को स्वचालित रूप से और लगातार स्वीप किया जाता है, और आपके खाते की शेष राशि को अगले स्वीप के दौरान पूर्ण रूप से (जिसे "पूर्ण निकासी" के रूप में भी जाना जाता है) स्थानांतरित कर दिया जाएगा। + +## स्टेकिंग निकासी कब सक्षम की जाती है? {#when} + +स्टेकिंग निकासी लाइव हैं! कैपेला अपग्रेड के हिस्से के रूप में निकासी कार्यक्षमता सक्षम की गई थी जो 12 अप्रैल, 2023 को । + +शंघाई/कैपेला अपग्रेड ने पहले से दांव पर लगाए गए ETH को नियमित इथेरियम खातों में पुनः प्राप्त करने में सक्षम बनाया। इसने स्टेकिंग लिक्विडिटी तरलता पर लूप को बंद कर दिया, और इथेरियम को एक स्थायी, स्केलेबल, सुरक्षित विकेन्द्रीकृत पारिस्थितिकी तंत्र के निर्माण की दिशा में अपनी यात्रा पर एक कदम करीब लाया। + +- [इथेरियम इतिहास के बारे में अधिक जानकारी](/history/) +- [इथेरियम रोडमैप के बारे में अधिक जानकारी](/roadmap/) + +## निकासी भुगतान कैसे काम करते हैं? {#how-do-withdrawals-work} + +दिया गया सत्यापनकर्ता निकासी के लिए पात्र है या नहीं, यह सत्यापनकर्ता खाते की स्थिति द्वारा ही निर्धारित किया जाता है। किसी भी समय यह निर्धारित करने के लिए किसी भी उपयोगकर्ता इनपुट की आवश्यकता नहीं होती है कि किसी खाते में निकासी शुरू की जानी चाहिए या नहीं - पूरी प्रक्रिया एक निरंतर लूप पर आम सहमति परत द्वारा स्वचालित रूप से की जाती है। + +### More of a visual learner? {#visual-learner} + +Finematics द्वारा स्टेकिंग निकासी करने वाले इथेरियम की इस व्याख्या को देखें: + + + +### सत्यापनकर्ता "स्वीपिंग" {#validator-sweeping} + +जब एक सत्यापनकर्ता अगले ब्लॉक का प्रस्ताव करने के लिए निर्धारित होता है, तो उसे 16 योग्य निकासी की निकासी कतार बनाने की आवश्यकता होती है। यह मूल रूप से सत्यापनकर्ता सूचकांक 0 से शुरू करके किया जाता है, यह निर्धारित करके कि प्रोटोकॉल के नियमों के अनुसार इस खाते के लिए कोई योग्य निकासी है या नहीं, और यदि है तो इसे कतार में जोड़ दिया जाता है। निम्नलिखित ब्लॉक को प्रस्तावित करने के लिए सेट किया गया सत्यापनकर्ता अनिश्चित काल तक प्रगति करते हुए वहीं से शुरू करेगा जहां आखिरी ब्लॉक छोड़ा गया था। + + +एक एनालॉग घड़ी के बारे में सोचें। घड़ी की सुई घंटे की ओर इशारा करती है, एक दिशा में आगे बढ़ती है, कोई भी घंटा नहीं छोड़ती है, और अंततः अंतिम संख्या तक पहुंचने के बाद फिर से शुरुआत में आ जाती है।

    +अब 1 से 12 के बजाय, कल्पना करें कि घड़ी में 0 से N है (सत्यापनकर्ता खातों की कुल संख्या जो कभी भी आम सहमति परत पर पंजीकृत की गई है, जनवरी 2023 तक 500,000 से अधिक)।

    +घड़ी की सुई अगले सत्यापनकर्ता को इंगित करती है जिसे पात्र निकासी के लिए जांचने की आवश्यकता है। यह 0 से शुरू होती है, और किसी भी खाते को छोड़े बिना चारों ओर आगे बढ़ती है। जब अंतिम सत्यापनकर्ता तक पहुंच जाता है, तो चक्र शुरुआत से फिर से जारी रहता है। +
    + +#### निकासी के लिए खाते की जाँच करना {#checking-an-account-for-withdrawals} + +जबकि एक प्रस्तावक संभावित निकासी के लिए सत्यापनकर्ताओं के माध्यम से व्यापक है, जांच किए जा रहे प्रत्येक सत्यापनकर्ता का मूल्यांकन प्रश्नों की एक छोटी श्रृंखला के साथ किया जाता है ताकि यह निर्धारित किया जा सके कि क्या वापसी शुरू की जानी चाहिए, और यदि हां, तो कितना ETH वापस लिया जाना चाहिए। + +1. **क्या निकासी पता प्रदान किया गया है?** यदि कोई निकासी पता प्रदान नहीं किया गया है, तो खाता छोड़ दिया जाता है और कोई निकासी शुरू नहीं की जाती है। +2. **क्या सत्यापनकर्ता बाहर निकल जाता है और वापस लेने योग्य होता है?** यदि सत्यापनकर्ता पूरी तरह से बाहर निकल गया है, और हम उस अवधि में पहुंच गए हैं जहां उनके खाते को "वापस लेने योग्य" माना जाता है, तो एक पूर्ण निकासी संसाधित की जाएगी। यह पूरी शेष राशि को निकासी पते पर स्थानांतरित कर देगा। +3. **क्या प्रभावी बैलेंस 32 पर अधिकतम है?** यदि खाते में निकासी क्रेडेंशियल्स हैं, पूरी तरह से बाहर नहीं निकले हैं, और 32 प्रतीक्षा से ऊपर के पुरस्कार हैं, तो आंशिक वापसी संसाधित की जाएगी जो उपयोगकर्ता के निकासी पते पर केवल 32 से ऊपर के पुरस्कारों को स्थानांतरित करती है। + +सत्यापनकर्ता के जीवन चक्र के दौरान सत्यापनकर्ता ऑपरेटरों द्वारा की जाने वाली केवल दो क्रियाएं हैं जो इस प्रवाह को सीधे प्रभावित करती हैं: + +- निकासी के किसी भी रूप को सक्षम करने के लिए निकासी क्रेडेंशियल प्रदान करें +- नेटवर्क से बाहर निकलें, जो पूर्ण वापसी को ट्रिगर करेगा + +### गैस मुक्त {#gas-free} + +निकासी करने का यह दृष्टिकोण हितधारकों को ETH की एक विशेष राशि को वापस लेने का अनुरोध करते हुए मैन्युअल रूप से लेनदेन प्रस्तुत करने की आवश्यकता से बचाता है। इसका मतलब है कि किसी **गैस (लेनदेन शुल्क) की आवश्यकता नहीं है**, और निकासी भी मौजूदा निष्पादन परत ब्लॉक स्पेस के लिए प्रतिस्पर्धा नहीं करती है। + +### मुझे कितनी बार मेरे स्टेकिंग पुरस्कार मिलेंगे? {#how-soon} + +एक एकल ब्लॉक में अधिकतम 16 निकासी की प्रक्रिया की जा सकती है। उस दर पर, प्रति दिन 115,200 सत्यापनकर्ता निकासी संसाधित की जा सकती है (यह मानते हुए कि कोई स्लॉट छूटा नहीं है)। जैसा कि ऊपर उल्लेख किया गया है, योग्य निकासी के बिना सत्यापनकर्ताओं को छोड़ दिया जाएगा, जिससे स्वीप खत्म करने का समय कम हो जाएगा। + +इस गणना का विस्तार करते हुए, हम अनुमान लगा सकते हैं कि दी गई संख्या में निकासी को संसाधित करने में कितना समय लगेगा: + + + +| निकासी की संख्या | पूरा होने का समय | +| :--------------: | :--------------: | +| 400,000 | 3.5 दिन | +| 500,000 | 4.3 दिन | +| 600,000 | 5.2 दिन | +| 700,000 | 6.1 दिन | +| 800,000 | 7.0 दिन | + + + +जैसा कि आप देखते हैं कि यह धीमा हो जाता है क्योंकि नेटवर्क पर अधिक सत्यापनकर्ता होते हैं। छूटे हुए स्लॉट में वृद्धि इसे आनुपातिक रूप से धीमा कर सकती है, लेकिन यह आम तौर पर संभावित परिणामों के धीमे पक्ष का प्रतिनिधित्व करेगा। + +## अक्सर पूछे जाने वाले सवाल {#faq} + + +नहीं, निकासी क्रेडेंशियल प्रदान करने की प्रक्रिया एक बार की प्रक्रिया है, और एक बार जमा करने के बाद इसे बदला नहीं जा सकता है। + + + +निष्पादन परत निकासी पता सेट करके उस सत्यापनकर्ता के लिए निकासी क्रेडेंशियल्स स्थायी रूप से बदल दिए गए हैं। इसका मतलब है कि पुराने क्रेडेंशियल्स अब काम नहीं करेंगे, और नए क्रेडेंशियल्स एक निष्पादन परत खाते में हैं। + +निकासी पते या तो एक स्मार्ट अनुबंध (इसके कोड द्वारा नियंत्रित), या एक बाहरी स्वामित्व वाला खाता (EOA, इसकी निजी कुंजी द्वारा नियंत्रित) हो सकते हैं। वर्तमान में इन खातों के पास आम सहमति परत पर एक संदेश को वापस संवाद करने का कोई तरीका नहीं है जो सत्यापनकर्ता क्रेडेंशियल्स के परिवर्तन का संकेत देगा, और इस कार्यक्षमता को जोड़ने से प्रोटोकॉल में अनावश्यक जटिलता जुड़ जाएगी। + +किसी विशेष सत्यापनकर्ता के लिए निकासी पते को बदलने के विकल्प के रूप में, उपयोगकर्ता अपने निकासी पते के रूप में एक स्मार्ट अनुबंध सेट करना चुन सकते हैं जो कुंजी रोटेटिंग को संभाल सकता है, जैसे कि एक सेफ। जो उपयोगकर्ता अपने स्वयं के EOA में अपने फंड सेट करते हैं, वे अपने सभी दांव लगाए गए फंडों को वापस लेने के लिए पूर्ण निकासी कर सकते हैं, और फिर नए क्रेडेंशियल्स का उपयोग करके फिर से हिस्सेदारी कर सकते हैं। + + + + +यदि आप स्टेकिंग पूल का हिस्सा हैं या स्टेकिंग टोकन रखते हैं, तो आपको स्टेकिंग निकासी को कैसे प्रबंधित किया जाता है, इसके बारे में अधिक जानकारी के लिए अपने प्रदाता से जांच करनी चाहिए, क्योंकि प्रत्येक सेवा अलग तरह से संचालित होती है। + +सामान्य तौर पर, उपयोगकर्ताओं को अपने अंतर्निहित स्टेक ETH को पुनः प्राप्त करने के लिए स्वतंत्र होना चाहिए, या यह बदलना चाहिए कि वे किस स्टेकिंग प्रदाता का उपयोग करते हैं। यदि कोई विशेष पूल बहुत बड़ा हो रहा है, तो धनराशि को बाहर निकाला जा सकता है, पुनःस्टेक किया जा सकता और एक छोटे प्रदाता के साथ फिर से दांव पर लगाया जा सकता है। या, यदि आपने पर्याप्त ETH जमा किया है तो आप घर से दांव लगा सकते हैं। + + + + +हां, जब तक आपके सत्यापनकर्ता ने निकासी पता प्रदान किया है। शुरुआत में किसी भी निकासी को सक्षम करने के लिए इसे एक बार प्रदान किया जाना चाहिए, फिर प्रत्येक सत्यापनकर्ता स्वीप के साथ हर कुछ दिनों में इनाम भुगतान स्वचालित रूप से ट्रिगर हो जाएगा। + + + + +नहीं, यदि आपका सत्यापनकर्ता अभी भी नेटवर्क पर सक्रिय है, तो पूर्ण वापसी स्वचालित रूप से नहीं होगी। इसके लिए मैन्युअल रूप से स्वैच्छिक निकास शुरू करने की आवश्यकता होती है। + +एक बार जब एक सत्यापनकर्ता ने बाहर निकलने की प्रक्रिया पूरी कर ली है, और यह मानते हुए कि खाते में निकासी क्रेडेंशियल्स हैं, तो शेष राशि अगले सत्यापनकर्ता स्वीप के दौरान वापस ले ली जाएगी। + + + + +निकासी को स्वचालित रूप से पुश के लिए डिज़ाइन किया गया है, किसी भी ETH को स्थानांतरित करना जो सक्रिय रूप से हिस्सेदारी में योगदान नहीं दे रहा है। इसमें उन खातों के लिए पूर्ण शेष राशि शामिल है जिन्होंने बाहर निकलने की प्रक्रिया पूरी कर ली है। + +ETH की विशिष्ट मात्रा को वापस लेने के लिए मैन्युअल रूप से अनुरोध करना संभव नहीं है। + + + + +सत्यापनकर्ता ऑपरेटरों को स्टेकिंग लॉन्चपैड निकासी पृष्ठ पर जाने की सिफारिश की जाती है जहां आपको निकासी के लिए अपने सत्यापनकर्ता को तैयार करने के बारे में अधिक जानकारी मिलेगी। तैयार, घटनाओं का समय, और निकासी कैसे कार्य करती है, इसके बारे में अधिक जानकारी। + +पहले टेस्टनेट पर अपने सेटअप को आज़माने के लिए, आरंभ करने के लिए Goerli टेस्टनेट स्टेकिंग लॉन्चपैड पर जाएं। + + + + +नहीं। एक बार जब एक सत्यापनकर्ता बाहर निकल जाता है और उसकी पूरी शेष राशि वापस ले ली जाती है, तो उस सत्यापनकर्ता को जमा किया गया कोई भी अतिरिक्त धन स्वचालित रूप से अगले सत्यापनकर्ता स्वीप के दौरान निकासी पते पर स्थानांतरित कर दिया जाएगा। ETH को फिर से दांव पर लगाने के लिए, एक नया सत्यापनकर्ता सक्रिय होना चाहिए। + + +## अग्रिम पठन {#further-reading} + +- [स्टेकिंग लांच पैड निकासी](https://launchpad.ethereum.org/withdrawals) +- [EIP-4895: संचालन के रूप में बीकन चेन पुश निकासी](https://eips.ethereum.org/EIPS/eip-4895) +- [इथेरियम जटिलताएं - शंघाई](https://www.ethereumcatherders.com/shanghai_upgrade/index.html) +- [PEEPanEIP #94: पोटुज़ और हसियाओ-वेई वांग के साथ स्टेक ETH निकासी (परीक्षण)](https://www.youtube.com/watch?v=G8UstwmGtyE) +- [PEEPanEIP#68: EIP-4895: एलेक्स स्टोक्स के साथ संचालन के रूप में बीकन चेन पुश निकासी](https://www.youtube.com/watch?v=CcL9RJBljUs) +- [सत्यापनकर्ता प्रभावी शेष को समझना](https://www.attestant.io/posts/understanding-validator-effective-balance/) diff --git a/src/content/translations/hi/web3/index.md b/src/content/translations/hi/web3/index.md new file mode 100644 index 00000000000..8e26dcafcbc --- /dev/null +++ b/src/content/translations/hi/web3/index.md @@ -0,0 +1,161 @@ +--- +title: Web3 क्या है और यह महत्वपूर्ण क्यों है? +description: Web3 से परिचय—वर्ल्ड वाइड वेब का अगला विकसित रूप—और यह क्यूँ महत्वपूर्ण है। +lang: hi +--- + +# Web3 का परिचय {#introduction} + +केंद्रीकरण की मदद से अरबों लोग वर्ल्ड वाइड वेब से जुड़े है और इसके स्थिर, मजबूत बुनियादी ढांचे का निर्माण किया है जिस पर यह जीवित है। साथ ही, वर्ल्ड वाइड वेब के बड़े हिस्से पर कुछ केंद्रीकृत संस्थाओं का दबदबा है, जो एक तरफा निर्णय लेते हैं कि क्या अनुमति दी जानी चाहिए और क्या नहीं। + +Web3 इस दुविधा का उत्तर है। बड़ी तकनीकी कंपनियों के एकाधिकार वाले वेब के बजाय, Web3 विकेंद्रीकरण को अपनाता है और इसका निर्माण, संचालन और स्वामित्व इसके उपयोगकर्ता द्वारा किया जाता है। Web3 सत्ता को निगमों के बजाय लोगो के हाथों में देता है। Web3 के बारे में बात करने के पहले, आइए जानें कि हम यहां तक कैसे पहुंचे। + + + +## प्रारंभिक वेब {#early-internet} + +जबसे इसका आविष्कार किया गया था और जब से यह मौजूद है - अधिकतर लोग वेब को आधुनिक जीवन का एक सतत स्तंभ सोचते है। हालाँकि, आज जिस वेब को हममें से अधिकतर लोग जानते है वह उसकी वास्तविक कल्पना से बिलकुल अलग है। इसे अच्छे से समझने के लिए, इसके संक्षिप्त इतिहास को चोटी अवधियों में तोड़ना मददगार होगा - वेब 1.0 और वेब 2.0। + +### वेब 1.0: रीड-ऑनली (1990-2004) {#web1} + +1989 में, CERN, जेनेवा में, टीम बर्नर्स-ली ऐसा प्रोटोकॉल विकसित करने में व्यस्त थे, जो वर्ल्ड वाइड वेब बना। उसका विचार? खुला, विकेंद्रीकृत प्रोटोकॉल का निर्माण करे, जिसे धरती से कही भी जानकारी साझा करने में सक्षम बनाए। + +बर्नर्स-ली की रचना का पहला सूत्रपात, अब उसे "वेब 1.0" से जाना जाता है, लगभग 1990 से 2004 के बीच बनाया गया था। वेब 1.0 मुख्य तौर पर कंपनियों के स्वामित्व में स्थिर वेबसाइट थी, और उपयोगकर्ता के बीच न के बराबर बातचीत होती थी - व्यक्तियों ने शायद ही कोई कंटेंट बनाया होगा - इस कारणवश इसे रीड ऑनली के रूप में जाना जाने लगा। + +![क्लाइंट-सर्वर आर्किटेक्चर, वेब 1.0 का प्रतिनिधित्व करता है](./web1.png) + +### वेब 2.0: रीड-राईट (2004-अब तक) {#web2} + +वेब 2.0 का समय 2004 में सोशल मीडिया प्लेटफार्म के साथ शुरू हुआ। वेब केवल-पढ़ने के बजाय पढ़ने-लिखने के रूप में विकसित हुआ। कंपनियों ने यूज़र को सामग्री प्रदान करने की बजाय, प्लेटफार्म प्रदान करने शुरू कर दिए जिसकी मदद से वह यूज़र द्वारा विकसित सामग्री साझा कर सके और यूज़र से यूज़र का विचार विमर्श बढ़ा सके। जैसे-जैसे अधिक लोग ऑनलाइन आए, कुछ कंपनियों ने वेब पर उत्पन्न अनुपातहीन ट्रैफ़िक और मुनाफे की मात्रा को नियंत्रित करना शुरू कर दिया। वेब 2.0 ने विज्ञापन-संचालित आय के मॉडल को भी जन्म दिया। हालाँकि उपयोगकर्ता सामग्री बना सकते थे, लेकिन उनके पास इसका स्वामित्व नहीं था और उन्हें इसके मुद्रीकरण से लाभ नहीं हो रहा था। + +![क्लाइंट-सर्वर आर्किटेक्चर, वेब 2.0 का प्रतिनिधित्व करता है](./web2.png) + + + +## वेब 3.0: रीड-राईट-स्वामित्व रखे {#web3} + +'Web 3.0' का आधार 2014 में [इथेरियम](/what-is-ethereum/) के लॉन्च होने के तुरंत बाद इथेरियम के सह-संस्थापक गेविन वुड द्वारा तैयार किया गया था। गेविन ने उस समस्या के समाधान को शब्दों में व्यक्त किया जिसे कई शुरुआती क्रिप्टो अपनाने वालों ने महसूस भी किया था: वेब को बहुत अधिक विश्वास की आवश्यकता थी। अर्थात्, ज्यादातर लोग आज जिस वेब को जानते हैं और उपयोग करते हैं, वह लोगो के सर्वोत्तम हित में कार्य करने के लिए कुछ निजी कंपनियों पर भरोसा करने पर निर्भर करता है। + +![विकेंद्रीकृत नोड आर्किटेक्चर, Web3 का प्रतिनिधित्व करता है](./web3.png) + +### Web3 क्या है? {#what-is-web3} + +Web3 एक नए एवं बेहतर इंटरनेट के दृष्टिकोण का एक सर्वव्यापी शब्द बन गया है। मूलतः, Web3 उपयोगकर्ताओं को स्वामित्व की शक्ति वापस देने के लिए ब्लॉकचेन, क्रिप्टोकरेंसी और NFT का उपयोग करता है। [2020 की एक Twitter पोस्ट में](https://twitter.com/himgajria/status/1266415636789334016) इसे सर्वोत्तम तरीके से बताया गया: Web1 केवल पढ़ने के लिए था, Web2 पढ़ने एवं लिखने के लिए है, Web3 पढ़ने-लिखने एवं स्वमित्व रखने के लिए है। + +#### Web3 के मूल विचार {#core-ideas} + +हालाँकि Web3 क्या है इसकी एक सटीक परिभाषा सुनिश्चित करना चुनौतीपूर्ण है, कुछ मुख्य सिद्धांत इसके निर्माण को मार्गदर्शित करते हैं। + +- **Web3 विकेंद्रीकृत है:** केंद्रीकृत संस्थाओं द्वारा नियंत्रित और स्वामित्व वाले इंटरनेट के बड़े हिस्से के बजाय, स्वामित्व इसके बिल्डरों और यूज़र के बीच वितरित हो जाता है। +- **Web3 अनुमति रहित है:** सभी को Web3 में भाग लेने के लिए समान पहुंच प्राप्त है, और किसी को भी इससे बाहर नहीं रखा गया है। +- **Web3 में मूल भुगतान की सुविधा:** यह ऑनलाइन पैसे भेजने और खर्च करने के लिए क्रिप्टोकरेंसी का इस्तेमाल करता है, न की कई पुराने ढांचों वाले बैंक और भुगतान प्रोसेसर का। +- **Web3 विश्वासहीन है:** यह विश्वसनीय तृतीय-पक्षों पर भरोसा करने के बजाय प्रोत्साहन और आर्थिक तंत्र का उपयोग करके संचालित होता है। + +### Web3 महत्वपूर्ण क्यों है? {#why-is-web3-important} + +हालाँकि Web3 की सबसे बेहतरीन विशेषताएं कुछ खास नहीं है और साफ-सुथरी श्रेणी में फिट नहीं होती, बस सरलता के लिए हमने आसानी से समझने हेतु उन्हें अलग करने का प्रयास किया। + +#### स्वामित्व {#ownership} + +Web3 आपको अद्वितीय तरीके से अपनी डिजिटल संपत्तियों का स्वामित्व देता है। उदाहरण के लिए, मान लेते है की आप एक web2 गेम खेल रहे है। अगर आप कोई इन गेम वस्तु खरीदते है तो यह सीधे आपके खाते से बंध जाती है। अगर गेम के निर्माता आपका खाता मिटा दे, तो आप इन वस्तुओं को खो दोगे। या, फिर अगर आप गेम खेलना छोड़ दे, तो आप उन मूल्य को खो देंगे जो इन गेम वस्तुओं में निवेश किया है। + +Web3 [नॉन फंजिबल टोकन (NFT)](/nft/) के माध्यम से सीधे स्वामित्व की अनुमति देता है। गेम के निर्माता या कोई भी, आपके स्वामित्व को हटाने के शक्ति नहीं रखते है। और, अगर आप गेम खेलना छोड़ दे तो आप खुले बाजार में अपनी इन गेम वस्तुओं को बेच या ट्रेड कर सकते है और अपना मूल्य वापस हासिल कर सकते है। + + +
    NFT के बारे में अधिक जानें
    + + NFT पर अधिक जानकारी + +
    + +#### सेंसरशिप प्रतिरोध {#censorship-resistance} + +प्लेटफार्म और सामग्री निर्माताओं के बीच शक्ति की क्रियाशीलता बड़े पैमाने पर असंतुलित होती है। + +OnlyFans एक यूज़र-जनित वयस्क सामग्री की साइट है जिस पर 1 मिलियन से भी ऊपर की संख्या में सामग्री निर्माता है, जिनमे से अधिकतर प्लेटफार्म का उपयोग अपनी प्राथमिक आय का स्त्रोत के रूप में करते है। अगस्त 2021 में, OnlyFans ने यौन रूप से स्पष्ट सामग्री पर प्रतिबंध लगाने की योजना घोषित कर दी। इस घोषणा से प्लेटफार्म पर निर्माताओं के बीच आक्रोश फैल गया, उन्होंने महसूस किया की जिस प्लेटफार्म के निर्माण में मदद करी है उस पर उनकी आय लूटी जा रही है। प्रतिक्रिया के बाद, तुरंत फैसला पलट दिया गया। बावजूद इसके की निर्माताओं ने यह लड़ाई जीत ली है, यह वेब 2.0 के निर्माताओं के लिए एक समस्या पर प्रकाश डालता है: अगर आप प्लेटफार्म छोड़ देते है तो आपने जो प्रतिष्ठा और यदि आप कोई प्लेटफ़ॉर्म छोड़ते हैं तो आपका अनुसरण अर्जित होता है। + +Web3 पर, आपका डाटा ब्लॉकचेन में रहता है। जब आप किसी प्लेटफार्म को छोड़ने का निर्णय लेते है, तब आप अपनी प्रतिष्ठा का उपयोग कर सकते है, किसी दूसरे अन्य इंटरफेस से जुड़ सकते है जो आपके मूल्यों के साथ ज्यादा स्पष्ट रूप से संरेखित करता हैं। + +वेब 2.0 के लिए सामग्री निर्माताओं को नियमों में बदलाव न करने के लिए प्लेटफार्म पर विश्वास करने की आवश्यकता है, लेकिन सेंसरशिप प्रतिरोध Web3 प्लेटफार्म की मूल सुविधा है। + +#### विकेन्द्रीकृत स्वायत्त संगठन (DAO) {#daos} + +Web3 में अपने डेटा के मालिक बनने के साथ ही, आप समूह के रूप में प्लेटफ़ॉर्म के मालिक भी बन सकते हैं, जहाँ टोकन उसी तरह से काम करते हैं जैसे कि किसी कंपनी के शेयर। DAO आपको एक मंच के विकेंद्रीकृत स्वामित्व का समन्वय करने और उसके भविष्य के बारे में निर्णय लेने देते हैं। + +DAO को तकनीकी रूप से सहमत स्मार्ट अनुबंधों के रूप में परिभाषित किया गया है जो संसाधनों (टोकन) के पूल पर विकेंद्रीकृत निर्णय लेने को स्वचालित करते हैं। टोकन वाले उपयोगकर्ता इस पर वोट करते हैं कि संसाधन कैसे खर्च किए जाते हैं, और कोड स्वचालित रूप से वोटिंग परिणाम निष्पादित करता है। + +हालांकि, लोग Web3 समुदायों को भी बहुत से DAO के रूप में परिभाषित करते हैं। इन सभी समुदायों में कोड द्वारा विकेंद्रीकरण और स्वचालन के विभिन्न स्तर हैं। वर्तमान में, हम यह पता लगा रहे हैं कि DAO क्या हैं और वे भविष्य में कैसे विकसित हो सकते हैं। + + +
    Learn more about DAOs
    + + ड़ाओ पर अधिक + +
    + +### पहचान {#identity} + +परंपरागत रूप से, आप अपने द्वारा उपयोग किए जाने वाले प्रत्येक प्लेटफ़ॉर्म के लिए एक खाता बनाएंगे। उदाहरण के लिए, आपके पास एक Twitter खाता, एक YouTube खाता और एक Reddit खाता हो सकता है। क्या आप अपना प्रदर्शन नाम या प्रोफ़ाइल चित्र बदलना चाहते हैं? आपको इसे हर खाते में करना होगा। कुछ मामलों में आप सामाजिक साइन-इन का उपयोग कर सकते हैं, लेकिन यह एक जानी-मानी समस्या को उत्पन्न करता है—सेंसरशिप। एक क्लिक में, ये प्लेटफ़ॉर्म आपको आपके पूरे ऑनलाइन जीवन से बाहर कर सकते हैं। और बुरा यह है कि कई प्लेटफ़ॉर्म को आपको खाता बनाने के लिए व्यक्तिगत पहचान सूचना के साथ उन पर विश्वास करने की जरूरत होती है। + +Web3 इन समस्याओं को हल करता है जिसके द्वारा आप अपने डिजिटल पहचान को एक इथेरियम पते और ENS प्रोफ़ाइल के साथ नियंत्रित कर सकते हैं। इथेरियम पते का उपयोग करने से सभी प्लेटफार्मों पर एक ही लॉगिन मिलता है जो सुरक्षित, सेंसरशिप-प्रतिरोधी और गुमनाम होता है। + + + इथेरियम के साथ साइन-इन करें + + +### मूल भुगतान {#native-payments} + +Web2 का भुगतान बुनियादी ढांचा बैंकों और भुगतान प्रोसेसरों पर निर्भर करता है, इसमें बिना बैंक खाते वाले लोगों या गलत देश की सीमाओं के भीतर रहने वाले लोगों को शामिल नहीं किया गया है। Web3 में [ETH](/eth/) जैसे टोकन का उपयोग ब्राउज़र में सीधे पैसे भेजने के लिए किया जाता है और इसके लिए कोई विश्वसनीय तीसरे पक्ष की आवश्यकता नहीं होती। + + + ETH के बारे में अधिक जानकारी + + +## Web3 limitations {#web3-limitations} + +वर्तमान में Web3 के स्वरुप के असंख्य लाभों के बावजूद, अभी भी इसमें कई सीमाएँ हैं जिन्हें फलने-फूलने के लिए पारिस्थितिकी तंत्र से अवगत रहना होगा। + +### पहुँच {#accessibility} + +Web3 की महत्वपूर्ण सुविधाएँ, जैसे इथेरियम के साथ साइन-इन, किसी के भी उपयोग के लिए शून्य लागत पर पहले से ही उपलब्ध हैं। लेकिन, इसमें लेन-देन की तुलनात्मक लागत अभी भी कई लोगों के लिए निषेधात्मक है। अधिक लेनदेन शुल्क के कारण Web3 का उपयोग कम अमीर एवं विकासशील देशों में कम किये जाने की सम्भावना है। इथेरियम पर, इन चुनौतियों को [रोडमैप](/roadmap/) और [परत 2 स्केलिंग समाधानो](/developers/docs/scaling/) के माध्यम से हल किया जा रहा है। यह तकनीक तो तैयार है, लेकिन Web3 को सभी की पहुँच में लाने के लिए हमें परत 2 पर उच्च स्तर को अपनाने की आवश्यकता है। + +### यूज़र का अनुभव {#user-experience} + +Web3 के उपयोग पर प्रवेश करने में वर्तमान में बहुत अधिक तकनीकी बाधाएं हैं। यूज़र को सुरक्षा मामलों, जटिल तकनीकी दस्तावेजों को, और असहज यूज़र इंटरफ़ेस को नेविगेट करना समझना चाहिए। [वॉलेट प्रदाता](/wallets/find-wallet/), विशेष रूप से, इसके समाधान पर काम कर रहे हैं, लेकिन Web3 को सामूहिक रूप से अपनाए जाने से पहले और अधिक प्रगति की आवश्यकता है। + +### Education {#education} + +Web3 नए उदाहरण प्रस्तुत करता है जिनके लिए Web2.0 में उपयोग किए गए मानसिक मॉडलों से अलग मॉडल सीखने की आवश्यकता होती है। 1990 के दशक के अंत में जब Web1.0 लोकप्रियता हासिल कर रहा था तब एक इसी तरह का शिक्षा अभियान भी शुरू हुआ; वर्ल्ड वाइड वेब के समर्थकों ने जनता को सरल रूपकों (सूचना राजमार्ग, ब्राउज़र, वेब सर्फिंग) से लेकर [टेलीविजन प्रसारण](https://www.youtube.com/watch?v=SzQLI7BxfYI) तक शिक्षित करने के लिए कई शैक्षिक तकनीकों का उपयोग किया। Web3 कठिन नहीं है, लेकिन यह अलग है। Web2 यूज़र को इन Web3 उदाहरणों के बारे में सूचित करने वाली शैक्षिक पहल इसकी सफलता के लिए महत्वपूर्ण हैं। + +Ethereum.org हमारे [अनुवाद कार्यक्रम](/contributing/translation-program/), के माध्यम से Web3 शिक्षा में योगदान देता है, जिसका लक्ष्य महत्वपूर्ण इथेरियम सामग्री को अधिक से अधिक भाषाओं में अनुवाद करना है। + +### केंद्रीकृत का बुनियादी ढांचा {#centralized-infrastructure} + +Web3 पारिस्थितिकी तंत्र नया है और तेजी से विकसित हो रहा है। परिणामस्वरूप, अभी यह मुख्य रूप से केंद्रीकृत बुनियादी ढांचों (GitHub, Twitter, Discord, आदि) पर निर्भर करता है। कई Web3 कंपनियाँ इन फ़ासलो को भरने के लिए कार्य कर रही हैं, लेकिन उच्च-गुणवत्ता, विश्वसनीय बुनियादी ढाँचे के निर्माण में समय लगता है। + +## एक विकेन्द्रीकृत भविष्य {#decentralized-future} + +Web3 एक युवा और विकासशील पारिस्थितिकी तंत्र है। गेविन वुड ने 2014 में यह शब्द अंकित किया था, लेकिन इनमें से कई विचार हाल ही में ही वास्तविकता बन सके हैं। सिर्फ पिछले वर्ष में, क्रिप्टोकरेंसी की रुचि में काफी वृद्धि हुई है, परत 2 स्केलिंग समाधानों में सुधार, शासन के नए रूपों के साथ बड़े पैमाने पर प्रयोग और डिजिटल पहचान में क्रांतियां हुई हैं। + +हम Web3 के साथ एक बेहतर वेब बनाने की शुरुआत में ही हैं, लेकिन जैसे-जैसे हम इसके समर्थक बुनियादी ढांचे में सुधार करेंगे, वैसे-वैसे वेब का भविष्य उज्ज्वल दिखता चलेगा। + +## मैं कैसे शामिल हो सकता हूं {#get-involved} + +- [एक वॉलेट प्राप्त करें](/wallets/) +- [समुदाय खोजें](/community/) +- [Web3 एप्लीकेशन को एक्सप्लोर करें](/dapps/) +- [डीएओ में शामिल हों](/dao/) +- [एक Web3 निर्मित करे](/developers/) + +## अग्रिम पठन {#further-reading} + +Web3 सटीकता से परिभाषित नहीं है। विभिन्न समुदाय के प्रतिभागियों के पास इस पर अलग-अलग दृष्टिकोण है। यहां उनमें से कुछ हैं: + +- [Web3 क्या है? भविष्य के विकेंद्रीकृत इंटरनेट की व्याख्या](https://www.freecodecamp.org/news/what-is-web3/) – _नादेर डेबिट_ +- [Web 3 की समझ बनाना](https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae) – _जोश स्टार्क_ +- [Web3 क्यों मायने रखता है](https://future.a16z.com/why-web3-matters/) — _क्रिस डिक्सॉन_ +- [विकेंद्रीकरण क्यों मायने रखता है](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) - _क्रिस डिक्सॉन_ +- [Web3 लैंडस्केप](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) – _a16z_ +- [Web3 बहस](https://www.notboring.co/p/the-web3-debate?s=r) – _पैकी मक्कॉर्मिक_ + + diff --git a/src/content/translations/hi/zero-knowledge-proofs/index.md b/src/content/translations/hi/zero-knowledge-proofs/index.md new file mode 100644 index 00000000000..73c7e5bfedf --- /dev/null +++ b/src/content/translations/hi/zero-knowledge-proofs/index.md @@ -0,0 +1,212 @@ +--- +title: शून्य-ज्ञान प्रमाण +description: शुरुआती लोगों के लिए शून्य ज्ञान प्रमाण का एक गैर तकनीकी परिचय। +lang: hi +--- + +## शून्य ज्ञान प्रमाण क्या होते है? {#what-are-zk-proofs} + +शून्य ज्ञान प्रमाण एक तरीका है जिससे किसी कथन की वैधता साबित करते हैं बिना उस कथन को उजागर किए। 'सिद्धकर्ता' वह पक्ष है जो एक दावे को साबित करने की कोशिश करते हैं, वहीं 'सत्यापनकर्ता' वह पक्ष है जो दावे को मान्यता देने के जिम्मेदार होते हैं। + +शून्य ज्ञान प्रमाण पहली बार 1985 के एक पेपर में दिखाई दिया, “[इंटरैक्टिव प्रूफ सिस्टम की ज्ञान जटिलता](http://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Proof%20Systems/The_Knowledge_Complexity_Of_Interactive_Proof_Systems.pdf)” जो आज व्यापक रूप से इस्तेमाल होने वाले शून्य ज्ञान प्रमाण की परिभाषा देता है: + +> एक शून्य-ज्ञान प्रोटोकॉल एक तरीका है जिससे एक पक्ष (सिद्धकर्ता) दूसरे पक्ष (सत्यापनकर्ता) को साबित कर सकते है की कुछ सत्य है, यह विशिष्ट कथन सत्य है इस तथ्य के अलावा कोई भी जानकारी उजागर किए बगैर। + +शून्य-ज्ञान प्रमाण पिछले सालो में बेहतर हुए है और इनका उपयोग अब विभिन्न असल दुनिया की एप्लीकेशन में किया जाने लगा है। + +## हमें शून्य-ज्ञान प्रमाण की आवश्यकता क्यों होती है? {#why-zero-knowledge-proofs-are-important} + +शून्य-ज्ञान प्रमाण लागू क्रिप्टोग्राफी में एक सफलता का प्रतिनिधित्व करता है, क्योंकि उन्होंने व्यक्तियों के लिए सूचना में सुधार लाने का वादा किया है। इस बात पर विचार करें कि आप एक दावा (उदाहरण के लिए, "मैं X देश का नागरिक हूं") किसी अन्य दूसरे पक्ष (उदाहरण के लिए, एक सेवा देनेवाले) को कैसे साबित कर सकते है। आपको अपने दावे के समर्थन के लिए राष्ट्रीय पासपोर्ट या ड्राइवर का लाइसेंस जैसे "सबूत" देने की आवश्यकता होती है। + +लेकिन इस दृष्टिकोण के साथ में समस्याएं हैं, मुख्यतः गोपनीयता की कमी। तीसरे पक्ष की सेवाओं के साथ साझा की गई व्यक्तिगत रूप से पहचान योग्य जानकारी (PII) एक केंद्रीय डाटाबेस में संग्रहित होता है, जो हैक के प्रति संवेदनशील होते हैं। पहचान की चोरी एक गंभीर मुद्दा बनने के साथ, संवेदनशील जानकारी साझा करने के लिए अधिक गोपनीयता-सुरक्षा साधनों की मांग हो रही है। + +दावे की वैधता को साबित करने के लिए सूचना उजागर करने की आवश्यकता को दूर कर शून्य ज्ञान प्रमाण इस समस्या का समाधान करता है। शून्य ज्ञान प्रोटोकॉल उसकी वैधता का संक्षिप्त प्रमाण उत्पन्न करने के लिए इनपुट के रूप में कथन (उसे 'विटनैस' कहा जाता है) का इस्तेमाल करता है। यह प्रमाण ठोस गारंटी प्रदान करता है की यह कथन सत्य है इसको बनाने के लिए उपयोग होने वाली सूचना को बेनकाब किए बिना। + +वापस हमारे शुरुआती उदाहरण पर चलते हैं, आपको आपकी नागरिकता का दावा साबित करने के लिए एक अकेले प्रमाण की आवश्यकता होगी वह है शून्य ज्ञान प्रमाण। सत्यापनकर्ता को केवल यह जांचना होगा कि प्रमाण के कुछ गुण सत्य हैं या नहीं, यह आश्वस्त होने के लिए कि अंतर्निहित कथन भी सत्य है। + +## शून्य ज्ञान प्रमाण कैसे काम करते है? {#how-do-zero-knowledge-proofs-work} + +शून्य ज्ञान प्रमाण आपको किसी कथन की सच्चाई साबित करने की अनुमति देता है बिना कथन की सामग्री साझा किए या बिना उजागर किए की कैसे आपने सच्चाई की खोज की है। इसे संभव बनाने के लिए, शून्य ज्ञान प्रमाण एल्गोरिथम पर भरोसा करते हैं जो इनपुट के तौर पर कुछ डेटा लेती है और आउटपुट में ‘सही’ या ‘गलत’ बताती है। + +एक शून्य-ज्ञान प्रोटोकॉल को निम्नलिखित मानदंडों को पूरा करना होगा: + +1. **पूर्णता**: यदि इनपुट वैध है, तो शून्य-ज्ञान प्रोटोकॉल हमेशा 'सही' लौटाता है। इसलिए, अगर अंतर्निहित कथन सत्य है, और सिद्धकर्ता और सत्यापनकर्ता ईमानदारी से कार्य करते हैं, तो प्रमाण स्वीकार किया जा सकता है। + +2. **सुदृढ़ता**: यदि इनपुट अमान्य है, तो 'सही' लौटाने के लिए शून्य-ज्ञान प्रोटोकॉल को मूर्ख बनाना सैद्धांतिक रूप से असंभव है। इसलिए, एक झूठ बोलने वाला एक ईमानदार सत्यापनकर्ता को यह विश्वास दिलाने में धोखा नहीं दे सकता है कि एक अमान्य बयान वैध है (संभावना के एक छोटे से अंतर को छोड़कर)। + +3. **शून्य-ज्ञान**: सत्यापनकर्ता उसकी वैधता या अवैधता के परे कथन के बारे में कुछ नही जानता (उन्हें कथन का "शून्य ज्ञान" होता है)। यह जरूरत सत्यापनकर्ता को भी प्रमाण से असल इनपुट कथन (कथन की सामग्री) की व्युत्पत्ति करने से रोकता है। + +मूल रूप, शून्य ज्ञान प्रमाण तीन तत्वों से बनता है: **विटनेस**, **चैलेंज** और **रिस्पॉन्स**। + +- **विटनेस**: शून्य ज्ञान प्रमाण के साथ, सिद्धकर्ता किसी छिपी हुई जानकारी का ज्ञान साबित करना चाहता है। गुप्त जानकारी सबूत के लिए "गवाह" है, और गवाह के बारे में सूचक का अनुमानित ज्ञान प्रश्नों का एक सेट स्थापित करता है जिसका उत्तर केवल जानकारी के ज्ञान वाला पक्ष ही दे सकता है। इस तरह, सिद्धकर्ता बेतरतीब ढंग से एक प्रश्न के चुनाव से सिद्ध करने की प्रक्रिया शुरू करता है, उत्तर की गणना करता है, और उसे सत्यापनकर्ता को भेजता है। + +- **चैलेंज**: सत्यापनकर्ता बेतरतीब ढंग में सेट से अन्य दूसरा प्रश्न उठाकर सिद्धकर्ता से उसका उत्तर पूछता है। + +- **रिस्पॉन्स**: सिद्धकर्ता प्रश्न स्वीकार करता है, उत्तर की गणना करता है, और उसे सत्यापनकर्ता को रिटर्न करता है। सिद्धकर्ता की प्रतिक्रिया सत्यापनकर्ता को यह जांचने की अनुमति देती है कि क्या सिद्धकर्ता के पास वास्तव में गवाह तक पहुंच है। यह सुनिश्चित करने के लिए कि सिद्धकर्ता आँख मूँद कर अनुमान नहीं लगा रहा है और संयोग से सही उत्तर नहीं पा रहा है, सत्यापनकर्ता पूछने के लिए अधिक प्रश्न चुनता है। इस बातचीत को कई बार दोहराने से, जब तक सत्यापनकर्ता संतुष्ट नहीं हो जाता, तब तक गवाह के बारे में गलत जानकारी देने वाले की संभावना काफी कम हो जाती है। + +उपरोक्त ‘इंटरएक्टिव शून्य ज्ञान प्रमाण’ की संरचना का विवरण करता है। शुरुआती शून्य-ज्ञान प्रोटोकॉल में इंटरैक्टिव प्रमाणन का उपयोग किया जाता था, जहां किसी कथन की वैधता को सत्यापित करने के लिए सिद्धकर्ता और सत्यापनकर्ताओं के बीच आगे-पीछे संचार की आवश्यकता होती थी। + +जीन-जैक्स क्विसक्वॉटर का प्रसिद्ध [अली बाबा केव स्टोरी](https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave) एक अच्छा उदाहरण है जो की इंटरएक्टिव प्रमाण का चित्रण करता हैंl इस कहानी में, Peggy (सिद्धकर्ता) विक्टर (सत्यापनकर्ता) को साबित करना चाहती है की वह जादुई दरवाजे को खोलने के लिए गुप्त वाक्यायंश जानती है बिना वाक्यायंश को उजागर करते हुए। + +### नॉन-इंटरएक्टिव शून्य ज्ञान प्रमाण {#non-interactive-zero-knowledge-proofs} + +जबकि क्रांतिकारी, इंटरएक्टिव प्रमाण की सीमित उपयोगिता थी क्योंकि इसके लिए दो पक्षों की उपलब्धता होना और बातचीत करने की बार-बार अवश्यकता थी। यहां तक ​​कि अगर एक सत्यापनकर्ता एक सिद्धकर्ता की ईमानदारी के बारे में आश्वस्त था, तो सबूत स्वतंत्र सत्यापन के लिए अनुपलब्ध होगा (एक नए प्रमाण की गणना के लिए सिद्धकर्ता और सत्यापनकर्ता के बीच संदेशों के एक नए सेट की आवश्यकता होती है)। + +इस समस्या को हल करने के लिए, मैनुअल ब्लम, पॉल फेल्डमैन और सिल्वियो मिकाली ने पहले [गैर-संवादात्मक शून्य-ज्ञान प्रमाण](https://dl.acm.org/doi/10.1145/62212.62222) का सुझाव दिया, जहां सिद्धकर्ता और सत्यापनकर्ता के पास एक साझा कुंजी होती है। यह सिद्धकर्ता को जानकारी प्रदान किए बिना कुछ जानकारी (यानी, गवाह) के बारे में अपने ज्ञान को प्रदर्शित करने की अनुमति देता है। + +इंटरैक्टिव प्रमाण के विपरीत, नॉन इंटरएक्टिव प्रमाण में प्रतिभागियों (सिद्धकर्ता और सत्यापनकर्ता) के बीच केवल एक संचार के दौरे की आवश्यकता पड़ती है। एक शून्य ज्ञान प्रमाण की संगणना करने के लिए सिद्धकर्ता गुप्त जानकारी एक विशेष एल्गोरिथम को देता है। यह प्रमाण सत्यापनकर्ता को भेजा जाता है, जो जाँच करता है कि सत्यापनकर्ता किसी अन्य एल्गोरिथम का उपयोग करके गुप्त जानकारी जानता है। + +गैर-इंटरैक्टिव साबित करने से सिद्धकर्ता और सत्यापनकर्ता के बीच संचार कम हो जाता है, जिससे ZK-प्रूफ अधिक कुशल हो जाता है। इसके अलावा, एक बार प्रमाण तैयार हो जाने के बाद, यह सत्यापित करने के लिए किसी अन्य के लिए (साझा कुंजी और सत्यापन एल्गोरिथम तक पहुंच के साथ) उपलब्ध होता है। + +नॉन इंटरएक्टिव प्रमाण शून्य ज्ञान तकनीक की सफलता का प्रतिनिधित्व करता है और आज उपयोग की जाने वाली सिद्ध प्रणालियों के विकास को प्रेरित किया है। हमने नीचे इन प्रमाण के प्रकारों पर चर्चा की है: + +### शून्य-ज्ञान प्रमाणों के प्रकार {#types-of-zero-knowledge-proofs} + +#### ZK-SNARKs {#zk-snarks} + +ZK-SNARK **जीरो नॉलेज सक्सिंक्ट नॉन इंटरएक्टिव आर्गुमेंट ऑफ़ नॉलेज** का परिवर्णी शब्द है। ZK-SNARK प्रोटोकॉल में निम्नलिखित गुण होते है: + +- **शून्य-ज्ञान**: सत्यापनकर्ता कथन के बारे में कुछ और जाने बगैर ही एक कथन की अखंडता की पुष्टि कर सकता है। सत्यापनकर्ता को कथन के बारे में एकमात्र ज्ञान यह है कि यह सत्य है या गलत। + +- **सक्सिंक्ट**: शून्य ज्ञान प्रमाण विटनेस से छोटा होता है और इसका सत्यापन जल्दी से किया जा सकता है। + +- **नॉन इंटरैक्टिव**: प्रमाण 'नॉन इंटरएक्टिव' होता है क्योंकि सिद्धकर्ता और सत्यापनकर्ता केवल एक बार बातचीत करते है, इंटरएक्टिव प्रमाण की तरह नहीं जिनमें संचार के एकाधिक दौरे की आवश्यकता होती है। + +- **आर्गुमेंट**: प्रमाण दृढ़ता की जरूरतों को पूरा करता है, तो धोखाधड़ी करने की संभावना बेहद कम है। + +- **(ऑफ) नॉलेज**: शून्य ज्ञान प्रमाण को गुप्त जानकारी (विटनेस) तक पहुंचे बिना बनाया नहीं जा सकता। अगर असंभव नहीं तो, सिद्धकर्ता के लिए यह मुश्किल जरूर है जिसके पास एक वैध शून्य ज्ञान प्रमाण की संगणना के लिए विटनेस नहीं है। + +‘साझा चाबी’ जिसका पहले जिक्र हुआ था वह सार्वजनिक मापदंडों को संदर्भित करता है जिनपर सिद्धकर्ता और सत्यापनकर्ता प्रमाणों को उत्पन्न और सत्यापन करने के लिए उपयोग में लेने पर सहमत होते है। सार्वजनिक पैरामीटर उत्पन्न करना (सामूहिक रूप से कॉमन रेफरेंस स्ट्रिंग (CRS) के रूप में जाना जाता है) प्रोटोकॉल की सुरक्षा में इसके महत्व के कारण एक संवेदनशील ऑपरेशन है। अगर CRS उत्पादित करने में एंट्रॉपी (अनियमितता) का उपयोग होता है तो बईमान सिद्धकर्ता के हाथों में चला जायेगा, वह झूठे प्रमाणों की संगणना कर सकते हैं। + +[मल्टी पार्टी कंप्यूटेशन (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) सार्वजनिक मापदंडों उत्पन्न करने के जोखिमों को कम करने का तरीका है। एकाधिक पक्ष [ट्रस्टेड सेटअप सेरेमनी](https://zkproof.org/2021/06/30/setup-ceremonies/amp/) में भाग लेते हैं, जहां प्रत्येक व्यक्ति CRS उत्पन्न करने के लिए कुछ अनियमित मूल्यों का योगदान देते हैं। जब तक कि एक ईमानदार पक्ष उनके इंट्रोपी के भागो को नष्ट करता है, तब तक ZK-SNARK प्रोटोकॉल संगणित सुदृढ़ता बरकरार रखते हैं। + +ट्रस्टेड सेटअप यूजर को प्रतिभागियों के ऊपर मापदंड उत्पन्न करने में भरोसा करने की आवश्यकता पड़ती है। हालांकि, ZK-STARKs के विकास ने उन प्रमाण प्रोटोकॉल को सक्षम बनाया है जो नॉन ट्रस्टेड सेटअप के साथ काम करते हैं। + +#### ZK-STARKs {#zk-starks} + +ZK-STARK **जीरो-नॉलेज स्केलेबल ट्रांसपेरेंट आर्गुमेंट ऑफ नॉलेज** का परिवर्णी शब्द है। ZK-STARKs, ZK-SNARKs के समान हैं, सिवाय इसके कि वे हैं: + +- **स्कैलेबल**: ZK-STARK सत्यापन करने वाले प्रमाणों का उत्पादन करने के लिए जब की विटनेस का आकार बड़ा हो ZK-SNARK की तुलना में तेज है। STARK प्रमाणों के साथ, जैसे-जैसे गवाह बढ़ता है, प्रमाण सिद्धकर्ता और सत्यापन के समय में थोड़ी वृद्धि होती है (SNARK प्रमाण सिद्धकर्ता और सत्यापनकर्ता का समय गवाह के आकार के साथ साथ बढ़ता है)। + +- **ट्रांसपेरेंट**: ZK-STARK विश्वसनीय सेटअप के बजाय सिद्ध करने और सत्यापन करने के लिए सार्वजनिक मापदंडों को उत्पन्न करने के लिए जनता द्वारा प्रमाणित अनियमितता पर भरोसा करते है। इस प्रकार, वे ZK-SNARK की तुलना में अधिक ट्रांसपेरेंट है। + +ZK-STARKs ZK-SNARKs की तुलना में बड़े प्रमाण उत्पादित करते है, मतलब उनके पास आम तौर पर सत्यापन ओवरहेड अधिक होते है। हालांकि, यहां पर ऐसे मामले (जैसे की बड़े डाटासेट को प्रमाणित करना) है जहां पर ZK-STARKs, ZK-SNARKs के मुकाबले ज्यादा लागत प्रभावी हो सकते है। + +## शून्य-ज्ञान प्रमाण के लिए उपयोग के मामले {#use-cases-for-zero-knowledge-proofs} + +### गुमनाम भुगतान {#anonymous-payments} + +क्रेडिट कार्ड से किए भुगतान अक्सर एकाधिक पक्षों को दिखाई देते है, भुगतान प्रदाता को मिलाकर, बैंक, और अन्य इच्छुक पक्ष (उदाहरण के लिए, सरकारी प्राधिकरण)। जबकि वित्तीय निगरानी की मदद से अवैध गतिविधि की पहचान करने में लाभ होता है, यह आम नागरिकों को गोपनीयता को भी कमज़ोर करता है। + +क्रिप्टोकरेंसी का किसी उपयोगकर्ता को गोपनीय, सहकर्मी लेनदेन करने के लिए एक माध्यम प्रदान करने का उद्दिष्ट था। लेकिन अधिकतर क्रिप्टोकरेंसी का लेनदेन सार्वजनिक ब्लॉकचेन पर खुलेआम दिखता है। यूज़र की पहचान अक्सर झूठी होती है और या तो जानबूझकर वास्तविक दुनिया की पहचान से जोड़ा (उदाहरण के लिए, Twitter या GitHub प्रोफाइल पर ETH पते शामिल करके) होगा या बेसिक ऑन और ऑफ-चेन डाटा विश्लेषण का उपयोग करके वास्तविक दुनिया की पहचान के साथ जुड़ा हो सकता है। + +यहां पर विशेष “गोपनीयता सिक्के” है जिन्हे पूर्णतः गुमनाम लेनदेन के लिए बनाया है। गोपनीयता-एकाग्रित ब्लॉकचेन, जैसे की Zcash और Monero, लेनदेन का विवरण, प्रेषक/प्राप्तकर्ता के पते, संपत्ति का प्रकार, मात्रा, और लेनदेन की समयरेखा को मजबूती प्रदान करते है। + +प्रोटोकॉल में शून्य-ज्ञान की तकनीक को उसके अनुरूप बना कर, गोपनीयता एकाग्रित ब्लॉकचेन नेटवर्क नोड्स को लेनदेन के डाटा तक पहुंचने की आवश्यकता के बगैर लेन-देन को मान्य करने की अनुमति देता है। + +सार्वजनिक ब्लॉकचेन पर शून्य ज्ञान प्रमाण अज्ञात लेनदेन पर भी लागू किए जाते है। एक उदाहरण Tornado Cash है, एक विकेंद्रीकृत, गैर हिरासत सेवा जो की उपयोगकर्ता को इथेरियम पर निजी लेनदेन करने की अनुमति देता है। Tornado Cash शून्य ज्ञान प्रमाण का उपयोग लेन-देन के विवरण को अस्पष्ट करने के लिए करता है और वित्तीय गोपनीयता को गारंटी देता है। दुर्भाग्यवश, क्योंकि ये "ऑप्ट-इन" गोपनीयता उपकरण है ये अवैध गतिविधियों के साथ जुड़े होते है। इस पर काबू पाने के लिए, गोपनीयता को आखिरकार सार्वजनिक ब्लॉकचेन पर डिफॉल्ट बनना होगा। + +### पहचान की सुरक्षा {#identity-protection} + +वर्तमान पहचान प्रबंधन प्रणालियाँ व्यक्तिगत जानकारी को खतरे में डालती हैं। शून्य-ज्ञान प्रमाण संवेदनशील विवरणों की सुरक्षा करते हुए व्यक्तियों को पहचान सत्यापित करने में मदद कर सकते हैं। + +शून्य-ज्ञान प्रमाण विशेष रूप से [विकेंद्रीकृत पहचान](/decentralized-identity/) के संदर्भ में उपयोगी होते हैं। विकेंद्रीकृत पहचान (जिसे 'स्व-संप्रभु पहचान' भी कहा जाता है) व्यक्ति को व्यक्तिगत पहचंकर्ताओं तक पहुंच को नियंत्रित करने की क्षमता देती है। अपनी टैक्स ID या पासपोर्ट विवरण प्रकट किए बिना अपनी नागरिकता साबित करना इस बात का एक अच्छा उदाहरण है कि कैसे शून्य-ज्ञान तकनीक विकेंद्रीकृत पहचान को सक्षम बनाती है। + +### प्रमाणीकरण {#authentication} + +ऑनलाइन सेवाओं का उपयोग करने के लिए आपकी पहचान और उन प्लेटफ़ॉर्म तक पहुंच का अधिकार साबित करना आवश्यक है। इसके लिए अक्सर नाम, ईमेल पते, जन्मतिथि आदि जैसी व्यक्तिगत जानकारी देने की आवश्यकता होती है। आपको लंबे पासवर्ड याद रखने की भी आवश्यकता हो सकती है या पहुंच खोने का जोखिम उठाना पड़ सकता है। + +हालाँकि, शून्य-ज्ञान प्रमाण, प्लेटफ़ॉर्म और उपयोगकर्ताओं दोनों के लिए प्रमाणीकरण को सरल बना सकते हैं। एक बार सार्वजनिक इनपुट (उदाहरण के लिए, प्लेटफ़ॉर्म पर उपयोगकर्ता की सदस्यता को प्रमाणित करने वाला डेटा) और निजी इनपुट (उदाहरण के लिए, यूज़र का विवरण) का उपयोग करके ZK-प्रूफ तैयार हो जाता है, तो उपयोगकर्ता इसे अपनी पहचान प्रमाणित करने के लिए प्रस्तुत कर सकता है जब उन्हें सेवा एक्सेस की आवश्यकता होती है। यह यूज़र के अनुभव को बेहतर बनाता है और संगठनों को बड़ी मात्रा में यूज़र जानकारी संग्रहीत करने की आवश्यकता से मुक्त करता है। + +### सत्यापन योग्य गणना {#verifiable-computation} + +ब्लॉकचेन डिज़ाइन में सुधार के लिए सत्यापन योग्य गणना शून्य-ज्ञान तकनीक का एक और एप्लीकेशन है। सत्यापन योग्य कंप्यूटिंग हमें सत्यापन योग्य परिणामों को बनाए रखते हुए किसी अन्य इकाई को गणना आउटसोर्स करने की अनुमति देती है। इकाई यह पुष्टि करते हुए प्रमाण के साथ परिणाम प्रस्तुत करती है कि कार्यक्रम सही ढंग से निष्पादित किया गया था। + +सुरक्षा को कम किए बिना ब्लॉकचेन पर प्रसंस्करण गति में सुधार के लिए सत्यापन योग्य गणना महत्वपूर्ण है। इसे समझने के लिए इथेरियम को स्केलिंग करने के लिए प्रस्तावित समाधानों में अंतर को जानना आवश्यक है। + +[ऑन-चेन स्केलिंग समाधान](/developers/docs/scaling/#on-chain-scaling), जैसे कि शार्डिंग के लिए ब्लॉकचेन की आधार परत में व्यापक संशोधन की आवश्यकता होती है। हालाँकि, यह दृष्टिकोण अत्यधिक जटिल है और कार्यान्वयन में त्रुटियाँ इथेरियम के सुरक्षा मॉडल को कमजोर कर सकती हैं। + +[ऑफ-चेन स्केलिंग समाधानों](/developers/docs/scaling/#off-chain-scaling) को कोर इथेरियम प्रोटोकॉल को फिर से डिज़ाइन करने की आवश्यकता नहीं है। इसके बजाय वे इथेरियम की आधार परत पर प्रवाह में सुधार के लिए एक आउटसोर्स गणना मॉडल पर भरोसा करते हैं। + +यहां बताया गया है कि यह कैसे काम करता है: + +- प्रत्येक लेनदेन को संसाधित करने के बजाय, इथेरियम निष्पादन को एक अलग चेन में उतारता है। + +- लेनदेन को संसाधित करने के बाद, दूसरी चेन इथेरियम की स्थिति में लागू होने वाले परिणामों को लौटाती है। + +यहां लाभ यह है कि इथेरियम को कोई निष्पादन नहीं करना पड़ता है और केवल आउटसोर्स गणना से परिणामों को अपनी स्थिति में लागू करने की आवश्यकता होती है। यह नेटवर्क की भीड़ को कम करता है और लेनदेन की गति में भी सुधार करता है (ऑफ-चेन प्रोटोकॉल तेजी से निष्पादन के लिए अनुकूलित करते हैं)। + +श्रृंखला को ऑफ-चेन लेनदेन को फिर से निष्पादित किए बिना मान्य करने का एक तरीका चाहिए, अन्यथा ऑफ-चेन निष्पादन का मूल्य खो जाता है। + +यह वह जगह है जहां सत्यापन योग्य गणना काम में आती है। जब कोई नोड इथेरियम के बाहर लेनदेन निष्पादित करता है, तो यह ऑफ-चेन निष्पादन की शुद्धता साबित करने के लिए एक शून्य-ज्ञान प्रमाण प्रस्तुत करता है। यह प्रमाण (जिसे [वैधता प्रमाण](/glossary/#validity-proof) कहा जाता है) गारंटी देता है कि एक लेनदेन वैध है, जिससे इथेरियम को परिणाम को अपनी स्थिति में लागू करने की अनुमति मिलती है—बिना किसी के विवाद करने की प्रतीक्षा किए। + +[शून्य-ज्ञान रोलअप](/developers/docs/scaling/zk-rollups) और [वैलिडियम](/developers/docs/scaling/validium/) दो ऑफ-चेन स्केलिंग समाधान हैं जो सुरक्षित स्केलेबिलिटी प्रदान करने के लिए वैधता प्रमाणों का उपयोग करते हैं। ये प्रोटोकॉल हजारों लेनदेन को ऑफ-चेन निष्पादित करते हैं और इथेरियम पर सत्यापन के लिए सबूत प्रस्तुत करते हैं। सबूत सत्यापित होने के बाद उन परिणामों को तुरंत लागू किया जा सकता है, जिससे इथेरियम को आधार परत पर गणना बढ़ाए बिना अधिक लेनदेन को संसाधित करने की अनुमति मिलती है। + +### ऑन-चेन वोटिंग में रिश्वतखोरी और मिलीभगत को कम करना {#secure-blockchain-voting} + +ब्लॉकचेन वोटिंग योजनाओं में कई अनुकूल विशेषताएं हैं: वे पूरी तरह से ऑडिट करने योग्य हैं, हमलों के खिलाफ सुरक्षित हैं, सेंसरशिप के प्रतिरोधी हैं, और भौगोलिक बाधाओं से मुक्त हैं। लेकिन यहां तक कि ऑन-चेन वोटिंग योजनाएं भी **मिलीभगत** की समस्या से अलग नहीं हैं। + +"दूसरों को धोखा देने, और गुमराह करके खुली प्रतिस्पर्धा को सीमित करने के लिए समन्वय" के रूप में परिभाषित, मिलीभगत रिश्वत की पेशकश करके मतदान को प्रभावित करने वाले दुर्भावनापूर्ण अभिनेता का रूप ले सकती है। उदाहरण के लिए, ऐलिस को बॉब से मतपत्र पर `विकल्प B` के लिए मतदान करने के लिए रिश्वत मिल सकती है, भले ही उसे `विकल्प A` पसंद आए। + +रिश्वत और मिलीभगत किसी भी प्रक्रिया की प्रभावशीलता को सीमित करती है जो मतदान को सिग्नलिंग तंत्र के रूप में उपयोग करती है (विशेष रूप से जहां उपयोगकर्ता साबित कर सकते हैं कि उन्होंने कैसे मतदान किया)। इसके महत्वपूर्ण परिणाम हो सकते हैं, खासकर जहां वोट दुर्लभ संसाधनों को आवंटित करने के लिए जिम्मेदार हैं। + +उदाहरण के लिए, [द्विघात वित्त पोषण तंत्र](https://www.radicalxchange.org/concepts/plural-funding/) विभिन्न सार्वजनिक अच्छी परियोजनाओं के बीच कुछ विकल्पों के लिए वरीयता को मापने के लिए दान पर भरोसा करते हैं। प्रत्येक दान को एक विशिष्ट परियोजना के लिए "वोट" के रूप में गिना जाता है, जिसमें अधिक वोट प्राप्त करने वाली परियोजनाओं को मिलान पूल से अधिक धन मिलता है। + +ऑन-चेन वोटिंग का उपयोग करना द्विघात फंडिंग को मिलीभगत के लिए अतिसंवेदनशील बनाता है: ब्लॉकचेन लेनदेन सार्वजनिक हैं, इसलिए रिश्वत लेने वाले रिश्वत लेने वाले की ऑन-चेन गतिविधि का निरीक्षण कर सकते हैं कि उन्होंने "वोट" कैसे किया। इस तरह द्विघात वित्त पोषण समुदाय की समग्र प्राथमिकताओं के आधार पर धन आवंटित करने के लिए एक प्रभावी साधन नहीं है। + +सौभाग्य से, MACI (न्यूनतम एंटी-मिलीभगत इंफ्रास्ट्रक्चर) जैसे नए समाधान ऑन-चेन वोटिंग (जैसे, द्विघात वित्त पोषण तंत्र) को रिश्वत और मिलीभगत के लिए प्रतिरोधी बनाने के लिए शून्य-ज्ञान प्रमाणों का उपयोग कर रहे हैं। MACI स्मार्ट अनुबंधों और स्क्रिप्ट का एक सेट है जो एक केंद्रीय प्रशासक (जिसे "समन्वयक" कहा जाता है) को वोटों को इकट्ठा करने और परिणामों का मिलान करने की अनुमति देता है, _बिना_ इस बात का खुलासा किए कि प्रत्येक व्यक्ति ने कैसे मतदान किया। फिर भी, यह सत्यापित करना अभी भी संभव है कि वोटों की गिनती ठीक से की गई थी, या पुष्टि करें कि किसी विशेष व्यक्ति ने मतदान दौर में भाग लिया था। + +#### MACI शून्य-ज्ञान प्रमाणों के साथ कैसे काम करता है? {#how-maci-works-with-zk-proofs} + +शुरुआत में, समन्वयक इथेरियम पर MACI अनुबंध तैनात करता है, जिसके बाद उपयोगकर्ता मतदान के लिए साइन अप कर सकते हैं (स्मार्ट अनुबंध में अपनी सार्वजनिक कुंजी पंजीकृत करके)। यूज़र स्मार्ट अनुबंध के लिए अपनी सार्वजनिक कुंजी के साथ एन्क्रिप्ट किए गए संदेश भेजकर वोट डालते हैं (अन्य मानदंडों के बीच यूज़र की पहचान से जुड़ी सबसे हालिया सार्वजनिक कुंजी के साथ एक वैध वोट पर हस्ताक्षर किया जाना चाहिए)। बाद में, समन्वयक मतदान अवधि समाप्त होने के बाद सभी संदेशों को संसाधित करता है, वोटों का मिलान करता है, और ऑन-चेन पर परिणामों को सत्यापित करता है। + +MACI में, शून्य-ज्ञान प्रमाणों का उपयोग गणना की शुद्धता सुनिश्चित करने के लिए किया जाता है, जिससे समन्वयक के लिए वोटों और मिलान परिणामों को गलत तरीके से संसाधित करना असंभव हो जाता है। समन्वयक को यह सत्यापित करते हुए कि A) सभी संदेश सही ढंग से संसाधित किए गए थे B) अंतिम परिणाम सभी _वैध_ वोटों के योग से मेल खाता है, ZK-SNARK प्रमाण उत्पन्न करने की आवश्यकता होती है। + +इस प्रकार, प्रति यूज़र वोटों के टूटने को साझा किए बिना भी (जैसा कि आमतौर पर होता है), MACI मिलान प्रक्रिया के दौरान गणना किए गए परिणामों की अखंडता की गारंटी देता है। यह सुविधा बुनियादी मिलीभगत योजनाओं की प्रभावशीलता को कम करने में उपयोगी है। हम एक विकल्प हेतु वोट करने के लिए बॉब रिश्वत एलिस के पिछले उदाहरण का उपयोग करके इस संभावना का पता लगा सकते हैं: + +- ऐलिस एक स्मार्ट अनुबंध के लिए अपनी सार्वजनिक कुंजी भेजकर मतदान करने के लिए पंजीकरण करता है। +- ऐलिस बॉब से रिश्वत के बदले `विकल्प B` के लिए मतदान करने के लिए सहमत है। +- ऐलिस `विकल्प B` के लिए वोट देता है। +- ऐलिस गुप्त रूप से अपनी पहचान से जुड़ी सार्वजनिक कुंजी को बदलने के लिए एक एन्क्रिप्टेड लेनदेन भेजती है। +- ऐलिस नई सार्वजनिक कुंजी का उपयोग करके `विकल्प A` के लिए स्मार्ट अनुबंध मतदान को एक और (एन्क्रिप्टेड) संदेश भेजती है। +- ऐलिस बॉब को एक लेनदेन दिखाती है जो दर्शाता है कि उसने `विकल्प B` के लिए मतदान किया (जो अमान्य है क्योंकि सार्वजनिक कुंजी अब सिस्टम में ऐलिस की पहचान से जुड़ी नहीं है) +- संदेशों को संसाधित करते समय, समन्वयक `विकल्प B` के लिए ऐलिस के वोट को छोड़ देता है और केवल `विकल्प A` के लिए वोट की गणना करता है। इसलिए, ऐलिस के साथ मिलीभगत करने और ऑन-चेन वोट में हेरफेर करने का बॉब का प्रयास विफल हो जाता है। + +MACI का उपयोग करने के लिए समन्वयक पर भरोसा करने की आवश्यकता _होती_ है कि वह रिश्वत देने वालों के साथ मिलीभगत न करे या मतदाताओं को रिश्वत देने का प्रयास न करे। समन्वयक यूज़र संदेशों (प्रमाण बनाने के लिए आवश्यक) को डिक्रिप्ट कर सकता है, ताकि वे सटीक रूप से सत्यापित कर सकें कि प्रत्येक व्यक्ति ने कैसे मतदान किया। + +लेकिन ऐसे मामलों में जहां समन्वयक ईमानदार रहता है, MACI ऑन-चेन वोटिंग की पवित्रता की गारंटी के लिए एक शक्तिशाली उपकरण का प्रतिनिधित्व करता है। यह द्विघात फंडिंग एप्लीकेशन (जैसे, [clr.fund](https://clr.fund/#/about/maci)) के बीच इसकी लोकप्रियता की व्याख्या करता है जो प्रत्येक व्यक्ति के मतदान विकल्पों की अखंडता पर बहुत अधिक निर्भर करता है। + +[MACI के बारे में अधिक जानें](https://github.com/privacy-scaling-explorations/maci/blob/master/specs/01_introduction.md)। + +## शून्य-ज्ञान प्रमाणों का उपयोग करने की कमियां {#drawbacks-of-using-zero-knowledge-proofs} + +### हार्डवेयर की लागत {#hardware-costs} + +शून्य-ज्ञान प्रमाण उत्पन्न करने में विशेष मशीनों पर सबसे अच्छा प्रदर्शन करने वाली बहुत जटिल गणना शामिल है। चूंकि ये मशीनें महंगी हैं, इसलिए वे अक्सर आम व्यक्तियों की पहुंच से बाहर होती हैं। इसके अतिरिक्त, जो एप्लीकेशन शून्य-ज्ञान तकनीक का उपयोग करना चाहते हैं, उनके हार्डवेयर लागतों में ऐसा कारक होना चाहिए—जो अंतिम उपयोगकर्ताओं के लिए लागत बढ़ा सकता है। + +### प्रमाण सत्यापन लागत {#proof-verification-costs} + +प्रमाणों को सत्यापित करने के लिए जटिल गणना की भी आवश्यकता होती है और एप्लीकेशन में शून्य-ज्ञान प्रौद्योगिकी को लागू करने की लागत बढ़ जाती है। यह लागत गणना साबित करने के संदर्भ में विशेष रूप से प्रासंगिक है। उदाहरण के लिए, ZK-रोलअप इथेरियम पर एकल ZK-SNARK प्रमाण को सत्यापित करने के लिए ~ 500,000 गैस का भुगतान करते हैं, जिसमें ZK-STARK को और भी अधिक शुल्क की आवश्यकता होती है। + +### विश्वास की धारणाएँ {#trust-assumptions} + +ZK-SNARK में, सामान्य संदर्भ स्ट्रिंग (सार्वजनिक पैरामीटर) एक बार उत्पन्न होती है और उन पार्टियों के लिए पुन: उपयोग के लिए उपलब्ध होती है जो शून्य-ज्ञान प्रोटोकॉल में भाग लेना चाहते हैं। सार्वजनिक पैरामीटर एक विश्वसनीय सेटअप समारोह के माध्यम से बनाए जाते हैं, जहां प्रतिभागियों को ईमानदार माना जाता है। + +लेकिन वास्तव में उपयोगकर्ताओं के लिए प्रतिभागियों की ईमानदारी का आकलन करने का कोई तरीका नहीं है और उपयोगकर्ताओं को डेवलपर्स को अपने भरोसे पर रखना होगा। ZK-STARKs विश्वास की मान्यताओं से मुक्त हैं क्योंकि स्ट्रिंग उत्पन्न करने में उपयोग की जाने वाली यादृच्छिकता सार्वजनिक रूप से सत्यापन योग्य है। इस बीच, शोधकर्ता साबित तंत्र की सुरक्षा बढ़ाने के लिए ZK-SNARKs के लिए गैर-विश्वसनीय सेटअप पर काम कर रहे हैं। + +### क्वांटम कंप्यूटिंग खतरे {#quantum-computing-threats} + +ZK-SNARK एन्क्रिप्शन के लिए एलिप्टिक कर्व क्रिप्टोग्राफी ([ECDSA](/glossary/#ecdsa)) का उपयोग करता है। जबकि ECDSA एल्गोरिथम अभी के लिए सुरक्षित है, क्वांटम कंप्यूटर का विकास भविष्य में इसके सुरक्षा मॉडल को तोड़ सकता है। + +ZK-STARK को क्वांटम कंप्यूटिंग के खतरे से प्रतिरक्षित माना जाता है, क्योंकि यह एन्क्रिप्शन के लिए टकराव प्रतिरोधी हैश का उपयोग करता है। एलिप्टिक वक्र क्रिप्टोग्राफी में उपयोग की जाने वाली सार्वजनिक-निजी चाबी जोड़ी के विपरीत, क्वांटम कंप्यूटिंग एल्गोरिथम को तोड़ने के लिए टकराव-प्रतिरोधी हैशिंग अधिक कठिन है। + +## अतिरिक्त पाठ्यसामग्री {#further-reading} + +- [कंप्यूटर वैज्ञानिक कठिनाई के 5 स्तरों में एक अवधारणा की व्याख्या करता है | वायर्ड](https://www.youtube.com/watch?v=fOGdb1CTu5c) - _वायर किया गया YouTube चैनल_ +- [शून्य-ज्ञान प्रमाणों के लिए उपयोग के मामलों का अवलोकन](https://appliedzkp.org/#Projects) - _गोपनीयता और स्केलिंग अन्वेषण टीम_ +- [SNARKs बनाम STARKS बनाम बार-बार आने वाले SNARKs](https://www.alchemy.com/overviews/snarks-vs-starks) — _Alchemy अवलोकन_ +- [एक शून्य-ज्ञान प्रमाण: ब्लॉकचेन पर गोपनीयता में सुधार](https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/) - _मित्री लावरेनोव_ +- [zk-SNARKs - एक यथार्थवादी शून्य-ज्ञान उदाहरण](https://medium.com/coinmonks/zk-snarks-a-realistic-zero-knowledge-example-and-deep-dive-c5e6eaa7131c) — _एडेम ल्यूसियानो_ +- [ZK-STARKs - क्वांटम कंप्यूटर के खिलाफ भी सत्यापन योग्य विश्वास बनाएं](https://medium.com/coinmonks/zk-starks-create-verifiable-trust-even-against-quantum-computers-dd9c6a2bb13d) — _एडेम ल्यूसियानो_ +- [zk-SNARKs कैसे संभव हैं, इसका एक अनुमानित परिचय](https://vitalik.ca/general/2021/01/26/snarks.html) — _विटालिक ब्यूटेरिन_ +- [शून्य-ज्ञान प्रमाण और ब्लॉकचेन में इसकी भूमिका क्या है?](https://www.leewayhertz.com/zero-knowledge-proof-and-blockchain/) — _LeewayHertz_ diff --git a/src/content/translations/hu/bridges/index.md b/src/content/translations/hu/bridges/index.md new file mode 100644 index 00000000000..bd61edc97c0 --- /dev/null +++ b/src/content/translations/hu/bridges/index.md @@ -0,0 +1,134 @@ +--- +title: Bevezetés a blokklánchidak működésébe +description: A hidak segítségével a felhasználók különböző blokkláncok között tudnak eszközöket mozgatni +lang: hu +--- + +# Blokkláncösszekötők {#prerequisites} + +_A Web3 egy olyan ökoszisztémává fejlődött, ahol L1 blokkláncok és L2 skálázási megoldások találhatók, mind egyedi képességekkel és kompromisszumokkal. Ahogy növekszik a blokkláncprotokollok száma, úgy nő [a kereslet is, hogy az eszközöket láncok között lehessen mozgatni](). Az igény kielégítéséhez összekötőkre vagy hidakra van szükségünk._ + + + +## Mik azok az összekötők vagy hidak? {#what-are-bridges} + +A blokklánchidak épp olyanok, mint a fizikai világban. A fizikai híd két helyet köt össze, a blokklánchíd két blokklánc-ökoszisztémát. A hidak kommunikációs lehetőséget teremtenek a blokkláncok között az információk és eszközök transzferálásával. + +Vegyünk egy példát: + +Ön az Amerikai Egyesült Államokból való és Európába utazik. Amerikai dollárral (USD) rendelkezik, de az utazáson euróra (EUR) van szüksége. Az átváltáshoz használhat egy valutaváltót egy kis díj ellenében. + +De mit csináljunk, ha egy ilyen átváltást két különböző blokkláncon akarunk véghezvinni? Tegyük fel, hogy Ön az Ethereum-főhálózatán lévő ETH-t akarja váltani az [Arbitrumon](https://arbitrum.io/) lévő ETH-ra. Ahogy a fenti példában EUR-t váltottunk, szükség van egy olyan mechanizmusra, mely az ETH összegünket átviszi az Ethereumról az Arbitrumra. A hidak teszik lehetővé az ilyen tranzakciókat. Ebben az esetben az [Arbitrum rendelkezik egy saját híddal](https://bridge.arbitrum.io/), ami átviszi az ETH-t a főhálózatról az Arbitrumra. + +## Miért van szükség hidakra? {#why-do-we-need-bridges} + +Minden blokkláncnak megvannak a maga korlátai. Az Ethereum skálázásához és hogy ki bírja szolgálni a keresletet, rollupokra van szüksége. Más L1 blokkláncok, mint a Solana és az Avalanche, másképpen vannak összerakva, így magasabb tranzakcióátvitelt bírnak, de a decentralizációt áldozzák fel cserébe. + +Ugyanakkor minden blokkláncot elkülönült környezetben fejlesztenek, más szabályok és már konszenzusmechanizmus alapján. Emiatt maguktól nem tudnak egymással kommunikálni, a tokeneket pedig nem lehet szabadon átvinni az egyikről a másikra. + +A hidak kötik össze a blokkláncokat, lehetővé téve az információ és a tokenek áramlását közöttük. + +A hidak lehetőséget adnak arra, hogy: + +- az eszközök és az információk a láncok között mozogjanak +- a decentralizált alkalmazások hozzáférjenek a különféle blokkláncok erősségeihez – így azok képességeit fejleszteni tudják (mivel a protokollok esetében manapság több tér van az innovációra). +- a felhasználók új platformokat érjenek el és hasznosítsák a különböző láncok előnyeit. +- a fejlesztők a különböző blokklánc-ökoszisztémákon együttműködjenek és új platformokat építsenek a felhasználók számára. + +[Hogyan lehet áthelyezni a tokeneket a második blokkláncrétegbe (L2)](/guides/how-to-use-a-bridge/) + + + +## A hidak alkalmazási területei {#bridge-use-cases} + +A következő szcenáriók esetében lehet hidat használni: + +### Alacsonyabb tranzakciós költségek {#transaction-fees} + +Tegyük fel, hogy Ön rendelkezik ETH-szel az Ethereum főhálózatán, de olcsóbb tranzakciós díjat szeretne, hogy különféle alkalmazásokat tudjon használni. Ha a főhálózatról az ETH-t áthelyezi egy L2 rollupmegoldásra, akkor alacsonyabb díjakat élvezhet. + +### Decentralizált alkalmazások (dapp) más blokkláncokon {#dapps-other-chains} + +Tegyük fel, hogy Ön az Aave alkalmazást használja az Ethereum főhálózatán arra, hogy USDT-t kölcsönözzön, de a Polygonon ugyanez az alkalmazás magasabb kamatot ad. + +### A blokklánc-ökoszisztémák felfedezése {#explore-ecosystems} + +Ha Ön ETH összeggel rendelkezik az Ethereum-főhálózaton, de fel szeretne fedezni egy alternatív L1 hálózatot, hogy kipróbálja annak alkalmazásait. A hídon keresztül átviheti az ETH-t a kiválasztott L1-re. + +### Saját kriptoeszközök {#own-native} + +Amennyiben Ön szeretne bitcoint (BTC) birtokolni, de a pénzeszközei az Ethereum főhálózatán vannak. Az Ethereumon becsomagolt formában szerezhet bitcoint (WBTC). Ugyanakkor a WBTC egy ERC-20 token az Ethereum hálózatán, tehát egy Ethereum verziójú bitcoin, és nem az eredeti eszköz a Bitcoin-blokkláncon. Az eredeti BTC megszerzéséhez egy hídon keresztül át kell vinnie a pénzeszközeit a Bitcoin hálózatára. Ezzel áthelyezi a WBTC-t és átváltja BTC-re. Másik irányból, ha Ön rendelkezik BTC-vel, de azt az Ethereum decentralizált pénzügyi (DeFi) protokolljában akarja használni. Ekkor a hídon a másik irányba mozgatja az eszközeit, BTC-ről WBTC-re váltja, majd azt áthelyezi az Ethereumra. + + + Mindezt megteheti egy centralizált tőzsde segítségével is. Ha azonban az eszközei már a tőzsdén vannak, akkor több lépést kell végrehajtani, és akkor már egyszerűbb a hidat használni. + + + + +## A hidak típusai {#types-of-bridge} + +A hidak többféle kialakításúak és összetettségűek. Általánosságban kétféle lehet: bizalmat igénylő és bizalomigénytől mentes. + +| Bizalmat igénylő (trusted) hidak | Bizalomigénytől mentes (trustless) hidak | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| A bizalmat igénylő hidak működése egy központi entitáson vagy rendszeren múlik. | A bizalomigénytől mentes hidak működését okosszerződések és algoritmusok vezérlik. | +| A pénzeszközök felügyelete és a híd biztonsága terén bizalmi feltételezések vannak. A felhasználó a híd működtetőjének reputációjára támaszkodik. | A bizalommentessége azt jelenti, hogy a híd biztonsága megegyezik a mögötte álló blokkláncéval. | +| A felhasználónak át kell engednie a kriptoeszközök feletti kontrollját. | Az okosszerződések révén a felhasználók kontrollja alatt maradnak az eszközök. | + +Röviden, a bizalmat igénylő hidaknál bizalmi feltételezésekkel kell élnünk, míg a bizalomigénytől mentes hidaknál ez minimális és nem merül fel más, mint a mögöttes blokklánc kapcsán. Ezeket a kifejezéseket a következőképpen kell érteni: + +- **Bizalomigénytől mentes (trustless)**: a mögötte található rendszerrel megegyező biztonsági szintje van. Olvassa el [Arjun Bhuptani erről szóló cikkét.](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) +- **Bizalmat igénylő (trusted)**: a mögöttes rendszer biztonságától eltávolodik azzal, hogy külső igazolókat von be a rendszerbe, így kriptogazdasági szempontból kevésbé biztonságos. + +A két megkülönböztetés fő különbségeinek jobb megértése érdekben vegyünk egy példát: + +Tegyük fel, hogy Ön a reptéren a check-in előtt áll. Kétféle ellenőrzés van: + +1. Manuális chek-in – ahol a hivatalnokok manuálisan ellenőrzik a jegyét és a személyazonosságát, mielőtt a belépőkártyát átadnák. +2. Self check-In – ahol egy gép ellenőrzi ezeket és adja ki a belépőkártyát, ha mindent rendben talál. + +A manuális ellenőrzés hasonló a bizalmat igénylő modellhez, mert egy harmadik félen múlik a működése, mint a hivatalnokok. Felhasználóként abban bízunk, hogy a hivatalnokok a megfelelő döntést hozzák és helyesen kezelik a privát információkat. + +A self check-in hasonlít a bizalomigénytől mentes modellhez, mivel kiveszi az operátor szerepét, és a technológia működteti. A felhasználónak mindvégig megmarad a kontroll az adatai felett, és nem kell azokat egy harmadik félre bíznia. + +Számos hidat biztosító megoldás e két modell közötti módszert alakít ki változó bizalmi fokozattal. + + + +## A hidak használatának kockázata {#bridge-risk} + +A hidak fejlesztése még a korai stádiumban van. Nagy valószínűséggel az optimális kialakítás még nem született meg. A hidakkal való interakció a következő kockázatokkal jár: + +- **Okosszerződéses kockázat —** a programkódban lévő hiba miatt a felhasználó pénzeszközei elveszhetnek +- **Technológiai kockázat —** szoftverhiba, hibás kód, emberi hiba, spam és rosszindulatú támadás valószínűleg megakaszthatja a működést + +Emellett, mivel a bizalmat igénylő (trusted) hidak még több bizalmi feltételt jelentenek, ezért több kockázatot is hordoznak magukban: + +- **Cenzúra kockázata —** a hidak működtetői elméletileg meg tudják akadályozni a felhasználót az eszközeinek áthelyezésében +- **Felügyeleti kockázat —** a hidak működtetői összefoghatnak abban, hogy ellopják a felhasználók eszközeit + +A felhasználó eszközei veszélyben vannak, ha: + +- hiba van az okosszerződésben +- a felhasználó hibázik +- a mögöttes blokkláncot megtámadják +- a híd kezelői a bizalmat igénylő (trusted) hidak esetében rosszhiszeműek +- a hidat megtámadják + +Az egyik korábbi, Solana Wormhole híd elleni támadásnál [ 120k wETH-t (325 millió USD) lopott el a támadó](https://rekt.news/wormhole-rekt/). A [blokkláncok elleni legnagyobb támadások hidakat is érintenek](https://rekt.news/leaderboard/). + +A hidak elengedhetetlenek az Ethereum L2 használatához, illetve ha a felhasználók más ökoszisztémákat is fel szeretnének fedezni. Ugyanakkor az ebben rejlő kockázatok miatt meg kell érteni a hidak által hozott kompromisszumokat. Íme néhány [stratégia a láncok közötti biztonság](https://blog.debridge.finance/10-strategies-for-cross-chain-security-8ed5f5879946) témájában. + + + +## További olvasnivaló {#further-reading} + +- [EIP-5164: Láncok közötti műveletek végrehajtása](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658) _2022. június 18. – Brendan Asselstine_ +- [L2 hidak kockázati keretrendszere](https://gov.l2beat.com/t/l2bridge-risk-framework/31) _2022. július 5. – Bartek Kiepuszewski_ +- [A jövő miért inkább többláncú, mint láncok közötti](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) _2022. január 8. – Vitalik Buterin_ +- [Mik azok a blokklánchidak és hogyan kategorizáljuk azokat?](https://blog.li.finance/what-are-blockchain-bridges-and-how-can-we-classify-them-560dc6ec05fa) _2021. február 18. – Arjun Chand_ +- [Mik azok a blokklánchidak?](https://www.alchemy.com/overviews/cross-chain-bridges) _2022. május 10. – Alchemy_ +- [Blokklánchidak: a kriptohálózatok hálózatának megépítése](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) _2021. szeptember 8. – Dmitriy Berenzon_ +- [Hidak a kriptovilágban](https://medium.com/chainsafe-systems/bridges-in-crypto-space-12e158f5fd1e) _2021. augusztus 23. – Ben Adar Hyman_ +- [Az interoperabilitás trilemmája](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) _2021. október 1. – Arjun Bhuptani_ +- [Biztosítani a hidat: a láncok közötti kommunikáció megfelelő módja](https://medium.com/dragonfly-research/secure-the-bridge-cross-chain-communication-done-right-part-i-993f76ffed5d) _2021. augusztus 23. – Celia Wan_ diff --git a/src/content/translations/hu/community/code-of-conduct/index.md b/src/content/translations/hu/community/code-of-conduct/index.md new file mode 100644 index 00000000000..f651b5b2f2e --- /dev/null +++ b/src/content/translations/hu/community/code-of-conduct/index.md @@ -0,0 +1,75 @@ +--- +title: Magatartási szabályok +description: Alapvető szabályok az ethereum.org oldalain. +lang: hu +--- + +## Misszió {#mission} + +A legátfogóbb és legelérhetőbb tudásközpont kifejlesztése és fenntartása az Ethereum számára. + +## Értékek {#values} + +Az ethereum.org közösség arra törekszik, hogy: + +- tanító jellegű legyen, mindenkinek segít megérteni az Ethereumot +- befogadó legyen +- elérhető legyen +- közösség által vezérelt legyen +- az Ethereum mögötti technológiákra és alkalmazási területekre fókuszál +- az Ethereumhoz kapcsolódó koncepciókra és dizájnelvekre fókuszál + +## Nem vagyunk {#what-we-are-not} + +- Az Ethereum Alapítvány weboldala +- Olyan platform, ahol befektetéseket vagy bármilyen profitszerzést támogatunk +- Olyan platform, ahol egyéni projekteket vagy szervezeteket mutatunk be vagy hagyunk jóvá +- Decentralizált tőzsde (DEX), centralizált tőzsde (CEX) vagy bármilyen már pénzügyi platform +- Olyan platform, amely bármilyen pénzügyi vagy jogi tanácsot ad + +## Magatartási szabályok {#code-of-conduct} + +### Vállalás {#pledge} + +Az ethereum.org világképének lényege a nyitott részvétel. Ezt a weboldalt és közösséget ezernyi közreműködő tartja fenn, és ez csak úgy lehetséges, ha egy befogadó, részvételt támogató környezetet tartunk fenn. A közreműködők vállalják, hogy olyan környezetet teremtenek, melynek nem része a bántás vagy bosszantás, a ethereum.org minden platformját és közösségi terét beleértve. Az ethereum.org közösség mindenkit örömmel fogad és értékel, aki konstruktív és barátságos módon részt akar venni, és ebben nem számít a kor, bármilyen alkalmatlanság, etnikum, nemi identitás, tapasztalat, a szakértelem területe, tanulmányok, szociogazdasági státusz, nemzetiség, megjelenés, faj, vallás vagy a diverzitás bármelyik dimenziója. + +### Érvényességi terület {#scope} + +Ez a magatartási szabályzat minden ethereum.org helyre érvényes (mint amilyen a GitHub, Discord, Figma Crowdin, Twitter és más online platformok), és amikor a közösség találkozik a valóságban különféle eseményeken, konferenciákon. + +### Irányelveink {#our-standards} + +A pozitív környezethez hozzájáruló viselkedések például: + +- Befogadó nyelvezetet használunk +- A különböző nézeteket és tapasztalatokat tisztelettel kezeljük +- A konstruktív kritikát örömmel vesszük és együttérzően adjuk +- A konfliktusok és ellentétek esetén nyugodtan és professzionálisan közelítünk +- A többi tag felé empátiával és toleranciával fordulunk +- Bátorítjuk az új hangokat a közösségben + +Az elfogadhatatlan viselkedések például: + +- Fizikai erőszak, azzal való fenyegetés vagy támogatása bármilyen formában +- Szexualitással kapcsolatos beszéd vagy kép használata, illetve ilyen jellegű közeledés +- Egy másik személy eljátszása, vagy rosszhiszeműen azt állítani, hogy egy személlyel vagy szervezettel kapcsolatban áll valaki. +- Zavaró, derogáló kommentek, személyes vagy politikai támadások +- Más tag zaklatása nyilvános vagy privát csatornákon +- Mások privát információinak nyilvánossá tétele, mint fizikai vagy elektronikus cím, kifejezett kérése nélkül +- Pszichológiai manipuláció, csalás vagy más jellegű befolyásolása a tagoknak +- Bármilyen befektetés, token, projekt hirdetése személyes haszonszerzés céljából, legyen az pénzügyi vagy nem +- A szerverek teleszemetelése nem odavaló tartalommal +- A közösségi moderátorok kérését vagy figyelmeztetését nem venni figyelembe +- Bármilyen viselkedés, ami nem tekinthető megfelelőnek egy professzionális helyzetben + +### Jelentés {#reporting} + +A magatartási szabályok megsértése általában látható a közösségnek, mivel mindent nyitott, nyilvános csatornákon kezelünk, hogy a tagok maguk vigyázzák a rendet. + +Ha úgy véli, hogy valami figyelmet igényelne, akkor szóljon egy moderátornak (pl. discord-vezető), így segíthetnek a kivizsgálásban és a megfelelő válasz megtételében. + +A jelentésnél minden részletet adjon meg, példákkal és időpontokkal. Ez segít, hogy igazságos eredmény születhessen. + +### Szankciók {#enforcement} + +Az eset súlyosságától függően figyelmeztetések, átmeneti kizárások és végleges kizárások várhatók az ethereum.org közösségeitől. diff --git a/src/content/translations/hu/community/events/index.md b/src/content/translations/hu/community/events/index.md new file mode 100644 index 00000000000..11362bc8b54 --- /dev/null +++ b/src/content/translations/hu/community/events/index.md @@ -0,0 +1,24 @@ +--- +title: Ethereum események +description: Hogyan lehet bekapcsolódni az Ethereum közösségébe. +lang: hu +hideEditButton: true +--- + +## Közelgő események {#events} + +**Minden hónapban részt vehet Ethereum-eseményeken a világ bármely pontján.** Vegyen részt egy Önhöz közel eső eseményen, hogy találkozzon a közösség tagjaival, megismerje a munkalehetőségeket és új képességeket fejlesszen. + + + +A lista nem teljeskörű, a közösség tagjai frissítik. Tudomása van egy tervezett Ethereum-eseményről? [Kérjük, adja hozzá!](https://github.com/ethereum/ethereum-org-website/blob/dev/src/data/community-events.json) + +## Ethereum-találkozók {#meetups} + +Nem talál olyan eseményt, amely jó lenne Önnek? Próbáljon meg elmenni egy találkozóra. Ezek kisebb események, melyeket az Ethereum-rajongók szerveznek, hogy az Ethereum iránt érdeklődők összegyűljenek, beszélgessenek az Ethereumról, megismerjék az új fejlesztéseket. + + + +Saját találkozót szeretne szervezni? Nézze meg a [BUIDL Network-öt](https://consensys.net/developers/buidlnetwork/), ami a ConsesSys kezdeményezése, hogy támogassa az Ethereum találkozókat. + +Ez a lista nem teljeskörű, a közösség tagjai írják. [Több Ethereum találkozót](https://www.meetup.com/topics/ethereum/) találhat itt. Ismer olyan találkozót szervező csoportot, amelyik nincs a listán? [Kérjük, adja hozzá!](https://github.com/ethereum/ethereum-org-website/blob/dev/src/data/community-meetups.json) diff --git a/src/content/translations/hu/community/get-involved/index.md b/src/content/translations/hu/community/get-involved/index.md new file mode 100644 index 00000000000..1073907af8f --- /dev/null +++ b/src/content/translations/hu/community/get-involved/index.md @@ -0,0 +1,138 @@ +--- +title: Hogyan lehet ebben részt venni? +description: Hogyan lehet bekapcsolódni az Ethereum közösségébe. +lang: hu +--- + +# Hogyan lehet ebben részt venni? {#get-involved} + +Az Ethereum-közösségek tagjai különféle háttérrel és képességekkel rendelkeznek. Lehet Ön fejlesztő, művész vagy könyvelő, mindenkinek lehetősége van közreműködni. Az alábbi javaslatok segíthetnek megtalálni a megfelelő kiindulási pontot. + +Kezdje azzal, hogy elolvassa az ethereum.org misszióját és értékeit a [magatartási szabályok](/community/code-of-conduct) oldalon. + +## Fejlesztők {#developers} + +- Tanuljon az Ethereumról és próbálja ki az [ethereum.org/developers/](/developers/) oldalon +- [Nyerjen jutalmat a Gitcoin-on](https://gitcoin.co/) azáltal, hogy kisebb-nagyobb technikai problémákon dolgozik, és kapjon érte kriptót! +- Vegyen részt egy Önhöz közel eső [ETHGlobal](http://ethglobal.co/) hackathonon! +- Nézze meg azokat a [projekteket, melyek a szakterületéhez vagy a választott programnyelvéhez kapcsolódnak](/developers/docs/programming-languages/) +- Vegyen részt a [protokollfejlesztők megbeszélésein (Core Dev calls)](https://www.youtube.com/playlist?list=PLaM7G4Llrb7zfMXCZVEXEABT8OSnd4-7w) +- [Ökoszisztémát támogató programok listája](https://esp.ethereum.foundation/wishlist/) – eszközök, dokumentáció és infrastruktúra, ahol az Ethereum-ökoszisztémát támogató programok aktívan várják a támogatásért jelentkezőket +- [Web3Bridge](https://www.web3bridge.com/) – csatlakozzon az inspiráló web3-közösséghez, mely egész Afrikában fejlesztők és közösségi tagok százait választja ki, tanítja be és támogatja +- Csatlakozzon a [Ethereum Cat Herders Discord](https://discord.io/EthCatHerders) csatornához + +## Kutatók és akadémikusok {#researchers-and-academics} + +Ön matematikus, kriptográfus vagy közgazdász háttérrel rendelkezik? Érdeklik az élvonalbeli tevékenységek az Ethereum-ökoszisztéma kapcsán: + +- Írjon vagy véleményezzen egy Ethereum fejlesztési javaslatot (EIP) + - Írjon EIP-t + 1. Adja be ötletét az [Ethereum Magicians csoportnak](https://ethereum-magicians.org) + 2. Olvassa el az [EIP-1-et](https://eip.ethereum.org/EIPS/eip-1) – **Igen, ez a _teljes_ dokumentum.** + 3. Kövesse az EIP-1 iránymutatásait. Hivatkozzon rá, ahogy a vázlatot készíti. + - Tudja meg, hogyan lehet [EIP-szerkesztő](https://eips.ethereum.org/EIPS/eip-5069) + - Ön is véleményezheti az EIP-ket már most! Nézze meg a [nyitott PR-okat az `e-review` címkét](https://github.com/ethereum/EIPs/pulls?q=is%3Apr+is%3Aopen+label%3Ae-review) használva. Adjon technikai visszajelzést a `discussion-to` hivatkozáson. + - Vegyen részt az [EIP-menedzsementben](https://github.com/ethereum-cat-herders/EIPIP) + - Csatlakozzon a [Ethereum Cat Herders Discord](https://discord.io/EthCatHerders) csatornához + - [Bővebben az EIP-kről](/eips/) +- [Challenges.ethereum.org](https://challenges.ethereum.org/) – magas értékű kutatói jutalmak, ahol akár >$100 000 dollárnál is többet kaphat +- [Ethresear.ch](https://ethresear.ch) – az Ethereum elsődleges kutatói fóruma, illetve a világ legbefolyásosabb fóruma a kriptogazdaság terén +- [EF Research AMA](https://old.reddit.com/r/ethereum/comments/vrx9xe/ama_we_are_ef_research_pt_8_07_july_2022) – egy folyamatos kérdés-válasz sorozat a kutatókkal. A következő részek megnyitásakor bárki feltehet kérdéseket. +- [Ökoszisztémát támogató programok listája](https://esp.ethereum.foundation/wishlist/) – kutatási területek, ahol az Ethereum-ökoszisztémát támogató programok aktívan várják a támogatásért jelentkezőket + +[Fedezzen fel még több kutatási területet](/community/research/). + +## Nem technikai képességek {#non-technical} + +Ha Ön nem fejlesztő, nehéz lehet felmérni, hogy hol kapcsolódjon be az Ethereum világába. Íme néhány javaslat hivatkozásokkal együtt a specifikus szakmai hátterekhez. + +### Szervezzen találkozót a városában {#meetups} + +- Nem tudja, hogyan kezdje? A [BUIDL-hálózat](https://consensys.net/developers/buidlnetwork/) segít benne. + +### Írjon az Ethereumról {#write-content} + +- Az Ethereumnak szüksége van jó írókra, akik el tudják magyarázni az értékeit egyszerű nyelven +- Még nem áll készen, hogy a saját cikkét megjelentesse? Vegyen részt a meglévő tartalom kezelésében vagy [javasoljon új tartalmat az ethereum.org számára](/contributing/)! + +### Készítsen jegyzetet a közösségi megbeszéléseken (community calls) {#take-notes} + +- Számos nyilvános közösségi megbeszélés létezik, ahol a jegyzet készítése nagy segítség. Ha érdekli Önt, akkor csatlakozzon az [Ethereum Cat Herders discord](https://discord.com/invite/Nz6rtfJ8Cu) csatornához, és mutatkozzon be! + +### Fordítsa saját nyelvére az Ethereumhoz kapcsolódó tartalmat {#translate-ethereum} + +- Az ethereum.org egy fordítói programot is üzemeltet, mely a weboldalakat és más forrásokat fordítja különféle nyelvekre +- Nézze meg [itt](/contributing/translation-program), hogyan tudna ebben segíteni + +### Csomópont futtatása {#run-a-node} + +Csatlakozzon ezernyi csomópont működtetőjéhez, hogy az Ethereum még decentralizáltabb legyen. + +- [Bővebben a csomópontok futtatásáról](/developers/docs/nodes-and-clients/run-a-node/) + +### Helyezze letétbe a rendelkezésére álló ETH-t {#staking} + +A letétbe helyezéssel jutalmakat tud szerezni, miközben segít az Ethereum hálózatát biztosítani. + +- [Többet a letétbe helyezésről](/staking/) + +### Támogasson projekteket {#support-projects} + +Az Ethereum-ökoszisztéma missziója, hogy közjóval kapcsolatos és nagy hatást tevő projekteket finanszírozzon. Még a kis adományokkal is kimutathatja támogatását és fontos munkákat segíthet. + +- [Gitcoin](https://gitcoin.co/fund) +- [clr.fund](https://clr.fund/#/about) + +## Pénzügyi szakemberek és könyvelők {#financial-professionals} + +- Az Ethereum otthont ad a decentralizált pénzügyek ökoszisztémának – protokollok és alkalmazások hálózata, ami egy alternatív pénzügyi rendszert kínál. Nézzen meg néhány DeFi-alkalmazást a [DeFi Llama](https://defillama.com/) vagy [DeFiPrime](https://defiprime.com) oldalakon +- Ön könyvelő? Az Ethereum-eszközök, mint ETH, tokenek, DeFi stb. számtalan új könyvelési kérdést vetnek fel. Nézzen meg néhány projektet, amelyek a felhasználók könyvelési kihívásait próbálják támogatni – ilyen például a [Rotki](https://rotki.com/) + +## Termékmenedzserek {#product-managers} + +- Az Ethereum-ökoszisztémának az Ön tehetségére is szüksége van! Számos cég keres ilyen pozícióra munkaerőt. Ha szeretne egy nyílt forráskódú projektben közreműködni, keresse meg az [Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu) vagy [MetaCartel](https://www.metacartel.org/) csapatokat + +## Marketing {#marketing} + +- Számtalan marketinggel és kommunikációval összefüggő pozíció érhető el az Ethereumnál! + +## Ethereum-álláslehetőségek {#ethereum-jobs} + +**Szeretne munkát találni az Ethereum világában?** + +- [ethereum.org jobs](/about/#open-jobs) +- [Ethereum Foundation job board (Lever)](https://jobs.lever.co/ethereumfoundation) +- [Ethereum Foundation job board (BambooHR)](https://ethereum.bamboohr.com/jobs/) +- [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/) +- [Ethereum-álláslehetőségek](https://startup.jobs/ethereum-jobs) +- [CryptoJobster](https://cryptojobster.com/tag/ethereum/) + +## Csatlakozzon egy DAO-hoz {#decentralized-autonomous-organizations-daos} + +A DAO-k decentralizált autonóm szervezetek. Ezek az Ethereum technológiára építve működtetnek szerveződéseket és együttműködéseket. Például a tagság kezelése, a javaslatok megszavazása vagy összegyűjtött eszközök kezelése kapcsán. Bár kísérleti fázisban vannak, de rengeteg lehetőséget ajánlanak, hogy találjon egy hasonlóan gondolkodó csoportot, együttműködő partnereket és hatást gyakoroljon az Ethereum közösségre. [Bővebben a DAO-król](/dao/) + +- [DAOSquare](https://www.daosquare.io) [@DAOSquare](https://twitter.com/DAOSquare) – _A DAO koncepció támogatása a nem technikai területeken, illetve hogy az emberek értéket teremtsenek a DAO által_ +- [Developer DAO](https://www.developerdao.com/) [@developer_dao](https://twitter.com/developer_dao) – _Fejlesztők közössége, akik hisznek az internet közös tulajdonlásában_ +- [dOrg](https://dOrg.tech) [@dOrg_tech](https://twitter.com/dOrg_tech) – _egy szabadúszó web3-fejlesztői csapat, amely DAO-ként működik_ +- [DXdao](https://DXdao.eth.link/) [@DXdao](https://twitter.com/DXdao_) – _decentralizált dapp- és protokollfejlesztés, illetve -irányítás_ +- [HausDAO](https://daohaus.club) [@nowdaoit](https://twitter.com/nowdaoit) – _A DAOhaus közösségi irányítása_ +- [Hero DAO](https://herodao.org/) [@hero_dao](https://twitter.com/hero_dao) – _Közösség által tulajdonolt szuperhős franchise_ +- [LexDAO](https://lexdao.coop) [@lex_DAO](https://twitter.com/lex_DAO) – _Jogi szerepkörök_ +- [Machi X](https://machix.com) [@MachiXOfficial](https://twitter.com/MachiXOfficial) - _Művészeti közösség_ +- [MetaCartel](https://metacartel.org) [@Meta_Cartel](https://twitter.com/Meta_Cartel) – _DAO inkubátor_ +- [MetaCartel Ventures](https://metacartel.xyz) [@VENTURE_DAO](https://twitter.com/VENTURE_DAO) – _kockázati tőke a korai fázisban lévő kriptoprojektek számára_ +- [MetaGame](https://metagame.wtf) [@MetaFam](https://twitter.com/MetaFam) – _MMORPG játékmechanika a való élethez_ +- [MetaFactory](https://metafactory.ai) [@TheMetaFactory](https://twitter.com/TheMetaFactory) – _Digifizikális ruházati márkák_ +- [ΜΓΔ](https://metagammadelta.com/) (Meta Gamma Delta) [@metagammadelta](https://twitter.com/metagammadelta) – _Nők által vezetett projektek_ +- [MolochDAO](https://molochdao.com) [@MolochDAO](https://twitter.com/MolochDAO) – _Az Ethereum-fejlesztések finanszírozását intéző közösség_ +- [Raid Guild](https://raidguild.org) [@RaidGuild](https://twitter.com/RaidGuild) – _Web3-fejlesztők csoportja_ + +Kérjük, hogy az ethereum.org [magatartási szabályait](/community/code-of-conduct) vegye figyelembe, amikor bármilyen kezdeményezésben közreműködik! diff --git a/src/content/translations/hu/community/grants/index.md b/src/content/translations/hu/community/grants/index.md new file mode 100644 index 00000000000..ebfbecf2baf --- /dev/null +++ b/src/content/translations/hu/community/grants/index.md @@ -0,0 +1,53 @@ +--- +title: Az Ethereum Alapítvány és közösségi támogatói program +description: A támogatói programok listája az egész Ethereum-ökoszisztémára vonatkozóan. +lang: hu +--- + +# Ethereum-támogatások {#ethereum-grants} + +Az itt bemutatott programok különféle finanszírozási támogatást adnak projekteknek, melyek az Ethereum-ökoszisztéma sikerét és fejlődését segítik elő. Használja ezt útmutatóként ahhoz, hogy finanszírozási lehetőséget találjon magának és jelentkezzen, hogy a következő Ethereum-projektje sikerét előmozdítsa. + +A listát a közösség tartja karban. Ha bármit hiányol vagy nem talál helyesnek, akkor szerkessze az oldalt! + +## Kiterjedt Ethereum-ökoszisztéma {#broad-ethereum-ecosystem} + +Ezek a programok a kiterjed Ethereum-ökoszisztémát támogatják és a projektek széles körének ajánlanak finanszírozást. Mint a skálázási megoldások, közösségépítés, biztonság, adatvédelem és még sok más. Nem kötődnek valamelyik platformhoz, és mindig jó kiindulópont, ha valamiért Ön bizonytalan a támogatások témájában. + +- [EF Ecosystem Support Program](https://esp.ethereum.foundation) – _Nyílt forráskódú projektek finanszírozása: fókuszban az egyetemes eszközök, infrastruktúra, kutatás és közjavak_ +- [Ethereum RFPs](https://github.com/ethereum/requests-for-proposals) – _Javaslatok kérése az Ethereum Alapítvány által az ökoszisztémában való munkavégzés és projektek kapcsán_ +- [MetaCartel](https://www.metacartel.org/grants/) – _Dapp fejlesztése, DAO létrehozása_ +- [Moloch DAO](https://www.molochdao.com/) – _Adatvédelem, L2 skálázás, kliensbiztonság és más területek_ +- [Open Grants](https://opengrants.com/explore) +- [DAO Grants](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) - _A támogatást ajánló szervezetek listája Google-táblázatban_ +- [Crunchbase for Web3 Grants](https://www.cryptoneur.xyz/web3-grants) – _Támogatások szűrése és keresése kategória, alkalmazási terület, összeg és egyéb alapján. Segítsen, hogy mások is megtalálják a megfelelő támogatást._ +- [Academic Grants](https://esp.ethereum.foundation/academic-grants) – _Az Ethereummal kapcsolatos akadémiai munkák támogatása_ + +## Projektspecifikus {#project-specific} + +Projektek által adott támogatás olyanoknak, akik az adott technológiát fejlesztenék vagy kísérleteznének vele. + +- [Aave Grants Program](https://aavegrants.org/) – _[Aave](https://aave.com/) támogatási DAO_ +- [Balancer](https://balancergrants.notion.site/Balancer-Community-Grants-23e562c5bc4347cd8304637bff0058e6) – _[Balancer](https://balancer.fi/) ökoszisztéma finanszírozási alapja_ +- [Chainlink Grants Program](https://chain.link/community/grants) – _[Chainlink](https://chain.link/) közösségi támogatások_ +- [Compound Grants Program](https://compoundgrants.org/) – _[Compound](https://compound.finance/) pénzügyi ökoszisztéma_ +- [Decentraland Grants Program](https://governance.decentraland.org/grants/) – _[Decentraland](https://decentraland.org/) DAO Metaverzum_ +- [Lido Ecosystem Grants Organisation (LEGO)](https://lego.lido.fi/) – _[Lido](https://lido.fi/) pénzügyi ökoszisztéma_ +- [MetaMask Program](https://metamaskgrants.org/) – _[MetaMask](https://metamask.io/) munkavállalók által vezetett támogatási DAO_ +- [mStable Grants Program](https://docs.mstable.org/advanced/grants-program) – _[mStable](https://mstable.org/) közösség_ +- [SKALE Network Grants Program](https://skale.space/developers#grants) – _[SKALE Network](https://skale.space/) ökoszisztéma_ +- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) – _[The Graph](https://thegraph.com/) ökoszisztéma_ +- [UMA Grants Program](https://grants.umaproject.org/) – _[UMA](https://umaproject.org/) fejlesztői támogatás_ +- [Uniswap Grants Program](https://www.unigrants.org/) – _[Uniswap](https://uniswap.org/) közösség_ +- [Web3-támogatások](https://web3grants.net) – _A web3/kripto területén futó támogatási programok kimerítő listája_ + +## Kvadratikus finanszírozás {#quadratic-funding} + +Az Ethereum nyílt forráskódú gyökerei egy érdekes, új finanszírozási modellhez vezettek: kvadratikus finanszírozás. Ennek lehetősége van azt a módot továbbfejleszteni, ahogy a közjavak finanszírozását kezelhetjük. A kvadratikus finanszírozás gondoskodik arról, hogy azok a projektek kapják a finanszírozást, amelyre tényleg a legnagyobb az igény. Tehát azokat támogatjuk, amelyek a leginkább magasabb szintre emelik az emberek életét. [Bővebben a kvadratikus finanszírozásról.](/defi/#quadratic-funding) + +- [Gitcoin](https://gitcoin.co/grants) +- [clr.fund](https://clr.fund/) + +## Dolgozzon az Ethereumnál {#work-in-ethereum} + +Még nem áll készen, hogy a saját projektjét elindítsa? Cégek százai keresnek lelkes munkavállalókat, hogy az Ethereum-ökoszisztémában közreműködjenek. Többet szeretne tudni? [Nézze meg az Ethereummal kapcsolatos álláshirdetéseket](/community/get-involved/#ethereum-jobs) diff --git a/src/content/translations/hu/community/language-resources/index.md b/src/content/translations/hu/community/language-resources/index.md new file mode 100644 index 00000000000..1eca7a08156 --- /dev/null +++ b/src/content/translations/hu/community/language-resources/index.md @@ -0,0 +1,130 @@ +--- +title: Nyelvi források +description: Az Ethereumról szóló nem angol nyelvű források +lang: hu +--- + +# Nyelvi források {#language-resources} + +Az Ethereum közösség globális és sok millió nem angolul beszélő taggal bír. + +Az a célunk, hogy oktatási anyagokat biztosítsunk minden nyelven és segítsünk a nyelvi akadályok leküzdését, amely sok ember számára kihívást jelent. + +Ha Ön az anyanyelvén olvasna szívesen, vagy ismer olyat, aki nem beszél angolul, akkor alább hasznos forrásokat talál. Ethereum rajongók százezrei gyűlnek össze ezeken az online fórumokon, hogy megosszák a híreket, megbeszéljék az új fejlesztéseket, megvitassák a technikai problémákat és elképzeljék a jövőt. + +Ismer valamilyen oktatási anyagot az anyanyelvén? [Adjon be egy kérést](https://github.com/ethereum/ethereum-org-website/issues/new/choose), hogy adják hozzá a listához! + +## Ethereum.org források {#ethereum-org} + +Az Ethereum.org oldalait 40 nyelven olvashatja a [nyelvek oldalon](/languages). + +Ha Ön kétnyelvű és segítene nekünk, hogy több embert érjünk el, akkor közreműködhet az [ethereum.org Fordítói programban](/contributing/translation-program/#translation-program) és segíthet lefordítani a weboldalt. + +## Közösségi források {#community} + +### Brazíliai portugál {#br-pt} + +**Hírek** + +- [BeInCrypto](http://www.beincrypto.com.br) – kriptovalutával kapcsolatos hírek és cikkek, beleértve a tőzsdék listáját, amelyek Braziliában elérhetők +- [Cointelegraph](http://cointelegraph.com.br/category/analysis) – brazil verzió a főbb kriptovalutával kapcsolatos hírekkel +- [Livecoins](http://www.livecoins.com.br/ethereum) – kriptovalutával kapcsolatos hírek és eszközök +- [Seudinheiro](http://www.seudinheiro.com/criptomoedas/) – kriptovalutával kapcsolatos hírek és riportok + +**Oktatás** + +- [web3dev](https://www.web3dev.com.br/) – tartalomközpont és Discord-közösség web3-fejlesztők számára. +- [Web3Brasil](https://github.com/web3brasil/web3brasil) – web3 és DeFi oktatóanyagok +- [CriptoFacil](http://www.criptofacil.com/ultimas-noticias/) – kriptovalutával kapcsolatos hírek és oktatás, beleértve az Ethereum kezdőknek és a DeFi kezdőknek anyagokat +- [CriptoAtivos](http://www.criptoativos.wiki.br/) – a kriptovaluta világa, oktatás és blog +- [Cointimes](http://www.cointimes.com.br/) – kriptovalutával kapcsolatos hírek és oktatás +- [Web3 starter pack](https://docs.google.com/document/d/1X8PSTFH7FTw9J-gbKWM6Y430SWCBT8d4t4pJgFQHJ8E/) – útmutató, ami a leggyakoribb és alapvető kriptokérdésekre ad választ + +### Kínai {#zh} + +**Általános források** + +- [Ethereum.cn](https://www.ethereum.cn/) – közösségi tartalom, amely a konszenzusréteg frissítéseit, a core dev megbeszélések jegyzeteit, L2-ket stb. tartalmazza. +- [EthFans](https://github.com/editor-Ajian/EthFans.org-annual-collected-works/) – tanuljon meg mindent az alapoktól a haladó szintű Ethereum-témákig +- [Unitimes](https://mp.weixin.qq.com/s/tvloZSDBSOQN9zDQj_91kA) – közösségi tartalom, amely az Ethereum, DeFi, NFT, web3 témákhoz tartozó tudást fedi le +- [123ETH](https://123eth.org/) – Portál az Ethereum-ökoszisztémához +- [Zhen Xiao](http://zhenxiao.com/blockchain/) – ingyenes online kurzusok a kriptovalutáról és alkalmazásairól +- [Ethereum Whitepaper](https://github.com/ethereum/wiki/wiki/[%E4%B8%AD%E6%96%87]-%E4%BB%A5%E5%A4%AA%E5%9D%8A%E7%99%BD%E7%9A%AE%E4%B9%A6) – az Ethereum tanulmányok kínai verziói + +**Ethereum-ökoszisztéma** + +- [ETHPlanet](https://www.ethplanet.org/) – online és személyes hackathonok, képzés egyetemisták számára +- [PrimitivesLane](https://www.primitiveslane.org/) – non-profit kutatói csoport, amely a blokklánc-technológiára fókuszál +- [Ethereum Translation Community CN](https://www.notion.so/Ethereum-Translation-Community-CN-05375fe0a94c4214acaf90f42ba40171) – az Ethereum oktatási anyagok lefordítása + +**Fejlesztőknek** + +- [DappLearning](https://github.com/Dapp-Learning-DAO/Dapp-Learning) – tanulócsoport a legfontosabb dapp-projektek tanulmányozására, gondolatok és kommentek megosztása hetente +- [LearnBlockchain](https://learnblockchain.cn/) – fejlesztői közösség a blokklánc-technológiával kapcsolatos információk megosztására + +**Kriptográfiai kutatóknak** + +- [SecbitLabs](https://mp.weixin.qq.com/s/69_tqBJpr_sbaKtR1sBRMw) – WeChat-profil, amely a kriptográfiát, biztonságot stb. magyarázza el. +- [Sparkbyte](https://mp.weixin.qq.com/s/9KgKTc_jtJ7bWKdbNPoqvQ) – WeChat profil, amely a zero-knowledge technológiát ismerteti + +### Cseh {#cs} + +- [Gwei.cz](https://gwei.cz) – helyi közösség a web3 körül, amely oktatási anyagokat készít, online és személyes találkozókat szervez +- [Gwei.cz Příručka](https://prirucka.gwei.cz/) – Ethereum útmutató kezdőknek +- [DAO Příručka](https://dao.gwei.cz/) – útmutató kezdőknek a DAO-okról +- [Mastering Ethereum](https://ipfs.infura-ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) – Az Ethereum elsajátítása, cseh verzió + +### Francia {#fr} + +- [Ethereum France](https://www.ethereum-france.com/) – az Ethereum mentén események szervezése, tartalomkészítés, beszélgetések +- [Ethereum.fr](https://ethereum.fr/) – Ethereummal kapcsolatos hírek és oktatás +- [BanklessFR](https://banklessfr.substack.com/) – Bankless hírlevél franciául +- [CryptoFR](https://cryptofr.com/category/44/ethereum-general) – kriptovalutával kapcsolatos fórum egy Ethereum aloldallal + +### Német {#de} + +- [Microsoft Learn (Solidity)](https://docs.microsoft.com/de-de/learn/modules/blockchain-learning-solidity/) – A Solidity használata +- [Microsoft Learn (smart contracts)](https://docs.microsoft.com/de-de/learn/modules/blockchain-solidity-ethereum-smart-contracts/) – Ethereum okosszerződések írása Solidity-val +- [Microsoft Learn (Ethereum networks)](https://docs.microsoft.com/de-de/learn/modules/blockchain-ethereum-networks/) – az Ethereum-hálózatokhoz való kapcsolódás és azok telepítése +- [Microsoft Learn (blockchains)](https://docs.microsoft.com/de-de/learn/paths/ethereum-blockchain-development/) – a blokkláncfejlesztés első lépései + +### Olasz {#it} + +- [Ethereum Italia](https://www.ethereum-italia.it/) – Ethereummal kapcsolatos oktatás, események és hírek, főleg az okosszerződésekről és a blokklánc-technológiáról +- [Ethereum Italia Podcast](https://www.ethereum-italia.it/podcast/) – Ethereum podcast olaszul +- [Microsoft Learn (Solidity)](https://docs.microsoft.com/it-it/learn/modules/blockchain-learning-solidity/) – A Solidity használatának bemutatása +- [Microsoft Learn (Smart contracts)](https://docs.microsoft.com/it-it/learn/modules/blockchain-solidity-ethereum-smart-contracts/) – Okosszerződések írása a Solidity-val +- [Microsoft Learn (dapps)](https://docs.microsoft.com/it-it/learn/modules/blockchain-create-ui-decentralized-apps/) – felhasználói felület létrehozása decentralizált alkalmazásokkal + +### Orosz {#ru} + +- [Cyber Academy](https://cyberacademy.dev) – Oktatási anyagok web3-fejlesztők számára + +### Spanyol {#es} + +- [Ethereum Madrid](https://ethereummadrid.com/) – blokklánc, DeFi és irányítási tanfolyamok, események és blog +- [Cointelegraph](https://es.cointelegraph.com/ethereum-for-beginners) – Ethereum útmutató kezdőknek spanyolul +- [Tutoriales online](https://tutoriales.online/curso/solidity) – sajátítsa el a Solidity használatát és programozást az Ethereumon +- [Curso Introducción a Ethereum Development](https://youtube.com/playlist?list=PLTqiwJDd_R8y9pfUBjhkVa1IDMwyQz-fU) – A Solidity alapjai, az első okosszerződések tesztelése és telepítése +- [Curso Introducción a Seguridad y Hacking en Ethereum](https://youtube.com/playlist?list=PLTqiwJDd_R8yHOvteko_DmUxUTMHnlfci) – gyakori sebezhető pontok és biztonsági problémák a valódi okosszerződésekben +- [Curso Introducción a DeFi Development](https://youtube.com/playlist?list=PLTqiwJDd_R8zZiP9_jNdaPqA3HqoW2lrS) – tanulja meg, hogyan működnek a DeFi okosszerződések a Solidity-ben és készítse el a saját automata Market Maker-ét +- [Cryptoversidad](https://www.youtube.com/c/Cryptoversidad) – Nem technikai blokkláncok oktatása a kezdőtől a haladó szintig. Tudjon meg mindent a kriptóról és az Ethereumról. + +### Török {#tr} + +- [BTK Akademi](https://www.btkakademi.gov.tr/portal/course/blokzincir-ve-kripto-paralar-10569#!/about) – blokklánc- és kriptovaluta-központú tanfolyam +- [Az nagyszerű átnevezés: mi történt az Eth2-vel?](https://miningturkiye.org/konu/ethereum-madenciligi-bitiyor-mu-onemli-gelisme.655/) – török fordítása a blogpostnak, ami elmagyarázza az eth2-től való elmozdulást + +### Vietnámi {#vi} + +- [Tino Group](https://wiki.tino.org/ethereum-la-gi/) – Ethereum, dapp-ok, tárcák áttekintése és gyakran ismételt kérdések +- [Tap Chi Bitcoin](https://tapchibitcoin.io/tap-chi/tin-tuc-ethereum-eth) – webplatform Ethereummal kapcsolatos hírekkel és oktatással +- [Coin68](https://coin68.com/ethereum-tieu-diem/) – kriptovaluta-portál Ethereummel kapcsolatos hírekkel és oktatási anyagokkal + +### Japán {#ja} + +- [Japán virtuális és kriptoeszközök tőzsdei szövetsége](https://jvcea.or.jp/) +- [Japán kriptoeszközök üzleti szövetsége](https://cryptocurrency-association.org/) +- [A blokkláncfejlesztés első lépései – Oktatási anyagok | Microsoft Docs](https://docs.microsoft.com/ja-jp/learn/paths/ethereum-blockchain-development/) – a blokkláncba és fejlesztésbe való bevezetés az Ethereum platformon +- [Mastering Ethereum](https://www.oreilly.co.jp/books/9784873118963/) – Az Ethereum elsajátítása, japán verzió +- [Hands-On Smart Contract Development with Solidity and Ethereum](https://www.oreilly.co.jp/books/9784873119342/) – okosszerződés fejlesztés Solidity-val az Ethereumon japánul diff --git a/src/content/translations/hu/community/online/index.md b/src/content/translations/hu/community/online/index.md new file mode 100644 index 00000000000..037934c6007 --- /dev/null +++ b/src/content/translations/hu/community/online/index.md @@ -0,0 +1,50 @@ +--- +title: Online közösségek +description: A támogatói programok listája az egész Ethereum-ökoszisztémára vonatkozóan. +lang: hu +--- + +# Online közösségek {#online-communities} + +Ethereum rajongók százezrei gyűlnek össze ezeken az online fórumokon, hogy megosszák a híreket, megbeszéljék az új fejlesztéseket, megvitassák a technikai problémákat és elképzeljék a jövőt. + +## Fórumok {#forums} + +r/ethereum – minden az Ethereumról +r/ethfinance – az Ethereum pénzügyi része, beleértve a decentralizált pénzügyeket (DeFi) +r/ethdev – az Ethereum fejlesztéséről +r/ethtrader – trendek és piaci elemzések +r/ethstaker – az Ethereumon történő letétbe helyezés iránt érdeklődőknek +Fellowship of Ethereum Magicians – a technikai szabványok felé orientálódó közösség +Ethereum Stackexchange – az Ethereum-fejlesztők támogatása +Ethereum Research – a legbefolyásosabb üzenőfal a kriptogazdasági kutatáshoz + +## Csevegőszobák {#chat-rooms} + +Ethereum Cat Herders – projektmanagement-támogatás az Ethereum-fejlesztésekhez +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ég +EthStaker 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 +Matos 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és +Solidity Matrix – solidity fejlesztősről (Matrix) szóló csevegés +Ethereum Stack Exchange _–kérdések és válaszok fóruma_ +Peeranha _– decentralizált kérdések és válaszok fóruma_ + +## YouTube és Twitter {#youtube-and-twitter} + +Ethereum Alapítvány – legyen napra kész az Ethereum Alapítvány újdonságaival kapcsolatban +@ethereum – az Ethereum Alapítvány hivatalos profilja +@ethdotorg – portál az Ethereumhoz, a növekvő globális közösségünk számára +Nagy befolyással bíró Ethereum Twitter-fiókok listája + + + + +
    + + Tudjon meg többet a DAO-król + +
    +
    diff --git a/src/content/translations/hu/community/research/index.md b/src/content/translations/hu/community/research/index.md new file mode 100644 index 00000000000..24b92d10a0f --- /dev/null +++ b/src/content/translations/hu/community/research/index.md @@ -0,0 +1,396 @@ +--- +title: Az Ethereum-kutatás aktív területei +description: Fedezze fel a nyitott kutatás különféle területeit, és hogy hogyan tud Ön is bekapcsolódni. +lang: hu +--- + +# Az Ethereum-kutatás aktív területei {#active-areas-of-ethereum-research} + +Az Ethereum egyik fontos erőssége, hogy egy aktív kutatási és mérnöki közösség folyamatosan fejleszti. Számtalan lelkes és képezett ember a világ minden táján szeretné belevetni magát egy jelenlegi problémába, de gyakran nem könnyű megtalálni, hogy mik azok. Ez az oldal körvonalazza a legfontosabb aktív kutatási területeket. + +## Hogyan működik az Ethereum-kutatás {#how-ethereum-research-works} + +Az Ethereum-kutatás nyitott és transzparens, a [decentralizált tudomány (DeSci)](https://hackernoon.com/desci-decentralized-science-as-our-chance-to-recover-the-real-science) elveit testesítve meg. Olyan kultúrát követünk, amely a kutatási eszközöket és eredményeket olyan nyilvánossá és interaktívvá teszi, amennyire csak lehetséges, például a végrehajtható fájlok révén. Az Ethereum kutatás-gyorsan halad, az új eredményeket nyilvánosan posztolják és megvitatják az olyan fórumokon, mint az [ethresear.ch](https://ethresear.ch/), ahelyett hogy a hagyományos módon, a véleményezések után adnák ki a nyilvánosságnak. + +## Általános kutatási források {#general-research-resources} + +Minden témára gazdag forrás található az [ethreser.ch](https://ethresear.ch) és az [Eth R&D Discord csatornán](https://discord.gg/qGpsxSA). Ezek a főbb helyek, ahol a kutatók megvitatják a legutóbbi ötleteket és fejlesztési lehetőségeket. + +Ez a riport 2022. májusában készült, melyben a [DelphiDigital](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum) egy kiváló áttekintést készített az Ethereum fejlesztési tervéről (roadmap). + +## Finanszírozási források {#sources-of-funding} + +Ön is bekapcsolódhat az Ethereum-kutatásba, és kereshet vele! Például az [Ethereum Alapítvány](/foundation/) nemrég adott [akadémikus finanszírozási támogatásokat](https://esp.ethereum.foundation/academic-grants). Az [Ethereum-támogatások oldalon](/community/grants/) megtalálhatja az aktív és jövőbeli finanszírozási lehetőségeket. + +## Protokollkutatás {#protocol-research} + +A protokollkutatás az Ethereum alaprétegével foglalkozik – szabályok összessége, hogy a csomópontok hogyan kapcsolódnak, kommunikálnak, cserélik és tárolják az adatot, és hogyan jutnak konszenzusra a blokklánc státuszát illetően. A protokollkutatás két fő kategóriára oszlik: konszenzus és végrehajtási. + +### Consensus {#consensus} + +A konszenzuskutatás az [Ethereum proof-of-stake mechanizmusával](/developers/docs/consensus-mechanisms/pos/) foglalkozik. Néhány példa: + +- sebezhető pontok azonosítása és befedése; +- a kriptogazdasági biztonság mérése; +- a kliensbevezetések biztonságának vagy teljesítményének növelése; +- és könnyű kliensek fejlesztése. + +Emellett a jövőbe előretekintő kutatások, a protokoll alapvető újratervezése, mint amilyen az egy sloton belüli véglegesedés is, jelentős fejlődést tudnának hozni az Ethereum számára. Továbbá a peer-to-peer hálózat hatékonysága, biztonsága és monitorozása a konszenzus kliensek között is fontos terület. + +#### Háttér olvasmányok {#background-reading} + +- [Introduction to proof-of-stake](/developers/docs/consensus-mechanisms/pos/) +- [Casper-FFG paper](https://arxiv.org/abs/1710.09437) +- [Casper-FFG magyarázat](https://arxiv.org/abs/1710.09437) +- [Gasper paper](https://arxiv.org/abs/2003.03052) + +#### Jelenlegi kutatás {#recent-research} + +- [Ethresear.ch konszenzus](https://ethresear.ch/c/consensus/29) +- [Elérhetőség/Véglegesség dilemma](https://arxiv.org/abs/2009.04987) +- [Single slot finality](https://ethresear.ch/t/a-model-for-cumulative-committee-based-finality/10259) +- [Javaslattevő-építő szétválasztása](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance) + +### Végrehajtási {#execution} + +A végrehajtási réteg a tranzakciók feldolgozását végzi, az [Ethereum virtuális gépet (EVM)](/developers/docs/evm/) futtatja és végrehajtási csomagokat küld a konszenzusrétegnek. Számos aktív kutatási terület van, beleértve a: + +- a könnyű kliens támogatás kiépítése; +- gáz korlátok kutatása; +- és új adatstruktúrák (pl. Verkle-fák) beépítése. + +#### Háttér olvasmányok {#background-reading-1} + +- [Bevezetés az EVM-be](/developers/docs/evm) +- [Ethresear.ch végrehajtási réteg](https://ethresear.ch/c/execution-layer-research/37) + +#### Jelenlegi kutatás {#recent-research-1} + +- [Adatbázis optimalizáció](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/db_faq.md) +- [State expiry](https://notes.ethereum.org/@vbuterin/state_expiry_eip) +- [Utak a státusz lejáratának beállításához](https://hackmd.io/@vbuterin/state_expiry_paths) +- [Verkle és státusz lejáratának beállítása](https://notes.ethereum.org/@vbuterin/verkle_and_state_expiry_proposal) +- [Előzmények kezelése](https://eips.ethereum.org/EIPS/eip-4444) +- [Verkle-fák](https://vitalik.ca/general/2021/06/18/verkle.html) +- [Adatelérhetőség mintavétele](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding) + +## Kliensfejlesztés {#client-development} + +Az Ethereum kliensek az Ethereum protokoll implementációi. A kliensfejlesztés teszi lehetővé, hogy a protokoll kutatás eredményei valósággá váljanak azáltal, hogy ezekbe a kliensekbe beépítik azokat. A kliens fejlesztés magába foglalja a kliensspecifikációk frissítését és specifikus implementációk beépítését. + +Az Ethereum-csomópontok két szoftvert futtatnak: + +1. a konszenzuskliens a blokklánc elejét/fejét trekkeli, elterjeszti a blokkokat (pletyka) és kezeli a konszenzus logikáját +2. a végrehajtási kliens az Ethereum virtuális gépet támogatja, valamint a tranzakciókat és okosszerződéseket futtatja + +Bővebb információkért tekintse át a [node-ok és kliensek oldalt](/developers/docs/nodes-and-clients/), ahol a jelenlegi kliensbevezetések listáját is megtalálja. Az Ethereum-fejlesztésekről is találhat információkat az [Ethereum története oldalon](/history/). + +### Végrehajtási kliensek {#execution-clients} + +- [Végrehajtási kliens specifikációja](https://github.com/ethereum/execution-specs) +- [Végrehajtási API-specifikáció](https://github.com/ethereum/execution-apis) + +### Konszenzusos kliensek {#consensus-clients} + +- [Konszenzuskliens-specifikáció](https://github.com/ethereum/consensus-specs) +- [Beacon API-specifikáció](https://ethereum.github.io/beacon-APIs/#/Beacon/getStateRoot) + +## Skálázás és teljesítmény {#scaling-and-performance} + +Az Ethereum skálázása egy hatalmas kutatási terület. A jelenlegi megközelítések felölelik a rollupokba történő tranzakciógyűjtést, ami az adatblobok használatával rendkívül olcsó lesz a felhasználók számára. A skálázás áttekintését megtalálja a [skálázási oldalon](/developers/docs/scaling). + +### 2. réteg {#layer-2} + +Jelenleg több második blokkláncréteg (L2) protokoll létezik, ami az Ethereumot skálázza, amelyek különféle technikákkal csomagolják össze a tranzakciókat és biztosítják azokat az L1 rétegen. Ez egy gyorsan fejlődő téma rengeteg kutatási és fejlesztési potenciállal. + +#### Háttér olvasmányok {#background-reading-2} + +- [Bevezetés az L2-be](/layer-2/) +- [Polynya: Rollupok, DA és moduláris láncok](https://polynya.medium.com/rollups-data-availability-layers-modular-blockchains-introductory-meta-post-5a1e7a60119d) + +#### Jelenlegi kutatás {#recent-research-2} + +- [Szekvenszerek fair rendezési logikája az Arbitrumon](https://eprint.iacr.org/2021/1465) +- [ethresear.ch L2](https://ethresear.ch/c/layer-2/32) +- [Rollupközpontú fejlesztési terv](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) +- [L2Beat](https://l2beat.com/) + +### Bridges {#bridges} + +Az L2 az egyik területe még több kutatást és fejlesztést igényel – ez pedig nem más, mint a hidak biztonsága és teljesítménye. Ez a különböző L2 megoldások közötti hidakra, valamint az L1 és L2 közötti hidakra vonatkozik. Fontos terület, mert gyakori célpontja a támadásoknak. + +#### Háttér olvasmányok {#background-reading-3} + +- [Bevezetés a blokklánchidak működésébe](/bridges/) +- [Vitalik a hidakról](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) +- [A blokklánchidakról szóló cikk](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) +- [A hidakba ragadt érték]() + +#### Jelenlegi kutatás {#recent-research-3} + +- [Hidak validálása](https://stonecoldpat.github.io/images/validatingbridges.pdf) + +### Sharding {#sharding} + +Az Ethereum blokklánc shardingja már régóta része a terveknek. Míg az új skálázási megoldások, mint a Danksharding, mostanában kerülnek a középpontba. + +#### Háttér olvasmányok {#background-reading-4} + +- [Proto-Danksharding jegyzetek](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq) +- [Bankless Danksharding videó](https://www.youtube.com/watch?v=N5p0TB77flM) +- [Ethereum Sharding kutatási összefoglaló](https://notes.ethereum.org/@serenity/H1PGqDhpm?type=view) +- [Danksharding (Polynya)](https://polynya.medium.com/danksharding-36dc0c8067fe) + +#### Jelenlegi kutatás {#recent-research-4} + +- [EIP-4844: Proto-Danksharding](https://eips.ethereum.org/EIPS/eip-4844) +- [Vitalik a shardingról és az adatelérhetőség mintavételezésről](https://hackmd.io/@vbuterin/sharding_proposal) + +### Hardver {#hardware} + +A [csomópontok futtatása](/developers/docs/nodes-and-clients/run-a-node/) szerényebb hardvereken alapvető lenne az Ethereum decentralizáltan tartásához. Ezért a hardverszükségletek minimalizálása is fontos kutatási terület. + +#### Háttér olvasmányok {#background-reading-5} + +- [Ethereum on ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/) + +#### Jelenlegi kutatás {#recent-research-5} + +- [ecdsa a FGPA-król](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738) + +## Biztonság {#security} + +A biztonság nagyon kiterjedt téma, beleértjük a szemetelés (spam) és család elleni védelmet, a tárca-, hardver- és kriptogazdasági biztonságot, az alkalmazások és kliensszoftverekben való hibakeresést és ezek tesztelését, valamint a kulcskezelést is. E területek mélyebb feltárása hozzájárul a szélesebb körű alkalmazáshoz. + +### Kriptográfia és zero-knowledge bizonyítékok {#cryptography--zkp} + +A zero-knowledge bizonyítékok (ZKP) és a kriptográfia kritikus a személyes adatok védelme és a biztonság szempontjából. A zero-knowledge egy viszonylag új, de gyorsan fejlődő ág, számos nyitott kutatási és fejlesztési lehetőségekkel. Néhány kiemelt lehetőség, például a hatékonyabb implementációja a [Keccak hashing algoritmusnak](https://hackmd.io/sK7v0lr8Txi1bgION1rRpw?view#Overview), jobb polinomiális kommitmentek találása vagy az ecdsa nyilvános kulcsok és aláírás ellenőrző hálózatok költségének csökkentése. + +#### Háttér olvasmányok {#background-reading-6} + +- [0xparc blog](https://0xparc.org/blog) +- [zkp.science](https://zkp.science/) +- [Zero Knowledge podcast](https://zeroknowledge.fm/) + +#### Jelenlegi kutatás {#recent-research-6} + +- [Előrelépés az elliptikus görbe kriptográfiában](https://ethresear.ch/t/the-ec-fft-algorithm-without-elliptic-curve-and-isogenies/11346) +- [Ethresear.ch ZK](https://ethresear.ch/c/zk-s-nt-arks/13) + +### Tárcák {#wallets} + +Az Ethereum tárcák lehetnek böngészőkiterjesztések, asztali gépen és mobilon lévő alkalmazások vagy okosszerződések az Ethereumon. Aktív kutatás folyik a hagyományos módon visszaállítható tárcák területén, hogy az egyéni felhasználói kulcs kezelése kevesebb kockázatot jelentsen. A tárcák fejlődéséhez kapcsolódik az éppen születő kutatási terület a számlaabsztrakciók alternatív formáiról. + +#### Háttér olvasmányok {#background-reading-7} + +- [Bevezetés a tárcákba](/wallets/) +- [Bevezetés a tárcabiztonságba](/security/) +- [ethresear.ch biztonság](https://ethresear.ch/tag/security) +- [EIP-2938 számlaabsztrakció](https://eips.ethereum.org/EIPS/eip-2938) +- [EIP-4337 számlaabsztrakció](https://eips.ethereum.org/EIPS/eip-4337) + +#### Jelenlegi kutatás {#recent-research-7} + +- [Validáció fókuszú okosszerződéses tárcák](https://ethereum-magicians.org/t/validation-focused-smart-contract-wallets/6603) +- [A számlák jövője](https://ethereum-magicians.org/t/validation-focused-smart-contract-wallets/6603) +- [EIP-3074 AUTH és AUTHCALL operációs kódok](https://eips.ethereum.org/EIPS/eip-3074) +- [Külső tulajdonú címen (EOA) kód publikálása](https://eips.ethereum.org/EIPS/eip-5003) + +## Közösség, oktatás és a felhasználók elérése {#community-education-and-outreach} + +Az új felhasználók bevezetése az Ethereumra új oktatási anyagokat igényel és új megközelítéseket az emberek elérésére. Ezek lehetnek blog bejegyzések és cikkek, könyvek, podcastok, mémek, oktatási anyagok, események és bármi más, ami közösséget épít, fogadja az újonnan érkezőket és tanítja őket az Ethereumról. + +### UX/UI {#uxui} + +Ahhoz, hogy több embert lehessen bevezetni az Ethereum világába, fejleszteni kell a felhasználói élményt / kezelőfelületet (UX/UI). Ehhez a dizájnerek és termékszakértők meg kell vizsgálják a tárcák és alkalmazások dizájnját. + +#### Háttér olvasmányok {#background-reading-8} + +- [Ethresear.ch UX/UI](https://ethresear.ch/c/ui-ux/24) + +#### Jelenlegi kutatás {#recent-research-8} + +- [Web3 Design Discord](https://discord.gg/FsCFPMTSm9) +- [Web3 dizájnelvek](https://www.web3designprinciples.com/) +- [Ethereum Magicians beszélgetés az UX-ről](https://ethereum-magicians.org/t/og-council-ux-follow-up/9032/3) + +### Közgazdaságtan {#economics} + +Az Ethereumban a gazdasági kutatás nagyjából két megközelítés mentén zajlik: a mechanizmusok biztonságának validálása, melyek a gazdasági ösztönzőkön alapulnak (mikroökonómia), valamint a protokoll, az alkalmazások és a felhasználók közötti értékáramlás elemzése (makroökonómia). Összetett kriptogazdasági tényezők állnak fenn az Ethereum saját eszközei (ether) és a rá épülő tokenek (mint NFT-k és ERC20 tokenek) kapcsán. + +#### Háttér olvasmányok {#background-reading-9} + +- [Robosztus ösztönzők csoportja](https://ethereum.github.io/rig/) +- [ETHconomics workshop a Devconnecten](https://www.youtube.com/playlist?list=PLTLjFJ0OQOj5PHRvA2snoOKt2udVsyXEm) + +#### Jelenlegi kutatás {#recent-research-9} + +- [EIP1559 empirikus elemzése](https://arxiv.org/abs/2201.05574) +- [Az ellátási lánc (supply) egyensúlyának kiterjesztése](https://ethresear.ch/t/circulating-supply-equilibrium-for-ethereum-and-minimum-viable-issuance-during-the-proof-of-stake-era/10954) +- [A MEV mennyiségének meghatározása: mennyire sötét ez az erdő?](https://arxiv.org/abs/2101.05511) + +### Blokkméret és díjpiacok {#blockspace-fee-markets} + +A blokkméretpiacok irányítják, hogy a felhasználó tranzakciói közvetlenül az Ethereumban (L1) vagy hidakkal összekötött hálózatokon keresztül (pl. rollupok (L2)) kerülnek-e be a blokkláncba. Az Ethereumon a tranzakciók a díjpiacra kerülnek, melyet az EIP-1559 mentén vezettek be a protokollba, hogy ne lehessen szemeteléssel (spam) és ártorlódással veszélyeztetni a láncot. Mindkét rétegen a tranzakciók externáliákat hoznak létre, melyet maximálisan kinyerhető értéknek (MEV) neveznek, és új piaci struktúrát eszközölt, hogy ezt megszerezze vagy kezelje. + +#### Háttér olvasmányok {#background-reading-10} + +- [Tranzakciós díj mechanizmus dizájn az Ethereum-blokkláncra: EIP-1559 gazdasági elemzése (Tim Roughgarden, 2020.)](https://timroughgarden.org/papers/eip1559.pdf) +- [EIP-1559 szimulációi (RIG)](https://ethereum.github.io/abm1559) +- [A rollupgazdaság az alapelvektől](https://barnabe.substack.com/p/understanding-rollup-economics-from?utm_source=url) +- [Flash Boys 2.0: Beelőzés, tranzakcióátrendezés és konszenzusinstabilitás a decentralizált tőzsdéken](https://arxiv.org/abs/1904.05234) + +#### Jelenlegi kutatás {#recent-research-10} + +- [Multidimenzionális EIP-1559 videós bemutató](https://youtu.be/QbR4MTgnCko) +- [Területek közötti MEV](http://arxiv.org/abs/2112.01472) +- [MEV aukciók](https://ethresear.ch/t/mev-auction-auctioning-transaction-ordering-rights-as-a-solution-to-miner-extractable-value/6788) + +### Proof-of-stake ösztönzők {#proof-of-stake-incentives} + +A validátorok az Ethereum saját eszközét (ether) használják fedezetként a rosszhiszemű viselkedés ellen. Ennek kriptogazdasága határozza meg a hálózat biztonságát. A szofisztikált validátorok talán képesek kihasználni az ösztönző réteg finom részleteit, hogy támadást indítsanak. + +#### Háttér olvasmányok {#background-reading-11} + +- [Ethereum-gazdaságtani mesterkurzus és gazdasági modell](https://github.com/CADLabs/ethereum-economic-model) +- [A PoS ösztönzők szimulációja (RIG)](https://ethereum.github.io/beaconrunner/) + +#### Jelenlegi kutatás {#recent-research-11} + +- [A tranzakciók cenzúrának való ellenállásának növelése a javaslattevő/építő elkülönítéssel (PBS)](https://notes.ethereum.org/s3JToeApTx6CKLJt8AbhFQ) +- [Három támadás a PoS Ethereum ellen](https://arxiv.org/abs/2110.10086) + +### Likvid letétbe helyezés és derivatívák {#liquid-staking-and-derivatives} + +A likvid letétbe helyezés lehetővé teszi, hogy a 32 ETH-nél kevesebbel rendelkező felhasználók is részesüljenek jutalomban azáltal, hogy az ETH-t átváltják letétbe helyezett ethert képviselő tokenre, amit a decentralizált pénzügyekben (DeFi) használni lehet. Ugyanakkor az ezzel kapcsolatos ösztönzők és piaci dinamizmusok még feltárásra várnak, az Ethereum biztonságra gyakorolt hatásukkal együtt (pl. centralizáció kockázata). + +#### Háttér olvasmányok {#background-reading-12} + +- [Ethresear.ch likvid letétbe helyezés](https://ethresear.ch/search?q=liquid%20staking) +- [Lido: Az út az Ethereum bizalomigénytől mentes letétbe helyezéséhez](https://blog.lido.fi/the-road-to-trustless-ethereum-staking/) +- [Rocket Pool: Bevezetés a letétbe helyezés protokolljába](https://medium.com/rocket-pool/rocket-pool-staking-protocol-part-1-8be4859e5fbd) + +#### Jelenlegi kutatás {#recent-research-12} + +- [A Lidotól való visszavonások kezelése](https://ethresear.ch/t/handling-withdrawals-in-lidos-eth-liquid-staking-protocol/8873) +- [Kivételi hitelesítő adatok](https://ethresear.ch/t/withdrawal-credential-rotation-from-bls-to-eth1/8722) +- [A likvid letéti derivatívák kockázatai](https://notes.ethereum.org/@djrtwo/risks-of-lsd) + +## Testing {#testing} + +### Formális ellenőrzés {#formal-verification} + +A formális ellenőrzés egy olyan kód, amely igazolja, hogy az Ethereum konszenzusspecifikációi helyesek, és nincs bennük hiba. A specifikációnak van egy végrehajtható verziója, melyet Python nyelven írtak, és ami fenntartást és fejlesztést igényel. A kutatás segíthet feltárni ennek a specifikációimplementációnak a fejlesztési lehetőségét, és eszközöket biztosíthat, hogy az ellenőrzés robusztusabb legyen. + +#### Háttér olvasmányok {#background-reading-13} + +- [Bevezetés a formális ellenőrzésbe](https://ptolemy.berkeley.edu/projects/embedded/research/vis/doc/VisUser/vis_user/node4.html) +- [Formális ellenőrzés (Intel)](https://www.cl.cam.ac.uk/~jrh13/papers/mark10.pdf) + +#### Jelenlegi kutatás {#recent-research-13} + +- [A letéti szerződés formális ellenőrzése](https://github.com/runtimeverification/deposit-contract-verification) +- [A Beacon-lánc specifikáció formális ellenőrzése](https://github.com/runtimeverification/deposit-contract-verification) + +## Adattudomány és elemzés {#data-science-and-analytics} + +Több adatelemzési eszközre és irányítópultra van szükség, hogy részletes adatokat nyújtson az Ethereum működéséről és a hálózat egészségéről. + +### Háttér olvasmányok {#background-reading-14} + +- [Dune Analytics](https://dune.com/browse/dashboards) +- [Kliensdiverzitási irányítópult](https://clientdiversity.org/) + +#### Jelenlegi kutatás {#recent-research-14} + +- [Robust Incentives Group adatelemzése](https://ethereum.github.io/rig/) + +## Alkalmazások és eszközök {#apps-and-tooling} + +Az alkalmazási réteg a programok kiterjedt ökoszisztémáját támogatja, melyek tranzakciókat hajtanak végre az Ethereum alaprétegén. A fejlesztői csapatok állandón új utakat találnak az Ethereum felhasználására, hogy átjárható, engedélymentes és cenzúrának ellenálló alkalmazásokat készítsenek, egyrészt a fontos web2 eszközök mását, másrészt teljesen új web3-koncepciókat. Eközben olyan új eszközöket fejlesztenek, melyekkel a dappok Ethereumra való építése kevésbé bonyolulttá válik. + +### DeFi {#defi} + +A decentralizált pénzügyek (DeFi) az egyik elsődleges alkalmazáscsoport, melyet az Ethereumra építettek. Ennek célja az egymásra illeszthető „pénz építőkockák” létrehozása, amellyel a felhasználók tárolnak, küldenek, kölcsönöznek, kölcsönvesznek és befektetnek kriptoeszközöket az okosszerződések használatával. A DeFi egy gyorsan fejlődő terület, mely folyamatosan megújul. Folyamatos igény van a biztonságos, hatékony és elérhető protokollokra. + +#### Háttér olvasmányok {#background-reading-15} + +- [DeFi](/defi/) +- [Coinbase: Mi az a DeFi?](https://www.coinbase.com/learn/crypto-basics/what-is-defi) + +#### Jelenlegi kutatás {#recent-research-15} + +- [Decentralizált pénzügyek, centralizált tulajdonlás?](https://arxiv.org/pdf/2012.09306.pdf) +- [Optimism: Az út a subdolláros tranzakciókhoz](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) + +### DAO-k {#daos} + +Az Ethereum képes arra, hogy decentralizált módon irányítson a decentralizált autonóm szervezetek (DAO) segítségével. Sok aktív kutatás folyik, hogy hogyan lehetne fejleszteni a DAO-kat az Ethereumon, felhasználni azokat az irányítás fejlettebb formáira, mint egy minimális bizalmat igénylő, koordinációs eszköz, mely nagyban kiterjeszti az emberek opcióit a hagyományos szervezeteken túlra. + +#### Háttér olvasmányok {#background-reading-16} + +- [Bevezetés a DAO-kba](/dao/) +- [Dao Collective](https://daocollective.xyz/) + +#### Jelenlegi kutatás {#recent-research-16} + +- [A DAO-ökoszisztéma feltérképezése](https://www.researchgate.net/publication/358694594_Mapping_out_the_DAO_Ecosystem_and_Assessing_DAO_Autonomy) + +### Fejlesztői eszközök {#developer-tools} + +Az Ethereum fejlesztők eszközei gyorsan fejlődnek. Ezen a területen is sok aktív kutatás folyik. + +#### Háttér olvasmányok {#background-reading-17} + +- [Eszközök programnyelv szerint](/developers/docs/programming-languages/) +- [Fejlesztői keretrendszerek](/developers/docs/frameworks/) +- [Konszenzusfejlesztői eszközök listája](https://github.com/ConsenSys/ethereum-developer-tools-list) +- [Token szabványok](/developers/docs/standards/tokens/) +- [Biastek: Ethereum-eszközök](https://biastek.com/ethereum-tools/) +- [CryptoDevHub: EVM-eszközök](https://cryptodevhub.io/wiki/ethereum-virtual-machine-tools) + +#### Jelenlegi kutatás {#recent-research-17} + +- [Eth R&D Discord koznszenzuseszközök csatornája](https://discordapp.com/channels/595666850260713488/746343380900118528) + +### Orákulumok {#oracles} + +Az orákulumok importálják be a láncon kívüli adatokat a blokkláncra egy engedélymentes és decentralizált módon. Mivel ez az adat a láncon belül van, ezért a dappok képesek lekövetni a világ változásait, mint a valódi eszközök árfluktuációja, a láncon kívüli alkalmazások adatai vagy akár az időjárásváltozás. + +#### Háttér olvasmányok {#background-reading-18} + +- [Bevezetés az orákulumok világába](/developers/docs/oracles/) + +#### Jelenlegi kutatás {#recent-research-18} + +- [A blokkláncorákulumok vizsgálata](https://arxiv.org/pdf/2004.07140.pdf) +- [Chainlink tanulmány](https://chain.link/whitepaper) + +### Alkalmazásbiztonság {#app-security} + +Az Ethereum elleni támadások általában az egyéni alkalmazások gyenge pontjait használják ki, nem a protokollét. A támadók és az alkalmazásfejlesztők egy fegyverkezési versenybe kényszerültek, hogy új támadásokat és új védekezéseket fejlesszenek. Ebből az következik, hogy mindig fontos a kutatás és fejlesztés, hogy az alkalmazások biztonságban legyenek. + +#### Háttér olvasmányok {#background-reading-19} + +- [Féreglyuk-kihasználási jelentés](https://blog.chainalysis.com/reports/wormhole-hack-february-2022/) +- [Az Ethereum-szerződés támadásainak listája](https://forum.openzeppelin.com/t/list-of-ethereum-smart-contracts-post-mortems/1191) +- [Rekt hírek](https://twitter.com/RektHQ?s=20&t=3otjYQdM9Bqk8k3n1a1Adg) + +#### Jelenlegi kutatás {#recent-research-19} + +- [ethresear.ch alkalmazások](https://ethresear.ch/c/applications/18) + +### Technológiai köteg {#technology-stack} + +A teljes Ethereum-technológiai köteg decentralizálása is egy érdekes kutatási terület. Jelenleg az Ethereum dappoknak gyakran vannak centralizációs pontjai, mert központi eszközökön vagy infrastruktúrán alapulnak. + +#### Háttér olvasmányok {#background-reading-20} + +- [Ethereum stack](/developers/docs/ethereum-stack/) +- [Coinbase: Bevezetés a Web3-ba](https://blog.coinbase.com/a-simple-guide-to-the-web3-stack-785240e557f0) +- [Bevezetés az okosszerződésekbe](/developers/docs/smart-contracts/) +- [Bevezetés a decentralizált tárhelybe](/developers/docs/storage/) + +#### Jelenlegi kutatás {#recent-research-20} + +- [Okosszerződés összeilleszthetőség](/developers/docs/smart-contracts/composability/) diff --git a/src/content/translations/hu/community/support/index.md b/src/content/translations/hu/community/support/index.md new file mode 100644 index 00000000000..e72011afbd1 --- /dev/null +++ b/src/content/translations/hu/community/support/index.md @@ -0,0 +1,116 @@ +--- +title: Ethereum támogatás +description: Kapjon támogatást az Ethereum-ökoszisztémában. +lang: hu +--- + +# Ethereum támogatás {#support} + +## Hivatalos Ethereum ügyfélszolgálat {#official-support} + +Egy hivatalos Ethereum ügyfélszolgálatot keres? Tudnia kell, hogy az Ethereum decentralizált. Nincs központi szervezet, entitás vagy ember, aki birtokolná az Ethereumot, ezért nincs hivatalos ügyfélszolgálat vagy támogatói csapat sem. + +Ezt azért is fontos megérteni, mert bárki jelentkezik Önnél, mint hivatalos ügyfélszolgálatos, az csak csaló lehet! A csalók ellen a legjobb védekezés az ismeretek szerzése és a biztonság komolyan vétele. + + + Ethereum-biztonság és átverés elleni védelem + + + + Ismerje meg az Ethereum alapjait + + +Amellett, hogy nincs hivatalos ügyfélszolgálat, számtalan csoport, közösség és projekt szeretne Önnek segíteni, illetve rengeteg hasznos információ és forrás áll rendelkezésre ezeken az oldalakon. További kérdése van? Csatlakozzon az [ethereum.org Discord](/discord/) csatornához, és megpróbálunk segíteni. + +## Tárca támogatás {#wallet-support} + +Gondjai vannak a tárcájával? A legtöbb tárcának van dedikált támogatói csapata, akik segítenek: + +- [MetaMask](https://metamask.zendesk.com/hc/) +- [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._ + +Ethereum-tárcát keres? [Fedezze fel az Ethereum-tárcák teljes választékát](/wallets/find-wallet/). + +## Dapp-fejlesztés {#building-support} + +A fejlesztés tele van kihívásokkal. Alább található néhány fejlesztőket támogató platform, tapasztalt Ethereum-fejlesztőkkel. + +- [Alchemy University](https://university.alchemy.com/#starter_code) +- [CryptoDevs discord](https://discord.gg/Z9TA39m8Yu) +- [Ethereum StackExchange](https://ethereum.stackexchange.com/) +- [StackOverflow](https://stackoverflow.com/questions/tagged/web3) +- [Web3 University](https://www.web3.university/) +- [LearnWeb3](https://discord.com/invite/learnweb3) + +Emellett dokumentációkat és fejlesztői útmutatókat is talál az [Ethereum fejlesztői források](/developers/) szekcióban. + +### Eszközök {#dapp-tooling} + +A kérdése egy bizonyos eszközhöz, projekthez vagy könyvtárhoz kapcsolódik? A legtöbb projekt működtet csevegőszervereket vagy fórumokat ilyen célból. + +Néhány népszerű példa: + +- [Solidity](https://gitter.im/ethereum/solidity/) +- [ethers.js](https://discord.gg/6jyGVDK6Jx) +- [web3.js](https://discord.gg/GsABYQu4sC) +- [Hardhat](https://discord.gg/xtrMGhmbfZ) +- [Truffle](https://discord.gg/8uKcsccEYE) +- [Alchemy](http://alchemy.com/discord) +- [Tenderly](https://discord.gg/fBvDJYR) + +## Csomópontok futtatása {#node-support} + +Ha Ön csomópontot vagy validátort futtat, a következő közösségek segítenek belevágni. + +- [EthStaker discord](https://discord.io/ethstaker) +- [EthStaker reddit](https://www.reddit.com/r/ethstaker) + +Az Ethereum klienseket építő csapatok is dedikált, nyilvános fórumokkal rendelkeznek, ahol kérdezni lehet. + +### Végrehajtási kliensek {#execution-clients} + +- [Geth](https://discord.gg/FqDzupGyYf) +- [Nethermind](https://discord.gg/YJx3pm8z5C) +- [Besu](https://discord.gg/p8djYngzKN) +- [Erigon](https://github.com/ledgerwatch/erigon/issues) + +### Konszenzusos kliensek {#consensus-clients} + +- [Prysm](https://discord.gg/prysmaticlabs) +- [Nimbus](https://discord.gg/nSmEH3qgFv) +- [Lighthouse](https://discord.gg/cyAszAh) +- [Teku](https://discord.gg/7hPv2T6) +- [Lodestar](https://discord.gg/aMxzVcr) + +Tudja meg, hogy [futtathat csomópontot](/developers/docs/nodes-and-clients/run-a-node/). + +## Gyakran ismételt kérdések {#faq} + +#### Rossz tárcába küldtem az ETH-t {#wrong-wallet} + +Az Ethereumon küldött tranzakció visszavonhatatlan. Sajnos, ha rossz pénztárcába küldte az ETH-t, nincs mód arra, hogy visszaszerezze ezeket az összegeket. Nincs központi szervezet, entitás vagy személy, aki birtokolja az Ethereumot, tehát nincs, aki visszafordítaná a tranzakciót. Ezért létfontosságú, hogy mindig ellenőrizze a tranzakcióit, mielőtt elküldi azokat. + +#### Hogyan juthatok hozzá az Ethereum-ajándékhoz? {#giveaway-scam} + +Az Ethereum ajándékok csalások, amik el akarják lopni az Ön ETH-ját. Ne essen kísértésbe az olyan ajánlatoktól, amelyek túl szépnek tűnnek ahhoz, hogy igazak legyenek – ha az ETH-t egy ajándékcímre küldi, akkor nem kap ajándékot, és nem tudja visszaszerezni a pénzét. + +[Bővebben a csalás elkerüléséről](/security/#common-scams) + +#### A tranzakcióm beragadt {#stuck-transaction} + +A tranzakciók az Ethereumon néha várakoznak, ha a tranzakciós díj alacsonyabb, mint amit épp megkíván a hálózati kereslet. Számos tárcában lehetősége van újraküldeni ugyanazt a tranzakciót egy magasabb díjjal, hogy az át tudjon menni. Alternatívaként leállíthatja a függőben lévő tételt úgy, hogy egy tranzakciót küld a címéről és ugyanazt a Nonce-t használja, mint a függőben lévő tételnél. + +[Hogyan lehet felgyorsítani vagy leállítani a függő tranzakciókat a MetaMaskon](https://metamask.zendesk.com/hc/en-us/articles/360015489251-How-to-speed-up-or-cancel-a-pending-transaction) + +[Hogyan lehet leállítani a függőben lévő Ethereum-tranzakciókat](https://info.etherscan.com/how-to-cancel-ethereum-pending-transactions/) + +#### Hogyan lehet Ethereumot bányászni? {#mining-ethereum} + +Az Ethereum bányászat többé nem elérhető. Az Ethereum áttért a proof-of-work mechanizmusról a proof-of-stake-re, így a bányászat nem létezik. Ehelyett validátorok vannak. A validátorok letétbe helyeznek ETH-t és ezért jutalmakat kapnak, miközben biztosítják a hálózatot. + +#### Hogyan válhat letétbe helyezővé/validátorrá? {#become-validator} + +A validátornak 32 ETH-t kell letétbe helyezni az Ethereum letéti szerződésben és fel kell állítani egy csomópontot. További információk [a letétbehelyezésről szóló oldalon](/staking) és a[letéti launchpaden](https://launchpad.ethereum.org/) érhetők el. diff --git a/src/content/translations/hu/dao/index.md b/src/content/translations/hu/dao/index.md new file mode 100644 index 00000000000..e5d05700901 --- /dev/null +++ b/src/content/translations/hu/dao/index.md @@ -0,0 +1,165 @@ +--- +title: Decentralizált autonóm szervezetek (DAO-k) +description: Az Ethereumon működő DAO-k áttekintése +lang: hu +template: use-cases +emoji: ":handshake:" +sidebarDepth: 2 +image: ../../../../assets/use-cases/dao-2.png +alt: Egy javaslatra történő DAO-szavazat ábrázolása. +summaryPoint1: Tagtulajdonú közösségek központi vezetők nélkül. +summaryPoint2: Biztonságos módja az interneten történő, ismeretlenekkel való együttműködésnek. +summaryPoint3: Egy biztonságos hely, ahol pénzét adott célokra fordíthatja. +--- + +## Mik azok a DAO-k? {#what-are-daos} + +A DAO egy kollektívan tulajdonolt, blokklánc által irányított szervezet, amely egy közös cél megvalósítására törekszik. + +A DAO-k lehetőséget biztosítanak számunkra, hogy hozzánk hasonló elhivatottságú emberekkel dolgozzunk a világ minden tájáról anélkül, hogy egy központi vezetőre bíznánk a pénzügyi és operatív működtetést. Nincs olyan vezérigazgató, aki a kedve szerint költhetné el az alapokat, vagy olyan pénzügyi vezető, aki manipulálhatná a könyvelést. Helyette a kódba épített, blokkláncon alapuló szabályok határozzák meg, hogyan működik a szervezet és kerülnek elköltésre az alapok. + +Beépített pénztárakkal rendelkeznek, amelyekhez a csoport jóváhagyása nélkül senkinek sincs jogosultsága hozzáférni. A döntéseket szavazatokkal és javaslatokkal hozzák meg, így biztosítva, hogy mindenki hangot adhasson véleményének a szervezeten belül és minden nyomon követhető legyen a blokkláncon. + +## Miért van szükségünk DAO-kra? {#why-dao} + +Egy pénzügyi forrásokat és pénzt igénylő szervezet indítása nagyon sok bizalmat igényel azon emberek vonatkozásában, akikkel együtt dolgozunk. Azonban nehéz megbízni valakiben, akivel csak az interneten keresztül léptünk kapcsolatba. A DAO-k esetében nem kell megbíznia a csoport többi tagjában, kizárólag a DAO kódjában, mely 100%-ban átlátható és bárki által ellenőrizhető. + +Ennek köszönhetően rengeteg lehetőség nyílik meg a globális együttműködésre és koordinációra. + +### Összehasonlítás {#dao-comparison} + +| DAO | Egy hagyományos szervezet | +| --------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| Általában lapos és teljesen demokratizált. | Rendszerint hierarchikus. | +| Bármely változtatás végrehajtásához a tagok szavazata szükséges. | A felépítésen alapszik, egyetlen tagtól is követelhető változás, vagy szavazásra is bocsátható a kérdés. | +| A szavazatokat összeszámolják, a szavazás eredményét pedig automatikusan végrehajtják egy megbízott közvetítő nélkül. | Ha megengedett a szavazás, akkor a szavazatokat a szervezeten belül összeszámolják, a szavazás eredményét pedig manuálisan végrehajtják. | +| A szolgáltatásokat automatikusan, decentralizált módon kezelik (például a humanitárius források elosztása). | Emberi közbenjárást igényel, vagy egy központilag irányított automata mechanizmus működteti, mely visszaélésre adhat lehetőséget. | +| Minden tevékenység átlátható és teljesen nyilvános. | A tevékenység jellemzően nem nyilvános, így korlátozott betekintést ad a nyilvánosság számára. | + +### Példák a DAO-ra {#dao-examples} + +Annak érdekében, hogy még érthetőbbé tegyük a DAO-k működését, az alábbiakban néhány példán keresztül bemutatjuk, mire is használhatók: + +- Adománygyűjtés – adományokat fogadhat a világ minden tájáról, és szavazás alapján eldönthető, hogy azokat mire fordítsák. +- Közös tulajdonlás – fizikai vagy digitális eszközöket szerezhet be, melyek felhasználásáról a tagok szavaznak. +- Kockázati tőke és támogatás – létrehozhat egy kockázatitőke-alapot, mely befektetési tőkét gyűjt, és szavazással válaszhatók ki a támogatandó vállalkozások. A visszaérkező összegeket pedig később szétoszthatják a DAO tagjai között. + +## Hogyan működnek a DAO-k? {#how-daos-work} + +A DAO szíve az az okosszerződés, mely meghatározza a szervezet szabályait és kezeli a csoport vagyonát. Amint a szerződés életbe lép az Ethereumon, csakis szavazás útján lehet módosítani a szabályokat. Ha valaki olyat próbál tenni, ami nem szerepel a szabályokban és a programlogikában, az meghiúsul. Mivel a társaság pénzügyeit is az okosszerződés határozza meg, ezért a csoport jóváhagyása nélkül senki sem költheti el a pénzösszegeket. Tehát a DAO-nak nincs szüksége központi hatóságra. Ehelyett a csoport közösen hoz döntéseket, a kifizetések pedig automatikusan jóváhagyásra kerülnek a szavazás eredményeként. + +Mindez azért lehetséges, mert az okosszerződést nem lehet önkényesen megváltoztatni vagy meghamisítani, amikor már életbe lépett az Ethereumon. Senki sem tudja módosítani a programkódot (a DAO szabályait) anélkül, hogy mások azt észre ne vennék, mivel minden nyilvános. + + + Többet az okos szerződésekről + + +## Az Ethereum és a DAO-k {#ethereum-and-daos} + +Az Ethereum tökéletes alapot szolgáltat a DAO-knak számtalan okból kifolyólag: + +- Az Ethereum saját konszenzusmechanizmusa kellőképpen kiterjedt és megalapozott ahhoz, hogy a szervezetek megbízzanak a hálózatban. +- Az okosszerződés tartalmát nem lehet módosítani, miután életbe lépett, még a tulajdonosok módosíthatják azt. Ennek következtében a DAO a meghatározott szabályok alapján fog működni. +- Az okosszerződések képesek pénzeszközöket küldeni és fogadni. Enélkül szükség lenne egy megbízható közvetítőre, aki a csoport eszközeit kezelné. +- Az Ethereum közössége bizonyítottan együttműködő, nem versenyszellemű, így a bevált gyakorlatok és a támogatórendszerek gyorsan kialakulnak. + +## A DAO irányítása {#dao-governance} + +A DAO irányításakor számtalan szempontot figyelembe kell venni, mint például a szavazás menete és a javaslatok kezelése. + +### Delegáció {#governance-delegation} + +A delegáció vagy felhatalmazás a DAO verziója a képviselőalapú demokráciának. A tokenek birtokosai átadják szavazati jogaikat olyan felhasználóknak, akik vállalják, hogy felügyelik a protokollt és tájékozódnak az ügyeket illetően. + +#### Egy híres példa {#governance-example} + +[ENS](https://claim.ens.domains/delegate-ranking) – az ENS-szel rendelkezők delegálhatják szavazati jogaikat a közösség elkötelezett tagjainak, hogy képviseljék őket. + +### Automatikus tranzakciókon alapuló irányítás {#governance-example} + +Számos DAO-nál a tranzakciók automatikusan végrehajtódnak, ha a tagok határozatképes létszámban megszavazzák azt. + +#### Egy híres példa {#governance-example} + +[Nouns](https://nouns.wtf) – A Nouns DAO-ban a tranzakciók automatikusan végbemennek, ha határozatképes létszám van jelen, a szavazatok többsége igenlő, illetve az alapítók nem vétózzák meg. + +### Több aláírásos irányítás {#governance-example} + +Miközben a DAO-knak ezernyi szavazattal rendelkező tagja lehet, az alapítványoknál lehetséges, hogy 5–20 aktív közösségi tag tartozik egy tárcához, akik az alapítvány megbízottjai, a személyazonosságukat pedig általában ismeri a közösség (doxxed). A szavazás után a kijelölt aláírók hajtják végre a közösség akaratát. + +## A DAO törvényei {#dao-laws} + +1977-ben Wyoming megalkotta a korlátolt felelősségű társasági formát, mely megvédi a vállalkozót és behatárolja a felelősségi körüket. Nemrég elsőként hozták létre a DAO-kra vonatkozó törvényt, mely jogi státuszt ad a DAO-knak. Jelenleg Wyoming, Vermont és a Virgin-szigetek rendelkeznek DAO-törvénnyel valamilyen formában. + +#### Egy híres példa {#law-example} + +[CityDAO](https://citydao.io) – A CityDAO 40 hektár földet vett a Yellowstone Nemzeti Park közelében Wyoming DAO-törvényével élve. + +## DAO-tagság {#dao-membership} + +A DAO-tagságra különféle modellek léteznek. A tagság meghatározza a szavazás menetét, illetve a DAO más kulcsfontosságú részleteit. + +### Tokenalapú tagság {#token-based-membership} + +Általában teljesen engedélymentes, a használt tokenen alapszik. Ezekkel az irányítási tokenekkel többnyire engedély nélkül lehet kereskedni a decentralizált tőzsdén. Más tokenek megszerzéséhez likviditást kell biztosítani vagy más munkaigazolás (proof-of-work) szükséges. Bármelyik módon is jut hozzá, a token maga biztosítja a szavazati jogot. + +_Főleg arra használják, hogy kiterjedt, decentralizált protokollokat és/vagy magukat a tokeneket irányítsák ezáltal._ + +#### Egy híres példa {#token-example} + +[MakerDAO](https://makerdao.com) – A MakerDAO tokenje, az MKR, széles körben elérhető a decentralizált tőzsdéken, s bárki beszerezheti azokat, hogy szavazati jogot nyerjen a Maker protokoll jövőjére vonatkozóan. + +### Részesedésalapú tagság {#share-based-membership} + +A részesedésalapú DAO-k sokkal inkább engedélyhez kötöttek, de még mindig elég nyitottak. Bármelyik leendő tag beadhat egy csatlakozási kérvényt, melyben általában felajánl valamilyen értéket tokenek vagy elvégzendő munka (például számítási kapacitás) formájában. A részesedés közvetlen szavazati és tulajdonjogot jelent. A tagok bármikor kiléphetnek az arányos részesedésükkel együtt. + +_Főleg a szorosabb szerveződésű, emberközpontú szervezetek használják, mint az adománygyűjtők, munkaközösségek és befektetési klubok. Ezt is használhatják protokollok és tokenek irányítására._ + +#### Egy híres példa {#share-example} + +[MolochDAO](http://molochdao.com/) – A MolochDAO az Ethereum-projektek támogatásával foglalkozik. A tagságot kérvényezni kell, melynek alapján a csoport eldönti, vajon az új tag rendelkezik a szükséges szakértelemmel és tőkével, hogy megfelelő döntést tudjon hozni a lehetséges támogatottakról. Nem lehetséges megvásárolni a DAO-tagságot a piacon. + +### Reputációalapú tagság {#reputation-based-membership} + +A reputáció a részvételt igazolja és szavazati jogot biztosít a DAO-ban. A token- és részesedésalapú tagsággal ellentétben a reputációalapú DAO nem ad tulajdonjogot a közreműködőknek. A reputációt nem lehet megvenni, átadni vagy delegálni; a DAO tagok a részvételükkel nyerik el azt. A láncon belüli szavazás nem engedélyhez kötött, a leendő tagok szabadon kérvényezhetik a DAO-hoz való csatlakozást, illetve azt, hogy a közreműködésükért cserébe reputációt és tokent kapjanak. + +_Főleg a protokollok és decentralizált alkalmazások (dapp) decentralizált fejlesztésére és irányítására használják, de ugyanúgy jól alkalmazható a különféle szervezeteknél, mint adománygyűjtés, munkaközösségek, befektetési klubok stb._ + +#### Egy híres példa {#reputation-example} + +[DXdao](https://DXdao.eth.link) – A DXdao egy független globális csoportosulás, amely 2019 óta épít és irányít decentralizált protokollokat és alkalmazásokat. Reputációalapú irányítást és holografikus konszenzust (szavazási módszer) használ arra, hogy forrásokat koordináljon és menedzseljen, tehát senki sem tudja megvásárolni a tagságot azért, hogy befolyásolja a DAO működését. + +## Csatlakozás DAO-hoz / DAO indítása {#join-start-a-dao} + +### DAO-hoz csatlakozás {#join-a-dao} + +- [Az Ethereum-közösséghez tartozó DAO-k](/community/get-involved/#decentralized-autonomous-organizations-daos) +- [DAOHaus által listázott DAO-k](https://app.daohaus.club/explore) +- [Tally.xyz által listázott DAO-k](https://www.tally.xyz) + +### DAO indítása {#start-a-dao} + +- [Indítson DAO-t a DAOHaus-szal](https://app.daohaus.club/summon) +- [Indítson irányító DAO-t a Tally-vel](https://www.tally.xyz/add-a-dao) +- [Hozzon létre egy Aragon által működtetett DAO-t](https://aragon.org/product) +- [Hozzon létre csoportot a Colony-val](https://colony.io/) +- [Indítson DAO-t a DAOstack által biztosított holografikus konszenzussal](https://alchemy.daostack.io/daos/create) + +## További információ {#further-reading} + +### DAO-ról szóló cikkek {#dao-articles} + +- [Mi az a DAO?](https://aragon.org/dao) – [Aragon](https://aragon.org/) +- [A DAO kézikönyv](https://daohandbook.xyz) +- [DAO-k háza](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/) +- [Mi az a DAO és mire jó?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for) – [DAOhaus](https://daohaus.club/) +- [Hogyan lehet létrehozni egy DAO által működtetett digitális közösséget](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/) +- [Mi az a DAO?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com) +- [Mi az a holografikus konszenzus?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) – [DAOstack](https://daostack.io/) +- [A DAO-k nem vállalatok: hol van a legnagyobb jelentősége a decentralizációnak az autonóm szervezetekben – Vitalik](https://vitalik.ca/general/2022/09/20/daos.html) +- [DAO, DAC, DA és mások: egy nem teljes terminológiai útmutató](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) – [Ethereum Blog](https://blog.ethereum.org) + +### Videók {#videos} + +- [Mit jelent a DAO a kripto világában?](https://youtu.be/KHm0uUPqmVE) +- [Felépíthet egy várost egy DAO?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/) diff --git a/src/content/translations/hu/decentralized-identity/index.md b/src/content/translations/hu/decentralized-identity/index.md new file mode 100644 index 00000000000..ecc0cee1975 --- /dev/null +++ b/src/content/translations/hu/decentralized-identity/index.md @@ -0,0 +1,185 @@ +--- +title: Nem központilag kibocsájtott identitás +description: Mi az a nem központilag kibocsátott identitás, és miért fontos? +lang: hu +template: use-cases +emoji: ":id:" +sidebarDepth: 2 +image: ../../../../assets/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. +--- + +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. + +Azonban a hagyományos azonosításkezelési rendszerek hosszú ideje központosított szereplőkre támaszkodtak, akik kibocsátják, tárolják és kezelik az azonosítóinkat és [tanúsítványainkat](#what-are-attestations). Ez azt jelenti, hogy nem tudjuk irányítani az azonosítással kapcsolatos információinkat, és nem dönthetünk arról, hogy ki férhet hozzá a személyazonosító információinkhoz (PII), valamint hogy ezek a felek milyen mértékű hozzáférést kapnak. + +Ezen problémák megoldására decentralizált azonosítási rendszerek állnak rendelkezésre, amelyeket nyilvános blokkláncokon, például az Ethereumon, építettek. A decentralizált azonosítás lehetővé teszi az egyének számára, hogy kezeljék az azonosítással kapcsolatos információikat. A decentralizált azonosítási megoldásokkal _Ön is_ létrehozhat azonosítókat, illetve anélkül igényelhet és tárolhat tanúsítványokat, hogy központi hatóságokra, mint például szolgáltatók vagy kormányok, támaszkodna. + +## Mi az az identitás? {#what-is-identity} + +Az identitás az egyén önmagához való viszonyának értelmezése, egyedi jellemzők által meghatározva. Az identitás az _egyént_ jelenti, azaz egy különálló emberi entitást. Jelenthet még nem emberi entitást is, mint például egy szervezetet vagy hatóságot is. + +## Mik az azonosítók? {#what-are-identifiers} + +Az azonosító egy olyan információ, mely sajátos identitásra vagy identitásokra mutat rá. A hétköznapi azonosítók többek között: + +- Név +- Társadalombiztosítási szám / adószám +- Mobilszám +- Születési idő és hely +- Digitális azonosítók, mint e-mail-cím, felhasználói név, avatár + +Ezeket a hagyományos azonosítókat központi hatóságok bocsátják ki, tárolják és kontrollálják. Engedélyre van szükség a kormánytól ahhoz, hogy valaki megváltoztassa a nevét, vagy a közösségi média platformtól arra, hogy megváltoztassa a profilját. + +## Mi az a tanúsítás? {#what-are-attestations} + +A tanúsítás egy olyan állítás, melyet az egyik entitás ad a másikról. Az Amerikai Egyesült Államokban a vezetői engedélyt a Gépjárművekkel foglalkozó hivatal (egyik entitás) bocsátja ki, mellyel tanúsítja, hogy az illető személy (másik entitás) autót vezethet. + +A tanúsítás nem azonos az azonosítókkal. A tanúsításhoz _szükség van_ azonosítókra, hogy egy sajátos identitásra hivatkozzanak, és az ehhez tartozó valamilyen jellemzőről adjanak egy állítást. Tehát a jogosítvány tartalmaz azonosítókat (név, születési idő, cím), ugyanakkor tanúsítja az autóvezetési jogosultságot. + +### Mik azok a decentralizált azonosítók? {#what-are-decentralized-identifiers} + +A hagyományos azonosítók, mint a hivatalos név vagy e-mail-cím, harmadik személyen múlnak – a kormányokon és az e-mail-szolgáltatókon. A decentralizált azonosítók (DID) különböznek ezektől – ezeket nem egy központi hatóság állítja ki, kezeli vagy kontrollálja. + +A decentralizált azonosítókat az egyének állítják ki, kezelik és kontrollálják. Az [Ethereum-számla](/developers/docs/accounts/) is egy decentralizált azonosító. A felhasználó annyi számlát hozhat létre, amennyit csak akar, anélkül hogy bárki engedélyére szükség lenne vagy egy központ nyilvántartásban kellene tárolni azokat. + +A decentralizált azonosítókat elosztott főkönyveken (blokklánc) vagy peer-to-peer hálózatokon tárolják. Ennek okán a DID-ekre az jellemző, hogy [globálisan egyediek, sokrétűen felhasználhatók és kriptográfiával ellenőrizhetők](https://w3c-ccg.github.io/did-primer/). A decentralizált azonosító különféle entitásokhoz kapcsolódhat, mint emberek, szervezetek vagy kormányzati szervek. + +## Mi teszi lehetővé a decentralizált azonosítók használatát? {#what-makes-decentralized-identifiers-possible} + +### 1. Nyilvánoskulcs-infrastruktúra (PKI) {#public-key-infrastructure} + +A nyilvánoskulcs-infrastruktúra (PKI) egy olyan információbiztonsági lépés, amely az entitás számára egy [nyilvános kulcsot](/glossary/#public-key) és egy [privát kulcsot](/glossary/#private-key) hoz létre. A nyilvános kulcson alapuló kriptográfiát a blokklánchálózatok arra használják, hogy igazolják a felhasználók identitását és a digitális eszközök tulajdonjogát. + +Néhány decentralizált azonosító, mint amilyen az Ethereum-számla, egyaránt rendelkezik nyilvános és privát kulccsal. A nyilvános kulcs meghatározza a számla birtokosát, miközben a privát kulcs aláírhatja az adott számlához tartozó üzeneteket, illetve feloldhatja azok titkosítását. A PKI igazolja az entitások identitását, megakadályozza, hogy valaki más felöltse azt vagy hamisat használjon – mindezt a [kriptográfiai aláírás](https://andersbrownworth.com/blockchain/public-private-keys/) révén, amely minden állítást igazol. + +### 2. Decentralizált adattárolók {#decentralized-datastores} + +A blokklánc egy igazolható adatnyilvántartásként működik: az információk nyilvános, decentralizált tárhelye, melynek használatakor nem kell megbízni egy központi szereplő (jóhiszemű) magatartásában. A nyilvános blokkláncok létezése miatt nincs többé szükség arra, hogy az azonosítókat központi nyilvántartásokban tárolják. + +Ha valaki szeretné egy decentralizált azonosító érvényességét ellenőrizni, akkor a blokkláncon megkeresheti a hozzá tartozó nyilvános kulcsot. Ez különbözik a hagyományos azonosítóktól, ahol harmadik entitás tudja csak igazolni azt. + +## A decentralizált azonosítók és a tanúsítás hogyan teszi lehetővé a decentralizált identitást? {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity} + +A decentralizált identitás az az elképzelés, hogy az identitáshoz kapcsolódó információkat mindenki maga kontrollálja, azok privátak és hordozhatók, átvihetők, melynek az elsődleges építőkövei a decentralizált azonosítók és a tanúsítások. + +A decentralizált identitás kontextusában a tanúsítások (más néven [Igazolható bizonyítványok vagy hitelesítő adatok / VC](https://www.w3.org/TR/vc-data-model/)) olyan hamisításmentes, kriptográfiailag igazolható állítások, melyeket a kibocsátó készít. Minden tanúsítás vagy igazolható bizonyítvány, amit egy entitás (például egy szervezet) kiállít, az kapcsolódik az ő decentralizált azonosítójukhoz (DID). + +Mivel a DID-ek a blokkláncon vannak tárolva, ezért bárki ellenőrizni tudja a tanúsítás érvényességét azáltal, hogy megnézi az Ethereumon a kiállító DID-jét. Lényegében az Ethereum-blokklánc olyan, mint egy globális könyvtár, ahol az adott entitásokhoz kapcsolódó decentralizált azonosítókat igazolni lehet. + +A decentralizált azonosítók teszik lehetővé, hogy a tanúsításokat a kiállító maga kontrollálja és azok igazolhatók legyenek. Ha a kiállító már nem is létezik, a tanúsítást kapó entitás mindig rendelkezik annak eredetének és érvényességének bizonyítékával. + +A decentralizált azonosítók elengedhetetlenek abban is, hogy megvédjék a személyes adatok magán jellegét a decentralizált identitás révén. Például, ha egy egyén beadja egy tanúsítás bizonyítékát (egy vezetői engedélyt), akkor az azt igazoló félnek nem kell ellenőrizni a bizonyítékban található adatok érvényességét. Ehelyett az ellenőrző félnek csak a tanúsítás eredetiségének kriptográfiai garanciáira, valamint a kiállító szervezet identitására van szükség ahhoz, hogy a bizonyíték érvényességét megállapítsa. + +## A tanúsítások típusai a decentralizált identitás esetében {#types-of-attestations-in-decentralized-identity} + +A tanúsítások tárolása és visszakeresése az Ethereumon alapuló, identitáshoz kötődő ökoszisztémában eltérően működik, mint a hagyományos identitáskezelés. Különféle megközelítések léteznek, hogyan állítják ki, tárolják és igazolják a tanúsításokat a decentralizált identitást biztosító rendszerekben: + +### Blokkláncon kívüli tanúsítások {#off-chain-attestations} + +A blokkláncon való tanúsítástárolással kapcsolatban felmerül az a konszern, hogy olyan információkat tartalmazhat, melyeket az egyének privát módon szeretnének kezelni. Az ilyen tanúsítások tárolása az Ethereum-blokkláncon, annak nyilvános természete miatt nem előnyös. + +Erre az a megoldás, hogy a kiállított tanúsításokat a felhasználók láncon kívül tartják digitális tárcákban, de azok alá vannak írva a kiállító decentralizált azonosítójával (DID), mely a láncon belül elérhető. Ezeket a tanúsításokat [JSON Web Tokenként](https://en.wikipedia.org/wiki/JSON_Web_Token) kódolják, és tartalmazzák a kiállító digitális aláírását – így a láncon kívüli azonosítási igényeket könnyedén igazolni tudja. + +A következő példa elmagyarázza a láncon kívüli tanúsításokat: + +1. Egy egyetem (kiállító) létrehoz egy tanúsítást (egy digitális egyetemi diplomát), aláírja azt a kulcsaival, és átadja Bobnak (az identitás tulajdonosának). + +2. Bob egy állásra jelentkezik és igazolni akarja iskolai tanulmányait a munkaadónak, ezért megosztja vele a tanúsítást a mobil tárcájából. A vállalat (ellenőrző) ekkor megbizonyosodhat a tanúsítás érvényességéről azáltal, hogy megnézi a kiállító DID-jét (pl. az Ethereumon lévő nyilvános kulcsát). + +### Blokkláncon kívüli tanúsítások állandó eléréssel {#offchain-attestations-with-persistent-access} + +Ebben az elrendezésben a tanúsításokat átalakítják JSON file-okká és a láncon kívül tárolják (ideálisan egy [decentralizált felhőben](/developers/docs/storage/), mint a IPFS vagy a Swarm). Azonban a JSON-fájl [hash-kódja](/glossary/#hash) a láncon van eltárolva és egy DID-hez kapcsolódik egy láncon belüli nyilvántartáson keresztül. A kapcsolódó DID lehet a tanúsítás kiállítójáé vagy azé, aki azt kapta. + +Ez a megközelítés lehetővé teszi, hogy a tanúsítások állandóan elérhetők legyenek a blokkláncon, miközben a kapcsolódó információk titkosítottak és igazolhatók. Mivel a privát kulcs tulajdonosa titkosítani tudja az információt, ezért képes szelektív módon nyilvánossá tenni azt. + +### Blokkláncon belüli tanúsítások {#onchain-attestations} + +A blokkláncon belüli tanúsítások [okosszerződésekben](/developers/docs/smart-contracts/) vannak tárolva az Ethereum-blokkláncon. Az okosszerződés (ami nyilvántartásként működik) hozzáköti a tanúsítást egy kapcsolódó, láncon belüli decentralizált azonosítóhoz (egy nyilvános kulcshoz). + +A következő példa bemutatja, hogyan működik a láncon belüli tanúsítás a gyakorlatban: + +1. Egy cég (XYZ vállalat) azt tervezi, hogy egy okosszerződésen keresztül tulajdonosi részvényeket ad el, de csak olyan vásárlókat fogad el, akiknek a háttere ellenőrizve lett. + +2. XYZ vállalat a háttérellenőrzéssel megbízott cégtől láncon belüli tanúsításokat kap az Ethereumon. Ez a tanúsítás igazolja, hogy az egyén megfelelt az ellenőrzés során, de nem tárja fel semmilyen személyes adatát. + +3. A részvényeket eladó okosszerződés meg tudja nézni az átvilágított vevőkre vonatkozó nyilvántartási szerződést, így meghatározhatja, hogy kik vásárolhatnak részvényt. + +### Egyénhez kötött tokenek és identitás {#soulbound} + +Az [egyénhez kötött tokeneket](https://vitalik.ca/general/2022/01/26/soulbound.html) (nem átadható NFT-k) arra lehet használni, hogy egy adott tárcához tartozó egyedi információkat gyűjtsenek. Ez gyakorlatilag létrehoz egy egyedi, láncon belüli identitást, amely egy adott Ethereum-címhez kötődik, és eredményeket (mint egy online tanfolyam elvégzése vagy egy játékban elért szint) vagy közösségi részvételt jelentő tokeneket foglal magába. + +## A decentralizált identitás előnyei {#benefits-of-decentralized-identity} + +1. A decentralizált identitás növeli az egyénnek a saját azonosítói feletti kontrollját. A decentralizált azonosítók és tanúsítások anélkül igazolhatók, hogy egy központi hatóságra vagy egy harmadik fél által nyújtott szolgáltatásra kellene támaszkodni. + +2. A decentralizáltidentitás-megoldások úgy képesek igazolni és kezelni egy felhasználó identitását, hogy nem kell megbízni egy másik félben, zökkenőmentes és védi a magán jellegű információkat. + +3. A decentralizált identitás a blokklánc-technológiát felhasználva teremt bizalmat a különböző felek között és a tanúsítások érvényességét igazolva nyújt kriptográfiai garanciát. + +4. A decentralizált identitás átvihetővé, hordozhatóvá teszi a identitáshoz kapcsolódó adatokat. A felhasználók a mobil tárcájukban tárolják a tanúsításokat és azonosítókat, és eldönthetik, hogy kivel osztják meg azokat. A decentralizált azonosítók és tanúsítások nem az azokat kibocsátó szervezet adatbázisába vannak zárva. + +5. A decentralizált identitás jól illeszkedik a most kialakuló nulla tudású (zero-knowledge) technológiákhoz, mellyel az egyének anélkül tudják igazolni tulajdonukat vagy eredményeiket, hogy feltárnák, mi is az pontosan. Ez egy hatásos módja annak, hogy a bizalmat és a magán jelleget kombinálják olyan felhasználási módoknál, mint amilyen például a szavazás. + +6. A decentralizált identitás lehetővé teszi az anti-Sybil mechanizmust, feltárva azt, amikor egyetlen ember több személynek adja ki magát egy adott játékban vagy azért, hogy teleszemetelje (spam) a rendszert. + +## A decentralizált identitás alkalmazásai {#decentralized-identity-use-cases} + +A decentralizált identitás számtalan esetben alkalmazható: + +### 1. Univerzális bejelentkezés (login) {#universal-dapp-logins} + +A decentralizált identitás segít abban, hogy a jelszóalapú bejelentkezések helyett [decentralizált azonosítás](https://www.ibm.com/blogs/blockchain/2018/10/decentralized-identity-an-alternative-to-password-based-authentication/) legyen használható. A szolgáltatók tanúsításokat bocsáthatnak ki a felhasználóknak, amelyet az Ethereum-tárcájukban tárolnak. Például egy olyan tanúsítvány, ami egy [NFT](/nft/), és hozzáférést biztosít egy online közösséghez. + +Az [Ethereumba való bejelentkezés](https://login.xyz/) funkció ekkor lehető tenné a szervereknek, hogy megerősítsék a felhasználó Ethereum-számláját és lekérdezzék az ehhez szükséges tanúsításokat a számlacímükről. Ezáltal a felhasználónak nem kell hosszú jelszavakat megjegyeznie ahhoz, hogy különböző platformokat és weboldalakat érjen el, és így jobb felhasználói élményben lehet része. + +### 2. Ügyfél-azonosítás (KYC) {#kyc-authentication} + +Az online szolgáltatások használatakor a felhasználóknak tanúsításokat és hitelesítő adatokat kell megadniuk, mint például vezetői engedély vagy útlevél. Ez azonban aggodalomra adhat okot, mivel a magánjellegű információkkal visszaélhetnek, a szolgáltatók pedig nem tudják ellenőrizni a tanúsítások hitelességét. + +A decentralizált identitás révén a cégek elhagyhatják a hagyományos [ügyfél-azonosítást (KYC)](https://en.wikipedia.org/wiki/Know_your_customer), és ehelyett az ügyfelek identitását az igazolható bizonyítványok (VC) révén ellenőrizhetik. Ez csökkenti az azonosítások kezelésének költségét, és kivédi a hamis iratok használatát is. + +### 3. Szavazás és online közösségek {#voting-and-online-communities} + +Az online szavazás és a közösségi média két új alkalmazási területe a decentralizált identitásnak. Az online szavazások ki vannak téve a manipulációnak, főleg ha a rosszindulatú szereplők hamis identitásokat hoznak létre, hogy azokkal szavazzanak. A szavazás folyamatának integritását nagy mértékben növelné, ha az egyének a láncon belüli tanúsításokkal igazolnák magukat. + +A decentralizált identitás segít olyan online közösségek létrehozásában, melyek mentesek a hamis profiloktól. Például minden felhasználónak igazolnia kell a kilétét egy láncon belüli azonosítási rendszerrel, mint amilyen az Ethereum Névszolgáltatás (ENS), és így kizárhatók a nem emberi résztvevők (bot). + +### 4. Anti-Sybil védelem {#sybil-protection} + +A Sybil-támadás azt jelenti, hogy bizonyos egyének kijátsszák a rendszert, hogy az több embernek vegye őket, és így nagyobb befolyást tudjanak gyakorolni. A [támogatást adó alkalmazások](https://gitcoin.co/grants/), melyek [kvadratikus szavazást](https://www.radicalxchange.org/concepts/plural-voting/) használnak, sebezhetők ezekkel a Sybil-támadásokkal szemben, mert a támogatás összege növekszik, ha több szavazat érkezik rá. Ez pedig arra ösztönzi a résztvevőket, hogy több identitással vegyenek részt a folyamatban. A decentralizált identitás megakadályozza ezt, mivel a résztvevők könnyedén igazolhatják, hogy valódi emberek, és nem kell hozzá specifikus, magán jellegű információkat feltárniuk magukról. + +## Használjon decentralizált identitást {#use-decentralized-identity} + +Számtalan ambiciózus projekt használja az Ethereumot a decentralizált identitási megoldások alapjaként: + +- **[Ethereum Névszolgáltatás (ENS)](https://ens.domains/)** – _Egy decentralizált névadó rendszer a láncon belüli, gép által kiolvasható azonosítókra, mint amilyenek az Ethereum-tárcacímek, a tartalomra vonatkozó hash-kódok és a metaadatok._ +- **[SpruceID](https://www.spruceid.com/)** – _Egy decentralizált identitási projekt, mely lehetővé teszi, hogy a felhasználók a digitális identitásukat Ethereum-számlákkal és ENS-profilokkal kontrollálják ahelyett, hogy harmadik személyre támaszkodnának._ +- **[Ethereum tanúsítási szolgáltatás (EAS)](https://attest.sh/)** – _Egy decentralizált főkönyv/protokoll láncon belüli vagy láncon kívüli tanúsítások készítésére._ +- **[Proof of Humanity](https://www.proofofhumanity.id)** – _Az emberség igazolása (PoH) egy közösségi identitás igazolására készült rendszer, mely az Ethereumra épül._ +- **[BrightID](https://www.brightid.org/)** – _Egy decentralizált, nyílt forráskódú, közösségi identitási hálózat, amely új módot keres az azonosításra egy közösségi gráf megalkotásával és elemzésével._ +- **[Proof-of-personhood Passport](https://proofofpersonhood.com/)** - _Egy decentralizált, digitális identitásgyűjtemény._ + +## További olvasnivaló {#further-reading} + +### Cikkek {#articles} + +- [Blokklánc esettanulmányok: blokklánc a digitális identitás területén](https://consensys.net/blockchain-use-cases/digital-identity/) — _ConsenSys_ +- [Mi az az Ethereum ERC725? Független identitáskezelés a blokkláncon](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _Sam Town_ +- [Hogyan tudja a blokklánc megoldani a digitális identitás problémáját](https://time.com/6142810/proof-of-humanity/) — _Andrew R. Chow_ +- [Mi az a decentralizált identitás és miért érdemes figyelembe venni?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_ + +### Videók {#videos} + +- [Decentralizált identitás (Bonus Livestream Session)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s) — _Kiváló magyarázó videó a decentralizált identitásról Andreas Antonopoloustól_ +- [Az Ethereumba való bejelentkezés és a decentralizált identitás témája a Ceramic, IDX, React és 3ID Connect használatával](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _YouTube útmutató a személyazonosítási rendszer kiépítéséről, mely az Ethereum-tárca alapján létrehozza, kiolvassa és frissíti a felhasználó profilját – Nader Dabit_ +- [BrightID – Decentralizált identitás az Ethereumon](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _Bankless podcast epizód a BrightID-ról, ami egy decentralizált identitási megoldás az Ethereumon_ +- [A láncon kívüli internet: decentralizált identitás és igazolható bizonyítványok (VC)](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — EthDenver 2022 Evin McMullen prezentációja + +### Közösségek {#communities} + +- [ERC-725 szövetség a GitHubon](https://github.com/erc725alliance) — _Az ERC725 szabvány támogatói, mely az Ethereum-blokkláncon való identitáskezelést célozza_ +- [SpruceID Discord-szerver](https://discord.com/invite/Sf9tSFzrnt) — _Rajongók és fejlesztők közössége, akik az Ethereumba való bejelentkezés funkcióján dolgoznak_ +- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _Fejlesztői közösség, melynek célja az alkalmazásokhoz szükséges igazolható adatok keretrendszerének kidolgozása_ diff --git a/src/content/translations/hu/defi/index.md b/src/content/translations/hu/defi/index.md new file mode 100644 index 00000000000..5b582f83f82 --- /dev/null +++ b/src/content/translations/hu/defi/index.md @@ -0,0 +1,352 @@ +--- +title: Decentralizált pénzügy (DeFi) +description: Az Ethereumon működő decentralizált pénzügyek (DeFi) áttekintése +lang: hu +template: use-cases +emoji: ":money_with_wings:" +image: ../../../../assets/use-cases/defi.png +alt: Egy LEGO építőkockákból készült Ethereum-logó. +sidebarDepth: 2 +summaryPoint1: Egy globális és nyitott alternatívája a jelenlegi pénzügyi rendszernek. +summaryPoint2: Olyan termékek, melyek révén kölcsönözhet, megtakaríthat, befektethet, kereskedhet és ez még nem minden. +summaryPoint3: Nyíltforráskódú technológián alapszik, melyre bárki fejleszthet megoldásokat. +--- + +A decentralizált pénzügyek (DeFi) egy nyílt és globális pénzügyi rendszer, mely az internet korához igazodik – alternatívája annak, ami alig átlátható, szorosan kontrollált és sok évtizedes infrastruktúrák és folyamatok tartják össze. A DeFi kontrollt és átláthatóságot biztosít a pénzeszközök felett. Lehetőséget ad arra, hogy a globális piacokon működjön és alternatívát biztosít a helyi valuták vagy bankolási lehetőségek helyett. A DeFi termékek mindenki számára elérhetővé teszik a pénzügyi szolgáltatásokat, aki internetkapcsolattal rendelkezik, és nagy arányban maguk a felhasználók tulajdonolják és kezelik ezeket. Eddig több tízmilliárd dollárnyi kripto áramlott keresztül a DeFi alkalmazásokon, és ez minden egyes nappal növekszik. + +## Mi az a DeFi? {#what-is-defi} + +A DeFi egy gyűjtőfogalom azokra a pénzügyi termékekre és szolgáltatásokra vonatkozóan, melyek mindenki számára elérhetők az Ethereum hálózatát használva – bárkinek, aki rendelkezik internetkapcsolattal. A DeFi révén a piacok állandóan nyitva vannak és nincs olyan központi hatóság, amely megakadályozhatna egy kifizetést vagy megtilthatná a hozzáférést valamilyen termékhez. Azok a szolgáltatások, melyek korábban lassúak voltak és az emberi hiba kockázatát hordozták magukban, most automatikusak és biztonságokat, mivel egy olyan programkód üzemelteti azokat, melyet bárki megvizsgálhat. + +Egy gyorsan fejlődő kriptogazdaság található itt, ahol Ön is adhat és vehet fel kölcsönt, kereskedhet long/short pozíciókkal, kamatoztathat stb. A kriptóhoz értő argentinok arra használták a DeFi-t, hogy kilépjenek a bénító inflációs helyzetből. Bizonyos vállalatok elkezdték a munkavállalóik fizetést valós időben átutalni (streaming). Néhány személy több millió dollárt érő hitelt vett fel és fizetett vissza anélkül, hogy bármilyen módon igazolnia kellett volna a személyazonosságát. + + + +## A DeFi és a hagyományos pénzügyek összehasonlítása {#defi-vs-tradfi} + +A DeFi-ban rejlő lehetőségeket talán úgy lehet legjobban megragadni, ha megértjük a jelenlegi problémákat. + +- Az emberek egy bizonyos rétege nem nyithat bankszámlát vagy használhat pénzügyi szolgáltatásokat. +- Ha valaki nem fér hozzá a pénzügyi szolgáltatásokhoz, akkor nem is tud munkát vállalni. +- A pénzügyi szolgáltatások megakadályozhatják, hogy Ön hozzáférjen a pénzeszközeihez. +- A pénzügyi szolgáltatások egyik rejtett ára, hogy hozzáférnek a személyes adataihoz. +- A kormányok és központi hatóságok bármikor lezárhatják a pénzügyi piacokat. +- A kereskedés időszaka gyakran egy adott időzónában meghatározott munkaidőre korlátozódik. +- Az átutalások több napig is eltarthatnak a közbenső, manuális folyamatok miatt. +- A pénzügyi szolgáltatásokért extra díjat kell fizetni, mert a közvetítő intézmények is kiveszik a részüket. + +### Összehasonlítás {#defi-comparison} + +| DeFi | Hagyományos pénzügyek | +| ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| Ön rendelkezik a saját pénzeszközei felett. | Az Ön pénze a vállalatok kezében van. | +| Ön dönti el, hogy a pénzét hol tartja és mire költi el. | Meg kell bíznia a vállalatokban, hogy nem élnek vissza a pénzeszközeivel, például nem adják kölcsön azokat kockázatos ügyfeleknek. | +| A pénzeszközök átutalása perceken belül megtörténik. | Az átutalás napokig is eltarthat a manuális lépések miatt. | +| A tranzakciók nem közvetlen módon köthetők a személyazonossághoz. | A pénzügyi tevékenységek szorosan kapcsolódnak az identitáshoz. | +| A DeFi mindenki előtt nyitva áll. | A pénzügyi szolgáltatásokat igényelni kell. | +| A pénzpiacok mindig nyitva vannak. | A pénzpiacok bezárnak, mert az alkalmazottaknak pihenésre van szükségük. | +| Az átláthatóságra épül – bárki megtekintheti az adott termék adatait és megvizsgálhatja, hogyan működik a rendszer. | A pénzügyi intézmények zárt könyvek számunkra: nem kérheti el senki a hitelezési feljegyzéseiket, az eszközeik leltárát stb. | + + + Fedezze fel a DeFi alkalmazásokat + + +## Minden a Bitcoinnal kezdődött... {#bitcoin} + +A Bitcoin több szempontból is az első DeFi alkalmazás volt. A Bitcoin lehetővé tette, hogy a felhasználó valóban birtokolja és kontrollálja az értéket, és elküldje azt a világon bárhova. Ehhez pedig egy olyan módszert adott egy nagy létszámú, egymásban nem bízó csoport kezébe, amellyel közvetítő megbízása nélkül egyezhetnek meg a számlafőkönyv tartalmán. A Bitcoin mindenki számára nyitott és senki sem tudja megváltoztatni a szabályait. A szabályai, ahogy a végessége és a nyitottsága is bele van kódolva a technológiába. Ez teljesen eltér a hagyományos pénzügyektől, ahol a kormány pénzt nyomtathat, mely csökkenti a megtakarítások értékét, a cégek pedig lezárhatják a pénzügyi piacokat. + +Az Ethereum is erre épít. A Bitcoinhoz hasonlóan a szabályokat nem változtathatja meg senki, és mindenkinek van hozzáférése. Ezen felül a digitális pénzt programozhatóvá teszi az [okosszerződések](/glossary#smart-contract) által, így az értékek tárolásán és küldésén kívül sok másra is alkalmas. + + + +## Programozható pénz {#programmable-money} + +Ez furcsán hangzik... „miért akarnám programozni a pénzemet”? Ez azonban több, mint az Ethereum tokenjeinek alaptulajdonsága. Bárki programozhat valamilyen logikát a kifizetések kezelésébe. Így rendelkezhet a Bitcoin által nyújtott kontrollal és biztonsággal, a pénzügyi intézmények által nyújtott szolgáltatásokkal kombinálva azt. Lehetővé válik, hogy a kriptovalutával olyan műveleteket is véghezvigyen a felhasználó, amit a Bitcoin nem támogat, mint például kölcsön adás és kölcsön vétel, időzített kifizetések, indexalapokba való befektetés stb. + + +
    Tekintse át azokat a DeFi alkalmazásokat, melyeket kipróbálásra javaslunk, amennyiben Ön most ismerkedik az Ethereummal.
    + + Fedezze fel a DeFi alkalmazásokat + +
    + +## Mit lehet csinálni a DeFi-ban? {#defi-use-cases} + +A legtöbb pénzügyi szolgáltatásnak létezik decentralizált alternatívája. Az Ethereum emellett olyan lehetőségeket teremt, hogy teljesen új pénzügyi termékek is létrejöhessenek. Ez egy folyamatosan bővülő lista. + +- [Pénzküldés a világ bármelyik pontjára](#send-money) +- [Pénzáramoltatás (streaming) a világon bárhova](#stream-money) +- [Stabil pénznemek használata](#stablecoins) +- [Kölcsönfelvétel fedezettel](#lending) +- [Kölcsönfelvétel fedezet nélkül](#flash-loans) +- [Megtakarítás kriptóval](#saving) +- [Kereskedés tokenekkel](#swaps) +- [Portfóliófejlesztés](#investing) +- [Közösségi elképzelések finanszírozása](#crowdfunding) +- [Biztosítás vásárlása](#insurance) +- [Portfóliókezelés](#aggregators) + + + +### Azonnali pénzküldés a világ bármelyik pontjára {#send-money} + +Az Ethereum-blokklánc úgy van kialakítva, hogy biztonságosan és globálisan kezeljen tranzakciókat. A Bitcoinhoz hasonlóan az Ethereumon is olyan könnyen lehet pénzt utalni, akár egy e-mailt elküldeni. Csak írja be a fogadó fél [ENS-nevét](/nft/#nft-domains) (például bob.eth) vagy számlacímét a tárcájában, és az utalás közvetlenül megérkezik hozzá általában percek alatt. Az utalások küldéséhez vagy fogadásához szükség van egy [tárcára](/wallets/). + + + Tovább a fizetési dappokhoz + + +#### Pénzáramoltatás (streaming) a világon bárhova... {#stream-money} + +Az Ethereumon pénzáramoltatásra is lehetőség van. Ez lehetővé teszi, hogy valós időben kapja meg valaki a fizetését, így a pénzeszközei mindig rendelkezésre állnak. Vagy kölcsönözhet is valamit addig, amíg azt használja, mint egy tárolóhely vagy elektromos robogó. + +Ha pedig nem akar [ETH-t](/eth/) küldeni vagy áramoltatni, mert annak változhat az értéke, akkor alternatív valuták is rendelkezésre állnak az Ethereumon: ezek a stabil érmék. + + + +### Stabil pénznemek használata {#stablecoins} + +A kriptovaluta változékonysága számos pénzügyi termék és általános költés esetén problémát okoz. A DeFi közösség ezt a stabil érmékkel oldotta meg. Ezek értéke hozzá van kötve egy másik eszközhöz, általában egy népszerű valutához, mint amilyen a dollár. + +Az olyan érmék értéke, mint a Dai vagy a USDC, csak néhány centtel változik. Ezért tökéletesen megfelelnek a munkabér kifizetésre vagy a kiskereskedelem számára. Dél-Amerikában számtalan ember használt stabil érméket, hogy megvédje a megtakarításait, amikor a kormányzat által kibocsátott valuták bizonytalan helyzetbe kerültek. + + + Bővebben a stabil érmékről + + + + +### Kölcsönfelvétel {#lending} + +A kölcsönfelvétel a decentralizált szolgáltatóktól kétféle módon valósulhat meg. + +- Peer-to-peer (P2P), amikor a kölcsön felvevője közvetlenül egy meghatározott kölcsönadótól kap pénzt. +- Gyűjtőszámlás (pool), amikor a kölcsönadó pénzeszközt biztosít (likviditás) a gyűjtőszámlának, amelytől a kölcsönvevők pénzt tudnak szerezni. + + + Tovább a kölcsönfelvételi dappokhoz + + +Számos előnye van annak, ha decentralizált kölcsönadót használunk... + +#### A kölcsönfelvétel magán jellegének megőrzése {#borrowing-privacy} + +Manapság a pénz kölcsönadása és -vétele az abban résztvevő egyének köré rendeződik. A bank tudni akarja, hogy vissza fogja-e fizetni a kölcsönt annak igénylője, mielőtt odaítélné neki. + +A decentralizált kölcsönzésnél a feleknek nem kell azonosítaniuk magukat. Ehelyett a kölcsönvevő fedezetet ad, melyet a kölcsönadó automatikusan megkap, ha a kölcsönt nem fizeti vissza. Néhány kölcsönadó NFT-ket is elfogad fedezet gyanánt. Az NFT-k olyan okiratok, melyek egy egyedi eszközhöz kapcsolódnak, mint például egy festmény. [Bővebben az NFT-kről](/nft/) + +Így anélkül lehet pénzt kölcsönözni, hogy hitelellenőrzést kellene végezni vagy személyes információkat átadni. + +#### Globális alapokhoz való hozzáférés {#access-global-funds} + +Amikor valaki decentralizált kölcsönadóhoz fordul, akkor az egész világon letétbe helyezett alapok válnak számára elérhetővé, nem csak azok az eszközök, melyeket a kiválasztott bankban vagy intézményben elhelyeztek. Ez sokkal elérhetőbbé teszi a kölcsönt és jobb kamatozást is biztosít. + +#### Adóhatékonyság {#tax-efficiencies} + +A kölcsönfelvétel révén hozzáférhet a szükséges eszközökhöz, így nem kell eladnia a rendelkezésére álló ETH-t (melynek adóvonzata van). Ehelyett használhatja az ETH-t fedezetként egy stabilérme-kölcsönhöz. Így a szükséges pénz is rendelkezésére áll, és az ETH-t is megtarthatja. A stabil érmék olyan tokenek, melyek előnyösebbek, ha készpénzre van szüksége, mert az értékük nem változik annyira, mint az ETH esetében. [Bővebben a stabil érmékről](#stablecoins) + +#### Villámkölcsönök {#flash-loans} + +A villámkölcsön a decentralizált kölcsönzés kísérleti jellegű formája, amikor fedezet nélkül, illetve bármiféle személyes adat átadása nélkül tud valaki kölcsönt felvenni. + +Ezek jelenleg nem érhetők el kiterjedt körben a nem technikai felhasználók között, de arrafelé mutatnak, ami a jövőben mindenki számára rendelkezésre fog állni. + +Azon az alapon működik, hogy a kölcsönt ugyanabban a tranzakcióban veszik fel és fizetik vissza. Ha nem tudják visszafizetni, akkor a tranzakció visszafordul, mintha nem is történt volna semmi. + +A kölcsönzéshez használt pénzeszközök likviditási gyűjtőszámlákon találhatók (nagy mennyiségű pénzeszközök kölcsönzési célra). Ha egy adott pillanatban nem használják azokat, akkor egy személynek lehetősége van kölcsönvenni az eszközöket, üzletet hajtani végre azokkal, és egyszerre visszafizetni azokat, szinte a kölcsönzéssel azonos időben. + +Ily módon rengeteg logikát kell belefoglalni egy ilyen magáért beszélő tranzakcióba. Erre egy egyszerű példa az lehet, hogy valaki arra használja a villámkölcsönt, hogy egy adott eszközből a lehető legtöbbet beszerezze egy adott áron, és eladja azt egy másik tőzsdén, ahol az ár magasabb. + +Így egyetlen tranzakcióban a következők történnek: + +- X összegű $asset-et kölcsönöz 1,00 $ értéken az A tőzsdén +- Az X összegű $asset-et eladja 1,10 $ értéken a B tőzsdén +- Visszafizeti a kölcsönt az A tőzsdének +- A profit mínusz a tranzakciós költség az Ön nyeresége + +Ha a B tőzsdén lévő kínálat hirtelen lezuhan, és a felhasználó nem tudott eleget vásárolni ahhoz, hogy lefedje az eredeti kölcsönt, akkor a tranzakció egyszerűen visszafordul. + +Ha a hagyományos pénzügyi világban szeretne ugyanilyen ügyletet végrehajtani, akkor hatalmas pénzösszegre van szüksége. Ezek a pénzkereső stratégiák csak azoknak elérhetők, akik már most is vagyonosak. A villámkölcsön egy olyan jövőt fest elénk, melyben a pénzcsinálásnak nem előfeltétele az, hogy az ember vagyonos legyen. + +[Bővebben a villámkölcsönökről](https://aave.com/flash-loans/) + + + +### Kezdjen el pénzt megtakarítani a kriptóval {#saving} + +#### Kölcsönadás {#lending} + +A rendelkezésére álló kriptovaluta kölcsönadásával kamatot kaphat, így pénzeszközei folyamatosan növekednek. Jelenleg a kamatráták sokkal magasabbak, mint a helyi bankokban (ha egyáltalán van elérhető bank a közelében). Itt egy példa: + +- Kölcsönadja a rendelkezésére álló 100 Dai-t, ami egy [stabil érme](/stablecoins/), egy olyan termékért, mint az Aave. +- Kap 100 Aave Dai-t (aDai), mely egy token, és a kölcsönadott Dai-t reprezentálja. +- Az aDai növekedni fog a kamatráta alapján, így Ön láthatja, ahogy az egyenlege növekszik a tárcájában. Az éves ráta (APR) függvényében az Ön tárcaegyenlege akár néhány napon vagy órán belül már 100,1234 összeget mutathat! +- Bármikor visszavonhat bármekkora Dai összeget, ami megegyezik az Ön aDai egyenlegével. + + + Tovább a kölcsönadási dappokhoz + + +#### Veszteség nélküli lottó {#no-loss-lotteries} + +A veszteség nélküli lottók, mint a PoolTogether, szórakoztató és innovatív módszerek a megtakarításokra. + +- Vásárol 100 jegyet 100 Dai tokenért. +- Kap 100 plDai-t, ami a 100 jegyet reprezentálja. +- Ha valamelyik jegyét kisorsolják, a plDai egyenlege megnövekszik a nyeremény összegével. +- Ha nem nyer, akkor a 100 plDai átgördül a következő heti sorsolásra. +- Bármikor visszavonhat bármekkora Dai összeget, ami megegyezik az Ön plDai egyenlegével. + +A rendelkezésre álló nyeremény abból a kamatból keletkezik, amit a jegyvásárláson összegyűjtött összeg kölcsönadásából szereznek, ahogy azt a fenti példa is mutatja. + + + Próbálja ki a PoolTogether lehetőséget + + + + +### Kereskedés a tokenekkel {#swaps} + +Az Ethereumon ezernyi token elérhető. A decentralizált tőzsdék (DEX) lehetővé teszik, hogy a felhasználók a különféle tokenekkel bármikor kereskedjenek. Eközben az eszközök feletti kontroll végig megmarad. Olyan, mint amikor az ember egy másik országba utazik és valutaváltót használ. Ugyanakkor a DeFi sosem zár be. A pénzpiacok folyamatosan nyitva vannak (az év 365 napján, napi 24 órában), a technológia pedig garantálja, hogy mindig van, aki elfogadja az ügyletet. + +Például, ha Ön szeretné használni a veszteség nélküli lottózást, a PoolTogether-t (ahogy fentebb írtuk), szüksége lesz Dai vagy USDC tokenre. A decentralizált tőzsdén átválthatja a kívánt ETH-összeget ezekre a tokenekre, majd vissza, amikor végzett az ügylettel. + + + Tovább a tokenes tőzsdékre + + + + +### Haladó szintű kereskedés {#trading} + +Haladóbb lehetőségek is rendelkezésre állnak azoknak a kereskedőknek, akik több kontrollt szeretnének. Lehetségesek a meghatározott áron történő vételi/eladási megbízások (limit order), határidős ügyletek, tőkeáttétes kereskedések és még sok más. A decentralizált kereskedés során Ön hozzáfér a globális likviditáshoz, a piac sosem zár be, az eszközök feletti kontroll pedig mindig az Ön kezében van. + +A centralizált tőzsdéken ehhez képest letétbe kell helyezni az eszközöket a kereskedés előtt, és meg kell bízni bennük, hogy azt megfelelően kezelik. Miközben az eszköz letétben van náluk, nincs biztonságban, mert a centralizált tőzsdék a hackerek kedvelt célpontjai. + + + Tovább a kereskedő dappokhoz + + + + +### Portfóliófejlesztés {#investing} + +Az Ethereumon találhatók olyan alapkezelő termékek, melyek az Ön által választott stratégia mentén megpróbálják megnövelni portfóliója értékét. Mindez automata, mindenki számára nyitott, és nem igényel kezelőt, aki a profitból levenné a saját részét. + +Egy jó példa erre a [DeFi Pulse Index fund (DPI)](https://defipulse.com/blog/defi-pulse-index/). Ez az alap automatikusan kiigazítja az Ön portfólióját, hogy az állandóan [a legjobb DeFi-tokeneket tartalmazza az aktuális piaci értékük alapján](https://www.coingecko.com/en/defi). Önnek nem kell foglalkoznia a részletekkel, és bármikor visszavonhatja pénzeszközeit az alapból. + + + Tovább a befektetési dappokhoz + + + + +### Közösségi elképzelések finanszírozása {#crowdfunding} + +Az Ethereum egy tökéletes platform arra, hogy a közösség segítségével finanszírozzon bizonyos elképzeléseket: + +- A lehetséges finanszírozók bárhonnan jöhetnek – az Ethereum és a tokenjei mindenkinek elérhetők, a világon bárhol. +- Átlátható, így az adománygyűjtők igazolni tudják, hogy mennyi pénz jött össze. Azt is nyomon lehet követni, hogy a pénz hogyan lett elköltve. +- Az adománygyűjtők automatikus visszatérítést is be tudnak állítani, például ha egy adott határidőre nem jön össze a minimális összeg. + + + Tovább a közösségi finanszírozás dappokhoz + + +#### Kvadratikus finanszírozás {#quadratic-funding} + +Az Ethereum egy nyílt forráskódú program, és az eddigi fejlesztések nagy részét a közösség finanszírozta. Ez vezetett el egy érdekes és új modellhez: a kvadratikus finanszírozáshoz. Ennek lehetősége van azt a módot továbbfejleszteni, ahogy a közjavak finanszírozását kezelhetjük. + +A kvadratikus finanszírozás gondoskodik arról, hogy azok a projektek kapják a finanszírozást, amelyre tényleg a legnagyobb az igény. Tehát azokat támogatjuk, amelyek a leginkább magasabb szintre emelik az emberek életét. Így működik: + +1. Az adományozott pénzösszegek egy alapba (matching pool) kerülnek. +2. Megkezdődik a nyilvános adománygyűjtés. +3. Az emberek úgy jelezhetik, hogy számukra fontos egy adott projekt, hogy pénzt adományoznak rá. +4. Az adománygyűjtés lezártával az alapot szétosztják a projektek között. Ebből az alapból az a projekt kapja a legmagasabb összeget, amelyre a leginkább igényt tartanak az adományozók. + +Eszerint az A projekt, mely 100 adományt kapott, egyenként 1 $ értékben, több finanszírozást kaphat az alapból, mint a B projekt, mely egyetlen adományt kapott 10 000 $ értékben (a kapott összeg az alap méretén múlik). + +[Bővebben a kvadratikus finanszírozásról](https://wtfisqf.com) + + + +### Biztosítások {#insurance} + +A decentralizált biztosítások célja, hogy azok olcsóbbak, sokkal átláthatóbbak legyenek, és gyorsabb legyen a kifizetés. Az automatizálásnak köszönhetően a biztosítás általi lefedettség megfizethetőbb, a kifizetések pedig gyorsabbak. Az igénybejelentéshez használt adatok teljesen transzparensek. + +Az Ethereum termékei, mint bármelyik szoftver, tartalmazhatnak hibákat és sebezhető pontokat. Emiatt jelenleg sok biztosítási megoldás a felhasználók eszközeinek elvesztése ellen ad védelmet. Ugyanakkor vannak olyan projektek, melyek elkezdtek kialakítani az élet többi eseményére vonatkozóan is biztosításokat. Egy jó példa erre az Etherisc's Crop biztosítása, melynek célja [a kisméretű, kenyai gazdálkodók védelme az aszály és az árvíz ellen](https://blog.etherisc.com/etherisc-teams-up-with-chainlink-to-deliver-crop-insurance-in-kenya-137e433c29dc). A decentralizált biztosítás olcsóbb megoldást tud kínálni a gazdálkodóknak, akiknek a hagyományos biztosítók általában megfizethetetlenek. + + + Tovább a biztosítási dappokhoz + + + + +### Gyűjtőhelyek és portfóliókezelők {#aggregators} + +Amikor ennyi minden zajlik, Önnek is szüksége lehet egy olyan megoldásra, mellyel a befektetéseit, kölcsöneit és kereskedéseit figyelemmel követheti. Rengeteg olyan termék elérhető, melyekkel egyetlen helyről tudja az összes DeFi tevékenységét koordinálni. Ez a DeFi nyílt architektúrájának szépsége. A csapatok olyan interface-eket építenek, melyekkel nemcsak az összes termék kapcsán láthatja az egyenlegét, hanem használhatja azok tulajdonságait is. Amint Ön is jobban elmélyül a DeFi világában, hasznosnak fogja ezt találni. + + + Tovább a portfóliós dappokhoz + + + + +## Hogyan működik a DeFi? {#how-defi-works} + +A decentralizált pénzügyek (DeFi) kriptovalutákat és okosszerződéseket használnak ahhoz, hogy közvetítő nélküli szolgáltatásokat adjanak. A mai pénzügyi világban a pénzintézetek garantálják a tranzakciókat. Ez nagy hatalmat ad az intézményeknek, mert a pénz rajtuk áramlik keresztül. Emellett emberek milliárdjai világszerte még bankszámlát sem tudnak nyitni maguknak. + +A DeFi-ban az okosszerződés helyettesíti a pénzintézetet a tranzakció során. Az okosszerződés egy olyan Ethereum-számla, mely pénzeszközöket tartalmaz és azokat elküldheti vagy visszaveheti bizonyos feltételek mentén. Miután az okosszerződés életbe lépett, már senki sem változtathatja meg – úgy fog működni, ahogy le lett programozva. + +Egy olyan szerződést, melynek lényege, hogy támogatást vagy zsebpénzt küldjön, le lehet programozni úgy, hogy A számláról B számlára rakjon pénzt minden pénteken. Ezt addig fogja csinálni, amíg az A számlán elegendő összeg található. Senki sem tudja megváltoztatni a szerződést úgy, hogy hozzáadja a C számlát és ellopja az összeget. + +A szerződések emellett teljesen nyilvánosak és bárki megvizsgálhatja azokat. Eszerint a rossz szerződések elég hamar a közösség vizsgálódása alá kerülnek. + +Ez valójában azt jelenti, hogy jelenleg az Ethereum-közösség technikailag képzettebb tagjaiban bízunk, akik el tudják olvasni a programkódot. A nyílt forráskódon alapuló közösség segít a fejlesztőket ellenőrzés alatt tartani, ami idővel szükségtelenné fog válni, ahogy az okosszerződéseket könnyebb lesz átlátni, és a programkód megbízhatóságára más igazolási módok is születnek. + +## Az Ethereum és a DeFi {#ethereum-and-defi} + +Az Ethereum tökéletes alapot biztosít a decentralizált pénzügyek (DeFi) számára: + +- Az Ethereumot és az azon működő okosszerződéseket senki sem birtokolja – tehát bárki használhatja a DeFi-t. Ebből adódik, hogy senki sem változtathatja meg a szabályokat. +- A DeFi termékek a háttérben ugyanazon a nyelven szólnak, ami az Ethereum. Emiatt a termékek nagy része zökkenőmentesen képes együttműködni. Az egyik platformon kölcsönadhat tokeneket, és kereskedhet a kamatozó tokenekkel egy teljesen másik piacon, teljesen másik alkalmazással. Ez olyan, mintha a bankjában a hűségpontokat készpénzre váltaná. +- A tokenek és kriptovaluták az Ethereum részei, mely egy megosztott főkönyv – fő jellemzője a tranzakciók és a tulajdonlás követhetősége. +- Az Ethereum tökéletes pénzügyi szabadságot ad – a legtöbb termék sosem fog felügyeletet gyakorolni az Ön eszközei felett, így a kontroll Önnél marad. + +A DeFi-t a következő rétegek szerint értelmezheti: + +1. A blokklánc – az Ethereum tartalmazza az összes tranzakciót és a számlák státuszát. +2. Az eszközök – [ETH](/eth/) és a többi token (valuták). +3. A protokollok – az [okosszerződések](/glossary/#smart-contract), melyek a műveleteket biztosítják, mint amilyen például egy szolgáltatás az eszközök decentralizált kölcsönadására. +4. [Az alkalmazások](/dapps/) – azok a termékek, melyek révén kezeljük és elérjük a protokollokat. + +## Építse Ön is a DeFi-t {#build-defi} + +A DeFi egy nyílt forráskódú kezdeményezés. A kapcsolódó protokollok és alkalmazások mind nyitottak az Ön számára, hogy megvizsgálja azokat, elágazásokat készítsen azokból vagy továbbfejlessze azokat. A rétegezett struktúra következtében (melynek részei ugyanarra az alap blokkláncra épülnek és ugyanazokat az eszközöket használják) a protokollokat össze lehet kötni, hogy egyedi lehetőségeket aknázzunk ki. + + + Bővebben a dappok építéséről + + +## További olvasnivaló {#futher-reading} + +### DeFi adatok {#defi-data} + +- [DeFi Prime](https://defiprime.com/) +- [DeFi Llama](https://defillama.com/) +- [DeFi Rate](https://defirate.com/) + +### Cikkek a DeFi-ról {#defi-articles} + +- [Útmutató kezdőknek a DeFi-ról](https://blog.coinbase.com/a-beginners-guide-to-decentralized-finance-defi-574c68ff43c4) – _Sid Coelho-Prabhu, 2020. január 6._ + +### Videók {#videos} + +- [Finematics – decentralizált pénzügyi oktatás](https://finematics.com/) – _Videók a DeFi-ról_ +- [The Defiant](https://www.youtube.com/playlist?list=PLaDcID4s1KronHMKojfjwiHL0DdQEPDcq) – _A DeFi alapjai: minden, amit tudnia kell, hogy elboldoguljon ebben a néha rejtélyes világban._ +- [Whiteboard Crypto](https://youtu.be/17QRFlml4pA) _Mi az a DeFi?_ + +### Közösségek {#communities} + +- [DeFi Llama Discord-szerver](https://discord.gg/buPFYXzDDd) +- [DeFi Pulse Discord-szerver](https://discord.gg/Gx4TCTk) diff --git a/src/content/translations/hu/desci/index.md b/src/content/translations/hu/desci/index.md new file mode 100644 index 00000000000..09674ea3c53 --- /dev/null +++ b/src/content/translations/hu/desci/index.md @@ -0,0 +1,139 @@ +--- +title: Nem központosított kutatás (DeSci) +description: A decentralizált tudomány áttekintése az Ethereumon +lang: hu +template: use-cases +emoji: ":microscope:" +sidebarDepth: 2 +image: ../../../../assets/future_transparent.png +alt: "" +summaryPoint1: Egy globális és nyitott alternatívája a jelenlegi tudományos rendszernek. +summaryPoint2: Olyan technológia, mely lehetővé teszi a tudósok számára, hogy finanszírozási alapot gyűjtsenek, kísérleteket végezzenek, megosszák az adatokat, kommunikálják elképzeléseiket stb. +summaryPoint3: A nyitott tudomány mozgalomra épül. +--- + +## Mi az a decentralizált tudomány (DeSci)? {#what-is-desci} + +A decentralizált tudomány (DeSci) egy olyan mozgalom, melynek célja a nyilvános infrastruktúra létrehozása a tudományos eredmények korrekt és egyenlő finanszírozása, létrehozása, véleményezése, hitelesítése, tárolása és terjesztése érdekében a web3-technológiára alapozva. + +A DeSci egy olyan ökoszisztémát akar megalkotni, ahol a tudósok ösztönözve vannak a kutatásaik nyilvános megosztására, munkájukért javadalmazásban részesülnek, miközben megengedik, hogy bárki könnyedén elérje és hozzájáruljon a kutatásukhoz. A DeSci azt az elképzelést váltja valósággá, hogy a tudományos ismeretek mindenkinek elérhetők, a tudományos kutatások pedig transzparensek legyenek. A DeSci egy decentralizáltabb és jobban elosztott tudományos kutatási modellt hoz létre, mely ellenállóbb a cenzúrával és a központi hatóságok irányításával szemben. A DeSci reményeink szerint egy olyan környezetet teremt, ahol az új és szokatlan elképzelések virágozni fognak azáltal, hogy a finanszírozáshoz, a tudományos eszközökhöz és a kommunikációs csatornákhoz való hozzáférést decentralizáljuk. + +A decentralizált tudomány sokrétűbb finanszírozási forrásokat (a [DAO-októl](/dao/) kezdve, [a kvadratikus adományozáson](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531) keresztül a közösség általi finanszírozásig és még tovább), sokkal elérhetőbb adatokat és módszereket tesz lehetővé, miközben ösztönzi a reprodukálhatóságot is. + +### Juan Benet – A DeSci mozgalom + + + +## Hogyan fejleszti a DeSci a tudományt {#desci-improves-science} + +Következzen egy hozzávetőleges felsorolás a tudomány területén tapasztalt fő problémákról, és arról, hogy a decentralizált tudomány hogyan segíthet ezeken + +| **Decentralizált tudomány** | **Hagyományos tudomány** | +| --------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| A finanszírozási alapok elosztását a nyilvánosság határozza meg olyan módszerek alapján, mint a kvadratikus adományozás vagy a DAO-k. | Kicsi, zárt, központosított csoportok irányítják a finanszírozási források elosztását. | +| A tudósok dinamikus csapatokat alkotnak társaikkal, akik a világ bármelyik pontján lehetnek. | A finanszírozási alapok és a helyi intézmények behatárolják a kollaborációt. | +| A finanszírozási döntések online történnek és transzparensek. Új finanszírozási mechanizmusokat térképeznek fel. | A finanszírozási döntéseket hosszú átfutási idővel hozzák meg és korlátolt transzparencia jellemzi azokat. Kevés finanszírozási mechanizmus létezik. | +| A megosztott laboratóriumi szolgáltatások könnyebbek és átláthatóbbak a web3-alapok révén. | A megosztott laboratóriumi erőforrások gyakran lassúak és kevéssé átláthatók. | +| A publikálás új modelljei alakíthatók ki, amelyek a web3-alapokat használják a bizalom, átláthatóság és univerzális hozzáférés biztosítására. | Ön a meglévő publikációs utakat használja, melyekről gyakran mondják, hogy nem hatékonyak, elfogultak és kizsákmányolók. | +| Tokeneket és reputációt lehet szerezni a tudományos eredmények szakértői értékeléséért. | A szakértői értékelést nem fizetik meg, csak a profitorientált kiadók javát szolgálja. | +| A tudós birtokolja a szellemi tulajdont (IP), melyet ő hoz létre és transzparens feltételek szerint osztja meg azt. | Az intézmény birtokolja a szellemi tulajdont, amit a tudós létrehoz. Az ahhoz való hozzáférés nem egyértelmű. | +| A kutatás teljes egészét megosztják, beleértve a sikertelen erőfeszítések adatait is, mivel minden lépés a blokkláncon található. | A publikációk részrehajlók, mivel a kutatók nagyobb valószínűséggel osztják meg a sikeres eredményeket hozó kísérleteket. | + +## Az Ethereum és a DeSci {#ethereum-and-desci} + +A decentralizált tudományt kiszolgáló rendszer robosztus biztonságot, minimális pénzügyi és tranzakciós költséget, és az alkalmazásfejlesztést támogató gazdag ökoszisztémát igényel. Az Ethereum mindent megad ahhoz, hogy kialakuljon egy rendszer a decentralizált tudomány számára. + +## A DeSci alkalmazási területei {#use-cases} + +A DeSci egy olyan tudományos eszköztárat épít, amely be tudja vezetni a web2 akadémikus világát a digitális világba. Következzen néhány alkalmazási terület, amit a web3 ajánl a tudományos közösségnek. + +### Publikálás {#publishing} + +A tudományos publikálás közismerten problémás, mivel olyan kiadókon alapszik, amelyek a tudósok, szakértők és szerkesztők nem megfizetett munkájára építenek, hogy megszülessen a kézirat, utána pedig elképesztő kiadási díjakat számolnak fel érte. A nyilvánosság, aki általában közvetett módon fizet ezért a munkáért és a kiadási költségeiért az adózáson keresztül, sokszor nem éri el ugyanezt a munkát, csak ha a kiadónak újra fizet érte. Az egyéni tudományos munkák megjelentetésének teljes költsége sokszor öt számjegyű összeg (USD-ben kifejezve), amely aláássa a tudományos ismeret alapvető eszméjét, mint [közjó](https://www.econlib.org/library/Enc/PublicGoods.html), miközben hatalmas profitot generál a kiadók kis csoportjának. + +Ingyenes és nyílt hozzáférésű platformok állnak rendelkezésre pre-print szerverek (online könyvtárak) formájában, [mint amilyen az ArXiv is](https://arxiv.org/). Ugyanakkor ezek a platformok nem üzemeltetnek minőségi ellenőrzést, [anti-sybil mechanizmust](https://csrc.nist.gov/glossary/term/sybil_attack), és nem trekkelik a cikkszintű mérőszámokat, tehát csak valamilyen formában nyilvánosságra hozzák azt, amit utána átadnak a hagyományos kiadóknak. A SciHub a kiadott munkákat ingyen elérhetővé teszi, ugyanakkor nem legális módon, és csak azután, hogy a kiadók megkapták érte a fizetségüket és az adott munkát szigorú szerzői jogi szabályozásba csomagolják. Ez egy kritikus hiányosság az elérhető tudományos munkák és adatok terén, melyet egy beágyazott törvényességi mechanizmus és ösztönzési modell támaszt alá. Az ilyen rendszer megépítéséhez szükséges eszközök elérhetők a web3-ban. + +### Megismételhetőség és újbóli előállíthatóság {#reproducibility-and-replicability} + +A megismételhetőség és újbóli előállíthatóság a minőségi tudományos felfedezések alapkövei. + +- A megismételhető eredmények lényege, hogy egymás után többször elérhető ugyanaz az eredmény adott csapat által, adott módszertant használva. +- Az újbóli előállíthatóság lényege, hogy egy másik csapat is azonos eredményre jut ugyanazokat a kísérleti tényezőket használva. + +Az új web3 saját eszközei biztosítani tudják, hogy a megismételhetőség és újbóli előállíthatóság a felfedezés alapjaiként szolgálnak. Beleszőhetjük a minőségi tudományt az akadémikus világ technológiai szövetébe. A web3 képes minden egyes elemzési komponens esetében tanúsítást kreálni: a nyers adat, a számítási motor és az alkalmazás eredményei esetében. A konszenzuson alapuló rendszerek szépsége az, hogy amikor egy megbízható hálózat (trusted network) tartalmazza ezeket az összetevőket, akkor a hálózat minden egyes tagja felelős lehet azért, hogy újból előállítsa a számítást és validálja az eredményeket. + +### Finanszírozás {#funding} + +A jelenlegi elterjedt modell a tudományos tevékenységek finanszírozására az, hogy a tudósok egyénileg vagy csoportban írásos jelentkezést adnak be egy finanszírozással foglalkozó ügynökségnek. A megbízottak egy kis bizottsága pontozza a jelentkezéseket és interjút folytat a jelentkezőkkel, mielőtt finanszírozást biztosítana a jelentkezők egy kis részének. Amellett, hogy ez az eljárás szűk keresztmetszetet hoz létre, hiszen néha évekig is várni kell a jelentkezés és a támogatás elnyerése között, a módszer nagy mértékben sebezhető a részrehajlás, az önérdek és a bizottság politikai beállítottsága miatt. + +Az elemzések kimutatták, hogy ezek a bizottságok kvázi alkalmatlanok arra, hogy kiválasszák a jó minőségű jelentkezéseket, mivel ugyanazt a jelentkezést más-más bizottságok teljesen másképpen ítélik meg. Mivel a finanszírozási keretek szűkösek, ezért a tudományos tevékenység az idősebb kutatók kis csoportjára szűkül le, akik konzervatívabb projekteken dolgoznak. Ennek következtében egy szélsőségesen versenyző finanszírozási helyzet alakult ki, mely torz ösztönzésekkel és fullasztó innovációkkal jár. + +A web3 képes arra, hogy megbontsa ezt a megtört, torz finanszírozási modellt azáltal, hogy különféle ösztönzési módszereket tud alkalmazni, melyeket a DAO-k és a web3 résztvevők már széles körben alkalmaznak. [A retroaktív közjó-finanszírozás](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c), [a kvadratikus finanszírozás](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2003531), [a DAO-k általi irányítás](https://www.antler.co/blog/daos-and-web3-governance) és [a tokenizált ösztönzési struktúrák](https://cdixon.org/2017/05/27/crypto-tokens-a-breakthrough-in-open-network-design) csak néhány web3-eszköz, melyek forradalmasítani tudnák a tudományos finanszírozás világát. + +### A szellemi tulajdon (IP) birtoklása és fejlesztése {#ip-ownership} + +A szellemi tulajdon (IP) nagy probléma a hagyományos tudomány területén: onnantól kezdve, hogy az beragad az egyetemekre vagy nem használják a biotechnológiai tevékenységben, odáig, hogy hírhedten nehéz meghatározni annak értékét. Ugyanakkor a digitális eszközök tulajdonlására (mint amilyenek a tudományos adatok vagy cikkek) a web3 rendkívül jól használja a [nem helyettesíthető tokeneket (NFT)](/nft/). + +Ugyanazon a módon, ahogy az NFT-k képesek a jövőbeli tranzakciók után is fizetni az eredeti alkotónak, lehetséges transzparens értékteremtő láncokat meghatározni arra, hogy a kutatókat, az irányító szerveket (mint a DAO) vagy akár a kutatási adatokat biztosító személyeket díjazzák. + +[Az IP-NFT-k](https://medium.com/molecule-blog/ip-nfts-for-researchers-a-new-biomedical-funding-paradigm-91312d8d92e6) arra is használhatók, hogy a kutatási kísérletek decentralizált adattárháza jöjjön létre, és bekerüljön az NFT- és [DeFi](/defi/)-alapú finanszírozásba (a töredékes forrásoktól a kölcsönalapok és az értékfelmérés felé mozdulva). Az eredetileg is láncon belül létező entitások, mint a DAO-k, például a [VitaDAO](https://www.vitadao.com/), végezhet kutatást közvetlenül a láncon. A nem átadható, [egyénhez kötött (soulbound) tokenek](https://vitalik.ca/general/2022/01/26/soulbound.html) kifejlődése szintén fontos lehet a DeSci számára, hogy a tudósok az Ethereum-címükhöz kapcsoltan bizonyítani tudják tapasztalataikat és hitelesítő adataikat. + +### Adattárolás, adatelérés és architektúra {#data-storage} + +A tudományos adatok sokkal hozzáférhetőbbek a web3-sémák használatával, a megosztott tárolás révén pedig a kutatások nem tudnak megsemmisülni a különféle kataklizmaesemények esetén. + +A kiindulópont egy olyan rendszer, melyet bármelyik decentralizált identitás elér, aki a szükséges igazolható bizonyítványokkal (VC) rendelkezik. Ennek következtében az bizalmas adatokat biztonságos módon tudják a megbízott felek replikálni, ellenállóbbak a duplikációval és a cenzúrával szemben, lehetséges az eredmények újbóli előállítása, ráadásul több résztvevő is kollaborálhat és új adatokat adhat a meglévőkhöz. A bizalmas adatokat kezelő számítástechnikai módszerek, mint a [compute-to-data](https://7wdata.be/predictive-analytics/compute-to-data-using-blockchain-to-decentralize-data-science-and-ai-with-the-ocean-protocol), alternatív hozzáférési lehetőséget biztosítanak a nyers adatok replikálására, illetve megbízható kutatási környezetet (TRE) alakítanak ki a legbizalmasabb adatok számára. A megbízható kutatási környezetekre (TRE) [az Országos Egészségügyi Szolgálat (NHS)](https://medium.com/weavechain/whats-in-store-for-the-future-of-healthcare-data-b6398745fbbb) úgy hivatkozik, mint az adatok titkosságát figyelembe vevő és együttműködést támogató, innovatív megoldás, mivel egy olyan ökoszisztémát hoz létre, ahol a kutatók biztonságos módon dolgozhatnak az adatokkal helyben, és közben megoszthatják a programkódjaikat és gyakorlataikat. + +A rugalmas web3-adatkezelési megoldások támogatják ezeket a szcenáriókat, és egy valóban nyitott és nyilvános tudomány alapjait biztosítják, ahol a kutatók közjót hoznak létre, és nem kell hozzáférési engedélyeket vagy díjakat fizetniük. A web3 nyilvános adatmegoldásai, mint a IPFS, Arweave és Filecoin a decentralizációra vannak optimalizálva. A dClimate például univerzális hozzáférést biztosít a klíma- és időjárási adatokhoz, beleértve az időjárási állomásokat és a klíma-előrejelző modelleket. + +## Kapcsolódjon be {#get-involved} + +Fedezze fel a projekteket és csatlakozzon a DeSci közösségéhez. + +- [DeSci.Global: globális események és találkozók](https://desci.global) +- [Blockchain for Science Telegram](https://t.me/BlockchainForScience) +- [Molecule: Finanszírozás biztosítása és elnyerése a kutatási projektjére](https://discover.molecule.to/) +- [VitaDAO: hosszútávú kutatások finanszírozása a szponzorált kutatási megállapodások alapján](https://www.vitadao.com/) +- [ResearchHub: tudományos eredmények publikálása és azok megvitatása munkatársaival](https://www.researchhub.com/) +- [LabDAO: fehérjék számítógépes szimulációja](https://alphafodl.vercel.app/) +- [dClimate API: keresés a decentralizált közösség által gyűjtött klímaadatokban](https://api.dclimate.net/) +- [DeSci Foundation: DeSci publikációs eszközfejlesztés](https://descifoundation.org/) +- [DeSci.World: itt minden megtudható a decentralizált tudományról](https://desci.world) +- [Fleming Protocol: nyílt forráskódú adatgazdaság, amely fűti a kollaboratív orvosbiológiai felfedezéseket](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd) +- [OceanDAO: az adattal kapcsolatos tudományok DAO által irányított finanszírozása](https://oceanprotocol.com/dao) +- [Opscientia: nyílt, decentralizált, tudományos munkafolyamatok](https://opsci.io/research/) +- [LabDAO: fehérjék számítógépes szimulációja](https://alphafodl.vercel.app/) +- [Bio.xyz: finanszírozás szerzése a biotechnológiai DAO-jához vagy decentralizált tudományos projektjéhez](https://www.molecule.to/) +- [ResearchHub: tudományos eredmények publikálása és azok megvitatása munkatársaival](https://www.researchhub.com/) +- [VitaDAO: hosszútávú kutatások finanszírozása a szponzorált kutatási megállapodások alapján](https://www.vitadao.com/) +- [Fleming Protocol: nyílt forráskódú adatgazdaság, amely fűti a kollaboratív orvosbiológiai felfedezéseket](https://medium.com/@FlemingProtocol/a-data-economy-for-patient-driven-biomedical-innovation-9d56bf63d3dd) +- [Active Inference Lab](https://www.activeinference.org/) +- [CureDAO: közösség által irányított, precíziós egészségi platform](https://docs.curedao.org/) +- [IdeaMarkets: decentralizált tudomány hitelességének támogatása](https://ideamarket.io/) +- [DeSci Labs](https://www.desci.com/) + +Örömmel vesszük, ha bárki új projektet javasol – kérjük, tekintsék meg a [listázási szabályzatot](/contributing/adding-desci-projects/)! + +## További olvasnivaló {#further-reading} + +- [DeSci Wiki Jocelynn Pearl és UltraRare által](https://docs.google.com/document/d/1aQC6zn-eXflSmpts0XGE7CawbUEHwnL6o-OFXO52PTc/edit#) +- [Útmutató a decentralizált biotechnológiához – Jocelynn Pearl (a16z future)](https://future.a16z.com/a-guide-to-decentralized-biotech/) +- [A DeSci ügye](https://gitcoin.co/blog/desci-the-case-for-decentralised-science/) +- [Útmutató a DeSci-hez](https://future.com/what-is-decentralized-science-aka-desci/) +- [A decentralizált tudomány forrásai](https://www.vincentweisser.com/decentralized-science) +- [Molecule Biopharma IP-NFT-k – technikai leírás](https://molecule.to/blog/molecules-biopharma-ip-nfts-a-technical-description) +- [Bizalom nélküli rendszer építése a tudomány számára – Jon Starr](https://medium.com/@jringo/building-systems-of-trustless-science-1cd2d072f673) +- [A biotechnológiai DAO-k megjelenése](https://molecule.to/blog/the-emergence-of-biotech-daos) +- [Paul Kohlhaas – DeSci: a decentralizált tudomány jövője (podcast)](https://anchor.fm/andrew-steinwold/episodes/Paul-Kohlhaas---DeSci-The-Future-of-Decentralized-Science---Zima-Red-ep-117-e1h683a) +- [Active Inference Ontology a decentralizált tudomány számára (a Situated Sensemaking-től az Epistemic Commons-ig)](https://zenodo.org/record/6320575) +- [DeSci: a kutatás jövője – Samuel Akinosho](https://lucidsamuel.medium.com/desci-the-future-of-research-b76cfc88c8ec) +- [A tudomány finanszírozása (Epilógus: a DeSci és az új kriptoalapok) – Nadia](https://nadia.xyz/science-funding) +- [A decentralizáció megbontja a gyógyszerfejlesztést](https://medium.com/id-theory/decentralisation-is-disrupting-drug-development-28b5ba5d447f) + +### Videók {#videos} + +- [Mi az a decentralizált tudomány?](https://www.youtube.com/watch?v=-DeMklVWNdA) +- [Beszélgetés Vitalik Buterin és a tudós Aubrey de Grey között a hosszútávú kutatás és a kripto találkozási pontjáról](https://www.youtube.com/watch?v=x9TSJK1widA) +- [A tudományos publikálás szét van szakítva. A web3 meg tudja vajon javítani?](https://www.youtube.com/watch?v=WkvzYgCvWj8) +- [Juan Benet – DeSci, független laboratóriumok és a nagy adat tudománya](https://www.youtube.com/watch?v=zkXM9H90g_E) +- [Sebastian Brunemeier – Hogyan tudja a DeSci átalakítani az orvosbiológiai kutatást és a kockázati tőkét](https://www.youtube.com/watch?v=qB4Tc3FcVbM) diff --git a/src/content/translations/hu/developers/docs/oracles/index.md b/src/content/translations/hu/developers/docs/oracles/index.md index fdf4f2d93ed..b4f09aed22c 100644 --- a/src/content/translations/hu/developers/docs/oracles/index.md +++ b/src/content/translations/hu/developers/docs/oracles/index.md @@ -124,8 +124,8 @@ contract Oracle { ) public { - uint lenght = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, "")); - Request storage r = requests[lenght-1]; + uint length = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, "")); + Request storage r = requests[length-1]; // hardkódolt orákulum címek r.quorum[address(0x6c2339b46F41a06f09CA0051ddAD54D1e582bA77)] = 1; diff --git a/src/content/translations/hu/energy-consumption/index.md b/src/content/translations/hu/energy-consumption/index.md new file mode 100644 index 00000000000..6732b0b5467 --- /dev/null +++ b/src/content/translations/hu/energy-consumption/index.md @@ -0,0 +1,80 @@ +--- +title: Az Ethereum energiafogyasztása +description: Alapvető információk az Ethereum energiafogyasztásának megértéséhez. +lang: hu +--- + +# Az Ethereum energiafogyasztása {#proof-of-stake-energy} + +Az Ethereum egy környezetbarát blokklánc. Az Ethereum [proof-of-stake](/developers/docs/consensus-mechanisms/pos) konszenzus mechanizmusa ETH-t használ [az energia helyett, hogy biztosítsa a hálózatot](/developers/docs/consensus-mechanisms/pow). Az Ethereum energiafogyasztása [~0,0026 TWh/év](https://carbon-ratings.com/eth-report-2022) a teljes globális hálózaton. + +Az Ethereum energiafogyasztásának becsült adata egy [CCRI (Crypto Carbon Ratings Institute)](https://carbon-ratings.com) tanulmányból származik. Ez egy lentről felfelé építkező becslés az Ethereum-hálózat áramfogyasztásáról és karbonlábnyomáról ([nézze meg a reportot](https://carbon-ratings.com/eth-report-2022)). A különféle csomópontok áramfogyasztását mérték, melyek különböző hardverekkel és kliensszoftverekkel működnek. A becsült **2601 MWh** (0,0026 TWh), mint a hálózat teljes éves áramfogyasztása, megfelel **870 tonna CO2e** szén-dioxid kibocsátásnak, regionális tényezőket figyelembe véve. Ez az érték változik, ahogy a csomópontok belépnek a hálózatra és kilépnek a hálózatról – Ön is ellenőrizheti egy gördülő 7 napos átlagbecsléssel: [Cambridge-blokklánchálózat fenntarthatósági index](https://ccaf.io/cbnsi/ethereum) (a módszer kicsit más, nézze meg a részleteket az oldalukon). + +Ethereum energiafogyasztását vesszük össze más iparágak éves becsléseivel, hogy kontextusban lássuk azt. Így jobban megértjük, hogy Ethereum fogyasztása magas vagy alacsony. + + + +Az ábra a becsült éves fogyasztást mutatja TWh/év formájában. A becslések nyilvános adatokból származnak 2023. májusában, a forrásokat megtalálja a táblázat alatt: + +| | Éves energiafogyasztás (TWh) | Összevetve a PoS Ethereummal | Forrás | +| :------------------------- | :--------------------------: | :--------------------------: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Globális adatközpontok | 200 | 77 000x | [forrás](https://www.iea.org/commentaries/data-centres-and-energy-from-global-headlines-to-local-headaches) | +| Aranybányászat | 131 | 50 000x | [forrás](https://ccaf.io/cbnsi/cbeci/comparisons) | +| Bitcoin | 131 | 50 000x | [forrás](https://ccaf.io/cbnsi/cbeci/comparisons) | +| PoW Ethereum | 78 | 30 000x | [forrás](https://digiconomist.net/ethereum-energy-consumption) | +| Youtube (csak a közvetlen) | 12 | 4600x | [forrás](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf) | +| Számítógépes játékok (USA) | 34 | 13 000x | [forrás](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) | +| Netflix | 0,451 | 173x | [forrás](https://assets.ctfassets.net/4cd45et68cgf/7B2bKCqkXDfHLadrjrNWD8/e44583e5b288bdf61e8bf3d7f8562884/2021_US_EN_Netflix_EnvironmentalSocialGovernanceReport-2021_Final.pdf) | +| PayPal | 0,26 | 100x | [forrás](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261) | +| AirBnB | 0,02 | 8x | [forrás]() | +| PoS Ethereum | 0,0026 | 1x | [forrás](https://carbon-ratings.com/eth-report-2022) | + +Bonyolult pontos becsléseket készíteni az energiafogyasztásról, főleg ha a vizsgált entitás összetett ellátási lánccal bír, ami befolyásolja a hatékonyságát. Vegyük a Netflixet vagy Youtube-ot példaként. A fogyasztásuk becslése attól függően változik, hogy a rendszer fenntartását és a tartalomnak a felhasználóhoz való eljutását nézik (_közvetlen fogyasztás_) vagy beleveszik azt is, amit a tartalom előállítása, irodák fenntartása, reklámozás stb. jelent (_közvetett fogyasztás_). A közvetlen fogyasztás azt is felölelheti, hogy mennyi energia kell a felhasználónak, hogy a tartalmat megnézze a tévében, számítógépen és mobilon, ami ezektől az eszközöktől is nagyban függ. + +Egy erről szóló beszélgetés: [Carbon Brief](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix). A táblázat a Netflix által közölt _közvetlen_ és _közvetett_ használatot mutatja. A Youtube csak a _közvetlen_ fogyasztást adta meg, ami [12 TWh/év](https://www.gstatic.com/gumdrop/sustainability/google-2020-environmental-report.pdf). + +Az összehasonlítás a Bitcoint és a proof-of-work Ethereumot feltünteti. Fontos megérteni, hogy a proof-of-work hálózatok fogyasztása nem statikus, napról napra változik. A proof-of-work Ethereumra vonatkozó érték pontosan [az egyesítés (The Merge)](/roadmap/merge/) előtti állapotot mutatja, ami a proof-of-stake mechanizmusra váltotta át a rendszert, és a [Digiconomist](https://digiconomist.net/ethereum-energy-consumption) jelezte. Más források, mint a [Cambridge-blokklánchálózat fenntartási index](https://ccaf.io/cbnsi/ethereum/1) sokkal kevesebbre becsülik (20 TWh/évhez közelebb). A Bitcoin fogyasztása is más a különböző források szerint, ami sok [vitát](https://www.coindesk.com/business/2020/05/19/the-last-word-on-bitcoins-energy-consumption/) generál, nemcsak a felhasznált energia mennyiségéről, hanem annak forrásáról és etikájáról. Az energiafogyasztás nem feltétlenül pontosan kapcsolódik a környezeti hatásokhoz, mert különböző projektek különféle energiaforrásokat használnak, például kisebb vagy nagyobb arányú megújuló forrásokat. Például a [Cambridge Bitcoin elektromosáram-fogyasztási index](https://ccaf.io/cbnsi/cbeci/comparisons) azt mutatja, hogy a Bitcoin hálózati igénye elméletileg kielégíthető lenne abból a gázból vagy áramból, ami a szállítás során amúgy is elveszne. Az Ethereum a fenntarthatóság miatt cserélte le a rendszer energiaéhes részét egy környezetbarát alternatívára. + +Számtalan iparág energiafogyasztását és szén-dioxid-kibocsátását megtekintheti a [Cambridge-blokklánchálózat fenntarthatósági index oldalán](https://ccaf.io/cbnsi/ethereum). + +## Tranzakciónkénti becslés {#per-transaction-estimates} + +Számos cikk tranzakciónkénti becslésről beszél a blokkláncok esetén. Ez félrevezető, mert a blokkjavaslat és validálás független a benne található tranzakciók számától. A tranzakciónkénti felhasználás azt jelentené, hogy kevesebb tranzakció kevesebb energiát fogyaszt és fordítva, de ez nem igaz. Emellett a tranzakciónkénti becslés érzékeny arra, hogy a blokklánc tranzakcióátvitelét hogyan definiálják, melynek megcsavarásával látszólag nagyobb vagy kisebb érték jön ki. + +Például az Ethereumon a tranzakcióátvitel nemcsak az alapréteget tartalmazza, hanem a [második blokkláncréteg (L2)](/layer-2/) rollupjait is. Az L2 általában nincs benne a kalkulációkban, de ha hozzávennénk a szekvenszer általi fogyasztást (kevés) és a kezelt tranzakciókat (sok), akkor jelentősen lecsökkenne a tranzakciónkénti becslés. Ez az egyik oka annak, hogy a platformok tranzakciónkénti energiafogyasztásának összehasonlítása félrevezető lehet. + +## Az Ethereum karbonadóssága {#carbon-debt} + +Az Ethereum energiafelhasználása igen alacsony, de nem mindig volt így. Eredetileg a proof-of-work mechanizmust használta, ami nagyobb környezeti költségekkel járt, mint a jelenlegi proof-of-stake. + +Az Ethereum eleve a proof-of-stake alapú konszenzusmechanizmust tervezte, anélkül hogy feláldozná a biztonságot vagy a decentralizálást, és ezért többéves fókuszált kutatás és fejlesztés kellett hozzá. Emiatt a hálózat felállításához a proof-of-work mechanizmusra volt szükség. Ennél a bányászok a számítógépeiket használják az érték kiszámolására, energiát fogyasztva eközben. + +![Az Ethereum energiafogyasztásának összehasonlítása a Merge előtt és után, ahol az Eiffel torony (330 méter magas) a bal oldalon jeleni a korábbi állapotot, egy 4 cm-es LEGO-figura pedig a jelenlegit](energy_consumption_pre_post_merge.png) + +A CCRI becslése szerint a Merge több mint **99,988%-kal** lecsökkentette az éves áramfogyasztást. Ugyanígy a karbonlábnyoma is csökkent **99,992%-kal** (11 016 000 tonna helyett 870 tonna CO2e lett). Ez a változás olyan, mint az Eiffel torony magaságáról egy kis bábu méretére csökkent fogyasztás, ahogy az ábra illusztrálja. Ennek következtében a hálózat biztosításának környezeti költsége drasztikusan lecsökkent. A hálózat biztonsága pedig növekedett. + +## Környezetbarát alkalmazási réteg {#green-applications} + +Miközben az Ethereum energiafogyasztása nagyon alacsony, egy jelentős, fejlődő és igen aktív [**regeneratív pénzügyek (ReFi)**](/refi/) közösség épült a hálózaton. A ReFi alkalmazások a decentralizált pénzügyek (DeFi) komponenseit használják, hogy olyan pénzügyi alkalmazásokat építsenek, melyek pozitív externáliákat teremtenek. A ReFi része egy kiterjedtebb[„solarpunk”](https://en.wikipedia.org/wiki/Solarpunk) mozgalomnak, ami szorosan kötődik az Ethereumhoz, és a technológiai fejlődést a környezetről való gondoskodással párosítja. Az Ethereum decentralizált, engedélymentes és egymásra építhető jellege miatt ideális alap a ReFi és a solarpunk közösségeknek. + +A web3 közjó-finanszírozási platformjai, mint a [Gitcoin](https://gitcoin.co) klímaköröket működtetnek, hogy elősegítsék az Ethereum alkalmazási rétegének környezettudatos építését. Ezen kezdeményezések (és mások, mint a [decentralizált tudomány / DeSci](/desci/)) kialakulása által az Ethereum egy környezeti és közösségi szempontból pozitív technológia. + + + Ha szeretne az oldallal kapcsolatban fejlesztést javasolni, akkor naplózzon egy kérést (issue) vagy PR-t. A statisztikák nyilvánosan elérhető adatokból készült becslések, nem hivatalos állítások vagy ígéretek az ethereum.org csapat vagy az Ethereum Alapítvány részéről. + + +## További olvasnivaló {#further-reading} + +- [Cambridge-blokklánchálózat fenntarthatósági indexe](https://ccaf.io/cbnsi/ethereum) +- [Fehérházi jelentése a proof-of-work alapú blokkláncokról](https://www.whitehouse.gov/wp-content/uploads/2022/09/09-2022-Crypto-Assets-and-Climate-Report.pdf) +- [Ethereum-kibocsátás: egy alulról építkező becslés](https://kylemcdonald.github.io/ethereum-emissions/) – _Kyle McDonald_ +- [Ethereum energiafelhasználási index](https://digiconomist.net/ethereum-energy-consumption/) – _Digiconomist_ +- [ETHMerge.com](https://ethmerge.com/) – _[@InsideTheSim](https://twitter.com/InsideTheSim)_ +- [Az egyesítés (The Merge) – az Ethereum-hálózat áramfogyasztására és karbonlábnyomára gyakorolt hatása](https://carbon-ratings.com/eth-report-2022) – _CCRI_ +- [Az Ethereum energiafogyasztása](https://mirror.xyz/jmcook.eth/ODpCLtO4Kq7SCVFbU4He8o8kXs418ZZDTj0lpYlZkR8) + +## Kapcsolódó témák {#related-topics} + +- [Az Ethereum jövőképe](/roadmap/vision/) +- [A Beacon Chain](/roadmap/beacon-chain) +- [Az egyesítés](/roadmap/merge/) diff --git a/src/content/translations/hu/governance/index.md b/src/content/translations/hu/governance/index.md new file mode 100644 index 00000000000..3ca7094949b --- /dev/null +++ b/src/content/translations/hu/governance/index.md @@ -0,0 +1,183 @@ +--- +title: Az Ethereum irányítása +description: Annak bemutatása, hogy az Ethereummal kapcsolatos döntések hogyan születnek meg. +lang: hu +postMergeBannerTranslation: page-upgrades-post-merge-banner-governance-ood +--- + +# Bevezetés az Ethereum irányításába {#introduction} + +_Ha senki sem birtokolja az Ethereumot, akkor a döntéseket hogyan hozzák meg az Ethereum kapcsán? Az Ethereum irányítása (governance) egy olyan folyamat, mely lehetővé teszi a döntések meghozatalát._ + + + +## Mi az az irányítás (governance)? {#what-is-governance} + +Az irányítás az a rendszer, amely lehetővé teszi a döntéshozást. Egy tipikus szervezeti struktúrában a végrehajtó csapat vagy az igazgatótanács szava az utolsó a döntéshozásban. Vagy talán a részvényesek szavaznak a javaslatokra, hogy változást indítsanak el. A politikai rendszerben a választott hivatalnokok olyan törvényt hoznak, ami a választóik javát szolgálja. + +## Decentralizált irányítás {#decentralized-governance} + +Az Ethereum protokollt nem birtokolja vagy kontrollálja senki, ugyanakkor a változásokról dönteni kell, hogy a hálózat hosszú életét és prosperitását a leginkább biztosítsák. A tulajdonlás hiánya miatt a hagyományos szervezeti irányítás nem működő megoldás. + +## Ethereum-felügyelet {#ethereum-governance} + +Az Ethereum irányítása (governance) az a folyamat, amely által a protokoll megváltoztatható. Fontos kiemelni, hogy ez nem kapcsolódik ahhoz, hogy az emberek és az alkalmazások hogyan használják a protokollt, mert az Ethereum egy engedélymentes hálózat. A világon bárki bárhonnan részt vehet a láncon zajló tevékenységekben. Nincsenek olyan szabályok, hogy ki csinálhat vagy nem csinálhat alkalmazást vagy indíthat tranzakciókat. Ugyanakkor van egy folyamat, mellyel változásokat lehet kezdeményezni a protokollban, amelyre a decentralizált alkalmazások épülnek. Mivel sok ember függ az Ethereum stabilitásától, ezért a kulcsváltozások koordinációs küszöbe nagyon magas, beleértve a közösségi és technikai folyamatokét is, hogy az Ethereum módosítása biztonságos és a közösség által széles körben támogatott legyen. + +### A láncon belüli és kívüli irányítás összehasonlítása {#on-chain-vs-off-chain} + +A blokklánc-technológiával új irányítási képességek jelentek meg, mint amilyen a láncon belüli irányítás is. A láncon belüli irányítás az, amikor a javasolt protokollváltoztatásokat az érdekeltek megszavazzák, általában egy irányítási token birtokában, a szavazás pedig a láncon zajlik. A láncon belüli irányítás néhány esetében a javasolt változások már bele vannak írva a kódba és automatikusan végrehajtásra kerülnek, ha az érdekeltek jóváhagyják azt, aláírva a tranzakciót. + +A másik megközelítés, a láncon kívüli irányítás az, amikor a protokoll változtatásait egy közösségi megvitatás informális folyamata vezérli, amit ha jóváhagynak, akkor teszik bele a kódba. + +**Az Ethereum-irányítás láncon kívül történik** az érdekeltek széles körét bevonva. + +_Miközben a protokollszintű Ethereum-irányítás láncon kívül zajlik, addig számos alkalmazási területe van a láncon belüli irányításnak, mint például a decentralizált autonóm szervezetek (DAO) működése._ + + + Bővebben a DAO-król + + + + +## Ki vesz részt ebben? {#who-is-involved} + +Az [Ethereum-közösségben](/community/) számos érdekelt fél van, akik szerepet játszanak az irányítási folyamatban. A protokolltól távolabb lévőktől kezdve így néz ki az érdekeltek köre: + +- **Ether-használók**: olyan emberek, akik egy tetszőleges összegű ETH-t birtokolnak. [Bővebben az ETH-ről](/eth/). +- **Az alkalmazások felhasználói**: akik az Ethereum blokkláncán lévő alkalmazásokat használják. +- **Alkalmazások/eszközök fejlesztői**: akik alkalmazásokat írnak az Ethereum blokkláncra (pl. DeFi, NFT-k stb.), vagy eszközöket építenek, amelyek az Ethereummal lépnek interakcióba (pl. tárcák, tesztcsomagok stb.). [Bővebben a dapp-okról](/dapps/). +- **Csomópont-operátorok**: akik csomópontokat működtetnek, amelyek blokkokat és tranzakciókat javasolnak, illetve elutasítják az érvénytelen tranzakciókat vagy blokkokat. [Bővebben a csomópontokról](/developers/docs/nodes-and-clients/). +- **EIP-szerzők**: ők javasolnak változásokat az Ethereum-protokollt illetően Ethereum fejlesztési javaslatok (EIP) formájában. [Bővebben az EIP-ekről](/eips/). +- **Validátorok**: ők olyan csomópontokat futtatnak, melyek új blokkokat tudnak adni az Ethereum-blokklánchoz. +- **Protokollfejlesztők** (azaz „Magfejlesztők”): ők kezelik a különféle Ethereum implementációkat (pl. go-ethereum, Nethermind, Besu, Erigon a végrehajtási rétegen; Prysm, Lighthouse, Nimbus, Teku, Lodestar a konszenzusrétegen). [Bővebben az Ethereum-kliensekről](/developers/docs/nodes-and-clients/). + +_Megjegyzés: bárki lehet több csoport tagja is (pl. a protokollfejlesztő lehet EIP-bajnok is, futtathat Beaconlánc-validátort és használhat DeFi-alkalmazásokat). A koncepcionális egyértelműség miatt könnyebb, ha megkülönböztetjük őket._ + + + +## Mi az az Ethereum fejlesztési javaslat (EIP)? {#what-is-an-eip} + +Az egyik fontos Ethereum-irányítási eszköz az **Ethereum fejlesztési javaslatok (EIP)** kezelése. Az EIP olyan szabvány, amely egy lehetséges új funkciót vagy folyamatot specifikál az Ethereum számára. Az Ethereum-közösség bármelyik tagja létrehozhat EIP-t. Ha Önt érdekli az EIP írása, értékelése vagy irányítása, akkor: + + + Bővebben az EIP-kről + + + + +## A hivatalos folyamat {#formal-process} + +Az Ethereum-protokollt érintő változásokat a következő módon lehet kezdeményezni: + +1. **Javasoljon egy alapvető (core) EIP-et**: ahogy az [EIP-1](https://eips.ethereum.org/EIPS/eip-1#core-eips) részletezi, az első lépés egy Ethereum változtatáshoz az, hogy egy alapvető EIP-ben kidolgozzák azt. Ez lesz a hivatalos specifikációja egy EIP-nek, amit a protokollfejlesztők implementálnak, ha elfogadásra kerül. + +2. **Mutassa be az EIP-et a protokollfejlesztőknek**: amint egy alapvető EIP-vel rendelkezik, amelyhez közösségi adatokat is gyűjtött, mutassa be azt a fejlesztőknek. Ehhez javasolja, hogy vitassák azt meg egy [AllCoreDevs konferenciabeszélgetésen](https://github.com/ethereum/execution-specs/tree/master/network-upgrades#getting-the-considered-for-inclusion-cfi-status). Valószínűleg valamilyen beszélgetés már történt róla az [Ethereum Magician fórumon](https://ethereum-magicians.org/) vagy az [Ethereum R&D Discord csatornán](https://discord.gg/mncqtgVSVw). + +> E fázis lehetséges kimenetelei: + +> - Az EIP megfontolásra kerül egy következő hálózati fejlesztésnél +> - Technikai változásokat kérhetnek +> - Elutasításra kerülhet, ha nem prioritás vagy a fejlődés nem elég nagy a fejlesztési erőfeszítéshez képest + +3. **A javaslat iteratív további fejlesztése a végső verzió felé:** a releváns érdekeltektől jövő visszajelzések alapján valószínűleg változásokat kell eszközölni a kezdeti javaslaton, hogy biztonságosabb legyen vagy a felhasználók igényeit jobban kielégítse. Amint ezek a változások megvalósultak, újra be kell mutatni azt a protokollfejlesztőknek. Ekkor vagy tovább lehet lépni, vagy új kérdések merülnek fel, így tovább kell dolgozni a javaslaton. + +4. **Az EIP bekerül a hálózati frissítésbe**: feltéve, hogy a javaslat addigra átesik a jóváhagyáson, tesztelésen és bevezetésen, bele fog kerülni a következő rendszerfrissítésbe. Mivel ezeknek elég komoly a koordinációs költsége (mindenkinek egyszerre kell frissíteni), ezért az EIP-k csomagba kerülnek. + +5. **A hálózati frissítés aktiválása**: az aktiválás után az EIP élesedik az Ethereum hálózaton. _Megjegyzés: a hálózati frissítéseket általában a teszthálózaton aktiválják, mielőtt az Ethereum-főhálózatra kerülnének._ + +Ez az egyszerűsített folyamat betekintést ad a protokollváltoztatások főbb állomásaiba. Most nézzük meg az informális tényezőket, melyek mindezt befolyásolják. + +## Az informális folyamat {#informal-process} + +### A korábbi munkák megértése {#prior-work} + +Az EIP-bajnokoknak ismerni kell a korábbi munkákat és javaslatokat, mielőtt egy újat készítenek, hogy azt komolyan megfontolják egy Ethereum-fejlesztéseként. Így az EIP javaslat újdonságot hozhat, nem pedig egy korábban már elutasított dolgot. Három fő helyen kell átnézni az anyagokat: [EIP-könyvtár](https://github.com/ethereum/EIPs), [Ethereum Magicians](https://ethereum-magicians.org/) és [ethresear.ch](https://ethresear.ch/). + +### Munkacsoportok {#working-groups} + +Az EIP kezdeti javaslata változtatások nélkül nem valószínű, hogy végigmegy a bevezetésig. Általában az EIP-bajnokok a protokollfejlesztők egy kis csoportjával dolgoznak együtt, hogy specifikálják, létrehozzák, teszteljék és véglegesítsék a javaslatot. Korábban ezek a munkacsoportok számos hónapot (néha éveket) dolgoztak a javaslatokon. Az EIP-bajnokok emellett be kell vonják a releváns alkalmazás- vagy eszközfejlesztőket, hogy a felhasználóktól is tudjanak visszajelzést kapni, illetve csökkentsék a megvalósítás kockázatát. + +### Közösségi konszenzus {#community-consensus} + +Miközben néhány EIP egyértelmű technikai fejlesztés, addig mások komplexek és olyan kompromisszumokat kívánnak meg, melyek a különféle érdekeltek másképpen érintik. Tehát néhány javaslat több vitát vált ki. + +Nincs egyértelmű kézikönyv, hogy a vitás javaslatokat hogyan kezeljék. Az Ethereum decentralizált dizájnjának eredménye, hogy egyetlen érdekcsoport sem nyomhat el egy másikat: a protokollfejlesztők dönthetnek úgy, hogy nem fejlesztenek le egy kódváltoztatást; a csomópont-operátorok nem használják a legújabb Ethereum-klienst; az alkalmazásokat készítő csoportok és felhasználók pedig nem használják a hálózatot. Mivel a protokollfejlesztők nem tudják kényszeríteni az embereket a hálózati frissítések használatára, ezért általában elkerülik azokat a javaslatokat, ahol a vitatottság nagyobb, mint a nyilvánvaló előnyök. + +Az EIP-bajnokoknak minden releváns érdekelttől visszajelzést kell kérniük. Ha egy vitatottabb EIP-ről van szó, akkor meg kell próbálni az ellenvetéseket sorban átbeszélni, hogy konszenzus tudjon kialakulni. Az Ethereum-közösség méretét és diverzitását tekintve nincs egy mértéke a közösség konszenzusának, ezért a fejlesztési javaslatot a körülményekhez igazítva kell kezelni. + +Az Ethereum-hálózat biztonságán túl rendkívül fontos az, hogy miként vélekednek a protokollfejlesztők, az alkalmazás-/eszközfejlesztők és az alkalmazások felhasználói, mert az ő közreműködésük és munkájuk teszi vonzóvá ezt az ökoszisztémát. Emellett az EIP-ket az összes kliensen végig kell vezetni, amit különböző csapatok végeznek. Tehát meg kell győzni a protokollfejlesztők számos csapatát, hogy az adott változás értékes, segíti a felhasználókat vagy biztonsági problémát old meg. + + + +## A nézeteltérések kezelése {#disagreements} + +Mivel ennyiféle érdekelt van különböző motivációkkal és hitekkel, ezért a nézeteltérés nem ritka. + +Általában a nézeteltéréseket hosszú egyeztetéseken kezelik nyilvános fórumokon, hogy a probléma gyökerét megtalálják és azt mindenki meg tudja fontolni. Általában az egyik fél engedményt tesz vagy egy örömteli középutat találnak. Ha az egyik csoport egy adott változást áterőltet a rendszeren, akkor a lánc kettéválhat. Amikor az érdekeltek egy része kifogásol egy változást, így a protokollnak egy eltérő, nem kompatibilis verziói működnek, melyekből két blokklánc emelkedik ki. + +### A DAO elágazás {#dao-fork} + +Az elágazások akkor jönnek létre, amikor komoly technikai változások történnek a hálózaton és megváltoztatják a protokoll szabályait. Az [Ethereum-klienseknek](/developers/docs/nodes-and-clients/) frissíteni kell a szoftverjét, hogy az új elágazási szabályokat életbe léptessék. + +A DAO-elágazás volt a válasz egy [2016-os DAO-támadásra](https://www.coindesk.com/understanding-dao-hack-journalists), amikor egy sebezhető [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 a pénzeszközöket a hibás szerződésből egy újba tette át, hogy a támadás során károsultak kaphassanak belőle. + +Ennek az akciónak a kezelésé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/). Az elágazás mellett több mint a szavazók 85%-a voksolt. + +Fontos megjegyezni, hogy miközben a protokoll tényleg elágazott, hogy visszafordítsa a támadást, a szavazás súlya megkérdőjelezhető: + +- A szavazók száma rendkívül alacsony volt +- A legtöbben nem tudták, hogy szavazás történt +- A szavazást csak ETH-val rendelkezők végezték, a rendszer többi résztvevője nem vett részt + +A közösség ezen része elutasította az elágazást, főleg, mert az incidenst nem a protokollnak tulajdonították. Ők ezután létrehozták az [Ethereum Classicot](https://ethereumclassic.org/). + +Ma az Ethereum közössége a beavatkozásmentesség szabályát követi a hibás szerződések vagy elveszett pénzek esetén, hogy megtartsák a rendszer hihető semlegességét. + +Bővebben a DAO-támadásról: + + + + + +### Az elágazás hasznossága {#forking-utility} + +Az Ethereum/Ethereum Classic elágazás egy kiváló példája az egészséges elágazásnak. A két csoport elég nagy mértékben nem értett egyet egymással az alapvető értékek tekintetében, hogy megérte a kockázatot, hogy a saját útjukat kövessék. + +Az elágazás lehetősége a jelentős politikai, filozófiai vagy gazdasági különbségek esetén az Ethereum-irányítás sikerének fontos része. Az elágazás lehetősége nélkül az alternatívák folyamatosan ütköztek, részvételre kényszerítve a vonakodókat, akik később végül létrehozták az Ethereum Classicot, és egy teljesen más vízióval rendelkeztek arról, hogy az Ethereum sikere miben áll. + + + +## Beacon-lánc irányítása {#beacon-chain} + +Az Ethereum-irányítási folyamat gyakran a gyorsaság és a hatékonyság rovására a nyitottságot és a bevonódást hangsúlyozza. A Beacon-lánc fejlesztésének meggyorsítása érdekében ezt a proof-of-work Ethereum-hálózattól külön hozták létre, és a maga irányítási gyakorlatát követte. + +Miközben a specifikáció és a fejlesztés teljesen nyitott volt, a hivatalos fejlesztési folyamat nem követte a fenti lépéseket. Így a kutatók és a fejlesztők gyorsabban meg tudtak egyezni a specifikus változtatásokon. + +Amikor a Beacon-lánc egyesült az Ethereum végrehajtási réteggel 2022. szeptember 15-én, a Merge teljesült a [Paris hálózati frissítés](/history/#paris) részeként. Az [EIP-3675](https://eips.ethereum.org/EIPS/eip-3675) javaslat státusza véglegesre változott befejezve az átállást a proof-of-stake mechanizmusra. + + + A beolvadásról bővebben + + + + +## Hogyan lehet ebben részt venni? {#get-involved} + +- [Javasoljon egy EIP-t](/eips/#participate) +- [Vitassa meg a jelenlegi javaslatokat](https://ethereum-magicians.org/) +- [Vegyen részt az R&D beszélgetéseken](https://ethresear.ch/) +- [Csatlakozzon az Ethereum R&D Discord csatornához](https://discord.gg/mncqtgVSVw) +- [Csomópont futtatása](/developers/docs/nodes-and-clients/run-a-node/) +- [Vegyen részt a kliensfejlesztésekben](/developers/docs/nodes-and-clients/#execution-clients) +- [Protokollfejlesztő gyakornoki program](https://blog.ethereum.org/2021/09/06/core-dev-apprenticeship-second-cohort/) + +## További olvasnivaló {#further-reading} + +Az Ethereumban az irányítás nincs szigorúan definiálva. A közösség különféle tagjainak eltérő perspektívái vannak ezzel kapcsolatban. Néhány ezek közül: + +- [Megjegyzések a blokkláncirányításról](https://vitalik.ca/general/2017/12/17/voting.html) – _Vitalik Buterin_ +- [Hogyan működik az Ethereum irányítása?](https://cryptotesters.com/blog/ethereum-governance) – _Cryptotesters_ +- [Hogyan működik az Ethereum irányítása](https://medium.com/coinmonks/how-ethereum-governance-works-71856426b63a) – _Micah Zoltu_ +- [Kik az az Ethereum protokollfejlesztői?](https://hudsonjameson.com/2020-06-22-what-is-an-ethereum-core-developer/) – _Hudson Jameson_ +- [Irányítás – 2. rész: a plutokrácia, vagyis a gazdagok általi irányítás még mindig nem az igazi](https://vitalik.ca/general/2018/03/28/plutocracy.html) – _Vitalik Buterin_ +- [Túllépni az érmealapú szavazáson](https://vitalik.ca/general/2021/08/16/voting3.html) – _Vitalik Buterin_ diff --git a/src/content/translations/hu/guides/how-to-create-an-ethereum-account/index.md b/src/content/translations/hu/guides/how-to-create-an-ethereum-account/index.md new file mode 100644 index 00000000000..0815a06810e --- /dev/null +++ b/src/content/translations/hu/guides/how-to-create-an-ethereum-account/index.md @@ -0,0 +1,72 @@ +--- +title: Hogyan lehet Ethereum számlát „létrehozni” +description: Részletes útmutató az Ethereum-számla létrehozásától egy tárca segítségével. +lang: hu +--- + +# Hogyan lehet Ethereum számlát létrehozni + +Bárki nyithat Ethereum számlát, bármikor és ingyenesen. Több módon lehetséges, de a legegyszerűbb és legelterjedtebb egy olyan alkalmazás használata, amit tárcának nevezünk. A tárcák hozzák létre és biztosítják azokat a kulcsokat, amelyek az Ethereum használatához szükségesek. A tárcát használhatja arra, hogy tranzakciókat indítson, ellenőrizze tokenegyenlegeit, illetve az Ethereumon található olyan alkalmazásokhoz kapcsolódjon, mint a tokentőzsdék, játékok, NFT-piacterek és sok más. Néhány web2-alkalmazás esetében már Ethereummal is be lehet lépni. + +A hagyományos számlanyitáshoz képest az Ethereum-számlát szabadon, privát módon és engedélymentesen lehet létrehozni. A számlákat kulcsok kontrollálják, amelyeket a tárcaszoftver segít létrehozni, nem egy harmadik fél adja azokat, így nem is egy központi nyilvántartásban tárolja őket a rendszer. + +## 1. lépés: A tárca kiválasztása + +A tárca egy olyan alkalmazás, amely segíti az Ethereum-számla kezelését. Kulcsokat használ a tranzakciók küldéséhez és fogadásához, illetve az alkalmazásokba való bejelentkezéshez. Tucatnyi különböző tárca közül választhat – mobil, asztali alkalmazásokkal vagy akár böngészőbővítményekkel működő tárcák is léteznek. + + + Tárca keresése + + +Ha Ön most ismerkedik ezzel a területtel, akkor választhatja a „Kezdő a kripto világában” szűrőt a „Tárca keresése” oldalon, hogy olyan termékek közül választhasson, amelyek kifejezetten a kezdők számára fontos funkciókat kínálni. + +![szűrés a „Tárca keresése” oldalon](./wallet-box.png) + +Egyéb profilszűrők is elérhetők, hogy saját igényeire szabhassa a keresést. Íme néhány példa a leggyakrabban használt tárcák közül – mindig vizsgálja meg Ön is az adott szolgáltatást, mielőtt bármilyen szoftvert kiválaszt. + +## 2. lépés: A tárcaalkalmazás letöltése és telepítése + +Miután kiválasztotta a tárcát, a hivatalos webhelyéről vagy az alkalmazás-áruházból töltse le és telepítse azt. Mindegyiknek ingyenesnek kell lennie. + +## 3. lépés: Az alkalmazás megnyitása és Ethereum-számla létrehozása vagy importálása + +A tárca első megnyitásakor a rendszer megkérdezheti, hogy egy új számlát kíván létrehozni vagy egy meglévőt szeretne importálni. Válassza az új számla létrehozása lehetőséget. + +## 4. lépés: Visszaállítási kulcsmondat eltárolása + +Néhány alkalmazás arra kéri Önt, hogy tároljon el egy titkos kulcsmondatot („visszaállítási kulcsmondat” vagy „mnemonika”). Rendkívül fontos, hogy ezt a kulcsmondatot biztonságban tartsa! A kulcsmondat hozza létre azokat a számlakulcsokat, melyekkel aláírhatja és elindíthatja a tranzakciókat. Aki a kulcsmondatot birtokolja, az kontrollálja az összes számlát, melyet azzal a kulccsal hoztak létre. Sose ossza meg a kulcsmondatát senkivel. A kulcsmondat 12–24 véletlenszerűen kiválasztott szót tartalmaz (melyek sorrendje fontos). + +A kulcsmondat eltárolása után láthatja a tárca irányítópultját az Ön egyenlegével együtt. Nézze meg a következő útmutatót: [Hogyan használja a tárcát](/guides/how-to-use-a-wallet). + +
    + + +
    Szeretne többet megtudni?
    + + Tekintse meg a további útmutatóinkat + +
    + +## Gyakran ismételt kérdések + +### A tárcám és az Ethereum számlám ugyanaz? + +Nem. A tárca egy olyan eszköz, amely segít kezelni a számlát. Egy tárca több számlához is hozzáférést biztosíthat, és egy számlát több tárcából is el lehet érni. A kulcsmondat révén lehet számlákat létrehozni, amit utána az adott tárca fog kontrollálni. + +Ezt úgy is elképzelheti, hogy a fa levelei a számlák, melyek mind egyetlen kulcsmondatból nőnek ki. Minden egyedi kulcs egy teljesen más számlákból álló fát alkot. + +### Tudok küldeni Bitcoint Ethereum-számlára, vagy ethert Bitcoin-címre? + +Nem, ez nem lehetséges. A Bitcoin és az ether két teljesen elkülönült hálózaton létezik (azaz különálló blokkláncok), saját könyvelési modellel és címformátummal. Számos kezdeményezés volt, amellyel megpróbálták áthidalni e két hálózatot, melyek közül jelenleg a legaktívabb a [becsomagolt bitcoin vagy WBTC](https://www.bitcoin.com/get-started/what-is-wbtc/). Mivel a WBTC egy felügyeleti megoldást (egy csoport irányít bizonyos kritikus funkciókat), ezért itt csak információs céllal szerepel. + +### Ha rendelkezek ETH-címmel, akkor ugyanazt a címet más blokkláncokon is használhatom? + +Azokon a blokkláncokon használhatja ugyanazt a címet, melyek működési szoftvere az Ethereumhoz hasonló (tehát EVM-kompatibilis). Ez a [lista](https://chainlist.org/) megmutatja, hogy melyik blokkláncokon működik ugyanaz a cím. Néhány blokklánc, mint a Bitcoin, teljesen más hálózati szabályok alapján üzemel, ezért ott egy másik címre van szükség, amely más formátummal is bír. Ha okosszerződéses tárcával rendelkezik, akkor a terméktájékoztatóból kiderül, hogy melyik blokkláncokat támogatja. + +### A tárcám biztonságosabb, mint a pénzeszközeimet a tőzsdén tartani? + +A saját tárca azt jelenti, hogy Ön felelősséget vállal a pénzeszközeinek biztonságáért. Sajnos számtalan esetben omlott már össze tőzsde, elveszítve a vevők pénzét. A saját tárca (a kulcsmondattal együtt) csökkenti annak kockázatát, hogy egy másik entitásra kell bízni az eszközök felügyeletét. Ugyanakkor Önnek biztonságba kell helyeznie a kulcsait, elkerülni a csalásokat, nem szabad véletlenül jóváhagynia tranzakciót vagy feltárni a kulcsokat valaki előtt, hamis weboldalakat használni vagy hasonló kockázatot vállalni. A kockázatok és hasznok különböznek. + +### Ha elvesztettem a mobil/hardver tárcámat, akkor ugyanazt a tárcaalkalmazást használjam, hogy visszaszerezzem a pénzeszközeimet? + +Nem feltétlen, más tárcát is használhat. Amíg tudja a kulcsmondatot, bármelyik tárcába beteheti azt és visszaállítja a számláját. Ügyeljen arra, hogy ne kapcsolódjon az internethez, amikor visszaállítja a tárcáját, nehogy véletlenül kiszivárogjon a kulcsmondata. Az elveszett pénzeszközöket gyakran nem lehet visszaszerezni a kulcsmondat nélkül. diff --git a/src/content/translations/hu/guides/how-to-id-scam-tokens/index.md b/src/content/translations/hu/guides/how-to-id-scam-tokens/index.md new file mode 100644 index 00000000000..c8cc1386cd4 --- /dev/null +++ b/src/content/translations/hu/guides/how-to-id-scam-tokens/index.md @@ -0,0 +1,97 @@ +--- +title: Hogyan lehet felismerni a valótlan tokeneket +description: A valótlan tokenek felismerése, hogyan tűnnek legitimnek, és hogyan lehet elkerülni őket. +lang: hu +--- + +# Hogyan lehet felismerni a valótlan tokeneket {#identify-scam-tokens} + +One of the most common uses for Ethereum is for a group to create a tradable token, in a sense their own currency. Ezek a tokenek jellemzően a [ERC-20](/developers/docs/standards/tokens/erc-20/)-szabványt követik. Ahol legitim alkalmazási területek vannak, melyek értéket teremtenek, mindig megjelennek a csalók is, hogy ezt az értéket megszerezzék maguknak. + +Kétféle módon próbálhatják Önt megtéveszteni: + +- **Egy valótlan tokent adnak el**, ami hasonlít az eredetire, melyet meg szeretne vásárolni, de a csalók állították ki és nem ér semmit sem. +- **Ráveszik Önt, hogy rossz tranzakciókat írjon alá**, általában úgy, hogy a saját felhasználói felületükre vezetik át Önt. Megpróbálhatják rávenni, hogy a szerződésüknek adjon hozzáférést az ERC-20 tokenjeihez, bizalmas információkat feltárva, amelyekkel elérik az Ön eszközeit stb. Ezek a hamis honlapok szinte tökéletes másai az eredetinek, de rejtett trükkökkel. + +A hamis tokenek illusztrálása végett, és hogyan lehet beazonosítani azokat, megnézünk egy példát: [`wARB`](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82). Ez a token megpróbál úgy kinézni, mint a valós [`ARB`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1) token. + + + +Az Arbitrum egy olyan szervezet, mely optimista rollupokat fejleszt és kezel. Kezdetben az Arbitrum egy profitorientált vállalatként működött, de aztán decentralizálta magát. Ennek részeként kibocsátott egy irányítási tokent, amivel kereskedni lehet. + + + + + +Az Ethereumon létezik egy konvenció, hogy a nem ERC-20-szabványnak megfelelő tokeneknek egy becsomagolt (wrapped) verziót készítenek, melynek a neve w-vel kezdőik. Például itt van a wBTC a bitcoinhoz és a wETH az etherhez. + +Nincs értelme egy olyan ERC-20 token becsomagolt változatát létrehozni, ami már az Ethereumon van, de a csalók a kinézetre hagyatkoznak, nem a mögöttes valóságra. + + + +## Hogyan működnek a hamis tokenek? {#how-do-scam-tokens-work} + +Az Ethereum lényege a decentralizáció. Emiatt nincs központi hatóság, amely elkobozná bárki eszközeit vagy megakadályozná, hogy egy okosszerződést hozzon létre. De ez azt is jelenti, hogy a csalók is képesek bármilyen okosszerződést létrehozni. + + + +Az okosszerződések olyan programok, amelyek az Ethereum-blokkláncon futnak. Minden ERC-20 token egy okosszerződéként van létrehozva. + + + +Specifikusan, az Arbitrum készített egy szerződést, amely az `ARB` szimbólumot használja. De ez nem akadályozza meg a többi embert, hogy egy szerződést készítsenek ugyanezzel a szimbólummal vagy egy hasonlóval. Aki ezt a szerződést megírja, be kell állítsa, hogy az mit fog csinálni. + +## Valósnak tűnnek {#appearing-legitimate} + +Számos trükk van, amit a hamis tokenek létrehozói képesek megtenni, hogy valósnak tüntessék azt fel. + +- **A valós nevet és szimbólumot használják**. Az ERC-20 szerződések viselhetik ugyanazt a szimbólumot és nevet, mint más ERC-20 szerződések. Ezekre az információkra nem lehet a biztonságot alapozni. + +- **A valós kibocsátókat használják**. A hamis tokenek gyakran jelentős összegeket dobnak be olyan címekre, amelyek nagy valószínűséggel az eredeti token valódi kibocsátói. + + Térjünk vissza a `wARB` példájához. [Nagyjából a tokenek 16%-a](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82?a=0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) egy olyan címen található, melynek nyilvános neve [Arbitrum Foundation: Deployer](https://etherscan.io/address/0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f). Ez _nem_ egy hamis cím, ez tényleg az a cím, amely [bevezette a valódi ARB-szerződést az Ethereum főhálózatán](https://etherscan.io/tx/0x242b50ab4fe9896cb0439cfe6e2321d23feede7eeceb31aa2dbb46fc06ed2670). + + Mivel egy cím ERC-20-egyenlege része az ERC-20-szerződés tárhelyének, ezért az meghatározható a szerződés alapján, attól függően, hogy a szerződés fejlesztője mit kíván. A szerződés megakadályozhatja a további átadást is, ezért a valós felhasználók nem tudnak megszabadulni ezektől a hamis tokenektől. + +- **A valós átutalást használják**. _A valós kibocsátók nem fizetnének egy hamis token átküldéséért, ezért ezek a transzferek valósak, ugye?_ **Nem**. `A transzfer` is az ERC-20-szerződés szerint megy. A csalók könnyedén le tudják programozni, hogy így viselkedjen. + +## Hamis weboldalak {#websites} + +A csalók nagyon meggyőző weboldalakat is készíthetnek, amelyek néha az eredeti pontos másai, azonos kinézettel, de mégis apró trükkökkel. Például a valósnak tűnő hivatkozások, amelyek elirányítják a felhasználót hamis oldalakra, vagy valótlan információk, amelyek elkérik a felhasználók kulcsait vagy a támadók címére küldetnek pénzeszközöket. + +A legjobb, ha mindig megvizsgálja a weboldal címét, illetve a hiteles oldalakat elmenti a könyvjelzők közé. Így a valódi oldalra lép be anélkül, hogy félreírná azt vagy külső hivatkozásra támaszkodna. + +## Hogyan tudja Ön is megvédeni magát? {#protect-yourself} + +1. **Ellenőrizze a szerződés címét**. A valódi tokenek valódi szervezetektől érkeznek, amelyek címét meg lehet találni a szervezet honlapján. Például [az `ARB` esetében itt találja a valódi címeket](https://docs.arbitrum.foundation/deployment-addresses#token). + +2. **A valódi tokenek likviditással bírnak**. A likviditási alap méretét meg tudja nézni a [Uniswap](https://uniswap.org/) oldalán, ami az egyik legelterjedtebb tokenváltó protokoll. Ez a protokoll úgy működik, hogy likviditási alapokat hoz létre, amelybe minden befektető letétbe helyezi a tokenjeit a kereskedési díjakból származó jövedelemért cserébe. + +A hamis tokeneknek általában kicsi likviditási alapjuk van, ha egyáltalán van ilyen, mivel a csalók nem akarnak valódi eszközöket kockáztatni. Például az `ARB`/`ETH` Uniswap alap körülbelül egy millió dollárt tartalmaz ([nézze meg a jelenlegi összeget](https://info.uniswap.org/#/pools/0x755e5a186f0469583bd2e80d1216e02ab88ec6ca)), és kis összegek adás-vétele nem fogja változtatni az árát: + +![Valódi token vásárlása](./uniswap-real.png) + +De amikor megpróbálja megvenni a hamis tokent, a `wARB`-t, akkor minden vásárlás 90%-kal változtatja az árat: + +![Hamis token vásárlása](./uniswap-scam.png) + +Ez is azt mutatja, hogy a `wARB` nem lehet valódi. + +3. **Nézze meg az Etherscan alkalmazásban**. Számos hamis tokent már beazonosított és jelentett a közösség. Ezek meg vannak [jelölve az Etherscanben](https://info.etherscan.com/etherscan-token-reputation/). Miközben az Etherscan nem egy irányadó igazságforrás (mivel a decentralizált hálózatoknál ez nem lehetséges), mégis az Etherscan által beazonosított tokenek nagy valószínűséggel hamisak. + + ![Hamis token az Etherscanben](./etherscan-scam.png) + +## Következtetés {#conclusion} + +Amíg érték van a világon, addig csalók is lesznek, akik meg akarják azt szerezni, és egy decentralizált világban senki sem fogja megvédeni Önt, kivéve önmaga. Reméljük, hogy az alábbi jellemzők alapján Ön is könnyedén megkülönbözteti a valódi tokent a hamistól: + +- A hamis tokenek valódiakat személyesítenek meg, felhasználva annak nevét, szimbólumát stb. +- A hamis tokenek _nem_ használhatják ugyanazt a szerződési címet. +- A valódi token címét a kibocsátó szervezettől lehet megtudni. +- Ha ez nem sikerül, akkor olyan népszerű, megbízható alkalmazásokat használhat, mint a [Uniswap](https://app.uniswap.org/#/swap) és az[Etherscan](https://etherscan.io/). diff --git a/src/content/translations/hu/guides/how-to-revoke-token-access/index.md b/src/content/translations/hu/guides/how-to-revoke-token-access/index.md new file mode 100644 index 00000000000..4232c1abe61 --- /dev/null +++ b/src/content/translations/hu/guides/how-to-revoke-token-access/index.md @@ -0,0 +1,73 @@ +--- +title: Hogyan vonható vissza, hogy az okosszerződés hozzáférjen a kriptoeszközeihez +description: Útmutató arról, hogyan vonhatja vissza, hogy az okosszerződés hozzáférjen a kriptoeszközeihez +lang: hu +--- + +# Hogyan vonható vissza, hogy az okosszerződés hozzáférjen a kriptoeszközeihez + +Ez az útmutató feltárja, hogyan nézze meg az okosszerződések listáját, melyek hozzáférnek a pénzeszközeihez, és hogyan törölje a hozzáférést. + +Néha a rosszhiszemű fejlesztők olyan kiskapukat építenek az okosszerződésekbe, melyek hozzáférést biztosítanak a gyanútlan felhasználók eszközeihez, akik azzal a szerződéssel interakcióba lépnek. Gyakran ezek az oldalak engedélyt kérnek a felhasználótól, hogy **korlátlan számú tokent** költhessenek, hogy megspóroljanak a jövőben egy kis összegű tranzakciós díjat/gázt, ez azonban nagy kockázattal jár. + +Ha egy oldal korlátlanul hozzáfér a tárca tokenjeihez, akkor elköltheti azokat, még ha Ön vissza is vonja a pénzeszközöket a platformról a saját tárcájába. A rosszindulatú szereplők még így is hozzáférhetnek az Ön pénzéhez, amit a saját tárcájukba lehívnak, és Ön ezt már nem fogja tudni visszaszerezni. + +Ezt úgy tudja elkerülni, hogy tartózkodik a nem tesztelt új projektek használatától, csak azt hagyja jóvá, amire valóban szüksége van és rendszeresen visszavonja a hozzáféréseket. Tehát hogyan is kell ezt csinálni? + +## 1. lépés: Hozzáférés-visszavonási eszközök használata + +Számos weboldal lehetővé teszi, hogy láthassa és visszavonhassa a címéhez kapcsolódó okosszerződéseket. Látogasson el a weboldalra és kapcsolja azt össze a tárcájával: + +- [Ethallowance](https://ethallowance.com/) (Ethereum) +- [Etherscan](https://etherscan.io/tokenapprovalchecker) (Ethereum) +- [Cointool](https://cointool.app/approve/eth) (több hálózat) +- [Revoke](https://revoke.cash/) (több hálózat) +- [Unrekt](https://app.unrekt.net/) (több hálózat) +- [EverRevoke](https://everrise.com/everrevoke/) (több hálózat) + +## 2. lépés: Összekapcsolás a tárcával + +A weboldalon kattintson a „Tárcához kapcsolás” funkcióra. A weboldalon megjelenik egy, a tárcához kapcsolódásról szóló üzenet. + +Használja ugyanazt a hálózatot a tárcán és a weboldalon. Csak azokat az okosszerződéseket fogja látni, melyek ehhez a hálózathoz kötődnek. Például, az Ethereum-főhálózathoz kapcsolódva csak az Ethereum-szerződéseket látja, a más láncokról (pl. Polygon) származó szerződéseket nem. + +## 3. lépés: A visszavonni kívánt okosszerződés kiválasztása + +Itt az összes szerződést látnia kell, amely hozzáfér az Ön tokenjeihez, illetve azok költési keretének is meg kell jelennie. Válassza ki azt, amelyet le kívánja zárni. + +Ha nem tudja, hogy melyik az, akkor az összeset leválaszthatja. Ez nem okoz problémát, a következő alkalommal, amikor ezekkel a szerződésekkel interakcióba lép, új engedélyt kell adnia azoknak. + +## 4. lépés: Az eszközeihez való hozzáférés lezárása + +A lezárásra kattintva egy új tranzakció jelentik meg a tárcájában. Ez várható jelenség. A lezárás sikeres elvégzéséhez ki kell fizetnie a díjat. A hálózattól függően ez akár néhány percig is eltarthat. + +Javasoljuk, hogy néhány perc múlva frissítse a visszavonási eszközt, és nézze meg a tárcájában, hogy valóban eltűnt-e a törölt kapcsolat a listáról. + +Sose adjon a projekteknek korlátlan hozzáférést a tokenjeihez, valamint törölje rendszeresen a hozzáféréseket. A tokenekhez való hozzáférés leállítása nem jár eszközvesztéssel, ha a fenti eszközöket használja. + +
    + + +
    Szeretne többet megtudni?
    + + Tekintse meg a további útmutatóinkat + +
    + +## Gyakran ismételt kérdések + +### A tokenekhez való hozzáférés leállítása a letétbe helyezést, letéti alapokat, kölcsönzést stb. is felfüggeszti? + +Nem, nincs hatással semmilyen decentralizált pénzügyekhez (DeFi) kapcsolódó stratégiához. A helyzete változatlan marad, és tovább kapja a jutalmakat stb. + +### A projektről leválasztani a tárcát ugyanazzal az eredménnyel jár, mintha visszavonnám az engedélyt, hogy hozzáférjen az eszközeimhez? + +Nem, mert a tárca leválasztása után, ha Ön engedélyt adott a tokenek használatára, akkor a projekt továbbra is használni tudja a tokeneket. Az engedélyt kell visszavonnia. + +### A szerződés engedélye mikor jár le? + +A szerződés engedélyeinek nincs lejárati ideje. Ha engedélyt adott, akkor az akár évekkel később is érvényes lehet. + +### A projektek miért állítanak be korlátlan tokenhasználatot? + +A projektek gyakran így akarják minimalizálni a kérvények számát, mert ilyenkor a felhasználónak csak egyszer kell jóváhagynia és a tranzakciós díjat is csak egyszer kell kifizetnie. Bár ez kényelmes megoldás lehet, ugyanolyan veszélyt is rejt azokra a felhasználókra nézve, akik idővel vagy audittal még nem igazolt oldalak hagynak jóvá ilyet. Néhány tárcánál lehetséges manuálisan beállítani a tokenek felhasználható mennyiségét, hogy csökkentsék a kockázatot. További információkért forduljon tárcaszolgáltatójához. diff --git a/src/content/translations/hu/guides/how-to-swap-tokens/index.md b/src/content/translations/hu/guides/how-to-swap-tokens/index.md new file mode 100644 index 00000000000..8f9ff60248d --- /dev/null +++ b/src/content/translations/hu/guides/how-to-swap-tokens/index.md @@ -0,0 +1,67 @@ +--- +title: Hogyan lehet átváltani a tokeneket +description: Útmutató a tokenek átváltásához az Ethereumon. +lang: hu +--- + +# Hogyan lehet átváltani a tokeneket + +Elege van abból, hogy olyan tőzsdét keres, amely kedvenc tokenjeivel kereskedik? A decentralizált tőzsdéken (DEX) a legtöbb tokent át lehet váltani. + +A tokenváltás két különböző eszköz cseréje, melyek az Ethereum hálózatán léteznek, például ETH váltása DAI-ra (ERC-20 token). Ez egy gyors és olcsó tranzakció. Szüksége lesz egy kriptotárcára a tokenek váltásához. + +**Feltételek:** + +- rendelkeznie kell egy kriptotárcával – ehhez kövesse a következő útmutatót: [Hogyan lehet létrehozni Ethereum számlát](/guides/how-to-register-an-ethereum-account/) +- lennie kell pénzeszközöknek a tárcájában + +## 1. Kapcsolja a tárcáját egy kiválasztott decentralizált tőzsdéhez (DEX) + +Néhány ismert példa: + +- [Uniswap](https://app.uniswap.org/#/swap) +- [Sushiswap](https://www.sushi.com/swap) +- [1Inch](https://app.1inch.io/#/1/unified/swap/ETH/DAI) +- [Curve](https://curve.fi/#/ethereum/swap) + +Ha szeretne többet tudni a decentralizált pénzügyekről (DeFi), illetve az új tőzsdék működéséről, akkor pillantson bele a [Kernel Library-ba](https://library.kernel.community/Topic+-+DeFi/Topic+-+DeFi). + +## 2. Válassza ki a két token, amelyeket át szeretne váltani + +Például ETH és DAI. Győződjön meg arról, hogy az egyik tokenből rendelkezik elegendő pénzeszközzel. ![Általános felület az átváltáshoz](./swap1.png) + +## 3. Írja be az eladásra szánt token összegét és nyomja meg az átváltás (swap) gombot + +A tőzsde automatikusan kiszámolja, hogy Ön mennyi tokent fog kapni. + +![Általános felület az átváltáshoz](./swap2.png) + +## 4. Erősítse meg a tranzakciót + +Tekintse át a tranzakció részleteit. Vessen egy pillantást az átváltási rátára és más díjakra, hogy később ne érje kellemetlen meglepetés. + +![Általános felület a tranzakciók megtekintéséhez](./swap3.png) + +## 5. Várja meg, amíg a tranzakciót feldolgozzák + +Bármelyik blokkláncböngészővel megtekintheti a tranzakció állapotát. Ez legfeljebb 10 percen belül megtörténik. + +A tranzakció végrehajtása után automatikusan megkapja a tárcájába a beszerzett tokent. +
    + + +
    Szeretne többet megtudni?
    + + Tekintse meg a további útmutatóinkat + +
    + +## Gyakran ismételt kérdések + +### Át tudok váltani ETH-t BTC-re a tárcámban? + +Nem, csak olyan tokeneket tud váltani, melyek az Ethereum hálózatán működnek, mint az ETH, az ERC-20-as tokenek vagy NFT-k. A Bitcoinnak az Ethereumon megtalálható, „becsomagolt” formáival tud kereskedni. + +### Mi az a csúszás (slippage)? + +A várható átváltási ráta és az aktuális ráta közötti különbség. diff --git a/src/content/translations/hu/guides/how-to-use-a-bridge/index.md b/src/content/translations/hu/guides/how-to-use-a-bridge/index.md new file mode 100644 index 00000000000..559058bb11c --- /dev/null +++ b/src/content/translations/hu/guides/how-to-use-a-bridge/index.md @@ -0,0 +1,70 @@ +--- +title: Hogyan lehet áthelyezni a tokeneket a második blokkláncrétegbe (L2) +description: Útmutató, hogyan tudja az Ethereumon lévő tokeneket L2-re áthelyezni híd használatával. +lang: hu +--- + +# Hogyan lehet áthelyezni a tokeneket a második blokkláncrétegbe (L2) + +Ha sok tranzakció fut egyszerre az Ethereumon, akkor drágább a hálózatot használni. Erre az egyik megoldás az, hogy új rétegeket hoznak létre, tehát más hálózatokat, melyek az Ethereumhoz hasonlóan működnek. Ezek a második blokkláncrétegek (L2) csökkenthetik a tranzakciók mennyiségét és azok költségét is az Ethereumon azáltal, hogy sok tranzakciót kezelnek alacsonyabb díjért és ezeknek csak az eredményét tárolják az Ethereumon. Így az L2 megoldások gyorsabban működnek és kevesebb költséggel járnak. Számos népszerű kriptoprojekt az L2-re épít annak előnyei miatt. A legegyszerűbb módja a tokenek Ethereumról második blokkláncra (L2) való áthelyezésének a híd használata. + +**Feltételek:** + +- rendelkeznie kell egy kriptotárcával – ehhez kövesse a következő útmutatót: [Hogyan lehet létrehozni Ethereum számlát](/guides/how-to-register-an-ethereum-account/) +- lennie kell pénzeszközöknek a tárcájában + +## 1. Határozza meg, hogy melyik L2 hálózatot szeretné használni + +További információkat a projektekről és a fontos hivatkozásokról a [második blokkláncréteg (L2) oldalon](/layer-2/) is szerezhet. + +## 2. Lépjen a kiválasztott hídra + +Néhány népszerű L2: + +- [Arbitrum-híd](https://bridge.arbitrum.io/?l2ChainId=42161) +- [Optimism-híd](https://app.optimism.io/bridge/deposit) +- [Boba-hálózat hídja](https://gateway.boba.network/) + +## 3. Kapcsolódjon a hídhoz a tárcájával + +Győződjön meg arról, hogy tárcája az Ethereum-főhálózathoz kapcsolódik. Ha nem, akkor a weboldal automatikusan felhozza a hálózatváltási lehetőséget. + +![Általános felület a tokenek áthelyezéséhez](./bridge1.png) + +## 4. Határozza meg az összeget és helyezze át + +Tekintse át az összeget, amit az L2-n kapni fog és a kapcsolódó díjakat, hogy ne érjék kellemetlen meglepetések. + +![Általános felület a tokenek áthelyezéséhez](./bridge2.png) + +## 5. Hagyja jóvá a tranzakciót a tárcájában + +A tranzakcióért ETH formájában kell fizetnie. + +![Általános felület a tokenek áthelyezéséhez](./bridge3.png) + +## 6. Várja meg, amíg az eszközei átkerülnek + +Ennek 10 perc alatt meg kell történnie. + +## 7. Adja hozzá a kiválasztott L2 hálózatot a tárcájához (opcionális) + +A [chainlist.org](http://chainlist.org) segít az adott hálózat RPC-adatait megtalálni. Amint a hálózat hozzáadásra kerül és a tranzakció végbemegy, a tokenek megjelennek a tárcájában. +
    + + +
    Szeretne többet megtudni?
    + + Tekintse meg a további útmutatóinkat + +
    + +## Gyakran ismételt kérdések + +### Mi van akkor, ha tőzsdén vannak eszközeim? + +Bizonyos tőzsdékről lehetséges közvetlenül L2-re áthelyezni az eszközöket. Nézze meg az „Áthelyezés a második blokkláncrétegre (L2)” című részt az [L2 oldalon](/layer-2/) a további információkért. + +### Visszavihetem a tokenjeimet az Ethereum-főhálózatra, miután áthelyeztem azokat az L2-re? + +Igen, mindig visszaviheti az eszközeit a főhálózatra ugyanazon a hídon keresztül. diff --git a/src/content/translations/hu/guides/how-to-use-a-wallet/index.md b/src/content/translations/hu/guides/how-to-use-a-wallet/index.md new file mode 100644 index 00000000000..8755ded05da --- /dev/null +++ b/src/content/translations/hu/guides/how-to-use-a-wallet/index.md @@ -0,0 +1,88 @@ +--- +title: Hogyan használja a tárcát +description: Útmutató a tokenek küldéséről és fogadásáról, valamint a web3-projektekhez való kapcsolódásról. +lang: hu +--- + +# Hogyan használja a tárcát + +Ismerje meg, hogyan működnek a tárca alapvető funkciói. Ha Ön még nem rendelkezik tárcával, akkor nézze meg a [Hogyan lehet Ethereum számlát létrehozni](/guides/how-to-create-an-ethereum-account/) című útmutatót. + +## Nyissa ki tárcáját + +Egy irányítópult jelenik meg, amelyen az egyenlege, valamint a tokenek küldésére és fogadására vonatkozó gombok láthatók. + +## Kriptovaluta fogadása + +Szeretne kriptovalutát fogadni a tárcájába? + +Minden Ethereum-számla rendelkezik saját fogadócímmel, amely egy egyedi, számokat és betűket tartalmazó sor. A cím úgy működik, akár egy bankszámlaszám. Az Ethereum-címek mindig „0x” kezdetűek. Ezt a címet bárkivel megoszthatja: ez biztonságos. + +A cím olyan, mint a lakhelyének a címe: elmondja az embernek, hogy odataláljanak Önhöz. Ez azért is biztonságos, mert be tudja zárni az ajtót egy másik kulccsal, amivel csak Ön rendelkezik, így nem tudnak bejutni, hiába tudják a címét. + +Ha valaki pénzt akar küldeni Önnek, akkor meg kell adnia a nyilvános címét. Számos tárca megengedi, hogy kimásolja azt vagy QR-kódként megossza, hogy könnyebb legyen a használata. Ne gépelje be manuálisan. Ez könnyen hibákhoz és a pénzeszköz elvesztéséhez vezethet. + +Előfordulhat, hogy a különböző alkalmazások eltérnek egymástól vagy más nyelvet használnak, de hasonló folyamaton vezetik végig, ha eszközöket kíván mozgatni. + +1. Nyissa meg a tárcaalkalmazást. +2. Kattintson a „Fogadás” (vagy hasonló nevű) gombra. +3. Másolja Ethereum-címét a vágólapra. +4. Adja meg a küldőnek a fogadó Ethereum-címét. + +## Kriptovaluta küldése + +Szeretne ETH-t küldeni egy másik tárcába? + +1. Nyissa meg a tárcaalkalmazást. +2. Kérje el a fogadó címét, és győződjön meg arról, hogy ugyanahhoz a hálózathoz kapcsolódik, mint a fogadó fél. +3. Másolja be a címet vagy szkennelje be a QR-kódot a kamerával, így nem kell manuálisan megadnia. +4. Kattintson a Küldés (vagy hasonló nevű) gombra a tárcájában. + +![A kriptoszámla küldő mezője](./send.png) +
    + +5. Számos eszköz, mint a DAI vagy USDC, egyszerre több hálózaton is létezik. Amikor kriptotokeneket küld, győződjön meg arról, hogy a fogadó fél is ugyanazt a hálózatot használja, mert ezek nem átjárhatók. +6. Biztosítsa, hogy a tárcája elegendő ETH-t tartalmaz, hogy lefedje a tranzakciós díjat is, amely a hálózati feltételek miatt változó összeg. A legtöbb tárca automatikusan hozzáadja a tranzakcióhoz a javasolt díjat, amit Ön jóváhagy. +7. Amint a tranzakció végbement, a kripto összege megjelenik a fogadó fél számláján. Ez a hálózat használóinak számától függően néhány pillanatig vagy percig is eltarthat. + +## Kapcsolódás projektekhez + +Az Ön címe minden Ethereum-projekt esetében azonos. Nem kell regisztrálnia külön sehol. A tárcával bármilyen más információ megadása nélkül kapcsolódni tud az Ethereum-projektekhez. Nincs szükség e-mail-címre vagy egyéb személyes adatokra. + +1. Látogasson el bármelyik projekt oldalára. +2. Ha a projekt oldala csak egy tájékoztató leírás, akkor kattintson az Alkalmazás megnyitása gombra a menüben, ami elvezeti Önt a valódi alkalmazáshoz. +3. Az alkalmazásban kattintson a „Kapcsolódás” gombra + +![Gomb a felhasználó számára, melynek segítségével tárcájával a weboldalhoz kapcsolódhat](./connect1.png) + +4. Válassza ki a tárcáját a megadott opciók listájából. Ha nem látja a tárcáját, akkor nézze meg a „WalletConnect” lehetőség alatt. + +![Kiválasztás a tárcák listájából a kapcsolódáshoz](./connect2.png) + +5. Erősítse meg az aláírási kérést a tárcájában ahhoz, hogy a kapcsolat létrejöjjön. **Az üzenet aláírása nem kerül ETH-pénzeszközbe**. +6. Készen is van! Kezdje el használni az alkalmazást. Számos érdekes projektet találhat a [dapp oldalunkon](/dapps/#explore).
    + + +
    Szeretne többet megtudni?
    + + Tekintse meg a további útmutatóinkat + +
    + +## Gyakran ismételt kérdések + +### Ha rendelkezek ETH-címmel, akkor ugyanazt a címet más blokkláncokon is használhatom? + +Ugyanazt a címet használhatja minden EVM-kompatibilis blokkláncon (ha az Ön tárcájához tartozik visszaállítási kulcsmondat). Ez a [lista](https://chainlist.org/) megmutatja, hogy melyik blokkláncokon működik ugyanaz a cím. Néhány blokklánc, mint a Bitcoin, teljesen más hálózati szabályok alapján üzemel, ezért ott egy másik címre van szükség, amely más formátummal is bír. Ha okosszerződéses tárcával rendelkezik, akkor a terméktájékoztatóból kiderül, hogy melyik blokkláncokat támogatja. + +### Használhatom ugyanazt a címet több eszközön? + +Igen, több eszközön is lehet ugyanazt a címet használni. A tárca valójában csak egy felület, hogy Ön láthassa az egyenlegét és tranzakciókat indítson, a számla nem a tárcán belül található, hanem a blokkláncon. + +### Nem kaptam meg a kriptót, hol tudom a tranzakció státuszát ellenőrizni? + +Használhatja a [blokkfelfedezőket](/developers/docs/data-and-analytics/block-explorers/), hogy valós időben követni tudja a tranzakció státuszát. Ehhez csak a tárca címére vagy a tranzakció azonosítójára kell rákeresnie. + +### A tranzakciókat le tudom állítani vagy visszafordítani? + +Nem, a jóváhagyás után nem lehet leállítani. diff --git a/src/content/translations/hu/guides/index.md b/src/content/translations/hu/guides/index.md new file mode 100644 index 00000000000..bd7ec9be4a5 --- /dev/null +++ b/src/content/translations/hu/guides/index.md @@ -0,0 +1,27 @@ +--- +title: Az Ethereum útmutatói +description: Gyakorlati útmutatók gyűjteménye az Ethereum használatának alapjairól kezdők számára. +lang: hu +--- + +# Az Ethereum útmutatói + +Ön is belevág az utazásba az Ethereum világában? A gyakorlati útmutatók részletesen végigvezetik Önt a kezdeti lépéseken, és megkönnyítik az új technológiában való tájékozódást. + +## Első lépések + +1. [Hogyan lehet Ethereum számlát létrehozni](/guides/how-to-create-an-ethereum-account/) – Bárki csinálhat magának tárcát ingyen. Ez az útmutató segít abban, hogyan fogjon bele. + +2. [Hogyan használja a tárcát](/guides/how-to-use-a-wallet/) – Bemutatja a tárcák alapvető tulajdonságait és használatát. + +## Biztonsági alapok + +1. [Hogyan vonható vissza, hogy az okosszerződés hozzáférjen a kriptoeszközeihez](/guides/how-to-revoke-token-access/) – Ha hirtelen azt látja, hogy olyan tranzakció van a tárcájában, melyet nem Ön indított el, akkor ez az útmutató segít abban, hogy ne történjen meg újra. + +2. [Hogyan azonosíthatók a valótlan tokenek](/guides/how-to-id-scam-tokens/) – Mik azok a valótlan tokenek, hogy tűntetik fel magukat valódiként, hogyan azonosíthatók ezek és kerülhető el a csalás. + +## Az Ethereum használata + +1. [Hogyan lehet áthelyezni a tokeneket a második blokkláncrétegbe (L2)](/guides/how-to-use-a-bridge/) – Túl sokba kerülnek az Ethereum-tranzakciók? Fontolja meg, hogy áttér az Ethereum L2-nek nevezett skálázási megoldásaira. + +2. [Hogyan lehet átváltani a tokeneket](/guides/how-to-swap-tokens/) – Át akarja váltani a tokenjét egy másikra? Ez az egyszerű leírás segít abban, hogyan tudja megtenni. diff --git a/src/content/translations/hu/nft/index.md b/src/content/translations/hu/nft/index.md index 8c935942d17..7f9dd4a4782 100644 --- a/src/content/translations/hu/nft/index.md +++ b/src/content/translations/hu/nft/index.md @@ -12,326 +12,69 @@ summaryPoint2: Az NFT-k minden korábbinál nagyobb hatalmat adnak a tartalomgy summaryPoint3: Az Ethereum blokklánc okosszerződései által működtetve. --- -Az NFT-k viharként söpörnek végig a digitális művészeti alkotások és gyűjthető tárgyak világán. Sok digitális művész élete vesz teljes fordulatot az új, kriptoközönségnek történő eladásoknak köszönhetően. Már a hírességek is elkezdtek beszállni, hiszen a technológiában új lehetőséget látnak a rajongókkal való kapcsolattartásra. De a digitális művészet csak egy az NFT-k felhasználási módjai közül. Valójában akármilyen egyedi dolog tulajdonjogának kifejezésére használhatók: az NFT-k a digitális vagy fizikai tárgyak tulajdoni lapjaként szolgálnak. +## Mik azok a nem helyettesíthető tőkenek (NFT)? {#what-are-nfts} -Ha Andy Warhol a kilencvenes évek végén született volna, valószínűleg NFT-ként tette volna közzé a Campbell's Soup Cans-sorozatot. Csak idő kérdése, hogy a Nike kiadjon egy Jordans-sorozatot az Ethereumon. Egy nap talán azt is NFT-vel bizonyíthatjuk, hogy egy autó tényleg a mi tulajdonunk. +Az NFT-k olyan tokenek, melyek teljesen egyediek. Minden egyes NFT más jellemzőkkel bír (nem helyettesíthető) és bizonyítottan véges. Különbözik más tokenektől, mint amilyen az ERC-20 is, ahol egy adott tokenszett minden eleme azonos és ugyanolyan jellemzőkkel bír (helyettesíthető). Nem számít, hogy az ember pénztárcájában konkrétan melyik bankjegy található, mert mindegyik azonos és ugyanolyan értékű. Az azonban _valóban_ számít, hogy Ön melyik NFT-t birtokolja, mert egyedi jellemzőik megkülönböztetik azokat egymástól (nem helyettesíthető). -## Mik azok az NFT-k? {#what-are-nfts} - -Az NFT-k olyan tokenek, amelyek használatával egyedi dolgok tulajdonjogát igazolhatjuk. Segítségükkel műalkotásokat, gyűjthető tárgyakat vagy akár ingatlanokat is tokenizálhatunk. Egy eszköz tulajdonjogát az Ethereum blokklánc biztosítja – senki sem módosíthatja a tulajdonjog igazolását, vagy hozhat lére új NFT-t másolással és beillesztéssel. - -Az NFT jelentése nem helyettesíthető token (Non-Fungible Token). A „nem helyettesíthető” egy gazdasági kifejezés, amellyel olyan dolgokat írhatunk le, mint például egy bútor az otthonunkban, egy mp3-dal vagy a számítógépünk. Ezek a dolgok nem cserélhetőek ki egy másikra, mert egyedi tulajdonságokkal bírnak. - -A helyettesíthető dolgok viszont kicserélhetőek, mivel nem egyedi tulajdonságaik határozzák meg őket, hanem az értékük. Példaául az ETH vagy a dollár helyettesíthető, mivel 1 ETH vagy 1 dollár kicserélhető egy másik ETH-re vagy dollárra. +Az NFT-k egyedisége révén akár műtárgyak, gyűjthető tárgyak vagy ingatlanok is tokenné alakíthatók. Ekkor egy adott egyedi NFT egy specifikus, egyedi, valós vagy digitális tárgyat képvisel. Egy eszköz tulajdonjogát az Ethereum-blokklánc biztosítja – senki sem módosíthatja a tulajdonjog igazolását, vagy hozhat létre új NFT-t másolással és beillesztéssel. ## Az eszközök internete {#internet-of-assets} -Az NFT-k és az Ethereum megold néhány, az interneten napjainkban jelenlévő problémát. Ahogy minden egyre digitálisabbá válik, egyre inkább szükség van a fizikai tárgyak bizonyos tulajdonságaira, mint például a ritkaság, az egyediség és a tulajdonjog bizonyítása. Arról nem is beszélve, hogy a digitális javak gyakran csak az adott termékkel együtt működnek. Például nem adhatod el a megvásárolt iTunes mp3-at, vagy nem cserélheted el a hűségpontjaidat egy másik kibocsájtó pontjaira – még akkor sem, ha van rá kereslet. +Az NFT-k és az Ethereum megoldást jelent néhány, napjainkban az interneten jelen lévő problémára. Ahogy minden egyre digitálisabbá válik, egyre inkább szükség van a fizikai tárgyak bizonyos tulajdonságainak replikálására, mint például a ritkaság, az egyediség és a tulajdonjog bizonyítása. oly módon, hogy azt ne egy központi szervezet irányítsa. Például az NFT révén bárki birtokolhat olyan mp3 zenét, mely nem egy cég specifikus zenei alkalmazásához kötődik, illetve egy olyan oldalt a közösségi médiában, melyet eladhat vagy elcserélhet, de azt nem veheti el önkényesen a platform szolgáltatója. -Így néz ki az NFT-k internete ahhoz az internethez képest, amit a többségünk manapság használ... +Így néz ki az NFT-k internete ahhoz az internethez képest, amelyet a többségünk minden nap használ... ### Összehasonlítás {#nft-comparison} -| Az NFT-k internete | Az internet ma | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Az NFT-k digitálisan egyediek, nincs két azonos NFT. | Egy adatállomány (mint az .mp3 vagy a .jpg) másolata megegyezik az eredetivel. | -| Minden NFT-nek van egy tulajdonosa, és az nyilvános volta miatt bárki által könnyen ellenőrizhető. | A digitális javak tulajdonjogi nyilvántartását intézmények által ellenőrzött szervereken tárolják – az ő szavukra kell hagyatkoznunk. | -| Az NFT-k mindennel kompatibilisek, ami az Ethereum felhasználásával készült. Egy rendezvényre szóló NFT-jegy értékesíthető bármely Ethereum- piactéren, akár egy teljesen másfajta NFT-ért. Akár egy műalkotás is elcserélhető egy belépőre! | A digitális eszközöket használó cégeknek saját infrastruktúrát kell kiépíteniük. Például egy digitális belépőjegyeket létrehozó alkalmazásnak szüksége lenne egy saját kereskedőplatformra is. | -| A tartalomkészítők bárhol eladhatják munkáikat, és hozzáférhetnek a világpiachoz. | Az alkotók csak annak a felületnek a hálózatára és disztribúciójára támaszkodhatnak, amelyet használnak. Ezeknek gyakran felhasználási feltételei és földrajzi korlátai vannak. | -| Az alkotók rendelkeznek a munkájuk tulajdonosi jogai felett, a követő jogdíjakat pedig közvetítő nélkül kapják meg. | Az online zeneszolgáltatók és a hasonló platformok megtartják a haszon túlnyomó részét. | -| Egészen meglepő felhasználási módjai is vannak. A digitális műalkotások például fedezetként is felhasználhatóak decentralizált hitelekhez. | | - -### Példák NFT-re {#nft-examples} - -Az NFT-k világa viszonylag újnak mondható. Elméletileg az NFT-k körébe tartozik minden olyan egyedi dolog, amelynek birtoklását igazolni kell. A megértéshez segítségül íme néhány, már létező NFT: - -- [Egyedi digitális műalkotás](https://foundation.app/artworks) -- [Egyedi tornacipő korlátozott példányszámú kollekcióból](https://www.metagrail.co/auctions/91cf83fb-3477-4155-aae8-6dcb9b853397) -- [Videójátékban használható tárgy](https://market.decentraland.org/) -- [Egy esszé](https://zora.co/0x517bab7661C315C63C6465EEd1b4248e6f7FE183/145) -- [Digitális gyűjthető alkotás](https://www.larvalabs.com/cryptopunks/details/1) -- [Domainnév](https://app.ens.domains/name/ethereum.eth) -- [Rendezvényre szóló jegy, vagy kupon](https://www.yellowheart.io/) -- [Létező tárgyak vásárlása](https://www.tangible.store/) -- [Tulajdonrész ingatlanban](https://realt.co/) -- [Diploma](https://www.degreecert.com/) -- [Zenéből származó jogdíjak NFT-n keresztül](https://opulous.org/) -- [Pénzkeresés mozgás által](https://yeticoineth.com/about.html) -- [Digitális személyazonosság](https://photochromic.io/) - -### ethereum.org példák {#ethereum-org-examples} - -Az NFT-ket arra használjuk, hogy segítsük a támogatóinkat, és még saját NFT-domainnevünk is van. - -#### POAP-ok (Proof-of-attendance protocol, azaz részvételt tanúsító protokoll) {#poaps} - -Ha Ön hozzájárul az ethereum.org felülethez, egy POAP NFT-t igényelhet. Ezek olyan gyűjthető javak, amelyek bizonyítják, hogy részt vett egy eseményen. Néhány kriptotalálkozó a POAP-okat egyfajta belépőjegyként használta az eseményeikre. [Tudjon meg többet a hozzájárulásról](/contributing/#poap). - -![ethereum.org POAP](./poap.png) - -#### ethereum.eth {#ethereum-dot-eth} - -Ez a weboldal egy alternatív, NFT-k által működtetett domainnévvel rendelkezik – ez az **ethereum.eth**. Az `.org` címünket központilag egy domainnévrendszer (DNS) szolgáltató kezeli, míg az ethereum`.eth` cím az Ethereum Name Service (ENS) szolgáltatáson keresztül van regisztrálva az Ethereumra. Ez a mi tulajdonunkban van, és mi kezeljük. [Tekintse meg az ENS-adatainkat](https://app.ens.domains/name/ethereum.eth) - -[Bővebben az ENS-ről](https://app.ens.domains) +| Az NFT-k internete | Az internet ma | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Ön birtokolja az eszközeit! Egyedül Ön adhatja vagy cserélheti el azokat. | Eszközt bérel valamelyik szervezettől. | +| Az NFT-k digitálisan egyediek, nincs két azonos NFT. | Egy adott entitás másolatát gyakran nem lehet megkülönböztetni az eredetitől. | +| Az NFT tulajdonjogát a blokklánc tárolja, így bárki beazonosíthatja azt. | A digitális javak tulajdonjogi nyilvántartását intézmények által ellenőrzött szervereken tárolják – az ő szavukra kell hagyatkoznunk. | +| Az NFT-k okosszerződések az Ethereum hálózatán. Ez azt jelenti, hogy így könnyen fel lehet azokat használni más okosszerződésekben és alkalmazásokban az Ethereumon! | A digitális eszközöket birtokló vállalatoknak általában saját, falakkal védett infrastruktúrát kell kialakítaniuk. | +| A tartalomkészítők bárhol eladhatják munkáikat, és hozzáférhetnek a világpiachoz. | Az alkotók csak annak a felületnek a hálózatára és disztribúciójára támaszkodhatnak, amelyet használnak. Ezeknek gyakran felhasználási feltételei és földrajzi korlátai vannak. | +| Az NFT létrehozói megtarthatják tulajdonjogaikat saját munkájukat illetően, valamint belefoglalhatják a jogdíjfizetést az NFT szerződésbe. | Az online zeneszolgáltatók és a hasonló platformok megtartják a haszon túlnyomó részét. | ## Hogyan működnek az NFT-k? {#how-nfts-work} -Az NFT-k abban különböznek az ERC-20 tokenektől, mint például a DAI vagy a LINK, hogy minden egyes token teljesen egyedi és nem osztható. Az NFT-k lehetővé teszik bármely egyedi digitális adat tulajdonjogának hozzárendelését vagy igénylését, amely az Ethereum blokkláncának nyilvános főkönyvként való használatával követhető nyomon. Az NFT-t digitális objektumokból hozzák létre, digitális vagy nem digitális dolgok leképezéseként. Egy NFT például a következőket képviselheti: - -- Digitális művészet: - - GIF-ek - - Gyűjthető tárgyak - - Zene - - Videók -- Valóélet-beli elemek: - - Egy autó iratai - - Jegyek egy valós eseményre - - Tokenizált számlák - - Jogi dokumentumok - - Aláírások -- Rengeteg további lehetőség a kreativitásra! - -Az NFT-k tulajdonjogát az egyedi azonosító és a metaadatok kezelik, amelyeket más token nem tud lemásolni. Az NFT-ket okosszerződéseken keresztül bocsátják ki, amelyek tulajdonjogot rendelnek hozzá, és kezelik az NFT-k átruházhatóságát. Amikor valaki NFT-t hoz létre vagy bocsát ki, olyan, okosszerződésekben tárolt kódot hajt végre, amely megfelel különböző szabványoknak, köztük az [ERC-721](/developers/docs/standards/tokens/erc-721/) szabványnak. Ez az információ bekerül a blokkláncba, ahol az NFT-t kezelik. A kibocsátási folyamat a következő főbb lépéseken megy keresztül: - -- Új blokk létrehozása -- Az információ hitelesítése -- Információk rögzítése a blokkláncba - -Az NFT-k rendelkeznek néhány különleges tulajdonsággal: - -- Minden egyes kibocsátott token egyedi azonosítóval rendelkezik, amely közvetlenül egy Ethereum-címhez kapcsolódik. -- Ezek nem cserélhetők fel közvetlenül egy az egyben más tokenekkel. Például 1 ETH pontosan ugyanolyan, mint egy másik ETH. Az NFT-k esetében ez nem így van. -- Minden tokennek van egy tulajdonosa, és ez az információ könnyen ellenőrizhető. -- Ezek az Ethereumon léteznek, és bármely Ethereum-alapú NFT-piacon vásárolhatók és eladhatók. - -Más szóval, ha Ön NFT _ tulajdonos_: - -- Könnyen bizonyítani tudja, hogy Ön a tulajdonos. - - Az NFT tulajdonjogának bizonyítása nagyon hasonlít annak bizonyításához, hogy rendelkezik ETH-val a számláján. - - Tegyük fel például, hogy Ön vásárol egy NFT-t, és az egyedi token tulajdonjoga a nyilvános címén keresztül kerül a tárcájába. - - A token bizonyítja, hogy a digitális fájl Önnél lévő verziója az eredeti. - - Az Ön privát kulcsa az eredeti tulajdonjogának bizonyítéka. - - A tartalom létrehozójának nyilvános kulcsa az adott digitális műtárgy hitelességi tanúsítványaként szolgál. - - Az alkotó nyilvános kulcsa lényegében a token történetének állandó része. Az alkotó nyilvános kulcsa bizonyíthatja, hogy a birtokában lévő tokent egy adott személy hozta létre, ami hozzájárul a piaci értékéhez (a hamisítványokkal szemben). - - Egy másik mód az NFT tulajdonjogának bizonyítására az üzenetek aláírása, amellyel bizonyíthatja, hogy a cím mögötti privát kulcs a tulajdonában van. - - Ahogy fent említettük, a privát kulcs az eredeti tulajdonjogának bizonyítéka. Ez azt jelenti, hogy az adott cím mögötti privát kulcsok irányítják az NFT-t. - - Az aláírt üzenet bizonyítékként szolgálhat arra, hogy Ön birtokolja a privát kulcsait anélkül, hogy azokat bárkinek is felfedné, és így bizonyítja, hogy az NFT is az Öné. -- Senki sem tudja manipulálni semmilyen módon. -- Eladhatja, és bizonyos esetekben ez az eredeti alkotónak követő jogdíjat jelent. -- Vagy örökre megtarthatja, és nyugodt lehet abban, hogy tulajdonának biztonságáról az Ön Ethereum-tárcája gondoskodik. - -Ha pedig Ön NFT-t _hoz létre_: - -- Könnyen bebizonyíthatja, hogy Ön az alkotó. -- Ön határozza meg a mennyiséget. -- Minden egyes eladás után jogdíjat kaphat. -- Bármelyik NFT-piacon vagy társközi (peer-to-peer) piacon eladhatja. Nincs egyetlen platformhoz sem kötve, és nincs szüksége közvetítőkre. - -### Korlátozott mennyiség {#scarcity} - -Az NFT létrehozója dönthet az adott dologból elérhető mennyiségről. - -Vegyünk például egy sporteseményre szóló jegyet. Ahogyan egy rendezvény szervezője eldöntheti, hogy hány jegyet ad el, úgy az NFT létrehozója is eldöntheti, hogy hány másolat létezik. Néha ezek pontos másolatok, mint például 5000 darab nem helyre szóló belépőjegy. Néha több olyan jegyet is kiállítanak, amelyek nagyon hasonlóak, de mindegyik kissé különbözik, mint például a kijelölt ülőhelyre szóló jegyek. Az is előfordulhat, hogy az alkotó egy olyan NFT-t szeretne létrehozni, amelyből csak egy példányt bocsátanak ki különleges, ritka gyűjtői darabként. +Ahogy az Ethereumon létrehozott többi tokent, az NFT-ket is okosszerződések kreálják. Az okosszerződés a számos NFT-standard egyikét (általában ERC-721 vagy ERC-1155) alkalmazza, mely meghatározza a szerződés funkcióit. A szerződés létrehozza (minteli) az NFT-t, és egy adott tulajdonoshoz rendeli. A tulajdonjogot úgy határozza meg a szerződés, hogy az adott NFT-t adott címhez köti. Az NFT rendelkezik egy azonosítóval (ID) és jellemzően metaadatok kapcsolódnak hozzá, melyek egyedivé teszik az adott tokent. -Ezekben az esetekben az egyes NFT-k továbbra is rendelkeznének egyedi azonosítóval (mint a hagyományos „jegyek” vonalkódjai), és csak egy tulajdonosuk lenne. Az NFT tervezett mennyiségi korlátozásának fontos szerepe van, amely csakis az alkotótól függ. Előfordulhat, hogy az alkotó minden egyes NFT-t teljesen egyedivé szeretne tenni a ritkaság érdekében, de az is lehet, hogy az adott esetben több ezer másolat készítése az indokolt. Ne feledje, hogy ezek az információk nyilvánosak. - -### Jogdíjak {#royalties} - -Egyes NFT-k eladásakor az alkotók automatikusan megkapják a jogdíjat. Ez egy folyamatosan fejlődő koncepció, ám egyben az egyik legerősebb. Az [EulerBeats Originals](https://eulerbeats.com/) eredeti tulajdonosai 8% jogdíjat kapnak minden alkalommal, amikor az NFT-t értékesítik. Néhány platform, mint például a [Foundation](https://foundation.app) és a [Zora](https://zora.co/) támogatja a művészek jogdíjának kifizetését. - -Ez teljesen automatikus, így az alkotók hátradőlve élvezhetik a jogdíjakat, amit minden egyes értékesítés után megkapnak. Jelenleg a jogdíjak kiszámítása manuálisan történik, és nem elég pontos – sok alkotó nem azt kapja, amit megérdemel. Ha az Ön NFT-jébe be van programozva a jogdíj, akkor soha nem marad le róla. +Amikor valaki létrehozza vagy minteli az NFT-t, akkor valójában az okosszerződés egy funkcióját indítja el, mely a címéhez rendeli az adott NFT-t. Ezt az információt a szerződés tárhelye őrzi a blokklánc részeként. A szerződés létrehozója egyéb logikát is belevehet a szerződésbe, mint például a kínálat korlátozása, illetve jogdíjfizetés az alkotónak minden alkalommal, amikor a token tulajdonost vált. ## Mire használják az NFT-ket? {#nft-use-cases} -Itt talál további információkat az Ethereumon működő NFT-k néhány jobban kidolgozott felhasználási módjáról és elképzeléséről. - -- [Digitális tartalom](#nfts-for-creators) -- [Videójáték elemek](#nft-gaming) -- [Domainnevek](#nft-domains) -- [Fizikai elemek](#nft-physical-items) -- [Befektetések és fedezet](#nfts-and-defi) -- [Tokengating, vagy tokenzárolás](#tokengating) - - - -### Az alkotók jövedelmének maximalizálása {#nfts-for-creators} - -Az NFT-ket ma leginkább a digitális tartalomgyártás területén használják. Ezért az iparág jelenlegi rossz működése okolható. A tartalomkészítők profitjait és kereseti lehetőségeit elnyelik a különböző platformok. - -A közösségi hálózaton publikáló művész pénzt keres a platformnak, amely hirdetéseket ad el a művész követőinek. Cserébe hírnevet kapnak, a hírnévből azonban nem lehet számlákat fizetni. - -Az NFT-k egy új alkotói gazdaságot működtetnek, ahol az alkotók nem adják át a tartalmuk tulajdonjogát a platformoknak, amelyeken közzéteszik műveiket. A tulajdonjog magába a tartalomba van beépítve. - -Amikor eladják az adott tartalmat, a pénz közvetlenül hozzájuk kerül. Ha az új tulajdonos ezután eladja az NFT-t, az eredeti alkotó akár automatikusan is kaphat jogdíjat. Ez minden egyes eladáskor garantált, mivel a létrehozó címe a token metaadatainak része – ezek pedig nem módosíthatók. - - -
    Fedezzen fel, vásároljon vagy készítsen saját NFT-műalkotásokat/gyűjthető tárgyakat...
    - - Fedezzen fel NFT-műalkotásokat - -
    - -#### A másolás/beillesztés problémája {#nfts-copy-paste} - -Az NFT ellenzői gyakran hivatkoznak arra, hogy az NFT-k „értelmetlenek”, általában egy kép mellett, amelyen egy NFT-műalkotásról készítenek képernyőképet. „Nézd, most már ingyen az enyém ez a kép!” – mondják önelégülten. +Az NFT-ket számtalan esetben használják, ilyen például: -Nos, igen. De vajon Picasso Guernicájának egy képére guglizva egy több millió dolláros művészeti alkotás büszke új tulajdonosai leszünk? - -Végső soron egy dolog olyan értékes, amilyenné a piac teszi. Minél többször nézik, osztják meg és használják a tartalmat, annál értékesebb lesz. - -Az igazolhatóan valódi dolgok birtoklása mindig nagyobb értéket képvisel, mint a nem valódiaké. - - - -### A játékélmény növelése {#nft-gaming} - -Az NFT-k iránt nagy az érdeklődés a játékfejlesztők részéről. Az NFT-k biztosíthatják a játékbeli tárgyak tulajdonjogának nyilvántartását, táplálhatják a játékbeli gazdaságot, és számos előnnyel járhatnak a játékosok számára. - -Sok egyszerű játékban vásárolhatunk olyan elemeket, amelyeket felhasználhatunk a játékban. De ha ez a tárgy egy NFT lenne, akkor visszanyerhetnénk a pénzt, ha eladnánk, amikor befejeztük a játékot. Még nyereséget is szerezhetnénk, ha az adott termék népszerűbbé válik. - -A játékfejlesztők – mint NFT-kibocsátók – jogdíjat kaphatnának minden egyes alkalommal, amikor egy elemet újból értékesítenek a nyílt piacon. Ez egy kölcsönösen előnyösebb üzleti modellt hoz létre, ahol mind a játékosok, mind a fejlesztők keresnek az NFT-piacokon. - -Ez azt is jelenti, hogy ha egy játékot a fejlesztők már nem tartanak fenn, az összegyűjtött tárgyak Önnél maradnak. - -Végső soron a játékon belül megszerzett tárgyak túlélhetik magukat a játékokat. Még ha egy játékot már nem is tartanak fenn, a tárgyai mindig az Ön ellenőrzése alatt maradnak. Ez azt jelenti, hogy a játékbeli tárgyak digitális emléktárgyakká válnak, és a játékon kívül is értéket képviselnek. - -A Decentraland nevű virtuális valóságjáték még azt is lehetővé teszi, hogy virtuális földterületeket jelentő NFT-ket vásároljon, amelyeket tetszés szerint használhat. - - -
    Tekintse meg az NFT-k által üzemeltetett Ethereum-játékokat...
    - - Fedezze fel az NFT-játékokat - -
    - - +- egy eseményen való részvétel igazolása +- egy elvégzett képzés bizonyítványa +- a játékokban birtokolható dolgok +- digitális művészet +- valós tárgyak tokenizálása +- online személyazonosság bizonyítása +- hozzáférés bizonyos tartalmakhoz +- jegyek +- decentralizált internetes domainnevek +- fedezet a decentralizált pénzügyekben (DeFi) -### Az Ethereum-címek megjegyezhetőbbé tétele {#nft-domains} +Tegyük fel, hogy Ön egy művész, aki szeretné NFT-ként megosztani az alkotását, anélkül hogy elveszítené az ellenőrzést felette és közvetítőkre áldozná a profitját. Létrehozhat egy új szerződést, melyben megadja az NFT-k számát, jellemzőiket, és hozzákapcsolja az adott műalkotást. Beleírhatja az okosszerződésbe az Önnek járó jogdíjakat (pl. az eladási ár 5%-át utalják a szerződés tulajdonosának minden alkalommal, amikor az NFT gazdát cserél). Mindig képes lesz bizonyítani, hogy Ön hozta létre az NFT-ket, mert a birtokában van az a tárca, mely létrehozta a szerződést. A vásárlók is könnyedén bizonyíthatják, hogy eredeti NFT-vel rendelkeznek az Ön kollekciójából, mert a tárcáik címe hozzá van rendelve egy tokenhez az okosszerződésben. Az egész Ethereum-ökoszisztémában használhatják az NFT-t, teljes bizonyossággal az eredetiségét illetően. -Az Ethereum Name Service szolgáltatás NFT-ket használ arra, hogy az Ethereum-címét egy könnyebben megjegyezhető névvel lássa el, például `mywallet.eth`. Ez azt jelenti, hogy a `0x123456789.....` helyett a `mywallet.eth` címre kérheti az Önnek küldött ETH-et. +Vagy vegyünk például egy sporteseményre szóló jegyet. Ahogyan egy rendezvény szervezője eldöntheti, hogy hány jegyet ad el, úgy az NFT létrehozója is eldöntheti, hogy hány másolat létezhet. Néha ezek pontos másolatok, mint például 5000 darab nem helyre szóló belépőjegy. Néha több olyan jegyet is kiállítanak, amelyek nagyon hasonlóak, de mindegyik kissé különbözik, mint például kijelölt ülőhelyekre szóló jegyek. Ezeket vehetik és adhatják egymás között (peer-to-peer) anélkül, hogy fizetni kellene a jegyárusoknak, a vevő pedig a szerződés címét ellenőrizve mindig meggyőződhet a jegyek eredetiségéről. -Ez hasonlóan működik, mint egy weboldal domainneve, ami az IP-címet könnyebben megjegyezhetővé teszi. A domainekhez hasonlóan az ENS-neveknek is van értékük, amelyet általában a hosszúság és a relevancia alapján határoznak meg. Az ENS segítségével nincs szüksége domainnyilvántartásra a tulajdonjog átruházásának megkönnyítéséhez. Ehelyett az ENS-nevekkel egy NFT-piactéren kereskedhet. +Az ethereum.org portálon NFT-t használunk arra, hogy igazoljuk a tagok közreműködését a Github gyűjteményhez (repóhoz) vagy a részvételüket bizonyos konferenciabeszélgetéseken, sőt, saját NFT domainnévvel is rendelkezünk. Ha Ön hozzájárul az ethereum.org felülethez, egy POAP NFT-t igényelhet. Bizonyos kriptotalálkozók POAP-ot (részvételt tanúsító protokollt) használnak jegy gyanánt. [Tudjon meg többet a hozzájárulásról](/contributing/#poap). -Az ENS-nevét a következőkre használhatja: - -- Kriptovaluták és egyéb NFT-k fogadása. -- Átirányíthat egy decentralizált weboldalra, például az [ethereum.eth](https://ethereum.eth.link)-re. [További információ a webhely decentralizálásáról](https://docs.ipfs.io/how-to/websites-on-ipfs/link-a-domain/#domain-name-service-dns) -- Bármilyen tetszőleges információ tárolása, beleértve a profilinformációkat, például az e-mail-címeket és a Twitter-felhasználóneveket. - - - -### Fizikai tárgyak {#nft-physical-items} - -A fizikai tárgyak tokenizálása még nem olyan fejlett, mint digitális társaiké. De rengeteg olyan projekt van, amely az ingatlanok, egyedi divatcikkek és egyéb termékek tokenizációjával foglalkozik. - -Mivel az NFT-k lényegében okiratok, egy nap akár autót vagy házat is vásárolhatna ETH-el, és cserébe (ugyanabban a tranzakcióban) megkaphatná az okiratot NFT-ként. Ahogy a dolgok egyre inkább a modern technológiák irányába mozdulnak, nem nehéz elképzelni egy olyan világot, ahol az Ethereum-tárcája lesz az autója vagy az otthona kulcsa – az ajtót pedig a tulajdonjog kriptográfiai bizonyítéka nyitja ki. - -Az Ethereumban reprezentálható értékes javakkal, például autókkal és ingatlanokkal az NFT-ket használhatja fedezetként decentralizált hiteleknél. Ez különösen akkor hasznos, ha nem készpénzzel vagy kriptovalutával rendelkezik, hanem fizikai értéktárgyakkal. [Tudjon meg többet a DeFi-ről](/defi/) - - - -### NFT-k és DeFi {#nfts-and-defi} - -Számos érdekes együttműködés látszik kibontakozni az NFT-k és a [decentralizált pénzügyek (DeFi)](/defi/) világa között. - -#### NFT-alapú hitelek {#nft-backed-loans} - -Vannak olyan DeFi-alkalmazások, amelyekkel fedezet segítségével kölcsönt vehet fel. Például 10 ETH-et használhat fedezetként, hogy 5000 DAI ([egy stabilcoin](/stablecoins/)) összegű kölcsönt vegyen fel. Ez garantálja, hogy a hitelezőt visszafizetik – ha az adós nem fizeti vissza a DAI-t, a hitelező megkapja a fedezetet. Azonban nem mindenki rendelkezik elegendő kriptovalutával, amelyet fedezetként használhatna. - -A projektek kezdik felfedezni, hogy az NFT-ket hogyan lehet fedezetként használni. Képzelje el, ha egy ritka CryptoPunk NFT-t vett volna annak idején – ez a mai árakon akár 1000 dollárt is érhet. Ezt fedezetként felajánlva ugyanezzel a szabályrendszerrel juthatna hitelhez. Ha nem fizeti vissza a DAI-t, a CryptoPunkot elküldik a hitelezőnek fedezetként. Ez végső soron bármi mással is működhet, amit NFT-ként tokenizál. - -Az Ethereumon pedig mindez könnyen megvalósítható, mert mindkét világ (NFT és DeFi) ugyanazt az infrastruktúrát használja. - -#### Részleges tulajdonjog {#fractional-ownership} - -Az NFT-alkotók „részvényeket” is létrehozhatnak az NFT-khez. Ez lehetőséget ad a befektetőknek és a rajongóknak, hogy egy NFT egy részét birtokolják anélkül, hogy az egészet meg kellene venniük. Ez még több lehetőséget kínál az NFT-kibocsátok és gyűjtők számára. - -- A részleges NFT-kel nemcsak az [NFT-piactereken](/dapps?category=collectibles) lehet kereskedni, hanem a [DEX-eken](/defi/#dex), köztük a Uniswapon is. Ez több vevőt és eladót jelent. -- Egy NFT teljes árát az egyes részek árával lehet meghatározni. -- Így nagyobb lehetősége van arra, hogy birtokolja és profitáljon az Önnek fontos tárgyakból. Nehezebb az NFT-k birtoklásából kiszorulni. - -Ez még kísérleti jellegű, de a következő tőzsdéken többet megtudhat a részleges NFT-tulajdonlásról: - -- [NIFTEX](https://landing.niftex.com/) -- [NFTX](https://gallery.nftx.org/) - -Elméletileg ez lehetővé tenne olyan dolgokat, mint például egy Picasso-alkotás egy darabjának birtoklása. Így Ön egy Picasso NFT részvényesévé válna, ami azt jelenti, hogy beleszólása lenne olyan dolgokba, mint a bevételek megosztása. Nagyon valószínű, hogy egy nap az NFT-részek tulajdonosai beléphetnek egy decentralizált autonóm szervezetbe (DAO), amely az adott dolog kezelését végzi. - -Ezek olyan Ethereum-alapú szervezetek, amelyek lehetővé teszik, hogy idegenek – például egy dolog globális részvényesei –biztonságosan koordináljanak anélkül, hogy feltétlenül meg kellene bízniuk a többi emberben. Ez azért van, mert egyetlen fillért sem lehet elkölteni a csoport jóváhagyása nélkül. - -Mint említettük, ez egy fejlődő terület. Az NFT-k, a DAO-k, a részleges tokenek mind különböző ütemben fejlődnek. De az összes infrastruktúra létezik, és könnyen tudnak együttműködni, mert mindannyian ugyanazt a nyelvet beszélik: az Ethereum nyelvét. Ezért is megéri figyelemmel kísérni ezt a teret. - -[További információk a DAO-król](/dao/) - -### Eredetiségigazolások {#certificates} - -Az egyetemi diplomákat hamisító cégek a jelentések szerint milliárd dolláros iparágat jelentenek, az NFT-k pedig segíthetnek felvenni ellenük a harcot. Az NFT technológia biztonságos és gyors módja lehet a diplomák ellenőrzésének. - -[Dél-Koreában az egyik egyetem már NFT-ként állítja ki a diplomákat](https://forkast.news/headlines/south-korea-nfts-graduates-hoseo/), abban a reményben, hogy az NFT-k javítják az adminisztratív szolgáltatásokhoz való hozzáférést, és megakadályozzák a diplomák hamisítását vagy megváltoztatását. [Az írországi Trinity Business School (TBS) is azt tervezi, hogy 2023-tól bevezeti az NFT-ket](https://trinitynews.ie/2022/04/business-school-to-offer-degree-nfts/). - - - -### Tokengating, vagy tokenzárolás {#tokengating} - -A tokengating, vagy tokenzárolás egy módja annak, hogy korlátozzuk a hozzáférést valamihez, a hozzáférés feloldására pedig az NFT-ket használjuk. Ezek a dolgok a platformtól függően nagyon eltérőek lehetnek, de népszerű példák a zárolt tartalmak, a privát csevegőszerverek és – az e-kereskedelem világában – az exkluzív termékek. - -A tokenzárolást végző platformok általában megkérik Önt, hogy csatlakoztassa a tárcáját, így bizonyítva, hogy rendelkezik a szükséges NFT-vel. Ha rendelkezik a szükséges NFT-vel, megkapja a hozzáférést. Ha nem, az adott dolog zárolás alatt marad. Az NFT-k kiválóan alkalmasak erre az egyediségük miatt – nem lehet tulajdonjogot hamisítani, hogy megszerezze az adott dolgot. - -Mivel az Ethereumon elérhetőek NFT-k, ezek használhatóak az Ethereum tokenzárak feloldására minden azokat használó felületen. Egyetlen NFT birtoklásával zárolt tartalmakhoz, privát csevegőszerverekhez és exkluzív termékekhez férhet hozzá számos különböző weboldalon és alkalmazásban. - -Ha az NFT-k kibocsátása és terjesztése a közösség létrehozásáról vagy a közösségi digitalizálásról szól, akkor a tokenzárolás a közösség ápolásáról. Ebben az értelemben az NFT-ket inkább a tagság vagy a hűség eszközeként használják, amely nagyszerű módja annak, hogy a velük járó előnyöket megbízhatóan biztosítsák. +![ethereum.org POAP](./poap.png) -#### Példák +Ez a weboldal egy alternatív, NFT-k által működtetett domainnévvel is rendelkezik: **ethereum.eth**. Az `.org` címünket központilag egy domainnévrendszer (DNS) szolgáltató kezeli, míg az ethereum`.eth` cím az Ethereum Name Service (ENS) szolgáltatáson keresztül van regisztrálva az Ethereumra. Ezt a mi tulajdonunkban van, és mi kezeljük. [Tekintse meg az ENS-adatainkat](https://app.ens.domains/name/ethereum.eth) -- [Collab.land](https://collab.land/) tokenzárak, Discord csevegőszerverek vagy Telegram-csoportok -- [A feloldási protokoll](https://unlock-protocol.com/) egy tokenzárolásra használt protokoll -- [A Shopify](https://help.shopify.com/en/manual/products/digital-service-product/nfts) egyre több olyan alkalmazással rendelkezik, amelyek lehetővé teszik a kereskedők számára a termékekhez és kedvezményekhez való hozzáférés tokenzárolását +[Bővebben az ENS-ről](https://app.ens.domains) -## Ethereum és az NFT-k {#ethereum-and-nfts} - -Az Ethereum több okból is lehetővé teszi az NFT-k működését: - -- A tranzakciós előzmények és a token metaadatok nyilvánosan ellenőrizhetők – a tulajdonosi előzmények bizonyítása egyszerű. -- Miután egy tranzakciót megerősítettek, szinte lehetetlen manipulálni az adatokat és ezáltal „ellopni” a tulajdonjogot. -- Az NFT-kkel peer-to-peer módon lehet kereskedni, anélkül, hogy olyan platformokra lenne szükség, amelyek nagy összegű díjakat számolnak fel a tranzakciók után. -- Minden Ethereum termék ugyanazt a „backend"-et használja. Másképpen fogalmazva, az Ethereum összes terméke könnyen megérti egymást – ez teszi az NFT-ket hordozhatóvá az egyes termékek között. Az egyik termékért könnyen vásárolhat NFT-t, és eladhatja egy másik termékért. Alkotóként egyszerre több terméken is feltüntetheti NFT-it – minden terméken a legfrissebb tulajdonosi információk lesznek feltüntetve. -- Az Ethereum sosem áll le, ami azt jelenti, hogy a tokenjei mindig eladhatók lesznek. - -## Az NFT-k környezeti hatása {#environmental-impact-nfts} - -Az NFT-k létrehozása és átadása csak Ethereum-tranzakció: az NFT-k kibocsátása, vásárlása, cseréje vagy az NFT-kkel való interakció nem fogyaszt közvetlenül energiát. A [beolvadás](/roadmap/merge) óta az Ethereum alacsony energiafelhasználású blokklánc, ami azt jelenti, hogy az NFT-k használatának környezeti hatása elhanyagolható. - -[Bővebben az Ethereum energiafelhasználásáról](/energy-consumption/). - -### Ne hibáztassa az NFT-ket {#nft-qualities} +### Az NFT-k biztonsága {#nft-security} -Az egész NFT-ökoszisztéma azért működik, mert az Ethereum decentralizált és biztonságos. - -A decentralizált azt jelenti, hogy Ön és mindenki más is ellenőrizheti, hogy Ön a tulajdonosa valaminek. Mindezt anélkül, hogy a felügyeletet egy harmadik félre bíznánk, aki tetszés szerint saját szabályokat szabhat meg. Ez azt is jelenti, hogy az Ön NFT-je számos különböző termékre és piacra átvihető. - -A biztonságos azt jelenti, hogy senki sem tudja másolni vagy ellopni az NFT-jét. - -Az Ethereum ezen tulajdonságai lehetővé teszik az egyedi tárgyak digitális birtoklását és a tartalomért járó tisztességes árat. Az Ethereum a javakat egy decentralizált konszenzusmechanizmus segítségével védi, amely ['letéti bizonyítékot, azaz proof-of-stake-t'](/developers/docs/consensus-mechanisms/pos)-t használ. Ez egy alacsony szén-dioxid-kibocsátású módszer annak meghatározására, hogy ki adhat hozzá egy tranzakcióblokkot a lánchoz, és biztonságosabbnak tekinthető, mint az energiaigényes ['munka igazolása, azaz proof-of-work'](/developers/docs/consensus-mechanisms/pow). Az NFT-k régebben nagy energiaráfordítással jártak, mivel az Ethereumot korábban proof-of-work segítségével biztosították. Ez ma már nincs így. - -#### NFT-k kibocsátása {#minting-nfts} - -Egy NFT kibocsátása során van néhány dolog, amelynek meg kell történnie: - -- Az NFT-t egy dologként meg kell erősíteni a blokkláncon. -- A tulajdonos számlaegyenlegét frissíteni kell, hogy tartalmazza az adott dolgot. Ez lehetővé teszi, hogy aztán kereskedni lehessen vele, vagy igazolhatóan „birtokba lehessen venni”. -- A fentieket megerősítő tranzakciókat hozzá kell adni egy blokkhoz, és „halhatatlanná kell tenni” a láncban. -- A blokkot a hálózatban mindenkinek meg kell erősítenie „helyes”-ként. Ez a konszenzus megszünteti a közvetítők szükségességét, mivel a hálózat egyetért abban, hogy az Ön NFT-je létezik és Önhöz tartozik. Ez láncon belüli ügylet, így bárki ellenőrizheti. Ez az egyik mód, amivel az Ethereum segít az NFT-alkotóknak maximalizálni a bevételüket. - -Mindezeket a feladatokat a blokkgyártók és a validátorok végzik. A blokkelőterjesztők hozzáadják az NFT-tranzakciót egy blokkhoz, és továbbítják azt a hálózat többi részének. A validátorok ellenőrzik, hogy a tranzakció érvényes-e, majd hozzáadják az adatbázisukhoz. Számos kriptogazdasági tényező van érvényben annak érdekében, hogy a validátorok becsületesen járjanak el. Ellenkező esetben bárki egyszerűen azt állíthatná, hogy az Ön által épp most kibocsátott NFT tulajdonosa, és csalárd módon átruházhatná a tulajdonjogot. - -#### NFT biztonság {#nft-security} - -Az Ethereum biztonságát a letét bizonyítéka, vagyis a proof-of-stake adja. A rendszert úgy tervezték, hogy gazdaságilag visszatartson a rosszindulatú cselekedetektől, így az Ethereum hamisíthatatlan. Ez teszi lehetővé az NFT-ket. Ha az NFT-tranzakciót tartalmazó blokk véglegesítetté válik, egy támadónak több millió ETH-ba kerülne megváltoztatni azt. Bárki, aki Ethereum-szoftvert futtat, azonnal képes lenne észlelni az NFT tisztességtelen manipulálását, és a csalárd szereplőt gazdaságilag megbüntetnék és kizárnák. +Az Ethereum biztonságát a letét bizonyítéka (vagyis a proof-of-stake) adja. A rendszert úgy tervezték, hogy gazdaságilag visszatartson a rosszindulatú cselekedetektől, így az Ethereum hamisíthatatlan. Ennek köszönhetően létezhetnek az NFT-k. Ha az NFT-tranzakciót tartalmazó blokk véglegesítetté válik, egy támadónak több millió ETH-ba kerülne megváltoztatni azt. Bárki, aki Ethereum-szoftvert futtat, azonnal képes lenne észlelni az NFT tisztességtelen manipulálását, és a csalárd szereplőt gazdaságilag megbüntetnék és kizárnák. Az NFT-kel kapcsolatos biztonsági problémák leggyakrabban adathalász csalásokhoz, okosszerződések sebezhetőségéhez vagy felhasználói hibákhoz (például a privát kulcsok véletlen felfedéséhez) kapcsolódnak, így a megfelelő tárcabiztonság kritikus fontosságú az NFT-tulajdonosok számára. @@ -339,17 +82,13 @@ Az NFT-kel kapcsolatos biztonsági problémák leggyakrabban adathalász csalás Bővebben a biztonságról -## Építkezés az NFT-kkel {#build-with-nfts} - -A legtöbb NFT az [ERC-721](/developers/docs/standards/tokens/erc-721/) néven ismert egységes szabványt használja. Vannak azonban más szabványok is, amelyeket érdemes figyelembe venni. Az [ERC-1155](https://blog.enjincoin.io/erc-1155-the-crypto-item-standard-ac9cf1c5a226) szabvány lehetővé teszi a félig helyettesíthető tokenek használatát, ami különösen hasznos a szerencsejátékok területén. Nemrégiben pedig az [EIP-2309](https://eips.ethereum.org/EIPS/eip-2309) szabvánnyal tettek javaslatot arra, hogy az NFT-k kibocsátását sokkal hatékonyabbá tegyék. Ez a szabvány lehetővé teszi, hogy egy tranzakcióban annyi NFT-t bocsásson ki, amennyit csak szeretne. - ## További olvasnivaló {#further-reading} -- [Crypto art data](https://cryptoart.io/data) – _Richard Chen, automatikusan frissítve_ -- [OpenSea: the NFT Bible](https://opensea.io/blog/guides/non-fungible-tokens/) – _Devin Fizner, 2020. január 10._ -- [A beginner's guide to NFTs](https://linda.mirror.xyz/df649d61efb92c910464a4e74ae213c4cab150b9cbcc4b7fb6090fc77881a95d) – _Linda Xie, 2020. január_ -- [Everything you need to know about the metaverse](https://foundation.app/blog/enter-the-metaverse) – _A Foundation csapata, foundation.app_ -- [No, CryptoArtists Aren’t Harming the Planet](https://medium.com/superrare/no-cryptoartists-arent-harming-the-planet-43182f72fc61) -- [Ethereum's energy consumption](/energy-consumption/) +- [A beginner's guide to NFTs](https://linda.mirror.xyz/df649d61efb92c910464a4e74ae213c4cab150b9cbcc4b7fb6090fc77881a95d) – _Linda Xie, 2020. január _ +- [EtherscanNFT trekker](https://etherscan.io/nft-top-contracts) +- [ERC-721 tokenszabvány](/developers/docs/standards/tokens/erc-721/) +- [ERC-1155 tokenszabvány](/developers/docs/standards/tokens/erc-1155/) + + diff --git a/src/content/translations/hu/refi/index.md b/src/content/translations/hu/refi/index.md new file mode 100644 index 00000000000..a863258242a --- /dev/null +++ b/src/content/translations/hu/refi/index.md @@ -0,0 +1,79 @@ +--- +title: Regeneratív pénzügyek (ReFi) +description: A regeneratív pénzügyek (ReFi) áttekintése és jelenlegi használata. +lang: hu +template: use-cases +emoji: ":recycle:" +sidebarDepth: 2 +image: ../../../../assets/future_transparent.png +alt: "" +summaryPoint1: Egy alternatív gazdasági rendszer, mely regeneratív elvekre épül +summaryPoint2: Az Ethereum kiaknázása a globális koordinációs krízisek megoldására, mint amilyen a klímaváltozás is +summaryPoint3: Az ökológiailag hasznos eszközök drasztikus skálázási lehetősége, mint amilyen az igazolt karbonkredit is +--- + +## Mik azok a regeneratív pénzügyek (ReFi)? {#what-is-refi} + +**A regeneratív pénzügyek (ReFi)** olyan blokkláncra épülő eszközök és eszmék összessége, melyek célja a regeneratív gazdaságok kialakítása a kitermelési vagy kizsákmányolási helyett. A kizsákmányoláson alapuló rendszerek végül felélik a rendelkezésre álló erőforrásokat és összeomlanak; a regeneratív mechanizmusok nélkül nem bírnak kellő rugalmassággal. A ReFi azon a feltételezésen alapszik, hogy a pénzügyi érték létrehozását el kell választani a bolygó és a közösségek erőforrásainak nem fenntartható kizsákmányolásától. + +Ehelyett a ReFi arra törekszik, hogy regeneratív ciklusok létrehozásával környezeti, közösségi és szociális problémákat oldjon meg. Ezek a rendszerek egyszerre teremtenek értéket a résztvevőknek, valamint az ökoszisztéma és a közösségek javait szolgálják. + +A ReFi egyik alapköve a regeneratív gazdaság koncepciója, melyet John Fullerton fogalmazott meg a [Capital Institute intézettől](https://capitalinstitute.org). Nyolc összefüggő elvet javasolt, melyek megalapozzák a rendszer egészségét: + +![A nyolc összefüggő elv](../../assets/use-cases/refi-regenerative-economy-diagram.png) + +A ReFi projektek ezeket az elveket valósítják meg az [okosszerződések](/developers/docs/smart-contracts/) és [a decentralizált pénzügyek (DeFi)](/defi/) alkalmazásainak segítségével, hogy ösztönözzék a regeneratív viselkedéseket, mint amilyen a lepusztult ökoszisztémák visszaállítása, illetve a nagy léptékű együttműködés elősegítése olyan globális problémák esetén, mint a klímaváltozás és a biodiverzitás-csökkenés. + +A ReFi egyúttal átfedésben van a [decentralizált tudomány (DeSci)](/desci/) mozgalommal, mely az Ethereumot használja platformként a tudományos ismeretek finanszírozása, létrehozása, értékelése, hitelesítése, tárolása és terjesztése céljából. A DeSci eszközök hasznosak lehetnek ahhoz, hogy a regeneratív tevékenységek (faültetés, a műanyagok összegyűjtése az óceánból, lepusztult ökoszisztémák visszaállítása) bevezetését és monitorozását igazolható szabványokkal és gyakorlatokkal támasszák alá. + +## A karbonkreditek tokenizálása {#tokenization-of-carbon-credits} + +Az **[önkéntes karbonpiac (VCM)](https://climatefocus.com/so-what-voluntary-carbon-market-exactly/)** olyan projektek finanszírozási mechanizmusa, melyek igazolhatóan pozitív hatást gyakorolnak a szén-dioxid kibocsátásra, akár az aktuális kibocsátás csökkentésével vagy a más kibocsátott üvegházhatású gázok lekötésével. Ezek a projektek egy karbonkreditnek nevezett eszközt kapnak az igazolási eljárás után, melyet olyan egyéneknek és szervezeteknek adhatnak el, akik támogatni szeretnék a klímára ható intézkedéseket. + +Az önkéntes karbonpiac (VCM) mellett számos kormányzat által kötelezővé tett karbonpiac is létezik, hogy törvényekkel vagy szabályozásokkal egy adott joghatóságon belül (pl. ország vagy régió) bevezessenek egy olyan karbonárat, mellyel kontrollálnák a kiadott karbonkibocsátási engedélyeket. Ezek a kötelező karbonpiacok arra ösztönzik a kibocsátókat az adott joghatóságon belül, hogy csökkentsék kibocsátásukat, de a már kibocsátott üvegházhatású gázok lekötésére nincs ráhatásuk. + +Az elmúlt évtizedek fejlődése ellenére a VCM továbbra is számtalan problémával küzd: + +1. A likviditás, vagyis az elérhető pénzeszközök nagyon szétdaraboltak +2. A tranzakciók működése nem átlátható +3. Magas díjak +4. A kereskedési sebesség nagyon lassú +5. A skálázhatóság nem megoldott + +A VCM átvitele az új, blokkláncalapú **digitális karbonpiacra (DCM)** egy jó lehetőség arra, hogy továbbfejlesszük a karbonkreditek validálásának, adásvételének és felhasználásának meglévő technológiáját. A blokkláncok lehetővé teszik a nyilvánosan igazolható adatokat, hozzáférést biztosítanak a felhasználók széles körének és nagyobb likviditást tudnak adni. + +A ReFi-projektek blokklánc technológiát használnak arra, hogy a hagyományos piac problémáit enyhítsék: + +- **A likviditás néhány alapban koncentrálódik,** amelyekkel bárki szabadon kereskedhet. A nagy szervezetek és az egyéni felhasználók ugyanúgy hasznosíthatják ezeket az alapokat, és nem kell hozzá kereskedőt fogadniuk, részvételi díjat fizetniük vagy regisztrálniuk. +- **Az összes tranzakció nyilvános blokkláncokon kerül rögzítésre**. Minden egyes karbonkredit mozgása nyomon követhető onnantól kezdve, hogy a DCM-en elérhetővé válik. +- **A tranzakciósebesség szinte azonnali**. A hagyományos piacokon napokig vagy hetekig tartana nagyobb mennyiségű karbonkredit beszerzése, amit a DCM-en pillanatok alatt el lehet érni. +- **A kereskedés közvetítők nélkül zajlik**, akik nagy díjakat számolnának fel ezért. A digitális karbonkreditek [62%-os költséghatékonyságot jelentenek a hagyományos kreditekhez képest](https://www.klimadao.finance/blog/klimadao-analysis-of-the-base-carbon-tonne), derül ki egy elemzőcég adataiból. +- **A DCM skálázható** és képes egyaránt kielégíteni az egyének és a multinacionális vállalatok igényeit. + +### A digitális karbonpiac (DCM) fő komponensei {#key-components-dcm} + +A DCM jelenlegi struktúrája négy fő elemből áll: + +1. Nyilvántartások, mint a [Verra](https://verra.org/project/vcs-program/registry-system/) és a [Gold Standard](https://www.goldstandard.org/), biztosítják, hogy a projektek karbonkreditjei hitelesek legyenek. Emellett üzemeltetik az adatbázist, melyben a digitális karbonkreditek létrejönnek, és ezek átadhatók és felhasználhatók. + +A blokkláncra épülő, innovatív projektek egy újabb hulláma próbálja megbontani, újraalkotni a szektor hivatalnoki funkcióit is. + +2. Karbonhidak, vagyis tokenizálók, akik a hagyományos nyilvántartásokban tárolt karbonkrediteket megjelenítik vagy áttranszferálják a DCM-re. Ismert példa többek között a [Toucan Protocol](https://toucan.earth/), a [C3](https://c3.app/) és a [Moss.Earth](https://moss.earth/). +3. Integrált szolgáltatások, melyek karbonelkerülési és/vagy -eltávolítási krediteket ajánlanak a végfelhasználóknak, így nyilvánvaló a környezetre gyakorolt jótékony hatásuk és megoszthatják a világgal azt, hogy támogatják a klímával kapcsolatos intézkedéseket. + +Néhányan, mint amilyen a [Klima Infinity](https://www.klimadao.finance/infinity) és a [Senken](https://senken.io/), a projektek széles választékát kínálják, melyeket harmadik fél készített és olyan szabványok mentén bocsátott ki, mint a Verra. Mások, mint amilyen a [Nori](https://nori.com/) is, csak specifikus projekteket fejlesztenek a saját karbonkredit-szabványuk alapján, melyet ők bocsátanak ki és saját, erre specializált piacterükön kezelik. + +4. Infrastruktúra, amely lehetővé teszi a karbonpiac teljes ellátási láncának skálázhatóságát hatás és hatékonyság szempontjából. A [KlimaDAO](http://klimadao.finance/) likviditást biztosít közjó gyanánt (bárki vehet vagy adhat karbonkreditet transzparens áron), ösztönzi a karbonpiacok tranzakcióátvitelének növekedését és a karbonkreditek felhasználását, továbbá felhasználóbarát és interoperábilis eszközrendszert biztosít, hogy a tokenizált karbonkreditek széles választékáról elérhetők legyenek az adatok, illetve beszerzi és felhasználja azokat. + +## ReFi a karbonpiacokon túl {#refi-beyond} + +Bár jelenleg nagy hangsúlyt a karbonpiacokra általánosságban, valamint a VCM transzferálásáról a DCM-re, ugyanakkor a regeneratív pénzügyek (ReFi) nem korlátozódnak erre a területre. Más környezeti eszközöket is létre lehet hozni és tokenizálni, hogy újabb negatív externáliákat is be lehessen árazni a jövő gazdasági rendszerének részeként. Emellett e gazdasági modell regeneratív aspektusát fel lehet használni más területeken is, mint a közjavak finanszírozása kvadratikus finanszírozási platformokon, amilyen a [Gitcoin](https://gitcoin.co/) is. Azok a szervezetek, melyek a nyitott részvétel és az erőforrások egyenlő elosztásának eszméjére épültek, lehetővé teszik, hogy az emberek nyílt forráskódú szoftverprojekteknek, valamint oktatási, környezeti és közösség által irányított projekteknek juttassanak pénzt. + +Azzal, hogy a tőkét átirányítják a kizsákmányoló gyakorlatokból a regeneratív kezdeményezésekbe, elindulhatnak olyan projektek és cégek, melyek szociális, környezeti és közösségi előnyöket adnak – és valószínűleg a hagyományos pénzügyi rendszerben nem jutnának pénzhez –, így gyorsan és könnyedén pozitív externáliákat hozhatnak létre a társadalom számára. A finanszírozás ezen modelljére való átállás lehetőséget ad a sokkal befogadóbb gazdasági rendszerek számára, melyekben mindenféle demográfiai jellemzővel bíró ember aktív résztvevő lehet, nem csak passzív szemlélő. A ReFi az Ethereum vízióját kínálja arra vonatkozólag, hogy miként lehet összehangoltan cselekedni a lét kihívásait illetően, mely az emberi fajt és a bolygó minden élőlényét érinti – egy új gazdasági paradigma alaprétege, mely befogadóbb és fenntarthatóbb jövőt teremt. + +## További cikkek a ReFi-ról + +- [A karbonvaluták áttekintése és helyük a gazdaságban](https://www.klimadao.finance/blog/the-vision-of-a-carbon-currency) +- [A Jövő Minisztériuma, egy regény a karbonalapú valuta szerepéről a klímaváltozás elleni harcban](https://en.wikipedia.org/wiki/The_Ministry_for_the_Future) +- [Részletes jelentés az önkéntes karbonpiacok skálázását megcélzó munkacsoporttól (TSVCM)](https://www.iif.com/Portals/1/Files/TSVCM_Report.pdf) +- [Kevin Owocki és Evan Miyazono CoinMarketCap glosszáriumbejegyzése a ReFi-ről](https://coinmarketcap.com/alexandria/glossary/regenerative-finance-refi) diff --git a/src/content/translations/hu/security/index.md b/src/content/translations/hu/security/index.md new file mode 100644 index 00000000000..5369c2ee6d6 --- /dev/null +++ b/src/content/translations/hu/security/index.md @@ -0,0 +1,292 @@ +--- +title: Ethereum-biztonság és átverés elleni védelem +description: Biztonságban az Ethereumon +lang: hu +--- + +# Ethereum-biztonság és átverés elleni védelem {#introduction} + +A kriptovaluták iránt nő az érdeklődés, ezért elengedhetetlen megtanulni a bevált gyakorlatokat. A kripto izgalmas dolog, de közben komoly kockázatokat is rejt. Ha Ön megfelelően tájékozódik, akkor elháríthatja ezeket a kockázatokat. + + + +## Webbiztonság 101 {#web-security} + +### Használjon erős jelszavakat {#use-strong-passwords} + +[A számlatámadások 80%-a a gyenge vagy ellopott jelszavakból ered](https://cloudnine.com/ediscoverydaily/electronic-discovery/80-percent-hacking-related-breaches-related-password-issues-cybersecurity-trends/). Egy hosszú, betűkből, számokból és szimbólumokból álló sorozat a legjobb ahhoz, hogy a számlája biztonságban legyen. + +A legtipikusabb hiba az, ha két-három hétköznapi, kapcsolódó szót használnak. Ezek a jelszavak nem biztonságosak, mert lehetővé tesznek egy egyszerű hackelési technikát, az úgynevezett [szótáralapú támadást](https://wikipedia.org/wiki/Dictionary_attack). + +```md +Gyenge jelszó például: AranyosBolyhosCicák! + +Erős jelszó például: ymv\*azu.EAC8eyp8umf +``` + +A másik általános hiba az, amikor a [közösségi médiából visszafejthető]() jelszót találnak ki. Beleértve az édesanyja leánykori nevét, a gyerekek vagy háziállatok neveit, születési időpontokat használva nem lesz a jelszó biztonságos, és lehetőséget ad a támadásra. + +#### A jó jelszóhoz: {#good-password-practices} + +- Olyan hosszú jelszót válasszon, amit jelszógenerátor készít vagy megenged az adott rendszer +- Használjon nagybetűt, kisbetűt, számokat és jeleket +- Ne használjon személyes adatokat, mint családi nevek +- Ne használjon hétköznapi szavakat, melyeket a szótár is tartalmaz + +[Bővebben az erős jelszó létrehozásáról](https://terranovasecurity.com/how-to-create-a-strong-password-in-7-easy-steps/) + +### Használjon egyedi jelszót mindenre {#use-unique-passwords} + +Az erős jelszó sem véd meg akkor, ha kiszivárog egy adatvédelmi incidens során. A [Have I Been Pwned](https://haveibeenpwned.com) weblap megmutatja, hogy a számláját érintette-e bármilyen adatvédelmi incidens. Ha igen, akkor **azonnal cserélje le a jelszavait**. Az egyedi jelszavak használata csökkenti annak kockázatát, hogy a támadó mindenhez hozzáfér, amikor egy jelszót feltör. + +### Használjon jelszókezelőt {#use-password-manager} + + +
    + A jelszókezelő erős, egyedi jelszavakat hoz létre és meg is jegyzi azokat! Erősen ajánljuk, hogy használjon ilyet, és a legtöbb ingyen van! +
    +
    + +Az erős, egyedi jelszavakat nem túl ideális megjegyezni az összes számlához. A jelszókezelő egy biztonságos, titkosított tárhelyet biztosít az összes jelszónak, amit egy erős mesterjelszóval tud elérni. Az új szolgáltatásokra való bejelentkezéseknél is erős jelszavakat ajánl, így Önnek nem kell kitalálnia azt. Számos jelszókezelő azt is megmondja, hogy Ön érintett-e adatszivárgásban, így lecserélheti a jelszavait, mielőtt támadás érné. + +![Példa a jelszókezelő használatára](./passwordManager.png) + +#### Próbáljon ki egy jelszókezelőt: {#try-password-manager} + +- [Bitwarden](https://bitwarden.com/) +- [KeePass](https://keepass.info/) +- [1Password](https://1password.com/) +- Emellett más [javasolt jelszókezelőket](https://www.privacytools.io/secure-password-manager) is megtekinthet + +### Használjon kéttényezős azonosítást {#two-factor-authentication} + +Különböző egyedi bizonyítékok bemutatásával igazolhatja, hogy Ön valóban az, akinek mondja magát. Ezek a **tényezők**, melyekből a három legfontosabb: + +- Valami, amit tud (mint egy jelszó vagy biztonsági kérdés) +- Valami, ami Öntől származik (mint egy ujjlenyomat vagy írisz-/arcszkenner) +- Valami, ami az Ön birtokában van (biztonsági kulcs vagy azonosítási alkalmazás a telefonján) + +A **kéttényezős azonosítás (2FA)** egy plusz _biztonsági tényezőt_ ad az online számlákhoz, így a jelszó (amit Ön tud) önmagában nem elég annak eléréséhez. Általában a második tényező egy véletlenszerű hatjegyű kód, ami egy **időzített egyszeri jelszó (TOTP)**, amit egy azonosítási alkalmazással ér el, mint a Google Authenticator vagy Authy. Ez az a tényező, ami az Ön birtokában van, mert a kódot adó mag az Ön eszközén található. + + +
    + Megjegyzés: az SMS-alapú 2FA azonosítás ki van téve a  + + SIM jacking + + támadásnak, ezért nem biztonságos. A legmagasabb fokú biztonság érdekében használjon olyan szolgáltatást, mint a {" "} + + Google Authenticator + +  vagy az Authy. +
    +
    + +#### Biztonsági kulcsok {#security-keys} + +Akik a 2FA következő szintjére akarnak lépni, azoknak a biztonsági kulcs használata ajánlott. A biztonsági kulcsok fizikai, hardveralapú hitelesítési eszközök, melyek az azonosítási alkalmazásokhoz hasonlóan működnek. A biztonsági kulcs használata a legbiztonságosabb mód a 2FA eléréséhez. A kulcsok nagyrésze a FIDO egyetemes második tényező (U2F) szabványt használja. [Ismerje meg a FIDO U2F-t](https://www.yubico.com/authentication-standards/fido-u2f/). + +Tudjon meg többet a 2FA-ról: + + + +### Böngészőbővítmények eltávolítása {#uninstall-browser-extensions} + +A böngészőbővítmények (mint a Chrome-bővítmények vagy Firefox kiegészítő modulok) hasznos funkciókkal egészítik ki a böngészőket és jobb felhasználói élményt nyújtanak, de ugyanakkor kockázattal is járnak. A legtöbb ilyen bővítmény kéri, hogy beolvashassa és megváltoztathassa az adatokat, így bármit meg tudnak tenni az eszközön. A Chrome bővítményei automatikusan frissülnek, ezért a korábban ártalmatlan kód később talán rosszindulatú részeket is tartalmazhat. A legtöbb böngészőbővítmény nem próbál meg adatot lopni, de attól még képes rá. + +#### Maradjon biztonságban: {#browser-extension-safety} + +- Csak megbízható forrásból telepítsen bővítményeket +- Szedje le azokat, amelyeket nem használja +- Telepítse a bővítményt lokálisan, így nem fog magától frissülni + +[Bővebben a böngészőbővítmények kockázatáról](https://www.kaspersky.co.uk/blog/browser-extensions-security/12750/) + + + +## Kriptobiztonság 101 {#crypto-security} + +### Növelje tudását {#level-up-your-knowledge} + +A legtipikusabb ok, amiért a kripto világában az emberek csalók áldozatai lesznek, az az ismeret és a működés megértésének hiánya. Például ha valaki nem érti, hogy az Ethereum-hálózat decentralizált és nincs senkinek sem a birtokában, akkor könnyedén elhiheti egy ügyfélszolgálati munkatársat megszemélyesítő csalónak, hogy visszaszerzi az elvesztett ETH a privát kulcsaiért cserébe. Az Ethereum működésének megértése megéri a befektetést. + + + Mi az Ethereum? + + + + Mi az ether? + + + +## Tárcabiztonság {#wallet-security} + +### Sose ossza meg privát kulcsait {#protect-private-keys} + +**Soha, semmilyen okból se ossza meg a privát kulcsait!** + +A tárca privát kulcsa az Ethereum-tárca jelszava. Ez az egyetlen dolog, aminek a hiányában valaki nem viszi el az összes eszközt a tárcájából, ha ismeri annak a címét! + + + Mi az az Ethereum tárca? + + +#### Sose készítsen képernyőképet a kulcsmondatról/privát kulcsokról {#screenshot-private-keys} + +A képernyőkép készítésével azt kockáztatja, hogy az szinkronizálódik a felhőbe és elérhetővé válik a támadók számára. A privát kulcsok megszerzése a felhőből egy tipikus támadási forma. + +### Használjon hardveres tárcát {#use-hardware-wallet} + +A hardveres tárca offline módon tárolja a privát kulcsokat. Ez a legbiztonságosabb tárca a privát kulcsok tárolására: a kulcs sosem kapcsolódik az internethez és teljesen helyben marad az eszközén. + +A privát kulcsok offline tartása komoly szinten csökkenti a támadás kockázatát, még ha egy támadó hozzá is fér a számítógépéhez. + +#### Próbálja ki a hardveres tárcát: {#try-hardware-wallet} + +- [Ledger](https://www.ledger.com/) +- [Trezor](https://trezor.io/) + +### Ellenőrizze kétszer a tranzakciókat küldés előtt {#double-check-transactions} + +A rossz tárcába küldött kripto egy tipikus hiba. **Az Ethereumon küldött tranzakció visszafordíthatatlan.** Hacsak nem ismeri a cím tulajdonosát és nem tudja meggyőzni arról, hogy visszaküldje, nincs igazán esélye visszaszerezni azt. + +Mindig győződjön meg arról, hogy cím pontosan egyezik a kívánt címmel, mielőtt elküldi a tranzakciót. Az okosszerződésekkel való interakciónál is mindig olvassa el a tranzakcióüzenetet, mielőtt aláírja azt. + +### Állítson be költségkeretet az okosszerződéshez {#spend-limits} + +Az okosszerződéseknél ne engedjen korlátlan költési keretet. A korlátlan költés megengedi az okosszerződésnek, hogy kiürítse az Ön tárcáját. Ehelyett állítsa be pontosan azt az összeget, ami a tranzakcióhoz szükséges. + +Számos Ethereum-tárca kínál védelmet keretek beállításával, hogy ne lehessen kiüríteni a tárcát. + +[Hogyan vonható vissza, hogy az okosszerződés hozzáférjen a kriptoeszközeihez](/guides/how-to-revoke-token-access/) + + + +## Gyakori csalások {#common-scams} + +A csalók folyamatosan keresik a lehetőséget, hogy elvegyék az Ön eszközeit. Nem lehet őket teljesen megállítani, de elérhetjük, hogy kevésbé hassanak ránk, ha ismerjük a trükkjeiket. Ezeknek a csalásoknak számos variációja van, de általánosságban egy mintát követnek. Emlékezzen rá: + +- mindig legyen szkeptikus +- senki sem ad Önnek ETH-t ingyen vagy olcsón +- senkinek se adja meg a privát kulcsait vagy a személyes információit + +### Ajándékozási csalás {#giveaway} + +Az egyik legtipikusabb csalás a kriptovalutákkal az ajándékozás. Számos formában előfordulhat, de a lényege az, hogy ha Ön ETH-t küld a megadott tárcacímre, akkor duplán kapja vissza az ETH-t. *Emiatt 2-t 1-ért csalásnak is nevezik.* + +Ez az ajánlat csak limitált időre szól, hogy ne gondolja túl a döntéshozást és a sürgetés érzését keltse. + +#### Közösségimédia-csalások {#social-media-hacks} + +Ennek nagy horderejű esete például 2020. júliusában volt, amikor híres emberek és szervezetek Twitterjét támadták meg. A támadó bitcoin-ajándékozást hirdetett ezeken a számlákon. Habár a megtévesztő üzeneteket gyorsan észrevették és törölték, a támadók még így is szereztek 11 bitcoint (ami 500 000 USD-nek felel meg a 2021. szeptemberi árfolyamon). + +![Csalás a Twitteren](./appleTwitterScam.png) + +#### Hírességek ajándékoznak {#celebrity-giveaway} + +A hírességek által kommunikált ajándékozás is tipikus. A csalók egy videóinterjút vagy konferenciabeszélgetést úgy tesznek fel a YouTube-ra, mintha élőben menne, és ennek részeként a híresség egy kriptovaluta-ajándékozást hirdet meg. + +Vitalik Buterint és a kriptóban érintett más személyeket (pl. Elon Musk vagy Charles Hoskinson) gyakran használnak így. Ez adja a csalás valódiságának látszatát (furcsa, de ha Vitalik mondja, akkor biztos úgy van!). + +**Az ajándékozások mindig csalások. Ha bármilyen pénzt küld ezekre a felhívásokra, azt elveszíti.** + +![Csalás a YouTube-on](./youtubeScam.png) + +### Támogatási csalások {#support-scams} + +A kriptovaluta egy viszonylag fiatal és félreértett technológia. Ezt használja ki az a csalás, amikor ügyfélszolgálatosnak adják ki magukat a népszerű tárcák, tőzsdék vagy blokkláncok kapcsán. + +Az interakciók többsége Discordon történik. A támogatást színlelő csalók ezeken a csatornákon keresik azokat, akiknek kérdésük van, majd privát üzenetet küldenek nekik, hogy felajánlják segítségüket. Ráveszik a felhasználót, hogy bízzon meg bennük, majd megszerzik a privát kulcsaikat vagy pénzt küldenek a saját tárcájukba. + +![Támogatást ajánló csalás a Discordon](./discordScam.png) + +Általános szabály, hogy senki sem kommunikál Önnel privát, nem hivatalos csatornákon. Ezeket tartsa észben, ha támogatásról van szó: + +- Sose adja meg a privát kulcsait, kulcsmondatát vagy jelszavait +- Sose engedje, hogy bárki távolról hozzáférjen a gépéhez +- Sose kommunikáljon senkivel a szervezet dedikált csatornáin kívül + + +
    + Legyen tudatában: hogy a támogatást ajánló csalók gyakran a Discordon jelennek meg, de bármilyen kommunikációs formában ott lehetnek, legyen az chat vagy email. +
    +
    + +### „ETH2” hamis token {#eth2-token-scam} + +[Az egyesítés (The Merge)](/roadmap/merge/) közeledtével a csalók kihasználták a zavart az „ETH2” kifejezés körül és próbálták rávenni a felhasználókat, hogy váltsák át az ETH-t „ETH2”-re. Nem létezik ETH2, és a Merge sem vezetett be semmilyen tokent. A Merge előtt és után pontosan ugyanaz az ETH létezik. **Az ETH-val kapcsolatban semmit se kellett tenni a felhasználóknak, amikor a rendszer proof-of-work helyett proof-of-stake mechanizmusra állt át**. + +A csalók ügyfélszolgálatosként jelennek meg, hogy rávegyék Önt, adja át az ETH-t és „ETH2”-t kap helyette. Nincs [hivatalos Ethereum-ügyfélszolgálat](/community/support/), és nincs új token. Sose ossza meg a tárcához kapcsolódó kulcsmondatot senkivel. + +_Megjegyzés: Vannak olyan származékos tokenek, amelyek letétbe helyezett ETH-t képviselnek (pl. rETH a Rocket Pooltól, stETH a Lidotól, ETH2 a Coinbase-től), de ezekre nem kell átállnia._ + +### Adathalász csalások {#phishing-scams} + +Az adathalász csalások is egyre gyakoribbak, hogy a csalók ellopják a tárcák tartalmát. + +Néhány ilyen e-mail arra kéri a felhasználót, hogy bizonyos hivatkozásra kattintva lépjen egy weboldalra, adja meg a kulcsmondatát, kérjen új jelszót vagy küldjön ETH-t. Mások olyan rosszindulatú programokat telepítenek a gépére, amivel a csalók hozzáférnek a fájljaihoz. + +Ha egy ismeretlen küldőtől kap üzenetet, akkor: + +- Sose nyisson meg hivatkozást vagy csatolmányt ismeretlen feladótól +- Sose árulja el személyes adatait vagy jelszavait senkinek +- Törölje az ismeretlen feladóktól érkező e-maileket + +[Bővebben az adathalász csalások elkerüléséről](https://support.mycrypto.com/staying-safe/mycrypto-protips-how-not-to-get-scammed-during-ico) + +### Kriptobrókeres csalás {#broker-scams} + +A kriptobrókeres csalók szakembereknek adják ki magukat, akik elkérik az Ön pénzét, hogy befektessék az Ön nevében. Ennek részeként nem reális nyereséget kínálnak. Miután megkapták az összeget, lehetséges, hogy még többet kérnek valamilyen különleges lehetőségre, vagy akár el is tűnnek azonnal. + +Ezek a csalók hamis profilokat használnak a YouTube-on, ahol látszólag semleges beszélgetéseket folytatnak. Ezek a beszélgetések nagyon jó értékeléssel rendelkeznek, de ezt mind programok (bot) szavazzák meg nekik, hogy így hitelesebbnek tűnjenek. + +**Sose bízzon meg idegeneket az interneten, hogy befektessék a pénzét. El fogja veszíteni a kriptóját.** + +![Brókeres csalás a YouTube-on](./brokerScam.png) + +### Kriptobányászati csalások {#mining-pool-scams} + +2022. szeptembere óta nincs az Ethereumon bányászás. A csalások mégis tovább folytatódnak. A kriptobányászási csalásoknál arra próbálják rávenni az embereket, hogy csatlakozzanak az Ethereum-bányászathoz, ami nagy jövedelmeket hoz. A csaló kapcsolatban marad Önnel egész végig. Valójában meggyőzi Önt arról, hogy ha csatlakozik a bányászászhoz, akkor az ETH egyenlege még több ETH-t hoz létre. Az Ön kriptovalutája tényleg mutathat kis mértékű növekedést. De ez csak azért van, hogy még többet fektessen be. Végül az összes pénzeszközét egy ismeretlen címre küldik, és a csaló eltűnik, vagy akár kapcsolatban is maradhat áldozatával. + +Tartózkodjon azoktól, akik a közösségi médiában be akarják Önt vonni a bányászatba. Ha elveszíti a kriptóját, az többé nem kerül vissza. + +Ne feledje: + +- Legyen óvatos, ha bárki még több pénzt akar csinálni a kriptójából +- Nézze meg a lehetőségeket a letétbe helyezés, likviditási alapok és más befektetések kapcsán +- Az ilyen ajánlatok szinte sose valósak. Ha azok lennének, akkor mindenki ezt követné és ezért már hallott volna róla. + +[Egy ember 200 000 USD-t vesztett egy kriptobányászási csalásban](https://www.reddit.com/r/CoinBase/comments/r0qe0e/scam_or_possible_incredible_payout/) + +### Tokenkiosztási (airdrop) csalások {#airdrop-scams} + +A tokenkiosztási (airdrop) csalások során egy hamis projekt eszközt (NFT, token) dob az Ön tárcájába és egy hamis weboldalra küldi, hogy kérvényezze azokat. Így be kell jelentkeznie az Ethereum-tárcájába és jóváhagynia a tranzakciót. Ez a tranzakció veszélybe sodorja a számláját, mivel a nyilvános és privát kulcsait átadja a csalónak. Az is lehet, hogy egy olyan tranzakciót ír alá, ami a csalónak küldi az Ön pénzeszközeit. + +[Bővebben a tokenkiosztási (airdrop) csalásokról](https://www.youtube.com/watch?v=LLL_nQp1lGk) + + + +## További olvasnivaló {#further-reading} + +### Webbiztonság {#reading-web-security} + +- [Ezért ne SMS-t használjon a kéttényezős azonosításhoz](https://www.theverge.com/2017/9/18/16328172/sms-two-factor-authentication-hack-password-bitcoin) – _The Verge_ +- [3 millió eszközt érintenek a rosszindulatú Chrome- és Edge-bővítmények](https://arstechnica.com/information-technology/2020/12/up-to-3-million-devices-infected-by-malware-laced-chrome-and-edge-add-ons/) – _Dan Goodin_ +- [Hogyan hozzon létre erős jelszót — amit nem felejt el](https://www.avg.com/en/signal/how-to-create-a-strong-password-that-you-wont-forget) – _AVG_ +- [Mi az a biztonsági kulcs?](https://help.coinbase.com/en/coinbase/getting-started/verify-my-account/security-keys-faq) – _Coinbase_ + +### Kriptobiztonság {#reading-crypto-security} + +- [Védje magát és a pénzeszközeit](https://support.mycrypto.com/staying-safe/protecting-yourself-and-your-funds) – _MyCrypto_ +- [4 mód, hogy biztonságban maradjon a kripto világában](https://www.coindesk.com/tech/2021/04/20/4-ways-to-stay-safe-in-crypto/) – _CoinDesk_ +- [Biztonsági útmutató kezdőknek és haladóknak](https://medium.com/mycrypto/mycryptos-security-guide-for-dummies-and-smart-people-too-ab178299c82e) – _MyCrypto_ +- [Kriptobiztonság: jelszavak és azonosítás](https://www.youtube.com/watch?v=m8jlnZuV1i4) – _Andreas M. Antonopoulos_ + +### Csalásfelismerés {#reading-scam-education} + +- [Útmutató: hogyan azonosítsa be a hamis tokeneket](/guides/how-to-id-scam-tokens/) +- [Maradjon biztonságban: általános csalások](https://support.mycrypto.com/staying-safe/common-scams) – _MyCrypto_ +- [A csalások elkerülése](https://bitcoin.org/en/scams) – _Bitcoin.org_ +- [Twitter-beszélgetés a tipikus kripto-adathalász e-mailekről és üzenetekről](https://twitter.com/tayvano_/status/1516225457640787969) – _Taylor Monahan_ + + diff --git a/src/content/translations/hu/smart-contracts/index.md b/src/content/translations/hu/smart-contracts/index.md new file mode 100644 index 00000000000..688d8ad3c00 --- /dev/null +++ b/src/content/translations/hu/smart-contracts/index.md @@ -0,0 +1,84 @@ +--- +title: Okosszerződések +description: Egy nem technikai bevezetés az okosszerződésekbe +lang: hu +--- + +# Bevezetés az okosszerződésekbe {#introduction-to-smart-contracts} + +Az okosszerződések az Ethereum alkalmazási rétegének alapvető építőkockái. Ezek olyan számítógépes programok, melyek a blokkláncon találhatók, feltételeket követve működnek (ha ez van, akkor ezt csinálom), és garantáltan a programkódja által definiált szabályok alapján végez műveleteket. E szabályokat nem lehet megváltoztatni, miután a szerződés életbe lépett. + +Az okosszerződés kifejezést Nick Szabo alkotta meg. 1994-ben írt egy cikket a [a koncepció lényegéről](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html), majd 1996-ban tovább taglalta, hogy [mire képes az okosszerződés](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html). + +Szabo egy olyan digitális piacteret képzelt el, ahol automatikus, kriptográfiailag biztosított folyamatok lehetővé teszik tranzakciók és üzleti funkciók működését megbízott közvetítők nélkül. Az okosszerződések ezt a víziót valósítják meg az Ethereumon. + +### Bizalom a hagyományos szerződésekben {#trust-and-contracts} + +A hagyományos szerződéssel az a legnagyobb gond, hogy meg kell bízni a résztvevőkben, hogy végrehajtják a szerződés tartalmát. + +Következzen egy példa: + +Alice és Bob kerékpáron versenyeznek. Tegyük fel, Alice arra fogad Bobbal 10 $-ban, hogy ő maga fog nyerni. Bob magabiztos a saját nyerését illetően, ezért belemegy a fogadásba. Végül Alice sokkal hamarabb ér célba Bobhoz képest, egyértelműen ő a győztes. Bob azonban nem fizeti ki a fogadás összegét, mert szerinte Alice csalt. + +Ez az egyszerű példa a „nem okos” megegyezések problémáját illusztrálja. Még a megegyezés feltételei teljesülnek is (tehát Ön a verseny győztese), még mindig meg kell bíznia egy másik személyben, hogy teljesítse a megállapodást (azaz kifizesse a fogadás összegét). + +### Egy digitális ételautomata {#vending-machine} + +Az okosszerződésre egy egyszerű metafora lehet az ételautomata működése, melynél bizonyos beviteli értékek előre meghatározott eredménnyel járnak. + +- Ön kiválaszt egy terméket +- Az ételautomata kiírja az árat +- Ön kifizeti az árát +- Az ételautomata ellenőrzi, hogy a megfelelő összeget kapta meg +- Majd az automata kiadja a kért árut + +Az ételautomata csak az Ön által kért terméket adja oda, miután a feltételek teljesültek. Ha Ön nem választ ki terméket vagy nem dob be elég pénzt, akkor az automata nem adja ki a terméket. + +### Automatikus végrehajtás {#automation} + +Az okosszerződés legfontosabb előnye, hogy bizonyos feltételek fennállásakor egyértelműen végrehajt egy meghatározott programkódot. Nem kell várni az emberi beavatkozásra, hogy értelmezze vagy kitalálja az eredményt. Így nincs szükség megbízott közvetítőkre. + +Például írhat egy olyan okosszerződést, mely letétben tart pénzeszközt egy gyermek számára, melyet egy bizonyos dátum után kaphat meg. Ha hamarabb akarná megkapni, akkor az okosszerződés nem hajtaná azt végre. Vagy olyan okosszerződést is írhat, mely automatikusan biztosítja egy autó forgalmi engedélyének digitális verzióját, amint Ön kifizeti azt a kereskedőnek. + +### Előre meghatározott kimenetel {#predictability} + +A hagyományos szerződések nem egyértelműek, mert emberek értelmezik és hajtják végre azokat. Például két bíró teljesen másképpen is értelmezhet egy szerződést, mely eltérő döntésekhez és egyenlőtlen kimenetelhez vezethet. Az okosszerződések kizárják ezt a lehetőséget. Ehelyett az okosszerződések a szerződés kódjában megadott feltétek mentén pontosan végrehajtásra kerülnek. A pontosság azt is jelenti, hogy ugyanolyan körülmények között az adott okosszerződés ugyanazt az eredményt adja. + +### Nyilvános dokumentálás {#public-record} + +Az okosszerződéseket könnyedén lehet auditálni és követni. Mivel az Ethereum okosszerződései egy nyilvános blokkláncon találhatók, ezért bárki azonnal megnézheti az eszközök mozgását és a kapcsolódó információkat. Például Ön megnézheti, hogy valaki pénzt utalt az Ön címére. + +### Adatvédelem {#privacy-protection} + +Az okosszerződések védik az Ön adatait. Mivel az Ethereum egy olyan hálózat, ahol a tranzakciók nem közvetlen módon köthetők az identitáshoz (nyilvánosan egy egyedi kriptográfiai címhez tartoznak), így Ön is megőrizheti valódi kilétét mások előtt. + +### Látható feltételek {#visible-terms} + +Végül a hagyományos szerződéshez hasonlóan Ön ellenőrizheti az okosszerződés tartalmát, mielőtt aláírná azt (vagy valamilyen interakcióba lépne azzal). Az okosszerződés transzparens volta biztosítja, hogy bárki megvizsgálhatja annak részleteit. + +## Az okosszerződés alkalmazási területei {#use-cases} + +Az okosszerződések lényegében mindent végre tudnak hajtani, amit egy számítógépes program tud. + +Többek között képesek számításokat végezni, valutát létrehozni, adatot tárolni, NFT-ket kreálni (minting), üzeneteket küldeni és még ábrát vagy grafikont is tudnak készíteni. Következzen néhány népszerű példa a való életből: + +- [Stablecoin-ok](/stablecoins/) +- [Egyedi digitális eszközök létrehozása és szétosztása](/nft/) +- [Automatikus, nyílt valutaátváltás](/get-eth/#dex) +- [Decentralizált játékok](/dapps/?category=gaming) +- [Biztosítási szerződés, mely automatikus kifizetést alkalmaz](https://etherisc.com/) +- [Szabvány, melyet alapul véve az emberek egyéni, interoperábilis valutákat hoznak létre](/developers/docs/standards/tokens/) + +## Ön inkább vizuális típus? {#visual-learner} + +Nézze meg a videót, melyben a Finematics elmagyarázza az okosszerződések lényegét: + + + +## További olvasnivaló {#further-reading} + +- [Hogyan fogják az okosszerződések megváltoztatni a világot](https://www.youtube.com/watch?v=pA6CGuXEKtQ) +- [Okosszerződések: a blokklánc-technológia, mely leváltja az ügyvédeket](https://blockgeeks.com/guides/smart-contracts/) +- [Okosszerződések fejlesztőknek](/developers/docs/smart-contracts/) +- [Tanulja meg, hogyan kell okosszerződéseket írni](/developers/learning-tools/) +- [Ismerje meg Ethereumot – Mi az az okosszerződés?](https://github.com/ethereumbook/ethereumbook/blob/develop/07smart-contracts-solidity.asciidoc#what-is-a-smart-contract) diff --git a/src/content/translations/hu/social-networks/index.md b/src/content/translations/hu/social-networks/index.md new file mode 100644 index 00000000000..905af66e9da --- /dev/null +++ b/src/content/translations/hu/social-networks/index.md @@ -0,0 +1,121 @@ +--- +title: Nem központosított közösségi hálózatok +description: A decentralizált közösségi hálózatok áttekintése az Ethereumon +lang: hu +template: use-cases +emoji: ":mega:" +sidebarDepth: 2 +image: ../../../../assets/ethereum-learn.png +summaryPoint1: Blokkláncalapú platformok a közösségi kapcsolódás, tartalom-létrehozás és -terjesztés céljából. +summaryPoint2: A decentralizált közösségimédia-hálózatok megvédik a felhasználók privát adatait és növelik az adatbiztonságot. +summaryPoint3: A tokenek és NFT-k új lehetősége adnak a tartalom fizetőeszközzé alakításához. +--- + +A közösségi hálózatok komoly szerepet töltenek be a napi kommunikációban és kapcsolódásban. Ugyanakkor ezen platformok centralizált irányítása számos problémát teremtett: adatlopás, szerverleállás, kizárás a platformról, cenzúra és a magán jelleg megsértése csak néhány kompromisszum, amit a közösségi média gyakran elszenved. E problémák megoldása érdekében a fejlesztők az Ethereumon építenek közösségi hálózatokat. A decentralizált közösségi hálózatok a hagyományos platformok számtalan problémájára megoldást nyújtanak, ás javítják a felhasználói élményt is. + +## Mik azok a decentralizált közösségi hálózatok? {#what-are-decentralized-social-networks} + +A decentralizált közösségi hálózatok olyan blokkláncalapú platformok, melyeken a felhasználók kommunikálnak egymással, illetve tartalmat publikálnak és terjesztenek. Mivel ezek az alkalmazások a blokkláncon működnek, ezért képesek decentralizáltan üzemelni, ellenállnak a cenzúrának és a jogtalan kontrollnak. + +Számos decentralizált közösségi hálózat létezik az olyan közösségimédia-szolgáltatások alternatívájaként, mint a Facebook, LinkedIn, Twitter és Medium. Ugyanakkor a blokkláncon működtetett közösségi hálózatok olyan jellemzőkkel is bírnak, melyek a hagyományos platformok fölé helyezik őket. + +### Hogyan működnek a decentralizált közösségi hálózatok? {#decentralized-social-networks-overview} + +A decentralizált közösségi hálózatok valójában [decentralizált alkalmazások (dapp)](/dapps/), melyeket a blokkláncon létrehozott [okosszerződések](/developers/docs/smart-contracts/) működtetnek. A szerződés programkódja adja ezen alkalmazások hátterét és meghatározza azok üzleti logikáját. + +A hagyományos közösségimédia-platformok adatbázisokon alapulnak, melyek tárolják a felhasználói információkat, a programkódot és egyéb adatokat. Ez azonban bármilyen leállás esetén egy sebezhető pontot jelent és komoly kockázatot hordoz magában. Például előfordult már, hogy a Facebook szerverei [több órára leálltak](https://www.npr.org/2021/10/05/1043211171/facebook-instagram-whatsapp-outage-business-impact), ezzel elvágva a felhasználókat a platformtól. + +A decentralizált közösségi hálózatok egy peer-to-peer (P2P) hálózaton működnek, mely ezernyi csomópontot (node) tartalmaz szerte az egész világon. Ha néhány csomópont le is áll, a hálózat zavartalanul működik tovább, így az alkalmazásokat nem érintik a leállások és kimaradások. + +A decentralizált tárhelyek használatával, mint amilyen az [InterPlanetary File System (IPFS)](https://ipfs.io/), az Ethereumra épített decentralizált közösségi hálózatok képesek megvédeni a felhasználók adatait azok kihasználása és rosszindulatú felhasználása ellen. Senki sem tudja eladni a felhasználók személyes adatait a reklámcégeknek, és a hackerek sem tudják ellopni a bizalmas információkat. + +Számos blokkláncalapú közösségi platform rendelkezik saját tokenekkel, hogy a reklámbevétel helyett ezzel biztosítsa a pénzforrások létrehozását. A felhasználók megvehetik ezeket a tokeneket, hogy bizonyos funkciókat használhassanak, vásárolhassanak az alkalmazáson belül, vagy akár ezzel díjazzák a kedvenc tartalomkészítőiket. + +## A decentralizált közösségi hálózatok előnyei {#benefits} + +1. A decentralizált közösségi hálózatok ellenállnak a cenzúrának és bárki számára elérhetők. Tehát a felhasználókat nem lehet letiltani, kizárni a platformról vagy önkényesen korlátozni. + +2. A decentralizált közösségi hálózatok nyílt forráskódú elképzelésekre épülnek, az alkalmazások programkódját bárki megvizsgálhatja. A hagyományos közösségi médiára jellemző, nem átlátható algoritmusokat kizárva a blokkláncalapú közösségi hálózatok képesek összehangolni a felhasználók igényeit és a platform működtetőit. + +3. A decentralizált közösségi hálózatokban nincs szükség közvetítőre. A tartalomkészítők közvetlen tulajdonjoggal bírnak a tartalom felett, és közvetlenül kapcsolódnak a követőkkel, rajongókkal, vevőkkel és más résztvevőkkel, csupán egy okosszerződés van közöttük. + +4. Mivel a decentralizált alkalmazások (dapp) az Ethereum hálózatán működnek, melyet a csomópontok egy globális, peer-to-peer hálózata tart fenn, így a decentralizált közösségi hálózatok kevésbé vannak kitéve a szerverleállásnak vagy bármilyen kiesésnek. + +5. A decentralizált közösségi platformok egy fejlett bevételszerzési keretrendszert kínálnak a tartalomkészítőknek a nem helyettesíthető tokenek (NFT), az alkalmazáson belüli kriptofizetés és más eszközök révén. + +6. A decentralizált közösségi hálózatok magas fokú adatbiztonságot és anonimitást kínálnak a felhasználóknak. Például egy személy bejelentkezhet az Ethereumon alapuló közösségi hálózatra az ENS-profilja vagy a tárcája révén – anélkül, hogy bármilyen személyazonosításra alkalmas információt (PII) megosztana, mint a neve, e-mail-címe stb. + +7. A decentralizált közösségi hálózatok decentralizált adattároláson alapulnak, nem centralizált adatbázisokon, így jobban meg tudják védeni a felhasználók adatait. + +## A decentralizált közösségi hálózatok az Ethereumon {#ethereum-social-networks} + +Az Ethereum-hálózat lett a decentralizált közösségi média fejlesztőinek kedvelt helye, mivel népszerű tokenekkel (ERC-20/ERC-721) és masszív felhasználói bázissal rendelkezik. Néhány Ethereumon alapuló közösségi hálózat: + +### Peepeth {#peepeth} + +A [Peepeth](https://peepeth.com/) egy mikroblogoló, a Twitterhez hasonló platform. Az Ethereum blokkláncon működik, és IPFS-t használ a felhasználói adatok tárolására. + +A felhasználók rövid üzeneteket tudnak küldeni, amit „peep”-nek neveznek, és nem lehet törölni vagy módosítani azokat. Az alkalmazáson belül lehetséges borravalót gyűjteni vagy adni ether (ETH) formájában. + +### Mirror {#mirror} + +A [Mirror](https://mirror.xyz/) egy web3-alapú, decentralizált és a felhasználók által üzemeltetett íróplatform. A felhasználók ingyen olvashatnak és írhatnak azáltal, hogy a saját tárcáikkal kapcsolódnak. Emellett gyűjthetnek írásokat és feliratkozhatnak a kedvenc íróikra is. + +Az itt publikált írások állandóan elérhetők az Arweave révén, ami egy decentralizált tárhely, és gyűjthető [NFT (nem helyettesíthető token)](/nft/) készíthető belőlük, más néven szöveg NFT. A szöveg NFT-t az írók teljesen ingyen hozhatják létre, a gyűjtés pedig az Ethereumra épülő második blokkláncrétegen (L2) történik, így a tranzakciók olcsók, gyorsak és környezetbarátak. + +### MINDS {#minds} + +A [MINDS](https://www.minds.com/) az egyik legnépszerűbb decentralizált közösségi hálózat. A Facebookhoz hasonlóan működik, és milliónyi felhasználója van. + +A felhasználók a platform saját ERC-20 tokenjével $MIND fizetnek a dolgokért. A felhasználók szerezhetnek azáltal is $MIND tokent, hogy népszerű tartalmat publikálnak, hozzájárulnak az ökoszisztémához és ajánlják a platformot másoknak. + +## Web2 közösségi hálózatok az Ethereumon {#web2-social-networks-and-ethereum} + +Nem csak a [web3](/web3/) közösségi platformok használják a blokklánc-technológiát a közösségi médiához. Számos centralizált platform is integrálni szeretné az Ethereumot a saját infrastruktúrájába: + +### Reddit {#reddit} + +A Reddit olyan [közösségi pontokat](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users) használ, melyek [ERC-20 tokenek](/developers/docs/standards/tokens/erc-20/), és a felhasználók a minőségi tartalmak publikálására, illetve az online közösséghez (subreddit) való hozzájárulásra kapnak belőle. Ezeket a tokeneket a felhasználó egy subreddit fórumon belül be tudja váltani, hogy [különleges jogokat vagy bevételt szerezzen](https://www.reddit.com/community-points/). A Reddit az Arbitrummal működik együtt, amely egy olyan [második blokkláncréteg (L2)](/layer-2/), ami rollup segítségével teszi skálázhatóvá az Ethereum-tranzakciókat. + +A program már elérhető, az r/CryptoCurrency subreddit [a „Moons”-nak nevezett közösségi pontokkal üzemel](https://www.reddit.com/r/CryptoCurrency/wiki/moons_wiki). A hivatalos leírás szerint a Moons „a posztok készítőit, kommentálóit és a moderátorokat díjazza a subreddithez való hozzájárulásukért”. Mivel ezek a tokenek a blokkláncon vannak (a felhasználók tárcákba kapják azokat), ezért függetlenek a Reddittől, és nem lehet azokat elvenni. + +Miután a bétatesztelés lezárult a Rinkeby-teszthálózaton, a Reddit közösségi pontok elérhetővé válnak az [Arbitrum Nova](https://nova.arbitrum.io/) blokkláncon, ami a [melléklánc](/developers/docs/scaling/sidechains/) és az [optimista rollup](/developers/docs/scaling/optimistic-rollups/) jellemzőit kombinálja. A felhasználók nemcsak különleges funkciókra használhatják pontjaikat, hanem eladhatják azokat hagyományos valutáért is a tőzsdéken. Emellett az adott felhasználó közösségi pontjainak összege meghatározza, hogy a közösségen belül milyen mértékben vehetnek részt a döntésekben. + +### Twitter {#twitter} + +2021. januárjában elindult a Twitter Blue, amely [ támogatja az NFT-használatot](https://mashable.com/article/twitter-blue-nft-profile-picture), így a felhasználók hozzákapcsolhatják a tárcáikat és profilképként választhatnak onnan NFT-t. Ezt követően a közösségi média tulajdonos vállalata [bejelentette tervét](https://www.theverge.com/2021/8/16/22627435/twitter-bluesky-lead-jay-graber-decentralized-social-web), hogy a jövőben decentralizált közösségi hálózatot hoz létre. + +### Instagram {#instagram} + +2022. májusában az [Instagram bejelentette, hogy támogatja az NFT-k használatát](https://about.instagram.com/blog/announcements/instagram-digital-collectibles) az Ethereum- és a Polygon-hálózatokról. A felhasználók közvetlenül az Instagramra, az Ethereum-tárcájukhoz kapcsolódva posztolhatják az NFT-ket. + +## A decentralizált közösségi hálózatok használata {#use-decentralized-social-networks} + +- **[Status.im](https://status.im/)** – _A Status egy biztonságos üzenetküldő alkalmazás, mely nyílt forráskódú, peer-to-peer protokollt használ, és elejétől a végéig titkosítva van, hogy megvédje az üzeneteket._ +- **[Mirror.xyz](https://mirror.xyz/)** – _A Mirror egy decentralizált, felhasználók által működtetett publikáló platform az Ethereumon, hogy a felhasználók finanszírozást gyűjtsenek az ötleteiknek, bevételt kapjanak a tartalom után és értékes közösségeket építsenek._ +- **[Lens Protocol](https://lens.xyz/)** – _A Lens Protocol egy decentralizált közösségi gráf, ahol a tartalomkészítők tulajdonolják az általuk létrehozott tartalmat a decentralizált internet teljes hosszában._ +- **[Farcaster](https://farcaster.xyz/)** – _A Farcaster egy kellően decentralizált közösségi hálózat. Egy nyitott protokoll, amely több klienst is támogat, mint például az e-mail-funkció._ + +## További olvasnivaló {#further-reading} + +### Cikkek {#articles} + +- [A decentralizált közösségi média: útmutató a web3 közösségi alkalmazásokhoz](https://www.coinbase.com/blog/decentralizing-social-media-a-guide-to-the-web3-social-stack) - _Coinbase Ventures_ +- [A közösségi hálózatok világa a következő nagy decentralizálási lehetőség](https://www.coindesk.com/tech/2021/01/22/social-networks-are-the-next-big-decentralization-opportunity/) — _Ben Goertzel_ +- [A web3 megtartja ígéretét a decentralizált, közösség által működtetett közösségi hálózatokról](https://venturebeat.com/2022/02/26/web3-holds-the-promise-of-decentralized-community-powered-social-networks/) — _Sumit Ghosh_ +- [A blokklánc közösségi média alkalmazásainak áttekintése](https://www.gemini.com/cryptopedia/blockchain-social-media-decentralized-social-media) — _Gemini Cryptopedia_ +- [Hogyan tudja a blokklánc megoldani a közösségi médiához kapcsolódó adatvédelmet](https://www.investopedia.com/news/ethereum-blockchain-social-media-privacy-problem-linkedin-indorse/) — _Prableen Bajpai_ +- [A közösségi média hálózatok megérkeztek a blokkláncra](https://businesstechguides.co/what-are-decentralized-social-networks) — _Emmanuel Awosika_ +- [Elégséges decentralizáció a közösségi hálózatok számára](https://www.varunsrinivasan.com/2022/01/11/sufficient-decentralization-for-social-networks) — _Varun Srinivasan_ + +### Videók {#videos} + +- [A decentralizált közösségi média bemutatása](https://www.youtube.com/watch?v=UdT2lpcGvcQ) — _Coinmarketcap_ +- [DeSo a blokklánc decentralizálja a közösségi médiát](https://www.youtube.com/watch?v=SG2HUiVp0rE) — _Bloomberg Technology_ +- [A decentralizált közösségi média jövője – Balaji Srinivasan, Vitalik Buterin, Juan Benet](https://www.youtube.com/watch?v=DTxE9KV3YrE) — _ETHGlobal_ + +### Közösségek {#communities} + +- [Status Discord-szerver](https://discord.com/invite/3Exux7Y) +- [Mirror Discord-szerver](https://discord.com/invite/txuCHcE8wV) +- [r/CryptoCurrency subreddit](https://www.reddit.com/r/CryptoCurrency/) diff --git a/src/content/translations/hu/staking/dvt/index.md b/src/content/translations/hu/staking/dvt/index.md new file mode 100644 index 00000000000..4d3b8288a6d --- /dev/null +++ b/src/content/translations/hu/staking/dvt/index.md @@ -0,0 +1,91 @@ +--- +title: Elosztott validátor technológia +description: Az elosztott validátor technológia lehetővé teszi, hogy több entitás elosztva üzemeltessen egy Ethereum-validátort. +lang: hu +--- + +# Elosztott validátor technológia {#distributed-validator-technology} + +Az elosztott validátor technológia (DVT) a validátor biztonságát akarja megerősíteni, ezért több entitásra osztja fel a kulcsok kezelését és az aláírási jogosultságokat, így kizárja az egyetlen meghibásodási pont kockázatát, a rugalmasság pedig nő. + +Ennek érdekében **felosztja a validátort biztosító privát kulcsot** **több számítógépre**, melyeket klaszterbe rendez. Mivel a kulcs nem egyben van letárolva egyetlen gépen, ezért a támadóknak igen nehéz megszerezni azt. Még néhány csomópont is leállhat, a szükséges aláírás akkor is megtörténik a klaszterekben lévő gépek kisebb halmaza által. Ez lecsökkenti az egyetlen meghibásodási pont kockázatát a hálózatban, a validátorkészlet pedig megbízhatóbbá válik. + +![Az ábra azt mutatja, hogy a validátorkulcsot szétosztják kulcsrészekre és több csomópontnak elosztják, melyek különféle komponensekből állnak.](./dvt-cluster.png) + +## Miért van szükség az elosztott validátor technológiára (DVT)? {#why-do-we-need-dvt} + +### Biztonság {#security} + +A validátorok két nyilvános privát kulcspárt hoznak létre: a validátorkulcsot a konszenzusban való részvételhez, a visszavonási kulcsot ahhoz, hogy elérjék a pénzeszközöket. Miközben a visszavonási kulcsot tarthatja a validátor olyan helyen is, ahol lassabban éri el (cold storage), addig a privát kulcsnak folyamatosan online kell lennie (24/7). Ha a validátor privát kulcsa veszélybe kerül, akkor egy támadó átveheti felette a kontrollt, ami súlyos büntetéssel egybekötött kizáráshoz (slashing), illetve a letétbe helyezett ETH elvesztéséhez vezethet. A DVT segít ezt a kockázatot csökkenteni. A működése: + +A DVT használatával a letétbe helyező (staker) részt vehet a letétbe helyezésben, miközben a validátor privát kulcsát cold storage-ban tartja. Ehhez az eredeti, teljes validátorkulcsot titkosítják és azután darabokra osztják. A kulcs darabjai online vannak és több csomópont megkapja azokat, így a validátor működése elosztódik ezek között. Ez azért lehetséges, mert az Ethereum-validátorok BLS aláírást használnak, ami összeadódik, tehát a teljes kulcsot bármikor összerakják a részekből. Tehát a letétbe helyező a teljes, eredeti validátorkulcsát biztonságban tarthatja offline. + +### Nincs egyetlen meghibásodási pont sem {#no-single-point-of-failure} + +Amikor a validátor több operátorra és több gépre van elosztva, akkor lesz offline, ha az egyedi hardverek vagy szoftverek leállnak. A leállás kockázatát azzal is lehet csökkenteni, hogy a klaszterbe tartozó csatlakozási pontoknak eltérő hardver- és szoftverkonfigurációkat állítanak össze. A rugalmasság nem kézzelfogható az egyetlen csatlakozási pontot használó validátorkonfigurációnál – ez a DVT megoldásból származik. + +Ha a klaszter egyik gépének valamelyik komponense leáll (például a klaszter négy operátorából az egyik olyan klienst használ, amelyen hiba van), akkor a többiek biztosítják, hogy a validátor ugyanúgy működjön tovább. + +### Decentralizáció {#decentralization} + +Az Ethereum számára az az ideális szcenárió, ha annyi függetlenül üzemeltetett validátora van, amennyi csak lehetséges. Ugyanakkor néhány letétszolgáltató igen népszerű lett és a teljes letétbe helyezett ETH lényeges részét tudhatja magáénak a hálózaton. A DVT révén lehetséges ilyen operátorok működése, miközben a letétbe helyezett ETH megőrzi decentralizáltságát. Mivel a validátor kulcsai el vannak osztva több számítógépen, és a visszaéléshez sokkal komolyabb összejátszásra lenne szükség. + +A DVT nélkül a letétszolgáltatóknak könnyebb csak egy-két klienskonfigurációt támogatni az összes validátorra, ami megnöveli a kliensből eredő hibák hatását. A DVT-vel ez a kockázat elosztható több klienskonfigurációra és különböző hardverekre, így sokrétűség rugalmasságot teremt. + +**A DVT a következő előnyökkel jár az Ethereum számára:** + +1. **Decentralizálja** az Ethereum proof-of-stake (PoS) konszenzusát +2. Biztosítja a hálózat **aktív, élő állapotát (liveness)** +3. A validátor **toleránssá válik a hibákra** +4. **Minimalizált bizalomigény** jellemzi a validátor működését +5. **Minimalizált büntetéssel egybekötött kizárás (slashing)** és leállási kockázat +6. **Javítja a diverzitást** (kliens, adatközpont, hely, szabályozás stb.) +7. **Nagyobb biztonság** a validátorkulcs kezelését illetően + +## Hogyan működik a DVT? {#how-does-dvt-work} + +A DVT megoldás a következő komponensekből áll: + +- **[Shamir-féle titokmegosztás ](https://medium.com/@keylesstech/a-beginners-guide-to-shamir-s-secret-sharing-e864efbf3648)** – A validátorok [BLS-kulcsokat](https://en.wikipedia.org/wiki/BLS_digital_signature) használnak. Az egyéni BLS-kulcsrészeket össze lehet kapcsolni egy aggregált kulccsá (aláírás). A DVT esetén a validátor privát kulcsa a klaszter operátorainak összekapcsolt BLS-aláírása. +- **[Aláírási küszöb séma](https://medium.com/nethermind-eth/threshold-signature-schemes-36f40bc42aca)** – Meghatározza az egyéni kulcsrészek számát, melyekkel az aláírás meg tud történni, pl. 4-ből 3. +- **[Elosztottkulcs-generálás (DKG)](https://medium.com/toruslabs/what-distributed-key-generation-is-866adc79620)** – Egy kriptográfiai folyamat, ami létrehozza a kulcsrészeket és elosztja egy létező vagy új validátorkulcs részeit a klaszterben található csomópontoknak. +- **[Több résztvevős számítás (MPC)](https://messari.io/report/applying-multiparty-computation-to-the-world-of-blockchains)** – A teljes validátorkulcs titokban készül el a több résztvevős számítás révén. Egyetlen operátor sem ismeri a teljes kulcsot, ők csak a saját részüket ismerik. +- **Konszenzusprotokoll** – A konszenzusprotokoll kiválaszt egy csomópontot, hogy az javasoljon blokkot. Az megosztja a blokkot a klaszter többi csomópontjával, amelyek hozzáteszik a kulcsrészeiket az aggregált aláíráshoz. Amikor a kellő mennyiségű kulcsrészlet összeáll, megtörténhet a blokk előterjesztése az Ethereumon. + +Az elosztott validátorok ellenállóbbak a hibákkal szemben, és akkor is képesek működni, ha az egyéni csomópontok közül néhány leáll. A klaszter tehát ellenálló, még ha a benne lévő csomópontokról ki is derül, hogy ártalmasak vagy lusták. + +## A DVT alkalmazási területei {#dvt-use-cases} + +A DVT jelentős hatást gyakorol a kiterjedtebb letétszolgáltató iparágban: + +### Önálló letétesek {#solo-stakers} + +A DVT lehetővé teszi a nem felügyelt letétbe helyezést is, mivel a validátorkulcsot távoli csomópontok között is el lehet osztani, miközben a teljes kulcsot offline tárolják. Tehát az otthoni letéteseknek nem feltétlenül kell, hogy hardverre költsenek, mivel a kulcsrészek elosztása megerősítheti őket a lehetséges támadások ellen. + +### Staking as a service (SaaS) {#saas} + +Az operátorok (mint letéti alapok és intézményi letétesek), akik sok validátort kezelnek, a DVT révén csökkenthetik kockázatukat. Az infrastruktúra elosztásával a működésükhöz redundanciát (extra kapacitást) tudnak adni és diverzifikálják a hardvertípusok használatát is. + +A DVT megosztja a kulcskezelés felelősségét számod csomóponton keresztül, így az üzemeltetési költség is megosztható. A DVT csökkenti a letétszolgáltatók üzemeltetési kockázatát és biztosítási költségeit. + +### Staking pools {#staking-pools} + +A standard validátorbeállítás következtében a letéti alapok és a likvid letétbe helyezők kénytelenek egy operátorral működő validátorban változó szinten megbízni, mivel a nyereségek és a veszteségek az egész alapot érintik. Emellett bízniuk kell az operátorokban, hogy biztonságban tartják az aláírási kulcsokat, mert korábban nem volt erre másik megoldás. + +Habár hagyományos módon tettek erőfeszítéseket, hogy elosszák a kockázatot azáltal, hogy több operátor között elosztják a letétet, de az operátorok még így is jelentős letétet kezelnek független módon. Nagy kockázatot jelent, amikor egyetlen operátorra támaszkodik a folyamat, ha az alulteljesít, leáll, kompromittálódik vagy ártó módon cselekszik. + +A DVT kihasználásával az operátoroknak nem kell másban bízniuk. **Az alapok megengedik az operátoroknak, hogy letétet kezeljenek anélkül, hogy a validátorkulcsot felügyelet alá kellene helyezniük** (mivel csak a kulcsrészeket használják). A kezelt letéteket is több operátor között tudják elosztani (pl. egyetlen operátor helyett, aki 1000 validátort kezel, a DVT-vel ezeket a validátorokat több operátor együtt tudja működtetni). A különféle operátorkonfigurációk biztosítják, hogy az egyik operátor leállásával a többiek még mindig el tudják végezni a tanúsítást. Ennek eredményeként redundancia (extra kapacitás) és diverzifikáció jön létre, ami jobb teljesítményt és rugalmasságot hoz, miközben maximalizálja a nyereséget. + +Az egyoperátoros bizalom minimalizálása következtében a letéti alapok nyitottabb és külön engedélyhez nem kötött operátorrészvételt engedhetnek meg. A szolgáltatóknak így kevesebb kockázattal kell számolniuk, támogatja az Ethereum decentralizációt azáltal, hogy válogatott és külön engedély nélküli operátorcsoportokat is használ, például összepárosítva az otthoni vagy kisebb letéteseket a nagyobbakkal. + +## A DVT lehetséges hátrányai {#potential-drawbacks-of-using-dvt} + +- **Még egy komponens** – DVT-csomópont hozzáadásával még egy összetevő lehet hibás vagy sebezhető. Ennek minimalizálásához arra kell törekedni, hogy a DVT csomópontot többféle beállítással, vagyis több DVT-klienssel kell használni (ahogy a konszenzus és végrehajtási rétegre is többféle kliens létezik). +- **Működési költségek** – mivel a DVT elosztja a validátort több entitás között, ezért (egy helyett) több csomópontra van szükség a működéshez, ami nagyobb költséggel jár. +- **A késedelem lehetséges növekedése** – mivel a DVT konszenzusprotokollt használ ahhoz, hogy megegyezést érjen el a több csomópont között, melyek a validátort működtetik, ezért a késedelem megnövekedhet. + +## További olvasnivaló {#further-reading} + +- [Az Ethereum elosztott validátorának specifikációja (átfogó)](https://github.com/ethereum/distributed-validator-specs) +- [Az Ethereum elosztott validátorának technikai specifikációi](https://github.com/ethereum/distributed-validator-specs/tree/dev/src/dvspec) +- [Shamir titokmegosztási bemutató alkalmazás](https://iancoleman.io/shamir/) diff --git a/src/content/translations/hu/staking/pools/index.md b/src/content/translations/hu/staking/pools/index.md new file mode 100644 index 00000000000..f8496d32caa --- /dev/null +++ b/src/content/translations/hu/staking/pools/index.md @@ -0,0 +1,85 @@ +--- +title: Pooled staking +description: Áttekintés a letéti alapok használatáról +lang: hu +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-pool.png +alt: Leslie, a rinocérosz a medencében fürdik. +sidebarDepth: 2 +summaryPoints: + - Helyezzen letétbe bármennyi ETH-t és szerezzen jutalmakat másokkal együtt + - Hagyja a nehézségeket és bízza a validátor működtetését harmadik félre + - Tartsa a letétbe helyezett összegnek megfelelő tokeneket a saját tárcájában +--- + +## Mik azok a letéti alapok (staking pool)? {#what-are-staking-pools} + +A letéti alap egy olyan kollaboratív megközelítés, mely lehetővé teszi, hogy sok kis összegű ETH révén elérjék a 32 ETH küszöbértéket, ahol már fel tudnak állítani validátort. A letéti alap nem a protokoll része, más megoldások épültek ki, hogy ezt az igényt kielégítsék. + +Néhány letéti alap okosszerződéseket használ, ahol a pénzeszközöket a szerződésbe helyezik letétbe, így bizalomigény nélkül kezeli és követi a letét alakulását, és egy tokent ad, mely a letét értékét képviseli. Más alapok nem használnak okosszerződést, hanem a láncon kívül közvetítenek. + +## Miért jó a letéti alap használata? {#why-stake-with-a-pool} + +A [bevezetés a letétbe helyezésbe](/staking/) során elhangzott előnyök mellett a letéti alapok számos haszonnal járnak. + + + + + + + + + +## Mit kell figyelembe venni {#what-to-consider} + +A letéti alap vagy a delegáción alapuló letétbe helyezés nem része az Ethereum-protokollnak. Ugyanakkor a felhasználók igénye mentén, hogy 32 ETH-nál kisebb összeget adjanak letétbe, egyre több megoldás épül ki. + +Minden egyes alapot és az általuk használt eszközöket vagy okosszerződéseket különböző csapatok fejlesztik, így mind rendelkezik előnyökkel és kockázatokkal. Az alap lehetővé teszi, hogy a felhasználó egy tokent kapjon, ami a letétbe helyezett ETH-t reprezentálja. A token azért hasznos, mert a felhasználó bármennyi ETH-t átválthat egy azonos összegű, jövedelmet generáló tokenre, ami a háttérben lévő ETH letétbe helyezési jutalmaiból ad bevételt (és fordítva) a decentralizált tőzsdéken, még akkor is, ha az aktuális ETH a konszenzusrétegen van letétben. Eszerint a jövedelmet generáló, letétbe helyezett ETH-termék és az eredeti, nyers ETH között gyors és könnyű oda-vissza váltás lehetséges, és nem csak 32 ETH többszöröse érhető el. + +Ugyanakkor ezek a letétbe helyezett ETH tokenek kartellszerű viselkedésre hajlamosítanak, amikor ebből nagyobb összegek kevés centralizált szervezet kontrollja alá kerülnek, ahelyett hogy számtalan egyén között oszlanának el. Ez cenzúrára vagy értéklefölözésre ad lehetőséget. A letétbe helyezés aranyszabálya az, hogy egyének futtatják a validátorokat a saját hardverjükön. + +[A letétbe helyezést képviselő tokenek további kockázatairól](https://notes.ethereum.org/@djrtwo/risks-of-lsd). + +Alább különböző jellemzők mentén mutatjuk be a jelentős erősségeket vagy gyengeségeket, melyekkel a listázott letéti alapok rendelkezhetnek. Ez alapján Ön is megértheti, hogy e jellemzőket hogyan határoztuk meg, és így könnyebben választhat a letéti alapokból. + + + +## Fedezze fel a letéti alapokat {#explore-staking-pools} + +Számos olyan opció érhető el, amely biztosan kielégíti minden igényét. A fenti jellemzőket használva megértheti az alábbi eszközökben rejlő lehetőségeket. + + + + + +Olyan szolgáltatást válasszon, amely komolyan veszi a [kliensek diverzitását](/developers/docs/nodes-and-clients/client-diversity/), mert ez egyszerre javítja a hálózat biztonságát, és csökkenti az Ön kockázatát. Azok a szolgáltatók, akik korlátozzák a többségi klienseket használatát, a következő jellemzők alapján szűrhetők ki: sokrétű végrehajtás és sokrétű konszenzus + +Hiányolja valamelyik letétbe helyezési eszközt? Ha a [terméklistázó szabályzat](/contributing/adding-staking-products/) alapján úgy véli, hogy egy adott eszköz illeszkedne ide, akkor jelezze felénk. + +## Gyakran ismételt kérdések {#faq} + + +A letétbe helyezők ERC-20 letéti tokeneket kapnak, melyek a letétbe adott ETH-t képviselik, megnövelve azt a jutalmakkal. A különféle alapok a letéti jutalmakat különböző módon adják át a felhasználóknak, a folyamat lényege ugyanakkor közös. + + + +Most azonnal! A Shanghai/Capella-hálózatfrissítés 2023. áprilisban végbement, mely elérhetővé tette a letétek visszavonását. A letéti alapokhoz tartozó validátorszámlák ki tudnak lépni a letétbe helyezésből és vissza tudják vonni az ETH-t a megadott visszavonási címükre. Ez lehetővé teszi, hogy visszavegye a letétrészt a mögöttes ETH-ért cserébe. Ellenőrizze, hogy az adott szolgáltató hogyan támogatja ezt a funkcionalitást. + +Alternatívaként a letéti alapok ERC-20 letéti tokeneket használnak, hogy a felhasználó kereskedni tudjon azokkal a nyitott piacon. Ezzel eladhatja a letéti helyzetét, visszavonva a letétet anélkül, hogy a letéti szerződésben lévő ETH bárhova is átkerülne. + +Bővebben a letétbe helyezés visszavonásáról + + + +Számos hasonló vonás van a letéti alapok opciói és a centralizált tőzsdék között, mivel kis összeggel is részt lehet venni, melyek együtt hoznak létre egy validátort. + +A centralizált tőzsdékhez képes számos letéti alap használ okosszerződést és/vagy letéti tokeneket, olyan ERC-20 tokeneket, melyeket a felhasználó a tárcájában tarthat, és bármikor vehet vagy adhat el azokból. Ez függetlenséget és biztonságot jelent, mivel a felhasználó kontrollálja a tokenjeit, de még mindig nem tudja irányítani a validátorklienst, ami az ő nevében készít tanúsítást a háttérben. + +Néhány letéti alap sokkal decentralizáltabb, amikor az általuk használt csomópontokról van szó. A hálózat egészséges állapota és decentralizációja érdekében a letétbe helyezők olyan letéti alapokat válasszanak, amelyek engedélymentes, decentralizált csomópont-operátorokkal működnek. + + +## További olvasnivaló {#further-reading} + +- [Letétbe helyezés a Rocket Poollal – Áttekintés](https://docs.rocketpool.net/guides/staking/overview.html) – _RocketPool docs_ +- [Letétbe helyezés az Ethereumon a Lidoval](https://help.lido.fi/en/collections/2947324-staking-ethereum-with-lido) - _Lido help docs_ diff --git a/src/content/translations/hu/staking/saas/index.md b/src/content/translations/hu/staking/saas/index.md new file mode 100644 index 00000000000..de5b74a6cb1 --- /dev/null +++ b/src/content/translations/hu/staking/saas/index.md @@ -0,0 +1,94 @@ +--- +title: Staking, mint szolgáltatás +description: Egy áttekintő a pooled ETH staking elkezdéséről +lang: hu +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-saas.png +alt: Leslie, a rinocérosz a felhőkön lebeg. +sidebarDepth: 2 +summaryPoints: + - Az Ön validátorkliensét harmadik fél működteti csomópontok kezelésével + - Kiváló lehetőség bárkinek, aki rendelkezik 32 ETH összeggel, de nem szívesen bajlódna a csomópont technikai komplexitásával + - A bizalomigénye kevesebb, a visszavonási kulcsok az Ön saját felügyelete alatt állnak +--- + +## Mi az a letétbe helyezés mint szolgáltatás? {#what-is-staking-as-a-service} + +A letétbe helyezés, mint szolgáltatás (SaaS) egy olyan lehetőség, amikor a felhasználó letétbe teszi a saját 32 ETH összegét, hogy validátort működtessen, de a csomópont üzemeltetését egy harmadik félre bízza. E folyamat során a felhasználót végigvezetik a kezdeti beállításokon, beleértve a kulcs létrehozását, a letét elhelyezését, majd az aláíró kulcsok feltöltését az operátornak. A szolgáltatás így a felhasználó nevében működteti a validátort, általában egy havi díjért cserébe. + +## Miért jó a letéti szolgáltatás használata? {#why-stake-with-a-service} + +Az Ethereum-protokoll eredendően nem támogatja a letétbe helyezés delegálását, így ezek a szolgáltatások képesek ellátni ezt az igényt. Ha Ön letétbe helyezne 32 ETH-t, de nem szeretne a hardveres részével foglalkozni, az SaaS lehetővé teszi, hogy ezt a részét átadja másnak, miközben részesül a blokkjutalmakból. + + + + + + + + + +## Mit kell figyelembe venni {#what-to-consider} + +Az SaaS szolgáltatók száma egyre növekszik, ugyanakkor mind saját előnnyel és kockázattal bír. Az önálló stakinghez képest ezek az opciók mind extra bizalmat igényelnek. Az SaaS opciók rendelkezhetnek olyan hozzáadott programkóddal, melybe az Ethereum-klienst csomagolják, ami nem nyilvános vagy auditálható. Emellett negatív hatást gyakorolnak a hálózat decentralizálására. A beállítások függvényében Ön talán nem is bír kontrollal a validátora felett – az operátor rosszhiszeműen is eljárhat az Ön ETH-ját használva fel. + +Alább különböző jellemzők mentén mutatjuk be a jelentős erősségeket vagy gyengeségeket, melyekkel a listázott SaaS szolgáltatók rendelkezhetnek. Ez alapján Ön is megértheti, hogy e jellemzőket hogyan határoztuk meg, és így könnyebben választhat a szolgáltatók közül. + + + +## Fedezze fel, hogy kik nyújtanak letétbe helyezési szolgáltatást {#saas-providers} + +Néhány elérhető SaaS-szolgáltatót soroltunk fel alább. A fenti jellemzőket használva megértheti az alábbi szolgáltatásokban rejlő lehetőségeket + + + +#### SaaS-szolgáltatók + + + +Olyan szolgáltatót válasszon, aki támogatja a [kisebbségi klienseket](/developers/docs/nodes-and-clients/client-diversity/), mert ez egyszerre javítja a hálózat biztonságát, és csökkenti az Ön kockázatát. Azok a szolgáltatók, akik korlátozzák a többségi klienseket használatát, a következő jellemzők alapján szűrhetők ki: sokrétű végrehajtás és sokrétű konszenzus + +#### Kulcsgenerátorok + + + +Javasolna olyan SaaS-szolgáltatót, akit nem lát felsorolva? Ha a [terméklistázó szabályzat](/contributing/adding-staking-products/) alapján úgy véli, hogy egy adott eszköz illeszkedne ide, akkor jelezze felénk. + +## Gyakran ismételt kérdések {#faq} + + +Minden szolgáltatónál más elrendezés lehetséges, de általában végigvezetik a felhasználót az aláíró kulcsok létrehozásán (minden 32 ETH esetén egy kulcs), és feltöltik ezeket a szolgáltatónak, hogy a felhasználó nevében validáljon. Az aláíró kulcsok magukban nem teszik lehetővé, hogy a pénzeszközöket visszavonják, átutalják vagy elköltsék. Ugyanakkor lehetőséget adnak arra, hogy a konszenzust elősegítsék szavazással, amit ha nem végeznek megfelelően, akkor az kisebb büntetést vagy súlyos büntetéssel egybekötött kizárást von maga után. + + + +Igen. Minden számla tartalmaz BLS aláírási kulcsokat és BLS visszavonási kulcsokat. Annak érdekében, hogy egy validátor tanúsítani tudja a lánc státuszát, részt vehessen a szinkronizációs bizottságokban és blokkot javasoljon, az aláíró kulcsokat elérhetővé kell tenni a validátorkliensben. Valamilyen formában az internethez kell kapcsolódnia, ezért ezeket „forró” kulcsoknak tekinthetjük (online elérhetők). A validátor csak így tud tanúsításokat készíteni, ezért biztonsági okokból az a kulcs külön áll, amelyikkel a pénzeszközöket lehet átutalni vagy visszavonni. + +A BLS visszavonási kulcsok arra valók, hogy egy egyszeri üzenetet írjanak alá, melyik végrehajtási számlára kerüljön a letéti jutalom és a visszavont pénzeszköz. Amint ez az üzenet érvénybe lép, a BLS visszavonási kulcsokra többé nincs szükség. A kulcsok helyett a megadott cím gyakorol kontrollt a visszavont eszközök felett. Még ha valaki más is kontrollálja az aláíró kulcsokat, a visszavonási cím biztonságban van a felhasználó offline tárhelyén (cold storage), ami minimalizálja a validátor-pénzeszközök elvesztését. + +A visszavonási adatok megadása szükséges ahhoz, hogy a visszavonás lehetséges legyen\*. Ehhez létre kell hozni a visszavonási kulcsokat a felhasználó mnemonikus kulcsmondata segítségével. + +Ezt a kulcsmondatot mindig tartsa biztonságban, különben nem lesz képes létrehozni a visszavonási kulcsokat, amikor szükség lenne azokra. + +\*Azoknak a letéteseknek, akik már megadták a visszavonási címüket a folyamat kezdetén, nem kell ezt beállítani. Ellenőrizze az SaaS-szolgáltatójával, hogy hogyan kell a validátort beállítani. + + + +A letétek visszavonása a Shanghai/Capella frissítéssel vált elérhetővé 2023. áprilisban. A letéteseknek meg kell adniuk egy visszavonási címet (ha nem adták meg azt a letét kezdetekor), és a jutalmak automatikusan kiküldésre kerülnek néhány naponta. + +A validátorok ki is léphetnek a funkciójukból, ami felszabadítja a fennálló ETH-összeget a visszavonáshoz. Azok a számlák, amelyek megadták a visszavonási címet és teljesítették a kilépési folyamatot, a teljes egyenleget megkapják az adott címre a következő validátor-ellenőrzésnél. + +Bővebben a letétbe helyezés visszavonásáról + + + +Az SaaS-szolgáltatóval a felhasználó másra bízza a csomópontok üzemeltetését. Ez magába foglalja a gyenge csomópont-teljesítmény kockázatát, mivel az nem a felhasználó irányítása alá esik. Ha a validátor súlyos büntetést kap (slashing), akkor a validátor egyenlegéből elvonnak és kizárják a validálásból. + +A büntetés végrehajtása után a megmaradt pénzeszközök a validátor visszavonási címére kerülnek. Ehhez szükség van egy visszavonási címre. Előfordulhat, hogy ezt a letétbe helyezéskor már megadta. Ha nem, akkor a validátor-visszavonási kulcsokkal lehet aláírni egy üzenetet, amely közli a visszavonási címet. A pénzeszközök zárolva maradnak addig, amíg a visszavonási cím nem elérhető. + +Kérdezze meg az SaaS-szolgáltatóját a lehetséges garanciákról vagy biztosításokról, illetve arról, hogyan lehet a visszavonási címet megadni. Ha Ön szeretné teljes mértékben kontrollálni a validátor-beállításokat, akkor ismerje meg az önálló letétbe helyezést. + + +## További olvasnivaló {#further-reading} + +- [A letétbe helyezési szolgáltatások értékelése](https://www.attestant.io/posts/evaluating-staking-services/) – _Jim McDonald 2020._ diff --git a/src/content/translations/hu/staking/solo/index.md b/src/content/translations/hu/staking/solo/index.md new file mode 100644 index 00000000000..b74aa53fa50 --- /dev/null +++ b/src/content/translations/hu/staking/solo/index.md @@ -0,0 +1,203 @@ +--- +title: Önálló letétbe helyezés +description: Az önálló letétbe helyezés áttekintése +lang: hu +template: staking +emoji: ":money_with_wings:" +image: ../../../../../assets/staking/leslie-solo.png +alt: Leslie, a rinocérosz a saját számítógépes chipjén. +sidebarDepth: 2 +summaryPoints: + - Szerezzen maximális jutalmat közvetlenül a protokolltól azért, hogy a validátorát megfelelően működteti és az folyamatosan online + - 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 + - Nem kell másban megbíznia, és az eszközeihez tartozó kulcsok mindig az Ön kontrollja alatt állnak +--- + +## Mi az az önálló letétbe helyezés? {#what-is-solo-staking} + +Az önálló letétbe helyezés (solo staking) során a felhasználó egy [Ethereum csomópontot működtet](/run-a-node/) az internethez csatlakozva, letétbe helyez 32 ETH-t, hogy aktiváljon egy [validátort](#faq), így közvetlenül részt tud venni a hálózat konszenzusfolyamatában. + +**Az önálló letétbe helyezés növeli az Ethereum hálózatának decentralizációját**, így az ellenállóbb lesz a cenzúrával és a támadásokkal szemben. A többi letétbe helyezési módszer nem feltétlen segíti a hálózatot ugyanilyen módon. Az önálló letétbe helyezés a legjobb letéti opció az Ethereum biztosítására. + +Az Ethereum-csomópontot egy végrehajtási réteg (EL) klienst és egy konszenzus réteg (CL) klienst tartalmaz. Ezek a kliensek olyan szoftverek, amelyek együtt dolgoznak egy érvényes aláírókulcs-készlettel együtt, hogy érvényesítsék a tranzakciókat és a blokkokat, tanúsítsák a lánc státuszát, aggregálják a tanúsítványokat és blokkokat javasoljanak. + +Az önálló letétbe helyezők azért felelnek, hogy a kliensek futásához szükséges hardvert működtetik. Azt javasoljuk, hogy erre egy dedikált gépet használjanak, melyet otthonról üzemeltetnek, mert ez rendkívül hasznos a hálózat egészsége szempontjából. + +Az önálló letétbe helyező közvetlenül a protokolltól kap jutalmakat azért, hogy a validátora megfelelően működik és online van. + +## Miért legyek önálló letétbe helyező? {#why-stake-solo} + +Az önálló letétbe helyezés több felelősséggel jár, de teljes kontrollt biztosít a pénzeszközök és a staking felállítás felett. + + + + + + + +## Megfontolások, mielőtt belevágna az önálló stakingbe {#considerations-before-staking-solo} + +Bármennyire is szeretnénk, hogy az önálló letétbe helyezés elérhető és kockázatmentes legyen mindenkinek, ez nem a valóság. Mielőtt belevágna, komoly gyakorlati megfontolásokkal kell szembenéznie. + + + +Saját csomópont működtetéséhez meg kell tanulni a választott szoftver használatát. El kell olvasni a rendelkezésre álló dokumentációt és ráhangolni a fejlesztői csapatok kommunikációs csatornáira. + +Minél többet tud a választott szoftverről és a proof-of-stake működéséről, annál kevésbé kockázatos a letétbe helyezés, illetve a felmerülő problémák kezelése a csomópont-operátor szerepében. + + + +A csomópont beállításához egy bizonyos szintű számítógépes gyakorlat szükséges, habár az új eszközök egyre inkább megkönnyítik ezt a feladatot is. A parancssoros felhasználói felület (command-line interface) ismerete hasznos, de nem elengedhetetlen. + +Alapvető hardverösszeállításra, illetve a javasolt minimális specifikáció megértésére van szükség. + + + +Ahogy a privát kulcs biztosítja az Ethereum-címet, úgy a validátorhoz is létre kell hozni kulcsokat. Tudnia kell, hogyan tartsa a kulcsmondatokat vagy privát kulcsokat biztos helyen.{' '} + +Ethereum biztonság és csalásmegelőzés + + + +A hardver néha leáll, a hálózati kapcsolat hibára fut, a kliensszoftvert néha frissíteni kell. A csomópont karbantartása elkerülhetetlen, ezzel foglalkozni kell. Muszáj naprakésznek lennie minden várható hálózati frissítésről vagy más kritikus kliensfrissítésről. + + + +A jutalmazás annak arányában történik, hogy a validátor mennyi időt van online és megfelelő módon végzi-e a tanúsítást. A leállás miatti büntetések annak függvényében vannak megállapítva, hogy ugyanakkor hány validátor volt még offline, ez azonban nem von maga után súlyos büntetést és kizárást (slashing). A sávszélesség is számít, mert a tanúsításért járó jutalmak csökkenek, ha azok nem érkeznek meg időben. A szükséges paraméterek változhatnak, de érdemes legalább 10 Mb/s fel- és letöltési sebességgel számolni. + + + +Az inaktív állapot miatti büntetéstől különbözik a súlyos büntetéssel egybekötött kizárás (slashing), ami rosszhiszemű vétségekért jár. Ha kisebbségi klienst használ és a kulcsokat csak egy gépre tölti fel, akkor a slashing kockázata minimális. Ettől függetlenül minden letétbe helyezőnek szembe kell néznie a slashing kockázatával. + +Bővebben a slashingről és a validátor életciklusáról + + + + + +## Hogyan működik {#how-it-works} + + + +Mialatt Ön aktív, ETH jutalmakat kap, melyeket rendszeresen elhelyeznek a visszavonási számlán. + +Bármikor kiléphet a validátor szerepéből, így nem kell online lennie, és leállnak a jutalmak. Ekkor a maradék egyenlege visszatér a visszavonási címre, melyet a felállításnál adott meg. + +[Bővebben a letétbe helyezés visszavonásáról](/staking/withdrawals/) + +## Induljon el a Staking Launchpad segítségével {#get-started-on-the-staking-launchpad} + +A Staking Launchpad egy nyílt forráskódú alkalmazás, ami segít a letétbe helyezés folyamatában. Végigvezeti Önt a szükséges lépéseken, mint a kliensek kiválasztása, a kulcsok létrehozása és az ETH letétbe helyezése a letéti szerződésbe. Egy ellenőrzőlistán is végigveheti, hogy minden a rendelkezésre áll, hogy biztonsággal működjön a validátora. + + + +## Mit kell figyelembe venni a csomópont- és kliensbeállító eszközöknél {#node-tool-considerations} + +Az önálló letétbe helyezést segítő eszközök és szolgáltatások száma egyre növekszik, de mindnél áll fent kockázat, és ugyanúgy mind előnyökkel is jár. + +Alább különböző jellemzők mentén mutatjuk be a jelentős erősségeket vagy gyengeségeket, melyekkel a listázott letéti eszközök rendelkezhetnek. Ez alapján Ön is megértheti, hogy e jellemzőket hogyan határoztuk meg, és így könnyebben választhat a szükséges eszközök közül. + + + +## Fedezze fel a csomópont- és kliensbeállító eszközöket {#node-and-client-tools} + +Számos olyan opció érhető el, amely biztosan kielégíti minden igényét. A fenti jellemzőket használva megértheti az alábbi eszközökben rejlő lehetőségeket. + + + +#### Csomóponteszközök + + + +Olyan szolgáltatót válasszon, aki komolyan veszi a [kliensek diverzitását](/developers/docs/nodes-and-clients/client-diversity/), mert ez egyszerre javítja a hálózat biztonságát, és csökkenti az Ön kockázatát. Azok az eszközök, melyek a kisebbségi kliens beállítást támogatják, a többklienses jellemzővel vannak jelölve + +#### Kulcsgenerátorok + +Ezek alternatív eszközök a [Staking Deposit CLI](https://github.com/ethereum/staking-deposit-cli/) mellett, hogy a kulcsok le legyenek generálva. + + + +Hiányolja valamelyik letétbe helyezési eszközt? Ha a [terméklistázó szabályzat](/contributing/adding-staking-products/) alapján úgy véli, hogy egy adott eszköz illeszkedne ide, akkor jelezze felénk. + +## Nézze meg az önálló letétbe helyezés útmutatóit {#staking-guides} + + + +## Gyakran ismételt kérdések {#faq} + +Ezek a leggyakrabban felmerülő kérdések a letétbe helyezés kapcsán, melyről érdemes Önnek is tudnia. + + + +A validátor egy virtuális entitás, ami az Ethereumon működik és a protokoll konszenzusfolyamatában vesz részt. A validátort az egyenleg, a nyilvános kulcs és más tulajdonságok jellemzik. A validátorkliens az a szoftver, ami a validátor nevében működik, tárolva és felhasználva annak privát kulcsát. Egy validátorkliens több kulcspárt is tárolhat, így több validátort is üzemelhet. + + + + +A validátorhoz tartozó kulcspár pontosan 32 ETH összeget igényel ahhoz, hogy aktívvá váljon. Ha a kulcsokhoz több ETH kerül letétbe, az nem növeli meg a jutalmak lehetőségét, mert a validátor érvényes egyenlege 32 ETH. Tehát a letétbe helyezés 32 ETH összegenként történik, melyekhez saját kulcs és egyenleg tartozik. + +Egy validátorhoz ne kössön le többet, mint 32 ETH. Ez nem hoz több nyereséget. A validátor-ellenőrzés során a 32 ETH feletti rész automatikusan átkerül a visszavonási címre, ha az be van állítva a validátorhoz. + +Ha az önálló letétbe helyezés túl nagy erőfeszítést igényelne Öntől, akkor nézze meg a letétbe helyezés, mint szolgáltatás opcióit, vagy ha kevesebb mint 32 ETH összegről van szó, akkor fontolja meg a letéti alapok szolgáltatást. + + + +Nem vezet súlyos büntetéshez és kizáráshoz (slashing) az, ha a validátor offline, de a hálózat állapota megfelelő. Kis mértékű inaktivitási büntetések várhatók, ha a validátor nem elérhető a tanúsításhoz egy adott korszakban (mely 6,4 perc hosszú), ez azonban különbözik a súlyos büntetéssel járó kizárástól (slashing). A kis büntetések kicsit kevesebbek, mint az a jutalom, amit a validátor a tanúsításért kapott volna, az elvesztett pénzt pedig vissza lehet nyerni ugyanannyi online töltött idővel. + +Az inaktivitási büntetés mértéke függ attól, hogy ugyanabban az időben mennyi validátor van offline. Ha a hálózat nagy része mind egyszerre lesz offline, akkor a büntetés sokkal nagyobb ezen validátorok esetében, mintha csak egy validátor lenne elérhetetlen. + +Szélsőséges esetben, ha a hálózat nem tud állapotot frissíteni, mert a validátorok harmada offline van, akkor ezek a felhasználók a kvadratikus inaktivitási elszivárgást szenvedik el, vagyis a validátorszámlákról exponenciálisan kiáramlik az ETH. Ezzel a rendszer végül képes helyrebillenteni magát azáltal, hogy az inaktív validátorok ETH-jét elégeti, amíg az egyenlegük 16 ETH lesz és ezzel automatikusan kilökődnek a validátorok közül. A megmaradó online validátorok végül teljesítik a több mint 2/3 arányt, kielégítve a túlnyomó többség elvét, hogy a lánc állapota megint frissítve legyen. + + + +Röviden, bár nem lehet garantálni, de a slahing kockázata szinte nulla, hogy ha jóhiszeműen jár el, kisebbségi klienst használ, az aláíró kulcsokat pedig csak egy gépen tartja. + +Néhány specifikus eset van, amikor a validátor súlyos büntetést kap és kilökik a hálózatból. A korábbi eseteknél kizárólag redundáns hardver volt beállítva, és az aláíró kulcsokat két különböző gépen tárolták egyszerre. Ez akaratlanul is dupla szavazást eredményezhet a kulcsokkal, ami súlyos vétség. + +Egy többségi kliens használatával (amit a hálózat 2/3 használ) is nő a slashing kockázata, hogyha a kliensben hiba áll fenn, és emiatt egy láncelágazás jön létre. Hibás elágazást okozhat, ami a lánc állapotaként rögzítésre kerül. Ahhoz, hogy visszatérjen a valódi lánc állapotához, egy „surround” szavazatot kell leadni egy véglegesített blokk visszaállításával. Ez is egy súlyos vétség, és elkerülhető a kisebbségi kliensek használatával. + +A kisebbségi kliensben lévő hiba nem fog végleges állapotot eredményezni, így nem vezet ahhoz, hogy két különböző állapotra szavazzanak helyenként (surround szavazat), és egyszerű inaktivitási büntetéssel jár, nem slashinggel. + + + + + +Az egyéni kliensek esetében kicsit különböző a teljesítmény, a felhasználói felület, mivel mindet különböző csapatok fejlesztik, különböző programozási nyelveken. Így nincsen „legjobb” kliens. Az összes működő kliens kiváló szoftver, melyek működési elve azonos, hogy szinkronizáljanak és kapcsolódjanak a blokklánchoz. + +Mivel az összes kliens ugyanazokat az alapvető funkcionalitásokat kínálja, így fontos, hogy Ön egy kisebbségi klienst válasszon, tehát nem azokat, amelyeket a validátorok többsége használ. Ez talán ellentmond a logikus gondolkodásnak, de a többségi vagy szupertöbbségi kliensek használata miatt megnő a slaghing kockázata, ha a kliensben valamilyen hiba van. Ezt a kockázatot jelentősen lecsökkenti egy kisebbségi kliens használata. + +Tudjon meg többet arról, hogy kliensdiverzitás miért kritikus fontosságú + + + +Habár a virtuális privát szerver (VPS) használható az otthoni hardver helyett, a validátorkliens fizikai elérhetősége és helye igenis számít. A centralizált felhőszolgáltatások, mint az Amazon Web Services vagy a Digital Ocean, lehetővé teszik, hogy nem kell hardvert venni és működtetni, de ez hatással van a hálózat centralizáltságára. + +Minél több validátorkliens működik ugyanazon a centralizált felhőszolgáltatón, annál veszélyesebbé válik a felhasználóknak. Ha ezek a szolgáltatók bármilyen esemény miatt elérhetetlenné válnak, legyen akár támadás, szabályozási kötelezettség, áram- vagy internetleállás, az összes validátorkliens ugyanakkor lesz offline. + +Az offline büntetések arányosak azzal, hogy hány validátor van még offline ugyanakkor. A VPS használata megnöveli az offline büntetés várható mértékét, a kvadratikus elszivárgás vagy akár a slashing kockázatát is, ha a kimaradás kellően nagy mértékű. A saját és a hálózat kockázatát minimalizálandó a felhasználó jobban jár, ha saját hardvert szerez és üzemeltet. + + + + +A Beacon-láncról való visszavonáshoz be kell állítani a visszavonási adatokat. + +Az új letétesek ezt megtették a kulcsgenerálás és a letétbe helyezés során. A meglévő letétesek, akik még nem állították ezt be, frissíthetik a kulcsaikat ezzel a funkcióval. + +Amint a visszavonási adatok be vannak állítva, a jutalmak (a 32 ETH-en felüli rész) rendszeresen és automatikusan átkerülnek a visszavonási címre. + +A teljes egyenleg visszavonásához végig kell menni a validátorkiléptetési folyamaton. + +Bővebben a letétbe helyezés visszavonásáról + + +## További olvasnivaló {#further-reading} + +- [Az Ethereum-kliens diverzitásának problémája](https://hackernoon.com/ethereums-client-diversity-problem) – _@emmanuelawosika 2022._ +- [A kliensdiverzitás támogatása](https://www.attestant.io/posts/helping-client-diversity/) – _Jim McDonald 2022._ +- [Kliensdiverzitás az Ethereum konszenzus rétegén](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) – _jmcook.eth 2022._ +- [Hogyan kell: Ethereum validátorhardver vásárlása](https://www.youtube.com/watch?v=C2wwu1IlhDc) – _EthStaker 2022._ +- [Lépésről lépésre: hogyan kell csatlakozni az Ethereum 2.0 teszthálózathoz](https://kb.beaconcha.in/guides/tutorial-eth2-multiclient) – _Butta_ +- [Eth2 Slashing elkerülési tippek](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50) – _Raul Jordan 2020._ diff --git a/src/content/translations/hu/staking/withdrawals/index.md b/src/content/translations/hu/staking/withdrawals/index.md new file mode 100644 index 00000000000..1a3f1f3266b --- /dev/null +++ b/src/content/translations/hu/staking/withdrawals/index.md @@ -0,0 +1,218 @@ +--- +title: A letétbe helyezés visszavonása +description: A letétvisszavonás működésének és a jutalmak megszerzésének áttekintése +lang: hu +template: staking +image: ../../../../../assets/staking/leslie-withdrawal.png +alt: Leslie, a rinocérosz a letétbe helyezésből származó jutalmaival +sidebarDepth: 2 +summaryPoints: + - A Shanghai/Capella frissítés lehetővé tette a letétek visszavonását az Ethereumon + - A validátor operátorainak meg kell adni ehhez egy visszavonási címet + - A jutalmakat néhány naponta automatikusan átkerülnek + - A validátorok, akik teljesen kiszállnak a letétből, a maradék egyenleget visszakapják +--- + + +A letétek visszavonását a 2023. április 12-i Shanghai/Capella frissítés tette lehetővé. Bővebben a Shanghai/Capella frissítésről + + +**A letétek visszavonása** azt jelenti, hogy a validátorszámla ETH-egyenlege, ami az Ethereum konszenzusrétegén található (Beacon-lánc), áthelyezésre kerül a végrehajtási rétegre, ahol fel lehet használni. + +**A jutalmak kifizetése** 32 ETH felett automatikusan és rendszeresen megtörténik az egyes validátorokhoz tartozó visszavonási címre, ahogy azt a felhasználó beállította. A felhasználó **teljesen kiszállhat a letétbe helyezésből**, felszabadítva a teljes validátoregyenleget. + +## A letétbe helyezésből eredő jutalmak {#staking-rewards} + +Az aktív validátorszámlákra a jutalmak kifizetése automatikusan megtörténik, és maximum 32 ETH egyenleg marad azokon. + +A 32 ETH feletti összeg nem adódik hozzá az alaphoz, nem növeli a validátor súlyát a hálózaton, így automatikusan visszavonásra kerül jutalomként néhány naponta. A visszavonási címet rögzíteni kell, de ezen kívül a validátor működtetőjének nincs több teendője. Ez a konszenzusrétegen zajlik, ezért nincs gáz/tranzakciós díj vonzata egyik lépésnél sem. + +### Hogyan jutottunk el idáig? {#how-did-we-get-here} + +Az elmúlt években az Ethereum számos hálózati fejlesztésen esett át, hogy a hálózatot az ETH biztosítsa, és ne az erőforrás-igényes bányászás (mining). A konszenzusban való részvétel az Ethereumon a letétbe helyezés (staking), mivel a tagok önként lekötötték az ETH-t, hogy a hálózatban részt tudjanak venni. A szabályokat követő felhasználók jutalmakat nyernek, a visszaélést pedig bünteti a rendszer. + +A letétbe helyezési szerződés létrehozásával (2020. november) néhány bátor Ethereum-úttörő önként zárolta a pénzeszközeit, hogy validátorokként működjenek – ezek olyan különleges számlák, melyek hivatalosan tanúsíthatnak és javasolhatnak blokkot a hálózat szabályait követve. + +A Shanghai/Capella frissítés előtt nem lehetett használni vagy elérni ezt a lekötött ETH-t. Most azonban automatikusan áthelyeződnek a jutalmak a kiválasztott számlára, és a lekötést is bármikor fel lehet oldani. + +### Hogyan tudok erre felkészülni? {#how-do-i-prepare} + + + +### Fontos figyelmeztetések {#important-notices} + +A visszavonási cím megadása szükséges ahhoz, hogy a validátorszámla egyenlegéből ETH visszavonás történjen. + + + Minden validátorszámlához egyszer, egyetlen visszavonási cím adható meg. Amint ezt a címet kiválasztották és elküldték a konszenzus rétegnek, nem lehet visszahívni vagy megváltoztatni. Ellenőrizze le a cím tulajdonosát és pontosságát, mielőtt elküldi azt. + + +Eközben a pénzeszközöket nem fenyegeti veszély, ha nem adja meg a címet, feltéve, hogy a mnemonikus/kulcsmondat biztonságban van offline, és nincs kitéve veszélynek. Amíg nem tudja megadni a visszavonási adatokat, addig az ETH egyszerűen a validátorszámlán marad. + +## A letétbe helyezés felbontása {#exiting-staking-entirely} + +A visszavonási számlára van szükség ahhoz, _bármilyen_ pénzeszközt ki lehessen utalni a validátorszámla egyenlegéből. + +Azoknak a felhasználóknak, akik teljesen ki akarnak lépni a letétbe helyezéből és a teljes egyenleget vissza akarják vonni, a validátorkulcsokkal alá kell írniuk és ki kell adniuk egy önként kiszállok üzenetet, ezzel elindul a lezárás folyamata. Ezt a validátorkliens végzi és a konszenzus csomópontjára küldi el, így nem kell hozzá gáz/díj. + +A kilépés változó ideig tart, attól függően, hogy hányan akarnak ugyanakkor kiszállni. Amint végbemegy, ez a számla már nem végez validátori feladatokat, nem jár neki ezért jutalom, és a kapcsolódó ETH nincs letétbe helyezve. Ekkora a számla teljesen „visszavonhatóként” lesz megjelölve. + +Ha a visszavonható jelölés megtörtént és a visszavonási adatok meg lettek adva, akkor nincs több teendő. A blokkot javaslók automatikusan és folyamatosan ellenőrzik, mondhatni söprik a számlákat a kilépő pénzeszközöket vizsgálva, így a számla egyenlege teljes mértékben átvezetésre kerül a következő söprésnél. + +## Mikortól elérhető a letétek visszavonása? {#when} + +A letétek visszavonása elérhető! A funkcionalitást a Shanghai/Capella frissítés tette elérhetővé 2023. április 12-én. + +Ennek következtében a korábban letétbe helyezett ETH-t vissza lehet vonni a normális Ethereum-számlákra. Ez lezárta a letétek likviditásának témáját, és az Ethereumot egy lépéssel közelebb vitte a céljához, ami egy fenntartható, skálázható, biztonságot, decentralizált ökoszisztéma. + +- [Bővebben az Ethereum történetéről](/history/) +- [Bővebben az Ethereum fejlesztési terveiről](/roadmap/) + +## Hogyan működik a visszavonási kifizetés? {#how-do-withdrawals-work} + +A validátorszámla státusza mondja meg, hogy egy validátor jogosult-e a visszavonásra vagy sem. Nincs szükség a felhasználó közreműködésére, hogy a számla visszavonásra kerül-e vagy sem – a teljes folyamat automatikusan üzemel a konszenzus réteg által, egy állandóan működő ciklusban. + +### Ön inkább vizuális típus? {#visual-learner} + +Nézze meg az Ethereum letétvisszavonásról szóló magyarázatát a Finematics-tól: + + + +### Validátor-ellenőrzés vagy söprés {#validator-sweeping} + +Amikor egy adott validátor be van ütemezve, hogy a következő blokkot ő fogja javasolni, akkor készítenie kell egy 16 tételből álló visszavonási listát. Kezdve a 0 validátorindexel, meghatározza, hogy az adott számla a protokoll szabályai szerint visszavonásra jogosult-e, és ha igen, akkor beteszi a listába. A validátorcsoport ott száll be, ahol az előző abbahagyta és a végtelenségig folytatja. + + +Képzeljen el egy analóg módon működő órát. Az óramutató egy irányba halad és sorban végigmegy minden számon, majd miután elérte az utolsó számot, visszaér a kezdőpontra.

    +Tegyük fel 1–12 helyett 0-n található (ahol n a validátor számlák teljes száma, amelyek a konszenzus rétegen regisztrálva lettek; több mint 500 000 2023. januárjában).

    +Az óramutató a következő validátorra mutat, hogy leellenőrizze azt visszavonás szempontjából. A 0-nál kezdi és végigmegy az összes számlán. Amikor eléri az utolsó validátort, akkor a ciklus újra elindul. +
    + +#### A számlák ellenőrzése visszavonási szempontból {#checking-an-account-for-withdrawals} + +Miközben a blokk javaslója a validátorokat ellenőrzi a lehetséges visszavonások miatt, minden validátornál néhány kérdéssel ellenőrzi, hogy kell-e visszavonást indítani, és mennyi ETH-t érint ez. + +1. **Van visszavonási cím megadva?** Ha nincs, akkor kihagyja a számlát, és nem lehet visszavonást kezdeményezni. +2. **A validátor kiszállt és visszavonható a számlája?** Ha a validátor kiszállt, és a számlája „visszavonhatóvá” vált, akkor egy teljes visszavonás történik. A teljes egyenlege átkerül a visszavonási címre. +3. **Az érvényes egyenleg 32 ETH?** Ha a számla rendelkezik visszavonási adatokkal, nem lépett ki a letétbe helyezésből, de jutalmak vannak a 32 ETH összegen túl, akkor egy részleges visszavonás indul, ami a 32 ETH feletti jutalmakat áthelyezi a visszavonási címre. + +Csak két döntés vagy cselekvés van, amit a validátor üzemeltetője meglép a validátor életciklusa során, és ezt a folyamatot közvetlenül befolyásolja: + +- A visszavonási adatok biztosítása, hogy bármit át lehessen vezetni +- A hálózatból való kilépés, ami egy teljes visszavonást indít el + +### Gáz/díjmentes {#gas-free} + +A letétek visszavonása anélkül zajlik, hogy a letétesnek tranzakciót kellene indítania, amiben adott mennyiségű ETH-t von ki. Ezért **nincs gáz/tranzakciós díj**, a visszavonások pedig nem versenyeznek, hogy bekerüljenek a végrehajtási réteg blokkjába. + +### Milyen gyakran kapom meg a letéti jutalmakat? {#how-soon} + +Egy blokkban maximum 16 visszavonást lehet végrehajtani. Ez alapján 115 200 validátor-visszavonást lehet egy nap alatt teljesíteni (ha minden slot eredményes). A visszavonásra nem jogosult validátárokat átugorják, ezért a teljes ellenőrzés kevesebb ideig tart. + +Ezt a kalkulációt kiterjesztve megbecsülhetjük, hogy egy adott számú visszavonást mennyi idő alatt lehet teljesíteni: + + + +| Visszavonások száma | Időszükséglet | +| :-----------------: | :-----------: | +| 400 000 | 3,5 nap | +| 500 000 | 4,3 nap | +| 600 000 | 5,2 nap | +| 700 000 | 6,1 nap | +| 800 000 | 7,0 nap | + + + +Ahogy látható, a feldolgozás lelassul, ahogy egyre több validátor van a hálózaton. A kihagyott slotok száma arányosan le tudja lassítani a folyamatot, de ez a lassabb verzióját mutatja a lehetséges kimenetnek. + +## Gyakran ismételt kérdések {#faq} + + +Nem, a visszavonási adatok megadása egyszeri, nem lehet változtatni azokon. + + + +A végrehajtási réteg visszavonási cím megadásával a validátor visszavonási adatai örökre megváltoztak. A korábbi adatok már nem működnek, az újak pedig a végrehajtási réteg számlájára mutatnak. + +A visszavonási cím lehet okosszerződés (melyet a programkódja irányít) vagy egy külső tulajdonú számla (EOA, melyet a privát kulcsa kontrollál). Ezek a számlák jelenleg nem tudnak üzenetet küldeni a konszenzusrétegnek, amely megváltoztatná a validátor hitelesítő adatait, ez a funkció pedig egy szükségtelen komplexitást adna a protokollhoz. + +Egy másik megoldás az adott validátorhoz tartozó visszavonási cím módosítására, ha a felhasználók okosszerződést választanak visszavonási címként, amely tudja kezelni a kulcsok rotálását, mint amilyen a Safe. Azok a felhasználók, akik a saját EOA számlájukra tették a pénzeszközöket, végezhetnek teljes kilépést, visszavonva az összes lekötött eszközt, majd újra letétbe helyezhetik az új hitelesítő adatokat használatával. + + + + +Ha Ön letéti alapokat vagy letéti tokeneket használ, ellenőrizze a szolgáltatójával, hogy hogyan kezelik a letétvisszavonást, mivel minden szolgáltatás másképp működik. + +Általánosságban a felhasználók szabadon visszavehetik a letétbe helyezett ETH-t vagy lecserélhetik a letéti szolgáltatójukat. Ha egy adott letéti alap túl nagy méretű lesz, akkor a pénzeszközöket ki lehet venni belőle és újra le lehet kötni egy kisebb szolgáltatóval. Ha pedig elég ETH gyűlt össze, akkor Önotthonról is végezhet letétbe helyezést. + + + + +Igen, ha a validátora megadta a visszavonási címet. Ezt egyszer kell megtenni, hogy a visszavonások teljesíthetők legyenek, utána a jutalmak automatikusan átkerülnek néhány naponta a validátorok ellenőrzésénél. + + + + +Nem, ha a validátor aktív a hálózaton, akkor a teljes visszavonás nem történik meg automatikusan. Az önkéntes kilépést manuálisan kell kezdeményezni. + +Amint a validátor végigvitte a kilépési folyamatot, a számlán pedig ott vannak a visszavonási adatok, akkor a maradék egyenleget átteszi a következő validátor-ellenőrzés. + + + + +A visszavonásokat úgy tervezték meg, hogy automatikusan minden olyan összeget áthelyezzenek, ami aktívan nem járul hozzá a letéthez. Ez érvényes a kilépő számlák teljes egyenlegére. + +Nem lehetséges manuálisan kérvényezni bizonyos mennyiségű ETH kivételét. + + + + +A validátor működtetők látogassanak el a Staking Launchpad Withdrawals oldalra, ahol a validátorok készítéséről további információkat találhatnak. Továbbá hogyan készüljenek fel, mi az események időzítése, pontosan hogyan működik a visszavonási funkció. + +Próbálja ki először a beállításait egy teszthálózaton, látogasson el a Goerli-teszthálózat Staking Launchpad oldalára. + + + + +Nem. Miután egy validátor kilépett, és a teljes egyenlegét kivette, az adott validátorra letétbe helyezett további összegek automatikusan átutalásra kerülnek a következő validátor-ellenőrzés során a visszavonási címre. Az ETH újbóli letétbe helyezéséhez egy új validátort kell aktiválni. + + +## További olvasnivaló {#further-reading} + +- [Staking Launchpad visszavonások](https://launchpad.ethereum.org/withdrawals) +- [EIP-4895: Beacon-lánc operációs műveletként intézi a visszavonásokat](https://eips.ethereum.org/EIPS/eip-4895) +- [Ethereum Cat Herders – Shanghai](https://www.ethereumcatherders.com/shanghai_upgrade/index.html) +- [PEEPanEIP #94: A letétbe helyezett ETH visszavonása (tesztelés) – Potuz & Hsiao-Wei Wang](https://www.youtube.com/watch?v=G8UstwmGtyE) +- [PEEPanEIP#68: EIP-4895: Beacon-lánc operációs műveletként intézi a visszavonásokat – Alex Stokes](https://www.youtube.com/watch?v=CcL9RJBljUs) +- [A validátor valós egyenlegének megértése](https://www.attestant.io/posts/understanding-validator-effective-balance/) diff --git a/src/content/translations/hu/web3/index.md b/src/content/translations/hu/web3/index.md new file mode 100644 index 00000000000..13e6e2d11d2 --- /dev/null +++ b/src/content/translations/hu/web3/index.md @@ -0,0 +1,161 @@ +--- +title: Mi az a Web3 és miért fontos? +description: Bevezetés a web3 világába, vagyis az internet következő evolúciójába, és abba, hogy miért is olyan fontos. +lang: hu +--- + +# Bevezetés a Web3 világába {#introduction} + +A centralizáció segített abban, hogy emberek milliárdjai használják az internetet, és megalapozta annak stabil, robosztus infrastruktúráját. Eközben néhány centralizált entitás tartja a kezében az internet nagy részét, és egyoldalúan eldönti, hogy mit szabad és mit nem. + +A Web3 a válasz erre a dilemmára. Ahelyett, hogy a web nagy technológiai cégek monopóliuma lenne, a web3 lényege a decentralizáció, így a felhasználók építik, működtetik és birtokolják. A Web3 az egyének kezébe helyezi a hatalmat a cégek helyett. Mielőtt mélyebben elmerülünk a Web3 világában, nézzük meg, hogyan jutottunk el idáig. + + + +## A web korai változatai {#early-internet} + +A legtöbben azt képzelik, hogy az internet egy folyamatos pillére a modern életnek – feltalálták és azóta létezik. Azonban a jelenlegi formája eléggé más, mint amit korábban elképzeltek. A web rövid történetében különböztessünk meg két időszakot: web 1.0 és web 2.0. + +### Web 1.0: csak olvasás (1990–2004) {#web1} + +1989-ben Genovában a CERN intézetében Tim Berners-Lee olyan protokollokon dolgozott, amelyek a web alapjaivá váltak. Mi volt az ő ötlete? Nyitott, decentralizált protokollok, melyek a világ egészén lehetővé teszik az információmegosztást. + +Berners-Lee alkotásának kezdeti értelmezése, melyet most web 1.0-ként ismerünk, nagyjából 1990 és 2004 között készült. A web 1.0 főleg statikus weboldalakból állt, melyeket cégek birtokoltak, szinte semmi interakció a felhasználók között – néha készítettek tartalmat –, ezért úgy ismert mint a „csak olvasási” időszak. + +![A web 1.0-t képviselő kliensszerver-architektúra](./web1.png) + +### Web 2.0: olvasás-írás (2004 – mostanáig) {#web2} + +A web 2.0 periódus 2004-ben indult, amikor megjelentek a közösségimédia-oldalak. A csak olvasás helyett kialakul az olvasás-írás kultúrája. Ahelyett, hogy a cégek adnának a felhasználónak tartalmat, olyan platformok keletkeztek, ahol a felhasználók adnak tartalmat és egymással lépnek interakcióba. Ahogy egyre több ember kezdte el használni, a cégek egy maroknyi csoportja aránytalanul nagy részét kezdte el kontrollálni a forgalomnak és a keletkező értéknek. A web 2.0 révén megszületett a reklámalapú bevételi modell. Miközben a felhasználók tartalmat készítenek, az nincs az ő birtokukban és nem is részesednek annak bevételéből. + +![A web 2.0-t képviselő kliensszerver-architektúra](./web2.png) + + + +## Web 3.0: olvasás-írás-tulajdonlás {#web3} + +A web3 kifejezést az [Ethereum](/what-is-ethereum/) társalapítója, Gavin Wood találta ki, röviddel az Ethereum 2014-es elindítása után. Gavin megfogalmazta azt a problémát, amit számos korai kriptobevezető érzett: a web túl sok bizalmat követel. Tehát a mai internet azon alapszik, hogy a felhasználó néhány vállalatra bízza, hogy azok a közösség érdeke szerint működjenek. + +![A Web3-at képviselő, decentralizált csomópont-architektúra](./web3.png) + +### Mi az a Web3? {#what-is-web3} + +A Web3 egy magával ragadó szóvá vált, amelyet minden olyanra értünk, ami újjá és jobbá teszi az internetet. A Web3 blokkláncokat, kriptovalutákat és nem helyettesíthető tokeneket (NFT) használ, hogy visszaadja a felhasználónak a tulajdonjogot. [Egy 2020-as Twitter-bejegyzés](https://twitter.com/himgajria/status/1266415636789334016) foglalta össze a legjobban: a web1 csak olvasás volt, a web2-nél az olvasásé és írásé a főszerep, a web3 az olvasás-írás-tulajdonlás világa lesz. + +#### A Web3 központi elképzelései {#core-ideas} + +Habár nehéz lenne egy pontos definíciót adni a Web3-ról, néhány központi elv irányítja a megalkotását. + +- **A Web3 decentralizált:** ahelyett, hogy nagy részét központi entitások uralnák és birtokolnák, a tulajdonlást elosztja az építői és felhasználói között. +- **A Web3 engedélymentes:** mindenkinek azonos joga van részt venni benne és senkit sem zárnak ki. +- **A Web3 saját fizetési móddal bír:** kriptovalutát használ a költésre és az online pénzküldésre ahelyett, hogy a bankok és fizetési szolgáltatások idejétmúlt infrastruktúráját használná. +- **A Web3 nem igényel bizalmat:** ösztönzők és gazdasági mechanizmusok révén működik, nem pedig megbízott harmadik feleken alapul. + +### Miért fontos a Web3? {#why-is-web3-important} + +Habár a Web3 lenyűgöző vonásai nem különülnek el ennyire és nem is tömörülnek egyértelmű kategóriákba, az egyszerűség kedvéért megpróbáljuk azokat külön bemutatni. + +#### Tulajdonlás {#ownership} + +A Web3 sosem látott módon ad a felhasználóknak képességet arra, hogy digitális eszközeiket saját maguk birtokolják. Tegyük fel, hogy Ön egy web2-es játékot játszik. Ha egy játékon belüli tételt megvásárol, akkor az közvetlenül a profiljához kapcsolódik. De ha a játék készítői törlik ezt a profilt, akkor elveszíti azokat a tételeket. Ha pedig nem játszik tovább, akkor elveszíti az értéket, amit azokba a tételekbe fektetett. + +A Web3 közvetlen tulajdonjogot ad [nem helyettesíthető tokenek (NFT)](/nft/) révén. Senki, még a játék készítői sem tudják elvenni ezt a jogot. Ha abbahagyja a játékot, akkor el tudja adni, kereskedni tud azokkal a nyitott piacokon és visszaszerezni az értékét. + + +
    Tudjon meg többet az NFT-kről
    + + Bővebben az NFT-kről + +
    + +#### Cenzúraálló kialakítás {#censorship-resistance} + +A platformok és a tartalomkészítők közötti hatalmi dinamika rettentő egyensúlytalan. + +Az OnlyFans oldal felnőtt tartalmat gyárt több mint 1 millió tartalomkészítővel, akik ebből szerzik jövedelmüket. 2021-ben a vezetés megtiltotta a túlzottan nyílt tartalmakat. Az alkotók felháborodtak, hogy az általuk felfutatott platform megfosztja őket a jövedelmüktől. Emiatt a döntést visszavonták. Ez is megmutatja a web2 fő problémáját: ha egy platformot el kell hagyjon egy alkotó, akkor elveszíti a reputációját és a követőit, amelyeket összegyűjtött. + +A Web3-ban az adat a blokkláncon él. Amikor valaki elhagyja a platformot, magával viheti a reputációját, akár egy másik felületre is, ami jobban megfelel az értékeinek. + +A web2-nél az alkotóknak meg kell bízni a platformban, hogy nem változtatja meg a szabályokat, ugyanakkor a Web3 alapvonása a cenzúrának való ellenállás. + +#### Decentralizált autonóm szervezetek (DAO-k) {#daos} + +Az adatok feletti tulajdonjog mellett a web3 a platformot is birtokolni lehet, mint egy gyűjthető dolgot, olyan tokenek révén, melyek egy cégben való részesedésként működnek. A DAO segít koordinálni a platform decentralizált tulajdonlását és döntéseket hozni a jövőt illetően. + +Ezek olyan okosszerződések, melyek automatizálják a decentralizált döntéshozást egy adott finanszírozási forrás felett (tokenek). A tokennel rendelkező felhasználók szavaznak, hogy hogyan költsék el a forrásokat, a programkód pedig automatikusan végrehajtja azt. + +Ugyanakkor számos Web3-közösséget is DAO-ként definiálnak. Ezek a közösségek más-más szintű decentralizációval és automatizációval rendelkeznek. Jelenleg még vizsgáljuk, hogy mi is az a DAO és hova fejlődik a jövőben. + + +
    Tudjon meg többet a DAO-król
    + + További információk a DAO-król + +
    + +### Identitás {#identity} + +Hagyományos módon minden platformra egy külön profilt kell létrehozni. Például Ön külön Twitter-, YouTube- és Reddit-profillal is rendelkezik. Meg szeretné változtatni a nevét vagy a képét? Minden egyes eszközön meg kell tennie. Használhat közösségimédia-alapú azonosítást néhány esetben, ez viszont visszamutat a korábbi témára, a cenzúrára. Ezek a platformok egyetlen kattintással kizárhatják Önt a teljes közösségi életéből. Ami még rosszabb, hogy ezek a platformok személyes azonosítókat kérnek el a profil létrehozásához. + +A Web3 úgy kezeli ezt, hogy mindenki kontrollálja a saját digitális személyazonosságát az Ethereum-cím és az ENS (Ethereum Névszolgáltatás) profil révén. Az Ethereum-cím használata egyszerre biztosít hozzáférést az összes platformhoz, ami biztonságos, ellenáll a cenzúrának és anonim. + + + Bejelentkezés az Ethereummal + + +### Saját fizetési rendszer {#native-payments} + +A web2 fizetési infrastruktúra a bankokra és fizetési szolgáltatókra támaszkodik, kizárva azokat, akik nem rendelkeznek bankszámlával, vagy éppen nem olyan országban élnek. A Web3 tokeneket használ, mint amilyen az [ETH](/eth/), hogy közvetlen módon tudjon pénzt küldeni, és nem kell hozzá harmadik fél. + + + Többet az ETH-ről + + +## Web3 korlátok {#web3-limitations} + +A Web3 számos előnye mellett még mindig vannak korlátok, amit az ökoszisztémának kezelnie kell, hogy virágozni tudjon. + +### Hozzáférhetőség {#accessibility} + +Az olyan fontos Web3-funkciók, mint a bejelentkezés az Ethereummal, már mindenki számára elérhetők ingyenesen. A tranzakciók költsége viszont még mindig sokakat kizár. A Web3-at a magas tranzakciós díjai miatt kevésbé tudják a szegényebb, fejlődő országok használni. Az Ethereumon ezeket a kihívásokat a [tervezett fejlesztések](/roadmap/) és [a második blokkláncréteg (L2) skálázási megoldásai](/developers/docs/scaling/) fogják kezelni. A technológia készen áll, az L2-n még magasabb felhasználási számot kell elérni ahhoz, hogy mindenkinek elérhető legyen a Web3. + +### Felhasználói tapasztalat {#user-experience} + +A Web3 használatának jelenleg túl nagy a technikai akadálya. A felhasználóknak meg kell érteni a biztonsági konszerneket, komplex technikai dokumentációkat, illetve nehézkes felhasználó felületeken kell navigálniuk. [A tárcaszolgáltatók](/wallets/find-wallet/) egyértelműen dolgoznak ennek megoldásán, de még ennél is több fejlesztésre van szükség a Web3 tömeges használatához. + +### Oktatás {#education} + +A Web3 új paradigmákat vezet be, melynek következtében más mentális modelleket kell elsajátítani, mint a web2 esetében. A web1 idején hasonló oktatás vette kezdetét az 1990-es években; a támogatók új oktatási technikákat használtak a nagy közönség tájékoztatására az egyszerű metaforák használatától (információs sztráda, böngészés, szörfölés) kezdve a [tévés programokig](https://www.youtube.com/watch?v=SzQLI7BxfYI). A Web3 nem bonyolultabb ennél, csak más. A web2-felhasználók tájékoztatása ezekről a Web3-as paradigmákról elengedhetetlen a sikerhez. + +Az Ethereum.org a [Fordítói program](/contributing/translation-program/) révén járul hozzá a Web3-oktatáshoz, hogy az Ethereum főbb tartalmai minél több nyelven elérhetők legyenek. + +### Centralizált infrastruktúra {#centralized-infrastructure} + +A Web3-ökoszisztéma fiatal és gyorsan fejlődik. Ennek következtében főleg centralizált infrastruktúrákon alapszik (GitHub, Twitter, Discord, etc.). Számos Web3-vállalat dolgozik azon, hogy ezt a hiányt betöltse, de a minőségi, megbízható infrastruktúra kiépítése időbe telik. + +## Egy decentralizált jövő {#decentralized-future} + +A Web3 egy fiatal és gyorsan fejlődő ökoszisztéma. Gavin Wood 2014-ben alkotta ezt a nevet, de számtalan elképzelés csak mostanában tudott valósággá válni. Jelentős növekedés tapasztalható a kriptovaluta, az L2 skálázási megoldások, az új irányítási formák és a digitális személyazonosság forradalmi újításainak világában. + +Ez még csak a kezdete annak, hogy az internet jobbá váljon a Web3-mal, és ahogy az alapot nyújtó infrastruktúra fejlődik, a web jövője igen bíztatónak tűnik. + +## Hogyan lehet ebben részt venni {#get-involved} + +- [Tárca szerzése](/wallets/) +- [Találjon egy közösséget](/community/) +- [Fedezze fel a Web3-alkalmazásokat](/dapps/) +- [DAO-hoz csatlakozás](/dao/) +- [Építsen a Web3-ra](/developers/) + +## További olvasnivaló {#further-reading} + +A Web3 nincs szigorúan definiálva. A közösségek különböző résztvevői más-más perspektívával bírnak. Néhány ezek közül: + +- [Mi az a Web3? Áttekintés a jövő decentralizált internetéről](https://www.freecodecamp.org/news/what-is-web3/) – _Nader Dabit_ +- [A Web3 értelmezése](https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae) – _Josh Stark_ +- [Miért számít a Web3](https://future.a16z.com/why-web3-matters/) — _Chris Dixon_ +- [Miért fontos a decentralizáció](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) – _Chris Dixon_ +- [A Web3 világa](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) – _a16z_ +- [A Web3 vita](https://www.notboring.co/p/the-web3-debate?s=r) – _Packy McCormick_ + + diff --git a/src/content/translations/hu/zero-knowledge-proofs/index.md b/src/content/translations/hu/zero-knowledge-proofs/index.md new file mode 100644 index 00000000000..39379117775 --- /dev/null +++ b/src/content/translations/hu/zero-knowledge-proofs/index.md @@ -0,0 +1,212 @@ +--- +title: Felfedés nélküli bizonyítás +description: A zero-knowledge bizonyítékok nem technikai bemutatása kezdők számára. +lang: hu +--- + +## 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. + +A zero-knowledge bizonyíték először egy 1985-ös, „[Az interaktív bizonyítási rendszerek ismereti komplexitása](http://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Proof%20Systems/The_Knowledge_Complexity_Of_Interactive_Proof_Systems.pdf)” című tanulmányban jelent meg, mely a zero-knowledge bizonyítékok ma is használt definícióját adja: + +> A zero-knowledge protokoll egy olyan módszer, amelynek révén az egyik fél (bizonyító) bizonyítja egy másik félnek (ellenőrző), hogy valami igaz, anélkül hogy bármit feltárna előtte, kivéve azt, hogy ez az állítás igaz. + +A zero-knowledge bizonyítékok az elmúlt években tovább fejlődtek, és ma már számos valódi alkalmazásban használjuk ezeket. + +## Miért kellenek a zero-knowledge bizonyítékok? {#why-zero-knowledge-proofs-are-important} + +A zero-knowledge bizonyítékok az alkalmazott kriptográfia egyik áttörése, mivel az egyének számára jobb információbiztonságot ígérnek. Gondoljon bele, hogyan bizonyít egy állítást (pl. „X ország állampolgára vagyok”) egy másik félnek (pl. egy szolgáltatásnyújtónak). Bizonyítékot kell adnia ahhoz, hogy az állítását alátámassza, mint az útlevelét vagy a vezetői engedélyét. + +Ennél azonban jelentős adatvédelmi kockázat áll fenn. A személyazonosításra alkalmas információk (PII), melyeket egy harmadik félnek ad át, központi adatbázisokban vannak tárolva, melyek sebezhetők a támadókkal szemben. Mivel a személyazonosság ellopása kritikus problémává válik, komolyabb adatvédelmi intézkedésekre van szükség a bizalmas információk megosztásánál. + +A zero-knowledge bizonyítékok megoldják ezt a problémát, mert az állítás igazát az információ feltárása nélkül tudják igazolni. A zero-knowledge protokoll az állítást (amit tanúnak nevez) használja bemenetként, hogy egy tömör bizonyítványt állítson ki az érvényességéről. Ez a bizonyíték egy erős garanciát ad, hogy az állítás igaz, de nem tár fel semmit abból, amit ehhez felhasznált. + +A korábbi példánál maradva a nemzetiséget egyedül a zero-knowledge bizonyítékkal kell igazolnia. Az ellenőrző csak azt nézi meg, hogy a bizonyíték bizonyos jellemzői igazak, hogy meggyőződjön az állítás igaz voltáról. + +## Hogyan működik a zero-knowledge bizonyíték? {#how-do-zero-knowledge-proofs-work} + +A zero-knowledge bizonyíték által úgy igazolódik egy állítás igazsága, hogy abból bármi kiderülne vagy abból a módból, ahogy az igazolva lett. Ehhez a zero-knowledge protokollok olyan algoritmusokat használnak, melyek adatokat dolgoznak fel és válaszként igaz vagy hamis eredményt adnak. + +A zero-knowledge protokollnak a következő kritériumoknak kell megfelelniük: + +1. **Teljesség**: ha az input érvényes, akkor a zero-knowledge protokoll válasza mindig az, hogy „igaz”. Tehát ha az állítás igaz, a bizonyító és az ellenőrző jóhiszeműen viselkedik, akkor a bizonyítékot el lehet fogadni. + +2. **Megbízhatóság**: ha az input érvénytelen, akkor elméletileg lehetetlen átverni a zero-knowledge protokollt, hogy azt „igaznak” vegye. Így a rosszhiszemű bizonyító nem tudja átverni a jóhiszemű ellenőrzőt, hogy elhiggye az érvénytelen állításról, hogy az érvényes (csak egy nagyon kicsi valószínűséggel). + +3. **Zero-knowledge**: Az ellenőrző semmit sem tud meg az állításról, csak azt, hogy érvényes vagy érvénytelen-e (nulla ismerete lesz az állításról). Ez megakadályozza, hogy az ellenőrző kinyerje az eredeti inputot (az állítás tartalmát) a bizonyítékból. + +Alapformájában a zero-knowledge bizonyíték három elemből áll: **tanú**, **kihívás** és **válasz**. + +- **Tanú**: A zero-knowledge bizonyítékkal a bizonyító valamilyen titkos információ ismeretét akarja bizonyítani. A titkos információ a bizonyíték „tanúja”, és az a tény, hogy a bizonyítónak feltételezett módon ismerete van erről a tanúról, egy sor kérdést generál, melyet csak az tud megválaszolni, aki ismeri az információt. A bizonyító a bizonyítási eljárást azzal kezdi, hogy véletlenszerűen választ egy kérdést, kikalkulálja a választ és elküldi az ellenőrzőnek. + +- **Kihívás**: Az ellenőrző véletlenszerűen választ egy kérdést a sorozatból, és megkéri a bizonyítót, hogy feleljen rá. + +- **Válasz**: A bizonyító elfogadja a kérdést, kikalkulálja a választ, és elküldi az ellenőrzőnek. A bizonyító válasza lehetővé teszi, hogy az ellenőrző meggyőződjön arról, az előbbi tényleg hozzáfér a tanúhoz. Ahhoz, hogy meggyőződjön arról, a bizonyító nem csak vakon tippel és véletlenül adta meg a jó választ, még több kérdést tesz fel. Ezt a folyamatot ismételve annak a valószínűsége, hogy a bizonyítónak nincs is ismerete a tanúról, szignifikánsan lecsökken, míg az ellenőrző elégedetté válik. + +A fenti egy interaktív zero-knowledge bizonyítékstruktúrát ír le. A korai zero-knowledge protokollok interaktív igazolást használtak, ami oda-vissza kommunikációt igényelt a bizonyító és az ellenőrző között. + +Ennek illusztrálására egy jó példa Jean-Jacques Quisquater híres [Ali Baba barlangtörténete](https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave). A történetben Peggy (a bizonyító) bizonyítani akarja Victornak (az ellenőrzőnek), hogy tudja a titkos jelszót, ami kinyitja a varázsajtót, de nem akarja elárulni, mi az. + +### Nem interaktív zero-knowledge bizonyítékok {#non-interactive-zero-knowledge-proofs} + +Miközben forradalmi, az interaktív bizonyítás hasznossága behatárolt, mert a két félnek elérhetőnek kell lennie és többször kell kapcsolatba lépniük. Még akkor is, ha az ellenőrző meggyőződött a bizonyító őszinteségéről, a bizonyíték ekkor még nem lesz elérhető a független ellenőrzésre (egy új bizonyítékot kell küldeni, ami egy újabb üzenetváltás). + +Ennek megoldására Manuel Blum, Paul Feldman és Silvio Micali az első [nem interaktív zero-knowledge bizonyítékot](https://dl.acm.org/doi/10.1145/62212.62222) javasolta, ahol a bizonyító és az ellenőrző egy megosztott kulccsal rendelkezik. Ez lehetővé teszi a bizonyítónak, hogy az információ (a tanú) ismeretét úgy bizonyítsa, hogy nem adja ki azt. + +Az interaktívhoz képest itt csak egy kommunikáció történik a felek (bizonyító és ellenőrző) között. A bizonyító a titkos információt átadja egy speciális algoritmusnak, hogy az kikalkulálja a zero-knowledge bizonyítékot. Ezt elküldi az ellenőrzőnek, aki egy másik algoritmussal ellenőrzi azt, hogy a bizonyító tényleg ismeri a titkot. + +A nem interaktív bizonyítás lecsökkenti a szükséges kommunikációt, így a ZK-bizonyíték sokkal hatékonyabb. Sőt, a bizonyíték létrehozásával az mindenkinek elérhetővé válik (akinek van megosztott kulcsa és ellenőrző algoritmusa) ellenőrzésre. + +A nem interaktív bizonyítékok áttörést hoztak a ZK technológiának és a ma létező bizonyítórendszerek fejlesztését hozták el. Az alábbiakban áttekintjük ezeket a bizonyítéktípusokat: + +### A zero-knowledge bizonyítékok típusai {#types-of-zero-knowledge-proofs} + +#### ZK-SNARKs {#zk-snarks} + +ZK-SNARK a rövidítés a **zero-knowledge tömörített nem interaktív érv ismeretre (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)**. A ZK-SNARK protokoll a következő jellemzőkkel bír: + +- **Zero-knowledge**: Az ellenőrző az állítás integritását úgy tudja ellenőrizni, hogy nem tud róla semmit. Csak arról van tudomása, hogy az állítás igaz vagy hamis. + +- **Tömörített**: A zero-knowledge bizonyíték kisebb a tanúnál és gyorsan ellenőrizhető. + +- **Nem interaktív**: A bizonyító és az ellenőrző csak egyszer kommunikál, miközben az interaktív bizonyítéknál több körben is egyeztetnek. + +- **Érv**: A bizonyíték kielégíti a megbízhatósági követelményt, így a csalás rendkívül valószínűtlen. + +- **Ismeret**: A bizonyíték nem rakható össze a titkos információ (tanú) ismerete nélkül. Nehéz vagy egyenesen lehetetlen egy bizonyító számára kikalkulálni egy érvényes ZK-bizonyítékot, ha nem ismeri a tanút. + +A korábban említett megosztott kulcs nyilvános paraméterekre hivatkozik, amelyekben a bizonyító és az ellenőrző megegyezik, hogy ezeket használja a bizonyíték létrehozásában és ellenőrzésében. A nyilvános paraméterek létrehozása (Common Reference String/CRS) egy kényes művelet, mivel a protokoll biztonsága múlik rajta. Ha a CRS-t létrehozó entrópia/véletlenszerűség egy rosszhiszemű bizonyító kezébe kerül, akkor hamis bizonyítékokat tud kalkulálni vele. + +[A többrésztvevős kalkuláció (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) ezt a kockázatot csökkenti a nyilvános paraméterek létrehozása kapcsán. Több résztvevő van jelen egy [bizalmat igénylő összetételi ceremónián](https://zkproof.org/2021/06/30/setup-ceremonies/amp/), ahol mindenki hozzátesz véletlenszerű értékeket a CRS létrehozásához. Amíg egy jóhiszemű fél megsemmisíti az entrópia saját részét (így nem lehet teljesen összeállítani a sorozatot), addig a ZK-SNARK protokoll megőrzi a kalkulációs megbízhatóságát. + +A bizalmat igénylő összetétel esetén a felhasználónak bíznia kell a résztvevőkben, amikor azok létrehozzák a paramétereket. Ugyanakkor a ZK-STARK-ok kifejlesztése lehetővé tette a bizonyító protokolloknak, hogy bizalomigénytől mentes felállásban is működjenek. + +#### ZK-STARKs {#zk-starks} + +ZK-STARK a rövidítés a **zero-knowledge skálázható transzparens érv ismeretre (Zero-Knowledge Scalable Transparent Argument of Knowledge)**. A ZK-STARK-ok hasonlítanak a ZK-SNARK-okra, kivéve, hogy: + +- **Skálázható**: ZK-STARK gyorsabb, mint a ZK-SNARK a bizonyíték létrehozásában és ellenőrzésében, amikor a tanú nagyobb méretű. A STARK bizonyítékoknál a bizonyítás és az ellenőrzés ideje csak enyhén növekszik, ahogy a tanú mérete nő (míg a SNARK esetén a növekedés lineáris). + +- **Transzparens**: ZK-STARK nyilvánosan ellenőrizhető véletlenszerűségre támaszkodik, hogy létrehozza a nyilvános paramétereket a bizonyításhoz és az ellenőrzéshez, nem egy bizalmat igénylő összetételre. Ezért sokkal átláthatóbbak a ZK-SNARK-okhoz képest. + +ZK-STARK-ok nagyobb bizonyítékokat készítenek, mint a ZK-SNARK-ok, ezért magasabb az ellenőrzési költség. Ugyanakkor bizonyos esetekben (mint nagy adathalmazok bizonyítása) a ZK-STARK-ok mégis költséghatékonyabbak a ZK-SNARK-okhoz képest. + +## A zero-knowledge bizonyítékok alkalmazási területei {#use-cases-for-zero-knowledge-proofs} + +### Anonim fizetések {#anonymous-payments} + +A bankkártyafizetések sokszor láthatók több fél számára is, beleértve a fizetési szolgáltatót, a bankokat és más érdekelteket (pl. kormányzati hatóságok). Míg a pénzügyi felügyeletnek vannak előnyei az illegális tevékenységek feltárásában, közben aláássa a hétköznapi emberek magánéletét. + +A kriptovalutákat arra szánták, hogy a felhasználók privát, egymás közötti (peer-to-peer) tranzakciókat hajthassanak végre. Ugyanakkor a legtöbb kriptovalutás tranzakció nyíltan látható a nyilvános blokkláncokon. A felhasználók személyazonosságai gyakran közvetettek és vagy direkt kapcsolódnak valós azonosságukhoz (pl. a Twitter vagy GitHub profil tartalmazza az ETH címüket), vagy összekapcsolhatók alapvető láncon belüli és kívüli adatok elemzésével. + +Vannak bizonyos privát tokenek, hogy teljesen anonim tranzakciókat lehessen végrehajtani. A privát jelleget védő blokkláncok, mint a Zcash és Monero, elfedik a tranzakciók adatait, mint a küldő/fogadó címe, az eszköz típusa, a mennyiség, az időpont. + +A zero-knowledge technológiát bedolgozva a protokollba, a privát jelleget védő blokklánchálózatok megengedik a csomópontoknak, hogy anélkül validálják a tranzakciókat, hogy azt el kellene érniük. + +A zero-knowledge bizonyítékokat arra is használják, hogy a nyilvános blokkláncokon anonimmá tegyék a tranzakciókat. Erre a Tornado Cash a példa, ami egy decentralizált, nem felügyelt szolgáltatás, ami privát tranzakciókat tesz lehetővé az Ethereumon. Ez a megoldás zero-knowledge bizonyítékokat használ, hogy elfedje a tranzakció adatait és pénzügyi titoktartást garantál. Sajnos, mivel ezek tetszőlegesen választható adatvédő eszközök, ezért rögtön illegális tevékenységet sejtetnek. Ennek megoldására a privát jellegű adatok védelme végül alapvetővé kell váljon a nyilvános blokkláncokon. + +### A személyazonosság védelme {#identity-protection} + +A jelenlegi személyazonosságot kezelő rendszerek veszélyeztetik a személyes információkat. A zero-knowledge bizonyítékok segíthetnek az egyéneknek azonosítani magukat, miközben megvédik az adataikat. + +Ezek kiemelten fontosak a [decentralizált személyazonosság](/decentralized-identity/) kontextusában. A decentralizált személyazonosság (vagy független személyazonosság) lehetővé teszi, hogy az egyén kontrollálja a személyes azonosítóihoz való hozzáférést. Az állampolgárság igazolása adóazonosító vagy útlevéladatok felfedése nélkül egy jó példa arra, hogy a zero-knowledge technológia hogyan teszi lehetővé a decentralizált személyazonosság-ellenőrzést. + +### Hitelesítés {#authentication} + +Az online szolgáltatások használatához igazolni kell a személyazonosságot és a hozzáférési jogot az adott platformhoz. Ez gyakran az olyan személyes adatok megadásával történik, mint név, e-mail-cím, születési dátum stb. Emellett hosszú jelszavakat kell megjegyezni, de a hozzáférés akár el is veszhet. + +A zero-knowledge bizonyítékok ugyanakkor leegyszerűsíthetik az azonosítást a platformok és a felhasználók számára is. Amint a ZK-bizonyíték elkészült a nyilvános inputok (pl. a platformtagságot tanúsító adat) és privát inputok (pl. a személy adatai) használatával, akkor a felhasználó egyszerűen azzal igazolja magát, amikor a szolgáltatást használni akarja. Ez javítja a felhasználói tapasztalatot, illetve mentesíti a szervezeteket, hogy nagy adag személyes információt tároljanak. + +### Igazolható kalkuláció {#verifiable-computation} + +Az igazolható kalkuláció egy másik alkalmazása a ZK technológiának, hogy fejlessze a blokklánc kialakítását. Az igazolható kalkuláció által a kalkulációt másik entitás is végezheti, miközben az igazolható eredményeket fenntartjuk. A másik fél átadja az eredményeket a bizonyítékkal együtt, ami igazolja, hogy a program megfelelően futott. + +Ez egy kritikus megoldás a feldolgozási sebesség fejlesztésére a blokkláncon, anélkül hogy csökkenne a biztonság. Ennek megértéséhez ismerni kell az Ethereum skálázási megoldásai közötti eltéréseket. + +[A láncon belüli skálázási megoldások](/developers/docs/scaling/#on-chain-scaling), mint amilyen a párhuzamos futtatás (sharding), nagy mértékű módosítást igényelnek a blokklánc alaprétegén. Ez a megközelítés ugyanakkor nagyon komplex, az bevezetés hibái pedig alááshatják az Ethereum biztonsági modelljét. + +[A láncon kívüli skálázási megoldásokhoz](/developers/docs/scaling/#off-chain-scaling) nem kell az Ethereum protokollt újratervezni. Ehelyett egy kiszervezett kalkulációs modellre támaszkodnak, hogy fejlesszék a tranzakcióátvitelt az Ethereum alaprétegen. + +Ez a gyakorlatban a következőképpen működik: + +- Az Ethereum nem dolgozza fel a tranzakciókat egyesével, hanem kirakja a végrehajtást egy másik láncra. + +- A tranzakciók feldolgozása után a másik lánc visszaküldi az eredményt, ami az Ethereum-státusz része lesz. + +Az Ethereumnak tehát nem kell feldolgozni semmit, csak az eredményeket kell beilleszteni. Ez csökkenti a hálózat leterheltségét és fejleszti a tranzakciós sebességet (a láncon kívüli protokoll gyorsabb végrehajtásra van optimalizálva). + +A láncnak szüksége van arra, hogy validálni tudja a láncon kívüli tranzakciókat anélkül, hogy újra feldolgozná azokat, különben a külső feldolgozás értéke elveszik. + +Itt jön a képbe az igazolható kalkuláció. Amikor egy csomópont feldolgoz egy tranzakciót az Ethereumon kívül, akkor egy zero-knowledge bizonyítékot ad, hogy bizonyítsa a láncon kívüli végrehajtás helyességét. Ez a bizonyíték ([érvényességi bizonyíték](/glossary/#validity-proof)) garantálja, hogy a tranzakció érvényes, így az Ethereum hozzáadhatja a lánc státuszához – anélkül, hogy bárki kifogásolhatná azt. + +[A zero-knowledge rollupok](/developers/docs/scaling/zk-rollups) és [a validiumok](/developers/docs/scaling/validium/) két olyan láncon kívüli, skálázási megoldás, amely érvényességi bizonyítékot ad, hogy a skálázás biztonságos legyen. Ezek a protokollok ezernyi tranzakciót dolgoznak fel láncon kívül és bizonyítékot adnak az Ethereumnak ellenőrzési célból. Amint a bizonyíték ellenőrzésre kerül, az eredményeket azonnal be lehet tenni a láncba, így az Ethereum több tranzakciót tud kezelni anélkül, hogy az alapréteg számítási kapacitását növelni kellene. + +### A vesztegetés és összejátszás lehetőségének csökkentése a láncon belüli szavazásnál {#secure-blockchain-voting} + +A blokklánc szavazási sémái számos kedvező vonással bírnak: teljesen auditálható, nem támadható, ellenáll a cenzúrának és nem kötik földrajzi megszorítások. De még ezek sem immunisak az **összejátszás** problémájára. + +Az összejátszás definíciója a nyílt verseny redukálása megtévesztéssel, csalással és félrevezetéssel, ami felöltheti a vesztegetés formáját, mellyel egy rosszhiszemű szereplő befolyásolni akar egy szavazást. Például Alice kaphat egy összeget Bobtól azért, hogy szavazzon a `B opcióra` egy titkos szavazáson, miközben ő maga az `A opciót` preferálja. + +A vesztegetés és összejátszás behatárolja a hatékonyságát azoknak a folyamatoknak, melyek a szavazást használják jelzőmechanizmusra (főleg amikor a felhasználók bizonyítani tudják, hogyan szavaztak). Ennek komoly következményei vannak, főleg ahol véges erőforrást allokálnak a szavazás révén. + +Például a [kvadratikus finanszírozási mechanizmus](https://www.radicalxchange.org/concepts/plural-funding/) adományokon alapszik, hogy mérje bizonyos opciók támogatottságát a különféle közjóra törekvő projektek között. Minden adomány szavazatként működik egy adott projektre, ahol a több szavazattal bíró projektek nagyobb részt kapnak a finanszírozási alapból. + +A láncon belüli szavazás kiteszi a kvadratikus finanszírozást az összejátszás kockázatának: a blokklánctranzakciók nyilvánosak, így a vesztegetők meg tudják nézni, hogy a megvesztegetett hogyan szavazott. Így a kvadratikus finanszírozás nem lesz hatékony módja a forráselosztásnak a közösség aggregált preferenciái alapján. + +Szerencsére újabb megoldások, mint amilyen a MACI (Minimum összejátszás-ellenes infrastruktúra/Minimum Anti-Collusion Infrastructure), zero-knowledge bizonyítékokat használ, hogy a láncon belüli szavazás ellenálló legyen a vesztegetéssel és összejátszással szemben. A MACI okosszerződésekből és szkriptekből áll, és lehetővé teszi egy központi adminisztrátor (a koordinátor) számára, hogy aggregálja a szavazatokat és kiszámolja az eredményeket, _anélkül_, hogy felfedné az egyéni szavazatok tartalmát. Még így is bizonyítani lehet, hogy a szavazatokat megfelelően számolták össze, illetve egy adott illető részt vette-e a szavazáson. + +#### Hogyan működik a MACI a zero-knowledge bizonyítékokkal? {#how-maci-works-with-zk-proofs} + +Először a koordinátor aktiválja a MACI szerződést az Ethereumon, majd a felhasználók jelentkezhetnek a szavazásra (regisztrálják a nyilvános kulcsukat az okosszerződésben). A felhasználók úgy szavaznak, hogy a nyilvános kulcsukkal titkosított üzenetet küldenek az okosszerződésnek (az érvényes szavazatot a legfrissebb nyilvános kulccsal kell aláírni, egyéb kritériumok mellett). Majd a koordinátor feldolgozza az összes üzenetet a szavazás lezárultával, megszámlálja azokat, és igazolja az eredményt a láncon. + +A MACI-ban a zero-knowledge bizonyítékok biztosítják a kalkuláció helyességét, így a koordinátor nem tudja azokat helytelenül feldolgozni és összesíteni. Ehhez a koordinátornak ZK-SNARK bizonyítékokat kell generálnia, hogy igazolja a) minden üzenetet megfelelően feldolgozott; b) a végső eredmény egyezik a _valid_ szavazatok számával. + +Így a MACI még a szavazatok felhasználónkénti megosztása nélkül is garantálja a számlálási folyamat során kiszámított eredmények integritását. Ez csökkenti az alapvető összejátszási sémák hatékonyságát. Megvizsgálhatjuk ezt a lehetőséget, ha felhasználjuk az előző példát, amikor Bob megvesztegette Alice-t, hogy egy opció mellett szavazzon: + +- Alice szavazásra jelentkezik, elküldve a nyilvános kulcsát az okosszerződésnek. +- Alice beleegyezik, hogy a `B opcióra` szavaz, és ezért Bob fizetni fog neki. +- Alice a `B opcióra` szavaz. +- Alice titokban küld egy titkosított tranzakciót, hogy megváltoztassa a személyazonosságához tartozó nyilvános kulcsot. +- Alice küld egy másik titkosított üzenetet az okosszerződésnek, hogy az `A opcióra` szavaz, az új nyilvános kulcsot használva. +- Alice megmutatja Bobnak a tranzakciót, melyben a `B opcióra` szavazott (ami érvénytelen, mert az a nyilvános kulcs már nem kapcsolódik Alice személyazonosságához a rendszerben) +- Miközben az üzeneteket dolgozza fel a koordinátor, kihagyja Alice szavazatát a `B opcióra` és beleszámolja azt, amit az `A opcióra` adott le. Így Bob próbálkozása, hogy összejátsszon Alice-szel és manipulálja a láncon belüli szavazást, kudarcot vallott. + +A MACI használatához ugyanakkor _muszáj_ megbízni a koordinátorban, hogy nem játszik össze másokkal vagy vesztegeti meg a szavazókat. A koordinátor képes feloldani az üzenetek titkosítását (ez kell a bizonyíték előállításához), így be tudja azonosítani, hogy ki hogyan szavazott. + +Ha a koordinátor jóhiszeműen jár el, akkor a MACI egy kiváló eszköz arra, hogy garantálja a láncon belüli szavazás szentesítését. Ez megmagyarázza a népszerűségét a kvadratikus finanszírozási alkalmazásokban (mint amilyen a [clr.fund](https://clr.fund/#/about/maci)), ami nagy mértékben függ az egyének szavazásának integritásától. + +[Bővebben a MACI-ról](https://github.com/privacy-scaling-explorations/maci/blob/master/specs/01_introduction.md). + +## A zero-knowledge bizonyítékok hátulütői {#drawbacks-of-using-zero-knowledge-proofs} + +### Hardverköltségek {#hardware-costs} + +A zero-knowledge bizonyítékok generálása nagyon összetett kalkulációt igényel, amit specializált gépeken lehet a legjobban elvégezni. Mivel ezek drágák, ezért nem elérhetők a hétköznapi emberek számára. Emellett a technológiát használó alkalmazásoknak ezt a költséget bele kell kalkulálniuk az áraikba, így megnövelik a felhasználók költségeit is. + +### A bizonyíték ellenőrzésének költsége {#proof-verification-costs} + +A bizonyítékok ellenőrzése is összetett kalkulációt igényel és megnöveli a technológia bevezetésének költségét az alkalmazásokban. Ez a költség még inkább releváns a bizonyítási kalkuláció kontextusában. Például a ZK-rollupok kb. 500 000 gázt fizetnek, hogy egyetlen ZK-SNARK bizonyítékot ellenőrizzenek az Ethereumon, a ZK-STARK-ok pedig még ennél is többe kerülnek. + +### Bizalmi feltételezések {#trust-assumptions} + +A ZK-SNARK-ban a CRS (nyilvános paraméterek) egyszer kerül létrehozásra és azt újrahasználhatják a felek, akik részt akarnak venni a zero-knowledge protokollban. A nyilvános paramétereket egy bizalmat igénylő összetételi ceremónia révén hozzák létre, ahol a résztvevőkről feltételezzük, hogy jóhiszeműek. + +A felhasználók azonban nem tudják ellenőrizni a résztvevők jóhiszeműségét, meg kell bízniuk a fejlesztőkben. A ZK-STARK-ok mentesek az ilyen bizalomigénytől, mivel a véletlenszerűség nyilvánosan igazolható. Eközben a kutatók dolgoznak a ZK-SNARK-ok bizalomigénynélküli verzióján, hogy növeljék a bizonyítási mechanizmus biztonságát. + +### A kvantumszámítógép fenyegetései {#quantum-computing-threats} + +A ZK-SNARK elliptikus görbe alapú kriptográfiát ([ECDSA](/glossary/#ecdsa)) használ a titkosításra. Ez az algoritmus most biztonságos, de a kvantumszámítógépek meg tudják majd törni ezt a biztonsági modellt a jövőben. + +A ZK-STARK immunis a kvantumszámítógépek fenyegetésére, mert ütközésálló hash-függvényeket használ a titkosításra. Ezt az algoritmust nehezebb feltörni a kvantumszámítógépnek, nem úgy, mint a nyilvános-privát kulcs párosát, melyet az elliptikusgörbe-alapú kriptográfia használ. + +## További olvasnivaló {#further-reading} + +- [Az informatikus egy koncepciót 5 nehézségi szinten tár fel | WIRED](https://www.youtube.com/watch?v=fOGdb1CTu5c) – _Wired YouTube channel_ +- [A zero-knowledge bizonyítékok alkalmazási területeinek áttekintése](https://appliedzkp.org/#Projects) — _Privacy and Scaling Explorations Team_ +- [A SNARK-ok, a STARK-ok és a rekurzív SNARK-ok összehasonlítása](https://www.alchemy.com/overviews/snarks-vs-starks) — _Alchemy Overviews_ +- [Zero-Knowledge bizonyíték: az adatbiztonság javítása a blokkláncon](https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/) — _Dmitry Lavrenov_ +- [zk-SNARK-ok — Egy valós zero-knowledge példa és mélyebb elemzése](https://medium.com/coinmonks/zk-snarks-a-realistic-zero-knowledge-example-and-deep-dive-c5e6eaa7131c) — _Adam Luciano_ +- [ZK-STARK-ok — Igazolható bizalom létrehozása, még a kvantumszámítógépekkel szemben is](https://medium.com/coinmonks/zk-starks-create-verifiable-trust-even-against-quantum-computers-dd9c6a2bb13d) — _Adam Luciano_ +- [Egy hozzávetőleges áttekintés, hogyan lehetségesek a zk-SNARK-ok](https://vitalik.ca/general/2021/01/26/snarks.html) — _Vitalik Buterin_ +- [Mi az a zero-knowledge bizonyíték és mi a szerepe a blokkláncon?](https://www.leewayhertz.com/zero-knowledge-proof-and-blockchain/) — _LeewayHertz_ diff --git a/src/content/translations/id/developers/docs/oracles/index.md b/src/content/translations/id/developers/docs/oracles/index.md index 10a9457a3d8..84abfc985d5 100644 --- a/src/content/translations/id/developers/docs/oracles/index.md +++ b/src/content/translations/id/developers/docs/oracles/index.md @@ -347,8 +347,8 @@ contract Oracle { ) public { - uint lenght = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, "")); - Request storage r = requests[lenght-1]; + uint length = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, "")); + Request storage r = requests[length-1]; // Hardcoded oracles address r.quorum[address(0x6c2339b46F41a06f09CA0051ddAD54D1e582bA77)] = 1; diff --git a/src/content/translations/id/developers/docs/scaling/layer-2-rollups/index.md b/src/content/translations/id/developers/docs/scaling/layer-2-rollups/index.md index 6fb6f1a8347..94aa4c26a03 100644 --- a/src/content/translations/id/developers/docs/scaling/layer-2-rollups/index.md +++ b/src/content/translations/id/developers/docs/scaling/layer-2-rollups/index.md @@ -143,7 +143,7 @@ Solusi hibrida ada dengan menggabungkan bagian terbaik dari berbagai teknologi l - [Semua yang perlu Anda ketahui tentang Rollup Optimistic](https://research.paradigm.xyz/rollups) - [Panduan Penting untuk Arbitrum](https://newsletter.banklesshq.com/p/the-essential-guide-to-arbitrum) -- [Bagaimana Rollup Optimism benar-benar berfungsi?](https://research.paradigm.xyz/optimism) +- [Bagaimana Rollup Optimism benar-benar berfungsi?](https://www.paradigm.xyz/2021/01/how-does-optimisms-rollup-really-work) - [OVM Deep Dive](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52) **Solusi Hibrida** diff --git a/src/content/translations/id/developers/docs/smart-contracts/anatomy/index.md b/src/content/translations/id/developers/docs/smart-contracts/anatomy/index.md index 1d54723292a..22c4617e742 100644 --- a/src/content/translations/id/developers/docs/smart-contracts/anatomy/index.md +++ b/src/content/translations/id/developers/docs/smart-contracts/anatomy/index.md @@ -96,7 +96,7 @@ function update_name(string value) public { } ``` -- `value` parameter dari `string` jenis diteruskan ke dalam fungsi: `update_name` +- `Nilai` parameter dari `string` jenis diteruskan ke dalam fungsi: `update_name` - Fungsi dideklarasikan sebagai `public`, berarti siapa pun bisa mengaksesnya - Fungsi tidak dideklarasikan sebagai `view`, sehingga bisa memodifikasi state kontrak @@ -137,7 +137,7 @@ Fungsi `constructor` hanya dijalankan sekali saat kontrak digunakan untuk pertam ```solidity // Contoh Solidity -// Jalankan data kontrak, siapkan `owner` +// Jalankan data kontrak, siapkan `pemilik` // sesuai dengan alamat dari pembuat kontrak. constructor() public { // Semua kontrak pintar bergantung pada transaksi eksternal untuk memicu fungsinya. @@ -179,7 +179,7 @@ Fungsi Anda memerlukan: ```solidity pragma solidity >=0.4.0 <=0.6.0; -kontrak ExampleDapp { +contract ExampleDapp { string dapp_name; // state variable // Dipanggil saat kontrak disebarkan dan jalankan nilai @@ -224,7 +224,7 @@ contract HelloWorld { // Deklarasikan `message` variabel state dari `string` tipe. // Variabel state adalah variabel yang nilainya secara permanen disimpan dalam penyimpanan kontrak. - // Kata kunci `public` membuat variabel dapat diakses dari luar kontrak + // Kata kunci `publik` membuat variabel dapat diakses dari luar kontrak //dan menciptakan fungsi yang dengannya kontrak atau klien lain bisa memanggil untuk mengakses nilai. string public message; @@ -239,7 +239,7 @@ contract HelloWorld { } // Sebuah fungsi publik yang menerima argumen string - // dan memperbarui variabel penyimpanan `message`. + // dan memperbarui variabel penyimpanan`message`. function update(string memory newMessage) public { message = newMessage; } @@ -252,7 +252,7 @@ contract HelloWorld { pragma solidity ^0.5.10; contract Token { - //Sebuah `address` dapat disamakan dengan sebuah alamat email - ia digunakan untuk mengidentifikasi sebuah akun di Ethereum. + //Sebuah `alamat` dapat disamakan dengan sebuah alamat email - ia digunakan untuk mengidentifikasi sebuah akun di Ethereum. // Alamat bisa mewakilkan sebuah kontrak pintar atau satu akun (pengguna) eksternal. // Pelajari lebih banyak: https://solidity.readthedocs.io/en/v0.5.10/types.html#address address public owner; @@ -267,7 +267,7 @@ contract Token { // Pelajari lebih banyak: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#events event Transfer(address from, address to, uint amount); - // Jalankan data kontrak, siapkan `owner` + // Jalankan data kontrak, siapkan `pemilik` // di alamat dari pembuat kontrak. constructor() public { // Semua kontrak pintar bergantung pada transaksi eksternal untuk memicu fungsinya. @@ -280,7 +280,7 @@ contract Token { // Membuat sejumlah token baru dan mengirimkan mereka ke satu alamat. function mint(address receiver, uint amount) public { // `require` is struktur kontrol yang digunakan untuk melaksanakan kondisi tertentu. - // Jika sebuah pernyataan `require` mengevaluasi ke `false`, satu pengecualian terpicu, + // Jika sebuah pernyataan `require` mengevaluasi ke `palsu`, satu pengecualian terpicu, // yang membalikkan semua perubahan yang dibuat pada state selama pemanggilan saat ini. //Pelajari lebih banyak: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions @@ -333,51 +333,55 @@ contract CryptoPizza is IERC721, ERC165 { // Variabel state konstan di Solidity sama dengan bahasa lainnya // tapi Anda harus menetapkan satu ekpresi yang konstan pada waktu pengompilasian. - // Pelajari lebih banyak: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constant-state-variables + // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constant-state-variables uint256 constant dnaDigits = 10; uint256 constant dnaModulus = 10 ** dnaDigits; bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; - // Tipe Struct memungkinkan Anda menentukan tipe Anda - //Pelajari lebih banyak: https://solidity.readthedocs.io/en/v0.5.10/types.html#structs + // Struct types let you define your own type + // Learn more: https://solidity.readthedocs.io/en/v0.5.10/types.html#structs struct Pizza { string name; uint256 dna; } - // Buat satu array kosong dari struct Pizza + // Creates an empty array of Pizza structs Pizza[] public pizzas; - // Mapping dari ID pizza ke alamat pemiliknya + // Mapping from pizza ID to its owner's address mapping(uint256 => address) public pizzaToOwner; - // Mapping dari alamat pemilik ke nomor dari token yang dimiliki + // Mapping from owner's address to number of owned token mapping(address => uint256) public ownerPizzaCount; - // Mapping dari ID token ke alamat yang disetujui + // Mapping from token ID to approved address mapping(uint256 => address) pizzaApprovals; - // Anda bisa melakukan nest pada mapping, contoh ini melakukan map ke persetujuan operator + // You can nest mappings, this example maps owner to operator approvals mapping(address => mapping(address => bool)) private operatorApprovals; - // Fungsi internal untuk membentuk satu Pizza acak dari (nama) string dan DNA + // Internal function to create a random Pizza from string (name) and DNA function _createPizza(string memory _name, uint256 _dna) - // Kata kunci `internal` berarti fungsi ini hanya terlihat - // dalam kontrak ini dan kontrak yang diturunkan dari kontrak ini - // Pelajari lebih banyak: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#visibility-and-getters + // The `internal` keyword means this function is only visible + // within this contract and contracts that derive this contract + // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#visibility-and-getters internal - // `isUnique` adalah satu fungsi modifier yang memeriksa apakah pizza sudah ada - // Pelajari lebih banyak: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html#function-modifiers + // `isUnique` is a function modifier that checks if the pizza already exists + // Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html#function-modifiers isUnique(_name, _dna) { - // Menambahkan Pizza ke array dari Pizza dan mendapatkan id + // Adds Pizza to array of Pizzas and get id uint256 id = SafeMath.sub(pizzas.push(Pizza(_name, _dna)), 1); - // Periksa pemilik Pizza sama dengan pengguna saat ini + // Checks that Pizza owner is the same as current user // Learn more: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions + + // note that address(0) is the zero address, + // indicating that pizza[id] is not yet allocated to a particular user. + assert(pizzaToOwner[id] == address(0)); - // Lakukan map pada Pizza ke pemiliknya + // Maps the Pizza to the owner pizzaToOwner[id] = msg.sender; ownerPizzaCount[msg.sender] = SafeMath.add( ownerPizzaCount[msg.sender], @@ -385,37 +389,37 @@ contract CryptoPizza is IERC721, ERC165 { ); } - // Buat satu Pizza acak dari (nama) string + // Creates a random Pizza from string (name) function createRandomPizza(string memory _name) public { uint256 randDna = generateRandomDna(_name, msg.sender); _createPizza(_name, randDna); } - // Hasilkan DNA acak dari (nama) string dan alamat dari pemilik (pembuat) + // Generates random DNA from string (name) and address of the owner (creator) function generateRandomDna(string memory _str, address _owner) public - // Fungsi yang ditandai `pure` berjanji tidak membaca dari atau memodifikasi state - // Pelajari lebih banyak: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#pure-functions + // Functions marked as `pure` promise not to read from or modify the state + // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#pure-functions pure returns (uint256) { - // Buat uint acak dari (nama) string + (pemilik) alamat + // Generates random uint from string (name) + address (owner) uint256 rand = uint256(keccak256(abi.encodePacked(_str))) + uint256(_owner); rand = rand % dnaModulus; return rand; } - // Kembalikan array Pizza yang ditemukan pemilik + // Returns array of Pizzas found by owner function getPizzasByOwner(address _owner) public - // Fungsi yang ditandai `view` berjanji tidak memodifikasi state - // Pelajari lebih banyak: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#view-functions + // Functions marked as `view` promise not to modify state + // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#view-functions view returns (uint256[] memory) { - // Gunakan lokasi penyimpanan `memory` untuk menyimpan nilai hanya untuk - // siklus hidup dari pemanggilan fungsi ini. + // Uses the `memory` storage location to store values only for the + // lifecycle of this function call. // Pelajari lebih banyak: https://solidity.readthedocs.io/en/v0.5.10/introduction-to-smart-contracts.html#storage-memory-and-the-stack uint256[] memory result = new uint256[](ownerPizzaCount[_owner]); uint256 counter = 0; diff --git a/src/content/translations/id/developers/docs/smart-contracts/compiling/index.md b/src/content/translations/id/developers/docs/smart-contracts/compiling/index.md index 49de98834fc..f92f42c2182 100644 --- a/src/content/translations/id/developers/docs/smart-contracts/compiling/index.md +++ b/src/content/translations/id/developers/docs/smart-contracts/compiling/index.md @@ -39,7 +39,7 @@ Pengompilasi juga akan menghasilkan **Antarmuka Biner Aplikasi (ABI)** yang Anda ABI adalah file JSON yang mendeskripsikan penggunaan kontrak dan fungsi kontrak pintarnya. Ini menolong menjembatani celah antara web2 dan web3 -[Pustaka klien JavaScript](/developers/docs/apis/javascript/) akan membaca **ABI** agar Anda memanggil kontrak pintar di antarmuka aplikasi web Anda. +[Pustaka klien JavaScript](/developers/docs/apis/javascript/) akan membaca **ABI** agar Anda dapat memanggil kontrak pintar pada antarmuka aplikasi web Anda. Di bawah ini adalah ABI untuk kontrak token ERC-20. ERC-20 adalah token yang bisa Anda perdagangkan di Ethereum. diff --git a/src/content/translations/id/developers/docs/smart-contracts/deploying/index.md b/src/content/translations/id/developers/docs/smart-contracts/deploying/index.md index f6ddcabbb7e..317c9b2e348 100644 --- a/src/content/translations/id/developers/docs/smart-contracts/deploying/index.md +++ b/src/content/translations/id/developers/docs/smart-contracts/deploying/index.md @@ -12,7 +12,7 @@ Untuk menggunakan kontrak pintar, Anda hanya perlu mengirim transaksi Ethereum y Anda harus memahami [jaringan Ethereum](/developers/docs/networks/), [transaksi](/developers/docs/transactions/), dan [anatomi kontrak pintar](/developers/docs/smart-contracts/anatomy/) sebelum menggunakan kontrak pintar. -Menggunakan kontrak juga memerlukan ether (ETH), jadi Anda harus terbiasa dengan [gas dan biaya](/developers/docs/gas/) di Ethereum. +Penyebaran kontrak juga mengonsumsi ether (ETH) karena kontrak disimpan di Rantai Blok sehingga Anda harus memahami tentang [gas dan biaya](/developers/docs/gas/) di Ethereum. Akhirnya, Anda hanya perlu mengompilasi kontrak sebelum menggunakannya, jadi pastikan Anda telah membaca tentang [mengompilasi kontrak pintar](/developers/docs/smart-contracts/compiling/). @@ -23,7 +23,7 @@ Akhirnya, Anda hanya perlu mengompilasi kontrak sebelum menggunakannya, jadi pas - kode bita kontrak Anda – ini dihasilkan melalui [pengompilasian](/developers/docs/smart-contracts/compiling/) - ETH untuk gas – Anda akan menentukan batas gas seperti transaksi lainnya, jadi ingatlah penggunaan kontrak memerlukan lebih banyak gas daripada transfer ETH sederhana - skrip atan plugin penggunaan -- akses ke [node Ethereum](/developers/docs/nodes-and-clients/), baik dengan menjalankan node Anda, terhubung dengan node publik, atau melalui kunci API yang menggunakan [layanan node](/developers/docs/nodes-and-clients/nodes-as-a-service/) seperti Infura atau Alchemy +- akses ke [simpul Ethereum](/developers/docs/nodes-and-clients/), dapat dilakukan dengan menjalankannya sendiri, menyambung ke simpul publik, atau melalui kunci API dengan menggunakan [layanan simpul](/developers/docs/nodes-and-clients/nodes-as-a-service/) ### Langkah-langkah untuk menggunakan kontrak pintar {#steps-to-deploy} @@ -37,16 +37,17 @@ Setelah digunakan, kontrak Anda akan memiliki alamat Ethereum seperti [akun](/de - [Remix](https://remix.ethereum.org) -**Tenderly - _Platform untuk memantau kontrak pintar dengan mudah melalui fitur pelacakan kesalahan, peringatan, metrik kinerja, dan analitik kontrak terperinci_** +**Tenderly - _Platform pengembangan Web3 yang menyediakan penelusuran kesalahan, observabilitas, dan elemen dasar penyusun infrastruktur untuk mengembangkan, menguji, memantau, dan menjalankan kontrak pintar_** - [tenderly.co](https://tenderly.co/) +- [Dokumen](https://docs.tenderly.co/) - [GitHub](https://github.com/Tenderly) - [Discord](https://discord.gg/eCWjuvt) **Hardhat - _Lingkungan pengembangan untuk mengompilasi, menggunakan, menguji, dan melakukan debug perangkat lunak Ethereum Anda_** - [hardhat.org](https://hardhat.org/getting-started/) -- [Dokumentasi tentang menggunakan kontrak Anda](https://hardhat.org/guides/deploying.html) +- [Dokumen tentang penyebaran kontrak Anda](https://hardhat.org/guides/deploying.html) - [GitHub](https://github.com/nomiclabs/hardhat) - [Discord](https://discord.com/invite/TETZs2KK4k) @@ -56,20 +57,26 @@ Setelah digunakan, kontrak Anda akan memiliki alamat Ethereum seperti [akun](/de - [Dokumentasi tentang penggunaan jaringan dan aplikasi](https://www.trufflesuite.com/docs/truffle/advanced/networks-and-app-deployment) - [GitHub](https://github.com/trufflesuite/truffle) +**thirdweb - _Sebarkan setiap kontrak dengan mudah ke setiap rantai yang kompatibel dengan EVM, dengan menggunakan satu perintah tunggal_** + +- [Dokumentasi](https://portal.thirdweb.com/deploy/) + ## Tutorial terkait {#related-tutorials} -- [Menggunakan kontrak pintar pertama Anda](/developers/tutorials/deploying-your-first-smart-contract/) _– Pengantar tentang menggunakan kontrak pintar pertama Anda di jaringan percobaan Ethereum._ +- [Penyebaran kontrak pintar pertama Anda](/developers/tutorials/deploying-your-first-smart-contract/) _– Pengantar tentang penyebaran kontrak pintar pertama Anda di jaringan percobaan Ethereum._ +- [Hello World | tutorial kontrak pintar](/developers/tutorials/hello-world-smart-contract/) _- Tutorial yang mudah diikuti untuk membuat & dan menyebarkan kontrak pintar sederhana di Ethereum._ - [Berinteraksi dengan kontrak lain dari Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– Cara menggunakan kontrak pintar dari kontrak yang sudah ada dan berinteraksi dengan kontrak pintar tersebut._ -- [Bagaimana memperkecil ukuran kontrak Anda](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- Bagaimana mengurangi ukuran kontrak Anda agar tetap di bawah batasan dan menghemat pemakaian gas_ +- [Cara mengurangi ukuran kontrak Anda](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- Cara mengurangi ukuran kontrak Anda agar tetap dalam batasan dan menghemat gas_ ## Bacaan lebih lanjut {#further-reading} - [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) - _OpenZeppelin_ -- [Menggunakan kontrak Anda dengan Hardhat](https://hardhat.org/guides/deploying.html) - _Nomic Labs_ +- [Menyebarkan kontrak Anda dengan Hardhat](https://hardhat.org/guides/deploying.html) - _Nomic Labs_ -_Tahu tentang sumber daya komunitas yang membantu Anda? Edit halaman ini dan tambahkan!_ +_Tahu tentang referensi komunitas yang membantu Anda? Edit halaman ini dan tambahkan!_ ## Topik terkait {#related-topics} - [Kerangka kerja pengembangan](/developers/docs/frameworks/) - [Jalankan node Ethereum](/developers/docs/nodes-and-clients/run-a-node/) +- [Simpul-sebagai-layanan](/developers/docs/nodes-and-clients/nodes-as-a-service) diff --git a/src/content/translations/id/developers/docs/smart-contracts/index.md b/src/content/translations/id/developers/docs/smart-contracts/index.md index 2fffb154218..abbd0a42ab5 100644 --- a/src/content/translations/id/developers/docs/smart-contracts/index.md +++ b/src/content/translations/id/developers/docs/smart-contracts/index.md @@ -8,25 +8,27 @@ lang: id "Kontrak pintar" secara sederhana adalah sebuah program yang beroperasi pada blockchain Ethereum. Ini adalah koleksi kode (fungsinya) dan data (statenya) yang berada pada alamat tertentu dalam blockchain Ethereum. -Kontrak pintar adalah suatu jenis [akun Ethereum](/developers/docs/accounts/). Ini berarti kontrak pintar memiliki saldo dan bisa mengirim transaksi melalui jaringan. Namun kontrak pintar tidak dapat dikendalikan oleh pengguna, tetapi diterapkan ke jaringan dan berjalan seperti yang telah diprogramkan. Akun pengguna bisa berinteraksi dengan sebuah kontrak pintar dengan mengirimkan transaksi yang menjalankan fungsi yang telah ditentukan dalam kontrak pintar. Kontrak pintar bisa menetapkan aturan, seperti kontrak umumnya, dan secara otomatis melaksanakannya lewat kode. Kontrak pintar tidak dapat dihapus secara default, dan interaksi dengannya tidak dapat diubah. +Kontrak pintar adalah suatu jenis [akun Ethereum](/developers/docs/accounts/). Artinya, kontrak ini ada saldo dan dapat menjadi target transaksi. Namun kontrak pintar tidak dapat dikendalikan oleh pengguna, tetapi diterapkan ke jaringan dan berjalan seperti yang telah diprogramkan. Akun pengguna bisa berinteraksi dengan sebuah kontrak pintar dengan mengirimkan transaksi yang menjalankan fungsi yang telah ditentukan dalam kontrak pintar. Kontrak pintar bisa menetapkan aturan, seperti kontrak umumnya, dan secara otomatis melaksanakannya lewat kode. Kontrak pintar tidak dapat dihapus secara default, dan interaksi dengannya tidak dapat diubah. ## Prasyarat {#prerequisites} +Jika Anda baru saja memulai atau mencari informasi pendahuluan yang tidak terlalu teknis, kami menganjurkan untuk membaca [pendahuluan kontrak pintar](/smart-contracts/) dari kami. + Pastikan Anda telah membaca tentang [akun](/developers/docs/accounts/), [transaksi](/developers/docs/transactions/), dan [mesin virtual Ethereum](/developers/docs/evm/) sebelum terjun ke dunia kontrak pintar. ## Mesin penjual otomatis digital {#a-digital-vending-machine} -Mungkin perumpamaan terbaik untuk kontrak pintar adalah sebuah mesin penjual otomatis, seperti yang dideskripsikan oleh [Nick Szabo](https://unenumerated.blogspot.com/). Dengan input yang benar, maka hasil keluarannya terjamin. +Perumpamaan terbaik untuk menggambarkan kontrak pintar mungkin dengan mesin penjual otomatis, sebagaimana diuraikan oleh [Nick Szabo](https://unenumerated.blogspot.com/). Input yang tepat akan menjamin output yang pasti. -Untuk mendapatkan sebuah kudapan ringan dari mesin penjual otomatis: +Untuk mendapatkan kudapan dari mesin penjual otomatis: ``` money + snack selection = snack dispensed ``` -Logika ini diprogramkan ke dalam mesin penjual otomatis. +Logika ini diprogram ke dalam mesin penjual otomatis. -Kontrak pintar, seperti mesin penjual otomatis, mempunyai logika yang diprogram ke dalamnya. Berikut adalah contoh sederhana bagaimana mesin penjual otomatis ini mungkin terlihat seperti kontrak pintar: +Kontrak pintar, seperti mesin penjual otomatis, mempunyai logika yang terprogram ke dalamnya. Berikut contoh sederhana tentang seperti apa tampilan mesin penjual otomatis jika diumpamakan sebagai kontrak pintar yang ditulis dalam Solidity: ```solidity pragma solidity 0.8.7; @@ -61,34 +63,38 @@ contract VendingMachine { } ``` -Seperti sebuah mesin penjual otomatis yang menghapus kebutuhan akan karyawan vendor, kontrak pintar juga bisa menggantikan perantara dalam banyak industri. +Seperti cara mesin penjual otomatis menghilangkan kebutuhan akan karyawan penjual, kontrak pintar juga dapat menggantikan para perantara di banyak industri. ## Tanpa izin {#permissionless} -Siapa pun dapat menulis kontrak pintar dan menyebarkannya ke jaringan. Anda hanya perlu belajar cara mengodekan dalam [bahasa kontrak pintar](/developers/docs/smart-contracts/languages/) dan memiliki cukup ETH untuk menyebarkan kontrak Anda. Menggunakan kontrak pintar secara teknis sama dengan melakukan transaksi, sehingga Anda perlu membayar [Gas](/developers/docs/gas/) sama seperti Anda perlu membayar gas untuk transfer ETH sederhana. Namun, biaya gas untuk penggunaan kontrak jauh lebih tinggi. +Siapa pun dapat menulis kontrak pintar dan menyebarkannya ke jaringan. Anda hanya perlu belajar cara menulis kode dalam [bahasa kontrak pintar](/developers/docs/smart-contracts/languages/) dan memiliki cukup ETH untuk menyebarkan kontrak Anda. Menyebarkan kontrak pintar secara teknis adalah transaksi, sehingga Anda harus membayar [gas](/developers/docs/gas/) dengan cara yang sama seperti membayar gas untuk transfer ETH biasa. Namun, biaya gas untuk penyebaran kontrak jauh lebih tinggi. -Ethereum memiliki bahasa ramah pengembang untuk menulis kontrak pintar: +Ethereum memiliki bahasa pemrograman yang mudah digunakan oleh pengembang untuk menulis kontrak pintar: - Solidity - Vyper -[Selengkapnya tentang bahasa](/developers/docs/smart-contracts/languages/) +[Selengkapnya tentang bahasa pemrograman](/developers/docs/smart-contracts/languages/) -Namun, kontrak harus dikompilasikan sebelum bisa digunakan agar mesin virtual Ethereum bisa mengartikan dan menyimpan kontrak tersebut. [Selengkapnya tentang pengompilasian](/developers/docs/smart-contracts/compiling/) +Namun, kontrak harus dikompilasi sebelum dapat disebarkan agar mesin virtual Ethereum dapat menafsirkan dan menyimpan kontrak tersebut. [Selengkapnya tentang kompilasi](/developers/docs/smart-contracts/compiling/) ## Komposabilitas {#composability} -Kontrak pintar bersifat publik di Ethereum dan bisa dianggap sebagai API terbuka. Ini berarti Anda bisa memanggil kontrak pintar orang lain di dalam kontrak pintar Anda untuk lebih memperluas apa yang mungkin diperluas. Kontrak bahkan bisa menyebarkan kontrak lainnya. +Kontrak pintar bersifat publik di Ethereum dan bisa dianggap sebagai API terbuka. Hal ini berarti bahwa Anda dapat memanggil kontrak pintar lain di dalam kontrak pintar Anda sendiri sehingga dapat mengembangkan banyak kemungkinan. Kontrak bahkan dapat menyebarkan kontrak lainnya. Pelajari selengkapnya tentang [komposabilitas kontrak pintar](/developers/docs/smart-contracts/composability/). ## Batasan {#limitations} -Kontrak pintar sendiri tidak bisa mendapatkan informasi tentang aksi "dunia nyata" karena tidak bisa mengirim permintaan HTTP. Ini sengaja dirancang demikian. Mengandalkan informasi eksternal bisa membahayakan konsensus, yang penting untuk keamanan dan desentralisasi. +Kontrak pintar sendiri tidak bisa mendapatkan informasi tentang aksi "dunia nyata" karena kontrak tidak dapat mengambil data dari sumber di luar rantai. Artinya, kontrak tidak dapat merespons aksi di dunia nyata. Hal ini sesuai dengan rancangan. Mengandalkan informasi eksternal bisa membahayakan konsensus, yang penting untuk keamanan dan desentralisasi. + +Akan tetapi, penting bagi aplikasi rantai blok untuk dapat menggunakan data di luar rantai. Solusinya adalah [oracle](/developers/docs/oracles/), yaitu alat yang mengumpulkan data di luar rantai dan menyediakannya untuk kontrak pintar. + +Keterbatasan kontrak pintar lainnya adalah ukuran maksimum kontrak. Kontrak pintar dapat berukuran maksimum sebesar 24KB atau akan kehabisan gas jika lebih. Hal ini dapat dihindari dengan menggunakan [Pola Permata](https://eips.ethereum.org/EIPS/eip-2535). -Ada cara untuk mengatasi ini, menggunakan [oracle](/developers/docs/oracles/). +## Kontrak multisig {#multisig} -Keterbatasan lain dari kontrak pintar adalah ukuran kontrak maksimumnya. Ukuran kontrak pintar maksimum bisa 24KB atau kontrak akan kehabisan gas. Ini dapat dihindari dengan menggunakan [Pola Permata](https://eips.ethereum.org/EIPS/eip-2535). +Kontrak multisig (beberapa tanda tangan) adalah akun kontrak pintar yang membutuhkan beberapa tanda tangan yang valid untuk menjalankan transaksi. Cara ini sangat berguna untuk menghindari titik kegagalan tunggal bagi kontrak yang menyimpan Ether atau token lainnya dalam jumlah besar. Multisig juga membagi tanggung jawab menjalankan kontrak dan manajemen kunci di antara beberapa pihak sehingga mencegah hilangnya kunci pribadi yang dapat mengakibatkan hilangnya dana secara permanen. Karena alasan ini, kontrak multisig dapat digunakan untuk tata kelola DAO yang sederhana. Multisig membutuhkan N tanda tangan dari M kemungkinan tanda tangan yang dapat diterima (di mana N ≤ M, dan M > 1) agar dapat dijalankan. `N = 3, M = 5` dan `N = 4, M = 7` adalah nilai-nilai yang umum digunakan. Multisig 4/7 membutuhkan empat dari tujuh kemungkinan tanda tangan yang valid. Hal ini berarti dana masih dapat diambil kembali meskipun ada tiga tanda tangan yang hilang. Dalam kasus ini, hal ini juga berarti bahwa mayoritas pemegang kunci harus setuju dan menandatangani agar kontrak dapat dijalankan. ## Sumber daya kontrak pintar {#smart-contract-resources} @@ -98,13 +104,8 @@ Keterbatasan lain dari kontrak pintar adalah ukuran kontrak maksimumnya. Ukuran - [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts) - [Forum Komunitas](https://forum.openzeppelin.com/c/general/16) -**DappSys -** **_Blok pembangun yang aman, sederhana, dan fleksibel untuk kontrak pintar._** - -- [Dappsys](https://dappsys.readthedocs.io/) -- [GitHub](https://github.com/dapphub/dappsys) - ## Bacaan lebih lanjut {#further-reading} -- [Kontrak Pintar: Teknologi Blockchain yang Akan Menggantikan Pengacara](https://blockgeeks.com/guides/smart-contracts/)_– Blockgeeks_ -- [Cara Terbaik untuk Pengembangan Kontrak Pintar](https://yos.io/2019/11/10/smart-contract-development-best-practices/) _–10 November 2019 - Yos Riady_ -- [Kontrak bersih - panduan tentang pola dan praktik kontrak pintar](https://www.wslyvh.com/clean-contracts/) _– 30 Juli 2020 - wslyvh_ +- [Coinbase: Apa yang dimaksud dengan kontrak pintar?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract) +- [Chainlink: Apa yang dimaksud dengan kontrak pintar?](https://chain.link/education/smart-contracts) +- [Video: Penjelasan Sederhana - Kontrak Pintar](https://youtu.be/ZE2HxTmxfrI) diff --git a/src/content/translations/id/developers/docs/smart-contracts/languages/index.md b/src/content/translations/id/developers/docs/smart-contracts/languages/index.md index ed407b462d2..cbb1e44d6fc 100644 --- a/src/content/translations/id/developers/docs/smart-contracts/languages/index.md +++ b/src/content/translations/id/developers/docs/smart-contracts/languages/index.md @@ -88,15 +88,16 @@ Contoh ini seharusnya memberi Anda pemahaman seperti apa sintaksis kontrak Solid - Bahasa pemrograman Python - Strong typing - Kode pengompilasi berukuran kecil yang dapat dimengerti -- Secara sengaja memiliki fitur lebih sedikit dari Solidity dengan tujuan membuat kontrak lebih aman dan lebih mudah diaudit. Vyper tidak mendukung: +- Pembuatan kode bita yang efisien +- Disengaja dengan fitur lebih sedikit daripada Solidity yang bertujuan agar kontrak menjadi lebih aman dan lebih mudah untuk diaudit. Vyper tidak mendukung: - Pengubah - Warisan - - Perakitan sebaris - - Fungsi kelebihan beban - - Operator kelebihan beban + - Kode assembly dalam baris + - Beban berlebih pada fungsi + - Beban berlebih pada operator - Pemanggilan berulang - Perulangan dengan panjang tak terbatas - - Poin tetap biner + - Titik tetap biner Untuk informasi selengkapnya, [baca prinsip Vyper](https://vyper.readthedocs.io/en/latest/index.html). @@ -104,10 +105,16 @@ Untuk informasi selengkapnya, [baca prinsip Vyper](https://vyper.readthedocs.io/ - [Dokumentasi](https://vyper.readthedocs.io) - [Contoh Vyper](https://vyper.readthedocs.io/en/latest/vyper-by-example.html) +- [Vyper Selengkapnya dengan Contoh](https://vyper-by-example.org/) - [GitHub](https://github.com/vyperlang/vyper) -- [Ruang Obrolan Gitter Vyper](https://gitter.im/vyperlang/community) +- [Obrolan Discord komunitas Vyper](https://discord.gg/SdvKC79cJk) - [Lembar Kecurangan](https://reference.auditless.com/cheatsheet) -- [Pembaruan 8 Januari 2020](https://blog.ethereum.org/2020/01/08/update-on-the-vyper-compiler) +- [Kerangka kerja dan alat pengembangan kontrak pintar untuk Vyper](/developers/docs/programming-languages/python/) +- [VyperPunk - belajar mengamankan dan meretas kontrak pintar Vyper](https://github.com/SupremacyTeam/VyperPunk) +- [VyperExamples - Contoh kerentanan Vyper](https://www.vyperexamples.com/reentrancy) +- [Vyper Hub untuk pengembangan](https://github.com/zcor/vyper-dev) +- [Contoh kontrak pintar terbaik Vyper](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts) +- [Sumber daya pilihan Awesome Vyper](https://github.com/spadebuilders/awesome-vyper) ### Contoh {#example} @@ -211,7 +218,7 @@ Jika Anda baru mengenal Ethereum dan belum pernah melakukan pengodean apa pun de **Yul+** - Ekstensi level rendah yang sangat efisien untuk Yul. -- Didesain pada awalnya untuk kontrak [rollup optimistic](/developers/docs/scaling/layer-2-rollups/#optimistic-rollups). +- Awalnya dirancang untuk kontrak [optimistic rollup (penggabungan yang optimis)](/developers/docs/scaling/optimistic-rollups/). - Yul+ bisa dianggap sebagai proposal peningkatan eksperimental untuk Yul, yang menambahkan fitur baru ke dalamnya. ### Tautan penting {#important-links-2} diff --git a/src/content/translations/id/developers/docs/smart-contracts/libraries/index.md b/src/content/translations/id/developers/docs/smart-contracts/libraries/index.md index 1950eb2d8f0..54193d7661e 100644 --- a/src/content/translations/id/developers/docs/smart-contracts/libraries/index.md +++ b/src/content/translations/id/developers/docs/smart-contracts/libraries/index.md @@ -20,7 +20,7 @@ Ketika menulis kontrak pintar, ada kemungkinan Anda akan menemukan bahwa Anda me Pustaka kontrak pintar biasanya menyediakan implementasi yang dapat digunakan kembali dari perilaku ini sebagai [pustaka](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) atau lewat [warisan](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance) dalam Solidity. -Sebagai contoh, berikut ini adalah versi sederhana dari kontrak [`Yang dapat Dimiliki`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol) dari [pustaka Kontrak OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts), yang mendesain alamat sebagai pemilik kontrak, dan menyediakan pengubah untuk membatasi akses pada metode yang hanya terkait dengan pemilik tersebut. +Sebagai contoh, berikut ini adalah versi sederhana dari kontrak [`Ownable`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol) dari [pustaka Kontrak OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts), yang mendesain alamat sebagai pemilik kontrak, dan menyediakan pengubah untuk membatasi akses pada metode yang hanya terkait dengan pemilik tersebut. ownableownable. ```solidity contract Ownable { @@ -37,7 +37,7 @@ contract Ownable { } ``` -Untuk menggunakan blok pembangun seperti ini dalam kontrak, Anda perlu mengimpornya terlebih dahulu, dan kemudian memperpanjangnya dari kontrak milik Anda. Ini akan memungkinkan Anda menggunakan pengubah yang disediakan oleh basis kontrak `Yang dapat dimiliki` untuk mengamankan fungsi Anda. +Untuk menggunakan blok pembangun seperti ini dalam kontrak, Anda perlu mengimpornya terlebih dahulu, dan kemudian memperpanjangnya dari kontrak milik Anda. Ini akan memungkinkan Anda menggunakan pengubah yang disediakan oleh basis kontrak `Ownable` untuk mengamankan fungsi Anda. ```solidity import ".../Ownable.sol"; // Jalan ke pustaka yang diimpor @@ -102,11 +102,16 @@ Terakhir, saat memutuskan apakah akan memasukkan suatu pustaka, pertimbangkan pe - [GitHub](https://github.com/HQ20/contracts) +**SDK Solidity thirdweb -** **_Menyediakan alat yang dibutuhkan untuk membuat kontrak pintar khusus dengan efisien_** + +- [Dokumentasi](https://portal.thirdweb.com/solidity/) +- [GitHub](https://github.com/thirdweb-dev/contracts) + ## Tutorial terkait {#related-tutorials} -- [Pertimbangan keamanan untuk pengembang Ethereum](/developers/docs/smart-contracts/security/) _– Sebuah tutorial tentang pertimbangan keamanan ketika menyusun kontrak pintar, termasuk pemakaian pustaka._ +- [Pertimbangan keamanan untuk pengembang Ethereum](/developers/docs/smart-contracts/security/) _– Tutorial tentang pertimbangan keamanan pada saat membuat kontrak pintar, termasuk pemakaian pustaka._ - [Pahami kontrak pintar token ERC-20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _- Tutorial tentang standar ERC20, yang disediakan oleh berbagai pustaka._ ## Bacaan lebih lanjut {#further-reading} -_Tahu tentang sumber daya komunitas yang membantu Anda? Edit halaman ini dan tambahkan!_ +_Tahu tentang referensi komunitas yang membantu Anda? Edit halaman ini dan tambahkan!_ diff --git a/src/content/translations/id/developers/docs/smart-contracts/security/index.md b/src/content/translations/id/developers/docs/smart-contracts/security/index.md index 8ff71bdc0a6..040965070ae 100644 --- a/src/content/translations/id/developers/docs/smart-contracts/security/index.md +++ b/src/content/translations/id/developers/docs/smart-contracts/security/index.md @@ -1,148 +1,246 @@ --- title: Keamanan kontrak pintar -description: Pertimbangan keamanan untuk pengembang Ethereum +description: Ikhtisar pedoman pembuatan kontrak pintar Ethereum yang aman lang: id --- -Kontrak pintar Ethereum sangat fleksibel, mampu menampung sejumlah besar token (sering kali lebih dari $1 Miliar) dan menjalankan logika yang tak bisa diubah berdasarkan kode kontrak pintar yang digunakan sebelumnya. Sekalipun hal ini telah menciptakan ekosistem kontrak pintar yang saling berhubungan dan tidak memerlukan kepercayaan yang penuh energi dan kreatif, juga merupakan ekosistem yang sempurna untuk menarik penyerang yang mencari keuntungan dengan mengeksploitasi kerentanan dalam kontrak pintar dan perilaku tak terduga di Ethereum. Kode kontrak pintar _biasanya_ tidak bisa diubah untuk menambal kelemahan keamanan, aset yang telah dicuri dari kontrak pintar tidak bisa didapatkan kembali, dan aset yang dicuri sangat sulit untuk dilacak. Jumlah total nilai yang dicuri atau hilang karena masalah kontrak pintardengan mudah bernilai $1 Miliar. Beberapa nilai yang lebih besar karena kesalahan pengodean kontrak pintar meliputi: +Kontrak pintar sangat fleksibel dan mampu mengontrol nilai dan data dalam jumlah besar, sambil menjalankan logika permanen yang berdasarkan kode yang disebarkan pada Rantai Blok. Hal ini telah menciptakan ekosistem dinamis yang terdiri dari aplikasi tanpa kepercayaan dan terdesentralisasi yang memberikan banyak keuntungan dibandingkan sistem legasi. Hal tersebut juga membuka peluang bagi penyerang yang mencari keuntungan dengan mengeksploitasi kerentanan pada kontrak pintar. -- [Masalah partity multi-sig #1 - kehilangan $30 Juta](https://www.coindesk.com/30-million-ether-reported-stolen-parity-wallet-breach) -- [Masalah parity multi-sig #2 - $300 Juta terkunci](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether) -- [Peretasan TheDAO, 3,6 Juta ETH! Lebih dari $1 Miliar dalam harga ETH saat ini](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) +Rantai Blok publik, seperti Ethereum, makin memperumit masalah pengamanan kontrak pintar. Kode kontrak yang disebarkan _biasanya_ tidak dapat diubah untuk menambal kekurangan pada keamanannya, sementara aset yang dicuri dari kontrak pintar sulit sekali untuk dilacak dan kebanyakan tidak dapat dipulihkan karena sifat permanennya. + +Meskipun ada perbedaan angka, diperkirakan bahwa nilai total yang dicuri atau hilang akibat cacat keamanan di kontrak pintar dapat mencapai lebih dari $1 miliar. Hal ini termasuk insiden yang menjadi perhatian publik, seperti [peretasan DAO](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) (3,6 juta ETH dicuri, yang saat ini bernilai lebih dari $1 miliar dolar), [Peretasan dompet parity multi-sig](https://www.coindesk.com/30-million-ether-reported-stolen-parity-wallet-breach) ($30 juta hilang karena peretas), dan [Masalah dompet beku parity](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether) (lebih dari $300 juta nilai ETH terkunci selamanya). + +Berbagai masalah yang disebutkan di atas mengharuskan pengembang untuk meningkatkan upaya dalam membuat kontrak pintar yang aman, kuat, dan tangguh. Keamanan kontrak pintar adalah masalah yang serius, dan harus dipelajari dengan baik oleh setiap pengembang. Panduan ini akan membahas pertimbangan keamanan bagi pengembang Ethereum dan menyelidiki sumber daya untuk peningkatan keamanan kontrak pintar. ## Prasyarat {#prerequisites} -Ini akan membahas keamanan kontrak pintar jadi pastikan Anda terbiasa dengan [kontrak pintar](/developers/docs/smart-contracts/) sebelum menangani tentang keamanan. +Pastikan Anda memahami [dasar-dasar pengembangan kontrak pintar](/developers/docs/smart-contracts/) sebelum mempelajari masalah keamanan. -## Bagaimana menulis kode kontrak pintar yang lebih aman {#how-to-write-more-secure-smart-contract-code} +## Pedoman untuk membuat kontrak pintar Ethereum yang aman {#smart-contract-security-guidelines} -Sebelum meluncurkan kode apa pun ke Jaringan Utama, penting untuk mengambil langkah pencegahan yang memadai untuk melindungi segala sesuatu yang bernilai yang dipercayakan oleh kontrak pintar Anda. Dalam artikel ini, kita akan membahas tentang beberapa serangan spesifik, menyediakan sumber daya untuk mempelajari selengkapnya tentang jenis serangan, dan memberi Anda beberapa peralatan dasar dan praktik terbaik untuk memastikan kontrak Anda berfungsi dengan benar dan dengan aman. +### 1. Merancang kontrol akses yang tepat {#design-proper-access-controls} -## Audit bukan sebuah solusi ampuh {#audits-are-not-a-silver-bullet} +Di dalam kontrak pintar, fungsi yang ditandai sebagai `public` atau `external` dapat dipanggil oleh setiap akun milik eksternal atau externally owned account (EOA) atau akun kontrak. Menetapkan visibilitas publik untuk fungsi dibutuhkan jika Anda ingin orang lain dapat berinteraksi dengan kontrak Anda. Akan tetapi, fungsi yang ditandai sebagai `private` hanya dapat dipanggil oleh fungsi di dalam kontrak pintar, dan tidak bisa dipanggil oleh akun eksternal. Memberikan akses ke fungsi kontrak kepada setiap peserta di jaringan dapat menimbulkan masalah, terutama jika mengakibatkan setiap orang dapat melakukan operasi yang sensitif (misalnya, mencetak token baru). -Beberapa tahun sebelumnya, peralatan untuk menulis, mengompilasi, menguji, dan menggunakan kontrak pintar sangat belum matang, mengakibatkan banyak proyek menulis kode Solidity dengan cara yang berantakan, menghalangi auditor yang akan melakukan investigasi kode guna memastikannya berfungsi dengan aman dan sesuai harapan. Pada tahun 2020, proses pengembangan dan peralatan yang mendukung penulisan Solidity jauh lebih baik; memanfaatkan praktik terbaik ini tidak hanya memastikan proyek Anda lebih mudah dikelola, tapi juga merupakan bagian vital dari keamanan proyek Anda. Sebuat proses audit pada akhir penulisan kontrak pintar Anda tidak lagi cukup sebagai satu-satunya pertimbangan keamanan yang bisa dibuat dalam proyek Anda. Keamanan dimulai sebelum Anda menulis baris pertama dari kode kontrak pintar Anda, **keamanan dimulai dengan desain dan proses pengembangan yang baik**. +Untuk mencegah penggunaan fungsi kontrak pintar yang tidak sah, perlu diterapkan kontrol akses yang aman. Mekanisme kontrol akses membatasi kemampuan penggunaan beberapa fungsi tertentu pada kontrak pintar untuk entitas yang disetujui, seperti akun yang bertanggung jawab untuk mengelola kontrak. **Pola Ownable** dan **kontrol berbasis peran** adalah dua pola yang bermanfaat untuk menerapkan kontrol akses di kontrak pintar: -## Proses pengembangan kontrak pintar {#smart-contract-development-process} +#### Pola Ownable atau dapat dimiliki {#ownable-pattern} -Paling sedikit: +Dalam pola Ownable atau dapat dimiliki, satu alamat ditetapkan sebagai "pemilik" kontrak selama proses pembuatan kontrak. Fungsi yang dilindungi diberikan pengubah `OnlyOwner`, yang memastikan agar kontrak melakukan autentikasi terhadap identitas alamat pemanggil sebelum menjalankan fungsi tersebut. Panggilan ke fungsi terlindung dari alamat lain, selain pemilik kontrak, akan selalu dikembalikan guna mencegah akses yang tidak diinginkan. -- Semua kode disimpan dalam sistem kontrol versi, seperti git -- Semua modifikasi kode dibuat lewat Tarik Permintaan -- Semua Tarik Permintaan harus memiliki setidaknya satu pengulas. _Jika proyek Anda bersifat tunggal, pertimbangkanlah untuk mencari penulis tunggal lainnya dan saling bertukar ulasan!_ -- Satu perintah mengompilasikan, menggunakan, dan menjalankan serangkaian pengujian terhadap kode Anda menggunakan lingkungan Ethereum pengembangan (Lihat: Truffle) -- Anda harus menjalankan kode Anda melalui peralatan analisis kode dasar seperti Mythril dan Slither, secara ideal sebelum tiap tarik permintaan digabungkan, yang membandingkan perbedaan output -- Solidity tidak menampilkan peringatan pengompilasi APA PUN -- Kode Anda terdokumentasi dengan baik +#### Kontrol akses berbasis peran {#role-based-access-control} -Masih ada banyak hal yang harus dibahas terkait proses pengembangan, tapi item-item ini adalah tempat yang bagus untuk memulai. Untuk item dan penjelasan mendetail selengkapnya, lihat [daftar periksa kualitas proses yang disediakan oleh DeFiSafety](https://docs.defisafety.com/review-process-documentation/process-quality-audit-process). [DefiSafety](https://defisafety.com/) adalah layanan publik tidak resmi yang menerbitkan ulasan atas berbagai dApp Ethereum publik yang besar. Bagian dari sistem rating DeFiSafety meliputi seberapa baik proyek mematuhi daftar periksa kualitas proses ini. Dengan mengikuti proses ini: +Mendaftarkan satu alamat tunggal sebagai `Owner` di kontrak pintar menimbulkan risiko sentralisasi dan berpotensi menjadi titik kegagalan tunggal. Jika kunci akun pemilik berhasil dikuasai, penyerang dapat menyerang kontrak yang dimilikinya. Inilah alasan penggunaan pola kontrol akses yang berbasis peran dengan beberapa akun administratif dapat menjadi pilihan yang lebih baik. -- Anda akan menghasilkan kode yang lebih aman, melalui pengujian otomatis yang dapat dibuat kembali -- Auditor akan dapat mengulas proyek Anda dengan lebih efektif -- Orientasi yang lebih mudah bagi pengembang baru -- Memungkinkan pengembang untuk dengan cepat mengulangi, menguji, dan mendapat masukan tentang modifikasi -- Proyek Anda lebih jarang mengalami regresi +Dalam kontrol akses berbasis peran, akses ke fungsi yang sensitif didistribusikan di antara sekelompok peserta yang tepercaya. Misalnya, satu akun mungkin bertanggung jawab untuk pencetakan token, sementara akun yang lain melakukan peningkatan atau menjeda kontrak. Desentralisasi kontrol akses dengan cara ini menghilangkan titik kegagalan tunggal dan mengurangi asumsi kepercayaan bagi pengguna. -## Serangan dan kerentanan {#attacks-and-vulnerabilities} +##### Menggunakan dompet multi-tanda tangan -Karena sekarang Anda akan menulis kode Solidity menggunakan proses pengembangan yang efisien, mari lihat beberapa kerentanan umum Solidity untuk mengetahui apa yang salah. +Pendekatan lain untuk menerapkan kontrol akses yang aman adalah dengan menggunakan [akun multi-tanda tangan](/developers/docs/smart-contracts/#multisig) untuk mengelola kontrak. Tidak seperti EOA biasa, akun multi-tanda tangan dimiliki oleh beberapa entitas dan membutuhkan tanda tangan dari beberapa akun dengan jumlah minimum—misalkan 3 dari 5—untuk menjalankan transaksi. -### Re-entrancy {#re-entrancy} +Menggunakan multisig untuk kontrol akses menimbulkan lapisan keamanan tambahan karena tindakan pada kontrak target memerlukan persetujuan dari banyak pihak. Hal ini terutama sangat berguna apabila dibutuhkan penggunaan pola Ownable atau dapat dimiliki, karena pola ini mempersulit penyerang atau orang jahat di internal dalam memanipulasi fungsi kontrak yang sensitif untuk tujuan jahat. -Re-entrancy adalah salah satu dari masalah keamanan yang paling besar dan paling penting untuk dipertimbangkan saat mengembangkan Kontrak Pintar. Meskipun EVM tidak bisa menjalankan beberapa kontrak pada saat bersamaan, sebuah kontrak yang memanggil kontrak lainnya membuat jeda pada eksekusi pemanggilan kontrak dan state memori sampai pemanggilan kembali, di mana dalam proses ini, eksekusi berjalan secara normal. Menjeda dan memulai kembali ini bisa menciptakan kerentanan yang dikenal sebagai "re-entrancy". +### 2. Gunakan pernyataan require(), assert(), dan revert() untuk melindungi operasi kontrak {#use-require-assert-revert} -Ini adalah versi sederhana dari sebuah kontrak yang rentan terhadap re-entrancy: +Sebagaimana disebutkan, fungsi publik dalam kontrak pintar Anda dapat dipanggil oleh siapa saja setelah disebarkan di Rantai Blok. Karena Anda tidak dapat mengetahui sebelumnya tentang cara akun eksternal berinteraksi dengan kontrak, hal yang ideal adalah menerapkan perlindungan internal terhadap operasi yang bermasalah sebelum penyebaran. Anda dapat menerapkan perilaku yang tepat di kontrak pintar dengan menggunakan pernyataan `require()`, `assert()`, dan `revert()` untuk memicu pengecualian dan mengembalikan perubahan keadaan apabila eksekusi gagal memenuhi persyaratan tertentu. -```solidity -// KONTRAK INI SENGAJA DIBUAT MEMILIKI KERENTANAN, JANGAN DISALIN -contract Victim { - mapping (address => uint256) public balances; +**`require()`**: `require` didefinisikan pada awal fungsi dan memastikan kondisi pradefinisi terpenuhi sebelum fungsi yang dipanggil dijalankan. Pernyataan `require` dapat digunakan untuk memvalidasi input pengguna, memeriksa variabel keadaan, atau melakukan autentikasi identitas akun pemanggil sebelum melanjutkan dengan fungsi. - function deposit() external payable { - balances[msg.sender] += msg.value; +**`assert()`**: `assert()` digunakan untuk mendeteksi kesalahan internal dan memeriksa pelanggaran "invarian" dalam kode Anda. Invarian adalah penegasan logis tentang keadaan kontrak yang harus tetap benar untuk semua eksekusi fungsi. Contoh invarian adalah total pasokan atau saldo maksimum dari kontrak token. Penggunaan `assert()` memastikan bahwa kontrak Anda tidak pernah mencapai keadaan rentan, dan jika keadaan tersebut terjadi, semua perubahan pada variabel keadaan akan digulung balik ke keadaan sebelumnya. + +**`revert()`**: `revert()` dapat digunakan dalam pernyataan if-else yang memicu pengecualian apabila kondisi yang dibutuhkan tidak terpenuhi. Contoh kontrak di bawah ini menggunakan `revert()` untuk menjaga eksekusi fungsi: + +``` +pragma solidity ^0.8.4; + +contract VendingMachine { + address owner; + error Unauthorized(); + function buy(uint amount) public payable { + if (amount > msg.value / 2 ether) + revert("Not enough Ether provided."); + // Perform the purchase. } + function withdraw() public { + if (msg.sender != owner) + revert Unauthorized(); - function withdraw() external { - uint256 amount = balances[msg.sender]; - (bool success, ) = msg.sender.call.value(amount)(""); - require(success); - balances[msg.sender] = 0; + payable(msg.sender).transfer(address(this).balance); } } ``` -Untuk memungkinkan seorang pengguna menarik ETH yang telah disimpan sebelumnya pada kontrak, fungsi ini +### 3. Menguji kontrak pintar dan memverifikasi ketepatan kode {#test-smart-contracts-and-verify-code-correctness} + +Sifat permanen pada kode yang dijalankan di [Mesin Virtual Ethereum](/developers/docs/evm/) menyebabkan kontrak pintar membutuhkan tingkat penilaian kualitas yang lebih tinggi selama fase pengembangan. Pengujian kontrak secara ekstensif dan pemantauannya untuk menghindari hasil yang tidak diharapkan akan sangat meningkatkan keamanan dan melindungi pengguna Anda dalam jangka panjang. + +Metode yang umum adalah menulis uji unit yang kecil dengan menggunakan data palsu yang biasanya diterima oleh kontrak dari pengguna. [Pengujian unit](/developers/docs/smart-contracts/testing/#unit-testing) berguna untuk menguji fungsionalitas fungsi tertentu dan memastikan kontrak pintar berfungsi sesuai harapan. + +Sayangnya, pengujian unit hampir tidak efektif untuk meningkatkan keamanan kontrak pintar apabila digunakan secara terisolasi. Pengujian unit dapat membuktikan berjalan baiknya suatu fungsi dengan data palsu, tetapi efektivitas uji unit ini hanya seefektif uji yang ditulis. Hal ini menyulitkan pendeteksian kasus khusus yang tidak diuji dan kerentanan yang dapat merusak keamanan kontrak pintar Anda. + +Cara yang lebih baik adalah menggabungkan pengujian unit dengan pengujian berbasis properti yang dilakukan dengan menggunakan [analisis statis dan dinamis](/developers/docs/smart-contracts/testing/#static-dynamic-analysis). Analisis statis mengandalkan representasi tingkat rendah, seperti [grafik aliran kontrol](https://en.wikipedia.org/wiki/Control-flow_graph) dan [pohon sintaksis abstrak](https://deepsource.io/glossary/ast/), untuk menganalisis keadaan program yang dapat dicapai dan jalur eksekusi. Sementara itu, teknik analisis dinamis, seperti fuzzing, menjalankan kode kontrak dengan nilai input acak untuk mendeteksi operasi yang melanggar properti keamanan. + +[Verifikasi formal](/developers/docs/smart-contracts/formal-verification) adalah teknik lain untuk memverifikasi properti keamanan di kontrak pintar. Berbeda dengan pengujian rutin, verifikasi formal dapat membuktikan dengan pasti tidak adanya kesalahan di kontrak pintar. Hal ini dicapai dengan membuat spesifikasi formal yang mencakup properti keamanan yang diinginkan dan membuktikan bahwa model formal dari kontrak mematuhi spesifikasi ini. + +### 4. Meminta peninjauan kode Anda secara independen {#get-independent-code-reviews} + +Setelah menguji kontrak Anda, ada baiknya meminta seseorang untuk memeriksa kode sumbernya untuk mendeteksi setiap masalah keamanan. Pengujian tidak akan mengungkap setiap kekurangan di kontrak pintar, tetapi mendapatkan tinjauan independen akan meningkatkan kemungkinan penemuan kerentanan. + +#### Audit {#audits} + +Melakukan uji coba audit kontrak pintar adalah satu cara untuk melakukan tinjauan kode secara independen. Pihak auditor berperan penting dalam memastikan bahwa kontrak pintar aman dan bebas dari cacat kualitas serta kesalahan desain. + +Meskipun demikian, jangan menganggap audit sebagai solusi ajaib untuk semua masalah. Audit kontrak pintar tidak akan menemukan setiap bug dan sebagian besar audit dirancang untuk memberikan babak tinjauan tambahan, yang dapat membantu mendeteksi masalah yang terlewatkan oleh pengembang selama pengembangan awal dan pengujian. Sebaiknya Anda juga mengikuti [praktik terbaik dalam bekerja sama dengan auditor](https://twitter.com/tinchoabbate/status/1400170232904400897), seperti mendokumentasikan kode dengan benar dan menambahkan komentar dalam kode, guna memaksimalkan manfaat audit kontrak pintar. + +#### Hadiah bounty bug {#bug-bounties} + +Menyiapkan program hadiah bounty bug adalah cara lain untuk melaksanakan tinjauan kode secara eksternal. Hadiah bounty bug adalah imbalan finansial yang diberikan kepada para individu (biasanya peretas topi putih) yang menemukan kerentanan dalam aplikasi. + +Apabila digunakan dengan tepat, hadiah bounty bug dapat memberikan insentif kepada komunitas peretas untuk memeriksa kode Anda guna menemukan kekurangan yang kritis. Contoh yang nyata adalah "infinite money bug" yang memungkinkan penyerang menciptakan Ether dalam jumlah tak terhingga pada [Optimism](https://www.optimism.io/), yaitu protokol [Lapisan ke-2](/layer-2/) yang berjalan di Ethereum. Untungnya, seorang peretas topi putih [menemukan kekurangan tersebut](https://www.saurik.com/optimism.html) dan memberi tahu timnya, [sekaligus memperoleh imbalan besar dalam proses tersebut](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/). + +Strategi yang bermanfaat adalah menetapkan pembayaran program hadiah bounty bug secara proporsional dengan jumlah uang yang mengalami risiko. Disebut sebagai "[penskalaan hadiah bounty bug](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)", cara ini memberikan insentif finansial bagi individu untuk mengungkapkan kerentanan secara bertanggung jawab dan bukan malah mengeksploitasinya. + +### 5. Patuhi praktik terbaik selama pengembangan kontrak pintar {#follow-smart-contract-development-best-practices} + +Keberadaan audit dan hadiah bounty bug bukan alasan untuk menghindari tanggung jawab penulisan kode program yang berkualitas tinggi. Keamanan kontrak pintar yang baik dimulai dengan mengikuti proses desain dan pengembangan yang tepat: + +- Simpan semua kode dalam sistem kontrol versi, seperti git + +- Atur semua modifikasi kode melalui permintaan penarikan + +- Pastikan permintaan penarikan memiliki setidaknya satu peninjau independen. Jika Anda bekerja solo di suatu proyek, pertimbangkan untuk mencari pengembang lain dan bertukar tinjauan kode + +- Gunakan [lingkungan pengembangan](/developers/docs/frameworks/) untuk pengujian, kompilasi, dan penyebaran kontrak pintar + +- Jalankan kode Anda melalui alat analisis kode dasar, seperti Mythril dan Slither. Idealnya, hal ini harus dilakukan sebelum digabungkannya setiap permintaan penarikan, lalu bandingkan perbedaannya pada output + +- Pastikan kode Anda dikompilasi tanpa kesalahan, dan alat kompilasi Solidity tidak mengeluarkan peringatan + +- Dokumentasikan kode Anda dengan baik (menggunakan [NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html)) dan jelaskan detail tentang arsitektur kontrak dengan bahasa yang mudah dipahami. Hal ini akan memudahkan orang lain yang akan mengaudit dan meninjau kode Anda. + +### 6. Terapkan rencana pemulihan bencana yang andal {#implement-disaster-recovery-plans} + +Merancang kontrol akses yang aman, menerapkan pengubah fungsi, dan saran-saran lainnya dapat meningkatkan keamanan kontrak pintar, tetapi hal-hal tersebut tidak dapat menghilangkan kemungkinan eksploit yang jahat. Membuat kontrak pintar yang aman membutuhkan "persiapan kegagalan" dan rencana cadangan perlu dimiliki untuk merespons serangan secara efektif. Rencana pemulihan bencana yang tepat akan menggabungkan beberapa atau semua komponen berikut ini: + +#### Peningkatan kontrak {#contract-upgrades} + +Meskipun kontrak pintar Ethereum secara default bersifat permanen, tetapi dimungkinkan untuk melakukan perubahan terbatas dengan menggunakan pola peningkatan. Peningkatan kontrak diperlukan dalam kasus ketika cacat kritis menyebabkan kontrak lama menjadi tidak dapat digunakan dan pilihan paling layak adalah menyebarkan logika baru. -1. Membaca jumlah saldo yang dimiliki pengguna -2. Mengirimkan kepada pengguna jumlah saldo dalam ETH -3. Mengatur ulang saldo pengguna ke 0, sehingga mereka tidak bisa menarik saldo mereka lagi. +Mekanisme peningkatan kontrak berfungsi dengan cara berbeda, tetapi "pola proksi" adalah salah satu cara yang lebih populer untuk meningkatkan kontrak pintar. Pola proksi memisahkan keadaan dan logika aplikasi menjadi _dua_ kontrak. Kontrak pertama (disebut 'kontrak proksi') menyimpan variabel keadaan (misalnya, saldo pengguna), sedangkan kontrak kedua (yang disebut 'kontrak logika') menyimpan kode untuk menjalankan fungsi kontrak. -Jika dipanggil dari akun reguler (seperti akun MetaMask milik Anda), ini berfungsi sebagaimana mestinya: msg.sender.call.value(), mengirimkan ETH ke akun Anda. Akan tetapi, kontrak pintar juga bisa membuat pemanggilan. Jika kontrak kustom yang jahat adalah kontrak yang memanggil `withdraw()`, msg.sender.call.value() tidak hanya akan mengirim `amount` ETH, tetapi secara implisit juga akan memanggil kontrak untuk memulai eksekusi kode. Bayangkan kontrak jahat ini: +Akun berinteraksi dengan kontrak proksi, yang mengirimkan semua panggilan fungsi ke kontrak logika dengan menggunakan panggilan tingkat rendah [`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries). Berbeda dengan pemanggilan message biasa, `delegatecall()` memastikan bahwa kode yang berjalan pada alamat kontrak logika akan dijalankan dalam konteks kontrak yang memanggil. Hal ini berarti bahwa kontrak logika akan selalu menulis ke penyimpanan kontrak proksi (bukan ke penyimpanannya sendiri) dan nilai asli dari `msg.sender` dan `msg.value` akan dipertahankan. + +Mendelegasikan panggilan ke kontrak logika membutuhkan penyimpanan alamatnya di penyimpanan kontrak proksi. Oleh sebab itu, peningkatan logika kontrak hanyalah masalah penyebaran kontrak logika yang lain dan menyimpan alamat baru di kontrak proksi. Karena panggilan berikutnya ke kontrak proksi secara otomatis dirutekan ke kontrak logika yang baru, Anda akan "meningkatkan" kontrak tanpa benar-benar mengubah kode. + +[Selengkapnya tentang peningkatan kontrak](/developers/docs/smart-contracts/upgrading/). + +#### Penghentian darurat {#emergency-stops} + +Seperti yang telah disebutkan, audit dan pengujian yang ekstensif tidak akan dapat menemukan semua bug dalam kontrak pintar. Jika kerentanan muncul dalam kode Anda setelah penyebaran, upaya menambalnya tidak mungkin dilakukan karena Anda tidak dapat mengubah kode yang berjalan di akun kontrak. Selain itu, mekanisme peningkatan (misalnya, pola proksi) dapat memakan waktu untuk diterapkan (sering kali membutuhkan persetujuan dari berbagai pihak), yang hanya memberikan lebih banyak waktu bagi penyerang untuk menimbulkan kerusakan lain. + +Opsi nuklir adalah menerapkan fungsi "penghentian darurat" yang akan memblokir panggilan ke fungsi-fungsi yang rentan dalam kontrak. Penghentian darurat biasanya terdiri dari beberapa komponen berikut ini: + +1. Variabel Boolean global yang menunjukkan apakah kontrak pintar dalam keadaan berhenti atau tidak. Variabel ini ditetapkan sebagai `false` saat penyiapan kontrak, tetapi akan kembali ke `true` setelah kontrak dihentikan. + +2. Fungsi yang mereferensikan variabel Boolean ketika dijalankan. Fungsi-fungsi tersebut dapat diakses ketika kontrak pintar tidak dihentikan, dan menjadi tidak bisa diakses ketika fitur penghentian darurat dipicu. + +3. Entitas yang memiliki akses ke fungsi penghentian darurat, yang menetapkan variabel Boolean ke nilai `true`. Untuk mencegah tindakan jahat, panggilan ke fungsi ini dapat dibatasi hanya untuk alamat tepercaya (misalnya, pemilik kontrak). + +Setelah kontrak mengaktifkan penghentian darurat, fungsi tertentu tidak akan dapat dipanggil. Hal ini dicapai dengan memasukkan beberapa fungsi tertentu ke dalam pengubah yang mengacu ke variabel global. Berikut [contoh](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol) yang menggambarkan pelaksanaan pola ini dalam kontrak: ```solidity -contract Attacker { - function beginAttack() external payable { - Victim(VICTIM_ADDRESS).deposit.value(1 ether)(); - Victim(VICTIM_ADDRESS).withdraw(); +// This code has not been professionally audited and makes no promises about safety or correctness. Use at your own risk. + +contract EmergencyStop { + + bool isStopped = false; + + modifier stoppedInEmergency { + require(!isStopped); + _; } - function() external payable { - if (gasleft() > 40000) { - Victim(VICTIM_ADDRESS).withdraw(); - } + modifier onlyWhenStopped { + require(isStopped); + _; + } + + modifier onlyAuthorized { + // Check for authorization of msg.sender here + _; + } + + function stopContract() public onlyAuthorized { + isStopped = true; + } + + function resumeContract() public onlyAuthorized { + isStopped = false; + } + + function deposit() public payable stoppedInEmergency { + // Deposit logic happening here + } + + function emergencyWithdraw() public onlyWhenStopped { + // Emergency withdraw happening here } } ``` -Memanggil Attacker.beginAttack() akan memulai satu siklus yang terlihat seperti ini: +Contoh ini menunjukkan fitur dasar penghentian darurat: -``` -0.) Attacker's EOA calls Attacker.beginAttack() with 1 ETH -0.) Attacker.beginAttack() deposits 1 ETH into Victim - - 1.) Attacker -> Victim.withdraw() - 1.) Victim reads balances[msg.sender] - 1.) Victim sends ETH to Attacker (which executes default function) - 2.) Attacker -> Victim.withdraw() - 2.) Victim reads balances[msg.sender] - 2.) Victim sends ETH to Attacker (which executes default function) - 3.) Attacker -> Victim.withdraw() - 3.) Victim reads balances[msg.sender] - 3.) Victim sends ETH to Attacker (which executes default function) - 4.) Attacker no longer has enough gas, returns without calling again - 3.) balances[msg.sender] = 0; - 2.) balances[msg.sender] = 0; (it was already 0) - 1.) balances[msg.sender] = 0; (it was already 0) -``` +- `isStopped` adalah Boolean yang dinilai menjadi `false` saat awal dan menjadi `true` ketika kontrak memasuki mode darurat. -Memanggil Attacker.beginAttack dengan 1 ETH akan menyerang Korban secara re-entrancy, yang menarik lebih banyak ETH dari yang disediakan (diambil dari saldo pengguna lain, menyebabkan kontrak Korban menjadi di bawah penjaminan) +- Pengubah fungsi `onlyWhenStopped` dan `stoppedInEmergency` memeriksa variabel `isStopped`. `stoppedInEmergency` digunakan untuk mengontrol fungsi-fungsi yang seharusnya tidak dapat diakses ketika kontrak mengalami kerentanan (misalnya, `deposit()`). Panggilan ke berbagai fungsi ini akan langsung dibatalkan. -### Bagaimana mengatasi re-entrancy (cara yang salah) {#how-to-deal-with-re-entrancy-the-wrong-way} +`onlyWhenStopped` digunakan untuk fungsi-fungsi yang seharusnya dapat dipanggil selama keadaan darurat (misalnya, `emergencyWithdraw()`). Fungsi-fungsi tersebut dapat membantu mengatasi situasi sehingga dikecualikan dari daftar "fungsi terbatas". -Seseorang mungkin menganggap mengalahkan re-entrancy cukup dengan mencegah kontrak pintar apa pun berinteraksi dengan kode Anda. Anda mencari tumpukan yang meluap, Anda menemukan potongan kode ini dengan banyak suara positif: +Penggunaan fungsionalitas penghentian darurat memberikan tindakan sementara yang efektif untuk menangani kerentanan serius pada kontrak pintar Anda. Namun, fungsi ini membutuhkan kepercayaan lebih besar dari pengguna terhadap pengembang agar tidak mengaktifkan fungsi ini untuk kepentingannya sendiri. Untuk tujuan ini, solusi yang mungkin adalah desentralisasi kontrol penghentian darurat dengan cara memberlakukan mekanisme voting di dalam rantai, timelock, atau persetujuan dari dompet multisig. -```solidity -function isContract(address addr) internal returns (bool) { - uint size; - assembly { size := extcodesize(addr) } - return size > 0; -} -``` +#### Pemantauan aksi {#event-monitoring} + +[Aksi](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events) memungkinkan Anda melacak panggilan ke fungsi kontrak pintar dan memantau perubahan pada variabel keadaan. Idealnya, kontrak pintar Anda diprogram untuk mengeluarkan aksi setiap kali ada pihak yang melakukan tindakan yang kritis dari segi keamanan (misalnya, menarik dana). + +Pembuatan log untuk aksi dan pemantauannya di luar rantai memberikan wawasan tentang operasi kontrak dan membantu mempercepat pengungkapan tindakan jahat. Hal ini berarti tim Anda dapat merespons lebih cepat terhadap peretasan dan melakukan tindakan untuk mengurangi dampaknya terhadap pengguna, seperti menjeda fungsi atau melakukan peningkatan. + +Anda juga dapat memilih alat pemantauan yang dijual bebas yang secara otomatis mengirimkan peringatan setiap kali seseorang berinteraksi dengan kontrak Anda. Dengan berbagai alat ini, Anda dapat membuat peringatan khusus berdasarkan berbagai pemicu, seperti volume transaksi, frekuensi panggilan fungsi, atau fungsi tertentu yang terlibat. Misalnya, Anda dapat memprogram peringatan yang muncul ketika jumlah penarikan dalam satu transaksi melewati ambang batas tertentu. + +### 7. Merancang sistem tata kelola yang aman {#design-secure-governance-systems} + +Anda mungkin ingin mendesentralisasi aplikasi Anda dengan menyerahkan kontrol atas kontrak pintar inti ke anggota komunitas. Dalam hal ini, sistem kontrak pintar akan mencakup modul tata kelola—mekanisme yang memungkinkan anggota komunitas menyetujui tindakan administratif melalui sistem tata kelola di dalam rantai. Misalnya, proposal peningkatan kontrak proksi menjadi implementasi baru dapat dipilih oleh para pemegang token. + +Tata kelola terdesentralisasi dapat bermanfaat, terutama karena sejalan dengan kepentingan pengembang dan pengguna akhir. Namun demikian, mekanisme tata kelola kontrak pintar dapat menimbulkan risiko baru jika penerapannya tidak tepat. Skenario yang dapat terjadi adalah jika penyerang memperoleh kekuatan suara yang sangat besar (diukur dalam jumlah token yang dipegang) dengan mengambil [flash loan](/defi/#flash-loans) (pinjaman kilat) dan berhasil masuk melalui proposal jahat. + +Salah satu cara untuk mencegah masalah terkait tata kelola di dalam rantai adalah dengan [menggunakan timelock (penguncian waktu)](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/). Timelock (penguncian waktu) mencegah kontrak pintar menjalankan tindakan tertentu hingga berlalunya jangka waktu tertentu. Strategi lain termasuk menetapkan "bobot suara" pada setiap token berdasarkan lamanya token tersebut terkunci, atau mengukur kekuatan suara dari alamat pada periode sebelumnya (misalnya, 2-3 blok sebelumnya) sebagai pengganti blok saat ini. Kedua metode tersebut mengurangi kemungkinan terkumpulnya suara dengan cepat untuk mempengaruhi suara di dalam rantai. + +Selengkapnya tentang [merancang sistem tata kelola yang aman](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/) dan [berbagai mekanisme pemungutan suara dalam DAO](https://hackernoon.com/governance-is-the-holy-grail-for-daos). + +### 8. Mengurangi kompleksitas dalam kode menjadi sesedikit mungkin {#reduce-code-complexity} + +Pengembang perangkat lunak tradisional akrab dengan prinsip KISS ("usahakan tetap sederhana"), yang menyarankan agar tidak memasukkan kompleksitas yang tidak perlu ke dalam desain perangkat lunak. Hal ini mengikuti pemikiran lama bahwa "sistem kompleks akan gagal dengan cara yang kompleks" dan menjadi lebih rentan terhadap kesalahan yang sangat merugikan. -Tampak masuk akal: kontrak memiliki kode, jika pemanggil memiliki kode apa pun, jangan membiarkannya melakukan deposito. Mari tambahkan ini: +Menjaga kesederhanaan terutama penting saat menulis kontrak pintar, mengingat bahwa kontrak pintar berpotensi mengontrol jumlah nilai yang besar. Tips untuk mencapai kesederhanaan saat menulis kontrak pintar adalah dengan menggunaan kembali pustaka-pustaka yang sudah ada, seperti [Kontrak OpenZeppelin](https://docs.openzeppelin.com/contracts/4.x/), jika memungkinkan. Karena berbagai pustaka ini telah melalui audit dan pengujian yang ekstensif oleh para pengembang, penggunaan pustaka ini mengurangi kemungkinan munculnya bug dibandingkan dengan menulis fungsionalitas baru dari awal. + +Saran umum lainnya adalah menulis fungsi yang kecil dan menjaga kontrak tetap modular dengan membagi logika bisnis ke dalam beberapa kontrak. Penulisan kode yang lebih sederhana tidak hanya mengurangi permukaan serangan pada kontrak pintar, tetapi juga mempermudah pemahaman tentang ketepatan sistem secara keseluruhan dan mendeteksi kemungkinan kesalahan desain sejak awal. + +### 9. Mencegah kerentanan umum kontrak pintar {#mitigate-common-smart-contract-vulnerabilities} + +#### Reentrancy (masuk kembali) {#reentrancy} + +EVM tidak mengizinkan konkurensi, yang berarti dua kontrak yang terlibat dalam pemanggilan message tidak dapat berjalan serentak. Panggilan eksternal akan menjeda eksekusi dan memori kontrak pemanggil hingga panggilan tersebut kembali, pada saat itu eksekusi berlanjut dengan normal. Proses ini dapat dideskripsikan secara resmi sebagai mentransfer [alur kontrol](https://www.computerhope.com/jargon/c/contflow.htm) ke kontrak lain. + +Meski kebanyakan aman, mentransfer alur kontrol ke kontrak yang tidak tepercaya dapat menyebabkan masalah, seperti reentrancy (masuk kembali). Serangan reentrancy (masuk kembali) terjadi ketika kontrak jahat memanggil balik ke kontrak yang rentan sebelum pemanggilan fungsi yang asli selesai. Penjelasan terbaik untuk jenis serangan ini adalah dengan contoh. + +Misalkan ada kontrak pintar sederhana ('Korban') yang memungkinkan penyetoran dan penarikan Ether bagi siapa saja: ```solidity -// KONTRAK INI SENGAJA DIBUAT MEMILIKI KERENTANAN, JANGAN DISALIN -contract ContractCheckVictim { - mapping (address => uint256) public balances; +// This contract is vulnerable. Do not use in production - function isContract(address addr) internal returns (bool) { - uint size; - assembly { size := extcodesize(addr) } - return size > 0; - } +contract Victim { + mapping (address => uint256) public balances; function deposit() external payable { - require(!isContract(msg.sender)); // <- NEW LINE balances[msg.sender] += msg.value; } @@ -155,39 +253,61 @@ contract ContractCheckVictim { } ``` -Sekarang, untuk mendepositokan ETH, Anda tidak boleh memiliki kode kontrak pintar di alamat Anda. Akan tetapi, ini bisa dengan mudah dikalahkan dengan kontrak Penyerang berikut ini: +Kontrak ini mengekspos fungsi `withdraw()` agar pengguna dapat menarik kembali ETH yang sebelumnya disimpan di dalam kontrak. Saat memproses penarikan dana, kontrak melakukan operasi berikut: -```solidity -contract ContractCheckAttacker { - constructor() public payable { - ContractCheckVictim(VICTIM_ADDRESS).deposit(1 ether); // <- New line - } +1. Memeriksa saldo ETH pengguna +2. Mengirim dana ke alamat yang memanggil +3. Mengatur ulang saldonya menjadi 0, sehingga mencegah penarikan tambahan dari pengguna + +Fungsi `withdraw()` di kontrak `Victim` mengikuti pola "periksa-interaksi-efek". Fungsi ini _memeriksa_ apakah kondisi yang diperlukan untuk eksekusi terpenuhi (yaitu, pengguna memiliki saldo ETH positif) dan melakukan _interaksi_ dengan mengirim ETH ke alamat pemanggil, sebelum menerapkan _efek_ transaksi (yaitu, mengurangi saldo pengguna). + +Jika `withdraw()` dipanggil dari akun milik eksternal (EOA), fungsi tersebut akan dijalankan sebagaimana diharapkan: `msg.sender.call.value()` mengirim ETH ke pemanggil. Namun, jika `msg.sender` adalah akun kontrak pintar yang memanggil `withdraw()`, pengiriman dana dengan menggunakan `msg.sender.call.value()` juga akan memicu berjalannya kode yang disimpan di alamat tersebut. +Bayangkan ini sebagai kode yang disebarkan di akun kontrak: + +```solidity + contract Attacker { function beginAttack() external payable { - ContractCheckVictim(VICTIM_ADDRESS).withdraw(); + Victim(victim_address).deposit.value(1 ether)(); + Victim(victim_address).withdraw(); } function() external payable { if (gasleft() > 40000) { - Victim(VICTIM_ADDRESS).withdraw(); + Victim(victim_address).withdraw(); } - } + } } ``` -Sementara serangan pertama adalah serangan pada logika kontrak, ini adalah serangan pada perilaku penggunaan kontrak Ethereum. Dalam pembuatannya, kontrak belum mengembalikan kodenya untuk digunakan pada alamatnya, tapi mempertahankan kontrol penuh EVM SELAMA proses ini. +Kontrak ini dirancang untuk melakukan tiga hal: + +1. Menerima setoran dari akun lain (dengan kemungkinan akun EOA penyerang) +2. Setor 1 ETH ke kontrak Korban +3. Menarik 1 ETH yang tersimpan di kontrak pintar -Secara teknis, hal ini dimungkinkan untuk mencegah kontrak pintar memanggil kode Anda, menggunakan baris ini: +Tidak ada yang salah di sini, kecuali bahwa `Attacker` memiliki fungsi lain yang memanggil kembali fungsi `withdraw()` di `Victim` jika gas yang tersisa dari `msg.sender.call.value` yang masuk lebih dari 40.000. Hal ini memberi `Attacker` kemampuan untuk masuk kembali ke `Victim` dan menarik lebih banyak dana _sebelum_ selesainya pemanggilan `withdraw` yang pertama. Siklusnya terlihat seperti ini: ```solidity -require(tx.origin == msg.sender) +- Attacker's EOA calls `Attacker.beginAttack()` with 1 ETH +- `Attacker.beginAttack()` deposits 1 ETH into `Victim` +- `Attacker` calls `withdraw() in `Victim` +- `Victim` checks `Attacker`’s balance (1 ETH) +- `Victim` sends 1 ETH to `Attacker` (which triggers the default function) +- `Attacker` calls `Victim.withdraw()` again (note that `Victim` hasn’t reduced `Attacker`’s balance from the first withdrawal) +- `Victim` checks `Attacker`’s balance (which is still 1 ETH because it hasn’t applied the effects of the first call) +- `Victim` sends 1 ETH to `Attacker` (which triggers the default function and allows `Attacker` to reenter the `withdraw` function) +- The process repeats until `Attacker` runs out of gas, at which point `msg.sender.call.value` returns without triggering additional withdrawals +- `Victim` finally applies the results of the first transaction (and subsequent ones) to its state, so `Attacker`’s balance is set to 0 ``` -Namun, ini tetap bukanlah solusi yang bagus. Satu dari aspek paling menyenangkan dari Ethereum adalah komposabilitasnya, kontrak pintar saling terintegrasi dan membangun satu sama lain. Dengan menggunakan baris di atas, Anda sedang membatasi daya guna proyek Anda. +Ringkasnya adalah karena saldo pemanggil tidak ditetapkan ke 0 hingga selesainya eksekusi fungsi, pemanggilan berikutnya akan berhasil dan memungkinkan pemanggil menarik saldonya beberapa kali. Jenis serangan seperti ini dapat digunakan untuk menguras dana dari kontrak pintar, seperti yang terjadi dalam serangan [peretasan DAO 2016](https://www.coindesk.com/learn/2016/06/25/understanding-the-dao-attack/). Serangan reentrancy (masuk kembali) masih menjadi masalah kritis bagi kontrak pintar saat ini, seperti yang ditunjukkan oleh [daftar publik eksploit reentrancy](https://github.com/pcaversaccio/reentrancy-attacks). + +##### Cara mencegah serangan reentrancy (masuk kembali) -### Bagaimana mengatasi re-entrancy (cara yang benar) {#how-to-deal-with-re-entrancy-the-right-way} +Salah satu pendekatan untuk menangani reentrancy (masuk kembali) adalah dengan mengikuti pola [periksa-efek-interaksi](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern). Pola ini mengurutkan eksekusi fungsi sedemikian rupa sehingga kode yang melakukan pemeriksaan yang diperlukan sebelum melanjutkan eksekusi akan berada di urutan pertama, diikuti oleh kode yang memanipulasi keadaan kontrak, lalu yang terakhir adalah kode yang berinteraksi dengan kontrak atau EOA lain. -Hanya dengan mengalihkan urutan pembaruan penyimpanan dan pemanggilan eksternal, kita mencegah kondisi re-entrancy yang memungkinkan penyerangan. Memanggil kembali penarikan, sekalipun dimungkinkan, tidak akan menguntungkan penyerang, karena penyimpanan `saldo` telah diatur ke 0. +Pola periksa-efek-interaksi digunakan dalam versi yang direvisi dari kontrak `Victim` yang ditunjukkan di bawah ini: ```solidity contract NoLongerAVictim { @@ -200,128 +320,236 @@ contract NoLongerAVictim { } ``` -Kode di atas mengikuti pola desain "Pemeriksaan-Efek-Interaksi", yang membantu perlindungan terhadap re-entrancy. Anda bisa [membaca selengkapnya tentang Pemeriksaan-Efek-Interaksi di sini](https://fravoll.github.io/solidity-patterns/checks_effects_interactions.html) +Kontrak ini melakukan _pemeriksaan_ pada saldo pengguna, menerapkan _efek_ dari fungsi `withdraw()` (dengan mengatur ulang saldo pengguna menjadi 0), dan melanjutkan dengan melakukan _interaksi_ (mengirim ETH ke alamat pengguna). Hal ini memastikan kontrak memperbarui penyimpanannya sebelum panggilan eksternal, menghilangkan kondisi re-entrancy (masuk kembali) yang memungkinkan serangan pertama. Kontrak `Attacker` masih bisa memanggil kembali ke `NoLongerAVictim`, tetapi karena `balances[msg.sender]` telah ditetapkan menjadi 0, maka penarikan tambahan akan menimbulkan kesalahan. + +Pilihan lainnya adalah dengan menggunakan kunci pengecualian bersama (umumnya dideskripsikan sebagai "mutex") yang mengunci sebagian dari keadaan kontrak hingga pemanggilan fungsi selesai. Hal ini diterapkan dengan menggunakan variabel Boolean yang ditetapkan ke `true` sebelum fungsi dieksekusi dan kembali ke `false` setelah pemanggilan selesai. Seperti yang terlihat pada contoh di bawah ini, penggunaan mutex melindungi fungsi dari pemanggilan rekursif pada saat pemanggilan asli masih diproses, sehingga secara efektif menghentikan reentrancy (masuk kembali). + +```solidity +pragma solidity ^0.7.0; -### Bagaimana mengatasi re-entrancy (opsi inti) {#how-to-deal-with-re-entrancy-the-nuclear-option} +contract MutexPattern { + bool locked = false; + mapping(address => uint256) public balances; -Setiap kali Anda mengirim ETH ke alamat tak terpercaya atau berinteraksi dengan kontrak yang tidak dikenal (seperti pemanggilan `transfer()` dari alamat token yang disediakan pengguna), Anda membuka diri untuk kemungkinan serangan re-entrancy. **Dengan mendesain kontrak yang tidak mengirim ETH maupun memanggil kontrak tak terpercaya, Anda mencegah kemungkinan serangan re-entrancy!** + modifier noReentrancy() { + require(!locked, "Blocked from reentrancy."); + locked = true; + _; + locked = false; + } + // This function is protected by a mutex, so reentrant calls from within `msg.sender.call` cannot call `withdraw` again. + // The `return` statement evaluates to `true` but still evaluates the `locked = false` statement in the modifier + function withdraw(uint _amount) public payable noReentrancy returns(bool) { + require(balances[msg.sender] >= _amount, "No balance to withdraw."); -## Jenis serangan lainnya {#more-attack-types} + balances[msg.sender] -= _amount; + bool (success, ) = msg.sender.call{value: _amount}(""); + require(success); -Jenis serangan di atas mencakup masalah pengodean kontrak pintar (re-entrancy) dan keanehan pada Ethereum (menjalankan kode di dalam pembangun kontrak, sebelum kode tersedia di alamat kontrak). Masih banyak jenis serangan yang perlu diwaspadai, seperti: + return true; + } +} +``` -- Front-running -- Penolakan pengiriman ETH -- Overflow/underflow integer +Anda juga dapat menggunakan sistem [pembayaran tarik](https://docs.openzeppelin.com/contracts/4.x/api/security#PullPayment) yang mengharuskan pengguna menarik dana dari kontrak pintar, sebagai pengganti sistem "pembayaran dorong" yang mengirim dana ke akun. Hal ini menghilangkan kemungkinan secara tidak sengaja memicu kode pada alamat yang tidak dikenal (dan juga dapat mencegah beberapa serangan denial-of-service atau penolakan layanan). -Bacaan lebih lanjut: +#### Underflow dan overflow bilangan bulat {#integer-underflows-and-overflows} -- [Serangan yang Diketahui pada Kontrak Pintar Consensys](https://consensys.github.io/smart-contract-best-practices/attacks/) - Penjelasan yang sangat mudah dibaca tentang kerentanan paling signifikan, disertai contoh kode untuk sebagian besar kerentanan. -- [Daftar SWC](https://swcregistry.io/docs/SWC-128) - Daftar terkurasi CWE yang berlaku untuk Ethereum dan kontrak pintar +Overflow bilangan bulat terjadi ketika hasil operasi aritmatika berada di luar rentang nilai yang dapat diterima sehingga menyebabkan nilainya "bergulung" ke nilai terendah yang dapat dinyatakan. Misalnya, `uint8` hanya dapat menyimpan nilai hingga 2^8-1=255. Operasi aritmatika yang menghasilkan nilai yang lebih besar dari `255` akan mengalami overflow dan mengatur ulang `uint` ke `0`, serupa dengan cara odometer di mobil mengatur ulang ke 0 setelah mencapai jarak tempuh maksimal (999999). -## Perangkat keamanan {#security-tools} +Underflow bilangan bulat terjadi karena alasan yang serupa: hasil operasi aritmatika berada di bawah rentang yang dapat diterima. Misalkan Anda mencoba mengurangi lagi nilai `0` pada data jenis `uint8`, maka hasilnya akan langsung bergulung ke nilai terbesar yang dapat dinyatakan (`255`). -Sekalipun memahami dasar-dasar keamanan Ethereum dan melibatkan jasa firma pengauditan profesional untuk mengulas kode Anda tak tergantikan, ada banyak peralatan yang tersedia untuk menolong menyoroti potensi masalah dalam kode Anda. +Baik overflow maupun underflow bilangan bulat dapat menyebabkan perubahan tak terduga pada variabel keadaan di kontrak dan menyebabkan eksekusi yang tidak direncanakan. Di bawah ini adalah contoh yang menunjukkan cara penyerang mengeksploitasi overflow aritmetika di kontrak pintar untuk melakukan operasi yang tidak sah: -### Keamanan kontrak pintar {#smart-contract-security} +``` +pragma solidity ^0.7.6; -**Slither -** **_Kerangka kerja analisis statis untuk Solidity yang ditulis dalam Python 3._** +// This contract is designed to act as a time vault. +// User can deposit into this contract but cannot withdraw for at least a week. +// User can also extend the wait time beyond the 1 week waiting period. -- [GitHub](https://github.com/crytic/slither) +/* +1. Deploy TimeLock +2. Deploy Attack with address of TimeLock +3. Call Attack.attack sending 1 ether. You will immediately be able to + withdraw your ether. -**MythX -** **_API analis keamanan untuk kontrak pintar Ethereum._** +What happened? +Attack caused the TimeLock.lockTime to overflow and was able to withdraw +before the 1 week waiting period. +*/ -- [mythx.io](https://mythx.io/) -- [Dokumentasi](https://docs.mythx.io/) +contract TimeLock { + mapping(address => uint) public balances; + mapping(address => uint) public lockTime; -**Mythril -** **_Peralatan analis keamanan untuk kode bita EVM._** + function deposit() external payable { + balances[msg.sender] += msg.value; + lockTime[msg.sender] = block.timestamp + 1 weeks; + } -- [mythril](https://github.com/ConsenSys/mythril) -- [Dokumentasi](https://mythril-classic.readthedocs.io/en/master/about.html) + function increaseLockTime(uint _secondsToIncrease) public { + lockTime[msg.sender] += _secondsToIncrease; + } -**Manticore -** **_Antarmuka baris perintah yang menggunakan sebuah perangkat eksekusi simbolis pada kontrak pintar dan biner._** + function withdraw() public { + require(balances[msg.sender] > 0, "Insufficient funds"); + require(block.timestamp > lockTime[msg.sender], "Lock time not expired"); -- [GitHub](https://github.com/trailofbits/manticore) -- [Dokumentasi](https://github.com/trailofbits/manticore/wiki) + uint amount = balances[msg.sender]; + balances[msg.sender] = 0; -**Securify -** **_Pemindai keamanan untuk kontrak pintar Ethereum._** + (bool sent, ) = msg.sender.call{value: amount}(""); + require(sent, "Failed to send Ether"); + } +} -- [securify.chainsecurity.com](https://securify.chainsecurity.com/) -- [Discord](https://discordapp.com/invite/nN77ckb) +contract Attack { + TimeLock timeLock; + + constructor(TimeLock _timeLock) { + timeLock = TimeLock(_timeLock); + } -**ERC20 Verifier -** **_Peralatan verifikasi untuk memeriksa apakah sebuah kontrak memenuhi standar ERC20._** + fallback() external payable {} + + function attack() public payable { + timeLock.deposit{value: msg.value}(); + /* + if t = current lock time then we need to find x such that + x + t = 2**256 = 0 + so x = -t + 2**256 = type(uint).max + 1 + so x = type(uint).max + 1 - t + */ + timeLock.increaseLockTime( + type(uint).max + 1 - timeLock.lockTime(address(this)) + ); + timeLock.withdraw(); + } +} +``` -- [erc20-verifier.openzeppelin.com](https://erc20-verifier.openzeppelin.com) -- [Forum](https://forum.openzeppelin.com/t/online-erc20-contract-verifier/1575) +##### Cara mencegah underflow dan overflow bilangan bulat -### Verifikasi Formal {#formal-verification} +Sejak versi 0.8.0, pengompilasi Solidity menolak kode yang menghasilkan underflow dan overflow bilangan bulat. Namun, kontrak yang dikompilasi dengan versi pengompilasi yang lebih rendah harus melakukan pemeriksaan pada fungsi yang melibatkan operasi aritmatika atau menggunakan pustaka (misalnya, [SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math)) yang memeriksa adanya underflow/overflow. -**Informasi mengenai Verifikasi Formal** +#### Manipulasi Oracle {#oracle-manipulation} -- [Bagaimana cara kerja verifikasi formal pada kontrak pintar](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/) _20 Juli 2018 - Brian Marick_ -- [Bagaimana Verifikasi Formal Dapat Memastikan Kontrak Pintar Sempurna](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1) _29 Januari 2018 - Bernard Mueller_ +[Oracles](/developers/docs/oracles/) mengambil informasi di luar rantai dan mengirimnya ke dalam rantai agar dapat digunakan oleh kontrak pintar. Dengan oracle, Anda dapat mendesain kontrak pintar yang mendukung sistem di luar rantai, seperti pasar modal, sehingga dapat sangat memperluas penggunaannya. -### Menggunakan peralatan {#using-tools} +Akan tetapi, jika oracle rusak dan mengirimkan informasi yang salah di dalam rantai, kontrak pintar akan dijalankan berdasarkan input yang salah sehingga dapat menimbulkan masalah. Ini adalah dasar dari "masalah oracle", yang berkaitan dengan tugas untuk memastikan informasi dari oracle rantai blok sudah akurat, mutakhir, dan tepat waktu. -Dua dari peralatan paling populer untuk analisis keamanan kontrak pintar adalah: +Masalah keamanan yang terkait adalah menggunakan oracle di dalam rantai, seperti pertukaran terdesentralisasi, untuk mendapatkan harga spot untuk aset. Platform pemberian pinjaman di industri [finansial terdesentralisasi (DeFi)](/defi/) sering melakukan hal ini guna menentukan nilai jaminan pengguna untuk menentukan jumlah yang dapat dipinjamnya. -- [Slither](https://github.com/crytic/slither) oleh [Trail of Bits](https://www.trailofbits.com/) (versi yang telah dihost: [Crytic](https://crytic.io/)) -- [Mythril](https://github.com/ConsenSys/mythril) oleh [ConsenSys](https://consensys.net/) (versi yang telah dihost: [MythX](https://mythx.io/)) +Harga DEX sering kali akurat, sebagian besar disebabkan oleh arbitrator yang memulihkan parity di pasar. Akan tetapi, harga tersebut mudah dimanipulasi, terutama jika oracle di dalam rantai menghitung harga aset berdasarkan pola perdagangan historis (seperti yang umum terjadi). -Keduanya adalah peralatan berguna yang menganalisa kode Anda dan melaporkan masalah. Masing-masing mempunyai versi yang telah dihost [commercial], tapi juga tersedia secara gratis untuk dijalankan secara lokal. Berikuti ini adalah contoh singkat bagaimana menjalankan Slither, yang tersedia dalam gambar Docker yang mudah dipahami `trailofbits/eth-security-toolbox`. Anda akan perlu [menginstal Docker jika Anda belum melakukannya](https://docs.docker.com/get-docker/). +Misalnya, penyerang dapat memompa harga spot aset yang palsu dengan mengambil flash loan (pinjaman kilat) tepat sebelum berinteraksi dengan kontrak pemberian pinjaman Anda. Meminta DEX untuk harga aset akan mengembalikan nilai yang lebih tinggi dari biasanya (karena "pesanan beli" penyerang yang lebih besar dari biasanya sehingga mengubah permintaan aset). Hal ini menyebabkan penyerang dapat meminjam lebih banyak dari yang seharusnya. "Serangan pinjaman kilat" tersebut telah digunakan untuk mengeksploitasi ketergantungan pada oracle harga di antara aplikasi DeFi sehingga menyebabkan protokol kehilangan dana jutaan. -```bash -$ mkdir test-slither -$ curl https://gist.githubusercontent.com/epheph/460e6ff4f02c4ac582794a41e1f103bf/raw/9e761af793d4414c39370f063a46a3f71686b579/gistfile1.txt > bad-contract.sol -$ docker run -v `pwd`:/share -it --rm trailofbits/eth-security-toolbox -docker$ cd /share -docker$ solc-select 0.5.11 -docker$ slither bad-contract.sol -``` +##### Cara mencegah manipulasi oracle -Akan menghasilkan output ini: - -```bash -ethsec@1435b241ca60:/share$ slither bad-contract.sol -INFO:Detectors: -Reentrancy in Victim.withdraw() (bad-contract.sol#11-16): - External calls: - - (success) = msg.sender.call.value(amount)() (bad-contract.sol#13) - State variables written after the call(s): - - balances[msg.sender] = 0 (bad-contract.sol#15) -Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities -INFO:Detectors: -Low level call in Victim.withdraw() (bad-contract.sol#11-16): - - (success) = msg.sender.call.value(amount)() (bad-contract.sol#13) -Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls -INFO:Slither:bad-contract.sol analyzed (1 contracts with 46 detectors), 2 result(s) found -INFO:Slither:Use https://crytic.io/ to get access to additional detectors and GitHub integration -``` +Persyaratan minimum untuk menghindari manipulasi oracle adalah menggunakan jaringan oracle terdesentralisasi yang meminta informasi dari berbagai sumber untuk menghindari titik kegagalan tunggal. Dalam kebanyakan kasus, oracle terdesentralisasi memiliki insentif ekonomi kripto bawaan untuk mendorong simpul oracle agar melaporkan informasi yang tepat sehingga menjadikannya lebih aman daripada oracle terpusat. -Slither telah mengidentifikasi potensi re-entrancy di sini, mengidentifikasi baris kunci di mana masalah mungkin muncul, dan memberi kita sebuah tautan untuk informasi lebih detail tentang masalahnya: +Jika Anda berencana untuk meminta harga aset dari oracle di dalam rantai, pertimbangkan untuk menggunakan oracle yang menerapkan mekanisme harga rata-rata berbobot waktu (TWAP). Sebuah [oracle TWAP](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) meminta harga aset pada dua titik waktu yang berbeda (yang dapat Anda ubah) dan menghitung harga spot berdasarkan harga rata-rata yang diperoleh. Memilih periode waktu yang lebih lama melindungi protokol Anda dari manipulasi harga karena order besar yang dieksekusi baru-baru ini tidak dapat memengaruhi harga aset. -> Referensi: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities +## Sumber daya keamanan kontrak pintar untuk pengembang {#smart-contract-security-resources-for-developers} -memungkinkan Anda dengan cepat belajar tentang potensi masalah dalam kode Anda. Seperti semua peralatan pengujian otomatis, Slither tidak sempurna, dan terlalu sering membuat kesalahan pada aspek pelaporan. Slither bisa memperingatkan potensi re-entrancy, bahkan ketika tidak ada kerentanan yang bisa diekspoloitasi. Sering kali, meninjau ulang PERBEDAAN dalam output Slither di antara perubahan kode sangat memberi kelejasan, membantu menemukan kerentanan yang ditimbulkan sebelumnya daripada menunggu sampai kode proyek Anda selesai. +### Alat untuk menganalisis kontrak pintar dan memverifikasi kebenaran kode {#code-analysis-tools} -## Bacaan lebih lanjut {#further-reading} +- **[Alat dan pustaka pengujian](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** - _Kumpulan alat dan pustaka standar industri untuk melakukan pengujian unit, analisis statis, dan analisis dinamis pada kontrak pintar._ -**Panduan praktik terbaik untuk keamanan kontrak pintar** +- **[Alat verifikasi formal](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)** - _Alat untuk memverifikasi kebenaran fungsional pada kontrak pintar dan memeriksa invarian._ -- [consensys.github.io/smart-contract-best-practices/](https://consensys.github.io/smart-contract-best-practices/) -- [GitHub](https://github.com/ConsenSys/smart-contract-best-practices/) -- [Daftar rekomendasi keamanan dan praktik terbaik](https://github.com/guylando/KnowledgeLists/blob/master/EthereumSmartContracts.md) +- **[Layanan audit kontrak pintar](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** - _Daftar organisasi yang menyediakan layanan audit kontrak pintar untuk proyek pengembangan Ethereum._ -**Standar verifikasi keamanan kontrak pintar (SCSVS)** +- **[Platform hadiah bounty bug](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** - _Platform untuk mengkoordinasikan hadiah bounty bug dan memberi hadiah atas pengungkapan kerentanan kritis di kontrak pintar secara bertanggung jawab._ -- [securing.github.io/SCSVS/](https://securing.github.io/SCSVS/) +- **[Pemeriksa Fork](https://forkchecker.hashex.org/)** - _Alat online gratis untuk memeriksa semua informasi yang tersedia mengenai kontrak hasil fork._ -_Tahu tentang sumber daya komunitas yang membantu Anda? Edit halaman ini dan tambahkan!_ +- **[Pengode ABI](https://abi.hashex.org/)** - _Layanan online gratis untuk mengodekan fungsi kontrak Solidity dan argumen konstruktor Anda._ -## Tutorial terkait {#related-tutorials} +### Alat untuk memantau kontrak pintar {#smart-contract-monitoring-tools} + +- **[Defender Sentinels OpenZeppelin](https://docs.openzeppelin.com/defender/sentinel)** - _Alat untuk memantau dan merespons aksi, fungsi, dan parameter transaksi secara otomatis di kontrak pintar Anda._ + +- **[Peringatan Waktu Nyata Tenderly](https://tenderly.co/alerting/)** - _Alat untuk mendapatkan pemberitahuan waktu nyata ketika aksi yang tidak biasa atau tak terduga terjadi pada kontrak pintar atau dompet Anda._ + +### Alat untuk administrasi kontrak pintar dengan aman {#smart-contract-administration-tools} + +- **[Defender Admin OpenZeppelin](https://docs.openzeppelin.com/defender/admin)** - _Antarmuka untuk mengelola administrasi kontrak pintar, termasuk kontrol akses, peningkatan, dan penangguhan._ + +- **[Safe](https://safe.global/)** - _Dompet kontrak pintar yang berjalan di Ethereum dan membutuhkan jumlah orang minimum untuk menyetujui transaksi sebelum transaksi tersebut dapat terjadi (M-dari-N)._ + +- **[Kontrak OpenZeppelin](https://docs.openzeppelin.com/contracts/4.x/)** - _Pustaka kontrak untuk menerapkan fitur-fitur administratif, termasuk kepemilikan kontrak, peningkatan, kontrol akses, tata kelola, kemampuan jeda, dan lainnya._ + +### Layanan audit kontrak pintar {#smart-contract-auditing-services} + +- **[ConsenSys Diligence](https://consensys.net/diligence/)** - _Layanan pengauditan kontrak pintar membantu proyek di seluruh ekosistem rantai blok dalam memastikan agar protokol proyek siap diluncurkan dan dapat melindungi pengguna._ + +- **[CertiK](https://www.certik.com/)** - _Perusahaan keamanan rantai blok merintis penggunaan teknologi Verifikasi formal canggih pada kontrak pintar dan jaringan rantai blok._ + +- **[Trail of Bits](https://www.trailofbits.com/)** - _Perusahaan keamanan siber yang menggabungkan riset keamanan dengan mentalitas penyerang untuk mengurangi risiko dan memperkuat kode._ + +- **[PeckShield](https://peckshield.com/)** - _Perusahaan keamanan rantai blok yang menawarkan produk dan layanan untuk keamanan, privasi, dan kegunaan di seluruh ekosistem rantai blok._ + +- **[QuantStamp](https://quantstamp.com/)** - _Layanan pengauditan yang memudahkan penggunaan arus utama teknologi rantai blok melalui layanan penilaian keamanan dan risiko._ + +- **[OpenZeppelin](https://www.openzeppelin.com/security-audits)** - _Perusahaan keamanan kontrak pintar yang menyediakan audit keamanan untuk sistem terdistribusi._ + +- **[Verifikasi Waktu Aktif](https://runtimeverification.com/)** - _Perusahaan keamanan yang berspesialisasi dalam pemodelan dan verifikasi formal kontrak pintar._ + +- **[Hacken](https://hacken.io)** - _Auditor keamanan Web3 yang menghadirkan pendekatan 360 derajat untuk keamanan rantai blok._ + +- **[Nethermind](https://nethermind.io/smart-contracts-audits)** - _Layanan pengauditan Solidity dan Cairo, memastikan integritas kontrak pintar dan keamanan pengguna di seluruh Ethereum dan Starknet._ + +- **[HashEx](https://hashex.org/)** - _HashEx berfokus pada pengauditan rantai blok dan kontrak pintar untuk memastikan keamanan mata uang kripto, menyediakan layanan seperti pengembangan kontrak pintar, pengujian penetrasi, konsultasi rantai blok._ + +- **[Code4rena](https://code4rena.com/)** - _Platform audit kompetitif yang memberikan insentif kepada ahli keamanan kontrak pintar untuk menemukan kerentanan dan membantu membuat web3 lebih aman._ + +### Platform hadiah bounty bug {#bug-bounty-platforms} + +- **[Immunefi](https://immunefi.com/)** - _Platform hadiah bounty bug pada kontrak pintar dan proyek DeFi, di mana peneliti keamanan meninjau kode, mengungkapkan kerentanan, mendapatkan bayaran, dan membuat kripto lebih aman._ + +- **[HackerOne](https://www.hackerone.com/)** - _Platform koordinasi kerentanan dan hadiah bounty bug yang menghubungkan bisnis dengan penguji penetrasi dan peneliti keamanan siber._ + +- **[HackenProof](https://hackenproof.com/)** - _Platform hadiah bounty buku bagi ahli untuk proyek-proyek kripto (DeFi, Kontrak Pintar, Dompet, CEX, dan lain-lain), di mana para profesional keamanan menyediakan layanan triase dan peneliti dibayar jika membuat laporan bug yang relevan dan terverifikasi._ + +### Publikasi kerentanan dan eksploitasi kontrak pintar yang diketahui {#common-smart-contract-vulnerabilities-and-exploits} + +- **[ConsenSys: Serangan Terkenal pada Kontrak Pintar](https://consensys.github.io/smart-contract-best-practices/attacks/)** - _Penjelasan yang mudah bagi pemula tentang kerentanan kontrak yang paling signifikan, dengan kode contoh untuk sebagian besar kasus._ + +- **[Daftar SWC](https://swcregistry.io/)** - _Daftar kurasi Common Weakness Enumeration (CWE) yang berlaku untuk kontrak pintar Ethereum._ + +- **[Rekt](https://rekt.news/)** - _Publikasi yang diperbarui secara teratur tentang peretasan dan eksploitasi kripto yang terkenal, beserta laporan pascakejadian yang mendetail._ + +### Tantangan untuk mempelajari keamanan kontrak pintar {#challenges-for-learning-smart-contract-security} + +- **[Awesome BlockSec CTF](https://github.com/blockthreat/blocksec-ctfs)** - _Daftar kurasi game perang keamanan rantai blok beserta tantangannya, dan kompetisi [Capture The Flag](https://www.webopedia.com/definitions/ctf-event/amp/) serta penulisan tentang solusi._ + +- **[DeFi Damn Vulnerable](https://www.damnvulnerabledefi.xyz/)** - _Permainan perang untuk mempelajari keamanan ofensif dari kontrak pintar DeFi serta mengembangkan keterampilan dalam perburuan bug dan audit keamanan._ + +- **[Ethernaut](https://ethernaut.openzeppelin.com/)** - _Permainan perang berbasis Web3/Solidity di mana setiap tingkatnya adalah kontrak pintar yang perlu 'diretas'._ + +### Praktik terbaik untuk mengamankan kontrak pintar {#smart-contract-security-best-practices} + +- **[ConsenSys: Praktik Keamanan Terbaik Kontrak Pintar Ethereum](https://consensys.github.io/smart-contract-best-practices/)** - _Daftar pedoman lengkap untuk mengamankan kontrak pintar Ethereum._ + +- **[Nascent: Set Alat Keamanan Sederhana](https://github.com/nascentxyz/simple-security-toolkit)** - _Kumpulan panduan dan daftar periksa berfokus keamanan yang praktis untuk pengembangan kontrak pintar._ + +- **[Pola Solidity](https://fravoll.github.io/solidity-patterns/)** - _Kompilasi pola aman dan praktik terbaik yang bermanfaat untuk bahasa pemrograman kontrak pintar Solidity._ + +- **[Dokumentasi Solidity: Pertimbangan Keamanan](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** - _Pedoman menulis kontrak pintar yang aman dengan Solidity._ + +- **[Standar Verifikasi Keamanan Kontrak Pintar](https://github.com/securing/SCSVS)** - _Daftar periksa yang terdiri dari empat belas bagian yang dibuat untuk menstandarkan keamanan kontrak pintar bagi pengembang, arsitek, pemeriksa keamanan, dan vendor._ + +### Tutorial tentang keamanan kontrak pintar {#tutorials-on-smart-contract-security} + +- [Cara menulis kontrak pintar yang aman](/developers/tutorials/secure-development-workflow/) -- [Alur kerja pengembangan yang aman](/developers/tutorials/secure-development-workflow/) - [Cara menggunakan Slither untuk menemukan bug kontrak pintar](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) + - [Cara menggunakan Manticore untuk menemukan bug kontrak pintar](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/) -- [Pedoman kemananan](/developers/tutorials/smart-contract-security-guidelines/) -- [Kemananan token](/developers/tutorials/token-integration-checklist/) + +- [Panduan keamanan kontrak pintar](/developers/tutorials/smart-contract-security-guidelines/) + +- [Cara aman mengintegrasikan kontrak token Anda dengan token arbitrer](/developers/tutorials/token-integration-checklist/) diff --git a/src/content/translations/id/developers/tutorials/nft-minter/index.md b/src/content/translations/id/developers/tutorials/nft-minter/index.md index bad2561c6b3..6bf125fd57f 100644 --- a/src/content/translations/id/developers/tutorials/nft-minter/index.md +++ b/src/content/translations/id/developers/tutorials/nft-minter/index.md @@ -196,7 +196,7 @@ If you go to the `App.js` file, which is the main component in React that acts a Now that we understand what we're working with, let's set up our Ethereum wallet! -## : Set up your Ethereum wallet {#set-up-your-ethereum-wallet} +## Set up your Ethereum wallet {#set-up-your-ethereum-wallet} For users to be able to interact with your smart contract they will need to connect their Ethereum wallet to your dApp. diff --git a/src/content/translations/id/eips/index.md b/src/content/translations/id/eips/index.md index ba82cbe5301..7cf8d3cd862 100644 --- a/src/content/translations/id/eips/index.md +++ b/src/content/translations/id/eips/index.md @@ -1,61 +1,66 @@ --- title: Proposal Peningkatan Ethereum (EIP) -description: Informasi dasar yang Anda perlukan untuk memahami Proposal Peningkatan Ethereum (EIP). +description: Informasi dasar yang Anda perlukan untuk memahami EIP lang: id --- -# Pengantar pada Proposal Peningkatan Ethereum (EIP) {#introduction-to-ethereum-improvement-proposals-eips} +# Pengantar pada Proposal Peningkatan Ethereum (EIP) {#introduction-to-ethereum-improvement-proposals} ## Apa itu EIP? {#what-are-eips} [Proposal Peningkatan Ethereum (EIP)](https://eips.ethereum.org/) adalah standar yang menentukan fitur atau proses baru yang potensial untuk Ethereum. EIP memuat spesifikasi teknis untuk usulan-usulan perubahan dan bertindak sebagai "sumber kebenaran" untuk komunitas. Peningkatan jaringan dan standar aplikasi untuk Ethereum didiskusikan dan dikembangkan melalui proses EIP. -Siapa pun yang ada dalam komunitas Ethereum memiliki kemampuan untuk membuat EIP. Pedoman untuk menulis EIP disertakan di [EIP 1](https://eips.ethereum.org/EIPS/eip-1). EIP harus memberikan spesifikasi teknis singkat tentang fitur-fitur yang tersedia dengan alasan logis dibaliknya. Penulis EIP bertanggung jawab untuk membangun konsensus di dalam komunitas dan mendokumentasikan perbedaan pendapat. Mengingat tingginya standar teknis untuk mengajukan EIP dengan kualitas yang baik, secara historis, sebagian besar penulis EIP memiliki pengalaman sebagai pengembang aplikasi atau protokol. +Siapa pun yang ada dalam komunitas Ethereum memiliki kemampuan untuk membuat EIP. Panduan untuk menulis EIP disertakan dalam [EIP-1](https://eips.ethereum.org/EIPS/eip-1). EIP sebaiknya memberikan spesifikasi teknis yang ringkas dengan sedikit motivasi. Penulis EIP bertanggung jawab untuk mencapai konsensus di dalam komunitas dan mendokumentasikan pendapat-pendapat alternatif. Mengingat tingginya hambatan teknis untuk mengirimkan EIP yang terbentuk dengan baik, secara historis, sebagian besar penulis EIP biasanya adalah pengembang aplikasi atau protokol. ## Mengapa EIP penting? {#why-do-eips-matter} -EIP memainkan peranan penting bagaimana perubahan terjadi dan terdokumentasi di Ethereum. EIP adalah cara bagi orang-orang untuk mengusulkan, mendebat, dan mengadopsi perubahan. Ada [berbagai jenis EIP](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md#eip-types) yang mencakup EIP inti untuk perubahan protokol tingkat rendah yang memengaruhi konsensus dan membutuhkan peningkatan jaringan serta ERC untuk standar aplikasi. Sebagai contoh, standar untuk membuat token, seperti [ERC20](https://eips.ethereum.org/EIPS/eip-20) atau [ERC721](https://eips.ethereum.org/EIPS/eip-721) memungkinkan aplikasi berinteraksi dengan token ini untuk memperlakukan semua token menggunakan aturan yang sama, yang memudahkan untuk membuat aplikasi yang dapat bertukar informasi. +EIP memainkan peranan penting bagaimana perubahan terjadi dan terdokumentasi di Ethereum. EIP adalah cara bagi orang-orang untuk mengusulkan, mendebat, dan mengadopsi perubahan. Ada [berbagai jenis EIP](https://eips.ethereum.org/EIPS/eip-1#eip-types), termasuk EIP inti untuk perubahan protokol tingkat rendah yang memengaruhi konsensus dan memerlukan peningkatan jaringan seperti [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), dan ERC untuk standar aplikasi seperti [EIP-20](https://eips.ethereum.org/EIPS/eip-20) dan [EIP-721](https://eips.ethereum.org/EIPS/eip-721). -Setiap peningkatan jaringan terdiri dari sekumpulan EIP yang harus diimplementasikan oleh masing-masing [klien Ethereum](/learn/#clients-and-nodes) di jaringan. Ini menyiratkan bahwa untuk tetap dalam konsensus dengan klien lainnya di Jaringan Utama Ethereum, pengembang klien perlu memastikan mereka semua telah menerapkan EIP yang dibutuhkan. +Setiap peningkatan jaringan terdiri dari sekumpulan EIP yang harus diimplementasikan oleh masing-masing [klien Ethereum](/learn/#clients-and-nodes) di jaringan. Ini berarti bahwa untuk tetap berada dalam konsensus dengan klien lain di Jaringan Utama Ethereum, pengembang klien harus memastikan bahwa mereka telah menerapkan semua EIP yang diperlukan. -Seiring dengan menyediakan spesifikasi teknis untuk perubahan, EIP adalah unit di mana tata kelola terjadi di Ethereum: siapa pun bebas untuk mengusulkan EIP, kemudian beragam pemangku kepentingan di dalam komunitas akan berdebat untuk menentukan apakah usulan itu harus diadopsi sebagai standar atau dimasukkan ke dalam peningkatan jaringan. Karena EIP non-inti tidak harus diadopsi oleh semua aplikasi (sebagai contoh, Anda bisa membuat satu token non-[ERC20](https://eips.ethereum.org/EIPS/eip-20)), tetapi EIP inti harus diadopsi secara luas (karena semua node harus melakukan peningkatan agar tetap menjadi bagian dari jaringan yang sama), EIP inti memerlukan konsensus yang lebih luas di dalam komunitas ketimbang EIP non-inti. +Seiring dengan menyediakan spesifikasi teknis untuk perubahan, EIP adalah unit di mana tata kelola terjadi di Ethereum: siapa pun bebas untuk mengusulkan EIP, kemudian beragam pemangku kepentingan di dalam komunitas akan berdebat untuk menentukan apakah usulan itu harus diadopsi sebagai standar atau dimasukkan ke dalam peningkatan jaringan. Karena EIP non-inti tidak harus diadopsi oleh semua aplikasi (misalnya, dimungkinkan untuk membuat token yang dapat dipertukarkan yang tidak mengimplementasikan EIP-20), tetapi EIP inti harus diadopsi secara luas (karena semua simpulhar us ditingkatkan untuk tetap menjadi bagian dari jaringan yang sama), EIP inti membutuhkan konsensus yang lebih luas di dalam komunitas dibandingkan dengan EIP non-inti. ## Riwayat EIP {#history-of-eips} [Repositori GitHub Ethereum Improvement Proposals (EIP)](https://github.com/ethereum/EIPs) dibuat pada Oktober 2015. Proses EIP didasarkan pada proses [Bitcoin Improvement Proposals (BIP)](https://github.com/bitcoin/bips), yang didasatkan pada proses [Python Enhancement Proposals (PEP)](https://www.python.org/dev/peps/). -Editor EIP ditugaskan mengulas EIP untuk melihat kesehatan teknisnya, kesesuaian ejaan/gramatikanya, dan gaya kodenya. Martin Becze, Vitalik Buterin, Gavin Wood, dan beberapa lainnya adalah editor asli EIP dari 2015 sampai akhir 2016. Editor EIP saat ini adalah: +Editor EIP bertugas dalam proses peninjauan EIP untuk kesehatan teknis, masalah format, dan mengoreksi ejaan, tata bahasa, dan gaya kode. Martin Becze, Vitalik Buterin, Gavin Wood, dan beberapa lainnya adalah editor asli EIP dari 2015 sampai akhir 2016. -- Alex Beregszaszi (EWASM/Yayasan Ethereum) -- Greg Colvin (Komunitas) -- Casey Detrio (EWASM/Yayasan Ethereum) -- Matt Garnett (Quilt) -- Hudson James (Yayasan Ethereum) -- Nick Johnson (ENS) -- Nick Savers (Komunitas) -- Micah Zoltu (Komunitas) +Editor EIP saat ini adalah -Editor EIP bersama dengan anggota komunitas dari [Ethereum Cat Herders](https://ethereumcatherders.com/) dan [Ethereum Magicians](https://ethereum-magicians.org/) memutuskan EIP mana yang akan di implementasikan, yang akan bertanggung jawab untuk memfasilitasi EIP juga memindakan EIP ke tahap "Final" atau "Penarikan". +- Alex Beregszaszi (@axic) +- Gavin John (@Pandapip1) +- Greg Colvin (@gcolvin) +- Matt Garnett (@lightclient) +- Sam Wilson (@SamWilsn) -Proses standardisasi lengkap yang disertai dengan bagan dideskripsikan dalam [EIP-1](https://eips.ethereum.org/EIPS/eip-1) +Editor Emeritus EIP adalah -## Pelajari lebih lanjut {#learn-more} +- Casey Detrio (@cdetrio) +- Hudson Jameson (@Souptacular) +- Martin Becze (@wanderer) +- Micah Zoltu (@MicahZoltu) +- Nick Johnson (@arachnid) +- Nick Savers (@nicksavers) +- Vitalik Buterin (@vbuterin) -Jika Anda tertarik untuk membaca lebih lanjut tentang EIP, kunjungi [situs web EIP](https://eips.ethereum.org/) di mana Anda dapat menemukan informasi tambahan, termasuk: +Jika Anda ingin menjadi editor EIP, silakan lihat [EIP-5069](https://eips.ethereum.org/EIPS/eip-5069). -- [Berbagai jenis EIP](https://eips.ethereum.org/) -- [Daftar dari setiap EIP yang telah dibuat](https://eips.ethereum.org/all) -- [Status EIP dan artinya](https://eips.ethereum.org/) +Editor EIP memutuskan kapan sebuah proposal siap menjadi EIP, dan membantu penulis EIP untuk memajukan proposal mereka. [Ethereum Cat Herders](https://www.ethereumcatherders.com/) membantu mengorganisir pertemuan antara para editor EIP dan komunitas (lihat [EIPIP](https://github.com/ethereum-cat-herders/EIPIP)). -## Partisipasi {#participate} +Proses standardisasi lengkap yang disertai dengan bagan dideskripsikan dalam [EIP-1](https://eips.ethereum.org/EIPS/eip-1) -Siapa pun dapat membuat EIP atau ERC, meskipun sebelumnya Anda harus membaca [EIP-1](https://eips.ethereum.org/EIPS/eip-1) yang menguraikan proses EIP, apa itu EIP, jenis EIP, dokumen EIP apa yang harus dimiliki, format dan templat EIP, daftar Editor EIP, dan semua hal yang perlu Anda ketahui tentang EIP sebelum membuatnya. EIP baru Anda harus menentukan fitur baru yang tidak terlalu kompleks, namun tidak hanya untuk kalangan tertentu dan dapat digunakan dalam proyek-proyek di ekosistem Ethereum. Bagian tersulitnya adalah fasilitasi, Anda sebagai penulis harus memfasilitasi orang-orang di sekitar EIP, mengumpulkan umpan balik, menulis artikel yang menggambarkan masalah yang diselesaikan oleh EIP, dan berkolaborasi dengan proyek untuk mengimplementasikan EIP Anda. +## Pelajari lebih lanjut {#learn-more} + +Jika Anda tertarik untuk membaca lebih lanjut tentang EIP, lihat [situs web EIP](https://eips.ethereum.org/) dan [EIP-1](https://eips.ethereum.org/EIPS/eip-1). Berikut adalah beberapa tautan yang berguna: -Jika Anda tertarik untuk mengikuti proses diskusinya atau membagikan masukan Anda tentang EIP, kunjungi [forum Ethereum Magicians](https://ethereum-magicians.org/), di mana EIP dibahas bersama dengan komunitas. +- [Daftar setiap EIP](https://eips.ethereum.org/all) +- [Penjelasan tentang semua jenis EIP](https://eips.ethereum.org/EIPS/eip-1#eip-types) +- [Penjelasan tentang semua status EIP](https://eips.ethereum.org/EIPS/eip-1#eip-process) -Lihat juga: +## Partisipasi {#participate} -- [Cara membuat EIP](https://eips.ethereum.org/EIPS/eip-1) +Siapa pun dapat membuat EIP. Sebelum mengirimkan proposal, seseorang harus membaca [EIP-1](https://eips.ethereum.org/EIPS/eip-1) yang menguraikan proses EIP dan cara menulis EIP, dan meminta umpan balik di [Ethereum Magicians](https://ethereum-magicians.org/), di mana proposal pertama kali didiskusikan dengan komunitas sebelum drafnya dikirimkan. ## Referensi {#references} diff --git a/src/content/translations/id/energy-consumption/index.md b/src/content/translations/id/energy-consumption/index.md index 3cedbc816d6..7e180e77650 100644 --- a/src/content/translations/id/energy-consumption/index.md +++ b/src/content/translations/id/energy-consumption/index.md @@ -36,7 +36,7 @@ Selain membangun kepercayaan diri dalam mekanisme bukti taruhan, Rantai Suar jug ![gambar](energy_use_per_transaction.png) -

    Perkiraan konsumsi energi PoW per tx yang digunakan dalam gambar berdasarkan data Mei 2021, pada waktu penulisan sumber yang sama menunjukkan hingga 175,56 Kwh

    +

    Perkiraan konsumsi energi PoW per tx yang digunakan dalam gambar berdasarkan data Mei 2021, pada waktu penulisan sumber yang sama menunjukkan hingga 175,56 Kwh

    Mari kita bandingkan angka-angka ini dengan layanan seperti Visa. 100.000 transaksi Visa menggunakan 149kWh energi[^2]. Dengan mengasumsikan sharding telah diimplementasikan, kecepatan transaksi Ethereum saat ini (15 transaksi per detik) akan bertambah paling tidak 64x (jumlah shard), tidak termasuk optimisasi tambahan dari rollup. Perkiraan realistis untuk Ethereum bershard setelah penggabungan dengan rollup adalah [25.000 - 100.000](https://twitter.com/VitalikButerin/status/1312905884549300224?s=20) transaksi per detik. Kita dapat menggunakan informasi ini untuk memperkirakan pemakaian energi maksimum dan minimum per 100.000 transaksi. @@ -62,7 +62,7 @@ _Kita juga harus mempertimbangkan bahwa Ethereum tidaklah terbatas pada transaks Sekalipun pemakaian energi Ethereum secara historis telah menjadi penting, telah ada investasi waktu dan kepintaran yang besar dari pengembang untuk perpindahan dari validasi blok yang boros energi ke yang efisien secara energi. Mengambil kutipan [Bankless](http://podcast.banklesshq.com/), cara terbaik untuk mengurangi energi yang dipakai oleh bukti kerja adalah cukup dengan "mematikannya", yang merupakan pendekatan yang telah diambil Ethereum dengan komitmen. - Jika Anda menganggap status ini tidak benar atau dapat dibuat lebih akurat lagi, silhkan mengajukan masalah atau PR. Ini merupakan perkiraan oleh tim ethereum.org yang dibuat dengan menggunakan informasi yang dapat diakses secara publik dan roadmap Ethereum saat ini. Pernyataan ini tidak mewakili suatu janji resmi dari Yayasan Ethereum. + Jika Anda menganggap status ini tidak benar atau dapat dibuat lebih akurat lagi, silhkan mengajukan masalah atau PR. Ini merupakan perkiraan oleh tim ethereum.org yang dibuat dengan menggunakan informasi yang dapat diakses secara publik dan roadmap Ethereum saat ini. Pernyataan ini tidak mewakili suatu janji resmi dari Yayasan Ethereum. ## Bacaan lebih lanjut {#further-reading} diff --git a/src/content/translations/id/glossary/index.md b/src/content/translations/id/glossary/index.md index 7d6152aac8e..2af4f24e5e1 100644 --- a/src/content/translations/id/glossary/index.md +++ b/src/content/translations/id/glossary/index.md @@ -27,7 +27,7 @@ Objek yang berisi [alamat](#address), saldo, [nonce](#nonce), serta penyimpanan ### alamat {#address} -Pada umumnya, akun ini mewakili [EOA](#eoa) atau [kontrak](#contract-account) yang dapat menerima (alamat tujuan) atau mengirim (alamat sumber) [transaksi](#transaction) di blockchain. Lebih khusus lagi, ini adalah 160 bit paling kanan dari [hash Keccak](#keccak-256) dari [kunci publik](#public-key) [ECDSA](#ecdsa). +Pada umumnya, akun ini mewakili [EOA](#eoa) atau [kontrak](#contract-account) yang dapat menerima (alamat tujuan) atau mengirim (alamat sumber) [transaksi](#transaction) di Rantai Blok. Lebih khusus lagi, ini adalah 160 bit paling kanan dari [hash Keccak](#keccak-256) dari [kunci publik](#public-key) [ECDSA](#ecdsa). ### application binary interface (ABI) {#abi} @@ -41,9 +41,13 @@ Cara standar untuk berinteraksi dengan [kontrak](#contract-account) di ekosistem Application Programming Interface (API) adalah serangkaian definisi tentang cara menggunakan suatu perangkat lunak. API ada di antara aplikasi dan server web, dan memfasilitasi transfer data di antaranya. -### assert {#assert} +### ASIC {#asic} -Dalam [Solidity](#solidity), `assert(false)` dikompilasi ke `0xfe`, opcode yang tidak valid, yang menggunakan semua [gas](#gas) dan mengembalikan semua perubahan. Ketika pernyataan `assert()` gagal, sesuatu yang sangat salah dan tidak terduga terjadi, dan anda harus memperbaiki kode Anda. Anda harus menggunakan `assert()` untuk menghindari kondisi yang seharusnya tidak pernah terjadi. +Sirkuit terpadu khusus aplikasi. Ini biasanya mengacu pada sirkuit terintegrasi, yang dibuat khusus untuk penambangan mata uang kripto. + +### menyatakan {#assert} + +Dalam [Solidity](#solidity), `assert(false)` dikompilasi menjadi `0xfe`, sebuah opcode tidak valid, yang menggunakan semua [gas](#gas) yang tersisa dan membatalkan semua perubahan. Ketika pernyataan `assert()` gagal, sesuatu yang sangat salah dan tidak terduga terjadi, dan Anda harus memperbaiki kode Anda. Anda harus menggunakan `assert()` untuk menghindari kondisi yang seharusnya tidak pernah terjadi. Keamanan kontrak pintar @@ -51,7 +55,11 @@ Dalam [Solidity](#solidity), `assert(false)` dikompilasi ke `0xfe`, opcode yang ### pengesahan {#attestation} -Suara validator untuk [Ranta Suar](#beacon-chain) atau [shard](#shard) [blok](#block). Validator harus membuktikan blok, menandakan bahwa mereka setuju dengan status yang diusulkan oleh blok. +Klaim yang dibuat oleh suatu entitas bahwa sesuatu adalah benar. Dalam konteks Ethereum, validator konsensus harus membuat klaim mengenai apa yang mereka percayai sebagai keadaan dari rantai. Pada waktu yang telah ditentukan, setiap validator memiliki tanggung jawab untuk menerbitkan atestasi yang berbeda, yang secara resmi menyatakan pandangan validator tentang keadaan rantai, termasuk pos pemeriksaan terakhir yang telah difinalisasi dan kepala rantai saat ini. + + + Atestasi + @@ -59,7 +67,7 @@ Suara validator untuk [Ranta Suar](#beacon-chain) atau [shard](#shard) [blok](#b ### Biaya dasar {#base-fee} -Setiap [blok](#block) memiliki harga minimum yang dikenal sebagai 'harga dasar'. Itu adalah harga [gas](#gas) minimum yang harus dibayar seorang pengguna untuk memasukkan transaksi dalam blok berikutnya. +Setiap [blok](#block) memiliki harga minimum yang dikenal sebagai 'biaya dasar'. Itu adalah harga [gas](#gas) minimum yang harus dibayar seorang pengguna untuk memasukkan transaksi dalam blok berikutnya. Gas dan biaya @@ -67,7 +75,7 @@ Setiap [blok](#block) memiliki harga minimum yang dikenal sebagai 'harga dasar'. ### Rantai Suar {#beacon-chain} -Peningkatan jaringan yang memperkenalkan lapisan konsensus baru, yang akan menjadi koordinator untuk seluruh jaringan Ethereum. Ini memperkenalkan [bukti taruhan](#pos) dan [validator](#validator) ke Ethereum. Pada akhirnya ini akan tergabung dengan [Jaringan Utama](#mainnet). +Rantai Suar adalah rantai blok yang memperkenalkan [bukti taruhan](#pos) dan [validator](#validator) ke Ethereum. Rantai Suar berjalan berdampingan dengan Jaringan Utama Ethereum bukti kerja mulai dari Desember 2020 hingga kedua rantai tersebut digabungkan pada September 2022 untuk membentuk Ethereum saat ini. Rantai Suar @@ -75,41 +83,86 @@ Peningkatan jaringan yang memperkenalkan lapisan konsensus baru, yang akan menja ### big-endian {#big-endian} -Representasi nomor posisi dengan digit paling signifikan berada di urutan pertama dalam memori. Kebalikan dari little-endian, dengan angka penting terkecil berada di urutan pertama. +Representasi angka posisional di mana digit paling signifikan ditempatkan pertama dalam memori. Kebalikan dari little-endian, di mana digit paling tidak signifikan ditempatkan pertama. ### blok {#block} -Kumpulan informasi yang diperlukan (header blok) tentang [transaksi](#transaction) yang terdiri dari, dan satu set header blok lainnya yang dikenal sebagai [ommers](#ommer). Blok ditambahkan ke jaringan Ethereum oleh [penambang](#miner). +Sebuah blok adalah unit informasi yang terikat yang mencakup daftar transaksi yang diurutkan dan informasi terkait konsensus. Blok diusulkan oleh validator bukti taruhan, pada saat itu blok tersebut dibagikan ke seluruh jaringan rekan-ke-rekan, di mana mereka dapat dengan mudah diverifikasi secara independen oleh semua simpul lainnya. Aturan konsensus mengatur konten blok yang dianggap valid, dan semua blok yang tidak valid diabaikan oleh jaringan. Urutan blok-blok ini dan transaksi di dalamnya menciptakan rangkaian peristiwa yang deterministik dengan akhirnya mewakili keadaan terkini dari jaringan. Block -### blockchain {#blockchain} +### penjelajah-blok {#block-explorer} + +Antarmuka yang memungkinkan pengguna untuk mencari informasi dari, dan tentang, sebuah rantai blok. Ini termasuk mengambil transaksi individual, aktivitas yang terkait dengan alamat spesifik, dan informasi tentang jaringan. + +### header blok {#block-header} + +Header blok adalah kumpulan metadata tentang sebuah blok dan ringkasan transaksi yang termasuk dalam muatan eksekusi. + +### penyebaran blok {#block-propagation} + +Proses mentransmisikan blok yang telah dikonfirmasi kepada semua node lain dalam jaringan. + +### pengusul blok {#block-proposer} + +Validator tertentu yang dipilih untuk membuat blok dalam [ruang](#slot) tertentu. + +### imbalan blok {#block-reward} + +Jumlah ether yang diberikan kepada pengusul blok baru yang valid. + +### status blok {#block-status} + +Berbagai kondisi di mana sebuah blok dapat berada. Beberapa kondisi yang mungkin terjadi adalah: -Di Ethereum, urutan [blok](#block) divalidasi oleh sistem [bukti kerja](#pow), masing-masing menautkan ke pendahulunya semua cara ke [blok genesis](#genesis-block). Tidak ada batasan ukuran blok; melainkan menggunakan [batas gas](#gas-limit) yang bervariasi. +- diusulkan: blok diusulkan oleh seorang validator +- dijadwalkan: para validator saat ini sedang mengirimkan data +- terlewat/terlewatkan: pemberi usul tidak mengusulkan blok dalam jangka waktu yang memenuhi syarat. +- terlantar: blok tersebut telah di-reorganisasi keluar oleh [algoritma pemilihan garpu](#fork-choice-algorithm) + +### waktu blok {#block-time} + +Interval waktu antara blok ditambahkan ke dalam rantai blok. + +### validasi blok {#block-validation} + +Proses memeriksa bahwa blok baru mengandung transaksi dan tanda tangan yang sah, membangun pada rantai sejarah terberat, dan mengikuti semua aturan konsensus lainnya. Blok-blok yang sah ditambahkan ke akhir rantai dan disebarluaskan kepada yang lain dalam jaringan. Blok yang tidak sah diabaikan. + +### rantai blok {#blockchain} + +Sekumpulan [blok](#block), masing-masing menghubungkan ke pendahulunya hingga mencapai [blok genesis](#genesis-block) dengan merujuk pada hash blok sebelumnya. Keutuhan rantai blok dijamin secara kripto-ekonomi menggunakan mekanisme konsensus berbasisbukti taruhan. - Apa itu Blockchain? + Apa itu blockchain? +### simpul boot {#bootnode} + +Simpul yang dapat digunakan untuk memulai proses penemuan saat menjalankan sebuah simpul. Titik akhir dari simpul ini dicatat dalam kode sumber Ethereum. + ### kode bita {#bytecode} Kumpulan instruksi abstrak yang dirancang untuk eksekusi yang efisien oleh penerjemah perangkat lunak atau mesin virtual. Tidak seperti kode sumber yang dapat dibaca manusia, kode bita diekspresikan dalam format numerik. ### Fork Byzantium {#byzantium-fork} -Tipe fork pertama dari dua [fork keras](#hard-fork) untuk fase pengembangan [Metropolis](#metropolis). Fork ini mencakup Penundaan [Bom Kesulitan](#difficulty-bomb) Metropolis EIP-649 dan Pengurangan Imbalan Blok, yaitu dengan cara [Zaman Es](#ice-age) ditunda selama 1 tahun dan imbalan blok dikurangi dari 5 ke 3 ether. +Tipe garpu pertama dari dua [garpu keras](#hard-fork) untuk fase pengembangan [Metropolis](#metropolis). Garpu ini mencakup Penundaan [Bom Kesulitan](#difficulty-bomb) Metropolis EIP-649 dan Pengurangan Imbalan Blok, yaitu dengan cara [Zaman Es](#ice-age) ditunda selama 1 tahun dan imbalan blok dikurangi dari 5 ke 3 ether. ## C {#section-c} +### Casper-FFG {#casper-ffg} + +Casper-FFG adalah protokol konsensus bukti taruhan yang digunakan bersamaan dengan algoritma pemilihan garpu [LMD-GHOST](#lmd-ghost) untuk memungkinkan [klien konsensus](#consensus-client) setuju dengan kepala Rantai Suar. + ### pos pemeriksaan {#checkpoint} -[Rantai Suar](#beacon-chain) memiliki tempo yang dibagi menjadi beberapa slot (12 detik) dan epoch (32 slot). Slot pertama dalam setiap epoch merupakan pos pemeriksaan. Ketika [supermayoritas](#supermajority) validator membuktikan tautan antara dua pos pemeriksaan, mereka dapat [dibenarkan](#justification) dan ketika pos pemeriksaan lainnya dibenarkan pada tingkat atas, mereka dapat [difinalisasi](#finality). +[Rantai Suar](#beacon-chain) memiliki tempo yang terbagi menjadi slot (12 detik) dan jangka waktu (32 slot). Ruang pertama dalam setiap jangka waktu merupakan pos pemeriksaan. Ketika [supermayoritas](#supermajority) validator membuktikan tautan antara dua pos pemeriksaan, mereka dapat [dibenarkan](#justification) dan ketika pos pemeriksaan lainnya dibenarkan pada tingkat atas, mereka dapat [difinalisasi](#finality). -### mengkompilasi {#compiling} +### mengompilasi {#compiling} Mengubah kode yang ditulis dalam bahasa pemrograman tingkat tinggi (seperti [Solidity](#solidity)) menjadi bahasa dengan tingkat yang lebih rendah (seperti [kode bita](#bytecode) EVM). @@ -119,15 +172,19 @@ Mengubah kode yang ditulis dalam bahasa pemrograman tingkat tinggi (seperti [Sol ### panitia {#committee} -Sebuah grup yang terdiri dari minimal 128 [validator](#validator) yang ditetapkan ke suar dan blok shard secara acak oleh [Rantai Suar](#beacon-chain). +Sebuah kelompok yang terdiri dari setidaknya 128 [validator](#validator) yang ditugaskan untuk memvalidasi blok dalam setiap ruang. Salah satu validator dalam panitia adalah pengumpul, yang bertanggung jawab untuk menggabungkan tanda tangan dari semua validator lain dalam komite yang setuju pada sebuah pengesahan. Jangan dirancukan dengan [panitia sinkronisasi](#sync-committee). + +### ketidakmungkinan komputasi {#computational-infeasibility} + +Sebuah proses dianggap tidak mungkin secara komputasi jika memerlukan waktu yang sangat lama (misalnya miliaran tahun) untuk dilakukan oleh siapa pun yang mungkin memiliki minat untuk melakukannya. ### konsensus {#consensus} -Saat semua node yang berjumlah besar (biasanya sebagian besar node di jaringan) memiliki blok yang sama dalam blockchain terbaik yang divalidasi secara lokal. Jangan dirancukan dengan [aturan konsensus](#consensus-rules). +Ketika sebagian besar mayoritas simpul dalam jaringan memiliki blok yang sama dalam rantai blok terbaik yang telah divalidasi secara lokal. Jangan disamakan dengan [aturan konsensus](#consensus-rules). ### klien konsensus {#consensus-client} -Klien konsensus (seperti Prysm, Teku, Nimbus, Lightouse, Lodestar) menjalankan algoritma konsensus [bukti taruhan](#pos) Ethereum, yang memungkinkan jaringan mencapai kesepakatan mengenai kepala Rantai Suar. Klien konsensus tidak berpartisipasi dalam memvalidasi/menyiarkan transaksi atau mengeksekusi transisi state. Tindakan ini dilakukan oleh [klien eksekusi](#execution-client). +Klien konsensus (seperti Prysm, Teku, Nimbus, Lighthouse, Lodestar) menjalankan algoritma konsensus [bukti taruhan](#pos) Ethereum, yang memungkinkan jaringan mencapai kesepakatan mengenai kepala Rantai Suar. Klien konsensus tidak berpartisipasi dalam memvalidasi/menyiarkan transaksi atau mengeksekusi transisi status. Tindakan ini dilakukan oleh [klien eksekusi](#execution-client). ### lapisan konsensus {#consensus-layer} @@ -137,6 +194,10 @@ Lapisan konsensus Ethereum merupakan jaringan [klien konsensus](#consensus-clien Aturan validasi blok yang diikuti node penuh untuk tetap dalam konsensus dengan node lainnya. Jangan dirancukan dengan [konsensus](#consensus). +### Dipertimbangkan untuk Inklusi (CFI) {#cfi} + +Sebuah [EIP](#eip) inti yang belum aktif di Jaringan Utama, dan pengembang klien umumnya memberikan tanggapan positif terhadap ide tersebut. Dengan asumsi memenuhi semua persyaratan untuk penyertaan jaringan utama, ini berpotensi untuk disertakan dalam peningkatan jaringan (tidak harus yang berikutnya). + ### Fork Konstantinopel {#constantinople-fork} Bagian kedua dari tahapan [Metropolis](#metropolis), awalnya direncanakan untuk diluncurkan pada pertengahan 2018. Diharapkan untuk mencakup pergeseran ke algoritma konsensus [bukti kerja](#pow)/[bukti taruhan](#pos) hibrida, yang ada di antara perubahan lainnya. @@ -147,37 +208,47 @@ Akun yang berisi kode yang dieksekusi setiap kali menerima satu [transaksi](#tra ### transaksi pembuatan kontrak {#contract-creation-transaction} -[Transaksi](#transaction) spesial, dengan [alamat kosong](#zero-address) sebagai penerimanya, yang digunakan untuk mendaftarkan sebuah [kontrak](#contract-account) dan mencatatnya di blockchain Ethereum. +Sebuah [transaksi](#transaction) khusus yang mencakup kode inisiasi kontrak. Penerima diatur menjadi `null` dan kontrak dideploy ke alamat yang dihasilkan dari alamat pengguna dan `nonce`. yang digunakan untuk mendaftarkan sebuah [kontrak](#contract-account) dan mencatatnya pada rantai blok Ethereum. -### tautan silang {#crosslink} +### ekonomi Kripto {#cryptoeconomics} -Sebuah tautan silang menyediakan ringkasan tentang state shard. Tautan silang berisi cara rantai [shard](#shard) akan berkomunikasi satu sama lain melalui [Rantai Suar](#beacon-chain) dalam [sistem bukti taruhan](#proof-of-stake) yang berbentuk shard. - - - Bukti taruhan - - - +Ekonomi mata uang kripto. ## D {#section-d} -### Organisasi Otonom Terdesentralisasi (DAO) {#dao} +### Đ {#d-with-stroke} -Perusahaan atau organisasi lain yang beroperasi tanpa pengelolaan hierarkis. DAO bisa juga mengacu pada sebuah kontrak bernama "The DAO" yang diluncurkan pada 30 April 2016, yang kemudian diretas pada Juni 2016; ini pada akhirnya memotivasi pembuatan [fork keras](#hard-fork) (dengan nama kode DAO) di blok 1.192.000, yang membalikkan kontrak DAO yang diretas dan menyebabkan Ethereum dan Ethereum Classic terpisah menjadi dua sistem yang saling berkompetisi. +Đ (D dengan stroke) digunakan dalam bahasa Inggris Kuno, Inggris Pertengahan, Islandia, dan Faroe untuk mewakili huruf besar "Eth". Ini digunakan dalam kata-kata seperti ĐEV atau Đapp (aplikasi terdesentralisasi), di mana Đ adalah huruf Norse "eth". Huruf besar eth (Ð) juga digunakan untuk melambangkan mata uang kripto Dogecoin. Hal ini biasanya terlihat pada literatur Ethereum yang lebih lama, tetapi lebih jarang digunakan saat ini. - - Organisasi Otonom Terdesentralisasi (DAO) - +### DAG {#dag} + +DAG adalah singkatan dari Directed Acyclic Graph. Ini adalah struktur data yang terdiri dari simpul dan tautan di antara mereka. Sebelum Penggabungan, Ethereum menggunakan DAG dalam algoritma [bukti kerja](#pow)-nya, yaitu [Ethash](#ethash), tetapi tidak lagi digunakan dalam algoritma [bukti taruhan](#pos). ### Dapp {#dapp} -Aplikasi terdesentralisasi. Singkatnya, Dapp adalah sebuah [kontrak pintar](#smart-contract) dan antarmuka pengguna web. Lebih luasnya, Dapp adalah aplikasi web yang dibangun di atas layanan infrastruktur peer-to-peer terbuka dan terdesentralisasi. Selain itu, banyak Dapp mencakup penyimpanan terdesentralisasi dan/atau protokol dan platform message. +Aplikasi terdesentralisasi. Singkatnya, Dapp adalah sebuah [kontrak pintar](#smart-contract) dan antarmuka pengguna web. Secara lebih luas, dapp adalah aplikasi web yang dibangun di atas layanan infrastruktur rekan-ke-rekan yang terbuka dan terdesentralisasi. Selain itu, banyak dapps menyertakan penyimpanan dan/atau protokol dan platform pesan. - Pengantar Dapps + Pengantar dapps -### pertukaran terdesentralisasi (DEX) {#dex} +### ketersediaan data {#data-availability} + +Sifat dari sebuah status bahwa setiap simpul yang terhubung ke jaringan dapat mengunduh bagian tertentu dari status yang mereka inginkan. + +### desentralisasi {#decentralization} + +Konsep memindahkan kontrol dan pelaksanaan proses dari entitas pusat. + +### organisasi otonom terdesentralisasi (DAO) {#dao} + +Perusahaan atau organisasi lain yang beroperasi tanpa pengelolaan hierarkis. DAO bisa juga mengacu pada sebuah kontrak bernama "DAO" yang diluncurkan pada 30 April 2016, yang kemudian diretas pada Juni 2016; ini pada akhirnya memotivasi pembuatan [garpu keras](#hard-fork) (dengan nama kode DAO) di blok 1.192.000, yang membalikkan kontrak DAO yang diretas dan menyebabkan Ethereum dan Ethereum Classic terpisah menjadi dua sistem yang saling berkompetisi. + + + Organisasi otonom terdesentralisasi (DAO) + + +### bursa terdesentralisasi (DEX) {#dex} Jenis [dapp](#dapp) yang memungkinkan Anda menukar token dengan rekan sejawat di jaringan. Anda memerlukan [ether](#ether) untuk menggunakannya (untuk membayar [biaya transaksi](#transaction-fee)) tapi ini bukan subjek yang tunduk pada pembatasan geografis seperti bursa terpusat – siapa pun bisa berpartisipasi. @@ -185,13 +256,17 @@ Jenis [dapp](#dapp) yang memungkinkan Anda menukar token dengan rekan sejawat di Bursa terdesentralisasi -### deed {#deed} +### akta {#deed} + +Lihat [token yang tidak dapat dipertukarkan (NFT)](#nft). + +### kontrak deposit {#deposit-contract} -Lihat [token yang tidak dapat dipertukarkan (NFT)](#nft) +Pintu gerbang untuk melakukan penaruhan di Ethereum. Kontrak setoran adalah kontrak pintar di Ethereum yang menerima setoran ETH dan mengelola saldo validator. Validator tidak dapat diaktifkan tanpa menyetor ETH ke dalam kontrak ini. Kontrak membutuhkan ETH dan data input. Data input ini termasuk kunci publik validator dan kunci publik penarikan, yang ditandatangani oleh kunci pribadi validator. Data ini diperlukan agar seorang validator dapat diidentifikasi dan disetujui oleh jaringan [bukti taruhan](#pos). ### DeFi {#defi} -Singkatan dari "decentralized finance", sebuah kategori luas dari [dapp](#dapp) yang bertujuan menyediakan layanan keuangan yang didukung blockchain, tanpa perantara mana pun, sehingga siapa pun yang memiliki koneksi internet dapat berpartisipasi. +Singkatan dari "keuangan terdesentralisasi", sebuah kategori luas dari [dapps](#dapp) yang bertujuan untuk menyediakan layanan keuangan yang didukung rantai blok, tanpa perantara mana pun, sehingga siapa pun yang memiliki koneksi internet dapat berpartisipasi. Keuangan Terdesentralisasi (DeFi) @@ -199,35 +274,59 @@ Singkatan dari "decentralized finance", sebuah kategori luas dari [dapp](#dapp) ### tingkat kesulitan {#difficulty} -Pengaturan di seluruh jaringan yang mengontrol berapa banyak komputasi yang dibutuhkan untuk menghasilkan sebuah [bukti kerja](#pow). +Pengaturan jaringan secara keseluruhan dalam jaringan [bukti kerja](#pow) yang mengontrol berapa banyak komputasi rata-rata yang diperlukan untuk menemukan nonce yang valid. Kesulitan diwakili oleh jumlah nol di depan yang diperlukan dalam hash blok yang dihasilkan agar dapat dianggap valid. Konsep ini sudah tidak digunakan lagi di Ethereum sejak transisi ke bukti taruhan. ### bom kesulitan {#difficulty-bomb} -Peningkatan eksponensial terencana dalam pengaturan [tingkat kesulitan](#difficulty) [bukti kerja](#pow) yang dirancang untuk memotivasi transisi ke [bukti taruhan](#pos), yang mengurangi peluang [fork](#hard-fork) +Kenaikan eksponensial yang direncanakan dalam pengaturan [tingkat kesulitan](#difficulty) [bukti kerja](#pow) yang dirancang untuk memotivasi transisi ke [bukti taruhan](#pos), mengurangi kemungkinan terjadinya [garpu](#hard-fork). Bom kesulitan ditinggalkan dengan [transisi ke bukti taruhan](/roadmap/merge). ### tanda tangan digital {#digital-signatures} -Data string pendek yang dibuat pengguna untuk dokumen yang menggunakan [kunci privat](#private-key) sehingga siapa pun dengan [kunci publik](#public-key), tanda tangan, dan dokumen yang sesuai dapat memverifikasi bahwa (1) dokumennya "ditandatangani" oleh pemilik dari kunci privat tersebut, dan (2) dokumen tidak diubah setelah ditandatangani. +Data string pendek yang dibuat pengguna untuk dokumen yang menggunakan [kunci pribadi](#private-key) sehingga siapa pun dengan [kunci publik](#public-key), tanda tangan, dan dokumen yang sesuai dapat memverifikasi bahwa (1) dokumennya "ditandatangani" oleh pemilik dari kunci privat tersebut, dan (2) dokumen tidak diubah setelah ditandatangani. +### penemuan {#discovery} + +Proses di mana sebuah node Ethereum menemukan simpul lain untuk terhubung. + +### tabel hash terdistribusi (DHT) {#distributed-hash-table} + +Struktur data yang berisi pasangan `(key, value)` yang digunakan oleh simpul Ethereum untuk mengidentifikasi rekan-rekan yang akan dihubungkan dan menentukan protokol mana yang akan digunakan untuk berkomunikasi. + +### pengeluaran ganda {#double-spend} + +Sebuah garpu rantai blok yang disengaja, di mana seorang pengguna dengan kekuatan penambangan/taruhan yang cukup besar mengirimkan sebuah transaksi yang memindahkan sejumlah mata uang di luar rantai (contoh: keluar ke dalam uang fiat atau melakukan pembelian di luar rantai) dan kemudian mengorganisasi ulang rantai blok untuk menghapus transaksi tersebut. Pembelanjaan ganda yang berhasil membuat penyerang memiliki aset di dalam dan di luar rantai. + ## E {#section-e} ### algoritma tanda tangan digital kurva eliptik (ECDSA) {#ecdsa} -Algoritma kriptografik yang digunakan oleh Ethereum untuk memastikan bahwa dana yang tersedia hanya dapat dipakai oleh pemiliknya. Ini adalah metode yang lebih disukai untuk membuat kunci publik dan privat. Cocok untuk pembuatan [alamat](#address) akun dan verifikasi [transaksi](#transaction). +Algoritma kriptografi yang digunakan oleh Ethereum untuk memastikan bahwa dana yang tersedia hanya dapat dipakai oleh pemiliknya. Ini adalah metode yang lebih disukai untuk membuat kunci publik dan pribadi. Cocok untuk pembuatan [alamat](#address) akun dan verifikasi [transaksi](#transaction). + +### enkripsi {#encryption} + +Enkripsi adalah konversi data elektronik ke dalam bentuk yang tidak dapat dibaca oleh siapa pun kecuali pemilik kunci dekripsi yang benar. + +### entropi {#entropy} + +Dalam konteks kriptografi, entropi berarti kurangnya prediktabilitas atau tingkat keserampangan. Saat membuat informasi rahasia, seperti [kunci pribadi](#private-key), algoritma biasanya bergantung pada sumber entropi tinggi untuk memastikan output menjadi tidak dapat diprediksi. -### epoch {#epoch} +### jangka waktu {#epoch} -Periode waktu 32 [slot](#slot) (6,4 menit) dalam sistem terkoordinasi [Rantai Suar](#beacon-chain). [Komite](#committee) [validator](#validator) diacak pada tiap epoch untuk alasan keamanan. Ada peluang bagi rantai di tiap epoch untuk di [finalisasi](#finality). +Sebuah periode dari 32 [ruang](#slot), setiap slotnya berdurasi 12 detik, dengan total 6,4 menit. [Komite](#committee) validator diacak setiap jangka waktu untuk alasan keamanan. Setiap jangka waktu memiliki kesempatan untuk rantai menjadi [terfinalisasi](#finality). Setiap validator diberi tanggung jawab baru pada awal setiap jangka waktu. Bukti taruhan +### penghindaran {#equivocation} + +Seorang validator mengirimkan dua pesan yang saling bertentangan. Salah satu contoh sederhana adalah pengirim transaksi yang mengirimkan dua transaksi dengan nonce yang sama. Yang lainnya adalah pengusul blok yang mengajukan dua blok pada ketinggian blok yang sama (atau untuk ruang yang sama). + ### Eth1 {#eth1} -'Eth1' adalah istilah yang merujuk pada Jaringan Utama Ethereum, blockchain bukti kerja yang telah ada. Istilah ini sudah tidak dipakai dan digantikan dengan 'lapisan eksekusi'. [Pelajari selengkapnya mengenai perubahan nama tersebut](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/). +'Eth1' adalah istilah yang merujuk pada Jaringan Utama Ethereum, rantai blok bukti kerja yang telah ada. Istilah ini sudah tidak dipakai dan digantikan dengan 'lapisan eksekusi'. [Pelajari selengkapnya mengenai perubahan nama tersebut](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/). Selengkapnya tentang peningkatan Ethereum @@ -241,7 +340,7 @@ Periode waktu 32 [slot](#slot) (6,4 menit) dalam sistem terkoordinasi [Rantai Su Selengkapnya tentang peningkatan Ethereum -### Proposal Peningkatan Ethereum (EIP) {#eip} +### Proposal peningkatan Ethereum (EIP) {#eip} Dokumen desain yang menyediakan informasi bagi komunitas Ethereum, yang menjelaskan fitur baru yang diusulkan atau proses atau lingkungannya (lihat [ERC](#erc)). @@ -255,13 +354,9 @@ Pendaftaran ENS adalah [kontrak](#smart-contract) sentral tunggal yang menyediak [Baca lebih lanjut di ens.domains](https://ens.domains) -### entropi {#entropy} - -Dalam konteks kriptografi, entropi berarti kurangnya prediktabilitas atau tingkat keserampangan. Saat membuat informasi rahasia, seperti [kunci privat](#private-key), algoritme biasanya bergantung pada sumber entropi tinggi untuk memastikan output menjadi tidak dapat diprediksi. - ### klien eksekusi {#execution-client} -Klien eksekusi (dulu disebut "klien Eth1"), seperti Besu, Erigon, go-ethereum, Nethermind, ditugaskan untuk memroses dan menyiarkan transaksi, serta mengelola status Ethereum. Mereka menjalankan komputasi untuk setiap transaksi di [Mesin Virtual Ethereum](#evm) untuk memastikan bahwa aturan protokol dipatuhi. Sekarang, mereka juga menangani konsensus [bukti kerja](#pow). Setelah transisi ke [bukti taruhan](#pos), mereka akan mendelegasikan tugas tersebut ke klien konsensus. +Klien eksekusi (sebelumnya dikenal sebagai "klien Eth1"), seperti Besu, Erigon, Go-Ethereum (Geth), Nethermind, bertugas memproses dan menyiarkan transaksi dan mengelola status Ethereum. Mereka menjalankan komputasi untuk setiap transaksi menggunakan [Mesin Virtual Ethereum](#evm) untuk memastikan bahwa aturan protokol diikuti. ### lapisan eksekusi {#execution-layer} @@ -269,7 +364,7 @@ Lapisan eksekusi Ethereum merupakan jaringan untuk [klien eksekusi](#execution-c ### akun dengan kepemilikan eksternal (EOA) {#eoa} -[Akun](#account) yang dibuat oleh atau untuk pengguna manusia di jaringan Ethereum. +Akun yang dimiliki secara eksternal (EOA) adalah [akun](#account) yang dikontrol oleh [kunci pribadi](#private-key), biasanya dihasilkan menggunakan [frase benih](#hd-wallet-seed). Tidak seperti kontrak pintar, akun yang dimiliki secara eksternal adalah akun tanpa kode apa pun yang terkait dengannya. Biasanya akun-akun ini dikelola dengan [dompet](#wallet). ### Permintaan Ethereum untuk Komentar (ERC) {#erc} @@ -281,9 +376,9 @@ Label yang diberikan ke beberapa [EIP](#eip) yang berusaha untuk menentukan stan ### Ethash {#ethash} -Algoritma [bukti kerja](#pow) untuk Ethereum 1.0. +Sebuah algoritma [bukti kerja](#pow) yang digunakan pada Ethereum sebelum bertransisi ke [bukti taruhan](#pos). -[Baca lebih lanjut di eth.wiki](https://eth.wiki/en/concepts/ethash/ethash) +[Baca lebih lanjut](/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash) ### ether {#ether} @@ -295,7 +390,7 @@ Mata uang kripto asli yang digunakan oleh ekosistem Ethereum, yang mencakup biay ### aksi {#events} -Memungkinkan penggunaan fasilitas pembuatan log [EVM](#evm). [Dapp](#dapp) bisa mendengarkan aksi dan menggunakannya untuk memicu pemanggilan kembali JavaScript dalam antarmuka pengguna. +Memungkinkan penggunaan fasilitas pembuatan log [EVM](#evm). [Dapps](#dapp) bisa mendengarkan aksi dan menggunakannya untuk memicu pemanggilan kembali JavaScript dalam antarmuka pengguna. Aksi dan Log @@ -323,38 +418,35 @@ Fungsi default yang dipanggil saat tidak ada data atau nama fungsi yang dideklar ### keran {#faucet} -Layanan yang dilaksanakan lewat [kontrak pintar](#smart-contract) yang mengeluarkan dana dalam bentuk ether ujicoba gratis yang bisa digunakan dalam satu testnet. +Layanan yang dilaksanakan lewat [kontrak pintar](#smart-contract) yang mengeluarkan dana dalam bentuk ether uji coba gratis yang bisa digunakan dalam satu jaringan percobaan. - Keran Testnet + Keran jaringan percobaan ### finalitas {#finality} Finalitas adalah jaminan bahwa serangkaian transaksi sebelum waktu yang ditentukan tidak akan berubah dan tidak bisa dibalikkan. - - Finalitas Bukti Kerja - - Finalitas Bukti Taruhan + Finalitas bukti taruhan ### finney {#finney} Denominasi [ether](#ether). 1 finney = 1015 [wei](#wei). 103 finney = 1 ether. -### fork {#fork} +### garpu {#fork} -Perubahan dalam protokol yang menyebabkan pembuatan rantai alternatif, atau perbedaan sementara dalam dua jalur blok potensial selama penambangan. +Perubahan protokol yang menyebabkan terciptanya rantai alternatif atau divergensi temporal menjadi dua jalur blok potensial. -### algoritma pilihan fork {#fork-choice-algorithm} +### algoritma pilihan garpu {#fork-choice-algorithm} -Algoritma tersebut digunakan untuk mengidentifikasi kepala blockchain. Pada lapisan eksekusi, kepala rantai diidentifikasikan sebagai yang memiliki tingkat kesulitan tertinggi dibaliknya. Ini berarti kepala rantai sebenarnya adalah yang memerlukan paling banyak pekerjaan untuk menambangnya. Pada lapisan konsensus, algoritma mengobservasi atestasi yang diakumulasi dari validator ([LMD_GHOST](#lmd-ghost)). +Algoritma tersebut digunakan untuk mengidentifikasi kepala rantai blok. Pada lapisan eksekusi, kepala rantai diidentifikasikan sebagai yang memiliki tingkat kesulitan tertinggi dibaliknya. Ini berarti kepala rantai sebenarnya adalah yang memerlukan paling banyak pekerjaan untuk menambangnya. Pada lapisan konsensus, algoritma mengobservasi atestasi yang diakumulasi dari validator ([LMD_GHOST](#lmd-ghost)). ### bukti penipuan {#fraud-proof} -Model keamanan untuk solusi [lapisan 2](#layer-2) tertentu di mana, untuk meningkatkan kecepatan, transaksi di-[roll up](#rollups) ke dalam kelompok dan dikirimkan ke Ethereum dalam transaksi tunggal. Mereka dianggap valid tapi bisa ditentang jika ada kecurigaan penipuan. Bukti penipuan kemudian akan menjalankan transaksi untuk memeriksa apakah penipuan terjadi. Metode ini meningkatkan kemungkinan jumlah transaksi sekaligus mempertahankan keamanan. Beberapa [rollup](#rollups) menggunakan [bukti validitas](#validity-proof). +Model keamanan untuk solusi [lapisan ke-2](#layer-2) tertentu di mana, untuk meningkatkan kecepatan, transaksi di-[roll up](#rollups) ke dalam kelompok dan dikirimkan ke Ethereum dalam transaksi tunggal. Bukti penipuan ini dianggap valid tapi bisa ditentang jika ada kecurigaan penipuan. Bukti penipuan kemudian akan menjalankan transaksi untuk memeriksa apakah penipuan terjadi. Metode ini meningkatkan kemungkinan jumlah transaksi sekaligus mempertahankan keamanan. Beberapa [rollup](#rollups) menggunakan [bukti validitas](#validity-proof). Rollup Optimistic @@ -380,9 +472,13 @@ Bahan bakar virtual yang digunakan di Ethereum untuk mengeksekusi kontrak pintar Jumlah maksimum [gas](#gas) yang mungkin dipakai oleh [transaksi](#transaction) atau [blok](#block). +### harga gas {#gas-price} + +Harga dalam ether untuk satu unit gas yang ditentukan dalam transaksi. + ### blok genesis {#genesis-block} -Blok pertama di [blockchain](#blockchain), digunakan untuk menginisialisasi jaringan tertentu dan mata uang kriptonya. +Blok pertama di [rantai blok](#blockchain), digunakan untuk menginisialisasi jaringan tertentu dan mata uang kriptonya. ### geth {#geth} @@ -398,23 +494,27 @@ Singkatan untuk gigawei, sebuah denominasi [ether](#ether), biasanya digunakan u ## H {#section-h} -### fork keras {#hard-fork} +### garpu keras {#hard-fork} -Perbedaan permanen dalam [rantai blok](#blockchain); juga dikenal sebagai perubahan fork keras. Fork ini biasanya muncul saat node yang tak ditingkatkan tidak bisa memvalidasi blok yang dibuat oleh node yang ditingkatkan yang mengikuti [aturan konsensus](#consensus-rules) yang lebih baru. Jangan dirancukan dengan fork, fork lunak, fork perangkat lunak, atau fork Git. +Perbedaan permanen dalam [rantai blok](#blockchain); juga dikenal sebagai perubahan garpu keras. Garpu ini biasanya muncul saat node yang tak ditingkatkan tidak bisa memvalidasi blok yang dibuat oleh simpul yang ditingkatkan yang mengikuti [aturan konsensus](#consensus-rules) yang lebih baru. Jangan dirancukan dengan garpu, garpu halus, garpu perangkat lunak, atau garpu Git. ### hash {#hash} -Sidik jari input berukuran variabel yang panjangnya tetap, dihasilkan oleh fungsi hash. (Lihat [keccak-256](#keccak-256)) +Sidik jari input berukuran variabel yang panjangnya tetap, dihasilkan oleh fungsi hash. (Lihat [keccak-256](#keccak-256)). + +### hashrate {#hash-rate} + +Jumlah perhitungan hash yang dibuat per detik oleh komputer yang menjalankan perangkat lunak penambangan. ### Dompet HD {#hd-wallet} -[Dompet](#wallet) yang menggunakan pembuatan dan protokol pemindahan kunci hierarchical deterministic (HD). +[Dompet](#wallet) yang menggunakan pembuatan kunci dan protokol transfer hierarchical deterministic (HD). [Baca lebih lanjut di github.com](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) -### Seed dompet HD {#hd-wallet-seed} +### Benih dompet HD {#hd-wallet-seed} -Nilai yang digunakan untuk membuat [kunci privat](#private-key) master dan kode rantai master untuk [dompet](#wallet) HD. Seed dompet dapat diwakili oleh kata mnemonik, yang memudahkan manusia untuk menyalin, membuat cadangan, dan memulihkan kunci privat. +Nilai yang digunakan untuk membuat [kunci pribadi](#private-key) master dan kode rantai master untuk [dompet](#wallet) HD. Benih dompet dapat diwakili oleh kata mnemonik, yang memudahkan manusia untuk menyalin, membuat cadangan, dan memulihkan kunci pribadi. ### homestead {#homestead} @@ -426,7 +526,7 @@ Tahapan pengembangan kedua Ethereum, yang diluncurkan pada Maret 2016 di blok 1. ### indeks {#index} -Struktur jaringan yang dimaksudkan untuk mengoptimalkan pembuatan kueri informasi dari seluruh [blockchain](#blockchain) dengan menyediakan jalur efisien ke sumber penyimpanannya. +Struktur jaringan yang dimaksudkan untuk mengoptimalkan pembuatan kueri informasi dari seluruh [rantai blok](#blockchain) dengan menyediakan jalur efisien ke sumber penyimpanannya. ### Protokol Alamat Klien Antar Bursa (ICAP) {#icap} @@ -434,7 +534,7 @@ Pengodean alamat Ethereum yang setengah kompatibel dengan pengodean Kode Rekenin ### Zaman Es {#ice-age} -[Fork keras](#hard-fork) Ethereum di blok 200.000 untuk memperkenalkan peningkatan [tingkat kesulitan](#difficulty) eksponensial (alias [bom kesulitan](#difficulty-bomb)), mendorong transisi ke [bukti taruhan](#pos). +[Garpu keras](#hard-fork) Ethereum di blok 200.000 untuk memperkenalkan peningkatan [tingkat kesulitan](#difficulty) eksponensial (alias [bom kesulitan](#difficulty-bomb)), mendorong transisi ke [bukti taruhan](#pos). ### lingkungan pengembangan terintegrasi (IDE) {#ide} @@ -454,10 +554,14 @@ Setelah kode [kontrak](#smart-contract) (atau [pustaka](#library)) disebarkan, k ### transaksi internal {#internal-transaction} -[Transaksi](#transaction) yang dikirim dari [akun kontrak](#contract-account) ke akun kontrak lainnya atau [EOA](#eoa) (lihat [message](#message)). +[Transaksi](#transaction) yang dikirim dari [akun kontrak](#contract-account) ke akun kontrak lainnya atau [EOA](#eoa) (lihat [pesan](#message)). +### penerbitan + +Pencetakan ether baru untuk memberi imbalan pada proposal blok, pengesahan, dan pelaporan. + ## K {#section-k} ### fungsi derivasi kunci (KDF) {#kdf} @@ -468,13 +572,13 @@ Juga dikenal sebagai "algoritma perentangan kata sandi", ini digunakan oleh form Keamanan kontrak pintar -### keccak-256 {#keccak-256} +### toko kunci {#keyfile} -Fungsi [hash](#hash) kriptografik yang digunakan di Ethereum. Keccak-256 distandardisasi sebagai [SHA](#sha)-3. +Setiap pasangan kunci pribadi/alamat akun ada sebagai sebuah file kunci tunggal dalam klien Ethereum. Ini adalah file teks JSON yang berisi kunci pribadi terenkripsi dari akun, yang hanya bisa didekripsi dengan kata sandi yang dimasukkan saat pembuatan akun. -### file penyimpanan kunci {#keystore-file} +### keccak-256 {#keccak-256} -File yang dikodekan dengan JSON yang berisi [kunci privat](#private-key) tunggal (dibuat secara acak), dienkripsi oleh frasa kata sandi untuk pengamanan tambahan. +Fungsi [hash](#hash) kriptografi yang digunakan di Ethereum. Keccak-256 distandardisasi sebagai [SHA](#sha)-3. @@ -484,7 +588,7 @@ File yang dikodekan dengan JSON yang berisi [kunci privat](#private-key) tunggal Area pengembangan yang berpusat pada peningkatan pembuatan lapisan di atas protokol Ethereum. Peningkatan ini terkait dengan kecepatan [transaksi](#transaction), [biaya transaksi](#transaction-fee) yang lebih murah, dan privasi transaksi. - + Lapisan 2 @@ -500,7 +604,7 @@ Tipe [kontrak](#smart-contract) spesial yang tidak memiliki fungsi yang dapat di Pustaka Kontrak Pintar -### klien ringan {#lightweight-client} +### klien ringan {#light-client} Klien Ethereum yang tidak menyimpan salinan lokal dari [rantai blok](#blockchain), atau memvalidasi blok dan [transaksi](#transaction). Menawarkan fungsi [dompet](#wallet) dan bisa membuat dan menyiarkan transaksi. @@ -508,41 +612,53 @@ Klien Ethereum yang tidak menyimpan salinan lokal dari [rantai blok](#blockchain ### LMD_GHOST {#lmd-ghost} -[Algoritma pilihan fork](#fork-choice-algorithm) yang digunakan oleh klien konsensus Ethereum untuk mengidentifikasi kepala rantai. LMD-GHOST merupakan singkatan dari "Latest Message Driven Greediest Heaviest Observed SubTree" yang berarti bahwa kepala rantai merupakan blok dengan akumulasi [atestasi](#attestation) terbesar dalam sejarah rantai tersebut. +[Algoritma pilihan garpu](#fork-choice-algorithm) yang digunakan oleh klien konsensus Ethereum untuk mengidentifikasi kepala rantai. LMD-GHOST adalah singkatan dari "Latest Message Driven Greediest Heaviest Observed SubTree" yang Didorong oleh Pesan Terakhir, yang berarti bahwa kepala rantai adalah blok dengan akumulasi [pengesahan](#attestation) terbanyak dalam riwayat rantai tersebut. ## M {#section-m} ### Jaringan Utama {#mainnet} -Singkatan dari "jaringan utama", ini adalah [blockchain](#blockchain) Ethereum publik yang utama. ETH sebenarnya, nilai sebenarnya, dan konsekuensi sebenarnya. Juga dikenal sebagai lapisan 1 saat mendiskusikan tentang solusi penskalaan [lapisan 2](#layer-2). (Selain itu, lihat [jaringan percobaan](#testnet)) +Singkatan dari "jaringan utama", ini adalah [rantai blok](#blockchain) Ethereum publik yang utama. ETH nyata, nilai nyata, dan konsekuensi nyata. Juga dikenal sebagai lapisan ke-1 apabila membahas solusi penskalaan [lapisan ke-2](#layer-2). (Selain itu, lihat [jaringan percobaan](#testnet)). + + + Jaringan Ethereum + + +### memori-keras {#memory-hard} + +Fungsi memory-hard adalah proses yang mengalami penurunan kecepatan atau kelayakan secara drastis apabila terjadi penurunan jumlah memori yang tersedia, meskipun hanya berkurang sedikit. Contohnya adalah algoritma penambangan Ethereum [Ethash](#ethash). ### Pohon Merkle Patricia {#merkle-patricia-tree} -Struktur data yang digunakan di Ethereum untuk menyimpan pasangan nilai kunci secara efisien. +Struktur data yang digunakan di Ethereum untuk menyimpan pasangan nilai-kunci dengan efisien. ### message {#message} -[Transaksi internal](#internal-transaction) yang tidak pernah diurutkan dan hanya dikirim dalam [EVM](#evm). +[Transaksi internal](#internal-transaction) yang tidak pernah diurutkan dan hanya dikirim di dalam [EVM](#evm). ### pemanggilan message {#message-call} -Tindakan penyampaian [message](#message) dari satu akun ke akun lainnya. Jika akun tujuan dikaitkan dengan kode [EVM](#evm), maka VM akan dimulai dengan status objek tersebut dan message yang dijadikan dasar aksi. +Tindakan meneruskan [message](#message) dari satu akun ke akun lainnya. Jika akun tujuan dikaitkan dengan kode [EVM](#evm), maka VM tersebut akan dimulai dengan keadaan objek tersebut, lalu message akan dijalankan. ### Metropolis {#metropolis} Tahapan pengembangan ketiga Ethereum, yang diluncurkan pada Oktober 2017. +### penambangan {#mining} + +Proses melakukan hashing pada header blok secara berulang sambil meningkatkan [nonce](#nonce) hingga hasilnya mengandung sejumlah angka tertentu yang terdiri dari nol biner di depannya. Proses ini adalah cara untuk menambahkan [blok](#block) ke [rantai blok](#blockchain) bukti kerja. Cara ini digunakan untuk mengamankan Ethereum sebelum beralih ke [bukti taruhan](#pos). + ### penambang {#miner} -[Node](#node) jaringan yang menemukan [bukti kerja](#pow) valid untuk blok baru, melalui metode hashing penyampaian yang berulang (lihat [Ethash](#ethash)). +[Simpul](#node) jaringan yang menemukan [bukti kerja](#pow) yang valid untuk blok baru, melalui cara hashing dengan lintasan berulang (lihat [Ethash](#ethash)). Para penambang tidak lagi menjadi bagian dari Ethereum - mereka digantikan oleh validator ketika Ethereum beralih ke [bukti taruhan](#pos). Penambangan -### Cetak {#mint} +### cetak {#mint} -Pencetakan adalah proses membuat token baru dan membawanya ke dalam sirkulasi sehingga dapat digunakan. Ini adalah mekanisme terdesentralisasi untuk membuat token baru tanpa keterlibatan otoritas pusat. +Minting adalah proses membuat token baru dan memasukkannya ke peredaran agar dapat digunakan. Mekanisme ini terdesentralisasi untuk membuat token baru tanpa keterlibatan otoritas pusat. @@ -550,15 +666,19 @@ Pencetakan adalah proses membuat token baru dan membawanya ke dalam sirkulasi se ### jaringan {#network} -Mengacu pada jaringan Ethereum, jaringan peer-to-peer yang menyebarkan transaksi dan blok ke setiap node Ethereum (peserta jaringan). +Mengacu pada jaringan Ethereum, jaringan peer-to-peer yang menyebarkan transaksi dan blok ke setiap simpul Ethereum (peserta jaringan). Jaringan +### tingkat hash jaringan {#network-hashrate} + +[Tingkast hash](#hashrate) gabungan yang dihasilkan oleh seluruh jaringan penambangan. Penambangan di Ethereum dinonaktifkan setelah Ethereum beralih ke [bukti taruhan](#pos). + ### token yang tidak dapat dipertukarkan (NFT) {#nft} -Juga dikenal sebagai "deed", ini adalah standar token yang diperkenalkan oleh proposal ERC-721. NFT bisa dilacak dan diperdagangkan, tapi tiap token adalah unik dan berbeda; token ini tidak bisa ditukarkan seperti ETH dan [token ERC-20](#token-standard). NFT bisa menunjukkan kepemilikan aset digital atau fisik. +Standar token yang juga dikenal sebagai "deed" ini diperkenalkan pada proposal ERC-721. NFT bisa dilacak dan diperdagangkan, tetapi setiap token bersifat unik dan berbeda; token ini tidak dapat dipertukarkan seperti ETH dan [token ERC-20](#token-standard). NFT bisa menunjukkan kepemilikan aset digital atau fisik. Token yang Tidak Dapat Dipertukarkan (NFT) @@ -567,29 +687,29 @@ Juga dikenal sebagai "deed", ini adalah standar token yang diperkenalkan oleh pr Standar Token yang Tidak Dapat Dipertukarkan ERC-721 -### node {#node} +### simpul {#node} Klien perangkat lunak yang berpartisipasi dalam jaringan. - Node dan Klien + Simpul dan Klien ### nonce {#nonce} -Dalam kriptografi, sebuah nilai hanya bisa digunakan satu kali. Ada dua tipe nonce yang digunakan di Ethereum- nonce akun adalah penghitung transaksi dalam tiap akun, yang digunakan untuk mencegah serangan pengulangan; nonce [bukti kerja](#pow) adalah nilai acak dalam satu blok yang digunakan untuk memenuhi [bukti kerja](#pow). +Nilai dalam kriptografi yang hanya boleh digunakan satu kali. Nonce akun adalah penghitung transaksi di setiap akun, yang digunakan untuk mencegah serangan replay. ## O {#section-o} -### blok ommer (uncle) {#ommer} +### blok ommer (paman) {#ommer} -Ketika seorang [penambang](#miner) menemukan [blok](#block) valid, penambang lain mungkin telah menerbitkan blok saingan yang pertama-tama ditambahkan ke ujung blockchain. Blok valid tapi lama ini bisa dimasukkan oleh blok yang lebih baru sebagai _ommer_ dan menerima setengah dari imbalan blok. Istilah "ommer" adalah istilah netral secara gender yang lebih disukai untuk saudara kandung dari blok induk, tapi kadang-kadang disebut juga sebagai "uncle". +Ketika seorang [penambang](#miner) bukti kerja menemukan [blok](#block) yang valid, penambang lain mungkin telah mempublikasikan blok pesaing yang ditambahkan terlebih dahulu ke ujung rantai blok. Blok yang valid tapi sudah usang ini dapat dimasukkan pada blok yang lebih baru sebagai _ommer_ dan menerima setengah dari imbalan blok. Istilah "ommer" adalah istilah netral secara gender yang lebih disukai untuk menyebut saudara dari blok induk, tapi kadang-kadang juga disebut sebagai "paman". Hal tersebut relevan untuk Ethereum ketika masih menggunakan jaringan [bukti kerja](#pow) tetapi ommer bukanlah fitur dari Ethereum [bukti taruhan](#pos) karena hanya satu pengusul blok yang dipilih di setiap slot. -### Rollup optimistic {#optimistic-rollup} +### penggabungan yang optimis {#optimistic-rollup} -[Rollup](#rollups) transaksi yang menggunakan [bukti penipuan](#fraud-proof) untuk menawarkan keluaran transaksi [lapisan 2](#layer-2) yang ditingkatkan, sekaligus menggunakan pengamanan yang disediakan oleh [Jaringan Utama](#mainnet) (lapisan 1). Tidak seperti [Plasma](#plasma), solusi lapisan 2 yang mirip dengannya, rollup Optimistic bisa menangani jenis transaksi yang lebih rumit – apa pun memungkinkan di [EVM](#evm). Rollup ini memang memiliki masalah latensi jika dibandingkan dengan [rollup Zero-knowledge](#zk-rollups) karena satu transaksi bisa ditentang lewat bukti penipuan. +[Penggabungan](#rollups) transaksi yang menggunakan [bukti penipuan](#fraud-proof) untuk menawarkan peningkatan keluaran transaksi [lapisan ke-2](#layer-2), sambil menggunakan keamanan yang disediakan oleh [Jaringan Utama](#mainnet) (lapisan ke-1). Tidak seperti [Plasma](#plasma), solusi lapisan ke-2 yang serupa, rollup optimis dapat menangani jenis transaksi yang lebih rumit – segala hal yang dapat dilakukan di [EVM](#evm). Rollup ini memang memiliki masalah latensi jika dibandingkan dengan [Rollup tanpa pengetahuan](#zk-rollups) karena transaksi bisa ditantang lewat bukti penipuan. Rollup Optimistic @@ -597,7 +717,7 @@ Ketika seorang [penambang](#miner) menemukan [blok](#block) valid, penambang lai ### Oracle {#oracle} -Oracle merupakan sebuah jembatan yang menghubungkan antara [blockchain](#blockchain) dan dunia nyata. Mereka bertindak sebagai [API](#api) on-chain yang dapat dikuerikan untuk informasi dan digunakan di [kontrak pintar](#smart-contract). +Oracle adalah jembatan antara [rantai blok](#blockchain) dan dunia nyata. Oracle berperan sebagai [API](#api) di dalam rantai yang dapat dikirimkan kueri untuk meminta informasi dan digunakan pada [kontrak pintar](#smart-contract). Oracle @@ -609,31 +729,43 @@ Oracle merupakan sebuah jembatan yang menghubungkan antara [blockchain](#blockch ### parity {#parity} -Salah satu dari implementasi kemampuan pertukaran informasi yang paling menonjol dari perangkat lunak klien Ethereum. +Salah satu implementasi kemampuan dukungan operasi yang paling menonjol pada perangkat lunak klien Ethereum. + +### teman sebaya {#peer} + +Komputer terhubung yang menjalankan perangkat lunak klien Ethereum dengan salinan identik [rantai blok](#blockchain). + +### jaringan peer to peer {#peer-to-peer-network} + +Jaringan komputer ([peer](#peer)) yang secara kolektif dapat menjalankan fungsionalitas tanpa memerlukan layanan terpusat berbasis server. ### Plasma {#plasma} -Solusi penskalaan off-chain yang menggunakan [bukti penipuan](#fraud-proof), seperti [Rollup optimistic](#optimistic-rollups). Plasma terbatas pada transaksi sederhana seperti transfer dan penukaran token dasar. +Solusi penskalaan di luar rantai yang menggunakan [bukti penipuan](#fraud-proof), seperti [Rollup optimis](#optimistic-rollups). Plasma dibatasi pada transaksi sederhana seperti transfer dan penukaran token biasa. Plasma -### kunci privat (kunci rahasia) {#private-key} +### kunci pribadi (kunci rahasia) {#private-key} + +Angka rahasia yang digunakan oleh pengguna Ethereum untuk membuktikan kepemilikan akun atau kontrak, dengan menghasilkan tanda tangan digital (lihat [kunci publik](#public-key), [alamat](#address), [ECDSA](#ecdsa)). + +### rantai pribadi {#private-chain} -Angka rahasia yang memungkinkan pengguna Ethereum membuktikan kepemilikan sebuah akun atau kontrak, dengan membuat tanda tangan digital (lihat [kunci publik](#public-key), [alamat](#address), [ECDSA](#ecdsa)). +Rantai blok yang sepenuhnya pribadi, yaitu rantai blok dengan akses yang berizin dan tidak tersedia untuk digunakan oleh publik. -### Bukti Taruhan (PoS) {#pos} +### bukti taruhan (PoS) {#pos} -Metode yang digunakan oleh protokol blockchain mata uang kripto untuk mencapai [konsensus](#consensus) terdistribusi. PoS meminta pengguna membuktikan kepemilikan sejumlah mata uang kripto tertentu ("taruhan" mereka di jaringan) untuk dapat berpartisipasi dalam proses validasi transaksi. +Metode yang digunakan oleh protokol rantai blok mata uang kripto untuk mencapai [konsensus](#consensus) terdistribusi. PoS meminta pengguna membuktikan kepemilikan sejumlah mata uang kripto tertentu ("taruhan" pengguna di jaringan) agar dapat berpartisipasi dalam validasi transaksi. Bukti taruhan -### Bukti kerja (PoW) {#pow} +### bukti kerja (PoW) {#pow} -Data (bukti) yang membutuhkan komputasi signifikan untuk ditemukan. Dalam Ethereum, [penambang](#miner) harus menemukan solusi numerik dari algoritma [Ethash](#ethash) yang sesuai dengan target [tingkat kesulitan](#difficulty) keseluruhan jaringan. +Sepotong data (bukti) yang membutuhkan komputasi yang signifikan untuk dapat ditemukan. Bukti kerja @@ -641,7 +773,7 @@ Data (bukti) yang membutuhkan komputasi signifikan untuk ditemukan. Dalam Ethere ### kunci publik {#public-key} -Angka, yang didapatkan lewat fungsi satu arah dari [kunci privat](#private-key), yang bisa dibagikan secara pubik dan digunakan oleh siapa pun untuk memverifikasi tanda tangan digital yang terbuat dengan kunci privat yang sesuai. +Angka, yang diturunkan melalui fungsi satu arah dari [kunci pribadi](#private-key), yang dapat dibagikan secara pubik dan digunakan oleh siapa pun untuk memverifikasi tanda tangan digital yang dibuat dengan kunci pribadi yang sesuai. @@ -649,11 +781,11 @@ Angka, yang didapatkan lewat fungsi satu arah dari [kunci privat](#private-key), ### tanda terima {#receipt} -Data yang dikembalikan oleh klien Ethereum untuk mewakili hasil dari sebuah [transaksi](#transaction) tertentu, termasuk [hash](#hash) transaksi, nomor [bloknya](#block), jumlah [gas](#gas) terpakai, dan, dalam hal penggunaan [kontrak pintar](#smart-contract), [alamat](#address) kontraknya. +Data yang dihasilkan oleh klien Ethereum untuk mewakili hasil dari [transaksi](#transaction) tertentu, termasuk [hash](#hash) pada transaksi, nomor [blok](#block)nya, jumlah [gas](#gas) yang dipakai, dan, dalam hal penyebaran [kontrak pintar](#smart-contract), [alamat](#address) kontrak. ### serangan re-entrancy {#re-entrancy-attack} -Serangan yang terdiri dari kontrak penyerang memanggil fungsi kontrak korban dalam cara yang pada saat eksekusinya, korban memanggil kontrak penyerang lagi, secara berulang. Ini bisa mengakibatkan, sebagai contoh, pencurian dana dengan melewatkan bagian kontrak korban yang memerbarui saldo atau yang menghitung jumlah penarikan. +Serangan yang memiliki ciri pemanggilan fungsi kontrak korban oleh kontrak penyerang dengan cara yang sedemikian rupa sehingga pada saat dijalankan, korban akan memanggil kontrak penyerang lagi secara berulang. Hal ini dapat mengakibatkan, misalnya, pencurian dana dengan melewatkan bagian ketika kontrak korban memperbarui saldo atau menghitung jumlah penarikan. Re-entrancy @@ -665,11 +797,11 @@ Sejumlah ether yang dimasukkan ke dalam setiap blok baru sebagai imbalan oleh ja ### Prefiks Panjang Rekursif (RLP) {#rlp} -Standar pengodean yang dirancang oleh pengembang Ethereum untuk mengodekan dan mengurutkan objek (stuktur data) dengan kompleksitas dan penjang yang bersifat arbitrari. +Standar pengodean yang dirancang oleh pengembang Ethereum untuk mengodekan dan mengurutkan objek (stuktur data) dengan kompleksitas dan panjang sembarang. ### rollup {#rollups} -Jenis solusi penskalaan [lapisan 2](#layer-2) yang mengelompokkan beberapa transaksi dan mengirimkannya ke [rantai utama Ethereum](#mainnet) dalam transaksi tunggal. Ini memungkinkan pengurangan biaya [gas](#gas) dan menambah keluaran [transaksi](#transaction). Ada rollup Optimistic dan Zero-knowledge yang menggunakan metode pengamanan berbeda untuk menawarkan perolehan skalabilitas ini. +Jenis solusi penskalaan [lapisan ke-2](#layer-2) yang membuat beberapa batch atas sejumlah transaksi dan mengirimkannya ke [rantai utama Ethereum](#mainnet) dalam satu transaksi tunggal. Dengan cara ini, penurunan biaya [gas](#gas) dan peningkatan keluaran [transaksi](#transaction) dapat dilakukan. Ada Rollup optimis dan Rollup tanpa pengetahuan yang menggunakan metode keamanan berbeda untuk memberikan perolehan pada skalabilitas ini. Rollup @@ -677,8 +809,16 @@ Jenis solusi penskalaan [lapisan 2](#layer-2) yang mengelompokkan beberapa trans +### RPC {#rpc} + +**Remote procedure call (RPC)** adalah protokol yang digunakan oleh suatu program untuk meminta layanan dari program yang terletak di komputer lain di suatu jaringan tanpa harus memahami detail jaringan tersebut. + ## S {#section-s} +### Algoritma Hash Aman (SHA) {#sha} + +Kelompok fungsi hash kriptografi yang diterbitkan oleh National Institute of Standards and Technology (NIST). + ### Serenity {#serenity} Tahapan pengembangan Ethereum yang memulai serangkaian penskalaan dan peningkatan berkelanjutan, yang sebelumnya dikenal sebagai 'Ethereum 2.0', atau 'Eth2'. @@ -687,33 +827,41 @@ Tahapan pengembangan Ethereum yang memulai serangkaian penskalaan dan peningkata Peningkatan Ethereum -### Algoritma Hash Aman (SHA) {#sha} +### serialisasi {#serialization} -Serumpun fungsi hash kriptografik yang diterbitkan oleh National Institute of Standards and Technology (NIST). +Proses mengubah struktur data menjadi urutan bita. -### shard / rantai shard {#shard} +### pecahan / rantai pecahan {#shard} -Rantai [bukti taruhan](#pos) yang dikoordinir oleh [Rantai Suar](#beacon-chain) dan diamankan oleh [validator](#validator). Akan ada 64 rantai yang ditambahkan ke jaringan sebagai bagian dari peningkatan rantai shard. Rantai shard akan menawarkan keluaran transaksi yang bertambah untuk Ethereum dengan menyediakan data tambahan untuk solusi [lapisan 2](#layer-2) seperti [rollup optimistic](#optimistic-rollups) dan [rollup ZK](#zk-rollups). +Rantai pecahan adalah bagian-bagian diskret dari total rantai blok yang dapat ditempatkan ke subset validator untuk menjadi tanggung jawabnya. Cara ini akan menawarkan peningkatan keluaran transaksi untuk Ethereum dan meningkatkan ketersediaan data untuk solusi [lapisan ke-2](#layer-2) seperti [penggabungan yang optimis](#optimistic-rollups) dan [rollup tanpa pengetahuan](#zk-rollups). Danksharding -### sidechain {#sidechain} +### rantai samping {#sidechain} -Solusi penskalaan yang menggunakan rantai terpisah dengan [aturan konsensus](#consensus-rules) yang berbeda, sering kali lebih cepat. Sebuah jembatan diperlukan untuk menghubungkan sidechain ini ke [Jaringan Utama](#mainnet). [Rollup](#rollups) juga menggunakan sidechain, tetapi beroperasi dalam kolaborasi dengan [Jaringan Utama](#mainnet) sebagai gantinya. +Solusi penskalaan yang menggunakan rantai terpisah dengan [aturan konsensus](#consensus-rules) yang berbeda dan sering kali lebih cepat. Diperlukan jembatan untuk menghubungkan rantai samping ini ke [Jaringan Utama](#mainnet). [Rollup](#rollups) juga menggunakan rantai samping, tetapi rollup beroperasi dengan kolaborasi bersama [Jaringan Utama](#mainnet), bukan dengan rantai samping. Sidechain +### penandatanganan {#signing} + +Mempertunjukkan secara kriptografi bahwa transaksi telah disetujui oleh pemegang kunci pribadi tertentu. + ### singleton {#singleton} -Komputer yang memprogram istilah yang mendeskripsikan objek istilah tersebut yang hanya dapat berisi satu instance tunggal. +Istilah pemrograman komputer yang menggambarkan objek yang hanya dapat berisi satu instans tunggal. -### slot {#slot} +### slasher {#slasher} -Periode waktu (12 detik) yang di dalamnya [Rantai Suar](#beacon-chain) dan blok rantai [shard](#shard) baru bisa diusulkan oleh [validator](#validator) dalam sistem [bukti taruhan](#pos). Sebuah slot mungkin tidak berisi. 32 slot membentuk satu [epoch](#epoch). +Slasher adalah entitas yang memindai pengesahan untuk mencari pelanggaran yang dapat dipotong. Pemotongan disebarkan ke jaringan, dan pengusul blok berikutnya menambahkan bukti ke blok tersebut. Pengusul blok kemudian menerima imbalan karena telah memotong validator jahat. + +### celah {#slot} + +Sebuah periode waktu (12 detik) agar blok-blok baru dapat diajukan oleh [validator](#validator) dalam sistem [bukti taruhan](#pos). Ruang boleh kosong. 32 ruang membentuk satu [jangka waktu](#epoch). Bukti taruhan @@ -721,23 +869,27 @@ Periode waktu (12 detik) yang di dalamnya [Rantai Suar](#beacon-chain) dan blok ### kontrak pintar {#smart-contract} -Program yang beroperasi dalam infrastruktur komputasi Ethereum. +Program yang berjalan pada infrastruktur komputasi Ethereum. - Pengantar Kontrak Pintar + Pengantar kontrak pintar ### SNARK {#snark} -Kependekan dari "succinct non-interactive argument of knowledge", SNARK merupakan sejenis [bukti zero-knowledge](#zk-proof). +Singkatan dari "argumen pengetahuan yang ringkas dan tidak interaktif", SNARK adalah sejenis [bukti tanpa pengetahuan](#zk-proof). Rollup zero-knowledge +### garpu halus {#soft-fork} + +Pemisahan dalam [rantai blok](#blockchain) yang terjadi ketika [aturan konsensus](#consensus-rules) berubah. Berbeda dengan [garpu keras](#hard-fork), garpu halus bersifat kompatibel mundur; simpul yang telah ditingkatkan dapat memvalidasi blok yang dibuat oleh simpul yang belum ditingkatkan selama simpul tersebut mengikuti aturan konsensus baru. + ### Solidity {#solidity} -Bahasa pemrograman prosedural (imperatif) dengan sintaksis yang mirip dengan JavaScript, C++, atau Java. Bahasa paling populer dan paling sering digunakan untuk [kontrak pintar](#smart-contract) Ethereum. Dibuat oleh Dr. Gavin Wood. +Bahasa pemrograman prosedural (imperatif) dengan sintaksis yang serupa dengan JavaScript, C++, atau Java. Bahasa paling populer dan paling sering digunakan untuk [kontrak pintar](#smart-contract) Ethereum. Diciptakan oleh Dr. Gavin Wood. Solidity @@ -745,15 +897,15 @@ Bahasa pemrograman prosedural (imperatif) dengan sintaksis yang mirip dengan Jav ### Perakitan inline Solidity {#solidity-inline-assembly} -Bahasa perakitan [EVM](#evm) dalam program [Solidity](#solidity). Dukungan Solidity untuk perakitan inline memudahkan proses untuk menulis operasi tertentu. +Bahasa perakitan [EVM](#evm) di program [Solidity](#solidity). Dukungan Solidity untuk kode assembly dalam baris mempermudah penulisan operasi tertentu. ### Spurious Dragon {#spurious-dragon} -[Fork keras](#hard-fork) dari blockchain Ethereum, yang muncul di blok 2.675.000 untuk mengatasi lebih banyak vektor serangan penolakan layanan dan state yang bersih (lihat [Tangerine Whistle](#tangerine-whistle)). Juga, mekanisme perlindungan terhadap serangan perulangan (lihat [nonce](#nonce)). +[Garpu keras](#hard-fork) dari blockchain Ethereum, yang muncul di blok 2.675.000 untuk mengatasi lebih banyak vektor serangan penolakan layanan dan state yang bersih (lihat [Tangerine Whistle](#tangerine-whistle)). Juga merupakan mekanisme perlindungan terhadap serangan replay (lihat [nonce](#nonce)). -### stablecoin {#stablecoin} +### koin stabil {#stablecoin} -[Token ERC-20](#token-standard) dengan nilai yang dipatok pada nilai aset lainnya. Ada stablecoin yang didukung oleh mata uang fiat seperti dolar, logam mulia seperti emas, dan mata uang kripto lainnya seperti Bitcoin. +[Token ERC-20](#token-standard) dengan nilai yang dipatok ke nilai aset lainnya. Ada stablecoin yang didukung oleh mata uang fiat seperti dolar, logam mulia seperti emas, dan mata uang kripto lainnya seperti Bitcoin. ETH bukan satu-satunya kripto pada Ethereum @@ -761,23 +913,35 @@ Bahasa perakitan [EVM](#evm) dalam program [Solidity](#solidity). Dukungan Solid ### penaruhan {#staking} -Mendepositokan sejumlah [ether](#ether) (taruhan Anda) untuk menjadi validator dan mengamankan [jaringan](#network). Seorang validator memeriksa [transaksi](#transaction) dan mengusulkan [blok](#block) di bawah model konsensus [bukti taruhan](#pos). Penaruhan memberi Anda insentif ekonomi untuk bertindak demi keuntungan terbaik jaringan. Anda akan mendapatkan imbalan untuk melaksanakan tugas [validator](#validator) Anda, tapi kehilangan jumlah ETH secara beragam jika Anda tidak menjalankannya. +Menyetorkan sejumlah [ether](#ether) (taruhan Anda) untuk menjadi validator dan mengamankan [jaringan](#network). Validator memeriksa [transaksi](#transaction) dan mengusulkan [blok](#block) dalam model konsensus [bukti taruhan](#pos). Penaruhan memberi Anda insentif ekonomi untuk bertindak demi kepentingan utama jaringan. Anda akan mendapatkan imbalan untuk melaksanakan tugas [validator](#validator) Anda, tetapi akan kehilangan ETH dalam jumlah beragam jika tidak melakukannya. - Taruhkan ETH Anda untuk menjadi validator Ethereum + Pertaruhkan ETH Anda untuk menjadi validator Ethereum + + +### pool penaruhan {#staking-pool} + +Gabungan ETH dengan lebih dari satu penaruh Ethereum, digunakan untuk mencapai 32 ETH yang diperlukan untuk mengaktifkan satu set kunci validator. Operator simpul menggunakan kunci-kunci ini untuk berpartisipasi dalam konsensus dan [imbalan blok](#block-reward) akan dibagi di antara pemberi stake yang berkontribusi. Pool staking atau pendelegasian taruhan tidak native pada protokol Ethereum, tetapi banyak solusi yang telah dibangun oleh komunitas. + + + Penaruhan pool ### STARK {#stark} -Kependekan dari "scalable transparent argument of knowledge", STARK merupakan sejenis [bukti zero-knowledge](#zk-proof). +Singkatan dari "argumen pengetahuan yang transparan dan dapat diskalakan", STARK adalah salah satu jenis [bukti tanpa pengetahuan](#zk-proof). Rollup zero-knowledge +### keadaan {#state} + +Bidikan spontan pada semua saldo dan data pada titik waktu tertentu di rantai blok, biasanya mengacu pada kondisi di blok tertentu. + ### kanal state {#state-channels} -Solusi [lapisan 2](#layer-2), yaitu sebuah kanal disiapkan di antara perserta, dan mereka bisa bertransaksi dengan bebas dan dengan biaya rendah. Hanya [transaksi](#transaction) yang ditujukan untuk memulai kanal dan menutup kanal yang dikirimkan ke [Jaringan Utama](#mainnet). Ini memungkinkan throughput transaksi yang sangat tinggi, tapi memang bergantung pada prosedur mengetahui jumlah peserta dari awal dan mengunci pendanaan yang tersedia. +Solusi [lapisan ke-2](#layer-2), yang menjadi tempat penyiapan kanal di antara para peserta sehingga mereka dapat bertransaksi dengan bebas dan murah. Hanya [transaksi](#transaction) untuk menyiapkan kanal dan menutup kanal yang akan dikirim ke [Jaringan Utama](#mainnet). Hal ini memungkinkan keluaran transaksi yang sangat tinggi, tetapi memang mengandalkan pengetahuan tentang jumlah peserta sebelumnya dan penguncian dana. Kanal state @@ -785,11 +949,15 @@ Solusi [lapisan 2](#layer-2), yaitu sebuah kanal disiapkan di antara perserta, d ### supermayoritas {#supermajority} -Supermayoritas adalah istilah yang diberikan untuk jumlah yang melampaui 2/3 (66%) dari total ether yang dipertaruhkan pada [Rantai Suar](#beacon-chain). Suara supermayoritas diperlukan agar blok dapat [difinalisasi](#finality) pada Rantai Suar. +Supermayoritas adalah istilah yang diberikan untuk jumlah yang melebihi 2/3 (66%) dari total ether yang dipertaruhkan yang mengamankan Ethereum. Suara supermayoritas diperlukan agar blok dapat [difinalisasi](#finality) pada Rantai Suar. + +### menyinkronkan {#syncing} + +Proses mengunduh seluruh versi terbaru rantai blok ke sebuah simpul. ### panitia sinkronisasi {#sync-committee} -Panitia sinkronisasi adalah grup [validator](#validator) yang dipilih secara acak pada [Rantai Suar](#beacon-chain) yang disegarkan setiap ~27 jam. Tujuannya adalah menambahkan tanda tangan mereka pada header blok yang valid. Komite sinkronisasi memungkinkan [klien ringan](#lightweight-client) untuk terus melacak kepala blockchain tanpa harus mengakses keseluruhan set validator. +Panitia sinkronisasi adalah sekelompok [validator](#validator) yang dipilih secara acak yang diperbarui setiap ~27 jam. Tujuan panitia ini adalah menambahkan tanda tangan mereka pada header blok yang valid. Dengan adanya panitia sinkronisasi, [klien ringan](#light-client) dapat melacak kepala rantai blok tanpa perlu mengakses seluruh kumpulan validator. ### szabo {#szabo} @@ -801,19 +969,27 @@ Denominasi [ether](#ether). 1 szabo = 1012 [wei](#wei), 106 Jaringan percobaan +### token {#token} + +Barang virtual yang dapat diperdagangkan dan didefinisikan di kontrak pintar pada rantai blok Ethereum. + ### standar token {#token-standard} -Diperkenalkan oleh proposal ERC-20, ini menyediakan struktur [kontrak pintar](#smart-contract) yang terstandardisasi untuk token yang dapat dipertukarkan. Token dari kontrak yang sama bisa dilacak, diperdagangkan, dan dapat dipertukarkan, tidak seperti [NFT](#nft). +Diperkenalkan oleh proposal ERC-20, standar token menyediakan struktur [kontrak pintar](#smart-contract) terstandardisasi untuk token yang dapat dipertukarkan. Token dari kontrak yang sama bisa dilacak, diperdagangkan, dan dapat dipertukarkan, tidak seperti [NFT](#nft). Standar Token ERC-20 @@ -821,7 +997,7 @@ Diperkenalkan oleh proposal ERC-20, ini menyediakan struktur [kontrak pintar](#s ### transaksi {#transaction} -Data yang dikomit ke Blockchain Ethereum yang ditandatangani oleh [akun](#account) pengirim, yang menargetkannya [alamat](#address) tertentu. Transaksi berisi metadata seperti [batas gas](#gas-limit) untuk transaksi tersebut. +Data yang di-commit ke Rantai Blok Ethereum dan ditandatangani oleh [akun](#account) pengirim dengan menargetkan [alamat](#address) tertentu. Transaksi berisi metadata seperti [batas gas](#gas-limit) untuk transaksi tersebut. Transaksi @@ -829,15 +1005,19 @@ Data yang dikomit ke Blockchain Ethereum yang ditandatangani oleh [akun](#accoun ### biaya transaksi {#transaction-fee} -Biaya yang Anda perlukan kapan pun Anda menggunakan jaringan Ethereum. Contohnya mencakup pengiriman dana dari [dompet](#wallet), atau interaksi [dapp](#dapp), seperti menukar token atau membeli item koleksi. Anda bisa menganggap ini seperti biaya layanan. Biaya ini akan berubah berdasarkan seberapa sibuk jaringan. Ini karena [penambang](#miner), orang-orang yang bertanggungjawab untuk memproses transaksi Anda, kemungkinan memprioritaskan transaksi dengan biaya lebih tinggi – sehingga kemacetan memaksa harga untuk naik. +Biaya yang harus Anda bayar setiap kali Anda menggunakan jaringan Ethereum. Contohnya termasuk mengirim dana dari [dompet](#wallet) Anda atau interaksi [dapp](#dapp), seperti menukar token atau membeli barang koleksi. Anda bisa menganggapnya seperti biaya layanan. Biaya ini akan berubah berdasarkan seberapa sibuk jaringan. Hal ini disebabkan oleh [validator](#validator), para individu yang bertanggung jawab untuk memproses transaksi Anda, cenderung memprioritaskan transaksi dengan biaya yang lebih tinggi - sehingga kepadatan akan mendorong kenaikan harga. + +Pada tingkat teknis, biaya transaksi Anda berhubungan dengan jumlah [gas](#gas) yang dibutuhkan oleh transaksi Anda. + +Mengurangi biaya transaksi adalah subjek diskusi yang sangat diminati saat ini. Lihat [Lapisan ke-2](#layer-2). -Pada level teknis, biaya transaksi Anda berhubungan dengan seberapa banyak [gas](#gas) yang diperlukan transaksi Anda. +### keadaan tanpa kepercayaan {#trustlessness} -Mengurangi biaya transaksi adalah subjek diskusi yang sangat diminati saat ini. Lihat [Lapisan 2](#layer-2) +Kemampuan jaringan untuk memediasi transaksi tanpa perlu ada kepercayaan dari pihak mana pun yang terlibat terhadap pihak ketiga. ### Lengkap secara Turing {#turing-complete} -Konsep yang dinamai dari ahli matematika dan ilmuwan komputer Inggris, Alan Turing- sebuah sistem aturan manipulasi data (seperti rangkaian instruksi komputer, bahasa pemrograman, atau otomat seluler) dianggap "lengkap secara Turing" atau "universal secara komputasional" jika bisa digunakan untuk mensimulasikan mesin Turing mana pun. +Sebuah konsep yang dinamai menurut nama matematikawan dan ilmuwan komputer Inggris, Alan Turing - sebuah sistem aturan manipulasi data (seperti set instruksi komputer, bahasa pemrograman, atau automaton seluler) akan disebut sebagai "Lengkap secara Turing" atau "universal secara komputasi" jika sistem tersebut dapat digunakan untuk menyimulasikan setiap mesin Turing. @@ -845,7 +1025,7 @@ Konsep yang dinamai dari ahli matematika dan ilmuwan komputer Inggris, Alan Turi ### validator {#validator} -[Node](#node) dalam sistem [bukti taruhan](#pos) yang bertanggung jawab untuk menyimpan data, memproses transaksi, dan menambahkan blok baru ke blockchain. Untuk mengaktifkan perangkat lunak validator, Anda harus [menaruhkan](#staking) 32 ETH. +[Simpul](#node) dalam sistem [bukti taruhan](#pos) yang bertanggung jawab untuk menyimpan data, memproses transaksi, dan menambahkan blok baru ke rantai blok. Untuk mengaktifkan perangkat lunak validator, Anda harus dapat memberi [taruhan](#staking) 32 ETH. Bukti taruhan @@ -854,17 +1034,27 @@ Konsep yang dinamai dari ahli matematika dan ilmuwan komputer Inggris, Alan Turi Penaruhan di Ethereum -### Bukti validitas {#validity-proof} +### siklus hidup validator {#validator-lifecycle} + +Urutan keadaan yang dapat dialami oleh validator. Berbagai keadaan ini termasuk: + +- disetorkan: Setidaknya 32 ETH telah disetorkan ke [kontrak deposit](#deposit-contract) oleh validator +- ditunda: validator berada dalam antrean aktivasi menunggu untuk dipilih ke dalam jaringan oleh validator yang telah ada +- aktif: saat ini sedang membuktikan dan mengajukan blok +- Pemotongan: validator berperilaku buruk dan sedang dipotong +- keluar: validator telah ditandai untuk keluar dari jaringan, baik secara sukarela atau karena telah dikeluarkan. + +### bukti validitas {#validity-proof} -Model keamanan untuk solusi [lapisan 2](#layer-2) tertentu di mana, untuk meningkatkan kecepatan, transaksi di-[roll up](/#rollups) ke dalam kelompok dan dikirimkan ke Ethereum dalam transaksi tunggal. Komputasi transaksi dijalankan secara off-chain dan kemudian disediakan ke dalam rantai utama dengan bukti validitasnya. Metode ini meningkatkan kemungkinan jumlah transaksi sekaligus mempertahankan keamanan. Beberapa [rollup](#rollups) menggunakan [bukti penipuan](#fraud-proof). +Model keamanan untuk solusi [lapisan ke-2](#layer-2) tertentu di mana, untuk meningkatkan kecepatan, transaksi di-[roll up](/#rollups) ke dalam kelompok dan dikirimkan ke Ethereum dalam transaksi tunggal. Komputasi transaksi dilakukan di luar rantai dan kemudian dipasok ke rantai utama dengan bukti validitasnya. Metode ini meningkatkan kemungkinan jumlah transaksi sekaligus mempertahankan keamanan. Beberapa [rollup](#rollups) menggunakan [bukti penipuan](#fraud-proof). Rollup zero-knowledge -### Validium {#validium} +### validium {#validium} -Solusi off-chain yang menggunakan [bukti validitas](#validity-proof) untuk meningkatkan keluaran transaksi. Tidak seperti [Rollup zero-knowledge](#zk-rollup), data Validium tidak disimpan pada [Jaringan Utama](#mainnet) lapisan 1. +Solusi di luar rantai yang menggunakan [bukti validitas](#validity-proof) untuk meningkatkan keluaran transaksi. Berbeda dengan [Rollup tanpa pengetahuan](#zk-rollup), data validium tidak disimpan di lapisan 1 [Jaringan Utama](#mainnet). Validium @@ -872,7 +1062,7 @@ Solusi off-chain yang menggunakan [bukti validitas](#validity-proof) untuk menin ### Vyper {#vyper} -Bahasa pemrograman tingkat tinggi dengan sintaksis seperti Phyton. Ditujukan untuk mengenal bahasa fungsional yang lebih murni. Dibuat oleh Vitalik Buterin. +Bahasa pemrograman tingkat tinggi dengan sintaksis seperti Phyton. Dimaksudkan agar lebih mendekati bahasa fungsional murni. Diciptakan oleh Vitalik Buterin. Vyper @@ -884,7 +1074,7 @@ Bahasa pemrograman tingkat tinggi dengan sintaksis seperti Phyton. Ditujukan unt ### dompet {#wallet} -Perangkat lunak yang berisi [kunci privat](#private-key). Digunakan untuk mengakses dan mengontrol [akun](#account) Ethereum dan berinteraksi dengan [kontrak pintar](#smart-contract). Kunci tidak perlu disimpan dalam dompet, dan bisa didapatkan dari penyimpanan luring (yaitu, kartu memori atau kertas) agar lebih aman. Terlepas dari namanya, dompet tidak pernah menyimpan koin atau token sebenarnya. +Perangkat lunak yang menyimpan [kunci pribadi](#private-key). Digunakan untuk mengakses dan mengontrol [akun](#account) Ethereum dan berinteraksi dengan [kontrak pintar](#smart-contract). Kunci tidak perlu disimpan dalam dompet, dan sebagai gantinya dapat diambil dari penyimpanan offline (yaitu, kartu memori atau kertas) untuk meningkatkan keamanan. Berlawanan dengan namanya, dompet tidak pernah menyimpan koin atau token aktual. Dompet Ethereum @@ -892,7 +1082,7 @@ Perangkat lunak yang berisi [kunci privat](#private-key). Digunakan untuk mengak ### Web3 {#web3} -Versi ketiga web. Pertama kali diusulkan oleh Dr. Gavin Wood, Web3 mewakili visi dan fokus baru untuk aplikasi web- dari aplikasi yang dimiliki dan dikelola secara terpusat, ke aplikasi yang dibangun pada protokol terdesentralisasi (lihat [Dapp](#dapp)). +Versi ketiga web. Pertama kali diusulkan oleh Dr. Gavin Wood, Web3 melambangkan visi dan fokus baru untuk aplikasi web - dari aplikasi yang dimiliki dan dikelola secara terpusat menjadi aplikasi yang dibangun di atas protokol terdesentralisasi (lihat [dapp](#dapp)). Web2 vs Web3 @@ -908,34 +1098,34 @@ Denominasi terkecil dari [ether](#ether). 1018 wei = 1 ether. ### alamat kosong {#zero-address} -Alamat Ethereum spesial, tidak berisi sama sekali, yang dikhususkan sebagai alamat tujuan dari [transaksi pembuatan kontrak](#contract-creation-transaction). +Alamat Ethereum, yang seluruhnya terdiri dari angka nol, yang sering digunakan sebagai alamat untuk menghapus token dari sirkulasi token yang ada pemiliknya. Perbedaan dibuat antara token yang secara resmi dihapus dari indeks kontrak pintar melalui metode burn() dan token yang dikirim ke alamat ini. -### Bukti zero-knowledge {#zk-proof} +### bukti tanpa pengetahuan {#zk-proof} -Bukti zero-knowledge adalah metode kriptografik yang memungkinkan seorang individu untuk membuktikan bahwa sebuah pernyataan adalah benar tanpa menyampaikan informasi tambahan. +Bukti tanpa pengetahuan adalah metode kriptografi yang memungkinkan individu membuktikan bahwa suatu pernyataan adalah benar tanpa menyampaikan informasi tambahan apa pun. Rollup zero-knowledge -### Rollup zero-knowledge {#zk-rollup} +### rollup tanpa pengetahuan {#zk-rollup} -[Rollup](#rollups) transaksi yang menggunakan [bukti validitas](#validity-proof) untuk menawarkan keluaran transaksi [lapisan 2](#layer-2) yang ditingkatkan, sementara menggunakan keamanan yang disediakan oleh [Jaringan Utama](#mainnet) (lapisan 1). Sekalipun rollup ini tidak bisa menangani jenis transaksi rumit, seperti [Rollup optimistic](#optimistic-rollups), rollup ini tidak memiliki masalah latensi karena transaksi terbukti valid saat dikirimkan. +[Penggabungan](#rollups) transaksi yang menggunakan [bukti validitas](#validity-proof) untuk menawarkan peningkatan keluaran transaksi [lapisan ke-2](#layer-2) sambil menggunakan keamanan yang disediakan oleh [Jaringan Utama](#mainnet) (lapisan ke-1). Sekalipun rollup ini tidak bisa menangani jenis transaksi rumit, seperti [Rollup optimis](#optimistic-rollups), rollup ini tidak memiliki masalah latensi karena transaksi terbukti valid saat dikirimkan. - Rollup Zero-knowledge + Rollup tanpa pengetahuan ## Sumber {#sources} -_Disediakan dalam bagian melalui [Menguasai Ethereum](https://github.com/ethereumbook/ethereumbook) oleh [Andreas M. Antonopoulos, Gavin Wood](https://ethereumbook.info) di bawah CC-BY-SA_ +_Disediakan sebagian melalui [Menguasai Ethereum](https://github.com/ethereumbook/ethereumbook) oleh [Andreas M. Antonopoulos, Gavin Wood](https://ethereumbook.info) di bawah CC-BY-SA_ ## Berkontribusi untuk halaman ini {#contribute-to-this-page} -Apakah kami melewatkan sesuatu? Apakah ada yang salah? Bantu kami meningkatkannya dengan berkontribusi untuk glosarium ini di GitHub! +Apakah kami melewatkan sesuatu? Apakah ada yang salah? Bantu kami meningkatkan diri dengan berkontribusi kepada glosarium di GitHub! -[Pelajari lebih lanjut tentang cara berkontribusi](/contributing/adding-glossary-terms) +[Pelajari selengkapnya tentang cara berkontribusi](/contributing/adding-glossary-terms) diff --git a/src/content/translations/id/guides/how-to-create-an-ethereum-account/index.md b/src/content/translations/id/guides/how-to-create-an-ethereum-account/index.md new file mode 100644 index 00000000000..8f2c51d28b8 --- /dev/null +++ b/src/content/translations/id/guides/how-to-create-an-ethereum-account/index.md @@ -0,0 +1,72 @@ +--- +title: Cara "membuat" akun Ethereum +description: Panduan langkah demi langkah membuat akun Ethereum menggunakan dompet. +lang: id +--- + +# Cara membuat akun Ethereum + +Siapa pun dapat membuat akun Ethereum kapan saja, secara gratis. Ada beberapa cara, tetapi cara yang paling mudah dan umum adalah dengan menggunakan aplikasi yang dikenal sebagai dompet. Dompet menciptakan dan mengamankan kunci yang memungkinkan Anda menggunakan Ethereum. Anda dapat menggunakan dompet untuk mengirim transaksi, memeriksa saldo token, dan terhubung ke aplikasi yang dibangun di atas Ethereum, seperti pertukaran token, game, pasar NFT, dan lainnya. Beberapa aplikasi "web2" sekarang juga memungkinkan Anda masuk dengan menggunakan Ethereum. + +Berbeda dengan membuka akun baru dengan perusahaan, membuat akun Ethereum dilakukan secara bebas, pribadi, dan tanpa memerlukan izin. Akun dikontrol menggunakan kunci dari perangkat lunak dompet yang Anda buat, tidak dikeluarkan oleh pihak ketiga atau disimpan secara terpusat. + +## Langkah 1: Pilih dompet + +Dompet adalah aplikasi yang membantu Anda mengelola akun Ethereum Anda. Dompet menggunakan kunci Anda untuk mengirim dan menerima transaksi serta masuk ke aplikasi. Ada banyak jenis dompet yang dapat dipilih - seluler, desktop, atau ekstensi browser. + + + Temukan dompet + + +Jika Anda baru, Anda dapat memilih filter "Baru dalam kripto" pada halaman "cari dompet" untuk mengidentifikasi dompet yang seharusnya mencakup semua fitur yang diperlukan dan cocok untuk pemula. + +![pemilihan filter di halaman 'cari dompet'](./wallet-box.png) + +Ada juga filter profil lain untuk memenuhi kebutuhan Anda. Ini contoh-contoh dompet yang sering digunakan - Anda sebaiknya melakukan penelitian sendiri sebelum mempercayai perangkat lunak apa pun. + +## Langkah 2: Unduh dan instal aplikasi dompet Anda + +Setelah Anda memilih dompet, buka situs web resmi mereka atau app store kemudian unduh dan instal. Semuanya gratis. + +## Langkah 3: Buka aplikasi dan buat atau impor akun Ethereum Anda + +Ketika pertama kali membuka aplikasi dompet yang baru, Anda akan diminta untuk memilih membuat akun baru atau mengimpor akun yang sudah ada. Klik pembuatan akun baru. + +## Langkah 4: Simpan frasa pemulihan Anda + +Beberapa aplikasi akan meminta Anda untuk menyimpan 'frase benih' rahasia (Anda juga mungkin melihat ini disebut sebagai "frasa pemulihan" atau "mnemonik"). Menjaga frase benih ini tetap aman sangat penting! Frase benih digunakan untuk menghasilkan kunci rahasia untuk sebuah akun yang dapat digunakan untuk menandatangani dan mengirim transaksi. Setiap orang yang mengetahui frase benih dapat mengambil alih kendali atas semua akun yang dihasilkannya. Jangan pernah berbagi frase benih dengan siapa pun. Frase benih harus terdiri dari 12 hingga 24 kata yang dihasilkan secara acak (urutan kata-kata penting). + +Setelah Anda menyimpan frase benih, Anda seharusnya dapat melihat dasbor dompet beserta saldo Anda. Lihat panduan kami: [cara menggunakan dompet.](/guides/how-to-use-a-wallet) + +
    + + +
    Ingin mempelajari selengkapnya?
    + + Lihat panduan lainnya + +
    + +## Pertanyaan yang sering diajukan + +### Apakah dompet dan akun Ethereum saya itu sama? + +Tidak. Dompet adalah alat pengelolaan yang membantu Anda mengelola akun. Satu dompet mungkin memberikan akses ke beberapa akun, dan satu akun dapat diakses oleh beberapa dompet. Frase benih digunakan untuk membuat akun yang kemudian dikendalikan oleh dompet. + +Anda dapat menganggap akun-akun itu seperti daun-daun pada pohon yang semuanya 'tumbuh' dari satu frase benih. Setiap frasa benih unik akan menumbuhkan pohon akun yang benar-benar berbeda. + +### Apakah saya bisa mengirimkan bitcoin ke alamat Ethereum, atau ether ke alamat Bitcoin? + +Tidak, Anda tidak bisa. Bitcoin dan ether ada di dua jaringan terpisah (yaitu, rantai blok yang berbeda), masing-masing dengan model pencatatan dan format alamatnya sendiri. Telah ada berbagai upaya untuk menghubungkan kedua jaringan yang berbeda tersebut, di antaranya yang paling aktif saat ini adalah [Wrapped Bitcoin atau WBTC](https://www.bitcoin.com/get-started/what-is-wbtc/). Ini bukan merupakan dukungan, karena WBTC adalah solusi kustodial (berarti sekelompok orang mengendalikan beberapa fungsi kritis) dan disediakan di sini hanya untuk tujuan informasi. + +### Jika saya memiliki alamat ETH, apakah akan sama di rantai blok yang lain? + +Anda dapat menggunakan alamat yang sama di semua rantai blok yang menggunakan perangkat lunak dasar yang serupa dengan Ethereum (dikenal sebagai 'kompatibel dengan EVM'). [Daftar](https://chainlist.org/) berikut ini memperlihatkan bagaimana cara menggunakan rantai blok dengan alamat yang sama. Beberapa rantai blok seperti Bitcoin, menerapkan peraturan pada jaringan yang terpisah dan Anda akan membutuhkan alamat yang berbeda dengan format yang berbeda pula. Jika Anda memiliki dompet kontrak pintar, maka Anda dapat melihat situs web produknya untuk mendapatkan informasi lebih lanjut mengenai rantai blok yang didukung olehnya. + +### Apakah memiliki dompet sendiri lebih aman dibandingkan dengan menyimpan dana di bursa? + +Mempunyai dompet sendiri berarti Anda bertanggung jawab atas keamanan aset Anda. Sayangnya, ada banyak contoh bursa yang gagal dan kehilangan uang pelanggan mereka. Memiliki dompet (dengan frase benih) menghilangkan risiko yang terkait dengan mempercayai entitas tertentu untuk menyimpan aset Anda. Namun, Anda harus mengamankan kunci Anda sendiri dan menghindari penipuan phishing, secara tidak sengaja menyetujui transaksi atau mengungkapkan kunci, berinteraksi dengan situs web palsu, dan risiko penyimpanan sendiri lainnya. Risiko dan manfaatnya berbeda. + +### Jika saya kehilangan dompet seluler/perangkat keras, apakah saya perlu menggunakan aplikasi dompet yang sama lagi untuk memulihkan akun yang hilang? + +Tidak, Anda dapat menggunakan dompet yang berbeda. Selama memiliki frase benih, Anda dapat memasukkannya ke sebagian besar dompet dan mereka akan mengembalikan akun Anda. Berhati-hatilah jika Anda perlu melakukannya: yang terbaik adalah memastikan Anda tidak terhubung ke internet saat memulihkan dompet agar frase benih Anda tidak bocor secara tidak sengaja. Sering kali tidak mungkin memulihkan dana yang hilang tanpa frase benih. diff --git a/src/content/translations/id/guides/how-to-id-scam-tokens/index.md b/src/content/translations/id/guides/how-to-id-scam-tokens/index.md new file mode 100644 index 00000000000..1eb547ceecb --- /dev/null +++ b/src/content/translations/id/guides/how-to-id-scam-tokens/index.md @@ -0,0 +1,97 @@ +--- +title: Bagaimana cara mengidentifikasi token palsu +description: Memahami token palsu, bagaimana mereka membuat diri terlihat sah, dan cara menghindarinya. +lang: id +--- + +# Bagaimana cara mengidentifikasi token palsu {#identify-scam-tokens} + +Salah satu kegunaan paling umum dari Ethereum untuk suatu grup adalah membuat token yang dapat dipertukarkan, dalam pengertian sebagai mata uang mereka sendiri. Token-token ini umumnya mengikuti standar [ERC-20](/developers/docs/standards/tokens/erc-20/). Namun, di mana pun ada kasus penggunaan sah yang membawa nilai, juga ada para penjahat yang mencoba mencuri nilai tersebut untuk diri mereka sendiri. + +Ada dua cara di mana mereka kemungkinan akan menipu Anda: + +- **Mengajukan token palsu kepada Anda**, yang mungkin terlihat seperti token sah yang ingin Anda beli, tetapi diterbitkan oleh penipu dan tidak memiliki nilai. +- **Membujuk Anda untuk menandatangani transaksi buruk**, biasanya dengan mengarahkan Anda ke antarmuka pengguna mereka sendiri. Mereka mungkin mencoba membuat Anda memberikan ijin untuk kontrak mereka pada token ERC-20 Anda, mengungkapkan informasi sensitif yang memberikan akses kepada mereka terhadap aset Anda, dan sebagainya. Antarmuka pengguna ini mungkin menjadi tiruan hampir sempurna dari situs yang jujur, tetapi dengan trik tersembunyi. + +Untuk mengilustrasikan apa itu token palsu, dan bagaimana mengidentifikasinya, kita akan melihat contoh salah satunya: [`wARB`](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82). Token ini berusaha terlihat seperti token sah [`ARB`](https://etherscan.io/address/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1). + + + +Arbitrum adalah organisasi yang mengembangkan dan mengelola rollup optimistis. Pada awalnya, Arbitrum diorganisir sebagai perusahaan berorientasi keuntungan, namun kemudian mengambil langkah-langkah untuk mendesentralisasikan. Sebagai bagian dari proses tersebut, mereka menerbitkan token tata kelola yang dapat diperdagangkan. + + + + + +Ada konvensi dalam Ethereum bahwa ketika suatu aset tidak mematuhi standar ERC-20, kita membuat versi "wrapped" darinya dengan nama yang diawali oleh "w". Jadi, sebagai contoh, kita memiliki wBTC untuk bitcoin dan wETH untuk ether. + +Tidak masuk akal untuk membuat versi wrapped dari token ERC-20 yang sudah ada di Ethereum, tetapi penipu mengandalkan tampilan keabsahan daripada realitas yang mendasarinya. + + + +## Bagaimana cara kerja token palsu? {#how-do-scam-tokens-work} + +Inti dari Ethereum adalah desentralisasi. Ini berarti tidak ada otoritas pusat yang dapat menyita aset Anda atau mencegah Anda melakukan penyebaran kontrak pintar. Namun, ini juga berarti bahwa penipu dapat menyebarluaskan kontrak pintar apa pun yang mereka inginkan. + + + +Kontrak pintar adalah program-program yang berjalan di atas rantai blok Ethereum. Setiap token ERC-20, misalnya, diimplementasikan sebagai kontrak pintar. + + + +Secara khusus, Arbitrum telah menyebarkan kontrak yang menggunakan simbol `ARB`. Namun, hal itu tidak menghentikan orang lain untuk juga menyebarkan kontrak yang menggunakan simbol yang sama persis, atau serupa. Siapa pun yang menulis kontrak memiliki kuasa untuk menentukan apa yang akan dilakukan oleh kontrak tersebut. + +## Terlihat sah {#appearing-legitimate} + +Terdapat beberapa trik yang dilakukan oleh pencipta token palsu untuk terlihat sah. + +- **Nama dan simbol yang sah**. Seperti yang disebut sebelumnya, kontrak ERC-20 dapat memiliki simbol dan nama yang sama dengan kontrak ERC-20 lainnya. Anda tidak bisa mengandalkan bidang-bidang tersebut untuk keamanan. + +- **Pemilik sah**. Token palsu seringkali mengirimkan sejumlah saldo besar secara tiba-tiba ke alamat-alamat yang bisa diharapkan sebagai pemegang sah dari token yang sebenarnya. + + Sebagai contoh, mari kita lihat lagi `wARB`. [Tentang 16% dari token-token tersebut](https://etherscan.io/token/0xb047c8032b99841713b8e3872f06cf32beb27b82?a=0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f) dipegang oleh sebuah alamat yang tag publiknya adalah [Arbitrum Foundation: Deployer](https://etherscan.io/address/0x1c8db745abe3c8162119b9ef2c13864cd1fdd72f). Ini _bukan_ alamat palsu, ini benar-benar adalah alamat yang [mendeploy kontrak ARB asli di Jaringan Utama Ethereum](https://etherscan.io/tx/0x242b50ab4fe9896cb0439cfe6e2321d23feede7eeceb31aa2dbb46fc06ed2670). + + Karena saldo ERC-20 dari suatu alamat adalah bagian dari penyimpanan kontrak ERC-20, kontrak dapat menentukannya sesuai dengan keinginan pengembang kontrak. Juga mungkin bagi suatu kontrak untuk melarang transfer sehingga pengguna sah tidak akan dapat menghilangkan token palsu tersebut. + +- **Transfer sah**. _Pemilik sah tidak akan membayar untuk mentransfer token palsu kepada orang lain, jadi jika ada transfer, itu pasti sah, bukan?_ **Salah**. Aksi `Transfer` dihasilkan oleh kontrak ERC-20. Seorang penipu dengan mudah dapat menulis kontrak sedemikian rupa sehingga akan menghasilkan tindakan-tindakan tersebut. + +## Situs web penipuan {#websites} + +Penipu juga dapat membuat situs web yang sangat meyakinkan, kadang-kadang bahkan klon presisi dari situs asli dengan UI yang identik, tetapi dengan trik-trik yang halus. Contohnya mungkin adalah tautan eksternal yang tampak sah, namun sebenarnya mengarahkan pengguna ke situs penipuan eksternal, atau instruksi yang salah yang membimbing pengguna untuk mengungkapkan kunci mereka atau mengirim dana ke alamat penyerang. + +Praktik terbaik untuk menghindari ini adalah dengan cermat memeriksa URL situs yang Anda kunjungi, dan menyimpan alamat situs otentik yang dikenal dalam daftar bookmark Anda. Kemudian, Anda dapat mengakses situs asli melalui daftar bookmark Anda tanpa secara tidak sengaja membuat kesalahan ejaan atau bergantung pada tautan eksternal. + +## Bagaimana Anda bisa melindungi diri? {#protect-yourself} + +1. **Periksa alamat kontrak**. Token sah berasal dari organisasi yang sah, dan Anda dapat melihat alamat kontrak di situs web organisasi tersebut. Sebagai contoh, [untuk `ARB` Anda dapat melihat alamat sahnya di sini](https://docs.arbitrum.foundation/deployment-addresses#token). + +2. **Token-token nyata memiliki likuiditas**. Pilihan lainnya adalah melihat ukuran kolam likuiditas di [Uniswap](https://uniswap.org/), salah satu protokol pertukaran token yang paling umum digunakan. Protokol ini bekerja dengan menggunakan kolam likuiditas, di mana para investor mendepositkan token-token mereka dengan harapan mendapatkan pengembalian dari biaya perdagangan. + +Token palsu umumnya memiliki kolam likuiditas yang sangat kecil, jika ada, karena para penipu tidak ingin mengambil risiko atas aset nyata. Sebagai contoh, kolam Uniswap `ARB`/`ETH` memiliki sekitar satu juta dolar ([lihat di sini untuk nilai terbaru](https://info.uniswap.org/#/pools/0x755e5a186f0469583bd2e80d1216e02ab88ec6ca)) dan membeli atau menjual sejumlah kecil tidak akan mengubah harga: + +![Membeli token yang sah](./uniswap-real.png) + +Namun, saat Anda mencoba membeli token palsu `wARB`, bahkan pembelian kecil akan mengubah harga lebih dari 90%: + +![Membeli token palsu](./uniswap-scam.png) + +Ini adalah bukti lain yang menunjukkan bahwa `wARB` kemungkinan bukanlah token yang sah. + +3. **Cari di Etherscan**. Banyak token palsu sudah diidentifikasi dan dilaporkan oleh komunitas. Token-token seperti itu [dicatat di Etherscan](https://info.etherscan.com/etherscan-token-reputation/). Meskipun Etherscan bukan sumber otoritatif kebenaran (ini adalah sifat jaringan terdesentralisasi bahwa tidak bisa ada sumber otoritatif untuk keabsahan), token-token yang diidentifikasi oleh Etherscan sebagai penipuan kemungkinan besar adalah penipuan. + + ![Token palsu di Etherscan](./etherscan-scam.png) + +## Kesimpulan {#conclusion} + +Selama masih ada nilai di dunia, akan selalu ada penipu yang mencoba mencurinya untuk diri mereka sendiri, dan dalam dunia terdesentralisasi, tidak ada yang melindungi Anda kecuali diri Anda sendiri. Semoga Anda ingat poin-poin ini untuk membantu membedakan token sah dari penipuan: + +- Token palsu berpura-pura menjadi token sah, mereka dapat menggunakan nama, simbol, dan sebagainya yang sama. +- Token palsu _tidak dapat_ menggunakan akun kontrak yang sama. +- Sumber terbaik untuk alamat token sah adalah organisasi yang memiliki token tersebut. +- Jika tidak berhasil, Anda dapat menggunakan aplikasi-aplikasi populer dan terpercaya seperti [Uniswap](https://app.uniswap.org/#/swap) dan [Etherscan](https://etherscan.io/). diff --git a/src/content/translations/id/guides/how-to-revoke-token-access/index.md b/src/content/translations/id/guides/how-to-revoke-token-access/index.md new file mode 100644 index 00000000000..ed5ad728c59 --- /dev/null +++ b/src/content/translations/id/guides/how-to-revoke-token-access/index.md @@ -0,0 +1,73 @@ +--- +title: Cara mencabut akses smart contract ke dana kripto anda +description: Panduan cara mencabut akses token kontrak pintar yang eksploitatif +lang: id +--- + +# Cara mencabut akses smart contract ke dana kripto anda + +Panduan ini akan mengajarkan Anda cara melihat daftar semua kontrak pintar yang sudah Anda izinkan untuk mengakses dana Anda dan cara membatalkannya. + +Terkadang pengembang jahat membangun pintu belakang ke dalam kontrak pintar yang memungkinkan akses ke dana pengguna yang tidak sadar yang berinteraksi dengan kontrak pintar. Yang sering terjadi adalah platform semacam itu meminta izin kepada pengguna untuk membelanjakan **jumlah token yang tidak terbatas** dalam upaya untuk menghemat sejumlah kecil gas di masa depan, tetapi hal ini memiliki risiko yang lebih besar. + +Setelah sebuah platform memiliki hak akses tak terbatas ke token di dompet Anda, mereka dapat membelanjakan semua token tersebut meskipun Anda telah menarik dana Anda dari platform mereka ke dalam dompet Anda. Pelaku kejahatan masih dapat mengakses dana Anda dan menariknya ke dalam dompet mereka tanpa ada opsi pemulihan untuk Anda. + +Satu-satunya perlindungan adalah menahan diri untuk tidak menggunakan proyek baru yang belum teruji, hanya menyetujui apa yang Anda perlukan, atau secara teratur mencabut akses. Jadi, bagaimana Anda melakukannya? + +## Langkah 1: Gunakan perangkat pencabutan akses + +Beberapa situs web memungkinkan Anda untuk melihat dan mencabut kontrak pintar yang terhubung ke alamat Anda. Kunjungi situs web dan hubungkan dompet Anda: + +- [Ethallowance](https://ethallowance.com/) (Ethereum) +- [Etherscan](https://etherscan.io/tokenapprovalchecker) (Ethereum) +- [Cointool](https://cointool.app/approve/eth) (beberapa jaringan) +- [Pencabutan](https://revoke.cash/) (beberapa jaringan) +- [Unrekt](https://app.unrekt.net/) (beberapa jaringan) +- [EverRevoke](https://everrise.com/everrevoke/) (beberapa jaringan) + +## Langkah 2: Hubungkan dompet Anda + +Setelah Anda berada di situs web, klik "Hubungkan dompet". Situs web akan meminta Anda untuk menghubungkan dompet. + +Pastikan Anda menggunakan jaringan yang sama di dompet dan situs web Anda. Anda hanya akan melihat kontrak pintar yang terkait dengan jaringan yang dipilih. Sebagai contoh, jika Anda terhubung ke Jaringan Utama Ethereum, Anda hanya akan melihat kontrak Ethereum, bukan kontrak dari rantai lain seperti Polygon. + +## Langkah 3: Pilih kontrak pintar yang ingin Anda cabut + +Anda harus melihat semua kontrak yang diizinkan mengakses token Anda dan batas pengeluarannya. Temukan yang ingin Anda hentikan. + +Jika Anda tidak tahu kontrak mana yang harus dipilih, Anda dapat mencabut semuanya. Ini tidak akan menimbulkan masalah bagi Anda, tetapi Anda harus memberikan serangkaian izin baru saat berikutnya Anda berinteraksi dengan salah satu kontrak ini. + +## Langkah 4: Cabut akses ke dana Anda + +Setelah mengklik cabut, Anda akan melihat saran transaksi baru di dompet Anda. Hal ini sudah bisa diduga. Anda harus membayar biaya agar pembatalan berhasil. Tergantung pada jaringan, hal ini dapat memakan waktu dari satu menit hingga beberapa menit untuk diproses. + +Kami menyarankan Anda untuk menyegarkan alat pencabutan setelah beberapa menit dan menghubungkan dompet Anda lagi untuk memeriksa apakah kontrak yang dicabut sudah hilang dari daftar. + +Kami menyarankan Anda untuk tidak pernah mengizinkan proyek memiliki akses tanpa batas ke token Anda dan mencabut semua akses token secara teratur. Mencabut akses token tidak akan pernah mengakibatkan hilangnya dana, terutama jika Anda menggunakan perangkat yang tercantum di atas. + +
    + + +
    Ingin mempelajari selengkapnya?
    + + Lihat panduan lainnya + +
    + +## Pertanyaan yang sering diajukan + +### Apakah mencabut akses token juga menghentikan penaruhang, pooling, pemberian pinjaman, dll? + +Tidak, ini tidak akan memengaruhi strategi DeFi Anda. Anda akan tetap berada di posisi Anda dan terus mendapatkan hadiah, dll. + +### Apakah memutuskan dompet dari sebuah proyek sama dengan menghapus izin untuk menggunakan dana saya? + +Tidak, jika Anda memutuskan dompet dari proyek, tetapi Anda telah memberikan izin pemberian token, mereka masih dapat menggunakan token tersebut. Anda perlu mencabut akses tersebut. + +### Kapan izin kontrak akan berakhir? + +Tidak ada tanggal kedaluwarsa pada izin kontrak. Jika Anda memberikan izin kontrak, izin tersebut dapat digunakan, bahkan bertahun-tahun setelah diberikan. + +### Mengapa proyek menetapkan jatah token tidak terbatas? + +Proyek sering kali melakukan hal ini untuk meminimalkan jumlah permintaan yang diperlukan, yang berarti pengguna hanya perlu menyetujui satu kali dan membayar biaya transaksi satu kali saja. Meskipun nyaman, hal ini bisa berbahaya bagi pengguna untuk menyetujui secara sembarangan, pada situs yang tidak terbukti dengan waktu atau diaudit. Beberapa dompet memungkinkan Anda untuk membatasi jumlah token yang disetujui secara manual untuk membatasi risiko Anda. Tanyakan penyedia dompet Anda untuk informasi lebih lanjut. diff --git a/src/content/translations/id/guides/how-to-swap-tokens/index.md b/src/content/translations/id/guides/how-to-swap-tokens/index.md new file mode 100644 index 00000000000..79dfc42d47e --- /dev/null +++ b/src/content/translations/id/guides/how-to-swap-tokens/index.md @@ -0,0 +1,67 @@ +--- +title: Cara menukar token +description: Panduan tentang cara menukar token di Ethereum. +lang: id +--- + +# Cara menukar token + +Apakah Anda lelah mencari bursa yang mencantumkan semua token favorit Anda? Anda dapat menukar sebagian besar token menggunakan bursa terdesentralisasi. + +Penukaran token melibatkan pertukaran dua aset berbeda yang ada di jaringan Ethereum, misalnya menukar ETH dengan DAI (token ERC-20). Prosesnya sangat cepat dan murah. Anda harus memiliki dompet kripto untuk menukar token. + +**Prasyarat:** + +- jika Anda memiliki dompet kripto, Anda dapat mengikuti tutorial ini: [Cara: "Mendaftarkan" akun Ethereum](/guides/how-to-register-an-ethereum-account/) +- menambahkan dana ke dompet Anda + +## 1. Hubungkan dompet Anda ke bursa terdesentralisasi (DEX) pilihan Anda + +Beberapa bursa yang populer adalah: + +- [Uniswap](https://app.uniswap.org/#/swap) +- [Sushiswap](https://www.sushi.com/swap) +- [1Inch](https://app.1inch.io/#/1/unified/swap/ETH/DAI) +- [Curve](https://curve.fi/#/ethereum/swap) + +Jika Anda ingin mempelajari lebih lanjut tentang apa itu DeFi dan bagaimana cara kerja bursa jenis baru ini, kami dapat merekomendasikan [Pustaka Kernel](https://library.kernel.community/Topic+-+DeFi/Topic+-+DeFi). + +## 2. Pilih pasangan token yang ingin Anda tukarkan + +Misalnya, ETH dan DAI. Pastikan Anda memiliki dana di salah satu dari dua token tersebut. ![Antarmuka umum untuk pertukaran](./swap1.png) + +## 3. Masukkan jumlah token yang ingin Anda perdagangkan dan klik tukar + +Bursa akan secara otomatis menghitung berapa banyak token yang akan Anda dapatkan. + +![Antarmuka umum untuk pertukaran](./swap2.png) + +## 4. Konfirmasi transaksi + +Tinjau detail transaksi. Periksa nilai tukar dan biaya lainnya untuk mencegah kejutan yang tidak diinginkan. + +![Antarmuka umum untuk meninjau transaksi](./swap3.png) + +## 5. Tunggu hingga transaksi diproses + +Anda bisa melihat perkembangan transaksi di penjelajah rantai blok mana pun. Proses ini seharusnya tidak memakan waktu lebih dari 10 menit. + +Anda akan secara otomatis menerima token yang ditukar di dompet Anda setelah transaksi diproses. +
    + + +
    Ingin mempelajari selengkapnya?
    + + Lihat panduan lainnya + +
    + +## Pertanyaan yang sering diajukan + +### Dapatkah saya menukar ETH dengan BTC dari dompet saya? + +Tidak, Anda hanya bisa menukar token yang berasal dari jaringan Ethereum, seperti ETH, token ERC-20, atau NFT. Anda hanya bisa menukar bentuk "terbungkus" Bitcoin yang ada di Ethereum. + +### Apa yang dimaksud dengan slippage? + +Ini adalah selisih antara nilai tukar yang Anda harapkan dan nilai tukar yang sebenarnya. diff --git a/src/content/translations/id/guides/how-to-use-a-bridge/index.md b/src/content/translations/id/guides/how-to-use-a-bridge/index.md new file mode 100644 index 00000000000..28884c52a5a --- /dev/null +++ b/src/content/translations/id/guides/how-to-use-a-bridge/index.md @@ -0,0 +1,70 @@ +--- +title: Cara bridge token ke layer 2 +description: Panduan yang menjelaskan cara memindahkan token dari Ethereum ke lapisan ke-2 menggunakan jembatan. +lang: id +--- + +# Cara bridge token ke layer 2 + +Jika ada banyak lalu lintas di Ethereum, itu bisa menjadi mahal. Salah satu solusi untuk hal ini adalah dengan membuat "lapisan" baru: yaitu jaringan yang berbeda yang beroperasi dengan cara yang serupa dengan Ethereum itu sendiri. Lapisan ke-2 ini membantu mengurangi kemacetan dan biaya di Ethereum dengan memroses lebih banyak transaksi dengan biaya yang lebih rendah, dan hanya menyimpan hasilnya di Ethereum sesering mungkin. Dengan demikian, lapisan ke-2 ini memungkinkan kita untuk bertransaksi dengan kecepatan yang lebih tinggi dan biaya yang lebih rendah. Banyak proyek kripto populer yang berpindah ke lapisan ke-2 karena keuntungan-keuntungan ini. Cara paling sederhana untuk memindahkan token dari Ethereum ke lapisan ke-2 adalah dengan menggunakan jembatan. + +**Prasyarat:** + +- jika Anda memiliki dompet kripto, Anda dapat mengikuti tutorial ini: [Cara: "Mendaftarkan" akun Ethereum](/guides/how-to-register-an-ethereum-account/) +- menambahkan dana ke dompet Anda + +## 1. Tentukan jaringan lapisan ke-2 mana yang ingin Anda gunakan + +Anda dapat mempelajari lebih lanjut tentang berbagai proyek dan tautan penting di halaman [lapisan ke-2](/layer-2/). + +## 2. Buka jembatan yang dipilih + +Beberapa lapisan ke-2 yang populer adalah: + +- [Jembatan Arbitrum](https://bridge.arbitrum.io/?l2ChainId=42161) +- [Jembatan Optimism](https://app.optimism.io/bridge/deposit) +- [Jembatan Boba network](https://gateway.boba.network/) + +## 3. Hubungkan ke jembatan dengan dompet Anda + +Pastikan dompet Anda terhubung ke jaringan Jaringan Utama Ethereum. Jika tidak, situs web akan secara otomatis meminta Anda untuk berpindah jaringan. + +![Antarmuka umum untuk menjembatani token](./bridge1.png) + +## 4. Tentukan jumlah dan pindahkan dana + +Tinjau jumlah yang akan Anda dapatkan sebagai imbalan pada jaringan lapisan ke-2 dan biayanya untuk menghindari kejutan yang tidak menyenangkan. + +![Antarmuka umum untuk menjembatani token](./bridge2.png) + +## 5. Konfirmasikan transaksi di dompet Anda + +Anda harus membayar biaya dalam bentuk ETH untuk memproses transaksi. + +![Antarmuka umum untuk menjembatani token](./bridge3.png) + +## 6. Tunggu hingga dana Anda dipindahkan + +Proses ini seharusnya tidak memakan waktu lebih dari 10 menit. + +## 7. Tambahkan jaringan lapisan ke-2 yang dipilih ke dompet Anda (opsional) + +Anda dapat menggunakan [chainlist.org](http://chainlist.org) untuk menemukan detail RPC jaringan. Setelah jaringan ditambahkan dan transaksi selesai, Anda akan melihat token di dompet Anda. +
    + + +
    Ingin mempelajari selengkapnya?
    + + Lihat panduan lainnya + +
    + +## Pertanyaan yang sering diajukan + +### Bagaimana jika saya memiliki dana di bursa? + +Anda mungkin dapat menarik ke beberapa layer 2 langsung dari bursa. Lihat bagian "Memindahkan ke lapisan ke-2" pada [halaman Lapisan ke-2](/layer-2/) untuk informasi lebih lanjut. + +### Dapatkah saya kembali ke jaringan utama Ethereum setelah menjembatani token saya ke L2? + +Ya, Anda selalu dapat memindahkan dana kembali ke jaringan utama menggunakan jembatan yang sama. diff --git a/src/content/translations/id/guides/how-to-use-a-wallet/index.md b/src/content/translations/id/guides/how-to-use-a-wallet/index.md new file mode 100644 index 00000000000..ec47acb6910 --- /dev/null +++ b/src/content/translations/id/guides/how-to-use-a-wallet/index.md @@ -0,0 +1,88 @@ +--- +title: Cara menggunakan dompet +description: Panduan yang menjelaskan cara mengirim, menerima token, dan terhubung ke proyek web3. +lang: id +--- + +# Cara menggunakan dompet + +Pelajari cara mengoperasikan semua fungsi dasar dompet. Jika Anda belum memilikinya, lihat [Cara: membuat akun Ethereum](/guides/how-to-create-an-ethereum-account/). + +## Buka dompet Anda + +Anda akan melihat dasbor yang kemungkinan besar akan menampilkan saldo Anda dan berisi tombol untuk mengirim dan menerima token. + +## Menerima mata uang kripto + +Apakah Anda ingin menerima kripto ke dalam dompet Anda? + +Setiap akun Ethereum memiliki alamat penerimanya sendiri yang merupakan urutan angka dan huruf yang unik. Alamat berfungsi seperti nomor rekening bank. Alamat Ethereum akan selalu dimulai dengan "0x". Anda dapat membagikan alamat ini dengan siapa pun: aman untuk melakukannya. + +Alamat Anda sama seperti alamat rumah: Anda harus memberi tahu orang-orang di mana alamat tersebut sehingga mereka dapat menemukan Anda. Hal ini aman untuk dilakukan, karena Anda masih bisa mengunci pintu depan dengan kunci lain yang hanya Anda yang bisa mengendalikannya sehingga tidak ada yang bisa masuk, meskipun mereka tahu tempat tinggal Anda. + +Anda harus memberikan alamat publik kepada siapa pun yang ingin mengirimi Anda uang. Banyak aplikasi dompet yang memungkinkan Anda menyalin alamat atau menampilkan kode QR untuk dipindai agar lebih mudah digunakan. Hindari mengetik alamat Ethereum secara manual. Hal ini dapat dengan mudah menyebabkan kesalahan administrasi dan kehilangan dana. + +Aplikasi yang berbeda mungkin berbeda atau menggunakan bahasa yang berbeda, tetapi akan membawa Anda melalui proses serupa jika Anda mencoba mentransfer dana. + +1. Buka aplikasi dompet Anda. +2. Klik "Terima" (atau opsi dengan kata yang serupa). +3. Salin alamat Ethereum Anda ke clipboard. +4. Berikan alamat Ethereum penerima kepada pengirim. + +## Kirim mata uang kripto + +Apakah Anda ingin mengirim ETH ke dompet lain? + +1. Buka aplikasi dompet Anda. +2. Dapatkan alamat penerima dan pastikan Anda terhubung ke jaringan yang sama dengan penerima. +3. Masukkan alamat penerima atau pindai kode QR dengan kamera Anda sehingga Anda tidak perlu menulis alamat secara manual. +4. Klik tombol "Kirim" di dompet Anda (atau tombol lain yang serupa). + +![Bidang kirim untuk alamat kripto](./send.png) +
    + +5. Banyak aset, seperti DAI atau USDC, ada di beberapa jaringan. Saat mentransfer token kripto, pastikan penerima menggunakan jaringan yang sama dengan Anda, karena token ini tidak dapat dipertukarkan. +6. Pastikan dompet Anda memiliki ETH yang cukup untuk membayar biaya transaksi, yang bervariasi tergantung pada kondisi jaringan. Sebagian besar dompet akan secara otomatis menambahkan biaya yang disarankan ke dalam transaksi yang kemudian dapat Anda konfirmasikan. +7. Setelah transaksi Anda diproses, jumlah kripto yang sesuai akan muncul di akun penerima. Hal ini dapat memakan waktu mulai dari beberapa detik hingga beberapa menit, tergantung pada seberapa banyak jaringan sedang digunakan. + +## Menghubungkan ke proyek + +Alamat Anda akan sama di semua proyek Ethereum. Anda tidak perlu mendaftar secara individual pada proyek apa pun. Setelah Anda memiliki dompet, Anda dapat terhubung ke proyek Ethereum apa pun tanpa informasi tambahan apa pun. Tidak ada email atau informasi pribadi lainnya yang diperlukan. + +1. Kunjungi situs web proyek mana pun. +2. Jika halaman arahan proyek hanya berupa deskripsi statis tentang proyek, Anda seharusnya dapat mengklik tombol "Buka Aplikasi" di menu yang akan menavigasi Anda ke aplikasi web yang sebenarnya. +3. Setelah Anda berada di dalam aplikasi, klik "Hubungkan" + +![Tombol yang memungkinkan pengguna terhubung ke situs web dengan dompet](./connect1.png) + +4. Pilih dompet Anda dari daftar opsi yang tersedia. Jika Anda tidak dapat melihat dompet Anda, dompet tersebut mungkin tersembunyi di bawah opsi "WalletConnect". + +![Memilih dari daftar dompet yang akan dihubungkan](./connect2.png) + +5. Konfirmasikan permintaan tanda tangan di dompet Anda untuk membuat koneksi. **Menandatangani pesan ini tidak perlu mengeluarkan ETH**. +6. Itu saja! Mulai menggunakan aplikasi. Anda dapat menemukan beberapa proyek menarik di halaman [dApps](/dapps/#explore).
    + + +
    Ingin mempelajari selengkapnya?
    + + Lihat panduan lainnya + +
    + +## Pertanyaan yang sering diajukan + +### Jika saya memiliki alamat ETH, apakah akan sama di rantai blok yang lain? + +Anda dapat menggunakan alamat yang sama pada semua rantai blok yang kompatibel dengan EVM (jika Anda memiliki jenis dompet dengan frasa pemulihan). [Daftar](https://chainlist.org/) berikut ini memperlihatkan bagaimana cara menggunakan rantai blok dengan alamat yang sama. Beberapa rantai blok seperti Bitcoin, menerapkan peraturan pada jaringan yang terpisah dan Anda akan membutuhkan alamat yang berbeda dengan format yang berbeda pula. Jika Anda memiliki dompet kontrak pintar, maka Anda dapat melihat situs web produknya untuk mendapatkan informasi lebih lanjut mengenai rantai blok yang didukung olehnya. + +### Dapatkah saya menggunakan alamat yang sama di beberapa perangkat? + +Ya, Anda dapat menggunakan alamat yang sama pada beberapa perangkat. Dompet secara teknis hanyalah sebuah antarmuka untuk menunjukkan saldo Anda dan untuk melakukan transaksi, akun Anda tidak disimpan di dalam dompet, tetapi di rantai blok. + +### Saya belum menerima kripto, di mana saya bisa mengecek status transaksi? + +Anda bisa menggunakan [penjelajah blok](/developers/docs/data-and-analytics/block-explorers/) untuk melihat status transaksi apa pun secara real-time. Yang perlu Anda lakukan adalah mencari alamat dompet Anda atau ID transaksi. + +### Dapatkah saya membatalkan atau mengembalikan transaksi? + +Tidak, setelah transaksi dikonfirmasi, Anda tidak dapat membatalkan transaksi. diff --git a/src/content/translations/id/guides/index.md b/src/content/translations/id/guides/index.md new file mode 100644 index 00000000000..b8486db9d4e --- /dev/null +++ b/src/content/translations/id/guides/index.md @@ -0,0 +1,27 @@ +--- +title: Panduan Ethereum +description: Kumpulan panduan praktis yang menjelaskan dasar-dasar penggunaan Ethereum untuk pemula. +lang: id +--- + +# Panduan Ethereum + +Apakah Anda ingin memulai perjalanan Ethereum Anda? Panduan praktis kami menuntun Anda langkah demi langkah untuk memulai, dan memudahkan Anda menavigasi teknologi baru ini. + +## Memulai + +1. [Cara "membuat" akun Ethereum](/guides/how-to-create-an-ethereum-account/) - Siapa pun dapat membuat dompet secara gratis. Panduan ini akan menunjukkan kepada Anda dari mana harus memulai. + +2. [Cara menggunakan dompet](/guides/how-to-use-a-wallet/) - Pengenalan fitur-fitur dasar dompet apa pun dan cara menggunakannya. + +## Dasar-dasar keamanan + +1. [Cara mencabut akses kontrak pintar ke dana kripto Anda](/guides/how-to-revoke-token-access/) - Jika Anda tiba-tiba melihat transaksi di dompet yang tidak Anda mulai, panduan ini akan mengajari Anda cara mencegah hal itu terjadi lagi. + +2. [Cara mengidentifikasi token penipuan](/guides/how-to-id-scam-tokens/) - Apa itu token penipuan, bagaimana token tersebut terlihat sah, dan bagaimana cara mengidentifikasinya untuk melindungi diri Anda sendiri dan menghindari penipuan. + +## Menggunakan Ethereum + +1. [Cara menjembatani token ke lapisan ke-2](/guides/how-to-use-a-bridge/) - Apakah transaksi Ethereum terlalu mahal? Pertimbangkan untuk beralih ke solusi penskalaan Ethereum yang disebut dengan lapisan ke-2. + +2. [Bagaimana cara menukar token](/guides/how-to-swap-tokens/) - Apakah Anda ingin menukarkan token Anda dengan token lain? Panduan sederhana ini akan menunjukkan kepada Anda bagaimana caranya. diff --git a/src/content/translations/id/history/index.md b/src/content/translations/id/history/index.md index 83192ad5db5..ae00475c36f 100644 --- a/src/content/translations/id/history/index.md +++ b/src/content/translations/id/history/index.md @@ -11,15 +11,115 @@ Linimasa semua tonggak sejarah, fork, dan pembaruan utama dalam blockchain Ether -Fork adalah ketika peningkatan atau perubahan teknis utama perlu dilakukan pada jaringan – biasanya berasal dari [Proposal Peningkatan Ethereum (EIP)](/eips/) dan mengubah "aturan" protokol. +Garpu terjadi ketika ada perubahan atau peningkatan teknis yang signifikan yang perlu dilakukan pada jaringan - biasanya berasal dari Proposal Peningkatan Ethereum (EIP) dan mengubah "aturan" protokol. -Ketika peningkatan diperlukan dalam perangkat lunak tradisonal yang dikontrol secara terpusat, perusahaan hanya akan menerbitkan versi terbarunya bagi pengguna akhir. Blockchain bekerja dengan cara yang berbeda karena tidak ada kepemilikan terpusat. [Klien Ethereum](/developers/docs/nodes-and-clients/) harus memperbarui perangkat lunak mereka untuk menerapkan aturan fork baru. Pembuat blok plus (penambang di dunia bukti kerja, validator di dunia bukti taruhan) dan node harus membuat blok dan memvalidasi aturan baru. [Lebih lanjut tentang mekanisme konsensus](/developers/docs/consenus-mechanisms/) +Ketika peningkatan diperlukan dalam perangkat lunak tradisonal yang dikontrol secara terpusat, perusahaan hanya akan menerbitkan versi terbarunya bagi pengguna akhir. Blockchain bekerja dengan cara yang berbeda karena tidak ada kepemilikan terpusat. Klien Ethereum harus memperbarui perangkat lunak mereka untuk mengimplementasikan aturan fork yang baru. Pembuat blok plus (penambang di dunia bukti kerja, validator di dunia bukti taruhan) dan node harus membuat blok dan memvalidasi aturan baru. Lebih lanjut tentang mekanisme konsensus -Perubahan-perubahan aturan ini dapat membuat pemisahan sementara di jaringan. Blok baru dapat dibuat berdasarkan peraturan baru atau lama. Fork biasanya disepakati sebelumnya sehingga klien mengadopsi perubahan secara bersamaan dan fork dengan peningkatan menjadi rantai utama. Namun dalam kasus yang jarang terjadi, ketidaksepakatan mengenai fork dapat menyebabkan jaringan terpecah secara permanen – terutama dalam pembuatan Ethereum Classic dengan [DAO fork](#dao-fork). +Aturan-aturan ini dapat mengubah pemisahan sementara di jarinagn ini. Blok baru dapat dibuat berdasarkan peraturan baru atau lama. Fork biasanya disepakati sebelumnya sehingga klien mengadopsi perubahan secara bersamaan dan fork dengan peningkatan menjadi rantai utama. Namun, dalam kasus yang jarang terjadi, perselisihan mengenai garpu dapat menyebabkan jaringan terbagi secara permanen - yang paling terkenal adalah terciptanya Ethereum Classic dengan fork DAO. -Sedang mencari peningkatan protokol di masa mendatang? [Pelajari tentang peningkatan Ethereum berikutnya](/roadmap/). +Langsung menuju informasi tentang beberapa peningkatan penting di masa lalu: [Rantai Suar](/roadmap/beacon-chain/); [Penggabungan](/roadmap/merge/); dan [EIP-1559](#london) + +Sedang mencari peningkatan protokol di masa mendatang? [Pelajari tentang upgrade mendatang pada peta perjalanan Ethereum](/roadmap/). + + + +## 2023 {#2023} + +### Shanghai {#shanghai} + + + +#### Ringkasan {#shanghai-summary} + +Peningkatan Shanghai membawa penarikan penaruhan ke Lapisan Eksekusi. Bersamaan dengan peningkatan Capella, ini memungkinkan blok menerima operasi penarikan, yang memungkinkan para staker menarik ETH mereka dari Rantai Suar ke lapisan eksekusi. + + + +
      +
    • EIP-3651Memulai alamat COINBASE menjadi hangat
    • +
    • EIP-3855Instruksi PUSH0 baru
    • +
    • EIP-3860Batasi dan ukur kode awal
    • +
    • EIP-4895Penarikan dorong rantai suar sebagai operasi
    • +
    • EIP-6049 - Hentikan SELFDESTRUCT
    • +
    + +
    + +- [Baca spesifikasi meningkatkan Shanghai](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md) + +--- + +### Capella {#capella} + + + +#### Ringkasan {#capella-summary} + +Peningkatan Capella adalah peningkatan utama ketiga pada lapisan konsensus (Rantai Suar) dan memungkinkan penarikan penaruhan. Capella terjadi secara bersamaan dengan upgrade lapisan eksekusi, Shanghai, dan mengaktifkan fungsionalitas penarikan penaruhan. + +Peningkatan lapisan konsensus ini membawa kemampuan bagi staker yang tidak menyediakan kredensial penarikan bersama setoran awal mereka untuk melakukannya, dengan demikian memungkinkan penarikan. + +Peningkatan ini juga menyediakan fungsionalitas pemindaian akun otomatis, yang terus-menerus memproses akun validator untuk pembayaran imbalan yang tersedia atau penarikan penuh. + +- [Lebih lanjut tentang penarikan penaruhan](/staking/withdrawals/). +- [Baca spesifikasi peningkatan Capella](https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/) + + + +## 2022 {#2022} + +### Paris (Penggabungan) {#paris} + + + +#### Ringkasan {#paris-summary} + +Peningkatan Paris dipicu oleh rantai blok bukti kerja mencapai [total tingkat kesulitan terminal](/glossary/#terminal-total-difficulty) sebesar 58750000000000000000000. Hal ini terjadi pada blok 15537393 pada tanggal 15 September 2022, memicu peningkatan Paris pada blok berikutnya. Paris merupakan transisi [Penggabungan](/roadmap/merge/) fitur utamanya adalah mematikan algoritma penambangan [bukti kerja](/developers/docs/consensus-mechanisms/pow) dan logika konsensus terkait, serta sebagai gantinya mengaktifkan [bukti taruhan](/developers/docs/consensus-mechanisms/pos). Paris sendiri merupakan peningkatan untuk [klien eksekusi](/developers/docs/nodes-and-clients/#execution-clients) (setara dengan Bellatrix pada lapisan konsensus) yang memungkinkan mereka menerima instruksi dari [klien konsensus](/developers/docs/nodes-and-clients/#consensus-clients) yang terhubung. Untuk ini, diperlukan seperangkat metode API internal baru, yang secara kolektif dikenal sebagai [API Mesin](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md), untuk diaktifkan. Ini dapat dikatakan sebagai peningkatan paling signifikan dalam sejarah Ethereum sejak [Homestead](#homestead)! + +- [Baca spesifikasi peningkatan Paris](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md) + + + +
      +
    • EIP-3675Meningkatkan konsensus ke Bukti Taruhan
    • +
    • EIP-4399Ganti opcode KESULITAN dengan PREVRANDAO
    • +
    + +
    + +--- + +### Bellatrix {#bellatrix} + + + +#### Ringkasan {#bellatrix-summary} + +Peningkatan Bellatrix adalah peningkatan terjadwal kedua untuk [Rantai Suar](/roadmap/beacon-chain), mempersiapkan jaringan untuk [Penggabungan](/roadmap/merge/). Peningkatan ini membawa denda validator ke nilai penuh untuk ketidakaktifan dan pelanggaran yang dapat dipotong. Bellatrix juga mencakup pembaruan pada aturan pemilihan garpu untuk mempersiapkan jaringan untuk Penggabungan dan transisi dari blok bukti kerja terakhir ke blok bukti taruhan pertama. Hal ini mencakup membuat klien konsensus menyadari [total kesulitan terminal](/glossary/#terminal-total-difficulty) sebesar 58750000000000000000000. + +- [Baca spesifikasi peningkatan Bellatrix](https://github.com/ethereum/consensus-specs/tree/dev/specs/bellatrix) + +--- + +### Gray Glacier {#gray-glacier} + + + +#### Ringkasan {#gray-glacier-summary} + +Peningkatan jaringan Gray Glacier menunda [bomb kesulitan](/glossary/#difficulty-bomb) selama tiga bulan. Ini adalah satu-satunya perubahan yang dibolehkan dalam pembaruan ini, dan sifatnya serupa dengan pembaruan [Arrow Glacier](#arrow-glacier) dan [Muir Glacier](#muir-glacier). Perubahan serupa telah diterapkan pada peningkatan jaringan [Byzantium](#byzantium), [Konstatinopel](#constantinople) dan [London](#london). + +- [EF Blog - Pengumuman Pembaruan Gray Glacier](https://blog.ethereum.org/2022/06/16/gray-glacier-announcement/) + + + +
      +
    • EIP-5133menunda bom kesulitan hingga September 2022
    • +
    + +
    @@ -36,16 +136,14 @@ Peningkatan jaringan Arrow Glacier menjeda [bom kesulitan](/glossary/#difficulty - [Blog EF - Pengumuman Peningkatan Arrow Glacier](https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/) - [Ethereum Cat Herders - Peningkatan Arrow Glacier Ethereum](https://medium.com/ethereum-cat-herders/ethereum-arrow-glacier-upgrade-e8d20fa4c002) - + -- [EIP-4345](https://eips.ethereum.org/EIPS/eip-4345) – _menunda bom kesulitan hingga Juni 2022_ +
      +
    • EIP-4345menunda bom kesulitan hingga Juni 2022
    • +
    -#### Operator node {#arrow-glacier-node-operators} - -Pastikan untuk meningkatkan perangkat lunak klien Anda ke versi terbarunya sebelum 5 Desember 2021 guna mengetahui frekuensi blok variabel. Sehingga klien Anda tidak perlu menyinkronkan ke suatu rantai sebelum fork, yang menyebabkan kegagalan untuk mengirim dana atau dengan benar memverifikasi transaksi. - --- ### Altair {#altair} @@ -54,15 +152,15 @@ Pastikan untuk meningkatkan perangkat lunak klien Anda ke versi terbarunya sebel #### Ringkasan {#altair-summary} -Peningkatan Altair adalah peningkatan pertama yang terjadwal untuk [Rantai Suar](/roadmap/beacon-chain). Peningkatan ini akan menambah dukungan pada "komite sinkronisasi", yang dapat mengaktifkan klien ringan, dan memberikan validator penalti ketidakaktifan dan pemotongan sampai nilai maksimumnya. +Peningkatan Altair adalah peningkatan pertama yang terjadwal untuk [Rantai Suar](/roadmap/beacon-chain). Ini memberi tambahan dukungan untuk "komite sinkronisasi" — memungkinkan klien ringan, dan meningkatkan ketidakaktifan validator dan memotong hukuman saat pengembangan berkembang menuju Penggabungan. - [Baca spesifikasi peningkatan Altair](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair) -#### Fakta menyenangkan! {#altair-fun-fact} +#### Fakta menyenangkan! {#altair-fun-fact} -Altair adalah peningkatan besar dan pertama untuk jaringan yang memiliki waktu rollout yang pasti. Setiap peningkatan sebelumnya telah berdasarkan pada suatu nomor blok yang dideklarasikan pada rantai bukti kerja, dengan waktu blok yang bervariasi. Rantai Suar tidak mengharuskan penyelesaian bukti kerja, dan sebagai gantinya berfungsi pada sistem epoch berbasis waktu yang terdiri dari 32 "slot" waktu dua belas detik di mana para validator dapat mengusulkan blok. Inilah alasan kami mengetahui secara pasti kapan kami akan mencapai epoch 74.240 dan Altair mulai beroperasi! +Altair adalah peningkatan besar dan pertama untuk jaringan yang memiliki waktu rollout yang pasti. Setiap peningkatan sebelumnya telah berdasarkan pada suatu nomor blok yang dideklarasikan pada rantai bukti kerja, dengan waktu blok yang bervariasi. Rantai Suar tidak mengharuskan penyelesaian bukti kerja, dan sebagai gantinya berfungsi pada sistem jangka waktu berbasis waktu yang terdiri dari 32 "slot" waktu dua belas detik di mana para validator dapat mengusulkan blok. Inilah alasan kami mengetahui secara pasti kapan kami akan mencapai jangka waktu 74.240 dan Altair mulai beroperasi! -- [Beaconcha.in Glossary - Slot](https://kb.beaconcha.in/glossary#slots) +- [Waktu blok](/developers/docs/blocks/#block-time) --- @@ -74,17 +172,19 @@ Altair adalah peningkatan besar dan pertama untuk jaringan yang memiliki waktu r Peningkatan London memperkenalkan [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), yang memperbarui pasar biaya transaksi, bersamaan dengan perubahan bagaimana pembayaran kembali gas ditangani dan jadwal untuk [Zaman Es](/glossary/#ice-age). -- [Apakah Anda pengembang dApp? Pastikan untuk meningkatkan pustaka dan peralatan Anda.](https://github.com/ethereum/eth1.0-specs/blob/master/network-upgrades/ecosystem-readiness.md) -- [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/) +- [Apakah Anda seorang pengembang dapp? Pastikan untuk meningkatkan pustaka dan peralatan Anda.](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/london-ecosystem-readiness.md) +- [Baca pengumuman Ethereum Foundation](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/) - [Baca penjelasan Ethereum Cat Herder](https://medium.com/ethereum-cat-herders/london-upgrade-overview-8eccb0041b41) - + -- [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) – _meningkatkan pasar biaya transaksi_ -- [EIP-3198](https://eips.ethereum.org/EIPS/eip-3198) – _mengembalikan `BASEFEE` dari sebuah blok_ -- [EIP-3529](https://eips.ethereum.org/EIPS/eip-3529) - _mengurangi pengembalian dana gas untuk operasi EVM_ -- [EIP-3541](https://eips.ethereum.org/EIPS/eip-3541) - _mencegah penggunaan kontrak yang dimulai dengan `0xEF`_ -- [EIP-3554](https://eips.ethereum.org/EIPS/eip-3554) – _menunda Zaman Es sampai Desember 2021_ +
      +
    • EIP-1559meningkatkan pasar biaya transaksi
    • +
    • EIP-3198mengembalikan BASEFEE dari blok
    • +
    • EIP-3529 - mengurangi pengembalian dana gas untuk pengoperasian EVM
    • +
    • EIP-3541 - mencegah penggunaan kontrak dengan 0xEF
    • +
    • EIP-3554menunda Zaman Es hingga Desember 2021
    • +
    @@ -101,12 +201,14 @@ Peningkatan Berlin mengoptimalkan harga gas untuk beberapa aksi EVM, dan meningk - [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement/) - [Baca penjelasan Ethereum Cat Herder](https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80) - + -- [EIP-2565](https://eips.ethereum.org/EIPS/eip-2565) – _menurunkan biaya gas ModExp_ -- [EIP-2718](https://eips.ethereum.org/EIPS/eip-2718) – _memungkinkan dukungan yang lebih mudah untuk tipe transaksi beragam_ -- [EIP-2929](https://eips.ethereum.org/EIPS/eip-2929) – _peningkatan biaya gas untuk opcode akses state_ -- [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) – _menambahkan daftar akses opsional_ +
      +
    • EIP-2565mengurangi biaya gas ModExp
    • +
    • EIP-2718memungkinkan dukungan yang lebih mudah untuk berbagai jenis transaksi
    • +
    • EIP-2929kenaikan biaya gas untuk opcode akses negara bagian
    • +
    • EIP-2930menambahkan daftar akses opsional
    • +
    @@ -159,7 +261,9 @@ Fork Gletser Muir memperkenalkan penundaan pada [bom kesulitan](/glossary/#diffi -- [EIP-2384](https://eips.ethereum.org/EIPS/eip-2384) – _menunda bom kesulitan untuk 4.000.000 blok lagi, atau ~611 hari._ +
      +
    • EIP-2384menunda bom kesulitan selama 4.000.000 blok lagi, atau sekitar ~611 hari.
    • +
    @@ -173,30 +277,32 @@ Fork Gletser Muir memperkenalkan penundaan pada [bom kesulitan](/glossary/#diffi #### Ringkasan {#istanbul-summary} -Istanbul fork: +Garpu Istanbul: -- Mengoptimalkan biaya [gas](/glossary/#gas) dari tindakan tertentu di [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). +- Mengoptimalkan biaya [gas](/glossary/#gas) dari aksi tertentu di [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). - Meningkatkan ketahanan terhadap serangan penolakan layanan. -- Membuat solusi [penskalaan Lapisan 2](/developers/docs/scaling/#layer-2-scaling) berdasarkan SNARK dan STARK berkinerja lebih baik. -- Mengaktifkan Ethereum dan Zcash untuk saling beroperasi. +- Membuat solusi [penskalaan Lapisan ke-2](/developers/docs/scaling/#layer-2-scaling) berdasarkan SNARK dan STARK berkinerja lebih baik. +- Memungkinkan Ethereum dan Zcash untuk saling bekerja sama. - Kontrak yang diizinkan untuk memperkenalkan lebih banyak fungsi kreatif. [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2019/11/20/ethereum-istanbul-upgrade-announcement/) - + -- [EIP-152](https://eips.ethereum.org/EIPS/eip-152) – _izinkan Ethereum bekerja dengan mata uang yang menjaga privasi seperti Zcash._ -- [EIP-1108](https://eips.ethereum.org/EIPS/eip-1108) – _kriptografi lebih murah untuk meningkatkan biaya [gas](/glossary/#gas)._ -- [EIP-1344](https://eips.ethereum.org/EIPS/eip-1344) – _melindungi Ethereum dari serangan ulang dengan menambahkan `CHAINID` [opcode](/developers/docs/ethereum-stack/#ethereum-virtual-machine)._ -- [EIP-1884](https://eips.ethereum.org/EIPS/eip-1884) – _mengoptimalkan harga gas opcode berdasarkan konsumsi._ -- [EIP-2028](https://eips.ethereum.org/EIPS/eip-2028) – _mengurangi biaya CallData untuk memungkinkan lebih banyak data dalam blok – bagus untuk [Penskalaan lapisan 2](/developers/docs/scaling/#layer-2-scaling)._ -- [EIP-2200](https://eips.ethereum.org/EIPS/eip-2200) – _alterasi harga gas opcode lainnya._ +
      +
    • EIP-152memungkinkan Ethereum bekerja dengan mata uang yang menjaga privasi seperti Zcash.
    • +
    • EIP-1108kriptografi yang lebih murah untuk meningkatkan kinerja biaya gas.
    • +
    • EIP-1344melindungi Ethereum dari serangan ulang dengan menambahkan CHAINID opcode.
    • +
    • EIP-1884mengoptimalkan harga gas opcode berdasarkan konsumsi.
    • +
    • EIP-2028mengurangi biaya CallData untuk memungkinkan lebih banyak data dalam blok – baik untuk Penskalaan Lapisan ke-2.
    • +
    • EIP-2200penyesuaian harga gas opcode lainnya.
    • +
    --- -### Konstantinopel {#constantinople} +### Constantinople {#constantinople} @@ -204,18 +310,20 @@ Istanbul fork: Fork Konstantinopel: -- Memastikan blockchain tidak membeku sebelum [bukti taruhan diimplementasikan](#beacon-chain-genesis). -- Mengoptimalkan biaya [gas](/glossary/#gas) dari tindakan tertentu di [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). +- Memastikan rantai blok tidak membeku sebelum [bukti taruhan diimplementasikan](#beacon-chain-genesis). +- Mengoptimalkan biaya [gas](/glossary/#gas) dari aksi tertentu di [EVM](/developers/docs/ethereum-stack/#ethereum-virtual-machine). - Menambahkan kemampuan untuk berinteraksi dengan alamat yang belum dibuat. [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/) - + -- [EIP-145](https://eips.ethereum.org/EIPS/eip-145) – _mengoptimalkan biaya tindakan on-chain tertentu._ -- [EIP-1014](https://eips.ethereum.org/EIPS/eip-1014) – _memungkinkan Anda berinteraksi dengan alamat yang belum dibuat._ -- [EIP-1052](https://eips.ethereum.org/EIPS/eip-1052) – _mengoptimalkan biaya tindakan on-chain tertentu._ -- [EIP-1234](https://eips.ethereum.org/EIPS/eip-1234) – _memastikan blockchain tidak membeku sebelum bukti taruhan._ +
      +
    • EIP-145mengoptimalkan biaya tindakan di dalam rantai tertentu.
    • +
    • EIP-1014memungkinkan Anda berinteraksi dengan alamat yang belum dibuat.
    • +
    • EIP-1052mengoptimalkan biaya tindakan di dalam rantai tertentu.
    • +
    • EIP-1234memastikan rantai blok tidak membeku sebelum bukti taruhan.
    • +
    @@ -232,23 +340,25 @@ Fork Konstantinopel: Fork Byzantium: - Pengurangan imbalan [penambangan](/developers/docs/consensus-mechanisms/pow/mining/) blok dari 5 menjadi 3 ETH. -- Menunda [bom kesulitan](/glossary/#difficulty-bomb) selama satu tahun. -- Menambahkan kemampuan untuk melakukan panggilan yang tidak mengubah status ke kontrak lain. +- Menunda [bom tingkat kesulitan](/glossary/#difficulty-bomb) selama satu tahun. +- Menambahkan kemampuan untuk melakukan panggilan yang tidak mengubah state ke kontrak lain. - Menambahkan metode kriptografi tertentu untuk memungkinkan [penskalaan lapisan ke-2](/developers/docs/scaling/#layer-2-scaling). [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2017/10/12/byzantium-hf-announcement/) - + -- [EIP-140](https://eips.ethereum.org/EIPS/eip-140) – _menambahkan opcode `REVERT`._ -- [EIP-658](https://eips.ethereum.org/EIPS/eip-658) – _kolom status ditambahkan ke resi transaksi untuk mengindikasikan keberhasilan atau kegagalan transaksi tersebut._ -- [EIP-196](https://eips.ethereum.org/EIPS/eip-196) – _menambahkan kurva eliptik dan perkalian skalar untuk memungkinkan [ZK-Snarks](/developers/docs/scaling/zk-rollups/)._ -- [EIP-197](https://eips.ethereum.org/EIPS/eip-197) – _menambahkan kurva eliptik dan perkalian skalar untuk memungkinkan [ZK-Snarks](/developers/docs/scaling/zk-rollups/)._ -- [EIP-198](https://eips.ethereum.org/EIPS/eip-198) – _mengaktifkan verifikasi tanda tangan RSA._ -- [EIP-211](https://eips.ethereum.org/EIPS/eip-211) – _menambahkan dukungan untuk nilai pengembalian panjang variabel._ -- [EIP-214](https://eips.ethereum.org/EIPS/eip-214) – _menambahkan opcode `STATICCALL`, memungkinkan panggilan yang tidak mengubah status ke kontrak lainnya._ -- [EIP-100](https://eips.ethereum.org/EIPS/eip-100) – _mengubah formula penyesuaian tingkat kesulitan._ -- [EIP-649](https://eips.ethereum.org/EIPS/eip-649) – _menunda [bom kesulitan](/glossary/#difficulty-bomb) hingga 1 tahun dan mengurangi imbalan blok dari 5 ETH menjadi 3 ETH._ +
      +
    • EIP-140menambahkan opcode REVERT.
    • +
    • EIP-658Bidang status ditambahkan ke tanda terima transaksi untuk menunjukkan keberhasilan atau kegagalan.
    • +
    • EIP-196menambahkan kurva elips dan perkalian skalar untuk memungkinkan ZK-Snarks.
    • +
    • EIP-197menambahkan kurva elips dan perkalian skalar untuk memungkinkan ZK-Snarks.
    • +
    • EIP-198memungkinkan verifikasi tanda tangan RSA.
    • +
    • EIP-211menambahkan dukungan untuk nilai pengembalian panjang variabel.
    • +
    • EIP-214menambahkan STATICCALL opcode, mengizinkan panggilan yang tidak mengubah status ke kontrak lain.
    • +
    • EIP-100mengubah formula penyesuaian tingkat kesulitan.
    • +
    • EIP-649penundaan bom tingkat kesulitan selama 1 tahun dan mengurangi hadiah blok dari 5 menjadi 3 ETH.
    • +
    @@ -262,20 +372,22 @@ Fork Byzantium: #### Ringkasan {#spurious-dragon-summary} -Spurious Dragon fork adalah respons kedua terhadap serangan penolakan layanan (DoS) di jaringan (September/Oktober 2016) termasuk: +Garpu Spurious Dragon adalah respons kedua terhadap serangan penolakan layanan (DoS) di jaringan (September/Oktober 2016) termasuk: - menyetel harga opcode untuk mencegah serangan di masa mendatang pada jaringan. -- mengaktifkan "debloat" dari status blockchain. -- menambahkan perlindungan serangan replay. +- memungkinkan "debloat" dari status rantai blok. +- menambahkan perlindungan terhadap serangan perulangan. [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/) - + -- [EIP-155](https://eips.ethereum.org/EIPS/eip-155) – _mencegah transaksi dari satu rantai Ethereum untuk kembali disiarkan pada rantai alternatif, sebagai contoh transaksi testnet dijalankan kembali di rantai Ethereum utama._ -- [EIP-160](https://eips.ethereum.org/EIPS/eip-160) – _menyesuaikan harga opcode `EXP` – membuat lebih sulit untuk memperlambat jaringan lewat operasi kontrak yang mahal secara komputasional._ -- [EIP-161](https://eips.ethereum.org/EIPS/eip-161) – _memungkinkan penghapusan akun kosong yang ditambahkan lewat serangan DOS._ -- [EIP-170](https://eips.ethereum.org/EIPS/eip-170) – _mengubah ukuran kode maksimum yang bisa dimiliki oleh sebuah kontrak di blokchain – ke 24576 bita._ +
      +
    • EIP-155mencegah transaksi dari satu rantai Ethereum disiarkan ulang di rantai alternatif, misalnya transaksi jaringan percobaan yang diputar ulang di rantai Ethereum utama.
    • +
    • EIP-160menyesuaikan harga dari EXP opcode – mempersulit memperlambat jaringan melalui operasi kontrak yang mahal secara komputasi.
    • +
    • EIP-161memungkinkan penghapusan akun kosong yang ditambahkan melalui serangan DOS.
    • +
    • EIP-170mengubah ukuran kode maksimum yang dapat dimiliki oleh sebuah kontrak pada rantai blok – menjadi 24576 bita.
    • +
    @@ -287,32 +399,34 @@ Spurious Dragon fork adalah respons kedua terhadap serangan penolakan layanan (D #### Ringkasan {#tangerine-whistle-summary} -Tangerine Whistle fork adalah respons pertama terhadap serangan penolakan layanan (DoS) di jaringan (September/Oktober 2016) termasuk: +Garpu Tangerine Whistle adalah respons pertama terhadap serangan denial of service (DoS) di jaringan (September/Oktober 2016) yang mencakup: - menangani masalah kesehatan jaringan yang mendesak mengenai kode operasi yang terlalu murah. [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2016/10/18/faq-upcoming-ethereum-hard-fork/) - + -- [EIP-150](https://eips.ethereum.org/EIPS/eip-150) – _meningkatkan biaya gas opcode yang dapat digunakan dalam serangan spam._ -- [EIP-158](https://eips.ethereum.org/EIPS/eip-158) – _mengurangi ukuran status dengan menghapus sejumlah besar akun kosong yang dimasukkan ke status dengan biaya yang sangat rendah karena kekurangan pada versi sebelumnya dari protokol Ethereum._ +
      +
    • EIP-150meningkatkan biaya gas dari opcode yang dapat digunakan dalam serangan spam.
    • +
    • EIP-158mengurangi ukuran status dengan menghapus sejumlah besar akun kosong yang dimasukkan ke dalam status dengan biaya yang sangat rendah karena adanya kekurangan pada versi protokol Ethereum sebelumnya.
    • +
    --- -### Fork DAO {#dao-fork} +### Garpu DAO {#dao-fork} #### Ringkasan {#dao-fork-summary} -Fork DAO merupakan respons terhadap [serangan DAO 2016](https://www.coindesk.com/markets/2016/06/25/understanding-the-dao-attack/) di mana kontrak [DAO](/glossary/#dao) yang tidak aman dikuras dananya sebanyak lebih dari 3,6 juta ETH dalam peretasan saat itu. Fork tersebut memindahkan dana dari kontrak bermasalah ke [kontrak baru](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754) dengan satu fungsi tunggal: tarik. Siapa pun yang kehilangan dana dapat menarik 1 ETH untuk setiap 100 token DAO di dompet mereka. +Garpu DAO merupakan respons terhadap [serangan DAO 2016](https://www.coindesk.com/learn/understanding-the-dao-attack/) di mana kontrak [DAO](/glossary/#dao) yang tidak aman dikuras dananya sebanyak lebih dari 3,6 juta ETH dalam peretasan saat itu. Garpu tersebut memindahkan dana dari kontrak bermasalah ke [kontrak baru](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754) dengan satu fungsi tunggal: tarik. Siapa pun yang kehilangan dana dapat menarik 1 ETH untuk setiap 100 token DAO di dompet mereka. -Tindakan ini dipilih oleh komunitas Ethereum. Setiap pemegang ETH dapat memilih melalui transaksi di [platform pemilihan](http://v1.carbonvote.com/). Keputusan untuk melakukan fork mencapai lebih dari 85% suara. +Tindakan ini dipilih oleh komunitas Ethereum. Setiap pemegang ETH dapat memilih melalui transaksi di [platform pemilihan](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/). Keputusan untuk melakukan fork mencapai lebih dari 85% suara. -Beberapa penambang menolak untuk melakukan fork karena insiden DAO bukan merupakan kesalahan dalam protokol. Mereka kemudian membentuk [Ethereum Classic](https://ethereumclassic.org/). +Beberapa penambang menolak melakukan garpu karena insiden DAO bukan merupakan kesalahan dalam protokol. Mereka kemudian membentuk [Ethereum Classic](https://ethereumclassic.org/). [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2016/07/20/hard-fork-completed/) @@ -324,15 +438,17 @@ Beberapa penambang menolak untuk melakukan fork karena insiden DAO bukan merupak #### Ringkasan {#homestead-summary} -Fork Homestead yang melihat ke masa depan. Ini termasuk beberapa perubahan protokol dan perubahan jaringan yang memberi Ethereum kemampuan untuk melakukan peningkatan jaringan lebih lanjut. +Garpu Homestead yang melihat ke masa depan. Ini termasuk beberapa perubahan protokol dan perubahan jaringan yang memberi Ethereum kemampuan untuk melakukan peningkatan jaringan lebih lanjut. [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2016/02/29/homestead-release/) - + -- [EIP-2](https://eips.ethereum.org/EIPS/eip-2) – _membuat pengeditan ke proses pembuatan kontrak._ -- [EIP-7](https://eips.ethereum.org/EIPS/eip-7) – _menambahkan opcode baru: `DELEGATECALL`_ -- [EIP-8](https://eips.ethereum.org/EIPS/eip-8) – _memperkenalkan persyaratan kompatibilitas maju devp2p_ +
      +
    • EIP-2melakukan pengeditan pada proses pembuatan kontrak.
    • +
    • EIP-7menambahkan opcode baru: DELEGATECALL
    • +
    • EIP-8memperkenalkan persyaratan kompatibilitas ke depan devp2p
    • +
    @@ -340,15 +456,16 @@ Fork Homestead yang melihat ke masa depan. Ini termasuk beberapa perubahan proto ## 2015 {#2015} -### Thawing garis depan {#frontier-thawing} +### Thawing frontier {#frontier-thawing} #### Ringkasan {#frontier-thawing-summary} -Fork thawing garis depan mengangkat batas [gas](/glossary/#gas) 5.000 per [blok](/glossary/#block) blok dan menetapkan harga gas default menjadi 51 [gwei](/glossary/#gwei). Ini memungkinkan transaksi–transaksi membutuhkan 21.000 gas. +Garpu thawing frontier mengangkat batas [gas](/glossary/#gas) 5.000 per [blok](/glossary/#block) blok dan menetapkan harga gas default menjadi 51 [gwei](/glossary/#gwei). Ini memungkinkan transaksi–transaksi membutuhkan 21.000 gas. [bom tingkat kesulitan](/glossary/#difficulty-bomb) diperkenalkan untuk memastikan garpu-tangan di masa depan untuk [bukti taruhan](/glossary/#pos). -[Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/) +- [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2015/08/04/the-thawing-frontier/) +- [Baca Pembaruan Protokol Ethereum 1](https://blog.ethereum.org/2015/08/04/ethereum-protocol-update-1/) --- @@ -358,7 +475,7 @@ Fork thawing garis depan mengangkat batas [gas](/glossary/#gas) 5.000 per [blok] #### Ringkasan {#frontier-summary} -Garis depan adalah implementasi langsung, tetapi barebone dari proyek Ethereum. Ini mengikuti fase pengujian Olimpiade yang sukses. Ditujukan untuk pengguna teknis, khususnya pengembang. [Blok](/glossary/#block) memiliki batas [gas](/glossary/#gas) sebesar 5.000. Periode 'pencairan' ini memungkinkan penambang untuk memulai operasi mereka dan bagi pengguna awal untuk menginstal klien mereka tanpa harus 'terburu-buru'. +Frontier adalah implementasi langsung, tetapi barebone dari proyek Ethereum. Ini mengikuti fase pengujian Olimpiade yang sukses. Ditujukan untuk pengguna teknis, khususnya pengembang. [Blok](/glossary/#block) memiliki batas [gas](/glossary/#gas) sebesar 5.000. Periode 'pencairan' ini memungkinkan penambang untuk memulai operasi mereka dan bagi pengguna awal untuk menginstal klien mereka tanpa harus 'terburu-buru'. [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2015/07/22/frontier-is-coming-what-to-expect-and-how-to-prepare/) @@ -366,11 +483,11 @@ Garis depan adalah implementasi langsung, tetapi barebone dari proyek Ethereum. ## 2014 {#2014} -### Jual Ether {#ether-sale} +### Penjualan Ether {#ether-sale} -Ether secara resmi mulai dijual selama 42 hari. Anda dapat membeli dengan BTC. +Ether secara resmi mulai dijual selama 42 hari. Anda dapat membelinya dengan BTC. [Baca pengumuman Yayasan Ethereum](https://blog.ethereum.org/2014/07/22/launching-the-ether-sale/) @@ -388,7 +505,7 @@ Yellow Paper, yang ditulis oleh Dr. Gavin Wood, adalah definisi teknis dari prot ## 2013 {#2013} -### Laporan resmi dirilis {#whitepaper} +### Kertas putih dirilis {#whitepaper} diff --git a/src/content/translations/id/roadmap/account-abstraction/index.md b/src/content/translations/id/roadmap/account-abstraction/index.md new file mode 100644 index 00000000000..b22d5808ddb --- /dev/null +++ b/src/content/translations/id/roadmap/account-abstraction/index.md @@ -0,0 +1,126 @@ +--- +title: Abstraksi akun +description: Ikhtisar rencana Ethereum untuk membuat akun pengguna menjadi lebih sederhana dan aman +lang: id +summaryPoints: + - Abstraksi akun memudahkan untuk membuat dompet kontrak pintar + - Dompet kontrak pintar memudahkan untuk mengelola akses ke akun Ethereum + - Kunci yang hilang dan terbuka dapat dipulihkan dengan menggunakan beberapa cadangan +--- + +# Abstraksi akun {#account-abstraction} + +Pengguna berinteraksi dengan Ethereum menggunakan **[akun yang dimiliki secara eksternal (EOA)](/glossary/#eoa)**. Ini adalah satu-satunya cara untuk memulai transaksi atau mengeksekusi kontrak pintar. Hal ini membatasi bagaimana pengguna dapat berinteraksi dengan Ethereum. Misalnya, menyulitkan untuk melakukan banyak transaksi dan mengharuskan pengguna untuk selalu menjaga saldo ETH untuk menutupi gas. + +Abstraksi akun adalah cara untuk mengatasi masalah ini dengan memungkinkan pengguna secara fleksibel memprogram lebih banyak keamanan dan pengalaman pengguna yang lebih baik ke dalam akun mereka. Hal ini dapat terjadi dengan [memperbarui EOA](https://eips.ethereum.org/EIPS/eip-3074) sehingga dapat dikontrol oleh kontrak pintar, atau dengan [memperbarui kontrak pintar](https://eips.ethereum.org/EIPS/eip-2938) agar dapat memulai transaksi. Kedua opsi ini membutuhkan perubahan pada protokol Ethereum. Ada juga jalur ketiga yang melibatkan penambahan [sistem transaksi kedua yang terpisah](https://eips.ethereum.org/EIPS/eip-4337) untuk berjalan secara paralel dengan protokol yang ada. Terlepas dari rutenya, hasilnya adalah akses ke Ethereum melalui dompet kontrak pintar, baik yang didukung secara native sebagai bagian dari protokol yang ada atau melalui jaringan transaksi tambahan. + +Dompet kontrak pintar membuka banyak manfaat bagi pengguna, termasuk: + +- menentukan aturan keamanan fleksibel Anda sendiri +- memulihkan akun Anda jika Anda kehilangan kunci +- berbagi keamanan akun Anda di seluruh perangkat atau individu tepercaya +- membayar gas orang lain, atau meminta orang lain membayar gas Anda +- transaksi batch secara bersamaan (mis. menyetujui dan mengeksekusi pertukaran sekaligus) +- lebih banyak kesempatan bagi dapps dan pengembang dompet untuk berinovasi pada pengalaman pengguna + +Manfaat ini tidak didukung secara native saat ini karena hanya akun yang dimiliki secara eksternal ([EOA](/glossary/#eoa)) yang dapat memulai transaksi. EOA secara sederhana adalah pasangan kunci publik-pribadi. Cara kerjanya seperti ini: + +- jika Anda memiliki kunci pribadi, Anda dapat melakukan _apa saja_ sesuai dengan aturan Mesin Virtual Ethereum (EVM) +- jika Anda tidak memiliki kunci pribadi, Anda _tidak dapat melakukan apa-apa_. + +Jika Anda kehilangan kunci, kunci tersebut tidak dapat dipulihkan, dan kunci yang dicuri memberi pencuri akses instan ke semua dana dalam akun. + +Dompet kontrak pintar adalah solusi untuk masalah ini, tetapi saat ini sulit untuk diprogram karena pada akhirnya logika apa pun yang diterapkan harus diterjemahkan ke dalam satu set transaksi EOA sebelum dapat diproses oleh Ethereum. Abstraksi akun memungkinkan kontrak pintar untuk memulai transaksi sendiri, sehingga logika apa pun yang ingin diimplementasikan oleh pengguna dapat dikodekan ke dalam dompet kontrak pintar itu sendiri dan dieksekusi di Ethereum. + +Pada akhirnya, abstraksi akun meningkatkan dukungan untuk dompet kontrak pintar, membuatnya lebih mudah dibuat dan lebih aman digunakan. Pada akhirnya, dengan abstraksi akun, pengguna dapat menikmati semua manfaat Ethereum tanpa harus mengetahui atau peduli dengan teknologi yang mendasarinya. + +## Di luar frasa benih {#beyond-seed-phrases} + +Akun-akun saat ini diamankan menggunakan kunci pribadi yang dihitung dari frasa benih. Setiap orang yang memiliki akses ke frase benih dapat dengan mudah menemukan kunci pribadi yang melindungi sebuah akun dan mendapatkan akses ke semua aset yang dilindunginya. Jika kunci pribadi dan frase benih hilang, maka tidak akan pernah bisa dipulihkan dan aset yang dikontrolnya akan dibekukan selamanya. Mengamankan frase benih ini sangat sulit, bahkan bagi pengguna yang sudah ahli sekalipun, dan phishing frasa benih merupakan salah satu cara yang paling umum dilakukan untuk menipu para pengguna. + +Abstraksi akun akan menyelesaikan masalah ini dengan menggunakan kontrak pintar untuk menyimpan aset dan mengesahkan transaksi. Kontrak pintar ini kemudian dapat didekorasi dengan logika khusus untuk membuatnya seaman mungkin dan disesuaikan dengan pengguna. Pada akhirnya, Anda masih menggunakan kunci pribadi untuk mengontrol akses ke akun Anda, tetapi dengan jaring pengaman yang membuatnya lebih mudah dan aman untuk dikelola. + +Sebagai contoh, kunci cadangan dapat ditambahkan ke dompet sehingga jika Anda kehilangan atau secara tidak sengaja mengekspos kunci utama Anda, kunci tersebut dapat diganti dengan kunci baru yang aman dengan izin dari kunci cadangan. Anda bisa mengamankan setiap kunci ini dengan cara yang berbeda, atau membaginya ke beberapa penjaga yang tepercaya. Hal ini membuat pencuri lebih sulit mendapatkan kendali penuh atas dana Anda. Sama halnya, Anda dapat menambahkan peraturan pada dompet untuk mengurangi dampak jika kunci utama Anda diretas, sebagai contoh, Anda dapat mengizinkan transaksi bernilai rendah untuk diverifikasi dengan satu tanda tangan, sedangkan transaksi bernilai lebih tinggi membutuhkan persetujuan dari beberapa penanda tangan yang terautentikasi. Ada beberapa cara lain dompet kontrak pintar dapat membantu Anda untuk menggagalkan pencurian, contohnya adalah daftar putih yang dapat digunakan untuk memblokir setiap transaksi kecuali jika transaksi tersebut ditujukan kepada alamat yang terpercaya atau diverifikasi oleh beberapa kunci yang telah Anda setujui sebelumnya. + +### Contoh logika keamanan yang dapat dibangun ke dalam dompet kontrak pintar: + +- **Otorisasi multisig**: Anda dapat berbagi kredensial otorisasi di beberapa orang atau perangkat tepercaya. Kemudian kontrak dapat dikonfigurasikan sehingga transaksi yang melebihi nilai yang telah ditetapkan memerlukan otorisasi dari proporsi tertentu (mis. 3/5) dari pihak-pihak tepercaya. Sebagai contoh, transaksi bernilai tinggi mungkin memerlukan persetujuan dari perangkat seluler dan dompet perangkat keras, atau tanda tangan dari akun yang didistribusikan ke anggota keluarga tepercaya. +- **Pembekuan akun**: Jika perangkat hilang atau disusupi, akun dapat dikunci dari perangkat lain yang sah, untuk melindungi aset pengguna. +- **Pemulihan akun**: Kehilangan perangkat atau lupa kata sandi? Dalam paradigma saat ini, ini berarti aset Anda bisa dibekukan selamanya. Dengan dompet kontrak pintar, Anda dapat mengatur beberapa akun yang telah disetujui sebelumnya yang dapat mengizinkan perangkat baru dan mengatur ulang akses. +- **Tetapkan batas transaksi**: tentukan ambang batas harian berapa banyak nilai yang dapat ditransfer dari akun dalam satu hari/minggu/bulan. Ini berarti jika penyerang mendapatkan akses ke akun Anda, mereka tidak dapat menguras semuanya sekaligus dan Anda memiliki kesempatan untuk membekukan dan mengatur ulang akses. +- **Buat daftar putih**: hanya mengizinkan transaksi ke alamat tertentu yang Anda ketahui aman. Ini berarti bahwa _meskipun_ kunci pribadi Anda dicuri, penyerang tidak dapat mengirimkan dana ke akun tujuan yang tidak masuk dalam daftar putih. Daftar putih ini akan membutuhkan beberapa tanda tangan untuk mengubahnya sehingga penyerang tidak dapat menambahkan alamat mereka sendiri ke dalam daftar kecuali mereka memiliki akses ke beberapa kunci cadangan Anda. + +## Pengalaman pengguna yang lebih baik {#better-user-experience} + +Abstraksi akun memungkinkan pengalaman **pengguna yang lebih baik secara keseluruhan** serta **peningkatan keamanan** karena menambahkan dukungan untuk dompet kontrak pintar di tingkat protokol. Alasan yang paling penting untuk hal ini adalah akan memberi pengembang kontrak pintar, dompet, dan aplikasi lebih banyak kebebasan untuk berinovasi pada pengalaman pengguna dengan cara yang mungkin belum dapat kita antisipasi. Beberapa peningkatan nyata yang akan datang bersama dengan abstraksi akun termasuk penggabungan transaksi untuk kecepatan dan efisiensi. Sebagai contoh, pertukaran sederhana seharusnya merupakan operasi sekali klik, tetapi saat ini memerlukan penandatanganan beberapa transaksi untuk menyetujui pengeluaran token individu sebelum pertukaran dieksekusi. Abstraksi akun menghilangkan gesekan tersebut dengan mengizinkan penggabungan transaksi. Selain itu, transaksi yang digabungkan dapat menyetujui dengan tepat nilai token yang tepat yang diperlukan untuk setiap transaksi dan kemudian mencabut persetujuan setelah transaksi selesai, memberikan keamanan tambahan. + +Manajemen gas juga jauh lebih baik dengan adanya abstraksi akun. Aplikasi tidak hanya dapat menawarkan untuk membayar biaya gas penggunanya, tetapi biaya gas dapat dibayar dengan token selain ETH, membebaskan pengguna dari keharusan untuk mempertahankan saldo ETH untuk mendanai transaksi. Ini akan bekerja dengan menukar token pengguna dengan ETH di dalam kontrak dan kemudian menggunakan ETH untuk membayar gas. + + + +Manajemen gas adalah salah satu gesekan utama bagi pengguna Ethereum, terutama karena ETH adalah satu-satunya aset yang dapat digunakan untuk membayar transaksi. Bayangkan Anda memiliki dompet dengan saldo USDC, tetapi tidak memiliki ETH. Anda tidak dapat memindahkan atau menukar token USDC tersebut karena Anda tidak dapat membayar gas. Anda juga tidak dapat menukar USDC dengan ETH, karena itu sendiri membutuhkan gas. Anda harus mengirim lebih banyak ETH ke akun Anda dari bursa atau alamat lain untuk menyelesaikan masalah. Dengan dompet kontrak pintar, Anda cukup membayar gas dalam USDC, sehingga membebaskan akun Anda. Anda tidak perlu lagi menyimpan saldo ETH di semua akun Anda. + +Abstraksi akun juga memungkinkan pengembang dapp untuk berkreasi dengan manajemen gas. Sebagai contoh, Anda mungkin dapat mulai membayar DEX favorit Anda dengan biaya tetap setiap bulan untuk transaksi tanpa batas. Dapps mungkin menawarkan untuk membayar semua biaya gas Anda atas nama Anda sebagai imbalan karena telah menggunakan platform mereka, atau sebagai penawaran orientasi. Akan lebih mudah bagi pengembang untuk berinovasi pada gas ketika dompet kontrak pintar didukung di tingkat protokol. + + + +Sesi tepercaya juga berpotensi mengubah pengalaman pengguna, terutama untuk aplikasi seperti game, di mana sejumlah besar transaksi kecil mungkin memerlukan persetujuan dalam waktu singkat. Menyetujui setiap transaksi secara individual akan merusak pengalaman bermain game, tetapi persetujuan permanen tidak aman. Dompet kontrak pintar dapat menyetujui transaksi tertentu untuk waktu tertentu, hingga nilai tertentu atau hanya ke alamat tertentu. + +Menarik juga untuk mempertimbangkan bagaimana pembelian dapat berubah dengan abstraksi akun. Saat ini, setiap transaksi harus disetujui dan dieksekusi dari dompet yang sudah didanai sebelumnya dengan jumlah token yang tepat. Dengan abstraksi akun, pengalamannya bisa lebih mirip dengan belanja daring yang sudah dikenal di mana pengguna dapat mengisi "keranjang" dengan barang-barang dan mengklik sekali untuk membeli sekaligus, dengan semua logika yang diperlukan ditangani oleh kontrak, bukan oleh pengguna. + +Ini hanyalah beberapa contoh bagaimana pengalaman pengguna dapat ditingkatkan dengan abstraksi akun, tetapi akan ada lebih banyak lagi yang belum kami bayangkan. Abstraksi akun membebaskan pengembang dari batasan EOA saat ini, memungkinkan mereka untuk membawa aspek-aspek yang baik dari web2 ke dalam web3 tanpa mengorbankan hak milik dan meretas secara kreatif pada pengalaman pengguna baru yang kreatif. + +## Bagaimana abstraksi akun akan diimplementasikan? {#how-will-aa-be-implemented} + +Dompet kontrak pintar sudah ada saat ini, namun sulit untuk diimplementasikan karena EVM tidak mendukungnya. Sebaliknya, mereka mengandalkan pembungkusan kode yang relatif rumit di sekitar transaksi Ethereum standar. Ethereum dapat mengubah hal ini dengan mengizinkan kontrak pintar untuk memulai transaksi, menangani logika yang diperlukan dalam kontrak pintar Ethereum, bukan di luar rantai. Menambahkan logika ke dalam kontrak pintar juga meningkatkan desentralisasi Ethereum karena menghilangkan kebutuhan untuk "relayers" yang dikelola oleh pengembang dompet guna menerjemahkan pesan yang ditandatangani oleh pengguna ke dalam transaksi Ethereum reguler. + + + +EIP-2771 memperkenalkan konsep transaksi meta yang memungkinkan pihak ketiga untuk membayar biaya gas pengguna tanpa membuat perubahan pada protokol Ethereum. Idenya adalah bahwa transaksi yang ditandatangani oleh pengguna dikirim ke kontrak `Pengirim`. Pengirim adalah entitas tepercaya yang memverifikasi bahwa transaksi tersebut valid sebelum mengirimkannya ke relai gas. Hal ini dilakukan secara di luar rantai, sehingga tidak perlu membayar gas. Relai gas meneruskan transaksi ke kontrak `Penerima`, membayar gas yang diperlukan agar transaksi dapat dieksekusi di Ethereum. Transaksi dieksekusi jika `Pengirim` dikenal dan dipercaya oleh `Penerima`. Model ini memudahkan pengembang untuk mengimplementasikan transaksi tanpa gas bagi pengguna. + + + + + +EIP-4337 adalah langkah pertama menuju dukungan dompet kontrak pintar asli dengan cara yang terdesentralisasi tanpa memerlukan perubahan pada protokol Ethereum. Alih-alih memodifikasi lapisan konsensus untuk mendukung dompet kontrak pintar, sistem baru ditambahkan secara terpisah ke protokol gosip transaksi normal. Sistem tingkat yang lebih tinggi ini dibangun di sekitar objek baru yang disebut UserOperation yang mengemas tindakan dari pengguna bersama dengan tanda tangan yang relevan. Objek UserOperation ini kemudian disiarkan ke dalam kolam memori khusus di mana validator dapat mengumpulkannya ke dalam "transaksi paket". Transaksi paket mewakili urutan banyak UserOperations individu dan dapat dimasukkan ke dalam blok Ethereum seperti halnya transaksi normal, dan akan diambil oleh validator menggunakan model seleksi pemaksimalan biaya yang serupa. + +Cara kerja dompet juga akan berubah di bawah EIP-4337. Daripada setiap dompet mengimplementasikan kembali logika keamanan yang umum namun rumit, fungsi-fungsi tersebut akan dialihdayakan ke kontrak dompet global yang dikenal sebagai "titik masuk". Ini akan menangani operasi seperti membayar biaya dan mengeksekusi kode EVM sehingga pengembang dompet dapat fokus untuk memberikan pengalaman pengguna yang sangat baik. + +Catatan kontrak titik masuk EIP 4337 telah digunakan pada Jaringan Utama Ethereum pada tanggal 1 Maret 2023. Anda dapat melihat kontraknya di Etherscan. + + + + + +EIP-2938 bertujuan untuk memperbarui protokol Ethereum dengan memperkenalkan jenis transaksi baru, AA_TX_TYPE yang mencakup tiga bidang: nonce, target, dan data, di mana nonce adalah penghitung transaksi, target adalah alamat kontrak titik masuk, dan data adalah kode bita EVM. Untuk menjalankan transaksi-transaksi ini, dua instruksi baru (dikenal sebagai opcode) harus ditambahkan ke EVM: NONCE dan PAYGAS. Opcode NONCE melacak urutan transaksi dan PAYGAS menghitung dan menarik gas yang diperlukan untuk menjalankan transaksi dari saldo kontrak. Fitur-fitur baru ini memungkinkan Ethereum untuk mendukung dompet kontrak pintar secara alami karena infrastruktur yang diperlukan sudah terpasang pada protokol Ethereum. + +Perhatikan bahwa EIP-2938 saat ini tidak aktif. Komunitas saat ini lebih menyukai EIP-4337 karena tidak memerlukan perubahan pada protokol. + + + + + +EIP-3074 bertujuan untuk memperbarui akun yang dimiliki oleh Ethereum secara eksternal dengan mengizinkannya untuk mendelegasikan kontrol kepada kontrak pintar. Ini berarti logika kontrak pintar dapat menyetujui transaksi yang berasal dari EOA. Hal ini akan memungkinkan fitur-fitur seperti sponsor gas dan transaksi berkelompok. Agar dapat berfungsi, dua opcode baru harus ditambahkan ke EVM: AUTH dan AUTHCALL. Dengan EIP-3074, manfaat dompet kontrak pintar tersedia tanpa memerlukan kontrak - sebagai gantinya, jenis kontrak tanpa negara, tanpa kepercayaan, dan tidak dapat ditingkatkan yang dikenal sebagai "invoker" yang menangani transaksi. + +Perhatikan bahwa EIP-3074 saat ini tidak aktif. Komunitas saat ini lebih menyukai EIP-4337 karena tidak memerlukan perubahan pada protokol. + + + +## Kemajuan saat ini {#current-progress} + +Dompet kontrak pintar sudah tersedia, tetapi lebih banyak peningkatan diperlukan untuk membuatnya terdesentralisasi dan tanpa izin. EIP-4337 adalah proposal matang yang tidak memerlukan perubahan apa pun pada protokol Ethereum, sehingga sangat mungkin untuk diimplementasikan dengan cepat. Namun, peningkatan yang mengubah protokol Ethereum saat ini tidak dalam pengembangan aktif, sehingga perubahan tersebut mungkin membutuhkan waktu lebih lama untuk dikirimkan. Hal ini juga memungkinkan bahwa abstraksi akun dicapai dengan cukup baik oleh EIP-4337 sehingga tidak ada perubahan protokol yang diperlukan. + +## Bacaan lebih lanjut {#further-reading} + +- [erc4337.io](https://www.erc4337.io/) +- [Diskusi panel abstraksi akun dari Devcon Bogota](https://www.youtube.com/watch?app=desktop&v=WsZBymiyT-8) +- ["Mengapa abstraksi akun adalah pengubah permainan untuk dapps" dari Devcon Bogota](https://www.youtube.com/watch?v=OwppworJGzs) +- ["Abstraksi akun ELI5" dari Devcon Bogota](https://www.youtube.com/watch?v=QuYZWJj65AY) +- [Catatan "Jalan Menuju Abstraksi Akun" dari Vitalik](https://notes.ethereum.org/@vbuterin/account_abstraction_roadmap#Transaction-inclusion-lists) +- [Postingan blog Vitalik tentang dompet pemulihan sosial](https://vitalik.ca/general/2021/01/11/recovery.html) +- [Catatan EIP-2938](https://hackmd.io/@SamWilsn/ryhxoGp4D#What-is-EIP-2938) +- [Dokumentasi EIP-2938](https://eips.ethereum.org/EIPS/eip-2938) +- [Catatan EIP-4337](https://medium.com/infinitism/erc-4337-account-abstraction-without-ethereum-protocol-changes-d75c9d94dc4a) +- [Dokumentasi EIP-4337](https://eips.ethereum.org/EIPS/eip-4337) +- [Dokumentasi EIP-2771](https://eips.ethereum.org/EIPS/eip-2771) +- ["Dasar-dasar Abstraksi Akun" - Apa itu Abstraksi Akun Bagian I](https://www.alchemy.com/blog/account-abstraction) diff --git a/src/content/translations/id/roadmap/beacon-chain/index.md b/src/content/translations/id/roadmap/beacon-chain/index.md index 8ee144be626..b1405f4d2e8 100644 --- a/src/content/translations/id/roadmap/beacon-chain/index.md +++ b/src/content/translations/id/roadmap/beacon-chain/index.md @@ -4,64 +4,71 @@ description: Belajar tentang Rantai Suar - peningkatan yang memperkenalkan bukti lang: id template: upgrade image: ../../../../../assets/upgrades/core.png -summaryPoint1: Rantai Suar tidak mengubah apa pun terkait Ethereum yang kita gunakan saat ini. -summaryPoint2: Rantai Suar akan mengoordinasikan jaringan, yang berfungsi sebagai lapisan konsensus. -summaryPoint3: Rantai Suar memperkenalkan bukti taruhan ke ekosistem Ethereum. -summaryPoint4: Anda mungkin mengenalnya sebagai "Fase 0" pada roadmap teknis. +summaryPoint1: Rantai Suar memperkenalkan bukti taruhan ke dalam ekosistem Ethereum. +summaryPoint2: Rantai ini digabungkan dengan rantai bukti kerja Ethereum yang asli pada bulan September 2022. +summaryPoint3: Rantai Suar memperkenalkan logika konsensus dan protokol gosip blok yang sekarang mengamankan Ethereum. --- - Rantai Suar yang diluncurkan pada siang hari, 1 Desember 2020 waktu UTC. Untuk mempelajari lebih lanjut, jelajahi data ini. Jika Anda ingin membantu memvalidasi rantai, Anda dapat menaruhkan ETH Anda. + Rantai Suar dikirimkan pada tanggal 1 Desember 2020, dan meresmikan bukti taruhan sebagai mekanisme konsensus Ethereum dengan peningkatan Penggabungan pada tanggal 15 September 2022. -## Apa yang dilakukan oleh Rantai Suar? {#what-does-the-beacon-chain-do} +## Apa yang dimaksud dengan Rantai Suar? {#what-is-the-beacon-chain} + +Rantai Suar adalah nama rantai blok bukti taruhan asli yang diluncurkan pada tahun 2020. Ini dibuat untuk memastikan logika konsensus bukti taruhan yang baik dan berkelanjutan sebelum mengaktifkannya di Jaringan Utama Ethereum. Oleh karena itu, ia berjalan bersama dengan Ethereum bukti kerja yang asli. Rantai Suar adalah sebuah rantai blok 'kosong', tetapi mematikan bukti kerja dan mengaktifkan bukti taruhan pada Ethereum membutuhkan instruksi kepada Rantai Suar untuk menerima data transaksi dari klien eksekusi, menggabungkannya ke dalam blok-blok, dan kemudian mengaturnya ke dalam sebuah rantai blok dengan menggunakan sebuah mekanisme konsensus berbasis bukti taruhan. Pada saat yang sama, klien Ethereum yang asli mematikan penambangan, penyebaran blok, dan logika konsensus mereka, dan menyerahkan semuanya kepada Rantai Suar. Acara ini dikenal sebagai [Penggabungan](/roadmap/merge/). Setelah Penggabungan terjadi, tidak ada lagi dua rantai blok. Sebagai gantinya, hanya ada satu bukti taruhan Ethereum, yang sekarang membutuhkan dua klien yang berbeda per simpul. Rantai Suar sekarang menjadi lapisan konsensus, sebuah jaringan klien konsensus rekan-ke-rekan yang menangani gosip blok dan logika konsensus, sementara klien asli membentuk lapisan eksekusi, yang bertanggung jawab untuk menggosipkan dan mengeksekusi transaksi, dan mengelola status Ethereum. Kedua lapisan tersebut dapat berkomunikasi satu sama lain menggunakan API Engine. -Rantai Suar akan mengadakan atau mengoordinasi jaringan yang sudah diperluas dari [shard](/roadmap/danksharding/) dan [penaruh](/staking/). Tapi itu tidak akan sama seperti [Jaringan Utama Ethereum](/glossary/#mainnet) saat ini. Rantai suar tidak bisa menangani akun ataupun kontrak pintar. +## Apa yang dilakukan oleh Rantai Suar? {#what-does-the-beacon-chain-do} -Peran Rantai Suar akan berubah seiring berjalannya waktu, namun rantai ini merupakan komponen dasar untuk [jaringan Ethereum yang aman, berkelanjutan, dan terukur yang sedang kami kerjakan](/roadmap/vision/). +Rantai Suar adalah nama yang diberikan kepada buku besar akun yang melakukan dan mengkoordinasikan jaringan [penaruh](/staking/) sebelum para penaruh tersebut mulai memvalidasi blok Ethereum yang sebenarnya. Lapisan ini tidak memproses transaksi atau menangani interaksi kontrak pintar karena hal itu dilakukan di lapisan eksekusi. Rantai Suar bertanggung jawab untuk hal-hal seperti penanganan blok dan pengesahan, menjalankan algoritma pilihan garpu, dan mengelola imbalan, dan penalti. Baca lebih lanjut di [halaman arsitektur simpul](/developers/docs/nodes-and-clients/node-architecture/#node-comparison). -## Fitur-fitur Rantai Suar {#beacon-chain-features} +## Dampak Rantai Suar {#beacon-chain-features} ### Memperkenalkan penaruhan {#introducing-staking} -Rantai Suar akan memperkenalkan [bukti taruhan](/developers/docs/consensus-mechanisms/pos/) kepada Ethereum. Ini adalah cara baru untuk anda membantu mempertahankan keamanan Ethereum. Bayangkan ini sebagai sebuah kebaikan umum yang akan membuat Ethereum lebih sehat dan menghasilkan lebih banyak ETH dalam prosesnya. Pada praktiknya, itu akan melibatkan Anda untuk menaruhkan ETH dengan tujuan mengaktifkan perangkat lunak validator. Sebagai validator Anda akan memroses transaksi dan menciptakan blok-blok baru di dalam rantai. +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 dan menjadi validator lebih mudah daripada [menambang](/developers/docs/mining/) (itulah bagaimana saat ini jaringan aman). Ini diharapkan dapat membantu membuat Ethereum lebih aman dalam jangka panjang. Semakin banyak orang berpartisipasi dalam jaringan ini, makin terdesentralisasi dan amanlah jaringan ini dari 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. + +Dan menggunakan bukti taruhan sebagai mekanisme konsensus adalah komponen dasar untuk [Ethereum yang aman, ramah lingkungan, dan dapat diskalakan yang kita miliki saat ini](/roadmap/vision/). -Jika Anda tertarik untuk menjadi validator dan membantu mengamankan Rantai Suar, pelajari selengkapnya tentang penaruhan. + Jika Anda tertarik untuk menjadi validator dan membantu mengamankan Ethereum, pelajari lebih lanjut tentang penaruhan. -Ini juga merupakan perubahan penting untuk peningkatan lainnya: [rantai shard](/roadmap/danksharding/). +### Menyiapkan untuk pecahan {#setting-up-for-sharding} + +Sejak Rantai Suar bergabung dengan Jaringan Utama Ethereum yang asli, komunitas Ethereum mulai mencari cara untuk penskalaan jaringan. -### Menyiapkan rantai shard {#setting-up-for-shard-chains} +Bukti taruhan memiliki keuntungan karena memiliki registri semua produsen blok yang disetujui pada waktu tertentu, masing-masing dengan ETH yang dipertaruhkan. Registri ini menetapkan panggung untuk kemampuan membagi dan menaklukkan, tetapi dengan andal membagi tanggung jawab jaringan tertentu. -Setelah Jaringan Utama bergabung dengan Rantai Suar, peningkatan berikutnya akan memperkenalkan rantai shard ke jaringan bukti taruhan. "Shard" ini akan meningkatkan kapasitas jaringan dan meningkatkan kecepatan transaksi dengan memperluas jaringan menjadi 64 blockchain. Rantai Suar adalah langkah penting utama dalam mengenalkan rantai shard, karena membutuhkan penaruhan agar berfungsi dengan aman. +Tanggung jawab ini berbeda dengan bukti kerja, di mana penambang tidak memiliki kewajiban terhadap jaringan dan dapat berhenti menambang dan mematikan perangkat lunak simpul mereka secara permanen dalam sekejap tanpa ada konsekuensi. Juga tidak ada registri pengusul blok yang dikenal dan tidak ada cara yang dapat diandalkan untuk membagi tanggung jawab jaringan dengan aman. -Nantinya Rantai Suar juga akan bertangung jawab untuk para penaruh yang dipilih secara acak untuk mengesahkan rantai shard. Ini adalah kunci untuk membuat para penaruh sulit berkolusi dan mengambil alih shard. Ini berarti mereka mempunyai [kesempatan kurang dari 1 dalam satu triliun](https://medium.com/@chihchengliang/minimum-committee-size-explained-67047111fa20). +[Lebih lanjut tentang pecahan](/roadmap/danksharding/) -## Hubungan antar Peningkatan {#relationship-between-upgrades} +## Hubungan antar peningkatan {#relationship-between-upgrades} Semua peningkatan Ethereum saling terkait. Jadi ayo kita ingat kembali bagaimana Rantai Suar memengaruhi peningkatan lainnya. -### Jaringan Utama dan Rantai Suar {#mainnet-and-beacon-chain} +### Rantai Suar dan Penggabungan {#merge-and-beacon-chain} -Rantai Suar, pada awalnya, akan hadir terpisah dari Jaringan Utama Ethereum yang kita gunakan saat ini. Tetapi mereka akan disatukan ke depannya. Rencananya adalah "menggabungkan" Jaringan Utama ke dalam sistem bukti taruhan yang dikontrol dan dikoordinasi oleh Rantai Suar. +Pada awalnya, Rantai Suar ada secara terpisah dari Jaringan Utama Ethereum, tetapi keduanya digabungkan pada tahun 2022. - Penggabungan + Penggabungan -### Shard dan Rantai Suar {#shards-and-beacon-chain} +### Pecahan dan Rantai Suar {#shards-and-beacon-chain} -Rantai shard hanya dapat masuk dalam ekosistem Ethereum dengan mekanisme konsesus bukti taruhan. Rantai Suar akan memperkenalkan penaruhan, menyiapkan jalan bagi peningkatan rantai shard berikutnya. +Pecahan hanya dapat masuk ke dalam ekosistem Ethereum dengan aman dengan adanya mekanisme konsensus bukti taruhan. Rantai Suar memperkenalkan penaruhan, yang 'bergabung' dengan Jaringan Utama, membuka jalan bagi pecahan untuk membantu meningkatkan skala Ethereum. - Rantai shard + Rantai shard - - -## Berinteraksi dengan Rantai Suar {#interact-with-beacon-chain} +## Bacaan Lebih Lanjut - +- [Lebih lanjut tentang peningkatan Ethereum di masa depan](/roadmap/vision) +- [Lebih lanjut tentang arsitektur simpul](/developers/docs/nodes-and-clients/node-architecture) +- [Lebih lanjut tentang bukti taruhan](/developers/docs/consensus-mechanisms/pos) diff --git a/src/content/translations/id/roadmap/danksharding/index.md b/src/content/translations/id/roadmap/danksharding/index.md new file mode 100644 index 00000000000..2f374f1908a --- /dev/null +++ b/src/content/translations/id/roadmap/danksharding/index.md @@ -0,0 +1,91 @@ +--- +title: Danksharding +description: Pelajari tentang Proto-Danksharding dan Danksharding - dua peningkatan berurutan untuk penskalaan Ethereum. +lang: id +summaryPoints: + - Danksharding adalah peningkatan multi-fase untuk meningkatkan skalabilitas dan kapasitas Ethereum. + - Tahap pertama, Proto-Danksharding, menambahkan blob data ke dalam blok + - Blob data menawarkan cara rollup yang lebih murah untuk memposting data ke Ethereum dan biaya tersebut dapat diteruskan kepada pengguna dalam bentuk biaya transaksi yang lebih rendah. + - Nantinya, Danksharding penuh akan menyebarkan tanggung jawab untuk memverifikasi blob data di seluruh subset simpul, yang selanjutnya akan melakukan penskalaan Ethereum menjadi lebih dari 100.000 transaksi per detik. +--- + +# Danksharding {#danksharding} + +**Danksharding** adalah bagaimana Ethereum menjadi rantai blok yang benar-benar dapat diskalakan, tetapi ada beberapa peningkatan protokol yang diperlukan untuk mencapainya. **Proto-Danksharding** adalah langkah menengah di sepanjang prosesnya. Keduanya bertujuan untuk membuat transaksi di Lapisan ke-2 semurah mungkin bagi pengguna dan harus meningkatkan skala Ethereum hingga >100.000 transaksi per detik. + +## Apa yang dimaksud dengan Proto-Danksharding? {#what-is-protodanksharding} + +Proto-Danksharding, juga dikenal sebagai [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844), adalah sebuah cara [rollup](/layer2/#rollups) untuk menambahkan data yang lebih murah ke dalam blok. Nama ini berasal dari dua peneliti yang mengusulkan ide tersebut: Protolambda dan Dankrad Feist. Saat ini, rollup terbatas pada seberapa murahnya mereka dapat melakukan transaksi pengguna karena mereka memposting transaksi mereka dalam `CALLDATA`. Ini mahal karena diproses oleh semua simpul Ethereum dan berada di rantai selamanya, meskipun rollup hanya membutuhkan data untuk waktu yang singkat. Proto-Danksharding memperkenalkan blob data yang dapat dikirim dan dilampirkan ke blok. Data dalam blob ini tidak dapat diakses oleh EVM dan secara otomatis dihapus setelah periode waktu tertentu (1-3 bulan). Ini berarti rollup dapat mengirimkan data mereka dengan lebih murah dan meneruskan penghematan tersebut kepada pengguna akhir dalam bentuk transaksi yang lebih murah. + + + +Rollup adalah cara untuk menskalakan Ethereum dengan mengelompokkan transaksi di luar rantai dan kemudian memposting hasilnya ke Ethereum. Rollup pada dasarnya terdiri dari dua bagian: data dan pemeriksaan eksekusi. Data tersebut merupakan urutan lengkap dari transaksi yang sedang diproses oleh rollup untuk menghasilkan perubahan status yang diposting ke Ethereum. Pemeriksaan eksekusi adalah eksekusi ulang transaksi-transaksi tersebut oleh beberapa aktor yang jujur ("prover") untuk memastikan bahwa perubahan status yang diusulkan adalah benar. Agar pemeriksaan eksekusi dapat dilakukan, data transaksi harus tersedia cukup lama agar dapat diunduh dan diperiksa oleh siapa pun. Ini berarti setiap perilaku tidak jujur dari rollup sequencer dapat diidentifikasi dan ditantang oleh prover. Namun demikian, ini tidak harus tersedia selamanya. + + + + + +Rollup memposting komitmen ke data transaksinya di dalam rantai dan juga membuat data aktual tersedia dalam blob data. Ini berarti pembuktian dapat memeriksa apakah komitmen tersebut valid atau menantang data yang mereka anggap salah. Pada tingkat simpul, blob data disimpan di klien konsensus. Klien konsensus membuktikan bahwa mereka telah melihat data tersebut dan telah disebarkan di seluruh jaringan. Jika data disimpan selamanya, klien-klien ini akan membengkak dan menyebabkan kebutuhan perangkat keras yang besar untuk menjalankan simpul. Sebagai gantinya, data secara otomatis dipangkas dari simpul setiap 1-3 bulan. Pengesahan klien konsensus menunjukkan bahwa ada kesempatan yang cukup bagi para prover untuk memverifikasi data. Data aktual dapat disimpan di luar rantai oleh operator rollup, pengguna, atau lainnya. + + + +### Bagaimana data blob diverifikasi? {#how-are-blobs-verified} + +Rollup memposting transaksi yang mereka lakukan dalam blob data. Mereka juga memposting "komitmen" terhadap data. Mereka melakukan ini dengan menyesuaikan fungsi polinomial pada data. Fungsi ini kemudian dapat dievaluasi pada berbagai titik. Sebagai contoh, jika kita mendefinisikan fungsi yang sangat sederhana `f(x) = 2x-1` maka kita dapat mengevaluasi fungsi ini untk `x = 1`, `x = 2`, `x = 3` yang memberi hasil `1, 3, 5`. Peribahasa menerapkan fungsi yang sama pada data dan mengevaluasinya pada titik-titik yang sama. Jika data asli diubah, fungsi tidak akan sama, dan oleh karena itu, nilai yang dievaluasi pada setiap titik juga tidak sama. Pada kenyataannya, komitmen dan pembuktian menjadi lebih rumit karena dibungkus dengan fungsi kriptografi. + +### Apa itu KZG? {#what-is-kzg} + +KZG adalah singkatan dari Kate-Zaverucha-Goldberg - nama dari tiga [penulis asli](https://link.springer.com/chapter/10.1007/978-3-642-17373-8_11) dari skema yang mereduksi blob data menjadi sebuah ["komitmen" kriptografi](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html) yang kecil. Blob data yang dikirimkan oleh rollup harus diverifikasi untuk memastikan rollup tidak bermasalah. Ini melibatkan prover yang mengeksekusi ulang transaksi dalam blob untuk memeriksa apakah komitmen itu valid. Hal ini secara konseptual sama dengan cara klien eksekusi memeriksa keabsahan transaksi Ethereum pada lapisan 1 menggunakan bukti Merkle. KZG adalah sebuah bukti alternatif yang sesuai dengan persamaan polinomial pada data. Komitmen mengevaluasi polinomial pada beberapa titik data rahasia. Seorang prover akan memasukkan polinomial yang sama ke dalam data dan mengevaluasinya pada nilai yang sama, memeriksa apakah hasilnya sama. Ini adalah cara untuk memverifikasi data yang kompatibel dengan teknik zero-knowledge yang digunakan oleh beberapa rollup dan pada akhirnya bagian lain dari protokol Ethereum. + +### Apa yang dimaksud dengan Upacara KZG? {#what-is-a-kzg-ceremony} + +Upacara KZG adalah cara bagi banyak orang dari seluruh komunitas Ethereum untuk menghasilkan serangkaian angka acak rahasia yang dapat digunakan untuk memverifikasi beberapa data. Sangat penting bahwa rangkaian angka ini tidak diketahui dan tidak dapat dibuat ulang oleh siapa pun. Untuk memastikan hal ini, setiap orang yang berpartisipasi dalam upacara ini menerima seutas tali dari peserta sebelumnya. Mereka kemudian membuat beberapa nilai acak baru (misalnya dengan mengizinkan peramban mereka untuk mengukur pergerakan mouse mereka) dan mencampurkannya dengan nilai sebelumnya. Mereka kemudian mengirimkan nilai tersebut ke peserta berikutnya dan menghancurkannya dari mesin lokal mereka. Selama satu orang dalam upacara tersebut melakukan hal ini dengan jujur, nilai akhirnya tidak akan dapat diketahui oleh penyerang. Upacara EIP-4844 KZG terbuka untuk umum dan puluhan ribu orang berpartisipasi untuk menambahkan entropi mereka sendiri. Agar upacara dapat dirusak, 100% dari para peserta harus secara aktif tidak jujur. Dari sudut pandang peserta, jika mereka tahu bahwa mereka jujur, tidak perlu mempercayai orang lain karena mereka tahu bahwa mereka telah mengamankan upacara tersebut (mereka secara individu memenuhi persyaratan 1 dari N peserta yang jujur). + + + +Ketika sebuah rollup memposting data dalam sebuah blob, mereka memberikan "komitmen" yang mereka posting pada rantai. Komitmen ini merupakan hasil evaluasi kecocokan polinomial terhadap data pada titik-titik tertentu. Titik-titik ini ditentukan oleh angka acak yang dihasilkan dalam upacara KZG. Prover kemudian dapat mengevaluasi polinomial pada titik-titik yang sama untuk memverifikasi data - jika mereka sampai pada nilai yang sama, maka data tersebut benar. + + + + + +Jika seseorang mengetahui lokasi acak yang digunakan untuk komitmen, maka akan mudah bagi mereka untuk membuat polinomial baru yang sesuai dengan titik-titik tertentu (yaitu "tabrakan"). Ini berarti mereka bisa menambahkan atau menghapus data dari blob dan tetap memberikan bukti yang sah. Untuk mencegah hal ini, alih-alih memberikan pembuktian lokasi rahasia yang sebenarnya, mereka benar-benar menerima lokasi yang dibungkus dalam "kotak hitam" kriptografi menggunakan kurva elips. Ini secara efektif mengacak nilai sedemikian rupa sehingga nilai asli tidak dapat direkayasa, tetapi dengan beberapa pembuktian aljabar yang cerdas dan pemeriksa masih dapat mengevaluasi polinomial pada titik-titik yang diwakilinya. + + + + + Baik Danksharding maupun Proto-Danksharding tidak mengikuti model "pecahan" tradisional yang bertujuan untuk membagi rantai blok menjadi beberapa bagian. Rantai pecahan tidak lagi menjadi bagian dari peta perjalanan. Sebagai gantinya, Danksharding menggunakan pengambilan sampel data terdistribusi di seluruh blob untuk menskalakan Ethereum. Ini jauh lebih sederhana untuk diterapkan. Model ini kadang-kadang disebut sebagai "data-pecahan". + + +## Apa yang dimaksud dengan Danksharding? {#what-is-danksharding} + +Danksharding adalah realisasi penuh dari penskalaan rollup yang dimulai dengan Proto-Danksharding. Danksharding akan memberikan ruang yang sangat besar di Ethereum untuk melakukan rollup untuk membuang data transaksi yang telah dikompresi. Ini berarti Ethereum akan dapat mendukung ratusan rollup individu dengan mudah dan membuat jutaan transaksi per detik menjadi kenyataan. + +Cara kerjanya adalah dengan memperluas blob yang melekat pada blok dari 1 pada Proto-Danksharding menjadi 64 pada Danksharding penuh. Perubahan lainnya yang diperlukan adalah pembaruan pada cara klien konsensus beroperasi untuk memungkinkan mereka menangani blob besar yang baru. Beberapa dari perubahan ini sudah ada di peta perjalanan untuk tujuan lain yang tidak terkait dengan Danksharding. Sebagai contoh, Danksharding mengharuskan pemisahan pengusul-pembangun untuk diimplementasikan. Ini adalah peningkatan yang memisahkan tugas membangun blok dan mengusulkan blok di seluruh validator yang berbeda. Demikian pula, pengambilan sampel ketersediaan data diperlukan untuk Danksharding, tetapi juga diperlukan untuk pengembangan klien yang sangat ringan yang tidak menyimpan banyak data historis ("klien tanpa kewarganegaraan"). + + + +Pemisahan pengusul-pembuat diperlukan untuk mencegah keharusan validator individual membuat komitmen dan bukti yang mahal untuk data blob sebesar 32MB. Hal ini akan memberikan beban yang terlalu berat bagi para penaruh rumahan dan mengharuskan mereka untuk berinvestasi pada perangkat keras yang lebih kuat, yang akan merugikan desentralisasi. Sebagai gantinya, pembuat blok khusus bertanggung jawab atas pekerjaan komputasi yang mahal ini. Kemudian, mereka membuat blok mereka tersedia bagi para pengusul blok untuk disiarkan. Pengusul blok hanya memilih blok yang paling menguntungkan. Siapa pun bisa memverifikasi blob dengan biaya yang murah dan cepat, artinya setiap validator biasa dapat memeriksa apakah pembangun blok berperilaku jujur. Ini memungkinkan blob besar diproses tanpa mengorbankan desentralisasi. Pembangun blok yang berperilaku buruk dapat dengan mudah dikeluarkan dari jaringan dan dihukum pemotongan imbalan - orang lain akan menggantikannya karena membangun blok adalah kegiatan yang menguntungkan. + + + + + +Pengambilan sampel ketersediaan data diperlukan oleh validator untuk dengan cepat dan efisien memverifikasi data blob. Dengan menggunakan pengambilan sampel ketersediaan data, para validator dapat yakin bahwa data blob tersedia dan tercatat dengan benar. Setiap validator dapat secara acak memilih beberapa titik data dan membuat bukti, artinya tidak ada validator yang harus memeriksa seluruh blob. Jika ada data yang hilang, hal itu akan segera teridentifikasi dan blob akan ditolak. + + + +### Kemajuan saat ini {#current-progress} + +Danksharding penuh masih beberapa tahun lagi. Namun, Proto-Danksharding seharusnya tiba dalam waktu yang relatif singkat. Pada saat penulisan (Feb 2023), upacara KZG masih terbuka dan telah menarik lebih dari 50.000 kontributor. [EIP](https://eips.ethereum.org/EIPS/eip-4844) untuk Proto-Danksharding sudah siap, spesifikasinya disetujui, dan klien telah mengimplementasikan prototipe yang saat ini sedang diuji dan disiapkan untuk produksi. Langkah selanjutnya adalah menerapkan perubahan tersebut di jaringan percobaan publik. Anda dapat tetap mendapatkan informasi terkini dengan menggunakan [daftar periksa kesiapan EIP 4844](https://github.com/ethereum/pm/blob/master/Breakout-Room/4844-readiness-checklist.md#client-implementation-status). + +### Bacaan lebih lanjut {#further-reading} + +- [Catatan Proto-Danksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq) - _Vitalik Buterin_ +- [Catatan Dankrad tentang Danksharding](https://notes.ethereum.org/@dankrad/new_sharding) +- [Dankrad, Proto, dan Vitalik membahas tentang Danksharding](https://www.youtube.com/watch?v=N5p0TB77flM) +- [Upacara KZG](https://ceremony.ethereum.org/) +- [Pemaparan Carl Beekhuizen tentang pengaturan tepercaya di konferensi Devcon](https://archive.devcon.org/archive/watch/6/the-kzg-ceremony-or-how-i-learnt-to-stop-worrying-and-love-trusted-setups/?tab=YouTube) +- [Lebih lanjut tentang pengambilan sampel ketersediaan data untuk blob](https://hackmd.io/@vbuterin/sharding_proposal#ELI5-data-availability-sampling) +- [Dankrad Feist tentang komitmen dan bukti KZG](https://youtu.be/8L2C6RDMV9Q) +- [Komitmen polinomial KZG](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html) diff --git a/src/content/translations/id/roadmap/future-proofing/index.md b/src/content/translations/id/roadmap/future-proofing/index.md new file mode 100644 index 00000000000..84dd323805d --- /dev/null +++ b/src/content/translations/id/roadmap/future-proofing/index.md @@ -0,0 +1,38 @@ +--- +title: Ethereum yang siap menghadapi masa depan +description: Peningkatan ini memperkuat Ethereum sebagai lapisan dasar terdesentralisasi yang tangguh untuk masa depan, apa pun yang akan terjadi. +lang: id +image: ../../../../../assets/roadmap/roadmap-future.png +alt: "Peta Perjalanan Ethereum" +template: roadmap +--- + +Beberapa bagian dari peta perjalanann tidak selalu diperlukan untuk penskalaan atau mengamankan Ethereum dalam waktu dekat, tetapi menyiapkan Ethereum untuk stabilitas dan keandalan jauh di masa depan. + +## Resistensi kuantum {#quantum-resistance} + +Beberapa kriptografi yang mengamankan Ethereum saat ini akan dikompromikan ketika komputasi kuantum menjadi kenyataan. Meskipun komputer kuantum mungkin masih beberapa dekade lagi untuk menjadi ancaman nyata bagi kriptografi modern, Ethereum dibangun untuk menjadi aman selama berabad-abad yang akan datang. Ini berarti membuat [Ethereum tahan kuantum](https://consensys.net/blog/developers/how-will-quantum-supremacy-affect-blockchain/) sesegera mungkin. + +Tantangan yang dihadapi oleh para pengembang Ethereum adalah protokol bukti taruhan saat ini bergantung pada skema tanda tangan yang sangat efisien yang dikenal sebagai BLS untuk mengumpulkan suara pada blok yang valid. Skema tanda tangan ini dipatahkan oleh komputer kuantum, tetapi alternatif tahan kuantum tidak seefisien itu. + +[Skema komitmen "KZG"](/roadmap/danksharding/#what-is-kzg) yang digunakan di beberapa tempat di seluruh Ethereum untuk menghasilkan rahasia kriptografi dikenal rentan terhadap kuantum. Saat ini, hal ini diakali dengan menggunakan "pengaturan tepercaya" di mana banyak pengguna menghasilkan keacakan yang tidak dapat direkayasa oleh komputer kuantum. Namun, solusi yang ideal adalah dengan menggabungkan kriptografi aman kuantum. Terdapat dua pendekatan utama yang dapat menjadi pengganti yang efisien untuk skema BLS: [berbasis STARK](https://hackmd.io/@vbuterin/stark_aggregation) dan [berbasis lattice](https://medium.com/asecuritysite-when-bob-met-alice/so-what-is-lattice-encryption-326ac66e3175) untuk penandatanganan. Ini masih dalam tahap penelitian dan pembuatan prototipe. + + Baca tentang KZG dan pengaturan tepercaya + +## Ethereum yang lebih sederhana dan lebih efisien {#simpler-more-efficient-ethereum} + +Kompleksitas menciptakan peluang untuk bug atau kerentanan yang dapat dieksploitasi oleh penyerang. Oleh karena itu, bagian dari peta perjalanan adalah menyederhanakan Ethereum dan menghapus kode yang telah bertahan melalui berbagai peningkatan tetapi tidak lagi diperlukan atau sekarang dapat ditingkatkan. Basis kode yang lebih ramping dan sederhana lebih mudah dipelihara dan dipahami oleh pengembang. + +Ada beberapa pembaruan yang akan dilakukan pada [Mesin Virtual Ethereum (EVM)](/developers/docs/evm) untuk membuatnya lebih sederhana dan efisien. Ini termasuk [menghapus opcode SELFDESTRUCT](https://hackmd.io/@vbuterin/selfdestruct) - perintah yang jarang digunakan yang tidak lagi diperlukan dan dalam beberapa situasi dapat berbahaya untuk digunakan, terutama jika digabungkan dengan peningkatan lain di masa depan pada model penyimpanan Ethereum. Klien Ethereum juga masih mendukung beberapa jenis transaksi lama yang sekarang dapat dihapus sepenuhnya. Cara penghitungan gas juga dapat ditingkatkan dan metode yang lebih efisien untuk aritmatika yang mendasari beberapa operasi kriptografi dapat digunakan. + +Demikian pula, ada pembaruan yang dapat dilakukan pada bagian lain dari klien Ethereum saat ini. Salah satu contohnya adalah klien eksekusi dan konsensus saat ini menggunakan jenis kompresi data yang berbeda. Akan jauh lebih mudah dan lebih intuitif untuk berbagi data di antara klien ketika skema kompresi disatukan di seluruh jaringan. + +## Kemajuan saat ini {#current-progress} + +Sebagian besar peningkatan yang diperlukan untuk membuktikan Ethereum di masa depan masih dalam tahap penelitian dan mungkin masih beberapa tahun lagi untuk diimplementasikan. Peningkatan seperti menghapus SELF-DESTRUCT dan menyelaraskan skema kompresi yang digunakan dalam klien eksekusi dan konsensus kemungkinan besar akan hadir lebih cepat daripada kriptografi tahan kuantum. + +**Bacaan lebih lanjut** + +- [Gas](/developers/docs/gas) +- [EVM](/developers/docs/evm) +- [Struktur data](/developers/docs/data-structures-and-encoding) diff --git a/src/content/translations/id/roadmap/index.md b/src/content/translations/id/roadmap/index.md new file mode 100644 index 00000000000..efa35914e5c --- /dev/null +++ b/src/content/translations/id/roadmap/index.md @@ -0,0 +1,117 @@ +--- +title: Peta Perjalanan Ethereum +description: Jalan menuju peningkatan skalabilitas, keamanan, dan keberlanjutan Ethereum. +lang: id +template: roadmap +image: ../../../../assets/roadmap/roadmap-main.png +alt: "Peta Perjalanan Ethereum" +summaryPoints: +buttons: + - label: Peningkatan lebih lanjut + toId: perubahan-apa-yang-akan-terjadi + - label: Peningkatan sebelumnya + to: /history/ + variant: ikhtisar +--- + +Ethereum sudah menjadi platform koordinasi global yang kuat, tetapi masih terus ditingkatkan. Serangkaian peningkatan yang ambisius akan meningkatkan Ethereum dari bentuknya saat ini menjadi platform yang berskala penuh dengan ketahanan maksimal. Berbagai peningkatan ini diuraikan dalam peta jalan Ethereum. + +**Untuk mempelajari tentang peningkatan Ethereum sebelumnya, harap buka halaman [Sejarah](/history/) kami** + +## Perubahan apa yang akan terjadi pada Ethereum? {#what-changes-are-coming} + +Peta jalan Ethereum menguraikan peningkatan spesifik yang akan dilakukan pada protokol di masa depan. Secara keseluruhan, peta jalan ini akan memberikan manfaat berikut kepada pengguna Ethereum: + + + + + + + + +## Mengapa Ethereum membutuhkan peta jalan? {#why-does-ethereum-need-a-roadmap} + +Ethereum ditingkatkan secara rutin untuk meningkatkan skalabilitas, keamanan, atau keberlanjutannya. Salah satu kekuatan inti Ethereum adalah menyesuaikan dengan ide-ide baru yang muncul dari penelitian dan pengembangan. Kemampuan beradaptasi memberikan fleksibilitas kepada Ethereum untuk mengatasi tantangan yang muncul dan mengikuti terobosan teknologi yang paling canggih. + + + +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. + +[Selengkapnya tentang tata kelola Ethereum](/governance/) + + + + +

    Apa itu ETH2?

    + +

    Istilah 'Eth2' sebelumnya digunakan untuk menggambarkan masa depan Ethereum sebelum beralih ke konsep bukti kepemilikan, tetapi istilah ini kemudian perlahan ditinggalkan karena ada terminologi lain yang lebih tepat. Istilah ini pada awalnya digunakan untuk membedakan jaringan Ethereum sebelum beralih ke konsep bukti kepemilikan dan jaringan setelahnya, atau terkadang digunakan untuk menyebut klien Ethereum yang lain (klien eksekusi terkadang disebut sebagai klien ETH1 dan klien konsensus terkadang disebut sebagai klien ETH2).

    + +
    + +## Apakah peta jalan Ethereum akan berubah seiring dengan waktu? {#will-ethereums-roadmap-change-over-time} + +Ya-hampir pasti. Peta jalan adalah rencana saat ini untuk meningkatkan Ethereum, yang mencakup rencana jangka pendek dan jangka panjang. Kami memperkirakan peta jalan ini akan berubah seiring dengan tersedianya informasi dan teknologi baru. + +Bayangkan peta jalan Ethereum sebagai sekelompok maksud untuk meningkatkan Ethereum; ini adalah hipotesis terbaik dari para peneliti dan pengembang inti tentang masa depan Ethereum yang paling optimal. + +## Kapan peta jalan ini akan berakhir? {#when-will-the-roadmap-be-finished} + +Ethereum akan mengimplementasikan beberapa peningkatan dalam enam bulan ke depan (misalnya, penarikan staking); peningkatan lainnya berprioritas lebih rendah dan kemungkinan besar tidak akan diimplementasikan dalam 5-10 tahun ke depan (misalnya, resistensi kuantum). Waktu yang tepat untuk setiap peningkatan sulit diprediksi karena banyak bagian dari peta jalan yang dikerjakan secara paralel dan dikembangkan dengan kecepatan yang berbeda. Urgensi peningkatan juga dapat berubah seiring waktu tergantung faktor eksternal (misalnya, lompatan mendadak kinerja dan ketersediaan komputer kuantum dapat menyebabkan lebih mendesaknya kebutuhan kriptografi quantum-resistant atau tahan terhadap serangan dari komputer kuantum). + +Salah satu cara berpikir untuk pengembangan Ethereum adalah dengan analogi evolusi biologis. Jaringan yang mampu beradaptasi dengan tantangan baru dan mempertahankan kondisinya lebih mungkin berhasil daripada jaringan yang menentang perubahan, meskipun seiring meningkatnya kinerja, skalabilitas, dan keamanan jaringan, makin sedikit perubahan protokol yang diperlukan. + +## Apakah ada yang harus saya lakukan ketika ada peningkatan? {#do-i-have-to-do-anything-when-there-is-an-upgrade} + +Peningkatan cenderung tidak berdampak pada pengguna akhir, kecuali meningkatkan pengalaman pengguna dan meningkatkan keamanan protokol serta mungkin lebih banyak opsi untuk cara berinteraksi dengan Ethereum. Pengguna akhir tidak diwajibkan untuk berpartisipasi aktif dalam peningkatan, dan juga tidak perlu melakukan apa pun untuk mengamankan aset mereka. Para operator simpul harus memperbarui klien mereka sebagai persiapan peningkatan. Beberapa peningkatan dapat menyebabkan perubahan bagi pengembang aplikasi. Misalnya, peningkatan pada masa kedaluwarsa riwayat dapat menyebabkan pengembang aplikasi mengambil data riwayat dari sumber referensi baru. + +## Bagaimana dengan The Verge, The Splurge, dll? {#what-about-the-verge-splurge-etc} + +[Vitalik Buterin mengajukan visi untuk peta jalan Ethereum](https://twitter.com/VitalikButerin/status/1588669782471368704) yang diorganisasikan dalam beberapa kategori yang dihubungkan dengan pengaruhnya terhadap arsitektur Ethereum. Termasuk di dalamnya: + +- Penggabungan: peningkatan yang terkait dengan peralihan dari konsep bukti kerja ke bukti kepemilikan +- Lonjakan: peningkatan yang terkait skalabilitas dengan rollup dan sharding pada data +- Ancaman: peningkatan yang terkait dengan resistansi terhadap sensor, desentralisasi, dan risiko protokol dari MEV +- The Verge: peningkatan yang terkait dengan mempermudah verifikasi blok +- Pembersihan: peningkatan yang terkait dengan penurunan biaya komputasi untuk menjalankan simpul dan menyederhanakan protokol +- The Splurge: peningkatan lain yang tidak cocok dengan kategori yang disebutkan sebelumnya. + +Kami memutuskan untuk tidak menggunakan terminologi ini karena kami ingin menggunakan model yang lebih sederhana dan lebih berpusat pada pengguna. Meskipun kami menggunakan istilah yang berpusat pada pengguna, visinya tetap sama dengan yang diajukan oleh Vitalik. + +## Bagaimana dengan sharding? {#what-about-sharding} + +Sharding adalah pemecahan rantai blok Ethereum agar subset validator hanya bertanggung jawab atas sebagian kecil dari total data. Metode ini awalnya dimaksudkan sebagai cara penskalaan Ethereum. Namun, rollup lapisan ke-2 telah berkembang jauh lebih cepat dari yang diperkirakan dan telah memberikan banyak penskalaan, serta akan memberikan lebih banyak lagi setelah penerapan Proto-Danksharding. Hal ini berarti "rantai pecahan" tidak diperlukan lagi dan telah dihapus dari peta jalan. + +## Mencari peningkatan teknis yang spesifik? {#looking-for-specific-technical-upgrades} + +- [Danksharding](/roadmap/danksharding) - Danksharding menyebabkan rollup lapisan ke-2 menjadi lebih murah bagi pengguna dengan menambahkan "blob" data ke blok Ethereum. +- [Penarikan staking](/staking/withdrawals) - Peningkatan Shanghai/Capella memungkinkan penarikan staking di Ethereum sehingga pengguna dapat membuka penguncian ETH yang ditaruh sebagai stake oleh mereka. +- [Finalitas ruang tunggal](/roadmap/single-slot-finality) - Daripada menunggu lima belas menit, blok bisa dipinang dan diselesaikan dalam ruang yang sama. Hal ini lebih praktis bagi aplikasi dan menjadi jauh lebih sulit untuk diserang. +- [Pemisahan pengusul-pembuat](/roadmap/pbs) - Memisahkan tugas pembuatan blok dan pengajuan blok pada berbagai validator akan menghasilkan cara yang lebih adil, lebih tahan sensor, dan efisien bagi Ethereum untuk mencapai konsensus. +- [Pemilihan pemimpin rahasia](/roadmap/secret-leader-election) - Kriptografi cerdas dapat digunakan untuk memastikan agar identitas pengusul blok terkini tidak diumumkan kepada publik sehingga melindunginya dari beberapa jenis serangan tertentu. +- [Abstraksi akun](/roadmap/account-abstraction) - Abstraksi akun adalah suatu tingkat peningkatan yang mendukung dompet kontrak pintar secara asli di Ethereum, sebagai pengganti penggunaan middleware yang rumit. +- [Pohon Verkle](/roadmap/verkle-trees) - Pohon Verkle adalah struktur data yang dapat digunakan untuk mengaktifkan klien tanpa keadaan di Ethereum. Klien "tanpa keadaan" ini hanya membutuhkan ruang penyimpanan yang sangat kecil, tetapi masih dapat memverifikasi blok baru. +- [Keadaan tanpa keadaan](/roadmap/statelessness) - klien tanpa keadaan akan dapat memverifikasi blok baru tanpa harus menyimpan data dalam jumlah besar. Hal ini akan memberikan semua manfaat menjalankan simpul dengan biaya yang sangat kecil dibandingkan dengan biaya yang berlaku saat ini. diff --git a/src/content/translations/id/roadmap/merge/index.md b/src/content/translations/id/roadmap/merge/index.md index 1da1439a1ef..a41c282fe05 100644 --- a/src/content/translations/id/roadmap/merge/index.md +++ b/src/content/translations/id/roadmap/merge/index.md @@ -1,67 +1,228 @@ --- title: Penggabungan -description: Pelajari tentang Penggabungan - ketika Jaringan Utama Ethereum berkolaborasi dengan sistem bukti taruhan Rantai Suar yang terkoordinir. +description: Pelajari tentang Penggabungan - ketika Jaringan Utama Ethereum mengadopsi bukti taruhan. lang: id template: upgrade image: ../../../../../assets/upgrades/merge.png -summaryPoint1: Pada akhirnya, Jaringan Utama Ethereum saat ini akan "bergabung" dengan sistem bukti taruhan rantai suar. -summaryPoint2: Ini akan menandai akhir bukti kerja untuk Ethereum, dan transisi penuh ke bukti taruhan. -summaryPoint3: Ini direncanakan mendahului peluncuran rantai shard. -summaryPoint4: Sebelumnya kami menyebutnya sebagai "docking." +summaryPoint1: Jaringan Utama Ethereum menggunakan bukti taruhan, tetapi tidak selalu demikian. +summaryPoint2: Peningkatan dari mekanisme bukti kerja yang asli menjadi bukti taruhan disebut Penggabungan. +summaryPoint3: Penggabungan mengacu pada penggabungan Jaringan Utama Ethereum asli dengan rantai blok bukti taruhan terpisah yang disebut Rantai Suar, yang sekarang ada sebagai satu rantai. +summaryPoint4: Penggabungan ini mengurangi konsumsi energi Ethereum sebesar ~99,95%. --- - - Peningkatan ini mewakilkan peralihan resmi ke konsensus bukti taruhan. Ini menghilangkan kebutuhan akan penambangan dengan energi besar, dan alih-alih mengamankan jaringan yang menggunakan ether yang ditaruhkan. Satu langkah yang sangat menyenangkan dalam mewujudkan visi Ethereum – lebih banyak skalabilitas, keamanan, dan keberlanjutan. + + Penggabungan telah dilaksanakan pada tanggal 15 September 2022. Hal ini menyelesaikan transisi Ethereum ke konsensus bukti taruhan, yang secara resmi tidak lagi menggunakan bukti kerja dan mengurangi konsumsi energi sebesar ~99,95%. -## Apa itu Penggabungan? {#what-is-the-docking} +## Apa itu Penggabungan? {#what-is-the-merge} -Penting untuk diingat bahwa pada awalnya [Rantai Suar](/roadmap/beacon-chain/) diluncurkan terpisah dari [Jaringan Utama](/glossary/#mainnet) - sistem rantai yang kita pakai saat ini. Jaringan Utama Ethereum terus diamankan oleh [bukti kerja](/developers/docs/consensus-mechanisms/pow/), sekalipun Rantai Suar beroperasi secara paralel menggunakan [bukti taruhan](/developers/docs/consensus-mechanisms/pos/). Penggabungan adalah ketika pada akhirnya kedua sistem ini menjadi satu. +Penggabungan adalah penyatuan lapisan eksekusi asli Ethereum (Jaringan Utama yang telah ada sejak [genesis](/history/#frontier)) dengan lapisan konsensus bukti taruhan baru, Rantai Suar. Ini menghilangkan kebutuhan akan penambangan yang boros energi dan sebagai gantinya memungkinkan jaringan untuk diamankan menggunakan ETH yang dipertaruhkan. Ini adalah langkah yang sangat menarik dalam mewujudkan visi Ethereum - skalabilitas, keamanan, dan keberlanjutan yang lebih baik. -Bayangkan Ethereum adalah sebuah kapal luar angkasa yang belum cukup siap untuk perjalanan antar bintang. Dengan Rantai Suar, komunitas telah membangun sebuah mesin baru dan lambung kapal yang lebih kuat. Ketika sudah saatnya, kapal yang ada saat ini akan bergabung dengan sistem baru, menjadi satu kapal, siap untuk melakukan perjalanan tahun cahaya yang intens, dan mengarungi alam semesta. + -## Penggabungan dengan Jaringan Utama {#docking-mainnet} +Pada awalnya, [Rantai Suar](/roadmap/beacon-chain/) dikirim secara terpisah dari [Jaringan Utama](/glossary/#mainnet). Jaringan Utama Ethereum - dengan semua akun, saldo, kontrak pintar, dan status rantai blok - tetap diamankan oleh [bukti kerja](/developers/docs/consensus-mechanisms/pow/), bahkan saat Rantai Suar berjalan paralel menggunakan [bukti taruhan](/developers/docs/consensus-mechanisms/pos/). Penggabungan adalah saat kedua sistem ini akhirnya digabungkan, dan bukti kerja digantikan secara permanen oleh bukti taruhan. -Ketika sudah siap, Jaringan Utama Ethereum akan "bergabung" dengan Rantai Suar, menjadi shard-nya sendiri yang menggunakan sistem bukti taruhan alih-alih [bukti kerja](/developers/docs/consensus-mechanisms/pow/). +Bayangkan Ethereum adalah sebuah pesawat luar angkasa yang diluncurkan sebelum cukup siap untuk melakukan perjalanan antarbintang. Dengan Rantai Suar, komunitas membuat mesin baru dan lambung kapal yang dikeraskan. Setelah pengujian yang signifikan, tiba saatnya untuk menukar mesin baru dengan mesin lama di tengah penerbangan. Penggabungan mesin baru yang lebih efisien ke dalam kapal yang sudah ada memungkinkannya untuk menjelajah beberapa tahun cahaya dan menjelajahi alam semesta. -Jaringan Utama akan memampukan pengoperasian kontrak pintar menjadi sistem bukti taruhan, ditambah dengan pengalaman, dan kondisi Ethereum saat ini, untuk memastikan transisi yang mulus bagi semua pemilik dan pengguna ETH. +## Penggabungan dengan Jaringan Utama {#merging-with-mainnet} -## Setelah Penggabungan {#after-the-merge} +Bukti kerja mengamankan Jaringan Utama Ethereum dari awal hingga Penggabungan. Hal ini memungkinkan rantai blok Ethereum yang kita semua kenal hadir pada bulan Juli 2015 dengan semua fitur-fiturnya yang sudah tidak asing lagi - transaksi, kontrak pintar, akun, dll. -Ini akan menandakan akhir dari bukti kerja untuk Ethereum dan memulai era Ethereum yang lebih berkelanjutan dan ramah lingkungan. Pada titik ini Ethereum akan satu langkah lebih dekat pada pencapaian penskalaan, keamanan, dan keberlanjutan penuh yang digariskan dalam [visi Ethereum](/roadmap/vision/). +Sepanjang sejarah Ethereum, para pengembang mempersiapkan diri untuk transisi dari bukti kerja ke bukti taruhan. Pada tanggal 1 Desember 2020, Rantai Suar dibuat sebagai rantai blok yang terpisah dari Jaringan Utama, berjalan secara paralel. -Penting untuk dicatat bahwa satu tujuan implementasi dari Penggabungan adalah kemudahan untuk mempercepat transisi dari sistem bukti kerja ke bukti taruhan. Pengembang sedang memusatkan usaha mereka pada transisi ini, dan mengurangi fitur tambahan yang bisa menunda pencapaian tujuan ini. +Rantai Suar pada awalnya tidak memproses transaksi Jaringan Utama. Sebaliknya, ia mencapai konsensus tentang keadaannya sendiri dengan menyetujui validator aktif dan saldo akun mereka. Setelah pengujian ekstensif, tiba saatnya bagi Rantai Suar untuk mencapai konsensus pada data dunia nyata. Setelah Penggabungan, Rantai Suar menjadi mesin konsensus untuk semua data jaringan, termasuk transaksi lapisan eksekusi dan saldo akun. -**Ini berati beberapa fitur, seperti kemampuan untuk menarik ETH yang dipertaruhkan, harus menunggu sedikit lebih lama setelah Penggabungan selesai.** Rencananya mencakup peningkatan "pembersihan" pascapenggabungan untuk menyelesaikan fitur ini, yang diharapkan terjadi sesegera mungkin setelah Penggabungan selesai. +Penggabungan ini merupakan peralihan resmi untuk menggunakan Rantai Suar sebagai mesin produksi blok. Penambangan tidak lagi menjadi sarana untuk menghasilkan blok yang valid. Sebagai gantinya, validator bukti taruhan telah mengadopsi peran ini dan sekarang bertanggung jawab untuk memproses keabsahan semua transaksi dan mengusulkan blok. + +Tidak ada sejarah yang hilang dalam Penggabungan. Ketika Jaringan Utama bergabung dengan Rantai Suar, Jaringan Utama juga menggabungkan seluruh sejarah transaksi Ethereum. + + +Transisi ke bukti taruhan ini mengubah cara penerbitan ether. Pelajari lebih lanjut tentang pengeluaran ether sebelum dan setelah Penggabungan. + + +### Pengguna dan pemegang {#users-holders} + +**Penggabungan tidak mengubah apa pun bagi pemegang/pengguna.** + +_Ini patut diulang_: Sebagai pengguna atau pemegang ETH atau aset digital lainnya di Ethereum, serta para staker non-simpul operator, **Anda tidak perlu melakukan apa pun dengan dana atau dompet Anda untuk mempertimbangkan Penggabungan.** ETH tetaplah ETH. Tidak ada yang namanya "ETH lama"/"ETH baru" atau "ETH1"/"ETH2" dan dompet bekerja sama persis setelah Penggabungan seperti yang mereka lakukan sebelumnya - orang yang memberi tahu Anda sebaliknya kemungkinan besar adalah penipu. + +Meskipun telah menukar bukti kerja, seluruh sejarah Ethereum sejak awal tetap utuh dan tidak diubah oleh transisi ke bukti taruhan. Semua dana yang tersimpan di dompet Anda sebelum Penggabungan masih dapat diakses setelah Penggabungan. **Tidak diperlukan tindakan untuk meningkatkan dari pihak Anda.** + +[Lebih lanjut tentang keamanan Ethereum](/security/#eth2-token-scam) + +### Operator simpul dan pengembang dapp {#node-operators-dapp-developers} + + + +Item-item tindakan utama meliputi: + +1. Jalankan _kedua_ klien konsensus dan klien eksekusi; titik akhir pihak ketiga untuk mendapatkan data eksekusi tidak lagi berfungsi sejak Penggabungan. +2. Autentikasi klien eksekusi dan konsensus dengan rahasia JWT bersama sehingga mereka dapat berkomunikasi dengan aman. +3. Tetapkan alamat `penerima biaya` untuk menerima tips biaya transaksi/MEV yang Anda peroleh. + +Tidak menyelesaikan dua hal pertama di atas akan mengakibatkan simpul Anda terlihat sebagai "offline" hingga kedua lapisan disinkronkan dan diautentikasi. + +Tidak menetapkan `penerima biaya` akan tetap memungkinkan validator Anda berperilaku seperti biasa, tetapi Anda akan kehilangan tips biaya yang tidak terbakar dan MEV yang seharusnya Anda dapatkan dari blok yang diajukan oleh validator Anda. + + + + +Hingga Penggabungan, klien eksekusi (seperti Geth, Erigon, Besu, atau Nethermind) sudah cukup untuk menerima, memvalidasi dengan benar, dan menyebarkan blok yang sedang digosipkan oleh jaringan. _Setelah Penggabungan_, validitas transaksi yang terkandung dalam muatan eksekusi sekarang juga bergantung pada validitas "blok konsensus" yang terkandung di dalamnya. + +Sebagai hasilnya, sebuah simpul Ethereum penuh sekarang membutuhkan klien eksekusi dan klien konsensus. Kedua klien ini bekerja bersama menggunakan API Engine yang baru. API Engine memerlukan autentikasi menggunakan rahasia JWT, yang disediakan untuk kedua klien yang memungkinkan komunikasi yang aman. + +Item-item tindakan utama meliputi: + +- Menginstal klien konsensus selain klien eksekusi +- Autentikasi klien eksekusi dan konsensus dengan rahasia JWT bersama sehingga mereka dapat berkomunikasi dengan aman satu sama lain. + +Tidak menyelesaikan item di atas akan mengakibatkan simpul Anda tampak "offline" hingga kedua lapisan disinkronkan dan diautentikasi. + + + + + +Penggabungan disertai dengan perubahan konsensus, yang juga mencakup perubahan yang terkait dengan:< + +
      +
    • struktur blok
    • +
    • pengaturan waktu ruang/blok
    • +
    • perubahan opcode
    • +
    • sumber keacakan di dalam rantai
    • +
    • konsep dari blok aman dan blok yang telah difinalisasi
    • +
    + +Untuk informasi lebih lanjut, lihat tulisan blog ini oleh Tim Beiko tentang Bagaimana Penggabungan Memengaruhi Lapisan Aplikasi Ethereum. + +
    + +## Penggabungan dan konsumsi energi {#merge-and-energy} + +Penggabungan ini menandai berakhirnya bukti kerja untuk Ethereum dan memulai era Ethereum yang lebih berkelanjutan dan ramah lingkungan. Konsumsi energi Ethereum turun sekitar 99,95%, menjadikan Ethereum sebagai rantai blok hijau. Pelajari lebih lanjut tentang [konsumsi energi Ethereum](/energy-consumption/). + +## Penggabungan dan penskalaan {#merge-and-scaling} + +Penggabungan juga membuka jalan untuk peningkatan skalabilitas lebih lanjut yang tidak mungkin dilakukan di bawah bukti kerja, mendekatkan Ethereum satu langkah lebih dekat untuk mencapai skala penuh, keamanan, dan keberlanjutan seperti yang diuraikan dalam [visi Ethereum](/roadmap/vision/)nya. + +## Kesalahpahaman tentang Penggabungan {#misconceptions} + + + +Ada dua jenis simpul Ethereum: simpul yang dapat mengusulkan blok dan simpul yang tidak. + +Simpul yang mengusulkan blok hanya sejumlah kecil dari total simpul di Ethereum. Kategori ini mencakup simpul penambangan di bawah bukti kerja (proof-of-work/PoW) dan simpul validator di bawah bukti kepemilikan (proof-of-stake/PoS). Kategori ini membutuhkan sumber daya ekonomi (seperti kekuatan hash GPU dalam bukti kerja atau ETH yang dipertaruhkan dalam bukti taruhan) sebagai imbalan atas kemampuan untuk sesekali mengusulkan blok berikutnya dan mendapatkan imbalan protokol. + +Simpul lain dalam jaringan (yaitu mayoritas) tidak perlu menyediakan sumber daya ekonomi apa pun di luar komputer kelas konsumen dengan penyimpanan yang tersedia sebesar 1-2 TB dan koneksi internet. Simpul-simpul ini tidak mengusulkan blok, tetapi mereka masih memiliki peran penting dalam mengamankan jaringan dengan meminta pertanggungjawaban dari semua pengusul blok dengan mendengarkan blok-blok baru dan memverifikasi keabsahannya pada saat kedatangan sesuai dengan aturan konsensus jaringan. Jika blok tersebut valid, simpul akan terus menyebarkannya melalui jaringan. Jika blok tidak valid karena alasan apa pun, perangkat lunak simpul akan mengabaikannya sebagai tidak valid dan menghentikan penyebarannya. + +Menjalankan simpul yang tidak memproduksi blok memungkinkan bagi siapa pun di bawah kedua mekanisme konsensus (bukti kerja atau bukti taruhan); ini sangat dianjurkan bagi semua pengguna jika mereka memiliki kemampuan. Menjalankan sebuah simpul sangat berharga bagi Ethereum dan memberikan manfaat tambahan bagi setiap individu yang menjalankannya, seperti peningkatan keamanan, privasi, dan ketahanan terhadap sensor. + +Kemampuan bagi siapa pun untuk menjalankan simpul mereka sendiri adalah mutlak penting untuk menjaga desentralisasi jaringan Ethereum. + +Lebih lanjut tentang menjalankan simpul Anda sendiri + + + + + +Biaya gas adalah produk dari permintaan jaringan relatif terhadap kapasitas jaringan. Penggabungan tidak lagi menggunakan bukti kerja, beralih ke bukti taruhan untuk konsensus, tetapi tidak secara signifikan mengubah parameter apa pun yang secara langsung memengaruhi kapasitas atau keluaran jaringan. + +Dengan peta perjalanan berbasis rollup, upaya difokuskan pada penskalaan aktivitas pengguna di lapisan ke-2, sambil memungkinkan Jaringan Utama lapisan ke-1 sebagai lapisan penyelesaian terdesentralisasi yang aman yang dioptimalkan untuk penyimpanan data rollup untuk membantu membuat transaksi rollup menjadi jauh lebih murah secara eksponensial. Transisi ke bukti taruhan merupakan langkah awal yang penting untuk mewujudkan hal ini. Lebih lanjut tentang gas dan biaya. + + + + +"Kecepatan" transaksi dapat diukur dengan beberapa cara, termasuk waktu untuk dimasukkan ke dalam blok dan waktu finalisasi. Kedua hal ini sedikit berubah, tetapi tidak begitu kentara bagi pengguna. + +Secara historis, pada bukti kerja, targetnya adalah memiliki blok baru setiap ~13,3 detik. Pada bukti taruhan, slot terjadi tepat setiap 12 detik, yang mana setiap slot merupakan kesempatan bagi validator untuk menerbitkan blok. Sebagian besar slot memiliki blok, tetapi belum tentu semuanya (misalnya, validator sedang offline). Pada bukti taruhan, blok diproduksi ~10% lebih sering dibandingkan dengan bukti kerja. Ini merupakan perubahan yang tidak terlalu signifikan dan kemungkinan tidak akan disadari oleh pengguna. + +Bukti taruhan memperkenalkan konsep finalitas transaksi yang sebelumnya tidak ada. Dalam bukti kerja, kemampuan untuk membalikkan sebuah blok menjadi lebih sulit secara eksponensial dengan setiap blok yang ditambang di atas transaksi, tetapi tidak pernah mencapai nol. Dalam bukti taruhan, blok digabungkan ke dalam periode waktu (rentang waktu 6,4 menit yang terdiri dari 32 peluang blok) yang akan dipilih oleh para validator. Ketika jangka waktu berakhir, para validator memberikan suara untuk memutuskan apakah jangka waktu tersebut 'dibenarkan' atau tidak. Jika validator setuju untuk membenarkan jangka waktu, maka epoch tersebut akan difinalisasi di jangka waktu berikutnya. Membatalkan transaksi yang telah difinalisasi tidak ekonomis karena akan memerlukan pengambilan dan pembakaran lebih dari sepertiga total ETH yang dipertaruhkan. + + + + + +Awalnya setelah Penggabungan, para staker hanya dapat mengakses tip biaya dan MEV yang diperoleh sebagai hasil dari usulan blok. Imbalan ini dikreditkan ke akun non-penaruhan yang dikendalikan oleh validator (dikenal sebagai penerima biaya), dan tersedia segera. Imbalan ini terpisah dari imbalan protokol untuk menjalankan tugas validator. + +Sejak upgrade jaringan Shanghai/Capella, para staker sekarang dapat menunjuk alamat penarikan untuk mulai menerima pembayaran otomatis dari saldo penaruhan berlebihan (ETH di atas 32 dari imbalan protokol). Upgrade ini juga memungkinkan kemampuan bagi validator untuk membuka kunci dan mengklaim seluruh saldo saat keluar dari jaringan. + +Lebih lanjut tentang penarikan staking + + + + +Sejak meningkatkan Shanghai/Capella mengizinkan penarikan, para validator memiliki insentif untuk menarik saldo penaruhan mereka yang melebihi 32 ETH, karena dana-dana tersebut tidak meningkatkan hasil dan sebaliknya terkunci. Tergantung pada APR (ditentukan oleh total ETH yang dipertaruhkan), mungkin ada insentif untuk keluar dari validatornya untuk mengklaim seluruh saldo atau bahkan mempertaruhkan lebih lagi menggunakan imbalannya untuk mendapatkan hasil lebih banyak. + +Namun, perlu dicatat bahwa keluar penuh dari validator dibatasi oleh protokol, dan hanya sejumlah terbatas validator yang diizinkan keluar setiap jangka waktu (setiap 6,4 menit). Batas ini bervariasi tergantung pada jumlah validator aktif, tetapi berjumlah sekitar 0,33% dari total ETH yang dipertaruhkan dapat keluar dari jaringan dalam satu hari. + +Hal ini mencegah terjadinya pengeluaran dana penaruhan secara massal. Selain itu, hal ini mencegah penyerang potensial yang memiliki akses ke sebagian besar total ETH yang dipertaruhkan untuk melakukan pelanggaran yang dapat dipotong dan keluar/menarik semua saldo validator yang melanggar pada jangka waktu yang sama sebelum protokol dapat memberlakukan hukuman pemotongan. + +APR juga disengaja dinamis, memungkinkan pasar para staker untuk menyeimbangkan seberapa banyak mereka bersedia dibayar untuk membantu mengamankan jaringan. Jika tingkatnya terlalu rendah, maka validator akan keluar dengan batas kecepatan yang ditentukan oleh protokol. Secara perlahan ini akan meningkatkan APR bagi semua yang tetap tinggal, menarik staker baru atau yang kembali lagi. + + +## Apa yang akan terjadi pada 'Eth2'? {#eth2} + +Istilah 'Eth2' telah dihentikan penggunaannya. Setelah menggabungkan 'Eth1' dan 'Eth2' menjadi satu rantai tunggal, tidak ada lagi kebutuhan untuk membedakan antara dua jaringan Ethereum; hanya ada Ethereum. + +Untuk mengurangi kebingungan, komunitas telah memperbarui istilah-istilah berikut ini: + +- 'Eth1' sekarang adalah 'lapisan eksekusi', yang menangani transaksi dan eksekusi. +- 'Eth2' sekarang adalah 'lapisan konsensus', yang menangani konsensus bukti taruhan. + +Pembaruan terminologi ini hanya mengubah konvensi penamaan; ini tidak mengubah tujuan atau peta jalan Ethereum. + +[Pelajari selengkapnya tentang penamaan ulang 'Eth2'](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) ## Hubungan antar peningkatan {#relationship-between-upgrades} Semua peningkatan Ethereum saling terkait. Jadi mari kita ringkas bagaimana Penggabungan ini berhubungan dengan peningkatan lain. -### Penggabungan dan Rantai Suar {#docking-and-beacon-chain} +### Penggabungan dan Rantai Suar {#merge-and-beacon-chain} + +Pengabungan mewakili adopsi resmi Rantai Suar sebagai lapisan konsensus baru untuk lapisan eksekusi Jaringan Utama asli. Sejak Penggabungan, para validator ditugaskan untuk mengamankan Jaringan Utama Ethereum, dan penambangan menggunakan [bukti kerja](/developers/docs/consensus-mechanisms/pow/) tidak lagi merupakan cara yang valid untuk produksi blok. -Saat penggabungan terjadi, stakers akan ditugaskan untuk memvalidasi Jaringan Utama Ethereum. [Menambang](/developers/docs/consensus-mechanisms/pow/mining/) tidak akan lagi diperlukan, jadi para penambang mungkin akan menginvestasikan pendapatan mereka dengan bertaruh dalam sistem bukti taruhan yang baru. +Blok diusulkan dengan memvalidasi simpul yang telah mempertaruhkan ETH dengan imbalan hak untuk berpartisipasi dalam konsensus. Peningkatan ini menyiapkan panggung untuk peningkatan skalabilitas di masa depan, termasuk pecahan. Rantai Suar -### Penggabungan dan pembersihan pasca penggabungan {#merge-and-post-merge-cleanup} +### Penggabungan dan peningkatan Shanghai {#merge-and-shanghai} -Segera setelah Penggabungan terjadi, beberapa fitur seperti menarik ETH yang dipertaruhkan, belum akan didukung. Ini direncanakan untuk peningkatan terpisah yang dilaksanakan segera setelah Penggabungan. +Untuk menyederhanakan dan memaksimalkan fokus pada transisi yang sukses ke bukti taruhan, peningkatan Penggabungan tidak menyertakan fitur-fitur tertentu yang telah diantisipasi seperti kemampuan untuk menarik ETH yang dipertaruhkan. Fungsionalitas ini diaktifkan secara terpisah dengan peningkatan Shanghai/Capella. -Ikuti perkembangannya bersama [Blog Pengembangan dan Penelitian EF](https://blog.ethereum.org/category/research-and-development/). Bagi mereka yang ingin tahu, pelajari selengkapnya tentang [Apa yang Terjadi Setelah Penggabungan](https://youtu.be/7ggwLccuN5s?t=101), yang disajikan oleh Vitalik pada acara ETHGlobal April 2021. +Bagi mereka yang ingin tahu, pelajari selengkapnya tentang [Apa yang Terjadi Setelah Penggabungan](https://youtu.be/7ggwLccuN5s?t=101), yang disajikan oleh Vitalik pada acara ETHGlobal April 2021. -### Penggabungan dan rantai shard {#docking-and-shard-chains} +### Penggabungan dan pecahan {#merge-and-data-sharding} -Pada awalnya, rencananya adalah melanjutkan pengembangan rantai shard sebelum Penggabungan - untuk menyelesaikan masalah skalabilitas. Namun, seiring dengan kepopuleran [solusi penskalaan layer 2](/developers/docs/scaling/#layer-2-scaling), prioritasnya berubah menjadi penukaran sistem proof-of-work ke proof-of-stake lewat proses penggabungan. +Awalnya, rencananya adalah mengerjakan pecahan sebelum Penggabungan untuk mengatasi skalabilitas. Namun, dengan munculnya solusi penskalaan [lapisan ke-2](/layer-2/), prioritas berubah menjadi menggantikan bukti kerja dengan bukti taruhan terlebih dahulu. -Ini akan menjadi penilaian berkelanjutan dari komunitas seiring dengan kebutuhan akan potensi beberapa putaran rantai shard untuk memungkinkan skalabilitas yang tak terbatas. +Rencana untuk pecahan berkembang dengan cepat, tetapi dengan munculnya dan keberhasilan teknologi lapisan ke-2 untuk meningkatkan eksekusi transaksi, rencana pecahan telah bergeser untuk menemukan cara yang paling optimal untuk mendistribusikan beban penyimpanan data panggilan terkompresi dari kontrak rollup, yang memungkinkan pertumbuhan kapasitas jaringan secara eksponensial. Hal ini tidak akan mungkin terjadi tanpa terlebih dahulu beralih ke bukti taruhan. - Pecahan rantai jaringan + Pecahan -## Baca lebih lanjut {#read-more} +## Bacaan lebih lanjut {#further-reading} + + diff --git a/src/content/translations/id/roadmap/merge/issuance/index.md b/src/content/translations/id/roadmap/merge/issuance/index.md new file mode 100644 index 00000000000..fccb7696b5c --- /dev/null +++ b/src/content/translations/id/roadmap/merge/issuance/index.md @@ -0,0 +1,134 @@ +--- +title: Bagaimana Penggabungan mempengaruhi pasokan ETH +description: Perincian tentang bagaimana Penggabungan mempengaruhi pasokan ETH +lang: id +--- + +# Bagaimana Penggabungan mempengaruhi pasokan ETH {#how-the-merge-impacts-ETH-supply} + +Penggabungan mewakili transisi jaringan Ethereum dari bukti kerja ke bukti taruhan yang terjadi pada bulan September 2022. Cara ETH diterbitkan mengalami perubahan pada saat masa transisi tersebut. Sebelumnya, ETH baru telah diterbitkan dari dua sumber: lapisan eksekusi (yaitu. Jaringan Utama) dan lapisan konsensus (yaitu. Rantai Suar). Sejak Penggabungan, penerbitan pada lapisan eksekusi sekarang menjadi nol. Mari kita uraikan hal ini. + +## Komponen penerbitan ETH {#components-of-eth-issuance} + +Kita dapat memecah pasokan ETH menjadi dua kekuatan utama: penerbitan dan pembakaran. + +**Penerbitan** ETH adalah proses pembuatan ETH yang sebelumnya tidak ada. **Pembakaran** ETH adalah ketika ETH yang ada dihancurkan, menghapusnya dari peredaran. Laju penerbitan dan pembakaran dihitung berdasarkan beberapa parameter, dan keseimbangan di antara keduanya menentukan tingkat inflasi/deflasi ether yang dihasilkan. + + + +- Sebelum beralih ke bukti taruhan, penambang diterbitkan sekitar 13.000 ETH/hari +- Penaruh diterbitkan sekitar 1.700 ETH/hari, berdasarkan sekitar 14 juta total ETH yang dipertaruhkan +- Penerbitan penaruhan yang tepat berfluktuasi berdasarkan jumlah total ETH yang dipertaruhkan +- **Sejak Penggabungan, hanya tersisa ~1.700 ETH/hari, menurunkan total penerbitan ETH baru sebesar ~88%** +- Pembakaran: Ini berfluktuasi sesuai dengan permintaan jaringan. _Jika_ harga gas rata-rata setidaknya 16 gwei diamati pada hari tertentu, ini secara efektif mengimbangi ~1.700 ETH yang diternitkan untuk validator dan membuat inflasi ETH bersih menjadi nol atau kurang untuk hari itu. + + + +## Pra-penggabungan (historis) {#pre-merge} + +### Penerbitan lapisan eksekusi {#el-issuance-pre-merge} + +Pada bukti kerja, penambang hanya berinteraksi dengan lapisan eksekusi dan mendapatkan reward blok jika mereka adalah penambang pertama yang menyelesaikan blok berikutnya. Sejak [peningkatan Constantinople](/history/#constantinople) pada tahun 2019, rewardnya adalah 2 ETH per blok. Para penambang juga diberi imbalan dengan menerbitkan blok [ommer](/glossary/#ommer), yang merupakan blok valid yang tidak berakhir di rantai terpanjang/kanonik. Imbalan ini maksimal sebesar 1,75 ETH per ommer, dan _sebagai tambahan untuk_ imbalan yang diterbitkan dari blok kanonik. Proses penambangan adalah kegiatan yang intensif secara ekonomi, yang secara historis membutuhkan tingkat penerbitan ETH yang tinggi untuk mempertahankannya. + +### Penerbitan lapisan konsensus {#cl-issuance-pre-merge} + +[Rantai Suar](/history/#beacon-chain-genesis) mulai beroperasi pada tahun 2020. Alih-alih penambang, ini diamankan oleh validator menggunakan bukti taruhan. Rantai ini di-bootstrap oleh pengguna Ethereum yang menyetor ETH satu arah ke dalam kontrak pintar di Jaringan Utama (lapisan eksekusi), yang kemudian didengarkan oleh Rantai Suar, dan mengkreditkan pengguna dengan jumlah ETH yang sama di rantai yang baru. Hingga Penggabungan terjadi, validator Rantai Suar tidak memproses transaksi dan pada dasarnya mencapai konsensus tentang keadaan kumpulan validator itu sendiri. + +Validator di Rantai Suar diberi imbalan dengan ETH karena telah membuktikan status rantai dan mengusulkan blok. Imbalan (atau penalti) dihitung dan didistribusikan pada setiap jangka waktu (setiap 6,4 menit) berdasarkan kinerja validator. Imbalan validator **secara signifikan** lebih kecil daripada imbalan penambangan yang sebelumnya dikeluarkan di bawah bukti kerja (2 ETH setiap ~13,5 detik), karena mengoperasikan simpul validasi tidak terlalu membutuhkan biaya yang besar sehingga tidak membutuhkan imbalan yang tinggi. + +### Pembagian penerbitan sebelum penggabungan {#pre-merge-issuance-breakdown} + +Total pasokan ETH: **~120.520.000 ETH** (saat Penggabungan pada September 2022) + +**Penerbitan lapisan eksekusi:** + +- Diperkirakan sekitar 2,08 ETH setiap 13,3 detik\*: **~4.930.000** ETH diterbitkan dalam setahun +- Menghasilkan tingkat inflasi sekitar **sekitar 4,09%** (4,93 juta per tahun / total 120,5 juta) +- \*Ini termasuk 2 ETH per blok kanonikal, ditambah rata-rata 0,08 ETH dari blok ommer dari waktu ke waktu. Juga menggunakan waktu 13,3 detik, target waktu blok dasar tanpa pengaruh dari [bom kesulitan](/glossary/#difficulty-bomb). ([Lihat sumber](https://bitinfocharts.com/ethereum/)) + +**Penerbitan lapisan konsensus:** + +- Dengan menggunakan total 14.000.000 ETH yang dipertaruhkan, tingkat penerbitan ETH adalah sekitar 1700 ETH/hari ([Lihat sumber](https://ultrasound.money/)) +- Hasilnya adalah **~620.500** ETH yang diterbitkan dalam setahun +- Menghasilkan tingkat inflasi **sekitar 0,52%** (620,5 ribu per tahun / total 119,3 juta) + + +Tingkat penerbitan tahunan total (sebelum penggabungan): ~4,61% (4,09% + 0,52%)

    +~88,7% dari penerbitan diberikan kepada penambang pada lapisan eksekusi (4,09 / 4,61 * 100)

    +~11,3% diterbitkan kepada para penaruh pada lapisan konsensus (0,52 / 4,61 * 100) +
    + +## Setelah penggabungan (saat ini) {#post-merge} + +### Penerbitan lapisan eksekusi {#el-issuance-post-merge} + +Penerbitan lapisan eksekusi sejak Penggabungan adalah nol. Bukti kerja bukan lagi cara yang valid untuk produksi blok berdasarkan aturan konsensus yang telah ditingkatkan. Seluruh aktivitas lapisan eksekusi dikemas ke dalam "blok suar", yang dipublikasikan dan diakui oleh validator bukti taruhan. Imbalan untuk membuktikan dan menerbitkan blok suar dihitung secara terpisah pada lapisan konsensus. + +### Penerbitan lapisan konsensus {#cl-issuance-post-merge} + +Penerbitan lapisan konsensus berlanjut hingga hari ini seperti sebelum Penggabungan, dengan imbalan kecil untuk validator yang menyetujui dan mengusulkan blok. Imbalan validator terus mengalir ke _saldo validator_ yang dikelola di dalam lapisan konsensus. Berbeda dengan akun saat ini (akun "eksekusi"), yang dapat melakukan transaksi di Jaringan Utama, akun Ethereum ini terpisah dan tidak dapat bertransaksi secara bebas dengan akun Ethereum lainnya. Dana di akun-akun ini hanya dapat ditarik ke satu alamat eksekusi yang ditentukan. + +Sejak peningkatan Shanghai/Capella yang terjadi pada April 2023, penarikan ini telah diaktifkan untuk para penaruh. Penaruh di anjurkan untuk mengambil _pendapatan/imbalan (saldo di atas 32 ETH)_ mereka karena dana tersebut sebaliknya tidak berkontribusi pada bobot taruhan mereka (yang mencapai maksimal 32). + +Penaruh juga dapat memilih untuk keluar dan menarik seluruh saldo validator mereka. Untuk memastikan Ethereum tetap stabil, jumlah validator yang keluar secara bersamaan dibatasi. + +Kira kira sekitar 0,33% dari total jumlah validator dapat keluar dalam satu hari tertentu. Secara default, empat (4) validator dapat keluar untuk setiap jangka waktu (setiap 6,4 menit, atau 900 per hari). Satu (1) validator tambahan diperbolehkan keluar untuk setiap 65.536 (216) validator tambahan di atas 262.144 (218). Sebagai contoh, dengan lebih dari 327.680 validator, lima (5) validator dapat keluar untuk setiap jangka waktu (1.125 per hari). Enam (6) validator akan diizinkan dengan jumlah validator aktif total lebih dari 393.216, dan seterusnya. + +Seiring bertambahnya validator yang menarik diri, jumlah maksimum validator yang keluar akan secara bertahap berkurang menjadi minimum empat untuk sengaja mencegah jumlah ETH yang dipertaruhkan besar dan mengganggu yang ditarik secara bersamaan. + +### Pembagian inflasi setelah penggabungan {#post-merge-inflation-breakdown} + +- Total pasokan ETH: **~120.520.000 ETH** (saat Penggabungan pada September 2022) +- Penerbitan lapisan eksekusi: **0** +- Penerbitan lapisan konsensus: Sama seperti sebelumnya, tingkat penerbitan tahunan sebesar **~0,52%** (dengan total 14 juta ETH yang dipertaruhkan) + + +Tingkat penerbitan tahunan total: ~0,52%

    +Pengurangan bersih dalam penerbitan ETH tahunan: ~88,7% ((4,61% - 0,52%) / 4,61% * 100) +
    + +##  Pembakaran {#the-burn} + +Kekuatan berlawanan dengan penerbitan ETH adalah tingkat pembakaran ETH. Untuk sebuah transaksi dieksekusi di Ethereum, biaya minimum (dikenal sebagai "biaya dasar") harus dibayarkan, yang terus berfluktuasi (dari blok ke blok) tergantung pada aktivitas jaringan. Biaya tersebut dibayarkan dalam bentuk ETH dan _wajib_ agar transaksi dianggap sah. Biaya ini akan _dibakar_ selama proses transaksi, mengeluarkannya dari sirkulasi. + + +Pembakaran biaya diaktifkan dengan peningkatan London pada Agustus 2021, dan tetap tidak berubah sejak Terjadinya Penggabungan. + + +Selain pembakaran biaya yang diimplementasikan oleh peningkatan London, validator juga dapat dikenakan denda karena tidak aktif, atau bahkan lebih buruk lagi, mereka dapat dipotong karena melanggar aturan tertentu yang mengancam keamanan jaringan. Penalti ini mengakibatkan pengurangan ETH dari saldo validator tersebut, yang tidak langsung diberikan sebagai imbalan kepada akun lain, secara efektif dibakar/mengeluarkannya dari sirkulasi. + +### Menghitung harga gas rata-rata untuk deflasi {#calculating-average-gas-price-for-deflation} + +Seperti yang dibahas di atas, jumlah ETH yang diterbitkan dalam satu hari tertentu tergantung pada total ETH yang dipertaruhkan. Pada saat penulisan ini, jumlahnya kira-kira adalah 1700 ETH per hari. + +Untuk menentukan harga gas rata-rata yang diperlukan untuk sepenuhnya menutupi penerbitan dalam periode 24 jam tertentu, kita akan mulai dengan menghitung total jumlah blok dalam sehari, dengan waktu blok 12 detik: + +- `(1 blok / 12 detik) * (60 detik/menit) = 5 blok/menit` +- `(5 blok/menit) * (60 menit/jam) = 300 blok/jam` +- `(300 blok/jam) * (24 jam/hari) = 7200 blok/hari` + +Setiap blok ditargetkan untuk `15x10^6 gas/block` ([selanjutnya tentang gas](/developers/docs/gas/)). Dengan demikian, kita dapat mencari solusi untuk harga gas rata-rata (dalam satuan gwei/gas) yang diperlukan untuk menutupi penerbitan, dengan total penerbitan ETH harian sebesar 1700 ETH: + +- `7200 blocks/day * 15x10^6 gas/block *`**`Y gwei/gas`**`* 1 ETH/ 10^9 gwei = 1700 ETH/day` + +Menyelesaikan untuk `Y`: + +- `Y = (1700(10^9))/(7200 * 15(10^6)) = (17x10^3)/(72 * 15) = 16 gwei` (dibulatkan menjadi hanya dua angka penting) + +Cara lain untuk menyusun ulang langkah terakhir adalah dengan mengganti `1700` dengan variabel `X` yang mewakili penerbitan ETH harian, dan menyederhanakan sisanya menjadi: + +- `Y = (X(10^3)/(7200 * 15)) = X/108` + +Kita bisa menyederhanakan dan menulisnya sebagai fungsi dari `X`: + +- `f(X) = X/108` di mana `X` adalah penerbitan ETH harian, dan `f(X)` mewakili harga gwei/gas yang diperlukan untuk menutupi semua ETH yang baru diterbitkan. + +Jadi, sebagai contoh, jika `X` (penerbitan ETH harian) meningkat menjadi 1800 berdasarkan total ETH yang dipertaruhkan, maka `f(X)` (harga gwei yang diperlukan untuk menutupi seluruh penerbitan) akan menjadi `17 gwei` (menggunakan 2 angka penting) + +## Bacaan lebih Lanjut {#further-reading} + +- [Penggabungan](/roadmap/merge/) +- [Ultrasound.money](https://ultrasound.money/) - _Dasbor yang tersedia untuk memvisualisasikan penerbitan dan pembakaran ETH secara real-time_ +- [Charting Ethereum Issuance](https://www.attestant.io/posts/charting-ethereum-issuance/) - _Jim McDonald 2020_ diff --git a/src/content/translations/id/roadmap/pbs/index.md b/src/content/translations/id/roadmap/pbs/index.md new file mode 100644 index 00000000000..c32eb198542 --- /dev/null +++ b/src/content/translations/id/roadmap/pbs/index.md @@ -0,0 +1,51 @@ +--- +title: Pemisahan pengusul-pembuat +description: Pelajari bagaimana dan mengapa validator Ethereum akan membagi tanggung jawab membangun blok dan menyiarkan blok mereka. +lang: id +--- + +# Pemisahan pengusul-pembuat {#proposer-builder-separation} + +Validator Ethereum saat ini membuat _dan_ menyiarkan blok. Mereka mengelompokkan transaksi yang mereka dengar melalui jaringan gosip dan mengemasnya ke dalam blok yang dikirimkan kepada rekan-rekan di jaringan Ethereum. **Pemisahan pengusul-pembangun (PBS)** membagi tugas ini di antara beberapa validator. Pembangun blok menjadi bertanggung jawab untuk membuat blok dan menawarkannya kepada pengusul blok pada setiap ruang. Pengusul blok tidak dapat melihat konten blok, mereka hanya memilih yang paling menguntungkan, membayar biaya kepada pembangun blok sebelum mengirim blok ke rekan-rekannya. + +Ini adalah peningkatan penting karena beberapa alasan. Pertama, menciptakan peluang untuk mencegah penyensoran transaksi pada tingkat protokol. Kedua, mencegah validator pemula dari persaingan dengan pemain institusi yang dapat lebih baik mengoptimalkan profitabilitas pembangunan blok mereka. Ketiga, membantu dalam penskalaan Ethereum dengan memungkinkan peningkatan Danksharding. + +## PBS dan ketahanan terhadap penyensoran {#pbs-and-censorship-resistance} + +Memisahkan pembangun blok dan pengusul blok membuat lebih sulit bagi pembangun blok untuk menyensor transaksi. Hal ini karena kriteria inklusi yang relatif kompleks dapat ditambahkan yang memastikan tidak ada penyensoran yang terjadi sebelum blok diusulkan. Karena pengusul blok adalah entitas terpisah dari pembangun blok, ia dapat mengambil peran pelindung terhadap penyensoran pembangun blok. + +Sebagai contoh, daftar inklusi dapat diperkenalkan sehingga ketika validator mengetahui tentang transaksi tetapi tidak melihatnya dimasukkan dalam blok, mereka dapat memaksa agar transaksi tersebut menjadi syarat wajib dalam blok berikutnya. Daftar inklusi dihasilkan dari kolam memori lokal pengusul blok (daftar transaksi yang diwaspadai) dan dikirimkan kepada rekan-rekan mereka tepat sebelum blok diusulkan. Jika ada transaksi dari daftar inklusi yang hilang, pengusul dapat menolak blok, menambahkan transaksi yang hilang sebelum mengusulkannya, atau mengusulkannya dan membiarkan blok tersebut ditolak oleh validator lain ketika mereka menerimanya. Ada juga versi yang mungkin lebih efisien dari gagasan ini yang menyatakan bahwa pembangun harus sepenuhnya memanfaatkan ruang blok yang tersedia, dan jika tidak, transaksi ditambahkan dari daftar inklusi pengusul. Ini masih merupakan area penelitian aktif dan konfigurasi optimal untuk daftar inklusi belum ditentukan. + +[Kolam memori yang dienkripsi](https://www.youtube.com/watch?v=fHDjgFcha0M&list=PLpktWkixc1gUqkyc1-iE6TT0RWQTBJELe&index=3) juga dapat membuat pembangun dan pengusul tidak bisa mengetahui transaksi mana yang mereka masukkan ke dalam blok hingga setelah blok disiarkan. + + + +Organisasi yang kuat dapat memberi tekanan kepada validator untuk menyensor transaksi ke atau dari alamat tertentu. Validator mematuhi tekanan ini dengan mendeteksi alamat-alamat yang masuk dalam daftar hitam di dalam kolam memori transaksi mereka dan menghilangkannya dari blok yang mereka usulkan. Setelah PBS, hal ini tidak akan lagi mungkin terjadi karena pengusul blok tidak akan tahu transaksi mana yang mereka siarkan dalam blok mereka. Mungkin penting bagi individu atau aplikasi tertentu untuk mematuhi aturan penyensoran, misalnya ketika aturan tersebut dijadikan hukum di wilayah mereka. Dalam kasus-kasus ini, kepatuhan terjadi pada tingkat aplikasi, sementara protokol tetap terbuka dan bebas penyensoran. + + + +## PBS dan MEV {#pbs-and-mev} + +**Nilai ekstraksi maksimum (MEV)** mengacu pada validator memaksimalkan profitabilitas mereka dengan mengurutkan transaksi dengan cara yang menguntungkan. Contoh umum meliputi arbitrase pertukaran di bursa terdesentralisasi (misalnya, mendahului penjualan atau pembelian besar) atau mengidentifikasi peluang untuk likuidasi posisi DeFi. Memaksimalkan MEV memerlukan pemahaman teknis yang canggih dan perangkat lunak khusus yang ditambahkan ke validator normal, sehingga lebih mungkin bagi operator institusi untuk melampaui individu dan validator pemula dalam ekstraksi MEV. Ini berarti pengembalian penaruhan kemungkinan akan lebih tinggi dengan operator terpusat, menciptakan kekuatan sentralisasi yang mengurangi insentif untuk penaruhan di rumah. + +PBS memecahkan masalah ini dengan mengonfigurasi ulang ekonomi MEV. Alih-alih pengusul blok melakukan pencarian MEV mereka sendiri, mereka hanya memilih blok dari banyak blok yang ditawarkan kepada mereka oleh pembangun blok. Pembangun blok mungkin telah melakukan ekstraksi MEV yang canggih, tetapi imbalannya diberikan kepada pengusul blok. Ini berarti bahwa meskipun sekelompok kecil pembangun blok khusus mendominasi ekstraksi MEV, imbalannya bisa diberikan kepada validator mana pun di jaringan, termasuk individu yang melakukan penaruhan di rumah. + + + +Seseorang dapat diberi insentif untuk melakukan penaruhan dengan pool daripada melakukannya atas keinginan sendiri karena peningkatan imbalan yang ditawarkan oleh strategi MEV yang canggih. Memisahkan pembangunan blok dari usulan blok berarti bahwa MEV yang diekstraksi akan tersebar di lebih banyak validator daripada terpusat pada pencari MEV yang paling efektif. Pada saat yang sama, memungkinkan pembangun blok khusus untuk ada menghilangkan beban pembangunan blok dari individu, dan juga mencegah individu mencuri MEV untuk diri mereka sendiri, sambil memaksimalkan jumlah validator individu dan independen yang dapat memeriksa blok-blok yang jujur. Konsep penting adalah "asimetri pemberi bukti-pemverifikasi" yang mengacu pada gagasan bahwa produksi blok terpusat dapat diterima selama ada jaringan validator yang kuat dan sepenuhnya terdesentralisasi yang mampu membuktikan bahwa blok-blok tersebut jujur. Desentralisasi adalah sarana, bukan tujuan akhir - yang kita inginkan adalah blok-blok yang jujur. + + +## PBS dan Danksharding {#pbs-and-danksharding} + +Danksharding adalah cara di mana Ethereum akan melakukan skalabilitas hingga >100.000 transaksi per detik dan meminimalkan biaya bagi pengguna rollup. Ini mengandalkan PBS karena menambah beban kerja bagi pembangun blok, yang harus menghitung bukti untuk hingga 64 MB data rollup dalam waktu kurang dari 1 detik. Hal ini mungkin akan memerlukan pembangun khusus yang dapat mengalokasikan perangkat keras yang cukup besar untuk tugas tersebut. Namun, dalam situasi saat ini, pembangunan blok bisa menjadi semakin terpusat di sekitar operator yang lebih canggih dan kuat karena ekstraksi MEV. Pemisahan pengusul-pembangun adalah cara untuk merangkul realitas ini dan mencegahnya memberikan tekanan terpusat pada validasi blok (bagian yang penting) atau distribusi imbalan penaruhan. Manfaat samping yang besar adalah bahwa pembangun blok khusus juga bersedia dan mampu menghitung bukti data yang diperlukan untuk Danksharding. + +## Kemajuan saat ini {#current-progress} + +PBS berada dalam tahap penelitian yang canggih, tetapi masih ada beberapa pertanyaan desain penting yang perlu dipecahkan sebelum dapat diprototipekan dalam klien Ethereum. Belum ada spesifikasi final yang tersedia. Ini berarti PBS kemungkinan akan memerlukan waktu setahun atau lebih lagi. Periksa [status terbaru penelitian](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance). + +## Bacaan Lebih Lanjut {#further-reading} + +- [Status penelitian: ketahanan terhadap penyensoran di bawah PBS](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance) +- [Desain pasar bebas yang ramah PBS](https://ethresear.ch/t/proposer-block-builder-separation-friendly-fee-market-designs/9725) +- [PBS dan ketahanan terhadap penyensoran](https://notes.ethereum.org/@fradamt/H1TsYRfJc#Secondary-auctions) +- [Daftar inklusi](https://notes.ethereum.org/@fradamt/H1ZqdtrBF) diff --git a/src/content/translations/id/roadmap/scaling/index.md b/src/content/translations/id/roadmap/scaling/index.md new file mode 100644 index 00000000000..ab29f99effd --- /dev/null +++ b/src/content/translations/id/roadmap/scaling/index.md @@ -0,0 +1,47 @@ +--- +title: Penskalaan Ethereum +description: Melakukan rollup transaksi batch secara bersamaan di luar rantai, sehingga mengurangi biaya bagi pengguna. Namun, cara rollup saat ini menggunakan data saat ini terlalu mahal, sehingga membatasi seberapa murah transaksi yang bisa dilakukan. Proto-Danksharding memperbaiki hal ini. +lang: id +image: ../../../../../assets/roadmap/roadmap-transactions.png +alt: "Peta Perjalanan Ethereum" +template: roadmap +--- + +Ethereum diskalakan menggunakan [lapisan ke-2](/layer-2/#rollups) (juga dikenal sebagai rollup), yang mengumpulkan transaksi secara bersamaan dan mengirimkan hasilnya ke Ethereum. Meskipun rollup hingga delapan kali lebih murah daripada Jaringan Utama Ethereum, Anda dapat mengoptimalkan rollup lebih lanjut untuk mengurangi biaya bagi pengguna akhir. Rollup juga bergantung pada beberapa komponen terpusat yang dapat dihapus oleh pengembang saat rollup sudah matang. + + +
      +
    • Rollup hari ini ~3-8x lebih murah daripada lapisan 1 Ethereum
    • +
    • Rollup ZK akan segera menurunkan biaya sebesar ~40-100x
    • +
    • Perubahan yang akan datang pada Ethereum akan memberikan penskalaan ~100-1000x lainnya
    • +
    • Pengguna harus mendapatkan keuntungan dari transaksi berharga kurang dari $0,001
    • +
    +
    + +## Membuat data lebih murah {#making-data-cheaper} + +Rollup mengumpulkan sejumlah besar transaksi, mengeksekusinya, dan mengirimkan hasilnya ke Ethereum. Hal ini menghasilkan banyak data yang harus tersedia secara terbuka sehingga siapa pun dapat melakukan transaksi untuk diri mereka sendiri dan memverifikasi bahwa operator rollup tersebut jujur. Jika seseorang menemukan ketidaksesuaian, mereka dapat mengajukan tantangan. + +### Proto-Danksharding {#proto-danksharding} + +Data rollup disimpan di Ethereum secara permanen, yang harganya mahal. Lebih dari 90% dari biaya transaksi yang dibayarkan pengguna pada rollup disebabkan oleh penyimpanan data ini. Untuk mengurangi biaya transaksi, kita dapat memindahkan data ke dalam penyimpanan 'blob' sementara yang baru. Blob lebih murah karena tidak permanen; data ini akan dihapus dari Ethereum setelah tidak lagi dibutuhkan. Menyimpan data rollup dalam jangka panjang menjadi tanggung jawab pihak-pihak yang membutuhkannya, seperti operator rollup, bursa, layanan pengindeksan, dll. Menambahkan transaksi blob ke Ethereum adalah bagian dari peningkatan yang dikenal sebagai "Proto-Danksharding". Transaksi blob diperkirakan akan dikirim dalam waktu dekat—mungkin pada akhir tahun 2023. + +Setelah transaksi blob menjadi bagian dari protokol Ethereum melalui Proto-Danksharding, maka akan dimungkinkan menambahkan banyak blob ke dalam blok Ethereum. Ini akan menjadi peningkatan substansial (>100x) pada keluaran Ethereum dan penurunan biaya transaksi. + +### Danksharding {#danksharding} + +Tahap kedua dari perluasan data blob cukup rumit karena membutuhkan metode baru untuk memeriksa data rollup yang tersedia di jaringan dan bergantung pada validator yang memisahkan tanggung jawab pembangunan blok dan proposal blok. Hal ini juga membutuhkan cara untuk membuktikan secara kriptografis bahwa validator telah memverifikasi subset data blob. + +Langkah kedua ini dikenal sebagai ["Danksharding"](/roadmap/danksharding/). Kemungkinan masih beberapa tahun lagi untuk dapat diimplementasikan secara penuh. Danksharding bergantung pada pengembangan lain seperti [pemisahan pembangunan blok dan proposal blok](/roadmap/pbs) dan desain jaringan baru yang memungkinkan jaringan secara efisien mengonfirmasi bahwa data tersedia dengan mengambil sampel beberapa kilobita secara acak dalam satu waktu, yang dikenal dengan nama [pengambilan sampel data (DAS)](/developers/docs/data-availability). + +Lebih lanjut tentang Danksharding + +## Desentralisasi rollup {#decentralizing-rollups} + +[Rollup](/layer-2) sudah menskalakan Ethereum. Ekosistem [yang kaya akan proyek rollup](https://l2beat.com/scaling/tvl) memungkinkan pengguna untuk bertransaksi dengan cepat dan murah, dengan berbagai jaminan keamanan. Namun, rollup telah di-bootstrap menggunakan sequencer terpusat (komputer yang melakukan semua pemrosesan dan agregasi transaksi sebelum mengirimkannya ke Ethereum). Hal ini rentan terhadap penyensoran, karena operator sequencer dapat dikenai sanksi, disuap, atau dikompromikan. Pada saat yang sama, [rollup bervariasi](https://l2beat.com) dalam cara mereka memvalidasi data yang masuk. Cara terbaik adalah "pemberi bukti" mengirimkan bukti kecurangan atau bukti validitas, tetapi belum semua rollup ada di sana. Bahkan rollup yang menggunakan bukti validitas/penipuan menggunakan kumpulan kecil pemberi bukti yang diketahui. Oleh karena itu, langkah penting berikutnya dalam penskalaan Ethereum adalah mendistribusikan tanggung jawab untuk menjalankan sequencer dan pembuktian kepada lebih banyak orang. + +Lebih lanjut tentang rollup + +## Kemajuan saat ini {#current-progress} + +Proto-Danksharding kemungkinan besar akan menjadi salah satu item peta perjalanan awal yang akan diimplementasikan. Langkah-langkah komputasi terdesentralisasi yang diperlukan untuk menyiapkannya sudah berjalan dan beberapa klien telah mengimplementasikan prototipe untuk menangani data blob. Danksharding penuh kemungkinan masih akan berlangsung beberapa tahun lagi, karena hal ini bergantung pada beberapa item peta perjalanan lainnya yang harus diselesaikan terlebih dahulu. Desentralisasi infrastruktur rollup kemungkinan besar akan menjadi proses yang bertahap - ada banyak rollup berbeda yang membangun sistem yang sedikit berbeda dan akan sepenuhnya terdesentralisasi dengan kecepatan yang berbeda. diff --git a/src/content/translations/id/roadmap/secret-leader-election/index.md b/src/content/translations/id/roadmap/secret-leader-election/index.md new file mode 100644 index 00000000000..c8597c7f4af --- /dev/null +++ b/src/content/translations/id/roadmap/secret-leader-election/index.md @@ -0,0 +1,44 @@ +--- +title: Pilihan pemimimpin rahasia +description: Penjelasan tentang bagaimana pemilihan pemimpin rahasia dapat membantu melindungi validator dari serangan +lang: id +summaryPoints: + - Alamat IP pengusul blok dapat diketahui sebelumnya, membuat mereka rentan terhadap serangan + - Pemilihan pemimpin rahasia menyembunyikan identitas validator sehingga tidak dapat diketahui sebelumnya + - Perpanjangan dari ide ini adalah membuat pemilihan validator secara acak di setiap ruang. +--- + +# Pilihan pemimimpin rahasia {#single-secret-leader-election} + +Dalam mekanisme konsensus berbasis [bukti taruhan](/developers/docs/consensus-mechanisms/pos) yang ada saat ini, daftar pengusul blok yang akan datang bersifat publik dan memungkinkan untuk memetakan alamat IP mereka. Ini berarti penyerang dapat mengidentifikasi validator mana yang akan mengajukan blok dan menargetkan mereka dengan serangan denial-of-service (DOS) yang membuat mereka tidak dapat mengajukan blok tepat waktu. + +Hal ini dapat menciptakan peluang bagi penyerang untuk mendapatkan keuntungan. Sebagai contoh, seorang pengusul blok yang dipilih untuk ruang `n+1` dapat melakukan serangan DOS terhadap pengusul blok di ruang `n` sehingga mereka melewatkan kesempatan untuk mengusulkan blok. Hal ini akan memungkinkan pengusul blok yang menyerang untuk mengekstrak MEV dari kedua ruang, atau mengambil semua transaksi yang seharusnya dibagi menjadi dua blok dan memasukkannya ke dalam satu blok, dan mendapatkan semua biaya terkait. Hal ini cenderung mempengaruhi validator rumahan lebih banyak daripada validator institusional yang canggih yang dapat menggunakan metode yang lebih canggih untuk melindungi diri mereka sendiri dari serangan DOS, dan oleh karena itu dapat menjadi kekuatan pemusatan. + +Ada beberapa solusi untuk masalah ini. Salah satunya adalah [Teknologi Validator Terdistribusi](https://github.com/ethereum/distributed-validator-specs) yang bertujuan untuk menyebarkan berbagai tugas yang berkaitan dengan menjalankan validator di beberapa mesin, dengan redundansi, sehingga akan lebih sulit bagi penyerang untuk mencegah sebuah blok diusulkan di ruang tertentu. Namun, solusi yang paling kuat adalah **Pemilihan Pemimpin Rahasia Tunggal (SSLE)**. + +## Pemilihan pemimpin tunggal secara rahasia {#secret-leader-election} + +Dalam SSLE, kriptografi yang cerdas digunakan untuk memastikan bahwa hanya validator yang terpilih yang tahu bahwa mereka telah terpilih. Cara kerjanya adalah dengan meminta setiap validator untuk menyerahkan komitmen terhadap sebuah rahasia yang mereka miliki. Komitmen tersebut diacak dan dikonfigurasi ulang sehingga tidak ada seorang pun yang dapat memetakan komitmen ke validator, tetapi setiap validator mengetahui komitmen mana yang menjadi miliknya. Kemudian, satu komitmen dipilih secara acak. Jika seorang validator mendeteksi bahwa komitmen mereka terpilih, mereka tahu bahwa ini adalah giliran mereka untuk mengajukan blok. + +Implementasi utama dari ide ini disebut [Whisk](https://ethresear.ch/t/whisk-a-practical-shuffle-based-ssle-protocol-for-ethereum/11763). Yang berfungsi sebagai berikut: + +1. Validator berkomitmen untuk menjaga rahasia bersama. Skema komitmen dirancang sedemikian rupa sehingga dapat diikat ke identitas validator tetapi juga diacak sehingga tidak ada pihak ketiga yang dapat merekayasa pengikatan dan menautkan komitmen tertentu ke validator tertentu. +2. Pada awal sebuah jangka waktu, sekumpulan validator dipilih secara acak untuk mengambil sampel komitmen dari 16.384 validator, dengan menggunakan RANDAO. +3. Untuk 8182 ruang berikutnya (1 hari), pengusul blok mengocok dan mengacak sebagian dari komitmen menggunakan entropi pribadi mereka. +4. Setelah pengacakan selesai, RANDAO digunakan untuk membuat daftar komitmen yang terurut. Daftar ini dipetakan ke dalam ruang Ethereum. +5. Validator melihat bahwa komitmen mereka melekat pada ruang tertentu, dan ketika ruang tersebut tiba, mereka mengajukan blok. +6. Ulangi langkah-langkah ini sehingga penugasan komitmen ke ruang selalu jauh di depan ruang saat ini. + +Hal ini mencegah penyerang untuk mengetahui sebelumnya validator spesifik mana yang akan mengajukan blok berikutnya, mencegah kemampuan serangan DOS. + +## Pemilihan pemimpin non-tunggal secara rahasia (SnSLE) {#secret-non-single-leader-election} + +Ada juga proposal terpisah yang bertujuan untuk membuat skenario di mana validator masing-masing memiliki kesempatan acak untuk mengusulkan blok di setiap ruang, mirip dengan bagaimana proposal blok diputuskan di bawah bukti kerjak, yang dikenal sebagai **pemilihan pemimpin non-tunggal secara rahasia (SnSLE)**. Satu cara sederhana untuk melakukan ini adalah memanfaatkan fungsi RANDAO yang digunakan untuk memilih validator secara acak dalam protokol saat ini. Ide dari RANDAO adalah bahwa angka yang cukup acak dihasilkan dengan mencampurkan hash yang dikirimkan oleh banyak validator independen. Dalam SnSLE, hash ini dapat digunakan untuk memilih pengusul blok berikutnya, misalnya dengan memilih hash dengan nilai terendah. Kisaran hash yang valid dapat dibatasi untuk menyesuaikan kemungkinan validator individu yang dipilih di setiap ruang. Dengan mengklaim bahwa hash harus lebih kecil dari `2^256 * 5 / N` di mana `N` = jumlah validator aktif, peluang setiap validator individu terpilih di setiap ruang akan menjadi `5/N`. Dalam contoh ini, akan ada peluang 99,3% untuk setidaknya satu pengusul menghasilkan hash yang valid di setiap ruang. + +## Kemajuan saat ini {#current-progress} + +SSLE dan SnSLE keduanya sedang dalam tahap penelitian. Belum ada spesifikasi final untuk kedua ide tersebut. SSLE dan SnSLE merupakan proposal yang bersaing yang keduanya tidak dapat diimplementasikan bersama. Sebelum dikirim, mereka membutuhkan lebih banyak penelitian dan pengembangan, pembuatan prototipe, dan implementasi di jaringan percobaan publik. + +## Bacaan lebih lanjut {#further-reading} + +- [SnSLE](https://ethresear.ch/t/secret-non-single-leader-election/11789) diff --git a/src/content/translations/id/roadmap/security/index.md b/src/content/translations/id/roadmap/security/index.md new file mode 100644 index 00000000000..43971700bcf --- /dev/null +++ b/src/content/translations/id/roadmap/security/index.md @@ -0,0 +1,48 @@ +--- +title: Ethereum yang lebih aman +description: Ethereum merupakan platform kontrak pintar yang paling aman dan terdesentralisasi yang pernah ada. Namun, masih diperlukan perbaikan yang dapat dilakukan agar Ethereum tetap tangguh terhadap segala tingkat serangan di masa depan. +lang: id +image: ../../../../../assets/roadmap/roadmap-security.png +alt: "Peta Perjalanan Ethereum" +template: roadmap +--- + +Ethereum merupakan platform kontrak pintar yang sudah sangat aman dan terdesentralisasi. Namun, masih diperlukan perbaikan yang dapat dilakukan agar Ethereum tetap tangguh terhadap segala jenis serangan di masa depan. Ini termasuk perubahan pada cara klien Ethereum menangani blok yang bersaing, serta meningkatkan kecepatan jaringan dengan menganggap blok menjadi ["final"](/developers/docs/consensus-mechanisms/pos/#finality) (yang berarti tidak dapat diubah tanpa kerugian ekonomi yang ekstrem bagi penyerang). + +Ada juga perbaikan yang membuat sensor transaksi menjadi lebih sulit dengan membuat pengusul blok tidak dapat melihat isi sebenarnya dari blok mereka, dan cara baru untuk mengidentifikasi kapan klien melakukan sensor. Bersama-sama, perbaikan ini akan meningkatkan protokol bukti taruhan sehingga pengguna dari individu hingga korporasi memiliki kepercayaan instan pada aplikasi, data, dan aset mereka di Ethereum. + +## Penarikan penaruhan {#staking-withdrawals} + +Peningkatan dari bukti kerja ke bukti taruhan dimulai dengan para perintis Ethereum "menaruhkan" ETH mereka dalam kontrak deposit. ETH tersebut digunakan untuk melindungi jaringan. Namun, ETH tersebut belum dapat dibuka kunci dan dikembalikan kepada pengguna. Memungkinkan ETH untuk ditarik adalah bagian penting dari peningkatan bukti taruhan. Selain penarikan menjadi komponen penting dari protokol bukti taruhan yang berfungsi penuh, memungkinkan penarikan juga baik untuk keamanan Ethereum karena memungkinkan para penaruh untuk menggunakan hadiah ETH mereka untuk tujuan non-penaruhan lainnya. Ini berarti pengguna yang menginginkan likuiditas tidak harus bergantung pada derivatif penaruhan likuid (LSD) yang dapat menjadi kekuatan sentralisasi di Ethereum. Peningkatan ini dijadwalkan selesai pada 12 April 2023. + +Baca tentang penarikan + +## Bertahan dari serangan {#defending-against-attacks} + +Bahkan setelah penarikan, masih ada perbaikan yang perlu dilakukan untuk protokol [bukti taruhan](/developers/docs/consensus-mechanisms/pos/) Ethereum. Salah satunya adalah yang dikenal sebagai [lihat-gabungkan](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739) - sebuah algoritma pilihan garpu yang lebih aman dalam membuat beberapa jenis serangan yang canggih lebih sulit. + +Mengurangi waktu yang dibutuhkan Ethereum untuk menyelesaikan blok akan memberikan pengalaman pengguna yang lebih baik dan mencegah serangan "reorg" yang canggih di mana penyerang mencoba mengacak blok yang sangat baru untuk mendapatkan keuntungan atau menyensor transaksi tertentu. [**Finalitas ruang tunggal (SSF)**](/roadmap/single-slot-finality/) adalah cara untuk meminimalisir keterlambatan finalisasi. Saat ini ada 15 menit blok yang secara teoritis dapat digunakan oleh penyerang untuk mengkonfigurasi ulang validator lain. Dengan SSF, hanya ada 0. Pengguna, dari individu hingga aplikasi dan bursa, mendapat manfaat dari jaminan cepat bahwa transaksi mereka tidak akan dibatalkan, dan jaringan mendapat manfaat dengan menutup seluruh kumpulan serangan. + +Baca tentang finalitas ruang tunggal + +## Bertahan melawan sensor {#defending-against-censorship} + +Desentralisasi mencegah individu atau kelompok kecil validator menjadi terlalu berpengaruh. Teknologi penaruhan baru dapat membantu memastikan validator Ethereum tetap se-desentralisasi mungkin sekaligus melindungi mereka dari kegagalan perangkat keras, perangkat lunak, dan jaringan. Ini termasuk perangkat lunak yang membagi tanggung jawab validator di beberapa simpul. Ini dikenal sebagai **teknologi validator terdistribusi (DVT)**. Pool penaruhan mendapat insentif untuk menggunakan DVT karena memungkinkan beberapa komputer untuk berpartisipasi secara kolektif dalam validasi, menambah redundansi dan toleransi kesalahan. Ini juga membagi kunci validator di beberapa sistem, daripada memiliki operator tunggal yang menjalankan beberapa validator. Ini mempersulit operator yang tidak jujur untuk mengoordinasikan serangan terhadap Ethereum. Secara keseluruhan, ide ini adalah untuk mendapatkan manfaat keamanan dengan menjalankan validator sebagai _komunitas_ daripada sebagai individu. + +Baca tentang teknologi validator terdistribusi + +Mengimplementasikan **pemisahan pengusul-pembangun (PBS)** akan sangat meningkatkan pertahanan bawaan Ethereum terhadap sensor. PBS memungkinkan satu validator untuk membuat blok dan yang lain untuk menyiarkannya ke seluruh jaringan Ethereum. Ini memastikan bahwa keuntungan dari algoritma pembangun blok profesional yang memaksimalkan keuntungan dibagi lebih adil di seluruh jaringan, **mencegah taruhan berkonsentrasi** dengan penaruh institusional berkinerja terbaik dari waktu ke waktu. Pengusul blok dapat memilih blok paling menguntungkan yang ditawarkan oleh pasar pembangun blok. Untuk menyensor, pengusul blok harus sering memilih blok yang kurang menguntungkan, yang **tidak akan rasional secara ekonomi dan juga jelas bagi validator lain** di jaringan. + +Ada tambahan potensial untuk PBS, seperti transaksi terenkripsi dan daftar inklusi, yang dapat meningkatkan resistensi sensor Ethereum. Ini membuat pembangun blok dan pengusul tidak dapat melihat transaksi sebenarnya yang termasuk dalam blok mereka. + +Baca tentang pemisahan pengusul-pembangun + +## Melindungi validator {#protecting-validators} + +Ada kemungkinan bahwa penyerang canggih dapat mengidentifikasi validator yang akan datang dan menyerang mereka untuk mencegah mereka mengusulkan blok; ini dikenal sebagai serangan **penolakan layanan (DoS)**. Mengimplementasikan [**pemilihan pemimpin rahasia (SLE)**](/roadmap/secret-leader-election) akan melindungi dari jenis serangan ini dengan mencegah pengusul blok diketahui sebelumnya. Ini bekerja dengan terus mengacak sekumpulan komitmen kriptografi yang mewakili proposer blok kandidat dan menggunakan urutan mereka untuk menentukan validator mana yang dipilih dengan cara yang hanya diketahui oleh validator itu sendiri sebelumnya. + +Baca tentang pemilihan pemimpin rahasia + +## Kemajuan saat ini {#current-progress} + +Peningkatan keamanan di peta perjalanan berada di tahap penelitian lanjutan, tetapi tidak diharapkan akan diimplementasikan dalam waktu dekat. Langkah selanjutnya untuk view-merge, PBS, SSF, dan SLE adalah menyelesaikan spesifikasi dan mulai membangun prototipe. diff --git a/src/content/translations/id/roadmap/single-slot-finality/index.md b/src/content/translations/id/roadmap/single-slot-finality/index.md new file mode 100644 index 00000000000..efce220168a --- /dev/null +++ b/src/content/translations/id/roadmap/single-slot-finality/index.md @@ -0,0 +1,66 @@ +--- +title: Finalitas ruang tunggal +description: Penjelasan finalitas ruang tunggal +lang: id +--- + +# Finalitas ruang tunggal {#single-slot-finality} + +Perlu sekitar 15 menit bagi blok Ethereum untuk diselesaikan. Namun, kita bisa membuat mekanik konsensus Ethereum memvalidasi blok dengan lebih efisien dan mengurangi waktu-ke-finalitas secara dramatis. Daripada menunggu lima belas menit, blok bisa dipinang dan diselesaikan dalam ruang yang sama. Konsep ini dikenal dengan **finalitas ruang tunggal (SSF)**. + +## Apa itu kefinalan? {#what-is-finality} + +Dalam mekanisme konsensus berbasis bukti taruhan Ethereum, finalitas mengacu pada jaminan bahwa blok tidak dapat diubah atau dihapus dari rantai blok tanpa membakar setidaknya 33% dari total ETH yang ditambang. Ini adalah keamanan 'kripto-ekonomi' karena kepercayaan berasal dari biaya yang sangat tinggi yang terkait dengan mengubah urutan atau konten rantai yang akan mencegah aktor ekonomi rasional untuk mencobanya. + +## Mengapa mengincar finalitas yang lebih cepat? {#why-aim-for-quicker-finality} + +Waktu finalitas saat ini ternyata terlalu lama. Kebanyakan pengguna tidak ingin menunggu 15 menit untuk finalitas, dan ini tidak nyaman bagi aplikasi dan bursa yang mungkin ingin memiliki keluaran transaksi yang tinggi untuk harus menunggu selama itu untuk memastikan transaksi mereka permanen. Adanya jeda antara proposal dan finalisasi blok juga menciptakan peluang untuk reorg pendek yang dapat digunakan oleh penyerang untuk menyensor blok tertentu atau mengekstrak MEV. Mekanisme yang menangani peningkatan blok dalam tahap juga cukup rumit dan telah diperbaiki beberapa kali untuk menutup kerentanan keamanan, menjadikannya salah satu bagian dari basis kode Ethereum di mana bug halus lebih mungkin muncul. Masalah-masalah ini dapat dihilangkan dengan mengurangi waktu finalitas menjadi satu ruang. + +## Pengorbanan antara desentralisasi / waktu / overhead {#the-decentralization-time-overhead-tradeoff} + +Jaminan finalitas bukanlah sifat langsung dari blok baru; dibutuhkan waktu untuk blok baru mencapai finalitas. Alasannya adalah validator yang mewakili setidaknya 2/3 dari total ETH yang ditambang di jaringan harus memberikan suara untuk blok ("menyatakan") agar dianggap final. Setiap simpul memvalidasi di jaringan harus memproses pengesahan dari simpul lain untuk mengetahui apakah blok telah, atau belum, mencapai ambang batas 2/3 itu. + +Semakin singkat waktu yang diberikan untuk mencapai finalisasi, semakin banyak daya komputasi yang dibutuhkan di setiap simpul karena pemrosesan pengesahan harus dilakukan lebih cepat. Juga, semakin banyak simpul validasi yang ada di jaringan, semakin banyak pengesahan yang harus diproses untuk setiap blok, juga menambah daya komputasi yang dibutuhkan. Semakin banyak daya komputasi yang dibutuhkan, semakin sedikit orang yang dapat berpartisipasi karena perangkat keras yang lebih mahal diperlukan untuk memvalidasi setiap simpul. Meningkatkan waktu antara blok mengurangi daya komputasi yang dibutuhkan di setiap simpul tetapi juga memperpanjang waktu hingga finalitas, karena pengesahan diproses lebih lambat. + +Oleh karena itu, ada tawar-menawar antara overhead (daya komputasi), desentralisasi (jumlah simpul yang dapat berpartisipasi dalam memvalidasi rantai) dan waktu hingga finalitas. Sistem keseimbangan ideal daya komputasi minimum, desentralisasi maksimum dan waktu hingga finalitas minimum. + +Mekanisme konsensus Ethereum saat ini menyeimbangkan ketiga parameter ini dengan: + +- **Menetapkan taruhan minimum menjadi 32 ETH**. Ini menetapkan batas atas jumlah pernyataan validator yang harus diproses oleh simpul individu, dan karenanya batas atas persyaratan komputasi untuk setiap simpul. +- **Menetapkan waktu hingga finalitas sekitar ~15 menit**. Ini memberikan waktu yang cukup bagi validator yang dijalankan pada komputer rumah biasa untuk memproses pernyataan dengan aman untuk setiap blok. + +Dengan desain mekanisme saat ini, untuk mengurangi waktu hingga finalitas, perlu mengurangi jumlah validator di jaringan atau meningkatkan persyaratan perangkat keras untuk setiap simpul. Namun, ada peningkatan yang dapat dilakukan pada cara pemrosesan pernyataan yang dapat memungkinkan lebih banyak pengesahan dihitung tanpa menambah biaya overhead di setiap simpul. Pemrosesan yang lebih efisien akan memungkinkan finalitas ditentukan dalam satu ruang, bukan di dua jangka waktu. + +## Rute ke SSF {#routes-to-ssf} + + + +Mekanisme konsensus saat ini menggabungkan pengesahan dari beberapa validator, yang dikenal sebagai komite, untuk mengurangi jumlah pesan yang harus diproses oleh setiap validator untuk memvalidasi blok. Setiap validator memiliki kesempatan untuk mengesahkan dalam setiap jangka waktu (32 ruang) tetapi di setiap ruang, hanya sebagian validator, yang dikenal sebagai 'panitia' yang mengesahkan. Mereka melakukannya dengan membagi menjadi subnet di mana beberapa validator dipilih untuk menjadi 'agregator'. Agregator-agregator itu masing-masing menggabungkan semua tanda tangan yang mereka lihat dari validator lain di subnet mereka menjadi satu tanda tangan agregat. Agregator yang mencakup jumlah kontribusi individu terbanyak mengirimkan tanda tangan agregat mereka ke proposer blok, yang menyertakannya dalam blok bersama dengan tanda tangan agregat dari panitia lain. + +Proses ini memberikan kapasitas yang cukup untuk setiap validator memberikan suara dalam setiap jangka waktu, karena 32 ruang _ 64 panitia _ 256 validator per panitia = 524.288 validator per jangka waktu. Pada saat penulisan (Februari 2023) ada ~513.000 validator aktif. + +Dalam skema ini, hanya mungkin bagi setiap validator untuk memberikan suara pada blok dengan mendistribusikan pengesahan mereka di seluruh jangka waktu. Namun, ada kemungkinan cara untuk meningkatkan mekanisme sehingga _setiap validator memiliki kesempatan untuk mengesahkan dalam setiap ruang_. + + +Sejak mekanisme konsensus Ethereum dirancang, skema agregasi tanda tangan (BLS) telah ditemukan jauh lebih skalabel daripada yang awalnya dipikirkan, sementara kemampuan klien untuk memproses dan memverifikasi tanda tangan juga meningkat. Ternyata memproses pengesahan dari sejumlah besar validator sebenarnya mungkin dalam satu ruang. Misalnya, dengan satu juta validator masing-masing memberikan suara dua kali di setiap ruang, dan waktu ruang disesuaikan menjadi 16 detik, simpul akan diminta untuk memverifikasi tanda tangan dengan kecepatan minimum 125.000 agregasi per detik untuk memproses semua 1 juta pengesahan dalam ruang. Pada kenyataannya, dibutuhkan sekitar 500 nanodetik untuk melakukan satu verifikasi tanda tangan, yang berarti 125.000 dapat dilakukan dalam ~62,5 ms - jauh di bawah ambang batas satu detik. + +Peningkatan efisiensi lebih lanjut dapat dilakukan dengan membuat superkomite misalnya 125.000 validator acak dipilih per ruang. Hanya validator ini yang bisa memberikan suara pada blok dan oleh karena itu hanya subset validator ini yang memutuskan apakah blok sudah final atau tidak. Apakah ini ide yang baik atau tidak tergantung pada seberapa mahal komunitas lebih suka serangan berhasil pada Ethereum. Ini karena alih-alih membutuhkan 2/3 dari total ether yang ditambang, dan penyerang bisa menyelesaikan blok tidak jujur dengan 2/3 dari ether yang ditambang _di superkomite itu_. Ini masih merupakan area penelitian aktif, tetapi tampaknya masuk akal bahwa untuk set validator cukup besar untuk membutuhkan superkomite pada awalnya, biaya menyerang salah satu subkomite itu akan sangat tinggi (misalnya biaya serangan dalam ETH akan menjadi `2/3 * 125,000 * 32 = ~2.6 million ETH`). Biaya serangan dapat disesuaikan dengan meningkatkan ukuran set validator (misalnya sesuaikan ukuran validator sehingga biaya serangan sama dengan 1 juta ether, 4 juta ether, 10 juta ether, dll). [Jajak pendapat awal](https://youtu.be/ojBgyFl6-v4?t=755) dari komunitas tampaknya menunjukkan bahwa 1-2 juta ether adalah biaya serangan yang dapat diterima, yang menyiratkan ~65.536 - 97.152 validator per superkomite. + +Namun, verifikasi bukanlah hambatan sebenarnya - agregasi tanda tanganlah yang benar-benar menantang simpul validasi. Untuk meningkatkan skala agregasi tanda tangan mungkin akan membutuhkan peningkatan jumlah validator di setiap subnet, meningkatkan jumlah subnet, atau menambahkan lapisan agregasi tambahan (yaitu menerapkan panitia dari panitia). Bagian dari solusinya mungkin dengan mengizinkan agregator khusus - serupa dengan bagaimana pembangunan blok dan menghasilkan komitmen untuk data rollup akan diserahkan ke pembangun blok khusus di bawah pemisahan proposer-builder (PBS) dan Danksharding. + +## Apa peran aturan pilihan-garpu di SSF? {#role-of-the-fork-choice-rule} + +Mekanisme konsensus saat ini mengandalkan hubungan erat antara alat finalitas (algoritma yang menentukan apakah 2/3 validator telah memberikan kesaksian pada rantai tertentu) dan aturan pilihan garpu (algoritma yang memutuskan rantai mana yang benar ketika ada beberapa pilihan). Algoritma pilihan garpu hanya mempertimbangkan blok _sejak_ blok terakhir yang difinalisasi. Di bawah SSF tidak akan ada blok untuk dipertimbangkan oleh aturan pilihan garpu, karena finalitas terjadi di ruang yang sama dengan blok yang diajukan. Ini berarti bahwa di bawah SSF _baik_ algoritma pilihan cabang _maupun_ alat finalitas akan aktif setiap saat. Alat finalitas akan menyelesaikan blok di mana 2/3 validator sedang daring dan membuktikan dengan jujur. Jika sebuah blok tidak mampu melebihi ambang batas 2/3, aturan pilihan garpu akan berperan untuk menentukan rantai mana yang harus diikuti. Ini juga menciptakan peluang untuk mempertahankan mekanisme kebocoran ketidakaktifan yang memulihkan rantai di mana >1/3 validator menjadi offline, meskipun dengan beberapa nuansa tambahan. + +## Masalah yang belum terselesaikan {#outstanding-issues} + +Masalah dengan penskalaan agregasi dengan meningkatkan jumlah validator per subnet adalah bahwa hal itu menyebabkan beban yang lebih besar pada jaringan rekan-ke-rekan. Masalah dengan menambahkan lapisan agregasi adalah bahwa hal itu cukup kompleks untuk dirancang dan menambahkan latensi (yaitu, bisa memakan waktu lebih lama bagi proposer blok untuk mendengar dari semua agregator subnet). Juga tidak jelas bagaimana cara menangani skenario di mana ada lebih banyak validator aktif di jaringan daripada yang dapat diproses secara layak di setiap ruang, bahkan dengan agregasi tanda tangan BLS. Salah satu solusi potensial adalah bahwa, karena semua validator memberikan kesaksian di setiap ruang dan tidak ada panitia di bawah SSF, batas 32 ETH pada keseimbangan efektif dapat dihapus sepenuhnya, yang berarti operator yang mengelola beberapa validator dapat mengonsolidasikan taruhan mereka dan menjalankan lebih sedikit, mengurangi jumlah pesan yang harus diproses oleh simpul validasi untuk memperhitungkan seluruh set validator. Ini bergantung pada staker besar yang setuju untuk mengonsolidasikan validator mereka. Juga dimungkinkan untuk memberlakukan batas tetap pada jumlah validator atau jumlah penaruhan ETH setiap saat. Namun, ini membutuhkan beberapa mekanisme untuk memutuskan validator mana yang diizinkan untuk berpartisipasi dan mana yang tidak, yang rentan menciptakan efek samping yang tidak diinginkan. + +## 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]). + +## Bacaan lebih lanjut {#further-reading} + +- [Vitalik tentang SSF di EDCON 2022](https://www.youtube.com/watch?v=nPgUKNPWXNI) +- [Catatan Vitalik: Jalur menuju satu finalitas ruang tunggal](https://notes.ethereum.org/@vbuterin/single_slot_finality) diff --git a/src/content/translations/id/roadmap/statelessness/index.md b/src/content/translations/id/roadmap/statelessness/index.md new file mode 100644 index 00000000000..75187671f68 --- /dev/null +++ b/src/content/translations/id/roadmap/statelessness/index.md @@ -0,0 +1,103 @@ +--- +title: Tanpa kewarganegaraan, masa berlaku kewarganegaraan, dan masa berlaku sejarah +description: Penjelasan tentang kedaluwarsa riwayat dan Ethereum tanpa status +lang: id +--- + +# Tanpa kewarganegaraan, masa berlaku kewarganegaraan, dan masa berlaku sejarah {#statelessness} + +Kemampuan untuk menjalankan simpul Ethereum pada perangkat keras sederhana sangat penting untuk desentralisasi yang sebenarnya. Hal ini karena menjalankan sebuah simpul memberikan pengguna kemampuan untuk memverifikasi informasi dengan melakukan pemeriksaan kriptografi secara mandiri daripada mempercayai pihak ketiga untuk memberi mereka data. Menjalankan sebuah simpul memungkinkan pengguna untuk mengirimkan transaksi secara langsung ke jaringan rekan-ke-rekan Ethereum daripada harus mempercayai perantara. Desentralisasi tidak mungkin dilakukan jika manfaat ini hanya tersedia bagi pengguna dengan perangkat keras yang mahal. Sebaliknya, simpul harus dapat berjalan dengan kebutuhan pemrosesan dan memori yang sangat sederhana sehingga dapat berjalan di ponsel, komputer mikro, atau tanpa disadari di komputer rumah. + +Saat ini, kebutuhan ruang disk yang tinggi merupakan penghalang utama yang menghalangi akses universal ke simpul. Hal ini terutama disebabkan oleh kebutuhan untuk menyimpan sebagian besar data status Ethereum. Data status ini berisi informasi penting yang diperlukan untuk memproses blok dan transaksi baru dengan benar. Pada saat artikel ini ditulis, SSD 2TB yang cepat direkomendasikan untuk menjalankan sebuah simpul Ethereum penuh. Untuk sebuah simpul yang tidak memangkas data yang lebih lama, kebutuhan penyimpanan bertambah sekitar 14GB/minggu, dan simpul arsip yang menyimpan semua data sejak awal mendekati 12 TB (pada saat penulisan, pada Februari 2023). + +Hard drive yang lebih murah dapat digunakan untuk menyimpan data yang lebih lama, namun terlalu lambat untuk mengimbangi blok yang masuk. Mempertahankan model penyimpanan saat ini untuk klien sambil membuat data lebih murah dan lebih mudah disimpan hanyalah solusi sementara dan parsial untuk masalah ini karena pertumbuhan status Ethereum 'tidak terbatas', yang berarti bahwa kebutuhan penyimpanan hanya akan terus meningkat, dan peningkatan teknologi akan selalu harus mengimbangi pertumbuhan status yang berkelanjutan. Sebaliknya, klien harus menemukan cara baru untuk memverifikasi blok dan transaksi yang tidak bergantung pada pencarian data dari database lokal. + +## Mengurangi penyimpanan untuk simpul {#reducing-storage-for-nodes} + +Ada beberapa cara untuk mengurangi jumlah data yang harus disimpan oleh setiap simpul, masing-masing membutuhkan protokol inti Ethereum untuk diperbarui ke tingkat yang berbeda: + +- **Kadaluarsa riwayat**: memungkinkan simpul untuk menghapus data status yang lebih tua dari X blok, tetapi tidak mengubah cara penanganan data status oleh klien Ethereum +- **Kadaluwarsa status**: memungkinkan data status yang tidak sering digunakan menjadi tidak aktif. Data yang tidak aktif dapat diabaikan oleh klien sampai data tersebut dibangkitkan. +- **Keadaan tanpa status yang lemah**: hanya produsen blok yang perlu mengakses data status lengkap, simpul lain dapat memverifikasi blok tanpa database status lokal. +- **Keadaan tanpa status yang kuat**: tidak ada simpul yang perlu mengakses data status lengkap. + +## Data kedaluwarsa {#data-expiry} + +### Kadaluarsa riwayat {#history-expiry} + +Kedaluwarsa riwayat expiry mengacu pada klien yang memangkas data lama yang tidak mereka perlukan, sehingga mereka hanya menyimpan sedikit data historis, dan menghapus data lama ketika data baru tiba. Ada dua alasan mengapa klien memerlukan data historis: sinkronisasi dan melayani permintaan data. Awalnya, klien harus menyinkronkan dari blok genesis, memverifikasi bahwa setiap blok yang berurutan sudah benar sampai ke kepala rantai. Saat ini, klien menggunakan "pos pemeriksaan subjektivitas yang lemah" untuk melangkahkan kaki mereka ke kepala rantai. Checkpoint ini merupakan titik awal yang terpercaya, seperti memiliki blok genesis yang dekat dengan saat ini, bukan di awal berdirinya Ethereum. Ini berarti klien dapat membuang semua informasi sebelum pos pemeriksaan subjektivitas yang lemah terbaru tanpa kehilangan kemampuan untuk menyinkronkan ke kepala rantai. Klien saat ini melayani permintaan (yang datang melalui JSON-RPC) untuk data historis dengan mengambilnya dari basis data lokal mereka. Namun, dengan riwayat kedaluwarsa, hal ini tidak akan mungkin dilakukan jika data yang diminta telah dipangkas. Menyajikan data historis ini adalah di mana beberapa solusi inovatif diperlukan. + +Salah satu pilihannya adalah klien meminta data historis dari rekan-rekannya menggunakan solusi seperti Jaringan Portal. Jaringan Portal adalah jaringan rekan-ke-rekan yang sedang dikembangkan untuk menyajikan data historis di mana setiap simpul menyimpan sepotong kecil sejarah Ethereum sehingga seluruh sejarah yang ada didistribusikan ke seluruh jaringan. Permintaan dilayani dengan mencari rekan-rekan yang menyimpan data yang relevan dan memintanya dari mereka. Atau, karena umumnya aplikasi yang memerlukan akses ke data historis, maka mereka bertanggung jawab untuk menyimpannya. Mungkin juga ada cukup banyak aktor altruistik dalam ruang Ethereum yang bersedia untuk memelihara arsip sejarah. Ini bisa berupa DAO yang berputar untuk mengelola penyimpanan data historis, atau idealnya merupakan kombinasi dari semua opsi ini. Penyedia ini dapat menyajikan data dengan berbagai cara, seperti melalui torrent, FTP, Filecoin, atau IPFS. + +Kedaluwarsa riwayat agak kontroversial karena sejauh ini Ethereum selalu secara implisit menjamin ketersediaan data historis apa pun. Sinkronisasi penuh dari genesis selalu dimungkinkan sebagai standar, bahkan jika hal ini bergantung pada pembangunan kembali beberapa data yang lebih lama dari snapshot. Kedaluwarsa riwayat memindahkan tanggung jawab untuk menyediakan jaminan ini di luar protokol inti Ethereum. Hal ini dapat menimbulkan risiko penyensoran baru jika organisasi terpusat yang akhirnya turun tangan untuk menyediakan data historis. + +EIP-4444 belum siap untuk dikirim, tetapi sedang dalam diskusi aktif. Menariknya, tantangan dengan EIP-4444 tidak terlalu teknis, tetapi sebagian besar adalah manajemen komunitas. Agar hal ini dapat dilakukan, perlu ada dukungan dari komunitas yang tidak hanya mencakup persetujuan tetapi juga komitmen untuk menyimpan dan menyajikan data historis dari entitas yang dapat dipercaya. + +Peningkatan ini tidak secara fundamental mengubah cara simpul Ethereum menangani data status, ini hanya mengubah cara data historis diakses. + +### Kadaluwarsa status {#state-expiry} + +Kedaluwarsa status mengacu pada penghapusan state dari setiap simpul jika belum pernah diakses baru-baru ini. Ada beberapa cara yang dapat dilakukan untuk mengimplementasikan hal ini, termasuk: + +- **Kedaluwarsa berdasarkan sewa**: membebankan "sewa" kepada akun dan mengakhiri akun tersebut saat sewa mencapai nol +- **Kedaluwarsa berdasarkan waktu**: membuat akun tidak aktif jika tidak ada pembacaan/penulisan pada akun tersebut selama jangka waktu tertentu + +Masa berlaku dengan sewa dapat berupa sewa langsung yang dibebankan ke akun untuk menjaganya tetap berada dalam basis data status aktif. Kedaluwarsa berdasarkan waktu dapat berupa hitungan mundur dari interaksi akun terakhir, atau dapat juga berupa kedaluwarsa secara berkala untuk semua akun. Mungkin juga ada mekanisme yang menggabungkan elemen-elemen dari kedua model berbasis waktu dan sewa, misalnya akun individu tetap dalam kondisi aktif jika mereka membayar sejumlah kecil biaya sebelum masa berlakunya berakhir. Dalam kadaluarsa keadaan, penting untuk dicatat bahwa keadaan tidak aktif **tidak dihapus**, melainkan disimpan secara terpisah dari keadaan aktif. Status tidak aktif dapat dibangkitkan menjadi status aktif. + +Cara kerjanya adalah dengan memiliki pohon status untuk jangka waktu tertentu (mungkin ~1 tahun). Setiap kali periode baru dimulai, begitu juga dengan pohon status yang benar-benar segar. Hanya pohon status saat ini yang dapat dimodifikasi, yang lainnya tidak dapat diubah. Simpul Ethereum hanya diharapkan untuk menyimpan state tree saat ini dan state tree terbaru berikutnya. Hal ini memerlukan cara untuk memberi cap waktu pada alamat dengan periode keberadaannya. Terdapat [beberapa cara mungkin](https://ethereum-magicians.org/t/types-of-resurrection-metadata-in-state-expiry/6607) untuk melakukannya, tetapi opsi utama mengharuskan [alamat-alamat menjadi lebih panjang](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485) untuk menampung informasi tambahan dengan manfaat tambahan bahwa alamat yang lebih panjang lebih aman secara signifikan. Elemen peta perjalanan yang melakukannya disebut [perluasan ruang alamat](https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485). + +Sama halnya dengan kedaluwarsa riwayat, di bawah kedaluwarsa negara, tanggung jawab untuk menyimpan data negara lama dihapus dari pengguna individu dan didorong ke entitas lain seperti penyedia terpusat, anggota komunitas altruistik, atau solusi terdesentralisasi yang lebih futuristik seperti Jaringan Portal. + +Kedaluwarsa status masih dalam tahap penelitian dan belum siap untuk dikirim. Kedaluwarsa status mungkin terjadi lebih lambat daripada klien tanpa kewarganegaraan dan kedaluwarsa riwayat karena peningkatan tersebut membuat ukuran negara yang besar dapat dengan mudah dikelola oleh sebagian besar validator. + +## Tanpa kewarganegaraan {#statelessness} + +Keadaan tanpa status sedikit keliru karena tidak berarti konsep "status" dihilangkan, tetapi melibatkan perubahan pada bagaimana node Ethereum menangani data status. Keadaan tanpa status itu dsendiri terdiri atas dua jenis: keadaan tanpa status yang lemah dan keadaan tanpa status yang kuat. Keadaan tanpa status yang lemah memungkinkan sebagian besar simpul menjadi tanpa status dengan menempatkan tanggung jawab untuk penyimpanan status pada beberapa simpul. Keadaan tanpa status yang kuat sepenuhnya menghilangkan kebutuhan simpul apa pun untuk menyimpan data status penuh. Baik keadaan tanpa status yang lemah maupun yang kuat menawarkan manfaat berikut ini bagi validator normal: + +- sinkronisasi yang hampir instan +- kemampuan untuk memvalidasi blok yang rusak +- simpul yang dapat berjalan dengan kebutuhan perangkat keras yang sangat rendah (misalnya pada ponsel) +- simpul dapat berjalan di atas hard drive yang murah karena tidak diperlukan pembacaan/penulisan disk +- kompatibel dengan peningkatan kriptografi Ethereum di masa mendatang + +### Keadaan Tanpa Status yang Lemah {#weak-statelessness} + +Keadaan tanpa status yang lemah memang melibatkan perubahan pada cara simpul Ethereum memverifikasi perubahan status, tetapi tidak sepenuhnya menghilangkan kebutuhan akan penyimpanan status di semua simpul di jaringan. Sebaliknya, keadaan tanpa status yang lemah menempatkan tanggung jawab untuk penyimpanan status pada pengusul blok, sementara semua simpul lain dalam jaringan memverifikasi blok tanpa menyimpan data status secara penuh. + +**Dalam keadaan tanpa status yang lemah, pengajuan blok membutuhkan akses ke data negara secara penuh, tetapi verifikasi blok tidak membutuhkan data status** + +Untuk hal ini terjadi, [pohon Verkle](/roadmap/verkle-trees) harus sudah diimplementasikan dalam klien-klien Ethereum. Pohon Verkle adalah struktur data pengganti untuk menyimpan data status Ethereum yang memungkinkan "saksi" berukuran kecil dan tetap pada data yang akan diteruskan di antara rekan-rekan dan digunakan untuk memverifikasi blok alih-alih memverifikasi blok terhadap database lokal. [Pemisahan pembangun proposal](/roadmap/pbs/) juga diperlukan karena ini memungkinkan pembangun blok menjadi simpul yang berspesialisasi dengan perangkat keras yang lebih kuat, dan merekalah yang memerlukan akses ke data keadaan penuh. + + + +Keadaan tanpa status bergantung pada pembangun blok yang menyimpan salinan data negara lengkap sehingga mereka dapat menghasilkan saksi yang dapat digunakan untuk memverifikasi blok. Simpul lain tidak membutuhkan akses ke data status, semua informasi yang diperlukan untuk memverifikasi blok tersedia di saksi. Hal ini menciptakan situasi di mana mengajukan blok itu mahal, tetapi memverifikasi blok itu murah, yang berarti lebih sedikit operator yang akan menjalankan simpul pengajuan blok. Akan tetapi, desentralisasi pengusul blok tidak terlalu penting selama sebanyak mungkin peserta dapat memverifikasi secara independen bahwa blok yang mereka ajukan valid. + +Baca lebih lanjut tentang catatan Dankrad + + +Pengusul blok menggunakan data status untuk membuat "saksi" - sekumpulan data minimal yang membuktikan nilai status yang sedang diubah oleh transaksi dalam sebuah blok. Validator lain tidak menyimpan state, mereka hanya menyimpan status akar (hash dari seluruh status). Mereka menerima sebuah blok dan sebuah saksi dan menggunakannya untuk memperbarui status akar mereka. Hal ini membuat simpul validasi menjadi sangat ringan. + +Keadaan tanpa status yang lemah sedang dalam tahap penelitian lanjutan, tetapi bergantung pada pemisahan pengusul-pembangun dan Pohon Verkle yang telah diimplementasikan sehingga saksi-saksi kecil dapat diteruskan di antara rekan-rekannya. Ini berarti keadaan tanpa status yang lemah mungkin masih beberapa tahun lagi dari Jaringan Utama Ethereum. + +### Keadaan tanpa status yang kuat {#strong-statelessness} + +Tanpa kewarganegaraan yang kuat menghilangkan kebutuhan akan blok apa pun untuk menyimpan data negara. Sebagai gantinya, transaksi dikirim dengan saksi yang dapat diagregasi oleh produsen blok. Produsen blok kemudian bertanggung jawab untuk menyimpan hanya status yang diperlukan untuk menghasilkan saksi untuk akun yang relevan. Tanggung jawab untuk menyatakan hampir sepenuhnya berpindah ke pengguna, karena mereka mengirimkan saksi dan 'daftar akses' untuk menyatakan akun dan kunci penyimpanan mana yang berinteraksi dengan mereka. + +Keadaan tanpa status yang kuat telah diselidiki oleh para peneliti tetapi saat ini tidak diharapkan menjadi bagian dari peta perjalanan Ethereum - kemungkinan besar keadaan tanpa status yang lemah sudah cukup untuk kebutuhan penskalaan Ethereum. + +## Kemajuan saat ini {#current-progress} + +Keadaan tanpa status yang lemah, kedaluwarsa riwayat, dan kedaluwarsa status seluruhnya ada dalam tahap penelitian dan diperkirakan akan dikirimkan beberapa tahun dari sekarang. Tidak ada jaminan bahwa semua proposal ini akan diimplementasikan, sebagai contoh, jika kedaluwarsa status diimplementasikan terlebih dahulu, mungkin tidak perlu juga mengimplementasikan kedaluwarsa riwayat. Ada juga elemen-elemen peta perjalanan lainnya, seperti [Pohon Verkle](/roadmap/verkle-trees) dan [Pemisahan pembangun Pengusul](/roadmap/pbs) yang perlu diselesaikan terlebih dahulu. + +## Bacaan lebih lanjut {#further-reading} + +- [AMA keadaan tanpa status vitalik](https://www.reddit.com/r/ethereum/comments/o9s15i/impromptu_technical_ama_on_statelessness_and/) +- [Teori manajemen ukuran status](https://hackmd.io/@vbuterin/state_size_management) +- [Pembatasan status yang meminimalkan konflik kebangkitan](https://ethresear.ch/t/resurrection-conflict-minimized-state-bounding-take-2/8739) +- [Jalan menuju keadaan tanpa status dan kedaluwarsa status](https://hackmd.io/@vbuterin/state_expiry_paths) +- [Spesifikasi EIP-4444](https://eips.ethereum.org/EIPS/eip-4444) +- [Alex Stokes pada EIP-4444](https://youtu.be/SfDC_qUZaos) +- [Mengapa sangat penting untuk masuk ke keadaan tanpa status](https://dankradfeist.de/ethereum/2021/02/14/why-stateless.html) +- [Catatan konsep klien tanpa kewarganegaraan yang asli](https://ethresear.ch/t/the-stateless-client-concept/172) +- [Lebih lanjut tentang kedaluwarsa status](https://hackmd.io/@vbuterin/state_size_management#A-more-moderate-solution-state-expiry) +- [Bahkan lebih lanjut tentang kedaluwarsa status](https://hackmd.io/@vbuterin/state_expiry_paths#Option-2-per-epoch-state-expiry) diff --git a/src/content/translations/id/roadmap/user-experience/index.md b/src/content/translations/id/roadmap/user-experience/index.md new file mode 100644 index 00000000000..fb30d2ed155 --- /dev/null +++ b/src/content/translations/id/roadmap/user-experience/index.md @@ -0,0 +1,36 @@ +--- +title: Meningkatkan pengalaman pengguna +description: Masih terlalu rumit untuk menggunakan Ethereum bagi kebanyakan orang. Untuk mendorong adopsi massal, Ethereum harus secara drastis menurunkan hambatan masuknya - pengguna harus mendapatkan manfaat dari akses yang terdesentralisasi, tanpa izin, dan tahan sensor ke Ethereum, tetapi harus sama mudahnya dengan menggunakan aplikasi web2 tradisional. +lang: id +image: ../../../../../assets/roadmap/roadmap-ux.png +alt: "Peta Perjalanan Ethereum" +template: roadmap +--- + +Menggunakan Ethereum perlu disederhanakan; mulai dari mengelola kunci dan dompet hingga memulai transaksi. Untuk memfasilitasi adopsi massal, Ethereum harus secara drastis meningkatkan kemudahan penggunaan, sehingga pengguna dapat merasakan akses tanpa izin dan tanpa sensor ke Ethereum dengan pengalaman tanpa gesekan dalam menggunakan aplikasi Web2. + +## Di luar frasa benih {#no-more-seed-phrases} + +Akun Ethereum dilindungi oleh sepasang kunci yang digunakan untuk mengidentifikasi akun (kunci publik) dan menandatangani pesan (kunci pribadi). Kunci pribadi seperti kata sandi utama; kunci ini memungkinkan akses penuh ke akun Ethereum. Ini adalah cara pengoperasian yang berbeda untuk orang-orang yang lebih akrab dengan bank dan aplikasi Web2 yang mengelola akun atas nama pengguna. Agar Ethereum dapat mencapai adopsi massal tanpa bergantung pada pihak ketiga yang tersentralisasi, harus ada cara yang mudah dan tanpa gesekan bagi pengguna untuk menjaga aset mereka dan tetap mengontrol data mereka tanpa harus memahami kriptografi kunci publik-pribadi dan manajemen kunci. + +Solusi untuk hal ini adalah dengan menggunakan dompet kontrak pintar untuk berinteraksi dengan Ethereum. Dompet kontrak pintar menciptakan cara untuk melindungi akun jika kuncinya hilang atau dicuri, peluang untuk deteksi dan pertahanan yang lebih baik, dan memungkinkan dompet untuk mendapatkan fungsionalitas baru. Meskipun dompet kontrak pintar sudah ada saat ini, namun masih sulit untuk dibuat karena protokol Ethereum perlu mendukungnya dengan lebih baik. Dukungan tambahan ini dikenal sebagai abstraksi akun. + +Lebih lanjut tentang abstraksi akun + +## Simpul untuk semua orang + +Pengguna yang menjalankan node tidak perlu mempercayai pihak ketiga untuk memberikan data kepada mereka, dan mereka dapat berinteraksi dengan cepat, secara pribadi, dan tanpa izin dengan rantai blok Ethereum. Namun, menjalankan simpul saat ini membutuhkan pengetahuan teknis dan ruang disk yang besar, yang berarti banyak orang harus mempercayai perantara. + +Ada beberapa peningkatan yang akan membuat menjalankan node jauh lebih mudah dan jauh lebih sedikit menggunakan sumber daya. Cara penyimpanan data akan berubah untuk menggunakan struktur yang lebih efisien dalam penggunaan ruang yang dikenal sebagai **Pohon Verkle**. Dengan [keadaan tanpa status](/roadmap/statelessness) atau [kedaluwarsa data](/roadmap/statelessness/#data-expiry), simpul Ethereum tidak perlu menyimpan salinan seluruh data keadaan Ethereum, yang secara drastis mengurangi kebutuhan ruang hard disk. [Simpul ringan](/developers/docs/nodes-and-clients/light-clients/) akan menawarkan banyak manfaat dari menjalankan simpul penuh, tetapi dapat dijalankan dengan mudah pada ponsel seluler atau dalam aplikasi browser sederhana. + +Baca tentang pohon Verkle + +Dengan peningkatan ini, hambatan untuk menjalankan sebuah simpul dikurangi menjadi nol secara efektif. Pengguna akan mendapatkan keuntungan dari akses yang aman dan tanpa izin ke Ethereum tanpa harus mengorbankan ruang disk atau CPU yang signifikan di komputer atau ponsel mereka, dan tidak perlu bergantung pada pihak ketiga untuk akses data atau jaringan ketika mereka menggunakan aplikasi. + +## Kemajuan saat ini {#current-progress} + +Dompet kontrak pintar sudah tersedia, tetapi lebih banyak peningkatan diperlukan untuk membuatnya terdesentralisasi dan tanpa izin. EIP-4337 adalah proposal matang yang tidak memerlukan perubahan apa pun pada protokol Ethereum. Kontrak pintar utama yang diperlukan untuk EIP-4337 digunakan pada bulan Maret 2023. + +Kewarganegaraan penuh masih dalam tahap penelitian dan kemungkinan masih beberapa tahun lagi untuk diimplementasikan. Ada beberapa tonggak penting dalam perjalanan menuju keadaan tanpa kewarganegaraan penuh, termasuk masa berlaku data, yang dapat diimplementasikan lebih cepat. Item-item lain dalam peta perjalanan, seperti [Pohon Verkle](/roadmap/verkle-trees/) dan [Pemisahan Pembangun Penyedia](/roadmap/pbs/), perlu diselesaikan terlebih dahulu. + +Jaringan percobaan pohon Verkle sudah aktif dan berjalan, dan fase berikutnya adalah menjalankan klien yang diaktifkan pohon Verkle pada jaringan percobaan pribadi, kemudian publik. Anda dapat membantu mempercepat kemajuan dengan menggunakan kontrak ke jaringan percobaan atau menjalankan klien jaringan percobaan. diff --git a/src/content/translations/id/roadmap/verkle-trees/index.md b/src/content/translations/id/roadmap/verkle-trees/index.md new file mode 100644 index 00000000000..dab00bc5e9e --- /dev/null +++ b/src/content/translations/id/roadmap/verkle-trees/index.md @@ -0,0 +1,65 @@ +--- +title: Pohon Verkle +description: Penjelasan tingkat tinggi tentang pohon Verkle dan bagaimana pohon tersebut akan digunakan untuk meningkatkan Ethereum +lang: id +summaryPoints: + - Temukan apa itu pohon Verkle + - Baca mengapa Pohon Verkle adalah peningkatan yang berguna untuk Ethereum +--- + +# Pohon Verkle {#verkle-trees} + +Pohon Verkle (gabungan dari "Vector commitment" dan "Merkle Trees") adalah sebuah struktur data yang dapat digunakan untuk meningkatkan simpul Ethereum sehingga simpul tersebut dapat berhenti menyimpan data status dalam jumlah besar tanpa kehilangan kemampuan untuk memvalidasi blok. + +## Tanpa kewarganegaraan {#statelessness} + +Pohon Verkle adalah langkah penting dalam perjalanan menuju klien Ethereum tanpa kewarganegaraan. Klien tanpa kewarganegaraan adalah klien yang tidak perlu menyimpan seluruh database status untuk memvalidasi blok yang masuk. Alih-alih menggunakan salinan lokal status Ethereumnya sendiri untuk memverifikasi blok, klien tanpa status menggunakan "saksi" untuk data status yang datang bersama blok. Saksi adalah sebuah kumpulan potongan-potongan individu dari data status yang diperlukan untuk mengeksekusi serangkaian transaksi tertentu, dan bukti kriptografi bahwa saksi tersebut benar-benar merupakan bagian dari data lengkap. Saksi digunakan, _bukan_ dari database keadaan. Agar hal ini dapat bekerja, saksi harus berukuran sangat kecil, sehingga dapat disiarkan dengan aman di seluruh jaringan pada waktunya agar validator dapat memprosesnya dalam ruang 12 detik. Struktur data status saat ini tidak cocok karena saksi terlalu besar. Pohon Verkle memecahkan masalah ini dengan memungkinkan saksi kecil, menghilangkan salah satu hambatan utama bagi klien tanpa status. + + + +Klien Ethereum saat ini menggunakan struktur data yang dikenal sebagai Patricia Merkle Trie untuk menyimpan data statusnya. Informasi mengenai masing-masing akun disimpan sebagai daun pada trie dan pasangan daun di-hash berulang kali hingga hanya satu hash yang tersisa. Hash terakhir ini dikenal sebagai "akar". Untuk memverifikasi blok, klien Ethereum mengeksekusi semua transaksi dalam sebuah blok dan memperbarui trie status lokal mereka. Blok dianggap valid jika akar dari pohon lokal identik dengan yang disediakan oleh pengusul blok, karena setiap perbedaan dalam komputasi yang dilakukan oleh pengusul blok dan simpul yang memvalidasi akan menyebabkan hash akar benar-benar berbeda. Masalahnya adalah memverifikasi rantai blok mengharuskan setiap klien untuk menyimpan seluruh state trie untuk blok kepala dan beberapa blok historis (default di Geth adalah menyimpan data status untuk 128 blok di belakang blok kepala). Hal ini mengharuskan klien untuk memiliki akses ke ruang disk yang besar, yang merupakan penghalang untuk menjalankan simpul penuh pada perangkat keras yang murah dan berdaya rendah. Solusi untuk hal ini adalah dengan memperbarui trie status ke struktur yang lebih efisien (Verkle tree) yang dapat diringkas menggunakan "saksi" kecil pada data yang dapat dibagikan, bukan data status yang lengkap. Memformat ulang data negara bagian ke dalam pohon Verkle adalah batu loncatan untuk beralih ke klien tanpa status. + + + +## Apa itu witness dan mengapa dibutuhkan? {#what-is-a-witness} + +Memverifikasi blok berarti mengeksekusi ulang transaksi yang terdapat di blok tersebut, menerapkan perubahan pada pohon keadaan Ethereum, dan menghitung hash akar yang baru. Blok terverifikasi adalah blok dengan hash akar keadaan terkomputasi yang sama dengan hash akar keadaan yang disediakan pada blok tersebut (karena hal ini berarti pengusul blok benar-benar melakukan komputasi yang diakuinya). Pada klien Ethereum saat ini, memperbarui keadaan membutuhkan akses ke seluruh pohon keadaan, yang merupakan struktur data besar yang harus disimpan secara lokal. Witness hanya berisi fragmen data keadaan yang dibutuhkan untuk menjalankan transaksi dalam blok. Validator kemudian hanya dapat menggunakan fragmen tersebut untuk memverifikasi bahwa pengusul blok telah mengeksekusi transaksi blok dan memperbarui keadaan dengan tepat. Namun, hal ini berarti bahwa witness perlu ditransfer di antara peer di jaringan Ethereum dengan cukup cepat untuk diterima dan diproses oleh setiap simpul dengan aman dalam ruang 12 detik. Jika witness terlalu besar, beberapa simpul mungkin membutuhkan waktu terlalu lama untuk mengunduhnya dan mengikuti perkembangan rantai. Ini adalah kekuatan sentralisasi karena hanya simpul dengan koneksi internet cepat yang dapat berpartisipasi dalam memvalidasi blok. Dengan pohon Verkle, tidak perlu menyimpan keadaan di hard disk Anda; _segala sesuatu_ yang dibutuhkan untuk memverifikasi blok terkandung di dalam blok itu sendiri. Sayangnya, witness yang dapat dihasilkan dari pohon Merkle terlalu besar untuk mendukung klien tanpa keadaan. + +## Mengapa pohon Verkle memungkinkan witness yang lebih kecil? {#why-do-verkle-trees-enable-smaller-witnesses} + +Struktur pohon Merkle menyebabkan ukuran witness menjadi sangat besar - terlalu besar untuk disebarkan dengan aman di antara peer dalam ruang 12 detik. Hal ini karena witness adalah jalur yang menghubungkan data, yang disimpan dalam daun, dengan hash akar. Untuk memverifikasi data, tidak hanya semua hash perantara yang harus menghubungkan setiap daun dengan akar, tetapi semua simpul "saudara" juga harus melakukannya. Setiap simpul dalam bukti memiliki saudara yang di-hash untuk membuat hash berikutnya pada pohon. Proses Ini menghasilkan sangat banyak data. Pohon Verkle mengurangi ukuran witness dengan memperpendek jarak antara daun pohon dan akarnya serta juga menghilangkan kebutuhan untuk menyediakan simpul saudara untuk memverifikasi hash akar. Penggunaan skema komitmen polinomial yang kuat akan meningkatkan efisiensi ruang dibandingkan dengan komitmen vektor bergaya hash. Komitmen polinomial memungkinkan witness memiliki ukuran yang tetap, terlepas dari jumlah daun yang dibuktikannya. + +Dalam skema komitmen polinomial, witness memiliki ukuran terkelola yang dapat dengan mudah ditransfer pada jaringan peer-to-peer. Hal ini memungkinkan klien memverifikasi perubahan keadaan di setiap blok dengan jumlah data yang minimal. + + + +Ukuran witness berbeda-beda, bergantung pada jumlah daun yang disertakannya. Dengan asumsi bahwa witness mencakup 1000 daun, satu witness untuk pohon Merkle akan berukuran sekitar 3,5MB (dengan asumsi ada 7 tingkat ke pohon). Witness untuk data yang sama di pohon Verkle (dengan asumsi ada 4 tingkat ke pohon) akan berukuran sekitar 150 kB - **sekitar 23x lebih kecil**. Dengan penurunan ukuran ini, witness pada klien tanpa keadaan dapat menjadi cukup kecil sehingga dapat diterima. Witness polinomial berukuran 0,128 -1 kB bergantung pada komitmen polinomial spesifik yang digunakan). + + + +## Bagaimana struktur pohon Verkle? {#what-is-the-structure-of-a-verkle-tree} + +Pohon Verkle adalah pasangan `(key,value)`, di mana kunci adalah elemen 32 byte yang terdiri dari 31 byte _stem_ dan satu byte _sufiks_. Berbagai kunci ini diorganisasikan dalam simpul _ekstensi_ dan simpul _dalam_. Simpul ekstensi mewakili satu stem untuk 256 anak dengan sufiks yang berbeda. Simpul dalam juga memiliki 256 anak yang di antaranya dapat berupa simpul ekstensi lainnya. Perbedaan utama antara struktur pohon Verkle dan pohon Merkle adalah pohon Verkle jauh lebih datar, yang berarti lebih sedikit simpul perantara yang menghubungkan daun ke akar sehingga lebih sedikit data yang diperlukan untuk menghasilkan bukti. + +![](./verkle.png) + +[Baca selengkapnya tentang struktur pohon Verkle](https://blog.ethereum.org/2021/12/02/verkle-tree-structure) + +## Kemajuan saat ini {#current-progress} + +Jaringan percobaan pohon Verkle sudah aktif dan berjalan, tetapi masih ada pembaruan dalam jumlah besar yang harus dilakukan oleh klien agar dapat mendukung pohon Verkle. Anda dapat membantu mempercepat kemajuan dengan menggunakan kontrak ke jaringan percobaan atau menjalankan klien jaringan percobaan. + +[Telusuri jaringan percobaan Beverly Hills Verkle](https://beverlyhills.ethpandaops.io) + +[Tonton penjelasan Guillaume Ballet tentang jaringan percobaan Condrieu Verkle](https://www.youtube.com/watch?v=cPLHFBeC0Vg) (perhatikan bahwa jaringan percobaan Condrieu menggunakan konsep bukti kerja dan sekarang telah digantikan oleh [jaringan percobaan Kaustinen](https://kaustinen.ethdevops.io)). + +## Bacaan lebih lanjut {#further-reading} + +- [Dankrad Feist menjelaskan pohon Verkle di PEEPanEIP](https://www.youtube.com/watch?v=RGJOQHzg3UQ) +- [Guillaume Ballet menjelaskan pohon verkle di ETHGlobal](https://www.youtube.com/watch?v=f7bEtX3Z57o) +- ["Cara pohon Verkle menjadikan Ethereum ramping dan efektif" oleh Guillaume Ballet di Devcon 6](https://www.youtube.com/watch?v=Q7rStTKwuYs) +- [Piper Merriam tentang klien tanpa keadaan dari ETHDenver 2020](https://www.youtube.com/watch?v=0yiZJNciIJ4) +- [Dankrad Fiest menjelaskan pohon Verkle dan kondisi tanpa keadaan di podcast Zero Knowledge](https://zeroknowledge.fm/episode-202-stateless-ethereum-verkle-tries-with-dankrad-feist/) +- [Vitalik Buterin tentang pohon Verkle](https://vitalik.ca/general/2021/06/18/verkle.html) +- [Dankrad Feist tentang pohon Verkle](https://dankradfeist.de/ethereum/2021/06/18/verkle-trie-for-eth1.html) +- [Dokumentasi EIP pohon Verkle](https://notes.ethereum.org/@vbuterin/verkle_tree_eip#Illustration) diff --git a/src/content/translations/id/whitepaper/index.md b/src/content/translations/id/whitepaper/index.md new file mode 100644 index 00000000000..77e995c028f --- /dev/null +++ b/src/content/translations/id/whitepaper/index.md @@ -0,0 +1,517 @@ +--- +title: Laporan Resmi Ethereum +description: Laporan pengantar Ethereum, yang diterbitkan pada tahun 2013 sebelum peluncurannya. +lang: id +sidebarDepth: 2 +hideEditButton: true +--- + +# Laporan Resmi Ethereum {#ethereum-whitepaper} + +_Laporan pengantar ini awalnya diterbitkan di tahun 2014 oleh Vitalik Buterin, pendiri [Ethereum](/what-is-ethereum/), sebelum peluncuran proyeknya pada tahun 2015. Penting untuk diperhatikan bahwa Ethereum, seperti kebanyakan proyek perangkat lunaksumber terbuka yang digerakkan oleh komunitas, telah berkembang sejak peluncuran pertamanya._ + +_Setelah beberapa tahun, kami mempertahankan laporan ini karena terus berfungsi sebagai rujukan yang berguna dan representasi akurat dari Ethereum dan visinya. Untuk mempelajari tentang pengembangan Ethereum terkini, dan bagaimana perubahan protokol dibuat, kami menyarankan [panduan ini](/learn/)._ + +[Peneliti dan akademisi yang mencari sejarah atau versi kanonis dari kertas putih [dari Desember 2014] harus merujuk PDF ini.](./whitepaper-pdf/Ethereum_Whitepaper_-_Buterin_2014.pdf) + +## Kontrak Pintar Generasi Berikutnya dan Platform Aplikasi Terdesentralisasi {#a-next-generation-smart-contract-and-decentralized-application-platform} + +Pengembangan Bitcoin oleh Satoshi Nakamoto pada tahun 2009 sering disebut sebagai pengembangan radikal dalam uang dan mata uang, dan jadi contoh pertama aset digital yang dengan serempak tanpa jaminan atau "[nilai intrinsik](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)" dan tanpa pengendali atau penerbit tunggal. Namun, bagian lain yang bisa dibilang lebih penting dari eksperimen rantai blok adalah teknologi rantai blok yang mendasari sebagai alat konsensus terdistribusi, dan perhatian dengan cepat mulai beralih ke aspek lain dari rantai blok ini. Alternatif aplikasi umum dari teknologi rantai blok meliputi penggunaan aset digital di rantai blok untuk mewakili mata uang khusus dan instrumen keuangan ("[koin berwarna](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)"), kepemilikan perangkat fisik dasar ("[properti pintar](https://en.bitcoin.it/wiki/Smart_Property)"), aset yang tidak dapat ditukarkan seperti nama domain ("[Namecoin](http://namecoin.org)"), serta aplikasi yang lebih kompleks melibatkan aset digital yang dikendalikan secara langsung oleh potongan kode yang menerapkan aturan sembarang ("[kontrak pintar](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)") atau bahkan "[organisasi otonom terdesentralisasi](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/)" (DAO) berbasis rantai blok. Apa yang ingin disediakan oleh Ethereum adalah sebuah rantai blok dengan bahasa pemrograman Turing-complete bawaan yang dapat digunakan untuk membuat "kontrak" yang dapat digunakan untuk mengkodekan fungsi transisi status yang berubah-ubah, yang memungkinkan pengguna untuk membuat sistem apa saja yang dijelaskan di atas, dan juga sistem-sistem lain yang belum pernah kita bayangkan sebelumnya, cukup dengan menuliskan logikanya dalam beberapa baris kode. + +## Pengantar pada Bitcoin dan Konsep yang Telah Ada {#introduction-to-bitcoin-and-existing-concepts} + +### Riwayat {#history} + +Konsep mata uang digital terdesentralisasi, serta aplikasi alternatif seperti pendaftaran properti, telah ada selama beberapa dekade. Protokol-protokol e-cash anonim pada tahun 1980-an dan 1990-an, sebagian besar bergantung pada kriptografi primitif yang dikenal sebagai Chaumian blinding, menyediakan mata uang dengan tingkat privasi yang tinggi, akan tetapi protokol-protokol ini sebagian besar gagal untuk mendapatkan daya tarik karena ketergantungannya pada perantara yang tersentralisasi. Pada tahun 1998, [b-money](http://www.weidai.com/bmoney.txt) dari Wei Dai menjadi proposal pertama yang memperkenalkan ide untuk menciptakan uang melalui pemecahan teka-teki komputasi dan juga konsensus yang terdesentralisasi, tetapi proposal ini tidak memberikan rincian tentang bagaimana konsensus yang terdesentralisasi dapat diimplementasikan. Pada tahun 2005, Hal Finney memperkenalkan konsep "[bukti kerja yang dapat digunakan kembali](https://nakamotoinstitute.org/finney/rpow/)", sebuah sistem yang menggabungkan ide dari b-money bersama dengan teka-teki Hashcash yang sulit secara komputasi dari Adam Back untuk menciptakan konsep mata uang kripto, tetapi sekali lagi tidak mencapai ideal dengan mengandalkan komputasi tepercaya sebagai sistem pendukung jaringan. Pada tahun 2009, mata uang terdesentralisasi untuk pertama kalinya diimplementasikan dalam praktik oleh Satoshi Nakamoto, menggabungkan primitif yang sudah mapan untuk mengelola kepemilikan melalui kriptografi kunci publik dengan algoritma konsensus untuk melacak siapa yang memiliki koin, yang dikenal sebagai "bukti kerja". + +Mekanisme di balik bukti kerja merupakan sebuah terobosan di bidang ini karena secara bersamaan memecahkan dua masalah. Pertama, ia menyediakan algoritma konsensus yang sederhana dan cukup efektif, yang memungkinkan simpul dalam jaringan untuk secara kolektif menyetujui satu set pembaruan kanonis untuk status buku besar Bitcoin. Kedua, ia menyediakan mekanisme untuk mengizinkan masuknya orang secara bebas ke dalam proses konsensus, memecahkan masalah politik dalam menentukan siapa yang dapat memengaruhi konsensus, dan pada saat yang sama mencegah serangan sybil. Hal ini dilakukan dengan mengganti penghalang formal untuk berpartisipasi, seperti persyaratan untuk terdaftar sebagai entitas unik dalam daftar tertentu, dengan penghalang ekonomi - bobot satu simpul dalam proses pemungutan suara konsensus berbanding lurus dengan daya komputasi yang dibawa oleh simpul tersebut. Sejak itu, pendekatan alternatif telah diusulkan yang disebut _bukti taruhan_, menghitung bobot suatu simpul sebagai proposional terhadap jumlah mata uang yang dipegangnya dan bukan sumber daya komputasi; diskusi tentang keunggulan relatif dari kedua pendekatan ini melebihi cakupan tulisan ini, tetapi perlu dicatat bahwa kedua pendekatan tersebut dapat digunakan sebagai tulang punggun suatu mata uang kripto. + +### Bitcoin Sebagai Sebuah Sistem Transisi State {#bitcoin-as-a-state-transition-system} + +![Transisi state Ethereum](./ethereum-state-transition.png) + +Dari sudut pandang teknis, buku besar mata uang kripto seperti Bitcoin dapat dianggap sebagai sebuah sistem transisi keadaan, di mana terdapat sebuah "keadaan" yang terdiri dari status kepemilikan semua bitcoin yang ada dan sebuah "fungsi transisi keadaan" yang mengambil sebuah keadaan dan sebuah transaksi dan mengeluarkan sebuah keadaan baru sebagai hasilnya. Dalam sistem perbankan standar, sebagai contoh, state adalah lembar saldo, transaksi adalah permintaan pemindahan $X dari A ke B, dan fungsi transisi state mengurangi nilai akun A sebesar $X dan menambah nilai di akun B sebesar $X. Jika akun A memiliki saldo kurang dari $X sejak awalnya, fungsi transisi state mengembalikan nilai eror. Dengan demikian, seseorang bisa mendefinisikan secara formal: + +``` +APPLY(S,TX) -> S' atau ERROR +``` + +Dalam sistem perbankan yang didefinisikan di atas: + +```js +APPLY({ Alice: $50, Bob: $50 },"kirim $20 dari Alice ke Bob") = { Alice: $30, Bob: $70 } +``` + +Tapi: + +```js +APPLY({ Alice: $50, Bob: $50 },"kirim $70 dari Alice ke Bob") = ERROR +``` + +"State" dalam Bitcoin adalah kumpulan semua koin (secara teknis, "luaran transaksi yang tidak terpakai" atau UTXO) yang telah dicetak dan belum dibelanjakan, dengan setiap UTXO memiliki denominasi dan pemilik (didefinisikan oleh alamat 20-bita yang pada dasarnya adalah kunci publik kriptografi[fn1](#notes)). Sebuah transaksi berisi satu atau lebih input, dengan setiap input berisi referensi ke UTXO yang sudah ada dan tanda tangan kriptografi yang dihasilkan oleh kunci pribadi yang terkait dengan alamat pemilik, dan satu atau lebih luaran, dengan setiap output berisi UTXO baru yang akan ditambahkan ke dalam state. + +The state transition function `APPLY(S,TX) -> S'` dapat didefinisikan secara kasar sebagai berikut: + +
      +
    1. + Untuk tiap input dalam TX: +
        +
      • + Jika UTXO yang dirujuk tidak ada dalam S, kembali dengan nilai eror. +
      • +
      • + Jika tanda tangan yang diberikan tidak sesuai dengan pemilik UTXO, kembalikan kesalahan. +
      • +
      +
    2. +
    3. + Jika jumlah denominasi semua UTXO input kurang dari jumlah denominasi semua UTXO output, kembalikan kesalahan. +
    4. +
    5. + Mengembalikan S dengan semua input UTXO dihapus dan semua output UTXO ditambahkan. +
    6. +
    + +Setengah bagian dari langkah pertama mencegah pengirim transaksi menggunakan koin yang tidak ada, setengah bagian lainnya dari langkah pertama mencegah pengirim transaksi memakai koin orang lain, dan langkah kedua melaksanakan nilai konservasi. Untuk memakai fungsi ini dalam pembayaran, protokolnya sebagai berikut. Anggaplah Alice mau mengirim 11,7 BTC ke Bob. Pertama-tama, Alice akan mencari sekumpulan UTXO tersedia yang dia miliki yang totalnya setidaknya mencapai 11,7 BTC. Secara realistis, Alice tidak akan bisa mendapatkan persis 11,7 BTC; anggaplah jumlah paling kecil yang bisa dia dapatkan adalah 6+4+2=12. Dia kemudian membuat transaksi dengan tiga input dan dua output tersebut. Output pertama akan berupa 11,7 BTC dengan alamat Bob sebagai pemiliknya, dan output kedua akan berupa "kembalian" 0,3 BTC yang tersisa, dengan pemilik adalah Alice sendiri. + +### Penambangan {#mining} + +![Blok Ethereum](./ethereum-blocks.png) + +Jika kita punya akses ke layanan terpusat yang terpercaya, sistem ini akan menjadi tidak penting untuk diimplementasikan; sistem ini bisa dengan mudah dikodekan sama persis seperti yang dideskripsikan, menggunakan hard drive server terpusat untuk melacak kondisi state. Namun, dengan Bitcoin kita mencoba membangun sistem mata uang terdesentralisasi, sehingga kita akan perlu menggabungkan sistem transisi state dengan sistem konsensus untuk memastikan setiap orang sepakat tentang urutan transaksi. Proses konsensus terdesentralisasi Bitcoin memerlukan node dalam jaringan agar terus menghasilkan paket transaksi yang disebut "blok". Jaringan dimaksudkan untuk menghasilkan kurang lebih satu blok setiap sepuluh menit, dengan setiap blok berisi stempel waktu, nonce, referensi ke (misalnya hash dari) blok sebelumnya, dan daftar semua transaksi yang telah terjadi sejak blok sebelumnya. Seiring waktu, ini menciptakan "blokchain" yang terus bertumbuh dan tak terhentikan yang terus diperbarui untuk menunjukkan state terkini dari buku besar Bitcoin. + +Algoritma untuk memeriksa apakah sebuah blok valid, yang diekspresikan dalam paradigma ini, adalah sebagai berikut: + +1. Periksa apakah blok sebelumnya yang direferensikan oleh blok tersebut ada dan valid. +2. Memeriksa apakah stempel waktu dari blok lebih besar dari stempel waktu blok sebelumnya[fn2](#notes) dan kurang dari 2 jam ke depan +3. Periksa apakah bukti kerja pada blok tersebut valid. +4. Biarkan `S[0]` menjadi state pada ujung blok sebelumnya. +5. Anggaplah `TX` adalah daftar transaksi blok dengan `n` transaksi. Untuk semua `i` dalam `0...n-1`, atur `S[i+1] = APPLY(S[i],TX[i])` Jika ada aplikasi yang mengembalikan galat, keluar dan kembalikan nilai false. +6. Mengembalikan nilai true, dan mendaftarkan `S[n]` sebagai keadaan pada akhir blok ini. + +Pada dasarnya, tiap transaksi dalam blok harus menyediakan transisi state valid dari apa yang menjadi state kanonis sebelum transaksi dijalankan menjadi beberapa state baru. Perhatikan bahwa state tersebut tidak dikodekan dalam blok dengan cara apa pun; murni adalah abstraksi untuk diingat oleh node yang memvalidasi dan hanya bisa (dengan aman) dikomputasi untuk blok mana pun dengan memulai dari state genesis dan secara berurutan menerapkan setiap transaksi dalam setiap blok. Sebagai tambahan, perhatikan bahwa urutan di mana penambang memasukkan transaksi ke dalam unsur blok; jika ada dua transaksi A dan B dalam satu blok sehingga B memakai UTXO yang dibuat A, maka blok tersebut akan valid jika A ada sebelum B tapi bukan sebaliknya. + +Kondisi validitas yang ada dalam daftar di atas yang tidak ditemukan dalam sistem lainnya adalah persyaratan untuk "bukti kerja". Kondisi persisnya adalah hash ganda SHA256 dari setiap blok, yang dianggap sebagai angka 256 bit, harus lebih kecil dari target yang disesuaikan secara dinamis, yang pada saat penulisan ini kira-kira 2187. Tujuannya adalah agar pembuatan blok "sulit" secara komputasi, sehingga mencegah penyerang sybil membuat ulang seluruh blokchain sesuai keinginan mereka. Karena SHA256 dirancang untuk menjadi fungsi acak semu yang benar-benar tidak dapat diprediksi, satu-satunya cara untuk membuat sebuah blok valid adalah hanya lewat coba-coba, yang secara berulang menambah nonce dan melihat apakah hash baru cocok. + +Pada target \~2187 saat ini, jaringan harus membuat rata-rata \~269 percobaan sebelum sebuah blok valid ditemukan; secara umum, target dikalibrasi ulang oleh jaringan setiap 2016 blok, sehingga rata-rata satu blok baru dihasilkan oleh beberapa node dalam jaringan setiap sepuluh menit. Untuk memberi kompensasi kepada penambang atas pekerjaan komputasional ini, penambang setiap blok berhak untuk memasukkan transaksi yang memberi mereka sendiri 25 BTC entah dari mana. Sebagai itu, jika transaksi memiliki denominasi total lebih tinggi dalam inputnya daripada outputnya, perbedaannya juga diberi ke penambang sebagai "biaya transaksi". Secara tidak sengaja, ini juga adalah satu-satunya mekanisme untuk menerbitkan BTC; state genesis tidak berisi koin sama sekali. + +Agar lebih memahami tujuan penambangan, mari kita memeriksa apa yang terjadi saat ada penyerang jahat. Karena kriptografi yang mendasari Bitcoin dikenal aman, penyerang akan menargetkan satu bagian dari sistem Bitcoin yang tidak terlindungi secara langsung oleh kriptografi: urutan transaksi. Strategi penyerang sederhana: + +1. Kirim 100 BTC ke pedagang untuk ditukar dengan suatu produk (lebih disukai barang digital dengan pengiriman cepat) +2. Menunggu pengiriman produk +3. Membuat transaksi lainnya yang mengirim 100 BTC yang sama ke dirinya sendiri +4. Cobalah untuk meyakinkan jaringan bahwa transaksinya dengan dirinya sendiri adalah transaksi yang didahulukan. + +Setelah langkah (1) dilakukan, setelah beberapa menit beberapa penambang akan memasukkan transaksi tersebut ke dalam sebuah blok, katakanlah nomor blok 270000. Setelah kira-kira satu jam, lima blok lainnya akan ditambahkan ke rantai setelah blok tersebut, dengan setiap blok secara tidak langsung menunjuk ke transaksi itu dan dengan demikian "mengonfirmasi" transaksi itu. Pada titik ini, pedagang akan menerima pembayaran seperti yang telah difinalisasi dan mengantar produk pesanan; karena kita menganggap ini adalah barang digital, pengantarannya bersifat instan. Sekarang, penyerang membuat transaksi lainnya yang mengirimkan 100 BTC ke dirinya sendiri. Jika penyerang hanya mengeluarkannya ke alam liar jaringan, transaksi tidak akan diproses; penambang akan menjalankan `APPLY(S,TX)` dan mengetahui bahwa `TX` memakai UTXO yang tidak ada lagi di state. Jadi sebagai gantinya, penyerang membuat sebuah "fork" blockchain, dimulai dengan menambang versi lain dari blok 270000 yang menunjuk ke blok 269999 yang sama sebagai induknya, tapi dengan transaksi baru menggantikan transaksi yang lama. Karena data blok berbeda, ini memerlukan pengerjaan ulang bukti kerja. Lagi pula, versi blok 270000 baru milik penyerang memiliki hash berbeda, sehingga blok 270001 hingga 270005 asli tidak "menunjuk" ke blok tersebut; jadi, rantai asli dan rantai baru penyerang benar-benar terpisah. Aturannya adalah dalam sebuah fork, blokchain terpanjang dianggap sebagai kebenaran, dan karenanya penambang sah akan bekerja di rantai 270005 sedangkan penyerang sendiri bekerja di rantai 270000. Agar penyerang dapat membuat blockchainnya menjadi yang terpanjang, dia perlu mendapatkan daya komputasional yang lebih banyak daripada jaringan lainnya yang digabungkan agar bisa menyusul (oleh karen aitu disebut, "serangan 51%"). + +### Pohon Merkle {#merkle-trees} + +![SPV dalam Bitcoin](./spv-bitcoin.png) + +_Kiri: dengan menampilkan sejumlah kecil node di pohon Merkle, cukup untuk memberi bukti validitas dari sebuah cabang._ + +_Kanan: usaha apa pun untuk mengubah salah satu bagian dari pohon Merkle pada akhirnya akan menyebabkan inkonsistensi di suatu tempat di rantai._ + +Fitur skalabilitas yang penting dari Bitcoin adalah blok disimpan dalam sebuah struktur data multilevel. "Hash" blok sebenarnya hanyalah hash dari header blok, sepotong data berukuran kira-kira 200 bita yang berisi stempel waktu, nonce, hash blok sebelumnya, dan hash akar dari struktur data yang disebut pohon Merkle yang menyimpan semua transaksi dalam blok. Pohon Merkle adalah jenis pohon binari, terdiri dari sekumpulan node dengan sejumlah besar node daun pada bagian bawah pohon yang berisi data yang mendasarinya, sekumpulan node menengah di mana setiap node adalah hash dari dua anaknya, dan akhinya node akar tunggal, juga terbentuk dari hash kedua anaknya, yang mewakili "bagian puncak" pohon. Tujuan pohon Merkle adalah untuk memungkinkan data di sebuah blok diantarkan setahap demi setahap: sebuah node bisa mengunduh hanya header sebuah blok dari satu sumber, bagian kecil pohon yang sesuai dengannya dari sumber lain, dan tetap yakin bahwa semua data benar. Alasan mengapa hal ini berhasil adalah hash menyebar ke atas: jika seorang pengguna jahat berusaha menukar satu transaksi palsu ke bagian bawah pohon Merkle, perubahan ini akan menyebabkan perubahan pada node di atas, kemudian perubahan pada node di atasnya, yang akhirnya mengubah akar pohon dan dengan demikian hash blok, yang menyebabkan protokol mendaftarkannya sebagai blok yang sama sekali berbeda (hampir pasti dengan sebuah bukti kerja tidak valid). + +Protokol pohon Merkle bisa dibilang penting untuk keberlangsungan jangka panjang. Satu "node penuh" dalam jaringan Bitcoin, node yang menyimpan dan memroses keseluruhan dari setiap blok, menghabiskan kira-kira 15 GB ruang disk dalam jaringan Bitcoin sejak April 2014, dan terus bertumbuh sebesar lebih dari satu gigabita per bulan. Saat ini, hal ini dapat dilakukan untuk beberapa komputer desktop dan bukan ponsel, dan nantinya di masa depan hanya perusahaan dan penghobi yang akan dapat berpartisipasi. Sebuah protokol yang dikenal sebagai "simplified payment verification" (SPV) memungkinkan kelas node lainnya ada, yang disebut "node ringan", yang mengunduh header blok, memverifikasi bukti kerja pada header blok, dan kemudian mengunduh hanya "cabang" yang terkait dengan transaksi yang relevan dengannya. Ini memungkinkan node ringan dengan jaminan keamanan kuat menentukan status transaksi Bitcoin, dan saldonya saat ini, sambil mengunduh hanya sebagian kecil dari keseluruhan blockchain. + +### Aplikasi Blockchain Alternatif {#alternative-blockchain-applications} + +Gagasan untuk mengambil ide blockchain yang mendasarinya dan menerapkannya pada konsep lain juga memiliki sejarah yang panjang. Pada tahun 2005, Nick Szabo mengeluarkan konsep "[mengamankan hak milik dengan otoritas pemilik](https://nakamotoinstitute.org/secure-property-titles/)", sebuah dokumen yang menjelaskan bagaimana "kemajuan baru dalam teknologi basis data yang direplikasi" akan memungkinkan sebuah sistem berbasis rantai blok untuk menyimpan registri tentang siapa yang memiliki tanah apa, menciptakan sebuah kerangka kerja yang rumit yang meliputi konsep-konsep seperti homesteading, kepemilikan yang tidak sesuai, dan pajak tanah Georgia. Namun sayangnya, tak ada sistem basis data efektif yang direplikasi yang tersedia saat itu, dan karenanya protokol ini tidak pernah diimplementasikan dalam prakteknya. Namun, setelah 2009, setelah konsensus terdesentralisasi Bitcoin dikembangkan, sejumlah aplikasi alternatif dengan cepat mulai bermunculan. + +- **Namecoin** - diciptakan pada tahun 2010, [Namecoin](https://namecoin.org/) dapat dijelaskan sebagai basis data registrasi nama terdesentralisasi. Dalam protokol terdesentralisasi seperti Tor, Bitcoin, dan BitMessage, perlu ada cara untuk mengidentifikasi akun sehingga orang lain dapat berinteraksi dengan mereka, tetapi dalam semua solusi yang ada, jenis pengenal yang tersedia hanya berupa hash semuacak seperti `1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWy`. Idealnya, seseorang ingin memiliki akun dengan nama seperti "george". Namun, masalahnya adalah jika satu orang dapat membuat akun bernama "george" maka orang lain dapat menggunakan proses yang sama untuk mendaftarkan "george" untuk diri mereka sendiri dan menyamar sebagai mereka. Satu-satunya solusi adalah paradigma yang mendaftar pertama, di mana pendaftar pertama berhasil dan yang kedua gagal - masalah yang sangat cocok untuk protokol konsensus Bitcoin. Namecoin adalah implementasi tertua, dan paling sukses, dari sistem registrasi nama yang menggunakan ide tersebut. +- **Koin Berwarna** - tujuan dari [koin berwarna](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit) adalah menjadi sebuah protokol yang memungkinkan orang untuk membuat mata uang digital mereka sendiri - atau, dalam kasus sederhana penting dari mata uang dengan satu unit, token digital, di rantai blok Bitcoin. Dalam protokol koin berwarna, seseorang "menerbitkan" mata uang baru dengan memberikan warna pada UTXO Bitcoin tertentu, dan protokol ini secara rekursif mendefinisikan warna UTXO lainnya agar sama dengan warna input yang dihabiskan oleh transaksi yang membuatnya (beberapa aturan khusus berlaku untuk input warna campuran). Hal ini memungkinkan pengguna untuk menyimpan dompet yang hanya berisi UTXO dengan warna tertentu dan mengirimkannya seperti bitcoin biasa, menelusuri rantai blok untuk menentukan warna UTXO yang mereka terima. +- **Metakoin** - gagasan di balik metakoin adalah memiliki protokol yang berjalan di atas Bitcoin, menggunakan transaksi Bitcoin untuk menyimpan transaksi metakoin tetapi memiliki fungsi transisi keadaan yang berbeda, `APPLY'`. Karena protokol metakoin tidak dapat mencegah transaksi metakoin yang tidak valid muncul di rantai blok Bitcoin, sebuah aturan ditambahkan bahwa jika `APPLY'(S,TX)` mengembalikan galat, maka protokol akan menggunakan nilai `APPLY'(S,TX) = S` sebagai bawaan. Hal ini memberikan sebuah mekanisme yang mudah untuk membuat sebuah protokol mata uang kripto, yang berpotensi memiliki fitur-fitur canggih yang tidak dapat diimplementasikan di dalam Bitcoin itu sendiri, tetapi dengan biaya pengembangan yang sangat rendah karena kerumitan dalam menambang dan jaringan sudah ditangani oleh protokol Bitcoin. Metacoin telah digunakan untuk mengimplementasikan beberapa kelas kontrak keuangan, registrasi nama, dan pertukaran yang terdesentralisasi. + +Oleh karena itu, secara umum, ada dua pendekatan terhadap pembangunan protokol konsensus: membangun jaringan independen, dan membangun protokol di atas Bitcoin. Pendekatan pertama, sekalipun cukup berhasil dalam kasus penggunaannya seperti Namecoin, sulit diimplementasikan; setiap implementasi individual harus melakukan bootstrap pada blockchain independen, serta membangun dan menguji semua transisi state dan kode jaringan yang diperlukan. Sebagai tambahan, kami memperkirakan bahwa serangkaian aplikasi untuk teknologi konsensus terdesentralisasi akan mengikuti distribusi hukum daya di mana sebagian besar aplikasi akan menjadi terlalu kecil untuk menjamin blockchainnya sendiri, dan kami mencatat bahwa ada kelas aplikasi terdesentralisasi yang besar, khususnya organisasi otonom terdesentralisasi, yang memerlukan interaksi satu sama lain. + +Pendekatan berbasis Bitcoin, di sisi lainnya, memiliki kelemahan karena tidak mewarisi fitur verifikasi pembayaran yang disederhanakan dari Bitcoin. SPV berfungsi untuk Bitcoin karena bisa menggunakan kedalaman blockchain sebagai proksi untuk validitas; pada beberapa titik, setelah perintis transaksi mundur cukup jauh, aman untuk dikatakan bahwa ini resmi bagian dari state. Protokol meta berbasis blockchain, di sisi lainnya, tidak bisa memaksa blockchain untuk tidak memasukkan transaksi yang tidak valid dalam konteks protokolnya sendiri. Oleh karena itu, implementasi protokol meta SPV yang benar-benar aman perlu memindai ke belakang ke titik awal blockchain Bitcoin untuk menentukan apakah transaksi tertentu valid atau tidak valid. Saat ini, semua implementasi "ringan" dari protokol meta berbasis Bitcoin mengandalkan server terpercaya untuk menyediakan datanya, yang bisa dibilang hasilnya sangat kurang optimal, khususnya karena salah satu tujuan utama mata uang kripto adalah menghilangkan kebutuhan akan kepercayaan. + +### Pembuatan skrip {#scripting} + +Bahkan tanpa ekstensi apa pun, protokol Bitcoin sebenarnya mendukung versi kecil dari konsep "kontrak pintar". UTXO dalam Bitcoin bisa dimiliki tidak hanya melalui kunci publik, tetapi juga melalui skrip yang lebih rumit yang diekspresikan dalam bahasa pemrograman berbasis tumpukan sederhana. Dalam paradigma ini, sebuah pengeluaran transaksi yang datanya memenuhi skrip harus disediakan oleh UTXO. Betul, bahkan mekanisme kepemilikan kunci publik dasar diimplementasikan lewat sebuah skrip: skrip mengambil tanda tangan kurva eliptik sebagai input, memverifikasinya terhadap transaksi dan alamat yang memiliki UTXO, dan kembali dengan nilai 1 jika verifikasi berhasil dan 0 jika tidak berhasil. Lainnya, yang lebih rumit, skrip ada untuk beragam kasus penggunaan lainnya. Contohnya, seseorang bisa menyusun skrip yang memerlukan dua tanda tangan dari tiga kunci privat yang tersedia untuk mengesahkan ("multisig"), sebuah pengaturan yang berguna untuk akun perusahaan, akun tabungan yang aman, dan beberapa situasi escrow pedagang. Skrip bisa juga digunakan untuk membayar hadiah atas solusi masalah komputasional, dan seseorang bahkan bisa menyusun skrip yang berisi sesuatu seperti ini "UTXO Bitcoin ini adalah milik Anda jika Anda bisa memberikan bukti SPV bahwa Anda mengirimkan transaksi Dogecoin dalam denominasi ini kepada saya", yang pada dasarnya memungkinkan bursa lintas mata uang kripto terdesentralisasi. + +Namun, bahasa skrip seperti yang diimplementasikan dalam Bitcoin punya beberapa batasan penting: + +- **Ketidaklengkapannya-Turing** - artinya, meskipun ada subset besar komputasi yang didukung oleh bahasa pemrograman skrip Bitcoin, namun tidak mendukung segalanya. Kategori utama yang tidak ada yaitu, loop. Hal ini dilakukan untuk menghindari perulangan tak terbatas selama verifikasi transaksi; secara teoritis hal ini merupakan hambatan yang dapat diatasi oleh para pemrogram skrip, karena setiap perulangan dapat disimulasikan hanya dengan mengulangi kode yang mendasarinya berkali-kali dengan pernyataan if, tetapi hal ini menghasilkan skrip yang sangat boros tempat. Sebagai contoh, mengimplementasikan algoritma tanda tangan kurva elips alternatif kemungkinan akan membutuhkan 256 putaran perkalian berulang yang semuanya disertakan secara individual dalam kode. +- **Value-blindness** - tidak ada cara bagi sebuah skrip UTXO untuk memberikan kontrol yang sangat detail terhadap jumlah yang dapat ditarik. Sebagai contoh, salah satu kasus penggunaan yang kuat dari kontrak oracle adalah kontrak lindung nilai, di mana A dan B memasukkan BTC senilai $1000 dan setelah 30 hari, skrip mengirimkan BTC senilai $1000 kepada A dan sisanya kepada B. Hal ini akan membutuhkan oracle untuk menentukan nilai 1 BTC dalam USD, tetapi meskipun demikian, ini merupakan peningkatan yang sangat besar dalam hal kepercayaan dan kebutuhan infrastruktur daripada solusi yang sepenuhnya tersentralisasi yang tersedia saat ini. Namun, karena UTXO berpirinsip semuanya atau tidak sama sekali, satu-satunya cara untuk mencapainya adalah melalui peretasan yang sangat tidak efisien yaitu memiliki banyak UTXO dengan denominasi beragam (misalnya, satu UTXO terdiri dari 2k untuk setiap k hingga 30) dan memerintahkan oracle memilih UTXO mana yang harus dikirimkan ke A dan mana yang ke B. +- **Ketidakadaan Keadaan** - UTXO dapat digunakan atau tidak digunakan; tidak ada peluang untuk kontrak atau skrip multi-tahap yang mempertahankan keadaan internal lainnya selain itu. Hal ini menyulitkan untuk membuat kontrak opsi multi-tahap, penawaran pertukaran terdesentralisasi, atau protokol komitmen kriptografi dua tahap (yang diperlukan untuk hadiah komputasi yang aman). Ini juga berarti bahwa UTXO hanya dapat digunakan untuk membangun kontrak yang sederhana dan sekali pakai dan bukan kontrak "stateful" yang lebih kompleks seperti organisasi yang terdesentralisasi, dan membuat meta-protokol sulit untuk diimplementasikan. Keadaan biner yang dikombinasikan dengan value-blindness juga berarti bahwa aplikasi penting lainnya, batas penarikan, tidak mungkin dilakukan. +- **Ketidakpedulian terhadap rantai blok** - UTXO tidak memiliki informasi tentang data rantai blok seperti nonce, stempel waktu, dan hash blok sebelumnya. Hal ini sangat membatasi aplikasi dalam perjudian, dan beberapa kategori lainnya, dengan menghilangkan bahasa skrip dari sumber keacakan yang berpotensi berharga. + +Dengan demikian, kita melihat tiga pendekatan untuk membangun aplikasi tingkat lanjutan di atas mata uang kripto: membangun blockchain baru, menggunakan bahasa skrip di atas Bitcoin, dan membangun protokol meta di atas Bitcoin. Membangun blockchain baru memungkinkan kebebasan yang tak terbatas dalam membangun serangkaian fitur, tetapi mengorbankan waktu pengembangan, usaha bootstrapping, dan keamanan. Penggunaan bahasa skrip mudah diimplementasikan dan memiliki standar, tetapi sangat terbatas dalam kemampuannya, dan protokol meta, meskipun mudah, terdapat kesalahan dalam aspek skalabilitas. Dengan Ethereum, kami bermaksud membangun sebuah kerangka kerja alternatif yang menyediakan hasil yang jauh lebih besar dalam kemudahan pengembangan, maupun properti klien ringan yang bahkan lebih kuat, sementara secara bersamaan memungkinkan aplikasi untuk berbagi lingkungan ekonomi dan keamanan blokchain. + +## Ethereum {#ethereum} + +Tujuan dari Ethereum adalah menciptakan sebuah protokol alternatif untuk membangun aplikasi terdesentralisasi, yang menyediakan beragam rangkaian tradeoff yang kami yakini akan sangat berguna untuk kelas besar aplikasi terdesentralisasi, dengan penekanan tertentu pada situasi di mana waktu pengembangan cepat, keamanan untuk aplikasi kecil dan yang jarang digunakan, dan kemampuan aplikasi berbeda untuk berinteraksi dengan sangat efisien, menjadi penting. Ethereum melakukan ini dengan membangun apa yang pada dasarnya merupakan lapisan dasar abstrak utama: sebuah blockchain dengan bahasa pemrograman bawaan yang lengkap secara Turing, yang memungkinkan siapa pun untuk menulis kontrak pintar dan aplikasi terdesentralisasi, di mana mereka bisa membuat aturan arbitrari sendiri atas kepemilikan, format transaksi, dan fungsi transisi state. Versi sederhana Namecoin bisa ditulis dalam dua baris kode, dan protokol lainnya seperti mata uang dan sistem reputasi bisa disusun dengan jumlah baris kode di bawah dua puluh. Kontrak pintar, "kotak" kriptografik yang berisi nilai dan hanya terbuka jika kondisi tertentu dipenuhi, bisa juga di bangun di atas platformnya, dengan daya yang jauh lebih banyak dari yang ditawarkan oleh skrip Bitcoin, karena adanya daya tambahan dari kelengkapan Turing, kesadaran nilai, kesadaran dan state blokchain. + +### Akun Ethereum {#ethereum-accounts} + +Dalam Ethereum, state terdiri dari objek-objek yang disebut "akun", dengan setiap akun memiliki alamat 20-bita dan transisi state adalah transfer langsung nilai dan informasi antar akun. Sebuah akun Ethereum berisi empat bidang: + +- **Nonce**, sebuah penghitung yang digunakan untuk memastikan setiap transaksi hanya dapat diproses sekali +- **Saldo ether** akun saat ini +- **Kode kontrak** akun, jika ada +- **Penyimpanan** akun (kosong secara default) + +"Ether" adalah bahan bakar kripto internal utama Ethereum, dan digunakan untuk membayar biaya transaksi. Secara umum, ada dua jenis akun: **akun yang dimiliki secara eksternal**, yang dikontrol oleh kunci pribadi, dan **akun kontrak**, yang dikontrol oleh kode kontrak mereka. Akun yang dimiliki secara eksternal tidak memiliki kode, dan seseorang dapat mengirim pesan dari akun yang dimiliki secara eksternal dengan membuat dan menandatangani transaksi; dalam akun kontrak, setiap kali akun kontrak menerima pesan, kodenya akan diaktifkan, sehingga memungkinkannya untuk membaca dan menulis ke penyimpanan internal dan mengirim pesan lain atau membuat kontrak secara bergantian. + +Perhatikan bahwa "kontrak" dalam Ethereum tidak boleh dilihat sebagai sesuatu yang harus "dipenuhi" atau "dipatuhi"; namun, kontrak tersebut lebih seperti "agen otonom" yang berada di dalam lingkungan eksekusi Ethereum, yang selalu mengeksekusi bagian kode tertentu ketika "ditodong" oleh sebuah pesan atau transaksi, dan memiliki kontrol langsung terhadap saldo ether mereka sendiri dan penyimpan kunci/nilai mereka sendiri untuk melacak variabel yang tetap. + +### Pesan dan Transaksi {#messages-and-transactions} + +Istilah "transaksi" digunakan dalam Ethereum untuk merujuk pada paket data yang ditandatangani yang menyimpan pesan yang akan dikirim dari akun yang dimiliki secara eksternal. Transaksi berisi: + +- Penerima pesan +- Tanda tangan yang mengidentifikasi pengirim +- Jumlah ether yang akan ditransfer dari pengirim ke penerima +- Sebuah field data opsional +- Nilai `STARTGAS`, yang mewakili jumlah langkah komputasi maksimum yang diperbolehkan dalam eksekusi transaksi +- Nilai `GASPRICE`, yang mewakili biaya yang dibayarkan oleh pengirim per langkah komputasi + +Ketiga bagian pertama adalah field standar yang diharapkan ada di mata uang kripto mana pun. Bidang data tidak memiliki fungsi secara default, tetapi mesin virtual memiliki opcode yang digunakan kontrak untuk mengakses data; sebagai contoh kasus penggunaan, jika sebuah kontrak berfungsi sebagai layanan registrasi domain on-rantai blok, maka kontrak tersebut dapat menginterpretasikan data yang diteruskan kepadanya sebagai berisi dua "bidang", bidang pertama adalah domain yang akan didaftarkan dan bidang kedua adalah alamat IP yang akan didaftarkan. Kontrak akan membaca nilai-nilai ini dari data pesan dan menempatkannya dengan tepat dalam penyimpanan. + +Bidang `STARTGAS` dan `GASPRICE` sangat penting untuk model anti-penolakan layanan Ethereum. Untuk mencegah perulangan tak terbatas yang agresif atau tak disengaja, atau pemborosan dalam kode komputasional lainnya, setiap transaksi diharuskan untuk menentukan batasan seberapa banyak langkah eksekusi kode komputasional yang bisa digunakan. Unit dasar komputasi adalah "gas"; biasanya, satu langkah komputasi memerlukan biaya 1 gas, tetapi beberapa operasi memerlukan biaya yang lebih tinggi karena lebih mahal secara komputasi, atau meningkatkan jumlah data yang harus disimpan sebagai bagian dari state. Ada juga biaya 5 gas untuk tiap bita dalam data transaksi. Maksud dari sistem biaya adalah untuk mengharuskan penyerang membayar secara proporsional untuk setiap sumber daya yang mereka konsumsi, termasuk komputasi, bandwidth, dan penyimpanan; oleh karena itu, setiap transaksi yang menyebabkan jaringan mengkonsumsi sumber daya yang lebih besar dari sumber daya tersebut harus memiliki biaya gas yang secara kasar sebanding dengan peningkatan tersebut. + +### Pesan {#messages} + +Kontrak memiliki kemampuan untuk mengirim "pesan" ke kontrak lain. Pesan adalah objek virtual yang tidak pernah diserialisasikan dan hanya ada di lingkungan eksekusi Ethereum. Satu pesan berisi: + +- Pengirim message (tersirat) +- Penerima message +- Jumlah ether yang ditransfer bersamaan dengan pesan +- Sebuah field data opsional +- Sebuah nilai `STARTGAS` + +Pada dasarnya, sebuah pesan seperti sebuah transaksi, kecuali bahwa pesan tersebut dihasilkan oleh sebuah kontrak dan bukan oleh aktor eksternal. Sebuah pesan dihasilkan ketika sebuah kontrak yang sedang menjalankan kode menjalankan opcode `CALL`, yang menghasilkan dan menjalankan sebuah pesan. Seperti sebuah transaksi, sebuah pesan mengarah ke akun penerima yang menjalankan kodenya. Dengan demikian, kontrak dapat memiliki hubungan dengan kontrak lain dengan cara yang persis sama seperti yang dilakukan oleh aktor eksternal. + +Perhatikan bahwa jatah gas yang ditetapkan oleh suatu transaksi atau kontrak berlaku untuk total gas yang dikonsumsi oleh transaksi tersebut dan semua sub-eksekusi. Sebagai contoh, jika aktor eksternal A mengirim transaksi ke B dengan 1000 gas, dan B mengkonsumsi 600 gas sebelum mengirim pesan ke C, dan eksekusi internal C mengonsumsi 300 gas sebelum kembali, maka B dapat menghabiskan 100 gas lagi sebelum kehabisan gas. + +### Fungsi Transisi State Ethereum {#ethereum-state-transition-function} + +![Transisi state Ether](./ether-state-transition.png) + +Fungsi transisi state Ethereum, `APPLY(S,TX) -> S'` dapat didefinisikan sebagai berikut: + +1. Periksa apakah transaksi terbentuk dengan baik (yaitu memiliki jumlah nilai yang tepat), tanda tangan valid, dan nonce cocok dengan nonce yang ada di akun pengirim. Jika tidak, kembali dengan nilai eror. +2. Menghitung biaya transaksi sebagai `STARTGAS * GASPRICE`, dan menentukan alamat pengirim dari tanda tangan. Kurangi biaya dari saldo akun pengirim dan tambahkan nonce pengirim. Jika saldo pemakaian tidak cukup, kembali dengan nilai eror. +3. Menginisialisasi `GAS = STARTGAS`, dan mengurangi sejumlah gas tertentu per bita untuk membayar bita dalam transaksi. +4. Mentransfer nilai transaksi dari akun pengirim ke akun penerima. Jika akun penerima belum ada, buatlah akun tersebut. Jika akun penerima adalah sebuah kontrak, jalankan kode kontrak hingga selesai atau hingga eksekusi kehabisan gas. +5. Jika transfer nilai gagal karena pengirim tidak memiliki cukup uang, atau eksekusi kode kehabisan gas, kembalikan semua perubahan status kecuali pembayaran biaya, dan tambahkan biaya ke akun penambang. +6. Jika tidak, kembalikan biaya untuk semua gas yang tersisa kepada pengirim, dan kirimkan biaya yang telah dibayarkan untuk gas yang dikonsumsi kepada penambang. + +Sebagai contoh, anggaplah kode kontrak adalah: + +```py +if !self.storage[calldataload(0)]: + self.storage[calldataload(0)] = calldataload(32) +``` + +Perhatikan bahwa pada kenyataannya kode kontrak ditulis dalam kode EVM tingkat rendah; contoh ini ditulis dalam Serpent, salah satu bahasa tingkat tinggi kami, untuk kejelasan, dan dapat dikompilasi ke kode EVM. Misalkan penyimpanan kontrak dimulai dengan kosong, dan sebuah transaksi dikirim dengan nilai 10 ether, 2000 gas, 0,001 harga gas ether, dan 64 bita data, dengan bita 0-31 mewakili angka `2` dan bita 32-63 mewakili string `CHARLIE`. Proses untuk fungsi transisi status dalam kasus ini adalah sebagai berikut: + +1. Periksa apakah transaksi sudah valid dan terbentuk dengan baik. +2. Pastikan pengirim transaksi memiliki setidaknya 2000 \* 0,001 = 2 ether. Jika demikian, maka kurangi 2 ether dari akun pengirim. +3. Inisialisasi gas = 2000; dengan asumsi transaksi sepanjang 170 bita dan biaya bita adalah 5, kurangi 850 sehingga tersisa 1,150 gas. +4. Kurangi 10 ether lagi dari akun pengirim, dan tambahkan ke akun kontrak. +5. Jalankan kode. Dalam kasus ini, ini sederhana: sistem memeriksa apakah penyimpanan kontrak pada indeks `2` digunakan, perhatikan bahwa itu tidak digunakan, dan kemudian ia menetapkan penyimpanan pada indeks `2` ke nilai `CHARLIE`. Misalkan ini membutuhkan 187 gas, jadi jumlah gas yang tersisa adalah 1150 - 187 = 963 +6. Tambahkan 963 \* 0,001 = 0,963 ether kembali ke akun pengirim, dan kembalikan status yang dihasilkan. + +Jika tidak ada kontrak di ujung penerima transaksi, maka total biaya transaksi akan sama dengan `GASPRICE` yang disediakan dikalikan dengan panjang transaksi dalam bita, dan data yang dikirim bersama transaksi tidak relevan. + +Perhatikan bahwa pesan bekerja sama dengan transaksi dalam hal pengembalian: jika eksekusi pesan kehabisan gas, maka eksekusi pesan tersebut, dan semua eksekusi lain yang dipicu oleh eksekusi tersebut, akan dikembalikan, tetapi eksekusi induk tidak perlu dikembalikan. Ini berarti bahwa "aman" bagi sebuah kontrak untuk memanggil kontrak lain, karena jika A memanggil B dengan gas G maka eksekusi A dijamin kehilangan paling banyak gas G. Akhirnya, perlu dicatat bahwa ada opcode `CREATE` yang membuat kontrak; mekanika eksekusinya umumnya serupa dengan opcode `CALL`, dengan pengecualian bahwa hasil eksekusi menentukan kode dari kontrak yang baru saja dibuat. + +### Eksekusi Kode {#code-execution} + +Kode dalam kontrak Ethereum ditulis dalam bahasa kode bita tingkat rendah berbasis stack, yang disebut sebagai "kode mesin virtual Ethereum" atau "kode EVM". Kode terdiri dari serangkaian bita, di mana setiap bita mewakili sebuah operasi. Secara umum, eksekusi kode adalah sebuah perulangan tak terbatas yang terdiri dari melakukan operasi pada counter program saat ini (yang dimulai dari nol) secara berulang, dan kemudian menambahkan counter program sebanyak satu, sampai akhir kode tercapai atau kesalahan atau instruksi `STOP` atau `RETURN` terdeteksi. Operasi memiliki akses ke tiga jenis ruang untuk menyimpan data: + +- **Stack**, sebuah wadah terakhir-masuk-pertama-keluar di mana nilai-nilai dapat dimasukkan dan diambil +- **Memori**, sebuah array bita yang dapat diperluas secara tak terbatas +- **Penyimpanan** jangka panjang kontrak, sebuah penyimpanan kunci/nilai. Tidak seperti stack dan memori, yang diatur ulang setelah komputasi berakhir, penyimpanan tetap bertahan untuk jangka panjang. + +Kode ini juga dapat mengakses nilai, pengirim dan data dari pesan yang masuk, serta data header blok, dan kode ini juga dapat mengembalikan array bita data sebagai luaran. + +Model eksekusi formal kode EVM sangat sederhana. Ketika mesin virtual Ethereum sedang berjalan, keadaan komputasinya dapat didefinisikan oleh tupel `(block_state, transaction, message, code, memory, stack, pc, gas)`, di mana `block_state` adalah keadaan global yang berisi semua akun dan mencakup saldo dan penyimpanan. Pada awal setiap putaran eksekusi, instruksi saat ini ditemukan dengan mengambil bita ke-`pc` dari `code` (atau 0 jika `pc >= len(code)`), dan setiap instruksi memiliki definisinya sendiri dalam hal bagaimana instruksi tersebut memengaruhi tupel tersebut. Sebagai contoh, `ADD` memunculkan dua item dari stack dan mendorong jumlahnya, mengurangi `gas` sebesar 1 dan menambahkan `pc` sebesar 1, dan `SSTORE` memunculkan dua item teratas dari stack dan memasukkan item kedua ke dalam penyimpanan kontrak pada indeks yang ditentukan oleh item pertama. Meskipun ada banyak cara untuk mengoptimalkan eksekusi mesin virtual Ethereum melalui kompilasi tepat waktu, implementasi dasar Ethereum dapat dilakukan dalam beberapa ratus baris kode. + +### Rantai blok dan Menambang {#blockchain-and-mining} + +![Menerapkan diagram blok Ethereum](./ethereum-apply-block-diagram.png) + +Rantai blok Ethereum dalam banyak hal serupa dengan rantai blok Bitcoin, meskipun ada beberapa perbedaan. Perbedaan utama antara Ethereum dan Bitcoin dalam hal arsitektur rantai blok adalah, tidak seperti Bitcoin, blok Ethereum berisi salinan daftar transaksi dan status terbaru. Selain itu, dua nilai lainnya, nomor blok dan tingkat kesulitan, juga disimpan di dalam blok. Algoritma validasi blok dasar di Ethereum adalah sebagai berikut: + +1. Periksa apakah blok yang dirujuk sebelumnya ada dan valid. +2. Periksa apakah stempel waktu blok lebih besar dari stempel waktu blok sebelumnya yang direferensikan dan kurang dari 15 menit ke depan +3. Periksa apakah nomor blok, tingkat kesulitan, akar transaksi, akar uncle, dan batas gas (berbagai konsep khusus Ethereum tingkat rendah) sudah valid. +4. Periksa apakah bukti kerja pada blok tersebut valid. +5. Biarkan `S[0]` menjadi state pada ujung blok sebelumnya. +6. Biarkan `TX` menjadi daftar transaksi blok, dengan `n` transaksi. Untuk semua `i` dalam `0...n-1`, atur `S[i+1] = APPLY(S[i],TX[i])`. Jika ada aplikasi yang mengembalikan galat, atau jika total gas yang dikonsumsi dalam blok sampai saat ini melebihi `GASLIMIT`, maka kembalikan galat. +7. Biarkan `S_FINAL` menjadi `S[n]`, tetapi tambahkan imbalan blok yang dibayarkan kepada penambang. +8. Periksa apakah akar pohon Merkle dari state `S_FINAL` sama dengan akar state akhir yang disediakan dalam header blok. Jika ya, blokir tersebut valid; jika tidak, blokir tersebut tidak valid. + +Pendekatan ini mungkin terlihat sangat tidak efisien pada pandangan pertama, karena harus menyimpan seluruh state pada setiap blok, tetapi pada kenyataannya efisiensi harus sebanding dengan Bitcoin. Alasannya adalah karena state disimpan dalam struktur pohon, dan setelah setiap blok hanya sebagian kecil dari pohon yang perlu diubah. Dengan demikian, secara umum, antara dua blok yang berdekatan, sebagian besar pohon harus sama, dan oleh karena itu data dapat disimpan satu kali dan direferensikan dua kali menggunakan pointer (misalnya, hash dari sub-pohon). Jenis pohon khusus yang dikenal sebagai "pohon Patricia" digunakan untuk mencapai hal ini, termasuk modifikasi pada konsep pohon Merkle yang memungkinkan simpul-simpul disisipkan dan dihapus, dan tidak hanya diubah, secara efisien. Selain itu, karena semua informasi status merupakan bagian dari blok terakhir, maka tidak perlu menyimpan seluruh riwayat rantai blok - sebuah strategi yang, jika dapat diterapkan pada Bitcoin, dapat dihitung untuk memberikan penghematan ruang sebesar 5-20x lipat. + +Pertanyaan yang sering ditanyakan adalah "di mana" kode kontrak dieksekusi, dalam hal perangkat keras fisik. Ini memiliki jawaban sederhana: proses eksekusi kode kontrak adalah bagian dari definisi fungsi transisi keadaan, yang merupakan bagian dari algoritma validasi blok, sehingga jika suatu transaksi ditambahkan ke dalam blok `B`, eksekusi kode yang dipicu oleh transaksi tersebut akan dieksekusi oleh semua node, sekarang dan di masa depan, yang mengunduh dan memvalidasi blok `B`. + +## Aplikasi {#applications} + +Secara umum, ada tiga jenis aplikasi di atas Ethereum. Kategori pertama adalah aplikasi finansial, memberikan kekuatan kepada pengguna cara yang lebih untuk mengelola dan masuk dalam kontrak menggunakan uang mereka. Ini termasuk sub-mata uang, derivatif keuangan, kontrak lindung nilai, dompet tabungan, surat wasiat, dan pada akhirnya bahkan beberapa kelas kontrak kerja skala penuh. Kategori kedua adalah aplikasi semi-keuangan, di mana uang terlibat tetapi ada juga sisi non-moneter yang besar dari apa yang sedang dilakukan; contoh yang sempurna adalah hadiah yang menegakkan sendiri untuk solusi masalah komputasi. Terakhir, ada aplikasi seperti pemungutan suara daring dan tata kelola terdesentralisasi yang sama sekali tidak bersifat finansial. + +### Sistem Token {#token-systems} + +Sistem token pada rantai blok memiliki banyak aplikasi mulai dari sub-mata uang yang mewakili aset seperti USD atau emas hingga saham perusahaan, token individu yang mewakili properti pintar, kupon yang tidak dapat dipalsukan aman, dan bahkan sistem token yang tidak memiliki hubungan dengan nilai konvensional sama sekali, yang digunakan sebagai sistem poin untuk insentif. Sistem token sangat mudah diimplementasikan di Ethereum. Poin penting yang harus dipahami adalah bahwa semua mata uang, atau sistem token, pada dasarnya adalah sebuah database dengan satu operasi: kurangi X unit dari A dan berikan X unit ke B, dengan ketentuan bahwa (i) A memiliki setidaknya X unit sebelum transaksi dan (2) transaksi tersebut disetujui oleh A. Yang diperlukan untuk mengimplementasikan sistem token adalah mengimplementasikan logika ini ke dalam sebuah kontrak. + +Kode dasar untuk mengimplementasikan sistem token di Serpent terlihat sebagai berikut: + +```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 +``` + +Ini pada dasarnya adalah implementasi harfiah dari fungsi transisi negara "sistem perbankan" yang dijelaskan lebih lanjut di atas dalam dokumen ini. Beberapa baris kode tambahan perlu ditambahkan untuk menyediakan langkah awal pendistribusian unit mata uang di tempat pertama dan beberapa kasus tepi lainnya, dan idealnya sebuah fungsi akan ditambahkan untuk memungkinkan kontrak lain meminta saldo suatu alamat. Tapi hanya itu saja yang ada untuk itu. Secara teoritis, sistem token berbasis Ethereum yang bertindak sebagai sub-mata uang dapat berpotensi menyertakan fitur penting lainnya yang tidak dimiliki oleh mata uang meta-rantai blok berbasis Bitcoin di dalam rantai: kemampuan untuk membayar biaya transaksi secara langsung dalam mata uang tersebut. Cara penerapannya adalah kontrak akan mempertahankan saldo ether yang akan digunakan untuk mengembalikan ether yang digunakan untuk membayar biaya kepada pengirim, dan akan mengisi saldo ini dengan mengumpulkan unit mata uang internal yang dibutuhkan untuk membayar biaya dan menjualnya kembali dalam lelang yang sedang berjalan. Oleh karena itu, pengguna perlu "mengaktifkan" akun mereka dengan ether, tetapi begitu ether ada di sana, akun tersebut akan dapat digunakan kembali karena kontrak akan mengembalikannya setiap saat. + +### Turunan finansial dan Mata Uang Bernilai Stabil {#financial-derivatives-and-stable-value-currencies} + +Derivatif keuangan adalah aplikasi yang paling umum dari "kontrak pintar", dan salah satu yang paling mudah diimplementasikan dalam kode. Tantangan utama dalam mengimplementasikan kontrak keuangan adalah bahwa sebagian besar dari mereka memerlukan referensi ke telegrap harga eksternal; misalnya, aplikasi yang sangat diinginkan adalah kontrak pintar yang melakukan lindung nilai terhadap volatilitas ether (atau mata uang kripto lainnya) sehubungan dengan dolar AS, tetapi untuk melakukan hal ini, kontrak harus mengetahui berapa nilai ETH/USD. Cara paling sederhana untuk melakukan hal ini adalah melalui kontrak "feed data" yang dikelola oleh pihak tertentu (mis. NASDAQ) yang dirancang agar pihak tersebut dapat memperbarui kontrak sesuai kebutuhan, dan menyediakan antarmuka yang memungkinkan kontrak lain untuk mengirim pesan ke kontrak tersebut dan mendapatkan balasan berupa harga. + +Dengan adanya unsur penting tersebut, kontrak lindung nilai akan terlihat sebagai berikut: + +1. Tunggu pihak A memasukkan 1000 ether. +2. Tunggu pihak B memasukkan 1000 ether. +3. Catat nilai USD dari 1000 ether, yang dihitung dengan menanyakan kontrak umpan data, dalam penyimpanan, katakanlah ini adalah $x. +4. Setelah 30 hari, izinkan A atau B untuk "mengaktifkan kembali" kontrak untuk mengirim ether senilai $x (dihitung dengan meminta kontrak umpan data lagi untuk mendapatkan harga baru) ke A dan sisanya ke B. + +Kontrak demikian akan memiliki potensi signifikan dalam perdagangan kripto. Salah satu masalah utama yang disebutkan mengenai mata uang kripto adalah fakta bahwa mata uang ini mudah berubah; meskipun banyak pengguna dan pedagang yang menginginkan keamanan dan kenyamanan dalam bertransaksi dengan aset kriptografi, banyak dari mereka yang tidak ingin menghadapi kemungkinan kehilangan 23% dari nilai dana mereka dalam satu hari. Hingga saat ini, solusi yang paling sering diusulkan adalah aset yang didukung oleh penerbit; idenya adalah penerbit menciptakan sub-mata uang di mana mereka memiliki hak untuk menerbitkan dan mencabut unit, dan menyediakan satu unit mata uang kepada siapa pun yang menyediakannya (secara offline) dengan satu unit aset acuan tertentu (mis. emas, USD). Penerbit kemudian berjanji untuk memberikan satu unit aset acuan kepada siapa saja yang mengirimkan kembali satu unit aset kripto. Mekanisme ini memungkinkan aset non-kriptografi apa pun untuk "diangkat" menjadi aset kriptografi, asalkan penerbitnya dapat dipercaya. + +Namun dalam praktiknya, penerbit tidak selalu dapat dipercaya, dan dalam beberapa kasus, infrastruktur perbankan terlalu lemah, atau terlalu tidak bersahabat, sehingga layanan semacam itu tidak ada. Turunan finansial menyediakan sebuah alternatif. Di sini, alih-alih penerbit tunggal yang menyediakan dana untuk mendukung aset, pasar terdesentralisasi yang terdiri dari para spekulan, bertaruh bahwa harga aset referensi kriptografi (mis. ETH) akan naik, memainkan peran tersebut. Tidak seperti emiten, spekulan tidak memiliki opsi untuk gagal dalam tawar-menawar karena kontrak lindung nilai menahan dana mereka dalam escrow. Perlu diingat bahwa pendekatan ini tidak sepenuhnya terdesentralisasi, karena sumber tepercaya masih diperlukan untuk menyediakan telegrap harga, meskipun dapat dikatakan bahwa hal ini merupakan peningkatan besar dalam hal mengurangi kebutuhan infrastruktur (tidak seperti menjadi penerbit, menerbitkan umpan harga tidak memerlukan lisensi dan kemungkinan besar dapat dikategorikan sebagai kebebasan berbicara) dan mengurangi potensi penipuan. + +### Identitas dan Sistem Reputasi {#identity-and-reputation-systems} + +Mata uang kripto alternatif pertama yang muncul, [Namecoin](http://namecoin.org/), mencoba menggunakan rantai blok serupa Bitcoin untuk menyediakan sistem registrasi nama, di mana pengguna dapat mendaftarkan nama mereka dalam basis data publik bersama dengan data lainnya. Kasus penggunaan utama yang sering dikutip adalah untuk sistem [DNS](https://wikipedia.org/wiki/Domain_Name_System), yang memetakan nama domain seperti "bitcoin.org" (atau, dalam kasus Namecoin, "bitcoin.bit") ke alamat IP. Kasus penggunaan lainnya termasuk autentikasi email dan sistem reputasi yang berpotensi lebih canggih. Berikut ini adalah kontrak dasar untuk menyediakan sistem registrasi nama yang mirip dengan Namecoin di Ethereum: + +```py +def register(name, value): + if !self.storage[name]: + self.storage[name] = value +``` + +Kontrak ini sangat sederhana; yang ada hanyalah sebuah database di dalam jaringan Ethereum yang dapat ditambahkan, tetapi tidak dapat dimodifikasi atau dihapus. Siapa pun dapat mendaftarkan nama dengan nilai tertentu, dan pendaftaran tersebut akan melekat selamanya. Kontrak pendaftaran nama yang lebih canggih juga akan memiliki "klausul fungsi" yang memungkinkan kontrak lain untuk menanyakannya, serta mekanisme untuk "pemilik" (yaitu pendaftar pertama) sebuah nama untuk mengubah data atau mengalihkan kepemilikan. Kita bahkan bisa menambahkan fungsionalitas reputasi dan web-of-trust di atasnya. + +### Penyimpanan File Terdesentralisasi {#decentralized-file-storage} + +Selama beberapa tahun terakhir, telah muncul sejumlah perusahaan rintisan penyimpanan file daring yang populer, yang paling menonjol adalah Dropbox, yang memungkinkan pengguna untuk mengunggah cadangan hard drive mereka dan meminta layanan ini untuk menyimpan cadangan tersebut dan mengizinkan pengguna untuk mengaksesnya dengan imbalan biaya bulanan. Namun, pada saat ini pasar penyimpanan file terkadang relatif tidak efisien; pandangan sepintas pada berbagai solusi yang ada menunjukkan bahwa, terutama pada tingkat "lembah yang luar biasa" 20-200 GB di mana tidak ada kuota gratis atau diskon tingkat perusahaan yang berlaku, harga bulanan untuk biaya penyimpanan file utama sedemikian rupa sehingga Anda membayar lebih banyak daripada biaya seluruh hard drive dalam satu bulan. Kontrak Ethereum dapat memungkinkan pengembangan ekosistem penyimpanan file yang terdesentralisasi, di mana pengguna individu dapat memperoleh sejumlah kecil uang dengan menyewakan hard drive mereka sendiri dan ruang yang tidak terpakai dapat digunakan untuk menurunkan biaya penyimpanan file. + +Bagian utama yang menopang perangkat semacam itu adalah apa yang kami sebut sebagai "kontrak Dropbox yang terdesentralisasi". Kontrak ini bekerja sebagai berikut. Pertama, seseorang membagi data yang diinginkan menjadi beberapa blok, mengenkripsi setiap blok untuk privasi, dan membangun pohon Merkle dari data tersebut. Kemudian membuat sebuah kontrak dengan aturan bahwa, setiap N blok, kontrak akan memilih sebuah indeks acak di dalam pohon Merkle (menggunakan hash blok sebelumnya, yang dapat diakses dari kode kontrak, sebagai sumber keacakan), dan memberikan X ether kepada entitas pertama yang memasok transaksi dengan verifikasi pembayaran yang disederhanakan-seperti bukti kepemilikan blok pada indeks tertentu di dalam pohon. Ketika pengguna ingin mengunduh ulang file mereka, mereka dapat menggunakan protokol saluran pembayaran mikro (misalnya, membayar 1 szabo per 32 kilobita) untuk memulihkan file tersebut; pendekatan yang paling hemat biaya adalah pembayar tidak memublikasikan transaksi hingga akhir, alih-alih mengganti transaksi tersebut dengan transaksi yang sedikit lebih menguntungkan dengan nonce yang sama setiap 32 kilobita. + +Fitur penting dari protokol ini adalah, walaupun kelihatannya seperti memercayai banyak simpul secara acak untuk tidak memutuskan untuk melupakan file tersebut, kita dapat mengurangi risiko tersebut hingga mendekati nol dengan cara membagi file tersebut ke dalam beberapa bagian melalui berbagi rahasia, dan mengawasi kontrak untuk melihat apakah setiap bagian tersebut masih berada di tangan beberapa simpul. Jika sebuah kontrak masih membayar uang, itu memberikan bukti kriptografi bahwa seseorang di luar sana masih menyimpan file tersebut. + +### Organisasi Otonom Terdesentralisasi {#decentralized-autonomous-organizations} + +Konsep umum dari "organisasi otonom terdesentralisasi" adalah sebuah entitas virtual yang memiliki sekumpulan anggota atau pemegang saham tertentu yang, mungkin dengan mayoritas 67%, memiliki hak untuk membelanjakan dana entitas dan memodifikasi kodenya. Para anggota secara kolektif akan memutuskan bagaimana organisasi harus mengalokasikan dananya. Metode untuk mengalokasikan dana DAO dapat berkisar dari hadiah, gaji, hingga mekanisme yang lebih eksotis seperti mata uang internal untuk memberi imbalan pekerjaan. Pada dasarnya, ini mereplikasi perangkap hukum perusahaan tradisional atau nirlaba tetapi hanya menggunakan teknologi rantai blok kriptografi untuk penegakan hukum. Sejauh ini banyak pembicaraan seputar DAO adalah seputar model "kapitalis" dari "perusahaan otonom yang terdesentralisasi" (DAC) dengan pemegang saham yang menerima dividen dan saham yang dapat diperdagangkan; sebuah alternatif, yang dapat digambarkan sebagai "komunitas otonom yang terdesentralisasi", akan membuat semua anggota memiliki andil yang sama dalam pengambilan keputusan dan mengharuskan 67% anggota yang ada setuju untuk menambah atau menghapus anggota. Persyaratan bahwa satu orang hanya boleh memiliki satu keanggotaan kemudian perlu ditegakkan secara kolektif oleh kelompok. + +Sebuah garis besar umum tentang bagaimana mengodekan DAO adalah sebagai berikut. Desain yang paling sederhana hanyalah sepotong kode yang dapat dimodifikasi sendiri yang akan berubah jika dua pertiga anggota menyetujui suatu perubahan. Meskipun kode secara teoritis tidak dapat diubah, seseorang dapat dengan mudah menyiasatinya dan memiliki mutabilitas de-facto dengan memiliki potongan-potongan kode dalam kontrak yang terpisah, dan memiliki alamat kontrak mana yang akan dipanggil yang disimpan dalam penyimpanan yang dapat dimodifikasi. Dalam implementasi sederhana dari kontrak DAO tersebut, akan ada tiga jenis transaksi, yang dibedakan berdasarkan data yang disediakan dalam transaksi: + +- `[0,i,K,V]` digunakan untuk mendaftarkan proposal dengan indeks `i` untuk mengubah alamat pada indeks penyimpanan `K` menjadi nilai `V` +- `[1,i]` untuk mendaftarkan satu suara yang mendukung proposal `i` +- `[2,i]` untuk memfinalisasi proposal `i` jika suara yang diperoleh telah mencukupi + +Kontraknya kemudian akan memiliki klausa untuk setiap transaksi ini. Ini akan menyimpan catatan semua perubahan penyimpanan terbuka, bersama dengan daftar siapa yang memilihnya. Juga akan memiliki daftar semua anggota. Ketika setiap perubahan penyimpanan mendapatkan dua pertiga dari anggota yang memilihnya, transaksi finalisasi dapat mengeksekusi perubahan tersebut. Rangkaian yang lebih canggih juga akan memiliki kemampuan voting terintegrasi untuk fitur seperti mengirim transaksi, menambahkan anggota, dan menghapus anggota, dan bahkan mungkin menyediakan delegasi suara gaya [Demokrasi Cair](https://wikipedia.org/wiki/Liquid_democracy) (yaitu, siapa pun dapat menugaskan seseorang untuk memberikan suara atas nama mereka, dan penugasan bersifat transitif, jadi jika A menugaskan B dan B menugaskan C maka C menentukan suara A). Desain ini akan memungkinkan DAO untuk tumbuh secara organik sebagai komunitas yang terdesentralisasi, yang pada akhirnya memungkinkan orang untuk mendelegasikan tugas menyaring siapa yang menjadi anggota kepada spesialis, meskipun tidak seperti dalam "sistem saat ini", para spesialis dapat dengan mudah masuk dan keluar dari eksistensi dari waktu ke waktu ketika anggota komunitas mengubah keberpihakannya. + +Model alternatifnya adalah perusahaan yang terdesentralisasi, di mana setiap akun dapat memiliki nol saham atau lebih, dan dua pertiga saham diperlukan untuk membuat keputusan. Kerangka kerja yang lengkap akan melibatkan fungsionalitas manajemen aset, kemampuan untuk membuat penawaran untuk membeli atau menjual saham, dan kemampuan untuk menerima penawaran (sebaiknya dengan mekanisme pencocokan pesanan di dalam kontrak). Delegasi juga akan ada dalam gaya Demokrasi Cair, yang menggeneralisasi konsep "dewan direksi". + +### Aplikasi Lebih Lanjut {#further-applications} + +**1. Dompet tabungan**. Misalkan Alice ingin menyimpan dananya dengan aman, tetapi khawatir akan kehilangan atau seseorang akan meretas kunci pribadinya. Dia memasukkan ether ke dalam sebuah kontrak dengan Bob, sebuah bank, sebagai berikut: + +- Alice sendiri bisa menarik maksimum 1% dari dananya per hari. +- Bob sendiri dapat menarik maksimum 1% dari dana per hari, tetapi Alice memiliki kemampuan untuk melakukan transaksi dengan kuncinya yang mematikan kemampuan ini. +- Alice dan Bob bersama-sama bisa menarik apa pun. + +Biasanya, 1% per hari sudah cukup untuk Alice, dan jika Alice ingin menarik lebih banyak, dia dapat menghubungi Bob untuk meminta bantuan. Jika kunci Alice diretas, dia akan berlari ke Bob untuk memindahkan dana ke kontrak baru. Jika dia kehilangan kuncinya, Bob akan mendapatkan dana tersebut pada akhirnya. Jika Bob ternyata jahat, maka dia bisa mematikan kemampuannya untuk menarik diri. + +**2. Asuransi panen**. Seseorang dapat dengan mudah membuat kontrak derivatif keuangan tetapi menggunakan umpan data cuaca, bukan indeks harga apa pun. Jika seorang petani di Iowa membeli derivatif yang membayar secara terbalik berdasarkan curah hujan di Iowa, maka jika terjadi kekeringan, petani secara otomatis akan menerima uang dan jika ada cukup hujan, petani akan senang karena tanaman mereka akan tumbuh dengan baik. Ini bisa diperluas ke asuransi bencana alam pada umumnya. + +**3. Umpan data terdesentralisasi**. Untuk kontrak finansial berupa kontrak perbedaan, sebenarnya mungkin memungkinkan untuk mendesentralisasikan umpan data melalui sebuah protokol yang disebut "[SchellingCoin](http://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/)". SchellingCoin pada dasarnya bekerja sebagai berikut: N pihak semuanya memasukkan nilai datum yang diberikan ke dalam sistem (misalnya, harga ETH/USD), nilainya diurutkan, dan setiap orang yang berada di persentil ke-25 hingga ke-75 mendapatkan satu token sebagai imbalan. Setiap orang memiliki insentif untuk memberikan jawaban yang akan diberikan oleh orang lain, dan satu-satunya nilai yang secara realistis dapat disetujui oleh banyak pemain adalah standar yang jelas: kebenaran. Hal ini menciptakan protokol terdesentralisasi yang secara teoritis dapat memberikan sejumlah nilai, termasuk harga ETH/USD, suhu di Berlin, atau bahkan hasil dari komputasi yang sulit. + +**4. Escrow multi tanda tangan pintar**. Bitcoin memungkinkan kontrak transaksi multitandatangan di mana, sebagai contoh, tiga dari lima kunci yang diberikan dapat membelanjakan dana. Ethereum memungkinkan lebih banyak perincian; misalnya, empat dari lima orang dapat membelanjakan semuanya, tiga dari lima orang dapat membelanjakan hingga 10% per hari, dan dua dari lima orang dapat membelanjakan hingga 0,5% per hari. Selain itu, multisig Ethereum bersifat asinkron - dua pihak dapat mendaftarkan tanda tangan mereka di rantai blok pada waktu yang berbeda dan tanda tangan terakhir akan secara otomatis mengirim transaksi. + +**5. Komputasi cloud**. Teknologi EVM juga dapat digunakan untuk menciptakan lingkungan komputasi yang dapat diverifikasi, sehingga pengguna dapat meminta orang lain untuk melakukan komputasi dan kemudian secara opsional meminta bukti bahwa komputasi pada titik pemeriksaan tertentu yang dipilih secara acak telah dilakukan dengan benar. Hal ini memungkinkan terciptanya pasar komputasi cloud di mana setiap pengguna dapat berpartisipasi dengan desktop, laptop, atau server khusus mereka, dan pengecekan di tempat bersama dengan uang jaminan dapat digunakan untuk memastikan bahwa sistem tersebut dapat dipercaya (misal, simpul tidak dapat menipu secara menguntungkan). Meskipun sistem seperti itu mungkin tidak cocok untuk semua tugas; tugas yang membutuhkan komunikasi antar-proses tingkat tinggi, misalnya, tidak dapat dengan mudah dilakukan pada cloud simpul yang besar. Akan tetapi, tugas-tugas lain jauh lebih mudah untuk diparalelkan; proyek-proyek seperti SETI@home, folding@home, dan algoritme genetika dapat dengan mudah diimplementasikan di atas platform semacam itu. + +**6. Perjudian peer-to-peer**. Berbagai protokol perjudian peer-to-peer, seperti protokol [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf) yang dikembangkan oleh Frank Stajano dan Richard Clayton, dapat diimplementasikan di rantai blok Ethereum. Protokol perjudian yang paling sederhana sebenarnya hanyalah kontrak untuk perbedaan pada hash blok berikutnya, dan protokol yang lebih canggih dapat dibangun dari sana, menciptakan layanan perjudian dengan biaya mendekati nol yang tidak memiliki kemampuan untuk menipu. + +**7. Pasar prediksi**. Dengan adanya oracle atau SchellingCoin, pasar prediksi juga mudah diimplementasikan, dan pasar prediksi bersama dengan SchellingCoin mungkin akan menjadi aplikasi utama pertama dari [futarchy](http://hanson.gmu.edu/futarchy.html) sebagai protokol pemerintahan untuk organisasi terdesentralisasi. + +**8. Pasar terdesentralisasi di dalam rantai**, menggunakan sistem identitas dan reputasi sebagai dasarnya. + +## Lain-Lain dan Permasalahan {#miscellanea-and-concerns} + +### Implementasi GHOST yang Dimodifikasi {#modified-ghost-implementation} + +Protokol "Greedy Heaviest Observed Subtree" (GHOST) adalah inovasi yang pertama kali diperkenalkan oleh Yonatan Sompolinsky dan Aviv Zohar pada bulan [Desember 2013](https://eprint.iacr.org/2013/881.pdf). Motivasi di balik GHOST adalah bahwa rantai blok dengan waktu konfirmasi yang cepat saat ini mengalami penurunan keamanan karena tingkat basi yang tinggi - karena blok membutuhkan waktu tertentu untuk menyebar melalui jaringan, jika penambang A menambang sebuah blok dan kemudian penambang B menambang blok lain sebelum blok penambang A menyebar ke B, maka blok penambang B akan terbuang sia-sia dan tidak akan memberikan kontribusi terhadap keamanan jaringan. Selain itu, terdapat masalah sentralisasi: jika penambang A adalah sebuah pool menambang dengan hashpower 30% dan B memiliki hashpower 10%, A akan memiliki risiko menghasilkan blok basi 70% dari waktu (karena 30% dari waktu yang lain A menghasilkan blok terakhir dan dengan demikian akan mendapatkan data menambang dengan segera), sedangkan B akan memiliki risiko menghasilkan blok basi 90% dari waktu. Dengan demikian, jika interval blok cukup pendek sehingga tingkat basi menjadi tinggi, A akan jauh lebih efisien hanya berdasarkan ukurannya. Dengan gabungan kedua efek ini, rantai blok yang menghasilkan blok dengan cepat sangat mungkin untuk menghasilkan satu pool menambang yang memiliki persentase hashpower jaringan yang cukup besar sehingga secara de facto dapat mengontrol proses menambang. + +Seperti yang dijelaskan oleh Sompolinsky dan Zohar, GHOST memecahkan masalah pertama yaitu kehilangan keamanan jaringan dengan memasukkan blok-blok basi ke dalam perhitungan rantai mana yang "terpanjang"; dengan kata lain, tidak hanya induk dan nenek moyang lebih lanjut dari sebuah blok, tetapi juga keturunan basi dari nenek moyang blok tersebut (dalam jargon Ethereum, "paman") ditambahkan ke dalam perhitungan blok mana yang memiliki total bukti-bukti kerja terbesar yang mendukungnya. Untuk mengatasi masalah kedua yaitu bias sentralisasi, kami melampaui protokol yang dijelaskan oleh Sompolinsky dan Zohar, dan juga memberikan imbalan blok kepada stales: sebuah stale menerima 87,5% dari imbalan dasarnya, dan keponakan yang menyertakan stale tersebut menerima 12,5% sisanya. Namun, biaya transaksi tidak diberikan kepada blok paman. + +Ethereum mengimplementasikan versi sederhana dari GHOST yang hanya turun tujuh level. Khususnya, seperti yang didefinisikan berikut ini: + +- Sebuah blok harus menentukan satu induk, dan harus menentukan 0 atau lebih banyak blok paman +- Satu blok paman yang termasuk dalam blok B harus memiliki properti berikut ini: + - Itu harus menjadi anak langsung dari leluhur generasi ke-k dari B, di mana 2 <= k <= 7. + - Tidak mungkin nenek moyang dari B + - Paman harus berupa header blok yang valid, tetapi tidak harus berupa blok yang telah diverifikasi sebelumnya atau bahkan blok yang valid + - Seorang paman harus berbeda dari semua paman yang termasuk dalam blok sebelumnya dan semua paman lain yang termasuk dalam blok yang sama (tidak termasuk ganda) +- Untuk setiap paman U di blok B, penambang B akan mendapatkan tambahan 3,125% dari imbalan coinbase dan penambang U akan mendapatkan 93,75% dari imbalan coinbase standar. + +Versi terbatas GHOST ini, dengan paman yang hanya dapat disertakan hingga 7 generasi, digunakan untuk dua alasan. Pertama, GHOST yang tidak terbatas akan memasukkan terlalu banyak komplikasi ke dalam perhitungan paman mana untuk blok tertentu yang valid. Kedua, GHOST tanpa batas dengan kompensasi seperti yang digunakan dalam Ethereum menghilangkan insentif bagi penambang untuk menambang di rantai utama dan bukan di rantai penyerang publik. + +### Biaya {#fees} + +Karena setiap transaksi yang diterbitkan ke dalam rantai blok membebankan biaya kepada jaringan untuk mengunduh dan memverifikasinya, maka diperlukan sebuah mekanisme regulasi, yang biasanya melibatkan biaya transaksi, untuk mencegah penyalahgunaan. Pendekatan standar yang digunakan dalam Bitcoin adalah dengan biaya yang murni sukarela, dengan mengandalkan para penambang untuk bertindak sebagai penjaga gerbang dan menetapkan batas minimum yang dinamis. Pendekatan ini telah diterima dengan sangat baik dalam komunitas Bitcoin terutama karena pendekatan ini "berbasis pasar", yang memungkinkan penawaran dan permintaan antara penambang dan pengirim transaksi menentukan harga. Akan tetapi, masalah dengan pemikiran ini adalah bahwa pemrosesan transaksi bukanlah sebuah pasar; walaupun secara intuitif menarik untuk mengartikan pemrosesan transaksi sebagai sebuah layanan yang ditawarkan oleh penambang kepada pengirim, pada kenyataannya, setiap transaksi yang disertakan oleh penambang harus diproses oleh setiap simpul di dalam jaringan, sehingga sebagian besar biaya pemrosesan transaksi ditanggung oleh pihak ketiga, dan bukan oleh penambang yang mengambil keputusan untuk mengikutsertakan transaksi tersebut atau tidak. Oleh karena itu, masalah tragedi yang biasa terjadi sangat mungkin terjadi. + +Namun, ternyata kekurangan dalam mekanisme berbasis pasar ini, ketika diberikan asumsi penyederhanaan tertentu yang tidak akurat, secara ajaib akan hilang dengan sendirinya. Argumennya adalah sebagai berikut. Anggaplah: + +1. Sebuah transaksi menghasilkan `k` operasi, menawarkan imbalan `kR` kepada penambang mana pun yang menyertakannya di mana `R` ditetapkan oleh pengirim dan `k` dan `R` (secara kasar) terlihat oleh penambang sebelumnya. +2. Sebuah operasi memiliki biaya pemrosesan sebesar `C` untuk setiap simpul (misalnya, semua simpul memiliki efisiensi yang sama) +3. Terdapat `N` simpul menambang, masing-masing dengan kekuatan pemrosesan yang sama (misalnya, `1/N` dari total) +4. Tidak ada simpul penuh non-menambang. + +Seorang penambang akan bersedia untuk memproses sebuah transaksi jika imbalan yang diharapkan lebih besar daripada biayanya. Oleh karena itu, imbalan yang diharapkan adalah `kR/N` karena penambang memiliki peluang `1/N` untuk memproses blok berikutnya, dan biaya pemrosesan bagi penambang adalah `kC`. Oleh karena itu, penambang akan menyertakan transaksi di mana `kR/N > kC`, atau `R > NC`. Perhatikan bahwa `R` adalah biaya per operasi yang diberikan oleh pengirim, dan oleh karena itu merupakan batas bawah manfaat yang diperoleh pengirim dari transaksi, dan `NC` adalah biaya keseluruhan jaringan untuk memproses sebuah operasi. Oleh karena itu, para penambang memiliki insentif untuk memasukkan hanya transaksi-transaksi yang total manfaatnya melebihi biayanya. + +Namun demikian, ada beberapa penyimpangan penting dari asumsi-asumsi tersebut pada kenyataannya: + +1. Penambang membayar biaya yang lebih tinggi untuk memproses transaksi dibandingkan simpul verifikasi lainnya, karena waktu verifikasi tambahan menunda penyebaran blok dan dengan demikian meningkatkan kemungkinan blok menjadi kedaluwarsa. +2. Memang ada simpul penuh yang tidak ditambang. +3. Distribusi kekuasaan menambang dapat berakhir dengan ketidakadilan dalam praktiknya. +4. Spekulan, musuh politik, dan orang gila yang memiliki fungsi utilitas untuk merusak jaringan memang ada, dan mereka dapat dengan cerdik membuat kontrak yang biayanya jauh lebih rendah daripada biaya yang dibayarkan oleh simpul-simpul pemverifikasi lainnya. + +(1) membuat penambang cenderung memasukkan transaksi yang lebih sedikit, dan (2) meningkatkan `NC`; karena itu, setidaknya, kedua efek tersebut secara terpisah saling membatalkan satu sama lain.[Bagaimana?](https://github.com/ethereum/wiki/issues/447#issuecomment-316972260) (3) dan (4) adalah masalah utama; untuk menanganinya kita hanya perlu membentuk modal mengambang: tidak ada blok yang bisa memiliki operasi lebih dari `BLK_LIMIT_FACTOR` kali yang adalah rata- rata pergerakan eksponensial jangka panjang. Secara rinci: + +```js +blk.oplimit = floor((blk.parent.oplimit \* (EMAFACTOR - 1) + +floor(parent.opcount \* BLK\_LIMIT\_FACTOR)) / EMA\_FACTOR) +``` + +`BLK_LIMIT_FACTOR` dan `EMA_FACTOR` adalah konstanta yang saat ini akan diatur menjadi 65536 dan 1.5, tetapi kemungkinan akan diubah setelah analisis lebih lanjut. + +Ada faktor lain yang menjadi disinsentif bagi ukuran blok yang besar dalam Bitcoin: blok yang besar akan membutuhkan waktu lebih lama untuk disebarkan, dan dengan demikian memiliki kemungkinan yang lebih tinggi untuk menjadi kedaluwarsa. Di Ethereum, blok yang sangat banyak mengonsumsi gas juga membutuhkan waktu lebih lama untuk disebarkan karena secara fisik lebih besar dan karena membutuhkan waktu lebih lama untuk memproses transisi status transaksi untuk memvalidasi. Disinsentif penundaan ini merupakan pertimbangan yang signifikan dalam Bitcoin, tetapi tidak terlalu signifikan dalam Ethereum karena protokol GHOST; oleh karena itu, mengandalkan batas blok yang diatur akan memberikan dasar yang lebih stabil. + +### Komputasi Dan Kelengkapan-Turing {#computation-and-turing-completeness} + +Catatan penting adalah bahwa mesin virtual Ethereum adalah Turing-complete; ini berarti bahwa kode EVM dapat mengodekan komputasi apa pun yang dapat dilakukan, termasuk loop tak terbatas. Kode EVM memungkinkan pengulangan dalam dua cara. Pertama, ada instruksi `JUMP` yang memungkinkan program melompat kembali ke posisi sebelumnya dalam kode, dan instruksi `JUMPI` untuk melompat secara kondisional, memungkinkan untuk pernyataan seperti `while x < 27: x = x * 2`. Kedua, kontrak dapat memanggil kontrak lain, yang berpotensi memungkinkan terjadinya pengulangan melalui perulangan. Hal ini tentu saja menimbulkan sebuah masalah: dapatkah pengguna yang jahat pada dasarnya mematikan penambang dan seluruh simpul dengan memaksa mereka untuk masuk ke dalam sebuah loop yang tidak terbatas? Masalah ini muncul karena masalah dalam ilmu komputer yang dikenal sebagai masalah penghentian: tidak ada cara untuk mengetahui, dalam kasus umum, apakah suatu program akan berhenti atau tidak. + +Seperti yang dijelaskan di bagian transisi state, solusi kami bekerja dengan mengharuskan transaksi untuk menetapkan jumlah maksimum langkah komputasi yang diperbolehkan, dan jika eksekusi memerlukan waktu yang lebih lama, komputasi akan dikembalikan tetapi biaya tetap dibayarkan. Pesan bekerja dalam cara yang sama. Untuk menunjukkan motivasi di balik solusi kami, pertimbangkan contoh-contoh berikut ini: + +- Seorang penyerang membuat sebuah kontrak yang menjalankan sebuah perulangan tak terbatas, dan kemudian mengirimkan sebuah transaksi yang mengaktifkan perulangan tersebut kepada penambang. Penambang akan memproses transaksi, menjalankan infinite loop, dan menunggu sampai kehabisan gas. Meskipun eksekusi kehabisan tenaga dan berhenti di tengah jalan, transaksi masih sah dan penambang masih mengklaim biaya dari penyerang untuk setiap langkah komputasi. +- Seorang penyerang membuat sebuah perulangan tak terbatas yang sangat panjang dengan tujuan memaksa penambang untuk terus melakukan komputasi dalam waktu yang sangat lama sehingga pada saat komputasi selesai, beberapa blok sudah keluar dan tidak memungkinkan bagi penambang untuk menyertakan transaksi untuk mendapatkan upah. Namun, penyerang akan diminta untuk mengirimkan nilai untuk `STARTGAS` yang membatasi jumlah langkah komputasi yang dapat diambil oleh eksekusi, sehingga penambang akan tahu sebelumnya bahwa komputasi akan memerlukan jumlah langkah yang sangat besar. +- Seorang penyerang melihat kontrak dengan kode dalam bentuk seperti `send(A,contract.storage[A]); contract.storage[A] = 0`, dan mengirimkan transaksi dengan cukup gas hanya untuk menjalankan langkah pertama namun tidak yang kedua (yaitu, membuat penarikan tetapi tidak membiarkan saldo berkurang). Penulis kontrak tidak perlu khawatir untuk melindungi diri dari serangan seperti itu, karena jika eksekusi berhenti di tengah jalan, perubahan akan dikembalikan. +- Kontrak keuangan bekerja dengan mengambil median dari sembilan umpan data eksklusif untuk meminimalkan risiko. Seorang penyerang mengambil alih salah satu umpan data, yang didesain untuk dapat dimodifikasi melalui mekanisme panggilan-alamat-variabel yang dijelaskan pada bagian tentang DAO, dan mengubahnya untuk menjalankan sebuah putaran yang tidak terbatas, dengan demikian mencoba untuk memaksa setiap usaha untuk mengklaim dana dari kontrak keuangan untuk menghabiskan gas. Namun, kontrak keuangan dapat menetapkan batas gas pada pesan untuk mencegah masalah ini. + +Alternatif kelengkapan-Turing adalah ketidaklengkapan Turing, di mana `JUMP` dan `JUMPI` tidak ada, dan hanya satu salinan dari setiap kontrak yang diizinkan ada dalam stack panggilan pada satu waktu tertentu. Dengan sistem ini, sistem biaya yang dijelaskan dan ketidakpastian seputar keefektifan solusi kami mungkin tidak diperlukan, karena biaya pelaksanaan kontrak akan terbatas ke atas oleh ukurannya. Selain itu, ketidaklengkapan Turing bahkan tidak terlalu menjadi batasan; dari semua contoh kontrak yang kami buat secara internal, sejauh ini hanya satu yang membutuhkan pengulangan, dan bahkan pengulangan tersebut dapat dihilangkan dengan membuat 26 pengulangan sepotong kode satu baris. Mengingat implikasi serius dari kelengkapan-Turing, dan manfaatnya yang terbatas, mengapa tidak memiliki bahasa ketidaklengkapan Turing? Namun pada kenyataannya, ketidaklengkapan Turing masih jauh dari solusi yang tepat untuk masalah ini. Untuk mengetahui alasannya, simaklah kontrak-kontrak berikut ini: + +```sh +C0: call(C1); call(C1); +C1: call(C2); call(C2); +C2: call(C3); call(C3); +... +C49: call(C50); call(C50); +C50: (jalankan satu langkah dari program dan catat perubahannya di penyimpanan) +``` + +Sekarang, kirimkan transaksi ke A. Dengan demikian, dalam 51 transaksi, kita memiliki kontrak yang memerlukan 250 langkah komputasi. Para penambang dapat mencoba untuk mendeteksi bom logika seperti itu sebelumnya dengan mempertahankan sebuah nilai di samping setiap kontrak yang menentukan jumlah maksimum langkah komputasi yang dapat dilakukan, dan menghitungnya untuk kontrak yang memanggil kontrak lain secara rekursif, tetapi hal tersebut akan mengharuskan para penambang untuk melarang kontrak yang membuat kontrak lain (karena pembuatan dan eksekusi ke-26 kontrak di atas dapat dengan mudah digabungkan ke dalam satu kontrak). Hal lain yang menjadi masalah adalah bidang alamat dari sebuah pesan merupakan sebuah variabel, sehingga pada umumnya tidak mungkin untuk mengetahui kontrak mana yang akan dipanggil oleh kontrak tertentu sebelumnya. Oleh karena itu, secara keseluruhan, kami memiliki kesimpulan yang mengejutkan: Kelengkapan-Turing ternyata mudah dikelola, dan kurangnya kelengkapan Turing juga sama sulitnya untuk dikelola kecuali jika ada kontrol yang sama persis - tetapi dalam hal ini mengapa tidak membiarkan menjadi protokol lengkap Turing? + +### Mata Uang dan Penerbitan {#currency-and-issuance} + +Jaringan Ethereum memiliki mata uang bawaannya sendiri, ether, yang memiliki tujuan ganda, yaitu menyediakan lapisan likuiditas utama untuk memungkinkan pertukaran yang efisien antara berbagai jenis aset digital dan, yang lebih penting lagi, menyediakan mekanisme pembayaran biaya transaksi. Untuk kenyamanan dan menghindari perdebatan di masa depan (seperti perdebatan mBTC/uBTC/satoshi saat ini dalam Bitcoin), denominasi akan diberi label sebelumnya: + +- 1: wei +- 1012: szabo +- 1015: finney +- 1018: ether + +Ini seharusnya dianggap sebagai versi yang diperluas dari konsep "dollars" dan "cents" atau "BTC" dan "satoshi". Di masa depan yang dekat, kami mengharapkan "ether" digunakan untuk transaksi biasa, "finney" untuk mikrotransaksi, dan "szabo" serta "wei" untuk diskusi teknis mengenai biaya dan implementasi protokol; denominasi yang tersisa mungkin akan berguna nanti dan tidak seharusnya disertakan dalam klien saat ini. + +Model penerbitan akan seperti berikut: + +- Ether akan dirilis melalui penjualan mata uang dengan harga 1000-2000 ether per BTC, mekanisme yang dimaksudkan untuk mendanai organisasi Ethereum dan membiayai pengembangan yang telah berhasil digunakan oleh platform lain seperti Mastercoin dan NXT. Pembeli yang lebih awal akan mendapatkan diskon yang lebih besar. BTC yang diterima dari penjualan akan digunakan sepenuhnya untuk membayar gaji dan imbalan kepada pengembang serta diinvestasikan dalam berbagai proyek berorientasi profit dan nirlaba dalam ekosistem Ethereum dan mata uang kripto. +- Sejumlah 0,099x jumlah total yang dijual (60102216 ETH) akan dialokasikan kepada organisasi untuk mengganti kontributor awal dan membayar biaya yang dinyatakan dalam ETH sebelum blok genesis. +- Sejumlah 0,099x jumlah total yang dijual akan dijaga sebagai cadangan jangka panjang. +- Sejumlah 0,26x jumlah total yang dijual akan dialokasikan kepada para penambang setiap tahun selamanya setelah titik tersebut. + +| Kelompok | Saat peluncuran | Setelah 1 tahun | Setelah 5 tahun | +| ---------------------------------------- | --------------- | --------------- | --------------- | +| Unit mata uang | 1,198X | 1,458X | 2,498X | +| Pembeli | 83,5% | 68,6% | 40,0% | +| Dana cadangan terpakai sebelum penjualan | 8,26% | 6,79% | 3,96% | +| Dana cadangan terpakai setelah penjualan | 8,26% | 6,79% | 3,96% | +| Penambang | 0% | 17,8% | 52,0% | + +#### Tingkat Pertumbuhan Pasokan Jangka Panjang (persen) + +![Inflasi Ethereum](./ethereum-inflation.png) + +_Meskipun penerbitan mata uang bersifat linear, sama seperti pada Bitcoin seiring waktu laju pertumbuhan pasokan cenderung mendekati nol._ + +Dua pilihan utama dalam model di atas adalah (1) keberadaan dan besarnya kolam dana warisan, dan (2) keberadaan pasokan linear yang terus tumbuh secara permanen, berbeda dengan pasokan yang terbatas seperti pada Bitcoin. Justifikasi dari pool dana warisan adalah sebagai berikut. Jika kolam dana warisan tidak ada, dan penerbitan linear berkurang menjadi 0,217x untuk memberikan tingkat inflasi yang sama, maka jumlah total ether akan berkurang sebesar 16,5% dan setiap unit akan menjadi lebih berharga sebesar 19,8%. Oleh karena itu, dalam keseimbangan, 19,8% lebih banyak ether akan dibeli dalam penjualan, sehingga setiap unit akan kembali memiliki nilai yang sama seperti sebelumnya. Organisasi juga akan memiliki 1,198x lebih banyak BTC, yang dapat dianggap terbagi menjadi dua bagian: BTC asli, dan tambahan 0,198x. Oleh karena itu, situasi ini _benar-benar setara_ dengan dana warisan, tetapi dengan satu perbedaan penting: organisasi hanya memiliki BTC, sehingga tidak diincentivasi untuk mendukung nilai unit ether. + +Model pertumbuhan pasokan linear permanen mengurangi risiko yang dilihat oleh beberapa orang sebagai konsentrasi kekayaan yang berlebihan dalam Bitcoin, dan memberikan kesempatan yang adil bagi individu yang hidup dalam era sekarang dan masa depan untuk mengakuisisi unit mata uang, sambil tetap mempertahankan insentif kuat untuk mendapatkan dan menyimpan ether karena "laju pertumbuhan pasokan" sebagai persentase masih cenderung mendekati nol seiring waktu. Kami juga berhipotesis bahwa karena koin selalu hilang seiring waktu karena kelalaian, kematian, dll, dan kehilangan koin dapat dimodelkan sebagai persentase dari total pasokan per tahun, maka total pasokan mata uang yang beredar pada kenyataannya akan akhirnya stabil pada nilai yang sama dengan penerbitan tahunan dibagi dengan tingkat kerugian (misalnya, dengan tingkat kerugian sebesar 1%, begitu pasokan mencapai 26X maka 0,26X akan ditambang dan 0,26X hilang setiap tahun, menciptakan keseimbangan). + +Perlu dicatat bahwa di masa depan, kemungkinan Ethereum akan beralih ke model bukti taruhan untuk keamanan, mengurangi kebutuhan penerbitan menjadi antara nol dan 0,05X per tahun. Jika organisasi Ethereum kehilangan pendanaan atau menghilang karena alasan lain, kami membuka "kontrak sosial": siapa pun memiliki hak untuk menciptakan versi calon Ethereum di masa depan, dengan satu-satunya syarat adalah bahwa kuantitas ether harus paling banyak sama dengan `60102216 * (1,198 + 0,26 * n)` di mana `n` adalah jumlah tahun setelah blok genesis. Pencipta bebas untuk menjual secara kolektif atau dengan cara lain mengalokasikan sebagian atau seluruh perbedaan antara ekspansi pasokan yang didorong oleh PoS dan ekspansi pasokan maksimum yang diizinkan untuk membayar pengembangan. Pembaruan calon yang tidak mematuhi kontrak sosial dengan wajar dapat di-fork menjadi versi yang sesuai. + +### Sentralisasi Menambang {#mining-centralization} + +Algoritma menambang Bitcoin bekerja dengan cara membuat para penambang menghitung SHA256 pada versi yang sedikit dimodifikasi dari blok header berulang kali, hingga akhirnya satu simpul menemukan versi yang memiliki hash lebih kecil dari target (saat ini sekitar 2192). Namun, algoritma menambang ini rentan terhadap dua bentuk sentralisasi. Pertama, ekosistem menambang telah didominasi oleh ASIC (sirkuit terintegrasi khusus aplikasi), chip komputer yang dirancang, dan oleh karena itu ribuan kali lebih efisien dalam tugas spesifik menambang Bitcoin. Ini berarti bahwa menambang Bitcoin tidak lagi merupakan usaha yang sangat terdesentralisasi dan egaliter, tetapi memerlukan jutaan dolar modal untuk berpartisipasi secara efektif. Kedua, sebagian besar menambang Bitcoin sebenarnya tidak melakukan validasi blok secara lokal; sebaliknya, mereka mengandalkan pool menambang terpusat untuk menyediakan header blok. Masalah ini mungkin lebih buruk: pada saat penulisan ini, tiga pool penambangan teratas secara tidak langsung mengendalikan sekitar 50% daya pemrosesan dalam jaringan Bitcoin, meskipun hal ini dikurangi oleh kenyataan bahwa para penambang dapat beralih ke pool menambang lain jika sebuah pool atau koalisi mencoba serangan 51%. + +Niat saat ini di Ethereum adalah menggunakan algoritma menambang di mana para penambang diharuskan untuk mengambil data acak dari status, menghitung beberapa transaksi yang dipilih secara acak dari blok-blok terakhir N dalam rantai blok, dan mengembalikan hash dari hasilnya. Ini memiliki dua manfaat penting. Pertama, kontrak Ethereum dapat mencakup berbagai jenis komputasi, sehingga ASIC Ethereum pada dasarnya akan menjadi ASIC untuk komputasi umum - yaitu, CPU yang lebih baik. Kedua, menambang memerlukan akses ke seluruh rantai blok, memaksa para penambang untuk menyimpan seluruh rantai blok dan setidaknya mampu memverifikasi setiap transaksi. Ini menghilangkan kebutuhan akan pool penambangan terpusat; meskipun pool menambang masih dapat berperan dalam meratakan ketidakpastian distribusi imbalan, fungsi ini juga dapat dijalankan dengan baik oleh pool peer-to-peer tanpa kendali pusat. + +Model ini belum diuji, dan mungkin akan ada kesulitan dalam menghindari beberapa optimisasi cerdik saat menggunakan eksekusi kontrak sebagai algoritma menambang. Namun, satu fitur yang menarik dari algoritma ini adalah bahwa ia memungkinkan siapa pun untuk "meracuni sumur", dengan memperkenalkan sejumlah besar kontrak ke dalam rantai blok yang secara khusus dirancang untuk menghalangi beberapa ASIC. Insentif ekonomi ada bagi produsen ASIC untuk menggunakan trik semacam itu untuk saling menyerang. Oleh karena itu, solusi yang kami kembangkan pada akhirnya adalah solusi manusia ekonomi yang adaptif daripada hanya solusi teknis semata. + +### Skalabilitas {#scalability} + +Salah satu perhatian umum terkait Ethereum adalah masalah skalabilitasnya. Seperti Bitcoin, Ethereum juga memiliki kelemahan di mana setiap transaksi harus diproses oleh setiap simpul dalam jaringan. Dengan Bitcoin, ukuran rantai blok saat ini berada di sekitar 15 GB, bertambah sekitar 1 MB per jam. Jika jaringan Bitcoin harus memproses 2000 transaksi per detik seperti Visa, maka ukurannya akan bertambah 1 MB setiap tiga detik (1 GB per jam, 8 TB per tahun). Ethereum berpotensi mengalami pola pertumbuhan serupa, meskipun situasinya mungkin lebih rumit karena ada banyak aplikasi yang menggunakan rantai blok Ethereum dibandingkan dengan Bitcoin yang hanya berfungsi sebagai mata uang. Namun, keadaan ini bisa diperbaiki oleh kenyataan bahwa simpul penuh Ethereum hanya perlu menyimpan status daripada seluruh sejarah rantai blok. + +Masalah dari ukuran rantai blok sangat besar seperti ini adalah risiko sentralisasi. Jika ukuran rantai blok meningkat menjadi, katakanlah, 100 TB, maka kemungkinan skenarionya adalah hanya sejumlah kecil bisnis besar yang akan menjalankan simpul penuh, sementara semua pengguna biasa akan menggunakan simpul SPV ringan. Dalam situasi tersebut, muncul kekhawatiran potensial bahwa simpul penuh dapat bersatu dan setuju untuk melakukan penipuan dalam beberapa cara yang menguntungkan (misalnya, mengubah imbalan blok, memberi diri mereka sendiri BTC). Simpul-ringan tidak memiliki cara untuk mendeteksi hal ini secara langsung. Tentu saja, setidaknya satu simpul penuh yang jujur kemungkinan akan ada, dan setelah beberapa jam informasi tentang penipuan akan tersebar melalui saluran seperti Reddit. Namun, pada saat itu sudah terlambat: akan menjadi tanggung jawab pengguna biasa untuk mengatur upaya untuk memasukkan blok-blok yang diberikan ke dalam daftar hitam, masalah koordinasi yang besar dan kemungkinan sulit diselesaikan dalam skala yang serupa seperti suksesnya serangan 51%. Dalam kasus Bitcoin, saat ini adalah masalah, tetapi ada modifikasi rantai blok yang [disarankan oleh Peter Todd](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/) yang akan meredakan masalah ini. + +Dalam jangka pendek, Ethereum akan menggunakan dua strategi tambahan untuk mengatasi masalah ini. Pertama, karena algoritma menambang berbasis rantai blok, setidaknya setiap penambang akan dipaksa menjadi simpul penuh, menciptakan batas bawah pada jumlah simpul penuh. Kedua, dan yang lebih penting, kami akan menyertakan akar pohon keadaan perantara dalam rantai blok setelah memproses setiap transaksi. Meskipun validasi blok terpusat, selama ada satu simpul verifikasi yang jujur, masalah sentralisasi dapat diatasi melalui protokol verifikasi. Jika seorang penambang memublikasikan blok yang tidak valid, blok tersebut entah berformat buruk atau keadaan `S[n]` tidak benar. Karena `S[0]` diketahui benar, maka harus ada keadaan pertama `S[i]` yang tidak benar, di mana `S[i-1]` adalah benar. Simpul yang melakukan verifikasi akan menyediakan indeks `i`, beserta "bukti ketidakvalidan" yang terdiri dari subset simpul pohon Patricia yang diperlukan untuk memproses `APPLY(S[i-1],TX[i]) -> S[i]`. Simpul-simpul tersebut akan dapat menggunakan simpul-simpul tersebut untuk menjalankan bagian komputasi tersebut, dan melihat bahwa `S[i]` yang dihasilkan tidak sesuai dengan `S[i]` yang diberikan. + +Serangan lain yang lebih canggih melibatkan penambang jahat yang mempublikasikan blok yang tidak lengkap, sehingga informasi lengkap bahkan tidak ada untuk menentukan apakah blok-blok tersebut valid atau tidak. Solusi untuk ini adalah protokol tantangan-respons: simpul verifikasi mengeluarkan "tantangan" dalam bentuk indeks transaksi target, dan saat menerima sebuah blok, simpul ringan memperlakukan blok tersebut sebagai tidak dapat dipercaya hingga simpul lain, baik penambang atau verifikator lainnya, memberikan sebagian simpul Patricia sebagai bukti validitas. + +## Kesimpulan {#conclusion} + +Protokol Ethereum awalnya diusulkan sebagai versi yang ditingkatkan dari mata uang kripto, yang menyediakan fitur-fitur canggih seperti escrow di rantai blok, batas penarikan, kontrak keuangan, pasar perjudian, dan sejenisnya melalui bahasa pemrograman yang sangat umum. Protokol Ethereum tidak secara langsung "mendukung" aplikasi mana pun, tetapi adanya bahasa pemrograman yang Turing lengkap berarti bahwa kontrak sembarang dapat teoretis dibuat untuk jenis transaksi atau aplikasi apa pun. Namun, hal yang lebih menarik tentang Ethereum adalah bahwa protokol Ethereum jauh melampaui sekadar sistem mata uang. Protokol seputar penyimpanan berkas terdesentralisasi, komputasi terdesentralisasi, dan pasar prediksi terdesentralisasi, di antara puluhan konsep lainnya, berpotensi meningkatkan efisiensi industri komputasi secara signifikan, serta memberikan dorongan besar kepada protokol peer-to-peer lainnya dengan menambahkan lapisan ekonomi untuk pertama kalinya. Terakhir, ada juga berbagai aplikasi yang sama sekali tidak berhubungan dengan uang. + +Konsep dari fungsi transisi keadaan sembarang yang diimplementasikan oleh protokol Ethereum memberikan potensi platform yang unik; daripada menjadi protokol tertutup dengan tujuan tunggal yang dimaksudkan untuk sejumlah aplikasi tertentu dalam penyimpanan data, perjudian, atau keuangan, Ethereum dirancang sebagai protokol terbuka, dan kami percaya bahwa ia sangat cocok untuk menjadi lapisan dasar untuk sejumlah besar protokol finansial dan non-finansial dalam beberapa tahun mendatang. + +## Catatan dan Bacaan Lebih Lanjut {#notes-and-further-reading} + +### Catatan {#notes} + +1. Seorang pembaca yang berpengalaman mungkin akan memperhatikan bahwa sebenarnya alamat Bitcoin adalah hash dari kunci publik kurva eliptik, bukan kunci publik itu sendiri. Namun, sebenarnya adalah istilah kriptografi yang sah untuk merujuk pada pubkey hash sebagai kunci publik itu sendiri. Hal ini karena kriptografi Bitcoin dapat dianggap sebagai algoritma tanda tangan digital khusus, di mana kunci publik terdiri dari hash dari ECC pubkey, tanda tangan terdiri dari ECC pubkey yang digabungkan dengan tanda tangan ECC, dan algoritma verifikasi melibatkan pemeriksaan ECC pubkey dalam tanda tangan terhadap hash ECC pubkey yang diberikan sebagai kunci publik, dan kemudian memverifikasi tanda tangan ECC terhadap ECC pubkey. +2. Secara teknis, rata-rata dari 11 blok sebelumnya. +3. Secara internal, angka 2 dan "CHARLIE" keduanya merupakan angka[fn3](#notes), dengan yang terakhir Big-endian dalam representasi basis 256 berurutan. Angka dapat setidaknya 0 dan paling banyak 2256-1. + +### Bacaan Lebih Lanjut {#further-reading} + +1. [Nilai intrinsik](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/) +2. [Properti pintar](https://en.bitcoin.it/wiki/Smart_Property) +3. [Kontrak pintar](https://en.bitcoin.it/wiki/Contracts) +4. [B-money](http://www.weidai.com/bmoney.txt) +5. [Bukti kerja yang dapat digunakan kembali](https://nakamotoinstitute.org/finney/rpow/) +6. [Mengamankan hak properti dengan otoritas pemilik](https://nakamotoinstitute.org/secure-property-titles/) +7. [Laporan resmi Bitcoin](http://bitcoin.org/bitcoin.pdf) +8. [Namecoin](https://namecoin.org/) +9. [Segitiga Zooko](https://wikipedia.org/wiki/Zooko's_triangle) +10. [Kertas putih koin berwarna](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit) +11. [Kertas putih Mastercoin](https://github.com/mastercoin-MSC/spec) +12. [Perusahaan otonom terdesentralisasi, Majalah Bitcoin](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/) +13. [Verifikasi pembayaran yang disederhanakan](https://en.bitcoin.it/wiki/Scalability#Simplified_payment_verification) +14. [Pohon Merkle](https://wikipedia.org/wiki/Merkle_tree) +15. [Pohon Patricia](https://wikipedia.org/wiki/Patricia_tree) +16. [GHOST](https://eprint.iacr.org/2013/881.pdf) +17. [StorJ dan Agen Otonom, Jeff Garzik](http://garzikrants.blogspot.ca/2013/01/storj-and-bitcoin-autonomous-agents.html) +18. [Mike Hearn tentang Properti Pintar pada Festival Turing](https://www.youtube.com/watch?v=MVyv4t0OKe4) +19. [RLP Ethereum](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP) +20. [Pohon Merkle Patricia Ethereum](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree) +21. [Peter Todd tentang pohon jumlah Merkle](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/) + +_Untuk riwayat kertas putih, lihat [wiki ini](https://github.com/ethereum/wiki/blob/old-before-deleting-all-files-go-to-wiki-wiki-instead/old-whitepaper-for-historical-reference.md)._ + +_Ethereum, seperti kebanyakan proyek perangkat lunak sumber terbuka yang digerakkan oleh komunitas, telah berkembang sejak peluncuran pertamanya. Untuk mempelajari tentang pengembangan Ethereum terkini, dan bagaimana perubahan protokol dibuat, kami menyarankan [panduan ini](/learn/)._ diff --git a/src/content/translations/it/community/code-of-conduct/index.md b/src/content/translations/it/community/code-of-conduct/index.md new file mode 100644 index 00000000000..4e20dda63e7 --- /dev/null +++ b/src/content/translations/it/community/code-of-conduct/index.md @@ -0,0 +1,75 @@ +--- +title: Codice di condotta +description: Gli standard di base che ci impegniamo a rispettare negli spazi di ethereum.org. +lang: it +--- + +## Missione {#mission} + +Sviluppare e mantenere l'hub più completo ed accessibile di conoscenza Ethereum. + +## Valori {#values} + +La community di ethereum.org si impegna ad essere: + +- istruttiva, con l'obiettivo di aiutare tutti a comprendere Ethereum +- inclusiva +- accessibile +- basata sulla community +- incentrata sulla tecnologia sottostante e sui casi d'uso di Ethereum +- incentrata sui concetti e sui principi di progettazione di Ethereum + +## Cosa non siamo {#what-we-are-not} + +- Il sito web di Ethereum Foundation +- Una piattaforma per promuovere investimenti o profitti di qualsiasi tipo +- Una piattaforma per valorizzare o appoggiare singoli progetti o organizzazioni +- Una DEX, CEX o qualsiasi altra forma di piattaforma finanziaria +- Una piattaforma che fornisce consulenza finanziaria o legale di qualsiasi tipo + +## Codice di condotta {#code-of-conduct} + +### Impegno {#pledge} + +La partecipazione aperta è il cuore dell'etica di ethereum.org. Siamo un sito web e una community mantenuta da migliaia di collaboratori, e questo è possibile solo se manteniamo un ambiente accogliente e partecipativo. A tal fine, i collaboratori di questo sito si impegnano a mantenere un ambiente privo di vessazioni per tutti i partecipanti su tutte le piattaforme e gli spazi della community di ethereum.org. La community di ethereum.org accoglie e apprezza chiunque voglia partecipare in un modo costruttivo e amichevole, a prescindere da fattori come età, disabilità, etnia, caratteristiche sessuali, identità di genere, livello di esperienza, area di competenza, istruzione, stato socio-economico, nazionalità, aspetto personale, razza, religione o qualsiasi altra dimensione di diversità. + +### Ambito di applicazione {#scope} + +Questo Codice di condotta si applica a tutti gli spazi di ethereum.org (come GitHub, Discord, Figma, Crowdin, Twitter e altre piattaforme online) e si applica anche quando la community è rappresentata in spazi pubblici nel mondo reale come raduni, conferenze ed eventi. + +### I nostri standard {#our-standards} + +Esempi di comportamenti che contribuiscono a creare un ambiente positivo sono: + +- Utilizzare un linguaggio accogliente e inclusivo +- Essere rispettosi dei diversi punti di vista e delle diverse esperienze +- Accettare con grazia e/o fornire con empatia critiche costruttive +- Agire con calma e professionalità nella risoluzione di conflitti o disaccordi +- Mostrare empatia e tolleranza verso gli altri membri della community +- Incoraggiare e amplificare nuove voci nella community + +Esempi di comportamenti inaccettabili da parte dei partecipanti sono: + +- Violenza fisica, minaccia di violenza fisica o incitamento alla violenza fisica di qualsiasi tipo +- Utilizzare un linguaggio o un immaginario sessualizzato o imporre attenzioni sessuali indesiderate +- Fingersi un'altra persona o dichiarare in altro modo disonesto l'affiliazione a una persona o a un'organizzazione. +- Trolling, commenti offensivi/dispregiativi e attacchi personali o politici +- Molestare altri membri della community in canali pubblici o privati +- Pubblicare informazioni private altrui, come un indirizzo fisico o elettronico, senza un'autorizzazione esplicita +- Ingegneria sociale, truffa o manipolazione di altri membri della comunity +- Promuovere investimenti, token, progetti o qualsiasi altra cosa per un guadagno personale monetario o non monetario +- Spammare i server con contenuti fuori tema +- Ignorare le richieste o gli avvertimenti dei moderatori della community +- Altri comportamenti che potrebbero essere ragionevolmente considerati inappropriati in un contesto professionale + +### Segnalazione {#reporting} + +Le violazioni del codice di condotta saranno normalmente visibili alla community, poiché cerchiamo di fare tutto in canali aperti e pubblici, consentendo ai membri della community di autoregolarsi. + +Tuttavia, se si verifica qualcosa che si ritiene necessiti di attenzione, è possibile sollevare la questione con qualcuno che ha un ruolo di moderazione (ad es. una guida di Discord) in modo che possa aiutare a indagare e mettere in atto la risposta appropriata. + +Quando si segnala, includere il maggior numero di dettagli possibile, compresi esempi specifici e indicatori ora. Ciò contribuirà a garantire un risultato imparziale. + +### Conseguenze {#enforcement} + +A seconda della gravità, le persone che violano il codice di condotta possono ricevere avvertimenti, o essere banditi in modo temporaneo o permanente dalle community di ethereum.org. diff --git a/src/content/translations/it/community/get-involved/index.md b/src/content/translations/it/community/get-involved/index.md index 760a05e692a..c7c8d27ab6a 100644 --- a/src/content/translations/it/community/get-involved/index.md +++ b/src/content/translations/it/community/get-involved/index.md @@ -8,6 +8,8 @@ lang: it La community di Ethereum include le persone con diverse esperienze e serie di competenze. Che tu sia uno sviluppatore, un artista o un contabile, ci sono molti modi per partecipare. Ecco un elenco di suggerimenti che potrebbero aiutarti ad iniziare. +Inizia leggendo la missione e i valori di ethereum.org nel nostro [codice di condotta](/community/code-of-conduct). + ## Sviluppatori ‍ {#developers} - Scopri e prova Ethereum su [ethereum.org/developers/](/developers/) @@ -21,18 +23,28 @@ La community di Ethereum include le persone con diverse esperienze e serie di co ## Ricercatori & Accademici {#researchers-and-academics} -Hai conoscenze in matematica, crittografia o economia? Potresti essere interessato ad alcuni dei lavori all'avanguardia svolti all'interno dell'ecosistema della rete Ethereum - +Hai conoscenze di matematica, crittografia o economia? Potresti essere interessato ad alcuni dei lavori all'avanguardia svolti all'interno dell'ecosistema di Ethereum: + +- Scrivi o revisiona una proposta di miglioramento di Ethereum (EIP) + - Scrivi una EIP + 1. Manda la tua idea su [Ethereum Magicians](https://ethereum-magicians.org) + 2. Leggi [EIP-1](https://eip.ethereum.org/EIPS/eip-1) - **Sì, questo è _l'intero_ documento.** + 3. Segui le indicazioni nella EIP-1. Fai riferimento a questo documento mentre scrivi la tua bozza. + - Scopri come diventare un [editor di EIP](https://eips.ethereum.org/EIPS/eip-5069) + - Puoi effettuare la revisione delle EIP dei colleghi proprio ora! Vedi [le PR aperte con l'etichetta `e-review`](https://github.com/ethereum/EIPs/pulls?q=is%3Apr+is%3Aopen+label%3Ae-review). Fornisci un feedback tecnico al collegamento `discussion-to`. + - Partecipa alla [Governance EIP](https://github.com/ethereum-cat-herders/EIPIP) + - Unisciti al [Discord Ethereum Cat Herders](https://discord.io/EthCatHerders) + - [Maggiori informazioni sulle EIP](/eips/) - [Challenges.ethereum.org](https://challenges.ethereum.org/) - una serie di premi di ricerca di alto valore dove puoi guadagnare fino a >$100.000 USD -- [Ethresearch.ch](https://ethresear.ch) - Il forum principale di Ethereum per la ricerca, e il forum più influente al mondo per la criptoeconomia -- [EF Research AMA](https://old.reddit.com/r/ethereum/comments/vrx9xe/ama_we_are_ef_research_pt_8_07_july_2022): Una serie continuativa di domande e risposte, con i ricercatori. Ogni volta che si apre una parte successiva, chiunque può pubblicare domande. -- [Lista dei desideri del programma di supporto per gli ecosistemi](https://esp.ethereum.foundation/wishlist/) - aree di ricerca in cui il programma di supporto per gli ecosistemi Ethereum sta cercando attivamente domande di sovvenzione +- [Ethresearch.ch](https://ethresear.ch) - il forum principale di Ethereum per la ricerca, e il forum più influente al mondo per la criptoeconomia +- [EF Research AMA](https://old.reddit.com/r/ethereum/comments/vrx9xe/ama_we_are_ef_research_pt_8_07_july_2022) - una serie continuativa di domande e risposte con i ricercatori. Ogni volta che si apre una parte successiva, chiunque può pubblicare domande. +- [Lista dei desideri del Programma di supporto dell'ecosistema](https://esp.ethereum.foundation/wishlist/) - aree di ricerca in cui il Programma di supporto dell'ecosistema Ethereum sta cercando attivamente domande di sovvenzione [Esplora altre aree di ricerca attive](/community/research/). ## Competenze non tecniche {#non-technical} -Se non sei uno sviluppatore, può essere difficile sapere da dove iniziare all’interno di Ethereum. Di seguito alcuni suggerimenti, insieme alle risorse per ambienti professionali specifici. +Se non sei uno sviluppatore, può essere difficile sapere da dove iniziare all’interno di Ethereum. Di seguito alcuni suggerimenti, insieme alle risorse per formazioni professionali specifiche. ### Organizza un incontro nella tua città {#meetups} @@ -105,7 +117,7 @@ L'ecosistema Ethereum ha come missione di finanziare beni pubblici e progetti di ## Entra a far parte di una DAO {#decentralized-autonomous-organizations-daos} -Le "DAO" sono organizzazioni autonome decentralizzate (Decentralized Autonomous Organizations). Questi gruppi sfruttano la tecnologia di Ethereum per facilitare organizzazione e collaborazione. Ad esempio, per il controllo dei membri, il voto su proposte o la gestione delle risorse comuni. Mentre le DAO sono ancora sperimentali, ti offrono l'opportunità di trovare gruppi con cui ti identifichi, trovare collaboratori, ed aumentare il tuo impatto sulla community di Ethereum. [Maggiori informazioni sulle DAO](/dao/) +Le "DAO" sono organizzazioni autonome decentralizzate. Questi gruppi sfruttano la tecnologia di Ethereum per facilitare organizzazione e collaborazione. Ad esempio, per il controllo delle adesioni, il voto su proposte o la gestione delle risorse comuni. Benché siano ancora sperimentali, le DAO offrono l'opportunità di trovare gruppi con cui ti identifichi, trovare collaboratori e aumentare il tuo impatto sulla community di Ethereum. [Maggiori informazioni sulle DAO](/dao/) - [DAOSquare](https://www.daosquare.io) [@DAOSquare](https://twitter.com/DAOSquare) - _Promuovi il concetto di DAO in campo non tecnico e aiuta le persone a creare valore tramite una DAO._ - [Developer DAO](https://www.developerdao.com/) [@developer_dao](https://twitter.com/developer_dao) - _Community di creatori che credono nella proprietà collettiva di internet_ @@ -122,3 +134,5 @@ Le "DAO" sono organizzazioni autonome decentralizzate (Decentralized Autonomous - [ΜΓΔ](https://metagammadelta.com/) (Meta Gamma Delta) [@metagammadelta](https://twitter.com/metagammadelta) - _Progetti guidati da donne_ - [MolochDAO](https://molochdao.com) [@MolochDAO](https://twitter.com/MolochDAO) - _Community concentrata sul finanziamento dello sviluppo di Ethereum_ - [Raid Guild](https://raidguild.org) [@RaidGuild](https://twitter.com/RaidGuild) - _Collettivo di costruttori di Web3_ + +Ricordati di rispettare il [codice di condotta](/community/code-of-conduct) di ethereum.org ogni volta e in qualunque modo contribuisci a ethereum.org! diff --git a/src/content/translations/it/community/grants/index.md b/src/content/translations/it/community/grants/index.md index 77f6117deb6..36700de7138 100644 --- a/src/content/translations/it/community/grants/index.md +++ b/src/content/translations/it/community/grants/index.md @@ -35,10 +35,11 @@ Questi progetti hanno creato le proprie sovvenzioni per progetti volti a svilupp - [Lido Ecosystem Grants Organisation (LEGO)](https://lego.lido.fi/) – _Ecosistema finanziario di [Lido](https://lido.fi/)_ - [MetaMask Program](https://metamaskgrants.org/): _DAO di sovvenzioni operata dai dipendenti di [MetaMask](https://metamask.io/)_ - [mStable Grants Program](https://docs.mstable.org/advanced/grants-program) - _Community [mStable](https://mstable.org/)_ -- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) – _Ecosistema [The Graph](https://thegraph.com/)_ -- [UMA Grants Program](https://grants.umaproject.org/): _Supporto per sviluppatori [UMA](https://umaproject.org/)_ -- [Uniswap Grants Program](https://www.unigrants.org/) – _Community [Uniswap](https://uniswap.org/)_ -- [Sovvenzioni Web3](https://web3grants.net): _Un elenco completo di programmi di sovvenzione relativi a web3/cripto_ +- [Programma di sovvenzioni della rete di SKALE](https://skale.space/developers#grants): _ecosistema della [rete di SKALE](https://skale.space/)_ +- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) – _ecosistema di [The Graph](https://thegraph.com/)_ +- [Programma di sovvenzioni UMA](https://grants.umaproject.org/): _supporto per sviluppatori di [UMA](https://umaproject.org/)_ +- [Programma di sovvenzioni di Uniswap](https://www.unigrants.org/) – _Comunità di [Uniswap](https://uniswap.org/)_ +- [Sovvenzioni Web3](https://web3grants.net): _un elenco completo di programmi di sovvenzione relativi a web3/cripto_ ## Finanziamento quadratico {#quadratic-funding} diff --git a/src/content/translations/it/community/online/index.md b/src/content/translations/it/community/online/index.md index a66f9ffb06e..be0233193cd 100644 --- a/src/content/translations/it/community/online/index.md +++ b/src/content/translations/it/community/online/index.md @@ -24,13 +24,13 @@ Centinaia di migliaia di appassionati di Ethereum si riuniscono in questi forum Ethereum Cat Herders - community orientata all'offerta di assistenza per la gestione dei progetti per lo sviluppo di Ethereum Ethereum Hackers - Chat Discord gestita da ETHGlobal: una community online per gli hacker di Ethereum in tutto il mondo CryptoDevs - Community Discord focalizzata sullo sviluppo di Ethereum -EthStaker Discord - community orientata all'offerta di assistenza per la gestione dei progetti per lo sviluppo di Ethereum +EthStaker Discord: guida, istruzione, assistenza e risorse gestite dalla comunità per gli staker esistenti e potenziali Ethereum.org website team - date un'occhiata e chattate sullo sviluppo e la progettazione di ethereum.org con il team e le persone della community -Discord di Matos: community dei creatori di web3; un luogo di incontro per costruttori, figure industriali e appassionati di Ethereum. Siamo appassionati di sviluppo, progettazione e cultura del web3. Vieni a costruire con noi. -Solidity Gitter: chat per lo sviluppo in Solidity (Gitter) -Solidity Matrix: chat per lo sviluppo in Solidity (Matrix) -Ethereum Stack Exchange: _forum di domande e risposte_ -Peeranha: _forum decentralizzato di domande e risposte_ +Matos Discord - community dei creatori di web3; un luogo di incontro per costruttori, figure industriali e appassionati di Ethereum. Siamo appassionati di sviluppo, progettazione e cultura del web3. Vieni a costruire con noi. +Solidity Gitter - chat per lo sviluppo in solidity (Gitter) +Solidity Matrix - chat per lo sviluppo in solidity (Matrix) +Ethereum Stack Exchange - _forum di domande e risposte_ +Peeranha _-forum decentralizzato di domande e risposte_ ## YouTube e Twitter {#youtube-and-twitter} diff --git a/src/content/translations/it/community/research/index.md b/src/content/translations/it/community/research/index.md new file mode 100644 index 00000000000..261318cf6a6 --- /dev/null +++ b/src/content/translations/it/community/research/index.md @@ -0,0 +1,396 @@ +--- +title: Aree attive di ricerca su Ethereum +description: Esplora le diverse aree della ricerca aperta e scopri come partecipare. +lang: it +--- + +# Aree attive di ricerca su Ethereum {#active-areas-of-ethereum-research} + +Uno dei principali punti di forza di Ethereum è che è costantemente migliorata da una community attiva di ricerca e di ingegneria. Molte persone entusiaste e competenti in tutto il mondo vorrebbero applicarsi alle questioni in sospeso di Ethereum, ma non è sempre facile scoprire quali siano queste questioni. Questa pagina illustra le principali aree di ricerca attive come guida approssimativa all'avanguardia di Ethereum. + +## Come funziona la ricerca su Ethereum {#how-ethereum-research-works} + +La ricerca su Ethereum è aperta e trasparente e incarna i principi della [Scienza Decentralizzata (DeSci)](https://hackernoon.com/desci-decentralized-science-as-our-chance-to-recover-the-real-science). La cultura è quella di rendere gli strumenti e i risultati della ricerca il più possibile aperti e interattivi, ad esempio attraverso i notebook eseguibili. La ricerca su Ethereum si muove rapidamente, e le nuove scoperte vengono pubblicate e discusse apertamente su forum come [ethresear.ch](https://ethresear.ch/) piuttosto che raggiungere la community attraverso le pubblicazioni tradizionali dopo cicli di revisione tra colleghi. + +## Risorse di ricerca generali {#general-research-resources} + +Indipendentemente dall'argomento specifico, è possibile trovare una grande quantità di informazioni sulla ricerca su Ethereum su [ethresear.ch](https://ethresear.ch) e sul [canale Discord Eth R&D](https://discord.gg/qGpsxSA). Questi sono i luoghi principali in cui i ricercatori di Ethereum discutono le idee e le opportunità di sviluppo più recenti. + +Questo report pubblicato nel maggio 2022 da [DelphiDigital](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum) fornisce una buona panoramica della tabella di marcia di Ethereum. + +## Fonti di finanziamento {#sources-of-funding} + +Puoi partecipare alla ricerca su Ethereum ed essere pagata/o per questo! Per esempio, [la Ethereum Foundation](/foundation/) ha recentemente condotto un [round di finanziamento per le Sovvenzioni accademiche](https://esp.ethereum.foundation/academic-grants). Puoi trovare informazioni sulle opportunità di finanziamento attive e in arrivo sulla [pagina delle sovvenzioni connesse a Ethereum](/community/grants/). + +## Ricerca sul protocollo {#protocol-research} + +La ricerca sul protocollo riguarda il livello di base di Ethereum, ovvero l'insieme di regole che definiscono come i nodi si connettono, comunicano, scambiano e memorizzano i dati di Ethereum e raggiungono il consenso sullo stato della blockchain. La ricerca sul protocollo si divide in due categorie di livello superiore: consenso ed esecuzione. + +### Consenso {#consensus} + +La ricerca sul consenso riguarda il [meccanismo di proof-of-stake di Ethereum](/developers/docs/consensus-mechanisms/pos/). Alcuni esempi di argomenti di ricerca sul consenso sono: + +- identificare e correggere le vulnerabilità; +- quantificare la sicurezza criptoeconomica; +- aumentare la sicurezza o le prestazioni delle implementazioni del client; +- e lo sviluppo di client leggeri. + +Oltre alla ricerca prospettica, si stanno studiando alcune riprogettazioni fondamentali del protocollo, come la finalità del singolo slot, per consentire miglioramenti significativi a Ethereum. Inoltre, l'efficienza, la sicurezza e il monitoraggio del networking peer-to-peer tra client di consenso sono altri importanti temi di ricerca. + +#### Letture di base {#background-reading} + +- [Introduzione al proof-of-stake](/developers/docs/consensus-mechanisms/pos/) +- [Documento Casper-FFG](https://arxiv.org/abs/1710.09437) +- [Spiegazione di Casper-FFG](https://arxiv.org/abs/1710.09437) +- [Documento Gasper](https://arxiv.org/abs/2003.03052) + +#### Ricerca recente {#recent-research} + +- [Consenso di ethresear.ch](https://ethresear.ch/c/consensus/29) +- [Dilemma Disponibilità/Finalità](https://arxiv.org/abs/2009.04987) +- [Finalità dello spazio singolo](https://ethresear.ch/t/a-model-for-cumulative-committee-based-finality/10259) +- [Separazione proponente-sviluppatore](https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance) + +### Esecuzione {#execution} + +Il livello di esecuzione si occupa dell'esecuzione delle transazioni, dell'esecuzione della [macchina virtuale di Ethereum (EVM)](/developers/docs/evm/) e della generazione dei carichi utili di esecuzione da passare al livello di consenso. Ci sono molte aree di ricerca attive, tra cui: + +- costruzione del supporto per client leggeri; +- ricerca dei limiti di carburante; +- e l'incorporazione di nuove strutture di dati (ad es. diagrammi di Verkle). + +#### Letture di base {#background-reading-1} + +- [Introduzione alla EVM](/developers/docs/evm) +- [Livello di esecuzione di ethresear.ch](https://ethresear.ch/c/execution-layer-research/37) + +#### Ricerca recente {#recent-research-1} + +- [Ottimizzazioni del database](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/db_faq.md) +- [Scadenza dello stato](https://notes.ethereum.org/@vbuterin/state_expiry_eip) +- [Percorsi verso la scadenza dello stato](https://hackmd.io/@vbuterin/state_expiry_paths) +- [Proposta riguardo Verkle e alla scadenza dello stato](https://notes.ethereum.org/@vbuterin/verkle_and_state_expiry_proposal) +- [Gestione della cronologia](https://eips.ethereum.org/EIPS/eip-4444) +- [Alberi di Verkle](https://vitalik.ca/general/2021/06/18/verkle.html) +- [Campionamento della disponibilità dei dati](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding) + +## Sviluppo del client {#client-development} + +I client di Ethereum sono implementazioni del protocollo di Ethereum. Lo sviluppo del client trasforma i risultati della ricerca sul protocollo in realtà incorporandoli in questi client. Lo sviluppo del client include l'aggiornamento delle specifiche del client così come la creazione di specifiche implementazioni. + +È necessario un nodo di Ethereum per eseguire due pezzi di software: + +1. un client di consenso per tenere traccia della testa della blochchain, dei blocchi di gossip e per gestire la logica di consenso +2. un client di esecuzione per supportare la macchina virtuale di Ethereum ed eseguire le transazioni e i contratti intelligenti + +Per maggiori dettagli sui nodi e sui client e per un elenco di tutte le implementazioni dei client correnti, consulta la [pagina dei nodi e dei client](/developers/docs/nodes-and-clients/). Puoi anche trovare una cronologia di tutti gli aggiornamenti di Ethereum nella [pagina della cronologia](/history/). + +### Client di esecuzione {#execution-clients} + +- [Specifiche dei client di esecuzione](https://github.com/ethereum/execution-specs) +- [Specifiche delle API di esecuzione](https://github.com/ethereum/execution-apis) + +### Client di consenso {#consensus-clients} + +- [Specifiche dei client di consenso](https://github.com/ethereum/consensus-specs) +- [Specifiche delle API Beacon](https://ethereum.github.io/beacon-APIs/#/Beacon/getStateRoot) + +## Ridimensionamento e prestazioni {#scaling-and-performance} + +Il ridimensionamento di Ethereum è una grande area di interesse per i ricercatori Ethereum. Gli approcci correnti prevedono di scaricare le transazioni nei rollup e di renderle più economiche possibile usando i blob di dati. Le informazioni introduttive sul ridimensionamento di Ethereum sono disponibili sulla nostra [pagina sul ridimensionamento](/developers/docs/scaling). + +### Livello 2 {#layer-2} + +Attualmente esistono diversi protocolli di Livello 2 che ridimensionano Ethereum utilizzando tecniche diverse per l'esecuzione in lotto delle transazioni e per fissarle sul Livello 1 di Ethereum. Si tratta di un argomento in rapida crescita con un grande potenziale di ricerca e sviluppo. + +#### Letture di base {#background-reading-2} + +- [Introduzione al livello 2](/layer-2/) +- [Polynya: rollup, DA e le catene modulari](https://polynya.medium.com/rollups-data-availability-layers-modular-blockchains-introductory-meta-post-5a1e7a60119d) + +#### Ricerca recente {#recent-research-2} + +- [L'ordinamento equo di Arbitrum per i sequenziatori](https://eprint.iacr.org/2021/1465) +- [Livello 2 di ethresear.ch](https://ethresear.ch/c/layer-2/32) +- [Tabella di marcia incentrata sui rollup](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) +- [L2Beat](https://l2beat.com/) + +### Bridge {#bridges} + +Una particolare area di Livello 2 che richiede maggior ricerca e sviluppo è quella dei ponti sicuri e performanti. Questa include i ponti tra diversi Livelli 2 e ponti tra Livello 1 e Livello 2. Si tratta di un'area di ricerca particolarmente importante perché i ponti sono comunemente presi di mira dagli hacker. + +#### Letture di base {#background-reading-3} + +- [Introduzione ai ponti della blockchain](/bridges/) +- [Vitalik riguardo ai ponti](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) +- [Articolo sui ponti blockchain](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) +- [Il valore bloccato nei ponti]() + +#### Ricerca recente {#recent-research-3} + +- [Validare i ponti](https://stonecoldpat.github.io/images/validatingbridges.pdf) + +### Sharding {#sharding} + +Lo sharding della blockchain di Ethereum fa parte della tabella di marcia del suo sviluppo da lungo tempo. Tuttavia, nuove soluzioni di ridimensionamento come il "Danksharding" sono attualmente al centro della discussione. + +#### Letture di base {#background-reading-4} + +- [Note sul Proto-Danksharding](https://notes.ethereum.org/@vbuterin/proto_danksharding_faq) +- [Video di Bankless sul Danksharding](https://www.youtube.com/watch?v=N5p0TB77flM) +- [Compendio di ricerca sullo sharding di Ethereum](https://notes.ethereum.org/@serenity/H1PGqDhpm?type=view) +- [Danksharding (Polynya)](https://polynya.medium.com/danksharding-36dc0c8067fe) + +#### Ricerca recente {#recent-research-4} + +- [EIP-4844: Proto-Danksharding](https://eips.ethereum.org/EIPS/eip-4844) +- [Vitalik riguardo allo sharding e sulla campionatura della disponibilità dei dati](https://hackmd.io/@vbuterin/sharding_proposal) + +### Hardware {#hardware} + +L'[esecuzione di nodi](/developers/docs/nodes-and-clients/run-a-node/) su hardware modesti è fondamentale per mantenere Ethereum decentralizzato. Pertanto, la ricerca attiva sulla minimizzazione dei requisiti hardware per l'esecuzione dei nodi è un'area di ricerca importante. + +#### Letture di base {#background-reading-5} + +- [Ethereum su ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/) + +#### Ricerca recente {#recent-research-5} + +- [ecdsa sui FGPA](https://ethresear.ch/t/does-ecdsa-on-fpga-solve-the-scaling-problem/6738) + +## Sicurezza {#security} + +La sicurezza è un argomento ampio che può includere la prevenzione di spam/truffe, la sicurezza dei portafogli, la sicurezza dell'hardware, la sicurezza cripto-economica, la ricerca di bug e il test di applicazioni e software per client e la gestione delle chiavi. Contribuire alla conoscenza di queste aree aiuterà a stimolarne l'adozione a livello generale. + +### Crittografia & ZKP {#cryptography--zkp} + +Le prove di conoscenza zero (ZKP) e la crittografia sono fondamentali per creare privacy e sicurezza in Ethereum e nelle sue applicazioni. La conoscenza zero è uno ambito relativamente giovane ma in rapida evoluzione, con molte opportunità di ricerca e sviluppo aperte. Alcune possibilità includono lo sviluppo di implementazioni più efficienti dell'[algoritmo di hashing Keccak](https://hackmd.io/sK7v0lr8Txi1bgION1rRpw?view#Overview), la ricerca di impegni polinomiali migliori di quelli attualmente esistenti o la riduzione del costo dei circuiti ECDSA di generazione delle chiavi pubbliche e di verifica delle firme. + +#### Letture di base {#background-reading-6} + +- [blog di 0xparc](https://0xparc.org/blog) +- [zkp.science](https://zkp.science/) +- [podcast su Conoscenza zero](https://zeroknowledge.fm/) + +#### Ricerca recente {#recent-research-6} + +- [Recenti progressi nella crittografia curva ellittica](https://ethresear.ch/t/the-ec-fft-algorithm-without-elliptic-curve-and-isogenies/11346) +- [ZK di Ethresear.ch](https://ethresear.ch/c/zk-s-nt-arks/13) + +### Portafogli {#wallets} + +I portafogli Ethereum possono essere estensioni del browser, applicazioni desktop e mobili o contratti intelligenti su Ethereum. Sono in corso ricerche sui portafogli con recupero sociale che riducono alcuni dei rischi associati alla gestione delle chiavi da parte dei singoli utenti. Allo sviluppo dei portafogli si associa la ricerca di forme alternative di astrazione del conto, un'importante area di ricerca nascente. + +#### Letture di base {#background-reading-7} + +- [Introduzione ai portafogli](/wallets/) +- [Introduzione alla sicurezza dei portafogli](/security/) +- [Sicurezza di ethresear.ch](https://ethresear.ch/tag/security) +- [EPI-2938 Astrazione del conto](https://eips.ethereum.org/EIPS/eip-2938) +- [EIP-4337 Astrazione del conto](https://eips.ethereum.org/EIPS/eip-4337) + +#### Ricerca recente {#recent-research-7} + +- [Portafogli di contratti intelligenti incentrati sulla convalida](https://ethereum-magicians.org/t/validation-focused-smart-contract-wallets/6603) +- [Il futuro dei conti](https://ethereum-magicians.org/t/validation-focused-smart-contract-wallets/6603) +- [EIP-3074 Opcode AUTH e AUTHCALL](https://eips.ethereum.org/EIPS/eip-3074) +- [Pubblicazione di codice a un indirizzo EOA](https://eips.ethereum.org/EIPS/eip-5003) + +## Community, educazione e partecipazione {#community-education-and-outreach} + +Introdurre nuovi utenti a Ethereum richiede nuove risorse educative e nuovi approcci alla partecipazione. Questo potrebbe includere post di blog e articoli, libri, podcast, meme, risorse didattiche, eventi e qualsiasi altra cosa che dia vita alla community, accolga i nuovi arrivati e istruisca le persone riguardo a Ethereum. + +### Esperienza e interfaccia utente {#uxui} + +Per coinvolgere più persone in Ethereum, l'ecosistema deve migliorare l'UX/UI (esperienza e interfaccia utente). Ciò richiederà ai progettisti e agli esperti di prodotto di riesaminare il design di portafogli e applicazioni. + +#### Letture di base {#background-reading-8} + +- [UX/UI di ethresear.ch](https://ethresear.ch/c/ui-ux/24) + +#### Ricerca recente {#recent-research-8} + +- [Discord sulla progettazione Web3](https://discord.gg/FsCFPMTSm9) +- [Principi di progettazione Web3](https://www.web3designprinciples.com/) +- [Discussione sulla UX su Ethereum Magicians](https://ethereum-magicians.org/t/og-council-ux-follow-up/9032/3) + +### Economia {#economics} + +La ricerca economica in Ethereum segue in linea di massima due approcci: convalidare la sicurezza dei meccanismi che si basano su incentivi economici ("microeconomia") e analizzare i flussi di valore tra protocolli, applicazioni e utenti ("macroeconomia"). Esistono complessi fattori cripto-economici relativi alla risorsa nativa di Ethereum (ether) e ai token costruiti su di essa (ad esempio gli NFT e i token ERC20). + +#### Letture di base {#background-reading-9} + +- [Robust Incentives Group](https://ethereum.github.io/rig/) +- [Workshop ETHconomics a Devconnect](https://www.youtube.com/playlist?list=PLTLjFJ0OQOj5PHRvA2snoOKt2udVsyXEm) + +#### Ricerca recente {#recent-research-9} + +- [Analisi empirica di EIP1559](https://arxiv.org/abs/2201.05574) +- [Equilibrio dell'offerta circolante](https://ethresear.ch/t/circulating-supply-equilibrium-for-ethereum-and-minimum-viable-issuance-during-the-proof-of-stake-era/10954) +- [Quantificare il MEV: quanto è scura la foresta?](https://arxiv.org/abs/2101.05511) + +### Mercati degli spazi di blocco e delle commissioni {#blockspace-fee-markets} + +I mercati del blockspace governano l'inclusione delle transazioni dell'utente finale, sia direttamente su Ethereum (Livello 1) sia su reti collegate da un ponte, ad es. i rollup (Livello 2). Su Ethereum, le transazioni sono inviate al mercato delle commissioni distribuito all'interno del protocollo come EIP-1559, proteggendo la catena dallo spam e dalla congestione dei prezzi. Su entrambi i livelli, le transazioni possono produrre esternalità, note come Valore estraibile massimo (MEV), che inducono la creazione di nuove strutture di mercato per cogliere o gestire tali esternalità. + +#### Letture di base {#background-reading-10} + +- [Progettazione del meccanismo delle commissioni sulle transazioni per la blockchain di Ethereum: un'analisi economica di EIP-1559 (Tim Roughgarden, 2020)](https://timroughgarden.org/papers/eip1559.pdf) +- [Simulazioni di EIP-1559 (Robust Incentives Group)](https://ethereum.github.io/abm1559) +- [Economia del rollup dalle basi](https://barnabe.substack.com/p/understanding-rollup-economics-from?utm_source=url) +- [Flash Boys 2.0: frontrunning, riordinamento delle transazioni e instabilità del consenso nelle borse decentralizzate](https://arxiv.org/abs/1904.05234) + +#### Ricerca recente {#recent-research-10} + +- [Presentazione video multidimensionale di EIP-1559](https://youtu.be/QbR4MTgnCko) +- [MEV trans-dominio](http://arxiv.org/abs/2112.01472) +- [Aste MEV](https://ethresear.ch/t/mev-auction-auctioning-transaction-ordering-rights-as-a-solution-to-miner-extractable-value/6788) + +### Incentivi per il proof-of-stake {#proof-of-stake-incentives} + +I validatori utilizzano la risorsa nativa di Ethereum (ether) come garanzia contro i comportamenti disonesti. La criptoeconomia di questo meccanismo determina la sicurezza della rete. Validatori esperti possono essere in grado di sfruttare le sfumature del livello d'incentivazione per lanciare attacchi espliciti. + +#### Letture di base {#background-reading-11} + +- [Masterclass sull'economia di Ethereum e il suo modello economico](https://github.com/CADLabs/ethereum-economic-model) +- [Simulazione degli incentivi PoS (Robust Incentives Group)](https://ethereum.github.io/beaconrunner/) + +#### Ricerca recente {#recent-research-11} + +- [Aumento della resistenza alla censura delle transazioni in regime di separazione proponente/costruttore (PBS)](https://notes.ethereum.org/s3JToeApTx6CKLJt8AbhFQ) +- [Tre attacchi a Ethereum PoS](https://arxiv.org/abs/2110.10086) + +### Liquid staking e derivati {#liquid-staking-and-derivatives} + +Il liquid staking consente agli utenti con meno di 32 ETH di ricevere i rendimenti dallo staking scambiando ether con un token che rappresenta l'ether in staking e che può essere utilizzato nella DeFi. Tuttavia, gli incentivi e le dinamiche di mercato associate al liquid staking sono ancora in fase di scoperta, così come i suoi effetti sulla sicurezza di Ethereum (ad es. i rischi di centralizzazione). + +#### Letture di base {#background-reading-12} + +- [Ethresear.ch sul liquid staking](https://ethresear.ch/search?q=liquid%20staking) +- [Lido: La strada verso lo staking di Ethereum senza fiducia](https://blog.lido.fi/the-road-to-trustless-ethereum-staking/) +- [Rocket Pool: Introduzione al protocollo di staking](https://medium.com/rocket-pool/rocket-pool-staking-protocol-part-1-8be4859e5fbd) + +#### Ricerca recente {#recent-research-12} + +- [Gestire i prelievi da Lido](https://ethresear.ch/t/handling-withdrawals-in-lidos-eth-liquid-staking-protocol/8873) +- [Credenziali di prelievo](https://ethresear.ch/t/withdrawal-credential-rotation-from-bls-to-eth1/8722) +- [I rischi dei derivati di liquid staking](https://notes.ethereum.org/@djrtwo/risks-of-lsd) + +## Test {#testing} + +### Verifica formale {#formal-verification} + +La verifica formale consiste nello scrivere codice per verificare che le specifiche del consenso di Ethereum siano corrette e prive di bug. Esiste una versione eseguibile della specifica scritta in Python che richiede manutenzione e sviluppo. Ulteriori ricerche possono contribuire a migliorare l'implementazione di Python della specifica e ad aggiungere strumenti in grado di verificare in modo più robusto la correttezza e di identificare i problemi. + +#### Letture di base {#background-reading-13} + +- [Introduzione alla verifica formale](https://ptolemy.berkeley.edu/projects/embedded/research/vis/doc/VisUser/vis_user/node4.html) +- [Verifica formale (Intel)](https://www.cl.cam.ac.uk/~jrh13/papers/mark10.pdf) + +#### Ricerca recente {#recent-research-13} + +- [Verifica formale del contratto di deposito](https://github.com/runtimeverification/deposit-contract-verification) +- [Verifica formale della specifica della Beacon Chain](https://github.com/runtimeverification/deposit-contract-verification) + +## Scienza dei dati e analisi {#data-science-and-analytics} + +C'è necessità di un maggior numero di strumenti di analisi dei dati e di pannelli di controllo che forniscano informazioni dettagliate sull'attività di Ethereum e sullo stato di salute della rete. + +### Letture di base {#background-reading-14} + +- [Dune Analytics](https://dune.com/browse/dashboards) +- [Pannello di controllo sulla diversità dei client](https://clientdiversity.org/) + +#### Ricerca recente {#recent-research-14} + +- [Analisi dei dati del Robust Incentives Group](https://ethereum.github.io/rig/) + +## Applicazioni e strumenti {#apps-and-tooling} + +Il livello di applicazione supporta un ecosistema eterogeneo di programmi che regolano le transazioni sul livello di base di Ethereum. I team di sviluppo trovano sempre nuovi modi per sfruttare Ethereum per creare versioni componibili, senza permessi e resistenti alla censura di importanti applicazioni Web2 o per creare concetti nativi di Web3 completamente nuovi. Allo stesso tempo, si stanno sviluppando nuovi strumenti che rendono meno complessa la costruzione di dApp su Ethereum. + +### DeFi {#defi} + +La finanza decentralizzata (DeFi) è una delle principali classi di applicazioni costruite su Ethereum. La DeFi mira a creare "Lego di denaro" componibili che consentano agli utenti di memorizzare, trasferire, prestare, prendere in prestito e investire criptorisorse utilizzando contratti intelligenti. La DeFi è un ambito in rapida evoluzione e in continuo aggiornamento. La ricerca di protocolli sicuri, efficienti e accessibili è costantemente necessaria. + +#### Letture di base {#background-reading-15} + +- [DeFi](/defi/) +- [Coinbase: Cosa è la DeFi?](https://www.coinbase.com/learn/crypto-basics/what-is-defi) + +#### Ricerca recente {#recent-research-15} + +- [Finanza decentralizzata, proprietà centralizzata?](https://arxiv.org/pdf/2012.09306.pdf) +- [Optimism: La strada verso le transazioni sub-dollaro](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) + +### DAO {#daos} + +Un caso d'uso di grande impatto per Ethereum è la capacità di organizzarsi in modo decentralizzato attraverso l'uso delle DAO. Ci sono molte ricerche attive su come le DAO su Ethereum possano essere sviluppate e utilizzate per eseguire forme di governance migliorate, come strumento di coordinamento a fiducia minima, ampliando notevolmente le opzioni dei cittadini al di là delle società e delle organizzazioni tradizionali. + +#### Letture di base {#background-reading-16} + +- [Introduzione alle DAO](/dao/) +- [Dao Collective](https://daocollective.xyz/) + +#### Ricerca recente {#recent-research-16} + +- [Mappare l'ecosistema delle DAO](https://www.researchgate.net/publication/358694594_Mapping_out_the_DAO_Ecosystem_and_Assessing_DAO_Autonomy) + +### Strumenti di sviluppo {#developer-tools} + +Gli strumenti per gli sviluppatori di Ethereum stanno rapidamente migliorando. C'è molta ricerca attiva e sviluppo da portare avanti in quest'area generale. + +#### Letture di base {#background-reading-17} + +- [Strumenti organizzati per linguaggio di programmazione](/developers/docs/programming-languages/) +- [Quadri di sviluppo](/developers/docs/frameworks/) +- [Lista di strumenti per sviluppatori del livello di consenso](https://github.com/ConsenSys/ethereum-developer-tools-list) +- [Standard per i token](/developers/docs/standards/tokens/) +- [Biastek: strumenti per Ethereum](https://biastek.com/ethereum-tools/) +- [CryptoDevHub: Strumenti per la EVM](https://cryptodevhub.io/wiki/ethereum-virtual-machine-tools) + +#### Ricerca recente {#recent-research-17} + +- [Eth R&D, canale Discord sugli strumenti per il consenso](https://discordapp.com/channels/595666850260713488/746343380900118528) + +### Oracoli {#oracles} + +Gli oracoli importano dati off-chain sulla blockchain in modo decentralizzato e senza permessi. Ottenere questi dati on-chain consente alle dApp di reagire ai fenomeni del mondo reale, come le fluttuazioni dei prezzi delle risorse del mondo reale, gli eventi delle app off-chain o persino i cambiamenti meteorologici. + +#### Letture di base {#background-reading-18} + +- [Introduzione agli oracoli](/developers/docs/oracles/) + +#### Ricerca recente {#recent-research-18} + +- [Indagine sugli oracoli blockchain](https://arxiv.org/pdf/2004.07140.pdf) +- [White paper di Chainlink](https://chain.link/whitepaper) + +### Sicurezza delle applicazioni {#app-security} + +Gli attacchi su Ethereum generalmente sfruttano le vulnerabilità di singole applicazioni piuttosto che del protocollo stesso. Gli hacker e gli sviluppatori di app sono coinvolti in una battaglia per sviluppare nuovi attacchi e nuove difese. Questo significa che è sempre necessaria un'importante attività di ricerca e sviluppo per mantenere le app sicure dagli hacker. + +#### Letture di base {#background-reading-19} + +- [Rapporto dell'exploit su Wormhole](https://blog.chainalysis.com/reports/wormhole-hack-february-2022/) +- [Elenco dei post-mortem degli attacchi ai contratti Ethereum](https://forum.openzeppelin.com/t/list-of-ethereum-smart-contracts-post-mortems/1191) +- [Notizie di Reckt](https://twitter.com/RektHQ?s=20&t=3otjYQdM9Bqk8k3n1a1Adg) + +#### Ricerca recente {#recent-research-19} + +- [Applicazioni ethresear.ch](https://ethresear.ch/c/applications/18) + +### Stack tecnologico {#technology-stack} + +La decentralizzazione dell'intero stack tecnologico di Ethereum è un'importante area di ricerca. Attualmente, le dapp su Ethereum comunemente hanno alcuni punti di centralizzazione perché si basano su strumenti ed infrastrutture centralizzate. + +#### Letture di base {#background-reading-20} + +- [Stack di Ethereum](/developers/docs/ethereum-stack/) +- [Coinbase: introduzione allo stack Web3](https://blog.coinbase.com/a-simple-guide-to-the-web3-stack-785240e557f0) +- [Introduzione ai contratti intelligenti](/developers/docs/smart-contracts/) +- [Introduzione all'archiviazione decentralizzata](/developers/docs/storage/) + +#### Ricerca recente {#recent-research-20} + +- [Componibilità dei contratti intelligenti](/developers/docs/smart-contracts/composability/) diff --git a/src/content/translations/it/community/support/index.md b/src/content/translations/it/community/support/index.md index 6d2c9f0e001..c3cfb2ccb22 100644 --- a/src/content/translations/it/community/support/index.md +++ b/src/content/translations/it/community/support/index.md @@ -43,6 +43,7 @@ La costruzione può essere difficile. Ecco alcuni spazi focalizzati sullo svilup - [StackExchange Ethereum](https://ethereum.stackexchange.com/) - [StackOverflow](https://stackoverflow.com/questions/tagged/web3) - [Web3 University](https://www.web3.university/) +- [LearnWeb3](https://discord.com/invite/learnweb3) Puoi anche trovare la documentazione e le guide di sviluppo nella nostra sezione [risorse per sviluppatore Ethereum](/developers/). @@ -64,7 +65,7 @@ Ecco alcuni esempi più diffusi: Se stai eseguendo un nodo o un validatore, ecco alcune community che sono dedicate ad aiutarti ad iniziare. -- [EthStaker discord](https://discord.gg/ethstaker) +- [EthStaker discord](https://discord.io/ethstaker) - [EthStaker reddit](https://www.reddit.com/r/ethstaker) La maggior parte dei team che costruiscono client di Ethereum hanno anche spazi dedicati, rivolti al pubblico, dove è possibile ottenere supporto e fare domande. diff --git a/src/content/translations/it/contributing/adding-desci-projects/index.md b/src/content/translations/it/contributing/adding-desci-projects/index.md new file mode 100644 index 00000000000..8d2346205b6 --- /dev/null +++ b/src/content/translations/it/contributing/adding-desci-projects/index.md @@ -0,0 +1,44 @@ +--- +title: Aggiungere progetti DeSci +description: La politica che applichiamo aggiungendo i collegamenti ai progetti sulla pagina della DeSci su ethereum.org +lang: it +--- + +# Aggiungere progetti {#adding-projects} + +Vogliamo assicurarci di mostrare svariati progetti e fornire una buona istantanea del panorama della DeSci. + +Chiunque è libero di suggerire un progetto da aggiungere all'elenco nella pagina della DeSci su ethereum.org. Allo stesso modo, chiunque noti che un progetto non è più pertinente o non soddisfa più i nostri criteri di idoneità è libero di suggerire che sia rimosso. + +## Il quadro decisionale {#the-decision-framework} + +### Criteri per l'inclusione: gli elementi imprescindibili {#the-must-haves} + +- **Codice/Dati open source**: il livello di apertura del codice e dei dati è un principio fondamentale della DeSci, quindi tali progetti non devono essere a sorgente "chiusa". La base di codice dovrebbe essere accessibile e idealmente aperta ai PR. +- **I progetti di DeSci dovrebbero essere dimostrabilmente decentralizzati**: ciò potrebbe includere il controllo da parte di una DAO o mediante la creazione di uno stack tecnologico decentralizzato che include portafogli non custoditi. Probabilmente si tratta di contratti intelligenti verificabili su Ethereum. +- **Elenco d'informazioni oneste e accurate** - Ci si aspetta che ogni elenco suggerito dai progetti sia fornito con informazioni oneste e accurate. I prodotti che falsificano le informazioni in elenco, ad esempio dichiarando che il proprio prodotto è "open source" quando non lo è, saranno rimossi. +- **Impegno dimostrabile all'ampliamento dell'accesso alla scienza**: un progetto di DeSci dovrebbe essere in grado di spiegare il modo in cui amplia la partecipazione alla scienza del grande pubblico, non soltanto dei titolari di token/NFT. +- **Accessibile globalmente**: il tuo progetto non ha limitazioni geografiche o requisiti KYC che escludono certe persone dall'accedervi. +- **Sito web e documentazione Informativi**: è importante che i visitatori del sito web del progetto possano comprendere cosa fa il progetto, come contribuisce alla decentralizzazione dell'infrastruttura scientifica e come partecipare. +- **Il progetto dovrebbe far parte dell'ecosistema di Ethereum**: su ethereum.org crediamo che Ethereum (e il suo livello 2) siano il livello di base appropriato per il movimento della DeSci. +- **Il progetto è abbastanza ben consolidato**: il progetto ha utenti reali che hanno potuto accedere ai servizi del progetto per svariati mesi. + +### Caratteristiche auspicabili + +- **Disponibile in più lingue**: il tuo progetto è tradotto in più lingue, il che consente l'accesso agli utenti di tutto il mondo. +- **Risorse didattiche**: il tuo prodotto dovrebbe avere un'esperienza di adesione ben progettata per aiutare a istruire gli utenti. In alternativa, dovrebbe offrire contenuti di supporto come articoli o video. +- **Controlli di terze parti**: il tuo prodotto è stato controllato professionalmente da una terza parte affidabile per verificare la presenza di vulnerabilità. +- **Punto di contatto**: un punto di contatto per il progetto (un rappresentante di una DAO o comunità) ci aiuterà molto a ottenere informazioni accurate, quando sono apportate delle modifiche. Questo continuerà ad aggiornare ethereum in modo gestibile, raccogliendo le informazioni future. + +## Manutenzione {#maintenance} + +In linea con la natura fluida di Ethereum, team e prodotti vanno e vengono e l'innovazione avviene quotidianamente, quindi effettueremo controlli di routine dei nostri contenuti per: + +- assicurarsi che tutti i progetti soddisfino ancora i nostri criteri +- verificare che non ci siano prodotti suggeriti che soddisfano più criteri rispetto a quelli attualmente elencati + +Ethereum.org è mantenuto dalla comunità open source e ci affidiamo a essa per mantenere aggiornato questo elenco. Se noti che qualche informazione sui progetti elencati dev'essere aggiornata, sei pregato di aprire un ticket o una richiesta di pull sulla nostra repository di GitHub. + +## Condizioni d'uso {#terms-of-use} + +Sei anche pregato di fare riferimento ai [termini d'utilizzo](/terms-of-use/). Le informazioni su ethereum.org sono fornite esclusivamente a fini di informazione generale. diff --git a/src/content/translations/it/contributing/adding-developer-tools/index.md b/src/content/translations/it/contributing/adding-developer-tools/index.md index a5b6a3e0035..afeb9e33cb9 100644 --- a/src/content/translations/it/contributing/adding-developer-tools/index.md +++ b/src/content/translations/it/contributing/adding-developer-tools/index.md @@ -56,6 +56,6 @@ A meno che i prodotti non siano specificamente ordinati in modo diverso, ad esem Se vuoi aggiungere a ethereum.org uno strumento per sviluppatori che soddisfa i criteri, crea un ticket su GitHub. - + Crea un ticket diff --git a/src/content/translations/it/contributing/adding-exchanges/index.md b/src/content/translations/it/contributing/adding-exchanges/index.md index 8221e1e7899..e6e7906aa31 100644 --- a/src/content/translations/it/contributing/adding-exchanges/index.md +++ b/src/content/translations/it/contributing/adding-exchanges/index.md @@ -35,6 +35,6 @@ Occorre inoltre fornire ad ethereum.org la sicurezza che la piattaforma di scamb Se desideri aggiungere una piattaforma di scambio a ethereum.org, crea un ticket su GitHub. - + Crea un ticket diff --git a/src/content/translations/it/contributing/adding-glossary-terms/index.md b/src/content/translations/it/contributing/adding-glossary-terms/index.md index 0ff024535bc..487fd9e90cf 100644 --- a/src/content/translations/it/contributing/adding-glossary-terms/index.md +++ b/src/content/translations/it/contributing/adding-glossary-terms/index.md @@ -23,4 +23,4 @@ I nuovi termini del glossario saranno valutati in base ai seguenti criteri: ## Aggiungi il tuo termine {#how-decisions-about-the-site-are-made} -Se vuoi aggiungere un termine al glossario di ethereum.org e i criteri sono soddisfatti, [crea un ticket su GitHub](https://github.com/ethereum/ethereum-org-website/issues/new?template=suggest_glossary_term.md). +Se vuoi aggiungere un termine al glossario di ethereum.org e i criteri sono soddisfatti, [crea un ticket su 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/src/content/translations/it/contributing/adding-layer-2s/index.md b/src/content/translations/it/contributing/adding-layer-2s/index.md index de900d0ac8e..6fbfa0b7573 100644 --- a/src/content/translations/it/contributing/adding-layer-2s/index.md +++ b/src/content/translations/it/contributing/adding-layer-2s/index.md @@ -8,7 +8,7 @@ lang: it Vogliamo assicurarci di elencare le migliori risorse possibili, così che gli utenti possano navigare nello spazio del livello 2 con la massima tranquillità e sicurezza. -Chiunque è libero di suggerire nuove piattaforme di scambio su ethereum.org. Se ci siamo dimenticati di un livello 2, **[ti invitiamo a suggerirlo](https://github.com/ethereum/ethereum-org-website/issues/new?&template=suggest_layer2.md)!** +Chiunque è libero di suggerire nuove piattaforme di scambio su ethereum.org. Se ci siamo dimenticati di un livello 2, **[ti invitiamo a suggerirlo](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_layer2.yaml)!** Attualmente elenchiamo i L2 nelle pagine seguenti: @@ -50,7 +50,9 @@ _Non prendiamo in considerazione altre soluzioni di scalabilità che non utilizz **Data di rilascio del progetto** -- I progetti più nuovi e non ancora ben testati dagli utenti hanno meno probabilità di esser elencati. +- Un livello due che è stato "attivo" sulla rete principale per 6 mesi + +- I progetti più recenti e non ancora ben testati dagli utenti hanno meno probabilità di essere elencati. **Controllo di sicurezza esterno** @@ -90,6 +92,6 @@ _Non prendiamo in considerazione altre soluzioni di scalabilità che non utilizz Se desideri aggiungere un livello 2 su ethereum.org, crea un ticket su GitHub. - + Crea un ticket diff --git a/src/content/translations/it/contributing/adding-products/index.md b/src/content/translations/it/contributing/adding-products/index.md index 8f61397871a..977f7e082e1 100644 --- a/src/content/translations/it/contributing/adding-products/index.md +++ b/src/content/translations/it/contributing/adding-products/index.md @@ -1,38 +1,34 @@ --- title: Aggiungere prodotti -description: La politica che usiamo per l'aggiunta di portafogli e dapp su ethereum.org +description: La politica che applichiamo quando aggiungiamo le dapp a ethereum.org lang: it --- -_Una nota sull'aggiunta di portafogli: nell'ambito della [nostra tabella di marcia relativa al prodotto per il T1](https://github.com/ethereum/ethereum-org-website/issues/5105), stiamo perfezionando la pagina dei portafogli. Sarà incluso il perfezionamento dei criteri di inserimento per la pagina dei portafogli. Finché non avremo ricercato, stabilito e pubblicato i criteri di inserimento rivisti, non aggiungeremo attivamente alcun nuovo portafoglio al sito web._ - # Aggiungere prodotti su Ethereum {#adding-products} -Chiunque è libero di suggerire nuovi portafogli e dapp da aggiungere ai contenuti su ethereum.org, ove ritenuto appropriato. **No, non elencheremo la tua dapp sulla nostra pagina iniziale** +Chiunque può suggerire nuove dapp ai contenuti su ethereum.org, ove appropriato. **No, non elencheremo la tua dapp sulla nostra pagina home** 😜 -Attualmente, portafogli e dapp vengono elencati su: +Le dapp sono attualmente elencate su: -- ethereum.org/wallets -- ethereum.org/wallets/find-wallet - ethereum.org/dapps - ethereum.org/get-eth -**Sei pregato/a di suggerire solo nuove risorse su queste pagine.** +**Sei pregato di suggerire solo nuove aggiunte su queste pagine.** -Pur accogliendo di buon grado i nuovi inserimenti, scegliamo i portafogli e le dapp correnti in base a un'esperienza che tentiamo di creare per i nostri utenti. Questa si basa su alcuni dei nostri principi di progettazione: +Sebbene accogliamo le nuove aggiunte, scegliamo le dapp correnti secondo un'esperienza che stiamo provando a creare per i nostri utenti. Questa si basa su alcuni dei nostri principi di design: - _Ispirazionale:_ tutto su ethereum.org dovrebbe offrire agli utenti qualcosa di nuovo - _Una storia utile_: le risorse elencate dovrebbero fornire un momento di comprensione - _Credibile_: aziende/progetti dovrebbero essere tutti legittimi per minimizzare i rischi per gli utenti -In generale, **ethereum.org vuole fornire una "esperienza di accesso senza problemi" ai nuovi utenti**. Per questo, aggiungiamo portafogli/dapp in base a: +In generale, **ethereum.org vuole fornire una "esperienza di adesione senza problemi" per i nuovi utenti**. Per questo motivo aggiungiamo le dapp in base a: - facilità d'uso - interoperabilità con altri prodotti - sicurezza - longevità -Ecco il nostro quadro decisionale, più nel dettaglio. Sentiti libero/a di fornire feedback o suggerire modifiche. +Ecco il nostro quadro decisionale più nel dettaglio. Sentiti libero di fornire feedback o suggerire modifiche. ## Il quadro decisionale {#decision-framework} @@ -45,42 +41,34 @@ Ecco il nostro quadro decisionale, più nel dettaglio. Sentiti libero/a di forni ### Criteri per la classificazione: gli aspetti preferenziali {#criteria-for-ranking-the-nice-to-haves} -La tua dapp o portafoglio potrebbero essere elencati su ethereum.org in posizione meno prominente rispetto ad altre risorse per i seguenti criteri. - -**Portafogli** - -- **Fiat on-ramp** – Evita molta potenziale frizione nell'esperienza di un nuovo utente con un portafoglio. Se un utente deve finanziare un portafoglio tramite una piattaforma di scambio, possono passare giorni prima che possa provare il portafoglio a causa dei controlli "know-your-customer". -- **Supporato dalla maggiornaza delle dapp** – I contenuti di ethereum.org mirano a far mettere gli utenti al lavoro con un portafoglio e gli ETH prima di mostrare loro le dapp. Se le dapp non supportano la connessione col tuo portafoglio, l'esperienza potrebbe risultare compromessa. +La tua dapp potrebbe non essere elencata su ethereum.org in evidenza con le altre a causa dei seguenti criteri. **Dapp** - **Puoi accedervi tramite la maggioranza dei portafogli elencati** – Le dapp dovrebbero funzionare con gran parte dei portafogli elencati su ethereum.org. - **Gli utenti possono provarle da soli –** Un singolo utente dovrebbe poter usare la tua dapp e ottenere qualcosa di tangibile. - -**Entrambi** - -- **Accesso** – Il tuo prodotto dovrebbe offrire un'esperienza d'accesso ben progettata per aiutare e istruire gli utenti. Oppure dovrebbe offrire contenuti di supporto come articoli o video. -- **Non detentivo** – Gli utenti controllano i propri fondi. Se il prodotto scompare, gli utenti potranno comunque accedere e spostare i propri fondi. -- **Accessibile globalmente** – Il prodotto non deve avere limitazioni geografiche o requisiti KYC che escludono certe persone dall'accesso al servizio. -- **Open source** – Il codice dovrebbe essere accessibile e dovresti accettare PR dalla community nel complesso. -- **Community** – Hai una community dedicata, ad esempio su Discord, in cui gli utenti possono interagire con il tuo team per ricevere supporto o suggerire nuove funzionalità. +- **Adesione** – Il tuo prodotto dovrebbe offrire un'esperienza di adesione ben progettata per aiutare e istruire gli utenti. In alternativa, dovrebbe offrire contenuti di supporto come articoli o video. +- **Non custodito** – Gli utenti controllano i propri fondi. Se il prodotto scompare, gli utenti potranno comunque accedere e spostare i propri fondi. +- **Accessibile globalmente** – Il prodotto non ha limitazioni geografiche o requisiti KYC che escludono certe persone dall'accesso al servizio. +- **Open source** – Il codice dovrebbe essere accessibile e dovresti accettare PR dalla comunità nel complesso. +- **Comunità** – Hai una comunità dedicata, ad esempio su Discord, in cui gli utenti possono interagire con il tuo team per ricevere supporto o suggerire nuove funzionalità. ## Criteri nella pratica {#criteria-in-practice} Più criteri soddisfi, più probabilità ci sono che il tuo prodotto venga elencato su ethereum.org. -Un prodotto elencato che soddisfa solo gli aspetti imprescindibili potrebbe essere rimosso se viene suggerito un nuovo prodotto che soddisfa gli aspetti imprescindibili e diversi elementi preferenziali. +Un prodotto elencato che soddisfa solo gli aspetti imprescindibili potrebbe essere rimosso se viene suggerito un nuovo prodotto che soddisfa gli aspetti imprescindibili e diverse caratteristiche auspicabili. -Altre cose confluiranno in questa decisione: +Altre cose influiranno sulla decisione: - Aggiungere piuttosto che sostituire corromperà l'UX della pagina? - - Il nostro sito è essenzialmente educativo e lo scopo principale è quello di spiegare Ethereum e i concetti pertinenti. Aggiungendo troppe opzioni per gli utenti, le pagine potrebbero divenire meno leggibili e dunque meno utili. -- La pagina rischia di paralizzare l'utente nella scelta? + - Il nostro sito è essenzialmente istruttivo e lo scopo principale è quello di spiegare Ethereum e i concetti pertinenti. Aggiungendo troppe opzioni per gli utenti, le pagine potrebbero divenire meno leggibili e dunque meno utili. +- La pagina rischia di paralizzare l'utente per la quantità di scelte? - Come quando ti siedi a sfogliare Netflix per ore, perché non riesci a decidere cosa guardare. Confondere i nuovi utenti con troppe scelte è un rischio. -Si tratta di una decisione di progettazione che spetta a ethereum.org. +Si tratta di una decisione di design che spetta a ethereum.org. -Ma stai sereno, **ci saranno dei link ad altri siti web che classificano più dapp/portafogli** +Ma stai sereno, **saranno presenti dei collegmenti ad altri siti web che classificano altre dapp** ### Ordine dei prodotti {#product-ordering} @@ -94,19 +82,19 @@ Ti invitiamo anche a consultare i nostri [termini di utilizzo](/terms-of-use/). In linea con la natura fluida di Ethereum, team e prodotti vanno e vengono e l'innovazione avviene quotidianamente, quindi effettueremo controlli di routine dei nostri contenuti per: -- garantire che tutti i portafogli e dapp elencati soddisfino ancora i nostri criteri +- assicurarci che tutte le dapp elencate continuino a soddisfare i nostri criteri - verificare che non ci siano prodotti suggeriti che soddisfano più criteri rispetto a quelli attualmente elencati -A tale riguardo, puoi aiutarci controllando e facendoci sapere. [Crea un ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&projects=&template=feature_request.yaml&title=Feature+request) o invia un'email a [website@ethereum.org](mailto:website@ethereum.org) +A tale riguardo, puoi aiutarci controllando e facendoci sapere. [Crea un ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) o invia un'e-mail a [website@ethereum.org](mailto:website@ethereum.org) -_Stiamo anche studiando altre opzioni per votare, in modo tale che la community possa indicare le proprie preferenze ed evidenziare i migliori prodotti che dovremmo consigliare._ +_Stiamo anche studiando altre opzioni da votare, in modo tale che la comunità possa indicare le proprie preferenze ed evidenziare i migliori prodotti che dovremmo consigliare._ --- ## Aggiungi il tuo prodotto {#add-your-product} -Se desideri aggiungere a ethereum.org un portafoglio o una dapp che soddisfa i criteri, crea un ticket su GitHub. +Se desideri aggiungere una dapp a ethereum.org che soddisfa i criteri, crea un ticket su GitHub. - + Crea un ticket diff --git a/src/content/translations/it/contributing/adding-staking-products/index.md b/src/content/translations/it/contributing/adding-staking-products/index.md index d86cac9a627..99393243690 100644 --- a/src/content/translations/it/contributing/adding-staking-products/index.md +++ b/src/content/translations/it/contributing/adding-staking-products/index.md @@ -8,7 +8,7 @@ lang: it Vogliamo assicurarci di elencare le migliori risorse possibili, mantenendo gli utenti al sicuro. -Chiunque è libero di suggerire e aggiungere prodotti o servizi di staking su ethereum.org. Se ce ne siamo dimenticati uno, **[ti invitiamo a suggerirlo](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_staking_product.yaml&title=Suggest+a+staking+product+or+service)!** +Chiunque è libero di suggerire e aggiungere prodotti o servizi di staking su ethereum.org. Se ce ne siamo dimenticati uno, **[sei pregato di suggerirlo](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_staking_product.yaml)!** Attualmente, elenchiamo i prodotti e i servizi di staking sulle seguenti pagine: @@ -20,7 +20,7 @@ Il proof-of-stake sulla Beacon Chain è attivo dal 1° dicembre 2020. Sebbene lo ## Il meccanismo decisionale {#the-decision-framework} -La decisione di elencare un prodotto su ethereum.org non dipende da un unico fattore. Nel decidere se elencare un prodotto o servizio, vengono considerati diversi criteri. Più di questi criteri sono soddisfatti, più è probabile che la risorsa venga inclusa nell'elenco. +La decisione di elencare un prodotto su ethereum.org non dipende da un unico fattore. Nel decidere se elencare un prodotto o servizio, vengono considerati diversi criteri. Più questi criteri sono soddisfatti e più è probabile che venga elencato. **Innanzitutto, di quale categoria di prodotto o di servizio si tratta?** @@ -29,7 +29,7 @@ La decisione di elencare un prodotto su ethereum.org non dipende da un unico fat - Staking come servizio (SaaS) - Pool di staking -Attualmente elenchiamo solo prodotti o servizi in queste categorie. +Al momento elenchiamo solo i prodotti e i servizi in queste categorie. ### Criteri per l'inclusione {#criteria-for-inclusion} @@ -50,6 +50,11 @@ Le proposte di prodotti o servizi di staking saranno valutate secondo i seguenti - Quali passaggi nel percorso degli utenti richiedono di affidarsi a esseri umani per detenere le chiavi dei loro fondi o distribuire adeguatamente le ricompense? - Questo viene utilizzato per determinare il punteggio "senza fiducia" del prodotto o dei servizi. +**Il progetto fornisce informazioni accurate e affidabili?** + +- È essenziale che il sito web del prodotto abbia informazioni aggiornate, accurate e non fuorvianti, specialmente se riguardano il protocollo Ethereum o altre tecnologie a esso collegate. +- Applicazioni che contengono disinformazione, dettagli obsoleti o dichiarazioni potenzialmente fuorvianti riguardanti Ethereum o altri soggetti rilevanti non verranno elencate o, se già elencate, verranno rimosse. + **Quali piattaforme sono supportate?** - ossia Linux, macOS, Windows, iOS, Android @@ -76,47 +81,47 @@ Per qualsiasi software personalizzato o contratto intelligente coinvolto: **Il progetto ha un programma di ricompense per la ricerca di bug?** - Altrimenti, ci sono piani per creare un programma di ricompense per la ricerca dei bug di sicurezza? -- Questo serve a determinare il punteggio di "caccia ai bug" dei prodotti. +- Questo serve a determinare il punteggio di "ricerca dei bug" dei prodotti. #### Strumenti del nodo o del client {#node-or-client-tooling} -Per i prodotti del software correlati alla configurazione del nodo o del client, alla gestione o alla migrazione: +Per i prodotti del software correlati alla configurazione, alla gestione o alla migrazione del nodo o del client: -**Quali client del livello del consenso (ad es. Lighthouse, Teku, Nimbus, Prysm) sono supportati?** +**Quali client del livello del consenso (ovvero Lighthouse, Teku, Nimbus, Prysm) sono supportati?** - Quali client sono supportati? L'utente può scegliere? - Questo serve a determinare il punteggio "multi-client" dei prodotti. #### Staking come servizio {#staking-as-a-service} -Per gli [elenchi di staking come servizio](/staking/saas/) (es. operazione del nodo delegata): +Per gli [elenchi di staking-as-a-service](/staking/saas/) (cioè operazioni del nodo delegato): **Quali sono le commissioni associate all'uso del servizio?** - Qual è la struttura tariffaria, ad esempio vi è un canone mensile per il servizio? - Ulteriori requisiti per lo staking? -**Gli utenti sono tenuti a registrarsi per un conto?** +**Gli utenti sono tenuti a registrarsi per avere un conto?** - Qualcuno può usare il servizio senza permessi o KYC? - Questo serve a determinare il punteggio "senza permessi" dei prodotti. **Chi detiene le chiavi di firma e le chiavi di prelievo?** -- Su quali chiavi l'utente mantiene l'accesso? A quali chiavi il servizio ottiene accesso? +- A quali chiavi l'utente mantiene l'accesso? A quali chiavi il servizio ottiene accesso? - Questo serve a determinare il punteggio "senza fiducia" dei prodotti. **Qual è la diversità del client dei nodi operati?** -- Che percentuale di chiavi del validatore è eseguita da un client del livello del consenso di maggiornaza (CL)? -- A partire dall'ultima modifica, Prysm è il client di livello di consenso gestito da una maggioranza di operatori di nodi, il che è pericoloso per la rete. Se un client CL è usato attualmente da oltre il 33% della rete, richiediamo i dati correlati al suo utilizzo. -- Questo serve a determinare il punteggio dei "client diversi" dei prodotti. +- Qual è la percentuale di chiavi del validatore eseguite dalla maggioranza dei client del livello di consenso (CL)? +- A partire dall'ultima modifica, Prysm è il client di livello di consenso eseguito da una maggioranza di operatori di nodi, il che è pericoloso per la rete. Se un client CL è attualmente utilizzato da oltre il 33% della rete, richiediamo i dati correlati al suo utilizzo. +- Questo serve a determinare il punteggio dei prodotti con "client diversi". #### Pool di staking {#staking-pool} Per i [servizi di staking in pool](/staking/pools/): -**Qual è il livello minimo di ETH richiesto per la partecipazione?** +**Qual è il livello minimo di ETH richiesto per lo staking?** - es. 0,01 ETH @@ -132,15 +137,15 @@ Per i [servizi di staking in pool](/staking/pools/): **Gli utenti possono partecipare come operatore di nodi?** -- Cosa serve per eseguire i client di convalida usando i fondi in pool? -- Ciò richiede l'autorizzazione da un individuo, una società o una DAO? -- Questo viene utilizzato per determinare il punteggio dei prodotti dei "nodi senza autorizzazione". +- Cosa serve per eseguire i client validatori usando i fondi in pool? +- Ciò richiede l'autorizzazione da una persona, una società o una DAO? +- Questo serve a determinare il punteggio dei prodotti dei "nodi senza permessi". **Qual è la diversità del client degli operatori del nodo in pool?** - Quale percentuale di operatori dei nodi esegue un client del livello di consenso di maggioranza (CL)? -- Dall'ultima modifica, Prysm è il client del livello di consenso gestito da una maggioranza di operatori di nodi, il che è pericoloso per la rete. Se un client CL è utilizzato attualmente da oltre il 33% della rete, richiediamo i dati correlati al suo utilizzo. -- Questo viene utilizzato per determinare il punteggio dei prodotti con "client diversi". +- A partire dall'ultima modifica, Prysm è il client di livello di consenso eseguito da una maggioranza di operatori di nodi, il che è pericoloso per la rete. Se un client CL è attualmente utilizzato da oltre il 33% della rete, richiediamo i dati correlati al suo utilizzo. +- Questo serve a determinare il punteggio dei prodotti con "client diversi". ### Altri criteri: gli aspetti preferibili {#other-criteria} @@ -152,7 +157,7 @@ Per i [servizi di staking in pool](/staking/pools/): - L'utente può modificare facilmente e in sicurezza i client usando lo strumento? -**Per SaaS, quanti validatori sono attualmente gestiti dal servizio?** +**Per SaaS, quanti validatori sono attualmente operati dal servizio?** - Questo ci da un'idea del raggio d'azione del tuo servizio finora. @@ -160,12 +165,12 @@ Per i [servizi di staking in pool](/staking/pools/): I [criteri di inclusione](#criteria-for-inclusion) di cui sopra vengono utilizzati per calcolare un punteggio cumulativo per ciascun prodotto o servizio. Questo viene utilizzato come mezzo per selezionare e mostrare prodotti che soddisfano determinati criteri oggettivi. Più criteri sono disponibili con le relative prove, più il prodotto sarà in cima all'elenco, mentre i pareggi saranno randomizzati al caricamento. -La logica del codice e le ponderazioni per questi criteri sono attualmente contenute in [questo componente JavaScript](https://github.com/ethereum/ethereum-org-website/blob/dev/src/components/Staking/StakingProductsCardGrid.js#L350) nel nostro repo. +La logica del codice e le ponderazioni per questi criteri sono attualmente contenute in [questo componente JavaScript](https://github.com/ethereum/ethereum-org-website/blob/dev/src/components/Staking/StakingProductsCardGrid.js#L350) nel nostro repository. ## Aggiungi il tuo prodotto o servizio {#add-product} Se desideri aggiungere un prodotto o servizio di staking su ethereum.org, crea un ticket su GitHub. - + Crea un ticket diff --git a/src/content/translations/it/contributing/adding-wallets/index.md b/src/content/translations/it/contributing/adding-wallets/index.md new file mode 100644 index 00000000000..1a70c606ac3 --- /dev/null +++ b/src/content/translations/it/contributing/adding-wallets/index.md @@ -0,0 +1,75 @@ +--- +title: Aggiungere portafogli +description: La politica che applichiamo quando aggiungiamo un portafoglio a ethereum.org +lang: it +--- + +# Aggiungere portafogli {#adding-wallets} + +Vogliamo assicurarci di mostrare una varietà di portafogli che coprano il panorama ricco di funzioni dei portafogli così che gli utenti possano navigare su Ethereum in sicurezza. + +Tutti sono liberi di suggerire l'aggiunta di un portafoglio a ethereum.org. Se ci siamo dimenticati un portafoglio, ti preghiamo di suggerirlo! + +Chiunque può suggerire un nuovo portafoglio. I portafogli sono attualmente elencati in: + +- [ethereum.org/wallets/find-wallet/](/wallets/find-wallet/) +- [ethereum.org/wallets/](/wallets/) + +I portafogli sono in rapido cambiamento su Ethereum. Abbiamo provato a creare un meccanismo equo per la disamina su ethereum.org, ma i criteri elencati cambieranno ed evolveranno col tempo. + +## Il quadro decisionale {#the-decision-framework} + +### Criteri per l'inclusione: gli elementi imprescindibili {#the-must-haves} + +- **Un prodotto testato per la sicurezza**: che sia tramite il controllo, un team di sicurezza interno, la codifica open source, o qualche altro metodo, la sicurezza del tuo portafoglio dev'essere attendibile. Questo riduce il rischio per gli utenti e ci dimostra che prendi la sicurezza sul serio. +- **Un portafoglio dev'esser stato "attivo" per oltre sei mesi O rilasciato da un gruppo con una comprovata esperienza**; anche questa è un'indicazione di sicurezza. 6 mesi sono un buon periodo di tempo per individuare bug critici o utilizzi impropri. Chiediamo sei mesi per aiutare a filtrare le biforcazioni i cui progetti sono abbandonati rapidamente. +- **Gestito da un team attivo**: ciò aiuta ad assicurare la qualità e che un utente riceverà supporto per le proprie richieste. +- **Elenco d'informazioni oneste e accurate** - Ci si aspetta che ogni elenco suggerito dai progetti sia fornito con informazioni oneste e accurate. I prodotti che falsificano le informazioni in elenco, ad esempio dichiarando che il proprio prodotto è "open source" quando non lo è, saranno rimossi. +- **Punto di contatto**: un punto di contatto per il portafoglio ci aiuterà molto a ottenere informazioni accurate quando sono apportate delle modifiche. Questo continuerà ad aggiornare ethereum in modo gestibile, raccogliendo le informazioni future. + +### Altri criteri: gli aspetti preferibili {#the-nice-to-haves} + +- **Accessibile globalmente**: il tuo portafoglio non presenta limitazioni geografiche o requisiti KYC che escludono certe persone dall'accedere al tuo servizio. +- **Disponibile in più lingue**: il tuo portafoglio è tradotto in più lingue, il che consente agli utenti di tutto il mondo di accedervi. +- **Open source**: l'intera base di codice del tuo progetto (non soltanto i moduli) dovrebbe essere accessibile e dovresti accettare PR dall'intera comunità. +- **Non custodito** – Gli utenti controllano i propri fondi. Se il prodotto scompare, gli utenti potranno comunque accedere e spostare i propri fondi. +- **Supporto al portafoglio hardware**: gli utenti possono connettere i propri portafogli hardware per firmare le transazioni. +- **WalletConnect**: gli utenti possono connettersi alle dapp utilizzando WalletConnect. +- **Importazione degli endpoint RPC di Ethereum**: gli utenti possono importare i dati RPC del nodo, consentendo loro di connettersi a un nodo di propria scelta o ad altre reti compatibili con EVM. +- **NFT**: gli utenti possono visualizzare e interagire con i propri NFT nel portafoglio. +- **Connessione alle applicazioni di Ethereum**: gli utenti possono connettersi e utilizzare le applicazioni di Ethereum. +- **Staking**: gli utenti possono mettere direttamente in staking tramite il portafoglio. +- **Scambi**: gli utenti possono scambiare i token tramite il portafoglio. +- **Reti multicatena**: il tuo portafoglio supporta l'accesso degli utenti a più reti della blockchain per impostazione predefinita. +- **Reti di livello 2**: il tuo portafoglio supporta l'accesso degli utenti alle reti di livello 2 per impostazione predefinita. +- **Personalizzazione delle commissioni sul gas**: il tuo portafoglio consente agli utenti di personalizzare le commissioni sul gas delle proprie transazioni (commissione di base, commissione di priorità, commissione massima). +- **Supporto ENS**: il tuo portafoglio consente agli utenti di inviare le transazioni ai nomi ENS. +- **Supporto ERC-20**: il tuo portafoglio consente agli utenti di importare i contratti del token ERC-20 o interroga automaticamente e mostra i token ERC-20. +- **Transazioni dell'EIP-1559 (tipo 2)**: il tuo portafoglio supporta le transazioni dell'EIP-1559 (tipo 2). +- **Acquistare criptovalute**: il tuo portafoglio supporta l'acquisto diretto e l'adesione alle criptovalute da parte degli utenti. +- **Vendita per valuta legale**: il tuo portafoglio supporta la vendita e prelievo degli utenti in valuta legale direttamente su carta o conto bancario. +- **Multifirma**: il tuo portafoglio supporta più firme per firmare una transazione. +- **Recupero sociale**: il tuo portafoglio supporta i tutori e un utente può recuperarlo se perde la propria frase seed, utilizzando tali tutori. +- **Team di supporto dedicato**: il tuo portafoglio ha un team di supporto dedicato a cui gli utenti possono rivolgersi quando si verificano problemi. +- **Risorse/documentazione didattiche**: il tuo prodotto dovrebbe avere un'esperienza di adesione ben progettata per aiutare a istruire gli utenti. In alternativa, dovrebbe offrire contenuti di supporto come articoli o video. + +## Aggiungere un portafoglio {#adding-a-wallet} + +Se desideri aggiungere un portafoglio a ethereum.org, crea un ticket su GitHub. + + + Crea un ticket + + +## Manutenzione {#maintenance} + +In linea con la natura fluida di Ethereum, team e prodotti vanno e vengono e l'innovazione avviene quotidianamente, quindi effettueremo controlli di routine dei nostri contenuti per: + +- garantire che tutti i portafogli e le dapp elencati soddisfino ancora i nostri criteri +- verificare che non ci siano prodotti suggeriti che soddisfano più criteri rispetto a quelli attualmente elencati + +Ethereum.org è mantenuto dalla comunità open source e ci affidiamo a essa per mantenere aggiornato questo elenco. Se noti che delle informazioni sui portafogli elencati devono essere aggiornate, sei pregato di [aprire un ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=wallet+%3Apurse%3A&template=suggest_wallet.yaml) o una [richiesta di pull](https://github.com/ethereum/ethereum-org-website/pulls)! + +## Condizioni d'uso {#terms-of-use} + +Sei anche pregato di fare riferimento ai [termini d'utilizzo](/terms-of-use/). Le informazioni su ethereum.org sono fornite esclusivamente a fini di informazione generale. diff --git a/src/content/translations/it/contributing/content-resources/index.md b/src/content/translations/it/contributing/content-resources/index.md index c23bae15f3d..e054d002c9b 100644 --- a/src/content/translations/it/contributing/content-resources/index.md +++ b/src/content/translations/it/contributing/content-resources/index.md @@ -27,6 +27,6 @@ Le risorse di apprendimento saranno valutate sulla base dei seguenti criteri: Se desideri aggiungere a ethereum.org una risorsa di contenuto che soddisfa i criteri, crea un ticket su GitHub. - + Crea un ticket diff --git a/src/content/translations/it/contributing/design-principles/index.md b/src/content/translations/it/contributing/design-principles/index.md index db16bfda263..c88d780bebc 100644 --- a/src/content/translations/it/contributing/design-principles/index.md +++ b/src/content/translations/it/contributing/design-principles/index.md @@ -90,4 +90,4 @@ Puoi vedere i nostri principi di progettazione in azione [sul nostro sito](/). Sebbene questi principi siano incentrati sul sito web ethereum.org, speriamo che molti di essi siano rappresentativi dei valori dell'ecosistema Ethereum in generale (ad esempio, puoi vedere l'influenza dei [principi del Whitepaper di Ethereum](https://github.com/ethereum/wiki/wiki/White-Paper#philosophy)). Potresti persino decidere di incorporare alcuni di essi nel tuo progetto! -Facci sapere che ne pensi sul [server Discord](https://discord.gg/CetY6Y4) o [creando un ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&projects=&template=feature_request.yaml&title=Feature+request). +Facci sapere che ne pensi sul [server Discord](https://discord.gg/CetY6Y4) o [creando un ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=). diff --git a/src/content/translations/it/contributing/design/adding-design-resources/index.md b/src/content/translations/it/contributing/design/adding-design-resources/index.md new file mode 100644 index 00000000000..a2f7b400f08 --- /dev/null +++ b/src/content/translations/it/contributing/design/adding-design-resources/index.md @@ -0,0 +1,67 @@ +--- +title: Aggiungere risorse di progettazione +description: Linee guida e requisiti per assicurare la qualità dei materiali di progettazione su ethereum.org +lang: it +--- + +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. + +Per assicurarci di mantenere uno standard informativo elevato e promuovere informazioni preziose, abbiamo stabilito una politica di elencazione: + +## Studi di ricerca e pannelli di controllo {#Research-studies} + +1. Metodologia valida + +a. La metodologia dovrebbe definire chiaramente come sono raccolti i dati. + +b. Il numero di partecipanti alla ricerca dovrebbe essere dichiarato. + +c. I metodi di ricerca impiegati dovrebbero essere descritti. + +2. Pertinenza per i designer in Web3 e casi d'uso di progettazione comuni + +a. L'argomento della ricerca dovrebbe essere pertinente per il designer in Web3 e affrontare i casi d'uso di progettazione comuni. + +3. Concentrarsi sulla fornitura di informazioni + +a. L'obiettivo principale del testo dovrebbe essere condividere informazioni dettagliate piuttosto che promuovere un progetto o un'azienda nello specifico. + +## Articoli {#Articles} + +1. Pertinenza per i designer/ricercatori in Web3 e casi d'uso di progettazione comuni in Web3 + +a. L'argomento dell'articolo dovrebbe essere pertinente per i progettisti e ricercatori in Web3, incentrandosi sui casi d'uso di progettazione in Web3 comuni. + +2. Qualità di base della scrittura + +a. L'articolo dovrebbe essere privo di errori grammaticali e ortografici. + +b. L'enfasi dovrebbe esser posta sulla fornitura di informazioni e insegnamenti fondamentali. + +c. La scrittura dovrebbe essere concisa e pertinente. + +3. Obiettivo del testo + +a. L'obiettivo principale dell'articolo dovrebbe essere la condivisione di informazioni dettagliate piuttosto che la promozione di un progetto o un'azienda in particolare. + +## Comunità / DAO {#Communities-and-DAOs} + +1. Il sito web dovrebbe indicare chiaramente come aderire alla DAO/Comunità + +2. Vantaggi chiari dell'adesione + +a. I benefici dell'adesione dovrebbero essere mostrati in modo visibile. + +**Esempi**: ricevere feedback sul lavoro, accedere a opportunità lavorative o ricompense per segnalazioni, condividere informazioni di progettazione e ricerca. + +3. Comunicazione attiva e vivace su Discord + +a. La comunità di Discord dovrebbe mostrare una comunicazione vivace e impegnata. + +b. I moderatori dovrebbero essere coinvolti attivamente nel mantenimento della comunità e nel facilitare le discussioni. + +c. La comunità dovrebbe dimostrare conversazioni precedenti preziose e produttive nell'ambito delle ultime due settimane. + +Aderendo a tali criteri, miriamo a promuovere un ambiente prosperoso e di condivisione della conoscenza nella nostra comunità. Crediamo che questa politica di elencazione assicurerà che i nostri utenti abbiano accesso a risorse affidabili, pertinenti e piene di informazioni. Grazie per la tua comprensione e cooperazione nel mantenimento della qualità dei contenuti, sulla nostra piattaforma. diff --git a/src/content/translations/it/contributing/design/index.md b/src/content/translations/it/contributing/design/index.md new file mode 100644 index 00000000000..0706c6b385b --- /dev/null +++ b/src/content/translations/it/contributing/design/index.md @@ -0,0 +1,77 @@ +--- +title: Contributi di progettazione +description: Contributi di progettazione a ethereum.org +lang: it +--- + +# Contributi di progettazione a ethereum.org {#design-contributions} + +La progettazione è un componente fondamentale di qualsiasi progetto e, dedicando il tuo tempo e le tue abilità di progettazione a Ethereum.org, puoi aiutare a migliorare l'esperienza dei nostri visitatori. Contribuire a un progetto open source fornisce l'opportunità di acquisire un'esperienza rilevante e sviluppare le tue competenze in un ambiente collaborativo. Avrai la possibilità di collaborare con altri progettisti, sviluppatori e membri della comunità, che avranno le proprie prospettive e informazioni originali. + +Infine, questo è un ottimo modo per creare un portafoglio diversificato e suggestivo, che dimostri le tue abilità di progettazione. + +## Come contribuire? + +### 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. + +1. Il team di progettazione condividerà un design di prova su [Discord](https://discord.com/invite/CetY6Y4) e su [GitHub](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8). +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} + +Fornisci feedback tramite il nostro sito web: + +1. Visitando ethereum.org e leggendo le pagine. +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} + +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. + +1. Visita il sito web e presta attenzione al suo design. +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} + +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). + +1. Visita il sito web e presta attenzione al suo design o visita la nostra repository di GitHub e revisiona i ticket contrassegnati dal [tag "Design richiesto"](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8). +2. Idea la soluzione e progettala. (preferibilmente utilizzando il nostro [sistema di progettazione](https://www.figma.com/community/file/1134414495420383395)). +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} + +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. + +1. Seleziona un ticket su cui lavorare dalla [bacheca del sistema di progettazione](https://github.com/ethereum/ethereum-org-website/labels/design%20system) su GitHub o creane uno nuovo. +2. Richiedi che il ticket selezionato ti sia assegnato. +3. Inizia a progettare il componente richiesto in figma. +4. Condividilo con il team di progettazione su GitHub quando ti serve una revisione o una guida. +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} + +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). + +1. Crea argomenti di progettazione che dovrebbero essere coperti su ethereum.org e che sarebbero di beneficio per i progettisti nello spazio. +2. Vai alla nostra repository di GitHub e [apri un ticket](https://github.com/ethereum/ethereum-org-website/issues/new), proponendo un argomento (senza scriverne ancora i contenuti). +3. Attendi che il team di progettazione lo approvi. +4. Una volta approvato, scrivi i contenuti. +5. Inviali nel ticket di GH corrispondente. + +### 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. + +1. Visita il nostro sito web e visualizza le pagine in cui potrebbero essere aggiunte delle nuove infografiche. +2. Assicurati che lo stile di illustrazione corrisponda alle nostre [risorse](/assets/). +3. Visita la nostra repository di GitHub e [apri un ticket](https://github.com/ethereum/ethereum-org-website/issues/new) proponendo l'illustrazione. +4. Il team di progettazione la revisionerà. +5. Creeremo un nuovo ticket per chiedere a uno sviluppatore di implementare la nuova immagine. diff --git a/src/content/translations/it/contributing/index.md b/src/content/translations/it/contributing/index.md index baefa3c1699..28ca07a0862 100644 --- a/src/content/translations/it/contributing/index.md +++ b/src/content/translations/it/contributing/index.md @@ -17,18 +17,21 @@ Il sito web di ethereum.org e, più in generale, Ethereum, è un progetto open-s - [Lavora su un ticket aperto](https://github.com/ethereum/ethereum-org-website/issues) _– Attività che abbiamo identificato come necessarie_ - [Unisciti al programma di traduzione](/contributing/translation-program/) _– Aiutaci a offrire ethereum.org in nuove lingue_ -- [Aggiungi risorse della community](/contributing/content-resources/) _– Aggiungi un articolo o risorsa utili a una pagina rilevante_ +- [Aiuta a progettare il sito web](/contributing/design/): _i progettisti di tutti i livelli possono contribuire a migliorare il sito web_ +- [Aggiungi risorse della comunità](/contributing/content-resources/) _– Aggiungi un articolo o risorsa utile a una pagina rilevante_ - [Aggiungi un prodotto](/contributing/adding-products/) _– Aggiungi una dapp o un portafoglio a una pagina rilevante_ - [Aggiungi strumenti per sviluppatori](/contributing/adding-developer-tools/) _– Aggiungi uno strumento per sviluppatori a una pagina rilevante_ - [Aggiungi una piattaforma di scambio](/contributing/adding-exchanges/) _– Aggiungi una piattaforma di scambio al nostro [strumento di ricerca dedicato](/get-eth/#country-picker)_ - [Migliora la nostra ricerca](https://www.notion.so/efdn/Ethereum-org-User-Persona-Memo-b44dc1e89152457a87ba872b0dfa366c) _– Comunicaci il tuo feedback sulla nostra ricerca o contribuisci direttamente_ -- [Richiedi una funzionalità](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&projects=&template=feature_request.yaml&title=Feature+request) _– Condividi con noi le tue idee per nuove funzionalità o design_ -- [Aggiungi un termine del glossario](/contributing/adding-glossary-terms) _– Aiutaci a continuare a espandere il [glossario](/glossary/) di Ethereum_ -- [Crea/modifica contenuti](/contributing/#how-to-update-content) _– Suggerisci nuove pagine o apporta modifiche a quelle già esistenti_ -- [Aggiungi un livello 2](/contributing/adding-layer-2s/) _- Aggiungi un livello 2 a una pagina pertinente_ -- [Aggiungi un prodotto o servizio di staking](/contributing/adding-staking-products/) - _Aggiungi un progetto che aiuti a facilitare lo staking in solo, in pool o lo staking come servizio_ +- [Richiedi una funzionalità](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=): _comunicaci qualsiasi idea che hai per una nuova funzionalità o design_ +- [Aggiungi un termine al glossario](/contributing/adding-glossary-terms) _– Aiutaci a continuare a espandere il [glossario](/glossary/) di Ethereum_ +- [Crea/modifica i contenuti](/contributing/#how-to-update-content): _suggerisci nuove pagine o apporta modifiche a ciò che c'è già_ +- [Aggiungi un livello 2](/contributing/adding-layer-2s/): _Aggiungi un livello 2 a una pagina pertinente_ +- [Aggiungi un prodotto o servizio di staking](/contributing/adding-staking-products/): _aggiungi un progetto che aiuti a facilitare lo staking in solo, in gruppo o lo staking come servizio_ - [Aggiungi un portafoglio](/contributing/adding-wallets/) _– Aggiungi un portafoglio per la [pagina trova portafogli](/wallets/find-wallet/)_ - [Suggerisci un progetto per la nostra pagina DeSci](/contributing/adding-desci-projects/) _- Aggiungi un progetto basato su Ethereum che contribuisca alla scienza decentralizzata_ +- [Quiz](/contributing/quizzes/)_: aggiungi, aggiorna ed elimina le banche di domande dei quiz per una pagina rilevante_ +- [Suggerisci una risorsa di progettazione](/contributing/design/adding-design-resources/)_: aggiungi, aggiorna ed elimina le risorse di progettazione utili_ _Hai domande?_ Consulta il nostro [server Discord](https://discord.gg/CetY6Y4) @@ -48,6 +51,7 @@ Prima di contribuire, assicurati di avere familiarità con: - la [visione in evoluzione di ethereum.org](/about/) - i nostri [principi di progettazione](/contributing/design-principles/) - la nostra [guida di stile](/contributing/style-guide/) +- il nostro [codice di condotta](/community/code-of-conduct) ## Come vengono prese le decisioni sul sito {#how-decisions-about-the-site-are-made} diff --git a/src/content/translations/it/contributing/quizzes/index.md b/src/content/translations/it/contributing/quizzes/index.md new file mode 100644 index 00000000000..3ff223e8688 --- /dev/null +++ b/src/content/translations/it/contributing/quizzes/index.md @@ -0,0 +1,62 @@ +--- +title: Aggiungere un quiz +description: La politica che usiamo per aggiungere i quiz su ethereum.org +lang: it +--- + +# Quiz {#quizzes} + +I quiz sono opportunità per gli utenti per mettersi alla prova per vedere se hanno compreso i contenuti della pagina che hanno letto. Le domande devono basarsi solo sul contenuto fornito nella pagina e non devono chiedere informazioni che non sono menzionate nella pagina. + +Le domande sono strutturate come segue. Il prompt della domanda, 1 risposta corretta con una spiegazione del perché è corretta, 3 risposte sbagliate con la spiegazione del perché sono sbagliate. + +Alcuni esempi di quiz aggiornati possono essere trovati qui: + +- [Livello 2](/layer-2) +- [NFT](/nft/) +- [Cos'è Ethereum?](/what-is-ethereum/) +- [Cos'è ETH?](/eth/) + +## Aggiungere un quiz di apprendimento + +Se c'è una pagina per la quale non è stato creato un quiz di apprendimento, [aprire un ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) per questa pagina. + +Fornire le seguenti informazioni: + +- La pagina su cui si desidera aggiungere un quiz +- 5 domande con le seguenti informazioni: + - La sezione della pagina su cui si basa la domanda + - Il prompt della domanda + - 1 risposta corretta con una spiegazione del perché è corretta + - 3 risposte sbagliate, ognuna con una spiegazione per perché sono sbagliate + +## Aggiungere una domanda al quiz + +Se c'è una domanda che si desidera aggiungere alla banca delle domande del quiz, [aprire un ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) e fornire le seguenti informazioni: + +- La pagina su cui si desidera aggiunge la domanda al quiz +- Per ogni domanda fornire le seguenti informazioni: + - La sezione della pagina su cui si basa la domanda + - Il prompt della domanda + - 1 risposta corretta con una spiegazione del perché è corretta + - 3 risposte sbagliate, ognuna con una spiegazione per perché sono sbagliate + +## Aggiornare una domanda del quiz + +Se c'è una domanda che si desidera aggiornare nella banca delle domande del quiz, [aprire un ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) e fornire le seguenti informazioni: + +- La pagina su cui si vuole aggiornare una domanda del quiz +- Per ogni domanda che deve essere aggiornata, fornire le seguenti informazioni: + - La sezione della pagina su cui si basa la domanda + - Il prompt della domanda della domanda che si vuole aggiornare + - Il prompt della domanda aggiornato + - 1 risposta corretta con una spiegazione del perché è corretta + - 3 risposte sbagliate, ognuna con una spiegazione per perché sono sbagliate + +## Rimuovere una domanda dal quiz + +Se il contenuto di una domanda non esiste più nella pagina e questa deve essere rimossa, [aprire un ticket](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml) per rimuovere la domanda e fornire le seguenti informazioni: + +- La pagina su cui si vuole eliminare una domanda del quiz +- La domanda che si vuole cancellare +- La spiegazione, se necessaria, del perché la domanda dovrebbe essere rimossa diff --git a/src/content/translations/it/contributing/translation-program/faq/index.md b/src/content/translations/it/contributing/translation-program/faq/index.md index 722132b8f6c..fcd38a9dad8 100644 --- a/src/content/translations/it/contributing/translation-program/faq/index.md +++ b/src/content/translations/it/contributing/translation-program/faq/index.md @@ -83,7 +83,7 @@ Il glossario Crowdin è la risorsa più adatta per chiarire termini e definizion ### Politica sulla traduzione della terminologia {#terminology} -_Per i nomi (marchi, aziende, persone) e i nuovi termini tecnologici (Beacon Chain, catene di frammenti, etc.)_ +_Per i nomi (marchi, aziende, persone) e i nuovi termini tecnologici (Beacon Chain, catene di frammenti, ecc.)_ Ethereum presenta molti termini nuovi, che sono stati coniati di recente. Può succedere che alcuni termini varino da un traduttore all'altro, in ragione dell'assenza di una traduzione ufficiale nella rispettiva lingua. Tali incongruenze possono causare malintesi e ridurre la leggibilità. diff --git a/src/content/translations/it/contributing/translation-program/how-to-translate/index.md b/src/content/translations/it/contributing/translation-program/how-to-translate/index.md new file mode 100644 index 00000000000..65dd54651b2 --- /dev/null +++ b/src/content/translations/it/contributing/translation-program/how-to-translate/index.md @@ -0,0 +1,89 @@ +--- +title: Come tradurre +lang: it +description: Istruzioni per l'uso di Crowdin per tradurre ethereum.org +--- + +# Come tradurre {#how-to-translate} + +## Guida visiva {#visual-guide} + +Se preferisci un approccio più visivo, consulta la guida di Luka per l'impostazione di Crowdin. Altrimenti, puoi trovare gli stessi passaggi in formato scritto nella sezione successiva. + + + +## Guida scritta {#written-guide} + +### Unisciti al nostro progetto su Crowdin {#join-project} + +Dovrai accedere al tuo profilo di Crowdin o registrarti se non ne hai già uno. Per iscriversi bastano un account di posta elettronica e una password. + + + Unisciti al progetto + + +### Apri la tua lingua {#open-language} + +Dopo aver effettuato l'accesso a Crowdin, vedrai una descrizione del progetto e l'elenco di tutte le lingue disponibili. Ogni lingua, inoltre, contiene le informazioni sulla quantità totale di parole traducibili e una panoramica di quanti contenuti sono stati tradotti e approvati in una lingua specifica. + +Apri la lingua verso cui desideri tradurre per visualizzare l'elenco dei file disponibili per la traduzione. + +![Elenco delle lingue in Crowdin](./list-of-languages.png) + +### Trova un documento su cui lavorare {#find-document} + +I contenuti del sito web sono divisi in una serie di documenti e contenitori. Puoi controllare lo stato di avanzamento di ciascun documento sul lato destro – se l'avanzamento della traduzione è inferiore al 100%, ti invitiamo a contribuire! + +Non vedi la tua lingua nell'elenco? [Apri una segnalazione](https://github.com/ethereum/ethereum-org-website/issues/new/choose) o chiedi nel nostro [Discord](/discord/) + +![File tradotti e non tradotti su Crowdin](./crowdin-files.png) + +Una nota sulle categorie di contenuti: usiamo le "categorie di contenuti" in Crowdin per rilasciare per primi i contenuti con maggiore priorità. Quando controlli una lingua, ad esempio il [Filippino](https://crowdin.com/project/ethereum-org/fil#), vedrai le cartelle per categoria dei contenuti ("1. Pagina Iniziale", "2. Elementi essenziali", "3. Esplorazione", ecc.). + +Ti invitiamo a tradurre in questo ordine numerico (1 → 2 → 3 → ⋯) per garantire che le pagine ad impatto più alto siano tradotte prima. + +[Scopri di più sulle categorie di contenuti di ethereum.org](/contributing/translation-program/content-buckets/) + +### Traduci {#translate} + +Dopo aver selezionato il file che desideri tradurre, si aprirà nell'editor online. Se non hai mai usato Crowdin prima d'ora, puoi usare questa guida rapida per apprendere le basi. + +![Editor online di Crowdin](./online-editor.png) + +**_1 – Barra laterale sinistra_** + +- Non tradotto (rosso) - il testo che non è stato ancora tradotto. Si tratta delle stringhe che dovresti tradurre. +- Tradotto (verde) - il testo che è già stato tradotto, ma non ancora revisionato. Sei il benvenuto per suggerire traduzioni alternative o votare quelle esistenti usando i tasti "+" e "-" nell'editor. +- Approvato (spunta) - il testo che è già stato revisionato ed è attualmente mostrato sul sito web. + +Puoi anche usare i pulsanti in cima per cercare stringhe specifiche, filtrarle per stato o cambiare la vista. + +**_2 – Area dell'editor_** + +L'area di traduzione principale; il testo sorgente è mostrato in cima, con contesto aggiuntivo e screenshot, se disponibili. Per suggerire una nuova traduzione, inseriscila nel campo "Inserisci qui la traduzione" e clicca Salva. + +Puoi anche trovare le traduzioni esistenti della stringa e le traduzioni in altre lingue in questa sezione, nonché le corrispondenze della memoria di traduzione e i suggerimenti della traduzione automatica. + +**_3 – Barra laterale destra_** + +Qui puoi trovare i commenti, i suggerimenti della memoria di traduzione e le voci del glossario. La vista predefinita mostra i commenti e consente ai traduttori di comunicare, segnalare problemi o traduzioni errate. + +Usando i pulsanti in cima, puoi anche passare alla memoria di traduzione, dove puoi cercare le traduzioni esistenti, o al glossario, che contiene le descrizioni e le traduzioni standard dei termini chiave. + +Vuoi saperne di più? Sentiti libero di dare un'occhiata alla [documentazione sull'uso dell'editor online di Crowdin](https://support.crowdin.com/online-editor/) + +### Processo di revisione {#review-process} + +Una volta completata la traduzione (cioè, tutti i file per una categoria di contenuti mostrano il 100%), il nostro servizio di traduzione professionale revisionerà (ed eventualmente modificherà) i contenuti. Una volta completata la revisione (ovvero quando lo stato di avanzamento della revisione è al 100%), aggiungeremo il contenuto al sito web. + + + Si prega di non utilizzare la traduzione automatica per tradurre il progetto. Tutte le traduzioni saranno revisionate prima di essere aggiunte al sito web. Se le traduzioni suggerite sono tradotte automaticamente, saranno rimosse e i collaboratori che utilizzano spesso la traduzione automatica saranno rimossi dal progetto. + + +### Contattaci {#get-in-touch} + +Hai domande? O desideri collaborare con il nostro team e altri traduttori? Ti invitiamo a pubblicare nel canale #translations del nostro [server Discord ethereum.org](/discord/) + +Puoi anche contattarci all'indirizzo translations@ethereum.org + +Grazie per la tua partecipazione al programma di traduzione di ethereum.org! diff --git a/src/content/translations/it/contributing/translation-program/index.md b/src/content/translations/it/contributing/translation-program/index.md index a7c2ddfbc23..4c7ee00926e 100644 --- a/src/content/translations/it/contributing/translation-program/index.md +++ b/src/content/translations/it/contributing/translation-program/index.md @@ -36,8 +36,8 @@ Leggi di più sulla [missione e visione](/contributing/translation-program/missi ### I nostri progressi finora {#our-progress} -- [**Oltre 4.700** traduttori](/contributing/translation-program/contributors/) -- [**52** lingue presenti sul sito](/languages/) +- [**Oltre 5.100** traduttori](/contributing/translation-program/contributors/) +- [**54** lingue presenti sul sito](/languages/) - [**3 milioni** di parole tradotte nel 2022](/contributing/translation-program/acknowledgements/) @@ -66,14 +66,14 @@ Pensiamo costantemente a modi nuovi e innovativi per premiare i nostri collabora ### Guide e risorse {#guides-and-resources} -Se stai contribuendo al Programma di Traduzione o stai pensando di partecipare, dovresti dare un'occhiata alle seguenti guide alla traduzione: +Se stai contribuendo al programma di traduzione o stai pensando di partecipare, dovresti dare un'occhiata alle seguenti guide alla traduzione: -- [Guida di Stile di Traduzione](/contributing/translation-program/translators-guide/) _– istruzioni e suggerimenti per i traduttori di ethereum.org_ -- [FAQ di Traduzione](/contributing/translation-program/faq/) _– domande e risposte frequenti sul Programma di Traduzione di ethereum.org_ +- [Guida allo stile di traduzione](/contributing/translation-program/translators-guide/) _– istruzioni e suggerimenti per i traduttori di ethereum.org_ +- [FAQ sulle traduzioni](/contributing/translation-program/faq/) _– domande e risposte frequenti sul programma di traduzione di ethereum.org_ - [Guida all'editor online di Crowdin](https://support.crowdin.com/online-editor/) _– una guida approfondita all'uso dell'editor online di Crowdin e di alcune funzionalità avanzate di Crowdin_ -- [Categorie di contenuti](/contributing/translation-program/content-buckets/) _– quali pagine sono incluse in ogni categoria di contenuto di ethereum.org_ +- [Categorie di contenuti](/contributing/translation-program/content-buckets/) _– quali pagine sono incluse in ogni categoria di contenuti di ethereum.org_ -Per altri utili strumenti di traduzione, le community di traduttori e i post del blog del Programma di Traduzione, visita la [pagina delle risorse](/contributing/translation-program/resources/). +Per altri utili strumenti di traduzione, le comunità di traduttori e i post del blog del programma di traduzione, visita la [pagina delle risorse](/contributing/translation-program/resources/). ## Contattaci {#get-in-touch} @@ -83,8 +83,8 @@ Puoi anche contattarci all'indirizzo translations@ethereum.org ## Avviare il proprio programma di traduzione {#starting-a-translation-program} -Ci impegniamo nella traduzione dei contenuti di Ethereum in quante più lingue possibile e nel rendere i contenuti educativi disponibili per tutti. In linea con la nostra attenzione alle traduzioni, vogliamo aiutare gli altri progetti di Ethereum a organizzare, gestire e migliorare i propri sforzi traduttivi. +Ci impegniamo nella traduzione dei contenuti di Ethereum in quante più lingue possibile e nel rendere i contenuti istruttivi disponibili per tutti. In linea con la nostra attenzione alle traduzioni, vogliamo aiutare gli altri progetti di Ethereum a organizzare, gestire e migliorare i propri sforzi relativi alle traduzioni. -Per questo motivo, abbiamo creato un [manuale del Programma di Traduzione](/contributing/translation-program/playbook/) contenente alcuni consigli e buone pratiche scelte nel processo di traduzione di ethereum.org. +Per questo motivo abbiamo creato un [manuale del programma di traduzione](/contributing/translation-program/playbook/) contenente alcuni consigli e buone pratiche scelte nel processo di traduzione di ethereum.org. Desideri collaborare ulteriormente o usare alcune delle nostre risorse di traduzione? Hai qualche commento sul manuale? Vorremmo sentire il tuo parere su translations@ethereum.org. diff --git a/src/content/translations/it/contributing/translation-program/mission-and-vision/index.md b/src/content/translations/it/contributing/translation-program/mission-and-vision/index.md new file mode 100644 index 00000000000..177d8005cb7 --- /dev/null +++ b/src/content/translations/it/contributing/translation-program/mission-and-vision/index.md @@ -0,0 +1,25 @@ +--- +title: Missione e visione +lang: it +description: La missione e la visione del programma di traduzione di ethereum.org +--- + +# Missione e visione {#mission-and-vision} + +La community di Ethereum mira a essere globale e inclusiva, ma gran parte dei suoi contenuti si rivolge solo a chi parla inglese, tralasciando i 6 miliardi di non anglofoni nel mondo. Affinché ethereum.org possa fungere da portale di accesso a Ethereum per la comunità mondiale, riteniamo che sia essenziale fornire a chi non parla inglese i contenuti nelle loro lingue native. + +Il programma di traduzione di ethereum.org mira a rendere Ethereum accessibile a tutti traducendo ethereum.org e altri contenuti Ethereum in quante più lingue possibile. + +## La nostra missione {#our-mission} + +- Fornire versioni tradotte del sito per consentire ai visitatori di tutto il mondo di conoscere Ethereum nella loro lingua madre +- Facilitare l'adesione di più membri nella comunità globale di Ethereum +- Consentire una condivisione più accessibile e inclusiva delle informazioni e delle conoscenze di Ethereum +- Mettere i membri della comunità nelle condizioni di poter contribuire alle traduzioni di Ethereum e lasciare il loro segno sull'ecosistema +- Identificare, connettersi e fornire indicazioni ai collaboratori appassionati che desiderano essere coinvolti nell'ecosistema + +## La nostra visione {#our-vision} + +- Tradurre contenuti essenziali per i membri della comunità Ethereum da quanti più paesi e parti del mondo possibile +- Sostenere la condivisione delle conoscenze tra le lingue per creare una comunità di Ethereum meglio informata ed istruita +- Aumentare l'inclusività e l'accessibilità di Ethereum rimuovendo le barriere linguistiche che impediscono ai non anglofoni di unirsi all'ecosistema diff --git a/src/content/translations/it/contributing/translation-program/resources/index.md b/src/content/translations/it/contributing/translation-program/resources/index.md new file mode 100644 index 00000000000..e36462c4803 --- /dev/null +++ b/src/content/translations/it/contributing/translation-program/resources/index.md @@ -0,0 +1,45 @@ +--- +title: Risorse per traduttori +lang: it +description: Risorse utili per i traduttori di ethereum.org +--- + +# Risorse {#resources} + +Puoi trovare utili guide e strumenti per i traduttori di ethereum.org, nonché le comunità e gli aggiornamenti di traduzione qui di seguito. + +## Guide {#guides} + +- [Guida allo stile di traduzione](/contributing/translation-program/translators-guide/): _istruzioni e consigli per i traduttori di ethereum.org_ +- [FAQ sulle traduzioni](/contributing/translation-program/faq/) _– domande e risposte frequenti sul programma di traduzione di ethereum.org_ +- [Guida all'editor online di Crowdin](https://support.crowdin.com/online-editor/) _– una guida approfondita all'uso dell'editor online di Crowdin e di alcune funzionalità avanzate di Crowdin_ +- [Categorie di contenuti](/contributing/translation-program/content-buckets/) _– quali pagine sono incluse in ogni categoria di contenuti di ethereum.org_ + +## Strumenti {#tools} + +- [Portale linguistico di Microsoft](https://www.microsoft.com/en-us/language): _utile per trovare e controllare le traduzioni standard dei termini tecnici_ +- [Linguee](https://www.linguee.com/): _motore di ricerca per traduzioni e dizionario che consente di cercare per parola o per frase_ +- [Ricerca di termini di Proz](https://www.proz.com/search/): _database di dizionari e glossari di traduzione per termini specializzati_ +- [Eurotermbank](https://www.eurotermbank.com/): _raccolte di terminologie europee in 42 lingue_ + +## Community {#communities} + +- [Gruppi di traduzione Discord specifici per lingua](/discord/): _un'iniziativa per connettere i traduttori di ethereum.org in gruppi di traduzione_ +- [Gruppo di traduttori di cinese](https://www.notion.so/Ethereum-org-05375fe0a94c4214acaf90f42ba40171): _pagina di nozioni per una più facile coordinazione tra i traduttori di lingua cinese_ + +## Ultimi aggiornamenti {#latest-updates} + +Per mantenerti aggiornato sui più recenti progressi del programma di traduzione, puoi seguire il [blog della Ethereum Foundation](https://blog.ethereum.org/): + +- [Aggiornamento sui traguardi di ottobre 2021](https://blog.ethereum.org/2021/10/04/translation-program-update/) +- [Aggiornamento sui traguardi di dicembre 2020](https://blog.ethereum.org/2020/12/21/translation-program-milestones-updates-20/) +- [Aggiornamento sui traguardi di luglio 2020](https://blog.ethereum.org/2020/07/29/ethdotorg-translation-milestone/) +- [Lancio del programma di traduzione, agosto 2019](https://blog.ethereum.org/2019/08/20/translating-ethereum-for-our-global-community/) + +## Orario d'ufficio per traduttori {#office-hours} + +Abbiamo previsto un orario d'ufficio per i traduttori ogni secondo mercoledì del mese. Questi si svolgono nel canale vocale #office-hours sul [Discord di ethereum.org](/discord/), dove potrai anche trovare gli orari esatti e dettagli aggiuntivi. + +Lo scopo degli orari d'ufficio è quello di consentire ai nostri traduttori di fare domande sul processo di traduzione, fornire suggerimenti sul programma, condividere le loro idee, o semplicemente chattare con noi. Infine, vogliamo utilizzare queste chiamate per comunicare gli sviluppi recenti del programma di traduzione e condividere consigli fondamentali e istruzioni con i nostri collaboratori. + +Se sei un traduttore di ethereum.org o vorresti diventarlo, sentiti libero di unirti a noi durante una di queste sessioni. diff --git a/src/content/translations/it/deprecated-software/index.md b/src/content/translations/it/deprecated-software/index.md new file mode 100644 index 00000000000..83ca4443abe --- /dev/null +++ b/src/content/translations/it/deprecated-software/index.md @@ -0,0 +1,482 @@ +--- +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/src/content/translations/it/developers/docs/accounts/index.md b/src/content/translations/it/developers/docs/accounts/index.md index 15660febb4e..04895dd9a25 100644 --- a/src/content/translations/it/developers/docs/accounts/index.md +++ b/src/content/translations/it/developers/docs/accounts/index.md @@ -8,7 +8,7 @@ Un conto di Ethereum è un'entità con un saldo in ether (ETH) che può inviare ## Prerequisiti {#prerequisites} -I conti sono un argomento piuttosto basilare. Ma per meglio comprendere questa pagina, ti consigliamo innanzi tutto di leggere la nostra [introduzione a Ethereum](/developers/docs/intro-to-ethereum/). +Per aiutarti a comprendere meglio questa pagina ti consigliamo prima di leggere l'[introduzione a Ethereum](/developers/docs/intro-to-ethereum/). ## Tipi di conto {#types-of-account} @@ -120,6 +120,8 @@ Fatti guidare da Austin attraverso le funzionalità di hash e le coppie di chiav ## Ulteriori letture {#further-reading} +- [Capire i conti di Ethereum](https://info.etherscan.com/understanding-ethereum-accounts/) - etherscan + _Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_ ## Argomenti correlati {#related-topics} diff --git a/src/content/translations/it/developers/docs/apis/backend/index.md b/src/content/translations/it/developers/docs/apis/backend/index.md index c8ee2d3b450..6b1169a0915 100644 --- a/src/content/translations/it/developers/docs/apis/backend/index.md +++ b/src/content/translations/it/developers/docs/apis/backend/index.md @@ -143,14 +143,33 @@ Queste librerie eliminano buona parte della complessità legata al dover interag - [Discord](https://discord.com/invite/KYswaxwEtg) - [Forum](https://forum.moralis.io/) -\*_GetBlock- Blockchain-as-a-service per lo sviluppo in Web3_ +**Chainbase -** **_Infrastruttura dati web3 tutto in uno per Ethereum._** + +- [chainbase.com](https://chainbase.com/) +- [Documentazione](https://docs.chainbase.com/) +- [Discord](https://discord.gg/Wx6qpqz4AF) + +**GetBlock-** **_Blockchain-as-a-service per lo sviluppo Web3_** - [GetBlock.io](https://getblock.io/) - [Documentazione](https://getblock.io/docs/) +**BlockPi -** **_Fornire servizi RPC più efficienti e veloci_** + +- [blockpi.io](https://blockpi.io/) +- [Documentazione](https://docs.blockpi.io/) +- [GitHub](https://github.com/BlockPILabs) +- [Discord](https://discord.com/invite/xTvGVrGVZv) + +**Tokenview -** **_La piattaforma generale per API blockchain multi-criptovaluta._** + +- [services.tokenview.io](https://services.tokenview.io/) +- [Documentazione](https://services.tokeniew/docs?type=api) +- [Github](https://github.com/Tokenview) + ## Letture consigliate {#further-reading} -_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_ +_Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ ## Argomenti correlati {#related-topics} @@ -160,4 +179,4 @@ _Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e ag ## Tutorial correlati {#related-tutorials} - [Set up Web3js to use the Ethereum blockchain in JavaScript](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– Istruzioni per impostare web3.js in un progetto._ -- [Chiamare un contratto intelligente da JavaScript](/developers/tutorials/calling-a-smart-contract-from-javascript/): _Usando il token DAI, impara come chiamare la funzione dei contratti usando JavaScript._ +- [Calling a Smart Contract from JavaScript](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– Usando il token DAI, impara come funzionano i contratti di chiamata con JavaScript_ diff --git a/src/content/translations/it/developers/docs/apis/javascript/index.md b/src/content/translations/it/developers/docs/apis/javascript/index.md index e5a5dd998d8..5d7b717c7bf 100644 --- a/src/content/translations/it/developers/docs/apis/javascript/index.md +++ b/src/content/translations/it/developers/docs/apis/javascript/index.md @@ -56,7 +56,7 @@ var net = require("net") var web3 = new Web3("/Users/myuser/Library/Ethereum/geth. pc", net) // mac os path // o var web3 = new Web3( - new Web3.providers.pcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net) + new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net) ) // percorso MacOS // in Windows il percorso è: "\\\\.\\pipe\\geth.ipc" // in Linux il percorso è: "/users/myuser/.ethereum/geth.ipc"Web3 @@ -282,11 +282,11 @@ ethers.utils.formatEther(balance) ## Letture consigliate {#further-reading} -_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_ +_Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ ## Argomenti correlati {#related-topics} -- [Nodi e client](/developers/docs/nodes-and-clients/) +- [ Nodi e client](/developers/docs/nodes-and-clients/) - [Quadri di sviluppo](/developers/docs/frameworks/) ## Tutorial correlati {#related-tutorials} diff --git a/src/content/translations/it/developers/docs/apis/json-rpc/index.md b/src/content/translations/it/developers/docs/apis/json-rpc/index.md index 86e1394a79c..6a1a398aaa7 100644 --- a/src/content/translations/it/developers/docs/apis/json-rpc/index.md +++ b/src/content/translations/it/developers/docs/apis/json-rpc/index.md @@ -358,7 +358,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":6 } ``` -## eth_chainId {#eth_chainId} +### eth_chainId {#eth_chainId} Restituisce l'ID della catena utilizzato per firmare le transazioni protette da riproduzione. @@ -468,7 +468,7 @@ Nessuno **Restituisce** -`Array of DATA`, 20 Byte; indirizzi posseduti dal client. +`Array of DATA`, 20 byte; indirizzi posseduti dal client. **Esempio** @@ -514,7 +514,7 @@ Restituisce il saldo del conto dell'indirizzo dato. **Parametri** -1. `DATA`, 20 Byte - indirizzo per controllare il saldo. +1. `DATA`, 20 byte - indirizzo per controllare il saldo. 2. `QUANTITY|TAG` - numero intero del blocco, o stringa `"latest"`, `"earliest"` o `"pending"`. Vedere il [parametro predefinito del blocco](/developers/docs/apis/json-rpc/#default-block) ```js @@ -544,7 +544,7 @@ Restituisce il valore da una posizione di archiviazione a un dato indirizzo. **Parametri** -1. `DATA`, 20 Bytes - Indirizzo di archiviazione. +1. `DATA`, 20 byte - Indirizzo di archiviazione. 2. `QUANTITY` - intero della posizione di archiviazione. 3. `QUANTITY|TAG` - numero intero del blocco, o stringa `"latest"`, `"earliest"` o `"pending"`. Vedere il [parametro predefinito del blocco](/developers/docs/apis/json-rpc/#default-block) @@ -611,7 +611,7 @@ Restituisce il numero di transazioni _inviate_ da un indirizzo. **Parametri** -1. `DATA`, 20 Bytes - indirizzo. +1. `DATA`, 20 byte - indirizzo. 2. `QUANTITY|TAG` - numero intero del blocco, o stringa `"latest"`, `"earliest"` o `"pending"`. Vedere il [parametro predefinito del blocco](/developers/docs/apis/json-rpc/#default-block) ```js @@ -644,7 +644,7 @@ Restituisce il numero di transazioni in un blocco da un blocco corrispondente al **Parametri** -1. `DATA`, 32 Byte - hash di un blocco +1. `DATA`, 32 byte - hash di un blocco ```js params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"] @@ -764,7 +764,7 @@ Restituisce il codice ad un indirizzo specificato. **Parametri** -1. `DATA`, 20 Bytes - indirizzo +1. `DATA`, 20 byte - indirizzo 2. `QUANTITY|TAG` - numero intero del blocco, o stringa `"latest"`, `"earliest"` o `"pending"`. Vedere il [parametro predefinito del blocco](/developers/docs/apis/json-rpc/#default-block) ```js @@ -802,7 +802,7 @@ Nota: l'indirizzo con cui firmare deve essere sbloccato. **Parametri** 1. `DATA`, 20 Bytes - indirizzo -2. `DATA`, N Byte - messaggio da firmare +2. `DATA`, N byte - messaggio da firmare **Restituisce** @@ -862,8 +862,8 @@ Se il campo dati contiene codice, crea una nuova transazione di chiamata di mess 1. `Oggetto` - L'oggetto della transazione -- `from`: `DATA`, 20 Bytes - L'indirizzo da cui viene inviata la transazione. -- `to`: `DATA`, 20 Bytes - (opzionale quando si crea un nuovo contratto) L'indirizzo a cui è indirizzata la transazione. +- `from`: `DATA`, 20 byte - L'indirizzo da cui viene inviata la transazione. +- `to`: `DATA`, 20 byte - (facoltativo quando si crea un nuovo contratto) L'indirizzo a cui è indirizzata la transazione. - `gas`: `QUANTITY` - (facoltativo, predefinito: 90000) Intero del carburante fornito per l'esecuzione della transazione. Restituirà il carburante inutilizzato. - `gasPrice`: `QUANTITY` - (facoltativo, predefinito: To-Be-Determined) Intero del gasPrice usato per ogni unità di carburante pagata. - `value`: `QUANTITY` - (facoltativo) Intero del valore inviato con questa transazione, in Wei. @@ -918,7 +918,7 @@ params: [ **Restituisce** -`DATA`, 32 Bytes - l'hash della transazione, o l'hash zero se la transazione non è ancora disponibile. +`DATA`, 32 byte - l'hash della transazione, o l'hash zero se la transazione non è ancora disponibile. Usa [eth_getTransactionReceipt](#eth_gettransactionreceipt) quando hai creato un contratto per ottenere l'indirizzo del contratto dopo che la transazione è stata minata. @@ -943,8 +943,8 @@ Esegue immediatamente una nuova chiamata di messaggio senza creare una transazio 1. `Object` - L'oggetto della chiamata della transazione -- `from`: `DATA`, 20 Bytes - (facoltativo) L'indirizzo da cui viene inviata la transazione. -- `to`: `DATA`, 20 Bytes - L'indirizzo a cui è indirizzata la transazione. +- `from`: `DATA`, 20 byte - (facoltativo) L'indirizzo da cui viene inviata la transazione. +- `to`: `DATA`, 20 byte - L'indirizzo a cui è indirizzata la transazione. - `gas`: `QUANTITY` - (facoltativo) Intero del carburante fornito per l'esecuzione della transazione. eth_call consuma zero carburante, ma questo parametro potrebbe essere necessario per alcune esecuzioni. - `gasPrice`: `QUANTITY` - (facoltativo) Intero del gasPrice usato per ogni unità di carburante pagata - `value`: `QUANTITY` - (facoltativo) Intero del valore inviato con questa transazione @@ -1000,7 +1000,7 @@ Restituisce informazioni su un blocco tramite hash. **Parametri** -1. `DATA`, 32 Byte - Hash di un blocco. +1. `DATA`, 32 byte - Hash di un blocco. 2. `Boolean` - Se `true` restituisce gli oggetti di transazione completi, se `falso` solo gli hash delle transazioni. ```js @@ -1015,15 +1015,15 @@ params: [ `Object` - Un oggetto blocco, o `null` quando non viene trovato alcun blocco: - `number`: `QUANTITY` - il numero di blocco. `null` quando è in attesa del blocco. -- `hash`: `DATA`, 32 Bytes - hash del blocco. `null` quando è in attesa del blocco. -- `hash`: `DATA`, 32 Bytes - hash del blocco genitore. -- `nonce`: `DATA`, 8 Bytes - hash del proof-of-work generato. `null` quando è in attesa del blocco. -- `sha3Uncles`: `DATA`, 32 Bytes - SHA3 dei dati ommer del blocco. -- `logsBloom`: `DATA`, 256 Bytes - il filtro bloom per i registri del blocco. `null` quando è in attesa del blocco. -- `transactionsRoot`: `DATA`, 32 Bytes - la radice dell'albero delle transazioni del blocco. -- `stateRoot`: `DATA`, 32 Bytes - la radice dell'albero di stato finale del blocco. -- `receiptsRoot`: `DATA`, 32 Bytes - la radice dell'albero delle ricevute del blocco. -- `miner`: `DATA`, 20 Bytes - l'indirizzo del beneficiario a cui sono state fornite le ricompense di mining. +- `hash`: `DATA`, 32 byte - hash del blocco. `null` quando è in attesa del blocco. +- `hash`: `DATA`, 32 byte - hash del blocco genitore. +- `nonce`: `DATA`, 8 byte - hash del proof-of-work generato. `null` quando è in attesa del blocco. +- `sha3Uncles`: `DATA`, 32 byte - SHA3 dei dati ommer del blocco. +- `logsBloom`: `DATA`, 256 byte - il filtro bloom per i registri del blocco. `null` quando è in attesa del blocco. +- `transactionsRoot`: `DATA`, 32 byte - la radice dell'albero delle transazioni del blocco. +- `stateRoot`: `DATA`, 32 byte - la radice dell'albero di stato finale del blocco. +- `receiptsRoot`: `DATA`, 32 byte - la radice dell'albero delle ricevute del blocco. +- `miner`: `DATA`, 20 byte - l'indirizzo del beneficiario a cui sono state fornite le ricompense di mining. - `difficulty`: `QUANTITY` - intero della difficoltà per questo blocco. - `totalDifficulty`: `QUANTITY` - intero della difficoltà totale della catena fino a questo blocco. - `extraData`: `DATA` - il campo "dati extra" di questo blocco. @@ -1031,7 +1031,7 @@ params: [ - `gasLimit`: `QUANTITY` - il carburante massimo consentito in questo blocco. - `gasUsed`: `QUANTITY` - il carburante totale usato da tutte le transazioni in questo blocco. - `timestamp`: `QUANTITY` - la marca temporale unix relativa a quando il blocco è stato collazionato. -- `transactions`: `Array` - Array di oggetti transazione, o hash di transazione da 32 Bytes a seconda dell'ultimo parametro specificato. +- `transactions`: `Array` - Array di oggetti transazione, o hash di transazione da 32 byte a seconda dell'ultimo parametro specificato. - `uncles`: `Array` - Array di hash ommer. **Esempio** @@ -1104,7 +1104,7 @@ Restituisce le informazioni su una transazione richiesta dall'hash della transaz **Parametri** -1. `DATA`, 32 Bytes - hash di una transazione +1. `DATA`, 32 byte - hash di una transazione ```js params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"] @@ -1116,13 +1116,13 @@ params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"] - `blockHash`: `DATA`, 32 byte - hash del blocco in cui si trovava questa transazione. `null` quando è in sospeso. - `blockNumber`: `QUANTITY` - numero di blocco in cui si trovava questa transazione. `null` quando è in sospeso. -- `from`: `DATA`, 20 Bytes - indirizzo del mittente. +- `from`: `DATA`, 20 byte - indirizzo del mittente. - `gas`: `QUANTITY` - carburante fornito dal mittente. - `gasPrice`: `QUANTITY` - prezzo del carburante fornito dal mittente in Wei. -- `hash`: `DATA`, 32 Bytes - hash della transazione. +- `hash`: `DATA`, 32 byte - hash della transazione. - `input`: `DATA` - i dati inviati insieme alla transazione. - `nonce`: `QUANTITY` - il numero di transazioni effettuate dal mittente prima di questa. -- `to`: `DATA`, 20 Bytes - l'indirizzo del destinatario. `null` quando è una transazione di creazione del contratto. +- `to`: `DATA`, 20 byte - l'indirizzo del destinatario. `null` quando è una transazione di creazione del contratto. - `transactionIndex`: `QUANTITY` - intero della posizione dell'indice delle transazioni nel blocco. `null` quando è in sospeso. - `value`: `QUANTITY` - valore trasferito in Wei. - `v`: `QUANTITY` - ID di recupero ECDSA @@ -1163,7 +1163,7 @@ Restituisce informazioni su una transazione per hash del blocco e posizione dell **Parametri** -1. `DATA`, 32 Byte - hash di un blocco. +1. `DATA`, 32 byte - hash di un blocco. 2. `QUANTITY` - intero della posizione dell'indice della transazione. ```js @@ -1227,20 +1227,23 @@ params: ["0x85d995eba9763907fdf35cd2034144dd9d53ce32cbec21349d4b12823c6860c5"] **Restituisce** `Object` - Un oggetto ricevuta della transazione, o `null` quando non è stata trovata nessuna ricevuta: -- `transactionHash`: `DATA`, 32 Bytes - hash della transazione. +- `transactionHash`: `DATA`, 32 byte - hash della transazione. - `transactionIndex`: `QUANTITY` - intero della posizione dell'indice delle transazioni nel blocco. - `blockHash`: `DATA`, 32 byte - hash del blocco in cui si trovava questa transazione. - `blockNumber`: `QUANTITY` - numero di blocco in cui si trovava questa transazione. -- `from`: `DATA`, 20 Bytes - indirizzo del mittente. -- `to`: `DATA`, 20 Bytes - l'indirizzo del destinatario. null quando è una transazione di creazione del contratto. +- `from`: `DATA`, 20 byte - indirizzo del mittente. +- `to`: `DATA`, 20 byte - l'indirizzo del destinatario. null quando è una transazione di creazione del contratto. - `cumulativeGasUsed`: `QUANTITY` - La quantità totale di carburante usato nel blocco per l'esecuzione della transazione. - `effectiveGasPrice` : `QUANTITY` - La somma della commissione di base e delle mance pagata per unità di carburante. - `gasUsed`: `QUANTITY` - La quantità di carburante usato solo da questa specifica transazione. -- `contractAddress`: `DATA`, 20 Bytes - L'indirizzo del contratto creato, se la transazione consisteva nella creazione di un contratto, altrimenti `null`. +- `contractAddress`: `DATA`, 20 byte - L'indirizzo del contratto creato, se la transazione consisteva nella creazione di un contratto, altrimenti `null`. - `logs`: `Array` - Array di oggetti di registro generati da questa transazione. -- `logsBloom`: `DATA`, 256 Bytes - Filtro Bloom per i client leggeri per recuperare rapidamente i registri correlati. -- `type`: `QUANTITY` - intero del tipo di transazione, `0x0` per le transazioni ereditarie, `0x1` per i tipi di elenco d'accesso, `0x2` per le commissioni dinamiche. Restituisce anche _in alternativa_: -- `root` : `DATA` 32 bytes dello stateroot post-transazione (pre Byzantium) +- `logsBloom`: `DATA`, 256 byte - Filtro Bloom per i client leggeri per recuperare rapidamente i registri correlati. +- `type`: `QUANTITY`: intero del tipo di transazione, `0x0` per le transazioni ereditarie, `0x1` per i tipi di elenco d'accesso, `0x2` per le commissioni dinamiche. + +Restituisce anche _either_: + +- `root` : `DATA` 32 bytes dello stateRoot post-transazione (pre Byzantium) - `status`: `QUANTITY` o `1` (successo) o `0` (insuccesso) **Esempio** @@ -1281,7 +1284,7 @@ Restituisce informazioni su un ommer di un blocco in base all'hash e alla posizi **Parametri** -1. `DATA`, 32 Byte - hash di un blocco. +1. `DATA`, 32 byte - hash di un blocco. 2. `QUANTITY` - La posizione dell'indice dell'ommer. ```js @@ -1302,7 +1305,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex" Risultato vedi [eth_getBlockByHash](#eth_getblockbyhash) -**Nota**: Un ommer non contiene transazioni individuali. +**Nota**: un ommer non contiene transazioni individuali. ### eth_getUncleByBlockNumberAndIndex {#eth_getunclebyblocknumberandindex} @@ -1322,7 +1325,7 @@ params: [ **Restituisce** Vedi [eth_getBlockByHash](#eth_getblockbyhash) -**Nota**: Un ommer non contiene transazioni individuali. +**Nota**: un ommer non contiene transazioni individuali. **Esempio** @@ -1471,23 +1474,23 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSerpent","params":["/ ### eth_newFilter {#eth_newfilter} -Crea un oggetto filtro, basato sulle opzioni di filtro, per notificare quando lo stato cambia (registri). Per verificare se lo stato è cambiato, chiama [eth_getFilterChanges](#eth_getfilterchanges). +Crea un oggetto filtro, basato sulle opzioni di filtro, per avvisare quando lo stato cambia (registri). Per verificare se lo stato è cambiato, chiama [eth_getFilterChanges](#eth_getfilterchanges). **Una nota per specificare i filtri degli argomenti:** Gli argomenti dipendono dall'ordine. Una transazione con un registro con argomenti [A, B] sarà abbinata ai seguenti filtri tematici: - `[]` "qualsiasi" - `[A]`: "A in prima posizione (e tutto il resto segue)" -- `[null, B]`: "tutto nella prima posizione AND B nella seconda (e tutto il resto segue)" -- `[A, B]`: "A in prima posizione AND B in seconda (e tutto il resto segue)" -- `[[A, B], [A, B]]`: "(A OR B) in prima posizione AND (A OR B) in seconda posizione (e tutto il resto segue)" +- `[null, B]`: "tutto nella prima posizione e B nella seconda (e tutto il resto segue)" +- `[A, B]`: "A in prima posizione e B in seconda (e tutto il resto segue)" +- `[[A, B], [A, B]]`: "(A OR B) in prima posizione e (A OR B) in seconda posizione (e tutto il resto segue)" - **Parametri** 1. `Object` - Le opzioni di filtro: -- `fromBlock`: `QUANTITY|TAG` - (facoltativo, predefinito: `"latest"`) Intero del numero di blocco, oppure `"latest"` per l'ultimo blocco minato oppure `"pending"`, `"earliest"` per le transazioni non ancora minate. -- `toBlock`: `QUANTITY|TAG` - (facoltativo, predefinito: `"latest"`) Intero del numero di blocco, oppure `"latest"` per l'ultimo blocco minato, oppure `"pending"`, `"earliest"` per le transazioni non ancora minate. -- `address`: `DATA|Array`, 20 Bytes - (facoltativo) Indirizzo del contratto oppure un elenco di indirizzi da cui dovrebbero avere origine i registri. -- `topics`: `Array of DATA`, - (facoltativo) Array di argomenti `DATA` a 32 byte. Gli argomenti dipendono dall'ordine. Ogni argomento può anche essere un array di DATI con opzioni "or". +- `fromBlock`: `QUANTITY|TAG` - (facoltativo, predefinito: `"latest"`) Numero intero del blocco, oppure `"latest"` per l'ultimo blocco minato oppure `"pending"`, `"earliest"` per le transazioni non ancora minate. +- `toBlock`: `QUANTITY|TAG` - (facoltativo, predefinito: `"latest"`) numero intero del blocco, oppure `"latest"` per l'ultimo blocco minato, oppure `"pending"`, `"earliest"` per le transazioni non ancora minate. +- `address`: `DATA|Array`, 20 byte - (facoltativo) L'indirizzo del contratto oppure un elenco di indirizzi da cui dovrebbero avere origine i registri. +- `topics`: `Array of DATA`, - (facoltativo) Array di argomenti `DATA` a 32 byte. Gli argomenti dipendono dall'ordine. Ogni argomento può anche essere una matrice di DATA con opzioni "OR". ```js params: [ @@ -1507,7 +1510,7 @@ params: [ ] ``` -**Restituisce** `QUANTITY` - L'ID di un filtro. +**Restituisce** `QUANTITY` - Un ID filtro. **Esempio** @@ -1524,11 +1527,11 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topic ### eth_newBlockFilter {#eth_newblockfilter} -Crea un filtro nel nodo, per notificare quando arriva un nuovo blocco. Per verificare se lo stato è cambiato, chiama [eth_getFilterChanges](#eth_getfilterchanges). +Crea un filtro nel nodo, per avvisare quando arriva un nuovo blocco. Per verificare se lo stato è cambiato, chiama [eth_getFilterChanges](#eth_getfilterchanges). **Parametri** Nessuno -**Restituisce** `QUANTITY` - L'ID di un filtro. +**Restituisce** `QUANTITY` - Un ID filtro. **Esempio** @@ -1549,7 +1552,7 @@ Crea un filtro nel nodo, per avvisare quando arrivano nuove transazioni in sospe **Parametri** Nessuno -**Restituisce** `QUANTITY` - L'ID di un filtro. +**Restituisce** `QUANTITY` - Un ID filtro. **Esempio** @@ -1566,7 +1569,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter" ### eth_uninstallFilter {#eth_uninstallfilter} -Disinstalla un filtro con un ID specificato. Dovrebbe essere sempre chiamato quando l'orologio non è più necessario. Inoltre, i filtri scadono quando non vengono richiesti con [eth_getFilterChanges](#eth_getfilterchanges) per un periodo di tempo. +Disinstalla un filtro con un ID specificato. Dovrebbe essere chiamato sempre quando l'orologio non è più necessario. Inoltre i filtri scadono quando non vengono richiesti con [eth_getFilterChanges](#eth_getfilterchanges) per un periodo di tempo. **Parametri** @@ -1609,18 +1612,18 @@ params: [ **Restituisce** `Array` - Array di oggetti registro, o un array vuoto se nulla è cambiato dall'ultimo sondaggio. -- Per i filtri creati con `eth_newBlockFilter` vengono restituiti hash di blocco (`DATA`, 32 Byte), ad esempio `["0x3454645634534..."]`. -- Per i filtri creati con `eth_newPendingTransactionFiltro` vengono restituiti hash di transazione (`DATA`, 32 Bytes), ad esempio `["0x6345343454645..."]`. +- Per i filtri creati con `eth_newBlockFilter` vengono restituiti hash di blocco (`DATA`, 32 byte), ad esempio `["0x3454645634534..."]`. +- Per i filtri creati con `eth_newPendingTransactionFiltro` vengono restituiti hash di transazione (`DATA`, 32 byte), ad esempio `["0x6345343454645..."]`. - Per i filtri creati con `eth_newFiltro` i registri sono oggetti con i seguenti parametri: - - `removed`: `TAG` - `true` quando il registro è stato rimosso, a causa di una riorganizzazione della catena. `false` se il suo registro è valido. - - `transactionIndex`: `QUANTITY` - intero della posizione dell'indice della transazione nel blocco. `null` quando il registro è in sospeso. - - `transactionIndex`: `QUANTITY` - intero del registro della posizione dell'indice della transazione da cui è stato creato. `null` quando il registro è in sospeso. - - `transactionHash`: `DATA`, 32 Bytes - hash delle transazioni da cui è stato creato il registro. `null` quando il registro è in sospeso. - - `blockHash`: `DATA`, 32 byte - hash del blocco in cui si trovava questa transazione. `null` quando è in sospeso. `null` quando il registro è in sospeso. + - `removed`: `TAG` - `true` quando il registro è stato rimosso, a causa di una riorganizzazione a catena. `false` se è un registro valido. + - `transactionIndex`: `QUANTITY` - numero intero della posizione dell'indice del registro nel blocco. `null` quando il registro è in sospeso. + - `transactionIndex`: `QUANTITY` - numero intero del registro della posizione dell'indice delle transazioni da cui è stato creato. `null` quando il registro è in sospeso. + - `transactionHash`: `DATA`, 32 byte - hash delle transazioni da cui è stato creato il registro. `null` quando il registro è in sospeso. + - `blockHash`: `DATA`, 32 byte - hash del blocco in cui si trovava questo registro. `null` quando è in sospeso. `null` quando il registro è in sospeso. - `blockNumber`: `QUANTITY` il numero di blocco in cui si trovava questo registro. `null` quando è in sospeso. `null` quando il registro è in sospeso. - - `address`: `DATA`, 20 Bytes - indirizzo da cui è stato originato questo registro. + - `address`: `DATI`, 20 byte - indirizzo da cui è nato questo registro. - `data`: `DATA` - contiene uno o più argomenti a 32 byte non indicizzati del registro. - - `topics`: `Array of DATA` - Array da 0 a 432 byte di `DATA` di argomenti di registri indicizzati. (In _solidity_: il primo argomento è l'_hash_ della firma dell'evento (ad es. `Deposit(address,bytes32,uint256)`), tranne se hai dichiarato l'evento con lo specificatore `anonymous`.) + - `topics`: `Array of DATA` - Array da 0 a 432 byte di `DATA` di argomenti di registro indicizzati. (In _solidity_: il primo argomento è l'_hash_ della firma dell'evento (ad es. `Deposit(address,bytes32,uint256)`), tranne se hai dichiarato l'evento con lo specificatore `anonymous` - **Esempio** ```js @@ -1678,11 +1681,11 @@ Restituisce un array di tutti i registri che corrispondono a un dato oggetto fil 1. `Oggetto` - Le opzioni di filtro: -- `fromBlock`: `QUANTITY|TAG` - (facoltativo, predefinito: `"latest"`) Intero del numero di blocco, oppure `"latest"` per l'ultimo blocco minato oppure `"pending"`, `"earliest"` per le transazioni non ancora minate. -- `toBlock`: `QUANTITY|TAG` - (facoltativo, predefinito: `"latest"`) Intero del numero di blocco, oppure `"latest"` per l'ultimo blocco minato, oppure `"pending"`, `"earliest"` per le transazioni non ancora minate. -- `address`: `DATA|Array`, 20 Bytes - (facoltativo) Indirizzo del contratto oppure un elenco di indirizzi da cui dovrebbero avere origine i registri. -- `topics`: `Array of DATA`, - (facoltativo) Array di argomenti `DATA` a 32 byte. Gli argomenti dipendono dall'ordine. Ogni argomento può anche essere un array di DATI con opzioni "or". -- `blockhash`: `DATI`, 32 Bytes - (facoltativo, **future**) Con l'aggiunta di EIP-234, `blockHash` sarà una nuova opzione di filtro che limita i registra restituiti al singolo blocco con l'hash `blockHash` da 32 byte. L'utilizzo di `blockHash` equivale a `fromBlock` = `toBlock` = il numero di blocco con hash `blockHash`. Se `blockHash` è presente nei criteri di filtraggio, non sono permessi né `fromBlock` né `toBlock`. +- `fromBlock`: `QUANTITY|TAG` - (facoltativo, predefinito: `"latest"`) Numero intero del blocco, oppure `"latest"` per l'ultimo blocco minato oppure `"pending"`, `"earliest"` per le transazioni non ancora minate. +- `toBlock`: `QUANTITY|TAG` - (facoltativo, predefinito: `"latest"`) numero intero del blocco, oppure `"latest"` per l'ultimo blocco minato, oppure `"pending"`, `"earliest"` per le transazioni non ancora minate. +- `address`: `DATA|Array`, 20 byte - (facoltativo) L'indirizzo del contratto oppure un elenco di indirizzi da cui dovrebbero avere origine i registri. +- `topics`: `Array of DATA`, - (facoltativo) Array di argomenti `DATA` a 32 byte. Gli argomenti dipendono dall'ordine. Ogni argomento può anche essere una matrice di DATA con opzioni "OR". +- `blockhash`: `DATI`, 32 byte - (facoltativo , **future**) Con l'aggiunta di EIP-234, `blockHash` sarà una nuova opzione di filtro che limita i registri restituiti al singolo blocco con l'hash `blockHash` da 32 byte. L'utilizzo di `blockHash` equivale a `fromBlock` = `toBlock` = il numero di blocco con hash `blockHash`. Se `blockHash` è presente nei criteri di filtraggio, non sono permessi né `fromBlock` né `toBlock`. ```js params: [ @@ -1707,15 +1710,15 @@ Risultato vedi [eth_getFilterChanges](#eth_getfilterchanges) ### eth_getWork {#eth_getwork} -Restituisce l'hash del blocco corrente, il seedHash e la condizione di confine da soddisfare ("target"). +Restituisce l'hash del blocco corrente, il seedHash e la condizione limite da soddisfare ("target"). **Parametri** Nessuno **Restituisce** `Array` - Array con le seguenti proprietà: -1. `DATA`, 32 Byte - intestazione pow-hash del blocco corrente -2. `DATA`, 32 Byte - il seed hash utilizzato per il DAG. -3. `DATA`, 32 Byte - la condizione di confine ("target"), 2^256 / difficoltà. +1. `DATA`, 32 byte - intestazione pow-hash del blocco corrente +2. `DATA`, 32 byte - il seed hash utilizzato per il DAG. +3. `DATA`, 32 byte - la condizione di confine ("target"), 2^256 / difficoltà. **Esempio** @@ -1740,9 +1743,9 @@ Utilizzato per presentare una soluzione proof-of-work. **Parametri** -1. `DATA`, 8 Byte - Il nonce trovato (64 bit) -2. `DATA`, 32 Byte - il pow-hash dell'intestazione (256 bit) -3. `DATA`, 32 Byte - Il mix digest (256 bit) +1. `DATA`, 8 byte - Il nonce trovato (64 bit) +2. `DATA`, 32 byte - il pow-hash dell'intestazione (256 bit) +3. `DATA`, 32 byte - Il mix digest (256 bit) ```js params: [ @@ -1798,7 +1801,7 @@ curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":[ } ``` -### db_putString (deprecated) {#db_putstring} +### db_putString (deprecato) {#db_putstring} Memorizza una stringa nel database locale. @@ -1814,7 +1817,7 @@ Memorizza una stringa nel database locale. params: ["testDB", "myKey", "myString"] ``` -**Restituisce** `Boolean` - `true` se il valore è stato memorizzato, altrimenti `false`. +**Restituisce** `Boolean` - `true` se il valore è stato memorizzato, in caso contrario `false`. **Esempio** @@ -1829,7 +1832,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"db_putString","params":["testDB" } ``` -### db_getString (deprecated) {#db_getstring} +### db_getString (deprecato) {#db_getstring} Memorizza una stringa nel database locale. **Nota** questa funzione è superata. @@ -1857,7 +1860,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"db_getString","params":["testDB" } ``` -### db_putHex (deprecated) {#db_puthex} +### db_putHex (deprecato) {#db_puthex} Memorizza i dati binari nel database locale. **Nota** questa funzione è superata. @@ -1871,7 +1874,7 @@ Memorizza i dati binari nel database locale. **Nota** questa funzione è superat params: ["testDB", "myKey", "0x68656c6c6f20776f726c64"] ``` -**Restituisce** `Boolean` - `true` se il valore è stato memorizzato, altrimenti `false`. +**Restituisce** `Boolean` - `true` se il valore è stato memorizzato, in caso contrario `false`. **Esempio** @@ -1886,9 +1889,9 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"db_putHex","params":["testDB","m } ``` -### db_getHex (deprecated) {#db_gethex} +### db_getHex (deprecato) {#db_gethex} -Restituisce i dati binari del database locale. **Nota** questa funzione è superata. +Memorizza i dati binari nel database locale. **Nota** questa funzione è superata. **Parametri** @@ -1899,7 +1902,7 @@ Restituisce i dati binari del database locale. **Nota** questa funzione è super params: ["testDB", "myKey"] ``` -**Restituisce** `DATA` - I dati precedentemente memorizzati. +**Restituisce** `DATI` - I dati precedentemente memorizzati. **Esempio** @@ -1914,7 +1917,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"db_getHex","params":["testDB","m } ``` -### shh_version (deprecated) {#shh_post} +### shh_version (deprecato) {#shh_post} Restituisce la versione corrente del protocollo Whisper. @@ -1937,7 +1940,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_version","params":[],"id":67 } ``` -### shh_post (deprecated) {#shh_version} +### shh_post (deprecato) {#shh_version} Invia un messaggio Whisper. @@ -1947,11 +1950,11 @@ Invia un messaggio Whisper. 1. `Object` -Il contenuto dei post di Whisper: -- `da`: `DATA`, 60 Byte - (facoltativo) L'identità del mittente. -- `to`: `DATA`, 60 Byte - (facoltativo) L'identità del destinatario. Se presente, Whisper cifrerà il messaggio in modo che solo il destinatario possa decifrarlo. +- `da`: `DATA`, 60 byte - (facoltativo) L'identità del mittente. +- `to`: `DATA`, 60 byte - (facoltativo) L'identità del destinatario. Se presente, Whisper cifrerà il messaggio in modo che solo il destinatario possa decifrarlo. - `topics`: `Array of DATA` - Array di argomenti `DATA`, affinché il destinatario possa identificare i messaggi. - `payload`: `DATA` - Il payload del messaggio. -- `priority`: `QUANTITY` - L'intero della priorità in un range da ... (?). +- `priority`: `QUANTITY` - L'intero della priorità in un intervallo da ... (?). - `ttl`: `QUANTITY` - intero del tempo residuo in secondi. ```js @@ -1985,7 +1988,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_post","params":[{"from":"0xc } ``` -### shh_newIdentity (superata){#shh_newidentity} +### shh_newIdentity (deprecato){#shh_newidentity} Crea una nuova identità di Whisper nel client. @@ -1993,7 +1996,7 @@ Crea una nuova identità di Whisper nel client. **Parametri** Nessuno -**Restituisce** `DATA`, 60 Byte - l'indirizzo della nuova identità. +**Restituisce** `DATA`, 60 byte - l'indirizzo della nuova identità. **Esempio** @@ -2008,7 +2011,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newIdentity","params":[],"id } ``` -### shh_hasIdentity (deprecated){#shh_hasidentity} +### shh_hasIdentity (deprecato){#shh_hasidentity} Controlla se il client possiede le chiavi private per una data identità. @@ -2016,7 +2019,7 @@ Controlla se il client possiede le chiavi private per una data identità. **Parametri** -1. `DATA`, 60 Byte - L'indirizzo di identità da controllare. +1. `DATA`, 60 byte - L'indirizzo di identità da controllare. ```js params: [ @@ -2039,13 +2042,13 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_hasIdentity","params":["0x04 } ``` -### shh_newGroup (deprecated){#shh_newgroup} +### shh_newGroup (deprecato){#shh_newgroup} **Nota** questa funzione è superata. **Parametri** Nessuno -**Restituisce** `DATA`, 60 Byte - l'indirizzo di un nuovo gruppo. (?) +**Restituisce** `DATA`, 60 byte - l'indirizzo di un nuovo gruppo. (?) **Esempio** @@ -2060,13 +2063,13 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newGroup","params":[],"id":7 } ``` -### shh_addToGroup (deprecated){#shh_addtogroup} +### shh_addToGroup (deprecato){#shh_addtogroup} **Nota** questa funzione è superata. **Parametri** -1. `DATA`, 60 Byte - L'indirizzo di identità da aggiungere a un gruppo (?). +1. `DATA`, 60 byte - L'indirizzo di identità da aggiungere a un gruppo (?). ```js params: [ @@ -2089,15 +2092,15 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_addToGroup","params":["0x04f } ``` -### shh_newFilter (deprecated){#shh_newfilter} +### shh_newFilter (deprecato){#shh_newfilter} -Crea un filtro per notificare, quando il client riceve un messaggio Whisper corrispondente alle opzioni del filtro. **Nota** questa funzione è superata. +Crea un filtro per avvisare quando il client riceve un messaggio Whisper corrispondente alle opzioni del filtro. **Nota** questa funzione è superata. **Parametri** 1. `Oggetto` - Le opzioni del filtro: -- `to`: `DATA`, 60 Byte - (facoltativo) Identità del destinatario. _Quando è presente, proverà a decifrare qualsiasi messaggio in arrivo se il client detiene la chiave privata di questa identità._ +- `to`: `DATA`, 60 byte - (facoltativo) L'identità del destinatario. _Quando è presente, proverà a decifrare qualsiasi messaggio in arrivo se il client detiene la chiave privata di questa identità._ - `topics`: `Array of DATA` - Array di argomenti `DATA` a cui dovrebbero corrispondere gli argomenti del messaggio in entrata. Possono essere utilizzate le seguenti combinazioni: - `[A, B] = A && B` - `[A, [B, C]] = A && (B || C)` @@ -2128,9 +2131,9 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newFilter","params":[{"topic } ``` -### shh_uninstallFilter (deprecated){#shh_uninstallfilter} +### shh_uninstallFilter (deprecato){#shh_uninstallfilter} -Disinstalla un filtro con un ID specificato. Dovrebbe essere sempre chiamato quando l'orologio non è più necessario. Inoltre, i filtri scadono quando non vengono richiesti con [shh_getFilterChange](#shh_getfilterchanges) per un periodo di tempo. **Nota** questa funzione è superata. +Disinstalla un filtro con un ID specificato. Dovrebbe essere chiamato sempre quando l'orologio non è più necessario. Inoltre i filtri scadono quando non vengono richiesti con [shh_getFilterChange](#shh_getfilterchanges) per un periodo di tempo. **Nota** questa funzione è superata. **Parametri** @@ -2157,7 +2160,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_uninstallFilter","params":[" } ``` -### shh_getFilterChanges (deprecated){#shh_getfilterchanges} +### shh_getFilterChanges (deprecato){#shh_getfilterchanges} Metodo di sondaggio per i filtri Whisper. Restituisce nuovi messaggi dall'ultima chiamata di questo metodo. **Nota** chiamando il metodo [shh_getMessages](#shh_getmessages) verrà resettato il buffer per questo metodo, in modo da non ricevere messaggi duplicati. **Nota** questa funzione è superata. @@ -2173,9 +2176,9 @@ params: [ **Restituisce** `Array` - Array di messaggi ricevuti dall'ultimo sondaggio: -- `hash`: `DATA`, 32 Byte (?) - L'hash del messaggio. -- `da`: `DATA`, 60 Byte - Il mittente del messaggio, se è stato specificato un mittente. -- `to`: `DATA`, 60 Byte - Il destinatario del messaggio, se è stato specificato un destinatario. +- `hash`: `DATA`, 32 byte (?) - L'hash del messaggio. +- `da`: `DATA`, 60 byte - Il mittente del messaggio, se è stato specificato un mittente. +- `to`: `DATA`, 60 byte - Il destinatario del messaggio, se è stato specificato un destinatario. - `expiry`: `QUANTITY` - Intero del tempo in secondi che esprime la scadenza presunta del messaggio (?). - `ttl`: `QUANTITY` - Intero del tempo durante il quale il messaggio dovrebbe fluttuare nel sistema, in secondi (?). - `sent`: `QUANTITY` - Intero della marca temporale unix quando il messaggio è stato inviato. @@ -2206,7 +2209,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getFilterChanges","params":[ } ``` -### shh_getMessages (deprecated) {#shh_getmessages} +### shh_getMessages (deprecato) {#shh_getmessages} Ottieni tutti i messaggi corrispondenti a un filtro. A differenza di `shh_getFilterChanges`, questo restituisce tutti i messaggi. @@ -2240,7 +2243,7 @@ Risultato vedi [shh_getFilterChanges](#shh_getfilterchanges) Questa sezione include una dimostrazione di come distribuire un contratto utilizzando solo l'interfaccia RPC. Esistono vie alternative per la distribuzione di contratti in cui questa complessità viene eliminata tramite astrazione, ad esempio utilizzando librerie costruite partendo dall'interfaccia RPC, come [web3. s](https://web3js.readthedocs.io/) e [web3.py](https://github.com/ethereum/web3.py). Queste astrazioni sono generalmente più facili da capire e meno soggette a errori, ma è comunque utile capire cosa succede dietro le quinte. -Di seguito, trovi un semplice contratto intelligente chiamato `Multiply7`, che sarà distribuito usando l'interfaccia JSON-RPC a un nodo di Ethereum. Questo tutorial presuppone che il lettore stia già eseguendo un nodo Geth. Maggiori informazioni sui nodi e sui client sono disponibili [qui](/developers/docs/nodes-and-clients/run-a-node). Fare riferimento alla documentazione del singolo [client](/developers/docs/nodes-and-clients/) per capire come avviare HTTP JSON-RPC per i client non-Geth. La maggior parte dei clienti serve di default su `localhost:8545`. +Di seguito, trovi un semplice contratto intelligente, detto `Multiply7`, che sarà distribuito usando l'interfaccia JSON-RPC a un nodo di Ethereum. Questo tutorial presuppone che il lettore stia già eseguendo un nodo Geth. Maggiori informazioni sui nodi e sui client sono disponibili [qui](/developers/docs/nodes-and-clients/run-a-node). Fare riferimento alla documentazione del [client](/developers/docs/nodes-and-clients/) individuale per capire come avviare HTTP JSON-RPC per i client non-Geth. La maggior parte dei client serve di default su `localhost:8545`. ```javascript contract Multiply7 { @@ -2260,7 +2263,7 @@ geth --http --dev console 2>>geth.log Questo avvierà l'interfaccia HTTP RPC su `http://localhost:8545`. -Possiamo verificare che l'interfaccia sia in esecuzione recuperando l'indirizzo Coinbase e il saldo utilizzando [curl](https://curl.se). Si prega di notare che i dati in questi esempi saranno diversi sul nodo locale. Se vuoi provare questi comandi, sostituisci i parametri di richiesta nella seconda richiesta di curl con il risultato restituito dalla prima. +Possiamo verificare che l'interfaccia sia in esecuzione recuperando l'indirizzo Coinbase e il saldo utilizzando [curl](https://curl.se). Si prega di notare che i dati in questi esempi saranno diversi sul nodo locale. Se vuoi provare questi comandi, sostituisci i parametri di richiesta nella seconda richiesta di Curl con il risultato restituito dalla prima. ```bash curl --data '{"jsonrpc":"2.0","method":"eth_coinbase", "id":1}' -H "Content-Type: application/json" localhost:8545 @@ -2270,14 +2273,14 @@ curl --data '{"jsonrpc":"2.0","method":"eth_getBalance", "params": ["0x9b1d35635 {"id":2,"jsonrpc":"2.0","result":"0x1639e49bba16280000"} ``` -Poiché i numeri sono soggetti a codifica esadecimale, il saldo viene restituito in wei sotto forma di stringa esadecimale. Se vogliamo ottenere il saldo in ether sotto forma di numero possiamo utilizzare web3 dalla console Geth. +Poiché i numeri sono soggetti a codifica esadecimale, il saldo viene restituito in wei sotto forma di stringa esadecimale. Se vogliamo ottenere il saldo in Ether sotto forma di numero possiamo utilizzare web3 dalla console Geth. ```javascript web3.fromWei("0x1639e49bba16280000", "ether") // "410" ``` -Ora che vi sono ether nella nostra catena di sviluppo privata, possiamo distribuire il contratto. Il primo passo è quello di compilare il contratto Multiply7 al codice di byte che può essere inviato all'EVM. Per installare solc, il compilatore Solidity, seguire la documentazione [Solidity](https://docs.soliditylang.org/en/latest/installing-solidity.html). (Potresti voler utilizzare una versione `solc` più vecchia che corrisponda [ alla versione del compilatore utilizzata per il nostro esempio](https://github.com/ethereum/solidity/releases/tag/v0.4.20).) +Ora che vi sono Ether nella nostra catena di sviluppo privata, possiamo distribuire il contratto. Il primo passo è quello di compilare il contratto Multiply7 al codice di byte che può essere inviato all'EVM. Per installare solc, il compilatore Solidity, seguire la documentazione [Solidity](https://docs.soliditylang.org/en/latest/installing-solidity.html). (Potresti voler utilizzare una versione `solc` più vecchia per abbinare [la versione del compilatore utilizzata per il nostro esempio](https://github.com/ethereum/solidity/releases/tag/v0.4.20).) Il passo successivo è quello di compilare il contratto Multiply7 al codice di byte che può essere inviato all'EVM. @@ -2303,14 +2306,14 @@ curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from {"id":6,"jsonrpc":"2.0","result":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"} ``` -La transazione è accettata dal nodo e viene restituito un hash di transazione. Questo hash può essere usato per tracciare la transazione. Il passo successivo è quello di determinare l'indirizzo dove il nostro contratto è distribuito. Ogni transazione eseguita creerà una ricevuta. Questa ricevuta contiene varie informazioni sulla transazione, ad esempio, in quale blocco è stata inclusa e quanto carburante è stato usato dall'EVM. Se una transazione crea un contratto, ne conterrà anche l'indirizzo. Possiamo recuperare la ricevuta con il metodo RPC `eth_getTransactionReceipt`. +La transazione è accettata dal nodo e viene restituito un hash di transazione. Questo hash può essere usato per tracciare la transazione. Il passo successivo è quello di determinare l'indirizzo dove il nostro contratto è distribuito. Ogni transazione eseguita creerà una ricevuta. Questa ricevuta contiene varie informazioni sulla transazione, ad esempio, in quale blocco è stata inclusa e quanto carburante è stato usato dall'EVM. Se una transazione crea un contratto, conterrà anche l'indirizzo dello stesso. Possiamo recuperare la ricevuta con il metodo `eth_getTransactionReceipt` RPC. ```bash curl --data '{"jsonrpc":"2.0","method": "eth_getTransactionReceipt", "params": ["0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"], "id": 7}' -H "Content-Type: application/json" localhost:8545 {"jsonrpc":"2.0","id":7,"result":{"blockHash":"0x77b1a4f6872b9066312de3744f60020cbd8102af68b1f6512a05b7619d527a4f","blockNumber":"0x1","contractAddress":"0x4d03d617d700cf81935d7f797f4e2ae719648262","cumulativeGasUsed":"0x1c31e","from":"0x9b1d35635cc34752ca54713bb99d38614f63c955","gasUsed":"0x1c31e","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","to":null,"transactionHash":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf","transactionIndex":"0x0"}} ``` -Il nostro contratto è stato creato su `0x4d03d617d700cf81935d7f797f4e2ae719648262`. Un risultato null invece di una ricevuta significa che la transazione non è ancora stata inclusa in un blocco. Attendere un attimo e controllare se il miner è in esecuzione, quindi riprovare. +Il nostro contratto è stato creato su `0x4d03d617d700cf81935d7f797f4e2ae719648262`. Un risultato nullo invece di una ricevuta significa che la transazione non è ancora stata inclusa in un blocco. Attendere un attimo e controllare se il miner è in esecuzione, quindi riprovare. #### Interagire con i contratti intelligenti {#interacting-with-smart-contract} @@ -2364,19 +2367,19 @@ Dall'invio di una transazione, è stato restituito un hash di transazione. Recup } ``` -La ricevuta contiene un registro. Questo registro è stato generato da EVM sull'esecuzione della transazione e incluso nella ricevuta. La funzione `moltiplica` mostra che l'evento `Print` è stato alzato con i tempi di input 7. Poiché l'argomento per l'evento `Print` era un uint256, possiamo decodificare secondo le regole ABI, ottenendo così il decimale 42 previsto. Oltre ai dati, vale la pena notare che gli argomenti possono essere utilizzati per determinare quale evento ha creato il registro: +La ricevuta contiene un registro. Questo registro è stato generato dall'EVM sull'esecuzione della transazione e incluso nella ricevuta. La funzione `multiply` mostra che l'evento `Print` è stato lanciato con i tempi di input 7. Poiché l'argomento per l'evento `Print` era un uint256, possiamo decodificarlo secondo le regole ABI, ottenendo così il decimale 42 previsto. Oltre ai dati, vale la pena notare che gli argomenti possono essere utilizzati per determinare quale evento ha creato il registro: ```javascript web3.sha3("Print(uint256)") // "24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da" ``` -Questa è stata solo una breve introduzione su alcuni dei compiti più comuni, dimostrando l'uso diretto di JSON-RPC. +Questa è stata solo una breve introduzione su alcune delle attività più comuni, dimostrando l'uso diretto di JSON-RPC. ## Argomenti correlati {#related-topics} - [Specifiche di JSON-RPC](http://www.jsonrpc.org/specification) - [ Nodi e client](/developers/docs/nodes-and-clients/) - [API JavaScript](/developers/docs/apis/javascript/) -- [API backend](/developers/docs/apis/backend/) +- [API del backend](/developers/docs/apis/backend/) - [Client di esecuzione](/developers/docs/nodes-and-clients/#execution-clients) diff --git a/src/content/translations/it/developers/docs/blocks/index.md b/src/content/translations/it/developers/docs/blocks/index.md index 3cfd1adf80d..beded084845 100644 --- a/src/content/translations/it/developers/docs/blocks/index.md +++ b/src/content/translations/it/developers/docs/blocks/index.md @@ -100,8 +100,9 @@ L'`execution_payload_header` contiene i seguenti campi: | `fee_base_per_gas` | il valore base della commissione | | `hash_del_blocco` | Hash del blocco di esecuzione | | `transactions_root` | hash radice delle transazioni nel payload | +| `withdrawal_root` | hash radice del prelievo nel payload | -Lo stesso `execution_payload` contiene quanto segue (si noti che è identico all'intestazione, tranne per il fatto che, invece dell'hash radice delle transazioni, include l'elenco effettivo delle transazioni): +Lo stesso `execution_payload` contiene quanto segue (si noti che è identico all'intestazione, tranne per il fatto che, invece dell'hash radice delle transazioni, include l'elenco effettivo delle transazioni e informazioni sui prelievi): | Campo | Descrizione | | :----------------- | :---------------------------------------------------------------------------------- | @@ -119,20 +120,30 @@ Lo stesso `execution_payload` contiene quanto segue (si noti che è identico all | `fee_base_per_gas` | il valore base della commissione | | `hash_del_blocco` | Hash dell'esecuzione del blocco | | `transazioni` | elenco delle transazioni da eseguire | +| `prelievi` | elenco degli oggetti prelievo | + +L'elenco dei `withdrawals` contiene oggetti `withdrawal` strutturati nel modo seguente: + +| Campo | Descrizione | +| :--------------- | :----------------------------------- | +| `address` | indirizzo del conto che ha prelevato | +| `amount` | importo del prelievo | +| `indice` | valore dell'indice di prelievo | +| `validatorIndex` | valore dell'indice del validatore | ## Tempo di blocco {#block-time} Il tempo di blocco si riferisce al tempo che separa i blocchi. In Ethereum, il tempo è diviso in unità da dodici secondi, dette 'slot'. In ogni slot viene selezionato un singolo validatore per proporre un blocco. Supponendo che tutti i validatori siano online e totalmente operativi, ci sarà un blocco in ogni slot, a significare che il tempo del blocco è 12 secondi. Tuttavia, occasionalmente, i validatori potrebbero essere offline quando chiamati a proporre un blocco, a significare che talvolta gli slot possono rimanere vuoti. -Questa implementazione differisce dai sistemi basati sul proof-of-work, in cui i tempi di blocco sono probabilistici e regolati dalla difficoltà di estrazione del target del protocollo. Ne è un esempio perfetto il [tempo medio di blocco](https://etherscan.io/chart/blocktime) di Ethereum, in cui la transazione da proof-of-work a a proof-of-stake è facilmente deducibile in base alla consistenza del nuovo tempo di blocco da 12 secondi. +Questa implementazione differisce dai sistemi basati sul proof-of-work, in cui i tempi di blocco sono probabilistici e regolati dalla difficoltà di mining target del protocollo. Il [tempo medio di blocco](https://etherscan.io/chart/blocktime) di Ethereum è un esempio perfetto da cui è possibile desumere il passaggio da proof-of-work a proof-of-stake in base alla coerenza del nuovo tempo di blocco da 12 secondi. ## Dimensioni del blocco {#block-size} -Un'ultima nota importante: i blocchi stessi sono limitati in termini di dimensioni. Ogni blocco ha una dimensione prevista di 15 milioni di carburante, ma la dimensione dei blocchi aumenta o diminuisce in base alla domanda della rete, fino al limite massimo di 30 milioni di carburante del blocco (2 volte la dimensione previste del blocco). La quantità totale di carburante usato da tutte le transazioni nel blocco deve essere inferiore al limite di carburante del blocco. Questo è importante perché evita che i blocchi siano arbitrariamente grandi. Se i blocchi potessero essere arbitrariamente grandi, i nodi completi meno performanti, gradualmente, non riuscirebbero più stare al passo con la rete per via dei requisiti di spazio e velocità. Più grande è il blocco, maggiore sarà la potenza di calcolo richiesta per elaborarlo in tempo per lo slot successivo. Questa è una forza centralizzante, a cui si resiste limitando le dimensioni dei blocchi. +Un'ultima nota importante: i blocchi stessi sono limitati in termini di dimensioni. Ogni blocco ha una dimensione prevista di 15 milioni di gas, ma la dimensione dei blocchi aumenterà o diminuirà in base alle esigenze della rete, fino al limite di 30 milioni di gas (2x dimensioni del blocco previste). La quantità totale di carburante usato da tutte le transazioni nel blocco deve essere inferiore al limite di carburante del blocco. Ciò è importante perché evita che i blocchi siano arbitrariamente grandi. Se i blocchi potessero essere arbitrariamente grandi, i nodi completi meno performanti, gradualmente, non riuscirebbero più stare al passo con la rete per via dei requisiti di spazio e velocità. Più grande è il blocco, maggiore sarà la potenza di calcolo richiesta per elaborarlo in tempo per il prossimo slot. Questa è una forza centralizzante, a cui si resiste limitando le dimensioni dei blocchi. ## Letture consigliate {#further-reading} -_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_ +_Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ ## Argomenti correlati {#related-topics} diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md index 5362452924c..b197f7c9521 100644 --- a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md +++ b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md @@ -61,7 +61,7 @@ Svariati documenti hanno spiegato gli attacchi a Ethereum che ottengono riorgani Un diagramma concettuale dell'attacco di riorganizzazione di un blocco descritto sopra (adattato da https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair) -Un attacco più sofisticato può dividere l'insieme di validatori onesti in gruppi discreti aventi visioni diverse della testa della catena. Ciò è noto come **attacco di bilanciamento**. L'utente malevolo attende la propria possibilità di proporre un blocco e, quando arriva, tergiversa e ne propone due. Invia un blocco a metà dell'insieme dei validatori onesti e l'altro blocco all'altra metà. L'equivoco sarebbe rilevato dall'algoritmo di scelta della diramazione e il propositore di blocchi riceverebbe un taglio e sarebbe espulso dalla rete, ma i due blocchi continuerebbero a esistere e avrebbe circa metà dell'insieme dei validatori ad attestarlo per ogni diramazione. Nel mentre, i validatori malevoli rimanenti trattengono le proprie attestazioni. Quindi, rilasciando selettivamente le attestazioni a favore dell'una o dell'altra diramazione al numero sufficiente di validatori, proprio come eseguito dall'algoritmo di scelta della diramazione, portano il peso accumulato delle attestazioni a favore di una o dell'altra diramazione. Questo può continuare per sempre, con i validatori malevoli che mantengono una divisione equa dei validatori tra le due diramazioni. Poiché nessuna delle due diramazioni può attrarre una supermaggioranza dei 2/3, la Beacon Chain non si finalizzerebbe. +Un attacco più sofisticato può dividere l'insieme di validatori onesti in gruppi discreti aventi visioni diverse della testa della catena. Ciò è noto come **attacco di bilanciamento**. L'utente malevolo attende la propria possibilità di proporre un blocco e, quando arriva, tergiversa e ne propone due. Invia un blocco a metà dell'insieme dei validatori onesti e l'altro blocco all'altra metà. L'equivoco sarebbe rilevato dall'algoritmo di scelta della diramazione e il propositore di blocchi riceverebbe un taglio e sarebbe espulso dalla rete, ma i due blocchi continuerebbero a esistere e avrebbe circa metà dell'insieme dei validatori ad attestarlo per ogni diramazione. Nel mentre, i validatori malevoli rimanenti trattengono le proprie attestazioni. Quindi, rilasciando selettivamente le attestazioni a favore dell'una o dell'altra diramazione al numero sufficiente di validatori, proprio come eseguito dall'algoritmo di scelta della diramazione, portano il peso accumulato delle attestazioni a favore di una o dell'altra diramazione. Questo può continuare per sempre, con i validatori malevoli che mantengono una divisione equa dei validatori tra le due diramazioni. Poiché nessuna biforcazione può attrarre una supermaggioranza dei 2/3, la rete non finalizzerà. Gli **attacchi di rimbalzo** sono simili. Anche in questo caso i voti sono trattenuti dai validatori malevoli. Invece di rilasciarli per mantenere una divisione equa tra le due diramazioni, utilizzano i propri voti nei momenti opportuni per giustificare punti di controllo che si alternano tra la diramazione A e la diramazione B. Questo tira e molla di giustificazioni tra le due diramazioni impedisce la presenza di coppie di punti di controllo di origine e di destinazione giustificati finalizzabili su una delle due catene, interrompendo la finalità. @@ -129,7 +129,7 @@ Qualsiasi sia la sanzione imposta all'utente malevolo, la community deve anche d Tuttavia, questa sarebbe una sostanziale sfida di governance. Alcuni utenti e validatori andrebbero senza dubbio in perdita come conseguenza del ritorno alla catena onesta, le transazioni nei blocchi convalidati dopo l'attacco potrebbero essere potenzialmente ripristinate, disturbando il livello d'applicazione e, semplicemente, minando l'etica di alcuni utenti che tendono a credere che "il codice sia legge". Le borse e le applicazioni avrebbero molto probabilmente azioni esterne alla catena collegate alle transazioni sulla catena che ora potrebbero essere ripristinate, creando una cascata di ritrattazioni e revisioni che sarebbero difficili da disfare correttamente, specialmente se mischiate con guadagni disonesti, depositati nella DeFi o altri derivati con effetti secondari per gli utenti onesti. Indubbiamente alcuni utenti, forse persino istituzionali, avrebbero già beneficiato dalla catena disonesta, per scaltrezza o fortuna, e potrebbero opporsi a una diramazione per proteggere i propri guadagni. Ci sono state richieste di provare la risposta della community agli attacchi >51% così che una ragionevole mitigazione coordinata sia eseguibile rapidamente. Alcune utili osservazioni di Vitalik sono riportate su ethresear.ch [qui](https://ethresear.ch/t/timeliness-detectors-and-51-attack-recovery-in-blockchains/6925) e [qui](https://ethresear.ch/t/responding-to-51-attacks-in-casper-ffg/6363) e su Twitter, [qui](https://twitter.com/skylar_eth/status/1551798684727508992?s=20&t=oHZ1xv8QZdOgAXhxZKtHEw). L'obiettivo di una risposta sociale coordinata dovrebbe essere molto mirato e specifico sulla punizione dell'utente malevolo e sulla minimizzazione degli effetti per gli altri utenti. -La governance è già un argomento complicato. Gestire la risposta all'emergenza del Livello 0 a una catena in finalizzazione disonesta sarebbe senza dubbio impegnativo per la community di Ethereum, ma [è successo](/history/#dao-fork-summary), [due volte](/history/#tangerine-whistle) nella storia di Ethereum). +La governance è già un argomento complicato. Gestire la risposta d'emergenza di un livello 0 a una catena di finalizzazione disonesta sarebbe senza dubbio difficoltoso per la comunità di Ethereum, ma [è successo](/history/#dao-fork-summary), [due volte](/history/#tangerine-whistle), nella storia di Ethereum. Tuttavia, c'è qualcosa di abbastanza soddisfacente nel ripiego finale nel mondo reale. In definitiva, anche con questo fenomenale stack tecnologico sopra di noi, se il peggio dovesse verificarsi le persone in carne ed ossa dovrebbero coordinarsi per uscirne. diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/block-proposal/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/block-proposal/index.md index 7abc4c9a097..4f6767562c5 100644 --- a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/block-proposal/index.md +++ b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/block-proposal/index.md @@ -8,7 +8,7 @@ I blocchi costituiscono le unità fondamentali della blockchain. I blocchi sono ## Prerequisiti {#prerequisites} -L'azione di proporre un blocco fa parte del protocollo di proof-of-stake. Per aiutarti a capire questa pagina, ti consigliamo di informarti sul [proof-of-stake](/developers/docs/consensus-mechanisms/pos/) e sull'[architettura del blocco](/developers/docs/blocks/). +L'azione di proporre un blocco fa parte del protocollo di proof-of-stake. Per aiutarti a comprendere questa pagina, ti consigliamo di leggere a riguardo del [proof-of-stake](/developers/docs/consensus-mechanisms/pos/) e dell'[architettura dei blocchi](/developers/docs/blocks/). ## Chi produce i blocchi? {#who-produces-blocks} @@ -42,7 +42,7 @@ class BeaconBlockBody(Container): execution_payload: ExecutionPayload ``` -Il campo `randao_reveal` prende un valore casuale verificabile che il propositore di blocchi crea aggiungendo un po' della propria entropia al valore accumulato del RANDAO dai blocchi precedenti. `eth1_data` è un voto per la vista del contratto di deposito da parte del propositore di blocchi, che include la radice dell'albero di Merkle di deposito e il numero totale di depositi che consentono la verifica dei nuovi depositi. `graffiti` è un campo facoltativo utilizzabile per aggiungere un messaggio al blocco. `proposer_slashings` e `attester_slashings` sono campi contenenti la prova che certi validatori hanno commesso infrazioni tagliabili secondo la vista della catena del propositore. `deposits` è un elenco di nuovi depositi del validatore di cui il propositore di blocchi è consapevole, e `voluntary_exits` è un elenco di validatori che desiderano uscire di cui il propositore di blocchi è venuto a conoscenza sulla rete di gossip del livello di consenso. `sync_aggregate` è un vettore che mostra quali validatori erano precedentemente assegnati a una commissione di sincronizzazione (un sottoinsieme di validatori che servono i dati dei client leggeri) e hanno partecipato alla firma dei dati. +Il campo `randao_reveal` prende un valore casuale verificabile che il propositore di blocchi crea firmando il numero dell'epoca corrente. `eth1_data` è un voto per la vista del contratto di deposito da parte del propositore di blocchi, che include la radice dell'albero di Merkle di deposito e il numero totale di depositi che consentono la verifica dei nuovi depositi. `graffiti` è un campo facoltativo utilizzabile per aggiungere un messaggio al blocco. `proposer_slashings` e `attester_slashings` sono campi contenenti la prova che certi validatori hanno commesso infrazioni tagliabili secondo la vista della catena del propositore. `deposits` è un elenco di nuovi depositi del validatore di cui il propositore di blocchi è consapevole, e `voluntary_exits` è un elenco di validatori che desiderano uscire di cui il propositore di blocchi è venuto a conoscenza sulla rete di gossip del livello di consenso. `sync_aggregate` è un vettore che mostra quali validatori erano precedentemente assegnati a una commissione di sincronizzazione (un sottoinsieme di validatori che servono i dati dei client leggeri) e hanno partecipato alla firma dei dati. `execution_payload` consente il passaggio delle informazioni sulle transazioni tra i client di esecuzione e di consenso. `execution_payload` è un blocco di dati di esecuzione che viene nidificato in un blocco beacon. I campi in `execution_payload` riflettono la struttura dei blocchi delineata nello Yellow Paper di Ethereum, tranne che non esistono ommer e che `prev_randao` esiste al posto della `difficulty`. Il client di esecuzione ha accesso a un pool locale di transazioni di cui è venuto a conoscenza sulla propria rete di gossip. Queste transazioni sono eseguite localmente per generare un albero di stato aggiornato, noto come post-stato. Le transazioni sono incluse nell'`execution_payload` come un elenco detto `transactions` e il post-stato è fornito nel campo `state-root`. @@ -64,6 +64,6 @@ Il propositore del blocco riceve il pagamento per il proprio lavoro. Esiste una - [Introduzione ai blocchi](/developers/docs/blocks/) - [Introduzione al proof-of-stake](/developers/docs/consensus-mechanisms/pos/) -- [Specifiche del consenso di Ethereum](https://github.com/ethereum/consensus-specs) +- [Specifiche del consenso di Ethereum](https://www.github.com/ethereum/consensus-specs) - [Introduzione a Gasper](/developers/docs/consensus-mechanisms/pos/) - [Aggiornare Ethereum](https://eth2book.info/) diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/faqs/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/faqs/index.md index 3dd135a6532..1017c67a559 100644 --- a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/faqs/index.md +++ b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/faqs/index.md @@ -30,7 +30,7 @@ Sì. I nodi su una rete di proof-of-stake utilizzano una minuscola quantità di ## Il proof-of-stake è sicuro? {#is-pos-secure} -Il proof-of-stake di Ethereum è molto sicuro. Il meccanismo è stato ricercato, sviluppato e testato rigorosamente negli otto anni in cui ha preso vita. Le garanzie di sicurezza sono differenti dalle blockchain di proof-of-work. Nel proof-of-stake, i validatori malevoli possono essere puniti attivamente ("tagliati") ed espulsi dall'insieme di validatori, costando un sostanziale importo di ETH. Nel proof-of-work, un utente malevolo può continuare a ripetere il proprio attacco fintanto che ha sufficiente potenza di hash. Inoltre, è più costoso compiere attacchi equivalenti sull'Ethereum con proof-of-stake rispetto al proof-of-work. Per influenzare la vitalità della catena, è necessario almeno il 33% dell'ether in staking totale sulla rete (tranne nei casi di attacchi molto sofisticati che hanno una probabilità di successo estremamente ridotta). Per controllare i contenuti dei blocchi futuri, è necessario almeno il 51% degli ETH in staking totali e per riscrivere lo storico serve oltre il 66% dello stake totale. Il protocollo di Ethereum distruggerebbe queste risorse negli scenari di attacco al 33% e 51% e tramite il consenso sociale nello scenario di attacchi del 66%. +Il proof-of-stake di Ethereum è molto sicuro. Il meccanismo è stato studiato, sviluppato e testato rigorosamente per otto anni prima di entrare in funzione. Le garanzie di sicurezza sono differenti dalle blockchain di proof-of-work. Nel proof-of-stake, i validatori malevoli possono essere puniti attivamente ("tagliati") ed espulsi dall'insieme di validatori, costando un sostanziale importo di ETH. Nel proof-of-work, un utente malevolo può continuare a ripetere il proprio attacco fintanto che ha sufficiente potenza di hash. Inoltre, è più costoso compiere attacchi equivalenti sull'Ethereum con proof-of-stake rispetto al proof-of-work. Per influenzare la vitalità della catena, è necessario almeno il 33% dell'ether in staking totale sulla rete (tranne nei casi di attacchi molto sofisticati che hanno una probabilità di successo estremamente ridotta). Per controllare i contenuti dei blocchi futuri, è necessario almeno il 51% degli ETH in staking totali e per riscrivere lo storico serve oltre il 66% dello stake totale. Il protocollo di Ethereum distruggerebbe queste risorse negli scenari di attacco al 33% e 51% e tramite il consenso sociale nello scenario di attacchi del 66%. - [Maggiori informazioni sulla difesa del proof-of-stake di Ethereum dagli utenti malevoli](/developers/docs/consensus-mechanisms/pos/attack-and-defense) - [Maggiori informazioni sulla progettazione del proof-of-stake](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) @@ -131,7 +131,7 @@ La resistenza alla censura è attualmente difficile da dimostrare. Tuttavia, a d ## Il sistema di proof-of-stake di Ethereum può subire attacchi al 51%? {#pos-51-attack} -Sì. Il proof-of-stake è vulnerabile agli attacchi al 51%, proprio come il proof-of-work. Invece di richiedere il 51% della potenza di hash della rete, l'attacco richiede il 51% degli ETH totali in staking. Un utente malevolo che accumula il 51% dello stake totale ottiene il controllo dell'algoritmo di scelta della diramazione. Ciò gli consente di censurare certe transazioni, effettuare riorganizzazioni a breve raggio ed estrarre MEV riordinando i blocchi a proprio favore. +Sì. Il proof-of-stake è vulnerabile agli attacchi al 51%, proprio come il proof-of-work. Anziché aver bisogno del 51% della potenza di hash della rete, l'utente malevolo necessita del 51% del totale degli ETH in staking. Un utente malevolo che accumula il 51% dello stake totale ottiene il controllo dell'algoritmo di scelta della diramazione. Ciò gli consente di censurare certe transazioni, effettuare riorganizzazioni a breve raggio ed estrarre MEV riordinando i blocchi a proprio favore. [Maggiori informazioni sugli attacchi al proof-of-stake](/developers/docs/consensus-mechanisms/pos/attack-and-defense) diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/index.md index 860319f20c5..c0cfa8a2ca7 100644 --- a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/index.md +++ b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/index.md @@ -12,53 +12,48 @@ Per capire meglio questa pagina ti consigliamo di leggere i [meccanismi di conse ## Cos'è la proof-of-stake (PoS)? {#what-is-pos} -La Proof of Stake è alla base di certi [meccanismi di consenso](/developers/docs/consensus-mechanisms/) usati dalle blockchain per ottenere il consenso distribuito. Nel proof-of-work, i miner provano di avere del capitale a rischio consumando energia. Ethereum usa il proof-of-stake, in cui i validatori mettono esplicitamente in staking il capitale in forma di ETH, in un contratto intelligente su Ethereum. Questi ETH in staking, poi, fungono da garanzia che può essere distrutta se il validatore si comporta in modo disonesto o pigro. Il validatore è poi responsabile di verificare che i nuovi blocchi propagati sulla rete siano validi e, occasionalmente, di creare e propagare nuovi blocchi. - -La Proof of Stake porta con sé una serie di miglioramenti rispetto all'ormai obsoleto sistema Proof of Work: - -- migliore efficienza energetica, non serve consumare molta energia sui calcoli di proof-of-work -- minori barriere d'accesso, requisiti hardware ridotti: non serve hardware di alto livello per avere la possibilità di creare nuovi blocchi -- minore rischio di centralizzazione: il proof-of-stake dovrebbe portare un maggior numero di nodi alla rete -- a causa del basso requisito energetico è necessaria una minore emissione di ETH per incentivare la partecipazione -- le sanzioni economiche per comportamenti scorretti rendono gli attacchi di tipo 51% esponenzialmente più costosi per un utente malevolo, rispetto al proof-of-work -- la community può ricorrere al recupero sociale di una catena onesta, qualora un attacco 51% dovesse superare le difese cripto-economiche. +Proof-of-stake è un modo per dimostrare che i validatori hanno messo qualcosa di valore nella rete che può essere distrutto se agiscono in maniera disonesta. Nel proof-of-stake di Ethereum, i validatori mettono esplicitamente in stakaing il capitale sotto forma di ETH, in un contratto intelligente su Ethereum. Il validatore è poi responsabile di verificare che i nuovi blocchi propagati sulla rete siano validi e, occasionalmente, di creare e propagare nuovi blocchi. Se prova a frodare la rete (ad esempio proponendo blocchi multipli quando dovrebbe inviarne uno o inviando attestazioni conflittuali) alcuni o tutti i suoi ETH in staking possono venire distrutti. ## Validatori {#validators} -Per partecipare come validatore, un utente deve depositare 32 ETH nel contratto di deposito ed eseguire tre software distinti: un client d'esecuzione, uno di consenso e un validatore. Depositando i propri ETH, l'utente si unisce alla coda di attivazione che limita la frequenza di partecipazione alla rete dei nuovi validatori. Una volta attivati, i validatori ricevono nuovi blocchi dai peer sulla rete di Ethereum. Le transazioni consegnate nel blocco sono eseguite nuovamente e la firma del blocco viene verificata per assicurarsi che il blocco sia valido. Il validatore invia poi nella rete un voto (detto attestazione), in favore di quel blocco. +Per partecipare come validatore, un utente deve depositare 32 ETH nel contratto di deposito ed eseguire tre software distinti: un client di esecuzione, uno di consenso e un validatore. Depositando i propri ETH, l'utente si unisce alla coda di attivazione che limita la frequenza di partecipazione alla rete dei nuovi validatori. Una volta attivati, i validatori ricevono nuovi blocchi dai pari sulla rete di Ethereum. Le transazioni inviate nel blocco sono eseguite nuovamente per controllare che i cambiamenti dello stato di Ethereum proposti siano validi e che la firma del blocco sia controllata. Il validatore invia poi nella rete un voto (detto attestazione) a favore di quel blocco. -Se con il proof-of-work la tempistica dei blocchi è determinata dalla difficoltà di mining, nel proof-of-stake il tempo invece è fisso. Il tempo in Ethereum di proof-of-stake è diviso in slot (12 secondi) ed epoche (32 slot). In ogni slot viene selezionato casualmente un validatore come propositore di blocchi. Questo validatore è responsabile della creazione di un nuovo blocco e del suo invio ad altri nodi sulla rete. Inoltre, in ogni slot, è scelto casualmente un comitato di validatori, i cui voti sono usati per determinare la validità del blocco proposto. +Se con il proof-of-work la tempistica dei blocchi è determinata dalla difficoltà di mining, nel proof-of-stake il ritmo invece è fisso. Il tempo in Ethereum di proof-of-stake è diviso in slot (12 secondi) ed epoche (32 slot). In ogni slot viene selezionato casualmente un validatore come propositore di blocchi. Questo validatore è responsabile della creazione di un nuovo blocco e del suo invio ad altri nodi sulla rete. Inoltre, in ogni slot, è scelto casualmente un comitato di validatori, i cui voti sono usati per determinare la validità del blocco proposto. Dividere le impostazioni del validatore in comitati è importante per mantenere gestibile il carico della rete. I comitati suddividono la serie di validatori affinché ogni validatore attivo attesti in ogni epoca ma non in ogni slot. ## Come viene eseguita una transazione nel PoS di Ethereum {#transaction-execution-ethereum-pos} -Di seguito è fornita una spiegazione end-to-end dell'esecuzione di una transazione nel proof-of-stake di Ethereum. +Di seguito è fornita una spiegazione completa dell'esecuzione di una transazione nel proof-of-stake di Ethereum. -1. Un utente crea e firma una [transazione](/developers/docs/transactions/) con la propria chiave privata. Questo processo è solitamente gestito da un portafoglio o da una libreria come [ether.js](https://docs.ethers.io/v5/), [web3js](https://web3js.readthedocs.io/en/v1.8.1/), [web3py](https://web3py.readthedocs.io/en/v5/), ecc., ma in sostanza l'utente sta facendo una richiesta a un nodo utilizzando l'[API JSON-RPC](/developers/docs/apis/json-rpc/) di Ethereum. L'utente definisce l'importo di carburante che è disposto a pagare come mancia a un validatore per incoraggiarlo a includere la transazione in un blocco. Le [mance](/developers/docs/gas/#priority-fee) sono pagate al validatore bruciando la [commissione di base](/developers/docs/gas/#base-fee). +1. Un utente crea e firma una [transazione](/developers/docs/transactions/) con la propria chiave privata. Ciò, solitamente, è gestito da un portafoglio o da una libreria come [ether.js](https://docs.ethers.io/v5/), [web3js](https://docs.web3js.org/), [web3py](https://web3py.readthedocs.io/en/v5/), ecc., ma, alla base, l'utente sta facendo una richiesta a un nodo utilizzando l'[API JSON-RPC](/developers/docs/apis/json-rpc/) di Ethereum. L'utente definisce l'importo di carburante che è disposto a pagare come mancia a un validatore per incoraggiarlo a includere la transazione in un blocco. Le [mance](/developers/docs/gas/#priority-fee) sono pagate al validatore bruciando la [commissione di base](/developers/docs/gas/#base-fee). 2. La transazione è inviata a un [client di esecuzione](/developers/docs/nodes-and-clients/#execution-client) di Ethereum che ne verifica la validità. Ciò significa assicurarsi che il mittente abbia abbastanza ETH per realizzare la transazione e che l'abbia firmata con la chiave corretta. 3. Se la transazione è valida, il client di esecuzione la aggiunge al proprio mempool locale (elenco di transazioni in sospeso) e inoltre la trasmette agli altri nodi sulla rete di gossip del livello di esecuzione. Quando gli altri nodi ricevono la transazione, la aggiungono anche al proprio mempool locale. Gli utenti avanzati potrebbero astenersi dalla trasmissione della propria transazione, inoltrandola piuttosto a costruttori di blocchi specializzati, come [Flashbots Auction](https://docs.flashbots.net/flashbots-auction/overview). Ciò consente loro di organizzare le transazioni nei blocchi successivi per il massimo profitto ([MEV](/developers/docs/mev/#mev-extraction)). 4. Uno dei nodi della rete è il propositore di blocchi per lo slot corrente, che è stato precedentemente selezionato in modo pseudo-casuale utilizzando RANDAO. Questo nodo è responsabile per la costruzione e trasmissione del blocco successivo da aggiungere alla blockchain di Ethereum e di aggiornare lo stato globale. Il nodo si compone di tre parti: un client di esecuzione, un client di consenso e un client di validazione. Il client di esecuzione raggruppa le transazioni dal mempool locale in un "payload di esecuzione" e le esegue localmente per generare un cambiamento di stato. Questa informazione è passata al client di consenso, dove il payload di esecuzione è impacchettato come parte di un "blocco Beacon" che contiene anche informazioni su ricompense, sanzioni, tagli, attestazioni, ecc., che consentono alla rete di concordare sulla sequenza di blocchi alla testa della catena. La comunicazione tra i client di esecuzione e di consenso è descritta più nel dettaglio in [Connettere i client di consenso e di esecuzione](/developers/docs/networking-layer/#connecting-clients). 5. Gli altri nodi ricevono il nuovo blocco Beacon sulla rete di gossip del livello di consenso. Lo passano al proprio client di esecuzione, dove le transazioni sono rieseguite localmente per garantire che il cambiamento di stato proposto sia valido. Il client di validazione, poi, attesta che il blocco è valido e che è il blocco successivo logico nella sua visione della catena (ossia che si basa sulla catena con il maggior peso di attestazioni, come definito dalle [regole di scelta della diramazione](/developers/docs/consensus-mechanisms/pos/#fork-choice)). Il blocco è aggiunto al database locale in ogni nodo che lo attesta. -6. La transazione può essere considerabile "finalizzata", cioè non annullabile, se è diventata parte di una catena con un "collegamento di super-maggioranza" tra due punti di controllo. I punti di controllo si verificano all'inizio di ogni epoca e, per avere un collegamento di super-maggioranza, entrambi devono essere stati attestati dal 66% degli ETH in staking totali sulla rete. +6. La transazione è considerabile "finalizzata" se è diventata parte di una catena con un "collegamento di super-maggioranza" tra due punti di controllo. I punti di controllo si trovano all'inizio di ogni epoca ed esistono per rendere conto del fatto che solo un sottoinsieme di validatori attivi attesta in ogni slot, ma tutti i validatori attivi attestano attraverso ogni epoca. Perciò è solo tra epoche che si può dimostrare un "collegamento di super-maggioranza" (è qui che il 66% degli ETH totali in staking sulla rete concorda su due punti di controllo). -Ulteriori dettagli sulla finalità sono riportati di seguito. +Ulteriori dettagli sulla finalità si possono trovare di seguito. ## Finalità {#finality} -Una transazione ha "finalità" nelle reti distribuite quando fa parte di un blocco che non può cambiare senza che un importo significativo di ETH sia bruciato. Su Ethereum di proof-of-stake, questo è gestito usando i blocchi di "punto di controllo". Il primo blocco in ogni epoca è un punto di controllo. I validatori votano per le coppie di punti di controllo che considerano valide. Se una coppia di punti di controllo attrae voti che rappresentano almeno due terzi degli ETH in staking totali, i punti di controllo sono aggiornati. Il più recente dei due (destinazione) diventa "giustificato". Il primo dei due è già giustificato perché era la "destinazione" nell'epoca precedente. Ora è aggiornato a "finalizzato". Per annullare un blocco finalizzato, un utente malevolo dovrebbe impegnarsi a perdere almeno un terzo dell'offerta totale di ETH in staking. Il motivo esatto di ciò è spiegato in questo [post del blog dell'Ethereum Foundation](https://blog.ethereum.org/2016/05/09/on-settlement-finality/). Poiché la finalità richiede una maggioranza di due terzi, un utente malevolo potrebbe impedire alla rete di raggiungere la finalità votando con un terzo dello stake totale. Esiste un meccanismo per difendersi da questa eventualità: la [perdita per inattività](https://eth2book.info/bellatrix/part2/incentives/inactivity). Questa si attiva ogni volta che la catena non riesce a finalizzare per più di quattro epoche. La perdita per inattività disperde gli ETH messi in staking dai validatori che votano contro la maggioranza, consentendo a quest'ultima di ottenere nuovamente la maggioranza di due terzi e di finalizzare la catena. +Una transazione ha "finalità" nelle reti distribuite quando fa parte di un blocco che non può cambiare senza bruciare un consistente quantitativo di ETH. Su Ethereum di proof-of-stake, questo è gestito usando i blocchi di "punto di controllo". Il primo blocco in ogni epoca è un punto di controllo. I validatori votano per le coppie di punti di controllo che considerano valide. Se una coppia di punti di controllo attrae voti che rappresentano almeno due terzi degli ETH in staking totali, i punti di controllo sono aggiornati. Il più recente dei due (target), diventa "giustificato". Il primo dei due è già giustificato perché era il "target" nell'epoca precedente. Ora è aggiornato a "finalizzato". + +Per annullare un blocco finalizzato, un utente malevolo dovrebbe impegnarsi a perdere almeno un terzo dell'offerta totale di ETH in staking. Il motivo esatto di ciò è spiegato in questo [post del blog dell'Ethereum Foundation](https://blog.ethereum.org/2016/05/09/on-settlement-finality/). Poiché la finalità richiede una maggioranza di due terzi, un utente malevolo potrebbe impedire alla rete di raggiungere la finalità votando con un terzo dello stake totale. Esiste un meccanismo per difendersi da questa eventualità: la [fuga d'inattività](https://eth2book.info/bellatrix/part2/incentives/inactivity). Questa si attiva ogni volta che la catena non riesce a finalizzare per più di quattro epoche. La fuga d'inattività disperde gli ETH messi in staking dai validatori che votano contro la maggioranza, consentendo a quest'ultima di ottenere nuovamente la maggioranza di due terzi e di finalizzare la catena. ## Sicurezza cripto-economica {#crypto-economic-security} -Gestire un validatore è un impegno. Il validatore deve mantenere hardware e connettività sufficienti per partecipare alla validazione e proposta dei blocchi. In cambio, il validatore è pagato in ETH (il suo saldo di staking aumenta). D'altra parte, la partecipazione come validatore apre anche nuove strade attraverso le quali gli utenti potrebbero attaccare la rete per profitto personale o sabotaggio. Per impedirlo, i validatori perdono le ricompense in ETH se non partecipano quando richiesto e il loro stake esistente può essere distrutto se si comportano in modo disonesto. Esistono due comportamenti principali considerabili disonesti: proporre diversi blocchi in uno slot singolo (equivoco) e inviare attestazioni contraddittorie. L'importo di ETH oggetto di slashing dipende da quanti validatori sono oggetto sanzionati in contemporanea. Questa è nota come la ["sanzione di correlazione"](https://eth2book.info/bellatrix/part2/incentives/slashing#the-correlation-penalty) e può essere minore (circa l'1% dello stake se viene tagliato un singolo validatore) oppure può comportare la distruzione del 100% dello stake del validatore (taglio di massa). È imposta a metà strada tramite un periodo d'uscita forzato che inizia con una sanzione immediata (fino a 0,5 ETH) al Giorno 1, la sanzione di correlazione al Giorno 18 e, infine, l'espulsione dalla rete al Giorno 36. Ogni giorno ricevono modeste sanzioni d'attestazione perché sono presenti sulla rete ma non inviano voti. Tutto questo significa che un attacco coordinato sarebbe molto costoso per un utente malevolo. +Gestire un validatore è un impegno. Il validatore deve mantenere hardware e connettività sufficienti per partecipare alla validazione e proposta dei blocchi. In cambio, il validatore è pagato in ETH (il suo saldo di staking aumenta). D'altra parte, la partecipazione come validatore apre anche nuove strade attraverso le quali gli utenti potrebbero attaccare la rete per profitto personale o sabotaggio. Per impedirlo, i validatori perdono le ricompense in ETH se non partecipano quando richiesto e il loro stake esistente può essere distrutto se si comportano in modo disonesto. Due comportamenti principali sono considerabili disonesti: proporre diversi blocchi in uno slot singolo (equivoco) e inviare attestazioni contraddittorie. + +L'importo di ETH oggetto di slashing dipende da quanti validatori sono oggetto sanzionati in contemporanea. Questa è nota come la ["sanzione di correlazione"](https://eth2book.info/bellatrix/part2/incentives/slashing#the-correlation-penalty) e può essere minore (circa l'1% dello stake se viene tagliato un singolo validatore) oppure può comportare la distruzione del 100% dello stake del validatore (taglio di massa). Viene imposto a metà di un periodo di uscita forzata che inizia con una sanzione immediata (fino a 1 ETH) al Giorno 1, la sanzione di correlazione al Giorno 18 e, infine, espulsione dalla rete al Giorno 36. Ogni giorno ricevono modeste sanzioni d'attestazione perché sono presenti sulla rete ma non inviano voti. Tutto questo significa che un attacco coordinato sarebbe molto costoso per un utente malevolo. ## Scelta della biforcazione {#fork-choice} -Quando la rete opera in modo ottimale ed onesto, c'è sempre e solo un nuovo blocco alla testa della catena e tutti i validatori attestano quel blocco. È però possibile che i validatori abbiano una visione differente della testa della catena, a causa della latenza della rete o perché un propositore di blocchi ha equivocato. I client di consenso necessitano quindi di un algoritmo per decidere quale favorire. L'algoritmo usato in Ethereum proof-of-stake è detto [LMD-GHOST](https://arxiv.org/pdf/2003.03052.pdf) e funziona identificando la biforcazione avente il peso di attestazioni maggiori nella sua storia. +Quando la rete opera in modo ottimale ed onesto, c'è sempre e solo un nuovo blocco alla testa della catena e tutti i validatori attestano quel blocco. È però possibile che i validatori abbiano una visione differente della testa della catena, a causa della latenza della rete o perché un propositore di blocchi ha equivocato. I client di consenso necessitano quindi di un algoritmo per decidere quale favorire. L'algoritmo usato in Ethereum di proof-of-stake è detto [LMD-GHOST](https://arxiv.org/pdf/2003.03052.pdf) e funziona identificando la biforcazione avente il peso di attestazioni maggiore nella sua storia. ## Proof-of-stake e sicurezza {#pos-and-security} -La minaccia di un [attacco 51%](https://www.investopedia.com/terms/1/51-attack.asp) esiste ancora sul proof-of-stake, come già nel proof-of-work, ma è ancora più rischiosa per gli utenti malevoli. Un utente malevolo necessiterebbe del 51% degli ETH in staking. Potrebbero poi usare le proprie attestazioni per garantire che la propria diramazione preferita sia quella con le maggiori attestazioni accumulate. Il 'peso' delle attestazioni accumulate è quello che i client di consenso usano per determinare la catena corretta, così l'utente malevolo potrebbe rendere canonica la propria diramazione. Tuttavia, un punto di forza del proof-of-stake rispetto al proof-of-work è che la community gode di una flessibilità nel preparare un contrattacco. Ad esempio, i validatori onesti potrebbero decidere di continuare a costruire sulla catena di minoranza e ignorare la biforcazione dell'utente malevolo, incoraggiando app, scambi e pool a fare lo stesso. Potrebbero anche decidere di rimuovere forzatamente l'utente malevolo dalla rete e di distruggerne gli ETH in staking. Si tratta di difese economiche forti contro un attacco 51%. +La minaccia di un [attacco 51%](https://www.investopedia.com/terms/1/51-attack.asp) esiste ancora sul proof-of-stake, come già nel proof-of-work, ma è ancora più rischiosa per gli utenti malevoli. Un utente malevolo necessiterebbe del 51% degli ETH in staking. Potrebbe poi usare le proprie attestazioni per garantire che la propria biforcazione preferita sia quella con le maggiori attestazioni accumulate. Il 'peso' delle attestazioni accumulate è ciò che i client di consenso usano per determinare la catena corretta, così l'utente malevolo potrebbe rendere canonica la propria biforcazione. Tuttavia, un punto di forza del proof-of-stake rispetto al proof-of-work è che la community gode di una flessibilità nel preparare un contrattacco. Ad esempio, i validatori onesti potrebbero decidere di continuare a costruire sulla catena di minoranza e ignorare la biforcazione dell'utente malevolo, incoraggiando app, borse e pool a fare lo stesso. Potrebbero anche decidere di rimuovere forzatamente l'utente malevolo dalla rete e di distruggerne gli ETH in staking. Si tratta di difese economiche forti contro un attacco 51%. -Gli attacchi 51% sono solo un tipo di attività malevola. Gli utenti malevoli potrebbero tentare attacchi a lungo raggio (sebbene il gadget di finalità neutralizzi questo vettore d'attacco), a corto raggio 'reorg' (sebbene il potenziamento del propositore e le scadenze dell'attestazione lo mitighino), attacchi di rimbalzo e bilanciamento (anch'essi mitigati dal potenziamento del propositore, fermo restando comunque che sono stati dimostrati solo in condizioni di rete idealizzate) o attacchi valanga (neutralizzati dalla regola degli algoritmi di scelta della biforcazione, di considerare solo l'ultimo messaggio). +Gli attacchi 51% sono solo un tipo di attività malevola. Gli utenti malevoli potrebbero tentare attacchi a lungo raggio (sebbene il gadget di finalità neutralizzi questo vettore d'attacco), 'reorg' a corto raggio (sebbene il potenziamento del propositore e le scadenze dell'attestazione lo mitighino), attacchi di rimbalzo e bilanciamento (anch'essi mitigati dal potenziamento del propositore, fermo restando comunque che sono stati dimostrati solo in condizioni di rete idealizzate) o attacchi valanga (neutralizzati dalla regola degli algoritmi di scelta della biforcazione, di considerare solo l'ultimo messaggio). In generale è stato dimostrato che il proof-of-stake, come implementato su Ethereum, è più sicuro economicamente rispetto al proof-of-work. @@ -71,20 +66,27 @@ In generale è stato dimostrato che il proof-of-stake, come implementato su Ethe | Il proof-of-stake offre una maggiore sicurezza cripto-economica rispetto al proof-of-work | Gli utenti devono far funzionare tre parti di software per partecipare al proof-of-stake di Ethereum. | | È richiesta una minore emissione di nuovi ETH per incentivare i partecipanti alla rete | | -## Preferisci un approccio visivo all'apprendimento? {#visual-learner} +### Confronto con proof-of-work {#comparison-to-proof-of-work} + +Ethereum non è sempre stata una rete di proof-of-stake. All'inizio Ethereum utilizzava il proof-of-work. Il passaggio da proof-of-work a proof-of-stake è avvenuto nel settembre 2022. Il proof-of-stake ha dei vantaggi rispetto al proof-of-work: - +- migliore efficienza energetica, non serve consumare molta energia sui calcoli di proof-of-work +- minori barriere d'accesso, requisiti hardware ridotti: non serve hardware di alto livello per avere la possibilità di creare nuovi blocchi +- minore rischio di centralizzazione: il proof-of-stake dovrebbe portare un maggior numero di nodi alla rete +- a causa del basso requisito energetico è necessaria una minore emissione di ETH per incentivare la partecipazione +- le sanzioni economiche per comportamenti scorretti rendono gli attacchi di tipo 51% più costosi per un utente malevolo, rispetto al proof-of-work +- la community può ricorrere al recupero sociale di una catena onesta, qualora un attacco 51% dovesse superare le difese cripto-economiche. -## Lettura consigliate {#further-reading} +## Letture consigliate {#further-reading} - [FAQ Proof of Stake](https://vitalik.ca/general/2017/12/31/pos_faq.html) _Vitalik Buterin_ - [Cos'è il Proof of Stake](https://consensys.net/blog/blockchain-explained/what-is-proof-of-stake/) _ConsenSys_ - [Cos'è il Proof of Stake e perché è importante](https://bitcoinmagazine.com/culture/what-proof-of-stake-is-and-why-it-matters-1377531463) _Vitalik Buterin_ -- [La spiegazione della Beacon Chain di Ethereum 2.0, da leggere per prima](https://ethos.dev/beacon-chain) _Ethos.dev_ - [Perché il Proof of Stake (Nov 2020)](https://vitalik.ca/general/2020/11/06/pos2020.html) _Vitalik Buterin_ - [Proof of Stake: come ho imparato ad amare la soggettività debole](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) _Vitalik Buterin_ -- [Attacco e difesa del Proof of Stake di Ethereum](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs) -- [Una filosofia di design di Proof of Stake](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) _Vitalik Buterin_ +- [Attacco e difesa del proof-of-stake di Ethereum](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs) +- [Una filosofia di progettazione di Proof of Stake](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) _Vitalik Buterin_ +- [Video: Vitalik Buterin spiega il proof-of-stake a Lex Fridman](https://www.youtube.com/watch?v=3yrqBG-7EVE) ## Argomenti correlati {#related-topics} diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md new file mode 100644 index 00000000000..69f131ca730 --- /dev/null +++ b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/pos-vs-pow/index.md @@ -0,0 +1,69 @@ +--- +title: Proof of stake e proof of work a confronto +description: Un confronto tra il meccanismo di consenso di Ethereum basato sul proof-of-stake e sul proof-of-work +lang: it +--- + +Al lancio di Ethereum, il proof-of-stake necessitava ancora di molta ricerca e sviluppo prima che potesse essere affidabile per proteggere Ethereum. Il proof-of-work era un meccanismo più semplice già collaudato da Bitcoin, il che significava che gli sviluppatori principali potevano implementarlo subito per lanciare Ethereum. Ci sono voluti altri otto anni per sviluppare il proof-of-stake al punto in cui fosse possibile implementarlo. + +Questa pagina spiega la logica dietro il passaggio di Ethereum al proof-of-stake dal proof-of-work e i compromessi che ne derivano. + +## Sicurezza {#security} + +I ricercatori di Ethereum considerano il proof-of-stake più sicuro del proof-of-work. Tuttavia, è stato implementato soltanto di recente per la vera rete principale di Ethereum ed è meno collaudato del proof-of-work. Le seguenti sezioni discutono dei pro e contro del modello di sicurezza del proof-of-stake rispetto al proof-of-work. + +### Costo di attacco {#cost-to-attack} + +Nel proof-of-stake, i validatori devono mettere in garanzia (in "staking") almeno 32 ETH in un contratto intelligente. Ethereum può distruggere l'ether in staking, per punire i validatori che si comportano in maniera errata. Per raggiungere il consenso, almeno il 66% dell'ether in staking totale deve votare in favore di una serie particolare di blocchi. I blocchi votati dal >=66% dello stake diventano "finalizzati", a significare che non possono essere rimossi o riorganizzati. + +Attaccare la rete può significare impedire alla catena di finalizzarsi, o assicurare una certa organizzazione di blocchi nella catena canonica tale che avvantaggi un utente malevolo. Ciò richiede all'utente malevolo di deviare il percorso del consenso onesto, accumulando una grande quantità di ether e votando direttamente con essa, o ingannando i validatori onesti nel votare in un modo in particolare. A parte gli attacchi sofisticati e a bassa probabilità che ingannano i validatori onesti, il costo di attacco di Ethereum è il costo dello stake che un utente malevolo deve accumulare per influenzare il consenso a proprio favore. + +Il costo minimo di attacco è il >33% dello stake totale. Un utente malevolo che possiede il >33% dello stake totale può causare un ritardo di finalità semplicemente andando offline. Questo è un problema relativamente minore per la rete, esistendo un meccanismo, noto come "perdita d'inattività", che fa trapelare lo stake dai validatori offline finché la maggioranza online non rappresenta il 66% dello stake e può nuovamente finalizzare la catena. Inoltre, è teoricamente possibile, per un utente malevolo, causare la doppia finalità con poco più del 33% dello stake totale, creando due blocchi invece di uno, quando gli viene chiesto di essere produttore di blocchi e quindi di votare due volte con tutti i validatori. Ogni biforcazione richiede che soltanto il 50% dei validatori onesti rimanenti visualizzi ogni blocco per primo, quindi, se riescono a sincronizzare i propri messaggi nel modo giusto, potrebbero riuscire a finalizzare entrambe le biforcazioni. Ciò ha una bassa probabilità di successo, ma se un utente malevolo è riuscito a causare una doppia finalità, la comunità di Ethereum dovrebbe decidere di seguire una biforcazione, nel qual caso i validatori dell'utente malevolo verrebbero necessariamente frammentati nell'altra. + +Con il >33% dello stake totale, un utente malevolo ha una possibilità di avere un effetto minore (ritardo della finalità) o più grave (doppia finalità) sulla rete di Ethereum. Con più di 14.000.000 ETH in staking sulla rete e un prezzo rappresentativo di $1000/ETH, il costo minimo per eseguire questi attacchi è di `1000 x 14.000.000 x 0,33 = $4.620.000.000`. L'utente malevolo perderebbe tale denaro tramite il frazionamento e verrebbe espulso dalla rete. Per ripetere l'attacco, dovrebbe accumulare il >33% dello stake (nuovamente) e bruciarlo (di nuovo). Ogni tentativo di attaccare la rete costerebbe >$4,6 miliardi (a $1000/ETH e 14M di ETH in staking). L'utente malevolo, inoltre, viene espulso dalla rete quando è frazionato e dovrà aggiungersi alla coda d'attivazione per unirsi nuovamente. Ciò significa che il tasso di un attacco ripetuto è limitato non soltanto alla velocità a cui l'utente malevolo può accumulare il >33% dello stake totale, ma anche al tempo necessario per far accedere tutti i validatori alla rete. Ogni volta che l'utente malevolo attacca diventa molto più povero e il resto della comunità si arricchisce grazie allo shock di approvvigionamento risultante. + +Altri attacchi, come gli attacchi al 51% o l'inversione di finalità con il 66% dello stake totale, richiedono sostanzialmente più ETH e sono molto più costosi per l'utente malevolo. + +Confrontalo con il proof-of-work. Il costo di lanciare un attacco al proof-of-work di Ethereum era il costo di possedere costantemente il >50% del tasso di hash di rete totale. Ciò corrispondeva ai costi del hardware e di gestione della potenza di calcolo sufficiente per superare la concorrenza degli altri miner e calcolare coerentemente le soluzioni di proof-of-work. Ethereum era per lo più minato utilizzando le GPU piuttosto che l'ASIC, il che ha mantenuto i costi bassi (tuttavia, se Ethereum fosse rimasto sul proof-of-work, il mining con ASIC sarebbe potuto divenire più popolare). Un concorrente avrebbe dovuto acquistare molto hardware e pagare per l'elettricità per eseguirlo per attaccare una rete di Ethereum in proof-of-work, ma il costo totale sarebbe stato inferiore a quello richiesto per accumulare abbastanza ETH e attaccare Ethereum. Un attacco del 51% è circa [20 volte meno](https://youtu.be/1m12zgJ42dI?t=1562) costoso sul proof-of-work che sul proof-of-stake. Se l'attacco è stato rilevato e la catena è stata biforcata duramente per rimuovere le modifiche, l'utente malevolo potrebbe utilizzare ripetutamente lo stesso hardware per attaccare la nuova biforcazione. + +### Complessità {#complexity} + +Il proof-of-stake è molto più complesso del proof-of-work. Questo potrebbe essere un punto a favore del proof-of-work, poiché è più complesso introdurre accidentalmente bug o effetti indesiderati a dei protocolli più semplici. Tuttavia, la complessità è stata domata da anni di ricerca e sviluppo, simulazioni e implementazioni della rete di prova. Il protocollo di proof-of-stake è stato implementato indipendentemente da cinque team separati (su ogni livello d'esecuzione e del consenso), in cinque linguaggi di programmazione, fornendo resilienza contro i bug dei client. + +Per sviluppare e testare in sicurezza la logica di consenso del proof-of-stake, la Beacon Chain è stata lanciata due anni prima dell'implementazione del proof-of-stake sulla rete principale di Ethereum. La Beacon Chain ha agito da sandbox per il test del proof-of-stake, essendo una blockchain attiva che implementava la logica di consenso del proof-of-stake senza toccare le transazioni reali di Ethereum, in modo efficace, arrivando al consenso soltanto su se stessa. Una volta che questa è diventata stabile e priva di bug per un periodo sufficiente, la Beacon Chain è stata "fusa" con la rete principale di Ethereum. Tutto ciò ha contribuito a "domare" la complessità del proof-of-stake al punto che i rischi di conseguenze impreviste o bug del client sono stati ridotti al minimo. + +### Superficie d'attacco {#attack-surface} + +Il proof-of-stake è più complesso del proof-of-work, il che significa che esistono più vettori d'attacco potenziali da gestire. Invece di una rete tra pari che connette i client, ne esistono due, ognuna delle quali implementa un protocollo separato. Avere un validatore specifico e preselezionato per proporre un blocco in ogni spazio crea il potenziale per la negazione del servizio, laddove grandi quantità di traffico di rete portano tale validatore specifico ad andare offline. + +Esistono inoltre dei modi in cui gli utenti malevoli possono sincronizzare attentamente il rilascio dei propri blocchi o delle proprie attestazioni, così che siano ricevuti da una certa percentuale della rete onesta influenzandola a votare in certi modi. Infine, un utente malevolo potrebbe semplicemente accumulare abbastanza ETH da mettere in staking, dominando il meccanismo di consenso. Ognuno di questi [vettori d'attacco ha delle difese associate](/developers/docs/consensus-mechanisms/pos/attack-and-defense), ma non esistono per la difesa sotto il proof-of-work. + +## Decentralizzazione {#decentralization} + +Il proof-of-stake è più decentralizzato del proof-of-work perché la "corsa agli armamenti" nell'hardware di mining tende a deprezzare gli individui e le piccole organizzazioni. Mentre chiunque può tecnicamente iniziare il mining con hardware modesto, la probabilità che riceva qualsiasi ricompensa è incredibilmente piccola rispetto alle operazioni istituzionali di mining. Con il proof-of-stake, il costo dello staking e il rendimento percentuale su tale stake sono gli stessi per tutti. Al momento, l'operazione di un validatore costa 32 ETH. + +D'altra parte, l'invenzione dei derivati di staking liquidi ha portato a preoccupazioni sulla centralizzazione, poiché alcuni grandi fornitori gestiscono grandi importi di ETH in staking. Ciò è problematico e dev'essere corretto il prima possibile, ma è anche più sfumato di quanto sembri. I fornitori di staking centralizzati non hanno necessariamente il controllo centralizzato dei validatori; spesso è soltanto un modo per creare un gruppo di ETH centrale, che molti operatori di nodi indipendenti possono mettere in staking, senza che siano richiesti 32 ETH a ogni partecipante. + +La migliore opzione per Ethereum è che i validatori siano operati localmente sui computer domestici, massimizzando la decentralizzazione. Ecco perché Ethereum resiste alle modifiche che incrementano i requisiti hardware per l'operazione di un nodo/validatore. + +## Sostenibilità {#sustainability} + +Il proof-of-stake è un metodo a basso costo carbonico per proteggere la blockchain. Sotto il proof-of-work, i miner competono per il diritto di minare un blocco. I miner hanno più successo quando possono eseguire i calcoli più velocemente, incentivando l'investimento in hardware e il consumo energetico. Ciò è stato osservato per Ethereum prima che passasse al proof-of-stake. Poco dopo la transizione al proof-of-stake, Ethereum consumava approssimativamente 78 TWh/anno; tanto quanto un piccolo paese. Tuttavia, il passaggio al proof-of-stake ha ridotto il consumo energetico di circa il 99,98%. Il proof-of-stake ha reso Ethereum una piattaforma a basso tenore carbonico, nonché efficiente a livello energetico. + +[Di più sul consumo energetico di Ethereum](/energy-consumption) + +## Emissione {#issuance} + +Il proof-of-stake di Ethereum può pagare per la sua sicurezza, emettendo molte meno monete del proof-of-work, poiché i validatori non devono pagare costi d'elettricità elevati. Di conseguenza, gli ETH possono ridurre l'inflazione o persino deflazionarsi, quando sono bruciati grandi importi di ETH. Livelli d'inflazione inferiori significano che la sicurezza di Ethereum è più economica rispetto al proof-of-work. + +## Preferisci un approccio visivo all'apprendimento? {#visual-learner} + +Guarda Justin Drake spiegare i benefici del proof-of-stake rispetto al proof-of-work: + + + +## Letture consigliate {#further-reading} + +- [Filosofia di design del proof-of-stake di Vitalik](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) +- [FAQ sul proof-of-stake di Vitalik](https://vitalik.ca/general/2017/12/31/pos_faq.html#what-is-proof-of-stake) +- [Video di "Spiegazione semplice" su PoS e PoW a confronto](https://www.youtube.com/watch?v=M3EFi_POhps) diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md index 6a133f60680..774d6462172 100644 --- a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md +++ b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md @@ -8,7 +8,7 @@ Ethereum è protetta utilizzando la sua criptovaluta nativa, ether (ETH). Gli op Esistono due ruoli principali per un validatore: 1) controllare i nuovi blocchi e "attestarne" la validità, 2) proporre nuovi blocchi quando selezionati casualmente dal gruppo totale di validatori. Se il validatore non riesce a svolgere una di queste mansioni quando richiesto, perde un pagamento di ether. Talvolta, inoltre, i validatori sono incaricati di aggregare le firme e partecipare alle commissioni di sincronizzazione. -Esistono poi delle azioni molto difficili da compiere per errore e che denotano un intento malevolo, come proporre diversi blocchi per lo stesso slot o attestare più blocchi per lo stesso slot. Questi sono comportamenti "tagliabili" che risultano nel bruciare alcuni importi di ether (fino a 1 ETH) prima che il validatore venga rimosso dalla rete, il che richiede 36 giorni. L'ether del validatore sanzionato si riduce lentamente durante il periodo d'uscita, ma al diciottesimo giorno riceve una "sanzione di correlazione", maggiore quando più validatori sono sanzionati contemporaneamente. La struttura di incentivazione della Beacon Chain, pertanto, premia l'onestà e punisce gli attori disonesti. +Esistono poi delle azioni molto difficili da compiere per errore e che denotano un intento malevolo, come proporre diversi blocchi per lo stesso slot o attestare più blocchi per lo stesso slot. Questi sono comportamenti "tagliabili" che risultano nel bruciare alcuni importi di ether (fino a 1 ETH) prima che il validatore venga rimosso dalla rete, il che richiede 36 giorni. L'ether del validatore sanzionato si riduce lentamente durante il periodo d'uscita, ma al diciottesimo giorno riceve una "sanzione di correlazione", maggiore quando più validatori sono sanzionati contemporaneamente. La struttura di incentivazione del meccanismo di consenso, dunque, paga per l'onestà, punendo gli utenti malevoli. Tutte le ricompense e le sanzioni sono applicate una volta all'epoca. @@ -70,13 +70,13 @@ Il taglio è un'azione più grave che risulta nella rimozione forzata di un vali - Attestando un blocco che ne "circonda" un altro (modificando di fatto lo storico) - Eseguendo un "doppio voto", attestando due candidati per lo stesso blocco -Se queste azioni sono rilevate, il validatore viene tagliato. Ciò significa che 1/32 del suo ether in staking (fino a un massimo di 1 ether) viene immediatamente bruciato, poi inizia un periodo di rimozione di 36 giorni. Durante tale periodo di rimozione, lo stake dei validatori si riduce gradualmente. A metà periodo (18° giorno), è applicata una sanzione aggiuntiva la cui entità scala con il totale di ether in staking di tutti i validatori tagliati nei 36 giorni precedenti all'evento di taglio. Ciò significa che più validatori sono tagliati, maggiore è l'entità del taglio. Il taglio massimo è il saldo effettivo di tutti i validatori tagliati (cioè, se molti validatori sono tagliati, potrebbero perdere il proprio intero stake). D'altra parte, un evento di taglio singolo e isolato brucia soltanto una piccola porzione dello stake del validatore. Questa sanzione intermedia che scala con il numero di validatori tagliati è detta "sanzione di correlazione". +Se queste azioni sono rilevate, il validatore viene tagliato. Ciò significa che 1/32 del suo ether in staking (fino a un massimo di 1 ether) viene immediatamente bruciato, poi inizia un periodo di rimozione di 36 giorni. Durante tale periodo di rimozione, lo stake del validatore si riduce gradualmente. Al punto intermedio (Giorno 18), è applicata una sanzione aggiuntiva la cui portata scala con il totale di ether in staking di tutti i validatori tagliati nei 36 giorni precedenti all'evento di taglio. Ciò significa che più validatori sono tagliati, maggiore è l'entità del taglio. Il taglio massimo è il saldo effettivo di tutti i validatori tagliati (cioè, se molti validatori sono tagliati, potrebbero perdere il proprio intero stake). D'altra parte, un evento di taglio singolo e isolato brucia soltanto una piccola porzione dello stake del validatore. Questa sanzione intermedia che scala con il numero di validatori tagliati è detta "sanzione di correlazione". ## Perdita per inattività {#inactivity-leak} -Se la Beacon Chain ha passato oltre quattro epoche senza finalizzare, viene attivato un protocollo d'emergenza detto "perdita per inattività". Lo scopo ultimo della perdita per inattività è creare le condizioni necessarie perché la catena recuperi la finalità. Come spiegato sopra, la finalità richiede una maggioranza dei 2/3 dell'ether in staking totale per accordarsi sui punti di controllo di origine e di destinazione. Se validatori che rappresentano oltre 1/3 dei validatori totali vanno offline o non riescono a inviare le attestazioni corrette, non è possibile che una supermaggioranza dei 2/3 finalizzi i punti di controllo. La perdita per inattività consente allo stake appartenente ai validatori inattivi di disperdersi gradualmente finché non controllano meno di 1/3 dello stake totale, consentendo ai validatori attivi rimanenti di finalizzare la catena. Indipendentemente da quanto sia grande il gruppo di validatori inattivi, i rimanenti validatori attivi alla fine controlleranno più di 2/3 dello stake. La perdita di stake è un forte incentivo per i validatori inattivi a riattivarsi appena possibile! Uno scenario di perdita per inattività è stato riscontrato sulla rete di prova Medalla quando <66% di validatori attivi è riuscito ad arrivare al consenso sulla testa corrente della blockchain. La perdita per inattività è stata attivata e la finalità è stata infine recuperata! +Se il livello del consenso ha superato più di quattro epoche senza finalizzare, un protocollo di emergenza detto "perdita di inattività" viene attivato. Lo scopo ultimo della perdita per inattività è creare le condizioni necessarie perché la catena recuperi la finalità. Come spiegato sopra, la finalità richiede una maggioranza dei 2/3 dell'ether in staking totale per accordarsi sui punti di controllo di origine e di destinazione. Se validatori che rappresentano oltre 1/3 dei validatori totali vanno offline o non riescono a inviare le attestazioni corrette, non è possibile che una supermaggioranza dei 2/3 finalizzi i punti di controllo. La perdita per inattività consente allo stake appartenente ai validatori inattivi di disperdersi gradualmente finché non controllano meno di 1/3 dello stake totale, consentendo ai validatori attivi rimanenti di finalizzare la catena. Indipendentemente da quanto sia grande il gruppo di validatori inattivi, i rimanenti validatori attivi alla fine controlleranno più di 2/3 dello stake. La perdita di stake è un forte incentivo per i validatori inattivi a riattivarsi appena possibile! Uno scenario di perdita per inattività è stato riscontrato sulla rete di prova Medalla quando <66% di validatori attivi è riuscito ad arrivare al consenso sulla testa corrente della blockchain. La perdita per inattività è stata attivata e la finalità è stata infine recuperata! -La progettazione di ricompense, sanzioni e tagli della Beacon Chain incoraggia i singoli validatori a comportarsi correttamente. Tuttavia, da tali scelte di progettazione emerge un sistema che incentiva fortemente la distribuzione equa dei validatori tra i vari client e dovrebbe disincentivare fortemente il dominio di un singolo client. +Il design di ricompense, sanzioni e frazionamenti del meccanismo di consenso incoraggia i singoli validatori a comportarsi correttamente. Tuttavia, da tali scelte di progettazione emerge un sistema che incentiva fortemente la distribuzione equa dei validatori tra i vari client e dovrebbe disincentivare fortemente il dominio di un singolo client. ## Ulteriori letture {#further-reading} diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/pow/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/pow/index.md index f148d992374..00360f7f791 100644 --- a/src/content/translations/it/developers/docs/consensus-mechanisms/pow/index.md +++ b/src/content/translations/it/developers/docs/consensus-mechanisms/pow/index.md @@ -68,7 +68,7 @@ Per complicare ulteriormente le cose, le transazioni che erano state rifiutate s ## Consumo energetico del Proof of Work {#energy} -Una delle principali critiche mosse al Proof of Work riguarda la quantità di energia necessaria per mantenere la rete sicura. Per mantenere la sicurezza e la decentralizzazione, Ethereum sul Proof of Work consumava elevate quantità di energia. Poco prima di passare al Proof of Stake, i miner di Ethereum consumavano collettivamente circa 70 TWh/anno (quasi quanto la Repubblica ceca, secondo [digiconomist](https://digiconomist.net/), il 18 luglio 2022). +Una delle principali critiche mosse al Proof of Work riguarda la quantità di energia necessaria per mantenere la rete sicura. Per mantenere la sicurezza e la decentralizzazione, Ethereum sul Proof of Work consumava elevate quantità di energia. Poco prima di passare al Proof of Stake, i miner di Ethereum consumavano collettivamente circa 70 TWh/anno (quasi quanto la Repubblica ceca, secondo [digiconomist](https://digiconomist.net), il 18 luglio 2022). ## Pro e contro {#pros-and-cons} diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/index.md index e8ee4355849..92ad5e0cc68 100644 --- a/src/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/index.md +++ b/src/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/index.md @@ -70,7 +70,7 @@ Austin ti guiderà attraverso il mining e la blockchain basata sul proof-of-work ## L'algoritmo di mining {#mining-algorithm} -La Rete principale di Ethereum ha sempre e solo usato un algoritmo di mining: ['Ethash'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash). Ethhash fu il successore di un algoritmo R&D originale, noto come ['Dagger-Hashimoto'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto). +La Rete Principale di Ethereum ha sempre e solo usato un algoritmo di mining: ['Ethash'](/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash). Ethash era il successore di un algoritmo di R&S originale, noto come ['Dagger-Hashimoto'](/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto/). [Maggiori informazioni sugli algoritmi di mining](/developers/docs/consensus-mechanisms/pow/mining-algorithms/). diff --git a/src/content/translations/it/developers/docs/dapps/index.md b/src/content/translations/it/developers/docs/dapps/index.md index b2cdb6dc88b..d25780ad14e 100644 --- a/src/content/translations/it/developers/docs/dapps/index.md +++ b/src/content/translations/it/developers/docs/dapps/index.md @@ -68,6 +68,12 @@ Un contratto intelligente è codice che risiede sulla blockchain di Ethereum e o - [etherflow.quiknode.io](https://etherflow.quiknode.io/) - [GitHub](https://github.com/abunsen/etherflow) +**thirdweb _- SDK in ogni linguaggio, contratti intelligenti, strumenti e infrastruttura per lo sviluppo web3._** + +- [Home page](https://thirdweb.com/) +- [Documentazione](https://portal.thirdweb.com/) +- [GitHub](https://github.com/thirdweb-dev/) + ## Letture consigliate {#further-reading} - [Esplora le dapp](/dapps) @@ -76,9 +82,9 @@ Un contratto intelligente è codice che risiede sulla blockchain di Ethereum e o - [Cosa sono le App Decentralizzate?](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps) - _Gemini_ - [Dapp popolari](https://www.alchemy.com/dapps) - _Alchemy_ -_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_ +_Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ ## Argomenti correlati {#related-topics} - [Introduzione allo stack di Ethereum](/developers/docs/ethereum-stack/) -- [Framework di sviluppo](/developers/docs/frameworks/) +- [Quadri di sviluppo](/developers/docs/frameworks/) diff --git a/src/content/translations/it/developers/docs/data-and-analytics/block-explorers/index.md b/src/content/translations/it/developers/docs/data-and-analytics/block-explorers/index.md index 3b47068bf31..3f3bf20a992 100644 --- a/src/content/translations/it/developers/docs/data-and-analytics/block-explorers/index.md +++ b/src/content/translations/it/developers/docs/data-and-analytics/block-explorers/index.md @@ -21,8 +21,10 @@ I block explorer sono il tuo portale sui dati di Ethereum. Puoi usarli per visua - [Ethplorer](https://ethplorer.io/): _disponibile anche in cinese, spagnolo, francese, turco, russo, coreano e vietnamita_ - [OKLink](https://www.oklink.com/eth) - [Otterscan](https://otterscan.io/) +- [Rantom](https://rantom.app/) - [Sirato](https://www.web3labs.com/sirato) - [EthVM](https://www.ethvm.com/) +- [DexGuru Block Explorer](https://ethereum.dex.guru/) ## Dati {#data} @@ -234,6 +236,7 @@ I dati di livello superiore del livello di consenso includono quanto segue: - [Blockchair](https://blockchair.com/ethereum): l'esploratore di Ethereum più privato. Anche per ordinare e filtrare i dati (mempool) - [Etherchain](https://www.etherchain.org/) - un esploratore di blocchi per la rete principale di Ethereum - [Ethplorer](https://ethplorer.io/) - un esploratore di blocchi incentrato sui token per la Rete Principale di Ethereum e la rete di prova di Kovan +- [Rantom](https://rantom.app/): Un visualizzatore di transazioni NFT e DeFi open source e intuitivo per gli utenti, per una visione dettagliata ## Approfondimenti {#further-reading} diff --git a/src/content/translations/it/developers/docs/data-and-analytics/index.md b/src/content/translations/it/developers/docs/data-and-analytics/index.md index e098411d82b..1dd7a5dd69c 100644 --- a/src/content/translations/it/developers/docs/data-and-analytics/index.md +++ b/src/content/translations/it/developers/docs/data-and-analytics/index.md @@ -30,7 +30,7 @@ Usando [GraphQL](https://graphql.org/), gli sviluppatori possono interrogare una ## Diversità dei client -La [diversità dei client](/developers/docs/nodes-and-clients/client-diversity/) è importante per la salute complessiva della rete di Ethereum, poiché fornisce resilienza a bug ed exploit. Attualmente esistono vari pannelli di controllo della diversità del client, tra cui [clientdiversity.org](https://clientdiversity.org/), [rated.network](https://rated.network/), [execution-diversity.info](https://execution-diversity.info/) ed [Ethernodes](https://ethernodes.org/). +La [diversità dei client](/developers/docs/nodes-and-clients/client-diversity/) è importante per la salute complessiva della rete di Ethereum, poiché fornisce resilienza a bug ed exploit. Attualmente esistono vari pannelli di controllo della diversità del client, tra cui [clientdiversity.org](https://clientdiversity.org/), [rated.network](https://rated.network), [execution-diversity.info](https://execution-diversity.info/) ed [Ethernodes](https://ethernodes.org/). ## Dune Analytics {#dune-analytics} diff --git a/src/content/translations/it/developers/docs/data-availability/index.md b/src/content/translations/it/developers/docs/data-availability/index.md index bb7678c8330..551701ccfde 100644 --- a/src/content/translations/it/developers/docs/data-availability/index.md +++ b/src/content/translations/it/developers/docs/data-availability/index.md @@ -30,7 +30,7 @@ Il DAS sarà utilizzato per garantire che gli operatori di rollup rendano dispon ### Commissioni di disponibilità dei dati {#data-availability-committees} -Le commissioni di disponibilità dei dati (DAC) sono parti fidate che forniscono, o attestano, la disponibilità dei dati. Le DAC sono utilizzabili al posto di, [o in combinazione delle](https://hackmd.io/@vbuterin/sharding_proposal#Why-not-use-just-committees-and-not-DAS) DAS. Le garanzie fornite dalle commissioni in termini di sicurezza dipendono dalla loro composizione specifica. Ethereum utilizza sottoinsiemi di validatori a campione per attestare la disponibilità di dati per i nodi leggeri, ad esempio. +Le commissioni di disponibilità dei dati (DAC) sono parti fidate che forniscono, o attestano, la disponibilità dei dati. Le DAC sono utilizzabili al posto di [o in combinazione delle](https://hackmd.io/@vbuterin/sharding_proposal#Why-not-use-just-committees-and-not-DAS) DAS. Le garanzie fornite dalle commissioni in termini di sicurezza dipendono dalla loro composizione specifica. Ethereum utilizza sottoinsiemi di validatori a campione per attestare la disponibilità di dati per i nodi leggeri, ad esempio. Le DAC sono utilizzate anche da alcuni Validium. La DAC è un insieme di nodi fidati che memorizzano copie di dati offline. La DAC è necessaria per rendere i dati disponibili in caso di controversia. I membri della DAC pubblicano anche attestazioni on-chain per dimostrare la reale disponibilità di tali dati. Alcuni Validium sostituiscono le DAC con un sistema di validatori di proof of stake (PoS). Qui chiunque può diventare un validatore e memorizzare dati off-chain. Tuttavia, devono fornire una "cauzione", depositata in un contratto intelligente. Nel caso di comportamenti malevoli, come nel caso in cui il validatore trattenga dati, la cauzione può essere decurtata. Le commissioni per la disponibilità dei dati di proof-of-stake sono molto più sicure delle normali DAC perché incentivano direttamente il comportamento onesto. diff --git a/src/content/translations/it/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md b/src/content/translations/it/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md index 68e8d93143f..1154446e7ba 100644 --- a/src/content/translations/it/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md +++ b/src/content/translations/it/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md @@ -25,7 +25,7 @@ Dove `i_0 ... i_n` rappresenta i simboli dell'alfabeto (spesso binari o esadecim Ipotizziamo che si voglia utilizzare una struttura dei dati ad albero radicato per perdurare un ordine su una serie di coppie chiave-valore. Per trovare il valore attualmente mappato alla chiave `dog` nell'albero, occorre convertire prima `dog` in lettere dell'alfabeto (restituendo `64 6f 67`) e poi discendere l'albero seguendo tale percorso, fino a trovare il valore. Quindi, iniziare guardando l'hash radice in un database chiave/valore piatto per trovare il nodo radice dell'albero. È rappresentato come un insieme di chiavi che puntano ad altri nodi. Occorre utilizzare il valore all'indice `6` come una chiave e cercarlo nel database chiave/valore piatto per ottenere il nodo al livello inferiore. Poi si deve scegliere l'indice `4` per cercare il valore successivo, quindi, l'indice `6` e così via, finché, una volta seguito il percorso: `root -> 6 -> 4 -> 6 -> 15 -> 6 -> 7` si cerca il valore del nodo e si trova il risultato. -Esiste una differenza tra cercare qualcosa nel 'trie' e nel 'DB' flat chiave/valore sottostante. Entrambi definiscono degli schemi chiave/valori, ma il DB sottostante può effettuare una tradizionale ricerca di una chiave in 1 passaggio. Cercare una chiave nel trie richiede diverse ricerche DB sottostanti, per ottenere il valore finale descritto sopra. Facciamo riferimento a quest'ultimo come `path`, per eliminare ogni ambiguità. +Esiste una differenza tra cercare qualcosa nel 'trie' e nel 'DB' flat chiave/valore sottostante. Entrambi definiscono degli schemi chiave/valore, ma il DB sottostante può effettuare una tradizionale ricerca di una chiave in 1 passaggio. Cercare una chiave nel trie richiede diverse ricerche DB sottostanti, per ottenere il valore finale descritto sopra. Facciamo riferimento a quest'ultimo come `path`, per eliminare ogni ambiguità. Le operazioni di aggiornamento ed eliminazione per gli alberi radicati sono definibili come segue: @@ -62,9 +62,9 @@ Le operazioni di aggiornamento ed eliminazione per gli alberi radicati sono defi return hash(newnode) ``` -Un albero Radicato di "Merkle" è costruito collegando i nodi utilizzando sinossi di hash crittografici generati deterministicamente. Questo indirizzamento dei contenuti (nel database chiave/valore `key == keccak256(rlp(value))`) fornisce l'autenticazione crittografica dei dati archiviati. Se l'hash radice di un dato albero è noto pubblicamente, allora chiunque può fornire una prova che l'albero includa un dato valore in un percorso specifico, fornendo gli hash di ogni nodo che unisce un valore specifico alla radice dell'albero. +Un albero Radicato di "Merkle" è costruito collegando i nodi utilizzando sinossi di hash crittografici generati deterministicamente. Questo indirizzamento del contenuto (nel DB chiave/valore `key == keccak256(rlp(value))`) fornisce una garanzia dell'integrità crittografica dei dati memorizzati. Se l'hash radice di un dato albero è noto pubblicamente, allora chiunque abbia accesso ai dati delle foglie sottostanti può costruire una prova che l'albero include un dato valore a un percorso specifico, fornendo gli hash di ogni nodo che unisce un valore specifico alla radice dell'albero. -È impossibile, per un utente malevolo, fornire una prova di una coppia `(percorso, valore)` che non esiste, poiché l'hash radice in definitiva si basa su tutti gli hash inferiori. Qualsiasi modifica sottostante modificherebbe l'hash radice. +È impossibile, per un utente malevolo, fornire una prova di una coppia `(percorso, valore)` che non esiste, poiché l'hash radice in definitiva si basa su tutti gli hash inferiori. Qualsiasi modifica sottostante modificherebbe l'hash radice. Si può pensare all'hash come una rappresentazione compressa delle informazioni strutturali sui dati, assicurata da una protezione pre-immagine della funzione di hashing. Chiameremo "nibble" l'unità atomica di un albero radicato (es., un singolo carattere esadecimale o un numero binario a 4 bit). Attraversando un percorso un "nibble" per volta, come descritto sopra, i nodi possono fare riferimento massimale a 16 figli, ma includono un elemento `value`. Dunque, li rappresentiamo come un insieme di lunghezza 17. Chiamiamo questi insiemi da 17 elementi "nodi ramo". @@ -233,6 +233,8 @@ curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": [ {"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"} ``` +Nota: la `storageRoot` per un account di Ethereum è vuota per impostazione predefinita se non è l'account di un contratto. + ### Trie delle transazioni {#transaction-trie} Esiste un albero di transazioni separato per ogni blocco, anch'esso che memorizza coppie `(key, value)`. Qui, un percorso è: `rlp(transactionIndex)`, rappresentante la chiave corrispondente a un valore determinato da: diff --git a/src/content/translations/it/developers/docs/data-structures-and-encoding/rlp/index.md b/src/content/translations/it/developers/docs/data-structures-and-encoding/rlp/index.md index 98a092eee96..714b3c5cb9e 100644 --- a/src/content/translations/it/developers/docs/data-structures-and-encoding/rlp/index.md +++ b/src/content/translations/it/developers/docs/data-structures-and-encoding/rlp/index.md @@ -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/src/content/translations/it/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md b/src/content/translations/it/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md index f3d88e86043..68a55f38a0a 100644 --- a/src/content/translations/it/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md +++ b/src/content/translations/it/developers/docs/data-structures-and-encoding/web3-secret-storage-definition/index.md @@ -123,18 +123,18 @@ Vettore di prova che utilizza 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 @@ Vettore di prova che utilizza AES-128-CTR e Scrypt: **Intermedi**: -`Derived key`: `fac192ceb5fd772906bea3e118a69e8bbb5cc24229e20d8766fd298291bba6bd` `MAC Body`: `bb5cc24229e20d8766fd298291bba6bdd172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c` `MAC`: `2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097` `Cipher key`: `fac192ceb5fd772906bea3e118a69e8b` +`Derived key`: `7446f59ecc301d2d79bc3302650d8a5cedc185ccbb4bf3ca1ebd2c163eaa6c2d` `MAC Body`: `edc185ccbb4bf3ca1ebd2c163eaa6c2ddd8a1132cf57db67c038c6763afe2cbe6ea1949a86abc5843f8ca656ebbb1ea2` `MAC`: `337aeb86505d2d0bb620effe57f18381377d67d76dac1090626aa5cd20886a7c` `Cipher key`: `7446f59ecc301d2d79bc3302650d8a5c` ## Alterazioni dalla Versione 1 {#alterations-from-v2} diff --git a/src/content/translations/it/developers/docs/design-and-ux/index.md b/src/content/translations/it/developers/docs/design-and-ux/index.md new file mode 100644 index 00000000000..56ab9b9bdb2 --- /dev/null +++ b/src/content/translations/it/developers/docs/design-and-ux/index.md @@ -0,0 +1,83 @@ +--- +title: Progettazione e UX nel Web3 +description: Introduzione alla progettazione di UX, una ricerca nello spazio web3 e in Ethereum +lang: it +--- + +Sei nuovo alla progettazione con Ethereum? Questo è il posto giusto per te. La community di Ethereum ha scritto le risorse per introdurti alle basi della progettazione e della ricerca web3. Imparerai i concetti fondamentali che potrebbero differire da altri progetti di applicazioni con cui hai familiarità. + +Hai prima bisogno di una conoscenza più di base del web3? Dai un'occhiata al [**Learn Hub**](/learn/). + +## Inizia con la ricerca utente {#Start-with-user-research} + +La progettazione efficace va oltre la creazione di interfacce utente accattivanti a livello visivo. Si tratta di comprendere a fondo i bisogni, gli obiettivi e i fattori trainanti dell'utente. Pertanto, consigliamo fortemente che tutti i progettisti adottino un processo di progettazione come il [**processo del doppio diamante**](), per assicurare che il loro lavoro sia consapevole e intenzionale. + +- [Il Web3 necessita di più ricercatori e progettisti di UX](https://akasha.org/blog/2022/10/11/akasha-conversation-09-web3-ux-researchers-and-designers) - Una panoramica dell'attuale maturità della progettazione +- [Una guida semplice alla ricerca UX](https://uxplanet.org/a-complete-guide-to-ux-research-for-web-3-0-products-d6bead20ebb1) - Una semplice guida su come fare ricerca +- [Come affrontare le decisioni di UX nel Web3](https://archive.devcon.org/archive/watch/6/data-empathy-how-to-approach-ux-decisions-in-web3/) - Una breve panoramica di ricerca quantitativa e qualitativa e le differenze tra queste due (video, 6 minuti) +- [Essere un ricercatore ux nel web3](https://medium.com/@georgia.rakusen/what-its-like-being-a-user-researcher-in-web3-6a4bcc096849) - Un punto di vista personale su cosa significhi essere un ricercatore UX nel web3 + +## Studi di ricerca nel web3 {#Research-in-web3} + +Questo è un elenco curato di ricerche utente fatte nel web3 che potrebbero esserti utili nelle decisioni di progettazione e prodotto o potrebbero inspirarti a condurre nuovi studi. + +- [CRADL: laboratorio di ricerca e progettazione sulle criptovalute](https://project-cradl.notion.site/Crypto-Research-and-Design-Lab-50a7127f34ed4c88ad95c7cedf7fbe36) +- [CRADL: la UX nelle criptovalute](https://docs.google.com/presentation/d/1s2OPSH5sMJzxRYaJSSRTe8W2iIoZx0PseIV-WeZWD1s/edit?usp=sharing) +- [CRADL: ingresso nelle criptovalute](https://docs.google.com/presentation/d/1R9nFuzA-R6SxaGCKhoMbE4Vxe0JxQSTiHXind3LVq_w/edit?usp=sharing) +- [Indagine sullo staking: tendenze chiave, risultati e previsioni - Eth Staker](https://lookerstudio.google.com/u/0/reporting/cafcee00-e1af-4148-bae8-442a88ac75fa/page/p_ja2srdhh2c?s=hmbTWDh9hJo) +- [Indagine: lo stato della Defi 2023](https://stateofdefi.org/) +- [Indagine sull'utilizzabilità e la soddisfazione degli utenti - Ethereum.org](https://lookerstudio.google.com/reporting/0a189a7c-a890-40db-a5c6-009db52c81c9) +- [Indagine sull'utilizzabilità: pool di copertura](https://github.com/threshold-network/UX-User-Research/tree/main/Keep%20Coverage%20Pool) +- [Indagine sull'utilizzabilità: staking su applicazioni multiple]() +- [Aggiornamento 2022 sulla ricerca delle DAO: di cosa hanno bisogno i costruttori di DAO?](https://blog.aragon.org/2022-dao-research-update/) +- [ConSensys: rapporto di ricerca sugli utenti DeFI 2022](https://cdn2.hubspot.net/hubfs/4795067/ConsenSys%20Codefi-Defi%20User%20ResearchReport.pdf) +- [Report sulla UX Bitcoin](https://github.com/patestevao/BitcoinUX-report/blob/master/report.md) +- [Metaverso: report di ricerca sugli utenti](https://www.politico.com/f/?id=00000187-7685-d820-a7e7-7e85d1420000) +- [Andare ad un Safari: ricerca sugli utenti nel Metaverso](https://archive.devcon.org/archive/watch/6/going-on-safari-researching-users-in-the-metaverse/?tab=YouTube) (video, 27 minuti) + +## Progettazione per il web3 {#Design-for-web3} + +- [Principi di progettazione Web3](https://medium.com/@lyricalpolymath/web3-design-principles-f21db2f240c1) - Un framework di regole di UX per le dapp basate su blockchain +- [Principi di progettazione blockchain](https://medium.com/design-ibm/blockchain-design-principles-599c5c067b6e) - Lezioni apprese dal team di progettazione blockchain di IBM +- [Dimensioni della UX web3](https://uxdesign.cc/the-levels-of-web3-user-experience-4f2ad113e37d) - Un'analisi dei differenti livelli della UX web3 e delle sue sfide +- [Modello di progettazione Web3](https://www.web3designpatterns.io/)- Una libreria curata di modelli di progettazione di prodotti Web3 reali +- [W3design.io](https://w3design.io/) - Una libreria curata di flussi di UI di vari progetti nell'ecosistema +- [Neueux.com](https://neueux.com/apps) - Una libreria UI di flussi di utenti con diversi opzioni di filtro + +## Casi di studio di progettazione Web3 {#Design-case-studies} + +- [Come scrivere messaggi di errore web3 migliori](https://medium.com/@JonCrabb/how-to-design-better-web3-error-messages-bd96e12fa582) +- [Suggerimenti per la progettazione Defi](https://medium.com/@JonCrabb/defi-design-tips-vol-12-8600f4374714) +- [Deep Work Studio](https://deepwork.studio/case-studies/) +- [Manuale di UX cripto](https://www.cryptouxhandbook.com/) +- [Vendere un NFT su OpenSea](https://builtformars.com/case-studies/opensea) +- [UX del portafoglio: un'analisi di come i portafogli devono cambiare](https://www.youtube.com/watch?v=oTpuxYj8JWI&ab_channel=ETHDenver) (video, 20 min) + +## Ricompense di progettazione {#Bounties} + +- [Dework](https://app.dework.xyz/bounties) +- [Gitcoin](https://bounties.gitcoin.co/explorer) +- [Hackathon di Buildbox](https://gitcoin.co/hackathons) +- [ETHGlobal](https://ethglobal.com/) + +## Progettazione di DAO e di community {#Design-DAOs-and-communities} + +Partecipate ad organizzazioni professionali guidate dalla community o unitevi a gruppi di progettazione per discutere argomenti e tendenze legati a progetti e alla ricerca con altri membri. + +- [Vectordao.com](https://vectordao.com/) +- [Deepwork.studio](https://www.deepwork.studio/) +- [Designer-dao.xyz](https://www.designer-dao.xyz/) +- [We3.co](https://we3.co/) +- [Openux.xyz](https://openux.xyz/about) +- [web3trends.org](https://web3trends.org/) +- [Progettazione Web3 open source](https://www.web3designers.org/) + +## Sistemi di progettazione {#Design-systems} + +- [Progettazione di Optimism](https://www.figma.com/@oplabs) (Figma) +- [Sistema di progettazione di Ethereum.org](https://www.figma.com/@ethdotorg) (Figma) +- [Finity, un sistema di progettazione per il web3 su Polygon](https://finity.polygon.technology/) (Figma) +- [Sistema di progettazione ENS](https://thorin.ens.domains/) +- [Sistema di progettazione Mirror](https://degen-xyz.vercel.app/) + +**Gli articoli e i progetti elencati in questa pagina non costituiscono sponsorizzazioni ufficiali** e sono forniti solo a scopo informativo. Aggiungiamo i collegamenti a questa pagina in base ai criteri della nostra [politica di inserimento](/contributing/design/adding-design-resources). Se vuoi che aggiungiamo un progetto/articolo, modifica questa pagina su [GitHub](https://github.com/ethereum/ethereum-org-website/blob/dev/src/content/developers/docs/design-and-ux/index.md). diff --git a/src/content/translations/it/developers/docs/development-networks/index.md b/src/content/translations/it/developers/docs/development-networks/index.md index bc91f2f2b97..5855afa04c6 100644 --- a/src/content/translations/it/developers/docs/development-networks/index.md +++ b/src/content/translations/it/developers/docs/development-networks/index.md @@ -62,11 +62,22 @@ Esistono anche due implementazioni di prova pubbliche e mantenute di Ethereum: G - [Launchpad di staking di Goerli](https://goerli.launchpad.ethereum.org/) - [Annuncio di Deprecazione di Ropsten, Rinkeby e Kiln](https://blog.ethereum.org/2022/06/21/testnet-deprecation) +### Pacchetto Ethereum di Kurtosis {#kurtosis} + +Kurtosis è un sistema di produzione per ambienti di prova multi-contenitore che consente agli sviluppatori di avviare localmente istanze riproducibili di reti blockchain. + +Il pacchetto Ethereum di Kurtosis istanzia localmente una rete di prova di Ethereum containerizzata e parametrizzabile, con il supporto di diversi client del Livello di esecuzione (EL) e del Livello di consenso (CL) e un numero n di nodi. Kurtosis gestisce elegantemente tutte le mappature delle porte locali e le connessioni ai servizi per facilitare la prototipazione e il testing di dApp e contratti intelligenti. + +- [Pacchetto rete Ethereum](https://github.com/kurtosis-tech/eth-network-package) +- [Sito Web](https://www.kurtosis.com/) +- [Github](https://github.com/kurtosis-tech/kurtosis) +- [Documentazione](https://docs.kurtosis.com/) + ## Letture consigliate {#further-reading} -_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_ +_Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ ## Argomenti correlati {#related-topics} -- [Framework di sviluppo](/developers/docs/frameworks/) -- [Imposta un ambiente di sviluppo locale](/developers/local-environment/) +- [Quadri di sviluppo](/developers/docs/frameworks/) +- [Configura un ambiente di sviluppo locale](/developers/local-environment/) diff --git a/src/content/translations/it/developers/docs/evm/index.md b/src/content/translations/it/developers/docs/evm/index.md index 4ba405519fb..0becd0825f5 100644 --- a/src/content/translations/it/developers/docs/evm/index.md +++ b/src/content/translations/it/developers/docs/evm/index.md @@ -71,6 +71,7 @@ Tutti i [client Ethereum](/developers/docs/nodes-and-clients/#execution-clients) - [Jellopaper o KEVM: Semantica di EVM in K](https://jellopaper.org/) - [The Beigepaper](https://github.com/chronaeon/beigepaper) - [Ethereum Virtual Machine Opcodes](https://www.ethervm.io/) +- [Documentazione di riferimento del codice operativo della macchina virtuale di Ethereum](https://www.evm.codes/) - [Una breve introduzione alla documentazione di Solidity](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6) ## Argomenti correlati {#related-topics} diff --git a/src/content/translations/it/developers/docs/evm/opcodes/index.md b/src/content/translations/it/developers/docs/evm/opcodes/index.md index e8c64aea7bd..bb190c57602 100644 --- a/src/content/translations/it/developers/docs/evm/opcodes/index.md +++ b/src/content/translations/it/developers/docs/evm/opcodes/index.md @@ -84,7 +84,8 @@ Per le operazioni con costi del carburante dinamici, consulta [gas.md](https://g | 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-5F | _invalid_ | | | | | | +| 5C-5E | _invalid_ | | | | | | +| 5F | PUSH0 | 2 | `.` | `uint8` | | spinge il valore costante 0 allo stack | | 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 | diff --git a/src/content/translations/it/developers/docs/frameworks/index.md b/src/content/translations/it/developers/docs/frameworks/index.md index 88e1ef842a5..884edca3d22 100644 --- a/src/content/translations/it/developers/docs/frameworks/index.md +++ b/src/content/translations/it/developers/docs/frameworks/index.md @@ -91,10 +91,21 @@ Prima di iniziare a studiare i framework, raccomandiamo la lettura della nostra - [GitHub](https://github.com/node-real) - [Discord](https://discord.gg/V5k5gsuE) +**SDK di thirdweb -** **_Sviluppa applicazioni web3 che possono interagire con i tuoi contratti intelligenti usando i nostri potenti SDK e CLI._** + +- [Documentazione](https://portal.thirdweb.com/sdk/) +- [GitHub](https://github.com/thirdweb-dev/) + +**Chainstack -** **_Piattaforma di sviluppo Web3 (Ethereum e altri)._** + +- [chainstack.com](https://www.chainstack.com/) +- [GitHub](https://github.com/chainstack) +- [Discord](https://discord.gg/BSb5zfp9AT) + ## Letture consigliate {#further-reading} -_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_ +_Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ ## Argomenti correlati {#related-topics} -- [Imposta un ambiente di sviluppo locale](/developers/local-environment/) +- [Configura un ambiente di sviluppo locale](/developers/local-environment/) diff --git a/src/content/translations/it/developers/docs/gas/index.md b/src/content/translations/it/developers/docs/gas/index.md index ab5515a2489..5902a7baa55 100644 --- a/src/content/translations/it/developers/docs/gas/index.md +++ b/src/content/translations/it/developers/docs/gas/index.md @@ -14,43 +14,45 @@ Per capire meglio questa pagina, consigliamo innanzi tutto di leggere gli argome Gas fa riferimento all'unità che misura la quantità di sforzo di calcolo necessario per eseguire operazioni specifiche sulla rete di Ethereum. -Dato che ogni transazione Ethereum necessita di risorse di calcolo per essere eseguita, richiede una commissione. Il carburante si riferisce alla commissione necessaria per eseguire una transazione su Ethereum, indipendentemente dal suo successo o fallimento. +Poiché ogni transazione di Ethereum richiede risorse computazionali per essere eseguita, queste risorse devono essere pagate per assicurare che Ethereum non sia vulnerabile a spam e che non si blocchi in cicli computazionali infiniti. Il pagamento per il calcolo è fatto sotto forma di commissioni di carburante (comunemente chiamato gas). -![Un diagramma che mostra dov'è necessario il gas nelle operazioni dell'EVM](./gas.png) _Diagramma adattato da [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +La commissione del gas è **la quantità di gas usato per eseguire alcune operazioni, moltiplicato per il costo di una unità di gas**. La commissione viene pagata indipendentemente dal fatto che la transazione abbia successo o fallisca. -Le commissioni del gas sono pagate nalla valuta nativa di Ethereum, ether (ETH). I prezzi del gas sono denotati in gwei, che è a sua volta una denominazione di ETH: ogni gwei equivale a 0,000000001 ETH (10-9 ETH). Ad esempio, invece di dire che il tuo gas costa 0,000000001 ether, puoi dire che costa 1 gwei. La parola 'gwei' significa 'giga-wei', ed è pari a 1.000.000.000 wei. Wei (dal nome di [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), creatore di [b-money](https://www.investopedia.com/terms/b/bmoney.asp)) è l'unità più piccola di ETH. +![Un diagramma che mostra dov'è necessario il gas nelle operazioni dell'EVM](./gas.png) _Diagramma adattato da [Ethereum EVM illustrato](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ -## Prima dell'aggiornamento di Londra {#pre-london} +Le commissioni del gas devono essere pagate nella valuta nativa di Ethereum, l'ether (ETH). I prezzi del gas sono solitamente riportati in gwei, che è una sottounità di ETH. Ogni gwei equivale ad un miliardesimo di ETH (0,000000001 ETH or 10-9 ETH). -Le modalità di calcolo delle commissioni di transazione sulla rete Ethereum sono state modificate con [l'aggiornamento di Londra](/history/#london) dell'agosto 2021. Ecco un riepilogo di come funzionavano le cose in precedenza: +Per esempio, invece di dire che il gas costa 0,000000001 ether, puoi dire che costa 1 gwei. -Mettiamo che Alice debba pagare 1 ETH a Bob. Nella transazione, il limite di gas è di 21.000 unità e il prezzo del gas è di 200 gwei. +La parola 'gwei' è l'abbreviazione di 'giga-wei', che significa 'miliardo di wei'. Un gwei equivale ad un miliardo di wei. Il wei (dal nome di [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), creatore di [b-money](https://www.investopedia.com/terms/b/bmoney.asp)) è l'unità più piccola di ETH. -La commissione totale sarebbe: `Unità di gas (limite) * Prezzo del gas per unità`, es. ` 21.000 * 200 = 4.200.000 gwei` o 0,0042 ETH +## Come sono calcolate le commissioni del gas? {#how-are-gas-fees-calculated} -## Dopo l'aggiornamento di Londra {#post-london} +Quando invii una transazione, puoi impostare la quantità di gas che sei disposto a pagare. Offrendo una certa quantità di gas, stai facendo un'offerta per includere la tua transazione nel prossimo blocco. Se offri troppo poco, i validatori saranno meno disposti a scegliere la tua transazione per includerla, il che significa che la tua transazione potrebbe essere eseguita in ritardo o non essere eseguita affatto. Se offri troppo, potresti rischiare di sprecare un po' di ETH. Quindi, come si fa a capire quanto pagare? -Ipotizziamo che Jordan debba pagare 1 ETH a Taylor. Nella transazione, il limite di gas è di 21.000 unità e la commissione di base è di 10 gwei. Jordan include una mancia di 2 gwei. +Il gas totale che paghi è diviso in due componenti: la `base fee` e la `priority fee` (mancia). -La commissione totale sarebbe ora: `unità di gas usate * (commissione di base + commissione prioritaria)`, dove la `commissione di base` è un valore fissato dal protocollo e la `commissione prioritaria` è un valore fissato dall'utente come mancia al validatore. +La `base fee` è stabilita dal protocollo - è necessario pagare almeno questo importo affinché la tua transazione sia considerata valida. La `priority fee` è una mancia che si aggiunge alla commissione base per rendere la tua transazione accattivante per i validatori in modo che la scelgano per includerla nel blocco successivo. -Ossia `21.000 * (10 + 2) = 252.000 gwei` o 0,000252 ETH. +Una transazione che paga solo la `base fee` è tecnicamente valida ma è improbabile (che venga inclusa) perché non offre incentivi ai validatori per sceglierla rispetto ad altre transazioni. La commissione `priority` 'corretta' è determinata dall'utilizzo della rete nel momento in cui invii la transazione - se c'è molta richiesta, è possibile che tu debba impostare una commissione `priority` più alta, mentre se c'è meno domanda potrai pagare meno. -Quando Jordan invia il denaro, dal suo conto sono sottratti 1,000252 ETH. Taylor riceve un accredito di 1,0000 ETH. Il validatore riceve la mancia di 0,000042 ETH. La commissione di base di 0,00021 ETH è bruciata. +Ad esempio, ipotizziamo che Jordan debba pagare 1 ETH a Taylor. Il trasferimento di ETH richiede 21.000 unità di gas, e la commissione base è di 10 gwei. Jordan include una mancia di 2 gwei. -Inoltre, Jordan può anche impostare una commissione massima (`maxFeePerGas`) per la transazione. A Jordan viene rimborsata la differenza tra commissione massima ed effettiva, ovvero `rimborso = commissione max - (commissione di base + commissione prioritaria)`. Jordan può impostare un importo massimo da pagare per la transazione da eseguire, senza preoccuparsi di pagare troppo "oltre" la commissione di base quando la transazione è eseguita. +La commissione totale sarebbe ora pari a: -### Dimensione del blocco {#block-size} +`unità di gas usato * (commissione base + commissione prioritaria)` + +dove la `base fee` è il valore impostato dal protocollo e la `priority fee` è il valore impostato dall'utente come mancia per il validatore. -Prima dell'Aggiornamento di Londra, Ethereum aveva blocchi di dimensioni fisse. Nei momenti di elevata domanda di rete, questi blocchi operavano a piena capacità. Quindi, spesso gli utenti dovevano attendere che la domanda calasse per poter essere inclusi in un blocco, il che si traduceva in un'esperienza non soddisfacente per l'utente. +ovvero `21,000 * (10 + 2) = 252,000 gwei` (0,000252 ETH). -L'Aggiornamento di Londra ha introdotto in Ethereum blocchi di dimensioni variabili. Ogni blocco ha una dimensione prevista di 15 milioni di gas, ma la dimensione dei blocchi aumenta o diminuisce in base alla domanda della rete, fino al limite massimo di 30 milioni di gas per blocco (2 volte la dimensione prevista del blocco). Il protocollo raggiunge una dimensione del blocco equilibrata di 15 milioni in media tramite il processo di _tâtonnement_. Significa che se la dimensione del blocco supera quella prevista, il protocollo aumenta la commissione di base per il blocco successivo. Analogamente, il protocollo riduce la commissione di base se la dimensione del blocco è inferiore a quella prevista. L'importo della commissione di base si adatta proporzionalmente alla distanza della dimensione del blocco corrente rispetto a quella prevista. [Maggiori informazioni sui blocchi](/developers/docs/blocks/). +Quando Jordan invia il denaro, dal suo conto sono sottratti 1,000252 ETH. Taylor riceve un accredito di 1,0000 ETH. Il validatore riceve la mancia di 0,000042 ETH. La `base fee` di 0,00021 ETH viene bruciata. -### Tariffa base {#base-fee} +### Commissione base {#base-fee} -Ogni blocco ha una commissione di base che funge da prezzo di riserva. Per poter essere inseriti in un blocco, il prezzo offerto per il gas deve essere pari almeno alla commissione di base. La commissione di base è calcolata indipendentemente dal blocco corrente ed è invece determinata dai blocchi che lo precedono, il che rende le commissioni sulle transazioni più prevedibili per gli utenti. Quando il blocco è minato, questa commissione di base viene "bruciata", ovvero rimossa dalla circolazione. +Ogni blocco ha una commissione base che funge da prezzo di riserva. Per poter essere inseriti in un blocco, il prezzo offerto per il gas deve essere pari almeno alla commissione base. La commissione base è calcolata indipendentemente dal blocco corrente ed è invece determinata dai blocchi che lo precedono, il che rende le commissioni sulle transazioni più prevedibili per gli utenti. Quando il blocco viene creato questa **commissione base viene "bruciata"**, ovvero rimossa dalla circolazione. -La commissione di base è calcolata con una formula che confronta le dimensioni del blocco precedente (la quantità di gas usata per tutte le transazioni) con le dimensioni di quello corrente. La commissione di base aumenta di un massimo del 12,5% per blocco se la dimensione prevista del blocco viene superata. Questa crescita esponenziale rende economicamente impensabile che la dimensione del blocco resti elevata per un tempo indefinito. +La commissione di base è calcolata con una formula che confronta le dimensioni del blocco precedente (la quantità di gas usata per tutte le transazioni) con le dimensioni di quello corrente. La commissione base aumenta di un massimo del 12,5% per blocco se la dimensione prevista del blocco viene superata. Questa crescita esponenziale rende economicamente impensabile che la dimensione del blocco resti elevata per un tempo indefinito. | Numero del blocco | Gas Incluso | Aumento della commissione | Tariffa base corrente | | ----------------- | ----------: | ------------------------: | --------------------: | @@ -63,9 +65,9 @@ La commissione di base è calcolata con una formula che confronta le dimensioni | 7 | 30M | 12,5% | 180,2 gwei | | 8 | 30M | 12,5% | 202,7 gwei | -Rispetto al mercato del gas basato su aste prima dell'Aggiornamento di Londra, questa modifica del meccanismo delle commissioni sulle transazioni ha reso più affidabile la previsione delle commissioni. Secondo la tabella che precede, per creare una transazione sul blocco numero 9, un portafoglio indica all'utente con certezza che la **commissione di base massima** da aggiungere al blocco successivo è `commissione di base corrente * 12,5%` o `202,7 gwei * 12,5% = 228,1 gwei`. +Secondo la tabella che precede, per creare una transazione sul blocco numero 9, un portafoglio indica all'utente con certezza che la **commissione base massima** da aggiungere al blocco successivo è `current base fee * 112.5%` o `202.7 gwei * 112.5% = 228.1 gwei`. -Inoltre, è importante notare che, vista la velocità con cui la commissione di base aumenta mentre si avanza verso un blocco completo, è improbabile assistere a picchi prolungati di blocchi completi. +Inoltre, è importante notare che, vista la velocità con cui la commissione base aumenta mentre si avanza verso un blocco completo, è improbabile assistere a picchi prolungati di blocchi completi. | Numero del blocco | Gas Incluso | Aumento della commissione | Tariffa base corrente | | ----------------- | ----------: | ------------------------: | --------------------: | @@ -77,67 +79,67 @@ Inoltre, è importante notare che, vista la velocità con cui la commissione di ### Commissione prioritaria (mance) {#priority-fee} -Prima dell'Aggiornamento di Londra, i miner avrebbero ricevuto la commissione del gas totale da ogni transazione inclusa in un blocco. - -In virtù del fatto che la nuova commissione di base viene bruciata, l'Aggiornamento di Londra ha introdotto una commissione prioritaria (mancia) per incentivare i miner a includere una transazione nel blocco. Senza mance, i miner troverebbero economicamente conveniente minare blocchi vuoti, poiché riceverebbero la stessa ricompensa. In condizioni normali, una piccola mancia fornisce ai miner un incentivo minimo per includere una transazione. Per le transazioni che devono essere prioritariamente eseguite prima di altre nello stesso blocco, occorrerà una mancia più cospicua per tentare di superare le transazioni concorrenti. +La commissione prioritaria (mancia) incentiva i validatori ad includere una transazione nel blocco. Senza la mancia, i validatori troverebbero economicamente redditizio minare blocchi vuoti, poiché riceverebbero la stessa ricompensa per i blocchi. Mance basse offrono ai validatori un incentivo minimo ad includere una transazione. Affinché le transazioni vengano eseguite in via preferenziale prima di altre transazioni nello stesso blocco, è possibile aggiungere una mancia più alta per cercare di superare le transazioni concorrenti. ### Commissione massima {#maxfee} -Per eseguire una transazione sulla rete, gli utenti possono specificare un limite massimo che sono disposti a pagare affinché la loro transazione venga eseguita. Questo parametro facoltativo è noto come `maxFeePerGas`. Affinché una transazione venga eseguita, la commissione massima deve essere maggiore della somma della commissione di base e della mancia. Il mittente della transazione riceve il rimborso della differenza tra la commissione massima e la somma della commissione di base e della mancia. +Per eseguire una transazione sulla rete, gli utenti possono specificare un limite massimo che sono disposti a pagare affinché la loro transazione venga eseguita. Questo parametro facoltativo è noto come `maxFeePerGas`. Affinché una transazione venga eseguita, la commissione massima deve essere maggiore della somma della commissione base e della mancia. Il mittente della transazione riceve il rimborso della differenza tra la commissione massima e la somma della commissione base e della mancia. -### Calcolo delle commissioni {#calculating-fees} +### Dimensione del blocco {#block-size} -Uno dei benefici principali ottenuti con l'Aggiornamento di Londra è il miglioramento dell'esperienza dell'utente nella definizione delle commissioni sulle transazioni. Per i portafogli che supportano l'aggiornamento, invece di dichiarare esplicitamente quanto si è disposti a pagare per far elaborare la transazione, i fornitori del portafoglio imposteranno automaticamente una commissione sulle transazioni consigliata (commissione di base + commissione prioritaria consigliata) per ridurre la quantità di complessità gravante sugli utenti. +Ogni blocco ha una dimensione prevista di 15 milioni di gas, ma la dimensione dei blocchi aumenta o diminuisce in base alla domanda della rete, fino al limite massimo di 30 milioni di gas per blocco (2 volte la dimensione prevista del blocco). Il protocollo raggiunge una dimensione del blocco equilibrata di 15 milioni in media tramite il processo di _tâtonnement_. Significa che se la dimensione del blocco supera quella prevista, il protocollo aumenta la commissione base per il blocco successivo. Analogamente, il protocollo riduce la commissione base se la dimensione del blocco è inferiore a quella prevista. L'importo della commissione base si adatta proporzionalmente alla distanza della dimensione del blocco corrente rispetto a quella prevista. [Maggiori informazioni sui blocchi](/developers/docs/blocks/). -## EIP-1559 {#eip-1559} +### Calcolo delle commissioni del gas in pratica {#calculating-fees-in-practice} -L'implementazione dell'[EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) nell'Aggiornamento di Londra ha reso il meccanismo delle commissioni sulle transazioni più complesso rispetto al precedente sistema basato su aste dei prezzi del gas, ma ha il vantaggio di rendere le commissioni del gas più prevedibili, migliorando l'efficienza del mercato delle commissioni sulle transazioni. Gli utenti possono inviare transazioni con una `maxFeePerGas` corrispondente a quanto sono disposti a pagare affinché la transazione sia eseguita, sapendo che non pagheranno di più del prezzo di mercato del gas (`baseFeePerGas`) e otterranno il rimborso di qualsiasi extra, tranne la mancia. +Puoi indicare esplicitamente quanto sei disposto a pagare per far eseguire la tua transazione. Tuttavia, la maggior parte dei fornitori di portafogli imposterà automaticamente una commissione sulla transazione consigliata (commissione base + commissione prioritaria consigliata) per ridurre la complessità che grava sui propri utenti. -Questo video spiega l'EIP-1559 e i vantaggi che comporta: +## Perché esistono le commissioni del gas? {#why-do-gas-fees-exist} - +In breve, le commissioni del gas aiutano a proteggere la rete di Ethereum. Richiedendo una commissione per ogni calcolo eseguito sulla rete, impediamo agli utenti malevoli di compiere spam sulla rete. Per evitare cicli infiniti accidentali od ostili oppure altri sprechi di calcolo nel codice, ogni transazione deve definire un limite al numero di passaggi di calcolo dell'esecuzione del codice che può utilizzare. L'unità fondamentale di calcolo è il "gas". -Se sei interessato, puoi leggere [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559). +Sebbene una transazione preveda un limite, tutto il gas non utilizzato in una transazione viene rimborsato all'utente (ciò che viene restituito è: `max fee - (base fee + tip)`). -Approfondisci con queste [Risorse dell'EIP-1559](https://hackmd.io/@timbeiko/1559-resources). +![Diagramma che mostra come è rimborsato il gas inutilizzato](../transactions/gas-tx.png) _Diagramma adattato da [Ethereum EVM illustrato](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ -## Perché esistono le commissioni del gas? {#why-do-gas-fees-exist} +## Cosa è il limite del gas? {#what-is-gas-limit} -In breve, le commissioni del gas aiutano a proteggere la rete di Ethereum. Richiedendo una commissione per ogni calcolo eseguito sulla rete, impediamo agli utenti malevoli di compiere spam sulla rete. Per evitare cicli infiniti accidentali od ostili oppure altri sprechi di calcolo nel codice, ogni transazione deve definire un limite al numero di passaggi di calcolo dell'esecuzione del codice che può utilizzare. L'unità fondamentale di calcolo è il "gas". +Il limite di gas si riferisce all'importo massimo di gas che sei disposto a consumare in una transazione. Le transazioni più complicate che coinvolgono i [contratti intelligenti](/developers/docs/smart-contracts/), richiedono un maggiore lavoro di calcolo e quindi un limite di gas maggiore rispetto a un semplice pagamento. Un trasferimento standard di ETH richiede un limite di gas di 21.000 unità di gas. -Sebbene una transazione preveda un limite, tutto il gas non utilizzato in una transazione viene rimborsato all'utente (ciò che viene restituito è: `commissione massima - (commissione di base + mancia)`). +Ad esempio, se imposti un limite di gas di 50.000 per un semplice trasferimento di ETH, l'EVM ne consumerebbe 21.000 unità e restituirebbe le 29.000 rimanenti. Tuttavia, se specifichi troppo poco gas, ad esempio un limite di gas di 20.000 per un semplice trasferimento di ETH, l'EVM consumerà le tue 20.000 unità di gas tentando di soddisfare la transazione, ma non la completerà. A quel punto l'EVM annulla ogni modifica, ma dato che il validatore ha già eseguito un lavoro pari a 20.000 unità di gas, questo gas viene consumato. -![Diagramma che mostra come viene rimborsato il gas inutilizzato](../transactions/gas-tx.png) _Diagramma adattato da [Ethereum EVM illustrato](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ +## Perché le commissioni del gas possono essere così elevate? {#why-can-gas-fees-get-so-high} -## Cosa si intende con limite di gas? {#what-is-gas-limit} +Le commissioni del gas elevate sono dovute alla popolarità di Ethereum. Se c'è troppa domanda, gli utenti devono offrire mance più alte per cercare di superare le transazioni degli altri utenti. Una mancia più cospicua può rendere più probabile che la tua transazione troverà posto nel blocco successivo. Inoltre, le applicazioni di contratti intelligenti più complessi potrebbero dover eseguire molte operazioni per supportare le loro funzioni, consumando molto gas. -Il limite di gas si riferisce all'importo massimo di gas che si è disposti a consumare in una transazione. Le transazioni più complicate che coinvolgono i [contratti intelligenti](/developers/docs/smart-contracts/), richiedono un maggiore lavoro di calcolo e quindi un limite di gas maggiore rispetto a un semplice pagamento. Un trasferimento standard di ETH richiede un limite di gas di 21.000 unità di gas. +## Iniziative per ridurre i costi del gas {#initiatives-to-reduce-gas-costs} -Ad esempio, se imposti un limite di gas di 50.000 per un semplice trasferimento di ETH, l'EVM ne consumerebbe 21.000 unità e restituirebbe le 29.000 rimanenti. Tuttavia, se specifichi troppo poco gas, ad esempio un limite di gas di 20.000 per un semplice trasferimento di ETH, l'EVM consumerà le tue 20.000 unità di gas tentando di soddisfare la transazione, ma non la completerà. A quel punto l'EVM annulla ogni modifica, ma dato che il miner ha già eseguito un lavoro pari a 20.000 unità di gas, questo gas viene consumato. +Gli [aggiornamenti di scalabilità](/roadmap/) di Ethereum dovrebbero infine risolvere alcuni problemi delle commissioni del gas, che, a loro volta, consentiranno alla piattaforma di elaborare migliaia di transazioni al secondo e di scalare globalmente. -## Perché le commissioni del gas possono esser così elevate? {#why-can-gas-fees-get-so-high} +Il ridimensionamento del Livello 2 è un'iniziativa fondamentale per migliorare notevolmente i costi del gas, l'esperienza utente e il ridimensionamento. [Maggiori informazioni sul ridimensionamento del Livello 2](/developers/docs/scaling/#layer-2-scaling). -Le commissioni del gas elevate sono dovute alla popolarità di Ethereum. Eseguire qualsiasi operazione su Ethereum richiede il consumo di gas, ma lo spazio del gas per blocco è limitato. Le commissioni sono utilizzate per pagare i calcoli, l'archiviazione o la manipolazione di dati, o ancora il trasferimento di token, tutte operazioni che consumano diverse quantità di unità di "carburante". All'aumentare della complessità delle funzionalità delle dApp, cresce anche il numero di operazioni eseguite da un contratto intelligente, il che significa che ogni transazione occupa più spazio in un blocco di dimensioni limitate. Se c'è troppa domanda, gli utenti devono offrire una mancia di importo maggiore per provare a superare le transazioni degli altri utenti. Una mancia più cospicua può rendere più probabile che la tua transazione troverà posto nel blocco successivo. +## Cosa è l'Aggiornamento di Londra / EIP-1559? {#what-was-the-london-upgrade-eip-1559} -Il prezzo del gas da solo in realtà non determina quanto dobbiamo pagare per una specifica transazione. Per calcolare la commissione sulla transazione dobbiamo moltiplicare il gas usato per la commissione base, misurata in gwei. +Prima dell'Aggiornamento di Londra, Ethereum aveva blocchi di dimensioni fisse. Nei momenti di elevata domanda di rete, questi blocchi operavano a piena capacità. Quindi, spesso gli utenti dovevano attendere che la domanda calasse per poter essere inclusi in un blocco, il che si traduceva in un'esperienza non soddisfacente per l'utente. L'Aggiornamento di Londra ha introdotto blocchi di dimensioni variabili in Ethereum. -## Iniziative per ridurre i costi del gas {#initiatives-to-reduce-gas-costs} +Le modalità di calcolo delle commissioni sulla transazione sulla rete Ethereum sono state modificate con [l'aggiornamento di Londra](/history/#london) dell'agosto 2021. Prima dell'aggiornamento Londra, le commissioni venivano calcolate senza separare le commissioni `base` e `priority`, come segue: -Gli [aggiornamenti di scalabilità](/roadmap/) di Ethereum dovrebbero infine risolvere alcuni problemi delle commissioni del gas, che, a loro volta, consentiranno alla piattaforma di elaborare migliaia di transazioni al secondo e di scalare globalmente. +Mettiamo che Alice debba pagare 1 ETH a Bob. Nella transazione, il limite di gas è di 21.000 unità e il prezzo del gas è di 200 gwei. -Il ridimensionamento del Livello 2 è un'iniziativa fondamentale per migliorare notevolmente i costi del gas, l'esperienza utente e la scalabilità. [Maggiori informazioni sul ridimensionamento del Livello 2](/developers/docs/scaling/#layer-2-scaling). +La commissione totale sarebbe stata: `Gas units (limit) * Gas price per unit`, ossia `21,000 * 200 = 4,200,000 gwei` ovvero 0,0042 ETH -## Strategie utili per ridurre i costi del gas {#strategies-for-you-to-reduce-gas-costs} +L'implementazione di [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) nell'Aggiornamento Londra ha reso più complesso il meccanismo delle commissioni sulla transazione, ma ha reso le commissioni sul gas più prevedibili, dando luogo a un mercato delle commissioni di transazione più efficiente. Gli utenti possono inviare transazioni con una `maxFeePerGas` corrispondente a quanto sono disposti a pagare affinché la transazione sia eseguita, sapendo che non pagheranno di più del prezzo di mercato del gas (`baseFeePerGas`) e otterranno il rimborso di qualsiasi extra, tranne la mancia. -Se stai cercando di ridurre i costi del carburante per le tue transazioni, puoi impostare una mancia per indicare il livello di priorità della tua transazione. I miner anteporranno ed eseguiranno le transazioni che offrono una mancia maggiore per il gas, poiché terranno le mance pagate dall'utente e saranno meno inclini a eseguire transazioni che prevedono mance inferiori. +Questo video spiega l'EIP-1559 e i vantaggi che comporta: + + + +## Monitoraggio delle commissioni del gas {#moitoring-gas-fees} Se desideri monitorare i prezzi del gas, così da poter inviare i tuoi ETH a un costo inferiore, puoi usare molti strumenti differenti, come: - [Etherscan](https://etherscan.io/gastracker): _Strumento di stima del prezzo del gas delle transazioni_ - [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm): _Estensione di stima del gas di Chrome che supporta sia transazioni ereditarie di Tipo 0 che transazioni EIP-1559 di Tipo 2._ - -- [ETH Gas Station](https://ethgasstation.info/): _Strumenti di misurazione orientati al cliente per il mercato del gas di Ethereum_ -- [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator): _Calcola le commissioni del gas nella tua valuta locale per diversi tipi di transazione sulla Rete Principale, su Arbitrum e su Polygon._ +- [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator) _Calcola le commissioni del gas nella tua valuta locale per diversi tipi di transazione sulla rete principale, su Arbitrum e su Polygon._ ## Strumenti correlati {#related-tools} @@ -149,7 +151,5 @@ Se desideri monitorare i prezzi del gas, così da poter inviare i tuoi ETH a un - [Ridurre il consumo di gas dei tuoi Contratti Intelligenti](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a) - [Proof of Stake contro Proof of Work](https://blockgeeks.com/guides/proof-of-work-vs-proof-of-stake/) - [Strategie di ottimizzazione del carburante per sviluppatori](https://www.alchemy.com/overviews/solidity-gas-optimization) - -## Argomenti correlati {#related-topics} - -- [Mining](/developers/docs/consensus-mechanisms/pow/mining/) +- [Documenti di EIP-1559](https://eips.ethereum.org/EIPS/eip-1559). +- [Risorse per EIP-1559 di Tim Beiko](https://hackmd.io/@timbeiko/1559-resources). diff --git a/src/content/translations/it/developers/docs/ides/index.md b/src/content/translations/it/developers/docs/ides/index.md index b849a2606b3..62acef8c0bd 100644 --- a/src/content/translations/it/developers/docs/ides/index.md +++ b/src/content/translations/it/developers/docs/ides/index.md @@ -66,4 +66,6 @@ Gli IDE più diffusi hanno plugin integrati che migliorano l'esperienza di svilu ## Letture consigliate {#further-reading} +- [IDE di Ethereum](https://www.alchemy.com/list-of/web3-ides-on-ethereum)_- Lista degli IDE di Ethereum di Alchemy_ + _Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_ diff --git a/src/content/translations/it/developers/docs/intro-to-ethereum/index.md b/src/content/translations/it/developers/docs/intro-to-ethereum/index.md index ce0b7f5ec9c..85c07e182ca 100644 --- a/src/content/translations/it/developers/docs/intro-to-ethereum/index.md +++ b/src/content/translations/it/developers/docs/intro-to-ethereum/index.md @@ -107,7 +107,7 @@ Uno snippet di codice riutilizzabile (programma) che uno sviluppatore pubblica n ## Letture consigliate {#further-reading} - [Ethereum Whitepaper](/whitepaper/) -- [How does Ethereum work, anyway?](https://www.preethikasireddy.com/post/how-does-ethereum-work-anyway) - _Preethi Kasireddy_ (**NB** questa risorsa è ancora preziosa ma tieni presente che è antecedente a [La Fusione](/roadmap/merge) e quindi si riferisce ancora al meccanismo proof-of-work di Ethereum: attualmente Ethereum è protetta da un meccanismo [proof-of-stake](/developers/docs/consensus-mechanisms/pos)) +- [How does Ethereum work, anyway?](https://www.preethikasireddy.com/post/how-does-ethereum-work-anyway) - _Preethi Kasireddy_ (**NB** questa risorsa è ancora preziosa ma tieni presente che è antecedente a [ La Fusione](/roadmap/merge) e quindi si riferisce ancora al meccanismo proof-of-work di Ethereum: attualmente Ethereum è protetta da un meccanismo [proof-of-stake](/developers/docs/consensus-mechanisms/pos)) _Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_ diff --git a/src/content/translations/it/developers/docs/networking-layer/portal-network/index.md b/src/content/translations/it/developers/docs/networking-layer/portal-network/index.md new file mode 100644 index 00000000000..eddf59ab9eb --- /dev/null +++ b/src/content/translations/it/developers/docs/networking-layer/portal-network/index.md @@ -0,0 +1,82 @@ +--- +title: La Rete Portal +description: Una panoramica della Rete Portal, una rete in fase di sviluppo progettata per supportare i client con risorse limitate. +lang: it +--- + +Ethereum è una rete composta da computer che eseguono il software client di Ethereum. Ciascuno di questi computer è chiamato "nodo". Il software client consente a un nodo di inviare e ricevere dati sulla rete Ethereum e verifica i dati in base alle regole del protocollo Ethereum. I nodi conservano molti dati storici nella loro memoria di archiviazione su disco e li aggiungono quando ricevono nuovi pacchetti di informazioni, noti come blocchi, da altri nodi della rete. Questo è necessario per verificare sempre che un nodo abbia informazioni coerenti con il resto della rete. Ciò significa che l'esecuzione di un nodo può richiedere molto spazio su disco. Alcune operazioni dei nodi possono richiedere anche molta RAM. + +Per ovviare al problema dell'archiviazione su disco, sono stati sviluppati nodi "leggeri" che richiedono informazioni ai nodi completi invece di memorizzare tutto da soli. Tuttavia, ciò significa che il nodo leggero non sta verificando in modo indipendente le informazioni e si sta invece fidando di un altro nodo. Ciò significa anche che i nodi completi devono svolgere del lavoro aggiuntivo per servire i nodi leggeri. + +La Rete Portal è un nuovo progetto di rete per Ethereum che mira a risolvere il problema della disponibilità dei dati per i nodi "leggeri" senza dover fare affidamento o sottoporre a ulteriori sforzi i nodi completi, condividendo i dati necessari in piccole porzioni attraverso la rete. + +Maggiori informazioni su [nodi e client](/developers/docs/nodes-and-clients/) + +## Perché abbiamo bisogno della Rete Portal {#why-do-we-need-portal-network} + +I nodi di Ethereum memorizzano la propria copia completa o parziale della blockchain di Ethereum. Questa copia locale viene utilizzata per convalidare le transazioni e garantire che il nodo stia seguendo la catena corretta. Questi dati memorizzati localmente consentono ai nodi di verificare in modo indipendente che i dati in arrivo siano validi e corretti, senza doversi fidare di altre entità. + +Questa copia locale della blockchain e dei dati di stato e di ricezione associati occupa molto spazio sul disco rigido del nodo. Ad esempio, si consiglia un disco rigido da 2 TB per l'esecuzione di un nodo che utilizza [Geth](https://geth.ethereum.org) accoppiato a un client di consenso. Utilizzando la sincronizzazione snap, che memorizza solo i dati della catena da un insieme relativamente recente di blocchi, Geth occupa tipicamente circa 650 GB di spazio su disco, ma cresce di circa 14 GB a settimana (è possibile ridurre nuovamente il nodo a 650 GB periodicamente). + +Ciò significa che la gestione dei nodi può essere costosa, perché una grande quantità di spazio su disco deve essere dedicata a Ethereum. Ci sono diverse soluzioni a questo problema nella tabella di marcia di Ethereum, tra cui la [scadenza dello storico](/roadmap/statelessness/#history-expiry), la [scadenza dello stato](/roadmap/statelessness/#state-expiry) e l'[assenza di stato](/roadmap/statelessness/). Tuttavia, è probabile che passino diversi anni prima che queste misure vengano implementate. Esistono anche [nodi leggeri](/developers/docs/nodes-and-clients/light-clients/) che non salvano la propria copia dei dati della catena, ma richiedono i dati di cui hanno bisogno ai nodi completi. Tuttavia, ciò significa che i nodi leggeri devono fidarsi del fatto che i nodi completi forniscano dati onesti e inoltre aumenta il carico di lavoro per i nodi completi, che devono fornire ai nodi leggeri i dati di cui hanno bisogno. + +La Rete Portal mira a fornire un modo alternativo per i nodi leggeri di ottenere i loro dati che non richieda il fare affidamento sui nodi completi o l'aumento significativo del carico di lavoro di questi ultimi. Il modo in cui ciò avverrà consiste nell'introdurre un nuovo modo per i nodi di Ethereum di condividere i dati attraverso la rete. + +## Come funziona la Rete Portal? {#how-does-portal-network-work} + +I nodi di Ethereum hanno protocolli rigorosi che definiscono come devono comunicare tra loro. I client di esecuzione comunicano utilizzando un insieme di sottoprotocolli noti come [DevP2P](/developers/docs/networking-layer/#devp2p), mentre i nodi di consenso utilizzano uno stack di sottoprotocolli differente chiamato [libP2P](/developers/docs/networking-layer/#libp2p). Questi definiscono i tipi di dati che possono essere trasferiti tra i nodi. + +![devP2P and libP2P](portal-network-devp2p-libp2p.png) + +I nodi possono anche offrire dati specifici attraverso l'[API JSON-RPC](/developers/docs/apis/json-rpc/), che è la modalità utilizzata dalle applicazioni e dai portafogli per scambiare le informazioni con i nodi di Ethereum. Tuttavia, nessuno di questi protocolli è ideale per offrire dati ai client leggeri. + +Attualmente i client leggeri non possono richiedere specifici pezzi di dati della catena tramite DevP2P o libP2p perché questi protocolli sono progettati solo per abilitare la sincronizzazione della catena, il gossip dei blocchi e le transazioni. I client leggeri non vogliono scaricare questa informazione perché questo impedirebbe loro di essere "leggeri". + +Nemmeno l'API JSON-RPC è la scelta ideale per le richieste dei dati da parte del client leggero, perché si basa su una connessione ad uno specifico nodo completo o ad un fornitore RPC centralizzato in grado di offrire i dati. Questo significa che il nodo leggero deve fidarsi dell'onestà dello specifico nodo/fornitore, e che il nodo completo potrebbe dover gestire molte richieste da molti client leggeri, aumentando i suoi requisiti di larghezza di banda. + +L'obiettivo della Rete Portal è di ripensare l'intera progettazione, costruendola specificatamente per la leggerezza, fuori dai vincoli di progettazione dei client di Ethereum esistenti. + +L'idea di base della Rete Portal è quella di prendere il meglio dell'attuale stack di rete consentendo di fornire le informazioni necessarie ai client leggeri, come i dati storici e l'identità dell'attuale testa della catena, attraverso una rete decentralizzata peer-to-peer leggera in stile DevP2P che utilizza un [DHT](https://en.wikipedia.org/wiki/Distributed_hash_table) (simile a Bittorrent). + +L'idea è di aggiungere a ogni nodo piccole parti dei dati storici totali di Ethereum e alcune responsabilità specifiche per ciascun nodo. Quindi, le richieste vengono soddisfatte cercando i nodi che memorizzano i dati specifici richiesti e recuperandoli da essi. + +In questo modo si inverte il modello normale in cui i nodi leggeri trovano un singolo nodo e gli chiedono di filtrare e servire grandi volumi di dati; invece, essi filtrano rapidamente una grande rete di nodi che gestiscono ciascuno piccole quantità di dati. + +L'obiettivo è quello di consentire a una rete decentralizzata di client Portal leggeri di: + +- tracciare della testa della catena +- sincronizzare i dati recenti e storici della catena +- recuperare i dati dello stato +- trasmettere le transazioni +- eseguire le transazioni utilizzando l'[EVM](/developers/docs/evm/) + +I vantaggi di questa progettazione della rete sono: + +- Ridurre la dipendenza da fornitori centralizzati +- Ridurre l'utilizzo della larghezza di banda di Internet +- Sincronizzazione ridotta o nulla +- Accessibile a dispositivi con risorse limitate (<1GB RAM, disco da <100mB, 1CPU) + +Il diagramma seguente mostra le funzioni dei client esistenti che possono essere fornite dalla Rete Portal, consentendo agli utenti di accedere a tali funzioni su dispositivi con risorse molto limitate. + +![tabella della rete portal](portal-network-table2.png) + +## Diversità dei client per impostazione predefinita {#client-diversity-as-default} + +Nella loro progettazione, gli sviluppatori della Rete Portal hanno deciso di creare anche tre diversi client della Rete Portal fin dal primo giorno. + +I client della Rete Portal sono: + +- [Trin](https://github.com/ethereum/trin): scritto in Rust +- [Fluffy](https://nimbus.team/docs/fluffy.html): scritto in Nim +- [Ultralight](https://github.com/ethereumjs/ultralight): scritto in Typescript + +La presenza di più implementazioni client indipendenti aumenta la resilienza e la decentralizzazione della rete Ethereum. + +Se un client presenta problemi o vulnerabilità, gli altri client possono continuare a funzionare senza problemi, evitando un punto di errore singolo. Inoltre, le diverse implementazioni dei clienti favoriscono l'innovazione e la concorrenza, promuovendo miglioramenti e riducendo il rischio di monopolio all'interno dell'ecosistema. + +## Letture consigliate {#futher-reading} + +- [La Rete Portal (Piper Merriam al Devcon di Bogotà)](https://www.youtube.com/watch?v=0stc9jnQLXA). +- [Discord della Rete Portal](https://discord.gg/6XFs56cX) +- [Sito web della Rete Portal](https://ethportal.net) diff --git a/src/content/translations/it/developers/docs/networks/index.md b/src/content/translations/it/developers/docs/networks/index.md index e0304ede5ea..696e1081495 100644 --- a/src/content/translations/it/developers/docs/networks/index.md +++ b/src/content/translations/it/developers/docs/networks/index.md @@ -1,12 +1,12 @@ --- title: Reti -description: Panoramica delle reti Ethereum e indicazioni su dove ottenere ether (ETH) per le reti di test per testare le applicazioni. +description: Panoramica delle reti Ethereum e indicazioni su dove ottenere ether (ETH) per le reti di prova per testare le applicazioni. lang: it --- -Le reti sono ambienti Ethereum diversi ai quali si può accedere per sviluppare, testare o produrre. Poiché Ethereum è un protocollo, possono esistere diverse "reti" indipendenti conformi al protocollo senza che interagiscano tra loro. +Le reti di Ethereum sono gruppi di computer interconnessi che comunicano usando il protocollo di Ethereum. Esiste solo una Rete Principale di Ethereum, ma possono essere create delle reti indipendenti conformi alle stesse regole di protocollo per scopi di test e sviluppo. Esistono molte "reti" indipendenti conformi al protocollo che non interagiscono tra loro. Puoi perfino avviare una rete localmente sul tuo computer per testare i tuoi contratti intelligenti e le tue applicazioni web3. -Il tuo conto di Ethereum opererà su reti diverse, ma il saldo del tuo conto e lo storico delle transazioni non saranno riportati dalla Rete Principale di Ethereum. Per utilizzi di test è utile sapere quali reti sono disponibili e come ottenere ETH per le reti di prova per poter sperimentare. In generale, per considerazioni di sicurezza, è sconsigliato riutilizzare i conti della rete principale sulle reti di prova e viceversa. +Il tuo conto di Ethereum opererà su reti diverse, ma il saldo del tuo conto e lo storico delle transazioni non saranno riportati dalla Rete Principale di Ethereum. Per utilizzi di prova è utile sapere quali reti sono disponibili e come ottenere ETH per le reti di prova per poter sperimentare. In generale, per considerazioni di sicurezza, è sconsigliato riutilizzare i conti della rete principale sulle reti di prova e viceversa. ## Prerequisiti {#prerequisites} @@ -24,13 +24,13 @@ Quando per persone e scambi si parla di prezzi in ETH, si parla di ETH della ret ### Rete di prova di Ethereum {#ethereum-testnets} -Oltre alla rete principale, sono disponibili reti di test pubbliche. Queste, sono reti usate dagli sviluppatori di protocolli o contratti intelligenti per testare sia gli aggiornamenti del protocollo che i potenziali contratti intelligenti, in un ambiente simile a quello di produzione prima della distribuzione alla Rete Principale. In pratica, è analogo ad ambiente di produzione rispetto a server di staging. +Oltre alla rete principale, sono disponibili reti di prova pubbliche. Queste, sono reti usate dagli sviluppatori di protocolli o contratti intelligenti per testare sia gli aggiornamenti del protocollo che i potenziali contratti intelligenti, in un ambiente simile a quello di produzione prima della distribuzione alla Rete Principale. In pratica, è analogo ad ambiente di produzione rispetto a server di staging. Dovresti testare il codice di ogni contratto che scrivi su una rete di prova prima di distribuirlo alla rete principale. Tra le dApp che si integrano con contratti intelligenti esistenti, gran parte dei progetti hanno copie distribuite alle reti di prova. La maggior parte delle reti di prova è partita utilizzando un meccanismo di consenso proof-of-authority autorizzato. Significa che viene scelto un ristretto numero di nodi per convalidare le transazioni e creare nuovi blocchi, e questi fanno staking con la propria identità in questo processo. In alternativa, alcune reti di prova presentano un meccanismo di consenso proof-of-stake aperto, in cui tutti possono fare prove di esecuzione di un validatore, proprio come sulla Rete Principale di Ethereum. -Gli ETH sulle reti di prova non hanno valore reale, quindi non c'è un mercato per gli ETH delle reti di prova. Siccome serviranno ETH per interagire con Ethereum, molti ottengono ETH delle reti di prova da faucet. La maggior parte dei faucet sono webapp dove è possibile inserire un indirizzo al quale verranno inviati gli ETH. +Si presuppone che gli ETH sulla rete di prova non abbiano valore; tuttavia sono stati creati dei mercati per alcuni tipi di ETH su rete di prova che sono divenuti scarsi o difficili da ottenere. Poiché per interagire su Ethereum (anche sulle reti di prova) hai bisogno di ETH, la maggior parte delle persone prende gli ETH gratuitamente dai faucet. La maggior parte dei faucet sono webapp dove è possibile inserire un indirizzo al quale verranno inviati gli ETH. #### Quale rete di prova dovrei usare? @@ -61,12 +61,13 @@ Le due reti di prova pubbliche che gli sviluppatori di client stanno mantenendo - [Faucet Coinbase Wallet | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet) - [Faucet Alchemy Sepolia](https://sepoliafaucet.com/) - [Faucet Infura Sepolia](https://www.infura.io/faucet) +- [Faucet Sepolia di Chainstack](https://faucet.chainstack.com/sepolia-faucet) #### Goerli _(supporto a lungo termine)_ {#goerli} _Nota: [la rete di prova Goerli è obsoleta](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17) e sarà sostituita da [Holesovice](https://github.com/eth-clients/holesovice) nel 2023. Sei pregato di considerare la migrazione delle tue applicazioni a Sepolia._ -Goerli è la rete di prova per testare la convalida e lo staking. La rete Goerli è aperta per gli utenti che vogliono eseguire un validatore della rete di prova. Gli staker che desiderano testare gli aggiornamenti del protocollo prima che siano distribuiti sulla rete principale dovrebbero quindi utilizzare Goerli. +Goerli è una rete di prova per testare la convalida e lo staking. La rete Goerli è aperta per gli utenti che vogliono eseguire un validatore della rete di prova. Gli staker che desiderano testare gli aggiornamenti del protocollo prima che siano distribuiti sulla rete principale dovrebbero quindi utilizzare Goerli. - Insieme di validatori aperto, gli staker possono testare gli aggiornamenti di rete - Grandi dimensioni di stato, utile per testare complesse interazioni tra contratti intelligenti @@ -83,30 +84,17 @@ Goerli è la rete di prova per testare la convalida e lo staking. La rete Goerli - [Faucet Goerli QuickNode](https://faucet.quicknode.com/drip) - [Grabteeth](https://grabteeth.xyz/) - [Faucet PoW](https://goerli-faucet.pk910.de/) -- [Faucet Goerli](https://faucet.goerli.mudit.blog/) - [Faucet Paradigm](https://faucet.paradigm.xyz/) - [Faucet Alchemy Goerli](https://goerlifaucet.com/) -- [Faucet All That Node Goerli](https://www.allthatnode.com/faucet/ethereum.dsrv) +- [Tutti i Faucet del Nodo Goerli](https://www.allthatnode.com/faucet/ethereum.dsrv) - [Faucet Coinbase Wallet | Goerli](https://coinbase.com/faucets/ethereum-goerli-faucet) +- [Faucet Gorli di Chainstack](https://faucet.chainstack.com/goerli-faucet) Per lanciare un Validatore sulla rete di prova Goerli, usa il ["cheap goerli validator" launchpad](https://goerli.launchpad.ethstaker.cc/en/) di ethstaker. -#### Rinkeby _(deprecata)_ {#rinkeby} - -_Nota: [la rete di prova Rinkeby è obsoleta](https://blog.ethereum.org/2022/11/30/ropsten-shutdown-announcement) e non riceverà più aggiornamenti del protocollo. Sei pregato di considerare la migrazione delle tue applicazioni a Sepolia._ - -Una rete di prova proof-of-authority per coloro che eseguono versioni meno recenti del client di Geth. - -##### Faucet - -- [FaucETH](https://fauceth.komputing.org) (Faucet multi-catena che non necessita di un profilo social) -- [Faucet Chainlink](https://faucets.chain.link/) -- [Faucet Paradigm](https://faucet.paradigm.xyz/) -- [Faucet Rinkeby](https://faucet.rinkeby.io/) - ### Rete di prova del livello 2 {#layer-2-testnets} -[Livello 2 (Layer 2 – L2)](/layer-2/) è un termine collettivo per descrivere un insieme specifico di soluzioni di ridimensionamento di Ethereum. Un livello 2 è una blockchain separata che estende Ethereum ed eredita le garanzie di sicurezza di Ethereum. Solitamente le reti di prova di Livello 2 sono strettamente accoppiate alle reti di prova pubbliche di Ethereum. +[Livello 2 (L2)](/layer-2/) è un termine collettivo per descrivere un insieme specifico di soluzioni di ridimensionamento di Ethereum. Un livello 2 è una blockchain separata che estende Ethereum ed eredita le garanzie di sicurezza di Ethereum. Solitamente le reti di prova di Livello 2 sono strettamente accoppiate alle reti di prova pubbliche di Ethereum. #### Arbitrum Goerli {#arbitrum-goerli} @@ -143,7 +131,7 @@ Se una rete Ethereum pubblica è come la rete Internet pubblica, una rete di con ## Strumenti correlati {#related-tools} -- [Chainlist](https://chainlist.org/) _Elenco di reti EVM per connettere portafogli e fornitori all'ID della Catena e ID di Rete appropriati._ +- Elenco di [Chainlist](https://chainlist.org/) _ di reti EVM per connettere portafogli e fornitori all'ID della Catena e ID di Rete appropriati._ - [Catene basate su EVM](https://github.com/ethereum-lists/chains) _Repository di GitHub di metadati della catena che alimentano Chainlist._ ## Letture consigliate {#further-reading} diff --git a/src/content/translations/it/developers/docs/nodes-and-clients/bootnodes/index.md b/src/content/translations/it/developers/docs/nodes-and-clients/bootnodes/index.md index 151ea0ce135..04cdf481b43 100644 --- a/src/content/translations/it/developers/docs/nodes-and-clients/bootnodes/index.md +++ b/src/content/translations/it/developers/docs/nodes-and-clients/bootnodes/index.md @@ -22,7 +22,7 @@ Quando avvii un nodo, dovrebbe registrare il tuo [enode](/developers/docs/networ L'enode è solitamente rigenerato a ogni riavvio, quindi assicurati di consultare la documentazione del tuo client su come generare un enode persistente per il tuo nodo d'avvio. -Per poter essere un buon nodo d'avvio è una buona idea incrementare il numero massimo di pari che possono connettersi a esso. Eseguire un nodo d'avvio con molti pari aumenterà significativamente i requisiti della larghezza di banda. +Per poter essere un buon nodo d'avvio è una buona idea incrementare il numero massimo di pari che possono connettersi a esso. L'esecuzione di un nodo d'avvio con molti peer aumenterà in modo significativo i requisiti di larghezza di banda. ## Nodi d'avvio disponibili {#available-bootnodes} diff --git a/src/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md b/src/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md index 5510803080c..f1eb052f9d1 100644 --- a/src/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md +++ b/src/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md @@ -29,7 +29,7 @@ La diversità dei client offre anche resistenza agli attacchi. Ad esempio, un at ### Finalità del proof-of-stake {#finality} -Un bug in un client del consenso con oltre il 33% dei nodi di Ethereum potrebbe impedire alla Beacon Chain di finalizzarsi, a significare che gli utenti non potrebbero fidarsi del fatto che le transazioni sarebbero a un certo punto ripristinate o modificate. Questo sarebbe molto problematico per molte delle app basate su Ethereum, in particolare, le DeFi. +Un bug in un client di consenso con oltre il 33% dei nodi di Ethereum potrebbe impedire la finalizzazione del livello di consenso, il che significa che gli utenti non possono essere sicuri che le transazioni non vengano annullate o modificate ad un certo punto. Questo sarebbe molto problematico per molte delle app basate su Ethereum, in particolare, le DeFi. Ancora peggio, un bug critico in un client con una maggioranza di due terzi potrebbe causare la una divisione e finalizzazione errata della catena, bloccando un gran numero di validatori su una catena non valida. Se vogliono rientrare nella catena corretta, quei validatori devo sottoporsi a tagli (slashing) o a un prelievo volontario, costoso e lento, e alla riattivazione. L'ammontare del taglio (slashing) aumenta col numero di nodi colpevoli, potendo interessare al massimo una maggioranza di due terzi (32 ETH). @@ -45,7 +45,7 @@ Esiste anche un costo umano associato alla presenza di client di maggioranza. Es I due grafici a torta di cui sopra mostrano le istantanee dell'attuale diversità dei client per i livelli d'esecuzione e del consenso (al momento della scrittura di questo testo, gennaio 2022). Il livello d'esecuzione è prevalentemente dominato da[Geth](https://geth.ethereum.org/), con distacco sul secondo, [Open Ethereum](https://openethereum.github.io/), [Erigon](https://github.com/ledgerwatch/erigon) in terza posizione e [Nethermind](https://nethermind.io/) quarto, con altri client che rappresentano meno dell'1% della rete. Il client più diffuso sul livello del consenso, [Prysm](https://prysmaticlabs.com/#projects), non è tanto dominante quanto Geth, ma rappresenta comunque oltre il 60% della rete. [Lighthouse](https://lighthouse.sigmaprime.io/) e [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) rappresentano rispettivamente circa il 20% e circa il 14%, e gli altri client sono poco usati. -I dati del livello d'esecuzione sono stati ottenuti da [Ethernodes](https://ethernodes.org) il 23/01/22. I dati per i client di consenso sono stati ottenuti da [Michael Sproul](https://github.com/sigp/blockprint). I dati dei client di consenso sono più difficili da ottenere perché i client della Beacon Chain non hanno sempre tracce inequivocabili, utilizzabili per identificarli. I dati sono stati generati usando un algoritmo di classificazione che talvolta confonde alcuni dei client di minoranza (vedi [qui](https://twitter.com/sproulM_/status/1440512518242197516) per ulteriori dettagli). Nel diagramma precedente, queste classificazioni ambigue sono trattate classificate come alternative multiple (es. Nimbus/Teku). È comunque chiaro che la maggioranza della rete sta eseguendo Prysm. I dati sono un'istantanea su una serie fissa di blocchi (in questo caso i blocchi della Beacon Chain dallo slot 2048001 al 2164916) e in alcuni momenti la dominanza di Prysm è stata anche maggiore, superando il 68%. Nonostante siano solo istantanee, i valori nel diagramma forniscono una buona indicazione generale dello stato corrente della diversità dei client. +I dati del livello di esecuzione sono stati ottenuti da [Ethernodes](https://ethernodes.org) il 23/01/2022. I dati per i client di consenso sono stati ottenuti da [Michael Sproul](https://github.com/sigp/blockprint). I dati del client di consenso sono più difficili da ottenere, perché i client del livello di consenso non sempre hanno tracce univoche che possono essere utilizzate per individuarli. I dati sono stati generati usando un algoritmo di classificazione che talvolta confonde alcuni dei client di minoranza (vedi [qui](https://twitter.com/sproulM_/status/1440512518242197516) per ulteriori dettagli). Nel diagramma precedente, queste classificazioni ambigue sono trattate classificate come alternative multiple (es. Nimbus/Teku). È comunque chiaro che la maggioranza della rete sta eseguendo Prysm. I dati sono un'istantanea su una serie fissa di blocchi (in questo caso i blocchi della Beacon Chain dallo slot 2048001 al 2164916) e in alcuni momenti la dominanza di Prysm è stata anche maggiore, superando il 68%. Nonostante siano solo istantanee, i valori nel diagramma forniscono una buona indicazione generale dello stato corrente della diversità dei client. I dati di diversità dei client aggiornati per il livello del consenso sono ora disponibili su [clientdiversity.org](https://clientdiversity.org/). diff --git a/src/content/translations/it/developers/docs/nodes-and-clients/index.md b/src/content/translations/it/developers/docs/nodes-and-clients/index.md index 3251dcb18a2..1c327eb369c 100644 --- a/src/content/translations/it/developers/docs/nodes-and-clients/index.md +++ b/src/content/translations/it/developers/docs/nodes-and-clients/index.md @@ -5,9 +5,7 @@ lang: it sidebarDepth: 2 --- -Ethereum è una rete distribuita di computer (noti come nodi) che eseguono software che possono verificare i blocchi e i dati delle transazioni. Per fare del tuo computer un nodo di Ethereum deve essere eseguita l'applicazione software, detta client. - -**Nota: non è più possibile eseguire un client di esecuzione da solo. Dopo [La Fusione](/roadmap/merge), sia il client di esecuzione sia quello di consenso devono essere eseguiti insieme perché un utente possa ottenere accesso alla rete di Ethereum.** +Ethereum è una rete distribuita di computer (noti come nodi) che eseguono software che possono verificare i blocchi e i dati delle transazioni. Il software deve essere eseguito sul tuo computer per trasformarlo in un nodo Ethereum. Ci sono due pezzi di software separati (chiamati "client") necessari per formare un nodo. ## Prerequisiti {#prerequisites} @@ -17,18 +15,12 @@ Se sei nuovo al tema dei nodi, consigliamo di leggere prima la nostra introduzio ## Che cosa sono i nodi e i client? {#what-are-nodes-and-clients} -Un "nodo" è qualsiasi istanza del software del client di Ethereum connessa ad altri computer che stanno anch'essi eseguendo il software di Ethereum, così da formare una rete. Un client è un'implementazione di Ethereum che verifica i dati rispetto alle regole del protocollo e mantiene sicura la rete. - -L'Ethereum post-Fusione consiste in due parti: il livello di esecuzione e il livello di consenso. I due livelli sono eseguiti da software del client differenti. In questa pagina, faremo loro riferimento come client di esecuzione e client di consenso. +Un "nodo" è qualsiasi istanza del software del client di Ethereum connessa ad altri computer che stanno anch'essi eseguendo il software di Ethereum, così da formare una rete. Un client è un'implementazione di Ethereum che verifica i dati rispetto alle regole del protocollo e mantiene sicura la rete. Un nodo deve eseguire due client: un client di consenso e un client di esecuzione. - Il client di esecuzione (noto anche come il Motore di Esecuzione, client EL o, precedentemente, client di Eth1) attende le nuove transazioni trasmesse nella rete, le esegue nell'EVM e detiene l'ultimo stato e database di tutti i dati correnti di Ethereum. -- Il client di consenso (noto anche come il Nodo Beacon, client CL o, precedentemente, client di Eth2) implementa l'algoritmo di consenso di Proof of Stake, che consente alla rete di raggiungere l'accordo secondo i dati validati dal client di esecuzione. - -Prima de [La Fusione](/roadmap/merge/), i livelli di consenso e di esecuzione erano reti separate, con tutte le transazioni e le attività degli utenti su Ethereum che si verificavano dove ora si trova il livello di esecuzione. Un software del client forniva sia l'ambiente di esecuzione che la verifica del consenso dei blocchi prodotti dai miner. Il livello di consenso, [la Beacon Chain](/roadmap/beacon-chain/), è stato eseguito separatamente da dicembre 2020. Ha introdotto il Proof of Stake e coordinato la rete di validatori sulla base dei dati dalla rete Ethereum. +- Il client di consenso (noto anche come il Nodo Beacon, client CL o, precedentemente, client di Eth2) implementa l'algoritmo di consenso di proof-of-stake, che consente alla rete di raggiungere l'accordo secondo i dati validati dal client di esecuzione. C'è inoltre un terzo pezzo di software, chiamato "validatore" che può essere aggiunto al client di consenso, permettendo al nodo di partecipare alla messa in sicurezza della rete. -Con la Fusione, Ethereum è passata al Proof of Stake connettendo queste reti. I client di esecuzione e di consenso collaborano per verificare lo stato di Ethereum. - -Il design modulare con vari pezzi di software che lavorano insieme è detto [complessità incapsulata](https://vitalik.ca/general/2022/02/28/complexity.html). Questo approccio semplifica l'esecuzione perfetta della Fusione e consente il riutilizzo di singoli client, ad esempio, nell'[ecosistema del livello 2](/layer-2/). +I client lavorano assieme per tenere traccia della testa della blockchain Ethereum e permettere agli utenti di interagire con la rete Ethereum. Il design modulare con molteplici pezzi di software che lavorano assieme è chiamato [complessità incapsulata](https://vitalik.ca/general/2022/02/28/complexity.html). Questo approccio ha semplificato l'esecuzione de [La Fusione](/roadmap/merge) senza problemi, permette di mantenere e sviluppare più facilmente il software client, e consente il riutilizzo di client individuali ad esempio nell'[ecosistema di livello 2](/layer-2/). ![Client di esecuzione e consenso accoppiati](./eth1eth2client.png) Diagramma semplificato di un client di esecuzione e uno di consenso accoppiati. @@ -62,40 +54,44 @@ Se desideri [eseguire il tuo nodo](/developers/docs/nodes-and-clients/run-a-node ### Nodo completo {#full-node} +I nodi completi fanno una validazione blocco per blocco della blockchain, incluso il download e la verifica del corpo del blocco e i dati di stato per ogni blocco. Ci sono classi differenti di nodo completo - alcune iniziano dal blocco genesi e verificano ogni singolo blocco nell'intera cronologia della blockchain. Altre iniziano la loro verifica da un blocco più recente di cui confidano essere valido (ad es. "sincronizzazione snap" di Geth). Indipendentemente da dove parta la verifica, i nodi completi tengono solo una copia locale di dati relativamente recenti (tipicamente i 128 blocchi più recenti), permettendo di eliminare i dati più vecchi per risparmiare spazio sul disco. I dati più vecchi possono essere rigenerati quando è necessario. + - Memorizza i dati completi della blockchain (sebbene siano periodicamente ridotti così che un nodo completo non memorizzi tutti i dati dalla genesi) - Partecipa alla convalida dei blocchi, verifica tutti i blocchi e gli stati. -- Tutti gli stati possono essere derivati da un nodo completo (sebbene gli stati molto vecchi siano ricostruiti a partire dalle richieste effettuate ai nodi di archivio). +- Tutti gli stati possono essere recuperati dalla memoria locale o rigenerati da "istantanee" da un nodo completo. - È al servizio della rete e fornisce dati su richiesta. -### Nodo leggero {#light-node} - -Invece di scaricare ogni blocco, i nodi leggeri scaricano le intestazioni dei blocchi. Queste contengono solo le informazioni sommarie sui contenuti dei blocchi. Ogni altra informazione richiesta dal nodo leggero viene richiesta dal nodo completo. Il nodo leggero può quindi verificare in modo indipendente i dati che riceve rispetto alle radici di stato nelle intestazioni dei blocchi. I nodi leggeri consentono agli utenti di partecipare alla rete Ethereum senza l'hardware potente o l'elevata larghezza di banda necessari per eseguire i nodi completi. Infine, i nodi leggeri potrebbero funzionare su telefoni cellulari o dispositivi embedded. I nodi leggeri non partecipano al consenso (es. non possono essere validatori/miner), ma possono accedere alla blockchain di Ethereum con la stessa sicurezza e avendo le stesse funzioni garantite ai nodi completi. - -I client leggeri sono un'area di sviluppo attivo per Ethereum, e ci aspettiamo presto di vedere nuovi client leggeri per i livelli di consenso e i livelli di esecuzione. Esistono anche dei percorsi potenziali per fornire i dati dei client leggeri sulla [rete di gossip](https://www.ethportal.net/). Questi sono vantaggiosi perché la rete di gossip potrebbe supportare una rete di nodi leggeri senza richiedere ai nodi completi di rispondere alle richieste. - -Ethereum non supporta ancora una grande popolazione di nodi leggeri, ma il supporto dei nodi leggeri è un'area in cui si prevede uno sviluppo rapido nel futuro più prossimo. In particolare, client come [Nimbus](https://nimbus.team/), [Helios](https://github.com/a16z/helios), and [LodeStar](https://lodestar.chainsafe.io/) sono attualmente fortemente focalizzati sui nodi leggeri. - ### Nodo archivio {#archive-node} +I nodi archivio sono nodi completi che verificano ogni blocco da quello genesi e non eliminano mai nessuno dei dati scaricati. + - Memorizza tutto ciò che è presente nel nodo completo e crea un archivio degli stati storici. È necessario se desideri consultare qualcosa come il saldo di un conto al blocco #4.000.000 o testare in modo semplice e affidabile le tue serie di transazioni, senza minarle usando il tracciamento. - Si tratta di terabyte e terabyte di dati, che rendono i nodi archivio meno attraenti per gli utenti medi, ma possono essere utili per servizi come block explorer, fornitori di portafogli e analisi della catena. -La sincronizzazione dei client in qualsiasi modalità diversa dall'archivio comporterà l'eliminazione dei dati della blockchain. Ciò significa che non rimarrà un archivio di tutti gli stati storici, ma il nodo completo è in grado di ricostruirli su richiesta. +La sincronizzazione dei client in qualsiasi modalità diversa dall'archivio comporterà l'eliminazione dei dati della blockchain. Significa che non rimarrà un archivio di tutti gli stati storici, ma il nodo completo è in grado di ricostruirli su richiesta. Scopri di più sui [Nodi archivio](/developers/docs/nodes-and-clients/archive-nodes). +### Nodo leggero {#light-node} + +Invece di scaricare ogni blocco, i nodi leggeri scaricano solo le intestazioni dei blocchi. Queste contengono le informazioni sommarie sui contenuti dei blocchi. Ogni altra informazione di cui i nodi leggeri hanno bisogno viene richiesta a un nodo completo. Il nodo leggero può quindi verificare in modo indipendente i dati che riceve rispetto alle radici di stato nelle intestazioni dei blocchi. I nodi leggeri consentono agli utenti di partecipare alla rete Ethereum senza l'hardware potente o l'elevata larghezza di banda necessari per eseguire i nodi completi. Infine, i nodi leggeri potrebbero funzionare su telefoni cellulari o dispositivi embedded. I nodi leggeri non partecipano al consenso (es. non possono essere validatori/miner), ma possono accedere alla blockchain di Ethereum con la stessa sicurezza e avendo le stesse funzioni garantite ai nodi completi. + +I client leggeri sono un'area di sviluppo attivo per Ethereum, e ci aspettiamo presto di vedere nuovi client leggeri per i livelli di consenso e i livelli di esecuzione. Esistono anche dei percorsi potenziali per fornire i dati dei client leggeri sulla [rete di gossip](https://www.ethportal.net/). Questi sono vantaggiosi perché la rete di gossip potrebbe supportare una rete di nodi leggeri senza richiedere ai nodi completi di rispondere alle richieste. + +Ethereum non supporta ancora una grande popolazione di nodi leggeri, ma il supporto dei nodi leggeri è un'area in cui si prevede uno sviluppo rapido nel futuro più prossimo. In particolare, client come [Nimbus](https://nimbus.team/), [Helios](https://github.com/a16z/helios), and [LodeStar](https://lodestar.chainsafe.io/) sono attualmente fortemente focalizzati sui nodi leggeri. + ## Perché si dovrebbe eseguire un nodo Ethereum? {#why-should-i-run-an-ethereum-node} -L'esecuzione di un nodo consente di utilizzare Ethereum in modo diretto, senza fiducia e privato, supportando la rete tenendola più solida e decentralizzata. +L'esecuzione di un nodo consente di utilizzare Ethereum in modo diretto, affidabile e privato, supportando la rete tenendola più solida e decentralizzata. ### Vantaggi per lo sviluppatore {#benefits-to-you} -Eseguire un nodo permette di utilizzare Ethereum in modo privato, autosufficiente e senza fiducia. Non è necessario affidarsi alla rete perché è possibile verificare i dati da soli con il proprio client. "Non fidarti, verifica" è un popolare mantra della blockchain. +Eseguire un nodo permette di utilizzare Ethereum in modo privato, autosufficiente e senza fiducia. Non devi fidarti della rete, perché puoi verificare i dati da solo col tuo client. "Non fidarti, verifica" è un popolare mantra della blockchain. - Il nodo verifica in autonomia tutte le transazioni e i blocchi in base alle regole del consenso. Significa che non si deve fare affidamento su altri nodi della rete né fidarti completamente di loro. -- Puoi usare un portafoglio Ethereum col tuo nodo. Puoi usare le dapp con maggiore sicurezza e privacy, perché non dovrai comunicare i tuoi indirizzi e saldi a nodi casuali. Tutto può essere controllato con il tuo client. [MetaMask](https://metamask.io), [Frame](https://frame.sh/)e [molti altri portafogli](/wallets/find-wallet/) offrono l'importazione RPC, consentendo loro di usare il tuo nodo. +- Puoi usare un portafoglio Ethereum col tuo nodo. Puoi usare le dapp con maggiore sicurezza e privacy, perché non dovrai comunicare i tuoi indirizzi e saldi a intermediari. Tutto può essere controllato con il tuo client. [MetaMask](https://metamask.io), [Frame](https://frame.sh/)e [molti altri portafogli](/wallets/find-wallet/) offrono l'importazione RPC, consentendo loro di usare il tuo nodo. - Puoi eseguire e hostare tu stesso altri servizi che dipendono dai dati provenienti da Ethereum. Ad esempio, questi potrebbero essere un validatore della Beacon Chain, software come il livello 2, infrastruttura, block explorer, società di servizi di pagamento, ecc. -- Puoi fornire i tuoi [endpoint RPC](/developers/docs/apis/json-rpc/) personalizzati. L'endpoint di Ethereum ospitato pubblicamente per la community o persino privatamente, consente alle persone di usare il tuo nodo ed evitare i grandi fornitori centralizzati. +- Puoi fornire i tuoi [endpoint RPC](/developers/docs/apis/json-rpc/) personalizzati. Potresti anche offrire questi endpoint pubblicamente alla community per aiutarli a evitare i grandi provider centralizzati. - Puoi connetterti al tuo nodo usando le **Comunicazioni interprecessuali (IPC)** o riscrivere il nodo per caricare il tuo programma come plugin. Ciò conferisce una bassa latenza, il che aiuta molto ad esempio quando si elaborano molti dati usando le librerie web3 o quando ti serve sostituire le tue transazioni il più velocemente possibile (frontrunning). - Puoi mettere ETH direttamente in staking per proteggere la rete e guadagnare ricompense. Per iniziare, vedi lo [staking in autonomia](/staking/solo/). @@ -108,29 +104,29 @@ Avere una serie diversificata di nodi è importante per l'integrità, la sicurez - I nodi completi applicano le regole di consenso e quindi non possono essere ingannati ad accettare blocchi che non li seguono. Questo fornisce ulteriore sicurezza nella rete, perché se tutti i nodi fossero leggeri, cioè non effettuassero una verifica completa, i validatori potrebbero attaccare la rete. - Nel caso di un attacco che superi le difese cripto-economiche del [Proof of Stake](/developers/docs/consensus-mechanisms/pos/#what-is-pos), può essere eseguito un recupero sociale dai nodi completi che scelgono di seguire la catena onesta. - Più nodi sulla rete risultano in una rete più diversificata e robusta, l'obiettivo ultimo della decentralizzazione, che consente un sistema resistente alla censura e affidabile. -- I nodi forniscono accesso ai dati della blockchain per i client leggeri che dipendono da essa. In caso di picchi di utilizzo, per agevolare la sincronizzazione dei nodi leggeri, è necessario che i nodi completi siano in quantità sufficiente. I nodi leggeri non memorizzano l'intera blockchain, bensì verificano i dati attraverso le [radici di stato nelle intestazioni dei blocchi](/developers/docs/blocks/#block-anatomy). Se ne hanno bisogno, possono richiedere ulteriori informazioni ai blocchi. +- I nodi completi forniscono accesso ai dati della blockchain per i client leggeri che dipendono da essa. I nodi leggeri non memorizzano l'intera blockchain, bensì verificano i dati attraverso le [radici di stato nelle intestazioni dei blocchi](/developers/docs/blocks/#block-anatomy). Se ne hanno bisogno, possono richiedere ulteriori informazioni ai nodi completi. -Se si esegue un nodo completo, l'intera rete di Ethereum ne beneficia. +Se si esegue un nodo completo, l'intera rete Ethereum ne beneficia, anche se non si esegue un validatore. ## Esecuzione di un nodo proprio {#running-your-own-node} Vorresti eseguire il tuo client di Ethereum? -Per un'introduzione per i principianti, visita la nostra pagina [Eseguire un nodo](/run-a-node) per saperne di più. +Per un'introduzione per principianti, visita la nostra pagina [eseguire un nodo](/run-a-node) per saperne di più. -Se sei un utente più tecnico, approfondisci i dettagli e le opzioni su come [Avviare il tuo nodo](/developers/docs/nodes-and-clients/run-a-node/). +Se sei un utente più tecnico, approfondisci i dettagli e le opzioni su come [avviare il tuo nodo](/developers/docs/nodes-and-clients/run-a-node/). ## Alternative {#alternatives} Configurare un nodo può richiedere tempo e risorse e non sempre è necessario eseguire un'istanza propria. In questo caso, puoi usare un provider di API terzo. Per una panoramica sull'uso di questi servizi, dai un'occhiata a [nodi come servizi](/developers/docs/nodes-and-clients/nodes-as-a-service/). -Se qualcuno esegue un nodo Ethereum con un'API pubblica nella tua community, puoi puntare i tuoi portafogli a un nodo della community tramite RPC personalizzato e ottenere più privacy rispetto a terze parti fidate casuali. +Se qualcuno esegue un nodo Ethereum con un'API pubblica nella tua community, puoi puntare i tuoi portafogli a un nodo della community tramite RPC personalizzato e ottenere più privacy rispetto a terze parti casuali affidabili. -D'altro canto, se esegui un client, puoi condividerlo con gli amici che potrebbero averne bisogno. +D'altro canto, se esegui un client, puoi condividerlo con i amici che potrebbero averne bisogno. -## Client d'esecuzione (ex "client di Eth1") {#execution-clients} +## Client di esecuzione {#execution-clients} -La community di Ethereum mantiene numerosi client di esecuzione open source (precedentemente noti come 'client di Eth1' o semplicemente 'client di Ethereum'), sviluppati da diversi team usando diversi linguaggi di programmazione. Questo rafforza la rete e la rende più [diversificata](/developers/docs/nodes-and-clients/client-diversity/). L'obiettivo ideale è raggiungere la diversità senza che nessun client prevalga, per ridurre eventuali punti di errore unici. +La community di Ethereum mantiene numerosi client di esecuzione open source (precedentemente noti come 'client di Eth1' o semplicemente 'client di Ethereum'), sviluppati da diversi team usando diversi linguaggi di programmazione. Questo rafforza la rete e la rende più [diversificata](/developers/docs/nodes-and-clients/client-diversity/). L'obiettivo ideale è raggiungere la diversità senza che nessun client prevalga, per ridurre eventuali punti di errore singoli. Questa tabella riepiloga i diversi client. Tutti superano i [test dei client](https://github.com/ethereum/tests) e sono mantenuti attivamente per rimanere al passo con gli aggiornamenti di rete. @@ -141,17 +137,15 @@ Questa tabella riepiloga i diversi client. Tutti superano i [test dei client](ht | [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | Rete Principale, Sepolia, Goerli e altre | Snap, Veloce, Completo | Archiviata, Tagliata | | [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Rete Principale, Sepolia, Goerli e altre | Completa | Archiviata, Tagliata | -**Sottolineiamo che OpenEthereum [è ormai obsoleto](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) e non viene più mantenuto.** Usa un'altra implementazione client! - Per ulteriori informazioni sulle reti supportate, consulta [reti Ethereum](/developers/docs/networks/). -Ogni client ha vantaggi e casi d'uso differenti, quindi è necessario sceglierne uno in base alle proprie preferenze. La diversità consente implementazioni in base alle diverse caratteristiche e al pubblico di utenti. Potresti voler scegliere un client a seconda delle funzionalità, del supporto, del linguaggio di programmazione o delle licenze. +Ogni client ha vantaggi e casi d'uso differenti, quindi è necessario sceglierne uno in base alle proprie preferenze. La diversità consente implementazioni in base alle diverse caratteristiche e al pubblico di utenti. È consigliabile scegliere un client in base a funzionalità, supporto, linguaggio di programmazione o licenze. ### Besu {#besu} -Hyperledger Besu è un client Ethereum di livello enterprise per le reti pubbliche e autorizzate. Esegue tutte le funzionalità della Rete principale di Ethereum, dal monitoraggio a GraphQL, ha un monitoraggio avanzato ed è supportato da ConsensSys, entrambi in canali aperti della community e tramite SLA commerciali per le imprese. È scritto in Java con licenza Apache 2.0. +Hyperledger Besu è un client Ethereum di livello aziendale per le reti pubbliche e autorizzate. Esegue tutte le funzionalità della Rete principale di Ethereum, dal monitoraggio a GraphQL, ha un monitoraggio avanzato ed è supportato da ConsensSys, entrambi in canali aperti della community e tramite SLA commerciali per le imprese. È scritto in Java con licenza Apache 2.0. -L'ampia [documentazione](https://besu.hyperledger.org/en/stable/) di Besu ti guiderà per tutti i dettagli sulle sue funzionalità e configurazioni. +L'ampia [documentazione](https://besu.hyperledger.org/en/stable/) di Besu ti guiderà verso tutti i dettagli delle sue funzioni e configurazioni. ### Erigon {#erigon} @@ -165,7 +159,7 @@ Scopri di più su Geth nella sua [documentazione](https://geth.ethereum.org/docs ### Nethermind {#nethermind} -Nethermind è un'implementazione di Ethereum creata con lo stack tecnologico C#.NET, concessa in licenza con LGPL-3.0, in esecuzione su tutte le principali piattaforme inclusa ARM. Offre prestazioni eccellenti con: +Nethermind è un'implementazione di Ethereum creata con lo stack tecnologico C # .NET, concessa in licenza con LGPL-3.0, in esecuzione su tutte le principali piattaforme, incluso ARM. Offre prestazioni eccellenti con: - una macchina virtuale ottimizzata - accesso allo stato @@ -173,9 +167,9 @@ Nethermind è un'implementazione di Ethereum creata con lo stack tecnologico C#. Inoltre, Nethermind vanta una [documentazione dettagliata](https://docs.nethermind.io), un efficace supporto per gli sviluppatori, una community online e un supporto disponibile 24 ore al giorno, 7 giorni su 7 per gli utenti premium. -## Client di consenso (ex client di "Eth2") {#consensus-clients} +## Client di consenso {#consensus-clients} -Esistono diversi client di consenso (precedentemente noti come client di "Eth2") per supportare gli [aggiornamenti del consenso](/roadmap/beacon-chain/). Eseguono la Beacon Chain e forniranno il meccanismo di consenso proof-of-stake ai client di esecuzione, dopo [La Fusione](/roadmap/merge/). +Esistono diversi client di consenso (precedentemente noti come client di "Eth2") per supportare gli [aggiornamenti del consenso](/roadmap/beacon-chain/). Sono responsabili per tutta la logica collegata al consenso, incluso l'algoritmo di scelta della diramazione, l'elaborazione di attestazioni e la gestione di ricompense e sanzioni [proof-of-stake](/developers/docs/consensus-mechanisms/pos). | Client | Lingua | Sistemi operativi | Reti | | ------------------------------------------------------------- | ---------- | --------------------- | --------------------------------------------------------------- | @@ -187,7 +181,7 @@ Esistono diversi client di consenso (precedentemente noti come client di "Eth2") ### Lighthouse {#lighthouse} -Lighthouse è un'implementazione del client di consenso scritta in Rust sotto la licenza Apache-2.0. È mantenuta da Sigma Prime ed è stabile e pronta alla produzione sin dalla genesi della Beacon Chain. È affidata a varie imprese, pool di staking e singoli individui. Mira a esser sicura, performante e interoperabile in una vasta gamma di ambienti, da PC desktop a distribuzioni automatizzate sofisticate. +Lighthouse è un'implementazione del client di consenso scritta in Rust sotto la licenza Apache-2.0. È mantenuta da Sigma Prime ed è stabile e pronta alla produzione sin dalla genesi della Beacon Chain. È affidata a varie imprese, pool di staking e singoli individui. Mira a essere sicura, performante e interoperabile in una vasta gamma di ambienti, da PC desktop a distribuzioni automatizzate sofisticate. La documentazione è consultabile nel [Libro su Lighthouse](https://lighthouse-book.sigmaprime.io/) @@ -201,11 +195,6 @@ Maggiori informazioni si possono trovare sul nostro [sito web di Lodestar](https Nimbus è un'implementazione del client di consenso scritta in Nim sotto la licenza Apache-2.0. È un client pronto alla produzione in uso dagli staker in autonomia e dai pool di staking. Nimbus è progettato per l'efficienza delle risorse, rendendo facile l'esecuzione sui dispositivi con risorse limitate e le infrastrutture aziendali con uguale facilità, senza compromettere la stabilità o ricompensare le prestazioni. Un'impronta di risorse più leggera fa sì che il client abbia un maggiore margine di sicurezza quando la rete è sotto stress. -Implementato da Trinity. Funziona come una sincronizzazione rapida ma scarica anche i dati necessari per eseguire gli ultimi blocchi, consentendo di interrogare la catena già nei primi minuti dall'inizio. - -- Sincronizza innanzitutto lo stato e consente di interrogare RPC in pochi minuti. -- Ancora in sviluppo e non totalmente affidabile, la sincronizzazione in background è rallentata e le risposte RPC potrebbero fallire. - Scopri di più nella [documentazione di Nimbus](https://nimbus.guide/) ### Prysm {#prysm} @@ -218,9 +207,9 @@ Visita la [documentazione di Prysm](https://docs.prylabs.network/docs/getting-st Teku è uno dei client di genesi originali della Beacon Chain. Insieme ai soliti obiettivi (sicurezza, robustezza, stabilità, utilizzabilità, prestazioni), Teku mira specificamente a conformarsi completamente a tutti i vari standard dei client di consenso. -Teku offre opzioni di distribuzione molto flessibili. Il nodo beacon e il client del validatore possono operare insieme come un singolo processo, il che è estremamente conveniente per gli staker in autonomia, o i nodi possono operare separatamente per le operazioni di staking sofisticate. Inoltre, Teku è completamente interoperabile con [Web3Signer](https://github.com/ConsenSys/web3signer/) per firmare la sicurezza della chiave e la protezione dallo slashing. +Teku offre opzioni di sviluppo molto flessibili. Il nodo beacon e il client del validatore possono operare insieme come un singolo processo, il che è estremamente conveniente per gli staker in autonomia, o i nodi possono operare separatamente per le operazioni di staking sofisticate. Inoltre, Teku è completamente interoperabile con [Web3Signer](https://github.com/ConsenSys/web3signer/) per firmare la sicurezza della chiave e la protezione dallo slashing. -Teku è scritto in Java con licenza Apache 2.0. È sviluppato dal team Protocols di ConsenSys, responsabile anche di Besu e Web3Signer. Scopri di più nella [documentazione di Teku](https://docs.teku.consensys.net/en/latest/). +Teku è scritto in Java ed è sotto licenza Apache 2.0. È sviluppato dal team Protocols di ConsenSys, responsabile anche di Besu e Web3Signer. Scopri di più nella [documentazione di Teku](https://docs.teku.consensys.net/en/latest/). ## Modalità di sincronizzazione {#sync-modes} @@ -230,19 +219,21 @@ Le modalità di sincronizzazione rappresentano diversi approcci a questo process ### Modalità di sincronizzazione del livello di esecuzione {#execution-layer-sync-modes} -#### Sincronizzazione completa {#full-sync} +#### Sincronizzazione completa dell'archivio {#full-sync} -La sincronizzazione completa scarica tutti i blocchi (incluse intestazioni, transazioni e ricevute) e genera lo stato della blockchain in modo incrementale eseguendo ogni blocco a partire dalla genesi. +La sincronizzazione completa scarica tutti i blocchi (incluse intestazioni, transazioni e ricevute) e genera lo stato della blockchain in modo incrementale eseguendo ogni blocco dalla genesi. - Riduce al minimo la fiducia e offre la massima sicurezza verificando ogni transazione. - Al crescere del numero di transazioni, possono volerci giorni o persino settimane per elaborare tutte le transazioni. -#### Sincronizzazione rapida {#fast-sync} +#### Sincronizzazione snap completa {#snap-sync} -La sincronizzazione rapida scarica tutti i blocchi (incluse intestazioni, transazioni e ricevute), verifica tutte le intestazioni, scarica lo stato e lo verifica rispetto alle intestazioni. +La sincronizzazione snap verifica la blockchain blocco per blocco, come una sincronizzazione completa dell'archivio; ma invece di cominciare dal blocco genesi, inizia da un più recente punto di controllo "fidato" che si sa faccia parte della vera blockchain. Il nodo salva punti di controllo periodici mentre elimina dati più vecchi di un certo periodo. Queste istantanee sono utilizzate per rigenerare gli stati dei dati quando necessario, invece che doverli memorizzare tutti per sempre. -- Si basa sulla sicurezza del meccanismo di consenso. -- La sincronizzazione impiega solo qualche ora. +- È la strategia di sincronizzazione più veloce, attualmente quella predefinita nella rete principale di Ethereum +- Risparmia molto spazio su disco e larghezza di banda di rete senza sacrificare la sicurezza + +[Maggiori informazioni sulla sincronizzazione snap](https://github.com/ethereum/devp2p/blob/master/caps/snap.md) #### Sincronizzazione leggera {#light-sync} @@ -255,15 +246,6 @@ La modalità leggera del client scarica tutte le intestazioni e i dati del blocc [Maggiori informazioni sui client leggeri](/developers/docs/nodes-and-clients/light-clients/) -#### Sincronizzazione snap {#snap-sync} - -La sincronizzazione snap è l'ultimo approccio per sincronizzare un client, sperimentato dal team di Geth. Usando le istantanee dinamiche fornite dai pari, recupera tutti i dati di conti e archivi senza scaricare nodi trie intermedi e ricostruisce localmente il Merkle trie. - -- È la strategia di sincronizzazione più veloce, attualmente quella predefinita nella rete principale di Ethereum -- Risparmia molto spazio su disco e larghezza di banda di rete senza sacrificare la sicurezza - -[Maggiori informazioni sulla sincronizzazione snap](https://github.com/ethereum/devp2p/blob/master/caps/snap.md) - ### Modalità di sincronizzazione del livello di consenso {#consensus-layer-sync-modes} #### Sincronizzazione ottimistica {#optimistic-sync} diff --git a/src/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/src/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md index 31f7887e00e..d84e582e8f6 100644 --- a/src/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md +++ b/src/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md @@ -207,8 +207,19 @@ Ecco una lista di alcuni dei più popolari fornitori di nodi Ethereum. Aggiungin - Supporto per orchestrazioni multi-cloud, multiregionali e con distribuzione ibrida - Tariffe orarie semplici basate su Saas - Supporto SLA e 24x7 +- [**Lava Network**](https://www.lavanet.xyz/) + - [Documenti](https://docs.lavanet.xyz/) + - Caratteristiche + - Utilizzo gratuito di Testnet + - Ridondanza decentralizzata per un elevato tempo di attività. + - Open-source + - SDK completamente decentralizzato + - Integrazione di Ethers.js + - Interfaccia di gestione del progetto intuitiva + - Integrità dei dati basata sul consenso + - Supporto multi-catena - [**Moralis**](https://moralis.io/) - - [Documenti](https://docs.moralis.io/) + - [Documentazione](https://docs.moralis.io/) - Caratteristiche - Nodi condivisi gratuiti - Nodi archivio condivisi gratuiti @@ -231,47 +242,46 @@ Ecco una lista di alcuni dei più popolari fornitori di nodi Ethereum. Aggiungin - Caratteristiche - Accesso a oltre 50 nodi della blockchain - Chiave API gratuita - - Block Explorer + - Esploratori di blocchi - Tempo di risposta dell'API ⩽ 1 sec - - Team di assistenza 24/7 - - Referente commerciale personale - - Nodi condivisi, archivio, backup e dedicati + - Team di assistenza 24 ore su 24/7 giorni su 7 + - Gestore personale dell'account + - Nodi condivisi, di archivio, di backup e dedicati - [**Pocket Network**](https://www.pokt.network/) - [Documentazione](https://docs.pokt.network/home/) - Caratteristiche - - Protocollo RPC e Marketplace decentralizzati + - Protocollo RPC e mercato decentralizzati - Livello con 1 milione di richieste giornaliere gratuite (per endpoint, max. 2) - [Endpoint pubblici](https://docs.pokt.network/home/resources/public-rpc-endpoints) - Programma Pre-Stake+ (se servono più di 1 milione di richieste al giorno) - Più di 15 blockchain supportate - Più di 6.400 nodi che guadagnano POKT a servizio delle applicazioni - - Nodo d'archiviazione, nodo d'archiviazione con tracciamento e supporto ai nodi di reti di prova - - Diversità dei client dei nodi della Rete Principale di Ethereum + - Nodo d'archiviazione, nodo d'archiviazione con tracciamento e supporto ai nodi di Testnet + - Diversità dei client dei nodi della rete principale di Ethereum - Nessun punto di errore unico - - Nessun tempo di inattività + - Nessun tempo d'inattività - Tokenomic a bassissimo costo (esegui lo staking di POKT una volta per la larghezza di banda di rete) - Nessun costo mensile irrecuperabile, trasforma la tua infrastruttura in una risorsa - Bilanciamento di carico integrato nel protocollo - Ridimensiona illimitatamente il numero di richieste giornaliere e nodi orari in base alle esigenze - L'opzione più privata e resistente alla censura - Supporto pratico per sviluppatori - - Pannello di controllo e analisi di [Pocket Portal](https://bit.ly/ETHorg_POKTportal) + - Dashboard e analisi di [Pocket Portal](https://bit.ly/ETHorg_POKTportal) - [**QuickNode**](https://www.quicknode.com) - - [Documentazione](https://www.quicknode.com/docs/) + - [Documenti](https://www.quicknode.com/docs/) - Caratteristiche - - Riferimento nel settore per prestazioni e affidabilità - Supporto tecnico 24/7 e community Discord di sviluppatori - Bilanciamento geografico, multi-cloud/metal, rete a bassa latenza - Supporto multi-catena (Optimism, Arbitrum, Polygon e altri 11) - Livelli intermedi per velocità e stabilità (indirizzamento di chiamata, cache, indicizzazione) - Monitoraggio del contratto intelligente tramite Webhook - - Pannello di controllo intuitivo, suite di analisi, compositore RPC + - Pannello di controllo intuitivo, suite di analisi, RPC composer - Funzionalità di sicurezza avanzate (JWT, mascheratura, whitelist) - API di dati e analisi NFT - [Certificazione SOC2](https://www.quicknode.com/security) - - Adatto agli sviluppatori per grandi imprese + - Adatto agli sviluppatori per imprese - [**Rivet**](https://rivet.cloud/) - - [Documenti](https://rivet.readthedocs.io/en/latest/) + - [Docs](https://rivet.readthedocs.io/en/latest/) - Caratteristiche - Opzione livello gratuito - Ridimensionamento secondo le esigenze @@ -280,7 +290,7 @@ Ecco una lista di alcuni dei più popolari fornitori di nodi Ethereum. Aggiungin - Caratteristiche - Nodi dedicati e condivisi - Pannello di controllo - - Hosting di AWS su diversi fornitori di hosting in diversi luoghi in America Latina + - Hosting di AWS su più fornitori di hosting in diversi luoghi in America Latina - Client di Prysm e Lighthouse - [**SettleMint**](https://console.settlemint.com/) - [Docs](https://docs.settlemint.com/) @@ -298,19 +308,19 @@ Ecco una lista di alcuni dei più popolari fornitori di nodi Ethereum. Aggiungin - [**Tenderly**](https://tenderly.co/web3-gateway) - [Docs](https://docs.tenderly.co/web3-gateway/web3-gateway) - Caratteristiche - - Livello gratuito con 25 milioni di Unità di Tenderly al mese + - Livello gratuito con 25 milioni di unità di Tenderly al mese - Accesso gratuito ai dati storici - Carichi di lavoro gravosi in lettura fino a 8 volte più veloci - Accesso di lettura coerente al 100% - Endpoint RPC JSON - - Costruttore di richieste RPC basato sull'UI e anteprima della richiesta + - Generatore di richieste RPC e anteprima delle richieste basati sull'interfaccia utente - Completamente integrato con gli strumenti di sviluppo, debug e test di Tenderly - Simulazioni delle transazioni - Analisi di utilizzo e filtraggio - Facile gestione delle chiavi d'accesso - - Supporto ingegneristico dedicato tramite chat, email e Discord + - Supporto ingegneristico dedicato tramite chat, e-mail e Discord - [**Watchdata**](https://watchdata.io/) - - [Docs](https://docs.watchdata.io/) + - [Documenti](https://docs.watchdata.io/) - Caratteristiche - Attendibilità dei dati - Connessione ininterrotta senza tempi di inattività @@ -328,6 +338,14 @@ Ecco una lista di alcuni dei più popolari fornitori di nodi Ethereum. Aggiungin - Commissione TX illimitata e carburante infinito per inviare le transazioni - Ottenimento più veloce del nuovo blocco e lettura della blockchain - Il miglior prezzo per garanzia di chiamata dell'API +- [**Chainbase**](https://www.chainbase.com/) + - [Documenti](https://docs.chainbase.com) + - Caratteristiche + - Servizi RPC altamente disponibili, veloci e scalabili + - Supporto multi-catena + - Tariffe gratuite + - Pannelli di controllo facili da usare + - Fornisce servizi di dati blockchain oltre a RPC [**Zeeve**](https://www.zeeve.io/) @@ -341,6 +359,19 @@ Ecco una lista di alcuni dei più popolari fornitori di nodi Ethereum. Aggiungin - Offre opzioni di cloud gestito e di bring your own cloud tra cui scegliere e supporta tutti i principali fornitori di cloud come AWS, Azure, Google Cloud, Digital Ocean e on-premise. - Utilizziamo l'instradamento intelligente per colpire sempre il nodo più vicino al tuo utente +[**Tokenview**](https://services.tokenview.io/) + +- [Documenti](https://services.tokeniew/docs?type=nodeService) +- Caratteristiche + - Supporto tecnico 24/7 & comunità di sviluppatori su Telegram + - Supporto di più blockchain (Bitcoin, Ethereum, Tron, BNB Smart Chain, Ethereum Classic) + - Entrambi gli endpoint di rpc e wss possono essere utilizzati + - Accesso illimitato ad API di dati d'archivio + - Pannello di controllo con Request Explorer e Mempool Watcher + - API per dati NFT e notifiche per Webhook + - Paga in criptovalute + - Supporto esterno per ulteriori requisiti di funzionalità + ## Letture consigliate {#further-reading} - [Elenco di servizi di nodi Ethereum](https://ethereumnodes.com/) diff --git a/src/content/translations/it/developers/docs/oracles/index.md b/src/content/translations/it/developers/docs/oracles/index.md index 2ee861a01e5..7e3b3a57ed9 100644 --- a/src/content/translations/it/developers/docs/oracles/index.md +++ b/src/content/translations/it/developers/docs/oracles/index.md @@ -364,7 +364,7 @@ L'approccio abituale è quello di utilizzare funzioni crittografiche pseudocasua È possibile generare il valore casuale off-chain e inviarlo sulla catena, ma ciò impone agli utenti requisiti di fiducia elevati. Devono credere che il valore sia stato realmente generato attraverso meccanismi imprevedibili e non sia stato alterato in transito. -Gli oracoli progettati per il calcolo off-chain risolvono questo problema generando in modo sicuro risultati casuali fuori catena che trasmettono sulla catena insieme a prove crittografiche che attestano l'imprevedibilità del processo. Un esempio è [Chainlink VRF](https://docs.chain.link/docs/chainlink-vrf/) (Verifiable Random Function), che è un generatore di numeri casuali (RNG) dimostrabilmente equo e a prova di manomissione, utile per costruire contratti intelligenti affidabili per applicazioni che si basano su risultati imprevedibili. Un altro esempio è [API3 QRNG](https://docs.api3.org/explore/qrng/) che svolge la Generazione quantistica dei numeri casuali (QRNG); si tratta di un metodo pubblico di RNG del Web3, basato sul fenomeno quantistico, servito con cortesia dell'Università Nazionale Australiana (ANU). +Gli oracoli progettati per il calcolo off-chain risolvono questo problema generando in modo sicuro risultati casuali fuori catena che trasmettono sulla catena insieme a prove crittografiche che attestano l'imprevedibilità del processo. Un esempio è [Chainlink VRF](https://docs.chain.link/docs/chainlink-vrf/) (Verifiable Random Function), che è un generatore di numeri casuali (RNG) dimostrabilmente equo e a prova di manomissione, utile per costruire contratti intelligenti affidabili per applicazioni che si basano su risultati imprevedibili. Un altro esempio è [API3 QRNG](https://docs.api3.org/explore/qrng/) che serve alla generazione di numeri quantici casuali (QRNG); si tratta di un metodo pubblico per la generazione di numeri casuali del Web3 basato sul fenomeno quantistico e fornito gentilmente dall'Università Nazionale Australiana (ANU). ### Ottenere risultati per gli eventi {#getting-outcomes-for-events} @@ -402,7 +402,7 @@ Ci sono più applicazioni di oracoli che puoi integrare nella tua dapp su Ethere **[Pyth Network](https://pyth.network/)** - _La rete Pyth è una rete di oracoli finanziari di prima parte progettata per pubblicare dati continui del mondo reale sulla catena in un ambiente resistente alle manomissioni, decentralizzato e autosostenibile._ -**[DAO di API3](https://www.api3.org/)**: _La DAO di API3 distribuisce soluzioni di prima parte dell'oracolo che offrono una maggiore trasparenza della fonte, sicurezza e scalabilità, in una soluzione decentralizzata per i contratti intelligenti_ +**[DAO di API3](https://www.api3.org/)**: _la DAO di API3 distribuisce soluzioni di prima parte di Oracle che offrono una maggiore trasparenza della fonte, sicurezza e scalabilità in una soluzione decentralizzata per i contratti intelligenti_ ## Ulteriori letture {#further-reading} @@ -419,7 +419,7 @@ Ci sono più applicazioni di oracoli che puoi integrare nella tua dapp su Ethere **Video** - [Oracoli ed espansione dell'utilità della blockchain](https://youtu.be/BVUZpWa8vpw) - _Real Vision Finance_ -- [Le differenze tra gli oracoli di prime e terze parti](https://blockchainoraclesummit.io/first-party-vs-third-party-oracles/): _Blockchain Oracle Summit_ +- [Le differenze i servizi Oracle di prime e terze parti](https://blockchainoraclesummit.io/first-party-vs-third-party-oracles/): _Blockchain Oracle Summit_ **Tutorial** diff --git a/src/content/translations/it/developers/docs/programming-languages/javascript/index.md b/src/content/translations/it/developers/docs/programming-languages/javascript/index.md index b29786ac726..e6e69f0248c 100644 --- a/src/content/translations/it/developers/docs/programming-languages/javascript/index.md +++ b/src/content/translations/it/developers/docs/programming-languages/javascript/index.md @@ -20,6 +20,7 @@ Puoi utilizzare queste librerie per interagire con i contratti intelligenti su E - [Web3.js](https://web3js.readthedocs.io/) - [Ethers.js](https://docs.ethers.io/) _– Contiene l'implementazione del portafoglio di Ethereum e le utility in JavaScript e TypeScript._ +- [viem](https://viem.sh): un'interfaccia TypeScript per Ethereum che fornisce primitivi con assenza di stato di basso livello per interagire con Ethereum. ### Contratti intelligenti {#smart-contracts} @@ -31,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](/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](/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. È suddivisa in vari pacchetti JavaScript che puoi leggere per comprendere meglio: @@ -50,10 +51,12 @@ Se preferisci invece leggere codice, questo codice JavaScript può essere un'alt ### Nodi e client {#nodes-and-clients} -Un client Ethereumjs è in fase di sviluppo. Permetterà di approfondire come funzionano i client Ethereum in un linguaggio che conosci. +Un client di Ethereumjs è in sviluppo attivo e ti consentirà di approfondire il funzionamento dei client di Ethereum in un linguaggio che comprendi: JavaScript! + +Era ospitato in una [`repository`](https://github.com/ethereumjs/ethereumjs-client) indipendente, tuttavia, è stato in seguito unito nella repository singola di EthereumVM come pacchetto. **Guarda il client** -[`ethereumjs-client`](https://github.com/ethereumjs/ethereumjs-client) +[`ethereumjs-client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client) ## Altri progetti {#other-projects} @@ -63,8 +66,8 @@ Ci sono molte altre novità nel mondo di JavaScript per Ethereum, tra cui: - strumenti per generare, importare ed esportare chiavi Ethereum. - un'implementazione di `merkle-patricia-tree`, una struttura di dati delineata nel yellow paper di Ethereum. -Approfondisci ciò che ti interessa maggiormente sul [repository EthereumJS](https://github.com/ethereumjs) +Approfondisci ciò che ti interessa maggiormente sulla [repository EthereumJS](https://github.com/ethereumjs) ## Letture consigliate {#further-reading} -_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_ +_Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ diff --git a/src/content/translations/it/developers/docs/programming-languages/python/index.md b/src/content/translations/it/developers/docs/programming-languages/python/index.md index 6c82a435f80..35f67403228 100644 --- a/src/content/translations/it/developers/docs/programming-languages/python/index.md +++ b/src/content/translations/it/developers/docs/programming-languages/python/index.md @@ -82,7 +82,7 @@ I seguenti progetti basati su Ethereum usano strumenti menzionati su questa pagi ## Discussione della Community di Python {#python-community-contributors} - [Discor dell'Ethereum Python Community](https://discord.gg/9zk7snTfWe) per Web3.py e altre discussioni del quadro di Python -- [Discord di Vyper](<[https://discord.gg/9zk7snTfWe](https://discord.gg/SdvKC79cJk)>) per la discussione sulla programmazione dei contratti intelligenti in Vyper +- [Discord di Vyper](https://discord.gg/SdvKC79cJk) per la discussione sulla programmazione dei contratti intelligenti in Vyper ## Altri elenchi aggregati {#other-aggregated-lists} diff --git a/src/content/translations/it/developers/docs/programming-languages/rust/index.md b/src/content/translations/it/developers/docs/programming-languages/rust/index.md index ab9528e1ca2..df99f9df2bb 100644 --- a/src/content/translations/it/developers/docs/programming-languages/rust/index.md +++ b/src/content/translations/it/developers/docs/programming-languages/rust/index.md @@ -51,6 +51,7 @@ Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/le - [Foundry](https://github.com/gakonst/foundry)- _Toolkit per lo sviluppo di applicazioni Ethereum_ - [Ethers_rs](https://github.com/gakonst/ethers-rs)- _Implementazione di librerie e portafogli di Ethereum_ - [SewUp](https://github.com/second-state/SewUp) - _Una libreria per aiutarti a creare il tuo contratto webassembly di Ethereum con Rust e sviluppare in un backend comune_ +- [Substreams](https://github.com/streamingfast/substreams): _tecnologia d'indicizzazione parallelizzata dei dati della blockchain_ - [Reth](https://github.com/paradigmxyz/reth) Reth (abbreviazione di Rust Ethereum, pronuncia) è una nuova implementazione a nodo completo su Ethereum Cerchi altre risorse? Dai un'occhiata a [ethereum.org/developers.](/developers/) diff --git a/src/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md b/src/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md index 58e370a55b5..78c4f4b7ae3 100644 --- a/src/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md +++ b/src/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md @@ -260,6 +260,6 @@ Esistono molteplici implementazioni dei rollup ottimistici, che puoi integrare n - [Come funzionano gli Optimistic Rollup (La guida completa)](https://www.alchemy.com/overviews/optimistic-rollups) - [Everything you need to know about Optimistic Rollup](https://research.paradigm.xyz/rollups) - [Guida essenziale ad Arbitrum](https://newsletter.banklesshq.com/p/the-essential-guide-to-arbitrum) -- [Come funziona davvero il rollup di Optimism?](https://research.paradigm.xyz/optimism) +- [Come funziona davvero il rollup di Optimism?](https://www.paradigm.xyz/2021/01/how-does-optimisms-rollup-really-work) - [Approfondimento su OVM](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52) - [What is the Optimistic Virtual Machine?](https://www.alchemy.com/overviews/optimistic-virtual-machine) diff --git a/src/content/translations/it/developers/docs/smart-contracts/deploying/index.md b/src/content/translations/it/developers/docs/smart-contracts/deploying/index.md index 0a5242c6f4d..4a626aecf69 100644 --- a/src/content/translations/it/developers/docs/smart-contracts/deploying/index.md +++ b/src/content/translations/it/developers/docs/smart-contracts/deploying/index.md @@ -57,22 +57,26 @@ Una volta distribuito, il contratto avrà un indirizzo Ethereum come gli altri [ - [Documentazione sulle reti e la distribuzione delle app](https://www.trufflesuite.com/docs/truffle/advanced/networks-and-app-deployment) - [GitHub](https://github.com/trufflesuite/truffle) +**thirdweb - _Distribuisci con facilità qualsiasi contratto a qualsiasi catena che sia compatibile con EVM, utilizzando un singolo comando_** + +- [Documentazione](https://portal.thirdweb.com/deploy/) + ## Tutorial correlati {#related-tutorials} -- [Distribuire il tuo primo contratto intelligente](/developers/tutorials/deploying-your-first-smart-contract/): _Un'introduzione alla distribuzione del tuo primo contratto su una rete di prova di Ethereum._ -- [Hello World | tutorial di un contratto intelligente](/developers/tutorials/hello-world-smart-contract/): _Un tutorial facile da seguire per creare e distribuire un contratto intelligente di base su Ethereum._ +- [Deploying your first smart contract](/developers/tutorials/deploying-your-first-smart-contract/): _Un'introduzione alla distribuzione del primo contratto su una rete di prova di Ethereum._ +- [Hello World | smart contract tutorial](/developers/tutorials/hello-world-smart-contract/): _Un tutorial facile da seguire per creare e distribuire un contratto intelligente di base su Ethereum._ - [Interagire con gli altri contratti da Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/): _Come distribuire un contratto intelligente da un contratto esistente e interagirvi._ -- [Come ridimensionare il tuo contratto](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/): _Come ridurre le dimensioni del tuo contratto per mantenerlo sotto il limite e risparmiare sul gas_ +- [How to downsize your contract size](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/): _Come ridurre le dimensioni del tuo contratto per mantenerlo sotto il limite e risparmiare carburante_ ## Letture consigliate {#further-reading} - [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) - _OpenZeppelin_ - [Distribuire i tuoi contratti Hardhat](https://hardhat.org/guides/deploying.html) - _Nomic Labs_ -_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_ +_Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ ## Argomenti correlati {#related-topics} -- [Framework di sviluppo](/developers/docs/frameworks/) +- [Quadri di sviluppo](/developers/docs/frameworks/) - [Eseguire un nodo di Ethereum](/developers/docs/nodes-and-clients/run-a-node/) - [Nodes-as-a-service](/developers/docs/nodes-and-clients/nodes-as-a-service) diff --git a/src/content/translations/it/developers/docs/smart-contracts/index.md b/src/content/translations/it/developers/docs/smart-contracts/index.md index 628381784d0..2933bf81acf 100644 --- a/src/content/translations/it/developers/docs/smart-contracts/index.md +++ b/src/content/translations/it/developers/docs/smart-contracts/index.md @@ -67,7 +67,7 @@ Proprio come un distributore automatico rimuove la necessità di un addetto alla ## Senza autorizzazioni {#permissionless} -Chiunque può scrivere un contratto intelligente e distribuirlo sulla rete. Devi solo imparare come programmare nel [linguaggio di un contratto intelligente](/developers/docs/smart-contracts/languages/) e avere ETH sufficienti per distribuire il tuo contratto. Distribuire un contratto intelligente è tecnicamente una transazione, quindi dovrai pagare del [Gas](/developers/docs/gas/) allo stesso modo in cui devi pagarlo per un semplice trasferimento di ETH. Tuttavia, i costi del gas per la distribuzione del contratto sono molto più elevati. +Chiunque può scrivere un contratto intelligente e distribuirlo sulla rete. Devi solo imparare come programmare nel [linguaggio di un contratto intelligente](/developers/docs/smart-contracts/languages/) e avere ETH sufficienti per distribuire il tuo contratto. Implementare un contratto intelligente è tecnicamente una transazione, per cui è necessario pagare del [gas](/developers/docs/gas/) allo stesso modo con cui è pagato per una semplice transazione di ETH. Tuttavia, i costi del gas per la distribuzione del contratto sono molto più elevati. Ethereum prevede dei linguaggi pratici per gli sviluppatori per scrivere i contratti intelligenti: @@ -86,9 +86,9 @@ Scopri di più sulla [componibilità dei contratti intelligenti](/developers/doc ## Limitazioni {#limitations} -I soli contratti intelligenti non possono ottenere informazioni sugli eventi del "mondo reale", poiché non possono inviare richieste HTTP. È così per progettazione. Basarsi su informazioni esterne potrebbe pregiudicare il consenso, importante per la sicurezza e la decentralizzazione. +I contratti intelligenti da soli non possono ottenere informazioni riguardo agli eventi nel "mondo reale" perché non possono recuperare dati da risorse esterne alla catena. Questo significa che non possono rispondere a eventi nel mondo reale. Sono stati progettati così. Basarsi su informazioni esterne potrebbe pregiudicare il consenso, importante per la sicurezza e la decentralizzazione. -Esistono modi per aggirare questa condizione, grazie agli [oracoli](/developers/docs/oracles/). +A ogni modo, è importante per le applicazioni blockchain essere in grado di usare dati off-chain. La soluzione sono gli [oracoli](/developers/docs/oracles/) che sono strumenti che ingeriscono dati off-chain e li rendono disponibili per i contratti intelligenti. Un'altra limitazione dei contratti intelligenti è la dimensione massima del contratto. Un contratto intelligente può avere una dimensione massima di 24 Kb; altrimenti, esaurirà il gas. Questo problema può essere aggirato usando [il Diamond Pattern](https://eips.ethereum.org/EIPS/eip-2535) (schema a diamante). @@ -104,13 +104,8 @@ I contratti multifirma (a firma multipla), sono conti del contratto intelligente - [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts) - [Forum della community](https://forum.openzeppelin.com/c/general/16) -**DappSys -** **_Blocchi di programmazione sicuri, semplici e flessibili per contratti intelligenti._** - -- [Dappsys](https://dappsys.readthedocs.io/) -- [GitHub](https://github.com/dapphub/dappsys) - ## Letture consigliate {#further-reading} -- [Contratti Intelligenti: La Tecnologia della Blockchain Che Sostituirà gli Avvocati](https://blockgeeks.com/guides/smart-contracts/) _– Blockgeeks_ -- [Migliori Pratiche per lo Sviluppo dei Contratti Intelligenti](https://yos.io/2019/11/10/smart-contract-development-best-practices/) _– 10 novembre 2019 - Yos Riady_ -- [Contratti puliti - Una guida a modelli e pratiche per i contratti intelligenti](https://www.wslyvh.com/clean-contracts/) _– 30 luglio 2020 - wslyvh_ +- [Coinbase: Cos'è un contratto intelligente?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract) +- [Chainlink: Cos'è un contratto intelligente?](https://chain.link/education/smart-contracts) +- [Video: Spiegato in modo semplice - Contratti intelligenti](https://youtu.be/ZE2HxTmxfrI) diff --git a/src/content/translations/it/developers/docs/smart-contracts/libraries/index.md b/src/content/translations/it/developers/docs/smart-contracts/libraries/index.md index 9e875cff083..5ad6507e789 100644 --- a/src/content/translations/it/developers/docs/smart-contracts/libraries/index.md +++ b/src/content/translations/it/developers/docs/smart-contracts/libraries/index.md @@ -102,11 +102,16 @@ Infine, per decidere se includere una libreria, considera l'uso generale che ne - [GitHub](https://github.com/HQ20/contracts) +**thirdweb Solidity SDK -** **_Fornisce gli strumenti necessari per costruire contratti intelligenti personalizzati in modo efficiente_** + +- [Documentazione](https://portal.thirdweb.com/solidity/) +- [GitHub](https://github.com/thirdweb-dev/contracts) + ## Tutorial correlati {#related-tutorials} -- [Considerazioni sulla sicurezza per gli sviluppatori di Ethereum](/developers/docs/smart-contracts/security/): _Un tutorial sulle considerazioni sulla sicurezza durante lo sviluppo dei contratti intelligenti, incluso l'uso della libreria._ -- [Comprendere il contratto intelligente del token ERC-20](/developers/tutorials/understand-the-erc-20-token-smart-contract/): _Tutorial sullo standard ERC20, fornito da diverse librerie._ +- [Security considerations for Ethereum developers](/developers/docs/smart-contracts/security/): _Un tutorial sulle considerazioni sulla sicurezza durante lo sviluppo dei contratti intelligenti, incluso l'uso della libreria._ +- [Understand the ERC-20 token smart contract](/developers/tutorials/understand-the-erc-20-token-smart-contract/): _Tutorial sullo standard ERC20, fornito da diverse librerie._ ## Letture consigliate {#further-reading} -_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_ +_Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ diff --git a/src/content/translations/it/developers/docs/smart-contracts/security/index.md b/src/content/translations/it/developers/docs/smart-contracts/security/index.md index faf9b274683..bea8ba37623 100644 --- a/src/content/translations/it/developers/docs/smart-contracts/security/index.md +++ b/src/content/translations/it/developers/docs/smart-contracts/security/index.md @@ -96,7 +96,7 @@ Detto ciò, dovresti evitare di trattare i controlli come una bacchetta magica. Impostare un programma di caccia ai bug è un altro approccio per implementare le revisioni esterne del codice. Una bug bounty è una ricompensa finanziaria data a persone (solitamente hacker whitehat) che scoprono vulnerabilità in un'applicazione. -Quando usate propriamente, queste ricompense per la caccia ai bug incentivano i membri della community di hacker a ispezionare il tuo codice in cerca di difetti critici. Un esempio reale è il "bug del denaro infinito", che avrebbe consentito a un utente malevolo di creare un importo illimitato di Ether su [Optimism](https://www.optimism.io/), un protocollo del [Livello 2](/layer-2/) eseguito su Ethereum. Fortunatamente, un hacker whitehat [ha scoperto il difetto](https://www.saurik.com/optimism.html) e informato il team, [guadagnandosi una ricca ricompensa](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/). +Quando usate propriamente, queste ricompense per la caccia ai bug incentivano i membri della community di hacker a ispezionare il tuo codice in cerca di difetti critici. Un esempio reale è il "bug del denaro infinito", che avrebbe consentito a un utente malevolo di creare un importo illimitato di Ether su [Optimism](https://www.optimism.io/), un protocollo del [livello 2](/layer-2/) eseguito su Ethereum. Fortunatamente, un hacker whitehat [ha scoperto il difetto](https://www.saurik.com/optimism.html) e informato il team, [guadagnandosi una ricca ricompensa](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/). Una strategia utile è impostare la ricompensa di un programma di caccia ai bug proporzionale all'importo di fondi in staking. Descritto come "[caccia ai bug scalare](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)", questo approccio fornisce incentivi finanziari alle persone perché divulghino responsabilmente le vulnerabilità invece di sfruttarle. @@ -462,7 +462,7 @@ Se prevedi di interrogare un oracolo sulla catena per conoscere i prezzi dei ben - **[Servizi di controllo dei contratti intelligenti](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)**: _elenco di organizzazioni che forniscono servizi di controllo dei contratti intelligenti per progetti di sviluppo per Ethereum._ -- **[Piattaforme di bug bounty](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)**: _piattaforme per coordinare le ricompense per la caccia ai bug e ricompensare la divulgazione responsabile delle vulnerabilità critiche nei contratti intelligenti._ +- **[Piattaforme di bug bounty](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)**: _piattaforme per coordinare le ricompense per la segnalazione di bug e ricompensare la divulgazione responsabile delle vulnerabilità critiche nei contratti intelligenti._ - **[Fork Checker](https://forkchecker.hashex.org/)**: _uno strumento online gratuito per verificare tutte le informazioni disponibili riguardanti un contratto diramato._ @@ -504,7 +504,7 @@ Se prevedi di interrogare un oracolo sulla catena per conoscere i prezzi dei ben - **[HashEx](https://hashex.org/)**: _HashEx è incentrata sul controllo della blockchain e dei controlli intelligenti allo scopo di garantire la sicurezza delle criptovalute, fornendo servizi come lo sviluppo di contratti intelligenti, test di penetrazione o consulenza sulla blockchain._ -- **[Code4rena](https://code4rena.com/)**: _Piattaforma di controllo competitiva che incentiva gli esperti di sicurezza dei contratti intelligenti a trovare le vulnerabilità e ad aiutare a rendere il Web3 più sicuro._ +- **[Code4rena](https://code4rena.com/)**: _piattaforma di controllo competitiva che incentiva gli esperti di sicurezza dei contratti intelligenti a trovare le vulnerabilità e ad aiutare a rendere il Web3 più sicuro._ ### Piattaforme di bug bounty {#bug-bounty-platforms} diff --git a/src/content/translations/it/developers/docs/standards/index.md b/src/content/translations/it/developers/docs/standards/index.md index aa8979e2872..971d7f2a64d 100644 --- a/src/content/translations/it/developers/docs/standards/index.md +++ b/src/content/translations/it/developers/docs/standards/index.md @@ -40,13 +40,13 @@ Informazioni più dettagliate su questi diversi tipi e categorie sono disponibil ### Standard per i token {#token-standards} - [ERC-20](/developers/docs/standards/tokens/erc-20/) - Un'interfaccia standard per token fungibili (intercambiabili), come i token di voto, i token di staking o le valute virtuali. - - [ERC-1363](https://eips.ethereum.org/EIPS/eip-1363): Definisce l'intefaccia di un token per i token ERC-20, che supporta l'esecuzione del codice del destinatario dopo trasferimenti o transferFrom, o il codice di chi spende dopo l'approvazione. + - [ERC-1363](https://eips.ethereum.org/EIPS/eip-1363) - Definisce un'interfaccia token per i token ERC-20 che supporta l'esecuzione del codice del destinatario dopo il codice transfer o transferFrom o spender dopo l'approvazione. - [ERC-721](/developers/docs/standards/tokens/erc-721/) - Un'interfaccia standard per token non fungibili, come un atto relativo a opere d'arte o canzoni. - - [ERC-2309](https://eips.ethereum.org/EIPS/eip-2309): Un evento standardizzato emesso alla creazione/trasferimento di uno o più token non fungibili, utilizzando gli identificativi consecutivi del token. - - [ERC-4400](https://eips.ethereum.org/EIPS/eip-4400): Estensione dell'interfaccia per il ruolo del consumatore dell'EIP-721. - - [ERC-4907](https://eips.ethereum.org/EIPS/eip-4907): Aggiunge un ruolo limitato nel tempo con autorizzazioni limitate ai token ERC-721. -- [ERC-777](/developers/docs/standards/tokens/erc-777/): **(SCONSIGLIATO)** Uno standard token che migliora ERC-20. -- [ERC-1155](/developers/docs/standards/tokens/erc-1155/): Uno standard per token contenente sia risorse fungibili che non fungibili. + - [ERC-2309](https://eips.ethereum.org/EIPS/eip-2309) - Un evento standardizzato emesso quando si creano/trasferiscono uno o molti token non fungibili utilizzando identificatori di token consecutivi. + - [ERC-4400](https://eips.ethereum.org/EIPS/eip-4400) - Estensione dell'interfaccia per il ruolo dei consumatori EIP-721. + - [ERC-4907](https://eips.ethereum.org/EIPS/eip-4907) - Aggiungere un ruolo limitato nel tempo e con permessi limitati ai token ERC-721. +- [ERC-777](/developers/docs/standards/tokens/erc-777/) - **(SCONSIGLIATO)** Uno standard token migliorato rispetto a ERC-20. +- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - Uno standard per i token che può contenere risorse sia fungibili che non fungibili. - [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - Uno standard di cassaforte tokenizzata progettato per ottimizzare e unificare i parametri tecnici delle cassaforti di resa. Maggiori informazioni sugli [standard peri token](/developers/docs/standards/tokens/). diff --git a/src/content/translations/it/developers/docs/standards/tokens/index.md b/src/content/translations/it/developers/docs/standards/tokens/index.md index ccb372c4cf8..23c6f4a8188 100644 --- a/src/content/translations/it/developers/docs/standards/tokens/index.md +++ b/src/content/translations/it/developers/docs/standards/tokens/index.md @@ -24,9 +24,11 @@ Ecco alcuni degli standard token più popolari su Ethereum: - [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ERC-1155 consente scambi e aggregazioni di transazioni più efficienti, risparmiando sui costi. Questo standard del token consente di creare token d'utilità (come $BNB o $BAT) e token non fungibili come CryptoPunks. - [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - Uno standard di cassaforte tokenizzata progettato per ottimizzare e unificare i parametri tecnici delle cassaforti di resa. +L'elenco completo delle proposte [ERC](https://eips.ethereum.org/erc). + ## Letture consigliate {#further-reading} -_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_ +_Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ ## Tutorial correlati {#related-tutorials} diff --git a/src/content/translations/it/developers/docs/storage/index.md b/src/content/translations/it/developers/docs/storage/index.md index 7ddd28e9802..fb6351ad3ae 100644 --- a/src/content/translations/it/developers/docs/storage/index.md +++ b/src/content/translations/it/developers/docs/storage/index.md @@ -154,7 +154,7 @@ Basata sul proof-of-stake: - [Crust.network](https://crust.network) - [Documentazione](https://wiki.crust.network) -- [GitHub](https://github.com/crustio) +- [Github](https://github.com/crustio) **Swarm - _Una piattaforma di archiviazione distribuita e un servizio di distribuzione di contenuti per lo stack web3 di Ethereum._** diff --git a/src/content/translations/it/developers/docs/transactions/index.md b/src/content/translations/it/developers/docs/transactions/index.md index 933b1940bc0..426aa0d3827 100644 --- a/src/content/translations/it/developers/docs/transactions/index.md +++ b/src/content/translations/it/developers/docs/transactions/index.md @@ -27,8 +27,8 @@ Una transazione inviata contiene le seguenti informazioni: - `signature` – l'identificativo del mittente. Viene generata quando la chiave privata del mittente firma la transazione e conferma che il mittente ha autorizzato la transazione - `nonce` – un contatore con incremento sequenziale, che indica il numero della transazione dal conto - `value` – quantità di ETH da trasferire dal mittente al destinatario (denominata in WEI, dove 1 ETH corrisponde a 1e+18wei) -- `data` – campo facoltativo per includere dati arbitrari -- `gasLimit` – importo massimo di unità di carburante che possono essere consumate dalla transazione. La [EVM](/developers/docs/evm/opcodes) specifica le unità di carburante richiesti da ogni passaggio di calcolo +- `input data` - campo facoltativo per includere dati arbitrari +- `gasLimit` – importo massimo di unità di carburante che possono essere consumate dalla transazione. L'[EVM](/developers/docs/evm/opcodes) specifica le unità di gas necessarie per ogni passaggio di calcolo - `maxPriorityFeePerGas` – il prezzo massimo del carburante consumato da includere come mancia al validatore - `maxFeePerGas` – la commissione massima per unità di carburante che si desidera pagare per la transazione (che include `baseFeePerGas` e `maxPriorityFeePerGas`) @@ -99,7 +99,7 @@ Esempio di risposta: } ``` -- `raw` è la transazione firmata in formato codificato [Recursive Length Prefix (RLP)](/developers/docs/data-structures-and-encoding/rlp) +- `raw` è la transazione firmata nella forma codificata [prefisso di lunghezza ricorsiva (RLP)](/developers/docs/data-structures-and-encoding/rlp) - `tx` è la transazione firmata in formato JSON Con l'hash di firma, la transazione può provare crittograficamente che proviene dal mittente ed è stata inviata alla rete. diff --git a/src/content/translations/it/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/src/content/translations/it/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md index 4fa2f8af1e1..b9e2d6c44b2 100644 --- a/src/content/translations/it/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md +++ b/src/content/translations/it/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md @@ -4,7 +4,6 @@ description: Un'introduzione allo sviluppo di Ethereum, particolarmente utile pe author: Marc Garreau lang: it tags: - - "primi passi" - "python" - "web3.py" skill: beginner @@ -21,8 +20,8 @@ Questo post aspira ad essere accessibile ad un'ampia gamma di sviluppatori. Tire Premesse: -- sai muoverti in un terminale, -- hai scritto qualche riga di codice Python, +- Sai muoverti in un terminale, +- Hai scritto qualche riga di codice Python, - hai la versione 3.6 o superiore di Python installata nella tua macchina (l'uso di un [ambiente virtuale](https://realpython.com/effective-python-environment/#virtual-environments) è fortemente consigliato), e - hai usato `pip`, l'installatore di pacchetti di Python. Se alcune di queste premesse non rispondessero alla tua situazione o se non fossi interessato a riprodurre il codice in questo articolo, probabilmente puoi comunque seguirlo senza problemi. @@ -62,7 +61,7 @@ Gli sviluppatori di Python che desiderano interagire con Ethereum, probabilmente I [client di Ethereum](/developers/docs/nodes-and-clients/) sono configurabili per esser raggiungibili da [IPC](https://wikipedia.org/wiki/Inter-process_communication), HTTP, o Websocket, quindi Web3.py dovrà rispecchiare tale configurazione. Web3.py si riferisce a queste opzioni di connessione come **provider**. Occorre scegliere uno dei tre provider per collegare l'istanza di Web3.py al tuo nodo. -![Un diagramma che mostra come web3.py usa IPC per connettere la tua applicazione a un nodo di Ethereum](./web3py-and-nodes.png) +![Un diagramma che mostra come web3.py utilizza IPC per collegare la tua applicazione a un nodo Ethereum](./web3py-and-nodes.png) _Configura il nodo di Ethereum e Web3.py per comunicare tramite lo stesso protocollo, ad es. IPC in questo diagramma._ @@ -85,29 +84,31 @@ In questa guida, lavoreremo solo all'interno di un interprete Python. Non creere Innanzi tutto, installa [IPython](https://ipython.org/) per un ambiente user-friendly da esplorare. IPython offre il completamento delle schede, tra le altre funzionalità, facilitando notevolmente la visualizzazione di cosa è possibile in Web3.py. ```bash -$ pip install ipython +pip install ipython ``` Web3.py è pubblicato sotto il nome `web3`. Installalo come segue: ```bash -$ pip install web3 +pip install web3 ``` Un'altra cosa: più avanti simuleremo una blockchain, il che richiede un paio di altre dipendenze. Puoi installarle tramite: ```bash -$ pip install 'web3[tester]' +pip install 'web3[tester]' ``` È tutto pronto per iniziare! +Nota: il pacchetto `web3[tester]` funziona fino a Python 3.10.xx. + ## Aprire un sandbox {#spin-up-a-sandbox} Apri un nuovo ambiente di Python eseguendo `ipyton` nel tuo terminale. Ciò è comparabile ad eseguire `python`, ma con qualche fronzolo in più. ```bash -$ ipython +ipython ``` Questo produrrà una serie di informazioni sulle versioni di Python e IPython in uso, poi dovresti vedere una richiesta d'inserimento in attesa: @@ -116,7 +117,7 @@ Questo produrrà una serie di informazioni sulle versioni di Python e IPython in In [1]: ``` -Ciò che vedi ora è una shell interattiva di Python. Essenzialmente, è una sandbox in cui giocare. Se sei arrivato fin qui, è il momento di importare Web3.py: +Ciò che vedi ora è una shell interattiva di Python. In sostanza, è un recinto di sabbia in cui giocare. Se sei arrivato fin qui, è il momento di importare Web3.py: ```python In [1]: from web3 import Web3 @@ -124,9 +125,9 @@ In [1]: from web3 import Web3 ## Introduzione al modulo Web3 {#introducing-the-web3-module} -Oltre all'essere un gateway per Ethereum, il modulo [Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) offre alcune funzioni di convenienza. Esploriamone alcune. +Oltre all'essere un gateway per Ethereum, il modulo [Web3](https://web3py.readthedocs.io/en/stable/overview.html#base-api) offre alcune funzioni comode. Esploriamone alcune. -In un'applicazione di Ethereum, normalmente occorre convertire le denominazioni della valuta. Il modulo Web3 fornisce un paio di metodi utili a questo scopo: [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). +In un'applicazione di Ethereum, normalmente occorre convertire le denominazioni delle valute. Il modulo Web3 fornisce un paio di metodi di supporto appositamente per questo: [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). +### Шахрайство, пов’язане з токенами Eth2 {#eth2-token-scam} + +Напередодні [The Merge](/roadmap/merge/), шахраї скористалися плутаниною щодо терміну Eth2, щоб спробувати змусити користувачів віддати ETH за токени ETH2. ETH2 не існує, і під час The Merge не було введено жодних інших справжніх токенів. ЕТН, якими ви володіли до злиття, зараз ті самі ЕТН. **Щоб перейти від доказу роботи до доказу володіння, не потрібно виконувати жодних дій зі своїм обліковим записом ETH**. + +Шахраї можуть представитися як «служба підтримки» і сказати, що, якщо ви внесете ETH, ви отримаєте назад ETH2. [Офіційної служби підтримки Ethereum](/community/support/), як і нового токена, не існує. Нікому не повідомляйте кодову фразу свого гаманця. + +_Примітка. Існують похідні токени / тікери, які можуть позначати частку ETH у стейкінгу (як-от rETH від Rocket Pool, stETH від Lido, ETH2 від Coinbase), але на них не потрібно «переходити»._ + ### Фішингові схеми {#phishing-scams} -Фішингові схеми — ще один типовий спосіб, який використовують шахраї під час спроби викрасти кошти з вашого гаманця. +Фішингові схеми — ще один типовий спосіб, який використовують шахраї, щоб спобувати викрасти кошти з вашого гаманця. -У деяких фішингових листах користувачам пропонується перейти за посиланнями, які спрямують їх на підроблені сайти, де далі потрібно буде ввести кодову фразу, скинути пароль або надіслати ETH. Інші можуть просити встановити шкідливе програмне забезпечення, щоб інфікувати ваш комп’ютер вірусом і надати шахраям доступ до ваших файлів. +У деяких фішингових листах користувачам пропонують перейти за посиланнями, які спрямовують їх на підроблені сайти, де далі потрібно буде ввести кодову фразу, скинути пароль або надіслати ETH. Інші можуть просити встановити шкідливе програмне забезпечення, щоб інфікувати ваш комп’ютер вірусом і надати шахраям доступ до ваших файлів. Отримавши лист від невідомого відправника, дотримуйтеся таких правил: @@ -226,19 +236,19 @@ lang: uk ### Шахрайство під виглядом криптоброкера {#broker-scams} -Шахраї, які видають себе криптоброкерами, стверджують, що вони — професійні криптовалютні брокери та можуть вигідно інвестувати ваші кошти від вашого імені. Ця пропозиція зазвичай супроводжується обіцянками нереалістичного прибутку. Щойно шахрай отримає ваші гроші, він повністю зникне або може й далі спілкуватися з вами та просити надіслати більше коштів, щоб ви не пропустили додатковий прибуток від інвестицій. +Шахраї, які видають себе за криптоброкерів, стверджують, що вони професійні криптовалютні брокери та можуть вигідно інвестувати ваші кошти від вашого імені. Ця пропозиція зазвичай супроводжується обіцянками нереалістичного прибутку. Щойно шахрай отримає ваші гроші, він повністю зникне або може й далі спілкуватися з вами та просити надіслати більше коштів, щоб не втратити додатковий прибуток від інвестицій. -Ці фальшиві брокери знаходять своїх жертв за допомогою підроблених облікових записів на YouTube, починаючи, на перший погляд, звичайну розмову про послуги брокерства. Ці розмови часто мають велику підтримку серед інших користувачів, що може посилювати відчуття справжності, але всі ці «користувачі» насправді боти. +Ці фальшиві брокери знаходять своїх жертв за допомогою підроблених облікових записів на YouTube, починаючи, на перший погляд, звичайну розмову про брокерські послуги. Ці розмови часто мають велику підтримку серед інших користувачів, що може посилювати відчуття справжності, але всі ці «користувачі» насправді боти. -**Не довіряйте незнайомцям в Інтернеті інвестувати від вашого імені. Ви втратите свою криптовалюту.** +**Не довіряйте незнайомцям в інтернеті інвестувати від вашого імені. Ви втратите свою криптовалюту.** ![Шахрайство під виглядом брокера на YouTube](./brokerScam.png) -### Шахрайство, пов’язане з пулом для майнингу {#mining-pool-scams} +### Шахрайство, пов’язане з пулом для майнінгу {#mining-pool-scams} -За схем, пов’язаних із пулами для майнингу, з вами без запрошення зв’язуються сторонні особи та стверджують, що ви можете отримати великі прибутки, приєднавшись до пулу для майнингу Ethereum. Шахрай не припинятиме повторювати це та підтримувати з вами зв’язок. По суті, шахрай намагатиметься переконати вас у тому, що, коли ви приєднаєтеся до пулу для майнингу Ethereum, вашу криптовалюту буде використано для створення ETH і вам виплачуватимуться дивіденди у вигляді ETH. Насправді ж ви помітите, що ваша криптовалюта приносить невеликий прибуток. Це для того, щоб змусити вас інвестувати більше. Зрештою, ви надішлете всі свої кошти на невідому адресу, і шахрай або зникне, або продовжить залишатися на зв’язку, як у випадку вище. +Станом на вересень 2022 року майнінг на Ethereum уже неможливий. Однак шахрайство з майнінг-пулами все ще існує. Шахрайство з пулом для майнінгу полягає в тому, що люди самі зв’язуються з вами та стверджують, що ви можете отримати великі прибутки, приєднавшись до пулу для майнінгу Ethereum. Шахрай не припинятиме повторювати це та підтримувати з вами зв’язок. По суті, шахрай намагатиметься переконати вас у тому, що, коли ви приєднаєтеся до пулу для майнингу Ethereum, вашу криптовалюту буде використано для створення ETH і вам виплачуватимуться дивіденди у вигляді ETH. Ви насправді помітите, що ваша криптовалюта приносить невеликий прибуток. Це робиться для того, щоб змусити вас інвестувати більше. Врешті-решт усі ваші кошти буде надіслано на невідому адресу, а шахрай або зникне, або в деяких випадках буде надалі виходити на зв'язок, як це сталося в одному з нещодавніх випадків. -Підсумок: будьте обережні з людьми, які зв’язуються з вами в соціальних мережах і просять приєднатися до пулу для майнингу. Ви ризикуєте втратити свою криптовалюту назавжди. +Підсумок: будьте обережні з людьми, які зв’язуються з вами в соціальних мережах і просять приєднатися до пулу для майнінгу. Ви ризикуєте втратити свою криптовалюту назавжди. Деякі правила, про які потрібно пам’ятати: @@ -248,17 +258,9 @@ lang: uk [Жертва втратила 200 тисяч доларів через шахрайську схему, пов’язану з пулом для майнингу](https://www.reddit.com/r/CoinBase/comments/r0qe0e/scam_or_possible_incredible_payout/) -### Шахрайство, пов’язане з токенами Eth2 {#eth2-token-scam} - -Оскільки у 2022 році відбудеться [об’єднання](/roadmap/merge/), шахраї користуються плутаниною навколо терміна «Eth2» і намагаються змусити користувачів обміняти ETH на токен «ETH2». Жодних «ETH2» або будь-яких інших нових токенів не буде представлено після об’єднання. Токени ETH, якими ви володієте сьогодні, залишаться такими самими ETH після об’єднання. Вам не потрібно обмінювати ETH через об’єднання. - -Шахраї можуть видавати себе за працівників служби підтримки, повідомляючи вам, що якщо ви внесете токен ETH, то отримаєте назад «ETH2». [Офіційної служби підтримки Ethereum](/community/support/), як і нового токена, не існує. Нікому не повідомляйте кодову фразу свого гаманця. - -_Примітка. Існують похідні токени / тікери, які можуть позначати частку ETH у стейкінгу (як-от rETH від Rocket Pool, stETH від Lido, ETH2 від Coinbase), але на них не потрібно «переходити»._ - ### Шахрайство з роздачею {#airdrop-scams} -Шахрайство з роздачею передбачає, що зловмисний проєкт надсилає актив (NFT, токен) у ваш гаманець і спрямовує вас на шахрайський сайт, на якому можна його отримати. За спроби отримати актив вам буде запропоновано ввійти в систему за допомогою гаманця Ethereum і «схвалити» транзакцію. Ця транзакція скомпрометує ваш обліковий запис, надсилаючи шахраєві ваші відкриті й приватні ключі. Альтернативною формою цієї схеми може бути підтвердження транзакції, яка надсилає кошти на рахунок шахрая. +Шахрайство з роздачею передбачає, що зловмисний проєкт надсилає актив (NFT, токен) у ваш гаманець і спрямовує вас на шахрайський сайт, на якому потрібно його отримати. За спроби отримати актив вам буде запропоновано ввійти в систему за допомогою гаманця Ethereum і «схвалити» транзакцію. Ця транзакція скомпрометує ваш обліковий запис, надсилаючи шахраєві ваші відкриті й приватні ключі. Альтернативною формою цієї схеми може бути підтвердження транзакції, яка надсилає кошти на рахунок шахрая. [Докладніше про шахрайства з роздачею](https://www.youtube.com/watch?v=LLL_nQp1lGk) @@ -282,5 +284,9 @@ _Примітка. Існують похідні токени / тікери, я ### Навчання боротьбі з шахрайством {#reading-scam-education} +- [Посібник: як розпізнати шахрайські токени](/guides/how-to-id-scam-tokens/) - [Залишайтеся в безпеці: поширені шахрайства](https://support.mycrypto.com/staying-safe/common-scams) — _MyCrypto_ -- [Уникнення шахрайств](https://bitcoin.org/en/scams) — _Bitcoin.org_ +- [Уникнення шахрайства](https://bitcoin.org/en/scams) — _Bitcoin.org_ +- [Твіттер-тема про поширені фішингові електронні листи та повідомлення щодо криптовалюти](https://twitter.com/tayvano_/status/1516225457640787969) — _Тейлор Монахан_ + + diff --git a/src/content/translations/uk/web3/index.md b/src/content/translations/uk/web3/index.md index 5082abd3721..09a4a17e87a 100644 --- a/src/content/translations/uk/web3/index.md +++ b/src/content/translations/uk/web3/index.md @@ -117,7 +117,7 @@ Web3 розв’язує ці проблеми, даючи змогу контр ### Доступність {#accessibility} -Важливі функції Web3, як-от вхід за допомогою Ethereum, уже доступні для використання безкоштовно. Але відносна вартість транзакцій досі є зависокою для багатьох користувачів. Web3 рідше використовуватиметься в бідніших країнах, що розвиваються, через високу комісію за транзакції. В Ethereum ці проблеми вирішуються за допомогою [оновлення мережі](/roadmap/) та [рішень для масштабування рівня 2](/developers/docs/scaling/). Технологія готова, але нам потрібні вищі рівні впровадження на рівні 2, щоб зробити мережу Web3 доступною для всіх. +Важливі функції Web3, як-от вхід за допомогою Ethereum, уже доступні для використання безкоштовно. Але відносна вартість транзакцій досі є зависокою для багатьох користувачів. Web3 рідше використовуватиметься в бідніших країнах, що розвиваються, через високу комісію за транзакції. В Ethereum ці проблеми розв’язуються за допомогою [плану розвитку](/roadmap/) та [рішень для масштабування рівня 2](/developers/docs/scaling/). Технологія готова, але нам потрібні вищі рівні впровадження на рівні 2, щоб зробити мережу Web3 доступною для всіх. ### Взаємодія з користувачем {#user-experience} @@ -157,3 +157,5 @@ Web3 — це молода екосистема, що розвивається. - [У чому важливість децентралізації](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) — _Кріс Діксон_ - [Огляд Web3](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) — _a16z_ - [Дебати довкола Web3](https://www.notboring.co/p/the-web3-debate?s=r) — _Пекі Маккормік_ + + diff --git a/src/content/translations/uk/zero-knowledge-proofs/index.md b/src/content/translations/uk/zero-knowledge-proofs/index.md new file mode 100644 index 00000000000..3904694988c --- /dev/null +++ b/src/content/translations/uk/zero-knowledge-proofs/index.md @@ -0,0 +1,212 @@ +--- +title: Доведення з нульовим розголошенням +description: Ознайомлення з поняттям доказу з нульовим розголошенням для початківців (без технічних подробиць). +lang: uk +--- + +## Що таке доказ із нульовим розголошенням? {#what-are-zk-proofs} + +Доказ із нульовим розголошенням — це спосіб доведення правдивості твердження без розкриття самого твердження. Сторона, що доводить, — це особа, яка намагається довести твердження, а сторона, що перевіряє, відповідає за перевірку правдивості твердження. + +Докази з нульовим розголошенням вперше з’явилися у статті [«Складність знання в інтерактивних системах доведення»](http://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Proof%20Systems/The_Knowledge_Complexity_Of_Interactive_Proof_Systems.pdf) від 1985 року, у якій наведено визначення доказу з нульовим розголошенням, що широко використовується і досі: + +> Протокол із нульовим розголошенням — це метод, за допомогою якого одна сторона (що доводить) може довести іншій стороні (що перевіряє), що щось є правдою, не розголошуючи жодної інформації, крім факту, що це конкретне твердження є правдою. + +Докази з нульовим розголошенням вдосконалилися з плином років і зараз використовуються в кількох реальних сценаріях. + +## Навіщо потрібні докази з нульовим розголошенням? {#why-zero-knowledge-proofs-are-important} + +Докази з нульовим розголошенням стали проривом у прикладній криптографії, оскільки вони обіцяли підвищити безпеку інформації для користувачів. Подумайте, як ви можете довести певне твердження (наприклад, «Я громадянин країни Х») іншій стороні (наприклад, постачальнику послуг). Вам потрібно надати «докази», щоб підтвердити свою заяву, як-от національний паспорт або посвідчення водія. + +Проте цей підхід має свої проблеми, основною з яких є відсутність конфіденційності. Дані, що ідентифікують особу (PII), які надаються третім сторонам, зберігаються в централізованих базах даних, які вразливі до злому. Крадіжки особистості стають серйозною проблемою, і тому з’являються заклики до використання засобів, які краще захищають конфіденційність інформації, що передається. + +Докази з нульовим розголошенням розв’язують цю проблему, усуваючи потребу в розкритті інформації для підтвердження правдивості тверджень. Протокол із нульовим розголошенням використовує твердження (яке називають «свідком») як вхідні дані для генерування лаконічного доказу його правдивості. Цей доказ надає надійні гарантії, що твердження є правдивим, не розкриваючи інформацію, яка була використана для його створення. + +Повертаючись до нашого попереднього прикладу, єдиний доказ, який вам потрібен, щоб підтвердити свою заяву про громадянство, — це доказ із нульовим розголошенням. Той, хто перевіряє, повинен лише перевірити, чи є правдою певні властивості доказу, щоб переконатися, що твердження, як лежить у його основі, також є правдою. + +## Як працюють докази з нульовим розголошенням? {#how-do-zero-knowledge-proofs-work} + +Доказ із нульовим розголошенням забезпечує можливість підтвердити правдивість твердження, не розкриваючи вміст твердження або спосіб, у який ви дізналися правду. Для цього протоколи з нульовим розголошенням використовують алгоритми, які приймають певні дані та повертають на виході результат «правда» або «неправда». + +Протокол із нульовим розголошенням має відповідати таким критеріям: + +1. **Повнота**. Якщо вхідні дані є правдивими, протокол із нульовим розголошенням завжди повертає значення «правда». Отже, якщо твердження, що лежить в основі доказу, є правдивим, а особа, яка доводять, і особа, яка здійснює перевірку, діють чесно, то доказ може бути прийнятий. + +2. **Надійність**. Якщо вхідні дані неправдиві, теоретично неможливо обдурити протокол із нульовим розголошенням, щоб він повернув значення «правда». Отже, якщо особа, що доводить, каже неправду, вона не може обманути чесну особу, що перевіряє, переконавши її в тому, що неправдиве твердження є правдивим (за винятком незначної ймовірності). + +3. **Нульове розголошення**. Особа, що здійснює перевірку, не отримує жодної інформації про твердження, крім відомостей про його правдивість або неправдивість (має «нульове знання» про твердження). Ця вимога також запобігає виведенню особою, що перевіряє, початкових даних (вмісту твердження) з доказу. + +У базовій формі доказ із нульовим розголошенням складається з трьох елементів: **свідок**, **виклик** і **відповідь**. + +- **Свідок**. За використання доказу з нульовим розголошенням той, хто доводить, бажає довести знання ним певної прихованої інформації. Секретна інформація є «свідком» доказу, а передбачуване знання особи, що доводить, про свідка встановлює набір питань, на які може відповісти тільки той, хто має цю інформацію. Таким чином, особа, що доводить, розпочинає процес доведення, випадковим чином вибираючи питання, обчислюючи відповідь на нього та надсилаючи її особі, що здійснює перевірку. + +- **Виклик**. Особа, що здійснює перевірку, випадковим чином обирає інше питання з набору й просить особу, що доводить, відповісти на нього. + +- **Відповідь**. Особа, що доводить, приймає питання, обчислює відповідь і повертає її особі, що перевіряє. Відповідь особи, що доводить, дає особі, що перевіряє, можливість перевірити, чи справді особа, що доводить, має доступ до свідка. Щоб переконатися, що особа, що доводить, не вгадує відповіді, особа, що перевіряє, вибирає додаткові питання, які ставить особі, що доводить. За багаторазового повторення таких операцій, поки особа, що здійснює перевірку, не буде задоволена, імовірність того, що особа, яка доводить, підробляє знання про свідка, значно зменшується. + +Вище описано структуру «інтерактивного доказу з нульовим розголошенням». Ранні протоколи з нульовим розголошенням використовували інтерактивне доведення, де перевірка правдивості твердження вимагала взаємодії між особою, що доводить, і особою, що перевіряє, з обміном повідомленнями. + +Хорошим прикладом, який демонструє, як працюють інтерактивні докази, є відомий приклад Жан-Жака Квіскатера [ Історія про печеру Алі-Баби](https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave). У цій історії Пеггі (особа, що доводить) хоче довести Віктору (особі, що перевіряє), що вона знає секретну фразу для відчинення магічних дверей, не розкриваючи цю фразу. + +### Неінтерактивні докази з нульовим розголошенням {#non-interactive-zero-knowledge-proofs} + +Хоча інтерактивне доведення було революційним, воно мало обмежену корисність, оскільки вимагало доступності та повторюваної взаємодії двох сторін. Навіть якщо особа, що перевіряє, була переконана в чесності особи, що доводить, доказ був недоступний для незалежної перевірки (обчислення нового доказу вимагало нового набору повідомлень між обома сторонами). + +Для розв’язання цієї проблеми Мануель Блум, Пол Фелдман і Сильвіо Мікалі запропонували перші [неінтерактивні докази з нульовим розголошенням](https://dl.acm.org/doi/10.1145/62212.62222), у яких особа, що доводить, і особа, що перевіряє, мають спільний ключ. Це дає особі, що доводить, змогу продемонструвати своє знання певної інформації (тобто свідка) без надання самої інформації. + +На відміну від інтерактивних, неінтерактивні докази вимагають лише одного раунду комунікації між учасниками (особою, що доводить, і особою, що перевіряє). Особа, що доводить, передає секретну інформацію спеціальному алгоритму для обчислення доказу з нульовим розголошенням. Цей доказ надсилається особі, що перевіряє, яка переконується в тому, що особа, яка доводить, знає секретну інформацію, використовуючи інший алгоритм. + +Неінтерактивне доведення зменшує комунікацію між особою, що доводить, та особою, що перевіряє, роблячи докази з нульовим розголошенням ефективнішими. Крім того, коли доказ згенеровано, перевірити його може будь-хто інший (з доступом до спільного ключа та алгоритму перевірки). + +Неінтерактивні докази стали проривом для технології нульового розголошення та спонукали до розвитку систем доведення, які використовуються сьогодні. Ми обговоримо нижче ці типи доказів: + +### Типи доказів із нульовим розголошенням {#types-of-zero-knowledge-proofs} + +#### ZK-SNARKs {#zk-snarks} + +ZK-SNARK є абревіатурою від **Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (лаконічне неінтерактивне підтвердження знання з нульовим розголошенням)**. Протокол ZK-SNARK має такі характеристики: + +- **Нульове розголошення**. Особа, що перевіряє, може перевірити чесність твердження, не знаючи більше нічого про саме твердження. Єдина інформація, яку особа, що перевіряє, має про твердження, полягає в тому, є воно правдивим чи хибним. + +- **Лаконічність**. Доказ із нульовим розголошенням є меншим за свідка й може бути швидко перевірений. + +- **Неінтерактивність**. Доказ є неінтерактивним, оскільки особа, що доводить, і особа, що перевіряє, взаємодіють лише один раз, на відміну від інтерактивних доказів, які вимагають кількох раундів комунікації. + +- **Підтвердження**. Доказ задовольняє вимогу надійності, тому обман надзвичайно малоймовірний. + +- **Розголошення**. Доказ із нульовим розголошенням не може бути створений без доступу до секретної інформації (свідка). Для особи, що доводить, яка не має свідка, обчислити правильний доказ із нульовим розголошенням важко або навіть неможливо. + +Згаданий раніше «спільний ключ» належить до публічних параметрів, які особа, що доводить, та особа, що перевіряє, погоджуються використовувати для генерування та перевірки доказів. Генерування публічних параметрів (які разом відомі як загальний довідковий рядок (CRS)) є конфіденційною операцією через її важливість для безпеки протоколу. Якщо ентропія (випадковість), використана для генерування CRS, потрапить у руки недоброчесної особи, що доводить, вона може обчислити підроблені докази. + +[Багатостороннє обчислення (MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation) є способом зменшення ризиків під час генерування публічних параметрів. У [церемонії довіреного налаштування](https://zkproof.org/2021/06/30/setup-ceremonies/amp/) беруть участь декілька осіб, кожна з яких вносить свої випадкові значення для генерування CRS. Доки хоча б одна чесна сторона знищує свою частину ентропії, протокол ZK-SNARK зберігає обчислювальну надійність. + +Довірене налаштування вимагає від користувачів довіри до учасників процесу генерування параметрів. Однак розвиток ZK-STARK дав змогу створити протоколи доведення, які працюють без довіреного налаштування. + +#### ZK-STARKs {#zk-starks} + +ZK-STARK є абревіатурою від **Zero-Knowledge Scalable Transparent Argument of Knowledge (масштабоване прозоре підтвердження знання з нульовим розголошенням)**. ZK-STARK схожі на ZK-SNARK, за винятком того, що вони мають такі характеристики: + +- **Масштабованість**. ZK-STARK є швидшим за ZK-SNARK у генеруванні та перевірці доказів, коли розмір свідка є більшим. З доказами STARK час доведення та перевірки за збільшення розміру свідка зростає тільки трохи (у протоколах SNARK час доведення та перевірки збільшується лінійно з розміром свідка). + +- **Прозорість**. Для доведення та перевірки в протоколах ZK-STARK використовується випадковість, яку можна публічно підтвердити, а не довірене налаштування. Тому вони більш прозорі в порівнянні із ZK-SNARK. + +ZK-STARK генерує більші докази, ніж ZK-SNARK, що означає більші накладні витрати на перевірку. Однак існують випадки (наприклад, доведення великих наборів даних), коли ZK-STARK можуть бути більш ефективними з точки зору вартості порівняно із ZK-SNARK. + +## Використання доказів із нульовим розголошенням {#use-cases-for-zero-knowledge-proofs} + +### Анонімні платежі {#anonymous-payments} + +Платежі за допомогою кредитних карток часто можуть побачити багато осіб, включно з постачальником платіжних послуг, банками та іншими зацікавленими сторонами (як-от державні органи). Хоча фінансовий нагляд корисний для виявлення незаконної діяльності, він також порушує недоторканність приватного життя звичайних громадян. + +Криптовалюти були призначені для того, щоб надати користувачам можливість здійснювати приватні, однорангові транзакції. Але більшість криптовалютних транзакцій перебувають у відкритому доступі в публічних блокчейнах. Дані користувачів часто є псевдонімами та або навмисно пов'язані з реальною особою (наприклад, шляхом включення адреси ETH у профіль Twitter або GitHub), або можуть бути пов'язані з реальною особою за допомогою базового аналізу даних у ланцюзі та поза ним. + +Існують спеціальні «монети приватності», призначені для повністю анонімних транзакцій. Орієнтовані на конфіденційність блокчейни, як-от Zcash і Monero, захищають деталі транзакцій, зокрема адреси відправника/одержувача, тип активу, кількість і часовий графік транзакцій. + +Вбудовуючи в протокол технологію нульового розголошення, блокчейн-мережі, орієнтовані на конфіденційність, дозволяють вузлам підтверджувати транзакції без необхідності отримувати доступ до даних про транзакції. + +Докази з нульовим розголошенням також застосовуються для анонімності транзакцій у публічних блокчейнах. Прикладом є Tornado Cash, децентралізований сервіс, активи в якому перебувають під повним контролем користувача і який дає користувачам можливість здійснювати приватні транзакції в Ethereum. Tornado Cash використовує докази з нульовим розголошенням, щоб приховати деталі транзакцій і гарантувати фінансову конфіденційність. На жаль, оскільки це інструменти конфіденційності «за згодою», вони асоціюються з незаконною діяльністю. Щоб подолати цю проблему, конфіденційність повинна врешті-решт стати стандартом за промовчанням у публічних блокчейнах. + +### Захист даних, що слугують для ідентифікації {#identity-protection} + +Сучасні системи керування ідентифікацією піддають ризику персональні дані. Доведення з нульовим розголошенням може допомогти людям підтверджувати особу, захищаючи конфіденційні дані. + +Докази з нульовим розголошенням особливо корисні в контексті [децентралізованої ідентифікації](/decentralized-identity/). Децентралізована ідентифікація (яку також описують як «самосуверенну ідентифікацію») дає людині можливість контролювати доступ до персональних ідентифікаторів. Підтвердження свого громадянства без розкриття податкового номера чи паспортних даних є хорошим прикладом того, як технологія нульового розголошення забезпечує децентралізовану ідентифікацію. + +### Автентифікація {#authentication} + +Щоб користуватися онлайн-сервісами, потрібно підтвердити свою особу та право доступу до цих платформ. Для цього часто потрібно надати особисту інформацію, таку як імена, електронні адреси, дати народження тощо. Можливо, вам також буде потрібно запам’ятати довгі паролі, щоб уникнути ризику втратити доступ. + +Проте докази з нульовим розголошенням можуть спростити автентифікацію як для платформ, так і для користувачів. Після створення доказу з нульовим розголошенням із використанням загальнодоступних введених даних (наприклад, даних, що підтверджують членство користувача на платформі) і приватних введених даних (наприклад, даних користувача) користувач може просто надати його для автентифікації своєї особи, коли йому буде потрібно отримати доступ до сервісу. Це робить операції зручнішими для користувачів і звільняє організації від необхідності зберігати величезну кількість інформації про них. + +### Обчислення, що піддаються перевірці {#verifiable-computation} + +Обчислення, що піддаються перевірці, — це ще одне застосування технології нульового розголошення для вдосконалення дизайну блокчейну. Обчислення, що піддаються перевірці, дають нам змогу передати обчислення іншій особі, зберігаючи результати, що піддаються перевірці. Така особа надає результат разом із доказом того, що програма була виконана правильно. + +Обчислення, що піддаються перевірці, мають вирішальне значення для підвищення швидкості обробки в блокчейні без зменшення безпеки. Розуміння цього вимагає знання відмінностей у запропонованих рішеннях для масштабування Ethereum. + +[Рішення для масштабування в межах ланцюга](/developers/docs/scaling/#on-chain-scaling), як-от сегментування, вимагають значної модифікації базового рівня блокчейну. Однак цей підхід дуже складний, і помилки в реалізації можуть підірвати модель безпеки Ethereum. + +[Рішення для масштабування поза ланцюгом](/developers/docs/scaling/#off-chain-scaling) не вимагають перероблювання основного протоколу Ethereum. Натомість вони покладаються на зовнішню модель обчислень, щоб покращити пропускну здатність на базовому рівні Ethereum. + +Ось як це працює на практиці. + +- Замість обробки кожної транзакції Ethereum перекладає виконання на окремий ланцюг. + +- Після обробки транзакцій інший ланцюг повертає результати, які застосовуються до стану Ethereum. + +Перевага тут полягає в тому, що Ethereum не потрібно виконувати жодних завдань, а лише застосовувати результати обчислень сторонніх джерел до свого стану. Це зменшує перевантаження мережі, а також підвищує швидкість транзакцій (протоколи поза ланцюгом оптимізуються для швидшого виконання). + +Ланцюгу потрібен спосіб перевірки транзакцій поза ланцюгом без їх повторного виконання, інакше втрачається цінність їх виконання поза ланцюгом. + +Тут у гру вступають обчислення, що піддаються перевірці. Коли вузол виконує транзакцію за межами Ethereum, він надсилає доказ із нульовим розголошенням, щоб підтвердити правильність виконання операції поза ланцюгом. Цей доказ (який називають [доказом чинності](/glossary/#validity-proof)) гарантує, що транзакція чинна, даючи Ethereum змогу застосувати результат до свого стану, не чекаючи, поки хтось це оскаржить. + +[Зведення з нульовим розголошенням](/developers/docs/scaling/zk-rollups) і [валідіуми](/developers/docs/scaling/validium/) —це два рішення для масштабування поза ланцюгом, які використовують докази чинності для забезпечення безпечної масштабованості. Ці протоколи виконують тисячі транзакцій поза ланцюгом та надсилають докази для перевірки в Ethereum. Ці результати можна застосувати відразу після перевірки доказу, що дає Ethereum змогу обробляти більше транзакцій без збільшення обчислень на базовому рівні. + +### Зменшення хабарництва та змов під час голосування в ланцюзі {#secure-blockchain-voting} + +Блокчейн-схеми голосування мають багато переваг: вони повністю піддаються перевірці, захищені від атак, стійкі до цензури та не мають географічних обмежень. Але навіть схеми голосування в ланцюзі не захищені від проблеми **змови**. + +Змова, яка визначається як «координація дій із метою обмеження відкритої конкуренції шляхом обману, дезорієнтування та введення в оману інших», може мати форму впливу зловмисника на голосування шляхом пропонування хабарів. Наприклад, Аліса може отримати хабар від Боба, щоб проголосувати за `option B` у бюлетені, навіть якщо вона віддає перевагу `option A`. + +Підкуп і змова зменшують ефективність будь-якого процесу, який використовує голосування як сигнальний механізм (особливо там, де користувачі можуть довести, як вони голосували). Це може мати значні наслідки, особливо якщо голосування пов’язане з розподілом обмежених ресурсів. + +Наприклад, [квадратичні механізми фінансування](https://www.radicalxchange.org/concepts/plural-funding/) покладаються на пожертви, щоб оцінити, яким із різних суспільних проєктів віддають перевагу. Кожна пожертва зараховується як «голос» за певний проєкт, і ті проєкти, які отримують більше голосів, отримують більше коштів із відповідного пулу. + +Використання голосування в ланцюзі робить квадратичне фінансування вразливим до змови: транзакції в блокчейні є відкритими, тож ті, хто пропонує хабар, можуть перевірити дії тих, хто його отримав, у ланцюзі, щоб побачити, як вони «голосували». Таким чином квадратичне фінансування перестає бути ефективним засобом розподілу коштів на підставі сукупних уподобань громади. + +На щастя, новіші рішення, такі як MACI (мінімальна інфраструктура для запобігання змові), використовують докази з нульовим розголошенням, щоб зробити голосування в ланцюзі (наприклад, квадратичні механізми фінансування) стійким до хабарництва та змови. MACI — це набір смартконтрактів і сценаріїв, які дають змогу центральному адміністратору (так званому «координатору») зводити голоси та підраховувати результати _без_ розкриття деталей голосування кожної особи. Попри це, все ще можна перевірити, чи правильно підраховано голоси, або підтвердити, що певна особа брала участь у голосуванні. + +#### Як MACI працює з доказами з нульовим розголошенням? {#how-maci-works-with-zk-proofs} + +Спочатку координатор розгортає контракт MACI на Ethereum, після чого користувачі можуть підписатися на голосування (зареєструвавши свій відкритий ключ у смартконтракті). Користувачі віддають голоси, надсилаючи повідомлення, зашифровані своїм відкритим ключем до смартконтракту (щоб голос був чинним, він має бути підписаний останнім відкритим ключем, пов’язаним з ідентифікацією користувача; це один із критеріїв). Потім координатор обробляє всі повідомлення після закінчення періоду голосування, підраховує голоси та підтверджує результати в ланцюзі. + +У MACI докази з нульовим розголошенням використовуються для забезпечення правильності обчислень, унеможливлюючи неправильну обробку координатором голосів і результатів підрахунку. Цього досягають, вимагаючи від координатора генерувати докази ZK-SNARK, які підтверджують, що а) всі повідомлення були оброблені правильно і б) кінцевий результат відповідає сумі всіх _чинних_ голосів. + +Таким чином, навіть не повідомляючи про розподіл голосів за користувачами (як це зазвичай буває), MACI гарантує цілісність результатів, обчислених у процесі підрахунку. Ця особливість корисна для зниження ефективності основних схем змови. Ми можемо вивчити цю можливість, використовуючи попередній приклад із Бобом, який підкуповував Алісу, щоб вона проголосувала за потрібний йому варіант. + +- Аліса реєструється для голосування, відправляючи свій відкритий ключ до смартконтракту. +- Аліса погоджується голосувати за `option B` в обмін на хабар від Боба. +- Аліса голосує за `option B`. +- Аліса таємно відправляє зашифровану транзакцію, щоб змінити відкритий ключ, пов’язаний із її особою. +- Аліса відправляє ще одне (зашифроване) повідомлення до смартконтракту, голосуючи за `option A`, з використанням нового відкритого ключа. +- Аліса показує Бобу транзакцію, яка демонструє, що вона проголосувала за `option B` (яка є нечинною, оскільки відкритий ключ більше не пов’язаний з ідентифікацією Аліси в системі). +- Під час обробки повідомлень координатор пропускає голос Аліси за `option B` та враховує лише голос за `option A`. Отже, спроба Боба вступити в змову з Алісою та маніпулювати голосуванням у ланцюзі не вдається. + +За використання MACI _необхідно_ довіряти координатору й вірити, що він не вступить у змову з хабарниками й не намагатиметься сам підкупити виборців. Координатор може розшифрувати повідомлення користувачів (необхідні для створення доказу), тому може точно перевірити, як голосувала кожна людина. + +Але коли координатор залишається чесним, MACI є потужним інструментом для гарантування недоторканості голосування в мережі. Це пояснює популярність його застосування для програм квадратичного фінансування (наприклад, [clr.fund](https://clr.fund/#/about/maci)), які значною мірою покладаються на чесне голосування кожної людини. + +[Дізнайтеся більше про MACI](https://github.com/privacy-scaling-explorations/maci/blob/master/specs/01_introduction.md). + +## Недоліки використання доказів із нульовим розголошенням {#drawbacks-of-using-zero-knowledge-proofs} + +### Витрати на обладнання {#hardware-costs} + +Генерування доказів із нульовим розголошенням передбачає дуже складні розрахунки, які найкраще виконуються на спеціалізованих машинах. Оскільки ці машини дорогі, вони часто недоступні для звичайних людей. Крім того, програми, які хочуть використовувати технологію нульового розголошення, повинні враховувати витрати на обладнання, що може збільшити вартість для кінцевих користувачів. + +### Витрати на перевірку доказів {#proof-verification-costs} + +Перевірка доказів також вимагає складних обчислень і збільшує витрати на впровадження технології нульового розголошення в програмах. Ці витрати особливо актуальні в контексті доведення обчислень. Наприклад, зведення з нульовим розголошенням платять близько 500 000 газу, щоб перевірити один доказ ZK-SNARK на Ethereum, а ZK-STARK вимагають іще вищої плати. + +### Припущення про довіру {#trust-assumptions} + +У ZK-SNARK загальний довідковий рядок (публічні параметри) генерується один раз і доступний для повторного використання сторонам, які бажають брати участь у протоколі з нульовим розголошенням. Публічні параметри створюються через церемонію довіреного налаштування, учасники якої вважаються чесними. + +Але насправді в користувачів немає ніякого способу оцінити чесність учасників, і користувачі повинні повірити розробникам на слово. ZK-STARK вільні від припущень про довіру, оскільки випадковість, що використовується для генерування рядка, публічно перевіряється. Тим часом дослідники працюють над недовіреними налаштуваннями для ZK-SNARK, щоб підвищити безпеку механізмів доведення. + +### Загрози квантових обчислень {#quantum-computing-threats} + +ZK-SNARK використовує криптографію на еліптичних кривих ([ECDSA](/glossary/#ecdsa)) для шифрування. Хоча алгоритм ECDSA зараз є безпечним, розвиток квантових комп’ютерів може зламати його модель безпеки в майбутньому. + +ZK-STARK вважається захищеним від загрози квантових обчислень, оскільки використовує для шифрування стійкі до колізій хеші. На відміну від публічних і приватних ключів, що використовуються в криптографії на еліптичних кривих, хешування, стійке до колізій, важче зламати алгоритмам квантових обчислень. + +## Довідкові джерела {#further-reading} + +- [Програміст пояснює одну концепцію на 5 рівнях складності | WIRED](https://www.youtube.com/watch?v=fOGdb1CTu5c) — _YouTube-канал Wired_ +- [Огляд прикладів використання доказів із нульовим розголошенням](https://appliedzkp.org/#Projects) — _команда Privacy and Scaling Explorations_ +- [Порівняння SNARK, STARK і рекурсивних SNARK](https://www.alchemy.com/overviews/snarks-vs-starks) — _Огляд Alchemy_ +- [Доказ із нульовим розголошенням: покращення конфіденційності в блокчейні](https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/) — _Дмітрій Лавренов_ +- [zk-SNARK. Реалістичний приклад нульового розголошення і глибоке занурення в нього](https://medium.com/coinmonks/zk-snarks-a-realistic-zero-knowledge-example-and-deep-dive-c5e6eaa7131c) — _Адам Лучіано_ +- [ZK-STARK — створення довіри, яку можна перевірити, навіть попри квантові компʼютери](https://medium.com/coinmonks/zk-starks-create-verifiable-trust-even-against-quantum-computers-dd9c6a2bb13d) — _Адам Лучіано_ +- [Чому можливі ZK-SNARK? Загальний огляд](https://vitalik.ca/general/2021/01/26/snarks.html) — _Віталік Бутерін_ +- [Що таке доказ із нульовим розголошенням і яка його роль у блокчейні?](https://www.leewayhertz.com/zero-knowledge-proof-and-blockchain/) — _Лівай Херц_ diff --git a/src/content/translations/zh-tw/developers/docs/accounts/accounts.png b/src/content/translations/zh-tw/developers/docs/accounts/accounts.png new file mode 100644 index 0000000000000000000000000000000000000000..d34d9fc0d5ebfd3f3cf292c00442dc7dead913b1 GIT binary patch literal 19307 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�gnHfQOD>AduJk_hoP4`-S0O_#Gb1RZ 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 literal 0 HcmV?d00001 diff --git a/src/content/translations/zh-tw/developers/docs/blocks/tx-block.png b/src/content/translations/zh-tw/developers/docs/blocks/tx-block.png new file mode 100644 index 0000000000000000000000000000000000000000..c3a3049b2878b4f1bcf968c7d92a0d67a19c43b7 GIT binary patch literal 8728 zcmdsd2T)U8w>G{OKqP<-l+dfvMI_RT5T0O^EK zG*LoFs&ovYSCJ+)_ki#Bz3(@3|Cu}g|KGXu-7}e-%-L)2wb!$rwa!`_B5vuz8IPYo zPD4Y(sHJ($fQIG>jE3fqyL5-aCuT%G4)C^f>!#6l@c!!6im&ei6~TYx5DgN!ghVc; zq%1#rv_$pdr+V`{IwTtz`iovv+(qyQpvqO0@5IG*$Hn!qo#A3T!FE#MHilPz#T4?e2502Q1C zfZu}n4j>A&-^j~A*N}!v-J`11QK>4m)c@qFqjFP6shQx&!@HmicsJ!3OayOBRO$;V zbKNcG_Bh~S-QB`MZb{%_EP#-_C21YpKF>}=!|kheP1Okbd|{ZudQhY4;W8{eH?4_q z*CoXLv%nEeZh;4Bms@AtDi#*k=hx;lR(9)}{T#f?6q)&Nj3w^w1l1iyG#j-3Qa#_e z&Ij)H-~9?0kk#X<^_%vfF`vMeoo3nuYaY`lpgmz7nM(QnqXOfPlP56 zNGj?(uEH~9CtCi;ExP}vA%h+9l^(9HH0qwO559+v_SWMK@s&i=(-DR189AdH0ZS6C zJI}oNpej5g_?8mI%%nwU9H20a8u{veTb6L>wC4@j-u9QO%%N{Dft`sQWcfx*Eo$@9 zmUa{iAN{TX*?be>&(2{h=pj9^Tu1KXQDg~eUVrMS@w&VBo^Km)nSkQK7o(iH&9 z*jsVf-g97$udD3AKHJAJjJPa|a{2iwa59B~6g5>xb(qUc3;}4uPBW0WGL^Qu`+s#U zO$3Xg>MDVqow1IUpvzk#-yVVjLo8TU&_;k92glVsCM>7TyYBGFQGVWATDk(I;x}SV z+m%YuN&9PoqQCl4W2c10p@qY3;VTxsSNNemwBwtYI@$H@-UD^DSiW_GUJX}R;Feae zhP9B)0};@n2A81J3WrR$%YNrSDOaH54@8k|9rM+5TvS}ehLE4TUSnk4WJX|0UGuPO3ziSZ4Xn+bts0a(p8_tLOMoE?7ezt0Z#H@-2pmtxmBG`d{kc`sw$tV{r_ zE#0+IM2~y+HQa8RjsebGIV_O7d}ZObmn3~6UP?btRW--TLyU75AHPD`jCkXBbw98* z72T*_v3WV17|9IEdWWl5Eu#Yv_d8L09Ap?``%K591`h|}iUhzS&Ck0I4Dc&PwlLlL zN%WR#kbPB0{!UgC*#H(kDY`XMd6t(RE@X8(pAM8VxC0YJAV%;fvP*bEBt_s~8Cw-B zC3odE_`V66|FITE`OtYCbjdy-s}45SC%+po_g!z_yIoC{I@dn0-%w>`L2nIfyXkdC zQ)VBJEr_uN^yNfb@Qg!dQerHijEF~16aWo&_lB{>f|+OH?Ql}+sKkHp+ul>6E7YX^=Jcr6;KyAY_k*HnOKGB%^obidwJ zbz`u#?+7C?LLP++*pqjwO_S=f?Xx&7mxD{C!ZKP)Dnhk*;Vnh!Mzd; zgt?r=PS4-8`%MrQQAo_y3b^3fLl;G;^*jwolKWuPk1y*Y)nGnfrhfDxOA3bV zGUh||T*JmV{RO8>m+go9rkHkRwew=&;dN!blXrqQXV!j9Ai?ZlR^tEO3QGQPW%PK9 zUS{jmRK1UFS)DLJKjtD~`71(|kC1hm{Q4OAH7)s8Bw!Q*bcX=K*I{o}VY8~Rr@YV} zZs-~}RJ(^6i&0t`JwfQ8BV-w^k^AE3SWKFJ3%yl>;yo1A)?$rq0=JkUIkR*mb*ijP zFmU-`sU{w1E4Ts+){_n{O@}cE&4v;>PVB1{#{9R6%o01KRdc9T*MIBHXMo@Rc}!#! zy|X4pZJF@MsXIeE2v+)J)%3R4@Zo?G1 zm&DYs*W`r`m$3P4Axb`Q4H@B^RbiuJb6zPLxLo}i*{17q`2P0eyD;(hDmh| zIc(>4T0(xSodt$I`>rRX%m`-UDYxv#YHPl6By&{>8Kfg`uj#Cw0t1pJ_k3vfxlr{B zt>j862ja8|wIwuRdXj@2=WXaW=*_^s-Jdr#*;yO4tG@h7nG(e>wF`9^Qx^#Ys_ipAY4{#0dIlGLd3ZzSKnQ<-h$6=W00db_3z_eFcOm za7}!ErVp`Q-;lPFlhZlv;-UoYj2U;JhqJRla-L#rVbVe&$kwjZfYKy{&avW=t3}&9 z!^qpj+sa1t#csgsPHhmQ3G(!+Ud*P_?zE@N{fX?Ajsm}%3u#eEA)=OUWiGk0&08IU z>~vPWsB++@PEKq>QR66ibYr}=yO+2Cco94nQ4(XP3bbH?l$9LY=Po2W#BcbA$uLN( zpQLoi&V#4fZw8N^s}z1d@lEVWNIXMHt8zv#i~K94+mH9W@P+;2yW0nnpaQe8F< zu*9ihx-ka$!bQwNeVDv`gpd45;x8%p-4rR$Lk(%GHf26Zc8+Zqw`zVz&(mJOB3A9H zCjCNu#8Z_{n-Q^jTGi4f4?gEtKTmMTHYa&me2#+dcGP~J;IFyaviDu9tes!uw@K$A zSJO{oi$&VDeU^wEP8Peu?*4hjc^*765e0&JtBYpT=cfLz)L`e;U{5>GW7}eH%iP1A zD&$}f4lGQfK9#9kWBHIUgiE>jPsTqDL=L7T=&!y``ZEg3MWC(!Q*r-)PB1+zSP35* zvg0xGt+!i%f?xHi3}&n#7_@JhNZCU2WWzgIl9PE%;Al87&ri^2`mZHN7OWF9)*oDk z4lY9nR|IpMOekd~T?KX?jB_wMW-71Bq_>(~pgqX4Z?UAeJ8rZ;%o6w01=7pq>TmWC z^dSd3iv*skANYwEI`JD|I{1G@WR~dR6%eo?3k|B-I-D?FKe4R8w?fq0kzeCI$iCee zTc;Ms3B#$Qes*$E9~auz+xo^!$ZNLNlzm$~Z=So!^YIdxc52NXM3$zBfKJW9`s zbt6O%%j3Ie=;02RxApBGEPemZ{r1Z}4-PTxfVU|@zx&yHV+RoXNFqyg0&b#-rM-^( z1WE8j$m*bln5V2Mfkj>m;_82?Vq!{6`rWi_4MvQfR1VJR#$;!@s93IsQwYh|*E<>- zW;+%`&60r=DM#f zGW(ID{3;(~nOG_Fu%bV-i9D!+k|?ip#FQrT+6(u(Y5TW3S;eQ?!zr3d0IiJTT)mgx z5YzKi-wr(u6m)SiER^r+Yfj@T9%UPLLeX{So^xenn8om`^}<(X1Bd-ePGW=Qw-#~f zEdC4@D=w_Wm zW@`%i5$i^)wkLOeX+oOlSS*I2#Ng&n6nkU6av^rK0^2T&w{jdtv}D>gaO2f+`R4E1 zUNd5(Q>%u@8WjdVq7mXKry{VQxH(bF{RB8s@5ZD!@&)_OfF+0AaQhDRHa#hfzS9t8 za>;OE4|vvxjHRSAV6NU-J#Q81jE0pv=gVcwL4!TswfF?P$G1%2A;!9{C<(lS{Xn86 z!A7w_4)Z|H%J31Rqnysx}$HhL0h&@LIYi)&Sg zQAaz#?&CB^j=70U@p^D@m1G+Gz3&_YK1<6;IxK6|N-8AoMwTFnZLPJNpL}0G;WY9! zE!2Fik0%y+gYE#!@G4C_Pr*$ukLa6Z51-eUtf~;vV{bB{Z$DGpNXVlQ}@0 zEM21}%@io2DQ`$obJHJx^;zACbIVhoaS3?MdjqOG>62y&JG+f|5aF_kn^#|2ip6=Z zW|X^u248`a4&&%HE)Lk&1P_;B+w2(ePnJc$Z*t)tH^(u+xw{nlP3KMgV$w%|_n9%; zXTPbfv_&Uu@5G z>{t zY7{(`@Z**AalNhOl+Saj#eLn;>GW`Ukg@(ma`gQ=b@A%vUb*}B%`<%~(=of&K1RaL z{?6nN<8S3F?0n^+*^chEZh7~SJqdL{o)6>Y(!pzjuGN0nm>M;GK|BALY{kVu+X~Mh zLA(I&ORl|35X`&`#Do))))$LYPsql-5AebsTmN9keQJ}x?t9Anz=BZX;?V)$#(@U{ z<{(IwV&ZKZhw*dvrWty6pZH4U5d|$*pdBF>ulb*y8(0jk1iZF>B33pB)Wv6ewg97I zlk`Ocg;g+dpkVWUOYhl}Y<*>7L{#sNM*obN&dt*s5|S8R!{3HIDeKY}W+X}C-~1x}!Q`wyakaI4bo)G4H0+}f6U7GzO*k$(=76n4 z0m$}sprJ8weoUet>vO8Ary~Mo(R97GT(w${b;*zaMgV*{OSkxl0eueH%x@mx#f_4} z4SW-rDT4|<}C zD3y}BBC<)TxV-Fck(yWUwkqlShY0RkH)osmKHvQK{8#&Q2Lbg zB3g|4HA7anVExVI9FN-@GX(X3vCxh^%)A30F}hxuE91TKWc-g#Ct*goK8~cvNFiCy z7Uz>IH_Xd+#TCJz%_qaoH_CV{7g*#;B+aDy8sbOe7ZozSu@Hy`?x@2?zvH+2Z1eCS zc~lfo`*?#9ZY=KMas$>q*bBTbG{(!^S~yrFZn&i6-TV?+GMVIHH99D!l#xMjc^UJB(*T>0@8h_@BGV*kx;sx`)Q&%d`w;j#<@wHMFZtA`#bLGGyWdTC! z%|D2jr#49M!KB31n1z-V9)aWCxr}l5_n&I zbJ?;p=}K?p@0U3g+lUsAuZgzmcS}Z%=j<2j1byrnAgYLt$W)M5-KpgC(;bT3bDult zOedxp;a=n{^pCatZ%5M`dUlq5AB;}??li%!LFrpL3W9UIrc(t;i0S6z-~^_rm1ty*^O z7h{+=JoAbi=aAw5IPZOR;X20FF5lcL_(67%E(5sD0U)$Pn(?#5;itNtVG4(Cwpcbj z4_D_5f4^y#vr9I!d{?jrO^ScUHxNAZXHG$l^Vi5` zcixRW0b4(PY%kDo7)Qw~u&|<3Dnhfht)uZy`AnoO^R*e1c~54nXKA>4#%WorNW42t zx7T`EJ-!@6EHQDl)_Jr0yJ#7$a)%XnJ9e)F$lkY!nWU;bIl}T6$k+1_zsRazCg-tX z=pIf#`lTG!7K`JgfrR{-j=w}_iOc&(4xOn0bTXqu4C5c6NEFp~SU%n3Xas^^!K zKfui6b&l2JP4c&o{89ufXGeMrRE1T6W3WsD_S$5d$THf*h*=a1)CTxZRiyFb$BZ9iuNm?w667+Uj@LpRk9J!LCL=Vob}Ow z>DN{tL5=O^Jen@xm8tMdH#ocZ?MjE66hWU+hRl{B_%0ibLw@hQ5!2boKCSfK%@0=X z+~ZD%xegPRA;;M!uHK8;u72G8HHujK+)RV2rmD(Xpy*0sydWqfvJ!Z_rcnvaVWRkDPk#F8H)Nsk~*qsFUL z^MnJJaR`q#;`irXC-+@EnBnh~o93QG3qLr90iB{LX!7l?o^d9%Rss|w=*NNy%{5=H zFOmbRO;|pyM-Nvt=faki&7!KmTCuw*Nsa~{TNWd~R^KKT6`P?jkNh%#bb_}x8 z1^={j|8BtP6DOdPd9jZ+8$bRMW@Cf3=y4rgNeEunmy`sOGnI}{3LU0o-@W@?QW<@^ zMekTW{NGi9`9xaYX!ojw^k0UQHp-5o*DZA>?*4_?g9K_kE9(6l=-+^Fy+_nHy!tmZ z2FCMI5ew!`pZ-F(>*88s$X@{GS~`i){)O?)=5AxiUoa<^zxfvh`G$J`vV7h%&%fba zdW+*BEYbcY~Ar_x9_A|)j;gftQ&r9-2%q;!KIB{DEHqJ*@}&q>#Oms(65-S1V_;wqsjI2zV_@6{V_;xD z!NUTcnD($SVqo0z(bY110NfT89r*d}puE}r{rCL+cTqmmZ#D&a%eyRsC|?eL|6d^?J7Hlv07IH_pdewKA zSx`gG6~Gu736F~E4GKa&wv360_=;woH)m+*9)JZ+13;k<#|M!Te}M17KKeQa7$_7< zp-Z6)_=j3z=?X(BJVBxIfSWy37m76RJqq=Nltp*UvnCPULm2o0KCCt<{X~>5a6gv> z3KPq$K_%pSE{%nSu@k;Pg`>ti4`vfQYEdsxD4`*{gwYz$xh`PfXJF(Dg-#Ue%EQ_% z^=sRErRTUt7#Q-b>MDwc{@FV@v37G)X*I0U`Qr#o78WIHEjWd!yj^@W6^(^>A`?}A~ zDwTtlL@>P+K8MaU&afM^%rOp^)Uh0!cAmko$>C=u-d%3A;_-$>QUcA~FDDSDCvbVD z`%L!%Za4OwapFbnDVg6^OxbnZdJ&WEYYHYLdIX-o%^KgLlS9wypokI(!f6tH*7ldc zPvu>?UP{of%rg~g)gj;cT5)-1ebp#wK7Ej4IE} zK{D({Fa|9y{~nF%%XDsB#bQ<@6+85tJ^a-(ov%3YJ@sHOvRFH-SIXI|?_GXWZ+{)- z-76ccjdp7Y1&u*Ee2>U(OR6)YL}*W(sA%%=I*Febf6vm|Rx8xw-@ z9=E>2*5FBGL&Z5IMTk>WxT(|G^Qc)O_X))NpD=5gJ-JK2oY}j<)m8~@tdzKBKV{uC zGGGG4k7C(;-f_nE{I-{xif1b~r1T;t#l;AG5|9?R>^4Pj6qFLkYv^vX;9V|v#PM?7 ze?A};L$@lVXN?cr3o{X&)q6&n}Q5h_SqWRIAC~ij0^^*y^{Mm21;(#8H zcCPDruQY=Tsw9SSPG zM6g2oJsrdOG>D>Iy8303z@2OCg7JlJ(#O!K{gb>yDHq7Ibe`|$EvhkC2n+=hZZ}(l zi4>UP2p&}x3k4|7t{n5+GFBP#5L6WQv{lQE6d#&Pi7OpRBjy7wYIwY_Bq;fT7S1O% zn!(`mIhzD_D~x!eXNwgMnhl*>{ux9=vj(=ZVP&|$|dk?KOu^o@^t-MchT2UVkw56;p^1hge@QK{EWzA4(I&TTgEpE~CkuP-7wN`bT@YknbmNtq;j{}AU?g9)^;pkGMZiGzzF`PBxep9ar2oHNs<JuYLPkkgZ+1F~P0UJa<^JgjMquX%F4^3>47~%$ zg7HN-yp8YE{gdv^#Xp^Cq;RG8Q|WmZuOn79S7Ot(QDri&ro&!)9@4k2JD+#?-JiiR z3OJA;um4>Io9Td&sYxN6UY$S7Ee9{Gs0Gj6L2Jz2Bo?BO9_nv|?muLg8^NI&T>Q~* z+3_*&P`uQWifw$6x+i>Jd~tTtEmrkEF;nznm={ zm!m?0S)p4!0XDI^sXNFKHPCUzgb&2Zue+ECjcQ5_LQ6ST`E6vW+lA|HaS~Vw>e*k! z7u(|jB1n&`<7wlZvQfNUea?>e#iLWxCtwlH+iGqIsSYAk$n^Njha3|P&=3fDqJyLD zVA9(FdKhd+o0jg7_Q0ZL;>@$%_#&3(7GNi+2Be^+TLtbMfwbZ8aUOmc$cHTlE5<9C zfYN+x#(%dTW!5=I8QY!4K3aq9NvKy|X{9G-;nxx!jVF`R=cad?+*9mW zxn&C5ci3hPoy~__`5A6Zp)RuU=}b*7&KIGWAf2DNP$-%ubu39N#fz_un%_(tb4zIx zvX+8-nhMgDi$UhA8j7zJ%(F`t8hJxWV6noZae5U<>s;xqgRL8hnKIMKPsXp%_2MTGW)Sum4~ymsOtQ-zow|o?PxKT zH2CMm7f$le;E^^0ZGyQIvk4Y9{>GqEB*v2qe?Dox;kr_>%6fWNuVJJ2(8>qv`yRiD zq6de0c9-v17^n38=(`8M>+$>KzFp4Nm(kZ=+h}Fz^O?h&xB^S62*|M?SD$xU=Iwv^ zv{!cTM6GJ?jwD(O3QQb&ow}}7GSJBQ_1`)4L(BwKAY}ojjZw7LJ{T8JPF+Rwx{s|; z$0Ba@Ve)Ldm82CYZoM2s_$u4PjFmg`kMK`t3Cz(BWBjV;w4vLolG8As!sgWggm<~9 zRk}eKw!4pp*gc-y3e3;96%pKc=lR>e>y=hlc09YDom*t{`<$5p|2&JukehJ%c)>{_{;ozcdB{PD7;$^ll^k4 z#8nw_F_5r~!MIFR)zQR9=3RL=yg10$+u;K6J5dL%HJpS+(cC^{^P^Ajy+RdpUyIG8 zDWZoANZ$E|`Ns2{l|RO@z@h1}oH%{8tE9VcP6_kVu|t0B6}s%sP4)bv+8AH>&ntcz4|Oy_(Sz}Y>{Q?v$Ubrk<|@nZQsy&{8(f`HU1V5 ze-Vrt8&iUo1sVfpy(%_iIJJlMs751BvYD#>^#5_DJ96}=lTVV0fsqYLa5$=?r%$1% zTU@DzbeKEd>>?0w@ro%&23q2mJY`7ZhCCaz#~%^!=kHZ4+{sv7K|Vc48-I_jf-jqf zAFMvm#ca#$PfshA*i{@HxK+r?*SHL)feCXla_AYwM<>ny3O&#N>(pQsBPD!^jxea0 zgFRiMFICdBE!^rhquhw&q?##lIZQBJXWlRcu=MJQP^-~mZ;fz6ULGqc8)l#8BESc3 zWN0U{-?o&qpo(~3hJxl9@&`7v$(lT%3L}fH*60aTn`AsBl^FZYlgf)*55h;*b^Mx} z_t-?up~a^PETqWWjz7j=PO7a}Gjy9E7Wp_|*J(V`h9K(GzNU2Jmp>wp0(WBq6(r3h z6Qh_+_U0R0arP9XsKZ3of+3CSG&{d73I#H^@)HC<*h}}=?crAWE9vJ}y<^rHBMGV) z{Hqp}%j8c2sQ75`+2%|LQC23=p_uC8VSuwg7nh)pt%Q#3dfjqf=x=0O*PC!K#@9F! z`QdBl88!h#5!V-|2Q`Cn_2X%# z3hIg#Aw`VAnV27gwP}jc#{kUqYkaORNSO@xS_}fGAcPODjR*fm29z-loCw8!!XE|{ zD9Sd?;3AZe_h_Sv;S1pZMSIiQ4$y|tp#X>ki#T9)00RI({+Hqb791c1fQ&H%j73Yc zKd_(}f#CoV3NAOT-|BAW5;g(A2EqZr>S5H|aU;;I+(#ReLrgTff2~D!w=l}k7|YOe zy1{4<*M)`q@M9oHT4Irrm>4NN9)Xi)_AuB4$9|z#eYaD^zq$vhK zkY@_C8C9(p(OhOz%#wn3&N84aJiAj0bf+RO0+>9TqBNxaUMJvbg~=PskQ;o0aR8Ga zMm+Te(X1GtU8&kvKE^C55(1zHVIw)*p#$ifC?GWnvHW!%2#|}FBR2{=^8Fa2Yl#ZS zh0`tC*?I5V(Rvx>Gq#f+I~6X|USyU^NI08$Z!|hRiU`~o7;E+Wky%44KMX(by2^fA z^&$ARwGt$EiHOf9 zQo_%+ALldf=AE_2`PiM5pQbD$??;qmCM_MlDl1JM_3-o|5W&>xln z+vR;Cm|h}d@~ozwHjd>wVGPI!#~LExBjd?6^;67#D>N)q8$1<d%|YP7>zGEy#$M2Tv(3F*s*{ol%6By!xFy&tk_?`B!pa36q$OGS>}BO{PRSoQ z=9g|WbnICH6IOch*_wotFosPCA#Azryt@6AFWUoWxjm+h(L*wrZdp&cyL@o&iov`d z4El5&#aBohbv7_Yp^tM#Q{M|&5~rWQG%MLv55KKMog|w-m@jpFHPDBTLF0MD00G#t z=@(br-7oE)LsfkgNVx}`+;ZKw@MEPkpBq{7xv+xWyzayo{vN*5B|EdEOZLcm_+!=m zkdkqi@>=!of@A&^@NCp+?Ql0)6LZ*AYrPaSDKv{1Q7R!|-N(K2weUdvnuX zKuzU+x4`mh<*lEcR86GWoW5qJpb>7xWEOI`b^EK;AfO0R^2h}7{z_?JS3QukV4{P_;iD>Aclt1X9GpS?v>p!NxMz6mN zv|0BG1V>|5)?C)Rg4wgq^+AWZs^t|*Q7rmG8|7g>3ZM{C9|&IOx!dyG#gcV9eZXgg zeXNzY6)!dcF`r=~gxdn-yA9Te)XjBRph_sH98`yZMYZa8latb|rtc}mIeI>R^}W7| zMXaDQjxb*)RP1LBE=6D3B;@tsoERybPt_P|zVoTB)^atbluaovO#ewr153Ws>_Y+G zExecerr3`vm@<|f+Cm>2KS&Ry&C323vU8q=ZT3zBQTqLb#gL77l2O@^6e-3TjxRv# zGl+i{KQy9=MMj>oK3e~$KX-hjaWI@AYhsiI;_2{~p&T@LZ|r>bF&@g9mLxCdO2rvV z$Q^R~7g@JJeBcxQAfsi&*S@MDgFW1T@D=h{7_%rKr0m4>fnHjh-^Ylu3_Tx$vT5qt zV4&9@QR3+Z+^KX z#s*Cc+atsec0a>hv!&R;Z~{T4Esa{Rebqys7Z#J82?fRTnhiQZe~I!m#>!aO4u5@L zs}1n{^(Q#R;8T8+$B&0;46K%P1%oP~5JG3-tuu^7{0Ye6fEr9MR7u%az{=LV}TJJ^47m~3Rz4~O3$Me?RFiBk9x=`lL`oPq(`W){?0J>k3})5^*?j2 zGOcjQ9~ZJ1MYjNt&`tOR!zUbkb{m25eyFzQm_g#z`RQc{;Jy_~wEB*S(Z)Xo(xD8( zuphLy+ym@>2H=%CbZK|jkB`wwZ$?C=MjqgUeCYljU2T5Au3o!P&euH&n_^bkUix}Q z;v&He^*hJ}vUJUk?eCAqP*ne5T=tArqcV(9&o9r8#+)wA8n5nEp|p3_diLEPe|MJ) zF7pfdyL_Fa170b#~^l-b?zTvFT)5V|AGEMVT8qk6B!r{ z#^_HSXjx=MJ3`TFzZk4At&G>(jA#e>&5VsS3zFU4h%I} zZ>A@e^ZYrdmgEZj0uN7)h7!3T!G9L*e-GTgP(Hk1fS-D_i9#l-cm<|q)hAtsd`D_0 zi3jRd$Ju75dtGfLOhN7^sSe7YAc99}0pxJ_G-qT2*H7kx^(FA=i@CJe9;#RxZH|`) zC+U{rDiwO9O8no``GR_vB>flbMIFkfy5m! z1}uiWxHnQ?I2tU#D@OQGT=8=LjE`3p+u>bl-J92FGr6Byj(Zv?P_TwT-;KsT&abA{xkN)bj635sb zqB*1t$u4Dh6j!J@Zmdva~wfp4ku!=|7S;Gnenn)=WEX>5bBaY-X^_{dOw*+W=Ov`j~!Z=Y}*zME;05S*<5}siG_Jh!UhYJ zrr}-%!yryERB-n%Ieg+^VJH4f%mn`iLnQd!=0Pvy{An^9j@L#@t8;IKfe!)p zAClsVgNr1SGj$cAZQ05q+8G+Ht+tr~fi{S49-5!Eva~3^7#tq1Ze^X8?~8WS zo;i!rRP{znD!}_F@YFE*BxE=vzFZcj& z{eT|a@S;%7%$OQJ7#9akpGZt~2N$wIB^e6}Z-(I@Oy@-279<}O+dpfZYuSjgb1)Hq zSn&4r_6DDkmRYs=td}Kc2@Z!G(CtkBcw6wZjwfA_xTv+SGUo}b}{+1}138abFAZXy``|n|+ z!pzSqzYRxZo6MLM(r#Ku`!5szlZiC2hD-e$MsL;XGBZ7U=iyPxw(+lQ-jE|ctrhQH z1rQQyjM#Wxlb|~Ds4A8CZ%h8TgL4-28OiZCI>MV3qJjJxIg~D&)~FNnehv$P-eC42 zgVWxK#Qzt?ApC!7n0cJ?h{617z=zwH_t!up*rf0lV3~4NA9=)c(iNLY>M-T)wCfN% zZzeR+(Kjy9^k%fC=7q@pw`4I~5(z+99B222d8EXB-h9b+5OD0)AT6^r_KF;S-{b9Q zOkwH6pG#1tNv}b|u{LXs_Wrf;#{aN_d(|QR-5%{J*|lD_qvK|hIb+G>(T6?rbP)dX z@J6rHs%JUR#=Z0I#;LkYD>iO(iEDm+e}kPqMtOvWTd#1n4Pl!9S4G{|Xz^YAy&&&3 zy@J)R(O|^P8)*c~BbB7oxp~DvPuL}6XbebsY%m&phKZo{6C+i%eP!!A=hs^&cK&%@ zFzxw>ewj*0`sC(`N?EKNtd2^yBooFu&DXngvMFGlu|}<`{I>JgJLCh-d-00b;!Gcd zBIMEY28;GgCGj)dFuVlL3)ph*@#b<>&^DRh#`H3yfYak&+7S^ zMDE-uz7Vv=f7TlsKKh&OY3mmx_oohNv$UqiW@&pP-0xIBrQB>R zlx9fG#LNH>+KL+7NFMrFHS`lnQtO(Gb^Ld z;0UWDJJQkdI-c*~xzVmhQq^dk-v)|7D;K>7SeUsyNa^VP~AjItc}71 z>h-q~tl5z&U?fZbHY=CY3^wU(;?t`LAvb=N!LPXU-kgmT9;E=oD~k77x74U?b4Ag<%{Yag@L zjSG}PA()W%czLTX$SUD%{x>C%H<@0`pO@h0EiWUt!PFxbn(SelP4<3>pg&=v*hY5Q zJHhkXF_CfwFp`%+ELrqU5W?HAq+{-Wl^7(YI>d86HMx?U_ta8Ev%*SoK2%vQCWWn{ zZ4I$$tittUrV1p$GnSp_zjNCF_n%!?0^OUZXDJ9eov1x4$nd`(GB6)|Q2Oyh+2!wt zy-NP1bD$%CL_*BQZE49Q&0n$!dAo*E68p1vN{Ih?y(sWghpCnB8Cp30wmtkJE{Lu^ zInuRhqN5`j56WplDZTJXP)?fnRL$Oq@{n*A#y5C-=;%~R{my?*)80NDL9^vh&`Y*z zyQ-T;o)B)KC;kLB70Kou86@1M58`NQwYd`5@6OIk0>nU3^%E;uV7` zM}GSt{YSB`w^S+H9FzkcYW%byxvp<0#gifNNX9u`Ln-a)XiVg}%s$5X9HmVfLk|8? z_>Gxsq=Bbr3)#8thrfQNOV#Jjl@wSF)(Q2RKL+y=2l^isBoETRNij0A>($DAN_3+s zg3u=1>^BRhhO(sPf+(-1dm#^*5!???CmRs&0(BBPtYzNG{WMh<(|OJ&@_Xl>;|+{a z9=&BM^|4o^N%SbYo=ch^N4%)X{;G0#JQ`eDb9YQq6=a~vpeN%iU9SJ(M4dXJJNlo8 zRNWgKFU#u9VDt`(H)nLMkgk95Ifu|0I@+JEV!WCP<_@}h&O7#DEKBF`^zflG^8LLQ z4rn1E-hUikc`YM>{QOi2v}9n{!>?EECCqmx_1}7|oXZ2Hgc?LF>Nj83UB>zgP9L=tS zJzg4#p~>Ot#=*Mrj7lIR_BHbVIf5co1ig_G+R61OEp=EfAkn!6%Vz{kue}gdyJC

    45~ykiiY|66?lQOdMFrqqi;p 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 VmcIXu`U(wP{eg~3wbGM_{{v&mrNICI literal 0 HcmV?d00001 diff --git a/src/content/translations/zh-tw/developers/docs/gas/gas.png b/src/content/translations/zh-tw/developers/docs/gas/gas.png new file mode 100644 index 0000000000000000000000000000000000000000..3fb52626335cb557999ecbd33d91cbb6b7414281 GIT binary patch literal 21082 zcmeFYWmKEZw>Mlv3MD{s2<}p>1%f*iceheX@j`HyB0)+h?(P%{v{=!$1cJL2Ey0Tw zEfmRn!F}%kIp@ps>G|-kcfDDVmCQA>XV13z&7PeoO?5>)97>!!ckbXRJ(ttIbLRo% z&YgQNuo)C4slzXw615*=7NKVH8g+@x;nmS7d9zLlPfo7auV82cLiib#HORd2RFC( z?i)ztj`8nUww>4=H0+?o0$B(_c2b94W^e?K`H9ley4G_0*X<>&~^ zwPDDPc4I6kI39vRx6Rr8{TtrDctK7=v;C5LDLNXMCGN$GK4s;}xVXo-I6pPH2gIJ{ z2%uf) zfIeRW0?@&985yhQW>J@}%!1EU0XY;F9!W`>zK@#(;o@hcuYw-oU%N8_e^L@AuFz6) zQd)pLv^N_X$^tA+`MLd-E3+~mF9RJnHx2cr8{=zP*(+D3fPg*FBZ9cNgV%DhZ3&HK z1;4J`82`F3hZqMe3wXwN$VL5!w#z6Z7?ZND>rmCysv*94UYt9bH(@jlv_XSsozP_@O zgEBAgUstA4Kff_k(_0Q5vOVepyjB3N0P!-=a$mYJMTB?#b-&R|w!QrqfB&~{$JPwk z*DQr2B6_yXIbblPpWn)s5eM3h1?>tbU2MaMtFZ6@nCQ}#$=oy&Xaq=IxZZpPG?JaY znV-L(?%A^7uAi5;n~}bPc4J1nFlT12m!zROLo;)8_i}Q6M}&U8_Fy7@Oc5H=mXfj< z60$2PZWI?cNkl+?;lgzAiY+~T`3lNNO+|YKSmdm`wz|$8H1Lw@Kwkm>H?MZ!6Pgaa zgvLeFqtP!qq<}Yc@D&B!?b8#Lr6sfn@R1dri@rjmKdY-p`ATxqy53nk*-=3zllA-7NSD>R1ae2t6q0`EE7j+bvY1#D zF{YxPbV=l3q^yMkk{yp znn$B&4hiQQ%sVr^(Inw{{TOnJMeZ8bfp^TC45 zV-$ObL-BSMvD0tnsKU&^It4kod(a8l+xc@}ct%0A$5=Hk6`sq8t({Euys{7EI`NC_ zG=Dpy@Kf@gszL~)y^xjX6h~=irF4f8dfX~8<)%c2q}^_+`ey94LNKs*3 z^@22<3E^fdqOV%5nUJ)4J*M2)rOx-09!J9aNY#0;R6^;?aI0E`r#$r?Bc3LHLg@`w3upw~MS( zG&U(m+aTz|A5$NU9Gvz49Z<5}|1#2Vg;WApRqeN{`$E1aR$tB>K>RRKHKBBMwGs`D z66%toTQSXM^Y%`=rTxgQPdbZ(_RXVyFrL0#UI#Ce1Xqpn{mZDith!wnA zd7iO9lhH6rI*-fQTZ)GSBAKmZz`IFO;gDbS*iMx(yOM9t!Djx&#l>qM+|TuzFYlTK z!nr#b_Sa!SFMQMX)?rVsrs6E&6}FP!C6~@ke73bOon;dfiG6pnZF0f%;v-d@NxRr> zosu&7KfEvfp1qCF`QrL&Y1QBVS{4cC#?I!rnTAKa?U1i|)A)<)8fo*qOzM62b8<7! z-j?&_yW^eiLXwVKjXBo|tg#Oo9^ZPyl)OqzkOdw@mf*&N49PeR{{EQ^e)=F^2O~fB zPLuL&Gj{NY|J`6nR#kN!An@~%^ro(~t(DmeeT<2Jx*C!ZV3qw7cx$-@-&CF@oxT*k z;QI3UCySn7%8YYmw88y8qJO6DvNA=LTm9NyhY#DhZk+wh3S_Mou=a%;ny`4;v*s>* z(Wn&bbhso75*R6Cn<)Q#4rXK3EQ{^4GG07YUj1=-br4g+dhltk3qd&Stj~t1-6ykJ zpkR2}0Q!yb%e~^dl-9im{HsnYzz~cii#yVrHRKKI5YAv@hqt{<9#9d6zH6H&n)MPp z&JnXDI(z6LGWoSz4U{gMEy$s4a~)si(?>_D zo8C)Z&zI7%v)hH|s4c*p#}QkTQk?~wrL${E!o>E48UClAzkJvgldz**S?-nxXte+F zVJh6GBh4VD3gGhe;(_=2J;(K15o4fGIT#)=j8Ok2@mQFjYIzB_z7)j}%zkR0XQ@@D z;~{Jf3ZE@wDS0^7i;XXdxW`-Gu_B6dim~DpJiDeq`z5?Fy^SG?5Z(D<*fUp{TLF?q zVfK#JsEC9?hBgpuytZAoSRLR=*S;_zt>qH|lBr5kh$26B3~xvd@rGK2AE`wL&(Zbg z;`d}q^a;>b&98xI6Sp2m`j^iWKS2E^RQBM24dm-m=^;#w=n>yWzBirwJ$+`G&`}&C z`)1*Q!)zhbu46)?d_(yu_(h%K(4fM)PI>#@9%K6c8i`dKJT!&o!LQ#Nl70aXUQ4u; zTaSmPwCk@0LpWZ1tn7(exgU=jiLx1zJ50x6hsQvb!_0~A6AA137|{-9<(s#YQ>YB? zXYaSy@zgc8=soiNRk@N^jCGd{k4M*zhd>dJ{66s)j*cO&tq|87Ol>d&7Q?p0bMS86 z(afuhFPyto#AWV^>x_xzKi))ZYY*@3w!cCqe0lPu?uK>vKZsARR9BRHsW)o2wa>AZBQs>JslCGO=3(hq9VH> zT?w#R-2IX1i}Df#lWQ|7=j)dK@^=~UHft@YYGa#JAmKC6M{FP&>cUR_;`wG9WH;KL z)0)K{2}-FtWR2xryaE;J5&N}X_~t|8T%RST=ME3R+nT*O;O&>eAn9CSkpdXPmP7hC&uyMC~eKxrkZ4$X03iN*z+)dN&ZxOX?pPBs7K6< zw&k%et4s?)1WP$Q%UeUeIa1gNB--54fkfpkyhU7b!EILdhlUjbJ9NRMcy|E)M6&z% zoY^K6T5{u4h7qaOr@efI1 z;`9*W(0tvq+avAIGNcr25 z?q;@G)>wglCyP`3@!CMT|BB580SPL|IGrsrp340Gl}QV(y~1?j5FgGk@7Mgyq!Otc z5ZY-2ylw7wYbwNlQ!+OChDs~`Y|fbfgP82ywJ(&5A8mQDSj+g%hu&&YbUC}$!eufw zk4HcOgQiXw=40(X0X>VkMK84?$~#h8b)ViMq}NQ+_j-6XS-XhH?5t_b&2@9kEa>3G z3tmcD_q>?DZ~y&m_Xk6x?9x8@zn2(I>6vHi6wp}hu}@ykc!=&E>bb(3O^uZOi1Yki zFPk(j@A1ix44VHj@RwKK`%w6vQ3YFE-5!sTC%Vd(5UylCpcWg(siew5W@*k2d_^}5` z6Tg!?UDu~jjjB^P&&T-%xeR8^wr{x~^ch443Vr-Rn(RZRZL!;APHbyyT6Bk4in9Ev z+UapCcxx}cmC4g#dy6mk`&i4Peq|GU56h>n}O zi-<355{^FURb{%)PJJ4%!N32S`?^H2@*82?r5IvkSjE+Zc4W4oJIDER(hoz`aP2xX z9fV=J6-65Sy9lQhBNi0a(NW2=}CLFJ+@np~gB7ABwe zv_De&HYUOOQsgv>*y*$<3hzM73`}OkY--Md;7b=-^tC%x?q(uaMgGN`1DLy7=6SY6 z-ENWpUX~f^9q>T!(jjXZt9)IJi+&70wbY>cKJV+r zyH7p6IQrf#F3hXa!(`62B0KZsS`UuL<#SX}KixD>pL8PwY5oQmJfsH=RbPt?Nyfqc zZq_x{GVNa z5&VU#vFoq<;@&JRF75BlYBL8z+?8W>l(Y0TSS!MYVy#)0qKdj#Q?TkxOyGMXU0rTp zM0kzYvsT{6=vqshgO;HF2M>?-J_80wapKOwk2&{pcqm(RpVgK$ z;hZ^VvU|0=!B6f$HNH&KLx+Xz_KDa>df&=JQe4*O6I`p?C1&f}$pMS3 znJE`x?|xy0Z89%CuQ>0yT{T_t|?&fQybs2B_PBQ~yfN+4d6 zijXLUW_=@!_>J-9ZBvYG%D0HHH%C`Rj|C$~uzqwB`AC5=nLYDnK6MR-)|}bj2qf58 zRIl`XgbOBBsE5`=LF_Hrnb5W6W>GqjWbhw#cKcttj(BF2tM8(_*(R`lgucX2fNk#u zLoV+uiWZl(>nJ%GCPc8G=Jj-Xcu9dtY7C8*_dc-yUBpPX7u7?1+Trz&^(fLbi#D{J zI)ww^qxRGH1p}SqHe8NLkBaL#_G-&efq}iIpp9MbVr6x5(yp~;88ApR=F z>XYpCmR2>EAW=i=M$wO;$ijQfoSga-w@<^>>jN|(JMRVEJw}4NwkSv=J2~KyoeZ(3 zi|1LNXy2fBlODGX@;UX~#VuB%rm2xV$39`*$^&2_PLDLL`JY(NbeN0v!giue|;6IGF;Hxl2kiyqq1{ z#pVYzN*$Q<-xn@6QlZMIgQlQm3kQ@}XQ`6covwEkU1MLEigH#zhcdmfeJq|vfa-ZY zF7zDSxwX9BUsx0qmh#-bI++YB91K#e1myeMh8i|YT|F8XbiN{q8&s$|Jav^%@ePCT zGDGm&J&N}DseQwzu2--4v%!4{kc=hOXRM!!Vw_ledAF!Kt-B6le-Hl(=%5E(00uz{ zY{(+lYjFn8W7Uf&)Gl9XJ<1(`zjI@fUVJa8^sbVEf|ha^F~= zRpRl=8Y7$s!Uq^z5q z(u2O~>Wj9h4ZApswy*?vWIapBwr}Seqp?v`{7h6>sKa{R*cV+$f%<)?0}$%`jZhuP zU^!SMn}3*xUn?d!+x~sGGq+^%G~v00T5eJNz}&1+yUl7{3Jrx)G(8?7ADjjchh&i< zGoS4?tEr3)_jAFQSAWzACV+EB*s`S`;a4vkB`>eDKUR`y$s*|x_^9@~%OhHr4g?%d z=s==~+V%p-M_g!Y59+xsqXAK8wY6eI8kYt_(1Lu8me}Q8+%uampi1HFLGzy~83F8^ z@DljDa?zs}{D07Ksxms%7 zUESOGG#s;}@k#@ZlS;g{y-a=5zC@rn_~=oR_g6w_l7Ic76j+%WeTWP)ZHHTVC&}>! z&bn)8t5{@b{Om#D?aD)kw|2svk|@^DcGoGNz+0<(PR=<>lXb^Uy3hIA39q4T z`$7my+M5Uiz%69QE2VwhpX58j1gwPT#TM33Z5-1v^zqk6urPk7(My@fw zy4^b};NacEU$_1$r9}Uc)5zDb2sT!`m-3nRLoD(=TE&p8hY&ir@(U4CRE;zk?3$Dj zua+~FI-b_t{@VZ5E1@Oti{rERTUm|kACfMzDD(Y>STd?vdO7_!dj7=1j;2j3)9ziv&1kaC7_ai<+32=g+`T&{iq><|-x?=(a* z)-i+IC!L(AdwnU@+DI>Q3joPH7) zCN#hO-NpK z6urWPAeoG2L7d@KjS!sZu_p`QKo>Ld$Q5MgmUU&jh!H)!p&X;4-SbNM!zW8Eb-}ysJIoZh_SHA1uY=xNy zh)&EFRbn@GXd!>mY)HL4*f>k!S=sSt3Xj_kAkb5y_P=}ST{PQ%m9f)qnXff}KqYEA zhKbN3R7J{w;gO-_Gcr%PJey<HhHK^%++gxP@1MO%o@(mq zeOp}&1lh9z8)Y%g4{Q?pJ&E;g#y+>JC^=o5mp&{LIOHu_ZVMFIaVOh9D4L(qKo=+iaDD&5GaQyxp(29?{3%ovxAwcJp#Yu%O?4l;-x?lZH5e9>HI_ zpc?5OdPl;$W+d$|tX#6b4gFT2d;}QN+%Jf#MeEq&&50A18&j?ayUd$#_ zmA(*}!beuCm%4&HX32@6NrTQ(HzPbmlHJP2738}tO{ihl#hkfh@;8%OWUH^;B-6B@ zGp0x_O9_ly^8e|q^;iW}<42>9bz|F;Te?H}>Qte0AXw{NXqm_5FL#a&&C=ND=*}S# zc;7#(_#Xrfky`Stz$rr#+yP`0geU9@3s5!AA`KZ(oD!=mmw$%`k}2w)<3)D-c{twAv18y!M{C^$-EDdl7L-;Lc|7R|MuD$k>kyhJYYSWD= z{ce?^MWqW)D!h|)9yE7lhtKP?$dzu0{Ex6m9z3{frIP<;G){zgNHQC@~FKexkMP_w>toSTpf`ksghtoVce9sJz zf1hvixmnS}nQx7AlmNmFPnApE7FfeR)6d+ArAC!RLIO`pE%Xi)vx#7K-U%A6t78;Q z@bolCxXbsq*oEZU-2)YRSmBTc!K#9MWvm4(Xp+LMAwZ46SeS$P;cw#1cYktpH~m~Z z{}Xh1!Es&YhT_H3I2>nahMX!Yft{&WKk)R>8$3&`rH9tF@kDU&?b^;Qe`)ykXRd%i zkz&G*5n)MfgMh|9&857u^;IE?8nNQ1_LY$kb9#i~?mbm3k`lP}my^~dsPtsZ@H51> zo&ux@a>FTT`0=^8D8jvdH3@6Xdcd|lG$rB~Nzph2x$^iyT}{AWpQN2Pn~eJUZ6w8GT` z`>lWZ|RRxZr<~uK#g;$I;1Y zK|OVDD*+wgpT)hEIpB5Fc~t^C$5qES`CDbvZo5U7JqR7JL$0U9Fj59s_%Tz8_n`7r zoOqR~t39DLLY{gO_09(Q!phT7@-JHB0ovg4*+(%}%l+pYybMMa21S~D%Fk?QtV&2x zY|*zaWfC}bDBOIetfJCyuyqJruiS6G1e*oQ1GhHlugAO#gEuqhI@P+rheuoeO>1}~ znJnn;-dfQ1a=@U@u6E{~=QGkmW%dm7sIId9E@d>8*{2n~tyoQfi3;IsjQG!kYfe_P z0&T9(QjX+~ld>N7J%sAHXR|vz#e*iv-AZ^QB{^<%_+v7sfotjFe_gwb{mBMycd%6P z-GuUh+np2vX9yTt8Ix|qx$2LBLF?pf=jP;8Y6w=Gn+0_&O$i!&hE$w%Yr7?hU7J$3 z+D$O1s1_jKB^;$;=RV*w1CI(mZ2T@)+w2i3o2O2tN2191)0-L@sBUwtea?oK9q>9{ z7nxQa5AoOF)N?Q@Skc>$WnM31LFTJ`Bd@639*ha?WR=#HusL~X<)UpksgF_>ij*zB z34~B-u!<{q90ScywR+9Wqp_#*=VwWZT5j;tXWg%W ze0W(T-XCqXrP<~0xx=AF(p}p8#F-uu|4$T$s)Av1UKvI?U~6ca4Y%+I%@#dAjx7KW(x*vl))M)MCU?~&Ps z=*+TPiFh`9QRhy@=Qf+lA2m$sXK!@4Pi7YK#u+PsUj|Dn>KKDn_m@MpDISk&VxY=! zJZ7;0ct-(sNh35P=z7%e3jUO+J(?;lUG*A6)uP#cu=dq;u>!P}SoAAdGeq6Lv3#Y< z16fC;#?x9bOxqYW+Mh?D$Q||;(g$dl9<&W{|JZj<)GZUjjNnVPfc&lzfIfHA68G-{am}_{q}UTcFO~Xk5j1G?;Y%x(^bps7EN{{OzFgFlynbTHgT(-NGlNw zVIvuE!F%18df@M15)IdjO@mH_4fwpjC*%!SKr6!g?awR7=J%C4$FxMD&F4jvgyrda<>N8MR5jU2wa+COXhlzAtqfqu=v!&;!*W z=5S_<=8w^fbZ)vnmnD6pWY3(2(%h4kv`CTp(r~4^(CN*Ir7GhjbwqsW}qh-{=xJU?smnK?ZaG*Eb zzddqCLW9l zWZs9e{Rb8S@O(M(Uz`#KKckh2g8v>Zd zzkrPpK*Ij6|3aw$7fxmH@%S&cBL=|cr7FSf=EEBnZGdV5jhjQbBvF{4@4Xu-q|?=n z643z?7zQr(bM64BE06`->G;9T%AZQx7P8(P(Q<*hAMv~YcSx~Mc8faWV0ww1bj#e3 z2ELc-KL{<&^0m5A#Bh@RN;C;A?!BP^#4XFpF`fMy-2!y*ZvW{?iNMItKY(4eZeIxq z8CIi z<&&17#hFPxhtNskKp;-vkOsvqc{nU;Zk*ABiX|wfgCVT}(@%V5(*g1me{abjn>GHz z(}UBZG|NBx_y(bh>Wohy_f0IXV6~OHVEaKrsf& z1vvjid$l=CcdOxh8r!Ba+^}_e%hqm-`8PlupQOMb;GA{xF;xh-ROBLn$x4AI+qS=h z2^2f;LLtBbc&%kOW80x6N8|D1srB0AKWU@QS6AkJ^jDkcr#rIwQQOQJO#s zl>S!7x6}a@cNaiFU2vL;-+Ld&8U(u*C11>yu3;0v#`Z-3x}*rGt%Hf~cwM2|<@k&3 zPo=ex_DZ{_pupf0z`w3O%7Xi}KSM+77&yzrWmYf0)>K&oz{~`S7O4e zK9C41x^x{t@oQzl9JG=Mt+$U+GtPZJX;H!pS5-v1P_eCDc$>!59QTdb*`yyr{oRt& zk7j+YX5Wr4EQv^yAZIhht)1F-wE-=_8L~DvH@)TkiVIhsJVp-aE1A>#oPNkAO@5#U z#*+zcz(ujWP1Ci+=XZ~0tWR)f zrBi)_sDWJ5c;4o85?~G+5q8Nwk7m zT+I7L#JYiq2*|+=b=cC~`QaI10C{ntJ)nbsSm?g{MA-w}Hke>8(>tE1uvQ~uFpt1jf3AO@VDn{ITSHYf`gd$~a}p9XY*v9o#ho8ok+OD_ zb!G%eR}gq&YKwVed*I8cze_w3^4OB%-KJ17kYLHcbRt94W^Hv^2oC9`3$iL6v3>%w zP=(}Ldr(8#i8Ac}%;AWA#UvzM3r6NUJf;3n)}t%h!${7dZb159vnW37i?TYg+`S5I zRhXft`7qMjC-UT%YH8#B|8!7}T#?$5OUlmA&dtnE#_%y;`+2u7K5+aC+yW?3AaR$t z_TIua+n*ChzD$LeAZC*e!!u7Dd#Q28oTW%*#>oAxgUDhYgEupsz>aXqrsf5$+k0~i;i)ldOA!W8p%VgtnoEE(- zi9U)8s;Ck*S*N|GK-G{e#{#{$oq-zyHkDmeS(V%M5&Aj~eYXDrZD``<2~>P>jZs~0 zgbQc+#Pdsm`%u;S%7ap1>+}5I5obq^@IV{$;%EPaiDg{qBe5fLAKB~kk7mP?h+sc?&2jCnoiy0i&?qjJm_w? zl51)#QkssV8VlU)s|{D(sdKdZrlVKwEEZsx^$E}u>|T)hH?ohw%E;U5lBo*4puqXe zC)ci4{H@D(_Fd!aX?^O|lfd;N2>jq=lOKv$r8t8fR~e_IEgN6UN2NOc$RI^&{v75! z`+lPy>3j&H*V&&{*s}S>;Hch9;am@G@OS*Segq$zMiGh4kLb-+w%v;&B2ngj5ugO) zLi`5-fJAUEeK0JVB1AtmfNk$w4nCbKV)GS!}a#KOAtAS;iREJzQL zFUuMM{`;X^)B(tu0XbrR4(vqv41i;(auWBy$t6QJ>uuCqjc!^#p^P0%vo0C*E*Oy` zK|v~=nlJQ!#(X?&FX}=+gPw_{STA19XUk({+Hu<2NKc0$O~T!YQV{wIC|=!8LE9vJW>SM-@1w ztae&#4?MN|j8Lvn*dpGJxvwLw-BPOf&tz2KN*9bN}i|%0-JxVUr+Db$o0$&SrSK|QHr@LyjlOW2YGT1Czpts7p%o$UIIpqO)kPK_; z&T5qD%jJyP7M;3HgadcFF_!dMw7EW zx0A925-3befR1RF^mr*&mqIOHn@ko1eEw^(nx|KeTa;3^T>T`5=%BVz*~9=p^miH( z^6i?y+OR9xG~8GG!7}5U7dIP$0a&rimjVlOIA#D-&k{VORzymoxNITVP1D~cooRrt zTn^4VdSyLnH~?R$Bsq%|72O{=iV{OxvzH(x;?c1~>dt}*UKoJcIg%hlj>M=$h1eA7 zbj_~U(&rB;^dcEchO4>B6vqW-PXm9;%{?4S-rVRNN>}&){0@t@b}uT6O5&uvqwh#6 z#~NwxyAyKh?EgzAm%p+g25~|vd;=6o5%g1c-jT*aGD5y^r-IChEt=bEfWla(kw&jeZ3^vMr;*1wjwROdjQHy&W{!olGkv|Kpfn|pfXNcSDvO8KmE=w&ZE3e zV1>&ujoLC6{vd-JelS^#Dzn}?loq`QDn(d^kpbj7LyQ&J!XAyizXw3*uJ1~3!q=AS zux zHI^;a>yT&fBmsp2=So3(t4EfPs;TryNwF_NSMXbA_kgkt0DgPOMro8k>U#O^Q{tiX7fj$+job_k#n;=tZM7unq%arCe?#2x4_wEP%Ui~>S+(>l zW5oy5O$Rrow>x7PF@*ab0?-o3XJDY^DOE<-w9sVzqyQ%&kcx6QZ}0B#+u?S^$@7K078OpNKM2v?3V~m6AuRw<2srT|mW7CQJ?lehw3!#4L&7NqS= zs_vR3!=d}B$L$)Vj=;4>L`0HrhU6OMW~2)Pvm+Red8hR zvzV2#XPCQH>~F3|cS9LHAScvZ|4ga1cbSAmG1>}w*WU^`4(>FZy$a&;|6{O611?|b zXrghyor-vcC}^$gTN05X_fK#6oq-D>^e+0c8Z`Zx`Xd(gts>;l!mySxoqGE-kB>xR zv}%ncolDbi`t$0br@qu52KNKC6o5z#;be=vq;VT33xAH*Ti<3uFpHUOOEVUQcjc;! zu48xXyRCr|i#}~*FfIPQu8jRCp|VJ;6OJd1o|li!6PCMFvX*C@caYl;_kgMk%@l1X ze^+^4Z&#!K{o_ha-Brl(mCeh#-3N@P4JPkb9?w2W?dDvJF5J2+^t1@z6F9EUW`=&7 zwSMx4iHBpP>tL{-D>k&W~mch z(owPIq*$e*1x#?e+1#KA1mUFm!RJ$l>YjPKi9#F?GT9rQ0fmnlXI{>}jIyX1-xpsX z83o9xuIJ$Gb;P2_Ma*P!b8kn>A4_0~z^@ag!eFJ}KaLeVQy+c(vNqKa>{e^ILmXqZ zfcp$TGt+OO`bvNA+twsI6u;@ehbXqyZjC(3EqH9kmI7Y82TFvr4nm&^eEClggzTbw zw_X0j*_a?>1)@@YCjl4|5qQuy@L|b$1Kp_O>6$_Q1ah(F&FbI zD4QFc4Ajq4If(bUrs>}iWm@I+rbE9Mkxhn~J^~UM9zbToVb!vFz%p{>E9dN}-mJ=N zH#SB%jK=e*5HJsBpm?98dLTc>YCX^MZDOH2D1bXAKN>QBf{DoI1~f6~{R#x6!e;V3 zuNz(U*Jk;gG*iPEP%b~H2w=@XN~Hd%=7M5us|puZU$Pjg`=C2{?WKt4f)?ZbiU`Oa z^xtlzh8IfHq3}-1T!bfwviyrMbL6NfE3K|H7(ZZku(j;Ytt3Vt<1ejz5+R*^S)%8^ zUH}`wKlS`gaq`v>X1XzNP1C%w%snmn;8vsx4wW8e)Ht%UF5>faK%fBDS#{52)4K>S zQq~ek<7`V&huO>qLx_QFO(m=zKWMgv(jCKlGe^U(1dleRuw&AXW*-L0DstFmy-(%o zQnMVW{4CD7>mbOa)nto8)gQ1|3MV$9O3DuQ3f19*#g#4Q9R!`qLf6-IUQa z3*c7R7Dt}Mj+f(@2UiN5$0m^kqp|ZA4%dG0Uqc_KAXx(}@j=gsDRa`a@`H@-pzf^o z{wU--k#=Jpqlm_!6xQ9eAPt5{k<^HLuZ}(chQ%4$&4ME;oA=K&72!MIzQO*EVo}L* z$adBCKK`%nPVP~gvS+daA(7-OIU0vwiwKkGZ|KwYpf)?i$tOGtG}vcoqp?@>vv?`{ z$VF~Ad|(6??fmw_M%>w)`BBL8(DyR)u90;Z%o4q1v22g--?03a3+{5(Kt}+YK3dm{ z<;7+X0~e@-J$YHGaNHv^D}&E7q3*9AigVR}?;EM28-a@w_;r!o3_~U1VI;BA5DRA4 z{EPSKSU-uuf*yI&z?$%fH$(vd>PL3Iv6HSnyfiJ|PnH;i+!o=D?Bo_BKt67Ek6(3s zN$3Bf``GYWXv*_kiCEj96@)CcwL-FCe{#=aSg{+9ZQTl9 zvYFG80ek#xgGfYM8!(e~+M!LsvBsqc*9w2~`ipk75pbX8hOZnXl3l_pcWl z3d11300X52?nhs&l&r0@InMY&uYb(?GL6qFqc&d~cQM8fq@TXE*om4EGz|H-Gh^L{ zNMRf*QnH8dBIzc`guiDI#mP0NUhgLLM9kbpXkh{Qq%#??nf!p(NX=AaBnQK;-^HvF znBj6Ho}X~jE0^l?HXA)0DCkYX?P#ga|KbkO7weKN0Rq!oa87ZXILbSDrTy*OyeE5z1 zkK-41&{v3XV&vx-e&N|CNwub6`bb&8fQt`&w+ThhO+8ReD+E7C@=!ExUDjiGeuF6RIgA-iF_b9iJiVz%3#SZKhYU~Sk2poTlp zI~PW?7#0o3?AGd(pUPy+s zei1*KIZVb+@tmD-K4Vn`r@I~2HT+O53xJk0vmhbX_Cx^LXVH)bzkoY=m^h-7Qt>ui zyLE{uroVl<=XDi;YVxEJqd^^vF&y`8zK(^omr5gQ$A8EthXA5$FXcmwYV_AKuG)g> zKuhBUsLgqbcAnPHJ$=biYIJZ0ri3n~NW~a2-n9%2t`P#%*}nzT+nskNwLd`Mk{@`a zFCVBCl7Aqim9$xEMsP%0nQ{&Z9@xfXDVTl^#-Nl2Xa9k9jQD$<1%`oRWvWmRvW?r%8 z4@Gp052^ey-GZAsUIjhB4AG4Xfw6zA)T*>|^dxB(tNL9BRNu`J^lqn54(ElZ+ZXm9K2 zAYvq4E7t;-PaHh@92dbsQP?-%ov2L*y3kSuzk1Zrm6I*%wW!e(Q0tQ?qZxR7ec`n? z|9RtdE?lZrLSHjs7QsiQ6n;7yO?4c!DoPkoJG%1sycUFNhm;)Zuyp!Up=v_ZqxojY zzms|q{2^>yP^7Xtk_tcn9`NVj>bQmgd;9(=Tl6%>UxBCNHi{?xNj7mHQZ&zBVWZkKkq8yA|Dq{H%q0X6fa$KGfK z2ceatPLH?zNDyW8zzR|%&ertlS=86TlR66N4;Ja+cbi`~U)n?#25x#02RkzyK-aZQR@Cn_X zWz~uN1V}`ET`K_U^U$7s4l^(CqTG>JqRxsHy5aW%a8a9}`UFTf>VQwHCx0Ku=vAZd zg{Bht;gc2x-h8zl&J_Yh!sk@Pj`OeM1ekWRvt`j^NIl0W+}Ydl50)1b#NHJZEWeK-I>fED1WgP?s9%;q>aci?%3xwP`RU zW#qQ9I)3A0ixG7rmJ0PRl1&o=#Y=2!`P4^xIlFtOnUGhpn81}Z*}Dl$S8(x6J1f}p zIn|@`P)x3GX_i_IQXLA=ETc!eBy(KZ7kQ;NJlSR%CQVPG1LjeRS(&jX{K))7GGrLb z@JAR#c_c`*SkBo^m1@AOQ7iZ0!drg#UO?p?{j3C_HZ%j`gMniE=E3lIRNB&eopY|+mfZ^g&S9PIZ?1myM{qypS*J;( zEHER4&`|V!kyA1yg8hzYak6r2nh+_qs{#6U{%K-?54Y^$S%Rvkzkdpk;2eQL{Nqee zo29K~7ga4!c20~91xJE0{u03Up-SLZg|L|OSg<*ds+J_45y1EvO)BD>gPixMST$Km zS!Ora?RZfXfrFeOqfZF`U}4JK^o*#YpnZr0V%cw=5Y`pEQa?I68nv^zsTBLsFiDXS z2IeN&Jo4@`2hK$8ND`!b*5Tvp#9kqR>m}p+?5i&M;p#t)L$1vlZiKy-J~nKt zvY9$ibKdoP=6$ORdb%zj5|Vq`W# z<4xZIQL~*#EyFP4Al_4daY~^&`sLAsE!i{_fA%p8BVJ@^O$H_P^w<{HRqi@^eCvDt zqlz_LJYjuk+sKr@8-x+AF4(Puu&C}in07xhSz-t>gm?}kphluf0&B+}Qwp%pMD9pE z5tS6R_zAW|FIoRldeDKn@kQy=^t9&qY-OefySnym!5FLLmexhLJ{&yry!~LvbIPTJ z?lVJrP6?LFZ--?E8orF6PjAIwu?VT0rasOyruvOA_9@LvKGlr@2`uPDqOH1VP7jWd z#Z24l*aj1eQmH|fS=CUo&ABJ=q1<_HE)KrE_iD`zA z3y#1>k`a5=u(Ke3oX8sO3IKJXP$mtHS8LJ3a@Pne=1g0jSo1vRYRF#emdUGFh9TZ< z*`81oobo%Uu?y-OiI5&W5{$J^T%0m5;yHN`@cBGOJjYsx$-78~Y0NIN@MHO|lP)5k zhza`4Kcqbywb{DGZW%i^#@ib@uhk|pPm0_VV1h>x8t* zzryobb1ZjJ*jF$HYCjz_Sgp0`WmVzOi?(TPco?!I4Ib_$!9 zQ3;j?zYY0~>7ZyMi>M8hJxk?&HmcBv2`*84Kw%X-hnwMDI<a=5s07Z=S}2>OdId*+L6zIT1f_QIL5)?BCF7~%KX4iFM5J>w zyf=5_;|c%rZf*Q{FxWj-`T&Xz6o%KkyGN~_G{V^Cn|LLX>I|DT7?Zh$GHhwBagR@= zR-7_M`W3;wRCcxBe5QW)>^V&n&3$6rN@Rk+N>&7e$UvY+5q6~fX{T7Op`Q>sx>T5LN}4%bI&JRNi(mjw?@bA^LDd#71G z*?hrHZ9rv{f6|30-$hQ(+vdk6@r-Ch_HIShH4$hTCj5#jdl?zQX>?91o;%;R>+XsY z)|PjD`Rx2^dEJSq2p1GWRI1n?)0uNGzz+f4_4y#xj-~6H*3a zH+Nve=!4q zG;uB~CbcwjZd*t`#ATITePbpoxV(YE#$PtDm38Nv!PZ zv>cWMD^!!Y@i~QhmyF%Otp!h(|(Y3kqKMVye8B!D+mYU}Nqt1a$S6|0K9tdlPL zp~e2$+;!>EBNvxPTL=5UK7A(>+8S$nili=G*=ij(TSaB^scH)hw5aA>IBRKyvq@Wg z)yMMGNY)Qcg7>G0P%f}mtz~Zy=G!HAqZ3p6-%bs^kz+M*>lOYv<%iEVrot!#CAGP6 zt&2nk#2G2UabjZlWdjIJa3z}Bgmw68V>P<>!J3t8@-vG$c#EwbrQTgS0$$@FRUbV; zzkkL<^ots>+9sQyMNoqy$bl$0@?yXt}`%xbC1@DNE--eF`wy{Rq{Kc zuK%%`y;6!^7U#TGp{2X6JncCu4wlUI^stz{&eSS!#BU0JVjrWQ^RkK8ckjD)!aZ?KQOJ;&L> zvMiv2=pix6t;-VUJ&ih)4r@jwRD1db^OA0HT0UkhBwq3mFc_JB3~%+d14cL#YtlcY zQSiRtqDGK?&yPYsWRa?7s;<)-@uI`h!gwJ5Ont@40Zr0zUGQdTw`900ER3kf1gqk- zif07V5NZ>JT;nw@CV|Fth_Zy~Y0K4%R~TmnGQN}s$NtfJ*><;4)}K;d*yo&Em-gZC zfv}`7HgT!xO+V`1Ar%~@90!XS?i=3=4T`%7u!*8OXk3amFHzpbK4lRvUx#vPayAko zWuAKfN^S-+a2lxFcIK%@+Odv|68Bh>JjY(?vdR^(dq0LV+)dmZm7pNN9Cw%Y`rS;hjz}VXI9GLxmKjD|$#S-qr zECsbTPJIYJcbUrQB3i8gPNW4%`RXdY&f8GR5N4u~@LVG;=iOkyDsQx5H^FxhPEiw~ zydghO{M1=e4gC#PU$G5AEg-D!z1sCNL;?$$UnQReq|kbD{q-=(D&^KS7efZ^*UD7O z6NL#ynO3vu(>2V7B2%ikB}1-+)0y#I}EBUHgVm7LGaB zd%!u02LLlhlZIYiyZY&4Gf;2H>!&4d>&1|VeZgNf2QQez^dr@W!PAeNfsAj+EpyhR zS#D>((Z_78WgglFO}?h{ds>N}YHErZ(%i!_RE5HYi-g5g^T8x^^5|oU|GG^~gS3>` z#6jNZecc2d3C}GFsjeGCH$+T}PMKwZ-1EAt|EQF+`BHTn71h2(G%%R>X0)P>PUp8)5C?c_- z3{D){2K?p9P|PUk^K2G2!7Sd~e!)1MelWBM&G z8q}+pXV*_Sbb1G=96u|uH71xvd+j0VZQXCB{mNpplqhkSW*b}3(FdRTv7Y! z<;MyY{74{>Ixlbu+{prghJ=_rpmJ$9=AvKp6!`%Qkaa%9& zV_Q0aXSeOzw3_O+bp#&Z9^&+5>KVT?Dn`wYFnByuS|@Py@dsbBVh?=NG; zFJxx+;0xB5`%Nq1V^`21M`17%bMC%T`^JYGr!TK(hMGib+c3JWS^@cOXHwC(YHJ&V zdKL6zEcJrYP>Qt8=_$Flib6~;sSq0PNFn~N546co-c~S~BZ>Wj`0n84`r}yMZsOeK znOipKLWvoWPZtj}en-+jU=cB>VgxPR{mShD5t@Q&7c^>oUGK>vgS6RdzT@s#)QiaV zaM0t=;SF-9LA-LbCWeq%A>&oVEgpeXl7?Q^yap)a)1mpc%7-A!k)E2V6K(we|9@~- ZT&7ap_a|a=PgQJnva!Nh)|z`={SUJ7(1-v4 literal 0 HcmV?d00001 diff --git a/src/content/translations/zh-tw/developers/docs/transactions/gas-tx.png b/src/content/translations/zh-tw/developers/docs/transactions/gas-tx.png new file mode 100644 index 0000000000000000000000000000000000000000..5142e225041b7a80b069818bf188b3803312c6a9 GIT binary patch literal 13031 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

    <04Hho{;EhKROt#n;;2F*?>oU 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 literal 0 HcmV?d00001 diff --git a/src/content/translations/zh-tw/energy-consumption/energy_consumption_pre_post_merge.png b/src/content/translations/zh-tw/energy-consumption/energy_consumption_pre_post_merge.png new file mode 100644 index 0000000000000000000000000000000000000000..87d0394301045d1d14d421b82407de36dde8754b GIT binary patch literal 150792 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 diff --git a/src/content/translations/zh-tw/web3/web2.png b/src/content/translations/zh-tw/web3/web2.png new file mode 100644 index 0000000000000000000000000000000000000000..74c124b3c0e9fdb2334ea4029fd0a4c79eda8076 GIT binary patch literal 64684 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 literal 0 HcmV?d00001 diff --git a/src/content/translations/zh-tw/web3/web3.png b/src/content/translations/zh-tw/web3/web3.png new file mode 100644 index 0000000000000000000000000000000000000000..3c37211d03b1af091d36c4d6e499b23c1e1d7559 GIT binary patch literal 67522 zcmbSSc{~&T|L;}_mE_}2%8?>Dh8anygyhOyp_TidYZMg`ib9w(_c8ZoGm`t7``qCe z+l*}(=JxB~@4vtIU+>rJpV#C4dLPf%>-l=UzdSS2=Q=NV{@Af&T#p|;e17cMN$Rm< z$2ZQN{HOV~#TNS~a6fx$rh9mFw6Jls!agFb9c}I%O)!pzmXErrM=gs-MZ@b6wWObI zw3%6!%pDc$8j@n3x_!XM$0sKzr|wS=lgX?=wc|+?M<*vGC8e2}83KuN zQ&O_7xo4TN+R!$@V(((d2{YuCt)0E=N2kpHImp`YxsmD7|Bio-IyyT2zq=N>=QHVe#HfrZrAw*Or8Ojsgk#b3Mf-^E9d-fKkby>xVA3GTlIOnOYa2N!@} zHyr_%k`gcz)Y68=^Dx(mUQEdLy~B~06HFrrW|^rMgjQbo5Pp8O18L`B3uqKt z+0@x_S$2K}`)AUkD)767e#WyxT*bT*NVsjI?F^4m}o9G)@2cDfHsO$&Sa3 zc7Gn@0Ul@{TwXSnayGcLQIXK=UonFT2J}51wi;paK~LhHFz3+A0g;V)O_Jn@U@**F zV^}2fptbiT)l#jQ`dXW*YRaW$u^ivfTJ}SWi&jRZPe0RYN8K)-s`-RAXlNBx_mjm5 ztp*s{smbhKU+IHfWQ}J5x&+AawciL~XK!2t>+1g^j*0f&npc|@!pTvE`VPt+3{z7) z?6i+MZFJ^8*}O*1>Ba`!A(`aV?0pUyWh~d8T;9(8bd=ADtg!P=u8@ulQ5B*|0WObEjqL)vLU4hYZ&c7ugh^pO zge~spa@sw+51j~)EK%(KL)7YhDH;~Xa?T5fA6^Pmao+eGDfk~T8Ps=s?dEZMiZwpf zpdAa((U*#id+Pz%JU%IkV(ZMBH@2!8VgR)ZJ~b~Y2QEOmP!{yMX9%%VPnE~$&wC5s zF+U5*jrt^r0(le89Q?@Ts9i+;S}9vvX!>yYgO?(mlndEZ;lvhY)l%sdiT_OTN!mBI zbE(-ceTbjf_P9k`|9cSPViINKfz}c?;a`RMjQBqgu?{=cRJ-`iQ=n>R;8@AH4kW%q z!v+JKyA)vQuahbaq2QQ1Yc1=4F*SrI{u21}TYmyNp$VH6^NP?Y*@;5eI#(XQJ$U_v z4P49oY5O?0>RBrcPUpANh4rqg5_PRU?Fw^^UiCCz_knYpCv}Z`(Pm4?%gz(?wrF4c z?H;u~uhwUnZSTC^CROvuZ?S8PvOFPx4)zAfyv5W}luv}EwA_u+l|sGaV?s|JSR)<6 zl(TmdkMZw_W_=yoy=!lLXJYNcUX_8A2nRuX=-}0P)?luIb%(+PBcsiR4^&LK2LkL| zy@RmD&(@{$=_gjKGSPIEN4~F^O(FmNzVq2B)hiE;Sg>nNNAeJH_UTO@!ffs~-sdb2 z0*w7~Q6Vfo(16(QpL{9eE0nXuH$hQ1<1~3O<_^~6+`enY+O_?NKjUInO`2wInw(&N z_C*jT-%HHCGxAsjlF7v16kX8Q;X9}G8&sD@YJxSN4&799oOX}lZib@HQ!TZd2hZE1 zFE{5=-!_@|>aV7}aZS1_+&}(c`{xZz-tDxeNJvERQ!K?o7&uuD4^tzI%_QUU?-AxY8S*{S7X*Fh;G-bmjf{{irRC8L0Kfj#<&vtlgUKYtYfeb*( zu+*1&bZaCC#y>xd72vzTRLASsSK~yDn`9-!q~bK`;J3r)yqeEnY8a($s{1dtUa_k$ zqc?a}LA81?4~Eg-Opj}stR)r6E{^6(OknGRok9{evxv5`Y|cAAGZ8XTuhM#V?>@>h zquEZ%pWsf7Du7<-IZKk8zd`@Fr)I5rm9g=c4;4Zmt%)tlI!5I5Pu{Fj<^hiB>GD*9 zhv^zNtlPrx^~9U6rp>7kbQCW`AR=0eNXTJ$urF6T=s?gEzR>fl1mQj1=L|?(>(WZ2 zI0g*qD`G(n^<@Xo8t^q*^k z=AF9j4nF7oYr|gIO;z8bLt8JZ$+fXRtI6l|L1M3xjU9wge3bHKFud2^(8ic!05WUc`w1i_m65w!pEzHkDnrp!khw4-w6Um3xF zFEj}$dkuhsiD5$S$XBME;Cbo)6rG&?Y-np_vt-}k_cH2s-_ykIGCCg`TKm@EV2f?> zR~-;~oty}DqB!W}s(;BFO(B^8>hw+dnnwuCneUK}eDj2lk+jqGjt@F&GuFMX&#C&H zcpYzTKfR$$2GT6x2E86ts<(!QezVN)-Dp)eI=^-RjE@(N1%SLpS&giP(A0{!e<;X!Kkz^?>Y(8*iewn$0gxk6M@|x_3*@h? zzU^-Kh>&SufC{5z-w5M8?`i8_8h8&RsZHwK!nP#T)SXsqjtFZo|C2lq`vKw}fpoa^ zDb+1C>_Vgev_wk~xdOitmn{1_B@h1dOe+)^7X0o_ge~i-02V9fybu-$gQ0kddE3?o zA9f-r)hh%E>{qw05uuVY%^r6TcF`-n_|Fyo63mIa<0>=hdHf5%=cl-0v-+CTQS7au z!E}8Ixn`R?7R&doy`&nQb2~&-{|l#y3w6%7g|ea)jwDCw`4l|ACS|54x)MCXLY{ex zR+l$;=PoLkl)}f-2z~rq; zEj|^rGUfR4;oC(ga2;L&9M?E4F1!ncxy1DNZ9^_+d<{?-_bBaP$6l#2u-Q3|WoepcNCoH8RZ(z0tO9 zy9^PiP~H|_c5BGfo}ld9d?!#mejs&>ci<#q#Val*K!+f^9UlM`y!RgC@dC#JtsV)LEVjp%Cg_cW|x zWBUClW45&#ZVq2a%7#ss7Zf{;kI8F80)4_Vzj{2~{D6DDhOI!;K~Y~VYv1Lb31R&6 zQ{4skkfe|nb%v8bebsFDAc|*zyOX+)P4eSsy+Y|t)a;}=V7sGI4Q|EL0@oJ$0#h8W z&kLqKmThn>*A|Frnty#4rx>ej%bh^W4-u=<4Xn`?ptaw@GnOX4Q)*K^muaZ1y0g?E zIk`#t)pwR%g=ukH(45y38DAIX@Ig2he({+=@$`U5o+9p<-xmH-up<d{)_e$+P!rK+yf6^T~Mp*0)%jo>l>3#Zr$ydM;{jGKKq~glgPSbRRJ- z!VaXRCjCHLbXFXc?KE`P7a@BaFUBhYUsviRc$}2uYitaSr;Oa~tpT_!f zG@6L&dpvHM^5W@lc&pZ^`X=<9gh6Ts`ZKOc`2(muuoU-iA&8GY#RNh~0uL7}=TSnx zD$wuU0KplyelNA=9POgVExbvkG3U-#ZiY@>8JjQqNq@Nwid z=stFFH*?A8e0b(E(bYfK{+-k(z&TI;eN0S)B`p#16I#5`HnEj)(+*4x0*RfWDyc-Z znVNlWj@#TgF{}d6uZ8;Ij|V0D#dTLQn|MFk*dbcGSs3X7tRd>TmdX zZOqz($1ezft`gX$ACMP6u|x?^Rk?e&*THCO#>{|d5+(FY@<6(u#r9l;j;D1I1jKff z8jg*FoYC}>>vNssUa^ebiVpIclDP`zUnx!!FO;QsDKK6mM~d7FNTEM}_ze=84d>lU zt|tHT6>#QQ**z8pe6sTpc_5hDFzRx9g8xaAi-_2hE$yLqljP8>sxB8ww_yKp$Xdnc zkX4+(X0V9nfZS=}!`;^pMpWAY5bx<>-iiJSbAg{3dT2en z$0Lf8!h0UV?#uwRn~g7*Lq<-Dzd^P}q3jQ;8Iq%kk`d|lt{X@uy`^8=7rzYt2qctI zu7ruCJRMz9SJdQLvn)dCI;qO)ykut`TidHG6T;zRbTH1A>Ms7{-iBRw&Z0{jIB*#2 z0WVmRkLI%&Lp3ApwS~;z`+})z;2>}XC>RsL$^4y84S6m3-VH(#=N8cq(R|+@T{&Sf%K*15iDp|L!ng;o#ydq@MAJaBqnc2Et}i}dOG?xQSKmU zvMf!sq+O_HQti%&d%(EM75aLG(6rH$-De1NA8@={;^$Y@=R1u%azcYs;JnCr?8S|> zGwD_+5vlaSFRMDbY-C@ZzJnc?bK=ITA7mg6xqPZ-hH=`F6&p}{cE+V6Zc6ojre|N_ zCh*KV@gv$Ka9$69pwBItq*U-Ki{rsAxztenDHb%%zk0?i?ZW9df-_30Q5j;{4l*6_ z%9dN2nruDT7&KoWpxu0HcUo{(WtE`$pSRKeStRHwAJeT=r}yCG(5BaDn-Q!@ z#e&mj^lb;(P+h?|I8N+XZ(T^zdiL@PvL?U)NR(ev0og<{iK3Havm&(7$oh#HCv^V+ zaQ&dCH}GZV%YA2yb=QPLC4;S+w@ghPp+i&v_4wvi_jQu#kzEh_?gO!F0qdAdesWFh zmy}fei|Eoo9MAjO4B2_5M|o`*tlX`eJL@$pQOj#4lKAy7C55b#9b`z{>wBZM2058* ze6dOR);En#0|5L2%NIM?mSKC*!)0vaZ?s;KxEVA z0eQz>ZegK5Dh>L&?bDSDUqZ@=2|@gMgt-6*Iq4lY6gelLdM*V_(YfLA%~|^#;6$irq(xGWE1`BUxJ8I>#rs= z^Q&R6$c04&9LEaA#QF^xl_foPlkMURWa@~i6uu#Btx0#SK7s8-Z^=x)`eT>m4Zefz zxH#USqD(dg%8ioKlD=Qp{P`p2hH%DKw92+TKmOXI19XO;SFyXQX3 zC~RmANlp}4==^biOcPeJJs8Q%;PXGRT`@BlAX3~d4a?UMr#PN=X!1ChMsfSnD|#F9 zCKM5vHM%5z*b^2SV2|Ar;+lMk#tj_r`QtzOg?TLKE-|5ya>)gk@I<76-3S`xd{Ai89nfeVh_|Eo!<4=$SYII(( z`<6m?8P3$#9Y8FW+ls|O5>N@|K#A~5`Jew;?)7i0lys6cQleRx52y38s@y^gb}Mx1 zK5V|Ij?EpZQDVEG3=FvOr2BEwh?_*4YJEV-rFd@$tTZT@-nH}ljf3>`&Z@o$^84FJ zhRKlKDDR}H-Who9WB1_1(c{ZW{Z!a)@F!R?^mmgJqI2PEgE!)MuP-XvTYj|nr08!$ zxtE;+OKzwHSx01NRYPc{P#_;)3aHq?LikwcF)l%4`cC$elD4tYaDgN`7R9PC-FPP~ zcOQC#R!N!+O!%o`JjmfFSC!BnwNx}*{Fc&Hs@0uav4$+or6eC0eGBM$Jl;vncnE#w zD;3rf5EVag3U&ijq`v1>-x%U>uKA3j(G3`&?32@lg>;9&HZp%Y3 zA7|%ZW>EXMJfAgBmiKljLr<^Wvo;-D-WGPzSJxA1U?6IuS;<#F?cOJtwF2&~ACd9%-QRMw+0;FZCknB)?+SUZ2o_4&I#RH^>dh6!P)tJ(&A@ zzFpmXHKO*F`(RehHEJ@{S(#&1;Y@mZo{c#}0K(IBd15Nfj!Z!=u@RB|zV&VXN&h%{ zxwfRQk>H-c+@XaJ?Ep4ZBYo+Ca2NM9AIQ z78QwjeVLVmMrquym}7A@M)|wg8wW-D3Hm)s<5AnPRhh#Z43v#PI4rL)8MV@S+r9IX zBLEwuhY`IFm(530oT5FNTXc-kaYB=)SQX?YLE?h&jLsuHb^m0#ot?3VMe7_KpMwsJ zjW=yIBICs=84(hOY?0fSV;pt0uKEdWUrjC9c zNCs(n49oDgmURX-$b{Mt_PYQKd7wyfIU(z-LG1BH+1)yQV|n6l3x{H_EUtmhGq$(< z|MPJTmb>Lqnbcw2j08&MH~>{$RCJ_BAW7#*&!iH&<*iR7r>;;(WhQPcEjQ^cD>ZIm zKk!r0SN>I>*;4khf&SA<7WcFaQ*f)i{4RH%h>CDamM zB6tDRU`wy!3HFx><>JwrMpN#1K_BJ$yP&*lE7D7~!+iTMYt!3!N8(jRVCDFz61SA*o&De?|JxM2@4|e(GgRsoaNcY=yN#46c<+ z^I=P8*#*M^?S@bD(yBVCS&EiIZ(I&ts^zvae6n!Ap8#J-uhGtAoFs^rnKS4A`p+-D z2OIP~{9svUY~{VNTtd}1F#3^-T8&KW{0n-Hh3+K&mR+vbHcW!wa}o-u`SXznmAOGe zzF`(g9H{$XON?|6UKC}`LOb8_6!vx5`z>{IoYZWNK#^=APZ02zSoemuH*Y&{Jz%`M zl-22ceZ^8&tLnXqmM=SQn)Udg!UrqaILZRkbtX1st$Y$;N@H)x zUHoZ=9Mz|85SCyBT!u_eT)qj?Mb$0V=Co({)7#DGEMFG3Iz=?{7Rt>F+)QzF0PO^u zZ?w1jD$Uw4{f=U?MN2lNmn3lLTA>c<5v#$qg@>iwMI0fF|JJ`0$vB`tb%GYFC;y44ksdqtAU9Cx3VctRO_Z&ph?xFo+x^jkS`Mig1o_N$(gIfWrp0BT|t-R{JTVXSf3O3c0tR*K0NM+wt zPP!qimvLTwV8kTZ)KSxt@$_v+m!z!GR{jYW?$*V{j9}l3%)N21$&cm2D;XbR;S-{u zx(hEUsr8l71xY^=J_ql84eOnjOa3p+xzVwlxMuN1Or^%@IFAQfe8tli&U81w)YqQe zd!1Q}NEBHo7_d_#W4}ONF!nM`uW=Va8gKGL^n^Wpeq2~|4lUE8=ubIEtPi=RgxVgV z3_oW^^6mOgxRuNwKlsmg=H?Ope#XQ~2hwcQ=rHvQsaRdnUjBKTX}+io`wRi3wwtfR zD$Zs8sZbE${;NGy_X3a+8750G9d8d{{UxvwFXZB{-;>6%>d_-BDOYk7x{4JXXhUk- zg5~VeT&BE8hUvZdMObCRh_angQ@GD(j;NLfZ30ohItSmHSne7tJ4)Y=1;EdaP;vU1 z>_uS_HGXF6`*Hx~o`Is8*7|}`z>-rPIvJj_^v$c5tn{qr9^o8MOjutaK0uW3z#2ud z&_^}hul1h^LVlG{fsf(rf;Nq*Q?EQL?lA^z+uFfACza-HfLn8aewmX%59i%7v0jk2 zsN*&TZz0M4v1z7q5fw4ed6>FXPpZ=AGT- z&j~9P28s2Wh+Tn2gP9@=G`UgMR_P~hs2jHKCP0@WA^vVa5V2CQEOm*0C%M$CMLI;j z;z85k&zj#nG4a*J`h3Cpn2=;2_z<|rbl3bAdyA;0)&SRqWV54P;duJPu5*J=Lev%W zJ|JBa!jSK4>>lc7g?+LWCX=6eTkf9jD%=~{em&?rKjA67F3|}2Z7WI5rQRh)zq!mB zDl{O^N-xqt>frew-Y-1Xr~W>GFfKLhl7XgD5t+7S)a36u7t2nHlx&$s_s)#GR~Iqg z+w^pqa&Y@|j^^E@qGSJE)abjF%ix%+7_%UzB5$MnqM_Cc0P!7m{F~JDaU}^O&RVcO z)v1Z=j{0pjlBF^2Jr#^O2h72~SiYKUDySLVAjI%%Qq-THJ_YsuLcjuwCYRy6vsR`X z__9m?%BLWncyk*%LRlp1`W+h!$!<%s{R?p0np2BQVf2NQpj(YHs2kv}e1muDLiE>& z*j%=_jh5SkUu1%-z^sU;_w>@(R^jXXyF6;D(!ua?Awq|0=lr9Yk)8h%y)h`NOr-;6 ztwX5UGll7v;<qObRPdLxYX5&CBenY1@{tO0XcA&VAdK~hk(8#&Hc&-D;)JGh`c<2lCV zIkx&P7Mr&rFujz4_M>cMGk^$n5kbv!{WnsQ%0U0f(#yflI`Ovx3l3kl#MQ`Q!YzLk zdm&H<*Hl`8{gkNQZK6_l*Zsj7Q{TVBAuqNoESM?R7e-D{CN|egeWp|oMN%nsoV&pE zG~g0O8d=A8g&-Wz{42;i^SuyWHF2ZvynVsDR-^hk&L`yuJAV%T4iCflL?WqM@pnJ4&ihYV<;q-p zU=%99=|%}5YrNMXxfeiNoXKW2258HRHSTs4W(^O-*f=D*gK&>+K)-YaY zN|$UbFjrC2(DzTTEFntlbkvVLwL%DOs9eudB3|q}QtGrwjgph2suZt=Y9dRC{2Q;~ z;M;1){r&rUU`?jxgC6ltm8<{JZ&T?zml&aX!k(|c>--j6Oc913WO4OR#~qcN^BE&~ z*2ls-X3!k!Vb=R$hrIK@%CLUNge`LvXA~Fa+wkpS&L$n^cT@$-znr5us(i!4>GU_>iv?E0r&BIW8+;X+#fY$NIF_%_)&}I>Gy(&A36VpQ!iG>e}}BeRfqKf zJT3CB5=i$zYv*;0u7KLr#f}6I|0;hSlIIB4W_dRh>4wTq9+lgg{ktt$VH*b|K-kP4 ztS{k$8eu!J|eZqQ)ks!)>*&Jx<3Xk|b_r0=eMJ~3_lHT1O zOD&k}Ye-$b;VwP%!T%(Y`R&ISa1~Y`;1@{M(;$7#HisoHMj_9IANX@KEto`ia&rM=8{DFfuQ|qE; zTK&Ak%w=jlDmlbP?t#|z87uBuV~vKN$5HCuwiPupg zo;&JNo`mHDQnJ4)GUS9$Wl7R<$$sfi+um_`?#5ANjYpqO^TuFJeKj|#_Et8vM_BhE zL~k*Qo06Sl2;=qJeVcdvvB936GoBN=zhZk**ylrS>LBvjDO;HDntLNXg(Ezf?SF6I zv2D-jd)5^D+IX7P&Zkn?9t_nVDfXe9b-PXREpITVT6ZauJUY~{3x7U6%-C348WKDi zcTVUbzJ1^8rDlqcnr2TZAih?J7Q{4st)OnTEVki80Isj$C$21NC`?=mZpRn6rhNT# zH5ecu-*dR6U;dbxP?BX+bt}E*s(ciYfMO;}z7Vwb$*!r3O(eR(ID~@wgoN{?D0rA=Wc&Cd#ta~!CLF+DgTv>-mSYYg!Eh-(<{1>3K!6K zwRxbslbOpBqbrW^_&a3={=lDfNtTL(ql3|V6i^e;fOKv8p{aR^#S&nA#E0NN|w{R!cNVLBP`PXfba>S4%`t>XZE5S9}UR3jMWv?f~r;n`?l!7u(VGaHV z+%GW*^gvQt-QgKVwDaww{u}SvyBUdar-tv%@xQ;Gd1<<1iKJ^9SjLLDWV&IkMmr5% zbIJU1e>_TySPthKa9w4055+{5Z*9I1YEI3Y7`U==H6=@*7B)LpIc^V4PT)11D1jz^ zmOw-EeZ+d!v#A$%iaDh)yK44mRd2U}?z19h2G_CfY&k}83}J4o$(E0Bys$y7yWz^3 zZ0{#neTm@GH@{?dXg_zgZojwR=+mL3b|3{8WXTDjV7!`(a#Paw(qE@|(gW)jV(xmL z4m<{xXncv^K*bN~4W>sO-FAog%zPFlI0IEEr|m`p{O9q%g%I_^9i-nNF-@Tx(5DT1 zxqF*6P7m7S%f8kx3WvspSp7I!@R2a$gJr0#&*;^^>f2!n?3>jYWW~EvR|(XJi&`>d zw-$wE(GRR@SP#2S29?GTCmNxLX=3ml7k8xMKG4CX>-ASsuYsfPi z^-E9(W8I|l=lcgbgwbd^7iL>)%r1!|3#&1S>0mRv`rIw%l-!1 zGtB9sDW5Ugd)p}qGt`O@A^1oPt$fWztziO*DNJ6!SKoOC{kLVH;tCfEk^LuqR&fYQxi{$+@Z;Ss!fcf7;JaJPB4 zU4P6zYI0)!Xspwrj-srw*Jr_Dlf-~|mJoGEz}#_`{|M^hu4>eaT?`(9j%hTYk}z_1uq!1-91n{yWq8k?`rF zBtnIz@Tb`>Z{uGK$47cw{5Ae6) zYi(|7Ofw^M6=`!x54%M}{Pe<9o&z7kLRD|!F8O(ivn^2aJVUV6yXF!-2ftOB!}92m z^0Ip`6+cvX;XXXenl4Co2($564lK8z2(4BZw?mp6cej6WPXty<=G95hoAv2eLQg+- z7+rhSc2%W7r-z>6Ong|4>z~Y{WG7q_nEGY!sjNl{)tRRYHAx>r|9V`@ykP$=xr9_^qbK;yQQ9@;mWi7^qHoh{q1x*$>xQ2W4=AVH_sV-X!KPb zMuP?H8Sz(9aY+b)o8mtE%dt`xXl>mt_p~*dW3XVMf@)SR)f-^Gjx_L>o_#zDB+1c` z#(EC!f5;C!fD=w5({0dyB-p#J73)S1uuOfVKI$NQ|eUsvlrG?(hr)#k-;4U<{!>Uvbl&~I2{rO7>n|*X_2qYD2z=?CRPQ8e;Ml;s29M`)=ITWMH`tp%#IgaWqn|P{ zL?(gj&W+{If%gwyHVd-Ji9Vib+-d;bLjT}UkM({qX1Cj`h=_4R{9J^!6nNOB{p*l8 zb+8MlTTT3k4xqYV^vBOR2A%1%+`yj$Zw5GnGX=c6)L&`hVlqel+A~g6eSmoO5xfzc zd|M*4S5*VK_i7#c-Ti)Lk<0=4l(K*nKf_jq@ji{H8N~=AUjMHXUc(;^)GXJ#v9`+_ zYRefx&9_kHCS5_FHAmJ3mTD{xzJA)V%1A%yUqRyAKd&Or_{L!)7rT4P8N*?5@@CDg&#Sv3(+nBt+3sL!1A8$@q%vNK^hAgoQ^zNE$} zWDTnvaz0p?aT_?f`jGrKM~%mE<01VYN<5ddM@u?)CHLw%BgH-4gQ1Jrt_-|1F;~(H z$47Rt{kym838z-i--g0{QV__qVf-6E#{`md31KH@?MA$B%-fd_Jn%6{thlU+j84#{#EH#cj#WHJQYDBS@03H=E2*?4*oWT{|;Fe;i6lz9kcm zYw-?pi?^v0YiXm4(M{if;|ebZ3~d_Sd#YMIS(rYt9-m=a@syXq+dZxij&2C@P`Kr2 z`O}d#_xB1+(q+EYIm#8Ew;WJ6_)~G^kA{|Ao&}~?RW5pRFjL-5kHRbN&5+Gn6E5A+ zU@__p9(7c5Ok+MaZ&A4wV**4nm>=hI`K8)XZe~f>3`+u2rlClQT`scVS56HHd_1%5 zeH?{?&oJHZ_sDoRjgSn47vO<2dGV~buxkmGd+HIek^t8}A#wpT(H(J5^A2^;3n(Oa z!hv7f!RnQ*oJz*m@%_eguMY%THyv%OW%<@Yu%aaqPQZsdiJ7KM>BZw7b#rZrLK~s9 zI=C5QI31C$7aCM`_I4?PO=*2gn0P$T1#U@0QYvNb)J6}E6EZJ*Z+p^@dz^{HkiyGI z*97TmObx)FPwq;z;+BS2nj(d!Djh1-r$#-w;9|Wlk7|ytmTf+M`B?@$$+0`(>YvlB znO&bzXA7x%+Q>dPQ~0)1jdwU*pPyUE^zon8g1Tc{OIHbofGC24>Tymrur3?7Z*g^z z2!U@9$X7q7XG3chej+kR2DyqFdWEJWBTM?<`dg?ztnS)Su1#xL$VbBAb9VnlfHwG# zd7ITVxJJ=+YJk?)9?BCTCz|0ifJB#MO%>~me^4R6wJ$Y&@Ojl@v?gStR-1k2PPtB$ zZB*rj>PjVWuL@N~$1{-h;~a?hUd;YdyVQfN7y=Yhy*QreC1tC&g?lmic!X;cY&4PJ z?4PW5&D4SJqTf$Sb^pPt@+uVL;J~JrqF&HT$k19n-r5|steEZZ8J#afEH|h%d9G6J zZ&obl6-dcfN4&p|tJ4-*+KCzlYWskf@i~I8Dqs!Dw1#QWS(J{Ee$NG=iD89bFDgt= z{4?DI8jIP{bVl=ag+1(b4ag+`H?7j`GjEX(e9{ttj^13xr-Q%w<8n%1C_CAs$0mSF zQQr)>W>CKQBION5yT8Mb^zX}d7Hn!9S{OPolb!&IN z8aE*FP9)uRm9I^T3-a8HtKMM$rw@FkhahQ(Ko_~`cVn+>-Ea>5DjEsD7W~~OC&(%D z3|X8%3MbNhAfxU_vWX2C_xd{YYeifo2~Kbh^MEyUBT~IaQ+#Qlk>nADZ$4!g+zt9m z*mo7c@*b*_Fi54>W>^_HF*^MP{Rz-=RgN}ZG;`vWR>bD3aBwNidL4ES6|-f($>5Kb zz3(8u($e;UvmU5z$dh~xjFg}iO_RFtG3=o3uoDm>qC*AkPp<#e{vPlc(6bB;T{LsHQ_cmw0R5OTpoc&zu z7Xajl+=}Ma0vN%${3&EwO) zrMONJR~STTk^b|it;vA16Y3;~g8n2SA??~i63r;wStsF7%jfhHP*pQrDM7?*+gtR< zn&L}m)^q}M_6yrViy{`hM?V4{%x+?Mc5i*%J3;26@EmQl^iz21dpQ!`@M)M~nuq!Y zUVG&BpD@Z}O+|CH@7-rr3P807^TjNo@aa2;>90Uby~d>tKb9P?VM_xj8CI5Tn3wUc z7b>=0!ut|stVK`>gI*q7=T=(4i`_KC@Wz#heB@kw(@`ZN1+>AwT#m9n@}u-R$RFt( zEn{JjLb1jG3ic=?tnxz$Bt&*>@629adOFAA5(f_>3|YK=Kwm3ZSVRz9QHR64qS?l8 z7D%nZKTq1{+r|Ov3CEi(S8tHr5L)d%YghLS?Nl#$>VZNNJqF94Puvx5z9yU(6R)vy zY2llEpy#8!ur@LG!R|m`gxph5|qP zPFT6*d{MO66_Gmh6IACSHzcQbhmQ0%hj-PS%YsjrD^5h%#Xz*Cr*J;JK9b?T%6OL# zv_jX~#gK<#%dzrJ7XxO3m&@6kTjhuqa+b=VL(;lRj zzalnp$27e__`dku6CgWu^lGdpOpTcme_K!@4Rf zK-k{^iRFdn@}s-k3@j{RZ&9p=btrZzIq5Jx>YzL1sF9BjeFdi(oNz7*z))XJ-S zqwc`;mo&Adxc>EDzSF8EJseapOpza1JGTtnPXDa9a)Vhhch9VFqpyYM7`5T-?zOei z6jN7^h_DudE1W+DsI%Du7pal#XL<^jW+TFLbyUSSiUxT~54#JskN7oqr}lJvL{_Wo z>qAYqd1l)uN)GZ3aSqeg+Z>Qyp7+}59A^BUl@E4A$z(%8Mo}nFU;?bPWP#KfE;d38 zSwnwkq7v{He9+*oj|I+M-ip(@NXzp9aox{GH0ArI+y)HLpJs2|b5vIE9~v-W2acag zB9?Eh|2jkZ?b`f1m;bNm;XXQnbLnSWE{td9&cDpJhR{3}e(~7G%-xTRoqxeL`A6+r zq}f+NGvjL6;afFL_2CCP=)+$hnhx|2clzngi@kKj(a{;m(WyPlOnkYDZB`*6e4|B* zN3$8?8M!}{r7}O)5L=5|6c`J6+R}f;4iiv{a}?llPS85b&Ea~(u~N#~t7O z)aiP2(L((S<#Z_9=Bhz9}f@P zAuPY?z_1xvQ+(Sg>x$sL!sYO@bO&!LQ*+Wb5RM1%h6zoo8$8`vHgLd+1+N-vyf zVk|X(h9r{6h)3T-X<4c1OLk1Rs9(tdAe;-OvTSd(Oym^ z?ff>6E5e?7ICFYKeg=Q-3>9Y_k#L09miIsEEJqkec({^Lo?1#5Hncp#8LIv65t$SZYa&ZK>>GNErIvu9a1rJLZ+bqIv=5P2Ly~S&seX{wzs%3 ziNGR`kpKZ^64H1%z;{l4W4Nfa44i@Vj_`P0(J=9!2b)L?a6lt(So}sQKRUz z8O0;wIVvuz5#*AcVhz*UbK09Glk;6Gz3-cDh=yVy%t&Jo1_(8kDu=}rv z?9ecF%K=)kKiMVBJ5Cn}Sf;i9HZfMAw%AX9j8XirRN%eN zhn~c??zY`Z#&tXka&`6@+LFhCPX!OHLR>)(25h!ghA!<`T7Ae))~lipOfNM_`{uJw$p-=(%BmAi#+?2r-78?*UR?5zFA0uv92 zyZ&$zOYYwnu0@Sgv)j)Ef-iA+c-NoVi62qknnHi?*jtg3&rPc5qKGWFu$^tDrK| zhzv>3X!c7e1lzZCc7Pf}vn7jqG0%8#ao&u}j3;6Csz!+`7q{YrQ#{V1WP>xxv)*I^ zs_!?pAcZ{tgZGDQ;6?p>=V-FJ^UoT2z)f;bhZ>$09=Oi`RT$4mvieo5d=PK!)S7ln zosW@yxHOb(9_4nr?4Aw>75etuL8#*(%HFQTRrQJsiQ*rXU{wP9L64^Kfd9Uc%nDm`9`5tT!4CtnwoyU z=mR>+;HT`C)gqBG?|j*FX&^tE8L6BneB3g5Q*DYva6rgvKCs-YH_!Lf8`M|dJ6Tqt zX(6e(04;7_l`NzPgrcMg;L{%$0UJL0Lnvo+%AhV82B59IwNi5}v99fhS%up2WZc%( z`|=*dzOO8+w9XZ4{v%cvfN}^w@K~m~8m#ViicP#DZY{ayAEdl>SKzRh-`O&zx#ytI z2mQ)qhuZ4yCH1=(dRy@ieRP{0+ij0Xe36{GpL2vlio5M>|CzndpJ;RvlVR@oP%3L?*YN{;X zs(-Ru8%29Th&QHBT9YG41&ynC`Cikz1~^Iy+K z92>i1}f)WqIKLF?8PlQ222iuT&}_3E7ozX(42uqmm@qE4xCn_Z`kr3E4&2&d%Q3 zIkNZOH|@i@JKVX$8DD?F=atR0Y4F*+POyjSfXBjTdKPlrIV?@*deCH&=5=wO^-(Wu;&m%fEz#V4Z8U3D*_!32 zUZqoNi?mgI!PQ@hjY!{wIV2aM1f8|k@uRwQ?cw@*MKZ<$G79`+U9)DDt$8H@-OAI> za7;E~shin0D<3BiB^RYe37xD23At~@$0{HjqhXe@php=JL6M;?Pu$YfAyy_P+f6Q| zE^oyM`Bk{X#5ljB^(oTZ-??O#VVc}=FcD$! zWhfS&%@@;V<~eIye(JhwPZx}y^+_q6Gft>LpFPqG5+62qooH*?LWr(aphW&#+HDG# z7j+H0Qnqa(CBdpV9FtW`lewsM;j867F~{VUlgMd* z;zW?i+ixePemvwB*SC<}jFSVlU`c%SFabaFVB#Lj9(bD!f%Ny775SsxK>R>_x#GnMWwoq8tnB2M2!g+S)&_ zKj;yvgESDxAGa&baFwAumKUJXtoAoqFk|Uq68O(ymD*Jv7@QybcluQSS}V;mtM;cW z$LtI1(gm@!PnjolT&z)aRqN5QwMZ6LYU9LqW{L8l5oz3Tf@G4e4Y(Qo!qg`WNj}br znMvWupQ!!Rbduj9Q;Tw)Z80Y7-Yh;kpyXt*DRTnss ziQc09dTC)qtTlUs=w+QZ64|Z!q+tdc#u!!lL(rwVG#j;HEMpHaZNo16wM#szmtnL^ljsRr}Lls^B~11JQu=p?FqoCt#D{#%P8eX`z0c&x*AAt2i|iy zIE>;ch3v07qKx5pdw4c21=RJPf6nW)Abjk042Dysd!Uo9o| z(%N=W8=N7rt8_+PMg>4Bl(3J4bspW~X6|NUycZfk&}#DR;HLIYF>Fx7&0+b_RZ1w; zpuxvC<}lSA2yutx!O8EFQ?^aV#oTcJ6!0!X2ncCqin?m0kCDwQe}h>{0j+Im0@WjOsHxpMHAG`EdE)!|A0fI>2~%?YIe&zH`a1? zQ$6bpRYE=n5&w`{_bDf9oVBx)JBcbLAtyuRK%DZK#leOhjweXEzmV;Ry^~`IkbOA8 zO+#iJ17akq98n1pmJ=tXHF!Rsya)A>NBzzjqH89{ zOrC9AdJ}}d*1_HiYt^cacUz3^xP7v>A-qy4aKQ-nhUYkv!@5xnHDbPwohMOhQW71$ zHf{_f4oIzs?KGtwX(}?BhOu1Rn$6k>_5KlnODhV5Lx|x{w-4W-8zVzJV@PSan)xtv zy#qVSa&RnJ^W$GHH+Sj#oMMdeL^wi^*e&ZF-SupSUSmNk@sQJ;BzJh3%s@rido0jv zJ^B7nTiY#TT_AuYtTC2ReY`hv5}<$naCJI1QSM!ZNy7HKMR#a5AE22clWE)a=J@Zg`nzh#?O2W*W z$EO>~>x&aZ@+>smp1-%&U1#YojdC^X)&c=d?zw)Db`&bX8eDOcr-8t$q5zZQ63Y2N+=+j z9{KsRvB$)gEj(H1^1zwCZvM1s)55(7)M#jLNriOz>3tsi6=JE6(Cbv45Oj`hclaaz zh5Uzj4HRYxZ9wN%za2^6H@R@IHMulcum_DeLR|m(=x3rgLnW}N)K3x@B<=%1DExBD zI>}VCKAZ7y|EbY{2XEqTqdVPaDn~ta_?OvD_qTnIb^ne_l+sHFuXX`nx&7TJTD!cj ziH;_Cv)S5WJepn>;n>xk#){N02rrmu^jk=3H?PRc*KJ(towvOlHJ)>q$L{3eGjKr; zD8I{<3Z6gN%C{a+PBb3waUbH5Io#i#fdCaD6kU2ap|=ScV(nV&_jI+gQjOxSpEAPA zD8!ZVn?7p>vT??Q04ijYTb1M<`neb2P`i&Yjjp)g-f~D6XQB70F%Z_1w60{oK{Q|A zSbFg{2I5a{>m{gg(01aTk!S|BYu4$Kf2*gkwhz>xm+6DUQ2rfdLgN9ch&*EP6TFKu za9{&Nc_ZMqftAvKV#llS-05}bm=$qZKEK76Y{LVU5O{~$HP>t}Mdv|>U zF{-Wb5s%wrXL`D)CBu8Dcg#D|D&P*J2n(hvWwq>JPK`Ql!a_@UF1TXKncV^RUMY0# zS3>d-Ef7#uzMYHLe%o|hwFS-XqNI(LN)UW8UDw~*+mOz0pB0;p0VF$7H@x&eJ)nqQ zhXsI5JX>~-n~lgfi2szZbBls-llDOAVJ{@GqW((Y-vF%u$C3Q>B4qvuUv zb|yaCaC{`L96cPTM4$c6rXr3<@zgRj-RT@AvWxDZ-y*ONZb7%!^s`aav`$m>yGcaFKMIF8*t>^~|zR?!Ue}GrQu~d_Z_6y!(M_+~IhDK(S%K51h z{N9|dK`(V+Lf$Z059JSm_ZAYwBLZkHvf&@`fb=7de*!j`@mC6iXmJ&{cU6Q z-RK7D+Do7#O}jCe4A%ZGm<4LBe(6^oAUA7yDwYZ2Yt4&?3lHiz@M4YD9|L2$n_GIK zAZvRr5+u!w2njJ1RMj!4!KUlMiU%b$#hUcIHU5iH^OSRbN?5Mu=21YAY|m0CXF1&T z+Q#^2sQ|0Kl^+Ed;)(Y!&{G$##B(``B!Hq1j+8&zAk45yowBiYom+((Ua)e70Pb z2OL5Yf~Hz28H_PgN%i$SR=JVc>~~eR7p{VUXQuO@?}3#FLi5s7UOR!*QA{8haP03< zm0<6LhOkZU%Orai?|$2ZM%nEM7WAy4r;c73zdGI<0#ldt>s{kok_se`9&#k(9Ti0+ z$4|3kFe8jD=CV!!F1Mx7H*x1DRY`B)d4mT>38ioCAFaS<~L#A2N;d%T5Ib$4_>FD`uBm{?sDyxZ5^=# zTJZMfb_Ib(q9@`3m{B+R_DWCGw33p-(mP$1q)g`JwV^+hYpzbiOOh$OLp5)eF$xN# zM+rP^nCLb>uJlm2Mm=>!(h((86q2j%1n55&J~Ipj@?9dT2b;jlMpfqq>x}Iu_@~vhUnh$Zmg`_vNQmSb+Y1`G?evXS_Ue z1v*iY9QfU)3XGdlxvQLp&JJwV(U1S20Bv7q(rgVOWi1@PgeETdEt+1!y%&t%sU<4E z7A^?O9`Q&fa6Ke3>)afXzvTJLsr5VN&29lwlp(fA{5-~PX!#>U5L|~3_PnpStu1BjMa7r3rHsfu^gCw))Nq^L2Y;htDb&BA-QxsK3X;4h%QH#bRob!-0H z#^?TZI8Ji0#e0-_j7?T_!@ve6Z>_L#eAc}#+U`DB-7J#M(qEg#ezx^9)-B2XY;DvC z$Di;u{v~(QF5>WoWhO$!a?%fqWuesjoC{(5$OK_gQSD0$V@0^(ZZtk!!Q{DsEZint znhZCneX5hXBTed6D~x%Mo|(?U6CVXIbHNLm2Pfhd#JLY6XfFL(YpRoTFq?@KLsB&% z)N;)}1n_B9O1XX=`J>S*(a~aV#nemu!3;mgJA9H6U`A%usuq&Srbe%LBwLmH3n|z? z7UA?_Sk)uvFVEVDY<|RqYpj8jb{&&PWb2!wW0@~j+|NL2a?K9^O7B`0(jI-uh@=BI zRlA?p-*3th{)8Sp_&hseqATV_rS&^eLOt;c|Afv3PNwHbhw+GBPSy=rlXC`VRJ$w= zI|I0&c8$B{&yE}~ta`<2H|I$7kZLiKinR3NCWt(nVFw6aFxUESbl}dE*ZWs|lsP|9 z*v%YKYW>zKw~W0he*I0OEZ)QO>K;r=iatmFi11vteIMhg?B|v#KxAAXKAD%-)r|Mz zExD_qav#a%JO_=b!W_xJR#Z9TDlLp?e5mMEwge#!lH1tM&WuJa0ztL9V{s3s zpRc6v%)}czxf}ERR&dJIKdonv#5V=v8T9^7)-hu_2`arEc@e;iPOocnEXZm3o|ark znZD&;q@Rd|x{o9yWb_k4JS|nk1XT1&6J2`H80>*`u8YkUJj*+X zy1zP1lUdA~e_s2_&Ui?n{9xD4>salZc(}>r`Vs_Lk-#b+Gcg(=K@9+RCa@)4VrR=! z^21-%3YOyCV0}(LFY(Zq!?!)H25|Yn_%WOM+xHQFF@Ewp*^5beZXDu*er&`4ei+ml z4S`YKx$|hd#5b1C^a;D4%&Xb!SB^4)LYMZ%=B=ap*qhry83*2K0z3j0eXnH3C`^K3 z5rA=xF}2pLH3wI5UpL|V)#p?~>;_#DIhp`ocb3BLrJc94|O|IQ$02)ME zhI1jCc9ezvxw9TOc0NxnO@Kj8@oU)hGaqOn#!LtUkP(pk0c@RW zXC;~f*=Zb~G9LP|G~!zV^t!F<@Veg9WOPP%6r&Lq>8!Z`+i}x_lckUIzOps`9Z~MF ze|kqQxI9O?MR~&eq9xPLWO)9&C}G)PalvfYjPw5vg|-!C>iq@vk|nJu>wI@4v)0ZB zNbK_|QQBw~@4pP&TC6oRY(ZFdh^^swr7F@&`V65?ZO$|HBB4ibY=c9p~B{svZ>q1C6lT{s*}OKGo(2S9r43If2$wJFgdhs-%(m=xMWbWL*A(jSE}LS;pe~Ucn8! znJb*0jt!6Y;5JkV7Vo+5imSu}AzdaUOG0DAY z_DJ^W`yGmA6uXA&?7)5Bp>P&Rp2(5^jFYC`{Txor z+kOEpH>iS=_Ge-W^2Lu{k5dAOwpcwiKRz3T;AP6Ruj6@ox@(hppB2`3AO&3w6feYB~e2T?KU%S zmaUj}#pYFHe+j$tBAFJAwn^Xfo3DNb_2(oBlb3qR0MrYFbWcT(q9x>C&D|C*2Wz?2 z$bcwseDcTs2Hil1Ucbh&YMI@o&z%_e#apDAf6R-@672nMU1+Usi9MlePnYpR+!xF; z8as!}atwi2NAsdOYx)5*dF`#|cVMJQZO*XM>?8Y<{W@hk(q;c5=|>zWSP5WLRyKBA$q-}hXwDXmo1}JeNGG_F zQ>Sxf*|Fa6a-%~7>sUtupb#s{A2YQ7xx=P`I|iLg zHg`Pky03VXeegr+QjtDkR>y~N&MV;j=KOGig}dB*p4^BeuknU!@2?X^P1xB)P^#+O zQd+pKFQ?blX|}tT=3cawY*J{W_vSfTSz5lB6NOjbLWysug_U_frt?t>r85As19eLM zMRQPLDLe9k-hib$7VVwgkWgJ^Sl@8lpAha$NG(ygujoo;|Dpx7-d$Vkx!_v4xEcr5 zr}FNza`o7X`RYt5IZnT&oX70HFP z9p|R_b4@-#p2L%qT51tR1p3$}VpNZLmSUYsqVa!$4e=qaT) zN}yh?Y;e&ThEUg&jb!{NuSk=HY~M9O;7itLI2+jfr**7q!5j$R+lrSWC2T zChuUlnpj(cS114A(SvFYmf*Y>JtBAHYM0L(e)FkB&4@E@oo?Bi`TWaLmZn}=oJhg+J4=?D5^cSicOfXQ}g#1 zoVGBcr2V`Mo0%lbleW_?I(N8|hv6@+PoD|{@M}92D4XJxOtxMhOm6yTX|4`7V2ON4 zV1^HQLPk*frcQP3C|Tol1oA93X@bj|hF1d)zQL^h2|Nw?olcHJ`7ui2{-0^f%^@tU zIfTW|aONH>v;oPioN(qSAcn*z^pS02V$TAw-N9!y?6(pyWCtJ`p^UvSV;|WsHO3R< z{XPbJ-ypU%%WR~?^6EAGw~>tvD+xLqp`75X9bA#)ouR(Y*;lf-B=X*1oVk8HD_`f# zpWUbLydu(lFLx1p8wwQc(!6R5jZ8$?qEP9qtEH|wf{>KT2l%(m@LuaSalM9lOEw># zZBX~VZ!PZYe z?e|7a!~wI*@1PC$5NA{SeACv^!ab3PET-r7ZdPN0akH}Rmdo%8&1Ij_(}>p;nRd_{ zN~j64eX7zMhkkSeSi2_sawOSgjI2wg)>O)?PN=^{*`{z48=|IHcaCnIT#@1Fj+d6} zhzSq~IpXt6abqE$`cTHCgN>BK-YU&91kNLbxhXQ|p18^PC8@rc#tfxODn{<1uLo|c z-HLBhqle>_u7ic~Ep-i&^$VavKo3Ee#i|zun_FhM*<~I-~w1e2xVpZ=sS8$)| zz~;Z}PSyD4BV_QNYQ5W3p-Gq4(`^lkcrwlz&VA zjK0e(>R6UKD=QNKD-Frg_S0cZRShZM4w~<}y$q|X*;4CmNZ7iwdh6sO?jOI4pMY=| z*Dx9uQ%)}p*%z7v8Bl8CT@pd$0WQy3k4M2kkwEtS*PYPIeGRXwxbQ4_a&=Q*Y;s(S zO1o1}rA7{aWSIDnU)h47Tl8Qv6G zfhKr_+NF6~^937l;n48zrT^Xz=Gll6A0rKdlwEJ`F}6+0ClH_6`z>c(>OM_Sel&OM zLixeq#kYvASSMm5qRm+82dTok6J?Sj6c_UwUZmh9<-Sa#Nc{?zzN|judZ)E;^(96f z|0P|-XOCF;V8ozKOroqj@gmi4z^GZdKk`O;vKA;m4WYPfanEVwY9H^WYO_~~rFFj5 z;ao&ZXWE~DpR640lX%gSOS4g}d^_=sn2CGmz?@Xo9zh!_$B)z;H&tx?g6vsgGog4& zU83 zWVeEsUi!JmF8EzM42TojPjdLeHXE{u-{1UA;rM)wJh;!S8w;ocdG9QmzdZkix_ zIQEWp<{4zFAS_=z@8DyWdutE$rA?aS6u5lq0Vz`nt>xe zNAVN=^l9OYBkj}9?N~k2{^c#PMZLNl1AGj(loryoo6#jiAZ}M1Q%hEjoADND@3td7 zE!i`Eq6+O=>lUuAKUEm{sXC)tpQn?kcaX00wKh%NNr*{?JRI$N>A-9Z{8@(=940WS z{-5|Io5Ja4X`e#M1R%=M&^1(zKC%^{Crn0oE)x z<9R?VbdGfm2tR~QL;YV_%Kft(w`_PoXpld3Q`fkIPI1wJejWaRff$&m82iA`Q{Z2x zo<9)JIls$e+?zZr44LhuQeHwvDWT;(G*j>m+d#UNfMM#;J|Y6@q(1P}CQ<>JiznOz z8e&K;Z81{m8p&N&+=A)+sEEThcdd&n8e=)uVc&}hq`bqk+rNT>Q*>P9AJIx@ohn!* zXG~FF33Y?*tVh!yQv2o6w99K=&xIxFLP`5dT$Tw3g!}V_i%t^5Kk<>ja~l&tJHT+? zI*e9tttAgIXnI*70I*oLX48sn_F}a>DE);LTie}IKMV6nmbFgx_crhr!%K|(`p^#b z1O0Yt^xuL2{d>|};Ut?%sMs|c>&A*ea@S^>&TLvrzh95an}g!}Xxrx2TiGLKTPW^2 zz+-yhN9$yFg3Ud)E8x;uBV6gb5nv+=-L}MFd`0?wv28u`FYoeY{?Xg0k8lZkiA(+J zQ{3BbsQt!X_fstc=_aGy7f9edj8=GYs><4h{^WIm?B~RUBhVRFMoq(qf7=?4-oMv( z&pwXq6yE&2ErhTNFnoiX>1XmfZ7*Qov=%P+UmeA$&EMNAo@s8*j$cX76&^Gy|4Iq5jKuP2D|iwhNyUe(tjN zx>O}_VGiZ8S)X5G+cuUIP6`T)P(H2Og^w7)rwJ1YGGenC z@i7{f`!B|(Y-0V8tly5JIkA#jUc(NJPNTp#pi$_91#|5*`noR2$j6wFS|Gg{(XDjP zDGQfHv}(Y0DfxT4O?rI4`cgT7?xiqdP^0S|p``u$@`y__4aLasv)y_`l=!v|5c`LS z=-!Y1gAu=?O-VOCl-#;E-wDV3Gv(aqS$PlNQNb$cdCes_nv4|?s1^^sBMvyoabb}u z={(#&RBL0JEN`{y)AULJ*rc4E^UzvQGhLp}MKXWW_+q$lHOz^+`4pp7yQ0LKO{5BM zxxP_eBxMi;fVAXCb1VwhG8+V@dtU-e0KKWOp6XAZxWC}hPJBgzk^52dQvp?2QI8C* z2G%8LMYHpmLqm^j!j}Nqd6K`!9`tcjUf21wI>=9i2tFlrf>c-GGSh57)wZv^0H=0^>`j= z(t8=8jxWM9K{V>gjYM=XOp4S3RnyJb7m{N)*)%7Z2y;!)tKJR_L6-Ke{zZ?6<>=zJ zQ1nao8!~d6Kf1fVXo1RqER=nWk%LvfsI;d?C*Oqsm>v9^#ze90P@vV>v3?Xh+n`I0 zpYy9*`e={*Jge8RFspEk7-k?>Hf6|+b5q_VugfQsS# z(taR)ZJ|wXtkK@Z4(`TLj%XlSNDo5pY2%#}30WoPdSC^WPYPxzm&vfdshNb=F1s@J z^RsCgL({LgaOGAPC+y4nK7m8RD4%A^txmR7{SJ@UiKre=$`ESD!X4tvpsj29i3dsF zn6s#|?m=g*Z^u zjxQ|F>j&;nh%K=-*uY@Cfxaa-6I-vk;eO+HsC8Iz9UUTuS-3dlEc^IZn(X||k`SV{ z4?Z+O;lMFUn7UrJ5H<8P`ed!3C2ZwY+NL=#_#o14V2N;myEdYt1Ox)TM{(2mo}EM0 zedZRI0A;r&ztO9GvOXif8n`x>Jg-wJGUo*?dJ<$Raoz=?{zrWD*G(In790Cn#M$!e z+2ZQD&gEG%-{gDn28=LzTXB7M&0#^zgXK<4Akh(QL89aaG|fC@BI@=!U`%szX$2l8i*N^&&Ww^-Q?QK z&#yO{$iONCwV&_epO*A zju1q0ta$@*-DtQkQ%?A`>i9}GFGasTn9g&ShDrSBy4C7`w58?u_{1T@YNCYG4N=wx zwcb6|K~(}`;oCIU+z&k~_W~3w%#lQgUQqMJQClT%sKrFMYETQgS?o;W)spiI+3K;| z3ejLH-tTuHxawZB`T;OxLBG_htxVtYInKgpPne~fot>*YFUbvdE*vR%576W2j{g`H z6W&xu0MvkMn7mF{*)j@wnQz;h9IKWN_otIv+11OAOq151wSWjKSs&Jnl>W*|6=BqAiLI9;KNVF|XAt40nM(zj+qAv&vpdTdryahRnGdRsf9SI2A-_y> zMPKUlQ+9m~dFK(mC$~$1FCNQl?A`di(D)O_bN|Yq(c_DMcT!EYwZP@b`1P_ype=xB z8$SjAyRg=CdhFys0(d+|w@T<-p!V!2F-YR83g=IkOzqKcp2EA4yjt4ROu^JuMTLyg z1`npD7M;c>H^(YPN{E3*+M02f%@?){bbxxb%v?57!urb$*c2N+ zU{Ol_(B<-|E~SQWe{=#ZVAm{9EcKBXLU-IHu)x#5mC*!VIU3-_X$+9~aPiJHuhtKS z@w?kn(g;zkrl`0x-5HUOS!GcZmJ_GAKRDqth6_HB&b7F8Ld!D5)qV=9*65vdfH|P4eKqqTR_uWPow?#z)(1#JL};ku4j;CRPHV zx=Cg$;aT@Gf?30p7}GEDZd0Tsk55V?qez3~-zIn6 zRu2}wj)a48rDjh8N+OQ;8XUUS!ec5GniUj`@5Ep2XQ1RNTC0IZ;HvM_BVKlf3ilGr&)BmwRk%vU)Xgix?4$WifiYoHK%Y4*O7)-*>+M=dE*pYHRb}O z0#?9GGMVR}N9Nent&$rJ)$`c4(g~?%W$Jx3%$S0|vhYf@C&%{LXM?Bo01U;>ciu_3 zXewp z&csG0vJ2{@QSBjZw{&s2dZDgjuHHB7XTGteY@XB|n;*YrKz*IE(-};MIEt;pP$9>~5}!J6Vg{{hFXOwh(Th*34ly zB?5e@X=Ym@gyfY7aWCce3+{BnM)apYKC7U7ZqK2@!mUVD-G~a|c8jxNe|fdoWobhzKydvFnV$TpBI$r(~kJpx0oZp`VizjjP~; z24rxAFJTBT=v-I)ApBu@c{@fbinHW#?wZ&Ry zm9jpqa+^(udFbH#F<#ibKr+;Szex7WJqvQ|-219(3AareulXg#2>MdNRVQygQpK{> zH8kQ+Ov+8~`ssk1=daKB;_H{R8GVj7#Y+zF^#Iq|D9g4qL3C zcv_(%i?{CgRuj~@YY++@W_TDV`X&h#Fy^ z4dc|}%c4dBCbXxffbtmtG7?j0)x$98v|uLnpJFD?HmBVSPA~M37vOi}Ex173>wAVd zPKNxZ1ZlpTvAKh4yJ)@*;-r`0A5ZphM$)1GI?NJprV;$UHbaACBdkm=v`}qi1f-=r z~aQkfIDjyaMljF_ae#? z_-|k&>EwB)8lnQ#c%Y{Nc4K8(5nSlmxYs$a;uykn1X53R#OtzfAdLKJbA`fS>KC3 zlcN)>Z%LHDFP}>N-gGpIJp;Yc_r13o#sY~@9Yn|D^ zkvH1^a6Fqh_sImgve!>sNpoE>UJZHKDr_wg|4<1s)wr6s!U2HQ{}?aOhzE%|cacE9 zKFdeHoayaHfop&A7(ZQK+59`4ZHlYps>>HFIlT5+BG9(r6DAj;&&J&3g^^ml=1=+W zaa~QPYr=hOIHT-49=NvfFQkcoD?@(GMyAH*~B$!*L`Wo@piKroy(tQR8tlpf)o&D}tuM&q+71BalPsmwL=PYlDB{6#?|I)-s$u%}OYt<$uVozyC( zTW=CVoC~x*NB$YM!ltHv#>yPDsm|^<(+}m|HmtH9B>{aEUC%{eg~BR=4l+?yK~p7o z^5;ta3d;QB>uwh8N7qt5Pn_K=SsCo*Slix7Xu<6+=tn9?fgNU;afQ;cq0kx6#4@FR z`p@0xeie_EA;wfF65~Mr{g82?Sx)C;9j8a-s$L(@U7qxrI2FC&lDEFwv`4c7dva2r zr1`~ROSe%(DdYG$%WJJHkn5h(i=$~B-Y2;t6|1GKj<@9n^L4}p@}M1_BU1`Fr4u?x z{);|`hOlCXGqT?;=Git%OK_9k@y-vH(sv&Si5S8A_R1odr=;Ypzb`bas;83P>V)Yy zk1C%}c?A(|Q9V|@Qw!euJ0_(d%%j>X>Ec$TT`Xf`G`B+Tm)ozzc*{2vqPw8>zv{jR8Wy1DzAmkNIQ10eZBQqocAh zY6nZGlIn$<7@b^w7GxQgp!5%T1H*w2q=?bTaN!<0*i?YM|Ld%s>;P8#`}vN-rOFR&_5m}iW@y~rwyP__*W>bhnrC4E#y>#CS& zPpH?%tfV(-*A(;52r5AG&#Gh{i^Rlq@{$eetwb!Gf}y{+JK}Zh)4wM1368=8ec(|^x@mCO_awbA_W?cI4BLEgh{OX@XfVkt* zvH%;(#x^4)i-`~5=Qx+~3tlE}F_RZ(l2Rlf-j$g0y;o(xL)z_`3w3ek5%MKZktA%^ z#VtEx^tMYV}E8Se@1y7pqF3c9PV1H63zA)}gYtsc4hp%H^ z23&Jyg2TVdh8Z4+tFxd4ICGr}ky_U~C?`McHo@%A{$!49!{t zPv_1r=2y4X2}fmsVuBgloGTWe^#zX(u90)`k${mq*b=$R4V3BobIev9>Q~-Ot zqvM7Sj!Z8%w#mnQdwces+o;Nl5TfK`$L`YIaW`8%G5k`tagb%;t{JqV{J1HTYl`;t z1tpeg%424SR=sQ6@2Trtv+6Z#^utQizl3#~H$qP>w)FAGX03vO(&&|trcvNBz|pr# z;1jwmPPBh2kTNqx^~9mIKs-k;kM}0l#hQS>n_Dp(V7FB}HH`8#Ih~lEH)7Kj%W3Y0 zn?);w?O6f1jH=}Ksg61cXy2KK^liMFM$0?)q0mT@68kXGLu@&EJ*JKcn}H;B18P$P zQ@qKy*Z0m81Qp#48wqwEx@&}gNer;r5L-M7&!MKpDLjV=CbWHy{*wA5l2h(!n)zH^ zl6s#D_}@o{jFM|dSD@^D@Sew!YZt0qbwUf-)AJ0{>$R(>h1Z-U1+s-tADT{3Mq=fjE3{!|g`9?1T^%A}z4 zKn-hLG_n;@kbr(M*0`h;4uWNzVvF~uqZAK8l!f!Iatj@0lzMU^`TopZUXdu9kFF2P zJ^@yp<=pKjjqU;?wjySN0iH`(-4BdE5w|egEt?uu}7p?02Q2V zd0&)vo@)OwLly%~Ov;^2+EbaxGnm>`Op`e&2S8RbA%(f~WWt$Etdk2gZAj${J&gsi z;RmHl?|mqK@>_o~eEu?ZA$!%An_x_HHA=Z?ExHZ|wXQ{@gW}OyoJfd76o_|Yf0|%~ zBzgcw_dW55W zFN4Z|nA~M&jxlpfefKVPX-a7RUYGcQE;yfF_;=wgGR!#=A=Hj-c{p$5J8ebdHH*T* zF>FO0;i`IWeY|Ph4;+<$9j{gNTPF?ip7#M4V#*Ek%`@8TijP>tTRB>9B z#mUsed8em7cJOwlN!WbwhKUHQjT`LL)OXnl1& zG`IXr>p+02=>##f-pjee8=cg@hv;Im{ZEq92%cwK<1eRn8Y(24NRfP1r}z`QXv_9r zRxCv1ZAzQuJv&_81o!?S<}F)OGU@w`n}&i&w$56g`gG@(Dg~1uqB(V)g-82Fdg+0$ zPYRfwt4BnWu46IQN=P&B8~({a9HVQStz;L(<1Ak`BlK2|dS2Ny+5ivsOpBRTVHS~; z5QvF(d@=r&nTD&+^Nqo1SGX|Q&CK&sPXjaaJOn{X0F;3Byla;wkX}aKr5MI}Oh3Kw zI&Q4>6pS-d!o&d(h7{q*N@o=wA^f8YhCP1 zcsAy6_ueAzXx36Lo<_5w{D!w6Tqjq)%_dGP*VO5xsuq;)bbM0M zCl{*YtQ5{gx~I*qXRmEcSeCmlCI!_>A>xla;??YOm1BzpN&dF$n>JYwd>f^6(Z8nK zF;w)PtFOAE_F}~sC8m?nnCvy9rUHclTEjxqvA_(*+>19W$39jiBRe~iRrD;qD~l+- zT6&p`0q<`=nPJ%}haXMzQLfBgstmu%A6d)|OeTA!ldtA;i5&n+G zbI7e&HQI^QSTMYdsFsszqs%*cy&_j_#2GIe^6hko_%|+)Ky#w&fm<)77a8%}f`|j( zF<3zV^yHyqO3Y9A$T(15Bw4;)BI6vu7=CZj8-={KeIs%IKL}NEErz6|n-LSy|2wrD zTgI3z!MQA2!ajc)S)Uxv9-7(C^OY!Tg&aW-7JjFDaHw2qf*6VG$(woWQlF}&4$zo1 z607gN>+0~%pJ*}muEc}*yxFELvT^V3e=3^Y4)#X+_>%6xwn*o6p!D@78|AcyE6pL8 zQs34OJwDy=f@;V512tIpqbhIvYNOh3=Lu z5f_ap3$HYQv9+$fTTP&hNes)rCo*8)McjCt$*pFsF%)N3fIM4wsR4SiGjphsZCY(y z&d^eq?tl!?7NBLZ46m;Uc3&Vr!5$fJS9W>C+eWc8Jr@e5V?$yO&G)66d!mL^&M9sy zzmnVP%HjWwdJ9!PE#Q_r%=$fIDW*0kuMf?|gw4gUs3^V>T|;OFnHHE7FI)9IbJ3@+ zC~5IiBwsz^i{Wj&B|EUO{Il_J^_wy;<#@63$Ukha@xe`z9IAnc_6_AJqF!$P4F>Tu z1A7f6zImRk!Q(?&TcVfO=KHxEe8*QyezP^?Q1KF zXPm_qt(W$$cDktfM9mf!uH1-^C;!QzuIYC5BXI+3o{^!qC{IU|KMY%$X!HT#ry46X z3f?7YL|zOVD dj+@{Do2U0@!HWxTuSz!`5d3v1J%$^WZ+xiOBr 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

    F4LqO=Q<>EB~jmixhLz(BHV*=bSLpP z4;gH761$IlY(0j)-x2{1C78{nIM=h=6SDTO3-qMBE6$tD{MEnn)_%VqTkWMCpY-_r z^wIW@kA~p>T8{no(^I=v=-Bs}w{(0>$Btn;wnIOTDn1=ky)j9cpNiq&wi_TNI#k(2nstg!MlQ^fWk1I#fAJAA$QL&TBhgOMi80T__nn zXXaC{YQOZ`=$VeJ?w1(|bD+m@AgKXgj?H5?0N(-5$AKg`_HCpC9FGIwd>q>i9LGPW z9Xr6k6zKhU3((WC|8WiI&gi`aBgwqG1KjwP)Tnh2ZG>(Cul(;eA{U~rp zs5`(Fz0lEYH8ldC*1OhnDWX_G2fwk&t&3^xV5&_U$;L+@3!l96L-ppyT*v#~#@~^=ogue$)5$^;>(= ze}8(CD(Fy0#}m8Wrm9HCCoK+rG6s7?yo+&=qt^lZ0~noej2w&}Ir@WuK2GO|z6a1xIpgHKo?~=C zIt-Qpr#p{;)Gu?vji+vg4Oi?bkjEVwvR@`l>|l4z&|gM(xZlFMuEQ1w&K>5_qZ*3b z0QzHgeckxS#klT_8y7>r931Ea|KnPmJp1^V$4xv0 z=vp8FMqjf^!iha#^ba2>RdPD^v{2Uy!rj1*hId@6P}lky8Qa10YOSf%wK6gK5!%7m zo*G*Qgg-tT0k*n%@c75Yi)&_=dlb;e<0uB2noUXXi&G*!;AdhQE&{l_h^AiwGJR?fvlUHq><4)nO!3WV+_98gB+ z`;6WSiF08XI5ee)7$>7Ab~AE&Ya8+!p{Hq4_zuVI zl#-v6r+)R?#C_%N3QxL4lc&&deCiuTn?P0JIu#pWtjoN zZSuXN=q_-FR2|V?()f=8Jx_z|>-nt>m&x~K`AMK#F6KVBU7*K^xPsC3#BKup<)gec z(?EKP+7qoq(;8u1-oSpAHBz^HoZ8kfj;A3qC8M9fx;3n&Og+e*Q;+ z9#=!$K5g@2T!mr+s%Z=`gBF|s)gnK%P(iOcB&KyE{2XnIV}(buq^W=t@p zhq4|aJQUPzp!<0IF`(nHPaNdBeKAfb_v;~t?s)q(1N)xl?v*v=Y!cdCevkJ&T!*;* zAwUm4CuZliHNpB%0Uh>ZgZUBAw=*(7v1>p_sl5>yHmX9cO)_*y*qOb##0I;;;i!qZ z%;usT%5R49I!9k9vbmKNT2-ThhE+8ysBsnjCxOnFgY_}&U5xr0;e}R<`^@NGVcS7D zl*=JCchpZNxH(6MXQ{~cs5aH0^mJFnpJQ|y)tsjPYyiCs(vZ+kF*-oKqVfpXJybV{ zd&GXdVP4LKF&}N0glMs*7&8`+~rt%u|x!2bs8+Tp@s6)O^896I) zRc`JC|474(KKYOy)ifINn}Lp-_k3n|L-)ElbybXOt>iPz6XX^5VQ_bx6MG}d7s7Y1 zprsVuupXbP#NhxLVDyRH7xHreIZ(OJlnGkz17MRcPU8G;20C94)yBV_qvQ3UGYK%6 zqc+tPyHkD5;p{B#vbzWEeUJSOT)?gw!@#_DMVEDCVNC%R(KNbVNJJG`T~7Dm^$ z-anuybO!f!-iOBVG$GN06h@JqUdQG`&&6omKXDl^ii7 zxOr&}8GNyL4$~kZ8Mk-hUJY4*lYwy|w=1E4AESpO(k_Q|LFm}Gt{!KtPGOu$nqv#z*=U)qyU#GegqeEd0 zob5o~RhE86bH}<`5IS;vRMCOPp_I;0*C!S9Y1k{L>Y=wI!t;BPoeSu{3Fs+>D=vrr zwZZ6{LuK%C$mO-L%WN#9bVNEr8>!qFJt2IT-oFRv%-{GxcV-DC?)w-$l}R_w>lUMz zDcng$Cxj!TqsSh32l_^H9Cx&wS&HJV8XEw496)*_Heca&825^OEWzhqM5hK-P~@HX zzbSN|s^;b8AlJhtqvJ2L-rmc}#$%8v1vr?x?qH!QA)b{m>ou?+WV&Kp*{U-g@dB zj%-fWcBJumxXLa=>Uz@TFh}>o+T47;7p_+b?+>W5YnMupdveM|?;4{2d&+ARu}@I< zi$NO_w?g-_023F4GkVN)hw@sh!4&oLR6}UW`}Z$Bu}45p89JaHT3N*U>M&KtPVxFxwm646&^%E#RMEM2 zZJEmh)6V$!7=3oy? z9AG>va?11j>jx6_iP8HFlP59mzCb_9%!$oyRzRt`(-uL$;^*}k=;D}xWSkk@t7uqN zBLmz-?PsJoP~gHVGs1Lvh1lj5@0?NIv4|dkrnVNKbYgV;{yl-t<<%PIFks+w%zNHs z^p%Z2Szv+DJJ4Nj=c*b)+`{y#h8}dkynaB2%Z&a%FU08g7vqu-qC`1w#bxMTPWhY? zvTGTgifRUWhcW>>71#8|F4z^t*u2Jx`gHrHu)<+9zYg-SzXixWH;-r@tupe)SIm{d zEdGv+UUo56R!2bkd@W{rH`Lt|xL^gOdracxu~2#pt^;31Zv-{8ch~RZ=6x9iwN?tgN`gtcY?oem9AT7?V zJWdy58Q;;bXeQS#is>ecR$gPkgZY(BG7!rrS=|_2S0eVuHnl+TF6htm+)a4D2hdYD zQVny6(Wv2wfqu|~ej;=yuoq4^fIF7a4c}f$i<;W0mG$<>(vvrCVsujHme4*UKg#Eo zD-HnfukOd_xi@W&?(B?C;`t7vZ^m~+uz?)iRQHO`JwivjjL|s(*NGf*bQa@c{iN!S z8M>ImxBx2d~f&J$&v$Q`h*#&LG;Z!`z2eHVWG4ve0S&s!z)BF&x|z35Xe zep4d%4b|P$IIo}s%8}8nj_z4HVm+aGJ$}DC&^NFzLAx+{>)Z6HkX}W<8R!dSesE$_ zj!x&+dX(}8?xEW6Dqxo-eX5p~qv#Ia8A;GFKPP09246(;3&I>gf1n?`STK4&?{rro z&hm4Z{tDzSC3JfTu=nOQr+bX+Zv^^gt9c6U{Boded}8z|z$?8n1LqOC7fmhJzQ);k zR^3w>9jF{2j|u!CyjxJrQ3i7)+#0vQb9w0P8lPhxj*PzJoB0W#S2JH}KwSImU8=z6 zH_wcddt~iw-gEV2TAMjK1q6h3*}a3&tEe4;Zn-!Y)d1|=yhdyeM81f4CGk{R14hRR zx131rA2`5 zxW*zI>2IEjBcnrxelBwVHr1VFcNXN{`XnjtMZba3p*L--d;$_&ZZtB)642`nJf~v@ zbvdyNbQ0h{`mK}k9W=$!6V}t2%^CbBDr<&ns_z7=p#7~y$(b;4A@VaWxg>- zN0T!ZH9XZPYl#0Ic$ZFCte*EA{dPv5=EiKLVvtUi zr*(nRCznkBl=DiAPF#-aTmFV)9II;}yhAaK)AR*mhZ#~>8&6N5a7K~)dWw$98;I^! zTZ8hrtPeH8)##7*wJSsSwb27mN1HANfvR2)dNFQU;-=r$s{wL!pmb_oLlaz9+p&O- zR(3>waQiZ`-xcVS${unY8DW*;t%!al(6h7gsBfjn#RRXGW(T9EKZ~ypg8BgathyKV zGz!?$3ooj1K@B+kOlt02?#VfZ@hZxJ4CjnaaGzKDPCy)+)701oR+*secF&4lODlPv zOX}A!I^Ife(;Sl|xN>#CGNac6LSv^;J~yaOjPCPgrbTKyMC=LLTX0_I^zQ)rOz2ML z^8EG17#)T8b3or1+q~sp-U!+quL1O(X}(3+zLBF7-e2Ed82(XI<8(dM(Sy^C$`8QK z1D#QB50pF14Y?S&&+p;aZea}%QB+fhoI<$&AEeRFeZ7B-A+S+Pzi#kEwk&U0B6oNF zz$*ZK1LWz?C_{IV+Y`tyOz6n)1#1U!b0q)x9394(&7&Q^`(U|J9%cnAQ$Z2|JQj} zs?mIVgQWPg&bVAP-%QP6&#&{iIH|_y6_eOyg%$KE!qXgG@Qn$&b+2K#PTqEm+^NXs zOn#Egzpak$GP|=n8RKNaOjOVf@vA`RMum;NyYeqjY+f>YHC$k-q(qpO7`@_koiIZQ zdU_)&3ivOnQKk}eP#AQ zuz4xSB2*_vPg_6i8HE(*8^7PF1t!1_NqtP132aAqst|fa=~P>T!2JY`e+$rAVxM|i z0Qmo0Mjaj3vSG&0=teP(Fup0WPv;dFy%-k6=T)q)a9$ng=7E8y{rK^vH%|8Nw;S_Z z8r;nH3WOfDHI3#$bU)F)LPw51pZl!0uWRq7y^VSrHnOn=ri|V%7ak?$9qB7T zhoboon{)D2*c*BK21ehgzf?AvwDF5G4!GR!$s{*Uj*y+FPcVV&Ge)!%{R0`@F&*+- z8Ybg!dgOlM{^-*!68GBEDlYe!J)PHy(Km0uMEO`L#rxmU;<(2HDPp8ZGpIWqdZz#Zdzz`%L`>UU}ys2;F3#ACJG@qW_y8eEP@ z2bT=WaKz}~m09)41bY*`C%F5oEu^y_ej#*+Tj|vu4mma7PT|t7pBTN053*RJze{2q zwX|>@o$_*RX)_%T9s}DB@dD~gsK0AszJ+e|%H&@3WibxRq-B^k>8g4EhO9iDS!49s ze^aJo@Vh9+S!fP*GpeO4;y(rF?Q=x$h+_sjWa>*;hp0Wzh=b&OPogs4@!S}dToD8d;g{XZSDBh|LYnQ^YJ|$Tay3vQ5^ffJs;on`0lS?UdFLuvmZM~ z`(F>o{;$f%OFNFg9*+I5^bmG_$yuD|YiI31bO-!GSm*N^JxyEj6e{p?#2 zUXI&6`2GY&FB9~twTZ6>6XP<>n+Fb-Ab$@z(9|`*S`h04Ne7gl>!+XDY zI*^Ow0Cqa|U(3e8oC#b_i@|gVDtubWAtB5k#B!sd%pwy^Zr0Lfa~$)2?2gP&1-|qtS4a8?U_s_RBVg?y~Cv-1I^;U`bt_99hF+8oo$dRK@1W|b0 zr)VHM;}qq_=sMP22FSE1Js7#y%Uw0`LkUi%3>+Us$AZO1ln>G0UI?|uo*$Cq(@ z)nm`W`&H7jaXB{R^6|A_NDIfecI^9w9s3{G46WmJ&%*U}Ix^0~8kYk23h49bfqY3I z#^;M+l2fOsU6%m86!Uhmw86bBAJK~;tSq?x>$OgMR4|X?TXKP&M^KGm%&=2m5OHxgJF-#^3NWk*tFn~@Q z|I8>D-<6DBl+ej1V@f-cwFdH#kR!2Qhw-}ry`xzX4b}9ZY<9;1qdS*ZQ(#kTaRK$o z@>F7cs-MhfG%v?D(IychxQmU#yQ}JIAw1SB*Ppjr1Uek*WAMr23LXec%y7& zxi)++CbyH*J?iQX_XC{ch#3HSzW;Tt!EM|kX_isR+BomquDb7D4s!x913le$E%1%Q zAO+tD?`(6w8r^qibkf|7$;m&%AFr1W2m9QQzGQ{)I%&OmXa91XQ3|@}9egs%u;`w3 zxWwoly?f`%^V`=)w52Md?M2`^wX?us-5G~NC!qV>Kwr+3VZ-Yx&ix)NY51#Cc;<0? zUgG@Xr8fE<2YPJ#n{1vVyFC*{p|h`F54GZ+{+wX+$^P1W1T=F3{W1Om;&znga4UGI z1=hlKLU;DPkB|2*y91*m&}W$MIN-LbCpkhZ&&O`)o=tJZHByG|*o`{SZNr}JJs%@O zDE8!h0{b~{`-Jxp-h#7{&>>r&zO_GTBHvw2o7aHe6W*KersQ*$-TikI=y*MBcBf5k zs2g2OxK;1KJOe#UcK*kM{izJAwN+Zs!{(`!5U7lPh`8&%RMjo7C~DoVLX1n@m!$MrZVS zL6d608>4kn;t=9jt8jPB(Gl4wz}2?6@zLyHV3@%=`brn-k+7O^xp6*9)qSJ5MpFs$ zpH%gudxHM;`NpzbsB*#UPV)Nnd?_s)?iuBb>6x~1QsiRX9)UYNgLZTt7vu16|1+!n zycrFOcZ1QlhXP`&`GzsFESev|d}HIM>n$oUWrU}Z@x{`qaXEG$K;N&f z(nsZ@mgu#O80sEW?oQUNCbpf0ZK{h_*AnJ4qay(<13eK;iWrMO&g66iliCkd}2!vPU(oNLw8Tr zAtmRLGXL{?;vQplF0MJV8=HeoChPAE>V1gAZI@En+$!s2nAzd>mDNwl(iFH2 zsb&t_H!3dku3v`kWj;`D8t#mn-7>-E{?e0jQr_lr+igX*n}AM1JTrQHB{hyPPD5st zR2S}QUR6*wbk&8;yUNk$zhEbF_qpyKo`Weal5=2j2Xz8{D022Qi<~Z$o~!4IXCd(n zZ!DtYTW1!`n#f3=r%3HBiro?D+XLD$xZ8kvt+el55wh#Il{Ws(nKI>{HGn>s)*xaJ zj04C$W}hhi4(s*=J?U^oh)!iTJzhRv6QLW>7pf=eyvqM^)Z4cZS?}J>kP0WZl3mhx z=gk~F+uU21N^3&H+B)n61?sD0eFyMvbe$L-INd{bmfSMb7lZbR%*XU7pCJ|QS0ix* z{MKq(^d_TkZ2JqrUCPauG&sdNUJo;&!ymmZ&i2rKx^u(Vr#aoh0-Flw;gSoC`!^qE zm_d{ajwf6+5B_HIwwO&kp5 zrp6VFenMvlCbyHidt&{Zc0Pw4d=3RC$7HGGx$4g4bm>u*_qncyoINx9i3MW&6u+Ai zm&0{HG;9D1ixP43%2?5;5k>%6MZ}M6XGA}b$6^+THN$bhPmCq;def-;dmyw=uX6?U)TPQ&T%_jyWHn@m z#ua`>J?F^fi2L(``&i}mu%)!e1fjVndH0GSp~e}#|J@Q!>|77!pFFmU!RT`h-Au0> zx+9HaYfC_X!vBwl?hvV`l3IlFatx%0LneX!KLXn|1G)A8`_74t%^T^w^@rPutvB#? z#qIsc?@m@eo>xCe~`k^|$x^}8M!w!dYw4B(nPF%z|iTV?_E+;dJ!JZo<8aJUrf z3G#mkY=_swl)^3V`Eo@-+%AOPH<{w@9ezDje}!Bo9=gvk2ZWdEWMr~EmSX{{q18m$BvC(uZM+t zT0J;sJ!(g+kL#hQku#qw(04o<8oH;k6Aj&C(lgF;kK7zYIHvi#2ywTE?ykrIiT@vS zXQSRmax?4Lo3-VYpR;*#{}+4u2S8N;Ju}@BmHk>2IWv^xWTlq{6o6)Fh|`cg`r-Ok zu)4-eIAuml!ZljEl<8;I`OEzuUI@DVW<6ezU#M zj$3-yhIx%Gb)IOsO4hf=&*N~~?4sagvfqKf0=;cYTQ1I*-}GjB7k>&v&o!U2KMFh9 zblcUj&=TPsNk-hbZx9*_SZ?!Ir{`NLefl^(As{m)_b_kcn? zx$anFa?P4#M8zp|UwH0}`X{h|L0v6dae{of^67n9+TFV~$6@_`K=&)xuzhmW{?rmj zzu5FnEh9p2+ob=IE9fTSA=`YG<$h~Ib&;G0=7hI%O~E>$|A4#?t!R&o#O~z8Q3-v= ziW_t{3TmD{g7<%Dc~ix5GWEve^9XT*4ncpLZE@D?sy-Z@tzmwFu75zxvwAbkV!#3L zrQ`l{&Z@F8_xnkuzif?M@Mb&6JIwXH*JzOC`%l|N%7S)B7#gm;AE~;9>=LY(`kLtX z8uvZR-2!(ErcRKtsSLvReG`t#Yd>Vq=YO7bO3;_PkKFt{Tq*jSr|4|0b73tK^SI*^SWBvV)pxzU~=eJp_k(wuUvfZ=TZ$STYtc5S^qRw@+vb~Ii z?Lb^&cXr?9@UdBjw~AxpV{M~8)SDgmMWt=}Hvh=qL+;1a7WXUEy(wen=&~zhvEU%$ zpgn{AX)*uxG0;6UFTJmE(Y^x6>*jDI;q#)F+M25W{oki`@?!AtqxzTpzuA_tY<}J7 zwi88{jU^m#3(2+9)i1N0Zwh+C9EfY|PBLC9X{_+ug3c4F(c!+z%FpU+)-coWJd&sN z{O9n(zlX5fR|S~z%70bNxlnX=+ap>R<)*`z+3mJIA>(4gq0_aBcsd}odx0(W$I1Hs zZ_Rvd9sOc|->&{8)R3{WnXl?O6dhG_)ARNws?ItlRf&A9sngo@+&MR={U>~8O+$EC z?b=-w0D(Y$zlJByrBPe{GDS~aapRzt(gAs3-WgZa&(iqiOZfM3GtgI4Yh|1N z%Tjz>8ty@jIqQ%&nDT%@5OY> zmY65=O>OrOaVx9=_PEvFIKqE3SNG9W?t2Zw5Bpvn>k*mHQu@r;?`0jBx48Ysp*8=X z`1QZd&;Bs)8te4;Q1qPl`@UP_?_ugU718^K?!4pcV3|>$a2xY+{0iv1ANSGJeC5Ge z5MLNC<7>h8uV3G4hCUJZsGTAI*YAFGT64LL-Nz66fA@QcT+~sb32*!>(#k##-r`LZ zG0fsn=P>=KStev$1YERS8sRurPl~?R@#;d(EwHiKgeU1aFW2jcVW?Y+&a65#^- zV0*$n4@}P6?bMiWe-DngtZ`+!vo=e$(DV7%Q2!=!pXGm&57#zGn+DvJa_NhqTVPIc z`=<@}u|D1@6XCn@t&$GsZIPZQyL~O`P<2G^kqdvCv3pXJqWb)$8D{v)jCRyC*k z8g;^WN}f}7uBvYo&sQ6{tMf(<9AoYW512dAI^pmnT0b>=aWu+8l1}Cu2kSulHQ~F%eyHe6 zJ5Ci{f_3P5wc_S+3F)Ebrs&`QH37G*`rB(kxA=gXp?#t)f84fRqO3+59x;0WEykNO zeG<8AW{!wmI$u@AooGdUSJQcqSAX0gd_Ud$gRpPUm9+t2;5ZhgGZAR^l z@L`_W!D~T3{&CCoTZY#9t@Xaf7z>ruo$1i{4@|2qvUPFYS)FceKB$um|MG z*LOFVF{I}M2|6xh*r$lMa$2LCKVG5ee$s9)`Fn_WQp9*F8eO?VCY9IJY?p-n<7P=N`fu4urr-YTd&QY>hkTO@7wTS6 zzac;Tb#~S%J%<%XN%}R@PwnjxahXr`Mj4ORu|ClLO3?pk@8r@O-U)0L_}_iE#R>V_ z`1t$h2)2)Ze*t%o*B$bC{MK)u|9kikbB^6#4PH&jbJYH#YFb$zQgkV-(Z$j?1MWE^ z=a+&u%&?|>GHxPnN5=ZgTz8M&KiPKs-^Mw0!;QzjDJ1PIBmJ&SbA4*dZO`>|8AmUQ zjuXz>H=Xu`yHBh|&>r!6TsgvhYWEcJR$+T{Wls$=PWRjIpMU=xd^XJc$?w14&wg9~ z2^shNobvQ}{j+}$18$mUX`4clWEzhym@)3mAH0J5Q^k#IpdN8LDYzu&&zr=l;U1~_m|=7D{RN;&c%%BQ@jX9G(mUzxq+xo9 zVF%pdUVr@knZJj=|D(P;OB3|@uIT!HijttK(H=(KKd0zYMHlW@74)fscN%#`3t&pY!@tY`?RRoDbsvd=EiSz3c#9Y2R2AW(weG8a)PCM9ZPyQd8%3 zLAwm4rq)*gPrFQfG;RmbL(+dGNA5@aYj0ZHFz-;ih`;?kk)Psz+9^53+-~Eu{k(RI zgMR5?&2RPN_R)Zr_Se=?5o!4{Y@bir7rbzp<$hX67az{O_DIt2n%wJ7kXhj4XosrP zUia&l?qbWx?dT-{m=7Iq+^KXUJXh1*E}kr-ouYN*=W4anA%VR=q8gHJJ4;aOE2Zep zdC2;Pq)QdeBKLlSBiHVJc5XV-?PfTcs&`4AthehYoHs$AbPMVc$M@Sn-7ofkXnyW} z{2DJ7lB9DjE$B|gb5e1xqrVRJGsqWRaW!a9<+KIu>4eu7QwP7<|ERB;eO7T?>3s3^ zDc+Z_8Q(3UuGll?g7ww$)5IFp(*t!N&Q`k%I?hP-AByPI^Ew%~oO~qc1o@eev)Nv4 z_c6a>uK=CyPP4(@Ihxe9lkw;$CmFhlc&vG%B0gSJLguS}&!_0t@y2KS0O>xdW+k>o z^J}5||B4w$jGLH;tS{qsk!;#xCJ>+Pakrea@*a@hofo!VlA6cwIz2}KtGv^vU8QGf zb2#zfhKk3Gsy4u`o%bszPNvkzb>{|HSa8xAv-IAtS&vwq6g^ybo>~((?wEQ2pM1H& zJg^#&Px-db$-1u-&c|2DJALxN5v}={z^T7JuCpodkV5baw|1#}v4)*gjKs)^-1A<%$U9!IMiYpT-M7 zf870hI9e+~cgzRg{bq`eEAt~7WZM5B&dzyWErE>FFOc+)DY}I3)l(d-3|J`&A{~>EJnqI2o0H$;b7-r}=UQp+{~S&r2gt&+osA=V z5G5znP0#y%8(ZrDE9)y!e=Xx5>vc~-dzoPIgVfZXZ8#BfUOvP&pMDn6`+(fJ_E!UX zxKeb!Xy1wlzZPGMYj|;(yS>i*{MTQw;OL0FxTNKGj7wV#>v?p?%u5$iPKqwMx>$2d zCysZBLzYg_dkWZrI6ZUK_DYf-M!V7d_Sc&o8|tB%4?_FWCE6|E(U7biuI$C*?J{ zc7*%n+w<~heD(V$^?s4PAAm!3gmWIrxABSC{Xq1^7VNa7y3uKNdeuJ zdcvNQ^z!&MT7H(J*M2zF_e!{QzvY%Vsk_bd@3}v&ub!w!9K8hjvp9cf1@^4uUR3+p zTVJ&Uj%A!FCq=)(U0d4OTlW-Q-F4^stlPCz)ig(s>Uk)-TJ8=zy#(xZ%W!Vqb$rTt zbL4)~%<8<{I^%-nfKkv*aQY|Ca6)%=t)Am=;^+CNQbi40xjX9=p7TU{5p_NLY*md; zclc%rr^p@gdOR$_{%Q2i{v~qavV&sy=Nvq%Sg*kr;O`0!gr_I_jv6s?;gNI-zV)@ zkklZKR(Id*^Y-Q+e#f`>_?&0BYfn$&`)9AE^*!9vJED&!_eMXsCWk$X_&mzzFI;u5XWwWsZAljS&@>QS_HB5%zhqT{aK(W@(oWSR%Yix=*T- zA*al@CX?kZGqG*l*rMXwKLh-1as3t>R65smXIr`VsWoeTi+mmOjY$45Nf%j9o*en_ zwUAy@^IKtus7p_~>9&{97dg6k?w9d;QFM>jW9#;*>5UNEw4M56>9xRlSKvj|fjXnV zx}Qhy@h`TUCYVY1fZP7vezT7%>u+!GXokDk$z7(}UXq`e=GVElnqOR0^hHZ%M|o5GGQ-v{)zNyVqRkKWtZhcZHQshClu&YZj5E~BY-C@2T*`;mJHdJvD6 zIJ4bZt3kVp`W@^Bw*#(IYT69v8g7tpvF`gx)Fj=b_ej!>UVldxj@!#m7z67*4rA=K zT`E-Sa~{4@bbsVt*Y@H3rgw*#fD`4FbJ<$L^;^#T)7R^5_Z>5in`FXqqhS_x;X>Xs z_nB}3eEGf&>8)A{@s7K!IQ@6qO0s|W-ZWR6SIlQ(E4qKpA2Hh1C)1sF45$ER_TJ>F z5O1%fvyRIbaG%T$@^Io(8D0A0fVNVYzeLjJ*JmHz%ULpP$Penq+($-5fZ^ z9IZ1j>HV)Ps?jkPczt4S&cz@|NOQgWW?`WNlWCP0&aZUos6xa{WS_{(lqlNve(vEIpjV$58`=dZ5}@t)?^?R z2Aem*1>`Z`()M2>&`I0HoEzfZ;qH77$or=6*+Ac& zl9F@4z7X_QK_C0X3C{^{dwhMsz7+XqMK9Ggjn-?9E)q|OhrmPZ(`x^5k_|^Yyyv%V z89TlY5s$ZL>t`(3BIr={_zDnBimu;b2SGI*iKMr~_U0b4c@#Ixgwwtte|Io78r`WI zE|POqblel|SU22znjSr_VZVtFcRaI(jG9a}Q}h{Rv#<}0MvYCXZ1&oqwD&LRAUoMZ z(T(H2b*$*S1mOX`Uv+^G{^PQT>K3=JOgPy*N-AqC>Um=sNcyX&KR4qzR?o^EIl9L1 zggP;v#a(1RO}8wwba@9h(e(K?j44@nIsaFuzTGADo`(^mXGJI8DQf4yo$WZfwVkVJ z5;YR^mAAgH>d_PRwI^?8VfClTodv4#q!Gzp}okiU#&yM?;Rf}1c z>dCRhf32n;>=}n1_aHkfx)#<_)GpM+aeoZsvqKl}psbRfQ|(5$DEc^_Z`n2=wzquY z?^{Rfbe*GiP0Zyq(C4~ZEvm)!12r#obM&~|WGZ#K8|6X#cGyn)N3rQ%9k@_*4&d*Q zkLI?-s#ngEmg^!HUL3q+(*@)+NJnzsUlBMM5B26~ovs#1597@>-O#oY`l?w5Z=4!V zTgF_siev6S3N%SMoj-)`fiy&0DsJlvx(d1)bxiivak1V_&$Aszeq8s_>x1Vd&55qm(@G`*hxu)@Ub(r?kk{fos zYx-?v&1PF`l7DpxjAL&Cg}aOz;xXd-JUYNcME=D!BMy_=3A|;jZv0gR8D6x$4pC& z*mq{uxRMqwI|kV(LJy8V)DNfrdQtSW$Aq-XJQE+`x+waL+QWo{1s~mV&5#r8J&C{6 z-2CYRy_xV(@Ps)DI)eBprpHkP?;~Po+Ve2WFyj0@l1pWc)>lw|)h4&0=iCw(A^T$T zob&Sln$f5Gn-pEGcgoNuO?Rk~gJ+TM&zc86b-lXrDNN4=cu>ucNYO!j`+Ib*0k)LQ zmF{~v*IlDl#@u{>SW{t*TzHP=H%jQvIKhr0y7s+pLr#2aj;?XHgI!j8*&pLA^sM`L z27Cy+mDKDgDr@t5wC9Dh@?^$$5%(`1Ufe9LaWkBG?#o4+N2zv;+a7uzw11(n-|p+q zy|1yoMDgcVcHAYyD?z^?J+;j^;;9)n$+>0Otp^@8bxz(rUmrQSCFY*CXZ#zk)+6UQ zlZr#$Q9}RK4EGE(6#b|Tt~A62vxK-F)Nxb=yx8#fLLTGiaN6@a?Q&0o&QUjo?IHA( zrVr~~^_+>jSC1aL+#^E| zOOA5%DD0!rspZ!@ZrBtQIFnsZG625+y!y|Tqye2X6c}O+3T)AN6gMqda!-x z!m+65eJ3`={Jm~Nkp(^aT^B9y%L|Tne%|$bUJsbvj7zgDs^0CRh3!^550*V(&)R*| zC$ms=Z=I1YxF9{Ebed>^#P2l2$s{@#(-#W99k{2QoVA@ScMaQhwaq+~Vfi9PIyc=w z>NRAiEW9+!c?GQlPIkM?c?9o8(ydQM_mYv>^K`|py$<-5l;8Ebi>9Ym_5}OVb5FVY zQsi%O|JE9vUDLUYuEq3ZwM4fBm3&HED5GK|kz_ zi$ZywKc`OEiZn9y=NfvMJBOxwSxvW;!EVndwR3XF9X{)io09A}I+C1N570rn$aW=r z^-7R_IQ#5C-EWbadlW%_yM*mjV3RjOA6rcj$q3sQFwZY|@mlX2_mH5YG0xA{oUhIF zvbD_iYNU5d4zhlgqDM1qiQTU0Hr;H_Sv`T{v0~j9)qK z>cP=g?kd`9#S7yP4enG^^Wu4#Si3&HE1^@!?hSFF-AtdG@0H3%`rL@(QqvL1ms%W) zzVXcQJ0Dg{K4s?paGjk`K_6SnM22qlHBQ12)4x7wuQnWCxp3QMip4|t>c(Bh?w2ln zG3BmE|HVEWneN*29xd;RxRGnsb2}aPtJEA`d#aw31;@!ck>3=ZI%POyH$4|SE>V8P zyhrFN=(V&)i8-oi6t{0K({IhvG1#J_ekkYyIB{+|u7>$aca8M7paV$<+FyXnri;=GxmL&wwXnpV`@j05b1 z_b%o^G_dCJbDl&`MYTuNS;y0E6D-;Z>|ph2aduzJ@t}Sn+*{)2p?AFp;S#_5?73U* zGfj^&8l%1T+u3KgZW(gn2Gwi2KMnj%3+&D2kXlp|)}icog3e@rg6?0vM=mwX)cq%1 z)R%N$E$@`8B{ddwDYJ#Fhu!|(--rnjJx{Rcy+Xd@yc^5X^GYWO*~yvHK;C`1+tye1 z-^hN0NtYU6DU#of+*#2{*28}T};Ntk8Y_^ZPAMeM#mrpi9tg~KlWuWr6kG`|ma8D#0rguMI2CFQovfnU;2?Q*LW z{YKD}{TA+enfS0dxhAqTgg+fZ|MxE{r*r(C3^{`SDN$dLy+j)- z9}1pm|NiS&f2U+Zou^osc3xY^QyqPV>Uonmkey<40^FW^Zj;e1q@s>q;&f8?O+m-t zIVrlxc(UCu7Y#HwTd(a>G8@B}{4P8M7|vs7`8;xDu2Ff52(y2h`0MUc341VaD;~ilc3CTD6P*L0n- z^QZaLD^>qD-aLIZ+>(h8;Gb3r;F)i3bzPwT$Gbh@xI@#kC%3KQgm&`e*oR9kGRbvc zg8dlAr>!6{+M+9%e@xUPF6S)W9x1?%s`(AQd66YozbRfiE?4Pluh7KeL*dmUISgQ;x2mtQ@SzF`4i0zJI${;F1S-Ea-|l70!zd z=Xy<=&fsqgy2k2~r6X_$&!wQg+4+hfJ|dSp{vCpnvyKuc4O|`w8ec!08>G0fg8|=7y`3u0+rV~_02kYdy;W_49 zAJlKhMpEk+fP2Ul?&Q4vf~>Eq>41IPjk^Rs7v3i9lkZ=DaaBEdCaQTV{bVvVH^)dh z%{1G%*791avoYR}+8#}D=y1Pin?a&}8oP(2#~AuRnnukI7@t(OY0#HKo~*dC!>iWN z>HW_~?cBOui|Mv5q&wg*pnSF41Rlh6UpCA*;;5N(#ICZQRb5e@*N-#wQeGS5Y<-?> zqQ4qq3q>cyKSDd@>Re-=WH&G9ubrk3*1ZEr}Y+PG@#6r>Ek)9etg7wvu)ll=Uk2Wabrk2f-I@aT|4Xape~JZO<~`VY(w@2jKn{N3MJ96Bk@JEggHwd9r@BpVSA~ zzGmH6j>li&!bO`5I$VLd8gMyv-=LjRb(ZdwolA9{lzw{!>u#@4+g+s_G5oWTdrDp} z8Qq+n^T8hG(BE#*ejajn-}tlc)_$>_%+E1=PH&H_T5eF!PkI^9^#bmnu%{hn*j85q zp891F(p%#zQ4K|p1Ff|k7uJ|}|9orpbeVAB3R|tQ%`1E0C+}@tTe~08?`_8@cG;1fU-<4t#W$OuVn319y>TGb>7u_=?=Gxp&$vWxzaS(6N z+x>*S-S^#k&^mL`^j_Bq_GyY`9QPqf)YJ%g58fqM&*P~_#Wjl3rLyi2>y){~^LgDO zuZ+WPpGX&?H`8-c@o13=cP?3P+`GD`>6%%$ntI#FOVaI##}#tso_30fXuZCXS|VOi zZ#x<~->lhX_eXN!3G7$f?d$V=i41nFqiKF#dgMC0*>)?L`3F;U584am{qc`CJIKST z2;5WdzD4*Tnw1=fbk50_!E@nxT`hQ(_LI z9pf##3A%1ILA|crF@wU|V!j2ii_5%X#jX(KZmcaF{Vv9b6*N^R<;rSCM(b7szyE2*D-T~m8|Z^`-0%TwB7l*UkjB#7)?hZ&DY2S zIb3(e&P_6?s&Os-k@1Mnv-QRw{aT`$Dru!P?t=BH-jbjDA;wo&(M8a=H9bY^(*DY+ zIduJ?3l_5`6u`G%QSX1}j&+3P>Z((%JoUzyoD<~>)LW`B_L0GOs#8z2*RZ`p{(0&p z0e{-peX%(t^j)`>khtAxXXh=I)!D2&jpJF~Jx=Erfmv1mu`uCyp?PKl^M%`Pp?RB@ za{j|!kH$Fh+f#mil%s3#o@nWePd5Atmsi{~zij)w{PuNGD3vf6%LehK@O^&kB`&%gKF98EJNN{5KY zWg>fPtVM>_sFF^cYpZJt*rDrNxQC>dMt9cr33lDseW%Ucf_B{#GA%dTccomda%i>l z+&+J`O`)Y89&UV1#x*IYg#5BQrVpLNV>cNu^DFGP`=hSUp|1Q&pG+3^RBWqKP8IZp z$1cuXZfu|T%i#UETLxux3g@YI-amS=t;f}*;vBBinX!M(Kjq%@aEu@Fg{0=tZcWoa zGRp!XhXqG*JA8Q5*fd@z%5Pv#8%(6G_KtHPt)1;#QjUxqwBx}#-N|DQ9}bnb9oRhq z7Y}Vb^a$SfT@NK6$0dPR)Ngg%eRhx8+6Kp9hM^;Wooa=mv;_vi4&7{glI!*1b zX{POfd{^}7Z6{Ip$UT?Zc2wPj9m#oYEmK7NY?dVl?wXGeJZEJ6-t*|tbdSn|b_&+- z-jM-4a6M-CZdcCDql`|awWRHd`WM0e0RH;CoEJWZ#b9S<&5Trx>0*c5uz{`)1Q? zocLuZlWt zEHgR({zofsj)y;kX-dpDL-=p)`@8$r-=sHp$T{oQBcrG*N2BRs%jzPI+~{a zagUvFlW?i7;W@<`l72=!<>)@gGWkyX%h+;t2m7}UoK(gGc1gGW;MaRkr^l9!sa8fM zv{3o0?WJg7^}+ z?+d!5>ZyRPZk()V-koXQ1op;+J6+LP2iI+ysduq`Z?DB| z(rkN&$Zu`tu|2eRSQ^zjZJ1&E4PJX0SYtzuDL?6gjW}I>cb!5f_4c!~{58ATO`q{b9 zm902vIXAyT%oE&>`J>vh44F8t#|tkDvX^dxqa1N5GznX(a2OqKg+760btPK{-{<$&u5v+^*zqI8t

    {" "} - +

    @@ -2154,6 +2164,12 @@ export const query = graphql` synthetix: file(relativePath: { eq: "dapps/synthetix.png" }) { ...dappImage } + curve: file(relativePath: { eq: "dapps/curve.png" }) { + ...dappImage + } + dodo: file(relativePath: { eq: "dapps/dodo.png" }) { + ...dappImage + } artblocks: file(relativePath: { eq: "dapps/artblocks.png" }) { ...dappImage } diff --git a/src/pages-conditional/eth.tsx b/src/pages-conditional/eth.tsx index 3c4c1761255..a0981630121 100644 --- a/src/pages-conditional/eth.tsx +++ b/src/pages-conditional/eth.tsx @@ -1,7 +1,6 @@ import React, { ComponentProps } from "react" import { Box, - Center, Flex, FlexProps, Heading, @@ -24,7 +23,7 @@ import InlineLink from "../components/Link" import HorizontalCard from "../components/HorizontalCard" import PageMetadata from "../components/PageMetadata" import FeedbackCard from "../components/FeedbackCard" -import QuizWidget from "../components/Quiz/QuizWidget" +import { StandaloneQuizWidget } from "../components/Quiz/QuizWidget" import Card from "../components/Card" import Text from "../components/OldText" import OldHeading from "../components/OldHeading" @@ -590,9 +589,7 @@ const EthPage = (props: PageProps) => { -
    - -
    +
    diff --git a/src/pages-conditional/wallets.tsx b/src/pages-conditional/wallets.tsx index 897276a3901..27ffa00b03a 100644 --- a/src/pages-conditional/wallets.tsx +++ b/src/pages-conditional/wallets.tsx @@ -1,6 +1,5 @@ import React from "react" import { - Center, Box, Flex, BoxProps, @@ -20,7 +19,7 @@ import HorizontalCard, { } from "../components/HorizontalCard" import CardList from "../components/CardList" import FeedbackCard from "../components/FeedbackCard" -import QuizWidget from "../components/Quiz/QuizWidget" +import { StandaloneQuizWidget } from "../components/Quiz/QuizWidget" import Text from "../components/OldText" import OldHeading from "../components/OldHeading" import { Simulator } from "../components/Simulator" @@ -208,7 +207,7 @@ const WalletsPage = ({ }, { to: `#${SIMULATOR_ID}`, - content: "Interactive tutorial", + content: "How to use a wallet", matomo: { eventCategory: "wallet hero buttons", eventAction: "click", @@ -489,9 +488,7 @@ const WalletsPage = ({ -
    - -
    +
    diff --git a/src/pages-conditional/what-is-ethereum.tsx b/src/pages-conditional/what-is-ethereum.tsx index a46a6da21fb..f7701da650d 100644 --- a/src/pages-conditional/what-is-ethereum.tsx +++ b/src/pages-conditional/what-is-ethereum.tsx @@ -34,7 +34,7 @@ import AdoptionChart from "../components/AdoptionChart" import EnergyConsumptionChart from "../components/EnergyConsumptionChart" import Slider, { EmblaSlide } from "../components/Slider" import FeedbackCard from "../components/FeedbackCard" -import QuizWidget from "../components/Quiz/QuizWidget" +import { StandaloneQuizWidget } from "../components/Quiz/QuizWidget" import StatErrorMessage from "../components/StatErrorMessage" import StatLoadingMessage from "../components/StatLoadingMessage" import Text from "../components/OldText" @@ -842,9 +842,7 @@ const WhatIsEthereumPage = ({ -
    - -
    +
    diff --git a/src/pages/community.tsx b/src/pages/community.tsx index 873ae8b08ca..63c80573f7f 100644 --- a/src/pages/community.tsx +++ b/src/pages/community.tsx @@ -17,12 +17,11 @@ import Card from "../components/Card" import ButtonLink, { IProps as IButtonLinkProps, } from "../components/Buttons/ButtonLink" +import { HubHero, type HubHeroProps } from "../components/Hero" import PageMetadata from "../components/PageMetadata" import Translation from "../components/Translation" -import PageHero from "../components/PageHero" import FeedbackCard from "../components/FeedbackCard" -import WritersCohortBanner from "../components/Banners/Implementations/WritersCohortBanner" import GatsbyImage from "../components/GatsbyImage" import OldHeading from "../components/OldHeading" @@ -144,17 +143,9 @@ interface IGetInvolvedCard { const CommunityPage = ({ data, - location, }: PageProps) => { const { t } = useTranslation() const theme = useTheme() - const heroContent = { - title: t("page-community-hero-title"), - header: t("page-community-hero-header"), - subtitle: t("page-community-hero-subtitle"), - image: getImage(data.enterprise)!, - alt: t("page-community-hero-alt"), - } const cards: Array = [ { @@ -205,14 +196,20 @@ const CommunityPage = ({ }, ] + const heroContent: HubHeroProps = { + title: t("page-community-hero-title"), + header: t("page-community-hero-header"), + description: t("page-community-hero-subtitle"), + heroImgSrc: getImage(data.heroImage)!, + } + return ( - - + ) => { descriptionKey="Layer 2 extends Ethereum, reducing costs and increasing accessibility for decentralized applications." > - Use layer 2 + Use layer 2 ( /> ) -const PageHeader = () => ( - - - - - - - - - - - - - -) - const HomePage = ({ data, pageContext: { language = "en" }, @@ -284,24 +257,13 @@ const HomePage = ({ return ( - - - - + + + {/* Getting Started Section */} diff --git a/src/pages/layer-2.tsx b/src/pages/layer-2.tsx index 416a6a0ac00..b564ef4ffab 100644 --- a/src/pages/layer-2.tsx +++ b/src/pages/layer-2.tsx @@ -1,5 +1,5 @@ // Libraries -import React, { HTMLAttributes, ReactNode, useEffect, useState } from "react" +import React, { ReactNode, useEffect, useState } from "react" import { graphql, PageProps } from "gatsby" import { useI18next, useTranslation } from "gatsby-plugin-react-i18next" import { @@ -35,7 +35,7 @@ import OrderedList from "../components/OrderedList" import PageHero from "../components/PageHero" import PageMetadata from "../components/PageMetadata" import ProductList from "../components/ProductList" -import QuizWidget from "../components/Quiz/QuizWidget" +import { StandaloneQuizWidget } from "../components/Quiz/QuizWidget" import Tooltip from "../components/Tooltip" import Translation from "../components/Translation" import Text from "../components/OldText" @@ -914,9 +914,7 @@ const Layer2Page = ({ data }: PageProps) => { {/* Layer 2 Quiz Section */} - - - + {/* Layer 2 Feedback Section */} diff --git a/src/pages/learn/index.tsx b/src/pages/learn/index.tsx index 0a2e63411bb..1fe12026c39 100644 --- a/src/pages/learn/index.tsx +++ b/src/pages/learn/index.tsx @@ -22,18 +22,15 @@ import InlineLink from "../../components/Link" import OriginalCard, { IProps as IOriginalCardProps, } from "../../components/Card" -import PageHero from "../../components/PageHero" +import { HubHero, type HubHeroProps } from "../../components/Hero" import PageMetadata from "../../components/PageMetadata" import Translation from "../../components/Translation" import UpgradeTableOfContents from "../../components/UpgradeTableOfContents" import Text from "../../components/OldText" import OldHeading from "../../components/OldHeading" import GatsbyImage from "../../components/GatsbyImage" -import { - ContentContainer, - InfoColumn, - InfoTitle, -} from "../../templates/use-cases" +import LeftNavBar from "../../components/LeftNavBar" +import { ContentContainer } from "../../templates/use-cases" // Utils import { Lang } from "../../utils/languages" @@ -166,12 +163,11 @@ const LearnPage = ({ data }: PageProps) => { }, ] - const heroContent = { + const heroContent: HubHeroProps = { title: t("learn-hub"), header: t("hero-header"), - subtitle: t("hero-subtitle"), - image: getImage(data.heroImage)!, - alt: "", + description: t("hero-subtitle"), + heroImgSrc: getImage(data.heroImage)!, buttons: [ { content: t("hero-button-lets-get-started"), @@ -189,11 +185,7 @@ const LearnPage = ({ data }: PageProps) => { - - - - - + ) => { w="full" mb={16} mx="auto" - pt={{ lg: 16 }} + pt={{ base: "10", lg: "16" }} dir={isRightToLeft ? "rtl" : "ltr"} > - - - - - - + @@ -811,10 +798,10 @@ export const query = graphql` } } } - heroImage: file(relativePath: { eq: "eth.png" }) { + heroImage: file(relativePath: { eq: "heroes/learn-hub-hero.png" }) { childImageSharp { gatsbyImageData( - width: 500 + width: 1504 layout: CONSTRAINED placeholder: BLURRED quality: 100 diff --git a/src/pages/quizzes.tsx b/src/pages/quizzes.tsx index f4d92030dbd..2d79752ad93 100644 --- a/src/pages/quizzes.tsx +++ b/src/pages/quizzes.tsx @@ -5,10 +5,10 @@ import { useTranslation } from "gatsby-plugin-react-i18next" import { FaGithub } from "react-icons/fa" import ButtonLink from "../components/Buttons/ButtonLink" -import PageHero from "../components/PageHero" import PageMetadata from "../components/PageMetadata" import Translation from "../components/Translation" import FeedbackCard from "../components/FeedbackCard" +import HubHero from "../components/Hero/HubHero" import QuizWidget from "../components/Quiz/QuizWidget" import QuizzesList from "../components/Quiz/QuizzesList" import QuizzesModal from "../components/Quiz/QuizzesModal" @@ -66,14 +66,6 @@ const QuizzesHubPage = ({ data }: PageProps) => { const { t } = useTranslation() - const heroContent = { - title: , - header: , - subtitle: , - image: getImage(data.doge)!, - alt: t("quizzes-title"), - } - const contextState = { status: quizStatus, quizKey: currentQuiz, @@ -91,9 +83,13 @@ const QuizzesHubPage = ({ data }: PageProps) => { title={t("quizzes-title")} description={t("quizzes-subtitle")} /> - - - + + @@ -224,14 +220,9 @@ export const query = graphql` } } } - doge: file(relativePath: { eq: "doge-computer.png" }) { + heroImage: file(relativePath: { eq: "heroes/quizzes-hub-hero.png" }) { childImageSharp { - gatsbyImageData( - width: 624 - layout: CONSTRAINED - placeholder: BLURRED - quality: 100 - ) + gatsbyImageData(layout: FULL_WIDTH, placeholder: BLURRED, quality: 100) } } } diff --git a/src/pages/staking/index.tsx b/src/pages/staking/index.tsx index 9f3a4c5e8c6..1d5b4b52ab5 100644 --- a/src/pages/staking/index.tsx +++ b/src/pages/staking/index.tsx @@ -15,9 +15,9 @@ import ExpandableCard from "../../components/ExpandableCard" import StakingStatsBox from "../../components/Staking/StakingStatsBox" import StakingHierarchy from "../../components/Staking/StakingHierarchy" import StakingCommunityCallout from "../../components/Staking/StakingCommunityCallout" -import UpgradeTableOfContents from "../../components/UpgradeTableOfContents" import Text from "../../components/OldText" import OldHeading from "../../components/OldHeading" +import LeftNavBar from "../../components/LeftNavBar" import { getImage } from "../../utils/image" import type { TranslationKey } from "../../utils/translations" @@ -26,12 +26,9 @@ import type { ChildOnlyProp, Context } from "../../types" // TODO: move these components to a new folder under /components import { ContentContainer, - InfoColumn, - InfoTitle, MobileButton, MobileButtonDropdown, Page, - StyledButtonDropdown, } from "../../templates/use-cases" const PageContainer = (props: ChildOnlyProp) => ( @@ -304,13 +301,7 @@ const StakingPage = ({ {/* // TODO: Switch to `above="lg"` after completion of Chakra Migration */} - - - - - - - + diff --git a/src/scripts/crowdin-import.ts b/src/scripts/crowdin-import.ts index 52d3927df78..933a5c1e278 100644 --- a/src/scripts/crowdin-import.ts +++ b/src/scripts/crowdin-import.ts @@ -1,95 +1,69 @@ // Library requires const i18Config = require("../../i18n/config.json") -const { copyFileSync, existsSync, mkdirSync, readdirSync } = require("fs") +const { + copyFileSync, + existsSync, + mkdirSync, + readdirSync, + readFileSync, +} = require("fs") const { resolve, join } = require("path") const argv = require("minimist")(process.argv.slice(2)) + +/****************************** + * Console flags * + ******************************/ + /** - * Console flags + * -b,--buckets Prints buckets overview and exits * -v,--verbose Prints verbose console logs * -f,--full Prints full name of buckets in summary + */ + +/****************************** + * Instructions for use * + ******************************/ + +/** + * 1. Run `yarn crowdin-clean` to initialize fresh ./.crowdin folder. This can also be used to erase contents when finished. * + * 2a. Export/import CSV of languages ready for review: + * 1. Open "Website translation board" document in ethereum.org Notion (internal only) + * 2. Switch view of "Translation status by language" table to "All reviewed" + * 3. Click triple-dot (...) menu in TOP right corner of the entire app + * 4. Select "Export" > "Export as CSV" + * Export format: Markdown & CSV + * Include databases: Current view + * Include content: No files or images + * Include subpages: Off + * Click "Export" > Save zip file + * 5. Unzip contents into (or copy into) ./.crowdin folder in the root of this repo * - * Follow these steps to import translations from Crowdin export: - * - * 1. Copy languages folder from Crowdin export to ./.crowdin - * ie. ./.crowdin/{lang-codes} - * Tip: Run `yarn crowdin-clean` to initialize the `.crowdin` folder. Can - * also be used to erase contents when finished. - * - * 2. Select buckets to import by adding the number of the corresponding - * content bucket to the chosen language array below - * ie. `es: [1, 10],` would import the "Homepage" and "Learn" buckets for Spanish + * 2b. Alternatively, you can manually add buckets to import to the USER_OVERRIDE object below. + * 1. Add the number of the corresponding content bucket to the chosen language array below + * ie. `es: [1, 10],` would import the "Homepage" and "Learn" buckets for Spanish + * 2. Save file without committing* * - * 3. Save file without committing + * Optionally: To view summary of buckets from CSV, run `yarn crowdin-import --buckets` or `yarn crowdin-import -b` + * Any items in USER_OVERRIDE will override the CSV import * - * 4. Execute script by running `yarn crowdin-import` + * 3. Export translated content from Crowdin and import into ./.crowdin folder: + * 1. Export latest translated content from Crowdin and unzip + * 2. Copy languages folder from Crowdin export to ./.crowdin + * ie. ./.crowdin/{lang-codes} * - * 5. If successful, copy `GATSBY_BUILD_LANGS={langs}` output and paste in - * your `.env`, then build site to test results. + * 4. Execute script: + * 1. Execute script by running `yarn crowdin-import` + * 2. If successful, copy `GATSBY_BUILD_LANGS={langs}` output and paste in + * your `.env`, then build site to test results. * - * Remember: Revert working changes to this file before committing Crowdin import + * *Remember: Revert any working changes to this file before committing Crowdin import */ -type UserSelectionObject = { [key: string]: Array } -const USER_SELECTION: UserSelectionObject = { - am: [], - ar: [], - az: [], - be: [], - bg: [], - bs: [], - bn: [], - ca: [], - cs: [], - da: [], - de: [], - el: [], - es: [], - fa: [], - fi: [], - fil: [], - fr: [], - gl: [], - gu: [], - hi: [], - hr: [], - hu: [], - hy: [], - id: [], - ig: [], - it: [], - ja: [], - ka: [], - kk: [], - km: [], - kn: [], - ko: [], - lt: [], - ml: [], - ms: [], - mr: [], - nb: [], - nl: [], - pcm: [], - pl: [], - pt: [], - "pt-br": [], - ro: [], - ru: [], - se: [], - sk: [], - sl: [], - sr: [], - sw: [], - ta: [], - th: [], - tk: [], - tr: [], - uk: [], - uz: [], - vi: [], - zh: [], - "zh-tw": [], +type BucketsList = { [key: string]: Array } +const USER_OVERRIDE: BucketsList = { + // FORMAT: lang_code: [bucket_number, bucket_number, ...], + // EXAMPLE: es: [1, 10, 12, 14], } /****************************** @@ -102,10 +76,15 @@ const USER_SELECTION: UserSelectionObject = { * slight from those used in the repo). These folders must be copied into the * root `.crowdin` folder of this repo. * - * Using the USER_SELECTION object above, the script iterates through each - * language chosen, using the dictionary object below to convert the repo lang - * code to the code used by Crowdin (only if needed, defaults to same). `fs` - * is used to find matching language folder. + * A CSV containing the language buckets that have been "Reviewed" can be exported + * from Crowdin to automate the process of importing the needed buckets. See + * "Instructions for use" above. + * + * You can alternatively use the USER_OVERRIDE object above to manually select buckets. + * + * The script iterates through each language chosen, using the dictionary object + * below to convert the repo lang code to the code used by Crowdin (only if + * needed, defaults to same). `fs` is used to find matching language folder. * * The "buckets" chosen (type number[]) are then iterated over, opening the * corresponding folder that begins with the same number string (formatted 00). @@ -124,6 +103,7 @@ const USER_SELECTION: UserSelectionObject = { // Initialize console arguments const VERBOSE = Boolean(argv.v || argv.verbose) +const BUCKET_GENERATION_ONLY = Boolean(argv.b || argv.buckets) const FULL_BUCKET_NAME_SUMMARY = Boolean(argv.f || argv.full) // Initialize root paths @@ -137,7 +117,7 @@ if (!existsSync(crowdinRoot)) mkdirSync(crowdinRoot) * This is used to convert any codes that may differ when performing folder lookup. */ const getCrowdinCode = (code: string): string => - i18Config.filter((lang) => lang.code === code)?.[0].crowdinCode || code + i18Config.filter((lang) => lang.code === code)?.[0]?.crowdinCode || code /** * Names for each bucket in order, zero indexed. @@ -189,6 +169,90 @@ const trackers: TrackerObject = { const log = (message: any, ...optionalParams: any): void => { VERBOSE && console.log(message, ...optionalParams) } + +/** + * Fetches CSV exported from Notion "Website translation board" table + * See above for details on how to export CSV and import into repo + * @returns Object containing language codes as keys, and an array of bucket numbers to be imported + */ +const fetchReviewedCsv = (): BucketsList => { + const csvDir: string = readdirSync(crowdinRoot).filter((dir: string) => + dir.startsWith("Website translation board") + )[0] + if (!csvDir) return {} + const path = join(crowdinRoot, csvDir) + const reviewedCsvPath: Array = readdirSync(path).filter( + (file: string) => { + const fileParts: Array = file.split(".") + return ( + fileParts[0].startsWith("https") && + !fileParts[0].endsWith("all") && + fileParts[1] === "csv" + ) + } + )[0] + const bucketsList: BucketsList = {} + const csvFile = readFileSync(join(path, reviewedCsvPath), "utf8") + if (!csvFile) return {} + const data = csvFile.split("\n").map((row: string) => { + const quotePair = /"([^"]+)"/g + const sanitized = row.replaceAll(quotePair, (match) => + match.replace(",", " ").replace(/"/g, "") + ) + return sanitized.split(",") + }) + const headings = data.shift() + const langCodeIndex = headings.indexOf("code") + const firstBucketIndex = headings.findIndex((item: string) => + item.startsWith("1)") + ) + data.forEach((rowItems: Array) => { + const langCode = rowItems[langCodeIndex].split(" ").at(-1) // "es-EM → es" parses to "es" + if (!langCode) return + const bucketsForLang: Array = [] + rowItems.forEach((item: string, idx: number) => { + if (item.includes("Reviewed")) + bucketsForLang.push(idx - firstBucketIndex + 1) + }) + bucketsList[langCode] = bucketsForLang + }) + return bucketsList +} + +/** + * If any buckets are selected in USER_OVERRIDE, use those instead of importing from CSV. + */ +const useUserOverRide = + Object.values(USER_OVERRIDE).filter((buckets) => buckets.length > 0).length > + 0 + +const bucketsToImport: BucketsList = useUserOverRide + ? USER_OVERRIDE + : fetchReviewedCsv() + +const highestBucketNumber: number = Object.values(bucketsToImport).reduce( + (prev: number, buckets: Array): number => + buckets[buckets.length - 1] > prev ? buckets[buckets.length - 1] : prev, + 0 +) + +/** + * If BUCKET_GENERATION_ONLY (-b, --buckets) flag is enabled, show overview + * of all langs and buckets to be imported. Also print a copy/paste ready + * object for USER_OVERRIDE, then exit the script early. + */ +if (BUCKET_GENERATION_ONLY) { + const bucketsOverview = {} + Object.entries(bucketsToImport).forEach(([langCode, buckets]) => { + bucketsOverview[langCode] = Array(highestBucketNumber - 1) + .fill(0) + .map((_, i) => (buckets.includes(i + 1) ? i + 1 : "")) + }) + console.table(bucketsOverview) + console.log("const USER_OVERRIDE: BucketsList =", bucketsToImport) + process.exit(0) +} + /** * Reads `ls` file contents of `_path`, moving .md and .json files * to their corresponding destinations in the repo. Function is called @@ -225,7 +289,11 @@ const scrapeDirectory = ( copyFileSync(source, jsonDestinationPath) // Update .json tracker trackers.langs[repoLangCode].jsonCopyCount++ - } else if (item.endsWith(".md") || item.endsWith(".svg")) { + } else if ( + item.endsWith(".md") || + item.endsWith(".svg") || + item.endsWith(".xlsx") + ) { const mdDestDirPath: string = join( repoRoot, "src", @@ -259,16 +327,16 @@ type SelectionItem = { crowdinLangCode: string buckets: Array } -const importSelection: Array = Object.keys(USER_SELECTION) +const importSelection: Array = Object.keys(bucketsToImport) .filter((repoLangCode: string): boolean => { - if (!USER_SELECTION[repoLangCode].length) trackers.emptyBuckets++ - return !!USER_SELECTION[repoLangCode].length + if (!bucketsToImport[repoLangCode].length) trackers.emptyBuckets++ + return !!bucketsToImport[repoLangCode].length }) .map( (repoLangCode: string): SelectionItem => ({ repoLangCode, crowdinLangCode: getCrowdinCode(repoLangCode), - buckets: USER_SELECTION[repoLangCode], + buckets: bucketsToImport[repoLangCode], }) ) diff --git a/src/templates/event.tsx b/src/templates/event.tsx index 6e696a06a8c..d3444af026e 100644 --- a/src/templates/event.tsx +++ b/src/templates/event.tsx @@ -20,10 +20,10 @@ import InlineLink from "../components/Link" import ExpandableCard from "../components/ExpandableCard" import PageMetadata from "../components/PageMetadata" import { type Item as ItemTableOfContents } from "../components/TableOfContents" -import UpgradeTableOfContents from "../components/UpgradeTableOfContents" import Text from "../components/OldText" import OldHeading from "../components/OldHeading" import GatsbyImage, { type GatsbyImageType } from "../components/GatsbyImage" +import LeftNavBar from "../components/LeftNavBar" import { ChildOnlyProp, Context } from "../types" @@ -200,14 +200,7 @@ const EventPage = ({ description={mdx.frontmatter.description} /> - - {tocItems && ( - - )} - + diff --git a/src/templates/roadmap.tsx b/src/templates/roadmap.tsx index c1227e48834..b5ef269abe0 100644 --- a/src/templates/roadmap.tsx +++ b/src/templates/roadmap.tsx @@ -4,7 +4,6 @@ import { MDXRenderer } from "gatsby-plugin-mdx" import { MDXProvider } from "@mdx-js/react" import { Box, - chakra, Flex, ListItem, Show, @@ -44,17 +43,15 @@ import RoadmapImageContent from "../components/Roadmap/RoadmapImageContent" import Text from "../components/OldText" import GlossaryTooltip from "../components/Glossary/GlossaryTooltip" import MdLink from "../components/MdLink" +import LeftNavBar from "../components/LeftNavBar" import { Page, - InfoColumn, ContentContainer, - InfoTitle, MobileButton, H1, H2, H3, Pre, - StyledButtonDropdown, MobileButtonDropdown, Title, Divider, @@ -215,7 +212,7 @@ const RoadmapPage = ({ } return ( - + @@ -274,17 +271,11 @@ const RoadmapPage = ({ description={mdx.frontmatter.description} /> - - - {mdx.frontmatter.title} - - {tocItems && ( - - )} - + diff --git a/src/templates/staking.tsx b/src/templates/staking.tsx index ddf625495ee..880e0887b3c 100644 --- a/src/templates/staking.tsx +++ b/src/templates/staking.tsx @@ -31,7 +31,6 @@ import MeetupList from "../components/MeetupList" import PageMetadata from "../components/PageMetadata" import ProductDisclaimer from "../components/ProductDisclaimer" import RandomAppList from "../components/RandomAppList" -import UpgradeTableOfContents from "../components/UpgradeTableOfContents" import TableOfContents, { type Item as ItemTableOfContents, } from "../components/TableOfContents" @@ -53,6 +52,7 @@ import Callout from "../components/Callout" import GlossaryTooltip from "../components/Glossary/GlossaryTooltip" import MdLink from "../components/MdLink" import OldHeading from "../components/OldHeading" +import LeftNavBar from "../components/LeftNavBar" import { isLangRightToLeft, TranslationKey } from "../utils/translations" import { Lang } from "../utils/languages" @@ -63,12 +63,9 @@ import { ChildOnlyProp, Context } from "../types" // TODO: move these components to a new folder under /components import { ContentContainer, - InfoColumn, - InfoTitle, MobileButton, MobileButtonDropdown, Page, - StyledButtonDropdown, } from "./use-cases" import GatsbyImage from "../components/GatsbyImage" @@ -438,17 +435,11 @@ const StakingPage = ({ /> {/* // TODO: Switch to `above="lg"` after completion of Chakra Migration */} - - - {mdx.frontmatter.title} - - {tocItems && ( - - )} - + diff --git a/src/templates/static.tsx b/src/templates/static.tsx index 2f8fcb29ae2..55cb65df6a8 100644 --- a/src/templates/static.tsx +++ b/src/templates/static.tsx @@ -41,12 +41,11 @@ import NetworkUpgradeSummary from "../components/History/NetworkUpgradeSummary" import TranslationChartImage from "../components/TranslationChartImage" import PostMergeBanner from "../components/Banners/PostMergeBanner" import EnergyConsumptionChart from "../components/EnergyConsumptionChart" -import QuizWidget from "../components/Quiz/QuizWidget" +import { StandaloneQuizWidget } from "../components/Quiz/QuizWidget" import { Item as ItemTableOfContents } from "../components/TableOfContents/utils" import Text from "../components/OldText" import GlossaryDefinition from "../components/Glossary/GlossaryDefinition" import GlossaryTooltip from "../components/Glossary/GlossaryTooltip" -import WritersCohortBanner from "../components/Banners/Implementations/WritersCohortBanner" import MdLink from "../components/MdLink" import OldHeading from "../components/OldHeading" @@ -209,7 +208,7 @@ const components = { NetworkUpgradeSummary, TranslationChartImage, EnergyConsumptionChart, - QuizWidget, + QuizWidget: StandaloneQuizWidget, UpgradeStatus, GlossaryDefinition, GlossaryTooltip, @@ -255,7 +254,6 @@ const StaticPage = ({ /> )} - ( /> ) -const InfoColumn = (props: ChildOnlyProp) => ( - -) - // Apply styles for classes within markdown here const ContentContainer = (props: BoxProps) => ( ( - -) - const MDXH1 = (props: HeadingProps) => ( - - - -

    {mdx.frontmatter.title}

    -
    - - {tocItems && ( - - )} -
    +
    {/* */} diff --git a/src/templates/use-cases.tsx b/src/templates/use-cases.tsx index d0e6f143062..25828c1ad43 100644 --- a/src/templates/use-cases.tsx +++ b/src/templates/use-cases.tsx @@ -39,7 +39,6 @@ import Logo from "../components/Logo" import MeetupList from "../components/MeetupList" import PageMetadata from "../components/PageMetadata" import RandomAppList from "../components/RandomAppList" -import UpgradeTableOfContents from "../components/UpgradeTableOfContents" import TableOfContents, { type Item as ItemTableOfContents, } from "../components/TableOfContents" @@ -48,11 +47,12 @@ import SectionNav from "../components/SectionNav" import Emoji from "../components/Emoji" import YouTube from "../components/YouTube" import FeedbackCard from "../components/FeedbackCard" -import QuizWidget from "../components/Quiz/QuizWidget" +import { StandaloneQuizWidget } from "../components/Quiz/QuizWidget" import GlossaryTooltip from "../components/Glossary/GlossaryTooltip" import MdLink from "../components/MdLink" import OldHeading from "../components/OldHeading" import GatsbyImage, { type GatsbyImageType } from "../components/GatsbyImage" +import LeftNavBar from "../components/LeftNavBar" import { isLangRightToLeft } from "../utils/translations" import { getSummaryPoints } from "../utils/getSummaryPoints" @@ -134,7 +134,7 @@ const components = { DocLink, ExpandableCard, YouTube, - QuizWidget, + QuizWidget: StandaloneQuizWidget, GlossaryTooltip, } @@ -209,35 +209,12 @@ export const Page = (props: FlexProps) => ( /> ) -export const InfoColumn = (props: ChildOnlyProp) => ( - -) - -export const InfoTitle = (props: ChildOnlyProp) => ( -

    -) - export const StyledButtonDropdown = ({ list, ...rest }: FlexProps & Pick) => ( - + ) @@ -461,17 +438,11 @@ const UseCasePage = ({ description={mdx.frontmatter.description} /> - - - {mdx.frontmatter.title} - - {tocItems && ( - - )} - + diff --git a/src/utils/languages.ts b/src/utils/languages.ts index 7efed2f094e..edc17a42db8 100644 --- a/src/utils/languages.ts +++ b/src/utils/languages.ts @@ -29,6 +29,7 @@ export type Lang = | "ka" | "kk" | "km" + | "kn" | "ko" | "lt" | "ml" diff --git a/webpack.lambda.js b/webpack.lambda.js deleted file mode 100644 index d7399931904..00000000000 --- a/webpack.lambda.js +++ /dev/null @@ -1,29 +0,0 @@ -// Expose a custom webpack config in order to let netlify-lambda read it and -// build the TS lambda functions. This way, netlify-lambda use the same -// babel config that Gatsby does. -module.exports = { - module: { - rules: [ - { - test: /\.(m?js|ts)?$/, - exclude: /(node_modules|bower_components)/, - use: { - loader: "babel-loader", - options: { - presets: [ - "@babel/preset-typescript", - [ - "babel-preset-gatsby", - { - targets: { - browsers: [">0.25%", "not dead"], - }, - }, - ], - ], - }, - }, - }, - ], - }, -} diff --git a/yarn.lock b/yarn.lock index 6f6e79408da..ae769999992 100644 --- a/yarn.lock +++ b/yarn.lock @@ -214,6 +214,14 @@ dependencies: "@babel/highlight" "^7.22.5" +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" @@ -241,7 +249,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.10.4", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.19.6", "@babel/core@^7.20.12", "@babel/core@^7.22.9", "@babel/core@^7.7.5": +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.15.5", "@babel/core@^7.19.6", "@babel/core@^7.20.12", "@babel/core@^7.22.9", "@babel/core@^7.7.5": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== @@ -271,7 +279,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.14.0", "@babel/generator@^7.15.4", "@babel/generator@^7.20.14", "@babel/generator@^7.22.7", "@babel/generator@^7.22.9": +"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.14.0", "@babel/generator@^7.15.4", "@babel/generator@^7.20.14", "@babel/generator@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== @@ -281,6 +289,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -341,6 +359,11 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + "@babel/helper-environment-visitor@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" @@ -354,6 +377,14 @@ "@babel/template" "^7.22.5" "@babel/types" "^7.22.5" +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" @@ -447,6 +478,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + "@babel/helper-validator-identifier@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" @@ -484,11 +520,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.8", "@babel/parser@^7.20.13", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7": version "7.22.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" @@ -505,7 +555,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-transform-optional-chaining" "^7.22.5" -"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.14.0", "@babel/plugin-proposal-class-properties@^7.18.6": +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.14.0", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== @@ -538,7 +588,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.10.4", "@babel/plugin-proposal-object-rest-spread@^7.14.7": +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.14.7": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== @@ -972,13 +1022,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-assign@^7.10.4": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.22.5.tgz#290c1b9555dcea48bb2c29ad94237777600d04f9" - integrity sha512-iDhx9ARkXq4vhZ2CYOSnQXkmxkDgosLi3J8Z17mKz7LyzthtkdVchLD7WZ3aXeCuvJDOW3+1I5TpJmwIbF9MKQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-object-rest-spread@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1" @@ -1184,7 +1227,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/preset-env@^7.10.4", "@babel/preset-env@^7.15.4", "@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9": +"@babel/preset-env@^7.15.4", "@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.9.tgz#57f17108eb5dfd4c5c25a44c1977eba1df310ac7" integrity sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g== @@ -1345,19 +1388,28 @@ "@babel/parser" "^7.22.5" "@babel/types" "^7.22.5" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.9", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.20.13", "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8": - version "7.22.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" - integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.7" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.9", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.20.13", "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.22.7" - "@babel/types" "^7.22.5" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" @@ -1370,6 +1422,15 @@ "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" +"@babel/types@^7.22.15", "@babel/types@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" @@ -2624,6 +2685,11 @@ resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== +"@fastify/accept-negotiator@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz#c1c66b3b771c09742a54dd5bc87c582f6b0630ff" + integrity sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ== + "@gatsbyjs/parcel-namer-relative-to-cwd@^2.11.0": version "2.11.0" resolved "https://registry.yarnpkg.com/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-2.11.0.tgz#80b92ea1432838f5d86a8f85719ffe57fd3ddabe" @@ -2853,6 +2919,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@ioredis/commands@^1.1.1": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11" + integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -3200,13 +3271,75 @@ pump "^3.0.0" tar-fs "^2.1.1" -"@netlify/functions@^1.2.0": +"@netlify/functions@^1.2.0", "@netlify/functions@^1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-1.6.0.tgz#c373423e6fef0e6f7422ac0345e8bbf2cb692366" integrity sha512-6G92AlcpFrQG72XU8YH8pg94eDnq7+Q0YJhb8x4qNpdGsvuzvrfHWBmqFGp/Yshmv4wex9lpsTRZOocdrA2erQ== dependencies: is-promise "^4.0.0" +"@netlify/functions@^2.1.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-2.3.0.tgz#37e2ca41c0034a10de4addbdff7fbb8ec669e8c7" + integrity sha512-E3kzXPWMP/r1rAWhjTaXcaOT47dhEvg/eQUJjRLhD9Zzp0WqkdynHr+bqff4rFNv6tuXrtFZrpbPJFKHH0c0zw== + dependencies: + "@netlify/serverless-functions-api" "1.9.0" + is-promise "^4.0.0" + +"@netlify/ipx@^1.4.5": + version "1.4.5" + resolved "https://registry.yarnpkg.com/@netlify/ipx/-/ipx-1.4.5.tgz#c0b38628457786ca3edf365a9a0cf97cdd9d0883" + integrity sha512-QuPxUj8Bn8hXwjdcA1BF+HPLqFJ2e9OCNrKX/s3hoUFjjqQrNSK8lLARAtzGfOM3BRsTXyi/zGdwBE+oJKd0dw== + dependencies: + "@netlify/functions" "^2.1.0" + etag "^1.8.1" + fs-extra "^11.0.0" + ipx "^1.3.1" + micromatch "^4.0.5" + mkdirp "^3.0.0" + murmurhash "^2.0.0" + node-fetch "^2.0.0" + ufo "^1.0.0" + unstorage "^1.0.0" + +"@netlify/node-cookies@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@netlify/node-cookies/-/node-cookies-0.1.0.tgz#dda912ba618527695cf519fafa221c5e6777c612" + integrity sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g== + +"@netlify/plugin-gatsby@^3.7.2": + version "3.7.2" + resolved "https://registry.yarnpkg.com/@netlify/plugin-gatsby/-/plugin-gatsby-3.7.2.tgz#ae7bb2367e5c43838dc8d6d6cb85bab67b054147" + integrity sha512-xEWPmZQkGwLkJNjTwzv6CsNYfkDERr8wOUFdNmIX+XUiN8GMwYOGQafqGdEPKqxsF/O95b3i3DhKDhc0PuW2rA== + dependencies: + "@netlify/functions" "^1.6.0" + "@netlify/ipx" "^1.4.5" + abortcontroller-polyfill "^1.7.3" + chalk "^4.1.2" + co-body "^6.1.0" + cookie "^0.5.0" + download "^8.0.0" + etag "^1.8.1" + fs-extra "^10.0.0" + linkfs "^2.1.0" + multer "^1.4.2" + node-fetch "^2.6.1" + node-stream-zip "^1.15.0" + pathe "^0.3.0" + pretty-bytes "^5.6.0" + semver "^7.3.5" + statuses "^2.0.1" + tempy "^1.0.0" + uuid "^9.0.0" + +"@netlify/serverless-functions-api@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@netlify/serverless-functions-api/-/serverless-functions-api-1.9.0.tgz#3e58249e57350aee2c5143c282fddb4abbae4a9d" + integrity sha512-Jq4uk1Mwa5vyxImupJYXPP+I5yYcp3PtguvXtJRutKdm9DPALXfZVtCQzBWMNdZiqVWCM3La9hvaBsPjSMfeug== + dependencies: + "@netlify/node-cookies" "^0.1.0" + urlpattern-polyfill "8.0.2" + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -3521,51 +3654,120 @@ resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.2.0.tgz#3d1a71f251ba829ab884dfe119cc4f4c49c7222b" integrity sha512-nU2wh00CTQT9rr1TIKTjdQ9lAGYpmz6XuKw0nAwAN+S2A5YiD55BK1u+E5WMCT8YOIDe/n6gaj4o/Bi9294SSQ== +"@parcel/watcher-android-arm64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz#d82e74bb564ebd4d8a88791d273a3d2bd61e27ab" + integrity sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA== + "@parcel/watcher-darwin-arm64@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.2.0.tgz#9ed47d9e4146d53a39f62577a993426d6ddec2d2" integrity sha512-cJl0UZDcodciy3TDMomoK/Huxpjlkkim3SyMgWzjovHGOZKNce9guLz2dzuFwfObBFCjfznbFMIvAZ5syXotYw== +"@parcel/watcher-darwin-arm64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz#c9cd03f8f233d512fcfc873d5b4e23f1569a82ad" + integrity sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw== + "@parcel/watcher-darwin-x64@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.2.0.tgz#9b553e61f4a01a0947b1c005619db7b7c9a286d1" integrity sha512-QI77zxaGrCV1StKcoRYfsUfmUmvPMPfQrubkBBy5XujV2fwaLgZivQOTQMBgp5K2+E19u1ufpspKXAPqSzpbyg== +"@parcel/watcher-darwin-x64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz#83c902994a2a49b9e1ab5050dba24876fdc2c219" + integrity sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow== + +"@parcel/watcher-freebsd-x64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz#7a0f4593a887e2752b706aff2dae509aef430cf6" + integrity sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw== + "@parcel/watcher-linux-arm-glibc@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.2.0.tgz#2644f6292b862c52d636978da8711bf2f7b14b24" integrity sha512-I2GPBcAXazPzabCmfsa3HRRW+MGlqxYd8g8RIueJU+a4o5nyNZDz0CR1cu0INT0QSQXEZV7w6UE8Hz9CF8u3Pg== +"@parcel/watcher-linux-arm-glibc@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz#3fc90c3ebe67de3648ed2f138068722f9b1d47da" + integrity sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ== + "@parcel/watcher-linux-arm64-glibc@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.2.0.tgz#b82c1715a20e6725c89b2697a208d2ae488d22da" integrity sha512-St5mlfp+2lS9AmgixUqfwJa/DwVmTCJxC1HcOubUTz6YFOKIlkHCeUa1Bxi4E/tR/HSez8+heXHL8HQkJ4Bd8g== +"@parcel/watcher-linux-arm64-glibc@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz#f7bbbf2497d85fd11e4c9e9c26ace8f10ea9bcbc" + integrity sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA== + "@parcel/watcher-linux-arm64-musl@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.2.0.tgz#45511adc69c4c89b10965f0dd1519e56a00f512f" integrity sha512-jS+qfhhoOBVWwMLP65MaG8xdInMK30pPW8wqTCg2AAuVJh5xepMbzkhHJ4zURqHiyY3EiIRuYu4ONJKCxt8iqA== +"@parcel/watcher-linux-arm64-musl@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz#de131a9fcbe1fa0854e9cbf4c55bed3b35bcff43" + integrity sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw== + "@parcel/watcher-linux-x64-glibc@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.2.0.tgz#f6e878bf40874b1ce9530ec87e5c2e644e9ad5ac" integrity sha512-xJvJ7R2wJdi47WZBFS691RDOWvP1j/IAs3EXaWVhDI8FFITbWrWaln7KoNcR0Y3T+ZwimFY/cfb0PNht1q895g== +"@parcel/watcher-linux-x64-glibc@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz#193dd1c798003cdb5a1e59470ff26300f418a943" + integrity sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow== + "@parcel/watcher-linux-x64-musl@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.2.0.tgz#4a1b7a8f65b42f50b1819185ef56ed3c9e251425" integrity sha512-D+NMpgr23a+RI5mu8ZPKWy7AqjBOkURFDgP5iIXXEf/K3hm0jJ3ogzi0Ed2237B/CdYREimCgXyeiAlE/FtwyA== +"@parcel/watcher-linux-x64-musl@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz#6dbdb86d96e955ab0fe4a4b60734ec0025a689dd" + integrity sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g== + +"@parcel/watcher-wasm@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-wasm/-/watcher-wasm-2.3.0.tgz#73b66c6fbd2a3326ae86a1ec77eab7139d0dd725" + integrity sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA== + dependencies: + is-glob "^4.0.3" + micromatch "^4.0.5" + napi-wasm "^1.1.0" + "@parcel/watcher-win32-arm64@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.2.0.tgz#4cdbaf8c1097038e838d12f897ac8595b18dfb1f" integrity sha512-z225cPn3aygJsyVUOWwfyW+fY0Tvk7N3XCOl66qUPFxpbuXeZuiuuJemmtm8vxyqa3Ur7peU/qJxrpC64aeI7Q== +"@parcel/watcher-win32-arm64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz#59da26a431da946e6c74fa6b0f30b120ea6650b6" + integrity sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw== + +"@parcel/watcher-win32-ia32@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz#3ee6a18b08929cd3b788e8cc9547fd9a540c013a" + integrity sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow== + "@parcel/watcher-win32-x64@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.2.0.tgz#f2fcc255b7cadfd0afa7c51cde36413632075bcc" integrity sha512-JqGW0RJ61BkKx+yYzIURt9s53P7xMVbv0uxYPzAXLBINGaFmkIKSuUPyBVfy8TMbvp93lvF4SPBNDzVRJfvgOw== +"@parcel/watcher-win32-x64@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz#14e7246289861acc589fd608de39fe5d8b4bb0a7" + integrity sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA== + "@parcel/watcher@^2.0.7": version "2.2.0" resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.2.0.tgz#92067954e591d239c3ecfa08add205f88f476068" @@ -3587,6 +3789,29 @@ "@parcel/watcher-win32-arm64" "2.2.0" "@parcel/watcher-win32-x64" "2.2.0" +"@parcel/watcher@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.3.0.tgz#803517abbc3981a1a1221791d9f59dc0590d50f9" + integrity sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.3.0" + "@parcel/watcher-darwin-arm64" "2.3.0" + "@parcel/watcher-darwin-x64" "2.3.0" + "@parcel/watcher-freebsd-x64" "2.3.0" + "@parcel/watcher-linux-arm-glibc" "2.3.0" + "@parcel/watcher-linux-arm64-glibc" "2.3.0" + "@parcel/watcher-linux-arm64-musl" "2.3.0" + "@parcel/watcher-linux-x64-glibc" "2.3.0" + "@parcel/watcher-linux-x64-musl" "2.3.0" + "@parcel/watcher-win32-arm64" "2.3.0" + "@parcel/watcher-win32-ia32" "2.3.0" + "@parcel/watcher-win32-x64" "2.3.0" + "@parcel/workers@2.8.3": version "2.8.3" resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.8.3.tgz#255450ccf4db234082407e4ddda5fd575f08c235" @@ -3667,6 +3892,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== + "@sindresorhus/is@^4.0.0": version "4.6.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" @@ -5462,64 +5692,21 @@ "@webassemblyjs/helper-numbers" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@webassemblyjs/floating-point-hex-parser@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - "@webassemblyjs/helper-api-error@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - "@webassemblyjs/helper-buffer@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-numbers@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" @@ -5534,11 +5721,6 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - "@webassemblyjs/helper-wasm-section@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" @@ -5549,16 +5731,6 @@ "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/wasm-gen" "1.11.6" -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/ieee754@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" @@ -5566,13 +5738,6 @@ dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - "@webassemblyjs/leb128@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" @@ -5580,37 +5745,11 @@ dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - "@webassemblyjs/utf8@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - "@webassemblyjs/wasm-edit@^1.11.5": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" @@ -5636,17 +5775,6 @@ "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - "@webassemblyjs/wasm-opt@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" @@ -5657,16 +5785,6 @@ "@webassemblyjs/wasm-gen" "1.11.6" "@webassemblyjs/wasm-parser" "1.11.6" -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" @@ -5679,30 +5797,6 @@ "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - "@webassemblyjs/wast-printer@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" @@ -5711,15 +5805,6 @@ "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - "@wry/context@^0.7.0": version "0.7.3" resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.3.tgz#240f6dfd4db5ef54f81f6597f6714e58d4f476a1" @@ -5798,7 +5883,7 @@ dependencies: "@zag-js/dom-query" "0.10.5" -abortcontroller-polyfill@^1.1.9: +abortcontroller-polyfill@^1.1.9, abortcontroller-polyfill@^1.7.3: version "1.7.5" resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== @@ -5838,7 +5923,7 @@ acorn-walk@^8.1.1, acorn-walk@^8.2.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^6.2.1, acorn@^6.4.1: +acorn@^6.2.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== @@ -5848,7 +5933,7 @@ acorn@^7.4.0, acorn@^7.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.10.0, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.10.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== @@ -5878,11 +5963,6 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" @@ -5890,7 +5970,7 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== @@ -5902,7 +5982,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -6022,15 +6102,7 @@ ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -6053,16 +6125,18 @@ application-config-path@^0.1.0: resolved "https://registry.yarnpkg.com/application-config-path/-/application-config-path-0.1.1.tgz#8b5ac64ff6afdd9bd70ce69f6f64b6998f5f756e" integrity sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw== -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -arch@^2.1.1: +arch@^2.1.1, arch@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== +archive-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" + integrity sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA== + dependencies: + file-type "^4.2.0" + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -6101,21 +6175,6 @@ aria-query@^5.1.3: dependencies: dequal "^2.0.3" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - array-buffer-byte-length@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" @@ -6155,11 +6214,6 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - array.prototype.findlastindex@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b" @@ -6229,24 +6283,6 @@ asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - assert@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" @@ -6257,11 +6293,6 @@ assert@^2.0.0: object-is "^1.0.1" util "^0.12.0" -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" @@ -6293,11 +6324,6 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-each@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" - integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== - async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -6393,7 +6419,7 @@ babel-jsx-utils@^1.1.0: resolved "https://registry.yarnpkg.com/babel-jsx-utils/-/babel-jsx-utils-1.1.0.tgz#304ce4fce0c86cbeee849551a45eb4ed1036381a" integrity sha512-Mh1j/rw4xM9T3YICkw22aBQ78FhsHdsmlb9NEk4uVAFBOg+Ez9ZgXXHugoBPCZui3XLomk/7/JBBH4daJqTkQQ== -babel-loader@^8.1.0, babel-loader@^8.3.0: +babel-loader@^8.3.0: version "8.3.0" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== @@ -6623,7 +6649,7 @@ base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" -base64-js@^1.0.2, base64-js@^1.3.1: +base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -6633,19 +6659,6 @@ base64id@2.0.0, base64id@~2.0.0: resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - better-opn@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" @@ -6675,22 +6688,18 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== dependencies: - file-uri-to-path "1.0.0" + readable-stream "^2.3.5" + safe-buffer "^5.1.1" bl@^4.0.3, bl@^4.1.0: version "4.1.0" @@ -6701,21 +6710,11 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -bluebird@^3.0.5, bluebird@^3.5.1, bluebird@^3.5.5, bluebird@^3.7.2: +bluebird@^3.0.5, bluebird@^3.5.1, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - body-parser@1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -6734,24 +6733,6 @@ body-parser@1.20.1: type-is "~1.6.18" unpipe "1.0.0" -body-parser@^1.19.0: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -6793,22 +6774,6 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -6816,11 +6781,6 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - browser-assert@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" @@ -6836,60 +6796,6 @@ browser-lang@^0.2.1: resolved "https://registry.yarnpkg.com/browser-lang/-/browser-lang-0.2.1.tgz#7374d2e033743a7600790189de588a051fd4ea25" integrity sha512-+xmtsTxVZKWrKHoNUQp4Tm7BEXlnMwOMAHZAh1SSot1+n04qHLFIH0K5anX52k5BkcauggbaNlWT8f3bVwDh/Q== -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - browserify-zlib@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" @@ -6897,13 +6803,6 @@ browserify-zlib@^0.1.4: dependencies: pako "~0.2.0" -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.18.1, browserslist@^4.21.0, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.7, browserslist@^4.21.9, browserslist@^4.6.6: version "4.21.10" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" @@ -6921,31 +6820,35 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.5.0: +buffer@^5.2.1, buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -6953,10 +6856,13 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== +busboy@^0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453" + integrity sha512-InWFDomvlkEj+xWLBfU3AvnbVYqeTWmQopiW0tWWEy5yehYm2YkGEc59sUmw/4ty5Zj/b0WHGs1LgecuBSBGrg== + dependencies: + dicer "0.2.5" + readable-stream "1.1.x" busboy@^1.0.0: version "1.6.0" @@ -6993,42 +6899,6 @@ c8@^7.6.0: yargs "^16.2.0" yargs-parser "^20.2.9" -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - cache-manager@^2.11.1: version "2.11.1" resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-2.11.1.tgz#212e8c3db15288af653b029a1d9fe12f1fd9df61" @@ -7061,7 +6931,20 @@ cacheable-request@^10.2.8: normalize-url "^8.0.0" responselike "^3.0.0" -cacheable-request@^7.0.2: +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ== + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + +cacheable-request@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== @@ -7332,26 +7215,7 @@ cheerio@^1.0.0-rc.10: parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.3: +chokidar@^3.4.2, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -7396,23 +7260,12 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== +citty@^0.1.3, citty@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/citty/-/citty-0.1.4.tgz#91091be06ae4951dffa42fd443de7fe72245f2e0" + integrity sha512-Q3bK1huLxzQrvj7hImJ7Z1vKYJRPQCDnd0EjXfHMidcjecGOMuLrmuQmtWmFkuKLcMThlGh1yCKG8IEc6VeNXQ== dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" + consola "^3.2.3" classnames@^2.2.5: version "2.3.2" @@ -7517,6 +7370,15 @@ clipboardy@^2.3.0: execa "^1.0.0" is-wsl "^2.1.1" +clipboardy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-3.0.0.tgz#f3876247404d334c9ed01b6f269c11d09a5e3092" + integrity sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg== + dependencies: + arch "^2.2.0" + execa "^5.1.1" + is-wsl "^2.2.0" + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -7544,6 +7406,13 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== + dependencies: + mimic-response "^1.0.0" + clone-response@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" @@ -7561,19 +7430,26 @@ clone@^2.1.1: resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== +cluster-key-slot@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" + integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== + +co-body@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/co-body/-/co-body-6.1.0.tgz#d87a8efc3564f9bfe3aced8ef5cd04c7a8766547" + integrity sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ== + dependencies: + inflation "^2.0.0" + qs "^6.5.2" + raw-body "^2.3.3" + type-is "^1.6.16" + collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -7651,7 +7527,7 @@ command-exists@^1.2.4: resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -commander@^2.19.0, commander@^2.20.0: +commander@^2.19.0, commander@^2.20.0, commander@^2.20.3, commander@^2.8.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -7671,7 +7547,7 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.0.0, commander@^9.3.0: +commander@^9.3.0: version "9.5.0" resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== @@ -7696,11 +7572,6 @@ compare-versions@^3.6.0: resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -7731,7 +7602,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.5.0, concat-stream@^1.5.2, concat-stream@^1.6.2: +concat-stream@^1.5.2, concat-stream@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -7766,10 +7637,10 @@ confusing-browser-globals@^1.0.10: resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== +consola@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" + integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ== constant-case@^2.0.0: version "2.0.0" @@ -7793,14 +7664,14 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== -content-disposition@0.5.4: +content-disposition@0.5.4, content-disposition@^0.5.2: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" -content-type@~1.0.4, content-type@~1.0.5: +content-type@~1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== @@ -7820,6 +7691,11 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== +cookie-es@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.0.0.tgz#4759684af168dfc54365b2c2dda0a8d7ee1e4865" + integrity sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ== + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -7835,23 +7711,6 @@ cookie@~0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - copy-to-clipboard@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" @@ -7926,14 +7785,6 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - create-gatsby@^3.11.0: version "3.11.0" resolved "https://registry.yarnpkg.com/create-gatsby/-/create-gatsby-3.11.0.tgz#098251f8df1b827c1eb9fde47d23626f5bcb19b4" @@ -7941,29 +7792,6 @@ create-gatsby@^3.11.0: dependencies: "@babel/runtime" "^7.20.13" -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -8003,23 +7831,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -8160,6 +7971,11 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== + cssnano-preset-default@^5.2.14: version "5.2.14" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" @@ -8230,11 +8046,6 @@ csvtojson@^2.0.10: lodash "^4.17.3" strip-bom "^2.0.0" -cyclist@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3" - integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA== - "d3-array@2 - 3", "d3-array@2.10.0 - 3", d3-array@^3.1.6: version "3.2.4" resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" @@ -8331,7 +8142,7 @@ date-fns@^2.30.0: dependencies: "@babel/runtime" "^7.21.0" -debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: +debug@2, debug@2.6.9, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -8375,6 +8186,13 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + decompress-response@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" @@ -8382,6 +8200,59 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw== + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" + integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -8459,28 +8330,6 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - defu@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.2.tgz#1217cba167410a1765ba93893c6dbac9ed9d9e5c" @@ -8510,6 +8359,11 @@ delegate@^3.1.2: resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -8525,13 +8379,10 @@ dequal@^2.0.2, dequal@^2.0.3: resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== -des.js@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" - integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" +destr@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.1.tgz#2fc7bddc256fed1183e03f8d148391dde4023cb2" + integrity sha512-M1Ob1zPSIvlARiJUkKqvAZ3VAqQY6Jcuth/pBKQ2b1dX/Qx0OnJ8Vux6J2H5PTMQeRzWrrbTu70VxBfv/OPDJA== destroy@1.2.0: version "1.2.0" @@ -8617,20 +8468,19 @@ devcert@^1.2.2: tmp "^0.0.33" tslib "^1.10.0" +dicer@0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f" + integrity sha512-FDvbtnq7dzlPz0wyYlOExifDEZcu8h+rErEXgfxqmLfRfC/kJidEFh4+effJRO3P0xmfqyPbSMG0LveNRfTKVg== + dependencies: + readable-stream "1.1.x" + streamsearch "0.1.2" + diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -8713,11 +8563,6 @@ dom-serializer@~0.1.0: domelementtype "^1.3.0" entities "^1.1.1" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -8830,12 +8675,34 @@ dotenv@^8.2.0, dotenv@^8.6.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== +download@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/download/-/download-8.0.0.tgz#afc0b309730811731aae9f5371c9f46be73e51b1" + integrity sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA== + dependencies: + archive-type "^4.0.0" + content-disposition "^0.5.2" + decompress "^4.2.1" + ext-name "^5.0.0" + file-type "^11.1.0" + filenamify "^3.0.0" + get-stream "^4.1.0" + got "^8.3.1" + make-dir "^2.1.0" + p-event "^2.1.0" + pify "^4.0.1" + +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0: +duplexify@^3.5.0, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== @@ -8867,19 +8734,6 @@ electron-to-chromium@^1.4.477: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.479.tgz#ec9f676f23d3a0b0e429bc454d25e0b3253d2118" integrity sha512-ABv1nHMIR8I5n3O3Een0gr6i0mfM+YcTZqjHy3pAYaOjgFG+BMquuKrSyfYf5CbEkLr9uM05RA3pOk4udNB/aQ== -elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - embla-carousel-react@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-7.1.0.tgz#e716f4df7fd31f7ca3e59a3e011158167bc3c468" @@ -8965,15 +8819,6 @@ engine.io@~6.4.1: engine.io-parser "~5.0.3" ws "~8.11.0" -enhanced-resolve@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - enhanced-resolve@^5.14.1, enhanced-resolve@^5.15.0: version "5.15.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" @@ -9015,13 +8860,6 @@ eol@^0.9.1: resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== -errno@^0.1.3, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -9387,14 +9225,6 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -9496,7 +9326,7 @@ esquery@^1.4.0: dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0, esrecurse@^4.3.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -9527,7 +9357,7 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@~1.8.1: +etag@^1.8.1, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== @@ -9565,19 +9395,11 @@ eventemitter3@^4.0.1, eventemitter3@^4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.2.0: +events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -9621,19 +9443,6 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - expand-template@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" @@ -9648,14 +9457,7 @@ express-http-proxy@^1.6.3: es6-promise "^4.1.1" raw-body "^2.3.0" -express-logging@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/express-logging/-/express-logging-1.1.1.tgz#62839618cbab5bb3610f1a1c1485352fe9d26c2a" - integrity sha512-1KboYwxxCG5kwkJHR5LjFDTD1Mgl8n4PIMcCuhhd/1OqaxlC68P3QKbvvAbZVUtVgtlxEdTgSUwf6yxwzRCuuA== - dependencies: - on-headers "^1.0.0" - -express@^4.17.1, express@^4.17.3, express@^4.18.2: +express@^4.17.3, express@^4.18.2: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== @@ -9692,6 +9494,21 @@ express@^4.17.1, express@^4.17.3, express@^4.18.2: utils-merge "1.0.1" vary "~1.1.2" +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + ext@^1.1.2: version "1.7.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" @@ -9706,14 +9523,6 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - extend@^3.0.0, extend@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -9728,20 +9537,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - extract-zip@^1.6.6: version "1.7.0" resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" @@ -9842,11 +9637,6 @@ fetch-retry@^5.0.2: resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.6.tgz#17d0bc90423405b7a88b74355bf364acd2a7fa56" integrity sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ== -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -9877,6 +9667,11 @@ file-system-cache@2.3.0: fs-extra "11.1.1" ramda "0.29.0" +file-type@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-11.1.0.tgz#93780f3fed98b599755d846b99a1617a2ad063b8" + integrity sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g== + file-type@^16.5.3, file-type@^16.5.4: version "16.5.4" resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" @@ -9886,10 +9681,25 @@ file-type@^16.5.3, file-type@^16.5.4: strtok3 "^6.2.4" token-types "^4.1.1" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== + +file-type@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + integrity sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ== + +file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ== + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== filelist@^1.0.4: version "1.0.4" @@ -9903,6 +9713,15 @@ filename-reserved-regex@^2.0.0: resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ== +filenamify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-3.0.0.tgz#9603eb688179f8c5d40d828626dcbb92c3a4672c" + integrity sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g== + dependencies: + filename-reserved-regex "^2.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + filenamify@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-4.3.0.tgz#62391cb58f02b09971c9d4f9d63b3cf9aba03106" @@ -9917,16 +9736,6 @@ filesize@^8.0.6: resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -9952,7 +9761,7 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: +find-cache-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -10039,14 +9848,6 @@ flow-parser@0.*: resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.213.1.tgz#c1916465050b165c9d8b931c02d78fe582e6c20c" integrity sha512-l+vyZO6hrWG60DredryA8mq62fK9vxL6/RR13HA/aVLBNh9No/wEJsKI+CJqPRkF4CIRUfcJQBeaMXSKcncxUQ== -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - focus-lock@^0.11.6: version "0.11.6" resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.11.6.tgz#e8821e21d218f03e100f7dc27b733f9c4f61e683" @@ -10081,11 +9882,6 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - foreground-child@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" @@ -10172,13 +9968,6 @@ fraction.js@^4.2.0: resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - framer-motion@^6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-6.5.1.tgz#802448a16a6eb764124bf36d8cbdfa6dd6b931a7" @@ -10212,7 +10001,7 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -from2@^2.1.0: +from2@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== @@ -10230,7 +10019,7 @@ fs-exists-cached@1.0.0, fs-exists-cached@^1.0.0: resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce" integrity sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg== -fs-extra@11.1.1, fs-extra@^11.1.0, fs-extra@^11.1.1: +fs-extra@11.1.1, fs-extra@^11.0.0, fs-extra@^11.1.0, fs-extra@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== @@ -10270,29 +10059,11 @@ fs-monkey@^1.0.4: resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -11096,6 +10867,11 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-port-please@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.1.tgz#2556623cddb4801d823c0a6a15eec038abb483be" + integrity sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA== + get-port@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" @@ -11106,7 +10882,20 @@ get-port@^5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -get-stream@^4.0.0: +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== @@ -11133,11 +10922,6 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - giget@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/giget/-/giget-1.1.2.tgz#f99a49cb0ff85479c8c3612cdc7ca27f2066e818" @@ -11169,14 +10953,6 @@ github-slugger@^1.0.0, github-slugger@^1.2.1, github-slugger@^1.3.0: resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d" integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -11317,12 +11093,35 @@ got@^12.1.0: p-cancelable "^3.0.0" responselike "^3.0.0" +got@^8.3.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + graceful-fs@4.2.10: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -11390,6 +11189,20 @@ gzip-size@^6.0.0: dependencies: duplexer "^0.1.2" +h3@^1.7.1, h3@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/h3/-/h3-1.8.2.tgz#69ea8ca0285c1bb268cd08b9a7017e02939f88b7" + integrity sha512-1Ca0orJJlCaiFY68BvzQtP2lKLk46kcLAxVM8JgYbtm2cUg6IY7pjpYgWMwUvDO9QI30N5JAukOKoT8KD3Q0PQ== + dependencies: + cookie-es "^1.0.0" + defu "^6.1.2" + destr "^2.0.1" + iron-webcrypto "^0.10.1" + radix3 "^1.1.0" + ufo "^1.3.0" + uncrypto "^0.1.3" + unenv "^1.7.4" + handlebars@^4.7.7: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" @@ -11439,11 +11252,23 @@ has-proto@^1.0.1: resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + has-tostringtag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" @@ -11451,37 +11276,6 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -11489,28 +11283,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - hash-wasm@^4.9.0: version "4.9.0" resolved "https://registry.yarnpkg.com/hash-wasm/-/hash-wasm-4.9.0.tgz#7e9dcc9f7d6bd0cc802f2a58f24edce999744206" integrity sha512-7SW7ejyfnRxuOc7ptQHSf4LDoZaWOivfzqw+5rpcQku0nHfmicPKE51ra9BiRLAmT8+gGLestr1XroUkqdjL6w== -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - hasha@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" @@ -11656,15 +11433,6 @@ hey-listen@^1.0.8: resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -11775,6 +11543,11 @@ htmr@^1.0.2: html-entities "^2.1.0" htmlparser2 "^6.0.0" +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" @@ -11791,6 +11564,11 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" +http-shutdown@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/http-shutdown/-/http-shutdown-1.2.2.tgz#41bc78fc767637c4c95179bc492f312c0ae64c5f" + integrity sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw== + http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" @@ -11807,11 +11585,6 @@ http2-wrapper@^2.1.10: quick-lru "^5.1.1" resolve-alpn "^1.2.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== - https-proxy-agent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" @@ -11880,16 +11653,11 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -11900,6 +11668,11 @@ ignore@^5.1.4, ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== +image-meta@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/image-meta/-/image-meta-0.1.1.tgz#a84dc7d5f61c7d60e85ec0c3ac81beee8646039b" + integrity sha512-+oXiHwOEPr1IE5zY0tcBLED/CYcre15J4nwL50x3o0jxWqEkyjrusiKP3YSU+tr9fvJp33ZcP5Gpj2295g3aEw== + immer@^9.0.7: version "9.0.21" resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" @@ -11933,10 +11706,10 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== +inflation@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.1.0.tgz#9214db11a47e6f756d111c4f9df96971c60f886c" + integrity sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ== inflight@^1.0.4: version "1.0.6" @@ -11951,16 +11724,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== - ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" @@ -12004,6 +11767,14 @@ internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5: resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ== + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + invariant@^2.2.1, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -12011,6 +11782,21 @@ invariant@^2.2.1, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +ioredis@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.3.2.tgz#9139f596f62fc9c72d873353ac5395bcf05709f7" + integrity sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA== + dependencies: + "@ioredis/commands" "^1.1.1" + cluster-key-slot "^1.1.0" + debug "^4.3.4" + denque "^2.1.0" + lodash.defaults "^4.2.0" + lodash.isarguments "^3.1.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + standard-as-callback "^2.1.0" + ip-regex@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" @@ -12026,6 +11812,29 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +ipx@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/ipx/-/ipx-1.3.1.tgz#2ff4aa9bc5be74f63cccd80d1df430fcc5e715b6" + integrity sha512-hWRLXdMDOz2q81T2x9lowFtAGO3E5b2HtC8xOOBTrlnxygHNaVrZqJ5c1P3T7tDkC3oCocYRRz0VBffvJKeQlw== + dependencies: + "@fastify/accept-negotiator" "^1.1.0" + consola "^3.2.3" + defu "^6.1.2" + destr "^2.0.1" + etag "^1.8.1" + image-meta "^0.1.1" + listhen "^1.5.5" + node-fetch-native "^1.4.0" + pathe "^1.1.1" + sharp "^0.32.6" + ufo "^1.3.1" + xss "^1.0.14" + +iron-webcrypto@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-0.10.1.tgz#cab8636a468685533a8521bfd7f06b19b7174809" + integrity sha512-QGOS8MRMnj/UiOa+aMIgfyHcvkhqNUsUxb1XzskENvbo+rEfp6TOwqd1KPuDzXC4OnGHcMSVxDGRoilqB8ViqA== + is-absolute-url@^3.0.0, is-absolute-url@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" @@ -12039,20 +11848,6 @@ is-absolute@^1.0.0: is-relative "^1.0.0" is-windows "^1.0.1" -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - is-alphabetical@1.0.4, is-alphabetical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" @@ -12105,13 +11900,6 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== - dependencies: - binary-extensions "^1.0.0" - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -12127,11 +11915,6 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - is-buffer@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" @@ -12156,20 +11939,6 @@ is-core-module@^2.11.0, is-core-module@^2.12.0, is-core-module@^2.12.1, is-core- dependencies: has "^1.0.3" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -12187,47 +11956,22 @@ is-deflate@^1.0.0: resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14" integrity sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ== -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - is-docker@^2.0.0, is-docker@^2.1.1, is-docker@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-extendable@^0.1.0, is-extendable@^0.1.1: +is-extendable@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== @@ -12251,13 +11995,6 @@ is-glob@^2.0.0: dependencies: is-extglob "^1.0.0" -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== - dependencies: - is-extglob "^2.1.0" - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -12314,6 +12051,11 @@ is-nan@^1.2.1: call-bind "^1.0.0" define-properties "^1.1.3" +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ== + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -12326,13 +12068,6 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -12343,6 +12078,11 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== +is-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + is-path-cwd@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" @@ -12353,7 +12093,7 @@ is-path-inside@^3.0.2: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-obj@^1.1.0: +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== @@ -12368,7 +12108,7 @@ is-plain-object@5.0.0, is-plain-object@^5.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -12407,6 +12147,11 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" +is-retry-allowed@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + is-root@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" @@ -12537,7 +12282,7 @@ is-whitespace-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -12547,11 +12292,6 @@ is-word-character@^1.0.0: resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== - is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -12559,29 +12299,27 @@ is-wsl@^2.1.1, is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: +isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== @@ -12619,6 +12357,14 @@ istanbul-reports@^3.1.4: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + jackspeak@^2.0.3: version "2.2.2" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.2.tgz#707c62733924b8dc2a0a629dc6248577788b5385" @@ -12716,6 +12462,11 @@ jest-worker@^29.6.2: merge-stream "^2.0.0" supports-color "^8.0.0" +jiti@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" + integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== + joi@^17.9.2: version "17.9.2" resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.2.tgz#8b2e4724188369f55451aebd1d0b1d9482470690" @@ -12775,6 +12526,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -12785,11 +12541,6 @@ json-loader@^0.5.7: resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -12827,6 +12578,11 @@ json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.1, json5@^2.2.2: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== +jsonc-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -12846,11 +12602,6 @@ jsonfile@^6.0.1: object.assign "^4.1.4" object.values "^1.1.6" -jwt-decode@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" - integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== - kebab-hash@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/kebab-hash/-/kebab-hash-0.1.2.tgz#dfb7949ba34d8e70114ea7d83e266e5e2a4abaac" @@ -12858,6 +12609,13 @@ kebab-hash@^0.1.2: dependencies: lodash.kebabcase "^4.1.1" +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== + dependencies: + json-buffer "3.0.0" + keyv@^4.0.0, keyv@^4.5.3: version "4.5.3" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" @@ -12865,25 +12623,6 @@ keyv@^4.0.0, keyv@^4.5.3: dependencies: json-buffer "3.0.1" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -12950,6 +12689,34 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +linkfs@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/linkfs/-/linkfs-2.1.0.tgz#5cc774ad8ed6b0aae5a858bd67e3334cc300a917" + integrity sha512-kmsGcmpvjStZ0ATjuHycBujtNnXiZR28BTivEu0gAMDTT7GEyodcK6zSRtu6xsrdorrPZEIN380x7BD7xEYkew== + +listhen@^1.2.2, listhen@^1.5.5: + version "1.5.5" + resolved "https://registry.yarnpkg.com/listhen/-/listhen-1.5.5.tgz#58915512af70f770aa3e9fb19367adf479bb58c4" + integrity sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA== + dependencies: + "@parcel/watcher" "^2.3.0" + "@parcel/watcher-wasm" "2.3.0" + citty "^0.1.4" + clipboardy "^3.0.0" + consola "^3.2.3" + defu "^6.1.2" + get-port-please "^3.1.1" + h3 "^1.8.1" + http-shutdown "^1.2.2" + jiti "^1.20.0" + mlly "^1.4.2" + node-forge "^1.3.1" + pathe "^1.1.1" + std-env "^3.4.3" + ufo "^1.3.0" + untun "^0.1.2" + uqr "^0.1.2" + lmdb@2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.5.2.tgz#37e28a9fb43405f4dc48c44cec0e13a14c4a6ff1" @@ -12986,11 +12753,6 @@ lmdb@2.5.3: "@lmdb/lmdb-linux-x64" "2.5.3" "@lmdb/lmdb-win32-x64" "2.5.3" -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - loader-runner@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" @@ -13005,7 +12767,7 @@ loader-utils@1.1.0: emojis-list "^2.0.0" json5 "^0.5.0" -loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.4.0: version "1.4.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== @@ -13094,7 +12856,7 @@ lodash.deburr@^4.1.0: resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-4.1.0.tgz#ddb1bbb3ef07458c0177ba07de14422cb033ff9b" integrity sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ== -lodash.defaults@^4.0.1: +lodash.defaults@^4.0.1, lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== @@ -13134,6 +12896,11 @@ lodash.has@^4.0: resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" integrity sha512-rnYUdIo6xRCJnQmbVFEwcxF144erlD+M3YcJUVesflU9paQaE8p+fJDcIQrlMYbxoANFL+AB9hZrzSBBk5PL+g== +lodash.isarguments@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== + lodash.isstring@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" @@ -13257,6 +13024,16 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A== + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" @@ -13275,6 +13052,11 @@ lru-cache@4.0.0: pseudomap "^1.0.1" yallist "^2.0.0" +lru-cache@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" + integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -13311,6 +13093,13 @@ lz-string@^1.5.0: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -13352,7 +13141,7 @@ map-age-cleaner@^0.1.3: dependencies: p-defer "^1.0.0" -map-cache@^0.2.0, map-cache@^0.2.2: +map-cache@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== @@ -13372,13 +13161,6 @@ map-or-similar@^1.5.0: resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - markdown-escapes@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" @@ -13401,15 +13183,6 @@ markdown-to-jsx@^7.1.8: resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.2.1.tgz#87061fd3176ad926ef3d99493e5c57f6335e0c51" integrity sha512-9HrdzBAo0+sFz9ZYAGT5fB8ilzTW+q6lPocRxrIesMO+aB40V9MgFfbfMXxlGjf22OpRy+IXlvVaQenicdpgbg== -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - mdast-squeeze-paragraphs@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz#7c4c114679c3bee27ef10b58e2e015be79f1ef97" @@ -13655,22 +13428,6 @@ memoizerific@^1.11.3: dependencies: map-or-similar "^1.5.0" -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - meow@^7.0.1: version "7.1.1" resolved "https://registry.yarnpkg.com/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306" @@ -13768,25 +13525,6 @@ micromark@^2.11.3, micromark@~2.11.0, micromark@~2.11.3: debug "^4.0.0" parse-entities "^2.0.0" -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -13795,15 +13533,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -13869,16 +13599,6 @@ mini-css-extract-plugin@1.6.2: schema-utils "^3.0.0" webpack-sources "^1.1.0" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -13951,41 +13671,17 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mitt@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4: +mkdirp@^0.5.1, mkdirp@^0.5.4: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -13997,23 +13693,26 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + +mlly@^1.2.0, mlly@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e" + integrity sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg== + dependencies: + acorn "^8.10.0" + pathe "^1.1.1" + pkg-types "^1.0.3" + ufo "^1.3.0" + moment@^2.29.4: version "2.29.4" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - mri@^1.1.5, mri@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" @@ -14060,6 +13759,20 @@ msgpackr@^1.5.4: optionalDependencies: msgpackr-extract "^3.0.2" +multer@^1.4.2: + version "1.4.4" + resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.4.tgz#e2bc6cac0df57a8832b858d7418ccaa8ebaf7d8c" + integrity sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw== + dependencies: + append-field "^1.0.0" + busboy "^0.2.11" + concat-stream "^1.5.2" + mkdirp "^0.5.4" + object-assign "^4.1.1" + on-finished "^2.3.0" + type-is "^1.6.4" + xtend "^4.0.0" + multer@^1.4.5-lts.1: version "1.4.5-lts.1" resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.5-lts.1.tgz#803e24ad1984f58edffbc79f56e305aec5cfd1ac" @@ -14084,43 +13797,31 @@ multimatch@^4.0.0: arrify "^2.0.1" minimatch "^3.0.4" +murmurhash@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/murmurhash/-/murmurhash-2.0.1.tgz#4097720e08cf978872194ad84ea5be2dec9b610f" + integrity sha512-5vQEh3y+DG/lMPM0mCGPDnyV8chYg/g7rl6v3Gd8WMF9S429ox3Xk8qrk174kWhG767KQMqqxLD1WnGd77hiew== + mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.12.1: - version "2.17.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== - nanoid@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== +napi-wasm@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" + integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== + natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" @@ -14150,28 +13851,6 @@ neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -netlify-lambda@^2.0.3: - version "2.0.16" - resolved "https://registry.yarnpkg.com/netlify-lambda/-/netlify-lambda-2.0.16.tgz#5403d9447252a9f55aaec58eb39d174d84154ebb" - integrity sha512-Wykqt2wBYswjN4nOlZ1nWC15A8Rkoe+OHUWyASBr1byYQB2BcqzCCFwaImt/iwyCW1hgWXezHUlb9XvoVgsADA== - dependencies: - "@babel/core" "^7.10.4" - "@babel/plugin-proposal-class-properties" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.10.4" - "@babel/plugin-transform-object-assign" "^7.10.4" - "@babel/preset-env" "^7.10.4" - babel-loader "^8.1.0" - body-parser "^1.19.0" - commander "^9.0.0" - express "^4.17.1" - express-logging "^1.1.1" - find-up "^5.0.0" - globby "^11.0.1" - jwt-decode "^3.0.0" - toml "^3.0.0" - webpack "^4.43.0" - webpack-merge "^4.2.2" - next-tick@1, next-tick@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" @@ -14241,6 +13920,11 @@ node-fetch-native@^1.0.2: resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.2.0.tgz#13ec6df98f33168958dbfb6945f10aedf42e7ea8" integrity sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ== +node-fetch-native@^1.2.0, node-fetch-native@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.4.0.tgz#fbe8ac033cb6aa44bd106b5e4fd2b6277ba70fa1" + integrity sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA== + node-fetch@^2.0.0, node-fetch@^2.6.11, node-fetch@^2.6.12: version "2.6.12" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" @@ -14248,6 +13932,18 @@ node-fetch@^2.0.0, node-fetch@^2.6.11, node-fetch@^2.6.12: dependencies: whatwg-url "^5.0.0" +node-fetch@^2.6.1: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + node-gyp-build-optional-packages@5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" @@ -14271,35 +13967,6 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - node-object-hash@^2.3.10: version "2.3.10" resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-2.3.10.tgz#4b0c1a3a8239e955f0db71f8e00b38b5c0b33992" @@ -14310,6 +13977,11 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +node-stream-zip@^1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -14337,6 +14009,15 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + normalize-url@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" @@ -14398,15 +14079,6 @@ object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1 resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" @@ -14425,13 +14097,6 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - object.assign@^4.1.0, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" @@ -14478,13 +14143,6 @@ object.hasown@^1.1.2: define-properties "^1.1.4" es-abstract "^1.20.4" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - object.values@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" @@ -14504,14 +14162,23 @@ objectorarray@^1.0.5: resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg== -on-finished@2.4.1: +ofetch@^1.1.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.3.3.tgz#588cb806a28e5c66c2c47dd8994f9059a036d8c0" + integrity sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg== + dependencies: + destr "^2.0.1" + node-fetch-native "^1.4.0" + ufo "^1.3.0" + +on-finished@2.4.1, on-finished@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" -on-headers@^1.0.0, on-headers@~1.0.2: +on-headers@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== @@ -14597,11 +14264,6 @@ ordered-binary@^1.2.4: resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.4.1.tgz#205cb6efd6c27fa0ef4eced994a023e081cdc911" integrity sha512-9LtiGlPy982CsgxZvJGNNp2/NnrgEr6EAyN3iIEP3/8vd3YLgAZQHbQ75ZrkfBRGrNg37Dk3U6tuVb+B4Xfslg== -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== - os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -14612,6 +14274,11 @@ outdent@^0.8.0: resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.8.0.tgz#2ebc3e77bf49912543f1008100ff8e7f44428eb0" integrity sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A== +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== + p-cancelable@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" @@ -14632,11 +14299,23 @@ p-defer@^3.0.0: resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== +p-event@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6" + integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA== + dependencies: + p-timeout "^2.0.1" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg== + p-limit@3.1.0, p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" @@ -14701,6 +14380,13 @@ p-queue@^6.6.2: eventemitter3 "^4.0.4" p-timeout "^3.2.0" +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" + p-timeout@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" @@ -14728,20 +14414,6 @@ pako@~0.2.0: resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - param-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" @@ -14764,17 +14436,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - parse-english@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/parse-english/-/parse-english-4.2.0.tgz#037b68f34d1a1bdf3d33668b87791bdfc1f01e1e" @@ -14897,11 +14558,6 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - password-prompt@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.3.tgz#05e539f4e7ca4d6c865d479313f10eb9db63ee5f" @@ -14910,11 +14566,6 @@ password-prompt@^1.0.4: ansi-escapes "^4.3.2" cross-spawn "^7.0.3" -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - path-browserify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" @@ -14935,11 +14586,6 @@ path-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -15015,22 +14661,16 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pathe@^1.1.0: +pathe@^0.3.0: + version "0.3.9" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.3.9.tgz#4baff768f37f03e3d9341502865fb93116f65191" + integrity sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g== + +pathe@^1.1.0, pathe@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a" integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q== -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - peek-readable@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" @@ -15065,11 +14705,33 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatc resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + pirates@^4.0.4, pirates@^4.0.5: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" @@ -15103,6 +14765,15 @@ pkg-dir@^7.0.0: dependencies: find-up "^6.3.0" +pkg-types@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" + integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== + dependencies: + jsonc-parser "^3.2.0" + mlly "^1.2.0" + pathe "^1.1.0" + pkg-up@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" @@ -15144,11 +14815,6 @@ popmotion@11.0.3: style-value-types "5.0.0" tslib "^2.1.0" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - postcss-calc@^8.2.3: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -15438,6 +15104,11 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + prettier@^2.0.5, prettier@^2.2.1, prettier@^2.8.0, prettier@^2.8.8: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" @@ -15524,11 +15195,6 @@ progress@^2.0.0, progress@^2.0.1, progress@^2.0.3: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== - promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -15592,28 +15258,11 @@ proxy-from-env@^1.0.0, proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - pseudomap@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" @@ -15639,7 +15288,7 @@ pumpify@^1.3.3: inherits "^2.0.3" pump "^2.0.0" -punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== @@ -15672,13 +15321,22 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@^6.10.0, qs@^6.11.0: +qs@^6.10.0, qs@^6.11.0, qs@^6.5.2: version "6.11.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== dependencies: side-channel "^1.0.4" +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + query-string@^6.14.1: version "6.14.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" @@ -15689,11 +15347,6 @@ query-string@^6.14.1: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -15714,6 +15367,11 @@ quick-lru@^5.1.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== +radix3@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.0.tgz#9745df67a49c522e94a33d0a93cf743f104b6e0d" + integrity sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A== + ramda@0.21.0: version "0.21.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35" @@ -15724,21 +15382,13 @@ ramda@0.29.0: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -15754,7 +15404,7 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@2.5.2, raw-body@^2.3.0: +raw-body@^2.3.0, raw-body@^2.3.3: version "2.5.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== @@ -16124,7 +15774,17 @@ read@^1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@1.1.x: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -16153,15 +15813,6 @@ readable-web-to-node-stream@^3.0.0: dependencies: readable-stream "^3.6.0" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -16232,6 +15883,18 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redis-errors@^1.0.0, redis-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" + integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== + +redis-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" + integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== + dependencies: + redis-errors "^1.0.0" + reduce-css-calc@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz#7ef8761a28d614980dc0c982f772c93f7a99de03" @@ -16276,14 +15939,6 @@ regenerator-transform@^0.15.1: dependencies: "@babel/runtime" "^7.8.4" -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" @@ -16543,12 +16198,7 @@ renderkid@^3.0.0: lodash "^4.17.21" strip-ansi "^6.0.1" -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.0.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: +repeat-string@^1.0.0, repeat-string@^1.5.2, repeat-string@^1.5.4: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== @@ -16642,6 +16292,13 @@ response-iterator@^0.2.6: resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== + dependencies: + lowercase-keys "^1.0.0" + responselike@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" @@ -16664,11 +16321,6 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - retext-english@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/retext-english/-/retext-english-3.0.4.tgz#f978828d51fbcee842bc3807a45b7f709822ea8d" @@ -16687,7 +16339,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.6.1, rimraf@^2.6.2: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -16715,14 +16367,6 @@ rimraf@~2.6.2: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -16735,13 +16379,6 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== - dependencies: - aproba "^1.1.1" - rx@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" @@ -16774,7 +16411,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -16788,14 +16425,7 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.1.3" is-regex "^1.1.4" -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: +"safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -16833,15 +16463,6 @@ schema-utils@2.7.0: ajv "^6.12.2" ajv-keywords "^3.4.1" -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" @@ -16878,6 +16499,13 @@ section-matter@^1.0.0: extend-shallow "^2.0.1" kind-of "^6.0.0" +seek-bzip@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" + integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== + dependencies: + commander "^2.8.1" + select@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" @@ -16951,13 +16579,6 @@ sentence-case@^3.0.4: tslib "^2.0.3" upper-case-first "^2.0.2" -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - serialize-javascript@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" @@ -16998,17 +16619,7 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4, setimmediate@^1.0.5: +setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== @@ -17018,14 +16629,6 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -17052,6 +16655,20 @@ sharp@^0.32.1: tar-fs "^3.0.4" tunnel-agent "^0.6.0" +sharp@^0.32.6: + version "0.32.6" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.6.tgz#6ad30c0b7cd910df65d5f355f774aa4fce45732a" + integrity sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w== + dependencies: + color "^4.2.3" + detect-libc "^2.0.2" + node-addon-api "^6.1.0" + prebuild-install "^7.1.1" + semver "^7.5.4" + simple-get "^4.0.1" + tar-fs "^3.0.4" + tunnel-agent "^0.6.0" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -17189,36 +16806,6 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - socket.io-adapter@~2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz#5de9477c9182fdc171cd8c8364b9a8894ec75d12" @@ -17256,6 +16843,27 @@ socket.io@4.6.1: socket.io-adapter "~2.5.2" socket.io-parser "~4.2.1" +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + integrity sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw== + dependencies: + sort-keys "^1.0.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== + dependencies: + is-plain-obj "^1.0.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== + dependencies: + is-plain-obj "^1.0.0" + source-list-map@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.2.tgz#9889019d1024cce55cdc069498337ef6186a11a1" @@ -17271,7 +16879,7 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: +source-map-resolve@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== @@ -17282,7 +16890,7 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.16, source-map-support@~0.5.12, source-map-support@~0.5.20: +source-map-support@^0.5.16, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -17295,7 +16903,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.7, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== @@ -17346,13 +16954,6 @@ split-on-first@^1.0.0: resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - sponge-case@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sponge-case/-/sponge-case-1.0.1.tgz#260833b86453883d974f84854cdb63aecc5aef4c" @@ -17370,13 +16971,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -17392,19 +16986,16 @@ stackframe@^1.3.4: resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== +standard-as-callback@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" + integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== + state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - static-site-generator-webpack-plugin@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-3.4.2.tgz#ad9fd0a4fb8b6f439a7a66018320b459bdb6d916" @@ -17416,11 +17007,16 @@ static-site-generator-webpack-plugin@^3.4.2: url "^0.11.0" webpack-sources "^0.2.0" -statuses@2.0.1: +statuses@2.0.1, statuses@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +std-env@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.4.3.tgz#326f11db518db751c83fd58574f449b7c3060910" + integrity sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q== + stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" @@ -17452,33 +17048,6 @@ storybook@^7.0.23: dependencies: "@storybook/cli" "7.1.1" -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - stream-parser@~0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773" @@ -17491,6 +17060,11 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +streamsearch@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" + integrity sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA== + streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" @@ -17504,6 +17078,11 @@ streamx@^2.15.0: fast-fifo "^1.1.0" queue-tick "^1.0.1" +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -17593,13 +17172,18 @@ string.prototype.trimstart@^1.0.6: define-properties "^1.1.4" es-abstract "^1.20.4" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -17671,6 +17255,13 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -17698,7 +17289,7 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -strip-outer@^1.0.1: +strip-outer@^1.0.0, strip-outer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== @@ -17882,7 +17473,7 @@ table@^6.0.9: string-width "^4.2.3" strip-ansi "^6.0.1" -tapable@^1.0.0, tapable@^1.1.3: +tapable@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== @@ -17911,6 +17502,19 @@ tar-fs@^3.0.4: pump "^3.0.0" tar-stream "^3.1.5" +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + tar-stream@^2.1.4: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" @@ -17962,7 +17566,7 @@ temp@^0.8.4: dependencies: rimraf "~2.6.2" -tempy@^1.0.1: +tempy@^1.0.0, tempy@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.1.tgz#30fe901fd869cfb36ee2bd999805aa72fbb035de" integrity sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w== @@ -17973,21 +17577,6 @@ tempy@^1.0.1: type-fest "^0.16.0" unique-string "^2.0.0" -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.7, terser-webpack-plugin@^5.3.9: version "5.3.9" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" @@ -17999,15 +17588,6 @@ terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.7, terser-webpack-plugi serialize-javascript "^6.0.1" terser "^5.16.8" -terser@^4.1.2: - version "4.8.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" - integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - terser@^5.10.0, terser@^5.16.8, terser@^5.2.0: version "5.19.2" resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#bdb8017a9a4a8de4663a7983f45c506534f9234e" @@ -18032,7 +17612,7 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -through2@^2.0.0, through2@^2.0.3: +through2@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -18040,17 +17620,15 @@ through2@^2.0.0, through2@^2.0.3: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6: +through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" +timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== timers-ext@^0.1.7: version "0.1.7" @@ -18104,31 +17682,16 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -18136,16 +17699,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - tocbot@^4.20.1: version "4.21.0" resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.21.0.tgz#ae0e5daa8f1e8534835759f30206f802466bb60a" @@ -18169,11 +17722,6 @@ token-types@^4.1.1: "@tokenizer/token" "^0.3.0" ieee754 "^1.2.1" -toml@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" - integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== - tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -18284,11 +17832,6 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -18343,7 +17886,7 @@ type-fest@^3.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== -type-is@^1.6.4, type-is@~1.6.18: +type-is@^1.6.16, type-is@^1.6.4, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -18427,6 +17970,11 @@ ua-parser-js@^1.0.35: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.35.tgz#c4ef44343bc3db0a3cbefdf21822f1b1fc1ab011" integrity sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA== +ufo@^1.0.0, ufo@^1.2.0, ufo@^1.3.0, ufo@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.1.tgz#e085842f4627c41d4c1b60ebea1f75cdab4ce86b" + integrity sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw== + uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" @@ -18442,11 +17990,24 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +unbzip2-stream@^1.0.9: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== +uncrypto@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" + integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== + underscore.string@^3.3.5, underscore.string@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.6.tgz#ad8cf23d7423cb3b53b898476117588f4e2f9159" @@ -18455,6 +18016,17 @@ underscore.string@^3.3.5, underscore.string@^3.3.6: sprintf-js "^1.1.1" util-deprecate "^1.0.2" +unenv@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.7.4.tgz#a0e5a78de2c7c3c4563c06ba9763c96c59db3333" + integrity sha512-fjYsXYi30It0YCQYqLOcT6fHfMXsBr2hw9XC7ycf8rTG7Xxpe3ZssiqUnD0khrjiZEmkBXWLwm42yCSCH46fMw== + dependencies: + consola "^3.2.3" + defu "^6.1.2" + mime "^3.0.0" + node-fetch-native "^1.4.0" + pathe "^1.1.1" + unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -18535,30 +18107,6 @@ unified@^9.1.0, unified@^9.2.2: trough "^1.0.0" vfile "^4.0.0" -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - unique-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -18738,23 +18286,36 @@ unplugin@^1.3.1: webpack-sources "^3.2.3" webpack-virtual-modules "^0.5.0" -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== +unstorage@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.9.0.tgz#0c1977f4e769a48344339ac97ec3f2feea94d43d" + integrity sha512-VpD8ZEYc/le8DZCrny3bnqKE4ZjioQxBRnWE+j5sGNvziPjeDlaS1NaFFHzl/kkXaO3r7UaF8MGQrs14+1B4pQ== dependencies: - has-value "^0.3.1" - isobject "^3.0.0" + anymatch "^3.1.3" + chokidar "^3.5.3" + destr "^2.0.1" + h3 "^1.7.1" + ioredis "^5.3.2" + listhen "^1.2.2" + lru-cache "^10.0.0" + mri "^1.2.0" + node-fetch-native "^1.2.0" + ofetch "^1.1.1" + ufo "^1.2.0" untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +untun@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/untun/-/untun-0.1.2.tgz#fa42a62ae24c1c5c6f3209692a2b0e1f573f1353" + integrity sha512-wLAMWvxfqyTiBODA1lg3IXHQtjggYLeTK7RnSfqtOXixWJ3bAa2kK/HHmOOg19upteqO3muLvN6O/icbyQY33Q== + dependencies: + citty "^0.1.3" + consola "^3.2.3" + pathe "^1.1.1" update-browserslist-db@^1.0.11: version "1.0.11" @@ -18790,6 +18351,11 @@ upper-case@^2.0.2: dependencies: tslib "^2.0.3" +uqr@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" + integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -18811,6 +18377,18 @@ url-loader@^4.1.1: mime-types "^2.1.27" schema-utils "^3.0.0" +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== + dependencies: + prepend-http "^2.0.0" + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== + url@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/url/-/url-0.11.1.tgz#26f90f615427eca1b9f4d6a28288c147e2302a32" @@ -18819,6 +18397,11 @@ url@^0.11.0: punycode "^1.4.1" qs "^6.11.0" +urlpattern-polyfill@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5" + integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== + use-callback-ref@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" @@ -18841,30 +18424,11 @@ use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - util@^0.12.0, util@^0.12.4: version "0.12.5" resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" @@ -19016,11 +18580,6 @@ victory-vendor@^36.6.8: d3-time "^3.0.0" d3-timer "^3.0.1" -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - void-elements@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" @@ -19038,24 +18597,6 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - watchpack@^2.2.0, watchpack@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" @@ -19131,13 +18672,6 @@ webpack-hot-middleware@^2.25.1: html-entities "^2.1.0" strip-ansi "^6.0.0" -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - webpack-merge@^5.9.0: version "5.9.0" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826" @@ -19154,7 +18688,7 @@ webpack-sources@^0.2.0: source-list-map "^1.1.1" source-map "~0.5.3" -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@^1.1.0: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -19207,35 +18741,6 @@ webpack@5, webpack@^5.85.0: watchpack "^2.4.0" webpack-sources "^3.2.3" -webpack@^4.43.0: - version "4.46.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" - integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.5.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -19317,13 +18822,6 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -19430,6 +18928,14 @@ xmlhttprequest-ssl@~2.0.0: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== +xss@^1.0.14: + version "1.0.14" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" + integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw== + dependencies: + commander "^2.20.3" + cssfilter "0.0.10" + xstate@^4.37.2: version "4.38.2" resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.38.2.tgz#1b74544fc9c8c6c713ba77f81c6017e65aa89804" @@ -19532,7 +19038,7 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yauzl@^2.10.0: +yauzl@^2.10.0, yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== From a12867aaac6b28b5e271a3da00ac76d5f30c98f3 Mon Sep 17 00:00:00 2001 From: Ashis Kumar <37765033+ashiskumar-1999@users.noreply.github.com> Date: Mon, 20 Nov 2023 21:04:48 +0530 Subject: [PATCH 007/366] Update src/@chakra-ui/gatsby-plugin/components/Modal.ts Co-authored-by: Tyler Pfledderer --- src/@chakra-ui/gatsby-plugin/components/Modal.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/@chakra-ui/gatsby-plugin/components/Modal.ts b/src/@chakra-ui/gatsby-plugin/components/Modal.ts index 71c56c90a15..85c5aa5fee8 100644 --- a/src/@chakra-ui/gatsby-plugin/components/Modal.ts +++ b/src/@chakra-ui/gatsby-plugin/components/Modal.ts @@ -46,13 +46,10 @@ export const Modal = defineMultiStyleConfig({ fontFamily: "Inter", }, closeButton: { - padding: 0, - width: "24px", - height: "24px", - borderRadius: 0, - color: "rgb(178, 178, 178)", - fontSize: "sm", - marginTop: 5, + boxSize: "8", + color: "body.base", + top: "8", + insetInlineEnd: "8", }, body: { padding: 0, From a7ef333b3785629d9ac39d02b8049b75ccd10ce9 Mon Sep 17 00:00:00 2001 From: Ashis Kumar <37765033+ashiskumar-1999@users.noreply.github.com> Date: Mon, 20 Nov 2023 21:05:18 +0530 Subject: [PATCH 008/366] Update src/@chakra-ui/gatsby-plugin/components/Modal.ts Co-authored-by: Tyler Pfledderer --- src/@chakra-ui/gatsby-plugin/components/Modal.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/@chakra-ui/gatsby-plugin/components/Modal.ts b/src/@chakra-ui/gatsby-plugin/components/Modal.ts index 85c5aa5fee8..e371b0635a0 100644 --- a/src/@chakra-ui/gatsby-plugin/components/Modal.ts +++ b/src/@chakra-ui/gatsby-plugin/components/Modal.ts @@ -21,7 +21,7 @@ export const Modal = defineMultiStyleConfig({ baseStyle: definePartsStyle((props) => defineMergeStyles(defaultBaseStyle?.(props), { overlay: { - bg: "rgba(0, 0, 0, 0.7)", + bg: "gray.500", }, dialog: { size: "2xl", From d5518b7989e7808770504c894d9e2082c499fe58 Mon Sep 17 00:00:00 2001 From: Ashis Kumar Date: Tue, 21 Nov 2023 21:52:02 +0530 Subject: [PATCH 009/366] All the comments have been addressed except for the QuizModal component. --- .../gatsby-plugin/components/Modal.ts | 32 ++++--------------- src/components/Modal/Modal.stories.tsx | 1 + src/components/Modal/index.tsx | 11 +++++-- src/pages/index.tsx | 1 - 4 files changed, 16 insertions(+), 29 deletions(-) diff --git a/src/@chakra-ui/gatsby-plugin/components/Modal.ts b/src/@chakra-ui/gatsby-plugin/components/Modal.ts index e371b0635a0..08ec6027e17 100644 --- a/src/@chakra-ui/gatsby-plugin/components/Modal.ts +++ b/src/@chakra-ui/gatsby-plugin/components/Modal.ts @@ -11,12 +11,6 @@ const { defaultProps, } = modalDefaultTheme -// Remove all the comment line once the review is completed & PR will able to merge - -/* const variantCode = definePartsStyle((props) => ({ - -})) */ - export const Modal = defineMultiStyleConfig({ baseStyle: definePartsStyle((props) => defineMergeStyles(defaultBaseStyle?.(props), { @@ -24,26 +18,17 @@ export const Modal = defineMultiStyleConfig({ bg: "gray.500", }, dialog: { - size: "2xl", - /* maxW: "464px", */ - my: "64px", - mx: "8px", - gap: 4, - padding: "32px", - maxHeight: "70%", - borderRadius: "4px", + bg: "background.base", + gap: "4", + padding: "8", + maxW: "464px", + borderRadius: "md", + boxShadow: "none", }, header: { - /* bg: - props.colorMode === "dark" ? "rgb(25, 25, 25)" : "rgb(247, 247, 247)", */ - borderColor: - props.colorMode == "dark" ? "rgb(242, 242, 242)" : "rgb(51, 51, 51)", - /* borderTop: "1px solid", - borderBottom: "1px solid", */ padding: 0, fontWeight: "bold", fontSize: "2xl", - fontFamily: "Inter", }, closeButton: { boxSize: "8", @@ -55,7 +40,6 @@ export const Modal = defineMultiStyleConfig({ padding: 0, fontWeight: "normal", fontSize: "md", - fontFamily: "Inter", }, footer: { gap: "8px", @@ -66,9 +50,7 @@ export const Modal = defineMultiStyleConfig({ }) ), sizes: defaultSizes, - /* variants: { - code: variantCode, - }, */ + defaultProps: { ...defaultProps, variant: undefined, diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index e97019babfe..31dd39ea469 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -14,5 +14,6 @@ export const Modal: Story = { title: "Modal Title", children: "This is the base component to be used in the modal window.Please change the text to preview final content for ethereum.org", + actionButtonLabel: "Save", }, } diff --git a/src/components/Modal/index.tsx b/src/components/Modal/index.tsx index 6874d41a486..b47c7779f52 100644 --- a/src/components/Modal/index.tsx +++ b/src/components/Modal/index.tsx @@ -9,6 +9,8 @@ import { ModalBody, type ModalProps, type ModalContentProps, + Button, + ModalFooter, } from "@chakra-ui/react" export interface IPropsOverlay { @@ -19,7 +21,6 @@ export interface IProps extends ModalContentProps, Pick { children?: React.ReactNode title?: string description?: string - ButtonLabel?: string actionButtonLabel?: string isOpen: boolean setIsOpen: (isOpen: boolean) => void @@ -30,8 +31,6 @@ const Modal: React.FC = ({ title, description, actionButtonLabel, - ButtonLabel, - /* size, */ isOpen, setIsOpen, ...restProps @@ -57,6 +56,12 @@ const Modal: React.FC = ({ {title} {children} + {actionButtonLabel && ( + + + + + )} ) diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 47bb4504ee5..a03c026488c 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -21,7 +21,6 @@ import type { ChildOnlyProp, Context } from "../types" import ActionCard from "../components/ActionCard" import ButtonLink from "../components/Buttons/ButtonLink" import CalloutBanner from "../components/CalloutBanner" -import CodeModal from "../components/CodeModal" import Codeblock from "../components/Codeblock" import CommunityEvents from "../components/CommunityEvents" import PageMetadata from "../components/PageMetadata" From ff7aefe695d67a6eae0c42d4cc16b8389e3b301e Mon Sep 17 00:00:00 2001 From: Ashis Kumar Date: Wed, 22 Nov 2023 22:52:09 +0530 Subject: [PATCH 010/366] Implemented the QuizzesModal in the Quizzes.tsx with the current Modal component. --- src/components/Quiz/QuizzesModal.tsx | 25 +++++++++++++++---------- src/pages/quizzes.tsx | 4 ++-- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/components/Quiz/QuizzesModal.tsx b/src/components/Quiz/QuizzesModal.tsx index 16bf5cce20b..8ba734af866 100644 --- a/src/components/Quiz/QuizzesModal.tsx +++ b/src/components/Quiz/QuizzesModal.tsx @@ -8,14 +8,22 @@ import { ModalContentProps, Center, } from "@chakra-ui/react" +import Modal from "../Modal" import { QuizzesHubContext } from "./context" -interface IProps extends ModalProps { +type props = { + isQuizModalOpen: boolean + onQuizModalClose: () => void children: React.ReactNode } -const QuizzesModal: React.FC = ({ children, ...rest }) => { +const QuizzesModal: React.FC = ({ + isQuizModalOpen, + onQuizModalClose, + children, + ...rest +}) => { const { status: quizStatus } = useContext(QuizzesHubContext) const getStatusColor = (): ModalContentProps["bg"] => { @@ -29,19 +37,16 @@ const QuizzesModal: React.FC = ({ children, ...rest }) => { } return ( - - - -
    - +
    {children}
    - + ) } diff --git a/src/pages/quizzes.tsx b/src/pages/quizzes.tsx index 2d79752ad93..c326c5a4cb5 100644 --- a/src/pages/quizzes.tsx +++ b/src/pages/quizzes.tsx @@ -92,14 +92,14 @@ const QuizzesHubPage = ({ data }: PageProps) => { /> - + - + Date: Mon, 11 Dec 2023 23:11:22 +0400 Subject: [PATCH 011/366] Update index.md --- src/content/developers/docs/standards/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/content/developers/docs/standards/index.md b/src/content/developers/docs/standards/index.md index 33cb3349f0a..682558fe2d8 100644 --- a/src/content/developers/docs/standards/index.md +++ b/src/content/developers/docs/standards/index.md @@ -40,6 +40,7 @@ More detailed information on these different types and categories can be found i ### Token standards {#token-standards} - [ERC-20](/developers/docs/standards/tokens/erc-20/) - A standard interface for fungible (interchangeable) tokens, like voting tokens, staking tokens or virtual currencies. +- [ERC-223](/developers/docs/standards/tokens/erc-223/) - A fungible tokens standard that makes tokens behave identical to ether and supports token transfers handling on the recipients side. - [ERC-1363](https://eips.ethereum.org/EIPS/eip-1363) - Defines a token interface for ERC-20 tokens that supports executing recipient code after transfer or transferFrom, or spender code after approve. - [ERC-721](/developers/docs/standards/tokens/erc-721/) - A standard interface for non-fungible tokens, like a deed for artwork or a song. - [ERC-2309](https://eips.ethereum.org/EIPS/eip-2309) - A standardized event emitted when creating/transferring one, or many non-fungible tokens using consecutive token identifiers. From 727804b39422ddfbd8bd5e3a1abaa487d099b5ec Mon Sep 17 00:00:00 2001 From: Dexaran Date: Mon, 11 Dec 2023 23:12:14 +0400 Subject: [PATCH 012/366] Create index.md --- src/content/developers/docs/standards/tokens/erc-223/index.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/content/developers/docs/standards/tokens/erc-223/index.md diff --git a/src/content/developers/docs/standards/tokens/erc-223/index.md b/src/content/developers/docs/standards/tokens/erc-223/index.md new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/src/content/developers/docs/standards/tokens/erc-223/index.md @@ -0,0 +1 @@ + From 3df37f9932d469462d04cc0a1845e3e381e493d1 Mon Sep 17 00:00:00 2001 From: Dexaran Date: Mon, 11 Dec 2023 23:12:28 +0400 Subject: [PATCH 013/366] Update index.md --- .../docs/standards/tokens/erc-223/index.md | 192 ++++++++++++++++++ 1 file changed, 192 insertions(+) diff --git a/src/content/developers/docs/standards/tokens/erc-223/index.md b/src/content/developers/docs/standards/tokens/erc-223/index.md index 8b137891791..6b870cea2f1 100644 --- a/src/content/developers/docs/standards/tokens/erc-223/index.md +++ b/src/content/developers/docs/standards/tokens/erc-223/index.md @@ -1 +1,193 @@ +--- +title: ERC-223 Token Standard +description: An overview of the ERC-223 fungible token standard, how it works, and a comparison to ERC-20. +lang: en +--- +## Introduction {#introduction} + +**What is ERC-223?** + +The ERC-223 is another standard for fungible tokens, like the ERC-20. The key difference is that ERC-223 defines not only the token API, but also the logic of how tokens should be transferred from sender to recipient and introduces a communication model that allows token transfers to be handled on the recipients side. + +**How is it different from ERC-20 and why we need another token standard?** + +ERC-223 addresses some limitations of ERC-20 and introduces a new method of interactions between token contract and a contract that may receive the tokens. There are few things that are possible with ERC-223 but not with ERC-20: + +- Token transfer handling on the recipient's side. Recipient can detect that an ERC-223 token is being deposited. +- Rejection of improperly sent tokens. If a user sent ERC-223 tokens to a contract that is not supposed to receive tokens then the contract can reject the transaction and the tokens will not be lost. +- The transfer of ERC-223 tokens may contain metadata, which allows arbitrary information to be attached to the token transactions. + +## Prerequisites {#prerequisites} + +- [Accounts](/developers/docs/accounts) +- [Smart Contracts](/developers/docs/smart-contracts/) +- [Token standards](/developers/docs/standards/tokens/) +- [ERC-20](/developers/docs/standards/tokens/erc-20/) + +## Body {#body} + +The ERC-223 (Ethereum Request for Comments 223), proposed by Dexaran in March 2017, is a token standard that +implements an API for tokens within smart contracts and declares API for a contract that is supposed to receive ERC-223 tokens. Any contract that does not support ERC-223 Receiver API can not receive ERC-223 tokens which prevents the most common user mistakes. + +If a smart contract implements the following methods and events it can be called an ERC-223 compatible token contract. Once deployed, it +will be responsible to keep track of the created tokens on Ethereum. + +The contract is not obligated to have only these functions and a developer can add any other feature from different token standards to this contract. For example, `approve` and `transferFrom` functions are not part of ERC-223 standard but these functions could be implemented should it be necessary. + +From [EIP-223](https://eips.ethereum.org/EIPS/eip-223): + +#### Methods {#methods} + +ERC-223 token must implement the following methods: + +```solidity +function name() public view returns (string) +function symbol() public view returns (string) +function decimals() public view returns (uint8) +function totalSupply() public view returns (uint256) +function balanceOf(address _owner) public view returns (uint256 balance) +function transfer(address _to, uint256 _value) public returns (bool success) +function transfer(address _to, uint256 _value, bytes calldata _data) public returns (bool success) +``` + +A contract that is supposed to receive ERC-223 tokens must implement the following method: + +```solidity +function tokenReceived(address _from, uint _value, bytes calldata _data) +``` + +If ERC-223 tokens are sent to a contract that doesn't implement the `tokenReceived(..)` function then the transfer must fail and the tokens must not be moved from the sender's balance. + +#### Events {#events} + +```solidity +event Transfer(address indexed _from, address indexed _to, uint256 _value, bytes calldata _data) +``` + +### Examples {#examples} + +The API of ERC-223 token is similar to that of ERC-20, so from UI development point of view there is no difference. The only exception here is that ERC-223 tokens may not have `approve` + `transferFrom` functions as these are optional for this standard. + +### Solidity examples {#solidity-example} + +The purpose of this example is to illustrate how a contract must work with ERC-223 tokens. + +Assume that we have a very basic ERC-223 token: + +```solidity +pragma solidity ^0.8.19; +abstract contract IERC223Recipient { + function tokenReceived(address _from, uint _value, bytes memory _data) public virtual; +} +contract VeryBasicERC223Token { + event Transfer(address indexed from, address indexed to, uint value, bytes data); + string private _name; + string private _symbol; + uint8 private _decimals; + uint256 private _totalSupply; + mapping(address => uint256) private balances; + function name() public view returns (string memory) { return _name; } + function symbol() public view returns (string memory) {return _symbol; } + function decimals() public view returns (uint8) { return _decimals; } + function totalSupply() public view returns (uint256) { return _totalSupply; } + function balanceOf(address _owner) public view returns (uint256) { return balances[_owner]; } + function isContract(address account) internal view returns (bool) { + uint256 size; + assembly { size := extcodesize(account) } + return size > 0; + } + function transfer(address _to, uint _value, bytes calldata _data) public returns (bool success){ + balances[msg.sender] = balances[msg.sender] - _value; + balances[_to] = balances[_to] + _value; + if(isContract(_to)) { + IERC223Recipient(_to).tokenReceived(msg.sender, _value, _data); + } + emit Transfer(msg.sender, _to, _value, _data); + return true; + } + function transfer(address _to, uint _value) public returns (bool success){ + bytes memory _empty = hex"00000000"; + balances[msg.sender] = balances[msg.sender] - _value; + balances[_to] = balances[_to] + _value; + if(isContract(_to)) { + IERC223Recipient(_to).tokenReceived(msg.sender, _value, _empty); + } + emit Transfer(msg.sender, _to, _value, _empty); + return true; + } +} +``` + +Now we want another contract to accept deposits of `tokenA` assuming that tokenA is an ERC-223 token. The contract must accept only tokenA and reject any other tokens. When the contract receives tokenA it must emit a `Deposit()` event and increase the value of the internal `deposits` variable. + +Here is the code: + +```solidity +contract RecipientContract is IERC223Recipient { + event Deposit(address whoSentTheTokens); + uint256 deposits = 0; + address tokenA; // The only token that we want to accept. + function tokenReceived(address _from, uint _value, bytes memory _data) public override + { + // It is important to understand that within this function + // msg.sender is the address of a token that is being received, + // msg.value is always 0 as the token contract does not own or send Ether in most cases, + // _from is the sender of the token transfer, + // _value is the amount of tokens that was deposited. + require(msg.sender == tokenA); + deposits += _value; + emit Deposit(_from); + } +} +``` + +## Frequently asked questions {#faq} + +### What will happen if we send some tokenB to the contract? {#sending-tokens} + +The transaction will fail and the transfer of tokens will simply not happen. The tokens will be returned to the sender's address. + +### How can we make a deposit to this contract? {#contract-deposits} + +We can simply call the `transfer(address,uint256)` or `transfer(address,uint256,bytes)` function of the ERC-223 token and tell it to transfer some tokens to the address of the `RecipientContract`. That's it. + +### What will happen if we transfer an ERC-20 token to this contract? {#erc-20-transfers} + +The ERC-20 standard supports two methods of transferring tokens: `transfer` function and `approve + transferFrom` pattern. This is not possible to make a deposit with `transferFrom` function as the `RecipientContract` does not have any functions that subsequently call `transferFrom`. If an ERC-20 token is sent with `transfer` function to the address of the `RecipientContract` then unfortunately the tokens will be transferred from the sender's address to the address of the `RecipientContract` but the transfer will not be recognized i.e. `Deposit()` event will not be fired and `deposits` value will not change. There is also no way to filter or prevent unwanted ERC-20 deposits that are made with the `transfer` function. + +### What if we want to execute some function after the token deposit is completed? {#function-execution} + +There are multiple ways of doing so. In this example we will follow the method which makes ERC-223 transfers identical to Ether transfers: + +```solidity +contract RecipientContract is IERC223Recipient { + event Foo(); + event Bar(uint256 someNumber); + address tokenA; // The only token that we want to accept. + function tokenReceived(address _from, uint _value, bytes memory _data) public override + { + require(msg.sender == tokenA); + address(this).call(_data); // Handle incoming transaction and perform a subsequent function call. + } + function foo() public + { + emit Foo(); + } + function bar(uint256 _someNumber) public + { + emit Bar(_someNumber); + } +} +``` + +When the `RecipientContract` will receive a ERC-223 token the contract will execute a function encoded as `_data` parameter of the token transaction, identical to how Ether transactions encode function calls as transaction `data`. Read [the data field](https://ethereum.org/en/developers/docs/transactions/#the-data-field) for more information. + +In the above example an ERC-223 token must be transferred to the address of the `RecipientContract` with the `transfer(address,uin256,bytes calldata _data)` function. If the data parameter will be `0xc2985578` (the signature of a `foo()` function) then the function foo() will be invoked after the token deposit is received and the event Foo() will be fired. + +Parameters can be encoded in the `data` of the token transfer as well, for example we can call the bar() function with 12345 value for `_someNumber`. In this case the `data` must be `0x0423a13200000000000000000000000000000000000000000000000000000000000004d2` where `0x0423a132` is the signature of the `bar(uint256)` function and `00000000000000000000000000000000000000000000000000000000000004d2` is 12345 as uint256. + +## Further reading {#further-reading} + +- [EIP-223: ERC-223 Token Standard](https://eips.ethereum.org/EIPS/eip-223) +- [Initial ERC-223 proposal](https://github.com/ethereum/eips/issues/223) From 1187dbdec01cb4634723f2589f69616f17c42422 Mon Sep 17 00:00:00 2001 From: Dexaran Date: Mon, 11 Dec 2023 23:13:16 +0400 Subject: [PATCH 014/366] Update index.md --- src/content/developers/docs/standards/tokens/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/content/developers/docs/standards/tokens/index.md b/src/content/developers/docs/standards/tokens/index.md index 92f8fe8b3fc..46a1064c4f2 100644 --- a/src/content/developers/docs/standards/tokens/index.md +++ b/src/content/developers/docs/standards/tokens/index.md @@ -19,6 +19,7 @@ Many Ethereum development standards focus on token interfaces. These standards h Here are some of the most popular token standards on Ethereum: - [ERC-20](/developers/docs/standards/tokens/erc-20/) - A standard interface for fungible (interchangeable) tokens, like voting tokens, staking tokens or virtual currencies. +- [ERC-223](/developers/docs/standards/tokens/erc-223/) - A fungible token standard with "transaction handling" model that makes token behave identical to ether. - [ERC-721](/developers/docs/standards/tokens/erc-721/) - A standard interface for non-fungible tokens, like a deed for artwork or a song. - [ERC-777](/developers/docs/standards/tokens/erc-777/) - ERC-777 allows people to build extra functionality on top of tokens such as a mixer contract for improved transaction privacy or an emergency recover function to bail you out if you lose your private keys. - [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ERC-1155 allows for more efficient trades and bundling of transactions – thus saving costs. This token standard allows for creating both utility tokens (such as $BNB or $BAT) and Non-Fungible Tokens like CryptoPunks. From f6b1e6c9316301a8b39a8859f14eac6e37b9fda9 Mon Sep 17 00:00:00 2001 From: Dexaran Date: Mon, 11 Dec 2023 23:15:05 +0400 Subject: [PATCH 015/366] Update developer-docs-links.yaml --- src/data/developer-docs-links.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/data/developer-docs-links.yaml b/src/data/developer-docs-links.yaml index aea656f0866..33a6d28ccb0 100644 --- a/src/data/developer-docs-links.yaml +++ b/src/data/developer-docs-links.yaml @@ -195,6 +195,8 @@ items: - id: docs-nav-erc-20 to: /developers/docs/standards/tokens/erc-20/ + - id: docs-nav-erc-223 + to: /developers/docs/standards/tokens/erc-223/ - id: docs-nav-erc-721 to: /developers/docs/standards/tokens/erc-721/ - id: docs-nav-erc-777 From 21cce55a7204458cb35ff6c5f23de949fb364657 Mon Sep 17 00:00:00 2001 From: JanetMo Date: Fri, 5 Jan 2024 01:57:07 +0100 Subject: [PATCH 016/366] add quiz about daos [issue #11836] --- src/data/quizzes/index.ts | 9 +++ src/data/quizzes/questionBank.ts | 131 +++++++++++++++++++++++++++++++ src/intl/en/learn-quizzes.json | 47 ++++++++++- 3 files changed, 186 insertions(+), 1 deletion(-) diff --git a/src/data/quizzes/index.ts b/src/data/quizzes/index.ts index e9a2c1195f4..f986166cbb9 100644 --- a/src/data/quizzes/index.ts +++ b/src/data/quizzes/index.ts @@ -35,6 +35,10 @@ const quizzes: RawQuizzes = { title: "page-assets-merge", questions: ["h001", "h002", "h003", "h004", "h005"], }, + daos: { + title: "DAOs", + questions: ["i001", "i002", "i003", "i004", "i005"], + }, } export const ethereumBasicsQuizzes: QuizzesSection[] = [ @@ -78,6 +82,11 @@ export const usingEthereumQuizzes: QuizzesSection[] = [ { id: "layer-2", level: "intermediate", + next: "DAOs", + }, + { + id: "DAOs", + level: "intermediate", }, ] diff --git a/src/data/quizzes/questionBank.ts b/src/data/quizzes/questionBank.ts index 1af69d47734..39d94aa4ad9 100644 --- a/src/data/quizzes/questionBank.ts +++ b/src/data/quizzes/questionBank.ts @@ -887,6 +887,137 @@ const questionBank: QuestionBank = { ], correctAnswerId: "h005-b", }, + // DAOs + i001: { + prompt: "i001-prompt", + answers: [ + { + id: "i001-a", + label: "i001-a-label", + explanation: "i001-a-explanation", + }, + { + id: "i001-b", + label: "i001-b-label", + explanation: "i001-b-explanation", + }, + { + id: "i001-c", + label: "i001-c-label", + explanation: "i001-c-explanation", + }, + { + id: "i001-d", + label: "i001-d-label", + explanation: "i001-d-explanation", + }, + ], + correctAnswerId: "i001-d", + }, + i002: { + prompt: "i002-prompt", + answers: [ + { + id: "i002-a", + label: "i002-a-label", + explanation: "i002-a-explanation", + }, + { + id: "i002-b", + label: "i002-b-label", + explanation: "i002-b-explanation", + }, + { + id: "i002-c", + label: "i002-c-label", + explanation: "i002-c-explanation", + }, + { + id: "i002-d", + label: "i002-d-label", + explanation: "i002-d-explanation", + }, + ], + correctAnswerId: "i002-d", + }, + i003: { + prompt: "i003-prompt", + answers: [ + { + id: "i003-a", + label: "i003-a-label", + explanation: "i003-a-explanation", + }, + { + id: "i003-b", + label: "i003-b-label", + explanation: "i003-b-explanation", + }, + { + id: "i003-c", + label: "i003-c-label", + explanation: "i003-c-explanation", + }, + { + id: "i003-d", + label: "i003-d-label", + explanation: "i003-d-explanation", + }, + ], + correctAnswerId: "i003-b", + }, + i004: { + prompt: "i004-prompt", + answers: [ + { + id: "i004-a", + label: "i004-a-label", + explanation: "i004-a-explanation", + }, + { + id: "i004-b", + label: "i004-b-label", + explanation: "i004-b-explanation", + }, + { + id: "i004-c", + label: "i004-c-label", + explanation: "i004-c-explanation", + }, + { + id: "i004-d", + label: "i004-d-label", + explanation: "i004-d-explanation", + }, + ], + correctAnswerId: "i004-c", + }, + i005: { + prompt: "i005-prompt", + answers: [ + { + id: "i005-a", + label: "i005-a-label", + explanation: "i005-a-explanation", + }, + { + id: "i005-b", + label: "i005-b-label", + explanation: "i005-b-explanation", + }, + { + id: "i005-c", + label: "i005-c-label", + explanation: "i005-c-explanation", + }, + { + id: "i005-d", + label: "i005-d-label", + explanation: "i005-d-explanation", + }, + ], + correctAnswerId: "i005-d", + }, } export default questionBank diff --git a/src/intl/en/learn-quizzes.json b/src/intl/en/learn-quizzes.json index ffef2fd65ad..52980480052 100644 --- a/src/intl/en/learn-quizzes.json +++ b/src/intl/en/learn-quizzes.json @@ -324,5 +324,50 @@ "h005-c-label": "Eth1", "h005-c-explanation": "Eth1 was the original name given to the execution layer, not the consensus layer.", "h005-d-label": "Staking", - "h005-d-explanation": "Staking is depositing ETH into a smart contract to help secure the chain." + "h005-d-explanation": "Staking is depositing ETH into a smart contract to help secure the chain.", + "i001-prompt": "What is true about DAOs?", + "i001-a-label": "DAOs are collectively owned via governance tokens", + "i001-a-explanation": "DAOs are collectively owned, but that’s not the only correct statement.", + "i001-b-label": "They are governed by their members", + "i001-b-explanation": "DAOs are governed by their members, but that’s not the only correct statement.", + "i001-c-label": "They are working towards a shared mission", + "i001-c-explanation": "DAOs are working towards a shared mission, but that’s not the only correct statement.", + "i001-d-label": "All of the above", + "i001-d-explanation": "Correct, a DAO is a collectively-owned, blockchain-governed organization working towards a shared mission.", + "i002-prompt": "What are practical examples of how to use a DAO?", + "i002-a-label": "Decentralized protocols, members vote on the matters of the protocol or how to develop the product", + "i002-a-explanation": "Protocol DAOs are one example, but DAOs are not limited to that.", + "i002-b-label": "Collective ownership, e.g., for NFTs or physical assets", + "i002-b-explanation": "Collector DAOs are one example, but DAOs are not limited to that.", + "i002-c-label": "Ventures and grants, pool capital and vote on projects to fund", + "i002-c-explanation": "Venture or grants DAOs are one example, but DAOs are not limited to that.", + "i002-d-label": "All of the above", + "i002-d-explanation": "A DAO can have a multitude of 'missions'. Check out the resources to find practical examples.", + "i003-prompt": "Unlike traditional organizations, DAOs are…", + "i003-a-label": "Usually hierarchical", + "i003-a-explanation": "DAOs are usually flat, and fully democratized.", + "i003-b-label": "Transparent and fully public about their activities", + "i003-b-explanation": "Thanks to on-chain voting, decisions are transparent on the blockchain. Discussions and other elements of the decision-making process are usually open as well.", + "i003-c-label": "Controlled by a central party", + "i003-c-explanation": "Changes require voting by the members. Services offered are handled automatically in a decentralized manner.", + "i003-d-label": "Restricted regarding who can suggest changes", + "i003-d-explanation": "Usually, every DAO member can suggest changes.", + "i004-prompt": "What is essential about Smart Contracts for DAOs?", + "i004-a-label": "The Smart Contract code can be modified", + "i004-a-explanation": "Once the contract is live on Ethereum, no one can change the rules except by a vote. This allows the DAO to run by the rules it was programmed with.", + "i004-b-label": "One DAO member gets the right to spend money from the treasury", + "i004-b-explanation": "The treasury is defined by the smart contract. To spend money, the group's approval is needed.", + "i004-c-label": "Trust in the underlying blockchain due to a distributed consensus", + "i004-c-explanation": "It’s important for a DAO that the underlying blockchain cannot be manipulated. Ethereum’s own consensus is distributed and established enough for organizations to trust the network.", + "i004-d-label": "DAOs don’t need Smart Contracts", + "i004-d-explanation": "The backbone of a DAO is its smart contract, which defines the rules of the organization and holds the group's treasury.", + "i005-prompt": "What is not a mechanism to govern a DAO?", + "i005-a-label": "Token-based membership", + "i005-a-explanation": "Token-based governance is very widely used. It’s usually fully permissionless and is typically used to govern broad decentralized protocols and/or tokens themselves.", + "i005-b-label": "Share-based membership", + "i005-b-explanation": "Share-based DAOs are more permissioned but still quite open. Any prospective member can submit a proposal to join the DAO, usually offering a tribute of some value in the form of tokens or work.", + "i005-c-label": "Reputation-based membership", + "i005-c-explanation": "Unlike token or share-based membership, reputation-based DAOs don't transfer ownership to contributors. DAO members must earn reputation through participation.", + "i005-d-label": "Residency-based membership", + "i005-d-explanation": "There are a lot of possible governance mechanisms in DAOs, but residency is not a criterion. On the contrary, DAOs are characterized by their global nature." } From 72590f835b5d706c132d1c6bef536ae110b2ac5a Mon Sep 17 00:00:00 2001 From: Ashis Kumar Date: Fri, 12 Jan 2024 16:14:13 +0530 Subject: [PATCH 017/366] removed codeModal import from index file. --- src/components/Modal/index.tsx | 2 -- src/pages/index.tsx | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/Modal/index.tsx b/src/components/Modal/index.tsx index ffecb451664..e97bdc1cf44 100644 --- a/src/components/Modal/index.tsx +++ b/src/components/Modal/index.tsx @@ -19,7 +19,6 @@ export interface IPropsOverlay { export interface IProps extends ModalContentProps, Pick { children?: React.ReactNode title?: string - description?: string actionButtonLabel?: string isOpen: boolean setIsOpen: (isOpen: boolean) => void @@ -28,7 +27,6 @@ export interface IProps extends ModalContentProps, Pick { const Modal: React.FC = ({ children, title, - description, actionButtonLabel, isOpen, setIsOpen, diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 4f29194351e..efd288f32e3 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -25,7 +25,6 @@ import ActionCard from "@/components/ActionCard" import ButtonLink from "@/components/Buttons/ButtonLink" import CalloutBanner from "@/components/CalloutBanner" import Codeblock from "@/components/Codeblock" -import CodeModal from "@/components/CodeModal" import CommunityEvents from "@/components/CommunityEvents" import HomeHero from "@/components/Hero/HomeHero" import { Image } from "@/components/Image" @@ -68,6 +67,7 @@ import infrastructurefixed from "@/public/infrastructure_transparent.png" import merge from "@/public/upgrades/merge.png" import robotfixed from "@/public/wallet-cropped.png" import ethereum from "@/public/what-is-ethereum.png" +import Modal from "@/components/Modal" const SectionHeading = (props: HeadingProps) => ( Date: Thu, 18 Jan 2024 13:49:26 +0530 Subject: [PATCH 018/366] Delete CodeModal.tsx --- src/components/CodeModal.tsx | 39 ------------------------------------ 1 file changed, 39 deletions(-) delete mode 100644 src/components/CodeModal.tsx diff --git a/src/components/CodeModal.tsx b/src/components/CodeModal.tsx deleted file mode 100644 index 0841a91f090..00000000000 --- a/src/components/CodeModal.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import type { ReactNode } from "react" -import { - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalHeader, - ModalOverlay, -} from "@chakra-ui/react" - -type CodeModalProps = { - title: string - children: ReactNode - isOpen: boolean - setIsOpen: (isOpen: boolean) => void -} - -const CodeModal = ({ children, isOpen, setIsOpen, title }: CodeModalProps) => ( - setIsOpen(false)} - > - - - {title} - - {children} - - -) - -export default CodeModal From 0ab20f5ff1a33ee894831dc93d4f7030f1031dff Mon Sep 17 00:00:00 2001 From: Ashis Kumar Date: Thu, 18 Jan 2024 13:59:36 +0530 Subject: [PATCH 019/366] updated the files with lint:fix --- src/components/Modal/Modal.stories.tsx | 1 + src/components/Modal/index.tsx | 10 +++++----- src/components/Quiz/QuizzesModal.tsx | 3 ++- src/pages/index.tsx | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index 31dd39ea469..81741ffc1b7 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -1,4 +1,5 @@ import { Meta, StoryObj } from "@storybook/react" + import ModalComponent from "." const meta = { diff --git a/src/components/Modal/index.tsx b/src/components/Modal/index.tsx index e97bdc1cf44..b5241525fe2 100644 --- a/src/components/Modal/index.tsx +++ b/src/components/Modal/index.tsx @@ -1,15 +1,15 @@ import React from "react" import { + Button, Modal as ChakraModal, - ModalCloseButton, - ModalHeader, ModalBody, - type ModalProps, + ModalCloseButton, + ModalContent, type ModalContentProps, - Button, ModalFooter, + ModalHeader, ModalOverlay, - ModalContent, + type ModalProps, } from "@chakra-ui/react" export interface IPropsOverlay { diff --git a/src/components/Quiz/QuizzesModal.tsx b/src/components/Quiz/QuizzesModal.tsx index ea37aeeb0e3..82ffc415db7 100644 --- a/src/components/Quiz/QuizzesModal.tsx +++ b/src/components/Quiz/QuizzesModal.tsx @@ -7,10 +7,11 @@ import { ModalOverlay, ModalProps, } from "@chakra-ui/react" -import Modal from "../Modal" import { QuizStatus } from "@/lib/types" +import Modal from "../Modal" + type props = { isQuizModalOpen: boolean onQuizModalClose: () => void diff --git a/src/pages/index.tsx b/src/pages/index.tsx index dbe3a3b1ba1..50b749c3bf7 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -29,6 +29,7 @@ import CommunityEvents from "@/components/CommunityEvents" import HomeHero from "@/components/Hero/HomeHero" import { Image } from "@/components/Image" import MainArticle from "@/components/MainArticle" +import Modal from "@/components/Modal" import PageMetadata from "@/components/PageMetadata" import StatsBoxGrid from "@/components/StatsBoxGrid" import TitleCardList, { ITitleCardItem } from "@/components/TitleCardList" @@ -67,7 +68,6 @@ import infrastructurefixed from "@/public/infrastructure_transparent.png" import merge from "@/public/upgrades/merge.png" import robotfixed from "@/public/wallet-cropped.png" import ethereum from "@/public/what-is-ethereum.png" -import Modal from "@/components/Modal" const SectionHeading = (props: HeadingProps) => ( Date: Mon, 22 Jan 2024 09:46:58 +0100 Subject: [PATCH 020/366] better described how gas is used when interacting with a smart contract [Fixes #11989] --- public/content/developers/docs/transactions/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/public/content/developers/docs/transactions/index.md b/public/content/developers/docs/transactions/index.md index 47c88b77174..4f4870194bc 100644 --- a/public/content/developers/docs/transactions/index.md +++ b/public/content/developers/docs/transactions/index.md @@ -160,7 +160,9 @@ The base fee will be burned **-0.00399 ETH** Validator keeps the tip **+0.000210 ETH** -Gas is required for any smart contract interaction too. +In case of an interaction with a smart contract there is 2 cases possible: +1. A `view` or `pure` function (as described in [solidity documentation](https://docs.soliditylang.org/en/v0.8.23/contracts.html#view-functions)) is called from an EOA. In that specific case, no gas will be paid by the caller and the result will be returned. The underlying RPC call for this scenario is [eth_call](https://ethereum.org/en/developers/docs/apis/json-rpc#eth_call) +2. In any other cases gas will be paid by the caller. Which mean: calling a `view` or `pure` function internally (ie: not from an EAO) will cost gas. ![Diagram showing how unused gas is refunded](./gas-tx.png) _Diagram adapted from [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ From e5fc554d3ebed63d3392622fb9bd757eca064f80 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 7 Feb 2024 23:39:01 -0500 Subject: [PATCH 021/366] fix(rehypeImg): set posix path for filename in `setImagePlaceholders` --- src/lib/rehype/rehypeImg.ts | 38 +++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/lib/rehype/rehypeImg.ts b/src/lib/rehype/rehypeImg.ts index 6dd40074f65..3be376e9d3a 100644 --- a/src/lib/rehype/rehypeImg.ts +++ b/src/lib/rehype/rehypeImg.ts @@ -15,6 +15,8 @@ import { import { DEFAULT_LOCALE, PLACEHOLDER_IMAGE_DIR } from "@/lib/constants" +import { toPosixPath } from "../utils/relativePath" + interface Options { dir: string srcPath: string @@ -22,15 +24,15 @@ interface Options { } type ImageNode = { - type: 'element' - tagName: 'img' + type: "element" + tagName: "img" properties: { src: string height?: number width?: number aspectRatio?: number blurDataURL?: string - placeholder?: 'blur' | 'empty' + placeholder?: "blur" | "empty" } } @@ -65,24 +67,31 @@ const getImageSize = (src: string, dir: string) => { return sizeOf(src) } - /** * Sets image placeholders for the given array of images. - * + * * @param images - The array of images to set placeholders for. * @param srcPath - The source page path for the images. * @returns A promise that resolves to void. */ -const setImagePlaceholders = async (images: ImageNode[], srcPath: string): Promise => { +const setImagePlaceholders = async ( + images: ImageNode[], + srcPath: string +): Promise => { // Generate kebab-case filename from srcPath, ie: /content/nft => content-nft-data.json - const FILENAME = path.join(srcPath, "data.json").replaceAll("/", "-").slice(1) + const FILENAME = toPosixPath(path.join(srcPath, "data.json")) + .replaceAll("/", "-") + .slice(1) // Make directory for current page if none exists - if (!fs.existsSync(PLACEHOLDER_IMAGE_DIR)) fs.mkdirSync(PLACEHOLDER_IMAGE_DIR, { recursive: true }) + if (!fs.existsSync(PLACEHOLDER_IMAGE_DIR)) + fs.mkdirSync(PLACEHOLDER_IMAGE_DIR, { recursive: true }) const DATA_PATH = path.join(PLACEHOLDER_IMAGE_DIR, FILENAME) const existsCache = fs.existsSync(DATA_PATH) - const placeholdersCached: PlaceholderData = existsCache ? JSON.parse(fs.readFileSync(DATA_PATH, "utf8")) : {} + const placeholdersCached: PlaceholderData = existsCache + ? JSON.parse(fs.readFileSync(DATA_PATH, "utf8")) + : {} let isChanged = false // Generate placeholder for internal images @@ -96,13 +105,18 @@ const setImagePlaceholders = async (images: ImageNode[], srcPath: string): Promi const buffer: Buffer = fs.readFileSync(path.join("public", src)) // Get hash fingerprint of image data (no security implications; fast algorithm prioritized) - const hash = await getHashFromBuffer(buffer, { algorithm: "SHA-1", length: 8 }) + const hash = await getHashFromBuffer(buffer, { + algorithm: "SHA-1", + length: 8, + }) // Look for cached placeholder data with matching hash - const cachedPlaceholder: Placeholder | null = placeholdersCached[src]?.hash === hash ? placeholdersCached[src] : null + const cachedPlaceholder: Placeholder | null = + placeholdersCached[src]?.hash === hash ? placeholdersCached[src] : null // Get base64 from cached placeholder if available, else generate new placeholder - const { base64 } = cachedPlaceholder || await getPlaiceholder(buffer, { size: 16 }) + const { base64 } = + cachedPlaceholder || (await getPlaiceholder(buffer, { size: 16 })) // Assign base64 placeholder data to image node `blurDataURL` property image.properties.blurDataURL = base64 From 9fb1cb74588d5938f51418e1737ad7d9fe00bb4d Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 13 Mar 2024 21:59:46 -0400 Subject: [PATCH 022/366] chore: update storybook testing dependency --- package.json | 4 +- yarn.lock | 287 ++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 276 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 5b788ca9132..410981cadfa 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "@storybook/addon-links": "7.6.6", "@storybook/nextjs": "7.6.6", "@storybook/react": "7.6.6", - "@storybook/testing-library": "0.2.2", + "@storybook/test": "8.0.0", "@svgr/webpack": "^8.1.0", "@types/hast": "^3.0.0", "@types/luxon": "^3.3.2", @@ -93,4 +93,4 @@ "resolutions": { "jackspeak": "2.1.1" } -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index bfab083946a..739e09c1efc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,11 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@adobe/css-tools@^4.3.2": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" + integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== + "@algolia/autocomplete-core@1.9.3": version "1.9.3" resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7" @@ -1235,6 +1240,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.9.2": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e" + integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.12.7", "@babel/template@^7.22.15", "@babel/template@^7.23.9": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" @@ -3611,6 +3623,17 @@ telejson "^7.2.0" tiny-invariant "^1.3.1" +"@storybook/channels@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-8.0.0.tgz#ccebf0af00167570c4c59d7d6720f7de8ff1bf67" + integrity sha512-uykCBlSIMVodsgTFC/XAgO7JeaTJrKtDmmM6Z4liGkPS6EUvurOEu2vK6FuvojzhLHdVJ5bP+VXSJerfm7aE4Q== + dependencies: + "@storybook/client-logger" "8.0.0" + "@storybook/core-events" "8.0.0" + "@storybook/global" "^5.0.0" + telejson "^7.2.0" + tiny-invariant "^1.3.1" + "@storybook/cli@7.6.6": version "7.6.6" resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.6.6.tgz#401c1e9fd04bcc4b1f1486a7582e3c5317c0af3f" @@ -3665,6 +3688,13 @@ dependencies: "@storybook/global" "^5.0.0" +"@storybook/client-logger@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-8.0.0.tgz#0fc7cc812de9eb42125fe85752d9f54090b518bf" + integrity sha512-olc1vUfaZNkXc7L8UoCdGmyBieHQbsaB+0vVoivYMSa1DHYtXE75RefU3lhMSGrkvIZmXMvfaIDmnyJIOB5FxA== + dependencies: + "@storybook/global" "^5.0.0" + "@storybook/codemod@7.6.6": version "7.6.6" resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.6.6.tgz#d8ebf6ad22e3a6da19410be5e2205a99d364e1e4" @@ -3745,6 +3775,13 @@ dependencies: ts-dedent "^2.0.0" +"@storybook/core-events@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-8.0.0.tgz#9948261df8615a3d1e3c5b7886c928f5dc944092" + integrity sha512-kkabj4V99gOTBW+y3HM/LTCDekglqb+lslZMamM+Ytxv1lCqCEOIR/OGfnYOyEaK4BLcx61Zp+fO30FZxtoT1w== + dependencies: + ts-dedent "^2.0.0" + "@storybook/core-server@7.6.6": version "7.6.6" resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.6.6.tgz#7816b98ab9b2dd02a11876f5113e7bcf713685b1" @@ -3863,6 +3900,19 @@ resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== +"@storybook/instrumenter@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-8.0.0.tgz#7137714062ffbf2264dd6ee6ad752629e8874d06" + integrity sha512-wNDVmyLu3kRf/2xf8lQJBI8Gx5eGlvOFwCagUfgd5Ke3l3Xo0XUgNjqFBbqG9ZouC21U6znBTYsIS+eEe61i7w== + dependencies: + "@storybook/channels" "8.0.0" + "@storybook/client-logger" "8.0.0" + "@storybook/core-events" "8.0.0" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "8.0.0" + "@vitest/utils" "^0.34.6" + util "^0.12.4" + "@storybook/manager-api@7.6.6": version "7.6.6" resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.6.6.tgz#8001e1cb756bde85cd639e69025ea005b8b36509" @@ -3993,6 +4043,26 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" +"@storybook/preview-api@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-8.0.0.tgz#044a070ec4ddd1a4847c3e88a17fbe72c612106f" + integrity sha512-R2NBKtvHi+i1b/3PZe4u4YdJ7dlqr8YTqLn7syB/YSnKRAa7DYed+GJLu4qFJisE6IuYi+57AsdW16otRFEVvg== + dependencies: + "@storybook/channels" "8.0.0" + "@storybook/client-logger" "8.0.0" + "@storybook/core-events" "8.0.0" + "@storybook/csf" "^0.1.2" + "@storybook/global" "^5.0.0" + "@storybook/types" "8.0.0" + "@types/qs" "^6.9.5" + dequal "^2.0.2" + lodash "^4.17.21" + memoizerific "^1.11.3" + qs "^6.10.0" + tiny-invariant "^1.3.1" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + "@storybook/preview@7.6.6": version "7.6.6" resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.6.6.tgz#0099ed0297a8d3b5311450e10c8b0ca4275cf284" @@ -4066,14 +4136,22 @@ fs-extra "^11.1.0" read-pkg-up "^7.0.1" -"@storybook/testing-library@0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@storybook/testing-library/-/testing-library-0.2.2.tgz#c8e089cc8d7354f6066fdb580fae3eedf568aa7c" - integrity sha512-L8sXFJUHmrlyU2BsWWZGuAjv39Jl1uAqUHdxmN42JY15M4+XCMjGlArdCCjDe1wpTSW6USYISA9axjZojgtvnw== - dependencies: - "@testing-library/dom" "^9.0.0" - "@testing-library/user-event" "^14.4.0" - ts-dedent "^2.2.0" +"@storybook/test@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@storybook/test/-/test-8.0.0.tgz#645ea453174d89299cc933c1152f8014999ab3b0" + integrity sha512-am0Pj1wqgsOUpW4RCfZtVGMIF8ddwMCbortOezEKcFuwAaNPE+p62alG+vOVIR0D19fs0XouWJj8rGo3OhzJRA== + dependencies: + "@storybook/client-logger" "8.0.0" + "@storybook/core-events" "8.0.0" + "@storybook/instrumenter" "8.0.0" + "@storybook/preview-api" "8.0.0" + "@testing-library/dom" "^9.3.1" + "@testing-library/jest-dom" "^6.4.0" + "@testing-library/user-event" "^14.5.2" + "@vitest/expect" "1.1.3" + "@vitest/spy" "^1.1.3" + chai "^4.3.7" + util "^0.12.4" "@storybook/theming@7.6.6": version "7.6.6" @@ -4095,6 +4173,15 @@ "@types/express" "^4.7.0" file-system-cache "2.3.0" +"@storybook/types@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@storybook/types/-/types-8.0.0.tgz#612e335b6ff81544740d6186d1e30549389cbe11" + integrity sha512-6nJipdgoAkVFk2JpRPCm9vb/Yuak2lmdZRv9qzl8cNRttlbOESVlzbmhgxCmWV0OYUaMeYge9L8NWhJ14LKbzw== + dependencies: + "@storybook/channels" "8.0.0" + "@types/express" "^4.7.0" + file-system-cache "2.3.0" + "@svgr/babel-plugin-add-jsx-attribute@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" @@ -4287,7 +4374,7 @@ resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== -"@testing-library/dom@^9.0.0": +"@testing-library/dom@^9.3.1": version "9.3.4" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.4.tgz#50696ec28376926fec0a1bf87d9dbac5e27f60ce" integrity sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ== @@ -4301,7 +4388,21 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/user-event@^14.4.0": +"@testing-library/jest-dom@^6.4.0": + version "6.4.2" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.2.tgz#38949f6b63722900e2d75ba3c6d9bf8cffb3300e" + integrity sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw== + dependencies: + "@adobe/css-tools" "^4.3.2" + "@babel/runtime" "^7.9.2" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.6.3" + lodash "^4.17.15" + redent "^3.0.0" + +"@testing-library/user-event@^14.5.2": version "14.5.2" resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ== @@ -4495,7 +4596,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.5": +"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -4909,6 +5010,48 @@ resolved "https://registry.yarnpkg.com/@vercel/node-bridge/-/node-bridge-2.2.2.tgz#f63466ab6a2588afdc6262c2d060289bfe8baa6b" integrity sha512-haGBC8noyA5BfjCRXRH+VIkHCDVW5iD5UX24P2nOdilwUxI4qWsattS/co8QBGq64XsNLRAMdM5pQUE3zxkF9Q== +"@vitest/expect@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.1.3.tgz#9667719dffa82e7350dcca7b95f9ec30426d037e" + integrity sha512-MnJqsKc1Ko04lksF9XoRJza0bGGwTtqfbyrsYv5on4rcEkdo+QgUdITenBQBUltKzdxW7K3rWh+nXRULwsdaVg== + dependencies: + "@vitest/spy" "1.1.3" + "@vitest/utils" "1.1.3" + chai "^4.3.10" + +"@vitest/spy@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.1.3.tgz#244e4e049cd0a5b126a475af327df8b7ffa6b3b5" + integrity sha512-Ec0qWyGS5LhATFQtldvChPTAHv08yHIOZfiNcjwRQbFPHpkih0md9KAbs7TfeIfL7OFKoe7B/6ukBTqByubXkQ== + dependencies: + tinyspy "^2.2.0" + +"@vitest/spy@^1.1.3": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.3.1.tgz#814245d46d011b99edd1c7528f5725c64e85a88b" + integrity sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig== + dependencies: + tinyspy "^2.2.0" + +"@vitest/utils@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.1.3.tgz#1f82122f916b0b6feb5e85fc854cfa1fbd522b55" + integrity sha512-Dyt3UMcdElTll2H75vhxfpZu03uFpXRCHxWnzcrFjZxT1kTbq8ALUYIeBgGolo1gldVdI0YSlQRacsqxTwNqwg== + dependencies: + diff-sequences "^29.6.3" + estree-walker "^3.0.3" + loupe "^2.3.7" + pretty-format "^29.7.0" + +"@vitest/utils@^0.34.6": + version "0.34.7" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-0.34.7.tgz#46d0d27cd0f6ca1894257d4e141c5c48d7f50295" + integrity sha512-ziAavQLpCYS9sLOorGrFFKmy2gnfiNU0ZJ15TsMz/K92NAPS/rp9K4z6AJQQk5Y8adCy4Iwpxy7pQumQ/psnRg== + dependencies: + diff-sequences "^29.4.3" + loupe "^2.3.6" + pretty-format "^29.5.0" + "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" @@ -5283,7 +5426,7 @@ aria-query@5.1.3: dependencies: deep-equal "^2.0.5" -aria-query@^5.3.0: +aria-query@^5.0.0, aria-query@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== @@ -5395,6 +5538,11 @@ assert@^2.0.0, assert@^2.1.0: object.assign "^4.1.4" util "^0.12.5" +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + ast-types-flow@^0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" @@ -5855,6 +6003,19 @@ ccount@^2.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== +chai@^4.3.10, chai@^4.3.7: + version "4.4.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.0.8" + chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -5864,6 +6025,14 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -5892,6 +6061,13 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -6416,6 +6592,11 @@ css-what@^6.0.1, css-what@^6.1.0: resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -6559,6 +6740,13 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +deep-eql@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" + deep-equal@^2.0.5: version "2.2.3" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" @@ -6745,6 +6933,11 @@ detect-port@^1.3.0: address "^1.0.1" debug "4" +diff-sequences@^29.4.3, diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -6790,6 +6983,11 @@ dom-accessibility-api@^0.5.9: resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== +dom-accessibility-api@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" + integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== + dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -7445,6 +7643,13 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -7953,6 +8158,11 @@ gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" @@ -9440,6 +9650,13 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +loupe@^2.3.6, loupe@^2.3.7: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" @@ -10102,7 +10319,7 @@ mimic-response@^3.1.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== -min-indent@^1.0.1: +min-indent@^1.0.0, min-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== @@ -10845,6 +11062,11 @@ pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + pbkdf2@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -11069,6 +11291,15 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" +pretty-format@^29.5.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + pretty-hrtime@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" @@ -11399,6 +11630,11 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -11599,6 +11835,14 @@ recharts@^2.7.3: tiny-invariant "^1.3.1" victory-vendor "^36.6.8" +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + redis-errors@^1.0.0, redis-errors@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" @@ -12421,6 +12665,13 @@ strip-final-newline@^3.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + strip-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853" @@ -12680,6 +12931,11 @@ tiny-invariant@^1.0.6, tiny-invariant@^1.3.1: resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== +tinyspy@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1" + integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A== + tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -12840,6 +13096,11 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-detect@^4.0.0, type-detect@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-fest@^0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" From 2957a57c0300b63445e35acffa284dcb1ac21366 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 13 Mar 2024 22:10:57 -0400 Subject: [PATCH 023/366] feat(FeedbackWidget): add snapshot for modal --- .../FeedbackWidget/FeedbackWidget.stories.tsx | 30 ++++++++++++++++--- src/components/FeedbackWidget/FixedDot.tsx | 1 + src/components/FeedbackWidget/index.tsx | 1 + 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/components/FeedbackWidget/FeedbackWidget.stories.tsx b/src/components/FeedbackWidget/FeedbackWidget.stories.tsx index 273fcd627bf..0411f433a3f 100644 --- a/src/components/FeedbackWidget/FeedbackWidget.stories.tsx +++ b/src/components/FeedbackWidget/FeedbackWidget.stories.tsx @@ -1,10 +1,11 @@ import * as React from "react" import { Box, Stack } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" +import { expect, fireEvent, waitFor, within } from "@storybook/test" -import FeedbackWidgetComponent from "./" +import FeedbackWidget from "./" -type FeedbackWidgetType = typeof FeedbackWidgetComponent +type FeedbackWidgetType = typeof FeedbackWidget const meta = { title: "FeedbackWidget", @@ -23,6 +24,27 @@ const meta = { export default meta -export const FeedbackWidget: StoryObj = { - render: () => , +type Story = StoryObj + +export const WidgetButton: Story = { + render: () => , +} + +export const WidgetModal: Story = { + render: () => , + play: async ({ canvasElement }) => { + // Add delay for snapshot capture of the modal + const canvas = within(canvasElement) + const canvasParent = within(canvasElement.parentElement!) + + const feedbackButton = canvas.getByTestId("feedback-widget-button") + + fireEvent.click(feedbackButton) + + await waitFor(async () => { + await expect( + canvasParent.getByTestId("feedback-widget-modal") + ).toBeVisible() + }) + }, } diff --git a/src/components/FeedbackWidget/FixedDot.tsx b/src/components/FeedbackWidget/FixedDot.tsx index a9a9a8d0a63..db895c4dc0a 100644 --- a/src/components/FeedbackWidget/FixedDot.tsx +++ b/src/components/FeedbackWidget/FixedDot.tsx @@ -12,6 +12,7 @@ const FixedDot = ({ bottomOffset, isExpanded, ...props }: FixedDotProps) => { const size = "12" return ( )} - diff --git a/src/components/Quiz/QuizWidget/QuizContent.tsx b/src/components/Quiz/QuizWidget/QuizContent.tsx index 35eb5978e44..e1ddea42349 100644 --- a/src/components/Quiz/QuizWidget/QuizContent.tsx +++ b/src/components/Quiz/QuizWidget/QuizContent.tsx @@ -23,7 +23,12 @@ export const QuizContent = ({ children }: QuizContentProps) => { return ( - + {getTitleContent()} {children} diff --git a/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx b/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx index 8bdb1bf6527..2d7ce67a5e1 100644 --- a/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx +++ b/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx @@ -43,7 +43,12 @@ export const QuizRadioGroup = () => { onChange: handleSelection, }) - const { answers, correctAnswerId, prompt } = questions[currentQuestionIndex] + const { + answers, + correctAnswerId, + prompt, + id: questionId, + } = questions[currentQuestionIndex] // Memoized values const explanation = useMemo(() => { @@ -73,7 +78,7 @@ export const QuizRadioGroup = () => { {t(prompt)} - + {answers.map(({ id, label }, idx) => { const display = !answerStatus || id === selectedAnswer ? "inline-flex" : "none" @@ -140,6 +145,8 @@ const CustomRadio = ({ color: isAnswerVisible ? getAnswerColor() : undefined, } + const radioInputProps = getInputProps({ id: INPUT_ID }) + return ( <> {label} - + ) } diff --git a/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx b/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx new file mode 100644 index 00000000000..af4a83748fb --- /dev/null +++ b/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx @@ -0,0 +1,85 @@ +import type { Meta, StoryObj } from "@storybook/react" +import { expect, userEvent, waitFor, within } from "@storybook/test" + +import questionBank from "@/data/quizzes/questionBank" + +import { StandaloneQuizWidget } from "./" + +const layer2QuestionBank = Object.entries(questionBank).reduce< + { id: string; correctAnswer: string }[] +>((arr, curr) => { + if (!curr[0].startsWith("g")) return [...arr] + + return [ + ...arr, + { + id: curr[0], + correctAnswer: curr[1].correctAnswerId, + }, + ] +}, []) + +type QuizWidgetType = typeof StandaloneQuizWidget + +const meta = { + title: "QuizWidget", + component: StandaloneQuizWidget, +} satisfies Meta + +export default meta + +export const QuizWidgetAllCorrect: StoryObj = { + args: { + quizKey: "layer-2", + }, + render: (args) => , + + play: async ({ canvasElement, step }) => { + const canvas = within(canvasElement) + + const quizWidget = canvas.getByTestId("quiz-widget") + await expect(quizWidget).toBeInTheDocument() + + // TODO: would like to add this check to confirm translation is working + // currently broken here, despite it working fine in prod + // await waitFor(() => + // expect(canvas.getByTestId("answer-status-null")).toHaveTextContent( + // "Layer 2" + // ) + // ) + + await waitFor(() => + expect(canvas.getByTestId("check-answer-button")).toBeDisabled() + ) + + await step("Answer all questions correctly", async () => { + for (let i = 0; i < layer2QuestionBank.length; i++) { + const questionGroupId = canvas.getByTestId("question-group").id + const questionAnswers = canvas.getAllByTestId("quiz-question-answer") + const currentQuestionBank = layer2QuestionBank.find( + ({ id }) => id === questionGroupId + )! + await userEvent.click( + questionAnswers.find( + (answer) => answer.id === currentQuestionBank.correctAnswer + )! + ) + + await userEvent.click(canvas.getByTestId("check-answer-button")) + await expect( + canvas.getByTestId("answer-status-correct") + ).toBeInTheDocument() + + if (i === layer2QuestionBank.length - 1) { + await userEvent.click(canvas.getByTestId("see-results-button")) + } else { + await userEvent.click(canvas.getByTestId("next-question-button")) + } + } + }) + + await step("Check for successful results page", async () => { + await expect(canvasElement).toHaveTextContent("You passed the quiz!") + }) + }, +} diff --git a/src/components/Quiz/QuizWidget/index.tsx b/src/components/Quiz/QuizWidget/index.tsx index f3a55b6b3cf..f45e3e387d6 100644 --- a/src/components/Quiz/QuizWidget/index.tsx +++ b/src/components/Quiz/QuizWidget/index.tsx @@ -114,7 +114,7 @@ const QuizWidget = ({ } return ( - + Date: Tue, 2 Apr 2024 18:02:22 -0400 Subject: [PATCH 035/366] refactor(ContentHero): allow for no rendering of CTA buttons --- src/components/Hero/ContentHero/index.tsx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/Hero/ContentHero/index.tsx b/src/components/Hero/ContentHero/index.tsx index c48cb3825bc..b8ee6ad4b9d 100644 --- a/src/components/Hero/ContentHero/index.tsx +++ b/src/components/Hero/ContentHero/index.tsx @@ -35,12 +35,14 @@ const ContentHero = (props: ContentHeroProps) => { {title} {description} - - {buttons!.map((button, idx) => { - if (!button) return - return - })} - + {buttons && ( + + {buttons.map((button, idx) => { + if (!button) return + return + })} + + )} {/* TODO: * Add conditional Big Stat box here From 1a2319fd6c77062ed900dfb17eb817ddfb11989a Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Tue, 2 Apr 2024 23:23:21 -0400 Subject: [PATCH 036/366] refactor(Hero): redefine declaration of hero prop types --- .../Hero/ContentHero/ContentHero.stories.tsx | 4 +- src/components/Hero/ContentHero/index.tsx | 8 ++-- src/components/Hero/HomeHero/index.tsx | 1 + .../Hero/HubHero/HubHero.stories.tsx | 6 +-- src/components/Hero/HubHero/index.tsx | 4 +- src/components/Hero/MdxHero/index.tsx | 8 ++-- src/lib/types.ts | 45 +++++++++++++++++-- 7 files changed, 54 insertions(+), 22 deletions(-) diff --git a/src/components/Hero/ContentHero/ContentHero.stories.tsx b/src/components/Hero/ContentHero/ContentHero.stories.tsx index e3d768f341c..21c994c2d83 100644 --- a/src/components/Hero/ContentHero/ContentHero.stories.tsx +++ b/src/components/Hero/ContentHero/ContentHero.stories.tsx @@ -5,8 +5,6 @@ import ContentHeroComponent, { ContentHeroProps } from "." type ContentHeroType = typeof ContentHeroComponent -import contentHeroImg from "../../../../public/mainnet.png" - const meta = { title: "Organisms / Layouts / Hero", component: ContentHeroComponent, @@ -51,7 +49,7 @@ export const ContentHero: StoryObj = { return ( { - breadcrumbs: BreadcrumbsProps -} +export type ContentHeroProps = Omit, "header"> const ContentHero = (props: ContentHeroProps) => { const { breadcrumbs, heroImg, buttons, title, description } = props diff --git a/src/components/Hero/HomeHero/index.tsx b/src/components/Hero/HomeHero/index.tsx index ae17ffb59a5..4dfd0f3d07f 100644 --- a/src/components/Hero/HomeHero/index.tsx +++ b/src/components/Hero/HomeHero/index.tsx @@ -1,3 +1,4 @@ +import type { StaticImageData } from "next/image" import { useTranslation } from "next-i18next" import { Box, Heading, Stack, Text, VStack } from "@chakra-ui/react" diff --git a/src/components/Hero/HubHero/HubHero.stories.tsx b/src/components/Hero/HubHero/HubHero.stories.tsx index beb181c6a95..f1804b7f5e8 100644 --- a/src/components/Hero/HubHero/HubHero.stories.tsx +++ b/src/components/Hero/HubHero/HubHero.stories.tsx @@ -3,7 +3,7 @@ import { useTranslation } from "next-i18next" import { Box } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" -import HubHeroComponent from "./" +import HubHeroComponent, { type HubHeroProps } from "./" type HubHeroType = typeof HubHeroComponent @@ -24,8 +24,6 @@ const meta = { export default meta -import { CommonHeroProps } from "@/lib/types" - import learnHubHeroImg from "../../../../public/heroes/learn-hub-hero.png" export const HubHero: StoryObj = { @@ -40,7 +38,7 @@ export const HubHero: StoryObj = { // eslint-disable-next-line react-hooks/rules-of-hooks const { t } = useTranslation() - const buttons: CommonHeroProps["buttons"] = [ + const buttons: HubHeroProps["buttons"] = [ { content: t("page-learn:hero-button-lets-get-started"), toId: "what-is-crypto-ethereum", diff --git a/src/components/Hero/HubHero/index.tsx b/src/components/Hero/HubHero/index.tsx index 05770a716e5..05fa022b71e 100644 --- a/src/components/Hero/HubHero/index.tsx +++ b/src/components/Hero/HubHero/index.tsx @@ -5,13 +5,15 @@ import type { CommonHeroProps } from "@/lib/types" import { CallToAction } from "@/components/Hero/CallToAction" import { Image } from "@/components/Image" +export type HubHeroProps = Omit + const HubHero = ({ heroImg, title, header, description, buttons, -}: CommonHeroProps) => { +}: HubHeroProps) => { if (buttons && buttons.length > 2) { throw new Error( "Can not have more than two call-to-action buttons in this hero component." diff --git a/src/components/Hero/MdxHero/index.tsx b/src/components/Hero/MdxHero/index.tsx index 17c080b3a1c..a560fab7da5 100644 --- a/src/components/Hero/MdxHero/index.tsx +++ b/src/components/Hero/MdxHero/index.tsx @@ -1,12 +1,10 @@ import { Heading, Stack } from "@chakra-ui/react" -import { CommonHeroProps } from "@/lib/types" +import type { CommonHeroProps } from "@/lib/types" -import Breadcrumbs, { type BreadcrumbsProps } from "@/components/Breadcrumbs" +import Breadcrumbs from "@/components/Breadcrumbs" -export type MdxHeroProps = Pick & { - breadcrumbs: BreadcrumbsProps -} +export type MdxHeroProps = Pick const MdxHero = ({ breadcrumbs, title }: MdxHeroProps) => ( diff --git a/src/lib/types.ts b/src/lib/types.ts index 7f86e9240f3..29e4124fc5b 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -16,6 +16,7 @@ import type { UseCasesFrontmatter, } from "@/lib/interfaces" +import type { BreadcrumbsProps } from "@/components/Breadcrumbs" import type { CallToActionProps } from "@/components/Hero/CallToAction" import { SimulatorNav } from "@/components/Simulator/interfaces" @@ -371,12 +372,48 @@ export type IRemarkTocOptions = { callback: (toc: TocNodeType) => void } -export type CommonHeroProps = { - heroImg: StaticImageData - header: string +/** + * General props to be picked or omitted for any of the hero components + * + * The generic prop type `HeroImg` is assigned to the `heroImg` prop + * to be able to declare either defining the prop as a static image object + * or a string. (defaults to `StaticImageData`) + */ +export type CommonHeroProps< + HeroImg extends StaticImageData | string = StaticImageData +> = { + /** + * Decorative image displayed as the full background or an aside to + * the text content + * + * Note: It is either required as a static image data object or the + * relative path of the image file, depending on the setup of the image component + * for the given hero component. + */ + heroImg: HeroImg + /** + * Object of props to render the `Breadcrumbs` component. + */ + breadcrumbs: BreadcrumbsProps + /** + * An array of content to render call-to-action buttons that leads the user to a section or sections of the + * given page from the hero. + * + * The hero can render no buttons or up to and no more than two. + */ + buttons?: [CallToActionProps, CallToActionProps?] + /** + * The primary title of the page + */ title: string + /** + * A tag name for the page + */ + header: string + /** + * Preface text about the content in the given page + */ description: string - buttons?: [CallToActionProps, CallToActionProps?] } // Learning Tools From 289f589acb36bddcc9278cd493a8819c468b8b3f Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 3 Apr 2024 00:01:52 -0400 Subject: [PATCH 037/366] refactor(ContentHero): constrain image component styling --- .../Hero/ContentHero/ContentHero.stories.tsx | 4 +++- src/components/Hero/ContentHero/index.tsx | 14 ++++++++++---- src/components/Hero/HomeHero/index.tsx | 1 - src/components/Hero/HubHero/index.tsx | 2 +- src/lib/types.ts | 4 ++++ 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/components/Hero/ContentHero/ContentHero.stories.tsx b/src/components/Hero/ContentHero/ContentHero.stories.tsx index 21c994c2d83..0a7c5e1e232 100644 --- a/src/components/Hero/ContentHero/ContentHero.stories.tsx +++ b/src/components/Hero/ContentHero/ContentHero.stories.tsx @@ -49,7 +49,9 @@ export const ContentHero: StoryObj = { return ( , "header"> const ContentHero = (props: ContentHeroProps) => { - const { breadcrumbs, heroImg, buttons, title, description } = props + const { breadcrumbs, heroImg, buttons, title, description, blurDataURL } = + props return ( - + diff --git a/src/components/Hero/HomeHero/index.tsx b/src/components/Hero/HomeHero/index.tsx index 4dfd0f3d07f..ae17ffb59a5 100644 --- a/src/components/Hero/HomeHero/index.tsx +++ b/src/components/Hero/HomeHero/index.tsx @@ -1,4 +1,3 @@ -import type { StaticImageData } from "next/image" import { useTranslation } from "next-i18next" import { Box, Heading, Stack, Text, VStack } from "@chakra-ui/react" diff --git a/src/components/Hero/HubHero/index.tsx b/src/components/Hero/HubHero/index.tsx index 05fa022b71e..4c12d01f235 100644 --- a/src/components/Hero/HubHero/index.tsx +++ b/src/components/Hero/HubHero/index.tsx @@ -5,7 +5,7 @@ import type { CommonHeroProps } from "@/lib/types" import { CallToAction } from "@/components/Hero/CallToAction" import { Image } from "@/components/Image" -export type HubHeroProps = Omit +export type HubHeroProps = Omit const HubHero = ({ heroImg, diff --git a/src/lib/types.ts b/src/lib/types.ts index 29e4124fc5b..c81558b1e6c 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -391,6 +391,10 @@ export type CommonHeroProps< * for the given hero component. */ heroImg: HeroImg + /** + * File path for the image to show on prerender. + */ + blurDataURL: string /** * Object of props to render the `Breadcrumbs` component. */ From 4479689aca6a6d599a75869691a9503d6aac5881 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 3 Apr 2024 00:23:56 -0400 Subject: [PATCH 038/366] refactor(ContentHero): allow `description` prop to accept components --- src/components/Hero/ContentHero/index.tsx | 6 +++++- src/components/Hero/HubHero/HubHero.stories.tsx | 2 +- src/lib/types.ts | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/components/Hero/ContentHero/index.tsx b/src/components/Hero/ContentHero/index.tsx index ee4eb41a94e..62b8ac903b6 100644 --- a/src/components/Hero/ContentHero/index.tsx +++ b/src/components/Hero/ContentHero/index.tsx @@ -38,7 +38,11 @@ const ContentHero = (props: ContentHeroProps) => { {title} - {description} + {typeof description === "string" ? ( + {description} + ) : ( + description + )} {buttons && ( {buttons.map((button, idx) => { diff --git a/src/components/Hero/HubHero/HubHero.stories.tsx b/src/components/Hero/HubHero/HubHero.stories.tsx index f1804b7f5e8..407d4c46116 100644 --- a/src/components/Hero/HubHero/HubHero.stories.tsx +++ b/src/components/Hero/HubHero/HubHero.stories.tsx @@ -62,7 +62,7 @@ export const HubHero: StoryObj = { diff --git a/src/lib/types.ts b/src/lib/types.ts index c81558b1e6c..64c4f9cb989 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -417,7 +417,7 @@ export type CommonHeroProps< /** * Preface text about the content in the given page */ - description: string + description: ReactNode } // Learning Tools From 24353d5b72b6909fb2fe984ed3bbad867418cf0d Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 3 Apr 2024 00:30:30 -0400 Subject: [PATCH 039/366] refactor(layouts/Upgrade): apply `ContentHero` --- src/layouts/Upgrade.tsx | 59 ++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/src/layouts/Upgrade.tsx b/src/layouts/Upgrade.tsx index 3f2e4055ca1..91b3346336c 100644 --- a/src/layouts/Upgrade.tsx +++ b/src/layouts/Upgrade.tsx @@ -21,6 +21,7 @@ import BeaconChainActions from "@/components/BeaconChainActions" import Breadcrumbs from "@/components/Breadcrumbs" import type { List as ButtonDropdownList } from "@/components/ButtonDropdown" import FeedbackCard from "@/components/FeedbackCard" +import { ContentHero } from "@/components/Hero" import { Image } from "@/components/Image" import LeftNavBar from "@/components/LeftNavBar" import { BaseLink } from "@/components/Link" @@ -121,7 +122,7 @@ const LastUpdated = (props: ChildOnlyProp) => ( pt={4} mb={0} borderTop="1px" - borderColor="border" + borderColor="body.dark" {...props} /> ) @@ -183,38 +184,30 @@ export const UpgradeLayout = ({ return ( - - - - {frontmatter.title} - - - {summaryPoints.map((point, idx) => ( - {point} - ))} - - - {lastUpdatedDate && ( - - {t("common:page-last-updated")}:{" "} - {getLocaleTimestamp(locale as Lang, lastUpdatedDate)} - - )} - - {frontmatter.image && ( - {frontmatter.alt} - )} - + + + + {summaryPoints.map((point, idx) => ( + {point} + ))} + + + {lastUpdatedDate && ( + + {t("common:page-last-updated")}:{" "} + {getLocaleTimestamp(locale as Lang, lastUpdatedDate)} + + )} + + } + heroImg={frontmatter.image} + blurDataURL={frontmatter.blurDataURL} + /> + From 06bbd4193a38b43605d4584cd343daf5d5e5fbdc Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 3 Apr 2024 00:40:32 -0400 Subject: [PATCH 040/366] fix(pages/community): type `heroContent` object with `HubHeroProps` --- src/pages/community.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pages/community.tsx b/src/pages/community.tsx index 6a35d7cf857..ece2f43e0ab 100644 --- a/src/pages/community.tsx +++ b/src/pages/community.tsx @@ -10,7 +10,7 @@ import { useTheme, } from "@chakra-ui/react" -import { BasePageProps, ChildOnlyProp, CommonHeroProps } from "@/lib/types" +import { BasePageProps, ChildOnlyProp } from "@/lib/types" import { ICard, IGetInvolvedCard } from "@/lib/interfaces" import ActionCard from "@/components/ActionCard" @@ -19,6 +19,7 @@ import Callout from "@/components/Callout" import Card from "@/components/Card" import FeedbackCard from "@/components/FeedbackCard" import { HubHero } from "@/components/Hero" +import type { HubHeroProps } from "@/components/Hero/HubHero" import { Image } from "@/components/Image" import MainArticle from "@/components/MainArticle" import OldHeading from "@/components/OldHeading" @@ -214,7 +215,7 @@ const CommunityPage = () => { }, ] - const heroContent: CommonHeroProps = { + const heroContent: HubHeroProps = { title: t("page-community-hero-title"), header: t("page-community-hero-header"), description: t("page-community-hero-subtitle"), From 678db13090e2759b943ffc344fabc55e94e0a457 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 3 Apr 2024 01:25:58 -0400 Subject: [PATCH 041/366] fix(pages): fix type errors --- src/pages/layer-2.tsx | 9 +++------ src/pages/learn.tsx | 10 +++------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/src/pages/layer-2.tsx b/src/pages/layer-2.tsx index 65d1e09a76f..092cc118920 100644 --- a/src/pages/layer-2.tsx +++ b/src/pages/layer-2.tsx @@ -15,17 +15,14 @@ import { UnorderedList, } from "@chakra-ui/react" -import type { - BasePageProps, - CommonHeroProps, - TranslationKey, -} from "@/lib/types" +import type { BasePageProps, TranslationKey } from "@/lib/types" import { ButtonLink } from "@/components/Buttons" import Card from "@/components/Card" import ExpandableCard from "@/components/ExpandableCard" import FeedbackCard from "@/components/FeedbackCard" import { HubHero } from "@/components/Hero" +import type { HubHeroProps } from "@/components/Hero/HubHero" import { Image } from "@/components/Image" import InfoBanner from "@/components/InfoBanner" import Layer2ProductCard from "@/components/Layer2ProductCard" @@ -128,7 +125,7 @@ const Layer2Page = () => { const { t } = useTranslation("page-layer-2") const layer2DataCombined = [...layer2Data.optimistic, ...layer2Data.zk] - const heroContent: CommonHeroProps = { + const heroContent: HubHeroProps = { title: t("layer-2-hero-title"), header: t("layer-2-hero-header"), description: t("layer-2-hero-subtitle"), diff --git a/src/pages/learn.tsx b/src/pages/learn.tsx index fea21c31888..452037ab8e4 100644 --- a/src/pages/learn.tsx +++ b/src/pages/learn.tsx @@ -12,12 +12,7 @@ import { useToken, } from "@chakra-ui/react" -import type { - BasePageProps, - ChildOnlyProp, - CommonHeroProps, - ToCItem, -} from "@/lib/types" +import type { BasePageProps, ChildOnlyProp, ToCItem } from "@/lib/types" import ButtonLink from "@/components/Buttons/ButtonLink" import OriginalCard, { @@ -26,6 +21,7 @@ import OriginalCard, { import DocLink from "@/components/DocLink" import FeedbackCard from "@/components/FeedbackCard" import { HubHero } from "@/components/Hero" +import type { HubHeroProps } from "@/components/Hero/HubHero" import { Image, type ImageProps } from "@/components/Image" import LeftNavBar from "@/components/LeftNavBar" import InlineLink from "@/components/Link" @@ -184,7 +180,7 @@ const LearnPage = () => { url: "#" + id, })) - const heroContent: CommonHeroProps = { + const heroContent: HubHeroProps = { title: t("common:learn-hub"), header: t("hero-header"), description: t("hero-subtitle"), From 255bbc463083d3c248da0479bcbf5513e837214c Mon Sep 17 00:00:00 2001 From: Hitishaa <89304585+Hitisha-G@users.noreply.github.com> Date: Thu, 4 Apr 2024 19:28:26 +0530 Subject: [PATCH 042/366] Update index.md --- .../content/developers/docs/smart-contracts/languages/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/public/content/developers/docs/smart-contracts/languages/index.md b/public/content/developers/docs/smart-contracts/languages/index.md index 99ba42020e8..d5eb953a5aa 100644 --- a/public/content/developers/docs/smart-contracts/languages/index.md +++ b/public/content/developers/docs/smart-contracts/languages/index.md @@ -33,6 +33,7 @@ Previous knowledge of programming languages, especially of JavaScript or Python, - [Documentation](https://docs.soliditylang.org/en/latest/) - [Solidity Language Portal](https://soliditylang.org/) +- [Remix-IDE for Solidity](https://remix.ethereum.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) bridged to [Solidity Matrix Chatroom](https://matrix.to/#/#ethereum_solidity:gitter.im) From 39b6fbb2ba37e412c010407139f9f812f9ff6dc2 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Thu, 4 Apr 2024 19:33:23 -0400 Subject: [PATCH 043/366] feat(storybook): build project-level modes for viewports --- .storybook/preview.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 1dbef52ee1a..de4df61b769 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -7,7 +7,7 @@ import i18n, { baseLocales } from "./i18next" const extendedTheme = extendBaseTheme(theme) -const chakraBreakpointArray = Object.entries(extendedTheme.breakpoints) +export const chakraBreakpointArray = Object.entries(extendedTheme.breakpoints) const preview: Preview = { globals: { @@ -23,6 +23,22 @@ const preview: Preview = { date: /Date$/i, }, }, + chromatic: { + modes: { + ...chakraBreakpointArray.reduce<{ [x: string]: { viewport: string } }>( + (arr, curr) => { + const [token] = curr + return { + ...arr, + [token]: { + viewport: token, + }, + } + }, + {} + ), + }, + }, backgrounds: { disable: true, }, From 06e1b3a87190d75131f0ee7db348a1b0132e9625 Mon Sep 17 00:00:00 2001 From: Dennis Zhang <58843979+Dennayz@users.noreply.github.com> Date: Wed, 10 Apr 2024 12:57:58 -0700 Subject: [PATCH 044/366] Update index.md --- .../content/developers/docs/apis/backend/index.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/public/content/developers/docs/apis/backend/index.md b/public/content/developers/docs/apis/backend/index.md index 5fdb1ee0395..46d4b00e9b7 100644 --- a/public/content/developers/docs/apis/backend/index.md +++ b/public/content/developers/docs/apis/backend/index.md @@ -169,19 +169,18 @@ These libraries abstract away much of the complexity of interacting directly wit - [Documentation](https://services.tokenview.io/docs?type=api) - [GitHub](https://github.com/Tokenview) -**Covalent -** **_Enriched blockchain APIs for 200+ Chains._** - -- [covalenthq.com](https://www.covalenthq.com/) -- [Documentation](https://www.covalenthq.com/docs/api/) -- [GitHub](https://github.com/covalenthq) -- [Discord](https://www.covalenthq.com/discord/) - **Watchdata -** **_Provide simple and reliable API access to Ethereum blockchain._** - [Watchdata](https://watchdata.io/) - [Documentation](https://docs.watchdata.io/) - [Discord](https://discord.com/invite/TZRJbZ6bdn) +**Covalent -** **_Enriched blockchain APIs for 200+ Chains._** + +- [covalenthq.com](https://www.covalenthq.com/) +- [Documentation](https://www.covalenthq.com/docs/api/) +- [GitHub](https://github.com/covalenthq) +- [Discord](https://www.covalenthq.com/discord/) ## Further reading {#further-reading} From cae942540d7b274dd8bbd7d1fcc99a616485262f Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Fri, 12 Apr 2024 12:27:12 -0400 Subject: [PATCH 045/366] chore(QuizWidget.stories): remove `quizKey` arg from story control panel --- src/components/Quiz/QuizWidget/QuizWidget.stories.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx b/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx index af4a83748fb..77e0942cf7a 100644 --- a/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx +++ b/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx @@ -24,6 +24,13 @@ type QuizWidgetType = typeof StandaloneQuizWidget const meta = { title: "QuizWidget", component: StandaloneQuizWidget, + argTypes: { + quizKey: { + table: { + disable: true, + }, + }, + }, } satisfies Meta export default meta From f734b8ae50ddfd8c40d170e5469dffb01d738647 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Fri, 12 Apr 2024 12:27:45 -0400 Subject: [PATCH 046/366] feat(QuizWidget.stories): add `All Incorrect` interaction test --- .../Quiz/QuizWidget/QuizWidget.stories.tsx | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx b/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx index 77e0942cf7a..f1d920f7c66 100644 --- a/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx +++ b/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx @@ -90,3 +90,51 @@ export const QuizWidgetAllCorrect: StoryObj = { }) }, } + +export const QuizWidgetAllIncorrect: StoryObj = { + args: { + quizKey: "layer-2", + }, + render: (args) => , + + play: async ({ canvasElement, step }) => { + const canvas = within(canvasElement) + + const quizWidget = canvas.getByTestId("quiz-widget") + await expect(quizWidget).toBeInTheDocument() + + await waitFor(() => + expect(canvas.getByTestId("check-answer-button")).toBeDisabled() + ) + + await step("Answer some questions incorrectly", async () => { + for (let i = 0; i < layer2QuestionBank.length; i++) { + const questionGroupId = canvas.getByTestId("question-group").id + const questionAnswers = canvas.getAllByTestId("quiz-question-answer") + const currentQuestionBank = layer2QuestionBank.find( + ({ id }) => id === questionGroupId + )! + await userEvent.click( + questionAnswers.find( + (answer) => answer.id !== currentQuestionBank.correctAnswer + )! + ) + + await userEvent.click(canvas.getByTestId("check-answer-button")) + await expect( + canvas.getByTestId("answer-status-incorrect") + ).toBeInTheDocument() + + if (i === layer2QuestionBank.length - 1) { + await userEvent.click(canvas.getByTestId("see-results-button")) + } else { + await userEvent.click(canvas.getByTestId("next-question-button")) + } + } + }) + + await step("Check for failed results page", async () => { + await expect(canvasElement).toHaveTextContent("Your results") + }) + }, +} From 82e6a9bc78cd02f24065fbcb62eb6dc22b171148 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Mon, 15 Apr 2024 11:13:02 -0400 Subject: [PATCH 047/366] revert(.storybook/preview): remove global setting for Chromatic modes --- .storybook/preview.ts | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index de4df61b769..7b8c3e4dc62 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -23,22 +23,6 @@ const preview: Preview = { date: /Date$/i, }, }, - chromatic: { - modes: { - ...chakraBreakpointArray.reduce<{ [x: string]: { viewport: string } }>( - (arr, curr) => { - const [token] = curr - return { - ...arr, - [token]: { - viewport: token, - }, - } - }, - {} - ), - }, - }, backgrounds: { disable: true, }, From 126261764e19b83bd855d726f3189b81d8973f6c Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Mon, 15 Apr 2024 11:13:26 -0400 Subject: [PATCH 048/366] feat: apply Chromatic viewport modes to HubHero story --- .storybook/modes.ts | 20 +++++++++++++++++++ .../Hero/HubHero/HubHero.stories.tsx | 7 +++++++ 2 files changed, 27 insertions(+) create mode 100644 .storybook/modes.ts diff --git a/.storybook/modes.ts b/.storybook/modes.ts new file mode 100644 index 00000000000..97dae56b060 --- /dev/null +++ b/.storybook/modes.ts @@ -0,0 +1,20 @@ +export const allModes = { + base: { + viewport: "base", + }, + sm: { + viewport: "sm", + }, + md: { + viewport: "md", + }, + lg: { + viewport: "lg", + }, + xl: { + viewport: "xl", + }, + "2xl": { + viewport: "2xl", + }, +} diff --git a/src/components/Hero/HubHero/HubHero.stories.tsx b/src/components/Hero/HubHero/HubHero.stories.tsx index beb181c6a95..4b7d53ff1f8 100644 --- a/src/components/Hero/HubHero/HubHero.stories.tsx +++ b/src/components/Hero/HubHero/HubHero.stories.tsx @@ -3,6 +3,8 @@ import { useTranslation } from "next-i18next" import { Box } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" +import { allModes } from "../../../../.storybook/modes" + import HubHeroComponent from "./" type HubHeroType = typeof HubHeroComponent @@ -12,6 +14,11 @@ const meta = { component: HubHeroComponent, parameters: { layout: "none", + chromatic: { + modes: { + ...allModes, + }, + }, }, decorators: [ (Story) => ( From e5084c8f0fffc19d82511c8410aa47a645d6bda3 Mon Sep 17 00:00:00 2001 From: Dennis Zhang <58843979+Dennayz@users.noreply.github.com> Date: Tue, 16 Apr 2024 13:04:03 -0700 Subject: [PATCH 049/366] Update index.md --- public/content/developers/docs/apis/backend/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/public/content/developers/docs/apis/backend/index.md b/public/content/developers/docs/apis/backend/index.md index 46d4b00e9b7..670237d0f46 100644 --- a/public/content/developers/docs/apis/backend/index.md +++ b/public/content/developers/docs/apis/backend/index.md @@ -182,6 +182,7 @@ These libraries abstract away much of the complexity of interacting directly wit - [GitHub](https://github.com/covalenthq) - [Discord](https://www.covalenthq.com/discord/) + ## Further reading {#further-reading} _Know of a community resource that helped you? Edit this page and add it!_ From ddbaf97d244c17b83df1ba390660c9cffb63f7a2 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 17 Apr 2024 16:40:46 -0400 Subject: [PATCH 050/366] refactor(.storybook/preview): convert viewport widths to pixels --- .storybook/preview.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 7b8c3e4dc62..0b74f394fd4 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -7,7 +7,9 @@ import i18n, { baseLocales } from "./i18next" const extendedTheme = extendBaseTheme(theme) -export const chakraBreakpointArray = Object.entries(extendedTheme.breakpoints) +export const chakraBreakpointArray = Object.entries( + extendedTheme.breakpoints +) as [string, string][] const preview: Preview = { globals: { @@ -35,6 +37,9 @@ const preview: Preview = { viewports: chakraBreakpointArray.reduce((prevVal, currVal) => { const [token, key] = currVal + // `key` value is in em. Need to convert to px for Chromatic Story mode snapshots + const emToPx = (Number(key.replace("em", "")) * 16).toString() + "px" + // Replace base value if (token === "base") return { @@ -53,7 +58,7 @@ const preview: Preview = { [token]: { name: token, styles: { - width: key, + width: emToPx, height: "600px", }, }, From 3f869a307270dc61a554ad095b79e52ac1a42ab9 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 17 Apr 2024 17:22:56 -0400 Subject: [PATCH 051/366] feat(Hero): apply chromatic viewport modes to all Hero stories --- .../Hero/ContentHero/ContentHero.stories.tsx | 10 ++++++++-- src/components/Hero/HomeHero/HomeHero.stories.tsx | 10 ++++++++-- src/components/Hero/MdxHero/MdxHero.stories.tsx | 7 +++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/components/Hero/ContentHero/ContentHero.stories.tsx b/src/components/Hero/ContentHero/ContentHero.stories.tsx index e3d768f341c..c2165067609 100644 --- a/src/components/Hero/ContentHero/ContentHero.stories.tsx +++ b/src/components/Hero/ContentHero/ContentHero.stories.tsx @@ -1,17 +1,23 @@ import { useTranslation } from "next-i18next" import { Meta, StoryObj } from "@storybook/react" +import { allModes } from "../../../../.storybook/modes" +import contentHeroImg from "../../../../public/mainnet.png" + import ContentHeroComponent, { ContentHeroProps } from "." type ContentHeroType = typeof ContentHeroComponent -import contentHeroImg from "../../../../public/mainnet.png" - const meta = { title: "Organisms / Layouts / Hero", component: ContentHeroComponent, parameters: { layout: "none", + chromatic: { + modes: { + ...allModes, + }, + }, }, argTypes: { heroImg: { diff --git a/src/components/Hero/HomeHero/HomeHero.stories.tsx b/src/components/Hero/HomeHero/HomeHero.stories.tsx index 2d22cfbd97f..d7179f9a1a6 100644 --- a/src/components/Hero/HomeHero/HomeHero.stories.tsx +++ b/src/components/Hero/HomeHero/HomeHero.stories.tsx @@ -1,6 +1,9 @@ import * as React from "react" import { Meta, StoryObj } from "@storybook/react" +import { allModes } from "../../../../.storybook/modes" +import homeHeroImg from "../../../../public/home/hero.png" + import HomeHeroComponent from "." type HomeHeroType = typeof HomeHeroComponent @@ -10,6 +13,11 @@ const meta = { component: HomeHeroComponent, parameters: { layout: "none", + chromatic: { + modes: { + ...allModes, + }, + }, }, argTypes: { heroImg: { @@ -22,8 +30,6 @@ const meta = { export default meta -import homeHeroImg from "../../../../public/home/hero.png" - export const HomeHero: StoryObj = { args: { heroImg: homeHeroImg, diff --git a/src/components/Hero/MdxHero/MdxHero.stories.tsx b/src/components/Hero/MdxHero/MdxHero.stories.tsx index b54689da8bc..267cb09322d 100644 --- a/src/components/Hero/MdxHero/MdxHero.stories.tsx +++ b/src/components/Hero/MdxHero/MdxHero.stories.tsx @@ -1,6 +1,8 @@ import { HStack } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" +import { allModes } from "../../../../.storybook/modes" + import MdxHeroComponent from "./" type MdxHeroType = typeof MdxHeroComponent @@ -9,6 +11,11 @@ const meta = { title: "Organisms / Layouts / Hero", parameters: { layout: "none", + chromatic: { + modes: { + ...allModes, + }, + }, }, decorators: [ (Story) => ( From 64476c2209f551414e33f69ae1dbc9b15f6c96b2 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Thu, 18 Apr 2024 13:55:32 -0400 Subject: [PATCH 052/366] refactor(.storybook/modes): export `viewportModes` object --- .storybook/modes.ts | 6 +++++- src/components/Hero/ContentHero/ContentHero.stories.tsx | 4 ++-- src/components/Hero/HomeHero/HomeHero.stories.tsx | 4 ++-- src/components/Hero/HubHero/HubHero.stories.tsx | 4 ++-- src/components/Hero/MdxHero/MdxHero.stories.tsx | 4 ++-- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.storybook/modes.ts b/.storybook/modes.ts index 97dae56b060..c2fcf30fc1c 100644 --- a/.storybook/modes.ts +++ b/.storybook/modes.ts @@ -1,4 +1,4 @@ -export const allModes = { +export const viewportModes = { base: { viewport: "base", }, @@ -18,3 +18,7 @@ export const allModes = { viewport: "2xl", }, } + +export const allModes = { + ...viewportModes, +} diff --git a/src/components/Hero/ContentHero/ContentHero.stories.tsx b/src/components/Hero/ContentHero/ContentHero.stories.tsx index c2165067609..4d512ba9797 100644 --- a/src/components/Hero/ContentHero/ContentHero.stories.tsx +++ b/src/components/Hero/ContentHero/ContentHero.stories.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "next-i18next" import { Meta, StoryObj } from "@storybook/react" -import { allModes } from "../../../../.storybook/modes" +import { viewportModes } from "../../../../.storybook/modes" import contentHeroImg from "../../../../public/mainnet.png" import ContentHeroComponent, { ContentHeroProps } from "." @@ -15,7 +15,7 @@ const meta = { layout: "none", chromatic: { modes: { - ...allModes, + ...viewportModes, }, }, }, diff --git a/src/components/Hero/HomeHero/HomeHero.stories.tsx b/src/components/Hero/HomeHero/HomeHero.stories.tsx index d7179f9a1a6..ea9f462ab29 100644 --- a/src/components/Hero/HomeHero/HomeHero.stories.tsx +++ b/src/components/Hero/HomeHero/HomeHero.stories.tsx @@ -1,7 +1,7 @@ import * as React from "react" import { Meta, StoryObj } from "@storybook/react" -import { allModes } from "../../../../.storybook/modes" +import { viewportModes } from "../../../../.storybook/modes" import homeHeroImg from "../../../../public/home/hero.png" import HomeHeroComponent from "." @@ -15,7 +15,7 @@ const meta = { layout: "none", chromatic: { modes: { - ...allModes, + ...viewportModes, }, }, }, diff --git a/src/components/Hero/HubHero/HubHero.stories.tsx b/src/components/Hero/HubHero/HubHero.stories.tsx index 4b7d53ff1f8..82f3b14a9a7 100644 --- a/src/components/Hero/HubHero/HubHero.stories.tsx +++ b/src/components/Hero/HubHero/HubHero.stories.tsx @@ -3,7 +3,7 @@ import { useTranslation } from "next-i18next" import { Box } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" -import { allModes } from "../../../../.storybook/modes" +import { viewportModes } from "../../../../.storybook/modes" import HubHeroComponent from "./" @@ -16,7 +16,7 @@ const meta = { layout: "none", chromatic: { modes: { - ...allModes, + ...viewportModes, }, }, }, diff --git a/src/components/Hero/MdxHero/MdxHero.stories.tsx b/src/components/Hero/MdxHero/MdxHero.stories.tsx index 267cb09322d..5a6e13a9d16 100644 --- a/src/components/Hero/MdxHero/MdxHero.stories.tsx +++ b/src/components/Hero/MdxHero/MdxHero.stories.tsx @@ -1,7 +1,7 @@ import { HStack } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" -import { allModes } from "../../../../.storybook/modes" +import { viewportModes } from "../../../../.storybook/modes" import MdxHeroComponent from "./" @@ -13,7 +13,7 @@ const meta = { layout: "none", chromatic: { modes: { - ...allModes, + ...viewportModes, }, }, }, From 70cc2dffc63c6115451cf59059257d9f1274dadf Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Thu, 18 Apr 2024 23:44:57 -0400 Subject: [PATCH 053/366] refactor(.storybook/modes): add langs --- .storybook/modes.ts | 41 ++++++++++++++++++- .../Hero/ContentHero/ContentHero.stories.tsx | 4 +- .../Hero/HomeHero/HomeHero.stories.tsx | 4 +- .../Hero/HubHero/HubHero.stories.tsx | 4 +- .../Hero/MdxHero/MdxHero.stories.tsx | 4 +- 5 files changed, 48 insertions(+), 9 deletions(-) diff --git a/.storybook/modes.ts b/.storybook/modes.ts index c2fcf30fc1c..adbe153628e 100644 --- a/.storybook/modes.ts +++ b/.storybook/modes.ts @@ -19,6 +19,45 @@ export const viewportModes = { }, } +export const langModes = { + en: { + locale: "en", + }, + zh: { + locale: "zh", + }, + ru: { + locale: "ru", + }, + uk: { + locale: "uk", + }, +} + +type LangViewModeObj = { + [key: string]: { viewport: string; locale: string } +} + +export const langViewportModes = Object.entries( + viewportModes +).reduce((arr, curr) => { + const [viewKey, viewVal] = curr + + const currLangViewObj = {} as LangViewModeObj + + Object.entries(langModes).forEach(([langKey, langVal]) => { + currLangViewObj[`${langKey}-${viewKey}`] = { + viewport: viewVal.viewport, + locale: langVal.locale, + } + }) + + return { + ...arr, + ...currLangViewObj, + } +}, {}) + export const allModes = { - ...viewportModes, + ...langViewportModes, } diff --git a/src/components/Hero/ContentHero/ContentHero.stories.tsx b/src/components/Hero/ContentHero/ContentHero.stories.tsx index 4d512ba9797..eae1dc0a6a6 100644 --- a/src/components/Hero/ContentHero/ContentHero.stories.tsx +++ b/src/components/Hero/ContentHero/ContentHero.stories.tsx @@ -1,7 +1,7 @@ import { useTranslation } from "next-i18next" import { Meta, StoryObj } from "@storybook/react" -import { viewportModes } from "../../../../.storybook/modes" +import { langViewportModes } from "../../../../.storybook/modes" import contentHeroImg from "../../../../public/mainnet.png" import ContentHeroComponent, { ContentHeroProps } from "." @@ -15,7 +15,7 @@ const meta = { layout: "none", chromatic: { modes: { - ...viewportModes, + ...langViewportModes, }, }, }, diff --git a/src/components/Hero/HomeHero/HomeHero.stories.tsx b/src/components/Hero/HomeHero/HomeHero.stories.tsx index ea9f462ab29..9f0d6484729 100644 --- a/src/components/Hero/HomeHero/HomeHero.stories.tsx +++ b/src/components/Hero/HomeHero/HomeHero.stories.tsx @@ -1,7 +1,7 @@ import * as React from "react" import { Meta, StoryObj } from "@storybook/react" -import { viewportModes } from "../../../../.storybook/modes" +import { langViewportModes } from "../../../../.storybook/modes" import homeHeroImg from "../../../../public/home/hero.png" import HomeHeroComponent from "." @@ -15,7 +15,7 @@ const meta = { layout: "none", chromatic: { modes: { - ...viewportModes, + ...langViewportModes, }, }, }, diff --git a/src/components/Hero/HubHero/HubHero.stories.tsx b/src/components/Hero/HubHero/HubHero.stories.tsx index 82f3b14a9a7..b2749e83d27 100644 --- a/src/components/Hero/HubHero/HubHero.stories.tsx +++ b/src/components/Hero/HubHero/HubHero.stories.tsx @@ -3,7 +3,7 @@ import { useTranslation } from "next-i18next" import { Box } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" -import { viewportModes } from "../../../../.storybook/modes" +import { langViewportModes } from "../../../../.storybook/modes" import HubHeroComponent from "./" @@ -16,7 +16,7 @@ const meta = { layout: "none", chromatic: { modes: { - ...viewportModes, + ...langViewportModes, }, }, }, diff --git a/src/components/Hero/MdxHero/MdxHero.stories.tsx b/src/components/Hero/MdxHero/MdxHero.stories.tsx index 5a6e13a9d16..28e1f5d142e 100644 --- a/src/components/Hero/MdxHero/MdxHero.stories.tsx +++ b/src/components/Hero/MdxHero/MdxHero.stories.tsx @@ -1,7 +1,7 @@ import { HStack } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" -import { viewportModes } from "../../../../.storybook/modes" +import { langViewportModes } from "../../../../.storybook/modes" import MdxHeroComponent from "./" @@ -13,7 +13,7 @@ const meta = { layout: "none", chromatic: { modes: { - ...viewportModes, + ...langViewportModes, }, }, }, From b207969e0334cfabeff9e4e5121abe5e93b546ea Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Fri, 19 Apr 2024 14:55:47 -0400 Subject: [PATCH 054/366] feat(tooltip): add play function to open popover story --- src/components/Tooltip/Tooltip.stories.tsx | 48 ++++++++++++++++------ src/components/Tooltip/index.tsx | 2 +- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/components/Tooltip/Tooltip.stories.tsx b/src/components/Tooltip/Tooltip.stories.tsx index e0b95a5c677..14c69fb051f 100644 --- a/src/components/Tooltip/Tooltip.stories.tsx +++ b/src/components/Tooltip/Tooltip.stories.tsx @@ -1,7 +1,8 @@ import * as React from "react" import { RiInformationLine } from "react-icons/ri" -import { Box, HStack } from "@chakra-ui/react" +import { Box } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" +import { expect, fireEvent, waitFor, within } from "@storybook/test" import InlineLink from "../Link" import Translation from "../Translation" @@ -24,28 +25,49 @@ const meta = { args: { content: , children: ( - + ), }, + argTypes: { + children: { + table: { + disable: true, + }, + }, + content: { + table: { + disable: true, + }, + }, + onBeforeOpen: { + table: { + disable: true, + }, + }, + }, } satisfies Meta export default meta type Story = StoryObj -export const Tooltip: Story = { - render: (args) => ( - - - - ), -} +export const Basic: Story = {} -// for chromatic visual testing -export const AlwaysOpen: Story = { - args: { - isOpen: true, +// for chromatic story snapshot showing the rendered popover +export const OnOpen: Story = { + play: async ({ canvasElement }) => { + // Add delay for snapshot capture of the popover + const canvas = within(canvasElement) + const canvasParent = within(canvasElement.parentElement!) + + const tooltipIcon = canvas.getByTestId("tooltip-icon") + + fireEvent.mouseOver(tooltipIcon) + + await waitFor(async () => { + await expect(canvasParent.getByTestId("tooltip-popover")).toBeVisible() + }) }, } diff --git a/src/components/Tooltip/index.tsx b/src/components/Tooltip/index.tsx index f1b3369af73..0cb5da146fc 100644 --- a/src/components/Tooltip/index.tsx +++ b/src/components/Tooltip/index.tsx @@ -69,7 +69,7 @@ const Tooltip: React.FC = ({ > {children} - + {content} From c034bac55fe8a1271db57129fbd3530949ecc474 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:40:46 -0700 Subject: [PATCH 055/366] feat: render daos quiz to /dao page --- public/content/dao/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/content/dao/index.md b/public/content/dao/index.md index b2f2aa98e87..f2d937eb166 100644 --- a/public/content/dao/index.md +++ b/public/content/dao/index.md @@ -160,3 +160,7 @@ _Typically used for decentralized development and governance of protocols and [d - [What is a DAO in crypto?](https://youtu.be/KHm0uUPqmVE) - [Can a DAO Build a City?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/) + + + + From db9fd7f84d67fbfa7f9877164dae98033a2ca377 Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 22 Apr 2024 19:41:47 +0200 Subject: [PATCH 056/366] adjust modal component and theme --- src/@chakra-ui/components/Modal.ts | 20 +++++----- src/components/Modal/index.tsx | 38 ++++++------------- .../Quiz/QuizWidget/QuizRadioGroup.tsx | 2 +- src/components/Quiz/QuizWidget/index.tsx | 2 +- src/components/Quiz/QuizzesModal.tsx | 5 ++- 5 files changed, 25 insertions(+), 42 deletions(-) diff --git a/src/@chakra-ui/components/Modal.ts b/src/@chakra-ui/components/Modal.ts index 44880c9c11a..16e5533dc78 100644 --- a/src/@chakra-ui/components/Modal.ts +++ b/src/@chakra-ui/components/Modal.ts @@ -15,21 +15,19 @@ const { export const Modal = defineMultiStyleConfig({ baseStyle: definePartsStyle((props) => defineMergeStyles(defaultBaseStyle?.(props), { - overlay: { - bg: "gray.500", - }, dialog: { bg: "background.base", gap: "4", padding: "8", - maxW: "464px", - borderRadius: "md", + borderRadius: "base", boxShadow: "none", }, header: { - padding: 0, + padding: "0", fontWeight: "bold", fontSize: "2xl", + minHeight: "6", + me: "8", }, closeButton: { boxSize: "8", @@ -38,15 +36,15 @@ export const Modal = defineMultiStyleConfig({ insetInlineEnd: "8", }, body: { - padding: 0, + padding: "0", fontWeight: "normal", fontSize: "md", }, footer: { - gap: "8px", - px: 0, - pt: 8, - pb: 0, + gap: "2", + px: "0", + pt: "8", + pb: "0", }, }) ), diff --git a/src/components/Modal/index.tsx b/src/components/Modal/index.tsx index 1b20b14f720..dff64e7fb25 100644 --- a/src/components/Modal/index.tsx +++ b/src/components/Modal/index.tsx @@ -5,48 +5,32 @@ import { ModalBody, ModalCloseButton, ModalContent, - type ModalContentProps, + ModalContentProps, ModalFooter, ModalHeader, ModalOverlay, type ModalProps as ChakraModalProps, } from "@chakra-ui/react" -export type ModalProps = ModalContentProps & - Pick & { - children?: React.ReactNode - title?: string - actionButtonLabel?: string - isOpen: boolean - setIsOpen: (isOpen: boolean) => void - } +export type ModalProps = ChakraModalProps & { + children?: React.ReactNode + title?: string + actionButtonLabel?: string + contentProps?: ModalContentProps +} const Modal = ({ children, title, actionButtonLabel, - isOpen, - setIsOpen, + contentProps, ...restProps }: ModalProps) => { return ( - setIsOpen(false)} - isCentered - /* size={size ?? "xl"} */ - scrollBehavior="inside" - > - + + - + {title} {children} diff --git a/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx b/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx index 8bdb1bf6527..b230c45fa82 100644 --- a/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx +++ b/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx @@ -124,7 +124,7 @@ const CustomRadio = ({ }) const buttonBg = useMemo(() => { - if (!state.isChecked) return "body.inverted" + if (!state.isChecked) return "background.highlight" if (!isAnswerVisible) return "primary.base" if (!isSelectedCorrect) return "error.base" return "success.base" diff --git a/src/components/Quiz/QuizWidget/index.tsx b/src/components/Quiz/QuizWidget/index.tsx index f3a55b6b3cf..93336a4657f 100644 --- a/src/components/Quiz/QuizWidget/index.tsx +++ b/src/components/Quiz/QuizWidget/index.tsx @@ -103,7 +103,7 @@ const QuizWidget = ({ const getMainContainerBg = (): StackProps["bg"] => { if (!answerStatus) { - return "neutral" + return "background.base" } if (answerStatus === "correct") { diff --git a/src/components/Quiz/QuizzesModal.tsx b/src/components/Quiz/QuizzesModal.tsx index be55245d895..bfdd893f3ad 100644 --- a/src/components/Quiz/QuizzesModal.tsx +++ b/src/components/Quiz/QuizzesModal.tsx @@ -20,7 +20,7 @@ const QuizzesModal = ({ }: QuizzesModalProps) => { const getStatusColor = (): ModalContentProps["bg"] => { if (quizStatus === "neutral") { - return "neutral" + return "background.base" } if (quizStatus === "success") { return "success.neutral" @@ -31,8 +31,9 @@ const QuizzesModal = ({ return (
    From 51c2e6d5b4f77157310645b6294600125b10fb95 Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 22 Apr 2024 20:03:35 +0200 Subject: [PATCH 057/366] set custom modal styles in full size used in mobile --- src/@chakra-ui/components/Modal.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/@chakra-ui/components/Modal.ts b/src/@chakra-ui/components/Modal.ts index 16e5533dc78..27e7079a772 100644 --- a/src/@chakra-ui/components/Modal.ts +++ b/src/@chakra-ui/components/Modal.ts @@ -48,7 +48,23 @@ export const Modal = defineMultiStyleConfig({ }, }) ), - sizes: defaultSizes, + sizes: { + ...defaultSizes, + full: { + dialog: { + h: "full", + minH: "unset", + maxH: { + base: "calc(100vh - 1rem)", + md: "min(calc(100vh - 2rem), 792px)", + }, + maxW: { + base: "calc(100vw - 1rem)", + md: "min(calc(100vw - 2rem), 1000px)", + }, + }, + }, + }, defaultProps: { ...defaultProps, From 05ce8a7cf7d363ae584258026074724d871b2eea Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 22 Apr 2024 20:03:53 +0200 Subject: [PATCH 058/366] use base modal on the simulator modal --- src/components/Simulator/SimulatorModal.tsx | 38 ++++----------------- src/pages/developers/tutorials.tsx | 7 +++- 2 files changed, 12 insertions(+), 33 deletions(-) diff --git a/src/components/Simulator/SimulatorModal.tsx b/src/components/Simulator/SimulatorModal.tsx index 0d5cac1bff9..db61619c426 100644 --- a/src/components/Simulator/SimulatorModal.tsx +++ b/src/components/Simulator/SimulatorModal.tsx @@ -1,14 +1,12 @@ import React from "react" import { - Modal as ChakraModal, - ModalCloseButton, - ModalContent, type ModalContentProps, - ModalOverlay, type ModalProps, UseDisclosureReturn, } from "@chakra-ui/react" +import Modal from "../Modal" + type SimulatorModalProps = ModalContentProps & Pick & { isOpen: UseDisclosureReturn["isOpen"] @@ -24,39 +22,15 @@ export const SimulatorModal = ({ ...restProps }: SimulatorModalProps) => { return ( - - - - - - {children} - - + {children} + ) } diff --git a/src/pages/developers/tutorials.tsx b/src/pages/developers/tutorials.tsx index 7941a9703a2..f23023d8ccd 100644 --- a/src/pages/developers/tutorials.tsx +++ b/src/pages/developers/tutorials.tsx @@ -242,7 +242,12 @@ const TutorialPage = ({ - + setModalOpen(false)} + size="xl" + contentProps={{ dir }} + > From 22c7d02af6d5be5408dfdcfe002b01cf6fa32acc Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 22 Apr 2024 22:05:26 +0200 Subject: [PATCH 059/366] reuse base modal on the tutorials & docs pages --- src/components/FileContributors.tsx | 39 +++++++++++------------------ src/components/Modal/index.tsx | 2 +- src/pages/developers/tutorials.tsx | 14 ++++------- 3 files changed, 21 insertions(+), 34 deletions(-) diff --git a/src/components/FileContributors.tsx b/src/components/FileContributors.tsx index 9b842dec3bd..f6bf9ebf27a 100644 --- a/src/components/FileContributors.tsx +++ b/src/components/FileContributors.tsx @@ -4,10 +4,7 @@ import { Avatar, Flex, FlexProps, - Heading, ListItem, - ModalBody, - ModalHeader, Skeleton as ChakraSkeleton, SkeletonCircle as ChakraSkeletonCircle, UnorderedList, @@ -43,7 +40,7 @@ const SkeletonCircle = (props) => ( const ContributorList = ({ children }: { children: React.ReactNode }) => { return ( - + {children} ) @@ -102,26 +99,20 @@ const FileContributors = ({ return ( <> - - - - - - - - - - {contributors ? ( - - {contributors.map((contributor) => ( - - ))} - - ) : null} - + setModalOpen(false)} + size={{ base: "full", md: "xl" }} + title={} + > + + {contributors ? ( + + {contributors.map((contributor) => ( + + ))} + + ) : null} setModalOpen(false)} - size="xl" + size={{ base: "full", md: "xl" }} contentProps={{ dir }} - > - + title={ - + } + > {" "} @@ -260,11 +260,7 @@ const TutorialPage = ({ - + Date: Mon, 22 Apr 2024 22:38:50 +0200 Subject: [PATCH 060/366] revert codemodal changes and implement custom variant in component definition --- src/@chakra-ui/components/Modal.ts | 6 +-- src/components/CodeModal.tsx | 73 ++++++++++++++++++++++++++++++ src/components/Modal/index.tsx | 7 ++- src/pages/index.tsx | 26 ++--------- 4 files changed, 83 insertions(+), 29 deletions(-) create mode 100644 src/components/CodeModal.tsx diff --git a/src/@chakra-ui/components/Modal.ts b/src/@chakra-ui/components/Modal.ts index 27e7079a772..df48b183513 100644 --- a/src/@chakra-ui/components/Modal.ts +++ b/src/@chakra-ui/components/Modal.ts @@ -23,17 +23,15 @@ export const Modal = defineMultiStyleConfig({ boxShadow: "none", }, header: { + flex: "1", padding: "0", fontWeight: "bold", fontSize: "2xl", - minHeight: "6", me: "8", }, closeButton: { - boxSize: "8", + position: "static", color: "body.base", - top: "8", - insetInlineEnd: "8", }, body: { padding: "0", diff --git a/src/components/CodeModal.tsx b/src/components/CodeModal.tsx new file mode 100644 index 00000000000..f6c62332bb4 --- /dev/null +++ b/src/components/CodeModal.tsx @@ -0,0 +1,73 @@ +import type { ReactNode } from "react" +import { + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalHeader, + ModalOverlay, + useColorModeValue, +} from "@chakra-ui/react" + +type CodeModalProps = { + title: string + children: ReactNode + isOpen: boolean + setIsOpen: (isOpen: boolean) => void +} + +const CodeModal = ({ children, isOpen, setIsOpen, title }: CodeModalProps) => { + const bgColor = useColorModeValue("rgb(247, 247, 247)", "rgb(25, 25, 25)") + const borderColor = useColorModeValue("rgb(51, 51, 51)", "rgb(242, 242, 242)") + + return ( + setIsOpen(false)} + > + + + + {title} + + + {children} + + + ) +} + +export default CodeModal diff --git a/src/components/Modal/index.tsx b/src/components/Modal/index.tsx index 246a4d71544..077b989338d 100644 --- a/src/components/Modal/index.tsx +++ b/src/components/Modal/index.tsx @@ -1,6 +1,7 @@ import React from "react" import { Button, + HStack, Modal as ChakraModal, ModalBody, ModalCloseButton, @@ -31,8 +32,10 @@ const Modal = ({ - {title} - + + {title} + + {children} {actionButtonLabel && ( diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 3d80dfcd84e..25d066fd946 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -25,6 +25,7 @@ import ActionCard from "@/components/ActionCard" import ButtonLink from "@/components/Buttons/ButtonLink" import CalloutBanner from "@/components/CalloutBanner" import Codeblock from "@/components/Codeblock" +import CodeModal from "@/components/CodeModal" import CommunityEvents from "@/components/CommunityEvents" import HomeHero from "@/components/Hero/HomeHero" import { Image } from "@/components/Image" @@ -121,8 +122,6 @@ const StyledActionCard = chakra(ActionCard, { }, }) -const StyledCodeModal = chakra(Modal) - const StyledTitleCardList = chakra(TitleCardList) const GrayContainer = (props: ChildOnlyProp) => ( @@ -535,29 +534,10 @@ const HomePage = ({ - {codeExamples[activeCode].code} - + {/* Eth Today Section */} From cd46b7f626b51a625eaa0be64c783e37beb8d18f Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Tue, 23 Apr 2024 14:10:12 -0400 Subject: [PATCH 061/366] fix(Tooltip.stories): fix open popover snapshot --- src/components/Tooltip/Tooltip.stories.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/Tooltip/Tooltip.stories.tsx b/src/components/Tooltip/Tooltip.stories.tsx index 14c69fb051f..afae9a77b26 100644 --- a/src/components/Tooltip/Tooltip.stories.tsx +++ b/src/components/Tooltip/Tooltip.stories.tsx @@ -2,7 +2,7 @@ import * as React from "react" import { RiInformationLine } from "react-icons/ri" import { Box } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" -import { expect, fireEvent, waitFor, within } from "@storybook/test" +import { expect, fireEvent, userEvent, waitFor, within } from "@storybook/test" import InlineLink from "../Link" import Translation from "../Translation" @@ -47,6 +47,13 @@ const meta = { }, }, }, + decorators: [ + (Story) => ( + + + + ), + ], } satisfies Meta export default meta @@ -64,9 +71,8 @@ export const OnOpen: Story = { const tooltipIcon = canvas.getByTestId("tooltip-icon") - fireEvent.mouseOver(tooltipIcon) - await waitFor(async () => { + await userEvent.hover(tooltipIcon) await expect(canvasParent.getByTestId("tooltip-popover")).toBeVisible() }) }, From f678758a81824934af096f02cef6788c383bf931 Mon Sep 17 00:00:00 2001 From: arnaud Date: Wed, 24 Apr 2024 10:10:07 +0200 Subject: [PATCH 062/366] update based on the comment from wackerow https://github.com/ethereum/ethereum-org-website/pull/11997\#pullrequestreview-2016088907 --- public/content/developers/docs/transactions/index.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/public/content/developers/docs/transactions/index.md b/public/content/developers/docs/transactions/index.md index 4f4870194bc..d8f4d8b0edb 100644 --- a/public/content/developers/docs/transactions/index.md +++ b/public/content/developers/docs/transactions/index.md @@ -160,15 +160,20 @@ The base fee will be burned **-0.00399 ETH** Validator keeps the tip **+0.000210 ETH** -In case of an interaction with a smart contract there is 2 cases possible: -1. A `view` or `pure` function (as described in [solidity documentation](https://docs.soliditylang.org/en/v0.8.23/contracts.html#view-functions)) is called from an EOA. In that specific case, no gas will be paid by the caller and the result will be returned. The underlying RPC call for this scenario is [eth_call](https://ethereum.org/en/developers/docs/apis/json-rpc#eth_call) -2. In any other cases gas will be paid by the caller. Which mean: calling a `view` or `pure` function internally (ie: not from an EAO) will cost gas. ![Diagram showing how unused gas is refunded](./gas-tx.png) _Diagram adapted from [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ Any gas not used in a transaction is refunded to the user account. +### Smart contract interactions {#smart-contract-interactions} + +Gas is required for any transaction that alters the state of a smart contract. + +Therefore, calling a [`view`](https://docs.soliditylang.org/en/latest/contracts.html#view-functions) or [`pure`](https://docs.soliditylang.org/en/latest/contracts.html#pure-functions) function from an EOA will not require any gas. The underlying RPC call for this scenario is [`eth_call`](/developers/docs/apis/json-rpc#eth_call) + +However calling a `view` or `pure` function internally (ie: from the contract itself or from another contract) will cost gas. + ## Transaction lifecycle {#transaction-lifecycle} Once the transaction has been submitted the following happens: From a86fbde50064a13264d4df921cfcea14b318388f Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 24 Apr 2024 11:14:37 -0400 Subject: [PATCH 063/366] fix(.storybook/preview): disable framer-motion during chromatic --- .storybook/preview.ts | 4 ++++ tsconfig.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 7e39ab1aae1..dc7300cd9c2 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -1,11 +1,15 @@ import { extendBaseTheme } from "@chakra-ui/react" import type { Preview } from "@storybook/react" +import isChromatic from "chromatic/isChromatic" import theme from "../src/@chakra-ui/theme" import i18n, { baseLocales } from "./i18next" import "../src/styles/global.css" +import { MotionGlobalConfig } from "framer-motion" + +MotionGlobalConfig.skipAnimations = isChromatic() const extendedTheme = extendBaseTheme(theme) diff --git a/tsconfig.json b/tsconfig.json index 29abc9fb3ec..06d6e879db3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,6 +20,6 @@ "@/public/*": ["./public/*"] } }, - "include": ["./src/**/*", "next-env.d.ts", "**/*.ts", "**/*.tsx"], + "include": ["./src/**/*", "next-env.d.ts", "**/*.ts", "**/*.tsx", ".storybook/**/*"], "exclude": ["node_modules", "./public", "./src/intl"] } From 8ef077b70b01b2289c1c297770c8456516cdecbe Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 24 Apr 2024 12:15:48 -0400 Subject: [PATCH 064/366] chore(layouts/Upgrade): remove unused components and imports --- src/layouts/Upgrade.tsx | 50 ----------------------------------------- 1 file changed, 50 deletions(-) diff --git a/src/layouts/Upgrade.tsx b/src/layouts/Upgrade.tsx index 38942e3404c..aad80758d85 100644 --- a/src/layouts/Upgrade.tsx +++ b/src/layouts/Upgrade.tsx @@ -17,11 +17,9 @@ import type { ChildOnlyProp, Lang } from "@/lib/types" import type { MdPageContent, UpgradeFrontmatter } from "@/lib/interfaces" import BeaconChainActions from "@/components/BeaconChainActions" -import Breadcrumbs from "@/components/Breadcrumbs" import type { List as ButtonDropdownList } from "@/components/ButtonDropdown" import FeedbackCard from "@/components/FeedbackCard" import { ContentHero } from "@/components/Hero" -import { Image } from "@/components/Image" import LeftNavBar from "@/components/LeftNavBar" import { BaseLink } from "@/components/Link" import { @@ -32,7 +30,6 @@ import { } from "@/components/MdComponents" import MergeArticleList from "@/components/MergeArticleList" import MergeInfographic from "@/components/MergeInfographic" -import OldHeading from "@/components/OldHeading" import UpgradeStatus from "@/components/UpgradeStatus" import { getSummaryPoints } from "@/lib/utils/getSummaryPoints" @@ -42,36 +39,12 @@ import { MAIN_CONTENT_ID } from "@/lib/constants" const Page = (props: FlexProps) => -const Title = (props: ChildOnlyProp) => ( - -) - type ContainerProps = Pick const Container = (props: ContainerProps) => ( ) -const HeroContainer = (props: ChildOnlyProp) => ( - -) - const MoreContent = (props: ChildOnlyProp & { to: string }) => ( ( /> ) -const TitleCard = (props: ChildOnlyProp) => { - const cardBoxShadow = useToken("colors", "cardBoxShadow") - - return ( - - ) -} - const LastUpdated = (props: ChildOnlyProp) => ( Date: Wed, 24 Apr 2024 12:16:33 -0400 Subject: [PATCH 065/366] refactor(layouts/Upgrade): remove the `MoreContent` link --- src/layouts/Upgrade.tsx | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/src/layouts/Upgrade.tsx b/src/layouts/Upgrade.tsx index aad80758d85..8bdd2f96280 100644 --- a/src/layouts/Upgrade.tsx +++ b/src/layouts/Upgrade.tsx @@ -1,12 +1,9 @@ import { useRouter } from "next/router" import { useTranslation } from "next-i18next" -import { MdExpandMore } from "react-icons/md" import { Box, type BoxProps, - Flex, type FlexProps, - Icon, List, ListItem, Text, @@ -21,7 +18,6 @@ import type { List as ButtonDropdownList } from "@/components/ButtonDropdown" import FeedbackCard from "@/components/FeedbackCard" import { ContentHero } from "@/components/Hero" import LeftNavBar from "@/components/LeftNavBar" -import { BaseLink } from "@/components/Link" import { ContentContainer, MobileButton, @@ -35,8 +31,6 @@ import UpgradeStatus from "@/components/UpgradeStatus" import { getSummaryPoints } from "@/lib/utils/getSummaryPoints" import { getLocaleTimestamp } from "@/lib/utils/time" -import { MAIN_CONTENT_ID } from "@/lib/constants" - const Page = (props: FlexProps) => type ContainerProps = Pick @@ -45,21 +39,6 @@ const Container = (props: ContainerProps) => ( ) -const MoreContent = (props: ChildOnlyProp & { to: string }) => ( - -) - const LastUpdated = (props: ChildOnlyProp) => ( - - - {/* TODO: Switch to `above="lg"` after completion of Chakra Migration */} Date: Sat, 27 Apr 2024 11:43:06 +0200 Subject: [PATCH 066/366] resolve comments --- src/intl/en/learn-quizzes.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/intl/en/learn-quizzes.json b/src/intl/en/learn-quizzes.json index bbf38453ab1..7977beb5efc 100644 --- a/src/intl/en/learn-quizzes.json +++ b/src/intl/en/learn-quizzes.json @@ -343,12 +343,12 @@ "i002-c-label": "Ventures and grants, pool capital and vote on projects to fund", "i002-c-explanation": "Venture or grants DAOs are one example, but DAOs are not limited to that.", "i002-d-label": "All of the above", - "i002-d-explanation": "A DAO can have a multitude of 'missions'. Check out the resources to find practical examples.", + "i002-d-explanation": "A DAO can have a multitude of 'missions'.", "i003-prompt": "Unlike traditional organizations, DAOs are…", "i003-a-label": "Usually hierarchical", "i003-a-explanation": "DAOs are usually flat, and fully democratized.", "i003-b-label": "Transparent and fully public about their activities", - "i003-b-explanation": "Thanks to on-chain voting, decisions are transparent on the blockchain. Discussions and other elements of the decision-making process are usually open as well.", + "i003-b-explanation": "Thanks to on-chain voting, decisions are transparent on the blockchain. Discussions and other elements of the decision-making process are open to all members.", "i003-c-label": "Controlled by a central party", "i003-c-explanation": "Changes require voting by the members. Services offered are handled automatically in a decentralized manner.", "i003-d-label": "Restricted regarding who can suggest changes", @@ -356,7 +356,7 @@ "i004-prompt": "What is essential about Smart Contracts for DAOs?", "i004-a-label": "The Smart Contract code can be modified", "i004-a-explanation": "Once the contract is live on Ethereum, no one can change the rules except by a vote. This allows the DAO to run by the rules it was programmed with.", - "i004-b-label": "One DAO member gets the right to spend money from the treasury", + "i004-b-label": "It has an individual owner who retains authority to make changes and send from the treasury.", "i004-b-explanation": "The treasury is defined by the smart contract. To spend money, the group's approval is needed.", "i004-c-label": "Trust in the underlying blockchain due to a distributed consensus", "i004-c-explanation": "It’s important for a DAO that the underlying blockchain cannot be manipulated. Ethereum’s own consensus is distributed and established enough for organizations to trust the network.", From 9e99954a70dc4d3e2f24c20b6d039840cf89f740 Mon Sep 17 00:00:00 2001 From: Marlene Marz <42071757+JanetMo@users.noreply.github.com> Date: Sat, 27 Apr 2024 11:44:46 +0200 Subject: [PATCH 067/366] Update src/intl/en/learn-quizzes.json Co-authored-by: Paul Wackerow <54227730+wackerow@users.noreply.github.com> --- src/intl/en/learn-quizzes.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intl/en/learn-quizzes.json b/src/intl/en/learn-quizzes.json index 7977beb5efc..8f81e933dcd 100644 --- a/src/intl/en/learn-quizzes.json +++ b/src/intl/en/learn-quizzes.json @@ -354,7 +354,7 @@ "i003-d-label": "Restricted regarding who can suggest changes", "i003-d-explanation": "Usually, every DAO member can suggest changes.", "i004-prompt": "What is essential about Smart Contracts for DAOs?", - "i004-a-label": "The Smart Contract code can be modified", + "i004-a-label": "The smart contract code can be modified", "i004-a-explanation": "Once the contract is live on Ethereum, no one can change the rules except by a vote. This allows the DAO to run by the rules it was programmed with.", "i004-b-label": "It has an individual owner who retains authority to make changes and send from the treasury.", "i004-b-explanation": "The treasury is defined by the smart contract. To spend money, the group's approval is needed.", From 04d033d3fe56a4d748b0174cf029fe40fa8f1340 Mon Sep 17 00:00:00 2001 From: Marlene Marz <42071757+JanetMo@users.noreply.github.com> Date: Sat, 27 Apr 2024 11:44:57 +0200 Subject: [PATCH 068/366] Update src/intl/en/learn-quizzes.json Co-authored-by: Paul Wackerow <54227730+wackerow@users.noreply.github.com> --- src/intl/en/learn-quizzes.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/intl/en/learn-quizzes.json b/src/intl/en/learn-quizzes.json index 8f81e933dcd..b65df6b0043 100644 --- a/src/intl/en/learn-quizzes.json +++ b/src/intl/en/learn-quizzes.json @@ -353,7 +353,7 @@ "i003-c-explanation": "Changes require voting by the members. Services offered are handled automatically in a decentralized manner.", "i003-d-label": "Restricted regarding who can suggest changes", "i003-d-explanation": "Usually, every DAO member can suggest changes.", - "i004-prompt": "What is essential about Smart Contracts for DAOs?", + "i004-prompt": "What is essential about smart contracts for DAOs?", "i004-a-label": "The smart contract code can be modified", "i004-a-explanation": "Once the contract is live on Ethereum, no one can change the rules except by a vote. This allows the DAO to run by the rules it was programmed with.", "i004-b-label": "It has an individual owner who retains authority to make changes and send from the treasury.", From bca1180172573c5a0dc555c78357eb9dcdce1de4 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Sat, 27 Apr 2024 16:03:01 -0400 Subject: [PATCH 069/366] fix(.storybook/preview): set default viewport --- .storybook/preview.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index dc7300cd9c2..ce868f7900e 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -65,6 +65,7 @@ const preview: Preview = { }, } }, {}), + defaultViewport: "2xl", }, }, } From 986e5791aa2b56b6265de588e256050c2fb00269 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Sat, 27 Apr 2024 16:11:52 -0400 Subject: [PATCH 070/366] fix(.storybook/preview): enable reduced motion for chromatic --- .storybook/preview.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index ce868f7900e..1b985751b35 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -1,4 +1,4 @@ -import { extendBaseTheme } from "@chakra-ui/react" +import { extendBaseTheme, usePrefersReducedMotion } from "@chakra-ui/react" import type { Preview } from "@storybook/react" import isChromatic from "chromatic/isChromatic" @@ -32,6 +32,9 @@ const preview: Preview = { backgrounds: { disable: true, }, + chromatic: { + prefersReducedMotion: "reduce", + }, chakra: { theme: extendedTheme, }, From 175f1274d7cf60b3a4e0295821fdfd27b279843e Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Tue, 30 Apr 2024 12:41:24 -0400 Subject: [PATCH 071/366] refactor(Tooltip.stories): use a primitive element for the decorator --- src/components/Tooltip/Tooltip.stories.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Tooltip/Tooltip.stories.tsx b/src/components/Tooltip/Tooltip.stories.tsx index afae9a77b26..77dae6e47dc 100644 --- a/src/components/Tooltip/Tooltip.stories.tsx +++ b/src/components/Tooltip/Tooltip.stories.tsx @@ -2,7 +2,7 @@ import * as React from "react" import { RiInformationLine } from "react-icons/ri" import { Box } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" -import { expect, fireEvent, userEvent, waitFor, within } from "@storybook/test" +import { expect, userEvent, waitFor, within } from "@storybook/test" import InlineLink from "../Link" import Translation from "../Translation" @@ -49,9 +49,9 @@ const meta = { }, decorators: [ (Story) => ( - +
    - +
    ), ], } satisfies Meta From 8c8525f450db26ad57c2617ddcd52c364d1731d6 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Tue, 30 Apr 2024 15:07:38 -0400 Subject: [PATCH 072/366] fix(QuizWidget.stories): fix render of "Layer 2" translation text --- .storybook/i18next.ts | 1 + .../Quiz/QuizWidget/QuizWidget.stories.tsx | 12 +++++------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.storybook/i18next.ts b/.storybook/i18next.ts index 82733b9d320..f8f891a2203 100644 --- a/.storybook/i18next.ts +++ b/.storybook/i18next.ts @@ -58,6 +58,7 @@ i18n.use(initReactI18next).init({ react: { useSuspense: false }, supportedLngs, resources, + defaultNS: "common", }) export default i18n diff --git a/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx b/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx index f1d920f7c66..e57c752f49a 100644 --- a/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx +++ b/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx @@ -47,13 +47,11 @@ export const QuizWidgetAllCorrect: StoryObj = { const quizWidget = canvas.getByTestId("quiz-widget") await expect(quizWidget).toBeInTheDocument() - // TODO: would like to add this check to confirm translation is working - // currently broken here, despite it working fine in prod - // await waitFor(() => - // expect(canvas.getByTestId("answer-status-null")).toHaveTextContent( - // "Layer 2" - // ) - // ) + await waitFor(() => + expect(canvas.getByTestId("answer-status-null")).toHaveTextContent( + "Layer 2" + ) + ) await waitFor(() => expect(canvas.getByTestId("check-answer-button")).toBeDisabled() From 0e0abf145169c551fdbf3fc890f5abe93703f945 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Tue, 30 Apr 2024 15:16:42 -0400 Subject: [PATCH 073/366] refactor(QuizWidget.stories): internationalize checks for All Correct story play --- .../Quiz/QuizWidget/QuizWidget.stories.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx b/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx index e57c752f49a..50c2e74b7ba 100644 --- a/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx +++ b/src/components/Quiz/QuizWidget/QuizWidget.stories.tsx @@ -1,3 +1,4 @@ +import { getI18n, useTranslation } from "react-i18next" import type { Meta, StoryObj } from "@storybook/react" import { expect, userEvent, waitFor, within } from "@storybook/test" @@ -41,7 +42,12 @@ export const QuizWidgetAllCorrect: StoryObj = { }, render: (args) => , - play: async ({ canvasElement, step }) => { + play: async ({ canvasElement, step, args }) => { + const { t } = getI18n() + + const translatedQuizKey = t(args.quizKey, { ns: "common" }) + const translatedPassedQuiz = t("passed", { ns: "learn-quizzes" }) + const canvas = within(canvasElement) const quizWidget = canvas.getByTestId("quiz-widget") @@ -49,7 +55,7 @@ export const QuizWidgetAllCorrect: StoryObj = { await waitFor(() => expect(canvas.getByTestId("answer-status-null")).toHaveTextContent( - "Layer 2" + translatedQuizKey ) ) @@ -84,7 +90,7 @@ export const QuizWidgetAllCorrect: StoryObj = { }) await step("Check for successful results page", async () => { - await expect(canvasElement).toHaveTextContent("You passed the quiz!") + await expect(canvasElement).toHaveTextContent(translatedPassedQuiz) }) }, } From 69d6a46dc96d48f8e4e6ba93a0d247b15bfc75f2 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:42:04 -0700 Subject: [PATCH 074/366] feat: crowdin cd v2 --- .github/workflows/get-translations.yml | 33 +++++++++++++++---- .../translations/getBucketDirectoryIds.ts | 9 +++++ 2 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 src/scripts/crowdin/translations/getBucketDirectoryIds.ts diff --git a/.github/workflows/get-translations.yml b/.github/workflows/get-translations.yml index d6d5c6705b4..ca1805a737e 100644 --- a/.github/workflows/get-translations.yml +++ b/.github/workflows/get-translations.yml @@ -1,14 +1,15 @@ -name: Import Crowdin translations +name: Crowdin CI on: schedule: - cron: "20 16 1 * *" # Runs at 4:20 PM on the first day of every month - workflow_dispatch: + workflow_dispatch: # Can be dispatched manually jobs: - create_pr: + create_approved_language_bucket_prs: runs-on: ubuntu-latest steps: + # Set up environment - name: Check out code uses: actions/checkout@v3 @@ -31,16 +32,34 @@ jobs: - name: Fetch latest dev run: git fetch origin dev + - name: Authenticate GitHub CLI + run: | + echo ${{ secrets.GITHUB_TOKEN }} | gh auth login --with-token + + # Build and prepare translations + - name: Build Crowdin project + run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/triggerBuild.ts + env: + CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} + CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} + + - name: Sleep while Crowdin build finishes + run: sleep 3600 # in seconds (1 hour) + + - name: Get latest translation bucket directory ids + run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/getBucketDirectoryIds.ts + env: + CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} + CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} + + # Import approved translations - name: Get translations run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/getTranslations.ts env: CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} - - name: Authenticate GitHub CLI - run: | - echo ${{ secrets.GITHUB_TOKEN }} | gh auth login --with-token - + # Post updates as language-specific PRs - name: Process commits and post PRs by language run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/postLangPRs.ts env: diff --git a/src/scripts/crowdin/translations/getBucketDirectoryIds.ts b/src/scripts/crowdin/translations/getBucketDirectoryIds.ts new file mode 100644 index 00000000000..43846cdccaa --- /dev/null +++ b/src/scripts/crowdin/translations/getBucketDirectoryIds.ts @@ -0,0 +1,9 @@ +import getAndSaveDirectories from "../source-files/fetchAndSaveDirectories" + +async function main() { + await getAndSaveDirectories() +} + +main() + +export default main From c3c591f6816ac06fadcc0b7819c3efe71ab91c12 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 2 May 2024 08:08:07 -0700 Subject: [PATCH 075/366] chore: assign import as type --- src/scripts/crowdin/translations/postLangPRs.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/crowdin/translations/postLangPRs.ts b/src/scripts/crowdin/translations/postLangPRs.ts index 143126ce0e7..abd1e6eda44 100644 --- a/src/scripts/crowdin/translations/postLangPRs.ts +++ b/src/scripts/crowdin/translations/postLangPRs.ts @@ -1,7 +1,7 @@ import fs from "fs" import { LOCALES_CODES } from "../../../lib/constants" -import { BucketsList } from "../import/types" +import type { BucketsList } from "../import/types" import { BUCKETS_PATH } from "./constants" import { createLocaleTranslationPR } from "./utils" From 9893a8ac1fd7cc92f4f76e828bf02b8b27061d60 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Fri, 3 May 2024 10:42:11 -0500 Subject: [PATCH 076/366] docs(...tutorials/data-storage-strategies): initial version --- .../data-storage-strategies/index.md | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 public/content/developers/tutorials/data-storage-strategies/index.md diff --git a/public/content/developers/tutorials/data-storage-strategies/index.md b/public/content/developers/tutorials/data-storage-strategies/index.md new file mode 100644 index 00000000000..28895c7788e --- /dev/null +++ b/public/content/developers/tutorials/data-storage-strategies/index.md @@ -0,0 +1,123 @@ +--- +title: Blockchain data Storage Strateges +description: There are several ways in which data from can be stored using the Blockchain. This article will compare the different strategies, their costs and tradeoffs, as well as the requirements to use it safely. +author: "qbzzt" +tags: ["storage", "data availability"] +skill: intermediate +lang: en +published: 2024-05-15 +--- + +There are several ways to storage information on the blockchain: + +- EIP 4844 blobs +- Calldata +- Offchain with L1 mechanisms +- Contract "code" +- Events +- EVM storage + +The choice of which method to use is based on several criteria: + +- The source of the information. Information in calldata cannot come from the blockchain itself. +- The destination of the information. Calldata is available only in the transaction it initiates. Events are not accessible onchain. +- How much hassle is acceptable? Computers that run a full-scale node can perform more processing than a light client in an application running in a browser. +- Is it necessary to facilitate easy access to the information from every node? + + +## The C.I.A. of information security {#cia-info-security} + +There are three attributes we'd like to have for data. + +- *Confidentiality*, unauthorized entities are not allowed to read the information. This is useful in many cases, but *there are no secrets on the blockchain*. Blockchains work because everybody is able to verify the state transitions, so it is impossible to use them to store secrets directly. There are ways to store confidential information on the blockchain, but they all rely on some offchain component to store at least a key. + +- *Integrity*, the information is correct, it cannot be changed by unauthorized entities, or in unauthorized ways (for example, transferring [ERC-20 tokens](https://eips.ethereum.org/EIPS/eip-20#events) without a `Transfer` event). On the blockchain, every node verifies every state change, which ensures integrity. + +- *Availability*, the information is available to any authorized entity. On the blockchain, this is usually achieved by having the information available on every [full node](https://ethereum.org/developers/docs/nodes-and-clients#full-node). + + +## EIP 4844 blobs {#eip-4844-blobs} + +Starting with [the Dencun hardfork](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/beacon-chain.md) the Ethereum blockchain includes [EIP 4844](https://eips.ethereum.org/EIPS/eip-4844), which adds to Ethereum data blobs with a limited lifetime (initially about [18 days](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/p2p-interface.md#configuration)). These blobs are priced separately from the [execution gas](/developers/docs/gas), although using a similar mechanism. They are a cheap way to post temporary data. + +The main use case for EIP-4844 blobs is for rollups to publish their transactions. [Optimistic rollups](/developers/docs/scaling/optimistic-rollups) need to publish the transactions on their blockchains. Those transactions have to be available to anybody during the [challenge period](https://docs.optimism.io/connect/resources/glossary#challenge-period) to enable [validators](https://docs.optimism.io/connect/resources/glossary#validator) to fix the mistake if the rollup's [sequencer](https://docs.optimism.io/connect/resources/glossary#sequencer) posts an incorrect state root. + +However, once the challenge period has passed and the state root is finalized, the remaining purpose for knowing these transactions is to replicate the chain's current state. This state is also available from chain nodes, with a lot less processing required. So transaction information should still be preserved in a few places, such as [block explorers](/developers/docs/data-and-analytics/block-explorers), but there is no need to pay for the level of censorship resistance Ethereum provides. + +[Zero-knowledge rollups](/developers/docs/scaling/zk-rollups/#data-availability) also post their transaction data to enable other nodes to replicate the existing state and verify validity proofs, but again that is a short term requirement. + +At writing posting on EIP-4844 costs one wei (10-18 ETH) per byte, which is negligible compared to [the 21,000 execution gas that any transaction, including one that posts blobs, costs](https://eth.blockscout.com/tx/0xf6cfaf0431c73dd1d96369a5e6707d64f463ccf477a4131265397f1d81466929?tab=index). You can see the current EIP-4844 price on [blobscan.com](https://blobscan.com/blocks). + +Here are the addresses to see the blobs posted by some famous rollups. + +|Rollup | Mailbox address | +| ----- | - | +| [Optimism](https://www.optimism.io/) | [`0xFF00000000000000000000000000000000000010`](https://blobscan.com/address/0xFF00000000000000000000000000000000000010) +| [Arbitrum](https://arbitrum.io/) | [`0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6`](https://blobscan.com/address/0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6) +| [Base](https://base.org/) | [`0xFF00000000000000000000000000000000008453`](https://blobscan.com/address/0xFF00000000000000000000000000000000008453) + +## Calldata {#calldata} + +Calldata refers to the bytes sent as part of the transaction. It is stored as part of the permanent record of the blockchain in the block which includes that transaction. + +This is the cheapest method to permanently put data in the blockchain. The cost per byte is either 4 execution gas (if the byte is zero) or 16 gas (any other value). If the data is compressed, which is standard practice, then every byte value is equally likely, so the average cost is approximately 15.95 gas per byte. + +At writing the prices are 12 gwei/gas and 2300 $/ETH, which means the cost is appoximately 45 cents per kilobyte. Because this was the cheapest method prior to EIP-4844, this is the method rollups used to store transaction information, which need to be available for [fault challenges](https://docs.optimism.io/stack/protocol/overview#fault-proofs), but do not need to be accessible directly onchain. + +Here are the addresses to see the transactions posted by some famous rollups. + +|Rollup | Mailbox address | +| ----- | - | +| [Optimism](https://www.optimism.io/) | [`0xFF00000000000000000000000000000000000010`](https://eth.blockscout.com/address/0xFF00000000000000000000000000000000000010) +| [Arbitrum](https://arbitrum.io/) | [`0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6`](https://eth.blockscout.com/address/0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6) +| [Base](https://base.org/) | [`0xFF00000000000000000000000000000000008453`](https://eth.blockscout.com/address/0xFF00000000000000000000000000000000008453) + + +## Offchain with L1 mechanisms {#offchain-with-l1-mechs} + +Depending on your security tradeoffs, it might be acceptable to put the information elsewhere and use a mechanism that ensures the data is available when needed. There are two requirements for this to work: + +1. Post a [hash](https://en.wikipedia.org/wiki/Cryptographic_hash_function) of the data on the blockchain, called an *input commitment*. This can be a single 32-byte word, so it is not expensive. As long as the input commitment is available, integrity is assured because it's not feasible to find any other data that would hash to the same value. So if incorrect data is provided, it can be detected. + +2. Have a mechanism that ensures availability. For example, in [Redstone](https://redstone.xyz/docs/what-is-redstone) any node can submit an availability challenge. If the sequencer does not respond onchain by the deadline, the input commitment is discarded so the information is considered never to have been posted. + +This is acceptable for an optimistic rollup because we are already relying on having at least one honest verifier for the state root. Such an honest verifier will also make sure it has the data to process blocks, and issue an availability challenge if the information is not available offchain. + + +## Contract code {#contract-code} + +Information that only needs to be written once, never gets overwritten, and needs to be available onchain can be stored as contract code. This means that we create a "smart contract" with the data and then use [`EXTCODECOPY`](https://www.evm.codes/#3c?fork=shanghai) to read the information. The advantage is that copying code is relatively cheap. + +Other than the cost of memory expansion, `EXTCODECOPY` costs 2600 gas for the first access to a contract (when it is "cold") and 100 gas for subsequent copies from the same contract plus 3 gas per 32 byte word. Compared with calldata, which costs 15.95 per byte, this is cheaper starting at about 200 bytes. Based on [the formula for memory expansion costs](https://www.evm.codes/about#memoryexpansion), at long as you don't need more than 4MB of memory, the memory expansion cost is smaller than the cost of adding calldata. + +Of course, this is just the cost to *read* the data. To create the contract costs approximately 32,000 gas + 200 gas/byte. This method is only economical when the same information needs to be read a large number of times in different transactions. + +Contract code can be nonsensical, as long as it doesn't start with `0xEF`. Contracts that start with `0xEF` are interpreted as [ethereum object format](https://notes.ethereum.org/@ipsilon/evm-object-format-overview), which has much stricter requirements. + + +## Events {#events} + +[Events](https://docs.alchemy.com/docs/solidity-events) are emitted by smart contracts, and read by offchain software. +Their advantage is that offchain code can listen for events. The cost is [gas](https://www.evm.codes/#a0?fork=cancun), 375 plus 8 gas per byte of data. At 12 gwei/gas and 2300 $/ETH, this translates to one cent plus 22 cents per kilobyte. + + +## Storage {#storage} + +Smart contracts have access to [persistent storage](https://docs.alchemy.com/docs/smart-contract-storage-layout#what-is-storage-memory). However, it is very expensive. Writing a 32 byte word to a previously empty storage slot can [cost 22,100 gas](https://www.evm.codes/#55?fork=cancun). At 12 gwei/gas and 2300 $/ETH, this is about 61 cents per write operation, or $19.5 per kilobyte. + +This is the most expensive form of storage in Ethereum. + + + +## Summary {#summary} + +This table summarizes the difference options, their advantages and disadvantages. + +| Storage type | Source of data | Availability guarantee | Onchain availability | Additional limitations +| - | - | - | - | - | +| EIP 4844 blobs | Offchain | Ethereum guarantee for [~18 days](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/p2p-interface.md#configuration) | Only hash is available | | +| Calldata | Offchain | Ethereum guarantee forever (part of the blockchain) | Only available if written to a contract, and at that transaction | +| Offchain with L1 mechanisms | Offchain | "One honest verifier" guarantee during the challenge period | Hash only | Guaranteed by the challenge mechanism, only during the challenge period +| Contract code | Onchain or offchain | Ethereum guarantee forever (part of the blockchain) | Yes | Written to a "random" address, cannot start with `0xEF` +| Events | Onchain | Ethereum guarantee forever (part of the blockchain) | No | +| Storage | Onchain | Ethereum guarantee forever (part of the blockchain and the present state until overwritten) | Yes | \ No newline at end of file From eff384ca90dfdd27281647ed6cbdce38bf002391 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Fri, 3 May 2024 11:00:09 -0500 Subject: [PATCH 077/366] Update index.md --- .../developers/tutorials/data-storage-strategies/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/content/developers/tutorials/data-storage-strategies/index.md b/public/content/developers/tutorials/data-storage-strategies/index.md index 28895c7788e..e57aba91cd0 100644 --- a/public/content/developers/tutorials/data-storage-strategies/index.md +++ b/public/content/developers/tutorials/data-storage-strategies/index.md @@ -1,5 +1,5 @@ --- -title: Blockchain data Storage Strateges +title: Blockchain Data Storage Strateges description: There are several ways in which data from can be stored using the Blockchain. This article will compare the different strategies, their costs and tradeoffs, as well as the requirements to use it safely. author: "qbzzt" tags: ["storage", "data availability"] @@ -120,4 +120,4 @@ This table summarizes the difference options, their advantages and disadvantages | Offchain with L1 mechanisms | Offchain | "One honest verifier" guarantee during the challenge period | Hash only | Guaranteed by the challenge mechanism, only during the challenge period | Contract code | Onchain or offchain | Ethereum guarantee forever (part of the blockchain) | Yes | Written to a "random" address, cannot start with `0xEF` | Events | Onchain | Ethereum guarantee forever (part of the blockchain) | No | -| Storage | Onchain | Ethereum guarantee forever (part of the blockchain and the present state until overwritten) | Yes | \ No newline at end of file +| Storage | Onchain | Ethereum guarantee forever (part of the blockchain and the present state until overwritten) | Yes | From d016c73ae770b960030ca6c175e1fabe13d5b988 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Fri, 3 May 2024 11:01:20 -0500 Subject: [PATCH 078/366] Update index.md --- .../developers/tutorials/data-storage-strategies/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/data-storage-strategies/index.md b/public/content/developers/tutorials/data-storage-strategies/index.md index e57aba91cd0..fffca8ae9ae 100644 --- a/public/content/developers/tutorials/data-storage-strategies/index.md +++ b/public/content/developers/tutorials/data-storage-strategies/index.md @@ -1,7 +1,7 @@ --- title: Blockchain Data Storage Strateges description: There are several ways in which data from can be stored using the Blockchain. This article will compare the different strategies, their costs and tradeoffs, as well as the requirements to use it safely. -author: "qbzzt" +author: "Ori Pomerantz" tags: ["storage", "data availability"] skill: intermediate lang: en From 52c82d0720e294f7342cbc11851d352e8e002e63 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Fri, 3 May 2024 11:02:04 -0500 Subject: [PATCH 079/366] Update index.md --- .../developers/tutorials/data-storage-strategies/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/tutorials/data-storage-strategies/index.md b/public/content/developers/tutorials/data-storage-strategies/index.md index fffca8ae9ae..35977071b32 100644 --- a/public/content/developers/tutorials/data-storage-strategies/index.md +++ b/public/content/developers/tutorials/data-storage-strategies/index.md @@ -1,5 +1,5 @@ --- -title: Blockchain Data Storage Strateges +title: Blockchain Data Storage Strategies description: There are several ways in which data from can be stored using the Blockchain. This article will compare the different strategies, their costs and tradeoffs, as well as the requirements to use it safely. author: "Ori Pomerantz" tags: ["storage", "data availability"] From ae7dfade6ce567745df53f182d42beaf3672abfb Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Mon, 6 May 2024 09:43:00 -0400 Subject: [PATCH 080/366] chore(.storybook): add farsi language to options --- .storybook/i18next.ts | 1 + .storybook/modes.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/.storybook/i18next.ts b/.storybook/i18next.ts index b4cc0629781..610c3328635 100644 --- a/.storybook/i18next.ts +++ b/.storybook/i18next.ts @@ -6,6 +6,7 @@ export const baseLocales = { zh: { title: "中国人", left: "Zh" }, ru: { title: "Русский", left: "Ru" }, uk: { title: "українська", left: "Uk" }, + fa: { title: "فارسی", left: "Fa" }, } // Only i18n files named in this array are being exposed to Storybook. Add filenames as necessary. diff --git a/.storybook/modes.ts b/.storybook/modes.ts index adbe153628e..0d62f91832e 100644 --- a/.storybook/modes.ts +++ b/.storybook/modes.ts @@ -32,6 +32,9 @@ export const langModes = { uk: { locale: "uk", }, + fa: { + locale: "fa", + }, } type LangViewModeObj = { From 627e8bccce2afcdb6e72d283d3a4537a65b14956 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Mon, 6 May 2024 09:47:27 -0400 Subject: [PATCH 081/366] feat(.storybook/preview): set document direction based on language selected --- .storybook/preview.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 48c773dbb2f..001821e40c1 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -13,6 +13,12 @@ export const chakraBreakpointArray = Object.entries( extendedTheme.breakpoints ) as [string, string][] +// Set document direction based on language selected +i18n.on("languageChanged", (locale) => { + const direction = i18n.dir(locale) + document.dir = direction +}) + const preview: Preview = { globals: { locale: "en", From 351a26d4d1cd348b4b80deb650145001ad3ce823 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 2 May 2024 08:08:24 -0700 Subject: [PATCH 082/366] feat: trigger coderabbitai if md warnings found --- src/scripts/crowdin/translations/utils.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/scripts/crowdin/translations/utils.ts b/src/scripts/crowdin/translations/utils.ts index e25492ffdb8..8b0f0be8591 100644 --- a/src/scripts/crowdin/translations/utils.ts +++ b/src/scripts/crowdin/translations/utils.ts @@ -56,6 +56,8 @@ yarn markdown-checker ${qaResults} + +@coderabbitai review ` } From e99cf23efe12dfedebe0b1fa82aabc4c8b97f7ab Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Tue, 7 May 2024 17:18:41 -0700 Subject: [PATCH 083/366] feat: create awaitLatestBuild script --- .../crowdin/translations/awaitLatestBuild.ts | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/scripts/crowdin/translations/awaitLatestBuild.ts diff --git a/src/scripts/crowdin/translations/awaitLatestBuild.ts b/src/scripts/crowdin/translations/awaitLatestBuild.ts new file mode 100644 index 00000000000..4406627fb6e --- /dev/null +++ b/src/scripts/crowdin/translations/awaitLatestBuild.ts @@ -0,0 +1,33 @@ +import crowdin from "../api-client/crowdinClient" + +async function awaitLatestBuild() { + const FINISHED = "finished" + const TIMEOUT = 2 * 60 * 60 * 1000 // 2 hours in milliseconds + + const projectId = Number(process.env.CROWDIN_PROJECT_ID) || 363359 + + const initialResponse = await crowdin.translationsApi.listProjectBuilds( + projectId + ) + + let data = initialResponse.data + let isFinished = data[0].data.status === FINISHED + + const timeoutTime = Date.now() + TIMEOUT + while (!isFinished && Date.now() < timeoutTime) { + const repeatCheck = await crowdin.translationsApi.listProjectBuilds( + projectId + ) + data = repeatCheck.data + isFinished = data[0].data.status === FINISHED + } + const latestBuildData = data[0].data + if (latestBuildData.status !== FINISHED) + throw new Error( + `Timeout: Build did not finish in ${TIMEOUT / 1000 / 60} minutes` + ) +} + +awaitLatestBuild() + +export default awaitLatestBuild From 48519028a58fc7e62b668511c39297fff6009a49 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Tue, 7 May 2024 17:19:32 -0700 Subject: [PATCH 084/366] feat: update get-translations.ts extract env vars to single-declaration; remove sleep and replace with awaitLatestBuild script; move timing to AM, --- .github/workflows/get-translations.yml | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/.github/workflows/get-translations.yml b/.github/workflows/get-translations.yml index ca1805a737e..1fc07debe22 100644 --- a/.github/workflows/get-translations.yml +++ b/.github/workflows/get-translations.yml @@ -2,12 +2,17 @@ name: Crowdin CI on: schedule: - - cron: "20 16 1 * *" # Runs at 4:20 PM on the first day of every month + - cron: "20 4 1 * *" # Runs at 4:20 AM on the first day of every month workflow_dispatch: # Can be dispatched manually jobs: create_approved_language_bucket_prs: runs-on: ubuntu-latest + env: + CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} + CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: # Set up environment - name: Check out code @@ -39,28 +44,17 @@ jobs: # Build and prepare translations - name: Build Crowdin project run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/triggerBuild.ts - env: - CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} - CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} - - name: Sleep while Crowdin build finishes - run: sleep 3600 # in seconds (1 hour) + - name: Await latest build to finish + run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/awaitLatestBuild.ts - name: Get latest translation bucket directory ids run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/getBucketDirectoryIds.ts - env: - CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} - CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} # Import approved translations - name: Get translations run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/getTranslations.ts - env: - CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} - CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} # Post updates as language-specific PRs - name: Process commits and post PRs by language run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/postLangPRs.ts - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From c8235b9a8d2e913dce66685a90ad2ded3b75b390 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Tue, 7 May 2024 17:20:27 -0700 Subject: [PATCH 085/366] chore: rm fetchAndSaveDirectories call from getCrowdinContributors this is updated with each import cycle and committed; large number of build minutes and not required here --- src/scripts/crowdin/getCrowdinContributors.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/scripts/crowdin/getCrowdinContributors.ts b/src/scripts/crowdin/getCrowdinContributors.ts index e5da700f572..df744912b02 100644 --- a/src/scripts/crowdin/getCrowdinContributors.ts +++ b/src/scripts/crowdin/getCrowdinContributors.ts @@ -1,12 +1,10 @@ import { getTranslatedMarkdownPaths } from "../markdownChecker" import getTranslationCostsReports from "./reports/getTranslationCostsReports" -import getAndSaveDirectories from "./source-files/fetchAndSaveDirectories" import fetchAndSaveFileIds from "./source-files/fetchAndSaveFileIds" import getDirectoryIds from "./utils" async function main() { - await getAndSaveDirectories() const directoryIds = getDirectoryIds() await fetchAndSaveFileIds(directoryIds) const translatedMarkdownPaths = await getTranslatedMarkdownPaths() From 5ab79b083812008f3e4dc43eea38131602fe83cf Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 7 May 2024 20:08:39 -0500 Subject: [PATCH 086/366] Apply suggestions from code review Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .../developers/tutorials/data-storage-strategies/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/content/developers/tutorials/data-storage-strategies/index.md b/public/content/developers/tutorials/data-storage-strategies/index.md index 35977071b32..7cb47a79a68 100644 --- a/public/content/developers/tutorials/data-storage-strategies/index.md +++ b/public/content/developers/tutorials/data-storage-strategies/index.md @@ -29,7 +29,7 @@ The choice of which method to use is based on several criteria: There are three attributes we'd like to have for data. -- *Confidentiality*, unauthorized entities are not allowed to read the information. This is useful in many cases, but *there are no secrets on the blockchain*. Blockchains work because everybody is able to verify the state transitions, so it is impossible to use them to store secrets directly. There are ways to store confidential information on the blockchain, but they all rely on some offchain component to store at least a key. +- *Confidentiality*, unauthorized entities are not allowed to read the information. This is useful in many cases, but *there are no secrets on the blockchain*. Blockchains work because everybody can verify the state transitions, so it is impossible to use them to store secrets directly. There are ways to store confidential information on the blockchain, but they all rely on some offchain component to store at least a key. - *Integrity*, the information is correct, it cannot be changed by unauthorized entities, or in unauthorized ways (for example, transferring [ERC-20 tokens](https://eips.ethereum.org/EIPS/eip-20#events) without a `Transfer` event). On the blockchain, every node verifies every state change, which ensures integrity. @@ -44,7 +44,7 @@ The main use case for EIP-4844 blobs is for rollups to publish their transaction However, once the challenge period has passed and the state root is finalized, the remaining purpose for knowing these transactions is to replicate the chain's current state. This state is also available from chain nodes, with a lot less processing required. So transaction information should still be preserved in a few places, such as [block explorers](/developers/docs/data-and-analytics/block-explorers), but there is no need to pay for the level of censorship resistance Ethereum provides. -[Zero-knowledge rollups](/developers/docs/scaling/zk-rollups/#data-availability) also post their transaction data to enable other nodes to replicate the existing state and verify validity proofs, but again that is a short term requirement. +[Zero-knowledge rollups](/developers/docs/scaling/zk-rollups/#data-availability) also post their transaction data to enable other nodes to replicate the existing state and verify validity proofs, but again that is a short-term requirement. At writing posting on EIP-4844 costs one wei (10-18 ETH) per byte, which is negligible compared to [the 21,000 execution gas that any transaction, including one that posts blobs, costs](https://eth.blockscout.com/tx/0xf6cfaf0431c73dd1d96369a5e6707d64f463ccf477a4131265397f1d81466929?tab=index). You can see the current EIP-4844 price on [blobscan.com](https://blobscan.com/blocks). From 9724608e3f6ba5c71481e21f2d8efff8512ddf30 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 7 May 2024 20:11:45 -0500 Subject: [PATCH 087/366] Apply suggestions from code review Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .../tutorials/data-storage-strategies/index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/content/developers/tutorials/data-storage-strategies/index.md b/public/content/developers/tutorials/data-storage-strategies/index.md index 7cb47a79a68..d6e39124aba 100644 --- a/public/content/developers/tutorials/data-storage-strategies/index.md +++ b/public/content/developers/tutorials/data-storage-strategies/index.md @@ -52,9 +52,9 @@ Here are the addresses to see the blobs posted by some famous rollups. |Rollup | Mailbox address | | ----- | - | -| [Optimism](https://www.optimism.io/) | [`0xFF00000000000000000000000000000000000010`](https://blobscan.com/address/0xFF00000000000000000000000000000000000010) -| [Arbitrum](https://arbitrum.io/) | [`0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6`](https://blobscan.com/address/0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6) -| [Base](https://base.org/) | [`0xFF00000000000000000000000000000000008453`](https://blobscan.com/address/0xFF00000000000000000000000000000000008453) +| [Optimism](https://www.optimism.io/) | [`0xFF00000000000000000000000000000000000010`](https://blobscan.com/address/0xFF00000000000000000000000000000000000010) | +| [Arbitrum](https://arbitrum.io/) | [`0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6`](https://blobscan.com/address/0x1c479675ad559DC151F6Ec7ed3FbF8ceE79582B6) | +| [Base](https://base.org/) | [`0xFF00000000000000000000000000000000008453`](https://blobscan.com/address/0xFF00000000000000000000000000000000008453) | ## Calldata {#calldata} @@ -79,7 +79,7 @@ Depending on your security tradeoffs, it might be acceptable to put the informat 1. Post a [hash](https://en.wikipedia.org/wiki/Cryptographic_hash_function) of the data on the blockchain, called an *input commitment*. This can be a single 32-byte word, so it is not expensive. As long as the input commitment is available, integrity is assured because it's not feasible to find any other data that would hash to the same value. So if incorrect data is provided, it can be detected. -2. Have a mechanism that ensures availability. For example, in [Redstone](https://redstone.xyz/docs/what-is-redstone) any node can submit an availability challenge. If the sequencer does not respond onchain by the deadline, the input commitment is discarded so the information is considered never to have been posted. +2. Have a mechanism that ensures availability. For example, in [Redstone](https://redstone.xyz/docs/what-is-redstone) any node can submit an availability challenge. If the sequencer does not respond onchain by the deadline, the input commitment is discarded, so the information is considered never to have been posted. This is acceptable for an optimistic rollup because we are already relying on having at least one honest verifier for the state root. Such an honest verifier will also make sure it has the data to process blocks, and issue an availability challenge if the information is not available offchain. @@ -90,7 +90,7 @@ Information that only needs to be written once, never gets overwritten, and need Other than the cost of memory expansion, `EXTCODECOPY` costs 2600 gas for the first access to a contract (when it is "cold") and 100 gas for subsequent copies from the same contract plus 3 gas per 32 byte word. Compared with calldata, which costs 15.95 per byte, this is cheaper starting at about 200 bytes. Based on [the formula for memory expansion costs](https://www.evm.codes/about#memoryexpansion), at long as you don't need more than 4MB of memory, the memory expansion cost is smaller than the cost of adding calldata. -Of course, this is just the cost to *read* the data. To create the contract costs approximately 32,000 gas + 200 gas/byte. This method is only economical when the same information needs to be read a large number of times in different transactions. +Of course, this is just the cost to *read* the data. To create the contract costs approximately 32,000 gas + 200 gas/byte. This method is only economical when the same information needs to be read many times in different transactions. Contract code can be nonsensical, as long as it doesn't start with `0xEF`. Contracts that start with `0xEF` are interpreted as [ethereum object format](https://notes.ethereum.org/@ipsilon/evm-object-format-overview), which has much stricter requirements. From 6e4e0f759f3974d7096e298fef095a5bf21897e2 Mon Sep 17 00:00:00 2001 From: Ori Pomerantz Date: Tue, 7 May 2024 20:22:01 -0500 Subject: [PATCH 088/366] Update index.md --- .../developers/tutorials/data-storage-strategies/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/content/developers/tutorials/data-storage-strategies/index.md b/public/content/developers/tutorials/data-storage-strategies/index.md index d6e39124aba..b34a19ca5d0 100644 --- a/public/content/developers/tutorials/data-storage-strategies/index.md +++ b/public/content/developers/tutorials/data-storage-strategies/index.md @@ -1,6 +1,6 @@ --- title: Blockchain Data Storage Strategies -description: There are several ways in which data from can be stored using the Blockchain. This article will compare the different strategies, their costs and tradeoffs, as well as the requirements to use it safely. +description: There are several ways to store data using the blockchain. This article will compare the different strategies, their costs and tradeoffs, as well as the requirements to use it safely. author: "Ori Pomerantz" tags: ["storage", "data availability"] skill: intermediate @@ -8,7 +8,7 @@ lang: en published: 2024-05-15 --- -There are several ways to storage information on the blockchain: +There are several ways to store information on the blockchain: - EIP 4844 blobs - Calldata From 3c2a5a31525c7b1c52107b7c7011e8faabf91a55 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Tue, 7 May 2024 19:17:43 -0700 Subject: [PATCH 089/366] build: rm build-crowdin.yml workflow in lieu of incorporation into CI/CD workflow; keeps triggerBuild.ts script --- .github/workflows/build-crowdin.yml | 30 ----------------------------- 1 file changed, 30 deletions(-) delete mode 100644 .github/workflows/build-crowdin.yml diff --git a/.github/workflows/build-crowdin.yml b/.github/workflows/build-crowdin.yml deleted file mode 100644 index 928e9df5e02..00000000000 --- a/.github/workflows/build-crowdin.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Build Crowdin project - -on: - schedule: - - cron: "20 04 1 * *" # Runs at 4:20 AM on the first day of every month - workflow_dispatch: - -jobs: - create_pr: - runs-on: ubuntu-latest - steps: - - name: Check out code - uses: actions/checkout@v3 - - - name: Set up Node.js - uses: actions/setup-node@v3 - with: - node-version: 18 - - - name: Install dependencies - run: yarn install - - - name: Install ts-node - run: yarn global add ts-node - - - name: Run script - run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/triggerBuild.ts - env: - CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} - CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} From 671688deb5d2b8f0d2f3a74bb103df36e31b8285 Mon Sep 17 00:00:00 2001 From: stolab <144235139+stolab@users.noreply.github.com> Date: Wed, 8 May 2024 10:08:29 +0200 Subject: [PATCH 090/366] Update public/content/developers/docs/transactions/index.md Co-authored-by: Paul Wackerow <54227730+wackerow@users.noreply.github.com> --- public/content/developers/docs/transactions/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/docs/transactions/index.md b/public/content/developers/docs/transactions/index.md index d8f4d8b0edb..2de1db6c500 100644 --- a/public/content/developers/docs/transactions/index.md +++ b/public/content/developers/docs/transactions/index.md @@ -168,7 +168,7 @@ Any gas not used in a transaction is refunded to the user account. ### Smart contract interactions {#smart-contract-interactions} -Gas is required for any transaction that alters the state of a smart contract. +Gas is required for any transaction that involves a smart contract. Therefore, calling a [`view`](https://docs.soliditylang.org/en/latest/contracts.html#view-functions) or [`pure`](https://docs.soliditylang.org/en/latest/contracts.html#pure-functions) function from an EOA will not require any gas. The underlying RPC call for this scenario is [`eth_call`](/developers/docs/apis/json-rpc#eth_call) From 23b254f918efb5a8f22b37c3adbb81594ebe462e Mon Sep 17 00:00:00 2001 From: stolab <144235139+stolab@users.noreply.github.com> Date: Wed, 8 May 2024 10:08:53 +0200 Subject: [PATCH 091/366] Update public/content/developers/docs/transactions/index.md Co-authored-by: Paul Wackerow <54227730+wackerow@users.noreply.github.com> --- public/content/developers/docs/transactions/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/docs/transactions/index.md b/public/content/developers/docs/transactions/index.md index 2de1db6c500..04401aed457 100644 --- a/public/content/developers/docs/transactions/index.md +++ b/public/content/developers/docs/transactions/index.md @@ -170,7 +170,7 @@ Any gas not used in a transaction is refunded to the user account. Gas is required for any transaction that involves a smart contract. -Therefore, calling a [`view`](https://docs.soliditylang.org/en/latest/contracts.html#view-functions) or [`pure`](https://docs.soliditylang.org/en/latest/contracts.html#pure-functions) function from an EOA will not require any gas. The underlying RPC call for this scenario is [`eth_call`](/developers/docs/apis/json-rpc#eth_call) +Smart contracts can also contain functions known as [`view`](https://docs.soliditylang.org/en/latest/contracts.html#view-functions) or [`pure`](https://docs.soliditylang.org/en/latest/contracts.html#pure-functions) functions, which do not alter the state of the contract. As such, calling these functions from an EOA will not require any gas. The underlying RPC call for this scenario is [`eth_call`](/developers/docs/apis/json-rpc#eth_call) However calling a `view` or `pure` function internally (ie: from the contract itself or from another contract) will cost gas. From 847f1280b9c200f8871c7f54050c19c12dc835cf Mon Sep 17 00:00:00 2001 From: stolab <144235139+stolab@users.noreply.github.com> Date: Wed, 8 May 2024 10:09:24 +0200 Subject: [PATCH 092/366] Update public/content/developers/docs/transactions/index.md Co-authored-by: Paul Wackerow <54227730+wackerow@users.noreply.github.com> --- public/content/developers/docs/transactions/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/developers/docs/transactions/index.md b/public/content/developers/docs/transactions/index.md index 04401aed457..e86a15d11b8 100644 --- a/public/content/developers/docs/transactions/index.md +++ b/public/content/developers/docs/transactions/index.md @@ -172,7 +172,7 @@ Gas is required for any transaction that involves a smart contract. Smart contracts can also contain functions known as [`view`](https://docs.soliditylang.org/en/latest/contracts.html#view-functions) or [`pure`](https://docs.soliditylang.org/en/latest/contracts.html#pure-functions) functions, which do not alter the state of the contract. As such, calling these functions from an EOA will not require any gas. The underlying RPC call for this scenario is [`eth_call`](/developers/docs/apis/json-rpc#eth_call) -However calling a `view` or `pure` function internally (ie: from the contract itself or from another contract) will cost gas. +Unlike when accessed using `eth_call`, these `view` or `pure` functions are also commonly called internally (ie. from the contract itself or from another contract) which does cost gas. ## Transaction lifecycle {#transaction-lifecycle} From 2505247b274153e17dd96fbe2b3ee350ea338f4c Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 8 May 2024 17:08:36 -0400 Subject: [PATCH 093/366] revert(.storybook): remove farsi langauge and config --- .storybook/i18next.ts | 1 - .storybook/modes.ts | 3 --- .storybook/preview.ts | 6 ------ 3 files changed, 10 deletions(-) diff --git a/.storybook/i18next.ts b/.storybook/i18next.ts index 610c3328635..b4cc0629781 100644 --- a/.storybook/i18next.ts +++ b/.storybook/i18next.ts @@ -6,7 +6,6 @@ export const baseLocales = { zh: { title: "中国人", left: "Zh" }, ru: { title: "Русский", left: "Ru" }, uk: { title: "українська", left: "Uk" }, - fa: { title: "فارسی", left: "Fa" }, } // Only i18n files named in this array are being exposed to Storybook. Add filenames as necessary. diff --git a/.storybook/modes.ts b/.storybook/modes.ts index 0d62f91832e..adbe153628e 100644 --- a/.storybook/modes.ts +++ b/.storybook/modes.ts @@ -32,9 +32,6 @@ export const langModes = { uk: { locale: "uk", }, - fa: { - locale: "fa", - }, } type LangViewModeObj = { diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 001821e40c1..48c773dbb2f 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -13,12 +13,6 @@ export const chakraBreakpointArray = Object.entries( extendedTheme.breakpoints ) as [string, string][] -// Set document direction based on language selected -i18n.on("languageChanged", (locale) => { - const direction = i18n.dir(locale) - document.dir = direction -}) - const preview: Preview = { globals: { locale: "en", From 74df7a06d7e6be975c06e9844154e62f002207ed Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Wed, 8 May 2024 17:14:07 -0400 Subject: [PATCH 094/366] refactor(.storybook/modes): generate the mode objects --- .storybook/modes.ts | 57 ++++++++++++++++++--------------------------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/.storybook/modes.ts b/.storybook/modes.ts index adbe153628e..612af605625 100644 --- a/.storybook/modes.ts +++ b/.storybook/modes.ts @@ -1,38 +1,27 @@ -export const viewportModes = { - base: { - viewport: "base", - }, - sm: { - viewport: "sm", - }, - md: { - viewport: "md", - }, - lg: { - viewport: "lg", - }, - xl: { - viewport: "xl", - }, - "2xl": { - viewport: "2xl", - }, -} +import { baseLocales } from "./i18next" +import { chakraBreakpointArray } from "./preview" -export const langModes = { - en: { - locale: "en", - }, - zh: { - locale: "zh", - }, - ru: { - locale: "ru", - }, - uk: { - locale: "uk", - }, -} +export const viewportModes = chakraBreakpointArray.reduce<{ + [mode: string]: { viewport: string } +}>((arr, [token]) => { + return { + ...arr, + [token]: { + viewport: token, + }, + } +}, {}) + +export const langModes = Object.keys(baseLocales).reduce<{ + [locale: string]: { locale: string } +}>((arr, curr) => { + return { + ...arr, + [curr]: { + locale: curr, + }, + } +}, {}) type LangViewModeObj = { [key: string]: { viewport: string; locale: string } From 6d618e4fcb51b86dc2ca70389ba0752f81995b4d Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 8 May 2024 14:50:50 -0700 Subject: [PATCH 095/366] revert: removal of fetchAndSaveDirectories from getCrowdinContributors --- src/scripts/crowdin/getCrowdinContributors.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/scripts/crowdin/getCrowdinContributors.ts b/src/scripts/crowdin/getCrowdinContributors.ts index df744912b02..e5da700f572 100644 --- a/src/scripts/crowdin/getCrowdinContributors.ts +++ b/src/scripts/crowdin/getCrowdinContributors.ts @@ -1,10 +1,12 @@ import { getTranslatedMarkdownPaths } from "../markdownChecker" import getTranslationCostsReports from "./reports/getTranslationCostsReports" +import getAndSaveDirectories from "./source-files/fetchAndSaveDirectories" import fetchAndSaveFileIds from "./source-files/fetchAndSaveFileIds" import getDirectoryIds from "./utils" async function main() { + await getAndSaveDirectories() const directoryIds = getDirectoryIds() await fetchAndSaveFileIds(directoryIds) const translatedMarkdownPaths = await getTranslatedMarkdownPaths() From 26007b3b12a756b3199a9b9ec1a5e4d4f271c446 Mon Sep 17 00:00:00 2001 From: Tyler Pfledderer Date: Wed, 8 May 2024 18:02:43 -0400 Subject: [PATCH 096/366] Update src/components/Hero/ContentHero/index.tsx Co-authored-by: Pablo Pettinari --- src/components/Hero/ContentHero/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Hero/ContentHero/index.tsx b/src/components/Hero/ContentHero/index.tsx index 929b95a6415..984d5eff3e8 100644 --- a/src/components/Hero/ContentHero/index.tsx +++ b/src/components/Hero/ContentHero/index.tsx @@ -26,7 +26,7 @@ const ContentHero = (props: ContentHeroProps) => { blurDataURL={blurDataURL} width={760} height={451} - sizes="100vw" + sizes="(max-width: 992px) 100vw, 50vw" boxSize="full" style={{ objectFit: "contain" }} flex={{ base: "1 1 100%", md: "none" }} From 546ce9b9043bbbf3c4f598df1a3a1d7a96b35f69 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 8 May 2024 15:21:59 -0700 Subject: [PATCH 097/366] feat: rm exportApprovedOnly, check if build done Repeat calls could produce the same build ID. `import "dotenv/config"` not needed when called from an action --- src/scripts/crowdin/translations/triggerBuild.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/scripts/crowdin/translations/triggerBuild.ts b/src/scripts/crowdin/translations/triggerBuild.ts index 866a40b6c91..5831bb27534 100644 --- a/src/scripts/crowdin/translations/triggerBuild.ts +++ b/src/scripts/crowdin/translations/triggerBuild.ts @@ -1,14 +1,17 @@ import crowdin from "../api-client/crowdinClient" -import "dotenv/config" - async function triggerBuild() { const projectId = Number(process.env.CROWDIN_PROJECT_ID) || 363359 try { - await crowdin.translationsApi.buildProject(projectId, { - exportApprovedOnly: true, - }) + const response = await crowdin.translationsApi.buildProject(projectId) + const { id, status } = response.data + const isAlreadyFinished = status === "finished" + console.log( + `Build ${isAlreadyFinished ? "already finished" : "triggered"} id:`, + id + ) + console.log(`::set-output name=buildId::${id}`) } catch (error: unknown) { console.error((error as Error).message) } From 12c7ae9328a9f7608c026955dca805556bb27ab2 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 8 May 2024 15:30:47 -0700 Subject: [PATCH 098/366] feat: update awaitLatestBuild.ts script Requires getting process.env.BUILD_ID from previous script in workflow (triggerBuild.ts) --- .../crowdin/translations/awaitLatestBuild.ts | 43 +++++++++++++------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/src/scripts/crowdin/translations/awaitLatestBuild.ts b/src/scripts/crowdin/translations/awaitLatestBuild.ts index 4406627fb6e..38be22e3df3 100644 --- a/src/scripts/crowdin/translations/awaitLatestBuild.ts +++ b/src/scripts/crowdin/translations/awaitLatestBuild.ts @@ -1,31 +1,50 @@ import crowdin from "../api-client/crowdinClient" -async function awaitLatestBuild() { - const FINISHED = "finished" - const TIMEOUT = 2 * 60 * 60 * 1000 // 2 hours in milliseconds +const FINISHED = "finished" +const TIMEOUT = 2 * 60 * 60 * 1000 // Timeout after 2 hours +const INTERVAL = 10 * 1000 // 10 seconds between checks +async function awaitLatestBuild() { const projectId = Number(process.env.CROWDIN_PROJECT_ID) || 363359 - const initialResponse = await crowdin.translationsApi.listProjectBuilds( - projectId - ) + // BUILD_ID is provided by the triggerBuild script run in the same workflow prior to this script + const buildId = process.env.BUILD_ID + console.log("Build ID provided:", buildId) + const initialResponse = await crowdin.translationsApi.checkBuildStatus( + projectId, + Number(buildId) + ) let data = initialResponse.data - let isFinished = data[0].data.status === FINISHED + + let isFinished = data.status === FINISHED const timeoutTime = Date.now() + TIMEOUT + let tryAgainTime = Date.now() - 1 while (!isFinished && Date.now() < timeoutTime) { - const repeatCheck = await crowdin.translationsApi.listProjectBuilds( - projectId + if (Date.now() < tryAgainTime) continue + tryAgainTime = Date.now() + INTERVAL + + const repeatCheck = await crowdin.translationsApi.checkBuildStatus( + projectId, + Number(buildId) ) data = repeatCheck.data - isFinished = data[0].data.status === FINISHED + isFinished = data.status === FINISHED + console.log( + `id: ${buildId}, status: ${data.status}, progress ${data.progress}` + ) } - const latestBuildData = data[0].data - if (latestBuildData.status !== FINISHED) + + if (data.status !== FINISHED) { + console.error(`::set-output name=buildSuccess::false`) throw new Error( `Timeout: Build did not finish in ${TIMEOUT / 1000 / 60} minutes` ) + } + + console.log("Latest build data:", data) + console.error(`::set-output name=buildSuccess::true`) } awaitLatestBuild() From ea9c85d4c30b9f25a63f8ace371a02aede543031 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 8 May 2024 15:34:25 -0700 Subject: [PATCH 099/366] feat: update get-translations.yml workflow --- .github/workflows/get-translations.yml | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/.github/workflows/get-translations.yml b/.github/workflows/get-translations.yml index 1fc07debe22..0d82516cd60 100644 --- a/.github/workflows/get-translations.yml +++ b/.github/workflows/get-translations.yml @@ -41,13 +41,31 @@ jobs: run: | echo ${{ secrets.GITHUB_TOKEN }} | gh auth login --with-token - # Build and prepare translations + # Build translations - name: Build Crowdin project - run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/triggerBuild.ts + id: build-crowdin + run: | + OUTPUT=$(npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/triggerBuild.ts) + echo "$OUTPUT" + shell: bash - name: Await latest build to finish - run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/awaitLatestBuild.ts + env: + BUILD_ID: ${{ steps.build-crowdin.outputs.buildId}} + run: | + OUTPUT=$(npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/awaitLatestBuild.ts) + echo "$OUTPUT" + shell: bash + + - name: Check build success + run: | + if [ "${{ steps.build-crowdin.outputs.buildSuccess }}" = "false" ]; then + echo "Build timed out, exiting" + exit 1 + fi + shell: bash + # Prepare bucket ids - name: Get latest translation bucket directory ids run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/getBucketDirectoryIds.ts From b784ac103bec5d86228460d1e0e3694e0f0b59ab Mon Sep 17 00:00:00 2001 From: Seth Ariel Green Date: Thu, 9 May 2024 11:51:40 -0400 Subject: [PATCH 100/366] Update index.md for accounts page This looks good! A few small changes related to readability and reducing word count --- public/content/developers/docs/accounts/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/content/developers/docs/accounts/index.md b/public/content/developers/docs/accounts/index.md index b4c5a5998c4..3c26214e433 100644 --- a/public/content/developers/docs/accounts/index.md +++ b/public/content/developers/docs/accounts/index.md @@ -8,7 +8,7 @@ An Ethereum account is an entity with an ether (ETH) balance that can send trans ## Prerequisites {#prerequisites} -To help you better understand this page, we recommend you first read through our [introduction to Ethereum](/developers/docs/intro-to-ethereum/). +We recommend you first read through our [introduction to Ethereum](/developers/docs/intro-to-ethereum/). ## Account types {#types-of-account} @@ -52,7 +52,7 @@ _Diagram adapted from [Ethereum EVM illustrated](https://takenobu-hs.github.io/d ## Externally-owned accounts and key pairs {#externally-owned-accounts-and-key-pairs} -An account is made up of a cryptographic pair of keys: public and private. They help prove that a transaction was actually signed by the sender and prevent forgeries. Your private key is what you use to sign transactions, so it grants you custody over the funds associated with your account. You never really hold cryptocurrency, you hold private keys – the funds are always on Ethereum's ledger. +An account is made up of a pair of cryptographic keys: public and private. They help prove that a transaction was actually signed by the sender and prevent forgeries. Your private key is what you use to sign transactions, so it grants you custody over the funds associated with your account. You never really hold cryptocurrency, you hold private keys – the funds are always on Ethereum's ledger. This prevents malicious actors from broadcasting fake transactions because you can always verify the sender of a transaction. @@ -87,7 +87,7 @@ Generated account 0x5e97870f263700f46aa00d967821199b9bc5a120 [Geth documentation](https://geth.ethereum.org/docs) -It is possible to derive new public keys from your private key but you cannot derive a private key from public keys. This means it's vital to keep a private key safe and, as the name suggests, **PRIVATE**. +It is possible to derive new public keys from your private key, but you cannot derive a private key from public keys. It is vital to keep your private keys safe and, as the name suggests, **PRIVATE**. You need a private key to sign messages and transactions which output a signature. Others can then take the signature to derive your public key, proving the author of the message. In your application, you can use a javascript library to send transactions to the network. From 2cebee9b1eb075ca0477a1b5f080d8966181057a Mon Sep 17 00:00:00 2001 From: SeanXLChen Date: Thu, 9 May 2024 10:15:48 -0700 Subject: [PATCH 101/366] Add info that explain Type 0 1 2 transactions [Fixes #7372] --- public/content/developers/docs/transactions/index.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/public/content/developers/docs/transactions/index.md b/public/content/developers/docs/transactions/index.md index 47c88b77174..5f3d7eb2d49 100644 --- a/public/content/developers/docs/transactions/index.md +++ b/public/content/developers/docs/transactions/index.md @@ -202,6 +202,16 @@ Where the fields are defined as: - `TransactionType` - a number between 0 and 0x7f, for a total of 128 possible transaction types. - `TransactionPayload` - an arbitrary byte array defined by the transaction type. +Based on the `TransactionType` value, a transaction can be classified as + +1. **Type 0 (Legacy) Transactions:** The original transaction format used since Ethereum's launch. They do not include features from [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) such as dynamic gas fee calculations or access lists for smart contracts. Legacy transactions lack a specific prefix indicating their type in their serialized form, starting with the byte `0xf8` when using [Recursive Length Prefix (RLP)](/developers/docs/data-structures-and-encoding/rlp) encoding. The TransactionType value for these transactions is `0x0`. + +2. **Type 1 Transactions:** Introduced in [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930) as part of Ethereum's [Berlin Upgrade](https://ethereum.org/en/history/#berlin), these transactions include an `accessList` parameter. This list specifies addresses and storage keys the transaction expects to access, helping to potentially reduce [gas](/developers/docs/gas/) costs for complex transactions involving smart contracts. Type 1 transactions also include a `yParity` parameter, which can either be `0x0` or `0x1`, indicating the parity of the y-value of the secp256k1 signature. They are identified by starting with the byte `0x01`, and their TransactionType value is `0x1`. + +3. **Type 2 Transactions**, commonly referred to as "London" transactions or EIP-1559 transactions are transactions introduced in [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), included in Ethereum's [London Upgrade](https://ethereum.org/en/history/#london). have become the standard transaction type on the Ethereum network. These transactions introduce a new fee market mechanism that improves predictability by separating the transaction fee into a base fee and a priority fee. They start with the byte `0x02` and include fields such as `maxPriorityFeePerGas` and `maxFeePerGas`. Type 2 transactions are now the default due to their flexibility and efficiency, especially favored during periods of high network congestion for their ability to help users manage transaction fees more predictably. The TransactionType value for these transactions is `0x2`. + + + ## Further reading {#further-reading} - [EIP-2718: Typed Transaction Envelope](https://eips.ethereum.org/EIPS/eip-2718) From 5bada51fad85fb910ba98c9342a44319d4503de7 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Sun, 12 May 2024 09:41:00 -0400 Subject: [PATCH 102/366] fix(tooltip.stories): revert to `isOpen` arg for OnOpen story, add large decoorator --- src/components/Tooltip/Tooltip.stories.tsx | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/components/Tooltip/Tooltip.stories.tsx b/src/components/Tooltip/Tooltip.stories.tsx index 77dae6e47dc..d3698959d4f 100644 --- a/src/components/Tooltip/Tooltip.stories.tsx +++ b/src/components/Tooltip/Tooltip.stories.tsx @@ -1,6 +1,6 @@ import * as React from "react" import { RiInformationLine } from "react-icons/ri" -import { Box } from "@chakra-ui/react" +import { Box, Center } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" import { expect, userEvent, waitFor, within } from "@storybook/test" @@ -49,9 +49,9 @@ const meta = { }, decorators: [ (Story) => ( -
    +
    -
    +
    ), ], } satisfies Meta @@ -64,16 +64,7 @@ export const Basic: Story = {} // for chromatic story snapshot showing the rendered popover export const OnOpen: Story = { - play: async ({ canvasElement }) => { - // Add delay for snapshot capture of the popover - const canvas = within(canvasElement) - const canvasParent = within(canvasElement.parentElement!) - - const tooltipIcon = canvas.getByTestId("tooltip-icon") - - await waitFor(async () => { - await userEvent.hover(tooltipIcon) - await expect(canvasParent.getByTestId("tooltip-popover")).toBeVisible() - }) + args: { + isOpen: true, }, } From 58c477d58aa1b5ac58bc9a639632ac68cbb246c2 Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 13 May 2024 15:49:09 +0200 Subject: [PATCH 103/366] set outside as default for scrollBehavior --- src/components/Modal/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Modal/index.tsx b/src/components/Modal/index.tsx index 077b989338d..11d2e80c59b 100644 --- a/src/components/Modal/index.tsx +++ b/src/components/Modal/index.tsx @@ -28,7 +28,7 @@ const Modal = ({ ...restProps }: ModalProps) => { return ( - + From 0737b3954f4701db934ec617a4cee6f7103e973c Mon Sep 17 00:00:00 2001 From: Maxime Servais <43566493+Maxservais@users.noreply.github.com> Date: Mon, 13 May 2024 16:37:52 +0200 Subject: [PATCH 104/366] Update index.md --- public/content/developers/docs/networks/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/public/content/developers/docs/networks/index.md b/public/content/developers/docs/networks/index.md index 5564f487538..5f708c46838 100644 --- a/public/content/developers/docs/networks/index.md +++ b/public/content/developers/docs/networks/index.md @@ -62,6 +62,7 @@ The Sepolia network uses a permissioned validator set. It's fairly new, meaning - [Alchemy Sepolia faucet](https://sepoliafaucet.com/) - [Infura Sepolia faucet](https://www.infura.io/faucet) - [Chainstack Sepolia faucet](https://faucet.chainstack.com/sepolia-faucet) +- [Ethereum Ecosystem faucet](https://www.ethereum-ecosystem.com/faucets/ethereum-sepolia) #### Goerli _(long-term support)_ {#goerli} From ed09fd78e6c51cc10954e17a3b69d088fd9ff9c2 Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 13 May 2024 16:56:30 +0200 Subject: [PATCH 105/366] update modal styles and scroll behavior --- src/@chakra-ui/components/Modal.ts | 11 +++++------ src/components/Quiz/QuizWidget/index.tsx | 2 +- src/components/Quiz/QuizzesModal.tsx | 2 +- src/components/Simulator/SimulatorModal.tsx | 2 +- src/components/Simulator/Template.tsx | 2 -- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/@chakra-ui/components/Modal.ts b/src/@chakra-ui/components/Modal.ts index df48b183513..26df14e163e 100644 --- a/src/@chakra-ui/components/Modal.ts +++ b/src/@chakra-ui/components/Modal.ts @@ -18,7 +18,7 @@ export const Modal = defineMultiStyleConfig({ dialog: { bg: "background.base", gap: "4", - padding: "8", + padding: { base: "4", sm: "8", md: "16" }, borderRadius: "base", boxShadow: "none", }, @@ -32,6 +32,7 @@ export const Modal = defineMultiStyleConfig({ closeButton: { position: "static", color: "body.base", + bg: "background.base", }, body: { padding: "0", @@ -50,15 +51,13 @@ export const Modal = defineMultiStyleConfig({ ...defaultSizes, full: { dialog: { - h: "full", - minH: "unset", - maxH: { + minH: { base: "calc(100vh - 1rem)", - md: "min(calc(100vh - 2rem), 792px)", + md: "min(calc(100vh - 1rem), 792px)", }, maxW: { base: "calc(100vw - 1rem)", - md: "min(calc(100vw - 2rem), 1000px)", + md: "min(calc(100vw - 1rem), 1000px)", }, }, }, diff --git a/src/components/Quiz/QuizWidget/index.tsx b/src/components/Quiz/QuizWidget/index.tsx index 93336a4657f..bee2fc73b3a 100644 --- a/src/components/Quiz/QuizWidget/index.tsx +++ b/src/components/Quiz/QuizWidget/index.tsx @@ -103,7 +103,7 @@ const QuizWidget = ({ const getMainContainerBg = (): StackProps["bg"] => { if (!answerStatus) { - return "background.base" + return isStandaloneQuiz ? "background.highlight" : "background.base" } if (answerStatus === "correct") { diff --git a/src/components/Quiz/QuizzesModal.tsx b/src/components/Quiz/QuizzesModal.tsx index bfdd893f3ad..639e1458274 100644 --- a/src/components/Quiz/QuizzesModal.tsx +++ b/src/components/Quiz/QuizzesModal.tsx @@ -36,7 +36,7 @@ const QuizzesModal = ({ contentProps={{ bg: getStatusColor() }} {...props} > -
    +
    {children}
    diff --git a/src/components/Simulator/SimulatorModal.tsx b/src/components/Simulator/SimulatorModal.tsx index db61619c426..73967729275 100644 --- a/src/components/Simulator/SimulatorModal.tsx +++ b/src/components/Simulator/SimulatorModal.tsx @@ -27,7 +27,7 @@ export const SimulatorModal = ({ onClose={onClose} isCentered size="full" - scrollBehavior="inside" + scrollBehavior="outside" contentProps={restProps} > {children} diff --git a/src/components/Simulator/Template.tsx b/src/components/Simulator/Template.tsx index 4617e834122..b394c1f334d 100644 --- a/src/components/Simulator/Template.tsx +++ b/src/components/Simulator/Template.tsx @@ -3,8 +3,6 @@ import { Flex, type FlexProps } from "@chakra-ui/react" export const Template = (props: FlexProps) => ( Date: Mon, 13 May 2024 13:32:26 -0400 Subject: [PATCH 106/366] revert(.storybook/preview): remove defaultViewport param --- .storybook/preview.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 5cfb45b58cd..ad60234a7b5 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -79,7 +79,6 @@ const preview: Preview = { }, } }, {}), - defaultViewport: "2xl", }, }, } From 86df54928c5043ee9830b06d812c0bc7ece4008c Mon Sep 17 00:00:00 2001 From: Daniel Lumi <149794418+zk-Lumi@users.noreply.github.com> Date: Tue, 14 May 2024 19:01:02 +0200 Subject: [PATCH 107/366] chore: add tokenlist to zksync --- src/data/layer-2/layer-2.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/data/layer-2/layer-2.ts b/src/data/layer-2/layer-2.ts index 454736aec1f..d17d53b4bd5 100644 --- a/src/data/layer-2/layer-2.ts +++ b/src/data/layer-2/layer-2.ts @@ -139,7 +139,8 @@ export const layer2Data: Rollups = { ], blockExplorer: "https://explorer.zksync.io/", ecosystemPortal: "", - tokenLists: "", + tokenLists: + "https://explorer.zksync.io/tokens", noteKey: "", purpose: ["universal"], descriptionKey: "zksync-description", From 69e8dd25304017c02be43f72b26dda97b1a78fa6 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 15 May 2024 12:13:58 +0100 Subject: [PATCH 108/366] refactor: consolidate FileContributors logic deprecate redundant CrowdinContributors and GitHubContributors components; consolidate logic to gather file contributors list into `utils/contributors.ts` and use to fetch/organize all data in getStaticProps before passing to layout/components. --- src/components/CrowdinContributors.tsx | 31 ------------------- src/components/GitHubContributors.tsx | 19 ------------ src/layouts/Docs.tsx | 34 +++++---------------- src/layouts/Tutorial.tsx | 39 +++++------------------- src/lib/api/fetchGitHistory.ts | 4 ++- src/lib/interfaces.ts | 3 +- src/lib/types.ts | 2 +- src/lib/utils/contributors.ts | 41 ++++++++++++++++++++++++++ src/lib/utils/crowdin.ts | 11 ++++++- src/lib/utils/md.ts | 5 +--- src/pages/[...slug].tsx | 29 ++++++++---------- 11 files changed, 85 insertions(+), 133 deletions(-) delete mode 100644 src/components/CrowdinContributors.tsx delete mode 100644 src/components/GitHubContributors.tsx create mode 100644 src/lib/utils/contributors.ts diff --git a/src/components/CrowdinContributors.tsx b/src/components/CrowdinContributors.tsx deleted file mode 100644 index 83a06b369bb..00000000000 --- a/src/components/CrowdinContributors.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import type { CrowdinContributor, FileContributor } from "@/lib/types" - -import FileContributors from "@/components/FileContributors" - -type CrowdinContributorsProps = { - relativePath: string - lastUpdatedDate: string - contributors: CrowdinContributor[] -} -const CrowdinContributors = ({ - lastUpdatedDate, - contributors, -}: CrowdinContributorsProps) => { - const mappedContributors: FileContributor[] = contributors.map( - ({ username, avatarUrl }) => ({ - login: username, - avatar_url: avatarUrl, - html_url: `https://crowdin.com/profile/${username}`, - date: lastUpdatedDate, - }) - ) - - return ( - - ) -} - -export default CrowdinContributors diff --git a/src/components/GitHubContributors.tsx b/src/components/GitHubContributors.tsx deleted file mode 100644 index 01f4e5f72b9..00000000000 --- a/src/components/GitHubContributors.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import type { FlexProps } from "@chakra-ui/react" - -import type { FileContributor } from "@/lib/types" - -import FileContributors from "@/components/FileContributors" - -export type GitHubContributors = FlexProps & { - lastUpdatedDate: string - contributors: FileContributor[] -} - -const GitHubContributors = ({ - lastUpdatedDate, - contributors, -}: GitHubContributors) => ( - -) - -export default GitHubContributors diff --git a/src/layouts/Docs.tsx b/src/layouts/Docs.tsx index 2bbd4ccc6dc..57348b85ce8 100644 --- a/src/layouts/Docs.tsx +++ b/src/layouts/Docs.tsx @@ -21,12 +21,11 @@ import { ButtonLink } from "@/components/Buttons" import CallToContribute from "@/components/CallToContribute" import Card from "@/components/Card" import Codeblock from "@/components/Codeblock" -import CrowdinContributors from "@/components/CrowdinContributors" import DeveloperDocsLinks from "@/components/DeveloperDocsLinks" import DocsNav from "@/components/DocsNav" import Emoji from "@/components/Emoji" import FeedbackCard from "@/components/FeedbackCard" -import GitHubContributors from "@/components/GitHubContributors" +import FileContributors from "@/components/FileContributors" import GlossaryTooltip from "@/components/Glossary/GlossaryTooltip" import InfoBanner from "@/components/InfoBanner" import Link from "@/components/Link" @@ -48,9 +47,6 @@ import YouTube from "@/components/YouTube" import { getEditPath } from "@/lib/utils/editPath" -// Utils -import { DEFAULT_LOCALE } from "@/lib/constants" - const Page = (props: ChildOnlyProp & Pick) => ( & Required> & ChildOnlyProp & { @@ -217,20 +212,13 @@ export const DocsLayout = ({ slug, tocItems, lastUpdatedDate, - crowdinContributors, + contributors, contentNotTranslated, - gitContributors, }: DocsLayoutProps) => { const isPageIncomplete = !!frontmatter.incomplete const { asPath: relativePath } = useRouter() const absoluteEditPath = getEditPath(relativePath) - const gitHubLastEdit = gitContributors[0]?.date - const intlLastEdit = gitHubLastEdit || lastUpdatedDate - - const useGitHubContributors = - frontmatter.lang === DEFAULT_LOCALE || crowdinContributors.length === 0 - return ( @@ -243,18 +231,10 @@ export const DocsLayout = ({

    {frontmatter.title}

    - {useGitHubContributors ? ( - - ) : ( - - )} + const ContentContainer = (props: ContentContainerProps) => { @@ -157,13 +154,7 @@ export const tutorialsComponents = { YouTube, } type TutorialLayoutProps = ChildOnlyProp & - Pick< - MdPageContent, - | "tocItems" - | "crowdinContributors" - | "contentNotTranslated" - | "gitContributors" - > & + Pick & Required> & { frontmatter: TutorialFrontmatter timeToRead: number @@ -175,19 +166,13 @@ export const TutorialLayout = ({ tocItems, timeToRead, lastUpdatedDate, - crowdinContributors, + contributors, contentNotTranslated, - gitContributors, }: TutorialLayoutProps) => { const { asPath: relativePath } = useRouter() const absoluteEditPath = getEditPath(relativePath) const borderColor = useToken("colors", "border") - const gitHubLastEdit = gitContributors[0]?.date - const intlLastEdit = gitHubLastEdit || lastUpdatedDate - - const useGitHubContributors = - frontmatter.lang === DEFAULT_LOCALE || crowdinContributors.length === 0 return ( <> @@ -209,18 +194,10 @@ export const TutorialLayout = ({ pt={8} /> {children} - {useGitHubContributors ? ( - - ) : ( - - )} + {tocItems && ( diff --git a/src/lib/api/fetchGitHistory.ts b/src/lib/api/fetchGitHistory.ts index 1dfb9a929c9..931e2b8be10 100644 --- a/src/lib/api/fetchGitHistory.ts +++ b/src/lib/api/fetchGitHistory.ts @@ -49,7 +49,9 @@ async function fetchWithRateLimit( } // Fetch commit history and save it to a JSON file -export const fetchAndCacheGitContributors = async (mdDir: string) => { +export const fetchAndCacheGitContributors = async ( + mdDir: string +): Promise => { const filepath = join("/", mdDir, "index.md") // Load cache diff --git a/src/lib/interfaces.ts b/src/lib/interfaces.ts index 7a4b76afe90..5a539d313c0 100644 --- a/src/lib/interfaces.ts +++ b/src/lib/interfaces.ts @@ -107,8 +107,7 @@ export interface MdPageContent { tocItems: ToCItem[] lastUpdatedDate?: string contentNotTranslated: boolean - crowdinContributors: CrowdinContributor[] - gitContributors: FileContributor[] + contributors: FileContributor[] } // Local environment framework diff --git a/src/lib/types.ts b/src/lib/types.ts index 06a32879a38..d1eb843bc6f 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -374,7 +374,7 @@ export type FileContributor = { login: string avatar_url: string html_url: string - date: string + date?: string } /** diff --git a/src/lib/utils/contributors.ts b/src/lib/utils/contributors.ts new file mode 100644 index 00000000000..db165d272b0 --- /dev/null +++ b/src/lib/utils/contributors.ts @@ -0,0 +1,41 @@ +import type { FileContributor, Lang, Layout } from "@/lib/types" + +import { DEFAULT_LOCALE } from "@/lib/constants" + +import { + convertToFileContributorFromCrowdin, + getCrowdinContributors, +} from "./crowdin" +import { getLastModifiedDate } from "./gh" + +import { fetchAndCacheGitContributors } from "@/lib/api/fetchGitHistory" + +export const getFileContributorInfo = async ( + mdDir: string, + mdPath: string, + slug: string, + locale: string, + fileLang: string, + layout: Layout +) => { + const gitContributors = await fetchAndCacheGitContributors(mdDir) + + const latestCommitDate = getLastModifiedDate(slug, locale!) + const gitHubLastEdit = gitContributors[0]?.date + const lastUpdatedDate = gitHubLastEdit || latestCommitDate + + const crowdinContributors = ["docs", "tutorial"].includes(layout) + ? convertToFileContributorFromCrowdin( + getCrowdinContributors(mdPath, locale as Lang) + ) + : [] + + const useGitHubContributors: boolean = + fileLang === DEFAULT_LOCALE || crowdinContributors.length === 0 + + const contributors: FileContributor[] = useGitHubContributors + ? gitContributors + : crowdinContributors + + return { contributors, lastUpdatedDate } +} diff --git a/src/lib/utils/crowdin.ts b/src/lib/utils/crowdin.ts index 47a909f2e37..9da6717b48b 100644 --- a/src/lib/utils/crowdin.ts +++ b/src/lib/utils/crowdin.ts @@ -1,4 +1,4 @@ -import type { CrowdinContributor, Lang } from "@/lib/types" +import type { CrowdinContributor, FileContributor, Lang } from "@/lib/types" import translators from "@/data/crowdin/combined-translators.json" import fileIds from "@/data/crowdin/file-ids.json" @@ -22,3 +22,12 @@ export const getCrowdinContributors = ( const data = translators.filter(({ lang }) => lang === locale)[0]?.data ?? [] return data.filter(({ fileId }) => +fileId === _fileId)[0]?.contributors ?? [] } + +export const convertToFileContributorFromCrowdin = ( + contributors: CrowdinContributor[] +): FileContributor[] => + contributors.map(({ username, avatarUrl }) => ({ + login: username, + avatar_url: avatarUrl, + html_url: `https://crowdin.com/profile/${username}`, + })) diff --git a/src/lib/utils/md.ts b/src/lib/utils/md.ts index 2d1180f31be..79c66753cd7 100644 --- a/src/lib/utils/md.ts +++ b/src/lib/utils/md.ts @@ -332,10 +332,7 @@ export const getContentBySlug = (slug: string) => { const fileContents = fs.readFileSync(fullPath, "utf8") const { data, content } = matter(fileContents) const frontmatter = data as Frontmatter - const items: Omit< - MdPageContent, - "tocItems" | "crowdinContributors" | "gitContributors" - > = { + const items: Omit = { slug, content, frontmatter, diff --git a/src/pages/[...slug].tsx b/src/pages/[...slug].tsx index a726caa8ac9..de518fb199c 100644 --- a/src/pages/[...slug].tsx +++ b/src/pages/[...slug].tsx @@ -26,10 +26,9 @@ import type { import mdComponents from "@/components/MdComponents" import PageMetadata from "@/components/PageMetadata" -import { getCrowdinContributors } from "@/lib/utils/crowdin" +import { getFileContributorInfo } from "@/lib/utils/contributors" import { dateToString } from "@/lib/utils/date" import { getLastDeployDate } from "@/lib/utils/getLastDeployDate" -import { getLastModifiedDate } from "@/lib/utils/gh" import { getContent, getContentBySlug } from "@/lib/utils/md" import { runOnlyOnce } from "@/lib/utils/runOnlyOnce" import { remapTableOfContents } from "@/lib/utils/toc" @@ -55,7 +54,6 @@ import { UseCasesLayout, } from "@/layouts" import { fetchGFIs } from "@/lib/api/fetchGFIs" -import { fetchAndCacheGitContributors } from "@/lib/api/fetchGitHistory" import rehypeHeadingIds from "@/lib/rehype/rehypeHeadingIds" import rehypeImg from "@/lib/rehype/rehypeImg" import remarkInferToc from "@/lib/rehype/remarkInferToc" @@ -154,7 +152,6 @@ export const getStaticProps = (async (context) => { const timeToRead = readingTime(markdown.content) const tocItems = remapTableOfContents(tocNodeItems, mdxSource.compiledSource) const slug = `/${params.slug.join("/")}/` - const lastUpdatedDate = getLastModifiedDate(slug, locale!) const lastDeployDate = getLastDeployDate() // Get corresponding layout @@ -173,15 +170,18 @@ export const getStaticProps = (async (context) => { } } - const crowdinContributors = ["docs", "tutorial"].includes(layout) - ? getCrowdinContributors(mdPath, locale as Lang) - : [] - const requiredNamespaces = getRequiredNamespacesForPage(slug, layout) - const gfissues = await gfIssuesDataFetch() + const { contributors, lastUpdatedDate } = await getFileContributorInfo( + mdDir, + mdPath, + slug, + locale!, + frontmatter.lang, + layout + ) - const gitContributors = await fetchAndCacheGitContributors(mdDir) + const gfissues = await gfIssuesDataFetch() return { props: { @@ -195,9 +195,8 @@ export const getStaticProps = (async (context) => { layout, timeToRead: Math.round(timeToRead.minutes), tocItems, - crowdinContributors, + contributors, gfissues, - gitContributors, }, } }) satisfies GetStaticProps @@ -231,9 +230,8 @@ ContentPage.getLayout = (page) => { layout, timeToRead, tocItems, - crowdinContributors, + contributors, contentNotTranslated, - gitContributors, } = page.props const layoutProps = { @@ -242,9 +240,8 @@ ContentPage.getLayout = (page) => { lastUpdatedDate, timeToRead, tocItems, - crowdinContributors, + contributors, contentNotTranslated, - gitContributors, } const Layout = layoutMapping[layout] From a602bad9d807b6837c2ab75ce476c790aec50f57 Mon Sep 17 00:00:00 2001 From: Franklin Ohaegbulam <46662771+frankiefab100@users.noreply.github.com> Date: Wed, 15 May 2024 12:18:57 +0100 Subject: [PATCH 109/366] Update zero knowledge proofs index.md Resolves #11744 - Add new resource to the Further reading section --- public/content/zero-knowledge-proofs/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/public/content/zero-knowledge-proofs/index.md b/public/content/zero-knowledge-proofs/index.md index a78ca4b9305..e33b244b515 100644 --- a/public/content/zero-knowledge-proofs/index.md +++ b/public/content/zero-knowledge-proofs/index.md @@ -210,3 +210,5 @@ ZK-STARK is considered immune to the threat of quantum computing, as it only rel - [zk-SNARKs — A Realistic Zero-Knowledge Example and Deep Dive](https://medium.com/coinmonks/zk-snarks-a-realistic-zero-knowledge-example-and-deep-dive-c5e6eaa7131c) — _Adam Luciano_ - [ZK-STARKs — Create Verifiable Trust, even against Quantum Computers](https://medium.com/coinmonks/zk-starks-create-verifiable-trust-even-against-quantum-computers-dd9c6a2bb13d) — _Adam Luciano_ - [An approximate introduction to how zk-SNARKs are possible](https://vitalik.eth.limo/general/2021/01/26/snarks.html) — _Vitalik Buterin_ +- [Why Zero Knowledge Proofs (ZKPs) is a Game Changer for Self-Sovereign Identity](https://frankiefab.hashnode.dev/why-zero-knowledge-proofs-zkps-is-a-game-changer-for-self-sovereign-identity) — _Franklin Ohaegbulam_ + From 350072552cd922abb4cb69b751f2f16333d51f35 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 15 May 2024 16:38:22 +0100 Subject: [PATCH 110/366] chore: rm unused prop --- src/components/FileContributors.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/FileContributors.tsx b/src/components/FileContributors.tsx index 852ef6c83f2..2fd1e2ca90d 100644 --- a/src/components/FileContributors.tsx +++ b/src/components/FileContributors.tsx @@ -46,7 +46,6 @@ const Contributor = ({ contributor }: ContributorProps) => ( ) export type FileContributorsProps = FlexProps & { - editPath?: string contributors: FileContributor[] lastEdit: string } From 329e2bdf1ea28f7c47c7dfaf75b4bbe7e65a25dd Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Fri, 17 May 2024 01:13:07 -0400 Subject: [PATCH 111/366] refactor: sync existing stories with docs --- .storybook/i18next.ts | 4 +- .storybook/theme.ts | 1 + .storybook/utils.ts | 25 +++++++ src/components/Alert/Alert.stories.tsx | 2 + .../BaseStories/Accordion.stories.tsx | 8 +- .../BaseStories/Checkbox.stories.tsx | 57 +++++++++----- src/components/BaseStories/Link.stories.tsx | 16 ++-- src/components/BaseStories/Switch.stories.tsx | 4 +- src/components/BaseStories/Text.stories.tsx | 19 ++--- .../Breadcrumbs/Breadcrumbs.stories.tsx | 4 +- src/components/Card/Card.stories.tsx | 52 +++++++------ .../FeedbackWidget/FeedbackWidget.stories.tsx | 9 +-- .../Hero/ContentHero/ContentHero.stories.tsx | 66 ++++++++--------- .../Hero/HomeHero/HomeHero.stories.tsx | 6 +- .../Hero/HubHero/HubHero.stories.tsx | 74 +++++++------------ .../Hero/MdxHero/MdxHero.stories.tsx | 8 +- src/components/Input/Input.stories.tsx | 14 ++-- src/components/Select/Select.stories.tsx | 4 +- src/components/Stat/Stat.stories.tsx | 6 +- .../Table/stories/Table.stories.tsx | 2 +- src/components/Tag/Tag.stories.tsx | 33 +++++---- src/components/Tooltip/Tooltip.stories.tsx | 4 +- src/components/icons/Icons.stories.tsx | 12 ++- tsconfig.json | 5 +- yarn.lock | 2 +- 25 files changed, 228 insertions(+), 209 deletions(-) create mode 100644 .storybook/utils.ts diff --git a/.storybook/i18next.ts b/.storybook/i18next.ts index 610c3328635..68c587d840a 100644 --- a/.storybook/i18next.ts +++ b/.storybook/i18next.ts @@ -10,7 +10,7 @@ export const baseLocales = { } // Only i18n files named in this array are being exposed to Storybook. Add filenames as necessary. -const ns = [ +export const ns = [ "common", "glossary", "page-about", @@ -18,7 +18,7 @@ const ns = [ "page-learn", "page-upgrades", "page-developers-index", -] +] as const const supportedLngs = Object.keys(baseLocales) /** diff --git a/.storybook/theme.ts b/.storybook/theme.ts index a55d128fecf..8ab436d2aee 100644 --- a/.storybook/theme.ts +++ b/.storybook/theme.ts @@ -11,6 +11,7 @@ export default create({ appBorderRadius: 4, brandTitle: "Ethereum.org", + // @ts-ignore brandImage, brandUrl: "https://www.ethereum.org", diff --git a/.storybook/utils.ts b/.storybook/utils.ts new file mode 100644 index 00000000000..d69db71b6df --- /dev/null +++ b/.storybook/utils.ts @@ -0,0 +1,25 @@ +import { getI18n } from "react-i18next" +import { ns as exposedNs } from "./i18next" + +/** + * Get translations using the `getI18n` method. + * + * Only requires the key and optionally the namespace. + * + * Used for Stories where it is invalid to use the `useTranslation` hook in + * the `render` function. + * + * The `ns` param is also typed with the namespaces that are exposed in + * storybook. + * + * @param key - The key to translate. + * @param ns - The exposed namespace. + * @returns The translated string. + */ +export const getTranslation = ( + key: string, + ns?: (typeof exposedNs)[number] +) => { + const { t } = getI18n() + return t(key, { ns }) +} diff --git a/src/components/Alert/Alert.stories.tsx b/src/components/Alert/Alert.stories.tsx index 53b697b616c..55e82df8758 100644 --- a/src/components/Alert/Alert.stories.tsx +++ b/src/components/Alert/Alert.stories.tsx @@ -27,6 +27,7 @@ const STATUSES = ["error", "success", "warning", "info"] as const export const StatusVariants: Story = { args: { description: DEMO_DESC, + // To show the close button onClose: () => {}, }, render: (args) => ( @@ -54,6 +55,7 @@ export const ContentVariants: Story = { export const StyleVariants: Story = { args: { description: DEMO_DESC, + // To show the close button onClose: () => {}, }, argTypes: { diff --git a/src/components/BaseStories/Accordion.stories.tsx b/src/components/BaseStories/Accordion.stories.tsx index 384f0a1da3c..fc3c9f50ee1 100644 --- a/src/components/BaseStories/Accordion.stories.tsx +++ b/src/components/BaseStories/Accordion.stories.tsx @@ -8,9 +8,7 @@ import { } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" -type AccordionType = typeof Accordion - -const meta: Meta = { +const meta = { title: "Molecules / Disclosure Content / Accordions", component: Accordion, decorators: [ @@ -20,11 +18,11 @@ const meta: Meta = { ), ], -} satisfies Meta +} satisfies Meta export default meta -type Story = StoryObj +type Story = StoryObj export const Basic: Story = { render: () => ( diff --git a/src/components/BaseStories/Checkbox.stories.tsx b/src/components/BaseStories/Checkbox.stories.tsx index b539ed87040..52666cab2f5 100644 --- a/src/components/BaseStories/Checkbox.stories.tsx +++ b/src/components/BaseStories/Checkbox.stories.tsx @@ -2,9 +2,10 @@ import * as React from "react" import { Checkbox as CheckboxComponent, CheckboxGroup, + type CheckboxProps, VStack, } from "@chakra-ui/react" -import { Meta } from "@storybook/react" +import { Meta, type StoryObj } from "@storybook/react" const meta = { title: "Atoms / Form / Checkbox", @@ -21,26 +22,46 @@ export default meta const DEFAULT_VAL = "checked" -export const Checkbox = { +const checkboxDataSet: CheckboxProps[] = [ + { + value: DEFAULT_VAL, + children: "defaultValue", + }, + { + value: "disabled", + isDisabled: true, + children: "isDisabled", + }, + { + value: "focusable", + isFocusable: true, + isDisabled: true, + children: "isFocusable", + }, + { + value: "read-only", + isReadOnly: true, + children: "isReadOnly", + }, + { + value: "required", + isRequired: true, + children: "isRequired", + }, + { + value: "invalid", + isInvalid: true, + children: "isInvalid", + }, +] + +export const Checkbox: StoryObj = { render: () => ( - defaultValue - - isDisabled - - - isFocusable - - - isReadOnly - - - isRequired - - - isInvalid - + {checkboxDataSet.map((props) => ( + + ))} ), diff --git a/src/components/BaseStories/Link.stories.tsx b/src/components/BaseStories/Link.stories.tsx index 0bd6c89b0d0..f76526c7551 100644 --- a/src/components/BaseStories/Link.stories.tsx +++ b/src/components/BaseStories/Link.stories.tsx @@ -20,30 +20,30 @@ export default meta type Story = StoryObj -const MockParagraph = ({ to }: { to?: string }) => ( +const MockParagraph = ({ href }: { href: string }) => ( Text body normal. Ethereum is open access to digital money and data-friendly services for everyone – no matter your background or location. - It's a community-built technology behind the + It's a community-built technology behind the cryptocurrency ether (ETH) and thousands of applications you can use today. ) export const InternalLink: Story = { args: { - to: "#", + href: "#", }, - render: (args) => , + render: (args) => , } export const ExternalLink: Story = { args: { - to: "https://example.com", + href: "https://example.com", }, - render: (args) => , + render: (args) => , } -export const LinkList = { +export const LinkList: Story = { render: () => ( @@ -57,7 +57,7 @@ export const LinkList = { {Array.from({ length: 9 }).map((_, idx) => ( {`List Item ${idx % 2 === 0 ? "External" : "Internal"} ${ idx + 1 }`} diff --git a/src/components/BaseStories/Switch.stories.tsx b/src/components/BaseStories/Switch.stories.tsx index c81e08cb2ba..5c3274d3643 100644 --- a/src/components/BaseStories/Switch.stories.tsx +++ b/src/components/BaseStories/Switch.stories.tsx @@ -1,6 +1,6 @@ import * as React from "react" import { SimpleGrid, Switch as SwitchComponent } from "@chakra-ui/react" -import { Meta } from "@storybook/react" +import { Meta, type StoryObj } from "@storybook/react" const meta = { title: "Atoms / Form / Switch", @@ -15,7 +15,7 @@ const meta = { export default meta -export const Switch = { +export const Switch: StoryObj = { render: () => ( isChecked: diff --git a/src/components/BaseStories/Text.stories.tsx b/src/components/BaseStories/Text.stories.tsx index ce756aecb43..d0351004964 100644 --- a/src/components/BaseStories/Text.stories.tsx +++ b/src/components/BaseStories/Text.stories.tsx @@ -1,21 +1,12 @@ import * as React from "react" -import { - Box, - Center, - Flex, - Link as ChakraLink, - Stack, - Text, - VStack, -} from "@chakra-ui/react" +import { Box, Center, Flex, Stack, Text, VStack } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" import components from "@/@chakra-ui/components" +import LinkComponent from "../Link" import Translation from "../Translation" -type TextType = typeof Text - const meta = { title: "Atoms / Typography / Text", component: Text, @@ -41,7 +32,7 @@ const meta = {
    ), ], -} satisfies Meta +} satisfies Meta export default meta @@ -130,7 +121,7 @@ export const Italic: Story = { }, } -export const Link: StoryObj = { +export const Link: StoryObj = { args: { children: SINGLE_TEXT_CHILD, }, @@ -147,7 +138,7 @@ export const Link: StoryObj = { {key} - +
    ))} diff --git a/src/components/Breadcrumbs/Breadcrumbs.stories.tsx b/src/components/Breadcrumbs/Breadcrumbs.stories.tsx index 9d2ce9cdd15..b8832f65f65 100644 --- a/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +++ b/src/components/Breadcrumbs/Breadcrumbs.stories.tsx @@ -1,6 +1,6 @@ import * as React from "react" import { Stack } from "@chakra-ui/react" -import { Meta } from "@storybook/react" +import { Meta, type StoryObj } from "@storybook/react" import BreadcrumbsComponent from "." @@ -11,7 +11,7 @@ const meta = { export default meta -export const Breadcrumbs = { +export const Breadcrumbs: StoryObj = { render: () => ( diff --git a/src/components/Card/Card.stories.tsx b/src/components/Card/Card.stories.tsx index 5adf8532429..d3b3941ab3f 100644 --- a/src/components/Card/Card.stories.tsx +++ b/src/components/Card/Card.stories.tsx @@ -1,13 +1,14 @@ -import { useTranslation } from "next-i18next" import { Box } from "@chakra-ui/react" -import { Meta, StoryFn } from "@storybook/react" +import { Meta, type StoryObj } from "@storybook/react" import { Button } from "@/components/Buttons" -import Card, { CardProps } from "." +import CardComponent, { CardProps } from "." -export default { - component: Card, +import { getTranslation } from "@/storybook-utils" + +const meta = { + component: CardComponent, decorators: [ (Story) => ( @@ -15,20 +16,29 @@ export default { ), ], -} as Meta - -export const Default: StoryFn = (args) => { - const { t } = useTranslation("page-developers-index") - - const defaultProps: CardProps = { - emoji: ":woman_student:", - title: t("page-developers-learn"), - description: t("page-developers-learn-desc"), - } - - return ( - - - - ) +} satisfies Meta + +export default meta + +const DEVELOPS_INDEX_NS = "page-developers-index" + +export const Card: StoryObj = { + render: (args) => { + const defaultProps: CardProps = { + emoji: ":woman_student:", + title: getTranslation("page-developers-learn", DEVELOPS_INDEX_NS), + description: getTranslation( + "page-developers-learn-desc", + DEVELOPS_INDEX_NS + ), + } + + return ( + + + + ) + }, } diff --git a/src/components/FeedbackWidget/FeedbackWidget.stories.tsx b/src/components/FeedbackWidget/FeedbackWidget.stories.tsx index 273fcd627bf..aa61f75d467 100644 --- a/src/components/FeedbackWidget/FeedbackWidget.stories.tsx +++ b/src/components/FeedbackWidget/FeedbackWidget.stories.tsx @@ -4,13 +4,12 @@ import { Meta, StoryObj } from "@storybook/react" import FeedbackWidgetComponent from "./" -type FeedbackWidgetType = typeof FeedbackWidgetComponent - const meta = { title: "FeedbackWidget", parameters: { layout: "fullscreen", }, + component: FeedbackWidgetComponent, decorators: [ (Story) => ( @@ -19,10 +18,8 @@ const meta = { ), ], -} satisfies Meta +} satisfies Meta export default meta -export const FeedbackWidget: StoryObj = { - render: () => , -} +export const FeedbackWidget: StoryObj = {} diff --git a/src/components/Hero/ContentHero/ContentHero.stories.tsx b/src/components/Hero/ContentHero/ContentHero.stories.tsx index 9ab05bf9c90..2ecec7c7599 100644 --- a/src/components/Hero/ContentHero/ContentHero.stories.tsx +++ b/src/components/Hero/ContentHero/ContentHero.stories.tsx @@ -1,11 +1,9 @@ -import { useTranslation } from "next-i18next" import { Meta, StoryObj } from "@storybook/react" -import ContentHeroComponent, { ContentHeroProps } from "." +import ContentHeroComponent from "." import contentHeroImg from "@/public/mainnet.png" - -type ContentHeroType = typeof ContentHeroComponent +import { getTranslation } from "@/storybook-utils" const meta = { title: "Organisms / Layouts / Hero", @@ -20,42 +18,38 @@ const meta = { }, }, }, -} satisfies Meta +} satisfies Meta export default meta -export const ContentHero: StoryObj = { - render: () => { - // eslint-disable-next-line react-hooks/rules-of-hooks - const { t } = useTranslation("page-learn") +const LEARN_NS = "page-learn" - const buttons: ContentHeroProps["buttons"] = [ - { - content: t("hero-button-lets-get-started"), - toId: "what-is-crypto-ethereum", - matomo: { - eventCategory: "learn hub hero buttons", - eventAction: "click", - eventName: "lets get started", +export const ContentHero: StoryObj = { + render: () => ( + - ) - }, + ]} + /> + ), } diff --git a/src/components/Hero/HomeHero/HomeHero.stories.tsx b/src/components/Hero/HomeHero/HomeHero.stories.tsx index e1439b231f5..225d84213d8 100644 --- a/src/components/Hero/HomeHero/HomeHero.stories.tsx +++ b/src/components/Hero/HomeHero/HomeHero.stories.tsx @@ -1,10 +1,7 @@ -import * as React from "react" import { Meta, StoryObj } from "@storybook/react" import HomeHeroComponent from "." -type HomeHeroType = typeof HomeHeroComponent - const meta = { title: "Organisms / Layouts / Hero", component: HomeHeroComponent, @@ -18,7 +15,7 @@ const meta = { }, }, }, -} satisfies Meta +} satisfies Meta export default meta @@ -28,5 +25,4 @@ export const HomeHero: StoryObj = { args: { heroImg: homeHeroImg, }, - render: (args) => , } diff --git a/src/components/Hero/HubHero/HubHero.stories.tsx b/src/components/Hero/HubHero/HubHero.stories.tsx index 9de985b4459..cf32c768a8d 100644 --- a/src/components/Hero/HubHero/HubHero.stories.tsx +++ b/src/components/Hero/HubHero/HubHero.stories.tsx @@ -1,15 +1,11 @@ import * as React from "react" -import { useTranslation } from "next-i18next" import { Box } from "@chakra-ui/react" import { Meta, StoryObj } from "@storybook/react" -import { CommonHeroProps } from "@/lib/types" - import HubHeroComponent from "./" import learnHubHeroImg from "@/public/heroes/learn-hub-hero.png" - -type HubHeroType = typeof HubHeroComponent +import { getTranslation } from "@/storybook-utils" const meta = { title: "Organisms / Layouts / Hero", @@ -24,50 +20,36 @@ const meta = {
    ), ], -} satisfies Meta +} satisfies Meta export default meta -export const HubHero: StoryObj = { - args: { - title: "common:learn-hub", - header: "page-learn:hero-header", - description: "page-learn:hero-subtitle", - heroImg: learnHubHeroImg, - }, - - render: ({ title, header, description, ...props }) => { - // eslint-disable-next-line react-hooks/rules-of-hooks - const { t } = useTranslation() - - const buttons: CommonHeroProps["buttons"] = [ - { - content: t("page-learn:hero-button-lets-get-started"), - toId: "what-is-crypto-ethereum", - matomo: { - eventCategory: "learn hub hero buttons", - eventAction: "click", - eventName: "lets get started", +export const HubHero: StoryObj = { + render: () => ( + - ) - }, + ]} + /> + ), } diff --git a/src/components/Hero/MdxHero/MdxHero.stories.tsx b/src/components/Hero/MdxHero/MdxHero.stories.tsx index b54689da8bc..1f6fd311c6e 100644 --- a/src/components/Hero/MdxHero/MdxHero.stories.tsx +++ b/src/components/Hero/MdxHero/MdxHero.stories.tsx @@ -3,10 +3,9 @@ import { Meta, StoryObj } from "@storybook/react" import MdxHeroComponent from "./" -type MdxHeroType = typeof MdxHeroComponent - const meta = { title: "Organisms / Layouts / Hero", + component: MdxHeroComponent, parameters: { layout: "none", }, @@ -17,14 +16,13 @@ const meta = { ), ], -} satisfies Meta +} satisfies Meta export default meta -export const MdxHero: StoryObj = { +export const MdxHero: StoryObj = { args: { breadcrumbs: { slug: "/en/staking/solo/" }, title: "Solo stake your Eth", }, - render: (args) => , } diff --git a/src/components/Input/Input.stories.tsx b/src/components/Input/Input.stories.tsx index 5c9f240408f..74fb88a0336 100644 --- a/src/components/Input/Input.stories.tsx +++ b/src/components/Input/Input.stories.tsx @@ -5,20 +5,20 @@ import { Meta, StoryObj } from "@storybook/react" import Input from "." -type InputType = typeof Input - const meta = { title: "Atoms / Form / Input", component: Input, -} satisfies Meta + args: { + rightIcon: , + }, +} satisfies Meta export default meta -type Story = StoryObj +type Story = StoryObj export const Sizes: Story = { args: { - rightIcon: , placeholder: "Search", }, render: (args) => ( @@ -35,9 +35,9 @@ export const ElementVariations: Story = { }, render: (args) => ( + - } /> - } isDisabled /> + ), } diff --git a/src/components/Select/Select.stories.tsx b/src/components/Select/Select.stories.tsx index 595bb299fe9..48e35ad2b28 100644 --- a/src/components/Select/Select.stories.tsx +++ b/src/components/Select/Select.stories.tsx @@ -3,8 +3,6 @@ import { Meta, StoryObj } from "@storybook/react" import Select from "." -type SelectType = typeof Select - const meta = { title: "Atoms / Form / Dropdown", component: Select, @@ -15,7 +13,7 @@ const meta = { ), ], -} satisfies Meta +} satisfies Meta export default meta diff --git a/src/components/Stat/Stat.stories.tsx b/src/components/Stat/Stat.stories.tsx index 644c8be29d9..b11c10953ac 100644 --- a/src/components/Stat/Stat.stories.tsx +++ b/src/components/Stat/Stat.stories.tsx @@ -9,7 +9,9 @@ const meta = { export default meta -export const Stat: StoryObj = { +type Story = StoryObj + +export const Stat: Story = { args: { tooltipProps: { content: "Tooltip content", @@ -27,7 +29,7 @@ export const Stat: StoryObj = { }, } -export const StatError: StoryObj = { +export const StatError: Story = { args: { ...Stat.args, isError: true, diff --git a/src/components/Table/stories/Table.stories.tsx b/src/components/Table/stories/Table.stories.tsx index ce3ae55a0bf..be581d9b84d 100644 --- a/src/components/Table/stories/Table.stories.tsx +++ b/src/components/Table/stories/Table.stories.tsx @@ -40,7 +40,7 @@ export const Tables: Story = { ), } -export const MockDocContent = { +export const MockDocContent: StoryObj = { render: () => ( <> diff --git a/src/components/Tag/Tag.stories.tsx b/src/components/Tag/Tag.stories.tsx index 5fde2ea1477..af921806999 100644 --- a/src/components/Tag/Tag.stories.tsx +++ b/src/components/Tag/Tag.stories.tsx @@ -9,6 +9,9 @@ import Tag, { EthTagProps } from "." const meta = { title: "Molecules / Display Content / Tags", component: Tag, + args: { + label: "Tag Name", + }, } satisfies Meta export default meta @@ -39,46 +42,44 @@ const StyleVariantList = (args: EthTagProps) => ( ) -export const StyleVariantsBasic = { - render: () => ( +export const StyleVariantsBasic: Story = { + args: { + isCloseable: true, + }, + render: (args) => ( Click anywhere in the whitespace and then tab to see the button styling on `:focus-visible` - + ), } -export const StyleVariantsAsLinks = { - render: () => ( +export const StyleVariantsAsLinks: Story = { + render: (args) => ( They are all rendered as links to hover, click, and focus - + ), } export const ElementVariants: Story = { args: { - label: "", status: "tag", }, render: (args) => ( - + - - - - + + + + ), diff --git a/src/components/Tooltip/Tooltip.stories.tsx b/src/components/Tooltip/Tooltip.stories.tsx index e0b95a5c677..96082280b20 100644 --- a/src/components/Tooltip/Tooltip.stories.tsx +++ b/src/components/Tooltip/Tooltip.stories.tsx @@ -9,8 +9,6 @@ import Translation from "../Translation" // TODO: remove `index` when we delete the old tooltip import TooltipComponent from "./index" -type TooltipType = typeof TooltipComponent - const TooltipContent = () => (
    {" "} @@ -29,7 +27,7 @@ const meta = { ), }, -} satisfies Meta +} satisfies Meta export default meta diff --git a/src/components/icons/Icons.stories.tsx b/src/components/icons/Icons.stories.tsx index e410321a36d..b65d1045886 100644 --- a/src/components/icons/Icons.stories.tsx +++ b/src/components/icons/Icons.stories.tsx @@ -1,5 +1,6 @@ import * as React from "react" -import { Center, Flex, SimpleGrid } from "@chakra-ui/react" +import { Center, Flex, Icon, SimpleGrid } from "@chakra-ui/react" +import type { Meta, StoryObj } from "@storybook/react" import { EthHomeIcon } from "./EthHomeIcon" import { FeedbackGlyphIcon } from "./FeedbackGlyphIcon" @@ -89,9 +90,12 @@ import { WithdrawCryptoIcon, } from "./wallets" -export default { +const meta = { + component: Icon, title: "Atoms / Media & Icons / Icons", -} +} satisfies Meta + +export default meta const iconsDefinitions = [ CorrectIcon, @@ -195,7 +199,7 @@ const items = iconsDefinitions.map((IconDef) => ( )) -export const Icons = { +export const Icons: StoryObj = { render: () => { return {items} }, diff --git a/tsconfig.json b/tsconfig.json index cdb435001a4..f417cf7d583 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,9 +17,10 @@ "incremental": true, "paths": { "@/*": ["./src/*"], - "@/public/*": ["./public/*"] + "@/public/*": ["./public/*"], + "@/storybook-utils": ["./.storybook/utils.ts"] } }, - "include": ["./src/**/*", "next-env.d.ts", "**/*.ts", "**/*.tsx"], + "include": ["./src/**/*", "next-env.d.ts", "**/*.ts", "**/*.tsx", "./.storybook/**/*"], "exclude": ["node_modules", "./public", "./src/intl"] } diff --git a/yarn.lock b/yarn.lock index a5648ccb12d..8d2a3fcfa54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13110,7 +13110,7 @@ ts-pnp@^1.1.6: resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== -tsconfig-paths-webpack-plugin@^4.0.1, tsconfig-paths-webpack-plugin@^4.1.0: +tsconfig-paths-webpack-plugin@4.1.0, tsconfig-paths-webpack-plugin@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz#3c6892c5e7319c146eee1e7302ed9e6f2be4f763" integrity sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA== From a5b842b96025cae004d0fbe470415caf78336a71 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Fri, 17 May 2024 09:13:18 -0400 Subject: [PATCH 112/366] chore(.storybook/manager): ignore favicon type error --- .storybook/manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.storybook/manager.ts b/.storybook/manager.ts index ca570b21dc6..b9378294bba 100644 --- a/.storybook/manager.ts +++ b/.storybook/manager.ts @@ -1,6 +1,5 @@ import { addons } from "@storybook/manager-api" import theme from "./theme" -// @ts-ignore import favicon from "../public/favicon.png" addons.setConfig({ @@ -10,5 +9,6 @@ addons.setConfig({ // In order to override the default favicon, and inject a data hash link to the png const link = document.createElement("link") link.setAttribute("rel", "shortcut icon") +// @ts-ignore link.setAttribute("href", favicon) document.head.appendChild(link) From 58d5cbc7933d8b39f81eaf0680af411a2b50377e Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Sat, 18 May 2024 19:24:41 +0100 Subject: [PATCH 113/366] testing: action run --- .github/workflows/get-translations.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/get-translations.yml b/.github/workflows/get-translations.yml index 0d82516cd60..f27ac6f7c28 100644 --- a/.github/workflows/get-translations.yml +++ b/.github/workflows/get-translations.yml @@ -4,6 +4,10 @@ on: schedule: - cron: "20 4 1 * *" # Runs at 4:20 AM on the first day of every month workflow_dispatch: # Can be dispatched manually + # For testing purposes only; remove for production + push: + branch: + - crowdin-ci-test-2 jobs: create_approved_language_bucket_prs: From b7681d4b3ac750ea641fe5bb780377067c15e900 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Sat, 18 May 2024 22:43:02 +0100 Subject: [PATCH 114/366] fix: workflow details --- .github/workflows/{get-translations.yml => crowdin-ci.yml} | 4 ---- 1 file changed, 4 deletions(-) rename .github/workflows/{get-translations.yml => crowdin-ci.yml} (95%) diff --git a/.github/workflows/get-translations.yml b/.github/workflows/crowdin-ci.yml similarity index 95% rename from .github/workflows/get-translations.yml rename to .github/workflows/crowdin-ci.yml index f27ac6f7c28..547f14a9002 100644 --- a/.github/workflows/get-translations.yml +++ b/.github/workflows/crowdin-ci.yml @@ -41,10 +41,6 @@ jobs: - name: Fetch latest dev run: git fetch origin dev - - name: Authenticate GitHub CLI - run: | - echo ${{ secrets.GITHUB_TOKEN }} | gh auth login --with-token - # Build translations - name: Build Crowdin project id: build-crowdin From e3fd2cc73b605e568ff0b4355daeb1d28af69067 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Sat, 18 May 2024 23:16:12 +0100 Subject: [PATCH 115/366] build: set-output deprecated --- .github/workflows/crowdin-ci.yml | 17 ++++++----------- .../crowdin/translations/awaitLatestBuild.ts | 9 +++++++-- .../crowdin/translations/triggerBuild.ts | 7 ++++++- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/.github/workflows/crowdin-ci.yml b/.github/workflows/crowdin-ci.yml index 547f14a9002..12500705f1c 100644 --- a/.github/workflows/crowdin-ci.yml +++ b/.github/workflows/crowdin-ci.yml @@ -44,22 +44,17 @@ jobs: # Build translations - name: Build Crowdin project id: build-crowdin - run: | - OUTPUT=$(npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/triggerBuild.ts) - echo "$OUTPUT" - shell: bash + run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/triggerBuild.ts + + - name: Load buildId + run: echo "BUILD_ID=$(cat output.env | grep buildId | cut -d'=' -f2)" >> $GITHUB_ENV - name: Await latest build to finish - env: - BUILD_ID: ${{ steps.build-crowdin.outputs.buildId}} - run: | - OUTPUT=$(npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/awaitLatestBuild.ts) - echo "$OUTPUT" - shell: bash + run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/awaitLatestBuild.ts - name: Check build success run: | - if [ "${{ steps.build-crowdin.outputs.buildSuccess }}" = "false" ]; then + if [ "$(grep BUILD_SUCCESS output.env | cut -d'=' -f2)" = "false" ]; then echo "Build timed out, exiting" exit 1 fi diff --git a/src/scripts/crowdin/translations/awaitLatestBuild.ts b/src/scripts/crowdin/translations/awaitLatestBuild.ts index 38be22e3df3..8ecdc8144be 100644 --- a/src/scripts/crowdin/translations/awaitLatestBuild.ts +++ b/src/scripts/crowdin/translations/awaitLatestBuild.ts @@ -1,9 +1,14 @@ +import { writeFileSync } from "fs" +import { join } from "path" + import crowdin from "../api-client/crowdinClient" const FINISHED = "finished" const TIMEOUT = 2 * 60 * 60 * 1000 // Timeout after 2 hours const INTERVAL = 10 * 1000 // 10 seconds between checks +const OUTPUT_PATH = join(process.env["GITHUB_WORKSPACE"] || "", "output.env") + async function awaitLatestBuild() { const projectId = Number(process.env.CROWDIN_PROJECT_ID) || 363359 @@ -37,14 +42,14 @@ async function awaitLatestBuild() { } if (data.status !== FINISHED) { - console.error(`::set-output name=buildSuccess::false`) + writeFileSync(OUTPUT_PATH, `BUILD_SUCCESS=false\n`, { flag: "a" }) throw new Error( `Timeout: Build did not finish in ${TIMEOUT / 1000 / 60} minutes` ) } console.log("Latest build data:", data) - console.error(`::set-output name=buildSuccess::true`) + writeFileSync(OUTPUT_PATH, `BUILD_SUCCESS=true\n`, { flag: "a" }) } awaitLatestBuild() diff --git a/src/scripts/crowdin/translations/triggerBuild.ts b/src/scripts/crowdin/translations/triggerBuild.ts index 5831bb27534..21d57e58484 100644 --- a/src/scripts/crowdin/translations/triggerBuild.ts +++ b/src/scripts/crowdin/translations/triggerBuild.ts @@ -1,5 +1,10 @@ +import { writeFileSync } from "fs" +import { join } from "path" + import crowdin from "../api-client/crowdinClient" +const OUTPUT_PATH = join(process.env["GITHUB_WORKSPACE"] || "", "output.env") + async function triggerBuild() { const projectId = Number(process.env.CROWDIN_PROJECT_ID) || 363359 @@ -11,7 +16,7 @@ async function triggerBuild() { `Build ${isAlreadyFinished ? "already finished" : "triggered"} id:`, id ) - console.log(`::set-output name=buildId::${id}`) + writeFileSync(OUTPUT_PATH, `buildId=${id}\n`, { flag: "a" }) } catch (error: unknown) { console.error((error as Error).message) } From fc49c79c876e376ebdf5774ce0ac284e97a17305 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Sun, 19 May 2024 16:45:28 +0100 Subject: [PATCH 116/366] fix: clean up paths and id logic --- .github/workflows/crowdin-ci.yml | 9 ++++----- src/scripts/crowdin/translations/constants.ts | 8 ++++---- src/scripts/crowdin/translations/triggerBuild.ts | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/crowdin-ci.yml b/.github/workflows/crowdin-ci.yml index 12500705f1c..53e887fe33f 100644 --- a/.github/workflows/crowdin-ci.yml +++ b/.github/workflows/crowdin-ci.yml @@ -44,17 +44,16 @@ jobs: # Build translations - name: Build Crowdin project id: build-crowdin - run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/triggerBuild.ts - - - name: Load buildId - run: echo "BUILD_ID=$(cat output.env | grep buildId | cut -d'=' -f2)" >> $GITHUB_ENV + run: | + npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/triggerBuild.ts; + grep BUILD_ID output.env >> $GITHUB_ENV; - name: Await latest build to finish run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/translations/awaitLatestBuild.ts - name: Check build success run: | - if [ "$(grep BUILD_SUCCESS output.env | cut -d'=' -f2)" = "false" ]; then + if [ $(grep BUILD_SUCCESS output.env | cut -d'=' -f2) = false ]; then echo "Build timed out, exiting" exit 1 fi diff --git a/src/scripts/crowdin/translations/constants.ts b/src/scripts/crowdin/translations/constants.ts index 8f224528553..6f0756df4fc 100644 --- a/src/scripts/crowdin/translations/constants.ts +++ b/src/scripts/crowdin/translations/constants.ts @@ -1,15 +1,15 @@ -import { resolve } from "path" +import { join } from "path" export const DOT_CROWDIN = ".crowdin" export const CROWDIN_DATA_DIR = "src/data/crowdin" export const SAVE_FILE = "download.zip" -export const FILE_PATH = resolve(CROWDIN_DATA_DIR, SAVE_FILE) +export const FILE_PATH = join(CROWDIN_DATA_DIR, SAVE_FILE) export const SUMMARY_SAVE_FILE = "import-summary.json" -export const SUMMARY_PATH = resolve(CROWDIN_DATA_DIR, SUMMARY_SAVE_FILE) +export const SUMMARY_PATH = join(CROWDIN_DATA_DIR, SUMMARY_SAVE_FILE) export const BUCKETS_IMPORTED_FILE = "buckets-imported.json" -export const BUCKETS_PATH = resolve(CROWDIN_DATA_DIR, BUCKETS_IMPORTED_FILE) +export const BUCKETS_PATH = join(CROWDIN_DATA_DIR, BUCKETS_IMPORTED_FILE) export const APPROVAL_THRESHOLD = 100 diff --git a/src/scripts/crowdin/translations/triggerBuild.ts b/src/scripts/crowdin/translations/triggerBuild.ts index 21d57e58484..f3e54dfd403 100644 --- a/src/scripts/crowdin/translations/triggerBuild.ts +++ b/src/scripts/crowdin/translations/triggerBuild.ts @@ -16,7 +16,7 @@ async function triggerBuild() { `Build ${isAlreadyFinished ? "already finished" : "triggered"} id:`, id ) - writeFileSync(OUTPUT_PATH, `buildId=${id}\n`, { flag: "a" }) + writeFileSync(OUTPUT_PATH, `BUILD_ID=${id}\n`, { flag: "a" }) } catch (error: unknown) { console.error((error as Error).message) } From f01b0aaac8ce61269129689d91154e3ec9d0415e Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Sun, 19 May 2024 18:59:41 -0400 Subject: [PATCH 117/366] debug: add console logs --- src/scripts/crowdin/translations/utils.ts | 6 ++++++ src/scripts/markdownChecker.ts | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/scripts/crowdin/translations/utils.ts b/src/scripts/crowdin/translations/utils.ts index 8b0f0be8591..a8bc976aa09 100644 --- a/src/scripts/crowdin/translations/utils.ts +++ b/src/scripts/crowdin/translations/utils.ts @@ -41,6 +41,12 @@ export const decompressFile = async (filePath: string, targetDir: string) => { } const getQAMessage = (locale: string) => { + console.log("Checking summary path:", SUMMARY_PATH) + if (!fs.existsSync(SUMMARY_PATH)) { + console.error("Could not find summary path:", SUMMARY_PATH) + throw new Error("No summary file found.") + } + const summaryJson: QASummary = JSON.parse(readFileSync(SUMMARY_PATH, "utf-8")) const qaResults = summaryJson[locale] ? summaryJson[locale].map((s) => "- " + s).join("\n") diff --git a/src/scripts/markdownChecker.ts b/src/scripts/markdownChecker.ts index 3654e2d1b89..9918261473e 100644 --- a/src/scripts/markdownChecker.ts +++ b/src/scripts/markdownChecker.ts @@ -368,6 +368,7 @@ const writeSummary = (summary: Summary, summaryWritePath: string) => { } export function checkMarkdown(summaryWritePath?: string) { + console.log("Checking markdown for common issues...") const summary = {} as Summary const markdownPaths: Array = getAllMarkdownPaths(PATH_TO_ALL_CONTENT) const markdownPathsByLang: Languages = @@ -383,8 +384,10 @@ export function checkMarkdown(summaryWritePath?: string) { if (!summary[lang].length) delete summary[lang] } + if (!summaryWritePath) return - summaryWritePath && writeSummary(summary, summaryWritePath) + writeSummary(summary, summaryWritePath) + console.log("Writing markdown checker summary to:", summaryWritePath) } checkMarkdown() From 982227e44812c84665de9e408785c9ba79256f64 Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Sun, 19 May 2024 17:34:00 -0600 Subject: [PATCH 118/366] Token standards IA refactor --- .../docs/standards/tokens/erc-20/index.md | 21 +++++++++++++++++++ .../developers/docs/standards/tokens/index.md | 4 ++-- src/data/developer-docs-links.yaml | 4 ---- ...s-docs-standards-tokens-erc-4626-data.json | 6 ++++++ 4 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 src/data/placeholders/content-developers-docs-standards-tokens-erc-4626-data.json diff --git a/public/content/developers/docs/standards/tokens/erc-20/index.md b/public/content/developers/docs/standards/tokens/erc-20/index.md index d414dc6483e..47611e83335 100644 --- a/public/content/developers/docs/standards/tokens/erc-20/index.md +++ b/public/content/developers/docs/standards/tokens/erc-20/index.md @@ -147,9 +147,30 @@ print("Total Supply:", totalSupply) print("Addr Balance:", addr_balance) ``` +## Known issues and flaws {#issues-and-flaws} + +### ERC-20 token reception issue {#reception-issue} + +When ERC-20 tokens are sent to a smart contract that is not designed to handle ERC-20 tokens, those tokens can be permanently lost. This happens because the receiving contract does not have the functionality to recognize or respond to the incoming tokens, and there’s no mechanism in the ERC-20 standard to notify the receiving contract about the incoming tokens. The main ways this issue takes form is through: + +1. Token transfer mechanism + - ERC-20 tokens are transferred using the transfer or transferFrom functions + - When a user sends tokens to a contract address using these functions, the tokens are transferred regardless of whether the receiving contract is designed to handle them +2. Lack of notification + - The receiving contract does not receive a notification or callback that tokens have been sent to it + - If the receiving contract lacks a mechanism to handle tokens (e.g., a fallback function or a dedicated function to manage token reception), the tokens are effectively stuck in the contract’s address +3. No built-in handling + - The ERC-20 standard does not include a mandatory function for receiving contracts to implement, leading to a situation where many contracts are unable to manage incoming tokens properly + ## Further reading {#further-reading} - [EIP-20: ERC-20 Token Standard](https://eips.ethereum.org/EIPS/eip-20) - [OpenZeppelin - Tokens](https://docs.openzeppelin.com/contracts/3.x/tokens#ERC20) - [OpenZeppelin - ERC-20 Implementation](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol) - [Alchemy - Guide to Solidity ERC20 Tokens](https://www.alchemy.com/overviews/erc20-solidity) + + +## Other fungible token standards + +- [ERC-777](/developers/docs/standards/tokens/erc-777) +- [ERC-4626 - Tokenized vaults](/developers/docs/standards/tokens/erc-4626) \ No newline at end of file diff --git a/public/content/developers/docs/standards/tokens/index.md b/public/content/developers/docs/standards/tokens/index.md index 92f8fe8b3fc..1eb2ccb0da4 100644 --- a/public/content/developers/docs/standards/tokens/index.md +++ b/public/content/developers/docs/standards/tokens/index.md @@ -19,10 +19,10 @@ Many Ethereum development standards focus on token interfaces. These standards h Here are some of the most popular token standards on Ethereum: - [ERC-20](/developers/docs/standards/tokens/erc-20/) - A standard interface for fungible (interchangeable) tokens, like voting tokens, staking tokens or virtual currencies. + +### NFT standards - [ERC-721](/developers/docs/standards/tokens/erc-721/) - A standard interface for non-fungible tokens, like a deed for artwork or a song. -- [ERC-777](/developers/docs/standards/tokens/erc-777/) - ERC-777 allows people to build extra functionality on top of tokens such as a mixer contract for improved transaction privacy or an emergency recover function to bail you out if you lose your private keys. - [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ERC-1155 allows for more efficient trades and bundling of transactions – thus saving costs. This token standard allows for creating both utility tokens (such as $BNB or $BAT) and Non-Fungible Tokens like CryptoPunks. -- [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - A tokenized vault standard designed to optimize and unify the technical parameters of yield-bearing vaults. The full list of [ERC](https://eips.ethereum.org/erc) proposals. diff --git a/src/data/developer-docs-links.yaml b/src/data/developer-docs-links.yaml index 551035ac344..c437314dcb4 100644 --- a/src/data/developer-docs-links.yaml +++ b/src/data/developer-docs-links.yaml @@ -199,12 +199,8 @@ to: /developers/docs/standards/tokens/erc-20/ - id: docs-nav-erc-721 to: /developers/docs/standards/tokens/erc-721/ - - id: docs-nav-erc-777 - to: /developers/docs/standards/tokens/erc-777/ - id: docs-nav-erc-1155 to: /developers/docs/standards/tokens/erc-1155/ - - id: docs-nav-erc-4626 - to: /developers/docs/standards/tokens/erc-4626/ - id: docs-nav-mev to: /developers/docs/mev/ description: docs-nav-mev-description diff --git a/src/data/placeholders/content-developers-docs-standards-tokens-erc-4626-data.json b/src/data/placeholders/content-developers-docs-standards-tokens-erc-4626-data.json new file mode 100644 index 00000000000..70ebd328efe --- /dev/null +++ b/src/data/placeholders/content-developers-docs-standards-tokens-erc-4626-data.json @@ -0,0 +1,6 @@ +{ + "/content/developers/docs/standards/tokens/erc-4626/map-of-erc-4626.png": { + "hash": "c83c47ae", + "base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAQCAYAAADJViUEAAAACXBIWXMAABYlAAAWJQFJUiTwAAADbklEQVR4nFWSbUyTVxTHrwlqXJwTR6SyRBwgChHjy6iVlhZaXjZlCoKKATO3rJWmBqkvoGUVbBG1LW1V+iKl6UofoKBtUctjibMYaUPSbGRhpsbERBKXLPiBb9q4h9tj7mMc2U1Ozv1wf/n9z8lFLlew00OFYl7voymLzRf1UKGIw3Ev6hmaeDIxNqF8MTM1NRuZ/H1mMhSbmRyPPY89nZ6NPH7+bDp8BsVi8Yfz8wvw8uXfWK+nwOUKwtzcPxCLxXH8rzi1MP8qkUy+hz8e++Fubwdg/JYBAFh489qB7vrCDwigVpsZqVSNz7fqF1taNMmbt0YZ2ke75+J/vp2JhMFu6MIDFiO+P0K9J/Cz6cnbSK+n6NrDbZCZI8EFu+rgYM15tqrrWnEoMO7RyWsSMsl2UB0pAc2Jb0F9rIT5bcQEQaepD6nabbRAJIUvOAKck18L5F4qkYOg9CS+N+j3yMVbEvz1CGrz18JxLgdkomzG1XUSvMZLH+FveD/AyrW7Men7qpRQIm4CfqmMNZ87yE0Iv0LAS0dwIC8Vmr/bzvisKvAaO5fMazhCnL+znjUXl8hYmJgVFXmJykwEpRkI9qxDUL8jjXFflcOgrn0Jzt12CBNrWYWCrU+xibk8axWUZa+Gog0IZKJchnZ3L5n3Fv8My1P34DUcIewobGTNXP6P/5nLNyIo5iAgszfsTmccnSc+wlqtkyYzfp7Ox1lbD7DzkgSiMjkLn6ooSAg4CAq/RLA/dzW7MBL7fzMvW74N5+TVsJE/LYzAyqpdCUlmCggyEBwqSIMm8WZm4KoCRoyX+1BHhyNIoq5I5eL0TZVJobgJ8wQ/4SKhdPGOa5g6VZH/jsTlpaFkYSpKHilY96/1YgN4jR12FAxGabniOmR8LcHfV5+DhsZL0NbWC3VHLy7SowH3L/WChFS0GfgbEFTmfAaK8q1MlLbCbHS8j/ywvap2m7q11fRrp6bfrtU6bzS39JxtVup6B/qp04HbJrvj8pkLJpXSOWTudg7fukb5LFe6I/ddXESOxWLJslodOr9/nPL7aVM4/HSfzeZwDw2N3XB5xjQjgSdVN62D/aO+R27PcFAXeBjNYkEASCFdqzXz9HpLj9ncd8VgsBsMBrsxFIqI6w43Hu3uMtqsvf0aY4/N4HSOFpH31ZuyUz4APicGWaM0LgMAAAAASUVORK5CYII=" + } +} \ No newline at end of file From 6e9d02098053f40147839e3ce7f3dffd5c900fc9 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Mon, 20 May 2024 06:34:32 -0400 Subject: [PATCH 119/366] fix: add check for directory before recursive call --- src/scripts/crowdin/import/utils.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/scripts/crowdin/import/utils.ts b/src/scripts/crowdin/import/utils.ts index 637f8d9696e..d14506cfe9b 100644 --- a/src/scripts/crowdin/import/utils.ts +++ b/src/scripts/crowdin/import/utils.ts @@ -1,4 +1,4 @@ -import { copyFileSync, existsSync, mkdirSync, readdirSync } from "fs" +import { copyFileSync, existsSync, mkdirSync, readdirSync, statSync } from "fs" import { join } from "path" import i18Config from "../../../../i18n.config.json" @@ -45,9 +45,7 @@ export const scrapeDirectory = ( copyFileSync(source, jsonDestinationPath) // Update .json tracker trackers.langs[repoLangCode].jsonCopyCount++ - } else if ( - item.endsWith(".md") - ) { + } else if (item.endsWith(".md")) { const mdDestDirPath: string = join( TRANSLATIONS_DIR, repoLangCode, @@ -60,6 +58,7 @@ export const scrapeDirectory = ( // Update .md tracker trackers.langs[repoLangCode].mdCopyCount++ } else { + if (!statSync(source).isDirectory()) return // If another directory, recursively call `scrapeDirectory` scrapeDirectory( `${path}/${item}`, From bfb07550f9fada9500c8b19b5b5711153b229dfc Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Mon, 20 May 2024 06:53:45 -0400 Subject: [PATCH 120/366] chore: comments --- src/scripts/crowdin/translations/getApprovedBuckets.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/crowdin/translations/getApprovedBuckets.ts b/src/scripts/crowdin/translations/getApprovedBuckets.ts index c282d64b4c5..bcc12ad29ba 100644 --- a/src/scripts/crowdin/translations/getApprovedBuckets.ts +++ b/src/scripts/crowdin/translations/getApprovedBuckets.ts @@ -7,11 +7,11 @@ import type { BucketsList } from "../import/types" import { APPROVAL_THRESHOLD } from "./constants" async function getApprovedBuckets(): Promise { + console.log("⏳ Getting approved buckets...") const projectId = Number(process.env.CROWDIN_PROJECT_ID) || 363359 const bucketsList: BucketsList = {} - // TODO: Consider regenerating bucketDirs list on each run for fidelity for (const bucketDir of bucketDirs) { const directoryProgress = await crowdin.translationStatusApi.getDirectoryProgress( From 0a50d1715b9c66f619da2ebec23bc09535beb18e Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Mon, 20 May 2024 06:54:35 -0400 Subject: [PATCH 121/366] chore: remove on-push-branch trigger --- .github/workflows/crowdin-ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/crowdin-ci.yml b/.github/workflows/crowdin-ci.yml index 53e887fe33f..7d8a7c81570 100644 --- a/.github/workflows/crowdin-ci.yml +++ b/.github/workflows/crowdin-ci.yml @@ -4,10 +4,6 @@ on: schedule: - cron: "20 4 1 * *" # Runs at 4:20 AM on the first day of every month workflow_dispatch: # Can be dispatched manually - # For testing purposes only; remove for production - push: - branch: - - crowdin-ci-test-2 jobs: create_approved_language_bucket_prs: From 11df7ce45f2d3253fb314b466af822c925f7928f Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 20 May 2024 15:38:25 +0200 Subject: [PATCH 122/366] fix spacing in tutorials modal --- src/pages/developers/tutorials.tsx | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/pages/developers/tutorials.tsx b/src/pages/developers/tutorials.tsx index 3bd108ffe93..69770439443 100644 --- a/src/pages/developers/tutorials.tsx +++ b/src/pages/developers/tutorials.tsx @@ -260,20 +260,16 @@ const TutorialPage = ({ - + @@ -290,18 +286,14 @@ const TutorialPage = ({ From 4b71e5af980336a790ebce7367f466769ebb887b Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 20 May 2024 15:43:13 +0200 Subject: [PATCH 123/366] override codemodal padding --- src/components/CodeModal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/CodeModal.tsx b/src/components/CodeModal.tsx index f6c62332bb4..399ee1e40b7 100644 --- a/src/components/CodeModal.tsx +++ b/src/components/CodeModal.tsx @@ -33,7 +33,7 @@ const CodeModal = ({ children, isOpen, setIsOpen, title }: CodeModalProps) => { marginBottom="0" maxHeight="50%" borderRadius="0" - p="0" + p={{ base: "0", md: "0" }} gap="0" > Date: Mon, 20 May 2024 18:04:59 +0200 Subject: [PATCH 124/366] update QuizRadioGroup component layout and spacing --- .../Quiz/QuizWidget/QuizRadioGroup.tsx | 54 ++++++++++--------- src/components/Quiz/QuizWidget/index.tsx | 2 +- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx b/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx index b230c45fa82..77897a4865d 100644 --- a/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx +++ b/src/components/Quiz/QuizWidget/QuizRadioGroup.tsx @@ -61,7 +61,7 @@ export const QuizRadioGroup = () => { { {t(prompt)} - - {answers.map(({ id, label }, idx) => { - const display = - !answerStatus || id === selectedAnswer ? "inline-flex" : "none" - - return ( - - - - ) - })} - - - {!!answerStatus && ( - - {t("explanation")} - - {t(explanation)} + + + {answers.map(({ id, label }, idx) => { + const display = + !answerStatus || id === selectedAnswer ? "inline-flex" : "none" + + return ( + + + + ) + })} - )} + + {!!answerStatus && ( + + {t("explanation")} + + {t(explanation)} + + )} + ) } diff --git a/src/components/Quiz/QuizWidget/index.tsx b/src/components/Quiz/QuizWidget/index.tsx index bee2fc73b3a..96f0e0eba29 100644 --- a/src/components/Quiz/QuizWidget/index.tsx +++ b/src/components/Quiz/QuizWidget/index.tsx @@ -118,7 +118,7 @@ const QuizWidget = ({ Date: Mon, 20 May 2024 18:46:28 +0200 Subject: [PATCH 125/366] update Modal component styles for full size dialog --- src/@chakra-ui/components/Modal.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/@chakra-ui/components/Modal.ts b/src/@chakra-ui/components/Modal.ts index 26df14e163e..5daf1d555d6 100644 --- a/src/@chakra-ui/components/Modal.ts +++ b/src/@chakra-ui/components/Modal.ts @@ -49,18 +49,23 @@ export const Modal = defineMultiStyleConfig({ ), sizes: { ...defaultSizes, - full: { + full: definePartsStyle((props) => ({ + dialogContainer: { + alignItems: { base: "flex-start", md: "center" }, + }, dialog: { + my: { base: "4", md: props.isCentered ? "auto" : "4" }, + mx: "4", minH: { - base: "calc(100vh - 1rem)", - md: "min(calc(100vh - 1rem), 792px)", + base: "100vh", + md: "min(100vh, 792px)", }, maxW: { - base: "calc(100vw - 1rem)", - md: "min(calc(100vw - 1rem), 1000px)", + base: "100vw", + md: "min(100vw, 1000px)", }, }, - }, + })), }, defaultProps: { From 03822adffb35d0254973b18c6bb0f557306dd7c9 Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Mon, 20 May 2024 17:28:57 -0600 Subject: [PATCH 126/366] add NFTScan to /nft --- public/content/nft/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/content/nft/index.md b/public/content/nft/index.md index e1e99b96505..e68412c6ce9 100644 --- a/public/content/nft/index.md +++ b/public/content/nft/index.md @@ -105,6 +105,10 @@ Security issues relating to NFTs are most often related to phishing scams, smart - [ERC-1155 token standard](/developers/docs/standards/tokens/erc-1155/) - [Popular NFT Apps and Tools](https://www.ethereum-ecosystem.com/blockchains/ethereum/nfts) +## Other resources + +- [NFTScan](https://nftscan.com/) + From ad2f1d7723ad510932d906c157f99229bf4145ea Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Tue, 21 May 2024 18:41:44 +0200 Subject: [PATCH 127/366] update Modal component styles for full size dialog --- src/@chakra-ui/components/Modal.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/@chakra-ui/components/Modal.ts b/src/@chakra-ui/components/Modal.ts index 5daf1d555d6..4bc6edadd70 100644 --- a/src/@chakra-ui/components/Modal.ts +++ b/src/@chakra-ui/components/Modal.ts @@ -57,11 +57,11 @@ export const Modal = defineMultiStyleConfig({ my: { base: "4", md: props.isCentered ? "auto" : "4" }, mx: "4", minH: { - base: "100vh", + base: "calc(100vh - 2rem)", md: "min(100vh, 792px)", }, maxW: { - base: "100vw", + base: "calc(100vw - 2rem)", md: "min(100vw, 1000px)", }, }, From d870d5944eeb258331465763dd29b099f8cb75fc Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Wed, 22 May 2024 09:42:41 +0200 Subject: [PATCH 128/366] update padding styles for full size dialog + add story --- src/@chakra-ui/components/Modal.ts | 3 ++- src/components/Modal/Modal.stories.tsx | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/@chakra-ui/components/Modal.ts b/src/@chakra-ui/components/Modal.ts index 4bc6edadd70..6575ff295f3 100644 --- a/src/@chakra-ui/components/Modal.ts +++ b/src/@chakra-ui/components/Modal.ts @@ -18,7 +18,7 @@ export const Modal = defineMultiStyleConfig({ dialog: { bg: "background.base", gap: "4", - padding: { base: "4", sm: "8", md: "16" }, + padding: { base: "4", sm: "8" }, borderRadius: "base", boxShadow: "none", }, @@ -54,6 +54,7 @@ export const Modal = defineMultiStyleConfig({ alignItems: { base: "flex-start", md: "center" }, }, dialog: { + padding: { base: "4", sm: "8", md: "16" }, my: { base: "4", md: props.isCentered ? "auto" : "4" }, mx: "4", minH: { diff --git a/src/components/Modal/Modal.stories.tsx b/src/components/Modal/Modal.stories.tsx index 6322b697919..b1c48130892 100644 --- a/src/components/Modal/Modal.stories.tsx +++ b/src/components/Modal/Modal.stories.tsx @@ -20,3 +20,14 @@ export const Modal: Story = { actionButtonLabel: "Save", }, } + +export const Full: Story = { + args: { + isOpen: true, + title: "Modal Title", + children: + "This is the base component to be used in the modal window. Please change the text to preview final content for ethereum.org", + actionButtonLabel: "Save", + size: "full", + }, +} From aa35e864d2f6c612c9de13acb54a6d53fd46acda Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Wed, 22 May 2024 17:26:57 +0200 Subject: [PATCH 129/366] fix: add explicit matcher for the root path to work on dev mode --- src/middleware.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/middleware.ts b/src/middleware.ts index 8811c3ce751..a246d48e94e 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -23,13 +23,11 @@ function detectLocale(acceptLanguage: string | null) { export const config = { matcher: [ + "/", // explicit matcher for root route /* * Match all request paths except for the ones starting with: * - api (API routes) * - _next/static (static files) - * - _next/image (image optimization files) - * - favicon.ico (favicon file) - * - .well-known (security files) */ "/((?!api|_next/static).*)", ], From 62ce497cd964d0bd54e724e810bc053dbd5a850a Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 22 May 2024 10:44:16 -0600 Subject: [PATCH 130/366] fix: workflow skips dev/staging/master branches --- .github/workflows/non-english-warning.yml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/non-english-warning.yml b/.github/workflows/non-english-warning.yml index 22d17e0f984..5bf52b1c8e6 100644 --- a/.github/workflows/non-english-warning.yml +++ b/.github/workflows/non-english-warning.yml @@ -11,15 +11,24 @@ jobs: check_branch_name: runs-on: ubuntu-latest steps: - - name: Exit early if branch name contains 'crowdin' + - name: Exit early if branch name contains 'crowdin' or is 'dev', 'staging', or 'master' + id: check run: | - if [[ "${{ github.head_ref }}" == *crowdin* ]]; then - echo "Branch name contains 'crowdin', stopping workflow" - exit 1 + if [[ "${{ github.head_ref }}" == *crowdin* ]] || + [[ "${{ github.ref }}" == 'refs/heads/dev' ]] || + [[ "${{ github.ref }}" == 'refs/heads/staging' ]] || + [[ "${{ github.ref }}" == 'refs/heads/master' ]] + then + echo "Branch name contains 'crowdin' or is 'dev', 'staging', or 'master', stopping workflow" + echo "::set-output name=skip::true" + exit 0 + else + echo "::set-output name=skip::false" fi check_changes: needs: check_branch_name + if: needs.check_branch_name.outputs.skip == 'false' runs-on: ubuntu-latest outputs: all_changes_include_href: ${{ steps.check.outputs.all_changes_include_href }} From 40fdaa4ea7c113fa617bdcbfa5bdf5c8cb81f7c4 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Wed, 22 May 2024 13:58:21 -0600 Subject: [PATCH 131/366] feat: update labeler --- .github/labeler.yml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index 1fd50cbb8cf..f8a4dc02445 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,22 +1,19 @@ -"needs review 👀": - - src/**/* - - public/* - "documentation 📖": - README.md + - docs/**/* "tooling 🔧": - .github/**/* - - src/scripts/* - - src/lib/* - - src/hooks/* + - src/scripts/**/* + - src/lib/**/* + - src/hooks/**/* + - .storybook/**/* "dependencies 📦": - package.json - yarn.lock -"internal 🏠": - - .all-contributorsrc +"config ⚙️": - i18n.config.json - next.config.js - next-i18next.config,js @@ -30,13 +27,14 @@ - netlify.toml "translation 🌍": - - src/content/translations/**/* + - public/content/translations/**/* - src/intl/**/* - - src/lib/utils/translations.ts + - !src/intl/en/** "content 🖋️": - - src/pages/* + - src/intl/en/** - public/content/**/* + - !public/content/translations/**/* "event 📅": - src/data/community-events.json From 2bd487822f74b005d7612bfcc80a65b63877f6b5 Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Thu, 23 May 2024 13:32:47 +0200 Subject: [PATCH 132/366] define sizes for hero image --- src/layouts/UseCases.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/layouts/UseCases.tsx b/src/layouts/UseCases.tsx index 676ea11c71c..091e098b44b 100644 --- a/src/layouts/UseCases.tsx +++ b/src/layouts/UseCases.tsx @@ -216,6 +216,7 @@ export const UseCasesLayout = ({ width={1200} height={610} style={{ objectFit: "cover" }} + sizes="(max-width: 992px) 100vw, 50vw" priority alignSelf={{ base: "center", From e51ecde2660398e0917b4a9953708ea0a2c74437 Mon Sep 17 00:00:00 2001 From: Luka Kropec Date: Thu, 23 May 2024 14:46:30 +0200 Subject: [PATCH 133/366] Update broken Crowdin link on Translation program page --- .../contributing/translation-program/how-to-translate/index.md | 2 +- .../translations/es/contributing/translation-program/index.md | 2 +- .../contributing/translation-program/how-to-translate/index.md | 2 +- .../translations/fr/contributing/translation-program/index.md | 2 +- .../contributing/translation-program/how-to-translate/index.md | 2 +- .../translations/it/contributing/translation-program/index.md | 2 +- .../contributing/translation-program/how-to-translate/index.md | 2 +- .../pt-br/contributing/translation-program/index.md | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/public/content/translations/es/contributing/translation-program/how-to-translate/index.md b/public/content/translations/es/contributing/translation-program/how-to-translate/index.md index c53451077e1..ee95b8a2294 100644 --- a/public/content/translations/es/contributing/translation-program/how-to-translate/index.md +++ b/public/content/translations/es/contributing/translation-program/how-to-translate/index.md @@ -18,7 +18,7 @@ Para quienes aprenden mejor observando, vean la guía paso a paso de Luka para c Deberá iniciar sesión en su cuenta de Crowdin o registrarse si aún no tiene una. Para registrarse solo necesita una cuenta de correo electrónico y una contraseña. - + Únase al proyecto diff --git a/public/content/translations/es/contributing/translation-program/index.md b/public/content/translations/es/contributing/translation-program/index.md index 1f691271254..e4984b6800f 100644 --- a/public/content/translations/es/contributing/translation-program/index.md +++ b/public/content/translations/es/contributing/translation-program/index.md @@ -22,7 +22,7 @@ El programa de traducción es un esfuerzo colaborativo para traducir ethereum.or _Únase a [ethereum.org Discord](/discord/) para colaborar en traducciones, hacer preguntas, compartir comentarios e ideas o unirse a un grupo de traducción._ - + Empezar a traducir 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 a971d324d24..19c3eb5b442 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 e92d1e0cd03..33c87f2f4e8 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 diff --git a/public/content/translations/it/contributing/translation-program/how-to-translate/index.md b/public/content/translations/it/contributing/translation-program/how-to-translate/index.md index 65dd54651b2..d31666d10a9 100644 --- a/public/content/translations/it/contributing/translation-program/how-to-translate/index.md +++ b/public/content/translations/it/contributing/translation-program/how-to-translate/index.md @@ -18,7 +18,7 @@ Se preferisci un approccio più visivo, consulta la guida di Luka per l'impostaz Dovrai accedere al tuo profilo di Crowdin o registrarti se non ne hai già uno. Per iscriversi bastano un account di posta elettronica e una password. - + Unisciti al progetto diff --git a/public/content/translations/it/contributing/translation-program/index.md b/public/content/translations/it/contributing/translation-program/index.md index ecd6f1008a7..459aa329b2b 100644 --- a/public/content/translations/it/contributing/translation-program/index.md +++ b/public/content/translations/it/contributing/translation-program/index.md @@ -22,7 +22,7 @@ Il Programma di Traduzione di ethereum.org è aperto e tutti possono contribuire _Unisciti a [Discord di ethereum.org](/discord/) per collaborare alle traduzioni, fare domande, condividere feedback e idee, o unirsi a un gruppo di traduzione._ - + Inizia a tradurre 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 5e4f9bdd65e..3f1a8b3b7e5 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 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 cdf41ceb84f..3a1995e0304 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 From 6371e70428c48a4e7df6f569605a03aa2bb16ddd Mon Sep 17 00:00:00 2001 From: zkVlad <125317045+zkVlad@users.noreply.github.com> Date: Thu, 23 May 2024 19:51:25 +0200 Subject: [PATCH 134/366] Update index.md - comma misplaced --- .../developers/docs/nodes-and-clients/client-diversity/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 73b18723d3a..8e329456cb9 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 @@ -13,7 +13,7 @@ If you don't already understand what nodes and clients are, check out [nodes and ## Why are there multiple clients? {#why-multiple-clients} -Multiple, independently developed and maintained clients exist because client diversity makes the network more resilient to attacks and bugs. Multiple clients is a strength unique to Ethereum - other blockchains rely on the infallibility of a single client. However, it is not enough simply to have multiple, clients available, they have to be adopted by the community and the total active nodes distributed relatively evenly across them. +Multiple, independently developed and maintained clients exist because client diversity makes the network more resilient to attacks and bugs. Multiple clients is a strength unique to Ethereum - other blockchains rely on the infallibility of a single client. However, it is not enough simply to have multiple clients available, they have to be adopted by the community and the total active nodes distributed relatively evenly across them. ## Why is client diversity important? {#client-diversity-importance} From 6aa995ca99335a5d472719a932451e1a5f57ca2d Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 23 May 2024 14:33:51 -0600 Subject: [PATCH 135/366] chore: update blocked label --- .github/workflows/non-english-warning.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/non-english-warning.yml b/.github/workflows/non-english-warning.yml index 5bf52b1c8e6..ace419cfce9 100644 --- a/.github/workflows/non-english-warning.yml +++ b/.github/workflows/non-english-warning.yml @@ -60,7 +60,7 @@ jobs: const repo = context.repo; const prAuthor = context.payload.pull_request.user.login; const allChangesIncludeHref = '${{ needs.check_changes.outputs.all_changes_include_href }}' === 'true'; - const status = allChangesIncludeHref ? 'question ❓' : 'blocked 🛑'; + const status = allChangesIncludeHref ? 'question ❓' : 'Status: Blocked 🛑'; await github.rest.issues.addLabels({ ...repo, issue_number: prNumber, From b8a98dbce0fd99b039f11599f98985d5ce74428d Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Thu, 23 May 2024 15:34:30 -0600 Subject: [PATCH 136/366] fix: labeler yml syntax, add labeler refining step --- .github/labeler.yml | 2 -- .github/workflows/label.yml | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index f8a4dc02445..e6d58364be9 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -29,12 +29,10 @@ "translation 🌍": - public/content/translations/**/* - src/intl/**/* - - !src/intl/en/** "content 🖋️": - src/intl/en/** - public/content/**/* - - !public/content/translations/**/* "event 📅": - src/data/community-events.json diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml index a6e366819ce..a82198c8b81 100644 --- a/.github/workflows/label.yml +++ b/.github/workflows/label.yml @@ -11,3 +11,26 @@ jobs: - uses: actions/labeler@v2 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" + + - name: Refine labels + uses: actions/github-script@v5 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + try { + const { owner, repo, number: pull_number } = context.issue; + const { data: files } = await github.pulls.listFiles({ owner, repo, pull_number }); + + const allInEn = files.every(file => file.filename.startsWith('src/intl/en/')); + const allInTranslations = files.every(file => file.filename.startsWith('public/content/translations/')); + + if (allInEn) { + await github.issues.removeLabel({ owner, repo, issue_number: pull_number, name: 'translation 🌍' }); + } + + if (allInTranslations) { + await github.issues.removeLabel({ owner, repo, issue_number: pull_number, name: 'content 🖋️' }); + } + } catch (error) { + console.warn("Problem occurred refining labels") + } \ No newline at end of file From 1d1ed6d6e18bb5fc5db751f56f771f45eddd169b Mon Sep 17 00:00:00 2001 From: Joshua <62268199+minimalsm@users.noreply.github.com> Date: Fri, 24 May 2024 15:44:08 +0100 Subject: [PATCH 137/366] Update public/content/nft/index.md --- public/content/nft/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/nft/index.md b/public/content/nft/index.md index e68412c6ce9..10bdbb99c9b 100644 --- a/public/content/nft/index.md +++ b/public/content/nft/index.md @@ -105,7 +105,7 @@ Security issues relating to NFTs are most often related to phishing scams, smart - [ERC-1155 token standard](/developers/docs/standards/tokens/erc-1155/) - [Popular NFT Apps and Tools](https://www.ethereum-ecosystem.com/blockchains/ethereum/nfts) -## Other resources +## Other resources {#other-resources} - [NFTScan](https://nftscan.com/) From 0090acb419d6e6ebd3dd72768df7c03f018d093a Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 24 May 2024 16:26:29 +0000 Subject: [PATCH 138/366] Update Crowdin translation progress --- src/data/translationProgress.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/data/translationProgress.json b/src/data/translationProgress.json index f61962a44fe..1a0a212cc63 100644 --- a/src/data/translationProgress.json +++ b/src/data/translationProgress.json @@ -247,14 +247,14 @@ { "languageId": "it", "words": { - "approved": 247893, + "approved": 251410, "total": 264069 } }, { "languageId": "ja", "words": { - "approved": 244971, + "approved": 249929, "total": 264069 } }, @@ -289,7 +289,7 @@ { "languageId": "ko", "words": { - "approved": 47286, + "approved": 47430, "total": 264069 } }, @@ -576,7 +576,7 @@ { "languageId": "uk", "words": { - "approved": 64777, + "approved": 73232, "total": 264069 } }, @@ -618,14 +618,14 @@ { "languageId": "zh-CN", "words": { - "approved": 239810, + "approved": 240203, "total": 264069 } }, { "languageId": "zh-TW", "words": { - "approved": 116116, + "approved": 122100, "total": 264069 } }, From 6484c57215e4fbf97f28d1074c4d2096e51bed58 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Fri, 24 May 2024 12:55:16 -0600 Subject: [PATCH 139/366] refactor: consolidate to single job with multiple steps --- .github/workflows/non-english-warning.yml | 27 +++++++++-------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/.github/workflows/non-english-warning.yml b/.github/workflows/non-english-warning.yml index ace419cfce9..18ea00e6cef 100644 --- a/.github/workflows/non-english-warning.yml +++ b/.github/workflows/non-english-warning.yml @@ -8,11 +8,11 @@ on: - "!src/intl/en/**" jobs: - check_branch_name: + check_and_label: runs-on: ubuntu-latest steps: - name: Exit early if branch name contains 'crowdin' or is 'dev', 'staging', or 'master' - id: check + id: check_branch run: | if [[ "${{ github.head_ref }}" == *crowdin* ]] || [[ "${{ github.ref }}" == 'refs/heads/dev' ]] || @@ -26,17 +26,13 @@ jobs: echo "::set-output name=skip::false" fi - check_changes: - needs: check_branch_name - if: needs.check_branch_name.outputs.skip == 'false' - runs-on: ubuntu-latest - outputs: - all_changes_include_href: ${{ steps.check.outputs.all_changes_include_href }} - steps: - name: Checkout code + if: steps.check_branch.outputs.skip == 'false' uses: actions/checkout@v2 + - name: Check changes - id: check + if: steps.check_branch.outputs.skip == 'false' + id: check_changes run: | git fetch origin ${{ github.base_ref }} DIFF=$(git diff --no-ext-diff --unified=0 origin/${{ github.base_ref }}..${{ github.head_ref }} -- 'public/content/translations/**/*.md' 'src/intl/**/*.json' '!src/intl/en/**' | grep -E -v '^[-+]href=') @@ -47,11 +43,8 @@ jobs: fi echo "::set-output name=all_changes_include_href::$ALL_CHANGES_INCLUDE_HREF" - add_label_and_comment: - needs: check_changes - runs-on: ubuntu-latest - steps: - name: Add label and comment + if: steps.check_branch.outputs.skip == 'false' uses: actions/github-script@v5 with: github-token: ${{secrets.GITHUB_TOKEN}} @@ -59,7 +52,7 @@ jobs: const prNumber = context.issue.number; const repo = context.repo; const prAuthor = context.payload.pull_request.user.login; - const allChangesIncludeHref = '${{ needs.check_changes.outputs.all_changes_include_href }}' === 'true'; + const allChangesIncludeHref = '${{ steps.check_changes.outputs.all_changes_include_href }}' === 'true'; const status = allChangesIncludeHref ? 'question ❓' : 'Status: Blocked 🛑'; await github.rest.issues.addLabels({ ...repo, @@ -67,7 +60,7 @@ jobs: labels: [status, 'non-crowdin translation updates'] }); const commentWithoutHrefs = `This pull request contains changes to non-English content, which must also be handled through the Crowdin platform instead of only on GitHub.` - const commentWithHrefs = `This pull request contains changes to non-English content files, which may also need to be handled through the Crowdin platform instead of only on GitHub. + const commentWithHrefs = `This pull request contains changes to non-English content files, which may also need to be handled through the Crowdin platform instead of only on GitHub.` await github.rest.issues.createComment({ ...repo, issue_number: prNumber, @@ -80,4 +73,4 @@ jobs: Please post here or join [our Discord](https://ethereum.org/discord) if you have questions! ` - }); + }); \ No newline at end of file From b4f86016cfa5f82daf48a5b1e25c0edd83865371 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Fri, 24 May 2024 15:59:10 -0600 Subject: [PATCH 140/366] refactor: use reusable IdAnchor --- .../Glossary/GlossaryDefinition/index.tsx | 21 ++----------------- src/components/MdComponents.tsx | 2 +- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/src/components/Glossary/GlossaryDefinition/index.tsx b/src/components/Glossary/GlossaryDefinition/index.tsx index e80a0f0d772..97164dc1cdb 100644 --- a/src/components/Glossary/GlossaryDefinition/index.tsx +++ b/src/components/Glossary/GlossaryDefinition/index.tsx @@ -1,8 +1,8 @@ import { ComponentProps } from "react" -import { CiLink } from "react-icons/ci" -import { Box, type HeadingProps, Icon, Link, Text } from "@chakra-ui/react" +import { Box, type HeadingProps, Text } from "@chakra-ui/react" import InlineLink from "@/components/Link" +import { IdAnchor } from "@/components/MdComponents" import OldHeading from "@/components/OldHeading" import Translation from "@/components/Translation" @@ -27,23 +27,6 @@ const GlossaryDefinition = ({ }: GlossaryDefinitionProps) => { const textStyles = size === "sm" ? { mb: 0 } : {} - const IdAnchor = ({ id }: { id?: string }) => { - if (!id) return null - return ( - - - - ) - } const headingPropsForAnchor = (id?: string): HeadingProps => { if (!id) return {} return { diff --git a/src/components/MdComponents.tsx b/src/components/MdComponents.tsx index e8baa592c41..2d62c713dd6 100644 --- a/src/components/MdComponents.tsx +++ b/src/components/MdComponents.tsx @@ -65,7 +65,7 @@ export const commonHeadingProps = (id?: string): HeadingProps => ({ ...headingPropsForAnchor(id), }) -const IdAnchor = ({ id }: { id?: string }) => { +export const IdAnchor = ({ id }: { id?: string }) => { if (!id) return null return ( Date: Fri, 24 May 2024 17:06:03 -0600 Subject: [PATCH 141/366] refactor: extract IdAnchor to new file prevents circular reference issues from inside MdComponents --- .../Glossary/GlossaryDefinition/index.tsx | 2 +- src/components/IdAnchor.tsx | 24 +++++++++++++++++++ src/components/MdComponents.tsx | 23 +----------------- 3 files changed, 26 insertions(+), 23 deletions(-) create mode 100644 src/components/IdAnchor.tsx diff --git a/src/components/Glossary/GlossaryDefinition/index.tsx b/src/components/Glossary/GlossaryDefinition/index.tsx index 97164dc1cdb..4166449b07e 100644 --- a/src/components/Glossary/GlossaryDefinition/index.tsx +++ b/src/components/Glossary/GlossaryDefinition/index.tsx @@ -1,8 +1,8 @@ import { ComponentProps } from "react" import { Box, type HeadingProps, Text } from "@chakra-ui/react" +import IdAnchor from "@/components/IdAnchor" import InlineLink from "@/components/Link" -import { IdAnchor } from "@/components/MdComponents" import OldHeading from "@/components/OldHeading" import Translation from "@/components/Translation" diff --git a/src/components/IdAnchor.tsx b/src/components/IdAnchor.tsx new file mode 100644 index 00000000000..72569a8bed2 --- /dev/null +++ b/src/components/IdAnchor.tsx @@ -0,0 +1,24 @@ +import { CiLink } from "react-icons/ci" +import { Icon } from "@chakra-ui/react" + +import Link from "@/components/Link" + +const IdAnchor = ({ id }: { id?: string }) => { + if (!id) return null + return ( + + + + ) +} + +export default IdAnchor diff --git a/src/components/MdComponents.tsx b/src/components/MdComponents.tsx index 2d62c713dd6..fe8182f787f 100644 --- a/src/components/MdComponents.tsx +++ b/src/components/MdComponents.tsx @@ -1,16 +1,13 @@ import { ComponentProps } from "react" -import { CiLink } from "react-icons/ci" import { Badge, Box, type BoxProps, - calc, chakra, Divider as ChakraDivider, Flex, type FlexProps, type HeadingProps, - Icon, ListItem, OrderedList, Text, @@ -25,7 +22,6 @@ import ButtonDropdown, { } from "@/components/ButtonDropdown" import { ButtonLink } from "@/components/Buttons" import Contributors from "@/components/Contributors" -import Link from "@/components/Link" import MarkdownImage from "@/components/MarkdownImage" import OldHeading from "@/components/OldHeading" import { mdxTableComponents } from "@/components/Table" @@ -40,6 +36,7 @@ import DocLink from "./DocLink" import Emoji from "./Emoji" import ExpandableCard from "./ExpandableCard" import FeaturedText from "./FeaturedText" +import IdAnchor from "./IdAnchor" import InfoBanner from "./InfoBanner" import IssuesList from "./IssuesList" import LocaleDateTime from "./LocaleDateTime" @@ -65,24 +62,6 @@ export const commonHeadingProps = (id?: string): HeadingProps => ({ ...headingPropsForAnchor(id), }) -export const IdAnchor = ({ id }: { id?: string }) => { - if (!id) return null - return ( - - - - ) -} - export const Heading1 = ({ children, ...rest }: HeadingProps) => ( {children} From db51ceb96267a92c2b75a19fe40a7abdf9da427a Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 23:10:13 +0000 Subject: [PATCH 142/366] docs: update README.md [skip ci] --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1c6f3452baf..b5ab97797f2 100644 --- a/README.md +++ b/README.md @@ -1847,6 +1847,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d woxjro
    woxjro

    🔧 bambooskySean
    bambooskySean

    💻 VikVM
    VikVM

    🖋 + Omkar Kamale
    Omkar Kamale

    💻 From ad7e740a1d95bd1d2421a61f18b05dbc92f334a7 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Fri, 24 May 2024 23:10:14 +0000 Subject: [PATCH 143/366] docs: update .all-contributorsrc [skip ci] --- .all-contributorsrc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.all-contributorsrc b/.all-contributorsrc index 6ffed576b16..a23e5a88612 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -12069,6 +12069,15 @@ "contributions": [ "content" ] + }, + { + "login": "checkomkar", + "name": "Omkar Kamale", + "avatar_url": "https://avatars.githubusercontent.com/u/8987373?v=4", + "profile": "https://github.com/checkomkar", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, From 89ca84cf7a256c6a29bac73e3167ef25e7974034 Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Fri, 24 May 2024 17:23:35 -0600 Subject: [PATCH 144/366] fix: string type src --- .storybook/manager.ts | 2 +- .storybook/theme.ts | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.storybook/manager.ts b/.storybook/manager.ts index ca570b21dc6..0d38e6d84b5 100644 --- a/.storybook/manager.ts +++ b/.storybook/manager.ts @@ -10,5 +10,5 @@ addons.setConfig({ // In order to override the default favicon, and inject a data hash link to the png const link = document.createElement("link") link.setAttribute("rel", "shortcut icon") -link.setAttribute("href", favicon) +link.setAttribute("href", favicon.src) document.head.appendChild(link) diff --git a/.storybook/theme.ts b/.storybook/theme.ts index a55d128fecf..a8ae9620560 100644 --- a/.storybook/theme.ts +++ b/.storybook/theme.ts @@ -1,8 +1,5 @@ import { create } from "@storybook/theming" -// @ts-ignore -import brandImage from "./preview-logo.svg" - export default create({ base: "dark", @@ -11,7 +8,7 @@ export default create({ appBorderRadius: 4, brandTitle: "Ethereum.org", - brandImage, + brandImage: "./preview-logo.svg", brandUrl: "https://www.ethereum.org", barSelectedColor: "#ff7324", From 71dce670e09ea5107144bba7db527928a04b0051 Mon Sep 17 00:00:00 2001 From: Andreas Melhede <95473109+AMelhede@users.noreply.github.com> Date: Sat, 25 May 2024 12:16:14 +0200 Subject: [PATCH 145/366] Adding Cerebrum DAO to the list of projects --- public/content/desci/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/content/desci/index.md b/public/content/desci/index.md index fc123666260..6d5db4d4157 100644 --- a/public/content/desci/index.md +++ b/public/content/desci/index.md @@ -105,10 +105,10 @@ Explore projects and join the DeSci community. - [Bio.xyz: get funded for your biotech DAO or desci project](https://www.bio.xyz/) - [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/) - [ValleyDAO: an open, global community offering funding and translational support for synthetic biology research](https://www.valleydao.bio) +- [Cerebrum DAO: sourcing and nurturing solutions to advance brain health and prevent neurodegeneration](https://www.cerebrumdao.com/) We welcome suggestions for new projects to list - please look at our [listing policy](/contributing/adding-desci-projects/) to get started! From 23533cd1ffafc7d9325ed8304626d1649dcf3f78 Mon Sep 17 00:00:00 2001 From: tylerapfledderer Date: Sat, 25 May 2024 12:42:16 -0400 Subject: [PATCH 146/366] chore(.storybook/modes): remove unused export --- .storybook/modes.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.storybook/modes.ts b/.storybook/modes.ts index 612af605625..d80c2d875b0 100644 --- a/.storybook/modes.ts +++ b/.storybook/modes.ts @@ -46,7 +46,3 @@ export const langViewportModes = Object.entries( ...currLangViewObj, } }, {}) - -export const allModes = { - ...langViewportModes, -} From 355bacad55a37a07b20c9a9d63e2b9c30ae8f830 Mon Sep 17 00:00:00 2001 From: Kai Micah Mills Date: Sat, 25 May 2024 14:25:54 -0600 Subject: [PATCH 147/366] Add CryoDAO to DeSci project list CryoDAO is a DAO in the Molecule/bio.xyz ecosystem, similar to VitaDAO and ValleyDAO, but with the goal of funding high-impact research in cryopreservation (https://www.cryodao.org) --- public/content/desci/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/public/content/desci/index.md b/public/content/desci/index.md index fc123666260..fa6d9aacd65 100644 --- a/public/content/desci/index.md +++ b/public/content/desci/index.md @@ -109,6 +109,7 @@ Explore projects and join the DeSci community. - [IdeaMarkets: enabling decentralized scientific credibility](https://ideamarket.io/) - [DeSci Labs](https://www.desci.com/) - [ValleyDAO: an open, global community offering funding and translational support for synthetic biology research](https://www.valleydao.bio) +- [CryoDAO: funding moonshot research in the field of cryopreservation](https://www.cryodao.org) We welcome suggestions for new projects to list - please look at our [listing policy](/contributing/adding-desci-projects/) to get started! From 2d3601c797984a8f24c4cae92232a3837f5edacd Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 26 May 2024 01:36:45 +0000 Subject: [PATCH 148/366] Update Crowdin contributors --- src/data/crowdin/combined-translators.json | 480 +++++++++++++++++---- 1 file changed, 393 insertions(+), 87 deletions(-) diff --git a/src/data/crowdin/combined-translators.json b/src/data/crowdin/combined-translators.json index 3b843182d7f..c3f4302b007 100644 --- a/src/data/crowdin/combined-translators.json +++ b/src/data/crowdin/combined-translators.json @@ -2057,6 +2057,12 @@ "totalCosts": 9.09, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14616556/medium/08dc4b444eeae3ffdb2c3f20533bdf85.png" }, + { + "id": 16378882, + "username": "SunSchizzzz", + "totalCosts": 4.04, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16378882/medium/971096204f53a3db00ad7d2173ea80c2.jpeg" + }, { "id": 14920111, "username": "JueK3y", @@ -4038,6 +4044,12 @@ "totalCosts": 17.17, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959389/medium/8163669279ee4bd20f4b7db97f6000fa.png" }, + { + "id": 16378882, + "username": "SunSchizzzz", + "totalCosts": 16.16, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16378882/medium/971096204f53a3db00ad7d2173ea80c2.jpeg" + }, { "id": 15029781, "username": "B0nst3r", @@ -6521,6 +6533,12 @@ "totalCosts": 315.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14956243/medium/bed7fbaa6537d3585635207750beb0ec_default.png" }, + { + "id": 16385820, + "username": "noraoele", + "totalCosts": 144.43, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16385820/medium/cf9f87af2c562d479e8bc0382c0bc62f_default.png" + }, { "id": 15511756, "username": "Daniela-Camacho-Villalobo-110198", @@ -15091,6 +15109,12 @@ "totalCosts": 57.57, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg" }, + { + "id": 16382062, + "username": "amir.hdri", + "totalCosts": 43.43, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16382062/medium/184bf9f46824f5859a0966d8094e6d48_default.png" + }, { "id": 15855621, "username": "subriper", @@ -15990,6 +16014,12 @@ "totalCosts": 70.7, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814690/medium/22dbf1e43823e76cb094bff3fdcca212.jpeg" }, + { + "id": 16377902, + "username": "af3000", + "totalCosts": 34.34, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16377902/medium/c6c8da49cd111eca8c6bd338a7375ade.png" + }, { "id": 15967115, "username": "itsdeeters", @@ -17227,6 +17257,12 @@ "totalCosts": 122.21, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15171372/medium/1de0ae3712f910c91b52cf8cb802fdc2_default.png" }, + { + "id": 16351376, + "username": "Varadiell", + "totalCosts": 87.87, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16351376/medium/1dedcace4f1f17b6713fb41b8b4db778.png" + }, { "id": 15954931, "username": "XofEE", @@ -18304,6 +18340,12 @@ { "fileId": "2880", "contributors": [ + { + "id": 16361380, + "username": "TanguyLD", + "totalCosts": 179.78, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16361380/medium/e26b197e96c78605e47b09ad38d61b1a_default.png" + }, { "id": 14896794, "username": "Paulchemouni", @@ -18345,12 +18387,6 @@ "username": "Elikill58", "totalCosts": 3.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14587890/medium/1d5b3a9de8a7b7f6082357f1fe99d654.jpeg" - }, - { - "id": 16361380, - "username": "TanguyLD", - "totalCosts": 2.02, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16361380/medium/e26b197e96c78605e47b09ad38d61b1a_default.png" } ] }, @@ -18450,6 +18486,12 @@ "username": "XofEE", "totalCosts": 50.5, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, + { + "id": 16351376, + "username": "Varadiell", + "totalCosts": 3.03, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16351376/medium/1dedcace4f1f17b6713fb41b8b4db778.png" } ] }, @@ -18537,6 +18579,12 @@ "username": "Kler", "totalCosts": 68.68, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14075861/medium/a3cf69cc209acc2c520607aab4d1c615.jpeg" + }, + { + "id": 16361380, + "username": "TanguyLD", + "totalCosts": 62.62, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16361380/medium/e26b197e96c78605e47b09ad38d61b1a_default.png" } ] }, @@ -19403,6 +19451,12 @@ "username": "vdusart", "totalCosts": 7.07, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14862460/medium/106cb769254652c20ddeab107317fd43_default.png" + }, + { + "id": 16351376, + "username": "Varadiell", + "totalCosts": 3.03, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16351376/medium/1dedcace4f1f17b6713fb41b8b4db778.png" } ] }, @@ -19789,6 +19843,12 @@ "username": "plamarque", "totalCosts": 14.14, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" + }, + { + "id": 16351376, + "username": "Varadiell", + "totalCosts": 1.01, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16351376/medium/1dedcace4f1f17b6713fb41b8b4db778.png" } ] }, @@ -19877,6 +19937,12 @@ "totalCosts": 26.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" }, + { + "id": 16351376, + "username": "Varadiell", + "totalCosts": 3.03, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16351376/medium/1dedcace4f1f17b6713fb41b8b4db778.png" + }, { "id": 14737644, "username": "DylanCONIN", @@ -21879,6 +21945,12 @@ "totalCosts": 364.61, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14737644/medium/d981e7d9ae1b98b7e8a21245675fc0e0.jpg" }, + { + "id": 16351376, + "username": "Varadiell", + "totalCosts": 81.81, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16351376/medium/1dedcace4f1f17b6713fb41b8b4db778.png" + }, { "id": 14675712, "username": "LEMIBANDDEXARI", @@ -22036,6 +22108,12 @@ "totalCosts": 541.36, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg" }, + { + "id": 16351376, + "username": "Varadiell", + "totalCosts": 150.49, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16351376/medium/1dedcace4f1f17b6713fb41b8b4db778.png" + }, { "id": 15954931, "username": "XofEE", @@ -22060,6 +22138,12 @@ "totalCosts": 27.27, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14655214/medium/fab7695facba2ed2c28049aa0d65753e_default.png" }, + { + "id": 15585929, + "username": "CROISSANT0011", + "totalCosts": 23.23, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15585929/medium/497d8de2723f2e6c57594ca686885474.png" + }, { "id": 14631242, "username": "kasahiti", @@ -22072,12 +22156,6 @@ "totalCosts": 21.21, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png" }, - { - "id": 16351376, - "username": "Varadiell", - "totalCosts": 21.21, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16351376/medium/1dedcace4f1f17b6713fb41b8b4db778.png" - }, { "id": 17361, "username": "plamarque", @@ -22810,6 +22888,12 @@ "totalCosts": 119.18, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" }, + { + "id": 16361380, + "username": "TanguyLD", + "totalCosts": 25.25, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16361380/medium/e26b197e96c78605e47b09ad38d61b1a_default.png" + }, { "id": 14675712, "username": "LEMIBANDDEXARI", @@ -23517,6 +23601,12 @@ "username": "XofEE", "totalCosts": 123.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, + { + "id": 16351376, + "username": "Varadiell", + "totalCosts": 112.11, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16351376/medium/1dedcace4f1f17b6713fb41b8b4db778.png" } ] }, @@ -23877,6 +23967,12 @@ "totalCosts": 614.08, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" }, + { + "id": 16351376, + "username": "Varadiell", + "totalCosts": 47.47, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16351376/medium/1dedcace4f1f17b6713fb41b8b4db778.png" + }, { "id": 12844463, "username": "MATsxm", @@ -28579,6 +28675,12 @@ "totalCosts": 190.89, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png" }, + { + "id": 16386932, + "username": "nattwoffie", + "totalCosts": 58.58, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16386932/medium/007c98b1e034a8e03a580081959a0354_default.png" + }, { "id": 14752122, "username": "karna.prayoga13", @@ -31828,7 +31930,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 341.38, + "totalCosts": 790.83, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -31880,7 +31982,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 160.59, + "totalCosts": 198.97, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -32143,7 +32245,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 38.38, + "totalCosts": 87.87, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -32195,7 +32297,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 1905.87, + "totalCosts": 1956.37, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -32680,7 +32782,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 222.2, + "totalCosts": 282.8, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -32720,7 +32822,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 1944.25, + "totalCosts": 2228.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -32737,7 +32839,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 965.56, + "totalCosts": 1171.6, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" } ] @@ -32869,7 +32971,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 93.93, + "totalCosts": 114.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -33409,7 +33511,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 67.67, + "totalCosts": 110.09, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -33501,7 +33603,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 50.5, + "totalCosts": 65.65, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -33742,7 +33844,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 311.08, + "totalCosts": 337.34, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -33765,7 +33867,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 660.54, + "totalCosts": 667.61, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -33834,7 +33936,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 3971.32, + "totalCosts": 4062.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -35010,7 +35112,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 1117.06, + "totalCosts": 1722.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" }, { @@ -35019,6 +35121,12 @@ "totalCosts": 439.35, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633448/medium/00e36a91231d5f6980f4ea96c1f24ab9.jpg" }, + { + "id": 16377072, + "username": "adam.hrkel", + "totalCosts": 26.26, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16377072/medium/f29e79297052c5fc5fa3dfc954ef9e6d.png" + }, { "id": 14657804, "username": "jhonnyvianello", @@ -36130,7 +36238,7 @@ { "id": 13461670, "username": "Herbie_23", - "totalCosts": 641.35, + "totalCosts": 681.75, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/c9291075edb8582a7efe26fe983237e1.jpg" } ] @@ -36500,7 +36608,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 173.72, + "totalCosts": 195.94, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -36766,18 +36874,18 @@ { "fileId": "6388", "contributors": [ + { + "id": 15208868, + "username": "HiroyukiNaito", + "totalCosts": 548.43, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" + }, { "id": 15169660, "username": "kurotaky", "totalCosts": 259.57, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15169660/medium/05e3e729e62f12747a7d06b8f27d3cf5.jpeg" }, - { - "id": 15208868, - "username": "HiroyukiNaito", - "totalCosts": 104.03, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" - }, { "id": 15275810, "username": "sakamotomasayuki7", @@ -36839,7 +36947,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 146.45, + "totalCosts": 184.83, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -37081,18 +37189,18 @@ { "fileId": "2868", "contributors": [ + { + "id": 15208868, + "username": "HiroyukiNaito", + "totalCosts": 219.17, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" + }, { "id": 14701334, "username": "ozora-ogino", "totalCosts": 182.81, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14701334/medium/3b0ac84d5b08a7171e0157caba5e6ece.png" }, - { - "id": 15208868, - "username": "HiroyukiNaito", - "totalCosts": 169.68, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" - }, { "id": 14880458, "username": "sekisanchi", @@ -37160,7 +37268,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 2594.69, + "totalCosts": 2645.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -37493,7 +37601,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 275.73, + "totalCosts": 301.99, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -37566,6 +37674,12 @@ "totalCosts": 213.11, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15468240/medium/4b9fcd0986c6b9732488ab90181beb8b_default.png" }, + { + "id": 15208868, + "username": "HiroyukiNaito", + "totalCosts": 137.36, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" + }, { "id": 14931651, "username": "sinsinpurin", @@ -37577,12 +37691,6 @@ "username": "sekisanchi", "totalCosts": 88.88, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png" - }, - { - "id": 15208868, - "username": "HiroyukiNaito", - "totalCosts": 76.76, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] }, @@ -37620,7 +37728,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 1782.65, + "totalCosts": 2066.46, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] @@ -37631,7 +37739,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 870.62, + "totalCosts": 1076.66, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] @@ -37799,7 +37907,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 163.62, + "totalCosts": 183.82, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -38113,7 +38221,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 177.76, + "totalCosts": 178.77, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -38373,7 +38481,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 24.24, + "totalCosts": 66.66, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -38483,7 +38591,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 46.46, + "totalCosts": 61.61, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -38787,18 +38895,18 @@ { "fileId": "2822", "contributors": [ + { + "id": 15208868, + "username": "HiroyukiNaito", + "totalCosts": 168.67, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" + }, { "id": 14880458, "username": "sekisanchi", "totalCosts": 145.44, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png" }, - { - "id": 15208868, - "username": "HiroyukiNaito", - "totalCosts": 142.41, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" - }, { "id": 15333126, "username": "1056shigezane", @@ -38836,7 +38944,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 311.08, + "totalCosts": 318.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -38947,7 +39055,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 5079.29, + "totalCosts": 5170.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -40274,7 +40382,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 1192.81, + "totalCosts": 1824.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -40598,6 +40706,12 @@ "totalCosts": 690.84, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14730036/medium/3f53daf0320c8412a99de867a0ca6d2c_default.png" }, + { + "id": 15208868, + "username": "HiroyukiNaito", + "totalCosts": 640.34, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" + }, { "id": 15135089, "username": "indwm", @@ -40609,12 +40723,6 @@ "username": "Buyabuya", "totalCosts": 82.82, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16274540/medium/fff14edb8869578304921016a436ab18.jpeg" - }, - { - "id": 15208868, - "username": "HiroyukiNaito", - "totalCosts": 46.46, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] }, @@ -40917,7 +41025,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 133.32, + "totalCosts": 202, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] @@ -40945,7 +41053,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 824.16, + "totalCosts": 869.61, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] @@ -40967,7 +41075,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 2379.56, + "totalCosts": 2388.65, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] @@ -40978,7 +41086,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 957.48, + "totalCosts": 968.59, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] @@ -41000,7 +41108,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 1657.41, + "totalCosts": 1671.55, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -41040,7 +41148,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 557.52, + "totalCosts": 583.78, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -41600,7 +41708,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 641.35, + "totalCosts": 681.75, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] @@ -44174,6 +44282,18 @@ "totalCosts": 127.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg" }, + { + "id": 16377878, + "username": "monika1725", + "totalCosts": 23.23, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16377878/medium/2ae7e18f1910426cb2a2d5f043fe2de6.png" + }, + { + "id": 16376400, + "username": "JooGii28", + "totalCosts": 7.07, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16376400/medium/983e6f11f03f0989c736b2210a995dd0_default.png" + }, { "id": 15994051, "username": "csgo7777gg", @@ -48431,6 +48551,12 @@ "username": "vivianebuge", "totalCosts": 28.28, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15887043/medium/c0732f0c01e671b0863789e7427b6a98_default.png" + }, + { + "id": 16367398, + "username": "Tomiborges", + "totalCosts": 2.02, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16367398/medium/50a08ea001b6ef2aadcc4b4c4c949fc0.png" } ] }, @@ -53026,6 +53152,12 @@ "totalCosts": 343.4, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947515/medium/52b0b3490fcf6940d9027ef2f32a424b.jpeg" }, + { + "id": 16378434, + "username": "markku4umov", + "totalCosts": 173.72, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16378434/medium/097ad73ebb58a1228c67e8cbfdee697c.png" + }, { "id": 14864742, "username": "samson7125", @@ -53780,7 +53912,7 @@ { "id": 15763855, "username": "dovbyshbgd", - "totalCosts": 263.61, + "totalCosts": 264.62, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" }, { @@ -54293,6 +54425,12 @@ "totalCosts": 292.9, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" }, + { + "id": 15763855, + "username": "dovbyshbgd", + "totalCosts": 113.12, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" + }, { "id": 15966943, "username": "yulkor", @@ -54376,7 +54514,7 @@ { "id": 15763855, "username": "dovbyshbgd", - "totalCosts": 438.34, + "totalCosts": 639.33, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" } ] @@ -54410,7 +54548,7 @@ { "id": 15763855, "username": "dovbyshbgd", - "totalCosts": 107.06, + "totalCosts": 116.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" }, { @@ -63336,6 +63474,12 @@ "totalCosts": 33.33, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15558917/medium/3140ea0253adc0e3f3c81b050f3b30b3.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 30.3, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15809315, "username": "dtsukokotoi809", @@ -64115,6 +64259,12 @@ "username": "iPhantasmLavender", "totalCosts": 45.45, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15373768/medium/fb5b03de96ccb41bad412ed79ca8e690_default.png" + }, + { + "id": 16381580, + "username": "szhzc123", + "totalCosts": 3.03, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16381580/medium/4a8761f873046df39d5645f687ae41fb.png" } ] }, @@ -64400,6 +64550,12 @@ "totalCosts": 123.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14849836/medium/dfc0f2dfa07082a184a03d9d5272f9b3_default.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 43.43, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15988145, "username": "cxr1025048717", @@ -64518,6 +64674,12 @@ "totalCosts": 198.97, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15924353/medium/24be33af9672c1afbe79146c7acda3a0_default.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 183.82, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 14792498, "username": "tyevlag", @@ -64530,6 +64692,12 @@ "totalCosts": 138.37, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14958061/medium/120296ee25b4bfc07225bfbc8a6d5666_default.png" }, + { + "id": 14829178, + "username": "EffectChen", + "totalCosts": 83.83, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" + }, { "id": 15871701, "username": "maxwellcotto", @@ -64542,12 +64710,6 @@ "totalCosts": 34.34, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15357618/medium/12f023106f6a24e98bfc6553c07a46f4.jpg" }, - { - "id": 14829178, - "username": "EffectChen", - "totalCosts": 11.11, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" - }, { "id": 15073799, "username": "GoForceX", @@ -64819,6 +64981,12 @@ "totalCosts": 94.94, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 45.45, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15871701, "username": "maxwellcotto", @@ -64989,6 +65157,12 @@ "username": "maxwellcotto", "totalCosts": 183.82, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png" + }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 11.11, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" } ] }, @@ -65183,6 +65357,12 @@ "totalCosts": 92.92, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15325888/medium/815772d9e3b38dca80896d12a44667fe_default.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 14.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15236832, "username": "Andypsl8", @@ -65271,6 +65451,12 @@ "totalCosts": 28.28, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350892/medium/12f685a4bf7fab1e51d80ba3b7b0e55d_default.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 26.26, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15236832, "username": "Andypsl8", @@ -65371,6 +65557,12 @@ "totalCosts": 15.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/59227a901011469470b992963cd20855.jpg" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 14.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15906651, "username": "ying.ying09", @@ -65394,6 +65586,12 @@ { "fileId": "2880", "contributors": [ + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 179.78, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 14712154, "username": "fivenicerice", @@ -65657,6 +65855,12 @@ "totalCosts": 106.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15531935/medium/e07673c727d9da1415b7f284c143d903_default.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 62.62, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15314206, "username": "cuijia", @@ -65822,6 +66026,12 @@ "totalCosts": 114.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14692406/medium/cd75843e806da42ffede4f72813bcd9e.JPG" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 46.46, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15236832, "username": "Andypsl8", @@ -66683,6 +66893,12 @@ "totalCosts": 99.99, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657887/medium/9212535a0a5fb7ec22a9f8a8329dac3b.jpg" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 19.19, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 16072062, "username": "Aaaa-2040", @@ -66736,6 +66952,12 @@ "totalCosts": 44.44, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 41.41, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15924353, "username": "Li_Rui", @@ -66857,6 +67079,12 @@ { "fileId": "2722", "contributors": [ + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 42.42, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 14553216, "username": "rielychen", @@ -66985,6 +67213,12 @@ "totalCosts": 21.21, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 15.15, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15911295, "username": "Xin_Cheng", @@ -67267,6 +67501,12 @@ "totalCosts": 23.23, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16302070/medium/71d16e89c1be6c482759c19c804f5aca.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 12.12, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 16166796, "username": "cy185210", @@ -67307,6 +67547,12 @@ "totalCosts": 687.81, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14598082/medium/a772216c9656892370ed6d814c619bdd_default.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 38.38, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15193608, "username": "yuping", @@ -67383,6 +67629,12 @@ "totalCosts": 38.38, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 26.26, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15314206, "username": "cuijia", @@ -67459,6 +67711,12 @@ "totalCosts": 12.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14805280/medium/a294008196ce6b1800aa175fc7112ad0.jpeg" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 7.07, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 14823752, "username": "Leo500023", @@ -67606,6 +67864,12 @@ "totalCosts": 366.63, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15531743/medium/06edb2b0a7a9cbb46f2c00669e0103ab.gif" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 208.06, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15557599, "username": "PetitLui", @@ -70506,6 +70770,12 @@ "totalCosts": 140.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 83.83, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 14690748, "username": "penglaishan.cn", @@ -71708,6 +71978,12 @@ "totalCosts": 19.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15073799/medium/a33ad8c1e01cf31890babace80908193.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 9.09, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15773245, "username": "Tykoo", @@ -71725,6 +72001,12 @@ "totalCosts": 113.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 86.86, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15381970, "username": "tzbkk", @@ -71964,6 +72246,12 @@ "totalCosts": 337.34, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 197.96, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15900245, "username": "kairlv", @@ -72063,6 +72351,12 @@ "username": "Aiden_Lee", "totalCosts": 379.76, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15269034/medium/98d984d00012bd37cbb5f3f343bd367e_default.png" + }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 113.12, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" } ] }, @@ -72075,6 +72369,12 @@ "totalCosts": 462.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14712154/medium/3730e404a7ef0a2e5f76426f84376d53.jpg" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 316.13, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15911295, "username": "Xin_Cheng", @@ -72151,6 +72451,12 @@ "totalCosts": 143.42, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15856841/medium/604c48d6d4f0f60a4495f8586908076c.png" }, + { + "id": 16372068, + "username": "Joe-Chen", + "totalCosts": 129.28, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16372068/medium/67515d406a6ab91886bd189474a98c2d.png" + }, { "id": 15904577, "username": "JinzhouWu", @@ -74752,7 +75058,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 589.84, + "totalCosts": 691.85, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" }, { From 6e6585d6f8b5d7d94d4dbf273b2abd6be409dd77 Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 27 May 2024 14:18:00 +0200 Subject: [PATCH 149/366] delete middleware --- src/middleware.ts | 62 ----------------------------------------------- 1 file changed, 62 deletions(-) delete mode 100644 src/middleware.ts diff --git a/src/middleware.ts b/src/middleware.ts deleted file mode 100644 index a246d48e94e..00000000000 --- a/src/middleware.ts +++ /dev/null @@ -1,62 +0,0 @@ -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 -} - -export const config = { - matcher: [ - "/", // explicit matcher for root route - /* - * Match all request paths except for the ones starting with: - * - api (API routes) - * - _next/static (static files) - */ - "/((?!api|_next/static).*)", - ], -} - -// 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) { - const { pathname, locale } = req.nextUrl - - if (pathname.startsWith("/_next") || PUBLIC_FILE.test(pathname)) { - return NextResponse.next() - } - - if (locale === FAKE_LOCALE) { - // Apparently, the built-in `localeDetection`from Next does not work when - // using the faked locale hack. So, we need to detect the locale manually - const localeDetected = detectLocale(req.headers.get("accept-language")) - const locale = localeDetected || DEFAULT_LOCALE - - const redirectUrl = new URL(`/${locale}${pathname}`, req.url) - - // Add trailing slash if it's not present - if (!redirectUrl.pathname.endsWith("/")) { - redirectUrl.pathname = redirectUrl.pathname + "/" - } - - return NextResponse.redirect(redirectUrl, { status: 301 }) - } - - return NextResponse.next() -} From ba9d4a7cccdc1989d435eda7e239aac5dca441b6 Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 27 May 2024 14:18:21 +0200 Subject: [PATCH 150/366] bump next netlify runtime plugin to latest --- package.json | 2 +- yarn.lock | 755 ++------------------------------------------------- 2 files changed, 26 insertions(+), 731 deletions(-) diff --git a/package.json b/package.json index b2c1e1f09a7..5f68936391b 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ }, "devDependencies": { "@chakra-ui/cli": "^2.4.1", - "@netlify/plugin-nextjs": "^4.41.3", + "@netlify/plugin-nextjs": "^5.0.0", "@storybook/addon-essentials": "7.6.6", "@storybook/addon-interactions": "7.6.6", "@storybook/addon-links": "7.6.6", diff --git a/yarn.lock b/yarn.lock index 8d2a3fcfa54..3c13feaa63d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2513,11 +2513,6 @@ resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== -"@fastify/accept-negotiator@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz#c1c66b3b771c09742a54dd5bc87c582f6b0630ff" - integrity sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ== - "@floating-ui/core@^1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" @@ -2564,11 +2559,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== -"@ioredis/commands@^1.1.1": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11" - integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg== - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -2741,210 +2731,10 @@ pump "^3.0.0" tar-fs "^2.1.1" -"@netlify/blobs@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@netlify/blobs/-/blobs-2.2.0.tgz#bf634e6f1a43df3fab2088b5093c9e8eda01b393" - integrity sha512-j2C0+IvWj9CLNGPoiA7ETquMFDExZTrv4CarjfE6Au0eY3zlinnnTVae7DE+VQFK+U0CDM/O0VvelNy1QbsdwQ== - -"@netlify/esbuild-android-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz#7bd30aba94a92351d2c5e25e178ceb824f3c2f99" - integrity sha512-azq+lsvjRsKLap8ubIwSJXGyknUACqYu5h98Fvyoh40Qk4QXIVKl16JIJ4s+B7jy2k9qblEc5c4nxdDA3aGbVA== - -"@netlify/esbuild-android-arm64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz#0b3e11efaa9379792592173152eba2c9f8b933b0" - integrity sha512-WhIP7ePq4qMC1sxoaeB9SsJqSW6uzW7XDj/IuWl1l9r94nwxywU1sYdVLaF2mZr15njviazYjVr8x1d+ipwL3w== - -"@netlify/esbuild-darwin-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz#bb4a3a244723351dabd3cd0553425d087901c408" - integrity sha512-eF4GvLYiDxtcyjFT55+h+8c8A2HltjeMezCqkt3AQSgOdu1nhlvwbBhIdg2dyM6gKEaEm5hBtTbicEDSwsLodA== - -"@netlify/esbuild-darwin-arm64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz#48e5abd7d32cdefe4db30026e21c5173afae3c8d" - integrity sha512-b7rtnX/VtYwNbUCxs3eulrCWJ+u2YvqDcXiIV1ka+od+N0fTx+4RrVkVp1lha9L0wEJYK9J7UWZOMLMyd1ynRg== - -"@netlify/esbuild-freebsd-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz#d9650ba7ac0df826ad8928cc3b02e16d00c259b0" - integrity sha512-XtusxDJt2hUKUdggbTFolMx0kJL2zEa4STI7YwpB+ukEWoW5rODZjiLZbqqYLcjDH8k4YwHaMxs103L8eButEQ== - -"@netlify/esbuild-freebsd-arm64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz#4e1401e44f79e007dc43b6edac737d010685f9f0" - integrity sha512-A9XZKai+k6kfndCtN6Dh2usT28V0+OGxzFdZsANONPQiEUTrGZCgwcHWiVlVn7SeAwPR1tKZreTnvrfj8cj7hA== - -"@netlify/esbuild-linux-32@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz#fb017e160d8caa72efa36cf9a2748cd01165a463" - integrity sha512-ZQnqk/82YRvINY+aF+LlGfRZ19c5mH0jaxsO046GpIOPx6PcXHG8JJ2lg+vLJVe4zFPohxzabcYpwFuT4cg/GA== - -"@netlify/esbuild-linux-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz#d89f1aed0f3607b092ca2f57556725af3ceb8252" - integrity sha512-IQtswVw7GAKNX/3yV390wSfSXvMWy0d5cw8csAffwBk9gupftY2lzepK4Cn6uD/aqLt3Iku33FbHop/2nPGfQA== - -"@netlify/esbuild-linux-arm64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz#faf6e1e2587045df193d4893e4c30237e2cb84e9" - integrity sha512-4Jie4QV6pWWuGN7TAshNMGbdTA9+VbRkv3rPIxhgK5gBfmsAV1yRKsumE4Y77J0AZNRiOriyoec4zc1qkmI3zg== - -"@netlify/esbuild-linux-arm@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz#bd43359c9e00caebf9bd8f47b8fc7606f5433618" - integrity sha512-QdOzQniOed0Bz1cTC9TMMwvtAqKayYv66H4edJlbvElC81yJZF/c9XhmYWJ6P5g4nkChZubQ5RcQwTLmrFGexg== - -"@netlify/esbuild-linux-mips64le@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz#0d69730b40175406e943bbf519a4de85750e1ed3" - integrity sha512-Htozxr95tw4tSd86YNbCLs1eoYQzNu/cHpzFIkuJoztZueUhl8XpRvBdob7n3kEjW1gitLWAIn8XUwSt+aJ1Tg== - -"@netlify/esbuild-linux-ppc64le@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz#18fd4c7190496382501bb95c3f015f7ec1b0acb2" - integrity sha512-tFy0ufWIdjeuk1rPHee00TZlhr9OSF00Ufb4ROFyt2ArKuMSkWRJuDgx6MtZcAnCIN4cybo/xWl3MKTM+scnww== - -"@netlify/esbuild-linux-riscv64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz#c9dc6af7e999ead24e2d68443c8c630094908930" - integrity sha512-ZzfKvwIxL7wQnYbVFpyNW0wotnLoKageUEM57RbjekesJoNQnqUR6Usm+LDZoB8iRsI58VX1IxnstP0cX8vOHw== - -"@netlify/esbuild-linux-s390x@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz#8b87c0a09397b014e9f4fb3873c891ea0d81df40" - integrity sha512-yjC0mFwnuMRoh0WcF0h71MF71ytZBFEQQTRdgiGT0+gbC4UApBqnTkJdLx32RscBKi9skbMChiJ748hDJou6FA== - -"@netlify/esbuild-netbsd-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz#3f049e25a6d00f17519220ab2f5e15f027edadae" - integrity sha512-mIq4znOoz3YfTVdv3sIWfR4Zx5JgMnT4srlhC5KYVHibhxvyDdin5txldYXmR4Zv4dZd6DSuWFsn441aUegHeA== - -"@netlify/esbuild-openbsd-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz#02396cf8e8ca01484df58a191d301adc587397c9" - integrity sha512-+t6QdzJCngH19hV7ClpFAeFDI2ko/HNcFbiNwaXTMVLB3hWi1sJtn+fzZck5HfzN4qsajAVqZq4nwX69SSt25A== - -"@netlify/esbuild-sunos-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz#97c3152aa7ceaf51247998c836f94773975e716e" - integrity sha512-HLfXG6i2p3wyyyWHeeP4ShGDJ1zRMnf9YLJLe2ezv2KqvcKw/Un/m/FBuDW1p13oSUO7ShISMzgc1dw1GGBEOQ== - -"@netlify/esbuild-windows-32@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz#ccb2a234954714662a4cd1a573d5b271f5288273" - integrity sha512-ZpSQcKbVSCU3ln7mHpsL/5dWsUqCNdTnC5YAArnaOwdrlIunrsbo5j4MOZRRcGExb2uvTc/rb+D3mlGb8j1rkA== - -"@netlify/esbuild-windows-64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz#477c22c04a3299599924e9e4c909c0dec5612f56" - integrity sha512-I3gCdO8+6IDhT4Y1ZmV4o2Gg0oELv7N4kCcE4kqclz10fWHNjf19HQNHyBJe0AWnFV5ZfT154VVD31dqgwpgFw== - -"@netlify/esbuild-windows-arm64@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz#10446d91ca603fa28067541cfa1526081c6ee09b" - integrity sha512-WX52W8U1lsfWcz6NWoSpDs57lgiiMHN23seq8G2bvxzGS/tvYD3dxVLLW5UPoKSnFDyVQT7b6Zkt6AkBten1yQ== - -"@netlify/esbuild@0.14.39": - version "0.14.39" - resolved "https://registry.yarnpkg.com/@netlify/esbuild/-/esbuild-0.14.39.tgz#66897af6d26336e5960b5ba74f1642f1d02a9c6a" - integrity sha512-C3xpwdT2xw6SnSb+hLQoxjtikAKiz6BjQjzlIaysHDpGbmIcmUHZ/X+dyLtCqAvf15WNK5GSBZYOlpgcOE0WZA== - optionalDependencies: - "@netlify/esbuild-android-64" "0.14.39" - "@netlify/esbuild-android-arm64" "0.14.39" - "@netlify/esbuild-darwin-64" "0.14.39" - "@netlify/esbuild-darwin-arm64" "0.14.39" - "@netlify/esbuild-freebsd-64" "0.14.39" - "@netlify/esbuild-freebsd-arm64" "0.14.39" - "@netlify/esbuild-linux-32" "0.14.39" - "@netlify/esbuild-linux-64" "0.14.39" - "@netlify/esbuild-linux-arm" "0.14.39" - "@netlify/esbuild-linux-arm64" "0.14.39" - "@netlify/esbuild-linux-mips64le" "0.14.39" - "@netlify/esbuild-linux-ppc64le" "0.14.39" - "@netlify/esbuild-linux-riscv64" "0.14.39" - "@netlify/esbuild-linux-s390x" "0.14.39" - "@netlify/esbuild-netbsd-64" "0.14.39" - "@netlify/esbuild-openbsd-64" "0.14.39" - "@netlify/esbuild-sunos-64" "0.14.39" - "@netlify/esbuild-windows-32" "0.14.39" - "@netlify/esbuild-windows-64" "0.14.39" - "@netlify/esbuild-windows-arm64" "0.14.39" - -"@netlify/functions@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-1.6.0.tgz#c373423e6fef0e6f7422ac0345e8bbf2cb692366" - integrity sha512-6G92AlcpFrQG72XU8YH8pg94eDnq7+Q0YJhb8x4qNpdGsvuzvrfHWBmqFGp/Yshmv4wex9lpsTRZOocdrA2erQ== - dependencies: - is-promise "^4.0.0" - -"@netlify/functions@^2.4.0": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-2.5.1.tgz#a3c111979cf14654267de8a2384348a066481b4e" - integrity sha512-7//hmiFHXGusAzuzEuXvRT9ItaeRjRs5lRs6lYUkaAXO1jnTWYDB2XdqFq5X4yMRX+/A96nrQ2HwCE+Pd0YMwg== - dependencies: - "@netlify/serverless-functions-api" "1.13.0" - is-promise "^4.0.0" - -"@netlify/ipx@^1.4.6": - version "1.4.6" - resolved "https://registry.yarnpkg.com/@netlify/ipx/-/ipx-1.4.6.tgz#0bd308d70a1d2e1928e66cb49e36294f66f7b8b2" - integrity sha512-rnKR2LXhtnflitPX9CQIv+XSrNlYIqGsV54xrXifhbtHHjCjCw/lixsi8qwAXqEIgZBC9b4Y7prhHqRtC4oIjw== - dependencies: - "@netlify/functions" "^2.4.0" - etag "^1.8.1" - fs-extra "^11.0.0" - ipx "^1.3.1" - micromatch "^4.0.5" - mkdirp "^3.0.0" - murmurhash "^2.0.0" - node-fetch "^2.0.0" - ufo "^1.0.0" - unstorage "1.9.0" - -"@netlify/node-cookies@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@netlify/node-cookies/-/node-cookies-0.1.0.tgz#dda912ba618527695cf519fafa221c5e6777c612" - integrity sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g== - -"@netlify/plugin-nextjs@^4.41.3": - version "4.41.3" - resolved "https://registry.yarnpkg.com/@netlify/plugin-nextjs/-/plugin-nextjs-4.41.3.tgz#f8274526147f652438cc6790b6819ca15d441dd3" - integrity sha512-l8TB61u7A1ZF22QpoyZtresSUsHOJGP9DatECnqlNab3lG8id1kz9Pso+nZVOznWOm98o7w51k2+TIf52x+DBQ== - dependencies: - "@netlify/blobs" "^2.2.0" - "@netlify/esbuild" "0.14.39" - "@netlify/functions" "^1.6.0" - "@netlify/ipx" "^1.4.6" - "@vercel/node-bridge" "^2.1.0" - chalk "^4.1.2" - chokidar "^3.5.3" - destr "^1.1.1" - execa "^5.1.1" - follow-redirects "^1.15.2" - fs-extra "^10.0.0" - globby "^11.0.4" - merge-stream "^2.0.0" - moize "^6.1.0" - node-fetch "^2.6.6" - node-stream-zip "^1.15.0" - outdent "^0.8.0" - p-limit "^3.1.0" - pathe "^0.3.0" - pretty-bytes "^5.6.0" - regexp-tree "^0.1.24" - semver "^7.3.5" - slash "^3.0.0" - tiny-glob "^0.2.9" - -"@netlify/serverless-functions-api@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@netlify/serverless-functions-api/-/serverless-functions-api-1.13.0.tgz#cba7550881721ffc13db5bc7d6addcacef548d2f" - integrity sha512-H3SMpHw24jWjnEMqbXgILWdo3/Iv/2DRzOZZevqqEswRTOWcQJGlU35Dth72VAOxhPyWXjulogG1zJNRw8m2sQ== - dependencies: - "@netlify/node-cookies" "^0.1.0" - urlpattern-polyfill "8.0.2" +"@netlify/plugin-nextjs@^5.0.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@netlify/plugin-nextjs/-/plugin-nextjs-5.3.1.tgz#b0fad62cf6958ba1afa4bec80f72292ee28b2d66" + integrity sha512-pYY8FJ5rXAGFB2QZG5bl3HGBeqSDyqgfUkLsdO8kOEQqZTmobs9BP0faI3RUT63LR2DMHat/IEDIIU9WzsCQvw== "@next/env@14.2.3": version "14.2.3" @@ -3029,98 +2819,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@parcel/watcher-android-arm64@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.0.tgz#9c93763794153e4f76920994a423b6ea3257059d" - integrity sha512-+fPtO/GsbYX1LJnCYCaDVT3EOBjvSFdQN9Mrzh9zWAOOfvidPWyScTrHIZHHfJBvlHzNA0Gy0U3NXFA/M7PHUA== - -"@parcel/watcher-darwin-arm64@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.0.tgz#2c79c2abde16aa24cac67e555b60802fd13fe210" - integrity sha512-T/At5pansFuQ8VJLRx0C6C87cgfqIYhW2N/kBfLCUvDhCah0EnLLwaD/6MW3ux+rpgkpQAnMELOCTKlbwncwiA== - -"@parcel/watcher-darwin-x64@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.0.tgz#23d82f198c5d033f047467c68d7c335f3df49b46" - integrity sha512-vZMv9jl+szz5YLsSqEGCMSllBl1gU1snfbRL5ysJU03MEa6gkVy9OMcvXV1j4g0++jHEcvzhs3Z3LpeEbVmY6Q== - -"@parcel/watcher-freebsd-x64@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.0.tgz#7310cc86abc27dacd57624bcdba1f0ba092e76df" - integrity sha512-dHTRMIplPDT1M0+BkXjtMN+qLtqq24sLDUhmU+UxxLP2TEY2k8GIoqIJiVrGWGomdWsy5IO27aDV1vWyQ6gfHA== - -"@parcel/watcher-linux-arm-glibc@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.0.tgz#c31b76e695027eeb1078d3d6f1d641d0b900c335" - integrity sha512-9NQXD+qk46RwATNC3/UB7HWurscY18CnAPMTFcI9Y8CTbtm63/eex1SNt+BHFinEQuLBjaZwR2Lp+n7pmEJPpQ== - -"@parcel/watcher-linux-arm64-glibc@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.0.tgz#56e09b86e9d8a4096f606be118b588da6e965080" - integrity sha512-QuJTAQdsd7PFW9jNGaV9Pw+ZMWV9wKThEzzlY3Lhnnwy7iW23qtQFPql8iEaSFMCVI5StNNmONUopk+MFKpiKg== - -"@parcel/watcher-linux-arm64-musl@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.0.tgz#27ffd5ca5f510ecd638f9ad22e2e813049db54e7" - integrity sha512-oyN+uA9xcTDo/45bwsd6TFHa7Lc7hKujyMlvwrCLvSckvWogndCEoVYFNfZ6JJ2KNL/6fFiGPcbjp8jJmEh5Ng== - -"@parcel/watcher-linux-x64-glibc@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.0.tgz#44cbbb1e5884a1ca900655f47a0775218318f934" - integrity sha512-KphV8awJmxU3q52JQvJot0QMu07CIyEjV+2Tb2ZtbucEgqyRcxOBDMsqp1JNq5nuDXtcCC0uHQICeiEz38dPBQ== - -"@parcel/watcher-linux-x64-musl@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.0.tgz#4c33993618c8d5113722852806239cb80360494b" - integrity sha512-7jzcOonpXNWcSijPpKD5IbC6xC7yTibjJw9jviVzZostYLGxbz8LDJLUnLzLzhASPlPGgpeKLtFUMjAAzM+gSA== - -"@parcel/watcher-wasm@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-wasm/-/watcher-wasm-2.4.0.tgz#84a3959c8ef1cd67b36b9fec487edbc8f27719f6" - integrity sha512-MNgQ4WCbBybqQ97KwR/hqJGYTg3+s8qHpgIyFWB2qJOBvoJWbXuJGmm4ZkPLq2bMaANqCZqrXwmKYagZTkMKZA== - dependencies: - is-glob "^4.0.3" - micromatch "^4.0.5" - napi-wasm "^1.1.0" - -"@parcel/watcher-win32-arm64@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.0.tgz#2a172fd2fda95fe5389298ca3e70b5a96316162a" - integrity sha512-NOej2lqlq8bQNYhUMnOD0nwvNql8ToQF+1Zhi9ULZoG+XTtJ9hNnCFfyICxoZLXor4bBPTOnzs/aVVoefYnjIg== - -"@parcel/watcher-win32-ia32@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.0.tgz#279225b2ebe1fadd3c5137c9b2365ad422656904" - integrity sha512-IO/nM+K2YD/iwjWAfHFMBPz4Zqn6qBDqZxY4j2n9s+4+OuTSRM/y/irksnuqcspom5DjkSeF9d0YbO+qpys+JA== - -"@parcel/watcher-win32-x64@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.0.tgz#93e0bd0ad1bda2c9a688764b9b30b71dc5b72a71" - integrity sha512-pAUyUVjfFjWaf/pShmJpJmNxZhbMvJASUpdes9jL6bTEJ+gDxPRSpXTIemNyNsb9AtbiGXs9XduP1reThmd+dA== - -"@parcel/watcher@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.0.tgz#2d3c4ef8832a5cdfdbb76b914f022489933e664f" - integrity sha512-XJLGVL0DEclX5pcWa2N9SX1jCGTDd8l972biNooLFtjneuGqodupPQh6XseXIBBeVIMaaJ7bTcs3qGvXwsp4vg== - dependencies: - detect-libc "^1.0.3" - is-glob "^4.0.3" - micromatch "^4.0.5" - node-addon-api "^7.0.0" - optionalDependencies: - "@parcel/watcher-android-arm64" "2.4.0" - "@parcel/watcher-darwin-arm64" "2.4.0" - "@parcel/watcher-darwin-x64" "2.4.0" - "@parcel/watcher-freebsd-x64" "2.4.0" - "@parcel/watcher-linux-arm-glibc" "2.4.0" - "@parcel/watcher-linux-arm64-glibc" "2.4.0" - "@parcel/watcher-linux-arm64-musl" "2.4.0" - "@parcel/watcher-linux-x64-glibc" "2.4.0" - "@parcel/watcher-linux-x64-musl" "2.4.0" - "@parcel/watcher-win32-arm64" "2.4.0" - "@parcel/watcher-win32-ia32" "2.4.0" - "@parcel/watcher-win32-x64" "2.4.0" - "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -5039,11 +4737,6 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@vercel/node-bridge@^2.1.0": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@vercel/node-bridge/-/node-bridge-2.2.2.tgz#f63466ab6a2588afdc6262c2d060289bfe8baa6b" - integrity sha512-haGBC8noyA5BfjCRXRH+VIkHCDVW5iD5UX24P2nOdilwUxI4qWsattS/co8QBGq64XsNLRAMdM5pQUE3zxkF9Q== - "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" @@ -5255,7 +4948,7 @@ acorn@^7.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.11.2, acorn@^8.11.3, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.11.2, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== @@ -5374,7 +5067,7 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: +anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -6201,15 +5894,6 @@ client-only@0.0.1: resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== -clipboardy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-4.0.0.tgz#e73ced93a76d19dd379ebf1f297565426dffdca1" - integrity sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w== - dependencies: - execa "^8.0.1" - is-wsl "^3.1.0" - is64bit "^2.0.0" - cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -6238,11 +5922,6 @@ clsx@^2.0.0: resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== -cluster-key-slot@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac" - integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA== - collapse-white-space@^1.0.2: version "1.0.6" resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" @@ -6310,7 +5989,7 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@^2.20.0, commander@^2.20.3, commander@^2.8.1: +commander@^2.20.0, commander@^2.8.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -6422,11 +6101,6 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -cookie-es@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.0.0.tgz#4759684af168dfc54365b2c2dda0a8d7ee1e4865" - integrity sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ== - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -6532,11 +6206,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crossws@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.1.1.tgz#3a85a8140568e4828d9747a884171ea7e6a8bbe2" - integrity sha512-c9c/o7bS3OjsdpSkvexpka0JNlesBF2JU9B2V1yNsYGwRbAafxhJQ7VI9b48D5bpONz/oxbPGMzBojy9sXoQIQ== - crypto-browserify@^3.12.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -6628,11 +6297,6 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssfilter@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" - integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== - csso@^5.0.5: version "5.0.5" resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" @@ -6896,7 +6560,7 @@ define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -defu@^6.1.2, defu@^6.1.3, defu@^6.1.4: +defu@^6.1.3: version "6.1.4" resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== @@ -6920,11 +6584,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -denque@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" - integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== - depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -6943,16 +6602,6 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -destr@^1.1.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/destr/-/destr-1.2.2.tgz#7ba9befcafb645a50e76b260449c63927b51e22f" - integrity sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA== - -destr@^2.0.1, destr@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.2.tgz#8d3c0ee4ec0a76df54bc8b819bca215592a8c218" - integrity sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg== - destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -6970,11 +6619,6 @@ detect-indent@^6.1.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - detect-libc@^2.0.0, detect-libc@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" @@ -7733,7 +7377,7 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -etag@^1.8.1, etag@~1.8.1: +etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== @@ -7867,11 +7511,6 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-equals@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-3.0.3.tgz#8e6cb4e51ca1018d87dd41982ef92758b3e4197f" - integrity sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg== - fast-equals@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.0.1.tgz#a4eefe3c5d1c0d021aeed0bc10ba5e0c12ee405d" @@ -8084,7 +7723,7 @@ focus-lock@^1.0.0: dependencies: tslib "^2.0.3" -follow-redirects@^1.15.2, follow-redirects@^1.15.4: +follow-redirects@^1.15.4: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== @@ -8180,7 +7819,7 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^11.0.0, fs-extra@^11.1.0: +fs-extra@^11.1.0: version "11.2.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== @@ -8261,11 +7900,6 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-port-please@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.2.tgz#502795e56217128e4183025c89a48c71652f4e49" - integrity sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ== - get-port@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" @@ -8394,12 +8028,7 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - -globby@^11.0.1, globby@^11.0.2, globby@^11.0.4, globby@^11.1.0: +globby@^11.0.1, globby@^11.0.2, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -8411,11 +8040,6 @@ globby@^11.0.1, globby@^11.0.2, globby@^11.0.4, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -8455,21 +8079,6 @@ gunzip-maybe@^1.4.2: pumpify "^1.3.3" through2 "^2.0.3" -h3@^1.10.1, h3@^1.7.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/h3/-/h3-1.10.1.tgz#221634ca9bdb216a6b359bd2915be466a179b8a1" - integrity sha512-UBAUp47hmm4BB5/njB4LrEa9gpuvZj4/Qf/ynSMzO6Ku2RXaouxEfiG2E2IFnv6fxbhAkzjasDxmo6DFdEeXRg== - dependencies: - cookie-es "^1.0.0" - defu "^6.1.4" - destr "^2.0.2" - iron-webcrypto "^1.0.0" - ohash "^1.1.3" - radix3 "^1.1.0" - ufo "^1.3.2" - uncrypto "^0.1.3" - unenv "^1.9.0" - handlebars@^4.7.7: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" @@ -8714,11 +8323,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-shutdown@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/http-shutdown/-/http-shutdown-1.2.2.tgz#41bc78fc767637c4c95179bc492f312c0ae64c5f" - integrity sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw== - https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -8776,11 +8380,6 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== -image-meta@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/image-meta/-/image-meta-0.1.1.tgz#a84dc7d5f61c7d60e85ec0c3ac81beee8646039b" - integrity sha512-+oXiHwOEPr1IE5zY0tcBLED/CYcre15J4nwL50x3o0jxWqEkyjrusiKP3YSU+tr9fvJp33ZcP5Gpj2295g3aEw== - image-size@^1.0.0, image-size@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" @@ -8850,21 +8449,6 @@ invariant@^2.2.1, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ioredis@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.3.2.tgz#9139f596f62fc9c72d873353ac5395bcf05709f7" - integrity sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA== - dependencies: - "@ioredis/commands" "^1.1.1" - cluster-key-slot "^1.1.0" - debug "^4.3.4" - denque "^2.1.0" - lodash.defaults "^4.2.0" - lodash.isarguments "^3.1.0" - redis-errors "^1.2.0" - redis-parser "^3.0.0" - standard-as-callback "^2.1.0" - ip@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105" @@ -8875,29 +8459,6 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipx@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/ipx/-/ipx-1.3.1.tgz#2ff4aa9bc5be74f63cccd80d1df430fcc5e715b6" - integrity sha512-hWRLXdMDOz2q81T2x9lowFtAGO3E5b2HtC8xOOBTrlnxygHNaVrZqJ5c1P3T7tDkC3oCocYRRz0VBffvJKeQlw== - dependencies: - "@fastify/accept-negotiator" "^1.1.0" - consola "^3.2.3" - defu "^6.1.2" - destr "^2.0.1" - etag "^1.8.1" - image-meta "^0.1.1" - listhen "^1.5.5" - node-fetch-native "^1.4.0" - pathe "^1.1.1" - sharp "^0.32.6" - ufo "^1.3.1" - xss "^1.0.14" - -iron-webcrypto@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz#e3b689c0c61b434a0a4cb82d0aeabbc8b672a867" - integrity sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg== - is-absolute-url@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" @@ -9011,11 +8572,6 @@ is-docker@^2.0.0, is-docker@^2.1.1: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - is-extendable@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -9062,13 +8618,6 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - is-interactive@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" @@ -9141,11 +8690,6 @@ is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-promise@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" - integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -9244,20 +8788,6 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -is-wsl@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" - integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== - dependencies: - is-inside-container "^1.0.0" - -is64bit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is64bit/-/is64bit-2.0.0.tgz#198c627cbcb198bbec402251f88e5e1a51236c07" - integrity sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw== - dependencies: - system-architecture "^0.1.0" - isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" @@ -9392,7 +8922,7 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jiti@^1.20.0, jiti@^1.21.0: +jiti@^1.20.0: version "1.21.0" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== @@ -9490,11 +9020,6 @@ json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== -jsonc-parser@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a" - integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA== - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -9580,30 +9105,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -listhen@^1.2.2, listhen@^1.5.5: - version "1.6.0" - resolved "https://registry.yarnpkg.com/listhen/-/listhen-1.6.0.tgz#df26c527c59b87557be4d0408d4a09626bd946c8" - integrity sha512-z0RcEXVX5oTpY1bO02SKoTU/kmZSrFSngNNzHRM6KICR17PTq7ANush6AE6ztGJwJD4RLpBrVHd9GnV51J7s3w== - dependencies: - "@parcel/watcher" "^2.4.0" - "@parcel/watcher-wasm" "2.4.0" - citty "^0.1.5" - clipboardy "^4.0.0" - consola "^3.2.3" - crossws "^0.1.0" - defu "^6.1.4" - get-port-please "^3.1.2" - h3 "^1.10.1" - http-shutdown "^1.2.2" - jiti "^1.21.0" - mlly "^1.5.0" - node-forge "^1.3.1" - pathe "^1.1.2" - std-env "^3.7.0" - ufo "^1.3.2" - untun "^0.1.3" - uqr "^0.1.2" - loader-runner@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" @@ -9657,21 +9158,11 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== - lodash.flatten@^4.2.0, lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== -lodash.isarguments@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg== - lodash.isstring@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" @@ -9741,11 +9232,6 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" -lru-cache@^10.0.0, "lru-cache@^9.1.1 || ^10.0.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" - integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -9760,6 +9246,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +"lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" @@ -10062,11 +9553,6 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micro-memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-4.1.2.tgz#ce719c1ba1e41592f1cd91c64c5f41dcbf135f36" - integrity sha512-+HzcV2H+rbSJzApgkj0NdTakkC+bnyeiUxgT6/m7mjcz1CmM22KYFKp+EVj1sWe4UYcnriJr5uqHQD/gMHLD+g== - micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8" @@ -10340,7 +9826,7 @@ micromark@^3.0.0: micromark-util-types "^1.0.1" uvu "^0.5.0" -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -10378,11 +9864,6 @@ mime@^2.0.3: resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -10481,30 +9962,7 @@ mkdirp@^1.0.3: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" - integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== - -mlly@^1.2.0, mlly@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.5.0.tgz#8428a4617d54cc083d3009030ac79739a0e5447a" - integrity sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ== - dependencies: - acorn "^8.11.3" - pathe "^1.1.2" - pkg-types "^1.0.3" - ufo "^1.3.2" - -moize@^6.1.0: - version "6.1.6" - resolved "https://registry.yarnpkg.com/moize/-/moize-6.1.6.tgz#ac2e723e74b951875fe2c0c3433405c2b098c3e6" - integrity sha512-vSKdIUO61iCmTqhdoIDrqyrtp87nWZUmBPniNjO0fX49wEYmyDO4lvlnFXiGcaH1JLE/s/9HbiK4LSHsbiUY6Q== - dependencies: - fast-equals "^3.0.1" - micro-memoize "^4.1.2" - -mri@^1.1.0, mri@^1.2.0: +mri@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== @@ -10524,11 +9982,6 @@ ms@2.1.3, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -murmurhash@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/murmurhash/-/murmurhash-2.0.1.tgz#4097720e08cf978872194ad84ea5be2dec9b610f" - integrity sha512-5vQEh3y+DG/lMPM0mCGPDnyV8chYg/g7rl6v3Gd8WMF9S429ox3Xk8qrk174kWhG767KQMqqxLD1WnGd77hiew== - nanoid@^3.3.6, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -10539,11 +9992,6 @@ napi-build-utils@^1.0.1: resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== -napi-wasm@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" - integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -10638,11 +10086,6 @@ node-addon-api@^6.1.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== -node-addon-api@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" - integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== - node-dir@^0.1.17: version "0.1.17" resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" @@ -10650,23 +10093,18 @@ node-dir@^0.1.17: dependencies: minimatch "^3.0.2" -node-fetch-native@^1.2.0, node-fetch-native@^1.4.0, node-fetch-native@^1.6.1: +node-fetch-native@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.1.tgz#f95c74917d3cebc794cdae0cd2a9c7594aad0cb4" integrity sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw== -node-fetch@^2.0.0, node-fetch@^2.6.6: +node-fetch@^2.0.0: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" -node-forge@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -10708,11 +10146,6 @@ node-releases@^2.0.14: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -node-stream-zip@^1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" - integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== - normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -10842,15 +10275,6 @@ objectorarray@^1.0.5: resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5" integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg== -ofetch@^1.1.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.3.3.tgz#588cb806a28e5c66c2c47dd8994f9059a036d8c0" - integrity sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg== - dependencies: - destr "^2.0.1" - node-fetch-native "^1.4.0" - ufo "^1.3.0" - ohash@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.3.tgz#f12c3c50bfe7271ce3fd1097d42568122ccdcf07" @@ -10930,11 +10354,6 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== -outdent@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.8.0.tgz#2ebc3e77bf49912543f1008100ff8e7f44428eb0" - integrity sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A== - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -10942,7 +10361,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2, p-limit@^3.1.0: +p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -11130,12 +10549,7 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pathe@^0.3.0: - version "0.3.9" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.3.9.tgz#4baff768f37f03e3d9341502865fb93116f65191" - integrity sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g== - -pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: +pathe@^1.1.1, pathe@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== @@ -11235,15 +10649,6 @@ pkg-dir@^7.0.0: dependencies: find-up "^6.3.0" -pkg-types@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" - integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== - dependencies: - jsonc-parser "^3.2.0" - mlly "^1.2.0" - pathe "^1.1.0" - plaiceholder@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/plaiceholder/-/plaiceholder-3.0.0.tgz#bd0a3ea0613523e4b8a8239ab7566432880d7fc3" @@ -11364,11 +10769,6 @@ prettier@^2.0.5, prettier@^2.8.0, prettier@^2.8.8: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -pretty-bytes@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - pretty-error@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" @@ -11552,11 +10952,6 @@ queue@6.0.2: dependencies: inherits "~2.0.3" -radix3@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.0.tgz#9745df67a49c522e94a33d0a93cf743f104b6e0d" - integrity sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A== - ramda@0.29.0: version "0.29.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.0.tgz#fbbb67a740a754c8a4cbb41e2a6e0eb8507f55fb" @@ -11916,18 +11311,6 @@ recharts@^2.7.3: tiny-invariant "^1.3.1" victory-vendor "^36.6.8" -redis-errors@^1.0.0, redis-errors@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" - integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w== - -redis-parser@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" - integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A== - dependencies: - redis-errors "^1.0.0" - reflect.getprototypeof@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" @@ -11969,11 +11352,6 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.3.0.tgz#4bb61461b1a19b8b913f3960364bb57887f920ee" integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== -regexp-tree@^0.1.24: - version "0.1.27" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" - integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== - regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" @@ -12552,11 +11930,6 @@ stackframe@^1.3.4: resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== -standard-as-callback@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" - integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== - state-toggle@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" @@ -12567,11 +11940,6 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -std-env@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" - integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== - stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" @@ -12842,11 +12210,6 @@ synchronous-promise@^2.0.15: resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.17.tgz#38901319632f946c982152586f2caf8ddc25c032" integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g== -system-architecture@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d" - integrity sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA== - tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -13001,14 +12364,6 @@ timers-browserify@^2.0.12: dependencies: setimmediate "^1.0.4" -tiny-glob@^0.2.9: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - tiny-invariant@^1.0.6, tiny-invariant@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" @@ -13261,7 +12616,7 @@ typescript@^5.4.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.2.tgz#0ae9cebcfae970718474fe0da2c090cad6577372" integrity sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ== -ufo@^1.0.0, ufo@^1.2.0, ufo@^1.3.0, ufo@^1.3.1, ufo@^1.3.2: +ufo@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496" integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA== @@ -13289,27 +12644,11 @@ unbzip2-stream@^1.0.9: buffer "^5.2.1" through "^2.3.8" -uncrypto@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" - integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== - undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -unenv@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.9.0.tgz#469502ae85be1bd3a6aa60f810972b1a904ca312" - integrity sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g== - dependencies: - consola "^3.2.3" - defu "^6.1.3" - mime "^3.0.0" - node-fetch-native "^1.6.1" - pathe "^1.1.1" - unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -13506,37 +12845,11 @@ unplugin@^1.3.1: webpack-sources "^3.2.3" webpack-virtual-modules "^0.6.1" -unstorage@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.9.0.tgz#0c1977f4e769a48344339ac97ec3f2feea94d43d" - integrity sha512-VpD8ZEYc/le8DZCrny3bnqKE4ZjioQxBRnWE+j5sGNvziPjeDlaS1NaFFHzl/kkXaO3r7UaF8MGQrs14+1B4pQ== - dependencies: - anymatch "^3.1.3" - chokidar "^3.5.3" - destr "^2.0.1" - h3 "^1.7.1" - ioredis "^5.3.2" - listhen "^1.2.2" - lru-cache "^10.0.0" - mri "^1.2.0" - node-fetch-native "^1.2.0" - ofetch "^1.1.1" - ufo "^1.2.0" - untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -untun@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/untun/-/untun-0.1.3.tgz#5d10dee37a3a5737ff03d158be877dae0a0e58a6" - integrity sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ== - dependencies: - citty "^0.1.5" - consola "^3.2.3" - pathe "^1.1.1" - update-browserslist-db@^1.0.13: version "1.0.13" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" @@ -13545,11 +12858,6 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" -uqr@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" - integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -13565,11 +12873,6 @@ url@^0.11.0: punycode "^1.4.1" qs "^6.11.2" -urlpattern-polyfill@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5" - integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== - use-callback-ref@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.1.tgz#9be64c3902cbd72b07fe55e56408ae3a26036fd0" @@ -13937,14 +13240,6 @@ ws@^8.2.3: resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== -xss@^1.0.14: - version "1.0.14" - resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" - integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw== - dependencies: - commander "^2.20.3" - cssfilter "0.0.10" - xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" From 248aef9c9a0bf84067ad7535b7a5409253b65d15 Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 27 May 2024 14:19:16 +0200 Subject: [PATCH 151/366] prefix default locale by using nextjs redirects and ignore heavy deps from output --- netlify.toml | 24 +-------------------- next-i18next.config.js | 3 +-- next.config.js | 47 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 48 insertions(+), 26 deletions(-) diff --git a/netlify.toml b/netlify.toml index 3921933497d..68ed495e03a 100644 --- a/netlify.toml +++ b/netlify.toml @@ -36,26 +36,4 @@ [[plugins.inputs.audits]] path = "en/developers/docs/intro-to-ethereum/" [[plugins.inputs.audits]] - path = "en/developers/tutorials/creating-a-wagmi-ui-for-your-contract/" - -[functions] - - [functions.___netlify-odb-handler] - external_node_modules = ["sharp"] - included_files = [ - "./src/intl/**/*", - "!./public/**/*", - "node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context*", - "node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/amp-context*", - "node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context*", - "node_modules/sharp/**/*", - ] - - [functions.___netlify-handler] - included_files = [ - "./src/intl/**/*", - "!./public/**/*", - "node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context*", - "node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/amp-context*", - "node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context*", - ] + path = "en/developers/tutorials/creating-a-wagmi-ui-for-your-contract/" \ No newline at end of file diff --git a/next-i18next.config.js b/next-i18next.config.js index c9ea46a265b..4faec45f5f4 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -13,8 +13,7 @@ module.exports = { // 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: ["default", ...locales], - localeDetection: false, + locales: [...locales, "default"], }, // 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 776f63aeb30..c88fc892814 100644 --- a/next.config.js +++ b/next.config.js @@ -38,10 +38,55 @@ module.exports = (phase, { defaultConfig }) => { images: { deviceSizes: [640, 750, 828, 1080, 1200, 1504, 1920], }, + async redirects() { + /** + * Redirect /default to /en. + * + * This allows us to always have a default locale prefix for all URLs. + * + * @see https://github.com/vercel/next.js/discussions/18419#discussioncomment-327128 + */ + return [ + { + source: "/default", + destination: "/en", + locale: false, + permanent: false, + }, + { + source: "/default/:slug*", + destination: "/en/:slug*", + locale: false, + permanent: false, + }, + ] + }, } if (phase !== PHASE_DEVELOPMENT_SERVER) { - nextConfig = { ...nextConfig, experimental } + nextConfig = { + ...nextConfig, + experimental: { + ...experimental, + outputFileTracingExcludes: { + "*": [ + /** + * Exclude these paths from the trace output to avoid bloating the + * Netlify functions bundle. + * + * @see https://github.com/orgs/vercel/discussions/103#discussioncomment-5427097 + * @see https://nextjs.org/docs/app/api-reference/next-config-js/output#automatically-copying-traced-files + */ + "node_modules/@swc/core-linux-x64-gnu", + "node_modules/@swc/core-linux-x64-musl", + "node_modules/@esbuild/linux-x64", + "public/**/*.png", + "public/**/*.gif", + "src/data", + ], + }, + }, + } } return nextConfig From 2d33b16483585762e5913919113a02d4a74014d2 Mon Sep 17 00:00:00 2001 From: Pablo Pettinari Date: Mon, 27 May 2024 15:00:38 +0200 Subject: [PATCH 152/366] optimize max width for home hero image --- src/components/Hero/HomeHero/index.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Hero/HomeHero/index.tsx b/src/components/Hero/HomeHero/index.tsx index ae17ffb59a5..20f3b761577 100644 --- a/src/components/Hero/HomeHero/index.tsx +++ b/src/components/Hero/HomeHero/index.tsx @@ -17,7 +17,8 @@ const HomeHero = ({ heroImg }: HomeHeroProps) => { {t("page-index:page-index-hero-image-alt")} Date: Mon, 27 May 2024 10:12:15 -0300 Subject: [PATCH 153/366] feat: avoid rendering MobileCloseBar on desktop --- src/components/LanguagePicker/index.tsx | 43 +++++++++++++------------ 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/components/LanguagePicker/index.tsx b/src/components/LanguagePicker/index.tsx index 8c345b3f4cd..2ad5664678b 100644 --- a/src/components/LanguagePicker/index.tsx +++ b/src/components/LanguagePicker/index.tsx @@ -19,6 +19,8 @@ import { import { Button } from "@/components/Buttons" import { BaseLink } from "@/components/Link" +import { isMobile } from "@/lib/utils/isMobile" + import MenuItem from "./MenuItem" import NoResultsCallout from "./NoResultsCallout" import { useLanguagePicker } from "./useLanguagePicker" @@ -59,6 +61,23 @@ const LanguagePicker = ({ inputRef.current?.focus() }) + const MobileCloseBar = () => { + return ( + + + + ) + } + return ( {children} @@ -76,23 +95,8 @@ const LanguagePicker = ({ {...props} > {/* Mobile Close bar */} - - - + {/* avoid rendering mobile only feature on desktop */} + {isMobile() && } {/* Main Language selection menu */} - + Date: Mon, 27 May 2024 10:20:17 -0300 Subject: [PATCH 154/366] chore: move onClick handlers to external functions to avoid re-creating them on each render --- src/components/LanguagePicker/index.tsx | 62 ++++++++++++++----------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/src/components/LanguagePicker/index.tsx b/src/components/LanguagePicker/index.tsx index 2ad5664678b..3ad8438a570 100644 --- a/src/components/LanguagePicker/index.tsx +++ b/src/components/LanguagePicker/index.tsx @@ -16,6 +16,8 @@ import { useEventListener, } from "@chakra-ui/react" +import { LocaleDisplayInfo } from "@/lib/types" + import { Button } from "@/components/Buttons" import { BaseLink } from "@/components/Link" @@ -61,22 +63,38 @@ const LanguagePicker = ({ inputRef.current?.focus() }) - const MobileCloseBar = () => { - return ( - onClose() + const handleMenuItemClose = (displayInfo: LocaleDisplayInfo) => + onClose({ + eventAction: "Locale chosen", + eventName: displayInfo.localeOption, + }) + const handleBaseLinkClose = () => + onClose({ + eventAction: "Translation program link (menu footer)", + eventName: "/contributing/translation-program", + }) + + const MobileCloseBar = () => ( + + - - ) - } + {t("common:close")} + + + ) return ( @@ -178,12 +196,7 @@ const LanguagePicker = ({ e.preventDefault() inputRef.current?.focus() }} - onClick={() => - onClose({ - eventAction: "Locale chosen", - eventName: displayInfo.localeOption, - }) - } + onClick={() => handleMenuItemClose(displayInfo)} /> ))} @@ -216,12 +229,7 @@ const LanguagePicker = ({ - onClose({ - eventAction: "Translation program link (menu footer)", - eventName: "/contributing/translation-program", - }) - } + onClick={handleBaseLinkClose} > {t("common:learn-more")} From e06d8f74f4afa7b7b89e08842d6c30cd1f090319 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Quiroz?= Date: Mon, 27 May 2024 11:03:20 -0300 Subject: [PATCH 155/366] feat: avoid rendering desktop menues on mobile --- src/components/Nav/index.tsx | 129 ++++++++++++++++++----------------- 1 file changed, 68 insertions(+), 61 deletions(-) diff --git a/src/components/Nav/index.tsx b/src/components/Nav/index.tsx index 2f88c1d8609..364bce48252 100644 --- a/src/components/Nav/index.tsx +++ b/src/components/Nav/index.tsx @@ -22,6 +22,8 @@ import LanguagePicker from "@/components/LanguagePicker" import { BaseLink } from "@/components/Link" import Search from "@/components/Search" +import { isMobile } from "@/lib/utils/isMobile" + import { DESKTOP_LANGUAGE_BUTTON_NAME, NAV_PY } from "@/lib/constants" import Menu from "./Menu" @@ -33,6 +35,7 @@ const Nav = () => { const { toggleColorMode, linkSections, mobileNavProps } = useNav() const { locale } = useRouter() const { t } = useTranslation("common") + const isDesktop = !isMobile() const searchModalDisclosure = useDisclosure() const navWrapperRef = useRef(null) const languagePickerState = useDisclosure() @@ -95,76 +98,80 @@ const Nav = () => { justifyContent={{ base: "flex-end", md: "space-between" }} ms={{ base: 3, xl: 8 }} > - + {/* avoid rendering desktop Menu version on mobile */} + {isDesktop && } + - {/* Desktop */} - - - - {/* Locale-picker menu */} - - + + + {/* Locale-picker menu */} + - - - {t("common:languages")}  - - {locale!.toUpperCase()} - - - - {/* Mobile */} + + + + {t("common:languages")}  + + {locale!.toUpperCase()} + + + + )} + Date: Mon, 27 May 2024 11:34:58 -0300 Subject: [PATCH 156/366] feat: avoid rendering desktop nav menu content on mobile --- src/components/Nav/Menu/index.tsx | 61 ++++++++++++++++++------------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/src/components/Nav/Menu/index.tsx b/src/components/Nav/Menu/index.tsx index aa33b460865..900353fdec2 100644 --- a/src/components/Nav/Menu/index.tsx +++ b/src/components/Nav/Menu/index.tsx @@ -4,6 +4,8 @@ import * as NavigationMenu from "@radix-ui/react-navigation-menu" import { Button } from "@/components/Buttons" +import { isMobile } from "@/lib/utils/isMobile" + import { MAIN_NAV_ID, NAV_PY, SECTION_LABELS } from "@/lib/constants" import type { NavSections } from "../types" @@ -26,6 +28,8 @@ const Menu = ({ sections, ...props }: NavMenuProps) => { onClose, } = useNavMenu(sections) + const isDesktop = !isMobile() + return ( { - - {/** - * This is the CONTAINER for all three menu levels - * This renders inside the NavigationMenu.Viewport component - */} - - - - + + {/* avoid rendering desktop menu on mobile */} + {/* Desktop Menu content */} + {isDesktop && ( + + {/** + * This is the CONTAINER for all three menu levels + * This renders inside the NavigationMenu.Viewport component + */} + + + + + )} ) })} From 5528839f0f5f4bbb0513e3fa3de22f8d13de0927 Mon Sep 17 00:00:00 2001 From: Corwin Smith Date: Mon, 27 May 2024 16:15:42 -0600 Subject: [PATCH 157/366] Remove unused component VideoIframe --- src/components/MdComponents.tsx | 2 -- src/components/VideoIframe/index.tsx | 31 ---------------------------- 2 files changed, 33 deletions(-) delete mode 100644 src/components/VideoIframe/index.tsx diff --git a/src/components/MdComponents.tsx b/src/components/MdComponents.tsx index fe8182f787f..9affa173a57 100644 --- a/src/components/MdComponents.tsx +++ b/src/components/MdComponents.tsx @@ -41,7 +41,6 @@ import InfoBanner from "./InfoBanner" import IssuesList from "./IssuesList" import LocaleDateTime from "./LocaleDateTime" import MainArticle from "./MainArticle" -import VideoIframe from "./VideoIframe" /** * Base HTML elements @@ -145,7 +144,6 @@ export const htmlElements = { pre: Pre, time: LocaleDateTime, ul: UnorderedList, - iframe: VideoIframe, ...mdxTableComponents, } diff --git a/src/components/VideoIframe/index.tsx b/src/components/VideoIframe/index.tsx deleted file mode 100644 index 67ae22fa17b..00000000000 --- a/src/components/VideoIframe/index.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Box } from "@chakra-ui/react" - -type VideoIframeProps = { - src: string - title?: string -} - -const VideoIframe = ({ src, title }: VideoIframeProps) => { - return ( - - -

    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 In the next lesson we'll learn how to use your new account to diff --git a/src/data/community-events.json b/src/data/community-events.json index a63e61a8c6d..51c7e13f47f 100644 --- a/src/data/community-events.json +++ b/src/data/community-events.json @@ -23,8 +23,8 @@ "sponsor": null, "location": "Rio de Janeiro, Brazil", "description": "3rd Edition of LATAM's most loved ETH event. Bootcamp, Buildathon & Conference", - "startDate": "2024-04-09", - "endDate": "2024-04-14" + "startDate": "2024-03-19", + "endDate": "2024-03-24" }, { "title": "ETHKL 2023", diff --git a/src/data/crowdin/combined-translators.json b/src/data/crowdin/combined-translators.json index cace42d50d7..b22a50b67ee 100644 --- a/src/data/crowdin/combined-translators.json +++ b/src/data/crowdin/combined-translators.json @@ -171,25 +171,19 @@ { "id": 15966777, "username": "tareqgh", - "totalCosts": 593.88, + "totalCosts": 207.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966777/medium/c434fa240e13cc295e9947bd14d0394f_default.png" }, { "id": 15930651, "username": "0xOZ", - "totalCosts": 237.35, + "totalCosts": 147.46, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15930651/medium/b4738a8e10109842b168d657d53eeaec.jpeg" }, - { - "id": 15503382, - "username": "mohammedE22", - "totalCosts": 109.08, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15503382/medium/b5e1fa8943e236c07bbe459d92d23dcb.png" - }, { "id": 15567971, "username": "HASANTAHHAN", - "totalCosts": 87.87, + "totalCosts": 41.41, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15567971/medium/82c26b32ac2312ed1fbb253a222ec9e1.jpg" }, { @@ -379,9 +373,15 @@ { "id": 14787370, "username": "agulani", - "totalCosts": 798.91, + "totalCosts": 256.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787370/medium/9bb8a2d0d244e04f14b523e895b08100.jpg" }, + { + "id": 15804803, + "username": "sun_dariia", + "totalCosts": 32.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15804803/medium/e753b43a4cf480cd2a37c5795cdb83ba_default.png" + }, { "id": 15904933, "username": "Zumrud.I", @@ -509,7 +509,7 @@ { "id": 15954257, "username": "arifulone", - "totalCosts": 1124.13, + "totalCosts": 355.52, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg" } ] @@ -520,7 +520,7 @@ { "id": 15954257, "username": "arifulone", - "totalCosts": 1194.83, + "totalCosts": 1165.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg" } ] @@ -564,7 +564,7 @@ { "id": 15954257, "username": "arifulone", - "totalCosts": 863.55, + "totalCosts": 824.16, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg" } ] @@ -586,7 +586,7 @@ { "id": 15954257, "username": "arifulone", - "totalCosts": 2071.51, + "totalCosts": 2059.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg" } ] @@ -597,7 +597,7 @@ { "id": 15954257, "username": "arifulone", - "totalCosts": 2029.09, + "totalCosts": 1982.63, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg" } ] @@ -635,7 +635,7 @@ { "id": 14998169, "username": "xcanchal", - "totalCosts": 163.62, + "totalCosts": 144.43, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14998169/medium/6da03bbf781254776ba5a5c630ee4644.png" }, { @@ -653,7 +653,7 @@ { "id": 14643068, "username": "egelizo", - "totalCosts": 20.2, + "totalCosts": 12.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14643068/medium/f6f25b4f0e429a11e235ade8d866b314.jpeg" } ] @@ -783,20 +783,20 @@ { "id": 15344526, "username": "Joanmacat", - "totalCosts": 835.27, + "totalCosts": 212.1, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15344526/medium/9c82a079035424edd8b43ca59a8dcb3f.jpg" }, - { - "id": 14643068, - "username": "egelizo", - "totalCosts": 55.55, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14643068/medium/f6f25b4f0e429a11e235ade8d866b314.jpeg" - }, { "id": 14915329, "username": "Mariam163", "totalCosts": 11.11, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14915329/medium/504f7acd4e8cb7ee70fbe35240bed705.jpg" + }, + { + "id": 14643068, + "username": "egelizo", + "totalCosts": 9.09, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14643068/medium/f6f25b4f0e429a11e235ade8d866b314.jpeg" } ] }, @@ -858,7 +858,7 @@ { "id": 14643068, "username": "egelizo", - "totalCosts": 1375.62, + "totalCosts": 1321.08, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14643068/medium/f6f25b4f0e429a11e235ade8d866b314.jpeg" } ] @@ -878,19 +878,13 @@ { "id": 15086733, "username": "hedwika", - "totalCosts": 937.28, + "totalCosts": 333.3, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15086733/medium/e58bffb1edb2cd4a9e2bbe7046a0d1e8.jpeg" }, - { - "id": 15701215, - "username": "drsticka.david", - "totalCosts": 42.42, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15701215/medium/e88deaad9afa8cb84d012b354f516a21.jpeg" - }, { "id": 15188556, "username": "korinektomas", - "totalCosts": 29.29, + "totalCosts": 17.17, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15188556/medium/ede830d725802daea8fd2fa53e0ae952.png" }, { @@ -906,10 +900,10 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880416/medium/3967eaff6d735a5983f60115a12cf7ab_default.png" }, { - "id": 14739786, - "username": "mk.marcus.aurelius", - "totalCosts": 2.02, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14739786/medium/2880dbab818b3884cfb090a588203a28_default.png" + "id": 15701215, + "username": "drsticka.david", + "totalCosts": 5.05, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15701215/medium/e88deaad9afa8cb84d012b354f516a21.jpeg" } ] }, @@ -938,6 +932,12 @@ "username": "FoltinV", "totalCosts": 2185.64, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843833/medium/d9afa5c66a59b8166143dd4e1cca0630.jpeg" + }, + { + "id": 15086733, + "username": "hedwika", + "totalCosts": 56.56, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15086733/medium/e58bffb1edb2cd4a9e2bbe7046a0d1e8.jpeg" } ] }, @@ -987,7 +987,7 @@ { "id": 15086733, "username": "hedwika", - "totalCosts": 1194.83, + "totalCosts": 1165.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15086733/medium/e58bffb1edb2cd4a9e2bbe7046a0d1e8.jpeg" } ] @@ -1096,27 +1096,27 @@ { "id": 15455500, "username": "SebastianSupreme", - "totalCosts": 967.58, + "totalCosts": 960.51, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15455500/medium/529d1b028e7c3d98b67d4008773a75a9.png" }, { "id": 15371878, "username": "Tedmeier", - "totalCosts": 371.68, + "totalCosts": 364.61, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15371878/medium/162454f1968a82ecbaceb7915709fe37_default.png" }, + { + "id": 15123193, + "username": "Coram_Deo", + "totalCosts": 14.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" + }, { "id": 15505160, "username": "Niggl", "totalCosts": 14.14, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15505160/medium/2af7b18903926af188f79fc706ba7610.png" }, - { - "id": 15123193, - "username": "Coram_Deo", - "totalCosts": 7.07, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" - }, { "id": 15469846, "username": "VVS1", @@ -1154,7 +1154,7 @@ { "id": 14887772, "username": "bruderbuck.eth", - "totalCosts": 240.38, + "totalCosts": 221.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14887772/medium/38c9634b12b554feef20f4e9f88bf8c1.png" }, { @@ -1166,26 +1166,20 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 38.38, + "totalCosts": 43.43, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { "id": 15221766, "username": "chrboesch", - "totalCosts": 32.32, + "totalCosts": 24.24, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15221766/medium/9818a6f07e95c5f3260f34774d4e26fe.jpg" }, { "id": 15455500, "username": "SebastianSupreme", - "totalCosts": 12.12, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15455500/medium/529d1b028e7c3d98b67d4008773a75a9.png" - }, - { - "id": 15947755, - "username": "RubenSilva", "totalCosts": 7.07, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947755/medium/cf9980cfafab6b7c43f6e16e1ca48324_default.png" + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15455500/medium/529d1b028e7c3d98b67d4008773a75a9.png" } ] }, @@ -1201,7 +1195,7 @@ { "id": 15455500, "username": "SebastianSupreme", - "totalCosts": 59.59, + "totalCosts": 53.53, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15455500/medium/529d1b028e7c3d98b67d4008773a75a9.png" }, { @@ -1299,7 +1293,7 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 184.83, + "totalCosts": 176.75, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -1431,7 +1425,7 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 15.15, + "totalCosts": 86.86, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -1601,7 +1595,7 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 16.16, + "totalCosts": 72.72, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -1776,7 +1770,7 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 1443.29, + "totalCosts": 1111, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -1869,7 +1863,7 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 726.19, + "totalCosts": 699.93, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -2142,12 +2136,6 @@ "totalCosts": 108.07, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959389/medium/8163669279ee4bd20f4b7db97f6000fa.png" }, - { - "id": 15810863, - "username": "bitblondy", - "totalCosts": 51.51, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810863/medium/36dab07f1a377151348d57285a7955f7_default.png" - }, { "id": 15082843, "username": "StevenR73", @@ -2301,7 +2289,7 @@ { "id": 15810863, "username": "bitblondy", - "totalCosts": 647.41, + "totalCosts": 613.07, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810863/medium/36dab07f1a377151348d57285a7955f7_default.png" }, { @@ -2310,6 +2298,12 @@ "totalCosts": 149.48, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959389/medium/8163669279ee4bd20f4b7db97f6000fa.png" }, + { + "id": 15123193, + "username": "Coram_Deo", + "totalCosts": 11.11, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" + }, { "id": 14920111, "username": "JueK3y", @@ -2330,7 +2324,7 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 68.68, + "totalCosts": 69.69, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -2382,15 +2376,9 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 442.38, + "totalCosts": 266.64, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, - { - "id": 15185884, - "username": "carmen1912", - "totalCosts": 130.29, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg" - }, { "id": 14920111, "username": "JueK3y", @@ -2703,12 +2691,6 @@ "username": "JueK3y", "totalCosts": 17.17, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14920111/medium/2a49cdd81e2cab1e2190009caa3de573.png" - }, - { - "id": 15123193, - "username": "Coram_Deo", - "totalCosts": 4.04, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" } ] }, @@ -3464,25 +3446,13 @@ { "id": 15947755, "username": "RubenSilva", - "totalCosts": 369.66, + "totalCosts": 101, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947755/medium/cf9980cfafab6b7c43f6e16e1ca48324_default.png" }, - { - "id": 15932515, - "username": "Astronaut828", - "totalCosts": 217.15, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/c41b45c87a237615839b37bfa2118e8b.jpeg" - }, - { - "id": 14707408, - "username": "Just-Stev", - "totalCosts": 164.63, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14707408/medium/06bb638d445604925d0bcaa58768558b.png" - }, { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 48.48, + "totalCosts": 47.47, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -3491,6 +3461,12 @@ "totalCosts": 15.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15455500/medium/529d1b028e7c3d98b67d4008773a75a9.png" }, + { + "id": 14707408, + "username": "Just-Stev", + "totalCosts": 14.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14707408/medium/06bb638d445604925d0bcaa58768558b.png" + }, { "id": 15108283, "username": "iPeak", @@ -3500,9 +3476,15 @@ { "id": 15421538, "username": "johannt", - "totalCosts": 13.13, + "totalCosts": 11.11, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15421538/medium/7e1f5d90509951072c0de0d9684baa35.png" }, + { + "id": 15932515, + "username": "Astronaut828", + "totalCosts": 7.07, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/c41b45c87a237615839b37bfa2118e8b.jpeg" + }, { "id": 15471540, "username": "KaptainBollo", @@ -3621,53 +3603,23 @@ "fileId": "2954", "contributors": [ { - "id": 15932515, - "username": "Astronaut828", - "totalCosts": 932.23, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/c41b45c87a237615839b37bfa2118e8b.jpeg" - }, - { - "id": 15455500, - "username": "SebastianSupreme", - "totalCosts": 404, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15455500/medium/529d1b028e7c3d98b67d4008773a75a9.png" + "id": 14812426, + "username": "Robert-Me", + "totalCosts": 22.22, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14812426/medium/c6d86ade730b6777e9e90c4ab6ca2227.png" }, { "id": 14553038, "username": "philippseifert", - "totalCosts": 111.1, + "totalCosts": 13.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553038/medium/57eeff85645c6b316f8fd2338ead7e06.JPG" }, { "id": 15002975, "username": "Sabine.Goesker", - "totalCosts": 91.91, + "totalCosts": 13.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15002975/medium/c27bb77b234f3e4492a3880925ffa6f3.jpeg" }, - { - "id": 15185884, - "username": "carmen1912", - "totalCosts": 23.23, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg" - }, - { - "id": 14812426, - "username": "Robert-Me", - "totalCosts": 22.22, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14812426/medium/c6d86ade730b6777e9e90c4ab6ca2227.png" - }, - { - "id": 14920111, - "username": "JueK3y", - "totalCosts": 6.06, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14920111/medium/2a49cdd81e2cab1e2190009caa3de573.png" - }, - { - "id": 14340146, - "username": "axelrindle", - "totalCosts": 3.03, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14340146/medium/52da5ba5aa190831d919355b8b0b543a.jpg" - }, { "id": 13959389, "username": "inlak16", @@ -3753,13 +3705,13 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 636.3, + "totalCosts": 626.2, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { "id": 15185884, "username": "carmen1912", - "totalCosts": 487.83, + "totalCosts": 477.73, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg" }, { @@ -3958,13 +3910,13 @@ { "id": 15947755, "username": "RubenSilva", - "totalCosts": 206.04, + "totalCosts": 166.65, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947755/medium/cf9980cfafab6b7c43f6e16e1ca48324_default.png" }, { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 126.25, + "totalCosts": 153.52, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -4063,7 +4015,7 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 3222.91, + "totalCosts": 3218.87, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -4089,18 +4041,18 @@ "totalCosts": 94.94, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14927031/medium/61dbd44991ed6142d8802bdb16440e1b.png" }, - { - "id": 13959389, - "username": "inlak16", - "totalCosts": 59.59, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959389/medium/8163669279ee4bd20f4b7db97f6000fa.png" - }, { "id": 15932515, "username": "Astronaut828", "totalCosts": 54.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/c41b45c87a237615839b37bfa2118e8b.jpeg" }, + { + "id": 13959389, + "username": "inlak16", + "totalCosts": 52.52, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959389/medium/8163669279ee4bd20f4b7db97f6000fa.png" + }, { "id": 15455500, "username": "SebastianSupreme", @@ -4249,7 +4201,7 @@ { "id": 15810863, "username": "bitblondy", - "totalCosts": 214.12, + "totalCosts": 200.99, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810863/medium/36dab07f1a377151348d57285a7955f7_default.png" }, { @@ -4579,6 +4531,12 @@ "totalCosts": 652.46, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15189582/medium/607fd2e858dc07184c9200683f906fdb.jpg" }, + { + "id": 15123193, + "username": "Coram_Deo", + "totalCosts": 278.76, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" + }, { "id": 15047729, "username": "EricTheTurtle", @@ -4657,7 +4615,7 @@ { "id": 15932515, "username": "Astronaut828", - "totalCosts": 562.57, + "totalCosts": 555.5, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/c41b45c87a237615839b37bfa2118e8b.jpeg" }, { @@ -4675,7 +4633,7 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 29.29, + "totalCosts": 36.36, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -4715,7 +4673,7 @@ { "id": 15741843, "username": "ausprxche", - "totalCosts": 227.25, + "totalCosts": 213.11, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15741843/medium/be13bc9815072e873b79771e877bd11e.png" }, { @@ -4761,7 +4719,7 @@ { "id": 15776027, "username": "korbisch", - "totalCosts": 442.38, + "totalCosts": 433.29, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15776027/medium/5ff7549d8af9bf4fc4bae6e891d9bce5_default.png" }, { @@ -4773,8 +4731,14 @@ { "id": 15932515, "username": "Astronaut828", - "totalCosts": 46.46, + "totalCosts": 30.3, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/c41b45c87a237615839b37bfa2118e8b.jpeg" + }, + { + "id": 15123193, + "username": "Coram_Deo", + "totalCosts": 25.25, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" } ] }, @@ -4813,21 +4777,21 @@ { "id": 15947755, "username": "RubenSilva", - "totalCosts": 702.96, + "totalCosts": 207.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947755/medium/cf9980cfafab6b7c43f6e16e1ca48324_default.png" }, + { + "id": 15123193, + "username": "Coram_Deo", + "totalCosts": 32.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" + }, { "id": 14952363, "username": "ensingerphilipp", - "totalCosts": 27.27, + "totalCosts": 23.23, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14952363/medium/491e25bf6c69040369e342c3b1d12249.jpeg" }, - { - "id": 15031693, - "username": "KIP_KIP", - "totalCosts": 5.05, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15031693/medium/d6a9f6055f89569eabf0b10eb4da4da7_default.png" - }, { "id": 15047729, "username": "EricTheTurtle", @@ -4839,12 +4803,6 @@ "username": "SebastianSupreme", "totalCosts": 3.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15455500/medium/529d1b028e7c3d98b67d4008773a75a9.png" - }, - { - "id": 15123193, - "username": "Coram_Deo", - "totalCosts": 0, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" } ] }, @@ -4854,13 +4812,13 @@ { "id": 15102795, "username": "GreatWhiteOwl", - "totalCosts": 728.21, + "totalCosts": 681.75, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15102795/medium/6a304953d1334287ce899623011e92cd_default.png" }, { "id": 15047729, "username": "EricTheTurtle", - "totalCosts": 716.09, + "totalCosts": 661.55, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15047729/medium/705657a47d8515302fce11fdaf1e1081.png" }, { @@ -4878,7 +4836,7 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 17.17, + "totalCosts": 25.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -4930,7 +4888,7 @@ { "id": 15123193, "username": "Coram_Deo", - "totalCosts": 1753.36, + "totalCosts": 1752.35, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" }, { @@ -4977,7 +4935,7 @@ { "id": 15947755, "username": "RubenSilva", - "totalCosts": 1023.13, + "totalCosts": 993.84, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947755/medium/cf9980cfafab6b7c43f6e16e1ca48324_default.png" }, { @@ -5039,8 +4997,14 @@ { "id": 15932515, "username": "Astronaut828", - "totalCosts": 1131.2, + "totalCosts": 1113.02, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/c41b45c87a237615839b37bfa2118e8b.jpeg" + }, + { + "id": 15123193, + "username": "Coram_Deo", + "totalCosts": 18.18, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" } ] }, @@ -5146,8 +5110,14 @@ { "id": 15421538, "username": "johannt", - "totalCosts": 2035.15, + "totalCosts": 2021.01, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15421538/medium/7e1f5d90509951072c0de0d9684baa35.png" + }, + { + "id": 15123193, + "username": "Coram_Deo", + "totalCosts": 20.2, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg" } ] }, @@ -5190,7 +5160,7 @@ { "id": 14568334, "username": "mr_giorgos", - "totalCosts": 766.59, + "totalCosts": 256.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg" }, { @@ -5304,7 +5274,7 @@ { "id": 15194310, "username": "MGETH", - "totalCosts": 136.35, + "totalCosts": 129.28, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg" }, { @@ -5351,19 +5321,19 @@ { "id": 14958557, "username": "eme42", - "totalCosts": 240.38, + "totalCosts": 221.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14958557/medium/9208e12202357f64e7ab036b09848cb7_default.png" }, { "id": 15080509, "username": "MariaC55", - "totalCosts": 197.96, + "totalCosts": 178.77, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15080509/medium/509c7a6f176738bd5d8483f35b663107.jpg" }, { "id": 15084601, "username": "metanube", - "totalCosts": 168.67, + "totalCosts": 149.48, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084601/medium/7e8ee6ec15e9d0be68e2c6ff9a0b34c8_default.png" }, { @@ -5390,30 +5360,12 @@ "totalCosts": 94.94, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14614016/medium/447ae91eb97d464346003fe6532cda12.jpg" }, - { - "id": 15155844, - "username": "CryptoSpace", - "totalCosts": 24.24, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png" - }, { "id": 14973491, "username": "Baby_Bubbles", "totalCosts": 20.2, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14973491/medium/13d4713b30566f03b6e275ebc80f03c6_default.png" }, - { - "id": 14564238, - "username": "FreddyAndresParra", - "totalCosts": 14.14, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564238/medium/e6feebc5a27754079a07907fffac8389.jpg" - }, - { - "id": 15490162, - "username": "Mathewvizc7", - "totalCosts": 11.11, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15490162/medium/ee6f672ba75de903b8f7bffb3be4773d_default.png" - }, { "id": 14111187, "username": "3Dmachine", @@ -5421,10 +5373,16 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14111187/medium/fe245408c845d689664e2daace62d768_default.png" }, { - "id": 15770841, - "username": "Angelito_18", + "id": 15982199, + "username": "danielgruesso", + "totalCosts": 8.08, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15982199/medium/e7939afde0016707d20dddef04e6fca2.jpeg" + }, + { + "id": 15490162, + "username": "Mathewvizc7", "totalCosts": 6.06, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770841/medium/f82644a45b17eed3facb1815dcc83d13.jpeg" + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15490162/medium/ee6f672ba75de903b8f7bffb3be4773d_default.png" }, { "id": 14938941, @@ -5432,6 +5390,12 @@ "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14938941/medium/7036319856c2379ae2b3c3cc517567cd.jpg" }, + { + "id": 14564238, + "username": "FreddyAndresParra", + "totalCosts": 6.06, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564238/medium/e6feebc5a27754079a07907fffac8389.jpg" + }, { "id": 15522923, "username": "llucC", @@ -5458,7 +5422,7 @@ { "id": 15490162, "username": "Mathewvizc7", - "totalCosts": 58.58, + "totalCosts": 52.52, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15490162/medium/ee6f672ba75de903b8f7bffb3be4773d_default.png" }, { @@ -5527,7 +5491,7 @@ { "id": 15085311, "username": "bunturx", - "totalCosts": 114.13, + "totalCosts": 106.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg" }, { @@ -6299,6 +6263,12 @@ "totalCosts": 34.34, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png" }, + { + "id": 15553253, + "username": "EmelyGarcia", + "totalCosts": 32.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png" + }, { "id": 15655799, "username": "Pipeguzman0000", @@ -6343,7 +6313,7 @@ { "id": 15522923, "username": "llucC", - "totalCosts": 712.05, + "totalCosts": 685.79, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15522923/medium/539a9115b9d375bde4eb4bc0fc37995c.png" }, { @@ -6604,17 +6574,23 @@ "totalCosts": 97.97, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564238/medium/e6feebc5a27754079a07907fffac8389.jpg" }, + { + "id": 16028920, + "username": "paopastorelli", + "totalCosts": 38.38, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16028920/medium/e3049f379e035388449ee79ea5b75888.jpeg" + }, { "id": 15874711, "username": "JHON38", - "totalCosts": 64.64, + "totalCosts": 19.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15874711/medium/aa1137d9b988c12e00d7510a93e05dd8_default.png" }, { - "id": 15966607, - "username": "Hackedd.eth", - "totalCosts": 25.25, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966607/medium/233013bfe6b35fd53264071d722f63f1.png" + "id": 15553253, + "username": "EmelyGarcia", + "totalCosts": 2.02, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png" } ] }, @@ -6877,7 +6853,7 @@ { "id": 15968127, "username": "gonzagramaglia", - "totalCosts": 136.35, + "totalCosts": 133.32, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968127/medium/0c91665492f81a2479639eba5271d7bc.png" }, { @@ -6927,18 +6903,18 @@ "totalCosts": 432.28, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15522923/medium/539a9115b9d375bde4eb4bc0fc37995c.png" }, + { + "id": 15553253, + "username": "EmelyGarcia", + "totalCosts": 60.6, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png" + }, { "id": 15966607, "username": "Hackedd.eth", "totalCosts": 59.59, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966607/medium/233013bfe6b35fd53264071d722f63f1.png" }, - { - "id": 15553253, - "username": "EmelyGarcia", - "totalCosts": 59.59, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png" - }, { "id": 15967747, "username": "fernandostds9", @@ -7066,38 +7042,44 @@ { "id": 15194310, "username": "MGETH", - "totalCosts": 2823.96, + "totalCosts": 1077.67, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg" }, { "id": 15966607, "username": "Hackedd.eth", - "totalCosts": 1113.02, + "totalCosts": 971.62, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966607/medium/233013bfe6b35fd53264071d722f63f1.png" }, + { + "id": 15874711, + "username": "JHON38", + "totalCosts": 177.76, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15874711/medium/aa1137d9b988c12e00d7510a93e05dd8_default.png" + }, { "id": 15946267, "username": "socopower", - "totalCosts": 195.94, + "totalCosts": 126.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946267/medium/094f1891b25266289c4aa5df7b08cfb7.jpg" }, { - "id": 15874711, - "username": "JHON38", - "totalCosts": 192.91, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15874711/medium/aa1137d9b988c12e00d7510a93e05dd8_default.png" + "id": 15957521, + "username": "ahhsunnft", + "totalCosts": 18.18, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957521/medium/ea787d6a453910b93b35f130d227f1d7.png" }, { "id": 15474196, "username": "Ivan_Sarapura", - "totalCosts": 61.61, + "totalCosts": 18.18, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15474196/medium/7d0c8d1b9a3745f3d1dbfaec3ab9e4a2.jpeg" }, { - "id": 15957521, - "username": "ahhsunnft", - "totalCosts": 18.18, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957521/medium/ea787d6a453910b93b35f130d227f1d7.png" + "id": 15553253, + "username": "EmelyGarcia", + "totalCosts": 16.16, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png" }, { "id": 15967747, @@ -7472,12 +7454,6 @@ "username": "k.otika", "totalCosts": 18.18, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14943545/medium/8591b0d6e4eb6d5cf6fb49acabda89d3_default.png" - }, - { - "id": 15155844, - "username": "CryptoSpace", - "totalCosts": 4.04, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png" } ] }, @@ -7522,7 +7498,7 @@ { "id": 15435306, "username": "ValeriaRaizman", - "totalCosts": 452.48, + "totalCosts": 426.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435306/medium/5e6284f116d89bd11b6dea3228531657.jpeg" }, { @@ -8502,7 +8478,7 @@ { "id": 15194310, "username": "MGETH", - "totalCosts": 1352.39, + "totalCosts": 1346.33, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg" }, { @@ -8738,27 +8714,27 @@ { "id": 15865881, "username": "elinafigueroa", - "totalCosts": 730.23, + "totalCosts": 108.07, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15865881/medium/0db823992693ad472fdaa77063fd8801_default.png" }, { "id": 15532843, "username": "sfajardo21", - "totalCosts": 52.52, + "totalCosts": 51.51, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15532843/medium/a222ea35bc9d3bf32e99ccb4cdcea718.png" }, - { - "id": 15287132, - "username": "0xAntonio", - "totalCosts": 37.37, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15287132/medium/67c5a079a19f5b0cd46f8d628cff446d.png" - }, { "id": 15155844, "username": "CryptoSpace", "totalCosts": 15.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png" }, + { + "id": 15287132, + "username": "0xAntonio", + "totalCosts": 14.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15287132/medium/67c5a079a19f5b0cd46f8d628cff446d.png" + }, { "id": 15100147, "username": "Jose_Gonzalez", @@ -8800,12 +8776,6 @@ "username": "sebastianale41", "totalCosts": 3.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15157714/medium/fe97d70f7bc732452a530442825fbaa1.png" - }, - { - "id": 15532581, - "username": "malopaes", - "totalCosts": 2.02, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15532581/medium/a0e70a6e9167aa3309b955fb577d8147_default.png" } ] }, @@ -9027,7 +8997,7 @@ { "id": 15874711, "username": "JHON38", - "totalCosts": 265.63, + "totalCosts": 255.53, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15874711/medium/aa1137d9b988c12e00d7510a93e05dd8_default.png" }, { @@ -9134,38 +9104,38 @@ { "id": 15966545, "username": "askr", - "totalCosts": 674.68, + "totalCosts": 252.5, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966545/medium/350ebd9c64c3a9a5244827c6f34d05e7_default.png" }, { - "id": 15730101, - "username": "anaphant", - "totalCosts": 446.42, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15730101/medium/54df140ba50202fe839069eb63683d45.png" + "id": 15287132, + "username": "0xAntonio", + "totalCosts": 172.71, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15287132/medium/67c5a079a19f5b0cd46f8d628cff446d.png" }, { "id": 15989457, "username": "narurololiloops", - "totalCosts": 313.1, + "totalCosts": 158.57, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15989457/medium/538d4b5dd55c92e2e8e0759fc6870270_default.png" }, { - "id": 15287132, - "username": "0xAntonio", - "totalCosts": 279.77, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15287132/medium/67c5a079a19f5b0cd46f8d628cff446d.png" + "id": 16040604, + "username": "CeciSakura", + "totalCosts": 84.84, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16040604/medium/46704125c8bb6dee2677db6eeaf8e80f.jpg" }, { - "id": 14958973, - "username": "cryptobull", - "totalCosts": 21.21, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14958973/medium/949ee0b2f35755fd0a63677506812d86_default.png" + "id": 15730101, + "username": "anaphant", + "totalCosts": 53.53, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15730101/medium/54df140ba50202fe839069eb63683d45.png" }, { - "id": 14320782, - "username": "JoseDeFreitas", - "totalCosts": 21.21, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14320782/medium/db9b49609d804eb2048076de466d3162_default.png" + "id": 15714091, + "username": "Karym_GG", + "totalCosts": 32.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png" }, { "id": 15620533, @@ -9173,6 +9143,18 @@ "totalCosts": 21.21, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15620533/medium/f8d3fab7c282f65f5edad42c0cb2bcf1.png" }, + { + "id": 14958973, + "username": "cryptobull", + "totalCosts": 12.12, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14958973/medium/949ee0b2f35755fd0a63677506812d86_default.png" + }, + { + "id": 14320782, + "username": "JoseDeFreitas", + "totalCosts": 12.12, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14320782/medium/db9b49609d804eb2048076de466d3162_default.png" + }, { "id": 14958987, "username": "fernanmartine", @@ -9324,7 +9306,7 @@ { "id": 15085311, "username": "bunturx", - "totalCosts": 679.73, + "totalCosts": 625.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15085311/medium/ead5dd5aa5070be2f8d446c286f27d7a.jpeg" }, { @@ -9448,7 +9430,7 @@ { "id": 15287132, "username": "0xAntonio", - "totalCosts": 198.97, + "totalCosts": 159.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15287132/medium/67c5a079a19f5b0cd46f8d628cff446d.png" }, { @@ -9554,7 +9536,7 @@ { "id": 15770841, "username": "Angelito_18", - "totalCosts": 1559.44, + "totalCosts": 1512.98, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770841/medium/f82644a45b17eed3facb1815dcc83d13.jpeg" }, { @@ -9616,6 +9598,12 @@ "totalCosts": 440.36, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15409986/medium/1ea8bc37b02dd0d04bc593368f8247c5_default.png" }, + { + "id": 15452582, + "username": "fabiancripto", + "totalCosts": 383.8, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15452582/medium/7e9b4cc6037bd59c87fc101074e94c52.jpeg" + }, { "id": 15194310, "username": "MGETH", @@ -9714,13 +9702,13 @@ { "id": 15421106, "username": "rogerdaltry193", - "totalCosts": 1286.74, + "totalCosts": 1279.67, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15421106/medium/42065b2af539333bb83278e6ef5e2f29.png" }, { "id": 15638587, "username": "Nidden", - "totalCosts": 195.94, + "totalCosts": 188.87, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15638587/medium/350c60a52fd8d46d2569bf95f3d8fede_default.png" }, { @@ -10247,12 +10235,6 @@ "totalCosts": 19.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg" }, - { - "id": 15522923, - "username": "llucC", - "totalCosts": 13.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15522923/medium/539a9115b9d375bde4eb4bc0fc37995c.png" - }, { "id": 14807238, "username": "rom1919", @@ -10375,59 +10357,17 @@ { "fileId": "2954", "contributors": [ - { - "id": 15194310, - "username": "MGETH", - "totalCosts": 2187.66, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg" - }, - { - "id": 15966607, - "username": "Hackedd.eth", - "totalCosts": 237.35, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966607/medium/233013bfe6b35fd53264071d722f63f1.png" - }, - { - "id": 14696346, - "username": "AndrewLillie64", - "totalCosts": 63.63, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14696346/medium/54cf5507651eba10dd7fd3a494bb4eaf_default.png" - }, - { - "id": 15135505, - "username": "Andrea00P", - "totalCosts": 58.58, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135505/medium/8e95dff743c0a7e4feedb53ef122eba5_default.png" - }, - { - "id": 14865328, - "username": "Lostday", - "totalCosts": 45.45, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14865328/medium/16e7617eadda7d8511b4bcc3c6e5ae57_default.png" - }, - { - "id": 14706332, - "username": "AlexD10S", - "totalCosts": 41.41, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14706332/medium/bcc3c3226163167446b575fe615e96d2.jpeg" - }, { "id": 14564238, "username": "FreddyAndresParra", - "totalCosts": 30.3, + "totalCosts": 26.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14564238/medium/e6feebc5a27754079a07907fffac8389.jpg" }, { - "id": 15161680, - "username": "agustinasegat", - "totalCosts": 18.18, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15161680/medium/62b2a3ce8e4003b84a0fceb6be409bba.jpeg" - }, - { - "id": 15058949, - "username": "gracieluu_ar", - "totalCosts": 3.03, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15058949/medium/ff59fbbe905f507603cfd575f1f96c80.jpeg" + "id": 14696346, + "username": "AndrewLillie64", + "totalCosts": 11.11, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14696346/medium/54cf5507651eba10dd7fd3a494bb4eaf_default.png" } ] }, @@ -10721,7 +10661,7 @@ { "id": 15770841, "username": "Angelito_18", - "totalCosts": 2802.75, + "totalCosts": 2798.71, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770841/medium/f82644a45b17eed3facb1815dcc83d13.jpeg" }, { @@ -10756,7 +10696,7 @@ { "id": 15966713, "username": "Blockchain_Visionary", - "totalCosts": 456.52, + "totalCosts": 443.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966713/medium/afcca99ffb2409b8720273392f8fecfa.png" }, { @@ -11041,7 +10981,7 @@ { "id": 15194310, "username": "MGETH", - "totalCosts": 1086.76, + "totalCosts": 1067.57, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg" }, { @@ -11298,7 +11238,7 @@ { "id": 15194310, "username": "MGETH", - "totalCosts": 758.51, + "totalCosts": 751.44, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg" }, { @@ -11385,7 +11325,7 @@ { "id": 15854595, "username": "badillos1998", - "totalCosts": 320.17, + "totalCosts": 306.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15854595/medium/5237fb21647f11d9482225a1295ed2d9.png" } ] @@ -11407,13 +11347,13 @@ { "id": 15832087, "username": "Lilsheep", - "totalCosts": 686.8, + "totalCosts": 677.71, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15832087/medium/4366a0e58c28aa5383cc278e95de912d_default.png" }, { "id": 15194310, "username": "MGETH", - "totalCosts": 50.5, + "totalCosts": 34.34, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg" } ] @@ -11453,7 +11393,7 @@ { "id": 15287132, "username": "0xAntonio", - "totalCosts": 762.55, + "totalCosts": 733.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15287132/medium/67c5a079a19f5b0cd46f8d628cff446d.png" }, { @@ -11575,7 +11515,7 @@ { "id": 15967125, "username": "erfanej", - "totalCosts": 48.48, + "totalCosts": 41.41, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png" }, { @@ -11872,7 +11812,7 @@ { "id": 15967119, "username": "timtey", - "totalCosts": 215.13, + "totalCosts": 188.87, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg" } ] @@ -12098,7 +12038,7 @@ { "id": 15967115, "username": "itsdeeters", - "totalCosts": 322.19, + "totalCosts": 309.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png" }, { @@ -12116,7 +12056,7 @@ { "id": 15967119, "username": "timtey", - "totalCosts": 78.78, + "totalCosts": 68.68, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg" }, { @@ -12311,6 +12251,12 @@ "username": "Alifarhani", "totalCosts": 9.09, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg" + }, + { + "id": 16069662, + "username": "Ruholla", + "totalCosts": 4.04, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16069662/medium/a637cb4df4ce9d016e7d76cc935b0a95_default.png" } ] }, @@ -12320,13 +12266,13 @@ { "id": 15942179, "username": "erfan1366erfan", - "totalCosts": 1141.3, + "totalCosts": 167.66, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15942179/medium/01f700e015f539a1262e058e281a8d9f.png" }, { "id": 15967115, "username": "itsdeeters", - "totalCosts": 83.83, + "totalCosts": 60.6, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png" }, { @@ -12381,36 +12327,30 @@ { "fileId": "5565", "contributors": [ - { - "id": 15967119, - "username": "timtey", - "totalCosts": 751.44, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg" - }, { "id": 16001243, "username": "0xArkonomi", - "totalCosts": 554.49, + "totalCosts": 252.5, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16001243/medium/b75b58e1e84d60e633167eb068b1253e.jpg" }, + { + "id": 15967119, + "username": "timtey", + "totalCosts": 207.05, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg" + }, { "id": 15971303, "username": "web3senior", - "totalCosts": 267.65, + "totalCosts": 119.18, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15971303/medium/6f6d7db906ee32c836d3daf71181b5da.png" }, { "id": 15074339, "username": "mmp8103", - "totalCosts": 30.3, + "totalCosts": 21.21, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15074339/medium/5199c5dafe0b10d9bf8a99c34ff3a277.png" }, - { - "id": 15097099, - "username": "nader.sedigh", - "totalCosts": 4.04, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png" - }, { "id": 15967239, "username": "MahdiRezaeian", @@ -12422,6 +12362,12 @@ "username": "Alifarhani", "totalCosts": 3.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg" + }, + { + "id": 15097099, + "username": "nader.sedigh", + "totalCosts": 2.02, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15097099/medium/4fca4ea357c99c5d605850315f21ae65.png" } ] }, @@ -12519,7 +12465,7 @@ { "id": 15099529, "username": "Aria-Naraghi", - "totalCosts": 1006.97, + "totalCosts": 952.43, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png" }, { @@ -12589,7 +12535,7 @@ { "id": 15967353, "username": "sipbikardi", - "totalCosts": 589.84, + "totalCosts": 552.47, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967353/medium/bdbc4e456ff62160eead47d69c036137.jpg" }, { @@ -12604,18 +12550,18 @@ "totalCosts": 125.24, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15938555/medium/d36a3c8df483569d53ad9806ea410edd_default.png" }, - { - "id": 15967893, - "username": "apacala", - "totalCosts": 39.39, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967893/medium/6f427c7b8d63cf93f27c4df77f07a2b5_default.png" - }, { "id": 15942179, "username": "erfan1366erfan", "totalCosts": 39.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15942179/medium/01f700e015f539a1262e058e281a8d9f.png" }, + { + "id": 15967893, + "username": "apacala", + "totalCosts": 37.37, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967893/medium/6f427c7b8d63cf93f27c4df77f07a2b5_default.png" + }, { "id": 15967239, "username": "MahdiRezaeian", @@ -12705,7 +12651,7 @@ { "id": 14555882, "username": "ElAmir", - "totalCosts": 240.38, + "totalCosts": 221.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14555882/medium/47bd8403dc0a881324cf1d5aef976a7b.jpg" }, { @@ -12714,16 +12660,10 @@ "totalCosts": 62.62, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png" }, - { - "id": 15967119, - "username": "timtey", - "totalCosts": 45.45, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg" - }, { "id": 15233666, "username": "Alifarhani", - "totalCosts": 16.16, + "totalCosts": 8.08, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15233666/medium/deec4866c37352c795ed3d0000236714.jpeg" } ] @@ -12824,6 +12764,63 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15588607/medium/719d8651304e60b42af2a7db78ee9fc8_default.png" } ] + }, + { + "fileId": "8035", + "contributors": [ + { + "id": 15967119, + "username": "timtey", + "totalCosts": 525.2, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg" + }, + { + "id": 15967125, + "username": "erfanej", + "totalCosts": 397.94, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png" + }, + { + "id": 15967115, + "username": "itsdeeters", + "totalCosts": 298.96, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png" + } + ] + }, + { + "fileId": "7919", + "contributors": [ + { + "id": 15967353, + "username": "sipbikardi", + "totalCosts": 1321.08, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967353/medium/bdbc4e456ff62160eead47d69c036137.jpg" + }, + { + "id": 15955625, + "username": "Coiniran", + "totalCosts": 1306.94, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955625/medium/cea2317824f592725aac52fcd2eedb26_default.png" + } + ] + }, + { + "fileId": "7591", + "contributors": [ + { + "id": 15967353, + "username": "sipbikardi", + "totalCosts": 1976.57, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967353/medium/bdbc4e456ff62160eead47d69c036137.jpg" + }, + { + "id": 15967119, + "username": "timtey", + "totalCosts": 7.07, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg" + } + ] } ] }, @@ -12845,12 +12842,6 @@ "totalCosts": 69.69, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14587094/medium/e9433666871c85df7a54d1837c3b5659_default.png" }, - { - "id": 15783329, - "username": "edgolron", - "totalCosts": 24.24, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15783329/medium/d6363ce0aafa5df6f74723d2b52945a5_default.png" - }, { "id": 14758970, "username": "JJulles", @@ -12924,7 +12915,7 @@ { "id": 17361, "username": "plamarque", - "totalCosts": 79.79, + "totalCosts": 72.72, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" }, { @@ -12933,6 +12924,12 @@ "totalCosts": 66.66, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 18.18, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 15415492, "username": "sashasrs", @@ -12959,13 +12956,13 @@ { "id": 14973471, "username": "hugo_ham", - "totalCosts": 159.58, + "totalCosts": 140.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14973471/medium/e29e9241f0a96e4067f303459381e1d5.png" }, { "id": 15102413, "username": "NodeuS", - "totalCosts": 97.97, + "totalCosts": 78.78, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15102413/medium/1f507b1ec0a1a5e217f7d55ab800fc51_default.png" }, { @@ -12975,10 +12972,10 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14956479/medium/342153a6e0540337ea2efae82b1b98d4.png" }, { - "id": 12844463, - "username": "MATsxm", - "totalCosts": 50.5, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" + "id": 15954931, + "username": "XofEE", + "totalCosts": 20.2, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" }, { "id": 15095735, @@ -12986,18 +12983,18 @@ "totalCosts": 16.16, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15095735/medium/7061d769461e0a0d1f6ed83375b0c7f6.png" }, + { + "id": 12844463, + "username": "MATsxm", + "totalCosts": 13.13, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" + }, { "id": 14958779, "username": "kevin.moreau655", "totalCosts": 10.1, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14958779/medium/3f5b3d32118d59bf14db8053362e627a.png" }, - { - "id": 15961437, - "username": "harpocryptes", - "totalCosts": 7.07, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961437/medium/d495096dfb14721b3d4848a1bc7cfdd5.jpeg" - }, { "id": 14675712, "username": "LEMIBANDDEXARI", @@ -13024,7 +13021,7 @@ { "id": 12844463, "username": "MATsxm", - "totalCosts": 106.05, + "totalCosts": 99.99, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" }, { @@ -13159,6 +13156,12 @@ "totalCosts": 314.11, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 119.18, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 17361, "username": "plamarque", @@ -13240,6 +13243,12 @@ "totalCosts": 122.21, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15171372/medium/1de0ae3712f910c91b52cf8cb802fdc2_default.png" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 94.94, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 17361, "username": "plamarque", @@ -13321,6 +13330,12 @@ "username": "J4yD3v", "totalCosts": 17.17, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15528915/medium/c334abf55946c66116d12971fd368f2d_default.png" + }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 13.13, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" } ] }, @@ -13398,6 +13413,12 @@ "totalCosts": 56.56, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15396412/medium/e3ea869880271105d1c5b63e8a4f3040.jpeg" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 56.56, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 12844463, "username": "MATsxm", @@ -13723,41 +13744,47 @@ "fileId": "5529", "contributors": [ { - "id": 15136089, - "username": "demaupeoucorentin", - "totalCosts": 435.31, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15136089/medium/4ba75954f478f17b20559a3035f6adbd.png" + "id": 15954931, + "username": "XofEE", + "totalCosts": 1199.88, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" }, { "id": 14862460, "username": "vdusart", - "totalCosts": 282.8, + "totalCosts": 257.55, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14862460/medium/106cb769254652c20ddeab107317fd43_default.png" }, { "id": 12844463, "username": "MATsxm", - "totalCosts": 226.24, + "totalCosts": 203.01, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" }, + { + "id": 15136089, + "username": "demaupeoucorentin", + "totalCosts": 166.65, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15136089/medium/4ba75954f478f17b20559a3035f6adbd.png" + }, { "id": 17361, "username": "plamarque", "totalCosts": 109.08, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" }, - { - "id": 15442454, - "username": "Im-SpiETH", - "totalCosts": 85.85, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png" - }, { "id": 14230886, "username": "moul", "totalCosts": 79.79, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14230886/medium/7848e69a7fa9dd1f94f0509d56498b07.png" }, + { + "id": 15442454, + "username": "Im-SpiETH", + "totalCosts": 46.46, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png" + }, { "id": 15096025, "username": "Necron", @@ -13770,12 +13797,6 @@ "totalCosts": 9.09, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15688595/medium/a30340b77b708301f21bbc7888bbdbde_default.png" }, - { - "id": 15502140, - "username": "hmclt", - "totalCosts": 4.04, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15502140/medium/5c2986ff1487e75524a53e4192377557.jpeg" - }, { "id": 15084373, "username": "tarcanhursit", @@ -13940,6 +13961,12 @@ "username": "Fabs86", "totalCosts": 48.48, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14587094/medium/e9433666871c85df7a54d1837c3b5659_default.png" + }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 32.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" } ] }, @@ -13961,7 +13988,7 @@ { "id": 15385196, "username": "Mcrypto", - "totalCosts": 112.11, + "totalCosts": 85.85, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15385196/medium/0540414f2afb6ad01aef4a67479750b8.jpg" }, { @@ -14203,12 +14230,6 @@ "totalCosts": 20.2, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14916229/medium/ef270c9207fc2731c23a32a1765629a1.png" }, - { - "id": 15442454, - "username": "Im-SpiETH", - "totalCosts": 13.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png" - }, { "id": 14698898, "username": "Dooyoux", @@ -14261,6 +14282,12 @@ "totalCosts": 590.85, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15624473/medium/7790c08f2ef4a5ba028091b6393900be_default.png" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 140.39, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 14823260, "username": "omahs", @@ -14287,7 +14314,7 @@ { "id": 15624473, "username": "CaverneCrypto", - "totalCosts": 552.47, + "totalCosts": 501.97, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15624473/medium/7790c08f2ef4a5ba028091b6393900be_default.png" }, { @@ -14307,6 +14334,12 @@ "username": "MATsxm", "totalCosts": 59.59, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" + }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 50.5, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" } ] }, @@ -14359,6 +14392,12 @@ "username": "MATsxm", "totalCosts": 136.35, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" + }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 38.38, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" } ] }, @@ -14501,10 +14540,10 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14711854/medium/0ae62f880c9fdec755310b2d551953ae.jpeg" }, { - "id": 14823260, - "username": "omahs", - "totalCosts": 25.25, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg" + "id": 15954931, + "username": "XofEE", + "totalCosts": 40.4, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" }, { "id": 12844463, @@ -14844,6 +14883,12 @@ "totalCosts": 1130.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 62.62, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 15528915, "username": "J4yD3v", @@ -14861,6 +14906,12 @@ { "fileId": "2778", "contributors": [ + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 362.59, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 15528915, "username": "J4yD3v", @@ -14885,6 +14936,12 @@ "totalCosts": 47.47, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14693434/medium/002b66c8fe4028143e660207ff6935c7_default.png" }, + { + "id": 16004187, + "username": "FalcoBlockchain", + "totalCosts": 32.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004187/medium/02d62ae36a32a5b72271a5f60ce1acfc.jpg" + }, { "id": 15683863, "username": "zeyadoun12", @@ -15015,6 +15072,12 @@ "totalCosts": 115.14, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15528915/medium/c334abf55946c66116d12971fd368f2d_default.png" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 69.69, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 15158630, "username": "breakthewall", @@ -15041,27 +15104,21 @@ { "id": 15624473, "username": "CaverneCrypto", - "totalCosts": 3968.29, + "totalCosts": 2297.75, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15624473/medium/7790c08f2ef4a5ba028091b6393900be_default.png" }, { - "id": 15185884, - "username": "carmen1912", - "totalCosts": 130.29, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg" + "id": 15954931, + "username": "XofEE", + "totalCosts": 1056.46, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" }, { "id": 15683863, "username": "zeyadoun12", - "totalCosts": 117.16, + "totalCosts": 86.86, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15683863/medium/1d6ed972d684360bf9f45bafbabe6c6f.jpeg" }, - { - "id": 15442454, - "username": "Im-SpiETH", - "totalCosts": 17.17, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png" - }, { "id": 14587890, "username": "Elikill58", @@ -15475,12 +15532,6 @@ "username": "plamarque", "totalCosts": 15.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" - }, - { - "id": 14675712, - "username": "LEMIBANDDEXARI", - "totalCosts": 4.04, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14675712/medium/a304c8789bc59e3178d6f89d542de065.jpg" } ] }, @@ -15601,7 +15652,7 @@ { "id": 15426512, "username": "Recktosaurus", - "totalCosts": 686.8, + "totalCosts": 660.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15426512/medium/3d6568dc6e76931cee4766ecb4c3163a.jpg" }, { @@ -16329,6 +16380,12 @@ "totalCosts": 53.53, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15415492/medium/3fa311e4cb49b48849796356395333e8.jpg" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 50.5, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 14996665, "username": "slowwdev", @@ -16562,6 +16619,12 @@ "username": "mcedrdiego", "totalCosts": 53.53, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15143180/medium/8979efff215c27bbdff54451baac8542.png" + }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 50.5, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" } ] }, @@ -16615,6 +16678,12 @@ "totalCosts": 39.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 19.19, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 15528915, "username": "J4yD3v", @@ -16800,6 +16869,12 @@ "totalCosts": 811.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14862460/medium/106cb769254652c20ddeab107317fd43_default.png" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 216.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 12844463, "username": "MATsxm", @@ -16971,7 +17046,7 @@ { "id": 15528915, "username": "J4yD3v", - "totalCosts": 675.69, + "totalCosts": 669.63, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15528915/medium/c334abf55946c66116d12971fd368f2d_default.png" }, { @@ -17044,6 +17119,12 @@ "totalCosts": 354.51, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 162.61, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 15171372, "username": "maje", @@ -17284,7 +17365,7 @@ { "id": 15357618, "username": "finereganyue", - "totalCosts": 3947.08, + "totalCosts": 3923.85, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15357618/medium/12f023106f6a24e98bfc6553c07a46f4.jpg" }, { @@ -17433,12 +17514,6 @@ "totalCosts": 517.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png" }, - { - "id": 15783329, - "username": "edgolron", - "totalCosts": 221.19, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15783329/medium/d6363ce0aafa5df6f74723d2b52945a5_default.png" - }, { "id": 15185884, "username": "carmen1912", @@ -17491,40 +17566,22 @@ { "fileId": "6183", "contributors": [ - { - "id": 14823260, - "username": "omahs", - "totalCosts": 454.5, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg" - }, - { - "id": 15966553, - "username": "bamcryptobam1", - "totalCosts": 114.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966553/medium/7fde8cf7f30af6c46453e25bbf5aa342.png" - }, { "id": 17361, "username": "plamarque", - "totalCosts": 80.8, + "totalCosts": 61.61, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" }, - { - "id": 15961437, - "username": "harpocryptes", - "totalCosts": 66.66, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961437/medium/d495096dfb14721b3d4848a1bc7cfdd5.jpeg" - }, { "id": 15528915, "username": "J4yD3v", - "totalCosts": 61.61, + "totalCosts": 58.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15528915/medium/c334abf55946c66116d12971fd368f2d_default.png" }, { "id": 15396412, "username": "Ti0x-f", - "totalCosts": 51.51, + "totalCosts": 44.44, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15396412/medium/e3ea869880271105d1c5b63e8a4f3040.jpeg" }, { @@ -17533,6 +17590,12 @@ "totalCosts": 20.2, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" }, + { + "id": 15966553, + "username": "bamcryptobam1", + "totalCosts": 14.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966553/medium/7fde8cf7f30af6c46453e25bbf5aa342.png" + }, { "id": 15102413, "username": "NodeuS", @@ -17562,6 +17625,12 @@ "username": "iamludal", "totalCosts": 3.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15449532/medium/eebb641d43054b09ff31f1fb0711e4c3.jpeg" + }, + { + "id": 14823260, + "username": "omahs", + "totalCosts": 2.02, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg" } ] }, @@ -17709,76 +17778,16 @@ { "fileId": "2954", "contributors": [ - { - "id": 17361, - "username": "plamarque", - "totalCosts": 433.29, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" - }, - { - "id": 15528915, - "username": "J4yD3v", - "totalCosts": 285.83, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15528915/medium/c334abf55946c66116d12971fd368f2d_default.png" - }, { "id": 14075861, "username": "Kler", - "totalCosts": 99.99, + "totalCosts": 26.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14075861/medium/a3cf69cc209acc2c520607aab4d1c615.jpeg" }, - { - "id": 12844463, - "username": "MATsxm", - "totalCosts": 66.66, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" - }, - { - "id": 15450160, - "username": "Christophe007", - "totalCosts": 64.64, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15450160/medium/e7543a83f555fbfe25042470b6621beb.jpg" - }, - { - "id": 15624473, - "username": "CaverneCrypto", - "totalCosts": 46.46, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15624473/medium/7790c08f2ef4a5ba028091b6393900be_default.png" - }, - { - "id": 15185884, - "username": "carmen1912", - "totalCosts": 23.23, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg" - }, - { - "id": 14631242, - "username": "kasahiti", - "totalCosts": 21.21, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631242/medium/64d95694ae06c2d7d824bbd43bdde74e_default.png" - }, - { - "id": 15783329, - "username": "edgolron", - "totalCosts": 20.2, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15783329/medium/d6363ce0aafa5df6f74723d2b52945a5_default.png" - }, - { - "id": 15442454, - "username": "Im-SpiETH", - "totalCosts": 17.17, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png" - }, - { - "id": 15358446, - "username": "Natura2x", - "totalCosts": 14.14, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15358446/medium/474bad4722d18d250cab8e7f7acbe115_default.png" - }, { "id": 13473469, "username": "jules.seigneur77", - "totalCosts": 13.13, + "totalCosts": 11.11, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13473469/medium/4118d6e220ce9b45529503a39159dc48.jpg" } ] @@ -17836,7 +17845,7 @@ { "id": 15185884, "username": "carmen1912", - "totalCosts": 551.46, + "totalCosts": 541.36, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg" }, { @@ -17851,6 +17860,12 @@ "totalCosts": 64.64, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14737644/medium/d981e7d9ae1b98b7e8a21245675fc0e0.jpg" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 28.28, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 14655214, "username": "LeMarx", @@ -17913,27 +17928,21 @@ { "id": 14823260, "username": "omahs", - "totalCosts": 682.76, + "totalCosts": 207.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 32.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 14956479, "username": "akais315", "totalCosts": 21.21, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14956479/medium/342153a6e0540337ea2efae82b1b98d4.png" }, - { - "id": 13128900, - "username": "YannAries", - "totalCosts": 13.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13128900/medium/7d1e00ebe7aca553dd475b2b888e769f.jpeg" - }, - { - "id": 15961437, - "username": "harpocryptes", - "totalCosts": 12.12, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961437/medium/d495096dfb14721b3d4848a1bc7cfdd5.jpeg" - }, { "id": 12844463, "username": "MATsxm", @@ -17941,28 +17950,10 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" }, { - "id": 17361, - "username": "plamarque", - "totalCosts": 8.08, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" - }, - { - "id": 15035371, - "username": "grompeys", - "totalCosts": 5.05, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15035371/medium/907e2a5c3b925048ec1801d442dbda3a_default.png" - }, - { - "id": 14670272, - "username": "JulienMuggli", - "totalCosts": 5.05, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14670272/medium/8a8fc0a0385c41960f2b41c9c857e4a4_default.png" - }, - { - "id": 14982689, - "username": "SECONDPOTOPAVARD", - "totalCosts": 4.04, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14982689/medium/be96966098ff38f480a42d9835db56af.jpg" + "id": 13128900, + "username": "YannAries", + "totalCosts": 9.09, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13128900/medium/7d1e00ebe7aca553dd475b2b888e769f.jpeg" }, { "id": 15093595, @@ -18126,7 +18117,7 @@ { "id": 13249257, "username": "SuperDelphi", - "totalCosts": 884.76, + "totalCosts": 830.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13249257/medium/f566e07e86e26f5911df1ddf5fae796d.png" }, { @@ -18171,6 +18162,12 @@ "totalCosts": 11.11, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15117761/medium/b4c2f709605db89308f6ce2f0bb05457.jpg" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 8.08, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 15689365, "username": "Vitanergie", @@ -18285,7 +18282,7 @@ { "id": 17361, "username": "plamarque", - "totalCosts": 232.3, + "totalCosts": 192.91, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" }, { @@ -18330,6 +18327,12 @@ "totalCosts": 28.28, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15318490/medium/673173431aeb53f29ca5516e9aa87bec_default.png" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 27.27, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 15689365, "username": "Vitanergie", @@ -18450,19 +18453,19 @@ { "id": 15783067, "username": "ThomasPZK", - "totalCosts": 1192.81, + "totalCosts": 1181.7, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15783067/medium/75942427fb0393a1f3e95aa383e69b1c_default.png" }, { "id": 15961437, "username": "harpocryptes", - "totalCosts": 441.37, + "totalCosts": 417.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961437/medium/d495096dfb14721b3d4848a1bc7cfdd5.jpeg" }, { "id": 17361, "username": "plamarque", - "totalCosts": 315.12, + "totalCosts": 304.01, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" }, { @@ -18477,6 +18480,12 @@ "totalCosts": 64.64, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 45.45, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 15396412, "username": "Ti0x-f", @@ -18565,6 +18574,12 @@ "totalCosts": 159.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 99.99, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 14675712, "username": "LEMIBANDDEXARI", @@ -18621,7 +18636,7 @@ { "id": 15442454, "username": "Im-SpiETH", - "totalCosts": 937.28, + "totalCosts": 933.24, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png" }, { @@ -18698,7 +18713,7 @@ { "id": 14862460, "username": "vdusart", - "totalCosts": 1205.94, + "totalCosts": 1198.87, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14862460/medium/106cb769254652c20ddeab107317fd43_default.png" }, { @@ -18718,6 +18733,12 @@ "username": "MATsxm", "totalCosts": 49.49, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" + }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 7.07, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" } ] }, @@ -18762,7 +18783,7 @@ { "id": 13249257, "username": "SuperDelphi", - "totalCosts": 189.88, + "totalCosts": 181.8, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13249257/medium/f566e07e86e26f5911df1ddf5fae796d.png" }, { @@ -18826,7 +18847,7 @@ { "id": 15624473, "username": "CaverneCrypto", - "totalCosts": 1768.51, + "totalCosts": 1756.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15624473/medium/7790c08f2ef4a5ba028091b6393900be_default.png" }, { @@ -18838,7 +18859,7 @@ { "id": 12844463, "username": "MATsxm", - "totalCosts": 47.47, + "totalCosts": 28.28, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" } ] @@ -18911,6 +18932,12 @@ "totalCosts": 16.16, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14197086/medium/f9f0b4ccf0c1a374ba2f208be1f7e061.JPG" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 11.11, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 14720694, "username": "Loic_Eloge_Foka", @@ -19076,7 +19103,7 @@ { "id": 17361, "username": "plamarque", - "totalCosts": 1392.79, + "totalCosts": 1386.73, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" }, { @@ -19102,6 +19129,12 @@ "username": "mehdibouzit", "totalCosts": 8.08, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949345/medium/2eb9da6ad8eb6399c9aff2b21957916d.png" + }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 5.05, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" } ] }, @@ -19131,6 +19164,12 @@ "username": "MATsxm", "totalCosts": 137.36, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" + }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 12.12, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" } ] }, @@ -19169,13 +19208,13 @@ { "id": 12844463, "username": "MATsxm", - "totalCosts": 613.07, + "totalCosts": 555.5, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg" }, { "id": 17361, "username": "plamarque", - "totalCosts": 337.34, + "totalCosts": 319.16, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" }, { @@ -19187,15 +19226,21 @@ { "id": 14587890, "username": "Elikill58", - "totalCosts": 156.55, + "totalCosts": 148.47, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14587890/medium/1d5b3a9de8a7b7f6082357f1fe99d654.jpeg" }, { "id": 14675712, "username": "LEMIBANDDEXARI", - "totalCosts": 74.74, + "totalCosts": 62.62, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14675712/medium/a304c8789bc59e3178d6f89d542de065.jpg" }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 21.21, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, { "id": 15158630, "username": "breakthewall", @@ -19209,6 +19254,260 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949345/medium/2eb9da6ad8eb6399c9aff2b21957916d.png" } ] + }, + { + "fileId": "7597", + "contributors": [ + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 123.22, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + } + ] + }, + { + "fileId": "7525", + "contributors": [ + { + "id": 14823260, + "username": "omahs", + "totalCosts": 296.94, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg" + }, + { + "id": 15914449, + "username": "CoinHoodie", + "totalCosts": 286.84, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914449/medium/8d2590e4c534ca5125f1d70b6d9c71cc.jpeg" + }, + { + "id": 14499538, + "username": "nodhaiby", + "totalCosts": 125.24, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14499538/medium/b4afe4954488f1cbb0ff50dfdb2d97ae_default.png" + }, + { + "id": 15795465, + "username": "Alex-fr", + "totalCosts": 123.22, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15795465/medium/10a5ef3ef5a492fd883eb55c239db5b3.jpeg" + }, + { + "id": 15838213, + "username": "marjorie83", + "totalCosts": 78.78, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15838213/medium/06f6e246d0a81d73663b644838d0cde9.jpeg" + }, + { + "id": 15816391, + "username": "Irvin_", + "totalCosts": 20.2, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15816391/medium/81fbadbb674cd22d4c0824d77586d1b1.png" + }, + { + "id": 15730243, + "username": "louisfelixg", + "totalCosts": 14.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15730243/medium/9056c95317b5bc74f571e423f7251e0a_default.png" + }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 7.07, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, + { + "id": 15318490, + "username": "arthursw", + "totalCosts": 6.06, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15318490/medium/673173431aeb53f29ca5516e9aa87bec_default.png" + } + ] + }, + { + "fileId": "8027", + "contributors": [ + { + "id": 14823260, + "username": "omahs", + "totalCosts": 926.17, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg" + }, + { + "id": 15973859, + "username": "vblackwhale", + "totalCosts": 144.43, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15973859/medium/e81a181b32492c70a65c85400d6f2e35.jpg" + } + ] + }, + { + "fileId": "7529", + "contributors": [ + { + "id": 15795465, + "username": "Alex-fr", + "totalCosts": 623.17, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15795465/medium/10a5ef3ef5a492fd883eb55c239db5b3.jpeg" + }, + { + "id": 15838213, + "username": "marjorie83", + "totalCosts": 58.58, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15838213/medium/06f6e246d0a81d73663b644838d0cde9.jpeg" + } + ] + }, + { + "fileId": "7533", + "contributors": [ + { + "id": 15795465, + "username": "Alex-fr", + "totalCosts": 267.65, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15795465/medium/10a5ef3ef5a492fd883eb55c239db5b3.jpeg" + }, + { + "id": 15949345, + "username": "mehdibouzit", + "totalCosts": 38.38, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949345/medium/2eb9da6ad8eb6399c9aff2b21957916d.png" + } + ] + }, + { + "fileId": "7537", + "contributors": [ + { + "id": 15966553, + "username": "bamcryptobam1", + "totalCosts": 211.09, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966553/medium/7fde8cf7f30af6c46453e25bbf5aa342.png" + }, + { + "id": 15859719, + "username": "ilies-bel", + "totalCosts": 109.08, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15859719/medium/8a49812209a978d4e24ca6cf26777320.png" + }, + { + "id": 15961437, + "username": "harpocryptes", + "totalCosts": 36.36, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961437/medium/d495096dfb14721b3d4848a1bc7cfdd5.jpeg" + }, + { + "id": 15752987, + "username": "eleashadock", + "totalCosts": 15.15, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15752987/medium/4e31f79c3a4f97d4b7b2f45ae5c4b5ad.png" + } + ] + }, + { + "fileId": "7541", + "contributors": [ + { + "id": 13997701, + "username": "i8008", + "totalCosts": 567.62, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13997701/medium/28a51e6f02f22b60225457043b3a8f6b.png" + }, + { + "id": 15914449, + "username": "CoinHoodie", + "totalCosts": 127.26, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914449/medium/8d2590e4c534ca5125f1d70b6d9c71cc.jpeg" + }, + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 25.25, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, + { + "id": 15730243, + "username": "louisfelixg", + "totalCosts": 13.13, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15730243/medium/9056c95317b5bc74f571e423f7251e0a_default.png" + } + ] + }, + { + "fileId": "7521", + "contributors": [ + { + "id": 15954931, + "username": "XofEE", + "totalCosts": 168.67, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png" + }, + { + "id": 15961437, + "username": "harpocryptes", + "totalCosts": 18.18, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961437/medium/d495096dfb14721b3d4848a1bc7cfdd5.jpeg" + } + ] + }, + { + "fileId": "8035", + "contributors": [ + { + "id": 14823260, + "username": "omahs", + "totalCosts": 882.74, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg" + }, + { + "id": 17361, + "username": "plamarque", + "totalCosts": 282.8, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" + } + ] + }, + { + "fileId": "7919", + "contributors": [ + { + "id": 15914449, + "username": "CoinHoodie", + "totalCosts": 1308.96, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914449/medium/8d2590e4c534ca5125f1d70b6d9c71cc.jpeg" + }, + { + "id": 17361, + "username": "plamarque", + "totalCosts": 37.37, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png" + }, + { + "id": 15949813, + "username": "massmr", + "totalCosts": 31.31, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949813/medium/523c73497ca4fc2d5d83c8c54f0123b1_default.png" + }, + { + "id": 14823260, + "username": "omahs", + "totalCosts": 21.21, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg" + }, + { + "id": 15944249, + "username": "ANOKEY", + "totalCosts": 17.17, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15944249/medium/5bcfd0e2c58b676f2709481d9f4308ef_default.png" + }, + { + "id": 15430214, + "username": "didierkrux", + "totalCosts": 5.05, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15430214/medium/2b8391bf50f94b404bcd2967c0528ed7.png" + } + ] } ] }, @@ -19222,28 +19521,28 @@ { "fileId": "5565", "contributors": [ - { - "id": 15950093, - "username": "WholesomeBruh", - "totalCosts": 410.06, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15950093/medium/0ca7566575ffb3df8169a24c985fc2f8_default.png" - }, { "id": 15363678, "username": "Dawyer", - "totalCosts": 187.86, + "totalCosts": 108.07, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15363678/medium/50e493deacc1ae7d512f2b38aab07d00.png" }, + { + "id": 15950093, + "username": "WholesomeBruh", + "totalCosts": 96.96, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15950093/medium/0ca7566575ffb3df8169a24c985fc2f8_default.png" + }, { "id": 15956379, "username": "bhangbuddy", - "totalCosts": 182.81, + "totalCosts": 41.41, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956379/medium/435901b02d5b5f77c10fc06ff2c1c3e6.png" }, { "id": 15205992, "username": "Vishal07", - "totalCosts": 58.58, + "totalCosts": 12.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15205992/medium/465c1df5cf56d2c9fc47af524525db21_default.png" }, { @@ -19749,17 +20048,17 @@ { "fileId": "2856", "contributors": [ - { - "id": 15965461, - "username": "Satglow", - "totalCosts": 148.47, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png" - }, { "id": 14357794, "username": "robertdosa", "totalCosts": 103.02, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14357794/medium/a28b741096516a710523b87d9ee07223.png" + }, + { + "id": 15965461, + "username": "Satglow", + "totalCosts": 37.37, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png" } ] }, @@ -19837,7 +20136,7 @@ { "id": 15965461, "username": "Satglow", - "totalCosts": 750.43, + "totalCosts": 655.49, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png" }, { @@ -20213,7 +20512,7 @@ { "id": 14357794, "username": "robertdosa", - "totalCosts": 127.26, + "totalCosts": 29.29, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14357794/medium/a28b741096516a710523b87d9ee07223.png" }, { @@ -20247,15 +20546,9 @@ { "id": 15965461, "username": "Satglow", - "totalCosts": 702.96, + "totalCosts": 207.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png" }, - { - "id": 15531371, - "username": "merkomilan", - "totalCosts": 49.49, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15531371/medium/662dbb4ec105d75d3c1f63ae21a284f9.jpeg" - }, { "id": 15362854, "username": "geolang", @@ -20273,6 +20566,12 @@ "username": "v.miklos", "totalCosts": 3.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236294/medium/66acaf0cf529627c9f6dddb3e789e464_default.png" + }, + { + "id": 15531371, + "username": "merkomilan", + "totalCosts": 3.03, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15531371/medium/662dbb4ec105d75d3c1f63ae21a284f9.jpeg" } ] }, @@ -20338,6 +20637,35 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15418600/medium/ad4c648bb30e71908127d757eef8b23f.png" } ] + }, + { + "fileId": "5559", + "contributors": [ + { + "id": 15965461, + "username": "Satglow", + "totalCosts": 1058.48, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png" + }, + { + "id": 15627487, + "username": "mysteryalchemist", + "totalCosts": 234.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15627487/medium/b04d798863055a6f17ac25dab1d5c60b_default.png" + }, + { + "id": 15616701, + "username": "Wegonar", + "totalCosts": 62.62, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15616701/medium/107a9002aa59a9dab9854283b420a57b.jpeg" + }, + { + "id": 15776137, + "username": "sk.chrisz07", + "totalCosts": 10.1, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15776137/medium/3796fa782f4358de77ba903b72481ab3.jpeg" + } + ] } ] }, @@ -20414,7 +20742,7 @@ { "id": 14861756, "username": "RahayuRafika_12", - "totalCosts": 199.98, + "totalCosts": 192.91, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" } ] @@ -20425,20 +20753,26 @@ { "id": 14953707, "username": "dvd_okt84", - "totalCosts": 240.38, + "totalCosts": 221.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14953707/medium/58140674d431a395e73cbc1ef9ae6d6f_default.png" }, + { + "id": 14866604, + "username": "yeremiaryangunadi", + "totalCosts": 38.38, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png" + }, { "id": 14861756, "username": "RahayuRafika_12", - "totalCosts": 67.67, + "totalCosts": 12.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" }, { - "id": 14866604, - "username": "yeremiaryangunadi", - "totalCosts": 38.38, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png" + "id": 14708760, + "username": "hypebeans", + "totalCosts": 11.11, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/f039dc85a8469b65d9e3e2413f9c4710.png" } ] }, @@ -20667,33 +21001,27 @@ { "id": 15927303, "username": "roifnaufal21", - "totalCosts": 2293.71, + "totalCosts": 1534.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" }, - { - "id": 14861756, - "username": "RahayuRafika_12", - "totalCosts": 198.97, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" - }, { "id": 14866604, "username": "yeremiaryangunadi", "totalCosts": 140.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png" }, + { + "id": 14861756, + "username": "RahayuRafika_12", + "totalCosts": 114.13, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" + }, { "id": 15505848, "username": "hayashijanu", - "totalCosts": 26.26, + "totalCosts": 13.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15505848/medium/2b9d7bd5232e9e19fb5bd7d01415dc75_default.png" }, - { - "id": 16023432, - "username": "SyafaHadyan", - "totalCosts": 14.14, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16023432/medium/c69ac661dc63b793577afb96f6b8986d.jpg" - }, { "id": 15491638, "username": "radityo.dimas", @@ -20778,7 +21106,7 @@ { "id": 14861756, "username": "RahayuRafika_12", - "totalCosts": 1230.18, + "totalCosts": 1198.87, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" }, { @@ -20825,7 +21153,7 @@ { "id": 15934037, "username": "fuji.anggara10", - "totalCosts": 712.05, + "totalCosts": 685.79, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" }, { @@ -20941,7 +21269,7 @@ { "id": 14861756, "username": "RahayuRafika_12", - "totalCosts": 67.67, + "totalCosts": 54.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" }, { @@ -21027,13 +21355,13 @@ { "id": 14866604, "username": "yeremiaryangunadi", - "totalCosts": 138.37, + "totalCosts": 115.14, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png" }, { "id": 15927303, "username": "roifnaufal21", - "totalCosts": 89.89, + "totalCosts": 19.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" } ] @@ -21158,13 +21486,13 @@ { "id": 15927303, "username": "roifnaufal21", - "totalCosts": 285.83, + "totalCosts": 269.67, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" }, { "id": 15934037, "username": "fuji.anggara10", - "totalCosts": 245.43, + "totalCosts": 217.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" }, { @@ -21268,19 +21596,19 @@ { "id": 15934037, "username": "fuji.anggara10", - "totalCosts": 3066.36, + "totalCosts": 1591.76, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" }, { "id": 14861756, "username": "RahayuRafika_12", - "totalCosts": 939.3, + "totalCosts": 585.8, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" }, { "id": 15927303, "username": "roifnaufal21", - "totalCosts": 383.8, + "totalCosts": 216.14, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" }, { @@ -21481,7 +21809,7 @@ { "id": 14866604, "username": "yeremiaryangunadi", - "totalCosts": 175.74, + "totalCosts": 166.65, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png" }, { @@ -21539,13 +21867,13 @@ { "id": 14891244, "username": "vaiahmad", - "totalCosts": 82.82, + "totalCosts": 79.79, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14891244/medium/d51812ca6f71924544bf03b9a23efb68_default.png" }, { "id": 14866604, "username": "yeremiaryangunadi", - "totalCosts": 58.58, + "totalCosts": 54.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png" } ] @@ -22513,7 +22841,7 @@ { "id": 15934037, "username": "fuji.anggara10", - "totalCosts": 1565.5, + "totalCosts": 1559.44, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" }, { @@ -22547,7 +22875,7 @@ { "id": 15927303, "username": "roifnaufal21", - "totalCosts": 1352.39, + "totalCosts": 1346.33, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" }, { @@ -22689,13 +23017,13 @@ { "id": 14866604, "username": "yeremiaryangunadi", - "totalCosts": 574.69, + "totalCosts": 557.52, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png" }, { "id": 15927303, "username": "roifnaufal21", - "totalCosts": 192.91, + "totalCosts": 185.84, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" }, { @@ -22866,7 +23194,7 @@ { "id": 15927303, "username": "roifnaufal21", - "totalCosts": 1230.18, + "totalCosts": 217.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" }, { @@ -22943,35 +23271,17 @@ { "fileId": "2954", "contributors": [ - { - "id": 15927303, - "username": "roifnaufal21", - "totalCosts": 2116.96, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" - }, - { - "id": 15594493, - "username": "0xceife", - "totalCosts": 713.06, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15594493/medium/ada4e2f5276b6085495631bb59486bc8.gif" - }, - { - "id": 14778796, - "username": "Tiara19", - "totalCosts": 114.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14778796/medium/78468d88b1f5701e8d8aefa5c6272c4d.jpeg" - }, { "id": 14866604, "username": "yeremiaryangunadi", - "totalCosts": 103.02, + "totalCosts": 25.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866604/medium/285a89179a206f3621ba14bf04085b27.png" }, { - "id": 14861756, - "username": "RahayuRafika_12", - "totalCosts": 29.29, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" + "id": 14778796, + "username": "Tiara19", + "totalCosts": 16.16, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14778796/medium/78468d88b1f5701e8d8aefa5c6272c4d.jpeg" }, { "id": 14894716, @@ -23022,7 +23332,7 @@ { "id": 14861756, "username": "RahayuRafika_12", - "totalCosts": 318.15, + "totalCosts": 308.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" }, { @@ -23069,21 +23379,15 @@ { "id": 15775647, "username": "utomo878", - "totalCosts": 943.34, + "totalCosts": 305.02, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15775647/medium/e6c4302f1613714c53e496f87b61ae01.jpg" }, { "id": 14708760, "username": "hypebeans", - "totalCosts": 32.32, + "totalCosts": 23.23, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/f039dc85a8469b65d9e3e2413f9c4710.png" }, - { - "id": 15962457, - "username": "danimeister", - "totalCosts": 8.08, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962457/medium/97c701528b519a4a784b0d6b5f845fb8.jpg" - }, { "id": 15752359, "username": "feriywahyu", @@ -23204,7 +23508,7 @@ { "id": 14861756, "username": "RahayuRafika_12", - "totalCosts": 777.7, + "totalCosts": 723.16, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" }, { @@ -23248,6 +23552,12 @@ "totalCosts": 89.89, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15526713/medium/a65fab62bbc032697e4d12599f864085.jpeg" }, + { + "id": 14708760, + "username": "hypebeans", + "totalCosts": 35.35, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/f039dc85a8469b65d9e3e2413f9c4710.png" + }, { "id": 15762357, "username": "HA22", @@ -23309,7 +23619,7 @@ { "id": 15962457, "username": "danimeister", - "totalCosts": 423.19, + "totalCosts": 393.9, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962457/medium/97c701528b519a4a784b0d6b5f845fb8.jpg" }, { @@ -23419,13 +23729,13 @@ { "id": 15775647, "username": "utomo878", - "totalCosts": 637.31, + "totalCosts": 618.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15775647/medium/e6c4302f1613714c53e496f87b61ae01.jpg" }, { "id": 15927303, "username": "roifnaufal21", - "totalCosts": 405.01, + "totalCosts": 384.81, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" }, { @@ -23477,8 +23787,8 @@ { "id": 15662523, "username": "Jokowdd", - "totalCosts": 864.56, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15662523/medium/4039d75a804e9c859bfb21d965e9bcb9_default.png" + "totalCosts": 852.44, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15662523/medium/a1bde18af96dc28c3fd1c1dd610e8896.JPG" }, { "id": 14861756, @@ -23494,7 +23804,7 @@ { "id": 15927303, "username": "roifnaufal21", - "totalCosts": 1785.68, + "totalCosts": 1750.33, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" }, { @@ -23506,10 +23816,326 @@ { "id": 14861756, "username": "RahayuRafika_12", - "totalCosts": 92.92, + "totalCosts": 81.81, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" + }, + { + "id": 14708760, + "username": "hypebeans", + "totalCosts": 11.11, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/f039dc85a8469b65d9e3e2413f9c4710.png" + } + ] + }, + { + "fileId": "7525", + "contributors": [ + { + "id": 15662523, + "username": "Jokowdd", + "totalCosts": 645.39, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15662523/medium/a1bde18af96dc28c3fd1c1dd610e8896.JPG" + }, + { + "id": 13731191, + "username": "syahmin", + "totalCosts": 262.6, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13731191/medium/200727f4ec634eec8c5b3499cf6863db_default.png" + }, + { + "id": 14861756, + "username": "RahayuRafika_12", + "totalCosts": 12.12, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" + } + ] + }, + { + "fileId": "8027", + "contributors": [ + { + "id": 15662523, + "username": "Jokowdd", + "totalCosts": 1070.6, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15662523/medium/a1bde18af96dc28c3fd1c1dd610e8896.JPG" + } + ] + }, + { + "fileId": "7529", + "contributors": [ + { + "id": 15934037, + "username": "fuji.anggara10", + "totalCosts": 671.65, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" + } + ] + }, + { + "fileId": "7533", + "contributors": [ + { + "id": 15934037, + "username": "fuji.anggara10", + "totalCosts": 306.03, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" + } + ] + }, + { + "fileId": "7537", + "contributors": [ + { + "id": 15934037, + "username": "fuji.anggara10", + "totalCosts": 371.68, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" + } + ] + }, + { + "fileId": "7541", + "contributors": [ + { + "id": 15934037, + "username": "fuji.anggara10", + "totalCosts": 732.25, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" + }, + { + "id": 14708760, + "username": "hypebeans", + "totalCosts": 25.25, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/f039dc85a8469b65d9e3e2413f9c4710.png" + } + ] + }, + { + "fileId": "7521", + "contributors": [ + { + "id": 15934037, + "username": "fuji.anggara10", + "totalCosts": 194.93, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" + } + ] + }, + { + "fileId": "7713", + "contributors": [ + { + "id": 15934037, + "username": "fuji.anggara10", + "totalCosts": 2344.21, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" + }, + { + "id": 14861756, + "username": "RahayuRafika_12", + "totalCosts": 102.01, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" + }, + { + "id": 15962457, + "username": "danimeister", + "totalCosts": 50.5, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962457/medium/97c701528b519a4a784b0d6b5f845fb8.jpg" + } + ] + }, + { + "fileId": "7717", + "contributors": [ + { + "id": 15934037, + "username": "fuji.anggara10", + "totalCosts": 1490.76, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" + }, + { + "id": 14861756, + "username": "RahayuRafika_12", + "totalCosts": 329.26, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" + } + ] + }, + { + "fileId": "7721", + "contributors": [ + { + "id": 15927303, + "username": "roifnaufal21", + "totalCosts": 474.7, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" + }, + { + "id": 14861756, + "username": "RahayuRafika_12", + "totalCosts": 18.18, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" + } + ] + }, + { + "fileId": "7803", + "contributors": [ + { + "id": 15934037, + "username": "fuji.anggara10", + "totalCosts": 1082.72, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" + }, + { + "id": 14861756, + "username": "RahayuRafika_12", + "totalCosts": 30.3, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" + } + ] + }, + { + "fileId": "7515", + "contributors": [ + { + "id": 15775647, + "username": "utomo878", + "totalCosts": 625.19, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15775647/medium/e6c4302f1613714c53e496f87b61ae01.jpg" + }, + { + "id": 15927303, + "username": "roifnaufal21", + "totalCosts": 506.01, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" + }, + { + "id": 14861756, + "username": "RahayuRafika_12", + "totalCosts": 334.31, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" + }, + { + "id": 15962457, + "username": "danimeister", + "totalCosts": 85.85, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962457/medium/97c701528b519a4a784b0d6b5f845fb8.jpg" + }, + { + "id": 15662523, + "username": "Jokowdd", + "totalCosts": 30.3, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15662523/medium/a1bde18af96dc28c3fd1c1dd610e8896.JPG" + } + ] + }, + { + "fileId": "7725", + "contributors": [ + { + "id": 15662523, + "username": "Jokowdd", + "totalCosts": 1020.1, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15662523/medium/a1bde18af96dc28c3fd1c1dd610e8896.JPG" + }, + { + "id": 14861756, + "username": "RahayuRafika_12", + "totalCosts": 31.31, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" } ] + }, + { + "fileId": "7729", + "contributors": [ + { + "id": 15927303, + "username": "roifnaufal21", + "totalCosts": 666.6, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" + } + ] + }, + { + "fileId": "7733", + "contributors": [ + { + "id": 15934037, + "username": "fuji.anggara10", + "totalCosts": 721.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg" + }, + { + "id": 14861756, + "username": "RahayuRafika_12", + "totalCosts": 60.6, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg" + } + ] + }, + { + "fileId": "7737", + "contributors": [ + { + "id": 14920051, + "username": "regislanderge", + "totalCosts": 850.42, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14920051/medium/9ba58eec03e143bcd1acbe5b2ecf8250.jpg" + } + ] + }, + { + "fileId": "7741", + "contributors": [ + { + "id": 14920051, + "username": "regislanderge", + "totalCosts": 1706.9, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14920051/medium/9ba58eec03e143bcd1acbe5b2ecf8250.jpg" + }, + { + "id": 13332574, + "username": "wongcie", + "totalCosts": 51.51, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13332574/medium/e5d356a816a34edc6657cb41bb54d8f0.jpg" + } + ] + }, + { + "fileId": "7745", + "contributors": [ + { + "id": 15927303, + "username": "roifnaufal21", + "totalCosts": 2021.01, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" + } + ] + }, + { + "fileId": "7749", + "contributors": [ + { + "id": 15927303, + "username": "roifnaufal21", + "totalCosts": 586.81, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" + } + ] + }, + { + "fileId": "7753", + "contributors": [ + { + "id": 15927303, + "username": "roifnaufal21", + "totalCosts": 1286.74, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png" + } + ] } ] }, @@ -23575,7 +24201,7 @@ { "id": 14665128, "username": "Pierlu_be", - "totalCosts": 1022.12, + "totalCosts": 1015.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665128/medium/5fdea361fcd2c73a52533056e2709694_default.png" }, { @@ -23621,7 +24247,7 @@ { "id": 13754187, "username": "Carla78", - "totalCosts": 77.77, + "totalCosts": 70.7, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13754187/medium/37de2106b564cdd5431a9c1f7e091087.png" }, { @@ -23638,19 +24264,19 @@ { "id": 14957025, "username": "denisplaku05", - "totalCosts": 240.38, + "totalCosts": 221.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957025/medium/155eeb9074ad5cc6f16d1c281f019944.png" }, { "id": 15058945, "username": "rickygrassi", - "totalCosts": 108.07, + "totalCosts": 90.9, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15058945/medium/f0522d6d1128923dee1be695b3095364.jpeg" }, { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 63.63, + "totalCosts": 48.48, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -23673,7 +24299,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 205.03, + "totalCosts": 198.97, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -23771,9 +24397,15 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 186.85, + "totalCosts": 178.77, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, + { + "id": 16073436, + "username": "g-flex", + "totalCosts": 19.19, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16073436/medium/91dc8be3a27f3a7199bd8286cfb95eb6.jpeg" + }, { "id": 14657804, "username": "jhonnyvianello", @@ -23890,7 +24522,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 414.1, + "totalCosts": 484.8, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -24041,8 +24673,14 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 2182.61, + "totalCosts": 2214.93, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" + }, + { + "id": 16061752, + "username": "bernardistefano73", + "totalCosts": 24.24, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16061752/medium/12da54ba24880878f712772863c6f820.png" } ] }, @@ -24215,13 +24853,13 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 691.85, + "totalCosts": 1727.1, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { "id": 14665128, "username": "Pierlu_be", - "totalCosts": 494.9, + "totalCosts": 241.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665128/medium/5fdea361fcd2c73a52533056e2709694_default.png" }, { @@ -24411,7 +25049,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 657.51, + "totalCosts": 689.83, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -24503,7 +25141,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 712.05, + "totalCosts": 685.79, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -24694,7 +25332,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 175.74, + "totalCosts": 162.61, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -24889,21 +25527,9 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 27.27, + "totalCosts": 67.67, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, - { - "id": 15266690, - "username": "Fuliggine", - "totalCosts": 25.25, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg" - }, - { - "id": 13754187, - "username": "Carla78", - "totalCosts": 7.07, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13754187/medium/37de2106b564cdd5431a9c1f7e091087.png" - }, { "id": 14647238, "username": "zamptom", @@ -25114,13 +25740,13 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 359.56, + "totalCosts": 370.67, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { "id": 13754187, "username": "Carla78", - "totalCosts": 166.65, + "totalCosts": 163.62, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13754187/medium/37de2106b564cdd5431a9c1f7e091087.png" }, { @@ -25149,7 +25775,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 1086.76, + "totalCosts": 1067.57, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -25238,6 +25864,12 @@ "username": "MARG8", "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14672670/medium/fa06e51f67d5782307ef484c16c0bd7b_default.png" + }, + { + "id": 16061752, + "username": "bernardistefano73", + "totalCosts": 1.01, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16061752/medium/12da54ba24880878f712772863c6f820.png" } ] }, @@ -25321,25 +25953,19 @@ { "id": 15630617, "username": "andrea0x.eth", - "totalCosts": 3846.08, + "totalCosts": 2234.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15630617/medium/b03e6368819544b642a8371e0a875054.jpeg" }, { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 214.12, + "totalCosts": 1501.87, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, - { - "id": 15185884, - "username": "carmen1912", - "totalCosts": 130.29, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg" - }, { "id": 15587175, "username": "Mattimatt", - "totalCosts": 123.22, + "totalCosts": 64.64, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15587175/medium/04048242c04ed4e297073617103ca738_default.png" }, { @@ -25533,7 +26159,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 44.44, + "totalCosts": 35.35, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -25542,12 +26168,6 @@ "totalCosts": 27.27, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15051821/medium/de8240cc982043ed008be3fd9dbf1cc1.png" }, - { - "id": 14970323, - "username": "ragnolimichele99", - "totalCosts": 13.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14970323/medium/fb22954c81db3329ada19b179d4f63f6.jpeg" - }, { "id": 15185884, "username": "carmen1912", @@ -25632,7 +26252,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 2373.5, + "totalCosts": 2369.46, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -25706,7 +26326,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 3667.31, + "totalCosts": 3641.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -26160,7 +26780,7 @@ { "id": 14657804, "username": "jhonnyvianello", - "totalCosts": 101, + "totalCosts": 94.94, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14657804/medium/005d9fa70fdc5a4fcd818f63cf61e1a0.jpg" }, { @@ -26174,6 +26794,12 @@ "username": "andreapiani.dev", "totalCosts": 49.49, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15101201/medium/e83a56185107895cbc97cbd279ecf901.jpg" + }, + { + "id": 16073436, + "username": "g-flex", + "totalCosts": 6.06, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16073436/medium/91dc8be3a27f3a7199bd8286cfb95eb6.jpeg" } ] }, @@ -26627,8 +27253,14 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 4399.56, + "totalCosts": 4393.5, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" + }, + { + "id": 16073436, + "username": "g-flex", + "totalCosts": 5.05, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16073436/medium/91dc8be3a27f3a7199bd8286cfb95eb6.jpeg" } ] }, @@ -26660,7 +27292,7 @@ { "id": 15630617, "username": "andrea0x.eth", - "totalCosts": 693.87, + "totalCosts": 687.81, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15630617/medium/b03e6368819544b642a8371e0a875054.jpeg" }, { @@ -26789,8 +27421,14 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 824.16, + "totalCosts": 806.99, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" + }, + { + "id": 16073436, + "username": "g-flex", + "totalCosts": 58.58, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16073436/medium/91dc8be3a27f3a7199bd8286cfb95eb6.jpeg" } ] }, @@ -26857,7 +27495,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 8132.52, + "totalCosts": 8109.29, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -26871,6 +27509,12 @@ "username": "andrea0x.eth", "totalCosts": 59.59, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15630617/medium/b03e6368819544b642a8371e0a875054.jpeg" + }, + { + "id": 16073436, + "username": "g-flex", + "totalCosts": 23.23, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16073436/medium/91dc8be3a27f3a7199bd8286cfb95eb6.jpeg" } ] }, @@ -26974,34 +27618,40 @@ { "fileId": "6183", "contributors": [ + { + "id": 16073436, + "username": "g-flex", + "totalCosts": 438.34, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16073436/medium/91dc8be3a27f3a7199bd8286cfb95eb6.jpeg" + }, { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 735.28, + "totalCosts": 113.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { "id": 15266690, "username": "Fuliggine", - "totalCosts": 72.72, + "totalCosts": 70.7, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg" }, - { - "id": 13754187, - "username": "Carla78", - "totalCosts": 30.3, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13754187/medium/37de2106b564cdd5431a9c1f7e091087.png" - }, { "id": 15101201, "username": "andreapiani.dev", "totalCosts": 13.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15101201/medium/e83a56185107895cbc97cbd279ecf901.jpg" }, + { + "id": 13754187, + "username": "Carla78", + "totalCosts": 7.07, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13754187/medium/37de2106b564cdd5431a9c1f7e091087.png" + }, { "id": 15416538, "username": "g.gangemi98", - "totalCosts": 7.07, + "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15416538/medium/c426736cce6799595393451976d898aa.jpeg" }, { @@ -27111,50 +27761,26 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 525.2, + "totalCosts": 23.23, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { - "id": 15630617, - "username": "andrea0x.eth", - "totalCosts": 287.85, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15630617/medium/b03e6368819544b642a8371e0a875054.jpeg" - }, - { - "id": 14633448, - "username": "ilrado", - "totalCosts": 107.06, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633448/medium/00e36a91231d5f6980f4ea96c1f24ab9.jpg" + "id": 14665128, + "username": "Pierlu_be", + "totalCosts": 13.13, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665128/medium/5fdea361fcd2c73a52533056e2709694_default.png" }, { "id": 15024013, "username": "simonedelpopolo", - "totalCosts": 37.37, + "totalCosts": 11.11, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15024013/medium/5bad8e53069b313609e9adf56fd0eb28_default.png" }, { - "id": 14758100, - "username": "Wisheechia", - "totalCosts": 26.26, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14758100/medium/420cea9c5114f42804b9bfde2e438c38.png" - }, - { - "id": 14732520, - "username": "matteo.boffo", - "totalCosts": 26.26, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14732520/medium/5c3707bf4dd91f58d154eae8cab347dd.png" - }, - { - "id": 15185884, - "username": "carmen1912", - "totalCosts": 23.23, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg" - }, - { - "id": 14665128, - "username": "Pierlu_be", - "totalCosts": 13.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665128/medium/5fdea361fcd2c73a52533056e2709694_default.png" + "id": 14633448, + "username": "ilrado", + "totalCosts": 11.11, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14633448/medium/00e36a91231d5f6980f4ea96c1f24ab9.jpg" }, { "id": 14777938, @@ -27217,13 +27843,13 @@ { "id": 15266690, "username": "Fuliggine", - "totalCosts": 575.7, + "totalCosts": 568.63, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg" }, { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 290.88, + "totalCosts": 297.95, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -27303,20 +27929,20 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 640.34, + "totalCosts": 656.5, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, - { - "id": 15266690, - "username": "Fuliggine", - "totalCosts": 46.46, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg" - }, { "id": 15757333, "username": "AlexFalzone", "totalCosts": 46.46, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15757333/medium/1d341e767179f0d02606576d0b7dc373.jpeg" + }, + { + "id": 15266690, + "username": "Fuliggine", + "totalCosts": 30.3, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg" } ] }, @@ -27349,7 +27975,7 @@ { "id": 15185884, "username": "carmen1912", - "totalCosts": 521.16, + "totalCosts": 511.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg" }, { @@ -27364,6 +27990,12 @@ "totalCosts": 33.33, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14600024/medium/8ae92291801f1578f0cd335bc68d68f3.jpeg" }, + { + "id": 16073436, + "username": "g-flex", + "totalCosts": 31.31, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16073436/medium/91dc8be3a27f3a7199bd8286cfb95eb6.jpeg" + }, { "id": 15754717, "username": "Tgualtieri1976", @@ -27382,21 +28014,27 @@ "fileId": "5565", "contributors": [ { - "id": 15266690, - "username": "Fuliggine", - "totalCosts": 470.66, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg" + "id": 16073436, + "username": "g-flex", + "totalCosts": 365.62, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16073436/medium/91dc8be3a27f3a7199bd8286cfb95eb6.jpeg" }, { "id": 13754187, "username": "Carla78", - "totalCosts": 263.61, + "totalCosts": 143.42, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13754187/medium/37de2106b564cdd5431a9c1f7e091087.png" }, + { + "id": 15266690, + "username": "Fuliggine", + "totalCosts": 91.91, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg" + }, { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 76.76, + "totalCosts": 39.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -27405,10 +28043,16 @@ "totalCosts": 37.37, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15630617/medium/b03e6368819544b642a8371e0a875054.jpeg" }, + { + "id": 16061752, + "username": "bernardistefano73", + "totalCosts": 32.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16061752/medium/12da54ba24880878f712772863c6f820.png" + }, { "id": 14657804, "username": "jhonnyvianello", - "totalCosts": 32.32, + "totalCosts": 23.23, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14657804/medium/005d9fa70fdc5a4fcd818f63cf61e1a0.jpg" }, { @@ -27420,7 +28064,7 @@ { "id": 15946127, "username": "hyperalchemy", - "totalCosts": 9.09, + "totalCosts": 7.07, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946127/medium/fb8809671278895b42cf50c752fd7bf2.png" } ] @@ -27659,7 +28303,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 2035.15, + "totalCosts": 2055.35, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" } ] @@ -27698,13 +28342,13 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 241.39, + "totalCosts": 249.47, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { "id": 14665128, "username": "Pierlu_be", - "totalCosts": 161.6, + "totalCosts": 107.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665128/medium/5fdea361fcd2c73a52533056e2709694_default.png" }, { @@ -27755,21 +28399,21 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 614.08, + "totalCosts": 594.89, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, - { - "id": 15266690, - "username": "Fuliggine", - "totalCosts": 153.52, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg" - }, { "id": 14657804, "username": "jhonnyvianello", "totalCosts": 141.4, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14657804/medium/005d9fa70fdc5a4fcd818f63cf61e1a0.jpg" }, + { + "id": 15266690, + "username": "Fuliggine", + "totalCosts": 133.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg" + }, { "id": 13754187, "username": "Carla78", @@ -27782,6 +28426,12 @@ "totalCosts": 29.29, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13474992/medium/765c7de24d4c15c35ef878f8b729b5a2_default.png" }, + { + "id": 16061752, + "username": "bernardistefano73", + "totalCosts": 27.27, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16061752/medium/12da54ba24880878f712772863c6f820.png" + }, { "id": 15321480, "username": "AlessandroSosa", @@ -27836,7 +28486,7 @@ { "id": 13461670, "username": "GiorgioHerbie", - "totalCosts": 1965.46, + "totalCosts": 1964.45, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png" }, { @@ -27923,7 +28573,7 @@ { "id": 15721133, "username": "LucaPennella", - "totalCosts": 1564.49, + "totalCosts": 1560.45, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15721133/medium/57413183f5da136c6e2546edbe8ff01d.png" }, { @@ -27958,7 +28608,7 @@ { "id": 14665128, "username": "Pierlu_be", - "totalCosts": 1041.31, + "totalCosts": 1022.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14665128/medium/5fdea361fcd2c73a52533056e2709694_default.png" }, { @@ -27970,7 +28620,7 @@ { "id": 15416538, "username": "g.gangemi98", - "totalCosts": 434.3, + "totalCosts": 422.18, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15416538/medium/c426736cce6799595393451976d898aa.jpeg" }, { @@ -28072,7 +28722,7 @@ { "id": 13754187, "username": "Carla78", - "totalCosts": 861.53, + "totalCosts": 832.24, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13754187/medium/37de2106b564cdd5431a9c1f7e091087.png" }, { @@ -28086,6 +28736,12 @@ "username": "TDzaa", "totalCosts": 122.21, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15976521/medium/8414ee27520d071a1f2d1a4b63f64f08.png" + }, + { + "id": 16073436, + "username": "g-flex", + "totalCosts": 29.29, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16073436/medium/91dc8be3a27f3a7199bd8286cfb95eb6.jpeg" } ] }, @@ -28164,7 +28820,7 @@ { "id": 15201594, "username": "akashi031", - "totalCosts": 1137.26, + "totalCosts": 1130.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15201594/medium/5e27758e217a387356f7c0502130479f_default.png" }, { @@ -28239,7 +28895,7 @@ { "id": 14880458, "username": "sekisanchi", - "totalCosts": 167.66, + "totalCosts": 148.47, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png" }, { @@ -28257,7 +28913,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 18.18, + "totalCosts": 10.1, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] @@ -28354,7 +29010,7 @@ { "id": 15263940, "username": "r2d2_jp", - "totalCosts": 189.88, + "totalCosts": 181.8, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15263940/medium/79ad585145ba5474bca7d35c2719dc43.jpg" }, { @@ -28779,18 +29435,18 @@ { "fileId": "2868", "contributors": [ + { + "id": 15208868, + "username": "HiroyukiNaito", + "totalCosts": 184.83, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" + }, { "id": 14701334, "username": "ozora-ogino", "totalCosts": 182.81, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14701334/medium/3b0ac84d5b08a7171e0157caba5e6ece.png" }, - { - "id": 15208868, - "username": "HiroyukiNaito", - "totalCosts": 154.53, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" - }, { "id": 14880458, "username": "sekisanchi", @@ -28858,13 +29514,13 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 1241.29, + "totalCosts": 2406.83, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { "id": 15460936, "username": "tsukky", - "totalCosts": 1079.69, + "totalCosts": 747.4, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15460936/medium/99ed6b4051dfcad3d1fa3e4cfaa17073.JPG" }, { @@ -28934,7 +29590,7 @@ { "id": 15649609, "username": "ta1suke", - "totalCosts": 1903.85, + "totalCosts": 1872.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15649609/medium/1c03845153fc375404b108070aef6a43.png" }, { @@ -29027,7 +29683,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 434.3, + "totalCosts": 466.62, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -29097,7 +29753,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 873.65, + "totalCosts": 847.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -29220,7 +29876,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 1628.12, + "totalCosts": 1646.3, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -29368,7 +30024,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 352.49, + "totalCosts": 429.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -29500,18 +30156,18 @@ { "fileId": "2856", "contributors": [ + { + "id": 15208868, + "username": "HiroyukiNaito", + "totalCosts": 137.36, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" + }, { "id": 14880458, "username": "sekisanchi", "totalCosts": 93.93, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png" }, - { - "id": 15208868, - "username": "HiroyukiNaito", - "totalCosts": 71.71, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" - }, { "id": 14708760, "username": "hypebeans", @@ -29567,7 +30223,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 123.22, + "totalCosts": 130.29, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -29719,7 +30375,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 3466.32, + "totalCosts": 3497.63, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -29794,7 +30450,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 228.26, + "totalCosts": 226.24, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -29846,7 +30502,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 1097.87, + "totalCosts": 1098.88, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -29927,7 +30583,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 4219.78, + "totalCosts": 2386.63, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -30124,7 +30780,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 77.77, + "totalCosts": 135.34, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -30205,7 +30861,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 36.36, + "totalCosts": 42.42, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -30319,18 +30975,18 @@ "totalCosts": 2719.93, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, - { - "id": 13428564, - "username": "tamaina", - "totalCosts": 44.44, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13428564/medium/2f79c6b7d361eb5893000fb450595900.png" - }, { "id": 14880458, "username": "sekisanchi", - "totalCosts": 43.43, + "totalCosts": 40.4, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png" }, + { + "id": 13428564, + "username": "tamaina", + "totalCosts": 40.4, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13428564/medium/2f79c6b7d361eb5893000fb450595900.png" + }, { "id": 14901400, "username": "shimanto2", @@ -30408,7 +31064,7 @@ { "id": 15135089, "username": "indwm", - "totalCosts": 3654.18, + "totalCosts": 3627.92, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135089/medium/ad0dde7b6943eb1bdc2b8c64223dd070.png" }, { @@ -30542,7 +31198,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 47.47, + "totalCosts": 86.86, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -30573,18 +31229,18 @@ { "fileId": "2810", "contributors": [ + { + "id": 15208868, + "username": "HiroyukiNaito", + "totalCosts": 311.08, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" + }, { "id": 14880458, "username": "sekisanchi", "totalCosts": 236.34, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png" }, - { - "id": 15208868, - "username": "HiroyukiNaito", - "totalCosts": 205.03, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" - }, { "id": 15333126, "username": "1056shigezane", @@ -30670,7 +31326,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 428.24, + "totalCosts": 441.37, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -30687,7 +31343,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 5063.13, + "totalCosts": 5082.32, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -30701,6 +31357,12 @@ { "fileId": "2804", "contributors": [ + { + "id": 15208868, + "username": "HiroyukiNaito", + "totalCosts": 3083.53, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" + }, { "id": 15680077, "username": "miyamo", @@ -30712,12 +31374,6 @@ "username": "sekisanchi", "totalCosts": 4.04, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png" - }, - { - "id": 15208868, - "username": "HiroyukiNaito", - "totalCosts": 0, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] }, @@ -31062,18 +31718,18 @@ "totalCosts": 632.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14984219/medium/bda27d10133f63c72881c79071f28657_default.png" }, + { + "id": 15208868, + "username": "HiroyukiNaito", + "totalCosts": 304.01, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" + }, { "id": 15070235, "username": "akibe", "totalCosts": 265.63, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15070235/medium/49c7580ba53089f63456e5b0a7046950_default.png" }, - { - "id": 15208868, - "username": "HiroyukiNaito", - "totalCosts": 244.42, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" - }, { "id": 15039393, "username": "lvengda", @@ -31199,7 +31855,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 442.38, + "totalCosts": 479.75, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] @@ -31308,7 +31964,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 457.53, + "totalCosts": 508.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -31610,7 +32266,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 4328.86, + "totalCosts": 4322.8, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -31638,7 +32294,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 3041.11, + "totalCosts": 3048.18, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -31655,7 +32311,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 1486.72, + "totalCosts": 1480.66, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -31778,7 +32434,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 1117.06, + "totalCosts": 1068.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" } ] @@ -31818,7 +32474,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 252.5, + "totalCosts": 299.97, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -31864,7 +32520,7 @@ { "id": 15208868, "username": "HiroyukiNaito", - "totalCosts": 9003.14, + "totalCosts": 8979.91, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { @@ -31982,12 +32638,6 @@ "totalCosts": 45.45, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15660341/medium/49268d587952510117b47cfa380006d9.png" }, - { - "id": 16024032, - "username": "doughnut-hole", - "totalCosts": 34.34, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16024032/medium/46c720939c58ca51610382068096fb3c.png" - }, { "id": 15208868, "username": "HiroyukiNaito", @@ -32000,29 +32650,23 @@ "totalCosts": 13.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14730036/medium/3f53daf0320c8412a99de867a0ca6d2c_default.png" }, - { - "id": 15135089, - "username": "indwm", - "totalCosts": 13.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135089/medium/ad0dde7b6943eb1bdc2b8c64223dd070.png" - }, { "id": 15389056, "username": "Koei", "totalCosts": 12.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15389056/medium/124c0cb2e15f16466dc7ff1ead583a07_default.png" }, + { + "id": 15135089, + "username": "indwm", + "totalCosts": 10.1, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135089/medium/ad0dde7b6943eb1bdc2b8c64223dd070.png" + }, { "id": 15133461, "username": "ANorton", "totalCosts": 3.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15133461/medium/fd9fdd0fe067cbc1731e8bcc7edf9bac_default.png" - }, - { - "id": 14103339, - "username": "ryoji.imai", - "totalCosts": 2.02, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14103339/medium/fc832d678cca1c9a43f019d8a819f41c.JPG" } ] }, @@ -32146,59 +32790,29 @@ { "fileId": "2954", "contributors": [ - { - "id": 15208868, - "username": "HiroyukiNaito", - "totalCosts": 1122.11, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" - }, - { - "id": 15466100, - "username": "ki-3", - "totalCosts": 303, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15466100/medium/1b0592d23d47ff1700a1b5163323646c.png" - }, { "id": 14852734, "username": "0xEthDuzIt", - "totalCosts": 109.08, + "totalCosts": 37.37, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14852734/medium/da1e9138c30b0fbcfd54f987a7e55328.jpg" }, { "id": 14942697, "username": "cclefjp", - "totalCosts": 108.07, + "totalCosts": 12.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14942697/medium/f0b6f7427184742914c4e061e485ecf0.jpeg" }, { - "id": 14880458, - "username": "sekisanchi", - "totalCosts": 33.33, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png" - }, - { - "id": 15384904, - "username": "_Sakura_", - "totalCosts": 15.15, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15384904/medium/c2c00eb3c10ba62f1b8fee328e145fa6_default.png" - }, - { - "id": 15488702, - "username": "nonno", - "totalCosts": 13.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15488702/medium/05e244b35702080883c4e5730ef4d1e5.jpeg" - }, - { - "id": 14395884, - "username": "Frodo821", - "totalCosts": 7.07, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14395884/medium/be6488d24fd9f5ff7ac7d461e6cd6758.jpeg" + "id": 15208868, + "username": "HiroyukiNaito", + "totalCosts": 11.11, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" }, { - "id": 14968267, - "username": "Dekicrypto", + "id": 14880458, + "username": "sekisanchi", "totalCosts": 3.03, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14968267/medium/d8a28f790e86204c5608ecdf54ec91eb_default.png" + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png" } ] }, @@ -32266,13 +32880,13 @@ { "id": 14103339, "username": "ryoji.imai", - "totalCosts": 790.83, + "totalCosts": 236.34, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14103339/medium/fc832d678cca1c9a43f019d8a819f41c.JPG" }, { "id": 14708760, "username": "hypebeans", - "totalCosts": 31.31, + "totalCosts": 22.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/f039dc85a8469b65d9e3e2413f9c4710.png" }, { @@ -32281,12 +32895,6 @@ "totalCosts": 7.07, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553263/medium/e02c4e5ff17f66308536a9ebacdd037b_default.png" }, - { - "id": 14880458, - "username": "sekisanchi", - "totalCosts": 6.06, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png" - }, { "id": 14968267, "username": "Dekicrypto", @@ -32298,6 +32906,12 @@ "username": "HiroyukiNaito", "totalCosts": 3.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg" + }, + { + "id": 14880458, + "username": "sekisanchi", + "totalCosts": 2.02, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14880458/medium/6b71180a926d6213e33b21e50df8e409_default.png" } ] }, @@ -32371,7 +32985,7 @@ { "id": 15135089, "username": "indwm", - "totalCosts": 143.42, + "totalCosts": 88.88, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15135089/medium/ad0dde7b6943eb1bdc2b8c64223dd070.png" }, { @@ -32458,7 +33072,7 @@ { "id": 14103339, "username": "ryoji.imai", - "totalCosts": 176.75, + "totalCosts": 156.55, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14103339/medium/fc832d678cca1c9a43f019d8a819f41c.JPG" }, { @@ -32675,7 +33289,7 @@ { "id": 15680077, "username": "miyamo", - "totalCosts": 3239.07, + "totalCosts": 3235.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15680077/medium/a9db402339c4ac996a32133a844692ef_default.png" } ] @@ -32826,7 +33440,7 @@ { "id": 15430302, "username": "kwangtaekim", - "totalCosts": 1186.75, + "totalCosts": 1179.68, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15430302/medium/705b3a29a93430236982b318c9131fcf.png" }, { @@ -32899,6 +33513,12 @@ "totalCosts": 603.98, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15105599/medium/a3e031fc91bbbf728f3bb5dd384e8400_default.png" }, + { + "id": 16054974, + "username": "swpark1004", + "totalCosts": 56.56, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16054974/medium/21f3f27ceb5330aeabde9a90ba4a5f85.jpeg" + }, { "id": 13471138, "username": "KyungwonPark", @@ -32977,27 +33597,33 @@ { "id": 15328532, "username": "Seung_Gi_Kim", - "totalCosts": 78.78, + "totalCosts": 59.59, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15328532/medium/78e4ff5d50b928c2aea8ff50b2ff1c39.jpg" }, + { + "id": 16054974, + "username": "swpark1004", + "totalCosts": 41.41, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16054974/medium/21f3f27ceb5330aeabde9a90ba4a5f85.jpeg" + }, { "id": 15530275, "username": "emunwon", "totalCosts": 15.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15530275/medium/116c0ade79ef3b6e615e1db568c016cf_default.png" }, - { - "id": 15568977, - "username": "AAIIWITF", - "totalCosts": 14.14, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15568977/medium/b3c017a322fc25536f89500f966d5d44.png" - }, { "id": 14984177, "username": "cokeeee", "totalCosts": 13.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14984177/medium/2a76634a36592a9de92fdc01dbbcc6de_default.png" }, + { + "id": 15568977, + "username": "AAIIWITF", + "totalCosts": 10.1, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15568977/medium/b3c017a322fc25536f89500f966d5d44.png" + }, { "id": 15105599, "username": "SaturnPiece", @@ -33052,15 +33678,9 @@ { "id": 13471138, "username": "KyungwonPark", - "totalCosts": 702.96, + "totalCosts": 239.37, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png" }, - { - "id": 15105599, - "username": "SaturnPiece", - "totalCosts": 50.5, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15105599/medium/a3e031fc91bbbf728f3bb5dd384e8400_default.png" - }, { "id": 15253076, "username": "Dilrong", @@ -33070,8 +33690,14 @@ { "id": 14261470, "username": "DHtheCreator", - "totalCosts": 14.14, + "totalCosts": 12.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14261470/medium/78d6d680bab6a88f1b8df92013bee804.jpg" + }, + { + "id": 15105599, + "username": "SaturnPiece", + "totalCosts": 6.06, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15105599/medium/a3e031fc91bbbf728f3bb5dd384e8400_default.png" } ] }, @@ -33081,7 +33707,7 @@ { "id": 15430302, "username": "kwangtaekim", - "totalCosts": 1043.33, + "totalCosts": 988.79, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15430302/medium/705b3a29a93430236982b318c9131fcf.png" }, { @@ -33144,7 +33770,7 @@ { "id": 13471138, "username": "KyungwonPark", - "totalCosts": 268.66, + "totalCosts": 229.27, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png" }, { @@ -33171,6 +33797,12 @@ "totalCosts": 27.27, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15568977/medium/b3c017a322fc25536f89500f966d5d44.png" }, + { + "id": 16054974, + "username": "swpark1004", + "totalCosts": 27.27, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16054974/medium/21f3f27ceb5330aeabde9a90ba4a5f85.jpeg" + }, { "id": 13997401, "username": "Windfactory", @@ -33330,6 +33962,17 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14261470/medium/78d6d680bab6a88f1b8df92013bee804.jpg" } ] + }, + { + "fileId": "8035", + "contributors": [ + { + "id": 13471138, + "username": "KyungwonPark", + "totalCosts": 1165.54, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png" + } + ] } ] }, @@ -33454,7 +34097,7 @@ { "id": 15084373, "username": "tarcanhursit", - "totalCosts": 305.02, + "totalCosts": 272.7, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg" }, { @@ -33471,7 +34114,7 @@ { "id": 15084373, "username": "tarcanhursit", - "totalCosts": 361.58, + "totalCosts": 355.52, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg" } ] @@ -33548,7 +34191,7 @@ { "id": 15084373, "username": "tarcanhursit", - "totalCosts": 857.49, + "totalCosts": 208.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg" } ] @@ -33570,13 +34213,13 @@ { "id": 15958911, "username": "charlaiz", - "totalCosts": 524.19, + "totalCosts": 124.23, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15958911/medium/8f11adb77af544d9fd33ec842e035832_default.png" }, { "id": 15084373, "username": "tarcanhursit", - "totalCosts": 275.73, + "totalCosts": 111.1, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg" }, { @@ -33651,7 +34294,7 @@ { "id": 15084373, "username": "tarcanhursit", - "totalCosts": 1420.06, + "totalCosts": 1365.52, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg" } ] @@ -33684,7 +34327,7 @@ { "id": 15084373, "username": "tarcanhursit", - "totalCosts": 554.49, + "totalCosts": 534.29, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg" } ] @@ -33710,6 +34353,46 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg" } ] + }, + { + "fileId": "7461", + "contributors": [ + { + "id": 15750423, + "username": "less_explorer", + "totalCosts": 1000.91, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15750423/medium/44085a2751d1f337f4e4aee5459b2ccf.jpg" + }, + { + "id": 15958911, + "username": "charlaiz", + "totalCosts": 453.49, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15958911/medium/8f11adb77af544d9fd33ec842e035832_default.png" + }, + { + "id": 15084373, + "username": "tarcanhursit", + "totalCosts": 225.23, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg" + } + ] + }, + { + "fileId": "8035", + "contributors": [ + { + "id": 15958911, + "username": "charlaiz", + "totalCosts": 1190.79, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15958911/medium/8f11adb77af544d9fd33ec842e035832_default.png" + }, + { + "id": 15084373, + "username": "tarcanhursit", + "totalCosts": 4.04, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg" + } + ] } ] }, @@ -33792,7 +34475,7 @@ { "id": 15894449, "username": "wosek_", - "totalCosts": 103.02, + "totalCosts": 159.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg" }, { @@ -34210,28 +34893,28 @@ { "fileId": "2856", "contributors": [ - { - "id": 15894449, - "username": "wosek_", - "totalCosts": 179.78, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg" - }, { "id": 14775946, "username": "Beas", - "totalCosts": 141.4, + "totalCosts": 118.17, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg" }, + { + "id": 15894449, + "username": "wosek_", + "totalCosts": 37.37, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg" + }, { "id": 15284800, "username": "msliwinski123", - "totalCosts": 130.29, + "totalCosts": 19.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png" }, { "id": 14113969, "username": "mbiesiad", - "totalCosts": 9.09, + "totalCosts": 8.08, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14113969/medium/71ce960729f39fa1a2a0f23b48b8d8fe.png" } ] @@ -34298,13 +34981,13 @@ { "id": 15284800, "username": "msliwinski123", - "totalCosts": 731.24, + "totalCosts": 636.3, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png" }, { "id": 15894449, "username": "wosek_", - "totalCosts": 464.6, + "totalCosts": 367.64, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg" }, { @@ -34509,7 +35192,7 @@ { "id": 14775946, "username": "Beas", - "totalCosts": 130.29, + "totalCosts": 121.2, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg" } ] @@ -35026,13 +35709,13 @@ { "id": 14775946, "username": "Beas", - "totalCosts": 573.68, + "totalCosts": 556.51, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg" }, { "id": 15894449, "username": "wosek_", - "totalCosts": 247.45, + "totalCosts": 228.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg" }, { @@ -35166,6 +35849,12 @@ "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_", @@ -35220,14 +35909,8 @@ { "id": 14775946, "username": "Beas", - "totalCosts": 133.32, + "totalCosts": 35.35, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg" - }, - { - "id": 15894449, - "username": "wosek_", - "totalCosts": 68.68, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg" } ] }, @@ -35266,13 +35949,13 @@ { "id": 15894449, "username": "wosek_", - "totalCosts": 988.79, + "totalCosts": 300.98, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg" }, { "id": 15054269, "username": "karolproksa", - "totalCosts": 26.26, + "totalCosts": 22.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15054269/medium/c3c3359c1de314d91ff42a2957c78168_default.png" }, { @@ -35281,23 +35964,17 @@ "totalCosts": 10.1, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15514622/medium/038694fd3070ed326b089e13cb7750a3.jpeg" }, - { - "id": 15567317, - "username": "Aarona", - "totalCosts": 5.05, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15567317/medium/4d6c3c25d6fff43f7e795643d2e0e632.jpg" - }, - { - "id": 15056397, - "username": "akiszka", - "totalCosts": 5.05, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15056397/medium/79099ad2e7e2745190e9f956610a8ab8.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" } ] }, @@ -35307,7 +35984,7 @@ { "id": 15894449, "username": "wosek_", - "totalCosts": 335.32, + "totalCosts": 371.68, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg" }, { @@ -35420,18 +36097,18 @@ { "fileId": "2958", "contributors": [ + { + "id": 15894449, + "username": "wosek_", + "totalCosts": 3223.92, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg" + }, { "id": 14775946, "username": "Beas", "totalCosts": 2648.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14775946/medium/22ad4db44fa2f657ec257775cddc899c.jpg" }, - { - "id": 15894449, - "username": "wosek_", - "totalCosts": 2244.22, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg" - }, { "id": 15284800, "username": "msliwinski123", @@ -35516,7 +36193,7 @@ { "id": 15363256, "username": "keyla88", - "totalCosts": 867.59, + "totalCosts": 860.52, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15363256/medium/ec0ae3c1332b4c006ba843c9969716f5.png" }, { @@ -35562,7 +36239,7 @@ { "id": 13986387, "username": "rafarocha", - "totalCosts": 151.5, + "totalCosts": 144.43, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" }, { @@ -35579,13 +36256,13 @@ { "id": 14957477, "username": "asdcBRA", - "totalCosts": 240.38, + "totalCosts": 221.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957477/medium/4731034c4ad881ab8ce76389b7952162.jpeg" }, { "id": 15082587, "username": "PLimabrz", - "totalCosts": 219.17, + "totalCosts": 199.98, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082587/medium/ed074e71e299c475727935bfe53359aa_default.png" }, { @@ -35594,12 +36271,6 @@ "totalCosts": 126.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15072851/medium/a35aa7f19e9250a5e916b2092556235e.png" }, - { - "id": 13986387, - "username": "rafarocha", - "totalCosts": 52.52, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" - }, { "id": 15088607, "username": "Fred.rodovalho", @@ -35607,15 +36278,15 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15088607/medium/60387eb11f8184d82ef350969d7006f4_default.png" }, { - "id": 15025129, - "username": "willianpaixao", - "totalCosts": 17.17, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15025129/medium/ef1be11b8020b45c11dbd5a0bbea1aac_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": 14.14, + "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15240392/medium/bb269e410561d6b5854bcd5a0a61b358.jpeg" } ] @@ -35635,18 +36306,18 @@ "totalCosts": 80.8, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15114963/medium/b9c830466fee03c6d68be46beacfdd16_default.png" }, - { - "id": 13986387, - "username": "rafarocha", - "totalCosts": 75.75, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" - }, { "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": 13855929, "username": "gabriel.silva", @@ -35719,7 +36390,7 @@ { "id": 13986387, "username": "rafarocha", - "totalCosts": 400.97, + "totalCosts": 375.72, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" } ] @@ -36325,7 +36996,7 @@ { "id": 13986387, "username": "rafarocha", - "totalCosts": 1012.02, + "totalCosts": 754.47, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" }, { @@ -36334,18 +37005,18 @@ "totalCosts": 160.59, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15469896/medium/ce6eed4a36d8d7724e2d1537a41f7337.jpeg" }, - { - "id": 15435992, - "username": "italosantana", - "totalCosts": 149.48, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg" - }, { "id": 15317682, "username": "junowoz", - "totalCosts": 84.84, + "totalCosts": 60.6, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg" }, + { + "id": 15435992, + "username": "italosantana", + "totalCosts": 49.49, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15435992/medium/61afc2a3a2417f17a118fea970030cbf.jpeg" + }, { "id": 14861994, "username": "DougPimentel", @@ -36419,7 +37090,7 @@ { "id": 15515516, "username": "MCreimer", - "totalCosts": 1887.69, + "totalCosts": 1856.38, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png" }, { @@ -36678,7 +37349,7 @@ { "id": 13986387, "username": "rafarocha", - "totalCosts": 712.05, + "totalCosts": 685.79, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" }, { @@ -36973,7 +37644,7 @@ { "id": 15515516, "username": "MCreimer", - "totalCosts": 997.88, + "totalCosts": 947.38, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png" }, { @@ -37143,12 +37814,6 @@ { "fileId": "2856", "contributors": [ - { - "id": 13986387, - "username": "rafarocha", - "totalCosts": 25.25, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" - }, { "id": 15317682, "username": "junowoz", @@ -37382,7 +38047,7 @@ { "id": 15515516, "username": "MCreimer", - "totalCosts": 242.4, + "totalCosts": 239.37, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png" }, { @@ -37405,7 +38070,7 @@ { "id": 13986387, "username": "rafarocha", - "totalCosts": 1086.76, + "totalCosts": 1067.57, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" } ] @@ -37589,21 +38254,21 @@ { "id": 13986387, "username": "rafarocha", - "totalCosts": 2313.91, + "totalCosts": 1371.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" }, - { - "id": 15515516, - "username": "MCreimer", - "totalCosts": 1275.63, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png" - }, { "id": 15317682, "username": "junowoz", - "totalCosts": 648.42, + "totalCosts": 521.16, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg" }, + { + "id": 15515516, + "username": "MCreimer", + "totalCosts": 496.92, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png" + }, { "id": 15584703, "username": "fcarva", @@ -37992,7 +38657,7 @@ { "id": 15657153, "username": "leomarar", - "totalCosts": 388.85, + "totalCosts": 362.59, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657153/medium/83f088e12e6711ed615f8dd77c3f2be7_default.png" }, { @@ -38667,7 +39332,7 @@ { "id": 13719925, "username": "alexpaganmin", - "totalCosts": 713.06, + "totalCosts": 707, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13719925/medium/d065a18c910db1080c95637ecc28d6da.jpg" }, { @@ -38760,7 +39425,7 @@ { "id": 15422032, "username": "Fritzhoy", - "totalCosts": 6762.96, + "totalCosts": 6739.73, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15422032/medium/a2df65c9d9309dec39402a0175f3a57f.png" }, { @@ -38824,7 +39489,7 @@ { "id": 15849127, "username": "IagoEmanuel15", - "totalCosts": 698.92, + "totalCosts": 655.49, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg" }, { @@ -38943,59 +39608,23 @@ { "fileId": "2954", "contributors": [ - { - "id": 15515516, - "username": "MCreimer", - "totalCosts": 621.15, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png" - }, - { - "id": 15317682, - "username": "junowoz", - "totalCosts": 166.65, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15317682/medium/81940bf015f6f858cb88c0363d135cfa.jpeg" - }, - { - "id": 13855929, - "username": "gabriel.silva", - "totalCosts": 84.84, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg" - }, - { - "id": 13986387, - "username": "rafarocha", - "totalCosts": 60.6, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" - }, { "id": 15121067, "username": "DiegoCabral", - "totalCosts": 39.39, + "totalCosts": 13.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15121067/medium/7622a32578aec0440b8e01743f23435f.png" }, - { - "id": 15442468, - "username": "Cassio_Chagas", - "totalCosts": 15.15, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442468/medium/2949ef2bdba7021adf703421a9a8a4a9_default.png" - }, - { - "id": 14875990, - "username": "guilhermevendramini", - "totalCosts": 5.05, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg" - }, { "id": 14382632, "username": "gabe_san_", - "totalCosts": 4.04, + "totalCosts": 2.02, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14382632/medium/bf7bc9d504ecf501809f65a7bc8c870b_default.png" }, { - "id": 15241638, - "username": "Panegali", + "id": 14875990, + "username": "guilhermevendramini", "totalCosts": 2.02, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241638/medium/02280520175445e6c7614a4236546b8f.jpg" + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg" } ] }, @@ -39051,7 +39680,7 @@ { "id": 15515516, "username": "MCreimer", - "totalCosts": 244.42, + "totalCosts": 230.28, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png" }, { @@ -39068,7 +39697,7 @@ { "id": 15515516, "username": "MCreimer", - "totalCosts": 265.63, + "totalCosts": 251.49, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png" }, { @@ -39091,7 +39720,7 @@ { "id": 15515516, "username": "MCreimer", - "totalCosts": 266.64, + "totalCosts": 241.39, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png" }, { @@ -39137,7 +39766,7 @@ { "id": 15652697, "username": "ThewsyRum", - "totalCosts": 237.35, + "totalCosts": 227.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15652697/medium/416cd66d87d185091af51f9aecb60262.jpeg" }, { @@ -39190,7 +39819,7 @@ { "id": 15515516, "username": "MCreimer", - "totalCosts": 704.98, + "totalCosts": 207.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png" }, { @@ -39205,12 +39834,6 @@ "totalCosts": 17.17, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png" }, - { - "id": 14875990, - "username": "guilhermevendramini", - "totalCosts": 4.04, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14875990/medium/6c42a855600f60124d4fbb49962d2226.jpeg" - }, { "id": 15646745, "username": "Mateusduartelima", @@ -39384,7 +40007,7 @@ { "id": 13855929, "username": "gabriel.silva", - "totalCosts": 658.52, + "totalCosts": 603.98, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13855929/medium/51d997bd43d246da34052b5cab702f56.jpg" }, { @@ -39507,13 +40130,13 @@ { "id": 15515516, "username": "MCreimer", - "totalCosts": 202, + "totalCosts": 181.8, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png" }, { "id": 13986387, "username": "rafarocha", - "totalCosts": 153.52, + "totalCosts": 134.33, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" }, { @@ -39528,17 +40151,17 @@ "totalCosts": 36.36, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15036833/medium/4988573ecbd20a37fe3504a4fd98b573_default.png" }, - { - "id": 15912891, - "username": "Cristianoluizz", - "totalCosts": 30.3, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.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" } ] }, @@ -39612,13 +40235,13 @@ { "id": 13986387, "username": "rafarocha", - "totalCosts": 1753.36, + "totalCosts": 1706.9, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" }, { "id": 15813703, "username": "Brian1997", - "totalCosts": 435.31, + "totalCosts": 399.96, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15813703/medium/4fbeb047eb6a975b8edfd526c0c05bee_default.png" }, { @@ -39777,7 +40400,7 @@ { "id": 13986387, "username": "rafarocha", - "totalCosts": 994.85, + "totalCosts": 990.81, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg" } ] @@ -39826,13 +40449,13 @@ { "id": 12804952, "username": "imgelu", - "totalCosts": 240.38, + "totalCosts": 221.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12804952/medium/59d5d165d5b422c57908e7797d3b83ee.jpg" }, { "id": 14087195, "username": "nicklcanada", - "totalCosts": 239.37, + "totalCosts": 220.18, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png" } ] @@ -40124,13 +40747,13 @@ { "id": 14087195, "username": "nicklcanada", - "totalCosts": 143.42, + "totalCosts": 120.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png" }, { "id": 12804952, "username": "imgelu", - "totalCosts": 104.03, + "totalCosts": 80.8, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12804952/medium/59d5d165d5b422c57908e7797d3b83ee.jpg" } ] @@ -40414,7 +41037,7 @@ { "id": 14087195, "username": "nicklcanada", - "totalCosts": 94.94, + "totalCosts": 85.85, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png" }, { @@ -40446,7 +41069,7 @@ { "id": 14087195, "username": "nicklcanada", - "totalCosts": 21.21, + "totalCosts": 17.17, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png" } ] @@ -41124,7 +41747,7 @@ { "id": 14087195, "username": "nicklcanada", - "totalCosts": 570.65, + "totalCosts": 553.48, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png" } ] @@ -41303,10 +41926,16 @@ { "fileId": "5565", "contributors": [ + { + "id": 16043932, + "username": "Randometer888", + "totalCosts": 291.89, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16043932/medium/4d5c371be41ad26794fd7fd0b8e27caa.jpg" + }, { "id": 14087195, "username": "nicklcanada", - "totalCosts": 32.32, + "totalCosts": 23.23, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png" } ] @@ -41345,7 +41974,7 @@ { "id": 14087195, "username": "nicklcanada", - "totalCosts": 1362.49, + "totalCosts": 1307.95, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14087195/medium/810aea3ef8ba145e88db17a73c95a4b8_default.png" } ] @@ -41407,7 +42036,7 @@ { "id": 15947515, "username": "blockson", - "totalCosts": 97.97, + "totalCosts": 90.9, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947515/medium/52b0b3490fcf6940d9027ef2f32a424b.jpeg" }, { @@ -41430,19 +42059,19 @@ { "id": 14514124, "username": "ViktorOn", - "totalCosts": 177.76, + "totalCosts": 147.46, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14514124/medium/fa0297b182b72fbcf006daba457ef1a3.png" }, { "id": 15091781, "username": "Alia_yli", - "totalCosts": 145.44, + "totalCosts": 126.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15091781/medium/b3434e87fa167731fa4b27df15834b76_default.png" }, { "id": 14984959, "username": "lesnov", - "totalCosts": 122.21, + "totalCosts": 103.02, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14984959/medium/b944ae94abfa6adf00f2347abfe6fb0e_default.png" }, { @@ -41451,12 +42080,6 @@ "totalCosts": 89.89, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14714186/medium/7aab6f86fdcf9703ecff6ff281835305_default.png" }, - { - "id": 15763855, - "username": "dovbyshbgd", - "totalCosts": 52.52, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" - }, { "id": 14982731, "username": "stepantsova.marina", @@ -41469,18 +42092,6 @@ "totalCosts": 38.38, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15083601/medium/81a90e82c22a6973cb849cdcf5e307ba_default.png" }, - { - "id": 15214262, - "username": "andrejklim480", - "totalCosts": 14.14, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15214262/medium/5727db09ace3c2d258ba36991ad941ea.jpg" - }, - { - "id": 15947515, - "username": "blockson", - "totalCosts": 7.07, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947515/medium/52b0b3490fcf6940d9027ef2f32a424b.jpeg" - }, { "id": 15475592, "username": "vladimirkochenov", @@ -41492,6 +42103,18 @@ "username": "kayusha2020", "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15362144/medium/8605888ceb1624a237d50588b1b3436e.jpg" + }, + { + "id": 15214262, + "username": "andrejklim480", + "totalCosts": 6.06, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15214262/medium/5727db09ace3c2d258ba36991ad941ea.jpg" + }, + { + "id": 15763855, + "username": "dovbyshbgd", + "totalCosts": 5.05, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" } ] }, @@ -41501,7 +42124,7 @@ { "id": 14514124, "username": "ViktorOn", - "totalCosts": 392.89, + "totalCosts": 386.83, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14514124/medium/fa0297b182b72fbcf006daba457ef1a3.png" }, { @@ -41903,18 +42526,18 @@ "totalCosts": 125.24, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14514124/medium/fa0297b182b72fbcf006daba457ef1a3.png" }, - { - "id": 14843078, - "username": "Totozao", - "totalCosts": 39.39, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14843078/medium/4fdb35b37819b2de36280beeef727d1d_default.png" - }, { "id": 14819294, "username": "sekret.tikhon", "totalCosts": 26.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14819294/medium/eba1fc89da13c46a9ab31296200085f5.png" }, + { + "id": 14843078, + "username": "Totozao", + "totalCosts": 13.13, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14843078/medium/4fdb35b37819b2de36280beeef727d1d_default.png" + }, { "id": 14884558, "username": "Ethereum.org_Discord-Nuble", @@ -42215,13 +42838,13 @@ { "id": 15947515, "username": "blockson", - "totalCosts": 462.58, + "totalCosts": 444.4, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947515/medium/52b0b3490fcf6940d9027ef2f32a424b.jpeg" }, { "id": 15763855, "username": "dovbyshbgd", - "totalCosts": 175.74, + "totalCosts": 176.75, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" }, { @@ -42502,19 +43125,19 @@ { "id": 15967233, "username": "jasminesprout", - "totalCosts": 945.36, + "totalCosts": 153.52, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" }, { "id": 15966973, "username": "omsify", - "totalCosts": 231.29, + "totalCosts": 26.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966973/medium/8f0d37e232177100b09297d6f095fbfa_default.png" }, { "id": 15763855, "username": "dovbyshbgd", - "totalCosts": 24.24, + "totalCosts": 23.23, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" }, { @@ -42578,43 +43201,43 @@ { "id": 15966943, "username": "yulkor", - "totalCosts": 625.19, + "totalCosts": 230.28, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966943/medium/0d340104d53d3ff4df1c7c2412e8c86e_default.png" }, - { - "id": 15763855, - "username": "dovbyshbgd", - "totalCosts": 132.31, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" - }, { "id": 15982819, "username": "lipkij", - "totalCosts": 42.42, + "totalCosts": 21.21, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15982819/medium/8f2454294d3ca462c391fb4cccdc1ba8_default.png" }, { "id": 14514124, "username": "ViktorOn", - "totalCosts": 22.22, + "totalCosts": 17.17, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14514124/medium/fa0297b182b72fbcf006daba457ef1a3.png" }, + { + "id": 15020157, + "username": "simplyfoodbiz", + "totalCosts": 10.1, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15020157/medium/e87d1d7c1fed53ec6910d8515fe0afba.jpeg" + }, { "id": 15012463, "username": "wanna_bee", - "totalCosts": 10.1, + "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15012463/medium/273b72d2d1ca27c9f8a7bc8cd0099501_default.png" }, { - "id": 15020157, - "username": "simplyfoodbiz", - "totalCosts": 10.1, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15020157/medium/e87d1d7c1fed53ec6910d8515fe0afba.jpeg" + "id": 15763855, + "username": "dovbyshbgd", + "totalCosts": 4.04, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" }, { "id": 15214262, "username": "andrejklim480", - "totalCosts": 7.07, + "totalCosts": 4.04, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15214262/medium/5727db09ace3c2d258ba36991ad941ea.jpg" }, { @@ -42749,7 +43372,7 @@ { "id": 14843078, "username": "Totozao", - "totalCosts": 79.79, + "totalCosts": 25.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14843078/medium/4fdb35b37819b2de36280beeef727d1d_default.png" } ] @@ -42930,13 +43553,13 @@ { "id": 15967233, "username": "jasminesprout", - "totalCosts": 562.57, + "totalCosts": 555.5, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" }, { "id": 15763855, "username": "dovbyshbgd", - "totalCosts": 282.8, + "totalCosts": 289.87, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" } ] @@ -42970,7 +43593,7 @@ { "id": 15763855, "username": "dovbyshbgd", - "totalCosts": 320.17, + "totalCosts": 306.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" }, { @@ -42998,19 +43621,19 @@ { "id": 15726219, "username": "DeckCadet", - "totalCosts": 442.38, + "totalCosts": 433.29, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15726219/medium/13d125d9b19bf6e523879837a7768002.jpeg" }, { "id": 15763855, "username": "dovbyshbgd", - "totalCosts": 246.44, + "totalCosts": 271.69, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" }, { "id": 15966973, "username": "omsify", - "totalCosts": 46.46, + "totalCosts": 30.3, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966973/medium/8f0d37e232177100b09297d6f095fbfa_default.png" } ] @@ -43096,7 +43719,7 @@ { "id": 15967233, "username": "jasminesprout", - "totalCosts": 1194.83, + "totalCosts": 1165.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" } ] @@ -43107,7 +43730,7 @@ { "id": 15619839, "username": "mediaquest", - "totalCosts": 591.86, + "totalCosts": 584.79, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15619839/medium/99c14ce4e8161f6b077fa0849ac4c5b0.png" }, { @@ -43189,13 +43812,13 @@ { "id": 15967233, "username": "jasminesprout", - "totalCosts": 264.62, + "totalCosts": 227.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" }, { "id": 15763855, "username": "dovbyshbgd", - "totalCosts": 182.81, + "totalCosts": 180.79, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" }, { @@ -43265,7 +43888,7 @@ { "id": 15967233, "username": "jasminesprout", - "totalCosts": 1816.99, + "totalCosts": 1804.87, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" }, { @@ -43318,19 +43941,19 @@ { "id": 15967233, "username": "jasminesprout", - "totalCosts": 1927.08, + "totalCosts": 1902.84, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" }, { "id": 15763855, "username": "dovbyshbgd", - "totalCosts": 69.69, + "totalCosts": 58.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" }, { "id": 15966973, "username": "omsify", - "totalCosts": 22.22, + "totalCosts": 11.11, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966973/medium/8f0d37e232177100b09297d6f095fbfa_default.png" } ] @@ -43341,7 +43964,7 @@ { "id": 15763855, "username": "dovbyshbgd", - "totalCosts": 3226.95, + "totalCosts": 3222.91, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png" }, { @@ -43374,7 +43997,7 @@ { "id": 15425840, "username": "leo223761", - "totalCosts": 61.61, + "totalCosts": 15.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15425840/medium/1ca0fb7243506468ae5ce6d656c1f102.png" } ] @@ -43399,7 +44022,7 @@ { "id": 14977831, "username": "PeterKecman", - "totalCosts": 278.76, + "totalCosts": 259.57, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14977831/medium/e1e3f150ce524a6cb88fccb8b4f52422.png" } ] @@ -43503,7 +44126,7 @@ { "id": 14977831, "username": "PeterKecman", - "totalCosts": 86.86, + "totalCosts": 79.79, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14977831/medium/e1e3f150ce524a6cb88fccb8b4f52422.png" } ] @@ -43639,13 +44262,13 @@ { "id": 15967341, "username": "lukakovacica", - "totalCosts": 699.93, + "totalCosts": 215.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967341/medium/1f73cbf1251ef7926042a12fcf6e6827.png" }, { "id": 14977831, "username": "PeterKecman", - "totalCosts": 32.32, + "totalCosts": 23.23, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14977831/medium/e1e3f150ce524a6cb88fccb8b4f52422.png" } ] @@ -43698,13 +44321,13 @@ { "id": 14957177, "username": "joeurassa", - "totalCosts": 234.32, + "totalCosts": 207.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957177/medium/8323f79a3f73f2e723da72db082c0c22.jpg" }, { "id": 14963607, "username": "mikemathu", - "totalCosts": 163.62, + "totalCosts": 144.43, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14963607/medium/686254f080ab885d3205f28976c9b6bd_default.png" } ] @@ -43792,13 +44415,13 @@ { "id": 15961053, "username": "MK10", - "totalCosts": 820.12, + "totalCosts": 212.1, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961053/medium/432a1dbe56da10837b16cb865303c70b_default.png" }, { "id": 14957177, "username": "joeurassa", - "totalCosts": 61.61, + "totalCosts": 15.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957177/medium/8323f79a3f73f2e723da72db082c0c22.jpg" } ] @@ -43866,7 +44489,7 @@ { "id": 15956489, "username": "0xhawki", - "totalCosts": 148.47, + "totalCosts": 141.4, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956489/medium/4f6011a32fc4ef0b906c52f838b299d1.png" }, { @@ -43895,7 +44518,7 @@ { "id": 15082707, "username": "selcuk45", - "totalCosts": 238.36, + "totalCosts": 142.41, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" }, { @@ -43913,7 +44536,7 @@ { "id": 15396134, "username": "FDNTL", - "totalCosts": 11.11, + "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15396134/medium/12f9c36dce596d73529770adb87db81e.png" }, { @@ -43948,7 +44571,7 @@ { "id": 15396134, "username": "FDNTL", - "totalCosts": 58.58, + "totalCosts": 52.52, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15396134/medium/12f9c36dce596d73529770adb87db81e.png" } ] @@ -44040,7 +44663,7 @@ { "id": 14996861, "username": "kaanmetu", - "totalCosts": 176.75, + "totalCosts": 168.67, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg" }, { @@ -44599,13 +45222,13 @@ { "id": 14131653, "username": "Berke37", - "totalCosts": 582.77, + "totalCosts": 319.16, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14131653/medium/ff295534ec23d3428ba06f99e0fd50bb.jpg" }, { "id": 15082707, "username": "selcuk45", - "totalCosts": 474.7, + "totalCosts": 265.63, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" }, { @@ -44796,18 +45419,18 @@ "totalCosts": 133.32, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" }, - { - "id": 15908487, - "username": "insidetrader", - "totalCosts": 85.85, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908487/medium/2dad4c49ee42d9df9633332d432e708e.jpg" - }, { "id": 15966669, "username": "0xSahbaz", "totalCosts": 79.79, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966669/medium/e56294c61e4c32a43c8735040ea67364_default.png" }, + { + "id": 15908487, + "username": "insidetrader", + "totalCosts": 59.59, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908487/medium/2dad4c49ee42d9df9633332d432e708e.jpg" + }, { "id": 15672817, "username": "thebuzagi", @@ -44939,7 +45562,7 @@ { "id": 15966669, "username": "0xSahbaz", - "totalCosts": 163.62, + "totalCosts": 150.49, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966669/medium/e56294c61e4c32a43c8735040ea67364_default.png" }, { @@ -45058,12 +45681,6 @@ "totalCosts": 70.7, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" }, - { - "id": 15966669, - "username": "0xSahbaz", - "totalCosts": 51.51, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966669/medium/e56294c61e4c32a43c8735040ea67364_default.png" - }, { "id": 14996861, "username": "kaanmetu", @@ -45305,19 +45922,19 @@ { "id": 15966191, "username": "0xokan", - "totalCosts": 83.83, + "totalCosts": 68.68, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966191/medium/a5d1d36d7404974d591cbcf59f089df9.jpg" }, { "id": 15966289, "username": "cinaryasemin", - "totalCosts": 32.32, + "totalCosts": 22.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966289/medium/4db7c2566069e455f22d0027dcd3bb06_default.png" }, { "id": 15964741, "username": "0xberil", - "totalCosts": 6.06, + "totalCosts": 3.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964741/medium/f8fb148047395cf62c924755cb300f17_default.png" }, { @@ -45448,46 +46065,46 @@ { "fileId": "2876", "contributors": [ - { - "id": 15908487, - "username": "insidetrader", - "totalCosts": 1162.51, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908487/medium/2dad4c49ee42d9df9633332d432e708e.jpg" - }, { "id": 15082707, "username": "selcuk45", - "totalCosts": 1065.55, + "totalCosts": 985.76, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" }, + { + "id": 15908487, + "username": "insidetrader", + "totalCosts": 692.86, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908487/medium/2dad4c49ee42d9df9633332d432e708e.jpg" + }, { "id": 15963921, "username": "bicebaris", - "totalCosts": 958.49, + "totalCosts": 220.18, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963921/medium/5ed57dad6d6d747e47d9378a8006ede1.jpg" }, - { - "id": 15966271, - "username": "zeydrm", - "totalCosts": 512.07, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966271/medium/bbeac0fbc387f8f821f861bc79c625fd.png" - }, { "id": 15956829, "username": "isinasli", - "totalCosts": 341.38, + "totalCosts": 214.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956829/medium/e7a64fde9e9413a2ae5add75cba88f09_default.png" }, { "id": 15966007, "username": "0xselimc", - "totalCosts": 284.82, + "totalCosts": 151.5, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966007/medium/6008a158d741536a305a81bd295ab407.jpeg" }, + { + "id": 15966271, + "username": "zeydrm", + "totalCosts": 117.16, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966271/medium/bbeac0fbc387f8f821f861bc79c625fd.png" + }, { "id": 15966289, "username": "cinaryasemin", - "totalCosts": 77.77, + "totalCosts": 25.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966289/medium/4db7c2566069e455f22d0027dcd3bb06_default.png" }, { @@ -45870,7 +46487,7 @@ { "id": 14996861, "username": "kaanmetu", - "totalCosts": 132.31, + "totalCosts": 125.24, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg" }, { @@ -45974,7 +46591,7 @@ { "id": 15418650, "username": "kadirchan", - "totalCosts": 404, + "totalCosts": 377.74, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15418650/medium/08ccea1a2b5d659ff3978f98d75921b4.png" }, { @@ -47040,7 +47657,7 @@ { "id": 15963921, "username": "bicebaris", - "totalCosts": 889.81, + "totalCosts": 883.75, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963921/medium/5ed57dad6d6d747e47d9378a8006ede1.jpg" }, { @@ -47191,7 +47808,7 @@ { "id": 15357618, "username": "finereganyue", - "totalCosts": 1399.86, + "totalCosts": 1376.63, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15357618/medium/12f023106f6a24e98bfc6553c07a46f4.jpg" }, { @@ -47273,19 +47890,19 @@ { "id": 15082707, "username": "selcuk45", - "totalCosts": 916.07, + "totalCosts": 116.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" }, { "id": 15956829, "username": "isinasli", - "totalCosts": 181.8, + "totalCosts": 44.44, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956829/medium/e7a64fde9e9413a2ae5add75cba88f09_default.png" }, { "id": 15956471, "username": "nugen0x", - "totalCosts": 65.65, + "totalCosts": 31.31, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956471/medium/0af49a07f4f83e5a5180858a4760868e.jpeg" }, { @@ -47380,53 +47997,17 @@ { "fileId": "2954", "contributors": [ - { - "id": 15908487, - "username": "insidetrader", - "totalCosts": 1243.31, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908487/medium/2dad4c49ee42d9df9633332d432e708e.jpg" - }, - { - "id": 15966271, - "username": "zeydrm", - "totalCosts": 219.17, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966271/medium/bbeac0fbc387f8f821f861bc79c625fd.png" - }, { "id": 14996861, "username": "kaanmetu", - "totalCosts": 219.17, + "totalCosts": 32.32, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg" }, - { - "id": 15082707, - "username": "selcuk45", - "totalCosts": 140.39, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" - }, - { - "id": 15963465, - "username": "Ozje", - "totalCosts": 78.78, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963465/medium/da85affc52fa58f2bf27e2e90cebb31e_default.png" - }, { "id": 15023705, "username": "UmuTR42", - "totalCosts": 12.12, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15023705/medium/74abbc96e311225d644210239912356c.png" - }, - { - "id": 15858389, - "username": "gok7ug", "totalCosts": 10.1, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15858389/medium/2301dd32710c7c8158a63dc3fb74fddf_default.png" - }, - { - "id": 12465480, - "username": "ondernuray", - "totalCosts": 2.02, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12465480/medium/d9db061b071f053abb5f77f11c14ea74.jpg" + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15023705/medium/74abbc96e311225d644210239912356c.png" } ] }, @@ -47459,7 +48040,7 @@ { "id": 15908487, "username": "insidetrader", - "totalCosts": 376.73, + "totalCosts": 366.63, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908487/medium/2dad4c49ee42d9df9633332d432e708e.jpg" }, { @@ -47530,43 +48111,31 @@ { "id": 15966669, "username": "0xSahbaz", - "totalCosts": 979.7, + "totalCosts": 303, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966669/medium/e56294c61e4c32a43c8735040ea67364_default.png" }, { "id": 15956829, "username": "isinasli", - "totalCosts": 558.53, + "totalCosts": 176.75, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956829/medium/e7a64fde9e9413a2ae5add75cba88f09_default.png" }, { "id": 15966961, "username": "nurkardelens", - "totalCosts": 159.58, + "totalCosts": 30.3, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966961/medium/3ea2ecfa398148225a22a0795ab84a16.jpeg" }, - { - "id": 15966289, - "username": "cinaryasemin", - "totalCosts": 48.48, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966289/medium/4db7c2566069e455f22d0027dcd3bb06_default.png" - }, - { - "id": 13429141, - "username": "Faedonn", - "totalCosts": 38.38, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13429141/medium/47665044a49c8caae72a8e5d6c6c74fc.jpg" - }, { "id": 14966275, "username": "zer0knowledge", - "totalCosts": 32.32, + "totalCosts": 23.23, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14966275/medium/dead80d7c0e54990ad4fee448e0aacaa.jpeg" }, { "id": 14996861, "username": "kaanmetu", - "totalCosts": 13.13, + "totalCosts": 4.04, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg" }, { @@ -47725,13 +48294,13 @@ { "id": 14996861, "username": "kaanmetu", - "totalCosts": 1062.52, + "totalCosts": 1048.38, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14996861/medium/eb0c9870f3f6317e6bfdc4a838e4fd5f.jpg" }, { "id": 15082707, "username": "selcuk45", - "totalCosts": 400.97, + "totalCosts": 346.43, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" }, { @@ -47824,7 +48393,7 @@ { "id": 15966007, "username": "0xselimc", - "totalCosts": 198.97, + "totalCosts": 159.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966007/medium/6008a158d741536a305a81bd295ab407.jpeg" }, { @@ -48065,7 +48634,7 @@ { "id": 14610740, "username": "realdeep", - "totalCosts": 788.81, + "totalCosts": 781.74, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14610740/medium/970ca23cc257e03e86efefca66979df2.png" }, { @@ -48077,7 +48646,7 @@ { "id": 15467576, "username": "augur", - "totalCosts": 445.41, + "totalCosts": 438.34, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15467576/medium/471f881427c816c83c952446739e01d8_default.png" }, { @@ -48106,7 +48675,7 @@ { "id": 15964741, "username": "0xberil", - "totalCosts": 545.4, + "totalCosts": 532.27, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964741/medium/f8fb148047395cf62c924755cb300f17_default.png" } ] @@ -48117,7 +48686,7 @@ { "id": 15082707, "username": "selcuk45", - "totalCosts": 1219.07, + "totalCosts": 1216.04, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" }, { @@ -48408,7 +48977,7 @@ { "id": 15082707, "username": "selcuk45", - "totalCosts": 588.83, + "totalCosts": 581.76, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" }, { @@ -48459,7 +49028,7 @@ { "id": 15082707, "username": "selcuk45", - "totalCosts": 320.17, + "totalCosts": 306.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" } ] @@ -48481,7 +49050,7 @@ { "id": 15082707, "username": "selcuk45", - "totalCosts": 733.26, + "totalCosts": 708.01, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" } ] @@ -48509,7 +49078,7 @@ { "id": 15082707, "username": "selcuk45", - "totalCosts": 974.65, + "totalCosts": 954.45, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" }, { @@ -48527,7 +49096,7 @@ { "id": 15966961, "username": "nurkardelens", - "totalCosts": 56.56, + "totalCosts": 47.47, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966961/medium/3ea2ecfa398148225a22a0795ab84a16.jpeg" } ] @@ -48538,7 +49107,7 @@ { "id": 15956481, "username": "motunbeg", - "totalCosts": 1849.31, + "totalCosts": 1813.96, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956481/medium/3b62b0094dce063a96ff151b94bd5f5c_default.png" }, { @@ -48595,7 +49164,7 @@ { "id": 15908487, "username": "insidetrader", - "totalCosts": 1059.49, + "totalCosts": 1041.31, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908487/medium/2dad4c49ee42d9df9633332d432e708e.jpg" }, { @@ -48714,7 +49283,7 @@ { "id": 15963921, "username": "bicebaris", - "totalCosts": 1353.4, + "totalCosts": 1339.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963921/medium/5ed57dad6d6d747e47d9378a8006ede1.jpg" }, { @@ -48842,7 +49411,7 @@ { "id": 15082707, "username": "selcuk45", - "totalCosts": 405.01, + "totalCosts": 358.55, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg" }, { @@ -48871,7 +49440,7 @@ { "id": 15966289, "username": "cinaryasemin", - "totalCosts": 615.09, + "totalCosts": 611.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966289/medium/4db7c2566069e455f22d0027dcd3bb06_default.png" }, { @@ -48964,7 +49533,7 @@ { "id": 15300418, "username": "globart", - "totalCosts": 97.97, + "totalCosts": 90.9, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg" }, { @@ -48993,7 +49562,7 @@ { "id": 14949373, "username": "s_yuzva", - "totalCosts": 240.38, + "totalCosts": 221.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14949373/medium/d4c3f633842279994b178a207831025d.jpg" }, { @@ -49002,12 +49571,6 @@ "totalCosts": 38.38, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15129995/medium/91175a3cc7e81c64ccdb5b22139074e3_default.png" }, - { - "id": 15300418, - "username": "globart", - "totalCosts": 7.07, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg" - }, { "id": 14102529, "username": "Nezila", @@ -49028,7 +49591,7 @@ { "id": 14102529, "username": "Nezila", - "totalCosts": 106.05, + "totalCosts": 99.99, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14102529/medium/b68a69263d9c77b9078ffee899b05c02_default.png" }, { @@ -49212,43 +49775,37 @@ { "id": 15869379, "username": "viktoriia.mykytiuk02", - "totalCosts": 771.64, + "totalCosts": 109.08, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15869379/medium/674749c0e8809c8963f1f2252ea54f75.png" }, { "id": 15804803, "username": "sun_dariia", - "totalCosts": 350.47, + "totalCosts": 63.63, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15804803/medium/e753b43a4cf480cd2a37c5795cdb83ba_default.png" }, - { - "id": 15300418, - "username": "globart", - "totalCosts": 37.37, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg" - }, { "id": 14102529, "username": "Nezila", "totalCosts": 15.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14102529/medium/b68a69263d9c77b9078ffee899b05c02_default.png" }, + { + "id": 15300418, + "username": "globart", + "totalCosts": 14.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg" + }, { "id": 15143910, "username": "vkulpinova6", "totalCosts": 13.13, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15143910/medium/c51e6458948ee8d9c7deb546cbb114a6_default.png" }, - { - "id": 15947515, - "username": "blockson", - "totalCosts": 13.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947515/medium/52b0b3490fcf6940d9027ef2f32a424b.jpeg" - }, { "id": 15824883, "username": "anastasiia.danchuk", - "totalCosts": 9.09, + "totalCosts": 8.08, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824883/medium/f51aaf00be7080e10e1009df40dada0e.jpeg" }, { @@ -49353,7 +49910,7 @@ { "id": 15967233, "username": "jasminesprout", - "totalCosts": 702.96, + "totalCosts": 207.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" }, { @@ -49365,14 +49922,8 @@ { "id": 14968209, "username": "vi_ryb05", - "totalCosts": 9.09, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14968209/medium/02c2aae41308eec65dac12117f9dfc8d.jpg" - }, - { - "id": 14968213, - "username": "igorivna_263", "totalCosts": 5.05, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14968213/medium/b596e38999691d52c315084a56d60e4f.jpeg" + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14968209/medium/02c2aae41308eec65dac12117f9dfc8d.jpg" }, { "id": 15895803, @@ -49491,18 +50042,18 @@ { "fileId": "6187", "contributors": [ - { - "id": 15138988, - "username": "zhenya_gidicheva_2000", - "totalCosts": 637.31, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15138988/medium/4c6e8dff2e22e73eca01b7979759bc13_default.png" - }, { "id": 15143910, "username": "vkulpinova6", "totalCosts": 634.28, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15143910/medium/c51e6458948ee8d9c7deb546cbb114a6_default.png" }, + { + "id": 15138988, + "username": "zhenya_gidicheva_2000", + "totalCosts": 582.77, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15138988/medium/4c6e8dff2e22e73eca01b7979759bc13_default.png" + }, { "id": 15300418, "username": "globart", @@ -49586,7 +50137,7 @@ { "id": 15967233, "username": "jasminesprout", - "totalCosts": 562.57, + "totalCosts": 555.5, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" }, { @@ -49655,7 +50206,7 @@ { "id": 15557697, "username": "viktoriia.cherniak", - "totalCosts": 112.11, + "totalCosts": 97.97, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15557697/medium/c05126e00043ef99135d9e733874172e.jpeg" } ] @@ -49683,7 +50234,7 @@ { "id": 15824955, "username": "dmytro.zalatukhin", - "totalCosts": 584.79, + "totalCosts": 575.7, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824955/medium/517b6400bc31546d1889eb56a4d5f6ee.jpeg" }, { @@ -49695,7 +50246,7 @@ { "id": 15967233, "username": "jasminesprout", - "totalCosts": 46.46, + "totalCosts": 30.3, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" } ] @@ -49723,7 +50274,7 @@ { "id": 15967233, "username": "jasminesprout", - "totalCosts": 1194.83, + "totalCosts": 1165.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" } ] @@ -49751,7 +50302,7 @@ { "id": 15967233, "username": "jasminesprout", - "totalCosts": 186.85, + "totalCosts": 166.65, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg" }, { @@ -49838,7 +50389,7 @@ { "id": 15804803, "username": "sun_dariia", - "totalCosts": 1389.76, + "totalCosts": 1343.3, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15804803/medium/e753b43a4cf480cd2a37c5795cdb83ba_default.png" }, { @@ -49913,21 +50464,21 @@ { "id": 15967193, "username": "minhkek", - "totalCosts": 702.96, + "totalCosts": 207.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967193/medium/9de1591866a92c526781acfb27509d87.png" }, - { - "id": 14942589, - "username": "Marcus_Aureliee", - "totalCosts": 32.32, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14942589/medium/b4c7f32eef26b3a02fb112cd161792fd.jpg" - }, { "id": 16004379, "username": "tropicaldog17", - "totalCosts": 17.17, + "totalCosts": 49.49, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004379/medium/012ac515fe09fb0e6b08e4d06d299460.jpeg" }, + { + "id": 14942589, + "username": "Marcus_Aureliee", + "totalCosts": 23.23, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14942589/medium/b4c7f32eef26b3a02fb112cd161792fd.jpg" + }, { "id": 14943437, "username": "trungan1511", @@ -50065,7 +50616,7 @@ { "id": 15314206, "username": "cuijia", - "totalCosts": 1335.22, + "totalCosts": 1328.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg" }, { @@ -50073,6 +50624,12 @@ "username": "boyinlee", "totalCosts": 85.85, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15201846/medium/3d9d29022427094faeb700ddbd5c078a.jpeg" + }, + { + "id": 15236832, + "username": "Andypsl8", + "totalCosts": 7.07, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/a1111d9e0a5487395f4a0534038c2df8.png" } ] }, @@ -50102,18 +50659,18 @@ "totalCosts": 347.44, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" }, - { - "id": 15992561, - "username": "Hongyan_Lin", - "totalCosts": 42.42, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992561/medium/b10820bf840fc1f866510c5e1cb474ba_default.png" - }, { "id": 15386722, "username": "Fred-Porlock", "totalCosts": 38.38, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15386722/medium/d45a14868eeb521fcff121613eaeee3c.png" }, + { + "id": 15992561, + "username": "Hongyan_Lin", + "totalCosts": 35.35, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992561/medium/b10820bf840fc1f866510c5e1cb474ba_default.png" + }, { "id": 15558917, "username": "imalittlemole", @@ -50170,7 +50727,7 @@ { "id": 14829178, "username": "EffectChen", - "totalCosts": 241.39, + "totalCosts": 222.2, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" }, { @@ -50182,19 +50739,13 @@ { "id": 15314206, "username": "cuijia", - "totalCosts": 35.35, + "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg" }, - { - "id": 14553216, - "username": "rielychen", - "totalCosts": 17.17, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg" - }, { "id": 15193608, "username": "yuping", - "totalCosts": 14.14, + "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg" } ] @@ -50217,7 +50768,7 @@ { "id": 15314206, "username": "cuijia", - "totalCosts": 65.65, + "totalCosts": 59.59, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg" }, { @@ -50369,13 +50920,13 @@ { "id": 15150490, "username": "tonge.eth", - "totalCosts": 190.89, + "totalCosts": 182.81, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15150490/medium/889adda1c2e9c3fc07ab00660ad474dd_default.png" }, { "id": 15193608, "username": "yuping", - "totalCosts": 171.7, + "totalCosts": 163.62, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg" }, { @@ -50587,6 +51138,12 @@ "totalCosts": 86.86, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png" }, + { + "id": 15236832, + "username": "Andypsl8", + "totalCosts": 75.75, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/a1111d9e0a5487395f4a0534038c2df8.png" + }, { "id": 15914021, "username": "Ddoulia", @@ -50798,6 +51355,12 @@ "totalCosts": 727.2, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350862/medium/1b276f211570491d54b0578678d35c83.png" }, + { + "id": 15236832, + "username": "Andypsl8", + "totalCosts": 72.72, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/a1111d9e0a5487395f4a0534038c2df8.png" + }, { "id": 15451966, "username": "sgtpepper0000", @@ -50815,12 +51378,6 @@ "username": "iPhantasmLavender", "totalCosts": 45.45, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15373768/medium/fb5b03de96ccb41bad412ed79ca8e690_default.png" - }, - { - "id": 15236832, - "username": "Andypsl8", - "totalCosts": 16.16, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/a1111d9e0a5487395f4a0534038c2df8.png" } ] }, @@ -51167,7 +51724,7 @@ { "id": 15314206, "username": "cuijia", - "totalCosts": 727.2, + "totalCosts": 463.59, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg" }, { @@ -51185,15 +51742,9 @@ { "id": 15871701, "username": "maxwellcotto", - "totalCosts": 97.97, + "totalCosts": 57.57, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png" }, - { - "id": 15911295, - "username": "Xin_Cheng", - "totalCosts": 51.51, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png" - }, { "id": 15357618, "username": "finereganyue", @@ -51217,6 +51768,12 @@ "username": "C91F37", "totalCosts": 2.02, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14958819/medium/969ab87657bee77450e67bd3a62c709e.png" + }, + { + "id": 15911295, + "username": "Xin_Cheng", + "totalCosts": 2.02, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png" } ] }, @@ -51303,13 +51860,13 @@ { "id": 15558917, "username": "imalittlemole", - "totalCosts": 1242.3, + "totalCosts": 1230.18, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15558917/medium/3140ea0253adc0e3f3c81b050f3b30b3.png" }, { "id": 15285990, "username": "lxlxw", - "totalCosts": 420.16, + "totalCosts": 400.97, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15285990/medium/4ff4140a6e7161de6f8cf6fe8fd728ca.jpeg" }, { @@ -51529,6 +52086,12 @@ "totalCosts": 34.34, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15438710/medium/453df635dde065170a853b44af4f0d31.png" }, + { + "id": 16072062, + "username": "Aaaa-2040", + "totalCosts": 32.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16072062/medium/f98dda376a3f55bce2703d631f5be0f6_default.png" + }, { "id": 15242372, "username": "billwang", @@ -51666,13 +52229,13 @@ { "id": 15425018, "username": "TTa77", - "totalCosts": 338.35, + "totalCosts": 312.09, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15425018/medium/a0ec669dae445a589d6b020b2fd856c8.png" }, { "id": 14870630, "username": "a8832021", - "totalCosts": 273.71, + "totalCosts": 247.45, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14870630/medium/b36889c699124e54c6b781e3ba477726.png" }, { @@ -51997,12 +52560,6 @@ "username": "piaoguangxue", "totalCosts": 15.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14670984/medium/649b71541f103c94cfc301f43f06c547.jpeg" - }, - { - "id": 15871701, - "username": "maxwellcotto", - "totalCosts": 13.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png" } ] }, @@ -52135,7 +52692,7 @@ { "id": 15314206, "username": "cuijia", - "totalCosts": 1021.11, + "totalCosts": 970.61, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg" }, { @@ -52361,10 +52918,10 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14692406/medium/cd75843e806da42ffede4f72813bcd9e.JPG" }, { - "id": 14829178, - "username": "EffectChen", - "totalCosts": 25.25, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" + "id": 15236832, + "username": "Andypsl8", + "totalCosts": 40.4, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/a1111d9e0a5487395f4a0534038c2df8.png" }, { "id": 15193608, @@ -52425,6 +52982,12 @@ "totalCosts": 5.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/a1111d9e0a5487395f4a0534038c2df8.png" }, + { + "id": 16044050, + "username": "noahazael", + "totalCosts": 3.03, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16044050/medium/0fd5bce9221527760028e5da84b6d83c.jpeg" + }, { "id": 15515392, "username": "tsjxyz", @@ -52785,7 +53348,7 @@ { "id": 15386722, "username": "Fred-Porlock", - "totalCosts": 136.35, + "totalCosts": 133.32, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15386722/medium/d45a14868eeb521fcff121613eaeee3c.png" }, { @@ -52960,11 +53523,23 @@ "totalCosts": 14.14, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15848653/medium/9506bee8d4f41073b7c7fb3523239878_default.png" }, + { + "id": 16072688, + "username": "lz895779981", + "totalCosts": 1.01, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16072688/medium/b6d67449825fad3ef2cc4b861e83e94e.png" + }, { "id": 15524545, "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/a1111d9e0a5487395f4a0534038c2df8.png" } ] }, @@ -53158,37 +53733,43 @@ { "id": 15558917, "username": "imalittlemole", - "totalCosts": 3969.3, + "totalCosts": 2298.76, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15558917/medium/3140ea0253adc0e3f3c81b050f3b30b3.png" }, + { + "id": 15236832, + "username": "Andypsl8", + "totalCosts": 373.7, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/a1111d9e0a5487395f4a0534038c2df8.png" + }, { "id": 15633207, "username": "Jojojo999", - "totalCosts": 282.8, + "totalCosts": 176.75, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15633207/medium/41f81fc49a2b8d609f4d860e885e9748_default.png" }, { "id": 15657887, "username": "DreamInMorning", - "totalCosts": 130.29, + "totalCosts": 99.99, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657887/medium/9212535a0a5fb7ec22a9f8a8329dac3b.jpg" }, + { + "id": 16072062, + "username": "Aaaa-2040", + "totalCosts": 14.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16072062/medium/f98dda376a3f55bce2703d631f5be0f6_default.png" + }, { "id": 15911295, "username": "Xin_Cheng", - "totalCosts": 94.94, + "totalCosts": 8.08, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png" }, - { - "id": 15779979, - "username": "qiliuk", - "totalCosts": 60.6, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15779979/medium/fa50e9730b7826a9077a8f3b0f1fa1d9_default.png" - }, { "id": 15871701, "username": "maxwellcotto", - "totalCosts": 25.25, + "totalCosts": 8.08, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png" }, { @@ -53521,18 +54102,18 @@ "totalCosts": 35.35, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png" }, - { - "id": 14553216, - "username": "rielychen", - "totalCosts": 22.22, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg" - }, { "id": 15408904, "username": "yangbopro", "totalCosts": 22.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15408904/medium/58531b7abc96384ddea2de11f9719511.jpeg" }, + { + "id": 14553216, + "username": "rielychen", + "totalCosts": 18.18, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg" + }, { "id": 13600595, "username": "nikoace", @@ -53664,19 +54245,19 @@ { "id": 15314206, "username": "cuijia", - "totalCosts": 3728.92, + "totalCosts": 3702.66, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg" }, { "id": 15145320, "username": "Unili", - "totalCosts": 397.94, + "totalCosts": 371.68, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15145320/medium/c0fc5adab930aa5467bcf04fcdcbf39f.jpg" }, { "id": 15488874, "username": "xinyou", - "totalCosts": 208.06, + "totalCosts": 181.8, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15488874/medium/e310f16d23162881e84556a4226d0b7a_default.png" }, { @@ -54585,13 +55166,13 @@ { "id": 14792498, "username": "tyevlag", - "totalCosts": 1087.77, + "totalCosts": 1081.71, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14792498/medium/3d13e013f50df91c50a9d67e9034daf8.png" }, { "id": 14553216, "username": "rielychen", - "totalCosts": 664.58, + "totalCosts": 658.52, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg" }, { @@ -55568,7 +56149,7 @@ { "id": 15193608, "username": "yuping", - "totalCosts": 3754.17, + "totalCosts": 3748.11, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg" }, { @@ -55679,7 +56260,7 @@ { "id": 15314206, "username": "cuijia", - "totalCosts": 727.2, + "totalCosts": 721.14, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg" }, { @@ -55958,7 +56539,7 @@ { "id": 14804530, "username": "starcoinshine", - "totalCosts": 542.37, + "totalCosts": 527.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14804530/medium/fd9833454bd05fff797a7ee790477d72.jpg" }, { @@ -55982,7 +56563,7 @@ { "id": 14828314, "username": "164031", - "totalCosts": 65.65, + "totalCosts": 48.48, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14828314/medium/5d100860df80e1a9c1c8c6990cbefb5f.png" }, { @@ -55994,7 +56575,7 @@ { "id": 15911295, "username": "Xin_Cheng", - "totalCosts": 36.36, + "totalCosts": 29.29, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png" } ] @@ -56110,7 +56691,7 @@ { "id": 15357618, "username": "finereganyue", - "totalCosts": 4344.01, + "totalCosts": 4320.78, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15357618/medium/12f023106f6a24e98bfc6553c07a46f4.jpg" }, { @@ -56287,48 +56868,30 @@ { "fileId": "6183", "contributors": [ - { - "id": 15871701, - "username": "maxwellcotto", - "totalCosts": 546.41, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png" - }, - { - "id": 15843051, - "username": "xnk", - "totalCosts": 251.49, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843051/medium/3b4f74cebd1118c34a383d992260046e_default.png" - }, { "id": 15880499, "username": "heshu", - "totalCosts": 218.16, + "totalCosts": 98.98, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15880499/medium/8a59f8d8cd32430b1d42b6844c2c58fe.png" }, { - "id": 15856841, - "username": "weiyuzhi2022", - "totalCosts": 77.77, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15856841/medium/604c48d6d4f0f60a4495f8586908076c.png" + "id": 15871701, + "username": "maxwellcotto", + "totalCosts": 82.82, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png" }, { "id": 15558917, "username": "imalittlemole", - "totalCosts": 61.61, + "totalCosts": 58.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15558917/medium/3140ea0253adc0e3f3c81b050f3b30b3.png" }, { "id": 14553216, "username": "rielychen", - "totalCosts": 59.59, + "totalCosts": 45.45, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg" }, - { - "id": 15156816, - "username": "Fengfeng0157", - "totalCosts": 37.37, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15156816/medium/8ce4621e9192a27e8a0ec7e37d9e316e_default.png" - }, { "id": 15314206, "username": "cuijia", @@ -56341,6 +56904,12 @@ "totalCosts": 15.15, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" }, + { + "id": 15156816, + "username": "Fengfeng0157", + "totalCosts": 14.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15156816/medium/8ce4621e9192a27e8a0ec7e37d9e316e_default.png" + }, { "id": 15097185, "username": "sunbeam.", @@ -56505,66 +57074,12 @@ { "fileId": "2954", "contributors": [ - { - "id": 14829178, - "username": "EffectChen", - "totalCosts": 290.88, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" - }, - { - "id": 15425018, - "username": "TTa77", - "totalCosts": 200.99, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15425018/medium/a0ec669dae445a589d6b020b2fd856c8.png" - }, - { - "id": 15193608, - "username": "yuping", - "totalCosts": 108.07, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193608/medium/c3b5342b0fef9f5f51eff5b0c2b93c70.jpg" - }, - { - "id": 15314206, - "username": "cuijia", - "totalCosts": 105.04, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg" - }, - { - "id": 14553216, - "username": "rielychen", - "totalCosts": 102.01, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg" - }, { "id": 14748480, "username": "rustle", - "totalCosts": 93.93, + "totalCosts": 37.37, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14748480/medium/fb9b53571ebea873ce17257508a8c128.jpg" }, - { - "id": 14786918, - "username": "shuaishao", - "totalCosts": 41.41, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14786918/medium/683fae422ad7adbf5241cbfbfd5d08f9.png" - }, - { - "id": 15301458, - "username": "cc01cc", - "totalCosts": 30.3, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15301458/medium/5a10cf07a324052509316293f84fe69d.png" - }, - { - "id": 15332890, - "username": "harry.yzl", - "totalCosts": 18.18, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15332890/medium/7f8b947d94015d39fc2d0070c000a5fb.png" - }, - { - "id": 15242372, - "username": "billwang", - "totalCosts": 15.15, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15242372/medium/23bf740e9d096ee0b3de7b9f5528c8c9.JPG" - }, { "id": 15065551, "username": "wuweibuzhiwang", @@ -56572,28 +57087,10 @@ "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15065551/medium/38e0f7a4324e59640cd5e293f707311a.png" }, { - "id": 15276928, - "username": "betterme", - "totalCosts": 5.05, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15276928/medium/a8242d6cce5245250d61f5710094740f_default.png" - }, - { - "id": 14792498, - "username": "tyevlag", - "totalCosts": 3.03, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14792498/medium/3d13e013f50df91c50a9d67e9034daf8.png" - }, - { - "id": 13962433, - "username": "ethereum.cn", - "totalCosts": 2.02, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13962433/medium/6a8b7d48c93a310b833e5f26db2aab4f.jpg" - }, - { - "id": 15651555, - "username": "Mseth", + "id": 14553216, + "username": "rielychen", "totalCosts": 1.01, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15651555/medium/1154b8dc970d67063e739ed4676bc549.jpeg" + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg" } ] }, @@ -56685,7 +57182,7 @@ { "id": 15729281, "username": "Junel", - "totalCosts": 240.38, + "totalCosts": 226.24, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15729281/medium/0be4e0167eb236dea935c2ecf60ab99e_default.png" }, { @@ -56708,7 +57205,7 @@ { "id": 15729281, "username": "Junel", - "totalCosts": 261.59, + "totalCosts": 247.45, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15729281/medium/0be4e0167eb236dea935c2ecf60ab99e_default.png" }, { @@ -56731,7 +57228,7 @@ { "id": 15729281, "username": "Junel", - "totalCosts": 507.02, + "totalCosts": 497.93, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15729281/medium/0be4e0167eb236dea935c2ecf60ab99e_default.png" }, { @@ -56761,9 +57258,15 @@ { "id": 15156816, "username": "Fengfeng0157", - "totalCosts": 46.46, + "totalCosts": 30.3, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15156816/medium/8ce4621e9192a27e8a0ec7e37d9e316e_default.png" }, + { + "id": 15236832, + "username": "Andypsl8", + "totalCosts": 25.25, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/a1111d9e0a5487395f4a0534038c2df8.png" + }, { "id": 15851643, "username": "dar.riall", @@ -56813,13 +57316,13 @@ { "id": 15871701, "username": "maxwellcotto", - "totalCosts": 444.4, + "totalCosts": 434.3, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png" }, { "id": 15911295, "username": "Xin_Cheng", - "totalCosts": 371.68, + "totalCosts": 361.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png" }, { @@ -56911,22 +57414,28 @@ { "fileId": "5565", "contributors": [ + { + "id": 14829178, + "username": "EffectChen", + "totalCosts": 105.04, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" + }, { "id": 15156816, "username": "Fengfeng0157", - "totalCosts": 386.83, + "totalCosts": 102.01, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15156816/medium/8ce4621e9192a27e8a0ec7e37d9e316e_default.png" }, { - "id": 14829178, - "username": "EffectChen", - "totalCosts": 316.13, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" + "id": 16051140, + "username": "MichaelQubycn", + "totalCosts": 32.32, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16051140/medium/0edba76345410b615bac4fabf336d4ba.jpeg" }, { "id": 14953253, "username": "biwenming7", - "totalCosts": 32.32, + "totalCosts": 23.23, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14953253/medium/8c44470b0c9c27bcbf8395dee10b20ff.png" }, { @@ -57222,7 +57731,7 @@ { "id": 14829178, "username": "EffectChen", - "totalCosts": 1361.48, + "totalCosts": 1306.94, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" }, { @@ -57237,6 +57746,12 @@ "totalCosts": 16.16, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg" }, + { + "id": 15236832, + "username": "Andypsl8", + "totalCosts": 8.08, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/a1111d9e0a5487395f4a0534038c2df8.png" + }, { "id": 15680993, "username": "nzinmymind", @@ -57333,7 +57848,7 @@ { "id": 14829178, "username": "EffectChen", - "totalCosts": 335.32, + "totalCosts": 317.14, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" }, { @@ -57384,35 +57899,23 @@ "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/a1111d9e0a5487395f4a0534038c2df8.png" + }, { "id": 15635039, "username": "farmerlesheng", "totalCosts": 26.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15635039/medium/d341ab0ab2abc63637183b0b6be2544d.png" }, - { - "id": 15911391, - "username": "Aleczzz", - "totalCosts": 19.19, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911391/medium/b8497df2da3374cd5f0cb8183169e4db_default.png" - }, - { - "id": 15911295, - "username": "Xin_Cheng", - "totalCosts": 19.19, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png" - }, { "id": 15156816, "username": "Fengfeng0157", "totalCosts": 7.07, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15156816/medium/8ce4621e9192a27e8a0ec7e37d9e316e_default.png" - }, - { - "id": 15965647, - "username": "Shitness", - "totalCosts": 2.02, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965647/medium/96faf61b3b59c29adf03dca21e03582c.jpg" } ] }, @@ -57540,7 +58043,7 @@ { "id": 14829178, "username": "EffectChen", - "totalCosts": 419.15, + "totalCosts": 408.04, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" }, { @@ -57552,7 +58055,7 @@ { "id": 15236832, "username": "Andypsl8", - "totalCosts": 139.38, + "totalCosts": 149.48, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/a1111d9e0a5487395f4a0534038c2df8.png" }, { @@ -57831,7 +58334,7 @@ { "id": 15657887, "username": "DreamInMorning", - "totalCosts": 2966.37, + "totalCosts": 2962.33, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15657887/medium/9212535a0a5fb7ec22a9f8a8329dac3b.jpg" }, { @@ -57970,7 +58473,7 @@ { "id": 15156816, "username": "Fengfeng0157", - "totalCosts": 588.83, + "totalCosts": 581.76, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15156816/medium/8ce4621e9192a27e8a0ec7e37d9e316e_default.png" }, { @@ -58014,6 +58517,12 @@ "username": "Dionyse", "totalCosts": 10.1, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15751385/medium/f60b8dcda0d73383df200b62099513f2.png" + }, + { + "id": 15236832, + "username": "Andypsl8", + "totalCosts": 7.07, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/a1111d9e0a5487395f4a0534038c2df8.png" } ] }, @@ -58121,7 +58630,7 @@ { "id": 14829178, "username": "EffectChen", - "totalCosts": 754.47, + "totalCosts": 719.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg" }, { @@ -58250,7 +58759,7 @@ { "id": 15911295, "username": "Xin_Cheng", - "totalCosts": 427.23, + "totalCosts": 409.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png" }, { @@ -58424,7 +58933,7 @@ { "id": 15871701, "username": "maxwellcotto", - "totalCosts": 1062.52, + "totalCosts": 1048.38, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png" }, { @@ -58436,13 +58945,13 @@ { "id": 15918181, "username": "QuinnHou", - "totalCosts": 539.34, + "totalCosts": 525.2, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15918181/medium/17e80957f6d7eef4f215c6cc41951dae_default.png" }, { "id": 14467908, "username": "BarnettWong", - "totalCosts": 369.66, + "totalCosts": 355.52, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14467908/medium/d684efc33954be7ca3e82a82d8d6478e.jpeg" }, { @@ -58576,7 +59085,7 @@ { "id": 15623859, "username": "w33d", - "totalCosts": 1086.76, + "totalCosts": 1067.57, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15623859/medium/1b48569cd42fdf8a9e5af38841b58d4f.jpeg" } ] @@ -58839,34 +59348,34 @@ { "fileId": "5565", "contributors": [ - { - "id": 15399006, - "username": "Xeift", - "totalCosts": 516.11, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" - }, { "id": 15055487, "username": "xaviershen1", - "totalCosts": 196.95, + "totalCosts": 139.38, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15055487/medium/10522705934133754c3c30644a91e987.png" }, + { + "id": 15399006, + "username": "Xeift", + "totalCosts": 77.77, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" + }, { "id": 16007311, "username": "Swiftevo", - "totalCosts": 95.95, + "totalCosts": 47.47, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16007311/medium/47584f21b0a63d55da89c106d20825e9.png" }, { "id": 15947735, "username": "cychung", - "totalCosts": 50.5, + "totalCosts": 33.33, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947735/medium/4023f995a7c5a29531aba4ba3d6f4c73.jpg" }, { "id": 14779158, "username": "K0ue1", - "totalCosts": 33.33, + "totalCosts": 24.24, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14779158/medium/a0145bfd442c7c2b368c5aeae336f176.png" }, { @@ -58953,7 +59462,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 241.39, + "totalCosts": 202, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" }, { @@ -59277,7 +59786,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 666.6, + "totalCosts": 622.16, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" }, { @@ -59346,7 +59855,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 1039.29, + "totalCosts": 1010, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" }, { @@ -59380,7 +59889,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 2030.1, + "totalCosts": 1983.64, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" }, { @@ -59397,13 +59906,13 @@ { "id": 15201846, "username": "boyinlee", - "totalCosts": 1255.43, + "totalCosts": 1248.36, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15201846/medium/3d9d29022427094faeb700ddbd5c078a.jpeg" }, { "id": 15550507, "username": "Jimbo_L", - "totalCosts": 726.19, + "totalCosts": 719.12, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15550507/medium/2aaa6dc51fbb57d36b6b8106d06c85fe.jpeg" }, { @@ -59432,7 +59941,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 545.4, + "totalCosts": 532.27, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" } ] @@ -59478,7 +59987,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 161.6, + "totalCosts": 154.53, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" }, { @@ -59525,26 +60034,26 @@ { "id": 14837806, "username": "yisosd", - "totalCosts": 240.38, + "totalCosts": 221.19, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14837806/medium/a024dfd35587ad67921934a9d6c6410e.png" }, { "id": 15222542, "username": "Jcys", - "totalCosts": 94.94, + "totalCosts": 86.86, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15222542/medium/c4b538278714558f9a5430c0cef783de.JPG" }, - { - "id": 15399006, - "username": "Xeift", - "totalCosts": 85.85, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" - }, { "id": 14817838, "username": "Tadashi1024", "totalCosts": 38.38, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14817838/medium/e8bbda9fb55464b5d13482f3f1bef0d4.jpg" + }, + { + "id": 15399006, + "username": "Xeift", + "totalCosts": 12.12, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" } ] }, @@ -59560,7 +60069,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 105.04, + "totalCosts": 98.98, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" }, { @@ -59600,7 +60109,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 1997.78, + "totalCosts": 1994.75, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" } ] @@ -59675,7 +60184,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 1013.03, + "totalCosts": 123.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" }, { @@ -59687,7 +60196,7 @@ { "id": 15550507, "username": "Jimbo_L", - "totalCosts": 28.28, + "totalCosts": 25.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15550507/medium/2aaa6dc51fbb57d36b6b8106d06c85fe.jpeg" }, { @@ -59787,7 +60296,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 13.13, + "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" } ] @@ -59838,7 +60347,7 @@ { "id": 15806537, "username": "Tyou", - "totalCosts": 320.17, + "totalCosts": 306.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15806537/medium/bcd829ea4cae49b3ec63925ecd75c126.jpeg" } ] @@ -59872,7 +60381,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 425.21, + "totalCosts": 399.96, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" }, { @@ -59912,21 +60421,21 @@ { "id": 15952201, "username": "Eniale", - "totalCosts": 900.92, + "totalCosts": 865.57, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952201/medium/70ddfc80063bd4b296bc3997bd5fd808_default.png" }, - { - "id": 14661950, - "username": "kenforever", - "totalCosts": 66.66, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14661950/medium/d12c67f954a833d343013ee215f59335.jpg" - }, { "id": 15954241, "username": "FoodChain1028", "totalCosts": 54.54, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954241/medium/a436b3580fe56bf2b5ccab541ae29695.png" }, + { + "id": 14661950, + "username": "kenforever", + "totalCosts": 45.45, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14661950/medium/d12c67f954a833d343013ee215f59335.jpg" + }, { "id": 15965405, "username": "LaraWeb3", @@ -60040,7 +60549,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 848.4, + "totalCosts": 830.22, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" }, { @@ -60200,7 +60709,7 @@ { "id": 15399006, "username": "Xeift", - "totalCosts": 2035.15, + "totalCosts": 2021.01, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png" } ] @@ -60251,13 +60760,13 @@ { "id": 15242372, "username": "billwang", - "totalCosts": 643.37, + "totalCosts": 588.83, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15242372/medium/23bf740e9d096ee0b3de7b9f5528c8c9.JPG" }, { "id": 15174096, "username": "13u22", - "totalCosts": 415.11, + "totalCosts": 401.98, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15174096/medium/2c7598abbcf6dc776b41f9443584bf8f.jpeg" }, { @@ -60327,7 +60836,7 @@ { "id": 15957819, "username": "ming30650", - "totalCosts": 668.62, + "totalCosts": 664.58, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957819/medium/2baae61ca579f0a04efd89cd210f2c6a_default.png" }, { @@ -60376,7 +60885,7 @@ { "id": 15226202, "username": "pilvijo", - "totalCosts": 76.76, + "totalCosts": 30.3, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226202/medium/15d4243c7a2591719761b363c316d12b.png" } ] @@ -60392,13 +60901,13 @@ { "id": 15956433, "username": "0xkal", - "totalCosts": 869.61, + "totalCosts": 230.28, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956433/medium/b911054c60a1c43f6c2c3526df9f632c_default.png" }, { "id": 15954079, "username": "_Manax_", - "totalCosts": 213.11, + "totalCosts": 121.2, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954079/medium/a1d18eea9ff3663836816373ecaf90e7.jpeg" } ] @@ -60437,32 +60946,165 @@ { "id": 15837955, "username": "Magdalena_", - "totalCosts": 702.96, + "totalCosts": 207.05, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" }, { "id": 15100235, "username": "mon4short", - "totalCosts": 81.81, + "totalCosts": 40.4, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15100235/medium/b9d9032c2f8ed27061c6b7a4f997946b.png" }, { "id": 15716195, "username": "cbow36998", - "totalCosts": 17.17, + "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15716195/medium/ff00ad60b11e0370fbe59c9b79fbc4ec.jpg" }, + { + "id": 15449340, + "username": "ethph.eth", + "totalCosts": 3.03, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15449340/medium/e06fe4f42951e0b9b09033e4ae178b4e_default.png" + }, { "id": 15731303, "username": "lance13", - "totalCosts": 8.08, + "totalCosts": 3.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15731303/medium/c4673724b8bea8620a4ec9990520c3fb.png" + } + ] + }, + { + "fileId": "7316", + "contributors": [ + { + "id": 15837955, + "username": "Magdalena_", + "totalCosts": 1653.37, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" }, { - "id": 15449340, - "username": "ethph.eth", - "totalCosts": 3.03, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15449340/medium/e06fe4f42951e0b9b09033e4ae178b4e_default.png" + "id": 15468038, + "username": "JohnAcc", + "totalCosts": 531.26, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15468038/medium/bda4b214be5c98f685c5e1d4d752aa6f.png" + } + ] + }, + { + "fileId": "5561", + "contributors": [ + { + "id": 15837955, + "username": "Magdalena_", + "totalCosts": 3100.7, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" + }, + { + "id": 15100235, + "username": "mon4short", + "totalCosts": 10.1, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15100235/medium/b9d9032c2f8ed27061c6b7a4f997946b.png" + } + ] + }, + { + "fileId": "7461", + "contributors": [ + { + "id": 15837955, + "username": "Magdalena_", + "totalCosts": 1670.54, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" + } + ] + }, + { + "fileId": "8035", + "contributors": [ + { + "id": 15837955, + "username": "Magdalena_", + "totalCosts": 1194.83, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" + } + ] + }, + { + "fileId": "6440", + "contributors": [ + { + "id": 15837955, + "username": "Magdalena_", + "totalCosts": 718.11, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" + } + ] + }, + { + "fileId": "7314", + "contributors": [ + { + "id": 15837955, + "username": "Magdalena_", + "totalCosts": 1333.2, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" + } + ] + }, + { + "fileId": "7919", + "contributors": [ + { + "id": 15837955, + "username": "Magdalena_", + "totalCosts": 1321.08, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" + } + ] + }, + { + "fileId": "6518", + "contributors": [ + { + "id": 15837955, + "username": "Magdalena_", + "totalCosts": 843.35, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" + } + ] + }, + { + "fileId": "6524", + "contributors": [ + { + "id": 15837955, + "username": "Magdalena_", + "totalCosts": 957.48, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" + } + ] + }, + { + "fileId": "6526", + "contributors": [ + { + "id": 15837955, + "username": "Magdalena_", + "totalCosts": 2059.39, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" + } + ] + }, + { + "fileId": "7591", + "contributors": [ + { + "id": 15837955, + "username": "Magdalena_", + "totalCosts": 1982.63, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg" } ] } @@ -60477,7 +61119,7 @@ { "id": 15952609, "username": "mk_1023", - "totalCosts": 1101.91, + "totalCosts": 351.48, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952609/medium/2cefc34ddb056ff1a484e60803e24088_default.png" } ] @@ -60504,7 +61146,7 @@ { "id": 15948377, "username": "Isaachavertz", - "totalCosts": 934.25, + "totalCosts": 927.18, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948377/medium/b55b9374fd682ba0148fe93427edeb2a.jpg" } ] @@ -60537,7 +61179,7 @@ { "id": 15948377, "username": "Isaachavertz", - "totalCosts": 320.17, + "totalCosts": 306.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948377/medium/b55b9374fd682ba0148fe93427edeb2a.jpg" } ] @@ -60559,7 +61201,7 @@ { "id": 15948377, "username": "Isaachavertz", - "totalCosts": 757.5, + "totalCosts": 732.25, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948377/medium/b55b9374fd682ba0148fe93427edeb2a.jpg" } ] @@ -60581,13 +61223,13 @@ { "id": 15948377, "username": "Isaachavertz", - "totalCosts": 996.87, + "totalCosts": 348.45, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948377/medium/b55b9374fd682ba0148fe93427edeb2a.jpg" }, { "id": 15966315, "username": "Afoma", - "totalCosts": 123.22, + "totalCosts": 3.03, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966315/medium/b3038fdd1703da9ef4c0b3f0f4a0c31d_default.png" } ] @@ -60603,13 +61245,13 @@ { "id": 15880343, "username": "hangleang", - "totalCosts": 834.26, + "totalCosts": 280.78, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15880343/medium/4b6df183916557610b51230915a5f9eb_default.png" }, { "id": 14300370, "username": "Exness_GL_KM_Trans", - "totalCosts": 53.53, + "totalCosts": 6.06, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14300370/medium/2d03fbcbdc373f79dbe722e5a31ab235_default.png" } ] @@ -60636,13 +61278,109 @@ { "id": 15967185, "username": "waseemnaik", - "totalCosts": 736.29, + "totalCosts": 321.18, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png" }, { "id": 15967847, "username": "luniacllama", - "totalCosts": 387.84, + "totalCosts": 34.34, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967847/medium/76cc99da9c9731bac54edf64508ac14f.jpeg" + } + ] + }, + { + "fileId": "7316", + "contributors": [ + { + "id": 15967185, + "username": "waseemnaik", + "totalCosts": 2016.97, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png" + }, + { + "id": 15967847, + "username": "luniacllama", + "totalCosts": 166.65, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967847/medium/76cc99da9c9731bac54edf64508ac14f.jpeg" + } + ] + }, + { + "fileId": "5561", + "contributors": [ + { + "id": 15967185, + "username": "waseemnaik", + "totalCosts": 3109.79, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png" + } + ] + }, + { + "fileId": "7461", + "contributors": [ + { + "id": 15967847, + "username": "luniacllama", + "totalCosts": 1125.14, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967847/medium/76cc99da9c9731bac54edf64508ac14f.jpeg" + }, + { + "id": 15967185, + "username": "waseemnaik", + "totalCosts": 545.4, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png" + } + ] + }, + { + "fileId": "8035", + "contributors": [ + { + "id": 15967185, + "username": "waseemnaik", + "totalCosts": 592.87, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png" + }, + { + "id": 15967847, + "username": "luniacllama", + "totalCosts": 572.67, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967847/medium/76cc99da9c9731bac54edf64508ac14f.jpeg" + } + ] + }, + { + "fileId": "6440", + "contributors": [ + { + "id": 15967185, + "username": "waseemnaik", + "totalCosts": 469.65, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png" + }, + { + "id": 15967847, + "username": "luniacllama", + "totalCosts": 248.46, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967847/medium/76cc99da9c9731bac54edf64508ac14f.jpeg" + } + ] + }, + { + "fileId": "7314", + "contributors": [ + { + "id": 15967185, + "username": "waseemnaik", + "totalCosts": 902.94, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png" + }, + { + "id": 15967847, + "username": "luniacllama", + "totalCosts": 430.26, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967847/medium/76cc99da9c9731bac54edf64508ac14f.jpeg" } ] @@ -60702,7 +61440,7 @@ { "id": 15962007, "username": "omkarkamale001", - "totalCosts": 1120.09, + "totalCosts": 351.48, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962007/medium/9019d6a347ebffa6f6464e00132355aa.jpeg" } ] @@ -60751,7 +61489,7 @@ { "id": 15966817, "username": "afiqz", - "totalCosts": 1020.1, + "totalCosts": 299.97, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966817/medium/c84993de3bc9bf0b9eb7882012279118_default.png" }, { @@ -60793,17 +61531,17 @@ { "fileId": "5565", "contributors": [ - { - "id": 15921661, - "username": "Bohjypellar", - "totalCosts": 532.27, - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15921661/medium/46083a608a938f869b4855d0113b3930.jpg" - }, { "id": 15949885, "username": "ikpongetimfon", - "totalCosts": 473.69, + "totalCosts": 174.73, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949885/medium/2bd51be5552240f36b7fc65871d64446.png" + }, + { + "id": 15921661, + "username": "Bohjypellar", + "totalCosts": 111.1, + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15921661/medium/46083a608a938f869b4855d0113b3930.jpg" } ] } @@ -60835,13 +61573,13 @@ { "id": 15885247, "username": "ct1aic.eth", - "totalCosts": 741.34, + "totalCosts": 213.11, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15885247/medium/cf22113f9226047f8f9868e4774bc4c3.png" }, { "id": 15448076, "username": "sarasanches", - "totalCosts": 85.85, + "totalCosts": 46.46, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15448076/medium/1da781dbffa2f686d99932a0bdf29859_default.png" }, { @@ -60921,7 +61659,7 @@ { "id": 15938189, "username": "altinocoelho", - "totalCosts": 437.33, + "totalCosts": 408.04, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15938189/medium/a94b70c2f9891e65834e1864392d4912.png" } ] @@ -60976,7 +61714,7 @@ { "id": 15967793, "username": "TanjaPale", - "totalCosts": 1112.01, + "totalCosts": 343.4, "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967793/medium/7a23945a1b7ec0fd21d81d4820ba115f_default.png" }, { @@ -60989,4 +61727,4 @@ } ] } -] \ No newline at end of file +] diff --git a/src/data/crowdin/file-ids.json b/src/data/crowdin/file-ids.json index 2a8dbe1fd98..4888d3fef95 100644 --- a/src/data/crowdin/file-ids.json +++ b/src/data/crowdin/file-ids.json @@ -291,6 +291,10 @@ "id": 2954, "path": "/glossary/index.md" }, + { + "id": 8208, + "path": "/glossary/glossary.json" + }, { "id": 2646, "path": "/page-developers-tutorials.json" @@ -1183,4 +1187,4 @@ "id": 7304, "path": "/developers/tutorials/short-abi/index.md" } -] \ No newline at end of file +] diff --git a/src/data/staking-products.json b/src/data/staking-products.json index a1b009cc854..6351bea26b2 100644 --- a/src/data/staking-products.json +++ b/src/data/staking-products.json @@ -436,6 +436,49 @@ "eventName": "Clicked stakefish go to link" } }, + { + "name": "P2P.org", + "imageName": "P2P", + "hue": 227, + "launchDate": "2023-01-10", + "url": "https://p2p.org/networks/ethereum/", + "audits": [ + { + "name": "Mixbytes (v1)", + "url": "https://github.com/mixbytes/audits_public/blob/79cd8153bfb6098227b43dfba8d061881a94a248/P2P.org/ETH2%20Depositor%20%26%20ETH%20Staking%20Fee%20Distributor%20(v.1)/P2P.org_ETH2%20Depositor%20%26%20ETH%20Staking%20Fee%20Distributor%20Smart%20Contracts%20Audit%20Report.pdf" + }, + { + "name": "Mixbytes (v2)", + "url": "https://github.com/mixbytes/audits_public/blob/79cd8153bfb6098227b43dfba8d061881a94a248/P2P.org/ETH2%20Depositor%20%26%20ETH%20Staking%20Fee%20Distributor%20(v.2)/ETH2%20Depositor%20%26%20ETH%20Staking%20Fee%20Distributor%20Security%20Audit%20Report%20(v.2).pdf" + } + ], + "minEth": 32, + "additionalStake": null, + "additionalStakeUnit": null, + "monthlyFee": 5, + "monthlyFeeUnit": "%", + "isFoss": false, + "hasBugBounty": false, + "isTrustless": true, + "isPermissionless": true, + "pctMajorityExecutionClient": 50, + "pctMajorityConsensusClient": 30, + "isSelfCustody": false, + "platforms": ["Browser"], + "ui": ["GUI"], + "socials": { + "linkedin": "https://www.linkedin.com/company/p2p-org/", + "twitter": "https://twitter.com/P2Pvalidator", + "telegram": "https://t.me/P2Pstaking", + "github": "https://github.com/p2p-org", + "youtube": "https://www.youtube.com/channel/UC9pRzyJx5YrUNfmg1vLZ-bQ/" + }, + "matomo": { + "eventCategory": "StakingProductCard", + "eventAction": "Clicked", + "eventName": "Clicked P2P (saas) go to link" + } + }, { "name": "Kiln", "imageName": "Kiln", diff --git a/src/data/translation-reports/alltime/alltime-data.json b/src/data/translation-reports/alltime/alltime-data.json index a985ec3f0e1..96b1d47182c 100644 --- a/src/data/translation-reports/alltime/alltime-data.json +++ b/src/data/translation-reports/alltime/alltime-data.json @@ -4,13 +4,13 @@ "unit": "words", "dateRange": { "from": "2019-06-27", - "to": "2023-08-31" + "to": "2023-09-30" }, "currency": "USD", "mode": "simple", - "totalCosts": 12178379, + "totalCosts": 13113246, "totalTMSavings": 0, - "totalPreTranslated": 2940240, + "totalPreTranslated": 2944512, "data": [ { "user": { @@ -277,59 +277,6 @@ } ] }, - { - "user": { - "id": 15966669, - "username": "0xSahbaz", - "fullName": "0xSahbaz", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966669/medium/c537e499d63231405dc73d43d0d3a710_default.png", - "preTranslated": 0, - "totalCosts": 5872 - }, - "languages": [ - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5872 - }, - "translated": { - "tmMatch": 550, - "default": 5322, - "total": 5872 - }, - "targetTranslated": { - "tmMatch": 515, - "default": 4756, - "total": 5271 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 550, - "default": 5322, - "total": 5872 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, { "user": { "id": 15310732, @@ -1890,7 +1837,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15451522/medium/a535a722e0c011a9d54af4ae93dd0e3e_default.png", "preTranslated": 0, - "totalCosts": 5811 + "totalCosts": 7139 }, "languages": [ { @@ -1900,17 +1847,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5811 + "totalCosts": 7139 }, "translated": { - "tmMatch": 457, - "default": 5354, - "total": 5811 + "tmMatch": 465, + "default": 6674, + "total": 7139 }, "targetTranslated": { - "tmMatch": 506, - "default": 5813, - "total": 6319 + "tmMatch": 515, + "default": 7400, + "total": 7915 }, "translatedByMt": { "tmMatch": 42, @@ -1920,12 +1867,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 6609 + "total": 19006 }, "translationCosts": { - "tmMatch": 457, - "default": 5354, - "total": 5811 + "tmMatch": 465, + "default": 6674, + "total": 7139 }, "approvalCosts": { "tmMatch": 0, @@ -2526,7 +2473,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15042043/medium/3e87407585f7ba151de939a245b94de1_default.png", "preTranslated": 0, - "totalCosts": 44563 + "totalCosts": 49572 }, "languages": [ { @@ -2536,32 +2483,32 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 44563 + "totalCosts": 49572 }, "translated": { - "tmMatch": 3262, - "default": 41301, - "total": 44563 + "tmMatch": 3611, + "default": 45961, + "total": 49572 }, "targetTranslated": { - "tmMatch": 3412, - "default": 43124, - "total": 46536 + "tmMatch": 3791, + "default": 48022, + "total": 51813 }, "translatedByMt": { - "tmMatch": 110, + "tmMatch": 112, "default": 620, - "total": 730 + "total": 732 }, "approved": { "tmMatch": 0, "default": 0, - "total": 58637 + "total": 66177 }, "translationCosts": { - "tmMatch": 3262, - "default": 41301, - "total": 44563 + "tmMatch": 3611, + "default": 45961, + "total": 49572 }, "approvalCosts": { "tmMatch": 0, @@ -2876,6 +2823,59 @@ } ] }, + { + "user": { + "id": 15194920, + "username": "Aco_Bengali", + "fullName": "Aco_Bengali", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194920/medium/8aff26c8299db6ff8baa83e998c92a5b_default.png", + "preTranslated": 0, + "totalCosts": 18558 + }, + "languages": [ + { + "language": { + "id": "bn", + "name": "Bengali", + "userRole": "Translator, Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 18558 + }, + "translated": { + "tmMatch": 55, + "default": 18503, + "total": 18558 + }, + "targetTranslated": { + "tmMatch": 118, + "default": 35309, + "total": 35427 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 36058 + }, + "translationCosts": { + "tmMatch": 55, + "default": 18503, + "total": 18558 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15063941, @@ -2929,6 +2929,179 @@ } ] }, + { + "user": { + "id": 15081117, + "username": "Aco_Diskusija", + "fullName": "Aco_Diskusija", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15081117/medium/7e86794ce311a40214528e3555421c55_default.png", + "preTranslated": 0, + "totalCosts": 13606 + }, + "languages": [ + { + "language": { + "id": "be", + "name": "Belarusian", + "userRole": "Translator, Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 3500 + }, + "translated": { + "tmMatch": 81, + "default": 3419, + "total": 3500 + }, + "targetTranslated": { + "tmMatch": 73, + "default": 3238, + "total": 3311 + }, + "translatedByMt": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 6250 + }, + "translationCosts": { + "tmMatch": 81, + "default": 3419, + "total": 3500 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "bs", + "name": "Bosnian", + "userRole": "Translator, Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 410 + }, + "translated": { + "tmMatch": 1, + "default": 409, + "total": 410 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 394, + "total": 395 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 6250 + }, + "translationCosts": { + "tmMatch": 1, + "default": 409, + "total": 410 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "sr-CS", + "name": "Serbian (Latin)", + "userRole": "Translator, Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 9461 + }, + "translated": { + "tmMatch": 43, + "default": 9418, + "total": 9461 + }, + "targetTranslated": { + "tmMatch": 42, + "default": 9397, + "total": 9439 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 26283 + }, + "translationCosts": { + "tmMatch": 43, + "default": 9418, + "total": 9461 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "sk", + "name": "Slovak", + "userRole": "Translator, Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 235 + }, + "translated": { + "tmMatch": 0, + "default": 235, + "total": 235 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 222, + "total": 222 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 5218 + }, + "translationCosts": { + "tmMatch": 0, + "default": 235, + "total": 235 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15142978, @@ -2990,7 +3163,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15794419/medium/7259e3286d1b408f10cfb6dee866e177_default.png", "preTranslated": 0, - "totalCosts": 2285 + "totalCosts": 12560 }, "languages": [ { @@ -3000,17 +3173,17 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2285 + "totalCosts": 12560 }, "translated": { - "tmMatch": 84, - "default": 2201, - "total": 2285 + "tmMatch": 354, + "default": 12206, + "total": 12560 }, "targetTranslated": { - "tmMatch": 93, - "default": 2264, - "total": 2357 + "tmMatch": 383, + "default": 13761, + "total": 14144 }, "translatedByMt": { "tmMatch": 0, @@ -3020,12 +3193,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 2364 + "total": 18073 }, "translationCosts": { - "tmMatch": 84, - "default": 2201, - "total": 2285 + "tmMatch": 354, + "default": 12206, + "total": 12560 }, "approvalCosts": { "tmMatch": 0, @@ -3306,45 +3479,45 @@ "id": 15038029, "username": "Aco_Gemineo", "fullName": "Aco_Gemineo", - "userRole": "Proofreader", + "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15038029/medium/39a0baeb76a5f50b79e8e8589553619a_default.png", "preTranslated": 0, - "totalCosts": 91496 + "totalCosts": 127253 }, "languages": [ { "language": { "id": "de", "name": "German", - "userRole": "Proofreader", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 91496 + "totalCosts": 127253 }, "translated": { - "tmMatch": 26170, - "default": 65326, - "total": 91496 + "tmMatch": 34879, + "default": 92374, + "total": 127253 }, "targetTranslated": { - "tmMatch": 25432, - "default": 63469, - "total": 88901 + "tmMatch": 33888, + "default": 90372, + "total": 124260 }, "translatedByMt": { - "tmMatch": 14, + "tmMatch": 20, "default": 89, - "total": 103 + "total": 109 }, "approved": { "tmMatch": 0, "default": 0, - "total": 128560 + "total": 211879 }, "translationCosts": { - "tmMatch": 26170, - "default": 65326, - "total": 91496 + "tmMatch": 34879, + "default": 92374, + "total": 127253 }, "approvalCosts": { "tmMatch": 0, @@ -3415,7 +3588,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15061123/medium/e4d052a9eddf22820a8df7e59daa1704_default.png", "preTranslated": 0, - "totalCosts": 17022 + "totalCosts": 51260 }, "languages": [ { @@ -3425,17 +3598,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 17022 + "totalCosts": 51260 }, "translated": { - "tmMatch": 2039, - "default": 14983, - "total": 17022 + "tmMatch": 2698, + "default": 48562, + "total": 51260 }, "targetTranslated": { - "tmMatch": 3247, - "default": 26796, - "total": 30043 + "tmMatch": 4487, + "default": 88051, + "total": 92538 }, "translatedByMt": { "tmMatch": 16, @@ -3445,12 +3618,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 10133 + "total": 58261 }, "translationCosts": { - "tmMatch": 2039, - "default": 14983, - "total": 17022 + "tmMatch": 2698, + "default": 48562, + "total": 51260 }, "approvalCosts": { "tmMatch": 0, @@ -3627,7 +3800,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15037897/medium/0cef85d4b2a8be292505d8a7dcf43d68_default.png", "preTranslated": 0, - "totalCosts": 105566 + "totalCosts": 153501 }, "languages": [ { @@ -3637,17 +3810,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 105028 + "totalCosts": 152963 }, "translated": { - "tmMatch": 17695, - "default": 87333, - "total": 105028 + "tmMatch": 21270, + "default": 131693, + "total": 152963 }, "targetTranslated": { - "tmMatch": 16425, - "default": 78147, - "total": 94572 + "tmMatch": 19918, + "default": 120706, + "total": 140624 }, "translatedByMt": { "tmMatch": 4, @@ -3657,12 +3830,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 206034 + "total": 292654 }, "translationCosts": { - "tmMatch": 17695, - "default": 87333, - "total": 105028 + "tmMatch": 21270, + "default": 131693, + "total": 152963 }, "approvalCosts": { "tmMatch": 0, @@ -3757,30 +3930,30 @@ "id": 15441504, "username": "Aco_JS", "fullName": "Aco_JS", - "userRole": "Proofreader", + "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15441504/medium/707b75040cbc5b9bd8dc799f99b1c226_default.png", "preTranslated": 0, - "totalCosts": 1390 + "totalCosts": 1442 }, "languages": [ { "language": { "id": "ta", "name": "Tamil", - "userRole": "Proofreader", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1390 + "totalCosts": 1442 }, "translated": { - "tmMatch": 790, - "default": 600, - "total": 1390 + "tmMatch": 791, + "default": 651, + "total": 1442 }, "targetTranslated": { - "tmMatch": 1731, - "default": 1348, - "total": 3079 + "tmMatch": 1732, + "default": 1435, + "total": 3167 }, "translatedByMt": { "tmMatch": 1, @@ -3790,12 +3963,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 1597 + "total": 1864 }, "translationCosts": { - "tmMatch": 790, - "default": 600, - "total": 1390 + "tmMatch": 791, + "default": 651, + "total": 1442 }, "approvalCosts": { "tmMatch": 0, @@ -4025,7 +4198,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15141044/medium/a099d3678baa4f76c2447ede1e50a37d_default.png", "preTranslated": 0, - "totalCosts": 49 + "totalCosts": 465 }, "languages": [ { @@ -4035,17 +4208,17 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 49 + "totalCosts": 465 }, "translated": { "tmMatch": 0, - "default": 49, - "total": 49 + "default": 465, + "total": 465 }, "targetTranslated": { "tmMatch": 0, - "default": 45, - "total": 45 + "default": 454, + "total": 454 }, "translatedByMt": { "tmMatch": 0, @@ -4055,12 +4228,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 390 + "total": 1450 }, "translationCosts": { "tmMatch": 0, - "default": 49, - "total": 49 + "default": 465, + "total": 465 }, "approvalCosts": { "tmMatch": 0, @@ -4277,7 +4450,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15005335/medium/1df3f196a54707c412ad265030074c6d_default.png", "preTranslated": 0, - "totalCosts": 86138 + "totalCosts": 95293 }, "languages": [ { @@ -4287,17 +4460,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 86138 + "totalCosts": 95293 }, "translated": { - "tmMatch": 12704, - "default": 73434, - "total": 86138 + "tmMatch": 13878, + "default": 81415, + "total": 95293 }, "targetTranslated": { - "tmMatch": 14096, - "default": 79757, - "total": 93853 + "tmMatch": 15417, + "default": 88605, + "total": 104022 }, "translatedByMt": { "tmMatch": 51, @@ -4307,12 +4480,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 142097 + "total": 151976 }, "translationCosts": { - "tmMatch": 12704, - "default": 73434, - "total": 86138 + "tmMatch": 13878, + "default": 81415, + "total": 95293 }, "approvalCosts": { "tmMatch": 0, @@ -4330,7 +4503,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15068119/medium/598c46b08892955be54dabf897863500_default.png", "preTranslated": 0, - "totalCosts": 1167 + "totalCosts": 13317 }, "languages": [ { @@ -4340,17 +4513,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1167 + "totalCosts": 13317 }, "translated": { - "tmMatch": 89, - "default": 1078, - "total": 1167 + "tmMatch": 160, + "default": 13157, + "total": 13317 }, "targetTranslated": { - "tmMatch": 149, - "default": 1796, - "total": 1945 + "tmMatch": 242, + "default": 20366, + "total": 20608 }, "translatedByMt": { "tmMatch": 0, @@ -4360,12 +4533,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 1729 + "total": 27853 }, "translationCosts": { - "tmMatch": 89, - "default": 1078, - "total": 1167 + "tmMatch": 160, + "default": 13157, + "total": 13317 }, "approvalCosts": { "tmMatch": 0, @@ -4529,7 +4702,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15319242/medium/a4b24fefc8cb46836511002d4e1ce001_default.png", "preTranslated": 0, - "totalCosts": 3492 + "totalCosts": 53109 }, "languages": [ { @@ -4539,32 +4712,32 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3492 + "totalCosts": 53109 }, "translated": { - "tmMatch": 259, - "default": 3233, - "total": 3492 + "tmMatch": 799, + "default": 52310, + "total": 53109 }, "targetTranslated": { - "tmMatch": 330, - "default": 3972, - "total": 4302 + "tmMatch": 996, + "default": 62450, + "total": 63446 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 3, "default": 0, - "total": 0 + "total": 3 }, "approved": { "tmMatch": 0, "default": 0, - "total": 7026 + "total": 59326 }, "translationCosts": { - "tmMatch": 259, - "default": 3233, - "total": 3492 + "tmMatch": 799, + "default": 52310, + "total": 53109 }, "approvalCosts": { "tmMatch": 0, @@ -4839,6 +5012,59 @@ } ] }, + { + "user": { + "id": 15894193, + "username": "Aco_Thai", + "fullName": "Aco_Thai", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894193/medium/484700278e1f424962fcca09ceabe77f_default.png", + "preTranslated": 0, + "totalCosts": 722 + }, + "languages": [ + { + "language": { + "id": "th", + "name": "Thai", + "userRole": "Translator, Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 722 + }, + "translated": { + "tmMatch": 22, + "default": 700, + "total": 722 + }, + "targetTranslated": { + "tmMatch": 15, + "default": 178, + "total": 193 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 2116 + }, + "translationCosts": { + "tmMatch": 22, + "default": 700, + "total": 722 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15038647, @@ -4847,7 +5073,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15038647/medium/6e83773b7f4db25bdece30475a0840df_default.png", "preTranslated": 0, - "totalCosts": 126453 + "totalCosts": 127755 }, "languages": [ { @@ -4857,32 +5083,32 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 126453 + "totalCosts": 127755 }, "translated": { - "tmMatch": 25200, - "default": 101253, - "total": 126453 + "tmMatch": 25209, + "default": 102546, + "total": 127755 }, "targetTranslated": { - "tmMatch": 69658, - "default": 274148, - "total": 343806 + "tmMatch": 69692, + "default": 277914, + "total": 347606 }, "translatedByMt": { - "tmMatch": 101, + "tmMatch": 103, "default": 260, - "total": 361 + "total": 363 }, "approved": { "tmMatch": 0, "default": 0, - "total": 157062 + "total": 158458 }, "translationCosts": { - "tmMatch": 25200, - "default": 101253, - "total": 126453 + "tmMatch": 25209, + "default": 102546, + "total": 127755 }, "approvalCosts": { "tmMatch": 0, @@ -4993,7 +5219,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241658/medium/39de011db222be51f6dfe886cfe26499_default.png", "preTranslated": 0, - "totalCosts": 17064 + "totalCosts": 20208 }, "languages": [ { @@ -5003,17 +5229,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 17064 + "totalCosts": 20208 }, "translated": { - "tmMatch": 3006, - "default": 14058, - "total": 17064 + "tmMatch": 3353, + "default": 16855, + "total": 20208 }, "targetTranslated": { - "tmMatch": 4599, - "default": 21833, - "total": 26432 + "tmMatch": 5193, + "default": 25942, + "total": 31135 }, "translatedByMt": { "tmMatch": 1, @@ -5023,12 +5249,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 21059 + "total": 26430 }, "translationCosts": { - "tmMatch": 3006, - "default": 14058, - "total": 17064 + "tmMatch": 3353, + "default": 16855, + "total": 20208 }, "approvalCosts": { "tmMatch": 0, @@ -5046,7 +5272,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15005293/medium/6f19beccc7174b9ab2a3022bad4e34a0_default.png", "preTranslated": 0, - "totalCosts": 12980 + "totalCosts": 15896 }, "languages": [ { @@ -5056,17 +5282,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2124 + "totalCosts": 2145 }, "translated": { - "tmMatch": 171, - "default": 1953, - "total": 2124 + "tmMatch": 187, + "default": 1958, + "total": 2145 }, "targetTranslated": { - "tmMatch": 181, - "default": 2196, - "total": 2377 + "tmMatch": 200, + "default": 2207, + "total": 2407 }, "translatedByMt": { "tmMatch": 10, @@ -5076,12 +5302,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 6159 + "total": 6174 }, "translationCosts": { - "tmMatch": 171, - "default": 1953, - "total": 2124 + "tmMatch": 187, + "default": 1958, + "total": 2145 }, "approvalCosts": { "tmMatch": 0, @@ -5096,17 +5322,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10856 + "totalCosts": 13751 }, "translated": { - "tmMatch": 318, - "default": 10538, - "total": 10856 + "tmMatch": 472, + "default": 13279, + "total": 13751 }, "targetTranslated": { - "tmMatch": 360, - "default": 11546, - "total": 11906 + "tmMatch": 534, + "default": 14624, + "total": 15158 }, "translatedByMt": { "tmMatch": 31, @@ -5116,12 +5342,65 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 21294 + "total": 33596 }, "translationCosts": { - "tmMatch": 318, - "default": 10538, - "total": 10856 + "tmMatch": 472, + "default": 13279, + "total": 13751 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15892921, + "username": "Aco__Malay", + "fullName": "Aco__Malay", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15892921/medium/f212dc708958dc7ccdcc9e1fceab4f47_default.png", + "preTranslated": 0, + "totalCosts": 29872 + }, + "languages": [ + { + "language": { + "id": "ms", + "name": "Malay", + "userRole": "Translator, Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 29872 + }, + "translated": { + "tmMatch": 342, + "default": 29530, + "total": 29872 + }, + "targetTranslated": { + "tmMatch": 339, + "default": 27295, + "total": 27634 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 35503 + }, + "translationCosts": { + "tmMatch": 342, + "default": 29530, + "total": 29872 }, "approvalCosts": { "tmMatch": 0, @@ -5181,6 +5460,99 @@ "default": 0, "total": 0 } + }, + { + "language": { + "id": "pl", + "name": "Polish", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 65 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15986843, + "username": "Aco_crowdin_PL", + "fullName": "Aco_crowdin_PL", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15986843/medium/7d0b6e5c74ce61c7e88c321c1e91f56c_default.png", + "preTranslated": 0, + "totalCosts": 734 + }, + "languages": [ + { + "language": { + "id": "pl", + "name": "Polish", + "userRole": "Translator, Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 734 + }, + "translated": { + "tmMatch": 71, + "default": 663, + "total": 734 + }, + "targetTranslated": { + "tmMatch": 58, + "default": 632, + "total": 690 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 39705 + }, + "translationCosts": { + "tmMatch": 71, + "default": 663, + "total": 734 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } } ] }, @@ -5192,7 +5564,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15256998/medium/1080c1f5f785cd542b310f0c840db93f_default.png", "preTranslated": 0, - "totalCosts": 33557 + "totalCosts": 34125 }, "languages": [ { @@ -5202,17 +5574,17 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 33557 + "totalCosts": 34125 }, "translated": { - "tmMatch": 8824, - "default": 24733, - "total": 33557 + "tmMatch": 8913, + "default": 25212, + "total": 34125 }, "targetTranslated": { - "tmMatch": 10496, - "default": 29516, - "total": 40012 + "tmMatch": 10590, + "default": 30092, + "total": 40682 }, "translatedByMt": { "tmMatch": 70, @@ -5222,12 +5594,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 61616 + "total": 84123 }, "translationCosts": { - "tmMatch": 8824, - "default": 24733, - "total": 33557 + "tmMatch": 8913, + "default": 25212, + "total": 34125 }, "approvalCosts": { "tmMatch": 0, @@ -6425,7 +6797,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911391/medium/b8497df2da3374cd5f0cb8183169e4db_default.png", "preTranslated": 0, - "totalCosts": 19 + "totalCosts": 97 }, "languages": [ { @@ -6435,17 +6807,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 19 + "totalCosts": 97 }, "translated": { "tmMatch": 0, - "default": 19, - "total": 19 + "default": 97, + "total": 97 }, "targetTranslated": { "tmMatch": 0, - "default": 36, - "total": 36 + "default": 171, + "total": 171 }, "translatedByMt": { "tmMatch": 0, @@ -6459,8 +6831,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 19, - "total": 19 + "default": 97, + "total": 97 }, "approvalCosts": { "tmMatch": 0, @@ -7517,6 +7889,59 @@ } ] }, + { + "user": { + "id": 16022912, + "username": "Altyn31", + "fullName": "Altyn31", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16022912/medium/9c3082f5adec6acee597acc3eb5849ab_default.png", + "preTranslated": 0, + "totalCosts": 343 + }, + "languages": [ + { + "language": { + "id": "ru", + "name": "Russian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 343 + }, + "translated": { + "tmMatch": 0, + "default": 343, + "total": 343 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 307, + "total": 307 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 343, + "total": 343 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15123073, @@ -9200,6 +9625,99 @@ } ] }, + { + "user": { + "id": 16013441, + "username": "Arabtom", + "fullName": "Arabtom", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16013441/medium/289ee7bd0a5230cbd3116731fa32efe5_default.png", + "preTranslated": 0, + "totalCosts": 17 + }, + "languages": [ + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 15 + }, + "translated": { + "tmMatch": 0, + "default": 15, + "total": 15 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 10, + "total": 10 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 15, + "total": 15 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "pcm", + "name": "Nigerian Pidgin", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 2 + }, + "translated": { + "tmMatch": 0, + "default": 2, + "total": 2 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 2, + "total": 2 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15269964, @@ -16612,6 +17130,59 @@ } ] }, + { + "user": { + "id": 15999589, + "username": "Cyb3rAlbe", + "fullName": "Cyb3rAlbe", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15999589/medium/ddab3cd8912607254ba7764bb5831504_default.png", + "preTranslated": 0, + "totalCosts": 4 + }, + "languages": [ + { + "language": { + "id": "it", + "name": "Italian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 4 + }, + "translated": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 7, + "total": 7 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14953975, @@ -26020,6 +26591,59 @@ } ] }, + { + "user": { + "id": 15992561, + "username": "Hongyan_Lin", + "fullName": "Hongyan_Lin", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992561/medium/b10820bf840fc1f866510c5e1cb474ba_default.png", + "preTranslated": 0, + "totalCosts": 49 + }, + "languages": [ + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 49 + }, + "translated": { + "tmMatch": 0, + "default": 49, + "total": 49 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 86, + "total": 86 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 49, + "total": 49 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15448512, @@ -27438,6 +28062,59 @@ } ] }, + { + "user": { + "id": 15992537, + "username": "JXP", + "fullName": "JXP", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992537/medium/3774a54dc86212554420221ded24447f_default.png", + "preTranslated": 0, + "totalCosts": 4 + }, + "languages": [ + { + "language": { + "id": "ja", + "name": "Japanese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 4 + }, + "translated": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 12, + "total": 12 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14902898, @@ -28334,7 +29011,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15344526/medium/9c82a079035424edd8b43ca59a8dcb3f.jpg", "preTranslated": 0, - "totalCosts": 3421 + "totalCosts": 5361 }, "languages": [ { @@ -28344,22 +29021,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3421 + "totalCosts": 5361 }, "translated": { - "tmMatch": 33, - "default": 3388, - "total": 3421 + "tmMatch": 45, + "default": 5316, + "total": 5361 }, "targetTranslated": { - "tmMatch": 39, - "default": 3838, - "total": 3877 + "tmMatch": 51, + "default": 6036, + "total": 6087 }, "translatedByMt": { - "tmMatch": 15, + "tmMatch": 22, "default": 5, - "total": 20 + "total": 27 }, "approved": { "tmMatch": 0, @@ -28367,9 +29044,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 33, - "default": 3388, - "total": 3421 + "tmMatch": 45, + "default": 5316, + "total": 5361 }, "approvalCosts": { "tmMatch": 0, @@ -30433,6 +31110,59 @@ } ] }, + { + "user": { + "id": 15714091, + "username": "Karym_GG", + "fullName": "Karym_GG", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png", + "preTranslated": 0, + "totalCosts": 494 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 494 + }, + "translated": { + "tmMatch": 0, + "default": 494, + "total": 494 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 506, + "total": 506 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 494, + "total": 494 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15088879, @@ -32010,6 +32740,59 @@ } ] }, + { + "user": { + "id": 16009153, + "username": "Kuroel", + "fullName": "Kuroel", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16009153/medium/6a4910f3a51034bffd17a5102774f43c_default.png", + "preTranslated": 0, + "totalCosts": 9 + }, + "languages": [ + { + "language": { + "id": "pt-PT", + "name": "Portuguese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 9 + }, + "translated": { + "tmMatch": 0, + "default": 9, + "total": 9 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 10, + "total": 10 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 9, + "total": 9 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14631076, @@ -35522,6 +36305,59 @@ } ] }, + { + "user": { + "id": 15993271, + "username": "Lilian_chou", + "fullName": "Lilian_chou", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993271/medium/fadd2314e88da12bf8895fdb3ac65062_default.png", + "preTranslated": 0, + "totalCosts": 24 + }, + "languages": [ + { + "language": { + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 24 + }, + "translated": { + "tmMatch": 0, + "default": 24, + "total": 24 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 41, + "total": 41 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 24, + "total": 24 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14967619, @@ -37902,7 +38738,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967239/medium/a3fdd1e460fca7c1a39ec8f00a4ad059_default.png", "preTranslated": 0, - "totalCosts": 2757 + "totalCosts": 3114 }, "languages": [ { @@ -37912,17 +38748,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2757 + "totalCosts": 3114 }, "translated": { - "tmMatch": 14, - "default": 2743, - "total": 2757 + "tmMatch": 25, + "default": 3089, + "total": 3114 }, "targetTranslated": { - "tmMatch": 16, - "default": 3594, - "total": 3610 + "tmMatch": 29, + "default": 4030, + "total": 4059 }, "translatedByMt": { "tmMatch": 0, @@ -37935,9 +38771,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 14, - "default": 2743, - "total": 2757 + "tmMatch": 25, + "default": 3089, + "total": 3114 }, "approvalCosts": { "tmMatch": 0, @@ -45912,6 +46748,59 @@ } ] }, + { + "user": { + "id": 15997653, + "username": "Phana", + "fullName": "Phana", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15997653/medium/d76b042af6978c35c2bd605f403b20d2_default.png", + "preTranslated": 0, + "totalCosts": 42 + }, + "languages": [ + { + "language": { + "id": "th", + "name": "Thai", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 42 + }, + "translated": { + "tmMatch": 1, + "default": 41, + "total": 42 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 26, + "total": 27 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 41, + "total": 42 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14669202, @@ -46859,7 +47748,7 @@ "username": "Qupi", "fullName": "Qupi", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15860799/medium/c296454de1f72e406e181e950413a424_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15860799/medium/337f413d2e31db3fbedad1bcfb0f55dc.jpg", "preTranslated": 0, "totalCosts": 739 }, @@ -53513,7 +54402,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15427034/medium/c1c9ab53edcbf78210434ef0cc76e619_default.png", "preTranslated": 0, - "totalCosts": 8139 + "totalCosts": 8191 }, "languages": [ { @@ -53523,17 +54412,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8139 + "totalCosts": 8191 }, "translated": { "tmMatch": 179, - "default": 7960, - "total": 8139 + "default": 8012, + "total": 8191 }, "targetTranslated": { "tmMatch": 169, - "default": 7341, - "total": 7510 + "default": 7401, + "total": 7570 }, "translatedByMt": { "tmMatch": 0, @@ -53543,12 +54432,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 9541 + "total": 12631 }, "translationCosts": { "tmMatch": 179, - "default": 7960, - "total": 8139 + "default": 8012, + "total": 8191 }, "approvalCosts": { "tmMatch": 0, @@ -55745,6 +56634,59 @@ } ] }, + { + "user": { + "id": 15621535, + "username": "Skri_A_E_proof", + "fullName": "Skri_A_E_proof", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15621535/medium/9e57ed0ad6fb0e7e4e7f71f317fa9ac4_default.png", + "preTranslated": 0, + "totalCosts": 1130 + }, + "languages": [ + { + "language": { + "id": "ar", + "name": "Arabic", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1130 + }, + "translated": { + "tmMatch": 14, + "default": 1116, + "total": 1130 + }, + "targetTranslated": { + "tmMatch": 8, + "default": 1071, + "total": 1079 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 14, + "default": 1116, + "total": 1130 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14565190, @@ -58647,6 +59589,59 @@ } ] }, + { + "user": { + "id": 15998479, + "username": "ThePirateJack", + "fullName": "ThePirateJack", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15998479/medium/f5c17357aad5b0d2ffc9ad0ac910d5bf_default.png", + "preTranslated": 0, + "totalCosts": 462 + }, + "languages": [ + { + "language": { + "id": "ka", + "name": "Georgian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 462 + }, + "translated": { + "tmMatch": 0, + "default": 462, + "total": 462 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 377, + "total": 377 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 462, + "total": 462 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15216098, @@ -59601,6 +60596,179 @@ } ] }, + { + "user": { + "id": 16002883, + "username": "Tskhvedo", + "fullName": "Tskhvedo", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16002883/medium/d399bc23341cd2bf55a5fb1a0aff8b46_default.png", + "preTranslated": 0, + "totalCosts": 1869 + }, + "languages": [ + { + "language": { + "id": "ka", + "name": "Georgian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1763 + }, + "translated": { + "tmMatch": 34, + "default": 1729, + "total": 1763 + }, + "targetTranslated": { + "tmMatch": 33, + "default": 1400, + "total": 1433 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 34, + "default": 1729, + "total": 1763 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "gu-IN", + "name": "Gujarati", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1 + }, + "translated": { + "tmMatch": 0, + "default": 1, + "total": 1 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 2, + "total": 2 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 1, + "total": 1 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "mk", + "name": "Macedonian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 102 + }, + "translated": { + "tmMatch": 6, + "default": 96, + "total": 102 + }, + "targetTranslated": { + "tmMatch": 6, + "default": 94, + "total": 100 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 6, + "default": 96, + "total": 102 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ti", + "name": "Tigrinya", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 3 + }, + "translated": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15025653, @@ -64518,6 +65686,59 @@ } ] }, + { + "user": { + "id": 16014193, + "username": "Znamenshikov96", + "fullName": "Znamenshikov96", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16014193/medium/84b6d648d4704b4025b53d0de4ec83e7_default.png", + "preTranslated": 0, + "totalCosts": 1 + }, + "languages": [ + { + "language": { + "id": "ru", + "name": "Russian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1 + }, + "translated": { + "tmMatch": 0, + "default": 1, + "total": 1 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 1, + "total": 1 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14773262, @@ -65891,7 +67112,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966817/medium/c84993de3bc9bf0b9eb7882012279118_default.png", "preTranslated": 0, - "totalCosts": 3331 + "totalCosts": 3414 }, "languages": [ { @@ -65901,17 +67122,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3331 + "totalCosts": 3414 }, "translated": { "tmMatch": 31, - "default": 3300, - "total": 3331 + "default": 3383, + "total": 3414 }, "targetTranslated": { "tmMatch": 31, - "default": 2956, - "total": 2987 + "default": 3042, + "total": 3073 }, "translatedByMt": { "tmMatch": 0, @@ -65925,8 +67146,8 @@ }, "translationCosts": { "tmMatch": 31, - "default": 3300, - "total": 3331 + "default": 3383, + "total": 3414 }, "approvalCosts": { "tmMatch": 0, @@ -67248,6 +68469,59 @@ } ] }, + { + "user": { + "id": 14668500, + "username": "alina.t", + "fullName": "alina.t", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14668500/medium/98cd841cc552285bd60d87aee560a77f_default.png", + "preTranslated": 0, + "totalCosts": 10 + }, + "languages": [ + { + "language": { + "id": "pl", + "name": "Polish", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 10 + }, + "translated": { + "tmMatch": 0, + "default": 10, + "total": 10 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 9, + "total": 9 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 10, + "total": 10 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15129995, @@ -70383,7 +71657,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966545/medium/350ebd9c64c3a9a5244827c6f34d05e7_default.png", "preTranslated": 0, - "totalCosts": 2854 + "totalCosts": 2992 }, "languages": [ { @@ -70393,17 +71667,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2854 + "totalCosts": 2992 }, "translated": { - "tmMatch": 370, - "default": 2484, - "total": 2854 + "tmMatch": 405, + "default": 2587, + "total": 2992 }, "targetTranslated": { - "tmMatch": 504, - "default": 2978, - "total": 3482 + "tmMatch": 548, + "default": 3091, + "total": 3639 }, "translatedByMt": { "tmMatch": 0, @@ -70416,9 +71690,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 370, - "default": 2484, - "total": 2854 + "tmMatch": 405, + "default": 2587, + "total": 2992 }, "approvalCosts": { "tmMatch": 0, @@ -76508,7 +77782,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15988145/medium/f630d0d88a1125dbfcb7a0709531db9e_default.png", "preTranslated": 0, - "totalCosts": 125 + "totalCosts": 234 }, "languages": [ { @@ -76518,17 +77792,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 125 + "totalCosts": 234 }, "translated": { "tmMatch": 0, - "default": 125, - "total": 125 + "default": 234, + "total": 234 }, "targetTranslated": { "tmMatch": 0, - "default": 221, - "total": 221 + "default": 419, + "total": 419 }, "translatedByMt": { "tmMatch": 0, @@ -76542,8 +77816,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 125, - "total": 125 + "default": 234, + "total": 234 }, "approvalCosts": { "tmMatch": 0, @@ -79150,6 +80424,59 @@ } ] }, + { + "user": { + "id": 15993607, + "username": "edurh", + "fullName": "edurh", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993607/medium/ed9beba996490505dc07455130c75ae2_default.png", + "preTranslated": 0, + "totalCosts": 58 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 58 + }, + "translated": { + "tmMatch": 0, + "default": 58, + "total": 58 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 70, + "total": 70 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 58, + "total": 58 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15710295, @@ -79317,9 +80644,49 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15841839/medium/0a25585c566bb1f7be4cba84b02e8561_default.png", "preTranslated": 0, - "totalCosts": 2648 + "totalCosts": 2757 }, "languages": [ + { + "language": { + "id": "af", + "name": "Afrikaans", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 97 + }, + "translated": { + "tmMatch": 3, + "default": 94, + "total": 97 + }, + "targetTranslated": { + "tmMatch": 3, + "default": 93, + "total": 96 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 3, + "default": 94, + "total": 97 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, { "language": { "id": "zh-CN", @@ -79400,6 +80767,46 @@ "total": 0 } }, + { + "language": { + "id": "ja", + "name": "Japanese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 12 + }, + "translated": { + "tmMatch": 2, + "default": 10, + "total": 12 + }, + "targetTranslated": { + "tmMatch": 2, + "default": 10, + "total": 12 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 2, + "default": 10, + "total": 12 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, { "language": { "id": "ms", @@ -79548,6 +80955,59 @@ } ] }, + { + "user": { + "id": 16003137, + "username": "elmago_666", + "fullName": "elmago_666", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16003137/medium/d83bcad2a725eed1e3d2a414a24f0d2f_default.png", + "preTranslated": 0, + "totalCosts": 4 + }, + "languages": [ + { + "language": { + "id": "it", + "name": "Italian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 4 + }, + "translated": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 6, + "total": 6 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14958557, @@ -83643,6 +85103,59 @@ } ] }, + { + "user": { + "id": 16007641, + "username": "giorgip", + "fullName": "giorgip", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16007641/medium/c730d07fcac9a78e49a68eb2e33564e1.jpg", + "preTranslated": 0, + "totalCosts": 181 + }, + "languages": [ + { + "language": { + "id": "ka", + "name": "Georgian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 181 + }, + "translated": { + "tmMatch": 13, + "default": 168, + "total": 181 + }, + "targetTranslated": { + "tmMatch": 12, + "default": 144, + "total": 156 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 13, + "default": 168, + "total": 181 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14664124, @@ -88135,6 +89648,59 @@ } ] }, + { + "user": { + "id": 16004519, + "username": "janog82", + "fullName": "janog82", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004519/medium/3a4d1c5b0aa82aa19b0f9350bde398a3_default.png", + "preTranslated": 0, + "totalCosts": 73 + }, + "languages": [ + { + "language": { + "id": "ka", + "name": "Georgian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 73 + }, + "translated": { + "tmMatch": 1, + "default": 72, + "total": 73 + }, + "targetTranslated": { + "tmMatch": 2, + "default": 54, + "total": 56 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 72, + "total": 73 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14779018, @@ -88877,6 +90443,59 @@ } ] }, + { + "user": { + "id": 15992393, + "username": "jgE100", + "fullName": "jgE100", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992393/medium/b0d6ce2292216f607121472236ef7360_default.png", + "preTranslated": 0, + "totalCosts": 74 + }, + "languages": [ + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 74 + }, + "translated": { + "tmMatch": 0, + "default": 74, + "total": 74 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 126, + "total": 126 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 74, + "total": 74 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15415722, @@ -99531,6 +101150,59 @@ } ] }, + { + "user": { + "id": 16015261, + "username": "mohammedbabach6985", + "fullName": "mohammedbabach6985", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16015261/medium/fafcf5457f6d490d82c995fde3b05be9_default.png", + "preTranslated": 0, + "totalCosts": 7 + }, + "languages": [ + { + "language": { + "id": "fr", + "name": "French", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 7 + }, + "translated": { + "tmMatch": 0, + "default": 7, + "total": 7 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 7, + "total": 7 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15023979, @@ -100366,6 +102038,59 @@ } ] }, + { + "user": { + "id": 16023092, + "username": "mtchkka", + "fullName": "mtchkka", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16023092/medium/381adbcacbc363820f19878e129b5d86_default.png", + "preTranslated": 0, + "totalCosts": 106 + }, + "languages": [ + { + "language": { + "id": "ru", + "name": "Russian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 106 + }, + "translated": { + "tmMatch": 0, + "default": 106, + "total": 106 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 92, + "total": 92 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 106, + "total": 106 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15138486, @@ -101010,7 +102735,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15989457/medium/538d4b5dd55c92e2e8e0759fc6870270_default.png", "preTranslated": 0, - "totalCosts": 113 + "totalCosts": 479 }, "languages": [ { @@ -101020,17 +102745,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 113 + "totalCosts": 479 }, "translated": { - "tmMatch": 0, - "default": 113, - "total": 113 + "tmMatch": 77, + "default": 402, + "total": 479 }, "targetTranslated": { - "tmMatch": 0, - "default": 114, - "total": 114 + "tmMatch": 99, + "default": 440, + "total": 539 }, "translatedByMt": { "tmMatch": 0, @@ -101043,9 +102768,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 113, - "total": 113 + "tmMatch": 77, + "default": 402, + "total": 479 }, "approvalCosts": { "tmMatch": 0, @@ -103473,7 +105198,7 @@ "username": "olka", "fullName": "olka", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13317516/medium/de56e77543599bd2c434479001852e5b.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13317516/medium/dfd08c4467068ea554bf6cde54a35cfb.jpg", "preTranslated": 0, "totalCosts": 3 }, @@ -106258,7 +107983,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg", "preTranslated": 0, - "totalCosts": 130919 + "totalCosts": 131065 }, "languages": [ { @@ -106268,32 +107993,32 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 130919 + "totalCosts": 131065 }, "translated": { - "tmMatch": 6794, - "default": 124125, - "total": 130919 + "tmMatch": 6839, + "default": 124226, + "total": 131065 }, "targetTranslated": { - "tmMatch": 7422, - "default": 135312, - "total": 142734 + "tmMatch": 7469, + "default": 135425, + "total": 142894 }, "translatedByMt": { - "tmMatch": 335, + "tmMatch": 336, "default": 3770, - "total": 4105 + "total": 4106 }, "approved": { "tmMatch": 0, "default": 0, - "total": 858 + "total": 860 }, "translationCosts": { - "tmMatch": 6794, - "default": 124125, - "total": 130919 + "tmMatch": 6839, + "default": 124226, + "total": 131065 }, "approvalCosts": { "tmMatch": 0, @@ -111956,7 +113681,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15804803/medium/e753b43a4cf480cd2a37c5795cdb83ba_default.png", "preTranslated": 0, - "totalCosts": 13315 + "totalCosts": 14067 }, "languages": [ { @@ -111966,17 +113691,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 13315 + "totalCosts": 14067 }, "translated": { - "tmMatch": 86, - "default": 13229, - "total": 13315 + "tmMatch": 87, + "default": 13980, + "total": 14067 }, "targetTranslated": { - "tmMatch": 86, - "default": 12168, - "total": 12254 + "tmMatch": 87, + "default": 12882, + "total": 12969 }, "translatedByMt": { "tmMatch": 29, @@ -111989,9 +113714,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 86, - "default": 13229, - "total": 13315 + "tmMatch": 87, + "default": 13980, + "total": 14067 }, "approvalCosts": { "tmMatch": 0, @@ -113056,7 +114781,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964877/medium/31d3f81a4dc84f53fcc1b3da395a06d4_default.png", "preTranslated": 0, - "totalCosts": 1855 + "totalCosts": 1985 }, "languages": [ { @@ -113066,17 +114791,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1855 + "totalCosts": 1985 }, "translated": { "tmMatch": 1, - "default": 1854, - "total": 1855 + "default": 1984, + "total": 1985 }, "targetTranslated": { "tmMatch": 3, - "default": 5475, - "total": 5478 + "default": 5895, + "total": 5898 }, "translatedByMt": { "tmMatch": 0, @@ -113090,8 +114815,8 @@ }, "translationCosts": { "tmMatch": 1, - "default": 1854, - "total": 1855 + "default": 1984, + "total": 1985 }, "approvalCosts": { "tmMatch": 0, @@ -113260,6 +114985,59 @@ } ] }, + { + "user": { + "id": 16005069, + "username": "thanos300693", + "fullName": "thanos300693", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16005069/medium/e5d923cc742e014a10dbc03866725215_default.png", + "preTranslated": 0, + "totalCosts": 956 + }, + "languages": [ + { + "language": { + "id": "el", + "name": "Greek", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 956 + }, + "translated": { + "tmMatch": 0, + "default": 956, + "total": 956 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 1254, + "total": 1254 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 956, + "total": 956 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15835107, @@ -113313,6 +115091,59 @@ } ] }, + { + "user": { + "id": 16003709, + "username": "the-eth-lover", + "fullName": "the-eth-lover", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16003709/medium/b9598ad7bb784e4cdcceeb06025c0e3f_default.png", + "preTranslated": 0, + "totalCosts": 506 + }, + "languages": [ + { + "language": { + "id": "fa", + "name": "Persian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 506 + }, + "translated": { + "tmMatch": 0, + "default": 506, + "total": 506 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 605, + "total": 605 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 506, + "total": 506 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15672817, @@ -116886,7 +118717,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15973859/medium/e81a181b32492c70a65c85400d6f2e35.jpg", "preTranslated": 0, - "totalCosts": 143 + "totalCosts": 669 }, "languages": [ { @@ -116896,17 +118727,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 143 + "totalCosts": 669 }, "translated": { "tmMatch": 0, - "default": 143, - "total": 143 + "default": 669, + "total": 669 }, "targetTranslated": { "tmMatch": 0, - "default": 141, - "total": 141 + "default": 739, + "total": 739 }, "translatedByMt": { "tmMatch": 0, @@ -116920,8 +118751,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 143, - "total": 143 + "default": 669, + "total": 669 }, "approvalCosts": { "tmMatch": 0, @@ -122015,7 +123846,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15858389/medium/2301dd32710c7c8158a63dc3fb74fddf_default.png", "preTranslated": 0, - "totalCosts": 145 + "totalCosts": 278 }, "languages": [ { @@ -122025,17 +123856,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 145 + "totalCosts": 278 }, "translated": { - "tmMatch": 0, - "default": 145, - "total": 145 + "tmMatch": 10, + "default": 268, + "total": 278 }, "targetTranslated": { - "tmMatch": 0, - "default": 129, - "total": 129 + "tmMatch": 14, + "default": 219, + "total": 233 }, "translatedByMt": { "tmMatch": 0, @@ -122048,9 +123879,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 145, - "total": 145 + "tmMatch": 10, + "default": 268, + "total": 278 }, "approvalCosts": { "tmMatch": 0, @@ -123486,7 +125317,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14226882/medium/6f2e227d358c748cdfcd3a1969d69b20_default.png", "preTranslated": 0, - "totalCosts": 10414 + "totalCosts": 155511 }, "languages": [ { @@ -123536,32 +125367,32 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10157 + "totalCosts": 155254 }, "translated": { - "tmMatch": 1459, - "default": 8698, - "total": 10157 + "tmMatch": 19544, + "default": 135710, + "total": 155254 }, "targetTranslated": { - "tmMatch": 1312, - "default": 7394, - "total": 8706 + "tmMatch": 16679, + "default": 113787, + "total": 130466 }, "translatedByMt": { - "tmMatch": 4, + "tmMatch": 12, "default": 0, - "total": 4 + "total": 12 }, "approved": { "tmMatch": 0, "default": 0, - "total": 15900 + "total": 222797 }, "translationCosts": { - "tmMatch": 1459, - "default": 8698, - "total": 10157 + "tmMatch": 19544, + "default": 135710, + "total": 155254 }, "approvalCosts": { "tmMatch": 0, @@ -123619,7 +125450,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15548673/medium/97b26c4f72dce4b2597928269c77ad95_default.png", "preTranslated": 0, - "totalCosts": 804 + "totalCosts": 13761 }, "languages": [ { @@ -123661,6 +125492,86 @@ "default": 0, "total": 0 } + }, + { + "language": { + "id": "kn", + "name": "Kannada", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 11916 + }, + "translated": { + "tmMatch": 54, + "default": 11862, + "total": 11916 + }, + "targetTranslated": { + "tmMatch": 115, + "default": 18772, + "total": 18887 + }, + "translatedByMt": { + "tmMatch": 26, + "default": 0, + "total": 26 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 26741 + }, + "translationCosts": { + "tmMatch": 54, + "default": 11862, + "total": 11916 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ne-NP", + "name": "Nepali", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1041 + }, + "translated": { + "tmMatch": 56, + "default": 985, + "total": 1041 + }, + "targetTranslated": { + "tmMatch": 101, + "default": 1588, + "total": 1689 + }, + "translatedByMt": { + "tmMatch": 2, + "default": 0, + "total": 2 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 1420 + }, + "translationCosts": { + "tmMatch": 56, + "default": 985, + "total": 1041 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } } ] }, @@ -125607,7 +127518,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13151214/medium/8d49c17a9752eec54b3a976695e23834_default.png", "preTranslated": 0, - "totalCosts": 126384 + "totalCosts": 182230 }, "languages": [ { @@ -125617,32 +127528,32 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 51298 + "totalCosts": 95525 }, "translated": { - "tmMatch": 11651, - "default": 39647, - "total": 51298 + "tmMatch": 14832, + "default": 80693, + "total": 95525 }, "targetTranslated": { - "tmMatch": 10890, - "default": 36746, - "total": 47636 + "tmMatch": 13833, + "default": 74369, + "total": 88202 }, "translatedByMt": { - "tmMatch": 46, - "default": 19, - "total": 65 + "tmMatch": 48, + "default": 23, + "total": 71 }, "approved": { "tmMatch": 0, "default": 0, - "total": 82270 + "total": 138488 }, "translationCosts": { - "tmMatch": 11651, - "default": 39647, - "total": 51298 + "tmMatch": 14832, + "default": 80693, + "total": 95525 }, "approvalCosts": { "tmMatch": 0, @@ -125657,17 +127568,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 75086 + "totalCosts": 86705 }, "translated": { - "tmMatch": 12075, - "default": 63011, - "total": 75086 + "tmMatch": 13023, + "default": 73682, + "total": 86705 }, "targetTranslated": { - "tmMatch": 10953, - "default": 57844, - "total": 68797 + "tmMatch": 11822, + "default": 67766, + "total": 79588 }, "translatedByMt": { "tmMatch": 41, @@ -125677,12 +127588,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 84871 + "total": 98754 }, "translationCosts": { - "tmMatch": 12075, - "default": 63011, - "total": 75086 + "tmMatch": 13023, + "default": 73682, + "total": 86705 }, "approvalCosts": { "tmMatch": 0, @@ -125700,9 +127611,49 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15036379/medium/753e141785d6f0c1dd9d90a6df87eb05_default.png", "preTranslated": 0, - "totalCosts": 103279 + "totalCosts": 177982 }, "languages": [ + { + "language": { + "id": "am", + "name": "Amharic", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 6066 + }, + "translated": { + "tmMatch": 84, + "default": 5982, + "total": 6066 + }, + "targetTranslated": { + "tmMatch": 75, + "default": 4862, + "total": 4937 + }, + "translatedByMt": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 10089 + }, + "translationCosts": { + "tmMatch": 84, + "default": 5982, + "total": 6066 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, { "language": { "id": "ar", @@ -125710,32 +127661,112 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 33162 + "totalCosts": 46878 }, "translated": { - "tmMatch": 2825, - "default": 30337, - "total": 33162 + "tmMatch": 3502, + "default": 43376, + "total": 46878 }, "targetTranslated": { - "tmMatch": 2771, - "default": 29230, - "total": 32001 + "tmMatch": 3419, + "default": 41980, + "total": 45399 }, "translatedByMt": { - "tmMatch": 4, + "tmMatch": 19, "default": 29, - "total": 33 + "total": 48 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 54480 + }, + "translationCosts": { + "tmMatch": 3502, + "default": 43376, + "total": 46878 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "hy-AM", + "name": "Armenian", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 3810 + }, + "translated": { + "tmMatch": 629, + "default": 3181, + "total": 3810 + }, + "targetTranslated": { + "tmMatch": 567, + "default": 3236, + "total": 3803 + }, + "translatedByMt": { + "tmMatch": 1, + "default": 0, + "total": 1 }, "approved": { "tmMatch": 0, "default": 0, - "total": 39996 + "total": 10695 }, "translationCosts": { - "tmMatch": 2825, - "default": 30337, - "total": 33162 + "tmMatch": 629, + "default": 3181, + "total": 3810 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "az", + "name": "Azerbaijani", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 5741 + }, + "translated": { + "tmMatch": 222, + "default": 5519, + "total": 5741 + }, + "targetTranslated": { + "tmMatch": 236, + "default": 4797, + "total": 5033 + }, + "translatedByMt": { + "tmMatch": 3, + "default": 0, + "total": 3 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 8797 + }, + "translationCosts": { + "tmMatch": 222, + "default": 5519, + "total": 5741 }, "approvalCosts": { "tmMatch": 0, @@ -125783,6 +127814,46 @@ "total": 0 } }, + { + "language": { + "id": "ig", + "name": "Igbo", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 20228 + }, + "translated": { + "tmMatch": 117, + "default": 20111, + "total": 20228 + }, + "targetTranslated": { + "tmMatch": 161, + "default": 23080, + "total": 23241 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 23331 + }, + "translationCosts": { + "tmMatch": 117, + "default": 20111, + "total": 20228 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, { "language": { "id": "fa", @@ -125790,17 +127861,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 69946 + "totalCosts": 90476 }, "translated": { - "tmMatch": 14006, - "default": 55940, - "total": 69946 + "tmMatch": 16184, + "default": 74292, + "total": 90476 }, "targetTranslated": { - "tmMatch": 17943, - "default": 70501, - "total": 88444 + "tmMatch": 20692, + "default": 93313, + "total": 114005 }, "translatedByMt": { "tmMatch": 22, @@ -125810,12 +127881,52 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 91869 + "total": 120930 + }, + "translationCosts": { + "tmMatch": 16184, + "default": 74292, + "total": 90476 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "tk", + "name": "Turkmen", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 4612 + }, + "translated": { + "tmMatch": 517, + "default": 4095, + "total": 4612 + }, + "targetTranslated": { + "tmMatch": 415, + "default": 3537, + "total": 3952 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 6198 }, "translationCosts": { - "tmMatch": 14006, - "default": 55940, - "total": 69946 + "tmMatch": 517, + "default": 4095, + "total": 4612 }, "approvalCosts": { "tmMatch": 0, @@ -125833,7 +127944,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13939103/medium/d2dbe429cd49b1f80a767cb275a0b83b_default.png", "preTranslated": 0, - "totalCosts": 18277 + "totalCosts": 21112 }, "languages": [ { @@ -125843,32 +127954,32 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 18277 + "totalCosts": 21112 }, "translated": { - "tmMatch": 3911, - "default": 14366, - "total": 18277 + "tmMatch": 4017, + "default": 17095, + "total": 21112 }, "targetTranslated": { - "tmMatch": 3680, - "default": 13917, - "total": 17597 + "tmMatch": 3785, + "default": 16611, + "total": 20396 }, "translatedByMt": { - "tmMatch": 3, + "tmMatch": 6, "default": 0, - "total": 3 + "total": 6 }, "approved": { "tmMatch": 0, "default": 0, - "total": 22531 + "total": 24398 }, "translationCosts": { - "tmMatch": 3911, - "default": 14366, - "total": 18277 + "tmMatch": 4017, + "default": 17095, + "total": 21112 }, "approvalCosts": { "tmMatch": 0, @@ -126019,7 +128130,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15218796/medium/b2fe0512f17a60d47a4328127eaee058_default.png", "preTranslated": 0, - "totalCosts": 30462 + "totalCosts": 32996 }, "languages": [ { @@ -126029,32 +128140,32 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 29498 + "totalCosts": 32032 }, "translated": { - "tmMatch": 838, - "default": 28660, - "total": 29498 + "tmMatch": 847, + "default": 31185, + "total": 32032 }, "targetTranslated": { - "tmMatch": 689, - "default": 22054, - "total": 22743 + "tmMatch": 697, + "default": 23973, + "total": 24670 }, "translatedByMt": { - "tmMatch": 37, - "default": 0, - "total": 37 + "tmMatch": 46, + "default": 2, + "total": 48 }, "approved": { "tmMatch": 0, "default": 0, - "total": 38060 + "total": 43349 }, "translationCosts": { - "tmMatch": 838, - "default": 28660, - "total": 29498 + "tmMatch": 847, + "default": 31185, + "total": 32032 }, "approvalCosts": { "tmMatch": 0, @@ -126165,7 +128276,7 @@ "userRole": "Manager", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15304854/medium/5f1f6782bbfc6e596c29e7b9a306e0f7_default.png", "preTranslated": 0, - "totalCosts": 108035 + "totalCosts": 144978 }, "languages": [ { @@ -126175,17 +128286,17 @@ "userRole": "Manager", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10224 + "totalCosts": 11566 }, "translated": { "tmMatch": 0, - "default": 10224, - "total": 10224 + "default": 11566, + "total": 11566 }, "targetTranslated": { "tmMatch": 0, - "default": 10833, - "total": 10833 + "default": 12252, + "total": 12252 }, "translatedByMt": { "tmMatch": 0, @@ -126195,12 +128306,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 11113 + "total": 12573 }, "translationCosts": { "tmMatch": 0, - "default": 10224, - "total": 10224 + "default": 11566, + "total": 11566 }, "approvalCosts": { "tmMatch": 0, @@ -126215,17 +128326,17 @@ "userRole": "Manager", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15581 + "totalCosts": 31153 }, "translated": { "tmMatch": 0, - "default": 15581, - "total": 15581 + "default": 31153, + "total": 31153 }, "targetTranslated": { "tmMatch": 0, - "default": 14352, - "total": 14352 + "default": 28689, + "total": 28689 }, "translatedByMt": { "tmMatch": 0, @@ -126235,12 +128346,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 15980 + "total": 42127 }, "translationCosts": { "tmMatch": 0, - "default": 15581, - "total": 15581 + "default": 31153, + "total": 31153 }, "approvalCosts": { "tmMatch": 0, @@ -126255,17 +128366,17 @@ "userRole": "Manager", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 82095 + "totalCosts": 102124 }, "translated": { "tmMatch": 0, - "default": 82095, - "total": 82095 + "default": 102124, + "total": 102124 }, "targetTranslated": { "tmMatch": 0, - "default": 89956, - "total": 89956 + "default": 111287, + "total": 111287 }, "translatedByMt": { "tmMatch": 0, @@ -126275,12 +128386,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 134152 + "total": 169044 }, "translationCosts": { "tmMatch": 0, - "default": 82095, - "total": 82095 + "default": 102124, + "total": 102124 }, "approvalCosts": { "tmMatch": 0, @@ -126338,7 +128449,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15688125/medium/d9623c4e233cb23611b41b1138e7c158_default.png", "preTranslated": 0, - "totalCosts": 29460 + "totalCosts": 46501 }, "languages": [ { @@ -126348,17 +128459,17 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 29460 + "totalCosts": 46501 }, "translated": { - "tmMatch": 9282, - "default": 20178, - "total": 29460 + "tmMatch": 10862, + "default": 35639, + "total": 46501 }, "targetTranslated": { - "tmMatch": 26097, - "default": 52118, - "total": 78215 + "tmMatch": 31045, + "default": 97058, + "total": 128103 }, "translatedByMt": { "tmMatch": 1, @@ -126368,12 +128479,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 41588 + "total": 62379 }, "translationCosts": { - "tmMatch": 9282, - "default": 20178, - "total": 29460 + "tmMatch": 10862, + "default": 35639, + "total": 46501 }, "approvalCosts": { "tmMatch": 0, @@ -126444,7 +128555,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15144574/medium/d85fe7c56b9f9e47c9f1a3e27ca32078.jpg", "preTranslated": 0, - "totalCosts": 4230 + "totalCosts": 6779 }, "languages": [ { @@ -126454,17 +128565,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1150 + "totalCosts": 1284 }, "translated": { - "tmMatch": 68, - "default": 1082, - "total": 1150 + "tmMatch": 71, + "default": 1213, + "total": 1284 }, "targetTranslated": { - "tmMatch": 60, - "default": 904, - "total": 964 + "tmMatch": 62, + "default": 1012, + "total": 1074 }, "translatedByMt": { "tmMatch": 0, @@ -126474,12 +128585,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 1775 + "total": 1926 }, "translationCosts": { - "tmMatch": 68, - "default": 1082, - "total": 1150 + "tmMatch": 71, + "default": 1213, + "total": 1284 }, "approvalCosts": { "tmMatch": 0, @@ -126534,17 +128645,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 347 + "totalCosts": 2762 }, "translated": { - "tmMatch": 30, - "default": 317, - "total": 347 + "tmMatch": 271, + "default": 2491, + "total": 2762 }, "targetTranslated": { - "tmMatch": 32, - "default": 354, - "total": 386 + "tmMatch": 273, + "default": 2482, + "total": 2755 }, "translatedByMt": { "tmMatch": 0, @@ -126554,12 +128665,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 3613 + "total": 6174 }, "translationCosts": { - "tmMatch": 30, - "default": 317, - "total": 347 + "tmMatch": 271, + "default": 2491, + "total": 2762 }, "approvalCosts": { "tmMatch": 0, @@ -127388,7 +129499,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15048901/medium/9c2e15bbe4e07a19c6a4d53fd3bd4fac_default.png", "preTranslated": 0, - "totalCosts": 298177 + "totalCosts": 397474 }, "languages": [ { @@ -127398,32 +129509,32 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 272733 + "totalCosts": 306700 }, "translated": { - "tmMatch": 73722, - "default": 199011, - "total": 272733 + "tmMatch": 78875, + "default": 227825, + "total": 306700 }, "targetTranslated": { - "tmMatch": 127052, - "default": 336071, - "total": 463123 + "tmMatch": 136224, + "default": 385227, + "total": 521451 }, "translatedByMt": { - "tmMatch": 105, - "default": 283, - "total": 388 + "tmMatch": 110, + "default": 284, + "total": 394 }, "approved": { "tmMatch": 0, "default": 0, - "total": 313688 + "total": 362611 }, "translationCosts": { - "tmMatch": 73722, - "default": 199011, - "total": 272733 + "tmMatch": 78875, + "default": 227825, + "total": 306700 }, "approvalCosts": { "tmMatch": 0, @@ -127438,32 +129549,32 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 25444 + "totalCosts": 90774 }, "translated": { - "tmMatch": 6668, - "default": 18776, - "total": 25444 + "tmMatch": 15291, + "default": 75483, + "total": 90774 }, "targetTranslated": { - "tmMatch": 11650, - "default": 33636, - "total": 45286 + "tmMatch": 26594, + "default": 131185, + "total": 157779 }, "translatedByMt": { - "tmMatch": 52, - "default": 1, - "total": 53 + "tmMatch": 62, + "default": 3, + "total": 65 }, "approved": { "tmMatch": 0, "default": 0, - "total": 43491 + "total": 115199 }, "translationCosts": { - "tmMatch": 6668, - "default": 18776, - "total": 25444 + "tmMatch": 15291, + "default": 75483, + "total": 90774 }, "approvalCosts": { "tmMatch": 0, @@ -127481,7 +129592,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15056853/medium/37114ce3d0b4923712379912a1841f4a_default.png", "preTranslated": 0, - "totalCosts": 9454 + "totalCosts": 42784 }, "languages": [ { @@ -127491,17 +129602,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 592 + "totalCosts": 16615 }, "translated": { - "tmMatch": 55, - "default": 537, - "total": 592 + "tmMatch": 2356, + "default": 14259, + "total": 16615 }, "targetTranslated": { - "tmMatch": 108, - "default": 860, - "total": 968 + "tmMatch": 4085, + "default": 24894, + "total": 28979 }, "translatedByMt": { "tmMatch": 4, @@ -127511,12 +129622,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 15894 }, "translationCosts": { - "tmMatch": 55, - "default": 537, - "total": 592 + "tmMatch": 2356, + "default": 14259, + "total": 16615 }, "approvalCosts": { "tmMatch": 0, @@ -127531,17 +129642,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8862 + "totalCosts": 26169 }, "translated": { - "tmMatch": 862, - "default": 8000, - "total": 8862 + "tmMatch": 3072, + "default": 23097, + "total": 26169 }, "targetTranslated": { - "tmMatch": 1458, - "default": 14633, - "total": 16091 + "tmMatch": 5447, + "default": 41315, + "total": 46762 }, "translatedByMt": { "tmMatch": 0, @@ -127551,12 +129662,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 17523 }, "translationCosts": { - "tmMatch": 862, - "default": 8000, - "total": 8862 + "tmMatch": 3072, + "default": 23097, + "total": 26169 }, "approvalCosts": { "tmMatch": 0, @@ -127826,7 +129937,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13599210/medium/e0a1e6a034ce38e1bde5701fccfc8770_default.png", "preTranslated": 0, - "totalCosts": 339 + "totalCosts": 4241 }, "languages": [ { @@ -127836,17 +129947,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 339 + "totalCosts": 4241 }, "translated": { - "tmMatch": 54, - "default": 285, - "total": 339 + "tmMatch": 220, + "default": 4021, + "total": 4241 }, "targetTranslated": { - "tmMatch": 58, - "default": 249, - "total": 307 + "tmMatch": 209, + "default": 3803, + "total": 4012 }, "translatedByMt": { "tmMatch": 1, @@ -127856,12 +129967,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 1374 + "total": 17817 }, "translationCosts": { - "tmMatch": 54, - "default": 285, - "total": 339 + "tmMatch": 220, + "default": 4021, + "total": 4241 }, "approvalCosts": { "tmMatch": 0, @@ -128105,7 +130216,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15197762/medium/d8e4fc31646e818d0cedd473fe0525d2_default.png", "preTranslated": 0, - "totalCosts": 75061 + "totalCosts": 128541 }, "languages": [ { @@ -128115,17 +130226,17 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 75061 + "totalCosts": 128541 }, "translated": { - "tmMatch": 15441, - "default": 59620, - "total": 75061 + "tmMatch": 25163, + "default": 103378, + "total": 128541 }, "targetTranslated": { - "tmMatch": 17808, - "default": 68261, - "total": 86069 + "tmMatch": 29638, + "default": 119969, + "total": 149607 }, "translatedByMt": { "tmMatch": 69, @@ -128135,12 +130246,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 100551 + "total": 180452 }, "translationCosts": { - "tmMatch": 15441, - "default": 59620, - "total": 75061 + "tmMatch": 25163, + "default": 103378, + "total": 128541 }, "approvalCosts": { "tmMatch": 0, @@ -132112,6 +134223,59 @@ } ] }, + { + "user": { + "id": 15049205, + "username": "aleksandrmedvecky", + "fullName": "Aleksandr Medvecky (aleksandrmedvecky)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15049205/medium/0be15eb751f0359262535f9dfed66c95.jpeg", + "preTranslated": 0, + "totalCosts": 14 + }, + "languages": [ + { + "language": { + "id": "ru", + "name": "Russian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 14 + }, + "translated": { + "tmMatch": 0, + "default": 14, + "total": 14 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 14, + "total": 14 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15662219, @@ -136507,7 +138671,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15403416/medium/332fd243f3a81dd8a8a4bd85eeb298c7_default.png", "preTranslated": 0, - "totalCosts": 7953 + "totalCosts": 8339 }, "languages": [ { @@ -136517,17 +138681,17 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7953 + "totalCosts": 8339 }, "translated": { - "tmMatch": 712, - "default": 7241, - "total": 7953 + "tmMatch": 819, + "default": 7520, + "total": 8339 }, "targetTranslated": { - "tmMatch": 794, - "default": 7766, - "total": 8560 + "tmMatch": 901, + "default": 8055, + "total": 8956 }, "translatedByMt": { "tmMatch": 0, @@ -136537,12 +138701,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 8135 + "total": 8634 }, "translationCosts": { - "tmMatch": 712, - "default": 7241, - "total": 7953 + "tmMatch": 819, + "default": 7520, + "total": 8339 }, "approvalCosts": { "tmMatch": 0, @@ -138103,6 +140267,59 @@ } ] }, + { + "user": { + "id": 15998451, + "username": "gato1904", + "fullName": "Andrés León (gato1904)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15998451/medium/b48c75b54930b781a82c9146d5ba2daf.png", + "preTranslated": 0, + "totalCosts": 52 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 52 + }, + "translated": { + "tmMatch": 0, + "default": 52, + "total": 52 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 54, + "total": 54 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 52, + "total": 52 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15731089, @@ -138376,7 +140593,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770841/medium/f82644a45b17eed3facb1815dcc83d13.jpeg", "preTranslated": 0, - "totalCosts": 10039 + "totalCosts": 10264 }, "languages": [ { @@ -138386,17 +140603,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10039 + "totalCosts": 10264 }, "translated": { "tmMatch": 32, - "default": 10007, - "total": 10039 + "default": 10232, + "total": 10264 }, "targetTranslated": { "tmMatch": 31, - "default": 11598, - "total": 11629 + "default": 11848, + "total": 11879 }, "translatedByMt": { "tmMatch": 30, @@ -138410,8 +140627,8 @@ }, "translationCosts": { "tmMatch": 32, - "default": 10007, - "total": 10039 + "default": 10232, + "total": 10264 }, "approvalCosts": { "tmMatch": 0, @@ -139720,6 +141937,59 @@ } ] }, + { + "user": { + "id": 16026460, + "username": "anton.aksyonov", + "fullName": "Anton Aksyonov (anton.aksyonov)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16026460/medium/784c5798436dba2bf5db01ce3297a80d.jpeg", + "preTranslated": 0, + "totalCosts": 246 + }, + "languages": [ + { + "language": { + "id": "uk", + "name": "Ukrainian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 246 + }, + "translated": { + "tmMatch": 0, + "default": 246, + "total": 246 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 189, + "total": 189 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 246, + "total": 246 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15056397, @@ -141517,7 +143787,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg", "preTranslated": 0, - "totalCosts": 5371 + "totalCosts": 5411 }, "languages": [ { @@ -141527,17 +143797,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5371 + "totalCosts": 5411 }, "translated": { - "tmMatch": 77, - "default": 5294, - "total": 5371 + "tmMatch": 79, + "default": 5332, + "total": 5411 }, "targetTranslated": { - "tmMatch": 76, - "default": 4895, - "total": 4971 + "tmMatch": 78, + "default": 4925, + "total": 5003 }, "translatedByMt": { "tmMatch": 10, @@ -141550,9 +143820,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 77, - "default": 5294, - "total": 5371 + "tmMatch": 79, + "default": 5332, + "total": 5411 }, "approvalCosts": { "tmMatch": 0, @@ -142405,7 +144675,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15953295/medium/e02a89a86e9d77662de9ee5abc15e087.jpeg", "preTranslated": 0, - "totalCosts": 690 + "totalCosts": 1342 }, "languages": [ { @@ -142415,22 +144685,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 690 + "totalCosts": 1342 }, "translated": { - "tmMatch": 32, - "default": 658, - "total": 690 + "tmMatch": 45, + "default": 1297, + "total": 1342 }, "targetTranslated": { - "tmMatch": 63, - "default": 1101, - "total": 1164 + "tmMatch": 88, + "default": 2173, + "total": 2261 }, "translatedByMt": { - "tmMatch": 5, + "tmMatch": 7, "default": 2, - "total": 7 + "total": 9 }, "approved": { "tmMatch": 0, @@ -142438,9 +144708,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 32, - "default": 658, - "total": 690 + "tmMatch": 45, + "default": 1297, + "total": 1342 }, "approvalCosts": { "tmMatch": 0, @@ -146474,7 +148744,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png", "preTranslated": 0, - "totalCosts": 22869 + "totalCosts": 24401 }, "languages": [ { @@ -146564,17 +148834,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 16890 + "totalCosts": 18422 }, "translated": { - "tmMatch": 557, - "default": 16333, - "total": 16890 + "tmMatch": 580, + "default": 17842, + "total": 18422 }, "targetTranslated": { - "tmMatch": 533, - "default": 14744, - "total": 15277 + "tmMatch": 551, + "default": 16092, + "total": 16643 }, "translatedByMt": { "tmMatch": 31, @@ -146587,9 +148857,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 557, - "default": 16333, - "total": 16890 + "tmMatch": 580, + "default": 17842, + "total": 18422 }, "approvalCosts": { "tmMatch": 0, @@ -149699,7 +151969,7 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 131964 + "total": 141182 }, "translationCosts": { "tmMatch": 28287, @@ -150244,6 +152514,59 @@ } ] }, + { + "user": { + "id": 15460614, + "username": "Changyong", + "fullName": "Chang (Changyong)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15460614/medium/5caa70b096b64f9f9d40266ba0359ac0.png", + "preTranslated": 0, + "totalCosts": 399 + }, + "languages": [ + { + "language": { + "id": "ko", + "name": "Korean", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 399 + }, + "translated": { + "tmMatch": 9, + "default": 390, + "total": 399 + }, + "targetTranslated": { + "tmMatch": 9, + "default": 279, + "total": 288 + }, + "translatedByMt": { + "tmMatch": 7, + "default": 1, + "total": 8 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 9, + "default": 390, + "total": 399 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14830280, @@ -154794,7 +157117,7 @@ "user": { "id": 15962457, "username": "danimeister", - "fullName": "Dani (danimeister)", + "fullName": "Dani Setia Hardian (danimeister)", "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962457/medium/97c701528b519a4a784b0d6b5f845fb8.jpg", "preTranslated": 0, @@ -158077,6 +160400,59 @@ } ] }, + { + "user": { + "id": 13869465, + "username": "Debika_CKS_P", + "fullName": "Debika (Debika_CKS_P)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13869465/medium/dac50233f4f1f19a42d3ad24568cbfbf_default.png", + "preTranslated": 0, + "totalCosts": 26 + }, + "languages": [ + { + "language": { + "id": "id", + "name": "Indonesian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 26 + }, + "translated": { + "tmMatch": 26, + "default": 0, + "total": 26 + }, + "targetTranslated": { + "tmMatch": 27, + "default": 0, + "total": 27 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 26, + "default": 0, + "total": 26 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14180479, @@ -158382,6 +160758,59 @@ } ] }, + { + "user": { + "id": 15993807, + "username": "biollocover04", + "fullName": "Demon Fargo (biollocover04)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993807/medium/3cf26e50ff32a91a5b5bddd2aea2c61c.jpeg", + "preTranslated": 0, + "totalCosts": 614 + }, + "languages": [ + { + "language": { + "id": "pt-PT", + "name": "Portuguese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 614 + }, + "translated": { + "tmMatch": 1, + "default": 613, + "total": 614 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 719, + "total": 720 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 613, + "total": 614 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14853674, @@ -160391,7 +162820,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15619839/medium/99c14ce4e8161f6b077fa0849ac4c5b0.png", "preTranslated": 0, - "totalCosts": 3904 + "totalCosts": 3923 }, "languages": [ { @@ -160401,17 +162830,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3904 + "totalCosts": 3923 }, "translated": { "tmMatch": 26, - "default": 3878, - "total": 3904 + "default": 3897, + "total": 3923 }, "targetTranslated": { "tmMatch": 26, - "default": 3529, - "total": 3555 + "default": 3547, + "total": 3573 }, "translatedByMt": { "tmMatch": 15, @@ -160425,8 +162854,8 @@ }, "translationCosts": { "tmMatch": 26, - "default": 3878, - "total": 3904 + "default": 3897, + "total": 3923 }, "approvalCosts": { "tmMatch": 0, @@ -162392,7 +164821,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13842283/medium/bbfb9ef4136417577f368ab059d20644.jpeg", "preTranslated": 0, - "totalCosts": 235 + "totalCosts": 250 }, "languages": [ { @@ -162402,17 +164831,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 235 + "totalCosts": 250 }, "translated": { - "tmMatch": 97, - "default": 138, - "total": 235 + "tmMatch": 99, + "default": 151, + "total": 250 }, "targetTranslated": { - "tmMatch": 92, - "default": 130, - "total": 222 + "tmMatch": 94, + "default": 143, + "total": 237 }, "translatedByMt": { "tmMatch": 0, @@ -162425,9 +164854,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 97, - "default": 138, - "total": 235 + "tmMatch": 99, + "default": 151, + "total": 250 }, "approvalCosts": { "tmMatch": 0, @@ -163625,7 +166054,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966607/medium/233013bfe6b35fd53264071d722f63f1.png", "preTranslated": 0, - "totalCosts": 4020 + "totalCosts": 4059 }, "languages": [ { @@ -163635,17 +166064,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4020 + "totalCosts": 4059 }, "translated": { "tmMatch": 1, - "default": 4019, - "total": 4020 + "default": 4058, + "total": 4059 }, "targetTranslated": { "tmMatch": 1, - "default": 4742, - "total": 4743 + "default": 4784, + "total": 4785 }, "translatedByMt": { "tmMatch": 0, @@ -163659,8 +166088,8 @@ }, "translationCosts": { "tmMatch": 1, - "default": 4019, - "total": 4020 + "default": 4058, + "total": 4059 }, "approvalCosts": { "tmMatch": 0, @@ -164089,7 +166518,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg", "preTranslated": 0, - "totalCosts": 37025 + "totalCosts": 37508 }, "languages": [ { @@ -164099,22 +166528,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 36087 + "totalCosts": 36570 }, "translated": { - "tmMatch": 1873, - "default": 34214, - "total": 36087 + "tmMatch": 1887, + "default": 34683, + "total": 36570 }, "targetTranslated": { - "tmMatch": 3006, - "default": 56829, - "total": 59835 + "tmMatch": 3032, + "default": 57620, + "total": 60652 }, "translatedByMt": { - "tmMatch": 56, - "default": 1133, - "total": 1189 + "tmMatch": 63, + "default": 1134, + "total": 1197 }, "approved": { "tmMatch": 0, @@ -164122,9 +166551,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1873, - "default": 34214, - "total": 36087 + "tmMatch": 1887, + "default": 34683, + "total": 36570 }, "approvalCosts": { "tmMatch": 0, @@ -167090,6 +169519,59 @@ } ] }, + { + "user": { + "id": 15998651, + "username": "lampedusa5457", + "fullName": "Eric (lampedusa5457)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15998651/medium/76286dcfa422e913797471149070ab40.jpeg", + "preTranslated": 0, + "totalCosts": 265 + }, + "languages": [ + { + "language": { + "id": "fil", + "name": "Filipino", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 265 + }, + "translated": { + "tmMatch": 175, + "default": 90, + "total": 265 + }, + "targetTranslated": { + "tmMatch": 193, + "default": 108, + "total": 301 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 175, + "default": 90, + "total": 265 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15047729, @@ -167416,7 +169898,7 @@ "userRole": "Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15240064/medium/d382aa4b49660d6e6dbb3c7e3250652b.jpeg", "preTranslated": 0, - "totalCosts": 818 + "totalCosts": 910 }, "languages": [ { @@ -167426,32 +169908,32 @@ "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 818 + "totalCosts": 910 }, "translated": { - "tmMatch": 339, - "default": 479, - "total": 818 + "tmMatch": 344, + "default": 566, + "total": 910 }, "targetTranslated": { - "tmMatch": 331, - "default": 443, - "total": 774 + "tmMatch": 335, + "default": 530, + "total": 865 }, "translatedByMt": { - "tmMatch": 11, + "tmMatch": 13, "default": 52, - "total": 63 + "total": 65 }, "approved": { "tmMatch": 0, "default": 0, - "total": 2187 + "total": 2338 }, "translationCosts": { - "tmMatch": 339, - "default": 479, - "total": 818 + "tmMatch": 344, + "default": 566, + "total": 910 }, "approvalCosts": { "tmMatch": 0, @@ -167892,8 +170374,8 @@ "fullName": "Ethereum.org Team (ethdotorg)", "userRole": "Owner", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13897487/medium/246e50d7e9ccde07088ed892b07a0efd.png", - "preTranslated": 2908304, - "totalCosts": 360927 + "preTranslated": 2912576, + "totalCosts": 361820 }, "languages": [ { @@ -167983,17 +170465,17 @@ "userRole": "Owner", "tmSavings": 0, "preTranslate": 1478, - "totalCosts": 724 + "totalCosts": 727 }, "translated": { - "tmMatch": 701, + "tmMatch": 704, "default": 23, - "total": 724 + "total": 727 }, "targetTranslated": { - "tmMatch": 542, + "tmMatch": 545, "default": 18, - "total": 560 + "total": 563 }, "translatedByMt": { "tmMatch": 0, @@ -168003,12 +170485,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 794 + "total": 798 }, "translationCosts": { - "tmMatch": 701, + "tmMatch": 704, "default": 23, - "total": 724 + "total": 727 }, "approvalCosts": { "tmMatch": 0, @@ -168022,7 +170504,7 @@ "name": "Arabic", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 58382, + "preTranslate": 58390, "totalCosts": 10496 }, "translated": { @@ -168062,18 +170544,18 @@ "name": "Armenian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 1083, - "totalCosts": 47 + "preTranslate": 1759, + "totalCosts": 48 }, "translated": { "tmMatch": 5, - "default": 42, - "total": 47 + "default": 43, + "total": 48 }, "targetTranslated": { "tmMatch": 5, - "default": 40, - "total": 45 + "default": 41, + "total": 46 }, "translatedByMt": { "tmMatch": 0, @@ -168083,12 +170565,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 798 + "total": 799 }, "translationCosts": { "tmMatch": 5, - "default": 42, - "total": 47 + "default": 43, + "total": 48 }, "approvalCosts": { "tmMatch": 0, @@ -168103,17 +170585,17 @@ "userRole": "Owner", "tmSavings": 0, "preTranslate": 2817, - "totalCosts": 46 + "totalCosts": 50 }, "translated": { - "tmMatch": 7, - "default": 39, - "total": 46 + "tmMatch": 8, + "default": 42, + "total": 50 }, "targetTranslated": { - "tmMatch": 7, - "default": 39, - "total": 46 + "tmMatch": 8, + "default": 42, + "total": 50 }, "translatedByMt": { "tmMatch": 1, @@ -168123,12 +170605,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 828 + "total": 832 }, "translationCosts": { - "tmMatch": 7, - "default": 39, - "total": 46 + "tmMatch": 8, + "default": 42, + "total": 50 }, "approvalCosts": { "tmMatch": 0, @@ -168203,7 +170685,7 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1 }, "translationCosts": { "tmMatch": 0, @@ -168222,7 +170704,7 @@ "name": "Bengali", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 4503, + "preTranslate": 6011, "totalCosts": 9564 }, "translated": { @@ -168296,6 +170778,46 @@ "total": 0 } }, + { + "language": { + "id": "bs", + "name": "Bosnian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1 + }, + "translated": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 1 + }, + "translationCosts": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, { "language": { "id": "br-FR", @@ -168342,7 +170864,7 @@ "name": "Bulgarian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 37894, + "preTranslate": 37905, "totalCosts": 1549 }, "translated": { @@ -168422,7 +170944,7 @@ "name": "Catalan", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 42219, + "preTranslate": 42220, "totalCosts": 6394 }, "translated": { @@ -168462,18 +170984,18 @@ "name": "Chinese Simplified", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 180513, - "totalCosts": 20428 + "preTranslate": 180817, + "totalCosts": 20503 }, "translated": { "tmMatch": 10574, - "default": 9854, - "total": 20428 + "default": 9929, + "total": 20503 }, "targetTranslated": { "tmMatch": 16726, - "default": 11707, - "total": 28433 + "default": 11837, + "total": 28563 }, "translatedByMt": { "tmMatch": 0, @@ -168483,12 +171005,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 10178 + "total": 10541 }, "translationCosts": { "tmMatch": 10574, - "default": 9854, - "total": 20428 + "default": 9929, + "total": 20503 }, "approvalCosts": { "tmMatch": 0, @@ -168502,7 +171024,7 @@ "name": "Chinese Traditional", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 141723, + "preTranslate": 141814, "totalCosts": 15655 }, "translated": { @@ -168523,7 +171045,7 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 5368 + "total": 5445 }, "translationCosts": { "tmMatch": 9980, @@ -168542,7 +171064,7 @@ "name": "Croatian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 25292, + "preTranslate": 25293, "totalCosts": 618 }, "translated": { @@ -168582,18 +171104,18 @@ "name": "Czech", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 20367, - "totalCosts": 10457 + "preTranslate": 20372, + "totalCosts": 10460 }, "translated": { "tmMatch": 10221, - "default": 236, - "total": 10457 + "default": 239, + "total": 10460 }, "targetTranslated": { "tmMatch": 10165, - "default": 226, - "total": 10391 + "default": 229, + "total": 10394 }, "translatedByMt": { "tmMatch": 2, @@ -168603,12 +171125,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 2790 + "total": 2796 }, "translationCosts": { "tmMatch": 10221, - "default": 236, - "total": 10457 + "default": 239, + "total": 10460 }, "approvalCosts": { "tmMatch": 0, @@ -168622,7 +171144,7 @@ "name": "Danish", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 9284, + "preTranslate": 9286, "totalCosts": 328 }, "translated": { @@ -168702,7 +171224,7 @@ "name": "Dutch", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 53500, + "preTranslate": 53501, "totalCosts": 9493 }, "translated": { @@ -168823,17 +171345,17 @@ "userRole": "Owner", "tmSavings": 0, "preTranslate": 6042, - "totalCosts": 712 + "totalCosts": 723 }, "translated": { "tmMatch": 624, - "default": 88, - "total": 712 + "default": 99, + "total": 723 }, "targetTranslated": { "tmMatch": 846, - "default": 186, - "total": 1032 + "default": 200, + "total": 1046 }, "translatedByMt": { "tmMatch": 0, @@ -168843,12 +171365,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 1356 + "total": 1367 }, "translationCosts": { "tmMatch": 624, - "default": 88, - "total": 712 + "default": 99, + "total": 723 }, "approvalCosts": { "tmMatch": 0, @@ -168902,7 +171424,7 @@ "name": "French", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 167724, + "preTranslate": 167817, "totalCosts": 12474 }, "translated": { @@ -168923,7 +171445,7 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 9353 + "total": 9424 }, "translationCosts": { "tmMatch": 10829, @@ -169022,18 +171544,18 @@ "name": "German", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 150455, - "totalCosts": 12094 + "preTranslate": 150564, + "totalCosts": 12114 }, "translated": { "tmMatch": 9383, - "default": 2711, - "total": 12094 + "default": 2731, + "total": 12114 }, "targetTranslated": { "tmMatch": 9119, - "default": 2626, - "total": 11745 + "default": 2647, + "total": 11766 }, "translatedByMt": { "tmMatch": 1, @@ -169043,12 +171565,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 4881 + "total": 4983 }, "translationCosts": { "tmMatch": 9383, - "default": 2711, - "total": 12094 + "default": 2731, + "total": 12114 }, "approvalCosts": { "tmMatch": 0, @@ -169102,7 +171624,7 @@ "name": "Greek", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 55277, + "preTranslate": 55285, "totalCosts": 8417 }, "translated": { @@ -169262,18 +171784,18 @@ "name": "Hindi", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 20918, - "totalCosts": 5866 + "preTranslate": 20920, + "totalCosts": 5877 }, "translated": { "tmMatch": 5674, - "default": 192, - "total": 5866 + "default": 203, + "total": 5877 }, "targetTranslated": { "tmMatch": 9091, - "default": 274, - "total": 9365 + "default": 298, + "total": 9389 }, "translatedByMt": { "tmMatch": 0, @@ -169283,12 +171805,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 1915 + "total": 1968 }, "translationCosts": { "tmMatch": 5674, - "default": 192, - "total": 5866 + "default": 203, + "total": 5877 }, "approvalCosts": { "tmMatch": 0, @@ -169302,18 +171824,18 @@ "name": "Hungarian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 83467, - "totalCosts": 5430 + "preTranslate": 83477, + "totalCosts": 5441 }, "translated": { "tmMatch": 5335, - "default": 95, - "total": 5430 + "default": 106, + "total": 5441 }, "targetTranslated": { "tmMatch": 5076, - "default": 84, - "total": 5160 + "default": 100, + "total": 5176 }, "translatedByMt": { "tmMatch": 0, @@ -169323,12 +171845,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 1399 + "total": 1410 }, "translationCosts": { "tmMatch": 5335, - "default": 95, - "total": 5430 + "default": 106, + "total": 5441 }, "approvalCosts": { "tmMatch": 0, @@ -169343,17 +171865,17 @@ "userRole": "Owner", "tmSavings": 0, "preTranslate": 2976, - "totalCosts": 6673 + "totalCosts": 6683 }, "translated": { "tmMatch": 6586, - "default": 87, - "total": 6673 + "default": 97, + "total": 6683 }, "targetTranslated": { "tmMatch": 7546, - "default": 88, - "total": 7634 + "default": 99, + "total": 7645 }, "translatedByMt": { "tmMatch": 0, @@ -169363,12 +171885,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 3927 + "total": 3940 }, "translationCosts": { "tmMatch": 6586, - "default": 87, - "total": 6673 + "default": 97, + "total": 6683 }, "approvalCosts": { "tmMatch": 0, @@ -169382,7 +171904,7 @@ "name": "Indonesian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 136320, + "preTranslate": 136356, "totalCosts": 11478 }, "translated": { @@ -169403,7 +171925,7 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 4768 + "total": 4792 }, "translationCosts": { "tmMatch": 9770, @@ -169422,7 +171944,7 @@ "name": "Italian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 181577, + "preTranslate": 181881, "totalCosts": 13431 }, "translated": { @@ -169443,7 +171965,7 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 8164 + "total": 8458 }, "translationCosts": { "tmMatch": 11964, @@ -169462,7 +171984,7 @@ "name": "Japanese", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 152331, + "preTranslate": 152488, "totalCosts": 12704 }, "translated": { @@ -169483,7 +172005,7 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 4950 + "total": 5082 }, "translationCosts": { "tmMatch": 10429, @@ -169622,7 +172144,7 @@ "name": "Korean", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 45506, + "preTranslate": 45519, "totalCosts": 14391 }, "translated": { @@ -169983,17 +172505,17 @@ "userRole": "Owner", "tmSavings": 0, "preTranslate": 2708, - "totalCosts": 107 + "totalCosts": 110 }, "translated": { "tmMatch": 33, - "default": 74, - "total": 107 + "default": 77, + "total": 110 }, "targetTranslated": { "tmMatch": 33, - "default": 89, - "total": 122 + "default": 92, + "total": 125 }, "translatedByMt": { "tmMatch": 0, @@ -170003,12 +172525,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 981 + "total": 984 }, "translationCosts": { "tmMatch": 33, - "default": 74, - "total": 107 + "default": 77, + "total": 110 }, "approvalCosts": { "tmMatch": 0, @@ -170103,32 +172625,32 @@ "userRole": "Owner", "tmSavings": 0, "preTranslate": 1281, - "totalCosts": 39 + "totalCosts": 74 }, "translated": { - "tmMatch": 0, - "default": 39, - "total": 39 + "tmMatch": 4, + "default": 70, + "total": 74 }, "targetTranslated": { - "tmMatch": 0, - "default": 39, - "total": 39 + "tmMatch": 4, + "default": 75, + "total": 79 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 74 }, "translationCosts": { - "tmMatch": 0, - "default": 39, - "total": 39 + "tmMatch": 4, + "default": 70, + "total": 74 }, "approvalCosts": { "tmMatch": 0, @@ -170222,18 +172744,18 @@ "name": "Persian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 80861, - "totalCosts": 6870 + "preTranslate": 80874, + "totalCosts": 6917 }, "translated": { - "tmMatch": 6427, - "default": 443, - "total": 6870 + "tmMatch": 6433, + "default": 484, + "total": 6917 }, "targetTranslated": { - "tmMatch": 7572, - "default": 473, - "total": 8045 + "tmMatch": 7578, + "default": 522, + "total": 8100 }, "translatedByMt": { "tmMatch": 3, @@ -170243,12 +172765,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 3571 + "total": 3618 }, "translationCosts": { - "tmMatch": 6427, - "default": 443, - "total": 6870 + "tmMatch": 6433, + "default": 484, + "total": 6917 }, "approvalCosts": { "tmMatch": 0, @@ -170262,18 +172784,18 @@ "name": "Polish", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 99170, - "totalCosts": 8489 + "preTranslate": 99192, + "totalCosts": 8517 }, "translated": { "tmMatch": 6769, - "default": 1720, - "total": 8489 + "default": 1748, + "total": 8517 }, "targetTranslated": { "tmMatch": 6422, - "default": 1627, - "total": 8049 + "default": 1653, + "total": 8075 }, "translatedByMt": { "tmMatch": 4, @@ -170283,12 +172805,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 4448 + "total": 5665 }, "translationCosts": { "tmMatch": 6769, - "default": 1720, - "total": 8489 + "default": 1748, + "total": 8517 }, "approvalCosts": { "tmMatch": 0, @@ -170302,7 +172824,7 @@ "name": "Portuguese", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 12543, + "preTranslate": 12549, "totalCosts": 8956 }, "translated": { @@ -170342,7 +172864,7 @@ "name": "Portuguese, Brazilian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 161403, + "preTranslate": 161561, "totalCosts": 12980 }, "translated": { @@ -170363,7 +172885,7 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 7294 + "total": 7305 }, "translationCosts": { "tmMatch": 10659, @@ -170422,7 +172944,7 @@ "name": "Romanian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 122306, + "preTranslate": 122316, "totalCosts": 8817 }, "translated": { @@ -170462,7 +172984,7 @@ "name": "Russian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 110122, + "preTranslate": 110215, "totalCosts": 10897 }, "translated": { @@ -170483,7 +173005,7 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 5087 + "total": 5158 }, "translationCosts": { "tmMatch": 9167, @@ -170662,7 +173184,7 @@ "name": "Slovak", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 8333, + "preTranslate": 8335, "totalCosts": 9347 }, "translated": { @@ -170702,7 +173224,7 @@ "name": "Slovenian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 75911, + "preTranslate": 75920, "totalCosts": 9832 }, "translated": { @@ -170782,18 +173304,18 @@ "name": "Spanish (Modern)", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 159628, - "totalCosts": 16634 + "preTranslate": 159919, + "totalCosts": 16923 }, "translated": { "tmMatch": 10873, - "default": 5761, - "total": 16634 + "default": 6050, + "total": 16923 }, "targetTranslated": { "tmMatch": 12119, - "default": 6017, - "total": 18136 + "default": 6328, + "total": 18447 }, "translatedByMt": { "tmMatch": 0, @@ -170803,12 +173325,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 8740 + "total": 9349 }, "translationCosts": { "tmMatch": 10873, - "default": 5761, - "total": 16634 + "default": 6050, + "total": 16923 }, "approvalCosts": { "tmMatch": 0, @@ -170862,7 +173384,7 @@ "name": "Swedish", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 14409, + "preTranslate": 14410, "totalCosts": 9444 }, "translated": { @@ -170942,7 +173464,7 @@ "name": "Tajik", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 790, + "preTranslate": 791, "totalCosts": 242 }, "translated": { @@ -171062,7 +173584,7 @@ "name": "Thai", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 8891, + "preTranslate": 8893, "totalCosts": 5638 }, "translated": { @@ -171102,18 +173624,18 @@ "name": "Turkish", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 148122, - "totalCosts": 9839 + "preTranslate": 148399, + "totalCosts": 10065 }, "translated": { - "tmMatch": 8860, - "default": 979, - "total": 9839 + "tmMatch": 8863, + "default": 1202, + "total": 10065 }, "targetTranslated": { - "tmMatch": 8255, - "default": 767, - "total": 9022 + "tmMatch": 8258, + "default": 969, + "total": 9227 }, "translatedByMt": { "tmMatch": 6, @@ -171123,12 +173645,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 3989 + "total": 4508 }, "translationCosts": { - "tmMatch": 8860, - "default": 979, - "total": 9839 + "tmMatch": 8863, + "default": 1202, + "total": 10065 }, "approvalCosts": { "tmMatch": 0, @@ -171143,17 +173665,17 @@ "userRole": "Owner", "tmSavings": 0, "preTranslate": 1190, - "totalCosts": 3 + "totalCosts": 6 }, "translated": { "tmMatch": 2, - "default": 1, - "total": 3 + "default": 4, + "total": 6 }, "targetTranslated": { "tmMatch": 2, - "default": 1, - "total": 3 + "default": 4, + "total": 6 }, "translatedByMt": { "tmMatch": 0, @@ -171163,12 +173685,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 593 + "total": 596 }, "translationCosts": { "tmMatch": 2, - "default": 1, - "total": 3 + "default": 4, + "total": 6 }, "approvalCosts": { "tmMatch": 0, @@ -171182,18 +173704,18 @@ "name": "Ukrainian", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 126378, - "totalCosts": 7917 + "preTranslate": 126414, + "totalCosts": 8029 }, "translated": { "tmMatch": 5769, - "default": 2148, - "total": 7917 + "default": 2260, + "total": 8029 }, "targetTranslated": { "tmMatch": 5850, - "default": 1846, - "total": 7696 + "default": 1957, + "total": 7807 }, "translatedByMt": { "tmMatch": 0, @@ -171203,12 +173725,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 2871 + "total": 2994 }, "translationCosts": { "tmMatch": 5769, - "default": 2148, - "total": 7917 + "default": 2260, + "total": 8029 }, "approvalCosts": { "tmMatch": 0, @@ -171342,7 +173864,7 @@ "name": "Vietnamese", "userRole": "Owner", "tmSavings": 0, - "preTranslate": 37719, + "preTranslate": 37730, "totalCosts": 6055 }, "translated": { @@ -171363,7 +173885,7 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 2963 + "total": 2966 }, "translationCosts": { "tmMatch": 5351, @@ -172717,6 +175239,112 @@ } ] }, + { + "user": { + "id": 16016215, + "username": "Falehfale", + "fullName": "Falehfale", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16016215/medium/8b826e643c204fc2e4e2e4f4279d8927.png", + "preTranslated": 0, + "totalCosts": 232 + }, + "languages": [ + { + "language": { + "id": "ar", + "name": "Arabic", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 232 + }, + "translated": { + "tmMatch": 4, + "default": 228, + "total": 232 + }, + "targetTranslated": { + "tmMatch": 2, + "default": 206, + "total": 208 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 4, + "default": 228, + "total": 232 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 16022458, + "username": "Falehfaleh", + "fullName": "Falehfaleh", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16022458/medium/73a24aa3d7ceefe45c5a9a346d3ab1fd.png", + "preTranslated": 0, + "totalCosts": 39 + }, + "languages": [ + { + "language": { + "id": "ar", + "name": "Arabic", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 39 + }, + "translated": { + "tmMatch": 0, + "default": 39, + "total": 39 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 13, + "total": 13 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 39, + "total": 39 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14401162, @@ -172929,6 +175557,99 @@ } ] }, + { + "user": { + "id": 16016629, + "username": "farhadhashimov", + "fullName": "Farhad Hashimov (farhadhashimov)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16016629/medium/aaff09e3b204facc4da78652554ec80b.png", + "preTranslated": 0, + "totalCosts": 17 + }, + "languages": [ + { + "language": { + "id": "az", + "name": "Azerbaijani", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 4 + }, + "translated": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 8, + "total": 8 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 13 + }, + "translated": { + "tmMatch": 0, + "default": 13, + "total": 13 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 17, + "total": 17 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 13, + "total": 13 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15054259, @@ -172982,6 +175703,59 @@ } ] }, + { + "user": { + "id": 16004581, + "username": "FarshidFardiShekarab", + "fullName": "Farshid F.Shekarab (Farshid) (FarshidFardiShekarab)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004581/medium/c6ac10b3f91b7b584a9ae8d10ec69592.jpeg", + "preTranslated": 0, + "totalCosts": 3 + }, + "languages": [ + { + "language": { + "id": "fa", + "name": "Persian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 3 + }, + "translated": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 1, + "total": 1 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14737838, @@ -174779,7 +177553,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843833/medium/d9afa5c66a59b8166143dd4e1cca0630.jpeg", "preTranslated": 0, - "totalCosts": 7611 + "totalCosts": 10368 }, "languages": [ { @@ -174789,22 +177563,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7611 + "totalCosts": 10368 }, "translated": { - "tmMatch": 50, - "default": 7561, - "total": 7611 + "tmMatch": 56, + "default": 10312, + "total": 10368 }, "targetTranslated": { - "tmMatch": 44, - "default": 6876, - "total": 6920 + "tmMatch": 50, + "default": 9247, + "total": 9297 }, "translatedByMt": { - "tmMatch": 11, + "tmMatch": 17, "default": 718, - "total": 729 + "total": 735 }, "approved": { "tmMatch": 0, @@ -174812,9 +177586,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 50, - "default": 7561, - "total": 7611 + "tmMatch": 56, + "default": 10312, + "total": 10368 }, "approvalCosts": { "tmMatch": 0, @@ -175919,7 +178693,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15386722/medium/d45a14868eeb521fcff121613eaeee3c.png", "preTranslated": 0, - "totalCosts": 1043 + "totalCosts": 2419 }, "languages": [ { @@ -175929,22 +178703,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1043 + "totalCosts": 2419 }, "translated": { - "tmMatch": 0, - "default": 1043, - "total": 1043 + "tmMatch": 11, + "default": 2408, + "total": 2419 }, "targetTranslated": { - "tmMatch": 0, - "default": 1600, - "total": 1600 + "tmMatch": 15, + "default": 3679, + "total": 3694 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 6, + "total": 6 }, "approved": { "tmMatch": 0, @@ -175952,9 +178726,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 1043, - "total": 1043 + "tmMatch": 11, + "default": 2408, + "total": 2419 }, "approvalCosts": { "tmMatch": 0, @@ -176322,6 +179096,59 @@ } ] }, + { + "user": { + "id": 15994893, + "username": "hackerv27", + "fullName": "Furong You (hackerv27)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15994893/medium/d9e058521f9617f7e935530fa5999895.jpeg", + "preTranslated": 0, + "totalCosts": 53 + }, + "languages": [ + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 53 + }, + "translated": { + "tmMatch": 0, + "default": 53, + "total": 53 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 99, + "total": 99 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 53, + "total": 53 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15638883, @@ -177955,12 +180782,12 @@ { "user": { "id": 14568334, - "username": "norhorn", - "fullName": "George Kitsoukakis (norhorn)", + "username": "mr_giorgos", + "fullName": "George Kitsoukakis (mr_giorgos)", "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg", "preTranslated": 0, - "totalCosts": 131962 + "totalCosts": 136440 }, "languages": [ { @@ -178170,32 +180997,32 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 131592 + "totalCosts": 136070 }, "translated": { - "tmMatch": 8341, - "default": 123251, - "total": 131592 + "tmMatch": 8427, + "default": 127643, + "total": 136070 }, "targetTranslated": { - "tmMatch": 9119, - "default": 130645, - "total": 139764 + "tmMatch": 9209, + "default": 135311, + "total": 144520 }, "translatedByMt": { - "tmMatch": 303, - "default": 4228, - "total": 4531 + "tmMatch": 305, + "default": 4230, + "total": 4535 }, "approved": { "tmMatch": 0, "default": 0, - "total": 93576 + "total": 117225 }, "translationCosts": { - "tmMatch": 8341, - "default": 123251, - "total": 131592 + "tmMatch": 8427, + "default": 127643, + "total": 136070 }, "approvalCosts": { "tmMatch": 0, @@ -181036,7 +183863,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15250968/medium/fe66daa0393af122ae758d1cf2b0738d_default.png", "preTranslated": 0, - "totalCosts": 12902 + "totalCosts": 55805 }, "languages": [ { @@ -181046,17 +183873,17 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12902 + "totalCosts": 55805 }, "translated": { - "tmMatch": 3506, - "default": 9396, - "total": 12902 + "tmMatch": 6665, + "default": 49140, + "total": 55805 }, "targetTranslated": { - "tmMatch": 4285, - "default": 11257, - "total": 15542 + "tmMatch": 7977, + "default": 59425, + "total": 67402 }, "translatedByMt": { "tmMatch": 0, @@ -181066,12 +183893,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 15223 + "total": 74937 }, "translationCosts": { - "tmMatch": 3506, - "default": 9396, - "total": 12902 + "tmMatch": 6665, + "default": 49140, + "total": 55805 }, "approvalCosts": { "tmMatch": 0, @@ -184142,6 +186969,59 @@ } ] }, + { + "user": { + "id": 15993745, + "username": "hello.290462", + "fullName": "Hello Mobile (hello.290462)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993745/medium/5ef7f4587df1b2641029dc9f6b6326a3.png", + "preTranslated": 0, + "totalCosts": 22 + }, + "languages": [ + { + "language": { + "id": "th", + "name": "Thai", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 22 + }, + "translated": { + "tmMatch": 0, + "default": 22, + "total": 22 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 22, + "total": 22 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 22, + "total": 22 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14678164, @@ -184871,6 +187751,59 @@ } ] }, + { + "user": { + "id": 13554898, + "username": "heyxyz", + "fullName": "Hey.xyz (heyxyz)", + "userRole": "", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13554898/medium/353aaf6ff5c46d3406a27fb1a5d3e3d9.jpg", + "preTranslated": 0, + "totalCosts": 1 + }, + "languages": [ + { + "language": { + "id": "ta", + "name": "Tamil", + "userRole": "Limited Access", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1 + }, + "translated": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "targetTranslated": { + "tmMatch": 2, + "default": 0, + "total": 2 + }, + "translatedByMt": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14880056, @@ -185195,9 +188128,9 @@ "username": "HiroyukiNaito", "fullName": "Hiroyuki Naito (HiroyukiNaito)", "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/10118cb6ff27d174a5170cb75ff1f436.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg", "preTranslated": 0, - "totalCosts": 213101 + "totalCosts": 221576 }, "languages": [ { @@ -185207,22 +188140,22 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 213099 + "totalCosts": 221574 }, "translated": { - "tmMatch": 17769, - "default": 195330, - "total": 213099 + "tmMatch": 17962, + "default": 203612, + "total": 221574 }, "targetTranslated": { - "tmMatch": 48977, - "default": 538274, - "total": 587251 + "tmMatch": 49315, + "default": 561345, + "total": 610660 }, "translatedByMt": { - "tmMatch": 161, - "default": 6432, - "total": 6593 + "tmMatch": 164, + "default": 6436, + "total": 6600 }, "approved": { "tmMatch": 0, @@ -185230,9 +188163,9 @@ "total": 6096 }, "translationCosts": { - "tmMatch": 17769, - "default": 195330, - "total": 213099 + "tmMatch": 17962, + "default": 203612, + "total": 221574 }, "approvalCosts": { "tmMatch": 0, @@ -185799,6 +188732,59 @@ } ] }, + { + "user": { + "id": 16011121, + "username": "hugodemenez", + "fullName": "Hugo Demenez (hugodemenez)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16011121/medium/8a5f621a2be269a1dcfb5a56e80cdb46.png", + "preTranslated": 0, + "totalCosts": 66 + }, + "languages": [ + { + "language": { + "id": "fr", + "name": "French", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 66 + }, + "translated": { + "tmMatch": 0, + "default": 66, + "total": 66 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 72, + "total": 72 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 66, + "total": 66 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14973471, @@ -186019,7 +189005,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg", "preTranslated": 0, - "totalCosts": 88293 + "totalCosts": 89080 }, "languages": [ { @@ -186029,17 +189015,17 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 88184 + "totalCosts": 88971 }, "translated": { "tmMatch": 1846, - "default": 86338, - "total": 88184 + "default": 87125, + "total": 88971 }, "targetTranslated": { "tmMatch": 1847, - "default": 89377, - "total": 91224 + "default": 90175, + "total": 92022 }, "translatedByMt": { "tmMatch": 378, @@ -186049,12 +189035,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 826 + "total": 832 }, "translationCosts": { "tmMatch": 1846, - "default": 86338, - "total": 88184 + "default": 87125, + "total": 88971 }, "approvalCosts": { "tmMatch": 0, @@ -186383,6 +189369,59 @@ } ] }, + { + "user": { + "id": 15993695, + "username": "imsohuy", + "fullName": "Huy Nguyen (imsohuy)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993695/medium/535448436d72e283ccfe8c100b189c41.jpeg", + "preTranslated": 0, + "totalCosts": 32 + }, + "languages": [ + { + "language": { + "id": "vi", + "name": "Vietnamese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 32 + }, + "translated": { + "tmMatch": 0, + "default": 32, + "total": 32 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 43, + "total": 43 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 32, + "total": 32 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14033202, @@ -188225,6 +191264,59 @@ } ] }, + { + "user": { + "id": 15992039, + "username": "isgoingtozero", + "fullName": "IsGoing ToZero (isgoingtozero)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992039/medium/c2972e6f45c34e1982fa7a4e7627c85e.jpg", + "preTranslated": 0, + "totalCosts": 670 + }, + "languages": [ + { + "language": { + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 670 + }, + "translated": { + "tmMatch": 67, + "default": 603, + "total": 670 + }, + "targetTranslated": { + "tmMatch": 71, + "default": 630, + "total": 701 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 67, + "default": 603, + "total": 670 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15919231, @@ -190598,6 +193690,59 @@ } ] }, + { + "user": { + "id": 15992965, + "username": "jamall11337", + "fullName": "Jakub Halouzka (jamall11337)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992965/medium/43eadefa0e425bc47e30c0445d64ef7b.jpeg", + "preTranslated": 0, + "totalCosts": 40 + }, + "languages": [ + { + "language": { + "id": "cs", + "name": "Czech", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 40 + }, + "translated": { + "tmMatch": 0, + "default": 40, + "total": 40 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 47, + "total": 47 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 40, + "total": 40 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15179948, @@ -195311,7 +198456,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg", "preTranslated": 0, - "totalCosts": 76345 + "totalCosts": 77483 }, "languages": [ { @@ -195321,17 +198466,17 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 76345 + "totalCosts": 77483 }, "translated": { - "tmMatch": 2297, - "default": 74048, - "total": 76345 + "tmMatch": 2325, + "default": 75158, + "total": 77483 }, "targetTranslated": { - "tmMatch": 2273, - "default": 71929, - "total": 74202 + "tmMatch": 2303, + "default": 73070, + "total": 75373 }, "translatedByMt": { "tmMatch": 128, @@ -195341,12 +198486,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 1257 + "total": 1888 }, "translationCosts": { - "tmMatch": 2297, - "default": 74048, - "total": 76345 + "tmMatch": 2325, + "default": 75158, + "total": 77483 }, "approvalCosts": { "tmMatch": 0, @@ -199796,6 +202941,59 @@ } ] }, + { + "user": { + "id": 16024032, + "username": "doughnut-hole", + "fullName": "KAZUHO Ishida (doughnut-hole)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16024032/medium/46c720939c58ca51610382068096fb3c.png", + "preTranslated": 0, + "totalCosts": 34 + }, + "languages": [ + { + "language": { + "id": "ja", + "name": "Japanese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 34 + }, + "translated": { + "tmMatch": 0, + "default": 34, + "total": 34 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 106, + "total": 106 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 34, + "total": 34 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15916489, @@ -205238,7 +208436,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png", "preTranslated": 0, - "totalCosts": 6824 + "totalCosts": 8025 }, "languages": [ { @@ -205248,17 +208446,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 6824 + "totalCosts": 8025 }, "translated": { - "tmMatch": 23, - "default": 6801, - "total": 6824 + "tmMatch": 25, + "default": 8000, + "total": 8025 }, "targetTranslated": { - "tmMatch": 20, - "default": 5040, - "total": 5060 + "tmMatch": 22, + "default": 5920, + "total": 5942 }, "translatedByMt": { "tmMatch": 4, @@ -205271,9 +208469,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 23, - "default": 6801, - "total": 6824 + "tmMatch": 25, + "default": 8000, + "total": 8025 }, "approvalCosts": { "tmMatch": 0, @@ -205972,6 +209170,59 @@ } ] }, + { + "user": { + "id": 16012093, + "username": "Laumvz", + "fullName": "Laura Vazquez (Laumvz)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16012093/medium/f6916fbc165d8d25a21c7c5cb794358c_default.png", + "preTranslated": 0, + "totalCosts": 46 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 46 + }, + "translated": { + "tmMatch": 0, + "default": 46, + "total": 46 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 56, + "total": 56 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 46, + "total": 46 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15226228, @@ -206555,59 +209806,6 @@ } ] }, - { - "user": { - "id": 13554898, - "username": "lenster", - "fullName": "Lenster (lenster)", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13554898/medium/09273e8c88ce5ab255f3f718f07c2ea4.png", - "preTranslated": 0, - "totalCosts": 1 - }, - "languages": [ - { - "language": { - "id": "ta", - "name": "Tamil", - "userRole": "Limited Access", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 1 - }, - "translated": { - "tmMatch": 1, - "default": 0, - "total": 1 - }, - "targetTranslated": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "translatedByMt": { - "tmMatch": 1, - "default": 0, - "total": 1 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 1, - "default": 0, - "total": 1 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, { "user": { "id": 14790502, @@ -213937,6 +217135,59 @@ } ] }, + { + "user": { + "id": 16020648, + "username": "zbr790", + "fullName": "M ZUBAIR RASHEED (zbr790)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16020648/medium/a0b364ba59a2beef95b163c9f1192916.jpeg", + "preTranslated": 0, + "totalCosts": 2 + }, + "languages": [ + { + "language": { + "id": "sr-CS", + "name": "Serbian (Latin)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 2 + }, + "translated": { + "tmMatch": 0, + "default": 2, + "total": 2 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 2, + "total": 2 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15420194, @@ -214316,7 +217567,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg", "preTranslated": 0, - "totalCosts": 82295 + "totalCosts": 82912 }, "languages": [ { @@ -214326,17 +217577,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 82295 + "totalCosts": 82912 }, "translated": { "tmMatch": 250, - "default": 82045, - "total": 82295 + "default": 82662, + "total": 82912 }, "targetTranslated": { "tmMatch": 298, - "default": 96776, - "total": 97074 + "default": 97415, + "total": 97713 }, "translatedByMt": { "tmMatch": 0, @@ -214350,8 +217601,8 @@ }, "translationCosts": { "tmMatch": 250, - "default": 82045, - "total": 82295 + "default": 82662, + "total": 82912 }, "approvalCosts": { "tmMatch": 0, @@ -215164,7 +218415,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947697/medium/6d060369501296118d0d9155a941096a.jpeg", "preTranslated": 0, - "totalCosts": 3413 + "totalCosts": 3850 }, "languages": [ { @@ -215174,17 +218425,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3413 + "totalCosts": 3850 }, "translated": { "tmMatch": 14, - "default": 3399, - "total": 3413 + "default": 3836, + "total": 3850 }, "targetTranslated": { "tmMatch": 18, - "default": 4238, - "total": 4256 + "default": 4770, + "total": 4788 }, "translatedByMt": { "tmMatch": 0, @@ -215198,8 +218449,8 @@ }, "translationCosts": { "tmMatch": 14, - "default": 3399, - "total": 3413 + "default": 3836, + "total": 3850 }, "approvalCosts": { "tmMatch": 0, @@ -217952,6 +221203,59 @@ } ] }, + { + "user": { + "id": 16008309, + "username": "mariaskv", + "fullName": "Maria Skevofylaka (mariaskv)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16008309/medium/4b2446224e807441d2d2de8f62d5fac5.jpeg", + "preTranslated": 0, + "totalCosts": 1060 + }, + "languages": [ + { + "language": { + "id": "el", + "name": "Greek", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1060 + }, + "translated": { + "tmMatch": 0, + "default": 1060, + "total": 1060 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 1185, + "total": 1185 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 1060, + "total": 1060 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14758532, @@ -222074,6 +225378,59 @@ } ] }, + { + "user": { + "id": 15997485, + "username": "akifsefer9", + "fullName": "Mehmet Sahin (akifsefer9)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15997485/medium/0039628a06c8949d7815b4d6176486ec.png", + "preTranslated": 0, + "totalCosts": 26 + }, + "languages": [ + { + "language": { + "id": "tr", + "name": "Turkish", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 26 + }, + "translated": { + "tmMatch": 0, + "default": 26, + "total": 26 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 24, + "total": 24 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 26, + "total": 26 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 13525497, @@ -224738,6 +228095,59 @@ } ] }, + { + "user": { + "id": 15775655, + "username": "missionsaturn", + "fullName": "MissionSaturn (missionsaturn)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15775655/medium/af33e509515bd2c20fa54ddbffa2e8b5.jpg", + "preTranslated": 0, + "totalCosts": 6 + }, + "languages": [ + { + "language": { + "id": "th", + "name": "Thai", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 6 + }, + "translated": { + "tmMatch": 0, + "default": 6, + "total": 6 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 6, + "total": 6 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15649965, @@ -225414,6 +228824,59 @@ } ] }, + { + "user": { + "id": 16001243, + "username": "0xArkonomi", + "fullName": "Mohammad Mahdi Keshavarz (0xArkonomi)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16001243/medium/b75b58e1e84d60e633167eb068b1253e.jpg", + "preTranslated": 0, + "totalCosts": 896 + }, + "languages": [ + { + "language": { + "id": "fa", + "name": "Persian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 896 + }, + "translated": { + "tmMatch": 116, + "default": 780, + "total": 896 + }, + "targetTranslated": { + "tmMatch": 144, + "default": 985, + "total": 1129 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 116, + "default": 780, + "total": 896 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14709210, @@ -232099,8 +235562,8 @@ { "user": { "id": 15031079, - "username": "jvxon", - "fullName": "Nhơn Võ (jvxon)", + "username": "TedVo", + "fullName": "Nhơn Võ (TedVo)", "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15031079/medium/1099cf15f2a152105f5014bb6e748954.jpeg", "preTranslated": 0, @@ -233999,7 +237462,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967513/medium/b50f5902d42c3ec14ca4575e9b1dc504.jpeg", "preTranslated": 0, - "totalCosts": 455 + "totalCosts": 456 }, "languages": [ { @@ -234009,22 +237472,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 455 + "totalCosts": 456 }, "translated": { - "tmMatch": 0, + "tmMatch": 1, "default": 455, - "total": 455 + "total": 456 }, "targetTranslated": { - "tmMatch": 0, + "tmMatch": 1, "default": 559, - "total": 559 + "total": 560 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 1, "default": 0, - "total": 0 + "total": 1 }, "approved": { "tmMatch": 0, @@ -234032,9 +237495,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, + "tmMatch": 1, "default": 455, - "total": 455 + "total": 456 }, "approvalCosts": { "tmMatch": 0, @@ -234688,7 +238151,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914449/medium/8d2590e4c534ca5125f1d70b6d9c71cc.jpeg", "preTranslated": 0, - "totalCosts": 8028 + "totalCosts": 8072 }, "languages": [ { @@ -234698,17 +238161,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8028 + "totalCosts": 8072 }, "translated": { "tmMatch": 19, - "default": 8009, - "total": 8028 + "default": 8053, + "total": 8072 }, "targetTranslated": { "tmMatch": 17, - "default": 10152, - "total": 10169 + "default": 10197, + "total": 10214 }, "translatedByMt": { "tmMatch": 0, @@ -234722,8 +238185,8 @@ }, "translationCosts": { "tmMatch": 19, - "default": 8009, - "total": 8028 + "default": 8053, + "total": 8072 }, "approvalCosts": { "tmMatch": 0, @@ -235311,7 +238774,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787370/medium/9bb8a2d0d244e04f14b523e895b08100.jpg", "preTranslated": 0, - "totalCosts": 19443 + "totalCosts": 22486 }, "languages": [ { @@ -235321,22 +238784,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 19443 + "totalCosts": 22486 }, "translated": { - "tmMatch": 158, - "default": 19285, - "total": 19443 + "tmMatch": 167, + "default": 22319, + "total": 22486 }, "targetTranslated": { - "tmMatch": 159, - "default": 16625, - "total": 16784 + "tmMatch": 168, + "default": 19282, + "total": 19450 }, "translatedByMt": { - "tmMatch": 73, - "default": 16, - "total": 89 + "tmMatch": 74, + "default": 18, + "total": 92 }, "approved": { "tmMatch": 0, @@ -235344,9 +238807,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 158, - "default": 19285, - "total": 19443 + "tmMatch": 167, + "default": 22319, + "total": 22486 }, "approvalCosts": { "tmMatch": 0, @@ -237216,7 +240679,7 @@ "id": 13997701, "username": "i8008", "fullName": "Paul (i8008) (i8008)", - "userRole": "Translator", + "userRole": "", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13997701/medium/28a51e6f02f22b60225457043b3a8f6b.png", "preTranslated": 0, "totalCosts": 587 @@ -237226,7 +240689,7 @@ "language": { "id": "fr", "name": "French", - "userRole": "Translator", + "userRole": "Limited Access", "tmSavings": 0, "preTranslate": 0, "totalCosts": 587 @@ -243584,7 +247047,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14899686/medium/5e46a234abebd1891fff6e8fd6af856b_default.png", "preTranslated": 0, - "totalCosts": 141 + "totalCosts": 183 }, "languages": [ { @@ -243626,6 +247089,46 @@ "default": 0, "total": 0 } + }, + { + "language": { + "id": "or", + "name": "Odia", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 42 + }, + "translated": { + "tmMatch": 6, + "default": 36, + "total": 42 + }, + "targetTranslated": { + "tmMatch": 12, + "default": 57, + "total": 69 + }, + "translatedByMt": { + "tmMatch": 2, + "default": 2, + "total": 4 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 6, + "default": 36, + "total": 42 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } } ] }, @@ -244432,7 +247935,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954333/medium/589465a479a53254001094f2a4322a0f.png", "preTranslated": 0, - "totalCosts": 736 + "totalCosts": 1340 }, "languages": [ { @@ -244442,17 +247945,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 736 + "totalCosts": 1340 }, "translated": { "tmMatch": 0, - "default": 736, - "total": 736 + "default": 1340, + "total": 1340 }, "targetTranslated": { "tmMatch": 0, - "default": 1223, - "total": 1223 + "default": 2217, + "total": 2217 }, "translatedByMt": { "tmMatch": 0, @@ -244466,8 +247969,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 736, - "total": 736 + "default": 1340, + "total": 1340 }, "approvalCosts": { "tmMatch": 0, @@ -245527,8 +249030,8 @@ { "user": { "id": 14158555, - "username": "Tested", - "fullName": "Raffy (Tested)", + "username": "Dharma_Buddha", + "fullName": "Raffy (Dharma_Buddha)", "userRole": "", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14158555/medium/b86cc3992311f7cb381f5a20d087929d.png", "preTranslated": 0, @@ -246116,7 +249619,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15417292/medium/8ffb6e3dcf9f571cdce495e92d212419.png", "preTranslated": 0, - "totalCosts": 206 + "totalCosts": 240 }, "languages": [ { @@ -246126,17 +249629,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 206 + "totalCosts": 240 }, "translated": { "tmMatch": 0, - "default": 206, - "total": 206 + "default": 240, + "total": 240 }, "targetTranslated": { "tmMatch": 0, - "default": 260, - "total": 260 + "default": 297, + "total": 297 }, "translatedByMt": { "tmMatch": 0, @@ -246150,8 +249653,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 206, - "total": 206 + "default": 240, + "total": 240 }, "approvalCosts": { "tmMatch": 0, @@ -246267,6 +249770,59 @@ } ] }, + { + "user": { + "id": 15566383, + "username": "raminvalizadeh29", + "fullName": "Ramin Valizadeh (raminvalizadeh29)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15566383/medium/adf7b433679fa9f895b77e19223a2e70.jpeg", + "preTranslated": 0, + "totalCosts": 28 + }, + "languages": [ + { + "language": { + "id": "fa", + "name": "Persian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 28 + }, + "translated": { + "tmMatch": 0, + "default": 28, + "total": 28 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 28, + "total": 28 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14883776, @@ -250456,6 +254012,59 @@ } ] }, + { + "user": { + "id": 16030084, + "username": "0xRohit", + "fullName": "Rohit Kumar Anant (0xRohit)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16030084/medium/8abbdf3741acd8d588b7104333269efe.jpg", + "preTranslated": 0, + "totalCosts": 62 + }, + "languages": [ + { + "language": { + "id": "hi", + "name": "Hindi", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 62 + }, + "translated": { + "tmMatch": 2, + "default": 60, + "total": 62 + }, + "targetTranslated": { + "tmMatch": 4, + "default": 102, + "total": 106 + }, + "translatedByMt": { + "tmMatch": 2, + "default": 0, + "total": 2 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 2, + "default": 60, + "total": 62 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14785220, @@ -252056,7 +255665,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15885247/medium/cf22113f9226047f8f9868e4774bc4c3.png", "preTranslated": 0, - "totalCosts": 30422 + "totalCosts": 30869 }, "languages": [ { @@ -252066,17 +255675,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 30422 + "totalCosts": 30869 }, "translated": { "tmMatch": 318, - "default": 30104, - "total": 30422 + "default": 30551, + "total": 30869 }, "targetTranslated": { "tmMatch": 343, - "default": 33630, - "total": 33973 + "default": 34096, + "total": 34439 }, "translatedByMt": { "tmMatch": 75, @@ -252090,8 +255699,8 @@ }, "translationCosts": { "tmMatch": 318, - "default": 30104, - "total": 30422 + "default": 30551, + "total": 30869 }, "approvalCosts": { "tmMatch": 0, @@ -259247,7 +262856,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15328532/medium/78e4ff5d50b928c2aea8ff50b2ff1c39.jpg", "preTranslated": 0, - "totalCosts": 1095 + "totalCosts": 1396 }, "languages": [ { @@ -259257,17 +262866,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1095 + "totalCosts": 1396 }, "translated": { "tmMatch": 18, - "default": 1077, - "total": 1095 + "default": 1378, + "total": 1396 }, "targetTranslated": { "tmMatch": 15, - "default": 804, - "total": 819 + "default": 1050, + "total": 1065 }, "translatedByMt": { "tmMatch": 0, @@ -259281,8 +262890,8 @@ }, "translationCosts": { "tmMatch": 18, - "default": 1077, - "total": 1095 + "default": 1378, + "total": 1396 }, "approvalCosts": { "tmMatch": 0, @@ -260193,6 +263802,59 @@ } ] }, + { + "user": { + "id": 16007311, + "username": "Swiftevo", + "fullName": "Shift (Swiftevo)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16007311/medium/47584f21b0a63d55da89c106d20825e9.png", + "preTranslated": 0, + "totalCosts": 95 + }, + "languages": [ + { + "language": { + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 95 + }, + "translated": { + "tmMatch": 26, + "default": 69, + "total": 95 + }, + "targetTranslated": { + "tmMatch": 47, + "default": 161, + "total": 208 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 26, + "default": 69, + "total": 95 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15302440, @@ -264198,10 +267860,10 @@ { "user": { "id": 15082843, - "username": "merceasy7", - "fullName": "Steven Rups (merceasy7)", + "username": "StevenR73", + "fullName": "Steven Rups (StevenR73)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082843/medium/8bed2246335ec6e776196d05d80018a8.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082843/medium/9bd744aeb105dfeb6c55c0a7bb68a51e.jpeg", "preTranslated": 0, "totalCosts": 5472 }, @@ -265573,6 +269235,59 @@ } ] }, + { + "user": { + "id": 16023432, + "username": "SyafaHadyan", + "fullName": "Syafa Hadyan Rasendriya (SyafaHadyan)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16023432/medium/c69ac661dc63b793577afb96f6b8986d.jpg", + "preTranslated": 0, + "totalCosts": 14 + }, + "languages": [ + { + "language": { + "id": "id", + "name": "Indonesian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 14 + }, + "translated": { + "tmMatch": 0, + "default": 14, + "total": 14 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 12, + "total": 12 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 14, + "total": 14 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 13731191, @@ -270489,6 +274204,59 @@ } ] }, + { + "user": { + "id": 16004379, + "username": "tropicaldog17", + "fullName": "Tropical Dog (tropicaldog17)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004379/medium/012ac515fe09fb0e6b08e4d06d299460.jpeg", + "preTranslated": 0, + "totalCosts": 17 + }, + "languages": [ + { + "language": { + "id": "vi", + "name": "Vietnamese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 17 + }, + "translated": { + "tmMatch": 0, + "default": 17, + "total": 17 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 29, + "total": 29 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 17, + "total": 17 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 12673951, @@ -272835,6 +276603,59 @@ } ] }, + { + "user": { + "id": 16010703, + "username": "vero_vero03", + "fullName": "Veronica campos (vero_vero03)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16010703/medium/97c299201d2fe2be8c7fef377883e484_default.png", + "preTranslated": 0, + "totalCosts": 117 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 117 + }, + "translated": { + "tmMatch": 46, + "default": 71, + "total": 117 + }, + "targetTranslated": { + "tmMatch": 53, + "default": 107, + "total": 160 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 46, + "default": 71, + "total": 117 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14735846, @@ -276315,7 +280136,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955989/medium/59ea65ec251d30482d55805d45572493.png", "preTranslated": 0, - "totalCosts": 11639 + "totalCosts": 21475 }, "languages": [ { @@ -276325,22 +280146,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11639 + "totalCosts": 21475 }, "translated": { - "tmMatch": 50, - "default": 11589, - "total": 11639 + "tmMatch": 73, + "default": 21402, + "total": 21475 }, "targetTranslated": { - "tmMatch": 54, - "default": 10944, - "total": 10998 + "tmMatch": 79, + "default": 19869, + "total": 19948 }, "translatedByMt": { - "tmMatch": 25, - "default": 2, - "total": 27 + "tmMatch": 33, + "default": 3, + "total": 36 }, "approved": { "tmMatch": 0, @@ -276348,9 +280169,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 50, - "default": 11589, - "total": 11639 + "tmMatch": 73, + "default": 21402, + "total": 21475 }, "approvalCosts": { "tmMatch": 0, @@ -279907,7 +283728,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15906651/medium/7fbb552cabdbfcd79477e56fc90a2670.png", "preTranslated": 0, - "totalCosts": 690 + "totalCosts": 924 }, "languages": [ { @@ -279917,17 +283738,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 690 + "totalCosts": 924 }, "translated": { - "tmMatch": 13, - "default": 677, - "total": 690 + "tmMatch": 17, + "default": 907, + "total": 924 }, "targetTranslated": { - "tmMatch": 26, - "default": 1134, - "total": 1160 + "tmMatch": 35, + "default": 1548, + "total": 1583 }, "translatedByMt": { "tmMatch": 3, @@ -279940,9 +283761,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 13, - "default": 677, - "total": 690 + "tmMatch": 17, + "default": 907, + "total": 924 }, "approvalCosts": { "tmMatch": 0, @@ -281754,6 +285575,59 @@ } ] }, + { + "user": { + "id": 16000639, + "username": "Ragu07", + "fullName": "Zack (Ragu07)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16000639/medium/b4959fa30a752fec53b2daea132390c0_default.png", + "preTranslated": 0, + "totalCosts": 2775 + }, + "languages": [ + { + "language": { + "id": "ta", + "name": "Tamil", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 2775 + }, + "translated": { + "tmMatch": 42, + "default": 2733, + "total": 2775 + }, + "targetTranslated": { + "tmMatch": 85, + "default": 5169, + "total": 5254 + }, + "translatedByMt": { + "tmMatch": 5, + "default": 0, + "total": 5 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 42, + "default": 2733, + "total": 2775 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14813188, @@ -283026,6 +286900,59 @@ } ] }, + { + "user": { + "id": 16020224, + "username": "zulbasridaud220", + "fullName": "Zulbasri Mohd daud (zulbasridaud220)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16020224/medium/a2da894b1174d46676300df338864de6.jpeg", + "preTranslated": 0, + "totalCosts": 41 + }, + "languages": [ + { + "language": { + "id": "ms", + "name": "Malay", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 41 + }, + "translated": { + "tmMatch": 0, + "default": 41, + "total": 41 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 48, + "total": 48 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 41, + "total": 41 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15448958, @@ -289573,6 +293500,59 @@ } ] }, + { + "user": { + "id": 16014683, + "username": "pierredogui", + "fullName": "djereke pierre dogui (pierredogui)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16014683/medium/8dc8d59a7a6e2830c84d1a23f5d1814f.jpeg", + "preTranslated": 0, + "totalCosts": 14 + }, + "languages": [ + { + "language": { + "id": "fr", + "name": "French", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 14 + }, + "translated": { + "tmMatch": 0, + "default": 14, + "total": 14 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 14, + "total": 14 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 14, + "total": 14 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15411930, @@ -293000,7 +296980,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15880343/medium/4b6df183916557610b51230915a5f9eb_default.png", "preTranslated": 0, - "totalCosts": 11141 + "totalCosts": 12321 }, "languages": [ { @@ -293010,17 +296990,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11141 + "totalCosts": 12321 }, "translated": { "tmMatch": 76, - "default": 11065, - "total": 11141 + "default": 12245, + "total": 12321 }, "targetTranslated": { "tmMatch": 115, - "default": 13175, - "total": 13290 + "default": 14606, + "total": 14721 }, "translatedByMt": { "tmMatch": 17, @@ -293034,8 +297014,8 @@ }, "translationCosts": { "tmMatch": 76, - "default": 11065, - "total": 11141 + "default": 12245, + "total": 12321 }, "approvalCosts": { "tmMatch": 0, @@ -293363,6 +297343,59 @@ } ] }, + { + "user": { + "id": 13324494, + "username": "hdmed", + "fullName": "hdmed.dev (hdmed)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13324494/medium/e15dc911ade7cf545aeb847438d6742c.jpeg", + "preTranslated": 0, + "totalCosts": 71 + }, + "languages": [ + { + "language": { + "id": "fr", + "name": "French", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 71 + }, + "translated": { + "tmMatch": 0, + "default": 71, + "total": 71 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 81, + "total": 81 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 71, + "total": 71 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14983201, @@ -293742,7 +297775,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14365554/medium/0eaad18aa54e9f87636e0bf3f5d20dc3.jpeg", "preTranslated": 0, - "totalCosts": 297 + "totalCosts": 367 }, "languages": [ { @@ -293752,17 +297785,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 297 + "totalCosts": 367 }, "translated": { "tmMatch": 26, - "default": 271, - "total": 297 + "default": 341, + "total": 367 }, "targetTranslated": { "tmMatch": 54, - "default": 451, - "total": 505 + "default": 566, + "total": 620 }, "translatedByMt": { "tmMatch": 0, @@ -293776,8 +297809,8 @@ }, "translationCosts": { "tmMatch": 26, - "default": 271, - "total": 297 + "default": 341, + "total": 367 }, "approvalCosts": { "tmMatch": 0, @@ -294158,6 +298191,59 @@ } ] }, + { + "user": { + "id": 16031264, + "username": "ihabhamed", + "fullName": "ihabhamed", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16031264/medium/b1b2ecbce08c22555b6089b25ef0482f.jpeg", + "preTranslated": 0, + "totalCosts": 64 + }, + "languages": [ + { + "language": { + "id": "ar", + "name": "Arabic", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 64 + }, + "translated": { + "tmMatch": 0, + "default": 64, + "total": 64 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 54, + "total": 54 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 64, + "total": 64 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15068355, @@ -295020,6 +299106,59 @@ } ] }, + { + "user": { + "id": 16004409, + "username": "crackpotjackpotdiscord", + "fullName": "jackpot (crackpotjackpotdiscord)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004409/medium/a6091a149da0ed8d0301cc4d33c8d616.png", + "preTranslated": 0, + "totalCosts": 405 + }, + "languages": [ + { + "language": { + "id": "vi", + "name": "Vietnamese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 405 + }, + "translated": { + "tmMatch": 1, + "default": 404, + "total": 405 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 627, + "total": 628 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 404, + "total": 405 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 12523167, @@ -309686,7 +313825,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg", "preTranslated": 0, - "totalCosts": 72575 + "totalCosts": 83204 }, "languages": [ { @@ -309736,22 +313875,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 72574 + "totalCosts": 83203 }, "translated": { - "tmMatch": 3207, - "default": 69367, - "total": 72574 + "tmMatch": 5104, + "default": 78099, + "total": 83203 }, "targetTranslated": { - "tmMatch": 2981, - "default": 63664, - "total": 66645 + "tmMatch": 4720, + "default": 71690, + "total": 76410 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 3, "default": 25, - "total": 27 + "total": 28 }, "approved": { "tmMatch": 0, @@ -309759,9 +313898,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3207, - "default": 69367, - "total": 72574 + "tmMatch": 5104, + "default": 78099, + "total": 83203 }, "approvalCosts": { "tmMatch": 0, @@ -309991,7 +314130,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png", "preTranslated": 0, - "totalCosts": 42055 + "totalCosts": 43708 }, "languages": [ { @@ -310001,17 +314140,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 42055 + "totalCosts": 43708 }, "translated": { - "tmMatch": 444, - "default": 41611, - "total": 42055 + "tmMatch": 453, + "default": 43255, + "total": 43708 }, "targetTranslated": { - "tmMatch": 779, - "default": 69209, - "total": 69988 + "tmMatch": 795, + "default": 72153, + "total": 72948 }, "translatedByMt": { "tmMatch": 33, @@ -310024,9 +314163,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 444, - "default": 41611, - "total": 42055 + "tmMatch": 453, + "default": 43255, + "total": 43708 }, "approvalCosts": { "tmMatch": 0, @@ -310044,7 +314183,7 @@ "userRole": "Translator", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15636829/medium/434d40bf423f53879e795cc158b1b892.jpeg", "preTranslated": 0, - "totalCosts": 1537 + "totalCosts": 1552 }, "languages": [ { @@ -310054,17 +314193,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1537 + "totalCosts": 1552 }, "translated": { - "tmMatch": 3, + "tmMatch": 18, "default": 1534, - "total": 1537 + "total": 1552 }, "targetTranslated": { - "tmMatch": 4, + "tmMatch": 34, "default": 2362, - "total": 2366 + "total": 2396 }, "translatedByMt": { "tmMatch": 0, @@ -310077,9 +314216,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, + "tmMatch": 18, "default": 1534, - "total": 1537 + "total": 1552 }, "approvalCosts": { "tmMatch": 0, @@ -312567,6 +316706,59 @@ } ] }, + { + "user": { + "id": 15966669, + "username": "0xSahbaz", + "fullName": "Şahbaz Barış (0xSahbaz)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966669/medium/e56294c61e4c32a43c8735040ea67364_default.png", + "preTranslated": 0, + "totalCosts": 5872 + }, + "languages": [ + { + "language": { + "id": "tr", + "name": "Turkish", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 5872 + }, + "translated": { + "tmMatch": 550, + "default": 5322, + "total": 5872 + }, + "targetTranslated": { + "tmMatch": 515, + "default": 4756, + "total": 5271 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 550, + "default": 5322, + "total": 5872 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14404560, @@ -313694,6 +317886,59 @@ } ] }, + { + "user": { + "id": 15994825, + "username": "gettingmoresalo", + "fullName": "Андрей Барканов (gettingmoresalo)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15994825/medium/ce32b5b33da7aa5d67803aa9fa312023.jpeg", + "preTranslated": 0, + "totalCosts": 14 + }, + "languages": [ + { + "language": { + "id": "ru", + "name": "Russian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 14 + }, + "translated": { + "tmMatch": 0, + "default": 14, + "total": 14 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 16, + "total": 16 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 14, + "total": 14 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 14492630, @@ -314357,6 +318602,59 @@ } ] }, + { + "user": { + "id": 15994051, + "username": "csgo7777gg", + "fullName": "Артем Ксго (csgo7777gg)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15994051/medium/5ffbfdb7c384b441588b3f63ed171d90.png", + "preTranslated": 0, + "totalCosts": 7 + }, + "languages": [ + { + "language": { + "id": "pl", + "name": "Polish", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 7 + }, + "translated": { + "tmMatch": 0, + "default": 7, + "total": 7 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 7, + "total": 7 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 12606390, @@ -321680,9 +325978,9 @@ "username": "magazine4you", "fullName": "مجله ای برای شما مجله کسب درآمد از اینترنت (magazine4you)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15035049/medium/02a8d4b62f72fe29bd65bc1896a0eecc.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15035049/medium/aae1b74471bfafad0f4d2643e5de8678.png", "preTranslated": 0, - "totalCosts": 685 + "totalCosts": 957 }, "languages": [ { @@ -321692,17 +325990,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 685 + "totalCosts": 957 }, "translated": { "tmMatch": 1, - "default": 684, - "total": 685 + "default": 956, + "total": 957 }, "targetTranslated": { "tmMatch": 1, - "default": 802, - "total": 803 + "default": 1139, + "total": 1140 }, "translatedByMt": { "tmMatch": 0, @@ -321716,8 +326014,8 @@ }, "translationCosts": { "tmMatch": 1, - "default": 684, - "total": 685 + "default": 956, + "total": 957 }, "approvalCosts": { "tmMatch": 0, @@ -322405,13 +326703,13 @@ }, { "user": { - "id": 15964923, - "username": "kursinara_km", - "fullName": "កុសិនារា Kursinara (kursinara_km)", + "id": 15384668, + "username": "KosinaraPok", + "fullName": "កុសិនារា | Kosinara (KosinaraPok)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964923/medium/6c0dd9a1ef90353e8bc1ddd0b9a07f16.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15384668/medium/020924dcb7b2e7de73185313b9d61184.png", "preTranslated": 0, - "totalCosts": 111 + "totalCosts": 76 }, "languages": [ { @@ -322421,22 +326719,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 111 + "totalCosts": 76 }, "translated": { - "tmMatch": 12, - "default": 99, - "total": 111 + "tmMatch": 5, + "default": 71, + "total": 76 }, "targetTranslated": { - "tmMatch": 19, - "default": 111, - "total": 130 + "tmMatch": 9, + "default": 80, + "total": 89 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -322444,9 +326742,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 12, - "default": 99, - "total": 111 + "tmMatch": 5, + "default": 71, + "total": 76 }, "approvalCosts": { "tmMatch": 0, @@ -322458,13 +326756,13 @@ }, { "user": { - "id": 15384668, - "username": "KosinaraPok", - "fullName": "កុសិនារា | Kosinara (KosinaraPok)", + "id": 15964923, + "username": "kursinara", + "fullName": "កុសិនារា-Kursinara (kursinara)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15384668/medium/020924dcb7b2e7de73185313b9d61184.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964923/medium/beff60bec090d35a1e16573bef45f486.jpg", "preTranslated": 0, - "totalCosts": 76 + "totalCosts": 111 }, "languages": [ { @@ -322474,22 +326772,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 76 + "totalCosts": 111 }, "translated": { - "tmMatch": 5, - "default": 71, - "total": 76 + "tmMatch": 12, + "default": 99, + "total": 111 }, "targetTranslated": { - "tmMatch": 9, - "default": 80, - "total": 89 + "tmMatch": 19, + "default": 111, + "total": 130 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "approved": { "tmMatch": 0, @@ -322497,9 +326795,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 71, - "total": 76 + "tmMatch": 12, + "default": 99, + "total": 111 }, "approvalCosts": { "tmMatch": 0, @@ -323092,6 +327390,59 @@ } ] }, + { + "user": { + "id": 16028252, + "username": "milkfeng666", + "fullName": "冯韵涵 (milkfeng666)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16028252/medium/df1172a80c8f0c52a390d9f69b452f4a.png", + "preTranslated": 0, + "totalCosts": 61 + }, + "languages": [ + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 61 + }, + "translated": { + "tmMatch": 0, + "default": 61, + "total": 61 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 114, + "total": 114 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 61, + "total": 61 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, { "user": { "id": 15217074, @@ -328140,6 +332491,59 @@ } } ] + }, + { + "user": { + "id": 15999893, + "username": "chloeyang", + "fullName": "𝕏 Doggy Babe💻📡🔬 (chloeyang)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15999893/medium/acb9e1666e04d7575ac44695fc03fc28.jpg", + "preTranslated": 0, + "totalCosts": 62 + }, + "languages": [ + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 62 + }, + "translated": { + "tmMatch": 0, + "default": 62, + "total": 62 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 112, + "total": 112 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 62, + "total": 62 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] } ] } diff --git a/src/data/translation-reports/month/month-data.json b/src/data/translation-reports/month/month-data.json index 10a79adbd34..a2816682285 100644 --- a/src/data/translation-reports/month/month-data.json +++ b/src/data/translation-reports/month/month-data.json @@ -3,44 +3,44 @@ "url": "https://translate.ethereum.org/project/ethereum-org", "unit": "words", "dateRange": { - "from": "2023-08-01", - "to": "2023-08-31" + "from": "2023-09-01", + "to": "2023-09-30" }, "currency": "USD", "mode": "simple", - "totalCosts": 1677056, + "totalCosts": 934867, "totalTMSavings": 0, - "totalPreTranslated": 152817, + "totalPreTranslated": 4272, "data": [ { "user": { - "id": 15948261, - "username": "0xBeshoy", - "fullName": "0xBeshoy", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948261/medium/c2c2df3544537d40b0bf8ebc33d86ed4.png", + "id": 15451522, + "username": "ACO_km_linguist", + "fullName": "ACO_km_linguist", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15451522/medium/a535a722e0c011a9d54af4ae93dd0e3e_default.png", "preTranslated": 0, - "totalCosts": 12 + "totalCosts": 1328 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Translator", + "id": "km", + "name": "Khmer", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12 + "totalCosts": 1328 }, "translated": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 8, + "default": 1320, + "total": 1328 }, "targetTranslated": { - "tmMatch": 0, - "default": 9, - "total": 9 + "tmMatch": 9, + "default": 1587, + "total": 1596 }, "translatedByMt": { "tmMatch": 0, @@ -50,12 +50,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 12397 }, "translationCosts": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 8, + "default": 1320, + "total": 1328 }, "approvalCosts": { "tmMatch": 0, @@ -67,48 +67,48 @@ }, { "user": { - "id": 15966669, - "username": "0xSahbaz", - "fullName": "0xSahbaz", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966669/medium/c537e499d63231405dc73d43d0d3a710_default.png", + "id": 15042043, + "username": "Acc_John_Banis", + "fullName": "Acc_John_Banis", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15042043/medium/3e87407585f7ba151de939a245b94de1_default.png", "preTranslated": 0, - "totalCosts": 5872 + "totalCosts": 5009 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", + "id": "nl", + "name": "Dutch", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5872 + "totalCosts": 5009 }, "translated": { - "tmMatch": 550, - "default": 5322, - "total": 5872 + "tmMatch": 349, + "default": 4660, + "total": 5009 }, "targetTranslated": { - "tmMatch": 515, - "default": 4756, - "total": 5271 + "tmMatch": 379, + "default": 4898, + "total": 5277 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 7540 }, "translationCosts": { - "tmMatch": 550, - "default": 5322, - "total": 5872 + "tmMatch": 349, + "default": 4660, + "total": 5009 }, "approvalCosts": { "tmMatch": 0, @@ -120,48 +120,48 @@ }, { "user": { - "id": 15964741, - "username": "0xberil", - "fullName": "0xberil", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964741/medium/f8fb148047395cf62c924755cb300f17_default.png", + "id": 15194920, + "username": "Aco_Bengali", + "fullName": "Aco_Bengali", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194920/medium/8aff26c8299db6ff8baa83e998c92a5b_default.png", "preTranslated": 0, - "totalCosts": 15003 + "totalCosts": 18558 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", + "id": "bn", + "name": "Bengali", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15003 + "totalCosts": 18558 }, "translated": { - "tmMatch": 117, - "default": 14886, - "total": 15003 + "tmMatch": 55, + "default": 18503, + "total": 18558 }, "targetTranslated": { - "tmMatch": 115, - "default": 12558, - "total": 12673 + "tmMatch": 118, + "default": 35309, + "total": 35427 }, "translatedByMt": { - "tmMatch": 38, - "default": 27, - "total": 65 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 36058 }, "translationCosts": { - "tmMatch": 117, - "default": 14886, - "total": 15003 + "tmMatch": 55, + "default": 18503, + "total": 18558 }, "approvalCosts": { "tmMatch": 0, @@ -173,86 +173,73 @@ }, { "user": { - "id": 14897770, - "username": "0xmike7", - "fullName": "0xmike7", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14897770/medium/48581e20c04cdfde4e05e0b73f80e7c5_default.png", + "id": 15081117, + "username": "Aco_Diskusija", + "fullName": "Aco_Diskusija", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15081117/medium/7e86794ce311a40214528e3555421c55_default.png", "preTranslated": 0, - "totalCosts": 431 + "totalCosts": 13606 }, "languages": [ { "language": { - "id": "el", - "name": "Greek", - "userRole": "Translator", + "id": "be", + "name": "Belarusian", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 431 + "totalCosts": 3500 }, "translated": { - "tmMatch": 0, - "default": 431, - "total": 431 + "tmMatch": 81, + "default": 3419, + "total": 3500 }, "targetTranslated": { - "tmMatch": 0, - "default": 516, - "total": 516 + "tmMatch": 73, + "default": 3238, + "total": 3311 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 1, "default": 0, - "total": 0 + "total": 1 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 6250 }, "translationCosts": { - "tmMatch": 0, - "default": 431, - "total": 431 + "tmMatch": 81, + "default": 3419, + "total": 3500 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15951899, - "username": "3jo6e9", - "fullName": "3jo6e9", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15951899/medium/6a5ca54fd7edaed69dbcabd597fedc6f_default.png", - "preTranslated": 0, - "totalCosts": 27 - }, - "languages": [ + }, { "language": { - "id": "ml-IN", - "name": "Malayalam", - "userRole": "Translator", + "id": "bs", + "name": "Bosnian", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 27 + "totalCosts": 410 }, "translated": { - "tmMatch": 0, - "default": 27, - "total": 27 + "tmMatch": 1, + "default": 409, + "total": 410 }, "targetTranslated": { - "tmMatch": 0, - "default": 52, - "total": 52 + "tmMatch": 1, + "default": 394, + "total": 395 }, "translatedByMt": { "tmMatch": 0, @@ -262,50 +249,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 6250 }, "translationCosts": { - "tmMatch": 0, - "default": 27, - "total": 27 + "tmMatch": 1, + "default": 409, + "total": 410 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15451522, - "username": "ACO_km_linguist", - "fullName": "ACO_km_linguist", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15451522/medium/a535a722e0c011a9d54af4ae93dd0e3e_default.png", - "preTranslated": 0, - "totalCosts": 1118 - }, - "languages": [ + }, { "language": { - "id": "km", - "name": "Khmer", - "userRole": "Proofreader", + "id": "sr-CS", + "name": "Serbian (Latin)", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1118 + "totalCosts": 9461 }, "translated": { - "tmMatch": 16, - "default": 1102, - "total": 1118 + "tmMatch": 43, + "default": 9418, + "total": 9461 }, "targetTranslated": { - "tmMatch": 18, - "default": 1265, - "total": 1283 + "tmMatch": 42, + "default": 9397, + "total": 9439 }, "translatedByMt": { "tmMatch": 0, @@ -315,65 +289,52 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 363 + "total": 26283 }, "translationCosts": { - "tmMatch": 16, - "default": 1102, - "total": 1118 + "tmMatch": 43, + "default": 9418, + "total": 9461 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15944249, - "username": "ANOKEY", - "fullName": "ANOKEY", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15944249/medium/5bcfd0e2c58b676f2709481d9f4308ef_default.png", - "preTranslated": 0, - "totalCosts": 17 - }, - "languages": [ + }, { "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", + "id": "sk", + "name": "Slovak", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 17 + "totalCosts": 235 }, "translated": { "tmMatch": 0, - "default": 17, - "total": 17 + "default": 235, + "total": 235 }, "targetTranslated": { "tmMatch": 0, - "default": 19, - "total": 19 + "default": 222, + "total": 222 }, "translatedByMt": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 5218 }, "translationCosts": { "tmMatch": 0, - "default": 17, - "total": 17 + "default": 235, + "total": 235 }, "approvalCosts": { "tmMatch": 0, @@ -391,7 +352,7 @@ "userRole": "Translator, Proofreader", "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15794419/medium/7259e3286d1b408f10cfb6dee866e177_default.png", "preTranslated": 0, - "totalCosts": 769 + "totalCosts": 10275 }, "languages": [ { @@ -401,17 +362,17 @@ "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 769 + "totalCosts": 10275 }, "translated": { - "tmMatch": 36, - "default": 733, - "total": 769 + "tmMatch": 270, + "default": 10005, + "total": 10275 }, "targetTranslated": { - "tmMatch": 40, - "default": 836, - "total": 876 + "tmMatch": 290, + "default": 11497, + "total": 11787 }, "translatedByMt": { "tmMatch": 0, @@ -421,12 +382,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 166 + "total": 15709 }, "translationCosts": { - "tmMatch": 36, - "default": 733, - "total": 769 + "tmMatch": 270, + "default": 10005, + "total": 10275 }, "approvalCosts": { "tmMatch": 0, @@ -438,48 +399,48 @@ }, { "user": { - "id": 15005293, - "username": "Aco_Zinacle", - "fullName": "Aco_Zinacle", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15005293/medium/6f19beccc7174b9ab2a3022bad4e34a0_default.png", + "id": 15038029, + "username": "Aco_Gemineo", + "fullName": "Aco_Gemineo", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15038029/medium/39a0baeb76a5f50b79e8e8589553619a_default.png", "preTranslated": 0, - "totalCosts": 803 + "totalCosts": 35757 }, "languages": [ { "language": { - "id": "ca", - "name": "Catalan", - "userRole": "Proofreader", + "id": "de", + "name": "German", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 803 + "totalCosts": 35757 }, "translated": { - "tmMatch": 4, - "default": 799, - "total": 803 + "tmMatch": 8709, + "default": 27048, + "total": 35757 }, "targetTranslated": { - "tmMatch": 4, - "default": 902, - "total": 906 + "tmMatch": 8456, + "default": 26900, + "total": 35356 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 6, "default": 0, - "total": 2 + "total": 6 }, "approved": { "tmMatch": 0, "default": 0, - "total": 1229 + "total": 83319 }, "translationCosts": { - "tmMatch": 4, - "default": 799, - "total": 803 + "tmMatch": 8709, + "default": 27048, + "total": 35757 }, "approvalCosts": { "tmMatch": 0, @@ -491,33 +452,33 @@ }, { "user": { - "id": 15876801, - "username": "Ad__", - "fullName": "Ad__", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15876801/medium/8c30730d1f22853dc924ef216e28aec0_default.png", + "id": 15061123, + "username": "Aco_Hindi", + "fullName": "Aco_Hindi", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15061123/medium/e4d052a9eddf22820a8df7e59daa1704_default.png", "preTranslated": 0, - "totalCosts": 38 + "totalCosts": 34238 }, "languages": [ { "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", + "id": "hi", + "name": "Hindi", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 38 + "totalCosts": 34238 }, "translated": { - "tmMatch": 0, - "default": 38, - "total": 38 + "tmMatch": 659, + "default": 33579, + "total": 34238 }, "targetTranslated": { - "tmMatch": 0, - "default": 50, - "total": 50 + "tmMatch": 1240, + "default": 61255, + "total": 62495 }, "translatedByMt": { "tmMatch": 0, @@ -527,12 +488,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 48128 }, "translationCosts": { - "tmMatch": 0, - "default": 38, - "total": 38 + "tmMatch": 659, + "default": 33579, + "total": 34238 }, "approvalCosts": { "tmMatch": 0, @@ -544,33 +505,33 @@ }, { "user": { - "id": 15966315, - "username": "Afoma", - "fullName": "Afoma", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966315/medium/b3038fdd1703da9ef4c0b3f0f4a0c31d_default.png", + "id": 15037897, + "username": "Aco_Indonesian", + "fullName": "Aco_Indonesian", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15037897/medium/0cef85d4b2a8be292505d8a7dcf43d68_default.png", "preTranslated": 0, - "totalCosts": 2141 + "totalCosts": 47935 }, "languages": [ { "language": { - "id": "ig", - "name": "Igbo", - "userRole": "Translator", + "id": "id", + "name": "Indonesian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2141 + "totalCosts": 47935 }, "translated": { - "tmMatch": 3, - "default": 2138, - "total": 2141 + "tmMatch": 3575, + "default": 44360, + "total": 47935 }, "targetTranslated": { - "tmMatch": 5, - "default": 2884, - "total": 2889 + "tmMatch": 3493, + "default": 42559, + "total": 46052 }, "translatedByMt": { "tmMatch": 0, @@ -580,12 +541,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 86620 }, "translationCosts": { - "tmMatch": 3, - "default": 2138, - "total": 2141 + "tmMatch": 3575, + "default": 44360, + "total": 47935 }, "approvalCosts": { "tmMatch": 0, @@ -597,33 +558,33 @@ }, { "user": { - "id": 15961869, - "username": "Akramnard", - "fullName": "Akramnard", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961869/medium/1855f725161426bfb4f84b57ce3c25df_default.png", + "id": 15441504, + "username": "Aco_JS", + "fullName": "Aco_JS", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15441504/medium/707b75040cbc5b9bd8dc799f99b1c226_default.png", "preTranslated": 0, - "totalCosts": 21 + "totalCosts": 52 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Translator", + "id": "ta", + "name": "Tamil", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 21 + "totalCosts": 52 }, "translated": { - "tmMatch": 0, - "default": 21, - "total": 21 + "tmMatch": 1, + "default": 51, + "total": 52 }, "targetTranslated": { - "tmMatch": 0, - "default": 16, - "total": 16 + "tmMatch": 1, + "default": 87, + "total": 88 }, "translatedByMt": { "tmMatch": 0, @@ -633,12 +594,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 267 }, "translationCosts": { - "tmMatch": 0, - "default": 21, - "total": 21 + "tmMatch": 1, + "default": 51, + "total": 52 }, "approvalCosts": { "tmMatch": 0, @@ -650,33 +611,33 @@ }, { "user": { - "id": 15947485, - "username": "Alaska11", - "fullName": "Alaska11", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947485/medium/da51c9b8a0a8e430338d253f957c20e2_default.png", + "id": 15141044, + "username": "Aco_LorenzoLicari", + "fullName": "Aco_LorenzoLicari", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15141044/medium/a099d3678baa4f76c2447ede1e50a37d_default.png", "preTranslated": 0, - "totalCosts": 5 + "totalCosts": 416 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Limited Access", + "id": "it", + "name": "Italian", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5 + "totalCosts": 416 }, "translated": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 416, + "total": 416 }, "targetTranslated": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 409, + "total": 409 }, "translatedByMt": { "tmMatch": 0, @@ -686,12 +647,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1060 }, "translationCosts": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 416, + "total": 416 }, "approvalCosts": { "tmMatch": 0, @@ -703,33 +664,33 @@ }, { "user": { - "id": 14769736, - "username": "Andpatagon", - "fullName": "Andpatagon", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14769736/medium/930a05ccc7aec89b8e66e9f0d1a0b24e_default.png", + "id": 15005335, + "username": "Aco_Mamorim", + "fullName": "Aco_Mamorim", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15005335/medium/1df3f196a54707c412ad265030074c6d_default.png", "preTranslated": 0, - "totalCosts": 312 + "totalCosts": 9155 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 312 + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 9155 }, "translated": { - "tmMatch": 14, - "default": 298, - "total": 312 + "tmMatch": 1174, + "default": 7981, + "total": 9155 }, "targetTranslated": { - "tmMatch": 21, - "default": 343, - "total": 364 + "tmMatch": 1321, + "default": 8852, + "total": 10173 }, "translatedByMt": { "tmMatch": 0, @@ -739,12 +700,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 9879 }, "translationCosts": { - "tmMatch": 14, - "default": 298, - "total": 312 + "tmMatch": 1174, + "default": 7981, + "total": 9155 }, "approvalCosts": { "tmMatch": 0, @@ -756,33 +717,33 @@ }, { "user": { - "id": 15971987, - "username": "Artur1977", - "fullName": "Artur1977", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15971987/medium/abb026a5b945241c93bf74745946855f_default.png", + "id": 15068119, + "username": "Aco_Marathi", + "fullName": "Aco_Marathi", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15068119/medium/598c46b08892955be54dabf897863500_default.png", "preTranslated": 0, - "totalCosts": 3 + "totalCosts": 12150 }, "languages": [ { "language": { - "id": "pl", - "name": "Polish", - "userRole": "Translator", + "id": "mr", + "name": "Marathi", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3 + "totalCosts": 12150 }, "translated": { - "tmMatch": 0, - "default": 3, - "total": 3 + "tmMatch": 71, + "default": 12079, + "total": 12150 }, "targetTranslated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 93, + "default": 18570, + "total": 18663 }, "translatedByMt": { "tmMatch": 0, @@ -792,12 +753,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 26124 }, "translationCosts": { - "tmMatch": 0, - "default": 3, - "total": 3 + "tmMatch": 71, + "default": 12079, + "total": 12150 }, "approvalCosts": { "tmMatch": 0, @@ -809,48 +770,48 @@ }, { "user": { - "id": 15932515, - "username": "Astronaut828", - "fullName": "Astronaut828", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/c41b45c87a237615839b37bfa2118e8b.jpeg", + "id": 15319242, + "username": "Aco_Qwertyworks.Ethereum", + "fullName": "Aco_Qwertyworks.Ethereum", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15319242/medium/a4b24fefc8cb46836511002d4e1ce001_default.png", "preTranslated": 0, - "totalCosts": 22974 + "totalCosts": 49617 }, "languages": [ { "language": { - "id": "de", - "name": "German", - "userRole": "Translator", + "id": "fil", + "name": "Filipino", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 22974 + "totalCosts": 49617 }, "translated": { - "tmMatch": 142, - "default": 22832, - "total": 22974 + "tmMatch": 540, + "default": 49077, + "total": 49617 }, "targetTranslated": { - "tmMatch": 142, - "default": 23245, - "total": 23387 + "tmMatch": 666, + "default": 58478, + "total": 59144 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 3, "default": 0, - "total": 1 + "total": 3 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 52300 }, "translationCosts": { - "tmMatch": 142, - "default": 22832, - "total": 22974 + "tmMatch": 540, + "default": 49077, + "total": 49617 }, "approvalCosts": { "tmMatch": 0, @@ -862,33 +823,33 @@ }, { "user": { - "id": 15968015, - "username": "BlessingEmah", - "fullName": "BlessingEmah", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968015/medium/196a37a0adafd565e61ebec17a1899b2_default.png", + "id": 15894193, + "username": "Aco_Thai", + "fullName": "Aco_Thai", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894193/medium/484700278e1f424962fcca09ceabe77f_default.png", "preTranslated": 0, - "totalCosts": 109 + "totalCosts": 722 }, "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", + "id": "th", + "name": "Thai", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 107 + "totalCosts": 722 }, "translated": { - "tmMatch": 2, - "default": 105, - "total": 107 + "tmMatch": 22, + "default": 700, + "total": 722 }, "targetTranslated": { - "tmMatch": 4, - "default": 207, - "total": 211 + "tmMatch": 15, + "default": 178, + "total": 193 }, "translatedByMt": { "tmMatch": 0, @@ -898,52 +859,65 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 2116 }, "translationCosts": { - "tmMatch": 2, - "default": 105, - "total": 107 + "tmMatch": 22, + "default": 700, + "total": 722 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15038647, + "username": "Aco_Tomoko", + "fullName": "Aco_Tomoko", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15038647/medium/6e83773b7f4db25bdece30475a0840df_default.png", + "preTranslated": 0, + "totalCosts": 1302 + }, + "languages": [ { "language": { - "id": "yo", - "name": "Yoruba", - "userRole": "Translator", + "id": "ja", + "name": "Japanese", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 1302 }, "translated": { - "tmMatch": 1, - "default": 1, - "total": 2 + "tmMatch": 9, + "default": 1293, + "total": 1302 }, "targetTranslated": { - "tmMatch": 9, - "default": 2, - "total": 11 + "tmMatch": 34, + "default": 3766, + "total": 3800 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1396 }, "translationCosts": { - "tmMatch": 1, - "default": 1, - "total": 2 + "tmMatch": 9, + "default": 1293, + "total": 1302 }, "approvalCosts": { "tmMatch": 0, @@ -955,33 +929,33 @@ }, { "user": { - "id": 15946385, - "username": "Coderunner", - "fullName": "Coderunner", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946385/medium/0948b127eef2aaefad591616b8192f69_default.png", + "id": 15241658, + "username": "Aco_Vietnamese", + "fullName": "Aco_Vietnamese", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241658/medium/39de011db222be51f6dfe886cfe26499_default.png", "preTranslated": 0, - "totalCosts": 26 + "totalCosts": 3144 }, "languages": [ { "language": { - "id": "ko", - "name": "Korean", - "userRole": "Translator", + "id": "vi", + "name": "Vietnamese", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 26 + "totalCosts": 3144 }, "translated": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 347, + "default": 2797, + "total": 3144 }, "targetTranslated": { - "tmMatch": 0, - "default": 22, - "total": 22 + "tmMatch": 601, + "default": 4149, + "total": 4750 }, "translatedByMt": { "tmMatch": 0, @@ -991,12 +965,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 5371 }, "translationCosts": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 347, + "default": 2797, + "total": 3144 }, "approvalCosts": { "tmMatch": 0, @@ -1008,33 +982,33 @@ }, { "user": { - "id": 15955625, - "username": "Coiniran", - "fullName": "Coiniran", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955625/medium/cea2317824f592725aac52fcd2eedb26_default.png", + "id": 15005293, + "username": "Aco_Zinacle", + "fullName": "Aco_Zinacle", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15005293/medium/6f19beccc7174b9ab2a3022bad4e34a0_default.png", "preTranslated": 0, - "totalCosts": 29648 + "totalCosts": 2916 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", + "id": "ca", + "name": "Catalan", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 29648 + "totalCosts": 21 }, "translated": { - "tmMatch": 127, - "default": 29521, - "total": 29648 + "tmMatch": 16, + "default": 5, + "total": 21 }, "targetTranslated": { - "tmMatch": 153, - "default": 37575, - "total": 37728 + "tmMatch": 19, + "default": 7, + "total": 26 }, "translatedByMt": { "tmMatch": 0, @@ -1044,50 +1018,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 15 }, "translationCosts": { - "tmMatch": 127, - "default": 29521, - "total": 29648 + "tmMatch": 16, + "default": 5, + "total": 21 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15973053, - "username": "CreedL", - "fullName": "CreedL", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15973053/medium/813a045786230b7950249b2f0e3defb4_default.png", - "preTranslated": 0, - "totalCosts": 60 - }, - "languages": [ + }, { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Translator", + "id": "pt-PT", + "name": "Portuguese", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 60 + "totalCosts": 2895 }, "translated": { - "tmMatch": 5, - "default": 55, - "total": 60 + "tmMatch": 154, + "default": 2741, + "total": 2895 }, "targetTranslated": { - "tmMatch": 10, - "default": 112, - "total": 122 + "tmMatch": 174, + "default": 3078, + "total": 3252 }, "translatedByMt": { "tmMatch": 0, @@ -1097,12 +1058,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 12302 }, "translationCosts": { - "tmMatch": 5, - "default": 55, - "total": 60 + "tmMatch": 154, + "default": 2741, + "total": 2895 }, "approvalCosts": { "tmMatch": 0, @@ -1114,33 +1075,33 @@ }, { "user": { - "id": 15958401, - "username": "Damisss", - "fullName": "Damisss", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15958401/medium/e6bb1e4a156bf77d9f17cb50011699a4_default.png", + "id": 15892921, + "username": "Aco__Malay", + "fullName": "Aco__Malay", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15892921/medium/f212dc708958dc7ccdcc9e1fceab4f47_default.png", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 29872 }, "languages": [ { "language": { - "id": "pl", - "name": "Polish", - "userRole": "Translator", + "id": "ms", + "name": "Malay", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 29872 }, "translated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 342, + "default": 29530, + "total": 29872 }, "targetTranslated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 339, + "default": 27295, + "total": 27634 }, "translatedByMt": { "tmMatch": 0, @@ -1150,12 +1111,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 35503 }, "translationCosts": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 342, + "default": 29530, + "total": 29872 }, "approvalCosts": { "tmMatch": 0, @@ -1167,33 +1128,33 @@ }, { "user": { - "id": 15976319, - "username": "DavidNottin", - "fullName": "DavidNottin", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15976319/medium/715554f1adff535b74e11e026acf1825.jpeg", + "id": 13599211, + "username": "Aco_crowdin_CZ_ED", + "fullName": "Aco_crowdin_CZ_ED", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13599211/medium/e626b0779d428714a38d27f1f640b7ce_default.png", "preTranslated": 0, - "totalCosts": 295 + "totalCosts": 0 }, "languages": [ { "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", + "id": "pl", + "name": "Polish", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 295 + "totalCosts": 0 }, "translated": { - "tmMatch": 19, - "default": 276, - "total": 295 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 33, - "default": 361, - "total": 394 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -1203,12 +1164,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 65 }, "translationCosts": { - "tmMatch": 19, - "default": 276, - "total": 295 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, @@ -1220,33 +1181,33 @@ }, { "user": { - "id": 15956221, - "username": "DerrickTseng", - "fullName": "DerrickTseng", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956221/medium/e08e7d4e13f3e512f900aff7fddcaa4c_default.png", + "id": 15986843, + "username": "Aco_crowdin_PL", + "fullName": "Aco_crowdin_PL", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15986843/medium/7d0b6e5c74ce61c7e88c321c1e91f56c_default.png", "preTranslated": 0, - "totalCosts": 43 + "totalCosts": 734 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", + "id": "pl", + "name": "Polish", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 43 + "totalCosts": 734 }, "translated": { - "tmMatch": 0, - "default": 43, - "total": 43 + "tmMatch": 71, + "default": 663, + "total": 734 }, "targetTranslated": { - "tmMatch": 0, - "default": 75, - "total": 75 + "tmMatch": 58, + "default": 632, + "total": 690 }, "translatedByMt": { "tmMatch": 0, @@ -1256,12 +1217,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 39705 }, "translationCosts": { - "tmMatch": 0, - "default": 43, - "total": 43 + "tmMatch": 71, + "default": 663, + "total": 734 }, "approvalCosts": { "tmMatch": 0, @@ -1273,33 +1234,33 @@ }, { "user": { - "id": 15962387, - "username": "Drt25", - "fullName": "Drt25", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962387/medium/9484ea08d19c9f75136516dad89e16f2_default.png", + "id": 15256998, + "username": "Aco_gmtraductions", + "fullName": "Aco_gmtraductions", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15256998/medium/1080c1f5f785cd542b310f0c840db93f_default.png", "preTranslated": 0, - "totalCosts": 59 + "totalCosts": 568 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", + "id": "fr", + "name": "French", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 59 + "totalCosts": 568 }, "translated": { - "tmMatch": 59, - "default": 0, - "total": 59 + "tmMatch": 89, + "default": 479, + "total": 568 }, "targetTranslated": { - "tmMatch": 61, - "default": 0, - "total": 61 + "tmMatch": 94, + "default": 576, + "total": 670 }, "translatedByMt": { "tmMatch": 0, @@ -1309,12 +1270,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 22507 }, "translationCosts": { - "tmMatch": 59, - "default": 0, - "total": 59 + "tmMatch": 89, + "default": 479, + "total": 568 }, "approvalCosts": { "tmMatch": 0, @@ -1326,33 +1287,33 @@ }, { "user": { - "id": 15962145, - "username": "Ecla-", - "fullName": "Ecla-", + "id": 15911391, + "username": "Aleczzz", + "fullName": "Aleczzz", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962145/medium/e12db5a3b41f421ccb8f3f54f71681da_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911391/medium/b8497df2da3374cd5f0cb8183169e4db_default.png", "preTranslated": 0, - "totalCosts": 21 + "totalCosts": 78 }, "languages": [ { "language": { - "id": "be", - "name": "Belarusian", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 21 + "totalCosts": 78 }, "translated": { "tmMatch": 0, - "default": 21, - "total": 21 + "default": 78, + "total": 78 }, "targetTranslated": { "tmMatch": 0, - "default": 19, - "total": 19 + "default": 135, + "total": 135 }, "translatedByMt": { "tmMatch": 0, @@ -1366,8 +1327,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 21, - "total": 21 + "default": 78, + "total": 78 }, "approvalCosts": { "tmMatch": 0, @@ -1379,33 +1340,33 @@ }, { "user": { - "id": 15952201, - "username": "Eniale", - "fullName": "Eniale", + "id": 16022912, + "username": "Altyn31", + "fullName": "Altyn31", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952201/medium/70ddfc80063bd4b296bc3997bd5fd808_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16022912/medium/9c3082f5adec6acee597acc3eb5849ab_default.png", "preTranslated": 0, - "totalCosts": 1280 + "totalCosts": 343 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1280 + "totalCosts": 343 }, "translated": { - "tmMatch": 2, - "default": 1278, - "total": 1280 + "tmMatch": 0, + "default": 343, + "total": 343 }, "targetTranslated": { - "tmMatch": 4, - "default": 2144, - "total": 2148 + "tmMatch": 0, + "default": 307, + "total": 307 }, "translatedByMt": { "tmMatch": 0, @@ -1418,9 +1379,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 1278, - "total": 1280 + "tmMatch": 0, + "default": 343, + "total": 343 }, "approvalCosts": { "tmMatch": 0, @@ -1432,33 +1393,33 @@ }, { "user": { - "id": 14300370, - "username": "Exness_GL_KM_Trans", - "fullName": "Exness_GL_KM_Trans", + "id": 16013441, + "username": "Arabtom", + "fullName": "Arabtom", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14300370/medium/2d03fbcbdc373f79dbe722e5a31ab235_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16013441/medium/289ee7bd0a5230cbd3116731fa32efe5_default.png", "preTranslated": 0, - "totalCosts": 1000 + "totalCosts": 17 }, "languages": [ { "language": { - "id": "km", - "name": "Khmer", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1000 + "totalCosts": 15 }, "translated": { - "tmMatch": 8, - "default": 992, - "total": 1000 + "tmMatch": 0, + "default": 15, + "total": 15 }, "targetTranslated": { - "tmMatch": 12, - "default": 1231, - "total": 1243 + "tmMatch": 0, + "default": 10, + "total": 10 }, "translatedByMt": { "tmMatch": 0, @@ -1471,47 +1432,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 8, - "default": 992, - "total": 1000 + "tmMatch": 0, + "default": 15, + "total": 15 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15156816, - "username": "Fengfeng0157", - "fullName": "Fengfeng0157", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15156816/medium/8ce4621e9192a27e8a0ec7e37d9e316e_default.png", - "preTranslated": 0, - "totalCosts": 1809 - }, - "languages": [ + }, { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1809 + "totalCosts": 2 }, "translated": { - "tmMatch": 3, - "default": 1806, - "total": 1809 + "tmMatch": 0, + "default": 2, + "total": 2 }, "targetTranslated": { - "tmMatch": 5, - "default": 3074, - "total": 3079 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -1524,9 +1472,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 1806, - "total": 1809 + "tmMatch": 0, + "default": 2, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -1538,13 +1486,13 @@ }, { "user": { - "id": 15266690, - "username": "Fuliggine", - "fullName": "Fuliggine", + "id": 15999589, + "username": "Cyb3rAlbe", + "fullName": "Cyb3rAlbe", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15999589/medium/ddab3cd8912607254ba7764bb5831504_default.png", "preTranslated": 0, - "totalCosts": 12497 + "totalCosts": 4 }, "languages": [ { @@ -1554,22 +1502,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12497 + "totalCosts": 4 }, "translated": { - "tmMatch": 100, - "default": 12397, - "total": 12497 + "tmMatch": 0, + "default": 4, + "total": 4 }, "targetTranslated": { - "tmMatch": 107, - "default": 13321, - "total": 13428 + "tmMatch": 0, + "default": 7, + "total": 7 }, "translatedByMt": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -1577,9 +1525,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 100, - "default": 12397, - "total": 12497 + "tmMatch": 0, + "default": 4, + "total": 4 }, "approvalCosts": { "tmMatch": 0, @@ -1591,38 +1539,38 @@ }, { "user": { - "id": 15967065, - "username": "Gokulvinayak", - "fullName": "Gokulvinayak", + "id": 15992561, + "username": "Hongyan_Lin", + "fullName": "Hongyan_Lin", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967065/medium/281908a6904091e81b3a34a802f97ce0_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992561/medium/b10820bf840fc1f866510c5e1cb474ba_default.png", "preTranslated": 0, - "totalCosts": 681 + "totalCosts": 49 }, "languages": [ { "language": { - "id": "ml-IN", - "name": "Malayalam", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 681 + "totalCosts": 49 }, "translated": { - "tmMatch": 16, - "default": 665, - "total": 681 + "tmMatch": 0, + "default": 49, + "total": 49 }, "targetTranslated": { - "tmMatch": 31, - "default": 1188, - "total": 1219 + "tmMatch": 0, + "default": 86, + "total": 86 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "approved": { "tmMatch": 0, @@ -1630,9 +1578,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 16, - "default": 665, - "total": 681 + "tmMatch": 0, + "default": 49, + "total": 49 }, "approvalCosts": { "tmMatch": 0, @@ -1644,33 +1592,33 @@ }, { "user": { - "id": 15968155, - "username": "Hamkad28", - "fullName": "Hamkad28", + "id": 15992537, + "username": "JXP", + "fullName": "JXP", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968155/medium/b7abce11e0d0a2b2a0038f03cbc95c31_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992537/medium/3774a54dc86212554420221ded24447f_default.png", "preTranslated": 0, - "totalCosts": 2347 + "totalCosts": 4 }, "languages": [ { "language": { - "id": "yo", - "name": "Yoruba", + "id": "ja", + "name": "Japanese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2347 + "totalCosts": 4 }, "translated": { - "tmMatch": 7, - "default": 2340, - "total": 2347 + "tmMatch": 0, + "default": 4, + "total": 4 }, "targetTranslated": { - "tmMatch": 10, - "default": 2898, - "total": 2908 + "tmMatch": 0, + "default": 12, + "total": 12 }, "translatedByMt": { "tmMatch": 0, @@ -1683,9 +1631,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 2340, - "total": 2347 + "tmMatch": 0, + "default": 4, + "total": 4 }, "approvalCosts": { "tmMatch": 0, @@ -1697,38 +1645,38 @@ }, { "user": { - "id": 15955263, - "username": "Heyhei", - "fullName": "Heyhei", + "id": 15344526, + "username": "Joanmacat", + "fullName": "Joanmacat", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955263/medium/51ba4f008f63f1b37ac900269bcaccc0_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15344526/medium/9c82a079035424edd8b43ca59a8dcb3f.jpg", "preTranslated": 0, - "totalCosts": 569 + "totalCosts": 1940 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "ca", + "name": "Catalan", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 569 + "totalCosts": 1940 }, "translated": { - "tmMatch": 114, - "default": 455, - "total": 569 + "tmMatch": 12, + "default": 1928, + "total": 1940 }, "targetTranslated": { - "tmMatch": 223, - "default": 834, - "total": 1057 + "tmMatch": 12, + "default": 2198, + "total": 2210 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 7, "default": 0, - "total": 0 + "total": 7 }, "approved": { "tmMatch": 0, @@ -1736,9 +1684,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 114, - "default": 455, - "total": 569 + "tmMatch": 12, + "default": 1928, + "total": 1940 }, "approvalCosts": { "tmMatch": 0, @@ -1750,33 +1698,33 @@ }, { "user": { - "id": 15967601, - "username": "Itungbenga", - "fullName": "Itungbenga", + "id": 15714091, + "username": "Karym_GG", + "fullName": "Karym_GG", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967601/medium/32f675299bf73e2baee8c785c6965848_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png", "preTranslated": 0, - "totalCosts": 427 + "totalCosts": 494 }, "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 427 + "totalCosts": 494 }, "translated": { "tmMatch": 0, - "default": 427, - "total": 427 + "default": 494, + "total": 494 }, "targetTranslated": { "tmMatch": 0, - "default": 446, - "total": 446 + "default": 506, + "total": 506 }, "translatedByMt": { "tmMatch": 0, @@ -1790,8 +1738,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 427, - "total": 427 + "default": 494, + "total": 494 }, "approvalCosts": { "tmMatch": 0, @@ -1803,33 +1751,33 @@ }, { "user": { - "id": 15946997, - "username": "JayYu", - "fullName": "JayYu", + "id": 16009153, + "username": "Kuroel", + "fullName": "Kuroel", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946997/medium/4a7a81b173194aae53369a16f7ef405e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16009153/medium/6a4910f3a51034bffd17a5102774f43c_default.png", "preTranslated": 0, - "totalCosts": 295 + "totalCosts": 9 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "pt-PT", + "name": "Portuguese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 295 + "totalCosts": 9 }, "translated": { - "tmMatch": 6, - "default": 289, - "total": 295 + "tmMatch": 0, + "default": 9, + "total": 9 }, "targetTranslated": { - "tmMatch": 10, - "default": 513, - "total": 523 + "tmMatch": 0, + "default": 10, + "total": 10 }, "translatedByMt": { "tmMatch": 0, @@ -1842,9 +1790,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 6, - "default": 289, - "total": 295 + "tmMatch": 0, + "default": 9, + "total": 9 }, "approvalCosts": { "tmMatch": 0, @@ -1856,33 +1804,33 @@ }, { "user": { - "id": 15662523, - "username": "Jokowdd", - "fullName": "Jokowdd", + "id": 15993271, + "username": "Lilian_chou", + "fullName": "Lilian_chou", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15662523/medium/4039d75a804e9c859bfb21d965e9bcb9_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993271/medium/fadd2314e88da12bf8895fdb3ac65062_default.png", "preTranslated": 0, - "totalCosts": 8031 + "totalCosts": 24 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8031 + "totalCosts": 24 }, "translated": { - "tmMatch": 30, - "default": 8001, - "total": 8031 + "tmMatch": 0, + "default": 24, + "total": 24 }, "targetTranslated": { - "tmMatch": 31, - "default": 7460, - "total": 7491 + "tmMatch": 0, + "default": 41, + "total": 41 }, "translatedByMt": { "tmMatch": 0, @@ -1895,9 +1843,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 30, - "default": 8001, - "total": 8031 + "tmMatch": 0, + "default": 24, + "total": 24 }, "approvalCosts": { "tmMatch": 0, @@ -1909,33 +1857,33 @@ }, { "user": { - "id": 15978923, - "username": "Kras296", - "fullName": "Kras296", + "id": 15967239, + "username": "MahdiRezaeian", + "fullName": "MahdiRezaeian", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15978923/medium/4cca07eeabcb2ba32a55e66b0bbcec7c.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967239/medium/a3fdd1e460fca7c1a39ec8f00a4ad059_default.png", "preTranslated": 0, - "totalCosts": 64 + "totalCosts": 357 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 64 + "totalCosts": 357 }, "translated": { - "tmMatch": 0, - "default": 64, - "total": 64 + "tmMatch": 11, + "default": 346, + "total": 357 }, "targetTranslated": { - "tmMatch": 0, - "default": 78, - "total": 78 + "tmMatch": 13, + "default": 436, + "total": 449 }, "translatedByMt": { "tmMatch": 0, @@ -1948,9 +1896,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 64, - "total": 64 + "tmMatch": 11, + "default": 346, + "total": 357 }, "approvalCosts": { "tmMatch": 0, @@ -1962,33 +1910,33 @@ }, { "user": { - "id": 15967369, - "username": "Krishna2992", - "fullName": "Krishna2992", + "id": 15997653, + "username": "Phana", + "fullName": "Phana", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967369/medium/c6c620bf9be7a72e246c55971f82fbac_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15997653/medium/d76b042af6978c35c2bd605f403b20d2_default.png", "preTranslated": 0, - "totalCosts": 3310 + "totalCosts": 42 }, "languages": [ { "language": { - "id": "hi", - "name": "Hindi", + "id": "th", + "name": "Thai", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3310 + "totalCosts": 42 }, "translated": { - "tmMatch": 3, - "default": 3307, - "total": 3310 + "tmMatch": 1, + "default": 41, + "total": 42 }, "targetTranslated": { - "tmMatch": 3, - "default": 5690, - "total": 5693 + "tmMatch": 1, + "default": 26, + "total": 27 }, "translatedByMt": { "tmMatch": 0, @@ -2001,9 +1949,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 3307, - "total": 3310 + "tmMatch": 1, + "default": 41, + "total": 42 }, "approvalCosts": { "tmMatch": 0, @@ -2015,33 +1963,33 @@ }, { "user": { - "id": 15965405, - "username": "LaraWeb3", - "fullName": "LaraWeb3", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965405/medium/8eeddd3c27c380aeaca8bf3c9ce55c5f_default.png", + "id": 15427034, + "username": "SSB_HR_Trans", + "fullName": "SSB_HR_Trans", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15427034/medium/c1c9ab53edcbf78210434ef0cc76e619_default.png", "preTranslated": 0, - "totalCosts": 66 + "totalCosts": 52 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", + "id": "hr", + "name": "Croatian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 66 + "totalCosts": 52 }, "translated": { "tmMatch": 0, - "default": 66, - "total": 66 + "default": 52, + "total": 52 }, "targetTranslated": { "tmMatch": 0, - "default": 118, - "total": 118 + "default": 60, + "total": 60 }, "translatedByMt": { "tmMatch": 0, @@ -2051,12 +1999,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 3090 }, "translationCosts": { "tmMatch": 0, - "default": 66, - "total": 66 + "default": 52, + "total": 52 }, "approvalCosts": { "tmMatch": 0, @@ -2068,33 +2016,33 @@ }, { "user": { - "id": 15965949, - "username": "Lazaro0809", - "fullName": "Lazaro0809", + "id": 15621535, + "username": "Skri_A_E_proof", + "fullName": "Skri_A_E_proof", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965949/medium/9020c1f4fa4c1fa572cb78f2ee3a3257_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15621535/medium/9e57ed0ad6fb0e7e4e7f71f317fa9ac4_default.png", "preTranslated": 0, - "totalCosts": 11 + "totalCosts": 1130 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11 + "totalCosts": 1130 }, "translated": { - "tmMatch": 11, - "default": 0, - "total": 11 + "tmMatch": 14, + "default": 1116, + "total": 1130 }, "targetTranslated": { - "tmMatch": 23, - "default": 0, - "total": 23 + "tmMatch": 8, + "default": 1071, + "total": 1079 }, "translatedByMt": { "tmMatch": 0, @@ -2107,9 +2055,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 11, - "default": 0, - "total": 11 + "tmMatch": 14, + "default": 1116, + "total": 1130 }, "approvalCosts": { "tmMatch": 0, @@ -2121,33 +2069,33 @@ }, { "user": { - "id": 15968137, - "username": "Leogold01", - "fullName": "Leogold01", + "id": 15998479, + "username": "ThePirateJack", + "fullName": "ThePirateJack", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968137/medium/14334f5b9543e5be30e0b6e04fcc793e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15998479/medium/f5c17357aad5b0d2ffc9ad0ac910d5bf_default.png", "preTranslated": 0, - "totalCosts": 1 + "totalCosts": 462 }, "languages": [ { "language": { - "id": "yo", - "name": "Yoruba", + "id": "ka", + "name": "Georgian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1 + "totalCosts": 462 }, "translated": { "tmMatch": 0, - "default": 1, - "total": 1 + "default": 462, + "total": 462 }, "targetTranslated": { "tmMatch": 0, - "default": 1, - "total": 1 + "default": 377, + "total": 377 }, "translatedByMt": { "tmMatch": 0, @@ -2161,8 +2109,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 1, - "total": 1 + "default": 462, + "total": 462 }, "approvalCosts": { "tmMatch": 0, @@ -2174,38 +2122,38 @@ }, { "user": { - "id": 15940649, - "username": "Lohithkotni", - "fullName": "Lohithkotni", + "id": 16002883, + "username": "Tskhvedo", + "fullName": "Tskhvedo", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15940649/medium/8528f19ca43f8bab29f5994953fbaf27_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16002883/medium/d399bc23341cd2bf55a5fb1a0aff8b46_default.png", "preTranslated": 0, - "totalCosts": 3185 + "totalCosts": 1869 }, "languages": [ { "language": { - "id": "te", - "name": "Telugu", - "userRole": "Translator", + "id": "ka", + "name": "Georgian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3185 + "totalCosts": 1763 }, "translated": { - "tmMatch": 60, - "default": 3125, - "total": 3185 + "tmMatch": 34, + "default": 1729, + "total": 1763 }, "targetTranslated": { - "tmMatch": 83, - "default": 3917, - "total": 4000 + "tmMatch": 33, + "default": 1400, + "total": 1433 }, "translatedByMt": { - "tmMatch": 2, - "default": 1, - "total": 3 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -2213,47 +2161,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 60, - "default": 3125, - "total": 3185 + "tmMatch": 34, + "default": 1729, + "total": 1763 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15965675, - "username": "MEEidd", - "fullName": "MEEidd", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965675/medium/63c88b962f4111a3f584708e303b58b5_default.png", - "preTranslated": 0, - "totalCosts": 89 - }, - "languages": [ + }, { "language": { - "id": "ar", - "name": "Arabic", + "id": "gu-IN", + "name": "Gujarati", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 89 + "totalCosts": 1 }, "translated": { "tmMatch": 0, - "default": 89, - "total": 89 + "default": 1, + "total": 1 }, "targetTranslated": { "tmMatch": 0, - "default": 87, - "total": 87 + "default": 2, + "total": 2 }, "translatedByMt": { "tmMatch": 0, @@ -2267,46 +2202,33 @@ }, "translationCosts": { "tmMatch": 0, - "default": 89, - "total": 89 + "default": 1, + "total": 1 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15961053, - "username": "MK10", - "fullName": "MK10", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961053/medium/432a1dbe56da10837b16cb865303c70b_default.png", - "preTranslated": 0, - "totalCosts": 2861 - }, - "languages": [ + }, { "language": { - "id": "sw", - "name": "Swahili", + "id": "mk", + "name": "Macedonian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2861 + "totalCosts": 102 }, "translated": { - "tmMatch": 19, - "default": 2842, - "total": 2861 + "tmMatch": 6, + "default": 96, + "total": 102 }, "targetTranslated": { - "tmMatch": 19, - "default": 2980, - "total": 2999 + "tmMatch": 6, + "default": 94, + "total": 100 }, "translatedByMt": { "tmMatch": 0, @@ -2319,47 +2241,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 19, - "default": 2842, - "total": 2861 + "tmMatch": 6, + "default": 96, + "total": 102 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15967239, - "username": "MahdiRezaeian", - "fullName": "MahdiRezaeian", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967239/medium/a3fdd1e460fca7c1a39ec8f00a4ad059_default.png", - "preTranslated": 0, - "totalCosts": 2757 - }, - "languages": [ + }, { "language": { - "id": "fa", - "name": "Persian", + "id": "ti", + "name": "Tigrinya", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2757 + "totalCosts": 3 }, "translated": { - "tmMatch": 14, - "default": 2743, - "total": 2757 + "tmMatch": 0, + "default": 3, + "total": 3 }, "targetTranslated": { - "tmMatch": 16, - "default": 3594, - "total": 3610 + "tmMatch": 0, + "default": 3, + "total": 3 }, "translatedByMt": { "tmMatch": 0, @@ -2372,9 +2281,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 14, - "default": 2743, - "total": 2757 + "tmMatch": 0, + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, @@ -2386,33 +2295,33 @@ }, { "user": { - "id": 15973225, - "username": "Megapost", - "fullName": "Megapost", + "id": 16014193, + "username": "Znamenshikov96", + "fullName": "Znamenshikov96", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15973225/medium/79f76ae492704316fe05ce393db4361e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16014193/medium/84b6d648d4704b4025b53d0de4ec83e7_default.png", "preTranslated": 0, - "totalCosts": 5 + "totalCosts": 1 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5 + "totalCosts": 1 }, "translated": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 1, + "total": 1 }, "targetTranslated": { "tmMatch": 0, - "default": 1, - "total": 1 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -2426,8 +2335,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 1, + "total": 1 }, "approvalCosts": { "tmMatch": 0, @@ -2439,33 +2348,33 @@ }, { "user": { - "id": 15970299, - "username": "Mishkaa888", - "fullName": "Mishkaa888", + "id": 15966817, + "username": "afiqz", + "fullName": "afiqz", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15970299/medium/a08aae4d793ead4871bdb225f2821c58_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966817/medium/c84993de3bc9bf0b9eb7882012279118_default.png", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 83 }, "languages": [ { "language": { - "id": "pl", - "name": "Polish", + "id": "ms", + "name": "Malay", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 83 }, "translated": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 83, + "total": 83 }, "targetTranslated": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 86, + "total": 86 }, "translatedByMt": { "tmMatch": 0, @@ -2479,8 +2388,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 83, + "total": 83 }, "approvalCosts": { "tmMatch": 0, @@ -2492,33 +2401,33 @@ }, { "user": { - "id": 15966785, - "username": "Muneeb938", - "fullName": "Muneeb938", + "id": 14668500, + "username": "alina.t", + "fullName": "alina.t", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966785/medium/452a7c1736c347e636e4344ef22886af.JPG", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14668500/medium/98cd841cc552285bd60d87aee560a77f_default.png", "preTranslated": 0, - "totalCosts": 275 + "totalCosts": 10 }, "languages": [ { "language": { - "id": "ur-PK", - "name": "Urdu (Pakistan)", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 275 + "totalCosts": 10 }, "translated": { - "tmMatch": 16, - "default": 259, - "total": 275 + "tmMatch": 0, + "default": 10, + "total": 10 }, "targetTranslated": { - "tmMatch": 18, - "default": 371, - "total": 389 + "tmMatch": 0, + "default": 9, + "total": 9 }, "translatedByMt": { "tmMatch": 0, @@ -2531,9 +2440,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 16, - "default": 259, - "total": 275 + "tmMatch": 0, + "default": 10, + "total": 10 }, "approvalCosts": { "tmMatch": 0, @@ -2545,33 +2454,33 @@ }, { "user": { - "id": 15956299, - "username": "Nourbusnss", - "fullName": "Nourbusnss", + "id": 15966545, + "username": "askr", + "fullName": "askr", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956299/medium/fabba3da17a7c7b7d8ab8769e4d38fad_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966545/medium/350ebd9c64c3a9a5244827c6f34d05e7_default.png", "preTranslated": 0, - "totalCosts": 50 + "totalCosts": 138 }, "languages": [ { "language": { - "id": "ro", - "name": "Romanian", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 50 + "totalCosts": 138 }, "translated": { - "tmMatch": 2, - "default": 48, - "total": 50 + "tmMatch": 35, + "default": 103, + "total": 138 }, "targetTranslated": { - "tmMatch": 3, - "default": 49, - "total": 52 + "tmMatch": 44, + "default": 113, + "total": 157 }, "translatedByMt": { "tmMatch": 0, @@ -2584,9 +2493,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 48, - "total": 50 + "tmMatch": 35, + "default": 103, + "total": 138 }, "approvalCosts": { "tmMatch": 0, @@ -2598,33 +2507,33 @@ }, { "user": { - "id": 15879525, - "username": "Oracle_001", - "fullName": "Oracle_001", + "id": 15988145, + "username": "cxr1025048717", + "fullName": "cxr1025048717", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15879525/medium/2a42c9d405b56de89be5dad52b9b4f10_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15988145/medium/f630d0d88a1125dbfcb7a0709531db9e_default.png", "preTranslated": 0, - "totalCosts": 927 + "totalCosts": 109 }, "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 927 + "totalCosts": 109 }, "translated": { "tmMatch": 0, - "default": 927, - "total": 927 + "default": 109, + "total": 109 }, "targetTranslated": { "tmMatch": 0, - "default": 977, - "total": 977 + "default": 198, + "total": 198 }, "translatedByMt": { "tmMatch": 0, @@ -2638,8 +2547,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 927, - "total": 927 + "default": 109, + "total": 109 }, "approvalCosts": { "tmMatch": 0, @@ -2651,33 +2560,33 @@ }, { "user": { - "id": 15963465, - "username": "Ozje", - "fullName": "Ozje", + "id": 15993607, + "username": "edurh", + "fullName": "edurh", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963465/medium/da85affc52fa58f2bf27e2e90cebb31e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993607/medium/ed9beba996490505dc07455130c75ae2_default.png", "preTranslated": 0, - "totalCosts": 4613 + "totalCosts": 58 }, "languages": [ { "language": { - "id": "az", - "name": "Azerbaijani", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 242 + "totalCosts": 58 }, "translated": { "tmMatch": 0, - "default": 242, - "total": 242 + "default": 58, + "total": 58 }, "targetTranslated": { "tmMatch": 0, - "default": 189, - "total": 189 + "default": 70, + "total": 70 }, "translatedByMt": { "tmMatch": 0, @@ -2691,33 +2600,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 242, - "total": 242 + "default": 58, + "total": 58 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15841839, + "username": "ekc9399", + "fullName": "ekc9399", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15841839/medium/0a25585c566bb1f7be4cba84b02e8561_default.png", + "preTranslated": 0, + "totalCosts": 109 + }, + "languages": [ { "language": { - "id": "ku", - "name": "Kurdish", + "id": "af", + "name": "Afrikaans", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 50 + "totalCosts": 97 }, "translated": { - "tmMatch": 0, - "default": 50, - "total": 50 + "tmMatch": 3, + "default": 94, + "total": 97 }, "targetTranslated": { - "tmMatch": 0, - "default": 43, - "total": 43 + "tmMatch": 3, + "default": 93, + "total": 96 }, "translatedByMt": { "tmMatch": 0, @@ -2730,9 +2652,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 50, - "total": 50 + "tmMatch": 3, + "default": 94, + "total": 97 }, "approvalCosts": { "tmMatch": 0, @@ -2742,22 +2664,22 @@ }, { "language": { - "id": "tr", - "name": "Turkish", + "id": "ja", + "name": "Japanese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4321 + "totalCosts": 12 }, "translated": { - "tmMatch": 6, - "default": 4315, - "total": 4321 + "tmMatch": 2, + "default": 10, + "total": 12 }, "targetTranslated": { - "tmMatch": 6, - "default": 3617, - "total": 3623 + "tmMatch": 2, + "default": 10, + "total": 12 }, "translatedByMt": { "tmMatch": 0, @@ -2770,9 +2692,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 6, - "default": 4315, - "total": 4321 + "tmMatch": 2, + "default": 10, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -2784,33 +2706,33 @@ }, { "user": { - "id": 15968059, - "username": "Push1", - "fullName": "Push1", + "id": 16003137, + "username": "elmago_666", + "fullName": "elmago_666", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968059/medium/bddd2a4e18ce0ccb37b6779835a1a169_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16003137/medium/d83bcad2a725eed1e3d2a414a24f0d2f_default.png", "preTranslated": 0, - "totalCosts": 1282 + "totalCosts": 4 }, "languages": [ { "language": { - "id": "ig", - "name": "Igbo", + "id": "it", + "name": "Italian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1282 + "totalCosts": 4 }, "translated": { "tmMatch": 0, - "default": 1282, - "total": 1282 + "default": 4, + "total": 4 }, "targetTranslated": { "tmMatch": 0, - "default": 1710, - "total": 1710 + "default": 6, + "total": 6 }, "translatedByMt": { "tmMatch": 0, @@ -2824,8 +2746,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 1282, - "total": 1282 + "default": 4, + "total": 4 }, "approvalCosts": { "tmMatch": 0, @@ -2837,33 +2759,33 @@ }, { "user": { - "id": 15848653, - "username": "QueenNot", - "fullName": "QueenNot", + "id": 16007641, + "username": "giorgip", + "fullName": "giorgip", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15848653/medium/9506bee8d4f41073b7c7fb3523239878_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16007641/medium/c730d07fcac9a78e49a68eb2e33564e1.jpg", "preTranslated": 0, - "totalCosts": 85 + "totalCosts": 181 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Translator", + "id": "ka", + "name": "Georgian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 85 + "totalCosts": 181 }, "translated": { - "tmMatch": 0, - "default": 85, - "total": 85 + "tmMatch": 13, + "default": 168, + "total": 181 }, "targetTranslated": { - "tmMatch": 0, - "default": 153, - "total": 153 + "tmMatch": 12, + "default": 144, + "total": 156 }, "translatedByMt": { "tmMatch": 0, @@ -2876,9 +2798,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 85, - "total": 85 + "tmMatch": 13, + "default": 168, + "total": 181 }, "approvalCosts": { "tmMatch": 0, @@ -2890,33 +2812,33 @@ }, { "user": { - "id": 15918181, - "username": "QuinnHou", - "fullName": "QuinnHou", + "id": 16004519, + "username": "janog82", + "fullName": "janog82", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15918181/medium/17e80957f6d7eef4f215c6cc41951dae_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004519/medium/3a4d1c5b0aa82aa19b0f9350bde398a3_default.png", "preTranslated": 0, - "totalCosts": 1322 + "totalCosts": 73 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "ka", + "name": "Georgian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1322 + "totalCosts": 73 }, "translated": { - "tmMatch": 0, - "default": 1322, - "total": 1322 + "tmMatch": 1, + "default": 72, + "total": 73 }, "targetTranslated": { - "tmMatch": 0, - "default": 2184, - "total": 2184 + "tmMatch": 2, + "default": 54, + "total": 56 }, "translatedByMt": { "tmMatch": 0, @@ -2929,9 +2851,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 1322, - "total": 1322 + "tmMatch": 1, + "default": 72, + "total": 73 }, "approvalCosts": { "tmMatch": 0, @@ -2943,33 +2865,33 @@ }, { "user": { - "id": 15860799, - "username": "Qupi", - "fullName": "Qupi", + "id": 15992393, + "username": "jgE100", + "fullName": "jgE100", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15860799/medium/c296454de1f72e406e181e950413a424_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992393/medium/b0d6ce2292216f607121472236ef7360_default.png", "preTranslated": 0, - "totalCosts": 80 + "totalCosts": 74 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 80 + "totalCosts": 74 }, "translated": { - "tmMatch": 1, - "default": 79, - "total": 80 + "tmMatch": 0, + "default": 74, + "total": 74 }, "targetTranslated": { - "tmMatch": 1, - "default": 65, - "total": 66 + "tmMatch": 0, + "default": 126, + "total": 126 }, "translatedByMt": { "tmMatch": 0, @@ -2982,9 +2904,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 79, - "total": 80 + "tmMatch": 0, + "default": 74, + "total": 74 }, "approvalCosts": { "tmMatch": 0, @@ -2996,38 +2918,38 @@ }, { "user": { - "id": 15946829, - "username": "RainWing", - "fullName": "RainWing", + "id": 16015261, + "username": "mohammedbabach6985", + "fullName": "mohammedbabach6985", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946829/medium/0412f563d7d01d9ded45bec32418ccdb_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16015261/medium/fafcf5457f6d490d82c995fde3b05be9_default.png", "preTranslated": 0, - "totalCosts": 313 + "totalCosts": 7 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 313 + "totalCosts": 7 }, "translated": { - "tmMatch": 6, - "default": 307, - "total": 313 + "tmMatch": 0, + "default": 7, + "total": 7 }, "targetTranslated": { - "tmMatch": 10, - "default": 470, - "total": 480 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "approved": { "tmMatch": 0, @@ -3035,9 +2957,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 6, - "default": 307, - "total": 313 + "tmMatch": 0, + "default": 7, + "total": 7 }, "approvalCosts": { "tmMatch": 0, @@ -3049,33 +2971,33 @@ }, { "user": { - "id": 15946041, - "username": "RanaUsman95", - "fullName": "RanaUsman95", + "id": 16023092, + "username": "mtchkka", + "fullName": "mtchkka", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946041/medium/c853018c4018cfa38dc058bebfbf0f3e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16023092/medium/381adbcacbc363820f19878e129b5d86_default.png", "preTranslated": 0, - "totalCosts": 34 + "totalCosts": 106 }, "languages": [ { "language": { - "id": "ur-PK", - "name": "Urdu (Pakistan)", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 34 + "totalCosts": 106 }, "translated": { - "tmMatch": 11, - "default": 23, - "total": 34 + "tmMatch": 0, + "default": 106, + "total": 106 }, "targetTranslated": { - "tmMatch": 13, - "default": 30, - "total": 43 + "tmMatch": 0, + "default": 92, + "total": 92 }, "translatedByMt": { "tmMatch": 0, @@ -3088,9 +3010,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 11, - "default": 23, - "total": 34 + "tmMatch": 0, + "default": 106, + "total": 106 }, "approvalCosts": { "tmMatch": 0, @@ -3102,13 +3024,13 @@ }, { "user": { - "id": 15976615, - "username": "Ren3_Or3llana", - "fullName": "Ren3_Or3llana", + "id": 15989457, + "username": "narurololiloops", + "fullName": "narurololiloops", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15976615/medium/4a028118efd77ee108c6555cb4b01b73_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15989457/medium/538d4b5dd55c92e2e8e0759fc6870270_default.png", "preTranslated": 0, - "totalCosts": 25 + "totalCosts": 366 }, "languages": [ { @@ -3118,17 +3040,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 25 + "totalCosts": 366 }, "translated": { - "tmMatch": 0, - "default": 25, - "total": 25 + "tmMatch": 77, + "default": 289, + "total": 366 }, "targetTranslated": { - "tmMatch": 0, - "default": 66, - "total": 66 + "tmMatch": 99, + "default": 326, + "total": 425 }, "translatedByMt": { "tmMatch": 0, @@ -3141,9 +3063,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 25, - "total": 25 + "tmMatch": 77, + "default": 289, + "total": 366 }, "approvalCosts": { "tmMatch": 0, @@ -3155,48 +3077,48 @@ }, { "user": { - "id": 15952431, - "username": "Ricky7777", - "fullName": "Ricky7777", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952431/medium/93b10f867535c9c8f3031626550b3343_default.png", + "id": 13986387, + "username": "rafarocha", + "fullName": "rafarocha", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg", "preTranslated": 0, - "totalCosts": 2863 + "totalCosts": 146 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2863 + "totalCosts": 146 }, "translated": { - "tmMatch": 2, - "default": 2861, - "total": 2863 + "tmMatch": 45, + "default": 101, + "total": 146 }, "targetTranslated": { - "tmMatch": 4, - "default": 4961, - "total": 4965 + "tmMatch": 47, + "default": 113, + "total": 160 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 1, "default": 0, - "total": 0 + "total": 1 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 2 }, "translationCosts": { - "tmMatch": 2, - "default": 2861, - "total": 2863 + "tmMatch": 45, + "default": 101, + "total": 146 }, "approvalCosts": { "tmMatch": 0, @@ -3208,38 +3130,38 @@ }, { "user": { - "id": 15947755, - "username": "RubenSilva", - "fullName": "RubenSilva", + "id": 15804803, + "username": "sun_dariia", + "fullName": "sun_dariia", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947755/medium/cf9980cfafab6b7c43f6e16e1ca48324_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15804803/medium/e753b43a4cf480cd2a37c5795cdb83ba_default.png", "preTranslated": 0, - "totalCosts": 10955 + "totalCosts": 752 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10955 + "totalCosts": 752 }, "translated": { - "tmMatch": 31, - "default": 10924, - "total": 10955 + "tmMatch": 1, + "default": 751, + "total": 752 }, "targetTranslated": { - "tmMatch": 28, - "default": 11066, - "total": 11094 + "tmMatch": 1, + "default": 714, + "total": 715 }, "translatedByMt": { - "tmMatch": 3, + "tmMatch": 0, "default": 0, - "total": 3 + "total": 0 }, "approved": { "tmMatch": 0, @@ -3247,9 +3169,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 31, - "default": 10924, - "total": 10955 + "tmMatch": 1, + "default": 751, + "total": 752 }, "approvalCosts": { "tmMatch": 0, @@ -3261,33 +3183,33 @@ }, { "user": { - "id": 15961643, - "username": "SRISAILAPU_AKSHAYA", - "fullName": "SRISAILAPU_AKSHAYA", + "id": 15964877, + "username": "ten5235", + "fullName": "ten5235", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961643/medium/aaea8a108b7c473ab3f0d388619be9fa_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964877/medium/31d3f81a4dc84f53fcc1b3da395a06d4_default.png", "preTranslated": 0, - "totalCosts": 252 + "totalCosts": 130 }, "languages": [ { "language": { - "id": "te", - "name": "Telugu", + "id": "ja", + "name": "Japanese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 252 + "totalCosts": 130 }, "translated": { - "tmMatch": 17, - "default": 235, - "total": 252 + "tmMatch": 0, + "default": 130, + "total": 130 }, "targetTranslated": { - "tmMatch": 26, - "default": 307, - "total": 333 + "tmMatch": 0, + "default": 420, + "total": 420 }, "translatedByMt": { "tmMatch": 0, @@ -3300,9 +3222,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 17, - "default": 235, - "total": 252 + "tmMatch": 0, + "default": 130, + "total": 130 }, "approvalCosts": { "tmMatch": 0, @@ -3314,33 +3236,33 @@ }, { "user": { - "id": 15967461, - "username": "Saampler", - "fullName": "Saampler", + "id": 16005069, + "username": "thanos300693", + "fullName": "thanos300693", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967461/medium/633a316e674d64eaed0138e92d9a0ae9_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16005069/medium/e5d923cc742e014a10dbc03866725215_default.png", "preTranslated": 0, - "totalCosts": 14 + "totalCosts": 956 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "el", + "name": "Greek", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 14 + "totalCosts": 956 }, "translated": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 956, + "total": 956 }, "targetTranslated": { "tmMatch": 0, - "default": 17, - "total": 17 + "default": 1254, + "total": 1254 }, "translatedByMt": { "tmMatch": 0, @@ -3354,8 +3276,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 956, + "total": 956 }, "approvalCosts": { "tmMatch": 0, @@ -3367,33 +3289,33 @@ }, { "user": { - "id": 15310784, - "username": "Sagitario", - "fullName": "Sagitario", + "id": 16003709, + "username": "the-eth-lover", + "fullName": "the-eth-lover", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15310784/medium/cfdc53d28658b94b21e45d51acc457c7.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16003709/medium/b9598ad7bb784e4cdcceeb06025c0e3f_default.png", "preTranslated": 0, - "totalCosts": 2062 + "totalCosts": 506 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2062 + "totalCosts": 506 }, "translated": { - "tmMatch": 13, - "default": 2049, - "total": 2062 + "tmMatch": 0, + "default": 506, + "total": 506 }, "targetTranslated": { - "tmMatch": 13, - "default": 2109, - "total": 2122 + "tmMatch": 0, + "default": 605, + "total": 605 }, "translatedByMt": { "tmMatch": 0, @@ -3406,9 +3328,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 13, - "default": 2049, - "total": 2062 + "tmMatch": 0, + "default": 506, + "total": 506 }, "approvalCosts": { "tmMatch": 0, @@ -3420,33 +3342,33 @@ }, { "user": { - "id": 15968157, - "username": "Sakeenah", - "fullName": "Sakeenah", + "id": 15973859, + "username": "vblackwhale", + "fullName": "vblackwhale", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968157/medium/2c77296e5e802c5883b7c7091e6a81b4_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15973859/medium/e81a181b32492c70a65c85400d6f2e35.jpg", "preTranslated": 0, - "totalCosts": 122 + "totalCosts": 526 }, "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 37 + "totalCosts": 526 }, "translated": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 526, + "total": 526 }, "targetTranslated": { "tmMatch": 0, - "default": 40, - "total": 40 + "default": 598, + "total": 598 }, "translatedByMt": { "tmMatch": 0, @@ -3460,33 +3382,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 526, + "total": 526 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15858389, + "username": "gok7ug", + "fullName": "- - (gok7ug)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15858389/medium/2301dd32710c7c8158a63dc3fb74fddf_default.png", + "preTranslated": 0, + "totalCosts": 133 + }, + "languages": [ { "language": { - "id": "yo", - "name": "Yoruba", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 85 + "totalCosts": 133 }, "translated": { - "tmMatch": 0, - "default": 85, - "total": 85 + "tmMatch": 10, + "default": 123, + "total": 133 }, "targetTranslated": { - "tmMatch": 0, - "default": 83, - "total": 83 + "tmMatch": 14, + "default": 90, + "total": 104 }, "translatedByMt": { "tmMatch": 0, @@ -3499,9 +3434,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 85, - "total": 85 + "tmMatch": 10, + "default": 123, + "total": 133 }, "approvalCosts": { "tmMatch": 0, @@ -3513,48 +3448,48 @@ }, { "user": { - "id": 15965461, - "username": "Satglow", - "fullName": "Satglow", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png", + "id": 14226882, + "username": "FutureTrans01", + "fullName": "ACO_Future Trans (FutureTrans01)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14226882/medium/6f2e227d358c748cdfcd3a1969d69b20_default.png", "preTranslated": 0, - "totalCosts": 64347 + "totalCosts": 145097 }, "languages": [ { "language": { - "id": "hu", - "name": "Hungarian", - "userRole": "Translator", + "id": "tr", + "name": "Turkish", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 64347 + "totalCosts": 145097 }, "translated": { - "tmMatch": 1000, - "default": 63347, - "total": 64347 + "tmMatch": 18085, + "default": 127012, + "total": 145097 }, "targetTranslated": { - "tmMatch": 978, - "default": 57002, - "total": 57980 + "tmMatch": 15367, + "default": 106393, + "total": 121760 }, "translatedByMt": { - "tmMatch": 19, + "tmMatch": 8, "default": 0, - "total": 19 + "total": 8 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 206897 }, "translationCosts": { - "tmMatch": 1000, - "default": 63347, - "total": 64347 + "tmMatch": 18085, + "default": 127012, + "total": 145097 }, "approvalCosts": { "tmMatch": 0, @@ -3566,101 +3501,88 @@ }, { "user": { - "id": 15965647, - "username": "Shitness", - "fullName": "Shitness", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965647/medium/96faf61b3b59c29adf03dca21e03582c.jpg", + "id": 15548673, + "username": "ACO_GU", + "fullName": "ACO_SJS (ACO_GU)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15548673/medium/97b26c4f72dce4b2597928269c77ad95_default.png", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 12957 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Translator", + "id": "kn", + "name": "Kannada", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 11916 }, "translated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 54, + "default": 11862, + "total": 11916 }, "targetTranslated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 115, + "default": 18772, + "total": 18887 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 26, "default": 0, - "total": 0 + "total": 26 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 26741 }, "translationCosts": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 54, + "default": 11862, + "total": 11916 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15957023, - "username": "SniffOnMe", - "fullName": "SniffOnMe", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957023/medium/b93d5105338df048a53fd0f80277185a_default.png", - "preTranslated": 0, - "totalCosts": 181 - }, - "languages": [ + }, { "language": { - "id": "de", - "name": "German", - "userRole": "Translator", + "id": "ne-NP", + "name": "Nepali", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 181 + "totalCosts": 1041 }, "translated": { - "tmMatch": 0, - "default": 181, - "total": 181 + "tmMatch": 56, + "default": 985, + "total": 1041 }, "targetTranslated": { - "tmMatch": 0, - "default": 179, - "total": 179 + "tmMatch": 101, + "default": 1588, + "total": 1689 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1420 }, "translationCosts": { - "tmMatch": 0, - "default": 181, - "total": 181 + "tmMatch": 56, + "default": 985, + "total": 1041 }, "approvalCosts": { "tmMatch": 0, @@ -3672,101 +3594,88 @@ }, { "user": { - "id": 15952273, - "username": "Soplayerone", - "fullName": "Soplayerone", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952273/medium/6e9e5b686eb18071b84f2eaf7273db6e_default.png", + "id": 13151214, + "username": "Aco_Trans", + "fullName": "Aco (Aco_Trans)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13151214/medium/8d49c17a9752eec54b3a976695e23834_default.png", "preTranslated": 0, - "totalCosts": 132 + "totalCosts": 55846 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", + "id": "ru", + "name": "Russian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 132 + "totalCosts": 44227 }, "translated": { - "tmMatch": 0, - "default": 132, - "total": 132 + "tmMatch": 3181, + "default": 41046, + "total": 44227 }, "targetTranslated": { - "tmMatch": 0, - "default": 274, - "total": 274 + "tmMatch": 2943, + "default": 37625, + "total": 40568 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 2, + "default": 4, + "total": 6 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 56218 }, "translationCosts": { - "tmMatch": 0, - "default": 132, - "total": 132 + "tmMatch": 3181, + "default": 41046, + "total": 44227 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15967793, - "username": "TanjaPale", - "fullName": "TanjaPale", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967793/medium/7a23945a1b7ec0fd21d81d4820ba115f_default.png", - "preTranslated": 0, - "totalCosts": 31097 - }, - "languages": [ + }, { "language": { - "id": "sr-CS", - "name": "Serbian (Latin)", - "userRole": "Translator", + "id": "uk", + "name": "Ukrainian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 31097 + "totalCosts": 11619 }, "translated": { - "tmMatch": 99, - "default": 30998, - "total": 31097 + "tmMatch": 948, + "default": 10671, + "total": 11619 }, "targetTranslated": { - "tmMatch": 97, - "default": 29951, - "total": 30048 + "tmMatch": 869, + "default": 9922, + "total": 10791 }, "translatedByMt": { - "tmMatch": 4, + "tmMatch": 0, "default": 0, - "total": 4 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 13883 }, "translationCosts": { - "tmMatch": 99, - "default": 30998, - "total": 31097 + "tmMatch": 948, + "default": 10671, + "total": 11619 }, "approvalCosts": { "tmMatch": 0, @@ -3778,245 +3687,193 @@ }, { "user": { - "id": 15956949, - "username": "TommyWolf", - "fullName": "TommyWolf", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956949/medium/ca17c635be37e8460b6e23b17d4eed05_default.png", + "id": 15036379, + "username": "bayan-tech", + "fullName": "Aco-BayanTech (bayan-tech)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15036379/medium/753e141785d6f0c1dd9d90a6df87eb05_default.png", "preTranslated": 0, - "totalCosts": 6536 + "totalCosts": 74703 }, "languages": [ { "language": { - "id": "sk", - "name": "Slovak", - "userRole": "Translator", + "id": "am", + "name": "Amharic", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 6536 + "totalCosts": 6066 }, "translated": { - "tmMatch": 168, - "default": 6368, - "total": 6536 + "tmMatch": 84, + "default": 5982, + "total": 6066 }, "targetTranslated": { - "tmMatch": 153, - "default": 5951, - "total": 6104 + "tmMatch": 75, + "default": 4862, + "total": 4937 }, "translatedByMt": { - "tmMatch": 24, - "default": 2, - "total": 26 + "tmMatch": 1, + "default": 0, + "total": 1 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 10089 }, "translationCosts": { - "tmMatch": 168, - "default": 6368, - "total": 6536 + "tmMatch": 84, + "default": 5982, + "total": 6066 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15950093, - "username": "WholesomeBruh", - "fullName": "WholesomeBruh", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15950093/medium/0ca7566575ffb3df8169a24c985fc2f8_default.png", - "preTranslated": 0, - "totalCosts": 5041 - }, - "languages": [ + }, { "language": { - "id": "hi", - "name": "Hindi", - "userRole": "Translator", + "id": "ar", + "name": "Arabic", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5041 + "totalCosts": 13716 }, "translated": { - "tmMatch": 21, - "default": 5020, - "total": 5041 + "tmMatch": 677, + "default": 13039, + "total": 13716 }, "targetTranslated": { - "tmMatch": 32, - "default": 8996, - "total": 9028 + "tmMatch": 648, + "default": 12750, + "total": 13398 }, "translatedByMt": { - "tmMatch": 8, - "default": 12, - "total": 20 + "tmMatch": 15, + "default": 0, + "total": 15 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 14484 }, "translationCosts": { - "tmMatch": 21, - "default": 5020, - "total": 5041 + "tmMatch": 677, + "default": 13039, + "total": 13716 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15966817, - "username": "afiqz", - "fullName": "afiqz", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966817/medium/c84993de3bc9bf0b9eb7882012279118_default.png", - "preTranslated": 0, - "totalCosts": 3331 - }, - "languages": [ + }, { "language": { - "id": "ms", - "name": "Malay", - "userRole": "Translator", + "id": "hy-AM", + "name": "Armenian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3331 + "totalCosts": 3810 }, "translated": { - "tmMatch": 31, - "default": 3300, - "total": 3331 + "tmMatch": 629, + "default": 3181, + "total": 3810 }, "targetTranslated": { - "tmMatch": 31, - "default": 2956, - "total": 2987 + "tmMatch": 567, + "default": 3236, + "total": 3803 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 1, "default": 0, - "total": 0 + "total": 1 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 10695 }, "translationCosts": { - "tmMatch": 31, - "default": 3300, - "total": 3331 + "tmMatch": 629, + "default": 3181, + "total": 3810 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15730101, - "username": "anaphant", - "fullName": "anaphant", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15730101/medium/54df140ba50202fe839069eb63683d45.png", - "preTranslated": 0, - "totalCosts": 2412 - }, - "languages": [ + }, { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", + "id": "az", + "name": "Azerbaijani", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2412 + "totalCosts": 5741 }, "translated": { - "tmMatch": 24, - "default": 2388, - "total": 2412 + "tmMatch": 222, + "default": 5519, + "total": 5741 }, "targetTranslated": { - "tmMatch": 38, - "default": 2963, - "total": 3001 + "tmMatch": 236, + "default": 4797, + "total": 5033 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 3, "default": 0, - "total": 0 + "total": 3 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 8797 }, "translationCosts": { - "tmMatch": 24, - "default": 2388, - "total": 2412 + "tmMatch": 222, + "default": 5519, + "total": 5741 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15948119, - "username": "andy314", - "fullName": "andy314", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948119/medium/a07f80653e7d4bafe82bd7e8a3a44cec_default.png", - "preTranslated": 0, - "totalCosts": 33 - }, - "languages": [ + }, { "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", + "id": "ig", + "name": "Igbo", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 33 + "totalCosts": 20228 }, "translated": { - "tmMatch": 0, - "default": 33, - "total": 33 + "tmMatch": 117, + "default": 20111, + "total": 20228 }, "targetTranslated": { - "tmMatch": 0, - "default": 29, - "total": 29 + "tmMatch": 161, + "default": 23080, + "total": 23241 }, "translatedByMt": { "tmMatch": 0, @@ -4026,50 +3883,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 23331 }, "translationCosts": { - "tmMatch": 0, - "default": 33, - "total": 33 + "tmMatch": 117, + "default": 20111, + "total": 20228 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 13440487, - "username": "annuska2902", - "fullName": "annuska2902", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13440487/medium/673f0937920d5419069d2e9fb004e6f2.jpg", - "preTranslated": 0, - "totalCosts": 11 - }, - "languages": [ + }, { "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", + "id": "fa", + "name": "Persian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11 + "totalCosts": 20530 }, "translated": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 2178, + "default": 18352, + "total": 20530 }, "targetTranslated": { - "tmMatch": 0, - "default": 8, - "total": 8 + "tmMatch": 2750, + "default": 22813, + "total": 25563 }, "translatedByMt": { "tmMatch": 0, @@ -4079,50 +3923,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 29061 }, "translationCosts": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 2178, + "default": 18352, + "total": 20530 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15967893, - "username": "apacala", - "fullName": "apacala", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967893/medium/6f427c7b8d63cf93f27c4df77f07a2b5_default.png", - "preTranslated": 0, - "totalCosts": 1300 - }, - "languages": [ + }, { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", + "id": "tk", + "name": "Turkmen", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1300 + "totalCosts": 4612 }, "translated": { - "tmMatch": 12, - "default": 1288, - "total": 1300 + "tmMatch": 517, + "default": 4095, + "total": 4612 }, "targetTranslated": { - "tmMatch": 12, - "default": 1696, - "total": 1708 + "tmMatch": 415, + "default": 3537, + "total": 3952 }, "translatedByMt": { "tmMatch": 0, @@ -4132,12 +3963,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 6198 }, "translationCosts": { - "tmMatch": 12, - "default": 1288, - "total": 1300 + "tmMatch": 517, + "default": 4095, + "total": 4612 }, "approvalCosts": { "tmMatch": 0, @@ -4149,48 +3980,48 @@ }, { "user": { - "id": 15966545, - "username": "askr", - "fullName": "askr", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966545/medium/350ebd9c64c3a9a5244827c6f34d05e7_default.png", + "id": 13939103, + "username": "amidas", + "fullName": "Aco_Amidas (amidas)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13939103/medium/d2dbe429cd49b1f80a767cb275a0b83b_default.png", "preTranslated": 0, - "totalCosts": 2854 + "totalCosts": 2835 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", + "id": "sl", + "name": "Slovenian", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2854 + "totalCosts": 2835 }, "translated": { - "tmMatch": 370, - "default": 2484, - "total": 2854 + "tmMatch": 106, + "default": 2729, + "total": 2835 }, "targetTranslated": { - "tmMatch": 504, - "default": 2978, - "total": 3482 + "tmMatch": 105, + "default": 2694, + "total": 2799 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 3, "default": 0, - "total": 0 + "total": 3 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1867 }, "translationCosts": { - "tmMatch": 370, - "default": 2484, - "total": 2854 + "tmMatch": 106, + "default": 2729, + "total": 2835 }, "approvalCosts": { "tmMatch": 0, @@ -4202,48 +4033,48 @@ }, { "user": { - "id": 15963921, - "username": "bicebaris", - "fullName": "bicebaris", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963921/medium/5ed57dad6d6d747e47d9378a8006ede1.jpg", + "id": 15218796, + "username": "elizabethkim", + "fullName": "Aco_ElizabethKim (elizabethkim)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15218796/medium/b2fe0512f17a60d47a4328127eaee058_default.png", "preTranslated": 0, - "totalCosts": 36625 + "totalCosts": 2534 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", + "id": "ko", + "name": "Korean", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 36625 + "totalCosts": 2534 }, "translated": { - "tmMatch": 150, - "default": 36475, - "total": 36625 + "tmMatch": 9, + "default": 2525, + "total": 2534 }, "targetTranslated": { - "tmMatch": 114, - "default": 29087, - "total": 29201 + "tmMatch": 8, + "default": 1920, + "total": 1928 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 9, + "default": 2, + "total": 11 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 5289 }, "translationCosts": { - "tmMatch": 150, - "default": 36475, - "total": 36625 + "tmMatch": 9, + "default": 2525, + "total": 2534 }, "approvalCosts": { "tmMatch": 0, @@ -4255,33 +4086,33 @@ }, { "user": { - "id": 15945951, - "username": "bluffist", - "fullName": "bluffist", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15945951/medium/6ae9bdebcfe1383777292a72667b57ea_default.png", + "id": 15304854, + "username": "FGutierrez", + "fullName": "Aco_FlorenciaGutierrez (FGutierrez)", + "userRole": "Manager", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15304854/medium/5f1f6782bbfc6e596c29e7b9a306e0f7_default.png", "preTranslated": 0, - "totalCosts": 122 + "totalCosts": 36943 }, "languages": [ { "language": { - "id": "fil", - "name": "Filipino", - "userRole": "Translator", + "id": "bg", + "name": "Bulgarian", + "userRole": "Manager", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 122 + "totalCosts": 1342 }, "translated": { - "tmMatch": 5, - "default": 117, - "total": 122 + "tmMatch": 0, + "default": 1342, + "total": 1342 }, "targetTranslated": { - "tmMatch": 3, - "default": 147, - "total": 150 + "tmMatch": 0, + "default": 1419, + "total": 1419 }, "translatedByMt": { "tmMatch": 0, @@ -4291,50 +4122,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1460 }, "translationCosts": { - "tmMatch": 5, - "default": 117, - "total": 122 + "tmMatch": 0, + "default": 1342, + "total": 1342 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15968043, - "username": "boluwatife_4523", - "fullName": "boluwatife_4523", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968043/medium/75bf5a0c2da67490798bb33f9d44c15b_default.png", - "preTranslated": 0, - "totalCosts": 217 - }, - "languages": [ + }, { "language": { - "id": "yo", - "name": "Yoruba", - "userRole": "Translator", + "id": "hu", + "name": "Hungarian", + "userRole": "Manager", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 217 + "totalCosts": 15572 }, "translated": { - "tmMatch": 2, - "default": 215, - "total": 217 + "tmMatch": 0, + "default": 15572, + "total": 15572 }, "targetTranslated": { - "tmMatch": 2, - "default": 257, - "total": 259 + "tmMatch": 0, + "default": 14337, + "total": 14337 }, "translatedByMt": { "tmMatch": 0, @@ -4344,50 +4162,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 26147 }, "translationCosts": { - "tmMatch": 2, - "default": 215, - "total": 217 + "tmMatch": 0, + "default": 15572, + "total": 15572 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15958911, - "username": "charlaiz", - "fullName": "charlaiz", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15958911/medium/8f11adb77af544d9fd33ec842e035832_default.png", - "preTranslated": 0, - "totalCosts": 4021 - }, - "languages": [ + }, { "language": { - "id": "nl", - "name": "Dutch", - "userRole": "Translator", + "id": "it", + "name": "Italian", + "userRole": "Manager", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4021 + "totalCosts": 20029 }, "translated": { - "tmMatch": 7, - "default": 4014, - "total": 4021 + "tmMatch": 0, + "default": 20029, + "total": 20029 }, "targetTranslated": { - "tmMatch": 8, - "default": 4177, - "total": 4185 + "tmMatch": 0, + "default": 21331, + "total": 21331 }, "translatedByMt": { "tmMatch": 0, @@ -4397,12 +4202,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 34892 }, "translationCosts": { - "tmMatch": 7, - "default": 4014, - "total": 4021 + "tmMatch": 0, + "default": 20029, + "total": 20029 }, "approvalCosts": { "tmMatch": 0, @@ -4414,33 +4219,33 @@ }, { "user": { - "id": 15956409, - "username": "ciccez", - "fullName": "ciccez", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956409/medium/f88667439736852c9869a90e07a3b8b3_default.png", + "id": 15688125, + "username": "MinakoK", + "fullName": "Aco_LL_Minako Kamiya (MinakoK)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15688125/medium/d9623c4e233cb23611b41b1138e7c158_default.png", "preTranslated": 0, - "totalCosts": 12 + "totalCosts": 17041 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", - "userRole": "Translator", + "id": "ja", + "name": "Japanese", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12 + "totalCosts": 17041 }, "translated": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 1580, + "default": 15461, + "total": 17041 }, "targetTranslated": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 4948, + "default": 44940, + "total": 49888 }, "translatedByMt": { "tmMatch": 0, @@ -4450,12 +4255,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 20791 }, "translationCosts": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 1580, + "default": 15461, + "total": 17041 }, "approvalCosts": { "tmMatch": 0, @@ -4467,33 +4272,33 @@ }, { "user": { - "id": 15966289, - "username": "cinaryasemin", - "fullName": "cinaryasemin", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966289/medium/4db7c2566069e455f22d0027dcd3bb06_default.png", + "id": 15144574, + "username": "Word_Global_Eyes", + "fullName": "Aco_Larisa Gubareva (Word_Global_Eyes)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15144574/medium/d85fe7c56b9f9e47c9f1a3e27ca32078.jpg", "preTranslated": 0, - "totalCosts": 1690 + "totalCosts": 2549 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", + "id": "ka", + "name": "Georgian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1690 + "totalCosts": 134 }, "translated": { - "tmMatch": 23, - "default": 1667, - "total": 1690 + "tmMatch": 3, + "default": 131, + "total": 134 }, "targetTranslated": { - "tmMatch": 25, - "default": 1380, - "total": 1405 + "tmMatch": 2, + "default": 108, + "total": 110 }, "translatedByMt": { "tmMatch": 0, @@ -4503,50 +4308,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 151 }, "translationCosts": { - "tmMatch": 23, - "default": 1667, - "total": 1690 + "tmMatch": 3, + "default": 131, + "total": 134 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15967865, - "username": "cryptonord", - "fullName": "cryptonord", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967865/medium/34f0aa13b059217b9be9713242c77a51_default.png", - "preTranslated": 0, - "totalCosts": 9902 - }, - "languages": [ + }, { "language": { - "id": "af", - "name": "Afrikaans", - "userRole": "Translator", + "id": "sw", + "name": "Swahili", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 28 + "totalCosts": 2415 }, "translated": { - "tmMatch": 0, - "default": 28, - "total": 28 + "tmMatch": 241, + "default": 2174, + "total": 2415 }, "targetTranslated": { - "tmMatch": 0, - "default": 28, - "total": 28 + "tmMatch": 241, + "default": 2128, + "total": 2369 }, "translatedByMt": { "tmMatch": 0, @@ -4556,52 +4348,65 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 2561 }, "translationCosts": { - "tmMatch": 0, - "default": 28, - "total": 28 + "tmMatch": 241, + "default": 2174, + "total": 2415 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15048901, + "username": "Joy_Zhang", + "fullName": "Aco_Reviewer_Joy_Zhang (Joy_Zhang)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15048901/medium/9c2e15bbe4e07a19c6a4d53fd3bd4fac_default.png", + "preTranslated": 0, + "totalCosts": 99297 + }, + "languages": [ { "language": { - "id": "da", - "name": "Danish", - "userRole": "Translator", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5492 + "totalCosts": 33967 }, "translated": { - "tmMatch": 27, - "default": 5465, - "total": 5492 + "tmMatch": 5153, + "default": 28814, + "total": 33967 }, "targetTranslated": { - "tmMatch": 28, - "default": 5468, - "total": 5496 + "tmMatch": 9172, + "default": 49146, + "total": 58318 }, "translatedByMt": { - "tmMatch": 6, - "default": 0, + "tmMatch": 5, + "default": 1, "total": 6 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 48923 }, "translationCosts": { - "tmMatch": 27, - "default": 5465, - "total": 5492 + "tmMatch": 5153, + "default": 28814, + "total": 33967 }, "approvalCosts": { "tmMatch": 0, @@ -4611,77 +4416,90 @@ }, { "language": { - "id": "gu-IN", - "name": "Gujarati", - "userRole": "Translator", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 621 + "totalCosts": 65330 }, "translated": { - "tmMatch": 0, - "default": 621, - "total": 621 + "tmMatch": 8623, + "default": 56707, + "total": 65330 }, "targetTranslated": { - "tmMatch": 0, - "default": 1033, - "total": 1033 + "tmMatch": 14944, + "default": 97561, + "total": 112505 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 10, + "default": 2, + "total": 12 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 71708 }, "translationCosts": { - "tmMatch": 0, - "default": 621, - "total": 621 + "tmMatch": 8623, + "default": 56707, + "total": 65330 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15056853, + "username": "Tracy_Wu", + "fullName": "Aco_Reviewer_Tracy_Wu (Tracy_Wu)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15056853/medium/37114ce3d0b4923712379912a1841f4a_default.png", + "preTranslated": 0, + "totalCosts": 33330 + }, + "languages": [ { "language": { - "id": "pa-IN", - "name": "Punjabi", - "userRole": "Translator", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3416 + "totalCosts": 16023 }, "translated": { - "tmMatch": 8, - "default": 3408, - "total": 3416 + "tmMatch": 2301, + "default": 13722, + "total": 16023 }, "targetTranslated": { - "tmMatch": 13, - "default": 6086, - "total": 6099 + "tmMatch": 3977, + "default": 24036, + "total": 28013 }, "translatedByMt": { - "tmMatch": 3, + "tmMatch": 0, "default": 0, - "total": 3 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 15894 }, "translationCosts": { - "tmMatch": 8, - "default": 3408, - "total": 3416 + "tmMatch": 2301, + "default": 13722, + "total": 16023 }, "approvalCosts": { "tmMatch": 0, @@ -4691,22 +4509,22 @@ }, { "language": { - "id": "ta", - "name": "Tamil", - "userRole": "Translator", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 290 + "totalCosts": 17307 }, "translated": { - "tmMatch": 0, - "default": 290, - "total": 290 + "tmMatch": 2210, + "default": 15097, + "total": 17307 }, "targetTranslated": { - "tmMatch": 0, - "default": 613, - "total": 613 + "tmMatch": 3988, + "default": 26677, + "total": 30665 }, "translatedByMt": { "tmMatch": 0, @@ -4716,37 +4534,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 17523 }, "translationCosts": { - "tmMatch": 0, - "default": 290, - "total": 290 + "tmMatch": 2210, + "default": 15097, + "total": 17307 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 13599210, + "username": "Aco_crowdin_CZ_TR", + "fullName": "Aco_crowdin_CZ_TR", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13599210/medium/e0a1e6a034ce38e1bde5701fccfc8770_default.png", + "preTranslated": 0, + "totalCosts": 3902 + }, + "languages": [ { "language": { - "id": "ur-IN", - "name": "Urdu (India)", - "userRole": "Translator", + "id": "cs", + "name": "Czech", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 55 + "totalCosts": 3902 }, "translated": { - "tmMatch": 0, - "default": 55, - "total": 55 + "tmMatch": 166, + "default": 3736, + "total": 3902 }, "targetTranslated": { - "tmMatch": 0, - "default": 72, - "total": 72 + "tmMatch": 151, + "default": 3554, + "total": 3705 }, "translatedByMt": { "tmMatch": 0, @@ -4756,12 +4587,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 16443 }, "translationCosts": { - "tmMatch": 0, - "default": 55, - "total": 55 + "tmMatch": 166, + "default": 3736, + "total": 3902 }, "approvalCosts": { "tmMatch": 0, @@ -4773,33 +4604,33 @@ }, { "user": { - "id": 15946075, - "username": "cuma99", - "fullName": "cuma99", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946075/medium/08ef5c94dfbb0d36bb5933ce2e5d567c_default.png", + "id": 15197762, + "username": "Aco_FR_LauraSanz", + "fullName": "Acolad_FreelanceReviewer_Laura Sanz Gonzalez (Aco_FR_LauraSanz)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15197762/medium/d8e4fc31646e818d0cedd473fe0525d2_default.png", "preTranslated": 0, - "totalCosts": 161 + "totalCosts": 53480 }, "languages": [ { "language": { - "id": "sr-CS", - "name": "Serbian (Latin)", - "userRole": "Translator", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 161 + "totalCosts": 53480 }, "translated": { - "tmMatch": 0, - "default": 161, - "total": 161 + "tmMatch": 9722, + "default": 43758, + "total": 53480 }, "targetTranslated": { - "tmMatch": 0, - "default": 136, - "total": 136 + "tmMatch": 11829, + "default": 51706, + "total": 63535 }, "translatedByMt": { "tmMatch": 0, @@ -4809,12 +4640,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 79901 }, "translationCosts": { - "tmMatch": 0, - "default": 161, - "total": 161 + "tmMatch": 9722, + "default": 43758, + "total": 53480 }, "approvalCosts": { "tmMatch": 0, @@ -4826,33 +4657,33 @@ }, { "user": { - "id": 15988145, - "username": "cxr1025048717", - "fullName": "cxr1025048717", + "id": 15049205, + "username": "aleksandrmedvecky", + "fullName": "Aleksandr Medvecky (aleksandrmedvecky)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15988145/medium/f630d0d88a1125dbfcb7a0709531db9e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15049205/medium/0be15eb751f0359262535f9dfed66c95.jpeg", "preTranslated": 0, - "totalCosts": 125 + "totalCosts": 14 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 125 + "totalCosts": 14 }, "translated": { "tmMatch": 0, - "default": 125, - "total": 125 + "default": 14, + "total": 14 }, "targetTranslated": { "tmMatch": 0, - "default": 221, - "total": 221 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -4866,8 +4697,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 125, - "total": 125 + "default": 14, + "total": 14 }, "approvalCosts": { "tmMatch": 0, @@ -4879,33 +4710,33 @@ }, { "user": { - "id": 15967645, - "username": "darkknightIndia87", - "fullName": "darkknightIndia87", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967645/medium/0251238d8874ccd46d9d727c4359a680_default.png", + "id": 15403416, + "username": "Aco_APandrea", + "fullName": "Anca Pandrea (Aco_APandrea)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15403416/medium/332fd243f3a81dd8a8a4bd85eeb298c7_default.png", "preTranslated": 0, - "totalCosts": 17 + "totalCosts": 386 }, "languages": [ { "language": { - "id": "te", - "name": "Telugu", - "userRole": "Translator", + "id": "ro", + "name": "Romanian", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 17 + "totalCosts": 386 }, "translated": { - "tmMatch": 0, - "default": 17, - "total": 17 + "tmMatch": 107, + "default": 279, + "total": 386 }, "targetTranslated": { - "tmMatch": 0, - "default": 22, - "total": 22 + "tmMatch": 107, + "default": 289, + "total": 396 }, "translatedByMt": { "tmMatch": 0, @@ -4915,12 +4746,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 499 }, "translationCosts": { - "tmMatch": 0, - "default": 17, - "total": 17 + "tmMatch": 107, + "default": 279, + "total": 386 }, "approvalCosts": { "tmMatch": 0, @@ -4932,33 +4763,33 @@ }, { "user": { - "id": 15962083, - "username": "dilaras", - "fullName": "dilaras", + "id": 15998451, + "username": "gato1904", + "fullName": "Andrés León (gato1904)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962083/medium/4e8e909e5831ffe856eda1e43fd6fa05_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15998451/medium/b48c75b54930b781a82c9146d5ba2daf.png", "preTranslated": 0, - "totalCosts": 96 + "totalCosts": 52 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 96 + "totalCosts": 52 }, "translated": { "tmMatch": 0, - "default": 96, - "total": 96 + "default": 52, + "total": 52 }, "targetTranslated": { "tmMatch": 0, - "default": 87, - "total": 87 + "default": 54, + "total": 54 }, "translatedByMt": { "tmMatch": 0, @@ -4972,8 +4803,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 96, - "total": 96 + "default": 52, + "total": 52 }, "approvalCosts": { "tmMatch": 0, @@ -4985,33 +4816,33 @@ }, { "user": { - "id": 15964131, - "username": "emlanis", - "fullName": "emlanis", + "id": 15770841, + "username": "Angelito_18", + "fullName": "Angelito _18 (Angelito_18)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964131/medium/5d76c92d0b8a9f664f2d28ce2e9d80d3_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770841/medium/f82644a45b17eed3facb1815dcc83d13.jpeg", "preTranslated": 0, - "totalCosts": 74 + "totalCosts": 225 }, "languages": [ { "language": { - "id": "ha", - "name": "Hausa", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 74 + "totalCosts": 225 }, "translated": { "tmMatch": 0, - "default": 74, - "total": 74 + "default": 225, + "total": 225 }, "targetTranslated": { "tmMatch": 0, - "default": 99, - "total": 99 + "default": 250, + "total": 250 }, "translatedByMt": { "tmMatch": 0, @@ -5025,8 +4856,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 74, - "total": 74 + "default": 225, + "total": 225 }, "approvalCosts": { "tmMatch": 0, @@ -5038,33 +4869,33 @@ }, { "user": { - "id": 15960287, - "username": "fabiannycnd", - "fullName": "fabiannycnd", + "id": 16026460, + "username": "anton.aksyonov", + "fullName": "Anton Aksyonov (anton.aksyonov)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15960287/medium/82ae690984766dd6f391b26757bfedab_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16026460/medium/784c5798436dba2bf5db01ce3297a80d.jpeg", "preTranslated": 0, - "totalCosts": 1107 + "totalCosts": 246 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 766 + "totalCosts": 246 }, "translated": { - "tmMatch": 3, - "default": 763, - "total": 766 + "tmMatch": 0, + "default": 246, + "total": 246 }, "targetTranslated": { - "tmMatch": 2, - "default": 776, - "total": 778 + "tmMatch": 0, + "default": 189, + "total": 189 }, "translatedByMt": { "tmMatch": 0, @@ -5077,34 +4908,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 763, - "total": 766 + "tmMatch": 0, + "default": 246, + "total": 246 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15300418, + "username": "globart", + "fullName": "Artem Stankov (globart)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg", + "preTranslated": 0, + "totalCosts": 40 + }, + "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 341 + "totalCosts": 40 }, "translated": { - "tmMatch": 0, - "default": 341, - "total": 341 + "tmMatch": 2, + "default": 38, + "total": 40 }, "targetTranslated": { - "tmMatch": 0, - "default": 367, - "total": 367 + "tmMatch": 2, + "default": 30, + "total": 32 }, "translatedByMt": { "tmMatch": 0, @@ -5117,9 +4961,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 341, - "total": 341 + "tmMatch": 2, + "default": 38, + "total": 40 }, "approvalCosts": { "tmMatch": 0, @@ -5131,38 +4975,38 @@ }, { "user": { - "id": 13845181, - "username": "ghipongman", - "fullName": "ghipongman", + "id": 15953295, + "username": "washbin", + "fullName": "Ashbin Wosti (washbin)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13845181/medium/b7cf350da81c5ead84eb3e69af991fbc.", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15953295/medium/e02a89a86e9d77662de9ee5abc15e087.jpeg", "preTranslated": 0, - "totalCosts": 1 + "totalCosts": 652 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "ne-NP", + "name": "Nepali", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1 + "totalCosts": 652 }, "translated": { - "tmMatch": 0, - "default": 1, - "total": 1 + "tmMatch": 13, + "default": 639, + "total": 652 }, "targetTranslated": { - "tmMatch": 0, - "default": 1, - "total": 1 + "tmMatch": 25, + "default": 1072, + "total": 1097 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -5170,9 +5014,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 1, - "total": 1 + "tmMatch": 13, + "default": 639, + "total": 652 }, "approvalCosts": { "tmMatch": 0, @@ -5184,38 +5028,38 @@ }, { "user": { - "id": 15961437, - "username": "harpocryptes", - "fullName": "harpocryptes", + "id": 15763855, + "username": "dovbyshbgd", + "fullName": "Bogdan Dovbysh (dovbyshbgd)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961437/medium/d495096dfb14721b3d4848a1bc7cfdd5.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png", "preTranslated": 0, - "totalCosts": 3323 + "totalCosts": 1532 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3323 + "totalCosts": 1532 }, "translated": { - "tmMatch": 24, - "default": 3299, - "total": 3323 + "tmMatch": 23, + "default": 1509, + "total": 1532 }, "targetTranslated": { - "tmMatch": 25, - "default": 3975, - "total": 4000 + "tmMatch": 17, + "default": 1344, + "total": 1361 }, "translatedByMt": { - "tmMatch": 7, + "tmMatch": 0, "default": 0, - "total": 7 + "total": 0 }, "approved": { "tmMatch": 0, @@ -5223,9 +5067,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 24, - "default": 3299, - "total": 3323 + "tmMatch": 23, + "default": 1509, + "total": 1532 }, "approvalCosts": { "tmMatch": 0, @@ -5237,33 +5081,33 @@ }, { "user": { - "id": 15978083, - "username": "hermesfigueroa1", - "fullName": "hermesfigueroa1", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15978083/medium/b99105e6b683a732cebffd7f41329bb9_default.png", + "id": 13179792, + "username": "Aco_carolinavivas77", + "fullName": "Carolina Vivas Rojas (Aco_carolinavivas77)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13179792/medium/705ff11d938224d83048426fa76f7de0_default.png", "preTranslated": 0, - "totalCosts": 160 + "totalCosts": 0 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 160 + "totalCosts": 0 }, "translated": { "tmMatch": 0, - "default": 160, - "total": 160 + "default": 0, + "total": 0 }, "targetTranslated": { "tmMatch": 0, - "default": 159, - "total": 159 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -5273,12 +5117,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 9218 }, "translationCosts": { "tmMatch": 0, - "default": 160, - "total": 160 + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, @@ -5290,38 +5134,38 @@ }, { "user": { - "id": 15908487, - "username": "insidetrader", - "fullName": "insidetrader", + "id": 15460614, + "username": "Changyong", + "fullName": "Chang (Changyong)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908487/medium/2dad4c49ee42d9df9633332d432e708e.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15460614/medium/5caa70b096b64f9f9d40266ba0359ac0.png", "preTranslated": 0, - "totalCosts": 16509 + "totalCosts": 399 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "ko", + "name": "Korean", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 16509 + "totalCosts": 399 }, "translated": { - "tmMatch": 78, - "default": 16431, - "total": 16509 + "tmMatch": 9, + "default": 390, + "total": 399 }, "targetTranslated": { - "tmMatch": 70, - "default": 13695, - "total": 13765 + "tmMatch": 9, + "default": 279, + "total": 288 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 7, + "default": 1, + "total": 8 }, "approved": { "tmMatch": 0, @@ -5329,9 +5173,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 78, - "default": 16431, - "total": 16509 + "tmMatch": 9, + "default": 390, + "total": 399 }, "approvalCosts": { "tmMatch": 0, @@ -5343,38 +5187,38 @@ }, { "user": { - "id": 15956829, - "username": "isinasli", - "fullName": "isinasli", + "id": 13869465, + "username": "Debika_CKS_P", + "fullName": "Debika (Debika_CKS_P)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956829/medium/e7a64fde9e9413a2ae5add75cba88f09_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13869465/medium/dac50233f4f1f19a42d3ad24568cbfbf_default.png", "preTranslated": 0, - "totalCosts": 3680 + "totalCosts": 26 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3680 + "totalCosts": 26 }, "translated": { - "tmMatch": 17, - "default": 3663, - "total": 3680 + "tmMatch": 26, + "default": 0, + "total": 26 }, "targetTranslated": { - "tmMatch": 17, - "default": 3054, - "total": 3071 + "tmMatch": 27, + "default": 0, + "total": 27 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "approved": { "tmMatch": 0, @@ -5382,9 +5226,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 17, - "default": 3663, - "total": 3680 + "tmMatch": 26, + "default": 0, + "total": 26 }, "approvalCosts": { "tmMatch": 0, @@ -5396,38 +5240,38 @@ }, { "user": { - "id": 15967115, - "username": "itsdeeters", - "fullName": "itsdeeters", + "id": 15993807, + "username": "biollocover04", + "fullName": "Demon Fargo (biollocover04)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993807/medium/3cf26e50ff32a91a5b5bddd2aea2c61c.jpeg", "preTranslated": 0, - "totalCosts": 5374 + "totalCosts": 614 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", + "id": "pt-PT", + "name": "Portuguese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5374 + "totalCosts": 614 }, "translated": { - "tmMatch": 39, - "default": 5335, - "total": 5374 + "tmMatch": 1, + "default": 613, + "total": 614 }, "targetTranslated": { - "tmMatch": 54, - "default": 6712, - "total": 6766 + "tmMatch": 1, + "default": 719, + "total": 720 }, "translatedByMt": { - "tmMatch": 17, - "default": 3, - "total": 20 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -5435,9 +5279,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 39, - "default": 5335, - "total": 5374 + "tmMatch": 1, + "default": 613, + "total": 614 }, "approvalCosts": { "tmMatch": 0, @@ -5449,33 +5293,33 @@ }, { "user": { - "id": 14332768, - "username": "jamalelkhdadi", - "fullName": "jamalelkhdadi", + "id": 15619839, + "username": "mediaquest", + "fullName": "Dmitry Bauer (mediaquest)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14332768/medium/59455bae48ec19e5b76ae004e4b95db0_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15619839/medium/99c14ce4e8161f6b077fa0849ac4c5b0.png", "preTranslated": 0, - "totalCosts": 12 + "totalCosts": 19 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12 + "totalCosts": 19 }, "translated": { "tmMatch": 0, - "default": 12, - "total": 12 + "default": 19, + "total": 19 }, "targetTranslated": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 18, + "total": 18 }, "translatedByMt": { "tmMatch": 0, @@ -5489,8 +5333,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 12, - "total": 12 + "default": 19, + "total": 19 }, "approvalCosts": { "tmMatch": 0, @@ -5502,33 +5346,33 @@ }, { "user": { - "id": 15965517, - "username": "khder7255", - "fullName": "khder7255", + "id": 13842283, + "username": "Dzenan", + "fullName": "Dženan (Dzenan)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965517/medium/ce43dfd49abcc4a7d941496d0707bdc9_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13842283/medium/bbfb9ef4136417577f368ab059d20644.jpeg", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 15 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "sv-SE", + "name": "Swedish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 15 }, "translated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 2, + "default": 13, + "total": 15 }, "targetTranslated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 2, + "default": 13, + "total": 15 }, "translatedByMt": { "tmMatch": 0, @@ -5541,9 +5385,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 2, + "default": 13, + "total": 15 }, "approvalCosts": { "tmMatch": 0, @@ -5555,33 +5399,33 @@ }, { "user": { - "id": 15962943, - "username": "laurin.121", - "fullName": "laurin.121", + "id": 15966607, + "username": "Hackedd.eth", + "fullName": "Eduardo García (Hackedd.eth)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962943/medium/ffa533b0520152a8a4d6d9925f086566_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966607/medium/233013bfe6b35fd53264071d722f63f1.png", "preTranslated": 0, - "totalCosts": 69 + "totalCosts": 39 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 69 + "totalCosts": 39 }, "translated": { "tmMatch": 0, - "default": 69, - "total": 69 + "default": 39, + "total": 39 }, "targetTranslated": { "tmMatch": 0, - "default": 73, - "total": 73 + "default": 42, + "total": 42 }, "translatedByMt": { "tmMatch": 0, @@ -5595,8 +5439,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 69, - "total": 69 + "default": 39, + "total": 39 }, "approvalCosts": { "tmMatch": 0, @@ -5608,38 +5452,38 @@ }, { "user": { - "id": 15982819, - "username": "lipkij", - "fullName": "lipkij", + "id": 14829178, + "username": "EffectChen", + "fullName": "Effect Chen (EffectChen)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15982819/medium/8f2454294d3ca462c391fb4cccdc1ba8_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg", "preTranslated": 0, - "totalCosts": 79 + "totalCosts": 483 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 79 + "totalCosts": 483 }, "translated": { - "tmMatch": 37, - "default": 42, - "total": 79 + "tmMatch": 14, + "default": 469, + "total": 483 }, "targetTranslated": { - "tmMatch": 31, - "default": 43, - "total": 74 + "tmMatch": 26, + "default": 793, + "total": 819 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 7, + "default": 1, + "total": 8 }, "approved": { "tmMatch": 0, @@ -5647,9 +5491,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 37, - "default": 42, - "total": 79 + "tmMatch": 14, + "default": 469, + "total": 483 }, "approvalCosts": { "tmMatch": 0, @@ -5661,33 +5505,33 @@ }, { "user": { - "id": 15856843, - "username": "mariia_pryshko", - "fullName": "mariia_pryshko", + "id": 15998651, + "username": "lampedusa5457", + "fullName": "Eric (lampedusa5457)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15856843/medium/2c53a645673e90327155f24d7f1237f5_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15998651/medium/76286dcfa422e913797471149070ab40.jpeg", "preTranslated": 0, - "totalCosts": 2961 + "totalCosts": 265 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "fil", + "name": "Filipino", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2961 + "totalCosts": 265 }, "translated": { - "tmMatch": 48, - "default": 2913, - "total": 2961 + "tmMatch": 175, + "default": 90, + "total": 265 }, "targetTranslated": { - "tmMatch": 37, - "default": 2596, - "total": 2633 + "tmMatch": 193, + "default": 108, + "total": 301 }, "translatedByMt": { "tmMatch": 0, @@ -5700,9 +5544,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 48, - "default": 2913, - "total": 2961 + "tmMatch": 175, + "default": 90, + "total": 265 }, "approvalCosts": { "tmMatch": 0, @@ -5714,48 +5558,48 @@ }, { "user": { - "id": 15949813, - "username": "massmr", - "fullName": "massmr", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949813/medium/523c73497ca4fc2d5d83c8c54f0123b1_default.png", + "id": 15240064, + "username": "Aco_olbec2", + "fullName": "Erik Eriksen (Aco_olbec2)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15240064/medium/d382aa4b49660d6e6dbb3c7e3250652b.jpeg", "preTranslated": 0, - "totalCosts": 31 + "totalCosts": 92 }, "languages": [ { "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", + "id": "da", + "name": "Danish", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 31 + "totalCosts": 92 }, "translated": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 5, + "default": 87, + "total": 92 }, "targetTranslated": { - "tmMatch": 0, - "default": 47, - "total": 47 + "tmMatch": 4, + "default": 87, + "total": 91 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 151 }, "translationCosts": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 5, + "default": 87, + "total": 92 }, "approvalCosts": { "tmMatch": 0, @@ -5767,33 +5611,33 @@ }, { "user": { - "id": 15957819, - "username": "ming30650", - "fullName": "ming30650", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957819/medium/2baae61ca579f0a04efd89cd210f2c6a_default.png", - "preTranslated": 0, - "totalCosts": 1893 + "id": 13897487, + "username": "ethdotorg", + "fullName": "Ethereum.org Team (ethdotorg)", + "userRole": "Owner", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13897487/medium/246e50d7e9ccde07088ed892b07a0efd.png", + "preTranslated": 4272, + "totalCosts": 893 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", + "id": "am", + "name": "Amharic", + "userRole": "Owner", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1893 + "totalCosts": 3 }, "translated": { - "tmMatch": 0, - "default": 1893, - "total": 1893 + "tmMatch": 3, + "default": 0, + "total": 3 }, "targetTranslated": { - "tmMatch": 0, - "default": 3525, - "total": 3525 + "tmMatch": 3, + "default": 0, + "total": 3 }, "translatedByMt": { "tmMatch": 0, @@ -5803,55 +5647,42 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 4 }, "translationCosts": { - "tmMatch": 0, - "default": 1893, - "total": 1893 + "tmMatch": 3, + "default": 0, + "total": 3 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15966159, - "username": "mireiacanaleta", - "fullName": "mireiacanaleta", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966159/medium/9976c23549c54ffe29bdaf7613a602e5_default.png", - "preTranslated": 0, - "totalCosts": 1229 - }, - "languages": [ + }, { "language": { - "id": "ca", - "name": "Catalan", - "userRole": "Translator", + "id": "ar", + "name": "Arabic", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 1229 + "preTranslate": 8, + "totalCosts": 0 }, "translated": { - "tmMatch": 7, - "default": 1222, - "total": 1229 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 7, - "default": 1373, - "total": 1380 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -5859,47 +5690,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 1222, - "total": 1229 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15952609, - "username": "mk_1023", - "fullName": "mk_1023", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952609/medium/2cefc34ddb056ff1a484e60803e24088_default.png", - "preTranslated": 0, - "totalCosts": 9138 - }, - "languages": [ + }, { "language": { "id": "hy-AM", "name": "Armenian", - "userRole": "Translator", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 9138 + "preTranslate": 676, + "totalCosts": 1 }, "translated": { - "tmMatch": 40, - "default": 9098, - "total": 9138 + "tmMatch": 0, + "default": 1, + "total": 1 }, "targetTranslated": { - "tmMatch": 49, - "default": 8890, - "total": 8939 + "tmMatch": 0, + "default": 1, + "total": 1 }, "translatedByMt": { "tmMatch": 0, @@ -5909,50 +5727,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1 }, "translationCosts": { - "tmMatch": 40, - "default": 9098, - "total": 9138 + "tmMatch": 0, + "default": 1, + "total": 1 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15964773, - "username": "moon2mean", - "fullName": "moon2mean", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964773/medium/35ea9c50e6510a41b87814f3acc83e39_default.png", - "preTranslated": 0, - "totalCosts": 45 - }, - "languages": [ + }, { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", + "id": "az", + "name": "Azerbaijani", + "userRole": "Owner", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 45 + "totalCosts": 4 }, "translated": { - "tmMatch": 0, - "default": 45, - "total": 45 + "tmMatch": 1, + "default": 3, + "total": 4 }, "targetTranslated": { - "tmMatch": 0, - "default": 51, - "total": 51 + "tmMatch": 1, + "default": 3, + "total": 4 }, "translatedByMt": { "tmMatch": 0, @@ -5962,50 +5767,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 4 }, "translationCosts": { - "tmMatch": 0, - "default": 45, - "total": 45 + "tmMatch": 1, + "default": 3, + "total": 4 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15956481, - "username": "motunbeg", - "fullName": "motunbeg", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956481/medium/3b62b0094dce063a96ff151b94bd5f5c_default.png", - "preTranslated": 0, - "totalCosts": 1831 - }, - "languages": [ + }, { "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", + "id": "be", + "name": "Belarusian", + "userRole": "Owner", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1831 + "totalCosts": 0 }, "translated": { "tmMatch": 0, - "default": 1831, - "total": 1831 + "default": 0, + "total": 0 }, "targetTranslated": { "tmMatch": 0, - "default": 1554, - "total": 1554 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -6015,50 +5807,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1 }, "translationCosts": { "tmMatch": 0, - "default": 1831, - "total": 1831 + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15951529, - "username": "msfew", - "fullName": "msfew", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15951529/medium/d82e6870b28865f99df51bc94d0609bb_default.png", - "preTranslated": 0, - "totalCosts": 305 - }, - "languages": [ + }, { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 305 + "id": "bn", + "name": "Bengali", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 1508, + "totalCosts": 0 }, "translated": { - "tmMatch": 4, - "default": 301, - "total": 305 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 4, - "default": 592, - "total": 596 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -6071,47 +5850,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 301, - "total": 305 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15989457, - "username": "narurololiloops", - "fullName": "narurololiloops", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15989457/medium/538d4b5dd55c92e2e8e0759fc6870270_default.png", - "preTranslated": 0, - "totalCosts": 113 - }, - "languages": [ + }, { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", + "id": "bs", + "name": "Bosnian", + "userRole": "Owner", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 113 + "totalCosts": 1 }, "translated": { - "tmMatch": 0, - "default": 113, - "total": 113 + "tmMatch": 1, + "default": 0, + "total": 1 }, "targetTranslated": { - "tmMatch": 0, - "default": 114, - "total": 114 + "tmMatch": 1, + "default": 0, + "total": 1 }, "translatedByMt": { "tmMatch": 0, @@ -6121,50 +5887,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1 }, "translationCosts": { - "tmMatch": 0, - "default": 113, - "total": 113 + "tmMatch": 1, + "default": 0, + "total": 1 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15848015, - "username": "olhapolevik", - "fullName": "olhapolevik", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15848015/medium/9ce52ae7d02c9e5333baedc13db9d42d_default.png", - "preTranslated": 0, - "totalCosts": 1679 - }, - "languages": [ + }, { "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Translator", + "id": "bg", + "name": "Bulgarian", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 1679 + "preTranslate": 11, + "totalCosts": 0 }, "translated": { "tmMatch": 0, - "default": 1679, - "total": 1679 + "default": 0, + "total": 0 }, "targetTranslated": { "tmMatch": 0, - "default": 1390, - "total": 1390 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -6178,46 +5931,33 @@ }, "translationCosts": { "tmMatch": 0, - "default": 1679, - "total": 1679 + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15966973, - "username": "omsify", - "fullName": "omsify", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966973/medium/8f0d37e232177100b09297d6f095fbfa_default.png", - "preTranslated": 0, - "totalCosts": 14461 - }, - "languages": [ + }, { "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", + "id": "ca", + "name": "Catalan", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 14461 + "preTranslate": 1, + "totalCosts": 0 }, "translated": { - "tmMatch": 47, - "default": 14414, - "total": 14461 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 50, - "default": 12916, - "total": 12966 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -6230,100 +5970,74 @@ "total": 0 }, "translationCosts": { - "tmMatch": 47, - "default": 14414, - "total": 14461 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15916347, - "username": "puru-khedre", - "fullName": "puru-khedre", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15916347/medium/2310ee06d441291171855c0917fc542d.jpg", - "preTranslated": 0, - "totalCosts": 4673 - }, - "languages": [ + }, { "language": { - "id": "hi", - "name": "Hindi", - "userRole": "Translator", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 4673 + "preTranslate": 304, + "totalCosts": 75 }, "translated": { - "tmMatch": 22, - "default": 4651, - "total": 4673 + "tmMatch": 0, + "default": 75, + "total": 75 }, "targetTranslated": { - "tmMatch": 39, - "default": 8611, - "total": 8650 + "tmMatch": 0, + "default": 130, + "total": 130 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 363 }, "translationCosts": { - "tmMatch": 22, - "default": 4651, - "total": 4673 + "tmMatch": 0, + "default": 75, + "total": 75 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15933215, - "username": "pythoninsa", - "fullName": "pythoninsa", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15933215/medium/f9793fc24345c86d5707021fcb53574e_default.png", - "preTranslated": 0, - "totalCosts": 66 - }, - "languages": [ + }, { "language": { - "id": "ha", - "name": "Hausa", - "userRole": "Translator", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 66 + "preTranslate": 91, + "totalCosts": 0 }, "translated": { "tmMatch": 0, - "default": 66, - "total": 66 + "default": 0, + "total": 0 }, "targetTranslated": { "tmMatch": 0, - "default": 48, - "total": 48 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -6333,103 +6047,77 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 77 }, "translationCosts": { "tmMatch": 0, - "default": 66, - "total": 66 + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 13986387, - "username": "rafarocha", - "fullName": "rafarocha", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg", - "preTranslated": 0, - "totalCosts": 13391 - }, - "languages": [ + }, { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator, Proofreader", + "id": "hr", + "name": "Croatian", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 13391 + "preTranslate": 1, + "totalCosts": 0 }, "translated": { - "tmMatch": 36, - "default": 13355, - "total": 13391 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 38, - "default": 14456, - "total": 14494 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { - "tmMatch": 5, - "default": 2, - "total": 7 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 5 + "total": 0 }, "translationCosts": { - "tmMatch": 36, - "default": 13355, - "total": 13391 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15927303, - "username": "roifnaufal21", - "fullName": "roifnaufal21", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png", - "preTranslated": 0, - "totalCosts": 58701 - }, - "languages": [ + }, { "language": { - "id": "id", - "name": "Indonesian", - "userRole": "Translator", + "id": "cs", + "name": "Czech", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 58701 + "preTranslate": 5, + "totalCosts": 3 }, "translated": { - "tmMatch": 156, - "default": 58545, - "total": 58701 + "tmMatch": 0, + "default": 3, + "total": 3 }, "targetTranslated": { - "tmMatch": 160, - "default": 54881, - "total": 55041 + "tmMatch": 0, + "default": 3, + "total": 3 }, "translatedByMt": { "tmMatch": 0, @@ -6439,50 +6127,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 6 }, "translationCosts": { - "tmMatch": 156, - "default": 58545, - "total": 58701 + "tmMatch": 0, + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15703467, - "username": "rsrosabio", - "fullName": "rsrosabio", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15703467/medium/d318a4131cc261c314fbda858991c360_default.png", - "preTranslated": 0, - "totalCosts": 165 - }, - "languages": [ + }, { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator", + "id": "da", + "name": "Danish", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 165 + "preTranslate": 2, + "totalCosts": 0 }, "translated": { - "tmMatch": 30, - "default": 135, - "total": 165 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 28, - "default": 144, - "total": 172 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -6495,47 +6170,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 30, - "default": 135, - "total": 165 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15961227, - "username": "smrtdeal", - "fullName": "smrtdeal", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961227/medium/5fe4044190302b39d3e6bec4cc9aebe3_default.png", - "preTranslated": 0, - "totalCosts": 5931 - }, - "languages": [ + }, { "language": { - "id": "tk", - "name": "Turkmen", - "userRole": "Translator", + "id": "nl", + "name": "Dutch", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5931 + "preTranslate": 1, + "totalCosts": 0 }, "translated": { - "tmMatch": 7, - "default": 5924, - "total": 5931 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 7, - "default": 4933, - "total": 4940 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -6548,47 +6210,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 5924, - "total": 5931 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15955419, - "username": "sophiesworld.", - "fullName": "sophiesworld.", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955419/medium/ef389c3dcda0b2ac5fcef223c439baae_default.png", - "preTranslated": 0, - "totalCosts": 8944 - }, - "languages": [ + }, { "language": { - "id": "ka", - "name": "Georgian", - "userRole": "Translator", + "id": "fil", + "name": "Filipino", + "userRole": "Owner", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8944 + "totalCosts": 11 }, "translated": { - "tmMatch": 42, - "default": 8902, - "total": 8944 + "tmMatch": 0, + "default": 11, + "total": 11 }, "targetTranslated": { - "tmMatch": 44, - "default": 7660, - "total": 7704 + "tmMatch": 0, + "default": 14, + "total": 14 }, "translatedByMt": { "tmMatch": 0, @@ -6598,50 +6247,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 11 }, "translationCosts": { - "tmMatch": 42, - "default": 8902, - "total": 8944 + "tmMatch": 0, + "default": 11, + "total": 11 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15954395, - "username": "sumimaria", - "fullName": "sumimaria", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954395/medium/0426f6cebadfe05c979ca979f905cf33_default.png", - "preTranslated": 0, - "totalCosts": 9 - }, - "languages": [ + }, { "language": { - "id": "ml-IN", - "name": "Malayalam", - "userRole": "Translator", + "id": "fr", + "name": "French", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 9 + "preTranslate": 93, + "totalCosts": 0 }, "translated": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 0, + "total": 0 }, "targetTranslated": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -6651,103 +6287,77 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 71 }, "translationCosts": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15804803, - "username": "sun_dariia", - "fullName": "sun_dariia", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15804803/medium/e753b43a4cf480cd2a37c5795cdb83ba_default.png", - "preTranslated": 0, - "totalCosts": 5911 - }, - "languages": [ + }, { "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Translator", + "id": "de", + "name": "German", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5911 + "preTranslate": 109, + "totalCosts": 20 }, "translated": { - "tmMatch": 3, - "default": 5908, - "total": 5911 + "tmMatch": 0, + "default": 20, + "total": 20 }, "targetTranslated": { - "tmMatch": 4, - "default": 5268, - "total": 5272 + "tmMatch": 0, + "default": 21, + "total": 21 }, "translatedByMt": { "tmMatch": 0, - "default": 17, - "total": 17 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 102 }, "translationCosts": { - "tmMatch": 3, - "default": 5908, - "total": 5911 + "tmMatch": 0, + "default": 20, + "total": 20 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15966777, - "username": "tareqgh", - "fullName": "tareqgh", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966777/medium/c434fa240e13cc295e9947bd14d0394f_default.png", - "preTranslated": 0, - "totalCosts": 8968 - }, - "languages": [ + }, { "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Translator", + "id": "el", + "name": "Greek", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 8968 + "preTranslate": 8, + "totalCosts": 0 }, "translated": { - "tmMatch": 523, - "default": 8445, - "total": 8968 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 495, - "default": 7492, - "total": 7987 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -6760,47 +6370,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 523, - "default": 8445, - "total": 8968 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15964877, - "username": "ten5235", - "fullName": "ten5235", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964877/medium/31d3f81a4dc84f53fcc1b3da395a06d4_default.png", - "preTranslated": 0, - "totalCosts": 1855 - }, - "languages": [ + }, { "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Translator", + "id": "hi", + "name": "Hindi", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 1855 + "preTranslate": 2, + "totalCosts": 11 }, "translated": { - "tmMatch": 1, - "default": 1854, - "total": 1855 + "tmMatch": 0, + "default": 11, + "total": 11 }, "targetTranslated": { - "tmMatch": 3, - "default": 5475, - "total": 5478 + "tmMatch": 0, + "default": 24, + "total": 24 }, "translatedByMt": { "tmMatch": 0, @@ -6810,50 +6407,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 53 }, "translationCosts": { - "tmMatch": 1, - "default": 1854, - "total": 1855 + "tmMatch": 0, + "default": 11, + "total": 11 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15672817, - "username": "thebuzagi", - "fullName": "thebuzagi", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15672817/medium/51945b15a89b4d9de324372227ac36de_default.png", - "preTranslated": 0, - "totalCosts": 6615 - }, - "languages": [ + }, { "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", + "id": "hu", + "name": "Hungarian", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 6615 + "preTranslate": 10, + "totalCosts": 11 }, "translated": { - "tmMatch": 30, - "default": 6585, - "total": 6615 + "tmMatch": 0, + "default": 11, + "total": 11 }, "targetTranslated": { - "tmMatch": 30, - "default": 5488, - "total": 5518 + "tmMatch": 0, + "default": 16, + "total": 16 }, "translatedByMt": { "tmMatch": 0, @@ -6863,118 +6447,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 11 }, "translationCosts": { - "tmMatch": 30, - "default": 6585, - "total": 6615 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15966727, - "username": "thenfh2023", - "fullName": "thenfh2023", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966727/medium/7e9ee0712ef21100611ac7186ad5feea_default.png", - "preTranslated": 0, - "totalCosts": 325 - }, - "languages": [ - { - "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 325 - }, - "translated": { - "tmMatch": 0, - "default": 325, - "total": 325 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 389, - "total": 389 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 325, - "total": 325 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15962417, - "username": "thuthao0509", - "fullName": "thuthao0509", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962417/medium/dc8fa86e95f051f71b82e9b6e3670467_default.png", - "preTranslated": 0, - "totalCosts": 4 - }, - "languages": [ - { - "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 2 - }, - "translated": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "targetTranslated": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "translatedByMt": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 0, + "default": 11, + "total": 11 }, "approvalCosts": { "tmMatch": 0, @@ -6984,11464 +6462,22 @@ }, { "language": { - "id": "vi", - "name": "Vietnamese", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 2 - }, - "translated": { - "tmMatch": 0, - "default": 2, - "total": 2 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 4, - "total": 4 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 2, - "total": 2 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967089, - "username": "tubitubala", - "fullName": "tubitubala", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967089/medium/8b05d4c10378284ea6580b505ace736c_default.png", - "preTranslated": 0, - "totalCosts": 145 - }, - "languages": [ - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 145 - }, - "translated": { - "tmMatch": 0, - "default": 145, - "total": 145 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 109, - "total": 109 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 5, - "total": 5 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 145, - "total": 145 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15775647, - "username": "utomo878", - "fullName": "utomo878", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15775647/medium/e6c4302f1613714c53e496f87b61ae01.jpg", - "preTranslated": 0, - "totalCosts": 14288 - }, - "languages": [ - { - "language": { - "id": "id", - "name": "Indonesian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 14288 - }, - "translated": { - "tmMatch": 272, - "default": 14016, - "total": 14288 - }, - "targetTranslated": { - "tmMatch": 269, - "default": 13543, - "total": 13812 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 272, - "default": 14016, - "total": 14288 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15973859, - "username": "vblackwhale", - "fullName": "vblackwhale", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15973859/medium/e81a181b32492c70a65c85400d6f2e35.jpg", - "preTranslated": 0, - "totalCosts": 143 - }, - "languages": [ - { - "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", + "id": "ig", + "name": "Igbo", + "userRole": "Owner", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 143 + "totalCosts": 10 }, "translated": { "tmMatch": 0, - "default": 143, - "total": 143 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 141, - "total": 141 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 143, - "total": 143 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15963297, - "username": "velorias", - "fullName": "velorias", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963297/medium/5e5a689a0e6b201b87b94ca853c290e2_default.png", - "preTranslated": 0, - "totalCosts": 868 - }, - "languages": [ - { - "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 868 - }, - "translated": { - "tmMatch": 47, - "default": 821, - "total": 868 - }, - "targetTranslated": { - "tmMatch": 38, - "default": 699, - "total": 737 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 47, - "default": 821, - "total": 868 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15962351, - "username": "viewfinderboy", - "fullName": "viewfinderboy", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962351/medium/4e9ae491f8ee0a3e3215b1f637d68f06_default.png", - "preTranslated": 0, - "totalCosts": 18 - }, - "languages": [ - { - "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 3 - }, - "translated": { - "tmMatch": 0, - "default": 3, - "total": 3 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 4, - "total": 4 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 3, - "total": 3 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 15 - }, - "translated": { - "tmMatch": 0, - "default": 15, - "total": 15 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 18, - "total": 18 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 15, - "total": 15 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15984133, - "username": "weiyuabc", - "fullName": "weiyuabc", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15984133/medium/2a5267dbac29dc0063600e4c5013a732_default.png", - "preTranslated": 0, - "totalCosts": 664 - }, - "languages": [ - { - "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 664 - }, - "translated": { - "tmMatch": 0, - "default": 664, - "total": 664 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 1135, - "total": 1135 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 664, - "total": 664 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15960061, - "username": "www.shota", - "fullName": "www.shota", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15960061/medium/afffcdcd58dad554429a5b331c47c8fa_default.png", - "preTranslated": 0, - "totalCosts": 263 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 263 - }, - "translated": { - "tmMatch": 2, - "default": 261, - "total": 263 - }, - "targetTranslated": { - "tmMatch": 5, - "default": 432, - "total": 437 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 2, - "default": 261, - "total": 263 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15966943, - "username": "yulkor", - "fullName": "yulkor", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966943/medium/0d340104d53d3ff4df1c7c2412e8c86e_default.png", - "preTranslated": 0, - "totalCosts": 3396 - }, - "languages": [ - { - "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 3396 - }, - "translated": { - "tmMatch": 177, - "default": 3219, - "total": 3396 - }, - "targetTranslated": { - "tmMatch": 166, - "default": 2934, - "total": 3100 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 177, - "default": 3219, - "total": 3396 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15966271, - "username": "zeydrm", - "fullName": "zeydrm", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966271/medium/bbeac0fbc387f8f821f861bc79c625fd.png", - "preTranslated": 0, - "totalCosts": 16431 - }, - "languages": [ - { - "language": { - "id": "hy-AM", - "name": "Armenian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 141 - }, - "translated": { - "tmMatch": 0, - "default": 141, - "total": 141 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 146, - "total": 146 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 141, - "total": 141 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 16290 - }, - "translated": { - "tmMatch": 18, - "default": 16272, - "total": 16290 - }, - "targetTranslated": { - "tmMatch": 18, - "default": 13922, - "total": 13940 - }, - "translatedByMt": { - "tmMatch": 2, - "default": 11, - "total": 13 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 18, - "default": 16272, - "total": 16290 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15956489, - "username": "0xhawki", - "fullName": "0xhwk (0xhawki)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956489/medium/4f6011a32fc4ef0b906c52f838b299d1.png", - "preTranslated": 0, - "totalCosts": 793 - }, - "languages": [ - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 793 - }, - "translated": { - "tmMatch": 0, - "default": 793, - "total": 793 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 676, - "total": 676 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 793, - "total": 793 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15921661, - "username": "Bohjypellar", - "fullName": "Abdulganiu Ajose (Bohjypellar)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15921661/medium/46083a608a938f869b4855d0113b3930.jpg", - "preTranslated": 0, - "totalCosts": 3836 - }, - "languages": [ - { - "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 3836 - }, - "translated": { - "tmMatch": 33, - "default": 3803, - "total": 3836 - }, - "targetTranslated": { - "tmMatch": 37, - "default": 4403, - "total": 4440 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 33, - "default": 3803, - "total": 3836 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 13151214, - "username": "Aco_Trans", - "fullName": "Aco (Aco_Trans)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13151214/medium/8d49c17a9752eec54b3a976695e23834_default.png", - "preTranslated": 0, - "totalCosts": 22 - }, - "languages": [ - { - "language": { - "id": "ru", - "name": "Russian", - "userRole": "Proofreader", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 22 - }, - "translated": { - "tmMatch": 0, - "default": 22, - "total": 22 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 22, - "total": 22 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 22, - "total": 22 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15036379, - "username": "bayan-tech", - "fullName": "Aco-BayanTech (bayan-tech)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15036379/medium/753e141785d6f0c1dd9d90a6df87eb05_default.png", - "preTranslated": 0, - "totalCosts": 0 - }, - "languages": [ - { - "language": { - "id": "fa", - "name": "Persian", - "userRole": "Proofreader", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 22 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15867623, - "username": "DefiWithJerry", - "fullName": "Adisa Jeremiah (DefiWithJerry)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15867623/medium/9c8af96a127663e1edf812a6cfdfd48d.jpg", - "preTranslated": 0, - "totalCosts": 745 - }, - "languages": [ - { - "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 745 - }, - "translated": { - "tmMatch": 2, - "default": 743, - "total": 745 - }, - "targetTranslated": { - "tmMatch": 3, - "default": 984, - "total": 987 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 2, - "default": 743, - "total": 745 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15921847, - "username": "adrian-pusty", - "fullName": "Adrian Pusty (adrian-pusty)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15921847/medium/5ab50081cb5e98a40782221efcda3a42.jpeg", - "preTranslated": 0, - "totalCosts": 393 - }, - "languages": [ - { - "language": { - "id": "pl", - "name": "Polish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 393 - }, - "translated": { - "tmMatch": 0, - "default": 393, - "total": 393 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 354, - "total": 354 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 393, - "total": 393 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15957521, - "username": "ahhsunnft", - "fullName": "Ahhsun (ahhsunnft)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957521/medium/ea787d6a453910b93b35f130d227f1d7.png", - "preTranslated": 0, - "totalCosts": 18 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 18 - }, - "translated": { - "tmMatch": 0, - "default": 18, - "total": 18 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 22, - "total": 22 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 18, - "total": 18 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15968163, - "username": "olusolaakolade", - "fullName": "Akolade Olusola (olusolaakolade)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968163/medium/2b0e4b8cdf8250a609c3d0bbc956ca1d.jpeg", - "preTranslated": 0, - "totalCosts": 58 - }, - "languages": [ - { - "language": { - "id": "yo", - "name": "Yoruba", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 58 - }, - "translated": { - "tmMatch": 0, - "default": 58, - "total": 58 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 89, - "total": 89 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 58, - "total": 58 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15966989, - "username": "Alamalu", - "fullName": "Alamalu", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966989/medium/1e1908bc80462f4994503e7bb99a2c92.png", - "preTranslated": 0, - "totalCosts": 637 - }, - "languages": [ - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 637 - }, - "translated": { - "tmMatch": 1, - "default": 636, - "total": 637 - }, - "targetTranslated": { - "tmMatch": 1, - "default": 527, - "total": 528 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 1, - "default": 636, - "total": 637 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15958037, - "username": "lis3", - "fullName": "Alex (lis3)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15958037/medium/df2215a037e9fee066c37bbba5183c2a.png", - "preTranslated": 0, - "totalCosts": 1471 - }, - "languages": [ - { - "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 1471 - }, - "translated": { - "tmMatch": 0, - "default": 1471, - "total": 1471 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 1253, - "total": 1253 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 1471, - "total": 1471 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15984263, - "username": "alextrepat", - "fullName": "Alex Trepat (alextrepat)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15984263/medium/812f9b1f2c5abe48b2b90fe7aad9b269.jpeg", - "preTranslated": 0, - "totalCosts": 15 - }, - "languages": [ - { - "language": { - "id": "ca", - "name": "Catalan", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 15 - }, - "translated": { - "tmMatch": 0, - "default": 15, - "total": 15 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 14, - "total": 14 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 15, - "total": 15 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15985407, - "username": "alonbenyaakov", - "fullName": "Alon Ben Yaakov (alonbenyaakov)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15985407/medium/cf25fc4e42ce36ab9d114e7e55ade6dc.png", - "preTranslated": 0, - "totalCosts": 16 - }, - "languages": [ - { - "language": { - "id": "he", - "name": "Hebrew", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 16 - }, - "translated": { - "tmMatch": 0, - "default": 16, - "total": 16 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 12, - "total": 12 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 16, - "total": 16 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15971303, - "username": "web3senior", - "fullName": "Amir Rahimi (web3senior)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15971303/medium/6f6d7db906ee32c836d3daf71181b5da.png", - "preTranslated": 0, - "totalCosts": 642 - }, - "languages": [ - { - "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 642 - }, - "translated": { - "tmMatch": 185, - "default": 457, - "total": 642 - }, - "targetTranslated": { - "tmMatch": 212, - "default": 550, - "total": 762 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 185, - "default": 457, - "total": 642 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15949501, - "username": "AnastasiaDostanko", - "fullName": "Anastasia Dostanko (AnastasiaDostanko)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949501/medium/b4b0094060be9c015d45a2a91735e1fd.png", - "preTranslated": 0, - "totalCosts": 28 - }, - "languages": [ - { - "language": { - "id": "be", - "name": "Belarusian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 28 - }, - "translated": { - "tmMatch": 3, - "default": 25, - "total": 28 - }, - "targetTranslated": { - "tmMatch": 4, - "default": 23, - "total": 27 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 3, - "default": 25, - "total": 28 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15770841, - "username": "Angelito_18", - "fullName": "Angelito _18 (Angelito_18)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770841/medium/f82644a45b17eed3facb1815dcc83d13.jpeg", - "preTranslated": 0, - "totalCosts": 505 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 505 - }, - "translated": { - "tmMatch": 0, - "default": 505, - "total": 505 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 553, - "total": 553 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 505, - "total": 505 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15287132, - "username": "0xAntonio", - "fullName": "Antonio (0xAntonio)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15287132/medium/67c5a079a19f5b0cd46f8d628cff446d.png", - "preTranslated": 0, - "totalCosts": 3479 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 3479 - }, - "translated": { - "tmMatch": 3, - "default": 3476, - "total": 3479 - }, - "targetTranslated": { - "tmMatch": 3, - "default": 3791, - "total": 3794 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 3, - "default": 3476, - "total": 3479 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15954257, - "username": "arifulone", - "fullName": "Ariful Islam (arifulone)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg", - "preTranslated": 0, - "totalCosts": 39535 - }, - "languages": [ - { - "language": { - "id": "bn", - "name": "Bengali", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 39535 - }, - "translated": { - "tmMatch": 185, - "default": 39350, - "total": 39535 - }, - "targetTranslated": { - "tmMatch": 394, - "default": 74362, - "total": 74756 - }, - "translatedByMt": { - "tmMatch": 52, - "default": 2, - "total": 54 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 185, - "default": 39350, - "total": 39535 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14852734, - "username": "0xEthDuzIt", - "fullName": "Arigatoshi (0xEthDuzIt)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14852734/medium/da1e9138c30b0fbcfd54f987a7e55328.jpg", - "preTranslated": 0, - "totalCosts": 64 - }, - "languages": [ - { - "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 64 - }, - "translated": { - "tmMatch": 0, - "default": 64, - "total": 64 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 195, - "total": 195 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 64, - "total": 64 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15300418, - "username": "globart", - "fullName": "Artem Stankov (globart)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg", - "preTranslated": 0, - "totalCosts": 5371 - }, - "languages": [ - { - "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5371 - }, - "translated": { - "tmMatch": 77, - "default": 5294, - "total": 5371 - }, - "targetTranslated": { - "tmMatch": 76, - "default": 4895, - "total": 4971 - }, - "translatedByMt": { - "tmMatch": 10, - "default": 0, - "total": 10 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 77, - "default": 5294, - "total": 5371 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15953295, - "username": "washbin", - "fullName": "Ashbin Wosti (washbin)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15953295/medium/e02a89a86e9d77662de9ee5abc15e087.jpeg", - "preTranslated": 0, - "totalCosts": 690 - }, - "languages": [ - { - "language": { - "id": "ne-NP", - "name": "Nepali", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 690 - }, - "translated": { - "tmMatch": 32, - "default": 658, - "total": 690 - }, - "targetTranslated": { - "tmMatch": 63, - "default": 1101, - "total": 1164 - }, - "translatedByMt": { - "tmMatch": 5, - "default": 2, - "total": 7 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 32, - "default": 658, - "total": 690 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15815431, - "username": "Hypolithe", - "fullName": "Asseke Hypolithe (Hypolithe)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15815431/medium/b04ccb2408b3c0bf816f2ed815bdecd4.JPG", - "preTranslated": 0, - "totalCosts": 89 - }, - "languages": [ - { - "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 89 - }, - "translated": { - "tmMatch": 0, - "default": 89, - "total": 89 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 122, - "total": 122 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 89, - "total": 89 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15974691, - "username": "harbaouibilal8", - "fullName": "BLH (harbaouibilal8)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15974691/medium/4654317e5ddd823f7f5f831328af15bb.jpeg", - "preTranslated": 0, - "totalCosts": 26 - }, - "languages": [ - { - "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 26 - }, - "translated": { - "tmMatch": 2, - "default": 24, - "total": 26 - }, - "targetTranslated": { - "tmMatch": 4, - "default": 35, - "total": 39 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 2, - "default": 24, - "total": 26 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14467908, - "username": "BarnettWong", - "fullName": "Barnett Wong (BarnettWong)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14467908/medium/d684efc33954be7ca3e82a82d8d6478e.jpeg", - "preTranslated": 0, - "totalCosts": 411 - }, - "languages": [ - { - "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 411 - }, - "translated": { - "tmMatch": 0, - "default": 411, - "total": 411 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 734, - "total": 734 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 411, - "total": 411 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967485, - "username": "horvathbenedek92", - "fullName": "Benedek Horváth (horvathbenedek92)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967485/medium/5f3e3c3d17bd4c1d3747d2e511da03df.png", - "preTranslated": 0, - "totalCosts": 190 - }, - "languages": [ - { - "language": { - "id": "hu", - "name": "Hungarian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 190 - }, - "translated": { - "tmMatch": 0, - "default": 190, - "total": 190 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 191, - "total": 191 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 190, - "total": 190 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15949023, - "username": "bibarysdos", - "fullName": "Bibarys Dos (bibarysdos)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949023/medium/7ed167cae478defadda299713155928b.jpeg", - "preTranslated": 0, - "totalCosts": 416 - }, - "languages": [ - { - "language": { - "id": "kk", - "name": "Kazakh", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 416 - }, - "translated": { - "tmMatch": 12, - "default": 404, - "total": 416 - }, - "targetTranslated": { - "tmMatch": 12, - "default": 365, - "total": 377 - }, - "translatedByMt": { - "tmMatch": 1, - "default": 0, - "total": 1 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 12, - "default": 404, - "total": 416 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15763855, - "username": "dovbyshbgd", - "fullName": "Bogdan Dovbysh (dovbyshbgd)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png", - "preTranslated": 0, - "totalCosts": 11014 - }, - "languages": [ - { - "language": { - "id": "be", - "name": "Belarusian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5915 - }, - "translated": { - "tmMatch": 35, - "default": 5880, - "total": 5915 - }, - "targetTranslated": { - "tmMatch": 35, - "default": 5349, - "total": 5384 - }, - "translatedByMt": { - "tmMatch": 24, - "default": 0, - "total": 24 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 35, - "default": 5880, - "total": 5915 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "pl", - "name": "Polish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 6 - }, - "translated": { - "tmMatch": 0, - "default": 6, - "total": 6 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 6, - "total": 6 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 6, - "total": 6 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5093 - }, - "translated": { - "tmMatch": 159, - "default": 4934, - "total": 5093 - }, - "targetTranslated": { - "tmMatch": 143, - "default": 4413, - "total": 4556 - }, - "translatedByMt": { - "tmMatch": 5, - "default": 0, - "total": 5 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 159, - "default": 4934, - "total": 5093 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14573604, - "username": "bceschini", - "fullName": "Bruno Ceschini Furtado (bceschini)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14573604/medium/e07f0a64aea775f906b999491ca671d9.jpeg", - "preTranslated": 0, - "totalCosts": 791 - }, - "languages": [ - { - "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 791 - }, - "translated": { - "tmMatch": 0, - "default": 791, - "total": 791 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 917, - "total": 917 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 791, - "total": 791 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15422032, - "username": "Fritzhoy", - "fullName": "Camila Gonçalves (Fritzhoy)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15422032/medium/a2df65c9d9309dec39402a0175f3a57f.png", - "preTranslated": 0, - "totalCosts": 64 - }, - "languages": [ - { - "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 64 - }, - "translated": { - "tmMatch": 0, - "default": 64, - "total": 64 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 65, - "total": 65 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 64, - "total": 64 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 13754187, - "username": "Carla78", - "fullName": "Carla (Carla78)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13754187/medium/37de2106b564cdd5431a9c1f7e091087.png", - "preTranslated": 0, - "totalCosts": 10317 - }, - "languages": [ - { - "language": { - "id": "it", - "name": "Italian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 10317 - }, - "translated": { - "tmMatch": 127, - "default": 10190, - "total": 10317 - }, - "targetTranslated": { - "tmMatch": 136, - "default": 11002, - "total": 11138 - }, - "translatedByMt": { - "tmMatch": 9, - "default": 0, - "total": 9 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 127, - "default": 10190, - "total": 10317 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15946127, - "username": "hyperalchemy", - "fullName": "Ceci (hyperalchemy)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946127/medium/fb8809671278895b42cf50c752fd7bf2.png", - "preTranslated": 0, - "totalCosts": 2619 - }, - "languages": [ - { - "language": { - "id": "it", - "name": "Italian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 2619 - }, - "translated": { - "tmMatch": 2, - "default": 2617, - "total": 2619 - }, - "targetTranslated": { - "tmMatch": 2, - "default": 2739, - "total": 2741 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 2, - "default": 2617, - "total": 2619 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15947213, - "username": "LedgerAcademyPakistan", - "fullName": "Celo (LedgerAcademyPakistan)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947213/medium/8251242ca8ddb35ee489e6ac83b49eac.jpeg", - "preTranslated": 0, - "totalCosts": 71 - }, - "languages": [ - { - "language": { - "id": "ur-PK", - "name": "Urdu (Pakistan)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 71 - }, - "translated": { - "tmMatch": 0, - "default": 71, - "total": 71 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 96, - "total": 96 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 71, - "total": 71 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15947735, - "username": "cychung", - "fullName": "Chen-Yuan Chung (cychung)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947735/medium/4023f995a7c5a29531aba4ba3d6f4c73.jpg", - "preTranslated": 0, - "totalCosts": 159 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 159 - }, - "translated": { - "tmMatch": 51, - "default": 108, - "total": 159 - }, - "targetTranslated": { - "tmMatch": 105, - "default": 227, - "total": 332 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 51, - "default": 108, - "total": 159 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15753095, - "username": "ctremblayperron", - "fullName": "Cynthia Tremblay Perron (ctremblayperron)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15753095/medium/bac57df7455d9809661f69e2bd8844e8.png", - "preTranslated": 0, - "totalCosts": 4 - }, - "languages": [ - { - "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 4 - }, - "translated": { - "tmMatch": 0, - "default": 4, - "total": 4 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 4, - "total": 4 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 4, - "total": 4 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15962457, - "username": "danimeister", - "fullName": "Dani (danimeister)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962457/medium/97c701528b519a4a784b0d6b5f845fb8.jpg", - "preTranslated": 0, - "totalCosts": 17903 - }, - "languages": [ - { - "language": { - "id": "id", - "name": "Indonesian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 17903 - }, - "translated": { - "tmMatch": 63, - "default": 17840, - "total": 17903 - }, - "targetTranslated": { - "tmMatch": 61, - "default": 16613, - "total": 16674 - }, - "translatedByMt": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 63, - "default": 17840, - "total": 17903 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15966401, - "username": "daniel.zarzecki047", - "fullName": "Daniel (daniel.zarzecki047)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966401/medium/fa1d0a5129bf7a77c98232488dfc9d98.png", - "preTranslated": 0, - "totalCosts": 731 - }, - "languages": [ - { - "language": { - "id": "pl", - "name": "Polish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 731 - }, - "translated": { - "tmMatch": 12, - "default": 719, - "total": 731 - }, - "targetTranslated": { - "tmMatch": 10, - "default": 676, - "total": 686 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 2, - "total": 2 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 12, - "default": 719, - "total": 731 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14528224, - "username": "dpaiva", - "fullName": "Daniel Paiva (dpaiva)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14528224/medium/f007f6edd11761ed4a10fe64cbc64929.jpeg", - "preTranslated": 0, - "totalCosts": 35 - }, - "languages": [ - { - "language": { - "id": "pt-PT", - "name": "Portuguese", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 35 - }, - "translated": { - "tmMatch": 0, - "default": 35, - "total": 35 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 43, - "total": 43 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 21, - "total": 21 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 35, - "total": 35 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15983387, - "username": "QeengD", - "fullName": "David Sado (QeengD)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15983387/medium/7cfc75592887694c6e46dc96b24e7737.png", - "preTranslated": 0, - "totalCosts": 81 - }, - "languages": [ - { - "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 81 - }, - "translated": { - "tmMatch": 0, - "default": 81, - "total": 81 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 100, - "total": 100 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 81, - "total": 81 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 13438047, - "username": "dayitvagoel", - "fullName": "Dayitva Goel (dayitvagoel)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13438047/medium/9d3ff0b2bdca520134c6b31569f09872.jpg", - "preTranslated": 0, - "totalCosts": 6 - }, - "languages": [ - { - "language": { - "id": "hi", - "name": "Hindi", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 6 - }, - "translated": { - "tmMatch": 5, - "default": 1, - "total": 6 - }, - "targetTranslated": { - "tmMatch": 9, - "default": 1, - "total": 10 - }, - "translatedByMt": { - "tmMatch": 1, - "default": 0, - "total": 1 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 5, - "default": 1, - "total": 6 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15984903, - "username": "deom", - "fullName": "Dennis Foster (deom)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15984903/medium/b4fd563832a6b6f4e3547f2fcf71004e.jpeg", - "preTranslated": 0, - "totalCosts": 176 - }, - "languages": [ - { - "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 176 - }, - "translated": { - "tmMatch": 0, - "default": 176, - "total": 176 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 170, - "total": 170 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 176, - "total": 176 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15971081, - "username": "ervbgdertg", - "fullName": "Dertg Ervbg (ervbgdertg)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15971081/medium/8a24209681bca4152b7863428d81f47d.png", - "preTranslated": 0, - "totalCosts": 6 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 6 - }, - "translated": { - "tmMatch": 6, - "default": 0, - "total": 6 - }, - "targetTranslated": { - "tmMatch": 10, - "default": 0, - "total": 10 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 6, - "default": 0, - "total": 6 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15430214, - "username": "didierkrux", - "fullName": "Didier Krux (didierkrux)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15430214/medium/2b8391bf50f94b404bcd2967c0528ed7.png", - "preTranslated": 0, - "totalCosts": 5 - }, - "languages": [ - { - "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5 - }, - "translated": { - "tmMatch": 0, - "default": 5, - "total": 5 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 5, - "total": 5 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 5, - "total": 5 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15976061, - "username": "Sarumpaetlubis", - "fullName": "Dorsmer Cam (Sarumpaetlubis)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15976061/medium/947992e30d5488d916e1d16cf260a84d.png", - "preTranslated": 0, - "totalCosts": 10 - }, - "languages": [ - { - "language": { - "id": "id", - "name": "Indonesian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 10 - }, - "translated": { - "tmMatch": 0, - "default": 10, - "total": 10 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 10, - "total": 10 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 10, - "total": 10 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 13332574, - "username": "wongcie", - "fullName": "Dwi Cahyono (wongcie)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13332574/medium/e5d356a816a34edc6657cb41bb54d8f0.jpg", - "preTranslated": 0, - "totalCosts": 2 - }, - "languages": [ - { - "language": { - "id": "id", - "name": "Indonesian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 2 - }, - "translated": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "targetTranslated": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "translatedByMt": { - "tmMatch": 1, - "default": 0, - "total": 1 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 13842283, - "username": "Dzenan", - "fullName": "Dženan (Dzenan)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13842283/medium/bbfb9ef4136417577f368ab059d20644.jpeg", - "preTranslated": 0, - "totalCosts": 47 - }, - "languages": [ - { - "language": { - "id": "sv-SE", - "name": "Swedish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 47 - }, - "translated": { - "tmMatch": 7, - "default": 40, - "total": 47 - }, - "targetTranslated": { - "tmMatch": 6, - "default": 38, - "total": 44 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 7, - "default": 40, - "total": 47 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15950523, - "username": "ruegreengrass", - "fullName": "Ecem (ruegreengrass)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15950523/medium/8575c3fdc047f7b8e9ed234df1a9cafa.jpeg", - "preTranslated": 0, - "totalCosts": 2 - }, - "languages": [ - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 2 - }, - "translated": { - "tmMatch": 0, - "default": 2, - "total": 2 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 1, - "total": 1 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 2, - "total": 2 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15966607, - "username": "Hackedd.eth", - "fullName": "Eduardo García (Hackedd.eth)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966607/medium/233013bfe6b35fd53264071d722f63f1.png", - "preTranslated": 0, - "totalCosts": 4020 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 4020 - }, - "translated": { - "tmMatch": 1, - "default": 4019, - "total": 4020 - }, - "targetTranslated": { - "tmMatch": 1, - "default": 4742, - "total": 4743 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 1, - "default": 4019, - "total": 4020 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14829178, - "username": "EffectChen", - "fullName": "Effect Chen (EffectChen)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg", - "preTranslated": 0, - "totalCosts": 3729 - }, - "languages": [ - { - "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 3729 - }, - "translated": { - "tmMatch": 8, - "default": 3721, - "total": 3729 - }, - "targetTranslated": { - "tmMatch": 14, - "default": 6444, - "total": 6458 - }, - "translatedByMt": { - "tmMatch": 3, - "default": 1, - "total": 4 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 8, - "default": 3721, - "total": 3729 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15363678, - "username": "Dawyer", - "fullName": "Ekta Singh (Dawyer)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15363678/medium/50e493deacc1ae7d512f2b38aab07d00.png", - "preTranslated": 0, - "totalCosts": 10620 - }, - "languages": [ - { - "language": { - "id": "hi", - "name": "Hindi", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 10620 - }, - "translated": { - "tmMatch": 86, - "default": 10534, - "total": 10620 - }, - "targetTranslated": { - "tmMatch": 169, - "default": 18957, - "total": 19126 - }, - "translatedByMt": { - "tmMatch": 25, - "default": 9, - "total": 34 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 86, - "default": 10534, - "total": 10620 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15553253, - "username": "EmelyGarcia", - "fullName": "Emely García (EmelyGarcia)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png", - "preTranslated": 0, - "totalCosts": 6794 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 6794 - }, - "translated": { - "tmMatch": 348, - "default": 6446, - "total": 6794 - }, - "targetTranslated": { - "tmMatch": 364, - "default": 7028, - "total": 7392 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 348, - "default": 6446, - "total": 6794 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 13429141, - "username": "Faedonn", - "fullName": "Emre kaan SATIŞ (Faedonn)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13429141/medium/47665044a49c8caae72a8e5d6c6c74fc.jpg", - "preTranslated": 0, - "totalCosts": 537 - }, - "languages": [ - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 537 - }, - "translated": { - "tmMatch": 0, - "default": 537, - "total": 537 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 466, - "total": 466 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 537, - "total": 537 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15956471, - "username": "nugen0x", - "fullName": "Engin Canpolat (nugen0x)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956471/medium/0af49a07f4f83e5a5180858a4760868e.jpeg", - "preTranslated": 0, - "totalCosts": 459 - }, - "languages": [ - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 459 - }, - "translated": { - "tmMatch": 1, - "default": 458, - "total": 459 - }, - "targetTranslated": { - "tmMatch": 2, - "default": 368, - "total": 370 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 1, - "default": 458, - "total": 459 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15955863, - "username": "MrbaTab", - "fullName": "Enisa Savic Hjelmaas (MrbaTab)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955863/medium/87703122c7751f9b4b4673899861b163.png", - "preTranslated": 0, - "totalCosts": 14322 - }, - "languages": [ - { - "language": { - "id": "bs", - "name": "Bosnian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 14322 - }, - "translated": { - "tmMatch": 121, - "default": 14201, - "total": 14322 - }, - "targetTranslated": { - "tmMatch": 112, - "default": 13056, - "total": 13168 - }, - "translatedByMt": { - "tmMatch": 19, - "default": 2, - "total": 21 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 121, - "default": 14201, - "total": 14322 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967125, - "username": "erfanej", - "fullName": "Erfan Emamjomeh (erfanej)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png", - "preTranslated": 0, - "totalCosts": 7381 - }, - "languages": [ - { - "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 7381 - }, - "translated": { - "tmMatch": 57, - "default": 7324, - "total": 7381 - }, - "targetTranslated": { - "tmMatch": 64, - "default": 8947, - "total": 9011 - }, - "translatedByMt": { - "tmMatch": 11, - "default": 0, - "total": 11 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 57, - "default": 7324, - "total": 7381 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 13897487, - "username": "ethdotorg", - "fullName": "Ethereum.org Team (ethdotorg)", - "userRole": "Owner", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13897487/medium/246e50d7e9ccde07088ed892b07a0efd.png", - "preTranslated": 152817, - "totalCosts": 0 - }, - "languages": [ - { - "language": { - "id": "sq", - "name": "Albanian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1308, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "am", - "name": "Amharic", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 10, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 10066, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "az", - "name": "Azerbaijani", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 333, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "bn", - "name": "Bengali", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 12, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "bg", - "name": "Bulgarian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1405, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ca", - "name": "Catalan", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1768, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 10217, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 4240, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "hr", - "name": "Croatian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1171, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "cs", - "name": "Czech", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1007, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "da", - "name": "Danish", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 15, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "nl", - "name": "Dutch", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 3274, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "et", - "name": "Estonian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "fil", - "name": "Filipino", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 339, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "fi", - "name": "Finnish", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1816, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "fr", - "name": "French", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 10210, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 30 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "gl", - "name": "Galician", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 6, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ka", - "name": "Georgian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 6, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "de", - "name": "German", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 8911, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "el", - "name": "Greek", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 2863, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "gu-IN", - "name": "Gujarati", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 6, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ha", - "name": "Hausa", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 46, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "he", - "name": "Hebrew", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 11, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "hi", - "name": "Hindi", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1335, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "hu", - "name": "Hungarian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 4305, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ig", - "name": "Igbo", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 7, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "id", - "name": "Indonesian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 3542, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "it", - "name": "Italian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 10131, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 9424, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "kk", - "name": "Kazakh", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 6, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "km", - "name": "Khmer", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 332, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ko", - "name": "Korean", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 3231, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ku", - "name": "Kurdish", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 25, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ky", - "name": "Kyrgyz", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "lt", - "name": "Lithuanian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 8, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ms", - "name": "Malay", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 477, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ml-IN", - "name": "Malayalam", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 999, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "mr", - "name": "Marathi", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 8, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 148, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "no", - "name": "Norwegian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 20, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "fa", - "name": "Persian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 4981, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "pl", - "name": "Polish", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 5045, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 6 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "pt-PT", - "name": "Portuguese", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 702, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 10202, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ro", - "name": "Romanian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 3420, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ru", - "name": "Russian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 6707, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "sr-CS", - "name": "Serbian (Latin)", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 151, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "sk", - "name": "Slovak", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 7, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "sl", - "name": "Slovenian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 3115, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "so", - "name": "Somali", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 8151, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 4 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "sw", - "name": "Swahili", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 774, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "sv-SE", - "name": "Swedish", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 639, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ta", - "name": "Tamil", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 6, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "te", - "name": "Telugu", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "th", - "name": "Thai", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 301, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 8112, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "tk", - "name": "Turkmen", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 2, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 5038, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ur-IN", - "name": "Urdu (India)", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 6, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ur-PK", - "name": "Urdu (Pakistan)", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 521, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "uz", - "name": "Uzbek", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 27, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "vi", - "name": "Vietnamese", - "userRole": "Owner", - "tmSavings": 0, - "preTranslate": 1868, - "totalCosts": 0 - }, - "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15949885, - "username": "ikpongetimfon", - "fullName": "Etimfon Bassey (ikpongetimfon)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949885/medium/2bd51be5552240f36b7fc65871d64446.png", - "preTranslated": 0, - "totalCosts": 8137 - }, - "languages": [ - { - "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 8137 - }, - "translated": { - "tmMatch": 5, - "default": 8132, - "total": 8137 - }, - "targetTranslated": { - "tmMatch": 5, - "default": 9085, - "total": 9090 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 5, - "default": 8132, - "total": 8137 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967747, - "username": "fernandostds9", - "fullName": "Fernando R (fernandostds9)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967747/medium/27d7cdc7e3b587a57d083ea033db9c9c.png", - "preTranslated": 0, - "totalCosts": 274 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 274 - }, - "translated": { - "tmMatch": 1, - "default": 273, - "total": 274 - }, - "targetTranslated": { - "tmMatch": 1, - "default": 309, - "total": 310 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 1, - "default": 273, - "total": 274 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15945939, - "username": "Flokyy", - "fullName": "Flokyyy (Flokyy)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15945939/medium/2d9aa0527001c6e9a7022a2ba3c7574e.png", - "preTranslated": 0, - "totalCosts": 25 - }, - "languages": [ - { - "language": { - "id": "de", - "name": "German", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 25 - }, - "translated": { - "tmMatch": 25, - "default": 0, - "total": 25 - }, - "targetTranslated": { - "tmMatch": 27, - "default": 0, - "total": 27 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 25, - "default": 0, - "total": 25 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15954241, - "username": "FoodChain1028", - "fullName": "FoodChain (FoodChain1028)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954241/medium/a436b3580fe56bf2b5ccab541ae29695.png", - "preTranslated": 0, - "totalCosts": 196 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 196 - }, - "translated": { - "tmMatch": 0, - "default": 196, - "total": 196 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 398, - "total": 398 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 196, - "total": 196 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15386722, - "username": "Fred-Porlock", - "fullName": "Fred-Porlock", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15386722/medium/d45a14868eeb521fcff121613eaeee3c.png", - "preTranslated": 0, - "totalCosts": 1043 - }, - "languages": [ - { - "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 1043 - }, - "translated": { - "tmMatch": 0, - "default": 1043, - "total": 1043 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 1600, - "total": 1600 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 1043, - "total": 1043 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15951033, - "username": "fredda10x", - "fullName": "Fredrik Bakken (fredda10x)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15951033/medium/1f91c85bac1a87fc14574d15d64e1c40.png", - "preTranslated": 0, - "totalCosts": 12 - }, - "languages": [ - { - "language": { - "id": "no", - "name": "Norwegian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 12 - }, - "translated": { - "tmMatch": 0, - "default": 12, - "total": 12 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 8, - "total": 8 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 12, - "total": 12 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15934037, - "username": "fuji.anggara10", - "fullName": "Fuji Ar (fuji.anggara10)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg", - "preTranslated": 0, - "totalCosts": 85758 - }, - "languages": [ - { - "language": { - "id": "id", - "name": "Indonesian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 44893 - }, - "translated": { - "tmMatch": 183, - "default": 44710, - "total": 44893 - }, - "targetTranslated": { - "tmMatch": 191, - "default": 41874, - "total": 42065 - }, - "translatedByMt": { - "tmMatch": 10, - "default": 0, - "total": 10 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 183, - "default": 44710, - "total": 44893 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ms", - "name": "Malay", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 40865 - }, - "translated": { - "tmMatch": 147, - "default": 40718, - "total": 40865 - }, - "targetTranslated": { - "tmMatch": 145, - "default": 37369, - "total": 37514 - }, - "translatedByMt": { - "tmMatch": 85, - "default": 6, - "total": 91 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 147, - "default": 40718, - "total": 40865 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14568334, - "username": "norhorn", - "fullName": "George Kitsoukakis (norhorn)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg", - "preTranslated": 0, - "totalCosts": 19261 - }, - "languages": [ - { - "language": { - "id": "af", - "name": "Afrikaans", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 240 - }, - "translated": { - "tmMatch": 50, - "default": 190, - "total": 240 - }, - "targetTranslated": { - "tmMatch": 50, - "default": 190, - "total": 240 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 50, - "default": 190, - "total": 240 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "am", - "name": "Amharic", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 8 - }, - "translated": { - "tmMatch": 1, - "default": 7, - "total": 8 - }, - "targetTranslated": { - "tmMatch": 1, - "default": 7, - "total": 8 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 1, - "default": 7, - "total": 8 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 10 - }, - "translated": { - "tmMatch": 9, - "default": 1, - "total": 10 - }, - "targetTranslated": { - "tmMatch": 9, - "default": 1, - "total": 10 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 9, - "default": 1, - "total": 10 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "bi", - "name": "Bislama", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 102 - }, - "translated": { - "tmMatch": 12, - "default": 90, - "total": 102 - }, - "targetTranslated": { - "tmMatch": 12, - "default": 90, - "total": 102 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 12, - "default": 90, - "total": 102 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "bg", - "name": "Bulgarian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5 - }, - "translated": { - "tmMatch": 5, - "default": 0, - "total": 5 - }, - "targetTranslated": { - "tmMatch": 5, - "default": 0, - "total": 5 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 5, - "default": 0, - "total": 5 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "el", - "name": "Greek", - "userRole": "Translator, Proofreader", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 18891 - }, - "translated": { - "tmMatch": 309, - "default": 18582, - "total": 18891 - }, - "targetTranslated": { - "tmMatch": 348, - "default": 20557, - "total": 20905 - }, - "translatedByMt": { - "tmMatch": 5, - "default": 2, - "total": 7 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 2780 - }, - "translationCosts": { - "tmMatch": 309, - "default": 18582, - "total": 18891 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "no", - "name": "Norwegian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5 - }, - "translated": { - "tmMatch": 5, - "default": 0, - "total": 5 - }, - "targetTranslated": { - "tmMatch": 5, - "default": 0, - "total": 5 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 5, - "default": 0, - "total": 5 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15968127, - "username": "gonzagramaglia", - "fullName": "Gonza (gonzagramaglia)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968127/medium/0c91665492f81a2479639eba5271d7bc.png", - "preTranslated": 0, - "totalCosts": 7280 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 7280 - }, - "translated": { - "tmMatch": 39, - "default": 7241, - "total": 7280 - }, - "targetTranslated": { - "tmMatch": 38, - "default": 8816, - "total": 8854 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 39, - "default": 7241, - "total": 7280 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15957949, - "username": "mdhafizr", - "fullName": "Hafiz Ramlan (mdhafizr)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957949/medium/3e6921f8e5fefde8f1232609f93dabca.jpeg", - "preTranslated": 0, - "totalCosts": 54 - }, - "languages": [ - { - "language": { - "id": "ms", - "name": "Malay", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 54 - }, - "translated": { - "tmMatch": 10, - "default": 44, - "total": 54 - }, - "targetTranslated": { - "tmMatch": 9, - "default": 60, - "total": 69 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 10, - "default": 44, - "total": 54 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15086733, - "username": "hedwika", - "fullName": "Hedwika (hedwika)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15086733/medium/e58bffb1edb2cd4a9e2bbe7046a0d1e8.jpeg", - "preTranslated": 0, - "totalCosts": 25031 - }, - "languages": [ - { - "language": { - "id": "cs", - "name": "Czech", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 25031 - }, - "translated": { - "tmMatch": 528, - "default": 24503, - "total": 25031 - }, - "targetTranslated": { - "tmMatch": 466, - "default": 22574, - "total": 23040 - }, - "translatedByMt": { - "tmMatch": 3, - "default": 0, - "total": 3 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 528, - "default": 24503, - "total": 25031 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15208868, - "username": "HiroyukiNaito", - "fullName": "Hiroyuki Naito (HiroyukiNaito)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/10118cb6ff27d174a5170cb75ff1f436.jpg", - "preTranslated": 0, - "totalCosts": 6156 - }, - "languages": [ - { - "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Translator, Proofreader", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 6156 - }, - "translated": { - "tmMatch": 6, - "default": 6150, - "total": 6156 - }, - "targetTranslated": { - "tmMatch": 25, - "default": 17837, - "total": 17862 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 4, - "total": 4 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 15 - }, - "translationCosts": { - "tmMatch": 6, - "default": 6150, - "total": 6156 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15945861, - "username": "vonex0628", - "fullName": "Houfan Hsieh (vonex0628)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15945861/medium/e26711ccd7c5fa04b9283c470b7893fa.jpeg", - "preTranslated": 0, - "totalCosts": 20 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 20 - }, - "translated": { - "tmMatch": 0, - "default": 20, - "total": 20 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 56, - "total": 56 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 20, - "total": 20 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15965597, - "username": "Jo1ina72", - "fullName": "Hsin Yu Peng (Jo1ina72)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965597/medium/951c2ae19a095581deb53b0468802c4c.png", - "preTranslated": 0, - "totalCosts": 16 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 16 - }, - "translated": { - "tmMatch": 0, - "default": 16, - "total": 16 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 23, - "total": 23 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 16, - "total": 16 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15084373, - "username": "tarcanhursit", - "fullName": "Hursit Tarcan (tarcanhursit)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg", - "preTranslated": 0, - "totalCosts": 5545 - }, - "languages": [ - { - "language": { - "id": "nl", - "name": "Dutch", - "userRole": "Translator, Proofreader", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5527 - }, - "translated": { - "tmMatch": 22, - "default": 5505, - "total": 5527 - }, - "targetTranslated": { - "tmMatch": 22, - "default": 5738, - "total": 5760 - }, - "translatedByMt": { - "tmMatch": 4, - "default": 0, - "total": 4 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 67 - }, - "translationCosts": { - "tmMatch": 22, - "default": 5505, - "total": 5527 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 2 - }, - "translated": { - "tmMatch": 0, - "default": 2, - "total": 2 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 2, - "total": 2 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 2, - "total": 2 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 16 - }, - "translated": { - "tmMatch": 2, - "default": 14, - "total": 16 - }, - "targetTranslated": { - "tmMatch": 2, - "default": 14, - "total": 16 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 2, - "default": 14, - "total": 16 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15208522, - "username": "indrajitmurmu51", - "fullName": "Indrajit Murmu (indrajitmurmu51)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208522/medium/fa0a871004b1d181c4b85257e0686b55.png", - "preTranslated": 0, - "totalCosts": 3 - }, - "languages": [ - { - "language": { - "id": "sat", - "name": "Santali", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 3 - }, - "translated": { - "tmMatch": 0, - "default": 3, - "total": 3 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 7, - "total": 7 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 3, - "total": 3 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15763783, - "username": "1Arc", - "fullName": "Jman (1Arc)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763783/medium/e4da44dd445c10e4efb260be2defe551.png", - "preTranslated": 0, - "totalCosts": 470 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 470 - }, - "translated": { - "tmMatch": 8, - "default": 462, - "total": 470 - }, - "targetTranslated": { - "tmMatch": 8, - "default": 520, - "total": 528 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 8, - "default": 462, - "total": 470 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15822529, - "username": "joacirferrarezi", - "fullName": "Joacir Ferrarezi (joacirferrarezi)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15822529/medium/2cfb3489e56881807de1d3ce9406cfa3.jpeg", - "preTranslated": 0, - "totalCosts": 29 - }, - "languages": [ - { - "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 29 - }, - "translated": { - "tmMatch": 0, - "default": 29, - "total": 29 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 7, - "total": 7 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 29, - "total": 29 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15421538, - "username": "johannt", - "fullName": "Johann Pongratz (johannt)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15421538/medium/7e1f5d90509951072c0de0d9684baa35.png", - "preTranslated": 0, - "totalCosts": 23160 - }, - "languages": [ - { - "language": { - "id": "de", - "name": "German", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 23160 - }, - "translated": { - "tmMatch": 28, - "default": 23132, - "total": 23160 - }, - "targetTranslated": { - "tmMatch": 23, - "default": 23118, - "total": 23141 - }, - "translatedByMt": { - "tmMatch": 5, - "default": 4, - "total": 9 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 28, - "default": 23132, - "total": 23160 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15955219, - "username": "salcedomontesjose", - "fullName": "Jose Salcedo (salcedomontesjose)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955219/medium/d86d838530a21aef6f08fd56cf17232a.png", - "preTranslated": 0, - "totalCosts": 290 - }, - "languages": [ - { - "language": { - "id": "ko", - "name": "Korean", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 290 - }, - "translated": { - "tmMatch": 0, - "default": 290, - "total": 290 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 210, - "total": 210 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 290, - "total": 290 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15966713, - "username": "Blockchain_Visionary", - "fullName": "Joseph Ruben Gonzalez Alva (Blockchain_Visionary)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966713/medium/afcca99ffb2409b8720273392f8fecfa.png", - "preTranslated": 0, - "totalCosts": 452 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 452 - }, - "translated": { - "tmMatch": 0, - "default": 452, - "total": 452 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 516, - "total": 516 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 452, - "total": 452 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15949419, - "username": "Kajko25", - "fullName": "Kajko25", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949419/medium/470f96f3b8af8cefb847f616973ce61d.png", - "preTranslated": 0, - "totalCosts": 709 - }, - "languages": [ - { - "language": { - "id": "pl", - "name": "Polish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 709 - }, - "translated": { - "tmMatch": 1, - "default": 708, - "total": 709 - }, - "targetTranslated": { - "tmMatch": 1, - "default": 642, - "total": 643 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 1, - "default": 708, - "total": 709 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15956433, - "username": "0xkal", - "fullName": "Kaleab (0xkal)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956433/medium/b911054c60a1c43f6c2c3526df9f632c_default.png", - "preTranslated": 0, - "totalCosts": 21883 - }, - "languages": [ - { - "language": { - "id": "am", - "name": "Amharic", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 21880 - }, - "translated": { - "tmMatch": 123, - "default": 21757, - "total": 21880 - }, - "targetTranslated": { - "tmMatch": 123, - "default": 18211, - "total": 18334 - }, - "translatedByMt": { - "tmMatch": 11, - "default": 0, - "total": 11 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 123, - "default": 21757, - "total": 21880 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ti", - "name": "Tigrinya", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 3 - }, - "translated": { - "tmMatch": 0, - "default": 3, - "total": 3 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 5, - "total": 5 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 3, - "total": 3 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14090051, - "username": "ckykenken", - "fullName": "Ken Chan (ckykenken)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14090051/medium/7f731194f98d3e1d19de2ef09f179542_default.png", - "preTranslated": 0, - "totalCosts": 47 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 47 - }, - "translated": { - "tmMatch": 0, - "default": 47, - "total": 47 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 84, - "total": 84 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 47, - "total": 47 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14661950, - "username": "kenforever", - "fullName": "Ken Leong (kenforever)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14661950/medium/d12c67f954a833d343013ee215f59335.jpg", - "preTranslated": 0, - "totalCosts": 1454 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 1454 - }, - "translated": { - "tmMatch": 64, - "default": 1390, - "total": 1454 - }, - "targetTranslated": { - "tmMatch": 114, - "default": 2415, - "total": 2529 - }, - "translatedByMt": { - "tmMatch": 1, - "default": 0, - "total": 1 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 64, - "default": 1390, - "total": 1454 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15565893, - "username": "khalilhammod19", - "fullName": "Khalil Hammod (khalilhammod19)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15565893/medium/d917912c05b0d8b8eb75649989e9df6b.png", - "preTranslated": 0, - "totalCosts": 734 - }, - "languages": [ - { - "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 734 - }, - "translated": { - "tmMatch": 0, - "default": 734, - "total": 734 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 697, - "total": 697 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 734, - "total": 734 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 13471138, - "username": "KyungwonPark", - "fullName": "Kyungwon Park (KyungwonPark)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png", - "preTranslated": 0, - "totalCosts": 4707 - }, - "languages": [ - { - "language": { - "id": "ko", - "name": "Korean", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 4707 - }, - "translated": { - "tmMatch": 12, - "default": 4695, - "total": 4707 - }, - "targetTranslated": { - "tmMatch": 10, - "default": 3580, - "total": 3590 - }, - "translatedByMt": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 12, - "default": 4695, - "total": 4707 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 12636762, - "username": "lailabaez", - "fullName": "Laila Báez (lailabaez)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12636762/medium/18eb7a2cca24e665e61083171cac0ff6.jpg", - "preTranslated": 0, - "totalCosts": 215 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 215 - }, - "translated": { - "tmMatch": 0, - "default": 215, - "total": 215 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 227, - "total": 227 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 215, - "total": 215 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15959673, - "username": "lilyfish", - "fullName": "Lala Lin (lilyfish)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15959673/medium/dedb96522598be262af59ee458a8b885.png", - "preTranslated": 0, - "totalCosts": 637 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 637 - }, - "translated": { - "tmMatch": 0, - "default": 637, - "total": 637 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 1104, - "total": 1104 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 637, - "total": 637 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15901569, - "username": "ezraike", - "fullName": "Life Defied (ezraike)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15901569/medium/6f25011ba2194f82c502e04e4da44f22.png", - "preTranslated": 0, - "totalCosts": 261 - }, - "languages": [ - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 261 - }, - "translated": { - "tmMatch": 0, - "default": 261, - "total": 261 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 238, - "total": 238 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 261, - "total": 261 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15978873, - "username": "lethingoclien310", - "fullName": "Liên Lê (lethingoclien310)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15978873/medium/b76937fe2df12b869f741a9283131e8e.png", - "preTranslated": 0, - "totalCosts": 5 - }, - "languages": [ - { - "language": { - "id": "vi", - "name": "Vietnamese", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5 - }, - "translated": { - "tmMatch": 0, - "default": 5, - "total": 5 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 5, - "total": 5 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 5, - "total": 5 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967341, - "username": "lukakovacica", - "fullName": "Luka Kovačič (lukakovacica)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967341/medium/1f73cbf1251ef7926042a12fcf6e6827.png", - "preTranslated": 0, - "totalCosts": 8018 - }, - "languages": [ - { - "language": { - "id": "sl", - "name": "Slovenian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 8018 - }, - "translated": { - "tmMatch": 132, - "default": 7886, - "total": 8018 - }, - "targetTranslated": { - "tmMatch": 123, - "default": 7397, - "total": 7520 - }, - "translatedByMt": { - "tmMatch": 6, - "default": 0, - "total": 6 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 132, - "default": 7886, - "total": 8018 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 13544774, - "username": "LukaK", - "fullName": "Luka Kropec (LukaK)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13544774/medium/8ab65000e2909e49ea0eb0e7a470c25c_default.png", - "preTranslated": 0, - "totalCosts": 43 - }, - "languages": [ - { - "language": { - "id": "sl", - "name": "Slovenian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 43 - }, - "translated": { - "tmMatch": 0, - "default": 43, - "total": 43 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 18, - "total": 18 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 43, - "total": 43 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14208470, - "username": "leduylam1998", - "fullName": "Lâm Lee (leduylam1998)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14208470/medium/25bf5b5e8d8763d5316a7e494eec001e.png", - "preTranslated": 0, - "totalCosts": 28 - }, - "languages": [ - { - "language": { - "id": "vi", - "name": "Vietnamese", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 28 - }, - "translated": { - "tmMatch": 0, - "default": 28, - "total": 28 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 36, - "total": 36 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 28, - "total": 28 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15194310, - "username": "MGETH", - "fullName": "MGETH", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg", - "preTranslated": 0, - "totalCosts": 78777 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 78777 - }, - "translated": { - "tmMatch": 173, - "default": 78604, - "total": 78777 - }, - "targetTranslated": { - "tmMatch": 198, - "default": 92701, - "total": 92899 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 173, - "default": 78604, - "total": 78777 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15284800, - "username": "msliwinski123", - "fullName": "MS1 (msliwinski123)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png", - "preTranslated": 0, - "totalCosts": 20135 - }, - "languages": [ - { - "language": { - "id": "pl", - "name": "Polish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 20135 - }, - "translated": { - "tmMatch": 162, - "default": 19973, - "total": 20135 - }, - "targetTranslated": { - "tmMatch": 162, - "default": 18316, - "total": 18478 - }, - "translatedByMt": { - "tmMatch": 3, - "default": 0, - "total": 3 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 162, - "default": 19973, - "total": 20135 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15947697, - "username": "mahdigachloo33", - "fullName": "Mahdi Gachloo (mahdigachloo33)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947697/medium/6d060369501296118d0d9155a941096a.jpeg", - "preTranslated": 0, - "totalCosts": 3413 - }, - "languages": [ - { - "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 3413 - }, - "translated": { - "tmMatch": 14, - "default": 3399, - "total": 3413 - }, - "targetTranslated": { - "tmMatch": 18, - "default": 4238, - "total": 4256 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 14, - "default": 3399, - "total": 3413 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15950767, - "username": "mahdi_ghasemi", - "fullName": "Mahdi Ghasemi (mahdi_ghasemi)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15950767/medium/1afbe600b69aa04f13e882f27b84ad6c.jpg", - "preTranslated": 0, - "totalCosts": 41 - }, - "languages": [ - { - "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 41 - }, - "translated": { - "tmMatch": 0, - "default": 41, - "total": 41 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 47, - "total": 47 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 41, - "total": 41 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967245, - "username": "Mahdieh", - "fullName": "Mahdieh Amiri (Mahdieh)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967245/medium/85cefe753c17bdff8c9a4598105e640b.jpg", - "preTranslated": 0, - "totalCosts": 8 - }, - "languages": [ - { - "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 8 - }, - "translated": { - "tmMatch": 0, - "default": 8, - "total": 8 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 11, - "total": 11 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 8, - "total": 8 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14146435, - "username": "mahesh339", - "fullName": "Mahesh Rajput (mahesh339)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14146435/medium/6c10b5f6b69bf8c155b9f227d3e71f6c.jpeg", - "preTranslated": 0, - "totalCosts": 155 - }, - "languages": [ - { - "language": { - "id": "gu-IN", - "name": "Gujarati", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 155 - }, - "translated": { - "tmMatch": 12, - "default": 143, - "total": 155 - }, - "targetTranslated": { - "tmMatch": 19, - "default": 255, - "total": 274 - }, - "translatedByMt": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 12, - "default": 143, - "total": 155 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15917951, - "username": "maisa.m", - "fullName": "Maisa Milena (maisa.m)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15917951/medium/399d31990fbb5c2b964adeaaeb05b6a0.png", - "preTranslated": 0, - "totalCosts": 112 - }, - "languages": [ - { - "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 112 - }, - "translated": { - "tmMatch": 0, - "default": 112, - "total": 112 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 116, - "total": 116 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 112, - "total": 112 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15515516, - "username": "MCreimer", - "fullName": "Marcelo Creimer (MCreimer)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png", - "preTranslated": 0, - "totalCosts": 33208 - }, - "languages": [ - { - "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 33208 - }, - "translated": { - "tmMatch": 149, - "default": 33059, - "total": 33208 - }, - "targetTranslated": { - "tmMatch": 167, - "default": 34063, - "total": 34230 - }, - "translatedByMt": { - "tmMatch": 31, - "default": 0, - "total": 31 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 149, - "default": 33059, - "total": 33208 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15975561, - "username": "marcin26brona", - "fullName": "Marcin Brona (marcin26brona)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15975561/medium/b55d042407dfc9cb1a60336a5bc14c74.png", - "preTranslated": 0, - "totalCosts": 38 - }, - "languages": [ - { - "language": { - "id": "pl", - "name": "Polish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 38 - }, - "translated": { - "tmMatch": 1, - "default": 37, - "total": 38 - }, - "targetTranslated": { - "tmMatch": 1, - "default": 37, - "total": 38 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 1, - "default": 37, - "total": 38 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15810863, - "username": "bitblondy", - "fullName": "Marlene Marz (bitblondy)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810863/medium/36dab07f1a377151348d57285a7955f7_default.png", - "preTranslated": 0, - "totalCosts": 13230 - }, - "languages": [ - { - "language": { - "id": "eo", - "name": "Esperanto", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 109 - }, - "translated": { - "tmMatch": 0, - "default": 109, - "total": 109 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 96, - "total": 96 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 109, - "total": 109 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "de", - "name": "German", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 13121 - }, - "translated": { - "tmMatch": 99, - "default": 13022, - "total": 13121 - }, - "targetTranslated": { - "tmMatch": 95, - "default": 12855, - "total": 12950 - }, - "translatedByMt": { - "tmMatch": 1, - "default": 2, - "total": 3 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 99, - "default": 13022, - "total": 13121 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15972279, - "username": "mateusz.ziebura93", - "fullName": "Mateusz Ziebura (mateusz.ziebura93)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15972279/medium/840cdd08f3a33d03f7a35ebde63f7d1d.png", - "preTranslated": 0, - "totalCosts": 25 - }, - "languages": [ - { - "language": { - "id": "pl", - "name": "Polish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 25 - }, - "translated": { - "tmMatch": 0, - "default": 25, - "total": 25 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 23, - "total": 23 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 25, - "total": 25 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14935043, - "username": "Cryptotranslator34", - "fullName": "Mauricio Streicher (Cryptotranslator34)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14935043/medium/bc2553516f2183fada4da40bcc384374.jpg", - "preTranslated": 0, - "totalCosts": 843 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 843 - }, - "translated": { - "tmMatch": 16, - "default": 827, - "total": 843 - }, - "targetTranslated": { - "tmMatch": 18, - "default": 938, - "total": 956 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 16, - "default": 827, - "total": 843 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15962617, - "username": "michellewambaya", - "fullName": "Michelle Mtoni (michellewambaya)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962617/medium/71969c5582e88435faeb2290d3f4c9fb.png", - "preTranslated": 0, - "totalCosts": 307 - }, - "languages": [ - { - "language": { - "id": "sw", - "name": "Swahili", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 307 - }, - "translated": { - "tmMatch": 10, - "default": 297, - "total": 307 - }, - "targetTranslated": { - "tmMatch": 10, - "default": 281, - "total": 291 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 10, - "default": 297, - "total": 307 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967233, - "username": "jasminesprout", - "fullName": "Mike Chabanovskyi (jasminesprout)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg", - "preTranslated": 0, - "totalCosts": 26445 - }, - "languages": [ - { - "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 19993 - }, - "translated": { - "tmMatch": 33, - "default": 19960, - "total": 19993 - }, - "targetTranslated": { - "tmMatch": 36, - "default": 18253, - "total": 18289 - }, - "translatedByMt": { - "tmMatch": 9, - "default": 2, - "total": 11 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 33, - "default": 19960, - "total": 19993 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 6452 - }, - "translated": { - "tmMatch": 3, - "default": 6449, - "total": 6452 - }, - "targetTranslated": { - "tmMatch": 3, - "default": 5831, - "total": 5834 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 3, - "default": 6449, - "total": 6452 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15974377, - "username": "Miladsob", - "fullName": "Milad Sobhkhiz (Miladsob)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15974377/medium/a9f52528a2ab92c1f4b9ac10a665c97a.jpg", - "preTranslated": 0, - "totalCosts": 70 - }, - "languages": [ - { - "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 70 - }, - "translated": { - "tmMatch": 0, - "default": 70, - "total": 70 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 102, - "total": 102 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 70, - "total": 70 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15954079, - "username": "_Manax_", - "fullName": "Minase Melese (_Manax_)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954079/medium/a1d18eea9ff3663836816373ecaf90e7.jpeg", - "preTranslated": 0, - "totalCosts": 12455 - }, - "languages": [ - { - "language": { - "id": "am", - "name": "Amharic", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 12455 - }, - "translated": { - "tmMatch": 17, - "default": 12438, - "total": 12455 - }, - "targetTranslated": { - "tmMatch": 19, - "default": 10357, - "total": 10376 - }, - "translatedByMt": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 17, - "default": 12438, - "total": 12455 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967193, - "username": "minhkek", - "fullName": "Minh (minhkek)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967193/medium/9de1591866a92c526781acfb27509d87.png", - "preTranslated": 0, - "totalCosts": 6623 - }, - "languages": [ - { - "language": { - "id": "vi", - "name": "Vietnamese", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 6623 - }, - "translated": { - "tmMatch": 43, - "default": 6580, - "total": 6623 - }, - "targetTranslated": { - "tmMatch": 56, - "default": 10100, - "total": 10156 - }, - "translatedByMt": { - "tmMatch": 3, - "default": 8, - "total": 11 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 43, - "default": 6580, - "total": 6623 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967133, - "username": "mohamadsolouki", - "fullName": "Mohamad Solouki (mohamadsolouki)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967133/medium/068eec442d4368df02c3025eef7450cc.jpeg", - "preTranslated": 0, - "totalCosts": 19 - }, - "languages": [ - { - "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 19 - }, - "translated": { - "tmMatch": 0, - "default": 19, - "total": 19 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 22, - "total": 22 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 19, - "total": 19 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15503382, - "username": "mohammedE22", - "fullName": "Mohammed Eid (mohammedE22)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15503382/medium/b5e1fa8943e236c07bbe459d92d23dcb.png", - "preTranslated": 0, - "totalCosts": 1649 - }, - "languages": [ - { - "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 1649 - }, - "translated": { - "tmMatch": 4, - "default": 1645, - "total": 1649 - }, - "targetTranslated": { - "tmMatch": 3, - "default": 1483, - "total": 1486 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 4, - "default": 1645, - "total": 1649 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15946395, - "username": "myrbergmonica2", - "fullName": "Monica Kärki (myrbergmonica2)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946395/medium/b5bf97cc6d5f158752b492c43f2515a8.jpeg", - "preTranslated": 0, - "totalCosts": 12 - }, - "languages": [ - { - "language": { - "id": "fi", - "name": "Finnish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 12 - }, - "translated": { - "tmMatch": 0, - "default": 12, - "total": 12 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 10, - "total": 10 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 12, - "total": 12 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15968031, - "username": "Jaux", - "fullName": "Moses Joshua (Jaux)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968031/medium/a763502b6e5b9ad73f6ca17072a9f297.png", - "preTranslated": 0, - "totalCosts": 244 - }, - "languages": [ - { - "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 244 - }, - "translated": { - "tmMatch": 1, - "default": 243, - "total": 244 - }, - "targetTranslated": { - "tmMatch": 1, - "default": 282, - "total": 283 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 1, - "default": 243, - "total": 244 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15946267, - "username": "socopower", - "fullName": "Mr K. (socopower)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946267/medium/094f1891b25266289c4aa5df7b08cfb7.jpg", - "preTranslated": 0, - "totalCosts": 8650 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 8650 - }, - "translated": { - "tmMatch": 27, - "default": 8623, - "total": 8650 - }, - "targetTranslated": { - "tmMatch": 26, - "default": 9791, - "total": 9817 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 27, - "default": 8623, - "total": 8650 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15969571, - "username": "Mrkhainam", - "fullName": "Mrkhainam", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15969571/medium/3c3a74d2c4d799cb1af3effd8a48ac38.png", - "preTranslated": 0, - "totalCosts": 11 - }, - "languages": [ - { - "language": { - "id": "vi", - "name": "Vietnamese", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 11 - }, - "translated": { - "tmMatch": 0, - "default": 11, - "total": 11 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 15, - "total": 15 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 11, - "total": 11 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15953967, - "username": "muradqurbanov", - "fullName": "Murad Qurbanov (muradqurbanov)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15953967/medium/167c3e2b356a8153355ae868ddd0268a.png", - "preTranslated": 0, - "totalCosts": 283 - }, - "languages": [ - { - "language": { - "id": "az", - "name": "Azerbaijani", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 283 - }, - "translated": { - "tmMatch": 5, - "default": 278, - "total": 283 - }, - "targetTranslated": { - "tmMatch": 5, - "default": 235, - "total": 240 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 5, - "default": 278, - "total": 283 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15948283, - "username": "aftertaste.email", - "fullName": "NASH ALIFFI Channel (aftertaste.email)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948283/medium/d97d8fb0f519418cc0bba3fd9179b366.jpeg", - "preTranslated": 0, - "totalCosts": 813 - }, - "languages": [ - { - "language": { - "id": "id", - "name": "Indonesian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 813 - }, - "translated": { - "tmMatch": 2, - "default": 811, - "total": 813 - }, - "targetTranslated": { - "tmMatch": 2, - "default": 712, - "total": 714 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 2, - "default": 811, - "total": 813 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15946143, - "username": "Neil_web3", - "fullName": "Neil Diaz (Neil_web3)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946143/medium/c5f97d84fdb0c67cac3c899cb7b84c17.jpeg", - "preTranslated": 0, - "totalCosts": 1488 - }, - "languages": [ - { - "language": { - "id": "eo", - "name": "Esperanto", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 302 - }, - "translated": { - "tmMatch": 0, - "default": 302, - "total": 302 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 303, - "total": 303 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 302, - "total": 302 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "ro", - "name": "Romanian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 1032 - }, - "translated": { - "tmMatch": 10, - "default": 1022, - "total": 1032 - }, - "targetTranslated": { - "tmMatch": 11, - "default": 1106, - "total": 1117 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 10, - "default": 1022, - "total": 1032 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 66 - }, - "translated": { - "tmMatch": 0, - "default": 66, - "total": 66 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 79, - "total": 79 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 66, - "total": 66 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - }, - { - "language": { - "id": "tl", - "name": "Tagalog", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 88 - }, - "translated": { - "tmMatch": 2, - "default": 86, - "total": 88 - }, - "targetTranslated": { - "tmMatch": 3, - "default": 103, - "total": 106 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 2, - "default": 86, - "total": 88 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 13132928, - "username": "ntiunn", - "fullName": "Nga-Tiok Tiunn (ntiunn)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13132928/medium/7279036c1c0338ff05bbdb649b9b6c56_default.png", - "preTranslated": 0, - "totalCosts": 5093 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5093 - }, - "translated": { - "tmMatch": 6, - "default": 5087, - "total": 5093 - }, - "targetTranslated": { - "tmMatch": 11, - "default": 8902, - "total": 8913 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 6, - "default": 5087, - "total": 5093 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15932353, - "username": "nickksoares", - "fullName": "Nicollas Soares (nickksoares)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932353/medium/a722341af1e695a8a496f57be3f72a32.png", - "preTranslated": 0, - "totalCosts": 25 - }, - "languages": [ - { - "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 25 - }, - "translated": { - "tmMatch": 0, - "default": 25, - "total": 25 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 27, - "total": 27 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 25, - "total": 25 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15957911, - "username": "kotosai", - "fullName": "Niknik (kotosai)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957911/medium/578134662d1209e1b2f8a9a6d2904ece_default.png", - "preTranslated": 0, - "totalCosts": 522 - }, - "languages": [ - { - "language": { - "id": "fil", - "name": "Filipino", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 522 - }, - "translated": { - "tmMatch": 510, - "default": 12, - "total": 522 - }, - "targetTranslated": { - "tmMatch": 636, - "default": 12, - "total": 648 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 510, - "default": 12, - "total": 522 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967993, - "username": "Temmytee", - "fullName": "ODEWALE Timileyin Eunice (Temmytee)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967993/medium/3f1ee9aac1d24df61ecb31e92bbe27c5.jpeg", - "preTranslated": 0, - "totalCosts": 263 - }, - "languages": [ - { - "language": { - "id": "yo", - "name": "Yoruba", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 263 - }, - "translated": { - "tmMatch": 1, - "default": 262, - "total": 263 - }, - "targetTranslated": { - "tmMatch": 1, - "default": 310, - "total": 311 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 1, - "default": 262, - "total": 263 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967513, - "username": "Odinkrm", - "fullName": "Odin (Odinkrm)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967513/medium/b50f5902d42c3ec14ca4575e9b1dc504.jpeg", - "preTranslated": 0, - "totalCosts": 455 - }, - "languages": [ - { - "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 455 - }, - "translated": { - "tmMatch": 0, - "default": 455, - "total": 455 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 559, - "total": 559 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 455, - "total": 455 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15914449, - "username": "CoinHoodie", - "fullName": "Olivier Cappaert aka (CoinHoodie)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914449/medium/8d2590e4c534ca5125f1d70b6d9c71cc.jpeg", - "preTranslated": 0, - "totalCosts": 6269 - }, - "languages": [ - { - "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 6269 - }, - "translated": { - "tmMatch": 9, - "default": 6260, - "total": 6269 - }, - "targetTranslated": { - "tmMatch": 8, - "default": 7875, - "total": 7883 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 9, - "default": 6260, - "total": 6269 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15962007, - "username": "omkarkamale001", - "fullName": "Omkar K (omkarkamale001)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962007/medium/9019d6a347ebffa6f6464e00132355aa.jpeg", - "preTranslated": 0, - "totalCosts": 32502 - }, - "languages": [ - { - "language": { - "id": "mr", - "name": "Marathi", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 32502 - }, - "translated": { - "tmMatch": 66, - "default": 32436, - "total": 32502 - }, - "targetTranslated": { - "tmMatch": 111, - "default": 52313, - "total": 52424 - }, - "translatedByMt": { - "tmMatch": 16, - "default": 2, - "total": 18 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 66, - "default": 32436, - "total": 32502 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15948377, - "username": "Isaachavertz", - "fullName": "Onyeoma Isaac (Isaachavertz)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948377/medium/b55b9374fd682ba0148fe93427edeb2a.jpg", - "preTranslated": 0, - "totalCosts": 12983 - }, - "languages": [ - { - "language": { - "id": "ig", - "name": "Igbo", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 12983 - }, - "translated": { - "tmMatch": 7, - "default": 12976, - "total": 12983 - }, - "targetTranslated": { - "tmMatch": 12, - "default": 15714, - "total": 15726 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 7, - "default": 12976, - "total": 12983 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14787370, - "username": "agulani", - "fullName": "Orkhan Rustamzade (agulani)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787370/medium/9bb8a2d0d244e04f14b523e895b08100.jpg", - "preTranslated": 0, - "totalCosts": 4216 - }, - "languages": [ - { - "language": { - "id": "az", - "name": "Azerbaijani", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 4216 - }, - "translated": { - "tmMatch": 14, - "default": 4202, - "total": 4216 - }, - "targetTranslated": { - "tmMatch": 13, - "default": 3647, - "total": 3660 - }, - "translatedByMt": { - "tmMatch": 10, - "default": 0, - "total": 10 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 14, - "default": 4202, - "total": 4216 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15975477, - "username": "pareshpandit", - "fullName": "Paresh Pandit (pareshpandit)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15975477/medium/70848478b074018fdeac2a069e9d9e76.jpeg", - "preTranslated": 0, - "totalCosts": 26 - }, - "languages": [ - { - "language": { - "id": "mr", - "name": "Marathi", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 26 - }, - "translated": { - "tmMatch": 0, - "default": 26, - "total": 26 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 35, - "total": 35 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 26, - "total": 26 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 13002436, - "username": "patcharaphol-army15", - "fullName": "Patcharaphol Teathewat (patcharaphol-army15)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13002436/medium/82a0c7e3f81d6df8f2011576ba556cd6.jpg", - "preTranslated": 0, - "totalCosts": 10 - }, - "languages": [ - { - "language": { - "id": "th", - "name": "Thai", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 10 - }, - "translated": { - "tmMatch": 0, - "default": 10, - "total": 10 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 1, - "total": 1 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 10, - "total": 10 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 17361, - "username": "plamarque", - "fullName": "Patrice Lamarque (plamarque)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png", - "preTranslated": 0, - "totalCosts": 3411 - }, - "languages": [ - { - "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 3411 - }, - "translated": { - "tmMatch": 38, - "default": 3373, - "total": 3411 - }, - "targetTranslated": { - "tmMatch": 47, - "default": 3960, - "total": 4007 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 38, - "default": 3373, - "total": 3411 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15956717, - "username": "patthpapong", - "fullName": "Patt Hpapong (patthpapong)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956717/medium/11bc182149843dd568206843a6a98c07.jpeg", - "preTranslated": 0, - "totalCosts": 2348 - }, - "languages": [ - { - "language": { - "id": "th", - "name": "Thai", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 2348 - }, - "translated": { - "tmMatch": 49, - "default": 2299, - "total": 2348 - }, - "targetTranslated": { - "tmMatch": 39, - "default": 497, - "total": 536 - }, - "translatedByMt": { - "tmMatch": 17, - "default": 0, - "total": 17 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 49, - "default": 2299, - "total": 2348 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15954333, - "username": "queenie0815", - "fullName": "Queenie Chang (queenie0815)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954333/medium/589465a479a53254001094f2a4322a0f.png", - "preTranslated": 0, - "totalCosts": 736 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 736 - }, - "translated": { - "tmMatch": 0, - "default": 736, - "total": 736 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 1223, - "total": 1223 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 736, - "total": 736 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15977385, - "username": "rishabhknows", - "fullName": "RISHABH RAI (rishabhknows)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15977385/medium/a272262bea7def7ef07553bc1e446f74.png", - "preTranslated": 0, - "totalCosts": 143 - }, - "languages": [ - { - "language": { - "id": "sv-SE", - "name": "Swedish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 143 - }, - "translated": { - "tmMatch": 8, - "default": 135, - "total": 143 - }, - "targetTranslated": { - "tmMatch": 9, - "default": 146, - "total": 155 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 8, - "default": 135, - "total": 143 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15983311, - "username": "nt.radina", - "fullName": "Radina Talanova (nt.radina)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15983311/medium/071fa8c14ce4780657696d6422221b3c.png", - "preTranslated": 0, - "totalCosts": 147 - }, - "languages": [ - { - "language": { - "id": "bg", - "name": "Bulgarian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 147 - }, - "translated": { - "tmMatch": 36, - "default": 111, - "total": 147 - }, - "targetTranslated": { - "tmMatch": 37, - "default": 107, - "total": 144 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 36, - "default": 111, - "total": 147 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14861756, - "username": "RahayuRafika_12", - "fullName": "Rahayu Rafikahwulan Sari (RahayuRafika_12)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg", - "preTranslated": 0, - "totalCosts": 12300 - }, - "languages": [ - { - "language": { - "id": "id", - "name": "Indonesian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 12300 - }, - "translated": { - "tmMatch": 93, - "default": 12207, - "total": 12300 - }, - "targetTranslated": { - "tmMatch": 97, - "default": 11708, - "total": 11805 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 93, - "default": 12207, - "total": 12300 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15417292, - "username": "Krynlix", - "fullName": "Rall Ball (Krynlix)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15417292/medium/8ffb6e3dcf9f571cdce495e92d212419.png", - "preTranslated": 0, - "totalCosts": 187 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 187 - }, - "translated": { - "tmMatch": 0, - "default": 187, - "total": 187 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 236, - "total": 236 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 187, - "total": 187 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15969013, - "username": "0xRayLin", - "fullName": "Ray Lin (0xRayLin)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15969013/medium/b1fac63beade2d636d519324f4460b33.png", - "preTranslated": 0, - "totalCosts": 16 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 16 - }, - "translated": { - "tmMatch": 0, - "default": 16, - "total": 16 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 27, - "total": 27 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 2, - "total": 2 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 16, - "total": 16 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15966349, - "username": "chiogonzalezt", - "fullName": "Rocio Gonzalez Toral (chiogonzalezt)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966349/medium/1d277519e5b8ccdfc1de7b60ec89e1b0.jpeg", - "preTranslated": 0, - "totalCosts": 4922 - }, - "languages": [ - { - "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 4922 - }, - "translated": { - "tmMatch": 176, - "default": 4746, - "total": 4922 - }, - "targetTranslated": { - "tmMatch": 191, - "default": 5004, - "total": 5195 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 176, - "default": 4746, - "total": 4922 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15885247, - "username": "ct1aic.eth", - "fullName": "Rui Costa (ct1aic.eth)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15885247/medium/cf22113f9226047f8f9868e4774bc4c3.png", - "preTranslated": 0, - "totalCosts": 11114 - }, - "languages": [ - { - "language": { - "id": "pt-PT", - "name": "Portuguese", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 11114 - }, - "translated": { - "tmMatch": 20, - "default": 11094, - "total": 11114 - }, - "targetTranslated": { - "tmMatch": 21, - "default": 12473, - "total": 12494 - }, - "translatedByMt": { - "tmMatch": 9, - "default": 5, - "total": 14 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 20, - "default": 11094, - "total": 11114 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 14103339, - "username": "ryoji.imai", - "fullName": "Ryoji Imai (ryoji.imai)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14103339/medium/fc832d678cca1c9a43f019d8a819f41c.JPG", - "preTranslated": 0, - "totalCosts": 4238 - }, - "languages": [ - { - "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 4238 - }, - "translated": { - "tmMatch": 118, - "default": 4120, - "total": 4238 - }, - "targetTranslated": { - "tmMatch": 311, - "default": 11553, - "total": 11864 - }, - "translatedByMt": { - "tmMatch": 5, - "default": 0, - "total": 5 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 118, - "default": 4120, - "total": 4238 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15954959, - "username": "Sardor_Abdulla", - "fullName": "SARDOR_ABDULLAH (Sardor_Abdulla)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954959/medium/ddbf77017fa377ffb466b49da1656c3c.png", - "preTranslated": 0, - "totalCosts": 16887 - }, - "languages": [ - { - "language": { - "id": "uz", - "name": "Uzbek", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 16887 - }, - "translated": { - "tmMatch": 69, - "default": 16818, - "total": 16887 - }, - "targetTranslated": { - "tmMatch": 76, - "default": 14626, - "total": 14702 - }, - "translatedByMt": { - "tmMatch": 2, - "default": 0, - "total": 2 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 69, - "default": 16818, - "total": 16887 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15953195, - "username": "finn79426", - "fullName": "SC (finn79426)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15953195/medium/e3fad6fa513cbf663b9e3398a9606faf.png", - "preTranslated": 0, - "totalCosts": 83 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 83 - }, - "translated": { - "tmMatch": 0, - "default": 83, - "total": 83 - }, - "targetTranslated": { - "tmMatch": 0, - "default": 151, - "total": 151 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 0, - "default": 83, - "total": 83 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15965723, - "username": "sudosu.tw", - "fullName": "SUSU蘇蘇 (sudosu.tw)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965723/medium/13708940b262d15c19d02db2426807a3.jpeg", - "preTranslated": 0, - "totalCosts": 36 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 36 - }, - "translated": { - "tmMatch": 3, - "default": 33, - "total": 36 - }, - "targetTranslated": { - "tmMatch": 3, - "default": 46, - "total": 49 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 3, - "default": 33, - "total": 36 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15984135, - "username": "bula_ma", - "fullName": "Sasa M (bula_ma)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15984135/medium/29e7898bf771b92246895fa2594fdaac.png", - "preTranslated": 0, - "totalCosts": 116 - }, - "languages": [ - { - "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 116 - }, - "translated": { - "tmMatch": 12, - "default": 104, - "total": 116 - }, - "targetTranslated": { - "tmMatch": 23, - "default": 174, - "total": 197 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 12, - "default": 104, - "total": 116 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15966007, - "username": "0xselimc", - "fullName": "Selim C (0xselimc)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966007/medium/6008a158d741536a305a81bd295ab407.jpeg", - "preTranslated": 0, - "totalCosts": 14459 - }, - "languages": [ - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 14459 - }, - "translated": { - "tmMatch": 41, - "default": 14418, - "total": 14459 - }, - "targetTranslated": { - "tmMatch": 40, - "default": 12174, - "total": 12214 - }, - "translatedByMt": { - "tmMatch": 15, - "default": 0, - "total": 15 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 41, - "default": 14418, - "total": 14459 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15082707, - "username": "selcuk45", - "fullName": "Selçuk (selcuk45)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg", - "preTranslated": 0, - "totalCosts": 32205 - }, - "languages": [ - { - "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 32205 - }, - "translated": { - "tmMatch": 185, - "default": 32020, - "total": 32205 - }, - "targetTranslated": { - "tmMatch": 180, - "default": 26787, - "total": 26967 - }, - "translatedByMt": { - "tmMatch": 31, - "default": 2, - "total": 33 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 185, - "default": 32020, - "total": 32205 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15967353, - "username": "sipbikardi", - "fullName": "Sepehr Hashemi (sipbikardi)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967353/medium/bdbc4e456ff62160eead47d69c036137.jpg", - "preTranslated": 0, - "totalCosts": 5150 - }, - "languages": [ - { - "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5150 - }, - "translated": { - "tmMatch": 71, - "default": 5079, - "total": 5150 - }, - "targetTranslated": { - "tmMatch": 67, - "default": 6140, - "total": 6207 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 71, - "default": 5079, - "total": 5150 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15769467, - "username": "seunbayo", - "fullName": "Seunbayo (seunbayo)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15769467/medium/8532abcb64313bbe86bddfbe926187ea_default.png", - "preTranslated": 0, - "totalCosts": 5914 - }, - "languages": [ - { - "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5914 - }, - "translated": { - "tmMatch": 7, - "default": 5907, - "total": 5914 - }, - "targetTranslated": { - "tmMatch": 7, - "default": 6488, - "total": 6495 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 7, - "default": 5907, - "total": 5914 - }, - "approvalCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15328532, - "username": "Seung_Gi_Kim", - "fullName": "Seung-Gi Kim (Seung_Gi_Kim)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15328532/medium/78e4ff5d50b928c2aea8ff50b2ff1c39.jpg", - "preTranslated": 0, - "totalCosts": 2 - }, - "languages": [ - { - "language": { - "id": "ko", - "name": "Korean", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 2 - }, - "translated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "default": 10, + "total": 10 }, "targetTranslated": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 11, + "total": 11 }, "translatedByMt": { "tmMatch": 0, @@ -18451,50 +6487,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 13 }, "translationCosts": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 10, + "total": 10 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15953233, - "username": "shakibashamloo72", - "fullName": "Shakiba Shamloo (shakibashamloo72)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15953233/medium/b0e24acd4c4cbb051af9f719a6cb55c4.jpeg", - "preTranslated": 0, - "totalCosts": 108 - }, - "languages": [ + }, { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", + "id": "id", + "name": "Indonesian", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 108 + "preTranslate": 36, + "totalCosts": 0 }, "translated": { "tmMatch": 0, - "default": 108, - "total": 108 + "default": 0, + "total": 0 }, "targetTranslated": { "tmMatch": 0, - "default": 153, - "total": 153 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -18504,50 +6527,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 24 }, "translationCosts": { "tmMatch": 0, - "default": 108, - "total": 108 + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15967507, - "username": "sh0xsh", - "fullName": "Shayan (sh0xsh)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967507/medium/544e4d4c4489a80de9b4aa2dbba72cae.jpg", - "preTranslated": 0, - "totalCosts": 230 - }, - "languages": [ + }, { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", + "id": "it", + "name": "Italian", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 230 + "preTranslate": 304, + "totalCosts": 0 }, "translated": { - "tmMatch": 62, - "default": 168, - "total": 230 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 87, - "default": 250, - "total": 337 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -18557,50 +6567,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 294 }, "translationCosts": { - "tmMatch": 62, - "default": 168, - "total": 230 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 25293, - "username": "shayanbahal", - "fullName": "Shayan Eskandari (shayanbahal)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/25293/medium/b5b185e599b3a3e36bb34e221af0bb29_default.png", - "preTranslated": 0, - "totalCosts": 14 - }, - "languages": [ + }, { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", + "id": "ja", + "name": "Japanese", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 14 + "preTranslate": 157, + "totalCosts": 0 }, "translated": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 0, + "total": 0 }, "targetTranslated": { "tmMatch": 0, - "default": 19, - "total": 19 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -18610,55 +6607,42 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 132 }, "translationCosts": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15837955, - "username": "Magdalena_", - "fullName": "Shiela Mae Quiros (Magdalena_)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg", - "preTranslated": 0, - "totalCosts": 51156 - }, - "languages": [ + }, { "language": { - "id": "fil", - "name": "Filipino", - "userRole": "Translator", + "id": "ko", + "name": "Korean", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 51156 + "preTranslate": 13, + "totalCosts": 0 }, "translated": { - "tmMatch": 146, - "default": 51010, - "total": 51156 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 161, - "default": 61726, - "total": 61887 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { - "tmMatch": 31, - "default": 13, - "total": 44 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -18666,62 +6650,49 @@ "total": 0 }, "translationCosts": { - "tmMatch": 146, - "default": 51010, - "total": 51156 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15956275, - "username": "Vertual", - "fullName": "Sok (Vertual)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956275/medium/b99671088004185399469853a0736adb.png", - "preTranslated": 0, - "totalCosts": 722 - }, - "languages": [ + }, { "language": { - "id": "sq", - "name": "Albanian", - "userRole": "Translator", + "id": "mr", + "name": "Marathi", + "userRole": "Owner", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 705 + "totalCosts": 3 }, "translated": { - "tmMatch": 18, - "default": 687, - "total": 705 + "tmMatch": 0, + "default": 3, + "total": 3 }, "targetTranslated": { - "tmMatch": 21, - "default": 776, - "total": 797 + "tmMatch": 0, + "default": 3, + "total": 3 }, "translatedByMt": { - "tmMatch": 14, - "default": 2, - "total": 16 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 3 }, "translationCosts": { - "tmMatch": 18, - "default": 687, - "total": 705 + "tmMatch": 0, + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, @@ -18731,75 +6702,62 @@ }, { "language": { - "id": "it", - "name": "Italian", - "userRole": "Translator", + "id": "pcm", + "name": "Nigerian Pidgin", + "userRole": "Owner", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 17 + "totalCosts": 35 }, "translated": { - "tmMatch": 0, - "default": 17, - "total": 17 + "tmMatch": 4, + "default": 31, + "total": 35 }, "targetTranslated": { - "tmMatch": 0, - "default": 17, - "total": 17 + "tmMatch": 4, + "default": 36, + "total": 40 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 35 }, "translationCosts": { - "tmMatch": 0, - "default": 17, - "total": 17 + "tmMatch": 4, + "default": 31, + "total": 35 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 13558335, - "username": "solarisonsparc", - "fullName": "SolarisSPARC (solarisonsparc)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13558335/medium/89e219a22d47ed92ce7c2b6864d99460.jpg", - "preTranslated": 0, - "totalCosts": 51 - }, - "languages": [ + }, { "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Translator", + "id": "fa", + "name": "Persian", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 51 + "preTranslate": 13, + "totalCosts": 47 }, "translated": { - "tmMatch": 3, - "default": 48, - "total": 51 + "tmMatch": 6, + "default": 41, + "total": 47 }, "targetTranslated": { - "tmMatch": 11, - "default": 146, - "total": 157 + "tmMatch": 6, + "default": 49, + "total": 55 }, "translatedByMt": { "tmMatch": 0, @@ -18809,103 +6767,77 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 47 }, "translationCosts": { - "tmMatch": 3, - "default": 48, - "total": 51 + "tmMatch": 6, + "default": 41, + "total": 47 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15964403, - "username": "Starbit30", - "fullName": "Stanislav Kupka (Starbit30)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964403/medium/1fcae011a1906f2432d013214ff209cf_default.png", - "preTranslated": 0, - "totalCosts": 5887 - }, - "languages": [ + }, { "language": { - "id": "cs", - "name": "Czech", - "userRole": "Translator", + "id": "pl", + "name": "Polish", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 5887 + "preTranslate": 22, + "totalCosts": 28 }, "translated": { - "tmMatch": 7, - "default": 5880, - "total": 5887 + "tmMatch": 0, + "default": 28, + "total": 28 }, "targetTranslated": { - "tmMatch": 8, - "default": 5154, - "total": 5162 + "tmMatch": 0, + "default": 26, + "total": 26 }, "translatedByMt": { "tmMatch": 0, - "default": 13, - "total": 13 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1217 }, "translationCosts": { - "tmMatch": 7, - "default": 5880, - "total": 5887 + "tmMatch": 0, + "default": 28, + "total": 28 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15532451, - "username": "hmsc", - "fullName": "Sunny Cheng (hmsc)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15532451/medium/1558c22671c8674e0f77412238047eb8_default.png", - "preTranslated": 0, - "totalCosts": 4178 - }, - "languages": [ + }, { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", + "id": "pt-PT", + "name": "Portuguese", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 4178 + "preTranslate": 6, + "totalCosts": 0 }, "translated": { - "tmMatch": 92, - "default": 4086, - "total": 4178 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 155, - "default": 6649, - "total": 6804 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -18918,47 +6850,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 92, - "default": 4086, - "total": 4178 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15976521, - "username": "TDzaa", - "fullName": "TDzaa", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15976521/medium/8414ee27520d071a1f2d1a4b63f64f08.png", - "preTranslated": 0, - "totalCosts": 137 - }, - "languages": [ + }, { "language": { - "id": "it", - "name": "Italian", - "userRole": "Translator", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 137 + "preTranslate": 158, + "totalCosts": 0 }, "translated": { "tmMatch": 0, - "default": 137, - "total": 137 + "default": 0, + "total": 0 }, "targetTranslated": { "tmMatch": 0, - "default": 153, - "total": 153 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -18968,50 +6887,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 11 }, "translationCosts": { "tmMatch": 0, - "default": 137, - "total": 137 + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15956561, - "username": "taxir.abjadao", - "fullName": "Taxir Initiative (taxir.abjadao)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956561/medium/d3c5967663d9190fbf70f6b62b29ffd5.jpeg", - "preTranslated": 0, - "totalCosts": 7991 - }, - "languages": [ + }, { "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Translator", + "id": "ro", + "name": "Romanian", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 7991 + "preTranslate": 10, + "totalCosts": 0 }, "translated": { - "tmMatch": 14, - "default": 7977, - "total": 7991 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 12, - "default": 7414, - "total": 7426 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -19024,47 +6930,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 14, - "default": 7977, - "total": 7991 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15652697, - "username": "ThewsyRum", - "fullName": "ThewsRum (ThewsyRum)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15652697/medium/416cd66d87d185091af51f9aecb60262.jpeg", - "preTranslated": 0, - "totalCosts": 235 - }, - "languages": [ + }, { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator", + "id": "ru", + "name": "Russian", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 235 + "preTranslate": 93, + "totalCosts": 0 }, "translated": { - "tmMatch": 7, - "default": 228, - "total": 235 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 8, - "default": 284, - "total": 292 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -19074,45 +6967,32 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 71 }, "translationCosts": { - "tmMatch": 7, - "default": 228, - "total": 235 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15955919, - "username": "tiana.l", - "fullName": "Tiana L (tiana.l)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955919/medium/c2d92c5e4c9780e2111d4ef7cd7e5f0f.png", - "preTranslated": 0, - "totalCosts": 18 - }, - "languages": [ + }, { "language": { - "id": "af", - "name": "Afrikaans", - "userRole": "Translator", + "id": "sk", + "name": "Slovak", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 9 + "preTranslate": 2, + "totalCosts": 0 }, "translated": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 0, + "total": 0 }, "targetTranslated": { "tmMatch": 0, @@ -19131,8 +7011,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, @@ -19142,22 +7022,22 @@ }, { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Translator", + "id": "sl", + "name": "Slovenian", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 9 + "preTranslate": 9, + "totalCosts": 0 }, "translated": { - "tmMatch": 9, + "tmMatch": 0, "default": 0, - "total": 9 + "total": 0 }, "targetTranslated": { - "tmMatch": 9, + "tmMatch": 0, "default": 0, - "total": 9 + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -19170,47 +7050,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 9, + "tmMatch": 0, "default": 0, - "total": 9 + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15848681, - "username": "Lovety", - "fullName": "Tim (Lovety4) (Lovety)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15848681/medium/9b0875d2b2a1c1259f9a35b2a7a651ee.jpeg", - "preTranslated": 0, - "totalCosts": 102 - }, - "languages": [ + }, { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 102 + "preTranslate": 291, + "totalCosts": 289 }, "translated": { - "tmMatch": 1, - "default": 101, - "total": 102 + "tmMatch": 0, + "default": 289, + "total": 289 }, "targetTranslated": { - "tmMatch": 2, - "default": 127, - "total": 129 + "tmMatch": 0, + "default": 311, + "total": 311 }, "translatedByMt": { "tmMatch": 0, @@ -19220,50 +7087,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 609 }, "translationCosts": { - "tmMatch": 1, - "default": 101, - "total": 102 + "tmMatch": 0, + "default": 289, + "total": 289 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15967289, - "username": "pollocastro", - "fullName": "Tomás Castro (pollocastro)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967289/medium/1753e7e93a66aeb2665fd2ac7d73c6ac.jpeg", - "preTranslated": 0, - "totalCosts": 71 - }, - "languages": [ + }, { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", + "id": "sv-SE", + "name": "Swedish", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 71 + "preTranslate": 1, + "totalCosts": 0 }, "translated": { - "tmMatch": 3, - "default": 68, - "total": 71 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 2, - "default": 90, - "total": 92 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -19276,47 +7130,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 68, - "total": 71 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15954379, - "username": "wqqhou", - "fullName": "Tse Hou (wqqhou)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954379/medium/3ece52775e2d2a29f1f9195332d988d9.jpeg", - "preTranslated": 0, - "totalCosts": 211 - }, - "languages": [ + }, { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", + "id": "tg", + "name": "Tajik", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 211 + "preTranslate": 1, + "totalCosts": 0 }, "translated": { - "tmMatch": 2, - "default": 209, - "total": 211 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 3, - "default": 390, - "total": 393 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -19329,47 +7170,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 209, - "total": 211 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15965347, - "username": "vnnv", - "fullName": "Vanina Ivanova (vnnv)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965347/medium/cf9d2952b5131e4dc1454a2dfdbcfcbf.png", - "preTranslated": 0, - "totalCosts": 1404 - }, - "languages": [ + }, { "language": { - "id": "bg", - "name": "Bulgarian", - "userRole": "Translator", + "id": "th", + "name": "Thai", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 1404 + "preTranslate": 2, + "totalCosts": 0 }, "translated": { - "tmMatch": 9, - "default": 1395, - "total": 1404 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 9, - "default": 1426, - "total": 1435 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -19382,47 +7210,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 9, - "default": 1395, - "total": 1404 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15957415, - "username": "viniblack", - "fullName": "Vini Black (viniblack)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957415/medium/4a20bc04c8d7834f8f7b7e76ad4c7f97.jpeg", - "preTranslated": 0, - "totalCosts": 62 - }, - "languages": [ + }, { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator", + "id": "tr", + "name": "Turkish", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 62 + "preTranslate": 277, + "totalCosts": 226 }, "translated": { - "tmMatch": 0, - "default": 62, - "total": 62 + "tmMatch": 3, + "default": 223, + "total": 226 }, "targetTranslated": { - "tmMatch": 0, - "default": 65, - "total": 65 + "tmMatch": 3, + "default": 202, + "total": 205 }, "translatedByMt": { "tmMatch": 0, @@ -19432,118 +7247,92 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 519 }, "translationCosts": { - "tmMatch": 0, - "default": 62, - "total": 62 + "tmMatch": 3, + "default": 223, + "total": 226 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15955989, - "username": "wendyteo", - "fullName": "WY Teo (wendyteo)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955989/medium/59ea65ec251d30482d55805d45572493.png", - "preTranslated": 0, - "totalCosts": 11639 - }, - "languages": [ + }, { "language": { - "id": "ms", - "name": "Malay", - "userRole": "Translator", + "id": "tk", + "name": "Turkmen", + "userRole": "Owner", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11639 + "totalCosts": 3 }, "translated": { - "tmMatch": 50, - "default": 11589, - "total": 11639 + "tmMatch": 0, + "default": 3, + "total": 3 }, "targetTranslated": { - "tmMatch": 54, - "default": 10944, - "total": 10998 + "tmMatch": 0, + "default": 3, + "total": 3 }, "translatedByMt": { - "tmMatch": 25, - "default": 2, - "total": 27 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 3 }, "translationCosts": { - "tmMatch": 50, - "default": 11589, - "total": 11639 + "tmMatch": 0, + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15967185, - "username": "waseemnaik", - "fullName": "Waseem Naik (waseemnaik)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png", - "preTranslated": 0, - "totalCosts": 37718 - }, - "languages": [ + }, { "language": { - "id": "hi", - "name": "Hindi", - "userRole": "Translator", + "id": "uk", + "name": "Ukrainian", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 16742 + "preTranslate": 36, + "totalCosts": 112 }, "translated": { - "tmMatch": 64, - "default": 16678, - "total": 16742 + "tmMatch": 0, + "default": 112, + "total": 112 }, "targetTranslated": { - "tmMatch": 122, - "default": 30891, - "total": 31013 + "tmMatch": 0, + "default": 111, + "total": 111 }, "translatedByMt": { - "tmMatch": 3, + "tmMatch": 0, "default": 0, - "total": 3 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 123 }, "translationCosts": { - "tmMatch": 64, - "default": 16678, - "total": 16742 + "tmMatch": 0, + "default": 112, + "total": 112 }, "approvalCosts": { "tmMatch": 0, @@ -19553,37 +7342,37 @@ }, { "language": { - "id": "kn", - "name": "Kannada", - "userRole": "Translator", + "id": "vi", + "name": "Vietnamese", + "userRole": "Owner", "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 20976 + "preTranslate": 11, + "totalCosts": 0 }, "translated": { - "tmMatch": 64, - "default": 20912, - "total": 20976 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 120, - "default": 32742, - "total": 32862 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { - "tmMatch": 8, - "default": 4, - "total": 12 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 3 }, "translationCosts": { - "tmMatch": 64, - "default": 20912, - "total": 20976 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, @@ -19595,33 +7384,33 @@ }, { "user": { - "id": 15946101, - "username": "w1lkns", - "fullName": "Wilkins Morales (w1lkns)", + "id": 16016215, + "username": "Falehfale", + "fullName": "Falehfale", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946101/medium/3d2813e6686c380c0a74b58d86b12c3d.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16016215/medium/8b826e643c204fc2e4e2e4f4279d8927.png", "preTranslated": 0, - "totalCosts": 129 + "totalCosts": 232 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 129 + "totalCosts": 232 }, "translated": { - "tmMatch": 0, - "default": 129, - "total": 129 + "tmMatch": 4, + "default": 228, + "total": 232 }, "targetTranslated": { - "tmMatch": 0, - "default": 142, - "total": 142 + "tmMatch": 2, + "default": 206, + "total": 208 }, "translatedByMt": { "tmMatch": 0, @@ -19634,9 +7423,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 129, - "total": 129 + "tmMatch": 4, + "default": 228, + "total": 232 }, "approvalCosts": { "tmMatch": 0, @@ -19648,33 +7437,33 @@ }, { "user": { - "id": 15055487, - "username": "xaviershen1", - "fullName": "Xav (xaviershen1)", + "id": 16022458, + "username": "Falehfaleh", + "fullName": "Falehfaleh", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15055487/medium/10522705934133754c3c30644a91e987.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16022458/medium/73a24aa3d7ceefe45c5a9a346d3ab1fd.png", "preTranslated": 0, - "totalCosts": 1128 + "totalCosts": 39 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1128 + "totalCosts": 39 }, "translated": { "tmMatch": 0, - "default": 1128, - "total": 1128 + "default": 39, + "total": 39 }, "targetTranslated": { "tmMatch": 0, - "default": 1904, - "total": 1904 + "default": 13, + "total": 13 }, "translatedByMt": { "tmMatch": 0, @@ -19688,8 +7477,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 1128, - "total": 1128 + "default": 39, + "total": 39 }, "approvalCosts": { "tmMatch": 0, @@ -19701,33 +7490,33 @@ }, { "user": { - "id": 15954931, - "username": "XofEE", - "fullName": "XofEE", + "id": 16016629, + "username": "farhadhashimov", + "fullName": "Farhad Hashimov (farhadhashimov)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16016629/medium/aaff09e3b204facc4da78652554ec80b.png", "preTranslated": 0, - "totalCosts": 10421 + "totalCosts": 17 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "az", + "name": "Azerbaijani", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10421 + "totalCosts": 4 }, "translated": { - "tmMatch": 384, - "default": 10037, - "total": 10421 + "tmMatch": 0, + "default": 4, + "total": 4 }, "targetTranslated": { - "tmMatch": 406, - "default": 11462, - "total": 11868 + "tmMatch": 0, + "default": 8, + "total": 8 }, "translatedByMt": { "tmMatch": 0, @@ -19740,47 +7529,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 384, - "default": 10037, - "total": 10421 + "tmMatch": 0, + "default": 4, + "total": 4 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15966363, - "username": "yuan0703andy", - "fullName": "Yu An Hou (yuan0703andy)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966363/medium/69c6a8833844012409680c44aeef5493.png", - "preTranslated": 0, - "totalCosts": 103 - }, - "languages": [ + }, { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 103 + "totalCosts": 13 }, "translated": { "tmMatch": 0, - "default": 103, - "total": 103 + "default": 13, + "total": 13 }, "targetTranslated": { "tmMatch": 0, - "default": 173, - "total": 173 + "default": 17, + "total": 17 }, "translatedByMt": { "tmMatch": 0, @@ -19794,8 +7570,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 103, - "total": 103 + "default": 13, + "total": 13 }, "approvalCosts": { "tmMatch": 0, @@ -19807,33 +7583,33 @@ }, { "user": { - "id": 15952291, - "username": "U2FsdGVkX19emY6whu3NhG0aBoZe", - "fullName": "Yuhan Tsai (U2FsdGVkX19emY6whu3NhG0aBoZe)", + "id": 16004581, + "username": "FarshidFardiShekarab", + "fullName": "Farshid F.Shekarab (Farshid) (FarshidFardiShekarab)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952291/medium/2fc63c940f102d64179809e203077e2a.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004581/medium/c6ac10b3f91b7b584a9ae8d10ec69592.jpeg", "preTranslated": 0, - "totalCosts": 195 + "totalCosts": 3 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 195 + "totalCosts": 3 }, "translated": { "tmMatch": 0, - "default": 195, - "total": 195 + "default": 3, + "total": 3 }, "targetTranslated": { "tmMatch": 0, - "default": 311, - "total": 311 + "default": 1, + "total": 1 }, "translatedByMt": { "tmMatch": 0, @@ -19847,8 +7623,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 195, - "total": 195 + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, @@ -19860,38 +7636,38 @@ }, { "user": { - "id": 15967297, - "username": "zharjac", - "fullName": "ZZip | zharjac.eth (zharjac)", + "id": 15843833, + "username": "FoltinV", + "fullName": "FoltinV", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967297/medium/cb76bb0cc8da946e14d974d763213d37.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843833/medium/d9afa5c66a59b8166143dd4e1cca0630.jpeg", "preTranslated": 0, - "totalCosts": 3774 + "totalCosts": 2757 }, "languages": [ { "language": { - "id": "hr", - "name": "Croatian", + "id": "cs", + "name": "Czech", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3774 + "totalCosts": 2757 }, "translated": { - "tmMatch": 80, - "default": 3694, - "total": 3774 + "tmMatch": 6, + "default": 2751, + "total": 2757 }, "targetTranslated": { - "tmMatch": 80, - "default": 3471, - "total": 3551 + "tmMatch": 6, + "default": 2371, + "total": 2377 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 6, "default": 0, - "total": 2 + "total": 6 }, "approved": { "tmMatch": 0, @@ -19899,9 +7675,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 80, - "default": 3694, - "total": 3774 + "tmMatch": 6, + "default": 2751, + "total": 2757 }, "approvalCosts": { "tmMatch": 0, @@ -19913,38 +7689,38 @@ }, { "user": { - "id": 15978305, - "username": "zyh.mgk", - "fullName": "Zayyar Hein (zyh.mgk)", + "id": 15386722, + "username": "Fred-Porlock", + "fullName": "Fred-Porlock", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15978305/medium/d617194599274d597f9599e06be9bb2c.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15386722/medium/d45a14868eeb521fcff121613eaeee3c.png", "preTranslated": 0, - "totalCosts": 17 + "totalCosts": 1376 }, "languages": [ { "language": { - "id": "my", - "name": "Burmese", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 17 + "totalCosts": 1376 }, "translated": { - "tmMatch": 0, - "default": 17, - "total": 17 + "tmMatch": 11, + "default": 1365, + "total": 1376 }, "targetTranslated": { - "tmMatch": 0, - "default": 17, - "total": 17 + "tmMatch": 15, + "default": 2079, + "total": 2094 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 6, + "total": 6 }, "approved": { "tmMatch": 0, @@ -19952,9 +7728,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 17, - "total": 17 + "tmMatch": 11, + "default": 1365, + "total": 1376 }, "approvalCosts": { "tmMatch": 0, @@ -19966,33 +7742,33 @@ }, { "user": { - "id": 15930651, - "username": "0xOZ", - "fullName": "ahmad abuzaid (0xOZ)", + "id": 15994893, + "username": "hackerv27", + "fullName": "Furong You (hackerv27)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15930651/medium/b4738a8e10109842b168d657d53eeaec.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15994893/medium/d9e058521f9617f7e935530fa5999895.jpeg", "preTranslated": 0, - "totalCosts": 1292 + "totalCosts": 53 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1292 + "totalCosts": 53 }, "translated": { - "tmMatch": 65, - "default": 1227, - "total": 1292 + "tmMatch": 0, + "default": 53, + "total": 53 }, "targetTranslated": { - "tmMatch": 61, - "default": 1302, - "total": 1363 + "tmMatch": 0, + "default": 99, + "total": 99 }, "translatedByMt": { "tmMatch": 0, @@ -20005,9 +7781,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 65, - "default": 1227, - "total": 1292 + "tmMatch": 0, + "default": 53, + "total": 53 }, "approvalCosts": { "tmMatch": 0, @@ -20019,48 +7795,48 @@ }, { "user": { - "id": 15938189, - "username": "altinocoelho", - "fullName": "altinocoelho", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15938189/medium/a94b70c2f9891e65834e1864392d4912.png", + "id": 14568334, + "username": "mr_giorgos", + "fullName": "George Kitsoukakis (mr_giorgos)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg", "preTranslated": 0, - "totalCosts": 3730 + "totalCosts": 4478 }, "languages": [ { "language": { - "id": "pt-PT", - "name": "Portuguese", - "userRole": "Translator", + "id": "el", + "name": "Greek", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3730 + "totalCosts": 4478 }, "translated": { - "tmMatch": 56, - "default": 3674, - "total": 3730 + "tmMatch": 86, + "default": 4392, + "total": 4478 }, "targetTranslated": { - "tmMatch": 61, - "default": 3924, - "total": 3985 + "tmMatch": 91, + "default": 4672, + "total": 4763 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 2, + "default": 2, + "total": 4 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 23649 }, "translationCosts": { - "tmMatch": 56, - "default": 3674, - "total": 3730 + "tmMatch": 86, + "default": 4392, + "total": 4478 }, "approvalCosts": { "tmMatch": 0, @@ -20072,33 +7848,33 @@ }, { "user": { - "id": 15938555, - "username": "arian_zr", - "fullName": "arian zr (arian_zr)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15938555/medium/d36a3c8df483569d53ad9806ea410edd_default.png", + "id": 15250968, + "username": "Aco_g_lonegro", + "fullName": "Gustavo Lonegro (Aco_g_lonegro)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15250968/medium/fe66daa0393af122ae758d1cf2b0738d_default.png", "preTranslated": 0, - "totalCosts": 138 + "totalCosts": 42903 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 138 + "totalCosts": 42903 }, "translated": { - "tmMatch": 25, - "default": 113, - "total": 138 + "tmMatch": 3159, + "default": 39744, + "total": 42903 }, "targetTranslated": { - "tmMatch": 29, - "default": 131, - "total": 160 + "tmMatch": 3692, + "default": 48171, + "total": 51863 }, "translatedByMt": { "tmMatch": 0, @@ -20108,12 +7884,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 59714 }, "translationCosts": { - "tmMatch": 25, - "default": 113, - "total": 138 + "tmMatch": 3159, + "default": 39744, + "total": 42903 }, "approvalCosts": { "tmMatch": 0, @@ -20125,38 +7901,38 @@ }, { "user": { - "id": 15966553, - "username": "bamcryptobam1", - "fullName": "bam bino (bamcryptobam1)", + "id": 15993745, + "username": "hello.290462", + "fullName": "Hello Mobile (hello.290462)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966553/medium/7fde8cf7f30af6c46453e25bbf5aa342.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993745/medium/5ef7f4587df1b2641029dc9f6b6326a3.png", "preTranslated": 0, - "totalCosts": 322 + "totalCosts": 22 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "th", + "name": "Thai", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 322 + "totalCosts": 22 }, "translated": { "tmMatch": 0, - "default": 322, - "total": 322 + "default": 22, + "total": 22 }, "targetTranslated": { "tmMatch": 0, - "default": 353, - "total": 353 + "default": 22, + "total": 22 }, "translatedByMt": { "tmMatch": 0, - "default": 6, - "total": 6 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -20165,8 +7941,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 322, - "total": 322 + "default": 22, + "total": 22 }, "approvalCosts": { "tmMatch": 0, @@ -20178,38 +7954,38 @@ }, { "user": { - "id": 15947515, - "username": "blockson", - "fullName": "blockson.eth (blockson)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947515/medium/52b0b3490fcf6940d9027ef2f32a424b.jpeg", + "id": 15208868, + "username": "HiroyukiNaito", + "fullName": "Hiroyuki Naito (HiroyukiNaito)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg", "preTranslated": 0, - "totalCosts": 15138 + "totalCosts": 8475 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", + "id": "ja", + "name": "Japanese", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15125 + "totalCosts": 8475 }, "translated": { - "tmMatch": 228, - "default": 14897, - "total": 15125 + "tmMatch": 193, + "default": 8282, + "total": 8475 }, "targetTranslated": { - "tmMatch": 223, - "default": 13318, - "total": 13541 + "tmMatch": 338, + "default": 23071, + "total": 23409 }, "translatedByMt": { - "tmMatch": 1, - "default": 17, - "total": 18 + "tmMatch": 3, + "default": 4, + "total": 7 }, "approved": { "tmMatch": 0, @@ -20217,34 +7993,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 228, - "default": 14897, - "total": 15125 + "tmMatch": 193, + "default": 8282, + "total": 8475 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 16011121, + "username": "hugodemenez", + "fullName": "Hugo Demenez (hugodemenez)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16011121/medium/8a5f621a2be269a1dcfb5a56e80cdb46.png", + "preTranslated": 0, + "totalCosts": 66 + }, + "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 13 + "totalCosts": 66 }, "translated": { "tmMatch": 0, - "default": 13, - "total": 13 + "default": 66, + "total": 66 }, "targetTranslated": { "tmMatch": 0, - "default": 16, - "total": 16 + "default": 72, + "total": 72 }, "translatedByMt": { "tmMatch": 0, @@ -20258,8 +8047,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 13, - "total": 13 + "default": 66, + "total": 66 }, "approvalCosts": { "tmMatch": 0, @@ -20271,33 +8060,33 @@ }, { "user": { - "id": 15956019, - "username": "cc03668", - "fullName": "cc03668", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956019/medium/2db4e1795f6076358b4fc078852af802.png", + "id": 15084373, + "username": "tarcanhursit", + "fullName": "Hursit Tarcan (tarcanhursit)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg", "preTranslated": 0, - "totalCosts": 1690 + "totalCosts": 787 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", + "id": "nl", + "name": "Dutch", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1690 + "totalCosts": 787 }, "translated": { - "tmMatch": 1, - "default": 1689, - "total": 1690 + "tmMatch": 0, + "default": 787, + "total": 787 }, "targetTranslated": { - "tmMatch": 3, - "default": 2914, - "total": 2917 + "tmMatch": 0, + "default": 798, + "total": 798 }, "translatedByMt": { "tmMatch": 0, @@ -20307,12 +8096,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 6 }, "translationCosts": { - "tmMatch": 1, - "default": 1689, - "total": 1690 + "tmMatch": 0, + "default": 787, + "total": 787 }, "approvalCosts": { "tmMatch": 0, @@ -20324,33 +8113,33 @@ }, { "user": { - "id": 15594493, - "username": "0xceife", - "fullName": "ceife (0xceife)", + "id": 15993695, + "username": "imsohuy", + "fullName": "Huy Nguyen (imsohuy)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15594493/medium/ada4e2f5276b6085495631bb59486bc8.gif", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993695/medium/535448436d72e283ccfe8c100b189c41.jpeg", "preTranslated": 0, - "totalCosts": 5800 + "totalCosts": 32 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5800 + "totalCosts": 32 }, "translated": { - "tmMatch": 97, - "default": 5703, - "total": 5800 + "tmMatch": 0, + "default": 32, + "total": 32 }, "targetTranslated": { - "tmMatch": 95, - "default": 5254, - "total": 5349 + "tmMatch": 0, + "default": 43, + "total": 43 }, "translatedByMt": { "tmMatch": 0, @@ -20363,9 +8152,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 97, - "default": 5703, - "total": 5800 + "tmMatch": 0, + "default": 32, + "total": 32 }, "approvalCosts": { "tmMatch": 0, @@ -20377,33 +8166,33 @@ }, { "user": { - "id": 14298362, - "username": "chtyozi88", - "fullName": "chtyozi88", + "id": 15992039, + "username": "isgoingtozero", + "fullName": "IsGoing ToZero (isgoingtozero)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14298362/medium/faa58e5522ded9b4f4fe7628c5352a59.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992039/medium/c2972e6f45c34e1982fa7a4e7627c85e.jpg", "preTranslated": 0, - "totalCosts": 134 + "totalCosts": 670 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 134 + "totalCosts": 670 }, "translated": { - "tmMatch": 0, - "default": 134, - "total": 134 + "tmMatch": 67, + "default": 603, + "total": 670 }, "targetTranslated": { - "tmMatch": 0, - "default": 264, - "total": 264 + "tmMatch": 71, + "default": 630, + "total": 701 }, "translatedByMt": { "tmMatch": 0, @@ -20416,9 +8205,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 134, - "total": 134 + "tmMatch": 67, + "default": 603, + "total": 670 }, "approvalCosts": { "tmMatch": 0, @@ -20430,38 +8219,38 @@ }, { "user": { - "id": 15724471, - "username": "cryptoraketeros", - "fullName": "cryptocoinpurse.eth (cryptoraketeros)", + "id": 15992965, + "username": "jamall11337", + "fullName": "Jakub Halouzka (jamall11337)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15724471/medium/bfc780664ca8f2f9b582d54230d7f992.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992965/medium/43eadefa0e425bc47e30c0445d64ef7b.jpeg", "preTranslated": 0, - "totalCosts": 2313 + "totalCosts": 40 }, "languages": [ { "language": { - "id": "tl", - "name": "Tagalog", + "id": "cs", + "name": "Czech", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2313 + "totalCosts": 40 }, "translated": { - "tmMatch": 13, - "default": 2300, - "total": 2313 + "tmMatch": 0, + "default": 40, + "total": 40 }, "targetTranslated": { - "tmMatch": 20, - "default": 2851, - "total": 2871 + "tmMatch": 0, + "default": 47, + "total": 47 }, "translatedByMt": { - "tmMatch": 9, - "default": 10, - "total": 19 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -20469,9 +8258,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 13, - "default": 2300, - "total": 2313 + "tmMatch": 0, + "default": 40, + "total": 40 }, "approvalCosts": { "tmMatch": 0, @@ -20483,33 +8272,33 @@ }, { "user": { - "id": 15982313, - "username": "dankshard.lens", - "fullName": "dankshard.lens", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15982313/medium/26374bacaa93ba3f55d0727276bb07a1.png", + "id": 15123193, + "username": "Coram_Deo", + "fullName": "Jonas Neubert (Coram_Deo)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg", "preTranslated": 0, - "totalCosts": 357 + "totalCosts": 1138 }, "languages": [ { "language": { - "id": "hu", - "name": "Hungarian", - "userRole": "Translator", + "id": "de", + "name": "German", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 357 + "totalCosts": 1138 }, "translated": { - "tmMatch": 0, - "default": 357, - "total": 357 + "tmMatch": 28, + "default": 1110, + "total": 1138 }, "targetTranslated": { - "tmMatch": 0, - "default": 349, - "total": 349 + "tmMatch": 30, + "default": 1141, + "total": 1171 }, "translatedByMt": { "tmMatch": 0, @@ -20519,12 +8308,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 631 }, "translationCosts": { - "tmMatch": 0, - "default": 357, - "total": 357 + "tmMatch": 28, + "default": 1110, + "total": 1138 }, "approvalCosts": { "tmMatch": 0, @@ -20536,38 +8325,38 @@ }, { "user": { - "id": 15967861, - "username": "dhilipdina", - "fullName": "dhilip (dhilipdina)", + "id": 16024032, + "username": "doughnut-hole", + "fullName": "KAZUHO Ishida (doughnut-hole)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967861/medium/efd151727e5e29c1d8b9555713b46763_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16024032/medium/46c720939c58ca51610382068096fb3c.png", "preTranslated": 0, - "totalCosts": 1428 + "totalCosts": 34 }, "languages": [ { "language": { - "id": "ta", - "name": "Tamil", + "id": "ja", + "name": "Japanese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1428 + "totalCosts": 34 }, "translated": { - "tmMatch": 30, - "default": 1398, - "total": 1428 + "tmMatch": 0, + "default": 34, + "total": 34 }, "targetTranslated": { - "tmMatch": 62, - "default": 2857, - "total": 2919 + "tmMatch": 0, + "default": 106, + "total": 106 }, "translatedByMt": { - "tmMatch": 4, + "tmMatch": 0, "default": 0, - "total": 4 + "total": 0 }, "approved": { "tmMatch": 0, @@ -20575,9 +8364,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 30, - "default": 1398, - "total": 1428 + "tmMatch": 0, + "default": 34, + "total": 34 }, "approvalCosts": { "tmMatch": 0, @@ -20589,33 +8378,33 @@ }, { "user": { - "id": 15956615, - "username": "dypumping", - "fullName": "emmanuel agbaje (dypumping)", + "id": 13471138, + "username": "KyungwonPark", + "fullName": "Kyungwon Park (KyungwonPark)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956615/medium/3db1c4e858d24b640d4b5521e224e15d.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png", "preTranslated": 0, - "totalCosts": 71 + "totalCosts": 1201 }, "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", + "id": "ko", + "name": "Korean", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 71 + "totalCosts": 1201 }, "translated": { - "tmMatch": 0, - "default": 71, - "total": 71 + "tmMatch": 2, + "default": 1199, + "total": 1201 }, "targetTranslated": { - "tmMatch": 0, - "default": 79, - "total": 79 + "tmMatch": 2, + "default": 880, + "total": 882 }, "translatedByMt": { "tmMatch": 0, @@ -20628,9 +8417,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 71, - "total": 71 + "tmMatch": 2, + "default": 1199, + "total": 1201 }, "approvalCosts": { "tmMatch": 0, @@ -20642,33 +8431,33 @@ }, { "user": { - "id": 15966285, - "username": "rooibos", - "fullName": "emre yaşar (rooibos)", + "id": 16012093, + "username": "Laumvz", + "fullName": "Laura Vazquez (Laumvz)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966285/medium/38d097aa264f975b332f14046d670fb6.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16012093/medium/f6916fbc165d8d25a21c7c5cb794358c_default.png", "preTranslated": 0, - "totalCosts": 1938 + "totalCosts": 46 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1938 + "totalCosts": 46 }, "translated": { - "tmMatch": 13, - "default": 1925, - "total": 1938 + "tmMatch": 0, + "default": 46, + "total": 46 }, "targetTranslated": { - "tmMatch": 18, - "default": 1539, - "total": 1557 + "tmMatch": 0, + "default": 56, + "total": 56 }, "translatedByMt": { "tmMatch": 0, @@ -20681,9 +8470,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 13, - "default": 1925, - "total": 1938 + "tmMatch": 0, + "default": 46, + "total": 46 }, "approvalCosts": { "tmMatch": 0, @@ -20695,33 +8484,33 @@ }, { "user": { - "id": 15942179, - "username": "erfan1366erfan", - "fullName": "erfan (erfan1366erfan)", + "id": 16020648, + "username": "zbr790", + "fullName": "M ZUBAIR RASHEED (zbr790)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15942179/medium/01f700e015f539a1262e058e281a8d9f.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16020648/medium/a0b364ba59a2beef95b163c9f1192916.jpeg", "preTranslated": 0, - "totalCosts": 5628 + "totalCosts": 2 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", + "id": "sr-CS", + "name": "Serbian (Latin)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5628 + "totalCosts": 2 }, "translated": { - "tmMatch": 141, - "default": 5487, - "total": 5628 + "tmMatch": 0, + "default": 2, + "total": 2 }, "targetTranslated": { - "tmMatch": 155, - "default": 6499, - "total": 6654 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -20734,9 +8523,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 141, - "default": 5487, - "total": 5628 + "tmMatch": 0, + "default": 2, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -20748,38 +8537,38 @@ }, { "user": { - "id": 15952403, - "username": "Ezejoe36", - "fullName": "eze jonathan (Ezejoe36)", + "id": 15194310, + "username": "MGETH", + "fullName": "MGETH", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952403/medium/70fcdec4d0f8ee875339e30b96862a26.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg", "preTranslated": 0, - "totalCosts": 12853 + "totalCosts": 617 }, "languages": [ { "language": { - "id": "ig", - "name": "Igbo", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12853 + "totalCosts": 617 }, "translated": { - "tmMatch": 13, - "default": 12840, - "total": 12853 + "tmMatch": 0, + "default": 617, + "total": 617 }, "targetTranslated": { - "tmMatch": 17, - "default": 14699, - "total": 14716 + "tmMatch": 0, + "default": 639, + "total": 639 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, @@ -20787,9 +8576,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 13, - "default": 12840, - "total": 12853 + "tmMatch": 0, + "default": 617, + "total": 617 }, "approvalCosts": { "tmMatch": 0, @@ -20801,38 +8590,38 @@ }, { "user": { - "id": 15863847, - "username": "glennwittig", - "fullName": "glenn wittig (glennwittig)", + "id": 15947697, + "username": "mahdigachloo33", + "fullName": "Mahdi Gachloo (mahdigachloo33)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15863847/medium/e2e22b709a8c13614fcc2d0c2a1b78a9.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947697/medium/6d060369501296118d0d9155a941096a.jpeg", "preTranslated": 0, - "totalCosts": 321 + "totalCosts": 437 }, "languages": [ { "language": { - "id": "da", - "name": "Danish", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 321 + "totalCosts": 437 }, "translated": { - "tmMatch": 22, - "default": 299, - "total": 321 + "tmMatch": 0, + "default": 437, + "total": 437 }, "targetTranslated": { - "tmMatch": 25, - "default": 315, - "total": 340 + "tmMatch": 0, + "default": 532, + "total": 532 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "approved": { "tmMatch": 0, @@ -20840,9 +8629,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 22, - "default": 299, - "total": 321 + "tmMatch": 0, + "default": 437, + "total": 437 }, "approvalCosts": { "tmMatch": 0, @@ -20854,33 +8643,33 @@ }, { "user": { - "id": 15916327, - "username": "avalidurl", - "fullName": "gokhan (avalidurl)", + "id": 16008309, + "username": "mariaskv", + "fullName": "Maria Skevofylaka (mariaskv)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15916327/medium/89e2154a494b74da402f3b5c4ad73240.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16008309/medium/4b2446224e807441d2d2de8f62d5fac5.jpeg", "preTranslated": 0, - "totalCosts": 18 + "totalCosts": 1060 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "el", + "name": "Greek", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 18 + "totalCosts": 1060 }, "translated": { "tmMatch": 0, - "default": 18, - "total": 18 + "default": 1060, + "total": 1060 }, "targetTranslated": { "tmMatch": 0, - "default": 16, - "total": 16 + "default": 1185, + "total": 1185 }, "translatedByMt": { "tmMatch": 0, @@ -20894,8 +8683,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 18, - "total": 18 + "default": 1060, + "total": 1060 }, "approvalCosts": { "tmMatch": 0, @@ -20907,38 +8696,38 @@ }, { "user": { - "id": 15880343, - "username": "hangleang", - "fullName": "hang leang (hangleang)", + "id": 15997485, + "username": "akifsefer9", + "fullName": "Mehmet Sahin (akifsefer9)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15880343/medium/4b6df183916557610b51230915a5f9eb_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15997485/medium/0039628a06c8949d7815b4d6176486ec.png", "preTranslated": 0, - "totalCosts": 5545 + "totalCosts": 26 }, "languages": [ { "language": { - "id": "km", - "name": "Khmer", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5545 + "totalCosts": 26 }, "translated": { - "tmMatch": 52, - "default": 5493, - "total": 5545 + "tmMatch": 0, + "default": 26, + "total": 26 }, "targetTranslated": { - "tmMatch": 66, - "default": 6613, - "total": 6679 + "tmMatch": 0, + "default": 24, + "total": 24 }, "translatedByMt": { - "tmMatch": 7, + "tmMatch": 0, "default": 0, - "total": 7 + "total": 0 }, "approved": { "tmMatch": 0, @@ -20946,9 +8735,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 52, - "default": 5493, - "total": 5545 + "tmMatch": 0, + "default": 26, + "total": 26 }, "approvalCosts": { "tmMatch": 0, @@ -20960,33 +8749,33 @@ }, { "user": { - "id": 13959389, - "username": "inlak16", - "fullName": "inlak16", + "id": 15775655, + "username": "missionsaturn", + "fullName": "MissionSaturn (missionsaturn)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959389/medium/8163669279ee4bd20f4b7db97f6000fa.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15775655/medium/af33e509515bd2c20fa54ddbffa2e8b5.jpg", "preTranslated": 0, - "totalCosts": 1974 + "totalCosts": 6 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "th", + "name": "Thai", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1974 + "totalCosts": 6 }, "translated": { "tmMatch": 0, - "default": 1974, - "total": 1974 + "default": 6, + "total": 6 }, "targetTranslated": { "tmMatch": 0, - "default": 1844, - "total": 1844 + "default": 3, + "total": 3 }, "translatedByMt": { "tmMatch": 0, @@ -21000,8 +8789,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 1974, - "total": 1974 + "default": 6, + "total": 6 }, "approvalCosts": { "tmMatch": 0, @@ -21013,38 +8802,38 @@ }, { "user": { - "id": 15750423, - "username": "less_explorer", - "fullName": "less_explorer", + "id": 16001243, + "username": "0xArkonomi", + "fullName": "Mohammad Mahdi Keshavarz (0xArkonomi)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15750423/medium/44085a2751d1f337f4e4aee5459b2ccf.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16001243/medium/b75b58e1e84d60e633167eb068b1253e.jpg", "preTranslated": 0, - "totalCosts": 1253 + "totalCosts": 896 }, "languages": [ { "language": { - "id": "nl", - "name": "Dutch", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1253 + "totalCosts": 896 }, "translated": { - "tmMatch": 2, - "default": 1251, - "total": 1253 + "tmMatch": 116, + "default": 780, + "total": 896 }, "targetTranslated": { - "tmMatch": 2, - "default": 1369, - "total": 1371 + "tmMatch": 144, + "default": 985, + "total": 1129 }, "translatedByMt": { - "tmMatch": 1, - "default": 178, - "total": 179 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -21052,9 +8841,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 1251, - "total": 1253 + "tmMatch": 116, + "default": 780, + "total": 896 }, "approvalCosts": { "tmMatch": 0, @@ -21066,38 +8855,38 @@ }, { "user": { - "id": 15967847, - "username": "luniacllama", - "fullName": "luniacllama", + "id": 15967513, + "username": "Odinkrm", + "fullName": "Odin (Odinkrm)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967847/medium/76cc99da9c9731bac54edf64508ac14f.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967513/medium/b50f5902d42c3ec14ca4575e9b1dc504.jpeg", "preTranslated": 0, - "totalCosts": 31000 + "totalCosts": 1 }, "languages": [ { "language": { - "id": "kn", - "name": "Kannada", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 22876 + "totalCosts": 1 }, "translated": { - "tmMatch": 44, - "default": 22832, - "total": 22876 + "tmMatch": 1, + "default": 0, + "total": 1 }, "targetTranslated": { - "tmMatch": 81, - "default": 35470, - "total": 35551 + "tmMatch": 1, + "default": 0, + "total": 1 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 1, "default": 0, - "total": 2 + "total": 1 }, "approved": { "tmMatch": 0, @@ -21105,34 +8894,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 44, - "default": 22832, - "total": 22876 + "tmMatch": 1, + "default": 0, + "total": 1 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15914449, + "username": "CoinHoodie", + "fullName": "Olivier Cappaert aka (CoinHoodie)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914449/medium/8d2590e4c534ca5125f1d70b6d9c71cc.jpeg", + "preTranslated": 0, + "totalCosts": 44 + }, + "languages": [ { "language": { - "id": "te", - "name": "Telugu", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8124 + "totalCosts": 44 }, "translated": { - "tmMatch": 14, - "default": 8110, - "total": 8124 + "tmMatch": 0, + "default": 44, + "total": 44 }, "targetTranslated": { - "tmMatch": 23, - "default": 10414, - "total": 10437 + "tmMatch": 0, + "default": 45, + "total": 45 }, "translatedByMt": { "tmMatch": 0, @@ -21145,9 +8947,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 14, - "default": 8110, - "total": 8124 + "tmMatch": 0, + "default": 44, + "total": 44 }, "approvalCosts": { "tmMatch": 0, @@ -21159,38 +8961,38 @@ }, { "user": { - "id": 14361208, - "username": "Miromiro", - "fullName": "m a (Miromiro)", + "id": 14787370, + "username": "agulani", + "fullName": "Orkhan Rustamzade (agulani)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14361208/medium/6789521213374536d69ab0f27883e0d8.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787370/medium/9bb8a2d0d244e04f14b523e895b08100.jpg", "preTranslated": 0, - "totalCosts": 1097 + "totalCosts": 3043 }, "languages": [ { "language": { - "id": "ka", - "name": "Georgian", + "id": "az", + "name": "Azerbaijani", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1097 + "totalCosts": 3043 }, "translated": { - "tmMatch": 23, - "default": 1074, - "total": 1097 + "tmMatch": 9, + "default": 3034, + "total": 3043 }, "targetTranslated": { - "tmMatch": 20, - "default": 811, - "total": 831 + "tmMatch": 9, + "default": 2657, + "total": 2666 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 1, + "default": 2, + "total": 3 }, "approved": { "tmMatch": 0, @@ -21198,9 +9000,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 23, - "default": 1074, - "total": 1097 + "tmMatch": 9, + "default": 3034, + "total": 3043 }, "approvalCosts": { "tmMatch": 0, @@ -21212,38 +9014,38 @@ }, { "user": { - "id": 15949345, - "username": "mehdibouzit", - "fullName": "mehdibouzit", + "id": 14899686, + "username": "preetishpriyadarshi", + "fullName": "Preetish Priyadarshi Samal (preetishpriyadarshi)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949345/medium/2eb9da6ad8eb6399c9aff2b21957916d.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14899686/medium/5e46a234abebd1891fff6e8fd6af856b_default.png", "preTranslated": 0, - "totalCosts": 1066 + "totalCosts": 42 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "or", + "name": "Odia", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1066 + "totalCosts": 42 }, "translated": { - "tmMatch": 0, - "default": 1066, - "total": 1066 + "tmMatch": 6, + "default": 36, + "total": 42 }, "targetTranslated": { - "tmMatch": 0, - "default": 1206, - "total": 1206 + "tmMatch": 12, + "default": 57, + "total": 69 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 2, + "default": 2, + "total": 4 }, "approved": { "tmMatch": 0, @@ -21251,9 +9053,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 1066, - "total": 1066 + "tmMatch": 6, + "default": 36, + "total": 42 }, "approvalCosts": { "tmMatch": 0, @@ -21265,33 +9067,33 @@ }, { "user": { - "id": 15685239, - "username": "petitmewen", - "fullName": "mobby45 (petitmewen)", + "id": 15954333, + "username": "queenie0815", + "fullName": "Queenie Chang (queenie0815)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954333/medium/589465a479a53254001094f2a4322a0f.png", "preTranslated": 0, - "totalCosts": 4 + "totalCosts": 604 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4 + "totalCosts": 604 }, "translated": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 604, + "total": 604 }, "targetTranslated": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 994, + "total": 994 }, "translatedByMt": { "tmMatch": 0, @@ -21305,8 +9107,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 604, + "total": 604 }, "approvalCosts": { "tmMatch": 0, @@ -21318,33 +9120,33 @@ }, { "user": { - "id": 15974199, - "username": "nanlay", - "fullName": "nanlay Komo (nanlay)", + "id": 15417292, + "username": "Krynlix", + "fullName": "Rall Ball (Krynlix)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15974199/medium/94da9eeeb1c5e28fbf9ed1ab8d45567b.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15417292/medium/8ffb6e3dcf9f571cdce495e92d212419.png", "preTranslated": 0, - "totalCosts": 10 + "totalCosts": 34 }, "languages": [ { "language": { - "id": "my", - "name": "Burmese", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10 + "totalCosts": 34 }, "translated": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 34, + "total": 34 }, "targetTranslated": { "tmMatch": 0, - "default": 7, - "total": 7 + "default": 37, + "total": 37 }, "translatedByMt": { "tmMatch": 0, @@ -21358,8 +9160,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 34, + "total": 34 }, "approvalCosts": { "tmMatch": 0, @@ -21371,13 +9173,13 @@ }, { "user": { - "id": 15967187, - "username": "MSN.Nazi", - "fullName": "nazi mehdizadeh (MSN.Nazi)", + "id": 15566383, + "username": "raminvalizadeh29", + "fullName": "Ramin Valizadeh (raminvalizadeh29)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967187/medium/d8b24821c82f6b59e0a57b15f1671749.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15566383/medium/adf7b433679fa9f895b77e19223a2e70.jpeg", "preTranslated": 0, - "totalCosts": 655 + "totalCosts": 28 }, "languages": [ { @@ -21387,17 +9189,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 655 + "totalCosts": 28 }, "translated": { "tmMatch": 0, - "default": 655, - "total": 655 + "default": 28, + "total": 28 }, "targetTranslated": { "tmMatch": 0, - "default": 798, - "total": 798 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -21411,8 +9213,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 655, - "total": 655 + "default": 28, + "total": 28 }, "approvalCosts": { "tmMatch": 0, @@ -21424,38 +9226,38 @@ }, { "user": { - "id": 15966961, - "username": "nurkardelens", - "fullName": "nur (nurkardelens)", + "id": 16030084, + "username": "0xRohit", + "fullName": "Rohit Kumar Anant (0xRohit)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966961/medium/3ea2ecfa398148225a22a0795ab84a16.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16030084/medium/8abbdf3741acd8d588b7104333269efe.jpg", "preTranslated": 0, - "totalCosts": 1989 + "totalCosts": 62 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "hi", + "name": "Hindi", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1989 + "totalCosts": 62 }, "translated": { - "tmMatch": 8, - "default": 1981, - "total": 1989 + "tmMatch": 2, + "default": 60, + "total": 62 }, "targetTranslated": { - "tmMatch": 7, - "default": 1624, - "total": 1631 + "tmMatch": 4, + "default": 102, + "total": 106 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -21463,9 +9265,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 8, - "default": 1981, - "total": 1989 + "tmMatch": 2, + "default": 60, + "total": 62 }, "approvalCosts": { "tmMatch": 0, @@ -21477,33 +9279,33 @@ }, { "user": { - "id": 15966191, - "username": "0xokan", - "fullName": "okanaslan.eth 🪶 (0xokan)", + "id": 15885247, + "username": "ct1aic.eth", + "fullName": "Rui Costa (ct1aic.eth)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966191/medium/a5d1d36d7404974d591cbcf59f089df9.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15885247/medium/cf22113f9226047f8f9868e4774bc4c3.png", "preTranslated": 0, - "totalCosts": 5044 + "totalCosts": 447 }, "languages": [ { "language": { - "id": "az", - "name": "Azerbaijani", + "id": "pt-PT", + "name": "Portuguese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2083 + "totalCosts": 447 }, "translated": { "tmMatch": 0, - "default": 2083, - "total": 2083 + "default": 447, + "total": 447 }, "targetTranslated": { "tmMatch": 0, - "default": 1803, - "total": 1803 + "default": 466, + "total": 466 }, "translatedByMt": { "tmMatch": 0, @@ -21517,38 +9319,51 @@ }, "translationCosts": { "tmMatch": 0, - "default": 2083, - "total": 2083 + "default": 447, + "total": 447 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15328532, + "username": "Seung_Gi_Kim", + "fullName": "Seung-Gi Kim (Seung_Gi_Kim)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15328532/medium/78e4ff5d50b928c2aea8ff50b2ff1c39.jpg", + "preTranslated": 0, + "totalCosts": 301 + }, + "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "ko", + "name": "Korean", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2961 + "totalCosts": 301 }, "translated": { - "tmMatch": 9, - "default": 2952, - "total": 2961 + "tmMatch": 0, + "default": 301, + "total": 301 }, "targetTranslated": { - "tmMatch": 9, - "default": 2478, - "total": 2487 + "tmMatch": 0, + "default": 246, + "total": 246 }, "translatedByMt": { - "tmMatch": 5, + "tmMatch": 0, "default": 0, - "total": 5 + "total": 0 }, "approved": { "tmMatch": 0, @@ -21556,9 +9371,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 9, - "default": 2952, - "total": 2961 + "tmMatch": 0, + "default": 301, + "total": 301 }, "approvalCosts": { "tmMatch": 0, @@ -21570,38 +9385,38 @@ }, { "user": { - "id": 14823260, - "username": "omahs", - "fullName": "omahs", + "id": 16007311, + "username": "Swiftevo", + "fullName": "Shift (Swiftevo)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16007311/medium/47584f21b0a63d55da89c106d20825e9.png", "preTranslated": 0, - "totalCosts": 19394 + "totalCosts": 95 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 19394 + "totalCosts": 95 }, "translated": { - "tmMatch": 75, - "default": 19319, - "total": 19394 + "tmMatch": 26, + "default": 69, + "total": 95 }, "targetTranslated": { - "tmMatch": 89, - "default": 22477, - "total": 22566 + "tmMatch": 47, + "default": 161, + "total": 208 }, "translatedByMt": { - "tmMatch": 12, - "default": 15, - "total": 27 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -21609,9 +9424,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 75, - "default": 19319, - "total": 19394 + "tmMatch": 26, + "default": 69, + "total": 95 }, "approvalCosts": { "tmMatch": 0, @@ -21623,33 +9438,33 @@ }, { "user": { - "id": 15957025, - "username": "otmane.malih", - "fullName": "otmane malih (otmane.malih)", + "id": 16023432, + "username": "SyafaHadyan", + "fullName": "Syafa Hadyan Rasendriya (SyafaHadyan)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957025/medium/3d560c0a57024088a7aabfd4ef565fdc.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16023432/medium/c69ac661dc63b793577afb96f6b8986d.jpg", "preTranslated": 0, - "totalCosts": 11 + "totalCosts": 14 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11 + "totalCosts": 14 }, "translated": { "tmMatch": 0, - "default": 11, - "total": 11 + "default": 14, + "total": 14 }, "targetTranslated": { "tmMatch": 0, - "default": 8, - "total": 8 + "default": 12, + "total": 12 }, "translatedByMt": { "tmMatch": 0, @@ -21663,8 +9478,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 11, - "total": 11 + "default": 14, + "total": 14 }, "approvalCosts": { "tmMatch": 0, @@ -21676,33 +9491,33 @@ }, { "user": { - "id": 15978259, - "username": "poponiat", - "fullName": "poponiat", + "id": 16004379, + "username": "tropicaldog17", + "fullName": "Tropical Dog (tropicaldog17)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15978259/medium/bf2ca2be15b9cb341e6e6f8f94b0e9f8.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004379/medium/012ac515fe09fb0e6b08e4d06d299460.jpeg", "preTranslated": 0, - "totalCosts": 132 + "totalCosts": 17 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 132 + "totalCosts": 17 }, "translated": { "tmMatch": 0, - "default": 132, - "total": 132 + "default": 17, + "total": 17 }, "targetTranslated": { "tmMatch": 0, - "default": 140, - "total": 140 + "default": 29, + "total": 29 }, "translatedByMt": { "tmMatch": 0, @@ -21716,8 +9531,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 132, - "total": 132 + "default": 17, + "total": 17 }, "approvalCosts": { "tmMatch": 0, @@ -21729,33 +9544,33 @@ }, { "user": { - "id": 15951683, - "username": "raminkabirian", - "fullName": "ramin kabirian (raminkabirian)", + "id": 16010703, + "username": "vero_vero03", + "fullName": "Veronica campos (vero_vero03)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15951683/medium/18dec6f958da7d7e54762475931025c1.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16010703/medium/97c299201d2fe2be8c7fef377883e484_default.png", "preTranslated": 0, - "totalCosts": 26 + "totalCosts": 117 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 26 + "totalCosts": 117 }, "translated": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 46, + "default": 71, + "total": 117 }, "targetTranslated": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 53, + "default": 107, + "total": 160 }, "translatedByMt": { "tmMatch": 0, @@ -21768,9 +9583,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 46, + "default": 71, + "total": 117 }, "approvalCosts": { "tmMatch": 0, @@ -21782,38 +9597,38 @@ }, { "user": { - "id": 14920051, - "username": "regislanderge", - "fullName": "regislanderge", + "id": 15955989, + "username": "wendyteo", + "fullName": "WY Teo (wendyteo)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14920051/medium/9ba58eec03e143bcd1acbe5b2ecf8250.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955989/medium/59ea65ec251d30482d55805d45572493.png", "preTranslated": 0, - "totalCosts": 6796 + "totalCosts": 9836 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "ms", + "name": "Malay", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 6796 + "totalCosts": 9836 }, "translated": { - "tmMatch": 7, - "default": 6789, - "total": 6796 + "tmMatch": 23, + "default": 9813, + "total": 9836 }, "targetTranslated": { - "tmMatch": 8, - "default": 6203, - "total": 6211 + "tmMatch": 25, + "default": 8925, + "total": 8950 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 8, + "default": 1, + "total": 9 }, "approved": { "tmMatch": 0, @@ -21821,9 +9636,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 6789, - "total": 6796 + "tmMatch": 23, + "default": 9813, + "total": 9836 }, "approvalCosts": { "tmMatch": 0, @@ -21835,33 +9650,33 @@ }, { "user": { - "id": 15955147, - "username": "shun.eth", - "fullName": "shun.eth", + "id": 15906651, + "username": "ying.ying09", + "fullName": "Ying Ying Tan (ying.ying09)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955147/medium/9290171405f2de1979270e1f309c57f7_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15906651/medium/7fbb552cabdbfcd79477e56fc90a2670.png", "preTranslated": 0, - "totalCosts": 80 + "totalCosts": 234 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 80 + "totalCosts": 234 }, "translated": { - "tmMatch": 0, - "default": 80, - "total": 80 + "tmMatch": 4, + "default": 230, + "total": 234 }, "targetTranslated": { - "tmMatch": 0, - "default": 167, - "total": 167 + "tmMatch": 9, + "default": 414, + "total": 423 }, "translatedByMt": { "tmMatch": 0, @@ -21874,9 +9689,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 80, - "total": 80 + "tmMatch": 4, + "default": 230, + "total": 234 }, "approvalCosts": { "tmMatch": 0, @@ -21888,38 +9703,38 @@ }, { "user": { - "id": 15967119, - "username": "timtey", - "fullName": "timtey", + "id": 16000639, + "username": "Ragu07", + "fullName": "Zack (Ragu07)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16000639/medium/b4959fa30a752fec53b2daea132390c0_default.png", "preTranslated": 0, - "totalCosts": 13817 + "totalCosts": 2775 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", + "id": "ta", + "name": "Tamil", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 13817 + "totalCosts": 2775 }, "translated": { - "tmMatch": 487, - "default": 13330, - "total": 13817 + "tmMatch": 42, + "default": 2733, + "total": 2775 }, "targetTranslated": { - "tmMatch": 562, - "default": 16019, - "total": 16581 + "tmMatch": 85, + "default": 5169, + "total": 5254 }, "translatedByMt": { - "tmMatch": 38, - "default": 8, - "total": 46 + "tmMatch": 5, + "default": 0, + "total": 5 }, "approved": { "tmMatch": 0, @@ -21927,9 +9742,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 487, - "default": 13330, - "total": 13817 + "tmMatch": 42, + "default": 2733, + "total": 2775 }, "approvalCosts": { "tmMatch": 0, @@ -21941,33 +9756,33 @@ }, { "user": { - "id": 14392078, - "username": "205x.tech", - "fullName": "tuo lao (205x.tech)", + "id": 16020224, + "username": "zulbasridaud220", + "fullName": "Zulbasri Mohd daud (zulbasridaud220)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14392078/medium/65dff61bdce5bba27d89e7957fd8e8dc.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16020224/medium/a2da894b1174d46676300df338864de6.jpeg", "preTranslated": 0, - "totalCosts": 180 + "totalCosts": 41 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "ms", + "name": "Malay", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 180 + "totalCosts": 41 }, "translated": { "tmMatch": 0, - "default": 180, - "total": 180 + "default": 41, + "total": 41 }, "targetTranslated": { "tmMatch": 0, - "default": 307, - "total": 307 + "default": 48, + "total": 48 }, "translatedByMt": { "tmMatch": 0, @@ -21981,8 +9796,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 180, - "total": 180 + "default": 41, + "total": 41 }, "approvalCosts": { "tmMatch": 0, @@ -21994,33 +9809,33 @@ }, { "user": { - "id": 15894449, - "username": "wosek_", - "fullName": "wosek_", + "id": 16014683, + "username": "pierredogui", + "fullName": "djereke pierre dogui (pierredogui)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16014683/medium/8dc8d59a7a6e2830c84d1a23f5d1814f.jpeg", "preTranslated": 0, - "totalCosts": 55034 + "totalCosts": 14 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1 + "totalCosts": 14 }, "translated": { "tmMatch": 0, - "default": 1, - "total": 1 + "default": 14, + "total": 14 }, "targetTranslated": { "tmMatch": 0, - "default": 1, - "total": 1 + "default": 14, + "total": 14 }, "translatedByMt": { "tmMatch": 0, @@ -22034,38 +9849,51 @@ }, "translationCosts": { "tmMatch": 0, - "default": 1, - "total": 1 + "default": 14, + "total": 14 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15880343, + "username": "hangleang", + "fullName": "hang leang (hangleang)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15880343/medium/4b6df183916557610b51230915a5f9eb_default.png", + "preTranslated": 0, + "totalCosts": 1180 + }, + "languages": [ { "language": { - "id": "pl", - "name": "Polish", + "id": "km", + "name": "Khmer", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 55033 + "totalCosts": 1180 }, "translated": { - "tmMatch": 2670, - "default": 52363, - "total": 55033 + "tmMatch": 0, + "default": 1180, + "total": 1180 }, "targetTranslated": { - "tmMatch": 2476, - "default": 48368, - "total": 50844 + "tmMatch": 0, + "default": 1431, + "total": 1431 }, "translatedByMt": { - "tmMatch": 2, - "default": 2, - "total": 4 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -22073,9 +9901,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2670, - "default": 52363, - "total": 55033 + "tmMatch": 0, + "default": 1180, + "total": 1180 }, "approvalCosts": { "tmMatch": 0, @@ -22087,38 +9915,38 @@ }, { "user": { - "id": 15399006, - "username": "Xeift", - "fullName": "xeift.eth (Xeift)", + "id": 13324494, + "username": "hdmed", + "fullName": "hdmed.dev (hdmed)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13324494/medium/e15dc911ade7cf545aeb847438d6742c.jpeg", "preTranslated": 0, - "totalCosts": 33846 + "totalCosts": 71 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 33846 + "totalCosts": 71 }, "translated": { - "tmMatch": 318, - "default": 33528, - "total": 33846 + "tmMatch": 0, + "default": 71, + "total": 71 }, "targetTranslated": { - "tmMatch": 559, - "default": 55956, - "total": 56515 + "tmMatch": 0, + "default": 81, + "total": 81 }, "translatedByMt": { - "tmMatch": 21, - "default": 8, - "total": 29 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -22126,9 +9954,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 318, - "default": 33528, - "total": 33846 + "tmMatch": 0, + "default": 71, + "total": 71 }, "approvalCosts": { "tmMatch": 0, @@ -22140,33 +9968,33 @@ }, { "user": { - "id": 15636829, - "username": "bdwms", - "fullName": "xiaoyao li (bdwms)", + "id": 14365554, + "username": "hydai", + "fullName": "hydai", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15636829/medium/434d40bf423f53879e795cc158b1b892.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14365554/medium/0eaad18aa54e9f87636e0bf3f5d20dc3.jpeg", "preTranslated": 0, - "totalCosts": 1478 + "totalCosts": 70 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1478 + "totalCosts": 70 }, "translated": { - "tmMatch": 3, - "default": 1475, - "total": 1478 + "tmMatch": 0, + "default": 70, + "total": 70 }, "targetTranslated": { - "tmMatch": 4, - "default": 2255, - "total": 2259 + "tmMatch": 0, + "default": 115, + "total": 115 }, "translatedByMt": { "tmMatch": 0, @@ -22179,9 +10007,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 1475, - "total": 1478 + "tmMatch": 0, + "default": 70, + "total": 70 }, "approvalCosts": { "tmMatch": 0, @@ -22193,33 +10021,33 @@ }, { "user": { - "id": 15967667, - "username": "iremkoci", - "fullName": "İrem KOÇİ (iremkoci)", + "id": 16031264, + "username": "ihabhamed", + "fullName": "ihabhamed", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967667/medium/ac3a3d86bf757e56162d0faa7a03058d_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16031264/medium/b1b2ecbce08c22555b6089b25ef0482f.jpeg", "preTranslated": 0, - "totalCosts": 1274 + "totalCosts": 64 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1274 + "totalCosts": 64 }, "translated": { "tmMatch": 0, - "default": 1274, - "total": 1274 + "default": 64, + "total": 64 }, "targetTranslated": { "tmMatch": 0, - "default": 1016, - "total": 1016 + "default": 54, + "total": 54 }, "translatedByMt": { "tmMatch": 0, @@ -22233,8 +10061,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 1274, - "total": 1274 + "default": 64, + "total": 64 }, "approvalCosts": { "tmMatch": 0, @@ -22246,33 +10074,33 @@ }, { "user": { - "id": 15966263, - "username": "palasevketp", - "fullName": "Şevket P. (palasevketp)", + "id": 16004409, + "username": "crackpotjackpotdiscord", + "fullName": "jackpot (crackpotjackpotdiscord)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966263/medium/0c89857b9ad32ba2256c620214a592a0.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004409/medium/a6091a149da0ed8d0301cc4d33c8d616.png", "preTranslated": 0, - "totalCosts": 32 + "totalCosts": 405 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 32 + "totalCosts": 405 }, "translated": { "tmMatch": 1, - "default": 31, - "total": 32 + "default": 404, + "total": 405 }, "targetTranslated": { "tmMatch": 1, - "default": 29, - "total": 30 + "default": 627, + "total": 628 }, "translatedByMt": { "tmMatch": 0, @@ -22286,8 +10114,8 @@ }, "translationCosts": { "tmMatch": 1, - "default": 31, - "total": 32 + "default": 404, + "total": 405 }, "approvalCosts": { "tmMatch": 0, @@ -22299,38 +10127,38 @@ }, { "user": { - "id": 15951797, - "username": "redfoxlus90", - "fullName": "Андрей Лысенко (redfoxlus90)", + "id": 15894449, + "username": "wosek_", + "fullName": "wosek_", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15951797/medium/c1ecae5805ed96cd0349ec12654da1ce.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg", "preTranslated": 0, - "totalCosts": 12 + "totalCosts": 10629 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12 + "totalCosts": 10629 }, "translated": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 1897, + "default": 8732, + "total": 10629 }, "targetTranslated": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 1737, + "default": 7993, + "total": 9730 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 1, "default": 0, - "total": 0 + "total": 1 }, "approved": { "tmMatch": 0, @@ -22338,9 +10166,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 1897, + "default": 8732, + "total": 10629 }, "approvalCosts": { "tmMatch": 0, @@ -22352,33 +10180,33 @@ }, { "user": { - "id": 15824955, - "username": "dmytro.zalatukhin", - "fullName": "Дмитро Сергійович Залатухін (dmytro.zalatukhin)", + "id": 15399006, + "username": "Xeift", + "fullName": "xeift.eth (Xeift)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824955/medium/517b6400bc31546d1889eb56a4d5f6ee.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png", "preTranslated": 0, - "totalCosts": 1490 + "totalCosts": 1653 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1490 + "totalCosts": 1653 }, "translated": { - "tmMatch": 0, - "default": 1490, - "total": 1490 + "tmMatch": 9, + "default": 1644, + "total": 1653 }, "targetTranslated": { - "tmMatch": 0, - "default": 1435, - "total": 1435 + "tmMatch": 16, + "default": 2944, + "total": 2960 }, "translatedByMt": { "tmMatch": 0, @@ -22391,9 +10219,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 1490, - "total": 1490 + "tmMatch": 9, + "default": 1644, + "total": 1653 }, "approvalCosts": { "tmMatch": 0, @@ -22405,33 +10233,33 @@ }, { "user": { - "id": 15199956, - "username": "zhooookova", - "fullName": "Надежда Жукова (zhooookova)", + "id": 15636829, + "username": "bdwms", + "fullName": "xiaoyao li (bdwms)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15199956/medium/74aea56a748b12af52448b2ecf7ca2ac.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15636829/medium/434d40bf423f53879e795cc158b1b892.jpeg", "preTranslated": 0, - "totalCosts": 24 + "totalCosts": 15 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 24 + "totalCosts": 15 }, "translated": { - "tmMatch": 0, - "default": 24, - "total": 24 + "tmMatch": 15, + "default": 0, + "total": 15 }, "targetTranslated": { - "tmMatch": 0, - "default": 21, - "total": 21 + "tmMatch": 30, + "default": 0, + "total": 30 }, "translatedByMt": { "tmMatch": 0, @@ -22444,9 +10272,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 24, - "total": 24 + "tmMatch": 15, + "default": 0, + "total": 15 }, "approvalCosts": { "tmMatch": 0, @@ -22458,38 +10286,38 @@ }, { "user": { - "id": 13587927, - "username": "colorage503", - "fullName": "Сергей Пехтерев (colorage503)", + "id": 15994825, + "username": "gettingmoresalo", + "fullName": "Андрей Барканов (gettingmoresalo)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13587927/medium/e9d581f3aee00e482ae4f8bb0164004d.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15994825/medium/ce32b5b33da7aa5d67803aa9fa312023.jpeg", "preTranslated": 0, - "totalCosts": 66 + "totalCosts": 14 }, "languages": [ { "language": { - "id": "be", - "name": "Belarusian", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 66 + "totalCosts": 14 }, "translated": { - "tmMatch": 10, - "default": 56, - "total": 66 + "tmMatch": 0, + "default": 14, + "total": 14 }, "targetTranslated": { - "tmMatch": 9, - "default": 43, - "total": 52 + "tmMatch": 0, + "default": 16, + "total": 16 }, "translatedByMt": { - "tmMatch": 9, - "default": 2, - "total": 11 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -22497,9 +10325,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 10, - "default": 56, - "total": 66 + "tmMatch": 0, + "default": 14, + "total": 14 }, "approvalCosts": { "tmMatch": 0, @@ -22511,33 +10339,33 @@ }, { "user": { - "id": 15799003, - "username": "amir1988766", - "fullName": "عامر اليماني (amir1988766)", + "id": 15994051, + "username": "csgo7777gg", + "fullName": "Артем Ксго (csgo7777gg)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15799003/medium/77f5b1aa31d46fbf05f38a9d8c6dab9e.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15994051/medium/5ffbfdb7c384b441588b3f63ed171d90.png", "preTranslated": 0, - "totalCosts": 24 + "totalCosts": 7 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 24 + "totalCosts": 7 }, "translated": { "tmMatch": 0, - "default": 24, - "total": 24 + "default": 7, + "total": 7 }, "targetTranslated": { "tmMatch": 0, - "default": 22, - "total": 22 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -22551,8 +10379,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 24, - "total": 24 + "default": 7, + "total": 7 }, "approvalCosts": { "tmMatch": 0, @@ -22564,38 +10392,38 @@ }, { "user": { - "id": 15956379, - "username": "bhangbuddy", - "fullName": "अखिलेश सिंह (bhangbuddy)", + "id": 15035049, + "username": "magazine4you", + "fullName": "مجله ای برای شما مجله کسب درآمد از اینترنت (magazine4you)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956379/medium/435901b02d5b5f77c10fc06ff2c1c3e6.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15035049/medium/aae1b74471bfafad0f4d2643e5de8678.png", "preTranslated": 0, - "totalCosts": 11092 + "totalCosts": 272 }, "languages": [ { "language": { - "id": "hi", - "name": "Hindi", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11092 + "totalCosts": 272 }, "translated": { - "tmMatch": 151, - "default": 10941, - "total": 11092 + "tmMatch": 0, + "default": 272, + "total": 272 }, "targetTranslated": { - "tmMatch": 278, - "default": 20003, - "total": 20281 + "tmMatch": 0, + "default": 337, + "total": 337 }, "translatedByMt": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -22603,9 +10431,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 151, - "default": 10941, - "total": 11092 + "tmMatch": 0, + "default": 272, + "total": 272 }, "approvalCosts": { "tmMatch": 0, @@ -22617,33 +10445,33 @@ }, { "user": { - "id": 15964923, - "username": "kursinara_km", - "fullName": "កុសិនារា Kursinara (kursinara_km)", + "id": 16028252, + "username": "milkfeng666", + "fullName": "冯韵涵 (milkfeng666)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964923/medium/6c0dd9a1ef90353e8bc1ddd0b9a07f16.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16028252/medium/df1172a80c8f0c52a390d9f69b452f4a.png", "preTranslated": 0, - "totalCosts": 111 + "totalCosts": 61 }, "languages": [ { "language": { - "id": "km", - "name": "Khmer", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 111 + "totalCosts": 61 }, "translated": { - "tmMatch": 12, - "default": 99, - "total": 111 + "tmMatch": 0, + "default": 61, + "total": 61 }, "targetTranslated": { - "tmMatch": 19, - "default": 111, - "total": 130 + "tmMatch": 0, + "default": 114, + "total": 114 }, "translatedByMt": { "tmMatch": 0, @@ -22656,9 +10484,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 12, - "default": 99, - "total": 111 + "tmMatch": 0, + "default": 61, + "total": 61 }, "approvalCosts": { "tmMatch": 0, @@ -22670,13 +10498,13 @@ }, { "user": { - "id": 15966589, - "username": "unawang", - "fullName": "乌娜儿Una (unawang)", + "id": 15999893, + "username": "chloeyang", + "fullName": "𝕏 Doggy Babe💻📡🔬 (chloeyang)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966589/medium/e7ef0923e4ff2d928ac1a9d5f3e64f2d.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15999893/medium/acb9e1666e04d7575ac44695fc03fc28.jpg", "preTranslated": 0, - "totalCosts": 3 + "totalCosts": 62 }, "languages": [ { @@ -22686,17 +10514,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3 + "totalCosts": 62 }, "translated": { - "tmMatch": 3, - "default": 0, - "total": 3 + "tmMatch": 0, + "default": 62, + "total": 62 }, "targetTranslated": { - "tmMatch": 6, - "default": 0, - "total": 6 + "tmMatch": 0, + "default": 112, + "total": 112 }, "translatedByMt": { "tmMatch": 0, @@ -22709,9 +10537,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 0, - "total": 3 + "tmMatch": 0, + "default": 62, + "total": 62 }, "approvalCosts": { "tmMatch": 0, diff --git a/src/data/translation-reports/quarter/quarter-data.json b/src/data/translation-reports/quarter/quarter-data.json index 02fa68ec63a..f5932be0c47 100644 --- a/src/data/translation-reports/quarter/quarter-data.json +++ b/src/data/translation-reports/quarter/quarter-data.json @@ -3,49 +3,49 @@ "url": "https://translate.ethereum.org/project/ethereum-org", "unit": "words", "dateRange": { - "from": "2023-04-01", - "to": "2023-06-30" + "from": "2023-07-01", + "to": "2023-09-30" }, "currency": "USD", "mode": "simple", - "totalCosts": 875115, + "totalCosts": 2858763, "totalTMSavings": 0, - "totalPreTranslated": 235378, + "totalPreTranslated": 206635, "data": [ { "user": { - "id": 15137520, - "username": "6ara6aka", - "fullName": "6ara6aka", - "userRole": "Blocked", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15137520/medium/c5b3dcab758c35e39540519cea3cc80d.jpg", + "id": 15898287, + "username": "0x36C76E862EaA18f5B670086570dA10a6C2bb9C73", + "fullName": "0x36C76E862EaA18f5B670086570dA10a6C2bb9C73", + "userRole": "", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15898287/medium/549252076608292c91fde0e9f765cc68_default.png", "preTranslated": 0, - "totalCosts": 1066 + "totalCosts": 3 }, "languages": [ { "language": { - "id": "fr", - "name": "French", - "userRole": "Blocked", + "id": "de", + "name": "German", + "userRole": "Limited Access", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 104 + "totalCosts": 3 }, "translated": { "tmMatch": 0, - "default": 104, - "total": 104 + "default": 3, + "total": 3 }, "targetTranslated": { "tmMatch": 0, - "default": 116, - "total": 116 + "default": 3, + "total": 3 }, "translatedByMt": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -54,33 +54,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 104, - "total": 104 + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15948261, + "username": "0xBeshoy", + "fullName": "0xBeshoy", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948261/medium/c2c2df3544537d40b0bf8ebc33d86ed4.png", + "preTranslated": 0, + "totalCosts": 12 + }, + "languages": [ { "language": { - "id": "it", - "name": "Italian", - "userRole": "Blocked", + "id": "ar", + "name": "Arabic", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 80 + "totalCosts": 12 }, "translated": { "tmMatch": 0, - "default": 80, - "total": 80 + "default": 12, + "total": 12 }, "targetTranslated": { "tmMatch": 0, - "default": 80, - "total": 80 + "default": 9, + "total": 9 }, "translatedByMt": { "tmMatch": 0, @@ -94,38 +107,51 @@ }, "translationCosts": { "tmMatch": 0, - "default": 80, - "total": 80 + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15964741, + "username": "0xberil", + "fullName": "0xberil", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964741/medium/f8fb148047395cf62c924755cb300f17_default.png", + "preTranslated": 0, + "totalCosts": 15003 + }, + "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Blocked", + "id": "tr", + "name": "Turkish", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 882 + "totalCosts": 15003 }, "translated": { - "tmMatch": 7, - "default": 875, - "total": 882 + "tmMatch": 117, + "default": 14886, + "total": 15003 }, "targetTranslated": { - "tmMatch": 7, - "default": 852, - "total": 859 + "tmMatch": 115, + "default": 12558, + "total": 12673 }, "translatedByMt": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 38, + "default": 27, + "total": 65 }, "approved": { "tmMatch": 0, @@ -133,9 +159,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 875, - "total": 882 + "tmMatch": 117, + "default": 14886, + "total": 15003 }, "approvalCosts": { "tmMatch": 0, @@ -147,48 +173,48 @@ }, { "user": { - "id": 15042043, - "username": "Acc_John_Banis", - "fullName": "Acc_John_Banis", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15042043/medium/3e87407585f7ba151de939a245b94de1_default.png", + "id": 14897770, + "username": "0xmike7", + "fullName": "0xmike7", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14897770/medium/48581e20c04cdfde4e05e0b73f80e7c5_default.png", "preTranslated": 0, - "totalCosts": 72 + "totalCosts": 431 }, "languages": [ { "language": { - "id": "nl", - "name": "Dutch", - "userRole": "Proofreader", + "id": "el", + "name": "Greek", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 72 + "totalCosts": 431 }, "translated": { - "tmMatch": 12, - "default": 60, - "total": 72 + "tmMatch": 0, + "default": 431, + "total": 431 }, "targetTranslated": { - "tmMatch": 12, - "default": 55, - "total": 67 + "tmMatch": 0, + "default": 516, + "total": 516 }, "translatedByMt": { - "tmMatch": 1, - "default": 8, - "total": 9 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 115 + "total": 0 }, "translationCosts": { - "tmMatch": 12, - "default": 60, - "total": 72 + "tmMatch": 0, + "default": 431, + "total": 431 }, "approvalCosts": { "tmMatch": 0, @@ -200,48 +226,48 @@ }, { "user": { - "id": 15061313, - "username": "Acc_LocalizationCare", - "fullName": "Acc_LocalizationCare", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15061313/medium/ae5c5cd241bc24a501eca52a5e240c2d_default.png", + "id": 15951899, + "username": "3jo6e9", + "fullName": "3jo6e9", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15951899/medium/6a5ca54fd7edaed69dbcabd597fedc6f_default.png", "preTranslated": 0, - "totalCosts": 3720 + "totalCosts": 27 }, "languages": [ { "language": { - "id": "pl", - "name": "Polish", - "userRole": "Proofreader", + "id": "ml-IN", + "name": "Malayalam", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3720 + "totalCosts": 27 }, "translated": { - "tmMatch": 30, - "default": 3690, - "total": 3720 + "tmMatch": 0, + "default": 27, + "total": 27 }, "targetTranslated": { - "tmMatch": 28, - "default": 3501, - "total": 3529 + "tmMatch": 0, + "default": 52, + "total": 52 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 5595 + "total": 0 }, "translationCosts": { - "tmMatch": 30, - "default": 3690, - "total": 3720 + "tmMatch": 0, + "default": 27, + "total": 27 }, "approvalCosts": { "tmMatch": 0, @@ -253,48 +279,48 @@ }, { "user": { - "id": 15794419, - "username": "Aco_EALSTPByLanguages", - "fullName": "Aco_EALSTPByLanguages", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15794419/medium/7259e3286d1b408f10cfb6dee866e177_default.png", + "id": 15926489, + "username": "7ina", + "fullName": "7ina", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15926489/medium/caffa96ac9313e6fda270bfe4f5ca952.jpg", "preTranslated": 0, - "totalCosts": 1516 + "totalCosts": 62 }, "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator, Proofreader", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1516 + "totalCosts": 62 }, "translated": { - "tmMatch": 48, - "default": 1468, - "total": 1516 + "tmMatch": 0, + "default": 62, + "total": 62 }, "targetTranslated": { - "tmMatch": 53, - "default": 1428, - "total": 1481 + "tmMatch": 0, + "default": 108, + "total": 108 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 3, + "total": 3 }, "approved": { "tmMatch": 0, "default": 0, - "total": 2198 + "total": 0 }, "translationCosts": { - "tmMatch": 48, - "default": 1468, - "total": 1516 + "tmMatch": 0, + "default": 62, + "total": 62 }, "approvalCosts": { "tmMatch": 0, @@ -306,33 +332,33 @@ }, { "user": { - "id": 15012107, - "username": "Aco_FR", - "fullName": "Aco_FR", + "id": 15451522, + "username": "ACO_km_linguist", + "fullName": "ACO_km_linguist", "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15012107/medium/c81591d59d6d3d5b7e7c6cc9734cbc6a_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15451522/medium/a535a722e0c011a9d54af4ae93dd0e3e_default.png", "preTranslated": 0, - "totalCosts": 1915 + "totalCosts": 2446 }, "languages": [ { "language": { - "id": "az", - "name": "Azerbaijani", + "id": "km", + "name": "Khmer", "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1915 + "totalCosts": 2446 }, "translated": { - "tmMatch": 32, - "default": 1883, - "total": 1915 + "tmMatch": 24, + "default": 2422, + "total": 2446 }, "targetTranslated": { - "tmMatch": 30, - "default": 1635, - "total": 1665 + "tmMatch": 27, + "default": 2852, + "total": 2879 }, "translatedByMt": { "tmMatch": 0, @@ -342,12 +368,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 7305 + "total": 12760 }, "translationCosts": { - "tmMatch": 32, - "default": 1883, - "total": 1915 + "tmMatch": 24, + "default": 2422, + "total": 2446 }, "approvalCosts": { "tmMatch": 0, @@ -359,48 +385,48 @@ }, { "user": { - "id": 15061123, - "username": "Aco_Hindi", - "fullName": "Aco_Hindi", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15061123/medium/e4d052a9eddf22820a8df7e59daa1704_default.png", + "id": 15944249, + "username": "ANOKEY", + "fullName": "ANOKEY", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15944249/medium/5bcfd0e2c58b676f2709481d9f4308ef_default.png", "preTranslated": 0, - "totalCosts": 42 + "totalCosts": 27 }, "languages": [ { "language": { - "id": "hi", - "name": "Hindi", - "userRole": "Proofreader", + "id": "fr", + "name": "French", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 42 + "totalCosts": 27 }, "translated": { - "tmMatch": 29, - "default": 13, - "total": 42 + "tmMatch": 0, + "default": 27, + "total": 27 }, "targetTranslated": { - "tmMatch": 58, - "default": 29, - "total": 87 + "tmMatch": 0, + "default": 32, + "total": 32 }, "translatedByMt": { - "tmMatch": 9, - "default": 0, - "total": 9 + "tmMatch": 0, + "default": 14, + "total": 14 }, "approved": { "tmMatch": 0, "default": 0, - "total": 116 + "total": 0 }, "translationCosts": { - "tmMatch": 29, - "default": 13, - "total": 42 + "tmMatch": 0, + "default": 27, + "total": 27 }, "approvalCosts": { "tmMatch": 0, @@ -412,48 +438,48 @@ }, { "user": { - "id": 15367238, - "username": "Aco_IM", - "fullName": "Aco_IM", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15367238/medium/d147d5a459b7c36001987af7845900a6_default.png", + "id": 15942509, + "username": "ATOPOS", + "fullName": "ATOPOS", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15942509/medium/5b108bd1877b23960ed577b37cc1687f_default.png", "preTranslated": 0, - "totalCosts": 7570 + "totalCosts": 33 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", - "userRole": "Proofreader", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7570 + "totalCosts": 33 }, "translated": { - "tmMatch": 1090, - "default": 6480, - "total": 7570 + "tmMatch": 0, + "default": 33, + "total": 33 }, "targetTranslated": { - "tmMatch": 1232, - "default": 6976, - "total": 8208 + "tmMatch": 0, + "default": 53, + "total": 53 }, "translatedByMt": { - "tmMatch": 2, - "default": 22, - "total": 24 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 26265 + "total": 0 }, "translationCosts": { - "tmMatch": 1090, - "default": 6480, - "total": 7570 + "tmMatch": 0, + "default": 33, + "total": 33 }, "approvalCosts": { "tmMatch": 0, @@ -465,48 +491,48 @@ }, { "user": { - "id": 15037897, - "username": "Aco_Indonesian", - "fullName": "Aco_Indonesian", + "id": 15042043, + "username": "Acc_John_Banis", + "fullName": "Acc_John_Banis", "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15037897/medium/0cef85d4b2a8be292505d8a7dcf43d68_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15042043/medium/3e87407585f7ba151de939a245b94de1_default.png", "preTranslated": 0, - "totalCosts": 445 + "totalCosts": 5009 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "nl", + "name": "Dutch", "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 445 + "totalCosts": 5009 }, "translated": { - "tmMatch": 91, - "default": 354, - "total": 445 + "tmMatch": 349, + "default": 4660, + "total": 5009 }, "targetTranslated": { - "tmMatch": 80, - "default": 327, - "total": 407 + "tmMatch": 379, + "default": 4898, + "total": 5277 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 1401 + "total": 7540 }, "translationCosts": { - "tmMatch": 91, - "default": 354, - "total": 445 + "tmMatch": 349, + "default": 4660, + "total": 5009 }, "approvalCosts": { "tmMatch": 0, @@ -518,48 +544,48 @@ }, { "user": { - "id": 15824187, - "username": "Aco_LocPro_AR", - "fullName": "Aco_LocPro_AR", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824187/medium/16a53ff6e8f4325b2dbbb8211286acb5_default.png", + "id": 15061313, + "username": "Acc_LocalizationCare", + "fullName": "Acc_LocalizationCare", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15061313/medium/ae5c5cd241bc24a501eca52a5e240c2d_default.png", "preTranslated": 0, - "totalCosts": 8474 + "totalCosts": 265 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Translator, Proofreader", + "id": "pl", + "name": "Polish", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8474 + "totalCosts": 265 }, "translated": { - "tmMatch": 699, - "default": 7775, - "total": 8474 + "tmMatch": 0, + "default": 265, + "total": 265 }, "targetTranslated": { - "tmMatch": 643, - "default": 7479, - "total": 8122 + "tmMatch": 0, + "default": 233, + "total": 233 }, "translatedByMt": { - "tmMatch": 25, - "default": 73, - "total": 98 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 10565 + "total": 979 }, "translationCosts": { - "tmMatch": 699, - "default": 7775, - "total": 8474 + "tmMatch": 0, + "default": 265, + "total": 265 }, "approvalCosts": { "tmMatch": 0, @@ -571,33 +597,33 @@ }, { "user": { - "id": 15319242, - "username": "Aco_Qwertyworks.Ethereum", - "fullName": "Aco_Qwertyworks.Ethereum", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15319242/medium/a4b24fefc8cb46836511002d4e1ce001_default.png", + "id": 15194920, + "username": "Aco_Bengali", + "fullName": "Aco_Bengali", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194920/medium/8aff26c8299db6ff8baa83e998c92a5b_default.png", "preTranslated": 0, - "totalCosts": 0 + "totalCosts": 18558 }, "languages": [ { "language": { - "id": "fil", - "name": "Filipino", - "userRole": "Proofreader", + "id": "bn", + "name": "Bengali", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 0 + "totalCosts": 18558 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 55, + "default": 18503, + "total": 18558 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 118, + "default": 35309, + "total": 35427 }, "translatedByMt": { "tmMatch": 0, @@ -607,12 +633,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 621 + "total": 36058 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 55, + "default": 18503, + "total": 18558 }, "approvalCosts": { "tmMatch": 0, @@ -624,33 +650,33 @@ }, { "user": { - "id": 15791297, - "username": "Aco_TR_Touchbase", - "fullName": "Aco_TR_Touchbase", + "id": 15081117, + "username": "Aco_Diskusija", + "fullName": "Aco_Diskusija", "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15791297/medium/b4bc55f0ee6198d0a3621a4991be3d2e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15081117/medium/7e86794ce311a40214528e3555421c55_default.png", "preTranslated": 0, - "totalCosts": 570 + "totalCosts": 13606 }, "languages": [ { "language": { - "id": "fil", - "name": "Filipino", + "id": "be", + "name": "Belarusian", "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 570 + "totalCosts": 3500 }, "translated": { - "tmMatch": 15, - "default": 555, - "total": 570 + "tmMatch": 81, + "default": 3419, + "total": 3500 }, "targetTranslated": { - "tmMatch": 22, - "default": 706, - "total": 728 + "tmMatch": 73, + "default": 3238, + "total": 3311 }, "translatedByMt": { "tmMatch": 1, @@ -660,50 +686,37 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 126 + "total": 6250 }, "translationCosts": { - "tmMatch": 15, - "default": 555, - "total": 570 + "tmMatch": 81, + "default": 3419, + "total": 3500 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15241658, - "username": "Aco_Vietnamese", - "fullName": "Aco_Vietnamese", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241658/medium/39de011db222be51f6dfe886cfe26499_default.png", - "preTranslated": 0, - "totalCosts": 701 - }, - "languages": [ + }, { "language": { - "id": "vi", - "name": "Vietnamese", - "userRole": "Proofreader", + "id": "bs", + "name": "Bosnian", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 701 + "totalCosts": 410 }, "translated": { - "tmMatch": 274, - "default": 427, - "total": 701 + "tmMatch": 1, + "default": 409, + "total": 410 }, "targetTranslated": { - "tmMatch": 430, - "default": 646, - "total": 1076 + "tmMatch": 1, + "default": 394, + "total": 395 }, "translatedByMt": { "tmMatch": 0, @@ -713,118 +726,92 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 1088 + "total": 6250 }, "translationCosts": { - "tmMatch": 274, - "default": 427, - "total": 701 + "tmMatch": 1, + "default": 409, + "total": 410 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15005293, - "username": "Aco_Zinacle", - "fullName": "Aco_Zinacle", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15005293/medium/6f19beccc7174b9ab2a3022bad4e34a0_default.png", - "preTranslated": 0, - "totalCosts": 3308 - }, - "languages": [ + }, { "language": { - "id": "pt-PT", - "name": "Portuguese", - "userRole": "Proofreader", + "id": "sr-CS", + "name": "Serbian (Latin)", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3308 + "totalCosts": 9461 }, "translated": { - "tmMatch": 56, - "default": 3252, - "total": 3308 + "tmMatch": 43, + "default": 9418, + "total": 9461 }, "targetTranslated": { - "tmMatch": 62, - "default": 3462, - "total": 3524 + "tmMatch": 42, + "default": 9397, + "total": 9439 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 4981 + "total": 26283 }, "translationCosts": { - "tmMatch": 56, - "default": 3252, - "total": 3308 + "tmMatch": 43, + "default": 9418, + "total": 9461 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 13599211, - "username": "Aco_crowdin_CZ_ED", - "fullName": "Aco_crowdin_CZ_ED", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13599211/medium/e626b0779d428714a38d27f1f640b7ce_default.png", - "preTranslated": 0, - "totalCosts": 62 - }, - "languages": [ + }, { "language": { - "id": "cs", - "name": "Czech", - "userRole": "Proofreader", + "id": "sk", + "name": "Slovak", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 62 + "totalCosts": 235 }, "translated": { - "tmMatch": 6, - "default": 56, - "total": 62 + "tmMatch": 0, + "default": 235, + "total": 235 }, "targetTranslated": { - "tmMatch": 6, - "default": 43, - "total": 49 + "tmMatch": 0, + "default": 222, + "total": 222 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 332 + "total": 5218 }, "translationCosts": { - "tmMatch": 6, - "default": 56, - "total": 62 + "tmMatch": 0, + "default": 235, + "total": 235 }, "approvalCosts": { "tmMatch": 0, @@ -836,48 +823,48 @@ }, { "user": { - "id": 15256998, - "username": "Aco_gmtraductions", - "fullName": "Aco_gmtraductions", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15256998/medium/1080c1f5f785cd542b310f0c840db93f_default.png", + "id": 15142978, + "username": "Aco_DonatoRoberto", + "fullName": "Aco_DonatoRoberto", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15142978/medium/cf666f1524b64c6f43e98542ff621e9c_default.png", "preTranslated": 0, - "totalCosts": 11538 + "totalCosts": 9830 }, "languages": [ { "language": { - "id": "fr", - "name": "French", - "userRole": "Translator, Proofreader", + "id": "it", + "name": "Italian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11538 + "totalCosts": 9830 }, "translated": { - "tmMatch": 1477, - "default": 10061, - "total": 11538 + "tmMatch": 2286, + "default": 7544, + "total": 9830 }, "targetTranslated": { - "tmMatch": 1800, - "default": 11796, - "total": 13596 + "tmMatch": 2453, + "default": 7961, + "total": 10414 }, "translatedByMt": { - "tmMatch": 30, - "default": 249, - "total": 279 + "tmMatch": 123, + "default": 247, + "total": 370 }, "approved": { "tmMatch": 0, "default": 0, - "total": 18889 + "total": 19445 }, "translationCosts": { - "tmMatch": 1477, - "default": 10061, - "total": 11538 + "tmMatch": 2286, + "default": 7544, + "total": 9830 }, "approvalCosts": { "tmMatch": 0, @@ -889,33 +876,33 @@ }, { "user": { - "id": 15675101, - "username": "Adema29", - "fullName": "Adema29", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15675101/medium/2ddef23abde522732b0a6315d4d1f952.jpg", + "id": 15794419, + "username": "Aco_EALSTPByLanguages", + "fullName": "Aco_EALSTPByLanguages", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15794419/medium/7259e3286d1b408f10cfb6dee866e177_default.png", "preTranslated": 0, - "totalCosts": 7 + "totalCosts": 11044 }, "languages": [ { "language": { - "id": "mk", - "name": "Macedonian", - "userRole": "Translator", + "id": "pcm", + "name": "Nigerian Pidgin", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7 + "totalCosts": 11044 }, "translated": { - "tmMatch": 0, - "default": 7, - "total": 7 + "tmMatch": 306, + "default": 10738, + "total": 11044 }, "targetTranslated": { - "tmMatch": 0, - "default": 1, - "total": 1 + "tmMatch": 330, + "default": 12333, + "total": 12663 }, "translatedByMt": { "tmMatch": 0, @@ -925,12 +912,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 15875 }, "translationCosts": { - "tmMatch": 0, - "default": 7, - "total": 7 + "tmMatch": 306, + "default": 10738, + "total": 11044 }, "approvalCosts": { "tmMatch": 0, @@ -942,48 +929,48 @@ }, { "user": { - "id": 14678294, - "username": "Aguy33", - "fullName": "Aguy33", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14678294/medium/c52154d170eb196b8f64ea2a08913e20.jpg", + "id": 15038029, + "username": "Aco_Gemineo", + "fullName": "Aco_Gemineo", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15038029/medium/39a0baeb76a5f50b79e8e8589553619a_default.png", "preTranslated": 0, - "totalCosts": 16 + "totalCosts": 36582 }, "languages": [ { "language": { - "id": "he", - "name": "Hebrew", - "userRole": "Translator", + "id": "de", + "name": "German", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 16 + "totalCosts": 36582 }, "translated": { - "tmMatch": 1, - "default": 15, - "total": 16 + "tmMatch": 8709, + "default": 27873, + "total": 36582 }, "targetTranslated": { - "tmMatch": 1, - "default": 15, - "total": 16 + "tmMatch": 8456, + "default": 27715, + "total": 36171 }, "translatedByMt": { - "tmMatch": 1, - "default": 1, - "total": 2 + "tmMatch": 6, + "default": 0, + "total": 6 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 84281 }, "translationCosts": { - "tmMatch": 1, - "default": 15, - "total": 16 + "tmMatch": 8709, + "default": 27873, + "total": 36582 }, "approvalCosts": { "tmMatch": 0, @@ -995,48 +982,48 @@ }, { "user": { - "id": 15734131, - "username": "Ai-Trnsltr", - "fullName": "Ai-Trnsltr", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15734131/medium/b5f2d5248c8aa4749e018a12d0e84959_default.png", + "id": 15061123, + "username": "Aco_Hindi", + "fullName": "Aco_Hindi", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15061123/medium/e4d052a9eddf22820a8df7e59daa1704_default.png", "preTranslated": 0, - "totalCosts": 11 + "totalCosts": 34238 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 11 + "id": "hi", + "name": "Hindi", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 34238 }, "translated": { - "tmMatch": 4, - "default": 7, - "total": 11 + "tmMatch": 659, + "default": 33579, + "total": 34238 }, "targetTranslated": { - "tmMatch": 8, - "default": 10, - "total": 18 + "tmMatch": 1240, + "default": 61255, + "total": 62495 }, "translatedByMt": { "tmMatch": 0, - "default": 7, - "total": 7 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 48128 }, "translationCosts": { - "tmMatch": 4, - "default": 7, - "total": 11 + "tmMatch": 659, + "default": 33579, + "total": 34238 }, "approvalCosts": { "tmMatch": 0, @@ -1048,33 +1035,33 @@ }, { "user": { - "id": 15269034, - "username": "Aiden_Lee", - "fullName": "Aiden_Lee", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15269034/medium/98d984d00012bd37cbb5f3f343bd367e_default.png", + "id": 15037897, + "username": "Aco_Indonesian", + "fullName": "Aco_Indonesian", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15037897/medium/0cef85d4b2a8be292505d8a7dcf43d68_default.png", "preTranslated": 0, - "totalCosts": 488 + "totalCosts": 47935 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Translator", + "id": "id", + "name": "Indonesian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 488 + "totalCosts": 47935 }, "translated": { - "tmMatch": 0, - "default": 488, - "total": 488 + "tmMatch": 3575, + "default": 44360, + "total": 47935 }, "targetTranslated": { - "tmMatch": 0, - "default": 868, - "total": 868 + "tmMatch": 3493, + "default": 42559, + "total": 46052 }, "translatedByMt": { "tmMatch": 0, @@ -1084,12 +1071,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 86620 }, "translationCosts": { - "tmMatch": 0, - "default": 488, - "total": 488 + "tmMatch": 3575, + "default": 44360, + "total": 47935 }, "approvalCosts": { "tmMatch": 0, @@ -1101,48 +1088,48 @@ }, { "user": { - "id": 15830453, - "username": "Alex.ch", - "fullName": "Alex.ch", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15830453/medium/1b7aa324f3c7130c7e82f132dc3b5343_default.png", + "id": 15441504, + "username": "Aco_JS", + "fullName": "Aco_JS", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15441504/medium/707b75040cbc5b9bd8dc799f99b1c226_default.png", "preTranslated": 0, - "totalCosts": 37 + "totalCosts": 52 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", + "id": "ta", + "name": "Tamil", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 37 + "totalCosts": 52 }, "translated": { - "tmMatch": 10, - "default": 27, - "total": 37 + "tmMatch": 1, + "default": 51, + "total": 52 }, "targetTranslated": { - "tmMatch": 6, - "default": 27, - "total": 33 + "tmMatch": 1, + "default": 87, + "total": 88 }, "translatedByMt": { - "tmMatch": 10, + "tmMatch": 0, "default": 0, - "total": 10 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 267 }, "translationCosts": { - "tmMatch": 10, - "default": 27, - "total": 37 + "tmMatch": 1, + "default": 51, + "total": 52 }, "approvalCosts": { "tmMatch": 0, @@ -1154,48 +1141,48 @@ }, { "user": { - "id": 15566151, - "username": "AlexanderSh", - "fullName": "AlexanderSh", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15566151/medium/2044a8dd6ae21fc4f7d8a8dad0190230_default.png", + "id": 15824187, + "username": "Aco_LocPro_AR", + "fullName": "Aco_LocPro_AR", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824187/medium/16a53ff6e8f4325b2dbbb8211286acb5_default.png", "preTranslated": 0, - "totalCosts": 1277 + "totalCosts": 877 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", + "id": "ar", + "name": "Arabic", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1277 + "totalCosts": 877 }, "translated": { "tmMatch": 0, - "default": 1277, - "total": 1277 + "default": 877, + "total": 877 }, "targetTranslated": { "tmMatch": 0, - "default": 1192, - "total": 1192 + "default": 813, + "total": 813 }, "translatedByMt": { "tmMatch": 0, - "default": 160, - "total": 160 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 912 }, "translationCosts": { "tmMatch": 0, - "default": 1277, - "total": 1277 + "default": 877, + "total": 877 }, "approvalCosts": { "tmMatch": 0, @@ -1207,33 +1194,33 @@ }, { "user": { - "id": 15764253, - "username": "Alireza6768", - "fullName": "Alireza6768", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15764253/medium/3277c41bce5a90a6db575304195e4bd4_default.png", + "id": 15141044, + "username": "Aco_LorenzoLicari", + "fullName": "Aco_LorenzoLicari", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15141044/medium/a099d3678baa4f76c2447ede1e50a37d_default.png", "preTranslated": 0, - "totalCosts": 64 + "totalCosts": 465 }, "languages": [ { "language": { - "id": "ca", - "name": "Catalan", - "userRole": "Translator", + "id": "it", + "name": "Italian", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 29 + "totalCosts": 465 }, "translated": { "tmMatch": 0, - "default": 29, - "total": 29 + "default": 465, + "total": 465 }, "targetTranslated": { "tmMatch": 0, - "default": 36, - "total": 36 + "default": 454, + "total": 454 }, "translatedByMt": { "tmMatch": 0, @@ -1243,37 +1230,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1182 }, "translationCosts": { "tmMatch": 0, - "default": 29, - "total": 29 + "default": 465, + "total": 465 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15005335, + "username": "Aco_Mamorim", + "fullName": "Aco_Mamorim", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15005335/medium/1df3f196a54707c412ad265030074c6d_default.png", + "preTranslated": 0, + "totalCosts": 9807 + }, + "languages": [ { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 35 + "totalCosts": 9807 }, "translated": { - "tmMatch": 0, - "default": 35, - "total": 35 + "tmMatch": 1335, + "default": 8472, + "total": 9807 }, "targetTranslated": { - "tmMatch": 0, - "default": 35, - "total": 35 + "tmMatch": 1531, + "default": 9386, + "total": 10917 }, "translatedByMt": { "tmMatch": 0, @@ -1283,12 +1283,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 11611 }, "translationCosts": { - "tmMatch": 0, - "default": 35, - "total": 35 + "tmMatch": 1335, + "default": 8472, + "total": 9807 }, "approvalCosts": { "tmMatch": 0, @@ -1300,48 +1300,48 @@ }, { "user": { - "id": 14630706, - "username": "Amendez75", - "fullName": "Amendez75", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14630706/medium/988e8eef4a1356d0798f71d49827c3fa.jpeg", + "id": 15068119, + "username": "Aco_Marathi", + "fullName": "Aco_Marathi", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15068119/medium/598c46b08892955be54dabf897863500_default.png", "preTranslated": 0, - "totalCosts": 273 + "totalCosts": 12150 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", + "id": "mr", + "name": "Marathi", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 273 + "totalCosts": 12150 }, "translated": { - "tmMatch": 0, - "default": 273, - "total": 273 + "tmMatch": 71, + "default": 12079, + "total": 12150 }, "targetTranslated": { - "tmMatch": 0, - "default": 343, - "total": 343 + "tmMatch": 93, + "default": 18570, + "total": 18663 }, "translatedByMt": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 26124 }, "translationCosts": { - "tmMatch": 0, - "default": 273, - "total": 273 + "tmMatch": 71, + "default": 12079, + "total": 12150 }, "approvalCosts": { "tmMatch": 0, @@ -1353,48 +1353,48 @@ }, { "user": { - "id": 15808581, - "username": "Anata999", - "fullName": "Anata999", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15808581/medium/705115d8599bac6a2121a140d21b3dc4_default.png", + "id": 15319242, + "username": "Aco_Qwertyworks.Ethereum", + "fullName": "Aco_Qwertyworks.Ethereum", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15319242/medium/a4b24fefc8cb46836511002d4e1ce001_default.png", "preTranslated": 0, - "totalCosts": 9 + "totalCosts": 49617 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Translator", + "id": "fil", + "name": "Filipino", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 9 + "totalCosts": 49617 }, "translated": { - "tmMatch": 0, - "default": 9, - "total": 9 + "tmMatch": 540, + "default": 49077, + "total": 49617 }, "targetTranslated": { - "tmMatch": 0, - "default": 8, - "total": 8 + "tmMatch": 666, + "default": 58478, + "total": 59144 }, "translatedByMt": { - "tmMatch": 0, - "default": 9, - "total": 9 + "tmMatch": 3, + "default": 0, + "total": 3 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 52300 }, "translationCosts": { - "tmMatch": 0, - "default": 9, - "total": 9 + "tmMatch": 540, + "default": 49077, + "total": 49617 }, "approvalCosts": { "tmMatch": 0, @@ -1406,33 +1406,33 @@ }, { "user": { - "id": 15781431, - "username": "Aoi_Translates", - "fullName": "Aoi_Translates", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15781431/medium/15f01bc9291169e10e7d776b270fa08b_default.png", + "id": 15894193, + "username": "Aco_Thai", + "fullName": "Aco_Thai", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894193/medium/484700278e1f424962fcca09ceabe77f_default.png", "preTranslated": 0, - "totalCosts": 35 + "totalCosts": 722 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Limited Access", + "id": "th", + "name": "Thai", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 35 + "totalCosts": 722 }, "translated": { - "tmMatch": 0, - "default": 35, - "total": 35 + "tmMatch": 22, + "default": 700, + "total": 722 }, "targetTranslated": { - "tmMatch": 0, - "default": 33, - "total": 33 + "tmMatch": 15, + "default": 178, + "total": 193 }, "translatedByMt": { "tmMatch": 0, @@ -1442,12 +1442,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 2116 }, "translationCosts": { - "tmMatch": 0, - "default": 35, - "total": 35 + "tmMatch": 22, + "default": 700, + "total": 722 }, "approvalCosts": { "tmMatch": 0, @@ -1459,48 +1459,48 @@ }, { "user": { - "id": 15877549, - "username": "BaelFire", - "fullName": "BaelFire", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15877549/medium/3a83e601d8016828ebacb8d153df99dd_default.png", + "id": 15038647, + "username": "Aco_Tomoko", + "fullName": "Aco_Tomoko", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15038647/medium/6e83773b7f4db25bdece30475a0840df_default.png", "preTranslated": 0, - "totalCosts": 243 + "totalCosts": 1302 }, "languages": [ { "language": { - "id": "vi", - "name": "Vietnamese", - "userRole": "Translator", + "id": "ja", + "name": "Japanese", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 243 + "totalCosts": 1302 }, "translated": { - "tmMatch": 20, - "default": 223, - "total": 243 + "tmMatch": 9, + "default": 1293, + "total": 1302 }, "targetTranslated": { - "tmMatch": 29, - "default": 360, - "total": 389 + "tmMatch": 34, + "default": 3766, + "total": 3800 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1396 }, "translationCosts": { - "tmMatch": 20, - "default": 223, - "total": 243 + "tmMatch": 9, + "default": 1293, + "total": 1302 }, "approvalCosts": { "tmMatch": 0, @@ -1512,35 +1512,35 @@ }, { "user": { - "id": 15774219, - "username": "Barbubeka", - "fullName": "Barbubeka", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15774219/medium/a2c927ca08a2d513b3fdc667e539c8d2_default.png", + "id": 15241658, + "username": "Aco_Vietnamese", + "fullName": "Aco_Vietnamese", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241658/medium/39de011db222be51f6dfe886cfe26499_default.png", "preTranslated": 0, - "totalCosts": 48 + "totalCosts": 3866 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", + "id": "vi", + "name": "Vietnamese", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 48 + "totalCosts": 3866 }, "translated": { - "tmMatch": 0, - "default": 48, - "total": 48 + "tmMatch": 370, + "default": 3496, + "total": 3866 }, "targetTranslated": { - "tmMatch": 0, - "default": 48, - "total": 48 - }, - "translatedByMt": { + "tmMatch": 639, + "default": 5205, + "total": 5844 + }, + "translatedByMt": { "tmMatch": 0, "default": 0, "total": 0 @@ -1548,12 +1548,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 6438 }, "translationCosts": { - "tmMatch": 0, - "default": 48, - "total": 48 + "tmMatch": 370, + "default": 3496, + "total": 3866 }, "approvalCosts": { "tmMatch": 0, @@ -1565,101 +1565,88 @@ }, { "user": { - "id": 14587728, - "username": "Bennyhierry", - "fullName": "Bennyhierry", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14587728/medium/5db6b643ec64fbe695ab618b21b91fd3_default.png", + "id": 15005293, + "username": "Aco_Zinacle", + "fullName": "Aco_Zinacle", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15005293/medium/6f19beccc7174b9ab2a3022bad4e34a0_default.png", "preTranslated": 0, - "totalCosts": 4 + "totalCosts": 10317 }, "languages": [ { "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", + "id": "ca", + "name": "Catalan", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4 + "totalCosts": 837 }, "translated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 24, + "default": 813, + "total": 837 }, "targetTranslated": { - "tmMatch": 0, - "default": 9, - "total": 9 + "tmMatch": 28, + "default": 925, + "total": 953 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1411 }, "translationCosts": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 24, + "default": 813, + "total": 837 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 13749397, - "username": "Biasid", - "fullName": "Biasid", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13749397/medium/501e6562fd12f3e1832f8db157f572bc_default.png", - "preTranslated": 0, - "totalCosts": 2 - }, - "languages": [ + }, { "language": { - "id": "it", - "name": "Italian", - "userRole": "Translator", + "id": "pt-PT", + "name": "Portuguese", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 9480 }, "translated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 254, + "default": 9226, + "total": 9480 }, "targetTranslated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 283, + "default": 10289, + "total": 10572 }, "translatedByMt": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 1, + "default": 3, + "total": 4 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 26766 }, "translationCosts": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 254, + "default": 9226, + "total": 9480 }, "approvalCosts": { "tmMatch": 0, @@ -1671,33 +1658,33 @@ }, { "user": { - "id": 15877165, - "username": "Bidex32", - "fullName": "Bidex32", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15877165/medium/f3dc82f12943f594ceefa3d706e23e0c_default.png", + "id": 15892921, + "username": "Aco__Malay", + "fullName": "Aco__Malay", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15892921/medium/f212dc708958dc7ccdcc9e1fceab4f47_default.png", "preTranslated": 0, - "totalCosts": 44 + "totalCosts": 29872 }, "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Translator", + "id": "ms", + "name": "Malay", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 44 + "totalCosts": 29872 }, "translated": { - "tmMatch": 0, - "default": 44, - "total": 44 + "tmMatch": 342, + "default": 29530, + "total": 29872 }, "targetTranslated": { - "tmMatch": 0, - "default": 45, - "total": 45 + "tmMatch": 339, + "default": 27295, + "total": 27634 }, "translatedByMt": { "tmMatch": 0, @@ -1707,12 +1694,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 35503 }, "translationCosts": { - "tmMatch": 0, - "default": 44, - "total": 44 + "tmMatch": 342, + "default": 29530, + "total": 29872 }, "approvalCosts": { "tmMatch": 0, @@ -1724,33 +1711,33 @@ }, { "user": { - "id": 15893383, - "username": "Bilalaliyev0", - "fullName": "Bilalaliyev0", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15893383/medium/c103234aacc0f4ee3ed6b133147af318.jpg", + "id": 13599211, + "username": "Aco_crowdin_CZ_ED", + "fullName": "Aco_crowdin_CZ_ED", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13599211/medium/e626b0779d428714a38d27f1f640b7ce_default.png", "preTranslated": 0, - "totalCosts": 140 + "totalCosts": 0 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Translator", + "id": "pl", + "name": "Polish", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 140 + "totalCosts": 0 }, "translated": { - "tmMatch": 23, - "default": 117, - "total": 140 + "tmMatch": 0, + "default": 0, + "total": 0 }, "targetTranslated": { - "tmMatch": 35, - "default": 110, - "total": 145 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -1760,12 +1747,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 65 }, "translationCosts": { - "tmMatch": 23, - "default": 117, - "total": 140 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approvalCosts": { "tmMatch": 0, @@ -1777,33 +1764,33 @@ }, { "user": { - "id": 15813703, - "username": "Brian1997", - "fullName": "Brian1997", - "userRole": "Blocked", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15813703/medium/4fbeb047eb6a975b8edfd526c0c05bee_default.png", + "id": 15986843, + "username": "Aco_crowdin_PL", + "fullName": "Aco_crowdin_PL", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15986843/medium/7d0b6e5c74ce61c7e88c321c1e91f56c_default.png", "preTranslated": 0, - "totalCosts": 1668 + "totalCosts": 734 }, "languages": [ { "language": { - "id": "ca", - "name": "Catalan", - "userRole": "Blocked", + "id": "pl", + "name": "Polish", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 110 + "totalCosts": 734 }, "translated": { - "tmMatch": 21, - "default": 89, - "total": 110 + "tmMatch": 71, + "default": 663, + "total": 734 }, "targetTranslated": { - "tmMatch": 29, - "default": 93, - "total": 122 + "tmMatch": 58, + "default": 632, + "total": 690 }, "translatedByMt": { "tmMatch": 0, @@ -1813,37 +1800,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 39705 }, "translationCosts": { - "tmMatch": 21, - "default": 89, - "total": 110 + "tmMatch": 71, + "default": 663, + "total": 734 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15256998, + "username": "Aco_gmtraductions", + "fullName": "Aco_gmtraductions", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15256998/medium/1080c1f5f785cd542b310f0c840db93f_default.png", + "preTranslated": 0, + "totalCosts": 568 + }, + "languages": [ { "language": { - "id": "it", - "name": "Italian", - "userRole": "Blocked", + "id": "fr", + "name": "French", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 774 + "totalCosts": 568 }, "translated": { - "tmMatch": 2, - "default": 772, - "total": 774 + "tmMatch": 89, + "default": 479, + "total": 568 }, "targetTranslated": { - "tmMatch": 2, - "default": 868, - "total": 870 + "tmMatch": 94, + "default": 576, + "total": 670 }, "translatedByMt": { "tmMatch": 0, @@ -1853,37 +1853,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 22507 }, "translationCosts": { - "tmMatch": 2, - "default": 772, - "total": 774 + "tmMatch": 89, + "default": 479, + "total": 568 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15876801, + "username": "Ad__", + "fullName": "Ad__", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15876801/medium/8c30730d1f22853dc924ef216e28aec0_default.png", + "preTranslated": 0, + "totalCosts": 38 + }, + "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Blocked", + "id": "fr", + "name": "French", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 548 + "totalCosts": 38 }, "translated": { "tmMatch": 0, - "default": 548, - "total": 548 + "default": 38, + "total": 38 }, "targetTranslated": { "tmMatch": 0, - "default": 628, - "total": 628 + "default": 50, + "total": 50 }, "translatedByMt": { "tmMatch": 0, @@ -1897,33 +1910,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 548, - "total": 548 + "default": 38, + "total": 38 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15966315, + "username": "Afoma", + "fullName": "Afoma", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966315/medium/b3038fdd1703da9ef4c0b3f0f4a0c31d_default.png", + "preTranslated": 0, + "totalCosts": 2141 + }, + "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Blocked", + "id": "ig", + "name": "Igbo", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 236 + "totalCosts": 2141 }, "translated": { - "tmMatch": 1, - "default": 235, - "total": 236 + "tmMatch": 3, + "default": 2138, + "total": 2141 }, "targetTranslated": { - "tmMatch": 1, - "default": 231, - "total": 232 + "tmMatch": 5, + "default": 2884, + "total": 2889 }, "translatedByMt": { "tmMatch": 0, @@ -1936,9 +1962,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 235, - "total": 236 + "tmMatch": 3, + "default": 2138, + "total": 2141 }, "approvalCosts": { "tmMatch": 0, @@ -1950,33 +1976,33 @@ }, { "user": { - "id": 14866294, - "username": "Burinat", - "fullName": "Burinat", + "id": 15961869, + "username": "Akramnard", + "fullName": "Akramnard", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14866294/medium/c234fc0bc610a0afcf6a9d887e32b628_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961869/medium/1855f725161426bfb4f84b57ce3c25df_default.png", "preTranslated": 0, - "totalCosts": 158 + "totalCosts": 21 }, "languages": [ { "language": { - "id": "ca", - "name": "Catalan", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 158 + "totalCosts": 21 }, "translated": { "tmMatch": 0, - "default": 158, - "total": 158 + "default": 21, + "total": 21 }, "targetTranslated": { "tmMatch": 0, - "default": 193, - "total": 193 + "default": 16, + "total": 16 }, "translatedByMt": { "tmMatch": 0, @@ -1990,8 +2016,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 158, - "total": 158 + "default": 21, + "total": 21 }, "approvalCosts": { "tmMatch": 0, @@ -2003,34 +2029,34 @@ }, { "user": { - "id": 15866101, - "username": "CYChen", - "fullName": "CYChen", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15866101/medium/0abc5e6df7e26192a9afef33a2aae460.jpg", + "id": 15947485, + "username": "Alaska11", + "fullName": "Alaska11", + "userRole": "", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947485/medium/da51c9b8a0a8e430338d253f957c20e2_default.png", "preTranslated": 0, - "totalCosts": 1919 + "totalCosts": 5 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", + "id": "uk", + "name": "Ukrainian", + "userRole": "Limited Access", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1919 + "totalCosts": 5 }, "translated": { "tmMatch": 0, - "default": 1919, - "total": 1919 + "default": 5, + "total": 5 }, "targetTranslated": { "tmMatch": 0, - "default": 2718, - "total": 2718 - }, + "default": 4, + "total": 4 + }, "translatedByMt": { "tmMatch": 0, "default": 0, @@ -2043,8 +2069,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 1919, - "total": 1919 + "default": 5, + "total": 5 }, "approvalCosts": { "tmMatch": 0, @@ -2056,38 +2082,38 @@ }, { "user": { - "id": 15790247, - "username": "Callzonie", - "fullName": "Callzonie", + "id": 15911391, + "username": "Aleczzz", + "fullName": "Aleczzz", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15790247/medium/bff2a46c8f3d2ee8027ca05362da9757_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911391/medium/b8497df2da3374cd5f0cb8183169e4db_default.png", "preTranslated": 0, - "totalCosts": 1074 + "totalCosts": 97 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1074 + "totalCosts": 97 }, "translated": { "tmMatch": 0, - "default": 1074, - "total": 1074 + "default": 97, + "total": 97 }, "targetTranslated": { "tmMatch": 0, - "default": 1122, - "total": 1122 + "default": 171, + "total": 171 }, "translatedByMt": { "tmMatch": 0, - "default": 532, - "total": 532 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -2096,8 +2122,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 1074, - "total": 1074 + "default": 97, + "total": 97 }, "approvalCosts": { "tmMatch": 0, @@ -2109,33 +2135,33 @@ }, { "user": { - "id": 15624473, - "username": "CaverneCrypto", - "fullName": "CaverneCrypto", + "id": 16022912, + "username": "Altyn31", + "fullName": "Altyn31", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15624473/medium/7790c08f2ef4a5ba028091b6393900be_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16022912/medium/9c3082f5adec6acee597acc3eb5849ab_default.png", "preTranslated": 0, - "totalCosts": 1045 + "totalCosts": 343 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1045 + "totalCosts": 343 }, "translated": { "tmMatch": 0, - "default": 1045, - "total": 1045 + "default": 343, + "total": 343 }, "targetTranslated": { "tmMatch": 0, - "default": 1281, - "total": 1281 + "default": 307, + "total": 307 }, "translatedByMt": { "tmMatch": 0, @@ -2149,8 +2175,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 1045, - "total": 1045 + "default": 343, + "total": 343 }, "approvalCosts": { "tmMatch": 0, @@ -2162,33 +2188,33 @@ }, { "user": { - "id": 15895151, - "username": "ChaosGod", - "fullName": "ChaosGod", + "id": 14769736, + "username": "Andpatagon", + "fullName": "Andpatagon", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15895151/medium/bfd45ef9f9ded3b56a2966e9aecb4677_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14769736/medium/930a05ccc7aec89b8e66e9f0d1a0b24e_default.png", "preTranslated": 0, - "totalCosts": 148 + "totalCosts": 312 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 148 + "totalCosts": 312 }, "translated": { - "tmMatch": 37, - "default": 111, - "total": 148 + "tmMatch": 14, + "default": 298, + "total": 312 }, "targetTranslated": { - "tmMatch": 51, - "default": 194, - "total": 245 + "tmMatch": 21, + "default": 343, + "total": 364 }, "translatedByMt": { "tmMatch": 0, @@ -2201,9 +2227,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 37, - "default": 111, - "total": 148 + "tmMatch": 14, + "default": 298, + "total": 312 }, "approvalCosts": { "tmMatch": 0, @@ -2215,33 +2241,33 @@ }, { "user": { - "id": 13358093, - "username": "ChesleyCN", - "fullName": "ChesleyCN", + "id": 15914571, + "username": "Anunsh", + "fullName": "Anunsh", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13358093/medium/63b334419836be7ef7af1c645b084fc9.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914571/medium/d8b031fbabedb080d1fae872bd44312f_default.png", "preTranslated": 0, - "totalCosts": 300 + "totalCosts": 68 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "hu", + "name": "Hungarian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 300 + "totalCosts": 68 }, "translated": { "tmMatch": 0, - "default": 300, - "total": 300 + "default": 68, + "total": 68 }, "targetTranslated": { "tmMatch": 0, - "default": 476, - "total": 476 + "default": 69, + "total": 69 }, "translatedByMt": { "tmMatch": 0, @@ -2255,8 +2281,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 300, - "total": 300 + "default": 68, + "total": 68 }, "approvalCosts": { "tmMatch": 0, @@ -2268,38 +2294,38 @@ }, { "user": { - "id": 15783063, - "username": "Corentinn.rtr", - "fullName": "Corentinn.rtr", + "id": 16013441, + "username": "Arabtom", + "fullName": "Arabtom", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15783063/medium/8b6288723151f869c9e2ab94965af764_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16013441/medium/289ee7bd0a5230cbd3116731fa32efe5_default.png", "preTranslated": 0, - "totalCosts": 300 + "totalCosts": 17 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 300 + "totalCosts": 15 }, "translated": { - "tmMatch": 5, - "default": 295, - "total": 300 + "tmMatch": 0, + "default": 15, + "total": 15 }, "targetTranslated": { - "tmMatch": 4, - "default": 350, - "total": 354 + "tmMatch": 0, + "default": 10, + "total": 10 }, "translatedByMt": { "tmMatch": 0, - "default": 35, - "total": 35 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -2307,47 +2333,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 295, - "total": 300 + "tmMatch": 0, + "default": 15, + "total": 15 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15785489, - "username": "CryptoSmellyCat", - "fullName": "CryptoSmellyCat", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15785489/medium/ac0d7419ba9f16c28c67316b2f399a26_default.png", - "preTranslated": 0, - "totalCosts": 229 - }, - "languages": [ + }, { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 229 + "totalCosts": 2 }, "translated": { - "tmMatch": 120, - "default": 109, - "total": 229 + "tmMatch": 0, + "default": 2, + "total": 2 }, "targetTranslated": { - "tmMatch": 221, - "default": 186, - "total": 407 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -2360,9 +2373,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 120, - "default": 109, - "total": 229 + "tmMatch": 0, + "default": 2, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -2374,38 +2387,38 @@ }, { "user": { - "id": 15844615, - "username": "Darthrocket", - "fullName": "Darthrocket", + "id": 15971987, + "username": "Artur1977", + "fullName": "Artur1977", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15844615/medium/709eb3bcb4112bdd741b0fe9c81b3ffc_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15971987/medium/abb026a5b945241c93bf74745946855f_default.png", "preTranslated": 0, - "totalCosts": 808 + "totalCosts": 3 }, "languages": [ { "language": { - "id": "da", - "name": "Danish", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 808 + "totalCosts": 3 }, "translated": { - "tmMatch": 60, - "default": 748, - "total": 808 + "tmMatch": 0, + "default": 3, + "total": 3 }, "targetTranslated": { - "tmMatch": 59, - "default": 738, - "total": 797 + "tmMatch": 0, + "default": 2, + "total": 2 }, "translatedByMt": { - "tmMatch": 37, - "default": 109, - "total": 146 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -2413,9 +2426,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 60, - "default": 748, - "total": 808 + "tmMatch": 0, + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, @@ -2427,38 +2440,38 @@ }, { "user": { - "id": 15848191, - "username": "Daryna_kh", - "fullName": "Daryna_kh", + "id": 15932515, + "username": "Astronaut828", + "fullName": "Astronaut828", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15848191/medium/8c87c099d4b786cb699d02872806538c_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932515/medium/c41b45c87a237615839b37bfa2118e8b.jpeg", "preTranslated": 0, - "totalCosts": 1343 + "totalCosts": 23189 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "de", + "name": "German", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1343 + "totalCosts": 23189 }, "translated": { - "tmMatch": 6, - "default": 1337, - "total": 1343 + "tmMatch": 142, + "default": 23047, + "total": 23189 }, "targetTranslated": { - "tmMatch": 6, - "default": 1166, - "total": 1172 + "tmMatch": 142, + "default": 23477, + "total": 23619 }, "translatedByMt": { - "tmMatch": 0, - "default": 19, - "total": 19 + "tmMatch": 1, + "default": 13, + "total": 14 }, "approved": { "tmMatch": 0, @@ -2466,9 +2479,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 6, - "default": 1337, - "total": 1343 + "tmMatch": 142, + "default": 23047, + "total": 23189 }, "approvalCosts": { "tmMatch": 0, @@ -2480,33 +2493,33 @@ }, { "user": { - "id": 15845487, - "username": "Demon_19092004", - "fullName": "Demon_19092004", + "id": 15968015, + "username": "BlessingEmah", + "fullName": "BlessingEmah", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15845487/medium/1553da1c4987b77853054230d9e01eed_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968015/medium/196a37a0adafd565e61ebec17a1899b2_default.png", "preTranslated": 0, - "totalCosts": 267 + "totalCosts": 109 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 267 + "totalCosts": 107 }, "translated": { - "tmMatch": 0, - "default": 267, - "total": 267 + "tmMatch": 2, + "default": 105, + "total": 107 }, "targetTranslated": { - "tmMatch": 0, - "default": 254, - "total": 254 + "tmMatch": 4, + "default": 207, + "total": 211 }, "translatedByMt": { "tmMatch": 0, @@ -2519,47 +2532,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 267, - "total": 267 + "tmMatch": 2, + "default": 105, + "total": 107 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15870485, - "username": "Djeffry", - "fullName": "Djeffry", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15870485/medium/20a5e2a2f7adc0ecd79d90c0ee8fb290_default.png", - "preTranslated": 0, - "totalCosts": 7 - }, - "languages": [ + }, { "language": { - "id": "fr", - "name": "French", + "id": "yo", + "name": "Yoruba", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7 + "totalCosts": 2 }, "translated": { - "tmMatch": 0, - "default": 7, - "total": 7 + "tmMatch": 1, + "default": 1, + "total": 2 }, "targetTranslated": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 9, + "default": 2, + "total": 11 }, "translatedByMt": { "tmMatch": 0, @@ -2572,9 +2572,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 7, - "total": 7 + "tmMatch": 1, + "default": 1, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -2586,38 +2586,38 @@ }, { "user": { - "id": 15806285, - "username": "Douala", - "fullName": "Douala", + "id": 15895151, + "username": "ChaosGod", + "fullName": "ChaosGod", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15806285/medium/cc2d8afe74bb2fdb77f261a71da21f7a_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15895151/medium/036c2782ecab9a148c4e15869251276c.png", "preTranslated": 0, - "totalCosts": 565 + "totalCosts": 242 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 565 + "totalCosts": 242 }, "translated": { - "tmMatch": 139, - "default": 426, - "total": 565 + "tmMatch": 0, + "default": 242, + "total": 242 }, "targetTranslated": { - "tmMatch": 156, - "default": 524, - "total": 680 + "tmMatch": 0, + "default": 400, + "total": 400 }, "translatedByMt": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 104, + "total": 104 }, "approved": { "tmMatch": 0, @@ -2625,9 +2625,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 139, - "default": 426, - "total": 565 + "tmMatch": 0, + "default": 242, + "total": 242 }, "approvalCosts": { "tmMatch": 0, @@ -2639,33 +2639,33 @@ }, { "user": { - "id": 14577278, - "username": "ELR0ND", - "fullName": "ELR0ND", + "id": 15946385, + "username": "Coderunner", + "fullName": "Coderunner", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14577278/medium/ca8efaad313159f19c2280aba1ec9143_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946385/medium/0948b127eef2aaefad591616b8192f69_default.png", "preTranslated": 0, - "totalCosts": 85 + "totalCosts": 26 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "ko", + "name": "Korean", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 85 + "totalCosts": 26 }, "translated": { - "tmMatch": 10, - "default": 75, - "total": 85 + "tmMatch": 0, + "default": 26, + "total": 26 }, "targetTranslated": { - "tmMatch": 10, - "default": 74, - "total": 84 + "tmMatch": 0, + "default": 22, + "total": 22 }, "translatedByMt": { "tmMatch": 0, @@ -2678,10 +2678,10 @@ "total": 0 }, "translationCosts": { - "tmMatch": 10, - "default": 75, - "total": 85 - }, + "tmMatch": 0, + "default": 26, + "total": 26 + }, "approvalCosts": { "tmMatch": 0, "default": 0, @@ -2692,33 +2692,33 @@ }, { "user": { - "id": 15663579, - "username": "Enesdursun", - "fullName": "Enesdursun", + "id": 15955625, + "username": "Coiniran", + "fullName": "Coiniran", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15663579/medium/8f4abf2b8cdaff849aeb101a0c4235ae_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955625/medium/cea2317824f592725aac52fcd2eedb26_default.png", "preTranslated": 0, - "totalCosts": 4 + "totalCosts": 29648 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4 + "totalCosts": 29648 }, "translated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 127, + "default": 29521, + "total": 29648 }, "targetTranslated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 153, + "default": 37575, + "total": 37728 }, "translatedByMt": { "tmMatch": 0, @@ -2731,9 +2731,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 127, + "default": 29521, + "total": 29648 }, "approvalCosts": { "tmMatch": 0, @@ -2745,33 +2745,33 @@ }, { "user": { - "id": 15824965, - "username": "Fabs32", - "fullName": "Fabs32", + "id": 15973053, + "username": "CreedL", + "fullName": "CreedL", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824965/medium/901ce154ec84d1636f71fc1f4e996c0e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15973053/medium/813a045786230b7950249b2f0e3defb4_default.png", "preTranslated": 0, - "totalCosts": 28 + "totalCosts": 60 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 28 + "totalCosts": 60 }, "translated": { - "tmMatch": 0, - "default": 28, - "total": 28 + "tmMatch": 5, + "default": 55, + "total": 60 }, "targetTranslated": { - "tmMatch": 0, - "default": 33, - "total": 33 + "tmMatch": 10, + "default": 112, + "total": 122 }, "translatedByMt": { "tmMatch": 0, @@ -2784,9 +2784,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 28, - "total": 28 + "tmMatch": 5, + "default": 55, + "total": 60 }, "approvalCosts": { "tmMatch": 0, @@ -2798,38 +2798,38 @@ }, { "user": { - "id": 15156816, - "username": "Fengfeng0157", - "fullName": "Fengfeng0157", + "id": 15999589, + "username": "Cyb3rAlbe", + "fullName": "Cyb3rAlbe", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15156816/medium/8ce4621e9192a27e8a0ec7e37d9e316e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15999589/medium/ddab3cd8912607254ba7764bb5831504_default.png", "preTranslated": 0, - "totalCosts": 507 + "totalCosts": 4 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "it", + "name": "Italian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 507 + "totalCosts": 4 }, "translated": { "tmMatch": 0, - "default": 507, - "total": 507 + "default": 4, + "total": 4 }, "targetTranslated": { "tmMatch": 0, - "default": 906, - "total": 906 + "default": 7, + "total": 7 }, "translatedByMt": { "tmMatch": 0, - "default": 18, - "total": 18 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -2838,8 +2838,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 507, - "total": 507 + "default": 4, + "total": 4 }, "approvalCosts": { "tmMatch": 0, @@ -2851,38 +2851,38 @@ }, { "user": { - "id": 15892865, - "username": "FizZu", - "fullName": "FizZu", + "id": 15592681, + "username": "Damian100", + "fullName": "Damian100", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15892865/medium/769ead6ff0eb65bca51e00b55bad7613_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15592681/medium/740ba9992676e08c351c302f7a989e3e_default.png", "preTranslated": 0, - "totalCosts": 37 + "totalCosts": 2 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 37 + "totalCosts": 2 }, "translated": { - "tmMatch": 0, - "default": 37, - "total": 37 + "tmMatch": 2, + "default": 0, + "total": 2 }, "targetTranslated": { - "tmMatch": 0, - "default": 46, - "total": 46 + "tmMatch": 2, + "default": 0, + "total": 2 }, "translatedByMt": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -2890,9 +2890,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 37, - "total": 37 + "tmMatch": 2, + "default": 0, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -2904,38 +2904,38 @@ }, { "user": { - "id": 15829153, - "username": "Francoisc23", - "fullName": "Francoisc23", + "id": 15958401, + "username": "Damisss", + "fullName": "Damisss", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15829153/medium/8817724f0106278d9bdcb040991d7842_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15958401/medium/e6bb1e4a156bf77d9f17cb50011699a4_default.png", "preTranslated": 0, - "totalCosts": 15 + "totalCosts": 2 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15 + "totalCosts": 2 }, "translated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 2, + "default": 0, + "total": 2 }, "targetTranslated": { - "tmMatch": 0, - "default": 16, - "total": 16 + "tmMatch": 2, + "default": 0, + "total": 2 }, "translatedByMt": { "tmMatch": 0, - "default": 15, - "total": 15 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -2943,9 +2943,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 2, + "default": 0, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -2957,33 +2957,33 @@ }, { "user": { - "id": 15770059, - "username": "Garvs", - "fullName": "Garvs", + "id": 15976319, + "username": "DavidNottin", + "fullName": "DavidNottin", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770059/medium/52b81f2ff530c14473f18ee7281dae6a_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15976319/medium/715554f1adff535b74e11e026acf1825.jpeg", "preTranslated": 0, - "totalCosts": 155 + "totalCosts": 295 }, "languages": [ { "language": { - "id": "ha", - "name": "Hausa", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 128 + "totalCosts": 295 }, "translated": { - "tmMatch": 0, - "default": 128, - "total": 128 + "tmMatch": 19, + "default": 276, + "total": 295 }, "targetTranslated": { - "tmMatch": 0, - "default": 142, - "total": 142 + "tmMatch": 33, + "default": 361, + "total": 394 }, "translatedByMt": { "tmMatch": 0, @@ -2996,34 +2996,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 128, - "total": 128 + "tmMatch": 19, + "default": 276, + "total": 295 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15914021, + "username": "Ddoulia", + "fullName": "Ddoulia", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914021/medium/13855b7697a0cde0c03d933febee047d_default.png", + "preTranslated": 0, + "totalCosts": 436 + }, + "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 27 + "totalCosts": 436 }, "translated": { "tmMatch": 0, - "default": 27, - "total": 27 + "default": 436, + "total": 436 }, "targetTranslated": { "tmMatch": 0, - "default": 32, - "total": 32 + "default": 790, + "total": 790 }, "translatedByMt": { "tmMatch": 0, @@ -3037,8 +3050,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 27, - "total": 27 + "default": 436, + "total": 436 }, "approvalCosts": { "tmMatch": 0, @@ -3050,33 +3063,33 @@ }, { "user": { - "id": 13461670, - "username": "GiorgioHerbie", - "fullName": "GiorgioHerbie", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png", + "id": 15956221, + "username": "DerrickTseng", + "fullName": "DerrickTseng", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956221/medium/e08e7d4e13f3e512f900aff7fddcaa4c_default.png", "preTranslated": 0, - "totalCosts": 81029 + "totalCosts": 43 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", - "userRole": "Translator, Proofreader", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 81029 + "totalCosts": 43 }, "translated": { - "tmMatch": 5793, - "default": 75236, - "total": 81029 + "tmMatch": 0, + "default": 43, + "total": 43 }, "targetTranslated": { - "tmMatch": 6165, - "default": 79890, - "total": 86055 + "tmMatch": 0, + "default": 75, + "total": 75 }, "translatedByMt": { "tmMatch": 0, @@ -3086,12 +3099,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 24961 + "total": 0 }, "translationCosts": { - "tmMatch": 5793, - "default": 75236, - "total": 81029 + "tmMatch": 0, + "default": 43, + "total": 43 }, "approvalCosts": { "tmMatch": 0, @@ -3103,33 +3116,33 @@ }, { "user": { - "id": 15833155, - "username": "Goffery", - "fullName": "Goffery", + "id": 15912247, + "username": "Domilora", + "fullName": "Domilora", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15833155/medium/e50ec0b48298e728a15010bba21e67e3.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912247/medium/aecfde54e2d66de9f187608d262c35a8_default.png", "preTranslated": 0, - "totalCosts": 9 + "totalCosts": 97 }, "languages": [ { "language": { - "id": "my", - "name": "Burmese", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 9 + "totalCosts": 97 }, "translated": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 97, + "total": 97 }, "targetTranslated": { "tmMatch": 0, - "default": 144, - "total": 144 + "default": 179, + "total": 179 }, "translatedByMt": { "tmMatch": 0, @@ -3143,8 +3156,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 97, + "total": 97 }, "approvalCosts": { "tmMatch": 0, @@ -3156,33 +3169,33 @@ }, { "user": { - "id": 15813015, - "username": "Gokulr", - "fullName": "Gokulr", + "id": 15962387, + "username": "Drt25", + "fullName": "Drt25", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15813015/medium/26033193605c4572ab47419bf2625332_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962387/medium/9484ea08d19c9f75136516dad89e16f2_default.png", "preTranslated": 0, - "totalCosts": 25 + "totalCosts": 59 }, "languages": [ { "language": { - "id": "ta", - "name": "Tamil", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 25 + "totalCosts": 59 }, "translated": { - "tmMatch": 8, - "default": 17, - "total": 25 + "tmMatch": 59, + "default": 0, + "total": 59 }, "targetTranslated": { - "tmMatch": 18, - "default": 29, - "total": 47 + "tmMatch": 61, + "default": 0, + "total": 61 }, "translatedByMt": { "tmMatch": 0, @@ -3195,9 +3208,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 8, - "default": 17, - "total": 25 + "tmMatch": 59, + "default": 0, + "total": 59 }, "approvalCosts": { "tmMatch": 0, @@ -3209,33 +3222,33 @@ }, { "user": { - "id": 15823679, - "username": "Hroki1998", - "fullName": "Hroki1998", + "id": 15962145, + "username": "Ecla-", + "fullName": "Ecla-", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15823679/medium/7d672e63a9a5a07fc984567d54dd039c_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962145/medium/e12db5a3b41f421ccb8f3f54f71681da_default.png", "preTranslated": 0, - "totalCosts": 53 + "totalCosts": 21 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", + "id": "be", + "name": "Belarusian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 53 + "totalCosts": 21 }, "translated": { - "tmMatch": 2, - "default": 51, - "total": 53 + "tmMatch": 0, + "default": 21, + "total": 21 }, "targetTranslated": { - "tmMatch": 11, - "default": 146, - "total": 157 + "tmMatch": 0, + "default": 19, + "total": 19 }, "translatedByMt": { "tmMatch": 0, @@ -3248,9 +3261,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 51, - "total": 53 + "tmMatch": 0, + "default": 21, + "total": 21 }, "approvalCosts": { "tmMatch": 0, @@ -3262,78 +3275,38 @@ }, { "user": { - "id": 15442454, - "username": "Im-SpiETH", - "fullName": "Im-SpiETH", + "id": 15952201, + "username": "Eniale", + "fullName": "Eniale", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15442454/medium/860696ab89262fe98a0b888882d2b2da_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952201/medium/70ddfc80063bd4b296bc3997bd5fd808_default.png", "preTranslated": 0, - "totalCosts": 19554 + "totalCosts": 1280 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 13454 + "totalCosts": 1280 }, "translated": { - "tmMatch": 19, - "default": 13435, - "total": 13454 + "tmMatch": 2, + "default": 1278, + "total": 1280 }, "targetTranslated": { - "tmMatch": 25, - "default": 15787, - "total": 15812 + "tmMatch": 4, + "default": 2144, + "total": 2148 }, "translatedByMt": { - "tmMatch": 6, - "default": 11960, - "total": 11966 - }, - "approved": { - "tmMatch": 0, - "default": 0, - "total": 0 - }, - "translationCosts": { - "tmMatch": 19, - "default": 13435, - "total": 13454 - }, - "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 - } - }, - { - "language": { - "id": "ko", - "name": "Korean", - "userRole": "Translator", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 6100 - }, - "translated": { - "tmMatch": 54, - "default": 6046, - "total": 6100 - }, - "targetTranslated": { - "tmMatch": 41, - "default": 4648, - "total": 4689 - }, - "translatedByMt": { - "tmMatch": 0, - "default": 3, - "total": 3 }, "approved": { "tmMatch": 0, @@ -3341,9 +3314,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 54, - "default": 6046, - "total": 6100 + "tmMatch": 2, + "default": 1278, + "total": 1280 }, "approvalCosts": { "tmMatch": 0, @@ -3355,38 +3328,38 @@ }, { "user": { - "id": 15874711, - "username": "JHON38", - "fullName": "JHON38", + "id": 15908947, + "username": "Ericforever", + "fullName": "Ericforever", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15874711/medium/aa1137d9b988c12e00d7510a93e05dd8_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908947/medium/26fd141b9d1d7c84e9727822c1de3087_default.png", "preTranslated": 0, - "totalCosts": 3369 + "totalCosts": 47 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3369 + "totalCosts": 47 }, "translated": { - "tmMatch": 18, - "default": 3351, - "total": 3369 + "tmMatch": 0, + "default": 47, + "total": 47 }, "targetTranslated": { - "tmMatch": 19, - "default": 3897, - "total": 3916 + "tmMatch": 0, + "default": 59, + "total": 59 }, "translatedByMt": { - "tmMatch": 7, - "default": 3166, - "total": 3173 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -3394,9 +3367,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 18, - "default": 3351, - "total": 3369 + "tmMatch": 0, + "default": 47, + "total": 47 }, "approvalCosts": { "tmMatch": 0, @@ -3408,38 +3381,38 @@ }, { "user": { - "id": 13984249, - "username": "K0RR", - "fullName": "K0RR", + "id": 14300370, + "username": "Exness_GL_KM_Trans", + "fullName": "Exness_GL_KM_Trans", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13984249/medium/228e06d62686939bca9ea39233a4806d_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14300370/medium/2d03fbcbdc373f79dbe722e5a31ab235_default.png", "preTranslated": 0, - "totalCosts": 14 + "totalCosts": 1000 }, "languages": [ { "language": { - "id": "pl", - "name": "Polish", + "id": "km", + "name": "Khmer", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 14 + "totalCosts": 1000 }, "translated": { - "tmMatch": 0, - "default": 14, - "total": 14 + "tmMatch": 8, + "default": 992, + "total": 1000 }, "targetTranslated": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 12, + "default": 1231, + "total": 1243 }, "translatedByMt": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -3447,9 +3420,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 14, - "total": 14 + "tmMatch": 8, + "default": 992, + "total": 1000 }, "approvalCosts": { "tmMatch": 0, @@ -3461,13 +3434,13 @@ }, { "user": { - "id": 15837531, - "username": "KK.CS", - "fullName": "KK.CS", + "id": 15156816, + "username": "Fengfeng0157", + "fullName": "Fengfeng0157", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837531/medium/9e87f5dd936b94262f562adfe8a943e7_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15156816/medium/8ce4621e9192a27e8a0ec7e37d9e316e_default.png", "preTranslated": 0, - "totalCosts": 368 + "totalCosts": 1809 }, "languages": [ { @@ -3477,17 +3450,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 368 + "totalCosts": 1809 }, "translated": { - "tmMatch": 0, - "default": 368, - "total": 368 + "tmMatch": 3, + "default": 1806, + "total": 1809 }, "targetTranslated": { - "tmMatch": 0, - "default": 640, - "total": 640 + "tmMatch": 5, + "default": 3074, + "total": 3079 }, "translatedByMt": { "tmMatch": 0, @@ -3500,9 +3473,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 368, - "total": 368 + "tmMatch": 3, + "default": 1806, + "total": 1809 }, "approvalCosts": { "tmMatch": 0, @@ -3514,38 +3487,38 @@ }, { "user": { - "id": 15866765, - "username": "Kaoser", - "fullName": "Kaoser", + "id": 15266690, + "username": "Fuliggine", + "fullName": "Fuliggine", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15866765/medium/56426ef526c64e65691c50f1a3eae9b7_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15266690/medium/beb929d96ab06718fce198051fdffaae.jpg", "preTranslated": 0, - "totalCosts": 48 + "totalCosts": 12497 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "it", + "name": "Italian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 48 + "totalCosts": 12497 }, "translated": { - "tmMatch": 0, - "default": 48, - "total": 48 + "tmMatch": 100, + "default": 12397, + "total": 12497 }, "targetTranslated": { - "tmMatch": 0, - "default": 40, - "total": 40 + "tmMatch": 107, + "default": 13321, + "total": 13428 }, "translatedByMt": { "tmMatch": 0, - "default": 8, - "total": 8 + "default": 2, + "total": 2 }, "approved": { "tmMatch": 0, @@ -3553,9 +3526,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 48, - "total": 48 + "tmMatch": 100, + "default": 12397, + "total": 12497 }, "approvalCosts": { "tmMatch": 0, @@ -3567,33 +3540,33 @@ }, { "user": { - "id": 15443092, - "username": "Keerthi89", - "fullName": "Keerthi89", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15443092/medium/0d25743f9044907b39b29a1496b8894a_default.png", + "id": 13461670, + "username": "GiorgioHerbie", + "fullName": "GiorgioHerbie", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13461670/medium/9093f2d7047615a270b4c00bc2abd595_default.png", "preTranslated": 0, - "totalCosts": 3 + "totalCosts": 6241 }, "languages": [ { "language": { - "id": "ta", - "name": "Tamil", - "userRole": "Translator", + "id": "it", + "name": "Italian", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3 + "totalCosts": 6241 }, "translated": { - "tmMatch": 0, - "default": 3, - "total": 3 + "tmMatch": 247, + "default": 5994, + "total": 6241 }, "targetTranslated": { - "tmMatch": 0, - "default": 16, - "total": 16 + "tmMatch": 267, + "default": 6399, + "total": 6666 }, "translatedByMt": { "tmMatch": 0, @@ -3603,12 +3576,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 24 }, "translationCosts": { - "tmMatch": 0, - "default": 3, - "total": 3 + "tmMatch": 247, + "default": 5994, + "total": 6241 }, "approvalCosts": { "tmMatch": 0, @@ -3620,37 +3593,37 @@ }, { "user": { - "id": 15869029, - "username": "Kenny0521", - "fullName": "Kenny0521", + "id": 15967065, + "username": "Gokulvinayak", + "fullName": "Gokulvinayak", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15869029/medium/4147e5810f6973c3dd463e9402e7b69f_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967065/medium/281908a6904091e81b3a34a802f97ce0_default.png", "preTranslated": 0, - "totalCosts": 111 + "totalCosts": 681 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "ml-IN", + "name": "Malayalam", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 111 + "totalCosts": 681 }, "translated": { - "tmMatch": 2, - "default": 109, - "total": 111 + "tmMatch": 16, + "default": 665, + "total": 681 }, "targetTranslated": { - "tmMatch": 3, - "default": 181, - "total": 184 + "tmMatch": 31, + "default": 1188, + "total": 1219 }, "translatedByMt": { - "tmMatch": 0, - "default": 2, + "tmMatch": 2, + "default": 0, "total": 2 }, "approved": { @@ -3659,9 +3632,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 109, - "total": 111 + "tmMatch": 16, + "default": 665, + "total": 681 }, "approvalCosts": { "tmMatch": 0, @@ -3673,33 +3646,33 @@ }, { "user": { - "id": 15895803, - "username": "KristiKris", - "fullName": "KristiKris", + "id": 15927645, + "username": "HHHH123435", + "fullName": "HHHH123435", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15895803/medium/96636c4279311f716614648a85940e81_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927645/medium/a11631fe44db308999c8ca5b6f620eea_default.png", "preTranslated": 0, - "totalCosts": 38 + "totalCosts": 92 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 38 + "totalCosts": 92 }, "translated": { "tmMatch": 0, - "default": 38, - "total": 38 + "default": 92, + "total": 92 }, "targetTranslated": { "tmMatch": 0, - "default": 28, - "total": 28 + "default": 155, + "total": 155 }, "translatedByMt": { "tmMatch": 0, @@ -3713,8 +3686,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 38, - "total": 38 + "default": 92, + "total": 92 }, "approvalCosts": { "tmMatch": 0, @@ -3726,38 +3699,38 @@ }, { "user": { - "id": 15794671, - "username": "LenaCryptoPro", - "fullName": "LenaCryptoPro", + "id": 15968155, + "username": "Hamkad28", + "fullName": "Hamkad28", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15794671/medium/3c4f9620874e85cef648ef01861a70c6_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968155/medium/b7abce11e0d0a2b2a0038f03cbc95c31_default.png", "preTranslated": 0, - "totalCosts": 61 + "totalCosts": 2347 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "yo", + "name": "Yoruba", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 61 + "totalCosts": 2347 }, "translated": { - "tmMatch": 27, - "default": 34, - "total": 61 + "tmMatch": 7, + "default": 2340, + "total": 2347 }, "targetTranslated": { - "tmMatch": 31, - "default": 37, - "total": 68 + "tmMatch": 10, + "default": 2898, + "total": 2908 }, "translatedByMt": { - "tmMatch": 6, - "default": 3, - "total": 9 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -3765,9 +3738,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 27, - "default": 34, - "total": 61 + "tmMatch": 7, + "default": 2340, + "total": 2347 }, "approvalCosts": { "tmMatch": 0, @@ -3779,33 +3752,33 @@ }, { "user": { - "id": 15141044, - "username": "LorenzoLicari", - "fullName": "LorenzoLicari", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15141044/medium/a099d3678baa4f76c2447ede1e50a37d_default.png", + "id": 15955263, + "username": "Heyhei", + "fullName": "Heyhei", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955263/medium/51ba4f008f63f1b37ac900269bcaccc0_default.png", "preTranslated": 0, - "totalCosts": 0 + "totalCosts": 569 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", - "userRole": "Translator, Proofreader", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 0 + "totalCosts": 569 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 114, + "default": 455, + "total": 569 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 223, + "default": 834, + "total": 1057 }, "translatedByMt": { "tmMatch": 0, @@ -3815,12 +3788,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 268 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 114, + "default": 455, + "total": 569 }, "approvalCosts": { "tmMatch": 0, @@ -3832,33 +3805,33 @@ }, { "user": { - "id": 14886772, - "username": "LuisNunes", - "fullName": "LuisNunes", + "id": 15992561, + "username": "Hongyan_Lin", + "fullName": "Hongyan_Lin", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14886772/medium/3b38a07492591b2dd1750d508d083ec7_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992561/medium/b10820bf840fc1f866510c5e1cb474ba_default.png", "preTranslated": 0, - "totalCosts": 33 + "totalCosts": 49 }, "languages": [ { "language": { - "id": "pt-PT", - "name": "Portuguese", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 33 + "totalCosts": 49 }, "translated": { - "tmMatch": 33, - "default": 0, - "total": 33 + "tmMatch": 0, + "default": 49, + "total": 49 }, "targetTranslated": { - "tmMatch": 35, - "default": 0, - "total": 35 + "tmMatch": 0, + "default": 86, + "total": 86 }, "translatedByMt": { "tmMatch": 0, @@ -3871,9 +3844,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 33, - "default": 0, - "total": 33 + "tmMatch": 0, + "default": 49, + "total": 49 }, "approvalCosts": { "tmMatch": 0, @@ -3885,38 +3858,38 @@ }, { "user": { - "id": 15816407, - "username": "MaKOBA", - "fullName": "MaKOBA", + "id": 15742455, + "username": "Ibasamushka", + "fullName": "Ibasamushka", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15816407/medium/2ff9249b122f6baedad4ebb9f1572c26_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15742455/medium/c955da1d1694ef9864ebf2cf4bfe2831_default.png", "preTranslated": 0, - "totalCosts": 2086 + "totalCosts": 26 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2086 + "totalCosts": 26 }, "translated": { - "tmMatch": 19, - "default": 2067, - "total": 2086 + "tmMatch": 0, + "default": 26, + "total": 26 }, "targetTranslated": { - "tmMatch": 38, - "default": 5524, - "total": 5562 + "tmMatch": 0, + "default": 27, + "total": 27 }, "translatedByMt": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -3924,9 +3897,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 19, - "default": 2067, - "total": 2086 + "tmMatch": 0, + "default": 26, + "total": 26 }, "approvalCosts": { "tmMatch": 0, @@ -3938,38 +3911,38 @@ }, { "user": { - "id": 15490162, - "username": "Mathewvizc7", - "fullName": "Mathewvizc7", + "id": 15967601, + "username": "Itungbenga", + "fullName": "Itungbenga", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15490162/medium/ee6f672ba75de903b8f7bffb3be4773d_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967601/medium/32f675299bf73e2baee8c785c6965848_default.png", "preTranslated": 0, - "totalCosts": 14 + "totalCosts": 427 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 14 + "totalCosts": 427 }, "translated": { - "tmMatch": 4, - "default": 10, - "total": 14 + "tmMatch": 0, + "default": 427, + "total": 427 }, "targetTranslated": { - "tmMatch": 4, - "default": 10, - "total": 14 + "tmMatch": 0, + "default": 446, + "total": 446 }, "translatedByMt": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -3977,9 +3950,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 10, - "total": 14 + "tmMatch": 0, + "default": 427, + "total": 427 }, "approvalCosts": { "tmMatch": 0, @@ -3991,38 +3964,38 @@ }, { "user": { - "id": 15774301, - "username": "Mohdizlan", - "fullName": "Mohdizlan", + "id": 15992537, + "username": "JXP", + "fullName": "JXP", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15774301/medium/ce907107efbd69db7fc299448bd4f091_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992537/medium/3774a54dc86212554420221ded24447f_default.png", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 4 }, "languages": [ { "language": { - "id": "ms", - "name": "Malay", + "id": "ja", + "name": "Japanese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 4 }, "translated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 0, + "default": 4, + "total": 4 }, "targetTranslated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 0, + "default": 12, + "total": 12 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "approved": { "tmMatch": 0, @@ -4030,9 +4003,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 0, + "default": 4, + "total": 4 }, "approvalCosts": { "tmMatch": 0, @@ -4044,48 +4017,48 @@ }, { "user": { - "id": 15240262, - "username": "Moinier", - "fullName": "Moinier", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15240262/medium/8878a45f57e62f22e31686cc9d3a27f1_default.png", + "id": 15946997, + "username": "JayYu", + "fullName": "JayYu", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946997/medium/4a7a81b173194aae53369a16f7ef405e_default.png", "preTranslated": 0, - "totalCosts": 20638 + "totalCosts": 295 }, "languages": [ { "language": { - "id": "fr", - "name": "French", - "userRole": "Proofreader", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 20638 + "totalCosts": 295 }, "translated": { - "tmMatch": 2579, - "default": 18059, - "total": 20638 + "tmMatch": 6, + "default": 289, + "total": 295 }, "targetTranslated": { - "tmMatch": 2997, - "default": 22041, - "total": 25038 + "tmMatch": 10, + "default": 513, + "total": 523 }, "translatedByMt": { - "tmMatch": 41, - "default": 237, - "total": 278 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 56194 + "total": 0 }, "translationCosts": { - "tmMatch": 2579, - "default": 18059, - "total": 20638 + "tmMatch": 6, + "default": 289, + "total": 295 }, "approvalCosts": { "tmMatch": 0, @@ -4097,38 +4070,38 @@ }, { "user": { - "id": 15896883, - "username": "Mrantojo", - "fullName": "Mrantojo", + "id": 15344526, + "username": "Joanmacat", + "fullName": "Joanmacat", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15896883/medium/1f06aa19fb78e091307e5de0d066c43c_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15344526/medium/9c82a079035424edd8b43ca59a8dcb3f.jpg", "preTranslated": 0, - "totalCosts": 196 + "totalCosts": 2051 }, "languages": [ { "language": { - "id": "af", - "name": "Afrikaans", + "id": "ca", + "name": "Catalan", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 196 + "totalCosts": 2051 }, "translated": { - "tmMatch": 0, - "default": 196, - "total": 196 + "tmMatch": 19, + "default": 2032, + "total": 2051 }, "targetTranslated": { - "tmMatch": 0, - "default": 228, - "total": 228 + "tmMatch": 20, + "default": 2321, + "total": 2341 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 13, "default": 0, - "total": 0 + "total": 13 }, "approved": { "tmMatch": 0, @@ -4136,9 +4109,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 196, - "total": 196 + "tmMatch": 19, + "default": 2032, + "total": 2051 }, "approvalCosts": { "tmMatch": 0, @@ -4150,33 +4123,33 @@ }, { "user": { - "id": 15776145, - "username": "Mrd2499", - "fullName": "Mrd2499", + "id": 15662523, + "username": "Jokowdd", + "fullName": "Jokowdd", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15776145/medium/33120d9b5d3c0431b3623932830c8aaf_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15662523/medium/4039d75a804e9c859bfb21d965e9bcb9_default.png", "preTranslated": 0, - "totalCosts": 19 + "totalCosts": 8031 }, "languages": [ { "language": { - "id": "th", - "name": "Thai", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 19 + "totalCosts": 8031 }, "translated": { - "tmMatch": 0, - "default": 19, - "total": 19 + "tmMatch": 30, + "default": 8001, + "total": 8031 }, "targetTranslated": { - "tmMatch": 0, - "default": 19, - "total": 19 + "tmMatch": 31, + "default": 7460, + "total": 7491 }, "translatedByMt": { "tmMatch": 0, @@ -4189,9 +4162,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 19, - "total": 19 + "tmMatch": 30, + "default": 8001, + "total": 8031 }, "approvalCosts": { "tmMatch": 0, @@ -4203,33 +4176,33 @@ }, { "user": { - "id": 14559918, - "username": "Muzaffer015", - "fullName": "Muzaffer015", + "id": 15714091, + "username": "Karym_GG", + "fullName": "Karym_GG", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14559918/medium/72674bda7c61d3f06e65cc4d140e8af5_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15714091/medium/69afa2fb791e1be17640c54018cb4e2e_default.png", "preTranslated": 0, - "totalCosts": 30 + "totalCosts": 494 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 30 + "totalCosts": 494 }, "translated": { - "tmMatch": 3, - "default": 27, - "total": 30 + "tmMatch": 0, + "default": 494, + "total": 494 }, "targetTranslated": { - "tmMatch": 3, - "default": 21, - "total": 24 + "tmMatch": 0, + "default": 506, + "total": 506 }, "translatedByMt": { "tmMatch": 0, @@ -4242,9 +4215,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 27, - "total": 30 + "tmMatch": 0, + "default": 494, + "total": 494 }, "approvalCosts": { "tmMatch": 0, @@ -4256,33 +4229,33 @@ }, { "user": { - "id": 15828437, - "username": "Omy324", - "fullName": "Omy324", + "id": 15443092, + "username": "Keerthi89", + "fullName": "Keerthi89", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15828437/medium/e39d9b2cfa9352a5d8dafbc871fce1db_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15443092/medium/0d25743f9044907b39b29a1496b8894a_default.png", "preTranslated": 0, - "totalCosts": 12 + "totalCosts": 248 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "ta", + "name": "Tamil", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12 + "totalCosts": 248 }, "translated": { "tmMatch": 0, - "default": 12, - "total": 12 + "default": 248, + "total": 248 }, "targetTranslated": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 455, + "total": 455 }, "translatedByMt": { "tmMatch": 0, @@ -4296,8 +4269,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 12, - "total": 12 + "default": 248, + "total": 248 }, "approvalCosts": { "tmMatch": 0, @@ -4309,38 +4282,38 @@ }, { "user": { - "id": 15843259, - "username": "Orest12", - "fullName": "Orest12", + "id": 15978923, + "username": "Kras296", + "fullName": "Kras296", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843259/medium/9af2323b44c483a41430a5ba78af2cd4.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15978923/medium/4cca07eeabcb2ba32a55e66b0bbcec7c.jpg", "preTranslated": 0, - "totalCosts": 186 + "totalCosts": 64 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 186 + "totalCosts": 64 }, "translated": { - "tmMatch": 7, - "default": 179, - "total": 186 + "tmMatch": 0, + "default": 64, + "total": 64 }, "targetTranslated": { - "tmMatch": 7, - "default": 161, - "total": 168 + "tmMatch": 0, + "default": 78, + "total": 78 }, "translatedByMt": { - "tmMatch": 7, - "default": 179, - "total": 186 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -4348,9 +4321,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 179, - "total": 186 + "tmMatch": 0, + "default": 64, + "total": 64 }, "approvalCosts": { "tmMatch": 0, @@ -4362,38 +4335,38 @@ }, { "user": { - "id": 14037204, - "username": "Pa2squale", - "fullName": "Pa2squale", + "id": 15967369, + "username": "Krishna2992", + "fullName": "Krishna2992", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14037204/medium/b25eb000cfd996efc25881694d8a9769_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967369/medium/c6c620bf9be7a72e246c55971f82fbac_default.png", "preTranslated": 0, - "totalCosts": 179 + "totalCosts": 3310 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "hi", + "name": "Hindi", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 179 + "totalCosts": 3310 }, "translated": { - "tmMatch": 4, - "default": 175, - "total": 179 + "tmMatch": 3, + "default": 3307, + "total": 3310 }, "targetTranslated": { - "tmMatch": 4, - "default": 199, - "total": 203 + "tmMatch": 3, + "default": 5690, + "total": 5693 }, "translatedByMt": { - "tmMatch": 4, - "default": 14, - "total": 18 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -4401,9 +4374,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 175, - "total": 179 + "tmMatch": 3, + "default": 3307, + "total": 3310 }, "approvalCosts": { "tmMatch": 0, @@ -4415,33 +4388,33 @@ }, { "user": { - "id": 15688407, - "username": "Pastrymend", - "fullName": "Pastrymend", + "id": 16009153, + "username": "Kuroel", + "fullName": "Kuroel", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15688407/medium/d9dd6891978b373502758e0907c22ff4_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16009153/medium/6a4910f3a51034bffd17a5102774f43c_default.png", "preTranslated": 0, - "totalCosts": 64 + "totalCosts": 9 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", + "id": "pt-PT", + "name": "Portuguese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 64 + "totalCosts": 9 }, "translated": { "tmMatch": 0, - "default": 64, - "total": 64 + "default": 9, + "total": 9 }, "targetTranslated": { "tmMatch": 0, - "default": 75, - "total": 75 + "default": 10, + "total": 10 }, "translatedByMt": { "tmMatch": 0, @@ -4455,8 +4428,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 64, - "total": 64 + "default": 9, + "total": 9 }, "approvalCosts": { "tmMatch": 0, @@ -4468,33 +4441,33 @@ }, { "user": { - "id": 15887969, - "username": "PlatinumEagle", - "fullName": "PlatinumEagle", + "id": 15965405, + "username": "LaraWeb3", + "fullName": "LaraWeb3", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15887969/medium/2583c648b432375a202fd5741f287b8d_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965405/medium/8eeddd3c27c380aeaca8bf3c9ce55c5f_default.png", "preTranslated": 0, - "totalCosts": 15 + "totalCosts": 66 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15 + "totalCosts": 66 }, "translated": { "tmMatch": 0, - "default": 15, - "total": 15 + "default": 66, + "total": 66 }, "targetTranslated": { "tmMatch": 0, - "default": 20, - "total": 20 + "default": 118, + "total": 118 }, "translatedByMt": { "tmMatch": 0, @@ -4508,8 +4481,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 15, - "total": 15 + "default": 66, + "total": 66 }, "approvalCosts": { "tmMatch": 0, @@ -4521,33 +4494,33 @@ }, { "user": { - "id": 15809929, - "username": "Plischiii", - "fullName": "Plischiii", + "id": 15965949, + "username": "Lazaro0809", + "fullName": "Lazaro0809", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15809929/medium/fb86fae28503855e8199b7ce2d064f71_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965949/medium/9020c1f4fa4c1fa572cb78f2ee3a3257_default.png", "preTranslated": 0, - "totalCosts": 31 + "totalCosts": 11 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 31 + "totalCosts": 11 }, "translated": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 11, + "default": 0, + "total": 11 }, "targetTranslated": { - "tmMatch": 0, - "default": 22, - "total": 22 + "tmMatch": 23, + "default": 0, + "total": 23 }, "translatedByMt": { "tmMatch": 0, @@ -4560,9 +4533,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 11, + "default": 0, + "total": 11 }, "approvalCosts": { "tmMatch": 0, @@ -4574,38 +4547,38 @@ }, { "user": { - "id": 15860799, - "username": "Qupi", - "fullName": "Qupi", + "id": 15968137, + "username": "Leogold01", + "fullName": "Leogold01", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15860799/medium/c296454de1f72e406e181e950413a424_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968137/medium/14334f5b9543e5be30e0b6e04fcc793e_default.png", "preTranslated": 0, - "totalCosts": 659 + "totalCosts": 1 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "yo", + "name": "Yoruba", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 659 + "totalCosts": 1 }, "translated": { - "tmMatch": 4, - "default": 655, - "total": 659 + "tmMatch": 0, + "default": 1, + "total": 1 }, "targetTranslated": { - "tmMatch": 4, - "default": 568, - "total": 572 + "tmMatch": 0, + "default": 1, + "total": 1 }, "translatedByMt": { "tmMatch": 0, - "default": 41, - "total": 41 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -4613,9 +4586,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 655, - "total": 659 + "tmMatch": 0, + "default": 1, + "total": 1 }, "approvalCosts": { "tmMatch": 0, @@ -4627,38 +4600,38 @@ }, { "user": { - "id": 15815491, - "username": "Rashmi810", - "fullName": "Rashmi810", + "id": 15899559, + "username": "Lgallardo", + "fullName": "Lgallardo", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15815491/medium/5f57448489ce64ee6285ac6e35f761db_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15899559/medium/ecdf8f03a04339dbb187185df6b7fce4_default.png", "preTranslated": 0, - "totalCosts": 86 + "totalCosts": 157 }, "languages": [ { "language": { - "id": "hi", - "name": "Hindi", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 86 + "totalCosts": 157 }, "translated": { - "tmMatch": 25, - "default": 61, - "total": 86 + "tmMatch": 0, + "default": 157, + "total": 157 }, "targetTranslated": { - "tmMatch": 50, - "default": 100, - "total": 150 + "tmMatch": 0, + "default": 185, + "total": 185 }, "translatedByMt": { - "tmMatch": 4, - "default": 0, - "total": 4 + "tmMatch": 0, + "default": 152, + "total": 152 }, "approved": { "tmMatch": 0, @@ -4666,9 +4639,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 25, - "default": 61, - "total": 86 + "tmMatch": 0, + "default": 157, + "total": 157 }, "approvalCosts": { "tmMatch": 0, @@ -4680,38 +4653,38 @@ }, { "user": { - "id": 15768057, - "username": "Redeorts", - "fullName": "Redeorts", + "id": 15924353, + "username": "Li_Rui", + "fullName": "Li_Rui", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15768057/medium/47d029079410b9b910444067d19ea058_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15924353/medium/24be33af9672c1afbe79146c7acda3a0_default.png", "preTranslated": 0, - "totalCosts": 714 + "totalCosts": 2660 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 714 + "totalCosts": 2660 }, "translated": { - "tmMatch": 57, - "default": 657, - "total": 714 + "tmMatch": 0, + "default": 2660, + "total": 2660 }, "targetTranslated": { - "tmMatch": 68, - "default": 803, - "total": 871 + "tmMatch": 0, + "default": 4640, + "total": 4640 }, "translatedByMt": { - "tmMatch": 43, - "default": 280, - "total": 323 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -4719,9 +4692,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 57, - "default": 657, - "total": 714 + "tmMatch": 0, + "default": 2660, + "total": 2660 }, "approvalCosts": { "tmMatch": 0, @@ -4733,38 +4706,38 @@ }, { "user": { - "id": 15376854, - "username": "RenanDeveloper", - "fullName": "RenanDeveloper", + "id": 15993271, + "username": "Lilian_chou", + "fullName": "Lilian_chou", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993271/medium/fadd2314e88da12bf8895fdb3ac65062_default.png", "preTranslated": 0, - "totalCosts": 655 + "totalCosts": 24 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 655 + "totalCosts": 24 }, "translated": { "tmMatch": 0, - "default": 655, - "total": 655 + "default": 24, + "total": 24 }, "targetTranslated": { "tmMatch": 0, - "default": 718, - "total": 718 + "default": 41, + "total": 41 }, "translatedByMt": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -4773,8 +4746,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 655, - "total": 655 + "default": 24, + "total": 24 }, "approvalCosts": { "tmMatch": 0, @@ -4786,38 +4759,38 @@ }, { "user": { - "id": 15864595, - "username": "RichCuva", - "fullName": "RichCuva", + "id": 15904987, + "username": "LiviaLIU", + "fullName": "LiviaLIU", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15864595/medium/9901e0dba4ead65619b8b1b9a591caf7_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15904987/medium/e244ed0a7efcd919389d457f8bea4225_default.png", "preTranslated": 0, - "totalCosts": 708 + "totalCosts": 105 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 708 + "totalCosts": 105 }, "translated": { "tmMatch": 0, - "default": 708, - "total": 708 + "default": 105, + "total": 105 }, "targetTranslated": { "tmMatch": 0, - "default": 708, - "total": 708 + "default": 175, + "total": 175 }, "translatedByMt": { "tmMatch": 0, - "default": 18, - "total": 18 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -4826,8 +4799,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 708, - "total": 708 + "default": 105, + "total": 105 }, "approvalCosts": { "tmMatch": 0, @@ -4839,38 +4812,38 @@ }, { "user": { - "id": 15797367, - "username": "RichardBP", - "fullName": "RichardBP", + "id": 15940649, + "username": "Lohithkotni", + "fullName": "Lohithkotni", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15797367/medium/362de1e1381b26a44885c7136579edbe_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15940649/medium/8528f19ca43f8bab29f5994953fbaf27_default.png", "preTranslated": 0, - "totalCosts": 187 + "totalCosts": 3556 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "te", + "name": "Telugu", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 187 + "totalCosts": 3556 }, "translated": { - "tmMatch": 17, - "default": 170, - "total": 187 + "tmMatch": 63, + "default": 3493, + "total": 3556 }, "targetTranslated": { - "tmMatch": 32, - "default": 272, - "total": 304 + "tmMatch": 87, + "default": 4378, + "total": 4465 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 2, + "default": 1, + "total": 3 }, "approved": { "tmMatch": 0, @@ -4878,9 +4851,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 17, - "default": 170, - "total": 187 + "tmMatch": 63, + "default": 3493, + "total": 3556 }, "approvalCosts": { "tmMatch": 0, @@ -4892,33 +4865,33 @@ }, { "user": { - "id": 15720395, - "username": "Sahriyar", - "fullName": "Sahriyar", + "id": 13982131, + "username": "Lucille_L", + "fullName": "Lucille_L", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15720395/medium/74b785ede323ee9717a787fa936fc488_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13982131/medium/fcb14a4799ed95b43ae3eb5a78747591_default.png", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 766 }, "languages": [ { "language": { - "id": "az", - "name": "Azerbaijani", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 766 }, "translated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 1, + "default": 765, + "total": 766 }, "targetTranslated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 1, + "default": 858, + "total": 859 }, "translatedByMt": { "tmMatch": 0, @@ -4931,9 +4904,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 1, + "default": 765, + "total": 766 }, "approvalCosts": { "tmMatch": 0, @@ -4945,33 +4918,33 @@ }, { "user": { - "id": 15850581, - "username": "Saiki", - "fullName": "Saiki", + "id": 15965675, + "username": "MEEidd", + "fullName": "MEEidd", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15850581/medium/b874bdf6ccaacb8b8ed0933889637505_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965675/medium/63c88b962f4111a3f584708e303b58b5_default.png", "preTranslated": 0, - "totalCosts": 57 + "totalCosts": 89 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 57 + "totalCosts": 89 }, "translated": { "tmMatch": 0, - "default": 57, - "total": 57 + "default": 89, + "total": 89 }, "targetTranslated": { "tmMatch": 0, - "default": 83, - "total": 83 + "default": 87, + "total": 87 }, "translatedByMt": { "tmMatch": 0, @@ -4985,8 +4958,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 57, - "total": 57 + "default": 89, + "total": 89 }, "approvalCosts": { "tmMatch": 0, @@ -4998,33 +4971,33 @@ }, { "user": { - "id": 15809477, - "username": "Santy20", - "fullName": "Santy20", + "id": 15961053, + "username": "MK10", + "fullName": "MK10", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15809477/medium/af30aa3ebca6b7aec5089d3a5b77fb01_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961053/medium/432a1dbe56da10837b16cb865303c70b_default.png", "preTranslated": 0, - "totalCosts": 15 + "totalCosts": 2861 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "sw", + "name": "Swahili", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15 + "totalCosts": 2861 }, "translated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 19, + "default": 2842, + "total": 2861 }, "targetTranslated": { - "tmMatch": 0, - "default": 13, - "total": 13 + "tmMatch": 19, + "default": 2980, + "total": 2999 }, "translatedByMt": { "tmMatch": 0, @@ -5037,9 +5010,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 19, + "default": 2842, + "total": 2861 }, "approvalCosts": { "tmMatch": 0, @@ -5051,33 +5024,33 @@ }, { "user": { - "id": 15778695, - "username": "SeaRay", - "fullName": "SeaRay", + "id": 15967239, + "username": "MahdiRezaeian", + "fullName": "MahdiRezaeian", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15778695/medium/39882c72b2ccf81893116e4c5ba6a5e8_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967239/medium/a3fdd1e460fca7c1a39ec8f00a4ad059_default.png", "preTranslated": 0, - "totalCosts": 30 + "totalCosts": 3114 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 30 + "totalCosts": 3114 }, "translated": { - "tmMatch": 2, - "default": 28, - "total": 30 + "tmMatch": 25, + "default": 3089, + "total": 3114 }, "targetTranslated": { - "tmMatch": 4, - "default": 20, - "total": 24 + "tmMatch": 29, + "default": 4030, + "total": 4059 }, "translatedByMt": { "tmMatch": 0, @@ -5090,9 +5063,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 28, - "total": 30 + "tmMatch": 25, + "default": 3089, + "total": 3114 }, "approvalCosts": { "tmMatch": 0, @@ -5104,33 +5077,33 @@ }, { "user": { - "id": 15818479, - "username": "Seusopotamy", - "fullName": "Seusopotamy", + "id": 15973225, + "username": "Megapost", + "fullName": "Megapost", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15818479/medium/5db77cae8d13e446a0a223d52dfa6a30_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15973225/medium/79f76ae492704316fe05ce393db4361e_default.png", "preTranslated": 0, - "totalCosts": 79 + "totalCosts": 5 }, "languages": [ { "language": { - "id": "ky", - "name": "Kyrgyz", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 79 + "totalCosts": 5 }, "translated": { "tmMatch": 0, - "default": 79, - "total": 79 + "default": 5, + "total": 5 }, "targetTranslated": { "tmMatch": 0, - "default": 59, - "total": 59 + "default": 1, + "total": 1 }, "translatedByMt": { "tmMatch": 0, @@ -5144,8 +5117,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 79, - "total": 79 + "default": 5, + "total": 5 }, "approvalCosts": { "tmMatch": 0, @@ -5157,33 +5130,33 @@ }, { "user": { - "id": 15836437, - "username": "Simon_Balint", - "fullName": "Simon_Balint", + "id": 15938251, + "username": "MinhHuynh1417", + "fullName": "MinhHuynh1417", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15836437/medium/c48a2131c4a7df2b97772488facb8f2e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15938251/medium/7c24bed187b79442af3c13e3d9d3cef2_default.png", "preTranslated": 0, - "totalCosts": 128 + "totalCosts": 246 }, "languages": [ { "language": { - "id": "hu", - "name": "Hungarian", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 128 + "totalCosts": 246 }, "translated": { "tmMatch": 0, - "default": 128, - "total": 128 + "default": 246, + "total": 246 }, "targetTranslated": { "tmMatch": 0, - "default": 3, - "total": 3 + "default": 382, + "total": 382 }, "translatedByMt": { "tmMatch": 0, @@ -5197,8 +5170,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 128, - "total": 128 + "default": 246, + "total": 246 }, "approvalCosts": { "tmMatch": 0, @@ -5210,38 +5183,38 @@ }, { "user": { - "id": 15781525, - "username": "Skylarre", - "fullName": "Skylarre", + "id": 15970299, + "username": "Mishkaa888", + "fullName": "Mishkaa888", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15781525/medium/0988770be994ad49607a291ab6a139ac_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15970299/medium/a08aae4d793ead4871bdb225f2821c58_default.png", "preTranslated": 0, - "totalCosts": 84 + "totalCosts": 2 }, "languages": [ { "language": { - "id": "lt", - "name": "Lithuanian", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 84 + "totalCosts": 2 }, "translated": { - "tmMatch": 7, - "default": 77, - "total": 84 + "tmMatch": 0, + "default": 2, + "total": 2 }, "targetTranslated": { - "tmMatch": 8, - "default": 71, - "total": 79 + "tmMatch": 0, + "default": 2, + "total": 2 }, "translatedByMt": { - "tmMatch": 1, - "default": 3, - "total": 4 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -5249,9 +5222,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 77, - "total": 84 + "tmMatch": 0, + "default": 2, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -5263,33 +5236,33 @@ }, { "user": { - "id": 15789259, - "username": "Sougui", - "fullName": "Sougui", + "id": 15966785, + "username": "Muneeb938", + "fullName": "Muneeb938", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15789259/medium/543aa7b1cad96ac0fdac877710ad63fc_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966785/medium/452a7c1736c347e636e4344ef22886af.JPG", "preTranslated": 0, - "totalCosts": 4 + "totalCosts": 275 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "ur-PK", + "name": "Urdu (Pakistan)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4 + "totalCosts": 275 }, "translated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 16, + "default": 259, + "total": 275 }, "targetTranslated": { - "tmMatch": 0, - "default": 9, - "total": 9 + "tmMatch": 18, + "default": 371, + "total": 389 }, "translatedByMt": { "tmMatch": 0, @@ -5302,9 +5275,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 16, + "default": 259, + "total": 275 }, "approvalCosts": { "tmMatch": 0, @@ -5316,38 +5289,38 @@ }, { "user": { - "id": 15796047, - "username": "Suren2704", - "fullName": "Suren2704", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15796047/medium/7edfe4f6ba49023a8204fb2764d45db3_default.png", + "id": 15956299, + "username": "Nourbusnss", + "fullName": "Nourbusnss", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956299/medium/fabba3da17a7c7b7d8ab8769e4d38fad_default.png", "preTranslated": 0, - "totalCosts": 3 + "totalCosts": 50 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Limited Access", + "id": "ro", + "name": "Romanian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3 + "totalCosts": 50 }, "translated": { - "tmMatch": 3, - "default": 0, - "total": 3 + "tmMatch": 2, + "default": 48, + "total": 50 }, "targetTranslated": { "tmMatch": 3, - "default": 0, - "total": 3 + "default": 49, + "total": 52 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, @@ -5355,9 +5328,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 0, - "total": 3 + "tmMatch": 2, + "default": 48, + "total": 50 }, "approvalCosts": { "tmMatch": 0, @@ -5369,38 +5342,38 @@ }, { "user": { - "id": 15812919, - "username": "TIGHBOULA", - "fullName": "TIGHBOULA", + "id": 15944409, + "username": "Nuradin23", + "fullName": "Nuradin23", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15812919/medium/f3f7a11bab20ca30313e888505b184fb_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15944409/medium/e42e60daceac197520df8cf09a6d7d16_default.png", "preTranslated": 0, - "totalCosts": 1 + "totalCosts": 36 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "sv-SE", + "name": "Swedish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1 + "totalCosts": 36 }, "translated": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 10, + "default": 26, + "total": 36 }, "targetTranslated": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 3, + "default": 12, + "total": 15 }, "translatedByMt": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 26, + "total": 26 }, "approved": { "tmMatch": 0, @@ -5408,9 +5381,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 10, + "default": 26, + "total": 36 }, "approvalCosts": { "tmMatch": 0, @@ -5422,33 +5395,33 @@ }, { "user": { - "id": 15754717, - "username": "Tgualtieri1976", - "fullName": "Tgualtieri1976", + "id": 15879525, + "username": "Oracle_001", + "fullName": "Oracle_001", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15754717/medium/7b4c2cc9718c084cb8a54999b9b2fb19_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15879525/medium/2a42c9d405b56de89be5dad52b9b4f10_default.png", "preTranslated": 0, - "totalCosts": 30 + "totalCosts": 927 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 30 + "totalCosts": 927 }, "translated": { - "tmMatch": 30, - "default": 0, - "total": 30 + "tmMatch": 0, + "default": 927, + "total": 927 }, "targetTranslated": { - "tmMatch": 31, - "default": 0, - "total": 31 + "tmMatch": 0, + "default": 977, + "total": 977 }, "translatedByMt": { "tmMatch": 0, @@ -5461,9 +5434,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 30, - "default": 0, - "total": 30 + "tmMatch": 0, + "default": 927, + "total": 927 }, "approvalCosts": { "tmMatch": 0, @@ -5475,33 +5448,33 @@ }, { "user": { - "id": 15871849, - "username": "Tirkesh", - "fullName": "Tirkesh", + "id": 15963465, + "username": "Ozje", + "fullName": "Ozje", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871849/medium/6d8dbcecb777f671634d3774c3287a72_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963465/medium/da85affc52fa58f2bf27e2e90cebb31e_default.png", "preTranslated": 0, - "totalCosts": 38 + "totalCosts": 4613 }, "languages": [ { "language": { - "id": "tk", - "name": "Turkmen", + "id": "az", + "name": "Azerbaijani", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 38 + "totalCosts": 242 }, "translated": { "tmMatch": 0, - "default": 38, - "total": 38 + "default": 242, + "total": 242 }, "targetTranslated": { "tmMatch": 0, - "default": 38, - "total": 38 + "default": 189, + "total": 189 }, "translatedByMt": { "tmMatch": 0, @@ -5515,51 +5488,38 @@ }, "translationCosts": { "tmMatch": 0, - "default": 38, - "total": 38 + "default": 242, + "total": 242 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15859697, - "username": "Tomui", - "fullName": "Tomui", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15859697/medium/c1741d8593d88253b269a41717144826_default.png", - "preTranslated": 0, - "totalCosts": 3 - }, - "languages": [ + }, { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "ku", + "name": "Kurdish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3 + "totalCosts": 50 }, "translated": { - "tmMatch": 3, - "default": 0, - "total": 3 + "tmMatch": 0, + "default": 50, + "total": 50 }, "targetTranslated": { - "tmMatch": 4, - "default": 0, - "total": 4 + "tmMatch": 0, + "default": 43, + "total": 43 }, "translatedByMt": { - "tmMatch": 3, + "tmMatch": 0, "default": 0, - "total": 3 + "total": 0 }, "approved": { "tmMatch": 0, @@ -5567,47 +5527,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 0, - "total": 3 + "tmMatch": 0, + "default": 50, + "total": 50 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15863837, - "username": "Ulykpanabat", - "fullName": "Ulykpanabat", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15863837/medium/50fe3901a9fa5e00bd0f3c19a503c164_default.png", - "preTranslated": 0, - "totalCosts": 16 - }, - "languages": [ + }, { "language": { - "id": "kk", - "name": "Kazakh", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 16 + "totalCosts": 4321 }, "translated": { - "tmMatch": 1, - "default": 15, - "total": 16 + "tmMatch": 6, + "default": 4315, + "total": 4321 }, "targetTranslated": { - "tmMatch": 1, - "default": 15, - "total": 16 + "tmMatch": 6, + "default": 3617, + "total": 3623 }, "translatedByMt": { "tmMatch": 0, @@ -5620,9 +5567,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 15, - "total": 16 + "tmMatch": 6, + "default": 4315, + "total": 4321 }, "approvalCosts": { "tmMatch": 0, @@ -5634,33 +5581,33 @@ }, { "user": { - "id": 15145320, - "username": "Unili", - "fullName": "Unili", + "id": 15997653, + "username": "Phana", + "fullName": "Phana", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15145320/medium/c0fc5adab930aa5467bcf04fcdcbf39f.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15997653/medium/d76b042af6978c35c2bd605f403b20d2_default.png", "preTranslated": 0, - "totalCosts": 116 + "totalCosts": 42 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "th", + "name": "Thai", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 116 + "totalCosts": 42 }, "translated": { - "tmMatch": 0, - "default": 116, - "total": 116 + "tmMatch": 1, + "default": 41, + "total": 42 }, "targetTranslated": { - "tmMatch": 0, - "default": 203, - "total": 203 + "tmMatch": 1, + "default": 26, + "total": 27 }, "translatedByMt": { "tmMatch": 0, @@ -5673,9 +5620,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 116, - "total": 116 + "tmMatch": 1, + "default": 41, + "total": 42 }, "approvalCosts": { "tmMatch": 0, @@ -5687,33 +5634,33 @@ }, { "user": { - "id": 14681570, - "username": "Val21", - "fullName": "Val21", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14681570/medium/3ed2f13f3a9383c0d3a23bd130df78d2_default.png", + "id": 15968059, + "username": "Push1", + "fullName": "Push1", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968059/medium/bddd2a4e18ce0ccb37b6779835a1a169_default.png", "preTranslated": 0, - "totalCosts": 766 + "totalCosts": 1282 }, "languages": [ { "language": { - "id": "bg", - "name": "Bulgarian", - "userRole": "Translator, Proofreader", + "id": "ig", + "name": "Igbo", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 766 + "totalCosts": 1282 }, "translated": { "tmMatch": 0, - "default": 766, - "total": 766 + "default": 1282, + "total": 1282 }, "targetTranslated": { "tmMatch": 0, - "default": 867, - "total": 867 + "default": 1710, + "total": 1710 }, "translatedByMt": { "tmMatch": 0, @@ -5727,8 +5674,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 766, - "total": 766 + "default": 1282, + "total": 1282 }, "approvalCosts": { "tmMatch": 0, @@ -5740,13 +5687,13 @@ }, { "user": { - "id": 15843735, - "username": "VanFlow", - "fullName": "VanFlow", + "id": 15848653, + "username": "QueenNot", + "fullName": "QueenNot", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843735/medium/1ac8ece550c160417a8fbfc16ec62c82_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15848653/medium/9506bee8d4f41073b7c7fb3523239878_default.png", "preTranslated": 0, - "totalCosts": 157 + "totalCosts": 85 }, "languages": [ { @@ -5756,17 +5703,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 157 + "totalCosts": 85 }, "translated": { "tmMatch": 0, - "default": 157, - "total": 157 - }, + "default": 85, + "total": 85 + }, "targetTranslated": { "tmMatch": 0, - "default": 288, - "total": 288 + "default": 153, + "total": 153 }, "translatedByMt": { "tmMatch": 0, @@ -5780,8 +5727,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 157, - "total": 157 + "default": 85, + "total": 85 }, "approvalCosts": { "tmMatch": 0, @@ -5793,38 +5740,38 @@ }, { "user": { - "id": 15816899, - "username": "Vhao", - "fullName": "Vhao", + "id": 15918181, + "username": "QuinnHou", + "fullName": "QuinnHou", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15816899/medium/97173308acfb420c6a9b9c9e5e766f48_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15918181/medium/17e80957f6d7eef4f215c6cc41951dae_default.png", "preTranslated": 0, - "totalCosts": 23 + "totalCosts": 3679 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 23 + "totalCosts": 3679 }, "translated": { - "tmMatch": 0, - "default": 23, - "total": 23 + "tmMatch": 2, + "default": 3677, + "total": 3679 }, "targetTranslated": { - "tmMatch": 0, - "default": 23, - "total": 23 + "tmMatch": 6, + "default": 6194, + "total": 6200 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 12, + "total": 12 }, "approved": { "tmMatch": 0, @@ -5832,9 +5779,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 23, - "total": 23 + "tmMatch": 2, + "default": 3677, + "total": 3679 }, "approvalCosts": { "tmMatch": 0, @@ -5846,33 +5793,33 @@ }, { "user": { - "id": 14690008, - "username": "Vikatoda", - "fullName": "Vikatoda", + "id": 15860799, + "username": "Qupi", + "fullName": "Qupi", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14690008/medium/0bfd9e987ec1b26477b95e0c1ab51258_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15860799/medium/337f413d2e31db3fbedad1bcfb0f55dc.jpg", "preTranslated": 0, - "totalCosts": 41 + "totalCosts": 80 }, "languages": [ { "language": { - "id": "ka", - "name": "Georgian", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 41 + "totalCosts": 80 }, "translated": { - "tmMatch": 41, - "default": 0, - "total": 41 + "tmMatch": 1, + "default": 79, + "total": 80 }, "targetTranslated": { - "tmMatch": 26, - "default": 0, - "total": 26 + "tmMatch": 1, + "default": 65, + "total": 66 }, "translatedByMt": { "tmMatch": 0, @@ -5885,9 +5832,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 41, - "default": 0, - "total": 41 + "tmMatch": 1, + "default": 79, + "total": 80 }, "approvalCosts": { "tmMatch": 0, @@ -5899,38 +5846,38 @@ }, { "user": { - "id": 15802891, - "username": "WeamESP", - "fullName": "WeamESP", + "id": 15946829, + "username": "RainWing", + "fullName": "RainWing", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15802891/medium/00d633d67b92e856404e1ff8c53c6c18_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946829/medium/0412f563d7d01d9ded45bec32418ccdb_default.png", "preTranslated": 0, - "totalCosts": 379 + "totalCosts": 313 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 379 + "totalCosts": 313 }, "translated": { - "tmMatch": 34, - "default": 345, - "total": 379 + "tmMatch": 6, + "default": 307, + "total": 313 }, "targetTranslated": { - "tmMatch": 31, - "default": 347, - "total": 378 + "tmMatch": 10, + "default": 470, + "total": 480 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -5938,9 +5885,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 34, - "default": 345, - "total": 379 + "tmMatch": 6, + "default": 307, + "total": 313 }, "approvalCosts": { "tmMatch": 0, @@ -5952,33 +5899,33 @@ }, { "user": { - "id": 15518158, - "username": "XChriSylX", - "fullName": "XChriSylX", + "id": 15946041, + "username": "RanaUsman95", + "fullName": "RanaUsman95", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15518158/medium/69cd6f017a4d949f34487033e798ef59_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946041/medium/c853018c4018cfa38dc058bebfbf0f3e_default.png", "preTranslated": 0, - "totalCosts": 128 + "totalCosts": 34 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "ur-PK", + "name": "Urdu (Pakistan)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 128 + "totalCosts": 34 }, "translated": { - "tmMatch": 0, - "default": 128, - "total": 128 + "tmMatch": 11, + "default": 23, + "total": 34 }, "targetTranslated": { - "tmMatch": 0, - "default": 124, - "total": 124 + "tmMatch": 13, + "default": 30, + "total": 43 }, "translatedByMt": { "tmMatch": 0, @@ -5991,9 +5938,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 128, - "total": 128 + "tmMatch": 11, + "default": 23, + "total": 34 }, "approvalCosts": { "tmMatch": 0, @@ -6005,33 +5952,33 @@ }, { "user": { - "id": 15893819, - "username": "Xiran", - "fullName": "Xiran", + "id": 15976615, + "username": "Ren3_Or3llana", + "fullName": "Ren3_Or3llana", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15893819/medium/e579822f448602f334180dc7ced2e68d_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15976615/medium/4a028118efd77ee108c6555cb4b01b73_default.png", "preTranslated": 0, - "totalCosts": 97 + "totalCosts": 25 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 97 + "totalCosts": 25 }, "translated": { "tmMatch": 0, - "default": 97, - "total": 97 + "default": 25, + "total": 25 }, "targetTranslated": { "tmMatch": 0, - "default": 141, - "total": 141 + "default": 66, + "total": 66 }, "translatedByMt": { "tmMatch": 0, @@ -6045,8 +5992,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 97, - "total": 97 + "default": 25, + "total": 25 }, "approvalCosts": { "tmMatch": 0, @@ -6058,38 +6005,38 @@ }, { "user": { - "id": 15792111, - "username": "Yaghoob802", - "fullName": "Yaghoob802", - "userRole": "Blocked", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15792111/medium/7497a36383b5b820c1ddcc527dd61d1d_default.png", + "id": 15376854, + "username": "RenanDeveloper", + "fullName": "RenanDeveloper", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15376854/medium/960a793d255cc1e610c7ccd5667ed9d9_default.png", "preTranslated": 0, - "totalCosts": 13 + "totalCosts": 106 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Blocked", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 13 + "totalCosts": 106 }, "translated": { - "tmMatch": 0, - "default": 13, - "total": 13 + "tmMatch": 2, + "default": 104, + "total": 106 }, "targetTranslated": { - "tmMatch": 0, - "default": 14, - "total": 14 + "tmMatch": 2, + "default": 122, + "total": 124 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 18, + "total": 18 }, "approved": { "tmMatch": 0, @@ -6097,9 +6044,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 13, - "total": 13 + "tmMatch": 2, + "default": 104, + "total": 106 }, "approvalCosts": { "tmMatch": 0, @@ -6111,38 +6058,38 @@ }, { "user": { - "id": 15801335, - "username": "Youssefgrb", - "fullName": "Youssefgrb", + "id": 15952431, + "username": "Ricky7777", + "fullName": "Ricky7777", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15801335/medium/d17a960b68dc8f5f07372af27ce7fb9c_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952431/medium/93b10f867535c9c8f3031626550b3343_default.png", "preTranslated": 0, - "totalCosts": 40 + "totalCosts": 2863 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 40 + "totalCosts": 2863 }, "translated": { - "tmMatch": 18, - "default": 22, - "total": 40 + "tmMatch": 2, + "default": 2861, + "total": 2863 }, "targetTranslated": { - "tmMatch": 20, - "default": 22, - "total": 42 + "tmMatch": 4, + "default": 4961, + "total": 4965 }, "translatedByMt": { - "tmMatch": 18, - "default": 19, - "total": 37 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -6150,9 +6097,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 18, - "default": 22, - "total": 40 + "tmMatch": 2, + "default": 2861, + "total": 2863 }, "approvalCosts": { "tmMatch": 0, @@ -6164,38 +6111,38 @@ }, { "user": { - "id": 14651240, - "username": "Zivojin", - "fullName": "Zivojin", + "id": 15899275, + "username": "Rig1", + "fullName": "Rig1", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14651240/medium/67088b52e7396d66abf7adc7a7bfb8a3_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15899275/medium/ce54b7337cd1b73369a5adea52a5b4f2_default.png", "preTranslated": 0, - "totalCosts": 46 + "totalCosts": 22 }, "languages": [ { "language": { - "id": "sr-CS", - "name": "Serbian (Latin)", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 46 + "totalCosts": 22 }, "translated": { - "tmMatch": 7, - "default": 39, - "total": 46 + "tmMatch": 0, + "default": 22, + "total": 22 }, "targetTranslated": { - "tmMatch": 7, - "default": 44, - "total": 51 + "tmMatch": 0, + "default": 29, + "total": 29 }, "translatedByMt": { - "tmMatch": 6, - "default": 4, - "total": 10 + "tmMatch": 0, + "default": 22, + "total": 22 }, "approved": { "tmMatch": 0, @@ -6203,9 +6150,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 39, - "total": 46 + "tmMatch": 0, + "default": 22, + "total": 22 }, "approvalCosts": { "tmMatch": 0, @@ -6217,38 +6164,38 @@ }, { "user": { - "id": 15774005, - "username": "Zmeyka_LOL", - "fullName": "Zmeyka_LOL", + "id": 15947755, + "username": "RubenSilva", + "fullName": "RubenSilva", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15774005/medium/e7f1667e69dbbb3e61de031af02be877_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947755/medium/cf9980cfafab6b7c43f6e16e1ca48324_default.png", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 10955 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "de", + "name": "German", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 10955 }, "translated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 31, + "default": 10924, + "total": 10955 }, "targetTranslated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 28, + "default": 11066, + "total": 11094 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 3, "default": 0, - "total": 2 + "total": 3 }, "approved": { "tmMatch": 0, @@ -6256,9 +6203,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 31, + "default": 10924, + "total": 10955 }, "approvalCosts": { "tmMatch": 0, @@ -6270,33 +6217,33 @@ }, { "user": { - "id": 15768137, - "username": "_dekaprii", - "fullName": "_dekaprii", + "id": 15961643, + "username": "SRISAILAPU_AKSHAYA", + "fullName": "SRISAILAPU_AKSHAYA", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15768137/medium/1c59acaf419b3c0f66c628a7ff233a38_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961643/medium/aaea8a108b7c473ab3f0d388619be9fa_default.png", "preTranslated": 0, - "totalCosts": 65 + "totalCosts": 252 }, "languages": [ { "language": { - "id": "sw", - "name": "Swahili", + "id": "te", + "name": "Telugu", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 65 + "totalCosts": 252 }, "translated": { - "tmMatch": 0, - "default": 65, - "total": 65 + "tmMatch": 17, + "default": 235, + "total": 252 }, "targetTranslated": { - "tmMatch": 0, - "default": 72, - "total": 72 + "tmMatch": 26, + "default": 307, + "total": 333 }, "translatedByMt": { "tmMatch": 0, @@ -6309,9 +6256,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 65, - "total": 65 + "tmMatch": 17, + "default": 235, + "total": 252 }, "approvalCosts": { "tmMatch": 0, @@ -6323,33 +6270,33 @@ }, { "user": { - "id": 15865283, - "username": "alex33667", - "fullName": "alex33667", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15865283/medium/c847ee9e7a5143c7087de7a0933dd357_default.png", + "id": 15427034, + "username": "SSB_HR_Trans", + "fullName": "SSB_HR_Trans", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15427034/medium/c1c9ab53edcbf78210434ef0cc76e619_default.png", "preTranslated": 0, - "totalCosts": 31 + "totalCosts": 52 }, "languages": [ { "language": { - "id": "pl", - "name": "Polish", - "userRole": "Translator", + "id": "hr", + "name": "Croatian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 31 + "totalCosts": 52 }, "translated": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 52, + "total": 52 }, "targetTranslated": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 60, + "total": 60 }, "translatedByMt": { "tmMatch": 0, @@ -6359,12 +6306,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 3090 }, "translationCosts": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 52, + "total": 52 }, "approvalCosts": { "tmMatch": 0, @@ -6376,38 +6323,38 @@ }, { "user": { - "id": 15741847, - "username": "aliensareghosts", - "fullName": "aliensareghosts", + "id": 15967461, + "username": "Saampler", + "fullName": "Saampler", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15741847/medium/b6dfb039c39057b612dec75f75e5a800_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967461/medium/633a316e674d64eaed0138e92d9a0ae9_default.png", "preTranslated": 0, - "totalCosts": 6 + "totalCosts": 14 }, "languages": [ { "language": { - "id": "ro", - "name": "Romanian", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 6 + "totalCosts": 14 }, "translated": { "tmMatch": 0, - "default": 6, - "total": 6 + "default": 14, + "total": 14 }, "targetTranslated": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 17, + "total": 17 }, "translatedByMt": { "tmMatch": 0, - "default": 6, - "total": 6 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -6416,8 +6363,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 6, - "total": 6 + "default": 14, + "total": 14 }, "approvalCosts": { "tmMatch": 0, @@ -6429,38 +6376,38 @@ }, { "user": { - "id": 15318490, - "username": "arthursw", - "fullName": "arthursw", + "id": 15310784, + "username": "Sagitario", + "fullName": "Sagitario", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15318490/medium/673173431aeb53f29ca5516e9aa87bec_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15310784/medium/cfdc53d28658b94b21e45d51acc457c7.jpg", "preTranslated": 0, - "totalCosts": 92 + "totalCosts": 2062 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "de", + "name": "German", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 92 + "totalCosts": 2062 }, "translated": { - "tmMatch": 0, - "default": 92, - "total": 92 + "tmMatch": 13, + "default": 2049, + "total": 2062 }, "targetTranslated": { - "tmMatch": 0, - "default": 108, - "total": 108 + "tmMatch": 13, + "default": 2109, + "total": 2122 }, "translatedByMt": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -6468,9 +6415,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 92, - "total": 92 + "tmMatch": 13, + "default": 2049, + "total": 2062 }, "approvalCosts": { "tmMatch": 0, @@ -6482,33 +6429,33 @@ }, { "user": { - "id": 15467576, - "username": "augur", - "fullName": "augur", + "id": 15968157, + "username": "Sakeenah", + "fullName": "Sakeenah", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15467576/medium/471f881427c816c83c952446739e01d8_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968157/medium/2c77296e5e802c5883b7c7091e6a81b4_default.png", "preTranslated": 0, - "totalCosts": 315 + "totalCosts": 122 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 315 + "totalCosts": 37 }, "translated": { - "tmMatch": 11, - "default": 304, - "total": 315 + "tmMatch": 0, + "default": 37, + "total": 37 }, "targetTranslated": { - "tmMatch": 11, - "default": 274, - "total": 285 + "tmMatch": 0, + "default": 40, + "total": 40 }, "translatedByMt": { "tmMatch": 0, @@ -6521,52 +6468,39 @@ "total": 0 }, "translationCosts": { - "tmMatch": 11, - "default": 304, - "total": 315 + "tmMatch": 0, + "default": 37, + "total": 37 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15815975, - "username": "blackbirdsky", - "fullName": "blackbirdsky", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15815975/medium/758e4e72f88d72d371ca1e5f19776826_default.png", - "preTranslated": 0, - "totalCosts": 106 - }, - "languages": [ + }, { "language": { - "id": "ru", - "name": "Russian", + "id": "yo", + "name": "Yoruba", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 106 + "totalCosts": 85 }, "translated": { - "tmMatch": 1, - "default": 105, - "total": 106 + "tmMatch": 0, + "default": 85, + "total": 85 }, "targetTranslated": { - "tmMatch": 1, - "default": 89, - "total": 90 + "tmMatch": 0, + "default": 83, + "total": 83 }, "translatedByMt": { - "tmMatch": 1, - "default": 43, - "total": 44 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -6574,9 +6508,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 105, - "total": 106 + "tmMatch": 0, + "default": 85, + "total": 85 }, "approvalCosts": { "tmMatch": 0, @@ -6588,38 +6522,38 @@ }, { "user": { - "id": 15793045, - "username": "brkvmzrm", - "fullName": "brkvmzrm", + "id": 15925759, + "username": "Samuelboo", + "fullName": "Samuelboo", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15793045/medium/e8096c76242f0dab490ea7732ac1bd15_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15925759/medium/3c1212b8d32888243a63bbea17e0e369_default.png", "preTranslated": 0, - "totalCosts": 9 + "totalCosts": 201 }, "languages": [ { "language": { - "id": "sr-CS", - "name": "Serbian (Latin)", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 9 + "totalCosts": 201 }, "translated": { - "tmMatch": 3, - "default": 6, - "total": 9 + "tmMatch": 2, + "default": 199, + "total": 201 }, "targetTranslated": { - "tmMatch": 2, - "default": 4, - "total": 6 + "tmMatch": 5, + "default": 345, + "total": 350 }, "translatedByMt": { - "tmMatch": 3, + "tmMatch": 0, "default": 0, - "total": 3 + "total": 0 }, "approved": { "tmMatch": 0, @@ -6627,9 +6561,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 6, - "total": 9 + "tmMatch": 2, + "default": 199, + "total": 201 }, "approvalCosts": { "tmMatch": 0, @@ -6641,38 +6575,38 @@ }, { "user": { - "id": 15887185, - "username": "buck10", - "fullName": "buck10", + "id": 15965461, + "username": "Satglow", + "fullName": "Satglow", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15887185/medium/eea1fe3925d043a21d84fade6ea6e19e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965461/medium/d0c82c3b7d4885069b13e4b4dc3f2963_default.png", "preTranslated": 0, - "totalCosts": 3 + "totalCosts": 64347 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "hu", + "name": "Hungarian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 64347 }, "translated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 1000, + "default": 63347, + "total": 64347 }, "targetTranslated": { - "tmMatch": 7, - "default": 0, - "total": 7 + "tmMatch": 978, + "default": 57002, + "total": 57980 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 19, "default": 0, - "total": 0 + "total": 19 }, "approved": { "tmMatch": 0, @@ -6680,16 +6614,29 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 1000, + "default": 63347, + "total": 64347 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15965647, + "username": "Shitness", + "fullName": "Shitness", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965647/medium/96faf61b3b59c29adf03dca21e03582c.jpg", + "preTranslated": 0, + "totalCosts": 2 + }, + "languages": [ { "language": { "id": "zh-CN", @@ -6697,22 +6644,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1 + "totalCosts": 2 }, "translated": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 2, + "total": 2 }, "targetTranslated": { - "tmMatch": 3, - "default": 0, - "total": 3 + "tmMatch": 0, + "default": 4, + "total": 4 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, @@ -6720,9 +6667,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 2, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -6734,33 +6681,33 @@ }, { "user": { - "id": 15779719, - "username": "cld02", - "fullName": "cld02", + "id": 15621535, + "username": "Skri_A_E_proof", + "fullName": "Skri_A_E_proof", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15779719/medium/d9928aad0e682b9a11f5a519858e0927_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15621535/medium/9e57ed0ad6fb0e7e4e7f71f317fa9ac4_default.png", "preTranslated": 0, - "totalCosts": 44 + "totalCosts": 1130 }, "languages": [ { "language": { - "id": "ro", - "name": "Romanian", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 44 + "totalCosts": 1130 }, "translated": { - "tmMatch": 0, - "default": 44, - "total": 44 + "tmMatch": 14, + "default": 1116, + "total": 1130 }, "targetTranslated": { - "tmMatch": 0, - "default": 58, - "total": 58 + "tmMatch": 8, + "default": 1071, + "total": 1079 }, "translatedByMt": { "tmMatch": 0, @@ -6773,9 +6720,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 44, - "total": 44 + "tmMatch": 14, + "default": 1116, + "total": 1130 }, "approvalCosts": { "tmMatch": 0, @@ -6787,38 +6734,38 @@ }, { "user": { - "id": 15783329, - "username": "edgolron", - "fullName": "edgolron", + "id": 15957023, + "username": "SniffOnMe", + "fullName": "SniffOnMe", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15783329/medium/d6363ce0aafa5df6f74723d2b52945a5_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957023/medium/b93d5105338df048a53fd0f80277185a_default.png", "preTranslated": 0, - "totalCosts": 263 + "totalCosts": 181 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "de", + "name": "German", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 263 + "totalCosts": 181 }, "translated": { - "tmMatch": 5, - "default": 258, - "total": 263 + "tmMatch": 0, + "default": 181, + "total": 181 }, "targetTranslated": { - "tmMatch": 9, - "default": 277, - "total": 286 + "tmMatch": 0, + "default": 179, + "total": 179 }, "translatedByMt": { - "tmMatch": 4, - "default": 184, - "total": 188 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -6826,9 +6773,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 258, - "total": 263 + "tmMatch": 0, + "default": 181, + "total": 181 }, "approvalCosts": { "tmMatch": 0, @@ -6840,33 +6787,33 @@ }, { "user": { - "id": 15841839, - "username": "ekc9399", - "fullName": "ekc9399", + "id": 15952273, + "username": "Soplayerone", + "fullName": "Soplayerone", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15841839/medium/0a25585c566bb1f7be4cba84b02e8561_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952273/medium/6e9e5b686eb18071b84f2eaf7273db6e_default.png", "preTranslated": 0, - "totalCosts": 2636 + "totalCosts": 132 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10 + "totalCosts": 132 }, "translated": { - "tmMatch": 10, - "default": 0, - "total": 10 + "tmMatch": 0, + "default": 132, + "total": 132 }, "targetTranslated": { - "tmMatch": 7, - "default": 0, - "total": 7 + "tmMatch": 0, + "default": 274, + "total": 274 }, "translatedByMt": { "tmMatch": 0, @@ -6879,34 +6826,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 10, - "default": 0, - "total": 10 + "tmMatch": 0, + "default": 132, + "total": 132 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15911479, + "username": "SuzieChen", + "fullName": "SuzieChen", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911479/medium/a166bd709b247ef6c746b2b6b4bfe629_default.png", + "preTranslated": 0, + "totalCosts": 47 + }, + "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2587 + "totalCosts": 47 }, "translated": { - "tmMatch": 548, - "default": 2039, - "total": 2587 + "tmMatch": 0, + "default": 47, + "total": 47 }, "targetTranslated": { - "tmMatch": 548, - "default": 2039, - "total": 2587 + "tmMatch": 0, + "default": 80, + "total": 80 }, "translatedByMt": { "tmMatch": 0, @@ -6919,39 +6879,52 @@ "total": 0 }, "translationCosts": { - "tmMatch": 548, - "default": 2039, - "total": 2587 + "tmMatch": 0, + "default": 47, + "total": 47 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15967793, + "username": "TanjaPale", + "fullName": "TanjaPale", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967793/medium/7a23945a1b7ec0fd21d81d4820ba115f_default.png", + "preTranslated": 0, + "totalCosts": 31097 + }, + "languages": [ { "language": { - "id": "ms", - "name": "Malay", + "id": "sr-CS", + "name": "Serbian (Latin)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 39 + "totalCosts": 31097 }, "translated": { - "tmMatch": 4, - "default": 35, - "total": 39 + "tmMatch": 99, + "default": 30998, + "total": 31097 }, "targetTranslated": { - "tmMatch": 4, - "default": 35, - "total": 39 + "tmMatch": 97, + "default": 29951, + "total": 30048 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 4, "default": 0, - "total": 0 + "total": 4 }, "approved": { "tmMatch": 0, @@ -6959,9 +6932,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 35, - "total": 39 + "tmMatch": 99, + "default": 30998, + "total": 31097 }, "approvalCosts": { "tmMatch": 0, @@ -6973,33 +6946,33 @@ }, { "user": { - "id": 15849463, - "username": "emre4621", - "fullName": "emre4621", + "id": 15998479, + "username": "ThePirateJack", + "fullName": "ThePirateJack", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849463/medium/a97b1ae195259f09bd9463276d67059e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15998479/medium/f5c17357aad5b0d2ffc9ad0ac910d5bf_default.png", "preTranslated": 0, - "totalCosts": 58 + "totalCosts": 462 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "ka", + "name": "Georgian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 58 + "totalCosts": 462 }, "translated": { "tmMatch": 0, - "default": 58, - "total": 58 + "default": 462, + "total": 462 }, "targetTranslated": { "tmMatch": 0, - "default": 3, - "total": 3 + "default": 377, + "total": 377 }, "translatedByMt": { "tmMatch": 0, @@ -7013,8 +6986,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 58, - "total": 58 + "default": 462, + "total": 462 }, "approvalCosts": { "tmMatch": 0, @@ -7026,38 +6999,38 @@ }, { "user": { - "id": 14712154, - "username": "fivenicerice", - "fullName": "fivenicerice", + "id": 15956949, + "username": "TommyWolf", + "fullName": "TommyWolf", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14712154/medium/3730e404a7ef0a2e5f76426f84376d53.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956949/medium/ca17c635be37e8460b6e23b17d4eed05_default.png", "preTranslated": 0, - "totalCosts": 726 + "totalCosts": 6536 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "sk", + "name": "Slovak", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 726 + "totalCosts": 6536 }, "translated": { - "tmMatch": 2, - "default": 724, - "total": 726 + "tmMatch": 168, + "default": 6368, + "total": 6536 }, "targetTranslated": { - "tmMatch": 3, - "default": 1228, - "total": 1231 + "tmMatch": 153, + "default": 5951, + "total": 6104 }, "translatedByMt": { - "tmMatch": 0, - "default": 298, - "total": 298 + "tmMatch": 24, + "default": 2, + "total": 26 }, "approved": { "tmMatch": 0, @@ -7065,9 +7038,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 724, - "total": 726 + "tmMatch": 168, + "default": 6368, + "total": 6536 }, "approvalCosts": { "tmMatch": 0, @@ -7079,33 +7052,33 @@ }, { "user": { - "id": 15760975, - "username": "fkhaibari", - "fullName": "fkhaibari", + "id": 15913155, + "username": "Tricia_Chen", + "fullName": "Tricia_Chen", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15760975/medium/22277ec852691473ad454f8e9171c180_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15913155/medium/a448050c7f4dc928262f5abee8c8c1eb_default.png", "preTranslated": 0, - "totalCosts": 59 + "totalCosts": 32 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 59 + "totalCosts": 32 }, "translated": { - "tmMatch": 1, - "default": 58, - "total": 59 + "tmMatch": 0, + "default": 32, + "total": 32 }, "targetTranslated": { - "tmMatch": 1, - "default": 56, - "total": 57 + "tmMatch": 0, + "default": 53, + "total": 53 }, "translatedByMt": { "tmMatch": 0, @@ -7118,9 +7091,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 58, - "total": 59 + "tmMatch": 0, + "default": 32, + "total": 32 }, "approvalCosts": { "tmMatch": 0, @@ -7132,33 +7105,33 @@ }, { "user": { - "id": 15816617, - "username": "floaty", - "fullName": "floaty", + "id": 16002883, + "username": "Tskhvedo", + "fullName": "Tskhvedo", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15816617/medium/0f65fc552cc66afb5d5e2cf1b56ac252_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16002883/medium/d399bc23341cd2bf55a5fb1a0aff8b46_default.png", "preTranslated": 0, - "totalCosts": 73 + "totalCosts": 1869 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "ka", + "name": "Georgian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 73 + "totalCosts": 1763 }, "translated": { - "tmMatch": 1, - "default": 72, - "total": 73 + "tmMatch": 34, + "default": 1729, + "total": 1763 }, "targetTranslated": { - "tmMatch": 1, - "default": 140, - "total": 141 + "tmMatch": 33, + "default": 1400, + "total": 1433 }, "translatedByMt": { "tmMatch": 0, @@ -7171,47 +7144,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 72, - "total": 73 + "tmMatch": 34, + "default": 1729, + "total": 1763 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15797935, - "username": "florita", - "fullName": "florita", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15797935/medium/d50b4242e896ee8d17a6a7547f77f598_default.png", - "preTranslated": 0, - "totalCosts": 490 - }, - "languages": [ + }, { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "gu-IN", + "name": "Gujarati", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 490 + "totalCosts": 1 }, "translated": { - "tmMatch": 11, - "default": 479, - "total": 490 + "tmMatch": 0, + "default": 1, + "total": 1 }, "targetTranslated": { - "tmMatch": 11, - "default": 494, - "total": 505 + "tmMatch": 0, + "default": 2, + "total": 2 }, "translatedByMt": { "tmMatch": 0, @@ -7224,52 +7184,39 @@ "total": 0 }, "translationCosts": { - "tmMatch": 11, - "default": 479, - "total": 490 + "tmMatch": 0, + "default": 1, + "total": 1 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15733781, - "username": "forreal", - "fullName": "forreal", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15733781/medium/58f9743e41e4ca940a6f9c6f255c346b_default.png", - "preTranslated": 0, - "totalCosts": 104 - }, - "languages": [ + }, { "language": { - "id": "cs", - "name": "Czech", + "id": "mk", + "name": "Macedonian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 104 + "totalCosts": 102 }, "translated": { - "tmMatch": 0, - "default": 104, - "total": 104 + "tmMatch": 6, + "default": 96, + "total": 102 }, "targetTranslated": { - "tmMatch": 0, - "default": 102, - "total": 102 + "tmMatch": 6, + "default": 94, + "total": 100 }, "translatedByMt": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -7277,47 +7224,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 104, - "total": 104 + "tmMatch": 6, + "default": 96, + "total": 102 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15337968, - "username": "giantpenguin", - "fullName": "giantpenguin", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15337968/medium/6eafe6557864573c6cb65e7f1cf11979_default.png", - "preTranslated": 0, - "totalCosts": 124 - }, - "languages": [ + }, { "language": { - "id": "vi", - "name": "Vietnamese", + "id": "ti", + "name": "Tigrinya", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 124 + "totalCosts": 3 }, "translated": { - "tmMatch": 3, - "default": 121, - "total": 124 + "tmMatch": 0, + "default": 3, + "total": 3 }, "targetTranslated": { - "tmMatch": 7, - "default": 213, - "total": 220 + "tmMatch": 0, + "default": 3, + "total": 3 }, "translatedByMt": { "tmMatch": 0, @@ -7330,9 +7264,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 121, - "total": 124 + "tmMatch": 0, + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, @@ -7344,38 +7278,38 @@ }, { "user": { - "id": 15791839, - "username": "gussan", - "fullName": "gussan", + "id": 15925361, + "username": "Victor8.", + "fullName": "Victor8.", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15791839/medium/7078a31d735e6ea2909c5f18a204da28_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15925361/medium/c4727495ca7d39ae02a3abba7afadb8f_default.png", "preTranslated": 0, - "totalCosts": 291 + "totalCosts": 51 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Translator", + "id": "tr", + "name": "Turkish", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 291 + "totalCosts": 51 }, "translated": { - "tmMatch": 4, - "default": 287, - "total": 291 + "tmMatch": 0, + "default": 51, + "total": 51 }, "targetTranslated": { - "tmMatch": 14, - "default": 798, - "total": 812 + "tmMatch": 0, + "default": 51, + "total": 51 }, "translatedByMt": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -7383,9 +7317,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 287, - "total": 291 + "tmMatch": 0, + "default": 51, + "total": 51 }, "approvalCosts": { "tmMatch": 0, @@ -7397,33 +7331,33 @@ }, { "user": { - "id": 15505848, - "username": "hayashijanu", - "fullName": "hayashijanu", + "id": 15931443, + "username": "Vide_cui_fide19", + "fullName": "Vide_cui_fide19", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15505848/medium/2b9d7bd5232e9e19fb5bd7d01415dc75_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15931443/medium/687f6c9328c87b4af010f24f3944c477_default.png", "preTranslated": 0, - "totalCosts": 250 + "totalCosts": 632 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 250 + "totalCosts": 632 }, "translated": { "tmMatch": 0, - "default": 250, - "total": 250 + "default": 632, + "total": 632 }, "targetTranslated": { "tmMatch": 0, - "default": 227, - "total": 227 + "default": 570, + "total": 570 }, "translatedByMt": { "tmMatch": 0, @@ -7437,8 +7371,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 250, - "total": 250 + "default": 632, + "total": 632 }, "approvalCosts": { "tmMatch": 0, @@ -7450,38 +7384,38 @@ }, { "user": { - "id": 15844527, - "username": "huephuong", - "fullName": "huephuong", + "id": 15802891, + "username": "WeamESP", + "fullName": "WeamESP", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15844527/medium/a4d5a8ae8c27d8cae9261676ee81bbeb_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15802891/medium/00d633d67b92e856404e1ff8c53c6c18_default.png", "preTranslated": 0, - "totalCosts": 3594 + "totalCosts": 12 }, "languages": [ { "language": { - "id": "vi", - "name": "Vietnamese", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3594 + "totalCosts": 12 }, "translated": { - "tmMatch": 36, - "default": 3558, - "total": 3594 + "tmMatch": 0, + "default": 12, + "total": 12 }, "targetTranslated": { - "tmMatch": 61, - "default": 5028, - "total": 5089 + "tmMatch": 0, + "default": 14, + "total": 14 }, "translatedByMt": { - "tmMatch": 9, + "tmMatch": 0, "default": 0, - "total": 9 + "total": 0 }, "approved": { "tmMatch": 0, @@ -7489,9 +7423,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 36, - "default": 3558, - "total": 3594 + "tmMatch": 0, + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -7503,33 +7437,33 @@ }, { "user": { - "id": 15896939, - "username": "iNatas", - "fullName": "iNatas", + "id": 15930027, + "username": "Weleson", + "fullName": "Weleson", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15896939/medium/81ad856f439fd2161c40c78913c17005_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15930027/medium/a5e15074180cfa679f0956355b9d30be_default.png", "preTranslated": 0, - "totalCosts": 24 + "totalCosts": 10 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 24 + "totalCosts": 10 }, "translated": { - "tmMatch": 0, - "default": 24, - "total": 24 + "tmMatch": 10, + "default": 0, + "total": 10 }, "targetTranslated": { - "tmMatch": 0, - "default": 52, - "total": 52 + "tmMatch": 11, + "default": 0, + "total": 11 }, "translatedByMt": { "tmMatch": 0, @@ -7542,9 +7476,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 24, - "total": 24 + "tmMatch": 10, + "default": 0, + "total": 10 }, "approvalCosts": { "tmMatch": 0, @@ -7556,38 +7490,38 @@ }, { "user": { - "id": 15558917, - "username": "imalittlemole", - "fullName": "imalittlemole", + "id": 15950093, + "username": "WholesomeBruh", + "fullName": "WholesomeBruh", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15558917/medium/3140ea0253adc0e3f3c81b050f3b30b3.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15950093/medium/0ca7566575ffb3df8169a24c985fc2f8_default.png", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 5041 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "hi", + "name": "Hindi", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 5041 }, "translated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 21, + "default": 5020, + "total": 5041 }, "targetTranslated": { - "tmMatch": 6, - "default": 0, - "total": 6 + "tmMatch": 32, + "default": 8996, + "total": 9028 }, "translatedByMt": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 8, + "default": 12, + "total": 20 }, "approved": { "tmMatch": 0, @@ -7595,9 +7529,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 21, + "default": 5020, + "total": 5041 }, "approvalCosts": { "tmMatch": 0, @@ -7609,33 +7543,33 @@ }, { "user": { - "id": 15820855, - "username": "irynamuiassarova", - "fullName": "irynamuiassarova", + "id": 15904329, + "username": "Winnie.L", + "fullName": "Winnie.L", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15820855/medium/f885183eca0fe586cbf9985e1d075e0f_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15904329/medium/ad6815a541e6437ce98e4ae399019777_default.png", "preTranslated": 0, - "totalCosts": 123 + "totalCosts": 405 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 123 + "totalCosts": 405 }, "translated": { - "tmMatch": 0, - "default": 123, - "total": 123 + "tmMatch": 1, + "default": 404, + "total": 405 }, "targetTranslated": { - "tmMatch": 0, - "default": 105, - "total": 105 + "tmMatch": 4, + "default": 689, + "total": 693 }, "translatedByMt": { "tmMatch": 0, @@ -7648,9 +7582,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 123, - "total": 123 + "tmMatch": 1, + "default": 404, + "total": 405 }, "approvalCosts": { "tmMatch": 0, @@ -7662,33 +7596,33 @@ }, { "user": { - "id": 15793393, - "username": "jawnior", - "fullName": "jawnior", + "id": 15893819, + "username": "Xiran", + "fullName": "Xiran", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15793393/medium/5a520790143c8235899f8cef18106545_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15893819/medium/e579822f448602f334180dc7ced2e68d_default.png", "preTranslated": 0, - "totalCosts": 142 + "totalCosts": 238 }, "languages": [ { "language": { - "id": "pl", - "name": "Polish", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 142 + "totalCosts": 238 }, "translated": { "tmMatch": 0, - "default": 142, - "total": 142 + "default": 238, + "total": 238 }, "targetTranslated": { "tmMatch": 0, - "default": 135, - "total": 135 + "default": 401, + "total": 401 }, "translatedByMt": { "tmMatch": 0, @@ -7702,8 +7636,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 142, - "total": 142 + "default": 238, + "total": 238 }, "approvalCosts": { "tmMatch": 0, @@ -7715,38 +7649,38 @@ }, { "user": { - "id": 15783923, - "username": "jim-1998", - "fullName": "jim-1998", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15783923/medium/eca420e6e8bb3f959364b76e4bb4c914_default.png", + "id": 15904893, + "username": "Yuki139", + "fullName": "Yuki139", + "userRole": "", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15904893/medium/a3512e4d1f0f34b9b87654a5841a2a16_default.png", "preTranslated": 0, - "totalCosts": 24 + "totalCosts": 31 }, "languages": [ { "language": { "id": "zh-CN", "name": "Chinese Simplified", - "userRole": "Translator", + "userRole": "Limited Access", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 24 + "totalCosts": 31 }, "translated": { - "tmMatch": 5, - "default": 19, - "total": 24 + "tmMatch": 0, + "default": 31, + "total": 31 }, "targetTranslated": { - "tmMatch": 11, - "default": 31, - "total": 42 + "tmMatch": 0, + "default": 45, + "total": 45 }, "translatedByMt": { - "tmMatch": 5, - "default": 1, - "total": 6 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -7754,9 +7688,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 19, - "total": 24 + "tmMatch": 0, + "default": 31, + "total": 31 }, "approvalCosts": { "tmMatch": 0, @@ -7768,38 +7702,38 @@ }, { "user": { - "id": 15821191, - "username": "jkmharambe", - "fullName": "jkmharambe", + "id": 16014193, + "username": "Znamenshikov96", + "fullName": "Znamenshikov96", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15821191/medium/98569265061586f339bdfcbfcaba42fd_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16014193/medium/84b6d648d4704b4025b53d0de4ec83e7_default.png", "preTranslated": 0, - "totalCosts": 105 + "totalCosts": 1 }, "languages": [ { "language": { - "id": "pl", - "name": "Polish", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 105 + "totalCosts": 1 }, "translated": { "tmMatch": 0, - "default": 105, - "total": 105 + "default": 1, + "total": 1 }, "targetTranslated": { "tmMatch": 0, - "default": 86, - "total": 86 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, - "default": 15, - "total": 15 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -7808,8 +7742,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 105, - "total": 105 + "default": 1, + "total": 1 }, "approvalCosts": { "tmMatch": 0, @@ -7821,38 +7755,38 @@ }, { "user": { - "id": 15815505, - "username": "jonam007", - "fullName": "jonam007", + "id": 15966817, + "username": "afiqz", + "fullName": "afiqz", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15815505/medium/6135fa5b8c8d7733409c86857af201b4_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966817/medium/c84993de3bc9bf0b9eb7882012279118_default.png", "preTranslated": 0, - "totalCosts": 42 + "totalCosts": 3414 }, "languages": [ { "language": { - "id": "hi", - "name": "Hindi", + "id": "ms", + "name": "Malay", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 42 + "totalCosts": 3414 }, "translated": { - "tmMatch": 26, - "default": 16, - "total": 42 + "tmMatch": 31, + "default": 3383, + "total": 3414 }, "targetTranslated": { - "tmMatch": 50, - "default": 38, - "total": 88 + "tmMatch": 31, + "default": 3042, + "total": 3073 }, "translatedByMt": { - "tmMatch": 5, + "tmMatch": 0, "default": 0, - "total": 5 + "total": 0 }, "approved": { "tmMatch": 0, @@ -7860,9 +7794,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 26, - "default": 16, - "total": 42 + "tmMatch": 31, + "default": 3383, + "total": 3414 }, "approvalCosts": { "tmMatch": 0, @@ -7874,13 +7808,13 @@ }, { "user": { - "id": 15891369, - "username": "kacperm", - "fullName": "kacperm", + "id": 14668500, + "username": "alina.t", + "fullName": "alina.t", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15891369/medium/8ab205674e1044c3621ab01c2d938cc2_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14668500/medium/98cd841cc552285bd60d87aee560a77f_default.png", "preTranslated": 0, - "totalCosts": 1262 + "totalCosts": 10 }, "languages": [ { @@ -7890,22 +7824,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1262 + "totalCosts": 10 }, "translated": { - "tmMatch": 7, - "default": 1255, - "total": 1262 + "tmMatch": 0, + "default": 10, + "total": 10 }, "targetTranslated": { - "tmMatch": 6, - "default": 1062, - "total": 1068 + "tmMatch": 0, + "default": 9, + "total": 9 }, "translatedByMt": { - "tmMatch": 6, - "default": 709, - "total": 715 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -7913,9 +7847,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 1255, - "total": 1262 + "tmMatch": 0, + "default": 10, + "total": 10 }, "approvalCosts": { "tmMatch": 0, @@ -7927,38 +7861,38 @@ }, { "user": { - "id": 15801649, - "username": "kimoonss", - "fullName": "kimoonss", + "id": 15730101, + "username": "anaphant", + "fullName": "anaphant", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15801649/medium/167c67f950560e1f810d566c572d78fa_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15730101/medium/54df140ba50202fe839069eb63683d45.png", "preTranslated": 0, - "totalCosts": 85 + "totalCosts": 2412 }, "languages": [ { "language": { - "id": "ko", - "name": "Korean", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 85 + "totalCosts": 2412 }, "translated": { - "tmMatch": 17, - "default": 68, - "total": 85 + "tmMatch": 24, + "default": 2388, + "total": 2412 }, "targetTranslated": { - "tmMatch": 19, - "default": 55, - "total": 74 + "tmMatch": 38, + "default": 2963, + "total": 3001 }, "translatedByMt": { - "tmMatch": 6, + "tmMatch": 0, "default": 0, - "total": 6 + "total": 0 }, "approved": { "tmMatch": 0, @@ -7966,9 +7900,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 17, - "default": 68, - "total": 85 + "tmMatch": 24, + "default": 2388, + "total": 2412 }, "approvalCosts": { "tmMatch": 0, @@ -7980,38 +7914,38 @@ }, { "user": { - "id": 15776027, - "username": "korbisch", - "fullName": "korbisch", + "id": 15948119, + "username": "andy314", + "fullName": "andy314", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15776027/medium/5ff7549d8af9bf4fc4bae6e891d9bce5_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948119/medium/a07f80653e7d4bafe82bd7e8a3a44cec_default.png", "preTranslated": 0, - "totalCosts": 665 + "totalCosts": 33 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 665 + "totalCosts": 33 }, "translated": { - "tmMatch": 9, - "default": 656, - "total": 665 + "tmMatch": 0, + "default": 33, + "total": 33 }, "targetTranslated": { - "tmMatch": 9, - "default": 635, - "total": 644 + "tmMatch": 0, + "default": 29, + "total": 29 }, "translatedByMt": { - "tmMatch": 6, - "default": 313, - "total": 319 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -8019,9 +7953,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 9, - "default": 656, - "total": 665 + "tmMatch": 0, + "default": 33, + "total": 33 }, "approvalCosts": { "tmMatch": 0, @@ -8033,33 +7967,33 @@ }, { "user": { - "id": 15887127, - "username": "kshyun28", - "fullName": "kshyun28", + "id": 13440487, + "username": "annuska2902", + "fullName": "annuska2902", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15887127/medium/8638193af28570a64a5364efc6acad44_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13440487/medium/673f0937920d5419069d2e9fb004e6f2.jpg", "preTranslated": 0, - "totalCosts": 3 + "totalCosts": 11 }, "languages": [ { "language": { - "id": "fil", - "name": "Filipino", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3 + "totalCosts": 11 }, "translated": { "tmMatch": 0, - "default": 3, - "total": 3 + "default": 11, + "total": 11 }, "targetTranslated": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 8, + "total": 8 }, "translatedByMt": { "tmMatch": 0, @@ -8073,8 +8007,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 3, - "total": 3 + "default": 11, + "total": 11 }, "approvalCosts": { "tmMatch": 0, @@ -8086,38 +8020,38 @@ }, { "user": { - "id": 15807305, - "username": "kutsaev", - "fullName": "kutsaev", + "id": 15967893, + "username": "apacala", + "fullName": "apacala", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15807305/medium/42b4c245c534a2ab284fe5e2b3c599f9_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967893/medium/6f427c7b8d63cf93f27c4df77f07a2b5_default.png", "preTranslated": 0, - "totalCosts": 154 + "totalCosts": 1300 }, "languages": [ { "language": { - "id": "be", - "name": "Belarusian", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 154 + "totalCosts": 1300 }, "translated": { - "tmMatch": 29, - "default": 125, - "total": 154 + "tmMatch": 12, + "default": 1288, + "total": 1300 }, "targetTranslated": { - "tmMatch": 29, - "default": 107, - "total": 136 + "tmMatch": 12, + "default": 1696, + "total": 1708 }, "translatedByMt": { - "tmMatch": 27, + "tmMatch": 0, "default": 0, - "total": 27 + "total": 0 }, "approved": { "tmMatch": 0, @@ -8125,9 +8059,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 29, - "default": 125, - "total": 154 + "tmMatch": 12, + "default": 1288, + "total": 1300 }, "approvalCosts": { "tmMatch": 0, @@ -8139,33 +8073,33 @@ }, { "user": { - "id": 15835891, - "username": "louislucrypto", - "fullName": "louislucrypto", + "id": 15966545, + "username": "askr", + "fullName": "askr", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15835891/medium/00d4bc2556097b390600a1bc57d06aaa_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966545/medium/350ebd9c64c3a9a5244827c6f34d05e7_default.png", "preTranslated": 0, - "totalCosts": 823 + "totalCosts": 2992 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 823 + "totalCosts": 2992 }, "translated": { - "tmMatch": 0, - "default": 823, - "total": 823 + "tmMatch": 405, + "default": 2587, + "total": 2992 }, "targetTranslated": { - "tmMatch": 0, - "default": 1407, - "total": 1407 + "tmMatch": 548, + "default": 3091, + "total": 3639 }, "translatedByMt": { "tmMatch": 0, @@ -8178,9 +8112,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 823, - "total": 823 + "tmMatch": 405, + "default": 2587, + "total": 2992 }, "approvalCosts": { "tmMatch": 0, @@ -8192,38 +8126,38 @@ }, { "user": { - "id": 12557683, - "username": "lucasrl", - "fullName": "lucasrl", + "id": 15467576, + "username": "augur", + "fullName": "augur", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12557683/medium/5c01a0fc29af9e0b22d8d00c40fd8d61.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15467576/medium/471f881427c816c83c952446739e01d8_default.png", "preTranslated": 0, - "totalCosts": 91 + "totalCosts": 263 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 91 + "totalCosts": 263 }, "translated": { "tmMatch": 0, - "default": 91, - "total": 91 + "default": 263, + "total": 263 }, "targetTranslated": { "tmMatch": 0, - "default": 97, - "total": 97 + "default": 233, + "total": 233 }, "translatedByMt": { "tmMatch": 0, - "default": 3, - "total": 3 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -8232,8 +8166,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 91, - "total": 91 + "default": 263, + "total": 263 }, "approvalCosts": { "tmMatch": 0, @@ -8245,38 +8179,38 @@ }, { "user": { - "id": 15881053, - "username": "luxxing", - "fullName": "luxxing", + "id": 15934847, + "username": "bg0918", + "fullName": "bg0918", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15881053/medium/95bd3e1a44d660c405ba34c0732edbcc_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934847/medium/9c5c4efce1e504f52a160784e53ed9a3_default.png", "preTranslated": 0, - "totalCosts": 70 + "totalCosts": 4 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "ko", + "name": "Korean", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 70 + "totalCosts": 4 }, "translated": { "tmMatch": 0, - "default": 70, - "total": 70 + "default": 4, + "total": 4 }, "targetTranslated": { "tmMatch": 0, - "default": 81, - "total": 81 + "default": 4, + "total": 4 }, "translatedByMt": { "tmMatch": 0, - "default": 7, - "total": 7 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -8285,8 +8219,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 70, - "total": 70 + "default": 4, + "total": 4 }, "approvalCosts": { "tmMatch": 0, @@ -8298,33 +8232,33 @@ }, { "user": { - "id": 15857609, - "username": "maikoldelia1980", - "fullName": "maikoldelia1980", + "id": 15963921, + "username": "bicebaris", + "fullName": "bicebaris", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15857609/medium/d701bf5c01e8eb2abfd84556f477d828_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963921/medium/5ed57dad6d6d747e47d9378a8006ede1.jpg", "preTranslated": 0, - "totalCosts": 4 + "totalCosts": 36625 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4 + "totalCosts": 36625 }, "translated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 150, + "default": 36475, + "total": 36625 }, "targetTranslated": { - "tmMatch": 0, - "default": 5, - "total": 5 + "tmMatch": 114, + "default": 29087, + "total": 29201 }, "translatedByMt": { "tmMatch": 0, @@ -8337,9 +8271,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 150, + "default": 36475, + "total": 36625 }, "approvalCosts": { "tmMatch": 0, @@ -8351,38 +8285,38 @@ }, { "user": { - "id": 15856843, - "username": "mariia_pryshko", - "fullName": "mariia_pryshko", + "id": 15945951, + "username": "bluffist", + "fullName": "bluffist", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15856843/medium/2c53a645673e90327155f24d7f1237f5_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15945951/medium/6ae9bdebcfe1383777292a72667b57ea_default.png", "preTranslated": 0, - "totalCosts": 873 + "totalCosts": 122 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "fil", + "name": "Filipino", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 873 + "totalCosts": 122 }, "translated": { - "tmMatch": 12, - "default": 861, - "total": 873 + "tmMatch": 5, + "default": 117, + "total": 122 }, "targetTranslated": { - "tmMatch": 12, - "default": 777, - "total": 789 + "tmMatch": 3, + "default": 147, + "total": 150 }, "translatedByMt": { - "tmMatch": 8, - "default": 6, - "total": 14 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -8390,9 +8324,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 12, - "default": 861, - "total": 873 + "tmMatch": 5, + "default": 117, + "total": 122 }, "approvalCosts": { "tmMatch": 0, @@ -8404,33 +8338,33 @@ }, { "user": { - "id": 14845960, - "username": "matusame", - "fullName": "matusame", + "id": 15968043, + "username": "boluwatife_4523", + "fullName": "boluwatife_4523", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14845960/medium/2b9e2f8505875b313fc59f15bb51edab.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968043/medium/75bf5a0c2da67490798bb33f9d44c15b_default.png", "preTranslated": 0, - "totalCosts": 655 + "totalCosts": 217 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "yo", + "name": "Yoruba", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 655 + "totalCosts": 217 }, "translated": { - "tmMatch": 13, - "default": 642, - "total": 655 + "tmMatch": 2, + "default": 215, + "total": 217 }, "targetTranslated": { - "tmMatch": 16, - "default": 694, - "total": 710 + "tmMatch": 2, + "default": 257, + "total": 259 }, "translatedByMt": { "tmMatch": 0, @@ -8443,9 +8377,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 13, - "default": 642, - "total": 655 + "tmMatch": 2, + "default": 215, + "total": 217 }, "approvalCosts": { "tmMatch": 0, @@ -8457,33 +8391,33 @@ }, { "user": { - "id": 15565689, - "username": "mgaaron", - "fullName": "mgaaron", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15565689/medium/fd4ec0d5993a442994e9fb7284537650_default.png", + "id": 15937285, + "username": "btc123456789000", + "fullName": "btc123456789000", + "userRole": "Blocked", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15937285/medium/27f38608ecd08eb3baf66c49bc61d5b1_default.png", "preTranslated": 0, - "totalCosts": 80 + "totalCosts": 7 }, "languages": [ { "language": { - "id": "af", - "name": "Afrikaans", - "userRole": "Translator", + "id": "de", + "name": "German", + "userRole": "Blocked", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 80 + "totalCosts": 7 }, "translated": { "tmMatch": 0, - "default": 80, - "total": 80 + "default": 7, + "total": 7 }, "targetTranslated": { "tmMatch": 0, - "default": 152, - "total": 152 + "default": 7, + "total": 7 }, "translatedByMt": { "tmMatch": 0, @@ -8497,8 +8431,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 80, - "total": 80 + "default": 7, + "total": 7 }, "approvalCosts": { "tmMatch": 0, @@ -8510,38 +8444,38 @@ }, { "user": { - "id": 14739786, - "username": "mk.marcus.aurelius", - "fullName": "mk.marcus.aurelius", + "id": 15958911, + "username": "charlaiz", + "fullName": "charlaiz", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14739786/medium/2880dbab818b3884cfb090a588203a28_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15958911/medium/8f11adb77af544d9fd33ec842e035832_default.png", "preTranslated": 0, - "totalCosts": 69 + "totalCosts": 4021 }, "languages": [ { "language": { - "id": "cs", - "name": "Czech", + "id": "nl", + "name": "Dutch", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 69 + "totalCosts": 4021 }, "translated": { - "tmMatch": 2, - "default": 67, - "total": 69 + "tmMatch": 7, + "default": 4014, + "total": 4021 }, "targetTranslated": { - "tmMatch": 2, - "default": 62, - "total": 64 + "tmMatch": 8, + "default": 4177, + "total": 4185 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "approved": { "tmMatch": 0, @@ -8549,9 +8483,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 67, - "total": 69 + "tmMatch": 7, + "default": 4014, + "total": 4021 }, "approvalCosts": { "tmMatch": 0, @@ -8563,33 +8497,33 @@ }, { "user": { - "id": 15869599, - "username": "myymgc", - "fullName": "myymgc", + "id": 15956409, + "username": "ciccez", + "fullName": "ciccez", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15869599/medium/b7b876adc838cdd4b027bb025ac47dd9_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956409/medium/f88667439736852c9869a90e07a3b8b3_default.png", "preTranslated": 0, - "totalCosts": 10 + "totalCosts": 12 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", + "id": "it", + "name": "Italian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10 + "totalCosts": 12 }, "translated": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 12, + "total": 12 }, "targetTranslated": { "tmMatch": 0, - "default": 18, - "total": 18 + "default": 11, + "total": 11 }, "translatedByMt": { "tmMatch": 0, @@ -8603,8 +8537,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -8616,38 +8550,38 @@ }, { "user": { - "id": 15875251, - "username": "noagona", - "fullName": "noagona", + "id": 15966289, + "username": "cinaryasemin", + "fullName": "cinaryasemin", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15875251/medium/beafaf5c34722390e1d1e1dc58ab193b_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966289/medium/4db7c2566069e455f22d0027dcd3bb06_default.png", "preTranslated": 0, - "totalCosts": 211 + "totalCosts": 1690 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 211 + "totalCosts": 1690 }, "translated": { - "tmMatch": 0, - "default": 211, - "total": 211 + "tmMatch": 23, + "default": 1667, + "total": 1690 }, "targetTranslated": { - "tmMatch": 0, - "default": 238, - "total": 238 + "tmMatch": 25, + "default": 1380, + "total": 1405 }, "translatedByMt": { "tmMatch": 0, - "default": 155, - "total": 155 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -8655,9 +8589,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 211, - "total": 211 + "tmMatch": 23, + "default": 1667, + "total": 1690 }, "approvalCosts": { "tmMatch": 0, @@ -8669,38 +8603,38 @@ }, { "user": { - "id": 14499538, - "username": "nodhaiby", - "fullName": "nodhaiby", + "id": 15967865, + "username": "cryptonord", + "fullName": "cryptonord", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14499538/medium/b4afe4954488f1cbb0ff50dfdb2d97ae_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967865/medium/34f0aa13b059217b9be9713242c77a51_default.png", "preTranslated": 0, - "totalCosts": 336 + "totalCosts": 9902 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "af", + "name": "Afrikaans", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 336 + "totalCosts": 28 }, "translated": { "tmMatch": 0, - "default": 336, - "total": 336 + "default": 28, + "total": 28 }, "targetTranslated": { "tmMatch": 0, - "default": 365, - "total": 365 + "default": 28, + "total": 28 }, "translatedByMt": { "tmMatch": 0, - "default": 65, - "total": 65 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -8709,51 +8643,38 @@ }, "translationCosts": { "tmMatch": 0, - "default": 336, - "total": 336 + "default": 28, + "total": 28 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15861375, - "username": "nw1ssu", - "fullName": "nw1ssu", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15861375/medium/7fc13c255c11285c08a2b4bc41344626_default.png", - "preTranslated": 0, - "totalCosts": 11 - }, - "languages": [ + }, { "language": { - "id": "ru", - "name": "Russian", + "id": "da", + "name": "Danish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11 + "totalCosts": 5492 }, "translated": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 27, + "default": 5465, + "total": 5492 }, "targetTranslated": { - "tmMatch": 0, - "default": 9, - "total": 9 + "tmMatch": 28, + "default": 5468, + "total": 5496 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 6, "default": 0, - "total": 0 + "total": 6 }, "approved": { "tmMatch": 0, @@ -8761,52 +8682,39 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 27, + "default": 5465, + "total": 5492 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15822531, - "username": "oleksandra.davydchuk", - "fullName": "oleksandra.davydchuk", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15822531/medium/f88ef37f5adac630fce6e232dae67668_default.png", - "preTranslated": 0, - "totalCosts": 387 - }, - "languages": [ + }, { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "gu-IN", + "name": "Gujarati", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 387 + "totalCosts": 621 }, "translated": { "tmMatch": 0, - "default": 387, - "total": 387 + "default": 621, + "total": 621 }, "targetTranslated": { "tmMatch": 0, - "default": 331, - "total": 331 + "default": 1033, + "total": 1033 }, "translatedByMt": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -8815,51 +8723,38 @@ }, "translationCosts": { "tmMatch": 0, - "default": 387, - "total": 387 + "default": 621, + "total": 621 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15777781, - "username": "pamdany", - "fullName": "pamdany", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15777781/medium/9a65428320e5ec9d625f97253b53c9f4_default.png", - "preTranslated": 0, - "totalCosts": 711 - }, - "languages": [ + }, { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "pa-IN", + "name": "Punjabi", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 711 + "totalCosts": 3416 }, "translated": { - "tmMatch": 5, - "default": 706, - "total": 711 + "tmMatch": 8, + "default": 3408, + "total": 3416 }, "targetTranslated": { - "tmMatch": 6, - "default": 804, - "total": 810 + "tmMatch": 13, + "default": 6086, + "total": 6099 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 3, "default": 0, - "total": 0 + "total": 3 }, "approved": { "tmMatch": 0, @@ -8867,47 +8762,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 706, - "total": 711 + "tmMatch": 8, + "default": 3408, + "total": 3416 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15830251, - "username": "paodequeijocompingado", - "fullName": "paodequeijocompingado", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15830251/medium/df305c6124650d8f50add955b4770062_default.png", - "preTranslated": 0, - "totalCosts": 43 - }, - "languages": [ + }, { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "ta", + "name": "Tamil", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 43 + "totalCosts": 290 }, "translated": { "tmMatch": 0, - "default": 43, - "total": 43 + "default": 290, + "total": 290 }, "targetTranslated": { "tmMatch": 0, - "default": 50, - "total": 50 + "default": 613, + "total": 613 }, "translatedByMt": { "tmMatch": 0, @@ -8921,51 +8803,38 @@ }, "translationCosts": { "tmMatch": 0, - "default": 43, - "total": 43 + "default": 290, + "total": 290 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15779979, - "username": "qiliuk", - "fullName": "qiliuk", - "userRole": "Blocked", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15779979/medium/fa50e9730b7826a9077a8f3b0f1fa1d9_default.png", - "preTranslated": 0, - "totalCosts": 550 - }, - "languages": [ + }, { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Blocked", + "id": "ur-IN", + "name": "Urdu (India)", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 548 + "totalCosts": 55 }, "translated": { "tmMatch": 0, - "default": 548, - "total": 548 + "default": 55, + "total": 55 }, "targetTranslated": { "tmMatch": 0, - "default": 752, - "total": 752 + "default": 72, + "total": 72 }, "translatedByMt": { "tmMatch": 0, - "default": 385, - "total": 385 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -8974,33 +8843,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 548, - "total": 548 + "default": 55, + "total": 55 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15946075, + "username": "cuma99", + "fullName": "cuma99", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946075/medium/08ef5c94dfbb0d36bb5933ce2e5d567c_default.png", + "preTranslated": 0, + "totalCosts": 161 + }, + "languages": [ { "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Blocked", + "id": "sr-CS", + "name": "Serbian (Latin)", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 161 }, "translated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 0, + "default": 161, + "total": 161 }, "targetTranslated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 0, + "default": 136, + "total": 136 }, "translatedByMt": { "tmMatch": 0, @@ -9013,9 +8895,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 0, + "default": 161, + "total": 161 }, "approvalCosts": { "tmMatch": 0, @@ -9027,33 +8909,33 @@ }, { "user": { - "id": 15846953, - "username": "r4ph43l", - "fullName": "r4ph43l", + "id": 15988145, + "username": "cxr1025048717", + "fullName": "cxr1025048717", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15846953/medium/096645a011f51f1877d62d7f04495591_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15988145/medium/f630d0d88a1125dbfcb7a0709531db9e_default.png", "preTranslated": 0, - "totalCosts": 103 + "totalCosts": 234 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 103 + "totalCosts": 234 }, "translated": { "tmMatch": 0, - "default": 103, - "total": 103 + "default": 234, + "total": 234 }, "targetTranslated": { "tmMatch": 0, - "default": 95, - "total": 95 + "default": 419, + "total": 419 }, "translatedByMt": { "tmMatch": 0, @@ -9067,8 +8949,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 103, - "total": 103 + "default": 234, + "total": 234 }, "approvalCosts": { "tmMatch": 0, @@ -9080,48 +8962,48 @@ }, { "user": { - "id": 13986387, - "username": "rafarocha", - "fullName": "rafarocha", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg", + "id": 15967645, + "username": "darkknightIndia87", + "fullName": "darkknightIndia87", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967645/medium/0251238d8874ccd46d9d727c4359a680_default.png", "preTranslated": 0, - "totalCosts": 19585 + "totalCosts": 17 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Translator, Proofreader", + "id": "te", + "name": "Telugu", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 19585 + "totalCosts": 17 }, "translated": { - "tmMatch": 479, - "default": 19106, - "total": 19585 + "tmMatch": 0, + "default": 17, + "total": 17 }, "targetTranslated": { - "tmMatch": 499, - "default": 20686, - "total": 21185 + "tmMatch": 0, + "default": 22, + "total": 22 }, "translatedByMt": { - "tmMatch": 132, - "default": 1273, - "total": 1405 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 27 + "total": 0 }, "translationCosts": { - "tmMatch": 479, - "default": 19106, - "total": 19585 + "tmMatch": 0, + "default": 17, + "total": 17 }, "approvalCosts": { "tmMatch": 0, @@ -9133,38 +9015,38 @@ }, { "user": { - "id": 15812637, - "username": "ramoff", - "fullName": "ramoff", + "id": 15962083, + "username": "dilaras", + "fullName": "dilaras", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15812637/medium/0f9ea3468e0b7411b5600948f312b5f9_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962083/medium/4e8e909e5831ffe856eda1e43fd6fa05_default.png", "preTranslated": 0, - "totalCosts": 344 + "totalCosts": 96 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 344 + "totalCosts": 96 }, "translated": { "tmMatch": 0, - "default": 344, - "total": 344 + "default": 96, + "total": 96 }, "targetTranslated": { "tmMatch": 0, - "default": 307, - "total": 307 + "default": 87, + "total": 87 }, "translatedByMt": { "tmMatch": 0, - "default": 229, - "total": 229 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -9173,8 +9055,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 344, - "total": 344 + "default": 96, + "total": 96 }, "approvalCosts": { "tmMatch": 0, @@ -9186,38 +9068,38 @@ }, { "user": { - "id": 15086195, - "username": "saintchen", - "fullName": "saintchen", + "id": 15938247, + "username": "dox.xela", + "fullName": "dox.xela", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15086195/medium/cb67cfa9d14a4cb5d9cb8c9ad9fa18b9.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15938247/medium/c79525a81824849aacad985a051b96b9_default.png", "preTranslated": 0, - "totalCosts": 85 + "totalCosts": 257 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 85 + "totalCosts": 257 }, "translated": { "tmMatch": 0, - "default": 85, - "total": 85 + "default": 257, + "total": 257 }, "targetTranslated": { "tmMatch": 0, - "default": 128, - "total": 128 + "default": 448, + "total": 448 }, "translatedByMt": { "tmMatch": 0, - "default": 19, - "total": 19 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -9226,8 +9108,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 85, - "total": 85 + "default": 257, + "total": 257 }, "approvalCosts": { "tmMatch": 0, @@ -9239,33 +9121,33 @@ }, { "user": { - "id": 15726779, - "username": "sempet0.", - "fullName": "sempet0.", + "id": 15993607, + "username": "edurh", + "fullName": "edurh", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15726779/medium/df924d75f463a8b625262db79f77ec07_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993607/medium/ed9beba996490505dc07455130c75ae2_default.png", "preTranslated": 0, - "totalCosts": 278 + "totalCosts": 58 }, "languages": [ { "language": { - "id": "eu", - "name": "Basque", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 278 + "totalCosts": 58 }, "translated": { "tmMatch": 0, - "default": 278, - "total": 278 + "default": 58, + "total": 58 }, "targetTranslated": { "tmMatch": 0, - "default": 226, - "total": 226 + "default": 70, + "total": 70 }, "translatedByMt": { "tmMatch": 0, @@ -9279,8 +9161,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 278, - "total": 278 + "default": 58, + "total": 58 }, "approvalCosts": { "tmMatch": 0, @@ -9292,13 +9174,13 @@ }, { "user": { - "id": 15783373, - "username": "skooba007", - "fullName": "skooba007", + "id": 15841839, + "username": "ekc9399", + "fullName": "ekc9399", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15783373/medium/d4b9ae1fb28fbbc02309db09f08b6791.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15841839/medium/0a25585c566bb1f7be4cba84b02e8561_default.png", "preTranslated": 0, - "totalCosts": 26 + "totalCosts": 121 }, "languages": [ { @@ -9308,17 +9190,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15 + "totalCosts": 97 }, "translated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 3, + "default": 94, + "total": 97 }, "targetTranslated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 3, + "default": 93, + "total": 96 }, "translatedByMt": { "tmMatch": 0, @@ -9331,9 +9213,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 3, + "default": 94, + "total": 97 }, "approvalCosts": { "tmMatch": 0, @@ -9343,27 +9225,27 @@ }, { "language": { - "id": "ar", - "name": "Arabic", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11 + "totalCosts": 12 }, "translated": { - "tmMatch": 1, - "default": 10, - "total": 11 + "tmMatch": 0, + "default": 12, + "total": 12 }, "targetTranslated": { - "tmMatch": 1, - "default": 10, - "total": 11 + "tmMatch": 0, + "default": 17, + "total": 17 }, "translatedByMt": { - "tmMatch": 1, - "default": 6, - "total": 7 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -9371,47 +9253,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 10, - "total": 11 + "tmMatch": 0, + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15822511, - "username": "sofiia.novak", - "fullName": "sofiia.novak", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15822511/medium/02f20ff1b91c682f1080d90c2020fb2a_default.png", - "preTranslated": 0, - "totalCosts": 111 - }, - "languages": [ + }, { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "ja", + "name": "Japanese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 111 + "totalCosts": 12 }, "translated": { - "tmMatch": 0, - "default": 111, - "total": 111 + "tmMatch": 2, + "default": 10, + "total": 12 }, "targetTranslated": { - "tmMatch": 0, - "default": 117, - "total": 117 + "tmMatch": 2, + "default": 10, + "total": 12 }, "translatedByMt": { "tmMatch": 0, @@ -9424,9 +9293,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 111, - "total": 111 + "tmMatch": 2, + "default": 10, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -9438,38 +9307,38 @@ }, { "user": { - "id": 15804803, - "username": "sun_dariia", - "fullName": "sun_dariia", + "id": 16003137, + "username": "elmago_666", + "fullName": "elmago_666", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15804803/medium/e753b43a4cf480cd2a37c5795cdb83ba_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16003137/medium/d83bcad2a725eed1e3d2a414a24f0d2f_default.png", "preTranslated": 0, - "totalCosts": 4654 + "totalCosts": 4 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "it", + "name": "Italian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4654 + "totalCosts": 4 }, "translated": { - "tmMatch": 79, - "default": 4575, - "total": 4654 + "tmMatch": 0, + "default": 4, + "total": 4 }, "targetTranslated": { - "tmMatch": 78, - "default": 4299, - "total": 4377 + "tmMatch": 0, + "default": 6, + "total": 6 }, "translatedByMt": { - "tmMatch": 29, - "default": 186, - "total": 215 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -9477,9 +9346,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 79, - "default": 4575, - "total": 4654 + "tmMatch": 0, + "default": 4, + "total": 4 }, "approvalCosts": { "tmMatch": 0, @@ -9491,33 +9360,33 @@ }, { "user": { - "id": 15812939, - "username": "swanketelers", - "fullName": "swanketelers", + "id": 15964131, + "username": "emlanis", + "fullName": "emlanis", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15812939/medium/f38089c2d6ac1f2b5158d0c46c62b204_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964131/medium/5d76c92d0b8a9f664f2d28ce2e9d80d3_default.png", "preTranslated": 0, - "totalCosts": 16 + "totalCosts": 74 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "ha", + "name": "Hausa", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 16 + "totalCosts": 74 }, "translated": { - "tmMatch": 16, - "default": 0, - "total": 16 + "tmMatch": 0, + "default": 74, + "total": 74 }, "targetTranslated": { - "tmMatch": 16, - "default": 0, - "total": 16 + "tmMatch": 0, + "default": 99, + "total": 99 }, "translatedByMt": { "tmMatch": 0, @@ -9530,9 +9399,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 16, - "default": 0, - "total": 16 + "tmMatch": 0, + "default": 74, + "total": 74 }, "approvalCosts": { "tmMatch": 0, @@ -9544,38 +9413,38 @@ }, { "user": { - "id": 15826117, - "username": "tamanecvl", - "fullName": "tamanecvl", + "id": 15924581, + "username": "ethersuisse.eth", + "fullName": "ethersuisse.eth", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15826117/medium/b4c4234e5560974ba82b07fd97b6ce02_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15924581/medium/73f8095ef673913e9d454b484a8c9ad2_default.png", "preTranslated": 0, - "totalCosts": 179 + "totalCosts": 581 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "de", + "name": "German", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 179 + "totalCosts": 581 }, "translated": { "tmMatch": 0, - "default": 179, - "total": 179 + "default": 581, + "total": 581 }, "targetTranslated": { "tmMatch": 0, - "default": 171, - "total": 171 + "default": 604, + "total": 604 }, "translatedByMt": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -9584,8 +9453,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 179, - "total": 179 + "default": 581, + "total": 581 }, "approvalCosts": { "tmMatch": 0, @@ -9597,33 +9466,33 @@ }, { "user": { - "id": 15846927, - "username": "th30x", - "fullName": "th30x", + "id": 15960287, + "username": "fabiannycnd", + "fullName": "fabiannycnd", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15846927/medium/c316bda762770d395a80cb631bafba7f_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15960287/medium/82ae690984766dd6f391b26757bfedab_default.png", "preTranslated": 0, - "totalCosts": 607 + "totalCosts": 1107 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 607 + "totalCosts": 766 }, "translated": { - "tmMatch": 0, - "default": 607, - "total": 607 + "tmMatch": 3, + "default": 763, + "total": 766 }, "targetTranslated": { - "tmMatch": 0, - "default": 603, - "total": 603 + "tmMatch": 2, + "default": 776, + "total": 778 }, "translatedByMt": { "tmMatch": 0, @@ -9636,47 +9505,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 607, - "total": 607 + "tmMatch": 3, + "default": 763, + "total": 766 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15835107, - "username": "thansen.design", - "fullName": "thansen.design", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15835107/medium/7e21d4c1dd43cc6ac7ab9faa47d0f7c1_default.png", - "preTranslated": 0, - "totalCosts": 24 - }, - "languages": [ + }, { "language": { - "id": "sv-SE", - "name": "Swedish", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 24 + "totalCosts": 341 }, "translated": { "tmMatch": 0, - "default": 24, - "total": 24 + "default": 341, + "total": 341 }, "targetTranslated": { "tmMatch": 0, - "default": 23, - "total": 23 + "default": 367, + "total": 367 }, "translatedByMt": { "tmMatch": 0, @@ -9690,8 +9546,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 24, - "total": 24 + "default": 341, + "total": 341 }, "approvalCosts": { "tmMatch": 0, @@ -9703,38 +9559,38 @@ }, { "user": { - "id": 15844201, - "username": "tikhi", - "fullName": "tikhi", + "id": 15931961, + "username": "forichard10", + "fullName": "forichard10", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15844201/medium/89a35d616eb6d10c601d895a00bf79ba.JPG", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15931961/medium/ec5e9fb782d66d5d1edd8345164d3c12_default.png", "preTranslated": 0, - "totalCosts": 99 + "totalCosts": 40 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "hu", + "name": "Hungarian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 99 + "totalCosts": 40 }, "translated": { - "tmMatch": 0, - "default": 99, - "total": 99 + "tmMatch": 2, + "default": 38, + "total": 40 }, "targetTranslated": { - "tmMatch": 0, - "default": 73, - "total": 73 + "tmMatch": 2, + "default": 31, + "total": 33 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -9742,9 +9598,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 99, - "total": 99 + "tmMatch": 2, + "default": 38, + "total": 40 }, "approvalCosts": { "tmMatch": 0, @@ -9756,38 +9612,38 @@ }, { "user": { - "id": 15801343, - "username": "tonior", - "fullName": "tonior", + "id": 13845181, + "username": "ghipongman", + "fullName": "ghipongman", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15801343/medium/47a6621fc47ecf631c19ee0fc5f812e7_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13845181/medium/b7cf350da81c5ead84eb3e69af991fbc.", "preTranslated": 0, - "totalCosts": 677 + "totalCosts": 1 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 677 + "totalCosts": 1 }, "translated": { - "tmMatch": 3, - "default": 674, - "total": 677 + "tmMatch": 0, + "default": 1, + "total": 1 }, "targetTranslated": { - "tmMatch": 3, - "default": 815, - "total": 818 + "tmMatch": 0, + "default": 1, + "total": 1 }, "translatedByMt": { "tmMatch": 0, - "default": 54, - "total": 54 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -9795,9 +9651,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 674, - "total": 677 + "tmMatch": 0, + "default": 1, + "total": 1 }, "approvalCosts": { "tmMatch": 0, @@ -9809,38 +9665,38 @@ }, { "user": { - "id": 15753801, - "username": "tr4jan", - "fullName": "tr4jan", + "id": 15337968, + "username": "giantpenguin", + "fullName": "giantpenguin", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15753801/medium/3b90e971a9e4f89dcf93fefab1b26ae5.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15337968/medium/6eafe6557864573c6cb65e7f1cf11979_default.png", "preTranslated": 0, - "totalCosts": 49 + "totalCosts": 424 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 49 + "totalCosts": 424 }, "translated": { - "tmMatch": 24, - "default": 25, - "total": 49 + "tmMatch": 118, + "default": 306, + "total": 424 }, "targetTranslated": { - "tmMatch": 28, - "default": 25, - "total": 53 + "tmMatch": 177, + "default": 460, + "total": 637 }, "translatedByMt": { - "tmMatch": 24, - "default": 25, - "total": 49 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -9848,9 +9704,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 24, - "default": 25, - "total": 49 + "tmMatch": 118, + "default": 306, + "total": 424 }, "approvalCosts": { "tmMatch": 0, @@ -9862,33 +9718,33 @@ }, { "user": { - "id": 15834217, - "username": "transmaster", - "fullName": "transmaster", + "id": 16007641, + "username": "giorgip", + "fullName": "giorgip", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15834217/medium/763c75815f1373c95b94976bae622adc_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16007641/medium/c730d07fcac9a78e49a68eb2e33564e1.jpg", "preTranslated": 0, - "totalCosts": 1188 + "totalCosts": 181 }, "languages": [ { "language": { - "id": "bg", - "name": "Bulgarian", + "id": "ka", + "name": "Georgian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1188 + "totalCosts": 181 }, "translated": { - "tmMatch": 14, - "default": 1174, - "total": 1188 + "tmMatch": 13, + "default": 168, + "total": 181 }, "targetTranslated": { - "tmMatch": 14, - "default": 1193, - "total": 1207 + "tmMatch": 12, + "default": 144, + "total": 156 }, "translatedByMt": { "tmMatch": 0, @@ -9901,9 +9757,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 14, - "default": 1174, - "total": 1188 + "tmMatch": 13, + "default": 168, + "total": 181 }, "approvalCosts": { "tmMatch": 0, @@ -9915,38 +9771,38 @@ }, { "user": { - "id": 15448940, - "username": "treeleaves30760", - "fullName": "treeleaves30760", + "id": 15961437, + "username": "harpocryptes", + "fullName": "harpocryptes", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15448940/medium/66d97d0e069ae24e91f0e84e2c0a9e79_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961437/medium/d495096dfb14721b3d4848a1bc7cfdd5.jpeg", "preTranslated": 0, - "totalCosts": 163 + "totalCosts": 3323 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 163 + "totalCosts": 3323 }, "translated": { - "tmMatch": 0, - "default": 163, - "total": 163 + "tmMatch": 24, + "default": 3299, + "total": 3323 }, "targetTranslated": { - "tmMatch": 0, - "default": 307, - "total": 307 + "tmMatch": 25, + "default": 3975, + "total": 4000 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 7, "default": 0, - "total": 0 + "total": 7 }, "approved": { "tmMatch": 0, @@ -9954,9 +9810,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 163, - "total": 163 + "tmMatch": 24, + "default": 3299, + "total": 3323 }, "approvalCosts": { "tmMatch": 0, @@ -9968,38 +9824,38 @@ }, { "user": { - "id": 15460936, - "username": "tsukky", - "fullName": "tsukky", + "id": 15978083, + "username": "hermesfigueroa1", + "fullName": "hermesfigueroa1", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15460936/medium/99ed6b4051dfcad3d1fa3e4cfaa17073.JPG", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15978083/medium/b99105e6b683a732cebffd7f41329bb9_default.png", "preTranslated": 0, - "totalCosts": 17 + "totalCosts": 160 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 17 + "totalCosts": 160 }, "translated": { - "tmMatch": 7, - "default": 10, - "total": 17 + "tmMatch": 0, + "default": 160, + "total": 160 }, "targetTranslated": { - "tmMatch": 29, - "default": 27, - "total": 56 + "tmMatch": 0, + "default": 159, + "total": 159 }, "translatedByMt": { - "tmMatch": 1, - "default": 5, - "total": 6 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -10007,9 +9863,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 10, - "total": 17 + "tmMatch": 0, + "default": 160, + "total": 160 }, "approvalCosts": { "tmMatch": 0, @@ -10021,33 +9877,33 @@ }, { "user": { - "id": 15810439, - "username": "wky32768", - "fullName": "wky32768", + "id": 15844527, + "username": "huephuong", + "fullName": "huephuong", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810439/medium/bad663f0f7e2b1cec4a5da863ead6caa.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15844527/medium/a4d5a8ae8c27d8cae9261676ee81bbeb_default.png", "preTranslated": 0, - "totalCosts": 53 + "totalCosts": 4084 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 53 + "totalCosts": 4084 }, "translated": { - "tmMatch": 0, - "default": 53, - "total": 53 + "tmMatch": 29, + "default": 4055, + "total": 4084 }, "targetTranslated": { - "tmMatch": 0, - "default": 107, - "total": 107 + "tmMatch": 48, + "default": 6268, + "total": 6316 }, "translatedByMt": { "tmMatch": 0, @@ -10060,9 +9916,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 53, - "total": 53 + "tmMatch": 29, + "default": 4055, + "total": 4084 }, "approvalCosts": { "tmMatch": 0, @@ -10074,38 +9930,38 @@ }, { "user": { - "id": 15144292, - "username": "ytison", - "fullName": "ytison", + "id": 15896939, + "username": "iNatas", + "fullName": "iNatas", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15144292/medium/303a9c200ea05f3a6af7273b3e21c301_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15896939/medium/81ad856f439fd2161c40c78913c17005_default.png", "preTranslated": 0, - "totalCosts": 204 + "totalCosts": 37 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 204 + "totalCosts": 37 }, "translated": { "tmMatch": 0, - "default": 204, - "total": 204 + "default": 37, + "total": 37 }, "targetTranslated": { "tmMatch": 0, - "default": 245, - "total": 245 + "default": 75, + "total": 75 }, "translatedByMt": { "tmMatch": 0, - "default": 48, - "total": 48 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -10114,8 +9970,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 204, - "total": 204 + "default": 37, + "total": 37 }, "approvalCosts": { "tmMatch": 0, @@ -10127,38 +9983,38 @@ }, { "user": { - "id": 15804799, - "username": "zarazara", - "fullName": "zarazara", + "id": 15426594, + "username": "imad1980", + "fullName": "imad1980", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15804799/medium/8590a670951cb7fcff46050cf7699c0d_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15426594/medium/c584e5163eb6d5b7cf18520bf7231ba0.jpg", "preTranslated": 0, - "totalCosts": 177 + "totalCosts": 194 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 177 + "totalCosts": 194 }, "translated": { - "tmMatch": 5, - "default": 172, - "total": 177 + "tmMatch": 0, + "default": 194, + "total": 194 }, "targetTranslated": { - "tmMatch": 8, - "default": 225, - "total": 233 + "tmMatch": 0, + "default": 171, + "total": 171 }, "translatedByMt": { - "tmMatch": 5, - "default": 0, - "total": 5 + "tmMatch": 0, + "default": 194, + "total": 194 }, "approved": { "tmMatch": 0, @@ -10166,9 +10022,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 172, - "total": 177 + "tmMatch": 0, + "default": 194, + "total": 194 }, "approvalCosts": { "tmMatch": 0, @@ -10180,38 +10036,38 @@ }, { "user": { - "id": 15884671, - "username": "zhaozhenming", - "fullName": "zhaozhenming", + "id": 15908487, + "username": "insidetrader", + "fullName": "insidetrader", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15884671/medium/60884f4a653164bb3d315f947cbecd83_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908487/medium/2dad4c49ee42d9df9633332d432e708e.jpg", "preTranslated": 0, - "totalCosts": 91 + "totalCosts": 16509 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 91 + "totalCosts": 16509 }, "translated": { - "tmMatch": 5, - "default": 86, - "total": 91 + "tmMatch": 78, + "default": 16431, + "total": 16509 }, "targetTranslated": { - "tmMatch": 10, - "default": 141, - "total": 151 + "tmMatch": 70, + "default": 13695, + "total": 13765 }, "translatedByMt": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -10219,9 +10075,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 86, - "total": 91 + "tmMatch": 78, + "default": 16431, + "total": 16509 }, "approvalCosts": { "tmMatch": 0, @@ -10233,13 +10089,13 @@ }, { "user": { - "id": 15878735, - "username": "zybk", - "fullName": "zybk", + "id": 15956829, + "username": "isinasli", + "fullName": "isinasli", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15878735/medium/84feb9c8f0da81b396a6ab28ab88c9f7_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956829/medium/e7a64fde9e9413a2ae5add75cba88f09_default.png", "preTranslated": 0, - "totalCosts": 773 + "totalCosts": 3680 }, "languages": [ { @@ -10249,22 +10105,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 773 + "totalCosts": 3680 }, "translated": { - "tmMatch": 0, - "default": 773, - "total": 773 + "tmMatch": 17, + "default": 3663, + "total": 3680 }, "targetTranslated": { - "tmMatch": 0, - "default": 606, - "total": 606 + "tmMatch": 17, + "default": 3054, + "total": 3071 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -10272,9 +10128,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 773, - "total": 773 + "tmMatch": 17, + "default": 3663, + "total": 3680 }, "approvalCosts": { "tmMatch": 0, @@ -10286,38 +10142,38 @@ }, { "user": { - "id": 15858389, - "username": "gok7ug", - "fullName": "- - (gok7ug)", + "id": 15967115, + "username": "itsdeeters", + "fullName": "itsdeeters", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15858389/medium/2301dd32710c7c8158a63dc3fb74fddf_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967115/medium/f3008c834c6c279d6567a82bee569b7c.png", "preTranslated": 0, - "totalCosts": 60 + "totalCosts": 5374 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 60 + "totalCosts": 5374 }, "translated": { - "tmMatch": 0, - "default": 60, - "total": 60 + "tmMatch": 39, + "default": 5335, + "total": 5374 }, "targetTranslated": { - "tmMatch": 0, - "default": 52, - "total": 52 + "tmMatch": 54, + "default": 6712, + "total": 6766 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 17, + "default": 3, + "total": 20 }, "approved": { "tmMatch": 0, @@ -10325,9 +10181,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 60, - "total": 60 + "tmMatch": 39, + "default": 5335, + "total": 5374 }, "approvalCosts": { "tmMatch": 0, @@ -10339,33 +10195,33 @@ }, { "user": { - "id": 14226882, - "username": "FutureTrans01", - "fullName": "ACO_Future Trans (FutureTrans01)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14226882/medium/6f2e227d358c748cdfcd3a1969d69b20_default.png", + "id": 14332768, + "username": "jamalelkhdadi", + "fullName": "jamalelkhdadi", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14332768/medium/59455bae48ec19e5b76ae004e4b95db0_default.png", "preTranslated": 0, - "totalCosts": 731 + "totalCosts": 12 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Proofreader", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 731 + "id": "ar", + "name": "Arabic", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 12 }, "translated": { - "tmMatch": 171, - "default": 560, - "total": 731 + "tmMatch": 0, + "default": 12, + "total": 12 }, "targetTranslated": { - "tmMatch": 166, - "default": 447, - "total": 613 + "tmMatch": 0, + "default": 9, + "total": 9 }, "translatedByMt": { "tmMatch": 0, @@ -10375,12 +10231,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 1871 + "total": 0 }, "translationCosts": { - "tmMatch": 171, - "default": 560, - "total": 731 + "tmMatch": 0, + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -10392,38 +10248,38 @@ }, { "user": { - "id": 15408578, - "username": "akey.85_", - "fullName": "ASKZ (akey.85_)", + "id": 16004519, + "username": "janog82", + "fullName": "janog82", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15408578/medium/35137e5b4b05d5afc71f5e7a9c15821c.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004519/medium/3a4d1c5b0aa82aa19b0f9350bde398a3_default.png", "preTranslated": 0, - "totalCosts": 31 + "totalCosts": 73 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "ka", + "name": "Georgian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 31 + "totalCosts": 73 }, "translated": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 1, + "default": 72, + "total": 73 }, "targetTranslated": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 2, + "default": 54, + "total": 56 }, "translatedByMt": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -10431,9 +10287,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 1, + "default": 72, + "total": 73 }, "approvalCosts": { "tmMatch": 0, @@ -10445,33 +10301,33 @@ }, { "user": { - "id": 15809839, - "username": "wahedtalash77", - "fullName": "Abdulwahed Talash (wahedtalash77)", + "id": 15992393, + "username": "jgE100", + "fullName": "jgE100", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15809839/medium/e332f4b5ae8037272a5d092a0d9d0045.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992393/medium/b0d6ce2292216f607121472236ef7360_default.png", "preTranslated": 0, - "totalCosts": 84 + "totalCosts": 74 }, "languages": [ { "language": { - "id": "fa-AF", - "name": "Dari", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 84 + "totalCosts": 74 }, "translated": { "tmMatch": 0, - "default": 84, - "total": 84 + "default": 74, + "total": 74 }, "targetTranslated": { "tmMatch": 0, - "default": 105, - "total": 105 + "default": 126, + "total": 126 }, "translatedByMt": { "tmMatch": 0, @@ -10485,8 +10341,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 84, - "total": 84 + "default": 74, + "total": 74 }, "approvalCosts": { "tmMatch": 0, @@ -10498,88 +10354,101 @@ }, { "user": { - "id": 13151214, - "username": "Aco_Trans", - "fullName": "Aco (Aco_Trans)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13151214/medium/8d49c17a9752eec54b3a976695e23834_default.png", + "id": 15905319, + "username": "jrrezende002", + "fullName": "jrrezende002", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15905319/medium/78ba684e3f49202fcdb0fef55fc773b9_default.png", "preTranslated": 0, - "totalCosts": 15926 + "totalCosts": 2 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", - "userRole": "Proofreader", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7849 + "totalCosts": 2 }, "translated": { - "tmMatch": 611, - "default": 7238, - "total": 7849 + "tmMatch": 0, + "default": 2, + "total": 2 }, "targetTranslated": { - "tmMatch": 630, - "default": 6816, - "total": 7446 + "tmMatch": 0, + "default": 1, + "total": 1 }, "translatedByMt": { - "tmMatch": 11, + "tmMatch": 0, "default": 0, - "total": 11 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 12564 + "total": 0 }, "translationCosts": { - "tmMatch": 611, - "default": 7238, - "total": 7849 + "tmMatch": 0, + "default": 2, + "total": 2 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15929325, + "username": "jsantann", + "fullName": "jsantann", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15929325/medium/dfe876696a9c986f4bc248f2aab9c5ed_default.png", + "preTranslated": 0, + "totalCosts": 19 + }, + "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Proofreader", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8077 + "totalCosts": 19 }, "translated": { - "tmMatch": 794, - "default": 7283, - "total": 8077 + "tmMatch": 0, + "default": 19, + "total": 19 }, "targetTranslated": { - "tmMatch": 855, - "default": 7027, - "total": 7882 + "tmMatch": 0, + "default": 19, + "total": 19 }, "translatedByMt": { - "tmMatch": 11, - "default": 21, - "total": 32 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 9700 + "total": 0 }, "translationCosts": { - "tmMatch": 794, - "default": 7283, - "total": 8077 + "tmMatch": 0, + "default": 19, + "total": 19 }, "approvalCosts": { "tmMatch": 0, @@ -10591,33 +10460,33 @@ }, { "user": { - "id": 15036379, - "username": "bayan-tech", - "fullName": "Aco-BayanTech (bayan-tech)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15036379/medium/753e141785d6f0c1dd9d90a6df87eb05_default.png", + "id": 15900245, + "username": "kairlv", + "fullName": "kairlv", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15900245/medium/e4ed4348b743118b599d6864cb79f64f_default.png", "preTranslated": 0, - "totalCosts": 398 + "totalCosts": 181 }, "languages": [ { "language": { - "id": "fa-AF", - "name": "Dari", - "userRole": "Proofreader", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 171 + "totalCosts": 181 }, "translated": { - "tmMatch": 30, - "default": 141, - "total": 171 + "tmMatch": 0, + "default": 181, + "total": 181 }, "targetTranslated": { - "tmMatch": 38, - "default": 177, - "total": 215 + "tmMatch": 0, + "default": 313, + "total": 313 }, "translatedByMt": { "tmMatch": 0, @@ -10627,37 +10496,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 186 + "total": 0 }, "translationCosts": { - "tmMatch": 30, - "default": 141, - "total": 171 + "tmMatch": 0, + "default": 181, + "total": 181 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15965517, + "username": "khder7255", + "fullName": "khder7255", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965517/medium/ce43dfd49abcc4a7d941496d0707bdc9_default.png", + "preTranslated": 0, + "totalCosts": 2 + }, + "languages": [ { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Proofreader", + "id": "ar", + "name": "Arabic", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 227 + "totalCosts": 2 }, "translated": { - "tmMatch": 5, - "default": 222, - "total": 227 + "tmMatch": 0, + "default": 2, + "total": 2 }, "targetTranslated": { - "tmMatch": 9, - "default": 294, - "total": 303 + "tmMatch": 0, + "default": 2, + "total": 2 }, "translatedByMt": { "tmMatch": 0, @@ -10667,12 +10549,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 2279 + "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 222, - "total": 227 + "tmMatch": 0, + "default": 2, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -10684,48 +10566,48 @@ }, { "user": { - "id": 15218796, - "username": "elizabethkim", - "fullName": "Aco_ElizabethKim (elizabethkim)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15218796/medium/b2fe0512f17a60d47a4328127eaee058_default.png", + "id": 15962943, + "username": "laurin.121", + "fullName": "laurin.121", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962943/medium/ffa533b0520152a8a4d6d9925f086566_default.png", "preTranslated": 0, - "totalCosts": 368 + "totalCosts": 69 }, "languages": [ { "language": { - "id": "ko", - "name": "Korean", - "userRole": "Translator, Proofreader", + "id": "de", + "name": "German", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 368 + "totalCosts": 69 }, "translated": { - "tmMatch": 14, - "default": 354, - "total": 368 + "tmMatch": 0, + "default": 69, + "total": 69 }, "targetTranslated": { - "tmMatch": 14, - "default": 277, - "total": 291 + "tmMatch": 0, + "default": 73, + "total": 73 }, "translatedByMt": { - "tmMatch": 9, + "tmMatch": 0, "default": 0, - "total": 9 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 429 + "total": 0 }, "translationCosts": { - "tmMatch": 14, - "default": 354, - "total": 368 + "tmMatch": 0, + "default": 69, + "total": 69 }, "approvalCosts": { "tmMatch": 0, @@ -10737,33 +10619,33 @@ }, { "user": { - "id": 15304854, - "username": "FGutierrez", - "fullName": "Aco_FlorenciaGutierrez (FGutierrez)", - "userRole": "Manager", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15304854/medium/5f1f6782bbfc6e596c29e7b9a306e0f7_default.png", + "id": 15905571, + "username": "leesliemendooza", + "fullName": "leesliemendooza", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15905571/medium/a1b84b2fda574be0be351c7e7d4cdb8b_default.png", "preTranslated": 0, - "totalCosts": 13171 + "totalCosts": 28 }, "languages": [ { "language": { - "id": "bg", - "name": "Bulgarian", - "userRole": "Manager", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2369 + "totalCosts": 28 }, "translated": { "tmMatch": 0, - "default": 2369, - "total": 2369 + "default": 28, + "total": 28 }, "targetTranslated": { "tmMatch": 0, - "default": 2504, - "total": 2504 + "default": 1, + "total": 1 }, "translatedByMt": { "tmMatch": 0, @@ -10773,37 +10655,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 2557 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 2369, - "total": 2369 + "default": 28, + "total": 28 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, - { - "language": { - "id": "it", - "name": "Italian", - "userRole": "Manager", - "tmSavings": 0, - "preTranslate": 0, - "totalCosts": 10802 - }, + } + ] + }, + { + "user": { + "id": 15982819, + "username": "lipkij", + "fullName": "lipkij", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15982819/medium/8f2454294d3ca462c391fb4cccdc1ba8_default.png", + "preTranslated": 0, + "totalCosts": 79 + }, + "languages": [ + { + "language": { + "id": "ru", + "name": "Russian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 79 + }, "translated": { - "tmMatch": 0, - "default": 10802, - "total": 10802 + "tmMatch": 37, + "default": 42, + "total": 79 }, "targetTranslated": { - "tmMatch": 0, - "default": 11652, - "total": 11652 + "tmMatch": 31, + "default": 43, + "total": 74 }, "translatedByMt": { "tmMatch": 0, @@ -10813,12 +10708,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 26366 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 10802, - "total": 10802 + "tmMatch": 37, + "default": 42, + "total": 79 }, "approvalCosts": { "tmMatch": 0, @@ -10830,48 +10725,48 @@ }, { "user": { - "id": 15688125, - "username": "MinakoK", - "fullName": "Aco_LL_Minako Kamiya (MinakoK)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15688125/medium/d9623c4e233cb23611b41b1138e7c158_default.png", + "id": 15856843, + "username": "mariia_pryshko", + "fullName": "mariia_pryshko", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15856843/medium/2c53a645673e90327155f24d7f1237f5_default.png", "preTranslated": 0, - "totalCosts": 18590 + "totalCosts": 5360 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Translator, Proofreader", + "id": "uk", + "name": "Ukrainian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 18590 + "totalCosts": 5360 }, "translated": { - "tmMatch": 7724, - "default": 10866, - "total": 18590 + "tmMatch": 60, + "default": 5300, + "total": 5360 }, "targetTranslated": { - "tmMatch": 22093, - "default": 30790, - "total": 52883 + "tmMatch": 49, + "default": 4788, + "total": 4837 }, "translatedByMt": { - "tmMatch": 0, - "default": 37, - "total": 37 + "tmMatch": 5, + "default": 3, + "total": 8 }, "approved": { "tmMatch": 0, "default": 0, - "total": 26300 + "total": 0 }, "translationCosts": { - "tmMatch": 7724, - "default": 10866, - "total": 18590 + "tmMatch": 60, + "default": 5300, + "total": 5360 }, "approvalCosts": { "tmMatch": 0, @@ -10883,33 +10778,33 @@ }, { "user": { - "id": 15144574, - "username": "Word_Global_Eyes", - "fullName": "Aco_Larisa Gubareva (Word_Global_Eyes)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15144574/medium/d85fe7c56b9f9e47c9f1a3e27ca32078.jpg", + "id": 15949813, + "username": "massmr", + "fullName": "massmr", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949813/medium/523c73497ca4fc2d5d83c8c54f0123b1_default.png", "preTranslated": 0, - "totalCosts": 73 + "totalCosts": 31 }, "languages": [ { "language": { - "id": "ka", - "name": "Georgian", - "userRole": "Proofreader", + "id": "fr", + "name": "French", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 73 + "totalCosts": 31 }, "translated": { - "tmMatch": 5, - "default": 68, - "total": 73 + "tmMatch": 0, + "default": 31, + "total": 31 }, "targetTranslated": { - "tmMatch": 4, - "default": 55, - "total": 59 + "tmMatch": 0, + "default": 47, + "total": 47 }, "translatedByMt": { "tmMatch": 0, @@ -10919,12 +10814,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 131 + "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 68, - "total": 73 + "tmMatch": 0, + "default": 31, + "total": 31 }, "approvalCosts": { "tmMatch": 0, @@ -10936,48 +10831,48 @@ }, { "user": { - "id": 15062347, - "username": "Aco_PineGlobal", - "fullName": "Aco_Martynas Šiaučiūnas (Aco_PineGlobal)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15062347/medium/b9e486cd093d062ef613e32bc7831f4d_default.png", + "id": 15957819, + "username": "ming30650", + "fullName": "ming30650", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957819/medium/2baae61ca579f0a04efd89cd210f2c6a_default.png", "preTranslated": 0, - "totalCosts": 1597 + "totalCosts": 1893 }, "languages": [ { "language": { - "id": "ko", - "name": "Korean", - "userRole": "Proofreader", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1597 + "totalCosts": 1893 }, "translated": { - "tmMatch": 91, - "default": 1506, - "total": 1597 + "tmMatch": 0, + "default": 1893, + "total": 1893 }, "targetTranslated": { - "tmMatch": 81, - "default": 1237, - "total": 1318 + "tmMatch": 0, + "default": 3525, + "total": 3525 }, "translatedByMt": { - "tmMatch": 26, - "default": 2, - "total": 28 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 3043 + "total": 0 }, "translationCosts": { - "tmMatch": 91, - "default": 1506, - "total": 1597 + "tmMatch": 0, + "default": 1893, + "total": 1893 }, "approvalCosts": { "tmMatch": 0, @@ -10989,48 +10884,48 @@ }, { "user": { - "id": 14952471, - "username": "justatranslator", - "fullName": "Aco_PM_CrinaBalaban (justatranslator)", - "userRole": "Manager", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14952471/medium/0b923ad0f9ac867dc2ba15f179591202_default.png", + "id": 15966159, + "username": "mireiacanaleta", + "fullName": "mireiacanaleta", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966159/medium/9976c23549c54ffe29bdaf7613a602e5_default.png", "preTranslated": 0, - "totalCosts": 32527 + "totalCosts": 1229 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", - "userRole": "Manager", + "id": "ca", + "name": "Catalan", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 32527 + "totalCosts": 1229 }, "translated": { - "tmMatch": 14, - "default": 32513, - "total": 32527 + "tmMatch": 7, + "default": 1222, + "total": 1229 }, "targetTranslated": { - "tmMatch": 14, - "default": 35699, - "total": 35713 + "tmMatch": 7, + "default": 1373, + "total": 1380 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 2, + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 44827 + "total": 0 }, "translationCosts": { - "tmMatch": 14, - "default": 32513, - "total": 32527 + "tmMatch": 7, + "default": 1222, + "total": 1229 }, "approvalCosts": { "tmMatch": 0, @@ -11042,88 +10937,101 @@ }, { "user": { - "id": 15048901, - "username": "Joy_Zhang", - "fullName": "Aco_Reviewer_Joy_Zhang (Joy_Zhang)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15048901/medium/9c2e15bbe4e07a19c6a4d53fd3bd4fac_default.png", + "id": 15952609, + "username": "mk_1023", + "fullName": "mk_1023", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952609/medium/2cefc34ddb056ff1a484e60803e24088_default.png", "preTranslated": 0, - "totalCosts": 31033 + "totalCosts": 9138 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Proofreader", + "id": "hy-AM", + "name": "Armenian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 28082 + "totalCosts": 9138 }, "translated": { - "tmMatch": 10756, - "default": 17326, - "total": 28082 + "tmMatch": 40, + "default": 9098, + "total": 9138 }, "targetTranslated": { - "tmMatch": 18500, - "default": 29512, - "total": 48012 + "tmMatch": 49, + "default": 8890, + "total": 8939 }, "translatedByMt": { - "tmMatch": 23, - "default": 15, - "total": 38 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 38498 + "total": 0 }, "translationCosts": { - "tmMatch": 10756, - "default": 17326, - "total": 28082 + "tmMatch": 40, + "default": 9098, + "total": 9138 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 16015261, + "username": "mohammedbabach6985", + "fullName": "mohammedbabach6985", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16015261/medium/fafcf5457f6d490d82c995fde3b05be9_default.png", + "preTranslated": 0, + "totalCosts": 7 + }, + "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Proofreader", + "id": "fr", + "name": "French", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2951 + "totalCosts": 7 }, "translated": { - "tmMatch": 119, - "default": 2832, - "total": 2951 + "tmMatch": 0, + "default": 7, + "total": 7 }, "targetTranslated": { - "tmMatch": 335, - "default": 5207, - "total": 5542 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { - "tmMatch": 18, - "default": 1, - "total": 19 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 2941 + "total": 0 }, "translationCosts": { - "tmMatch": 119, - "default": 2832, - "total": 2951 + "tmMatch": 0, + "default": 7, + "total": 7 }, "approvalCosts": { "tmMatch": 0, @@ -11135,48 +11043,48 @@ }, { "user": { - "id": 13599210, - "username": "Aco_crowdin_CZ_TR", - "fullName": "Aco_crowdin_CZ_TR", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13599210/medium/e0a1e6a034ce38e1bde5701fccfc8770_default.png", + "id": 15964773, + "username": "moon2mean", + "fullName": "moon2mean", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964773/medium/35ea9c50e6510a41b87814f3acc83e39_default.png", "preTranslated": 0, - "totalCosts": 18 + "totalCosts": 45 }, "languages": [ { "language": { - "id": "cs", - "name": "Czech", - "userRole": "Proofreader", + "id": "pcm", + "name": "Nigerian Pidgin", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 18 + "totalCosts": 45 }, "translated": { - "tmMatch": 14, - "default": 4, - "total": 18 + "tmMatch": 0, + "default": 45, + "total": 45 }, "targetTranslated": { - "tmMatch": 16, - "default": 4, - "total": 20 + "tmMatch": 0, + "default": 51, + "total": 51 }, "translatedByMt": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 18 + "total": 0 }, "translationCosts": { - "tmMatch": 14, - "default": 4, - "total": 18 + "tmMatch": 0, + "default": 45, + "total": 45 }, "approvalCosts": { "tmMatch": 0, @@ -11188,48 +11096,48 @@ }, { "user": { - "id": 15284058, - "username": "tkinc_user", - "fullName": "Aco_tkinc (tkinc_user)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284058/medium/f845aae25c83fda0f4b7555baca1fe61_default.png", + "id": 15956481, + "username": "motunbeg", + "fullName": "motunbeg", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956481/medium/3b62b0094dce063a96ff151b94bd5f5c_default.png", "preTranslated": 0, - "totalCosts": 48388 + "totalCosts": 1831 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Translator, Proofreader", + "id": "tr", + "name": "Turkish", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 48388 + "totalCosts": 1831 }, "translated": { - "tmMatch": 2968, - "default": 45420, - "total": 48388 + "tmMatch": 0, + "default": 1831, + "total": 1831 }, "targetTranslated": { - "tmMatch": 9746, - "default": 150039, - "total": 159785 + "tmMatch": 0, + "default": 1554, + "total": 1554 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 49335 + "total": 0 }, "translationCosts": { - "tmMatch": 2968, - "default": 45420, - "total": 48388 + "tmMatch": 0, + "default": 1831, + "total": 1831 }, "approvalCosts": { "tmMatch": 0, @@ -11241,48 +11149,48 @@ }, { "user": { - "id": 15197762, - "username": "Aco_FR_LauraSanz", - "fullName": "Acolad_FreelanceReviewer_Laura Sanz Gonzalez (Aco_FR_LauraSanz)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15197762/medium/d8e4fc31646e818d0cedd473fe0525d2_default.png", + "id": 15951529, + "username": "msfew", + "fullName": "msfew", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15951529/medium/d82e6870b28865f99df51bc94d0609bb_default.png", "preTranslated": 0, - "totalCosts": 4655 + "totalCosts": 305 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Proofreader", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4655 + "totalCosts": 305 }, "translated": { - "tmMatch": 81, - "default": 4574, - "total": 4655 - }, + "tmMatch": 4, + "default": 301, + "total": 305 + }, "targetTranslated": { - "tmMatch": 102, - "default": 5295, - "total": 5397 + "tmMatch": 4, + "default": 592, + "total": 596 }, "translatedByMt": { - "tmMatch": 1, - "default": 38, - "total": 39 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 5982 + "total": 0 }, "translationCosts": { - "tmMatch": 81, - "default": 4574, - "total": 4655 + "tmMatch": 4, + "default": 301, + "total": 305 }, "approvalCosts": { "tmMatch": 0, @@ -11294,33 +11202,33 @@ }, { "user": { - "id": 15838619, - "username": "al4ndrade", - "fullName": "Al Andrade (al4ndrade)", + "id": 16023092, + "username": "mtchkka", + "fullName": "mtchkka", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15838619/medium/58f9acf18a854df6a81f207004a74b26.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16023092/medium/381adbcacbc363820f19878e129b5d86_default.png", "preTranslated": 0, - "totalCosts": 82 + "totalCosts": 106 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 82 + "totalCosts": 106 }, "translated": { - "tmMatch": 75, - "default": 7, - "total": 82 + "tmMatch": 0, + "default": 106, + "total": 106 }, "targetTranslated": { - "tmMatch": 79, - "default": 6, - "total": 85 + "tmMatch": 0, + "default": 92, + "total": 92 }, "translatedByMt": { "tmMatch": 0, @@ -11333,9 +11241,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 75, - "default": 7, - "total": 82 + "tmMatch": 0, + "default": 106, + "total": 106 }, "approvalCosts": { "tmMatch": 0, @@ -11347,38 +11255,38 @@ }, { "user": { - "id": 12797888, - "username": "Erbacaro", - "fullName": "Alessandro Penza (Erbacaro)", + "id": 15170642, + "username": "nanoni", + "fullName": "nanoni", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12797888/medium/1b2f88e2c09243d04c71e394b66e7a14_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15170642/medium/f05625305ab41aecc0da6d53fd9fbcc6_default.png", "preTranslated": 0, - "totalCosts": 52 + "totalCosts": 96 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", + "id": "ja", + "name": "Japanese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 52 + "totalCosts": 96 }, "translated": { - "tmMatch": 0, - "default": 52, - "total": 52 + "tmMatch": 28, + "default": 68, + "total": 96 }, "targetTranslated": { - "tmMatch": 0, - "default": 55, - "total": 55 + "tmMatch": 100, + "default": 221, + "total": 321 }, "translatedByMt": { "tmMatch": 0, - "default": 16, - "total": 16 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -11386,9 +11294,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 52, - "total": 52 + "tmMatch": 28, + "default": 68, + "total": 96 }, "approvalCosts": { "tmMatch": 0, @@ -11400,13 +11308,13 @@ }, { "user": { - "id": 15847249, - "username": "AlexanderMartinezz", - "fullName": "Alexander (AlexanderMartinezz)", + "id": 15989457, + "username": "narurololiloops", + "fullName": "narurololiloops", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15847249/medium/3c19e869cbeeae9cc38c963f307105e4.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15989457/medium/538d4b5dd55c92e2e8e0759fc6870270_default.png", "preTranslated": 0, - "totalCosts": 20 + "totalCosts": 479 }, "languages": [ { @@ -11416,22 +11324,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 20 + "totalCosts": 479 }, "translated": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 77, + "default": 402, + "total": 479 }, "targetTranslated": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 99, + "default": 440, + "total": 539 }, "translatedByMt": { "tmMatch": 0, - "default": 16, - "total": 16 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -11439,9 +11347,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 77, + "default": 402, + "total": 479 }, "approvalCosts": { "tmMatch": 0, @@ -11453,38 +11361,38 @@ }, { "user": { - "id": 15795465, - "username": "Alex-fr", - "fullName": "Alexandre Bordrez (Alex-fr)", + "id": 15822531, + "username": "oleksandra.davydchuk", + "fullName": "oleksandra.davydchuk", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15795465/medium/10a5ef3ef5a492fd883eb55c239db5b3.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15822531/medium/f88ef37f5adac630fce6e232dae67668_default.png", "preTranslated": 0, - "totalCosts": 1310 + "totalCosts": 1357 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1310 + "totalCosts": 1357 }, "translated": { - "tmMatch": 5, - "default": 1305, - "total": 1310 + "tmMatch": 3, + "default": 1354, + "total": 1357 }, "targetTranslated": { - "tmMatch": 5, - "default": 1427, - "total": 1432 + "tmMatch": 3, + "default": 1220, + "total": 1223 }, "translatedByMt": { - "tmMatch": 4, - "default": 259, - "total": 263 + "tmMatch": 3, + "default": 49, + "total": 52 }, "approved": { "tmMatch": 0, @@ -11492,9 +11400,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 1305, - "total": 1310 + "tmMatch": 3, + "default": 1354, + "total": 1357 }, "approvalCosts": { "tmMatch": 0, @@ -11506,38 +11414,38 @@ }, { "user": { - "id": 15760865, - "username": "alhafadi37", - "fullName": "Ali Alhafadi (alhafadi37)", + "id": 15848015, + "username": "olhapolevik", + "fullName": "olhapolevik", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15760865/medium/f2956dd1958055433d32ecc065cf4e5e.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15848015/medium/9ce52ae7d02c9e5333baedc13db9d42d_default.png", "preTranslated": 0, - "totalCosts": 11 + "totalCosts": 4891 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11 + "totalCosts": 4891 }, "translated": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 9, + "default": 4882, + "total": 4891 }, "targetTranslated": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 10, + "default": 4224, + "total": 4234 }, "translatedByMt": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 2, + "default": 97, + "total": 99 }, "approved": { "tmMatch": 0, @@ -11545,9 +11453,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 9, + "default": 4882, + "total": 4891 }, "approvalCosts": { "tmMatch": 0, @@ -11559,33 +11467,33 @@ }, { "user": { - "id": 15827701, - "username": "carlosjoelalonzo09", - "fullName": "Alonzo gammer (carlosjoelalonzo09)", + "id": 15966973, + "username": "omsify", + "fullName": "omsify", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15827701/medium/1a30f254f9e84620d913709038e3f075.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966973/medium/8f0d37e232177100b09297d6f095fbfa_default.png", "preTranslated": 0, - "totalCosts": 28 + "totalCosts": 14461 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 28 + "totalCosts": 14461 }, "translated": { - "tmMatch": 21, - "default": 7, - "total": 28 + "tmMatch": 47, + "default": 14414, + "total": 14461 }, "targetTranslated": { - "tmMatch": 22, - "default": 7, - "total": 29 + "tmMatch": 50, + "default": 12916, + "total": 12966 }, "translatedByMt": { "tmMatch": 0, @@ -11598,9 +11506,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 21, - "default": 7, - "total": 28 + "tmMatch": 47, + "default": 14414, + "total": 14461 }, "approvalCosts": { "tmMatch": 0, @@ -11612,33 +11520,33 @@ }, { "user": { - "id": 15832087, - "username": "Lilsheep", - "fullName": "Alvaro Orrego (Lilsheep)", + "id": 15925585, + "username": "parse.", + "fullName": "parse.", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15832087/medium/4366a0e58c28aa5383cc278e95de912d_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15925585/medium/94e11fa081e20ff245f2c351a419b291.gif", "preTranslated": 0, - "totalCosts": 733 + "totalCosts": 12 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 733 + "totalCosts": 12 }, "translated": { "tmMatch": 0, - "default": 733, - "total": 733 + "default": 12, + "total": 12 }, "targetTranslated": { "tmMatch": 0, - "default": 709, - "total": 709 + "default": 10, + "total": 10 }, "translatedByMt": { "tmMatch": 0, @@ -11652,8 +11560,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 733, - "total": 733 + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -11665,38 +11573,38 @@ }, { "user": { - "id": 15716521, - "username": "remember-me", - "fullName": "Amin Esmkhani | امین اسمخانی (remember-me)", + "id": 15916347, + "username": "puru-khedre", + "fullName": "puru-khedre", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15716521/medium/3baa1298bf9e76becf54cb5abdde531b.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15916347/medium/2310ee06d441291171855c0917fc542d.jpg", "preTranslated": 0, - "totalCosts": 6 + "totalCosts": 4673 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", + "id": "hi", + "name": "Hindi", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 6 + "totalCosts": 4673 }, "translated": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 22, + "default": 4651, + "total": 4673 }, "targetTranslated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 39, + "default": 8611, + "total": 8650 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -11704,9 +11612,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 22, + "default": 4651, + "total": 4673 }, "approvalCosts": { "tmMatch": 0, @@ -11718,38 +11626,38 @@ }, { "user": { - "id": 15707863, - "username": "pticin.andrei98", - "fullName": "Andrei Pticin (pticin.andrei98)", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15707863/medium/17c2bede2ae15c998fcf3627f0fd9681.jpeg", + "id": 15933215, + "username": "pythoninsa", + "fullName": "pythoninsa", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15933215/medium/f9793fc24345c86d5707021fcb53574e_default.png", "preTranslated": 0, - "totalCosts": 234 + "totalCosts": 199 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", - "userRole": "Limited Access", + "id": "ha", + "name": "Hausa", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 234 + "totalCosts": 199 }, "translated": { - "tmMatch": 57, - "default": 177, - "total": 234 + "tmMatch": 0, + "default": 199, + "total": 199 }, "targetTranslated": { - "tmMatch": 62, - "default": 181, - "total": 243 + "tmMatch": 0, + "default": 166, + "total": 166 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, @@ -11757,9 +11665,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 57, - "default": 177, - "total": 234 + "tmMatch": 0, + "default": 199, + "total": 199 }, "approvalCosts": { "tmMatch": 0, @@ -11771,48 +11679,48 @@ }, { "user": { - "id": 15370640, - "username": "radiofreekekistan", - "fullName": "Andrew DiMartino (radiofreekekistan)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15370640/medium/a078ae2d5a193a9bfeedbf92e849f9da.jpeg", + "id": 13986387, + "username": "rafarocha", + "fullName": "rafarocha", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13986387/medium/72bb87143f2a8d013cddac84c4e2afac.jpg", "preTranslated": 0, - "totalCosts": 1271 + "totalCosts": 20668 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", - "userRole": "Translator", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1271 + "totalCosts": 20668 }, "translated": { - "tmMatch": 53, - "default": 1218, - "total": 1271 + "tmMatch": 93, + "default": 20575, + "total": 20668 }, "targetTranslated": { - "tmMatch": 52, - "default": 1340, - "total": 1392 + "tmMatch": 99, + "default": 22340, + "total": 22439 }, "translatedByMt": { - "tmMatch": 0, - "default": 432, - "total": 432 + "tmMatch": 17, + "default": 280, + "total": 297 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 10 }, "translationCosts": { - "tmMatch": 53, - "default": 1218, - "total": 1271 + "tmMatch": 93, + "default": 20575, + "total": 20668 }, "approvalCosts": { "tmMatch": 0, @@ -11824,38 +11732,38 @@ }, { "user": { - "id": 15771025, - "username": "Andrzej1072", - "fullName": "Andrzej Dobrucki (Andrzej1072)", + "id": 15938713, + "username": "redddd", + "fullName": "redddd", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15771025/medium/e70215b910c59f0fa39516bbbe11c35d.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15938713/medium/dbc4099d602e205ae50fd432f66e1adf_default.png", "preTranslated": 0, - "totalCosts": 9473 + "totalCosts": 58 }, "languages": [ { "language": { - "id": "pl", - "name": "Polish", + "id": "de", + "name": "German", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 9473 + "totalCosts": 58 }, "translated": { - "tmMatch": 106, - "default": 9367, - "total": 9473 + "tmMatch": 0, + "default": 58, + "total": 58 }, "targetTranslated": { - "tmMatch": 106, - "default": 8598, - "total": 8704 + "tmMatch": 0, + "default": 56, + "total": 56 }, "translatedByMt": { - "tmMatch": 97, - "default": 7128, - "total": 7225 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -11863,9 +11771,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 106, - "default": 9367, - "total": 9473 + "tmMatch": 0, + "default": 58, + "total": 58 }, "approvalCosts": { "tmMatch": 0, @@ -11877,33 +11785,33 @@ }, { "user": { - "id": 15731089, - "username": "mosqueraoa1", - "fullName": "Andrés Mosquera (mosqueraoa1)", + "id": 15927303, + "username": "roifnaufal21", + "fullName": "roifnaufal21", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15731089/medium/1a0d1f2b446115f2e8ac1e04f1ec8b85.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15927303/medium/e39f725004e850246a765bb86dddf780_default.png", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 61864 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 61864 }, "translated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 160, + "default": 61704, + "total": 61864 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 165, + "default": 57831, + "total": 57996 }, "translatedByMt": { "tmMatch": 0, @@ -11916,9 +11824,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 160, + "default": 61704, + "total": 61864 }, "approvalCosts": { "tmMatch": 0, @@ -11930,38 +11838,38 @@ }, { "user": { - "id": 15837955, - "username": "Magdalena_", - "fullName": "Angelica Hernandez (Magdalena_)", + "id": 15944039, + "username": "rshdvaass", + "fullName": "rshdvaass", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/54d6429e4e8adbda8b96bca1dd7607fc.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15944039/medium/a78f79da628999595640b887dc7edf9b_default.png", "preTranslated": 0, - "totalCosts": 1247 + "totalCosts": 30 }, "languages": [ { "language": { - "id": "fil", - "name": "Filipino", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1247 + "totalCosts": 30 }, "translated": { - "tmMatch": 6, - "default": 1241, - "total": 1247 + "tmMatch": 0, + "default": 30, + "total": 30 }, "targetTranslated": { - "tmMatch": 8, - "default": 1480, - "total": 1488 + "tmMatch": 0, + "default": 4, + "total": 4 }, "translatedByMt": { - "tmMatch": 6, - "default": 9, - "total": 15 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -11969,9 +11877,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 6, - "default": 1241, - "total": 1247 + "tmMatch": 0, + "default": 30, + "total": 30 }, "approvalCosts": { "tmMatch": 0, @@ -11983,38 +11891,38 @@ }, { "user": { - "id": 15770841, - "username": "Angelito_18", - "fullName": "Angelito _18 (Angelito_18)", + "id": 15703467, + "username": "rsrosabio", + "fullName": "rsrosabio", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770841/medium/f82644a45b17eed3facb1815dcc83d13.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15703467/medium/d318a4131cc261c314fbda858991c360_default.png", "preTranslated": 0, - "totalCosts": 7414 + "totalCosts": 165 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7414 + "totalCosts": 165 }, "translated": { "tmMatch": 30, - "default": 7384, - "total": 7414 + "default": 135, + "total": 165 }, "targetTranslated": { "tmMatch": 28, - "default": 8606, - "total": 8634 + "default": 144, + "total": 172 }, "translatedByMt": { - "tmMatch": 30, - "default": 3213, - "total": 3243 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -12023,8 +11931,8 @@ }, "translationCosts": { "tmMatch": 30, - "default": 7384, - "total": 7414 + "default": 135, + "total": 165 }, "approvalCosts": { "tmMatch": 0, @@ -12036,33 +11944,33 @@ }, { "user": { - "id": 15871363, - "username": "annissayelenatrejocornejo", - "fullName": "Annissa Yelena Trejo Cornejo (annissayelenatrejocornejo)", + "id": 15936353, + "username": "shaggy21", + "fullName": "shaggy21", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871363/medium/629d713c687c9c50a020fffcd8a8a917.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15936353/medium/1bf2a2cdcdb2548082069e3ff5d3d218_default.png", "preTranslated": 0, - "totalCosts": 54 + "totalCosts": 308 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "de", + "name": "German", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 54 + "totalCosts": 308 }, "translated": { - "tmMatch": 54, - "default": 0, - "total": 54 + "tmMatch": 2, + "default": 306, + "total": 308 }, "targetTranslated": { - "tmMatch": 66, - "default": 0, - "total": 66 + "tmMatch": 3, + "default": 312, + "total": 315 }, "translatedByMt": { "tmMatch": 0, @@ -12075,9 +11983,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 54, - "default": 0, - "total": 54 + "tmMatch": 2, + "default": 306, + "total": 308 }, "approvalCosts": { "tmMatch": 0, @@ -12089,38 +11997,38 @@ }, { "user": { - "id": 15396412, - "username": "Ti0x-f", - "fullName": "Antoine Facerias (Ti0x-f)", + "id": 15961227, + "username": "smrtdeal", + "fullName": "smrtdeal", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15396412/medium/e3ea869880271105d1c5b63e8a4f3040.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15961227/medium/5fe4044190302b39d3e6bec4cc9aebe3_default.png", "preTranslated": 0, - "totalCosts": 79 + "totalCosts": 5931 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "tk", + "name": "Turkmen", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 79 + "totalCosts": 5931 }, "translated": { - "tmMatch": 1, - "default": 78, - "total": 79 + "tmMatch": 7, + "default": 5924, + "total": 5931 }, "targetTranslated": { - "tmMatch": 1, - "default": 92, - "total": 93 + "tmMatch": 7, + "default": 4933, + "total": 4940 }, "translatedByMt": { - "tmMatch": 1, - "default": 6, - "total": 7 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -12128,9 +12036,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 78, - "total": 79 + "tmMatch": 7, + "default": 5924, + "total": 5931 }, "approvalCosts": { "tmMatch": 0, @@ -12142,33 +12050,33 @@ }, { "user": { - "id": 15718265, - "username": "Nedquad12", - "fullName": "Ari Nugraha (Nedquad12)", + "id": 15955419, + "username": "sophiesworld.", + "fullName": "sophiesworld.", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15718265/medium/772ebe53be5cc3d0955715c65a833782.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955419/medium/ef389c3dcda0b2ac5fcef223c439baae_default.png", "preTranslated": 0, - "totalCosts": 3 + "totalCosts": 8944 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "ka", + "name": "Georgian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3 + "totalCosts": 8944 }, "translated": { - "tmMatch": 0, - "default": 3, - "total": 3 + "tmMatch": 42, + "default": 8902, + "total": 8944 }, "targetTranslated": { - "tmMatch": 0, - "default": 3, - "total": 3 + "tmMatch": 44, + "default": 7660, + "total": 7704 }, "translatedByMt": { "tmMatch": 0, @@ -12181,9 +12089,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 3, - "total": 3 + "tmMatch": 42, + "default": 8902, + "total": 8944 }, "approvalCosts": { "tmMatch": 0, @@ -12195,48 +12103,48 @@ }, { "user": { - "id": 15099529, - "username": "Aria-Naraghi", - "fullName": "Aria Naraghi (Aria-Naraghi)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15099529/medium/77b12f03c6675c85ad45efc6f3e23be3_default.png", + "id": 15954395, + "username": "sumimaria", + "fullName": "sumimaria", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954395/medium/0426f6cebadfe05c979ca979f905cf33_default.png", "preTranslated": 0, - "totalCosts": 263 + "totalCosts": 9 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator, Proofreader", + "id": "ml-IN", + "name": "Malayalam", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 263 + "totalCosts": 9 }, "translated": { - "tmMatch": 7, - "default": 256, - "total": 263 + "tmMatch": 0, + "default": 9, + "total": 9 }, "targetTranslated": { - "tmMatch": 16, - "default": 364, - "total": 380 + "tmMatch": 0, + "default": 14, + "total": 14 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 317 + "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 256, - "total": 263 + "tmMatch": 0, + "default": 9, + "total": 9 }, "approvalCosts": { "tmMatch": 0, @@ -12248,38 +12156,38 @@ }, { "user": { - "id": 15797533, - "username": "afghanypwrayman", - "fullName": "Ayman Afghanypwr (afghanypwrayman)", + "id": 15804803, + "username": "sun_dariia", + "fullName": "sun_dariia", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15797533/medium/3332a4aa044aa03414de05ffe8462cc5.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15804803/medium/e753b43a4cf480cd2a37c5795cdb83ba_default.png", "preTranslated": 0, - "totalCosts": 4 + "totalCosts": 9413 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4 + "totalCosts": 9413 }, "translated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 8, + "default": 9405, + "total": 9413 }, "targetTranslated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 9, + "default": 8583, + "total": 8592 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 88, + "total": 88 }, "approved": { "tmMatch": 0, @@ -12287,9 +12195,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 8, + "default": 9405, + "total": 9413 }, "approvalCosts": { "tmMatch": 0, @@ -12301,33 +12209,33 @@ }, { "user": { - "id": 15815183, - "username": "bspring", - "fullName": "Bahare A (bspring) (bspring)", + "id": 15966777, + "username": "tareqgh", + "fullName": "tareqgh", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15815183/medium/6ea423b1de26e8d7480b52f7793017df.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966777/medium/c434fa240e13cc295e9947bd14d0394f_default.png", "preTranslated": 0, - "totalCosts": 6 + "totalCosts": 8968 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 6 + "totalCosts": 8968 }, "translated": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 523, + "default": 8445, + "total": 8968 }, "targetTranslated": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 495, + "default": 7492, + "total": 7987 }, "translatedByMt": { "tmMatch": 0, @@ -12340,9 +12248,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 523, + "default": 8445, + "total": 8968 }, "approvalCosts": { "tmMatch": 0, @@ -12354,33 +12262,33 @@ }, { "user": { - "id": 15797987, - "username": "gilarovaab", - "fullName": "Barbora “Pucka” Gilarová (gilarovaab)", + "id": 15942485, + "username": "teekaygod", + "fullName": "teekaygod", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15797987/medium/448676d8a7cf791fececf78f4072bd1c.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15942485/medium/0c9d74e8e9d72640bfd1d98c30fbd585_default.png", "preTranslated": 0, - "totalCosts": 104 + "totalCosts": 791 }, "languages": [ { "language": { - "id": "cs", - "name": "Czech", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 104 + "totalCosts": 791 }, "translated": { - "tmMatch": 0, - "default": 104, - "total": 104 + "tmMatch": 8, + "default": 783, + "total": 791 }, "targetTranslated": { - "tmMatch": 0, - "default": 94, - "total": 94 + "tmMatch": 8, + "default": 972, + "total": 980 }, "translatedByMt": { "tmMatch": 0, @@ -12393,9 +12301,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 104, - "total": 104 + "tmMatch": 8, + "default": 783, + "total": 791 }, "approvalCosts": { "tmMatch": 0, @@ -12407,33 +12315,33 @@ }, { "user": { - "id": 15767291, - "username": "charminking", - "fullName": "Bayardo Sanchez Edgar Alberto (charminking)", + "id": 15964877, + "username": "ten5235", + "fullName": "ten5235", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15767291/medium/7fad807cd8381eba8c73fbe5cff78eea.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964877/medium/31d3f81a4dc84f53fcc1b3da395a06d4_default.png", "preTranslated": 0, - "totalCosts": 28 + "totalCosts": 1985 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "ja", + "name": "Japanese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 28 + "totalCosts": 1985 }, "translated": { - "tmMatch": 0, - "default": 28, - "total": 28 + "tmMatch": 1, + "default": 1984, + "total": 1985 }, "targetTranslated": { - "tmMatch": 0, - "default": 49, - "total": 49 + "tmMatch": 3, + "default": 5895, + "total": 5898 }, "translatedByMt": { "tmMatch": 0, @@ -12446,9 +12354,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 28, - "total": 28 + "tmMatch": 1, + "default": 1984, + "total": 1985 }, "approvalCosts": { "tmMatch": 0, @@ -12460,38 +12368,38 @@ }, { "user": { - "id": 15795297, - "username": "Bybozz", - "fullName": "Bilgehan Boz (Bybozz)", + "id": 16005069, + "username": "thanos300693", + "fullName": "thanos300693", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15795297/medium/91e6ec542a6b81163767397e01d985a9.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16005069/medium/e5d923cc742e014a10dbc03866725215_default.png", "preTranslated": 0, - "totalCosts": 412 + "totalCosts": 956 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "el", + "name": "Greek", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 412 + "totalCosts": 956 }, "translated": { - "tmMatch": 64, - "default": 348, - "total": 412 + "tmMatch": 0, + "default": 956, + "total": 956 }, "targetTranslated": { - "tmMatch": 56, - "default": 281, - "total": 337 + "tmMatch": 0, + "default": 1254, + "total": 1254 }, "translatedByMt": { - "tmMatch": 25, + "tmMatch": 0, "default": 0, - "total": 25 + "total": 0 }, "approved": { "tmMatch": 0, @@ -12499,9 +12407,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 64, - "default": 348, - "total": 412 + "tmMatch": 0, + "default": 956, + "total": 956 }, "approvalCosts": { "tmMatch": 0, @@ -12513,38 +12421,38 @@ }, { "user": { - "id": 15763855, - "username": "dovbyshbgd", - "fullName": "Bogdan Dovbysh (dovbyshbgd)", + "id": 16003709, + "username": "the-eth-lover", + "fullName": "the-eth-lover", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16003709/medium/b9598ad7bb784e4cdcceeb06025c0e3f_default.png", "preTranslated": 0, - "totalCosts": 11091 + "totalCosts": 506 }, "languages": [ { "language": { - "id": "be", - "name": "Belarusian", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 58 + "totalCosts": 506 }, "translated": { - "tmMatch": 25, - "default": 33, - "total": 58 + "tmMatch": 0, + "default": 506, + "total": 506 }, "targetTranslated": { - "tmMatch": 25, - "default": 28, - "total": 53 + "tmMatch": 0, + "default": 605, + "total": 605 }, "translatedByMt": { - "tmMatch": 25, + "tmMatch": 0, "default": 0, - "total": 25 + "total": 0 }, "approved": { "tmMatch": 0, @@ -12552,39 +12460,52 @@ "total": 0 }, "translationCosts": { - "tmMatch": 25, - "default": 33, - "total": 58 + "tmMatch": 0, + "default": 506, + "total": 506 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15672817, + "username": "thebuzagi", + "fullName": "thebuzagi", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15672817/medium/51945b15a89b4d9de324372227ac36de_default.png", + "preTranslated": 0, + "totalCosts": 6615 + }, + "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11033 + "totalCosts": 6615 }, "translated": { - "tmMatch": 398, - "default": 10635, - "total": 11033 + "tmMatch": 30, + "default": 6585, + "total": 6615 }, "targetTranslated": { - "tmMatch": 390, - "default": 9625, - "total": 10015 + "tmMatch": 30, + "default": 5488, + "total": 5518 }, "translatedByMt": { - "tmMatch": 26, - "default": 749, - "total": 775 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -12592,9 +12513,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 398, - "default": 10635, - "total": 11033 + "tmMatch": 30, + "default": 6585, + "total": 6615 }, "approvalCosts": { "tmMatch": 0, @@ -12606,38 +12527,38 @@ }, { "user": { - "id": 14573604, - "username": "bceschini", - "fullName": "Bruno Ceschini Furtado (bceschini)", + "id": 15966727, + "username": "thenfh2023", + "fullName": "thenfh2023", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14573604/medium/e07f0a64aea775f906b999491ca671d9.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966727/medium/7e9ee0712ef21100611ac7186ad5feea_default.png", "preTranslated": 0, - "totalCosts": 338 + "totalCosts": 325 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 338 + "totalCosts": 325 }, "translated": { "tmMatch": 0, - "default": 338, - "total": 338 + "default": 325, + "total": 325 }, "targetTranslated": { "tmMatch": 0, - "default": 383, - "total": 383 + "default": 389, + "total": 389 }, "translatedByMt": { "tmMatch": 0, - "default": 88, - "total": 88 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -12646,8 +12567,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 338, - "total": 338 + "default": 325, + "total": 325 }, "approvalCosts": { "tmMatch": 0, @@ -12659,13 +12580,13 @@ }, { "user": { - "id": 15422032, - "username": "Fritzhoy", - "fullName": "Camila Marques (Fritzhoy)", + "id": 15962417, + "username": "thuthao0509", + "fullName": "thuthao0509", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15422032/medium/a2df65c9d9309dec39402a0175f3a57f.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962417/medium/dc8fa86e95f051f71b82e9b6e3670467_default.png", "preTranslated": 0, - "totalCosts": 8378 + "totalCosts": 4 }, "languages": [ { @@ -12675,22 +12596,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8378 + "totalCosts": 2 }, "translated": { - "tmMatch": 33, - "default": 8345, - "total": 8378 + "tmMatch": 2, + "default": 0, + "total": 2 }, "targetTranslated": { - "tmMatch": 33, - "default": 8298, - "total": 8331 + "tmMatch": 2, + "default": 0, + "total": 2 }, "translatedByMt": { - "tmMatch": 7, - "default": 1151, - "total": 1158 + "tmMatch": 2, + "default": 0, + "total": 2 }, "approved": { "tmMatch": 0, @@ -12698,47 +12619,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 33, - "default": 8345, - "total": 8378 + "tmMatch": 2, + "default": 0, + "total": 2 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15802207, - "username": "candassonuzun", - "fullName": "Candaş Sonuzun (candassonuzun)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15802207/medium/bb4976b9b4e47b2fad2fd25481c5b961.jpeg", - "preTranslated": 0, - "totalCosts": 67 - }, - "languages": [ + }, { "language": { - "id": "tr", - "name": "Turkish", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 67 + "totalCosts": 2 }, "translated": { "tmMatch": 0, - "default": 67, - "total": 67 + "default": 2, + "total": 2 }, "targetTranslated": { "tmMatch": 0, - "default": 53, - "total": 53 + "default": 4, + "total": 4 }, "translatedByMt": { "tmMatch": 0, @@ -12752,8 +12660,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 67, - "total": 67 + "default": 2, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -12765,38 +12673,38 @@ }, { "user": { - "id": 15350616, - "username": "Carlos_Silva", - "fullName": "Carlos Eduardo Silva (Carlos_Silva)", + "id": 15967089, + "username": "tubitubala", + "fullName": "tubitubala", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15350616/medium/d1c4c996fc6985d2df9db6d157e17356.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967089/medium/8b05d4c10378284ea6580b505ace736c_default.png", "preTranslated": 0, - "totalCosts": 5660 + "totalCosts": 145 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5660 + "totalCosts": 145 }, "translated": { - "tmMatch": 4, - "default": 5656, - "total": 5660 + "tmMatch": 0, + "default": 145, + "total": 145 }, "targetTranslated": { - "tmMatch": 5, - "default": 6271, - "total": 6276 + "tmMatch": 0, + "default": 109, + "total": 109 }, "translatedByMt": { - "tmMatch": 3, - "default": 146, - "total": 149 + "tmMatch": 0, + "default": 5, + "total": 5 }, "approved": { "tmMatch": 0, @@ -12804,9 +12712,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 5656, - "total": 5660 + "tmMatch": 0, + "default": 145, + "total": 145 }, "approvalCosts": { "tmMatch": 0, @@ -12818,38 +12726,38 @@ }, { "user": { - "id": 15185884, - "username": "carmen1912", - "fullName": "Carmen Sortino (carmen1912)", + "id": 15904625, + "username": "unnon", + "fullName": "unnon", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15904625/medium/78c38000e153fe86cd5d12a17234ddcc_default.png", "preTranslated": 0, - "totalCosts": 9034 + "totalCosts": 505 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3137 + "totalCosts": 505 }, "translated": { - "tmMatch": 30, - "default": 3107, - "total": 3137 + "tmMatch": 6, + "default": 499, + "total": 505 }, "targetTranslated": { - "tmMatch": 47, - "default": 4657, - "total": 4704 + "tmMatch": 18, + "default": 922, + "total": 940 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -12857,39 +12765,52 @@ "total": 0 }, "translationCosts": { - "tmMatch": 30, - "default": 3107, - "total": 3137 + "tmMatch": 6, + "default": 499, + "total": 505 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15775647, + "username": "utomo878", + "fullName": "utomo878", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15775647/medium/e6c4302f1613714c53e496f87b61ae01.jpg", + "preTranslated": 0, + "totalCosts": 14288 + }, + "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2839 + "totalCosts": 14288 }, "translated": { - "tmMatch": 24, - "default": 2815, - "total": 2839 + "tmMatch": 272, + "default": 14016, + "total": 14288 }, "targetTranslated": { - "tmMatch": 30, - "default": 3412, - "total": 3442 + "tmMatch": 269, + "default": 13543, + "total": 13812 }, "translatedByMt": { "tmMatch": 0, - "default": 3, - "total": 3 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -12897,34 +12818,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 24, - "default": 2815, - "total": 2839 + "tmMatch": 272, + "default": 14016, + "total": 14288 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15973859, + "username": "vblackwhale", + "fullName": "vblackwhale", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15973859/medium/e81a181b32492c70a65c85400d6f2e35.jpg", + "preTranslated": 0, + "totalCosts": 669 + }, + "languages": [ { "language": { - "id": "it", - "name": "Italian", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3058 + "totalCosts": 669 }, "translated": { - "tmMatch": 405, - "default": 2653, - "total": 3058 + "tmMatch": 0, + "default": 669, + "total": 669 }, "targetTranslated": { - "tmMatch": 623, - "default": 3568, - "total": 4191 + "tmMatch": 0, + "default": 739, + "total": 739 }, "translatedByMt": { "tmMatch": 0, @@ -12937,9 +12871,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 405, - "default": 2653, - "total": 3058 + "tmMatch": 0, + "default": 669, + "total": 669 }, "approvalCosts": { "tmMatch": 0, @@ -12951,48 +12885,48 @@ }, { "user": { - "id": 13179792, - "username": "Aco_carolinavivas77", - "fullName": "Carolina Vivas Rojas (Aco_carolinavivas77)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13179792/medium/705ff11d938224d83048426fa76f7de0_default.png", + "id": 14862460, + "username": "vdusart", + "fullName": "vdusart", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14862460/medium/106cb769254652c20ddeab107317fd43_default.png", "preTranslated": 0, - "totalCosts": 40714 + "totalCosts": 10 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", - "userRole": "Proofreader", + "id": "fr", + "name": "French", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 40714 + "totalCosts": 10 }, "translated": { - "tmMatch": 12217, - "default": 28497, - "total": 40714 + "tmMatch": 0, + "default": 10, + "total": 10 }, "targetTranslated": { - "tmMatch": 13917, - "default": 30761, - "total": 44678 + "tmMatch": 0, + "default": 12, + "total": 12 }, "translatedByMt": { - "tmMatch": 35, - "default": 174, - "total": 209 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 62398 + "total": 0 }, "translationCosts": { - "tmMatch": 12217, - "default": 28497, - "total": 40714 + "tmMatch": 0, + "default": 10, + "total": 10 }, "approvalCosts": { "tmMatch": 0, @@ -13004,33 +12938,33 @@ }, { "user": { - "id": 15740363, - "username": "Claudiojmoreira", - "fullName": "Claudio Moreira (Claudiojmoreira)", + "id": 15963297, + "username": "velorias", + "fullName": "velorias", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15740363/medium/b998f6d1784d3b5ec2cd69dac9ca5e8c.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15963297/medium/5e5a689a0e6b201b87b94ca853c290e2_default.png", "preTranslated": 0, - "totalCosts": 55 + "totalCosts": 868 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 55 + "totalCosts": 868 }, "translated": { - "tmMatch": 0, - "default": 55, - "total": 55 + "tmMatch": 47, + "default": 821, + "total": 868 }, "targetTranslated": { - "tmMatch": 0, - "default": 60, - "total": 60 + "tmMatch": 38, + "default": 699, + "total": 737 }, "translatedByMt": { "tmMatch": 0, @@ -13043,9 +12977,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 55, - "total": 55 + "tmMatch": 47, + "default": 821, + "total": 868 }, "approvalCosts": { "tmMatch": 0, @@ -13057,38 +12991,38 @@ }, { "user": { - "id": 15155844, - "username": "CryptoSpace", - "fullName": "CryptoSpace", + "id": 15902493, + "username": "victorsalles", + "fullName": "victorsalles", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15155844/medium/6e6407e27f509308774f480afe52ff7d.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15902493/medium/d8ecbd67e54b44d12e95650bd9371463_default.png", "preTranslated": 0, - "totalCosts": 12 + "totalCosts": 136 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12 + "totalCosts": 136 }, "translated": { "tmMatch": 0, - "default": 12, - "total": 12 + "default": 136, + "total": 136 }, "targetTranslated": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 156, + "total": 156 }, "translatedByMt": { "tmMatch": 0, - "default": 12, - "total": 12 + "default": 14, + "total": 14 }, "approved": { "tmMatch": 0, @@ -13097,8 +13031,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 12, - "total": 12 + "default": 136, + "total": 136 }, "approvalCosts": { "tmMatch": 0, @@ -13110,33 +13044,33 @@ }, { "user": { - "id": 15851643, - "username": "dar.riall", - "fullName": "DArtxxX (dar.riall)", + "id": 15962351, + "username": "viewfinderboy", + "fullName": "viewfinderboy", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15851643/medium/b5330f948baf3ecf6ac1da804a4a4a92.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962351/medium/4e9ae491f8ee0a3e3215b1f637d68f06_default.png", "preTranslated": 0, - "totalCosts": 24 + "totalCosts": 18 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 24 + "totalCosts": 3 }, "translated": { "tmMatch": 0, - "default": 24, - "total": 24 + "default": 3, + "total": 3 }, "targetTranslated": { "tmMatch": 0, - "default": 24, - "total": 24 + "default": 4, + "total": 4 }, "translatedByMt": { "tmMatch": 0, @@ -13150,46 +13084,33 @@ }, "translationCosts": { "tmMatch": 0, - "default": 24, - "total": 24 + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15773079, - "username": "damianmanierski", - "fullName": "Damian Manierski (damianmanierski)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15773079/medium/75e5794c3d5f92a8341bdc280716f3fb.png", - "preTranslated": 0, - "totalCosts": 28 - }, - "languages": [ + }, { "language": { - "id": "pl", - "name": "Polish", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 28 + "totalCosts": 15 }, "translated": { "tmMatch": 0, - "default": 28, - "total": 28 + "default": 15, + "total": 15 }, "targetTranslated": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 18, + "total": 18 }, "translatedByMt": { "tmMatch": 0, @@ -13203,8 +13124,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 28, - "total": 28 + "default": 15, + "total": 15 }, "approvalCosts": { "tmMatch": 0, @@ -13216,38 +13137,38 @@ }, { "user": { - "id": 15429360, - "username": "davidgomezhernandez155", - "fullName": "David Gómez (davidgomezhernandez155)", + "id": 15984133, + "username": "weiyuabc", + "fullName": "weiyuabc", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15429360/medium/ed757f2577b1e4993a142a5f60869cf8.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15984133/medium/2a5267dbac29dc0063600e4c5013a732_default.png", "preTranslated": 0, - "totalCosts": 643 + "totalCosts": 664 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 643 + "totalCosts": 664 }, "translated": { - "tmMatch": 2, - "default": 641, - "total": 643 + "tmMatch": 0, + "default": 664, + "total": 664 }, "targetTranslated": { - "tmMatch": 9, - "default": 1695, - "total": 1704 + "tmMatch": 0, + "default": 1135, + "total": 1135 }, "translatedByMt": { - "tmMatch": 2, - "default": 462, - "total": 464 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -13255,9 +13176,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 641, - "total": 643 + "tmMatch": 0, + "default": 664, + "total": 664 }, "approvalCosts": { "tmMatch": 0, @@ -13269,38 +13190,38 @@ }, { "user": { - "id": 14212884, - "username": "karpa4o4", - "fullName": "Denis Gavrilyuk (karpa4o4)", + "id": 15960061, + "username": "www.shota", + "fullName": "www.shota", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14212884/medium/346cb2a2e1f3feebc46248abcfad2dc9.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15960061/medium/afffcdcd58dad554429a5b331c47c8fa_default.png", "preTranslated": 0, - "totalCosts": 1 + "totalCosts": 263 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1 + "totalCosts": 263 }, "translated": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 2, + "default": 261, + "total": 263 }, "targetTranslated": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 5, + "default": 432, + "total": 437 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, @@ -13308,9 +13229,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 2, + "default": 261, + "total": 263 }, "approvalCosts": { "tmMatch": 0, @@ -13322,38 +13243,38 @@ }, { "user": { - "id": 14730288, - "username": "sv1sjp", - "fullName": "Dimitris Vagiakakos (sv1sjp)", + "id": 15379570, + "username": "wzined", + "fullName": "wzined", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14730288/medium/e1516c2564036b28615d5420b3589911.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15379570/medium/f057cc8e0d0aecf64979f6f006edf2b1_default.png", "preTranslated": 0, - "totalCosts": 98 + "totalCosts": 19 }, "languages": [ { "language": { - "id": "el", - "name": "Greek", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 98 + "totalCosts": 19 }, "translated": { "tmMatch": 0, - "default": 98, - "total": 98 + "default": 19, + "total": 19 }, "targetTranslated": { "tmMatch": 0, - "default": 106, - "total": 106 + "default": 13, + "total": 13 }, "translatedByMt": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 19, + "total": 19 }, "approved": { "tmMatch": 0, @@ -13362,8 +13283,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 98, - "total": 98 + "default": 19, + "total": 19 }, "approvalCosts": { "tmMatch": 0, @@ -13375,33 +13296,33 @@ }, { "user": { - "id": 15208740, - "username": "nadongjun", - "fullName": "Dongjun Na (nadongjun)", + "id": 15966943, + "username": "yulkor", + "fullName": "yulkor", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208740/medium/5611ef9c6cefafda5157f27ad88f6aa1.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966943/medium/0d340104d53d3ff4df1c7c2412e8c86e_default.png", "preTranslated": 0, - "totalCosts": 559 + "totalCosts": 3396 }, "languages": [ { "language": { - "id": "ko", - "name": "Korean", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 559 + "totalCosts": 3396 }, "translated": { - "tmMatch": 0, - "default": 559, - "total": 559 + "tmMatch": 177, + "default": 3219, + "total": 3396 }, "targetTranslated": { - "tmMatch": 0, - "default": 406, - "total": 406 + "tmMatch": 166, + "default": 2934, + "total": 3100 }, "translatedByMt": { "tmMatch": 0, @@ -13414,9 +13335,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 559, - "total": 559 + "tmMatch": 177, + "default": 3219, + "total": 3396 }, "approvalCosts": { "tmMatch": 0, @@ -13428,33 +13349,33 @@ }, { "user": { - "id": 15855887, - "username": "Draply", - "fullName": "Draply", + "id": 15966271, + "username": "zeydrm", + "fullName": "zeydrm", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15855887/medium/4f772a943e6aaf93e2387638c63c2d52.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966271/medium/bbeac0fbc387f8f821f861bc79c625fd.png", "preTranslated": 0, - "totalCosts": 1 + "totalCosts": 16431 }, "languages": [ { "language": { - "id": "vi", - "name": "Vietnamese", + "id": "hy-AM", + "name": "Armenian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1 + "totalCosts": 141 }, "translated": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 141, + "total": 141 }, "targetTranslated": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 146, + "total": 146 }, "translatedByMt": { "tmMatch": 0, @@ -13467,52 +13388,39 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 141, + "total": 141 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 13332574, - "username": "wongcie", - "fullName": "Dwi Cahyono (wongcie)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13332574/medium/e5d356a816a34edc6657cb41bb54d8f0.jpg", - "preTranslated": 0, - "totalCosts": 273 - }, - "languages": [ + }, { "language": { - "id": "id", - "name": "Indonesian", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 273 + "totalCosts": 16290 }, "translated": { - "tmMatch": 4, - "default": 269, - "total": 273 + "tmMatch": 18, + "default": 16272, + "total": 16290 }, "targetTranslated": { - "tmMatch": 5, - "default": 254, - "total": 259 + "tmMatch": 18, + "default": 13922, + "total": 13940 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 2, + "default": 11, + "total": 13 }, "approved": { "tmMatch": 0, @@ -13520,9 +13428,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 269, - "total": 273 + "tmMatch": 18, + "default": 16272, + "total": 16290 }, "approvalCosts": { "tmMatch": 0, @@ -13534,33 +13442,33 @@ }, { "user": { - "id": 15856137, - "username": "dommypastore", - "fullName": "Dzmitry Pastore Mychko (dommypastore)", + "id": 15858389, + "username": "gok7ug", + "fullName": "- - (gok7ug)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15856137/medium/33c2225f5a0e7266e8441765d97d4b2a.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15858389/medium/2301dd32710c7c8158a63dc3fb74fddf_default.png", "preTranslated": 0, - "totalCosts": 3 + "totalCosts": 218 }, "languages": [ { "language": { - "id": "be", - "name": "Belarusian", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3 + "totalCosts": 218 }, "translated": { - "tmMatch": 3, - "default": 0, - "total": 3 + "tmMatch": 10, + "default": 208, + "total": 218 }, "targetTranslated": { - "tmMatch": 4, - "default": 0, - "total": 4 + "tmMatch": 14, + "default": 167, + "total": 181 }, "translatedByMt": { "tmMatch": 0, @@ -13573,9 +13481,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 0, - "total": 3 + "tmMatch": 10, + "default": 208, + "total": 218 }, "approvalCosts": { "tmMatch": 0, @@ -13587,33 +13495,33 @@ }, { "user": { - "id": 15513946, - "username": "eb023024", - "fullName": "Ebo010 (eb023024)", + "id": 15956489, + "username": "0xhawki", + "fullName": "0xhwk (0xhawki)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15513946/medium/6f5724ecc1daa09198ecb6c26fb71532.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956489/medium/4f6011a32fc4ef0b906c52f838b299d1.png", "preTranslated": 0, - "totalCosts": 626 + "totalCosts": 793 }, "languages": [ { "language": { - "id": "ca", - "name": "Catalan", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 606 + "totalCosts": 793 }, "translated": { - "tmMatch": 3, - "default": 603, - "total": 606 + "tmMatch": 0, + "default": 793, + "total": 793 }, "targetTranslated": { - "tmMatch": 5, - "default": 689, - "total": 694 + "tmMatch": 0, + "default": 676, + "total": 676 }, "translatedByMt": { "tmMatch": 0, @@ -13626,39 +13534,52 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 603, - "total": 606 + "tmMatch": 0, + "default": 793, + "total": 793 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15937895, + "username": "41rjordan", + "fullName": "41rjordan", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15937895/medium/8143dc058a68dfcaae5de7dd8ba963bf.png", + "preTranslated": 0, + "totalCosts": 1011 + }, + "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 20 + "totalCosts": 1011 }, "translated": { "tmMatch": 0, - "default": 20, - "total": 20 + "default": 1011, + "total": 1011 }, "targetTranslated": { "tmMatch": 0, - "default": 29, - "total": 29 + "default": 952, + "total": 952 }, "translatedByMt": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -13667,8 +13588,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 20, - "total": 20 + "default": 1011, + "total": 1011 }, "approvalCosts": { "tmMatch": 0, @@ -13680,141 +13601,141 @@ }, { "user": { - "id": 14829178, - "username": "EffectChen", - "fullName": "Effect Chen (EffectChen)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg", + "id": 14226882, + "username": "FutureTrans01", + "fullName": "ACO_Future Trans (FutureTrans01)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14226882/medium/6f2e227d358c748cdfcd3a1969d69b20_default.png", "preTranslated": 0, - "totalCosts": 5232 + "totalCosts": 145097 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Translator", + "id": "tr", + "name": "Turkish", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5212 + "totalCosts": 145097 }, "translated": { - "tmMatch": 53, - "default": 5159, - "total": 5212 + "tmMatch": 18085, + "default": 127012, + "total": 145097 }, "targetTranslated": { - "tmMatch": 86, - "default": 9005, - "total": 9091 + "tmMatch": 15367, + "default": 106393, + "total": 121760 }, "translatedByMt": { - "tmMatch": 0, - "default": 44, - "total": 44 + "tmMatch": 8, + "default": 0, + "total": 8 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 206897 }, "translationCosts": { - "tmMatch": 53, - "default": 5159, - "total": 5212 + "tmMatch": 18085, + "default": 127012, + "total": 145097 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15548673, + "username": "ACO_GU", + "fullName": "ACO_SJS (ACO_GU)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15548673/medium/97b26c4f72dce4b2597928269c77ad95_default.png", + "preTranslated": 0, + "totalCosts": 12957 + }, + "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Translator", + "id": "kn", + "name": "Kannada", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 20 + "totalCosts": 11916 }, "translated": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 54, + "default": 11862, + "total": 11916 }, "targetTranslated": { - "tmMatch": 0, - "default": 34, - "total": 34 + "tmMatch": 115, + "default": 18772, + "total": 18887 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 26, "default": 0, - "total": 0 + "total": 26 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 26741 }, "translationCosts": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 54, + "default": 11862, + "total": 11916 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 14814690, - "username": "khodaarahmi", - "fullName": "Ehsan Khodaarahmi (khodaarahmi)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14814690/medium/22dbf1e43823e76cb094bff3fdcca212.jpeg", - "preTranslated": 0, - "totalCosts": 85 - }, - "languages": [ + }, { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Translator", + "id": "ne-NP", + "name": "Nepali", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 85 + "totalCosts": 1041 }, "translated": { - "tmMatch": 0, - "default": 85, - "total": 85 + "tmMatch": 56, + "default": 985, + "total": 1041 }, "targetTranslated": { - "tmMatch": 0, - "default": 109, - "total": 109 + "tmMatch": 101, + "default": 1588, + "total": 1689 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 1420 }, "translationCosts": { - "tmMatch": 0, - "default": 85, - "total": 85 + "tmMatch": 56, + "default": 985, + "total": 1041 }, "approvalCosts": { "tmMatch": 0, @@ -13826,33 +13747,33 @@ }, { "user": { - "id": 15880499, - "username": "heshu", - "fullName": "El Yang (heshu)", + "id": 15921661, + "username": "Bohjypellar", + "fullName": "Abdulganiu Ajose (Bohjypellar)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15880499/medium/8a59f8d8cd32430b1d42b6844c2c58fe.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15921661/medium/46083a608a938f869b4855d0113b3930.jpg", "preTranslated": 0, - "totalCosts": 216 + "totalCosts": 4439 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 216 + "totalCosts": 4439 }, "translated": { - "tmMatch": 16, - "default": 200, - "total": 216 + "tmMatch": 33, + "default": 4406, + "total": 4439 }, "targetTranslated": { "tmMatch": 37, - "default": 387, - "total": 424 + "default": 5070, + "total": 5107 }, "translatedByMt": { "tmMatch": 0, @@ -13865,9 +13786,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 16, - "default": 200, - "total": 216 + "tmMatch": 33, + "default": 4406, + "total": 4439 }, "approvalCosts": { "tmMatch": 0, @@ -13879,101 +13800,88 @@ }, { "user": { - "id": 15752987, - "username": "eleashadock", - "fullName": "Elea Shadock (eleashadock)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15752987/medium/4e31f79c3a4f97d4b7b2f45ae5c4b5ad.png", + "id": 13151214, + "username": "Aco_Trans", + "fullName": "Aco (Aco_Trans)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13151214/medium/8d49c17a9752eec54b3a976695e23834_default.png", "preTranslated": 0, - "totalCosts": 430 + "totalCosts": 70685 }, "languages": [ { "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", + "id": "ru", + "name": "Russian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 430 + "totalCosts": 45212 }, "translated": { - "tmMatch": 0, - "default": 430, - "total": 430 + "tmMatch": 3184, + "default": 42028, + "total": 45212 }, "targetTranslated": { - "tmMatch": 0, - "default": 532, - "total": 532 + "tmMatch": 2946, + "default": 38540, + "total": 41486 }, "translatedByMt": { - "tmMatch": 0, - "default": 84, - "total": 84 + "tmMatch": 2, + "default": 4, + "total": 6 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 57184 }, "translationCosts": { - "tmMatch": 0, - "default": 430, - "total": 430 + "tmMatch": 3184, + "default": 42028, + "total": 45212 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15865881, - "username": "elinafigueroa", - "fullName": "Elina Figueroa (elinafigueroa)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15865881/medium/0db823992693ad472fdaa77063fd8801_default.png", - "preTranslated": 0, - "totalCosts": 723 - }, - "languages": [ + }, { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", + "id": "uk", + "name": "Ukrainian", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 723 + "totalCosts": 25473 }, "translated": { - "tmMatch": 15, - "default": 708, - "total": 723 + "tmMatch": 1412, + "default": 24061, + "total": 25473 }, "targetTranslated": { - "tmMatch": 19, - "default": 863, - "total": 882 + "tmMatch": 1277, + "default": 22434, + "total": 23711 }, "translatedByMt": { "tmMatch": 0, - "default": 24, - "total": 24 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 31559 }, "translationCosts": { - "tmMatch": 15, - "default": 708, - "total": 723 + "tmMatch": 1412, + "default": 24061, + "total": 25473 }, "approvalCosts": { "tmMatch": 0, @@ -13985,154 +13893,128 @@ }, { "user": { - "id": 15868825, - "username": "Magnetto.eth", - "fullName": "Erik (Magnetto.eth)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15868825/medium/a7a13f28e6381b984bc20338fda5898c.png", + "id": 15036379, + "username": "bayan-tech", + "fullName": "Aco-BayanTech (bayan-tech)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15036379/medium/753e141785d6f0c1dd9d90a6df87eb05_default.png", "preTranslated": 0, - "totalCosts": 126 + "totalCosts": 77784 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", + "id": "am", + "name": "Amharic", + "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 126 + "totalCosts": 6066 }, "translated": { - "tmMatch": 0, - "default": 126, - "total": 126 + "tmMatch": 84, + "default": 5982, + "total": 6066 }, "targetTranslated": { - "tmMatch": 0, - "default": 116, - "total": 116 + "tmMatch": 75, + "default": 4862, + "total": 4937 }, "translatedByMt": { - "tmMatch": 0, - "default": 55, - "total": 55 + "tmMatch": 1, + "default": 0, + "total": 1 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 10089 }, "translationCosts": { - "tmMatch": 0, - "default": 126, - "total": 126 + "tmMatch": 84, + "default": 5982, + "total": 6066 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15240064, - "username": "Aco_olbec2", - "fullName": "Erik Eriksen (Aco_olbec2)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15240064/medium/d382aa4b49660d6e6dbb3c7e3250652b.jpeg", - "preTranslated": 0, - "totalCosts": 283 - }, - "languages": [ + }, { "language": { - "id": "da", - "name": "Danish", + "id": "ar", + "name": "Arabic", "userRole": "Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 283 + "totalCosts": 13716 }, "translated": { - "tmMatch": 222, - "default": 61, - "total": 283 + "tmMatch": 677, + "default": 13039, + "total": 13716 }, "targetTranslated": { - "tmMatch": 217, - "default": 55, - "total": 272 + "tmMatch": 648, + "default": 12750, + "total": 13398 }, "translatedByMt": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 15, + "default": 0, + "total": 15 }, "approved": { "tmMatch": 0, "default": 0, - "total": 450 + "total": 14484 }, "translationCosts": { - "tmMatch": 222, - "default": 61, - "total": 283 + "tmMatch": 677, + "default": 13039, + "total": 13716 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 13897487, - "username": "ethdotorg", - "fullName": "Ethereum.org Team (ethdotorg)", - "userRole": "Owner", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13897487/medium/246e50d7e9ccde07088ed892b07a0efd.png", - "preTranslated": 235378, - "totalCosts": 3016 - }, - "languages": [ + }, { "language": { - "id": "af", - "name": "Afrikaans", - "userRole": "Owner", + "id": "hy-AM", + "name": "Armenian", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 82, - "totalCosts": 2 + "preTranslate": 0, + "totalCosts": 3810 }, "translated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 629, + "default": 3181, + "total": 3810 }, "targetTranslated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 567, + "default": 3236, + "total": 3803 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 1, "default": 0, - "total": 0 + "total": 1 }, "approved": { "tmMatch": 0, "default": 0, - "total": 2 + "total": 10695 }, "translationCosts": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 629, + "default": 3181, + "total": 3810 }, "approvalCosts": { "tmMatch": 0, @@ -14142,37 +14024,37 @@ }, { "language": { - "id": "sq", - "name": "Albanian", - "userRole": "Owner", + "id": "az", + "name": "Azerbaijani", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 1708, - "totalCosts": 10 + "preTranslate": 0, + "totalCosts": 5741 }, "translated": { - "tmMatch": 0, - "default": 10, - "total": 10 + "tmMatch": 222, + "default": 5519, + "total": 5741 }, "targetTranslated": { - "tmMatch": 0, - "default": 10, - "total": 10 + "tmMatch": 236, + "default": 4797, + "total": 5033 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 3, "default": 0, - "total": 0 + "total": 3 }, "approved": { "tmMatch": 0, "default": 0, - "total": 15 + "total": 8797 }, "translationCosts": { - "tmMatch": 0, - "default": 10, - "total": 10 + "tmMatch": 222, + "default": 5519, + "total": 5741 }, "approvalCosts": { "tmMatch": 0, @@ -14182,22 +14064,22 @@ }, { "language": { - "id": "am", - "name": "Amharic", - "userRole": "Owner", + "id": "ig", + "name": "Igbo", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 44, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 20228 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 117, + "default": 20111, + "total": 20228 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 161, + "default": 23080, + "total": 23241 }, "translatedByMt": { "tmMatch": 0, @@ -14207,12 +14089,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 23331 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 117, + "default": 20111, + "total": 20228 }, "approvalCosts": { "tmMatch": 0, @@ -14222,37 +14104,37 @@ }, { "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Owner", + "id": "fa", + "name": "Persian", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 17685, - "totalCosts": 25 + "preTranslate": 0, + "totalCosts": 23611 }, "translated": { - "tmMatch": 0, - "default": 25, - "total": 25 + "tmMatch": 2925, + "default": 20686, + "total": 23611 }, "targetTranslated": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 3724, + "default": 25895, + "total": 29619 }, "translatedByMt": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 28 + "total": 38295 }, "translationCosts": { - "tmMatch": 0, - "default": 25, - "total": 25 + "tmMatch": 2925, + "default": 20686, + "total": 23611 }, "approvalCosts": { "tmMatch": 0, @@ -14262,22 +14144,22 @@ }, { "language": { - "id": "hy-AM", - "name": "Armenian", - "userRole": "Owner", + "id": "tk", + "name": "Turkmen", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 55, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 4612 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 517, + "default": 4095, + "total": 4612 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 415, + "default": 3537, + "total": 3952 }, "translatedByMt": { "tmMatch": 0, @@ -14287,117 +14169,156 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 6198 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 517, + "default": 4095, + "total": 4612 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 13939103, + "username": "amidas", + "fullName": "Aco_Amidas (amidas)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13939103/medium/d2dbe429cd49b1f80a767cb275a0b83b_default.png", + "preTranslated": 0, + "totalCosts": 2835 + }, + "languages": [ { "language": { - "id": "az", - "name": "Azerbaijani", - "userRole": "Owner", + "id": "sl", + "name": "Slovenian", + "userRole": "Translator, Proofreader", "tmSavings": 0, - "preTranslate": 220, - "totalCosts": 40 + "preTranslate": 0, + "totalCosts": 2835 }, "translated": { - "tmMatch": 1, - "default": 39, - "total": 40 + "tmMatch": 106, + "default": 2729, + "total": 2835 }, "targetTranslated": { - "tmMatch": 1, - "default": 39, - "total": 40 + "tmMatch": 105, + "default": 2694, + "total": 2799 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 3, "default": 0, - "total": 0 + "total": 3 }, "approved": { "tmMatch": 0, "default": 0, - "total": 40 + "total": 1867 }, "translationCosts": { - "tmMatch": 1, - "default": 39, - "total": 40 + "tmMatch": 106, + "default": 2729, + "total": 2835 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15218796, + "username": "elizabethkim", + "fullName": "Aco_ElizabethKim (elizabethkim)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15218796/medium/b2fe0512f17a60d47a4328127eaee058_default.png", + "preTranslated": 0, + "totalCosts": 2534 + }, + "languages": [ { "language": { - "id": "eu", - "name": "Basque", - "userRole": "Owner", + "id": "ko", + "name": "Korean", + "userRole": "Translator, Proofreader", "tmSavings": 0, - "preTranslate": 26, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 2534 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 9, + "default": 2525, + "total": 2534 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 8, + "default": 1920, + "total": 1928 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 9, + "default": 2, + "total": 11 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 5289 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 9, + "default": 2525, + "total": 2534 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15061451, + "username": "Finnish_Sandberg", + "fullName": "Aco_Finnish_Sandberg (Finnish_Sandberg)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15061451/medium/2d9b4ea02540050849d210d9374fc7ef_default.png", + "preTranslated": 0, + "totalCosts": 5812 + }, + "languages": [ { "language": { - "id": "be", - "name": "Belarusian", - "userRole": "Owner", + "id": "fi", + "name": "Finnish", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 120, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 5812 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 319, + "default": 5493, + "total": 5812 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 261, + "default": 4073, + "total": 4334 }, "translatedByMt": { "tmMatch": 0, @@ -14407,37 +14328,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 8296 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 319, + "default": 5493, + "total": 5812 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15304854, + "username": "FGutierrez", + "fullName": "Aco_FlorenciaGutierrez (FGutierrez)", + "userRole": "Manager", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15304854/medium/5f1f6782bbfc6e596c29e7b9a306e0f7_default.png", + "preTranslated": 0, + "totalCosts": 36943 + }, + "languages": [ { "language": { - "id": "bn", - "name": "Bengali", - "userRole": "Owner", + "id": "bg", + "name": "Bulgarian", + "userRole": "Manager", "tmSavings": 0, - "preTranslate": 220, - "totalCosts": 32 + "preTranslate": 0, + "totalCosts": 1342 }, "translated": { "tmMatch": 0, - "default": 32, - "total": 32 + "default": 1342, + "total": 1342 }, "targetTranslated": { "tmMatch": 0, - "default": 32, - "total": 32 + "default": 1419, + "total": 1419 }, "translatedByMt": { "tmMatch": 0, @@ -14447,12 +14381,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 1460 }, "translationCosts": { "tmMatch": 0, - "default": 32, - "total": 32 + "default": 1342, + "total": 1342 }, "approvalCosts": { "tmMatch": 0, @@ -14462,22 +14396,22 @@ }, { "language": { - "id": "br-FR", - "name": "Breton", - "userRole": "Owner", + "id": "hu", + "name": "Hungarian", + "userRole": "Manager", "tmSavings": 0, - "preTranslate": 6, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 15572 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 15572, + "total": 15572 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 14337, + "total": 14337 }, "translatedByMt": { "tmMatch": 0, @@ -14487,12 +14421,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 26147 }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 15572, + "total": 15572 }, "approvalCosts": { "tmMatch": 0, @@ -14502,22 +14436,22 @@ }, { "language": { - "id": "bg", - "name": "Bulgarian", - "userRole": "Owner", + "id": "it", + "name": "Italian", + "userRole": "Manager", "tmSavings": 0, - "preTranslate": 3252, - "totalCosts": 30 + "preTranslate": 0, + "totalCosts": 20029 }, "translated": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 20029, + "total": 20029 }, "targetTranslated": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 21331, + "total": 21331 }, "translatedByMt": { "tmMatch": 0, @@ -14527,37 +14461,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 34 + "total": 34892 }, "translationCosts": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 20029, + "total": 20029 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15688125, + "username": "MinakoK", + "fullName": "Aco_LL_Minako Kamiya (MinakoK)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15688125/medium/d9623c4e233cb23611b41b1138e7c158_default.png", + "preTranslated": 0, + "totalCosts": 17041 + }, + "languages": [ { "language": { - "id": "my", - "name": "Burmese", - "userRole": "Owner", + "id": "ja", + "name": "Japanese", + "userRole": "Translator, Proofreader", "tmSavings": 0, - "preTranslate": 104, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 17041 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 1580, + "default": 15461, + "total": 17041 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 4948, + "default": 44940, + "total": 49888 }, "translatedByMt": { "tmMatch": 0, @@ -14567,37 +14514,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 20791 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 1580, + "default": 15461, + "total": 17041 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15144574, + "username": "Word_Global_Eyes", + "fullName": "Aco_Larisa Gubareva (Word_Global_Eyes)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15144574/medium/d85fe7c56b9f9e47c9f1a3e27ca32078.jpg", + "preTranslated": 0, + "totalCosts": 2549 + }, + "languages": [ { "language": { - "id": "ca", - "name": "Catalan", - "userRole": "Owner", + "id": "ka", + "name": "Georgian", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 1918, - "totalCosts": 26 + "preTranslate": 0, + "totalCosts": 134 }, "translated": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 3, + "default": 131, + "total": 134 }, "targetTranslated": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 2, + "default": 108, + "total": 110 }, "translatedByMt": { "tmMatch": 0, @@ -14607,12 +14567,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 33 + "total": 151 }, "translationCosts": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 3, + "default": 131, + "total": 134 }, "approvalCosts": { "tmMatch": 0, @@ -14622,22 +14582,22 @@ }, { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Owner", + "id": "sw", + "name": "Swahili", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 18936, - "totalCosts": 197 + "preTranslate": 0, + "totalCosts": 2415 }, "translated": { - "tmMatch": 32, - "default": 165, - "total": 197 + "tmMatch": 241, + "default": 2174, + "total": 2415 }, "targetTranslated": { - "tmMatch": 44, - "default": 277, - "total": 321 + "tmMatch": 241, + "default": 2128, + "total": 2369 }, "translatedByMt": { "tmMatch": 0, @@ -14647,52 +14607,65 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 894 + "total": 2561 }, "translationCosts": { - "tmMatch": 32, - "default": 165, - "total": 197 + "tmMatch": 241, + "default": 2174, + "total": 2415 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15048901, + "username": "Joy_Zhang", + "fullName": "Aco_Reviewer_Joy_Zhang (Joy_Zhang)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15048901/medium/9c2e15bbe4e07a19c6a4d53fd3bd4fac_default.png", + "preTranslated": 0, + "totalCosts": 109127 + }, + "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Owner", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 6632, - "totalCosts": 52 + "preTranslate": 0, + "totalCosts": 43797 }, "translated": { - "tmMatch": 2, - "default": 50, - "total": 52 + "tmMatch": 6562, + "default": 37235, + "total": 43797 }, "targetTranslated": { - "tmMatch": 6, - "default": 87, - "total": 93 + "tmMatch": 11656, + "default": 64061, + "total": 75717 }, "translatedByMt": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 6, + "default": 7, + "total": 13 }, "approved": { "tmMatch": 0, "default": 0, - "total": 66 + "total": 60259 }, "translationCosts": { - "tmMatch": 2, - "default": 50, - "total": 52 + "tmMatch": 6562, + "default": 37235, + "total": 43797 }, "approvalCosts": { "tmMatch": 0, @@ -14702,62 +14675,75 @@ }, { "language": { - "id": "hr", - "name": "Croatian", - "userRole": "Owner", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 2733, - "totalCosts": 31 + "preTranslate": 0, + "totalCosts": 65330 }, "translated": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 8623, + "default": 56707, + "total": 65330 }, "targetTranslated": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 14944, + "default": 97561, + "total": 112505 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 10, + "default": 2, + "total": 12 }, "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 71708 }, "translationCosts": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 8623, + "default": 56707, + "total": 65330 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15056853, + "username": "Tracy_Wu", + "fullName": "Aco_Reviewer_Tracy_Wu (Tracy_Wu)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15056853/medium/37114ce3d0b4923712379912a1841f4a_default.png", + "preTranslated": 0, + "totalCosts": 33330 + }, + "languages": [ { "language": { - "id": "cs", - "name": "Czech", - "userRole": "Owner", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 740, - "totalCosts": 26 + "preTranslate": 0, + "totalCosts": 16023 }, "translated": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 2301, + "default": 13722, + "total": 16023 }, "targetTranslated": { - "tmMatch": 0, - "default": 27, - "total": 27 + "tmMatch": 3977, + "default": 24036, + "total": 28013 }, "translatedByMt": { "tmMatch": 0, @@ -14767,12 +14753,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 31 + "total": 15894 }, "translationCosts": { - "tmMatch": 0, - "default": 26, - "total": 26 + "tmMatch": 2301, + "default": 13722, + "total": 16023 }, "approvalCosts": { "tmMatch": 0, @@ -14782,22 +14768,22 @@ }, { "language": { - "id": "da", - "name": "Danish", - "userRole": "Owner", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 463, - "totalCosts": 33 + "preTranslate": 0, + "totalCosts": 17307 }, "translated": { - "tmMatch": 0, - "default": 33, - "total": 33 + "tmMatch": 2210, + "default": 15097, + "total": 17307 }, "targetTranslated": { - "tmMatch": 0, - "default": 33, - "total": 33 + "tmMatch": 3988, + "default": 26677, + "total": 30665 }, "translatedByMt": { "tmMatch": 0, @@ -14807,77 +14793,103 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 38 + "total": 17523 }, "translationCosts": { - "tmMatch": 0, - "default": 33, - "total": 33 + "tmMatch": 2210, + "default": 15097, + "total": 17307 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 13673225, + "username": "Swedish_Sandberg", + "fullName": "Aco_Swedish_Sandberg (Swedish_Sandberg)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13673225/medium/cf1ea751e046884f6c1b65b1485b4502_default.png", + "preTranslated": 0, + "totalCosts": 5280 + }, + "languages": [ { "language": { - "id": "nl", - "name": "Dutch", - "userRole": "Owner", + "id": "sv-SE", + "name": "Swedish", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 5077, - "totalCosts": 20 + "preTranslate": 0, + "totalCosts": 5280 }, "translated": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 719, + "default": 4561, + "total": 5280 }, "targetTranslated": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 778, + "default": 4940, + "total": 5718 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 2, + "default": 3, + "total": 5 }, "approved": { "tmMatch": 0, "default": 0, - "total": 28 + "total": 10032 }, "translationCosts": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 719, + "default": 4561, + "total": 5280 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 13599210, + "username": "Aco_crowdin_CZ_TR", + "fullName": "Aco_crowdin_CZ_TR", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13599210/medium/e0a1e6a034ce38e1bde5701fccfc8770_default.png", + "preTranslated": 0, + "totalCosts": 3902 + }, + "languages": [ { "language": { - "id": "eo", - "name": "Esperanto", - "userRole": "Owner", + "id": "cs", + "name": "Czech", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 3, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 3902 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 166, + "default": 3736, + "total": 3902 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 151, + "default": 3554, + "total": 3705 }, "translatedByMt": { "tmMatch": 0, @@ -14887,77 +14899,103 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 16443 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 166, + "default": 3736, + "total": 3902 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15197762, + "username": "Aco_FR_LauraSanz", + "fullName": "Acolad_FreelanceReviewer_Laura Sanz Gonzalez (Aco_FR_LauraSanz)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15197762/medium/d8e4fc31646e818d0cedd473fe0525d2_default.png", + "preTranslated": 0, + "totalCosts": 63953 + }, + "languages": [ { "language": { - "id": "et", - "name": "Estonian", - "userRole": "Owner", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Proofreader", "tmSavings": 0, - "preTranslate": 43, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 63953 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 11833, + "default": 52120, + "total": 63953 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 14202, + "default": 61000, + "total": 75202 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 5, + "default": 324, + "total": 329 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 94828 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 11833, + "default": 52120, + "total": 63953 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15867623, + "username": "DefiWithJerry", + "fullName": "Adisa Jeremiah (DefiWithJerry)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15867623/medium/9c8af96a127663e1edf812a6cfdfd48d.jpg", + "preTranslated": 0, + "totalCosts": 745 + }, + "languages": [ { "language": { - "id": "fil", - "name": "Filipino", - "userRole": "Owner", + "id": "pcm", + "name": "Nigerian Pidgin", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 474, - "totalCosts": 37 + "preTranslate": 0, + "totalCosts": 745 }, "translated": { - "tmMatch": 0, - "default": 37, - "total": 37 + "tmMatch": 2, + "default": 743, + "total": 745 }, "targetTranslated": { - "tmMatch": 0, - "default": 37, - "total": 37 + "tmMatch": 3, + "default": 984, + "total": 987 }, "translatedByMt": { "tmMatch": 0, @@ -14967,37 +15005,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 37 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 37, - "total": 37 + "tmMatch": 2, + "default": 743, + "total": 745 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15931545, + "username": "aditya37", + "fullName": "Aditya Taware (aditya37)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15931545/medium/542d9f54d7bd8b02a380805748115866.png", + "preTranslated": 0, + "totalCosts": 45 + }, + "languages": [ { "language": { - "id": "fi", - "name": "Finnish", - "userRole": "Owner", + "id": "mr", + "name": "Marathi", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 2643, - "totalCosts": 42 + "preTranslate": 0, + "totalCosts": 45 }, "translated": { "tmMatch": 0, - "default": 42, - "total": 42 + "default": 45, + "total": 45 }, "targetTranslated": { "tmMatch": 0, - "default": 36, - "total": 36 + "default": 68, + "total": 68 }, "translatedByMt": { "tmMatch": 0, @@ -15007,37 +15058,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 52 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 42, - "total": 42 + "default": 45, + "total": 45 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15921847, + "username": "adrian-pusty", + "fullName": "Adrian Pusty (adrian-pusty)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15921847/medium/5ab50081cb5e98a40782221efcda3a42.jpeg", + "preTranslated": 0, + "totalCosts": 443 + }, + "languages": [ { "language": { - "id": "fr", - "name": "French", - "userRole": "Owner", + "id": "pl", + "name": "Polish", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 17443, - "totalCosts": 198 + "preTranslate": 0, + "totalCosts": 443 }, "translated": { - "tmMatch": 3, - "default": 195, - "total": 198 + "tmMatch": 0, + "default": 443, + "total": 443 }, "targetTranslated": { - "tmMatch": 3, - "default": 226, - "total": 229 + "tmMatch": 0, + "default": 404, + "total": 404 }, "translatedByMt": { "tmMatch": 0, @@ -15047,37 +15111,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 312 + "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 195, - "total": 198 + "tmMatch": 0, + "default": 443, + "total": 443 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15957521, + "username": "ahhsunnft", + "fullName": "Ahhsun (ahhsunnft)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957521/medium/ea787d6a453910b93b35f130d227f1d7.png", + "preTranslated": 0, + "totalCosts": 18 + }, + "languages": [ { "language": { - "id": "gl", - "name": "Galician", - "userRole": "Owner", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 171, - "totalCosts": 37 + "preTranslate": 0, + "totalCosts": 18 }, "translated": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 18, + "total": 18 }, "targetTranslated": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 22, + "total": 22 }, "translatedByMt": { "tmMatch": 0, @@ -15087,37 +15164,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 18, + "total": 18 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15968163, + "username": "olusolaakolade", + "fullName": "Akolade Olusola (olusolaakolade)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968163/medium/2b0e4b8cdf8250a609c3d0bbc956ca1d.jpeg", + "preTranslated": 0, + "totalCosts": 58 + }, + "languages": [ { "language": { - "id": "ka", - "name": "Georgian", - "userRole": "Owner", + "id": "yo", + "name": "Yoruba", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 179, - "totalCosts": 32 + "preTranslate": 0, + "totalCosts": 58 }, "translated": { "tmMatch": 0, - "default": 32, - "total": 32 + "default": 58, + "total": 58 }, "targetTranslated": { "tmMatch": 0, - "default": 32, - "total": 32 + "default": 89, + "total": 89 }, "translatedByMt": { "tmMatch": 0, @@ -15127,77 +15217,103 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 71 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 32, - "total": 32 + "default": 58, + "total": 58 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15966989, + "username": "Alamalu", + "fullName": "Alamalu", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966989/medium/1e1908bc80462f4994503e7bb99a2c92.png", + "preTranslated": 0, + "totalCosts": 637 + }, + "languages": [ { "language": { - "id": "de", - "name": "German", - "userRole": "Owner", + "id": "tr", + "name": "Turkish", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 11986, - "totalCosts": 94 + "preTranslate": 0, + "totalCosts": 637 }, "translated": { - "tmMatch": 0, - "default": 94, - "total": 94 + "tmMatch": 1, + "default": 636, + "total": 637 }, "targetTranslated": { - "tmMatch": 0, - "default": 84, - "total": 84 + "tmMatch": 1, + "default": 527, + "total": 528 }, "translatedByMt": { "tmMatch": 0, - "default": 24, - "total": 24 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 107 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 94, - "total": 94 + "tmMatch": 1, + "default": 636, + "total": 637 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15049205, + "username": "aleksandrmedvecky", + "fullName": "Aleksandr Medvecky (aleksandrmedvecky)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15049205/medium/0be15eb751f0359262535f9dfed66c95.jpeg", + "preTranslated": 0, + "totalCosts": 14 + }, + "languages": [ { "language": { - "id": "el", - "name": "Greek", - "userRole": "Owner", + "id": "ru", + "name": "Russian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 4526, - "totalCosts": 19 + "preTranslate": 0, + "totalCosts": 14 }, "translated": { "tmMatch": 0, - "default": 19, - "total": 19 + "default": 14, + "total": 14 }, "targetTranslated": { "tmMatch": 0, - "default": 19, - "total": 19 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -15207,37 +15323,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 29 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 19, - "total": 19 + "default": 14, + "total": 14 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15958037, + "username": "lis3", + "fullName": "Alex (lis3)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15958037/medium/df2215a037e9fee066c37bbba5183c2a.png", + "preTranslated": 0, + "totalCosts": 1471 + }, + "languages": [ { "language": { - "id": "gu-IN", - "name": "Gujarati", - "userRole": "Owner", + "id": "uk", + "name": "Ukrainian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 172, - "totalCosts": 30 + "preTranslate": 0, + "totalCosts": 1471 }, "translated": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 1471, + "total": 1471 }, "targetTranslated": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 1253, + "total": 1253 }, "translatedByMt": { "tmMatch": 0, @@ -15247,42 +15376,55 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 30 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 1471, + "total": 1471 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15918939, + "username": "gowros.lexa", + "fullName": "Alex Govros (gowros.lexa)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15918939/medium/a217137220f396f5a175e8fe256627a4.png", + "preTranslated": 0, + "totalCosts": 1276 + }, + "languages": [ { "language": { - "id": "ha", - "name": "Hausa", - "userRole": "Owner", + "id": "ru", + "name": "Russian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 34, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 1276 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 2, + "default": 1274, + "total": 1276 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 3, + "default": 1135, + "total": 1138 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 33, + "total": 33 }, "approved": { "tmMatch": 0, @@ -15290,34 +15432,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 2, + "default": 1274, + "total": 1276 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15984263, + "username": "alextrepat", + "fullName": "Alex Trepat (alextrepat)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15984263/medium/812f9b1f2c5abe48b2b90fe7aad9b269.jpeg", + "preTranslated": 0, + "totalCosts": 15 + }, + "languages": [ { "language": { - "id": "he", - "name": "Hebrew", - "userRole": "Owner", + "id": "ca", + "name": "Catalan", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 238, - "totalCosts": 37 + "preTranslate": 0, + "totalCosts": 15 }, "translated": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 15, + "total": 15 }, "targetTranslated": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 14, + "total": 14 }, "translatedByMt": { "tmMatch": 0, @@ -15327,37 +15482,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 15, + "total": 15 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15985407, + "username": "alonbenyaakov", + "fullName": "Alon Ben Yaakov (alonbenyaakov)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15985407/medium/cf25fc4e42ce36ab9d114e7e55ade6dc.png", + "preTranslated": 0, + "totalCosts": 16 + }, + "languages": [ { "language": { - "id": "hi", - "name": "Hindi", - "userRole": "Owner", + "id": "he", + "name": "Hebrew", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 2155, - "totalCosts": 26 + "preTranslate": 0, + "totalCosts": 16 }, "translated": { "tmMatch": 0, - "default": 26, - "total": 26 + "default": 16, + "total": 16 }, "targetTranslated": { "tmMatch": 0, - "default": 26, - "total": 26 + "default": 12, + "total": 12 }, "translatedByMt": { "tmMatch": 0, @@ -15367,37 +15535,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 33 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 26, - "total": 26 + "default": 16, + "total": 16 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15971303, + "username": "web3senior", + "fullName": "Amir Rahimi (web3senior)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15971303/medium/6f6d7db906ee32c836d3daf71181b5da.png", + "preTranslated": 0, + "totalCosts": 642 + }, + "languages": [ { "language": { - "id": "hu", - "name": "Hungarian", - "userRole": "Owner", + "id": "fa", + "name": "Persian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 4329, - "totalCosts": 29 + "preTranslate": 0, + "totalCosts": 642 }, "translated": { - "tmMatch": 0, - "default": 29, - "total": 29 + "tmMatch": 185, + "default": 457, + "total": 642 }, "targetTranslated": { - "tmMatch": 0, - "default": 29, - "total": 29 + "tmMatch": 212, + "default": 550, + "total": 762 }, "translatedByMt": { "tmMatch": 0, @@ -15407,37 +15588,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 34 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 29, - "total": 29 + "tmMatch": 185, + "default": 457, + "total": 642 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15949501, + "username": "AnastasiaDostanko", + "fullName": "Anastasia Dostanko (AnastasiaDostanko)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949501/medium/b4b0094060be9c015d45a2a91735e1fd.png", + "preTranslated": 0, + "totalCosts": 28 + }, + "languages": [ { "language": { - "id": "ig", - "name": "Igbo", - "userRole": "Owner", + "id": "be", + "name": "Belarusian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 169, - "totalCosts": 32 + "preTranslate": 0, + "totalCosts": 28 }, "translated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 3, + "default": 25, + "total": 28 }, "targetTranslated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 4, + "default": 23, + "total": 27 }, "translatedByMt": { "tmMatch": 0, @@ -15447,37 +15641,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 3, + "default": 25, + "total": 28 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15403416, + "username": "Aco_APandrea", + "fullName": "Anca Pandrea (Aco_APandrea)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15403416/medium/332fd243f3a81dd8a8a4bd85eeb298c7_default.png", + "preTranslated": 0, + "totalCosts": 386 + }, + "languages": [ { "language": { - "id": "id", - "name": "Indonesian", - "userRole": "Owner", + "id": "ro", + "name": "Romanian", + "userRole": "Translator, Proofreader", "tmSavings": 0, - "preTranslate": 5733, - "totalCosts": 19 + "preTranslate": 0, + "totalCosts": 386 }, "translated": { - "tmMatch": 0, - "default": 19, - "total": 19 + "tmMatch": 107, + "default": 279, + "total": 386 }, "targetTranslated": { - "tmMatch": 0, - "default": 19, - "total": 19 + "tmMatch": 107, + "default": 289, + "total": 396 }, "translatedByMt": { "tmMatch": 0, @@ -15487,117 +15694,156 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 29 + "total": 499 }, "translationCosts": { - "tmMatch": 0, - "default": 19, - "total": 19 + "tmMatch": 107, + "default": 279, + "total": 386 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15899839, + "username": "litasirkapeika", + "fullName": "Andrius K. (Andrel1s) (litasirkapeika)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15899839/medium/84b9048d71216ff43be4d51b4009e18d.jpeg", + "preTranslated": 0, + "totalCosts": 7 + }, + "languages": [ { "language": { - "id": "it", - "name": "Italian", - "userRole": "Owner", + "id": "lt", + "name": "Lithuanian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 17574, - "totalCosts": 115 + "preTranslate": 0, + "totalCosts": 7 }, "translated": { - "tmMatch": 18, - "default": 97, - "total": 115 + "tmMatch": 0, + "default": 7, + "total": 7 }, "targetTranslated": { - "tmMatch": 18, - "default": 97, - "total": 115 + "tmMatch": 0, + "default": 6, + "total": 6 }, "translatedByMt": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 191 + "total": 0 }, "translationCosts": { - "tmMatch": 18, - "default": 97, - "total": 115 + "tmMatch": 0, + "default": 7, + "total": 7 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15814229, + "username": "andrebz", + "fullName": "André Benedet Zilli (andrebz)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15814229/medium/d83277686444f13c2426fd05f4529437.jpeg", + "preTranslated": 0, + "totalCosts": 15 + }, + "languages": [ { "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Owner", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 16850, - "totalCosts": 339 + "preTranslate": 0, + "totalCosts": 15 }, "translated": { - "tmMatch": 6, - "default": 333, - "total": 339 + "tmMatch": 0, + "default": 15, + "total": 15 }, "targetTranslated": { - "tmMatch": 18, - "default": 1035, - "total": 1053 + "tmMatch": 0, + "default": 15, + "total": 15 }, "translatedByMt": { - "tmMatch": 2, - "default": 4, - "total": 6 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 570 + "total": 0 }, "translationCosts": { - "tmMatch": 6, - "default": 333, - "total": 339 + "tmMatch": 0, + "default": 15, + "total": 15 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15998451, + "username": "gato1904", + "fullName": "Andrés León (gato1904)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15998451/medium/b48c75b54930b781a82c9146d5ba2daf.png", + "preTranslated": 0, + "totalCosts": 52 + }, + "languages": [ { "language": { - "id": "kn", - "name": "Kannada", - "userRole": "Owner", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 48, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 52 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 52, + "total": 52 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 54, + "total": 54 }, "translatedByMt": { "tmMatch": 0, @@ -15610,34 +15856,100 @@ "total": 0 }, "translationCosts": { + "tmMatch": 0, + "default": 52, + "total": 52 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15770841, + "username": "Angelito_18", + "fullName": "Angelito _18 (Angelito_18)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15770841/medium/f82644a45b17eed3facb1815dcc83d13.jpeg", + "preTranslated": 0, + "totalCosts": 2850 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 2850 + }, + "translated": { + "tmMatch": 2, + "default": 2848, + "total": 2850 + }, + "targetTranslated": { + "tmMatch": 3, + "default": 3242, + "total": 3245 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 582, + "total": 582 + }, + "approved": { "tmMatch": 0, "default": 0, "total": 0 }, + "translationCosts": { + "tmMatch": 2, + "default": 2848, + "total": 2850 + }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15279734, + "username": "Pizza_Princess", + "fullName": "Anna Litvin (Pizza_Princess)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15279734/medium/97188da12b167157ee0793e1c63396ab_default.png", + "preTranslated": 0, + "totalCosts": 78 + }, + "languages": [ { "language": { - "id": "kk", - "name": "Kazakh", - "userRole": "Owner", + "id": "uk", + "name": "Ukrainian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 171, - "totalCosts": 39 + "preTranslate": 0, + "totalCosts": 78 }, "translated": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 78, + "total": 78 }, "targetTranslated": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 75, + "total": 75 }, "translatedByMt": { "tmMatch": 0, @@ -15647,37 +15959,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 78, + "total": 78 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 16026460, + "username": "anton.aksyonov", + "fullName": "Anton Aksyonov (anton.aksyonov)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16026460/medium/784c5798436dba2bf5db01ce3297a80d.jpeg", + "preTranslated": 0, + "totalCosts": 246 + }, + "languages": [ { "language": { - "id": "km", - "name": "Khmer", - "userRole": "Owner", + "id": "uk", + "name": "Ukrainian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 287, - "totalCosts": 39 + "preTranslate": 0, + "totalCosts": 246 }, "translated": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 246, + "total": 246 }, "targetTranslated": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 189, + "total": 189 }, "translatedByMt": { "tmMatch": 0, @@ -15687,37 +16012,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 246, + "total": 246 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15287132, + "username": "0xAntonio", + "fullName": "Antonio (0xAntonio)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15287132/medium/67c5a079a19f5b0cd46f8d628cff446d.png", + "preTranslated": 0, + "totalCosts": 3479 + }, + "languages": [ { "language": { - "id": "ko", - "name": "Korean", - "userRole": "Owner", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 3733, - "totalCosts": 21 + "preTranslate": 0, + "totalCosts": 3479 }, "translated": { - "tmMatch": 0, - "default": 21, - "total": 21 + "tmMatch": 3, + "default": 3476, + "total": 3479 }, "targetTranslated": { - "tmMatch": 0, - "default": 21, - "total": 21 + "tmMatch": 3, + "default": 3791, + "total": 3794 }, "translatedByMt": { "tmMatch": 0, @@ -15727,38 +16065,7558 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 33 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 21, - "total": 21 + "tmMatch": 3, + "default": 3476, + "total": 3479 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15954257, + "username": "arifulone", + "fullName": "Ariful Islam (arifulone)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954257/medium/a836f4b9acb6585087ed674cb6b3b77e.jpg", + "preTranslated": 0, + "totalCosts": 39535 + }, + "languages": [ { "language": { - "id": "ku", - "name": "Kurdish", - "userRole": "Owner", + "id": "bn", + "name": "Bengali", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 3, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 39535 }, "translated": { + "tmMatch": 185, + "default": 39350, + "total": 39535 + }, + "targetTranslated": { + "tmMatch": 394, + "default": 74362, + "total": 74756 + }, + "translatedByMt": { + "tmMatch": 52, + "default": 2, + "total": 54 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 185, + "default": 39350, + "total": 39535 + }, + "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 + } + } + ] + }, + { + "user": { + "id": 14852734, + "username": "0xEthDuzIt", + "fullName": "Arigatoshi (0xEthDuzIt)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14852734/medium/da1e9138c30b0fbcfd54f987a7e55328.jpg", + "preTranslated": 0, + "totalCosts": 64 + }, + "languages": [ + { + "language": { + "id": "ja", + "name": "Japanese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 64 + }, + "translated": { + "tmMatch": 0, + "default": 64, + "total": 64 }, "targetTranslated": { + "tmMatch": 0, + "default": 195, + "total": 195 + }, + "translatedByMt": { "tmMatch": 0, "default": 0, "total": 0 }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 64, + "total": 64 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15300418, + "username": "globart", + "fullName": "Artem Stankov (globart)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15300418/medium/28c0af8820123db5d3a0cbf7bc72e713.jpeg", + "preTranslated": 0, + "totalCosts": 5411 + }, + "languages": [ + { + "language": { + "id": "uk", + "name": "Ukrainian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 5411 + }, + "translated": { + "tmMatch": 79, + "default": 5332, + "total": 5411 + }, + "targetTranslated": { + "tmMatch": 78, + "default": 4925, + "total": 5003 + }, + "translatedByMt": { + "tmMatch": 10, + "default": 0, + "total": 10 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 79, + "default": 5332, + "total": 5411 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15900289, + "username": "acorberes", + "fullName": "Arthur CORBÈRES (acorberes)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15900289/medium/2d315be7ab98cf6330f2b9acdde09249_default.png", + "preTranslated": 0, + "totalCosts": 5 + }, + "languages": [ + { + "language": { + "id": "fr", + "name": "French", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 5 + }, + "translated": { + "tmMatch": 0, + "default": 5, + "total": 5 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 6, + "total": 6 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 5, + "total": 5 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 5, + "total": 5 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15928039, + "username": "manchutsca", + "fullName": "Arya (manchutsca)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15928039/medium/7de6527da226c1e21513988bd61c51fa.jpg", + "preTranslated": 0, + "totalCosts": 60 + }, + "languages": [ + { + "language": { + "id": "vi", + "name": "Vietnamese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 60 + }, + "translated": { + "tmMatch": 10, + "default": 50, + "total": 60 + }, + "targetTranslated": { + "tmMatch": 17, + "default": 91, + "total": 108 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 10, + "default": 50, + "total": 60 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15953295, + "username": "washbin", + "fullName": "Ashbin Wosti (washbin)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15953295/medium/e02a89a86e9d77662de9ee5abc15e087.jpeg", + "preTranslated": 0, + "totalCosts": 1342 + }, + "languages": [ + { + "language": { + "id": "ne-NP", + "name": "Nepali", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1342 + }, + "translated": { + "tmMatch": 45, + "default": 1297, + "total": 1342 + }, + "targetTranslated": { + "tmMatch": 88, + "default": 2173, + "total": 2261 + }, + "translatedByMt": { + "tmMatch": 7, + "default": 2, + "total": 9 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 45, + "default": 1297, + "total": 1342 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15815431, + "username": "Hypolithe", + "fullName": "Asseke Hypolithe (Hypolithe)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15815431/medium/b04ccb2408b3c0bf816f2ed815bdecd4.JPG", + "preTranslated": 0, + "totalCosts": 89 + }, + "languages": [ + { + "language": { + "id": "pcm", + "name": "Nigerian Pidgin", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 89 + }, + "translated": { + "tmMatch": 0, + "default": 89, + "total": 89 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 122, + "total": 122 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 89, + "total": 89 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15974691, + "username": "harbaouibilal8", + "fullName": "BLH (harbaouibilal8)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15974691/medium/4654317e5ddd823f7f5f831328af15bb.jpeg", + "preTranslated": 0, + "totalCosts": 26 + }, + "languages": [ + { + "language": { + "id": "ar", + "name": "Arabic", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 26 + }, + "translated": { + "tmMatch": 2, + "default": 24, + "total": 26 + }, + "targetTranslated": { + "tmMatch": 4, + "default": 35, + "total": 39 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 2, + "default": 24, + "total": 26 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15942551, + "username": "Nagapadmini7", + "fullName": "BUCHETI NAGA PADMINI (Nagapadmini7)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15942551/medium/6fd04f82cd314d62d8e2c0c64e97e13c.jpeg", + "preTranslated": 0, + "totalCosts": 28 + }, + "languages": [ + { + "language": { + "id": "te", + "name": "Telugu", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 28 + }, + "translated": { + "tmMatch": 0, + "default": 28, + "total": 28 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 33, + "total": 33 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 28, + "total": 28 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 14467908, + "username": "BarnettWong", + "fullName": "Barnett Wong (BarnettWong)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14467908/medium/d684efc33954be7ca3e82a82d8d6478e.jpeg", + "preTranslated": 0, + "totalCosts": 411 + }, + "languages": [ + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 411 + }, + "translated": { + "tmMatch": 0, + "default": 411, + "total": 411 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 734, + "total": 734 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 411, + "total": 411 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15967485, + "username": "horvathbenedek92", + "fullName": "Benedek Horváth (horvathbenedek92)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967485/medium/5f3e3c3d17bd4c1d3747d2e511da03df.png", + "preTranslated": 0, + "totalCosts": 190 + }, + "languages": [ + { + "language": { + "id": "hu", + "name": "Hungarian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 190 + }, + "translated": { + "tmMatch": 0, + "default": 190, + "total": 190 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 191, + "total": 191 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 190, + "total": 190 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15949023, + "username": "bibarysdos", + "fullName": "Bibarys Dos (bibarysdos)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949023/medium/7ed167cae478defadda299713155928b.jpeg", + "preTranslated": 0, + "totalCosts": 416 + }, + "languages": [ + { + "language": { + "id": "kk", + "name": "Kazakh", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 416 + }, + "translated": { + "tmMatch": 12, + "default": 404, + "total": 416 + }, + "targetTranslated": { + "tmMatch": 12, + "default": 365, + "total": 377 + }, + "translatedByMt": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 12, + "default": 404, + "total": 416 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15763855, + "username": "dovbyshbgd", + "fullName": "Bogdan Dovbysh (dovbyshbgd)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763855/medium/5b59dc54e26664f82eab09a76961eaf7.png", + "preTranslated": 0, + "totalCosts": 12546 + }, + "languages": [ + { + "language": { + "id": "be", + "name": "Belarusian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 5915 + }, + "translated": { + "tmMatch": 35, + "default": 5880, + "total": 5915 + }, + "targetTranslated": { + "tmMatch": 35, + "default": 5349, + "total": 5384 + }, + "translatedByMt": { + "tmMatch": 24, + "default": 0, + "total": 24 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 35, + "default": 5880, + "total": 5915 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "pl", + "name": "Polish", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 6 + }, + "translated": { + "tmMatch": 0, + "default": 6, + "total": 6 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 6, + "total": 6 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 6, + "total": 6 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ru", + "name": "Russian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 6625 + }, + "translated": { + "tmMatch": 182, + "default": 6443, + "total": 6625 + }, + "targetTranslated": { + "tmMatch": 161, + "default": 5756, + "total": 5917 + }, + "translatedByMt": { + "tmMatch": 5, + "default": 0, + "total": 5 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 182, + "default": 6443, + "total": 6625 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 14573604, + "username": "bceschini", + "fullName": "Bruno Ceschini Furtado (bceschini)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14573604/medium/e07f0a64aea775f906b999491ca671d9.jpeg", + "preTranslated": 0, + "totalCosts": 1143 + }, + "languages": [ + { + "language": { + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1143 + }, + "translated": { + "tmMatch": 0, + "default": 1143, + "total": 1143 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 1310, + "total": 1310 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 93, + "total": 93 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 1143, + "total": 1143 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 14191207, + "username": "BugraYazici61", + "fullName": "Buğra Yazıcı (BugraYazici61)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14191207/medium/acbedfab9452bc1d4d9896c08137adab_default.png", + "preTranslated": 0, + "totalCosts": 813 + }, + "languages": [ + { + "language": { + "id": "tr", + "name": "Turkish", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 813 + }, + "translated": { + "tmMatch": 0, + "default": 813, + "total": 813 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 647, + "total": 647 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 813, + "total": 813 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15422032, + "username": "Fritzhoy", + "fullName": "Camila Gonçalves (Fritzhoy)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15422032/medium/a2df65c9d9309dec39402a0175f3a57f.png", + "preTranslated": 0, + "totalCosts": 503 + }, + "languages": [ + { + "language": { + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 503 + }, + "translated": { + "tmMatch": 0, + "default": 503, + "total": 503 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 529, + "total": 529 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 21, + "total": 21 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 503, + "total": 503 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 13754187, + "username": "Carla78", + "fullName": "Carla (Carla78)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13754187/medium/37de2106b564cdd5431a9c1f7e091087.png", + "preTranslated": 0, + "totalCosts": 10317 + }, + "languages": [ + { + "language": { + "id": "it", + "name": "Italian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 10317 + }, + "translated": { + "tmMatch": 127, + "default": 10190, + "total": 10317 + }, + "targetTranslated": { + "tmMatch": 136, + "default": 11002, + "total": 11138 + }, + "translatedByMt": { + "tmMatch": 9, + "default": 0, + "total": 9 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 127, + "default": 10190, + "total": 10317 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15185884, + "username": "carmen1912", + "fullName": "Carmen Sortino (carmen1912)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15185884/medium/0d349af8ba0364fdd96b55b46c40590c.jpg", + "preTranslated": 0, + "totalCosts": 1746 + }, + "languages": [ + { + "language": { + "id": "fr", + "name": "French", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 601 + }, + "translated": { + "tmMatch": 3, + "default": 598, + "total": 601 + }, + "targetTranslated": { + "tmMatch": 5, + "default": 969, + "total": 974 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 3, + "default": 598, + "total": 601 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "de", + "name": "German", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 569 + }, + "translated": { + "tmMatch": 0, + "default": 569, + "total": 569 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 776, + "total": 776 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 569, + "total": 569 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "it", + "name": "Italian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 576 + }, + "translated": { + "tmMatch": 1, + "default": 575, + "total": 576 + }, + "targetTranslated": { + "tmMatch": 2, + "default": 845, + "total": 847 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 575, + "total": 576 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 13179792, + "username": "Aco_carolinavivas77", + "fullName": "Carolina Vivas Rojas (Aco_carolinavivas77)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13179792/medium/705ff11d938224d83048426fa76f7de0_default.png", + "preTranslated": 0, + "totalCosts": 0 + }, + "languages": [ + { + "language": { + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 9218 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15902117, + "username": "cassio.gusson", + "fullName": "Cassio Gusson (cassio.gusson)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15902117/medium/07ad2db947468fb4ed35ed2b9e51f8d2.png", + "preTranslated": 0, + "totalCosts": 219 + }, + "languages": [ + { + "language": { + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 219 + }, + "translated": { + "tmMatch": 0, + "default": 219, + "total": 219 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 276, + "total": 276 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 219, + "total": 219 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15946127, + "username": "hyperalchemy", + "fullName": "Ceci (hyperalchemy)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946127/medium/fb8809671278895b42cf50c752fd7bf2.png", + "preTranslated": 0, + "totalCosts": 2619 + }, + "languages": [ + { + "language": { + "id": "it", + "name": "Italian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 2619 + }, + "translated": { + "tmMatch": 2, + "default": 2617, + "total": 2619 + }, + "targetTranslated": { + "tmMatch": 2, + "default": 2739, + "total": 2741 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 2, + "default": 2617, + "total": 2619 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15947213, + "username": "LedgerAcademyPakistan", + "fullName": "Celo (LedgerAcademyPakistan)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947213/medium/8251242ca8ddb35ee489e6ac83b49eac.jpeg", + "preTranslated": 0, + "totalCosts": 71 + }, + "languages": [ + { + "language": { + "id": "ur-PK", + "name": "Urdu (Pakistan)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 71 + }, + "translated": { + "tmMatch": 0, + "default": 71, + "total": 71 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 96, + "total": 96 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 71, + "total": 71 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15460614, + "username": "Changyong", + "fullName": "Chang (Changyong)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15460614/medium/5caa70b096b64f9f9d40266ba0359ac0.png", + "preTranslated": 0, + "totalCosts": 399 + }, + "languages": [ + { + "language": { + "id": "ko", + "name": "Korean", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 399 + }, + "translated": { + "tmMatch": 9, + "default": 390, + "total": 399 + }, + "targetTranslated": { + "tmMatch": 9, + "default": 279, + "total": 288 + }, + "translatedByMt": { + "tmMatch": 7, + "default": 1, + "total": 8 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 9, + "default": 390, + "total": 399 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15947735, + "username": "cychung", + "fullName": "Chen-Yuan Chung (cychung)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947735/medium/4023f995a7c5a29531aba4ba3d6f4c73.jpg", + "preTranslated": 0, + "totalCosts": 159 + }, + "languages": [ + { + "language": { + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 159 + }, + "translated": { + "tmMatch": 51, + "default": 108, + "total": 159 + }, + "targetTranslated": { + "tmMatch": 105, + "default": 227, + "total": 332 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 51, + "default": 108, + "total": 159 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15240262, + "username": "Aco_Moinier", + "fullName": "Christelle Moinier-Belotti (Aco_Moinier)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15240262/medium/d4137efae4d0f70f4603f2a475105446_default.png", + "preTranslated": 0, + "totalCosts": 1067 + }, + "languages": [ + { + "language": { + "id": "fr", + "name": "French", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1067 + }, + "translated": { + "tmMatch": 102, + "default": 965, + "total": 1067 + }, + "targetTranslated": { + "tmMatch": 127, + "default": 1179, + "total": 1306 + }, + "translatedByMt": { + "tmMatch": 7, + "default": 194, + "total": 201 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 1730 + }, + "translationCosts": { + "tmMatch": 102, + "default": 965, + "total": 1067 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15912891, + "username": "Cristianoluizz", + "fullName": "Cristianoluizz", + "userRole": "Blocked", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912891/medium/d8e9c294bdfe19b843d80b68714c6a6d.png", + "preTranslated": 0, + "totalCosts": 583 + }, + "languages": [ + { + "language": { + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Blocked", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 583 + }, + "translated": { + "tmMatch": 38, + "default": 545, + "total": 583 + }, + "targetTranslated": { + "tmMatch": 38, + "default": 547, + "total": 585 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 38, + "default": 545, + "total": 583 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15753095, + "username": "ctremblayperron", + "fullName": "Cynthia Tremblay Perron (ctremblayperron)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15753095/medium/bac57df7455d9809661f69e2bd8844e8.png", + "preTranslated": 0, + "totalCosts": 4 + }, + "languages": [ + { + "language": { + "id": "fr", + "name": "French", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 4 + }, + "translated": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15962457, + "username": "danimeister", + "fullName": "Dani Setia Hardian (danimeister)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962457/medium/97c701528b519a4a784b0d6b5f845fb8.jpg", + "preTranslated": 0, + "totalCosts": 17903 + }, + "languages": [ + { + "language": { + "id": "id", + "name": "Indonesian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 17903 + }, + "translated": { + "tmMatch": 63, + "default": 17840, + "total": 17903 + }, + "targetTranslated": { + "tmMatch": 61, + "default": 16613, + "total": 16674 + }, + "translatedByMt": { + "tmMatch": 2, + "default": 0, + "total": 2 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 63, + "default": 17840, + "total": 17903 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15966401, + "username": "daniel.zarzecki047", + "fullName": "Daniel (daniel.zarzecki047)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966401/medium/fa1d0a5129bf7a77c98232488dfc9d98.png", + "preTranslated": 0, + "totalCosts": 731 + }, + "languages": [ + { + "language": { + "id": "pl", + "name": "Polish", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 731 + }, + "translated": { + "tmMatch": 12, + "default": 719, + "total": 731 + }, + "targetTranslated": { + "tmMatch": 10, + "default": 676, + "total": 686 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 2, + "total": 2 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 12, + "default": 719, + "total": 731 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 14528224, + "username": "dpaiva", + "fullName": "Daniel Paiva (dpaiva)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14528224/medium/f007f6edd11761ed4a10fe64cbc64929.jpeg", + "preTranslated": 0, + "totalCosts": 35 + }, + "languages": [ + { + "language": { + "id": "pt-PT", + "name": "Portuguese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 35 + }, + "translated": { + "tmMatch": 0, + "default": 35, + "total": 35 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 43, + "total": 43 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 21, + "total": 21 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 35, + "total": 35 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15930707, + "username": "Brilj310", + "fullName": "Danijel Brilj (Brilj310)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15930707/medium/c47e41136291839afb9660a90ed89bcd_default.png", + "preTranslated": 0, + "totalCosts": 25 + }, + "languages": [ + { + "language": { + "id": "sl", + "name": "Slovenian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 25 + }, + "translated": { + "tmMatch": 0, + "default": 25, + "total": 25 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 7, + "total": 7 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 25, + "total": 25 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15983387, + "username": "QeengD", + "fullName": "David Sado (QeengD)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15983387/medium/7cfc75592887694c6e46dc96b24e7737.png", + "preTranslated": 0, + "totalCosts": 81 + }, + "languages": [ + { + "language": { + "id": "pcm", + "name": "Nigerian Pidgin", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 81 + }, + "translated": { + "tmMatch": 0, + "default": 81, + "total": 81 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 100, + "total": 100 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 81, + "total": 81 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 13438047, + "username": "dayitvagoel", + "fullName": "Dayitva Goel (dayitvagoel)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13438047/medium/9d3ff0b2bdca520134c6b31569f09872.jpg", + "preTranslated": 0, + "totalCosts": 6 + }, + "languages": [ + { + "language": { + "id": "hi", + "name": "Hindi", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 6 + }, + "translated": { + "tmMatch": 5, + "default": 1, + "total": 6 + }, + "targetTranslated": { + "tmMatch": 9, + "default": 1, + "total": 10 + }, + "translatedByMt": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 5, + "default": 1, + "total": 6 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 13869465, + "username": "Debika_CKS_P", + "fullName": "Debika (Debika_CKS_P)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13869465/medium/dac50233f4f1f19a42d3ad24568cbfbf_default.png", + "preTranslated": 0, + "totalCosts": 26 + }, + "languages": [ + { + "language": { + "id": "id", + "name": "Indonesian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 26 + }, + "translated": { + "tmMatch": 26, + "default": 0, + "total": 26 + }, + "targetTranslated": { + "tmMatch": 27, + "default": 0, + "total": 27 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 26, + "default": 0, + "total": 26 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15993807, + "username": "biollocover04", + "fullName": "Demon Fargo (biollocover04)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993807/medium/3cf26e50ff32a91a5b5bddd2aea2c61c.jpeg", + "preTranslated": 0, + "totalCosts": 614 + }, + "languages": [ + { + "language": { + "id": "pt-PT", + "name": "Portuguese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 614 + }, + "translated": { + "tmMatch": 1, + "default": 613, + "total": 614 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 719, + "total": 720 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 613, + "total": 614 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15984903, + "username": "deom", + "fullName": "Dennis Foster (deom)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15984903/medium/b4fd563832a6b6f4e3547f2fcf71004e.jpeg", + "preTranslated": 0, + "totalCosts": 176 + }, + "languages": [ + { + "language": { + "id": "ru", + "name": "Russian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 176 + }, + "translated": { + "tmMatch": 0, + "default": 176, + "total": 176 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 170, + "total": 170 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 176, + "total": 176 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15971081, + "username": "ervbgdertg", + "fullName": "Dertg Ervbg (ervbgdertg)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15971081/medium/8a24209681bca4152b7863428d81f47d.png", + "preTranslated": 0, + "totalCosts": 6 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 6 + }, + "translated": { + "tmMatch": 6, + "default": 0, + "total": 6 + }, + "targetTranslated": { + "tmMatch": 10, + "default": 0, + "total": 10 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 6, + "default": 0, + "total": 6 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15430214, + "username": "didierkrux", + "fullName": "Didier Krux (didierkrux)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15430214/medium/2b8391bf50f94b404bcd2967c0528ed7.png", + "preTranslated": 0, + "totalCosts": 5 + }, + "languages": [ + { + "language": { + "id": "fr", + "name": "French", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 5 + }, + "translated": { + "tmMatch": 0, + "default": 5, + "total": 5 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 5, + "total": 5 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 5, + "total": 5 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15619839, + "username": "mediaquest", + "fullName": "Dmitry Bauer (mediaquest)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15619839/medium/99c14ce4e8161f6b077fa0849ac4c5b0.png", + "preTranslated": 0, + "totalCosts": 19 + }, + "languages": [ + { + "language": { + "id": "ru", + "name": "Russian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 19 + }, + "translated": { + "tmMatch": 0, + "default": 19, + "total": 19 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 18, + "total": 18 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 19, + "total": 19 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15925911, + "username": "f0lin3r", + "fullName": "Dmitry Hatsenko (f0lin3r)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15925911/medium/c7613d7e034b7360b77fd271dccb6cb2.jpeg", + "preTranslated": 0, + "totalCosts": 876 + }, + "languages": [ + { + "language": { + "id": "uk", + "name": "Ukrainian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 876 + }, + "translated": { + "tmMatch": 6, + "default": 870, + "total": 876 + }, + "targetTranslated": { + "tmMatch": 8, + "default": 809, + "total": 817 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 16, + "total": 16 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 6, + "default": 870, + "total": 876 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15976061, + "username": "Sarumpaetlubis", + "fullName": "Dorsmer Cam (Sarumpaetlubis)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15976061/medium/947992e30d5488d916e1d16cf260a84d.png", + "preTranslated": 0, + "totalCosts": 10 + }, + "languages": [ + { + "language": { + "id": "id", + "name": "Indonesian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 10 + }, + "translated": { + "tmMatch": 0, + "default": 10, + "total": 10 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 10, + "total": 10 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 10, + "total": 10 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15900157, + "username": "sugarmoon", + "fullName": "Duy Ngoc Mai (sugarmoon)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15900157/medium/22a4e052c3fb3b8613e1eb1a4e6c2698.jpeg", + "preTranslated": 0, + "totalCosts": 3350 + }, + "languages": [ + { + "language": { + "id": "vi", + "name": "Vietnamese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 3350 + }, + "translated": { + "tmMatch": 33, + "default": 3317, + "total": 3350 + }, + "targetTranslated": { + "tmMatch": 62, + "default": 4604, + "total": 4666 + }, + "translatedByMt": { + "tmMatch": 3, + "default": 2, + "total": 5 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 33, + "default": 3317, + "total": 3350 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 13332574, + "username": "wongcie", + "fullName": "Dwi Cahyono (wongcie)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13332574/medium/e5d356a816a34edc6657cb41bb54d8f0.jpg", + "preTranslated": 0, + "totalCosts": 2 + }, + "languages": [ + { + "language": { + "id": "id", + "name": "Indonesian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 2 + }, + "translated": { + "tmMatch": 2, + "default": 0, + "total": 2 + }, + "targetTranslated": { + "tmMatch": 2, + "default": 0, + "total": 2 + }, + "translatedByMt": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 2, + "default": 0, + "total": 2 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 13842283, + "username": "Dzenan", + "fullName": "Dženan (Dzenan)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13842283/medium/bbfb9ef4136417577f368ab059d20644.jpeg", + "preTranslated": 0, + "totalCosts": 68 + }, + "languages": [ + { + "language": { + "id": "sv-SE", + "name": "Swedish", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 68 + }, + "translated": { + "tmMatch": 9, + "default": 59, + "total": 68 + }, + "targetTranslated": { + "tmMatch": 8, + "default": 57, + "total": 65 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 9, + "default": 59, + "total": 68 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15950523, + "username": "ruegreengrass", + "fullName": "Ecem (ruegreengrass)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15950523/medium/8575c3fdc047f7b8e9ed234df1a9cafa.jpeg", + "preTranslated": 0, + "totalCosts": 2 + }, + "languages": [ + { + "language": { + "id": "tr", + "name": "Turkish", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 2 + }, + "translated": { + "tmMatch": 0, + "default": 2, + "total": 2 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 1, + "total": 1 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 2, + "total": 2 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15966607, + "username": "Hackedd.eth", + "fullName": "Eduardo García (Hackedd.eth)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966607/medium/233013bfe6b35fd53264071d722f63f1.png", + "preTranslated": 0, + "totalCosts": 4059 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 4059 + }, + "translated": { + "tmMatch": 1, + "default": 4058, + "total": 4059 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 4784, + "total": 4785 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 4058, + "total": 4059 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 14829178, + "username": "EffectChen", + "fullName": "Effect Chen (EffectChen)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14829178/medium/39ff70d1cbcdbad8e9056cb4aa4ee789.jpg", + "preTranslated": 0, + "totalCosts": 6782 + }, + "languages": [ + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 6782 + }, + "translated": { + "tmMatch": 24, + "default": 6758, + "total": 6782 + }, + "targetTranslated": { + "tmMatch": 46, + "default": 11909, + "total": 11955 + }, + "translatedByMt": { + "tmMatch": 12, + "default": 46, + "total": 58 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 24, + "default": 6758, + "total": 6782 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15363678, + "username": "Dawyer", + "fullName": "Ekta Singh (Dawyer)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15363678/medium/50e493deacc1ae7d512f2b38aab07d00.png", + "preTranslated": 0, + "totalCosts": 10620 + }, + "languages": [ + { + "language": { + "id": "hi", + "name": "Hindi", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 10620 + }, + "translated": { + "tmMatch": 86, + "default": 10534, + "total": 10620 + }, + "targetTranslated": { + "tmMatch": 169, + "default": 18957, + "total": 19126 + }, + "translatedByMt": { + "tmMatch": 25, + "default": 9, + "total": 34 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 86, + "default": 10534, + "total": 10620 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15553253, + "username": "EmelyGarcia", + "fullName": "Emely García (EmelyGarcia)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15553253/medium/2077ec790711bf21dd6cad91f776f003.png", + "preTranslated": 0, + "totalCosts": 6794 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 6794 + }, + "translated": { + "tmMatch": 348, + "default": 6446, + "total": 6794 + }, + "targetTranslated": { + "tmMatch": 364, + "default": 7028, + "total": 7392 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 348, + "default": 6446, + "total": 6794 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 14559932, + "username": "emanu.ti", + "fullName": "Emmanuel de Carvalho Garcia (emanu.ti)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14559932/medium/b031ab210c0b9edc01dcea8f4825f8ad.png", + "preTranslated": 0, + "totalCosts": 28 + }, + "languages": [ + { + "language": { + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 28 + }, + "translated": { + "tmMatch": 0, + "default": 28, + "total": 28 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 29, + "total": 29 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 28, + "total": 28 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 13429141, + "username": "Faedonn", + "fullName": "Emre kaan SATIŞ (Faedonn)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13429141/medium/47665044a49c8caae72a8e5d6c6c74fc.jpg", + "preTranslated": 0, + "totalCosts": 537 + }, + "languages": [ + { + "language": { + "id": "tr", + "name": "Turkish", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 537 + }, + "translated": { + "tmMatch": 0, + "default": 537, + "total": 537 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 466, + "total": 466 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 537, + "total": 537 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15956471, + "username": "nugen0x", + "fullName": "Engin Canpolat (nugen0x)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956471/medium/0af49a07f4f83e5a5180858a4760868e.jpeg", + "preTranslated": 0, + "totalCosts": 459 + }, + "languages": [ + { + "language": { + "id": "tr", + "name": "Turkish", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 459 + }, + "translated": { + "tmMatch": 1, + "default": 458, + "total": 459 + }, + "targetTranslated": { + "tmMatch": 2, + "default": 368, + "total": 370 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 458, + "total": 459 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15955863, + "username": "MrbaTab", + "fullName": "Enisa Savic Hjelmaas (MrbaTab)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955863/medium/87703122c7751f9b4b4673899861b163.png", + "preTranslated": 0, + "totalCosts": 14322 + }, + "languages": [ + { + "language": { + "id": "bs", + "name": "Bosnian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 14322 + }, + "translated": { + "tmMatch": 121, + "default": 14201, + "total": 14322 + }, + "targetTranslated": { + "tmMatch": 112, + "default": 13056, + "total": 13168 + }, + "translatedByMt": { + "tmMatch": 19, + "default": 2, + "total": 21 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 121, + "default": 14201, + "total": 14322 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15967125, + "username": "erfanej", + "fullName": "Erfan Emamjomeh (erfanej)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967125/medium/2223e574efc34243ef6e77236d77a6ba.png", + "preTranslated": 0, + "totalCosts": 7381 + }, + "languages": [ + { + "language": { + "id": "fa", + "name": "Persian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 7381 + }, + "translated": { + "tmMatch": 57, + "default": 7324, + "total": 7381 + }, + "targetTranslated": { + "tmMatch": 64, + "default": 8947, + "total": 9011 + }, + "translatedByMt": { + "tmMatch": 11, + "default": 0, + "total": 11 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 57, + "default": 7324, + "total": 7381 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15998651, + "username": "lampedusa5457", + "fullName": "Eric (lampedusa5457)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15998651/medium/76286dcfa422e913797471149070ab40.jpeg", + "preTranslated": 0, + "totalCosts": 265 + }, + "languages": [ + { + "language": { + "id": "fil", + "name": "Filipino", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 265 + }, + "translated": { + "tmMatch": 175, + "default": 90, + "total": 265 + }, + "targetTranslated": { + "tmMatch": 193, + "default": 108, + "total": 301 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 175, + "default": 90, + "total": 265 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15240064, + "username": "Aco_olbec2", + "fullName": "Erik Eriksen (Aco_olbec2)", + "userRole": "Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15240064/medium/d382aa4b49660d6e6dbb3c7e3250652b.jpeg", + "preTranslated": 0, + "totalCosts": 92 + }, + "languages": [ + { + "language": { + "id": "da", + "name": "Danish", + "userRole": "Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 92 + }, + "translated": { + "tmMatch": 5, + "default": 87, + "total": 92 + }, + "targetTranslated": { + "tmMatch": 4, + "default": 87, + "total": 91 + }, + "translatedByMt": { + "tmMatch": 2, + "default": 0, + "total": 2 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 151 + }, + "translationCosts": { + "tmMatch": 5, + "default": 87, + "total": 92 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 13897487, + "username": "ethdotorg", + "fullName": "Ethereum.org Team (ethdotorg)", + "userRole": "Owner", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13897487/medium/246e50d7e9ccde07088ed892b07a0efd.png", + "preTranslated": 206635, + "totalCosts": 1621 + }, + "languages": [ + { + "language": { + "id": "af", + "name": "Afrikaans", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 25, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "sq", + "name": "Albanian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 1325, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "am", + "name": "Amharic", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 10, + "totalCosts": 3 + }, + "translated": { + "tmMatch": 3, + "default": 0, + "total": 3 + }, + "targetTranslated": { + "tmMatch": 3, + "default": 0, + "total": 3 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 4 + }, + "translationCosts": { + "tmMatch": 3, + "default": 0, + "total": 3 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ar", + "name": "Arabic", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 13093, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "hy-AM", + "name": "Armenian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 678, + "totalCosts": 1 + }, + "translated": { + "tmMatch": 0, + "default": 1, + "total": 1 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 1, + "total": 1 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 1 + }, + "translationCosts": { + "tmMatch": 0, + "default": 1, + "total": 1 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "az", + "name": "Azerbaijani", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 346, + "totalCosts": 4 + }, + "translated": { + "tmMatch": 1, + "default": 3, + "total": 4 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 3, + "total": 4 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 4 + }, + "translationCosts": { + "tmMatch": 1, + "default": 3, + "total": 4 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "be", + "name": "Belarusian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 7, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 1 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "bn", + "name": "Bengali", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 1537, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "bs", + "name": "Bosnian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 1 + }, + "translated": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 1 + }, + "translationCosts": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "bg", + "name": "Bulgarian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 1638, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ca", + "name": "Catalan", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 2145, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 13775, + "totalCosts": 220 + }, + "translated": { + "tmMatch": 0, + "default": 220, + "total": 220 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 290, + "total": 290 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 564 + }, + "translationCosts": { + "tmMatch": 0, + "default": 220, + "total": 220 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 6460, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 77 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "hr", + "name": "Croatian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 1235, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "cs", + "name": "Czech", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 1052, + "totalCosts": 3 + }, + "translated": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 6 + }, + "translationCosts": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "da", + "name": "Danish", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 138, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "nl", + "name": "Dutch", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 3784, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "eo", + "name": "Esperanto", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 12, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "et", + "name": "Estonian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 38, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "fil", + "name": "Filipino", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 370, + "totalCosts": 11 + }, + "translated": { + "tmMatch": 0, + "default": 11, + "total": 11 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 14, + "total": 14 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 13 + }, + "translationCosts": { + "tmMatch": 0, + "default": 11, + "total": 11 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "fi", + "name": "Finnish", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 3610, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 3 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "fr", + "name": "French", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 13441, + "totalCosts": 31 + }, + "translated": { + "tmMatch": 0, + "default": 31, + "total": 31 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 33, + "total": 33 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 278 + }, + "translationCosts": { + "tmMatch": 0, + "default": 31, + "total": 31 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "gl", + "name": "Galician", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 19, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ka", + "name": "Georgian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 19, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "de", + "name": "German", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 11320, + "totalCosts": 53 + }, + "translated": { + "tmMatch": 1, + "default": 52, + "total": 53 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 51, + "total": 52 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 134 + }, + "translationCosts": { + "tmMatch": 1, + "default": 52, + "total": 53 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "el", + "name": "Greek", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 3382, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "gu-IN", + "name": "Gujarati", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 22, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ha", + "name": "Hausa", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 48, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "he", + "name": "Hebrew", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 38, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "hi", + "name": "Hindi", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 1380, + "totalCosts": 11 + }, + "translated": { + "tmMatch": 0, + "default": 11, + "total": 11 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 24, + "total": 24 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 53 + }, + "translationCosts": { + "tmMatch": 0, + "default": 11, + "total": 11 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "hu", + "name": "Hungarian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 4450, + "totalCosts": 11 + }, + "translated": { + "tmMatch": 0, + "default": 11, + "total": 11 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 16, + "total": 16 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 11 + }, + "translationCosts": { + "tmMatch": 0, + "default": 11, + "total": 11 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ig", + "name": "Igbo", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 23, + "totalCosts": 10 + }, + "translated": { + "tmMatch": 0, + "default": 10, + "total": 10 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 11, + "total": 11 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 13 + }, + "translationCosts": { + "tmMatch": 0, + "default": 10, + "total": 10 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "id", + "name": "Indonesian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 5307, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 31 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "it", + "name": "Italian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 13857, + "totalCosts": 154 + }, + "translated": { + "tmMatch": 11, + "default": 143, + "total": 154 + }, + "targetTranslated": { + "tmMatch": 14, + "default": 172, + "total": 186 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 509 + }, + "translationCosts": { + "tmMatch": 11, + "default": 143, + "total": 154 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ja", + "name": "Japanese", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 12455, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 132 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "kn", + "name": "Kannada", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 2, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "kk", + "name": "Kazakh", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 18, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "km", + "name": "Khmer", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 362, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ko", + "name": "Korean", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 4545, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ku", + "name": "Kurdish", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 25, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ky", + "name": "Kyrgyz", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 1, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "lt", + "name": "Lithuanian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 24, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ms", + "name": "Malay", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 547, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ml-IN", + "name": "Malayalam", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 1017, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "mr", + "name": "Marathi", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 23, + "totalCosts": 3 + }, + "translated": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 3 + }, + "translationCosts": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "pcm", + "name": "Nigerian Pidgin", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 165, + "totalCosts": 35 + }, + "translated": { + "tmMatch": 4, + "default": 31, + "total": 35 + }, + "targetTranslated": { + "tmMatch": 4, + "default": 36, + "total": 40 + }, + "translatedByMt": { + "tmMatch": 2, + "default": 0, + "total": 2 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 35 + }, + "translationCosts": { + "tmMatch": 4, + "default": 31, + "total": 35 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "no", + "name": "Norwegian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 32, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "fa", + "name": "Persian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 9219, + "totalCosts": 57 + }, + "translated": { + "tmMatch": 6, + "default": 51, + "total": 57 + }, + "targetTranslated": { + "tmMatch": 6, + "default": 64, + "total": 70 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 59 + }, + "translationCosts": { + "tmMatch": 6, + "default": 51, + "total": 57 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "pl", + "name": "Polish", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 5298, + "totalCosts": 28 + }, + "translated": { + "tmMatch": 0, + "default": 28, + "total": 28 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 26, + "total": 26 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 1256 + }, + "translationCosts": { + "tmMatch": 0, + "default": 28, + "total": 28 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "pt-PT", + "name": "Portuguese", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 722, + "totalCosts": 3 + }, + "translated": { + "tmMatch": 3, + "default": 0, + "total": 3 + }, + "targetTranslated": { + "tmMatch": 2, + "default": 0, + "total": 2 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 6 + }, + "translationCosts": { + "tmMatch": 3, + "default": 0, + "total": 3 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 13638, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 16 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ro", + "name": "Romanian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 4346, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ru", + "name": "Russian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 8597, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 71 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "sr-CS", + "name": "Serbian (Latin)", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 175, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "sk", + "name": "Slovak", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 30, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "sl", + "name": "Slovenian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 3395, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "so", + "name": "Somali", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 3, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 11254, + "totalCosts": 641 + }, + "translated": { + "tmMatch": 8, + "default": 633, + "total": 641 + }, + "targetTranslated": { + "tmMatch": 8, + "default": 697, + "total": 705 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 822 + }, + "translationCosts": { + "tmMatch": 8, + "default": 633, + "total": 641 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "sw", + "name": "Swahili", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 800, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "sv-SE", + "name": "Swedish", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 3724, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "tg", + "name": "Tajik", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 1, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ta", + "name": "Tamil", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 19, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "te", + "name": "Telugu", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 1, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "th", + "name": "Thai", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 375, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "tr", + "name": "Turkish", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 10910, + "totalCosts": 226 + }, + "translated": { + "tmMatch": 3, + "default": 223, + "total": 226 + }, + "targetTranslated": { + "tmMatch": 3, + "default": 202, + "total": 205 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 522 + }, + "translationCosts": { + "tmMatch": 3, + "default": 223, + "total": 226 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "tk", + "name": "Turkmen", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 3, + "totalCosts": 3 + }, + "translated": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 3 + }, + "translationCosts": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "uk", + "name": "Ukrainian", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 7667, + "totalCosts": 112 + }, + "translated": { + "tmMatch": 0, + "default": 112, + "total": 112 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 111, + "total": 111 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 123 + }, + "translationCosts": { + "tmMatch": 0, + "default": 112, + "total": 112 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ur-IN", + "name": "Urdu (India)", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 22, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ur-PK", + "name": "Urdu (Pakistan)", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 528, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "uz", + "name": "Uzbek", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 66, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "vi", + "name": "Vietnamese", + "userRole": "Owner", + "tmSavings": 0, + "preTranslate": 2042, + "totalCosts": 0 + }, + "translated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 25 + }, + "translationCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15949885, + "username": "ikpongetimfon", + "fullName": "Etimfon Bassey (ikpongetimfon)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949885/medium/2bd51be5552240f36b7fc65871d64446.png", + "preTranslated": 0, + "totalCosts": 8137 + }, + "languages": [ + { + "language": { + "id": "pcm", + "name": "Nigerian Pidgin", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 8137 + }, + "translated": { + "tmMatch": 5, + "default": 8132, + "total": 8137 + }, + "targetTranslated": { + "tmMatch": 5, + "default": 9085, + "total": 9090 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 5, + "default": 8132, + "total": 8137 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15900477, + "username": "fanajib5", + "fullName": "Faiq Najib (fanajib5)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15900477/medium/b8611571f91a141d337bebcac90729eb.png", + "preTranslated": 0, + "totalCosts": 467 + }, + "languages": [ + { + "language": { + "id": "id", + "name": "Indonesian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 467 + }, + "translated": { + "tmMatch": 0, + "default": 467, + "total": 467 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 454, + "total": 454 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 467, + "total": 467 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 16016215, + "username": "Falehfale", + "fullName": "Falehfale", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16016215/medium/8b826e643c204fc2e4e2e4f4279d8927.png", + "preTranslated": 0, + "totalCosts": 232 + }, + "languages": [ + { + "language": { + "id": "ar", + "name": "Arabic", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 232 + }, + "translated": { + "tmMatch": 4, + "default": 228, + "total": 232 + }, + "targetTranslated": { + "tmMatch": 2, + "default": 206, + "total": 208 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 4, + "default": 228, + "total": 232 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 16022458, + "username": "Falehfaleh", + "fullName": "Falehfaleh", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16022458/medium/73a24aa3d7ceefe45c5a9a346d3ab1fd.png", + "preTranslated": 0, + "totalCosts": 39 + }, + "languages": [ + { + "language": { + "id": "ar", + "name": "Arabic", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 39 + }, + "translated": { + "tmMatch": 0, + "default": 39, + "total": 39 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 13, + "total": 13 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 39, + "total": 39 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 16016629, + "username": "farhadhashimov", + "fullName": "Farhad Hashimov (farhadhashimov)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16016629/medium/aaff09e3b204facc4da78652554ec80b.png", + "preTranslated": 0, + "totalCosts": 17 + }, + "languages": [ + { + "language": { + "id": "az", + "name": "Azerbaijani", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 4 + }, + "translated": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 8, + "total": 8 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 4, + "total": 4 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 13 + }, + "translated": { + "tmMatch": 0, + "default": 13, + "total": 13 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 17, + "total": 17 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 13, + "total": 13 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 16004581, + "username": "FarshidFardiShekarab", + "fullName": "Farshid F.Shekarab (Farshid) (FarshidFardiShekarab)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004581/medium/c6ac10b3f91b7b584a9ae8d10ec69592.jpeg", + "preTranslated": 0, + "totalCosts": 3 + }, + "languages": [ + { + "language": { + "id": "fa", + "name": "Persian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 3 + }, + "translated": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 1, + "total": 1 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 3, + "total": 3 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15914025, + "username": "fer22am", + "fullName": "Fer Arévalo (fer22am)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914025/medium/b2c5e012bade4e011c918815c86c4968.png", + "preTranslated": 0, + "totalCosts": 16 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 16 + }, + "translated": { + "tmMatch": 0, + "default": 16, + "total": 16 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 22, + "total": 22 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 16, + "total": 16 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 16, + "total": 16 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15967747, + "username": "fernandostds9", + "fullName": "Fernando R (fernandostds9)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967747/medium/27d7cdc7e3b587a57d083ea033db9c9c.png", + "preTranslated": 0, + "totalCosts": 274 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 274 + }, + "translated": { + "tmMatch": 1, + "default": 273, + "total": 274 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 309, + "total": 310 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 273, + "total": 274 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15945939, + "username": "Flokyy", + "fullName": "Flokyyy (Flokyy)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15945939/medium/2d9aa0527001c6e9a7022a2ba3c7574e.png", + "preTranslated": 0, + "totalCosts": 25 + }, + "languages": [ + { + "language": { + "id": "de", + "name": "German", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 25 + }, + "translated": { + "tmMatch": 25, + "default": 0, + "total": 25 + }, + "targetTranslated": { + "tmMatch": 27, + "default": 0, + "total": 27 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 25, + "default": 0, + "total": 25 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15843833, + "username": "FoltinV", + "fullName": "FoltinV", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843833/medium/d9afa5c66a59b8166143dd4e1cca0630.jpeg", + "preTranslated": 0, + "totalCosts": 3103 + }, + "languages": [ + { + "language": { + "id": "cs", + "name": "Czech", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 3103 + }, + "translated": { + "tmMatch": 7, + "default": 3096, + "total": 3103 + }, + "targetTranslated": { + "tmMatch": 7, + "default": 2698, + "total": 2705 + }, + "translatedByMt": { + "tmMatch": 7, + "default": 7, + "total": 14 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 7, + "default": 3096, + "total": 3103 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15954241, + "username": "FoodChain1028", + "fullName": "FoodChain (FoodChain1028)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954241/medium/a436b3580fe56bf2b5ccab541ae29695.png", + "preTranslated": 0, + "totalCosts": 196 + }, + "languages": [ + { + "language": { + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 196 + }, + "translated": { + "tmMatch": 0, + "default": 196, + "total": 196 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 398, + "total": 398 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 196, + "total": 196 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15386722, + "username": "Fred-Porlock", + "fullName": "Fred-Porlock", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15386722/medium/d45a14868eeb521fcff121613eaeee3c.png", + "preTranslated": 0, + "totalCosts": 2419 + }, + "languages": [ + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 2419 + }, + "translated": { + "tmMatch": 11, + "default": 2408, + "total": 2419 + }, + "targetTranslated": { + "tmMatch": 15, + "default": 3679, + "total": 3694 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 6, + "total": 6 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 11, + "default": 2408, + "total": 2419 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15951033, + "username": "fredda10x", + "fullName": "Fredrik Bakken (fredda10x)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15951033/medium/1f91c85bac1a87fc14574d15d64e1c40.png", + "preTranslated": 0, + "totalCosts": 12 + }, + "languages": [ + { + "language": { + "id": "no", + "name": "Norwegian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 12 + }, + "translated": { + "tmMatch": 0, + "default": 12, + "total": 12 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 8, + "total": 8 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 12, + "total": 12 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15934037, + "username": "fuji.anggara10", + "fullName": "Fuji Ar (fuji.anggara10)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15934037/medium/e913f10d6d3550452e0b7c072e15aa40.jpeg", + "preTranslated": 0, + "totalCosts": 85758 + }, + "languages": [ + { + "language": { + "id": "id", + "name": "Indonesian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 44893 + }, + "translated": { + "tmMatch": 183, + "default": 44710, + "total": 44893 + }, + "targetTranslated": { + "tmMatch": 191, + "default": 41874, + "total": 42065 + }, + "translatedByMt": { + "tmMatch": 10, + "default": 0, + "total": 10 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 183, + "default": 44710, + "total": 44893 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ms", + "name": "Malay", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 40865 + }, + "translated": { + "tmMatch": 147, + "default": 40718, + "total": 40865 + }, + "targetTranslated": { + "tmMatch": 145, + "default": 37369, + "total": 37514 + }, + "translatedByMt": { + "tmMatch": 85, + "default": 6, + "total": 91 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 147, + "default": 40718, + "total": 40865 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15994893, + "username": "hackerv27", + "fullName": "Furong You (hackerv27)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15994893/medium/d9e058521f9617f7e935530fa5999895.jpeg", + "preTranslated": 0, + "totalCosts": 53 + }, + "languages": [ + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 53 + }, + "translated": { + "tmMatch": 0, + "default": 53, + "total": 53 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 99, + "total": 99 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 53, + "total": 53 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15905805, + "username": "ProblematicToucan", + "fullName": "Gamal Abdul Aziz (ProblematicToucan)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15905805/medium/222c623ee785cab16678d41a0b296541.jpeg", + "preTranslated": 0, + "totalCosts": 194 + }, + "languages": [ + { + "language": { + "id": "id", + "name": "Indonesian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 194 + }, + "translated": { + "tmMatch": 1, + "default": 193, + "total": 194 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 191, + "total": 192 + }, + "translatedByMt": { + "tmMatch": 1, + "default": 0, + "total": 1 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 193, + "total": 194 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 14568334, + "username": "mr_giorgos", + "fullName": "George Kitsoukakis (mr_giorgos)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg", + "preTranslated": 0, + "totalCosts": 32384 + }, + "languages": [ + { + "language": { + "id": "af", + "name": "Afrikaans", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 240 + }, + "translated": { + "tmMatch": 50, + "default": 190, + "total": 240 + }, + "targetTranslated": { + "tmMatch": 50, + "default": 190, + "total": 240 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 50, + "default": 190, + "total": 240 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "am", + "name": "Amharic", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 8 + }, + "translated": { + "tmMatch": 1, + "default": 7, + "total": 8 + }, + "targetTranslated": { + "tmMatch": 1, + "default": 7, + "total": 8 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 1, + "default": 7, + "total": 8 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ar", + "name": "Arabic", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 10 + }, + "translated": { + "tmMatch": 9, + "default": 1, + "total": 10 + }, + "targetTranslated": { + "tmMatch": 9, + "default": 1, + "total": 10 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 9, + "default": 1, + "total": 10 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "bi", + "name": "Bislama", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 102 + }, + "translated": { + "tmMatch": 12, + "default": 90, + "total": 102 + }, + "targetTranslated": { + "tmMatch": 12, + "default": 90, + "total": 102 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 12, + "default": 90, + "total": 102 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "bg", + "name": "Bulgarian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 5 + }, + "translated": { + "tmMatch": 5, + "default": 0, + "total": 5 + }, + "targetTranslated": { + "tmMatch": 5, + "default": 0, + "total": 5 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 5, + "default": 0, + "total": 5 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "el", + "name": "Greek", + "userRole": "Translator, Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 32014 + }, + "translated": { + "tmMatch": 1415, + "default": 30599, + "total": 32014 + }, + "targetTranslated": { + "tmMatch": 1556, + "default": 33354, + "total": 34910 + }, + "translatedByMt": { + "tmMatch": 12, + "default": 339, + "total": 351 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 44001 + }, + "translationCosts": { + "tmMatch": 1415, + "default": 30599, + "total": 32014 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "no", + "name": "Norwegian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 5 + }, + "translated": { + "tmMatch": 5, + "default": 0, + "total": 5 + }, + "targetTranslated": { + "tmMatch": 5, + "default": 0, + "total": 5 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 5, + "default": 0, + "total": 5 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15904933, + "username": "Zumrud.I", + "fullName": "Glav Bukh (Zumrud.I)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15904933/medium/ce660fe41e2369fe77bcb152090a99d5.png", + "preTranslated": 0, + "totalCosts": 1032 + }, + "languages": [ + { + "language": { + "id": "az", + "name": "Azerbaijani", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 979 + }, + "translated": { + "tmMatch": 10, + "default": 969, + "total": 979 + }, + "targetTranslated": { + "tmMatch": 9, + "default": 842, + "total": 851 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 10, + "default": 969, + "total": 979 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "ru", + "name": "Russian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 53 + }, + "translated": { + "tmMatch": 0, + "default": 53, + "total": 53 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 51, + "total": 51 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 53, + "total": 53 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15968127, + "username": "gonzagramaglia", + "fullName": "Gonza (gonzagramaglia)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968127/medium/0c91665492f81a2479639eba5271d7bc.png", + "preTranslated": 0, + "totalCosts": 7280 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 7280 + }, + "translated": { + "tmMatch": 39, + "default": 7241, + "total": 7280 + }, + "targetTranslated": { + "tmMatch": 38, + "default": 8816, + "total": 8854 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 39, + "default": 7241, + "total": 7280 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15866753, + "username": "gonzab27", + "fullName": "Gonzalo Zabala (gonzab27)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15866753/medium/1f6bb2900a3f89af7cf2dffb4ca6df4d.png", + "preTranslated": 0, + "totalCosts": 88 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 88 + }, + "translated": { + "tmMatch": 0, + "default": 88, + "total": 88 + }, + "targetTranslated": { + "tmMatch": 0, + "default": 104, + "total": 104 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 59, + "total": 59 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 88, + "total": 88 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15250968, + "username": "Aco_g_lonegro", + "fullName": "Gustavo Lonegro (Aco_g_lonegro)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15250968/medium/fe66daa0393af122ae758d1cf2b0738d_default.png", + "preTranslated": 0, + "totalCosts": 42903 + }, + "languages": [ + { + "language": { + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator, Proofreader", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 42903 + }, + "translated": { + "tmMatch": 3159, + "default": 39744, + "total": 42903 + }, + "targetTranslated": { + "tmMatch": 3692, + "default": 48171, + "total": 51863 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 59714 + }, + "translationCosts": { + "tmMatch": 3159, + "default": 39744, + "total": 42903 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15369062, + "username": "datiq9999", + "fullName": "Hacker Đạt (datiq9999)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15369062/medium/2f838f2a38f728234f3124c6515f7656.png", + "preTranslated": 0, + "totalCosts": 170 + }, + "languages": [ + { + "language": { + "id": "vi", + "name": "Vietnamese", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 170 + }, + "translated": { + "tmMatch": 3, + "default": 167, + "total": 170 + }, + "targetTranslated": { + "tmMatch": 3, + "default": 255, + "total": 258 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 3, + "default": 167, + "total": 170 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + } + ] + }, + { + "user": { + "id": 15957949, + "username": "mdhafizr", + "fullName": "Hafiz Ramlan (mdhafizr)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957949/medium/3e6921f8e5fefde8f1232609f93dabca.jpeg", + "preTranslated": 0, + "totalCosts": 54 + }, + "languages": [ + { + "language": { + "id": "ms", + "name": "Malay", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 54 + }, + "translated": { + "tmMatch": 10, + "default": 44, + "total": 54 + }, + "targetTranslated": { + "tmMatch": 9, + "default": 60, + "total": 69 + }, "translatedByMt": { "tmMatch": 0, "default": 0, @@ -15770,39 +23628,52 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 10, + "default": 44, + "total": 54 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15381970, + "username": "tzbkk", + "fullName": "Haolin Xue (tzbkk)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15381970/medium/b43b331e365346453668db293656f269.jpeg", + "preTranslated": 0, + "totalCosts": 3549 + }, + "languages": [ { "language": { - "id": "ky", - "name": "Kyrgyz", - "userRole": "Owner", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 65, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 3549 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 42, + "default": 3507, + "total": 3549 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 70, + "default": 5754, + "total": 5824 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 1, + "default": 80, + "total": 81 }, "approved": { "tmMatch": 0, @@ -15810,74 +23681,100 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 42, + "default": 3507, + "total": 3549 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15086733, + "username": "hedwika", + "fullName": "Hedwika (hedwika)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15086733/medium/e58bffb1edb2cd4a9e2bbe7046a0d1e8.jpeg", + "preTranslated": 0, + "totalCosts": 25031 + }, + "languages": [ { "language": { - "id": "lt", - "name": "Lithuanian", - "userRole": "Owner", + "id": "cs", + "name": "Czech", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 266, - "totalCosts": 32 + "preTranslate": 0, + "totalCosts": 25031 }, "translated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 528, + "default": 24503, + "total": 25031 }, "targetTranslated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 466, + "default": 22574, + "total": 23040 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 3, "default": 0, - "total": 0 + "total": 3 }, "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 528, + "default": 24503, + "total": 25031 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15993745, + "username": "hello.290462", + "fullName": "Hello Mobile (hello.290462)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993745/medium/5ef7f4587df1b2641029dc9f6b6326a3.png", + "preTranslated": 0, + "totalCosts": 22 + }, + "languages": [ { "language": { - "id": "mk", - "name": "Macedonian", - "userRole": "Owner", + "id": "th", + "name": "Thai", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 68, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 22 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 22, + "total": 22 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 22, + "total": 22 }, "translatedByMt": { "tmMatch": 0, @@ -15891,33 +23788,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 22, + "total": 22 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15533801, + "username": "Henrylee", + "fullName": "Henry Li (Henrylee)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15533801/medium/d456706918dd8e267e7501b65a864509.jpeg", + "preTranslated": 0, + "totalCosts": 37 + }, + "languages": [ { "language": { - "id": "ms", - "name": "Malay", - "userRole": "Owner", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 445, - "totalCosts": 32 + "preTranslate": 0, + "totalCosts": 37 }, "translated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 25, + "default": 12, + "total": 37 }, "targetTranslated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 54, + "default": 17, + "total": 71 }, "translatedByMt": { "tmMatch": 0, @@ -15927,77 +23837,103 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 25, + "default": 12, + "total": 37 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15208868, + "username": "HiroyukiNaito", + "fullName": "Hiroyuki Naito (HiroyukiNaito)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/4ed4a0a0659f1c63e52f395079aeb3c4.jpg", + "preTranslated": 0, + "totalCosts": 22181 + }, + "languages": [ { "language": { - "id": "ml-IN", - "name": "Malayalam", - "userRole": "Owner", + "id": "ja", + "name": "Japanese", + "userRole": "Translator, Proofreader", "tmSavings": 0, - "preTranslate": 2129, - "totalCosts": 32 + "preTranslate": 0, + "totalCosts": 22181 }, "translated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 200, + "default": 21981, + "total": 22181 }, "targetTranslated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 366, + "default": 63388, + "total": 63754 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 3, + "default": 37, + "total": 40 }, "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 15 }, "translationCosts": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 200, + "default": 21981, + "total": 22181 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 14951371, + "username": "Hosein396", + "fullName": "Hosein Tayebi (Hosein396)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14951371/medium/d392865918f0f39f120869b6d65d1feb_default.png", + "preTranslated": 0, + "totalCosts": 1020 + }, + "languages": [ { "language": { - "id": "mr", - "name": "Marathi", - "userRole": "Owner", + "id": "fa", + "name": "Persian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 178, - "totalCosts": 37 + "preTranslate": 0, + "totalCosts": 1020 }, "translated": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 1020, + "total": 1020 }, "targetTranslated": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 1263, + "total": 1263 }, "translatedByMt": { "tmMatch": 0, @@ -16007,37 +23943,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 37, - "total": 37 + "default": 1020, + "total": 1020 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15945861, + "username": "vonex0628", + "fullName": "Houfan Hsieh (vonex0628)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15945861/medium/e26711ccd7c5fa04b9283c470b7893fa.jpeg", + "preTranslated": 0, + "totalCosts": 20 + }, + "languages": [ { "language": { - "id": "mn", - "name": "Mongolian", - "userRole": "Owner", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 7, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 20 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 20, + "total": 20 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 56, + "total": 56 }, "translatedByMt": { "tmMatch": 0, @@ -16051,33 +24000,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 20, + "total": 20 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15965597, + "username": "Jo1ina72", + "fullName": "Hsin Yu Peng (Jo1ina72)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965597/medium/951c2ae19a095581deb53b0468802c4c.png", + "preTranslated": 0, + "totalCosts": 16 + }, + "languages": [ { "language": { - "id": "ne-NP", - "name": "Nepali", - "userRole": "Owner", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 24, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 16 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 16, + "total": 16 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 23, + "total": 23 }, "translatedByMt": { "tmMatch": 0, @@ -16091,33 +24053,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 16, + "total": 16 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 16011121, + "username": "hugodemenez", + "fullName": "Hugo Demenez (hugodemenez)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16011121/medium/8a5f621a2be269a1dcfb5a56e80cdb46.png", + "preTranslated": 0, + "totalCosts": 66 + }, + "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Owner", + "id": "fr", + "name": "French", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 320, - "totalCosts": 39 + "preTranslate": 0, + "totalCosts": 66 }, "translated": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 66, + "total": 66 }, "targetTranslated": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 72, + "total": 72 }, "translatedByMt": { "tmMatch": 0, @@ -16127,52 +24102,65 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 66, + "total": 66 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15084373, + "username": "tarcanhursit", + "fullName": "Hursit Tarcan (tarcanhursit)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg", + "preTranslated": 0, + "totalCosts": 7312 + }, + "languages": [ { "language": { - "id": "no", - "name": "Norwegian", - "userRole": "Owner", + "id": "nl", + "name": "Dutch", + "userRole": "Translator, Proofreader", "tmSavings": 0, - "preTranslate": 253, - "totalCosts": 27 + "preTranslate": 0, + "totalCosts": 7294 }, "translated": { - "tmMatch": 0, - "default": 27, - "total": 27 + "tmMatch": 46, + "default": 7248, + "total": 7294 }, "targetTranslated": { - "tmMatch": 0, - "default": 27, - "total": 27 + "tmMatch": 45, + "default": 7524, + "total": 7569 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 15, + "default": 120, + "total": 135 }, "approved": { "tmMatch": 0, "default": 0, - "total": 34 + "total": 115 }, "translationCosts": { - "tmMatch": 0, - "default": 27, - "total": 27 + "tmMatch": 46, + "default": 7248, + "total": 7294 }, "approvalCosts": { "tmMatch": 0, @@ -16182,22 +24170,22 @@ }, { "language": { - "id": "or", - "name": "Odia", - "userRole": "Owner", + "id": "fr", + "name": "French", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 8, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 2 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 2, + "total": 2 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 2, + "total": 2 }, "translatedByMt": { "tmMatch": 0, @@ -16211,8 +24199,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 2, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -16222,22 +24210,22 @@ }, { "language": { - "id": "fa", - "name": "Persian", - "userRole": "Owner", + "id": "tr", + "name": "Turkish", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 5577, - "totalCosts": 21 + "preTranslate": 0, + "totalCosts": 16 }, "translated": { - "tmMatch": 0, - "default": 21, - "total": 21 + "tmMatch": 2, + "default": 14, + "total": 16 }, "targetTranslated": { - "tmMatch": 0, - "default": 21, - "total": 21 + "tmMatch": 2, + "default": 14, + "total": 16 }, "translatedByMt": { "tmMatch": 0, @@ -16247,37 +24235,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 32 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 21, - "total": 21 + "tmMatch": 2, + "default": 14, + "total": 16 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15993695, + "username": "imsohuy", + "fullName": "Huy Nguyen (imsohuy)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15993695/medium/535448436d72e283ccfe8c100b189c41.jpeg", + "preTranslated": 0, + "totalCosts": 32 + }, + "languages": [ { "language": { - "id": "pl", - "name": "Polish", - "userRole": "Owner", + "id": "vi", + "name": "Vietnamese", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 4999, - "totalCosts": 20 + "preTranslate": 0, + "totalCosts": 32 }, "translated": { "tmMatch": 0, - "default": 20, - "total": 20 + "default": 32, + "total": 32 }, "targetTranslated": { "tmMatch": 0, - "default": 20, - "total": 20 + "default": 43, + "total": 43 }, "translatedByMt": { "tmMatch": 0, @@ -16287,37 +24288,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 32 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 20, - "total": 20 + "default": 32, + "total": 32 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15208522, + "username": "indrajitmurmu51", + "fullName": "Indrajit Murmu (indrajitmurmu51)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208522/medium/fa0a871004b1d181c4b85257e0686b55.png", + "preTranslated": 0, + "totalCosts": 3 + }, + "languages": [ { "language": { - "id": "pt-PT", - "name": "Portuguese", - "userRole": "Owner", + "id": "sat", + "name": "Santali", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 1226, - "totalCosts": 23 + "preTranslate": 0, + "totalCosts": 3 }, "translated": { "tmMatch": 0, - "default": 23, - "total": 23 + "default": 3, + "total": 3 }, "targetTranslated": { "tmMatch": 0, - "default": 23, - "total": 23 + "default": 7, + "total": 7 }, "translatedByMt": { "tmMatch": 0, @@ -16327,37 +24341,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 23, - "total": 23 + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15992039, + "username": "isgoingtozero", + "fullName": "IsGoing ToZero (isgoingtozero)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992039/medium/c2972e6f45c34e1982fa7a4e7627c85e.jpg", + "preTranslated": 0, + "totalCosts": 670 + }, + "languages": [ { "language": { "id": "pt-BR", "name": "Portuguese, Brazilian", - "userRole": "Owner", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 17595, - "totalCosts": 596 + "preTranslate": 0, + "totalCosts": 670 }, "translated": { - "tmMatch": 140, - "default": 456, - "total": 596 + "tmMatch": 67, + "default": 603, + "total": 670 }, "targetTranslated": { - "tmMatch": 145, - "default": 489, - "total": 634 + "tmMatch": 71, + "default": 630, + "total": 701 }, "translatedByMt": { "tmMatch": 0, @@ -16367,37 +24394,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 1332 + "total": 0 }, "translationCosts": { - "tmMatch": 140, - "default": 456, - "total": 596 + "tmMatch": 67, + "default": 603, + "total": 670 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15919231, + "username": "bulgacevisa919", + "fullName": "Isa Bulgacev (bulgacevisa919)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15919231/medium/1f09b206e6aaa682f6c8eb58ed8e5469.png", + "preTranslated": 0, + "totalCosts": 141 + }, + "languages": [ { "language": { - "id": "pa-IN", - "name": "Punjabi", - "userRole": "Owner", + "id": "ru", + "name": "Russian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 31, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 141 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 141, + "total": 141 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 70, + "total": 70 }, "translatedByMt": { "tmMatch": 0, @@ -16411,73 +24451,99 @@ }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 141, + "total": 141 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15918349, + "username": "iic", + "fullName": "Ivan C (iic)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15918349/medium/ea288e4efdecc75bbe528d0fc415314b_default.png", + "preTranslated": 0, + "totalCosts": 541 + }, + "languages": [ { "language": { - "id": "ro", - "name": "Romanian", - "userRole": "Owner", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 4908, - "totalCosts": 19 + "preTranslate": 0, + "totalCosts": 541 }, "translated": { - "tmMatch": 0, - "default": 19, - "total": 19 + "tmMatch": 15, + "default": 526, + "total": 541 }, "targetTranslated": { - "tmMatch": 0, - "default": 19, - "total": 19 + "tmMatch": 31, + "default": 955, + "total": 986 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 2, + "total": 2 }, "approved": { "tmMatch": 0, "default": 0, - "total": 32 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 19, - "total": 19 + "tmMatch": 15, + "default": 526, + "total": 541 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15992965, + "username": "jamall11337", + "fullName": "Jakub Halouzka (jamall11337)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15992965/medium/43eadefa0e425bc47e30c0445d64ef7b.jpeg", + "preTranslated": 0, + "totalCosts": 40 + }, + "languages": [ { "language": { - "id": "ru", - "name": "Russian", - "userRole": "Owner", + "id": "cs", + "name": "Czech", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 7763, - "totalCosts": 17 + "preTranslate": 0, + "totalCosts": 40 }, "translated": { "tmMatch": 0, - "default": 17, - "total": 17 + "default": 40, + "total": 40 }, "targetTranslated": { "tmMatch": 0, - "default": 17, - "total": 17 + "default": 47, + "total": 47 }, "translatedByMt": { "tmMatch": 0, @@ -16487,37 +24553,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 34 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 17, - "total": 17 + "default": 40, + "total": 40 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15917907, + "username": "Serein5", + "fullName": "Jiani Shen (Serein5)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15917907/medium/f06e750eace178a6fde1f936a0d717b8_default.png", + "preTranslated": 0, + "totalCosts": 2494 + }, + "languages": [ { "language": { - "id": "sr-CS", - "name": "Serbian (Latin)", - "userRole": "Owner", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 235, - "totalCosts": 29 + "preTranslate": 0, + "totalCosts": 2438 }, "translated": { "tmMatch": 0, - "default": 29, - "total": 29 + "default": 2438, + "total": 2438 }, "targetTranslated": { "tmMatch": 0, - "default": 29, - "total": 29 + "default": 4000, + "total": 4000 }, "translatedByMt": { "tmMatch": 0, @@ -16527,12 +24606,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 29, - "total": 29 + "default": 2438, + "total": 2438 }, "approvalCosts": { "tmMatch": 0, @@ -16542,22 +24621,22 @@ }, { "language": { - "id": "si-LK", - "name": "Sinhala", - "userRole": "Owner", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 44, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 56 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 56, + "total": 56 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 98, + "total": 98 }, "translatedByMt": { "tmMatch": 0, @@ -16571,73 +24650,99 @@ }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 56, + "total": 56 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15904577, + "username": "JinzhouWu", + "fullName": "Jinzhou Wu (JinzhouWu)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15904577/medium/4fccebc93bdec714e2c04041112058f8.png", + "preTranslated": 0, + "totalCosts": 884 + }, + "languages": [ { "language": { - "id": "sk", - "name": "Slovak", - "userRole": "Owner", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 252, - "totalCosts": 31 + "preTranslate": 0, + "totalCosts": 884 }, "translated": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 884, + "total": 884 }, "targetTranslated": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 1527, + "total": 1527 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 1, + "total": 1 }, "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 884, + "total": 884 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15763783, + "username": "1Arc", + "fullName": "Jman (1Arc)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763783/medium/e4da44dd445c10e4efb260be2defe551.png", + "preTranslated": 0, + "totalCosts": 470 + }, + "languages": [ { "language": { - "id": "sl", - "name": "Slovenian", - "userRole": "Owner", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 4556, - "totalCosts": 31 + "preTranslate": 0, + "totalCosts": 470 }, "translated": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 8, + "default": 462, + "total": 470 }, "targetTranslated": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 8, + "default": 520, + "total": 528 }, "translatedByMt": { "tmMatch": 0, @@ -16647,42 +24752,55 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 34 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 8, + "default": 462, + "total": 470 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15906769, + "username": "Jmocholi388y", + "fullName": "Jmocholi388y", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15906769/medium/690a91b03a87a09659057a1cc5ade450.png", + "preTranslated": 0, + "totalCosts": 21 + }, + "languages": [ { "language": { - "id": "so", - "name": "Somali", - "userRole": "Owner", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 112, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 21 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 21, + "total": 21 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 26, + "total": 26 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 21, + "total": 21 }, "approved": { "tmMatch": 0, @@ -16691,153 +24809,205 @@ }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 21, + "total": 21 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15822529, + "username": "joacirferrarezi", + "fullName": "Joacir Ferrarezi (joacirferrarezi)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15822529/medium/2cfb3489e56881807de1d3ce9406cfa3.jpeg", + "preTranslated": 0, + "totalCosts": 29 + }, + "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Owner", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 12662, - "totalCosts": 54 + "preTranslate": 0, + "totalCosts": 29 }, "translated": { "tmMatch": 0, - "default": 54, - "total": 54 + "default": 29, + "total": 29 }, "targetTranslated": { "tmMatch": 0, - "default": 57, - "total": 57 + "default": 7, + "total": 7 }, "translatedByMt": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 77 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 54, - "total": 54 + "default": 29, + "total": 29 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15421538, + "username": "johannt", + "fullName": "Johann Pongratz (johannt)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15421538/medium/7e1f5d90509951072c0de0d9684baa35.png", + "preTranslated": 0, + "totalCosts": 23160 + }, + "languages": [ { "language": { - "id": "sw", - "name": "Swahili", - "userRole": "Owner", + "id": "de", + "name": "German", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 1218, - "totalCosts": 32 + "preTranslate": 0, + "totalCosts": 23160 }, "translated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 28, + "default": 23132, + "total": 23160 }, "targetTranslated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 23, + "default": 23118, + "total": 23141 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 5, + "default": 4, + "total": 9 }, "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 28, + "default": 23132, + "total": 23160 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15123193, + "username": "Coram_Deo", + "fullName": "Jonas Neubert (Coram_Deo)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg", + "preTranslated": 0, + "totalCosts": 2727 + }, + "languages": [ { "language": { - "id": "sv-SE", - "name": "Swedish", - "userRole": "Owner", + "id": "de", + "name": "German", + "userRole": "Translator, Proofreader", "tmSavings": 0, - "preTranslate": 872, - "totalCosts": 25 + "preTranslate": 0, + "totalCosts": 2727 }, "translated": { - "tmMatch": 0, - "default": 25, - "total": 25 + "tmMatch": 41, + "default": 2686, + "total": 2727 }, "targetTranslated": { - "tmMatch": 0, - "default": 25, - "total": 25 + "tmMatch": 44, + "default": 2699, + "total": 2743 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 1, + "default": 4, + "total": 5 }, "approved": { "tmMatch": 0, "default": 0, - "total": 34 + "total": 631 }, "translationCosts": { - "tmMatch": 0, - "default": 25, - "total": 25 + "tmMatch": 41, + "default": 2686, + "total": 2727 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15955219, + "username": "salcedomontesjose", + "fullName": "Jose Salcedo (salcedomontesjose)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955219/medium/d86d838530a21aef6f08fd56cf17232a.png", + "preTranslated": 0, + "totalCosts": 290 + }, + "languages": [ { "language": { - "id": "tl", - "name": "Tagalog", - "userRole": "Owner", + "id": "ko", + "name": "Korean", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 1, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 290 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 290, + "total": 290 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 210, + "total": 210 }, "translatedByMt": { "tmMatch": 0, @@ -16851,33 +25021,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 290, + "total": 290 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15966713, + "username": "Blockchain_Visionary", + "fullName": "Joseph Ruben Gonzalez Alva (Blockchain_Visionary)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966713/medium/afcca99ffb2409b8720273392f8fecfa.png", + "preTranslated": 0, + "totalCosts": 452 + }, + "languages": [ { "language": { - "id": "tg", - "name": "Tajik", - "userRole": "Owner", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 6, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 452 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 452, + "total": 452 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 516, + "total": 516 }, "translatedByMt": { "tmMatch": 0, @@ -16891,33 +25074,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 452, + "total": 452 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15830291, + "username": "juanlozano01534", + "fullName": "Juan Lozano (juanlozano01534)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15830291/medium/2163d30ac425b25292277c1e7b77f930.png", + "preTranslated": 0, + "totalCosts": 1406 + }, + "languages": [ { "language": { - "id": "ta", - "name": "Tamil", - "userRole": "Owner", + "id": "af", + "name": "Afrikaans", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 186, - "totalCosts": 39 + "preTranslate": 0, + "totalCosts": 1343 }, "translated": { - "tmMatch": 0, - "default": 39, - "total": 39 + "tmMatch": 2, + "default": 1341, + "total": 1343 }, "targetTranslated": { - "tmMatch": 0, - "default": 39, - "total": 39 + "tmMatch": 1, + "default": 154, + "total": 155 }, "translatedByMt": { "tmMatch": 0, @@ -16927,12 +25123,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 39, - "total": 39 + "tmMatch": 2, + "default": 1341, + "total": 1343 }, "approvalCosts": { "tmMatch": 0, @@ -16942,22 +25138,22 @@ }, { "language": { - "id": "te", - "name": "Telugu", - "userRole": "Owner", + "id": "it", + "name": "Italian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 1, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 49 }, "translated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 1, + "default": 48, + "total": 49 }, "targetTranslated": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 1, + "default": 3, + "total": 4 }, "translatedByMt": { "tmMatch": 0, @@ -16970,9 +25166,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 1, + "default": 48, + "total": 49 }, "approvalCosts": { "tmMatch": 0, @@ -16982,22 +25178,22 @@ }, { "language": { - "id": "th", - "name": "Thai", - "userRole": "Owner", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 242, - "totalCosts": 30 + "preTranslate": 0, + "totalCosts": 14 }, "translated": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 14, + "total": 14 }, "targetTranslated": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 15, + "total": 15 }, "translatedByMt": { "tmMatch": 0, @@ -17007,37 +25203,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 39 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 14, + "total": 14 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 14834276, + "username": "ElTitoDG", + "fullName": "Julián Hinojosa Gil (ElTitoDG)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14834276/medium/403ec82c5eab442ae648bc5290a0e6b9.png", + "preTranslated": 0, + "totalCosts": 37 + }, + "languages": [ { "language": { - "id": "tr", - "name": "Turkish", - "userRole": "Owner", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 11666, - "totalCosts": 17 + "preTranslate": 0, + "totalCosts": 37 }, "translated": { "tmMatch": 0, - "default": 17, - "total": 17 + "default": 37, + "total": 37 }, "targetTranslated": { "tmMatch": 0, - "default": 18, - "total": 18 + "default": 42, + "total": 42 }, "translatedByMt": { "tmMatch": 0, @@ -17047,37 +25256,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 28 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 17, - "total": 17 + "default": 37, + "total": 37 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 16024032, + "username": "doughnut-hole", + "fullName": "KAZUHO Ishida (doughnut-hole)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16024032/medium/46c720939c58ca51610382068096fb3c.png", + "preTranslated": 0, + "totalCosts": 34 + }, + "languages": [ { "language": { - "id": "tk", - "name": "Turkmen", - "userRole": "Owner", + "id": "ja", + "name": "Japanese", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 67, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 34 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 34, + "total": 34 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 106, + "total": 106 }, "translatedByMt": { "tmMatch": 0, @@ -17091,73 +25313,99 @@ }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 34, + "total": 34 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15916489, + "username": "KMAMK", + "fullName": "KM K (KMAMK)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15916489/medium/92de21d45d2ef678fa2f0775e2c0365d.png", + "preTranslated": 0, + "totalCosts": 2205 + }, + "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Owner", + "id": "ar", + "name": "Arabic", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 6344, - "totalCosts": 20 + "preTranslate": 0, + "totalCosts": 2205 }, "translated": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 12, + "default": 2193, + "total": 2205 }, "targetTranslated": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 14, + "default": 2036, + "total": 2050 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 10, + "default": 1644, + "total": 1654 }, "approved": { "tmMatch": 0, "default": 0, - "total": 33 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 12, + "default": 2193, + "total": 2205 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15949419, + "username": "Kajko25", + "fullName": "Kajko25", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949419/medium/470f96f3b8af8cefb847f616973ce61d.png", + "preTranslated": 0, + "totalCosts": 709 + }, + "languages": [ { "language": { - "id": "ur-IN", - "name": "Urdu (India)", - "userRole": "Owner", + "id": "pl", + "name": "Polish", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 174, - "totalCosts": 24 + "preTranslate": 0, + "totalCosts": 709 }, "translated": { - "tmMatch": 0, - "default": 24, - "total": 24 + "tmMatch": 1, + "default": 708, + "total": 709 }, "targetTranslated": { - "tmMatch": 0, - "default": 24, - "total": 24 + "tmMatch": 1, + "default": 642, + "total": 643 }, "translatedByMt": { "tmMatch": 0, @@ -17167,52 +25415,65 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 24 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 24, - "total": 24 + "tmMatch": 1, + "default": 708, + "total": 709 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15956433, + "username": "0xkal", + "fullName": "Kaleab (0xkal)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956433/medium/b911054c60a1c43f6c2c3526df9f632c_default.png", + "preTranslated": 0, + "totalCosts": 21883 + }, + "languages": [ { "language": { - "id": "ur-PK", - "name": "Urdu (Pakistan)", - "userRole": "Owner", + "id": "am", + "name": "Amharic", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 114, - "totalCosts": 2 + "preTranslate": 0, + "totalCosts": 21880 }, "translated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 123, + "default": 21757, + "total": 21880 }, "targetTranslated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 123, + "default": 18211, + "total": 18334 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 11, "default": 0, - "total": 0 + "total": 11 }, "approved": { "tmMatch": 0, "default": 0, - "total": 11 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 123, + "default": 21757, + "total": 21880 }, "approvalCosts": { "tmMatch": 0, @@ -17222,22 +25483,22 @@ }, { "language": { - "id": "uz", - "name": "Uzbek", - "userRole": "Owner", + "id": "ti", + "name": "Tigrinya", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 223, - "totalCosts": 29 + "preTranslate": 0, + "totalCosts": 3 }, "translated": { "tmMatch": 0, - "default": 29, - "total": 29 + "default": 3, + "total": 3 }, "targetTranslated": { "tmMatch": 0, - "default": 29, - "total": 29 + "default": 5, + "total": 5 }, "translatedByMt": { "tmMatch": 0, @@ -17247,37 +25508,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 35 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 29, - "total": 29 + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15912919, + "username": "KARINE.DAROS", + "fullName": "Karine Daros Silveira (KARINE.DAROS)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912919/medium/cfb356818ffad4c59d4aea11c3c64c28.png", + "preTranslated": 0, + "totalCosts": 722 + }, + "languages": [ { "language": { - "id": "vi", - "name": "Vietnamese", - "userRole": "Owner", + "id": "pt-PT", + "name": "Portuguese", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 1512, - "totalCosts": 49 + "preTranslate": 0, + "totalCosts": 722 }, "translated": { - "tmMatch": 0, - "default": 49, - "total": 49 + "tmMatch": 31, + "default": 691, + "total": 722 }, "targetTranslated": { - "tmMatch": 0, - "default": 56, - "total": 56 + "tmMatch": 39, + "default": 748, + "total": 787 }, "translatedByMt": { "tmMatch": 0, @@ -17287,37 +25561,50 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 36 + "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 49, - "total": 49 + "tmMatch": 31, + "default": 691, + "total": 722 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 14090051, + "username": "ckykenken", + "fullName": "Ken Chan (ckykenken)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14090051/medium/7f731194f98d3e1d19de2ef09f179542_default.png", + "preTranslated": 0, + "totalCosts": 47 + }, + "languages": [ { "language": { - "id": "yo", - "name": "Yoruba", - "userRole": "Owner", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", "tmSavings": 0, - "preTranslate": 44, - "totalCosts": 0 + "preTranslate": 0, + "totalCosts": 47 }, "translated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 47, + "total": 47 }, "targetTranslated": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 84, + "total": 84 }, "translatedByMt": { "tmMatch": 0, @@ -17331,8 +25618,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 47, + "total": 47 }, "approvalCosts": { "tmMatch": 0, @@ -17344,38 +25631,38 @@ }, { "user": { - "id": 25420, - "username": "Ryo567", - "fullName": "Eugenio \"Ryo567\" Martínez Seguín (Ryo567)", + "id": 14661950, + "username": "kenforever", + "fullName": "Ken Leong (kenforever)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/25420/medium/c407ca20cecfad35ba1bc9ef42232137.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14661950/medium/d12c67f954a833d343013ee215f59335.jpg", "preTranslated": 0, - "totalCosts": 22 + "totalCosts": 2412 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 22 + "totalCosts": 2412 }, "translated": { - "tmMatch": 0, - "default": 22, - "total": 22 + "tmMatch": 64, + "default": 2348, + "total": 2412 }, "targetTranslated": { - "tmMatch": 0, - "default": 21, - "total": 21 + "tmMatch": 114, + "default": 4101, + "total": 4215 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 1, "default": 0, - "total": 0 + "total": 1 }, "approved": { "tmMatch": 0, @@ -17383,9 +25670,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 22, - "total": 22 + "tmMatch": 64, + "default": 2348, + "total": 2412 }, "approvalCosts": { "tmMatch": 0, @@ -17397,38 +25684,38 @@ }, { "user": { - "id": 15857153, - "username": "eugedelaoliva93", - "fullName": "Eugenio De la Oliva Ramos (eugedelaoliva93)", + "id": 15565893, + "username": "khalilhammod19", + "fullName": "Khalil Hammod (khalilhammod19)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15857153/medium/f7cd69b42365e152a5b853421ed0b61d.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15565893/medium/d917912c05b0d8b8eb75649989e9df6b.png", "preTranslated": 0, - "totalCosts": 128 + "totalCosts": 734 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 128 + "totalCosts": 734 }, "translated": { "tmMatch": 0, - "default": 128, - "total": 128 + "default": 734, + "total": 734 }, "targetTranslated": { "tmMatch": 0, - "default": 134, - "total": 134 + "default": 697, + "total": 697 }, "translatedByMt": { "tmMatch": 0, - "default": 54, - "total": 54 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -17437,8 +25724,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 128, - "total": 128 + "default": 734, + "total": 734 }, "approvalCosts": { "tmMatch": 0, @@ -17450,38 +25737,38 @@ }, { "user": { - "id": 15766337, - "username": "asgarovf", - "fullName": "Farhad Asgarov (asgarovf)", + "id": 12514018, + "username": "krishaamer", + "fullName": "Kris Haamer (krishaamer)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15766337/medium/2da495495b14fca91016f19459824477.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12514018/medium/d566d728def7b85603cc04c56dc90147.jpg", "preTranslated": 0, - "totalCosts": 49 + "totalCosts": 39 }, "languages": [ { "language": { - "id": "az", - "name": "Azerbaijani", + "id": "et", + "name": "Estonian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 49 + "totalCosts": 39 }, "translated": { - "tmMatch": 0, - "default": 49, - "total": 49 + "tmMatch": 19, + "default": 20, + "total": 39 }, "targetTranslated": { - "tmMatch": 0, - "default": 40, - "total": 40 + "tmMatch": 16, + "default": 19, + "total": 35 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 18, "default": 0, - "total": 0 + "total": 18 }, "approved": { "tmMatch": 0, @@ -17489,9 +25776,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 49, - "total": 49 + "tmMatch": 19, + "default": 20, + "total": 39 }, "approvalCosts": { "tmMatch": 0, @@ -17503,38 +25790,38 @@ }, { "user": { - "id": 15806391, - "username": "AsaBogyo", - "fullName": "Ferenc Szép (AsaBogyo)", + "id": 13471138, + "username": "KyungwonPark", + "fullName": "Kyungwon Park (KyungwonPark)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15806391/medium/96ddb4f913a745a5413d5e31c990dc81_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13471138/medium/3e72b4fdf306e3afb0bc101953bc0def_default.png", "preTranslated": 0, - "totalCosts": 31 + "totalCosts": 6958 }, "languages": [ { "language": { - "id": "hu", - "name": "Hungarian", + "id": "ko", + "name": "Korean", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 31 + "totalCosts": 6958 }, "translated": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 15, + "default": 6943, + "total": 6958 }, "targetTranslated": { - "tmMatch": 0, - "default": 33, - "total": 33 + "tmMatch": 13, + "default": 5221, + "total": 5234 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -17542,9 +25829,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 15, + "default": 6943, + "total": 6958 }, "approvalCosts": { "tmMatch": 0, @@ -17556,38 +25843,38 @@ }, { "user": { - "id": 15843833, - "username": "FoltinV", - "fullName": "FoltinV", + "id": 14142021, + "username": "Lahcen-KH", + "fullName": "Lahcen-KH", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843833/medium/d9afa5c66a59b8166143dd4e1cca0630.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14142021/medium/a975e15d82f2b4000869328428713087.png", "preTranslated": 0, - "totalCosts": 7265 + "totalCosts": 101 }, "languages": [ { "language": { - "id": "cs", - "name": "Czech", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7265 + "totalCosts": 101 }, "translated": { - "tmMatch": 49, - "default": 7216, - "total": 7265 + "tmMatch": 1, + "default": 100, + "total": 101 }, "targetTranslated": { - "tmMatch": 43, - "default": 6549, - "total": 6592 + "tmMatch": 1, + "default": 82, + "total": 83 }, "translatedByMt": { - "tmMatch": 10, - "default": 711, - "total": 721 + "tmMatch": 1, + "default": 61, + "total": 62 }, "approved": { "tmMatch": 0, @@ -17595,9 +25882,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 49, - "default": 7216, - "total": 7265 + "tmMatch": 1, + "default": 100, + "total": 101 }, "approvalCosts": { "tmMatch": 0, @@ -17609,33 +25896,33 @@ }, { "user": { - "id": 15373000, - "username": "Fradique", - "fullName": "Fradique González Villalobos (Fradique)", + "id": 12636762, + "username": "lailabaez", + "fullName": "Laila Báez (lailabaez)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15373000/medium/c69edcb05bc9178ba24cd99f3373ea9b.JPG", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12636762/medium/18eb7a2cca24e665e61083171cac0ff6.jpg", "preTranslated": 0, - "totalCosts": 127 + "totalCosts": 215 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 127 + "totalCosts": 215 }, "translated": { "tmMatch": 0, - "default": 127, - "total": 127 + "default": 215, + "total": 215 }, "targetTranslated": { "tmMatch": 0, - "default": 202, - "total": 202 + "default": 227, + "total": 227 }, "translatedByMt": { "tmMatch": 0, @@ -17649,8 +25936,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 127, - "total": 127 + "default": 215, + "total": 215 }, "approvalCosts": { "tmMatch": 0, @@ -17662,38 +25949,38 @@ }, { "user": { - "id": 15798077, - "username": "putterfjg", - "fullName": "Francois Johannes Gerhardus Putter (putterfjg)", + "id": 15959673, + "username": "lilyfish", + "fullName": "Lala Lin (lilyfish)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15798077/medium/02cd3c58fa5691a34f62c3a686afbc78_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15959673/medium/dedb96522598be262af59ee458a8b885.png", "preTranslated": 0, - "totalCosts": 290 + "totalCosts": 637 }, "languages": [ { "language": { - "id": "af", - "name": "Afrikaans", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 290 + "totalCosts": 637 }, "translated": { - "tmMatch": 7, - "default": 283, - "total": 290 + "tmMatch": 0, + "default": 637, + "total": 637 }, "targetTranslated": { - "tmMatch": 7, - "default": 270, - "total": 277 + "tmMatch": 0, + "default": 1104, + "total": 1104 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "approved": { "tmMatch": 0, @@ -17701,9 +25988,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 283, - "total": 290 + "tmMatch": 0, + "default": 637, + "total": 637 }, "approvalCosts": { "tmMatch": 0, @@ -17715,33 +26002,33 @@ }, { "user": { - "id": 15837087, - "username": "gabekoin", - "fullName": "Gabriel (gabekoin)", + "id": 16012093, + "username": "Laumvz", + "fullName": "Laura Vazquez (Laumvz)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837087/medium/198e2d3ce88fd597d2f6a39fcc40964a.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16012093/medium/f6916fbc165d8d25a21c7c5cb794358c_default.png", "preTranslated": 0, - "totalCosts": 52 + "totalCosts": 46 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 52 + "totalCosts": 46 }, "translated": { "tmMatch": 0, - "default": 52, - "total": 52 + "default": 46, + "total": 46 }, "targetTranslated": { "tmMatch": 0, - "default": 61, - "total": 61 + "default": 56, + "total": 56 }, "translatedByMt": { "tmMatch": 0, @@ -17755,8 +26042,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 52, - "total": 52 + "default": 46, + "total": 46 }, "approvalCosts": { "tmMatch": 0, @@ -17768,48 +26055,48 @@ }, { "user": { - "id": 14568334, - "username": "norhorn", - "fullName": "George Kitsoukakis (norhorn)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14568334/medium/245b5c69aab62ffabb575daf603b70b8.jpg", + "id": 15922115, + "username": "castronoda", + "fullName": "Liana Castro (castronoda)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15922115/medium/72fe292d22d5c0567b20af6d35919c7f.jpeg", "preTranslated": 0, - "totalCosts": 11555 + "totalCosts": 271 }, "languages": [ { "language": { - "id": "el", - "name": "Greek", - "userRole": "Translator, Proofreader", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11555 + "totalCosts": 271 }, "translated": { - "tmMatch": 1699, - "default": 9856, - "total": 11555 + "tmMatch": 0, + "default": 271, + "total": 271 }, "targetTranslated": { - "tmMatch": 1893, - "default": 10424, - "total": 12317 + "tmMatch": 0, + "default": 333, + "total": 333 }, "translatedByMt": { - "tmMatch": 75, - "default": 856, - "total": 931 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 14452 + "total": 0 }, "translationCosts": { - "tmMatch": 1699, - "default": 9856, - "total": 11555 + "tmMatch": 0, + "default": 271, + "total": 271 }, "approvalCosts": { "tmMatch": 0, @@ -17821,33 +26108,33 @@ }, { "user": { - "id": 15813825, - "username": "Katsumis", - "fullName": "Ghost Opti (Katsumis)", + "id": 15901569, + "username": "ezraike", + "fullName": "Life Defied (ezraike)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15813825/medium/0e9b0f678b60df78eda87d1afd31e808.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15901569/medium/6f25011ba2194f82c502e04e4da44f22.png", "preTranslated": 0, - "totalCosts": 75 + "totalCosts": 261 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 75 + "totalCosts": 261 }, "translated": { - "tmMatch": 1, - "default": 74, - "total": 75 + "tmMatch": 0, + "default": 261, + "total": 261 }, "targetTranslated": { - "tmMatch": 1, - "default": 87, - "total": 88 + "tmMatch": 0, + "default": 238, + "total": 238 }, "translatedByMt": { "tmMatch": 0, @@ -17860,9 +26147,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 74, - "total": 75 + "tmMatch": 0, + "default": 261, + "total": 261 }, "approvalCosts": { "tmMatch": 0, @@ -17874,38 +26161,38 @@ }, { "user": { - "id": 14560192, - "username": "Mistra", - "fullName": "Giulio M. (Mistra)", + "id": 15978873, + "username": "lethingoclien310", + "fullName": "Liên Lê (lethingoclien310)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14560192/medium/4ec7e927ebc53f584831f621c9cdf99b.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15978873/medium/b76937fe2df12b869f741a9283131e8e.png", "preTranslated": 0, - "totalCosts": 52 + "totalCosts": 5 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 52 + "totalCosts": 5 }, "translated": { "tmMatch": 0, - "default": 52, - "total": 52 + "default": 5, + "total": 5 }, "targetTranslated": { "tmMatch": 0, - "default": 58, - "total": 58 + "default": 5, + "total": 5 }, "translatedByMt": { "tmMatch": 0, - "default": 11, - "total": 11 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -17914,8 +26201,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 52, - "total": 52 + "default": 5, + "total": 5 }, "approvalCosts": { "tmMatch": 0, @@ -17927,33 +26214,33 @@ }, { "user": { - "id": 15866753, - "username": "gonzab27", - "fullName": "Gonzalo Zabala (gonzab27)", + "id": 15936809, + "username": "Lukas19990816", + "fullName": "Lucas WU (Lukas19990816)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15866753/medium/1f6bb2900a3f89af7cf2dffb4ca6df4d.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15936809/medium/c187ea9a74e1d7504fabe6d03926f207.jpeg", "preTranslated": 0, - "totalCosts": 70 + "totalCosts": 146 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 70 + "totalCosts": 146 }, "translated": { - "tmMatch": 0, - "default": 70, - "total": 70 + "tmMatch": 3, + "default": 143, + "total": 146 }, "targetTranslated": { - "tmMatch": 0, - "default": 79, - "total": 79 + "tmMatch": 6, + "default": 229, + "total": 235 }, "translatedByMt": { "tmMatch": 0, @@ -17966,9 +26253,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 70, - "total": 70 + "tmMatch": 3, + "default": 143, + "total": 146 }, "approvalCosts": { "tmMatch": 0, @@ -17980,38 +26267,38 @@ }, { "user": { - "id": 15058949, - "username": "gracieluu_ar", - "fullName": "Graciela Arriola (gracieluu_ar)", + "id": 15967341, + "username": "lukakovacica", + "fullName": "Luka Kovačič (lukakovacica)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15058949/medium/cfdcff414c4bc3a532eb8c79280be317.JPG", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967341/medium/1f73cbf1251ef7926042a12fcf6e6827.png", "preTranslated": 0, - "totalCosts": 33 + "totalCosts": 8018 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "sl", + "name": "Slovenian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 33 + "totalCosts": 8018 }, "translated": { - "tmMatch": 33, - "default": 0, - "total": 33 + "tmMatch": 132, + "default": 7886, + "total": 8018 }, "targetTranslated": { - "tmMatch": 45, - "default": 0, - "total": 45 + "tmMatch": 123, + "default": 7397, + "total": 7520 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 6, "default": 0, - "total": 0 + "total": 6 }, "approved": { "tmMatch": 0, @@ -18019,9 +26306,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 33, - "default": 0, - "total": 33 + "tmMatch": 132, + "default": 7886, + "total": 8018 }, "approvalCosts": { "tmMatch": 0, @@ -18033,38 +26320,38 @@ }, { "user": { - "id": 14363304, - "username": "sgj.kerkhoff.03", - "fullName": "Grand Dog Studio (sgj.kerkhoff.03)", + "id": 13544774, + "username": "LukaK", + "fullName": "Luka Kropec (LukaK)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14363304/medium/e79a813fd99f62712dcba7b77c2b1e1f.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13544774/medium/8ab65000e2909e49ea0eb0e7a470c25c_default.png", "preTranslated": 0, - "totalCosts": 119 + "totalCosts": 43 }, "languages": [ { "language": { - "id": "nl", - "name": "Dutch", + "id": "sl", + "name": "Slovenian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 119 + "totalCosts": 43 }, "translated": { - "tmMatch": 11, - "default": 108, - "total": 119 + "tmMatch": 0, + "default": 43, + "total": 43 }, "targetTranslated": { - "tmMatch": 12, - "default": 114, - "total": 126 + "tmMatch": 0, + "default": 18, + "total": 18 }, "translatedByMt": { - "tmMatch": 10, - "default": 108, - "total": 118 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -18072,9 +26359,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 11, - "default": 108, - "total": 119 + "tmMatch": 0, + "default": 43, + "total": 43 }, "approvalCosts": { "tmMatch": 0, @@ -18086,48 +26373,48 @@ }, { "user": { - "id": 15219098, - "username": "Aco_GRW", - "fullName": "Grischa Raoul Wenzeler (Aco_GRW)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15219098/medium/67ba870ab68dd3e2838d3af325783379.jpg", + "id": 14208470, + "username": "leduylam1998", + "fullName": "Lâm Lee (leduylam1998)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14208470/medium/25bf5b5e8d8763d5316a7e494eec001e.png", "preTranslated": 0, - "totalCosts": 3912 + "totalCosts": 28 }, "languages": [ { "language": { - "id": "de", - "name": "German", - "userRole": "Translator, Proofreader", + "id": "vi", + "name": "Vietnamese", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3912 + "totalCosts": 28 }, "translated": { - "tmMatch": 276, - "default": 3636, - "total": 3912 + "tmMatch": 0, + "default": 28, + "total": 28 }, "targetTranslated": { - "tmMatch": 259, - "default": 3546, - "total": 3805 + "tmMatch": 0, + "default": 36, + "total": 36 }, "translatedByMt": { - "tmMatch": 14, - "default": 87, - "total": 101 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 10212 + "total": 0 }, "translationCosts": { - "tmMatch": 276, - "default": 3636, - "total": 3912 + "tmMatch": 0, + "default": 28, + "total": 28 }, "approvalCosts": { "tmMatch": 0, @@ -18139,33 +26426,33 @@ }, { "user": { - "id": 15250968, - "username": "Aco_g_lonegro", - "fullName": "Gustavo Lonegro (Aco_g_lonegro)", - "userRole": "Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15250968/medium/fe66daa0393af122ae758d1cf2b0738d_default.png", + "id": 15915913, + "username": "lqhuy.dhti15a8hn", + "fullName": "Lê Quốc Huy (lqhuy.dhti15a8hn)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15915913/medium/1aab53fd577f61087eeb9524fafa1aa1.jpeg", "preTranslated": 0, - "totalCosts": 6042 + "totalCosts": 67 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Proofreader", + "id": "vi", + "name": "Vietnamese", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 6042 + "totalCosts": 67 }, "translated": { - "tmMatch": 1284, - "default": 4758, - "total": 6042 + "tmMatch": 0, + "default": 67, + "total": 67 }, "targetTranslated": { - "tmMatch": 1544, - "default": 5758, - "total": 7302 + "tmMatch": 0, + "default": 104, + "total": 104 }, "translatedByMt": { "tmMatch": 0, @@ -18175,12 +26462,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 7397 + "total": 0 }, "translationCosts": { - "tmMatch": 1284, - "default": 4758, - "total": 6042 + "tmMatch": 0, + "default": 67, + "total": 67 }, "approvalCosts": { "tmMatch": 0, @@ -18192,33 +26479,33 @@ }, { "user": { - "id": 15776715, - "username": "guenterfischer", - "fullName": "Günter Fischer (guenterfischer)", + "id": 16020648, + "username": "zbr790", + "fullName": "M ZUBAIR RASHEED (zbr790)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15776715/medium/1c8c512e90c8be5568f2f149b36ad5a6.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16020648/medium/a0b364ba59a2beef95b163c9f1192916.jpeg", "preTranslated": 0, - "totalCosts": 168 + "totalCosts": 2 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "sr-CS", + "name": "Serbian (Latin)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 168 + "totalCosts": 2 }, "translated": { "tmMatch": 0, - "default": 168, - "total": 168 + "default": 2, + "total": 2 }, "targetTranslated": { "tmMatch": 0, - "default": 150, - "total": 150 + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -18232,8 +26519,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 168, - "total": 168 + "default": 2, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -18245,38 +26532,38 @@ }, { "user": { - "id": 15840739, - "username": "harsharan", - "fullName": "H S (harsharan)", + "id": 15194310, + "username": "MGETH", + "fullName": "MGETH", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15840739/medium/32f5c1020c1dbf27f40c76d4ac502fb7.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/7729d9dbda8c9420c26f689b4a2b2918.jpg", "preTranslated": 0, - "totalCosts": 842 + "totalCosts": 81957 }, "languages": [ { "language": { - "id": "pa-IN", - "name": "Punjabi", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 842 + "totalCosts": 81957 }, "translated": { - "tmMatch": 17, - "default": 825, - "total": 842 + "tmMatch": 173, + "default": 81784, + "total": 81957 }, "targetTranslated": { - "tmMatch": 29, - "default": 1580, - "total": 1609 + "tmMatch": 198, + "default": 96393, + "total": 96591 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 838, + "total": 838 }, "approved": { "tmMatch": 0, @@ -18284,9 +26571,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 17, - "default": 825, - "total": 842 + "tmMatch": 173, + "default": 81784, + "total": 81957 }, "approvalCosts": { "tmMatch": 0, @@ -18298,48 +26585,48 @@ }, { "user": { - "id": 15208868, - "username": "HiroyukiNaito", - "fullName": "Hiroyuki Naito (HiroyukiNaito)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15208868/medium/10118cb6ff27d174a5170cb75ff1f436.jpg", + "id": 15284800, + "username": "msliwinski123", + "fullName": "MS1 (msliwinski123)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15284800/medium/a5707bdd7287b30379bd9c3cb122ef9b.png", "preTranslated": 0, - "totalCosts": 18559 + "totalCosts": 20135 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", - "userRole": "Translator, Proofreader", + "id": "pl", + "name": "Polish", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 18559 + "totalCosts": 20135 }, "translated": { - "tmMatch": 313, - "default": 18246, - "total": 18559 + "tmMatch": 162, + "default": 19973, + "total": 20135 }, "targetTranslated": { - "tmMatch": 477, - "default": 52659, - "total": 53136 + "tmMatch": 162, + "default": 18316, + "total": 18478 }, "translatedByMt": { - "tmMatch": 6, - "default": 449, - "total": 455 + "tmMatch": 3, + "default": 0, + "total": 3 }, "approved": { "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "translationCosts": { - "tmMatch": 313, - "default": 18246, - "total": 18559 + "tmMatch": 162, + "default": 19973, + "total": 20135 }, "approvalCosts": { "tmMatch": 0, @@ -18351,38 +26638,38 @@ }, { "user": { - "id": 15084373, - "username": "tarcanhursit", - "fullName": "Hursit Tarcan (tarcanhursit)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15084373/medium/63831adb2cf079020b094666d47417fd.jpg", + "id": 15947697, + "username": "mahdigachloo33", + "fullName": "Mahdi Gachloo (mahdigachloo33)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947697/medium/6d060369501296118d0d9155a941096a.jpeg", "preTranslated": 0, - "totalCosts": 72 + "totalCosts": 3850 }, "languages": [ { "language": { - "id": "nl", - "name": "Dutch", - "userRole": "Translator, Proofreader", + "id": "fa", + "name": "Persian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 72 + "totalCosts": 3850 }, "translated": { - "tmMatch": 29, - "default": 43, - "total": 72 + "tmMatch": 14, + "default": 3836, + "total": 3850 }, "targetTranslated": { - "tmMatch": 33, - "default": 41, - "total": 74 + "tmMatch": 18, + "default": 4770, + "total": 4788 }, "translatedByMt": { - "tmMatch": 29, - "default": 26, - "total": 55 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -18390,9 +26677,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 29, - "default": 43, - "total": 72 + "tmMatch": 14, + "default": 3836, + "total": 3850 }, "approvalCosts": { "tmMatch": 0, @@ -18404,33 +26691,33 @@ }, { "user": { - "id": 15849127, - "username": "IagoEmanuel15", - "fullName": "Iago Emanuel (IagoEmanuel15)", + "id": 15950767, + "username": "mahdi_ghasemi", + "fullName": "Mahdi Ghasemi (mahdi_ghasemi)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15849127/medium/e9fee6b4f74f480ba50df5d15b8f9f22.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15950767/medium/1afbe600b69aa04f13e882f27b84ad6c.jpg", "preTranslated": 0, - "totalCosts": 901 + "totalCosts": 41 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 901 + "totalCosts": 41 }, "translated": { - "tmMatch": 3, - "default": 898, - "total": 901 + "tmMatch": 0, + "default": 41, + "total": 41 }, "targetTranslated": { - "tmMatch": 3, - "default": 1028, - "total": 1031 + "tmMatch": 0, + "default": 47, + "total": 47 }, "translatedByMt": { "tmMatch": 0, @@ -18443,9 +26730,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 898, - "total": 901 + "tmMatch": 0, + "default": 41, + "total": 41 }, "approvalCosts": { "tmMatch": 0, @@ -18457,33 +26744,33 @@ }, { "user": { - "id": 13538624, - "username": "mrmx2013", - "fullName": "IamHappy (mrmx2013)", + "id": 15967245, + "username": "Mahdieh", + "fullName": "Mahdieh Amiri (Mahdieh)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13538624/medium/dc2568285b1cbd8f221f69590b4287ec.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967245/medium/85cefe753c17bdff8c9a4598105e640b.jpg", "preTranslated": 0, - "totalCosts": 15 + "totalCosts": 8 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15 + "totalCosts": 8 }, "translated": { "tmMatch": 0, - "default": 15, - "total": 15 + "default": 8, + "total": 8 }, "targetTranslated": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 11, + "total": 11 }, "translatedByMt": { "tmMatch": 0, @@ -18497,8 +26784,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 15, - "total": 15 + "default": 8, + "total": 8 }, "approvalCosts": { "tmMatch": 0, @@ -18510,38 +26797,38 @@ }, { "user": { - "id": 15509510, - "username": "shikkiy", - "fullName": "Ilia Shabalin (shikkiy)", + "id": 14146435, + "username": "mahesh339", + "fullName": "Mahesh Rajput (mahesh339)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15509510/medium/04d6afce57425f67a3a25630fa08441c_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14146435/medium/6c10b5f6b69bf8c155b9f227d3e71f6c.jpeg", "preTranslated": 0, - "totalCosts": 15 + "totalCosts": 155 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "gu-IN", + "name": "Gujarati", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15 + "totalCosts": 155 }, "translated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 12, + "default": 143, + "total": 155 }, "targetTranslated": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 19, + "default": 255, + "total": 274 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -18549,9 +26836,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 12, + "default": 143, + "total": 155 }, "approvalCosts": { "tmMatch": 0, @@ -18563,38 +26850,38 @@ }, { "user": { - "id": 15859719, - "username": "ilies-bel", - "fullName": "Ilies Beldjilali (ilies-bel)", + "id": 15917951, + "username": "maisa.m", + "fullName": "Maisa Milena (maisa.m)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15859719/medium/8a49812209a978d4e24ca6cf26777320.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15917951/medium/399d31990fbb5c2b964adeaaeb05b6a0.png", "preTranslated": 0, - "totalCosts": 108 + "totalCosts": 992 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 108 + "totalCosts": 992 }, "translated": { - "tmMatch": 0, - "default": 108, - "total": 108 + "tmMatch": 1, + "default": 991, + "total": 992 }, "targetTranslated": { - "tmMatch": 0, - "default": 117, - "total": 117 + "tmMatch": 3, + "default": 1079, + "total": 1082 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 42, + "total": 42 }, "approved": { "tmMatch": 0, @@ -18602,9 +26889,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 108, - "total": 108 + "tmMatch": 1, + "default": 991, + "total": 992 }, "approvalCosts": { "tmMatch": 0, @@ -18616,38 +26903,38 @@ }, { "user": { - "id": 15639161, - "username": "inseonyu7", - "fullName": "Inseon Yu (inseonyu7)", + "id": 15860037, + "username": "makc7", + "fullName": "Maksym Poliukhovych (makc7)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15639161/medium/06bf80fbb05bac5a371b8547e61efe98.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15860037/medium/9c2048ac721bc2d7abd49d178bf2857e.png", "preTranslated": 0, - "totalCosts": 466 + "totalCosts": 49 }, "languages": [ { "language": { - "id": "ko", - "name": "Korean", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 466 + "totalCosts": 49 }, "translated": { "tmMatch": 0, - "default": 466, - "total": 466 + "default": 49, + "total": 49 }, "targetTranslated": { "tmMatch": 0, - "default": 379, - "total": 379 + "default": 45, + "total": 45 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 12, + "total": 12 }, "approved": { "tmMatch": 0, @@ -18656,8 +26943,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 466, - "total": 466 + "default": 49, + "total": 49 }, "approvalCosts": { "tmMatch": 0, @@ -18669,38 +26956,38 @@ }, { "user": { - "id": 15816391, - "username": "Irvin_", - "fullName": "Irvin (Irvin_)", + "id": 15515516, + "username": "MCreimer", + "fullName": "Marcelo Creimer (MCreimer)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15816391/medium/81fbadbb674cd22d4c0824d77586d1b1.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15515516/medium/cad56d6fa7c03af94b18ead23e791019.png", "preTranslated": 0, - "totalCosts": 117 + "totalCosts": 33208 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 117 + "totalCosts": 33208 }, "translated": { - "tmMatch": 0, - "default": 117, - "total": 117 + "tmMatch": 149, + "default": 33059, + "total": 33208 }, "targetTranslated": { - "tmMatch": 0, - "default": 127, - "total": 127 + "tmMatch": 167, + "default": 34063, + "total": 34230 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 31, "default": 0, - "total": 0 + "total": 31 }, "approved": { "tmMatch": 0, @@ -18708,9 +26995,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 117, - "total": 117 + "tmMatch": 149, + "default": 33059, + "total": 33208 }, "approvalCosts": { "tmMatch": 0, @@ -18722,33 +27009,33 @@ }, { "user": { - "id": 15632297, - "username": "IsraaSobhy", - "fullName": "Israa El-Masry (IsraaSobhy)", + "id": 15975561, + "username": "marcin26brona", + "fullName": "Marcin Brona (marcin26brona)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15632297/medium/a911666e70d2958534312188b50d7b2a.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15975561/medium/b55d042407dfc9cb1a60336a5bc14c74.png", "preTranslated": 0, - "totalCosts": 43 + "totalCosts": 38 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 43 + "totalCosts": 38 }, "translated": { - "tmMatch": 0, - "default": 43, - "total": 43 + "tmMatch": 1, + "default": 37, + "total": 38 }, "targetTranslated": { - "tmMatch": 0, - "default": 42, - "total": 42 + "tmMatch": 1, + "default": 37, + "total": 38 }, "translatedByMt": { "tmMatch": 0, @@ -18761,9 +27048,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 43, - "total": 43 + "tmMatch": 1, + "default": 37, + "total": 38 }, "approvalCosts": { "tmMatch": 0, @@ -18775,38 +27062,38 @@ }, { "user": { - "id": 15724803, - "username": "Izabel_chaves", - "fullName": "Izabel Chaves (Izabel_chaves)", + "id": 13233961, + "username": "AshMurrey", + "fullName": "Margarita Popova (AshMurrey)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15724803/medium/7f2b4419d308a52a62f3b8f9ca9b4adf.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13233961/medium/2a4a3441394f56d2880c869561ee1bc4_default.png", "preTranslated": 0, - "totalCosts": 583 + "totalCosts": 71 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 583 + "totalCosts": 71 }, "translated": { - "tmMatch": 7, - "default": 576, - "total": 583 + "tmMatch": 0, + "default": 71, + "total": 71 }, "targetTranslated": { - "tmMatch": 8, - "default": 722, - "total": 730 + "tmMatch": 0, + "default": 58, + "total": 58 }, "translatedByMt": { "tmMatch": 0, - "default": 15, - "total": 15 + "default": 5, + "total": 5 }, "approved": { "tmMatch": 0, @@ -18814,9 +27101,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 576, - "total": 583 + "tmMatch": 0, + "default": 71, + "total": 71 }, "approvalCosts": { "tmMatch": 0, @@ -18828,33 +27115,33 @@ }, { "user": { - "id": 15889307, - "username": "jujemuga2011", - "fullName": "JUAN ANDRES MUÑOZ GARCIA (jujemuga2011)", + "id": 16008309, + "username": "mariaskv", + "fullName": "Maria Skevofylaka (mariaskv)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15889307/medium/d4da3df063e63fa135a05da6d555e5a0.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16008309/medium/4b2446224e807441d2d2de8f62d5fac5.jpeg", "preTranslated": 0, - "totalCosts": 1488 + "totalCosts": 1060 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "el", + "name": "Greek", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 859 + "totalCosts": 1060 }, "translated": { "tmMatch": 0, - "default": 859, - "total": 859 + "default": 1060, + "total": 1060 }, "targetTranslated": { "tmMatch": 0, - "default": 1383, - "total": 1383 + "default": 1185, + "total": 1185 }, "translatedByMt": { "tmMatch": 0, @@ -18868,33 +27155,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 859, - "total": 859 + "default": 1060, + "total": 1060 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15810863, + "username": "bitblondy", + "fullName": "Marlene Marz (bitblondy)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810863/medium/36dab07f1a377151348d57285a7955f7_default.png", + "preTranslated": 0, + "totalCosts": 13678 + }, + "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "eo", + "name": "Esperanto", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 508 + "totalCosts": 109 }, "translated": { "tmMatch": 0, - "default": 508, - "total": 508 + "default": 109, + "total": 109 }, "targetTranslated": { "tmMatch": 0, - "default": 919, - "total": 919 + "default": 96, + "total": 96 }, "translatedByMt": { "tmMatch": 0, @@ -18908,8 +27208,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 508, - "total": 508 + "default": 109, + "total": 109 }, "approvalCosts": { "tmMatch": 0, @@ -18919,27 +27219,27 @@ }, { "language": { - "id": "eo", - "name": "Esperanto", + "id": "de", + "name": "German", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 121 + "totalCosts": 13569 }, "translated": { - "tmMatch": 0, - "default": 121, - "total": 121 + "tmMatch": 128, + "default": 13441, + "total": 13569 }, "targetTranslated": { - "tmMatch": 0, - "default": 115, - "total": 115 + "tmMatch": 124, + "default": 13250, + "total": 13374 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 1, + "default": 4, + "total": 5 }, "approved": { "tmMatch": 0, @@ -18947,9 +27247,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 121, - "total": 121 + "tmMatch": 128, + "default": 13441, + "total": 13569 }, "approvalCosts": { "tmMatch": 0, @@ -18961,33 +27261,33 @@ }, { "user": { - "id": 15797013, - "username": "jacklacethird", - "fullName": "Janate Jackson (jacklacethird)", + "id": 15972279, + "username": "mateusz.ziebura93", + "fullName": "Mateusz Ziebura (mateusz.ziebura93)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15797013/medium/b970dd7d2a6795c5ea11d0879ffbb220.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15972279/medium/840cdd08f3a33d03f7a35ebde63f7d1d.png", "preTranslated": 0, - "totalCosts": 4 + "totalCosts": 25 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4 + "totalCosts": 25 }, "translated": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 25, + "total": 25 }, "targetTranslated": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 23, + "total": 23 }, "translatedByMt": { "tmMatch": 0, @@ -19001,8 +27301,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 25, + "total": 25 }, "approvalCosts": { "tmMatch": 0, @@ -19014,33 +27314,33 @@ }, { "user": { - "id": 13959209, - "username": "Filtertron", - "fullName": "Jean Zundel (Filtertron)", + "id": 14935043, + "username": "Cryptotranslator34", + "fullName": "Mauricio Streicher (Cryptotranslator34)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959209/medium/06a08e44a88b2676a190b2609b8282d1_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14935043/medium/bc2553516f2183fada4da40bcc384374.jpg", "preTranslated": 0, - "totalCosts": 554 + "totalCosts": 843 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 554 + "totalCosts": 843 }, "translated": { - "tmMatch": 0, - "default": 554, - "total": 554 + "tmMatch": 16, + "default": 827, + "total": 843 }, "targetTranslated": { - "tmMatch": 0, - "default": 714, - "total": 714 + "tmMatch": 18, + "default": 938, + "total": 956 }, "translatedByMt": { "tmMatch": 0, @@ -19053,9 +27353,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 554, - "total": 554 + "tmMatch": 16, + "default": 827, + "total": 843 }, "approvalCosts": { "tmMatch": 0, @@ -19067,33 +27367,33 @@ }, { "user": { - "id": 14894112, - "username": "Spuknit", - "fullName": "Jenner Falconi (Spuknit)", + "id": 15997485, + "username": "akifsefer9", + "fullName": "Mehmet Sahin (akifsefer9)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14894112/medium/c70d81f75092cc062472ff2457d73c09.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15997485/medium/0039628a06c8949d7815b4d6176486ec.png", "preTranslated": 0, - "totalCosts": 19 + "totalCosts": 26 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 19 + "totalCosts": 26 }, "translated": { - "tmMatch": 16, - "default": 3, - "total": 19 + "tmMatch": 0, + "default": 26, + "total": 26 }, "targetTranslated": { - "tmMatch": 15, - "default": 4, - "total": 19 + "tmMatch": 0, + "default": 24, + "total": 24 }, "translatedByMt": { "tmMatch": 0, @@ -19106,9 +27406,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 16, - "default": 3, - "total": 19 + "tmMatch": 0, + "default": 26, + "total": 26 }, "approvalCosts": { "tmMatch": 0, @@ -19120,13 +27420,13 @@ }, { "user": { - "id": 15763783, - "username": "1Arc", - "fullName": "Jman (1Arc)", + "id": 15807927, + "username": "bublz79", + "fullName": "Melanie (bublz79)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15763783/medium/e4da44dd445c10e4efb260be2defe551.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15807927/medium/daef0cef65debbc758f0fdc810a98d39_default.png", "preTranslated": 0, - "totalCosts": 147 + "totalCosts": 12 }, "languages": [ { @@ -19136,22 +27436,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 147 + "totalCosts": 12 }, "translated": { "tmMatch": 0, - "default": 147, - "total": 147 + "default": 12, + "total": 12 }, "targetTranslated": { "tmMatch": 0, - "default": 163, - "total": 163 + "default": 12, + "total": 12 }, "translatedByMt": { "tmMatch": 0, - "default": 29, - "total": 29 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -19160,8 +27460,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 147, - "total": 147 + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -19173,38 +27473,38 @@ }, { "user": { - "id": 15421538, - "username": "johannt", - "fullName": "Johann Pongratz (johannt)", + "id": 15962617, + "username": "michellewambaya", + "fullName": "Michelle Mtoni (michellewambaya)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15421538/medium/7e1f5d90509951072c0de0d9684baa35.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962617/medium/71969c5582e88435faeb2290d3f4c9fb.png", "preTranslated": 0, - "totalCosts": 82 + "totalCosts": 307 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "sw", + "name": "Swahili", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 82 + "totalCosts": 307 }, "translated": { - "tmMatch": 0, - "default": 82, - "total": 82 + "tmMatch": 10, + "default": 297, + "total": 307 }, "targetTranslated": { - "tmMatch": 0, - "default": 79, - "total": 79 + "tmMatch": 10, + "default": 281, + "total": 291 }, "translatedByMt": { "tmMatch": 0, - "default": 19, - "total": 19 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -19212,9 +27512,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 82, - "total": 82 + "tmMatch": 10, + "default": 297, + "total": 307 }, "approvalCosts": { "tmMatch": 0, @@ -19226,38 +27526,38 @@ }, { "user": { - "id": 15766005, - "username": "johnbotes1", - "fullName": "John Botes (johnbotes1)", + "id": 15967233, + "username": "jasminesprout", + "fullName": "Mike Chabanovskyi (jasminesprout)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15766005/medium/ab6713fb009d27b1caf14aa93d9f2c8c.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967233/medium/b3515c2cf957fd413921b8fc9ccd6960.jpg", "preTranslated": 0, - "totalCosts": 964 + "totalCosts": 26445 }, "languages": [ { "language": { - "id": "af", - "name": "Afrikaans", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 964 + "totalCosts": 19993 }, "translated": { - "tmMatch": 13, - "default": 951, - "total": 964 + "tmMatch": 33, + "default": 19960, + "total": 19993 }, "targetTranslated": { - "tmMatch": 5, - "default": 812, - "total": 817 + "tmMatch": 36, + "default": 18253, + "total": 18289 }, "translatedByMt": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 9, + "default": 2, + "total": 11 }, "approved": { "tmMatch": 0, @@ -19265,47 +27565,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 13, - "default": 951, - "total": 964 + "tmMatch": 33, + "default": 19960, + "total": 19993 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15812061, - "username": "POLboi", - "fullName": "John Doe (POLboi)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15812061/medium/cd34e6049ee4461adcc11145283b5298.jpg", - "preTranslated": 0, - "totalCosts": 14 - }, - "languages": [ + }, { "language": { - "id": "pl", - "name": "Polish", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 14 - }, - "translated": { - "tmMatch": 4, - "default": 10, - "total": 14 + "totalCosts": 6452 + }, + "translated": { + "tmMatch": 3, + "default": 6449, + "total": 6452 }, "targetTranslated": { - "tmMatch": 4, - "default": 10, - "total": 14 + "tmMatch": 3, + "default": 5831, + "total": 5834 }, "translatedByMt": { "tmMatch": 0, @@ -19318,9 +27605,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 10, - "total": 14 + "tmMatch": 3, + "default": 6449, + "total": 6452 }, "approvalCosts": { "tmMatch": 0, @@ -19332,33 +27619,33 @@ }, { "user": { - "id": 15836847, - "username": "k77", - "fullName": "John Doe (k77)", + "id": 15974377, + "username": "Miladsob", + "fullName": "Milad Sobhkhiz (Miladsob)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15836847/medium/a83e58c4be6c8ef96bda97967d4703cd.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15974377/medium/a9f52528a2ab92c1f4b9ac10a665c97a.jpg", "preTranslated": 0, - "totalCosts": 241 + "totalCosts": 70 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 241 + "totalCosts": 70 }, "translated": { "tmMatch": 0, - "default": 241, - "total": 241 + "default": 70, + "total": 70 }, "targetTranslated": { "tmMatch": 0, - "default": 264, - "total": 264 + "default": 102, + "total": 102 }, "translatedByMt": { "tmMatch": 0, @@ -19372,8 +27659,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 241, - "total": 241 + "default": 70, + "total": 70 }, "approvalCosts": { "tmMatch": 0, @@ -19385,48 +27672,48 @@ }, { "user": { - "id": 15123193, - "username": "Coram_Deo", - "fullName": "Jonas Neubert (Coram_Deo)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15123193/medium/b3211607cc43c707c0034f7502299d8d.jpeg", + "id": 15921763, + "username": "milton12rodriguez15", + "fullName": "Milton Rodriguezzz (milton12rodriguez15)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15921763/medium/71783d5c1bfe5b01b8396fbcfe067e57.png", "preTranslated": 0, - "totalCosts": 14793 + "totalCosts": 62 }, "languages": [ { "language": { - "id": "de", - "name": "German", - "userRole": "Translator, Proofreader", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 14793 + "totalCosts": 62 }, "translated": { - "tmMatch": 68, - "default": 14725, - "total": 14793 + "tmMatch": 0, + "default": 62, + "total": 62 }, "targetTranslated": { - "tmMatch": 68, - "default": 14409, - "total": 14477 + "tmMatch": 0, + "default": 71, + "total": 71 }, "translatedByMt": { - "tmMatch": 4, - "default": 95, - "total": 99 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 458 + "total": 0 }, "translationCosts": { - "tmMatch": 68, - "default": 14725, - "total": 14793 + "tmMatch": 0, + "default": 62, + "total": 62 }, "approvalCosts": { "tmMatch": 0, @@ -19438,38 +27725,38 @@ }, { "user": { - "id": 15878065, - "username": "gomesdolagoj", - "fullName": "João Batista do Lago (gomesdolagoj)", + "id": 15954079, + "username": "_Manax_", + "fullName": "Minase Melese (_Manax_)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15878065/medium/cb8914fe44c9a2cd489e9945c4569835.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954079/medium/a1d18eea9ff3663836816373ecaf90e7.jpeg", "preTranslated": 0, - "totalCosts": 48 + "totalCosts": 12455 }, "languages": [ { "language": { - "id": "pt-BR", - "name": "Portuguese, Brazilian", + "id": "am", + "name": "Amharic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 48 + "totalCosts": 12455 }, "translated": { - "tmMatch": 0, - "default": 48, - "total": 48 + "tmMatch": 17, + "default": 12438, + "total": 12455 }, "targetTranslated": { - "tmMatch": 0, - "default": 50, - "total": 50 + "tmMatch": 19, + "default": 10357, + "total": 10376 }, "translatedByMt": { - "tmMatch": 0, - "default": 48, - "total": 48 + "tmMatch": 2, + "default": 0, + "total": 2 }, "approved": { "tmMatch": 0, @@ -19477,9 +27764,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 48, - "total": 48 + "tmMatch": 17, + "default": 12438, + "total": 12455 }, "approvalCosts": { "tmMatch": 0, @@ -19491,38 +27778,38 @@ }, { "user": { - "id": 15385532, - "username": "jfgrueso25", - "fullName": "Juan Felipe Grueso (jfgrueso25)", + "id": 15967193, + "username": "minhkek", + "fullName": "Minh (minhkek)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15385532/medium/e428a136ec88a3e9be0f72a4a345e8ff.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967193/medium/9de1591866a92c526781acfb27509d87.png", "preTranslated": 0, - "totalCosts": 102 + "totalCosts": 6623 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 102 + "totalCosts": 6623 }, "translated": { - "tmMatch": 2, - "default": 100, - "total": 102 + "tmMatch": 43, + "default": 6580, + "total": 6623 }, "targetTranslated": { - "tmMatch": 2, - "default": 111, - "total": 113 + "tmMatch": 56, + "default": 10100, + "total": 10156 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 3, + "default": 8, + "total": 11 }, "approved": { "tmMatch": 0, @@ -19530,9 +27817,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 100, - "total": 102 + "tmMatch": 43, + "default": 6580, + "total": 6623 }, "approvalCosts": { "tmMatch": 0, @@ -19544,33 +27831,33 @@ }, { "user": { - "id": 15771433, - "username": "krpjaos10", - "fullName": "Jyri Järvinen (krpjaos10)", + "id": 15864739, + "username": "truongminhphucdc", + "fullName": "Minh Phúc (truongminhphucdc)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15771433/medium/462f2ca2cae747c72ef9529686d00da1.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15864739/medium/671e6bef915ea85ded23881e29be4a64.png", "preTranslated": 0, - "totalCosts": 10 + "totalCosts": 4 }, "languages": [ { "language": { - "id": "fi", - "name": "Finnish", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10 + "totalCosts": 4 }, "translated": { - "tmMatch": 10, - "default": 0, - "total": 10 + "tmMatch": 0, + "default": 4, + "total": 4 }, "targetTranslated": { - "tmMatch": 10, - "default": 0, - "total": 10 + "tmMatch": 0, + "default": 4, + "total": 4 }, "translatedByMt": { "tmMatch": 0, @@ -19583,9 +27870,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 10, - "default": 0, - "total": 10 + "tmMatch": 0, + "default": 4, + "total": 4 }, "approvalCosts": { "tmMatch": 0, @@ -19597,33 +27884,33 @@ }, { "user": { - "id": 15452118, - "username": "Kavyb", - "fullName": "Kavy Bhavsar (Kavyb)", + "id": 15775655, + "username": "missionsaturn", + "fullName": "MissionSaturn (missionsaturn)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15452118/medium/68a131f6275b18763fda253aff194d15.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15775655/medium/af33e509515bd2c20fa54ddbffa2e8b5.jpg", "preTranslated": 0, - "totalCosts": 12 + "totalCosts": 6 }, "languages": [ { "language": { - "id": "gu-IN", - "name": "Gujarati", + "id": "th", + "name": "Thai", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12 + "totalCosts": 6 }, "translated": { "tmMatch": 0, - "default": 12, - "total": 12 + "default": 6, + "total": 6 }, "targetTranslated": { "tmMatch": 0, - "default": 15, - "total": 15 + "default": 3, + "total": 3 }, "translatedByMt": { "tmMatch": 0, @@ -19637,8 +27924,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 12, - "total": 12 + "default": 6, + "total": 6 }, "approvalCosts": { "tmMatch": 0, @@ -19650,33 +27937,33 @@ }, { "user": { - "id": 15466100, - "username": "ki-3", - "fullName": "Kimi_jp (ki-3)", + "id": 15967133, + "username": "mohamadsolouki", + "fullName": "Mohamad Solouki (mohamadsolouki)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15466100/medium/1b0592d23d47ff1700a1b5163323646c.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967133/medium/068eec442d4368df02c3025eef7450cc.jpeg", "preTranslated": 0, - "totalCosts": 135 + "totalCosts": 19 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 135 + "totalCosts": 19 }, "translated": { "tmMatch": 0, - "default": 135, - "total": 135 + "default": 19, + "total": 19 }, "targetTranslated": { "tmMatch": 0, - "default": 372, - "total": 372 + "default": 22, + "total": 22 }, "translatedByMt": { "tmMatch": 0, @@ -19690,8 +27977,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 135, - "total": 135 + "default": 19, + "total": 19 }, "approvalCosts": { "tmMatch": 0, @@ -19703,33 +27990,33 @@ }, { "user": { - "id": 15764627, - "username": "AlexGuG3", - "fullName": "King GUG (AlexGuG3)", + "id": 16001243, + "username": "0xArkonomi", + "fullName": "Mohammad Mahdi Keshavarz (0xArkonomi)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15764627/medium/c7edc2551b470dae4e4b5786d57c7f37.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16001243/medium/b75b58e1e84d60e633167eb068b1253e.jpg", "preTranslated": 0, - "totalCosts": 41 + "totalCosts": 896 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 41 + "totalCosts": 896 }, "translated": { - "tmMatch": 41, - "default": 0, - "total": 41 + "tmMatch": 116, + "default": 780, + "total": 896 }, "targetTranslated": { - "tmMatch": 36, - "default": 0, - "total": 36 + "tmMatch": 144, + "default": 985, + "total": 1129 }, "translatedByMt": { "tmMatch": 0, @@ -19742,9 +28029,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 41, - "default": 0, - "total": 41 + "tmMatch": 116, + "default": 780, + "total": 896 }, "approvalCosts": { "tmMatch": 0, @@ -19756,33 +28043,33 @@ }, { "user": { - "id": 15850777, - "username": "Kongpc22", - "fullName": "Kongpc22", + "id": 15503382, + "username": "mohammedE22", + "fullName": "Mohammed Eid (mohammedE22)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15850777/medium/3108dfa7c965f30cff5f3ed9fc230d00.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15503382/medium/b5e1fa8943e236c07bbe459d92d23dcb.png", "preTranslated": 0, - "totalCosts": 72 + "totalCosts": 1649 }, "languages": [ { "language": { - "id": "th", - "name": "Thai", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 72 + "totalCosts": 1649 }, "translated": { - "tmMatch": 0, - "default": 72, - "total": 72 + "tmMatch": 4, + "default": 1645, + "total": 1649 }, "targetTranslated": { - "tmMatch": 0, - "default": 72, - "total": 72 + "tmMatch": 3, + "default": 1483, + "total": 1486 }, "translatedByMt": { "tmMatch": 0, @@ -19795,9 +28082,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 72, - "total": 72 + "tmMatch": 4, + "default": 1645, + "total": 1649 }, "approvalCosts": { "tmMatch": 0, @@ -19809,38 +28096,38 @@ }, { "user": { - "id": 12514018, - "username": "krishaamer", - "fullName": "Kris Haamer (krishaamer)", + "id": 15946395, + "username": "myrbergmonica2", + "fullName": "Monica Kärki (myrbergmonica2)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12514018/medium/d566d728def7b85603cc04c56dc90147.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946395/medium/b5bf97cc6d5f158752b492c43f2515a8.jpeg", "preTranslated": 0, - "totalCosts": 5 + "totalCosts": 12 }, "languages": [ { "language": { - "id": "et", - "name": "Estonian", + "id": "fi", + "name": "Finnish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5 + "totalCosts": 12 }, "translated": { - "tmMatch": 5, - "default": 0, - "total": 5 + "tmMatch": 0, + "default": 12, + "total": 12 }, "targetTranslated": { - "tmMatch": 5, - "default": 0, - "total": 5 + "tmMatch": 0, + "default": 10, + "total": 10 }, "translatedByMt": { - "tmMatch": 4, + "tmMatch": 0, "default": 0, - "total": 4 + "total": 0 }, "approved": { "tmMatch": 0, @@ -19848,9 +28135,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 0, - "total": 5 + "tmMatch": 0, + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -19862,33 +28149,33 @@ }, { "user": { - "id": 15776137, - "username": "sk.chrisz07", - "fullName": "Krisztiàn Somogyi (sk.chrisz07)", + "id": 15968031, + "username": "Jaux", + "fullName": "Moses Joshua (Jaux)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15776137/medium/3796fa782f4358de77ba903b72481ab3.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15968031/medium/a763502b6e5b9ad73f6ca17072a9f297.png", "preTranslated": 0, - "totalCosts": 20 + "totalCosts": 244 }, "languages": [ { "language": { - "id": "hu", - "name": "Hungarian", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 20 + "totalCosts": 244 }, "translated": { - "tmMatch": 3, - "default": 17, - "total": 20 + "tmMatch": 1, + "default": 243, + "total": 244 }, "targetTranslated": { - "tmMatch": 3, - "default": 14, - "total": 17 + "tmMatch": 1, + "default": 282, + "total": 283 }, "translatedByMt": { "tmMatch": 0, @@ -19901,9 +28188,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 17, - "total": 20 + "tmMatch": 1, + "default": 243, + "total": 244 }, "approvalCosts": { "tmMatch": 0, @@ -19915,38 +28202,38 @@ }, { "user": { - "id": 15003713, - "username": "kundansahu.official", - "fullName": "Kundan (kundansahu.official)", + "id": 15946267, + "username": "socopower", + "fullName": "Mr K. (socopower)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15003713/medium/f69051583d5702ac8c51249dbe620409.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946267/medium/094f1891b25266289c4aa5df7b08cfb7.jpg", "preTranslated": 0, - "totalCosts": 167 + "totalCosts": 8650 }, "languages": [ { "language": { - "id": "hi", - "name": "Hindi", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 167 + "totalCosts": 8650 }, "translated": { - "tmMatch": 16, - "default": 151, - "total": 167 + "tmMatch": 27, + "default": 8623, + "total": 8650 }, "targetTranslated": { - "tmMatch": 36, - "default": 266, - "total": 302 + "tmMatch": 26, + "default": 9791, + "total": 9817 }, "translatedByMt": { - "tmMatch": 8, - "default": 6, - "total": 14 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -19954,9 +28241,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 16, - "default": 151, - "total": 167 + "tmMatch": 27, + "default": 8623, + "total": 8650 }, "approvalCosts": { "tmMatch": 0, @@ -19968,38 +28255,38 @@ }, { "user": { - "id": 15330686, - "username": "leftertrp", - "fullName": "Lefteris T. (leftertrp)", + "id": 15193964, + "username": "MrAlizarinCrimson", + "fullName": "MrAlizarinCrimson", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15330686/medium/4230178a6a5663e2704f0822c60cb74c_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193964/medium/c6d2e5c698abf1ad8d755ef78ebbe86b.jpg", "preTranslated": 0, - "totalCosts": 169 + "totalCosts": 28 }, "languages": [ { "language": { - "id": "el", - "name": "Greek", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 169 + "totalCosts": 28 }, "translated": { - "tmMatch": 1, - "default": 168, - "total": 169 + "tmMatch": 0, + "default": 28, + "total": 28 }, "targetTranslated": { - "tmMatch": 1, - "default": 180, - "total": 181 + "tmMatch": 0, + "default": 34, + "total": 34 }, "translatedByMt": { - "tmMatch": 1, - "default": 4, - "total": 5 + "tmMatch": 0, + "default": 28, + "total": 28 }, "approved": { "tmMatch": 0, @@ -20007,9 +28294,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 168, - "total": 169 + "tmMatch": 0, + "default": 28, + "total": 28 }, "approvalCosts": { "tmMatch": 0, @@ -20021,38 +28308,38 @@ }, { "user": { - "id": 13554898, - "username": "lenster", - "fullName": "Lenster (lenster)", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13554898/medium/09273e8c88ce5ab255f3f718f07c2ea4.png", + "id": 15969571, + "username": "Mrkhainam", + "fullName": "Mrkhainam", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15969571/medium/3c3a74d2c4d799cb1af3effd8a48ac38.png", "preTranslated": 0, - "totalCosts": 1 + "totalCosts": 11 }, "languages": [ { "language": { - "id": "ta", - "name": "Tamil", - "userRole": "Limited Access", + "id": "vi", + "name": "Vietnamese", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1 + "totalCosts": 11 }, "translated": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 11, + "total": 11 }, "targetTranslated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 0, + "default": 15, + "total": 15 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, @@ -20060,9 +28347,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 11, + "total": 11 }, "approvalCosts": { "tmMatch": 0, @@ -20074,33 +28361,33 @@ }, { "user": { - "id": 14748480, - "username": "rustle", - "fullName": "Liu Min (rustle)", + "id": 15953967, + "username": "muradqurbanov", + "fullName": "Murad Qurbanov (muradqurbanov)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14748480/medium/fb9b53571ebea873ce17257508a8c128.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15953967/medium/167c3e2b356a8153355ae868ddd0268a.png", "preTranslated": 0, - "totalCosts": 70 + "totalCosts": 283 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "az", + "name": "Azerbaijani", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 70 + "totalCosts": 283 }, "translated": { - "tmMatch": 0, - "default": 70, - "total": 70 + "tmMatch": 5, + "default": 278, + "total": 283 }, "targetTranslated": { - "tmMatch": 0, - "default": 128, - "total": 128 + "tmMatch": 5, + "default": 235, + "total": 240 }, "translatedByMt": { "tmMatch": 0, @@ -20113,9 +28400,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 70, - "total": 70 + "tmMatch": 5, + "default": 278, + "total": 283 }, "approvalCosts": { "tmMatch": 0, @@ -20127,38 +28414,38 @@ }, { "user": { - "id": 14720694, - "username": "Loic_Eloge_Foka", - "fullName": "Loïc Eloge Foka (Loic_Eloge_Foka)", + "id": 15948283, + "username": "aftertaste.email", + "fullName": "NASH ALIFFI Channel (aftertaste.email)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14720694/medium/b348a8c6880d2220f07b5cfaedf66613_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948283/medium/d97d8fb0f519418cc0bba3fd9179b366.jpeg", "preTranslated": 0, - "totalCosts": 584 + "totalCosts": 813 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 584 + "totalCosts": 813 }, "translated": { "tmMatch": 2, - "default": 582, - "total": 584 + "default": 811, + "total": 813 }, "targetTranslated": { "tmMatch": 2, - "default": 678, - "total": 680 + "default": 712, + "total": 714 }, "translatedByMt": { - "tmMatch": 2, - "default": 292, - "total": 294 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -20167,8 +28454,8 @@ }, "translationCosts": { "tmMatch": 2, - "default": 582, - "total": 584 + "default": 811, + "total": 813 }, "approvalCosts": { "tmMatch": 0, @@ -20180,38 +28467,38 @@ }, { "user": { - "id": 15455618, - "username": "ponderevo", - "fullName": "Luís Feliciano (ponderevo)", + "id": 18711, + "username": "NCAA", + "fullName": "NCAA", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15455618/medium/fb7465d1c7b4b659435f46a88a3780a4_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/18711/medium/238db0b2ab4e727190e951c803b045b2_default.png", "preTranslated": 0, - "totalCosts": 159 + "totalCosts": 1607 }, "languages": [ { "language": { - "id": "pt-PT", - "name": "Portuguese", + "id": "da", + "name": "Danish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 159 + "totalCosts": 1607 }, "translated": { - "tmMatch": 6, - "default": 153, - "total": 159 + "tmMatch": 1, + "default": 1606, + "total": 1607 }, "targetTranslated": { - "tmMatch": 7, - "default": 171, - "total": 178 + "tmMatch": 1, + "default": 1520, + "total": 1521 }, "translatedByMt": { - "tmMatch": 5, - "default": 41, - "total": 46 + "tmMatch": 1, + "default": 42, + "total": 43 }, "approved": { "tmMatch": 0, @@ -20219,9 +28506,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 6, - "default": 153, - "total": 159 + "tmMatch": 1, + "default": 1606, + "total": 1607 }, "approvalCosts": { "tmMatch": 0, @@ -20233,38 +28520,38 @@ }, { "user": { - "id": 15194310, - "username": "MGETH", - "fullName": "MGETH", + "id": 15946143, + "username": "Neil_web3", + "fullName": "Neil Diaz (Neil_web3)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15194310/medium/ef0cb84e0b5a24f8e4b018f12cb5ded9.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946143/medium/c5f97d84fdb0c67cac3c899cb7b84c17.jpeg", "preTranslated": 0, - "totalCosts": 335 + "totalCosts": 1488 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "eo", + "name": "Esperanto", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 335 + "totalCosts": 302 }, "translated": { - "tmMatch": 2, - "default": 333, - "total": 335 + "tmMatch": 0, + "default": 302, + "total": 302 }, "targetTranslated": { - "tmMatch": 2, - "default": 389, - "total": 391 + "tmMatch": 0, + "default": 303, + "total": 303 }, "translatedByMt": { "tmMatch": 0, - "default": 42, - "total": 42 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -20272,47 +28559,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 333, - "total": 335 + "tmMatch": 0, + "default": 302, + "total": 302 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15883673, - "username": "zu.", - "fullName": "MZU (zu.)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15883673/medium/d04e2a5baa568148e06e0988bc01c1d7_default.png", - "preTranslated": 0, - "totalCosts": 32 - }, - "languages": [ + }, { "language": { - "id": "ml-IN", - "name": "Malayalam", + "id": "ro", + "name": "Romanian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 32 + "totalCosts": 1032 }, "translated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 10, + "default": 1022, + "total": 1032 }, "targetTranslated": { - "tmMatch": 0, - "default": 58, - "total": 58 + "tmMatch": 11, + "default": 1106, + "total": 1117 }, "translatedByMt": { "tmMatch": 0, @@ -20325,52 +28599,39 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 10, + "default": 1022, + "total": 1032 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15726657, - "username": "kliazovich", - "fullName": "Maks Kliazovich (kliazovich)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15726657/medium/2bca1ab513bec64699300a3b7fd64d26.jpg", - "preTranslated": 0, - "totalCosts": 307 - }, - "languages": [ + }, { "language": { - "id": "be", - "name": "Belarusian", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 307 + "totalCosts": 66 }, "translated": { - "tmMatch": 31, - "default": 276, - "total": 307 + "tmMatch": 0, + "default": 66, + "total": 66 }, "targetTranslated": { - "tmMatch": 30, - "default": 266, - "total": 296 + "tmMatch": 0, + "default": 79, + "total": 79 }, "translatedByMt": { - "tmMatch": 3, - "default": 3, - "total": 6 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -20378,52 +28639,39 @@ "total": 0 }, "translationCosts": { - "tmMatch": 31, - "default": 276, - "total": 307 + "tmMatch": 0, + "default": 66, + "total": 66 }, "approvalCosts": { "tmMatch": 0, "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15860037, - "username": "makc7", - "fullName": "Maksym Poliukhovych (makc7)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15860037/medium/9c2048ac721bc2d7abd49d178bf2857e.png", - "preTranslated": 0, - "totalCosts": 1055 - }, - "languages": [ + "total": 0 + } + }, { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "tl", + "name": "Tagalog", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1055 + "totalCosts": 88 }, "translated": { - "tmMatch": 56, - "default": 999, - "total": 1055 + "tmMatch": 2, + "default": 86, + "total": 88 }, "targetTranslated": { - "tmMatch": 50, - "default": 982, - "total": 1032 + "tmMatch": 3, + "default": 103, + "total": 106 }, "translatedByMt": { - "tmMatch": 21, - "default": 241, - "total": 262 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -20431,9 +28679,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 56, - "default": 999, - "total": 1055 + "tmMatch": 2, + "default": 86, + "total": 88 }, "approvalCosts": { "tmMatch": 0, @@ -20445,33 +28693,33 @@ }, { "user": { - "id": 15780197, - "username": "mane42120", - "fullName": "Manu D (mane42120)", + "id": 13132928, + "username": "ntiunn", + "fullName": "Nga-Tiok Tiunn (ntiunn)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15780197/medium/7e35936906ac293f0ef43741cba99215.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13132928/medium/7279036c1c0338ff05bbdb649b9b6c56_default.png", "preTranslated": 0, - "totalCosts": 959 + "totalCosts": 5093 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 959 + "totalCosts": 5093 }, "translated": { - "tmMatch": 0, - "default": 959, - "total": 959 + "tmMatch": 6, + "default": 5087, + "total": 5093 }, "targetTranslated": { - "tmMatch": 0, - "default": 1102, - "total": 1102 + "tmMatch": 11, + "default": 8902, + "total": 8913 }, "translatedByMt": { "tmMatch": 0, @@ -20484,9 +28732,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 959, - "total": 959 + "tmMatch": 6, + "default": 5087, + "total": 5093 }, "approvalCosts": { "tmMatch": 0, @@ -20498,33 +28746,33 @@ }, { "user": { - "id": 12844463, - "username": "MATsxm", - "fullName": "Marc Antoine Thevenet (MATsxm)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12844463/medium/6fae27edb4b41f363587f737ea2f96de.jpg", + "id": 15932353, + "username": "nickksoares", + "fullName": "Nicollas Soares (nickksoares)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932353/medium/a722341af1e695a8a496f57be3f72a32.png", "preTranslated": 0, - "totalCosts": 72 + "totalCosts": 961 }, "languages": [ { "language": { - "id": "fr", - "name": "French", - "userRole": "Translator, Proofreader", + "id": "pt-BR", + "name": "Portuguese, Brazilian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 72 + "totalCosts": 961 }, "translated": { "tmMatch": 0, - "default": 72, - "total": 72 + "default": 961, + "total": 961 }, "targetTranslated": { "tmMatch": 0, - "default": 63, - "total": 63 + "default": 1012, + "total": 1012 }, "translatedByMt": { "tmMatch": 0, @@ -20534,12 +28782,12 @@ "approved": { "tmMatch": 0, "default": 0, - "total": 77 + "total": 0 }, "translationCosts": { "tmMatch": 0, - "default": 72, - "total": 72 + "default": 961, + "total": 961 }, "approvalCosts": { "tmMatch": 0, @@ -20551,33 +28799,33 @@ }, { "user": { - "id": 15838213, - "username": "marjorie83", - "fullName": "Marjorie N. (marjorie83)", + "id": 15957911, + "username": "kotosai", + "fullName": "Niknik (kotosai)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15838213/medium/06f6e246d0a81d73663b644838d0cde9.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957911/medium/578134662d1209e1b2f8a9a6d2904ece_default.png", "preTranslated": 0, - "totalCosts": 334 + "totalCosts": 522 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "fil", + "name": "Filipino", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 334 + "totalCosts": 522 }, "translated": { - "tmMatch": 0, - "default": 334, - "total": 334 + "tmMatch": 510, + "default": 12, + "total": 522 }, "targetTranslated": { - "tmMatch": 0, - "default": 393, - "total": 393 + "tmMatch": 636, + "default": 12, + "total": 648 }, "translatedByMt": { "tmMatch": 0, @@ -20590,9 +28838,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 334, - "total": 334 + "tmMatch": 510, + "default": 12, + "total": 522 }, "approvalCosts": { "tmMatch": 0, @@ -20604,38 +28852,38 @@ }, { "user": { - "id": 15810863, - "username": "bitblondy", - "fullName": "Marlene Marz (bitblondy)", + "id": 15967993, + "username": "Temmytee", + "fullName": "ODEWALE Timileyin Eunice (Temmytee)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810863/medium/36dab07f1a377151348d57285a7955f7_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967993/medium/3f1ee9aac1d24df61ecb31e92bbe27c5.jpeg", "preTranslated": 0, - "totalCosts": 3104 + "totalCosts": 263 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "yo", + "name": "Yoruba", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3104 + "totalCosts": 263 }, "translated": { - "tmMatch": 59, - "default": 3045, - "total": 3104 + "tmMatch": 1, + "default": 262, + "total": 263 }, "targetTranslated": { - "tmMatch": 55, - "default": 3008, - "total": 3063 + "tmMatch": 1, + "default": 310, + "total": 311 }, "translatedByMt": { - "tmMatch": 28, - "default": 285, - "total": 313 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -20643,9 +28891,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 59, - "default": 3045, - "total": 3104 + "tmMatch": 1, + "default": 262, + "total": 263 }, "approvalCosts": { "tmMatch": 0, @@ -20657,38 +28905,38 @@ }, { "user": { - "id": 14739682, - "username": "mary.kuzmenko", - "fullName": "Maryna K. (mary.kuzmenko)", + "id": 15967513, + "username": "Odinkrm", + "fullName": "Odin (Odinkrm)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14739682/medium/599afacddc29bf1019c47919568f8b27.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967513/medium/b50f5902d42c3ec14ca4575e9b1dc504.jpeg", "preTranslated": 0, - "totalCosts": 6 + "totalCosts": 456 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 6 + "totalCosts": 456 }, "translated": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 1, + "default": 455, + "total": 456 }, "targetTranslated": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 1, + "default": 559, + "total": 560 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 1, "default": 0, - "total": 0 + "total": 1 }, "approved": { "tmMatch": 0, @@ -20696,9 +28944,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 1, + "default": 455, + "total": 456 }, "approvalCosts": { "tmMatch": 0, @@ -20710,33 +28958,33 @@ }, { "user": { - "id": 15841395, - "username": "hilmiarkan", - "fullName": "Maulana Hilmi Arkan (hilmiarkan)", + "id": 15914449, + "username": "CoinHoodie", + "fullName": "Olivier Cappaert aka (CoinHoodie)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15841395/medium/ab64e121c7436087b506347f60341d52.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914449/medium/8d2590e4c534ca5125f1d70b6d9c71cc.jpeg", "preTranslated": 0, - "totalCosts": 128 + "totalCosts": 8072 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 128 + "totalCosts": 8072 }, "translated": { - "tmMatch": 0, - "default": 128, - "total": 128 + "tmMatch": 19, + "default": 8053, + "total": 8072 }, "targetTranslated": { - "tmMatch": 0, - "default": 104, - "total": 104 + "tmMatch": 17, + "default": 10197, + "total": 10214 }, "translatedByMt": { "tmMatch": 0, @@ -20749,9 +28997,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 128, - "total": 128 + "tmMatch": 19, + "default": 8053, + "total": 8072 }, "approvalCosts": { "tmMatch": 0, @@ -20763,38 +29011,38 @@ }, { "user": { - "id": 15836113, - "username": "the-max-savchuk", - "fullName": "Max Savchuk (the-max-savchuk)", + "id": 15962007, + "username": "omkarkamale001", + "fullName": "Omkar K (omkarkamale001)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15836113/medium/655074890118e68e2f859044458299bf.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15962007/medium/9019d6a347ebffa6f6464e00132355aa.jpeg", "preTranslated": 0, - "totalCosts": 55 + "totalCosts": 32502 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "mr", + "name": "Marathi", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 55 + "totalCosts": 32502 }, "translated": { - "tmMatch": 0, - "default": 55, - "total": 55 + "tmMatch": 66, + "default": 32436, + "total": 32502 }, "targetTranslated": { - "tmMatch": 0, - "default": 53, - "total": 53 + "tmMatch": 111, + "default": 52313, + "total": 52424 }, "translatedByMt": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 16, + "default": 2, + "total": 18 }, "approved": { "tmMatch": 0, @@ -20802,9 +29050,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 55, - "total": 55 + "tmMatch": 66, + "default": 32436, + "total": 32502 }, "approvalCosts": { "tmMatch": 0, @@ -20816,33 +29064,33 @@ }, { "user": { - "id": 15876935, - "username": "mdmitulxxxxxxxxxxx", - "fullName": "Md Mitul (mdmitulxxxxxxxxxxx)", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15876935/medium/a173fd255e2fa24e9e877884530fc4f3.png", + "id": 15725187, + "username": "Juliegwen", + "fullName": "Onyeike Izuchi Juliet (Juliegwen)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15725187/medium/61728944dc52ff3364d66c799b58171a.jpg", "preTranslated": 0, - "totalCosts": 9 + "totalCosts": 68 }, "languages": [ { "language": { - "id": "bn", - "name": "Bengali", - "userRole": "Limited Access", + "id": "pcm", + "name": "Nigerian Pidgin", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 9 + "totalCosts": 68 }, "translated": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 68, + "total": 68 }, "targetTranslated": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 87, + "total": 87 }, "translatedByMt": { "tmMatch": 0, @@ -20856,8 +29104,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 9, - "total": 9 + "default": 68, + "total": 68 }, "approvalCosts": { "tmMatch": 0, @@ -20869,33 +29117,33 @@ }, { "user": { - "id": 15813587, - "username": "Melasin", - "fullName": "Melasin", + "id": 15948377, + "username": "Isaachavertz", + "fullName": "Onyeoma Isaac (Isaachavertz)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15813587/medium/07b0aaedbd8922799e42b1707269a374.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15948377/medium/b55b9374fd682ba0148fe93427edeb2a.jpg", "preTranslated": 0, - "totalCosts": 339 + "totalCosts": 12983 }, "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", + "id": "ig", + "name": "Igbo", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 339 + "totalCosts": 12983 }, "translated": { - "tmMatch": 0, - "default": 339, - "total": 339 + "tmMatch": 7, + "default": 12976, + "total": 12983 }, "targetTranslated": { - "tmMatch": 0, - "default": 521, - "total": 521 + "tmMatch": 12, + "default": 15714, + "total": 15726 }, "translatedByMt": { "tmMatch": 0, @@ -20908,9 +29156,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 339, - "total": 339 + "tmMatch": 7, + "default": 12976, + "total": 12983 }, "approvalCosts": { "tmMatch": 0, @@ -20922,38 +29170,38 @@ }, { "user": { - "id": 12706364, - "username": "Mikeru", - "fullName": "Michelle (Mikeru)", + "id": 14787370, + "username": "agulani", + "fullName": "Orkhan Rustamzade (agulani)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12706364/medium/42167dae006b29ae2cda6b3c22ca1261_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787370/medium/9bb8a2d0d244e04f14b523e895b08100.jpg", "preTranslated": 0, - "totalCosts": 238 + "totalCosts": 8955 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "az", + "name": "Azerbaijani", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 238 + "totalCosts": 8955 }, "translated": { - "tmMatch": 1, - "default": 237, - "total": 238 + "tmMatch": 31, + "default": 8924, + "total": 8955 }, "targetTranslated": { - "tmMatch": 1, - "default": 249, - "total": 250 + "tmMatch": 30, + "default": 7786, + "total": 7816 }, "translatedByMt": { - "tmMatch": 1, - "default": 4, - "total": 5 + "tmMatch": 14, + "default": 7, + "total": 21 }, "approved": { "tmMatch": 0, @@ -20961,9 +29209,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 237, - "total": 238 + "tmMatch": 31, + "default": 8924, + "total": 8955 }, "approvalCosts": { "tmMatch": 0, @@ -20975,28 +29223,28 @@ }, { "user": { - "id": 15832417, - "username": "mohamedamine2009.", - "fullName": "Mohamed Amine Ait Wakrim (mohamedamine2009.)", + "id": 15975477, + "username": "pareshpandit", + "fullName": "Paresh Pandit (pareshpandit)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15832417/medium/146e9b89a08537f74ee6fadc9111afc1.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15975477/medium/70848478b074018fdeac2a069e9d9e76.jpeg", "preTranslated": 0, - "totalCosts": 31 + "totalCosts": 26 }, "languages": [ { "language": { - "id": "it", - "name": "Italian", + "id": "mr", + "name": "Marathi", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 31 + "totalCosts": 26 }, "translated": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 26, + "total": 26 }, "targetTranslated": { "tmMatch": 0, @@ -21015,8 +29263,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 26, + "total": 26 }, "approvalCosts": { "tmMatch": 0, @@ -21028,38 +29276,38 @@ }, { "user": { - "id": 15029207, - "username": "mohammedouahman", - "fullName": "Mohammed Ouahman (mohammedouahman)", + "id": 13002436, + "username": "patcharaphol-army15", + "fullName": "Patcharaphol Teathewat (patcharaphol-army15)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15029207/medium/da39ed145b99af8a9ad688d94669b468_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13002436/medium/82a0c7e3f81d6df8f2011576ba556cd6.jpg", "preTranslated": 0, - "totalCosts": 617 + "totalCosts": 10 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "th", + "name": "Thai", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 617 + "totalCosts": 10 }, "translated": { - "tmMatch": 11, - "default": 606, - "total": 617 + "tmMatch": 0, + "default": 10, + "total": 10 }, "targetTranslated": { - "tmMatch": 9, - "default": 566, - "total": 575 + "tmMatch": 0, + "default": 1, + "total": 1 }, "translatedByMt": { - "tmMatch": 1, - "default": 4, - "total": 5 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -21067,9 +29315,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 11, - "default": 606, - "total": 617 + "tmMatch": 0, + "default": 10, + "total": 10 }, "approvalCosts": { "tmMatch": 0, @@ -21081,38 +29329,38 @@ }, { "user": { - "id": 15866719, - "username": "mostafaabdelaal497", - "fullName": "Mostafa Abd Elaal (mostafaabdelaal497)", + "id": 17361, + "username": "plamarque", + "fullName": "Patrice Lamarque (plamarque)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15866719/medium/c66504f76c487ca25480cdcd408efcb0.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png", "preTranslated": 0, - "totalCosts": 4 + "totalCosts": 3411 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4 + "totalCosts": 3411 }, "translated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 38, + "default": 3373, + "total": 3411 }, "targetTranslated": { - "tmMatch": 0, - "default": 3, - "total": 3 + "tmMatch": 47, + "default": 3960, + "total": 4007 }, "translatedByMt": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -21120,9 +29368,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 38, + "default": 3373, + "total": 3411 }, "approvalCosts": { "tmMatch": 0, @@ -21134,38 +29382,38 @@ }, { "user": { - "id": 15790733, - "username": "zf_MotH", - "fullName": "MotH (zf_MotH)", + "id": 15956717, + "username": "patthpapong", + "fullName": "Patt Hpapong (patthpapong)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15790733/medium/d72f43ec2f6893a1ab007a97beddf5ad.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956717/medium/11bc182149843dd568206843a6a98c07.jpeg", "preTranslated": 0, - "totalCosts": 43 + "totalCosts": 2348 }, "languages": [ { "language": { - "id": "cs", - "name": "Czech", + "id": "th", + "name": "Thai", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 43 + "totalCosts": 2348 }, "translated": { - "tmMatch": 18, - "default": 25, - "total": 43 + "tmMatch": 49, + "default": 2299, + "total": 2348 }, "targetTranslated": { - "tmMatch": 17, - "default": 22, - "total": 39 + "tmMatch": 39, + "default": 497, + "total": 536 }, "translatedByMt": { - "tmMatch": 15, - "default": 17, - "total": 32 + "tmMatch": 17, + "default": 0, + "total": 17 }, "approved": { "tmMatch": 0, @@ -21173,9 +29421,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 18, - "default": 25, - "total": 43 + "tmMatch": 49, + "default": 2299, + "total": 2348 }, "approvalCosts": { "tmMatch": 0, @@ -21187,38 +29435,38 @@ }, { "user": { - "id": 15193964, - "username": "MrAlizarinCrimson", - "fullName": "MrAlizarinCrimson", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15193964/medium/c6d2e5c698abf1ad8d755ef78ebbe86b.jpg", + "id": 13997701, + "username": "i8008", + "fullName": "Paul (i8008) (i8008)", + "userRole": "", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13997701/medium/28a51e6f02f22b60225457043b3a8f6b.png", "preTranslated": 0, - "totalCosts": 68 + "totalCosts": 587 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Translator", + "id": "fr", + "name": "French", + "userRole": "Limited Access", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 68 + "totalCosts": 587 }, "translated": { - "tmMatch": 2, - "default": 66, - "total": 68 + "tmMatch": 3, + "default": 584, + "total": 587 }, "targetTranslated": { - "tmMatch": 4, - "default": 69, - "total": 73 + "tmMatch": 3, + "default": 627, + "total": 630 }, "translatedByMt": { - "tmMatch": 0, - "default": 53, - "total": 53 + "tmMatch": 3, + "default": 465, + "total": 468 }, "approved": { "tmMatch": 0, @@ -21226,9 +29474,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 66, - "total": 68 + "tmMatch": 3, + "default": 584, + "total": 587 }, "approvalCosts": { "tmMatch": 0, @@ -21240,33 +29488,33 @@ }, { "user": { - "id": 15627063, - "username": "hudaxpropesor", - "fullName": "Muhammad Tamimul Huda (hudaxpropesor)", + "id": 15903903, + "username": "mabesi", + "fullName": "Plinio Mabesi (mabesi)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15627063/medium/b348c090a5a9288af23d49260b2479c2.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15903903/medium/fd50689f218873d5dc54d8c7fbeb1751.png", "preTranslated": 0, - "totalCosts": 50 + "totalCosts": 38 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 50 + "totalCosts": 38 }, "translated": { "tmMatch": 0, - "default": 50, - "total": 50 + "default": 38, + "total": 38 }, "targetTranslated": { "tmMatch": 0, - "default": 46, - "total": 46 + "default": 39, + "total": 39 }, "translatedByMt": { "tmMatch": 0, @@ -21280,8 +29528,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 50, - "total": 50 + "default": 38, + "total": 38 }, "approvalCosts": { "tmMatch": 0, @@ -21293,38 +29541,38 @@ }, { "user": { - "id": 14708760, - "username": "hypebeans", - "fullName": "Muumi (ミュウミ) (hypebeans)", + "id": 14899686, + "username": "preetishpriyadarshi", + "fullName": "Preetish Priyadarshi Samal (preetishpriyadarshi)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14708760/medium/f039dc85a8469b65d9e3e2413f9c4710.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14899686/medium/5e46a234abebd1891fff6e8fd6af856b_default.png", "preTranslated": 0, - "totalCosts": 409 + "totalCosts": 42 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "or", + "name": "Odia", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 350 + "totalCosts": 42 }, "translated": { - "tmMatch": 50, - "default": 300, - "total": 350 + "tmMatch": 6, + "default": 36, + "total": 42 }, "targetTranslated": { - "tmMatch": 49, - "default": 301, - "total": 350 + "tmMatch": 12, + "default": 57, + "total": 69 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 2, + "default": 2, + "total": 4 }, "approved": { "tmMatch": 0, @@ -21332,39 +29580,52 @@ "total": 0 }, "translationCosts": { - "tmMatch": 50, - "default": 300, - "total": 350 + "tmMatch": 6, + "default": 36, + "total": 42 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15636483, + "username": "qrizwani", + "fullName": "Qamar Rizwani (qrizwani)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15636483/medium/36438daccc42652147c1b8977cab1415.jpg", + "preTranslated": 0, + "totalCosts": 252 + }, + "languages": [ { "language": { - "id": "ja", - "name": "Japanese", + "id": "ur-IN", + "name": "Urdu (India)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 59 + "totalCosts": 252 }, "translated": { - "tmMatch": 53, - "default": 6, - "total": 59 + "tmMatch": 1, + "default": 251, + "total": 252 }, "targetTranslated": { - "tmMatch": 159, - "default": 12, - "total": 171 + "tmMatch": 1, + "default": 329, + "total": 330 }, "translatedByMt": { - "tmMatch": 10, + "tmMatch": 1, "default": 0, - "total": 10 + "total": 1 }, "approved": { "tmMatch": 0, @@ -21372,9 +29633,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 53, - "default": 6, - "total": 59 + "tmMatch": 1, + "default": 251, + "total": 252 }, "approvalCosts": { "tmMatch": 0, @@ -21386,33 +29647,33 @@ }, { "user": { - "id": 15809315, - "username": "dtsukokotoi809", - "fullName": "Myrl Guinan (dtsukokotoi809)", + "id": 15954333, + "username": "queenie0815", + "fullName": "Queenie Chang (queenie0815)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15809315/medium/eb2e497890b6ff1c4bfc506136a6cfcc.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954333/medium/589465a479a53254001094f2a4322a0f.png", "preTranslated": 0, - "totalCosts": 678 + "totalCosts": 1340 }, "languages": [ { "language": { - "id": "af", - "name": "Afrikaans", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 370 + "totalCosts": 1340 }, "translated": { "tmMatch": 0, - "default": 370, - "total": 370 + "default": 1340, + "total": 1340 }, "targetTranslated": { "tmMatch": 0, - "default": 348, - "total": 348 + "default": 2217, + "total": 2217 }, "translatedByMt": { "tmMatch": 0, @@ -21426,33 +29687,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 370, - "total": 370 + "default": 1340, + "total": 1340 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15977385, + "username": "rishabhknows", + "fullName": "RISHABH RAI (rishabhknows)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15977385/medium/a272262bea7def7ef07553bc1e446f74.png", + "preTranslated": 0, + "totalCosts": 143 + }, + "languages": [ { "language": { - "id": "sq", - "name": "Albanian", + "id": "sv-SE", + "name": "Swedish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 16 + "totalCosts": 143 }, "translated": { - "tmMatch": 0, - "default": 16, - "total": 16 + "tmMatch": 8, + "default": 135, + "total": 143 }, "targetTranslated": { - "tmMatch": 0, - "default": 79, - "total": 79 + "tmMatch": 9, + "default": 146, + "total": 155 }, "translatedByMt": { "tmMatch": 0, @@ -21465,34 +29739,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 16, - "total": 16 + "tmMatch": 8, + "default": 135, + "total": 143 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15983311, + "username": "nt.radina", + "fullName": "Radina Talanova (nt.radina)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15983311/medium/071fa8c14ce4780657696d6422221b3c.png", + "preTranslated": 0, + "totalCosts": 147 + }, + "languages": [ { "language": { - "id": "hy-AM", - "name": "Armenian", + "id": "bg", + "name": "Bulgarian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 13 + "totalCosts": 147 }, "translated": { - "tmMatch": 0, - "default": 13, - "total": 13 + "tmMatch": 36, + "default": 111, + "total": 147 }, "targetTranslated": { - "tmMatch": 0, - "default": 22, - "total": 22 + "tmMatch": 37, + "default": 107, + "total": 144 }, "translatedByMt": { "tmMatch": 0, @@ -21505,39 +29792,52 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 13, - "total": 13 + "tmMatch": 36, + "default": 111, + "total": 147 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15898247, + "username": "rapmje", + "fullName": "Rafael Peixoto (rapmje)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15898247/medium/dacf773617d3a784c808fcb730ebece9.png", + "preTranslated": 0, + "totalCosts": 229 + }, + "languages": [ { "language": { - "id": "bi", - "name": "Bislama", + "id": "pt-PT", + "name": "Portuguese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 50 + "totalCosts": 229 }, "translated": { - "tmMatch": 0, - "default": 50, - "total": 50 + "tmMatch": 6, + "default": 223, + "total": 229 }, "targetTranslated": { - "tmMatch": 0, - "default": 94, - "total": 94 + "tmMatch": 6, + "default": 218, + "total": 224 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 5, + "default": 4, + "total": 9 }, "approved": { "tmMatch": 0, @@ -21545,34 +29845,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 50, - "total": 50 + "tmMatch": 6, + "default": 223, + "total": 229 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 14861756, + "username": "RahayuRafika_12", + "fullName": "Rahayu Rafikahwulan Sari (RahayuRafika_12)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14861756/medium/68ce2b760b107d1cf2a5a1508aa8ee96.jpeg", + "preTranslated": 0, + "totalCosts": 12300 + }, + "languages": [ { "language": { - "id": "ca", - "name": "Catalan", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5 + "totalCosts": 12300 }, "translated": { - "tmMatch": 0, - "default": 5, - "total": 5 + "tmMatch": 93, + "default": 12207, + "total": 12300 }, "targetTranslated": { - "tmMatch": 0, - "default": 3, - "total": 3 + "tmMatch": 97, + "default": 11708, + "total": 11805 }, "translatedByMt": { "tmMatch": 0, @@ -21585,39 +29898,52 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 5, - "total": 5 + "tmMatch": 93, + "default": 12207, + "total": 12300 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15417292, + "username": "Krynlix", + "fullName": "Rall Ball (Krynlix)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15417292/medium/8ffb6e3dcf9f571cdce495e92d212419.png", + "preTranslated": 0, + "totalCosts": 221 + }, + "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 224 + "totalCosts": 221 }, "translated": { "tmMatch": 0, - "default": 224, - "total": 224 + "default": 221, + "total": 221 }, "targetTranslated": { "tmMatch": 0, - "default": 311, - "total": 311 + "default": 273, + "total": 273 }, "translatedByMt": { "tmMatch": 0, - "default": 64, - "total": 64 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -21626,8 +29952,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 224, - "total": 224 + "default": 221, + "total": 221 }, "approvalCosts": { "tmMatch": 0, @@ -21639,33 +29965,33 @@ }, { "user": { - "id": 15545841, - "username": "bensaknikolas", - "fullName": "N B (bensaknikolas)", + "id": 15566383, + "username": "raminvalizadeh29", + "fullName": "Ramin Valizadeh (raminvalizadeh29)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15545841/medium/7977648904f48074f4e9fb6200e36a75.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15566383/medium/adf7b433679fa9f895b77e19223a2e70.jpeg", "preTranslated": 0, - "totalCosts": 14 + "totalCosts": 28 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 14 + "totalCosts": 28 }, "translated": { - "tmMatch": 2, - "default": 12, - "total": 14 + "tmMatch": 0, + "default": 28, + "total": 28 }, "targetTranslated": { - "tmMatch": 2, - "default": 12, - "total": 14 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { "tmMatch": 0, @@ -21678,9 +30004,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 12, - "total": 14 + "tmMatch": 0, + "default": 28, + "total": 28 }, "approvalCosts": { "tmMatch": 0, @@ -21692,38 +30018,38 @@ }, { "user": { - "id": 18711, - "username": "NCAA", - "fullName": "NCAA", + "id": 15969013, + "username": "0xRayLin", + "fullName": "Ray Lin (0xRayLin)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/18711/medium/238db0b2ab4e727190e951c803b045b2_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15969013/medium/b1fac63beade2d636d519324f4460b33.png", "preTranslated": 0, - "totalCosts": 114 + "totalCosts": 16 }, "languages": [ { "language": { - "id": "da", - "name": "Danish", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 114 + "totalCosts": 16 }, "translated": { - "tmMatch": 10, - "default": 104, - "total": 114 + "tmMatch": 0, + "default": 16, + "total": 16 }, "targetTranslated": { - "tmMatch": 9, - "default": 95, - "total": 104 + "tmMatch": 0, + "default": 27, + "total": 27 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 2, + "total": 2 }, "approved": { "tmMatch": 0, @@ -21731,9 +30057,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 10, - "default": 104, - "total": 114 + "tmMatch": 0, + "default": 16, + "total": 16 }, "approvalCosts": { "tmMatch": 0, @@ -21745,38 +30071,38 @@ }, { "user": { - "id": 15879361, - "username": "nghialele", - "fullName": "Nghia Lele (nghialele)", + "id": 15855621, + "username": "subriper", + "fullName": "Reza Hazrati (subriper)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15879361/medium/09e190dae2ddc3f66bbd74d33eedc7b3.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15855621/medium/ab1a2868b313e6dfc113a754286d37d5.jpg", "preTranslated": 0, - "totalCosts": 29 + "totalCosts": 224 }, "languages": [ { "language": { - "id": "vi", - "name": "Vietnamese", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 29 + "totalCosts": 224 }, "translated": { - "tmMatch": 29, - "default": 0, - "total": 29 + "tmMatch": 6, + "default": 218, + "total": 224 }, "targetTranslated": { - "tmMatch": 48, - "default": 0, - "total": 48 + "tmMatch": 8, + "default": 271, + "total": 279 }, "translatedByMt": { - "tmMatch": 29, + "tmMatch": 0, "default": 0, - "total": 29 + "total": 0 }, "approved": { "tmMatch": 0, @@ -21784,9 +30110,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 29, - "default": 0, - "total": 29 + "tmMatch": 6, + "default": 218, + "total": 224 }, "approvalCosts": { "tmMatch": 0, @@ -21798,38 +30124,38 @@ }, { "user": { - "id": 14943437, - "username": "trungan1511", - "fullName": "Nguyen An (trungan1511)", + "id": 15966349, + "username": "chiogonzalezt", + "fullName": "Rocio Gonzalez Toral (chiogonzalezt)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14943437/medium/03d7b6c2f65c04c60b008a38a221cf5f.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966349/medium/1d277519e5b8ccdfc1de7b60ec89e1b0.jpeg", "preTranslated": 0, - "totalCosts": 384 + "totalCosts": 4922 }, "languages": [ { "language": { - "id": "vi", - "name": "Vietnamese", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 384 + "totalCosts": 4922 }, "translated": { - "tmMatch": 1, - "default": 383, - "total": 384 + "tmMatch": 176, + "default": 4746, + "total": 4922 }, "targetTranslated": { - "tmMatch": 3, - "default": 599, - "total": 602 + "tmMatch": 191, + "default": 5004, + "total": 5195 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, @@ -21837,9 +30163,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 383, - "total": 384 + "tmMatch": 176, + "default": 4746, + "total": 4922 }, "approvalCosts": { "tmMatch": 0, @@ -21851,38 +30177,38 @@ }, { "user": { - "id": 15726219, - "username": "DeckCadet", - "fullName": "Nick (DeckCadet)", + "id": 15914653, + "username": "Rohan-San", + "fullName": "Rohan Santhosh (Rohan-San)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15726219/medium/13d125d9b19bf6e523879837a7768002.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15914653/medium/50135f7b00e107c40d4a1c8d3f6deb7b.jpeg", "preTranslated": 0, - "totalCosts": 1306 + "totalCosts": 12 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "hi", + "name": "Hindi", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1306 + "totalCosts": 12 }, "translated": { - "tmMatch": 19, - "default": 1287, - "total": 1306 + "tmMatch": 0, + "default": 12, + "total": 12 }, "targetTranslated": { - "tmMatch": 18, - "default": 1145, - "total": 1163 + "tmMatch": 0, + "default": 9, + "total": 9 }, "translatedByMt": { - "tmMatch": 10, - "default": 179, - "total": 189 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -21890,9 +30216,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 19, - "default": 1287, - "total": 1306 + "tmMatch": 0, + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -21904,38 +30230,38 @@ }, { "user": { - "id": 15526713, - "username": "vebrian", - "fullName": "Niko Febrianur (vebrian)", + "id": 16030084, + "username": "0xRohit", + "fullName": "Rohit Kumar Anant (0xRohit)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15526713/medium/a65fab62bbc032697e4d12599f864085.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16030084/medium/8abbdf3741acd8d588b7104333269efe.jpg", "preTranslated": 0, - "totalCosts": 108 + "totalCosts": 62 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "hi", + "name": "Hindi", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 108 + "totalCosts": 62 }, "translated": { - "tmMatch": 1, - "default": 107, - "total": 108 + "tmMatch": 2, + "default": 60, + "total": 62 }, "targetTranslated": { - "tmMatch": 1, - "default": 99, - "total": 100 + "tmMatch": 4, + "default": 102, + "total": 106 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -21943,9 +30269,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 107, - "total": 108 + "tmMatch": 2, + "default": 60, + "total": 62 }, "approvalCosts": { "tmMatch": 0, @@ -21957,38 +30283,38 @@ }, { "user": { - "id": 15814293, - "username": "bab0001n", - "fullName": "Oleksandr Suslov (bab0001n)", + "id": 14807238, + "username": "rom1919", + "fullName": "Romualdo Zayas-Lagunas (rom1919)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15814293/medium/08603dbb32bbe3dfd8edb65514eb39bb.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14807238/medium/4e9d7e22b8ba45851bf0d10bf4bb2f68.jpeg", "preTranslated": 0, - "totalCosts": 32 + "totalCosts": 212 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 32 + "totalCosts": 212 }, "translated": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 33, + "default": 179, + "total": 212 }, "targetTranslated": { - "tmMatch": 0, - "default": 30, - "total": 30 + "tmMatch": 40, + "default": 208, + "total": 248 }, "translatedByMt": { - "tmMatch": 0, - "default": 30, - "total": 30 + "tmMatch": 8, + "default": 10, + "total": 18 }, "approved": { "tmMatch": 0, @@ -21996,9 +30322,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 32, - "total": 32 + "tmMatch": 33, + "default": 179, + "total": 212 }, "approvalCosts": { "tmMatch": 0, @@ -22010,38 +30336,38 @@ }, { "user": { - "id": 15725187, - "username": "Juliegwen", - "fullName": "Onyeike Izuchi Juliet (Juliegwen)", + "id": 15885247, + "username": "ct1aic.eth", + "fullName": "Rui Costa (ct1aic.eth)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15725187/medium/61728944dc52ff3364d66c799b58171a.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15885247/medium/cf22113f9226047f8f9868e4774bc4c3.png", "preTranslated": 0, - "totalCosts": 28 + "totalCosts": 25240 }, "languages": [ { - "language": { - "id": "ig", - "name": "Igbo", + "language": { + "id": "pt-PT", + "name": "Portuguese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 25240 }, "translated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 115, + "default": 25125, + "total": 25240 }, "targetTranslated": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 127, + "default": 28165, + "total": 28292 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 37, + "default": 252, + "total": 289 }, "approved": { "tmMatch": 0, @@ -22049,39 +30375,52 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 2, - "total": 2 + "tmMatch": 115, + "default": 25125, + "total": 25240 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15882891, + "username": "R_Tarasiuk", + "fullName": "Ruslana Tarasiuk (R_Tarasiuk)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15882891/medium/8cd2fc58d0070ebfa0ebb8335d82d7a5.png", + "preTranslated": 0, + "totalCosts": 161 + }, + "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 26 + "totalCosts": 161 }, "translated": { "tmMatch": 0, - "default": 26, - "total": 26 + "default": 161, + "total": 161 }, "targetTranslated": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 145, + "total": 145 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 2, + "total": 2 }, "approved": { "tmMatch": 0, @@ -22090,8 +30429,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 26, - "total": 26 + "default": 161, + "total": 161 }, "approvalCosts": { "tmMatch": 0, @@ -22103,38 +30442,38 @@ }, { "user": { - "id": 14787370, - "username": "agulani", - "fullName": "Orkhan Rustamzade (agulani)", + "id": 14103339, + "username": "ryoji.imai", + "fullName": "Ryoji Imai (ryoji.imai)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14787370/medium/9bb8a2d0d244e04f14b523e895b08100.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14103339/medium/fc832d678cca1c9a43f019d8a819f41c.JPG", "preTranslated": 0, - "totalCosts": 7333 + "totalCosts": 4238 }, "languages": [ { "language": { - "id": "az", - "name": "Azerbaijani", + "id": "ja", + "name": "Japanese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7333 + "totalCosts": 4238 }, "translated": { - "tmMatch": 31, - "default": 7302, - "total": 7333 + "tmMatch": 118, + "default": 4120, + "total": 4238 }, "targetTranslated": { - "tmMatch": 34, - "default": 6319, - "total": 6353 + "tmMatch": 311, + "default": 11553, + "total": 11864 }, "translatedByMt": { - "tmMatch": 17, - "default": 5, - "total": 22 + "tmMatch": 5, + "default": 0, + "total": 5 }, "approved": { "tmMatch": 0, @@ -22142,9 +30481,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 31, - "default": 7302, - "total": 7333 + "tmMatch": 118, + "default": 4120, + "total": 4238 }, "approvalCosts": { "tmMatch": 0, @@ -22156,38 +30495,38 @@ }, { "user": { - "id": 13357654, - "username": "osama94", - "fullName": "Osama Abbud (osama94)", + "id": 15954959, + "username": "Sardor_Abdulla", + "fullName": "SARDOR_ABDULLAH (Sardor_Abdulla)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13357654/medium/12f8768a5ebb13bfb12299a6909b90c3.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954959/medium/ddbf77017fa377ffb466b49da1656c3c.png", "preTranslated": 0, - "totalCosts": 475 + "totalCosts": 16887 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "uz", + "name": "Uzbek", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 475 + "totalCosts": 16887 }, "translated": { - "tmMatch": 8, - "default": 467, - "total": 475 + "tmMatch": 69, + "default": 16818, + "total": 16887 }, "targetTranslated": { - "tmMatch": 6, - "default": 458, - "total": 464 + "tmMatch": 76, + "default": 14626, + "total": 14702 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -22195,9 +30534,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 8, - "default": 467, - "total": 475 + "tmMatch": 69, + "default": 16818, + "total": 16887 }, "approvalCosts": { "tmMatch": 0, @@ -22209,38 +30548,38 @@ }, { "user": { - "id": 17361, - "username": "plamarque", - "fullName": "Patrice Lamarque (plamarque)", + "id": 15953195, + "username": "finn79426", + "fullName": "SC (finn79426)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/17361/medium/fecfafa7716ac9d6838b43c31f48f6b9.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15953195/medium/e3fad6fa513cbf663b9e3398a9606faf.png", "preTranslated": 0, - "totalCosts": 773 + "totalCosts": 83 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 773 + "totalCosts": 83 }, "translated": { - "tmMatch": 24, - "default": 749, - "total": 773 + "tmMatch": 0, + "default": 83, + "total": 83 }, "targetTranslated": { - "tmMatch": 30, - "default": 885, - "total": 915 + "tmMatch": 0, + "default": 151, + "total": 151 }, "translatedByMt": { "tmMatch": 0, - "default": 11, - "total": 11 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -22248,9 +30587,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 24, - "default": 749, - "total": 773 + "tmMatch": 0, + "default": 83, + "total": 83 }, "approvalCosts": { "tmMatch": 0, @@ -22262,33 +30601,33 @@ }, { "user": { - "id": 15697637, - "username": "dvorakpavel956", - "fullName": "Pavel Dvořák (dvorakpavel956)", + "id": 15965723, + "username": "sudosu.tw", + "fullName": "SUSU蘇蘇 (sudosu.tw)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15697637/medium/9a71c07e34d704e097df037128f20a26.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965723/medium/13708940b262d15c19d02db2426807a3.jpeg", "preTranslated": 0, - "totalCosts": 11 + "totalCosts": 36 }, "languages": [ { "language": { - "id": "cs", - "name": "Czech", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11 + "totalCosts": 36 }, "translated": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 3, + "default": 33, + "total": 36 }, "targetTranslated": { - "tmMatch": 0, - "default": 1, - "total": 1 + "tmMatch": 3, + "default": 46, + "total": 49 }, "translatedByMt": { "tmMatch": 0, @@ -22301,9 +30640,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 3, + "default": 33, + "total": 36 }, "approvalCosts": { "tmMatch": 0, @@ -22315,33 +30654,33 @@ }, { "user": { - "id": 15843051, - "username": "xnk", - "fullName": "Phil Zhang (xnk)", + "id": 15917585, + "username": "MsgSSS", + "fullName": "Saharsh Shivshankar (MsgSSS)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843051/medium/3b4f74cebd1118c34a383d992260046e_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15917585/medium/c19d5a14c12b582d49c4cc5f3c46c74f.png", "preTranslated": 0, - "totalCosts": 400 + "totalCosts": 46 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "ja", + "name": "Japanese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 400 + "totalCosts": 46 }, "translated": { - "tmMatch": 0, - "default": 400, - "total": 400 + "tmMatch": 2, + "default": 44, + "total": 46 }, "targetTranslated": { - "tmMatch": 0, - "default": 653, - "total": 653 + "tmMatch": 9, + "default": 113, + "total": 122 }, "translatedByMt": { "tmMatch": 0, @@ -22354,9 +30693,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 400, - "total": 400 + "tmMatch": 2, + "default": 44, + "total": 46 }, "approvalCosts": { "tmMatch": 0, @@ -22368,48 +30707,48 @@ }, { "user": { - "id": 15226202, - "username": "pilvijo", - "fullName": "Pilvi Taskinen (pilvijo)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15226202/medium/15d4243c7a2591719761b363c316d12b.png", + "id": 15908639, + "username": "mettal", + "fullName": "Santiago Ibañez (mettal)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15908639/medium/5b02a8579a760cb22bf5f82c312082f2.png", "preTranslated": 0, - "totalCosts": 279 + "totalCosts": 309 }, "languages": [ { "language": { - "id": "fi", - "name": "Finnish", - "userRole": "Translator, Proofreader", + "id": "es-EM", + "name": "Spanish (Modern)", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 279 + "totalCosts": 309 }, "translated": { - "tmMatch": 22, - "default": 257, - "total": 279 + "tmMatch": 3, + "default": 306, + "total": 309 }, "targetTranslated": { - "tmMatch": 13, - "default": 200, - "total": 213 + "tmMatch": 3, + "default": 347, + "total": 350 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 33, + "total": 33 }, "approved": { "tmMatch": 0, "default": 0, - "total": 5195 + "total": 0 }, "translationCosts": { - "tmMatch": 22, - "default": 257, - "total": 279 + "tmMatch": 3, + "default": 306, + "total": 309 }, "approvalCosts": { "tmMatch": 0, @@ -22421,38 +30760,38 @@ }, { "user": { - "id": 15887389, - "username": "iamPeter", - "fullName": "Péter (iamPeter)", + "id": 15984135, + "username": "bula_ma", + "fullName": "Sasa M (bula_ma)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15887389/medium/453e758f89098129ff73a3aef08b8aea_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15984135/medium/29e7898bf771b92246895fa2594fdaac.png", "preTranslated": 0, - "totalCosts": 107 + "totalCosts": 116 }, "languages": [ { "language": { - "id": "hu", - "name": "Hungarian", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 107 + "totalCosts": 116 }, "translated": { - "tmMatch": 15, - "default": 92, - "total": 107 + "tmMatch": 12, + "default": 104, + "total": 116 }, "targetTranslated": { - "tmMatch": 15, - "default": 95, - "total": 110 + "tmMatch": 23, + "default": 174, + "total": 197 }, "translatedByMt": { - "tmMatch": 12, + "tmMatch": 0, "default": 0, - "total": 12 + "total": 0 }, "approved": { "tmMatch": 0, @@ -22460,9 +30799,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 15, - "default": 92, - "total": 107 + "tmMatch": 12, + "default": 104, + "total": 116 }, "approvalCosts": { "tmMatch": 0, @@ -22474,38 +30813,38 @@ }, { "user": { - "id": 15636483, - "username": "qrizwani", - "fullName": "Qamar Rizwani (qrizwani)", + "id": 15966007, + "username": "0xselimc", + "fullName": "Selim C (0xselimc)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15636483/medium/36438daccc42652147c1b8977cab1415.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966007/medium/6008a158d741536a305a81bd295ab407.jpeg", "preTranslated": 0, - "totalCosts": 111 + "totalCosts": 14459 }, "languages": [ { "language": { - "id": "ur-IN", - "name": "Urdu (India)", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 111 + "totalCosts": 14459 }, "translated": { - "tmMatch": 2, - "default": 109, - "total": 111 + "tmMatch": 41, + "default": 14418, + "total": 14459 }, "targetTranslated": { - "tmMatch": 2, - "default": 154, - "total": 156 + "tmMatch": 40, + "default": 12174, + "total": 12214 }, "translatedByMt": { - "tmMatch": 1, - "default": 1, - "total": 2 + "tmMatch": 15, + "default": 0, + "total": 15 }, "approved": { "tmMatch": 0, @@ -22513,9 +30852,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 109, - "total": 111 + "tmMatch": 41, + "default": 14418, + "total": 14459 }, "approvalCosts": { "tmMatch": 0, @@ -22527,38 +30866,38 @@ }, { "user": { - "id": 15879335, - "username": "reecertv", - "fullName": "ReecerTV (reecertv)", + "id": 15082707, + "username": "selcuk45", + "fullName": "Selçuk (selcuk45)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15879335/medium/4e7ff0320d66f0e6f31ec6aeab94353d.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15082707/medium/1422c6237f35e4d0e31e08554a233472.jpeg", "preTranslated": 0, - "totalCosts": 7 + "totalCosts": 32205 }, "languages": [ { "language": { - "id": "lb", - "name": "Luxembourgish", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7 + "totalCosts": 32205 }, "translated": { - "tmMatch": 0, - "default": 7, - "total": 7 + "tmMatch": 185, + "default": 32020, + "total": 32205 }, "targetTranslated": { - "tmMatch": 0, - "default": 7, - "total": 7 + "tmMatch": 180, + "default": 26787, + "total": 26967 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 31, + "default": 2, + "total": 33 }, "approved": { "tmMatch": 0, @@ -22566,9 +30905,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 7, - "total": 7 + "tmMatch": 185, + "default": 32020, + "total": 32205 }, "approvalCosts": { "tmMatch": 0, @@ -22580,13 +30919,13 @@ }, { "user": { - "id": 15855621, - "username": "subriper", - "fullName": "Reza Hazrati (subriper)", + "id": 15967353, + "username": "sipbikardi", + "fullName": "Sepehr Hashemi (sipbikardi)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15855621/medium/ab1a2868b313e6dfc113a754286d37d5.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967353/medium/bdbc4e456ff62160eead47d69c036137.jpg", "preTranslated": 0, - "totalCosts": 303 + "totalCosts": 5150 }, "languages": [ { @@ -22596,22 +30935,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 303 + "totalCosts": 5150 }, "translated": { - "tmMatch": 14, - "default": 289, - "total": 303 + "tmMatch": 71, + "default": 5079, + "total": 5150 }, "targetTranslated": { - "tmMatch": 20, - "default": 411, - "total": 431 + "tmMatch": 67, + "default": 6140, + "total": 6207 }, "translatedByMt": { - "tmMatch": 7, - "default": 3, - "total": 10 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -22619,9 +30958,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 14, - "default": 289, - "total": 303 + "tmMatch": 71, + "default": 5079, + "total": 5150 }, "approvalCosts": { "tmMatch": 0, @@ -22633,38 +30972,38 @@ }, { "user": { - "id": 14777654, - "username": "rikcags", - "fullName": "Ricardo Gaxiola (rikcags)", + "id": 15769467, + "username": "seunbayo", + "fullName": "Seunbayo (seunbayo)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14777654/medium/2b82111d83c35beff3f05476b3a65b2f.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15769467/medium/8532abcb64313bbe86bddfbe926187ea_default.png", "preTranslated": 0, - "totalCosts": 349 + "totalCosts": 5914 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 349 + "totalCosts": 5914 }, "translated": { - "tmMatch": 8, - "default": 341, - "total": 349 + "tmMatch": 7, + "default": 5907, + "total": 5914 }, "targetTranslated": { - "tmMatch": 8, - "default": 348, - "total": 356 + "tmMatch": 7, + "default": 6488, + "total": 6495 }, "translatedByMt": { - "tmMatch": 1, - "default": 12, - "total": 13 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -22672,9 +31011,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 8, - "default": 341, - "total": 349 + "tmMatch": 7, + "default": 5907, + "total": 5914 }, "approvalCosts": { "tmMatch": 0, @@ -22686,33 +31025,33 @@ }, { "user": { - "id": 14553216, - "username": "rielychen", - "fullName": "Riely (rielychen)", + "id": 15328532, + "username": "Seung_Gi_Kim", + "fullName": "Seung-Gi Kim (Seung_Gi_Kim)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14553216/medium/ff7357a18e524ec40facc964cb2d15bc.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15328532/medium/78e4ff5d50b928c2aea8ff50b2ff1c39.jpg", "preTranslated": 0, - "totalCosts": 55 + "totalCosts": 303 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "ko", + "name": "Korean", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 55 + "totalCosts": 303 }, "translated": { - "tmMatch": 12, - "default": 43, - "total": 55 + "tmMatch": 0, + "default": 303, + "total": 303 }, "targetTranslated": { - "tmMatch": 18, - "default": 76, - "total": 94 + "tmMatch": 0, + "default": 248, + "total": 248 }, "translatedByMt": { "tmMatch": 0, @@ -22725,9 +31064,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 12, - "default": 43, - "total": 55 + "tmMatch": 0, + "default": 303, + "total": 303 }, "approvalCosts": { "tmMatch": 0, @@ -22739,33 +31078,33 @@ }, { "user": { - "id": 15775641, - "username": "mariya.vu", - "fullName": "Riim Channel (mariya.vu)", + "id": 15953233, + "username": "shakibashamloo72", + "fullName": "Shakiba Shamloo (shakibashamloo72)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15775641/medium/501fe7e00e17b6df170107ae80b51989.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15953233/medium/b0e24acd4c4cbb051af9f719a6cb55c4.jpeg", "preTranslated": 0, - "totalCosts": 30 + "totalCosts": 108 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 30 + "totalCosts": 108 }, "translated": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 108, + "total": 108 }, "targetTranslated": { "tmMatch": 0, - "default": 26, - "total": 26 + "default": 153, + "total": 153 }, "translatedByMt": { "tmMatch": 0, @@ -22779,8 +31118,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 108, + "total": 108 }, "approvalCosts": { "tmMatch": 0, @@ -22792,33 +31131,33 @@ }, { "user": { - "id": 15843399, - "username": "tavaresrocio4", - "fullName": "Rocio Tavares (tavaresrocio4)", + "id": 15967507, + "username": "sh0xsh", + "fullName": "Shayan (sh0xsh)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843399/medium/b61f3285005db8161a578d5c4c9005f8.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967507/medium/544e4d4c4489a80de9b4aa2dbba72cae.jpg", "preTranslated": 0, - "totalCosts": 31 + "totalCosts": 230 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 31 + "totalCosts": 230 }, "translated": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 62, + "default": 168, + "total": 230 }, "targetTranslated": { - "tmMatch": 0, - "default": 34, - "total": 34 + "tmMatch": 87, + "default": 250, + "total": 337 }, "translatedByMt": { "tmMatch": 0, @@ -22831,9 +31170,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 62, + "default": 168, + "total": 230 }, "approvalCosts": { "tmMatch": 0, @@ -22845,38 +31184,38 @@ }, { "user": { - "id": 15885247, - "username": "ct1aic.eth", - "fullName": "Rui Costa (ct1aic.eth)", + "id": 25293, + "username": "shayanbahal", + "fullName": "Shayan Eskandari (shayanbahal)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15885247/medium/cf22113f9226047f8f9868e4774bc4c3.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/25293/medium/b5b185e599b3a3e36bb34e221af0bb29_default.png", "preTranslated": 0, - "totalCosts": 5629 + "totalCosts": 14 }, "languages": [ { "language": { - "id": "pt-PT", - "name": "Portuguese", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5629 + "totalCosts": 14 }, "translated": { - "tmMatch": 203, - "default": 5426, - "total": 5629 + "tmMatch": 0, + "default": 14, + "total": 14 }, "targetTranslated": { - "tmMatch": 216, - "default": 5931, - "total": 6147 + "tmMatch": 0, + "default": 19, + "total": 19 }, "translatedByMt": { - "tmMatch": 38, - "default": 29, - "total": 67 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -22884,9 +31223,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 203, - "default": 5426, - "total": 5629 + "tmMatch": 0, + "default": 14, + "total": 14 }, "approvalCosts": { "tmMatch": 0, @@ -22898,38 +31237,38 @@ }, { "user": { - "id": 14691832, - "username": "imrulo.eth", - "fullName": "Ruslan Ferrales (imrulo.eth)", + "id": 15837955, + "username": "Magdalena_", + "fullName": "Shiela Mae Quiros (Magdalena_)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14691832/medium/edac3ef58631bde43e40ac815ef18dc5.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15837955/medium/8c0a833a266fd86e17f6e6ce9592278d.jpg", "preTranslated": 0, - "totalCosts": 369 + "totalCosts": 51156 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "fil", + "name": "Filipino", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 369 + "totalCosts": 51156 }, "translated": { - "tmMatch": 33, - "default": 336, - "total": 369 + "tmMatch": 146, + "default": 51010, + "total": 51156 }, "targetTranslated": { - "tmMatch": 40, - "default": 379, - "total": 419 + "tmMatch": 161, + "default": 61726, + "total": 61887 }, "translatedByMt": { - "tmMatch": 0, - "default": 19, - "total": 19 + "tmMatch": 31, + "default": 13, + "total": 44 }, "approved": { "tmMatch": 0, @@ -22937,9 +31276,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 33, - "default": 336, - "total": 369 + "tmMatch": 146, + "default": 51010, + "total": 51156 }, "approvalCosts": { "tmMatch": 0, @@ -22951,38 +31290,38 @@ }, { "user": { - "id": 15790907, - "username": "rioblog", - "fullName": "Ryo Kambayashi (rioblog)", + "id": 16007311, + "username": "Swiftevo", + "fullName": "Shift (Swiftevo)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15790907/medium/a8e92669bcd0e8cbe81cba6ad60b6163.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16007311/medium/47584f21b0a63d55da89c106d20825e9.png", "preTranslated": 0, - "totalCosts": 1684 + "totalCosts": 95 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1684 + "totalCosts": 95 }, "translated": { - "tmMatch": 15, - "default": 1669, - "total": 1684 + "tmMatch": 26, + "default": 69, + "total": 95 }, "targetTranslated": { - "tmMatch": 32, - "default": 4612, - "total": 4644 + "tmMatch": 47, + "default": 161, + "total": 208 }, "translatedByMt": { - "tmMatch": 4, - "default": 81, - "total": 85 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -22990,9 +31329,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 15, - "default": 1669, - "total": 1684 + "tmMatch": 26, + "default": 69, + "total": 95 }, "approvalCosts": { "tmMatch": 0, @@ -23004,13 +31343,13 @@ }, { "user": { - "id": 15835983, - "username": "saday18hernandez2004", - "fullName": "Saday Hernández (saday18hernandez2004)", + "id": 15903171, + "username": "SidWeb", + "fullName": "Sidney Weber Salas (SidWeb)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15835983/medium/8c15b511414ddfacf15479ca54e848c5.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15903171/medium/16aea0b15b034302e6e656749a0a7b8e.jpg", "preTranslated": 0, - "totalCosts": 174 + "totalCosts": 6227 }, "languages": [ { @@ -23020,22 +31359,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 174 + "totalCosts": 6227 }, "translated": { - "tmMatch": 0, - "default": 174, - "total": 174 + "tmMatch": 37, + "default": 6190, + "total": 6227 }, "targetTranslated": { - "tmMatch": 0, - "default": 212, - "total": 212 + "tmMatch": 49, + "default": 6948, + "total": 6997 }, "translatedByMt": { "tmMatch": 0, - "default": 150, - "total": 150 + "default": 9, + "total": 9 }, "approved": { "tmMatch": 0, @@ -23043,9 +31382,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 174, - "total": 174 + "tmMatch": 37, + "default": 6190, + "total": 6227 }, "approvalCosts": { "tmMatch": 0, @@ -23057,38 +31396,38 @@ }, { "user": { - "id": 14914333, - "username": "SamB", - "fullName": "Samira Bourai (SamB)", + "id": 15956275, + "username": "Vertual", + "fullName": "Sok (Vertual)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14914333/medium/9fe76315a573f9f4e574d0260b5e5b02.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956275/medium/b99671088004185399469853a0736adb.png", "preTranslated": 0, - "totalCosts": 73 + "totalCosts": 722 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "sq", + "name": "Albanian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 73 + "totalCosts": 705 }, "translated": { - "tmMatch": 0, - "default": 73, - "total": 73 + "tmMatch": 18, + "default": 687, + "total": 705 }, "targetTranslated": { - "tmMatch": 0, - "default": 57, - "total": 57 + "tmMatch": 21, + "default": 776, + "total": 797 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 14, + "default": 2, + "total": 16 }, "approved": { "tmMatch": 0, @@ -23096,47 +31435,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 73, - "total": 73 + "tmMatch": 18, + "default": 687, + "total": 705 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15888443, - "username": "ou465557", - "fullName": "San Ou (ou465557)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15888443/medium/7abcc98b1cbbe7887836bec066883263.png", - "preTranslated": 0, - "totalCosts": 13 - }, - "languages": [ + }, { "language": { - "id": "af", - "name": "Afrikaans", + "id": "it", + "name": "Italian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10 + "totalCosts": 17 }, "translated": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 17, + "total": 17 }, "targetTranslated": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 17, + "total": 17 }, "translatedByMt": { "tmMatch": 0, @@ -23150,38 +31476,51 @@ }, "translationCosts": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 17, + "total": 17 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 13558335, + "username": "solarisonsparc", + "fullName": "SolarisSPARC (solarisonsparc)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13558335/medium/89e219a22d47ed92ce7c2b6864d99460.jpg", + "preTranslated": 0, + "totalCosts": 51 + }, + "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "ja", + "name": "Japanese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3 + "totalCosts": 51 }, "translated": { "tmMatch": 3, - "default": 0, - "total": 3 + "default": 48, + "total": 51 }, "targetTranslated": { - "tmMatch": 3, - "default": 0, - "total": 3 + "tmMatch": 11, + "default": 146, + "total": 157 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, @@ -23190,8 +31529,8 @@ }, "translationCosts": { "tmMatch": 3, - "default": 0, - "total": 3 + "default": 48, + "total": 51 }, "approvalCosts": { "tmMatch": 0, @@ -23203,38 +31542,38 @@ }, { "user": { - "id": 15830189, - "username": "Satorizh", - "fullName": "Satori (Satorizh)", + "id": 15964403, + "username": "Starbit30", + "fullName": "Stanislav Kupka (Starbit30)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15830189/medium/b84dabb43baa1b6f60b16a9ae4b91ca3.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964403/medium/1fcae011a1906f2432d013214ff209cf_default.png", "preTranslated": 0, - "totalCosts": 482 + "totalCosts": 5887 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "cs", + "name": "Czech", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 482 + "totalCosts": 5887 }, "translated": { - "tmMatch": 0, - "default": 482, - "total": 482 + "tmMatch": 7, + "default": 5880, + "total": 5887 }, "targetTranslated": { - "tmMatch": 0, - "default": 783, - "total": 783 + "tmMatch": 8, + "default": 5154, + "total": 5162 }, "translatedByMt": { "tmMatch": 0, - "default": 26, - "total": 26 + "default": 13, + "total": 13 }, "approved": { "tmMatch": 0, @@ -23242,9 +31581,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 482, - "total": 482 + "tmMatch": 7, + "default": 5880, + "total": 5887 }, "approvalCosts": { "tmMatch": 0, @@ -23256,38 +31595,38 @@ }, { "user": { - "id": 15819191, - "username": "saumitrakapoor24", - "fullName": "Saumitra Kapoor (saumitrakapoor24)", + "id": 15532451, + "username": "hmsc", + "fullName": "Sunny Cheng (hmsc)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15819191/medium/c14241bc9428963993d49580eb0c0eee.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15532451/medium/1558c22671c8674e0f77412238047eb8_default.png", "preTranslated": 0, - "totalCosts": 31 + "totalCosts": 4178 }, "languages": [ { "language": { - "id": "hi", - "name": "Hindi", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 31 + "totalCosts": 4178 }, "translated": { - "tmMatch": 4, - "default": 27, - "total": 31 + "tmMatch": 92, + "default": 4086, + "total": 4178 }, "targetTranslated": { - "tmMatch": 7, - "default": 49, - "total": 56 + "tmMatch": 155, + "default": 6649, + "total": 6804 }, "translatedByMt": { - "tmMatch": 3, + "tmMatch": 0, "default": 0, - "total": 3 + "total": 0 }, "approved": { "tmMatch": 0, @@ -23295,9 +31634,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 27, - "total": 31 + "tmMatch": 92, + "default": 4086, + "total": 4178 }, "approvalCosts": { "tmMatch": 0, @@ -23309,38 +31648,38 @@ }, { "user": { - "id": 15455500, - "username": "SebastianSupreme", - "fullName": "Sebastian Köller (SebastianSupreme)", + "id": 16023432, + "username": "SyafaHadyan", + "fullName": "Syafa Hadyan Rasendriya (SyafaHadyan)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15455500/medium/529d1b028e7c3d98b67d4008773a75a9.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16023432/medium/c69ac661dc63b793577afb96f6b8986d.jpg", "preTranslated": 0, - "totalCosts": 586 + "totalCosts": 14 }, "languages": [ { "language": { - "id": "de", - "name": "German", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 586 + "totalCosts": 14 }, "translated": { - "tmMatch": 32, - "default": 554, - "total": 586 + "tmMatch": 0, + "default": 14, + "total": 14 }, "targetTranslated": { - "tmMatch": 29, - "default": 535, - "total": 564 + "tmMatch": 0, + "default": 12, + "total": 12 }, "translatedByMt": { - "tmMatch": 19, - "default": 75, - "total": 94 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -23348,9 +31687,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 32, - "default": 554, - "total": 586 + "tmMatch": 0, + "default": 14, + "total": 14 }, "approvalCosts": { "tmMatch": 0, @@ -23362,38 +31701,38 @@ }, { "user": { - "id": 14935269, - "username": "medsemo334", - "fullName": "Semo Med (medsemo334)", + "id": 15906807, + "username": "phamsihoi.1391980", + "fullName": "SĨ HỘI PHAN (phamsihoi.1391980)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14935269/medium/a19bc3c2b95ffb85db430baeba1e249d.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15906807/medium/c9cfcb1ece14fcbc9f5e16aab3e29604.jpeg", "preTranslated": 0, - "totalCosts": 15 + "totalCosts": 63 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15 + "totalCosts": 63 }, "translated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 27, + "default": 36, + "total": 63 }, "targetTranslated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 27, + "default": 36, + "total": 63 }, "translatedByMt": { "tmMatch": 0, - "default": 15, - "total": 15 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -23401,9 +31740,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 27, + "default": 36, + "total": 63 }, "approvalCosts": { "tmMatch": 0, @@ -23415,13 +31754,13 @@ }, { "user": { - "id": 15828035, - "username": "sergiosolmonte", - "fullName": "Sergio Solmonte (sergiosolmonte)", + "id": 15976521, + "username": "TDzaa", + "fullName": "TDzaa", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15828035/medium/548c400ee04059c00acb6a8c97d03f3b.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15976521/medium/8414ee27520d071a1f2d1a4b63f64f08.png", "preTranslated": 0, - "totalCosts": 275 + "totalCosts": 137 }, "languages": [ { @@ -23431,22 +31770,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 275 + "totalCosts": 137 }, "translated": { "tmMatch": 0, - "default": 275, - "total": 275 + "default": 137, + "total": 137 }, "targetTranslated": { "tmMatch": 0, - "default": 283, - "total": 283 + "default": 153, + "total": 153 }, "translatedByMt": { "tmMatch": 0, - "default": 67, - "total": 67 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -23455,8 +31794,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 275, - "total": 275 + "default": 137, + "total": 137 }, "approvalCosts": { "tmMatch": 0, @@ -23468,33 +31807,33 @@ }, { "user": { - "id": 15769467, - "username": "seunbayo", - "fullName": "Seunbayo (seunbayo)", + "id": 15956561, + "username": "taxir.abjadao", + "fullName": "Taxir Initiative (taxir.abjadao)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15769467/medium/8532abcb64313bbe86bddfbe926187ea_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956561/medium/d3c5967663d9190fbf70f6b62b29ffd5.jpeg", "preTranslated": 0, - "totalCosts": 3094 + "totalCosts": 7991 }, "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3094 + "totalCosts": 7991 }, "translated": { - "tmMatch": 105, - "default": 2989, - "total": 3094 + "tmMatch": 14, + "default": 7977, + "total": 7991 }, "targetTranslated": { - "tmMatch": 109, - "default": 3147, - "total": 3256 + "tmMatch": 12, + "default": 7414, + "total": 7426 }, "translatedByMt": { "tmMatch": 0, @@ -23507,9 +31846,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 105, - "default": 2989, - "total": 3094 + "tmMatch": 14, + "default": 7977, + "total": 7991 }, "approvalCosts": { "tmMatch": 0, @@ -23521,33 +31860,33 @@ }, { "user": { - "id": 15328532, - "username": "Seung_Gi_Kim", - "fullName": "Seung-Gi Kim (Seung_Gi_Kim)", + "id": 15652697, + "username": "ThewsyRum", + "fullName": "ThewsRum (ThewsyRum)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15328532/medium/78e4ff5d50b928c2aea8ff50b2ff1c39.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15652697/medium/416cd66d87d185091af51f9aecb60262.jpeg", "preTranslated": 0, - "totalCosts": 277 + "totalCosts": 235 }, "languages": [ { "language": { - "id": "ko", - "name": "Korean", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 277 + "totalCosts": 235 }, "translated": { "tmMatch": 7, - "default": 270, - "total": 277 + "default": 228, + "total": 235 }, "targetTranslated": { - "tmMatch": 7, - "default": 233, - "total": 240 + "tmMatch": 8, + "default": 284, + "total": 292 }, "translatedByMt": { "tmMatch": 0, @@ -23561,8 +31900,8 @@ }, "translationCosts": { "tmMatch": 7, - "default": 270, - "total": 277 + "default": 228, + "total": 235 }, "approvalCosts": { "tmMatch": 0, @@ -23574,38 +31913,38 @@ }, { "user": { - "id": 15436178, - "username": "dbadoy", - "fullName": "Seungbae Yu (dbadoy)", + "id": 15955919, + "username": "tiana.l", + "fullName": "Tiana L (tiana.l)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15436178/medium/2b6c58faa6bb8607c4a43cfc42e18b29.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955919/medium/c2d92c5e4c9780e2111d4ef7cd7e5f0f.png", "preTranslated": 0, - "totalCosts": 813 + "totalCosts": 18 }, "languages": [ { "language": { - "id": "ko", - "name": "Korean", + "id": "af", + "name": "Afrikaans", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 813 + "totalCosts": 9 }, "translated": { - "tmMatch": 56, - "default": 757, - "total": 813 + "tmMatch": 0, + "default": 9, + "total": 9 }, "targetTranslated": { - "tmMatch": 43, - "default": 577, - "total": 620 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { - "tmMatch": 32, - "default": 2, - "total": 34 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -23613,9 +31952,49 @@ "total": 0 }, "translationCosts": { - "tmMatch": 56, - "default": 757, - "total": 813 + "tmMatch": 0, + "default": 9, + "total": 9 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 9 + }, + "translated": { + "tmMatch": 9, + "default": 0, + "total": 9 + }, + "targetTranslated": { + "tmMatch": 9, + "default": 0, + "total": 9 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 9, + "default": 0, + "total": 9 }, "approvalCosts": { "tmMatch": 0, @@ -23627,33 +32006,33 @@ }, { "user": { - "id": 12620843, - "username": "madhead", - "fullName": "Siarhei Krukau (madhead)", + "id": 15848681, + "username": "Lovety", + "fullName": "Tim (Lovety4) (Lovety)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/12620843/medium/81329757ea6e052c0c24d2c27d2212e4.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15848681/medium/9b0875d2b2a1c1259f9a35b2a7a651ee.jpeg", "preTranslated": 0, - "totalCosts": 25 + "totalCosts": 102 }, "languages": [ { "language": { - "id": "be", - "name": "Belarusian", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 25 + "totalCosts": 102 }, "translated": { "tmMatch": 1, - "default": 24, - "total": 25 + "default": 101, + "total": 102 }, "targetTranslated": { - "tmMatch": 1, - "default": 30, - "total": 31 + "tmMatch": 2, + "default": 127, + "total": 129 }, "translatedByMt": { "tmMatch": 0, @@ -23667,8 +32046,8 @@ }, "translationCosts": { "tmMatch": 1, - "default": 24, - "total": 25 + "default": 101, + "total": 102 }, "approvalCosts": { "tmMatch": 0, @@ -23680,13 +32059,13 @@ }, { "user": { - "id": 15840281, - "username": "vcsofi", - "fullName": "Sofía Villarreal (vcsofi)", + "id": 15967289, + "username": "pollocastro", + "fullName": "Tomás Castro (pollocastro)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15840281/medium/fe0cdb5b21b138b8b32693d382c83cc4.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967289/medium/1753e7e93a66aeb2665fd2ac7d73c6ac.jpeg", "preTranslated": 0, - "totalCosts": 11 + "totalCosts": 71 }, "languages": [ { @@ -23696,17 +32075,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 11 + "totalCosts": 71 }, "translated": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 3, + "default": 68, + "total": 71 }, "targetTranslated": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 2, + "default": 90, + "total": 92 }, "translatedByMt": { "tmMatch": 0, @@ -23719,9 +32098,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 3, + "default": 68, + "total": 71 }, "approvalCosts": { "tmMatch": 0, @@ -23733,33 +32112,33 @@ }, { "user": { - "id": 14036968, - "username": "tahasetri", - "fullName": "SolTan Taha (tahasetri)", + "id": 16004379, + "username": "tropicaldog17", + "fullName": "Tropical Dog (tropicaldog17)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14036968/medium/94af0a032eb31b7f8c465a1a05d15cee.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004379/medium/012ac515fe09fb0e6b08e4d06d299460.jpeg", "preTranslated": 0, - "totalCosts": 10 + "totalCosts": 17 }, "languages": [ { "language": { - "id": "af", - "name": "Afrikaans", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10 + "totalCosts": 17 }, "translated": { - "tmMatch": 0, - "default": 10, - "total": 10 + "tmMatch": 0, + "default": 17, + "total": 17 }, "targetTranslated": { "tmMatch": 0, - "default": 6, - "total": 6 + "default": 29, + "total": 29 }, "translatedByMt": { "tmMatch": 0, @@ -23773,8 +32152,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 17, + "total": 17 }, "approvalCosts": { "tmMatch": 0, @@ -23786,38 +32165,38 @@ }, { "user": { - "id": 15854595, - "username": "badillos1998", - "fullName": "Steven Badillo (badillos1998)", + "id": 15954379, + "username": "wqqhou", + "fullName": "Tse Hou (wqqhou)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15854595/medium/5237fb21647f11d9482225a1295ed2d9.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954379/medium/3ece52775e2d2a29f1f9195332d988d9.jpeg", "preTranslated": 0, - "totalCosts": 1503 + "totalCosts": 211 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1503 + "totalCosts": 211 }, "translated": { - "tmMatch": 1, - "default": 1502, - "total": 1503 + "tmMatch": 2, + "default": 209, + "total": 211 }, "targetTranslated": { - "tmMatch": 1, - "default": 1540, - "total": 1541 + "tmMatch": 3, + "default": 390, + "total": 393 }, "translatedByMt": { "tmMatch": 0, - "default": 836, - "total": 836 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -23825,9 +32204,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 1502, - "total": 1503 + "tmMatch": 2, + "default": 209, + "total": 211 }, "approvalCosts": { "tmMatch": 0, @@ -23839,38 +32218,38 @@ }, { "user": { - "id": 14707408, - "username": "Just-Stev", - "fullName": "Steven Me (Just-Stev)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14707408/medium/06bb638d445604925d0bcaa58768558b.png", + "id": 15924437, + "username": "valentinodelicioussbircea", + "fullName": "Valentino Delicious Sbircea (valentinodelicioussbircea)", + "userRole": "Blocked", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15924437/medium/c0a387dd1763cc8cfe3727983a964e1c.jpeg", "preTranslated": 0, - "totalCosts": 176 + "totalCosts": 26 }, "languages": [ { "language": { - "id": "de", - "name": "German", - "userRole": "Translator", + "id": "sv-SE", + "name": "Swedish", + "userRole": "Blocked", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 176 + "totalCosts": 8 }, "translated": { - "tmMatch": 0, - "default": 176, - "total": 176 + "tmMatch": 1, + "default": 7, + "total": 8 }, "targetTranslated": { - "tmMatch": 0, - "default": 176, - "total": 176 + "tmMatch": 1, + "default": 7, + "total": 8 }, "translatedByMt": { "tmMatch": 0, - "default": 54, - "total": 54 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -23878,47 +32257,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 176, - "total": 176 + "tmMatch": 1, + "default": 7, + "total": 8 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 13249257, - "username": "SuperDelphi", - "fullName": "SuperDelphi", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13249257/medium/f566e07e86e26f5911df1ddf5fae796d.png", - "preTranslated": 0, - "totalCosts": 690 - }, - "languages": [ + }, { "language": { - "id": "fr", - "name": "French", - "userRole": "Translator", + "id": "uk", + "name": "Ukrainian", + "userRole": "Blocked", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 690 + "totalCosts": 18 }, "translated": { - "tmMatch": 23, - "default": 667, - "total": 690 + "tmMatch": 0, + "default": 18, + "total": 18 }, "targetTranslated": { - "tmMatch": 24, - "default": 799, - "total": 823 + "tmMatch": 0, + "default": 18, + "total": 18 }, "translatedByMt": { "tmMatch": 0, @@ -23931,9 +32297,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 23, - "default": 667, - "total": 690 + "tmMatch": 0, + "default": 18, + "total": 18 }, "approvalCosts": { "tmMatch": 0, @@ -23945,33 +32311,33 @@ }, { "user": { - "id": 13731191, - "username": "syahmin", - "fullName": "Syahmin Sukhairi (syahmin)", + "id": 15965347, + "username": "vnnv", + "fullName": "Vanina Ivanova (vnnv)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13731191/medium/200727f4ec634eec8c5b3499cf6863db_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15965347/medium/cf9d2952b5131e4dc1454a2dfdbcfcbf.png", "preTranslated": 0, - "totalCosts": 764 + "totalCosts": 1404 }, "languages": [ { "language": { - "id": "id", - "name": "Indonesian", + "id": "bg", + "name": "Bulgarian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 764 + "totalCosts": 1404 }, "translated": { - "tmMatch": 0, - "default": 764, - "total": 764 + "tmMatch": 9, + "default": 1395, + "total": 1404 }, "targetTranslated": { - "tmMatch": 0, - "default": 669, - "total": 669 + "tmMatch": 9, + "default": 1426, + "total": 1435 }, "translatedByMt": { "tmMatch": 0, @@ -23984,9 +32350,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 764, - "total": 764 + "tmMatch": 9, + "default": 1395, + "total": 1404 }, "approvalCosts": { "tmMatch": 0, @@ -23998,33 +32364,33 @@ }, { "user": { - "id": 15788035, - "username": "jscaothe", - "fullName": "The Cao Manh (jscaothe)", + "id": 16010703, + "username": "vero_vero03", + "fullName": "Veronica campos (vero_vero03)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15788035/medium/d41e12c03d23663a215cb0ebef64d4d1.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16010703/medium/97c299201d2fe2be8c7fef377883e484_default.png", "preTranslated": 0, - "totalCosts": 31 + "totalCosts": 117 }, "languages": [ { "language": { - "id": "vi", - "name": "Vietnamese", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 31 + "totalCosts": 117 }, "translated": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 46, + "default": 71, + "total": 117 }, "targetTranslated": { - "tmMatch": 0, - "default": 43, - "total": 43 + "tmMatch": 53, + "default": 107, + "total": 160 }, "translatedByMt": { "tmMatch": 0, @@ -24037,9 +32403,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 31, - "total": 31 + "tmMatch": 46, + "default": 71, + "total": 117 }, "approvalCosts": { "tmMatch": 0, @@ -24051,38 +32417,38 @@ }, { "user": { - "id": 15783067, - "username": "ThomasPZK", - "fullName": "Thomas Paruzynski (ThomasPZK)", + "id": 15869379, + "username": "viktoriia.mykytiuk02", + "fullName": "Viktoriia Mykytiuk (viktoriia.mykytiuk02)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15783067/medium/75942427fb0393a1f3e95aa383e69b1c_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15869379/medium/674749c0e8809c8963f1f2252ea54f75.png", "preTranslated": 0, - "totalCosts": 1865 + "totalCosts": 1855 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1865 + "totalCosts": 1855 }, "translated": { - "tmMatch": 0, - "default": 1865, - "total": 1865 + "tmMatch": 2, + "default": 1853, + "total": 1855 }, "targetTranslated": { - "tmMatch": 0, - "default": 2116, - "total": 2116 + "tmMatch": 2, + "default": 1618, + "total": 1620 }, "translatedByMt": { - "tmMatch": 0, - "default": 353, - "total": 353 + "tmMatch": 1, + "default": 97, + "total": 98 }, "approved": { "tmMatch": 0, @@ -24090,9 +32456,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 1865, - "total": 1865 + "tmMatch": 2, + "default": 1853, + "total": 1855 }, "approvalCosts": { "tmMatch": 0, @@ -24104,33 +32470,33 @@ }, { "user": { - "id": 15747719, - "username": "Krejca27", - "fullName": "Tomas Krejci (Krejca27)", + "id": 15957415, + "username": "viniblack", + "fullName": "Vini Black (viniblack)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15747719/medium/63cece7cbd58b3d1c0a5904f5e160618.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957415/medium/4a20bc04c8d7834f8f7b7e76ad4c7f97.jpeg", "preTranslated": 0, - "totalCosts": 34 + "totalCosts": 62 }, "languages": [ { "language": { - "id": "cs", - "name": "Czech", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 34 + "totalCosts": 62 }, "translated": { "tmMatch": 0, - "default": 34, - "total": 34 + "default": 62, + "total": 62 }, "targetTranslated": { "tmMatch": 0, - "default": 34, - "total": 34 + "default": 65, + "total": 65 }, "translatedByMt": { "tmMatch": 0, @@ -24144,8 +32510,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 34, - "total": 34 + "default": 62, + "total": 62 }, "approvalCosts": { "tmMatch": 0, @@ -24157,38 +32523,38 @@ }, { "user": { - "id": 15378350, - "username": "outlomaru", - "fullName": "Toshihide Mitumaru (outlomaru)", + "id": 15955989, + "username": "wendyteo", + "fullName": "WY Teo (wendyteo)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15378350/medium/f438c207621a284d4058cca58dba9e93.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955989/medium/59ea65ec251d30482d55805d45572493.png", "preTranslated": 0, - "totalCosts": 6 + "totalCosts": 21475 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", + "id": "ms", + "name": "Malay", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 6 + "totalCosts": 21475 }, "translated": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 73, + "default": 21402, + "total": 21475 }, "targetTranslated": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 79, + "default": 19869, + "total": 19948 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 33, + "default": 3, + "total": 36 }, "approved": { "tmMatch": 0, @@ -24196,9 +32562,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 73, + "default": 21402, + "total": 21475 }, "approvalCosts": { "tmMatch": 0, @@ -24210,38 +32576,38 @@ }, { "user": { - "id": 15773245, - "username": "Tykoo", - "fullName": "Tykoo", + "id": 15967185, + "username": "waseemnaik", + "fullName": "Waseem Naik (waseemnaik)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15773245/medium/68e99c266c13a7685c01896596d05b7d.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967185/medium/8544c16b7d24e687e63334d42c70d6dd.png", "preTranslated": 0, - "totalCosts": 2310 + "totalCosts": 37718 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "hi", + "name": "Hindi", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1544 + "totalCosts": 16742 }, "translated": { - "tmMatch": 65, - "default": 1479, - "total": 1544 + "tmMatch": 64, + "default": 16678, + "total": 16742 }, "targetTranslated": { - "tmMatch": 113, - "default": 2186, - "total": 2299 + "tmMatch": 122, + "default": 30891, + "total": 31013 }, "translatedByMt": { - "tmMatch": 59, - "default": 82, - "total": 141 + "tmMatch": 3, + "default": 0, + "total": 3 }, "approved": { "tmMatch": 0, @@ -24249,9 +32615,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 65, - "default": 1479, - "total": 1544 + "tmMatch": 64, + "default": 16678, + "total": 16742 }, "approvalCosts": { "tmMatch": 0, @@ -24261,27 +32627,27 @@ }, { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "kn", + "name": "Kannada", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 766 + "totalCosts": 20976 }, "translated": { - "tmMatch": 0, - "default": 766, - "total": 766 + "tmMatch": 64, + "default": 20912, + "total": 20976 }, "targetTranslated": { - "tmMatch": 0, - "default": 1245, - "total": 1245 + "tmMatch": 120, + "default": 32742, + "total": 32862 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 8, + "default": 4, + "total": 12 }, "approved": { "tmMatch": 0, @@ -24289,9 +32655,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 766, - "total": 766 + "tmMatch": 64, + "default": 20912, + "total": 20976 }, "approvalCosts": { "tmMatch": 0, @@ -24303,33 +32669,33 @@ }, { "user": { - "id": 14690454, - "username": "sekoman01", - "fullName": "Uğur Daloğlu (sekoman01)", + "id": 15946101, + "username": "w1lkns", + "fullName": "Wilkins Morales (w1lkns)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14690454/medium/595a121d4a7427f7a21b75b32017c247.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15946101/medium/3d2813e6686c380c0a74b58d86b12c3d.jpeg", "preTranslated": 0, - "totalCosts": 551 + "totalCosts": 129 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 551 + "totalCosts": 129 }, "translated": { - "tmMatch": 1, - "default": 550, - "total": 551 + "tmMatch": 0, + "default": 129, + "total": 129 }, "targetTranslated": { - "tmMatch": 1, - "default": 463, - "total": 464 + "tmMatch": 0, + "default": 142, + "total": 142 }, "translatedByMt": { "tmMatch": 0, @@ -24342,9 +32708,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 550, - "total": 551 + "tmMatch": 0, + "default": 129, + "total": 129 }, "approvalCosts": { "tmMatch": 0, @@ -24356,38 +32722,38 @@ }, { "user": { - "id": 13289968, - "username": "vicesalles", - "fullName": "Vicenç Sallés (vicesalles)", + "id": 15840887, + "username": "jak0x", + "fullName": "XF Hack (jak0x)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13289968/medium/53d57fb5c925c7b26e7b49f26f4f6f9c_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15840887/medium/6ee963317953f0cf7d101ee8adb49426.png", "preTranslated": 0, - "totalCosts": 92 + "totalCosts": 3 }, "languages": [ { "language": { - "id": "ca", - "name": "Catalan", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 92 + "totalCosts": 3 }, "translated": { - "tmMatch": 25, - "default": 67, - "total": 92 + "tmMatch": 0, + "default": 3, + "total": 3 }, "targetTranslated": { - "tmMatch": 30, - "default": 68, - "total": 98 + "tmMatch": 0, + "default": 5, + "total": 5 }, "translatedByMt": { - "tmMatch": 11, - "default": 0, - "total": 11 + "tmMatch": 0, + "default": 3, + "total": 3 }, "approved": { "tmMatch": 0, @@ -24395,9 +32761,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 25, - "default": 67, - "total": 92 + "tmMatch": 0, + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, @@ -24409,38 +32775,38 @@ }, { "user": { - "id": 15789613, - "username": "djvictorvargas1988", - "fullName": "Victor Vargas (djvictorvargas1988)", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15789613/medium/f5d59ce9fa974c34fed81ee4bcfe45de.jpeg", + "id": 15055487, + "username": "xaviershen1", + "fullName": "Xav (xaviershen1)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15055487/medium/10522705934133754c3c30644a91e987.png", "preTranslated": 0, - "totalCosts": 472 + "totalCosts": 1128 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", - "userRole": "Limited Access", + "id": "zh-TW", + "name": "Chinese Traditional", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 472 + "totalCosts": 1128 }, "translated": { - "tmMatch": 14, - "default": 458, - "total": 472 + "tmMatch": 0, + "default": 1128, + "total": 1128 }, "targetTranslated": { - "tmMatch": 21, - "default": 495, - "total": 516 + "tmMatch": 0, + "default": 1904, + "total": 1904 }, "translatedByMt": { "tmMatch": 0, - "default": 113, - "total": 113 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -24448,9 +32814,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 14, - "default": 458, - "total": 472 + "tmMatch": 0, + "default": 1128, + "total": 1128 }, "approvalCosts": { "tmMatch": 0, @@ -24462,38 +32828,38 @@ }, { "user": { - "id": 15869379, - "username": "viktoriia.mykytiuk02", - "fullName": "Viktoriia Mykytiuk (viktoriia.mykytiuk02)", + "id": 15911295, + "username": "Xin_Cheng", + "fullName": "Xin Cheng (Xin_Cheng)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15869379/medium/674749c0e8809c8963f1f2252ea54f75.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911295/medium/8aae130b64f46cd1ea960d085950a560_default.png", "preTranslated": 0, - "totalCosts": 2385 + "totalCosts": 9659 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2385 + "totalCosts": 9659 }, "translated": { - "tmMatch": 5, - "default": 2380, - "total": 2385 + "tmMatch": 8, + "default": 9651, + "total": 9659 }, "targetTranslated": { - "tmMatch": 3, - "default": 2109, - "total": 2112 + "tmMatch": 15, + "default": 16055, + "total": 16070 }, "translatedByMt": { - "tmMatch": 5, - "default": 143, - "total": 148 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -24501,9 +32867,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 2380, - "total": 2385 + "tmMatch": 8, + "default": 9651, + "total": 9659 }, "approvalCosts": { "tmMatch": 0, @@ -24515,38 +32881,38 @@ }, { "user": { - "id": 15844775, - "username": "nesvavol.viktoria", - "fullName": "Viktoriia Nesvavol (nesvavol.viktoria)", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15844775/medium/ca3c445013eb90d2bba9934520192161.jpeg", + "id": 15954931, + "username": "XofEE", + "fullName": "XofEE", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15954931/medium/7254d648c451b822632980e5bfcb61fa.png", "preTranslated": 0, - "totalCosts": 134 + "totalCosts": 10421 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Limited Access", + "id": "fr", + "name": "French", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 134 + "totalCosts": 10421 }, "translated": { - "tmMatch": 0, - "default": 134, - "total": 134 + "tmMatch": 384, + "default": 10037, + "total": 10421 }, "targetTranslated": { - "tmMatch": 0, - "default": 124, - "total": 124 + "tmMatch": 406, + "default": 11462, + "total": 11868 }, "translatedByMt": { "tmMatch": 0, - "default": 33, - "total": 33 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -24554,9 +32920,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 134, - "total": 134 + "tmMatch": 384, + "default": 10037, + "total": 10421 }, "approvalCosts": { "tmMatch": 0, @@ -24568,48 +32934,48 @@ }, { "user": { - "id": 15241608, - "username": "aco_novatranslate", - "fullName": "Vladimir Angelov (aco_novatranslate)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15241608/medium/dfa20fade20b2314f45079d92687afee_default.png", + "id": 15892315, + "username": "youyi0406", + "fullName": "Yi You (youyi0406)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15892315/medium/d8936a27aafe87892d14a9579ef5deaa.jpeg", "preTranslated": 0, - "totalCosts": 17 + "totalCosts": 140 }, "languages": [ { "language": { - "id": "bg", - "name": "Bulgarian", - "userRole": "Translator, Proofreader", + "id": "zh-CN", + "name": "Chinese Simplified", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 17 + "totalCosts": 140 }, "translated": { - "tmMatch": 9, - "default": 8, - "total": 17 + "tmMatch": 0, + "default": 140, + "total": 140 }, "targetTranslated": { - "tmMatch": 10, - "default": 9, - "total": 19 + "tmMatch": 0, + "default": 236, + "total": 236 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 11, + "total": 11 }, "approved": { "tmMatch": 0, "default": 0, - "total": 112 + "total": 0 }, "translationCosts": { - "tmMatch": 9, - "default": 8, - "total": 17 + "tmMatch": 0, + "default": 140, + "total": 140 }, "approvalCosts": { "tmMatch": 0, @@ -24621,13 +32987,13 @@ }, { "user": { - "id": 15806537, - "username": "Tyou", - "fullName": "Wayne_WY_Chiu (Tyou)", + "id": 15906651, + "username": "ying.ying09", + "fullName": "Ying Ying Tan (ying.ying09)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15806537/medium/bcd829ea4cae49b3ec63925ecd75c126.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15906651/medium/7fbb552cabdbfcd79477e56fc90a2670.png", "preTranslated": 0, - "totalCosts": 1771 + "totalCosts": 924 }, "languages": [ { @@ -24637,22 +33003,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 36 + "totalCosts": 924 }, "translated": { - "tmMatch": 0, - "default": 36, - "total": 36 + "tmMatch": 17, + "default": 907, + "total": 924 }, "targetTranslated": { - "tmMatch": 0, - "default": 70, - "total": 70 + "tmMatch": 35, + "default": 1548, + "total": 1583 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 3, + "default": 10, + "total": 13 }, "approved": { "tmMatch": 0, @@ -24660,34 +33026,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 36, - "total": 36 + "tmMatch": 17, + "default": 907, + "total": 924 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15700269, + "username": "Yousef_K", + "fullName": "Yousef kian (Yousef_K)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15700269/medium/f95cbc9011488346af5956ba6004cb01.png", + "preTranslated": 0, + "totalCosts": 12 + }, + "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1735 + "totalCosts": 12 }, "translated": { - "tmMatch": 62, - "default": 1673, - "total": 1735 + "tmMatch": 0, + "default": 12, + "total": 12 }, "targetTranslated": { - "tmMatch": 79, - "default": 2645, - "total": 2724 + "tmMatch": 0, + "default": 15, + "total": 15 }, "translatedByMt": { "tmMatch": 0, @@ -24700,9 +33079,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 62, - "default": 1673, - "total": 1735 + "tmMatch": 0, + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -24714,13 +33093,13 @@ }, { "user": { - "id": 15783149, - "username": "xy710.eth", - "fullName": "Wong Sheau Yeng (xy710.eth)", + "id": 15966363, + "username": "yuan0703andy", + "fullName": "Yu An Hou (yuan0703andy)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15783149/medium/f395b4c1a1b358bcc9e01ef741887e40.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966363/medium/69c6a8833844012409680c44aeef5493.png", "preTranslated": 0, - "totalCosts": 896 + "totalCosts": 103 }, "languages": [ { @@ -24730,22 +33109,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 896 + "totalCosts": 103 }, "translated": { - "tmMatch": 50, - "default": 846, - "total": 896 + "tmMatch": 0, + "default": 103, + "total": 103 }, "targetTranslated": { - "tmMatch": 89, - "default": 1678, - "total": 1767 + "tmMatch": 0, + "default": 173, + "total": 173 }, "translatedByMt": { - "tmMatch": 19, + "tmMatch": 0, "default": 0, - "total": 19 + "total": 0 }, "approved": { "tmMatch": 0, @@ -24753,9 +33132,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 50, - "default": 846, - "total": 896 + "tmMatch": 0, + "default": 103, + "total": 103 }, "approvalCosts": { "tmMatch": 0, @@ -24767,33 +33146,33 @@ }, { "user": { - "id": 15840887, - "username": "jak0x", - "fullName": "XF Hack (jak0x)", + "id": 15952291, + "username": "U2FsdGVkX19emY6whu3NhG0aBoZe", + "fullName": "Yuhan Tsai (U2FsdGVkX19emY6whu3NhG0aBoZe)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15840887/medium/6ee963317953f0cf7d101ee8adb49426.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952291/medium/2fc63c940f102d64179809e203077e2a.jpeg", "preTranslated": 0, - "totalCosts": 14 + "totalCosts": 195 }, "languages": [ { "language": { - "id": "af", - "name": "Afrikaans", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 14 + "totalCosts": 195 }, "translated": { - "tmMatch": 4, - "default": 10, - "total": 14 + "tmMatch": 0, + "default": 195, + "total": 195 }, "targetTranslated": { - "tmMatch": 4, - "default": 10, - "total": 14 + "tmMatch": 0, + "default": 311, + "total": 311 }, "translatedByMt": { "tmMatch": 0, @@ -24806,9 +33185,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 10, - "total": 14 + "tmMatch": 0, + "default": 195, + "total": 195 }, "approvalCosts": { "tmMatch": 0, @@ -24820,38 +33199,38 @@ }, { "user": { - "id": 15783977, - "username": "laiyingshi", - "fullName": "Xinyi JIANG (laiyingshi)", + "id": 15967297, + "username": "zharjac", + "fullName": "ZZip | zharjac.eth (zharjac)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15783977/medium/bd9b2c23e802f1062e9f6d91308f99f0.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967297/medium/cb76bb0cc8da946e14d974d763213d37.jpg", "preTranslated": 0, - "totalCosts": 70 + "totalCosts": 3774 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "hr", + "name": "Croatian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 70 + "totalCosts": 3774 }, "translated": { - "tmMatch": 16, - "default": 54, - "total": 70 + "tmMatch": 80, + "default": 3694, + "total": 3774 }, "targetTranslated": { - "tmMatch": 34, - "default": 113, - "total": 147 + "tmMatch": 80, + "default": 3471, + "total": 3551 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -24859,9 +33238,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 16, - "default": 54, - "total": 70 + "tmMatch": 80, + "default": 3694, + "total": 3774 }, "approvalCosts": { "tmMatch": 0, @@ -24873,38 +33252,38 @@ }, { "user": { - "id": 15800799, - "username": "gyhwzhyg", - "fullName": "YG Wong (gyhwzhyg)", + "id": 16000639, + "username": "Ragu07", + "fullName": "Zack (Ragu07)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15800799/medium/089738ad59304631373b49e5474e582b.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16000639/medium/b4959fa30a752fec53b2daea132390c0_default.png", "preTranslated": 0, - "totalCosts": 15 + "totalCosts": 2775 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "ta", + "name": "Tamil", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15 + "totalCosts": 2775 }, "translated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 42, + "default": 2733, + "total": 2775 }, "targetTranslated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 85, + "default": 5169, + "total": 5254 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 5, "default": 0, - "total": 0 + "total": 5 }, "approved": { "tmMatch": 0, @@ -24912,9 +33291,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 42, + "default": 2733, + "total": 2775 }, "approvalCosts": { "tmMatch": 0, @@ -24926,33 +33305,33 @@ }, { "user": { - "id": 15780621, - "username": "Yecoart", - "fullName": "Yeferson Contreras (Yecoart)", + "id": 15978305, + "username": "zyh.mgk", + "fullName": "Zayyar Hein (zyh.mgk)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15780621/medium/d4578d530b8a8f7f83bcc67916bc7784.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15978305/medium/d617194599274d597f9599e06be9bb2c.jpeg", "preTranslated": 0, - "totalCosts": 231 + "totalCosts": 17 }, "languages": [ { "language": { - "id": "sq", - "name": "Albanian", + "id": "my", + "name": "Burmese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 27 + "totalCosts": 17 }, "translated": { "tmMatch": 0, - "default": 27, - "total": 27 + "default": 17, + "total": 17 }, "targetTranslated": { "tmMatch": 0, - "default": 28, - "total": 28 + "default": 17, + "total": 17 }, "translatedByMt": { "tmMatch": 0, @@ -24966,33 +33345,46 @@ }, "translationCosts": { "tmMatch": 0, - "default": 27, - "total": 27 + "default": 17, + "total": 17 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 16020224, + "username": "zulbasridaud220", + "fullName": "Zulbasri Mohd daud (zulbasridaud220)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16020224/medium/a2da894b1174d46676300df338864de6.jpeg", + "preTranslated": 0, + "totalCosts": 41 + }, + "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "ms", + "name": "Malay", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 204 + "totalCosts": 41 }, "translated": { - "tmMatch": 23, - "default": 181, - "total": 204 + "tmMatch": 0, + "default": 41, + "total": 41 }, "targetTranslated": { - "tmMatch": 36, - "default": 245, - "total": 281 + "tmMatch": 0, + "default": 48, + "total": 48 }, "translatedByMt": { "tmMatch": 0, @@ -25005,9 +33397,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 23, - "default": 181, - "total": 204 + "tmMatch": 0, + "default": 41, + "total": 41 }, "approvalCosts": { "tmMatch": 0, @@ -25019,33 +33411,33 @@ }, { "user": { - "id": 15797623, - "username": "Harryjin", - "fullName": "Yiming Jin (Harryjin)", + "id": 15930651, + "username": "0xOZ", + "fullName": "ahmad abuzaid (0xOZ)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15797623/medium/1c1edb851d20c1ebf5d5637f8fbf4665.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15930651/medium/b4738a8e10109842b168d657d53eeaec.jpeg", "preTranslated": 0, - "totalCosts": 55 + "totalCosts": 1292 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 55 + "totalCosts": 1292 }, "translated": { - "tmMatch": 0, - "default": 55, - "total": 55 + "tmMatch": 65, + "default": 1227, + "total": 1292 }, "targetTranslated": { - "tmMatch": 0, - "default": 80, - "total": 80 + "tmMatch": 61, + "default": 1302, + "total": 1363 }, "translatedByMt": { "tmMatch": 0, @@ -25058,9 +33450,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 55, - "total": 55 + "tmMatch": 65, + "default": 1227, + "total": 1292 }, "approvalCosts": { "tmMatch": 0, @@ -25072,33 +33464,33 @@ }, { "user": { - "id": 15700269, - "username": "Yousef_K", - "fullName": "Yousef kian (Yousef_K)", + "id": 15938189, + "username": "altinocoelho", + "fullName": "altinocoelho", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15700269/medium/f95cbc9011488346af5956ba6004cb01.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15938189/medium/a94b70c2f9891e65834e1864392d4912.png", "preTranslated": 0, - "totalCosts": 41 + "totalCosts": 3730 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", + "id": "pt-PT", + "name": "Portuguese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 41 + "totalCosts": 3730 }, "translated": { - "tmMatch": 15, - "default": 26, - "total": 41 + "tmMatch": 56, + "default": 3674, + "total": 3730 }, "targetTranslated": { - "tmMatch": 28, - "default": 45, - "total": 73 + "tmMatch": 61, + "default": 3924, + "total": 3985 }, "translatedByMt": { "tmMatch": 0, @@ -25111,9 +33503,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 15, - "default": 26, - "total": 41 + "tmMatch": 56, + "default": 3674, + "total": 3730 }, "approvalCosts": { "tmMatch": 0, @@ -25125,38 +33517,38 @@ }, { "user": { - "id": 15856841, - "username": "weiyuzhi2022", - "fullName": "YuZhi Wei (weiyuzhi2022)", + "id": 15924655, + "username": "alurosu", + "fullName": "alurosu", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15856841/medium/604c48d6d4f0f60a4495f8586908076c.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15924655/medium/88aaaf43a7c112348b056a3836effdda.png", "preTranslated": 0, - "totalCosts": 8037 + "totalCosts": 377 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "ro", + "name": "Romanian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8037 + "totalCosts": 377 }, "translated": { - "tmMatch": 15, - "default": 8022, - "total": 8037 + "tmMatch": 59, + "default": 318, + "total": 377 }, "targetTranslated": { - "tmMatch": 19, - "default": 13682, - "total": 13701 + "tmMatch": 58, + "default": 325, + "total": 383 }, "translatedByMt": { - "tmMatch": 0, - "default": 106, - "total": 106 + "tmMatch": 45, + "default": 71, + "total": 116 }, "approved": { "tmMatch": 0, @@ -25164,9 +33556,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 15, - "default": 8022, - "total": 8037 + "tmMatch": 59, + "default": 318, + "total": 377 }, "approvalCosts": { "tmMatch": 0, @@ -25178,33 +33570,33 @@ }, { "user": { - "id": 15846331, - "username": "Zairez1", - "fullName": "Zaire (Zairez1)", + "id": 15938555, + "username": "arian_zr", + "fullName": "arian zr (arian_zr)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15846331/medium/414ee48f37599c6343028848f65f552b.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15938555/medium/d36a3c8df483569d53ad9806ea410edd_default.png", "preTranslated": 0, - "totalCosts": 65 + "totalCosts": 273 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 65 + "totalCosts": 273 }, "translated": { - "tmMatch": 0, - "default": 65, - "total": 65 + "tmMatch": 36, + "default": 237, + "total": 273 }, "targetTranslated": { - "tmMatch": 0, - "default": 63, - "total": 63 + "tmMatch": 39, + "default": 279, + "total": 318 }, "translatedByMt": { "tmMatch": 0, @@ -25217,9 +33609,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 65, - "total": 65 + "tmMatch": 36, + "default": 237, + "total": 273 }, "approvalCosts": { "tmMatch": 0, @@ -25231,38 +33623,38 @@ }, { "user": { - "id": 15811963, - "username": "abdallahobeidat440", - "fullName": "abdallah obeidat (abdallahobeidat440)", + "id": 15966553, + "username": "bamcryptobam1", + "fullName": "bam bino (bamcryptobam1)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15811963/medium/169308828473085ca4b672103ecb5f68.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966553/medium/7fde8cf7f30af6c46453e25bbf5aa342.png", "preTranslated": 0, - "totalCosts": 24 + "totalCosts": 322 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 24 + "totalCosts": 322 }, "translated": { - "tmMatch": 3, - "default": 21, - "total": 24 + "tmMatch": 0, + "default": 322, + "total": 322 }, "targetTranslated": { - "tmMatch": 4, - "default": 16, - "total": 20 + "tmMatch": 0, + "default": 353, + "total": 353 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 6, + "total": 6 }, "approved": { "tmMatch": 0, @@ -25270,9 +33662,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 21, - "total": 24 + "tmMatch": 0, + "default": 322, + "total": 322 }, "approvalCosts": { "tmMatch": 0, @@ -25284,38 +33676,38 @@ }, { "user": { - "id": 15782057, - "username": "frinhari", - "fullName": "alex De Haro (frinhari)", + "id": 15947515, + "username": "blockson", + "fullName": "blockson.eth (blockson)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15782057/medium/94ff9e6a52e91cf050dde5e9d4ee88fd.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15947515/medium/52b0b3490fcf6940d9027ef2f32a424b.jpeg", "preTranslated": 0, - "totalCosts": 10 + "totalCosts": 15138 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10 + "totalCosts": 15125 }, "translated": { - "tmMatch": 10, - "default": 0, - "total": 10 + "tmMatch": 228, + "default": 14897, + "total": 15125 }, "targetTranslated": { - "tmMatch": 10, - "default": 0, - "total": 10 + "tmMatch": 223, + "default": 13318, + "total": 13541 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 1, + "default": 17, + "total": 18 }, "approved": { "tmMatch": 0, @@ -25323,47 +33715,34 @@ "total": 0 }, "translationCosts": { - "tmMatch": 10, - "default": 0, - "total": 10 + "tmMatch": 228, + "default": 14897, + "total": 15125 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15839745, - "username": "alijamali", - "fullName": "ali jamali (alijamali)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15839745/medium/c9a4e12508354d34ad7c25452f4d5cf2.jpeg", - "preTranslated": 0, - "totalCosts": 63 - }, - "languages": [ + }, { "language": { - "id": "fa", - "name": "Persian", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 63 + "totalCosts": 13 }, "translated": { "tmMatch": 0, - "default": 63, - "total": 63 + "default": 13, + "total": 13 }, "targetTranslated": { "tmMatch": 0, - "default": 115, - "total": 115 + "default": 16, + "total": 16 }, "translatedByMt": { "tmMatch": 0, @@ -25377,8 +33756,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 63, - "total": 63 + "default": 13, + "total": 13 }, "approvalCosts": { "tmMatch": 0, @@ -25390,38 +33769,38 @@ }, { "user": { - "id": 15786273, - "username": "amaladnanhammad", - "fullName": "amal adnan hammad (amaladnanhammad)", + "id": 15956019, + "username": "cc03668", + "fullName": "cc03668", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15786273/medium/0fd7fe429704589a0b43d51034f76b2e.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956019/medium/2db4e1795f6076358b4fc078852af802.png", "preTranslated": 0, - "totalCosts": 8 + "totalCosts": 1690 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8 + "totalCosts": 1690 }, "translated": { - "tmMatch": 7, - "default": 1, - "total": 8 + "tmMatch": 1, + "default": 1689, + "total": 1690 }, "targetTranslated": { - "tmMatch": 7, - "default": 1, - "total": 8 + "tmMatch": 3, + "default": 2914, + "total": 2917 }, "translatedByMt": { - "tmMatch": 7, - "default": 1, - "total": 8 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -25429,9 +33808,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 7, - "default": 1, - "total": 8 + "tmMatch": 1, + "default": 1689, + "total": 1690 }, "approvalCosts": { "tmMatch": 0, @@ -25443,33 +33822,33 @@ }, { "user": { - "id": 15807039, - "username": "assafgoren11", - "fullName": "assaf goren (assafgoren11)", + "id": 15594493, + "username": "0xceife", + "fullName": "ceife (0xceife)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15807039/medium/a481eb1b62be4c353c4c03e8abe823a4.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15594493/medium/ada4e2f5276b6085495631bb59486bc8.gif", "preTranslated": 0, - "totalCosts": 85 + "totalCosts": 5800 }, "languages": [ { "language": { - "id": "he", - "name": "Hebrew", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 85 + "totalCosts": 5800 }, "translated": { - "tmMatch": 16, - "default": 69, - "total": 85 + "tmMatch": 97, + "default": 5703, + "total": 5800 }, "targetTranslated": { - "tmMatch": 18, - "default": 63, - "total": 81 + "tmMatch": 95, + "default": 5254, + "total": 5349 }, "translatedByMt": { "tmMatch": 0, @@ -25482,9 +33861,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 16, - "default": 69, - "total": 85 + "tmMatch": 97, + "default": 5703, + "total": 5800 }, "approvalCosts": { "tmMatch": 0, @@ -25496,33 +33875,33 @@ }, { "user": { - "id": 15777095, - "username": "2093832142", - "fullName": "aypath A (2093832142)", + "id": 14298362, + "username": "chtyozi88", + "fullName": "chtyozi88", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15777095/medium/6db8b75e3861b66860f20fd9241be1f2.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14298362/medium/faa58e5522ded9b4f4fe7628c5352a59.png", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 134 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 134 }, "translated": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 134, + "total": 134 }, "targetTranslated": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 264, + "total": 264 }, "translatedByMt": { "tmMatch": 0, @@ -25536,8 +33915,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 134, + "total": 134 }, "approvalCosts": { "tmMatch": 0, @@ -25549,38 +33928,38 @@ }, { "user": { - "id": 15777069, - "username": "batuhand", - "fullName": "batuhan demircan (batuhand)", + "id": 15724471, + "username": "cryptoraketeros", + "fullName": "cryptocoinpurse.eth (cryptoraketeros)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15777069/medium/556dec832f99c258d10755c938abddcd.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15724471/medium/bfc780664ca8f2f9b582d54230d7f992.jpg", "preTranslated": 0, - "totalCosts": 126 + "totalCosts": 2313 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "tl", + "name": "Tagalog", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 126 + "totalCosts": 2313 }, "translated": { - "tmMatch": 2, - "default": 124, - "total": 126 + "tmMatch": 13, + "default": 2300, + "total": 2313 }, "targetTranslated": { - "tmMatch": 2, - "default": 104, - "total": 106 + "tmMatch": 20, + "default": 2851, + "total": 2871 }, "translatedByMt": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 9, + "default": 10, + "total": 19 }, "approved": { "tmMatch": 0, @@ -25588,9 +33967,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 124, - "total": 126 + "tmMatch": 13, + "default": 2300, + "total": 2313 }, "approvalCosts": { "tmMatch": 0, @@ -25602,33 +33981,33 @@ }, { "user": { - "id": 15716195, - "username": "cbow36998", - "fullName": "cbow36998_ (cbow36998)", - "userRole": "Blocked", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15716195/medium/ff00ad60b11e0370fbe59c9b79fbc4ec.jpg", + "id": 15982313, + "username": "dankshard.lens", + "fullName": "dankshard.lens", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15982313/medium/26374bacaa93ba3f55d0727276bb07a1.png", "preTranslated": 0, - "totalCosts": 128 + "totalCosts": 357 }, "languages": [ { "language": { - "id": "az", - "name": "Azerbaijani", - "userRole": "Blocked", + "id": "hu", + "name": "Hungarian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1 + "totalCosts": 357 }, "translated": { "tmMatch": 0, - "default": 1, - "total": 1 + "default": 357, + "total": 357 }, "targetTranslated": { "tmMatch": 0, - "default": 1, - "total": 1 + "default": 349, + "total": 349 }, "translatedByMt": { "tmMatch": 0, @@ -25642,38 +34021,51 @@ }, "translationCosts": { "tmMatch": 0, - "default": 1, - "total": 1 + "default": 357, + "total": 357 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15967861, + "username": "dhilipdina", + "fullName": "dhilip (dhilipdina)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967861/medium/efd151727e5e29c1d8b9555713b46763_default.png", + "preTranslated": 0, + "totalCosts": 1428 + }, + "languages": [ { "language": { - "id": "fil", - "name": "Filipino", - "userRole": "Blocked", + "id": "ta", + "name": "Tamil", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 117 + "totalCosts": 1428 }, "translated": { - "tmMatch": 4, - "default": 113, - "total": 117 + "tmMatch": 30, + "default": 1398, + "total": 1428 }, "targetTranslated": { - "tmMatch": 4, - "default": 75, - "total": 79 + "tmMatch": 62, + "default": 2857, + "total": 2919 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 4, "default": 0, - "total": 0 + "total": 4 }, "approved": { "tmMatch": 0, @@ -25681,34 +34073,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 113, - "total": 117 + "tmMatch": 30, + "default": 1398, + "total": 1428 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 16014683, + "username": "pierredogui", + "fullName": "djereke pierre dogui (pierredogui)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16014683/medium/8dc8d59a7a6e2830c84d1a23f5d1814f.jpeg", + "preTranslated": 0, + "totalCosts": 14 + }, + "languages": [ { "language": { - "id": "pcm", - "name": "Nigerian Pidgin", - "userRole": "Blocked", + "id": "fr", + "name": "French", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10 + "totalCosts": 14 }, "translated": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 14, + "total": 14 }, "targetTranslated": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 14, + "total": 14 }, "translatedByMt": { "tmMatch": 0, @@ -25722,8 +34127,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 10, - "total": 10 + "default": 14, + "total": 14 }, "approvalCosts": { "tmMatch": 0, @@ -25735,38 +34140,38 @@ }, { "user": { - "id": 15847967, - "username": "chefkozaki", - "fullName": "chefkozaki", + "id": 14631802, + "username": "edgargrau", + "fullName": "eDgar gRau (edgargrau)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15847967/medium/68dd98227d7e6c8600937d752bb5a9a3.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14631802/medium/49b31ee9ceace460558cf61dcaaa1e2f.jpeg", "preTranslated": 0, - "totalCosts": 25 + "totalCosts": 135 }, "languages": [ { "language": { - "id": "vi", - "name": "Vietnamese", + "id": "es-EM", + "name": "Spanish (Modern)", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 25 + "totalCosts": 135 }, "translated": { - "tmMatch": 0, - "default": 25, - "total": 25 + "tmMatch": 53, + "default": 82, + "total": 135 }, "targetTranslated": { - "tmMatch": 0, - "default": 36, - "total": 36 + "tmMatch": 53, + "default": 95, + "total": 148 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 40, + "total": 40 }, "approved": { "tmMatch": 0, @@ -25774,9 +34179,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 25, - "total": 25 + "tmMatch": 53, + "default": 82, + "total": 135 }, "approvalCosts": { "tmMatch": 0, @@ -25788,33 +34193,33 @@ }, { "user": { - "id": 15816363, - "username": "chenggang-zh", - "fullName": "chenggang (chenggang-zh)", + "id": 15956615, + "username": "dypumping", + "fullName": "emmanuel agbaje (dypumping)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15816363/medium/a2ca44a459e8ce152ba8dfce117cb8fa.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956615/medium/3db1c4e858d24b640d4b5521e224e15d.jpeg", "preTranslated": 0, - "totalCosts": 49 + "totalCosts": 71 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "pcm", + "name": "Nigerian Pidgin", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 49 + "totalCosts": 71 }, "translated": { "tmMatch": 0, - "default": 49, - "total": 49 + "default": 71, + "total": 71 }, "targetTranslated": { "tmMatch": 0, - "default": 72, - "total": 72 + "default": 79, + "total": 79 }, "translatedByMt": { "tmMatch": 0, @@ -25828,8 +34233,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 49, - "total": 49 + "default": 71, + "total": 71 }, "approvalCosts": { "tmMatch": 0, @@ -25841,38 +34246,38 @@ }, { "user": { - "id": 15314206, - "username": "cuijia", - "fullName": "cuijia", + "id": 15966285, + "username": "rooibos", + "fullName": "emre yaşar (rooibos)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15314206/medium/97a1d7142aa4eba6ed8a0212ddada4a8.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966285/medium/38d097aa264f975b332f14046d670fb6.png", "preTranslated": 0, - "totalCosts": 643 + "totalCosts": 1938 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 643 + "totalCosts": 1938 }, "translated": { - "tmMatch": 11, - "default": 632, - "total": 643 + "tmMatch": 13, + "default": 1925, + "total": 1938 }, "targetTranslated": { - "tmMatch": 22, - "default": 973, - "total": 995 + "tmMatch": 18, + "default": 1539, + "total": 1557 }, "translatedByMt": { - "tmMatch": 3, - "default": 58, - "total": 61 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -25880,9 +34285,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 11, - "default": 632, - "total": 643 + "tmMatch": 13, + "default": 1925, + "total": 1938 }, "approvalCosts": { "tmMatch": 0, @@ -25894,38 +34299,78 @@ }, { "user": { - "id": 15808721, - "username": "fahadanizi", - "fullName": "fahadanizi", - "userRole": "Blocked", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15808721/medium/a0fd95274585fea89c0735c63f60a0b1.png", + "id": 15942179, + "username": "erfan1366erfan", + "fullName": "erfan (erfan1366erfan)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15942179/medium/01f700e015f539a1262e058e281a8d9f.png", "preTranslated": 0, - "totalCosts": 184336 + "totalCosts": 7019 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", - "userRole": "Blocked", + "id": "ku", + "name": "Kurdish", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 184336 + "totalCosts": 732 }, "translated": { - "tmMatch": 2382, - "default": 181954, - "total": 184336 + "tmMatch": 0, + "default": 732, + "total": 732 }, "targetTranslated": { - "tmMatch": 2378, - "default": 180498, - "total": 182876 + "tmMatch": 0, + "default": 720, + "total": 720 }, "translatedByMt": { "tmMatch": 0, - "default": 63, - "total": 63 + "default": 0, + "total": 0 + }, + "approved": { + "tmMatch": 0, + "default": 0, + "total": 0 + }, + "translationCosts": { + "tmMatch": 0, + "default": 732, + "total": 732 + }, + "approvalCosts": { + "tmMatch": 0, + "default": 0, + "total": 0 + } + }, + { + "language": { + "id": "fa", + "name": "Persian", + "userRole": "Translator", + "tmSavings": 0, + "preTranslate": 0, + "totalCosts": 6287 + }, + "translated": { + "tmMatch": 145, + "default": 6142, + "total": 6287 + }, + "targetTranslated": { + "tmMatch": 160, + "default": 7289, + "total": 7449 + }, + "translatedByMt": { + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -25933,9 +34378,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2382, - "default": 181954, - "total": 184336 + "tmMatch": 145, + "default": 6142, + "total": 6287 }, "approvalCosts": { "tmMatch": 0, @@ -25947,38 +34392,38 @@ }, { "user": { - "id": 15038581, - "username": "fragagou", - "fullName": "fragagou", + "id": 15952403, + "username": "Ezejoe36", + "fullName": "eze jonathan (Ezejoe36)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15038581/medium/89bf40f6707886365032e3f0520657c1.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15952403/medium/70fcdec4d0f8ee875339e30b96862a26.jpeg", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 12853 }, "languages": [ { "language": { - "id": "el", - "name": "Greek", + "id": "ig", + "name": "Igbo", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 12853 }, "translated": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 13, + "default": 12840, + "total": 12853 }, "targetTranslated": { - "tmMatch": 3, - "default": 0, - "total": 3 + "tmMatch": 17, + "default": 14699, + "total": 14716 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 1, "default": 0, - "total": 0 + "total": 1 }, "approved": { "tmMatch": 0, @@ -25986,9 +34431,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 0, - "total": 2 + "tmMatch": 13, + "default": 12840, + "total": 12853 }, "approvalCosts": { "tmMatch": 0, @@ -26000,38 +34445,38 @@ }, { "user": { - "id": 15778915, - "username": "gibontuzu", - "fullName": "gibontuzu", + "id": 14987083, + "username": "firebomb1", + "fullName": "firebomb1", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15778915/medium/50931e74e38b00f59e409e993b2fc025.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14987083/medium/93af54cc13dbcaf7bf48dd80242e874c.png", "preTranslated": 0, - "totalCosts": 30 + "totalCosts": 3 }, "languages": [ { "language": { - "id": "bg", - "name": "Bulgarian", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 30 + "totalCosts": 3 }, "translated": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 3, + "total": 3 }, "targetTranslated": { "tmMatch": 0, - "default": 34, - "total": 34 + "default": 4, + "total": 4 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 3, + "total": 3 }, "approved": { "tmMatch": 0, @@ -26040,8 +34485,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 30, - "total": 30 + "default": 3, + "total": 3 }, "approvalCosts": { "tmMatch": 0, @@ -26053,38 +34498,38 @@ }, { "user": { - "id": 15791753, - "username": "gresskar", - "fullName": "gresskar", + "id": 15863847, + "username": "glennwittig", + "fullName": "glenn wittig (glennwittig)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15791753/medium/86a4c1f1d84510f08cf49b2316bc8d87.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15863847/medium/e2e22b709a8c13614fcc2d0c2a1b78a9.jpeg", "preTranslated": 0, - "totalCosts": 23 + "totalCosts": 321 }, "languages": [ { "language": { - "id": "no", - "name": "Norwegian", + "id": "da", + "name": "Danish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 23 + "totalCosts": 321 }, "translated": { - "tmMatch": 1, - "default": 22, - "total": 23 + "tmMatch": 22, + "default": 299, + "total": 321 }, "targetTranslated": { - "tmMatch": 1, - "default": 22, - "total": 23 + "tmMatch": 25, + "default": 315, + "total": 340 }, "translatedByMt": { - "tmMatch": 1, - "default": 9, - "total": 10 + "tmMatch": 2, + "default": 0, + "total": 2 }, "approved": { "tmMatch": 0, @@ -26092,9 +34537,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 22, - "total": 23 + "tmMatch": 22, + "default": 299, + "total": 321 }, "approvalCosts": { "tmMatch": 0, @@ -26106,33 +34551,33 @@ }, { "user": { - "id": 15784283, - "username": "gustavojavier7", - "fullName": "gustavo lopez (gustavojavier7)", + "id": 15916327, + "username": "avalidurl", + "fullName": "gokhan (avalidurl)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15784283/medium/f6852e4eb1bae98de7b942bcf9b08314.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15916327/medium/89e2154a494b74da402f3b5c4ad73240.png", "preTranslated": 0, - "totalCosts": 526 + "totalCosts": 175 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 526 + "totalCosts": 175 }, "translated": { "tmMatch": 0, - "default": 526, - "total": 526 + "default": 175, + "total": 175 }, "targetTranslated": { "tmMatch": 0, - "default": 594, - "total": 594 + "default": 130, + "total": 130 }, "translatedByMt": { "tmMatch": 0, @@ -26146,8 +34591,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 526, - "total": 526 + "default": 175, + "total": 175 }, "approvalCosts": { "tmMatch": 0, @@ -26163,9 +34608,9 @@ "username": "hangleang", "fullName": "hang leang (hangleang)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15880343/medium/a89c7d8a4f6732cbbe2d5abc559f4be3.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15880343/medium/4b6df183916557610b51230915a5f9eb_default.png", "preTranslated": 0, - "totalCosts": 454 + "totalCosts": 11867 }, "languages": [ { @@ -26175,22 +34620,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 454 + "totalCosts": 11867 }, "translated": { - "tmMatch": 10, - "default": 444, - "total": 454 + "tmMatch": 66, + "default": 11801, + "total": 11867 }, "targetTranslated": { - "tmMatch": 23, - "default": 743, - "total": 766 + "tmMatch": 92, + "default": 13863, + "total": 13955 }, "translatedByMt": { - "tmMatch": 2, - "default": 4, - "total": 6 + "tmMatch": 15, + "default": 5, + "total": 20 }, "approved": { "tmMatch": 0, @@ -26198,9 +34643,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 10, - "default": 444, - "total": 454 + "tmMatch": 66, + "default": 11801, + "total": 11867 }, "approvalCosts": { "tmMatch": 0, @@ -26212,38 +34657,38 @@ }, { "user": { - "id": 15797937, - "username": "hazem.kamel15", - "fullName": "hazem kamel (hazem.kamel15)", + "id": 13324494, + "username": "hdmed", + "fullName": "hdmed.dev (hdmed)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15797937/medium/9d717d9deb13e5035b7c030095d85d33.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13324494/medium/e15dc911ade7cf545aeb847438d6742c.jpeg", "preTranslated": 0, - "totalCosts": 4 + "totalCosts": 71 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4 + "totalCosts": 71 }, "translated": { - "tmMatch": 1, - "default": 3, - "total": 4 + "tmMatch": 0, + "default": 71, + "total": 71 }, "targetTranslated": { - "tmMatch": 2, - "default": 3, - "total": 5 + "tmMatch": 0, + "default": 81, + "total": 81 }, "translatedByMt": { - "tmMatch": 1, - "default": 3, - "total": 4 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -26251,9 +34696,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 3, - "total": 4 + "tmMatch": 0, + "default": 71, + "total": 71 }, "approvalCosts": { "tmMatch": 0, @@ -26265,38 +34710,38 @@ }, { "user": { - "id": 15081261, - "username": "itinatsunoyaku", - "fullName": "itinatsunoyaku", + "id": 14365554, + "username": "hydai", + "fullName": "hydai", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15081261/medium/d19c80cc934b7c138e2005a481586028.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14365554/medium/0eaad18aa54e9f87636e0bf3f5d20dc3.jpeg", "preTranslated": 0, - "totalCosts": 14 + "totalCosts": 70 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 14 + "totalCosts": 70 }, "translated": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 70, + "total": 70 }, "targetTranslated": { "tmMatch": 0, - "default": 20, - "total": 20 + "default": 115, + "total": 115 }, "translatedByMt": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -26305,8 +34750,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 14, - "total": 14 + "default": 70, + "total": 70 }, "approvalCosts": { "tmMatch": 0, @@ -26318,48 +34763,48 @@ }, { "user": { - "id": 14957177, - "username": "joeurassa", - "fullName": "joeurassa", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14957177/medium/8323f79a3f73f2e723da72db082c0c22.jpg", + "id": 16031264, + "username": "ihabhamed", + "fullName": "ihabhamed", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16031264/medium/b1b2ecbce08c22555b6089b25ef0482f.jpeg", "preTranslated": 0, - "totalCosts": 971 + "totalCosts": 64 }, "languages": [ { "language": { - "id": "sw", - "name": "Swahili", - "userRole": "Translator, Proofreader", + "id": "ar", + "name": "Arabic", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 971 + "totalCosts": 64 }, "translated": { - "tmMatch": 14, - "default": 957, - "total": 971 + "tmMatch": 0, + "default": 64, + "total": 64 }, "targetTranslated": { - "tmMatch": 14, - "default": 994, - "total": 1008 + "tmMatch": 0, + "default": 54, + "total": 54 }, "translatedByMt": { - "tmMatch": 9, + "tmMatch": 0, "default": 0, - "total": 9 + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 974 + "total": 0 }, "translationCosts": { - "tmMatch": 14, - "default": 957, - "total": 971 + "tmMatch": 0, + "default": 64, + "total": 64 }, "approvalCosts": { "tmMatch": 0, @@ -26371,33 +34816,33 @@ }, { "user": { - "id": 15858829, - "username": "saavedrasebas63", - "fullName": "johan saavedra (saavedrasebas63)", + "id": 13959389, + "username": "inlak16", + "fullName": "inlak16", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15858829/medium/8061a79537c1a5a5e8b6295ea38ce949.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13959389/medium/8163669279ee4bd20f4b7db97f6000fa.png", "preTranslated": 0, - "totalCosts": 10 + "totalCosts": 1974 }, "languages": [ { "language": { - "id": "es-EM", - "name": "Spanish (Modern)", + "id": "de", + "name": "German", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 10 + "totalCosts": 1974 }, "translated": { - "tmMatch": 10, - "default": 0, - "total": 10 + "tmMatch": 0, + "default": 1974, + "total": 1974 }, "targetTranslated": { - "tmMatch": 17, - "default": 0, - "total": 17 + "tmMatch": 0, + "default": 1844, + "total": 1844 }, "translatedByMt": { "tmMatch": 0, @@ -26410,9 +34855,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 10, - "default": 0, - "total": 10 + "tmMatch": 0, + "default": 1974, + "total": 1974 }, "approvalCosts": { "tmMatch": 0, @@ -26424,33 +34869,33 @@ }, { "user": { - "id": 15024805, - "username": "laneser.kuo", - "fullName": "laneser kuo (laneser.kuo)", + "id": 16004409, + "username": "crackpotjackpotdiscord", + "fullName": "jackpot (crackpotjackpotdiscord)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15024805/medium/397e610d238f3db6882905462dcecac0.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16004409/medium/a6091a149da0ed8d0301cc4d33c8d616.png", "preTranslated": 0, - "totalCosts": 100 + "totalCosts": 405 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "vi", + "name": "Vietnamese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 100 + "totalCosts": 405 }, "translated": { - "tmMatch": 0, - "default": 100, - "total": 100 + "tmMatch": 1, + "default": 404, + "total": 405 }, "targetTranslated": { - "tmMatch": 0, - "default": 185, - "total": 185 + "tmMatch": 1, + "default": 627, + "total": 628 }, "translatedByMt": { "tmMatch": 0, @@ -26463,9 +34908,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 100, - "total": 100 + "tmMatch": 1, + "default": 404, + "total": 405 }, "approvalCosts": { "tmMatch": 0, @@ -26477,38 +34922,38 @@ }, { "user": { - "id": 15635039, - "username": "farmerlesheng", - "fullName": "lesheng farmer (farmerlesheng)", + "id": 14949295, + "username": "k0er", + "fullName": "k0er", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15635039/medium/d341ab0ab2abc63637183b0b6be2544d.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14949295/medium/70ff4652eae292556019faebcbd2988e.png", "preTranslated": 0, - "totalCosts": 236 + "totalCosts": 33 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 236 + "totalCosts": 33 }, "translated": { - "tmMatch": 1, - "default": 235, - "total": 236 + "tmMatch": 0, + "default": 33, + "total": 33 }, "targetTranslated": { - "tmMatch": 2, - "default": 378, - "total": 380 + "tmMatch": 0, + "default": 30, + "total": 30 }, "translatedByMt": { - "tmMatch": 1, - "default": 62, - "total": 63 + "tmMatch": 0, + "default": 8, + "total": 8 }, "approved": { "tmMatch": 0, @@ -26516,9 +34961,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 235, - "total": 236 + "tmMatch": 0, + "default": 33, + "total": 33 }, "approvalCosts": { "tmMatch": 0, @@ -26530,33 +34975,33 @@ }, { "user": { - "id": 15807851, - "username": "wli29115", - "fullName": "li wang (wli29115)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15807851/medium/07d19657d1cf1dd8c5f69758a586d787.png", + "id": 15907771, + "username": "drg.lelipirvu", + "fullName": "leli pirvu (drg.lelipirvu)", + "userRole": "Blocked", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15907771/medium/b3941584bb865a241af69913b7c662f8.png", "preTranslated": 0, - "totalCosts": 183 + "totalCosts": 34 }, "languages": [ { "language": { - "id": "sq", - "name": "Albanian", - "userRole": "Translator", + "id": "ja", + "name": "Japanese", + "userRole": "Blocked", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 183 + "totalCosts": 34 }, "translated": { "tmMatch": 0, - "default": 183, - "total": 183 + "default": 34, + "total": 34 }, "targetTranslated": { "tmMatch": 0, - "default": 341, - "total": 341 + "default": 226, + "total": 226 }, "translatedByMt": { "tmMatch": 0, @@ -26570,8 +35015,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 183, - "total": 183 + "default": 34, + "total": 34 }, "approvalCosts": { "tmMatch": 0, @@ -26583,38 +35028,38 @@ }, { "user": { - "id": 14361208, - "username": "Miromiro", - "fullName": "m a (Miromiro)", + "id": 15750423, + "username": "less_explorer", + "fullName": "less_explorer", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14361208/medium/0e919b24657bedb35977ded27061f7ea.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15750423/medium/44085a2751d1f337f4e4aee5459b2ccf.jpg", "preTranslated": 0, - "totalCosts": 1045 + "totalCosts": 1253 }, "languages": [ { "language": { - "id": "ka", - "name": "Georgian", + "id": "nl", + "name": "Dutch", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1045 + "totalCosts": 1253 }, "translated": { - "tmMatch": 506, - "default": 539, - "total": 1045 + "tmMatch": 2, + "default": 1251, + "total": 1253 }, "targetTranslated": { - "tmMatch": 410, - "default": 442, - "total": 852 + "tmMatch": 2, + "default": 1369, + "total": 1371 }, "translatedByMt": { - "tmMatch": 9, - "default": 6, - "total": 15 + "tmMatch": 1, + "default": 178, + "total": 179 }, "approved": { "tmMatch": 0, @@ -26622,9 +35067,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 506, - "default": 539, - "total": 1045 + "tmMatch": 2, + "default": 1251, + "total": 1253 }, "approvalCosts": { "tmMatch": 0, @@ -26636,33 +35081,33 @@ }, { "user": { - "id": 15793733, - "username": "mahdishahabnia10", - "fullName": "mahdi shahabnia (mahdishahabnia10)", + "id": 15807851, + "username": "wli29115", + "fullName": "li wang (wli29115)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15793733/medium/530cfa36d26d8b01474098c8952b0478.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15807851/medium/07d19657d1cf1dd8c5f69758a586d787.png", "preTranslated": 0, - "totalCosts": 2 + "totalCosts": 192 }, "languages": [ { "language": { - "id": "fa", - "name": "Persian", + "id": "sq", + "name": "Albanian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2 + "totalCosts": 192 }, "translated": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 192, + "total": 192 }, "targetTranslated": { "tmMatch": 0, - "default": 3, - "total": 3 + "default": 229, + "total": 229 }, "translatedByMt": { "tmMatch": 0, @@ -26676,8 +35121,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 2, - "total": 2 + "default": 192, + "total": 192 }, "approvalCosts": { "tmMatch": 0, @@ -26689,38 +35134,38 @@ }, { "user": { - "id": 15871701, - "username": "maxwellcotto", - "fullName": "maxwellcotto", - "userRole": "Blocked", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15871701/medium/211aaa985795803b88e9fa89069ed517.png", + "id": 15967847, + "username": "luniacllama", + "fullName": "luniacllama", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967847/medium/76cc99da9c9731bac54edf64508ac14f.jpeg", "preTranslated": 0, - "totalCosts": 13968 + "totalCosts": 31000 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Blocked", + "id": "kn", + "name": "Kannada", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 13696 + "totalCosts": 22876 }, "translated": { - "tmMatch": 45, - "default": 13651, - "total": 13696 + "tmMatch": 44, + "default": 22832, + "total": 22876 }, "targetTranslated": { - "tmMatch": 45, - "default": 13652, - "total": 13697 + "tmMatch": 81, + "default": 35470, + "total": 35551 }, "translatedByMt": { - "tmMatch": 0, + "tmMatch": 2, "default": 0, - "total": 0 + "total": 2 }, "approved": { "tmMatch": 0, @@ -26728,9 +35173,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 45, - "default": 13651, - "total": 13696 + "tmMatch": 44, + "default": 22832, + "total": 22876 }, "approvalCosts": { "tmMatch": 0, @@ -26740,22 +35185,22 @@ }, { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", - "userRole": "Blocked", + "id": "te", + "name": "Telugu", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 272 + "totalCosts": 8124 }, "translated": { - "tmMatch": 0, - "default": 272, - "total": 272 + "tmMatch": 14, + "default": 8110, + "total": 8124 }, "targetTranslated": { - "tmMatch": 0, - "default": 274, - "total": 274 + "tmMatch": 23, + "default": 10414, + "total": 10437 }, "translatedByMt": { "tmMatch": 0, @@ -26768,9 +35213,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 272, - "total": 272 + "tmMatch": 14, + "default": 8110, + "total": 8124 }, "approvalCosts": { "tmMatch": 0, @@ -26782,38 +35227,38 @@ }, { "user": { - "id": 15828639, - "username": "megatheikal", - "fullName": "megatheikal", + "id": 14361208, + "username": "Miromiro", + "fullName": "m a (Miromiro)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15828639/medium/c199b88496d8b3239364176913729eb4.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14361208/medium/6789521213374536d69ab0f27883e0d8.jpeg", "preTranslated": 0, - "totalCosts": 71 + "totalCosts": 1097 }, "languages": [ { "language": { - "id": "ms", - "name": "Malay", + "id": "ka", + "name": "Georgian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 71 + "totalCosts": 1097 }, "translated": { - "tmMatch": 1, - "default": 70, - "total": 71 + "tmMatch": 23, + "default": 1074, + "total": 1097 }, "targetTranslated": { - "tmMatch": 1, - "default": 83, - "total": 84 + "tmMatch": 20, + "default": 811, + "total": 831 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, @@ -26821,9 +35266,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 70, - "total": 71 + "tmMatch": 23, + "default": 1074, + "total": 1097 }, "approvalCosts": { "tmMatch": 0, @@ -26835,33 +35280,33 @@ }, { "user": { - "id": 15819187, - "username": "meshackomosa", - "fullName": "meshack omosa nyakundi (meshackomosa)", + "id": 15949345, + "username": "mehdibouzit", + "fullName": "mehdibouzit", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15819187/medium/e063da315c4a2839eca091120e5b3b8d.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15949345/medium/2eb9da6ad8eb6399c9aff2b21957916d.png", "preTranslated": 0, - "totalCosts": 16 + "totalCosts": 1066 }, "languages": [ { "language": { - "id": "sw", - "name": "Swahili", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 16 + "totalCosts": 1066 }, "translated": { "tmMatch": 0, - "default": 16, - "total": 16 + "default": 1066, + "total": 1066 }, "targetTranslated": { "tmMatch": 0, - "default": 16, - "total": 16 + "default": 1206, + "total": 1206 }, "translatedByMt": { "tmMatch": 0, @@ -26875,8 +35320,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 16, - "total": 16 + "default": 1066, + "total": 1066 }, "approvalCosts": { "tmMatch": 0, @@ -26888,38 +35333,38 @@ }, { "user": { - "id": 15680077, - "username": "miyamo", - "fullName": "miyamo", + "id": 15685239, + "username": "petitmewen", + "fullName": "mobby45 (petitmewen)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15680077/medium/a9db402339c4ac996a32133a844692ef_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg", "preTranslated": 0, - "totalCosts": 5054 + "totalCosts": 4 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5054 + "totalCosts": 4 }, "translated": { - "tmMatch": 19, - "default": 5035, - "total": 5054 + "tmMatch": 0, + "default": 4, + "total": 4 }, "targetTranslated": { - "tmMatch": 57, - "default": 14100, - "total": 14157 + "tmMatch": 0, + "default": 4, + "total": 4 }, "translatedByMt": { - "tmMatch": 3, - "default": 192, - "total": 195 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -26927,9 +35372,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 19, - "default": 5035, - "total": 5054 + "tmMatch": 0, + "default": 4, + "total": 4 }, "approvalCosts": { "tmMatch": 0, @@ -26941,38 +35386,38 @@ }, { "user": { - "id": 15100235, - "username": "mon4short", - "fullName": "mon4short", + "id": 15363186, + "username": "naiba3434", + "fullName": "naiba quliyeva (naiba3434)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15100235/medium/b9d9032c2f8ed27061c6b7a4f997946b.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15363186/medium/d4f4865f0038539de56219781b308488.jpeg", "preTranslated": 0, - "totalCosts": 136 + "totalCosts": 33 }, "languages": [ { "language": { - "id": "fil", - "name": "Filipino", + "id": "cs", + "name": "Czech", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 136 + "totalCosts": 33 }, "translated": { - "tmMatch": 3, - "default": 133, - "total": 136 + "tmMatch": 0, + "default": 33, + "total": 33 }, "targetTranslated": { - "tmMatch": 3, - "default": 150, - "total": 153 + "tmMatch": 0, + "default": 24, + "total": 24 }, "translatedByMt": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 33, + "total": 33 }, "approved": { "tmMatch": 0, @@ -26980,9 +35425,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 133, - "total": 136 + "tmMatch": 0, + "default": 33, + "total": 33 }, "approvalCosts": { "tmMatch": 0, @@ -26994,33 +35439,33 @@ }, { "user": { - "id": 15795139, - "username": "philong2004", - "fullName": "nguyễn phi long (philong2004)", + "id": 15974199, + "username": "nanlay", + "fullName": "nanlay Komo (nanlay)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15795139/medium/13dd54f0be5773cace706b9511307f4d_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15974199/medium/94da9eeeb1c5e28fbf9ed1ab8d45567b.jpeg", "preTranslated": 0, - "totalCosts": 400 + "totalCosts": 10 }, "languages": [ { "language": { - "id": "vi", - "name": "Vietnamese", + "id": "my", + "name": "Burmese", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 400 + "totalCosts": 10 }, "translated": { - "tmMatch": 2, - "default": 398, - "total": 400 + "tmMatch": 0, + "default": 10, + "total": 10 }, "targetTranslated": { - "tmMatch": 1, - "default": 550, - "total": 551 + "tmMatch": 0, + "default": 7, + "total": 7 }, "translatedByMt": { "tmMatch": 0, @@ -27033,9 +35478,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 398, - "total": 400 + "tmMatch": 0, + "default": 10, + "total": 10 }, "approvalCosts": { "tmMatch": 0, @@ -27047,38 +35492,38 @@ }, { "user": { - "id": 14823260, - "username": "omahs", - "fullName": "omahs", + "id": 15967187, + "username": "MSN.Nazi", + "fullName": "nazi mehdizadeh (MSN.Nazi)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967187/medium/d8b24821c82f6b59e0a57b15f1671749.jpeg", "preTranslated": 0, - "totalCosts": 370 + "totalCosts": 655 }, "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 370 + "totalCosts": 655 }, "translated": { - "tmMatch": 22, - "default": 348, - "total": 370 + "tmMatch": 0, + "default": 655, + "total": 655 }, "targetTranslated": { - "tmMatch": 23, - "default": 365, - "total": 388 + "tmMatch": 0, + "default": 798, + "total": 798 }, "translatedByMt": { - "tmMatch": 15, - "default": 254, - "total": 269 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -27086,9 +35531,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 22, - "default": 348, - "total": 370 + "tmMatch": 0, + "default": 655, + "total": 655 }, "approvalCosts": { "tmMatch": 0, @@ -27100,33 +35545,33 @@ }, { "user": { - "id": 14086443, - "username": "rak810", - "fullName": "rak810", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14086443/medium/39269b4f7301c0e4b2ddb56fa91b7b24.png", + "id": 15521636, + "username": "ngocloi981993", + "fullName": "nickjohnson (ngocloi981993)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15521636/medium/a3f847e34594cb7df1e63a4cad31c511.jpg", "preTranslated": 0, - "totalCosts": 12 + "totalCosts": 2 }, "languages": [ { "language": { - "id": "bn", - "name": "Bengali", - "userRole": "Limited Access", + "id": "vi", + "name": "Vietnamese", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12 + "totalCosts": 2 }, "translated": { "tmMatch": 0, - "default": 12, - "total": 12 + "default": 2, + "total": 2 }, "targetTranslated": { "tmMatch": 0, - "default": 22, - "total": 22 + "default": 2, + "total": 2 }, "translatedByMt": { "tmMatch": 0, @@ -27140,8 +35585,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 12, - "total": 12 + "default": 2, + "total": 2 }, "approvalCosts": { "tmMatch": 0, @@ -27153,33 +35598,33 @@ }, { "user": { - "id": 15777897, - "username": "setsuna.21", - "fullName": "setsuna-214 (setsuna.21)", + "id": 15966961, + "username": "nurkardelens", + "fullName": "nur (nurkardelens)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15777897/medium/cfda4c3fe5ef77177da5a2b1244b91a7.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966961/medium/3ea2ecfa398148225a22a0795ab84a16.jpeg", "preTranslated": 0, - "totalCosts": 7 + "totalCosts": 1989 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7 + "totalCosts": 1989 }, "translated": { - "tmMatch": 0, - "default": 7, - "total": 7 + "tmMatch": 8, + "default": 1981, + "total": 1989 }, "targetTranslated": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 7, + "default": 1624, + "total": 1631 }, "translatedByMt": { "tmMatch": 0, @@ -27192,9 +35637,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 7, - "total": 7 + "tmMatch": 8, + "default": 1981, + "total": 1989 }, "approvalCosts": { "tmMatch": 0, @@ -27206,33 +35651,33 @@ }, { "user": { - "id": 15760943, - "username": "fengshanshan", - "fullName": "shanshan feng (Sannie) (fengshanshan)", + "id": 15966191, + "username": "0xokan", + "fullName": "okanaslan.eth 🪶 (0xokan)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15760943/medium/e4f42e37ab85766774b73c4bab74ff5d.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966191/medium/a5d1d36d7404974d591cbcf59f089df9.jpg", "preTranslated": 0, - "totalCosts": 146 + "totalCosts": 5044 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "az", + "name": "Azerbaijani", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 146 + "totalCosts": 2083 }, "translated": { "tmMatch": 0, - "default": 146, - "total": 146 + "default": 2083, + "total": 2083 }, "targetTranslated": { "tmMatch": 0, - "default": 239, - "total": 239 + "default": 1803, + "total": 1803 }, "translatedByMt": { "tmMatch": 0, @@ -27246,51 +35691,38 @@ }, "translationCosts": { "tmMatch": 0, - "default": 146, - "total": 146 + "default": 2083, + "total": 2083 }, "approvalCosts": { "tmMatch": 0, "default": 0, - "total": 0 - } - } - ] - }, - { - "user": { - "id": 15807677, - "username": "sinac7994cmailcom", - "fullName": "sina goleij (sinac7994cmailcom)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15807677/medium/f36d9f7075cd908017c18bfbbfc8368c.jpeg", - "preTranslated": 0, - "totalCosts": 7 - }, - "languages": [ + "total": 0 + } + }, { "language": { - "id": "fa", - "name": "Persian", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 7 + "totalCosts": 2961 }, "translated": { - "tmMatch": 2, - "default": 5, - "total": 7 + "tmMatch": 9, + "default": 2952, + "total": 2961 }, "targetTranslated": { - "tmMatch": 2, - "default": 5, - "total": 7 + "tmMatch": 9, + "default": 2478, + "total": 2487 }, "translatedByMt": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 5, + "default": 0, + "total": 5 }, "approved": { "tmMatch": 0, @@ -27298,9 +35730,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 5, - "total": 7 + "tmMatch": 9, + "default": 2952, + "total": 2961 }, "approvalCosts": { "tmMatch": 0, @@ -27312,38 +35744,38 @@ }, { "user": { - "id": 15766053, - "username": "solomonton", - "fullName": "solomonton", + "id": 14823260, + "username": "omahs", + "fullName": "omahs", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15766053/medium/0906a453f0998a2324711163ac2f587c.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14823260/medium/2e90039ed53752ac5277c9cf4fce6fe7.jpeg", "preTranslated": 0, - "totalCosts": 663 + "totalCosts": 19394 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "fr", + "name": "French", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 663 + "totalCosts": 19394 }, "translated": { - "tmMatch": 10, - "default": 653, - "total": 663 + "tmMatch": 75, + "default": 19319, + "total": 19394 }, "targetTranslated": { - "tmMatch": 8, - "default": 607, - "total": 615 + "tmMatch": 89, + "default": 22477, + "total": 22566 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 12, + "default": 15, + "total": 27 }, "approved": { "tmMatch": 0, @@ -27351,9 +35783,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 10, - "default": 653, - "total": 663 + "tmMatch": 75, + "default": 19319, + "total": 19394 }, "approvalCosts": { "tmMatch": 0, @@ -27365,13 +35797,13 @@ }, { "user": { - "id": 15582389, - "username": "fatmiterbah", - "fullName": "terbah fatmi (fatmiterbah)", + "id": 15957025, + "username": "otmane.malih", + "fullName": "otmane malih (otmane.malih)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15582389/medium/92aaf9f0d2d77164ee6674dcf3623224.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15957025/medium/3d560c0a57024088a7aabfd4ef565fdc.jpeg", "preTranslated": 0, - "totalCosts": 161 + "totalCosts": 11 }, "languages": [ { @@ -27381,17 +35813,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 161 + "totalCosts": 11 }, "translated": { "tmMatch": 0, - "default": 161, - "total": 161 + "default": 11, + "total": 11 }, "targetTranslated": { "tmMatch": 0, - "default": 131, - "total": 131 + "default": 8, + "total": 8 }, "translatedByMt": { "tmMatch": 0, @@ -27405,8 +35837,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 161, - "total": 161 + "default": 11, + "total": 11 }, "approvalCosts": { "tmMatch": 0, @@ -27418,38 +35850,38 @@ }, { "user": { - "id": 15810797, - "username": "truthdeal", - "fullName": "truthdeal", + "id": 15978259, + "username": "poponiat", + "fullName": "poponiat", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15810797/medium/fffa31f58ceab96c6db901b98fabf132.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15978259/medium/bf2ca2be15b9cb341e6e6f8f94b0e9f8.png", "preTranslated": 0, - "totalCosts": 1230 + "totalCosts": 132 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "de", + "name": "German", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1230 + "totalCosts": 132 }, "translated": { - "tmMatch": 18, - "default": 1212, - "total": 1230 + "tmMatch": 0, + "default": 132, + "total": 132 }, "targetTranslated": { - "tmMatch": 19, - "default": 1037, - "total": 1056 + "tmMatch": 0, + "default": 140, + "total": 140 }, "translatedByMt": { - "tmMatch": 3, + "tmMatch": 0, "default": 0, - "total": 3 + "total": 0 }, "approved": { "tmMatch": 0, @@ -27457,9 +35889,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 18, - "default": 1212, - "total": 1230 + "tmMatch": 0, + "default": 132, + "total": 132 }, "approvalCosts": { "tmMatch": 0, @@ -27471,33 +35903,33 @@ }, { "user": { - "id": 15635525, - "username": "dailide30", - "fullName": "virguiks Artimka (dailide30)", + "id": 15951683, + "username": "raminkabirian", + "fullName": "ramin kabirian (raminkabirian)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15635525/medium/2e188315a3b8539602cd67c7da5637ea.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15951683/medium/18dec6f958da7d7e54762475931025c1.png", "preTranslated": 0, - "totalCosts": 45 + "totalCosts": 26 }, "languages": [ { "language": { - "id": "lt", - "name": "Lithuanian", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 45 + "totalCosts": 26 }, "translated": { "tmMatch": 0, - "default": 45, - "total": 45 + "default": 26, + "total": 26 }, "targetTranslated": { "tmMatch": 0, - "default": 36, - "total": 36 + "default": 26, + "total": 26 }, "translatedByMt": { "tmMatch": 0, @@ -27511,8 +35943,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 45, - "total": 45 + "default": 26, + "total": 26 }, "approvalCosts": { "tmMatch": 0, @@ -27524,38 +35956,38 @@ }, { "user": { - "id": 15623859, - "username": "w33d", - "fullName": "w33d", + "id": 15880755, + "username": "RatEnjoyerr", + "fullName": "rat (RatEnjoyerr)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15623859/medium/1b48569cd42fdf8a9e5af38841b58d4f.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15880755/medium/f9850ed271e4551da3c85961378e8e45.JPG", "preTranslated": 0, - "totalCosts": 3141 + "totalCosts": 76 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 3141 + "totalCosts": 76 }, "translated": { - "tmMatch": 4, - "default": 3137, - "total": 3141 + "tmMatch": 2, + "default": 74, + "total": 76 }, "targetTranslated": { - "tmMatch": 7, - "default": 5025, - "total": 5032 + "tmMatch": 2, + "default": 54, + "total": 56 }, "translatedByMt": { "tmMatch": 0, - "default": 8, - "total": 8 + "default": 42, + "total": 42 }, "approved": { "tmMatch": 0, @@ -27563,9 +35995,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 3137, - "total": 3141 + "tmMatch": 2, + "default": 74, + "total": 76 }, "approvalCosts": { "tmMatch": 0, @@ -27577,38 +36009,38 @@ }, { "user": { - "id": 15399006, - "username": "Xeift", - "fullName": "xeift.eth (Xeift)", + "id": 14920051, + "username": "regislanderge", + "fullName": "regislanderge", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/723ec3a12265a43f8fd84d9079459c44.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14920051/medium/9ba58eec03e143bcd1acbe5b2ecf8250.jpg", "preTranslated": 0, - "totalCosts": 2181 + "totalCosts": 6796 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "id", + "name": "Indonesian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2181 + "totalCosts": 6796 }, "translated": { - "tmMatch": 2, - "default": 2179, - "total": 2181 + "tmMatch": 7, + "default": 6789, + "total": 6796 }, "targetTranslated": { "tmMatch": 8, - "default": 3589, - "total": 3597 + "default": 6203, + "total": 6211 }, "translatedByMt": { - "tmMatch": 2, + "tmMatch": 0, "default": 0, - "total": 2 + "total": 0 }, "approved": { "tmMatch": 0, @@ -27616,9 +36048,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 2, - "default": 2179, - "total": 2181 + "tmMatch": 7, + "default": 6789, + "total": 6796 }, "approvalCosts": { "tmMatch": 0, @@ -27630,33 +36062,33 @@ }, { "user": { - "id": 15799649, - "username": "xl010612", - "fullName": "xl010612", + "id": 15955147, + "username": "shun.eth", + "fullName": "shun.eth", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15799649/medium/7b1a99ae5d2db271cc6b980753bdb0da.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15955147/medium/9290171405f2de1979270e1f309c57f7_default.png", "preTranslated": 0, - "totalCosts": 31 + "totalCosts": 80 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 31 + "totalCosts": 80 }, "translated": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 80, + "total": 80 }, "targetTranslated": { "tmMatch": 0, - "default": 45, - "total": 45 + "default": 167, + "total": 167 }, "translatedByMt": { "tmMatch": 0, @@ -27670,8 +36102,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 31, - "total": 31 + "default": 80, + "total": 80 }, "approvalCosts": { "tmMatch": 0, @@ -27683,48 +36115,48 @@ }, { "user": { - "id": 15782669, - "username": "Aco_StudioGambit", - "fullName": "Łukasz Kozłowski (Aco_StudioGambit)", - "userRole": "Translator, Proofreader", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15782669/medium/a3e8b39cc399da34883460de3b926a0f_default.png", + "id": 15967119, + "username": "timtey", + "fullName": "timtey", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967119/medium/cdc0fbd1e4667f13ed75ac64b4e6c809.jpeg", "preTranslated": 0, - "totalCosts": 8220 + "totalCosts": 13817 }, "languages": [ { "language": { - "id": "pl", - "name": "Polish", - "userRole": "Translator, Proofreader", + "id": "fa", + "name": "Persian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 8220 + "totalCosts": 13817 }, "translated": { - "tmMatch": 98, - "default": 8122, - "total": 8220 + "tmMatch": 487, + "default": 13330, + "total": 13817 }, "targetTranslated": { - "tmMatch": 95, - "default": 7706, - "total": 7801 + "tmMatch": 562, + "default": 16019, + "total": 16581 }, "translatedByMt": { - "tmMatch": 0, - "default": 53, - "total": 53 + "tmMatch": 38, + "default": 8, + "total": 46 }, "approved": { "tmMatch": 0, "default": 0, - "total": 9703 + "total": 0 }, "translationCosts": { - "tmMatch": 98, - "default": 8122, - "total": 8220 + "tmMatch": 487, + "default": 13330, + "total": 13817 }, "approvalCosts": { "tmMatch": 0, @@ -27736,38 +36168,38 @@ }, { "user": { - "id": 15643769, - "username": "aliaksei.niamkovich", - "fullName": "Аляксей (aliaksei.niamkovich)", + "id": 15912649, + "username": "tnnnnnnnn2", + "fullName": "tnn tnn (tnnnnnnnn2)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15643769/medium/ff9aa0923a3cfac105d77160b0c03b41.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15912649/medium/6e4c7a7de3ed6449814e0c7de673dc30.png", "preTranslated": 0, - "totalCosts": 283 + "totalCosts": 10 }, "languages": [ { "language": { - "id": "be", - "name": "Belarusian", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 283 + "totalCosts": 10 }, "translated": { - "tmMatch": 23, - "default": 260, - "total": 283 + "tmMatch": 0, + "default": 10, + "total": 10 }, "targetTranslated": { - "tmMatch": 26, - "default": 249, - "total": 275 + "tmMatch": 0, + "default": 9, + "total": 9 }, "translatedByMt": { - "tmMatch": 3, + "tmMatch": 0, "default": 0, - "total": 3 + "total": 0 }, "approved": { "tmMatch": 0, @@ -27775,9 +36207,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 23, - "default": 260, - "total": 283 + "tmMatch": 0, + "default": 10, + "total": 10 }, "approvalCosts": { "tmMatch": 0, @@ -27789,38 +36221,38 @@ }, { "user": { - "id": 15824883, - "username": "anastasiia.danchuk", - "fullName": "Анастасія Олександрівна Данчук (anastasiia.danchuk)", + "id": 14392078, + "username": "205x.tech", + "fullName": "tuo lao (205x.tech)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824883/medium/f51aaf00be7080e10e1009df40dada0e.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14392078/medium/65dff61bdce5bba27d89e7957fd8e8dc.png", "preTranslated": 0, - "totalCosts": 234 + "totalCosts": 180 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 234 + "totalCosts": 180 }, "translated": { - "tmMatch": 3, - "default": 231, - "total": 234 + "tmMatch": 0, + "default": 180, + "total": 180 }, "targetTranslated": { - "tmMatch": 3, - "default": 212, - "total": 215 + "tmMatch": 0, + "default": 307, + "total": 307 }, "translatedByMt": { - "tmMatch": 3, - "default": 13, - "total": 16 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -27828,9 +36260,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 3, - "default": 231, - "total": 234 + "tmMatch": 0, + "default": 180, + "total": 180 }, "approvalCosts": { "tmMatch": 0, @@ -27842,33 +36274,33 @@ }, { "user": { - "id": 15824121, - "username": "anna_brynchuk", - "fullName": "Анна Анатоліївна Бринчук (anna_brynchuk)", + "id": 15887043, + "username": "vivianebuge", + "fullName": "vivianebuge", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824121/medium/b86052ff9b564063757660565167f895_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15887043/medium/c0732f0c01e671b0863789e7427b6a98_default.png", "preTranslated": 0, - "totalCosts": 130 + "totalCosts": 117 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "pt-BR", + "name": "Portuguese, Brazilian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 130 + "totalCosts": 117 }, "translated": { - "tmMatch": 0, - "default": 130, - "total": 130 + "tmMatch": 11, + "default": 106, + "total": 117 }, "targetTranslated": { - "tmMatch": 0, - "default": 108, - "total": 108 + "tmMatch": 11, + "default": 110, + "total": 121 }, "translatedByMt": { "tmMatch": 0, @@ -27881,9 +36313,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 130, - "total": 130 + "tmMatch": 11, + "default": 106, + "total": 117 }, "approvalCosts": { "tmMatch": 0, @@ -27895,38 +36327,38 @@ }, { "user": { - "id": 15557697, - "username": "viktoriia.cherniak", - "fullName": "Вікторія Леонідівна Черняк (viktoriia.cherniak)", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15557697/medium/c05126e00043ef99135d9e733874172e.jpeg", + "id": 15894449, + "username": "wosek_", + "fullName": "wosek_", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15894449/medium/a1d92e3a822252a09f842a8a5451c403.jpg", "preTranslated": 0, - "totalCosts": 111 + "totalCosts": 83204 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", - "userRole": "Limited Access", + "id": "id", + "name": "Indonesian", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 111 + "totalCosts": 1 }, "translated": { "tmMatch": 0, - "default": 111, - "total": 111 + "default": 1, + "total": 1 }, "targetTranslated": { "tmMatch": 0, - "default": 82, - "total": 82 + "default": 1, + "total": 1 }, "translatedByMt": { "tmMatch": 0, - "default": 52, - "total": 52 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -27935,51 +36367,38 @@ }, "translationCosts": { "tmMatch": 0, - "default": 111, - "total": 111 + "default": 1, + "total": 1 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15766833, - "username": "denislisica304", - "fullName": "Денис Лисица (denislisica304)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15766833/medium/8de69d3c4dad09870b6e9b312e959a17.png", - "preTranslated": 0, - "totalCosts": 333 - }, - "languages": [ + }, { "language": { - "id": "ru", - "name": "Russian", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 333 + "totalCosts": 83203 }, "translated": { - "tmMatch": 0, - "default": 333, - "total": 333 + "tmMatch": 5104, + "default": 78099, + "total": 83203 }, "targetTranslated": { - "tmMatch": 0, - "default": 328, - "total": 328 + "tmMatch": 4720, + "default": 71690, + "total": 76410 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 3, + "default": 25, + "total": 28 }, "approved": { "tmMatch": 0, @@ -27987,9 +36406,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 333, - "total": 333 + "tmMatch": 5104, + "default": 78099, + "total": 83203 }, "approvalCosts": { "tmMatch": 0, @@ -28001,38 +36420,38 @@ }, { "user": { - "id": 15824955, - "username": "dmytro.zalatukhin", - "fullName": "Дмитро Сергійович Залатухін (dmytro.zalatukhin)", + "id": 15399006, + "username": "Xeift", + "fullName": "xeift.eth (Xeift)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824955/medium/517b6400bc31546d1889eb56a4d5f6ee.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15399006/medium/4b4638642287027a89529ecb11074e44.png", "preTranslated": 0, - "totalCosts": 2619 + "totalCosts": 38121 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "zh-TW", + "name": "Chinese Traditional", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 2619 + "totalCosts": 38121 }, "translated": { - "tmMatch": 30, - "default": 2589, - "total": 2619 + "tmMatch": 331, + "default": 37790, + "total": 38121 }, "targetTranslated": { - "tmMatch": 31, - "default": 2408, - "total": 2439 + "tmMatch": 582, + "default": 63080, + "total": 63662 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 22, + "default": 13, + "total": 35 }, "approved": { "tmMatch": 0, @@ -28040,9 +36459,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 30, - "default": 2589, - "total": 2619 + "tmMatch": 331, + "default": 37790, + "total": 38121 }, "approvalCosts": { "tmMatch": 0, @@ -28054,38 +36473,38 @@ }, { "user": { - "id": 15854559, - "username": "kathiehaldina", - "fullName": "Катя Галдіна (kathiehaldina)", + "id": 15636829, + "username": "bdwms", + "fullName": "xiaoyao li (bdwms)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15854559/medium/fcdb6feff60ccb394177bcba4ac42905.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15636829/medium/434d40bf423f53879e795cc158b1b892.jpeg", "preTranslated": 0, - "totalCosts": 106 + "totalCosts": 1552 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 106 + "totalCosts": 1552 }, "translated": { - "tmMatch": 0, - "default": 106, - "total": 106 + "tmMatch": 18, + "default": 1534, + "total": 1552 }, "targetTranslated": { - "tmMatch": 0, - "default": 97, - "total": 97 + "tmMatch": 34, + "default": 2362, + "total": 2396 }, "translatedByMt": { "tmMatch": 0, - "default": 1, - "total": 1 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -28093,9 +36512,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 106, - "total": 106 + "tmMatch": 18, + "default": 1534, + "total": 1552 }, "approvalCosts": { "tmMatch": 0, @@ -28107,38 +36526,38 @@ }, { "user": { - "id": 15880209, - "username": "malovushka", - "fullName": "Кира Невская (malovushka)", + "id": 15967667, + "username": "iremkoci", + "fullName": "İrem KOÇİ (iremkoci)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15880209/medium/653ecc869694e42a4d99360288cc285c.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15967667/medium/ac3a3d86bf757e56162d0faa7a03058d_default.png", "preTranslated": 0, - "totalCosts": 1416 + "totalCosts": 1274 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1416 + "totalCosts": 1274 }, "translated": { - "tmMatch": 4, - "default": 1412, - "total": 1416 + "tmMatch": 0, + "default": 1274, + "total": 1274 }, "targetTranslated": { - "tmMatch": 5, - "default": 1245, - "total": 1250 + "tmMatch": 0, + "default": 1016, + "total": 1016 }, "translatedByMt": { "tmMatch": 0, - "default": 46, - "total": 46 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -28146,9 +36565,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 4, - "default": 1412, - "total": 1416 + "tmMatch": 0, + "default": 1274, + "total": 1274 }, "approvalCosts": { "tmMatch": 0, @@ -28160,48 +36579,48 @@ }, { "user": { - "id": 15788023, - "username": "Xaoc666", - "fullName": "Константин Седунов (Xaoc666)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15788023/medium/9ca25ca1d01ae8fe1d31c02bd89be2e3.jpeg", + "id": 15782669, + "username": "Aco_StudioGambit", + "fullName": "Łukasz Kozłowski (Aco_StudioGambit)", + "userRole": "Translator, Proofreader", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15782669/medium/a3e8b39cc399da34883460de3b926a0f_default.png", "preTranslated": 0, - "totalCosts": 20 + "totalCosts": 76 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", - "userRole": "Translator", + "id": "pl", + "name": "Polish", + "userRole": "Translator, Proofreader", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 20 + "totalCosts": 76 }, "translated": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 19, + "default": 57, + "total": 76 }, "targetTranslated": { - "tmMatch": 0, - "default": 14, - "total": 14 + "tmMatch": 22, + "default": 52, + "total": 74 }, "translatedByMt": { "tmMatch": 0, - "default": 20, - "total": 20 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, "default": 0, - "total": 0 + "total": 125 }, "translationCosts": { - "tmMatch": 0, - "default": 20, - "total": 20 + "tmMatch": 19, + "default": 57, + "total": 76 }, "approvalCosts": { "tmMatch": 0, @@ -28213,38 +36632,38 @@ }, { "user": { - "id": 15825921, - "username": "mariia.pryshko", - "fullName": "Марія Володимирівна Пришко (mariia.pryshko)", + "id": 15966669, + "username": "0xSahbaz", + "fullName": "Şahbaz Barış (0xSahbaz)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15825921/medium/75b88c5c4f949a723e15dccdaeb69c16.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966669/medium/e56294c61e4c32a43c8735040ea67364_default.png", "preTranslated": 0, - "totalCosts": 106 + "totalCosts": 5872 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 106 + "totalCosts": 5872 }, "translated": { - "tmMatch": 0, - "default": 106, - "total": 106 + "tmMatch": 550, + "default": 5322, + "total": 5872 }, "targetTranslated": { - "tmMatch": 0, - "default": 96, - "total": 96 + "tmMatch": 515, + "default": 4756, + "total": 5271 }, "translatedByMt": { "tmMatch": 0, - "default": 20, - "total": 20 + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -28252,9 +36671,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 106, - "total": 106 + "tmMatch": 550, + "default": 5322, + "total": 5872 }, "approvalCosts": { "tmMatch": 0, @@ -28266,33 +36685,33 @@ }, { "user": { - "id": 15809855, - "username": "mariapetrusenko445", - "fullName": "Марія Петрусенко (mariapetrusenko445)", + "id": 15966263, + "username": "palasevketp", + "fullName": "Şevket P. (palasevketp)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15809855/medium/b247c2e06bb3cc7e3cee3c7000cc963c.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966263/medium/0c89857b9ad32ba2256c620214a592a0.jpeg", "preTranslated": 0, - "totalCosts": 12 + "totalCosts": 32 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "tr", + "name": "Turkish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 12 + "totalCosts": 32 }, "translated": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 1, + "default": 31, + "total": 32 }, "targetTranslated": { - "tmMatch": 0, - "default": 11, - "total": 11 + "tmMatch": 1, + "default": 29, + "total": 30 }, "translatedByMt": { "tmMatch": 0, @@ -28305,9 +36724,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 12, - "total": 12 + "tmMatch": 1, + "default": 31, + "total": 32 }, "approvalCosts": { "tmMatch": 0, @@ -28319,33 +36738,33 @@ }, { "user": { - "id": 15680699, - "username": "mishazwart", - "fullName": "Михаил Калашников (mishazwart)", + "id": 15994825, + "username": "gettingmoresalo", + "fullName": "Андрей Барканов (gettingmoresalo)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15680699/medium/bac05b74e17f65939de3c07452768e6a.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15994825/medium/ce32b5b33da7aa5d67803aa9fa312023.jpeg", "preTranslated": 0, - "totalCosts": 592 + "totalCosts": 14 }, "languages": [ { "language": { - "id": "et", - "name": "Estonian", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 592 + "totalCosts": 14 }, "translated": { "tmMatch": 0, - "default": 592, - "total": 592 + "default": 14, + "total": 14 }, "targetTranslated": { "tmMatch": 0, - "default": 485, - "total": 485 + "default": 16, + "total": 16 }, "translatedByMt": { "tmMatch": 0, @@ -28359,8 +36778,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 592, - "total": 592 + "default": 14, + "total": 14 }, "approvalCosts": { "tmMatch": 0, @@ -28372,38 +36791,38 @@ }, { "user": { - "id": 15199956, - "username": "zhooookova", - "fullName": "Надежда Жукова (zhooookova)", + "id": 15951797, + "username": "redfoxlus90", + "fullName": "Андрей Лысенко (redfoxlus90)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15199956/medium/74aea56a748b12af52448b2ecf7ca2ac.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15951797/medium/c1ecae5805ed96cd0349ec12654da1ce.jpeg", "preTranslated": 0, - "totalCosts": 166 + "totalCosts": 12 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 166 + "totalCosts": 12 }, "translated": { - "tmMatch": 5, - "default": 161, - "total": 166 + "tmMatch": 0, + "default": 12, + "total": 12 }, "targetTranslated": { - "tmMatch": 5, - "default": 146, - "total": 151 + "tmMatch": 0, + "default": 12, + "total": 12 }, "translatedByMt": { - "tmMatch": 1, - "default": 10, - "total": 11 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -28411,9 +36830,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 161, - "total": 166 + "tmMatch": 0, + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -28425,38 +36844,38 @@ }, { "user": { - "id": 15800361, - "username": "nazarenkooleksij0", - "fullName": "Олексій Назаренко (nazarenkooleksij0)", + "id": 15994051, + "username": "csgo7777gg", + "fullName": "Артем Ксго (csgo7777gg)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15800361/medium/28ccc598a38dc7bb5284524734254c5b.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15994051/medium/5ffbfdb7c384b441588b3f63ed171d90.png", "preTranslated": 0, - "totalCosts": 67 + "totalCosts": 7 }, "languages": [ { "language": { - "id": "uk", - "name": "Ukrainian", + "id": "pl", + "name": "Polish", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 67 + "totalCosts": 7 }, "translated": { - "tmMatch": 5, - "default": 62, - "total": 67 + "tmMatch": 0, + "default": 7, + "total": 7 }, "targetTranslated": { - "tmMatch": 5, - "default": 56, - "total": 61 + "tmMatch": 0, + "default": 0, + "total": 0 }, "translatedByMt": { - "tmMatch": 1, - "default": 30, - "total": 31 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -28464,9 +36883,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 62, - "total": 67 + "tmMatch": 0, + "default": 7, + "total": 7 }, "approvalCosts": { "tmMatch": 0, @@ -28478,38 +36897,38 @@ }, { "user": { - "id": 15823915, - "username": "Jayblazer", - "fullName": "Питбуль и человек (Jayblazer)", + "id": 14487442, + "username": "artsemi.shyshkin", + "fullName": "Артемий Шишкин (artsemi.shyshkin)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15823915/medium/232f9c4ec4c40afd18fe7c4f4dc4e8a3.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/14487442/medium/a581288f02ce975e8339e18224033b81.jpeg", "preTranslated": 0, - "totalCosts": 148 + "totalCosts": 85 }, "languages": [ { "language": { - "id": "ru", - "name": "Russian", + "id": "be", + "name": "Belarusian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 148 + "totalCosts": 85 }, "translated": { - "tmMatch": 13, - "default": 135, - "total": 148 + "tmMatch": 0, + "default": 85, + "total": 85 }, "targetTranslated": { - "tmMatch": 13, - "default": 116, - "total": 129 + "tmMatch": 0, + "default": 86, + "total": 86 }, "translatedByMt": { - "tmMatch": 3, - "default": 2, - "total": 5 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -28517,9 +36936,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 13, - "default": 135, - "total": 148 + "tmMatch": 0, + "default": 85, + "total": 85 }, "approvalCosts": { "tmMatch": 0, @@ -28531,33 +36950,33 @@ }, { "user": { - "id": 15766779, - "username": "federallbot", - "fullName": "Сергей Маринин (federallbot)", + "id": 15898479, + "username": "zaporozcenkobogdan244", + "fullName": "Богдан Запорожченко (zaporozcenkobogdan244)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15766779/medium/ded723a6c5df9af88e9b552850577ef4.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15898479/medium/9e4e9217604d161027c3f57f109d2e6d.png", "preTranslated": 0, - "totalCosts": 53 + "totalCosts": 10 }, "languages": [ { "language": { - "id": "af", - "name": "Afrikaans", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15 + "totalCosts": 10 }, "translated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 10, + "default": 0, + "total": 10 }, "targetTranslated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 10, + "default": 0, + "total": 10 }, "translatedByMt": { "tmMatch": 0, @@ -28570,39 +36989,52 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 10, + "default": 0, + "total": 10 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15824955, + "username": "dmytro.zalatukhin", + "fullName": "Дмитро Сергійович Залатухін (dmytro.zalatukhin)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15824955/medium/517b6400bc31546d1889eb56a4d5f6ee.jpeg", + "preTranslated": 0, + "totalCosts": 6244 + }, + "languages": [ { "language": { - "id": "eu", - "name": "Basque", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 15 + "totalCosts": 6244 }, "translated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 32, + "default": 6212, + "total": 6244 }, "targetTranslated": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 32, + "default": 5747, + "total": 5779 }, "translatedByMt": { - "tmMatch": 0, - "default": 0, - "total": 0 + "tmMatch": 1, + "default": 4, + "total": 5 }, "approved": { "tmMatch": 0, @@ -28610,34 +37042,47 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 15, - "total": 15 + "tmMatch": 32, + "default": 6212, + "total": 6244 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15899207, + "username": "kalmikov.bagrat94", + "fullName": "Михаил Осташов (kalmikov.bagrat94)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15899207/medium/577c5417e2717c13168130995a61839b.jpeg", + "preTranslated": 0, + "totalCosts": 37 + }, + "languages": [ { "language": { - "id": "fr", - "name": "French", + "id": "ru", + "name": "Russian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 6 + "totalCosts": 37 }, "translated": { "tmMatch": 0, - "default": 6, - "total": 6 + "default": 37, + "total": 37 }, "targetTranslated": { "tmMatch": 0, - "default": 15, - "total": 15 + "default": 34, + "total": 34 }, "translatedByMt": { "tmMatch": 0, @@ -28651,15 +37096,28 @@ }, "translationCosts": { "tmMatch": 0, - "default": 6, - "total": 6 + "default": 37, + "total": 37 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - }, + } + ] + }, + { + "user": { + "id": 15199956, + "username": "zhooookova", + "fullName": "Надежда Жукова (zhooookova)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15199956/medium/74aea56a748b12af52448b2ecf7ca2ac.png", + "preTranslated": 0, + "totalCosts": 24 + }, + "languages": [ { "language": { "id": "ru", @@ -28667,17 +37125,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 17 + "totalCosts": 24 }, "translated": { - "tmMatch": 10, - "default": 7, - "total": 17 + "tmMatch": 0, + "default": 24, + "total": 24 }, "targetTranslated": { - "tmMatch": 6, - "default": 7, - "total": 13 + "tmMatch": 0, + "default": 21, + "total": 21 }, "translatedByMt": { "tmMatch": 0, @@ -28690,9 +37148,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 10, - "default": 7, - "total": 17 + "tmMatch": 0, + "default": 24, + "total": 24 }, "approvalCosts": { "tmMatch": 0, @@ -28704,13 +37162,13 @@ }, { "user": { - "id": 15796593, - "username": "savchyk0999", - "fullName": "Толік Савчук (savchyk0999)", + "id": 15932451, + "username": "leshkiv.nadiya", + "fullName": "Надія Лешків (leshkiv.nadiya)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15796593/medium/013705fe7562a60f578b75d3e4577e9c.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15932451/medium/e854548408ba479f442783255a42714c.jpeg", "preTranslated": 0, - "totalCosts": 4 + "totalCosts": 7 }, "languages": [ { @@ -28720,22 +37178,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4 + "totalCosts": 7 }, "translated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 1, + "default": 6, + "total": 7 }, "targetTranslated": { - "tmMatch": 0, - "default": 5, - "total": 5 + "tmMatch": 1, + "default": 6, + "total": 7 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 2, + "total": 2 }, "approved": { "tmMatch": 0, @@ -28743,9 +37201,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 1, + "default": 6, + "total": 7 }, "approvalCosts": { "tmMatch": 0, @@ -28757,13 +37215,13 @@ }, { "user": { - "id": 15586253, - "username": "step2288q1", - "fullName": "Штефан Холбан (step2288q1)", + "id": 15922453, + "username": "deffrian", + "fullName": "Никита Мещеряков (deffrian)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15586253/medium/f7db0ce87bc341c11f74b71648b9d99e.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15922453/medium/a7f1f12a5813c480e3557106f153adc8.jpeg", "preTranslated": 0, - "totalCosts": 5 + "totalCosts": 133 }, "languages": [ { @@ -28773,17 +37231,17 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 5 + "totalCosts": 133 }, "translated": { - "tmMatch": 0, - "default": 5, - "total": 5 + "tmMatch": 133, + "default": 0, + "total": 133 }, "targetTranslated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 108, + "default": 0, + "total": 108 }, "translatedByMt": { "tmMatch": 0, @@ -28796,9 +37254,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 5, - "total": 5 + "tmMatch": 133, + "default": 0, + "total": 133 }, "approvalCosts": { "tmMatch": 0, @@ -28810,38 +37268,38 @@ }, { "user": { - "id": 15207930, - "username": "rayg", - "fullName": "راجي الحارثي (rayg)", + "id": 13587927, + "username": "colorage503", + "fullName": "Сергей Пехтерев (colorage503)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15207930/medium/b810ceacea24be83757399fa7cc431ef_default.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/13587927/medium/e9d581f3aee00e482ae4f8bb0164004d.jpg", "preTranslated": 0, - "totalCosts": 225 + "totalCosts": 96 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "be", + "name": "Belarusian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 225 + "totalCosts": 96 }, "translated": { - "tmMatch": 17, - "default": 208, - "total": 225 + "tmMatch": 12, + "default": 84, + "total": 96 }, "targetTranslated": { - "tmMatch": 18, - "default": 200, - "total": 218 + "tmMatch": 11, + "default": 69, + "total": 80 }, "translatedByMt": { - "tmMatch": 17, - "default": 194, - "total": 211 + "tmMatch": 10, + "default": 5, + "total": 15 }, "approved": { "tmMatch": 0, @@ -28849,9 +37307,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 17, - "default": 208, - "total": 225 + "tmMatch": 12, + "default": 84, + "total": 96 }, "approvalCosts": { "tmMatch": 0, @@ -28863,38 +37321,38 @@ }, { "user": { - "id": 15799003, - "username": "amir1988766", - "fullName": "عامر اليماني (amir1988766)", + "id": 15911937, + "username": "kvartirnueperezdu", + "fullName": "Україна Онлайн (kvartirnueperezdu)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15799003/medium/77f5b1aa31d46fbf05f38a9d8c6dab9e.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15911937/medium/6d2a27bac12acebc597e4586a7bc03a8.jpeg", "preTranslated": 0, - "totalCosts": 183 + "totalCosts": 12 }, "languages": [ { "language": { - "id": "ar", - "name": "Arabic", + "id": "uk", + "name": "Ukrainian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 183 + "totalCosts": 12 }, "translated": { - "tmMatch": 51, - "default": 132, - "total": 183 + "tmMatch": 0, + "default": 12, + "total": 12 }, "targetTranslated": { - "tmMatch": 42, - "default": 69, - "total": 111 + "tmMatch": 0, + "default": 9, + "total": 9 }, "translatedByMt": { "tmMatch": 0, - "default": 4, - "total": 4 + "default": 12, + "total": 12 }, "approved": { "tmMatch": 0, @@ -28902,9 +37360,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 51, - "default": 132, - "total": 183 + "tmMatch": 0, + "default": 12, + "total": 12 }, "approvalCosts": { "tmMatch": 0, @@ -28916,33 +37374,33 @@ }, { "user": { - "id": 15767927, - "username": "dsanu623", - "fullName": "बिश्व जीत (dsanu623)", + "id": 15799003, + "username": "amir1988766", + "fullName": "عامر اليماني (amir1988766)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15767927/medium/113eaaa9eb3f492f151d0dabbbc7d393.jpg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15799003/medium/77f5b1aa31d46fbf05f38a9d8c6dab9e.jpeg", "preTranslated": 0, - "totalCosts": 6 + "totalCosts": 237 }, "languages": [ { "language": { - "id": "bn", - "name": "Bengali", + "id": "ar", + "name": "Arabic", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 6 + "totalCosts": 199 }, "translated": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 173, + "default": 26, + "total": 199 }, "targetTranslated": { - "tmMatch": 0, - "default": 10, - "total": 10 + "tmMatch": 188, + "default": 24, + "total": 212 }, "translatedByMt": { "tmMatch": 0, @@ -28955,52 +37413,39 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 6, - "total": 6 + "tmMatch": 173, + "default": 26, + "total": 199 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15384668, - "username": "KosinaraPok", - "fullName": "កុសិនារា | Kosinara (KosinaraPok)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15384668/medium/020924dcb7b2e7de73185313b9d61184.png", - "preTranslated": 0, - "totalCosts": 1 - }, - "languages": [ + }, { "language": { - "id": "km", - "name": "Khmer", + "id": "it", + "name": "Italian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1 + "totalCosts": 22 }, "translated": { - "tmMatch": 1, + "tmMatch": 22, "default": 0, - "total": 1 + "total": 22 }, "targetTranslated": { - "tmMatch": 3, + "tmMatch": 29, "default": 0, - "total": 3 + "total": 29 }, "translatedByMt": { - "tmMatch": 1, + "tmMatch": 0, "default": 0, - "total": 1 + "total": 0 }, "approved": { "tmMatch": 0, @@ -29008,29 +37453,16 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, + "tmMatch": 22, "default": 0, - "total": 1 + "total": 22 }, "approvalCosts": { "tmMatch": 0, "default": 0, "total": 0 } - } - ] - }, - { - "user": { - "id": 15554555, - "username": "disruptivus.allegoria", - "fullName": "•• ɐʇǝıpuǝW ⬡ lǝzɐH •• (disruptivus.allegoria)", - "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15554555/medium/6cee00b3a7d4397d5ab0de1e5b185e64.jpg", - "preTranslated": 0, - "totalCosts": 334 - }, - "languages": [ + }, { "language": { "id": "es-EM", @@ -29038,22 +37470,22 @@ "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 334 + "totalCosts": 16 }, "translated": { "tmMatch": 0, - "default": 334, - "total": 334 + "default": 16, + "total": 16 }, "targetTranslated": { "tmMatch": 0, - "default": 373, - "total": 373 + "default": 16, + "total": 16 }, "translatedByMt": { "tmMatch": 0, - "default": 5, - "total": 5 + "default": 16, + "total": 16 }, "approved": { "tmMatch": 0, @@ -29062,8 +37494,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 334, - "total": 334 + "default": 16, + "total": 16 }, "approvalCosts": { "tmMatch": 0, @@ -29075,33 +37507,33 @@ }, { "user": { - "id": 15341508, - "username": "hesoponyo", - "fullName": "ヘソの下のポニョ (hesoponyo)", + "id": 15035049, + "username": "magazine4you", + "fullName": "مجله ای برای شما مجله کسب درآمد از اینترنت (magazine4you)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15341508/medium/070055fd80d21a5f4b26e37dd49cd0d0.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15035049/medium/aae1b74471bfafad0f4d2643e5de8678.png", "preTranslated": 0, - "totalCosts": 39 + "totalCosts": 272 }, "languages": [ { "language": { - "id": "ja", - "name": "Japanese", + "id": "fa", + "name": "Persian", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 39 + "totalCosts": 272 }, "translated": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 272, + "total": 272 }, "targetTranslated": { "tmMatch": 0, - "default": 93, - "total": 93 + "default": 337, + "total": 337 }, "translatedByMt": { "tmMatch": 0, @@ -29115,8 +37547,8 @@ }, "translationCosts": { "tmMatch": 0, - "default": 39, - "total": 39 + "default": 272, + "total": 272 }, "approvalCosts": { "tmMatch": 0, @@ -29128,38 +37560,38 @@ }, { "user": { - "id": 15785259, - "username": "jinlong20168", - "fullName": "徐錦龍 (jinlong20168)", + "id": 15956379, + "username": "bhangbuddy", + "fullName": "अखिलेश सिंह (bhangbuddy)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15785259/medium/47ca0a7e0bca75970a593348d6f638f5.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15956379/medium/435901b02d5b5f77c10fc06ff2c1c3e6.png", "preTranslated": 0, - "totalCosts": 4 + "totalCosts": 11092 }, "languages": [ { "language": { - "id": "vi", - "name": "Vietnamese", + "id": "hi", + "name": "Hindi", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 4 + "totalCosts": 11092 }, "translated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 151, + "default": 10941, + "total": 11092 }, "targetTranslated": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 278, + "default": 20003, + "total": 20281 }, "translatedByMt": { "tmMatch": 0, - "default": 0, - "total": 0 + "default": 2, + "total": 2 }, "approved": { "tmMatch": 0, @@ -29167,9 +37599,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 0, - "default": 4, - "total": 4 + "tmMatch": 151, + "default": 10941, + "total": 11092 }, "approvalCosts": { "tmMatch": 0, @@ -29181,33 +37613,33 @@ }, { "user": { - "id": 15854915, - "username": "sean7115", - "fullName": "林師緯 (sean7115)", + "id": 15384668, + "username": "KosinaraPok", + "fullName": "កុសិនារា | Kosinara (KosinaraPok)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15854915/medium/a947beba65ada83c48f0c0fe11300893.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15384668/medium/020924dcb7b2e7de73185313b9d61184.png", "preTranslated": 0, - "totalCosts": 33 + "totalCosts": 75 }, "languages": [ { "language": { - "id": "zh-TW", - "name": "Chinese Traditional", + "id": "km", + "name": "Khmer", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 33 + "totalCosts": 75 }, "translated": { - "tmMatch": 1, - "default": 32, - "total": 33 + "tmMatch": 4, + "default": 71, + "total": 75 }, "targetTranslated": { - "tmMatch": 2, - "default": 55, - "total": 57 + "tmMatch": 6, + "default": 80, + "total": 86 }, "translatedByMt": { "tmMatch": 1, @@ -29220,9 +37652,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 32, - "total": 33 + "tmMatch": 4, + "default": 71, + "total": 75 }, "approvalCosts": { "tmMatch": 0, @@ -29234,38 +37666,38 @@ }, { "user": { - "id": 15236832, - "username": "Andypsl8", - "fullName": "速波马六 (Andypsl8)", - "userRole": "", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15236832/medium/4ec2a454d39aead140077d7435082da2.jpg", + "id": 15964923, + "username": "kursinara", + "fullName": "កុសិនារា-Kursinara (kursinara)", + "userRole": "Translator", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15964923/medium/beff60bec090d35a1e16573bef45f486.jpg", "preTranslated": 0, - "totalCosts": 1484 + "totalCosts": 111 }, "languages": [ { "language": { - "id": "zh-CN", - "name": "Chinese Simplified", - "userRole": "Limited Access", + "id": "km", + "name": "Khmer", + "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1484 + "totalCosts": 111 }, "translated": { - "tmMatch": 24, - "default": 1460, - "total": 1484 + "tmMatch": 12, + "default": 99, + "total": 111 }, "targetTranslated": { - "tmMatch": 55, - "default": 2485, - "total": 2540 + "tmMatch": 19, + "default": 111, + "total": 130 }, "translatedByMt": { - "tmMatch": 5, - "default": 17, - "total": 22 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -29273,9 +37705,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 24, - "default": 1460, - "total": 1484 + "tmMatch": 12, + "default": 99, + "total": 111 }, "approvalCosts": { "tmMatch": 0, @@ -29287,33 +37719,33 @@ }, { "user": { - "id": 15869631, - "username": "xuanz2026", - "fullName": "隐姓埋名 (xuanz2026)", + "id": 15966589, + "username": "unawang", + "fullName": "乌娜儿Una (unawang)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15869631/medium/77c2d77da521a79e3186beb08576968c.jpeg", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15966589/medium/e7ef0923e4ff2d928ac1a9d5f3e64f2d.jpeg", "preTranslated": 0, - "totalCosts": 49 + "totalCosts": 3 }, "languages": [ { "language": { - "id": "tr", - "name": "Turkish", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 49 + "totalCosts": 3 }, "translated": { - "tmMatch": 1, - "default": 48, - "total": 49 + "tmMatch": 3, + "default": 0, + "total": 3 }, "targetTranslated": { - "tmMatch": 1, - "default": 10, - "total": 11 + "tmMatch": 6, + "default": 0, + "total": 6 }, "translatedByMt": { "tmMatch": 0, @@ -29326,9 +37758,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 48, - "total": 49 + "tmMatch": 3, + "default": 0, + "total": 3 }, "approvalCosts": { "tmMatch": 0, @@ -29340,38 +37772,38 @@ }, { "user": { - "id": 15861645, - "username": "steelblu", - "fullName": "이정호 (steelblu)", + "id": 16028252, + "username": "milkfeng666", + "fullName": "冯韵涵 (milkfeng666)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15861645/medium/1bd114a405063f69b0e433cc1c21b2b3.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/16028252/medium/df1172a80c8f0c52a390d9f69b452f4a.png", "preTranslated": 0, - "totalCosts": 391 + "totalCosts": 61 }, "languages": [ { "language": { - "id": "ko", - "name": "Korean", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 391 + "totalCosts": 61 }, "translated": { - "tmMatch": 5, - "default": 386, - "total": 391 + "tmMatch": 0, + "default": 61, + "total": 61 }, "targetTranslated": { - "tmMatch": 5, - "default": 313, - "total": 318 + "tmMatch": 0, + "default": 114, + "total": 114 }, "translatedByMt": { - "tmMatch": 3, - "default": 4, - "total": 7 + "tmMatch": 0, + "default": 0, + "total": 0 }, "approved": { "tmMatch": 0, @@ -29379,9 +37811,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 5, - "default": 386, - "total": 391 + "tmMatch": 0, + "default": 61, + "total": 61 }, "approvalCosts": { "tmMatch": 0, @@ -29393,33 +37825,33 @@ }, { "user": { - "id": 15843067, - "username": "yhngha", - "fullName": "쿠아 (yhngha)", + "id": 15999893, + "username": "chloeyang", + "fullName": "𝕏 Doggy Babe💻📡🔬 (chloeyang)", "userRole": "Translator", - "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15843067/medium/dc9bb4f1667bdd21680090e1a981ada6.png", + "avatarUrl": "https://crowdin-static.downloads.crowdin.com/avatar/15999893/medium/acb9e1666e04d7575ac44695fc03fc28.jpg", "preTranslated": 0, - "totalCosts": 1 + "totalCosts": 62 }, "languages": [ { "language": { - "id": "ko", - "name": "Korean", + "id": "zh-CN", + "name": "Chinese Simplified", "userRole": "Translator", "tmSavings": 0, "preTranslate": 0, - "totalCosts": 1 + "totalCosts": 62 }, "translated": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 62, + "total": 62 }, "targetTranslated": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 112, + "total": 112 }, "translatedByMt": { "tmMatch": 0, @@ -29432,9 +37864,9 @@ "total": 0 }, "translationCosts": { - "tmMatch": 1, - "default": 0, - "total": 1 + "tmMatch": 0, + "default": 62, + "total": 62 }, "approvalCosts": { "tmMatch": 0, diff --git a/src/intl/am/page-wallets-find-wallet.json b/src/intl/am/page-wallets-find-wallet.json index 4044c9c8072..f791806e528 100644 --- a/src/intl/am/page-wallets-find-wallet.json +++ b/src/intl/am/page-wallets-find-wallet.json @@ -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": "ዴስክቶፕ", diff --git a/src/intl/ar/page-developers-index.json b/src/intl/ar/page-developers-index.json index 265a8a3c65f..4a9ec7fcb5d 100644 --- a/src/intl/ar/page-developers-index.json +++ b/src/intl/ar/page-developers-index.json @@ -92,5 +92,6 @@ "page-developers-data-structures-and-encoding": "هياكل البيانات والترميز", "page-developers-data-structures-and-encoding-link": "هياكل البيانات والترميز", "page-developers-data-structures-and-encoding-desc": "مقدمة عن هياكل البيانات ومخطط الترميز المُستخدم في حزمة إثيريوم", - "alt-eth-blocks": "صورة توضيحية لكتل منظمة على شكل شعار الإثير" + "alt-eth-blocks": "صورة توضيحية لكتل منظمة على شكل شعار ETH", + "page-assets-doge": "كلب يستخدم التطبيقات اللامركزية" } diff --git a/src/intl/ar/page-developers-learning-tools.json b/src/intl/ar/page-developers-learning-tools.json index a6609d8c50b..2cd4f924a47 100644 --- a/src/intl/ar/page-developers-learning-tools.json +++ b/src/intl/ar/page-developers-learning-tools.json @@ -22,17 +22,21 @@ "page-learning-tools-eth-dot-build-logo-alt": "شعار Eth.build", "page-learning-tools-ethernauts-description": "أتم المستويات بقرصنة عقود ذكية.", "page-learning-tools-ethernauts-logo-alt": "شعار Ethernauts", + "page-learning-tools-metaschool-description": "أصبح مبرمجًا للإصدار الثالث من الويب من خلال إنشاء التطبيقات اللامركزية وشحنها.", + "page-learning-tools-metaschool-logo-alt": "شعار metaschool", "page-learning-tools-game-tutorials": "تعليمات استخدام الألعاب التفاعلية", "page-learning-tools-game-tutorials-desc": "تعلم وأنت تلعب. هده التعليمات البرمجية تمكنك من الحصول على الأساسيات باستخدام اللعب.", "page-learning-tools-meta-desc": "أدوات البرمجة القائمة على الويب وتجارب التعلم التفاعلي لمساعدتك على تجربة تطوير إثيريوم.", "page-learning-tools-meta-title": "أدوات تعلم المبرمج", "page-learning-tools-questbook-description": "تعليمات استخدام ذاتية تحديد السرعة لتعلم Web 3.0 من خلال الإنشاء", "page-learning-tools-questbook-logo-alt": "شعار Questbook", - "page-learning-tools-remix-description": "برمج وانشر وأدر العقود الذكية لإثيريوم. تتبع تعليمات الاستخدام مع إضافة Learneth.", + "page-learning-tools-remix-description": "طوّر العقود الذكية في اثيريوم وانشرها وأدرها. اتبع تعليمات الاستخدام مع ملحق LearnEth.", "page-learning-tools-remix-description-2": "Remix وReplit وChainIDE ليست مجرد بيئات اختبار معزولة — العديد من المبرمجين يكتبون ويجمعون وينشرون عقودهم الذكية باستخدامها.", "page-learning-tools-replit-description": "بيئة تطوير قابلة للتخصيص لإثيريوم، مع فعالية التحميل، والتحقق من الأخطاء، ودعم قوي لشبكات التجريب.", "page-learning-tools-chainIDE-description": "ابدأ رحلتك إلى Web3 بكتابة العقود الذكية لإثيريوم باستخدام ChainIDE. استخدم القوالب المدمجة للتعلّم وتوفير الوقت.", "page-learning-tools-chainIDE-logo-alt": "شعار ChainIDE", + "page-learning-tools-tenderly-description": "Tenderly Sandbox هي بيئة نموذجية حيث يمكنك كتابة العقود الذكية وتنفيذها وتصحيحها في المتصفح باستخدام سوليديتي وجافا سكريبت.", + "page-learning-tools-tenderly-logo-alt": "شعار Tenderly", "page-learning-tools-replit-logo-alt": "شعار Replit", "page-learning-tools-remix-logo-alt": "شعار Remix", "page-learning-tools-sandbox": "إنشاء النص البرمجي لبيئات الاختبار المعزولة", @@ -50,5 +54,5 @@ "page-learning-tools-platzi-logo-alt": "شعار Platzi", "page-learning-tools-alchemy-university-description": "طوِّر حياتك المهنية في Web3 من خلال الدورات التدريبية والمشاريع والتعليمات البرمجية.", "page-learning-tools-alchemy-university-logo-alt": "شعار Alchemy University", - "alt-eth-blocks": "صورة توضيحية لكتل منظمة على شكل شعار الإثير" + "alt-eth-blocks": "صورة توضيحية لكتل منظمة على شكل شعار ETH" } diff --git a/src/intl/ar/page-developers-local-environment.json b/src/intl/ar/page-developers-local-environment.json index 4fa37ff4152..10572d5b469 100644 --- a/src/intl/ar/page-developers-local-environment.json +++ b/src/intl/ar/page-developers-local-environment.json @@ -1,6 +1,8 @@ { "page-local-environment-brownie-desc": "إطار عمل للتطوير والاختبار قائم على Python للعقود الذكية التي تستهدف جهاز إثيريوم الظاهري.", "page-local-environment-brownie-logo-alt": "شعار Brownie", + "page-local-environment-kurtosis-desc": "مجموعة أدوات قائمة على الحاوية لسهولة تكوين شبكة تجريب اثيريوم متعددة العملاء وتثبيتها لتطوير التطبيقات اللامركزية المحلية ونمذجتها الأولية وتجربتها.", + "page-local-environment-kurtosis-logo-alt": "شعار Kurtosis", "page-local-environment-epirus-desc": "منصة لتطوير تطبيقات سلسلة الكتل ونشرها ومراقبتها على جهاز جافا الظاهري.", "page-local-environment-epirus-logo-alt": "شعار\tEpirus", "page-local-environment-eth-app-desc": "إنشاء تطبيقات تعمل بتشغيل إثيريوم بأمر واحد. يأتي مع عرض واسع لأطر واجهة المستخدم وقوالب DeFi للاختيار منها.", diff --git a/src/intl/ar/page-languages.json b/src/intl/ar/page-languages.json index 3efffc915f1..2481df2d3a3 100644 --- a/src/intl/ar/page-languages.json +++ b/src/intl/ar/page-languages.json @@ -25,10 +25,10 @@ "language-es": "الإسبانية", "language-fa": "الفارسية", "language-fi": "الفنلندية", - "language-fil": "الفلبينية", "language-fr": "الفرنسية", "language-gl": "الغاليسية", "language-gu": "الغوجاراتية", + "language-he": "عبرية", "language-hi": "الهندية", "language-hr": "الكرواتية", "language-hu": "الهنغارية", @@ -46,6 +46,8 @@ "language-ms": "المالاوية", "language-nb": "النرويجية", "language-nl": "الهولندية", + "language-pcm": "اللغة الهجين النيجيرية", + "language-fil": "الفلبينية", "language-pl": "البولندية", "language-pt": "البرتغالية", "language-pt-br": "البرتغالية (البرازيل)", @@ -60,6 +62,7 @@ "language-ta": "التاميلية", "language-tr": "التركية", "language-uk": "الأوكرانية", + "language-ur": "الأوردية", "language-uz": "الأوزبكية", "language-vi": "الفيتنامية", "language-zh": "الصينية المبسطة", diff --git a/src/intl/ar/page-layer-2.json b/src/intl/ar/page-layer-2.json index 5b0b65c47d2..c7aed9542ad 100644 --- a/src/intl/ar/page-layer-2.json +++ b/src/intl/ar/page-layer-2.json @@ -4,8 +4,8 @@ "layer-2-optimism-note": "نموذج إثبات الخطأ قيد التطوير حاليًا", "layer-2-hero-title": "الطبقة 2", "layer-2-hero-header": "إثيريوم للجميع", - "layer-2-hero-subtitle": "توسيع إثيريوم دون المساس بالخواص الأمنية أو اللامركزية.", - "layer-2-hero-alt-text": "نموذج توضيحي للمعاملات التي يتم تكديسها على الطبقة 2 ونشرها إلى شبكة إثيريوم الرئيسية", + "layer-2-hero-subtitle": "جارٍ توسيع إيثريوم ليتم تبينه واستخدامه على نطاق واسع.", + "layer-2-hero-alt-text": "نموذج توضيحي للمعاملات التي يتم طيها على الطبقة 2 ونشرها على شبكة إثيريوم الرئيسية", "layer-2-hero-button-1": "ما هي الطبقة 2", "layer-2-hero-button-2": "استخدام الطبقة 2", "layer-2-hero-button-3": "الانتقال إلى الطبقة 2", @@ -14,9 +14,9 @@ "layer-2-statsbox-3": "معدّل تغيّر القيمة الإجمالية ضمن الطبقة 2 (30 يومًا)", "layer-2-what-is-layer-2-title": "ما هي الطبقة 2؟", "layer-2-what-is-layer-2-1": "الطبقة 2 (L2) هي مصطلح جامع يصف مجموعة محددة من الحلول التي تهدف إلى توسيع إثيريوم. الطبقة 2 هي سلسلة كتل منفصلة تعمل على توسيع إثيريوم و في الوقت نفسه تملك نفس خصائص ضمان الأمان لدى إثيريوم.", - "layer-2-what-is-layer-2-2": "لنتعمّق قليلاً الآن في شرحها، وللقيام بذلك نحتاج إلى شرح الطبقة 1 (L1).", + "layer-2-what-is-layer-2-2": "لنتعمّق قليلاً الآن في شرحها، ولإجراء ذلك نحتاج أولاً إلى شرح الطبقة 1 (L1).", "layer-2-what-is-layer-1-title": "ما هي الطبقة 1؟", - "layer-2-what-is-layer-1-1": "الطبقة 1 هي سلسلة الكتل الأساسية. يُعد كل من إثيريوم وبيتكوين سلاسل كتل من الطبقة 1 لأنها البنية التحتيّة الأساسية التي تُبنى عليها مختلف شبكات الطبقة 2. من الأمثلة على مشاريع الطبقة 2 \"تكديس المعاملات\" على إثيريوم و شبكة البرق المسرّعة التابعة لبيتكوين. يمكن في النهاية إضافة كل أنشطة معاملات المستخدمين على مشاريع الطبقة 2 هذه إلى سلسلة كتل الطبقة 1.", + "layer-2-what-is-layer-1-1": "الطبقة 1 هي البلوكشين الأساسية. يُعد كل من إثيريوم وبيتكوين بلوكشين من الطبقة 1 لأنها البنية التحتيّة الأساسية التي تُبنى عليها مختلف شبكات الطبقة 2. من الأمثلة على مشاريع الطبقة 2 \"تكديس المعاملات\" على إثيريوم و شبكة البرق المسرّعة التابعة لبيتكوين. يمكن في النهاية إضافة كل أنشطة معاملات المستخدمين على مشاريع الطبقة 2 هذه إلى بلوكشين الطبقة 1.", "layer-2-what-is-layer-1-2": "تعمل إثيريوم أيضًا كطبقة توافر البيانات للطبقة 2. ستقوم مشاريع الطبقة 2 بنشر بيانات المعاملة على إثيريوم، للاعتماد على إثيريوم في توافر البيانات. يمكن استخدام هذه البيانات لمعرفة حالة الطبقة 2، أو الاعتراض على المعاملات في الطبقة 2.", "layer-2-what-is-layer-1-list-title": "إثيريوم باعتبارها الطبقة 1 تشمل:", "layer-2-what-is-layer-1-list-1": "شبكة من مشغّلي العقد لتأمين الشبكة ومصادقتها", @@ -27,10 +27,10 @@ "layer-2-what-is-layer-1-list-link-2": "تعلّم ماهية إثيريوم.", "layer-2-why-do-we-need-layer-2-title": "لماذا نحتاج إلى الطبقة 2؟", "layer-2-why-do-we-need-layer-2-1": "يوجد ثلاث سمات مطلوبة في سلسلة الكتل، وهي اللامركزية، والأمان، وقابلية التوسع. لكن تنص المعضلة الثلاثية لسلسلة الكتل على أن بنية سلسلة الكتل البسيطة يمكن أن تحقق اثنتين فقط هذه السمات. هل تريد سلسلة كتل آمنة ولامركزية؟ عليك أن تستغني عن سمة قابلية التوسع.", - "layer-2-why-do-we-need-layer-2-2": "وصلت إثيريوم إلى السعة الحالية للشبكة التي تُقدر بـ أكثر من مليون معاملة ف اليوم والطلب المتزايد على كل من هذه المعاملات. لقد تسبب نجاح إثيريوم والطلب على استخدامها في ارتفاع أسعار الغاز ارتفاعًا ملحوظًا. ولذلك ظهرت الحاجة إلى حلول قابلية التوسع من حيث الطلب أيضًا، وهنا يبرز دور شبكات الطبقة 2.", + "layer-2-why-do-we-need-layer-2-2": "يعالج اثيريوم حاليًا أكثر من مليون معاملة يوميًا . يمكن أن يؤدي طلب استخدام اثيريوم إلى ارتفاع رسوم التحويلات. هنا حيث تكمن اهمية استخدام شبكات الطبقة 2.", "layer-2-why-do-we-need-layer-2-scalability": "قابلية التوسع", - "layer-2-why-do-we-need-layer-2-scalability-1": "إن الهدف الرئيس من قابلية التوسع هو زيادة سرعة المعاملات (إنجاز أسرع)، وزيادة إنتاجية المعاملات (عدد معاملات أكبر في الثانية)، دون الاستغناء عن اللامركزية أو الأمان.", - "layer-2-why-do-we-need-layer-2-scalability-2": "لقد اتخذ مجتمع إثيريوم موقفًا قويًا بأنه لن يُفرّط في اللامركزية أو الأمان من أجل التوسع. وحتى إتمام التقسيم، لا يمكن لشبكة إثيريوم الرئيسية (الطبقة 1) معالجة إلا حوالي 15 معاملة في الثانية. وعند ارتفاع الطلب على استخدام إثيريوم، ستعاني الشبكة الاكتظاظ، ومن ثمَّ زيادة رسوم وأسعار المعاملات على المستخدمين الذين لا يستطيعون تحملها. واليوم هذا هو دور الطبقة 2 كحل لتوسيع شبكة إثيريوم.", + "layer-2-why-do-we-need-layer-2-scalability-1": "يتمثل الهدف الرئيسي من الطبقة 2 في تعزيز إنتاجية المعاملات (عدد معاملات أكبر في الثانية)، دون الاستغناء عن اللامركزية أو الأمان.", + "layer-2-why-do-we-need-layer-2-scalability-2": "يكون بإمكان شبكة إيثريوم الرئيسية (طبقة 1) معالجة ما يقارب 15 معالمة في الثانية فقط. عندما يكون هناك طلب على استخدام الشبكة بسبب وجود الكثير من المعاملات التي يجب معالجتها، تصبح الشبكة مزدحمة مما يؤدي إلى ارتفاع رسوم التحويلات ما يؤدي الى عدم قدرة العديد من المستخدمين على تحمل تكلفة المعاملات بسبب ارتفاع الاسعار عما يمكنهم تحمله. الطبقات 2 هي حلول تقلل من هذه الرسوم من خلال معالجة المعاملات خارج بلوكشين الطبقة 1.", "layer-2-why-do-we-need-layer-2-scalability-3": "المزيد عن رؤية إثيريوم", "layer-2-benefits-of-layer-2-title": "فوائد الطبقة 2", "layer-2-lower-fees-title": "رسوم مخفضة", @@ -40,24 +40,24 @@ "layer-2-expand-use-cases-title": "توسيع نطاق حالات الاستخدام", "layer-2-expand-use-cases-description": "مع ارتفاع عدد المعاملات في الثانية، وانخفاض الرسوم، واستخدام تكنولوجيا جديدة، سيتوسع نطاق المشاريع نحو تطبيقات جديدة مع تجربة مستخدم محسنة.", "layer-2-how-does-layer-2-work-title": "كيف تعمل الطبقة 2؟", - "layer-2-how-does-layer-2-work-1": "كما ذكرنا آنفًا، الطبقة 2 هي مصطلح جامع لحلول توسع شبكة إثيريوم التي تتعامل مع المعاملات خارج الطبقة 1 من إثيريوم، دون الاستغناء عن ميزة الأمان اللامركزي القوي للطبقة 1 من إثيريوم. \nالطبقة 2 هي سلسلة كتل منفصلة توسع نطاق إثيريوم. كيف يعمل ذلك؟", - "layer-2-how-does-layer-2-work-2": "تتواصل سلسلة الكتل من الطبقة 2 بانتظام مع إثيريوم (عن طريق إرسال حزم المعاملات) لضمان وجود إجراءات أمنية ولامركزية مماثلة. وكل هذا لا يتطلب أي تغيير في بروتوكول الطبقة 1 (إثيريوم). يتيح ذلك للطبقة 1 التعامل مع الأمان، وتوافر البيانات، واللامركزية، ويترك للطبقة 2 التعامل مع عملية التوسع. ومن ثمَّ ستتحمل الطبقة 2 عبء التعامل مع المعاملات بعيدًا عن الطبقة 1 ثم ستعيد الإثباتات النهائية إلى الطبقة 1. وبإزالة حمل المعاملة من الطبقة 1، ستصبح الطبقة الأساسية أقل اكتظاظًا، وسيغدو كل شيء أكثر قابلية للتوسع.", + "layer-2-how-does-layer-2-work-1": "كما ذكرنا أعلاه، الطبقة 2 هي مصطلح جماعي لحلول توسع شبكة إثيريوم التي تتعامل مع المعاملات خارج طبقة إثيريوم 1، دون الاستغناء عن ميزة الأمان اللامركزي القوي لطبقة إثيريوم 1. \nالطبقة 2 هي سلسلة بلوكتشين منفصلة توسع نطاق إثيريوم. كيف يعمل ذلك؟", + "layer-2-how-does-layer-2-work-2": "هناك أنواع عديدة مختلفة من الطبقة 2، لكل منها مقايضات ونماذج أمنية خاصة بها. الطبقات 2 تأخذ عبء المعاملات بعيدًا عن الطبقة 1 ما يتيح لها بأن تصبح أقل ازدحامًا، ويصبح كل شيء أكثر قابلية للتوسع.", "layer-2-rollups-title": "تكديس المعاملات", - "layer-2-rollups-1": "تكديس المعاملات هو الحل المفضل حاليًا للطبقة 2 لتوسع إثيريوم. عن طريق استخدام تكديس المعاملات، يمكن للمستخدمين تقليل رسوم الغاز بما يصل إلى مئة مرة بالمقارنة مع الطبقة 1.", - "layer-2-rollups-2": "تكديس المعاملات (أو مجموعة المعاملات) يجمع مئات المعاملات ضمن معاملة واحدة في الطبقة 1. يؤدي ذلك إلى توزيع رسوم معاملة الطبقة 1 بين أصحاب المعاملات في تكديس المعاملات، ومن ثمَّ ستقل الكلفة على كل مستخدم. يتم تنفيذ معاملات تكديس المعاملات خارج الطبقة 1 ولكن بيانات المعاملات يتم نشرها في الطبقة 1. ومن خلال نشر بيانات المعاملات على الطبقة 1، يأخذ تكديس المعاملات نفس خاصية الأمن في إثيريوم. هناك نهجان مختلفان لتكديس المعاملات: تكديس المعاملات بالطريقة المتفائلة وتكديس المعاملات صفري المعرفة - ويختلفان في المقام الأول في كيفية نشر بيانات المعاملات على الطبقة 1.", + "layer-2-rollups-1": "تعمل حزمة تكديس المعاملات (أو \"التجميع\") على تكديس مئات المعاملات في معاملة واحدة على الطبقة 1. يؤدي ذلك إلى توزيع رسوم معاملات المستوى 1 على كل شخص في تجميع المعاملات، ما يجعلها أقل تكلفة لكل مستخدم.", + "layer-2-rollups-2": "يتم تنفيذ تكديس المعاملات من الطبقة 1 ولكن يتم إرسال بيانات المعاملة إلى الطبقة 1. وبإرسال بيانات المعاملة إلى الطبقة 1، ترث تكديس المعاملات أمان اثيريوم. هذا لأنه بمجرد تحميل البيانات إلى الطبقة 1، حيث يؤدي إعادة تكديس المعاملات إعادة عن اثيريوم. تتوفر طريقتان مختلفتان لتكديس المعاملات: إيجابي والمعرفة الصفرية - يختلفان في المقام الأول حول كيفية تقديم بيانات المعاملة هذه إلى الطبقة 1.", "layer-2-optimistic-rollups-title": "تكديس المعاملات بالطريقة المتفائلة", - "layer-2-optimistic-rollups-description": "تكديس المعاملات بالطريقة المتفائلة يعني أنه تُفترض صحة المعاملات مبدئيًا ولذلك سُميت \"متفائلة\"، ولكن إذا لزم الأمر يمكن الطعن في المعاملة. بمعنى أنه في حال الاشتباه بوجود خطأ في المعاملة، يتم تنشيط عملية \"إثبات الخطأ\" للتحقق منه.", + "layer-2-optimistic-rollups-description": "تعد شبكات تكديس المعاملات الإيجابية \"إيجابية\" بمعنى أنه يفترض أن تكون المعاملات صحيحة، ولكن يمكن التشكيك فيها والتأكد من صحتها إذا لزم الأمر. في حالة الاشتباه في معاملة غير صالحة، يتم تشغيل عملية \"إثبات الخطأ\" لمعرفة ما إذا كان قد حدث ذلك.", "layer-2-optimistic-rollups-childSentance": "المزيد حول تكديس المعاملات بالطريقة المتفائلة", "layer-2-zk-rollups-title": "تكديس المعاملات صفري المعرفة", "layer-2-zk-rollups-description": "تكديس المعاملات صفري المعرفة يستخدم \"إثباتات الصلاحية\" حيث تُعالج المعاملات خارج السلسلة، ثم تُرسل البيانات المضغوطة إلى الشبكة الرئيسة لإثيريوم كإثبات على صلاحيتها.", "layer-2-zk-rollups-childSentance": "المزيد حول تكديس المعاملات صفري المعرفة", "layer-2-dyor-title": "إجراء بحثك الخاص: مخاطر الطبقة 2", - "layer-2-dyor-1": "نظرًا إلى أن السلاسل من الطبقة 2 ترث الخصائص الأمنية من إثيريوم، فهي في الوضع المثالي آمنة مثل الطبقة 1 من إثيريوم. ومع ذلك، إن عدة مشاريع لا تزال ناشئة وتجريبية إلى حد ما. بعد سنوات من البحث والتطوير، تم إطلاق في عام 2021 العديد من تكنولوجيات الطبقة 2 التي ستعمل على توسع إثيريوم. لا يزال لدى العديد من المشاريع افتراضات إضافية تتعلق بالثقة لأنها تركز على تحقيق اللامركزية في شبكاتها. أجرِ دائمًا بحثك الخاص لتقييم مدى قابليتك للتعامل مع المخاطر المحتملة.", + "layer-2-dyor-1": "العديد من مشاريع الطبقة الثانية حديثة العهد نسبيًا ولا تزال تتطلب من المستخدمين الوثوق ببعض المشغلين وافتراض أنهم صادقون في أثناء عملهم على تحقيق اللامركزية في شبكاتهم. أجر دائمًا البحث الخاص بك لتقرير ما إذا كنت مرتاحًا لأي مخاطر متضمنة.", "layer-2-dyor-2": "للحصول على مزيد من المعلومات عن التكنولوجيا والمخاطر وافتراضات الثقة للطبقة 2، نوصي بتصفح L2BEAT، والذي يوفر إطارًا شاملاً لتقييم المخاطر في كل مشروع.", "layer-2-dyor-3": "الانتقال إلى L2BEAT", "layer-2-use-layer-2-title": "استخدام الطبقة 2", "layer-2-use-layer-2-1": "الآن بعد أن فهمت لماذا توجد الطبقة 2 وكيف تعمل، هيا بنا نبدأ التشغيل!", - "layer-2-contract-accounts": "ملاحظة: عند إقامة الجسور عبر الطبقة 2 واستخدامها، من المهم ملاحظة أنك ستتحكم في عنوان الحساب المملوك خارجيًا (EOA) الخاص بك (حساب يوجد فيه مفتاح خاص واحد فقط يتحكم في الحساب) تمامًا كما هو الحال في شبكة إثيريوم الرئيسية. ومع ذلك، إذا كنت تستخدم أحد حسابات العقد، مثل Safe أو Argent، فلن تستطيع التحكم في هذا العنوان على الطبقة 2 حتى تُعيد نشر حساب العقد الخاص بك على ذلك العنوان على الطبقة 2. إذا كنت تقوم بتحويل الأموال عبر الجسور أو ترسلها إلى حساب العقد، ولا تتحكم في هذا العنوان الخاص بحساب العقد، فقد يتم فقدان أموالك.", + "layer-2-contract-accounts": "إذا كنت تستخدم محفظة عقد ذكي مثل Safe أو Argent، فلن تكون المتحكم في هذا العنوان في الطبقة 2 حتى تعيد نشر حساب العقد الخاص بك إلى هذا العنوان في الطبقة 2. ستمتلك الحسابات الكلاسيكية التي تتضمن عبارة استرداد الحساب نفس الحساب تلقائيًا على جميع شبكات الطبقة 2.", "layer-2-use-layer-2-generalized-title": "الطبقة 2 العامة", "layer-2-use-layer-2-generalized-1": "تعمل الطبقة 2 العامة تمامًا مثل إثيريوم — عدا أنها أرخص. أي شيء يمكنك القيام به على الطبقة 1 من إثيريوم، يمكنك القيام به أيضًا على الطبقة 2. وقد بدأت فعلاً العديد من التطبيقات اللامركزية بالترحيل إلى هذه الشبكات أو هاجرت من الشبكة الرئيسية كليًا للنشر مباشرةً على الطبقة 2.", "layer-2-use-layer-2-application-specific-title": "الطبقة 2 المخصصة للتطبيقات", @@ -67,8 +67,7 @@ "layer-2-sidechains-2": "تتوسع السلاسل المذكورة بطريقة مماثلة للطبقة 2 - وتحتاج رسومًا أقل للمعاملات وإنتاجية أعلى من المعاملات - ولكن لديها افتراضات ثقة مختلفة.", "layer-2-more-on-sidechains": "المزيد من المعلومات حول السلاسل الجانبية", "layer-2-more-on-validiums": "المزيد من المعلومات حول فاليديوم", - "layer-2-sidechains-4": "لدى بعض سلاسل الكتل من الطبقة 1 إنتاجية معاملات أعلى ورسوم معاملات أقل من إثيريوم. ولكن الطبقة 1 البديلة هذه اضطرت بالمقابل إلى الاستغناء عن الأمان أو اللامركزية من أجل تحقيق معاملات أعلى في الثانية ورسوم معاملات أقل.", - "layer-2-sidechains-5": "إن النظام البيئي لإثيريوم متوائم تمامًا،حيث إن توسع الطبقة 2 هو الطريقة الوحيدة لحل المعضلة الثلاثة لقابلية التوسع والإبقاء على الخواص الأمنية واللامركزية كما هي.", + "layer-2-sidechains-4": "تشير بعض البلوكتشينات من الطبقة الأولى إلى وجود إنتاجية أعلى ورسوم معاملات أقل من اثيريوم، ولكن بشكل عام مع وجود مقايضات في مواضع أخرى، على سبيل المثال متطلبات أجهزة أكبر لتشغيل العقد.", "layer-2-onboard-title": "كيفية الوصول إلى الطبقة 2", "layer-2-onboard-1": "هناك طريقتان أساسيتان لنقل الأصول الخاصة بك إلى الطبقة 2: تحويل الأموال عن طريق جسر من إثيريوم بواسطة العقد الذكي أو سحب الأموال الخاصة بك في عملية تبادل مباشرة إلى شبكة الطبقة 2.", "layer-2-onboard-wallet-title": "الأموال في محفظتك؟", @@ -117,7 +116,7 @@ "rollups-the-ultimate-ethereum-scaling-strategy": "تكديس المعاملات - الاستراتيجية النهائية للتوسع في إثيريوم؟ شرح Arbitrum وOptimism", "scaling-layer-1-with-shard-chains": "توسع الطبقة 1 مع سلاسل الأجزاء", "understanding-rollup-economics-from-first-principals": "فهم اقتصاديات تكديس المعاملات من المبادئ الأولى", - "arbitrum-description": "Arbitrum هو تكديس المعاملات بالطريقة المتفائلة الذي يهدف إلى الشعور بما يشبه التفاعل مع إثيريوم بالضبط، ولكن مع معاملات تكلف جزءًا مما تقوم به على الطبقة 1.", + "arbitrum-description": "Arbitrum One هو تكديس معاملات إيجابي يهدف إلى الشعور بما يشبه التفاعل مع إثيريوم تمامًا، ولكن مع معاملات تكلف جزءًا أبسط مما تكلفه الطبقة 1.", "optimism-description": "Optimism هو تكديس المعاملات بالطريقة المتفائلة المكافئ لآلة إثيريوم الافتراضية السريعة والبسيطة والآمنة. إنه يوسع تكنولوجيا إثيريوم مع توسيع قيمها أيضًا من خلال تمويل المنافع العامة بأثر رجعي.", "boba-description": "Boba هو تكديس المعاملات بالطريقة المتفائلة المتفرِّع في الأصل من Optimism وهو حل للتوسع يهدف إلى تخفيض رسوم الغاز، وتحسين إنتاجية المعاملات، وتوسيع قدرات العقود الذكية.", "loopring-description": "Loopring، وهو حل الطبقة 2 لتكديس المعاملات صفري المعرفة، يهدف إلى تقديم نفس الضمانات الأمنية كشبكة إثيريوم الرئيسية، مع تعزيز التوسع بدرجة كبيرة: حيث ازدادت الإنتاجية بمقدار ألف ضعف وانخفضت التكلفة إلى 0.1% في الطبقة 1.", diff --git a/src/intl/ar/page-staking-deposit-contract.json b/src/intl/ar/page-staking-deposit-contract.json index 8ef42f47adb..a2d0c112f63 100644 --- a/src/intl/ar/page-staking-deposit-contract.json +++ b/src/intl/ar/page-staking-deposit-contract.json @@ -1,28 +1,28 @@ { - "page-staking-deposit-contract-address": "التحقق من عنوان عقد إيداع staking", - "page-staking-deposit-contract-address-caption": "لقد أضفنا مسافات لجعل العنوان أسهل للقراءة", - "page-staking-deposit-contract-address-check-btn": "التحقق من عنوان عقد الإيداع", - "page-staking-deposit-contract-checkbox1": "لقد قمت بالفعل باستخدام منصة التشغيل لإعداد مدقق staking الخاص بي.", - "page-staking-deposit-contract-checkbox2": "أنا أفهم أنني بحاجة إلى استخدام منصة التشغيل لتجميد العملات. إن التحويلات البسيطة إلى هذا العنوان لن تنجح.", - "page-staking-deposit-contract-checkbox3": "سأقوم بالتحقق من عنوان عقد الإيداع مع مصادر أخرى.", + "page-staking-deposit-contract-address": "عنوان عقد الإيداع للمراهنة", + "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-checkbox3": "سأتحقق من عنوان عقد الإيداع مع مصادر أخرى.", "page-staking-deposit-contract-confirm-address": "التأكيد للكشف عن العنوان", - "page-staking-deposit-contract-copied": "العنوان المنسوخ", + "page-staking-deposit-contract-copied": "العنوان الذي تم نسخه", "page-staking-deposit-contract-copy": "نسخ العنوان", - "page-staking-deposit-contract-etherscan": "عرض العقد في المسح الضوئي لإثيريوم", - "page-staking-deposit-contract-h2": "هذا ليس مكان تجميد العملات", - "page-staking-deposit-contract-launchpad": "تجميد العملات باستخدام منصة التشغيل", + "page-staking-deposit-contract-etherscan": "عرض العقد على Etherscan", + "page-staking-deposit-contract-h2": "هذا ليس المكان المخصص لتجميد العملات", + "page-staking-deposit-contract-launchpad": "المراهنة باستخدام منصة التشغيل", "page-staking-deposit-contract-launchpad-2": "استخدام منصة التشغيل", - "page-staking-deposit-contract-meta-desc": "قم بالتحقق من عنوان عقد الإيداع من أجل تجميد عملات staking.", - "page-staking-deposit-contract-meta-title": "عنوان عقد إيداع staking", + "page-staking-deposit-contract-meta-desc": "تحقق من عنوان عقد الإيداع للمراهنة في إيثريوم.", + "page-staking-deposit-contract-meta-title": "عنوان عقد الإيداع للمراهنة في إيثريوم", "page-staking-deposit-contract-read-aloud": "قراءة العنوان بصوت عالٍ", - "page-staking-deposit-contract-reveal-address-btn": "كشف العنوان", - "page-staking-deposit-contract-staking": "لتجميد عملات إثير في staking يجب عليك استخدام منتج منصة التشغيل المخصص واتباع التعليمات. إرسال ETH إلى العنوان في هذه الصفحة لن يجعلك مراهنًا وسيؤدي إلى فشل المعاملات.", - "page-staking-deposit-contract-staking-check": "تحقق من المصادر", - "page-staking-deposit-contract-staking-check-desc": "ونحن نتوقع أن يكون هناك الكثير من العناوين الوهمية والمخالفات. لتكون آمنًا، تحقق من عنوان تجميد عملات staking الذي تستخدمه مقابل العنوان الموجود في هذه الصفحة. نوصي بالتحقق منه مع مصادر أخرى جديرة بالثقة أيضًا.", + "page-staking-deposit-contract-reveal-address-btn": "الكشف عن العنوان", + "page-staking-deposit-contract-staking": "لمراهنة عملات ETH، يجب عليك استخدام منتج منصة التشغيل المخصص واتباع التعليمات. لن يجعلك إرسال ETH إلى العنوان في هذه الصفحة مراهنًا وسيؤدي بدوره إلى فشل المعاملات.", + "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": "هذا هو عنوان عقد تجميد عملات staking. استخدم هذه الصفحة لتأكيد أنك تقوم بإرسال الأموال إلى العنوان الصحيح عندما تجمد العملات.", - "page-staking-deposit-contract-warning": "تحقق من كل حرف بعناية.", - "page-staking-deposit-contract-warning-2": "إرسال الأموال إلى هذا العنوان لن يعمل ولن يجعلك مراهنًا. يجب عليك اتباع تعليمات منصة التشغيل.", + "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-title": "التحقق من عنوان عقد الإيداع" } diff --git a/src/intl/ar/page-staking.json b/src/intl/ar/page-staking.json index 8395268eb19..e73a0df0713 100644 --- a/src/intl/ar/page-staking.json +++ b/src/intl/ar/page-staking.json @@ -1,9 +1,237 @@ { - "page-staking-image-alt": "صورة تميمة وحيد القرن لمنصة تشغيل .", - "page-staking-description": "إن تجميد العملات هو إجراء إيداع لـ 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-new-title": "المراهنون الجدد (لم يتم إيداع أي مبالغ)", + "comp-withdrawal-comparison-new-li-1": "بشكل افتراضي، يجب على المراهنين الجدد الذين يتطلعون إلى تمكين مدفوعات المكافآت ووظائف السحب تلقائيًّا تقديم عنوان سحب في Ethereum يتحكمون به عند إنشاء مفاتيح المدقق الخاص بهم باستخدام أداة واجهة خط الأوامر الخاص بإيداع مبالغ للمراهنة", + "comp-withdrawal-comparison-new-li-2": "لا يلزم إجراء ذلك في وقت الإيداع، ولكن سيمنع الحاجة إلى تحديث هذه المفاتيح في وقت لاحق للحصول على أموال", + "comp-withdrawal-comparison-new-p": "ستوجهك منصة تشغيل المراهنة من خلال عملية التأهيل للمراهنة.", + "comp-withdrawal-comparison-new-link": "تفضل بزيارة منصة تشغيل المراهنة", + "comp-withdrawal-credentials-placeholder": "مؤشر برنامج المدقق", + "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": "التحقق على Mainnet", + "comp-withdrawal-credentials-verify-goerli": "التحقق على Goerli", + "page-staking-withdrawals-when": "أصبح متاحًا!", + "page-staking-image-alt": "صورة جالب حظ وحيد القرن لمنصة تشغيل المراهنة.", + "page-staking-benefits-1-title": "كسب المكافآت", + "page-staking-benefits-1-description": "تقدم المكافآت للإجراءات التي تساعد الشبكة على التوصل إلى توافق في الآراء. ستحصل على مكافآت لتشغيل البرنامج الذي يقوم بالدفعات الصحيحة من المعاملات إلى كتل جديدة ويتحقق من عمل المدققين الآخرين لأن هذا ما يحافظ على تشغيل السلسلة بشكل آمن.", + "page-staking-benefits-2-title": "حماية أفضل", + "page-staking-benefits-2-description": "تزداد قوة الشبكة في مواجهة الهجمات كلما ازدادت كمية عملة ETH المخصصة للمراهنة، لذلك تحتاج الشبكة إلى مزيد من عملات ETH للسيطرة عليها. ولكي تشكل تهديدًا ستحتاج إلى التحكم في معظم المدققين، ومن ثم يجب أن تملك غالبية عملة ETH في النظام - وهو مبلغ كبير جدًّا!", + "page-staking-benefits-3-title": "استدامة أكثر", + "page-staking-benefits-3-description": "لا يحتاج المراهنون إلى إجراء حسابات إثبات عمل كثيفة الاستهلاك للطاقة للمشاركة في تأمين الشبكة، وهو ما يعني أن عقد المراهنة يمكن أن يعمل على أجهزة متواضعة نسبيًّا باستخدام القليل جدًّا من الطاقة.", + "page-staking-benefits-3-link": "المزيد من المعلومات حول استهلاك الطاقة في إثيريوم", + "page-staking-description": "المراهنة هي عملية إيداع 32 ETH لتنشيط برنامج المدقق. بصفتك مدقق، ستكون مسؤولاً عن تخزين البيانات ومعالجة المعاملات وإضافة كتل جديدة إلى بلوكتشين. سيؤدي هذا إلى الحفاظ على أمان إيثريوم للجميع وسيجعلك تربح عملية ETH جديدة في هذه العملية.", + "page-staking-hero-title": "كيفية تجميد عملات ETH الخاصة بك", + "page-staking-hero-header": "اربح المكافآت أثناء حماية إثيريوم", + "page-staking-hero-subtitle": "المراهنة هي مصلحة عامة لمنظومة إثيريوم. يمكن لأي شخص المساعدة في حماية الشبكة بأي مبلغ من ETH وكسب المكافآت في أثناء العملية.", + "page-staking-dropdown-home": "الصفحة الرئيسية للمراهنة", + "page-staking-dropdown-solo": "تجميد العملات المجمعة", + "page-staking-more-on-solo": "مزيد من المعلومات عن المراهنة الفردية", + "page-staking-learn-more-solo": "تعرّف على المزيد من المعلومات حول المراهنة الفردية", + "page-staking-dropdown-saas": "تجميد العملات كخدمة", + "page-staking-saas-with-abbrev": "تجميد العملات كخدمة)", + "page-staking-more-on-saas": "مزيد من المعلومات عن المراهنة كخدمة", + "page-staking-learn-more-saas": "تعرّف على المزيد من المعلومات عن المراهنة كخدمة", + "page-staking-dropdown-pools": "تجميد العملات المجمعة", + "page-staking-dropdown-withdrawals": "نبذة عن عمليات السحب", + "page-staking-dropdown-dvt": "تقنية المدقق الموزعة", + "page-staking-more-on-pools": "مزيد من المعلومات عن تجمع الرهان", + "page-staking-learn-more-pools": "تعرّف على المزيد عن تجمع الرهان", + "page-staking-section-what-title": "ما هي المراهنة؟", + "page-staking-section-what-link": "تعرف على كيفية الحصول على عملة ETH", + "page-staking-section-why-title": "ما هي الاستفادة التي ستحققها من مراهنة عملة ETH الخاصة بك؟", + "page-staking-section-why-p1": "يعتمد الأمر بالكامل على كمية العملات التي ترغب في مراهنتها. ستحتاج إلى 32 ETH لتنشيط برنامج المدقق الخاص بك، لكن من الممكن المراهنة بعملات أقل.", + "page-staking-section-why-p2": "اطلع على الخيارات أدناه وحدد الخيار الذي يناسبك ويناسب الشبكة بشكل أفضل.", + "page-staking-guide-title-coincashew-ethereum": "دليل CoinCashew الخاص بإيثريوم 2.0", + "page-staking-guide-title-somer-esat": "Somer Esat", + "page-staking-guide-title-rocket-pool": "مشغلو عُقد Rocket Pool", + "page-staking-guide-description-linux": "Linux (واجهة خط الأوامر)", + "page-staking-guide-description-mac-linux": "Linux، macOS (واجهة خط الأوامر)", + "page-staking-hierarchy-solo-h2": "الصفحة الرئيسية للمراهنة الفردية", + "page-staking-hierarchy-solo-pill-1": "الأكثر تأثيرًا", + "page-staking-hierarchy-solo-pill-2": "إمكانية تحكم كاملة", + "page-staking-hierarchy-solo-pill-3": "مكافآت كاملة", + "page-staking-hierarchy-solo-pill-4": "غير جدير بالثقة", + "page-staking-hierarchy-solo-p1": "المراهنة الفردية على إيثيريوم هي المعيار الذهبي للمراهنة. حيث توفر مكافآت المشاركة الكاملة، وتحسن لا مركزية الشبكة، ولا تتطلب أبدًا وضع ثقتك في أي شخص آخر لإدارة أموالك.", + "page-staking-hierarchy-solo-p2": "يجب أن يمتلك أولئك الذين يفكرون في خوض تجربة المراهنة الفردية ما لا يقل عن 32 ETH وجهاز كمبيوتر مخصصًا متصلاً بالإنترنت على مدار الساعة طوال أيام الأسبوع. تعتبر بعض المهارات التقنية مفيدة، ولكن تتوفر الآن أدوات سهلة الاستخدام للمساعدة في تبسيط هذه العملية.", + "page-staking-hierarchy-saas-pill-1": "عملة 32 ETH الخاص بك", + "page-staking-hierarchy-saas-pill-2": "مفاتيح برنامج المدقق الخاصة بك", + "page-staking-hierarchy-saas-pill-3": "عملية العقدة المكلفة", + "page-staking-hierarchy-saas-p1": "إذا كنت لا تريد أو لا تشعر بالارتياح حيال التعامل مع الأجهزة ولكن لا تزال تريد أن تراهن عملة 32 ETH، تسمح لك خيارات المراهنة كخدمة بتفويض الجزء الصعب بينما تحصل على مكافآت الكتل الأصلية.", + "page-staking-hierarchy-saas-p2": "عادةً ما توجهك هذه الخيارات من خلال إنشاء مجموعة من بيانات اعتماد المدقق، وتحميل مفاتيح التوقيع الخاصة بك عليها، وإيداع عملة 32 ETH. هذا يسمح للخدمة بالتدقيق نيابة عنك.", + "page-staking-hierarchy-saas-p3": "ويتطلب هذا الأسلوب في المراهنة مستوى معينًا من الثقة في موفر الخدمة. للحد من مخاطر الطرف المقابل، عادة ما تبقى مفاتيح سحب ETH الخاصة بك في حيازتك.", + "page-staking-hierarchy-pools-pill-1": "مراهنة أي مبلغ", + "page-staking-hierarchy-pools-pill-2": "اكسب المكافآت", + "page-staking-hierarchy-pools-pill-3": "ابقِ الأمر بسيطًا", + "page-staking-hierarchy-pools-pill-4": "شائع", + "page-staking-hierarchy-pools-p1": "تتوفر الآن عدة حلول للتجميع لمساعدة المستخدمين الذين لا يشعرون بالارتياح حيال مراهنة 32 ETH.", + "page-staking-hierarchy-pools-p2": "وتشمل العديد من هذه الخيارات ما يعرف بـ \"سيولة المراهنة\" التي تتضمن رمز السيولة المميز ERC-20 الذي يمثل عملة ETH التي تمت مراهنتها.", + "page-staking-hierarchy-pools-p3": "تتيح لك سيولة المراهنة الخروج بسهولة وفي أي وقت وتجعل المراهنة بسيطة بقدر مبادلة الرمز المميز. يسمح هذا الخيار أيضًا للمستخدمين بالاحتفاظ بوصاية أصولهم في محفظة إيثيريوم الخاصة بهم.", + "page-staking-hierarchy-pools-p4": "الرهان المجمع ليس أصلاً لشبكة إيثيريوم. تنشئ الجهات الخارجية هذه الحلول، وهي تحمل مخاطرها الخاصة.", + "page-staking-hierarchy-cex-h2": "المبادلات المركزية", + "page-staking-hierarchy-cex-pill-1": "الأقل تأثيرًا", + "page-staking-hierarchy-cex-pill-2": "أقصى افتراضات الثقة", + "page-staking-hierarchy-cex-p1": "توفر العديد من المبادلات المركزية خدمات المراهنة إذا لم تكن تشعر بالارتياح حيال الاحتفاظ بعملة ETH في محفظتك الخاصة. يمكن أن تكون احتياطية تسمح لك بكسب بعض العوائد على حيازاتك من ETH بأدنى قدر من الإشراف أو الجهد.", + "page-staking-hierarchy-cex-p2": "تتمثل المقايضة هنا في إدماج موفري الخدمات المركزيين لمجموعات كبيرة من عملة ETH لتشغيل أعداد كبيرة من المدققين. قد يكون هذا خطيرًا على الشبكة ومستخدميها لأنه ينشئ هدفًا مركزيًّا كبيرًا ونقطة فشل، وهو ما يجعل الشبكة أكثر عرضة للهجوم أو الأخطاء.", + "page-staking-hierarchy-cex-p3": "إذا كنت لا تشعر بالارتياح حيال الاحتفاظ بمفاتيحك الخاصة، فلا بأس. تتوفر هذه الخيارات خصوصًا من أجلك. في الوقت الراهن، اطلع على صفحة المحافظ، حيث يمكنك البدء في تعلم كيفية التمتع بالملكية الحقيقية للأموال الخاصة بك. عندما تكون مستعدًّا، عُد و ارتقِ بمستوى لعبة المراهنة من خلال تجربة إحدى خدمات الرهان المجمع الذاتية الإدارة المُقدمة.", + "page-staking-hierarchy-subtext": "كما لاحظت، هناك العديد من الطرق للمشاركة في المراهنة الخاصة بإيثريوم. تستهدف هذه المسارات مجموعة واسعة من المستخدمين، وفي النهاية كل منها فريد من نوعه ويختلف من حيث المخاطر والمكافآت وافتراضات الثقة. بعضها أكثر لا مركزية و/أو تم اختبارها في أرض الواقع و/أو محفوفة بالمخاطر من غيرها. نحن نقدم بعض المعلومات عن المشاريع الشائعة في هذا المجال، ولكن أجرِ دائمًا أبحاثك قبل إرسال ETH إلى أي مكان.", + "page-staking-comparison-solo-saas": "مع موفري SaaS، لا يزال يتعين عليك إيداع 32 ETH، ولكن لا يتعين عليك تشغيل الأجهزة. عادةً ما تحتفظ بإمكانية الوصول إلى مفاتيح المدقق الخاصة بك، ولكن تحتاج أيضًا إلى مشاركة مفاتيح التوقيع الخاصة بك حتى يتمكن المشغل من التصرف نيابة عن برنامج المدقق الخاص بك. يوفر هذا طبقة من الثقة غير موجودة عند تشغيل الأجهزة الخاصة بك، وعلى عكس المراهنة الفردية من المنزل، فإن SaaS لا يساعد كثيرًا في التوزيع الجغرافي للعقد. إذا كنت لا تشعر بالارتياح حيال تشغيل الأجهزة ولكنك لا تزال تتطلع إلى الحصول على 32 ETH، فقد يكون استخدام موفر SaaS خيارًا موفقًا لك.", + "page-staking-comparison-solo-pools": "تعد المراهنة الفردية أكثر تعقيدًا بكثير من المراهنة مع خدمة التجميع، ولكنها توفر وصولاً كاملاً إلى مكافآت ETH، والتحكم الكامل في إعداد وأمان برنامج المدقق الخاص بك. تتميز المراهنة المجمعة بوجود عائق أقل بكثير أمام إمكانية الدخول. يمكن للمستخدمين مشاركة مبالغ صغيرة من عملات ETH، ولا يُطلب منهم إنشاء مفاتيح المدقق، وليس لديهم متطلبات أجهزة تتجاوز الاتصال القياسي بالإنترنت. تتيح رموز السيولة المميزة القدرة على الخروج من عملية المراهنة قبل تمكين ذلك على مستوى البروتوكول. إذا كنت مهتمًّا بهذه الميزات، فقد تكون المراهنة المجمعة مناسبة لك.", + "page-staking-comparison-saas-solo": "تتضمن أوجه التشابه امتلاك مفاتيح المدقق الخاص بك دون الحاجة إلى تجمع الأموال، ولكن مع SaaS، يجب أن تثق بطرف ثالث، من المحتمل أن يتصرف بشكل ضار أو يصبح هدفًا للهجوم أو القانون نفسه. إذا كانت افتراضات الثقة أو المخاطر المركزية هذه تقلقك، فإن المعيار الذهبي للمراهنة ذات السيادة الذاتية هو الرهان الفردي.", + "page-staking-comparison-saas-pools": "إنها مشابهة من حيث إنك تعتمد بشكل عام على شخص آخر لتشغيل عميل المدقق، لكن بخلاف خدمة SaaS، يسمح لك التجميع بالمشاركة بمبالغ أصغر من عملات ETH. إذا كنت تبحث عن أقل من 32 ETH، ففكر في هذا الخيار.", + "page-staking-comparison-pools-solo": "تتميز المراهنة المجمعة بحاجز دخول أقل بكثير مقارنة بالمراهنة الفردية، ولكنها تأتي مع مخاطر إضافية من خلال تفويض جميع عمليات العقدة إلى جهة خارجية، وبرسوم. تمنح المراهنة الفردية السيادة الكاملة والتحكم في الاختيارات التي تدخل في اختيار إعداد المراهنة. لا يضطر المراهنون أبدًا إلى تسليم مفاتيحهم، ويحصلون على مكافآت كاملة دون أن يحصل أي وسطاء على حصة.", + "page-staking-comparison-pools-saas": "وهي متشابهة من حيث إن المراهنين لا يقومون بتشغيل برنامج المدقق بأنفسهم، ولكن على عكس خيارات التجميع، تتطلب SaaS إيداعًا كاملاً بقيمة 32 ETH لتنشيط برنامج المدقق. تتراكم المكافآت على المراهن، وعادةً ما تتضمن رسومًا شهرية أو مراهنة أخرى لاستخدام الخدمة. إذا كنت تفضل مفاتيح المدقق وتتطلع إلى مشاركة ما لا يقل عن 32 ETH، فقد يكون استخدام مزود SaaS خيارًا جيدًا لك.", + "page-staking-considerations-solo-1-title": "مفتوح المصدر", + "page-staking-considerations-solo-1-description": "النص البرمجي الأساسي مفتوح المصدر بنسبة 100% ومتاح للجمهور للتَّفَرُّع والاستخدام", + "page-staking-considerations-solo-1-warning": "مصدر مغلق", + "page-staking-considerations-solo-2-title": "تم التدقيق", + "page-staking-considerations-solo-2-description": "خضع النص البرمجي الأساسي لمراجعة رسمية مع النتائج المنشورة والمتاحة للجمهور", + "page-staking-considerations-solo-2-warning": "لا شيء", + "page-staking-considerations-solo-3-title": "مكافأة اكتشاف الخلل", + "page-staking-considerations-solo-3-description": "تم تنفيذ مكافأة خطأ عامة على أي نص برمجي أساسي لمكافأة المستخدمين على الإبلاغ الآمن و/أو إصلاح الثغرات الأمنية", + "page-staking-considerations-solo-3-valid": "نشط حاليًّا", + "page-staking-considerations-solo-3-caution": "مكتملة", + "page-staking-considerations-solo-4-title": "تم الاختبار على أرض الواقع", + "page-staking-considerations-solo-4-description": "لقد أصبح البرنامج متاحًا ومستخدمًا من قبل الجمهور خلال الفترة الزمنية المحددة", + "page-staking-considerations-solo-4-valid": "مباشر > سنة واحدة", + "page-staking-considerations-solo-4-caution": "مباشر > 6 أشهر", + "page-staking-considerations-solo-4-warning": "صدر حديثًا", + "page-staking-considerations-solo-5-title": "بدون ثقة", + "page-staking-considerations-solo-5-description": "لا يتم إسناد مفاتيح المدقق إلى أي إنسان آخر في أي وقت خلال دورة حياة برنامج المدقق. أي عقود ذكية معنية تكون خالية من الأبواب الخلفية، دون الاعتماد على أذونات مميزة للتنفيذ.", + "page-staking-considerations-solo-5-warning": "موثوق به", + "page-staking-considerations-solo-6-title": "Permissionless", + "page-staking-considerations-solo-6-description": "لا يحتاج المستخدمون إلى أي إذن خاص لتشغيل المدقق باستخدام البرنامج أو الخدمة", + "page-staking-considerations-solo-6-valid": "بدون إذن", + "page-staking-considerations-solo-6-warning": "الإذن مطلوب", + "page-staking-considerations-solo-7-title": "متعدد العملاء", + "page-staking-considerations-solo-7-description": "يمكّن البرنامج المستخدمين من الاختيار والتبديل بين اثنين أو أكثر من عملاء التنفيذ، وعملاء طبقة إجماع الآراء أو أكثر", + "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-warning": "وصاية الجهة الخارجية", + "page-staking-considerations-solo-9-title": "اقتصادي", + "page-staking-considerations-solo-9-description": "بإمكان المستخدمين تشغيل مدقق من خلال المراهنة بأقل من 32 ETH، عبر اللجوء إلى تجمع يضم مبالغ من آخرين", + "page-staking-considerations-solo-9-valid": "أقل من 32 ETH", + "page-staking-considerations-solo-9-warning": "32 ETH", + "page-staking-considerations-saas-4-description": "لقد أصبحت الخدمة متاحة ومستخدمة من قبل الجمهور خلال الفترة الزمنية المحددة", + "page-staking-considerations-saas-6-description": "لا يحتاج المستخدمون إلى الحصول على أي إذن خاص أو تسجيل حساب أو KYC للمشاركة في الخدمة", + "page-staking-considerations-saas-6-valid": "بإمكان أي شخص الانضمام", + "page-staking-considerations-saas-6-warning": "الإذن مطلوب", + "page-staking-considerations-saas-7-title": "التنوع في التنفيذ", + "page-staking-considerations-saas-7-description": "على الخدمة ألّا تستخدم أكثر من 50% من إجمالي المدققين عند استخدام عميل التنفيذ بالأغلبية", + "page-staking-considerations-saas-7-valid": "أقل من 50%", + "page-staking-considerations-saas-7-caution": "غير معروف حاليًا", + "page-staking-considerations-saas-7-warning": "أكثر من 50%", + "page-staking-considerations-saas-8-title": "تنوع في إجماع الآراء", + "page-staking-considerations-saas-8-description": "على الخدمة ألّا تستخدم أكثر من 50% من إجمالي المدققين عند استخدام عميل إجماع الآراء بالأغلبية", + "page-staking-considerations-saas-8-valid": "أقل من 50%", + "page-staking-considerations-saas-8-caution": "غير معروف حاليًا", + "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-7-description": "على الخدمة ألّا تستخدم أكثر من 50% من إجمالي المدققين عند استخدام عميل التنفيذ بالأغلبية", + "page-staking-considerations-pools-8-title": "الرمز المميز الخاص بالسيولة", + "page-staking-considerations-pools-8-description": "تقدم الرموز المميزة الخاصة بالسيولة القابلة للتداول وتمثل عملة ETH التي تمت مراهنتها، في محفظتكم", + "page-staking-considerations-pools-8-valid": "الرمز (الرموز) المميز الخاص بالسيولة", + "page-staking-considerations-pools-8-warning": "لا يتوفر رمز مميز خاص بالسيولة", + "page-staking-considerations-pools-9-description": "على الخدمة ألّا تستخدم أكثر من 50% من إجمالي المدققين عند استخدام عميل إجماع الآراء بالأغلبية", + "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-5": "مراقبة العقدة والحفاظ عليها", + "page-staking-launchpad-widget-testnet-label": "شبكة التجريب Goerli", + "page-staking-launchpad-widget-testnet-start": "بدء المراهنة على شبكة التجريب Goerli", + "page-staking-launchpad-widget-mainnet-label": "الشبكة الرئيسية", + "page-staking-launchpad-widget-mainnet-start": "بدء المراهنة على الشبكة الرئيسية", + "page-staking-launchpad-widget-span": "اختيار شبكة", + "page-staking-launchpad-widget-p1": "من المتوقع من المدققين تجربة إعداداتهم ومهاراتهم التشغيلية على شبكة التجريب Goerli، قبل المخاطرة بأموالك. تذكر أنه من الضروري اختيار عميل أقلية لكونه يحسن أمان الشبكة ويحد من المخاطر.", + "page-staking-launchpad-widget-p2": "إذا كنت تشعر بالراحة حيال ذلك، يمكنك إعداد كل ما تحتاج إليه من سطر التعليمات باستخدام منصة تشغيل المراهنة وحدها.", + "page-staking-launchpad-widget-p3": "لتسهيل الأمور، تحقق من بعض الأدوات والأدلة أدناه التي بإمكانها مساعدتك إلى جانب منصة تشغيل المراهنة لإعداد عملائك بكل سهولة.", + "page-staking-launchpad-widget-link": "أدوات وأدلة برمجية", + "page-staking-products-get-started": "البدء بالاستخدام", + "page-staking-dropdown-staking-options": "خيارات المراهنة", + "page-staking-dropdown-staking-options-alt": "قائمة خيارات تجميد العملات المنسدلة", + "page-staking-stats-box-metric-1": "إجمالي عملة ETH التي تمت مراهنتها", + "page-staking-stats-box-metric-2": "إجمالي المدققين", + "page-staking-stats-box-metric-3": "APR الحالي", + "page-staking-stats-box-metric-1-tooltip": "إجمالي عملة ETH التي تتم مراهنتها على سلسلة المنارة، لا يشمل الأرصدة التي تتجاوز 32 ETH", + "page-staking-stats-box-metric-2-tooltip": "عدد حسابات المدققين النشطة حاليًا على سلسلة المنارة", + "page-staking-stats-box-metric-3-tooltip": "متوسط العائدات المالية السنوية للمدقق الواحد على مدى الأربع والعشرين ساعة الماضية", + "page-staking-section-comparison-subtitle": "لا يوجد حل واحد يناسب جميع المشكلات فيما يتعلق بالمراهنة. سنقارن هنا بعض المخاطر، والمكافآت والمتطلبات لطرق مختلفة يمكنك المراهنة باستخدامها.", + "page-staking-section-comparison-rewards-title": "المكافآت", + "page-staking-section-comparison-solo-rewards-li1": "أقصى قدر ممكن للمكافآت - استلام المكافآت كاملة من البروتوكول مباشرة", + "page-staking-section-comparison-solo-rewards-li2": "ستحصل على مكافآت لدفعة المعاملات في كتلة جديدة أو التحقق من عمل برامج المدققين الأخرى لإبقاء السلسلة قيد التشغيل بشكل آمن", + "page-staking-section-comparison-solo-rewards-li3": "ستتلقى أيضًا رسومًا متواصلة للمعاملات للكتل التي تقترحها", + "page-staking-section-comparison-saas-rewards-li1": "عادةً ما تتضمن كامل مكافآت البروتوكول بعد خصم رسوم مشغلي العقدة", + "page-staking-section-comparison-saas-rewards-li2": "غالبًا ما تكون لوحات المعلومات متاحة لتتبع برنامج مدقق العميل بسهولة", + "page-staking-section-comparison-pools-rewards-li1": "يحصل المراهنون المجمعون على المكافآت بطرق مختلفة، تعتمد على أي طريقة اختاروها لتجمع الرهان", + "page-staking-section-comparison-pools-rewards-li2": "تقدم العديد من خدمات المراهنة المجمعة رمز سيولة مميزًا واحدًا أو أكثر يمثل عملة ETH التي تمت مراهنتها إضافة إلى حصتك من مكافآت المدقق", + "page-staking-section-comparison-pools-rewards-li3": "يمكن الاحتفاظ برموز السيولة المميزة في محفظتك، واستخدامها في بروتوكولات التمويل اللامركزي أو بيعها إذا قررت الخروج من المراهنة", + "page-staking-section-comparison-risks-title": "المخاطر", + "page-staking-section-comparison-solo-risks-li1": "يتم تجميد عملات ETH الخاصة بك", + "page-staking-section-comparison-solo-risks-li2": "يتم فرض عقوبات للانقطاع عن الإنترنت، تقدر بعملة ETH", + "page-staking-section-comparison-solo-risks-li3": "يمكن أن يؤدي السلوك الخبيث إلى \"الشطب\" لكميات أكبر من ETH والطرد القسري من الشبكة", + "page-staking-section-comparison-saas-risks-li1": "نفس المخاطر مثل المراهنة الفردية إضافة إلى مخاطر الطرف المقابل لموفر الخدمة", + "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 ETH", + "page-staking-section-comparison-solo-requirements-li2": "عليك استخدام الأجهزة التي تشغل كلّاً من عميل إيثيريوم على طبقة التنفيذ وطبقة إجماع الآراء، في أثناء اتصال هذه الأجهزة بالإنترنت", + "page-staking-section-comparison-solo-requirements-li3": "سترشدك منصة تشغيل المراهنة خلال العملية ومعرفة متطلبات الأجهزة", + "page-staking-section-comparison-saas-requirements-li1": "أودع 32 ETH واحصل على مساعدة في إنشاء مفاتيحك", + "page-staking-section-comparison-saas-requirements-li2": "حافظ على مفاتيحك في مكان آمن", + "page-staking-section-comparison-saas-requirements-li3": "يتم تولي باقي الخطوات بالنيابة عنك، رغم أن الخدمات ستختلف من موفر خدمة إلى آخر", + "page-staking-section-comparison-pools-requirements-li1": "أقل متطلبات لـ ETH، تتطلب بعض المشاريع حدًّا أدنى يبدأ من 0.01 ETH", + "page-staking-section-comparison-pools-requirements-li2": "أودع مباشرةً من محفظتك لعدة منصات مراهنة مجمعة مختلفة، أو ببساطة مقايضة أصولك بأحد رموز السيولة المميزة الخاصة بالمراهنة", + "page-staking-faq-1-question": "ما هو برنامج المدقق؟", + "page-staking-faq-1-answer": "برنامج المدقق هو كيان افتراضي يعيش على شبكة إيثريوم ويساهم في بروتوكول إجماع الآراء في إيثريوم. يتم تمثيل المدققين برصيد، مفتاح عام وخصائص أخرى. عميل المدقق هو برمجية تعمل بالنيابة عن المدقق وتحتفظ بمفتاح المدقق وتستخدمه. بإمكان عميل مدقق واحد أن يحمل عدة أزواج مفاتيح ويتحكم في عدة مدققين.", + "page-staking-faq-2-question": "لماذا أحتاج إلى تجميد أموال؟", + "page-staking-faq-2-answer": "يمتلك المدقق القدرة على اقتراح كتل ومصادقتها على الشبكة. لمنع السلوك غير الأمين، على المستخدمين مراهنة أرصدتهم. يسمح ذلك للبروتوكول بفرض عقوبات على الأطراف الخبيثة. المراهنة هي وسيلة للحفاظ على النزاهة، حيث يتم فرض عواقب مالية على التصرفات.", + "page-staking-faq-3-question": "هل يمكنني شراء \"Eth2\"؟", + "page-staking-faq-3-answer-p1": "لا توجد عملة \"Eth2\" أصلية مرتبطة بالبروتوكول، حيث إن رمز Ethers الأصلي (ETH) لم يتغير عندما تحول إيثريوم إلى إثبات الحصة.", + "page-staking-faq-3-answer-p2": "هناك رموز مشتقة قد تمثل ETH التي تمت مراهنتها (مثل rETH من Rocket Poolو stETH من Lido، وETH2 من Coinbase). تعرّف على المزيد عن تجمعات المراهنة", + "page-staking-faq-4-question": "هل خدمة المراهنة متاحة حاليًّا؟", + "page-staking-faq-4-answer-p1": "نعم، أصبحت المراهنة متاحة منذ 1 ديسمبر 2020", + "page-staking-faq-4-answer-p2": "يعني ذلك أن المراهنة متاحة حاليًّا وبإمكان المستخدمين إيداع ETH، وتشغيل عميل مدقق والبدء في الحصول على المكافآت.", + "page-staking-faq-4-answer-p3": "تم إكمال تحديث Shanghai/Capella في 12 أبريل 2023، حيث ساعد على تمكين عمليات سحب المراهنة، وهو ما أتم حلقة سيولة المراهنة.", + "page-staking-faq-5-question": "متى يمكنني سحب ETH التي تمت مراهنتها؟", + "page-staking-faq-5-answer-p1": "في الحال! يتمتع المراهنون بالحرية الكاملة لسحب مكافآتهم و \\أو إيداع الأصل من رصيد المدقق الخاص بهم في حال اختيارهم ذلك.", + "page-staking-faq-5-answer-p2": "سيحصل المراهنون أيضًا على مكافآت على شكل رسوم غاز وMEV عند اقتراح الكتل، والتي تصبح متاحة بشكلٍ فوري على عنوان متلقي الرسوم المحددة.", + "page-staking-faq-5-answer-link": "مزيد من المعلومات حول عمليات السحب المتعلقة بالمراهنات", + "page-staking-further-reading-1-link": "لم يجب استخدام اثبات الرهان (نوفمبر 2020)", + "page-staking-further-reading-author-vitalik-buterin": "Vitalik Buterin", + "page-staking-further-reading-2-link": "منطق تصميم سيرينيتي", + "page-staking-further-reading-3-link": "أسئلة شائعة حول إثبات الرهان (ديسمبر 2017)", + "page-staking-further-reading-4-link": "أخبار Eth2", + "page-staking-further-reading-4-author": "بين إدغينغتون", + "page-staking-further-reading-5-link": "الرقم النهائي 33، طبقة إجماع الآراء في الإيثريوم (يناير 2022)", + "page-staking-further-reading-5-author": "داني رايان", + "page-staking-further-reading-6-link": "منشورات Attestant", + "page-staking-further-reading-7-link": "قاعدة معرفية بشأن Beaconcha.in", + "page-staking-further-reading-8-link": "مواد تعليمية ساهم بها المجتمع بشأن Beaconcha.in", + "page-staking-further-reading-9-link": "أسئلة شائعة حول منصة تشغيل إيثريوم للمراهنة", + "page-staking-further-reading-10-link": "قاعدة معرفية بشأن EthStaker", + "page-staking-toc-how-to-stake-your-eth": "كيفية تجميد عملات إثير الخاصة بك", + "page-staking-toc-comparison-of-options": "مقارنة بين خيارات المراهنة", + "page-staking-toc-faq": "الأسئلة الشائعة", + "page-staking-toc-further": "قراءة إضافية", + "page-staking-dom-info-title": "المراهنة مع إيثريوم", "page-staking-join-community": "الانضمام إلى مجتمع المراهنين", - "page-staking-join-community-desc": "إن مجتمع r/ethstaker للجميع من أجل مناقشة تجميد العملات على إثيريوم، انضم من أجل الحصول على النصائح والدعم والحديث عن كل ما يتعلق بتجميد العملات.", - "page-staking-meta-description": "نظرة عامة على تجميد العملات على إثيريوم: المخاطر والمكافآت والمتطلبات ومكان القيام به.", - "page-staking-meta-title": "تجميد العملات على إثيريوم", - "page-upgrades-merge-btn": "المزيد حول الدمج" + "page-staking-join-community-desc": "EthStaker هو مجتمع للجميع لمناقشة الأمور المتعلقة بالمراهنة على إيثريوم وتعلمها. انضمّ إلى عشرات الآلاف من الأعضاء من حول العالم للحصول على نصائح، والدعم والتحدث حول كل ما يتعلق بالمراهنة.", + "page-staking-meta-description": "نظرة عامة إلى المراهنة على إثيريوم: المخاطر والمكافآت والمتطلبات ومكان حدوثها.", + "page-staking-meta-title": "المراهنة على إثيريوم", + "page-staking-withdrawals-important-notices": "إشعارات مهمة", + "page-staking-withdrawals-important-notices-desc": "لا تتوفر عمليات السحب بعد. يُرجى قراءة أسئلة شائعة حول إدماج وما بعد إدماج Eth2 لمعرفة المزيد من المعلومات.", + "page-upgrades-merge-btn": "المزيد على الدمج", + "subscribe-to-ef-blog": "اشترك في مدونة مؤسسة إيثريوم Blog لتلقي إشعارات عبر البريد الإلكتروني حول أحدث إعلانات البروتوكول." } diff --git a/src/intl/ar/page-wallets-find-wallet.json b/src/intl/ar/page-wallets-find-wallet.json index 57b645d04a7..6e67f425aab 100644 --- a/src/intl/ar/page-wallets-find-wallet.json +++ b/src/intl/ar/page-wallets-find-wallet.json @@ -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": "سطح المكتب", diff --git a/src/intl/az/page-wallets-find-wallet.json b/src/intl/az/page-wallets-find-wallet.json index 74523a554e2..1c307c484ea 100644 --- a/src/intl/az/page-wallets-find-wallet.json +++ b/src/intl/az/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Xüsusiyyət filtrləri", "page-find-wallet-footnote-1": "Bu səhifədə qeyd olunan pulqabıları rəsmi olaraq təsdiqlənməyib və yalnız məlumat məqsədləri üçün verilir.", "page-find-wallet-footnote-2": "Onların təsvirləri pulqabı layihələrinin özləri tərəfindən verilmişdir.", - "page-find-wallet-footnote-3": "Məhsullarımızı bu səhifəmizdəki kriteriyalara əsasən əlavə ediriksiyahı siyasətipulqabı əlavə etməyimizi istəyirsinizsə,GitHub-da problemdən şikayət edin.", + "page-find-wallet-footnote-3": "Məhsullarımızı bu səhifəmizdəki kriteriyalara əsasən əlavə ediriksiyahı siyasətipulqabı əlavə etməyimizi istəyirsinizsə,GitHub-da problemdən şikayət edin.", "page-find-wallet-mobile": "Mobil", "page-find-wallet-mobile-desc": "Mobil tətbiqləri olan pulqabılar", "page-find-wallet-desktop": "Masaüstü kompüter", diff --git a/src/intl/be/page-wallets-find-wallet.json b/src/intl/be/page-wallets-find-wallet.json index ae5adef296d..ef4489b5420 100644 --- a/src/intl/be/page-wallets-find-wallet.json +++ b/src/intl/be/page-wallets-find-wallet.json @@ -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": "На камп'ютары", diff --git a/src/intl/bg/page-wallets-find-wallet.json b/src/intl/bg/page-wallets-find-wallet.json index 6b7295fc085..1db3097eddc 100644 --- a/src/intl/bg/page-wallets-find-wallet.json +++ b/src/intl/bg/page-wallets-find-wallet.json @@ -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": "Десктоп", diff --git a/src/intl/bn/page-wallets-find-wallet.json b/src/intl/bn/page-wallets-find-wallet.json index 92afc1f4380..81dd7fdd069 100644 --- a/src/intl/bn/page-wallets-find-wallet.json +++ b/src/intl/bn/page-wallets-find-wallet.json @@ -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": "ডেস্কটপ", diff --git a/src/intl/bs/page-wallets-find-wallet.json b/src/intl/bs/page-wallets-find-wallet.json index 85e7d5db5bb..03b6751b9bf 100644 --- a/src/intl/bs/page-wallets-find-wallet.json +++ b/src/intl/bs/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Filteri karakteristika", "page-find-wallet-footnote-1": "Novčanici navedeni na ovoj stranici nisu zvanične preporuke i služe samo u informativne svrhe.", "page-find-wallet-footnote-2": "Sami projekti novčanika navode opise.", - "page-find-wallet-footnote-3": "Dodajemo proizvode na ovu stranicu na osnovu kriterija naših pravila za navođenje. Ako želite da dodamo novčanik, obratite se GitHubu.", + "page-find-wallet-footnote-3": "Dodajemo proizvode na ovu stranicu na osnovu kriterija naših pravila za navođenje. Ako želite da dodamo novčanik, obratite se GitHubu.", "page-find-wallet-mobile": "Mobilni", "page-find-wallet-mobile-desc": "Novčanici s mobilnim aplikacijama", "page-find-wallet-desktop": "Desktop", diff --git a/src/intl/cs/page-wallets-find-wallet.json b/src/intl/cs/page-wallets-find-wallet.json index 5c1029278f6..15de53c4c91 100644 --- a/src/intl/cs/page-wallets-find-wallet.json +++ b/src/intl/cs/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Filtry funkcí", "page-find-wallet-footnote-1": "Peněženky uvedené na této stránce nejsou oficiálním doporučením a jsou poskytovány pouze pro informační účely.", "page-find-wallet-footnote-2": "Jejich popisy byly poskytnuty samotnými tvůrci peněženek.", - "page-find-wallet-footnote-3": "Na tuto stránku přidáváme produkty na základě kritérií v našich pravidlech. Pokud byste chtěli přidat peněženku, navrhněte podnět na GitHubu.", + "page-find-wallet-footnote-3": "Na tuto stránku přidáváme produkty na základě kritérií v našich pravidlech. Pokud byste chtěli přidat peněženku, navrhněte podnět na GitHubu.", "page-find-wallet-mobile": "Mobilní", "page-find-wallet-mobile-desc": "Peněženky s mobilními aplikacemi", "page-find-wallet-desktop": "Desktopová", diff --git a/src/intl/de/page-developers-docs.json b/src/intl/de/page-developers-docs.json index 1fb5f7da085..c0e5fb87edb 100644 --- a/src/intl/de/page-developers-docs.json +++ b/src/intl/de/page-developers-docs.json @@ -6,15 +6,26 @@ "docs-nav-block-explorers": "Block-Explorer", "docs-nav-blocks": "Blöcke", "docs-nav-blocks-description": "Die Art und Weise, wie Transaktionen zusammengefasst werden, um sicherzustellen, dass der Zustand über alle Akteure hinweg synchronisiert wird", + "docs-nav-bridges": "Bridges", + "docs-nav-bridges-description": "Eine Übersicht über Bridging für Entwickler", "docs-nav-compiling-smart-contracts": "Kompilieren von Smart Contracts", "docs-nav-composability": "Zusammensetzbarkeit", "docs-nav-consensus-mechanisms": "Konsensmechanismus", "docs-nav-consensus-mechanisms-description": "Wie sich die einzelnen Nodes eines verteilten Netzwerks auf den aktuellen Zustand des Systems einigen", + "docs-nav-gasper": "Gasper", + "docs-nav-weak-subjectivity": "Schwache Subjektivität", + "docs-nav-attestations": "Beglaubigungen", + "docs-nav-keys": "Schlüssel", + "docs-nav-block-proposal": "Block-Vorschlag", "docs-nav-data-and-analytics": "Daten und Analysen", "docs-nav-data-and-analytics-description": "Wie Blockchain-Daten aggregiert, organisiert und in dApps implementiert werden", + "docs-nav-data-availability": "Datenverfügbarkeit", "docs-nav-dart": "Dart", "docs-nav-delphi": "Delphi", "docs-nav-deploying-smart-contracts": "Einsetzen von Smart Contracts", + "docs-nav-design-and-ux": "Einführung in Design und UX", + "docs-nav-design-and-ux-description": "Einführung in das UX-Design, ein Forschungsgebiet im Web3-Ökosystem und Ethereum", + "docs-nav-design-fundamentals": "Designgrundlagen", "docs-nav-development-frameworks": "Entwicklungs-Frameworks", "docs-nav-development-frameworks-description": "Werkzeuge, die das Entwickeln mit Ethereum erleichtern", "docs-nav-development-networks": "Entwicklungsnetzwerke", @@ -24,6 +35,7 @@ "docs-nav-erc-721": "ERC-721: NFTs", "docs-nav-erc-777": "ERC-777", "docs-nav-erc-1155": "ERC-1155", + "docs-nav-erc-4626": "ERC-4626", "docs-nav-ethereum-client-apis": "Ethereum-Client-APIs", "docs-nav-ethereum-client-apis-description": "Bequeme Bibliotheken, die es deiner Webapplikation erlauben, mit Ethereum und Smart Contracts zu interagieren", "docs-nav-ethereum-stack": "Ethereum-Stack", @@ -47,9 +59,12 @@ "docs-nav-java-script-apis": "JavaScript-APIs", "docs-nav-javascript": "JavaScript", "docs-nav-json-rpc": "JSON-RPC", - "docs-nav-mev": "Miner extrahierbarer Wert (MEV)", + "docs-nav-mev": "Maximaler extrahierbarer Wert (MEV)", "docs-nav-mev-description": "Wie der Wert aus der Ethereum-Blockchain über die Blockbelohnung hinaus gewonnen wird", "docs-nav-mining": "Mining", + "docs-nav-mining-algorithms": "Bergbau-Algorithmen", + "docs-nav-dagger-hashimoto": "Dagger-Hashimoto", + "docs-nav-ethash": "Ethash", "docs-nav-networks": "Netzwerke", "docs-nav-networks-description": "Implementierung von Ethereum inklusive Testnetzen", "docs-nav-nodes-and-clients": "Nodes und Clients", @@ -57,6 +72,8 @@ "docs-nav-opcodes": "Operationscodes", "docs-nav-run-a-node": "Einen Node ausführen", "docs-nav-client-diversity": "Client-Diversität", + "docs-nav-bootnodes": "Bootnodes", + "docs-nav-light-clients": "Leichte Clients", "docs-nav-nodes-as-a-service": "Nodes als Dienstleistung", "docs-nav-oracles": "Oracles", "docs-nav-oracles-description": "Wie Informationen in die Ethereum-Blockchain eingefügt werden", @@ -78,6 +95,8 @@ "docs-nav-scaling-validium": "Validium", "docs-nav-smart-contract-security": "Smart-Contract-Sicherheit", "docs-nav-smart-contract-security-description": "Best Practices für das Management von Smart-Contract-Angriffen und Schwachstellen", + "docs-nav-smart-contract-formal-verification": "Formale Verifikation von Smart Contracts", + "docs-nav-smart-contract-formal-verification-description": "Eine Einführung in die formale Verifikation im Kontext von Smart Contracts auf Ethereum", "docs-nav-smart-contract-anatomy": "Anatomie von Smart Contracts", "docs-nav-smart-contract-languages": "Sprachen von Smart Contracts", "docs-nav-smart-contracts": "Smart Contracts", @@ -91,8 +110,26 @@ "docs-nav-token-standards": "Tokenstandards", "docs-nav-transactions": "Transaktionen", "docs-nav-transactions-description": "Transfers und andere Aktionen, die Ethereums Zustand ändern", + "docs-nav-upgrading-smart-contracts": "Aktualisierung von Smart Contracts", + "docs-nav-verifying-smart-contracts": "Überprüfen von Smart Contracts", "docs-nav-web2-vs-web3": "Web2 vs Web3", "docs-nav-web2-vs-web3-description": "Die grundlegenden Unterschiede, die blockchain-basierte Anwendungen bieten", + "docs-nav-networking-layer": "Netzwerkebene", + "docs-nav-networking-layer-description": "Erklärung der Netzwerebene von Ethereum", + "docs-nav-networking-layer-network-addresses": "Netzwerkadressen", + "docs-nav-networking-layer-portal-network": "Netzwerkportal", + "docs-nav-data-structures-and-encoding": "Datenstrukturen und Kodierung", + "docs-nav-data-structures-and-encoding-description": "Erläuterung der Datenstrukturen und Kodierungsschema des Ethereum-Stacks", + "docs-nav-data-structures-and-encoding-rlp": "Recursive Length Prefix (RLP)", + "docs-nav-data-structures-and-encoding-patricia-merkle-trie": "Patricia Merkle Trie", + "docs-nav-data-structures-and-encoding-ssz": "Einfache Serialisierung (SSZ)", + "docs-nav-data-structures-and-encoding-web3-secret-storage": "Speicherdefinition von Web3-Geheimnis", + "docs-nav-rewards-and-penalties": "PoS – Belohungen und Strafen", + "docs-nav-node-architecture": "Knotenarchitektur", + "docs-nav-archive-nodes": "Archivknoten", + "docs-nav-attack-and-defense": "PoS – Angriff und Schutz", + "docs-nav-pos-vs-pow": "Proof-of-Stake und Proof-of-Work im Vergleich", + "docs-nav-pos-faqs": "FAQs zu Proof-of-Stake", "page-calltocontribute-desc-1": "Wenn du in diesem Bereich ein Experte bist und gerne etwas beitragen möchtest, editiere diese Seite und verbreite dein Wissen.", "page-calltocontribute-desc-2": "Dies wird dir angerechnet und du wirst der Ethereum-Community helfen!", "page-calltocontribute-desc-3": "Verwende dies flexibel", @@ -101,12 +138,12 @@ "page-calltocontribute-link-2": "Discord-Server", "page-calltocontribute-span": "Seite bearbeiten", "page-calltocontribute-title": "Hilf uns mit dieser Seite", - "layer-2-arbitrum-note": "Betrugsbeweise nur für Benutzer auf der Whitelist, Whitelist noch nicht geöffnet", - "layer-2-boba-note": "Zustandsprüfung in Entwicklung", - "layer-2-metis-note": "Betrugsbeweise in Entwicklung", - "layer-2-optimism-note": "Fehlernachweise in Entwicklung", + "layer-2-arbitrum-note": "Betrugsbeweise nur für Whitelist-Benutzer, Whitelist noch nicht geöffnet", + "layer-2-boba-note": "Statusüberprüfung in der Entwicklung", + "layer-2-metis-note": "Betrugsnachweise in Entwicklung", + "layer-2-optimism-note": "Fehlernachweise in der Entwicklung", "back-to-top": "Zum Seitenanfang", "banner-page-incomplete": "Diese Seite ist unvollständig und wir würden uns über Ihre Unterstützung freuen. Vervollständigen Sie diese Seite und fügen Sie alles hinzu, das Ihrer Meinung nach für die Community nützlich sein könnte.", "next": "Weiter", - "previous": "Vorherige" + "previous": "Zurück" } diff --git a/src/intl/de/page-staking.json b/src/intl/de/page-staking.json index 67195943d53..31a769d08d5 100644 --- a/src/intl/de/page-staking.json +++ b/src/intl/de/page-staking.json @@ -48,6 +48,11 @@ "page-staking-section-why-title": "Warum sollten Sie ihre ETH staken?", "page-staking-section-why-p1": "Es hängt alles davon ab, wie viel Sie staken möchten. Sie benötigen 32 ETH, um ihren eigenen Validator zu aktivieren, aber es ist möglich, weniger zu staken.", "page-staking-section-why-p2": "Schauen Sie sich die folgenden Optionen an und entscheiden Sie sich für die, welche für Sie und das Netzwerk am besten ist.", + "page-staking-guide-title-coincashew-ethereum": "CoinCashew's Ethereum 2.0 – Leitfaden", + "page-staking-guide-title-somer-esat": "Somer Esat", + "page-staking-guide-title-rocket-pool": "Rocket Pool – Node-Betreiber", + "page-staking-guide-description-linux": "Linux (CLI)", + "page-staking-guide-description-mac-linux": "Linux, macOS (CLI)", "page-staking-hierarchy-solo-h2": "Solo-Staking von zu Hause", "page-staking-hierarchy-solo-pill-1": "Am wirkungsvollsten", "page-staking-hierarchy-solo-pill-2": "Volle Kontrolle", @@ -77,7 +82,7 @@ "page-staking-hierarchy-cex-p3": "Wenn Sie sich nicht wohl dabei fühlen, Ihre eigenen Schlüssel zu halten, ist das in Ordnung. Diese Optionen sind für Sie da. Sehen Sie sich in der Zwischenzeit unsere Wallet-Seite an, auf der Sie erfahren können, wie Sie wirklich Eigentümer Ihrer Gelder werden. Wenn Sie bereit sind, kommen Sie zurück und verbessern Sie Ihr Staking-Spiel, indem Sie einen der angebotenen Self-Custody-Pool-Staking-Dienste ausprobieren.", "page-staking-hierarchy-subtext": "Wie Sie vielleicht bemerkt haben, gibt es viele Möglichkeiten, am Staking von Ethereum teilzunehmen. Diese Pfade zielen auf eine breite Palette von Benutzern ab und sind letztendlich alle einzigartig und unterscheiden sich in Bezug auf Risiken, Belohnungen und Vertrauensannahmen. Einige sind dezentraler, kampferprobter und/oder riskanter als andere. Wir stellen einige Informationen zu beliebten Projekten bereit, aber recherchieren Sie immer selbst, bevor Sie die ETH irgendwohin senden.", "page-staking-comparison-solo-saas": "Bei SaaS-Anbietern müssen Sie immer noch 32 ETH hinterlegen, müssen aber keine Hardware betreiben. In der Regel behalten Sie den Zugriff auf Ihre Validierungsschlüssel, müssen aber auch Ihre Signaturschlüssel freigeben, damit der Betreiber im Namen Ihres Validators handeln kann. Dies führt zu einer Vertrauensebene, die beim Betrieb Ihrer eigenen Hardware fehlt, und im Gegensatz zum Solo-Staking zu Hause hilft SaaS nicht so sehr bei der geografischen Verteilung von Knoten. Wenn Sie ungern Hardware betreiben, aber dennoch 32 ETH einsetzen möchten, kann die Verwendung eines SaaS-Anbieters eine gute Option für Sie darstellen.", - "page-staking-comparison-solo-pools": "Solo-Staking ist wesentlich aufwändiger als das Staking mit einem Pooling-Service, bietet aber vollen Zugriff auf ETH-Belohnungen und volle Kontrolle über die Einrichtung und Sicherheit Ihres Validators. Gepooltes Staking hat eine deutlich niedrigere Eintrittsbarriere. Benutzer können kleine ETH-Beträge einsetzen, müssen keine Validierungsschlüssel generieren und haben keine Hardware-Anforderungen, die über eine Standard-Internetverbindung hinausgehen. Liquiditäts-Token eröffnen die Möglichkeit, aus dem Staking auszusteigen, bevor dies auf Protokollebene aktiviert wird. Wenn Sie an diesen Funktionen interessiert sind, könnte gepooltes Staking eine gute Wahl sein.", + "page-staking-comparison-solo-pools": "Solo-Staking ist deutlich aufwändiger als Staking mit einem Pooling-Service, bietet aber vollen Zugang zu ETH-Belohnungen und volle Kontrolle über die Einrichtung und Sicherheit Ihres Validators. Die Einstiegshürde beim Pool-Staking ist deutlich niedriger. Nutzer können kleine ETH-Beträge einsetzen, müssen keine Validator-Schlüssel generieren und haben über eine Standard-Internetverbindung hinaus bestehen keine weiteren Hardware-Anforderungen. Liquiditäts-Token ermöglichen den Ausstieg aus dem Staking, bevor dies auf Protokollebene möglich ist. Wenn Sie an diesen Funktionen interessiert sind, könnte Pool-Staking eine gute Lösung sein.", "page-staking-comparison-saas-solo": "Zu den Ähnlichkeiten gehört, dass Sie Ihre eigenen Validierungsschlüssel haben, ohne Gelder bündeln zu müssen. Bei SaaS müssen Sie jedoch einem Drittanbieter vertrauen, der möglicherweise böswillig handelt oder selbst zum Ziel von Angriffen oder Vorschriften wird. Wenn Ihnen diese Vertrauensannahmen oder Zentralisierungsrisiken Sorge bereiten, ist der Goldstandard des Self-Sovereign-Stakings das Solo-Staking.", "page-staking-comparison-saas-pools": "Diese sind insofern ähnlich, als dass Sie sich im Allgemeinen auf jemand anderen verlassen, um den Validator-Kunden auszuführen, aber im Gegensatz zu SaaS können Sie beim gepoolten Staking mit kleineren ETH-Beträgen teilnehmen. Wenn Sie weniger als 32 ETH einsetzen möchten, sollten Sie sich diese ansehen.", "page-staking-comparison-pools-solo": "Gepooltes Staking hat im Vergleich zum Solo-Staking eine deutlich niedrigere Eintrittsbarriere, ist jedoch mit einem zusätzlichen Risiko verbunden, da alle Node-Operationen an Dritte delegiert werden, und zwar mit einer Gebühr. Solo-Staking bietet volle Souveränität und Kontrolle über die Entscheidungen, die mit der Auswahl einer Staking-Konfiguration einhergehen. Staker müssen nie ihre Schlüssel abgeben und erhalten volle Belohnungen, ohne dass Zwischenhändler einen Anteil für sich beanspruchen.", @@ -105,9 +110,9 @@ "page-staking-considerations-solo-6-valid": "Keine Berechtigung", "page-staking-considerations-solo-6-warning": "Berechtigung erforderlich", "page-staking-considerations-solo-7-title": "Mehrfachkunde (Multi-Client)", - "page-staking-considerations-solo-7-description": "Software ermöglicht es Benutzern, zwischen mindestens zwei oder mehr Konsensschicht-Clients zu wählen und zu wechseln", + "page-staking-considerations-solo-7-description": "Benutzer können softwaregesteuert zwischen mindestens zwei oder mehr Ausführungs-Clients wählen bzw. wechseln sowie mindestens zwei oder mehr Clients auf Konsensebene.", "page-staking-considerations-solo-7-valid": "Einfacher Client-Wechsel", - "page-staking-considerations-solo-7-warning": "Begrenzt auf Mehrheits-Client", + "page-staking-considerations-solo-7-warning": "Begrenzt auf einen Mehrheits-Client", "page-staking-considerations-solo-8-title": "Selbstverwahrung", "page-staking-considerations-solo-8-description": "Der Benutzer übernimmt die Verwahrung aller Validator-Informationen, einschließlich Signatur- und Auszahlungsschlüssel", "page-staking-considerations-solo-8-warning": "Verwahrung durch Drittanbieter", @@ -119,19 +124,25 @@ "page-staking-considerations-saas-6-description": "Benutzer benötigen keine besondere Berechtigung, Kontoregistrierung oder KYC, um am Dienst teilzunehmen", "page-staking-considerations-saas-6-valid": "Jeder kann beitreten", "page-staking-considerations-saas-6-warning": "Berechtigung erforderlich", - "page-staking-considerations-saas-7-title": "Verschiedene Clients", - "page-staking-considerations-saas-7-description": "Der Service sollte nicht mehr als 50 % seiner Gesamt-Validatoren mit einem Mehrheits-Validator-Client ausführen", + "page-staking-considerations-saas-7-title": "Vielfalt der Ausführung", + "page-staking-considerations-saas-7-description": "Staking-Dienste sollten maximal 50 % der Validatoren insgesamt mit einem Mehrheitsclient ausführen.", "page-staking-considerations-saas-7-valid": "Weniger als 50 %", "page-staking-considerations-saas-7-caution": "Derzeit unbekannt", "page-staking-considerations-saas-7-warning": "Mehr als 50 %", + "page-staking-considerations-saas-8-title": "Vielfalt der Konsensmechanismen", + "page-staking-considerations-saas-8-description": "Staking-Dienste sollten maximal 50 % der Validatoren insgesamt mit einem Mehrheitsclient ausführen.", + "page-staking-considerations-saas-8-valid": "Weniger als 50 %", + "page-staking-considerations-saas-8-caution": "Derzeit unbekannt", + "page-staking-considerations-saas-8-warning": "Mehr als 50 %", "page-staking-considerations-pools-5-description": "Der Service erfordert kein Vertrauen von Menschen, um Ihre Schlüssel zu verwahren oder Belohnungen zu verteilen", "page-staking-considerations-pools-6-title": "Genehmigungsfreie Nodes", "page-staking-considerations-pools-6-description": "Der Service erlaubt jedem, als Node-Betreiber für den Pool und ohne Erlaubnis beizutreten", - "page-staking-considerations-pools-7-description": "Der Service sollte nicht mehr als 50 % seiner Gesamt-Validatoren mit einem Mehrheits-Validator-Client ausführen", + "page-staking-considerations-pools-7-description": "Staking-Dienste sollten maximal 50 % der Validatoren insgesamt mit einem Mehrheitsclient ausführen.", "page-staking-considerations-pools-8-title": "Liquiditäts-Token", "page-staking-considerations-pools-8-description": "Bietet einen handelbaren Liquiditäts-Token, der Ihr gestaktes ETH repräsentiert, das wiederum in Ihrer eigenen Wallet gehalten wird", "page-staking-considerations-pools-8-valid": "Liquiditäts-Token", "page-staking-considerations-pools-8-warning": "Keine Liquiditäts-Token", + "page-staking-considerations-pools-9-description": "Staking-Dienste sollten maximal 50 % der Validatoren insgesamt mit einem Mehrheitsclient ausführen.", "page-staking-how-solo-works-item-1": "Besorgen Sie sich Hardware: Sie müssen einen Node betreiben, um zu staken", "page-staking-how-solo-works-item-2": "Synchronisieren Sie einen Client der Ausführungsebene", "page-staking-how-solo-works-item-3": "Synchronisieren Sie einen Client der Konsensebene", @@ -147,6 +158,8 @@ "page-staking-launchpad-widget-p3": "Um die Dinge zu erleichtern, schauen Sie sich einige der Tools und Anleitungen unten an, die Ihnen neben dem Staking-Launchpad helfen können, um Ihre Clients so schnell wie möglich einzurichten.", "page-staking-launchpad-widget-link": "Software-Tools und -Anleitungen", "page-staking-products-get-started": "Erste Schritte", + "page-staking-dropdown-staking-options": "Staking-Optionen", + "page-staking-dropdown-staking-options-alt": "Staking-Optionen – Dropdown-Menü", "page-staking-stats-box-metric-1": "Gesamtes Staking-ETH", "page-staking-stats-box-metric-2": "Gesamtanzahl von Validatoren", "page-staking-stats-box-metric-3": "Aktuelle APR", @@ -214,7 +227,7 @@ "page-staking-toc-further": "Weiterführende Informationen", "page-staking-dom-info-title": "Staking mit Ethereum", "page-staking-join-community": "Der Staker-Community beitreten", - "page-staking-join-community-desc": "EthStaker ist eine Community für alle, die über das Staking auf Ethereum diskutieren und lernen möchten. Schließen Sie sich Zehntausenden von Mitgliedern aus der ganzen Welt an, um Ratschläge und Unterstützung zu erhalten und über alles zu sprechen, was mit Staking zu tun hat.", + "page-staking-join-community-desc": "EthStaker ist eine Community für alle, die über das Staking auf Ethereum diskutieren und mehr darüber erfahren möchten. Schließen Sie sich Zehntausenden von Mitgliedern aus der ganzen Welt an, um Ratschläge und Unterstützung zu erhalten und über alle Themen rund um das Staking zu sprechen.", "page-staking-meta-description": "Ein Überblick über Ethereum-Staking: die Risiken, Belohnungen, Anforderungen und wo gestakt werden kann.", "page-staking-meta-title": "Ethereum-Staking", "page-staking-withdrawals-important-notices": "Wichtige Hinweise", diff --git a/src/intl/de/page-wallets-find-wallet.json b/src/intl/de/page-wallets-find-wallet.json index 263c34c8092..0bf8f3a3838 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, melden Sie ein Problem in GitHub.", "page-find-wallet-mobile": "Mobil", "page-find-wallet-mobile-desc": "Wallets mit mobilen Apps", "page-find-wallet-desktop": "Desktop", diff --git a/src/intl/el/page-wallets-find-wallet.json b/src/intl/el/page-wallets-find-wallet.json index d3ad18e8f1a..33e4f82ea6e 100644 --- a/src/intl/el/page-wallets-find-wallet.json +++ b/src/intl/el/page-wallets-find-wallet.json @@ -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": "Σταθερού υπολογιστή", diff --git a/src/intl/en/common.json b/src/intl/en/common.json index 7bdb6c9aef9..d93be2f3864 100644 --- a/src/intl/en/common.json +++ b/src/intl/en/common.json @@ -107,7 +107,7 @@ "grants": "Grants", "grant-programs": "Ecosystem Grant Programs", "guides": "Guides", - "guides-hub": "Guides hub", + "guides-hub": "How-to guides", "history-of-ethereum": "History of Ethereum", "home": "Home", "how-ethereum-works": "How Ethereum works", diff --git a/src/intl/en/glossary.json b/src/intl/en/glossary.json index be652cdb629..5e2d2a9a58f 100644 --- a/src/intl/en/glossary.json +++ b/src/intl/en/glossary.json @@ -1,10 +1,10 @@ { "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", - "address-definition": "Most generally, this represents an externally owned account (EOA) or contract account that can receive (destination address) or send (source address) transactions on the blockchain. More specifically, it is the rightmost 160 bits of a Keccak hash of an ECDSA public key.", + "address-definition": "Most generally, this represents an externally owned account (EOA) or contract account that can receive (destination address) or send (source address) transactions on the blockchain. More specifically, it is the rightmost 160 bits of a Keccak hash of an ECDSA public key.", "abi-term": "Application Binary Interface (ABI)", "abi-definition": "The standard way to interact with contracts in the Ethereum ecosystem, both from outside the blockchain and for contract-to-contract interactions. More on ABI.", "api-term": "Application Programming Interface (API)", @@ -250,7 +250,7 @@ "receipt-term": "Receipt", "receipt-definition": "Data returned by an Ethereum client to represent the result of a particular transaction, including a hash of the transaction, its block number, the amount of gas used, and, in case of deployment of a smart contract, the address of the contract.", "re-entrancy-attack-term": "Re-entrancy attack", - "re-entrancy-attack-definition": "An attack that consists of an attacker contract calling a victim contract function in such a way that during execution the victim calls the attacker contract again, recursively. This can result, for example, in the theft of funds by skipping parts of the victim contract that update balances or count withdrawal amounts.< href=\"/developers/docs/smart-contracts/security/#re-entrancy\">More on re-entrancy.", + "re-entrancy-attack-definition": "An attack that consists of an attacker contract calling a victim contract function in such a way that during execution the victim calls the attacker contract again, recursively. This can result, for example, in the theft of funds by skipping parts of the victim contract that update balances or count withdrawal amounts. More on re-entrancy.", "reward-term": "Reward", "reward-definition": "An amount of ether included in each new block as a reward by the network to the miner who found the proof-of-work solution.", "rlp-term": "Recursive Length Prefix (RLP)", diff --git a/src/intl/en/page-bug-bounty.json b/src/intl/en/page-bug-bounty.json index e2f4a033bae..ade02b22c1f 100644 --- a/src/intl/en/page-bug-bounty.json +++ b/src/intl/en/page-bug-bounty.json @@ -3,7 +3,7 @@ "page-upgrades-bug-bounty-annotations": "It might be helpful to check out the following annotations:", "page-upgrades-bug-bounty-client-bugs": "Client bugs", "page-upgrades-bug-bounty-client-bugs-desc": "Clients run the Ethereum Network, and they need to follow the logic set out in the specification and be secure against potential attacks. The bugs we want to find are related to the implementation of the protocol.", - "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.", + "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": "Clients featured in the bounties", "page-upgrades-bug-bounty-clients-type-1": "Spec non-compliance issues", "page-upgrades-bug-bounty-clients-type-2": "Unexpected crashes, RCE or denial of service (DOS) vulnerabilities", diff --git a/src/intl/en/page-dapps.json b/src/intl/en/page-dapps.json index b5be49d02e4..1d06f05847a 100644 --- a/src/intl/en/page-dapps.json +++ b/src/intl/en/page-dapps.json @@ -285,6 +285,10 @@ "foundation": "Foundation", "transaction-fees": "What are transaction fees?", "page-wallets-get-some": "Get some ETH", + "page-dapps-dapp-description-curve": "Curve is a dex focused on stablecoins", + "page-dapps-curve-image-alt": "Curve logo", + "page-dapps-dapp-description-dodo": "DODO is a on-chain liquidity provider, which leverages the Proactive Market Maker algorithm (PMM)", + "page-dapps-dodo-image-alt": "DODO logo", "page-dapps-dapp-description-artblocks": "Art Blocks is dedicated to bringing compelling works of contemporary generative art to life", "page-dapps-artblocks-image-alt": "Art Blocks logo" } diff --git a/src/intl/en/page-languages.json b/src/intl/en/page-languages.json index c4834042b32..53d97878c77 100644 --- a/src/intl/en/page-languages.json +++ b/src/intl/en/page-languages.json @@ -50,6 +50,7 @@ "language-mr": "Marathi", "language-ms": "Malay", "language-nb": "Norwegian", + "language-ne-np": "Nepali", "language-nl": "Dutch", "language-pcm": "Nigerian Pidgin", "language-fil": "Filipino", diff --git a/src/intl/en/page-wallets-find-wallet.json b/src/intl/en/page-wallets-find-wallet.json index 1cb829ab018..99a6572d6ce 100644 --- a/src/intl/en/page-wallets-find-wallet.json +++ b/src/intl/en/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Feature filters", "page-find-wallet-footnote-1": "Wallets listed on this page are not official endorsements, and are provided for informational purposes only.", "page-find-wallet-footnote-2": "Their descriptions have been provided by the wallet projects themselves.", - "page-find-wallet-footnote-3": "We add products to this page based on criteria in our listing policy. If you'd like us to add a wallet, raise an issue in GitHub.", + "page-find-wallet-footnote-3": "We add products to this page based on criteria in our listing policy. If you'd like us to add a wallet, raise an issue in GitHub.", "page-find-wallet-mobile": "Mobile", "page-find-wallet-mobile-desc": "Wallets with mobile apps", "page-find-wallet-desktop": "Desktop", diff --git a/src/intl/es/page-roadmap-vision.json b/src/intl/es/page-roadmap-vision.json index ebe9d8c0178..f3235af0678 100644 --- a/src/intl/es/page-roadmap-vision.json +++ b/src/intl/es/page-roadmap-vision.json @@ -1,10 +1,10 @@ { - "page-roadmap-vision-2014": "Ver una entrada del blog de 2014 sobre la prueba de participación", - "page-roadmap-vision-2021": "Ver una entrada en el blog de 2021 sobre la evolución de la hoja de ruta de Ethereum", - "page-roadmap-vision-2022": "Ver una entrada en el blog de 2022: «La guía del autoestopista de Ethereum».", - "page-roadmap-vision-2021-updates": "Ver una entrada en el blog de 2021 sobre las actualizaciones de protocolo de Ethereum", + "page-roadmap-vision-2014": "Lea una entrada del blog de 2014 sobre la prueba de participación.", + "page-roadmap-vision-2021": "Lea una entrada en el blog de 2021 sobre la evolución de la hoja de ruta de Ethereum.", + "page-roadmap-vision-2022": "Lea una entrada en el blog de 2022: «La guía del autoestopista de Ethereum».", + "page-roadmap-vision-2021-updates": "Lea una entrada en el blog de 2021 sobre las actualizaciones del protocolo de Ethereum.", "page-roadmap-vision-desc-1": "Ethereum necesita reducir la congestión de la red y aumentar la velocidad para mejorar el servicio de una base global de usuarios.", - "page-roadmap-vision-desc-2": "Ejecutar un nodo es cada vez más difícil a medida que crece la red. Los intentos de escalar la red solo harán que resulte cada vez más difícil.", + "page-roadmap-vision-desc-2": "A medida que crece la red, la ejecución de un nodo se va volviendo cada vez más complicada. Los intentos de escalar la red solo harán que resulte cada vez más difícil.", "page-roadmap-vision-desc-3": "Ethereum consume demasiada electricidad. La tecnología que mantiene segura la red necesita ser más sostenible.", "page-roadmap-vision-ethereum-node": "Más información sobre los nodos", "page-roadmap-vision-future": "Un futuro digital a escala global", @@ -14,21 +14,21 @@ "page-roadmap-vision-problems": "Los problemas actuales", "page-roadmap-vision-scalability": "Escalabilidad", "page-roadmap-vision-scalability-desc": "Ethereum tiene que ser capaz de manejar más transacciones por segundo sin aumentar el tamaño de los nodos en la red. Los nodos son vitales participantes de la red que almacenan y ejecutan la cadena de bloques. Aumentar el tamaño de los nodos no es práctico, ya que solo aquellos con computadoras potentes y caras podrían hacerlo. Para escalar, Ethereum necesita más transacciones por segundo junto con más nodos. Y más nodos significa más seguridad.", - "page-roadmap-vision-scalability-desc-3": "Las actualizaciones de Sharding difundirán los requisitos de almacenamiento de datos por toda la red, ya que ya no requieren que cada nodo contenga el 100 % de los datos. Aunque esto no aborda directamente la escalabilidad de la ejecución de las transacciones, este problema está siendo abordado directamente por las soluciones acumulativas de capa 2.", - "page-roadmap-vision-scalability-desc-4": "Las acumulaciones necesitan un almacenamiento económico en la capa 1 para ser más productivas. La fragmentación le dará a Ethereum espacio para respirar al maximizar la productividad de las acumulaciones, lo que permitirá mejoras exponenciales más allá del límite actual de 15 a 45 transacciones por segundo.", + "page-roadmap-vision-scalability-desc-3": "Layer 2 rollups scale Ethereum by moving transactions off-chain and only posting summary data to Ethereum. This batching increases Ethereum's throughput while drastically reducing costs for users.", + "page-roadmap-vision-scalability-desc-4": "Las acumulaciones necesitan un almacenamiento a bajo coste en la capa 1 para abaratar las transacciones lo máximo posible para los usuarios. Esto se proporciona en forma de «masa» adjuntas a los bloques de Ethereum. Con el tiempo, se adjuntarán muchas masas a los bloques de Ethereum y proporcionarán un almacenamiento barato para numerosas acumulaciones.", "page-roadmap-vision-security": "Seguridad", "page-roadmap-vision-security-desc": "Las actualizaciones planificadas mejoran la seguridad de Ethereum contra ataques coordinados.", "page-roadmap-vision-security-desc-3": "En la prueba de participación, la seguridad adicional proviene de mayores disuasiones criptoeconómicas contra ataques. Esto se debe a que, en la prueba de participación, los validadores que aseguran la red deben apostar cantidades significativas de ETH en el protocolo. Si intentan atacar la red, el protocolo puede destruir automáticamente su ETH.", - "page-roadmap-vision-security-desc-5": "Sin embargo, también es importante que se implementen pronto actualizaciones que protejan a los validadores contra los ataques de denegación de servicio, que mejoren su anonimato y que separen la construcción y la propagación de bloques. Estas mejoras protegen a los validadores individuales y a la red en su conjunto contra los ataques de suplantacion de identidad y la censura.", + "page-roadmap-vision-security-desc-5": "Sin embargo, también es importante que se implementen pronto actualizaciones que protejan a los validadores contra los ataques de denegación de servicio, que mejoren su anonimato y que separen la construcción y la propagación de bloques. Estas mejoras protegen a los validadores individuales y a la red en su conjunto contra los ataques de suplantación de identidad y la censura.", "page-roadmap-vision-security-desc-5-link": "Más sobre la prueba de participación", "page-roadmap-vision-security-desc-10": "Participar también significa que no necesita invertir en hardware de élite para participar directamente en el consenso. Esto debería alentar a más personas a convertirse en validadores, aumentando la descentralización de la red y disminuyendo el área de superficie de ataque.", "page-roadmap-vision-security-staking": "Apostar ETH", "page-roadmap-vision-security-validator": "Puede convertirse en validador apostando su ETH.", - "page-roadmap-vision-staking-lower": "Más información sobre las apuestas", + "page-roadmap-vision-staking-lower": "Más información sobre las participaciones", "page-roadmap-vision-subtitle": "Haga crecer a Ethereum hasta que tenga el poder de ayudar a toda la humanidad.", "page-roadmap-vision-sustainability": "Sostenibilidad", "page-roadmap-vision-sustainability-desc-1": "Ethereum es ahora una cadena de bloques ecológica. El consumo de energía se redujo en ~99,95 % cuando se cambió la prueba de trabajo por la prueba de participación.", - "page-roadmap-vision-sustainability-desc-2": "Ethereum ahora está asegurado a través de la participación, no del poder de cómputo.", + "page-roadmap-vision-sustainability-desc-2": "Ethereum ahora está protegido a través de la participación, no del poder de cómputo.", "page-roadmap-vision-sustainability-desc-3": "Esta mejora en sostenibilidad aporta también beneficios en seguridad: el ether apostado hace que sea mucho más costoso atacar la cadena que bajo la prueba de trabajo, pero menos costoso asegurarla, ya que hay que acuñar menos ETH nuevos para pagar a los validadores que a los mineros.", "page-roadmap-vision-sustainability-desc-8": "El paso hacia la prueba de participación hace a Ethereum más verde y más seguro. Es una plataforma de baja emisión de carbono para construir apps y organizaciones.", "page-roadmap-vision-sustainability-subtitle": "Ethereum es una cadena de bloques verde con una seguridad criptoeconómica fuerte.", @@ -36,31 +36,32 @@ "page-roadmap-vision-title-1": "Red congestionada", "page-roadmap-vision-title-2": "Espacio en el disco", "page-roadmap-vision-title-3": "Demasiada energía", - "page-roadmap-vision-trilemma-cardtext-1": "Las actualizaciones de Ethereum harán que Ethereum sea escalable, seguro y descentralizado. La fragmentación hará que Ethereum sea más escalable al aumentar las transacciones por segundo y al mismo tiempo disminuir la potencia necesaria para ejecutar un nodo y validar la cadena. La cadena de baliza hará que Ethereum sea seguro al coordinar validadores a través de un conjunto fragmentado de datos. Y al apostar reducirá la barrera a la participación y limitará el ahorro de escala, creando una red más grande, más descentralizada.", + "page-roadmap-vision-trilemma-cardtext-1": "Las actualizaciones de Ethereum lo convertirán en más escalable, seguro y descentralizado. El apostar ha bajado el listón de la participación y limitado las economías de escala, creando una red más grande y descentralizada.", "page-roadmap-vision-trilemma-cardtext-2": "Las redes de cadena de bloque seguras y descentralizadas requieren que cada nodo verifique cada transacción procesada por la cadena. Esta cantidad de trabajo limita el número de transacciones que pueden llevarse a cabo en cualquier momento dado. La cadena de Ethereum actual es descentralizada y segura.", - "page-roadmap-vision-trilemma-cardtext-3": "Las redes descentralizadas funcionan enviando información sobre transacciones a través de nodos - la red entera necesita saber sobre cualquier cambio de estado. Escalar las transacciones por segundo a través de una red descentralizada representa riesgos de seguridad porque, cuantas más transacciones hay, más alto es el retraso, y más alta es la probabilidad de un ataque mientras la información está circulando.", - "page-roadmap-vision-trilemma-cardtext-4": "Aumentar el tamaño y el poder de los nodos de Ethereum podría aumentar las transacciones por segundo de forma segura, pero el hardware requerido restringiría quién podría hacerlo - esto pone en peligro la descentralización. Se espera que la fragmentación y la prueba de apuesta permitirán que Ethereum aumente al incrementar la cantidad de los nodos, no su tamaño.", - "page-roadmap-vision-trilemma-h2": "El desafío del escalamiento descentralizado", - "page-roadmap-vision-trilemma-modal-tip": "Toque los círculos de la parte inferior para comprender mejor los problemas del escalamiento descentralizado", + "page-roadmap-vision-trilemma-cardtext-3": "Las redes descentralizadas funcionan enviando información sobre transacciones a través de nodos: la red entera necesita conocer cualquier cambio de estado. La escalabilidad de las transacciones por segundo a través de una red descentralizada representa riesgos de seguridad, porque cuantas más transacciones haya, mayor será el retraso, y más alta es la probabilidad de que se produzca un ataque mientras la información está circulando.", + "page-roadmap-vision-trilemma-cardtext-4": "Aumentar el tamaño y el poder de los nodos de Ethereum podría aumentar las transacciones por segundo de forma segura, pero el hardware requerido restringiría quién podría hacerlo, esto pone en peligro la descentralización. Se espera que la fragmentación y la prueba de participación permitan que Ethereum escale al incrementar la cantidad de los nodos, no su tamaño.", + "page-roadmap-vision-trilemma-h2": "El desafío de la escalabilidad descentralizada", + "page-roadmap-vision-trilemma-modal-tip": "Toque los círculos de la parte inferior para comprender mejor los problemas de la escalabilidad descentralizada.", "page-roadmap-vision-trilemma-p": "Una forma un tanto ingenua de solucionar los problemas de Ethereum sería volverlo más centralizado. El problema radica en que la descentralización es demasiado importante; es lo que le da a Ethereum neutralidad, resistencia a la censura, accesibilidad, privacidad de datos y seguridad casi inquebrantable.", - "page-roadmap-vision-trilemma-p-1": "La visión de Ethereum es ser más escalable y seguro, pero además mantenerse descentralizado. Lograr estas 3 cualidades es un problema conocido como el «trilema de la escalabilidad».", + "page-roadmap-vision-trilemma-p-1": "La visión de Ethereum es ser más escalable y seguro, pero además mantenerse descentralizado. Lograr estas tres cualidades es un problema conocido como el «trilema de la escalabilidad».", "page-roadmap-vision-trilemma-p-2": "Las actualizaciones de Ethereum intentan resolver el trilema, aunque se topan con desafíos considerables.", - "page-roadmap-vision-trilemma-press-button": "Pulse los botones sobre el triángulo para comprender mejor los problemas del escalamiento descentralizado.", + "page-roadmap-vision-trilemma-press-button": "Pulse los botones sobre el triángulo para comprender mejor los problemas de la escalabilidad descentralizada.", "page-roadmap-vision-trilemma-text-1": "Descentralización", "page-roadmap-vision-trilemma-text-2": "Seguridad", "page-roadmap-vision-trilemma-text-3": "Escalabilidad", - "page-roadmap-vision-trilemma-title-1": "Explorar el «trilema de escalabilidad»", - "page-roadmap-vision-trilemma-title-2": "Las actualizaciones de Ethereum están descentralizando la escalabilidad", + "page-roadmap-vision-trilemma-title-1": "Explorar el «trilema de la escalabilidad»", + "page-roadmap-vision-trilemma-title-2": "Las actualizaciones de Ethereum están descentralizando la escalabilidad.", "page-roadmap-vision-trilemma-title-3": "Seguro y descentralizado", "page-roadmap-vision-trilemma-title-4": "Descentralizado y escalable", "page-roadmap-vision-trilemma-title-5": "Escalable y seguro", "page-roadmap-vision-understanding": "Algunas claves para entender la visión de Ethereum", - "page-roadmap-vision-upgrade-needs": "La necesidad de actualizaciones", + "page-roadmap-vision-upgrade-needs": "La necesidad de hacer actualizaciones", "page-roadmap-vision-upgrade-needs-desc": "El protocolo de Ethereum lanzado en 2015 ha tenido un éxito increíble. Sin embargo, la comunidad de Ethereum siempre supuso que se necesitarían algunas actualizaciones clave para liberar todo el potencial de Ethereum.", - "page-roadmap-vision-upgrade-needs-desc-2": "La alta demanda está incrementando las comisiones por transacción, lo que hace que Ethereum sea más costoso para el usuario medio. El espacio en el disco necesario para ejecutar un cliente de Ethereum está creciendo a gran velocidad. Y el algoritmo de consenso subyacente de la prueba de trabajo que mantiene a Ethereum seguro y descentralizado tiene un gran impacto ambiental.", - "page-roadmap-vision-upgrade-needs-desc-3": "Ethereum tiene una serie de actualizaciones que intentan resolver estos problemas, entre otros. A esta serie de actualizaciones se llamó originalmente «Serenity» y «Eth2» y ha sido un área activa de investigación y desarrollo desde 2014.", - "page-roadmap-vision-upgrade-needs-desc-5": "Ahora que la tecnología está lista, estas actualizaciones cambiarán la arquitectura de Ethereum para hacerla más escalable, segura y sostenible para hacerle la vida más fácil a los usuarios existentes y atraer a otros nuevos. Y todo ello preservando el valor central de Ethereum de la descentralización.", - "page-roadmap-vision-upgrade-needs-desc-6": "Esto significa que no hay un botón de encendido para la escalabilidad. Las actualizaciones irán llegando progresivamente con el tiempo.", - "page-roadmap-vision-upgrade-needs-serenity": "Ver una entrada en el blog de 2015 sobre Serenity", - "ethereum": "Ethereum" + "page-roadmap-vision-upgrade-needs-desc-2": "La alta demanda está incrementando las comisiones por transaccion, lo que hace que Ethereum sea mas costoso para el usuario medio. El espacio en el disco necesario para ejecutar un cliente de Ethereum está creciendo a gran velocidad.", + "page-roadmap-vision-upgrade-needs-desc-3": "Ethereum tiene una serie de actualizaciones que intentan resolver estos problemas, entre otros. A esta serie de actualizaciones se les llamó originalmente «Serenity» y «Eth2» y han sido un área activa de investigación y desarrollo desde 2014.", + "page-roadmap-vision-upgrade-needs-desc-5": "Ahora que la tecnología está lista, estas actualizaciones cambiarán la arquitectura de Ethereum para hacerla más escalable, segura y sostenible y así hacerle la vida más fácil a los usuarios existentes y atraer a otros nuevos. Y todo ello preservando el valor central de Ethereum de la descentralización.", + "page-roadmap-vision-upgrade-needs-desc-6": "Esto significa que la escalabilidad no es tan sencillo como pulsar un botón; las actualizaciones irán llegando progresivamente con el tiempo.", + "page-roadmap-vision-upgrade-needs-serenity": "Lea una entrada en el blog de 2015 sobre «Serenity».", + "ethereum": "Ethereum", + "page-roadmap-vision-danksharding": "Más información sobre la fragmentación." } diff --git a/src/intl/es/page-upgrades-get-involved.json b/src/intl/es/page-upgrades-get-involved.json index c08686ee71d..d76d70f3e59 100644 --- a/src/intl/es/page-upgrades-get-involved.json +++ b/src/intl/es/page-upgrades-get-involved.json @@ -1,6 +1,6 @@ { "page-upgrades-get-involved-btn-1": "Ver clientes", - "page-upgrades-get-involved-btn-2": "Más información acerca de las apuestas (o «staking»)", + "page-upgrades-get-involved-btn-2": "Más información sobre las participaciones", "page-upgrades-get-involved-btn-3": "Encontrar errores", "page-upgrades-get-involved-bug": "Un error podría ser:", "page-upgrades-get-involved-bug-hunting": "Ir a la búsqueda de errores", @@ -11,29 +11,29 @@ "page-upgrades-get-involved-bug-li-4": "y más...", "page-upgrades-get-involved-desc-1": "Ejecutar un cliente significa que será un participante activo en Ethereum. Su cliente le ayudará a hacer un seguimiento de las transacciones y revisar nuevos bloques.", "page-upgrades-get-involved-desc-2": "Si tiene ETH, puede apostarlos para convertirse en validador y ayudar a mantener segura la red. Como validador, puede ganar recompensas en ETH.", - "page-upgrades-get-involved-desc-3": "¡Únase a la comunidad de prueba! Ayude a probar las actualizaciones de Ethereum antes de que sean enviadas, encuentre errores y gane recompensas.", + "page-upgrades-get-involved-desc-3": "¡Únase a la comunidad de prueba! Ayude a probar las actualizaciones de Ethereum antes de que se envíen, encuentre errores y gane recompensas.", "page-upgrades-get-involved-ethresearch-1": "Fragmentación", "page-upgrades-get-involved-ethresearch-2": "La Fusión", "page-upgrades-get-involved-ethresearch-3": "Ejecución fragmentada", "page-upgrades-get-involved-ethresearch-4": "Todos los temas de investigación", "page-upgrades-get-involved-how": "¿Cómo quiere participar?", - "page-upgrades-get-involved-how-desc": "La comunidad de Ethereum siempre se beneficiará cuanta más gente ejecute clientes, apueste y busque errores.", + "page-upgrades-get-involved-how-desc": "Cuanta más gente ejecute clientes, apueste y busque errores, la comunidad de Ethereum siempre se beneficiará.", "page-upgrades-get-involved-join": "Únase a la investigación", - "page-upgrades-get-involved-join-desc": "Como la mayoría de lo que ocurre en Ethereum, muchas de las búsquedas son públicas. Esto significa que puede tomar parte en las decisiones o solo leer los hallazgos de los investigadores de Ethereum. ethresear.ch cubre un número de temas, incluyendo nuevas actualizaciones, fragmentaciones y acumulaciones (o «rollups»), entre otros.", + "page-upgrades-get-involved-join-desc": "Como la mayoría de las cosas en Ethereum, muchas de la investigación es pública. Esto significa que puede tomar parte en las decisiones o solo leer los hallazgos de los investigadores de Ethereum. ethresear.ch cubre un número de temas, incluyendo nuevas actualizaciones y rollups, entre otros.", "page-upgrades-get-involved-meta-description": "Cómo participar en las actualizaciones de Ethereum: ejecutar nodos, apostar y encontrar errores, entre otras cosas.", "page-upgrades-get-involved-run-clients": "Ejecutar un par de cliente", "page-upgrades-get-involved-run-clients-desc": "Un «cliente» es un software que ejecuta la cadena de bloques, y en el caso de Ethereum, un nodo completo requiere ejecutar un par de estos clientes: un cliente de capa de ejecución y un cliente de capa de consenso. Un nodo completo puede comprobar las transacciones y, si también se apuesta ETH, puede crear nuevos bloques. Cada cliente tiene sus propias características, pero realiza la misma función en general, por lo que le animamos a elegir un cliente minoritario siempre que sea posible para mantener el conjunto de clientes diversos y seguros.", "page-upgrades-get-involved-run-clients-desc-link": "Más información sobre la diversidad de clientes.", "page-upgrades-get-involved-run-clients-execution": "Clientes en la capa de ejecución", - "page-upgrades-get-involved-run-clients-execution-desc": "A estos clientes se les denominaba anteriormente como clientes «Eth1», pero este término está siendo desbancado por clientes «en la capa de ejecución».", + "page-upgrades-get-involved-run-clients-execution-desc": "A estos clientes se les denominaba anteriormente clientes «Eth1», pero este término está siendo desbancado por clientes «en la capa de ejecución».", "page-upgrades-get-involved-run-clients-consensus": "Clientes de la capa de consenso", - "page-upgrades-get-involved-run-clients-consensus-desc": "A estos clientes se les denominaba anteriormente como clientes «Eth2», pero este término está siendo desbancado por clientes «en la capa de consenso».", - "page-upgrades-get-involved-stake": "Apueste sus ETH", - "page-upgrades-get-involved-stake-desc": "Ahora puede apostar sus ETH para ayudar a asegurar la cadena de baliza.", + "page-upgrades-get-involved-run-clients-consensus-desc": "A estos clientes se les denominaba anteriormente clientes «Eth2», pero este término está siendo desbancado por clientes «en la capa de consenso».", + "page-upgrades-get-involved-stake": "Apueste su ETH", + "page-upgrades-get-involved-stake-desc": "Ahora puede apostar sus ETH para ayudar a proteger la cadena de baliza.", "page-upgrades-get-involved-stake-eth": "Apostar ETH", - "page-upgrades-get-involved-subtitle": "He aquí un resumen de las maneras en las que puede ayudar con Ethereum y futuros intentos relacionados con actualizaciones.", + "page-upgrades-get-involved-subtitle": "He aquí un resumen de las maneras en las que puede contribuir con Ethereum y futuros intentos relacionados con actualizaciones.", "page-upgrades-get-involved-title-1": "Ejecutar un cliente", - "page-upgrades-get-involved-title-2": "Apueste sus ETH", + "page-upgrades-get-involved-title-2": "Apueste su ETH", "page-upgrades-get-involved-title-3": "Encontrar errores", "page-upgrades-get-involved-written-c-sharp": "Escrito en C#", "page-upgrades-get-involved-written-go": "Escrito en Go", diff --git a/src/intl/es/page-upgrades-index.json b/src/intl/es/page-upgrades-index.json index 3eb9ed9a616..251698ff4f6 100644 --- a/src/intl/es/page-upgrades-index.json +++ b/src/intl/es/page-upgrades-index.json @@ -11,6 +11,7 @@ "page-upgrades-answer-1": "La cadena de baliza se utilizó como herramienta para actualizar la red principal de Ethereum en La Fusión.", "page-upgrades-answer-2": "La Fusión supuso la actualización más sustancial realizada hasta el momento en Ethereum, y en ella se pasó de la prueba de trabajo a una prueba de participación basada en una capa de consenso.", "page-upgrades-answer-4": "La cadena de baliza se utilizó para desarrollar el consenso basado en una prueba de participación que Ethereum utiliza hoy en día. Se ejecutó por separado a la red principal de Ethereum, para que los desarrolladores pudieran observar el mecanismo de consenso de forma aislada antes de utilizarlo para coordinar la actividad real.", + "page-upgrade-article-author-status": "Estado", "page-upgrade-article-author-ethmerge": "La Fusión de Ethereum", "page-upgrade-article-author-alchemy": "Alquimia", "page-upgrade-article-author-consensys": "Consensys", @@ -76,7 +77,7 @@ "page-upgrades-question-2-title": "¿Es la cadena de baliza una cadena de bloques separada?", "page-upgrades-question-2-desc": "Sí. La cadena de baliza fue el nombre que se le dio a una cadena de bloques de prueba de participación paralela, utilizada para actualizar la red principal de Ethereum. Ahora solo hay una cadena de bloques, formada por la fusión de la cadena de bloques de Ethereum original y la cadena de baliza.\n", "page-upgrades-question-3-answer-2a": "La Fusión tuvo un impacto mínimo en los desarrolladores de dapp: todavía interactúan con Ethereum de la misma manera.", - "page-upgrades-question-3-answer-2a-link": "La Fusión y los desarrolladores de Dapps", + "page-upgrades-question-3-answer-2a-link": "La Fusión y los desarrolladores de DApps", "page-upgrades-question-3-answer-2b": "Los planes de fragmentación siguen desarrollándose, pero se diseñarán pensando en las acumulaciones en capa 2.", "page-upgrades-layer-2-rollups": "Más información sobre las acumulaciones en capa 2", "page-upgrades-question-3-answer-3-link": "Visite ethresearch.ch", @@ -150,7 +151,7 @@ "page-upgrades-secure": "Más seguro", "page-upgrades-secure-desc": "Ethereum necesita ser más seguro. A medida que aumenta la adopción de Ethereum, el protocolo necesita ser más seguro contra todo tipo de ataques.", "page-upgrades-shard-date": "En algún momento durante 2023-2024, la fragmentación o «sharding» seguirá a La Fusión en múltiples fases.", - "page-upgrades-shard-desc": "La fragmentación expandirá la capacidad de Ethereum para almacenar datos, y trabajar en armonía con capas 2 para escalar y reducir los gastos de red. La fragmentación se desplegará en múltiples fases.", + "page-upgrades-shard-desc": "La fragmentación (Danksharding) expandirá la capacidad de Ethereum para almacenar datos y trabajar en armonía con capas 2 con el fin de escalar y reducir los costes de la red. La fragmentación se desplegará en múltiples fases, empezando por ProtoDanksharding.", "page-upgrades-shard-estimate": "Fecha estimada: 2023-2024", "page-upgrades-shard-lower": "Más sobre la fragmentación", "page-upgrades-shard-title": "La fragmentación", @@ -199,7 +200,7 @@ "page-upgrades-whats-ethereum": "Un segundo, ¿pero qué es Ethereum?", "page-upgrades-whats-new": "¿Y ahora qué pasará con Ethereum?", "page-upgrades-security-link": "Más información acerca de la seguridad y prevención de fraudes", - "page-staking-deposit-contract-staking-more-link": "Más información acerca de las apuestas (staking)", + "page-staking-deposit-contract-staking-more-link": "Más información sobre las participaciones", "docs-nav-proof-of-stake": "Prueba de participación", "docs-nav-proof-of-work": "Prueba de trabajo", "page-upgrades-get-involved-ethresearch-1": "Fragmentación", diff --git a/src/intl/es/page-upgrades.json b/src/intl/es/page-upgrades.json index 5b7c26412fa..1b9e5ecfb66 100644 --- a/src/intl/es/page-upgrades.json +++ b/src/intl/es/page-upgrades.json @@ -4,16 +4,19 @@ "page-upgrades-beacon-date": "¡Enviado!", "page-upgrades-merge-date": "Septiembre de 2022\n", "page-upgrades-shards-date": "aproximadamente en 2023", + "page-upgrades-pbs": "No inminente: se espera para 2024/25", "page-upgrades-post-merge-banner-tutorial-ood": "Este tutorial estará obsoleto después de la fusión y puede que no funcione. Por favor, cree una PR si desea contribuir.", "page-upgrades-post-merge-banner-governance-ood": "Parte del contenido de esta página estará obsoleto después de la fusión. Por favor cree una PR si quiere contribuir.", "page-upgrades-upgrades-guide": "Guía de actualizaciones de Ethereum", - "page-upgrades-upgrades-docking": "La fusión", - "page-upgrades-shard-title": "La fragmentación", + "page-upgrades-upgrades-docking": "La Fusión", + "page-upgrades-shard-title": "Fragmentación", "page-upgrades-upgrades-beacon-chain": "La cadena de baliza", + "consensus-beaconscan-title": "beaconscan", + "consensus-beaconscan-in-title": "beaconcha.in", "consensus-beaconcha-in-desc": "Explorador de la cadena de baliza de código abierto", - "consensus-beaconscan-desc": "Explorador de la cadena de baliza - Etherscan para la capa de consenso", + "consensus-beaconscan-desc": "Explorador de la cadena de baliza: Etherscan para la capa de consenso", "consensus-become-staker": "Conviértase en un participante", - "consensus-become-staker-desc": "El «staking» (o apuestas) ya es una realidad. Si quiere hacer apuestas con sus ETH para ayudar a hacer segura la red, asegúrese de que es consciente de los riesgos.", + "consensus-become-staker-desc": "Las apuestas (o participaciones) son ya una realidad. Si quiere hacer apostar sus ETH para contribuir a la seguridad de la red, cerciórese de conocer los riesgos.", "consensus-explore": "Explorar los datos", "consensus-run-beacon-chain": "Ejecutar un cliente de consenso", "consensus-run-beacon-chain-desc": "Ethereum necesita tantos clientes participando como sea posible. ¡Ayude con este bien público de Ethereum!", diff --git a/src/intl/es/page-wallets-find-wallet.json b/src/intl/es/page-wallets-find-wallet.json index e46869c3e19..f2558b76fe1 100644 --- a/src/intl/es/page-wallets-find-wallet.json +++ b/src/intl/es/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Filtros de características", "page-find-wallet-footnote-1": "Las carteras enumeradas en esta página no constituyen una recomendación oficial y solo se facilitan con fines informativos.", "page-find-wallet-footnote-2": "Los propios proyectos de carteras han facilitado su descripción.", - "page-find-wallet-footnote-3": "Añadimos productos a esta página en función de los criterios de nuestra política de listado. Si quiere que añadamos una cartera, cree una incidencia en GitHub.", + "page-find-wallet-footnote-3": "Añadimos productos a esta página en función de los criterios de nuestra política de listado. Si quiere que añadamos una cartera, cree una incidencia en GitHub.", "page-find-wallet-mobile": "Versión para móvil", "page-find-wallet-mobile-desc": "Wallets con aplicaciones mobiles", "page-find-wallet-desktop": "Versión para escritorio", diff --git a/src/intl/fa/learn-quizzes.json b/src/intl/fa/learn-quizzes.json new file mode 100644 index 00000000000..295f0e73137 --- /dev/null +++ b/src/intl/fa/learn-quizzes.json @@ -0,0 +1,328 @@ +{ + "add-quiz": "یک پرسش/امتحان اضافه کنید", + "average-score": "میانگین امتیاز:", + "basics": " مبانی اتریوم", + "basics-description": "این بخش مفاهیم اساسی اتریوم را شامل می شود و اطمینان حاصل می‌کند که شما دانش پایه ای قوی را در اختیار دارید.", + "completed": "انجام شده:", + "community-stats": "آمار جامعه", + "contribute": "به توسعه کتابخانه ما کمک کنید.", + "correct": "درست", + "explanation": "توضیح", + "next-question": "سوال بعدی", + "next-quiz": "امتحان بعدی", + "page-assets-merge": "ادغام", + "passed": "شما قبول شدید!", + "questions": "سؤالات", + "questions-answered": "سوالات پاسخ داده شده:", + "quizzes-subtitle": "ببینید تا چه حد اتریوم و ارزهای رمزنگاری شده را درک کرده اید. آیا برای متخصص شدن آماده اید؟", + "retry": "سرعت تلاش مجدد:", + "score": "امتیاز", + "see-results": "دیدن نتایج", + "share-results": "اشتراک گذاری نتایج", + "start": "شروع", + "submit-answer": "بررسی پاسخ", + "test-your-knowledge": "میزان دانش اتریوم خود را بسنجید", + "try-again": "دوباره امتحان کنید", + "using-ethereum": "استفاده از اتریوم", + "using-ethereum-description": "با مطالعه و غرق شدن در کاربردهای اتریوم در دنیای واقعی متوجه میشوید که چگونه این بلاک‌چینِ انقلابی در حال شکل دادن به صنایع است. پیش از شروع به استفاده فعال از رمزارزها بهترین کار این است که مطمئن شوید به اندازه کافی همه مفاهیم اتریوم را متوجه شده‌اید.", + "want-more-quizzes": "آیا مایل به دیدن امتحانات بیشتر در اینجا هستید؟", + "your-results": "نتایج شما", + "your-total": "مجموع امتیازات شما", + "a001-prompt": "بزرگترین تفاوت بین اتریوم و بیتکوین:", + "a001-a-label": "اتریوم به شما امکان پرداخت پول به دیگران را نمی‌دهد", + "a001-a-explanation": "هم بیتکوین و هم اتریوم به شما امکان پرداخت پول به دیگران را میدهند.", + "a001-b-label": "میتوانید برنامه های رایانه ای روی اتریوم را اجرا کنید", + "a001-b-explanation": "اتریوم قابل برنامه ریزی است. این بدان معناست که هر برنامه رایانه ای را میتوانید در بلاک‌چین اتریوم اجرا کنید.", + "a001-c-label": "شما میتوانید برنامه های رایانه ای را در بیتکوین اجرا کنید", + "a001-c-explanation": "برعکس اتریوم، بیتکوین قابل برنامه‌ریزی نیست و نمیتوانید برنامه دلخواه رایانه‌ای را در آن اجرا کنید.", + "a001-d-label": "آنها لوگوهای متفاوت دارند", + "a001-d-explanation": "آنها لوگوهای متفاوت دارند! اما این بزرگترین تفاوت بین آنها نیست.", + "a002-prompt": "رمزارز بومی شبکه اتریوم:", + "a002-a-label": "اتر", + "a002-a-explanation": "اتر رمز ارز بومی شبکه اتریوم است.", + "a002-b-label": "اتریوم", + "a002-b-explanation": "اتریوم بلاک‌چین است ولی رمز بومی آن اتریوم نیست. این یک تصور اشتباه رایج است.", + "a002-c-label": "اترکوین", + "a002-c-explanation": "برخلاف خیلی از رمزارزهای دیگر، رمزارز بومی اتریوم در نام خود کلمه «کوین» ندارد.", + "a002-d-label": "بیت کوین", + "a002-d-explanation": "بیتکوین (Bitcoin با حرف اول بزرگ) اولین بلاک‌چین ساخته شده است، بیتکوین (bitcoin با حرف اول کوچک) رمزارز بومی آن است.", + "a003-prompt": "چه کسی اتریوم را اجرا می کند?", + "a003-a-label": "توسعه‌دهندگان", + "a003-a-explanation": "توسعه‌دهندگان نقش اساسی در ساخت و بهبود اتریوم دارند، اما آنها گروهی نیستند که باعث ادامه اجرای اتریوم می‌شود.", + "a003-b-label": "Miners", + "a003-b-explanation": "استخراج، دیگر در اتریوم بعد از «ادغام» ممکن نبوده است. دیگر «استخراجگرها» در شبکه اتریوم وجود ندارند.", + "a003-c-label": "بنیاد اتریوم", + "a003-c-explanation": "بنیاد اتریوم دیگر نقش عمده‌ای در اجرای روزانه گره‌های شبکه اتریوم ندارد.", + "a003-d-label": "هر کسی که یک گره را اجرا میکند", + "a003-d-explanation": "هر کسی که یک گره اتریوم را اجرا میکند جز مهمی از زیر ساخت اتریوم است. اگر هنوز به آن فکر نکرده اید، اجرای یک گره اتریوم را در نظر بگیرید.", + "a004-prompt": "از زمان راه اندازی شبکه اتریوم، چند بار شبکه از دسترس خارج شده و به حالت آفلاین درآمده است؟", + "a004-a-label": "هرگز", + "a004-b-label": "یکبار", + "a004-c-label": "چهار بار", + "a004-d-label": "بیش از 10 بار", + "a004-explanation": "اتریوم از زمان راه‌اندازی هیچ وقت آفلاین نشده است (از تولید بلاک دست برنداشته است).", + "a005-prompt": "انرژی مصرفی اتریوم بیشتر است از:", + "a005-a-label": "استخراج طلا", + "a005-a-explanation": "استخراج طلا سالانه حدود 131 تراوات ساعت برق مصرف میکند. اتریوم سالانه حدود 0.0026 تراوات ساعت برق مصرف میکند.", + "a005-b-label": "نتفلیکس", + "a005-b-explanation": "نتفلیکس سالانه حدود 0.451 تراوات ساعت برق مصرف میکند. اتریوم سالانه حدود 0.0026 تراوات ساعت برق مصرف میکند.", + "a005-c-label": "پی پال", + "a005-c-explanation": "پی پل سالانه حدود 0.26 تراوات ساعت برق مصرف میکند. اتریوم سالانه حدود 0.0026 تراوات ساعت برق مصرف میکند.", + "a005-d-label": "هیچ کدام از گزینه های فوق", + "a005-d-explanation": "اتریوم سالانه حدود 0.0026 تراوات ساعت برق مصرف میکند. کمتر از استخراج طلا (حدود 131 تراوات ساعت در سال)، نتفلیکس (حدود 0.451 تراوات ساعت در سال)،و پی پل (حدود 0.26 تراوات ساعت در سال).", + "b001-prompt": "نماد دیگر اتر:", + "b001-a-label": "ETC", + "b001-a-explanation": "ETC تیکر اتریوم کلاسیک است.", + "b001-b-label": "ETR", + "b001-b-explanation": "ETR تیکر هیچ اتر یا هیچ رمزارز شناخته شده ای نیست.", + "b001-c-label": "اتر", + "b001-c-explanation": "ETH تیکر اتر روی اتریوم است.", + "b001-d-label": "BTC", + "b001-d-explanation": "BTC تیکر بیتکوین روی شبکه بیتکوین است.", + "b002-prompt": "در اتریوم، کارمزدهای شبکه با ارز زیر پرداخت میشود:", + "b002-a-label": "بیت کوین", + "b002-a-explanation": "“bitcoin” با حرف اول کوچک، رمزارز بومی شبکه بیتکوین است.", + "b002-b-label": "اتر", + "b002-b-explanation": "اتر (ETH) یک رمزارز بومی شبکه اتریوم است. تمام کارمزدهای شبکه اتریوم با اتر پرداخت میشود.", + "b002-c-label": "دلار آمریکا", + "b002-c-explanation": "پرداخت کامزد استفاده از شبکه اتریوم با دلار آمریکا یا هر ارز فیات دیگری ناممکن است.", + "b002-d-label": "اتریوم", + "b002-d-explanation": "نام شبکه اتریوم است، اما کارمزد شبکه اتریوم با اتر پرداخت میشود.", + "b003-prompt": "سهام گذاری روی شبکه اتریوم به امینت شبکه کمک میکند زیرا:", + "b003-a-label": "سهم گذاران اگر از کاری که دیگران انجام میدهند خوششان نیاید میتوانند اعمال آن ها را بر روی شبکه مسدود کنند", + "b003-a-explanation": "سهم گذاران نمیتوانند به دلخواه کاربری را سانسور کنند.", + "b003-b-label": "اگر یک سهم گذار در شبکه اتریوم بخواهد تقلب کند، ریسک از دست دادن اترهایش وجود دارد", + "b003-b-explanation": "ریسک از دست دادن مقدار قابل توجهی اتر در صورتی که سهم گذاران فعالیت سودجویانه مخربی علیه شبکه اتریوم انجام دهند وجود دارند. این نوع جریمه تحت عنوان اسلشینگ شناخته میشود.", + "b003-c-label": "سهام گذران برای اثبات کار از رایانه های قدرتمندی استفاده میکنند", + "b003-c-explanation": "سهام گذاران نیاز به سخت‌افزار قدرتمند برای سهام گذاری اتر ندارند. اتریوم بعد از «ادغام» دیگر از مکانیزم اثبات کار استفاده نمی کند.", + "b003-d-label": "سهام گذاران، پیش از قبول شدن به عنوان اعتبارسنج، تحت فرایند تایید هویت قرار می‌گیرند", + "b003-d-explanation": "سهام گذاری در شبکه اتریوم بدون نیاز به مجوز و احراز هویت است.", + "b004-prompt": "اتر با ارزش است چون:", + "b004-a-label": "اتر برای انجام هر کار در شبکه اتریوم مورد نیاز است", + "b004-a-explanation": "این پاسخ تا حدی درست است، اما این تنها یکی از دلایل با ارزش بودن اتر است.", + "b004-b-label": "اتر یک رمزارز همتا-به-همتای سانسورنشدنی است", + "b004-b-explanation": "این پاسخ تا حدی درست است، اما این تنها یکی از دلایل با ارزش بودن اتر است.", + "b004-c-label": "ETH به عنوان وثیقه برای گرفتن وام در کریپتو استفاده میشود", + "b004-c-explanation": "این پاسخ تا حدی درست است، اما این تنها یکی از دلایل با ارزش بودن اتر است.", + "b004-d-label": "تمام موارد فوق", + "b004-d-explanation": "تراکنش های اتریوم سانسور نمیشوند، برای انجام تراکنش در اتریوم همیشه ETH لازم است، و آن یک قسمت بنیادی در پایداری اکوسیستم غیرمتمرکز است.", + "c001-prompt": "Web3 برای کاربران امکان مالکیت دارایی های دیجیتال را فراهم میکند، آن هم مستقیما از طریق:", + "c001-a-label": "DAOها", + "c001-a-explanation": "DAOها (سازمان های مستقل غیرمتمرکز) توسط اعضا اداره و رهبری میشوند بدون وجود رهبری متمرکز.", + "c001-b-label": "توکن های غیرقابل تعویض", + "c001-b-explanation": "NFTها (توکن های غیرقابل معاوضه) مسیری را فراهم آورده اند تا هر چیز منحصر به فرد را به عنوان یک دارایی مبتنی بر اتریوم ارائه داد.", + "c001-c-label": "ENS", + "c001-c-explanation": "ENS (Ethereum Name Service) سرویس نام‌گذاری غیرمتمرکز برای بلاک‌چین اتریوم است.", + "c001-d-label": "گیت‌هاب", + "c001-d-explanation": "گیت‌هاب یک پلتفرم متمرکز است که در درجه اول برای ذخیره کد با استفاده از کنترل نسخه توزیع شده است. گیت هاب به شما اجازه مالکیت داده یا دارایی های دیجیتال را نمیدهد.", + "c002-prompt": "Web1 فقط قابل خواندن بود، Web2 برای خواندن و نوشتن است، Web3 به این شکل توصیف میشود:", + "c002-a-label": "خواندن-نوشتن-فروش", + "c002-a-explanation": "Web3 اینطور توصیف نشده است.", + "c002-b-label": "خواندن-نوشتن-نگهداری", + "c002-b-explanation": "Web3 اینطور توصیف نشده است.", + "c002-c-label": "خواندن-نوشتن-مالکیت", + "c002-c-explanation": "Web3 به کاربران اجازه میدهد تا مالک داده های خود باشند و بنابراین به عنوان ‘read-write-own’ توصیف شده است، هرگونه بهبود در Web2 که فقط ‘read-write’ است.", + "c002-d-label": "خواندن-نوشتن-خریدن", + "c002-d-explanation": "Web3 اینطور توصیف نشده است.", + "c003-prompt": "کدام نسخه از وب به ارائه دهندگان سرویس پرداخت ثالث احتیاج ندارد؟", + "c003-a-label": "Web1", + "c003-a-explanation": "Web1 سیستم‌های یکپارچه پرداخت بومی نداشت.", + "c003-b-label": "Web2", + "c003-b-explanation": "Web2 سیستم یکپارچه پرداخت بومی ندارد.", + "c003-c-label": "وب نسخه ۳", + "c003-c-explanation": "Web3 سیستم یکپارچه پرداخت بومی با رمز ارز هایی مثل اتر دارد.", + "c003-d-label": "تمام موارد فوق", + "c003-d-explanation": "Web1 و Web2 سیستم پرداخت یکپارچه بومی ندارند.", + "c004-prompt": "اصطلاح 'Web3' برای اولین بار ابداع شد توسط:", + "c004-a-label": "گوین وود", + "c004-a-explanation": "گاوین وود، یکی از بنیان گذاران اتریوم، مدت کوتاهی پس از راه‌اندازی اتریوم در سال 2015، اصطلاح Web3 را ابداع کرد.", + "c004-b-label": "استیو جابز", + "c004-b-explanation": "استیو جایز عبارت 'Web3' را ابداع نکرد.", + "c004-c-label": "ویتالیک بوترین", + "c004-c-explanation": "ویتالیک بوترین، اگرچه بنیان‌گذار اصلی اتریوم بود، اما عبارت 'Web3' را ابداع نکرد.", + "c004-d-label": "ایلان ماسک", + "c004-d-explanation": "ایلان ماسک عبارت 'Web3' را ابداع نکرد.", + "c005-prompt": "شما می توانید ورود مقاوم در برابر سانسور در تمام وب داشته باشید با استفاده از:", + "c005-a-label": "ورود با حساب فیسبوک", + "c005-a-explanation": "ورود با حساب فیسبوک در برابر سانسور مقاوم نیست.", + "c005-b-label": "ورود با حساب گوگل", + "c005-b-explanation": "ورود با حساب گوگل در برابر سانسور مقاوم نیست.", + "c005-c-label": "با اتریوم وارد شوید", + "c005-c-explanation": "ورود با حساب اتریوم تنها گزینه مقاوم در برابر سانسور است که قابل استفاده در تمام اپلیکیشن‌های تحت وب است.", + "c005-d-label": "ورود با توییتر", + "c005-d-explanation": "ورود با حساب توییر در برابر سانسور مقاوم نیست.", + "d001-prompt": "امن ترین نوع کیف پول:", + "d001-a-label": "کیف پول سیار", + "d001-a-explanation": "کیف پول های سیار کلید های خصوصی را بر روی یک دستگاه سیار نگه می دارند، که معمولا به اینترنت متصل است، و به‌طور بالقوه توسط نرم‌افزار های دیگر در معرض خطر قرار می گیرد.", + "d001-b-label": "کیف پول سخت افزاری", + "d001-b-explanation": "کلید های خصوصی کیف پول سخت افزاری روی یک دستگاه اختصاصی، که می تواند از اینترنت دور نگه داشته شود و از سایر اپلیکیشن‌های روی دستگاه شما جدا شود، ذخیره می شوند.", + "d001-c-label": "کیف پول تحت وب", + "d001-c-explanation": "کیف پول های وب از امنیت کمتری به نسبت کیف پول های سخت افزاری برخوردار هستند زیرا کلید های خصوصی روی دستگاهی متصل به اینترنت ذخیره می شود.", + "d001-d-label": "کیف پول دستکاپ", + "d001-d-explanation": "کیف پول های دسکتاپ کلید های خصوصی را بر روی هارد دیسک کامپیوتری نگه می دارند، که معمولا به اینترنت متصل است، و به‌طور بالقوه توسط نرم‌افزار های دیگر در معرض خطر قرار می گیرد.", + "d002-prompt": "از میان گزینه های مطرح شده، کدام یک ایمن ترین راه برای ذخیر کردن عبارت بذر شماست؟", + "d002-a-label": "در یک عکس روی گوشی شما", + "d002-a-explanation": "این امن ترین گزینه نیست. اگر این عکس در حافظه ابری آپلود شود، یک هکر این تصویر را دریافت کرده و به حساب شما دسترسی پیدا می کند.", + "d002-b-label": "در یک فایل در کامپیوتر شما", + "d002-b-explanation": "این امن ترین گزینه نیست. هکرها به طور فزاینده به دنبال اطلاعات مرتبط با کریپتو بر روی دستگاه هدف می گردند. اگر هکری به فایلی با عبارت بذر شما دسترسی داشته باشد، به حساب شما دسترسی خواهد داشت.", + "d002-c-label": "نوشتن روی کاغذ", + "d002-c-explanation": "از بین گزینه های موجود، نوشتن عبارت بذر خود روی یک تکه کاغذ امن ترین است.", + "d002-d-label": "در یک پیام متنی به یکی از اعضای مورد اعتماد خانواده", + "d002-d-explanation": "هرگز نباید عبارت بذر خود را برای کسی پیام دهید. پیام می تواند بوسیله یک شخص ثالث رهگیری شود، و حتی اگر شما به آن شخص کاملا اعتماد داشته باشید، نمی دانید چه کسی ممکن است بتواند به تلفن آن ها دسترسی داشته باشد.", + "d003-prompt": "عبارت بذر/کلیدهای خصوصی خود را در اختیار چه کسی میتوانید قرار دهید؟", + "d003-a-label": "کسی که به او پولی پرداخت میکنید", + "d003-a-explanation": "هرگز نباید عبارت بذر یا کلید های خصوصی خود را به کسی بدهید. در عوض، از طریق یک تراکنش توکن ها را به آدرس کیف پول آن ها ارسال کنید.", + "d003-b-label": "برای ورود به یک اپلیکیشن غیرمتمرکز یا کیف پول", + "d003-b-explanation": "هرگز نباید عبارت بذر/ کلیدهای خصوصی خود را برای وارد شدن به کیف پول یا اپلیکیشن غیرمتمرکز (dapp) به کسی بدهید.", + "d003-c-label": "اعضای پشتیبانی", + "d003-c-explanation": "هرگز نباید عبارت بذر/ کلیدهای خصوصی خود را به کسی که ادعا می کند کارمند پشتیبانی است بدهید. هرکس این را از شما بخواهد کلاه بردار است.", + "d003-d-label": "هیچ کس", + "d003-d-explanation": "در حالت ایده آل، هرگز نباید عبارت بذر یا کلیدهای خصوصی خود را به کسی بدهید. اگر به شخصی با دسترسی مطلق به سرمایه شما کاملا اعتماد می کنید (مانند همسر)، در این صورت ممکن است تصمیم به اشتراک گذاری این اطلاعات با آنها بگیرید.", + "d004-prompt": "کیف پول و حساب در اتریوم یک چیز هستند.", + "d004-a-label": "صحیح", + "d004-a-explanation": "کیف پول یک رابط بصری است که برای تعامل با حساب اتریوم استفاده می شود.", + "d004-b-label": "غلط", + "d004-b-explanation": "کیف پول یک رابط بصری است که برای تعامل با حساب اتریوم استفاده می شود.", + "e001-prompt": "چرا باید از رمزهای منحصر به فرد برای تمام حساب های خود استفاده کنید؟", + "e001-a-label": "در صورتی که یکی از پلتفرم ها رخنه داده داشته باشد", + "e001-a-explanation": "این پاسخ صحیح است، اما پاسخ های صحیح دیگری نیز وجود دارند.", + "e001-b-label": "در صورتی که کسی از روی شانه شما نگاه کند رمز شما را پیدا می کند", + "e001-b-explanation": "این پاسخ صحیح است، اما پاسخ های صحیح دیگری نیز وجود دارند.", + "e001-c-label": "در صورتی که بد افزار، مانند key-logger، رمز شما را بدزدد", + "e001-c-explanation": "این پاسخ صحیح است، اما پاسخ های صحیح دیگری نیز وجود دارند.", + "e001-d-label": "تمام موارد فوق", + "e001-d-explanation": "همه پاسخ ها درست است. استفاده از رمز های عبور منحصر به فرد بهترین راه برای جلوگیری از دسترسی دیگران به حساب شما است.", + "e002-prompt": "پس از The Merge،باید ETH به ETH2 ارتقا یابد.", + "e002-a-label": "صحیح", + "e002-a-explanation": "لازم نیست ETH خود را به ETH2 ارتقا دهید. ETH2 وجود ندارد و این یک روایت رایج است که توسط کلاه برداران استفاده می شود.", + "e002-b-label": "غلط", + "e002-b-explanation": "لازم نیست ETH خود را به ETH2 ارتقا دهید. ETH2 وجود ندارد و این یک روایت رایج است که توسط کلاه برداران استفاده می شود.", + "e003-prompt": "اعلامیه های توزیع اتر به شکل هدیه:", + "e003-a-label": "راه خوبی برای کسب اتر بیشتر", + "e003-a-explanation": "اعلامیه های توزیع اتر به شکل هدیه همیشه کلاه برداری هستند تا اتر و بقیه توکن های شما را بدزدند. شرکت در آن ها هیچوقت ایده خوبی برای افزایش اتر نیست.", + "e003-b-label": "همیشه واقعی", + "e003-b-explanation": "توزیع اتر به شکل هدیه هیچوقت واقعی نیست.", + "e003-c-label": "معمولا توسط افراد برجسته و شناخته شده جامعه انجام میشود", + "e003-c-explanation": "افراد برجسته و مورد اعتماد جامعه هیچوقت اتر هدیه نمیدهند. کلاه برداران خود را به جای افراد شناخته شده جامعه، مثل ایلان ماسک، جا میزنند تا به فعالیت های کلاه بردارانه خود لعاب قانونی و قابل اعتماد بودن دهند.", + "e003-d-label": "به احتمال خیلی زیاد کلاه برداری است", + "e003-d-explanation": "توزیع اتر به شکل هدیه همیشه کلاه برداری است. بهترین کار گزارش دادن و نادیده گرفتن کلاه بردار است.", + "e004-prompt": "تراکنش های اتریوم برگشت‌پذیر هستند.", + "e004-a-label": "صحیح", + "e004-a-explanation": "تراکنش های اتریوم برگشت‌پذیر نیستند. هرکس که به شما میگوید این کار شدنی است میخواهد سر شما کلاه بگذارد.", + "e004-b-label": "غلط", + "e004-b-explanation": "تراکنش های اتریوم برگشت‌پذیر نیستند. هرکس که به شما میگوید این کار شدنی است میخواهد سر شما کلاه بگذارد.", + "f001-prompt": "جامع ترین توصیف NFT ها عبارت است از:", + "f001-a-label": "دارایی های دیجیتال بی همتا", + "f001-a-explanation": "NFT ها یک دارایی دیجیتال منحصر به فرد را نمایندگی می‌کنند.", + "f001-b-label": "اثر هنری دیجیتال", + "f001-b-explanation": "NFT ها یک دارایی دیجیتال منحصر به فرد را نمایندگی می‌کنند، معمولا این دارایی ها هنر دیجیتال هستند، اما به هنر محدود نیستند.", + "f001-c-label": "بلیت رویدادهای خاص", + "f001-c-explanation": "NFT ها یک دارایی دیجیتال منحصر به فرد را نمایندگی می‌کنند، این ممکن است یک سیستم صدور بلیت باشد، اما محدود به بلیت ها نیستند.", + "f001-d-label": "قراردادهای قانونی الزام آور", + "f001-d-explanation": "اگرچه یک قرارداد قانونی میتواند به شکل یک NFT ارایه شود اما NFTها منحصر به قراردادهای قانونی الزام آور نیستند.", + "f002-prompt": "دو NFT نمایش دهنده یک کار هنری، یک چیز هستند.", + "f002-a-label": "صحیح", + "f002-a-explanation": "NFTها قابل معاوضه نیستند. این به این معنی است که آنها حتی اگر یک هنر دیجیتال را نمایش دهند، هنوز یه طرز منحصر به فردی قابل شناسایی هستند. در دنیای هنر فدیمی، این ممکن است شبیه به نسخه های چاپی و اصلی باشد.", + "f002-b-label": "غلط", + "f002-b-explanation": "NFTها قابل معاوضه نیستند. این به این معنی است که آنها حتی اگر یک هنر دیجیتال را نمایش دهند، هنوز یه طرز منحصر به فردی قابل شناسایی هستند. در دنیای هنر فدیمی، این ممکن است شبیه به نسخه های چاپی و اصلی باشد.", + "f003-prompt": "NFTها از نظر عموم", + "f003-a-label": "رمز عیور کیف پول شما را نمایندگی می‌‌کند", + "f003-a-explanation": "این یک ریسک امنیتی و به طور کلی یک ایده بد است!", + "f003-b-label": "مالکیت یک آیتم دیجیتال منحصر به فرد", + "f003-b-explanation": "NFTها معمولا مالکیت یک آیتم دیجیتال منحصر به فرد را نشان می دهند.", + "f003-c-label": "موجودی فعلی اتریوم شما", + "f003-c-explanation": "NFT ها نمی توانند موجودی اتریوم شما را خودسرانه نمایش دهند.", + "f003-d-label": "تمام موارد فوق", + "f003-d-explanation": "NFT ها معمولا مالکیت یک آیتم دیجیتال منحصر به فرد را نشان می دهند، نه موجودی اترویم یا رمز عبور کیف پول.", + "f004-prompt": "NFTها به ایجاد یک چیز جدید کمک کرده اند:", + "f004-a-label": "اقتصاد نگهبان", + "f004-a-explanation": "NFT به پیدایش اقتصادی جدید برای خالقین کمک کرده است، نه نگهبان‌ها.", + "f004-b-label": "اقتصاد کربن", + "f004-b-explanation": "NFT به پیدایش اقتصادی جدید برای خالقین کمک کرده است، نه کربن.", + "f004-c-label": "اقتصاد سازنده", + "f004-c-explanation": "NFT ها به ایجاد اقتصاد سازنده کمک کردند.", + "f004-d-label": "اقتصاد دوج", + "f004-d-explanation": "NFT به پیدایش اقتصادی جدید برای خالقین کمک کرده است، نه دوج‌ها🐶.", + "f005-prompt": "NFTها بر روی اتریوم برای محیط زیست آسیب زا هستند", + "f005-a-label": "صحیح", + "f005-a-explanation": "از بعد از ارتقا The Merge (گذار به اثبات-سهم)، تاثیر تراکنش های اتریوم روی محیط زیست قابل چشم پوشی شده است.", + "f005-b-label": "غلط", + "f005-b-explanation": "از بعد از ارتقا The Merge (گذار به اثبات-سهم)، تاثیر تراکنش های اتریوم روی محیط زیست قابل چشم پوشی شده است.", + "g001-prompt": "شبکه‌ های بلاک‌چین لایه 2 برای موارد زیر هستند:", + "g001-a-label": "مقیاس‌پذیری اتریوم", + "g001-a-explanation": "هدف اساسی رول آپ ها و دیگر راهکاری لایه 2 برای مقیاس‌پذیری اتریوم است.", + "g001-b-label": "انجام پرداخت ها", + "g001-b-explanation": "هدف اساسی رول آپ ها و دیگر راهکاری لایه 2 برای مقیاس‌پذیری اتریوم است.", + "g001-c-label": "خرید NFTها", + "g001-c-explanation": "هدف اساسی رول آپ ها و دیگر راهکاری لایه 2 برای مقیاس‌پذیری اتریوم است.", + "g001-d-label": "غیر متمرکز کردن اتریوم", + "g001-d-explanation": "هدف اساسی رول آپ ها و دیگر راهکاری لایه 2 برای مقیاس‌پذیری اتریوم است.", + "g002-prompt": "به منظور مقیاس‌پذیری، بیشتر شبکه های جایگزین لایه 1 در درجه اول این جنبه‌ها را قربانی می‌کنند:", + "g002-a-label": "امنیت", + "g002-a-explanation": "اکثر شبکه های جایگزین لایه 1 به منظور مقیاس‌پذیری، امنیت و چیز دیگری را قربانی می‌کنند.", + "g002-b-label": "غیرمتمرکزسازی", + "g002-b-explanation": "اکثر شبکه های جایگزین لایه 1 به منظور مقیاس‌پذیری، غیرمتمرکزسازی و چیز دیگری را قربانی می‌کنند.", + "g002-c-label": "قیمت توکن", + "g002-c-explanation": "قیمت توکن هیچ تاثیری بر روی قابلیت مقیاس‌پذیری ندارد.", + "g002-d-label": "امنیت و غیرمتمرکزسازی", + "g002-d-explanation": "اکثر شبکه های جایگزین لایه 1 امنیت و عدم تمرکز را فدای مقیاس پذیری بالا میکنند.", + "g003-prompt": "کدام یک از موارد زیر به عنوان لایه 2 در نظر گرفته نمی شود؟", + "g003-a-label": "والیدیوم (Validium)", + "g003-a-explanation": "والیدیوم ها به عنوان راهکارهای لایه 2 شناخته نمیشوند زیرا امنیت یا ‏در دسترس بودن داده خود را از اتریوم تامین نمیکنند", + "g003-b-label": "زنجیره‌های جانبی", + "g003-b-explanation": "زنجیره های جانبی به عنوان لایه 2 شناخته نمیشوند زیرا امنیت یا ‏در دسترس بودن داده خود را از اتریوم تامین نمیکنند.", + "g003-c-label": "بلاکچین‌های جایگزین لایه 1", + "g003-c-explanation": "دیگر بلاک‌چین‌های لایه 1 به عنوان راهکارهای لایه 2 شناخته نمیشوند.", + "g003-d-label": "تمام موارد فوق", + "g003-d-explanation": "زنجیره های مبتنی بر راه حل والیدیوم، زنجیره های جانبی، و دیگر بلاک‌چین‌های لایه 1 به عنوان لایه 2 شناخته نمیشوند زیرا امنیت یا ‏در دسترس بودن داده خود را از اتریوم تامین نمیکنند.", + "g004-prompt": "چرا اتریوم یک لایه 2 \"رسمی\" ندارد؟", + "g004-a-label": "توسعه‌دهندگان اصلی سخت مشغول کار بروی اتریوم هستند", + "g004-a-explanation": "هیچ طرحی برای ساخت لایه 2 'رسمی' بر روی اتریوم وجود ندارد چون ما از روش‌های متنوع برای طراحی راهکارهای لایه 2 بهره می‌بریم.", + "g004-b-label": "به عنوان لایه 1، اتریوم در نهایت به تنهایی به مقیاس پذیری بالا خواهد رسید", + "g004-b-explanation": "هیچ طرحی برای ساخت لایه 2 'رسمی' بر روی اتریوم وجود ندارد چون ما از روش‌های متنوع برای طراحی راهکارهای لایه 2 بهره می‌بریم.", + "g004-c-label": "توسعه دهندگان هسته اصلی کریپتو همچنان در مورد رول آپ های مبتنی بر راه حل های خوشبین یا دانش-صفر مناظره میکنند", + "g004-c-explanation": "هیچ طرحی برای ساخت لایه 2 'رسمی' بر روی اتریوم وجود ندارد چون ما از روش‌های متنوع برای طراحی راهکارهای لایه 2 بهره می‌بریم.", + "g004-d-label": "اتریوم از طیف گسترده ای از رویکرد ها برای طراحی یک لایه 2 بهره خواهد برد", + "g004-d-explanation": "هیچ طرحی برای ساخت لایه 2 'رسمی' بر روی اتریوم وجود ندارد چون ما از روش‌های متنوع برای طراحی راهکارهای لایه 2 بهره می‌بریم.", + "h001-prompt": "رویداد The Merge اتریوم را به سمت کدام مکانیزم اجماع حرکت داد؟", + "h001-a-label": "اثبات کار", + "h001-a-explanation": "مکانیزم اجماع استفاده شده توسط اتریوم قبل از Merge اثبات-کار بود.", + "h001-b-label": "اثبات سهام", + "h001-b-explanation": "درست است! The Merge مکانیزم اجماع اتریوم را به اثبات سهام تغییر داد.", + "h001-c-label": "Proof-of-authority", + "h001-c-explanation": "اتریوم هیچوقت از مکانیزم اجماع اثبات اعتبار در اتریوم استفاده نکرده و نمیکند.", + "h001-d-label": "تمام موارد فوق", + "h001-d-explanation": "اتریوم نمیتواند از تمام این این مکانیزم های اجماع همزمان استفاده کند.", + "h002-prompt": "میزان تغییر انرژی شبکه اتریوم بعد از The Merge:", + "h002-a-label": "50%", + "h002-a-explanation": "بعد از این که The Merge گذار از اثبات کار به اثبات سهام را فعال کرد، مصرف انرژی اتریوم با کاهش 99.95 درصدی همراه شد.", + "h002-b-label": "62.5%", + "h002-b-explanation": "بعد از این که The Merge گذار از اثبات کار به اثبات سهام را فعال کرد، مصرف انرژی اتریوم با کاهش 99.95 درصدی همراه شد.", + "h002-c-label": "90%", + "h002-c-explanation": "بعد از این که The Merge گذار از اثبات کار به اثبات سهام را فعال کرد، مصرف انرژی اتریوم با کاهش 99.95 درصدی همراه شد.", + "h002-d-label": "99.95%", + "h002-d-explanation": "بعد از این که The Merge گذار از اثبات کار به اثبات سهام را فعال کرد، مصرف انرژی اتریوم با کاهش 99.95 درصدی همراه شد.", + "h003-prompt": "ادغام چه زمانی اتفاق افتاد؟", + "h003-a-label": "15 سپتامبر 2022", + "h003-a-explanation": "ادغام روز 15 سپتامبر 2022 ساعت 06:42:42 صبح (ساعت جهانی) رخ داد.", + "h003-b-label": "1 دسامبر 2021", + "h003-b-explanation": "ادغام بعد از این رخ داد. 1 دسامبر 2022 روزی بود که زنجیره بیکن شروع به کار کرد.", + "h003-c-label": "27 نوامبر 2013", + "h003-c-explanation": "ادغام بعدها اتفاق افتاد. 27 نوامبر 2013 روزی بود که وایت پیپر اتریوم منتشر شد.", + "h003-d-label": "31 اکتبر 2008", + "h003-d-explanation": "ادغام بعد از این اتفاق افتاد، 31 اکتبر 2008 روزی است که در آن وایت پیپر بیتکوین منتشر شد.", + "h004-prompt": "ادغام به معنی این بود که کاربران میبایست ارز ETH خود را با ETH2 معاوضه میکردند:", + "h004-a-label": "صحیح", + "h004-a-explanation": "ETH هیچوقت، قبل، درحین، یا بعد از ادغام تغییر نکرده است. ایده تغییر ETH به ETH2 یک تاکنیک پرطرفدار بین افراد سودجو برای کلاه برداری از کاربران بود.", + "h004-b-label": "غلط", + "h004-b-explanation": "ETH هیچوقت، قبل، درحین، یا بعد از ادغام تغییر نکرده است. ایده تغییر ETH به ETH2 یک تاکنیک پرطرفدار بین افراد سودجو برای کلاه برداری از کاربران بود.", + "h005-prompt": "نامی که لایه اجماع اتریوم با آن شناخته می شد:", + "h005-a-label": "اثبات کار", + "h005-a-explanation": "مکانیزم اجماع استفاده شده توسط اتریوم قبل از Merge اثبات-کار بود.", + "h005-b-label": "Eth2", + "h005-b-explanation": "قبل اینکه لایه اجماع نام گذاری شود، 'اتر2' نامیده میشد.", + "h005-c-label": "اتر1", + "h005-c-explanation": "اتر 1 نام اصلی بود که به لایه اجرا داده شده، نه لایه اجماع.", + "h005-d-label": "سهام گذاری", + "h005-d-explanation": "سهام گذاری، واریز کردن ETH در یک قرارداد هوشمند برای کمک به افزایش امنیت زنجیره است." +} diff --git a/src/intl/fa/page-developers-docs.json b/src/intl/fa/page-developers-docs.json index 8ed6b3de4ed..56bd06e1a47 100644 --- a/src/intl/fa/page-developers-docs.json +++ b/src/intl/fa/page-developers-docs.json @@ -6,15 +6,26 @@ "docs-nav-block-explorers": "جستجوگر‌های بلوک", "docs-nav-blocks": "بلوک‌ها", "docs-nav-blocks-description": "روشی که تراکنش‌ها دسته‌بندی می‌شوند تا اطمینان حاصل شود که همه فعالان همگام هستند", + "docs-nav-bridges": "پل‌ها", + "docs-nav-bridges-description": "مروری بر پل زدن برای توسعه‌دهندگان", "docs-nav-compiling-smart-contracts": "کامپایل کردن قراردادهای هوشمند", "docs-nav-composability": "ترکیب‌پذیری", "docs-nav-consensus-mechanisms": "مکانیزم‌های اجماع", "docs-nav-consensus-mechanisms-description": "چطور گره‌های شخصی در شبکه‌ی توزیع‌شده بر روی وضعیت سیستم به توافق می‌رسند", + "docs-nav-gasper": "گاسپر", + "docs-nav-weak-subjectivity": "فردیت ضعیف", + "docs-nav-attestations": "تصدیق‌ها", + "docs-nav-keys": "کلید ها", + "docs-nav-block-proposal": "پیشنهاد بلوک", "docs-nav-data-and-analytics": "داده‌ها و تحلیل‌ها", "docs-nav-data-and-analytics-description": "چطور داده‌های درون زنجیره‌ی بلوکی در برنامه‌های غیر متمرکز جمع‌آوری، سازماندهی و پیاده‌سازی می‌شوند", + "docs-nav-data-availability": "دسترسی به داده‌ها", "docs-nav-dart": "دارت", "docs-nav-delphi": "دلفی", "docs-nav-deploying-smart-contracts": "بکارگیری قراردادهای هوشمند", + "docs-nav-design-and-ux": "مقدمه ای بر طراحی و UX", + "docs-nav-design-and-ux-description": "مقدمه‌ای بر طراحی و تحقیق UX در فضای Web3 و اتریوم", + "docs-nav-design-fundamentals": "اصول طراحی", "docs-nav-development-frameworks": "چارچوب‌های توسعه", "docs-nav-development-frameworks-description": "این ابزار توسعه‌ی اتریوم را ساده‌تر می‌کند", "docs-nav-development-networks": "شبکه‌های توسعه", @@ -24,6 +35,7 @@ "docs-nav-erc-721": "ERC-721: توکن‌های غیرقابل‌تعویض", "docs-nav-erc-777": "ERC-777", "docs-nav-erc-1155": "ERC-1155", + "docs-nav-erc-4626": "ERC-4626", "docs-nav-ethereum-client-apis": "وب سرویس‌های کلاینت اتریوم", "docs-nav-ethereum-client-apis-description": "کتابخانه‌هایی که به‌راحتی قابلیت تعامل برنامه‌های کاربردی وب شما با اتریوم و قراردادهای هوشمند را امکان‌پذیر می‌کنند", "docs-nav-ethereum-stack": "سهام اتریوم", @@ -47,9 +59,12 @@ "docs-nav-java-script-apis": "رابط کاربری جاوا اسکریپت", "docs-nav-javascript": "JavaScript", "docs-nav-json-rpc": "JSON-RPC", - "docs-nav-mev": "ارزش قابل‌استخراج استخراجگر (MEV)", + "docs-nav-mev": "حداکثر مقدار قابل‌استخراج (MEV)", "docs-nav-mev-description": "چگونه مقداری فراتر از پاداش بلوک از زنجیره‌ی بلوکی اتریوم استخراج می‌شود", "docs-nav-mining": "استخراج", + "docs-nav-mining-algorithms": "الگوریتم‌های استخراج", + "docs-nav-dagger-hashimoto": "Dagger-Hashamoto", + "docs-nav-ethash": "Ethash", "docs-nav-networks": "شبکه‌ها", "docs-nav-networks-description": "پیاده‌سازی اتریوم از جمله شبکه‌های آزمایشی", "docs-nav-nodes-and-clients": "گره‌ها و کلاینت‌ها", @@ -57,6 +72,8 @@ "docs-nav-opcodes": "کدگذاری‌ها", "docs-nav-run-a-node": "راه‌اندازی یک گره", "docs-nav-client-diversity": "تنوع کلاینت‌ها", + "docs-nav-bootnodes": "بوت‌نودها", + "docs-nav-light-clients": "کاربرهای رقیق", "docs-nav-nodes-as-a-service": "گره‌ها به‌عنوان سرویس", "docs-nav-oracles": "اوراکل‌ها", "docs-nav-oracles-description": "چگونگی ثبت اطلاعات در شبکه زنجیره‌ی بلوکی اتریوم", @@ -66,7 +83,7 @@ "docs-nav-proof-of-work": "اثبات کار", "docs-nav-python": "پایتون", "docs-nav-readme": "نگاه اجمالی", - "docs-nav-ruby": "Ruby", + "docs-nav-ruby": "روبی", "docs-nav-rust": "Rust", "docs-nav-scaling": "مقیاس‌پذیری", "docs-nav-scaling-description": "روش‌هایی برای حفظ غیرمتمرکز بودن و امنیت توام با رشد اتریوم", @@ -78,6 +95,8 @@ "docs-nav-scaling-validium": "والیدیوم (Validium)", "docs-nav-smart-contract-security": "امنیت قرارداد هوشمند", "docs-nav-smart-contract-security-description": "بهترین روش برای مدیریت قرارداد هوشمند در برابر حملات و آسیب‌پذیری", + "docs-nav-smart-contract-formal-verification": "تأیید رسمی قرارداد هوشمند", + "docs-nav-smart-contract-formal-verification-description": "مقدمه‌ای بر تأیید رسمی در فضای قراردهای هوشمند اتریوم", "docs-nav-smart-contract-anatomy": "ساختار قرارداد هوشمند", "docs-nav-smart-contract-languages": "زبان‌های قرارداد هوشمند", "docs-nav-smart-contracts": "قرارداد‌های هوشمند", @@ -91,8 +110,26 @@ "docs-nav-token-standards": "استانداردهای توکن", "docs-nav-transactions": "تراکنش‌ها", "docs-nav-transactions-description": "تراکنش‌ها و دیگر عملیات‌هایی که در وضعیت اتریوم تغییر ایجاد می‌کنند", + "docs-nav-upgrading-smart-contracts": "ارتقای قراردادهای هوشمند", + "docs-nav-verifying-smart-contracts": "تأیید کردن قراردادهای هوشمند", "docs-nav-web2-vs-web3": "Web2 در مقابل Web3", "docs-nav-web2-vs-web3-description": "تفاوت‌های اساسی که برنامه‌های تحت زنجیره‌ی بلوکی ایجاد می‌کنند", + "docs-nav-networking-layer": "لایه‌ی شبکه", + "docs-nav-networking-layer-description": "توضیح لایه‌ی شبکه‌ی اتریوم", + "docs-nav-networking-layer-network-addresses": "آدرس‌های شبکه", + "docs-nav-networking-layer-portal-network": "شبکه پرتال", + "docs-nav-data-structures-and-encoding": "ساختار داده‌ها و رمزگذاری", + "docs-nav-data-structures-and-encoding-description": "توضیح ساختار داده‌ها و طرح رمزگذاری مورد استفاده در سهام اتریوم", + "docs-nav-data-structures-and-encoding-rlp": "پیشوند طول بازگشتی (RLP)", + "docs-nav-data-structures-and-encoding-patricia-merkle-trie": "پاتریشیا مرکل تری", + "docs-nav-data-structures-and-encoding-ssz": "سریال‌سازی ساده (SSZ)", + "docs-nav-data-structures-and-encoding-web3-secret-storage": "تعریف حافظه مخفی Web3", + "docs-nav-rewards-and-penalties": "جوایز و جریمه های PoS", + "docs-nav-node-architecture": "معماری گره", + "docs-nav-archive-nodes": "گره‌های بایگانی", + "docs-nav-attack-and-defense": "حمله و دفاع PoS", + "docs-nav-pos-vs-pow": "اثبات سهام در برابر اثبات کار", + "docs-nav-pos-faqs": "سوالات متداول اثبات سهام", "page-calltocontribute-desc-1": "اگر شما در این زمینه یک متخصص هستید، این صفحه را ویرایش کنید و با دانش خود آن را غنی کنید.", "page-calltocontribute-desc-2": "نام شما ذکر خواهد شد و با این کار به جامعه اتریوم کمک می‌کنید!", "page-calltocontribute-desc-3": "استفاده از این", @@ -101,6 +138,10 @@ "page-calltocontribute-link-2": "در سرور دیسکوردمان بپرسید", "page-calltocontribute-span": "ویرایش صفحه", "page-calltocontribute-title": "یه ما در این صفحه کمک کنید", + "layer-2-arbitrum-note": "اثبات تقلب فقط برای کاربران قرار گرفته در فهرست سفید است، فهرست سفید هنوز باز نشده است", + "layer-2-boba-note": "اعتبارسنجی حالت در حال توسعه است", + "layer-2-metis-note": "اثبات‌های تقلب در حال توسعه", + "layer-2-optimism-note": "اثبات تقلب در حال توسعه است", "back-to-top": "بازگشت به بالا", "banner-page-incomplete": "این صفحه ناقص است و ما از کمک شما خوشحال می‌شویم. این صفحه را ویرایش کنید و هر چیزی را که فکر می‌کنید ممکن است برای دیگران مفید باشد، اضافه کنید.", "next": "بعدی", diff --git a/src/intl/fa/page-learn.json b/src/intl/fa/page-learn.json new file mode 100644 index 00000000000..f0a06df5508 --- /dev/null +++ b/src/intl/fa/page-learn.json @@ -0,0 +1,123 @@ +{ + "toc-learn-hub": "مرکز یادگیری", + "toc-what-is-crypto-ethereum": "اتریوم چیست؟", + "toc-how-do-i-use-ethereum": "چگونه می‌توانم از اتریوم استفاده کنم؟", + "toc-what-is-ethereum-used-for": "اتریوم برای چه مواردی استفاده می شود؟", + "toc-strengthen-the-ethereum-network": "تقویت شبکه اتریوم", + "toc-learn-about-the-ethereum-protocol": "یادگیری درباره پروتکل اتریوم", + "toc-learn-about-the-ethereum-community": "یادگیری درباره جامعه اتریوم", + "toc-books-and-podcasts": "کتاب ها و پادکست ها", + "hero-header": "آموزش اتریوم", + "hero-subtitle": "راهنمای آموزشی شما برای دنیای اتریوم. یادگیری نحوه کار با اتریوم و چگونگی اتصال به آن. این صفحه شامل مقالات، راهنماها و منابع فنی و غیر فنی است.", + "hero-button-lets-get-started": "بیایید شروع کنیم", + "what-is-crypto-1": "شما شاید درباره رمزارزها، بلاک‌چین‌ها و بیتکوین شنیده باشید. لینک های زیر به شما کمک می کنند تا یاد بگیرید آنها چه هستند و چگونه به اتریوم مربوط می شوند.", + "what-is-crypto-2": "رمزارزها، مانند بیکوین، هر کسی را قادر می سازند تا پول را در سطح جهانی انتقال دهند. اتریوم نیز اینکار را انجام می دهد، ولی همچنین می تواند با اجرای کد به افراد امکان دهد تا اپلیکیشن ها و سازمان ها را ایجاد کنند. هم بهبود پذیر و هم انعطاف‌پذیر است: هر برنامه رایانه می تواند روی اتریوم اجرا شود. بیشتر بدانید و نحوه شروع کار را بیاموزید:", + "what-is-ethereum-card-title": "اتریوم چیست؟", + "what-is-ethereum-card-description": "اگر مبتدی هستید، از اینجا شروع کنید تا بدانید چرا اتریوم اهمیت دارد.", + "what-is-ethereum-card-image-alt": "تصویر فردی حین نظاره یک بازار، تداعی کننده اتریوم.", + "what-is-eth-card-title": "اتر (ETH) چیست؟", + "what-is-eth-description": "اتر (ETH) ارزی است که شبکه‌ و اپلیکیشن های اتریوم را پشتیبانی می کند.", + "what-is-web3-card-title": "Web3 چیست؟", + "what-is-web3-card-description": "Web3 یک مدل برای ارزش گذاری اینترنتی مالکیت دارایی ها و هویت شما است.", + "additional-reading-more-on-ethereum-basics": "اطلاعات بیشتر درباره‌ اصول اولیه اتریوم", + "guides-hub-desc": "راهنماها: دستور العمل های گام به گام برای استفاده از اتریوم", + "quiz-hub-desc": "مرکز آزمون: دانش خود را بسنجید", + "additional-reading-what-are-smart-contracts": "قراردادهای هوشمند چه هستند؟", + "additional-reading-what-is-web3": "Web3 چیست؟", + "additional-reading-ethereum-in-thirty-minutes": "اتریوم در 30 دقیقه با ویتالیک بوترین", + "additional-reading-get-eth": "نحوه دریافت اتر را بیاموزید", + "how-do-i-use-ethereum-1": "استفاده از اتریوم برای بسیاری از افراد ممکن است معانی متفاوتی داشته باشد. شاید بخواهید وارد یک اپلیکیشن شوید، هویت آنلاین خود را تایید کنید، و یا مقداری اتر انتقال دهید. اولین چیزی که احتیاج خواهید داشت یک حساب است. راحت‌ترین راه برای ایجاد و دسترسی به یک حساب استفاده از نرم‌افزاری به اسم کیف پول است.", + "what-is-a-wallet-card-title": "کیف پول چیست؟", + "what-is-a-wallet-card-description": "کیف پول‌های دیجیتال همانند کیف پول‌های واقعی هستند؛ آنها هر چیزی را که برای اثبات هویت خود نیاز دارید و برای ورود به مکان هایی که برای شما ارزشمند هستند، ذخیره می کنند.", + "what-is-a-wallet-card-alt": "تصویر یک ربات.", + "find-a-wallet-card-title": "یافتن یک کیف پول", + "find-a-wallet-card-description": "بررسی کیف پول ها بر پایه مواردی که برای شما مهم هستند.", + "find-a-wallet-button": "لیست کیف پول ها", + "crypto-security-basics-card-title": "اصول اولیه امنیتی", + "crypto-security-basics-card-description": "یادگیری در مورد نحوه شناسایی کلاه برداری ها و چگونه از رایج ترین ترفندها اجتناب کنیم.", + "crypto-security-basics-card-button": "ایمن بمانید", + "things-to-consider-banner-title": "مواردی که هنگام استفاده از اتریوم باید در نظر گرفت", + "things-to-consider-banner-1": "هر تراکنش اتریوم نیازمند یک کارمزد در قالب اتر می باشد، حتی اگر بخواهید توکن های متفاوت ساخته شده روی اتریوم مانند رمزارزهای پایای USDC یا Dai را جا به جا کنید.", + "things-to-consider-banner-2": "بسته به تعداد افرادی که سعی بر استفاده از اتریوم را دارند، کارمزدها می تواند بالا باشد، بابراین ما استفاده از", + "things-to-consider-banner-layer-2": "لایه 2 را توصیه می‌کنیم", + "additional-reading-more-on-using-ethereum": "اطلاعات بیشتر درباره استفاده از اتریوم", + "additional-reading-how-to-create-an-ethereum-account": "چگونگی «ساخت» یک حساب اتریوم", + "additional-reading-how-to-use-a-wallet": "چطور می توان از یک کیف پول استفاده کرد", + "additional-reading-layer-2": "لایه 2: کاهش کارمزدهای تراکنش", + "what-is-ethereum-used-for-1": "اتریوم منجر به تولید محصولات و خدمات جدیدی شده است که می توانند بخش های متفاوتی از زندگی ما را ارتقا دهند. ما هنوز در مراحل ابتدایی هستیم ولی موارد بسیاری برای هیجان زده شدن وجود دارد.", + "defi-card-title": "امور مالی غیرمتمرکز (DeFi)", + "defi-card-description": "یک سیستم مالی جایگزین را که بدون بانک ها ساخته شده و برای عموم آزاد است، کشف کنید.", + "defi-card-button": "What is DeFi?", + "stablecoins-card-title": "استیبل کوین‌ها", + "stablecoins-card-description": "رمزارزها، که به ارزش یک ارز، یک کالا یا با یک ابزار مالی دیگر ضرب شده‌اند.", + "stablecoins-card-button": "استیبل کوین ها (رمزارزهای پایا) چه هستند؟", + "nft-card-title": "توکن‌های غیرمثلی (NFTها)", + "nft-card-description": "نشان دهنده مالکیت اقلام منحصر به فرد، از آثار هنری گرفته تا اسناد ملکی تا بلیت‌های کنسرت.", + "nft-card-button": "NFTها چه هستند؟", + "dao-card-title": "سازمان‌های خودمختار غیرمتمرکز (DAOها)", + "dao-card-description": "فعال کردن راه های جدید برای هماهنگی کار بدون وجود رئیس.", + "dao-card-button": "DAO چیست؟", + "dapp-card-title": "برنامه‌های کاربردی غیر متمرکز (dapps)", + "dapp-card-description": "ایجاد اقتصاد دیجیتالی از سرویس های همتا به همتا.", + "dapp-card-button": "کاوش در صرافی‌های غیرمتمرکز", + "emerging-use-cases-title": "موارد کاربرد در حال ظهور", + "emerging-use-cases-description": "همچنین صنایع برجسته دیگری نیز با استفاده از اتریوم در حال ساخته شدن یا بهبود هستند:", + "play-to-earn": "بازی های بازی برای کسب درآمد (P2E)", + "fundraising-through-quadratic-funding": "جذب سرمایه از طریق تامین سرمایه درجه دو", + "supply-chain-management": "مدیریت زنجیره تامین", + "more-on-ethereum-use-cases": "اطلاعات بیشتر درباره کاربردهای اتریوم", + "more-on-ethereum-use-cases-link": "بلاک‌چین در کشورهای در حال توسعه", + "strengthening-the-ethereum-network-description": "شما میتوانید به امنیت اتریوم کمک کنید، و در عین حال با سهام گذاری اترهای خودتان پاداش دریافت کنید. روش های متفاوت برای سهام گذاری در اتریوم وجود دارد که به دانش فنی شما و اینکه چه مقدار اتر دارید بستگی دارد.", + "staking-ethereum-card-title": "سهام گذاری در اتریوم", + "staking-ethereum-card-description": "یاد بگیرید که چگونه سهام گذاری اتر خود را شروع کنید.", + "staking-ethereum-card-button": "شروع سهام‌گذاری", + "run-a-node-card-title": "راه‌اندازی یک گره", + "run-a-node-card-description": "با اجرا کردن یک کد یک نقش مهم را در شبکه اتریوم بازی کنید.", + "learn-about-ethereum-protocol-description": "برای کاربرانی که بیشتر به بخش فنی شبکه اتریوم علاقه دارند.", + "energy-consumption-card-title": "مصرف انرژی", + "energy-consumption-card-description": "اتریوم چه مقدار انرژی استفاده می کند؟", + "energy-consumption-card-button": "آیا اتریوم با محیط زیست سازگار است؟", + "ethereum-upgrades-card-title": "نقشه‌ راه اتریوم", + "ethereum-upgrades-card-description": "نقشه راه اتریوم آن را مقیاس پذیرتر، ایمن تر و پایدار تر می کند.", + "ethereum-upgrades-card-button": "نقشه‌ راه را کاوش کنید", + "ethereum-whitepaper-card-title": "وایت‌پیپر اتریوم", + "ethereum-whitepaper-card-description": "طرح اصلی اتریوم در سال 2014 توسط ویتالیک بوترین نوشته شده است.", + "ethereum-whitepaper-card-button": "وایت پیپر را بخوانید", + "more-on-ethereum-protocol-title": "اطلاعات بیشتر در مورد پروتکل اتریوم", + "more-on-ethereum-protocol-ethereum-for-developers": "اتریوم برای توسعه دهندگان", + "more-on-ethereum-protocol-consensus": "اثبات سهام اتریوم برپایه مکانیزم اجماع", + "more-on-ethereum-protocol-evm": "رایانه تعبیه شده اتریوم (EVM)", + "more-on-ethereum-protocol-nodes-and-clients": "گره ها و کاربران اتریوم", + "ethereum-community-description": "موفقیت اتریوم به لطف جامعه فوق‌العاده متعهد آن است. هزاران نفر از افراد الهام بخش و کوشا به پیشبرد چشم انداز اتریوم کمک می کنند و در عین حال امنیت شبکه را از طریق سهام گذاری و حاکمیت فراهم می کنند. به ما بپیوندید!", + "community-hub-card-title": "مرکز اجتماع", + "community-hub-card-description": "جامعه ما متشکل از افرادی با همه پیشینه ها می باشد.", + "community-hub-card-alt": "تصویر گروهی در حال ساخت و ساز به کمک هم.", + "community-hub-card-button": "بیشتر کشف کنید", + "get-involved-card-title": "چطور می‌توانم مشارکت کنم؟", + "get-involved-card-description": "شما (بله، خود شما!) به مشارکت در جامعه اتریوم خوش آمدید.", + "online-communities-card-title": "جوامع آنلاین", + "online-communities-card-description": "جوامع آنلاین یک فرصت بسیار عالی برای پرسیدن سوالات تخصصی، یا مشارکت را فراهم می‌کنند.", + "online-communities-card-button": "جوامع را کشف کنید", + "books-about-ethereum": "کتاب هایی درباره اتریوم", + "proof-of-stake-title": "اثبات سهام", + "proof-of-stake-description": "13 سپتامبر 2022- ویتالیک بوترین، ناتان اشنایدر", + "cryptopians-title": "کریپتوپیان ها", + "cryptopians-description": "22 فوریه، 2022 -لاورا شین", + "out-of-the-ether-title": "خارج از اتر", + "out-of-the-ether-description": "29 سپتامبر، 2020 - متیو لیزینگ", + "the-infinite-machine-title": "ماشین بی‌نهایت", + "the-infinite-machine-description": "14 ژوئیه 2020 - کامیلا روسو", + "mastering-ethereum-title": "تسلط بر اتریوم", + "mastering-ethereum-description": "23 دسامبر 2018 - آندراس ام. آنتونوپولوس، دکتر گاوین وود.", + "podcasts-about-ethereum": "پادکست ها درباره اتریوم", + "bankless-title": "بدون بانک", + "bankless-description": "راهنمای امور مالی رمزارز", + "zeroknowledge-title": "دانش صفر", + "zeroknowledge-description": "مملو از فناوری که وب غیرمتمرکز نوظهور و جامعه سازنده آن را پشتیبانی خواهد کرد", + "green-pill-title": "Green Pill", + "green-pill-description": "سیستم‌های اقتصادی کریپتو محور و تاثیر جانبی مثبت آن بر دنیا را بررسی میکند", + "unchained-title": "بی‌زنجیر", + "unchained-description": "کسانی را که در حال ساخت اینترنت غیرمتمرکز هستند، جزئیات فناوری که پایه آینده ما را میسازد، و بعضی از مشکل زا ترین موضوعات کریپتو، مثل قانون گذاری، امنیت و حریم خصوصی را توضیح می‌دهد", + "the-daily-gwei-title": "Gwei روزانه", + "the-daily-gwei-description": "خلاصه ها، به روزرسانی ها و تجزیه و تحلیل اخبار اتریوم" +} diff --git a/src/intl/fa/page-staking.json b/src/intl/fa/page-staking.json index f5a4fff348c..a71e20d0335 100644 --- a/src/intl/fa/page-staking.json +++ b/src/intl/fa/page-staking.json @@ -1,11 +1,30 @@ { + "comp-withdrawal-comparison-current-title": "سهام‌گذاران فعلی", + "comp-withdrawal-comparison-current-li-1": "ممکن است برخی از کاربران در ابتدای راه‌اندازی واریز سهام‌گذاری خود، آدرس برداشت را ارائه کرده باشند - این کاربران، دیگر لازم نیست کاری انجام دهند", + "comp-withdrawal-comparison-current-li-2": "اکثر سهام‌گذاران در واریز اولیه، آدرس برداشت ارائه نکرده‌اند و باید اعتبارنامه برداشت خود را به روز کنند. Staking Launchpad دستورالعمل‌هایی درباره نحوه انجام این کار دارد", + "comp-withdrawal-comparison-current-p": "می‌توانید شماره شاخص اعتبارسنج خود را در اینجا وارد کنید تا ببینید آیا همچنان نیاز به به‌روزرسانی اعتبارنامه‌تان دارید یا نه (آن را می‌توانید در گزارش‌های کاربری خود پیدا کنید):", + "comp-withdrawal-comparison-new-title": "سهام‌گذاران جدید (هنوز واریز نشده‌اند)", + "comp-withdrawal-comparison-new-li-1": "به‌طور پیش‌فرض، سهام‌گذاران جدیدی که به‌دنبال فعال کردن خودکار پرداخت‌های پاداش و عملکرد برداشت هستند، باید یک آدرس برداشت اتریوم را که هنگام تولید کلیدهای اعتبارسنج خود با استفاده از ابزار Staking Deposit CLI کنترل می‌کنند ارائه کنند", + "comp-withdrawal-comparison-new-li-2": "این کار در زمان واریز الزامی نیست، اما از نیاز به بروز رسانی این کلیدها در تاریخ بعدی برای آزاد کردن وجوه شما جلوگیری می کند", + "comp-withdrawal-comparison-new-p": "سکوی پرتاب سهام‌گذاری، در فرایند همسوسازی سهام‌گذاری شما را راهنمایی خواهد کرد.", + "comp-withdrawal-comparison-new-link": "سکوی پرتاب سهام‌گذاری را مشاهده کنید", + "comp-withdrawal-credentials-placeholder": "شاخص اعتبارسنج", + "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": "دستورالعمل‌های نحوه ارتقا را می‌توانید در Staking Launchpad پیدا کنید", + "comp-withdrawal-credentials-verify-mainnet": "در شبکه اصلی تأیید کنید", + "comp-withdrawal-credentials-verify-goerli": "در شبکه Goerli تایید کنید", + "page-staking-withdrawals-when": "ارسال شد!", "page-staking-image-alt": "تصویری از نشان کرگدن برای سکوی پرتاب سهام‌گذاری.", "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-hero-title": "چگونه اتر خود را سهام گذاری کنیم", @@ -20,6 +39,8 @@ "page-staking-more-on-saas": "اطلاعات بیشتر در مورد سهام‌گذاری به‌عنوان سرویس", "page-staking-learn-more-saas": "بیشتر در مورد سهام‌گذاری به عنوان سرویس", "page-staking-dropdown-pools": "سهام‌گذاری گروهی", + "page-staking-dropdown-withdrawals": "در مورد برداشت ها", + "page-staking-dropdown-dvt": "فناوری اعتبارسنج توزیع شده", "page-staking-more-on-pools": "اطلاعات بیشتر درباره سهام‌گذاری ادغام‌شده", "page-staking-learn-more-pools": "درباره سهام‌گذاری مشترک بیشتر بدانید", "page-staking-section-what-title": "سهام‌گذاری چیست؟", @@ -27,6 +48,11 @@ "page-staking-section-why-title": "چرا بهتر است اتر خود را سهام‌گذاری کنید؟", "page-staking-section-why-p1": "همه‌چیز به این بستگی دارد که شما چقدر مایل به سهام‌گذاری هستید. برای فعال کردن اعتبارسنج خودتان به 32 اتر نیاز دارید، اما امکان سهام‌گذاری مقدار کمتر هم وجود دارد.", "page-staking-section-why-p2": "گزینه‌های زیر را بررسی کنید و به سراغ گزینه‌ای بروید که برای شما و شبکه بهترین است.", + "page-staking-guide-title-coincashew-ethereum": "راهنمای اتریوم 2.0 از CoinCashew", + "page-staking-guide-title-somer-esat": "Somer Esat", + "page-staking-guide-title-rocket-pool": "اپراتورهای گره استخر راکت", + "page-staking-guide-description-linux": "Linux (رابط خط فرمان)", + "page-staking-guide-description-mac-linux": "Linux, macOS (رابط خط فرمان)", "page-staking-hierarchy-solo-h2": "سهام‌گذاری انفرادی در خانه", "page-staking-hierarchy-solo-pill-1": "تأثیرگذارترین", "page-staking-hierarchy-solo-pill-2": "تسلط کامل", @@ -56,7 +82,7 @@ "page-staking-hierarchy-cex-p3": "اگر با نگه داشتن کلیدهای خود راحت نیستید، اشکالی ندارد. این گزینه‌ها برای شما هستند. در ضمن، به صفحه کیف پول ما مراجعه کنید؛ در آنجا می‌توانید یاد بگیرید چگونه مالکیت واقعی بر وجوه خود را در دست بگیرید. هنگامی که آماده شدید، برگردید و با امتحان کردن یکی از سرویس‌های سهام‌گذاری مشترک که امکان نگهداری از مدارک شناسایی را در اختیارتان قرار می‌دهد، دانش سهام‌گذاری خود را ارتقا دهید.", "page-staking-hierarchy-subtext": "همان‌طور که ممکن است متوجه شده باشید، راه‌های زیادی برای شرکت در سهام‌گذاری اتریوم وجود دارد. این مسیرها طیف گسترده‌ای از کاربران را هدف قرار می‌دهند و در نهایت هر کدام منحصر به فرد هستند و از نظر خطرات، پاداش‌ها و مفروضات اعتماد متفاوت هستند. برخی از آن‌ها غیرمتمرکزتر، بررسی‌شده‌تر و/یا خطرناک‌تر از دیگران هستند. ما برخی اطلاعات را در مورد پروژه‌های پرطرفدار در فضا ارائه می‌کنیم، اما همیشه قبل از ارسال اتر به هر جایی، تحقیق خود را انجام دهید.", "page-staking-comparison-solo-saas": "شما توسط ارائه‌دهندگان SaaS هم همچنان باید 32 اتر را واریز کنید، اما نیازی به اجرای سخت‌افزار ندارید. شما معمولاً دسترسی به کلیدهای اعتبارسنجی خود را حفظ می‌کنید، اما در عین حال باید کلیدهای امضای خود را به اشتراک بگذارید تا عملگر بتواند از طرف اعتبارسنج شما عمل کند. این کار یک لایه‌ی اعتماد را شکل می‌دهد که در هنگام اجرای سخت‌افزار شما وجود ندارد، و بر خلاف سهام‌گذاری انفرادی در خانه، SaaS چندان به توزیع جغرافیایی گره‌ها کمک نمی‌کند. اگر با اجرای سخت‌افزار راحت نیستید اما همچنان به دنبال به اشتراک گذاشتن 32 اتر هستید، استفاده از یک ارائه‌دهنده‌ی SaaS ممکن است گزینه‌ی خوبی برای شما باشد.", - "page-staking-comparison-solo-pools": "سهام‌گذاری انفرادی بار کاری بسیار بیشتری نسبت به سهام‌گذاری از طریق یک سرویس تجمیع دارد، اما دسترسی کامل به پاداش‌های اتر و کنترل کامل بر تنظیمات و امنیت اعتبارسنجی شما را ارائه می‌دهد. سهام‌گذاری مشترک حد ورود بسیار پایین‌تری دارد. کاربران می‌توانند مقادیر کمی از اتر را به اشتراک بگذارند، نیازی به تولید کلیدهای اعتبارسنج ندارند، و نیازی به سخت‌افزار فراتر از اتصال استاندارد به اینترنت ندارند. توکن‌های نقدینگی امکان خروج از سهام‌گذاری را قبل از فعال شدن در سطح پروتکل فراهم می‌کنند. اگر به این ویژگی‌ها علاقه دارید، سهام‌گذاری مشترک ", + "page-staking-comparison-solo-pools": "سهام گذاری انفرادی به طور قابل ملاحظه بار کاری بیشتری از سهام گذاری با سرویس مشترک دارد، اما دسترسی کامل به پاداش های اتر و کنترل کامل بر تنظیمات و امنیت اعتبارسنج شما را ارائه می دهد. سهام گذاری مشترک حد ورودی بسیار کمتری دارد. کاربران می توانند مقادیر کمی از اتر را سهام گذاری کنند، نیازی به تولید کردن کلید های اعتبارسنج نیست، و نیاز به سخت افزاری فراتر از اتصال استاندارد به اینترنت ندارند. توکن های نقدینگی امکان خروج از سهام گذاری را قبل از فعال شدن در سطح پروتکل فراهم می کنند. اگر به این ویژگی ها علاقه مند هستید، سهام گذاری مشترک ممکن است مناسب باشد.", "page-staking-comparison-saas-solo": "شباهت‌ها شامل داشتن کلیدهای اعتبارسنج خود بدون نیاز به تجمیع وجوه است، اما با SaaS باید به شخص ثالث اعتماد کنید، که ممکن است به‌طور بالقوه به طور مخرب عمل کند یا خود هدف حمله نظارت قرار گیرد. اگر این مفروضات مربوط به اعتماد یا خطرات تمرکزگرایی شما را نگران می‌کند، استاندارد طلایی سهام‌گذاری مستقل، سهام‌گذاری انفرادی است.", "page-staking-comparison-saas-pools": "این‌ها از این جهت مشابه هستند که شما معمولاً به شخص دیگری برای اجرای کلاینت اعتبارسنج متکی هستید، اما برخلاف SaaS، سهام‌گذاری مشترک به شما امکان می‌دهد با مقادیر کمتری از اتر مشارکت کنید. اگر می‌خواهید با کمتر از 32 اتر سهام‌گذاری کنید، این موارد را بررسی کنید.", "page-staking-comparison-pools-solo": "سهام‌گذاری مشترک در مقایسه با سهام‌گذاری انفرادی، حد ورود بسیار کمتری دارد، اما با واگذاری تمام عملیات‌های گره به شخص ثالث و با هزینه، خطر بیشتری را به همراه دارد. سهام‌گذاری انفرادی، حاکمیت و کنترل کاملی را برای گزینه‌هایی که جهت انتخاب مجموعه‌ی سهام‌گذاری در نظر گرفته می‌شود، ارائه می‌دهد. سهام‌گذارها هرگز مجبور نیستند کلیدهای خود را تحویل دهند و بدون هیچ واسطه‌ای پاداش کامل دریافت می‌کنند.", @@ -84,9 +110,9 @@ "page-staking-considerations-solo-6-valid": "بدون نیاز به مجوز", "page-staking-considerations-solo-6-warning": "نیازمند مجوز", "page-staking-considerations-solo-7-title": "چندکلاینتی", - "page-staking-considerations-solo-7-description": "نرم‌افزار به کاربران امکان می‌دهد حداقل از دو یا چند کلاینت لایه‌ی اجماع انتخاب کرده و بین آن‌ها جابجا شوند", + "page-staking-considerations-solo-7-description": "نرم افزار به کاربران امکان می دهد از میان حداقل دو یا چند کاربر اجرایی و دو یا چند کاربر لایه اجماعی را انتخاب کنند و بین آنها جابجا شوند", "page-staking-considerations-solo-7-valid": "جابجایی آسان بین کلاینت‌ها", - "page-staking-considerations-solo-7-warning": "محدود به کلاینت اکثریت", + "page-staking-considerations-solo-7-warning": "محدود به کاربر اکثریت", "page-staking-considerations-solo-8-title": "نگهداری مدارک شناسایی توسط خود", "page-staking-considerations-solo-8-description": "کاربر هر گونه مدارک شناسایی اعتبارسنج، از جمله کلیدهای امضا و برداشت را نزد خود نگه می‌دارد", "page-staking-considerations-solo-8-warning": "نگهداری مدارک شناسایی توسط شخص ثالث", @@ -98,37 +124,48 @@ "page-staking-considerations-saas-6-description": "کاربران برای شرکت در این سرویس به مجوز خاصی، ثبت‌نام در حساب کاربری یا احراز هویت مشتری نیاز ندارند", "page-staking-considerations-saas-6-valid": "هر کسی میتواند بپیوندد", "page-staking-considerations-saas-6-warning": "نیازمند مجوز است", - "page-staking-considerations-saas-7-title": "کلاینت‌های متنوع", - "page-staking-considerations-saas-7-description": "سرویس نباید بیش از 50 درصد از کل اعتبارسنج‌های خود را با یک کلاینت اعتبارسنج اکثریت اجرا کند", + "page-staking-considerations-saas-7-title": "تنوع اجرا", + "page-staking-considerations-saas-7-description": "سرویس نباید بیش از 50 درصد کل اعتبارسنج‌های مجموع آن را با کاربر اجرای اکثریت اجرا کند", "page-staking-considerations-saas-7-valid": "کمتر از %50", "page-staking-considerations-saas-7-caution": "در حال حاضر ناشناخته است", "page-staking-considerations-saas-7-warning": "بیش از 50%", + "page-staking-considerations-saas-8-title": "تنوع اجماع", + "page-staking-considerations-saas-8-description": "سرویس نباید بیش از 50 درصد کل اعتبارسنج‌های مجموع آن را با کاربر اجرای اکثریت اجرا کند", + "page-staking-considerations-saas-8-valid": "کمتر از %50", + "page-staking-considerations-saas-8-caution": "در حال حاضر ناشناخته است", + "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-7-description": "سرویس نباید بیش از 50 درصد از کل اعتبارسنج‌های آنها را با یک کلاینت اعتبارسنج اکثریت قابل‌توجه اجرا کند", + "page-staking-considerations-pools-7-description": "سرویس نباید بیش از 50 درصد کل اعتبارسنج‌های مجموع آن را با کاربر اجرای اکثریت اجرا کند", "page-staking-considerations-pools-8-title": "توکن‌های نقدینگی", "page-staking-considerations-pools-8-description": "توکن نقدینگی قابل‌معامله ارائه می‌دهد که نشان‌دهنده اتر سهام‌گذاری‌شده شما است که در کیف پولتان نگهداری می‌شود", "page-staking-considerations-pools-8-valid": "توکن(های) نقدینگی", "page-staking-considerations-pools-8-warning": "بدون توکن نقدینگی", - "page-staking-how-solo-works-item-1": "مقداری سخت‌افزار دریافت کنید: برای سهام‌گذاری باید یک گره را اجرا کنید.", + "page-staking-considerations-pools-9-description": "سرویس نباید بیش از 50 درصد کل اعتبارسنج‌های مجموع آن را با کاربر اجرای اکثریت اجرا کند", + "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-5": "بر گره‌ی خود نظارت کنید و از آن نگهداری کنید", - "page-staking-launchpad-widget-testnet-label": "شبکه‌ی تست Goerli", - "page-staking-launchpad-widget-testnet-start": "سهام‌گذاری در شبکه‌ی تست Goerli را آغاز کنید", + "page-staking-launchpad-widget-testnet-label": "شبکه تست Goerli", + "page-staking-launchpad-widget-testnet-start": "سهام‌گذاری در شبکه تست Goerli را شروع کنید", "page-staking-launchpad-widget-mainnet-label": "شبکه‌ی اصلی", "page-staking-launchpad-widget-mainnet-start": "سهام‌گذاری در شبکه‌ی اصلی را شروع کنید", "page-staking-launchpad-widget-span": "انتخاب شبکه", - "page-staking-launchpad-widget-p1": "از اعتبارسنج‌های انفرادی انتظار می‌رود قبل از به خطر انداختن وجوه، در شبکه‌ی تست Goerli، تنظیمات و مهارت‌های عملیاتی خود را آزمایش کنند. به یاد داشته باشید که انتخاب کردن یک کلاینت اقلیت مهم است، زیرا امنیت شبکه را بهبود می‌بخشد و ریسک شما را محدود می‌کند.", + "page-staking-launchpad-widget-p1": "انتظار می‌رود که اعتبارسنج های انفرادی قبل از ریسک کردن وجوه، راه‌اندازی و مهارت‌های عملیاتی خود را در شبکه آزمایشی Goerli آزمایش کنند. به یاد داشته باشید که انتخاب یک کاربر اقلیت مهم است، زیرا امنیت شبکه را بهبود می بخشد و ریسک شما را محدود می کند.", "page-staking-launchpad-widget-p2": "اگر با خط فرمان راحت هستید، می‌توانید همه‌ی چیزهای لازم را از طریق آن و با استفاده از Staking Launchpad به‌تنهایی تنظیم کنید.", "page-staking-launchpad-widget-p3": "برای آسان‌تر کردن امور، برخی از ابزارها و راهنماهای زیر را بررسی کنید که می‌توانند در کنار Staking Launchpad به شما کمک کنند کلاینت‌های خود را به‌راحتی راه‌اندازی کنید.", "page-staking-launchpad-widget-link": "راهنما و ابزارهای نرم‌افزاری", "page-staking-products-get-started": "شروع به کار", + "page-staking-dropdown-staking-options": "گزینه‌های سهام گذاری", + "page-staking-dropdown-staking-options-alt": "منوی کشویی گزینه‌های سهام‌گذاری", "page-staking-stats-box-metric-1": "کل اتر سهام‌گذاری‌شده", "page-staking-stats-box-metric-2": "کل اعتبارسنج‌ها", "page-staking-stats-box-metric-3": "APR فعلی", + "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": "پاداش‌ها", "page-staking-section-comparison-solo-rewards-li1": "حداکثر پاداش - پاداش کامل را به‌طور مستقیم از پروتکل دریافت کنید", @@ -165,7 +202,12 @@ "page-staking-faq-3-answer-p2": "توکن‌های مشتقی وجود دارند که ممکن است نشان‌دهنده‌ی اتر سهام‌گذار باشند (یعنی rETH از Rocket Pool،‏ stETH از Lido‏، ETH2 از Coinbase). درباره‌ی استخرهای سهام‌گذاری بیشتر بدانید", "page-staking-faq-4-question": "آیا سهام‌گذاری همین حالا هم در حال اجرا است؟", "page-staking-faq-4-answer-p1": "سهام گذاری از 1 دسامبر 2020 به صورت زنده شروع شده است", - "page-staking-faq-4-answer-p2": "این بدان معنی است که در حال حاضر شرط‌بندی برای کاربران فعال است تا اتر خود را واریز کنند، یک کلاینت اعتبارسنج را اجرا کنند و شروع به کسب پاداش کنند. پس از به‌روزرسانی شانگهای، سهام‌گذاران می‌توانند جوایز و وجوه را از موجودی اعتبارسنج خود برداشت کنند.", + "page-staking-faq-4-answer-p2": "این بدان معنی است که در حال حاضر سهام گذاری برای کاربران فعال است تا ETH خود را واریز کنند، یک کاربر اعتبارسنج را اجرا کنند و شروع به کسب پاداش کنند.", + "page-staking-faq-4-answer-p3": "ارتقای شانگهای/کاپلا در 12 آوریل 2023 تکمیل شد و امکان برداشت‌های سهام‌گذاری را فراهم کرد و حلقه روی نقدینگی سهام‌گذاری را بست.", + "page-staking-faq-5-question": "چه زمانی میتوانم اتر سهام‌گذاری شده خود را برداشت کنم؟", + "page-staking-faq-5-answer-p1": "همین الان! سهام‌گذاران آزادند که در صورت تمایل، جوایز و/یا سپرده اصلی خود را از موجودی اعتبارسنج خود برداشت کنند.", + "page-staking-faq-5-answer-p2": "سهام‌گذاران همچنین در هنگام پیشنهاد بلوک‌ها، پاداش‌هایی در قالب هزینه‌ها و MEV دریافت می‌کنند که بلافاصله از طریق آدرس گیرنده هزینه تعیین‌شده در دسترس قرار می‌گیرند.", + "page-staking-faq-5-answer-link": "اطلاعات بیشتر درباره برداشت‌های سهامگذاری", "page-staking-further-reading-1-link": "چرا اثبات سهام (نوامبر 2020)", "page-staking-further-reading-author-vitalik-buterin": "ویتالیک بوترین", "page-staking-further-reading-2-link": "منطق طراحی Serenity", @@ -178,14 +220,18 @@ "page-staking-further-reading-7-link": "پایگاه دانش Beaconcha.in", "page-staking-further-reading-8-link": "محتوای آموزشی تولیدشده توسط جامعهٔ کاربران Beaconcha.in", "page-staking-further-reading-9-link": "پرسش‌های پرتکرار دربارهٔ سکوی پرتاب سهام‌گذاری اتریوم", + "page-staking-further-reading-10-link": "پایگاه دانش EthStaker", "page-staking-toc-how-to-stake-your-eth": "نحوه‌ی سهام‌گذاری کردن اتر خود", "page-staking-toc-comparison-of-options": "مقایسه‌ی گزینه‌های سهام‌گذاری", "page-staking-toc-faq": "سؤالات متداول", "page-staking-toc-further": "بیشتر بخوانید", "page-staking-dom-info-title": "سهام‌گذاری در اتریوم", "page-staking-join-community": "به اجتماع سهام‌گذاران ملحق شوید", - "page-staking-join-community-desc": "EthStaker جامعه‌ای برای تمام کسانی است که می‌خواهند درباره‌ی سهام‌گذاری در اتریوم بحث کنند. به هزاران عضو از سراسر جهان برای مشورت، حمایت و صحبت درباره‌ی تمام جوانب سهام‌گذاری بپیوندید.", + "page-staking-join-community-desc": "EthStaker گروهی برای تمام کسانی است که می‌خواهند درباره‌ سهام‌گذاری در اتریوم بحث کنند. به هزاران عضو از سراسر جهان برای مشورت، حمایت و صحبت درباره‌ تمام مسائل مربوط به سهام‌گذاری بپیوندید.", "page-staking-meta-description": "نمایی کلی از سهام‌گذاری اتریوم: خطرات، پاداش‌ها، الزامات و مکان انجام آن.", "page-staking-meta-title": "سهام‌گذاری اتریوم", - "page-upgrades-merge-btn": "اطلاعات بیشتر درباره ادغام" + "page-staking-withdrawals-important-notices": "اطلاعیه های مهم", + "page-staking-withdrawals-important-notices-desc": "برداشت هنوز در دسترس نیست. لطفاً سؤالات متداول مربوط به ادغام اتریوم 2 و پس از ادغام را برای اطلاعات بیشتر بخوانید.", + "page-upgrades-merge-btn": "اطلاعات بیشتر درباره‌ی ادغام", + "subscribe-to-ef-blog": "برای دریافت اعلان‌های ایمیلی درباره آخرین اطلاعیه‌های پروتکل در وبلاگ EF مشترک شوید." } diff --git a/src/intl/fa/page-wallets-find-wallet.json b/src/intl/fa/page-wallets-find-wallet.json index a9546eacf30..865142d224f 100644 --- a/src/intl/fa/page-wallets-find-wallet.json +++ b/src/intl/fa/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "فیلتر های ویژگی‌ها", "page-find-wallet-footnote-1": "کیف پول‌هایی که در این صفحه لیست شده‌اند مورد تایید رسمی نیستند و صرفا به منظور اطلاعات‌دهی هستند.", "page-find-wallet-footnote-2": "توضیحات آنها توسط خود پروژه‌های این کیف پول‌ها ارائه شده‌اند.", - "page-find-wallet-footnote-3": "ما بر اساس شاخص‌هایی که در سیاست‌گذاری لیستینگ آورده شده است، محصولات را در این صفحه اضافه می‌کنیم. اگر مایل هستید تا کیف پولی را اضافه کنیم، یک موضوع در گیت‌هاب باز کنید.", + "page-find-wallet-footnote-3": "ما بر اساس شاخص‌هایی که در سیاست‌گذاری لیستینگ آورده شده است، محصولات را در این صفحه اضافه می‌کنیم. اگر مایل هستید تا کیف پولی را اضافه کنیم، یک موضوع در گیت‌هاب باز کنید.", "page-find-wallet-mobile": "تلفن همراه", "page-find-wallet-mobile-desc": "کیف پول‌هایی با برنامه‌‌ تلفن همراه", "page-find-wallet-desktop": "کامپیوتر", diff --git a/src/intl/fi/page-wallets-find-wallet.json b/src/intl/fi/page-wallets-find-wallet.json index 2c682f696c6..71273e95c3d 100644 --- a/src/intl/fi/page-wallets-find-wallet.json +++ b/src/intl/fi/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Ominaisuuden suodattimet", "page-find-wallet-footnote-1": "Tällä sivulla listatut lompakot eivät ole virallisia suosituksia vaan niistä jaetaan tietoa.", "page-find-wallet-footnote-2": " Lompakko-projektien oma hallinto on tuottanut kuvaukset itsenäisesti.", - "page-find-wallet-footnote-3": "Lisäämme tuotteita tälle sivulle oman listaus politiikkamme perusteella. Jos haluat meidän lisäävän lompakon, kirjaa pyyntö GitHubiin.", + "page-find-wallet-footnote-3": "Lisäämme tuotteita tälle sivulle oman listaus politiikkamme perusteella. Jos haluat meidän lisäävän lompakon, kirjaa pyyntö GitHubiin.", "page-find-wallet-mobile": "Mobiili", "page-find-wallet-mobile-desc": "Lompakot, joilla myös mobiilisovellus", "page-find-wallet-desktop": "Työpöytäkone", diff --git a/src/intl/fil/learn-quizzes.json b/src/intl/fil/learn-quizzes.json new file mode 100644 index 00000000000..b3da91d27af --- /dev/null +++ b/src/intl/fil/learn-quizzes.json @@ -0,0 +1,328 @@ +{ + "add-quiz": "Magdagdag ng tanong/quiz", + "average-score": "Average na puntos:", + "basics": "Mga pangunahing kaalaman sa Ethereum", + "basics-description": "Tinatalakay sa seksyong ito ang mga pangunahing konsepto ng Ethereum, para tiyaking may matibay kang pundasyon.", + "completed": "Tapos na:", + "community-stats": "Stats ng komunidad", + "contribute": "Mag-contribute sa aming library.", + "correct": "Tama", + "explanation": "Paliwanag", + "next-question": "Sunod na tanong", + "next-quiz": "Susunod na quiz", + "page-assets-merge": "Ang Pag-merge", + "passed": "Nakapasa ka sa quiz!", + "questions": "Mga Tanong", + "questions-answered": "Mga nasagutang tanong:", + "quizzes-subtitle": "Alamin kung gaano mo naiintindihan ang Ethereum at mga cryptocurrency. Handa ka na bang maging eksperto?", + "retry": "Rate ng Pag-uulit:", + "score": "Iskor", + "see-results": "Tingnan ang mga resulta", + "share-results": "Ibahagi ang mga resulta", + "start": "Simula", + "submit-answer": "Suriin ang sagot", + "test-your-knowledge": "Subukan ang iyong kaalaman sa Ethereum", + "try-again": "Subukang muli", + "using-ethereum": "Paggamit ng Ethereum", + "using-ethereum-description": "Alamin ang aplikasyon ng Ethereum sa totoong buhay at tuklasin kung paano binabago ng makabagong blockchain platform na ito ang mga industriya. Isa itong magandang paraan para tiyaking nauunawaan mo ang mga bagay-bagay bago ka magsimulang aktibong gumamit ng mga cryptocurrency.", + "want-more-quizzes": "Gusto pang makakita ng iba pang quiz dito?", + "your-results": "Iyong mga resulta", + "your-total": "Kabuuang puntos mo", + "a001-prompt": "Ang pinakamalaking pagkakaiba sa pagitan ng Ethereum at Bitcoin ay:", + "a001-a-label": "Hindi ka hinahayaan ng Ethereum na magbayad sa ibang tao", + "a001-a-explanation": "Hinahayaan ka ng Bitcoin at Ethereum na magbayad sa ibang tao.", + "a001-b-label": "Maaari kang magpatakbo ng mga computer program sa Ethereum", + "a001-b-explanation": "Ang Ethereum ay programmable. Ibig sabihin, maaari kang maglagay ng anumang computer program sa Ethereum blockchain.", + "a001-c-label": "Maaari kang magpatakbo ng mga computer program sa Bitcoin", + "a001-c-explanation": "Hindi katulad ng Ethereum, ang Bitcoin ay hindi programmable at hindi maaaring magpatakbo ng mga arbitrary na computer program.", + "a001-d-label": "Magkaiba ang logo ng mga ito", + "a001-d-explanation": "Magkaiba ang logo ng mga ito! Pero hindi ito ang pinakamalaking pagkakaiba ng mga ito.", + "a002-prompt": "Ang native cryptocurrency ng Ethereum ay tinatawag na:", + "a002-a-label": "Ether", + "a002-a-explanation": "Ang Ether ang cryptocurrency na native sa Ethereum network.", + "a002-b-label": "Ethereum", + "a002-b-explanation": "Ang Ethereum ang blockchain, pero hindi tinatawag na Ethereum ang native currency nito. Karaniwang nagkakamali dito.", + "a002-c-label": "Ethercoin", + "a002-c-explanation": "Hindi tulad ng iba pang cryptocurrency, walang salitang ‘coin’ ang native cryptocurrency ng Ethereum.", + "a002-d-label": "Bitcoin", + "a002-d-explanation": "Ang Bitcoin (may malaking titik B) ang unang blockchain na ginawa, ang bitcoin (may maliit na titik b) ang native nitong cryptocurrency.", + "a003-prompt": "Sino ang nagpapatakbo ng Ethereum?", + "a003-a-label": "Mga Developer", + "a003-a-explanation": "Ang mga developer ay mahalaga sa pagbuo at pagpapaganda ng Ethereum, ngunit hindi sila ang grupong nagpapatakbo ng Ethereum.", + "a003-b-label": "Miners", + "a003-b-explanation": "Hindi na nakakapag-mine mula pa noong The Merge. Wala nang 'miner' sa Ethereum.", + "a003-c-label": "Ang Ethereum Foundation", + "a003-c-explanation": "Walang anumang malaking papel ang Ethereum Foundation sa pang-araw-araw na pagpapatakbo ng mga Ethereum node.", + "a003-d-label": "Sinumang nagpapatakbo ng node", + "a003-d-explanation": "Mahalagang bahagi ng infrastructure ng node ang sinumang nagpapatakbo ng node. Kung hindi mo pa ito ginagawa, pag-isipang magpatakbo ng Ethereum node.", + "a004-prompt": "Mula noong inilunsad ang Ethereum, ilang beses nang naging offline ang network?", + "a004-a-label": "Hindi kailanman", + "a004-b-label": "Isang beses", + "a004-c-label": "Apat na beses", + "a004-d-label": "Mahigit sampung beses", + "a004-explanation": "Ang Ethereum ay hindi pa kailanman lubusang nag-offline (tumigil sa pag-produce ng mga block) mula nang ilunsad ito.", + "a005-prompt": "Kumokonsumo ng mas malaking kuryente ang Ethereum kaysa sa:", + "a005-a-label": "Gold mining", + "a005-a-explanation": "Ang pagmimina ng ginto ay gumagamit ng ~131 Terawatt hours kada taon. Ang Ethereum ay gumagamit ng mga 0.0026 Terawatt hours kada taon.", + "a005-b-label": "Netflix", + "a005-b-explanation": "Gumagamit ang Netflix ng ~0.451 Terawatt hours kada taon. Ang Ethereum ay gumagamit ng mga 0.0026 Terawatt hours kada taon.", + "a005-c-label": "PayPal", + "a005-c-explanation": "Gumagamit ang PayPal ng ~0.26 Terawatt hours kada taon. Ang Ethereum ay gumagamit ng mga 0.0026 Terawatt hours kada taon.", + "a005-d-label": "Wala sa mga nabanggit", + "a005-d-explanation": "Ang Ethereum ay gumagamit ng mga 0.0026 Terawatt hours kada taon. Mas kaunti kaysa sa pagmimina ng ginto (~131 TWh/yr), Netflix (~0.451 TWh/yr), at Paypal (~0.26 TWh/yr).", + "b001-prompt": "Ang Ether ay kilala rin bilang:", + "b001-a-label": "ETC", + "b001-a-explanation": "Ang ETC ang ticker para sa Ethereum Classic.", + "b001-b-label": "ETR", + "b001-b-explanation": "Ang ETR ay hindi isang ticker para sa ether o anumang mahalagang cryptocurrency.", + "b001-c-label": "ETH", + "b001-c-explanation": "Ang ETH ang ticker para sa ether sa Ethereum.", + "b001-d-label": "BTC", + "b001-d-explanation": "Ang BTC ang ticker para sa bitcoin sa Bitcoin network.", + "b002-prompt": "Sa Ethereum, ang ginagamit para bayaran ang mga bayarin sa network ay:", + "b002-a-label": "bitcoin", + "b002-a-explanation": "Ang lowercase “bitcoin” ang native cryptocurrency ng Bitcoin network.", + "b002-b-label": "ETH", + "b002-b-explanation": "Ang Ether (ETH) ang native cryptocurrency ng Ethereum. Ang lahat ng bayarin sa network sa Ethereum ay binabayaran sa ETH.", + "b002-c-label": "USD", + "b002-c-explanation": "Hindi posibleng magbayad ng mga bayarin sa network sa Ethereum gamit ang USD (US Dollars), o anupamang FIAT currency.", + "b002-d-label": "Ethereum", + "b002-d-explanation": "Ang Ethereum ang network, ngunit ang mga bayarin sa network ng Ethereum ay binabayaran sa ETH.", + "b003-prompt": "Makakatulong sa pag-secure ng network ang staking sa Ethereum dahil:", + "b003-a-label": "Puwedeng mag-ban ng mga tao ang mga staker kung hindi nila gusto ang ginagawa ng mga ito", + "b003-a-explanation": "Hindi magagawa ng mga staker na basta na lang mag-censor ng mga user.", + "b003-b-label": "Kung susubukan ng isang staker na dayain ang network, maaaring mawala ang ETH niya", + "b003-b-explanation": "Maaaring mawalan ng malaking halaga ng ETH nila ang mga staker kung mapag-aalamang gumagawa sila ng mga mapaminsalang pagkilos laban sa network. Kilala ito bilang slashing.", + "b003-c-label": "Ang mga staker ay gumagamit ng mahuhusay na computer upang ipakita ang patunay ng gawain", + "b003-c-explanation": "Hindi kailangan ng mga staker ng mahuhusay na hardware upang i-stake ang kanilang ETH. Huminto na ang Ethereum sa paggamit ng patunay ng gawain pagsapit ng The Merge.", + "b003-d-label": "Ang mga staker ay sumasailalim sa KYC bago tanggapin bilang validator", + "b003-d-explanation": "Ang staking sa Ethereum ay walang pahintulot at hindi nangangailangan ng KYC.", + "b004-prompt": "Ang ETH ay may halaga dahil:", + "b004-a-label": "Kailangan ang ETH para gumawa ng anumang bagay sa Ethereum", + "b004-a-explanation": "Bahagyang tama ang sagot na ito, pero isa lang ito sa mga dahilan kung bakit may halaga ang ETH.", + "b004-b-label": "Ang ETH ay hindi censorable at peer-to-peer na pera", + "b004-b-explanation": "Bahagyang tama ang sagot na ito, pero isa lang ito sa mga dahilan kung bakit may halaga ang ETH.", + "b004-c-label": "Ang ETH ay ginagamit bilang collateral para sa mga crypto loan", + "b004-c-explanation": "Bahagyang tama ang sagot na ito, pero isa lang ito sa mga dahilan kung bakit may halaga ang ETH.", + "b004-d-label": "Lahat ng nabanggit", + "b004-d-explanation": "Hindi mase-censor ang mga transaksyon sa Ethereum, kinakailangan ang ETH upang makagawa ng anumang transaksyon sa Ethereum, at ito ay mahalaga sa stability ng DeFi ecosystem.", + "c001-prompt": "Binibigyang-daan ng Web3 ang mga user na magmay-ari ng mga digital asset nang direkta sa pamamagitan ng:", + "c001-a-label": "DAOs", + "c001-a-explanation": "Ang DAOs (mga decentralized autonomous organization) ay mga komunidad na pag-aari ng mga miyembro na walang centralized na pamumuno.", + "c001-b-label": "NFTs", + "c001-b-explanation": "Ang NFTs (mga Non-fungible token) ay nagbibigay ng paraan upang katawanin ang anumang natatanging bagay bilang isang Ethereum-based asset.", + "c001-c-label": "ENS", + "c001-c-explanation": "Ang ENS (Ethereum Name Service) ay isang decentralized naming service para sa Ethereum blockchain.", + "c001-d-label": "GitHub", + "c001-d-explanation": "Ang GitHub ay isang centralized platform, na pangunahing ginagamit para sa pag-store ng code gamit ang distributed version control. Sa GitHub, hindi mo puwedeng maging pagmamay-ari ang iyong data o mga digital asset.", + "c002-prompt": "Ang Web1 ay read-only, ang Web2 ay read-write, at ang Web3 ay inilalarawan bilang:", + "c002-a-label": "read-write-sell", + "c002-a-explanation": "Hindi ganito ang paglalarawan sa Web3.", + "c002-b-label": "read-write-store", + "c002-b-explanation": "Hindi ganito ang paglalarawan sa Web3.", + "c002-c-label": "read-write-own", + "c002-c-explanation": "Pinapahintulutan ng Web3 ang mga user na magmay-ari ng kanilang data. Kung kaya, inilalarawan ito bilang 'read-write-own', na isang pagpapaganda sa Web2, na 'read-write' lang.", + "c002-d-label": "read-write-buy", + "c002-d-explanation": "Hindi ganito ang paglalarawan sa Web3.", + "c003-prompt": "Aling bersyon ng web ang hindi umaasa sa mga third-party payment provider?", + "c003-a-label": "Web1", + "c003-a-explanation": "Walang native at built-in na pagbabayad sa Web1.", + "c003-b-label": "Web2", + "c003-b-explanation": "Walang native at built-in na pagbabayad sa Web2.", + "c003-c-label": "Web3", + "c003-c-explanation": "May mga native at built-in na pagbabayad ang Web3 sa tulong ng mga cryptocurrency, tulad ng ETH.", + "c003-d-label": "Lahat ng nabanggit", + "c003-d-explanation": "Walang native at built-in na pagbabayad sa Web1 at Web2.", + "c004-prompt": "Ang terminong ‘Web3’ ay unang ginamit ni:", + "c004-a-label": "Gavin Wood", + "c004-a-explanation": "Si Gavin Wood, na isa sa mga co-founder ng Ethereum, ay kinikilala sa pag-imbento ng terminong Web3 matapos magsimula ang Ethereum noong 2015.", + "c004-b-label": "Steve Jobs", + "c004-b-explanation": "Hindi si Steve Jobs ang nag-imbento ng terminong ‘Web3’.", + "c004-c-label": "Vitalik Buterin", + "c004-c-explanation": "Hindi si Vitalik Buterin ang nag-imbento ng terminong ‘Web3’, bagama't siya ang orihinal na tagapagtatag ng Ethereum.", + "c004-d-label": "Elon Musk", + "c004-d-explanation": "Hindi si Elon Musk ang nag-imbento ng terminong ‘Web3’.", + "c005-prompt": "Maaari kang magkaroon ng isang censorship-resistant login sa buong web sa pamamagitan ng paggamit ng:", + "c005-a-label": "Pag-sign in gamit ang Facebook", + "c005-a-explanation": "Hindi censorship resistant ang pag-sign in gamit ang Facebook.", + "c005-b-label": "Pag-sign in gamit ang Google", + "c005-b-explanation": "Hindi censorship resistant ang pag-sign in gamit ang Google.", + "c005-c-label": "Sign-in with Ethereum", + "c005-c-explanation": "Ang pag-sign in lang gamit ang Ethereum ang opsyong censorship-resistant at magagamit sa kahit anong web application.", + "c005-d-label": "Pag-sign in gamit ang Twitter", + "c005-d-explanation": "Hindi censorship resistant ang pag-sign in gamit ang Twitter.", + "d001-prompt": "Ang pinaka-secure na uri ng wallet ay:", + "d001-a-label": "Ang mobile wallet", + "d001-a-explanation": "Hawak ng mga mobile wallet ang mga pribadong key sa isang mobile device, na kadalasang may koneksyon sa internet, at posibleng makompromiso ng iba pang software.", + "d001-b-label": "Ang hardware wallet", + "d001-b-explanation": "Naka-store ang mga pribadong key ng isang hardware wallet sa nakalaang device na puwedeng hindi ikonekta sa internet at ilayo sa iba pang application sa iyong mga device.", + "d001-c-label": "Ang web wallet", + "d001-c-explanation": "Hindi masyadong secure ang mga web wallet kaysa sa mga hardware wallet dahil naka-store ang mga pribadong key sa device na konektado sa internet.", + "d001-d-label": "Ang desktop wallet", + "d001-d-explanation": "Hawak ng mga desktop wallet ang mga pribadong key sa hard drive ng computer, na karaniwang may koneksyon sa internet, at posibleng makompromiso ng iba pang software.", + "d002-prompt": "Mula sa mga opsyong inilahad, alin ang pinaka-secure na paraan para i-store ang iyong seed phrase?", + "d002-a-label": "Sa isang larawan sa iyong phone", + "d002-a-explanation": "Hindi ito ang pinaka-secure na opsyon. Kung maa-upload ang larawang ito sa cloud storage, makukuha ng hacker ang larawang ito at magkakaroon siya ng access sa account mo.", + "d002-b-label": "Sa isang file sa iyong computer", + "d002-b-explanation": "Hiindi ito ang pinaka-secure na opsyon. Lalong naghahanap ang mga hacker ng impormasyong nauugnay sa cryptocurrency sa mga target na device. Kung maa-access ng hacker ang file na naglalaman ng iyong seed phrase, magkakaroon siya ng access sa account mo.", + "d002-c-label": "Isulat sa papel", + "d002-c-explanation": "Sa mga available na opsyon, ang pinaka-secure na opsyon ay isulat ang iyong seed phrase sa papel.", + "d002-d-label": "Sa isang text message sa isang pinagkakatiwalaang kamag-anak", + "d002-d-explanation": "Hindi mo dapat i-text ang iyong seed phrase sa kahit kanino. Puwede itong makuha ng third party, at kahit pa pinagkakatiwalaan mo talaga ang taong ito, hindi mo malalaman kung sino ang makaka-access sa kanyang phone.", + "d003-prompt": "Kanino dapat ibigay ang iyong seed phrase o mga pribadong key?", + "d003-a-label": "Sa taong iyong binabayaran", + "d003-a-explanation": "Hindi mo dapat ibigay ang iyong seed phrase o mga pribadong key sa kahit sino. Ipadala na lang ang mga token sa kanilang wallet address sa pamamagitan ng isang transaksyon.", + "d003-b-label": "Para mag-log in sa dapp o wallet", + "d003-b-explanation": "Hindi mo dapat ibigay ang iyong seed phrase o mga pribadong key para mag-log in sa iyong wallet o dapp.", + "d003-c-label": "Support staff", + "d003-c-explanation": "Hindi mo dapat ibigay ang iyong seed phrase / mga pribadong key sa sinumang nagsasabing sila ay support staff. Scammer ang sinumang humihiling nito.", + "d003-d-label": "Wala", + "d003-d-explanation": "Hindi mo dapat ibigay ang iyong seed phrase o mga pribadong key sa kahit kanino. Kung lubos mong pinagkakatiwalaan ang isang tao at bibigyan mo siya ng buong access sa iyong pondo (tulad ng iyong asawa), maaaring mong ibahagi ang impormasyong ito sa kanya.", + "d004-prompt": "Magkapareho lang ang wallet at account sa Ethereum.", + "d004-a-label": "Tama", + "d004-a-explanation": "Ang wallet ay isang visual interface na ginagamit upang mag-interact sa isang account sa Ethereum.", + "d004-b-label": "Mali", + "d004-b-explanation": "Ang wallet ay isang visual interface na ginagamit upang mag-interact sa isang account sa Ethereum.", + "e001-prompt": "Bakit kailangan mong gumamit ng mga walang katulad na password para sa lahat ng iyong account?", + "e001-a-label": "Kung sakaling magkaroon ng data breach sa isa sa mga platform", + "e001-a-explanation": "Tama ang sagot na ito, ngunit may iba pang tamang sagot.", + "e001-b-label": "Kung sakaling may nakasilip sa likod mo at nasipat niya ang password mo", + "e001-b-explanation": "Tama ang sagot na ito, ngunit may iba pang tamang sagot.", + "e001-c-label": "Kung sakaling nakawin ng isang malware, tulad ng key-logger, ang iyong password", + "e001-c-explanation": "Tama ang sagot na ito, ngunit may iba pang tamang sagot.", + "e001-d-label": "Lahat ng nabanggit", + "e001-d-explanation": "Tama ang lahat ng sagot. Ang paggamit ng mga walang katulad na password ang pinakamainam na paraan para pigilan ang iba na ma-access ang iyong account.", + "e002-prompt": "Matapos ang The Merge, dapat i-upgrade ang ETH sa ETH2.", + "e002-a-label": "Tama", + "e002-a-explanation": "Hindi mo kailangang i-upgrade ang iyong ETH sa ETH2. Walang ETH2 at ito ay karaniwang kuwento na ginagamit ng mga scammer.", + "e002-b-label": "Mali", + "e002-b-explanation": "Hindi mo kailangang i-upgrade ang iyong ETH sa ETH2. Walang ETH2 at ito ay karaniwang kuwento na ginagamit ng mga scammer.", + "e003-prompt": "Ang mga ETH giveaway ay:", + "e003-a-label": "Isang magandang paraan upang makakuha ng mas maraming ETH", + "e003-a-explanation": "Ang mga ETH giveaway ay mga scam na idinisenyo para nakawin ang iyong ETH at iba pang token. Hindi magandang paraan ang mga ito para makakuha ng mas maraming ETH.", + "e003-b-label": "Palaging totoo", + "e003-b-explanation": "Ang mga ETH giveaway ay hindi kailanman totoo.", + "e003-c-label": "Karaniwang ginagawa ng mga kilalang miyembro ng komunidad", + "e003-c-explanation": "Hindi nagsasagawa ng mga ETH giveaway ang mga kilalang miyembro ng komunidad. Nagpapanggap ang mga scammer na mga kilalang indibidwal, tulad ni Elon Musk, ang nagsasagawa ng mga giveaway para magmukhang lehitimo ang scam.", + "e003-d-label": "Malaki ang tsansang scam ito", + "e003-d-explanation": "Palaging scam ang mga ETH giveaway. I-report at huwag pansinin ang mga scammer.", + "e004-prompt": "Mababawi ang mga transaksyon sa Ethereum.", + "e004-a-label": "Tama", + "e004-a-explanation": "Hindi mababawi ang mga transaksyon sa Ethereum. Sinusubukan kang i-scam ng sinumang magsasabi sa iyong magagawa ito.", + "e004-b-label": "Mali", + "e004-b-explanation": "Hindi mababawi ang mga transaksyon sa Ethereum. Sinusubukan kang i-scam ng sinumang magsasabi sa iyong magagawa ito.", + "f001-prompt": "Ang NFTs ay pinakamahusay na inilalarawan bilang:", + "f001-a-label": "mga natatanging digital asset", + "f001-a-explanation": "Ang NFTs ay kumakatawan sa natatanging digital asset.", + "f001-b-label": "sining na digital", + "f001-b-explanation": "Ang NFTs ay kumakatawan sa natatanging digital asset, na karaniwang digital artwork, pero hindi ito limitado sa sining.", + "f001-c-label": "ticket sa mga eksklusibong event", + "f001-c-explanation": "Ang NFTs ay kumakatawan sa natatanging digital asset, na maaaring isang ticketing system, pero hindi ito limitado sa mga ticket.", + "f001-d-label": "mga kontratang may legal na bisa", + "f001-d-explanation": "Bagama't puwedeng gamiting NFT ang isang legal na kontrata, hindi eksklusibo ang NFTs sa mga kontratang may legal na bisa.", + "f002-prompt": "Ang dalawang NFTs na kumakatawan sa iisang artwork ay magkapareho lang.", + "f002-a-label": "Tama", + "f002-a-explanation": "Non-fungible ang NFTs. Ibig sabihin, kahit na kinakatawan ng mga ito ang isang digital art, may natatanging pagkakakilanlan pa rin ang mga ito. Sa tradisyonal na mundo ng sining, katulad ito ng mga orihinal at print.", + "f002-b-label": "Mali", + "f002-b-explanation": "Non-fungible ang NFTs. Ibig sabihin, kahit na kinakatawan ng mga ito ang isang digital art, may natatanging pagkakakilanlan pa rin ang mga ito. Sa tradisyonal na mundo ng sining, katulad ito ng mga orihinal at print.", + "f003-prompt": "Karaniwang kinakatawan ng mga NFT ang:", + "f003-a-label": "Password sa iyong wallet", + "f003-a-explanation": "Ito ay isang panganib sa seguridad at hindi magandang ideya!", + "f003-b-label": "Pagmamay-ari sa isang natatanging digital item", + "f003-b-explanation": "Karaniwang kinakatawan ng NFTs ang pagmamay-ari sa natatanging digital item.", + "f003-c-label": "Ang kasalukuyang balanse ng iyong ETH", + "f003-c-explanation": "Hindi puwedeng gamitin ng NFTs para katawanin ang balanse ng iyong ETH nang basta-basta.", + "f003-d-label": "Lahat ng nabanggit", + "f003-d-explanation": "Karaniwang kinakatawan ng NFTs ang pagmamay-ari sa natatanging digital item, hindi ang mga balanse ng ETH o password ng wallet.", + "f004-prompt": "Ang NFTs ay nakatulong sa paggawa ng bagong:", + "f004-a-label": "ekonomiya ng kurador", + "f004-a-explanation": "Ang NFTs ay nakatulong sa paggawa ng bagong ekonomiya para sa mga creator, hindi para sa mga curator.", + "f004-b-label": "carbon economy", + "f004-b-explanation": "Ang NFTs ay nakatulong sa paggawa ng bagong ekonomiya para sa mga creator, hindi para sa carbon.", + "f004-c-label": "creator economy", + "f004-c-explanation": "Ang NFTs ay nakatulong sa paggawa ng creator economy.", + "f004-d-label": "ekonomiya ng doge", + "f004-d-explanation": "Ang NFTs ay nakatulong sa paggawa ng bagong ekonomiya para sa mga creator, hindi para sa mga aso. 🐶.", + "f005-prompt": "Ang NFTs sa Ethereum ay nakakasama sa kalikasan", + "f005-a-label": "Tama", + "f005-a-explanation": "Mula noong The Merge (pag-transition sa patunay ng stake), napakaliit ng epekto sa kalikasan ng anumang transaksyon.", + "f005-b-label": "Mali", + "f005-b-explanation": "Mula noong The Merge (pag-transition sa patunay ng stake), napakaliit ng epekto sa kalikasan ng anumang transaksyon.", + "g001-prompt": "Ang mga Layer 2 blockchain network ay para sa:", + "g001-a-label": "Pag-scale ng Ethereum", + "g001-a-explanation": "Ang pangunahing layunin ng mga rollup at iba pang mga layer 2 solution ay para sa pag-scale ng Ethereum.", + "g001-b-label": "Pagsasagawa ng mga pagbabayad", + "g001-b-explanation": "Ang pangunahing layunin ng mga rollup at iba pang mga layer 2 solution ay para sa pag-scale ng Ethereum.", + "g001-c-label": "Pagbili ng NFTs", + "g001-c-explanation": "Ang pangunahing layunin ng mga rollup at iba pang mga layer 2 solution ay para sa pag-scale ng Ethereum.", + "g001-d-label": "Pag-decentralize sa Ethereum", + "g001-d-explanation": "Ang pangunahing layunin ng mga rollup at iba pang mga layer 2 solution ay para sa pag-scale ng Ethereum.", + "g002-prompt": "Upang i-scale, pangunahing isinasakripisyo sa karamihan sa mga alternatibong layer 1 network ang:", + "g002-a-label": "Seguridad", + "g002-a-explanation": "Isinasakripisyo ng karamihan sa mga alternatibong Layer 1 network ang seguridad at iba pa para mag-scale.", + "g002-b-label": "Desentralisasyon", + "g002-b-explanation": "Isinasakripisyo ng karamihan sa mga alternatibong Layer 1 network ang decentralization at iba pa para mag-scale.", + "g002-c-label": "Presyo ng token", + "g002-c-explanation": "Hindi nakakaapekto ang halaga ng token sa kakayahan ng pagpapalawak.", + "g002-d-label": "Seguridad at decentralization", + "g002-d-explanation": "Isinasakripisyo ng karamihan sa mga alternatibong Layer 1 network ang seguridad at decentralization para mag-scale.", + "g003-prompt": "Alin sa mga sumusunod ang hindi itinuturing na layer 2?", + "g003-a-label": "Mga Validium", + "g003-a-explanation": "Hindi itinuturing na mga layer 2 solution ang mga Validium dahil hindi nagmumula sa Ethereum ang seguridad at availability ng data nito", + "g003-b-label": "Sidechains", + "g003-b-explanation": "Hindi itinuturing na mga layer 2 solution ang mga sidechain dahil hindi nagmumula sa Ethereum ang seguridad at availability ng data nito.", + "g003-c-label": "Mga alternatibong layer 1 blockchain", + "g003-c-explanation": "Hindi itinuturing na mga layer 2 solution ang mga alternatibong layer 1 blockchain.", + "g003-d-label": "Lahat ng nabanggit", + "g003-d-explanation": "Ang mga Validium, Sidechain, at alternatibong layer 1 blockchain ay hindi itinuturing na mga layer 2 solution dahil hindi nagmumula sa Ethereum ang seguridad at availability ng data ng mga ito.", + "g004-prompt": "Bakit walang ‘opisyal’ na layer 2 ang Ethereum?", + "g004-a-label": "Masyadong abala ang mga core developer sa Ethereum", + "g004-a-explanation": "Walang balak magkaroon ng ‘opisyal’ na layer 2 sa Ethereum dahil makikinabang tayo sa iba't ibang paraan sa pagdidisenyo ng mga layer 2 solution.", + "g004-b-label": "Bilang L1, maaabot din ng Ethereum ang mass scaling nang mag-isa", + "g004-b-explanation": "Walang balak magkaroon ng ‘opisyal’ na layer 2 sa Ethereum dahil makikinabang tayo sa iba't ibang paraan sa pagdidisenyo ng mga layer 2 solution.", + "g004-c-label": "Pinagtatalunan pa rin ang mga core developer ang mga optimistic at zk-rollup", + "g004-c-explanation": "Walang balak magkaroon ng ‘opisyal’ na layer 2 sa Ethereum dahil makikinabang tayo sa iba't ibang paraan sa pagdidisenyo ng mga layer 2 solution.", + "g004-d-label": "Makikinabang ang Ethereum sa iba't ibang paraan sa pagdidisenyo ng L2", + "g004-d-explanation": "Walang balak magkaroon ng ‘opisyal’ na layer 2 sa Ethereum dahil makikinabang tayo sa iba't ibang paraan sa pagdidisenyo ng mga layer 2 solution.", + "h001-prompt": "Sa aling consensus mechanism inilipat ng The Merge ang Ethereum?", + "h001-a-label": "Proof-of-work", + "h001-a-explanation": "Ang patunay ng gawain ang consensus mechanism na ginagamit bago ang The Merge.", + "h001-b-label": "Proof-of-stake", + "h001-b-explanation": "Tama! Inilipat ng The Merge ang Ethereum sa patunay ng stake.", + "h001-c-label": "Proof-of-authority", + "h001-c-explanation": "Hindi gumagamit, at hindi gumamit ang Ethereum ng patunay ng awtoridad sa Ethereum Mainnet.", + "h001-d-label": "Lahat ng nabanggit", + "h001-d-explanation": "Hindi posibleng gamitin ng Ethereum ang lahat ng consensus mechanism na ito nang sabay-sabay.", + "h002-prompt": "Dahil sa The Merge, bumaba ang kinokonsumong enerhiya ng Ethereum nang:", + "h002-a-label": "50%", + "h002-a-explanation": "Nabawasan ng 99.95% ang kinokonsumong enerhiya ng Ethereum matapos bigyang-daan ng The Merge ang transition sa patunay ng stake mula sa patunay ng gawain.", + "h002-b-label": "62.5%", + "h002-b-explanation": "Nabawasan ng 99.95% ang kinokonsumong enerhiya ng Ethereum matapos bigyang-daan ng The Merge ang transition sa patunay ng stake mula sa patunay ng gawain.", + "h002-c-label": "90%", + "h002-c-explanation": "Nabawasan ng 99.95% ang kinokonsumong enerhiya ng Ethereum matapos bigyang-daan ng The Merge ang transition sa patunay ng stake mula sa patunay ng gawain.", + "h002-d-label": "99.95%", + "h002-d-explanation": "Nabawasan ng 99.95% ang kinokonsumong enerhiya ng Ethereum matapos bigyang-daan ng The Merge ang transition sa patunay ng stake mula sa patunay ng gawain.", + "h003-prompt": "Kailan nangyari ang The Merge?", + "h003-a-label": "Setyembre 15, 2022", + "h003-a-explanation": "Nangyari ang The Merge noong Setyembre 15, 2022 nang 06:42:42 AM (UTC).", + "h003-b-label": "Disyembre 1, 2021", + "h003-b-explanation": "Nangyari ang The Merge pagkalipas pa nito. Inilunsad ang Beacon Chain noong Disyembre 1, 2022.", + "h003-c-label": "Nobyembre 27, 2013", + "h003-c-explanation": "Nangyari ang The Merge pagkalipas pa nito. Inilathala ang Ethereum whitepaper noong Nobyembre 27, 2013.", + "h003-d-label": "Oktubre 31, 2008", + "h003-d-explanation": "Nangyari ang The Merge pagkalipas pa nito. Inilathala ang Bitcoin Whitepaper noong Oktubre 31.", + "h004-prompt": "Sa The Merge, kailangang i-exchange ng mga user ang ETH nila sa ETH2:", + "h004-a-label": "Tama", + "h004-a-explanation": "Ang ETH ay hindi nagbago sa anumang punto bago, habang, o matapos ang The Merge. Ang ideya ng ‘pag-upgrade’ ng ETH sa ETH2 ay karaniwang taktika ng mapaminsalang actor para i-scam ang mga user.", + "h004-b-label": "Mali", + "h004-b-explanation": "Ang ETH ay hindi nagbago sa anumang punto bago, habang, o matapos ang The Merge. Ang ideya ng ‘pag-upgrade’ ng ETH sa ETH2 ay karaniwang taktika ng mapaminsalang actor para i-scam ang mga user.", + "h005-prompt": "Ang consensus layer ng Ethereum ay dating tinatawag na:", + "h005-a-label": "Proof-of-work", + "h005-a-explanation": "Ang patunay ng gawain ang consensus mechanism na ginagamit bago ang The Merge.", + "h005-b-label": "Eth2", + "h005-b-explanation": "Bago ito tawaging consensus layer, ito ay orihinal na tinatawag na ‘Eth2’.", + "h005-c-label": "Eth1", + "h005-c-explanation": "Eth1 ang orihinal na pangalang ibinigay sa execution later, hindi sa consensus layer.", + "h005-d-label": "Staking", + "h005-d-explanation": "Ang staking ay pagdedeposito ng ETH sa isang smart contract upang makatulong sa pag-secure ng chain." +} diff --git a/src/intl/fil/page-learn.json b/src/intl/fil/page-learn.json index eb80a221375..de1a792e213 100644 --- a/src/intl/fil/page-learn.json +++ b/src/intl/fil/page-learn.json @@ -1,4 +1,123 @@ { - "additional-reading-how-to-create-an-ethereum-account": "Paano \"magrehistro\" ng Ethereum account", - "additional-reading-how-to-use-a-wallet": "Paano gumamit ng wallet" + "toc-learn-hub": "Learn hub", + "toc-what-is-crypto-ethereum": "Ano ang Ethereum?", + "toc-how-do-i-use-ethereum": "Paano ko magagamit ang Ethereum?", + "toc-what-is-ethereum-used-for": "Saan ginagamit ang Ethereum?", + "toc-strengthen-the-ethereum-network": "Palakasin ang Ethereum network", + "toc-learn-about-the-ethereum-protocol": "Magbasa tungkol sa Ethereum protocol", + "toc-learn-about-the-ethereum-community": "Magbasa tungkol sa komunidad ng Ethereum", + "toc-books-and-podcasts": "Mga Libro at Podcast", + "hero-header": "Magbasa tungkol sa Ethereum", + "hero-subtitle": "Ang educational guide mo sa mundo ng Ethereum. Alamin kung paano gumagana ang Ethereum at kung paano kumonekta dito. May mga teknikal at hindi teknikal na artikulo, gabay, at mga resource sa page na ito.", + "hero-button-lets-get-started": "Magsimula na tayo", + "what-is-crypto-1": "Baka narinig mo na ang mga cryptocurrency, blockchain, at Bitcoin. Makakatulong ang mga link sa ibaba para malaman mo kung ano ang mga ito at ang kaugnayan ng mga ito sa Ethereum.", + "what-is-crypto-2": "Ang mga cryptocurrency, gaya ng Bitcoin, ay binibigyang-daan ang kahit sino na mag-transfer ng pera sa buong mundo. Nagagawa rin ito ng Ethereum, pero nagpapatakbo rin ito ng code na nagbibigay-daan sa mga tao na gumawa ng mga app at organisasyon. Resilient at flexible ito: puwedeng patakbuhin ang kahit anong computer program sa Ethereum. Magbasa pa at alamin kung paano magsimula:", + "what-is-ethereum-card-title": "Ano ang Ethereum?", + "what-is-ethereum-card-description": "Kung bago ka lang, magsimula dito upang malaman kung bakit mahalaga ang Ethereum.", + "what-is-ethereum-card-image-alt": "Ilustrasyon ng isang taong sumilip sa isang bazaar, na nilalayong kumatawan sa Ethereum.", + "what-is-eth-card-title": "Ano ang ETH?", + "what-is-eth-description": "Ang Ether (ETH) ang currency na ginagamit sa Ethereum network at mga app.", + "what-is-web3-card-title": "Ano ang Web3?", + "what-is-web3-card-description": "Ang Web3 ay isang model para sa internet valuing ownership ng iyong mga asset at identity.", + "additional-reading-more-on-ethereum-basics": "Iba pang detalye tungkol sa mga pangunahing kaalaman sa Ethereum", + "guides-hub-desc": "Mga Gabay: mga step-by-step na tagubilin sa paggamit ng Ethereum", + "quiz-hub-desc": "Quiz hub: subukan ang iyong kaalaman", + "additional-reading-what-are-smart-contracts": "Ano ang mga smart contract?", + "additional-reading-what-is-web3": "Ano ang web3?", + "additional-reading-ethereum-in-thirty-minutes": "Ethereum sa 30 minuto ni Vitalik Buterin", + "additional-reading-get-eth": "Alamin kung paano makakuha ng ETH", + "how-do-i-use-ethereum-1": "Ginagamit ng iba't ibang tao ang Ethereum sa iba't ibang paraan. Baka gusto mong mag-sign in sa isang app, patunayan ang iyong online identity, o mag-transfer ng ETH. Ang unang bagay na kakailanganin mo ay isang account. Ang pinakamadaling paraan para gumawa at mag-access ng account ay gumamit ng software na tinatawag na wallet.", + "what-is-a-wallet-card-title": "Ano ang wallet?", + "what-is-a-wallet-card-description": "Ang digital wallet ay parang mga totoong wallet; sino-store ng mga ito ang kailangan mo para patunayan ang iyong identity at makakuha ng access sa mga lugar na mahalaga sa iyo.", + "what-is-a-wallet-card-alt": "Ilustrasyon ng robot.", + "find-a-wallet-card-title": "Maghanap ng wallet", + "find-a-wallet-card-description": "Mag-browse ng mga wallet base sa mga feature na mahalaga sa iyo.", + "find-a-wallet-button": "Listahan ng mga wallet", + "crypto-security-basics-card-title": "Mga pangunahing kaalaman sa seguridad", + "crypto-security-basics-card-description": "Alamin kung paano matukoy ang mga scam at kung paano iwasan ang mga pinakakaraniwang pandaraya.", + "crypto-security-basics-card-button": "Manatiling secure", + "things-to-consider-banner-title": "Mga bagay na dapat isaalang-alang kapag gumagamit ng Ethereum", + "things-to-consider-banner-1": "Ang bawat transaksyon sa Ethereum ay kailangang bayaran ng ETH, kahit kailangan mong maglipat ng iba't ibang token na ginawa sa Ethereum tulad ng mga stablecoin na USDC o DAI.", + "things-to-consider-banner-2": "Puwedeng mahal ang mga bayarin depende sa bilang ng mga taong sumusubok na gumamit ng Ethereum, kaya inirerekomenda naming gumamit ng mga", + "things-to-consider-banner-layer-2": "Layer 2", + "additional-reading-more-on-using-ethereum": "Iba pang detalye tungkol sa Ethereum", + "additional-reading-how-to-create-an-ethereum-account": "Paano \"gumawa\" ng Ethereum account", + "additional-reading-how-to-use-a-wallet": "Paano gumamit ng wallet", + "additional-reading-layer-2": "Layer 2: pagbabawas ng mga bayarin sa transaksyon", + "what-is-ethereum-used-for-1": "Ang Ethereum ay nagdulot ng paggawa ng mga bagong produkto at serbisyong maaaring mapabuti ang iba't ibang aspeto ng ating buhay. Nasa unang yugto pa lang tayo pero maraming dapat abangan.", + "defi-card-title": "Desentralisadong paraang pang Pinansiyal (DeFi)", + "defi-card-description": "Tumingin ng alternatibong sistemang pinansyal na itinatag nang walang bangko at bukas sa lahat.", + "defi-card-button": "What is DeFi?", + "stablecoins-card-title": "Stablecoins", + "stablecoins-card-description": "Mga cryptocurrency na nakabatay sa halaga ng isang currency, commodity, o iba pang financial instrument.", + "stablecoins-card-button": "Ano ang mga stablecoin?", + "nft-card-title": "Non-fungible token (NFTs)", + "nft-card-description": "Kumakatawan sa pagmamay-ari sa mga natatanging item, mula sa sining hanggang sa mga titulo ng ari-arian at concert ticket.", + "nft-card-button": "Ano ang NFTs?", + "dao-card-title": "Decentralized Autonomous Organizations (DAOs)", + "dao-card-description": "Gumawa ng mga bagong paraan para pangasiwaan ang trabaho nang walang boss.", + "dao-card-button": "Ano ang mga DAO?", + "dapp-card-title": "Mga decentralized application (dapps)", + "dapp-card-description": "Gumawa ng digital economy ng mga peer-to-peer na serbisyo.", + "dapp-card-button": "I-explore ang mga dapps", + "emerging-use-cases-title": "Mga bagong use case", + "emerging-use-cases-description": "Mayroon ding iba pang kilalang industriyang ginagawa o pinapaganda ng Ethereum:", + "play-to-earn": "Mga play-to-earn game (P2E)", + "fundraising-through-quadratic-funding": "Pangangalap ng pondo sa pamamagitan ng Quadratic Funding", + "supply-chain-management": "Supply chain management", + "more-on-ethereum-use-cases": "Iba pang detalye tungkol sa mga use case ng Ethereum", + "more-on-ethereum-use-cases-link": "Blockchain sa mga umuunlad na bansa", + "strengthening-the-ethereum-network-description": "Makakatulong kang i-secure ang Ethereum at makakakuha ka ng mga reward habang sine-stake mo ang iyong ETH. May iba't ibang opsyon para sa staking depende sa iyong teknikal na kaalaman at sa dami ng iyong ETH.", + "staking-ethereum-card-title": "Staking sa Ethereum", + "staking-ethereum-card-description": "Alamin kung paano magsimulang i-stake ang iyong ETH.", + "staking-ethereum-card-button": "Magsimulang mag-stake", + "run-a-node-card-title": "Mag-run ng node", + "run-a-node-card-description": "Magkaroon ng mahalagang papel sa Ethereum network sa pamamagitan ng pagpapatakbo ng isang node.", + "learn-about-ethereum-protocol-description": "Para sa mga user na labis na interesado sa teknikal na bahagi ng Ethereum network.", + "energy-consumption-card-title": "Kinokonsumong enerhiya", + "energy-consumption-card-description": "Gaano karaming enerhiya ang ginagamit ng Ethereum?", + "energy-consumption-card-button": "Green ba ang Ethereum?", + "ethereum-upgrades-card-title": "Roadmap ng Ethereum", + "ethereum-upgrades-card-description": "Ginagawang mas scalable, secure, at sustainable ng roadmap ng Ethereum ang Ethereum.", + "ethereum-upgrades-card-button": "Tingnan ang roadmap", + "ethereum-whitepaper-card-title": "Ethereum WhitePaper", + "ethereum-whitepaper-card-description": "Ang orihinal na proposal ng Ethereum na isinulat ni Vitalik Buterin noong 2014.", + "ethereum-whitepaper-card-button": "Basahin ang whitepaper", + "more-on-ethereum-protocol-title": "Iba pang detalye tungkol sa Ethereum protocol", + "more-on-ethereum-protocol-ethereum-for-developers": "Ethereum para sa mga developer", + "more-on-ethereum-protocol-consensus": "Ang consensus mechanism ng Ethereum na batay sa patunay ng stake", + "more-on-ethereum-protocol-evm": "Ang embedded computer ng Ethereum (EVM)", + "more-on-ethereum-protocol-nodes-and-clients": "Mga node at mga client ng Ethereum", + "ethereum-community-description": "Ang tagumpay ng Ethereum ay bunga ng napakasipag na komunidad nito. Libo-libong inspirado at determinadong tao ang tumutulong na isulong ang mithiin ng Ethereum, habang nagbibigay rin ng seguridad sa network sa pamamagitan ng staking at governance. Sumali na sa amin!", + "community-hub-card-title": "Hub ng komunidad", + "community-hub-card-description": "Ang aming komunidad ay binubuo ng mga tao mula sa iba't ibang background.", + "community-hub-card-alt": "Ilustrasyon ng isang grupo ng mga manggagawang nagtutulungan.", + "community-hub-card-button": "Tumingin pa", + "get-involved-card-title": "Paano ako makakalahok?", + "get-involved-card-description": "Ikaw (oo, ikaw!) ay malugod na inaanyayahang mag-contribute sa Ethereum community.", + "online-communities-card-title": "Mga online na komunidad", + "online-communities-card-description": "Ang mga online community ay nagbibigay ng magandang pagkakataon upang magtanong ng mga mas partikular na tanong o makiisa.", + "online-communities-card-button": "Tingnan ang mga komunidad", + "books-about-ethereum": "Mga libro tungkol sa Ethereum", + "proof-of-stake-title": "Patunay ng Stake", + "proof-of-stake-description": "Setyembre 13, 2022 - Vitalik Buterin, Nathan Schneider", + "cryptopians-title": "Ang mga Cryptorians", + "cryptopians-description": "Pebrero 22, 2022 - Laura Shin", + "out-of-the-ether-title": "Mula sa Ether", + "out-of-the-ether-description": "Setyembre 29, 2022 - Matthew Leising", + "the-infinite-machine-title": "The Infinite Machine", + "the-infinite-machine-description": "Hulyo 14, 2020 - Camille Russo", + "mastering-ethereum-title": "Pag-aaral ng Ethereum", + "mastering-ethereum-description": "Disyembre 23, 2018 – Andreas M. Antonopoulos, Gavin Wood Ph.D.", + "podcasts-about-ethereum": "Mga podcast tungkol sa Ethereum", + "bankless-title": "Bankless", + "bankless-description": "Gabay sa Crypto finance", + "zeroknowledge-title": "Zero Knowledge", + "zeroknowledge-description": "Idinedetalye ang teknolohiyang magpapatakbo sa umuusbong na decentralized web at sa komunidad na bumubuo nito", + "green-pill-title": "Green Pill", + "green-pill-description": "Tinitingnan ang mga crypto-economic system na gumagawa ng positibong epekto sa mundo", + "unchained-title": "Unchained", + "unchained-description": "Idinedetalye ang mga taong bumubuo ng decentralized internet, mga detalye ng teknolohiyang ito na maaaring suportahan ang ating hinaharap, at ilan sa mga pinakakumplikadong usaping may kinalaman sa crypto, tulad ng regulasyon, seguridad, at privacy", + "the-daily-gwei-title": "Ang Daily Gwei", + "the-daily-gwei-description": "Balita, mga update, at pagsusuri sa Ethereum" } diff --git a/src/intl/fil/page-staking-deposit-contract.json b/src/intl/fil/page-staking-deposit-contract.json new file mode 100644 index 00000000000..a3426f1bd55 --- /dev/null +++ b/src/intl/fil/page-staking-deposit-contract.json @@ -0,0 +1,28 @@ +{ + "page-staking-deposit-contract-address": "Address ng deposit contract para sa staking", + "page-staking-deposit-contract-address-caption": "Nagdagdag kami ng mga space para mas madaling basahin ang mga address", + "page-staking-deposit-contract-address-check-btn": "Tingnan ang address ng deposit contract", + "page-staking-deposit-contract-checkbox1": "Ginamit ko na ang launchpad para i-set up ang aking Ethereum validator.", + "page-staking-deposit-contract-checkbox2": "Naiintindihan ko na kailangan kong gamitin ang launchpad para mag-stake. Hindi gagana ang mga simpleng pag-transfer sa address na ito.", + "page-staking-deposit-contract-checkbox3": "Ihahambing ko ang address ng deposit contract sa iba pang source.", + "page-staking-deposit-contract-confirm-address": "Kumpirmahin para malaman ang address", + "page-staking-deposit-contract-copied": "Nakopya ang address", + "page-staking-deposit-contract-copy": "Kopyahin ang address", + "page-staking-deposit-contract-etherscan": "Tingnan ang contract sa Etherscan", + "page-staking-deposit-contract-h2": "Hindi ka rito dapat mag-stake", + "page-staking-deposit-contract-launchpad": "Mag-stake gamit ang launchpad", + "page-staking-deposit-contract-launchpad-2": "Gamitin ang launchpad", + "page-staking-deposit-contract-meta-desc": "I-verify ang address ng deposit contract para sa Ethereum staking.", + "page-staking-deposit-contract-meta-title": "Address ng deposit contract para sa Ethereum staking", + "page-staking-deposit-contract-read-aloud": "Basahin nang malakas ang address", + "page-staking-deposit-contract-reveal-address-btn": "Ipakita ang address", + "page-staking-deposit-contract-staking": "Upang i-stake ang iyong ETH, kailangan mong gamitin ang espesyal na launchpad product at sundin ang mga tagubilin. Kapag ipinadala ang ETH sa address sa page na ito, hindi ka magiging staker at magreresulta ito sa isang hindi matagumpay na transaksyon.", + "page-staking-deposit-contract-staking-check": "Tingnan ang mga source na ito", + "page-staking-deposit-contract-staking-check-desc": "Inaasahan naming maraming pekeng address at scam na lumalabas. Upang maging ligtas, ihambing ang address ng staking contract na iyong ginagamit sa address sa page na ito. Inirerekomenda naming ihambing din ito sa iba pang mapagkakatiwalaang source.", + "page-staking-deposit-contract-staking-more-link": "Iba pa sa staking", + "page-staking-deposit-contract-stop-reading": "Itigil ang pagbabasa", + "page-staking-deposit-contract-subtitle": "Ito ang address para sa Ethereum staking contract. Gamitin ang page na ito upang kumpirmahing ipinapadala mo ang pondo sa tamang address kapag nagse-stake ka.", + "page-staking-deposit-contract-warning": "Tingnan nang mabuti ang bawat titik.", + "page-staking-deposit-contract-warning-2": "Hindi makakapagpadala ng pondo sa address na ito at hindi ka magiging staker kapag ginawa mo ito. Dapat mong sundin ang mga tagubilin sa launchpad.", + "page-staking-deposit-contract-title": "I-check ang deposit contract address" +} diff --git a/src/intl/fil/page-staking.json b/src/intl/fil/page-staking.json new file mode 100644 index 00000000000..2b11a3b6a2e --- /dev/null +++ b/src/intl/fil/page-staking.json @@ -0,0 +1,237 @@ +{ + "comp-withdrawal-comparison-current-title": "Mga kasalukuyang staker", + "comp-withdrawal-comparison-current-li-1": "Maaaring nagbigay na ng withdrawal address ang ilang user noong una nilang sine-set up ang kanilang deposit sa staking—wala nang kailangan pang gawin ang mga user na ito", + "comp-withdrawal-comparison-current-li-2": "Hindi nagbigay ang karamihan sa mga staker ng withdrawal address noong unang deposito, at kakailanganin nilang i-update ang kanilang mga kredensyal sa pag-withdraw. May mga tagubilin sa Staking Launchpad kung paano ito gawin", + "comp-withdrawal-comparison-current-p": "Puwede mong ilagay ang iyong validator index number dito para malaman kung kailangan mo pang i-update ang iyong mga kredensyal (makikita ito sa iyong client logs):", + "comp-withdrawal-comparison-new-title": "Mga bagong staker (hindi pa nagdedeposito)", + "comp-withdrawal-comparison-new-li-1": "Bilang default, ang mga bagong staker na gustong awtomatikong i-enable ang mga reward payment at ang withdrawal functionality ay dapat magbigay ng Ethereum withdrawal address na kinokontrol nila habang ginagawa ang kanilang mga key ng validator gamit ang Staking Deposit CLI tool", + "comp-withdrawal-comparison-new-li-2": "Hindi ito kinakailangan kapag nagdeposito, pero hindi na kakailanganing i-update ang mga key na ito sa ibang petsa para makuha ang pondo mo kapag ginawa na ito", + "comp-withdrawal-comparison-new-p": "Gagabayan ka ng Staking Launchpad sa buong onboarding sa staking.", + "comp-withdrawal-comparison-new-link": "Bisitahin ang Staking Launchpad", + "comp-withdrawal-credentials-placeholder": "Indeks ng Validator", + "comp-withdrawal-credentials-error": "Oops! I-double check ang validator index number at subukan ulit.", + "comp-withdrawal-credentials-upgraded-1": "Handa nang magsimulang tumanggap ng mga reward ang validator index {{validatorIndex}}!", + "comp-withdrawal-credentials-upgraded-2": "Mga kredensyal sa pag-withdraw na naka-link sa execution address:", + "comp-withdrawal-credentials-not-upgraded-1": "Kailangang i-upgrade ang validator na ito.", + "comp-withdrawal-credentials-not-upgraded-1-testnet": "Kailangang i-upgrade ang Goerli testnet validator.", + "comp-withdrawal-credentials-not-upgraded-2": "Kasalukuyang makikita ang mga tagubilin sa kung paano mag-upgrade sa Staking Launchpad", + "comp-withdrawal-credentials-verify-mainnet": "I-verify sa Mainnet", + "comp-withdrawal-credentials-verify-goerli": "I-verify sa Goerli", + "page-staking-withdrawals-when": "Shipped!", + "page-staking-image-alt": "Larawan ng Rhino mascot para sa staking launchpad.", + "page-staking-benefits-1-title": "Makakuha ng mga reward", + "page-staking-benefits-1-description": "Ibinibigay ang mga reward para sa mga pagkilos na tutulong sa network na maabot ang consensus. Makakatanggap ka ng mga reward para sa pagpapatakbo ng software na maaayos na nagba-batch ng mga transaksyon sa mga bagong block at sumusuri sa gawa ng iba pang validator dahil pinapanatili nitong tumatakbo nang secure ang chain.", + "page-staking-benefits-2-title": "Mas maigting na seguridad", + "page-staking-benefits-2-description": "Habang dumarami ang ETH na sine-stake, mas tumatatag ang network laban sa mga atake, dahil kailangan ng mas maraming ETH para kontrolin ang malaking bahagi ng network. Upang maging isang banta, kakailanganin mong pangasiwaan ang karamihan sa mga validator na nangangahulugang kakailanganin mong kontrolin ang malaking bahagi ng ETH sa system–ang dami no'n!", + "page-staking-benefits-3-title": "Mas napapanatiling", + "page-staking-benefits-3-description": "Hindi kailangang gumawa ng mga staker ng mga energy-intensive computation para sa patunay ng gawain para lumahok sa pag-secure sa network. Ibig sabihin nito, mapapatakbo ang mga staking node sa simpleng hardware na napakakaunti lang ang kinokonsumong enerhiya.", + "page-staking-benefits-3-link": "Iba pang detalye tungkol sa pagkonsumo ng enerhiya ng Ethereum", + "page-staking-description": "Ang staking ay tumutukoy sa pagdedeposito ng 32 ETH upang ma-activate ang software ng validator. Bilang validator, ikaw ang magiging responsable sa pag-store ng data, pagpoproseso ng mga transaksyon, at pagdadagdag ng mga bagong block sa blockchain. Papanatilihin nitong secure ang Ethereum para sa lahat at makakakuha ka ng bagong ETH habang isinasagawa ito.", + "page-staking-hero-title": "Paano i-stake ang iyong ETH", + "page-staking-hero-header": "Magkaroon ng mga reward habang sine-secure ang Ethereum", + "page-staking-hero-subtitle": "Ang staking ay public good para sa Ethereum ecosystem. Ang sinumang user na may kahit ilang ETH ay makakatulong na i-secure ang network at makakakuha ng mga reward habang isinasagawa ito.", + "page-staking-dropdown-home": "Staking home", + "page-staking-dropdown-solo": "Solo staking", + "page-staking-more-on-solo": "Iba pang detalye tungkol sa solo staking", + "page-staking-learn-more-solo": "Magbasa pa tungkol sa solo staking", + "page-staking-dropdown-saas": "Staking bilang serbisyo", + "page-staking-saas-with-abbrev": "Staking as a service (SaaS)", + "page-staking-more-on-saas": "Iba pang detalye tungkol sa staking as a service", + "page-staking-learn-more-saas": "Magbasa pa tungkol sa staking as a service", + "page-staking-dropdown-pools": "Pooled staking", + "page-staking-dropdown-withdrawals": "Tungkol sa mga withdrawal", + "page-staking-dropdown-dvt": "Distributed validator tech", + "page-staking-more-on-pools": "Iba pang detalye tungkol sa pooled staking", + "page-staking-learn-more-pools": "Magbasa pa tungkol sa pooled staking", + "page-staking-section-what-title": "Ano ang staking?", + "page-staking-section-what-link": "Alamin kung paano makakuha ng ETH", + "page-staking-section-why-title": "Bakit dapat i-stake ang iyong ETH?", + "page-staking-section-why-p1": "Nakadepende ito sa kung gaano kalaki ang kaya mong i-stake. Kailangan mo ng 32 ETH upang i-activate ang sarili mong validator, pero posible ring mag-stake ng mas kaunti dito.", + "page-staking-section-why-p2": "Tingnan ang mga opsyon sa ibaba at piliin ang pinakamainam para sa iyo, at para sa network.", + "page-staking-guide-title-coincashew-ethereum": "Gabay ng CoinCashew para sa Ethereum 2.0", + "page-staking-guide-title-somer-esat": "Somer Esat", + "page-staking-guide-title-rocket-pool": "Mga Node Operator ng Rocket Pool", + "page-staking-guide-description-linux": "Linux (CLI)", + "page-staking-guide-description-mac-linux": "Linux, macOS (CLI)", + "page-staking-hierarchy-solo-h2": "Solo home staking", + "page-staking-hierarchy-solo-pill-1": "Pinakamabisa", + "page-staking-hierarchy-solo-pill-2": "Ganap na kontrol", + "page-staking-hierarchy-solo-pill-3": "Kumpletong reward", + "page-staking-hierarchy-solo-pill-4": "Hindi Kailangang Umasa sa Third Party", + "page-staking-hierarchy-solo-p1": "Ang solo staking sa Ethereum ang pinakamainam na sitwasyon para sa staking. Ibinibigay nito ang kumpletong reward para sa pakikilahok, pinapaganda nito ang decentralization ng network, at hinding-hindi nito hihilinging ipaubaya sa iba ang pondo mo.", + "page-staking-hierarchy-solo-p2": "Ang mga nagpaplanong mag-solo staking ay dapat mayroong hindi bababa sa 32 ETH at nakalaang computer na nakakonekta sa internet ~24/7. Makakatulong kung may kaunting teknikal na kaalaman, pero mayroon nang mga madaling gamiting tool para tumulong na pasimplehin ang prosesong ito.", + "page-staking-hierarchy-saas-pill-1": "Ang Iyong 32 ETH", + "page-staking-hierarchy-saas-pill-2": "Ang mga key ng iyong validator", + "page-staking-hierarchy-saas-pill-3": "Ipinagkatiwalang operasyon ng node", + "page-staking-hierarchy-saas-p1": "Kung ayaw mo o hindi ka kumportableng mangasiwa ng hardware pero gusto mo pa ring i-stake ang iyong 32 ETH, binibigyang-daan ka ng mga opsyon sa staking-as-a-service na italaga ang mahirap na trabaho habang nakakakuha ka ng mga native na block reward.", + "page-staking-hierarchy-saas-p2": "Kadalasang ginagabayan ka ng mga opsyong ito sa paggawa ng set ng mga kredensyal ng validator, pag-upload ng iyong mga signing key sa mga ito, at pagdedeposito ng iyong 32 ETH. Binibigyang-daan nito ang serbisyo na mag-validate para sa iyo.", + "page-staking-hierarchy-saas-p3": "Sa paraang ito ng staking, kailangang magtiwala sa provider. Para malimitahan ang counter-party risk, kadalasang ikaw ang magtatabi ng mga key para ma-withdraw ang iyong ETH.", + "page-staking-hierarchy-pools-pill-1": "Mag-stake ng kahit anong halaga", + "page-staking-hierarchy-pools-pill-2": "Kumita ng mga gantimpala", + "page-staking-hierarchy-pools-pill-3": "Panatilih itong simple", + "page-staking-hierarchy-pools-pill-4": "Tinatangkilik", + "page-staking-hierarchy-pools-p1": "Mayroon na ngayong ilang pooling solution na tutulong sa mga user na wala o hindi kumportableng mag-stake ng 32 ETH.", + "page-staking-hierarchy-pools-p2": "Kasama sa mga opsyong ito ang kilala bilang 'liquid staking' na gumagamit ng ERC-20 liquidity token na kumakatawan sa iyong staked ETH.", + "page-staking-hierarchy-pools-p3": "Madaling makakaalis kahit kailan dahil sa liquid staking at ginagawa nitong kasing simple ng token swap ang staking. Pinapayagan din ng opsyong ito ang mga user na itabi ang kanilang mga asset sa sarili nilang Ethereum wallet.", + "page-staking-hierarchy-pools-p4": "Hindi native sa Ethereum network ang pooled staking. Mga third party ang gumagawa ng mga solution na ito, at may kanya-kanyang panganib ang mga ito.", + "page-staking-hierarchy-cex-h2": "Centralized exchanges", + "page-staking-hierarchy-cex-pill-1": "Pinakahindi mabisa", + "page-staking-hierarchy-cex-pill-2": "Pinakamatataas na trust assumption", + "page-staking-hierarchy-cex-p1": "Nagbibigay ang maraming centralized exchange ng mga serbisyo sa staking kung hindi ka pa kumportable sa pagtatabi ng ETH sa sarili mong wallet. Puwedeng gamiting fallback ang ito para kumita ka sa mga hawak mong ETH nang hindi masyadong nakatutok o napapagod.", + "page-staking-hierarchy-cex-p2": "Ang kapalit nito ay pinagsasama-sama ng mga centralized provider ang malalaking pool ng ETH para magpatakbo ng maraming validator. Ito ay maaaring mapanganib para sa network at sa mga user nito dahil gumagawa ito ng malaki at centralized na target at point of failure, at dahil dito, mas madaling mabibikitma ng mga atake o bug ang network.", + "page-staking-hierarchy-cex-p3": "Ayos lang kung hindi ka kumportableng pangasiwaan ang sarili mong mga key. Narito ang mga opsyong ito para sa iyo. Sa ngayon, tingnan ang aming wallets page, kung saan puwede mong simulang alamin kung paano mo magiging tunay na pagmamay-ari ang mga pondo mo. Kapag handa ka na, bumalik ka at i-level up ang staking game mo sa pamamagitan ng pagsubok sa isa sa mga serbisyo sa self-custody na pooled staking.", + "page-staking-hierarchy-subtext": "Kung napansin mo, maraming paraan para makilahok sa Ethereum staking. Iba't ibang user ang tina-target ng mga paraang ito, at sa pangkalahatan, natatangi ang lahat ng paraan at magkakaiba ang mga panganib, reward, at trust assumption ng mga ito. Mas decentralized, battle-tested at/o mapanganib ang ilan kaysa sa iba. Nagbibigay kami ng kaunting impormasyon sa mga tinatangkilik na page sa space, pero palaging mag-research bago magpadala ng ETH kahit saan.", + "page-staking-comparison-solo-saas": "Sa mga SaaS provider, kailangan mo pa ring magdeposito ng 32 ETH, pero hindi mo kailangang magpatakbo ng hardware. Karaniwang hindi ka mawawalan ng access sa mga key ng iyong validator, pero kailangan mo ring ibahagi ang iyong mga signing key para makakilos ang operator para sa iyong validator. Nagdaragdag ito ng tiwala na wala kapag nagpapatakbo ka ng sarili mong hardware, at hindi tulad ng solo staking sa tahanan hindi masyadong nakakatulong ang SaaS sa heograpikong distribusyon ng mga node. Kung hindi ka kumportableng magpatakbo ng hardware pero pinaplano mo pa ring mag-stake ng 32 ETH, maaaring mainam na opsyon para sa iyo ang paggamit ng SaaS provider.", + "page-staking-comparison-solo-pools": "Ang solo staking ay mas matrabaho kaysa sa staking gamit ang serbisyo ng pooling, pero nag-aalok ito ng ganap na access sa mga ETH reward at ganap na kontrol sa setup at seguridad ng iyong validator. Ang pooled staking ay mas madaling pasukin. Puwedeng mag-stake ang mga user ng kaunting ETH, hindi nila kailangang gumawa ng mga validator key, at hindi nila kailangan ng kahit anong hardware maliban sa standard na koneksyon sa internet. Sa tulong ng mga liquidity token, makakaalis sa staking bago ito i-enable sa antas ng protocol. Kung interesado ka sa mga feature na ito, maaaring bagay sa iyo ang pooled staking.", + "page-staking-comparison-saas-solo": "Kasama sa mga pagkakatulad ang pagkakaroon ng sarili mong mga key ng validator nang hindi kinakailangang mag-pool ng pondo, pero sa SaaS, magtitiwala ka sa third party, na posibleng kumilos sa mapaminsalang paraan o maging target ng atake o regulasyon. Kung nag-aalala ka sa mga trust assumption o panganib ng centralization na ito, ang pinakamainam na paraan ng self-sovereign staking ay solo staking.", + "page-staking-comparison-saas-pools": "Masasabing magkatulad ang mga ito dahil umaasa ka sa iba para patakbuhin ang validator client, pero hindi katulad ng SaaS, binibigyang-daan ka ng pooled staking na sumali gamit ang mas kaunting ETH. Kung pinaplano mong mag-stake ng wala pang 32 ETH, tingnan ang mga ito.", + "page-staking-comparison-pools-solo": "Sa pooled staking, mas madaling sumali kaysa sa solo staking, pero may kaakibat itong karagdagang panganib dahil ibinibigay ang lahat ng gawain sa third party, at magbabayad ka pa. Sa solo staking, ganap ang sovereignty at kontrol sa mga desisyon sa pagpili ng staking setup. Hindi kailangang ipaubaya ng mga staker ang kanilang mga key sa iba, at makakakuha sila ng mga kumpletong reward nang walang anumang middleman na makikihati.", + "page-staking-comparison-pools-saas": "Msasabing magkatulad ang mga ito dahil hindi ang mga staker ang mismong nagpapatakbo ng mga validator software, pero hindi tulad ng mga opsyon sa pooling, kailangan ng SaaS ang kumpletong deposito ng 32 ETH para mag-activate ng validator. Sa staker mapupunta ang mga reward, at karaniwang may bayarin kada buwan o ibang stake para magamit ang serbisyo. Kung gusto mo ng sarili mong mga key ng validator at pinaplano mong mag-stake ng hindi bababa sa 32 ETH, maaaring magandang opsyon para sa iyo ang paggamit ng SaaS provider.", + "page-staking-considerations-solo-1-title": "Buksan ang pinagmulan", + "page-staking-considerations-solo-1-description": "Ang essential code ay 100% open source at puwedeng i-fork at gamitin ng lahat", + "page-staking-considerations-solo-1-warning": "Closed source", + "page-staking-considerations-solo-2-title": "Sinuri", + "page-staking-considerations-solo-2-description": "Ang essential code ay sumailalim sa pormal na pagsusuri, at inilathala at mababasa ng lahat ang mga resulta nito", + "page-staking-considerations-solo-2-warning": "Wala", + "page-staking-considerations-solo-3-title": "Bug bounty", + "page-staking-considerations-solo-3-description": "Nagsagawa ng public bug bounty sa anumang essential code para gantimpalaan ang mga user para sa ligtas na pag-uulat at/o pag-aayos ng mga vulnerability", + "page-staking-considerations-solo-3-valid": "Kasalukuyang aktibo", + "page-staking-considerations-solo-3-caution": "Tapos na", + "page-staking-considerations-solo-4-title": "Battle tested", + "page-staking-considerations-solo-4-description": "Available at ginagamit ng publiko ang software sa loob ng nakasaad na panahon", + "page-staking-considerations-solo-4-valid": "Live > 1 taon", + "page-staking-considerations-solo-4-caution": "Live > 6 na buwan", + "page-staking-considerations-solo-4-warning": "Kaka-release lang", + "page-staking-considerations-solo-5-title": "Hindi Kailangang Umasa sa Third Party", + "page-staking-considerations-solo-5-description": "Hindi ipinagkakatiwala ang mga key ng validator sa sinupaman sa anumang pagkakataon sa lifecycle ng validator. Ang anumang smart contract na ginamit ay walang back door, hindi umaasa sa mga privileged na pahintulot para ma-execute.", + "page-staking-considerations-solo-5-warning": "Pagkakatiwalaan", + "page-staking-considerations-solo-6-title": "Permissionless", + "page-staking-considerations-solo-6-description": "Hindi kailangan ng mga user ng anumang espesyal na pahintulot para magpatakbo ng validator gamit ang software o serbisyo", + "page-staking-considerations-solo-6-valid": "Walang pahintulot", + "page-staking-considerations-solo-6-warning": "Kailangan ng pahintulot", + "page-staking-considerations-solo-7-title": "Multi-client", + "page-staking-considerations-solo-7-description": "Binibigyang-daan ng software ang mga user na pumili at magpalipat-lipat sa hindi bababa sa dalawa o higit pang execution client, at dalawa o higit pang consensus layer client", + "page-staking-considerations-solo-7-valid": "Madaling lumipat ng client", + "page-staking-considerations-solo-7-warning": "Limitado sa majority client", + "page-staking-considerations-solo-8-title": "Pag-iingat sa sarili", + "page-staking-considerations-solo-8-description": "Ang user ang magtatabi ng anumang kredensyal ng validator, kabilang ang mga signing at withdrawal key", + "page-staking-considerations-solo-8-warning": "Third-party custodian", + "page-staking-considerations-solo-9-title": "Ekonomikal", + "page-staking-considerations-solo-9-description": "Puwedeng magpatakbo ang mga user ng validator sa pamamagitan ng pag-stake ng wala pang 32 ETH, at paggamit ng pooled funds galing sa iba", + "page-staking-considerations-solo-9-valid": "< 32 ETH", + "page-staking-considerations-solo-9-warning": "32 ETH", + "page-staking-considerations-saas-4-description": "Available at ginagamit ng publiko ang serbisyo sa loob ng nakasaad na panahon", + "page-staking-considerations-saas-6-description": "Hindi kailangan ng mga user ng anumang espesyal na pahintulot, pag-sign up sa account, o KYC para sumali sa serbisyo", + "page-staking-considerations-saas-6-valid": "Puwedeng sumali ang kahit sino", + "page-staking-considerations-saas-6-warning": "Kailangan ng pahintulot", + "page-staking-considerations-saas-7-title": "Iba't ibang pagsasagawa", + "page-staking-considerations-saas-7-description": "Hindi dapat magpatakbo ang serbisyo ng mahigit 50% ng mga aggregate validator nito sa majority execution client", + "page-staking-considerations-saas-7-valid": "Wala pang 50%", + "page-staking-considerations-saas-7-caution": "Kasalukuyang hindi alam", + "page-staking-considerations-saas-7-warning": "Mahigit 50%", + "page-staking-considerations-saas-8-title": "Consensus diversity", + "page-staking-considerations-saas-8-description": "Hindi dapat magpatakbo ang serbisyo ng mahigit 50% ng mga aggregate validator nito sa majority consensus client", + "page-staking-considerations-saas-8-valid": "Wala pang 50%", + "page-staking-considerations-saas-8-caution": "Kasalukuyang hindi alam", + "page-staking-considerations-saas-8-warning": "Mahigit 50%", + "page-staking-considerations-pools-5-description": "Hindi kailangang umasa ng serbisyo sa sinumang tao para pangasiwaan ang iyong mga key o mamahagi ng mga reward", + "page-staking-considerations-pools-6-title": "Mga permissionless node", + "page-staking-considerations-pools-6-description": "Pinapayagan ng serbisyo ang kahit sino na sumali bilang node operator para sa pool, nang walang pahintulot", + "page-staking-considerations-pools-7-description": "Hindi dapat magpatakbo ang serbisyo ng mahigit 50% ng mga aggregate validator nito sa majority execution client", + "page-staking-considerations-pools-8-title": "Liquidity token", + "page-staking-considerations-pools-8-description": "Nag-aalok ng nate-trade na liquidity token na kumakatawan sa iyong staked ETH, na pinangangasiwaan sa sarili mong wallet", + "page-staking-considerations-pools-8-valid": "(Mga) liquidity token", + "page-staking-considerations-pools-8-warning": "Walang liquidity token", + "page-staking-considerations-pools-9-description": "Hindi dapat magpatakbo ang serbisyo ng mahigit 50% ng mga aggregate validator nito sa majority consensus client", + "page-staking-how-solo-works-item-1": "Kumuha ng hardware: Kailangan mong magpatakbo ng node para mag-stake", + "page-staking-how-solo-works-item-2": "Mag-sync ng execution layer client", + "page-staking-how-solo-works-item-3": "Mag-sync ng consensus layer client", + "page-staking-how-solo-works-item-4": "Gawin ang mga key mo at i-load ang mga ito sa iyong validator client", + "page-staking-how-solo-works-item-5": "I-monitor at pangalagaan ang iyong node", + "page-staking-launchpad-widget-testnet-label": "Goerli testnet", + "page-staking-launchpad-widget-testnet-start": "Magsimulang mag-stake sa Goerli testnet", + "page-staking-launchpad-widget-mainnet-label": "Mainnet", + "page-staking-launchpad-widget-mainnet-start": "Magsimulang mag-stake sa Mainnet", + "page-staking-launchpad-widget-span": "Pumili ng network", + "page-staking-launchpad-widget-p1": "Ang mga solo validator ay inaasahang i-test ang setup nila at mga kasanayan sa operasyon sa Goerli testnet bago itaya ang pondo. Tandaang mahalagang pumili ng minority client dahil pinapaigting nito ang seguridad ng network at nililimitahan nito ang posibilidad na manganib ka.", + "page-staking-launchpad-widget-p2": "Kung kumportable kang gawin ito, puwede mong i-set up ang lahat ng kailangan mula sa command line gamit lang ang Staking Launchpad.", + "page-staking-launchpad-widget-p3": "Para mas mapadali, tingnan ang ilan sa mga tool at gabay sa ibaba na makakatulong sa iyo, pati na rin ang Staking Launchpad para ma-set up ang iyong mga client nang walang kahirap-hirap.", + "page-staking-launchpad-widget-link": "Mga tool at gabay sa software", + "page-staking-products-get-started": "Get started", + "page-staking-dropdown-staking-options": "Mga Opsyon sa Staking", + "page-staking-dropdown-staking-options-alt": "Dropdown menu ng mga opsyon sa staking", + "page-staking-stats-box-metric-1": "Kabuuang halaga ng ETH na na-stake", + "page-staking-stats-box-metric-2": "Kabuuang bilang ng mga validator", + "page-staking-stats-box-metric-3": "Kasalukuyang APR", + "page-staking-stats-box-metric-1-tooltip": "Kabuuang halaga ng ETH na na-stake sa Beacon Chain, maliban sa mga balanseng mahigit 32 ETH", + "page-staking-stats-box-metric-2-tooltip": "Bilang ng mga validator account na kasalukuyang naka-activate sa Beacon Chain", + "page-staking-stats-box-metric-3-tooltip": "Average na annualized financial return kada validator sa nakalipas na 24 na oras", + "page-staking-section-comparison-subtitle": "Walang nag-iisang solution na babagay sa lahat pagdating sa staking, at natatangi ang bawat isa sa mga ito. Dito, ihahambing natin ang ilan sa mga panganib, reward, at kahingian ng iba't ibang paraan ng pag-stake.", + "page-staking-section-comparison-rewards-title": "Mga Reward", + "page-staking-section-comparison-solo-rewards-li1": "Maximum rewards - matanggap ang kumpletong reward nang direkta mula sa protocol", + "page-staking-section-comparison-solo-rewards-li2": "Makakatanggap ka ng mga reward para sa pag-batch ng mga transaksyon sa isang bagong block o pagsusuri sa gawa ng iba pang validator para panatilihing secure na tumatakbo ang chain", + "page-staking-section-comparison-solo-rewards-li3": "Matatanggap mo rin ang mga hindi nagamit na bayarin sa transaksyon para sa mga block na imumungkahi mo", + "page-staking-section-comparison-saas-rewards-li1": "Kadalasang makukuha dito ang kumpletong protocol reward nang ibinawas ang buwanang bayarin para sa operasyon ng node", + "page-staking-section-comparison-saas-rewards-li2": "Madalas na available ang mga dashboard para madali mong masubaybayan ang iyong validator client", + "page-staking-section-comparison-pools-rewards-li1": "Iba ang paraan ng pagkakamit ng mga reward ng mga pooled staker, depende sa paraan ng pooled staking na pinili", + "page-staking-section-comparison-pools-rewards-li2": "Maraming serbisyo sa staking ang nag-aalok ng isa o higit pang liquidity token na kumakatawan sa iyong staked ETH at sa iyong share ng mga validator reward", + "page-staking-section-comparison-pools-rewards-li3": "Ang mga liquidity token ay maaaring pangasiwaan sa sarili mong wallet, gamitin sa DeFi, at ibenta kung magpapasya kung umalis", + "page-staking-section-comparison-risks-title": "风险", + "page-staking-section-comparison-solo-risks-li1": "Naka-stake ang ETH mo", + "page-staking-section-comparison-solo-risks-li2": "May mga penalty na babayaran gamit ang ETH kapag nag-offline ka", + "page-staking-section-comparison-solo-risks-li3": "Maaaring magresulta ang mapaminsalang kagawian sa 'pag-slash' ng malalaking halaga ng ETH at puwersahang pagtatanggal sa network", + "page-staking-section-comparison-saas-risks-li1": "Kapareho ng mga panganib ng solo staking, at counter-party risk ng service provider", + "page-staking-section-comparison-saas-risks-li2": "Ipinagkakatiwala ang paggamit ng iyong mga signing key sa ibang taong puwedeng kumilos sa mapaminsalang paraan", + "page-staking-section-comparison-pools-risks-li1": "Nag-iiba-iba ang mga panganib depede sa paraang ginamit", + "page-staking-section-comparison-pools-risks-li2": "Sa pangkalahatan, ang mga panganib ay binubuo ng kumbinasyon ng counter-party, smart contract at execution risk", + "page-staking-section-comparison-requirements-title": "Mga Kahingian", + "page-staking-section-comparison-solo-requirements-li1": "Dapat kang magdeposito ng 32 ETH", + "page-staking-section-comparison-solo-requirements-li2": "Pangalagaan ang hardware na nagpapatakbo ng Ethereum execution client at consensus client habang nakakonekta sa internet", + "page-staking-section-comparison-solo-requirements-li3": "Gagabayan ka ng Staking Launchpad sa buong proseso at sa mga kahingian sa hardware", + "page-staking-section-comparison-saas-requirements-li1": "Magdeposito ng 32 ETH at gawin ang iyong mga key nang may tulong", + "page-staking-section-comparison-saas-requirements-li2": "I-store nang maayos ang iyong mga key", + "page-staking-section-comparison-saas-requirements-li3": "Hindi mo na kailangang problemahin ang iba pa, bagama't mag-iiba-iba ang mga partikular na serbisyo", + "page-staking-section-comparison-pools-requirements-li1": "Pinakamababang halaga ng ETH ang kinakailangan, 0.01 ETH lang ang kailangan sa ilang proyekto", + "page-staking-section-comparison-pools-requirements-li2": "Direktang magdeposito mula sa iyong wallet sa ibang mga pooled staking platform o i-trade lang para sa isa sa mga staking liquidity token", + "page-staking-faq-1-question": "Ano ang validator?", + "page-staking-faq-1-answer": "Ang validator ay isang virtual entity sa Ethereum at lumalahok sa consensus ng Ethereum protocol. Ang mga validator ay kinakatawan ng balanse, pampublikong key, at iba pang property. Ang validator client ang software na kumikilos para sa validator sa pamamagitan ng pangangasiwa at paggamit sa pribadong key nito. Puwedeng mangasiwa ng maraming pares ng key ang isang validator client, na nagkokontrol ng maraming validator.", + "page-staking-faq-2-question": "Bakit ko kailangang mag-stake ng pondo?", + "page-staking-faq-2-answer": "Ang validator ay may kakayahang magmungkahi at magpatunay sa mga block para sa network. Para maiwasan ang hindi matapat na kagawian, dapat i-stake ng mga user ang kanilang pondo. Binibigyang-daan nito ang protocol na parusahan ang mga mapaminsalang actor. Ang staking ay isang paraan para manatili kang matapat, dahil magkakaroon ng pinansyal na epekto ang iyong mga pagkilos.", + "page-staking-faq-3-question": "Maaari ba akong bumili ng 'Eth2'?", + "page-staking-faq-3-answer-p1": "Walang 'Eth2' token na native sa protocol, dahil hindi nagbago ang native token na ether (ETH) noong lumipat sa patunay ng stake ang Ethereum.", + "page-staking-faq-3-answer-p2": "May mga derivative token/ticker na puwedeng kumatawan sa staked ETH (ibig sabihin, rETH mula sa Rocket Pool, stETH mula sa Lido, ETH2 mula sa Coinbase). Magbasa pa tungkol sa mga staking pool", + "page-staking-faq-4-question": "Live na ba ang staking?", + "page-staking-faq-4-answer-p1": "Oo. Live na mula pa noong Disyembre 1, 2020 ang staking", + "page-staking-faq-4-answer-p2": "Ito ay nangangahulugang kasalukyang live ang staking para magawa ng mga user na ideposito ang kanilang ETH, magpatakbo ng validator client, at magsimulang makakuha ng mga reward.", + "page-staking-faq-4-answer-p3": "Ang Shanghai/Capella upgrade ay natapos noong Abril 12, 2023. Dahil dito, puwede nang mag-withdraw sa staking, na siyang nagpakumpleto sa liquidity ng staking.", + "page-staking-faq-5-question": "Kailan ko puwedeng i-withdraw ang aking staked ETH?", + "page-staking-faq-5-answer-p1": "Ngayon na! Malaya ang mga staker na i-withdraw ang kanilang mga reward at/o principle deposit \n sa kanilang validator balance kung gusto nila itong gawin.", + "page-staking-faq-5-answer-p2": "Makakakuha rin ang mga staker ng mga reward sa anyo ng mga bayarin at MEV kapag nagmumungkahi ng mga block, na agad na magiging available sa pamamagitan ng itinakdang address na tatanggap ng bayarin.", + "page-staking-faq-5-answer-link": "Iba pang detalye tungkol sa mga pag-withdraw sa staking", + "page-staking-further-reading-1-link": "Bakit Dapat Gamitin ang Patunay ng Stake (Nob 2020)", + "page-staking-further-reading-author-vitalik-buterin": "Vitalik Buterin", + "page-staking-further-reading-2-link": "Serenity Design Rationale", + "page-staking-further-reading-3-link": "FAQ sa Patunay ng Stake (Dis 2017)", + "page-staking-further-reading-4-link": "Balita tungkol sa Eth2", + "page-staking-further-reading-4-author": "Ben Edgington", + "page-staking-further-reading-5-link": "Finalized no. 33, ang Ethereum consensus-layer (Enero 2022)", + "page-staking-further-reading-5-author": "Danny Ryan", + "page-staking-further-reading-6-link": "Mga Post na Patunay", + "page-staking-further-reading-7-link": "Knowledge Base ng Beaconcha.in", + "page-staking-further-reading-8-link": "Mga Edukasyonal na Materyal mula sa Komunidad ng Beaconcha.in", + "page-staking-further-reading-9-link": "FAQ sa Ethereum Staking Launchpad", + "page-staking-further-reading-10-link": "Knowledge base ng EthStaker", + "page-staking-toc-how-to-stake-your-eth": "Paano i-stake ang iyong ETH", + "page-staking-toc-comparison-of-options": "Paghahambing ng opsyon sa staking", + "page-staking-toc-faq": "FAQ", + "page-staking-toc-further": "Karagdagang pagbabasa", + "page-staking-dom-info-title": "Staking gamit ang Ethereum", + "page-staking-join-community": "Sumali sa komunidad ng staker", + "page-staking-join-community-desc": "Ang EthStaker ay isang komunidad kung saan mapag-uusapan at matututunan ng lahat ang staking sa Ethereum. Samahan ang libo-libong miyembro mula sa iba't ibang bahagi ng mundo para sa payo, suporta, at para mapag-usapan ang lahat ng bagay tungkol sa staking.", + "page-staking-meta-description": "Pangkalahatang-ideya ng Ethereum staking: ang mga panganib, reward, kahingian, at kung saan ito dapat gawin.", + "page-staking-meta-title": "Ethreum staking", + "page-staking-withdrawals-important-notices": "Mahahalagang paunawa", + "page-staking-withdrawals-important-notices-desc": "Hindi pa available ang mga withdrawal. Basahin ang Eth2 FAQ sa merge at post-merge para sa iba pang impormasyon.", + "page-upgrades-merge-btn": "Dagdag impormasyon tungkol sa The Merge", + "subscribe-to-ef-blog": "Mag-subscribe sa EF Blog para makatanggap ng mga email notification para sa mga pinakabagong anunsyo tungkol sa protocol." +} diff --git a/src/intl/fil/page-wallets-find-wallet.json b/src/intl/fil/page-wallets-find-wallet.json index 585c433e672..919b7264163 100644 --- a/src/intl/fil/page-wallets-find-wallet.json +++ b/src/intl/fil/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Mga filter ng feature", "page-find-wallet-footnote-1": "Hindi mga opisyal na endorsement ang mga wallet na nakalista sa page na ito, at ibinibigay ang mga ito para sa pagbibigay lang ng kaalaman.", "page-find-wallet-footnote-2": "Ibinigay ang mga paglalarawan ng mga ito ng mga proyekto ng wallet mismo.", - "page-find-wallet-footnote-3": "Nagdaragdag kami ng mga produkto sa page na ito base sa pamantayan sa aming patakaran sa paglilista. Kung gusto mong magdagdag kami ng wallet, maghain ng isyu sa GitHub.", + "page-find-wallet-footnote-3": "Nagdaragdag kami ng mga produkto sa page na ito base sa pamantayan sa aming patakaran sa paglilista. Kung gusto mong magdagdag kami ng wallet, maghain ng isyu sa GitHub.", "page-find-wallet-mobile": "Mobile", "page-find-wallet-mobile-desc": "Mga wallet na may mga mobile app", "page-find-wallet-desktop": "Desktop", diff --git a/src/intl/fr/learn-quizzes.json b/src/intl/fr/learn-quizzes.json index f3055c1a121..a983a06bc27 100644 --- a/src/intl/fr/learn-quizzes.json +++ b/src/intl/fr/learn-quizzes.json @@ -1,3 +1,328 @@ { - "page-assets-merge": "La Fusion" + "add-quiz": "Ajouter une question", + "average-score": "Score moyen :", + "basics": "Les bases d'Ethereum", + "basics-description": "Cette section couvre les concepts fondamentaux d'Ethereum, vous assurant d'avoir des bases solides.", + "completed": "Complété:", + "community-stats": "Statistiques de la communauté", + "contribute": "Contribuer à notre bibliothèque.", + "correct": "Correct", + "explanation": "Explication", + "next-question": "Question suivante", + "next-quiz": "Question suivante", + "page-assets-merge": "La Fusion", + "passed": "Vous avez réussi le quiz !", + "questions": "Des questions ", + "questions-answered": "Questions répondues :", + "quizzes-subtitle": "Découvrez à quel point vous comprenez Ethereum et les crypto-monnaies. Êtes-vous prêt à devenir un expert ?", + "retry": "Taux de réessai :", + "score": "Score", + "see-results": "Voir les résultats", + "share-results": "Partager les résultats", + "start": "Début", + "submit-answer": "Voir la solution", + "test-your-knowledge": "Tester vos connaissances sur Ethereum", + "try-again": "Veuillez réessayer.", + "using-ethereum": "Utiliser Ethereum", + "using-ethereum-description": "Découvrez les cas concrets d'utilisation d'Ethereum et comment cette blockchain révolutionnaire redéfinit le monde des industries. C'est un excellent moyen de vous assurer que vous avez une bonne compréhension avant de commencer à utiliser activement les cryptomonnaies.", + "want-more-quizzes": "Souhaitez-vous voir plus de quiz ici ?", + "your-results": "Votre résultat", + "your-total": "Votre total des points", + "a001-prompt": "La plus grande différence entre Ethereum et Bitcoin est :", + "a001-a-label": "Ethereum ne vous permet pas d'effectuer des paiements à d'autres personnes", + "a001-a-explanation": "Bitcoin et Ethereum vous permettent d'effectuer des paiements à d'autres personnes.", + "a001-b-label": "Vous pouvez exécuter des programmes sur Ethereum", + "a001-b-explanation": "Ethereum est programmable. Cela signifie que vous pouvez mettre n'importe quel programme sur la blockchain Ethereum.", + "a001-c-label": "Vous pouvez exécuter des programmes sur Bitcoin", + "a001-c-explanation": "Contrairement à Ethereum, Bitcoin n'est pas programmable et ne peut exécuter des programmes arbitraires.", + "a001-d-label": "Ils ont des logos différents", + "a001-d-explanation": "Ils ont des logos différents ! Mais ce n’est pas la plus grande différence entre eux.", + "a002-prompt": "La cryptomonnaie native d'Ethereum est appelée :", + "a002-a-label": "Ether", + "a002-a-explanation": "Ether est la cryptomonnaie native du réseau Ethereum.", + "a002-b-label": "Ethereum", + "a002-b-explanation": "Ethereum est la blockchain, mais sa monnaie native n'est pas appelée Ethereum. C'est une idée erronée courante.", + "a002-c-label": "Ethercoin", + "a002-c-explanation": "Contrairement à de nombreuses autres cryptomonnaies, la cryptomonnaie native d'Ethereum ne contient pas le mot « coin ».", + "a002-d-label": "Bitcoin", + "a002-d-explanation": "Bitcoin (B majuscule) a été la première blockchain créée, bitcoin (B minuscule) est sa cryptomonnaie native.", + "a003-prompt": "Qui est à la tête d'Ethereum ?", + "a003-a-label": "Développeurs", + "a003-a-explanation": "Les développeurs sont essentiels à la construction et l'amélioration d'Ethereum, mais leur rôle n'est pas de faire fonctionner Ethereum.", + "a003-b-label": "Mineurs", + "a003-b-explanation": "Le minage n'est plus possible depuis la fusion. Il n'y a plus de \"mineurs\" sur Ethereum.", + "a003-c-label": "L'Ethereum Foundation", + "a003-c-explanation": "L'Ethereum Foundation ne joue aucun rôle significatif dans le fonctionnement quotidien des nœuds Ethereum.", + "a003-d-label": "Toute personne exécutant un nœud", + "a003-d-explanation": "Toute personne exécutant un nœud est essentielle à l'infrastructure d'Ethereum. Si ce n'est pas encore le cas, vous devriez envisager d'exécuter un nœud Ethereum.", + "a004-prompt": "Depuis le lancement d'Ethereum, combien de fois le réseau a été hors ligne ?", + "a004-a-label": "Jamais", + "a004-b-label": "Une fois", + "a004-c-label": "Quatre fois", + "a004-d-label": "Plus de dix fois", + "a004-explanation": "Ethereum n'a jamais été complètement hors ligne (arrêt de la production de blocs) depuis son lancement.", + "a005-prompt": "Ethereum consomme plus d'électricité que :", + "a005-a-label": "Extraction d'or", + "a005-a-explanation": "L'extraction d'or utilise environ ~131 térawatt-heures par an. Ethereum consomme environ ~0,0026 térawatt-heures par an.", + "a005-b-label": "Netflix", + "a005-b-explanation": "Netflix utilise environ ~0,451 térawattheures par an, tandis qu'Ethereum en consomme environ ~0,0026 térawattheures par an.", + "a005-c-label": "PayPal", + "a005-c-explanation": "PayPal utilise environ ~0,26 térawatt-heures par an, tandis qu'Ethereum en consomme environ ~0,0026 térawatt-heures par an.", + "a005-d-label": "Aucune de ces réponses", + "a005-d-explanation": "Ethereum consomme environ 0,0026 térawatt-heures par an, soit moins que l'exploitation aurifère (~131 TWh/an), Netflix (~0,451 TWh/an) et PayPal (~0,26 TWh/an).", + "b001-prompt": "L'Ether est également connu sous le nom de :", + "b001-a-label": "ETC", + "b001-a-explanation": "ETC est le symbole d'Ethereum Classic.", + "b001-b-label": "ETR", + "b001-b-explanation": "ETR n'est pas un symbole pour l'ether ou pour toute autre cryptomonnaie.", + "b001-c-label": "ETH", + "b001-c-explanation": "ETH est le symbole pour ether sur Ethereum.", + "b001-d-label": "BTC", + "b001-d-explanation": "BTC est le symbole bitcoin du réseau Bitcoin.", + "b002-prompt": "Sur Ethereum, les frais de réseau sont payés en :", + "b002-a-label": "bitcoin", + "b002-a-explanation": "Le \"bitcoin\" en minuscules est la cryptomonnaie native du réseau Bitcoin.", + "b002-b-label": "ETH", + "b002-b-explanation": "L'Ether (ETH) est la cryptomonnaie native d'Ethereum. Tous les frais sur Ethereum sont payés en ETH.", + "b002-c-label": "USD", + "b002-c-explanation": "Il n'est pas possible de payer les frais de réseau sur Ethereum en USD (dollars américains), ou toute autre monnaie fiduciaire.", + "b002-d-label": "Ethereum", + "b002-d-explanation": "Ethereum est le réseau, mais les frais de réseau d'Ethereum sont payés en ETH.", + "b003-prompt": "Mettre en jeu de l'Ethereum (staking) permet de sécuriser le réseau car :", + "b003-a-label": "Les validateurs peuvent bannir des personnes s'ils n'aiment pas ce qu'ils font", + "b003-a-explanation": "Les validateurs ne sont pas habilités à censurer arbitrairement les utilisateurs.", + "b003-b-label": "Si un validateur essaie de tromper le réseau, il risque de perdre son ETH.", + "b003-b-explanation": "Les validateurs risquent de perdre une part importante de leur ETH s'ils se comportent de manière malveillante contre le réseau. C'est ce qu'on appelle le slashing.", + "b003-c-label": "Les validateurs font fonctionner des ordinateurs puissants pour la preuve de travail (proof-of-work)", + "b003-c-explanation": "Les validateurs n'ont pas besoin de matériel puissant pour mettre en jeu leur ETH. Ethereum a arrêté d'utiliser la preuve de travail depuis la fusion.", + "b003-d-label": "Les validateurs sont soumis à une procédure KYC avant d'être acceptés en tant que validateurs", + "b003-d-explanation": "La mise en jeu sur Ethereum se fait sans autorisation et ne nécessite pas le KYC.", + "b004-prompt": "L'ETH est précieux car :", + "b004-a-label": "L'ETH est indispensable pour tout sur Ethereum", + "b004-a-explanation": "Cette réponse est partiellement correcte, mais ce n'est qu'une des raisons de la valeur de l'ETH.", + "b004-b-label": "L'ETH est une monnaie par-à-pair non censurable", + "b004-b-explanation": "Cette réponse est partiellement correcte, mais ce n'est qu'une des raisons de la valeur de l'ETH.", + "b004-c-label": "L'ETH est utilisé comme collatéral pour les prêts de crypto-monnaie", + "b004-c-explanation": "Cette réponse est partiellement correcte, mais ce n'est qu'une des raisons de la valeur de l'ETH.", + "b004-d-label": "Toutes ces réponses", + "b004-d-explanation": "Les transactions Ethereum ne peuvent pas être censurées, l'ETH est requis pour effectuer toute transaction sur Ethereum et il est essentiel à la stabilité de l'écosystème DeFi.", + "c001-prompt": "Le Web3 permet aux utilisateurs de posséder des actifs numériques directement à travers :", + "c001-a-label": "DAO", + "c001-a-explanation": "Les DAO (organisations autonomes décentralisées) sont des communautés contrôlées par leurs membres et sans direction centralisée.", + "c001-b-label": "NFTs", + "c001-b-explanation": "Les NFT (jetons non fongibles) permettent de représenter tout ce qui est unique en tant qu'actif basé sur Ethereum.", + "c001-c-label": "ENS", + "c001-c-explanation": "ENS (Ethereum Name Service) est un service de nommage décentralisé pour la blockchain Ethereum.", + "c001-d-label": "GitHub", + "c001-d-explanation": "GitHub est une plateforme centralisée principalement destinée à stocker du code à l'aide d'un système de contrôle de version distribué. GitHub ne permet pas la propriété de vos données ou de vos actifs numériques.", + "c002-prompt": "Le Web1 était en lecture seule, le Web2 en lecture-écriture et le Web3 est considéré :", + "c002-a-label": "lecture-écriture-vente", + "c002-a-explanation": "Le Web3 n'a pas été décrit de cette manière.", + "c002-b-label": "lecture-écriture-stockage", + "c002-b-explanation": "Le Web3 n'a pas été décrit de cette manière.", + "c002-c-label": "lecture-écriture-propriété", + "c002-c-explanation": "Le Web3 permet aux utilisateurs de posséder leurs données, c'est pourquoi il a été décrit comme étant en « lecture-écriture-propriété », une amélioration par rapport au Web2, qui est uniquement en « lecture-écriture ».", + "c002-d-label": "lecture-écriture-achat", + "c002-d-explanation": "Le Web3 n'a pas été décrit de cette manière.", + "c003-prompt": "Quelle itération du web ne dépend pas de fournisseurs de paiement tiers ?", + "c003-a-label": "Web1", + "c003-a-explanation": "Le Web1 ne disposait pas de paiements natifs intégrés.", + "c003-b-label": "Web2", + "c003-b-explanation": "Le Web2 ne dispose pas de paiements natifs intégrés.", + "c003-c-label": "Web3", + "c003-c-explanation": "Le Web3 dispose d'un système paiement natif intégré grâce aux cryptomonnaies, telles que l'ETH.", + "c003-d-label": "Toutes ces réponses", + "c003-d-explanation": "Le Web1 et le Web2 n'ont pas de moyens paiements nativement intégrés.", + "c004-prompt": "La première utilisation du terme \"Web3\" a été attribuée à :", + "c004-a-label": "Gavin Wood", + "c004-a-explanation": "Gavin Wood, co-fondateur d'Ethereum, est crédité du terme Web3 peu après le lancement d'Ethereum en 2015.", + "c004-b-label": "Steve Jobs", + "c004-b-explanation": "Steve Jobs n'a pas inventé le terme \"Web3\".", + "c004-c-label": "Vitalik Buterin", + "c004-c-explanation": "Vitalik Buterin, bien qu'étant le fondateur original d'Ethereum, n'a pas inventé le terme \"Web3\".", + "c004-d-label": "Elon Musk", + "c004-d-explanation": "Elon Musk n'a pas inventé le terme \"Web3\".", + "c005-prompt": "Vous pouvez avoir une connexion unique et résistante à la censure sur tout le Web en utilisant :", + "c005-a-label": "Connexion via Facebook", + "c005-a-explanation": "La connexion avec Facebook n'est pas résistante à la censure.", + "c005-b-label": "Connexion via Google", + "c005-b-explanation": "La connexion avec Google n'est pas résistante à la censure.", + "c005-c-label": "Connectez-vous avec Ethereum", + "c005-c-explanation": "La connexion avec Ethereum est la seule option qui soit résistante à la censure et utilisable sur n'importe quelle application Web.", + "c005-d-label": "Se connecter avec Twitter", + "c005-d-explanation": "\"Se connecter avec Twitter\" n'est pas anti-censure.", + "d001-prompt": "Le type de portefeuille le plus sécurisé est :", + "d001-a-label": "Un portefeuille mobile", + "d001-a-explanation": "Les portefeuilles mobiles conservent les clés privées sur un appareil mobile, qui a généralement une connexion à Internet et qui pourrait donc être compromis par d'autres logiciels.", + "d001-b-label": "Un portefeuille matériel", + "d001-b-explanation": "Les clés privées d'un portefeuille matériel sont stockées sur un appareil dédié qui peut être coupé de l'Internet et sont par conséquent isolées des autres applications de vos appareils.", + "d001-c-label": "Un portefeuille web", + "d001-c-explanation": "Les portefeuilles en ligne ont une sécurité moindre que les portefeuilles matériels car les clés privées sont stockées sur un appareil connecté à Internet.", + "d001-d-label": "Un portefeuille de bureau", + "d001-d-explanation": "Les portefeuilles de bureau conservent les clés privées sur le disque dur d'un ordinateur, qui est généralement connecté à Internet et potentiellement vulnérable à d'autres logiciels.", + "d002-prompt": "Parmi les options disponibles, quelle est la méthode la plus sécurisée pour stocker votre phrase de récupération ?", + "d002-a-label": "Sur une photo de votre téléphone", + "d002-a-explanation": "Ce n'est pas l'option la plus sécurisée. Si cette photo est téléchargée sur un espace de stockage en ligne, un pirate informatique pourrait obtenir cette image et accéder à votre compte.", + "d002-b-label": "Dans un fichier sur votre ordinateur", + "d002-b-explanation": "Ceci n'est pas l'option la plus sécurisée. Les pirates informatiques recherchent de plus en plus d'informations liées aux cryptomonnaies sur les appareils ciblés. Si un pirate informatique accède au fichier contenant votre phrase de récupération, il pourra accéder à votre compte.", + "d002-c-label": "Écrite sur papier", + "d002-c-explanation": "Parmi les options disponibles, écrire votre phrase de récupération sur papier est la plus sécurisée.", + "d002-d-label": "Dans un message envoyé à un membre de confiance de votre famille", + "d002-d-explanation": "Vous ne devriez jamais envoyer votre phrase de récupération par message à qui que ce soit. Le message pourrait être intercepté par un tiers, et même si vous faites entièrement confiance à cette personne, vous ne savez pas qui pourrait avoir accès à leur téléphone.", + "d003-prompt": "À qui devriez-vous donner votre phrase de récupération / clés privées ?", + "d003-a-label": "Quelqu'un que vous payez", + "d003-a-explanation": "Vous ne devriez jamais donner votre phrase de récupération ou vos clés privées à qui que ce soit. À la place, envoyez des jetons à leur adresse de portefeuille via une transaction.", + "d003-b-label": "Pour vous connecter à une application décentralisée ou à un portefeuille", + "d003-b-explanation": "Vous ne devriez jamais fournir votre phrase de récupération ou vos clés privées pour vous connecter à votre portefeuille ou à une application décentralisée.", + "d003-c-label": "L'équipe d'assistance", + "d003-c-explanation": "Vous ne devriez jamais fournir votre phrase de récupération ou vos clés privées à quiconque prétendant être de l'équipe. Toute personne vous demandant cela est un escroc.", + "d003-d-label": "Personne", + "d003-d-explanation": "Idéalement, vous ne devriez jamais fournir votre phrase de récupération ou vos clés privées à quiconque. Si vous faites entièrement confiance à quelqu'un et que vous êtes prêt à lui donner un accès total à vos fonds (comme votre conjoint), vous pourriez décider de partager ces informations avec cette personne.", + "d004-prompt": "Un portefeuille et un compte sur Ethereum sont la même chose.", + "d004-a-label": "Vrai", + "d004-a-explanation": "Un portefeuille est une interface visuelle utilisée pour interagir avec un compte Ethereum.", + "d004-b-label": "Faux", + "d004-b-explanation": "Un portefeuille est une interface visuelle utilisée pour interagir avec un compte Ethereum.", + "e001-prompt": "Pourquoi devriez-vous utiliser des mots de passe uniques pour chacun de vos comptes ?", + "e001-a-label": "Au cas où l'une des plateformes subirait un vol de données", + "e001-a-explanation": "Cette réponse est correcte, mais il y a également d'autres réponses correctes.", + "e001-b-label": "Au cas où quelqu'un regardant par-dessus votre épaule parviendrait à deviner votre mot de passe", + "e001-b-explanation": "Cette réponse est correcte, mais il y a également d'autres réponses correctes.", + "e001-c-label": "Au cas où un logiciel malveillant, tel qu'un enregistreur de frappes, vole votre mot de passe", + "e001-c-explanation": "Cette réponse est correcte, mais il y a également d'autres réponses correctes.", + "e001-d-label": "Toutes ces réponses", + "e001-d-explanation": "Toutes les réponses sont correctes. Utiliser des mots de passe uniques est le meilleur moyen d'empêcher toute autre personne d'accéder à votre compte.", + "e002-prompt": "Suite à la fusion, l'ETH doit être mis à jour vers l'ETH2.", + "e002-a-label": "Vrai", + "e002-a-explanation": "Vous n'avez pas besoin de mettre à jour votre ETH vers l'ETH2. Il n'y a pas d'ETH2 et c'est un récit couramment utilisé par des arnaqueurs.", + "e002-b-label": "Faux", + "e002-b-explanation": "Vous n'avez pas besoin de mettre à jour votre ETH vers l'ETH2. Il n'y a pas d'ETH2 et c'est un récit couramment utilisé par des arnaqueurs.", + "e003-prompt": "Les distributions gratuites d'ETH sont :", + "e003-a-label": "Un bon moyen d'obtenir plus d'ETH", + "e003-a-explanation": "Les distributions gratuites d'ETH sont des escroqueries conçues pour voler vos ETH et autres jetons. Ce n'est jamais une bonne façon d'obtenir plus d'ETH.", + "e003-b-label": "Toujours légitimes", + "e003-b-explanation": "Les distributions gratuites d'ETH ne sont jamais vraies.", + "e003-c-label": "Souvent effectuées par des membres éminents de la communauté", + "e003-c-explanation": "Les membres éminents de la communauté ne font pas de distributions d'ETH. Les escrocs prétendent que des personnalités bien connues, telles qu'Elon Musk, organisent des distributions pour donner une impression de légitimité à l'arnaque.", + "e003-d-label": "Sont très susceptibles d'être une arnaque", + "e003-d-explanation": "Les distributions d'ETH sont toujours des arnaques. Il est préférable de signaler ou d'ignorer les escrocs.", + "e004-prompt": "Les transactions sur Ethereum sont réversibles.", + "e004-a-label": "Vrai", + "e004-a-explanation": "Les transactions Ethereum ne peuvent pas être annulées. Toute personne affirmant le contraire pourrait essayer de vous arnaquer.", + "e004-b-label": "Faux", + "e004-b-explanation": "Les transactions Ethereum ne peuvent pas être annulées. Toute personne affirmant le contraire pourrait essayer de vous arnaquer.", + "f001-prompt": "Les NFT sont le plus souvent :", + "f001-a-label": "actifs numériques uniques", + "f001-a-explanation": "Les NFT représentent un actif numérique unique.", + "f001-b-label": "œuvre digitale", + "f001-b-explanation": "Les NFT représentent un actif numérique unique, qui est généralement une œuvre d'art numérique, mais qui ne se limite pas à l'art.", + "f001-c-label": "des billets pour des événements exclusifs", + "f001-c-explanation": "Les NFT représentent un actif numérique unique, cela pourrait être un système de billetterie, mais ce n'est pas limité aux billets.", + "f001-d-label": "des contrats légaux", + "f001-d-explanation": "Bien qu'un contrat légal puisse être représenté sous forme de NFT, les NFT ne se limitent pas uniquement aux contrats légalement contraignants.", + "f002-prompt": "Deux NFT représentant la même œuvre d'art sont la même chose.", + "f002-a-label": "Vrai", + "f002-a-explanation": "Les NFT sont non fongibles. Cela signifie que même s'ils représentent la même œuvre d'art numérique, ils restent uniques et identifiables. Dans le monde de l'art traditionnel, cela pourrait être similaire aux originaux et aux reproductions.", + "f002-b-label": "Faux", + "f002-b-explanation": "Les NFT sont non fongibles. Cela signifie que même s'ils représentent la même œuvre d'art numérique, ils restent uniques et identifiables. Dans le monde de l'art traditionnel, cela pourrait être similaire aux originaux et aux reproductions.", + "f003-prompt": "Les NFT représentent le plus souvent :", + "f003-a-label": "Le mot de passe de votre portefeuille", + "f003-a-explanation": "Il s'agit d'un risque pour la sécurité et d'une mauvaise idée en général !", + "f003-b-label": "La propriété d'un objet numérique unique", + "f003-b-explanation": "Les NFT représentent généralement la propriété d'un objet numérique unique.", + "f003-c-label": "Votre montant en ETH actuel", + "f003-c-explanation": "Les NFT ne peuvent pas représenter votre montant en ETH arbitrairement.", + "f003-d-label": "Toutes ces réponses", + "f003-d-explanation": "Les NFT représentent couramment la propriété d'un objet numérique unique, mais pas les soldes d'ETH ni les mots de passe de portefeuille.", + "f004-prompt": "Les NFT ont aidé à créer une nouvelle :", + "f004-a-label": "économie de collection", + "f004-a-explanation": "Les NFT ont contribué à créer une nouvelle économie pour les créateurs, pas pour les collectionneurs.", + "f004-b-label": "économie \"carbone\"", + "f004-b-explanation": "Les NFT ont contribué à créer une nouvelle économie pour les créateurs, pas pour le carbone.", + "f004-c-label": "économie de création", + "f004-c-explanation": "Les NFT ont contribué à créer une nouvelle économie pour les créateurs.", + "f004-d-label": "économie \"doge\"", + "f004-d-explanation": "Les NFT ont contribué à créer une nouvelle économie pour les créateurs, pas pour les chiens🐶.", + "f005-prompt": "Les NFT sur Ethereum sont néfastes pour l'environnement", + "f005-a-label": "Vrai", + "f005-a-explanation": "Depuis la transition vers la preuve d'enjeu (The Merge), toute transaction a eu un impact négligeable sur l'environnement.", + "f005-b-label": "Faux", + "f005-b-explanation": "Depuis la transition vers la preuve d'enjeu (The Merge), toute transaction a eu un impact négligeable sur l'environnement.", + "g001-prompt": "Les blockchains de seconde couche sont conçus pour :", + "g001-a-label": "Permettre l'évolutivité d'Ethereum", + "g001-a-explanation": "Le but principal des rollups et autres solutions de seconde couche est d'augmenter la capacité d'Ethereum.", + "g001-b-label": "Effectuer des paiements", + "g001-b-explanation": "Le but principal des rollups et autres solutions de seconde couche est d'augmenter la capacité d'Ethereum.", + "g001-c-label": "Acheter des NFT", + "g001-c-explanation": "Le but principal des rollups et autres solutions de seconde couche est d'augmenter la capacité d'Ethereum.", + "g001-d-label": "Décentraliser Ethereum", + "g001-d-explanation": "Le but principal des rollups et autres solutions de seconde couche est d'augmenter la capacité d'Ethereum.", + "g002-prompt": "Pour grandir, la plupart des réseaux alternatifs de première couche ont principalement sacrifié sur :", + "g002-a-label": "Sécurité", + "g002-a-explanation": "La plupart des réseaux alternatifs de première couche sacrifient la sécurité et quelque chose d'autre pour grandir.", + "g002-b-label": "Décentralisation", + "g002-b-explanation": "La plupart des réseaux alternatifs de première couche sacrifient la décentralisation et quelque chose d'autre pour grandir.", + "g002-c-label": "Le prix du jeton", + "g002-c-explanation": "Le prix des jetons n'a aucun impact sur le nombre de transactions possibles.", + "g002-d-label": "La sécurité et la décentralisation", + "g002-d-explanation": "La plupart des réseaux alternatifs de couche 1 sacrifient à la fois la sécurité et la décentralisation pour pouvoir grandir.", + "g003-prompt": "Lesquels des éléments suivants ne sont pas considérés comme étant des solutions de seconde couche ?", + "g003-a-label": "Validiums", + "g003-a-explanation": "Les Validiums ne sont pas considérés comme des solutions de seconde couche car ils ne tirent pas leur sécurité ou leur disponibilité d'Ethereum", + "g003-b-label": "Chaînes latérales", + "g003-b-explanation": "Les sidechains ne sont pas considérées comme des solutions de seconde couche car elles ne tirent pas leur sécurité ou leur disponibilité d'Ethereum.", + "g003-c-label": "Les blockchains alternatives de première couche", + "g003-c-explanation": "Les blockchains alternatives de première couche ne sont pas considérées comme des solutions de seconde couche.", + "g003-d-label": "Toutes ces réponses", + "g003-d-explanation": "Les Validiums, les sidechains et les blockchains alternatives de première couche ne sont pas considérés comme des solutions de seconde couche car ils ne tirent pas leur sécurité ni leur disponibilité d'Ethereum.", + "g004-prompt": "Pourquoi Ethereum ne possède-t-il pas de couche 2 \"officielle\" ?", + "g004-a-label": "Les développeurs sont trop occupés à travailler sur Ethereum", + "g004-a-explanation": "Il n'y a pas de plans pour une « seconde couche officielle » sur Ethereum car nous bénéficierons plus d'une grande variété d'approches pour concevoir des solutions de seconde couche.", + "g004-b-label": "En tant que blockchain de première couche, Ethereum atteindra éventuellement proposer suffisamment de place pour les transactions par lui-même", + "g004-b-explanation": "Il n'y a pas de plans pour une « seconde couche officielle » sur Ethereum car nous bénéficierons plus d'une grande variété d'approches pour concevoir des solutions de seconde couche.", + "g004-c-label": "Les développeurs sont toujours en train de débattre entre les rollups optimistes et les zk-rollups", + "g004-c-explanation": "Il n'y a pas de plans pour une « seconde couche officielle » sur Ethereum car nous bénéficierons plus d'une grande variété d'approches pour concevoir des solutions de seconde couche.", + "g004-d-label": "Ethereum bénéficiera d'une grande variété d'approches pour concevoir une solution de seconde couche", + "g004-d-explanation": "Il n'y a pas de plans pour une « seconde couche officielle » sur Ethereum car nous bénéficierons plus d'une grande variété d'approches pour concevoir des solutions de seconde couche.", + "h001-prompt": "La Fusion a changé Ethereum avec quel mécanisme de consensus ?", + "h001-a-label": "Preuve de travail", + "h001-a-explanation": "La preuve de travail était le mécanisme de consensus utilisé avant la Fusion.", + "h001-b-label": "Preuve d'enjeu", + "h001-b-explanation": "Correct ! La Fusion a transféré Ethereum vers la preuve d'enjeu.", + "h001-c-label": "Preuve d'autorité", + "h001-c-explanation": "C'est exact ! Ethereum n'a jamais utilisé la preuve d'autorité sur le réseau principal d'Ethereum.", + "h001-d-label": "Toutes ces réponses", + "h001-d-explanation": "Il ne serait pas possible pour Ethereum d'avoir tous ces mécanismes de consensus en même temps.", + "h002-prompt": "La Fusion a réduit la consommation d'énergie d'Ethereum de :", + "h002-a-label": "50%", + "h002-a-explanation": "La consommation d'énergie d'Ethereum a été réduite de 99,95% après que la Fusion ait permis la transition la preuve de travail vers la preuve d'enjeu.", + "h002-b-label": "62,5%", + "h002-b-explanation": "La consommation d'énergie d'Ethereum a été réduite de 99,95% après que la Fusion ait permis la transition la preuve de travail vers la preuve d'enjeu.", + "h002-c-label": "90%", + "h002-c-explanation": "La consommation d'énergie d'Ethereum a été réduite de 99,95% après que la Fusion ait permis la transition la preuve de travail vers la preuve d'enjeu.", + "h002-d-label": "99.95%", + "h002-d-explanation": "La consommation d'énergie d'Ethereum a été réduite de 99,95% après que la Fusion ait permis la transition la preuve de travail vers la preuve d'enjeu.", + "h003-prompt": "Quand la fusion a-t-elle eu lieu ?", + "h003-a-label": "15 septembre 2022", + "h003-a-explanation": "La fusion a eu lieu le 15 septembre 2022 à 6:42:42 (UTC).", + "h003-b-label": "1er décembre 2021", + "h003-b-explanation": "La fusion a eu lieu plus tard. Le 1er décembre 2022 correspond à la date de lancement de la chaîne phare.", + "h003-c-label": "27 novembre 2013", + "h003-c-explanation": "La fusion a eu lieu plus tard. Le 27 novembre 2013 correspond à la date de publication du livre blanc d'Ethereum.", + "h003-d-label": "31 octobre 2008", + "h003-d-explanation": "La fusion a eu lieu plus tard. Le 31 octobre 2008 correspond à la date de publication du livre blanc du Bitcoin.", + "h004-prompt": "La Fusion signifiait que les utilisateurs devaient échanger leur ETH contre de l'ETH2 :", + "h004-a-label": "Vrai", + "h004-a-explanation": "L'ETH n'a pas changé à aucun moment avant, pendant ou après la Fusion. L'idée de « mettre à jour » l'ETH en ETH2 était une tactique courante utilisée par des acteurs malveillants pour escroquer les utilisateurs.", + "h004-b-label": "Faux", + "h004-b-explanation": "L'ETH n'a pas changé à aucun moment avant, pendant ou après la Fusion. L'idée de « mettre à jour » l'ETH en ETH2 était une tactique courante utilisée par des acteurs malveillants pour escroquer les utilisateurs.", + "h005-prompt": "La couche de consensus d'Ethereum était auparavant connue sous le nom de :", + "h005-a-label": "Preuve de travail", + "h005-a-explanation": "La preuve de travail était le mécanisme de consensus utilisé avant la Fusion.", + "h005-b-label": "Eth2", + "h005-b-explanation": "Avant d'être rebaptisée couche de consensus, elle s'appelait à l'origine \"Eth2\".", + "h005-c-label": "Eth1", + "h005-c-explanation": "Eth1 était le nom donné à l'origine à la couche d'exécution, et non à la couche de consensus.", + "h005-d-label": "Staking", + "h005-d-explanation": "La mise en jeu consiste à déposer de l'ETH dans un contrat intelligent pour aider à sécuriser le réseau." } diff --git a/src/intl/fr/page-developers-docs.json b/src/intl/fr/page-developers-docs.json index a0ba57fce39..c541252ad25 100644 --- a/src/intl/fr/page-developers-docs.json +++ b/src/intl/fr/page-developers-docs.json @@ -23,6 +23,9 @@ "docs-nav-dart": "Dart", "docs-nav-delphi": "Delphi", "docs-nav-deploying-smart-contracts": "Déployer des contrats intelligents", + "docs-nav-design-and-ux": "La méthodologie UX : Introduction", + "docs-nav-design-and-ux-description": "L'UX design, une méthode de conception centrée utilisateur, des études sur les développements de l'écosystème du Web3 et l'Ethereum : Introduction", + "docs-nav-design-fundamentals": "Les principes fondamentaux de la méthodologie", "docs-nav-development-frameworks": "Frameworks de développement", "docs-nav-development-frameworks-description": "Outils qui facilitent le développement avec Ethereum", "docs-nav-development-networks": "Réseaux de développement", @@ -70,6 +73,7 @@ "docs-nav-run-a-node": "Ajouter un nœud", "docs-nav-client-diversity": "Diversité des clients", "docs-nav-bootnodes": "Nœud d'amorçage", + "docs-nav-light-clients": "Clients légers", "docs-nav-nodes-as-a-service": "Nœuds en tant que service", "docs-nav-oracles": "Oracles", "docs-nav-oracles-description": "Comment l'information est injectée dans la blockchain Ethereum", @@ -113,6 +117,7 @@ "docs-nav-networking-layer": "Couche de réseau", "docs-nav-networking-layer-description": "Explication de la couche réseau d'Ethereum", "docs-nav-networking-layer-network-addresses": "Adresses réseau", + "docs-nav-networking-layer-portal-network": "Portail du Réseau", "docs-nav-data-structures-and-encoding": "Structures de données et encodage", "docs-nav-data-structures-and-encoding-description": "Introduction aux structures de données et au schéma d'encodage utilisés dans la pile Ethereum", "docs-nav-data-structures-and-encoding-rlp": "Préfixe de longueur récursive (RLP)", diff --git a/src/intl/fr/page-learn.json b/src/intl/fr/page-learn.json new file mode 100644 index 00000000000..b029424ff18 --- /dev/null +++ b/src/intl/fr/page-learn.json @@ -0,0 +1,123 @@ +{ + "toc-learn-hub": "Centre d'apprentissage", + "toc-what-is-crypto-ethereum": "Qu'est-ce qu'Ethereum ?", + "toc-how-do-i-use-ethereum": "Comment utiliser Ethereum ?", + "toc-what-is-ethereum-used-for": "À quoi sert Ethereum ?", + "toc-strengthen-the-ethereum-network": "Renforcer le réseau Ethereum", + "toc-learn-about-the-ethereum-protocol": "En savoir plus sur le protocole Ethereum", + "toc-learn-about-the-ethereum-community": "En savoir plus sur la communauté Ethereum", + "toc-books-and-podcasts": "Livres et podcasts", + "hero-header": "Découvrir Ethereum", + "hero-subtitle": "Votre guide éducatif sur le monde d'Ethereum. Apprenez comment fonctionne Ethereum et comment s'y connecter. Cette page comprend des articles, des guides et des ressources techniques et non techniques.", + "hero-button-lets-get-started": "C'est parti !", + "what-is-crypto-1": "Vous avez peut-être entendu parler de cryptomonnaies, de blockchains et de Bitcoin. Les liens ci-dessous vous aideront à apprendre ce qu'ils sont et comment ils s'articulent avec Ethereum.", + "what-is-crypto-2": "Les cryptomonnaies, comme le Bitcoin, permettent à n'importe qui de transférer de l'argent à l'échelle mondiale. Ethereum le permet également, mais il peut également exécuter du code qui permet aux gens de créer des applications et des organisations. Il est à la fois résilient et flexible : n'importe quel programme informatique peut être exécuté sur Ethereum. Apprenez-en davantage et découvrez comment commencer :", + "what-is-ethereum-card-title": "Qu'est-ce qu'Ethereum ?", + "what-is-ethereum-card-description": "Si vous êtes nouveau, commencez ici pour savoir pourquoi Ethereum est important.", + "what-is-ethereum-card-image-alt": "Illustration d'une personne jetant un coup d'œil à un bazar, destiné à représenter Ethereum.", + "what-is-eth-card-title": "Qu'est-ce que l'ETH ?", + "what-is-eth-description": "Ether (ETH) est la devise qui alimente le réseau et les applications Ethereum.", + "what-is-web3-card-title": "Qu'est-ce que le Web3 ?", + "what-is-web3-card-description": "Le Web3 est un modèle pour Internet qui valorise la propriété de vos actifs et de votre identité.", + "additional-reading-more-on-ethereum-basics": "En savoir plus sur les bases d'Ethereum", + "guides-hub-desc": "Guides : instructions étape par étape sur l'utilisation d'Ethereum", + "quiz-hub-desc": "Centre de quiz : testez votre connaissance", + "additional-reading-what-are-smart-contracts": "Qu'est-ce qu'un contrat intelligent ?", + "additional-reading-what-is-web3": "Qu'est-ce que le Web3 ?", + "additional-reading-ethereum-in-thirty-minutes": "Ethereum en 30 minutes par Vitalik Buterin", + "additional-reading-get-eth": "Apprenez comment acheter des ETH", + "how-do-i-use-ethereum-1": "Utiliser Ethereum peut signifier différentes choses pour différentes personnes. Peut-être souhaitez-vous vous connecter à une application, prouver votre identité en ligne ou transférer des ETH. La première chose dont vous aurez besoin est un compte. La manière la plus simple de créer et d'accéder à un compte est d'utiliser un logiciel appelé portefeuille (wallet).", + "what-is-a-wallet-card-title": "Qu'est-ce qu'un portefeuille ?", + "what-is-a-wallet-card-description": "Les portefeuilles numériques sont semblables aux portefeuilles physiques ; ils stockent ce dont vous avez besoin pour prouver votre identité et accéder aux endroits qui ont de la valeur pour vous.", + "what-is-a-wallet-card-alt": "Illustration d'un robot.", + "find-a-wallet-card-title": "Trouver un portefeuille", + "find-a-wallet-card-description": "Parcourez les portefeuilles en fonction des fonctionnalités qui sont importantes pour vous.", + "find-a-wallet-button": "Liste des portefeuilles", + "crypto-security-basics-card-title": "Notions de sécurité", + "crypto-security-basics-card-description": "Apprenez comment identifier les arnaques et comment éviter les pièges les plus courants.", + "crypto-security-basics-card-button": "Rester en sécurité", + "things-to-consider-banner-title": "Choses à considérer lors de l'utilisation d'Ethereum", + "things-to-consider-banner-1": "Chaque transaction Ethereum nécessite des frais sous la forme d'ETH, même si vous avez besoin de déplacer différents jetons construits sur Ethereum comme les stablecoins USDC ou DAI.", + "things-to-consider-banner-2": "Les frais peuvent être élevés en fonction du nombre de personnes essayant d'utiliser Ethereum, nous vous recommandons donc d'utiliser", + "things-to-consider-banner-layer-2": "Couche de niveau 2", + "additional-reading-more-on-using-ethereum": "En savoir plus sur l'utilisation d'Ethereum", + "additional-reading-how-to-create-an-ethereum-account": "Comment créer un compte Ethereum", + "additional-reading-how-to-use-a-wallet": "Comment utiliser un wallet (portefeuille cryptographique)", + "additional-reading-layer-2": "Couche 2 : réduction des frais de transaction", + "what-is-ethereum-used-for-1": "Ethereum a conduit à la création de nouveaux produits et services qui peuvent améliorer différents domaines de notre vie. Nous en sommes encore aux premières étapes, mais il y a beaucoup de choses à faire.", + "defi-card-title": "Finance Décentralisée (DeFi)", + "defi-card-description": "Explorez un système financier alternatif construit sans banques et ouvert à tous.", + "defi-card-button": "Qu'est-ce que DeFi ?", + "stablecoins-card-title": "Stablecoins", + "stablecoins-card-description": "Les cryptomonnaies sont liées à la valeur d'une devise, d'un produit ou d'un autre instrument financier.", + "stablecoins-card-button": "Que sont les stablecoins ?", + "nft-card-title": "Jetons non fongibles (NFTs)", + "nft-card-description": "Représente la propriété d’objets uniques, de l’art aux titres d’œuvre aux billets de concert.", + "nft-card-button": "Que sont les NFT ?", + "dao-card-title": "Organisations autonomes décentralisées (DAO)", + "dao-card-description": "Activer de nouvelles façons de coordonner le travail sans boss.", + "dao-card-button": "Que sont les DAO ?", + "dapp-card-title": "Applications décentralisées (dApps)", + "dapp-card-description": "Créer une économie numérique des services de pair à pair.", + "dapp-card-button": "Découvrir les dApps", + "emerging-use-cases-title": "Cas d'utilisation émergents", + "emerging-use-cases-description": "Il y a également d'autres industries importantes en cours de création ou d'amélioration avec Ethereum:", + "play-to-earn": "Jeux Play-to-earn (P2E)", + "fundraising-through-quadratic-funding": "Collecte de fonds grâce à au financement quadratique", + "supply-chain-management": "Gestion de la chaîne d'approvisionnement", + "more-on-ethereum-use-cases": "Plus d'infos sur les cas d'utilisation d'Ethereum", + "more-on-ethereum-use-cases-link": "La blockchain dans les pays en développement", + "strengthening-the-ethereum-network-description": "Vous pouvez aider à sécuriser Ethereum et gagner des récompenses en même temps en mettant votre ETH. Il existe différentes options de mise en jeu en fonction de vos connaissances techniques et de la quantité d'ETH que vous avez.", + "staking-ethereum-card-title": "Mise en jeu sur Ethereum", + "staking-ethereum-card-description": "Apprenez à commencer à mettre votre ETH.", + "staking-ethereum-card-button": "Commencer à miser", + "run-a-node-card-title": "Ajouter un nœud", + "run-a-node-card-description": "Jouez un rôle critique dans le réseau Ethereum en lançant un nœud.", + "learn-about-ethereum-protocol-description": "Pour les utilisateurs les plus intéressés par la partie technique du réseau Ethereum.", + "energy-consumption-card-title": "Energie consommée", + "energy-consumption-card-description": "Quelle est la consommation d'énergie d'Ethereum ?", + "energy-consumption-card-button": "Est-ce que Ethereum est vert ?", + "ethereum-upgrades-card-title": "Feuille de route d'Ethereum", + "ethereum-upgrades-card-description": "La feuille de route Ethereums la rend plus évolutive, plus sécurisée et plus durable.", + "ethereum-upgrades-card-button": "Explorer les données", + "ethereum-whitepaper-card-title": "Livre blanc Ethereum", + "ethereum-whitepaper-card-description": "La proposition originale d'Ethereum écrite par Vitalik Buterin en 2014.", + "ethereum-whitepaper-card-button": "Lire le Livre Blanc", + "more-on-ethereum-protocol-title": "En savoir plus sur la vision Ethereum", + "more-on-ethereum-protocol-ethereum-for-developers": "Ethereum pour les développeurs", + "more-on-ethereum-protocol-consensus": "Le mécanisme de consensus basé sur la preuve d'enjeu d'Ethereum", + "more-on-ethereum-protocol-evm": "L'ordinateur intégré d'Ethereum (l'EVM)", + "more-on-ethereum-protocol-nodes-and-clients": "Nœuds et clients Ethereum", + "ethereum-community-description": "Le succès d'Ethereum est attribué à sa communauté incroyablement dévouée. Des milliers de personnes inspirantes et motivées contribuent à faire avancer la vision d'Ethereum, tout en assurant la sécurité du réseau grâce au staking et à la gouvernance. Rejoignez-nous !", + "community-hub-card-title": "Hub de la communauté", + "community-hub-card-description": "Notre communauté comprend des personnes de tous horizons.", + "community-hub-card-alt": "Illustration d'un groupe de bâtisseurs travaillant ensemble.", + "community-hub-card-button": "En savoir plus", + "get-involved-card-title": "Comment s'impliquer ?", + "get-involved-card-description": "Vous (oui, vous!) êtes les bienvenus pour contribuer à la communauté Ethereum.", + "online-communities-card-title": "Communautés en ligne", + "online-communities-card-description": "Les communautés en ligne offrent une excellente occasion de poser des questions plus précises ou de s'impliquer.", + "online-communities-card-button": "Explorer les communautés", + "books-about-ethereum": "Livres sur Ethereum", + "proof-of-stake-title": "Preuve d'enjeu", + "proof-of-stake-description": "13 septembre 2022 - Vitalik Buterin, Nathan Schneider", + "cryptopians-title": "The Cryptopians", + "cryptopians-description": "22 février 2022 - Laura Shin", + "out-of-the-ether-title": "Hors de l'éther", + "out-of-the-ether-description": "29 septembre 2020 - Matthew Leising", + "the-infinite-machine-title": "La machine infinie", + "the-infinite-machine-description": "14 juillet 2020 - Camila Russo", + "mastering-ethereum-title": "Utiliser Ethereum", + "mastering-ethereum-description": "23 décembre 2018 – Andreas M. Antonopoulos, Ph.D. Gavin Wood.", + "podcasts-about-ethereum": "Podcasts sur Ethereum", + "bankless-title": "Bankless", + "bankless-description": "Un guide pour le financement de Crypto", + "zeroknowledge-title": "Zero Knowledge", + "zeroknowledge-description": "Enfonce dans la technologie qui alimentera le web décentralisé émergent et la communauté qui construira ceci", + "green-pill-title": "Pilule Verte", + "green-pill-description": "Explore les systèmes crypto-économiques qui créent des externalités positives pour le monde", + "unchained-title": "Déchaîné", + "unchained-description": "Pousse profondément dans les gens qui construisent l'internet décentralisé, les détails de cette technologie qui pourraient soutenir notre avenir, et certains des sujets les plus épineux dans les cryptomonnaies, tels que la réglementation, la sécurité et la confidentialité", + "the-daily-gwei-title": "The Daily Gwei", + "the-daily-gwei-description": "Récapitulatifs, mises à jour et analyses Ethereum" +} diff --git a/src/intl/fr/page-staking.json b/src/intl/fr/page-staking.json index 1d48d320d9d..137a4c9463a 100644 --- a/src/intl/fr/page-staking.json +++ b/src/intl/fr/page-staking.json @@ -17,7 +17,7 @@ "comp-withdrawal-credentials-not-upgraded-2": "Des instructions sur la façon de mettre à niveau peuvent actuellement être trouvées sur la plateforme de lancement de mise en jeu", "comp-withdrawal-credentials-verify-mainnet": "Vérifier sur le réseau principal", "comp-withdrawal-credentials-verify-goerli": "Vérifier sur Goerli", - "page-staking-withdrawals-when": "12 avril 2023", + "page-staking-withdrawals-when": "Expédié !", "page-staking-image-alt": "Image de la mascotte Rhino pour la plateforme de lancement de la mise en jeu.", "page-staking-benefits-1-title": "Gagner des récompenses", "page-staking-benefits-1-description": "Des récompenses sont offertes pour les actions qui aident le réseau à atteindre un consensus. Vous obtiendrez des récompenses en exécutant des logiciels permettant de regrouper correctement les transactions dans un nouveau bloc et de vérifier le travail d'autres validateurs. Cela permet en effet de sécuriser la chaîne.", @@ -40,6 +40,7 @@ "page-staking-learn-more-saas": "En savoir plus sur la mise en jeu en tant que service", "page-staking-dropdown-pools": "Mise en jeu mutualisée", "page-staking-dropdown-withdrawals": "À propos des retraits", + "page-staking-dropdown-dvt": "Technologie des registres distribués composée de nœuds validateurs", "page-staking-more-on-pools": "En savoir plus sur la mise en jeu mutualisée", "page-staking-learn-more-pools": "En savoir plus sur la mise en jeu mutualisée", "page-staking-section-what-title": "Qu'est-ce que la mise en jeu ?", @@ -47,6 +48,11 @@ "page-staking-section-why-title": "Pourquoi mettre en jeu vos ETH ?", "page-staking-section-why-p1": "Tout dépend de la somme que vous êtes prêt à mettre en jeu. Vous aurez besoin de 32 ETH pour activer votre propre validateur, mais il est possible de mettre en jeu une quantité moindre.", "page-staking-section-why-p2": "Découvrez les options offertes ci-dessous et optez pour la plus adaptée pour vous et le réseau.", + "page-staking-guide-title-coincashew-ethereum": "Le guide Ethereum 2.0 par CoinCashew", + "page-staking-guide-title-somer-esat": "Somer Esat", + "page-staking-guide-title-rocket-pool": "Opérateurs de nœud Rocket Pool", + "page-staking-guide-description-linux": "Linux (CLI)", + "page-staking-guide-description-mac-linux": "Linux, macOS (CLI)", "page-staking-hierarchy-solo-h2": "Mise en jeu individuelle", "page-staking-hierarchy-solo-pill-1": "Le plus efficace", "page-staking-hierarchy-solo-pill-2": "Contrôle total", @@ -104,9 +110,9 @@ "page-staking-considerations-solo-6-valid": "Aucune autorisation", "page-staking-considerations-solo-6-warning": "Autorisation requise", "page-staking-considerations-solo-7-title": "Multi clients", - "page-staking-considerations-solo-7-description": "Le logiciel permet aux utilisateurs de choisir et de basculer entre deux couches de consensus ou plus", + "page-staking-considerations-solo-7-description": "Les instances contiennent deux ou plusieurs sessions pour les processus utilisateurs, et deux ou plusieurs sessions pour les consensus layer. Cela donne aux utilisateurs la possibilité d'effectuer leur choix et de basculer entre deux ou plusieurs sessions", "page-staking-considerations-solo-7-valid": "Changement de client facile", - "page-staking-considerations-solo-7-warning": "Limité aux clients majoritaires", + "page-staking-considerations-solo-7-warning": "Des sessions réduites dans des processus utilisateurs majoritaires", "page-staking-considerations-solo-8-title": "Autonome", "page-staking-considerations-solo-8-description": "L'utilisateur conserve la garde de toutes les informations d'identification du validateur, y compris les clés de signature et de retrait", "page-staking-considerations-solo-8-warning": "Tiers de séquestre", @@ -118,19 +124,25 @@ "page-staking-considerations-saas-6-description": "Les utilisateurs n'ont pas besoin d'autorisation spéciale, d'inscription sur un compte ou de révéler leur identité pour participer au service", "page-staking-considerations-saas-6-valid": "Ouvert à tous", "page-staking-considerations-saas-6-warning": "Autorisation requise", - "page-staking-considerations-saas-7-title": "Multitude de clients", - "page-staking-considerations-saas-7-description": "Le service ne doit pas exécuter plus de 50 % de ses validateurs agrégés avec un client validateur majoritaire", + "page-staking-considerations-saas-7-title": "La dualité de méthode d'exécution", + "page-staking-considerations-saas-7-description": "Le service de staking ne devrait pas réduire de plus de 50% le nombre de validateurs secondaires ou tertiaires, engagés dans des processus utilisateurs majoritaires", "page-staking-considerations-saas-7-valid": "Moins de 50 %", "page-staking-considerations-saas-7-caution": "Actuellement inconnu", "page-staking-considerations-saas-7-warning": "Plus de 50 %", + "page-staking-considerations-saas-8-title": "La dualité de méthode de consensus", + "page-staking-considerations-saas-8-description": "Le service de staking ne devrait pas réduire de plus de 50% le nombre de validateurs secondaires ou tertiaires, impliqués dans l'élaboration d'un arrangement multisignature majoritaire", + "page-staking-considerations-saas-8-valid": "Moins de 50 %", + "page-staking-considerations-saas-8-caution": "Actuellement inconnu", + "page-staking-considerations-saas-8-warning": "Plus de 50 %", "page-staking-considerations-pools-5-description": "Le service ne nécessite pas de faire confiance à des humains pour garder vos clés ou distribuer des récompenses", "page-staking-considerations-pools-6-title": "Nœuds sans autorisation nécessaire", "page-staking-considerations-pools-6-description": "Le service permet à quiconque de devenir un opérateur de nœud pour le pool, sans autorisation", - "page-staking-considerations-pools-7-description": "Le service ne doit pas exécuter plus de 50 % de ses validateurs agréés avec un validateur client super majoritaire", + "page-staking-considerations-pools-7-description": "Le service de staking ne devrait pas réduire de plus de 50% le nombre de validateurs secondaires ou tertiaires, engagés dans des processus utilisateurs majoritaires", "page-staking-considerations-pools-8-title": "Jeton de liquidité", "page-staking-considerations-pools-8-description": "Offre des jetons de liquidité échangeable représentant votre ETH mis en jeu, détenu dans votre propre portefeuille", "page-staking-considerations-pools-8-valid": "Jeton(s) de liquidité", "page-staking-considerations-pools-8-warning": "Aucun jeton de liquidité", + "page-staking-considerations-pools-9-description": "Le service de staking ne devrait pas réduire de plus de 50% le nombre de validateurs secondaires ou tertiaires, impliqués dans l'élaboration d'un arrangement multisignature majoritaire", "page-staking-how-solo-works-item-1": "Obtenez du matériel : vous devez exécuter un noeud pour miser", "page-staking-how-solo-works-item-2": "Synchronisez le client d'exécution", "page-staking-how-solo-works-item-3": "Synchronisez le client de consensus", @@ -146,9 +158,14 @@ "page-staking-launchpad-widget-p3": "Pour faciliter les choses, découvrez quelques-uns des outils et des guides ci-dessous : ils peuvent vous aider, avec la plateforme de lancement de la mise en jeu, à configurer vos clients en toute simplicité.", "page-staking-launchpad-widget-link": "Outils logiciels et guide", "page-staking-products-get-started": "Premiers pas", + "page-staking-dropdown-staking-options": "Options de mise en jeu", + "page-staking-dropdown-staking-options-alt": "Menu déroulant des options de mise en jeu", "page-staking-stats-box-metric-1": "Nombre total d'ETH mis en jeu", "page-staking-stats-box-metric-2": "Nombre total de validateurs", "page-staking-stats-box-metric-3": "TAP actuel", + "page-staking-stats-box-metric-1-tooltip": "Somme des ETH en jeu sur la chaîne de balises, sans inclure les soldes de plus de 32 ETH", + "page-staking-stats-box-metric-2-tooltip": "Nombre de comptes de validateur actuellement activés sur la Chaîne Beacon", + "page-staking-stats-box-metric-3-tooltip": "Rendement financier annuel moyen par validateur sur la dernière période de 24 heures", "page-staking-section-comparison-subtitle": "Il n'y a pas de solution unique pour la mise en jeu et chacune d'entre elle a ses particularités. Nous allons comparer ici certains des risques, récompenses et exigences de chaque solution de mise en jeu.", "page-staking-section-comparison-rewards-title": "Récompenses", "page-staking-section-comparison-solo-rewards-li1": "Récompenses maximales - Recevez l'ensemble des récompenses directement du protocole", @@ -186,9 +203,9 @@ "page-staking-faq-4-question": "La mise en jeu est-elle déjà active ?", "page-staking-faq-4-answer-p1": "Oui. La mise en jeu est active depuis le 1er décembre 2020", "page-staking-faq-4-answer-p2": "Cela signifie que la mise en jeu est actuellement en ligne pour que les utilisateurs puissent déposer leur ETH, exécuter un client de validation et commencer à gagner des récompenses.", - "page-staking-faq-4-answer-p3": "La fusion a également eu lieu le 15 septembre 2022, et Ethereum est maintenant entièrement sécurisée par l'ETH misé depuis lors.", + "page-staking-faq-4-answer-p3": "La mise à niveau de Shanghai/Capella a été achevée le 12 avril 2023, permettant des retraits de mise en jeu, fermant la boucle sur la liquidité du staking.", "page-staking-faq-5-question": "Quand puis-je retirer mes ETH misés ?", - "page-staking-faq-5-answer-p1": "Les fonctionnalités de retrait devraient être incluses dans la prochaine mise à niveau du réseau, nommée Shanghai. Cette mise à niveau du réseau est estimée pour le premier semestre 2023, sous réserve de changements. Après la mise à jour de Shanghai, les stakers seront alors en mesure de retirer leurs récompenses et/ou leur dépôt de Eth de leur solde de validateur s'ils le souhaitent.", + "page-staking-faq-5-answer-p1": "Maintenant ! Les Stakers sont libres de retirer leurs récompenses et/ou de prélever le dépôt de leur solde de validateur s'ils le souhaitent.", "page-staking-faq-5-answer-p2": "En attendant, les stakers gagneront toujours des récompenses sous forme de frais et de MEV en proposant des blocs, qui sont mis à disposition immédiatement via l'adresse du destinataire des frais fixés.", "page-staking-faq-5-answer-link": "En savoir plus sur les retraits de mise en jeu", "page-staking-further-reading-1-link": "Pourquoi la preuve d'enjeu (Nov 2020)", @@ -215,6 +232,6 @@ "page-staking-meta-title": "Mise en jeu sur Ethereum", "page-staking-withdrawals-important-notices": "Informations importantes", "page-staking-withdrawals-important-notices-desc": "Les retraits ne sont pas encore disponibles. Veuillez lire la FAQ de Merge Eth2 et post-merge pour plus d'informations.", - "page-upgrades-merge-btn": "Plus d'informations sur la fusion", + "page-upgrades-merge-btn": "Plus d'infos sur la fusion", "subscribe-to-ef-blog": "Abonnez-vous au Blog EF pour recevoir des notifications par e-mail pour les dernières annonces de protocole." } diff --git a/src/intl/fr/page-wallets-find-wallet.json b/src/intl/fr/page-wallets-find-wallet.json index d6c0ac77870..164e23413a0 100644 --- a/src/intl/fr/page-wallets-find-wallet.json +++ b/src/intl/fr/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Filtres de fonctionnalités", "page-find-wallet-footnote-1": "Les portefeuilles répertoriés sur cette page ne sont pas officiellement approuvés et sont fournis à titre d'information uniquement.", "page-find-wallet-footnote-2": "Leurs descriptions ont été fournies par les projets de portefeuilles eux-mêmes.", - "page-find-wallet-footnote-3": "Nous ajoutons des produits à cette page sur la base des critères de notre politique en matière de liste. Si vous souhaitez nous voir ajouter un portefeuille, soulevez un problème sur GitHub.", + "page-find-wallet-footnote-3": "Nous ajoutons des produits à cette page sur la base des critères de notre politique en matière de liste. Si vous souhaitez nous voir ajouter un portefeuille, soulevez un problème sur GitHub.", "page-find-wallet-mobile": "Téléphone", "page-find-wallet-mobile-desc": "Portefeuilles avec applications mobiles", "page-find-wallet-desktop": "Ordinateur", diff --git a/src/intl/hi/learn-quizzes.json b/src/intl/hi/learn-quizzes.json new file mode 100644 index 00000000000..6b1f0eeb1fd --- /dev/null +++ b/src/intl/hi/learn-quizzes.json @@ -0,0 +1,328 @@ +{ + "add-quiz": "एक सवाल/क्विज़ जोड़ें", + "average-score": "औसत स्कोर:", + "basics": "इथेरियम की मूल बातें", + "basics-description": "मजबूत आधार सुनिश्चित करने के लिए, यह अनुभाग आपको इथेरियम की मूलभूत अवधारणाएं सिखाता है।", + "completed": "पूर्ण:", + "community-stats": "सामुदायिक आंकड़े", + "contribute": "हमारी लाइब्रेरी में योगदान करें।", + "correct": "सही", + "explanation": "स्पष्टीकरण", + "next-question": "अगला सवाल", + "next-quiz": "अगला क्विज", + "page-assets-merge": "मर्ज", + "passed": "आपने क्विज़ पास कर ली!", + "questions": "प्रश्न", + "questions-answered": "इन सवालों के उत्तर दिए गए:", + "quizzes-subtitle": "पता लगाएं कि आप इथेरियम और क्रिप्टोकरेंसी को कितनी अच्छी तरह समझते हैं। क्या आप विशेषज्ञ बनने के लिए तैयार हैं?", + "retry": "दोबारा कोशिश की दर:", + "score": "स्कोर", + "see-results": "परिणाम देखें", + "share-results": "परिणाम साझा करें", + "start": "शुरू करें", + "submit-answer": "उत्तर की जांच करें", + "test-your-knowledge": "अपने इथेरियम ज्ञान का परीक्षण करें", + "try-again": "दोबारा कोशिश करें", + "using-ethereum": "इथेरियम का इस्तेमाल करना", + "using-ethereum-description": "इथेरियम के वास्तविक दुनिया के अनुप्रयोगों में गहराई से उतरें और जानें कि यह क्रांतिकारी ब्लॉकचेन प्लेटफ़ॉर्म उद्योगों को कैसे नया आकार दे रही है। क्रिप्टोकरेंसी का सक्रिय रूप से इस्तेमाल शुरू करने से पहले यह सुनिश्चित करने का यह एक शानदार तरीका है कि आप चीजों को अच्छी तरह से समझ लें।", + "want-more-quizzes": "क्या आप यहां और अधिक सवाल देखना चाहते हैं?", + "your-results": "आपका परिणाम", + "your-total": "आपके कुल अंक", + "a001-prompt": "इथेरियम और Bitcoin के बीच सबसे बड़ा अंतर है:", + "a001-a-label": "इथेरियम आपको अन्य लोगों को भुगतान करने की अनुमति नहीं देता है", + "a001-a-explanation": "Bitcoin और इथेरियम दोनों आपको अन्य लोगों को भुगतान करने देते हैं।", + "a001-b-label": "आप इथेरियम पर कंप्यूटर प्रोग्राम चला सकते हैं", + "a001-b-explanation": "इथेरियम प्रोग्रामयोग्य है। इसका मतलब है कि आप किसी भी कंप्यूटर प्रोग्राम को इथेरियम ब्लॉकचेन पर डाल सकते हैं।", + "a001-c-label": "आप Bitcoin पर कंप्यूटर प्रोग्राम चला सकते हैं", + "a001-c-explanation": "इथेरियम के विपरीत, Bitcoin प्रोग्राम करने योग्य नहीं है और मनमाना कंप्यूटर प्रोग्राम नहीं चला सकता है।", + "a001-d-label": "उनके अलग-अलग लोगो हैं", + "a001-d-explanation": "उनके लोगो अलग-अलग हैं! लेकिन यह उनके बीच सबसे बड़ा अंतर नहीं है।", + "a002-prompt": "इथेरियम की मूल क्रिप्टोकरेंसी को कहा जाता है:", + "a002-a-label": "इथर", + "a002-a-explanation": "इथर, इथेरियम नेटवर्क की मूल क्रिप्टोकरेंसी है।", + "a002-b-label": "Ethereum", + "a002-b-explanation": "इथेरियम ब्लॉकचेन है, लेकिन इसकी मूल मुद्रा को इथेरियम नहीं कहा जाता है। यह एक आम गलतफ़हमी है।", + "a002-c-label": "इथरकॉइन", + "a002-c-explanation": "कई अन्य क्रिप्टोकरेंसी के विपरीत, इथेरियम की मूल क्रिप्टोकरेंसी में 'कॉइन' शब्द नहीं है।", + "a002-d-label": "Bitcoin", + "a002-d-explanation": "Bitcoin (अपरकेस B) पहली ब्लॉकचेन बनाई गई थी, bitcoin (लोअरकेस B) मूल क्रिप्टोकरेंसी है।", + "a003-prompt": "एथेरियम कौन चलाता है?", + "a003-a-label": "डिवेलपर्स", + "a003-a-explanation": "डेवलपर्स इथेरियम के निर्माण और सुधार के लिए महत्वपूर्ण हैं, लेकिन वे वह समूह नहीं हैं जो इथेरियम को चालू रखते हैं।", + "a003-b-label": "Miners", + "a003-b-explanation": "मर्ज के बाद से माईनिंग संभव नहीं है। इथेरियम पर अब कोई 'माईनर' नहीं हैं।", + "a003-c-label": "इथेरियम फाउंडेशन", + "a003-c-explanation": "इथेरियम फाउंडेशन इथेरियम नोड के दिन-प्रतिदिन चलने में कोई महत्वपूर्ण भूमिका नहीं निभाता है।", + "a003-d-label": "नोड चलाने वाला कोई भी व्यक्ति", + "a003-d-explanation": "नोड चलाने वाला कोई भी व्यक्ति इथेरियम के बुनियादी ढांचे का एक महत्वपूर्ण हिस्सा है। अगर आपने पहले से ही नहीं किया है, तो इथेरियम नोड चलाने पर विचार करें।", + "a004-prompt": "इथेरियम लॉन्च होने के बाद से, नेटवर्क कितनी बार ऑफ़लाइन किया गया है?", + "a004-a-label": "कभी नहीं", + "a004-b-label": "एक बार", + "a004-c-label": "चार बार", + "a004-d-label": "दस से अधिक बार", + "a004-explanation": "लॉन्च होने के बाद से इथेरियम कभी भी पूरी तरह से ऑफ़लाइन नहीं हुआ (ब्लॉक का उत्पादन बंद नहीं किया)।", + "a005-prompt": "इथेरियम इससे अधिक बिजली की खपत करता है:", + "a005-a-label": "गोल्ड माईनिंग", + "a005-a-explanation": "सोने का खनन प्रति वर्ष ~131 टेरावाट घंटे का इस्तेमाल करता है। इथेरियम प्रति वर्ष लगभग 0.0026 टेरावाट घंटे का इस्तेमाल करता है।", + "a005-b-label": "Netflix", + "a005-b-explanation": "Netflix प्रति वर्ष ~0.451 टेरावाट घंटे का इस्तेमाल करता है। इथेरियम प्रति वर्ष लगभग 0.0026 टेरावाट घंटे का इस्तेमाल करता है।", + "a005-c-label": "PayPal", + "a005-c-explanation": "PayPal प्रति वर्ष ~0.26 टेरावाट घंटे का इस्तेमाल करता है। इथेरियम प्रति वर्ष लगभग 0.0026 टेरावाट घंटे का इस्तेमाल करता है।", + "a005-d-label": "उपरोक्त में से कोई नहीं", + "a005-d-explanation": "इथेरियम प्रति वर्ष लगभग 0.0026 टेरावाट घंटे का इस्तेमाल करता है। सोने के खनन (~131 TWh/yr), Netflix (~0.451 TWh/yr), और Paypal (~0.26 TWh/yr) से कम।", + "b001-prompt": "इथर को इस रूप में भी जाना जाता है:", + "b001-a-label": "ETC", + "b001-a-explanation": "ETC इथेरियम क्लासिक के लिए टिकर है।", + "b001-b-label": "ETR", + "b001-b-explanation": "ETR इथर या किसी महत्वपूर्ण क्रिप्टोकरेंसी के लिए टिकर नहीं है।", + "b001-c-label": "ETH", + "b001-c-explanation": "ETH इथेरियम पर इथर के लिए टिकर है।", + "b001-d-label": "BTC", + "b001-d-explanation": "BTC Bitcoin नेटवर्क पर bitcoin के लिए टिकर है।", + "b002-prompt": "इथेरियम पर, नेटवर्क शुल्क का भुगतान किया जाता है:", + "b002-a-label": "bitcoin", + "b002-a-explanation": "लोअरकेस \"bitcoin\" Bitcoin नेटवर्क की मूल क्रिप्टोकरेंसी है।", + "b002-b-label": "ETH", + "b002-b-explanation": "इथर (ETH) इथेरियम की मूल क्रिप्टोकरेंसी है। इथेरियम पर सभी नेटवर्क शुल्क का भुगतान ETH में किया जाता है।", + "b002-c-label": "USD", + "b002-c-explanation": "USD (अमेरिकी डॉलर), या किसी अन्य FIAT मुद्रा में इथेरियम पर नेटवर्क शुल्क का भुगतान करना संभव नहीं है।", + "b002-d-label": "Ethereum", + "b002-d-explanation": "इथेरियम नेटवर्क है, लेकिन इथेरियम के नेटवर्क शुल्क ETH में भुगतान किया जाता है।", + "b003-prompt": "इथेरियम पर दांव लगाने से नेटवर्क को सुरक्षित करने में मदद मिलती है क्योंकि:", + "b003-a-label": "हितधारक लोगों पर प्रतिबंध लगा सकते हैं, अगर वे पसंद नहीं करते हैं कि वे क्या कर रहे हैं", + "b003-a-explanation": "स्टेकर्स मनमाने ढंग से उपयोगकर्ताओं को सेंसर करने में सक्षम नहीं हैं।", + "b003-b-label": "अगर कोई हितधारक नेटवर्क को धोखा देने की कोशिश करता है, तो वे अपने ETH को खोने का जोखिम उठाते हैं", + "b003-b-explanation": "हितधारक को अपने ETH की एक महत्वपूर्ण राशि खोने का जोखिम होता है, अगर उन्हें नेटवर्क के खिलाफ दुर्भावनापूर्ण व्यवहार करते हुए दिखाया जाता है। इसे कटौती के रूप में जाना जाता है।", + "b003-c-label": "स्टेकर्स काम के सबूत का प्रदर्शन करने के लिए शक्तिशाली कंप्यूटर चलाते हैं", + "b003-c-explanation": "स्टेकर्स को अपने ETH को दांव पर लगाने के लिए शक्तिशाली हार्डवेयर की आवश्यकता नहीं होती है। इथेरियम ने मर्ज में काम के सबूत का इस्तेमाल करना बंद कर दिया।", + "b003-d-label": "सत्यापनकर्ता के रूप में स्वीकार किए जाने से पहले हितधारकों को KYC से गुजरना पड़ता है", + "b003-d-explanation": "इथेरियम पर दांव लगाना अनुमति रहित है और इसके लिए KYC की आवश्यकता नहीं है।", + "b004-prompt": "ETH मूल्यवान है, क्योंकि:", + "b004-a-label": "इथेरियम पर कुछ भी करने के लिए ETH की आवश्यकता होती है", + "b004-a-explanation": "यह उत्तर आंशिक रूप से सही है, लेकिन यह केवल एक कारण है कि ETH मूल्यवान है।", + "b004-b-label": "ETH एक गैर-सेंसर करने योग्य पीयर-टू-पीयर पैसा है", + "b004-b-explanation": "यह उत्तर आंशिक रूप से सही है, लेकिन यह केवल एक कारण है कि ETH मूल्यवान है।", + "b004-c-label": "ETH का इस्तेमाल क्रिप्टो ऋण के लिए कोलेट्रल के रूप में किया जाता है", + "b004-c-explanation": "यह उत्तर आंशिक रूप से सही है, लेकिन यह केवल एक कारण है कि ETH मूल्यवान है।", + "b004-d-label": "उपरोक्त सभी", + "b004-d-explanation": "इथेरियम लेनदेन को सेंसर नहीं किया जा सकता है, ETH को इथेरियम पर कोई भी लेनदेन करने की आवश्यकता होती है, और यह DeFi पारिस्थितिकी तंत्र की स्थिरता के लिए महत्वपूर्ण है।", + "c001-prompt": "Web3 उपयोगकर्ताओं को सीधे डिजिटल संपत्ति के मालिक होने की अनुमति देता है:", + "c001-a-label": "DAO", + "c001-a-explanation": "DAO (विकेन्द्रीकृत स्वायत्त संगठन) केंद्रीकृत नेतृत्व के बिना सदस्य-स्वामित्व वाले समुदाय हैं।", + "c001-b-label": "NFTs", + "c001-b-explanation": "NFT (नॉन-फ़ंजिबल टोकन) एक इथेरियम-आधारित संपत्ति के रूप में कुछ भी अद्वितीय का प्रतिनिधित्व करने का एक तरीका प्रदान करते हैं।", + "c001-c-label": "ENS", + "c001-c-explanation": "ENS (इथेरियम नाम सेवा) इथेरियम ब्लॉकचेन के लिए एक विकेन्द्रीकृत नामकरण सेवा है।", + "c001-d-label": "गिटहब", + "c001-d-explanation": "GitHub एक केंद्रीकृत मंच है, मुख्य रूप से वितरित संस्करण नियंत्रण का इस्तेमाल करके कोड संग्रहीत करने के लिए। GitHub आपके डेटा या डिजिटल संपत्ति के स्वामित्व की अनुमति नहीं देता है।", + "c002-prompt": "Web1 केवल पढ़ने के लिए था, Web2 पढ़ना-लिखना है, Web3 को इस प्रकार वर्णित किया गया है:", + "c002-a-label": "पढ़ना-लिखना-बेचना", + "c002-a-explanation": "Web3 को इस तरह से वर्णित नहीं किया गया है।", + "c002-b-label": "पढ़ना-लिखना-स्टोर", + "c002-b-explanation": "Web3 को इस तरह से वर्णित नहीं किया गया है।", + "c002-c-label": "पढ़ना-लिखना-स्वामित्व", + "c002-c-explanation": "Web3 उपयोगकर्ताओं को अपने डेटा का मालिक बनने की अनुमति देता है और इसलिए इसे 'पढ़ने-लिखने-स्वयं' के रूप में वर्णित किया गया है, Web2 पर कोई भी सुधार, जो केवल 'पढ़ना-लिखना' है।", + "c002-d-label": "पढ़ना-लिखना-खरीदना", + "c002-d-explanation": "Web3 को इस तरह से वर्णित नहीं किया गया है।", + "c003-prompt": "वेब का कौन सा पुनरावृत्ति तृतीय-पक्ष भुगतान प्रदाताओं पर निर्भर नहीं करता है?", + "c003-a-label": "Web1", + "c003-a-explanation": "Web1 में मूल, अंतर्निहित भुगतान नहीं थे।", + "c003-b-label": "Web2", + "c003-b-explanation": "Web2 में मूल, अंतर्निहित भुगतान नहीं है।", + "c003-c-label": "Web3", + "c003-c-explanation": "Web3 में ETH जैसी क्रिप्टोकरेंसी के साथ मूल, अंतर्निहित भुगतान हैं।", + "c003-d-label": "उपरोक्त सभी", + "c003-d-explanation": "Web1 और Web2 में मूल, अंतर्निहित भुगतान नहीं हैं।", + "c004-prompt": "'Web3' शब्द पहली बार किसने बोला था:", + "c004-a-label": "गेविन वुड", + "c004-a-explanation": "इथेरियम के सह-संस्थापक गेविन वुड को 2015 में इथेरियम के लॉन्च होने के तुरंत बाद Web3 शब्द को गढ़ने का श्रेय दिया जाता है।", + "c004-b-label": "स्टीव जॉब्स", + "c004-b-explanation": "स्टीव जॉब्स ने 'Web3' वाक्यांश नहीं गढ़ा।", + "c004-c-label": "वितालिक बुटेरिन", + "c004-c-explanation": "विटालिक ब्यूटिरिन, हालांकि इथेरियम के मूल संस्थापक हैं उन्होंने 'Web3' वाक्यांश नहीं गढ़ा।", + "c004-d-label": "एलन मस्क", + "c004-d-explanation": "एलन मस्क ने 'Web3' वाक्यांश नहीं गढ़ा।", + "c005-prompt": "आप इसके इस्तेमाल के माध्यम से संपूर्ण वेब पर एकल, सेंसरशिप-प्रतिरोधी लॉग-इन प्राप्त कर सकते हैं:", + "c005-a-label": "Facebook के साथ साइन इन करें", + "c005-a-explanation": "Facebook के साथ साइन-इन सेंसरशिप प्रतिरोधी नहीं है।", + "c005-b-label": "Google के साथ साइन-इन करें", + "c005-b-explanation": "Google के साथ साइन-इन सेंसरशिप प्रतिरोधी नहीं है।", + "c005-c-label": "इथेरियम के साथ साइन-इन करें", + "c005-c-explanation": "इथेरियम के साथ साइन-इन एकमात्र विकल्प है जो सेंसरशिप-प्रतिरोधी है और किसी भी वेब एप्लीकेशन पर इस्तेमाल करने योग्य है।", + "c005-d-label": "Twitter के साथ साइन इन करें", + "c005-d-explanation": "Twitter के साथ साइन-इन सेंसरशिप प्रतिरोधी नहीं है।", + "d001-prompt": "वॉलेट का सबसे सुरक्षित प्रकार है:", + "d001-a-label": "मोबाइल वॉलेट", + "d001-a-explanation": "मोबाइल वॉलेट मोबाइल डिवाइस पर निजी चाबी रखते हैं, जिसमें आम तौर पर इंटरनेट से कनेक्शन होता है और संभावित रूप से अन्य सॉफ़्टवेयर द्वारा समझौता हो गया है।", + "d001-b-label": "हार्डवेयर वॉलेट", + "d001-b-explanation": "एक हार्डवेयर वॉलेट की निजी चाबी एक समर्पित डिवाइस पर संग्रहीत की जाती हैं जिन्हें इंटरनेट से दूर रखा जा सकता है और आपके डिवाइस पर अन्य एप्लीकेशन से अलग किया जा सकता है।", + "d001-c-label": "वेब वॉलेट", + "d001-c-explanation": "वेब वॉलेट में हार्डवेयर वॉलेट की तुलना में कम सुरक्षा होती है, क्योंकि निजी चाबी इंटरनेट से जुड़े डिवाइस पर संग्रहीत होती हैं।", + "d001-d-label": "डेस्कटॉप वॉलेट", + "d001-d-explanation": "डेस्कटॉप वॉलेट कंप्यूटर हार्ड ड्राइव पर निजी चाबी रखते हैं, जिसमें आम तौर पर इंटरनेट से कनेक्शन होता है और संभावित रूप से अन्य सॉफ़्टवेयर द्वारा समझौता किया हो सकता है।", + "d002-prompt": "प्रस्तुत विकल्पों में से, आपके बीज वाक्यांश को संग्रहित करने का सबसे सुरक्षित तरीका कौन सा है?", + "d002-a-label": "आपके फ़ोन पर एक फ़ोटो में", + "d002-a-explanation": "यह सबसे सुरक्षित विकल्प नहीं है। अगर यह फोटो क्लाउड स्टोरेज पर अपलोड किया जाता है, तो एक हैकर को यह इमेज मिल जाती है और वह आपके खाते तक पहुंच प्राप्त कर लेता है।", + "d002-b-label": "आपके कंप्यूटर पर एक फ़ाइल में", + "d002-b-explanation": "यह सबसे सुरक्षित विकल्प नहीं है। हैकर लक्ष्य उपकरणों पर क्रिप्टोकरेंसी से संबंधित जानकारी तेजी से तलाश रहे हैं। अगर कोई हैकर आपके बीज वाक्यांश वाली फ़ाइल तक पहुंचता है, तो वे आपके खाते तक पहुंच प्राप्त कर लेंगे।", + "d002-c-label": "कागज पर लिखा गया", + "d002-c-explanation": "उपलब्ध विकल्पों में से, अपने बीज वाक्यांश को कागज पर लिखना सबसे सुरक्षित है।", + "d002-d-label": "परिवार के किसी विश्वसनीय सदस्य को एक टेक्स्ट संदेश में", + "d002-d-explanation": "आपको कभी भी अपना बीज वाक्यांश किसी को नहीं भेजना चाहिए। संदेश को किसी तीसरे पक्ष द्वारा इंटरसेप्ट किया जा सकता है और भले ही आप इस व्यक्ति पर पूरा भरोसा करते हों, आप नहीं जानते कि उनके फोन तक कौन पहुंच सकता है।", + "d003-prompt": "आपको अपना बीज वाक्यांश/निजी कुंजी किसे देनी चाहिए?", + "d003-a-label": "जिसे आप भुगतान कर रहे हैं", + "d003-a-explanation": "आपको कभी भी अपना बीज वाक्यांश या निजी चाबी किसी को नहीं देनी चाहिए। इसके बजाय, लेनदेन के माध्यम से उनके वॉलेट पते पर टोकन भेजें।", + "d003-b-label": "किसी dapp या वॉलेट में लॉग-इन करने के लिए", + "d003-b-explanation": "आपको अपने वॉलेट या dapp में लॉग-इन करने के लिए कभी भी अपना बीज वाक्यांश/निजी कुंजी नहीं देनी चाहिए।", + "d003-c-label": "सहयोगी कर्मचारी", + "d003-c-explanation": "आपको अपना बीज वाक्यांश / निजी चाबी कभी भी सहायक कर्मचारी होने का दावा करने वाले किसी भी व्यक्ति को नहीं देनी चाहिए। जो कोई भी आपसे यह मांग रहा है वह घोटालेबाज है।", + "d003-d-label": "कोई नहीं", + "d003-d-explanation": "आदर्श रूप से, आपको कभी भी अपना बीज वाक्यांश या निजी चाबी किसी को नहीं देनी चाहिए। अगर आप अपने धन तक पूर्ण पहुंच वाले किसी व्यक्ति (जैसे कि जीवनसाथी) पर पूरा भरोसा करते हैं, तो आप उनके साथ यह जानकारी साझा करने का निर्णय ले सकते हैं।", + "d004-prompt": "वॉलेट और इथेरियम पर खाता एक ही चीज़ हैं।", + "d004-a-label": "सही", + "d004-a-explanation": "वॉलेट एक विज़ुअल इंटरफ़ेस है जिसका इस्तेमाल इथेरियम खाते के साथ बातचीत करने के लिए किया जाता है।", + "d004-b-label": "गलत", + "d004-b-explanation": "वॉलेट एक विज़ुअल इंटरफ़ेस है जिसका इस्तेमाल इथेरियम खाते के साथ बातचीत करने के लिए किया जाता है।", + "e001-prompt": "आपको अपने सभी खातों के लिए अलग पासवर्ड का इस्तेमाल क्यों करना चाहिए?", + "e001-a-label": "अगर किसी एक प्लेटफॉर्म में डेटा चोरी होता है", + "e001-a-explanation": "यह उत्तर सही है, लेकिन अन्य सही उत्तर भी हैं।", + "e001-b-label": "अगर कोई व्यक्ति आपके कंधे पर से देख रहा है, तो वह आपका पासवर्ड निकाल लेता है", + "e001-b-explanation": "यह उत्तर सही है, लेकिन अन्य सही उत्तर भी हैं।", + "e001-c-label": "अगर मैलवेयर, जैसे कि की-लॉगर, आपका पासवर्ड चुरा लेता है", + "e001-c-explanation": "यह उत्तर सही है, लेकिन अन्य सही उत्तर भी हैं।", + "e001-d-label": "उपरोक्त सभी", + "e001-d-explanation": "सभी जवाब सही हैं। अद्वितीय पासवर्ड का इस्तेमाल करना किसी अन्य व्यक्ति को आपके खाते तक पहुंचने से रोकने का सबसे अच्छा तरीका है।", + "e002-prompt": "मर्ज के बाद, ETH को ETH2 में अपग्रेड किया जाना चाहिए।", + "e002-a-label": "सही", + "e002-a-explanation": "आपको अपने ETH को ETH2 में अपग्रेड करने की आवश्यकता नहीं है। कोई ETH2 नहीं है और यह स्कैमर्स द्वारा इस्तेमाल की जाने वाली एक सामान्य कथा है।", + "e002-b-label": "गलत", + "e002-b-explanation": "आपको अपने ETH को ETH2 में अपग्रेड करने की आवश्यकता नहीं है। कोई ETH2 नहीं है और यह स्कैमर्स द्वारा इस्तेमाल की जाने वाली एक सामान्य कथा है।", + "e003-prompt": "ETH गिवअवे में ये चीज़ें शामिल हैं:", + "e003-a-label": "अधिक ETH प्राप्त करने का एक अच्छा तरीका", + "e003-a-explanation": "ETH गिवअवे आपके ETH और अन्य टोकन चोरी करने के लिए डिज़ाइन किए गए घोटाले हैं। वे अधिक ETH प्राप्त करने का एक अच्छा तरीका कभी नहीं हैं।", + "e003-b-label": "हमेशा असली", + "e003-b-explanation": "ETH गिवअवे कभी भी वास्तविक नहीं होते हैं।", + "e003-c-label": "आमतौर पर समुदाय के प्रमुख सदस्यों द्वारा किया जाता है", + "e003-c-explanation": "प्रमुख समुदाय के सदस्य ETH गिवअवे नहीं करते हैं। स्कैमर्स दिखावा करते हैं कि एलन मस्क जैसे जाने-माने व्यक्ति, उन्हें घोटाले को वैधता की भावना देने के लिए दान कर रहे हैं।", + "e003-d-label": "एक घोटाला होने की बहुत संभावना है", + "e003-d-explanation": "ETH गिवअवे हमेशा घोटाले होते हैं। स्कैमर्स की रिपोर्टिंग और अनदेखी करना सबसे अच्छा है।", + "e004-prompt": "इथेरियम के लेनदेन उलट किये जा सकते हैं।", + "e004-a-label": "सही", + "e004-a-explanation": "इथेरियम लेनदेन को उलट नहीं किया जा सकता है। अगर कोई आपको इससे अलग जानकारी देता है, तो वह हो सकता है कि वह आपको धोखा देने की कोशिश कर रहा हो।", + "e004-b-label": "गलत", + "e004-b-explanation": "इथेरियम लेनदेन को उलट नहीं किया जा सकता है। अगर कोई आपको इससे अलग जानकारी देता है, तो वह हो सकता है कि वह आपको धोखा देने की कोशिश कर रहा हो।", + "f001-prompt": "NFT को सबसे व्यापक रूप से परिभाषित किया गया है:", + "f001-a-label": "अद्वितीय डिजिटल संपत्ति", + "f001-a-explanation": "NFT एक यूनीक डिजिटल संपत्ति का प्रतिनिधित्व करते हैं।", + "f001-b-label": "डिजिटल कलाकृति", + "f001-b-explanation": "NFT एक यूनीक डिजिटल संपत्ति का प्रतिनिधित्व करते हैं, यह आमतौर पर डिजिटल कलाकृति है, लेकिन यह कला तक सीमित नहीं है।", + "f001-c-label": "विशेष कार्यक्रमों के टिकट", + "f001-c-explanation": "NFT एक यूनीक डिजिटल संपत्ति का प्रतिनिधित्व करते हैं, यह एक टिकटिंग प्रणाली हो सकती है, लेकिन यह टिकट तक सीमित नहीं है।", + "f001-d-label": "कानूनी रूप से बाध्यकारी अनुबंध", + "f001-d-explanation": "यद्यपि एक कानूनी अनुबंध को NFT के रूप में दर्शाया जा सकता है, अकेले NFT कानूनी रूप से बाध्यकारी अनुबंधों से बाध्य नहीं हैं।", + "f002-prompt": "एक ही कलाकृति का प्रतिनिधित्व करने वाले दो NFT एक ही बात हैं।", + "f002-a-label": "सही", + "f002-a-explanation": "NFT नॉन-फ़ंजिबल हैं। इसका मतलब है कि भले ही वे डिजिटल कला के टुकड़े का प्रतिनिधित्व करते हैं, फिर भी वे विशिष्ट रूप से पहचाने जाने योग्य हैं। पारंपरिक कला की दुनिया में, यह मूल और प्रिंट के समान हो सकता है।", + "f002-b-label": "गलत", + "f002-b-explanation": "NFT नॉन-फ़ंजिबल हैं। इसका मतलब है कि भले ही वे डिजिटल कला के टुकड़े का प्रतिनिधित्व करते हैं, फिर भी वे विशिष्ट रूप से पहचाने जाने योग्य हैं। पारंपरिक कला की दुनिया में, यह मूल और प्रिंट के समान हो सकता है।", + "f003-prompt": "NFT सबसे अधिक प्रतिनिधित्व करते हैं:", + "f003-a-label": "आपके वॉलेट का पासवर्ड", + "f003-a-explanation": "यह एक सुरक्षा जोखिम है और आम तौर पर एक बुरा विचार है!", + "f003-b-label": "एक यूनीक डिजिटल आइटम का स्वामित्व", + "f003-b-explanation": "NFT आमतौर पर एक यूनीक डिजिटल आइटम के स्वामित्व का प्रतिनिधित्व करते हैं।", + "f003-c-label": "आपका वर्तमान ETH बैलेंस", + "f003-c-explanation": "NFT मनमाने ढंग से आपके ETH बैलेंस का प्रतिनिधित्व नहीं कर सकता है।", + "f003-d-label": "उपरोक्त सभी", + "f003-d-explanation": "NFT आम तौर पर एक यूनीक डिजिटल आइटम के स्वामित्व का प्रतिनिधित्व करते हैं, न कि ETH बैलेंस या वॉलेट पासवर्ड।", + "f004-prompt": "NFT ने बनाने में मदद की है एक नया:", + "f004-a-label": "क्यूरेटर अर्थव्यवस्था", + "f004-a-explanation": "NFT ने रचनाकारों के लिए एक नई अर्थव्यवस्था बनाने में मदद की, क्यूरेटर नहीं।", + "f004-b-label": "कार्बन अर्थव्यवस्था", + "f004-b-explanation": "NFT ने रचनाकारों के लिए एक नई अर्थव्यवस्था बनाने में मदद की, न कि कार्बन।", + "f004-c-label": "निर्माता अर्थव्यवस्था", + "f004-c-explanation": "NFT ने निर्माता अर्थव्यवस्था बनाने में मदद की।", + "f004-d-label": "doge अर्थव्यवस्था", + "f004-d-explanation": "NFT ने रचनाकारों के लिए एक नई अर्थव्यवस्था बनाने में मदद की, न कि doges 🐶 के लिए।", + "f005-prompt": "इथेरियम पर NFT पर्यावरण के लिए हानिकारक हैं", + "f005-a-label": "सही", + "f005-a-explanation": "मर्ज के बाद से (हिस्सेदारी के सबूत में संक्रमण), किसी भी लेनदेन का पर्यावरण पर नगण्य प्रभाव पड़ा है।", + "f005-b-label": "गलत", + "f005-b-explanation": "मर्ज के बाद से (हिस्सेदारी के सबूत में संक्रमण), किसी भी लेनदेन का पर्यावरण पर नगण्य प्रभाव पड़ा है।", + "g001-prompt": "लेयर 2 ब्लॉकचेन नेटवर्क हैं:", + "g001-a-label": "स्केलिंग इथेरियम", + "g001-a-explanation": "रोलअप और अन्य लेयर 2 समाधानों का प्राथमिक उद्देश्य इथेरियम को स्केल करना है।", + "g001-b-label": "भुगतान करना", + "g001-b-explanation": "रोलअप और अन्य लेयर 2 समाधानों का प्राथमिक उद्देश्य इथेरियम को स्केल करना है।", + "g001-c-label": "NFT खरीदना", + "g001-c-explanation": "रोलअप और अन्य लेयर 2 समाधानों का प्राथमिक उद्देश्य इथेरियम को स्केल करना है।", + "g001-d-label": "इथेरियम का विकेन्द्रीकरण", + "g001-d-explanation": "रोलअप और अन्य लेयर 2 समाधानों का प्राथमिक उद्देश्य इथेरियम को स्केल करना है।", + "g002-prompt": "स्केल करने के लिए, अधिकांश वैकल्पिक लेयर 1 नेटवर्क ने मुख्य रूप से बलिदान किया है:", + "g002-a-label": "सुरक्षा", + "g002-a-explanation": "अधिकांश वैकल्पिक लेयर 1 नेटवर्क स्केल करने के लिए सुरक्षा और कुछ पर बलिदान करते हैं।", + "g002-b-label": "विकेन्द्रीकरण", + "g002-b-explanation": "अधिकांश वैकल्पिक परत 1 नेटवर्क विकेंद्रीकरण पर बलिदान करते हैं और स्केल करने के लिए कुछ और।", + "g002-c-label": "टोकन मूल्य", + "g002-c-explanation": "टोकन मूल्य का स्केलिंग क्षमता पर कोई प्रभाव नहीं पड़ता है।", + "g002-d-label": "सुरक्षा और विकेंद्रीकरण", + "g002-d-explanation": "अधिकांश वैकल्पिक लेयर 1 नेटवर्क स्केल करने के लिए सुरक्षा और विकेंद्रीकरण दोनों पर बलिदान करते हैं।", + "g003-prompt": "निम्नलिखित में से किसे लेयर 2 नहीं माना जाता है?", + "g003-a-label": "वैलिडियम", + "g003-a-explanation": "वैलिडियम को लेयर 2 समाधान नहीं माना जाता है क्योंकि वे इथेरियम से सुरक्षा या डेटा उपलब्धता प्राप्त नहीं करते हैं", + "g003-b-label": "Sidechains", + "g003-b-explanation": "साइडचेन को लेयर 2 समाधान नहीं माना जाता है क्योंकि वे इथेरियम से सुरक्षा या डेटा उपलब्धता प्राप्त नहीं करते हैं।", + "g003-c-label": "वैकल्पिक लेयर 1 ब्लॉकचेन", + "g003-c-explanation": "वैकल्पिक लेयर 1 ब्लॉकचेन को लेयर 2 समाधान नहीं माना जाता है।", + "g003-d-label": "उपरोक्त सभी", + "g003-d-explanation": "वैलिडियम, साइडचेन और वैकल्पिक लेयर 1 ब्लॉकचेन को लेयर 2 समाधान नहीं माना जाता है क्योंकि वे इथेरियम से सुरक्षा या डेटा उपलब्धता प्राप्त नहीं करते हैं।", + "g004-prompt": "इथेरियम में 'आधिकारिक' लेयर 2 क्यों नहीं है?", + "g004-a-label": "कोर डेवलपर्स इथेरियम पर काम करने में बहुत व्यस्त हैं", + "g004-a-explanation": "इथेरियम पर 'आधिकारिक' लेयर 2 के लिए कोई योजना नहीं है क्योंकि हम लेयर 2 समाधानों को डिजाइन करने के लिए विभिन्न प्रकार के दृष्टिकोणों से लाभान्वित होंगे।", + "g004-b-label": "L1 के रूप में, इथेरियम अंततः अपने दम पर बड़े पैमाने पर स्केलिंग तक पहुंच जाएगा", + "g004-b-explanation": "इथेरियम पर 'आधिकारिक' लेयर 2 के लिए कोई योजना नहीं है क्योंकि हम लेयर 2 समाधानों को डिजाइन करने के लिए विभिन्न प्रकार के दृष्टिकोणों से लाभान्वित होंगे।", + "g004-c-label": "कोर डेवलपर्स अभी भी आशावादी और zk-रोलअप के बीच बहस कर रहे हैं", + "g004-c-explanation": "इथेरियम पर 'आधिकारिक' लेयर 2 के लिए कोई योजना नहीं है क्योंकि हम लेयर 2 समाधानों को डिजाइन करने के लिए विभिन्न प्रकार के दृष्टिकोणों से लाभान्वित होंगे।", + "g004-d-label": "इथेरियम को L2 डिजाइन करने के लिए विभिन्न प्रकार के दृष्टिकोणों से लाभ होगा", + "g004-d-explanation": "इथेरियम पर 'आधिकारिक' लेयर 2 के लिए कोई योजना नहीं है क्योंकि हम लेयर 2 समाधानों को डिजाइन करने के लिए विभिन्न प्रकार के दृष्टिकोणों से लाभान्वित होंगे।", + "h001-prompt": "मर्ज ने इथेरियम को किस आम सहमति तंत्र पर स्थानांतरित कर दिया?", + "h001-a-label": "काम का प्रमाण", + "h001-a-explanation": "काम का सबूत मर्ज से पहले इस्तेमाल किया जाने वाला आम सहमति तंत्र था।", + "h001-b-label": "स्टेक-का-प्रमाण", + "h001-b-explanation": "सही! मर्ज ने इथेरियम को हिस्सेदारी के सबूत पर स्थानांतरित कर दिया।", + "h001-c-label": "Proof-of-authority", + "h001-c-explanation": "इथेरियम नहीं करता है, और इथेरियम मेननेट पर कभी भी प्रूफ-ऑफ-अथॉरिटी का इस्तेमाल नहीं किया है।", + "h001-d-label": "उपरोक्त सभी", + "h001-d-explanation": "इथेरियम के लिए एक बार में इन सभी आम सहमति तंत्रों को रखना संभव नहीं होगा।", + "h002-prompt": "मर्ज ने इथेरियम की ऊर्जा खपत को कम कर दिया:", + "h002-a-label": "50%", + "h002-a-explanation": "मर्ज द्वारा काम के सबूत से हिस्सेदारी के सबूत में संक्रमण को सक्षम करने के बाद इथेरियम की ऊर्जा खपत 99.95% कम हो गई थी।", + "h002-b-label": "62.5%", + "h002-b-explanation": "मर्ज द्वारा काम के सबूत से हिस्सेदारी के सबूत में संक्रमण को सक्षम करने के बाद इथेरियम की ऊर्जा खपत 99.95% कम हो गई थी।", + "h002-c-label": "90%", + "h002-c-explanation": "मर्ज द्वारा काम के सबूत से हिस्सेदारी के सबूत में संक्रमण को सक्षम करने के बाद इथेरियम की ऊर्जा खपत 99.95% कम हो गई थी।", + "h002-d-label": "99.95%", + "h002-d-explanation": "मर्ज द्वारा काम के सबूत से हिस्सेदारी के सबूत में संक्रमण को सक्षम करने के बाद इथेरियम की ऊर्जा खपत 99.95% कम हो गई थी।", + "h003-prompt": "मर्ज कब हुआ था?", + "h003-a-label": "15 सितंबर 2022", + "h003-a-explanation": "मर्ज 15 सितंबर 2022 को सुबह 06:42:42 बजे (UTC) हुआ।", + "h003-b-label": "1 दिसंबर 2021", + "h003-b-explanation": "मर्ज इसके बाद हुआ। 1 दिसंबर 2022 को बीकन चेन लॉन्च किया गया था।", + "h003-c-label": "27 नवम्बर 2013", + "h003-c-explanation": "मर्ज इसके बाद हुआ। 27 नवंबर, 2013 को इथेरियम श्वेतपत्र जारी किया गया था।", + "h003-d-label": "31 अक्टूबर 2008", + "h003-d-explanation": "मर्ज इसके बाद हुआ। 31 अक्टूबर वह दिन है जब Bitcoin श्वेतपत्र जारी किया गया था।", + "h004-prompt": "मर्ज का मतलब था कि उपयोगकर्ताओं को ETH2 के लिए अपने ETH का आदान-प्रदान करना था:", + "h004-a-label": "सही", + "h004-a-explanation": "मर्ज से पहले, दौरान या बाद में किसी भी बिंदु पर ETH नहीं बदला। ETH को ETH2 में 'अपग्रेड' करने का विचार दुर्भावनापूर्ण अभिनेताओं द्वारा उपयोगकर्ताओं को धोखा देने के लिए एक आम रणनीति थी।", + "h004-b-label": "गलत", + "h004-b-explanation": "मर्ज से पहले, दौरान या बाद में किसी भी बिंदु पर ETH नहीं बदला। ETH को ETH2 में 'अपग्रेड' करने का विचार दुर्भावनापूर्ण अभिनेताओं द्वारा उपयोगकर्ताओं को धोखा देने के लिए एक आम रणनीति थी।", + "h005-prompt": "इथेरियम की आम सहमति लेयर को पहले किस रूप में जाना जाता था:", + "h005-a-label": "काम का प्रमाण", + "h005-a-explanation": "काम का सबूत मर्ज से पहले इस्तेमाल किया जाने वाला आम सहमति तंत्र था।", + "h005-b-label": "Eth2", + "h005-b-explanation": "आम सहमति लेयर का नाम बदलने से पहले, इसे मूल रूप से 'Eth2' कहा जाता था।", + "h005-c-label": "Eth1", + "h005-c-explanation": "Eth1 निष्पादन लेयर को दिया गया मूल नाम था, न कि आम सहमति लेयर।", + "h005-d-label": "स्टेकिंग", + "h005-d-explanation": "स्टेकिंग श्रृंखला को सुरक्षित करने में मदद करने के लिए ETH को एक स्मार्ट अनुबंध में जमा कर रहा है।" +} diff --git a/src/intl/hi/page-learn.json b/src/intl/hi/page-learn.json new file mode 100644 index 00000000000..a1cfef3ea4b --- /dev/null +++ b/src/intl/hi/page-learn.json @@ -0,0 +1,123 @@ +{ + "toc-learn-hub": "लर्न हब", + "toc-what-is-crypto-ethereum": "इथेरियम क्या है?", + "toc-how-do-i-use-ethereum": "मैं इथेरियम का इस्तेमाल कैसे करूं?", + "toc-what-is-ethereum-used-for": "इथेरियम का इस्तेमाल किस लिए किया जाता है?", + "toc-strengthen-the-ethereum-network": "इथेरियम नेटवर्क को मजबूत करें", + "toc-learn-about-the-ethereum-protocol": "इथेरियम प्रोटोकॉल के बारे में जानें", + "toc-learn-about-the-ethereum-community": "इथेरियम संप्रदाय के बारे में जानें", + "toc-books-and-podcasts": "किताबें और पॉडकास्ट", + "hero-header": "इथेरियम के बारे में जानें", + "hero-subtitle": "इथेरियम की दुनिया तक के सफर में आपका शैक्षिक मार्गदर्शक। जानें कि इथेरियम कैसे काम करता है और इसको कैसे कनेक्ट करते हैं। इस पृष्ठ में तकनीकी और गैर-तकनीकी लेख, मार्गदर्शिकाएँ और संसाधन शामिल हैं।", + "hero-button-lets-get-started": "आइए शुरू करते हैं", + "what-is-crypto-1": "आपने क्रिप्टोकरेंसी, ब्लॉकचेन और Bitcoin के बारे में सुना होगा। निचे मौजूद लिंक आपको यह सीखने में सहायता करेंगे कि वे क्या हैं और वो इथेरियम से कैसे सम्बंधित हैं।", + "what-is-crypto-2": "क्रिप्टोकरेंसी, जैसे कि Bitcoin, यह किसी को भी वैश्विक स्तर पर धन के स्थानांतरण में सक्षम बनाते हैं। इथेरियम भी यह करता हैं, लेकिन यह कोड भी चला सकता है जो लोगों को ऐप्स और संगठनो को बनाने में सक्षम बनाता है। यह तन्यक और लचीला दोनों हैं: इथेरियम पर कोई भी कंप्यूटर प्रोग्राम चल सकता है। ज़्यादा जानें और पता लगाएं कि शुरुआत कैसे करनी है:", + "what-is-ethereum-card-title": "इथिरीयम क्या है?", + "what-is-ethereum-card-description": "अगर आप नए हैं, तो यहां से जानें कि इथेरियम क्यों मायने रखता हैं।", + "what-is-ethereum-card-image-alt": "Ethereum को दर्शाने के लिए, बाज़ार में झाँकते एक व्यक्ति का चित्रण।", + "what-is-eth-card-title": "ETH क्या हैं?", + "what-is-eth-description": "इथर (ETH) एक मुद्रा है जो कि इथेरियम नेटवर्क और ऐप्लिकेशन को शक्ति प्रदान करती हैं।", + "what-is-web3-card-title": "Web3 क्या है?", + "what-is-web3-card-description": "Web3 इंटरनेट के लिए एक मॉडल है जो आपकी पहचान और सम्पत्ति के स्वामित्व को महत्व देता हैं।", + "additional-reading-more-on-ethereum-basics": "इथेरियम की मूल बातों के बारे में अधिक जानकारी", + "guides-hub-desc": "गाइडें: इथेरियम के इस्तेमाल पर स्टेप-बाई-स्टेप जानकारी", + "quiz-hub-desc": "क्विज़ हब: अपने ज्ञान को टेस्ट करें", + "additional-reading-what-are-smart-contracts": "स्मार्ट अनुबंध क्या हैं?", + "additional-reading-what-is-web3": "Web3 क्या है?", + "additional-reading-ethereum-in-thirty-minutes": "विटालिक ब्यूटरिन द्वारा 30 मिनट में इथेरियम", + "additional-reading-get-eth": "जानें कि ETH कैसे प्राप्त करें", + "how-do-i-use-ethereum-1": "बहुत सारे लोग अलग-अलग काम के लिए इथेरियम का इस्तेमाल करते हैं। हो सकता है की आपको किसी ऐप्लिकेशन में साइन-इन करना हो, अपनी ऑनलाइन पहचान दिखानी हो या फिर कुछ ETH भेजने हों। इसके लिए सबसे पहले आपको एक खाते की ज़रूरत पड़ेगी। कोई खाता बनाने और उसे ऐक्सेस करने का सबसे आसान तरीका है वॉलेट नाम का यह सॉफ्टवेयर।", + "what-is-a-wallet-card-title": "वॉलेट क्या हैं?", + "what-is-a-wallet-card-description": "डिजिटल वॉलेट एक वास्तविक वॉलेट की तरह है; वे चीजों को संग्रहित करते है जो आपको अपनी पहचान साबित करने में जरूरत होती है और उन स्थानों तक पहुंच प्राप्त करते हैं जिन्हें आप महत्व देते हैं।", + "what-is-a-wallet-card-alt": "एक रोबोट का चित्रण।", + "find-a-wallet-card-title": "वॉलेट खोजें", + "find-a-wallet-card-description": "आपके लिए मायने रखने वाली सुविधाओं के आधार पर वॉलेट ब्राउज करें।", + "find-a-wallet-button": "वॉलेट की सूची", + "crypto-security-basics-card-title": "सुरक्षा की मूल बातें", + "crypto-security-basics-card-description": "जानें कि कैसे घोटालों की पहचान करें और कैसे सबसे आम चालों से बचें।", + "crypto-security-basics-card-button": "सुरक्षित रहें", + "things-to-consider-banner-title": "इथेरियम का इस्तेमाल करते वक्त ध्यान देने योग्य बातें", + "things-to-consider-banner-1": "हर इथेरियम ट्रांजेक्शन में ETH के रूप में शुल्क की आवश्यकता होती है, भले ही आपको इथेरियम पर बनाए गए विभिन्न टोकन जैसे स्टेबलकॉइन USDC या DAI को स्थानांतरित करने की आवश्यकता है।", + "things-to-consider-banner-2": "अगर एक ही समय पर बहुत लोग इथेरियम का इस्तेमाल करने की कोशिश कर रहे हों, शुल्क ज़्यादा हो सकता है, इसलिए हम ये सलाह देते हैं", + "things-to-consider-banner-layer-2": "लेयर 2s", + "additional-reading-more-on-using-ethereum": "इथेरियम के इस्तेमाल पर अधिक जानकारी", + "additional-reading-how-to-create-an-ethereum-account": "इथेरियम खाते को कैसे बनाएं", + "additional-reading-how-to-use-a-wallet": "वॉलेट का उपयोग कैसे करें", + "additional-reading-layer-2": "लेयर 2: लेनदेन शुल्क कम करना", + "what-is-ethereum-used-for-1": "इथेरियम से नए उत्पादों और सेवाओं के निर्माण का संचालन हो रहा है जिससे हमारे जीवन के अलग-अलग हिस्सों में सुधार हो सकता है। हम अभी भी शुरुआती चरण में है, लेकिन हमारी उत्साहना के लिए अभी बहुत कुछ बाकी है।", + "defi-card-title": "विकेंद्रीकृत वित्त (DeFi)", + "defi-card-description": "वैकल्पिक वित्तीय प्रणाली को एक्सप्लोर करें जो बिना बैंकों के बनी हो और जिसे सभी इस्तेमाल कर सकें।", + "defi-card-button": "What is DeFi?", + "stablecoins-card-title": "स्टेबल कॉइंस", + "stablecoins-card-description": "क्रिप्टोकरेंसी किसी मुद्रा, व्यापार की वस्तु या कुछ ओर वित्तीय उपकरण के मूल्य के बराबर होती है।", + "stablecoins-card-button": "स्टेबलकॉइन क्या हैं?", + "nft-card-title": "अपूरणीय टोकन (NFT)", + "nft-card-description": "कला से लेकर शीर्षक विलेख से लेकर संगीत समारोह के टिकट तक, सभी अनोखी वस्तुओं के स्वामित्व का प्रतिनिधित्व करता है।", + "nft-card-button": "NFT क्या हैं?", + "dao-card-title": "विकेन्द्रीकृत स्वायत्त संगठन (DAO)", + "dao-card-description": "बिना बॉस के काम में समन्वय के नए तरीके सक्षम करें।", + "dao-card-button": "डीएओ क्या होते हैं?", + "dapp-card-title": "विकेंद्रीकृत अनुप्रयोग (dapps)", + "dapp-card-description": "पीयर-टू-पीयर सेवाओं की डिजिटल अर्थव्यवस्था बनाएं।", + "dapp-card-button": "dapps का अन्वेषण करें", + "emerging-use-cases-title": "उभरते उपयोग के मामले", + "emerging-use-cases-description": "इथेरियम के साथ अन्य प्रमुख उद्योगों का निर्माण या उन्नति हो रही है:", + "play-to-earn": "प्ले-टू-अर्न खेल (P2E)", + "fundraising-through-quadratic-funding": "क्वाड्रेटिक फंडिंग के माध्यम से धन बढ़ाना", + "supply-chain-management": "सप्लाई चेन मेनेजमेंट", + "more-on-ethereum-use-cases": "इथेरियम इस्तेमाल के मामलों पर अधिक जानकारी", + "more-on-ethereum-use-cases-link": "विकासशील देशों में ब्लॉकचेन", + "strengthening-the-ethereum-network-description": "आप अपने ETH की स्टेकिंग करके इथेरियम को सुरक्षित रखने में मदद और इसी समय पर पुरस्कार भी अर्जित कर सकते है। आपके तकनीकी ज्ञान और आपके पास कितने ETH है, इस आधार पर वहाँ स्टेकिंग के विभिन्न विकल्प है।", + "staking-ethereum-card-title": "इथेरियम स्टेकिंग", + "staking-ethereum-card-description": "सीखने की कैसे आपके ETH की स्ट्रिंग शुरू करें।", + "staking-ethereum-card-button": "स्टेकिंग शुरू करें", + "run-a-node-card-title": "नोड चलाएँ", + "run-a-node-card-description": "एक नोड को चला कर इथेरियम नेटवर्क में एक गंभीर भूमिका निभाएं।", + "learn-about-ethereum-protocol-description": "इथेरियम नेटवर्क के तकनीकी भाग में ज़्यादा रुचि रखने वाले यूज़र के लिए।", + "energy-consumption-card-title": "ऊर्जा की खपत", + "energy-consumption-card-description": "इथेरियम कितनी ऊर्जा का इस्तेमाल करता है?", + "energy-consumption-card-button": "क्या इथेरियम ग्रीन है?", + "ethereum-upgrades-card-title": "एथेरियम दिशानिर्देश", + "ethereum-upgrades-card-description": "इथेरियम का रोडमैप इसको और स्कैलेबल, सुरक्षित, और टिकाऊ बनाता है।", + "ethereum-upgrades-card-button": "रोडमैप का एक्सप्लोर करें", + "ethereum-whitepaper-card-title": "Ethereum व्हाइटपेपर", + "ethereum-whitepaper-card-description": "मूल इथेरियम प्रस्ताव 2014 में विटालिक बूटरिन द्वारा लिखा गया।", + "ethereum-whitepaper-card-button": "व्हाइटपेपर पढ़ें", + "more-on-ethereum-protocol-title": "इथेरियम प्रोटोकॉल पर अधिक जानकारी", + "more-on-ethereum-protocol-ethereum-for-developers": "डेवलपर के लिए इथेरियम", + "more-on-ethereum-protocol-consensus": "इथेरियम का हिस्सेदारी का सबूत आम सहमति तंत्र पर आधारित है", + "more-on-ethereum-protocol-evm": "इथेरियम के एम्बेडेड कंप्यूटर (EVM)", + "more-on-ethereum-protocol-nodes-and-clients": "इथेरियम के नोड और क्लाइंट", + "ethereum-community-description": "इथेरियम की सफलता के लिए इसकी अविश्वसनीय रूप से समर्पित समुदाय का धन्यवाद। हजारों प्रेरक और प्रेरित लोग इथेरियम के दृष्टिकोण को आगे बढ़ाने में मदद करते है, साथ ही हिस्सेदारी और शासन के माध्यम से नेटवर्क को सुरक्षा भी प्रदान करते है। आओ और हमसे जुड़ो!", + "community-hub-card-title": "सामुदायिक फ़ोरम", + "community-hub-card-description": "हमारे समुदाय में हर वर्ग के लोग शामिल हैं।", + "community-hub-card-alt": "एक साथ काम कर रहे बिल्डर्स के समूह का चित्रण।", + "community-hub-card-button": "ज़्यादा एक्सप्लोर करें", + "get-involved-card-title": "मैं कैसे शामिल हो सकता हूं?", + "get-involved-card-description": "इथेरियम के समुदाय में योगदान के लिए आपका (हां, आपका!) स्वागत है।", + "online-communities-card-title": "ऑनलाइन समुदाय", + "online-communities-card-description": "ऑनलाइन समुदाय विशेष प्रश्न पूछने या उनके साथ शामिल होने का शानदार अवसर देती है।", + "online-communities-card-button": "समुदायों का समन्वेषण करें", + "books-about-ethereum": "इथेरियम के बारे में पुस्तकें", + "proof-of-stake-title": "हिस्सेदारी का सबूत", + "proof-of-stake-description": "13 सितंबर, 2022 - विटालिक ब्यूटिरिन, नाथन श्नाइडर", + "cryptopians-title": "क्रिप्टोपियंस", + "cryptopians-description": "22 फरवरी, 2022 - लौरा शिन", + "out-of-the-ether-title": "आउट ऑफ़ द इथर", + "out-of-the-ether-description": "29 सितंबर, 2020 - मैथ्यू लीज़िग", + "the-infinite-machine-title": "द इनफ़िनाइट मशीन", + "the-infinite-machine-description": "14 जुलाई, 2020 - कैमिला रूसो", + "mastering-ethereum-title": "मास्टरिंग इथेरियम", + "mastering-ethereum-description": "23 दिसंबर, 2018 - एंड्रियास एम. एंटोनोपोलोस, गेविन वुड Ph.D।", + "podcasts-about-ethereum": "इथेरियम के बारे में पॉडकास्ट", + "bankless-title": "बैंकलेस", + "bankless-description": "क्रिप्टो फाइनेंस के लिए एक गाइड", + "zeroknowledge-title": "जीरो नॉलेज", + "zeroknowledge-description": "यह उस तकनीक की गहराई में उतरता है जो उभरते विकेन्द्रीकृत वेब और इसे बनाने वाले समुदाय को शक्ति देता है", + "green-pill-title": "हरी गोली", + "green-pill-description": "क्रिप्टो-आर्थिक प्रणाली को एक्सप्लोर करें जो दुनिया के लिए सकारात्मक बाह्यताएं बनाती है", + "unchained-title": "अनचैन्ड", + "unchained-description": "विकेंद्रीकृत इंटरनेट का निर्माण करने वाले लोगों, इस तकनीक का विवरण जो हमारे भविष्य को रेखांकित करता है और क्रिप्टो में कुछ सबसे कठिन विषय जैसे की विनियम, सुरक्षा और गोपनीयता आदि, के बारे में गहराई से जानकारी देता है", + "the-daily-gwei-title": "The Daily Gwei", + "the-daily-gwei-description": "इथेरियम के समाचार पुनर्कथन, अद्यतन और विश्लेषण" +} diff --git a/src/intl/hi/page-staking-deposit-contract.json b/src/intl/hi/page-staking-deposit-contract.json index 85d2b56dc23..ca9204be4a9 100644 --- a/src/intl/hi/page-staking-deposit-contract.json +++ b/src/intl/hi/page-staking-deposit-contract.json @@ -1,9 +1,9 @@ { - "page-staking-deposit-contract-address": "Eth2 जमा अनुबंध पता", + "page-staking-deposit-contract-address": "स्टेकिंग जमा अनुबंध पता", "page-staking-deposit-contract-address-caption": "हमने पते को पढ़ना आसान बनाने के लिए स्थान जोड़े हैं", "page-staking-deposit-contract-address-check-btn": "जमा अनुबंध का पता जांचें", - "page-staking-deposit-contract-checkbox1": "मैंने अपना Eth2 सत्यापनकर्ता सेट करने के लिए पहले ही लॉन्चपैड का उपयोग किया है।", - "page-staking-deposit-contract-checkbox2": "मैं समझता हूं कि मुझे लॉन्चपैड का उपयोग करने की जरूरत है। इस पते पर सरल स्थानान्तरण से काम नहीं चलेगा।", + "page-staking-deposit-contract-checkbox1": "मैंने अपना एथेरियम सत्यापनकर्ता सेट करने के लिए पहले ही लॉन्चपैड का उपयोग कर लिया है।", + "page-staking-deposit-contract-checkbox2": "मैं समझता हूं कि मुझे स्टेक करने के लिए लॉन्चपैड का उपयोग करने की जरूरत है। इस पते पर सरल स्थानान्तरण से काम नहीं चलेगा।", "page-staking-deposit-contract-checkbox3": "मैं अन्य स्रोतों के साथ जमा अनुबंध पते की जांच करने जा रहा हूं।", "page-staking-deposit-contract-confirm-address": "पता दिखाने की पुष्टि करें", "page-staking-deposit-contract-copied": "कॉपी किया गया पता", @@ -12,17 +12,17 @@ "page-staking-deposit-contract-h2": "यह वह जगह नहीं है, जहां आप स्टेक करते हैं", "page-staking-deposit-contract-launchpad": "लॉन्चपैड का उपयोग करके स्टेक करें", "page-staking-deposit-contract-launchpad-2": "लॉन्चपैड का उपयोग करें", - "page-staking-deposit-contract-meta-desc": "Eth2 स्टेकिंग के लिए जमा अनुबंध पता सत्यापित करें।", - "page-staking-deposit-contract-meta-title": "Eth2 जमा अनुबंध पता", + "page-staking-deposit-contract-meta-desc": "एथेरियम स्टेकिंग के लिए जमा अनुबंध पता सत्यापित करें।", + "page-staking-deposit-contract-meta-title": "एथेरियम स्टेकिंग जमा अनुबंध पता", "page-staking-deposit-contract-read-aloud": "पते को ज़ोर से पढ़ें", "page-staking-deposit-contract-reveal-address-btn": "पता दिखाएं", - "page-staking-deposit-contract-staking": " Eth2 में अपने ETH को स्टेक करने के लिए आपको समर्पित लॉन्चपैड उत्पाद का उपयोग करना चाहिए और निर्देशों का पालन करना चाहिए। इस पृष्ठ पर दिए गए पते पर ETH भेजने से आप स्टेकर नहीं बनेंगे और परिणामस्वरूप लेनदेन असफल हो जाएगा।", + "page-staking-deposit-contract-staking": "अपने ETH को स्टेक करने के लिए आपको समर्पित लॉन्चपैड उत्पाद का उपयोग करना और निर्देशों का पालन करना होगा। इस पृष्ठ पर दिए गए पते पर ETH भेजने से आप स्टेकर नहीं बनेंगे और परिणामस्वरूप लेन-देन असफल हो जाएगा।", "page-staking-deposit-contract-staking-check": "इन स्रोतों की जाँच करें", - "page-staking-deposit-contract-staking-check-desc": "हम उम्मीद करते हैं कि वहां बहुत सारे नकली पते और धोखाधड़ियां होंगी। सुरक्षित होने के लिए, इस पृष्ठ पर दिए गए पते के विरुद्ध उपयोग किए जा रहे Eth2 स्टेकिंग पते की जाँच करें। हम इसे अन्य भरोसेमंद स्रोतों से भी जाँचने की सलाह देते हैं।", + "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": " यह Eth2 स्टेकिंग अनुबंध का पता है। जब आप स्टेक कर रहे हों, तो सही पते पर धन भेजने की पुष्टि करने के लिए इस पृष्ठ का उपयोग करें।", + "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/hi/page-staking.json b/src/intl/hi/page-staking.json index ee0e5fbff19..075edc0dcd3 100644 --- a/src/intl/hi/page-staking.json +++ b/src/intl/hi/page-staking.json @@ -1,9 +1,237 @@ { - "page-staking-image-alt": "eth2 लॉन्चपैड के लिए राइनो मैस्कट की छवि।", - "page-staking-description": "स्टेकिंग सत्यापनकर्ता सॉफ़्टवेयर को सक्रिय करने के लिए 32 ETH जमा करने का कार्य है। एक सत्यापनकर्ता के रूप में आप डेटा को संग्रहीत करने, लेनदेन को संसाधित करने और ब्लॉकचेन में नए ब्लॉक जोड़ने के लिए जिम्मेदार होंगे। इससे इथेरियम सभी के लिए सुरक्षित रहेगा और आपको इस प्रक्रिया में नया ETH प्राप्त होगा। बीकन चेन द्वारा स्टेक-के-प्रमाण के रूप में जानी जाने वाली इस प्रक्रिया की शुरुआत की जा रही है।", + "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-new-title": "नये स्टेकर्स (जिन्होंने अभी तक जमा नहीं किया है)", + "comp-withdrawal-comparison-new-li-1": "डिफ़ॉल्ट रूप से, नए स्टेकर्स जो इनाम भुगतान और निकासी कार्यक्षमता को स्वचालित रूप से सक्रिय करना चाहते हैं, उन्हें एक इथेरियम निकासी पता प्रदान करना चाहिए जिसे वे नियंत्रित करते हैं जब वे स्टेकिंग डिपॉजिट CLI उपकरण का उपयोग करके अपनी वैलिडेटर कुंजियां जेनरेट करते हैं", + "comp-withdrawal-comparison-new-li-2": "जमा करते समय इसकी जरूरत नहीं है, लेकिन बाद में आपके फ़ंड को अनलॉक करने के लिए इन कुंजियों को अपडेट करने की आवश्यकता नहीं होगी", + "comp-withdrawal-comparison-new-p": "स्टेकिंग लॉन्चपैड, स्टेकिंग ऑनबोर्डिंग में आपका मार्गदर्शन करेगा।", + "comp-withdrawal-comparison-new-link": "स्टेकिंग लॉन्चपैड पर जाएं", + "comp-withdrawal-credentials-placeholder": "वैलिडेटर सूची", + "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-image-alt": "स्टेकिंग लॉन्चपैड के लिए राइनो मास्कोट की तस्वीर।", + "page-staking-benefits-1-title": "पुरस्कार कमाएं", + "page-staking-benefits-1-description": "पुरस्कार उन कार्यों के लिए दिए जाते हैं, जो नेटवर्क को आम सहमति तक पहुंचने में मदद करते हैं। आपको ऐसे सॉफ़्टवेयर चलाने के लिए पुरस्कार मिलेगा जो एक नए ब्लॉक में लेनदेन की ठीक से बैच बनाता है और अन्य सत्यापनकर्ताओं के काम की जांच करता है, क्योंकि इसी के कारण से चेन सुचारू रूप से चल रही है।", + "page-staking-benefits-2-title": "बेहतर सुरक्षा", + "page-staking-benefits-2-description": "नेटवर्क, हमलों के खिलाफ़ मजबूत हो जाता है, क्योंकि अधिक ETH स्टेक पर लगाया जाता है, क्योंकि तब नेटवर्क के बहुमत को नियंत्रित करने के लिए अधिक ETH की आवश्यकता होती है। खतरा बनने के लिए, आपको सत्यापनकर्ताओं के बहुमत को बनाए रखने की ज़रूरत होगी, जिसका अर्थ है कि आपको सिस्टम में अधिकांश ETH को नियंत्रित करने की आवश्यकता होगी-यह बहुत है!", + "page-staking-benefits-3-title": "अधिक टिकाऊ", + "page-staking-benefits-3-description": "नेटवर्क को सुरक्षित करने में भाग लेने के लिए हितधारकों को ऊर्जा-गहन प्रूफ-ऑफ-वर्क कम्प्यूटेशन करने की आवश्यकता नहीं है, जिसका अर्थ है कि नोड बहुत कम ऊर्जा का उपयोग करके अपेक्षाकृत मामूली हार्डवेयर पर चल सकते हैं।", + "page-staking-benefits-3-link": "इथेरियम की ऊर्जा खपत के बारे में अधिक जानकारी", + "page-staking-description": "स्टेकिंग सत्यापनकर्ता सॉफ़्टवेयर को सक्रिय करने के लिए 32 ETH जमा करने की क्रिया है। एक सत्यापनकर्ता के रूप में आप डेटा संग्रहीत करने, लेनदेन संसाधित करने और ब्लॉकचेन में नए ब्लॉक जोड़ने के लिए जिम्मेदार होंगे। यह इथेरियम को सभी के लिए सुरक्षित रखेगा और इस प्रक्रिया में आपको नया ETH अर्जित करेगा।", + "page-staking-hero-title": "अपने ETH को कैसे स्टेक करें", + "page-staking-hero-header": "इथेरियम को सुरक्षित करते हुए पुरस्कार अर्जित करें", + "page-staking-hero-subtitle": "स्टेकिंग इथेरियम पारिस्थितिकी तंत्र के लिए एक सार्वजनिक भलाई है। ETH की किसी भी राशि वाला कोई भी उपयोगकर्ता नेटवर्क को सुरक्षित करने में मदद कर सकता है और इस प्रक्रिया में पुरस्कार अर्जित कर सकता है।", + "page-staking-dropdown-home": "स्टेकिंग होम", + "page-staking-dropdown-solo": "एकल दांव", + "page-staking-more-on-solo": "सोलो स्टेकिंग के बारे में अधिक जानकारी", + "page-staking-learn-more-solo": "सोलो स्टेकिंग के बारे में अधिक जानें", + "page-staking-dropdown-saas": "एक सेवा के रूप में स्टेकिंग", + "page-staking-saas-with-abbrev": "Staking as a service (SaaS)", + "page-staking-more-on-saas": "सेवा के रूप में स्टेकिंग पर अधिक जानकारी", + "page-staking-learn-more-saas": "सेवा के रूप में स्टेकिंग के बारे में ज़्यादा जानें", + "page-staking-dropdown-pools": "जमा हुआ दाव", + "page-staking-dropdown-withdrawals": "निकासी के बारे में", + "page-staking-dropdown-dvt": "वितरित सत्यापनकर्ता प्रौद्योगिकी", + "page-staking-more-on-pools": "पूल्ड स्टेकिंग के बारे में अधिक जानकारी", + "page-staking-learn-more-pools": "पूल्ड स्टेकिंग के बारे में अधिक जानें", + "page-staking-section-what-title": "स्टेकिंग क्या है?", + "page-staking-section-what-link": "जानें कि ETH कैसे प्राप्त करें", + "page-staking-section-why-title": "अपना ETH स्टेक पर क्यों लगाएं?", + "page-staking-section-why-p1": "यह सब इस बात पर निर्भर करता है कि आप कितना स्टेक करने के लिए तैयार हैं। आपको सत्यापनकर्ता बनने के लिए 32 ETH की आवश्यकता होगी, लेकिन कम स्टेक करना संभव है।", + "page-staking-section-why-p2": "नीचे दिए गए विकल्पों की जांच करें और उस विकल्प के लिए जाएं जो आपके लिए और नेटवर्क के लिए सबसे अच्छा है।", + "page-staking-guide-title-coincashew-ethereum": "CoinCashew' की इथेरियम 2.0 गाइड", + "page-staking-guide-title-somer-esat": "सोमर इसेट", + "page-staking-guide-title-rocket-pool": "राकेट पूल नोड ऑपरेटर", + "page-staking-guide-description-linux": "Linux (CLI)", + "page-staking-guide-description-mac-linux": "Linux, macOS (CLI)", + "page-staking-hierarchy-solo-h2": "सोलो होम स्टेकिंग", + "page-staking-hierarchy-solo-pill-1": "सबसे प्रभावशाली", + "page-staking-hierarchy-solo-pill-2": "पूर्ण नियंत्रण", + "page-staking-hierarchy-solo-pill-3": "पूर्ण पुरस्कार", + "page-staking-hierarchy-solo-pill-4": "विश्वासहीन", + "page-staking-hierarchy-solo-p1": "इथेरियम पर सोलो स्टेकिंग, स्टेकिंग के लिए स्वर्ण मानक है। यह पूर्ण भागीदारी पुरस्कार प्रदान करता है, नेटवर्क के विकेंद्रीकरण में सुधार करता है और कभी भी अपने धन के साथ किसी और पर भरोसा करने की ज़रूरत नहीं होती है।", + "page-staking-hierarchy-solo-p2": "सोलो स्टेकिंग पर विचार करने वालों के पास कम से कम 32 ETH और एक समर्पित कंप्यूटर ~ 24/7 इंटरनेट से जुड़ा होना चाहिए। कुछ तकनीकी जानकारी सहायक है, लेकिन इस प्रक्रिया को सरल बनाने में मदद करने के लिए उपयोग में आसान उपकरण अब मौजूद हैं।", + "page-staking-hierarchy-saas-pill-1": "आपके 32 ETH", + "page-staking-hierarchy-saas-pill-2": "आपकी सत्यापनकर्ता कुंजी", + "page-staking-hierarchy-saas-pill-3": "एनट्रस्टेड नोड ऑपरेशन", + "page-staking-hierarchy-saas-p1": "अगर आपको हार्डवेयर पर काम नहीं करना या ऐसा करना सहज महसूस नहीं होता, लेकिन फिर भी अपने 32 ETH को स्टेक करना चाहते हैं, तो स्टेकिंग-एस-ए-सर्विस विकल्प आपको कठिन हिस्से का विधिवत सौंपने की अनुमति देते हैं, जबकि आप मूल ब्लॉक मुनाफ़ा कमाते हैं।", + "page-staking-hierarchy-saas-p2": "ये विकल्प आम तौर पर आपको सत्यापनकर्ता क्रेडेंशियल का एक सेट बनाने, उनमें अपनी हस्ताक्षर कुंजी अपलोड करने और अपना 32 ETH जमा करने में मदद करते हैं। यह सेवा को आपकी ओर से मान्य करने की अनुमति देता है।", + "page-staking-hierarchy-saas-p3": "स्टेकिंग की इस पद्धति के लिए प्रदाता में एक निश्चित स्तर के विश्वास की आवश्यकता होती है। काउंटर-पार्टी जोखिम को सीमित करने के लिए, आपके ETH को वापस लेने की कुंजियां आम तौर पर आपके पास रखी जाती हैं।", + "page-staking-hierarchy-pools-pill-1": "कोई भी राशि स्टेक करें", + "page-staking-hierarchy-pools-pill-2": "पुरस्कार कमाएं", + "page-staking-hierarchy-pools-pill-3": "इसे आसान रखें", + "page-staking-hierarchy-pools-pill-4": "लोकप्रिय", + "page-staking-hierarchy-pools-p1": "उन उपयोगकर्ताओं की सहायता के लिए अब कई पूलिंग समाधान मौजूद हैं जिनके पास 32 ETH नहीं है या वे सहज महसूस नहीं करते हैं।", + "page-staking-hierarchy-pools-p2": "इनमें से कई विकल्पों में वह शामिल है जिसे 'लिक्विड स्टेकिंग' के रूप में जाना जाता है जिसमें ERC-20 लिक्विडिटी टोकन शामिल है जो आपके स्टेक ETH का प्रतिनिधित्व करता है।", + "page-staking-hierarchy-pools-p3": "लिक्विड स्टेकिंग से किसी भी समय और आसानी से बाहर निकला जा सकता और स्टेकिंग को टोकन स्वैप जितना सरल बनाती है। यह विकल्प उपयोगकर्ताओं को अपनी संपत्ति को अपने इथेरियम वॉलेट में रखने की भी अनुमति देता है।", + "page-staking-hierarchy-pools-p4": "पूल्ड स्टेकिंग इथेरियम नेटवर्क का मूल नहीं है। तीसरे पक्ष इन समाधानों का निर्माण कर रहे हैं और वे अपने जोखिम उठाते हैं।", + "page-staking-hierarchy-cex-h2": "केंद्रीकृत एक्सचेंज", + "page-staking-hierarchy-cex-pill-1": "सबसे कम प्रभावशाली", + "page-staking-hierarchy-cex-pill-2": "उच्चतम विश्वास वाली धारणाएँ", + "page-staking-hierarchy-cex-p1": "अगर आप अभी तक अपने वॉलेट में ETH रखने में सहज नहीं हैं तो कई केंद्रीकृत एक्सचेंज स्टेकिंग सेवाएं प्रदान करते हैं। वे आपको न्यूनतम निरीक्षण या प्रयास के साथ अपने ETH होल्डिंग पर कुछ उपज अर्जित करने की अनुमति देने के लिए भरोसा हो सकते हैं।", + "page-staking-hierarchy-cex-p2": "यहां समझौता यह है कि केंद्रीकृत प्रदाता बड़ी संख्या में वैलिडेटर को चलाने के लिए ETH के बड़े पूल को मजबूत करते हैं। यह नेटवर्क और उसके उपयोगकर्ताओं के लिए खतरनाक हो सकता है क्योंकि यह एक बड़ा केंद्रीकृत लक्ष्य और विफलता बिंदु बनाता है, जिससे नेटवर्क हमले या बग के प्रति अधिक असुरक्षित बनाता है।", + "page-staking-hierarchy-cex-p3": "अगर आपको अपनी कुंजियां सहेज कर रखने में समस्या नहीं होती, तो कोई बात नहीं। ये विकल्प आपके लिए यहां हैं। इस बीच, हमारे वॉलेट पेज को जांचने पर विचार करें, जहां आप सीखना शुरू कर सकते हैं कि अपने फंड पर पूरा स्वामित्व कैसे लें। जब आप तैयार हों, तो वापस आएं और दी गई सेल्फ़-कस्टडी पूल्ड स्टेकिंग सेवाओं में से किसी एक को आज़माकर अपने स्टेकिंग गेम को बढ़ाएं।", + "page-staking-hierarchy-subtext": "जैसा कि आपने देखा होगा, इथेरियम स्टेकिंग में भाग लेने के कई तरीके हैं। ये पथ विभिन्न प्रकार के यूज़र को लक्षित करते हैं और आखिरकार हर एक अद्वितीय हैं और जोखिम, पुरस्कार, और विश्वास के अनुमान में भिन्न होते हैं। कुछ अन्यों से अधिक डीसेंट्रलाइज, युद्ध-परीक्षित और/या जोखिमपूर्ण हो सकते हैं। हम कुछ लोकप्रिय परियोजनाओं पर थोड़ी सी जानकारी प्रदान करते हैं, लेकिन हमेशा अपनी खुद की अनुसंधान करें ETH को कहीं भी भेजने से पहले।", + "page-staking-comparison-solo-saas": "SaaS प्रदाताओं के साथ आपको अभी भी 32 ETH जमा करने की आवश्यकता है, लेकिन हार्डवेयर चलाने की आवश्यकता नहीं है। आप आम तौर पर अपनी सत्यापनकर्ता कुंजियों तक पहुंच बनाए रखते हैं, लेकिन आपको अपनी हस्ताक्षर कुंजी भी साझा करनी होती है, ताकि ऑपरेटर आपके सत्यापनकर्ता की ओर से कार्य कर सके। यह विश्वास की एक परत का परिचय देता है जो आपके स्वयं के हार्डवेयर को चलाते समय मौजूद नहीं है, और घर पर एकल स्टेकिंग के विपरीत, SaaS नोड्स के भौगोलिक वितरण के साथ ज्यादा मदद नहीं करता है। अगर आपको हार्डवेयर का इस्तेमाल करने में सहज महसूस नहीं होता, लेकिन फिर भी 32 ETH को दांव पर लगाना चाहते हैं, तो SaaS प्रदाता का उपयोग करना आपके लिए एक अच्छा विकल्प हो सकता है।", + "page-staking-comparison-solo-pools": "सोलो स्टेकिंग पूलिंग सेवा के साथ लेने की तुलना में काफी अधिक शामिल है, लेकिन ETH पुरस्कारों तक पूर्ण पहुंच प्रदान करता है, और आपके सत्यापनकर्ता के सेटअप और सुरक्षा पर पूर्ण नियंत्रण प्रदान करता है। पूल स्टेकिंग में प्रवेश करने में समस्या बहुत कम होती है। उपयोगकर्ता ETH की छोटी मात्रा को दांव पर लगा सकते हैं, सत्यापनकर्ता कुंजी उत्पन्न करने की आवश्यकता नहीं है और मानक इंटरनेट कनेक्शन से परे कोई हार्डवेयर आवश्यकताएं नहीं हैं। लिक्विडिटी टोकन प्रोटोकॉल लेवल पर सक्षम होने से पहले स्टेकिंग से बाहर निकलने की क्षमता को चालू करते हैं। अगर आप इन सुविधाओं में रुचि रखते हैं, तो पूल्ड स्टेकिंग एक अच्छा फिट हो सकता है।", + "page-staking-comparison-saas-solo": "समानताओं में धन पूल किए बिना अपनी स्वयं की सत्यापनकर्ता कुंजी शामिल है, लेकिन SaaS के साथ आपको किसी तीसरे पक्ष पर भरोसा करना चाहिए, जो संभावित रूप से दुर्भावनापूर्ण कार्य कर सकता है या स्वयं पर हमले या विनियमन का लक्ष्य बन सकता है। अगर ये विश्वास धारणाएं या केंद्रीकरण जोखिम आपको चिंतित करते हैं, तो स्व-संप्रभु स्टेकिंग का स्वर्ण मानक एकल स्टेकिंग है।", + "page-staking-comparison-saas-pools": "ये आमतौर पर सत्यापनकर्ता क्लाइंट चलाने के लिए किसी और पर भरोसा करने के जैसे ही हैं, लेकिन SaaS के विपरीत, पूल्ड स्टेकिंग आपको कम मात्रा में ETH के साथ भाग लेने की अनुमति देता है। अगर आप 32 ETH से कम के साथ दांव लगाना चाहते हैं, तो इसे जांचने पर विचार ज़रूर करें।", + "page-staking-comparison-pools-solo": "पूल्ड स्टेकिंग में सोलो स्टेकिंग की तुलना में प्रवेश की बाधाएं काफ़ी कम होती हैं, लेकिन इसमें अतिरिक्त जोखिम होता है, क्योंकि एक तीसरे पक्ष को सभी नोड के प्रचालन का कार्य सौंपते हैं और उन्हें एक शुल्क भी देना होता है। सोलो स्टेकिंग में स्टेकर को स्टेकिंग सेटअप के चयन में सभी विकल्पों पर पूरा स्वराज्य और नियंत्रण मिलता है। स्टेकर को कभी भी अपनी चाबियों को सौंपने की आवश्यकता नहीं होती और वे किसी भी मध्यस्थ को कट दिये बिना पूरा पुरस्कार कमाते हैं।", + "page-staking-comparison-pools-saas": "ये हितधारक स्वयं सत्यापनकर्ता सॉफ़्टवेयर नहीं चलाने के जैसे ही हैं, लेकिन पूलिंग विकल्पों के विपरीत, SaaS को सत्यापनकर्ता को सक्रिय करने के लिए पूर्ण 32 ETH जमा काटने की आवश्यकता होती है। पुरस्कार हितधारक को जमा होते हैं और आमतौर पर सेवा का उपयोग करने के लिए मासिक शुल्क या अन्य हिस्सेदारी शामिल होती है। अगर आप अपनी स्वयं की सत्यापनकर्ता कुंजी पसंद करते हैं और कम से कम 32 ETH दांव पर लगाना चाहते हैं, तो SaaS प्रदाता का उपयोग करना आपके लिए एक अच्छा विकल्प हो सकता है।", + "page-staking-considerations-solo-1-title": "Open source", + "page-staking-considerations-solo-1-description": "आवश्यक कोड 100% ओपन सोर्स है और जनता के लिए फोर्क और उपयोग करने के लिए उपलब्ध है", + "page-staking-considerations-solo-1-warning": "बंद स्रोत", + "page-staking-considerations-solo-2-title": "ऑडिट किया गया", + "page-staking-considerations-solo-2-description": "आवश्यक कोड प्रकाशित परिणामों के साथ ऑडिट किया गया है और सार्वजनिक रूप से उपलब्ध है", + "page-staking-considerations-solo-2-warning": "कोई नहीं", + "page-staking-considerations-solo-3-title": "बग बाउंटी", + "page-staking-considerations-solo-3-description": "उपयोगकर्ताओं को सुरक्षित रूप से रिपोर्टिंग और/या कमजोरियों को ठीक करने के लिए पुरस्कार देने के लिए किसी भी आवश्यक कोड पर एक सार्वजनिक बग बाउंटी है", + "page-staking-considerations-solo-3-valid": "वर्तमान में सक्रिय", + "page-staking-considerations-solo-3-caution": "पूरे हो चुके", + "page-staking-considerations-solo-4-title": "युद्ध के लिए परीक्षित", + "page-staking-considerations-solo-4-description": "सॉफ़्टवेयर जनता द्वारा संकेतित अवधि के लिए उपलब्ध और उपयोग किया गया है", + "page-staking-considerations-solo-4-valid": "लाइव > 1 साल", + "page-staking-considerations-solo-4-caution": "लाइव > 6 महीने", + "page-staking-considerations-solo-4-warning": "हाल ही में जारी किया गया", + "page-staking-considerations-solo-5-title": "विश्वासहीन", + "page-staking-considerations-solo-5-description": "सत्यापनकर्ता जीवनचक्र में किसी भी समय सत्यापनकर्ता कुंजियाँ किसी अन्य मानव को नहीं सौंपी जाती हैं। इसमें शामिल किसी भी स्मार्ट अनुबंध को ऐसे ही ऐक्सेस नहीं किया जा सकता, मतलब कि निष्पादन के लिए विशेष अनुमति के बिना।", + "page-staking-considerations-solo-5-warning": "विश्वसनीय", + "page-staking-considerations-solo-6-title": "Permissionless", + "page-staking-considerations-solo-6-description": "उपयोगकर्ताओं को सॉफ़्टवेयर या सेवा का उपयोग करके सत्यापनकर्ता संचालित करने के लिए किसी खास अनुमति की ज़रूरत नहीं होती है", + "page-staking-considerations-solo-6-valid": "अनुमति नहीं है", + "page-staking-considerations-solo-6-warning": "अनुमति की ज़रूरत है", + "page-staking-considerations-solo-7-title": "मल्टी-क्लाइंट", + "page-staking-considerations-solo-7-description": "सॉफ़्टवेयर से उपयोगकर्ताओं को कम से कम दो या इससे ज़्यादा निष्पादन क्लाइंट और दो या ज़्यादा आम सहमति परत क्लाइंट के बीच चुना और स्विच किया जा सकता है", + "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-warning": "तृतीय-पक्ष संरक्षक", + "page-staking-considerations-solo-9-title": "किफ़ायती", + "page-staking-considerations-solo-9-description": "उपयोगकर्ता 32 ETH से कम का निवेश करके, दूसरों से एकत्रित धन का उपयोग करके एक सत्यापनकर्ता संचालित कर सकते हैं", + "page-staking-considerations-solo-9-valid": "< 32 ETH", + "page-staking-considerations-solo-9-warning": "32 ETH", + "page-staking-considerations-saas-4-description": "यह सेवा जनता द्वारा संकेतित अवधि के लिए उपलब्ध कराई गई है और उपयोग की गई है", + "page-staking-considerations-saas-6-description": "उपयोगकर्ताओं को सेवा के साथ भाग लेने के लिए किसी विशेष अनुमति, खाता साइन अप या KYC की आवश्यकता नहीं है", + "page-staking-considerations-saas-6-valid": "इससे कोई भी जुड़ सकता है", + "page-staking-considerations-saas-6-warning": "अनुमति की ज़रूरत है", + "page-staking-considerations-saas-7-title": "क्रियान्वयन विविधता", + "page-staking-considerations-saas-7-description": "बहुसंख्यक निष्पादन ग्राहक के साथ सेवा को उनके कुल सत्यापनकर्ताओं के 50% से अधिक नहीं चलाना चाहिए", + "page-staking-considerations-saas-7-valid": "50 प्रतिशत से कम", + "page-staking-considerations-saas-7-caution": "फिलहाल पता नहीं है", + "page-staking-considerations-saas-7-warning": "50 प्रतिशत से अधिक", + "page-staking-considerations-saas-8-title": "सहमति विविधता", + "page-staking-considerations-saas-8-description": "बहुसंख्यक सहमति ग्राहक के साथ सेवा को उनके कुल सत्यापनकर्ताओं के 50% से अधिक नहीं चलाना चाहिए", + "page-staking-considerations-saas-8-valid": "50 प्रतिशत से कम", + "page-staking-considerations-saas-8-caution": "फिलहाल पता नहीं है", + "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-7-description": "बहुसंख्यक निष्पादन ग्राहक के साथ सेवा को उनके कुल सत्यापनकर्ताओं के 50% से अधिक नहीं चलाना चाहिए", + "page-staking-considerations-pools-8-title": "लिक्विडिटी टोकन", + "page-staking-considerations-pools-8-description": "अपने स्वयं के बटुए में रखे गए आपके दांव वाले ETH का प्रतिनिधित्व करने वाले व्यापार योग्य लिक्विडिटी टोकन प्रदान करता है", + "page-staking-considerations-pools-8-valid": "लिक्विडिटी टोकन", + "page-staking-considerations-pools-8-warning": "कोई लिक्विडिटी टोकन नहीं", + "page-staking-considerations-pools-9-description": "बहुसंख्यक सहमति ग्राहक के साथ सेवा को उनके कुल सत्यापनकर्ताओं के 50% से अधिक नहीं चलाना चाहिए", + "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-5": "अपने नोड की निगरानी और रखरखाव करें", + "page-staking-launchpad-widget-testnet-label": "Goerli टेस्टनेट", + "page-staking-launchpad-widget-testnet-start": "Goerli टेस्टनेट पर स्टेक करना शुरू करें", + "page-staking-launchpad-widget-mainnet-label": "मेननेट", + "page-staking-launchpad-widget-mainnet-start": "मेननेट पर स्टेक करना शुरू करें", + "page-staking-launchpad-widget-span": "नेटवर्क चुनें", + "page-staking-launchpad-widget-p1": "सोलो सत्यापनकर्ताओं से धन जोखिम में डालने से पहले Goerli टेस्टनेट पर अपने सेटअप और परिचालन कौशल का परीक्षण करने की उम्मीद की जाती है। याद रखें कि अल्पसंख्यक क्लाइंट चुनना महत्वपूर्ण है, क्योंकि यह नेटवर्क की सुरक्षा में सुधार करता है और आपके जोखिम को सीमित करता है।", + "page-staking-launchpad-widget-p2": "अगर आप सहज हैं, तो आप केवल स्टेकिंग लॉन्चपैड का उपयोग करके कमांड लाइन से सभी आवश्यक चीजें सेट-अप कर सकते हैं।", + "page-staking-launchpad-widget-p3": "चीजों को आसान बनाने के लिए, नीचे दिए गए कुछ टूल और गाइड देखें जो आपके क्लाइंट को आसानी से सेट करने के लिए स्टेकिंग लॉन्चपैड के साथ आपकी मदद कर सकते हैं।", + "page-staking-launchpad-widget-link": "सॉफ़्टवेयर उपकरण और मार्गदर्शिका", + "page-staking-products-get-started": "शुरू करें", + "page-staking-dropdown-staking-options": "स्टेकिंग के विकल्प", + "page-staking-dropdown-staking-options-alt": "स्टेकिंग विकल्प का ड्रॉपडाउन मेनू", + "page-staking-stats-box-metric-1": "कुल स्टेक किए गए ETH", + "page-staking-stats-box-metric-2": "कुल सत्यापनकर्ता", + "page-staking-stats-box-metric-3": "वर्तमान APR", + "page-staking-stats-box-metric-1-tooltip": "बीकन चेन पर स्टेक किये गए ETH का योग, जिनमें 32 ETH से अधिक शेष राशियां शामिल नहीं हैं", + "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": "पुरस्कार", + "page-staking-section-comparison-solo-rewards-li1": "अधिकतम पुरस्कार - प्रोटोकॉल से सीधे पूर्ण पुरस्कार प्राप्त करें", + "page-staking-section-comparison-solo-rewards-li2": "आपको लेनदेन को एक नए ब्लॉक में बैच बनाता है या श्रृंखला को सुरक्षित रूप से चलाने के लिए अन्य सत्यापनकर्ताओं के काम की जांच करने के लिए पुरस्कार मिलेगा", + "page-staking-section-comparison-solo-rewards-li3": "आपको आपके द्वारा प्रस्तावित ब्लॉकों के लिए बर्न ना हुआ लेन-देन शुल्क भी प्राप्त होगा", + "page-staking-section-comparison-saas-rewards-li1": "आमतौर पर नोड संचालन के लिए मासिक शुल्क को घटाकर पूर्ण प्रोटोकॉल पुरस्कार शामिल होते हैं", + "page-staking-section-comparison-saas-rewards-li2": "आपके सत्यापनकर्ता क्लाइंट को ट्रैक करने के लिए आसानी से डैशबोर्ड उपलब्ध होते हैं", + "page-staking-section-comparison-pools-rewards-li1": "पूल्ड स्टेकर पूल्ड स्टेकिंग के तरीके के आधार पर अलग-अलग तरीके से पुरस्कार अर्जित करते है", + "page-staking-section-comparison-pools-rewards-li2": "कई पूल्ड स्टेकिंग सेवाएं एक या अधिक लिक्विडिटी टोकन प्रदान करते हैं जो आपके स्टेक किए गए ETH और सत्यापनकर्ता पुरस्कारों में आपके हिस्से को दिखता है", + "page-staking-section-comparison-pools-rewards-li3": "आप लिक्विडिटी टोकन को अपने वॉलेट में रख सकते है, DeFi में प्रयोग कर सकते है और जब निकलना चाहें, तो बेच सकते है", + "page-staking-section-comparison-risks-title": "जोखिम", + "page-staking-section-comparison-solo-risks-li1": "आपका ETH स्टेक पर है", + "page-staking-section-comparison-solo-risks-li2": "ऑफ़लाइन होने की पेनल्टी में ETH चार्ज किये जाते हैं", + "page-staking-section-comparison-solo-risks-li3": "दुर्भावनापूर्ण व्यवहार के परिणामस्वरूप ETH की बड़ी मात्रा में 'कटौती' हो सकती है और नेटवर्क से जबरन निष्कासन हो सकता है", + "page-staking-section-comparison-saas-risks-li1": "एकल स्टेकिंग प्लस सेवा प्रदाता के काउंटर-पार्टी जोखिम के समान जोखिम", + "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 ETH जमा करना होगा", + "page-staking-section-comparison-solo-requirements-li2": "हार्डवेयर बनाए रखें जो इंटरनेट से कनेक्ट होने पर इथेरियम निष्पादन ग्राहक और सहमति ग्राहक दोनों को चलाता है", + "page-staking-section-comparison-solo-requirements-li3": "स्टेकिंग लॉन्चपैड आपको प्रक्रिया और हार्डवेयर आवश्यकताओं की जानकारी देगा", + "page-staking-section-comparison-saas-requirements-li1": "32 ETH जमा करें और सहायता से अपनी कुंजियां बनाएं", + "page-staking-section-comparison-saas-requirements-li2": "अपनी कुंजियां सुरक्षित रूप से संग्रहित करें", + "page-staking-section-comparison-saas-requirements-li3": "बाकी का ध्यान रखा जाता है, हालाँकि विशिष्ट सेवाएँ अलग-अलग होंगी", + "page-staking-section-comparison-pools-requirements-li1": "निम्नतम ETH आवश्यकताएँ, कुछ परियोजनाओं के लिए कम से कम 0.01 ETH की आवश्यकता होती है", + "page-staking-section-comparison-pools-requirements-li2": "सीधे अपने वॉलेट से अलग-अलग पूलित स्टेकिंग प्लेटफ़ॉर्म पर जमा करें या स्टेकिंग लिक्विडिटी टोकन में से किसी एक के लिए व्यापार करें", + "page-staking-faq-1-question": "एक सत्यापनकर्ता क्या है?", + "page-staking-faq-1-answer": "सत्यापनकर्ता एक आभासी इकाई है जो इथेरियम पर रहता है और इथेरियम प्रोटोकॉल की आम सहमति में भाग लेता है। सत्यापनकर्ताओं को एक संतुलन, सार्वजनिक कुंजी और अन्य गुणों द्वारा दर्शाया जाता है। एक सत्यापनकर्ता क्लाइंट वह सॉफ़्टवेयर है जो सत्यापनकर्ता की निजी कुंजी को होल्ड करके और उसका उपयोग करके उसकी ओर से कार्य करता है। एक एकल सत्यापनकर्ता क्लाइंट कई कुंजियों के जोड़े रख सकता है, कई सत्यापनकर्ताओं को नियंत्रित कर सकता है।", + "page-staking-faq-2-question": "मुझे फंड्स स्टेक लगाने की आवश्यकता क्यों है?", + "page-staking-faq-2-answer": "एक सत्यापनकर्ता के पास नेटवर्क के लिए ब्लॉक का प्रस्ताव और सत्यापन करने की क्षमता है। बेईमान व्यवहार को रोकने के लिए, उपयोगकर्ताओं को अपने धन को दांव पर लगाना चाहिए। यह प्रोटोकॉल को दुर्भावनापूर्ण अभिनेताओं को दंडित करने की अनुमति देता है। दांव लगाना आपको ईमानदार रखने का एक साधन है, क्योंकि आपके कार्यों के वित्तीय परिणाम होंगे।", + "page-staking-faq-3-question": "क्या मैं 'Eth2' खरीद सकता हूं?", + "page-staking-faq-3-answer-p1": "कोई 'Eth2' टोकन प्रोटोकॉल का नेटिव नहीं है, क्योंकि जब इथेरियम ने प्रूफ-ऑफ-स्टेक पर स्विच किया तो नेटिव टोकन इथर (ETH) नहीं बदला।", + "page-staking-faq-3-answer-p2": "ऐसे डरिवटिव टोकन/टिकर हैं जो स्टेक्ड ETH (यानी रॉकेट पूल से rETH, लिडो से stETH, कॉइनबेस से ETH2) का प्रतिनिधित्व कर सकते हैं। स्टेकिंग पूल बनाने के बारे में अधिक जानें", + "page-staking-faq-4-question": "क्या स्टेकिंग पहले से ही लाइव है?", + "page-staking-faq-4-answer-p1": "हां। स्टेकिंग 1 दिसंबर, 2020 से लाइव है", + "page-staking-faq-4-answer-p2": "इसका मतलब यह है कि उपयोगकर्ताओं के लिए अपना ETH जमा करने, एक सत्यापनकर्ता क्लाइंट चलाने और पुरस्कार अर्जित करना शुरू करने के लिए स्टेकिंग वर्तमान में लाइव है।", + "page-staking-faq-4-answer-p3": "शंघाई/कैपेला अपग्रेड 12 अप्रैल, 2023 को पूरा हो गया, जिससे स्टेकिंग निकासी सक्षम हो गई, जिससे स्टेकिंग लिक्विडिटी पर लूप बंद हो गया।", + "page-staking-faq-5-question": "मैं अपना स्टेक पर लगा ETH कब निकाल सकता हूँ?", + "page-staking-faq-5-answer-p1": "अभी! अगर स्टेकर चाहें, तो वे सत्यापनकर्ता बैलेंस से अपने पुरस्कार और/या मूल जमा को वापस लेने के लिए स्वतंत्र हैं।", + "page-staking-faq-5-answer-p2": "ब्लॉक का प्रस्ताव करते समय स्टेकर फीस और MEV के रूप में पुरस्कार भी अर्जित करेंगे, जो निर्धारित शुल्क प्राप्तकर्ता पते के माध्यम से तुरंत उपलब्ध कराए जाएंगे।", + "page-staking-faq-5-answer-link": "स्टेकिंग निकासी पर अधिक जानकारी", + "page-staking-further-reading-1-link": "हिस्सेदारी के सबूत की क्या ज़रूरत है (नवंबर 2020)", + "page-staking-further-reading-author-vitalik-buterin": "विटालिक बुटेरिन", + "page-staking-further-reading-2-link": "सेरेनिटी डिज़ाइन रोटेश्नेल", + "page-staking-further-reading-3-link": "हिस्सेदारी के सबूत के बारे में अक्सर पूछे जाने वाले सवाल (दिसंबर 2017)", + "page-staking-further-reading-4-link": "Eth2 खबरें", + "page-staking-further-reading-4-author": "बेन एडिंगटन", + "page-staking-further-reading-5-link": "अंतिम रूप दिया गया नं. 33, इथेरियम सर्वसम्मति-परत (जनवरी 2022)", + "page-staking-further-reading-5-author": "डैनी रयान", + "page-staking-further-reading-6-link": "अटेस्टेंट पोस्ट", + "page-staking-further-reading-7-link": "Beaconcha.in ज्ञानकोष", + "page-staking-further-reading-8-link": "Beaconcha.in सामुदायिक योगदान के माध्यम से बनाई गई शैक्षिक सामग्री", + "page-staking-further-reading-9-link": "इथेरियम स्टेकिंग लॉन्चपैड के बारे में अक्सर पूछे जाने वाले सवाल", + "page-staking-further-reading-10-link": "EthStaker ज्ञानकोष", + "page-staking-toc-how-to-stake-your-eth": "अपने ETH को कैसे स्टेक करें", + "page-staking-toc-comparison-of-options": "स्टेकिंग के विकल्पों की तुलना", + "page-staking-toc-faq": "अक्सर पूछे जाने वाले प्रश्न", + "page-staking-toc-further": "अग्रिम पठन", + "page-staking-dom-info-title": "इथेरियम के साथ स्टेकिंग", "page-staking-join-community": "स्टेकर समुदाय में शामिल हों", - "page-staking-join-community-desc": "r/ethstaker हर किसी के लिए इथेरियम पर चर्चा करने के लिए एक समुदाय है - सलाह, समर्थन के लिए शामिल हों, और स्टेकिंग से संबंधित सभी चीज़ों के बारे में बात करें।", - "page-staking-meta-description": "इथेरियम स्टेकिंग का अवलोकन: जोखिम, पुरस्कार, आवश्यकताएं, और यह कहां करना है।", + "page-staking-join-community-desc": "EthStaker एक ऐसा समुदाय है जहां सब लोग इथेरियम पर स्टेकिंग के बारे में चर्चा कर सकते हैं और सीख सकते हैं। दुनिया भर से हजारों सदस्यों के साथ जुड़ें और सलाह, समर्थन प्राप्त करें और स्टेकिंग से जुड़े सभी विषयों पर चर्चा करें।", + "page-staking-meta-description": "इथेरियम स्टेकिंग का अवलोकन: जोखिम, पुरस्कार, आवश्यकताएं और यह कहां करना है।", "page-staking-meta-title": "इथेरियम स्टेकिंग", - "page-upgrades-merge-btn": "मर्ज के बारे में अधिक जानकारी" + "page-staking-withdrawals-important-notices": "ज़रूरी सूचनाएं", + "page-staking-withdrawals-important-notices-desc": "निकासी अभी तक उपलब्ध नहीं है। कृपया अधिक जानकारी के लिए Eth2 मर्ज और पोस्ट-मर्ज के बारे में अक्सर पूछे जाने वाले सवाल पढ़ें।", + "page-upgrades-merge-btn": "मर्ज पर और अधिक", + "subscribe-to-ef-blog": "नवीनतम प्रोटोकॉल घोषणाओं के लिए EF ब्लॉग सब्सक्राइब करें, ताकि आप ईमेल सूचनाएं प्राप्त कर सकें।" } diff --git a/src/intl/hi/page-wallets-find-wallet.json b/src/intl/hi/page-wallets-find-wallet.json index 09d46af6f6f..504fe3e0d6c 100644 --- a/src/intl/hi/page-wallets-find-wallet.json +++ b/src/intl/hi/page-wallets-find-wallet.json @@ -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": "डेस्कटॉप", diff --git a/src/intl/hr/page-wallets-find-wallet.json b/src/intl/hr/page-wallets-find-wallet.json index 7a84812f0ee..17f52a084b5 100644 --- a/src/intl/hr/page-wallets-find-wallet.json +++ b/src/intl/hr/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Filtri po značajkama", "page-find-wallet-footnote-1": "Prikaz novčanika na ovoj stranici ne predstavlja službeno odobrenje i služi samo za informaciju.", "page-find-wallet-footnote-2": "Njihovi opisi primljeni su izravno od projekata novčanika.", - "page-find-wallet-footnote-3": "Na ovu stranicu dodajemo proizvode temeljem kriterija iz naše politike uvrštenja. Ako želite da dodamo novčanik, podignite problem na GitHub-u.", + "page-find-wallet-footnote-3": "Na ovu stranicu dodajemo proizvode temeljem kriterija iz naše politike uvrštenja. Ako želite da dodamo novčanik, podignite problem na GitHub-u.", "page-find-wallet-mobile": "Mobitel", "page-find-wallet-mobile-desc": "Novčanici s mobilnim aplikacijama", "page-find-wallet-desktop": "Desktop", diff --git a/src/intl/hu/common.json b/src/intl/hu/common.json index 6c5a03d265e..d67ef50d049 100644 --- a/src/intl/hu/common.json +++ b/src/intl/hu/common.json @@ -1,30 +1,55 @@ { + "account-abstraction": "Számlaabsztrakció", "about-ethereum-org": "Az ethereum.org-ról", "about-us": "Rólunk", "aria-toggle-search-button": "Keresés bekapcsolása gomb", "aria-toggle-menu-button": "Menü bekapcsolása gomb", "beacon-chain": "Beacon Chain", "bridges": "Blokkláncösszekötők", + "clear": "Törlés", "close": "Bezárás", "community": "Közösség", "community-hub": "Közösségi központ", "community-menu": "Közösségi menü", "contact": "Kapcsolat", + "content-standardization": "Tartalomegységesítés", "contributing": "Közreműködők", "contributors": "Hozzájárulók", "contributors-thanks": "Akik hozzájárultak ehhez az oldalhoz – köszönjük!", "cookie-policy": "Süti (Cookie) szabályzat", "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)", "dark-mode": "Sötét", "data-provided-by": "Adatforrás:", "decentralized-applications-dapps": "Decentralizált alkalmazások (dapps)", + "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)", "devcon": "Devcon", "developers": "Fejlesztők", "developers-home": "Fejlesztői kezdőlap", "docs": "Dokumentáció", + "docsearch-to-select": "Kiválasztás", + "docsearch-to-navigate": "Navigálás", + "docsearch-to-close": "Bezárás", + "docsearch-search-by": "Keresési szempont", + "docsearch-start-recent-searches-title": "Előzmények", + "docsearch-start-no-recent-searches": "Nincsenek keresési előzmények", + "docsearch-start-save-recent-search": "Keresés mentése", + "docsearch-start-remove-recent-search": "Keresés eltávolítása az előzményekből", + "docsearch-start-favorite-searches": "Kedvencek", + "docsearch-start-remove-favorite-search": "Keresés eltávolítása a kedvencek közül", + "docsearch-no-results-text": "Nincs találat a következőre:", + "docsearch-no-results-suggested-query": "Próbálja meg a következőt", + "docsearch-no-results-missing": "Úgy gondolja, hogy ennek a lekérdezésnek eredményt kellene adnia?", + "docsearch-no-results-missing-link": "Tudassa velünk.", + "docsearch-error-title": "Nem sikerült lekérni az eredményeket", + "docsearch-error-help": "Ellenőrizze a hálózati kapcsolatot.", "documentation": "Dokumentáció", + "down": "Le", "ecosystem": "Ökoszisztéma", "edit-page": "Oldal szerkesztése", "ef-blog": "Ethereum Foundation Blog", @@ -34,6 +59,7 @@ "enterprise-menu": "Vállalati menü", "esp": "Ecosystem Támogatási Program", "eth-current-price": "Jelenlegi ETH árfolyam (USD)", + "ethereum-basics": "Ethereum alapok", "ethereum-bug-bounty": "Ethereum bugvadász program", "consensus-when-shipping": "Mikor lesz kész?", "ethereum-upgrades": "Az Ethereum fejlesztései", @@ -45,6 +71,8 @@ "ethereum-glossary": "Ethereum szógyűjtemény", "ethereum-governance": "Ethereum-felügyelet", "ethereum-logo": "Ethereum logo", + "ethereum-roadmap": "Ethereum-ütemterv", + "ethereum-protocol": "Ethereum-protokoll", "ethereum-security": "Ethereum-biztonság és átverés elleni védelem", "ethereum-support": "Ethereum támogatás", "ethereum-wallets": "Ethereum tárcák", @@ -59,15 +87,22 @@ "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", + "future-proofing": "Időtállóság", "get-eth": "ETH beszerzése", "get-involved": "Kapcsolódjon be", "get-started": "Kezdjünk bele", "grants": "Támogatások", "grant-programs": "Ökoszisztéma-támogatási program", - "guides-and-resources": "Közösségi útmutatók és erőforrások", + "guides": "Útmutatók", + "guides-hub": "Útmutatóközpont", "history-of-ethereum": "Az Ethereum története", "home": "Kezdőlap", "how-ethereum-works": "Hogy működik az Ethereum", + "how-to-register-an-ethereum-account": "Hogyan lehet létrehozni Ethereum-számlát", + "how-to-revoke-token-access": "Hogyan vonható vissza, hogy az okosszerződés hozzáférjen a kriptoeszközeihez", + "how-to-swap-tokens": "Hogyan lehet átváltani a tokeneket", + "how-to-use-a-bridge": "Hogyan lehet áthelyezni a tokeneket a második blokkláncrétegbe (L2)", + "how-to-use-a-wallet": "Hogyan használja a tárcát", "image": "kép", "in-this-section": "Ebben a részben", "individuals": "Magánszemélyek", @@ -81,6 +116,7 @@ "layer-2": "2. réteg", "learn": "Ismerje meg", "learn-by-coding": "Tanulás programozással", + "learn-hub": "Tanulási központ", "learn-menu": "Tanulási menü", "learn-more": "Bővebben", "less": "Kevesebb", @@ -89,28 +125,47 @@ "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", "more": "Több", "nav-developers": "Fejlesztők", "nav-developers-docs": "Fejlesztői dokumentumok", "nav-primary": "Elsődleges", + "nft-page": "Nem felcserélhető tokenek (NFT-k)", + "nfts": "NFT-k", "no": "Nem", "on-this-page": "Ezen az oldalon", "open-research": "Nyílt kutatás", + "page-developers-aria-label": "Fejlesztői Menü", + "page-index-meta-title": "Kezdőlap", "page-last-updated": "Oldal legutoljára frissítve", + "pbs": "Javaslattevő-építő szétválasztása", + "pools": "Készletezett letétbe helyezés", "privacy-policy": "Adatvédelmi szabályzat", "private-ethereum": "Privát Ethereum", + "product-disclaimer": "A termékek és szolgáltatások az Ethereum-közösség kényelmét szolgálják. Egy termék vagy szolgáltatás felvétele nem jelent támogatást az ethereum.org webhely csapatától vagy az Ethereum Alapítványtól.", + "quizzes-title": "Kvízközpont", + "quizzes": "Kvízek", "refresh": "Kérjük, frissítsd az oldalt.", "return-home": "vissza a kezdőlapra", + "roadmap": "Ethereum-ütemterv", + "resources": "Fordítási erőforrások", + "regenerative-finance": "Regeneratív pénzügyek (ReFi)", "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", + "saas": "Letétbe helyezés mint szolgáltatás", "search": "Keresés", + "search-ethereum-org": "Keresés az ethereum.org oldalon", + "secret-leader-election": "Titkos vezetőválasztás", "search-box-blank-state-text": "Keresés indítása!", "search-eth-address": "Ez úgy néz ki, mint egy Ethereum cím. Mi nem szolgáltatunk címspecifikus adatot. Próbálj meg rákeresni egy blokkfelfedezőn, mint például", "search-no-results": "Nincs találat a keresésre", + "single-slot-finality": "Egyhelyes véglegesség", + "statelessness": "Hontalanság", "see-contributors": "Hozzájárulók megtekintése", "set-up-local-env": "Helyi környezet beállítása", "sharding": "Sharding", @@ -121,10 +176,11 @@ "skip-to-main-content": "Ugrás a fő tartalomra", "smart-contracts": "Okosszerződések", "stablecoins": "Stabil érmék", + "stake-eth": "ETH letétbe helyezése", "staking": "Letétbe helyezés", + "start-here": "Kezdje itt", + "style-guide": "Style guide", "solo": "Egyéni letétbe helyezés", - "saas": "Letétbe helyezés mint szolgáltatás", - "pools": "Készletezett letétbe helyezés", "terms-of-use": "Felhasználási feltételek", "translation-banner-body-new": "Ezt az oldalt angol nyelven látja, mert még nem fordítottuk le. Segítsen lefordítani ezt a tartalmat.", "translation-banner-body-update": "Az oldal új verziója jelenleg csak angolul érhető el. Segítsen nekünk a fordításban.", @@ -137,21 +193,19 @@ "translation-banner-no-bugs-dont-show-again": "Ne jelenjen meg többször", "try-using-search": "Használja a keresőt, hogy megtalálja, amit keres vagy", "tutorials": "Oktatóanyagok", + "up": "Fel", "use-ethereum": "Az Ethereum használata", "use-ethereum-menu": "Az Ethereum menü használata", + "user-experience": "Felhasználói tapasztalat", + "verkle-trees": "Verkle-fák", "wallets": "Tárcák", "we-couldnt-find-that-page": "Ezt az oldalt nem találtuk meg", "web3": "Mi az a Web3?", + "web3-title": "Web3", "website-last-updated": "Weboldal utoljára frissítve", "what-is-ether": "Mi az ether (ETH)?", "what-is-ethereum": "Mi az Ethereum?", - "defi-page": "Decentralizált pénzügy (DeFi)", - "dao-page": "Decentralizált autonóm szervezetek (DAO-k)", - "nft-page": "Nem felcserélhető tokenek (NFT-k)", - "decentralized-social-networks": "Decentralizált közösségi hálózatok", - "decentralized-identity": "Decentralizált identitás", + "withdrawals": "A letétbe helyezés visszavonása", "yes": "Igen", - "zero-knowledge-proofs": "Felfedés nélküli bizonyítás", - "page-index-meta-title": "Kezdőlap", - "page-developers-aria-label": "Fejlesztői Menü" + "zero-knowledge-proofs": "Felfedés nélküli bizonyítás" } diff --git a/src/intl/hu/learn-quizzes.json b/src/intl/hu/learn-quizzes.json new file mode 100644 index 00000000000..49589736cd4 --- /dev/null +++ b/src/intl/hu/learn-quizzes.json @@ -0,0 +1,328 @@ +{ + "add-quiz": "Új kérdés/kvíz hozzáadása", + "average-score": "Átlagos pontszám:", + "basics": "Az Ethereum alapjai", + "basics-description": "Ez a rész az Ethereum alapvető koncepcióit fedi le, hogy Ön biztosan értse az alapokat.", + "completed": "Teljesített:", + "community-stats": "Közösségi statisztikák", + "contribute": "Gazdagítsa új tartalommal a könyvtárat.", + "correct": "Helyes", + "explanation": "Magyarázat", + "next-question": "Következő kérdés", + "next-quiz": "Következő kvíz", + "page-assets-merge": "A beolvadás", + "passed": "Sikeresen teljesítette a kvízt!", + "questions": "Kérdések", + "questions-answered": "Megválaszolt kérdések:", + "quizzes-subtitle": "Tudja meg, hogy mennyire jól ismeri az Ethereumot és a kriptovalutákat. Készen áll, hogy szakértő legyen?", + "retry": "Ismétlési ráta:", + "score": "Pontszám", + "see-results": "Eredmények megtekintése", + "share-results": "Eredmények megosztása", + "start": "Indítás", + "submit-answer": "Válasz ellenőrzése", + "test-your-knowledge": "Tegye próbára az Ethereummal kapcsolatos tudását", + "try-again": "Próbáld meg újra", + "using-ethereum": "Az Ethereum használata", + "using-ethereum-description": "Mélyedjen el az Ethereum alkalmazásaiban, és fedezze fel, hogy ez a forradalmi blokkláncplatform miként formálja újjá a különféle iparágakat. Ez egy remek lehetőség, hogy biztosan megértse a dolgok működését, mielőtt kriptovalutákkal kezdene foglalkozni.", + "want-more-quizzes": "Szeretne további kvízeket is látni itt?", + "your-results": "Az Ön eredményei", + "your-total": "Az Ön teljes pontszáma", + "a001-prompt": "Az Ethereum és a Bitcoin közötti legnagyobb különbség:", + "a001-a-label": "Az Ethereum nem teszi lehetővé, hogy másoknak pénzt utaljon", + "a001-a-explanation": "A Bitcoin és az Ethereum is engedi, hogy másoknak pénzt utaljon.", + "a001-b-label": "Az Ethereumon számítógépes programokat is lehet futtatni", + "a001-b-explanation": "Az Ethereum programozható. Ez azt jelenti, hogy bármilyen számítógépes programot lehet működtetni az Ethereum-blokkláncon.", + "a001-c-label": "A Bitcoinon lehet számítógépes programokat futtatni", + "a001-c-explanation": "Az Ethereummal ellentétben a Bitcoin nem programozható és nem lehet tetszőleges módon számítógépes programokat működtetni rajta.", + "a001-d-label": "Különbözik a logójuk", + "a001-d-explanation": "Természetesen különbözik a logójuk, de nem ez a legnagyobb különbség közöttük.", + "a002-prompt": "Az Ethereum kriptovalutájank a neve:", + "a002-a-label": "Ether", + "a002-a-explanation": "Az ether az Ethereum-hálózat saját kriptovalutája.", + "a002-b-label": "Ethereum", + "a002-b-explanation": "Az Ethereum a blokklánc, a saját valutájának viszont nem ez a neve. Ez azonban egy gyakori félreértés.", + "a002-c-label": "Ethercoin", + "a002-c-explanation": "Más kriptovalutákkal ellentétben az Ethereum saját kriptovalutájának a neve nem tartalmazza az érme (coin) kifejezést.", + "a002-d-label": "Bitcoin", + "a002-d-explanation": "A Bitcoin (nagy betűvel) az első blokklánc, bitcoin (kis betűvel) az ő saját kriptovalutája.", + "a003-prompt": "Ki üzemelteti az Ethereumot?", + "a003-a-label": "Fejlesztők", + "a003-a-explanation": "A fejlesztők rendkívül fontosak az Ethereum építése és fejlesztése szempontjából, de nem ők üzemeltetik az Ethereumot.", + "a003-b-label": "Bányászok", + "a003-b-explanation": "A bányászat (mining) nem lehetséges az egyesítés (The Merge) óta. Már nincsenek bányászok az Ethereumon.", + "a003-c-label": "Az Ethereum Alapítvány", + "a003-c-explanation": "Az Ethereum Alapítvány nem játszik jelentős szerepet az Ethereum-csomópontok napi működtetésében.", + "a003-d-label": "Bárki, aki csomópontot üzemeltet", + "a003-d-explanation": "Bárki, aki csomópontot üzemeltet, kritikus része az Ethereum infrastruktúrájának. Ha még nem próbálta, fontolja meg, hogy Ön is működtet egy csomópontot.", + "a004-prompt": "Mióta az Ethereum elindult, hányszor volt a hálózat offline?", + "a004-a-label": "Soha", + "a004-b-label": "Egyszer", + "a004-c-label": "Négyszer", + "a004-d-label": "Több mint tízszer", + "a004-explanation": "Az Ethereum sose volt teljesen offline (azaz ne készített volna blokkokat), mióta elindították.", + "a005-prompt": "Az Ethereum több áramot fogyaszt mint:", + "a005-a-label": "Aranybányászat", + "a005-a-explanation": "Az aranybányászat nagyjából 131 terawattórát használ évente. Az Ethereum 0,0026 terawattórát használ évente.", + "a005-b-label": "Netflix", + "a005-b-explanation": "A Netflix nagyjából 0,451 terawattórát használ évente. Az Ethereum 0,0026 terawattórát használ évente.", + "a005-c-label": "PayPal", + "a005-c-explanation": "A PayPal nagyjából 0,26 terawattórát használ évente. Az Ethereum 0,0026 terawattórát használ évente.", + "a005-d-label": "Egyik sem", + "a005-d-explanation": "Az Ethereum 0,0026 terawattórát használ évente. Kevesebbet, mint az aranybányászat (~131 TWh/év), a Netflix (~0,451 TWh/év) és a Paypal (~0,26 TWh/év).", + "b001-prompt": "Az ether úgy is ismert, mint:", + "b001-a-label": "ETC", + "b001-a-explanation": "Az ETC az Ethereum Classic tickere.", + "b001-b-label": "ETR", + "b001-b-explanation": "Az ETR nem egy ticker az etherre vagy más jelentős kriptovalutára.", + "b001-c-label": "ETH", + "b001-c-explanation": "Az ETH a ticker az etherre az Ethereumon.", + "b001-d-label": "BTC", + "b001-d-explanation": "A BTC a ticker a bitcoinra a Bitcoin-hálózaton.", + "b002-prompt": "Az Ethereumon a hálózati díjakat a következőben fizetik:", + "b002-a-label": "bitcoin", + "b002-a-explanation": "A bitcoin (kisbetűvel) a Bitcoin-hálózat saját kriptovalutája.", + "b002-b-label": "ETH", + "b002-b-explanation": "Az ether (ETH) az Ethereum saját kriptovalutája. Az Ethereumon minden hálózati díjat ebben fizetnek.", + "b002-c-label": "USD", + "b002-c-explanation": "Nem lehetséges az Ethereumon a hálózati díjakat USD (amerikai dollár) vagy más hagyományos valutában fizetni.", + "b002-d-label": "Ethereum", + "b002-d-explanation": "Az Ethereum a hálózat, a hálózati díjakat viszont ETH-ben fizetik.", + "b003-prompt": "A letétbe helyezés az Ethereumon segít a hálózat biztosításában, mert:", + "b003-a-label": "A letétbe helyezők kitilthatják az embereket, ha nem tetszik nekik, amit csinálnak", + "b003-a-explanation": "A letétbe helyezők nem képesek önkényesen cenzúrázni a felhasználókat.", + "b003-b-label": "Ha egy letétbe helyező megpróbál csalni a hálózaton, akkor az ETH-összegének elvesztését kockáztatja", + "b003-b-explanation": "A letétbe helyezők jelentős ETH-összeget veszítenek el, ha rosszhiszeműen járnak el a hálózat ellenében. Ezt nevezik súlyos büntetésnek és kizárásnak (slashing).", + "b003-c-label": "A letétbe helyezők erőteljes számítógépeket működtetnek, hogy igazolják a proof-of-work-öt", + "b003-c-explanation": "A letétbe helyezőknek nem kell erőteljes számítógép, hogy lekössék az ETH-t. Az Ethereum az egyesítés (The Merge) óta már nem használja proof-of-work-öt.", + "b003-d-label": "A letétbe helyezők átvilágításon esnek át, mielőtt validátornak fogadják őket", + "b003-d-explanation": "A letétbe helyezés az Ethereumon engedélymentes és nem igényel átvilágítást.", + "b004-prompt": "Az ETH azért értékes, mert:", + "b004-a-label": "Az ETH mindenhez szükséges, amit az Ethereumon tenni lehet", + "b004-a-explanation": "Ez részben igaz, de ez csak az egyik oka annak, hogy ETH miért értékes.", + "b004-b-label": "Az ETH egy nem cenzúrázható, peer-to-peer pénzeszköz", + "b004-b-explanation": "Ez részben igaz, de ez csak az egyik oka annak, hogy ETH miért értékes.", + "b004-c-label": "Az ETH-t használják fedezetként a kriptokölcsönöknél", + "b004-c-explanation": "Ez részben igaz, de ez csak az egyik oka annak, hogy ETH miért értékes.", + "b004-d-label": "Az összes fenti állítás", + "b004-d-explanation": "Az Ethereum-tranzakciókat nem lehet cenzúrázni, az ETH minden tranzakcióhoz szükséges az Ethereumon, és elengedhetetlen a DeFi-ökoszisztéma stabilitásához.", + "c001-prompt": "A web3 lehetővé teszi a felhasználók számára, hogy digitális eszközöket birtokoljanak közvetlenül a következők által:", + "c001-a-label": "DAO-k", + "c001-a-explanation": "A DAO-k (decentralizált autonóm szervezetek) a tagok által birtokolt közösségek centralizált vezetés nélkül.", + "c001-b-label": "NFT-k", + "c001-b-explanation": "Az NFT-k (nem helyettesíthető tokenek) lehetővé teszik, hogy valami egyedit reprezentáljanak, mint amilyen egy Ethereum-alapú eszköz.", + "c001-c-label": "ENS", + "c001-c-explanation": "Az ENS (Ethereum Névszolgáltatás) egy decentralizált névadó szolgáltatás az Ethereum-blokklánchoz.", + "c001-d-label": "GitHub", + "c001-d-explanation": "A GitHub egy központi platform, elsősorban programkódok tárolására, mely megosztott verziókontrollal bír. Nem ad kontrollt az Ön adatai vagy digitális eszközei felett.", + "c002-prompt": "A web1 csak olvasható volt, a web2 olvasható-írható, a web3-ra azt mondják:", + "c002-a-label": "olvasható-írható-eladható", + "c002-a-explanation": "A web3-at nem jellemzik ilyen módon.", + "c002-b-label": "olvasható-írható-tárolható", + "c002-b-explanation": "A web3-at nem jellemzik ilyen módon.", + "c002-c-label": "olvasható-írható-tulajdonolható", + "c002-c-explanation": "A web3 lehetővé teszi, hogy a felhasználók adatai a saját tulajdonukban legyenek, ezért jellemzik az „olvasható-írható-tulajdonolható” szavakkal mindazt, ami a web2 „olvasható-írható” jellegéhez képest tovább van fejlesztve.", + "c002-d-label": "olvasható-írható-vehető", + "c002-d-explanation": "A web3-at nem jellemzik ilyen módon.", + "c003-prompt": "Az internet melyik verziója támaszkodik nem harmadik fél által üzemeltetett fizetési szolgáltatókra?", + "c003-a-label": "Web1", + "c003-a-explanation": "A web1 nem rendelkezett saját, beépített fizetési funkcióval.", + "c003-b-label": "Web2", + "c003-b-explanation": "A web2 nem rendelkezik saját, beépített fizetési funkcióval.", + "c003-c-label": "Web3", + "c003-c-explanation": "A web3 rendelkezik saját, beépített fizetési funkcióval olyan kriptovalutákkal, mint amilyen az ETH.", + "c003-d-label": "Az összes fenti állítás", + "c003-d-explanation": "A web1 és web2 nem rendelkezik saját, beépített fizetési funkcióval.", + "c004-prompt": "A web3 kifejezést először a következő személy használta:", + "c004-a-label": "Gavin Wood", + "c004-a-explanation": "Gavin Wood, az Ethereum társalapítója használta először a web3 kifejezést röviddel azután, hogy az Ethereum elindult 2015-ben.", + "c004-b-label": "Steve Jobs", + "c004-b-explanation": "Nem Steve Jobs alkotta meg a web3 kifejezést.", + "c004-c-label": "Vitalik Buterin", + "c004-c-explanation": "Bár Vitalik Buterin az Ethereum eredeti alapítója, nem ő alkotta meg a web3 kifejezést.", + "c004-d-label": "Elon Musk", + "c004-d-explanation": "Nem Elon Musk alkotta meg a web3 kifejezést.", + "c005-prompt": "Ön egyetlen, cenzúramentes módszerrel jelentkezhet be az internet egészén a következő használatával:", + "c005-a-label": "Bejelentkezés Facebook segítségével", + "c005-a-explanation": "A Facebookkal való bejelentkezés nem cenzúramentes.", + "c005-b-label": "Bejelentkezés Google segítségével", + "c005-b-explanation": "A Google segítségével való bejelentkezés nem cenzúramentes.", + "c005-c-label": "Bejelentkezés az Ethereummal", + "c005-c-explanation": "A bejelentkezés az Ethereummal az egyetlen lehetőség, ami cenzúramentes és az összes alkalmazásban használható.", + "c005-d-label": "Bejelentkezés Twitterrel", + "c005-d-explanation": "A Twitterrel való bejelentkezés nem cenzúramentes.", + "d001-prompt": "A legbiztonságosabb tárca típusa a következő:", + "d001-a-label": "A mobil tárca", + "d001-a-explanation": "A mobil tárca a privát kulcsot a mobiltelefonon tartja, ami jellemző módon internethez kapcsolódik és más szoftverek megtámadhatják.", + "d001-b-label": "A hardveres tárca", + "d001-b-explanation": "A hardveres tárca privát kulcsa olyan dedikált eszközön tárolható, amely nem kapcsolódik az internethez és el van szigetelve az eszköz többi alkalmazásától.", + "d001-c-label": "A webes tárca", + "d001-c-explanation": "A webes tárcák kisebb biztonsági fokkal bírnak a hardveres tárcához képest, mert a privát kulcsok internethez kapcsolódó eszközön vannak.", + "d001-d-label": "Az asztali alkalmazásos tárca", + "d001-d-explanation": "Az asztali alkalmazásos tárcák a privát kulcsokat a számítógép merevlemezén tárolják, amely általában internethez kapcsolódik és más szoftverek megtámadhatják.", + "d002-prompt": "Az itt felsorolt opciók közül melyik a legbiztonságosabb mód a kulcsmondat tárolására?", + "d002-a-label": "A telefonjában egy fényképen", + "d002-a-explanation": "Ez nem a legbiztonságosabb mód. Ha ez a fénykép felkerül egy felhőalapú tárhelybe, akkor egy támadó megszerezheti és hozzáférhet az Ön számlájához.", + "d002-b-label": "A számítógépén egy fájlban", + "d002-b-explanation": "Ez nem a legbiztonságosabb mód. A támadók egyre jobban keresik a kriptovalutával kapcsolatos információkat a céleszközökön. Ha a támadó hozzáfér a fájlhoz, amelyben a kulcsmondatot tárolja, akkor hozzáférhet az Ön számlájához.", + "d002-c-label": "Papírlapra leírva", + "d002-c-explanation": "Az itt felsorolt opciók közül a papírlapra írt kulcsmondat a legbiztonságosabb megoldás.", + "d002-d-label": "Egy szöveges üzenetben egy megbízható családtagnak küldve", + "d002-d-explanation": "Sose küldje el a kulcsmondatát senkinek. Az üzenetet el tudja fogni egy harmadik fél is, és ha ebben a személyben teljesen meg is bízik, nem tudni, hogy ki fér hozzá a telefonjához.", + "d003-prompt": "Kinek kell megadnia a kulcsmondatát / privát kulcsait?", + "d003-a-label": "Valakinek, akinek fizet", + "d003-a-explanation": "Sose adja oda a kulcsmondatát vagy a privát kulcsát senkinek. Ehelyett küldjön nekik tokeneket a tárcacímükre egy tranzakcióval.", + "d003-b-label": "Decentralizált alkalmazásba (dapp) vagy tárcába való belépéskor", + "d003-b-explanation": "Sose adja meg a kulcsmondatát vagy a privát kulcsát a tárcába vagy egy alkalmazásba való belépéskor.", + "d003-c-label": "Az ügyfélszolgálatnak", + "d003-c-explanation": "Sose adja meg a kulcsmondatát vagy a privát kulcsát senkinek, aki ügyfélszolgálatosnak adja ki magát. Bárki kér is ilyet Öntől, az csaló.", + "d003-d-label": "Senkinek", + "d003-d-explanation": "Ideális esetben soha adja meg a kulcsmondatát vagy a privát kulcsát senkinek se. Ha valakiben teljesen megbízik és annak tökéletes hozzáférése az Ön pénzügyi eszközeihez (például egy házastárs), akkor dönthet úgy, hogy megosztja vele.", + "d004-prompt": "A tárca és a számla az Ethereumon ugyanaz a dolog.", + "d004-a-label": "Igaz", + "d004-a-explanation": "A tárca egy vizuális felület, amely az Ethereum-számla használatához kell.", + "d004-b-label": "Hamis", + "d004-b-explanation": "A tárca egy vizuális felület, amely az Ethereum-számla használatához kell.", + "e001-prompt": "Miért használjon egyedi jelszót minden számlájához?", + "e001-a-label": "Ha az egyik platform adatait feltörik", + "e001-a-explanation": "Ez a válasz helyes, de vannak még más jó válaszok is.", + "e001-b-label": "Amikor valaki a válla felett ellesi a jelszavát", + "e001-b-explanation": "Ez a válasz helyes, de vannak még más jó válaszok is.", + "e001-c-label": "Ha egy programmal, mint amilyen egy billentyűzetfigyelő, ellopják a jelszavát", + "e001-c-explanation": "Ez a válasz helyes, de vannak még más jó válaszok is.", + "e001-d-label": "Az összes fenti állítás", + "e001-d-explanation": "Az összes válasz helyes. Az egyedi jelszavak használata a legjobb mód arra, hogy mások ne férjenek hozzá a számlájához.", + "e002-prompt": "Az egyesítés (The Merge) után az ETH-t fel kell minősíteni ETH2-re.", + "e002-a-label": "Igaz", + "e002-a-explanation": "Nem kell az ETH-t ETH2-re cserélni. ETH2 nem létezik, ez csak a csalók kedvelt trükkje.", + "e002-b-label": "Hamis", + "e002-b-explanation": "Nem kell az ETH-t ETH2-re cserélni. ETH2 nem létezik, ez csak a csalók kedvelt trükkje.", + "e003-prompt": "Az ETH-ajándék:", + "e003-a-label": "Egy jó módja annak, hogy több ETH-re tegyen szert", + "e003-a-explanation": "Az ETH-ajándékok csalások, hogy ellopják az Ön ETH-összegét és más tokenjeit. Ez sosem jó módja annak, hogy több ETH-t szerezzen.", + "e003-b-label": "Mindig valódi", + "e003-b-explanation": "Az ETH-ajándék sosem valódi.", + "e003-c-label": "Általában a közösség prominens tagjai adják", + "e003-c-explanation": "A prominens közösségi tagok sosem adnak ETH-ajándékokat. A csalók megszemélyesíthetnek ismert személyeket, mint pl. Elon Muskot, hogy valódinak tűntessék fel a csalásukat.", + "e003-d-label": "Nagy valószínűséggel csalás", + "e003-d-explanation": "Az ETH-ajándékok mindig csalások. A csalókat leginkább jelenteni és ignorálni kell.", + "e004-prompt": "Az Ethereum-tranzakciók visszafordíthatók.", + "e004-a-label": "Igaz", + "e004-a-explanation": "Az Ethereum-tranzakciókat nem lehet visszafordítani. Aki ennek ellenkezőjét állítja, valószínűleg át akarja Önt verni.", + "e004-b-label": "Hamis", + "e004-b-explanation": "Az Ethereum-tranzakciókat nem lehet visszafordítani. Aki ennek ellenkezőjét állítja, valószínűleg át akarja Önt verni.", + "f001-prompt": "Az NFT-ket a legátfogóbban úgy határozhatnánk meg, mint:", + "f001-a-label": "egyedi digitális eszközök", + "f001-a-explanation": "Az NFT-k egyedi digitális eszközt képviselnek.", + "f001-b-label": "digitális műalkotások", + "f001-b-explanation": "Az NFT-k egyedi digitális eszközt képviselnek, ami általában digitális műtárgy, de nem korlátozódik csak a művészetre.", + "f001-c-label": "jegyek exkluzív eseményekre", + "f001-c-explanation": "Az NFT-k egyedi digitális eszközt képviselnek, ami lehet belépőjegy is, de nem korlátozódik csak erre.", + "f001-d-label": "jogerős szerződések", + "f001-d-explanation": "Habár a jogi szerződéseket reprezentálhatja NFT, azok mégsem kizárólag jogerős szerződések.", + "f002-prompt": "Két NFT, mely ugyanazt a műtárgyat reprezentálja, az ugyanaz az eszköz.", + "f002-a-label": "Igaz", + "f002-a-explanation": "Az NFT-k nem helyettesíthetők. Még ha ugyanazt a digitális műtárgyat jelentik is, mégis egyediek. A hagyományos művészetben ez hasonló lehet, mint az eredeti és a másolatok helyzete.", + "f002-b-label": "Hamis", + "f002-b-explanation": "Az NFT-k nem helyettesíthetők. Még ha ugyanazt a digitális műtárgyat jelentik is, mégis egyediek. A hagyományos művészetben ez hasonló lehet, mint az eredeti és a másolatok helyzete.", + "f003-prompt": "Az NFT-k leggyakrabban a következőket jelölik:", + "f003-a-label": "A jelszó a tárcához", + "f003-a-explanation": "Ez egy biztonsági kockázat és általánosságban is rossz ötlet!", + "f003-b-label": "Egy egyedi digitális eszköz tulajdonjoga", + "f003-b-explanation": "Az NFT-k leggyakrabban egyedi digitális eszközök tulajdonjogát képviselik.", + "f003-c-label": "Az Ön jelenlegi ETH-egyenlege", + "f003-c-explanation": "Az NFT-k nem jelölik az Ön ETH-egyenlegét önkényesen.", + "f003-d-label": "Az összes fenti állítás", + "f003-d-explanation": "Az NFT-k leggyakrabban egyedi digitális eszközök tulajdonjogát képviselik, nem ETH-összegeket vagy tárcajelszót.", + "f004-prompt": "Az NFT-k révén létrejöhetett egy új:", + "f004-a-label": "kurátorgazdaság", + "f004-a-explanation": "Az NFT-k révén létrejöhetett egy új gazdaság az alkotók számára, nem a kurátoroknak.", + "f004-b-label": "karbongazdaság", + "f004-b-explanation": "Az NFT-k révén létrejöhetett egy új gazdaság az alkotók, nem a karbon számára.", + "f004-c-label": "alkotói gazdaság", + "f004-c-explanation": "Az NFT-k révén jöhetett létre az alkotói gazdaság.", + "f004-d-label": "„doge” gazdaság", + "f004-d-explanation": "Az NFT-k révén létrejöhetett egy új gazdaság az alkotók, nem a „doge” 🐶 számára.", + "f005-prompt": "Az Ethereumon lévő NFT káros a környezetre", + "f005-a-label": "Igaz", + "f005-a-explanation": "Az egyesítés (The Merge) óta (áttérés a proof-of-stake-re), a tranzakcióknak jelentéktelen hatása van a környezetre.", + "f005-b-label": "Hamis", + "f005-b-explanation": "Az egyesítés (The Merge) óta (áttérés a proof-of-stake-re), a tranzakcióknak jelentéktelen hatása van a környezetre.", + "g001-prompt": "A második blokkláncréteg (L2) hálózatai a következőre valók:", + "g001-a-label": "Az Ethereum skálázása", + "g001-a-explanation": "A rollupok és más L2 megoldások elsődleges célja az Ethereum skálázása.", + "g001-b-label": "Kifizetések intézése", + "g001-b-explanation": "A rollupok és más L2 megoldások elsődleges célja az Ethereum skálázása.", + "g001-c-label": "NFT-vásárlás", + "g001-c-explanation": "A rollupok és más L2 megoldások elsődleges célja az Ethereum skálázása.", + "g001-d-label": "Az Ethereum decentralizálása", + "g001-d-explanation": "A rollupok és más L2 megoldások elsődleges célja az Ethereum skálázása.", + "g002-prompt": "A skálázás miatt a legtöbb alternatív L1 hálózat elsősorban a következőt áldozta fel:", + "g002-a-label": "Biztonság", + "g002-a-explanation": "A legtöbb alternatív L1 hálózat a skálázás miatt a biztonságot és még valami mást áldozott fel.", + "g002-b-label": "Decentralizáció", + "g002-b-explanation": "A legtöbb alternatív L1 hálózat a skálázás miatt a decentralizációt és még valami mást áldozott fel.", + "g002-c-label": "A tokenek ára", + "g002-c-explanation": "A tokenek ára nincs hatással a skálázhatóságra.", + "g002-d-label": "Biztonság és decentralizáció", + "g002-d-explanation": "A legtöbb alternatív L1 hálózat a skálázás miatt a biztonságot és a decentralizációt áldozta fel.", + "g003-prompt": "A következők közül melyek nem minősülnek L2-nek?", + "g003-a-label": "Validiumok", + "g003-a-explanation": "A validiumok nem minősülnek L2 megoldásoknak, mivel nem az Ethereumhoz kötik a biztonságot vagy az adatelérhetőséget", + "g003-b-label": "Mellékláncok", + "g003-b-explanation": "A mellékláncok nem minősülnek L2 megoldásoknak, mivel nem az Ethereumhoz kötik a biztonságot vagy az adatelérhetőséget.", + "g003-c-label": "Alternatív L1 blokkláncok", + "g003-c-explanation": "Az alternatív L1 blokkláncok nem minősülnek L2 megoldásoknak.", + "g003-d-label": "Az összes fenti állítás", + "g003-d-explanation": "A validiumok, mellékláncok és alternatív L1 blokkláncok nem minősülnek L2 megoldásoknak, mivel nem az Ethereumhoz kötik a biztonságot vagy az adatelérhetőséget.", + "g004-prompt": "Miért nincs az Ethereumon hivatalos második blokkláncréteg (L2)?", + "g004-a-label": "A központi protokollfejlesztők túlságosan el vannak foglalva az Ethereummal", + "g004-a-explanation": "Nincs tervben „hivatalos” Ethereum L2, mivel a hálózat abból profitál a legtöbbet, ha a megközelítések széles köre érvényesül az L2-n.", + "g004-b-label": "L1-ként az Ethereum végül tömeges skálázást ér el önmagában", + "g004-b-explanation": "Nincs tervben „hivatalos” Ethereum L2, mivel a hálózat abból profitál a legtöbbet, ha a megközelítések széles köre érvényesül az L2-n.", + "g004-c-label": "A központi protokollfejlesztők még nem döntöttek az optimista és a zero knowledge (ZK) rollupok között", + "g004-c-explanation": "Nincs tervben „hivatalos” Ethereum L2, mivel a hálózat abból profitál a legtöbbet, ha a megközelítések széles köre érvényesül az L2-n.", + "g004-d-label": "Az Ethereum abból profitál, hogy az L2 megközelítések széles választéka áll rendelkezésre", + "g004-d-explanation": "Nincs tervben „hivatalos” Ethereum L2, mivel a hálózat abból profitál a legtöbbet, ha a megközelítések széles köre érvényesül az L2-n.", + "h001-prompt": "Az egyesítés (The Merge) milyen konszenzusmechanizmust vezetett be az Ethereumon?", + "h001-a-label": "Proof-of-work", + "h001-a-explanation": "Az egyesítés (The Merge) előtt a konszenzusmechanizmus a proof-of-work (munkaigazolás) volt.", + "h001-b-label": "Proof-of-stake", + "h001-b-explanation": "Helyes! Az egyesítés (The Merge) az Ethereumon a proof-of-stake (letétigazolás) mechanizmust vezette be.", + "h001-c-label": "Proof-of-authority", + "h001-c-explanation": "Az Ethereum se most, se korábban nem használta a proof-of-authority (fennhatóságigazolás) mechanizmusát a főhálózaton.", + "h001-d-label": "Az összes fenti állítás", + "h001-d-explanation": "Az Ethereum számára nem lehetséges, hogy ezek a konszenzusmechanizmusok mind egyszerre működjenek.", + "h002-prompt": "Az egyesítés (The Merge) ennyivel csökkentette az Ethereum energiafelhasználását:", + "h002-a-label": "50%", + "h002-a-explanation": "Az Ethereum energiafelhasználása 99,95%-kal csökkent. Az egyesítés (The Merge) lehetővé tette az áttérést a proof-of-work módszerről a proof-of-stake módszerre.", + "h002-b-label": "62,5%", + "h002-b-explanation": "Az Ethereum energiafelhasználása 99,95%-kal csökkent. Az egyesítés (The Merge) lehetővé tette az áttérést a proof-of-work módszerről a proof-of-stake módszerre.", + "h002-c-label": "90%", + "h002-c-explanation": "Az Ethereum energiafelhasználása 99,95%-kal csökkent. Az egyesítés (The Merge) lehetővé tette az áttérést a proof-of-work módszerről a proof-of-stake módszerre.", + "h002-d-label": "99,95%", + "h002-d-explanation": "Az Ethereum energiafelhasználása 99,95%-kal csökkent. Az egyesítés (The Merge) lehetővé tette az áttérést a proof-of-work módszerről a proof-of-stake módszerre.", + "h003-prompt": "Mikor történt az egyesítés (The Merge)?", + "h003-a-label": "2022. szeptember 15.", + "h003-a-explanation": "Az egyesítés (The Merge) 2022. szeptember 15-én (06:42:42 UTC) történt.", + "h003-b-label": "2021. december 1.", + "h003-b-explanation": "Az egyesítés (The Merge) ennél később történt. 2022. december 1-én volt a Beacon lánc bevezetése.", + "h003-c-label": "2013. november 27.", + "h003-c-explanation": "Az egyesítés (The Merge) ennél később történt. 2013. november 27-én adták ki az Ethereum-tanulmányt.", + "h003-d-label": "2008. október 31.", + "h003-d-explanation": "Az egyesítés (The Merge) ennél később történt. Október 31-én adták ki a Bitcoin tanulmányát.", + "h004-prompt": "Az egyesítés (The Merge) azt jelentette, hogy a felhasználóknak az ETH-t át kellett váltani ETH2-re:", + "h004-a-label": "Igaz", + "h004-a-explanation": "Az ETH sose változott meg, se a The Merge előtt, se alatta, se utána. Az ETH-ről ETH2-re való frissítés ötlete a csalók kedvelt trükkje volt, hogy becsapják a felhasználókat.", + "h004-b-label": "Hamis", + "h004-b-explanation": "Az ETH sose változott meg, se a The Merge előtt, se alatta, se utána. Az ETH-ről ETH2-re való frissítés ötlete a csalók kedvelt trükkje volt, hogy becsapják a felhasználókat.", + "h005-prompt": "Az Ethereum konszenzusrétegét korábban így nevezték:", + "h005-a-label": "Proof-of-work", + "h005-a-explanation": "Az egyesítés (The Merge) előtt a konszenzusmechanizmus a proof-of-work (munkaigazolás) volt.", + "h005-b-label": "Eth2", + "h005-b-explanation": "A konszenzusréteg átnevezése előtt Eth2-nek nevezték.", + "h005-c-label": "Eth1", + "h005-c-explanation": "Eth1 a végrehajtási réteg eredeti neve volt, nem a konszenzusrétegé.", + "h005-d-label": "Letétbe helyezés", + "h005-d-explanation": "A letétbe helyezés (staking) az ETH lekötése egy okosszerződésbe, hogy biztosítsa a láncot." +} diff --git a/src/intl/hu/page-community.json b/src/intl/hu/page-community.json new file mode 100644 index 00000000000..782f82b13c3 --- /dev/null +++ b/src/intl/hu/page-community.json @@ -0,0 +1,54 @@ +{ + "page-community-card-1-title": "Csatlakozzon egy online közösséghez", + "page-community-card-1-description": "Találja meg a saját csoportját és vegyen részt a közösségben más Ethereum-rajongókkal együtt.", + "page-community-card-2-title": "Ethereum események", + "page-community-card-2-description": "Keressen Ethereum-konferenciát, hackathont vagy találkozót, és vegyen részt rajta.", + "page-community-card-3-title": "Támogasson egy projektet", + "page-community-card-3-description": "Nézze meg, hogyan tud bekapcsolódni a képességei és szakmai háttere alapján.", + "page-community-card-4-title": "Keressen támogatásokat", + "page-community-card-4-description": "A támogatások segíthetnek, hogy egy projektet elindítson.", + "page-community-contribute": "Hozzájárulás az ethereum.org oldalhoz", + "page-community-contribute-button": "Bővebben a közreműködésről", + "page-community-contribute-description": "Sok ember számára az ethereum.org az első lépés az ökoszisztémába. Ezernyi nyilvános közreműködő segít, hogy mindig friss és pontos legyen. Szeretne segíteni Ön is? Tájékozódjon a közreműködésről vagy vállaljon fel a GitHub-on egy problémát.", + "page-community-contribute-secondary-button": "Tovább a GitHubra", + "page-community-daos-callout-title": "Decentralizált autonóm szervezetek (DAO-k)", + "page-community-daos-callout-description": "Ezek a csoportok az Ethereum-technológiát használják szervezetek és együttműködések kezelésére. Például a tagság kezelése, a javaslatok megszavazása vagy összegyűjtött eszközök kezelése kapcsán.", + "page-community-explore-dapps": "Fedezd fel a dappokat", + "page-community-explore-dapps-alt": "Fedezd fel a dappokat", + "page-community-explore-dapps-description": "A decentralizált alkalmazásokat (dapp) az Ethereumra építik. Ezek megbontják a hagyományos üzleti modellt és újakat találnak ki helyette.", + "page-community-explore-dapps-title": "Próbálj ki néhány dappot", + "page-community-explore-grants": "Fedezze fel a támogatásokat", + "page-community-find-a-job": "Találjon munkát", + "page-community-get-eth": "ETH beszerzése", + "page-community-get-eth-alt": "Szerezz valamennyi ETH-et", + "page-community-get-eth-description": "Az ETH az Ethereum saját valutája. Önnek is szüksége van némi ETH-re a tárcájában, ha az Ethereum alkalmazásokat szeretné használni.", + "page-community-get-eth-title": "Szerezz valamennyi ETH-et", + "page-community-get-involved-title": "Hogyan lehet ebben részt venni?", + "page-community-get-involved-description": "Számtalan módja van annak, hogy valaki bekapcsolódjon a gyorsan növekvő Ethereum-közösségbe; Ön is csatlakozhat az egyik népszerű online közösséghez, részt vehet eseményen, része lehet a találkozót szervező csoportnak, közreműködhet projektben vagy csatlakozhat a számtalan fórumhoz, melyek az Ethereumról szólnak.", + "page-community-get-involved-image-alt": "Legyen a részese", + "page-community-hero-alt": "Ethereum-közösségi központ", + "page-community-hero-header": "Üdvözöljük az Ethereum-közösségi központban", + "page-community-hero-subtitle": "Az Ethereum-közösség otthont ad sok százezer fejlesztőnek, technologistának, dizájnernek, felhasználónak, HODLernek és rajongónak.", + "page-community-hero-title": "Csatlakozzon a közösséghez", + "page-community-meetuplist-no-meetups": "Nincs a keresésnek megfelelő találkozó. Ön esetleg tud ilyenről?", + "page-community-meta-title": "Közösségi központ", + "page-community-meta-description": "Közösségi oldal leírása", + "page-community-open-source": "Ön alkotó? Építő? Kapjon juttatást a munkájáért.", + "page-community-open-source-description": "Ön is épít valamit az Ethereumra, vagy szeretne ilyet építeni? A cégek ezernyi technikai és nem technikai pozícióra keresnek embereket. Megvan a saját ötlete? Találjon támogatást, hogy a projektje elindulhasson.", + "page-community-open-source-image-alt": "Kapjon juttatást a munkájáért", + "page-community-please-add-to-page": "Kérjük, hogy adja hozzá ehhez az oldalhoz!", + "page-community-support": "Ethereum támogatás", + "page-community-support-alt": "Támogatás", + "page-community-support-button": "Kérjen támogatást", + "page-community-support-description": "Támogatásra van szüksége? Nincs hivatalos Ethereum támogató csapat, de segítőkész közösségek százai elérhetők, hogy Ön jól boldoguljon az Ethereumon.", + "page-community-try-ethereum": "Próbálja ki az Ethereumot", + "page-community-upcoming-events-no-events": "Nincs a közeljövőben esemény. Ön esetleg tud ilyenről?", + "page-community-upcoming-events-load-more": "Továbbiak betöltése", + "page-community-why-get-involved-title": "Miért kapcsolódjon be?", + "page-community-why-get-involved-card-1-title": "Találja meg a csoportját", + "page-community-why-get-involved-card-1-description": "Mindenkinek van egy megfelelő csoport. Találjon hasonlóan gondolkodó embereket és kapcsolódjon velük, hogy megvitassa, átgondolja és ünnepelje az Ethereumot velük együtt.", + "page-community-why-get-involved-card-2-title": "Találjon megélhetést", + "page-community-why-get-involved-card-2-description": "Mindenkinek vannak kifizetendő számlái. Az Ethereum segít, hogy értelmes munkát végezzen és rendesen megfizessék ezért.", + "page-community-why-get-involved-card-3-title": "Változtasson", + "page-community-why-get-involved-card-3-description": "A közreműködése az Ethereumon lehetővé teszi, hogy Ön aktív érdekeltje legyen egy olyan technológiának, mely pozitív hatást gyakorol milliónyi emberre." +} diff --git a/src/intl/hu/page-dapps.json b/src/intl/hu/page-dapps.json index 2db09fec1bc..6bd01235a54 100644 --- a/src/intl/hu/page-dapps.json +++ b/src/intl/hu/page-dapps.json @@ -1,5 +1,6 @@ { "page-dapps-1inch-logo-alt": "1inch logó", + "page-dapps-dexguru-logo-alt": "DexGuru-logó", "page-dapps-aave-logo-alt": "Aave logó", "page-dapps-add-button": "Dapp ajánlása", "page-dapps-add-title": "Dapp hozzáadása", @@ -86,6 +87,8 @@ "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-dexguru": "Nem felügyelt kereskedelmi platform DeFi kereskedőknek", + "page-dapps-dapp-description-synthetix": "A Synthetix egy szintetikus eszközöket létrehozó és azokkal kereskedő protokoll", "page-dapps-docklink-dapps": "Bevezetés a dappok világába", "page-dapps-docklink-smart-contracts": "Okosszerződések", "page-dapps-dark-forest-logo-alt": "Dark Forest logo", @@ -97,6 +100,7 @@ "page-dapps-zerion-logo-alt": "Zerion logó", "page-dapps-rotki-logo-alt": "Rotki logó", "page-dapps-krystal-logo-alt": "Krystal logó", + "page-dapps-synthetix-logo-alt": "Synthetix-logó", "page-dapps-desc": "Keressen Ethereum applikációt, amit szívesen kipróbálna.", "page-dapps-doge-img-alt": "Illusztráció egy számítógépet használó doge-kutyáról", "page-dapps-editors-choice-dark-forest": "Játsszon más játékosok ellen a bolygók meghódításában és próbáld ki a legkorszerűbb Ethereum méretezési/adatvédelmi technológiát. Inkább azoknak, akik már járatosak az Ethereumban.", @@ -210,6 +214,10 @@ "page-dapps-more-on-nft-gaming-button": "Bővebben a tokenizált, játékokhoz kapcsolódó dolgokról", "page-dapps-dapp-description-pwn": "Hitelek könyedén, amelyek mögött bármilyen, az Ethereumon elérhető token vagy NFT áll.", "page-dapps-pwn-image-alt": "PWN logó", + "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.", + "page-dapps-yearn-image-alt": "Yearn-logó", + "page-dapps-dapp-description-convex": "A Convex lehetővé teszi, hogy a Curve-nek likviditást biztosító egyének kereskedelmi díjakat kapjanak, valamint boosted CRV-t kapjanak anélkül, hogy a saját CRV-jük zárolásra kerülne.", + "page-dapps-convex-image-alt": "Convex-logó", "foundation": "Alapítvány", "transaction-fees": "Mik azok a tranzakciós díjak?", "page-wallets-get-some": "Szerezz valamennyi ETH-et" diff --git a/src/intl/hu/page-developers-index.json b/src/intl/hu/page-developers-index.json index 232bd659b17..e652c132022 100644 --- a/src/intl/hu/page-developers-index.json +++ b/src/intl/hu/page-developers-index.json @@ -32,13 +32,15 @@ "page-developers-improve-ethereum": "Segíts jobbá tenni az ethereum.org-ot", "page-developers-improve-ethereum-desc": "Hasonlóképpen az ethereum.org-hoz ezek a dokumentumok a közösség erejével készülnek. Hozz létre PR-t, ha hibát, fejlesztési lehetőséget vagy új lehetőségeket látsz, és segítsd az Ethereum fejlesztőket.", "page-developers-into-eth-desc": "Bevezetés a blokkláncba és az Ethereumba", + "page-developers-intro-ether-desc": "Bevezetés a kriptovaluták és az ether világába", "page-developers-intro-dapps-desc": "Bevezetés a decentralizált alkalmazásokba", "page-developers-intro-dapps-link": "Bevezetés a dapps-ok világába", "page-developers-intro-eth-link": "Bevezetés az Ethereum-ba", + "page-developers-intro-ether-link": "Bevezetés az Ether-be", "page-developers-intro-stack": "Bevezetés a stack-be", "page-developers-intro-stack-desc": "Bevezetés az Ethereum stack-be", - "page-developers-js-libraries-desc": "JavaScript használata az okosszerződésekkel való interakcióra", - "page-developers-js-libraries-link": "JavaScript könyvtárak", + "page-developers-js-libraries-desc": "JavaScript használata az okosszerződésekkel való interakciókhoz", + "page-developers-js-libraries-link": "JavaScript-könyvtárak", "page-developers-language-desc": "Ethereum használata az ismerős nyelvekkel", "page-developers-languages": "Programozási nyelvek", "page-developers-learn": "Az Ethereum fejlesztés tanulása", @@ -47,8 +49,12 @@ "page-developers-learn-tutorials-cta": "Oktatóanyagok megtekintése", "page-developers-learn-tutorials-desc": "Tanuld meg lépésről lépésre az Ethereum fejlesztését azoktól, akik már csináltak ilyet.", "page-developers-meta-desc": "Dokumentáció, oktatóanyagok és eszközök fejlesztőknek, akik Ethereum-on építenek.", - "page-developers-mining-desc": "Hogyan jönnek létre az új blokkok, és hogyan érünk el konszenzust", + "page-developers-mev-desc": "Bevezetés a bányászattal kitermelhető maximális érték (MEV) fogalmába", + "page-developers-mev-link": "Bányászattal kitermelhető maximális érték (MEV)", + "page-developers-mining-desc": "Hogyan jönnek létre az új blokkok és hogyan jutnak konszenzusra a proof-of-work, vagyis a munkaigazolás segítségével", "page-developers-mining-link": "Bányászat", + "page-developers-mining-algorithms-desc": "Információ az Ethereum bányászati algoritmusairól", + "page-developers-mining-algorithms-link": "Bányászati algoritmusok", "page-developers-networks-desc": "A mainnet és a teszthálózat áttekintése", "page-developers-networks-link": "Hálózatok", "page-developers-node-clients-desc": "Hogyan ellenőrizhetők a blokkok és tranzakciók a hálózatban", @@ -59,8 +65,8 @@ "page-developers-read-docs": "Olvasd el a dokumentumokat", "page-developers-scaling-desc": "Megoldások a gyorsabb tranzakciókért", "page-developers-scaling-link": "Méretezés", - "page-developers-smart-contract-security-desc": "Biztonsági intézkedések, amelyeket célszerű megfontolni a fejlesztés során", - "page-developers-smart-contract-security-link": "Biztonság", + "page-developers-smart-contract-security-desc": "Megfontolandó biztonsági óvintézkedések az okosszerződések fejlesztése során", + "page-developers-smart-contract-security-link": "Okosszerződés biztonság", "page-developers-set-up": "Helyi környezet beállítása", "page-developers-setup-desc": "Készítsd elő stack-ed az építésre egy fejlesztői környezet konfigurálásával.", "page-developers-smart-contracts-desc": "A dapp-ok mögött meghúzódó logika – önmagukat érvénybe léptető megállapodások", @@ -80,6 +86,12 @@ "page-developers-transactions-link": "Tranzakciók", "page-developers-web3-desc": "Miben más a web3 fejlesztői világ", "page-developers-web3-link": "Web2 vs Web3", - "alt-eth-blocks": "A blokkok ábrázolása úgy van elrendezve, hogy egy ETH szimbólumot formázzon", + "page-developers-networking-layer": "Hálózati réteg", + "page-developers-networking-layer-link": "Hálózati Réteg", + "page-developers-networking-layer-desc": "Bevezetés az Ethereum-hálózati rétegbe", + "page-developers-data-structures-and-encoding": "Adatszerkezetek és kódolás", + "page-developers-data-structures-and-encoding-link": "Adatszerkezetek és kódolás", + "page-developers-data-structures-and-encoding-desc": "Az Ethereum-veremben használt adatszerkezetek és kódolási séma bemutatása", + "alt-eth-blocks": "A blokkok ábrázolása úgy van elrendezve, hogy egy ETH-szimbólumot formázzon", "page-assets-doge": "Doge dappokat használ" } diff --git a/src/intl/hu/page-developers-learning-tools.json b/src/intl/hu/page-developers-learning-tools.json index 44d6c4ded4e..16d8c16b171 100644 --- a/src/intl/hu/page-developers-learning-tools.json +++ b/src/intl/hu/page-developers-learning-tools.json @@ -1,12 +1,19 @@ { + "page-learning-tools-bloomtech-description": "A BloomTech Web3 kurzus megtanítja azokat a készségeket, amelyeket a munkáltatók keresnek a mérnökökben.", + "page-learning-tools-bloomtech-logo-alt": "BloomTech-logó", "page-learning-tools-bootcamps": "Fejlesztői bootcampek", "page-learning-tools-bootcamps-desc": "Fizettet online kurzusok, hogy gyorsan sebességbe kerülj.", "page-learning-tools-browse-docs": "Dokumentációk böngészése", + "page-learning-tools-capture-the-ether-description": "A Capture the Ether egy játék, melyben Ethereum-okosszerződéseket hackelhet meg, miközben a biztonságról tanul.", + "page-learning-tools-capture-the-ether-logo-alt": "Capture the Ether-logó", + "page-learning-tools-chainshot-description": "Távoktatásos, oktató által vezetett Ethereum fejlesztői bootcamp és további tanfolyamok.", "page-learning-tools-chainshot-logo-alt": "ChainShot logo", "page-learning-tools-coding": "Tanulás programozással", "page-learning-tools-coding-subtitle": "Ezek az eszközök segítenek, hogy az Ethereummal kísérletezz, ha egy interaktívabb tanulási élményt szeretnél.", "page-learning-tools-consensys-academy-description": "Online Ethereum fejlesztő bootcamp.", "page-learning-tools-consensys-academy-logo-alt": "ConsenSys Academy logo", + "page-learning-tools-buildspace-description": "Tanuljon a kriptóról menő projektek építésével.", + "page-learning-tools-buildspace-logo-alt": "_buildspace logó", "page-learning-tools-cryptozombies-description": "Tanulj Solidity-t miközben létrehozod a saját Zombie játékodat.", "page-learning-tools-cryptozombies-logo-alt": "CryptoZombies logo", "page-learning-tools-documentation": "Tanulj dokumentációval", @@ -15,17 +22,37 @@ "page-learning-tools-eth-dot-build-logo-alt": "Eth.build logo", "page-learning-tools-ethernauts-description": "Teljesítsd a szinteket okosszerződések meghackelésével.", "page-learning-tools-ethernauts-logo-alt": "Ethernauts logo", + "page-learning-tools-metaschool-description": "Váljon Web3-fejlesztővé decentralizált alkalmazások (dapp) építése és megvalósítása révén.", + "page-learning-tools-metaschool-logo-alt": "_metaschool logó", "page-learning-tools-game-tutorials": "Interaktív játék útmutatók", "page-learning-tools-game-tutorials-desc": "Tanulj játék közben. Ezek az útmutatók megtanítják az alapokat játék közben.", "page-learning-tools-meta-desc": "Web-alapú programozási eszközök és interaktív tanulási élmények, hogy segítsenek az Ethereum fejlesztéssel való kísérletezésben.", "page-learning-tools-meta-title": "Fejlesztői tanulási eszközök", - "page-learning-tools-remix-description": "Fejlessz, telepítsd és kezelj okosszerződéseket Ethereumra. Kövess útmutatókat a Learneth pluginnal.", - "page-learning-tools-remix-description-2": "A Remix nem csak egy sandbox. Sok fejlesztő Remixet használ okosszerződések írására, fordítására és telepítésre.", + "page-learning-tools-questbook-description": "Saját tempóban végezhető oktatóanyagok a Web 3.0 elsajátításához építéssel", + "page-learning-tools-questbook-logo-alt": "Questbook-logó", + "page-learning-tools-remix-description": "Fejlesszen, telepítsen és adminisztráljon okosszerződéseket az Ethereumra. Kövesse az útmutatókat a LearnEth beépülő modul segítségével.", + "page-learning-tools-remix-description-2": "A Remix, Replit és a ChainIDE nem csak sandboxok – a fejlesztők írhatják, fordíthatják és telepíthetik is saját okosszerződéseiket ezek használatával.", + "page-learning-tools-replit-description": "Testre szabható fejlesztői környezet az Ethereum számára, gyors újratöltéssel, hibaellenőrzéssel és első osztályú testnet-támogatással.", + "page-learning-tools-chainIDE-description": "Kezdje Web3-as útját okosszerződések készítésével az Ethereumra ChainIDE segítségével. Használja a beépített sablonokat, hogy tanuljon, és időt takarítson meg.", + "page-learning-tools-chainIDE-logo-alt": "ChainIDE-logó", + "page-learning-tools-tenderly-description": "A Tenderly Sandbox egy prototípus-készítő környezet, ahol megírhatja, elindíthatja és debuggolhatja az okosszerződéseket a böngészőben Solidity és JavaScript segítségével.", + "page-learning-tools-tenderly-logo-alt": "Tenderly-logó", + "page-learning-tools-replit-logo-alt": "Replit-logó", "page-learning-tools-remix-logo-alt": "Remix logo", "page-learning-tools-sandbox": "Kód sandboxok", "page-learning-tools-sandbox-desc": "Ezek a sandboxot helyet adnak, hogy kísérletezhess az okosszerződés írással és megérthesd az Ethereumot.", + "page-learning-tools-speed-run-ethereum-description": "A Speed Run Ethereum olyan feladványok tárhelye, ahol Scaffold-ETH használatával tesztelheti a Solidity-val kapcsolatos tudását", + "page-learning-tools-speed-run-ethereum-logo-alt": "Speed Run Ethereum-logó", "page-learning-tools-studio-description": "Egy web-alapú IDE, ahol útmutatók alapján készíthetsz és tesztelhetsz okosszerződéseket és frontendet is építhetsz.", "page-learning-tools-vyperfun-description": "Tanuld meg a Vypert egy Pokémon játék építésével.", "page-learning-tools-vyperfun-logo-alt": "Vyper.fun logo", - "alt-eth-blocks": "A blokkok ábrázolása úgy van elrendezve, hogy egy ETH szimbólumot formázzon" + "page-learning-tools-nftschool-description": "Fedezze fel a nem helyettesíthető tokenek, vagyis az NFT-k technikai oldalát.", + "page-learning-tools-nftschool-logo-alt": "NFT school-logó", + "page-learning-tools-pointer-description": "Sajátítson el web3-fejlesztői készségeket szórakoztató interaktív oktatóanyagokon keresztül. Közben szerezzen kriptojutalmakat", + "page-learning-tools-pointer-logo-alt": "Pointer-logó", + "page-learning-tools-platzi-description": "Sajátítsa el a decentralizált alkalmazások (dapp) Web3 platformon való építését, és fejlessze blokkláncfejlesztői képességeit.", + "page-learning-tools-platzi-logo-alt": "Platzi-logó", + "page-learning-tools-alchemy-university-description": "Lépjen előre a web3 karrierlétráján képzések, projektek és kódolás révén.", + "page-learning-tools-alchemy-university-logo-alt": "Alchemy University-logó", + "alt-eth-blocks": "A blokkok ábrázolása úgy van elrendezve, hogy egy ETH-szimbólumot formázzon" } diff --git a/src/intl/hu/page-developers-local-environment.json b/src/intl/hu/page-developers-local-environment.json index 5d91370ea21..8a2e5395555 100644 --- a/src/intl/hu/page-developers-local-environment.json +++ b/src/intl/hu/page-developers-local-environment.json @@ -1,10 +1,14 @@ { "page-local-environment-brownie-desc": "Egy Python-alapú fejlesztői és tesztelési környezet okos szerződéseknek, melyek az Ethereum Virtuális Gépre fókuszálnak.", "page-local-environment-brownie-logo-alt": "Brownie logo", - "page-local-environment-epirus-desc": "Egy platform blokklánc alkalmazások fejlesztésére, telepítésére és monitorozására a Java Virtuális Gépen", + "page-local-environment-kurtosis-desc": "Egy tárolóalapú eszköztár, mellyel könnyedén konfigurálhat és elindíthat egy többklienses Ethereum-teszthálózatot a gyors, lokális dapp-fejlesztés, prototípuskészítés és tesztelés érdekében.", + "page-local-environment-kurtosis-logo-alt": "Kurtosis-logó", + "page-local-environment-epirus-desc": "Egy platform blokklánc alkalmazások fejlesztésére, telepítésére és monitorozására a Java virtuális gépen.", "page-local-environment-epirus-logo-alt": "Epirus logo", "page-local-environment-eth-app-desc": "Készíts Ethereumon működő appokat egy paranccsal. Ezenkívül UI keretrendszerek és DeFi sablonok széles skálájából választhatsz.", "page-local-environment-eth-app-logo-alt": "Create Eth App logo", + "page-local-environment-foundry-desc": "Egy rendkívül gyors, átvihető és moduláris eszköztár Ethereum-alkalmazások fejlesztésére, amelyet Rust nyelven írtak.", + "page-local-environment-foundry-logo-alt": "Foundry-logó", "page-local-environment-framework-feature-1": "Felállíthatsz vele egy helyi blokkláncot.", "page-local-environment-framework-feature-2": "Eszközök az okos szerződéseid fordítására és tesztelésére.", "page-local-environment-framework-feature-3": "Kliens fejlesztési addonok, hogy ugyanabban a projektben/repóban fejleszthess felhasználói alkalmazásokat.", @@ -17,7 +21,7 @@ "page-local-environment-hardhat-logo-alt": "Hardhat logo", "page-local-environment-openZeppelin-desc": "Több órányi fejlesztési időt spórolhatsz meg, ha a CLI-nket használod fordításra, frissítésre, telepítésre és okos szerződés interakciókra.", "page-local-environment-openZeppelin-logo-alt": "OpenZeppelin logo", - "page-local-environment-scaffold-eth-desc": "Hardhat + Create Eth App: minden amire szükséged van, hogy elkezdhess okos szerződés alapú decentralizált alkalmazásokat építeni", + "page-local-environment-scaffold-eth-desc": "Ethers + Hardhat + React: minden, amire csak szüksége van ahhoz, hogy okosszerződés-alapú, decentralizált alkalmazásokat építsen.", "page-local-environment-scaffold-eth-logo-alt": "scaffold-eth logo", "page-local-environment-setup-meta-desc": "Segédlet hogy hogyan válaszd ki a szoftver stackedet Ethereum fejlesztéshez.", "page-local-environment-setup-meta-title": "Ethereum helyi fejlesztői beállítás", diff --git a/src/intl/hu/page-get-eth.json b/src/intl/hu/page-get-eth.json index 99a2d62d0dc..4eeacf9eb4d 100644 --- a/src/intl/hu/page-get-eth.json +++ b/src/intl/hu/page-get-eth.json @@ -2,6 +2,9 @@ "page-get-eth-article-keeping-crypto-safe": "Így gondoskodhat a kriptója biztonságáról", "page-get-eth-article-protecting-yourself": "Védje magát és a forrásait", "page-get-eth-article-store-digital-assets": "Hogyan lehet digitális eszközöket tárolni az Ethereumon", + "page-get-eth-article-protecting-yourself-desc": "MyCrypto", + "page-get-eth-article-keeping-crypto-safe-desc": "Coinbase", + "page-get-eth-article-store-digital-assets-desc": "ConsenSys", "page-get-eth-cex": "Centralizált tőzsdék", "page-get-eth-cex-desc": "A tőzsdék olyan vállalkozások, melyek lehetővé teszik kriptó vásárlását hagyományos valutákkal. Ők rendelkeznek az Ön által vásárolt ETH felett, amíg ki nem utalja egy tárcába, amit Ön irányít.", "page-get-eth-checkout-dapps-btn": "Nézd meg a dappokat", diff --git a/src/intl/hu/page-index.json b/src/intl/hu/page-index.json index fcd32a7e0b4..e816555fc01 100644 --- a/src/intl/hu/page-index.json +++ b/src/intl/hu/page-index.json @@ -39,7 +39,7 @@ "page-index-developers-button": "Fejlesztői portál", "page-index-developers-code-examples": "Kódpéldák", "page-index-developers-code-example-title-0": "Az Ön saját bankja", - "page-index-developers-code-example-description-0": "Felépíthet egy bankot az Ön által programozott logika alapján.", + "page-index-developers-code-example-description-0": "Létrehozhat egy bankot az Ön által programozott logika alapján.", "page-index-developers-code-example-title-1": "Saját pénznem", "page-index-developers-code-example-description-1": "Létrehozhat tokeneket, amelyeket átvihet és használhat az alkalmazások között.", "page-index-developers-code-example-title-2": "JavaScript Ethereum-pénztárca", @@ -48,8 +48,10 @@ "page-index-developers-code-example-description-3": "A meglévő szolgáltatásokból decentralizált, nyitott alkalmazásokat készíthet.", "page-index-network-stats-title": "Az Ethereum ma", "page-index-network-stats-subtitle": "A legfrissebb hálózati statisztika", + "page-index-network-stats-total-eth-staked": "A letétbe helyezett ETH teljes összege", "page-index-network-stats-eth-price-description": "ETH-ár (USD)", "page-index-network-stats-eth-price-explainer": "1 ether legutóbbi ára. Akár 0,000000000000000001 ETH-t is vásárolhat – nem kell 1 egészet vennie.", + "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)", @@ -73,5 +75,15 @@ "page-index-nft": "Az eszközök internete", "page-index-nft-description": "Az Ethereum nem csak digitális pénz. Bármi, amit birtokolhat, helyettesíthető, cserélhető és felhasználható nem cserélhető tokenként (NFT). Tokenizálhatja műalkotásait, és automatikusan megkapja a jogdíjat minden újraértékesítéskor. Vagy használja a tokeneket valamire, ami a tulajdonában áll, hogy kölcsönt vegyen fel. A lehetőségek köre folyamatosan bővül.", "page-index-nft-button": "Bővebben az NFT-kről", - "page-index-nft-alt": "Egy Eth-logó, amely hologramon keresztül jelenik meg." + "page-index-nft-alt": "Egy Eth-logó, amely hologramon keresztül jelenik meg.", + "community-events-content-heading": "Csatlakozzon az ethereum.org közösséghez", + "community-events-content-1": "Csatlakozzon a közel 40 000 taghoz a Discord szerveren.", + "community-events-content-2": "Csatlakozzon a havi közösségi konferenciabeszélgetésekhez, hogy érdekes újdonságokat tudjon meg az Ethereum.org fejlesztéseiről, illetve ökoszisztémánkról is fontos híreket közlünk. Tegye fel kérdéseit, ossza meg ötleteit, adjon visszajelzést – ez egy remek lehetőség, hogy tagja legyen a virágzó Ethereum-közösségnek.", + "community-events-next-event": "Következő esemény", + "community-events-no-events-planned": "Nincs tervezett esemény", + "community-events-upcoming-calls": "Következő konferenciabeszélgetések", + "community-events-no-upcoming-calls": "Nincs tervezett konferenciabeszélgetés", + "community-events-previous-calls": "Korábbi konferenciabeszélgetések", + "community-events-there-are-no-past-calls": "Nincsenek korábbi konferenciabeszélgetések", + "community-events-add-to-calendar": "Hozzáadás a naptárhoz" } diff --git a/src/intl/hu/page-languages.json b/src/intl/hu/page-languages.json index 7e0d0dd4a31..d78b1eab67a 100644 --- a/src/intl/hu/page-languages.json +++ b/src/intl/hu/page-languages.json @@ -6,9 +6,12 @@ "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-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-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ő", "language-ar": "Arab", "language-az": "Azerbajdzsáni", "language-bg": "Bolgár", @@ -24,6 +27,8 @@ "language-fi": "Finn", "language-fr": "Francia", "language-gl": "Galíciai", + "language-gu": "Gudzsaráti", + "language-he": "Héber", "language-hi": "Hindi", "language-hr": "Horvát", "language-hu": "Magyar", @@ -36,11 +41,12 @@ "language-km": "Khmer", "language-ko": "Koreai", "language-lt": "Litván", - "language-ml": "Maláj", + "language-ml": "Malajálam", "language-mr": "Maráthi", "language-ms": "Maláj", "language-nb": "Norvég", "language-nl": "Holland", + "language-pcm": "Nigériai pidzsin", "language-fil": "Filippínó", "language-pl": "Lengyel", "language-pt": "Portugál", @@ -56,8 +62,9 @@ "language-ta": "Tamil", "language-tr": "Török", "language-uk": "Ukrán", + "language-ur": "Urdu", "language-uz": "Üzbég", "language-vi": "Vietnámi", - "language-zh": "Egyszerűsített Kínai", - "language-zh-tw": "Hagyományos Kínai" + "language-zh": "Egyszerűsített kínai", + "language-zh-tw": "Hagyományos kínai" } diff --git a/src/intl/hu/page-layer-2.json b/src/intl/hu/page-layer-2.json index 4be6ff97fdf..cd855aa7cc8 100644 --- a/src/intl/hu/page-layer-2.json +++ b/src/intl/hu/page-layer-2.json @@ -1,3 +1,131 @@ { + "layer-2-arbitrum-note": "A hibavizsgálat csak az engedélyezőlistán szereplő felhasználók számára elérhető, az engedélyezőlista még nincs megnyitva", + "layer-2-boba-note": "Az állapotvalidálás fejlesztés alatt áll", + "layer-2-optimism-note": "A hibavizsgálat fejlesztés alatt áll", + "layer-2-hero-title": "2. réteg", + "layer-2-hero-header": "Ethereum mindenkinek", + "layer-2-hero-subtitle": "Az Ethereum skálázása a tömeges használat érdekében.", + "layer-2-hero-alt-text": "Annak illusztrációja, ahogyan a tranzakciók a második blokkláncrétegen (L2) összevonódnak, majd felkerülnek az Ethereum főhálózatára", + "layer-2-hero-button-1": "Mi az a második blokkláncréteg (L2)", + "layer-2-hero-button-2": "A második blokkláncréteg (L2) használata", + "layer-2-hero-button-3": "Áthelyezés a második blokkláncrétegre (L2)", + "layer-2-statsbox-1": "A második blokkláncrétegen (L2) lévő teljes letétbe helyezett érték (USD)", + "layer-2-statsbox-2": "Átlagos ETH átviteli díj a második blokkláncrétegre (L2) (USD)", + "layer-2-statsbox-3": "A második blokkláncrétegen (L2) lévő teljes letétbe helyezett érték változása (30 nap)", + "layer-2-what-is-layer-2-title": "Mi az a második blokkláncréteg (L2)?", + "layer-2-what-is-layer-2-1": "A második blokkláncréteg (L2) egy gyűjtőfogalom, amit az Ethereum különböző skálázási megoldásainak egy meghatározott csoportjára használunk. A második blokkláncréteg (L2) egy különálló blokklánc, ami kiterjeszti az Ethereumot, és az Ethereum biztonsági garanciáit örökli.", + "layer-2-what-is-layer-2-2": "Most ássuk bele egy kicsit jobban magunkat, amihez meg kell értenünk az első blokkláncréteget (L1).", + "layer-2-what-is-layer-1-title": "Mi az az első blokkláncréteg (L1)?", + "layer-2-what-is-layer-1-1": "Az L1 az alap blokklánc. Az Ethereum és a Bitcoin is L1 blokkláncok, mert ezek alkotják az alapot, amelyre a különböző, második blokkláncréteget (L2) képző hálózatok épülnek. L2-projektnek minősülnek például az összevont tranzakciók (rollup) az Ethereumon, illetve a Bitcoinonra épült Lighting Network. Minden felhasználói tevékenység, ami ezeken az L2 projekteken történik, végül felkerül az L1 blokkláncra.", + "layer-2-what-is-layer-1-2": "Az Ethereum adatelérhetőségi rétegként is szolgál a második blokkláncrétegeken (L2). Az L2 projektek az Ethereumon lévő adatokra támaszkodva teszik közzé tranzakciós adataikat az Ethereumon. Ezek az adatok felhasználhatók az L2 státuszának lekérésére vagy az L2-n lévő tranzakciók vitatására.", + "layer-2-what-is-layer-1-list-title": "Az Ethereum, mint első blokkláncréteg (L1) a következőket foglalja magában:", + "layer-2-what-is-layer-1-list-1": "Csatlakozásipont-operátorok hálózata, amely biztosítja és validálja a hálózatot", + "layer-2-what-is-layer-1-list-2": "Blokk-készítők hálózata", + "layer-2-what-is-layer-1-list-3": "A blokklánc maga és az összes tranzakciós adat", + "layer-2-what-is-layer-1-list-4": "A hálózat konszenzusmechanizmusa", + "layer-2-what-is-layer-1-list-link-1": "Van még olyan dolog, ami nem egyértelmű az Ethereum kapcsán?", + "layer-2-what-is-layer-1-list-link-2": "Ismerje meg az Ethereumot.", + "layer-2-why-do-we-need-layer-2-title": "Miért van szükség második blokkláncrétegre (L2)?", + "layer-2-why-do-we-need-layer-2-1": "A blokkláncok három kívánatos tulajdonsága, hogy decentralizáltak, biztonságosak és skálázhatók legyenek. A blokklánc-trilemma szerint egy egyszerű blokklánc-architektúra csak kettőt képes egyszerre biztosítani a háromból. Biztonságos és decentralizált blokkláncot szeretne? Akkor fel kell áldoznia a skálázhatóságot.", + "layer-2-why-do-we-need-layer-2-2": "Az Ethereum jelenleg több mint 1 millió tranzakciót kezel naponta. A felhasználói kereslet miatt a tranzakciós díjak megnövekedhetnek. Itt jönnek a képbe a második blokkláncréteges (L2) hálózatok.", + "layer-2-why-do-we-need-layer-2-scalability": "Skálázhatóság", + "layer-2-why-do-we-need-layer-2-scalability-1": "Az L2 fő célja a tranzakcióátvitel növelése (több tranzakció másodpercenként) a decentralizáció vagy a biztonság feláldozása nélkül.", + "layer-2-why-do-we-need-layer-2-scalability-2": "Az Ethereum főhálózata (L1) másodpercenként nagyjából 15 tranzakciót tud feldolgozni. Amikor sokan akarják használni a hálózatot, akkor feltorlódnak az ügyletek, megnövelve a tranzakciós díjat, és ezzel kizárva azokat a felhasználókat, akik azt már nem tudják megfizetni. Az L2 hálózatok képesek csökkenteni ezeket a díjakat azáltal, hogy a tranzakciókat az L1 blokkláncon kívül dolgozzák fel.", + "layer-2-why-do-we-need-layer-2-scalability-3": "Bővebben az Ethereum jövőképéről", + "layer-2-benefits-of-layer-2-title": "A második blokkláncréteg (L2) előnyei", + "layer-2-lower-fees-title": "Alacsonyabb díjak", + "layer-2-lower-fees-description": "Azáltal, hogy számos láncon kívüli tranzakciót összevonnak és egyetlen tranzakcióként kerül be az L1 blokkláncba, a tranzakciós díjak jelentősen csökkennek, így az Ethereum mindenki számára elérhetőbbé válik.", + "layer-2-maintain-security-title": "Biztonság fenntartása", + "layer-2-maintain-security-description": "Az L2 blokkláncok az Ethereum főhálózatára küldik be tranzakcióikat, így a felhasználók részesülnek az Ethereum-hálózat biztonságából.", + "layer-2-expand-use-cases-title": "Több felhasználási lehetőség", + "layer-2-expand-use-cases-description": "A másodpercenkénti több tranzakció, az alacsonyabb díjak és az új technológia révén a projektek jobb felhasználói élményt nyújtó alkalmazásokká bővülnek.", + "layer-2-how-does-layer-2-work-title": "Hogyan működik a második blokkláncréteg (L2)?", + "layer-2-how-does-layer-2-work-1": "Ahogy fentebb említettük, az L2 egy gyűjtőfogalom azokra az Ethereum-skálázási megoldásokra, amelyek az Ethereum L1-rétegén kívül kezelik a tranzakciókat, miközben továbbra is kihasználják annak szilárd decentralizált biztonságát. Az L2 egy különálló blokklánc, amely kiterjeszti az Ethereumot. Hogyan működik?", + "layer-2-how-does-layer-2-work-2": "Különféle L2-megoldások léteznek, egyedi kompromisszumokkal és biztonsági modellekkel. A második blokkláncrétegek (L2) átveszik a tranzakciókezelés terhét az L1-től, hogy az kevésbé legyen túlterhelt, így pedig minden sokkal inkább skálázhatóbbá válik.", + "layer-2-rollups-title": "Összegzők", + "layer-2-rollups-1": "Az összevont tranzakciók (rollup) sok száz tételt tudnak egyetlen L1 tranzakcióba összerendezni. Ezáltal az L1 tranzakciós díja eloszlik a felhasználók között, és minden ügylet olcsóbb lesz.", + "layer-2-rollups-2": "Az összevont tranzakciók az L1-en kívül jönnek létre, de azokat is beküldik az L1-be. Ennek következtében a rollup megörökli az Ethereum biztonságát. Amint az adat feltöltésre kerül az L1-be, a rollup módosításához az Ethereumot kell megváltoztatni. Kétféle megoldás létezik: az optimista és a zero-knowledge (ZK, nulla tudású), melyek elsősorban abban különböznek, hogy miként adják át az adatot az L1-nek.", + "layer-2-optimistic-rollups-title": "Optimista összegzők", + "layer-2-optimistic-rollups-description": "A optimista rollupok lényege, hogy alapvetően azt feltételezik a tranzakciókról, hogy érvényesek, de szükség esetén kétségbe vonhatók. Érvénytelen tranzakció gyanúja esetén hibavizsgálatot hajtanak végre annak ellenőrzésére, hogy valóban erről van-e szó.", + "layer-2-optimistic-rollups-childSentance": "Bővebben az optimista rollupokról", + "layer-2-zk-rollups-title": "Zero-knowledge összegzők", + "layer-2-zk-rollups-description": "A zero-knowledge rollupok érvényességi igazolásokat használnak, amikor a tranzakciókat a láncon kívül számítják ki, majd tömörítve továbbítják az adatokat az Ethereum főhálózatának, hogy igazolják az ügyletek érvényességét.", + "layer-2-zk-rollups-childSentance": "Bővebben a ZK-rollupokról", + "layer-2-dyor-title": "Mindig nézzen utána Ön is: az L2-re vonatkozó kockázatok", + "layer-2-dyor-1": "Számos L2 projekt viszonylag újkeletű, és a felhasználóknak a működtetők őszinte magatartásában kell bízniuk, miközben azok igyekeznek decentralizálni a hálózataikat. Mindig mérlegelje, hogy az esetleges kockázatokat el tudja-e fogadni.", + "layer-2-dyor-2": "Az L2 hálózatok technológiájával, kockázataival és bizalmi feltételezéseivel kapcsolatban nézze meg az L2BEAT-et, amely minden projekthez átfogó kockázatelemzési keretrendszert biztosít.", + "layer-2-dyor-3": "Ugrás az L2BEAT oldalára", + "layer-2-use-layer-2-title": "2. réteg használata", + "layer-2-use-layer-2-1": "Most, hogy egyértelművé vált, miért létezik a második blokkláncréteg (L2) és hogyan működik, vágjunk bele a használatába!", + "layer-2-contract-accounts": "Amennyiben okosszerződéses tárcát használ, mint a Safe vagy az Argent, ennek címe felett nem rendelkezik kontrollal az L2-n addig, amíg a szerződéses számláját nem aktiválja újra az adott címen az L2-n. A hagyományos számlák, melyek visszaállítási jelszóval rendelkeznek, automatikusan rendelkeznek az adott számla felett minden L2 hálózaton.", + "layer-2-use-layer-2-generalized-title": "Általános L2 hálózatok", + "layer-2-use-layer-2-generalized-1": "Az általános L2 hálózatok ugyanúgy viselkednek, mint az Ethereum – csak olcsóbbak. Amit az Ethereum L1-en meg lehet tenni, azt az L2-n is. Számtalan decentralizált alkalmazás (dapp) már elkezdett áttelepülni ezekre a hálózatokra, vagy teljesen kihagyta a főhálózatot, és közvetlenül az L2-re épült.", + "layer-2-use-layer-2-application-specific-title": "Alkalmazásspecifikus L2-hálózatok", + "layer-2-use-layer-2-application-specific-1": "Az alkalmazásspecifikus L2-projektek egy adott alkalmazási terület optimalizálására specializálódtak, és ezáltal jobb teljesítményt nyújtanak.", + "layer-2-sidechains-title": "Megjegyzés a mellékláncokról, validiumokról és alternatív blokkláncokról", + "layer-2-sidechains-1": "A mellékláncok és validiumok olyan blokkláncok, amelyek lehetővé teszik az eszközök Ethereumról való áthidalását és egy másik blokkláncon való felhasználását. A mellékláncok és a validiumok párhuzamosan futnak az Ethereummal, és hidakon keresztül lépnek interakcióba az Ethereummal, de nem az Ethereumtól származtatják biztonságukat vagy az adatok elérhetőségét.", + "layer-2-sidechains-2": "Mindkettő skálázási képessége az L2-megoldásokhoz hasonló – alacsonyabb tranzakciós díjakat és nagyobb tranzakciós átviteli sebességet kínálnak –, de eltérő bizalmi feltételezésekkel járnak.", + "layer-2-more-on-sidechains": "További információk a mellékláncokról", + "layer-2-more-on-validiums": "További információk a validiumokról", + "layer-2-sidechains-4": "Néhány L1 blokklánc az Ethereumhoz képest magasabb tranzakcióátvitelt és alacsonyabb díjakat tud kínálni, de általában más területeken kompromisszumokra kényszerülnek (például a csomópontok futtatásához komolyabb hardverre van szükség).", + "layer-2-onboard-title": "Hogyan lehet átkerülni az L2-re", + "layer-2-onboard-1": "Két fő módja van annak, hogy eszközeit áthelyezze a második blokkláncrétegre (L2): egy okosszerződésen keresztül áthidalhatja a pénzeszközeit az Ethereumról, vagy egy kriptotőzsdéről közvetlenül egy L2 hálózatra utalja ki pénzeszközeit.", + "layer-2-onboard-wallet-title": "A pénzeszközei a tárcájában vannak?", + "layer-2-onboard-wallet-1": "Ha már van ETH a tárcájában, akkor egy híd vagy összekötő segítségével tudja áthelyezni az Ethereum-főhálózatról egy L2 hálózatra.", + "layer-2-more-on-bridges": "További információk a hidakról", + "layer-2-onboard-wallet-input-placeholder": "Válassza ki az L2-t, amelyikre szeretne áthelyezni", + "layer-2-onboard-wallet-selected-1": "A következőképpen tud kapcsolódni az L2-höz", + "layer-2-onboard-wallet-selected-2": "ezen tárcák használatával:", + "layer-2-bridge": "Híd", + "layer-2-onboard-exchange-title": "A pénzeszközei kriptotőzsdén vannak?", + "layer-2-onboard-exchange-1": "Egyes centralizált tőzsdéken már lehetséges a közvetlen pénzkiutalás és befizetés az L2 hálózatokra. Ellenőrizze, hogy melyik tőzsdék támogatják az L2-re való kiutalást, illetve hogy melyik L2-t támogatják.", + "layer-2-onboard-exchange-2": "Emellett szüksége van egy tárcára is, ahova a pénzeszközeit kiutaltatja.", + "layer-2-onboard-find-a-wallet": "Válasszon magának egy Ethereum-tárcát.", + "layer-2-onboard-exchange-input-placeholder": "Nézze meg az L2-t támogató tőzsdéket", + "layer-2-deposits": "Letétbe helyezés", + "layer-2-withdrawals": "Letétkivonás", + "layer-2-go-to": "Ugrás ide:", + "layer-2-tools-title": "Hasznos eszközök a második blokkláncrétegen (L2)", + "layer-2-tools-l2beat-description": "Az L2BEAT nagyszerű eszköz az L2 projektek technikai kockázatértékelésének tanulmányozására. Tekintse meg az oldalon található információkat, amikor bizonyos L2 projekteket vizsgál.", + "layer-2-tools-l2fees-description": "Az L2 Fees oldalon megnézheti a különböző L2 hálózatok aktuális tranzakciós díjait (USD-ban kifejezve).", + "layer-2-tools-chainlist-description": "A Chainlist nagyszerű eszköz a hálózati RPC-k támogatott tárcákba való importálásához. Itt találja az L2 projektekhez tartozó RPC-ket, melyek révén kapcsolatot tud létrehozni.", + "layer-2-tools-zapper-description": "Kezelje a teljes web3-portfólióját a DeFi-tól kezdve az NFT-kig, és bármit, ami ezután következik. Fektessen be a legújabb lehetőségekbe egyetlen kényelmes helyről.", + "layer-2-tools-zerion-description": "Építse fel és kezelje a teljes DeFi portfólióját egyetlen helyről. Fedezze fel a decentralizált pénzügyek világát még ma.", + "layer-2-tools-debank-description": "Kövesse nyomon a web3 világ minden fontos eseményét", + "layer-2-faq-title": "GYIK", + "layer-2-faq-question-1-title": "Miért nincs „hivatalos” Ethereum L2?", + "layer-2-faq-question-1-description-1": "Ahogyan nincs „hivatalos” Ethereum-kliens, úgy nincs „hivatalos” Ethereum L2 sem. Az Ethereum nem engedélyhez kötött – gyakorlatilag bárki létrehozhat L2 hálózatot! Számos csapat építi a második blokkláncréteg saját verzióját, és az ökoszisztéma egésze profitál a különféle felhasználási esetekre optimalizált tervezési megközelítések sokféleségéből. Hasonlóan ahhoz, ahogy több Ethereum-kliensünk is van, amelyet több csapat fejlesztett ki a hálózat sokszínűsége érdekében, a jövőben az L2 hálózatok is így fognak fejlődni.", + "layer-2-faq-question-2-title": "Mi a különbség az optimista és a zero-knowledge rollupok között?", + "layer-2-faq-question-2-description-1": "Mind az optimista, mind a zero-knowledge rollupok tranzakciók százait vonják össze egyetlen tranzakcióba az L1-en. Az összesített tranzakciók az L1-en kívül kerülnek végrehajtásra, de a tranzakciós adatok az L1-en is közzétételre kerülnek.", + "layer-2-faq-question-2-description-2": "Az elsődleges különbség az, hogy milyen adatok kerülnek az L1-be, és hogyan történik az adatok ellenőrzése. Az érvényességi igazolásokhoz (a zero-knowledge rollupok esetében) a láncon kívül futnak a számítások, melyek egy igazolást tesznek közzé, míg a hibabizonyításoknál (az optimista rollupoknál) csak akkor futtatják le a számításokat a láncon belül, ha hiba gyanítható, és ellenőrizni kell.", + "layer-2-faq-question-2-description-3": "Jelenleg a legtöbb zero-knowledge (ZK) rollup alkalmazásspecifikus, miközben az optimista rollupok nagyrészt általánosan alkalmazhatók.", + "layer-2-more-info-on-optimistic-rollups": "További információk az optimista rollupokról", + "layer-2-more-info-on-zk-rollups": "További információk a zero-knowledge rollupokról", + "layer-2-faq-question-4-title": "Milyen kockázatokkal jár az L2?", + "layer-2-faq-question-4-description-1": "A második blokkláncréteg (L2) projektjei további kockázatot jelentenek ahhoz képest, ha Ön az Ethereum főhálózatán tartja eszközeit és közvetlenül ott indít tranzakciókat. Például a szekvenszerek leállása esetén várakoznia kell ahhoz, hogy hozzáférjen pénzeszközeihez.", + "layer-2-faq-question-4-description-2": "Mindenképpen érdemes megvizsgálni az adott projektet, mielőtt jelentős összegeket helyez át az L2-re. Az L2 hálózatok technológiájával, kockázataival és bizalmi feltételezéseivel kapcsolatban nézze meg az L2BEAT oldalát, amely minden projekthez átfogó kockázatelemzési keretrendszert biztosít.", + "layer-2-faq-question-4-description-3": "A blokklánchidak, melyek az eszközök L2-re való áthelyezését teszik lehetővé, még a fejlesztés korai szakaszában vannak, és valószínűleg még ki kell alakítani az optimális dizájnt. A közelmúltban történtek támadások a hidak ellen.", + "layer-2-faq-question-5-title": "Miért nem jelennek meg bizonyos L2 projektek itt?", + "layer-2-faq-question-5-description-1": "Szeretnénk a felhasználók számára a lehető legjobb eszközöket adni, hogy biztonságosan és magabiztosan tudjanak navigálni az L2 világában. Egy kritériumrendszer segítségével értékeljük a projekteket, hogy bekerülhetnek-e.", + "layer-2-faq-question-5-view-listing-policy": "Itt találja az L2-listázási szabályzatot.", + "layer-2-faq-question-5-description-2": "Bárki javasolhatja, hogy egy adott L2 megjelenjen az ethereum.org portálon. Ha Ön hiányolja valamelyik L2-t, akkor itt jelezze.", + "layer-2-further-reading-title": "További olvasnivaló", + "a-rollup-centric-ethereum-roadmap": "A rollupközpontú Ethereum ütemterve", + "an-incomplete-guide-to-rollups": "Hiányos útmutató a rollupokhoz", + "polygon-sidechain-vs-ethereum-rollups": "A Polygon melléklánc és az Ethereum-rollupok összehasonlítása: L2 skálázási megközelítések | Vitalik Buterin és Lex Fridman", + "rollups-the-ultimate-ethereum-scaling-strategy": "Rollupok – A Ethereum végső skálázási stratégiája? Az Arbitrum és Optimism bemutatása", + "scaling-layer-1-with-shard-chains": "Az L1 skálázása párhuzamos futtatású (shard) láncokkal", + "understanding-rollup-economics-from-first-principals": "A rollupok gazdasági vonatkozásainak megértése az alapelvektől kezdve", + "arbitrum-description": "Az Arbitrum One egy olyan optimista rollup, melynek célja, hogy az ügyletek során olyan érzése legyen a felhasználónak, mintha az Ethereumot használná. Ugyanakkor a tranzakció költsége az L1 díj töredéke.", + "optimism-description": "Az Optimism egy gyors, egyszerű és biztonságos, az Ethereum-virtuális géppel (EVM) ekvivalens optimista rollup. A Ethereum technológiáját skálázza, miközben annak értékét is növeli a visszamenőleges közjó-finanszírozással.", + "boba-description": "A Boba egy optimista rollup, mely eredetileg az Optimism projektből ágazott ki. Egy olyan skálázási megoldás, mely törekszik a díjak csökkentésére, a tranzakcióátvitel növelésére, és kiterjeszti az okosszerződések funkcióit.", + "loopring-description": "A Loopring zero-knowledge rollup L2 megoldása arra törekszik, hogy az Ethereum főhálózatával megegyező biztonsági garanciákat nyújtsa rendkívüli skálázási növekménnyel együtt: a tranzakcióátvitel 1000-szeres megnövelésével és a költség csökkentésével, ami az L1 díjának 0,1%-a.", + "zksync-description": "A zkSync egy felhasználó-központú zero-knowledge rollup platform, amelyet a Matter Labs dolgozott ki. Egy Ethereum-skálázási megoldás, amely már elérhető az Ethereum főhálózatán. Támogatja a kifizetéseket, a tokenátváltást és az NFT-k létrehozását.", + "zkspace-description": "A ZKSpace platform három fő részből áll: az L2 AMM DEX (automatikus piackészítőként működő decentralizált tőzsde), mely ZK-rollup technológát használ, és ZKSwapnak nevezik; a kifizetési rendszer, melynek ZKSquare a neve; és az NFT-piactér, amely ZKSea néven fut.", + "aztec-description": "Az Aztec Network az első privát ZK-rollup az Ethereumon, mely lehetővé teszi, hogy a decentralizált alkalmazások élvezhessék az adatvédelmet és a skálázást.", + "layer-2-note": "Megjegyzés:", + "layer-2-ecosystem-portal": "Ökoszisztéma portál", + "layer-2-token-lists": "Tokenlisták", + "layer-2-explore": "Felfedezés", "page-dapps-ready-button": "Ugrás" } diff --git a/src/intl/hu/page-learn.json b/src/intl/hu/page-learn.json new file mode 100644 index 00000000000..4e5248f7747 --- /dev/null +++ b/src/intl/hu/page-learn.json @@ -0,0 +1,123 @@ +{ + "toc-learn-hub": "Tanulási központ", + "toc-what-is-crypto-ethereum": "Mi az Ethereum?", + "toc-how-do-i-use-ethereum": "Hogyan használhatom az Ethereumot?", + "toc-what-is-ethereum-used-for": "Mire használható az Ethereum?", + "toc-strengthen-the-ethereum-network": "Erősítse Ön is az Ethereum hálózatát", + "toc-learn-about-the-ethereum-protocol": "Ismerje meg az Ethereum-protokollt", + "toc-learn-about-the-ethereum-community": "Ismerje meg az Ethereum közösségét", + "toc-books-and-podcasts": "Könyvek és podcastok", + "hero-header": "Ismerje meg az Ethereumot", + "hero-subtitle": "Az Ön tanulási útmutatója az Ethereum világába. Ismerje meg, hogyan működik az Ethereum és hogyan tud hozzá kapcsolódni. Ez az oldal technikai és nem technikai cikkeket, útmutatókat és forrásokat is tartalmaz.", + "hero-button-lets-get-started": "Lássunk neki!", + "what-is-crypto-1": "Talán Ön is hallott már a kriptovalutákról, blokkláncokról és a Bitcoinról. Az alábbi hivatkozások feltárják, hogy mik ezek és hogyan kapcsolódnak az Ethereumhoz.", + "what-is-crypto-2": "A kriptovaluták, mint amilyen a Bitcoin is, lehetővé teszik bárki számára, hogy pénzt utaljon a világon bárhova. Az Ethereum is képes erre, ráadásul olyan programkódokat is tud futtatni, melyek révén alkalmazásokat és szervezeteket lehet rá építeni. Egyaránt ellenálló és rugalmas: bármilyen számítógépes program futhat az Ethereumon. Tudjon meg többet, és kezdje el Ön is használni:", + "what-is-ethereum-card-title": "Mi az Ethereum?", + "what-is-ethereum-card-description": "Ha Önnek új az Ethereum világa, akkor kezdje itt és ismerje meg, hogy miért fontos az Ethereum.", + "what-is-ethereum-card-image-alt": "Egy bazárba kukucskáló ember képe, amely az Ethereumot reprezentálja.", + "what-is-eth-card-title": "Mi az az ETH?", + "what-is-eth-description": "Az ether (ETH) az a valuta, amely az Ethereum hálózatát és alkalmazásait működteti.", + "what-is-web3-card-title": "Mi az a Web3?", + "what-is-web3-card-description": "A web3 egy olyan internetmodell, amely értékeli az eszközök és a személyazonosság feletti kontrollt.", + "additional-reading-more-on-ethereum-basics": "Bővebben az Ethereum alapjairól", + "guides-hub-desc": "Útmutatók: részletes instrukciók az Ethereum használatáról", + "quiz-hub-desc": "Kvízközpont: tesztelje tudását", + "additional-reading-what-are-smart-contracts": "Mi az az okosszerződés?", + "additional-reading-what-is-web3": "Mi az web3?", + "additional-reading-ethereum-in-thirty-minutes": "Ethereum 30 percben Vitalik Buterintől", + "additional-reading-get-eth": "Tudja meg, hogyan juthat ETH-hez", + "how-do-i-use-ethereum-1": "Az Ethereum használata mindenkinek mást jelenthet. Ön talán egy alkalmazást akar használni, online személyazonosságát igazolni vagy némi ETH-t utalni. Az első dolog, amire szüksége van, az egy számla. A legegyszerűbb módja a számla létrehozásának és használatának egy szoftver beszerzése, melyet tárcának nevezünk.", + "what-is-a-wallet-card-title": "Mi az a tárca?", + "what-is-a-wallet-card-description": "A digitális tárcák olyanok, akár az igaziak; tartalmazzák mindazt, amivel az ember a személyazonosságát igazolja és hozzáférést ad azokhoz a helyekhez, amit az ember értékesnek tart.", + "what-is-a-wallet-card-alt": "Egy robot illusztrációja.", + "find-a-wallet-card-title": "Tárca keresése", + "find-a-wallet-card-description": "Böngésszen a tárcák között azon jellemzők alapján, amelyek Önnek leginkább számítanak.", + "find-a-wallet-button": "A tárcák listája", + "crypto-security-basics-card-title": "Biztonsági alapok", + "crypto-security-basics-card-description": "Tudja meg, hogyan ismerheti fel a csalásokat és hogyan kerülheti el a legjellemzőbb trükköket.", + "crypto-security-basics-card-button": "Maradjon biztonságban", + "things-to-consider-banner-title": "Az Ethereum használatához fontos tudnivalók", + "things-to-consider-banner-1": "Minden Ethereum-tranzakcióért díjat kell fizetni ETH formájában, még akkor is, ha az Ethereumra épített különféle tokeneket mozgatja, mint a USDC vagy DAI stabil érmék.", + "things-to-consider-banner-2": "A tranzakciós díjak magasak lehetnek annak függvényében, hogy éppen hányan használják az Ethereumot, ezért használja a", + "things-to-consider-banner-layer-2": "második blokkláncréteget (L2)", + "additional-reading-more-on-using-ethereum": "Bővebben az Ethereum használatáról", + "additional-reading-how-to-create-an-ethereum-account": "Hogyan lehet Ethereum számlát létrehozni", + "additional-reading-how-to-use-a-wallet": "Hogyan használja a tárcát", + "additional-reading-layer-2": "Második blokkláncréteg (L2): alacsonyabb tranzakciós díjak", + "what-is-ethereum-used-for-1": "Az Ethereum számtalan új termék és szolgáltatás megalkotásához vezetett, melyek az életünk különféle területeit teszik jobbá. Még kezdeti fázisban járunk, de így is rengeteg felfedezni való akad.", + "defi-card-title": "Decentralizált pénzügyi rendszer (DeFi)", + "defi-card-description": "Fedezzen fel egy alternatív pénzügyi rendszert, amely bankok nélkül üzemel és mindenki számára elérhető.", + "defi-card-button": "What is DeFi?", + "stablecoins-card-title": "Stabil érmék", + "stablecoins-card-description": "Olyan kriptovaluták, melyek értéke hozzá van kötve egy valutához, árucikkhez vagy pénzügyi eszközhöz.", + "stablecoins-card-button": "Mik azok a stabil érmék?", + "nft-card-title": "Nem helyettesíthető tokenek (NFT-k)", + "nft-card-description": "Egyedi dolgok tulajdonlását jelenti, a műtárgyaktól kezdve az okiratokon át a koncertjegyekig.", + "nft-card-button": "Mik azok a nem helyettesíthető tokenek (NFT)?", + "dao-card-title": "Decentralizált autonóm szervezetek (DAO-k)", + "dao-card-description": "A vezető nélküli koordináció új lehetőségeit adja.", + "dao-card-button": "Mik a DAO-k?", + "dapp-card-title": "Decentralizált alkalmazások (dapps)", + "dapp-card-description": "A peer-to-peer (P2P) szolgáltatások digitális gazdaságot teremtenek.", + "dapp-card-button": "Fedezze fel a dappokat", + "emerging-use-cases-title": "Új alkalmazási területek", + "emerging-use-cases-description": "Más kimagasló iparágak is létrejöttek vagy fejlődtek az Ethereumon belül:", + "play-to-earn": "Bevételt adó játékok (P2E)", + "fundraising-through-quadratic-funding": "Pénzügyi források gyűjtése kvadratikus finanszírozással", + "supply-chain-management": "Ellátási lánc kezelése", + "more-on-ethereum-use-cases": "Bővebben az Ethereum felhasználási területeiről", + "more-on-ethereum-use-cases-link": "Blokklánc a fejlődő országokban", + "strengthening-the-ethereum-network-description": "Ön is segíthet biztosítani az Ethereumot, és közben jutalmakat szerezhet azáltal, hogy letétbe helyezi a rendelkezésre álló ETH-jét. Különféle lehetőségek elérhetők attól függően, hogy valaki mennyire technikai beállítottságú és mennyi ETH-t birtokol.", + "staking-ethereum-card-title": "Letétbe helyezés az Ethereumon", + "staking-ethereum-card-description": "Ismerje meg, hogyan tudja letétbe helyezni a rendelkezésre álló ETH-t.", + "staking-ethereum-card-button": "Helyezzen Ön is letétbe", + "run-a-node-card-title": "Csomópont futtatása", + "run-a-node-card-description": "Működtessen csomópontot, és legyen ezáltal kritikus szereplője az Ethereum hálózatának.", + "learn-about-ethereum-protocol-description": "Azon felhasználóknak, akik a leginkább az Ethereum-hálózat technikai része iránt érdeklődnek.", + "energy-consumption-card-title": "Energiafogyasztás", + "energy-consumption-card-description": "Mennyi energiát használ az Ethereum?", + "energy-consumption-card-button": "Az Ethereum környezetbarát?", + "ethereum-upgrades-card-title": "Ethereum-ütemterv", + "ethereum-upgrades-card-description": "Az Ethereum tervezett fejlesztései skálázhatóbbá, biztonságosabbá és fenntarthatóbbá teszik a hálózatot.", + "ethereum-upgrades-card-button": "Ismerje meg az Ethereum tervezett fejlesztéseit", + "ethereum-whitepaper-card-title": "Ethereum fehérkönyv", + "ethereum-whitepaper-card-description": "Az eredeti Ethereum javaslat, melyet Vitalik Buterin írt 2014-ben.", + "ethereum-whitepaper-card-button": "Tanulmányok olvasása", + "more-on-ethereum-protocol-title": "Bővebben az Ethereum protokollról", + "more-on-ethereum-protocol-ethereum-for-developers": "Ethereum a fejlesztők számára", + "more-on-ethereum-protocol-consensus": "Az Ethereum proof-of-stake-en alapuló konszenzus mechanizmusa", + "more-on-ethereum-protocol-evm": "Az Ethereum beágyazott számítógépe (EVM)", + "more-on-ethereum-protocol-nodes-and-clients": "Ethereum-csomópontok és -kliensek", + "ethereum-community-description": "Az Ethereum sikere a hihetetlenül dedikált közösségnek köszönhető. Ezernyi inspirált és öntudatos ember segíti az Ethereum víziójának megvalósítását, miközben biztosítja a hálózatot a letétbe helyezés és az irányítás által. Jöjjön és csatlakozzon Ön is!", + "community-hub-card-title": "Közösségi központ", + "community-hub-card-description": "A közösség mindenféle háttérrel rendelkező embert felölel.", + "community-hub-card-alt": "Illusztráció fejlesztők egy csoportjáról, akik együtt dolgoznak.", + "community-hub-card-button": "Fedezzen fel többet", + "get-involved-card-title": "Hogyan lehet ebben részt venni?", + "get-involved-card-description": "Önt (igen, Önt!) is szívesen látjuk, hogy közreműködjön az Ethereum közösségében.", + "online-communities-card-title": "Online közösségek", + "online-communities-card-description": "Az online közösségek remek lehetőséget biztosítanak, hogy specifikus kérdéseket tegyen fel és a részesévé váljon.", + "online-communities-card-button": "Fedezze fel a közösségeket", + "books-about-ethereum": "Könyvek az Ethereumról", + "proof-of-stake-title": "Proof of Stake", + "proof-of-stake-description": "2022. szeptember 13. – Vitalik Buterin, Nathan Schneider", + "cryptopians-title": "The Cryptopians", + "cryptopians-description": "2022. február 22. – Laura Shin", + "out-of-the-ether-title": "Az etherből", + "out-of-the-ether-description": "2020. szeptember 29. – Matthew Leising", + "the-infinite-machine-title": "A végtelen gépezet", + "the-infinite-machine-description": "2020. július 14. – Camila Russo", + "mastering-ethereum-title": "Mastering Ethereum", + "mastering-ethereum-description": "2018. december 23. – Andreas M. Antonopoulos, Gavin Wood PhD.", + "podcasts-about-ethereum": "Podcastok az Ethereumról", + "bankless-title": "Bankless", + "bankless-description": "Útmutató a kriptopénzügyekhez", + "zeroknowledge-title": "Zero Knowledge", + "zeroknowledge-description": "Elmélyedés a technológiában, ami fellendíti a decentralizált web felemelkedését és ezt a közösség építi", + "green-pill-title": "Green Pill", + "green-pill-description": "A kriptogazdasági rendszer felfedezése, ami pozitív externáliákat hoz létre a világ számára", + "unchained-title": "Unchained", + "unchained-description": "Részletes bemutatása azoknak, akik a decentralizált internetet építik, a technológia részletei, mely a jövőnket kövezi ki, valamint olyan fontos témák, mint a szabályozás, a biztonság és az adatvédelem", + "the-daily-gwei-title": "The Daily Gwei", + "the-daily-gwei-description": "Hírek, összefoglalók, fejlesztések és elemzések az Ethereumról" +} diff --git a/src/intl/hu/page-run-a-node.json b/src/intl/hu/page-run-a-node.json new file mode 100644 index 00000000000..c6665760ebd --- /dev/null +++ b/src/intl/hu/page-run-a-node.json @@ -0,0 +1,135 @@ +{ + "page-run-a-node-build-your-own-title": "Építse fel maga", + "page-run-a-node-build-your-own-hardware-title": "1. lépés – Hardver", + "page-run-a-node-build-your-own-minimum-specs": "Minimális követelmények", + "page-run-a-node-build-your-own-min-ram": "4–8 GB RAM", + "page-run-a-node-build-your-own-ram-note-1": "Nézze meg a letétbe helyezéssel kapcsolatos megjegyzést", + "page-run-a-node-build-your-own-ram-note-2": "Nézze meg a Raspberry Pi-jal kapcsolatos megjegyzést", + "page-run-a-node-build-your-own-min-ssd": "2 TB SSD", + "page-run-a-node-build-your-own-ssd-note": "Az SSD elengedhetetlen az előírt írási sebesség teljesítéséhez.", + "page-run-a-node-build-your-own-recommended": "Ajánlott", + "page-run-a-node-build-your-own-nuc": "7. generációs vagy újabb Intel NUC", + "page-run-a-node-build-your-own-nuc-small": "x86 processzor", + "page-run-a-node-build-your-own-connection": "Vezetékes internetkapcsolat", + "page-run-a-node-build-your-own-connection-small": "Nem kötelező, de egyszerűbb beállítást biztosít és a legkonzisztensebb kapcsolatot teszi lehetővé", + "page-run-a-node-build-your-own-peripherals": "Kijelző és billentyűzet", + "page-run-a-node-build-your-own-peripherals-small": "Hacsak nem DAppNode-ot vagy ssh/headless beállítást használ", + "page-run-a-node-build-your-own-software": "2. lépés – Szoftver", + "page-run-a-node-build-your-own-software-option-1-title": "1. opció – DAppNode", + "page-run-a-node-build-your-own-software-option-1-description": "Ha készen áll a hardver, a DAppNode operációs rendszer bármely számítógépre letölthető, és egy USB-meghajtón keresztül friss SSD-re telepíthető.", + "page-run-a-node-build-your-own-software-option-1-button": "A DAppNode beállítása", + "page-run-a-node-build-your-own-software-option-2-title": "2. opció – Parancssor", + "page-run-a-node-build-your-own-software-option-2-description-1": "A maximális irányítás érdekében a tapasztalt felhasználók inkább a parancssor használatát részesítik előnyben.", + "page-run-a-node-build-your-own-software-option-2-description-2": "Nézze át a fejlesztőknek szóló dokumentumainkat az kliensek kiválasztásával kapcsolatos további információkért.", + "page-run-a-node-build-your-own-software-option-2-button": "Parancssor beállítása", + "page-run-a-node-buy-fully-loaded-title": "Vásárolja meg teljesen konfigurálva", + "page-run-a-node-buy-fully-loaded-description": "Rendeljen plug and play opciót a gyártóktól, hogy az indulás a lehető legegyszerűbb legyen.", + "page-run-a-node-buy-fully-loaded-note-1": "Nincs szükség összeszerelésre.", + "page-run-a-node-buy-fully-loaded-note-2": "Alkalmazásszerű beállítás grafikus felhasználói felülettel.", + "page-run-a-node-buy-fully-loaded-note-3": "Nincs szükség parancssorra.", + "page-run-a-node-censorship-resistance-title": "Cenzúrarezisztens", + "page-run-a-node-censorship-resistance-preview": "Bármikor hozzáférhet, amikor szüksége van rá, és nem engedi a cenzúrát.", + "page-run-a-node-censorship-resistance-1": "A harmadik fél csomópontja dönthet úgy, hogy megtagadja az adott IP-címekről érkező tranzakciókat, vagy olyan tranzakciókat, amelyek bizonyos fiókokat érintenek, és ezzel potenciálisan blokkolja Önt a hálózat használatában, amikor szüksége lenne rá. ", + "page-run-a-node-censorship-resistance-2": "Ha saját csomóponttal rendelkezik a tranzakciók benyújtásához, az garantálja, hogy a tranzakciót bármikor továbbíthatja a peer-to-peer hálózat többi részére.", + "page-run-a-node-community-title": "Keressen segítőket", + "page-run-a-node-community-description-1": "Az olyan online platformok, mint a Discord vagy a Reddit, számos közösségépítőnek adnak otthont, akik szívesen segítenek az esetlegesen felmerülő kérdésekben.", + "page-run-a-node-community-description-2": "Nincs egyedül. Ha kérdése van, valószínűleg valaki tud segíteni megtalálni a választ.", + "page-run-a-node-community-link-1": "Csatlakozzon a DAppNode Discord közösségéhez", + "page-run-a-node-community-link-2": "Online közösségek keresése", + "page-run-a-node-choose-your-adventure-title": "Válassza ki a kalandját", + "page-run-a-node-choose-your-adventure-1": "A kezdéshez szüksége lesz némi hardverre. Bár a csomóponti szoftver futtatása személyi számítógépen is lehetséges, egy erre kijelölt gép nagymértékben növelheti a csomópont teljesítményét, miközben minimálisra csökkenti az elsődleges számítógépre gyakorolt hatást.", + "page-run-a-node-choose-your-adventure-2": "A hardver kiválasztásakor vegye figyelembe, hogy a lánc folyamatosan növekszik, és elkerülhetetlenül szükség lesz karbantartásra. A teljesítmény növelése késleltetheti a csomópontok karbantartásának szükségességét.", + "page-run-a-node-choose-your-adventure-build-1": "Olcsóbb és jobban testre szabható lehetőség a kicsit műszakibb felhasználók számára.", + "page-run-a-node-choose-your-adventure-build-bullet-1": "Szerezze be saját maga az alkatrészeket.", + "page-run-a-node-choose-your-adventure-build-bullet-2": "Telepítse a DAppNode alkalmazást.", + "page-run-a-node-choose-your-adventure-build-bullet-3": "Vagy válassza ki a saját operációs rendszerét és klienseit.", + "page-run-a-node-choose-your-adventure-build-start": "Kezdjen el építeni", + "page-run-a-node-decentralized-title": "Decentralizáció", + "page-run-a-node-decentralized-preview": "Álljon ellen az erősödő központosított hibapontoknak.", + "page-run-a-node-decentralized-1": "A központosított felhőszerverek nagy számítási teljesítményt biztosíthatnak, de célpontot jelentenek a nemzetállamok vagy a hálózat megzavarására törekvő támadók számára.", + "page-run-a-node-decentralized-2": "A hálózat ellenálló képessége több csomóponttal érhető el, amiket földrajzilag eltérő helyeken, és több, különböző hátterű személy üzemeltet. Ahogy egyre többen üzemeltetik saját csomópontjukat, egyre kevésbé jelentenek veszélyt a központosított hibapontok, ami erősebbé teszi a hálózatot.", + "page-run-a-node-further-reading-title": "További olvasnivaló", + "page-run-a-node-further-reading-1-link": "Az Ethereum elsajátítása – Futtassak-e egy teljes csomópontot", + "page-run-a-node-further-reading-1-author": "Andreas Antonopoulos", + "page-run-a-node-further-reading-2-link": "Ethereum az ARM-en – Gyors üzembe helyezési útmutató", + "page-run-a-node-further-reading-3-link": "A blokklánc skálázhatóságának korlátai", + "page-run-a-node-further-reading-3-author": "Vitalik Buterin", + "page-run-a-node-getting-started-title": "Első lépések", + "page-run-a-node-getting-started-software-section-1": "A hálózat első időszakában a felhasználóknak képesnek kellett lenniük a parancssorral működtetni azt, hogy egy Ethereum-csomópontot tudjanak üzemeltetni.", + "page-run-a-node-getting-started-software-section-1-alert": "Ha ezt preferálja, és rendelkezik a szükséges készségekkel, tekintse át bátran a műszaki dokumentumainkat.", + "page-run-a-node-getting-started-software-section-1-link": "Ethereum-csomópont indítása", + "page-run-a-node-getting-started-software-section-2": "Most már elérhető az ingyenes és nyílt forráskódú DAppNode, amely alkalmazásszerű élményt biztosít a felhasználóknak a csomópontok kezelése során.", + "page-run-a-node-getting-started-software-section-3a": "Néhány kattintással elindíthatja és futtathatja a csomópontot.", + "page-run-a-node-getting-started-software-section-3b": "A DAppNode megkönnyíti a felhasználók számára a teljes csomópontok, valamint a dapp-ok és más P2P-hálózatok futtatását anélkül, hogy hozzányúlna a parancssorhoz. Ez megkönnyíti mindenki számára a részvételt és egy decentralizáltabb hálózat létrehozását.", + "page-run-a-node-getting-started-software-title": "2. rész: Szoftver", + "page-run-a-node-glyph-alt-terminal": "Terminál karakterjel", + "page-run-a-node-glyph-alt-phone": "Telefon megérintése karakterjel", + "page-run-a-node-glyph-alt-dappnode": "DAppNode karakterjel", + "page-run-a-node-glyph-alt-pnp": "Plug-n-play karakterjel", + "page-run-a-node-glyph-alt-hardware": "Hardver karakterjel", + "page-run-a-node-glyph-alt-software": "Szoftverletöltés karakterjel", + "page-run-a-node-glyph-alt-privacy": "Adatvédelem karakterjel", + "page-run-a-node-glyph-alt-censorship-resistance": "Cenzúrarezisztens megafon karakterjel", + "page-run-a-node-glyph-alt-earth": "Föld karakterjel", + "page-run-a-node-glyph-alt-decentralization": "Decentralizáció karakterjel", + "page-run-a-node-glyph-alt-vote": "Szavazat megadása karakterjel", + "page-run-a-node-glyph-alt-sovereignty": "Szuverenitás karakterjel", + "page-run-a-node-hero-alt": "A csomópont grafikája", + "page-run-a-node-hero-header": "Vegye kezébe a irányítást.
    Futtasson saját csomópontot.", + "page-run-a-node-hero-subtitle": "Váljon teljesen függetlenné, miközben segít biztonságosabbá tenni a hálózatot. Váljon Ethereummá.", + "page-run-a-node-hero-cta-1": "Bővebben", + "page-run-a-node-hero-cta-2": "Vágjunk bele!", + "page-run-a-node-install-manually-title": "Manuális telepítés", + "page-run-a-node-install-manually-1": "Ha jártas a műszaki dolgokban és úgy döntött, hogy saját eszközt épít, akkor a DAppNode bármelyik számítógépről letölthető és feltelepíthető egy új SSD-re USB-meghajtón keresztül.", + "page-run-a-node-meta-description": "Egy bevezető arról, hogy mi az az Ethereum-csomópont, illetve hogy miért és hogyan érdemes futtatni.", + "page-run-a-node-participate-title": "Részvétel", + "page-run-a-node-participate-preview": "A decentralizációs forradalom Önnel kezdődik.", + "page-run-a-node-participate-1": "Csomópont működtetésével egy olyan globális mozgalom részévé válhat, ami decentralizálja az információk feletti hatalmat és irányítást.", + "page-run-a-node-participate-2": "Ha Ön tulajdonos, adjon értéket az ETH-hez azáltal, hogy támogatja a hálózat egészségét és decentralizálását, és gondoskodhat arról, hogy legyen beleszólása a hálózat jövőjébe.", + "page-run-a-node-privacy-title": "Adatvédelem és biztonság", + "page-run-a-node-privacy-preview": "Ne engedje, hogy személyes adatai harmadik fél csomópontjaiba kiszivárogjanak.", + "page-run-a-node-privacy-1": "Amikor nyilvános csomópontokon keresztül küld tranzakciókat, személyes adatai, mint például az IP-címe és az Ön által birtokolt Ethereum-címek kiszivároghatnak ezekhez a harmadik féltől származó szolgáltatásokhoz.", + "page-run-a-node-privacy-2": "Ha a kompatibilis tárcákat a saját csomópontjára irányítja, a tárcát a blokklánccal való privát és biztonságos interakciókhoz is használhatja.", + "page-run-a-node-privacy-3": "Továbbá, ha egy rosszindulatú csomópont érvénytelen tranzakciót terjeszt, akkor a csomópont egyszerűen figyelmen kívül hagyja azt. Minden tranzakció lokálisan, a saját gépén kerül ellenőrzésre, így nem kell megbíznia senkiben.", + "page-run-a-node-rasp-pi-title": "Megjegyzés a Raspberry Pi-ról (ARM processzor)", + "page-run-a-node-rasp-pi-description": "A Raspberry Pi-ok alacsony fogyasztású és megfizethető számítógépek, de vannak korlátaik, amelyek befolyásolhatják a csomópont teljesítményét. Bár jelenleg a letétbe helyezéshez és validáláshoz nem ajánlottak, ezek kiváló és olcsó megoldások lehetnek egy csomópont futtatásához, személyes használatra, mindössze 4–8 GB RAM-mal.", + "page-run-a-node-rasp-pi-note-1-link": "DAppNode az ARM-on", + "page-run-a-node-rasp-pi-note-1-description": "Olvassa el ezeket az utasításokat, ha a DAppNode alkalmazást Raspberry Pi készüléken szeretné futtatni", + "page-run-a-node-rasp-pi-note-2-link": "Az Ethereum az ARM-on dokumentációja", + "page-run-a-node-rasp-pi-note-2-description": "Tanulja meg, hogyan állíthat be csomópontot parancssoron keresztül a Raspberry Pi-on", + "page-run-a-node-rasp-pi-note-3-link": "Csomópont futtatása Raspberry Pi-on", + "page-run-a-node-rasp-pi-note-3-description": "Ha az oktatóanyagokat részesíti előnyben, akkor ezt mindenképpen érdemes megnéznie", + "page-run-a-node-shop": "Vásárlás", + "page-run-a-node-shop-avado": "Avado vásárlása", + "page-run-a-node-shop-dappnode": "DAppNode vásárlása", + "page-run-a-node-staking-title": "Stakeld az ETH-ed", + "page-run-a-node-staking-description": "Bár nem kötelező, de egy működő csomóponttal egy lépéssel közelebb kerülhet az ETH letétbe helyezéséhez, hogy jutalmakat kapjon, és segítsen hozzájárulni az Ethereum-biztonság egy másik komponenséhez.", + "page-run-a-node-staking-link": "ETH letétbe helyezése", + "page-run-a-node-staking-plans-title": "Letétbe helyezésen gondolkozik?", + "page-run-a-node-staking-plans-description": "A validátor hatékonyságának maximalizálása érdekében legalább 16 GB RAM ajánlott, de 32 GB jobb, 6667+ CPU benchmark pontszámmal a cpubenchmark.net oldalon. Javasolt, hogy a letétbe helyezők korlátlan nagy sebességű internetes sávszélességhez férjenek hozzá, bár ez nem feltétlen követelmény.", + "page-run-a-node-staking-plans-ethstaker-link-label": "Hogyan vásároljon Ethereum-validátorhardvert", + "page-run-a-node-staking-plans-ethstaker-link-description": "Az EthStaker részletesen foglalkozik ezzel ebben az egyórás külön kiadásban", + "page-run-a-node-sovereignty-title": "Szuverenitás", + "page-run-a-node-sovereignty-preview": "Gondoljon úgy egy csomópont futtatására, mint a következő lépésre a saját Ethereum-tárca után.", + "page-run-a-node-sovereignty-1": "Egy Ethereum-tárca segítségével teljes felügyeletet és irányítást gyakorolhat digitális eszközei felett, mivel biztonságban tartja a címeihez tartozó privát kulcsokat – ezek a kulcsok azonban nem adnak információt a blokklánc aktuális állapotáról, mint például a pénztárca egyenlegéről.", + "page-run-a-node-sovereignty-2": "Az alapértelmezés szerint az Ethereum-tárcák általában egy harmadik fél csomópontján keresztül kérik le az egyenleget, ilyen például az Infura vagy az Alchemy. Saját csomópont futtatásával saját példánya lehet az Ethereum-blokkláncról.", + "page-run-a-node-title": "Csomópont futtatása", + "page-run-a-node-voice-your-choice-title": "Adjon hangot a véleményének", + "page-run-a-node-voice-your-choice-preview": "Ne adja ki a kezéből az irányítást elágazás esetén sem.", + "page-run-a-node-voice-your-choice-1": "Láncelágazás esetén, amikor két lánc jön létre különböző szabályokkal, a saját csomópont futtatása garantálja, hogy kiválaszthatja, melyik szabályokat kívánja támogatni. Önön múlik, hogy frissít-e az új szabályokra, és támogatja-e a javasolt változtatásokat, vagy sem.", + "page-run-a-node-voice-your-choice-2": "Ha letétbe helyez ETH-et, a saját csatlakozási pont (node) futtatása lehetővé teszi, hogy saját klienst válasszon a slashing kockázatának minimalizálása, valamint a hálózat ingadozó igényeire való reagálás érdekében. A harmadik félen keresztül való letétbe helyezéssel elveszíti a szavazatát arra vonatkozóan, hogy melyik kliens a legjobb választás.", + "page-run-a-node-what-title": "Mit jelent a „csomópont futtatása”?", + "page-run-a-node-what-1-subtitle": "Szoftver futtatása.", + "page-run-a-node-what-1-text": "Ez a „kliensként” ismert szoftver letölti az Ethereum-blokklánc egy példányát, és ellenőrzi minden blokk érvényességét, majd naprakészen tartja az új blokkokkal és tranzakciókkal, valamint segít másoknak letölteni és frissíteni saját másolataikat.", + "page-run-a-node-what-2-subtitle": "Hardverrel.", + "page-run-a-node-what-2-text": "Az Ethereumot úgy tervezték, hogy a csomópontokat átlagos, felhasználói szintű számítógépeken lehessen futtatni. Bármilyen személyi számítógépet használhat, de a legtöbb felhasználó a csomópontot egy erre a célra dedikált hardveren futtatja, hogy kiküszöbölje a gépe teljesítményére gyakorolt hatást, és minimalizálja a csomópont állásidejét.", + "page-run-a-node-what-3-subtitle": "Miközben online.", + "page-run-a-node-what-3-text": "Egy Ethereum-csomópont futtatása elsőre bonyolultnak tűnhet, de valójában ez csak egy kliensszoftver folyamatos futtatása a számítógépen, miközben az internethez csatlakozik. Offline állapotban a csomópont egyszerűen inaktív lesz, amíg újra online állapotba nem kerül, és nem frissíti a legújabb változásokat.", + "page-run-a-node-who-title": "Ki futtasson csomópontot?", + "page-run-a-node-who-preview": "Mindenki! Csomópontokat nem csak proof-of-stake validátorok futtathatnak. Bárki futtathat egy csatlakozási pontot – még ETH-re sincs szüksége hozzá.", + "page-run-a-node-who-copy-1": "Nem kell ETH-et letétbe helyeznie csomópont futtatásához. Valójában a többi Ethereum-csatlakozási pont vonja felelősségre a validátorokat.", + "page-run-a-node-who-copy-2": "Habár a csatlakozási pont futtatásáért nem jár pénzügyi jutalom, úgy mint a validátorok esetében, ugyanakkor a futtatásának számos egyéb előnye van, amiket az Ethereum-felhasználónak fontolóra kell venni, mint például a személyes adatok védelme, a biztonság, csökken a harmadik fél szervereire való támaszkodás, nő a cenzúrával szembeni ellenálló képesség, valamint egészségesebbé és decentralizáltabbá válik a hálózat.", + "page-run-a-node-who-copy-3": "A saját csomópont azt jelenti, hogy nem kell megbíznia a hálózat állapotával kapcsolatos, harmadik féltől származó információkban.", + "page-run-a-node-who-copy-bold": "Nem kell megbíznia senkiben. Csak ellenőrizni.", + "page-run-a-node-why-title": "Miért futtasson csomópontot?" +} diff --git a/src/intl/hu/page-stablecoins.json b/src/intl/hu/page-stablecoins.json index 03c2072bc42..184548303f9 100644 --- a/src/intl/hu/page-stablecoins.json +++ b/src/intl/hu/page-stablecoins.json @@ -150,16 +150,16 @@ "cons": "Hátrányok", "1inch-logo": "1inch logó", "aave-logo": "Aave logó", - "binance-logo": "Binance logo", - "bittrex-logo": "Bittrex logo", - "coinbase-logo": "Coinbase logo", - "coinmama-logo": "Coinmama logo", + "binance-logo": "Binance-logó", + "bittrex-logo": "Bittrex-logó", + "coinbase-logo": "Coinbase-logó", + "coinmama-logo": "Coinmama-logó", "compound-logo": "Compound logo", "example-projects": "Példa projektek", - "gemini-logo": "Gemini logo", + "gemini-logo": "Gemini-logó", "gitcoin-logo": "Gitcoin logo", "loopring-logo": "Loopring logo", - "makerdao-logo": "MakerDao logo", + "makerdao-logo": "MakerDao-logó", "matcha-logo": "Matcha logo", "oasis-logo": "Oasis logo", "uniswap-logo": "Uniswap logo" diff --git a/src/intl/hu/page-staking-deposit-contract.json b/src/intl/hu/page-staking-deposit-contract.json index e5249bc1fc8..533147077cc 100644 --- a/src/intl/hu/page-staking-deposit-contract.json +++ b/src/intl/hu/page-staking-deposit-contract.json @@ -1,28 +1,28 @@ { - "page-staking-deposit-contract-address": "Eth2 letéti szerződés cím", - "page-staking-deposit-contract-address-caption": "Szóközöket adtunk hozzá, hogy könnyebb legyen leolvasni a címet", - "page-staking-deposit-contract-address-check-btn": "Letéti szerződés cím ellenőrzése", - "page-staking-deposit-contract-checkbox1": "Már használtam az indítópultot az Eth2 validátori csomópontom telepítéséhez.", - "page-staking-deposit-contract-checkbox2": "Tudomásul veszem, hogy a letétbe helyezéshez az indítópultot kell használnom. Egyszerű átutalások nem fognak működni ennél a címnél.", - "page-staking-deposit-contract-checkbox3": "Le fogom ellenőrizni a letéti szerződés címét más forrásokkal.", + "page-staking-deposit-contract-address": "Letétbehelyezési szerződéscím", + "page-staking-deposit-contract-address-caption": "Szóközöket adtunk hozzá, hogy könnyebb legyen elolvasni a címet", + "page-staking-deposit-contract-address-check-btn": "Ellenőrizze a letétbehelyezési szerződéscímet", + "page-staking-deposit-contract-checkbox1": "Már használtam az indítóállást az Ethereum-validátori csomópontom beállításához.", + "page-staking-deposit-contract-checkbox2": "Megértettem, hogy a letétbe helyezéshez az indítóállást kell használnom. Az egyszerű átutalások nem működnek ennél a címnél.", + "page-staking-deposit-contract-checkbox3": "Összevetem a letéti szerződéscímet más forrásokkal.", "page-staking-deposit-contract-confirm-address": "Megerősítés a cím felfedéséhez", - "page-staking-deposit-contract-copied": "Cím másolva", + "page-staking-deposit-contract-copied": "Cím kimásolva", "page-staking-deposit-contract-copy": "Cím másolása", - "page-staking-deposit-contract-etherscan": "Szerződés megtekintése az Etherscan-en", - "page-staking-deposit-contract-h2": "Nem itt fogsz letétbe helyezni", - "page-staking-deposit-contract-launchpad": "Letétbe helyezés indítópulttal", - "page-staking-deposit-contract-launchpad-2": "Indítópult használata", - "page-staking-deposit-contract-meta-desc": "Hitelesítsd a letéti szerződés címét az Eth2 stakinghez.", - "page-staking-deposit-contract-meta-title": "Eth2 letéti szerződés cím", - "page-staking-deposit-contract-read-aloud": "Cím felolvasása", - "page-staking-deposit-contract-reveal-address-btn": "Cím megjelenítése", - "page-staking-deposit-contract-staking": " Ahhoz, hogy letétbe helyezd az ETH-edet az Eth2-be, az erre kijelölt indítópultot kell használnod és követni az utasításokat. ETH küldésre az oldalon szereplő címre nem tesz stakerré és hibás tranzakciót fog eredményezni.", - "page-staking-deposit-contract-staking-check": "Nézd meg ezeket az anyagokat", - "page-staking-deposit-contract-staking-check-desc": "Sok átverésre és hamis címre számítunk. Hogy biztosra menj, ellenőrizd az általad használt Eth2 staking címet azzal ami ezen az oldalon van. Azt ajánljuk, hogy ellenőrizd le más megbízható forrással is.", - "page-staking-deposit-contract-staking-more-link": "Többet a stakingről", - "page-staking-deposit-contract-stop-reading": "Olvasás befejezése", - "page-staking-deposit-contract-subtitle": " Ez az Eth2 staking szerződés címe. Használd ezt az oldalt, hogy megerősítsd, hogy biztosan a megfelelő címre küldöd a pénzed stakeléskor.", - "page-staking-deposit-contract-warning": "Minden karaktert ellenőrizz le.", - "page-staking-deposit-contract-warning-2": "Erre a címre küldött pénz nem fog működni és tesz stakerré. Követned kell az indítópult utasításait.", - "page-staking-deposit-contract-title": "A letéti szerződés cím ellenőrzése" + "page-staking-deposit-contract-etherscan": "Szerződés megtekintése az Etherscanen", + "page-staking-deposit-contract-h2": "Nem itt fog letétbe helyezni", + "page-staking-deposit-contract-launchpad": "Letétbe helyezés az indítóállással", + "page-staking-deposit-contract-launchpad-2": "Indítóállás használata", + "page-staking-deposit-contract-meta-desc": "Hitelesítse az Ethereum-letétbehelyezés szerződéscímét.", + "page-staking-deposit-contract-meta-title": "Ethereum-letétbehelyezési szerződéscím", + "page-staking-deposit-contract-read-aloud": "Cím hangos felolvasása", + "page-staking-deposit-contract-reveal-address-btn": "Cím felfedése", + "page-staking-deposit-contract-staking": "Az ETH letétbe helyezéséhez használja az erre kijelölt indítóállást, és kövesse az utasításokat. Ha egyszerűen ETH-t küld az oldalon található címre, az hibás tranzakciót fog eredményezni, és Ön nem válik letétessé.", + "page-staking-deposit-contract-staking-check": "Anyagok megtekintése", + "page-staking-deposit-contract-staking-check-desc": "Sok csalás és hamis cím megjelenésére számítunk. A biztonság kedvéért vesse össze az Ön által használt letétbehelyezési szerződéscímet az ezen az oldalon található címmel. Javasoljuk, hogy más megbízható forrást is használjon az ellenőrzéshez.", + "page-staking-deposit-contract-staking-more-link": "A letétbe helyezésről bővebben", + "page-staking-deposit-contract-stop-reading": "Olvasás megszakítása", + "page-staking-deposit-contract-subtitle": "Ez az Ethereum letétbehelyezési szerződéscíme. Az oldalon található adatok segítségével erősítse meg, hogy a megfelelő címre küldi a pénzét a letétbe helyezéskor.", + "page-staking-deposit-contract-warning": "Minden karaktert alaposan ellenőrizzen.", + "page-staking-deposit-contract-warning-2": "Ha egyszerűen csak pénzt küld erre a címre, az nem fog működni, és Ön nem válik letétessé. Követnie kell az indítóállás utasításait.", + "page-staking-deposit-contract-title": "Ellenőrizze a letéti szerződéscímet" } diff --git a/src/intl/hu/page-staking.json b/src/intl/hu/page-staking.json index 4a7dbe2a8e0..fa204287a0c 100644 --- a/src/intl/hu/page-staking.json +++ b/src/intl/hu/page-staking.json @@ -1,9 +1,237 @@ { - "page-staking-image-alt": "Egy orrszarvú kabala ábrája az eth2 indítópultra.", - "page-staking-description": "A letétbe helyezés 32 ETH letételét jelenti a validátor szoftver aktiválásához. Validátorként felelős leszel az adatok tárolásáért, a tranzakciók feldolgozásáért és az új blokkok hozzáadásáért a blokkláncra. Ez az Ethereumot mindenki számára biztonságossá teszi és új ETH-et kapsz a folyamat során. Ezt a folyamatot, melyet proof-of-stake-nek hívunk, a Beacon Chain vezeti be.", - "page-staking-join-community": "Csatlakozz a staker közösséghez", - "page-staking-join-community-desc": "Az r/ethstaker egy közösség az Ethereum stakinggel kapcsolat dolgok megvitatására - csatlakozz, hogy tanácsot, támogatást kaphass és hogy a beszélgess mindenről, ami staking.", - "page-staking-meta-description": "Egy áttekintés az Ethereum stakingről: kockázatok, jutalmak, követelmények és hogy hol lehet csinálni.", - "page-staking-meta-title": "Ethereum staking", - "page-upgrades-merge-btn": "Többet a dokkolásról" + "comp-withdrawal-comparison-current-title": "Letétesek", + "comp-withdrawal-comparison-current-li-1": "Azoknak a felhasználóknak, akik már adtak visszavonási címet a letétbe helyezéskor, nincs további teendőjük", + "comp-withdrawal-comparison-current-li-2": "A letétesek többsége még nem adott visszavonási címet a letétbe helyezéskor, ezért frissíteniük kell a visszavonási adataikat. A Staking Launchpad segít Önnek ebben", + "comp-withdrawal-comparison-current-p": "Írja be ide a validátorindexét, hogy kell-e az adatait frissítenie (a kliensnaplóban ellenőrizhető):", + "comp-withdrawal-comparison-new-title": "Új letétesek (letétbe helyezés előtt)", + "comp-withdrawal-comparison-new-li-1": "Alapvetően az új letéteseknek ahhoz, hogy automatikusan érkezzenek a díjazások és működjön a visszavonási funkció, meg kell adniuk egy Ethereum visszavonási címet, melyet maguk kontrollálnak, amikor létrehozzák a validátorkulcsokat a Staking Deposit CLI eszköz segítségével", + "comp-withdrawal-comparison-new-li-2": "Ez nem szükséges a letétbe helyezés idején, de enélkül nem tudja később a kulcsokat frissíteni a pénzeszközök felszabadításához", + "comp-withdrawal-comparison-new-p": "A Staking Launchpad végigvezeti Önt a letétbe helyezés folyamatán.", + "comp-withdrawal-comparison-new-link": "Tovább a Staking Launchpad oldalára", + "comp-withdrawal-credentials-placeholder": "Validátorindex", + "comp-withdrawal-credentials-error": "Hoppá! Kérjük, ellenőrizze a validátorindex számát, és próbálja újra.", + "comp-withdrawal-credentials-upgraded-1": "A validátorindex {{validatorIndex}} készen áll a jutalmak elnyerésére!", + "comp-withdrawal-credentials-upgraded-2": "A visszavonási adatok a végrehajtási címhez kapcsolódnak:", + "comp-withdrawal-credentials-not-upgraded-1": "A validátort frissíteni kell.", + "comp-withdrawal-credentials-not-upgraded-1-testnet": "Ezt a Goerli-teszthálózat-validátort frissíteni kell.", + "comp-withdrawal-credentials-not-upgraded-2": "A frissítésről szóló útmutatót megtalálja a Staking Launchpad oldalon", + "comp-withdrawal-credentials-verify-mainnet": "Ellenőrzés a főhálózaton", + "comp-withdrawal-credentials-verify-goerli": "Ellenőrzés a Goerli teszthálózaton", + "page-staking-withdrawals-when": "Megvalósítva!", + "page-staking-image-alt": "A képen a letétbe helyezés indítóállásának kabala rinocérosza látható.", + "page-staking-benefits-1-title": "Jutalmak szerzése", + "page-staking-benefits-1-description": "Jutalom jár azért, ha a felhasználó támogatja a hálózatot a konszenzus kialakításában. Tehát olyan szoftverek működtetéséért, melyek a tranzakciókat megfelelően összerendezik új blokkba, valamint ellenőrzik más validátorok munkáját, mivel ettől fut biztonságosan a lánc.", + "page-staking-benefits-2-title": "Jobb biztonság", + "page-staking-benefits-2-description": "A hálózat sokkal ellenállóbb a támadásokkal szemben, mivel ha több ETH van letétbe helyezve, akkor több ETH-re van szükség ahhoz, hogy a hálózat nagyobb részét kontroll alá vonja valaki. Az jelent veszélyt, aki képes a validátorok többségét a kezében tartani, tehát kontrollálni az ETH nagy részét a rendszerben – ez óriási szám!", + "page-staking-benefits-3-title": "Fenntarthatóbb", + "page-staking-benefits-3-description": "A letétbe helyezőknek a hálózat biztosításához nem kell erőforrásintenzív proof-of-work számításokat végezniük, mert a csomópontok szerényebb hardveren, kevesebb energiával is üzemelnek.", + "page-staking-benefits-3-link": "Bővebben az Ethereum energiafogyasztásáról", + "page-staking-description": "A letétbe helyezés 32 ETH letételét jelenti a validátor szoftver aktiválásához. Validátorként Ön felelős az adatok tárolásáért, a tranzakciók feldolgozásáért és az új blokkok hozzáadásáért a blokkláncra. Ez az Ethereumot mindenki számára biztonságossá teszi, Ön pedig új ETH-t kap a folyamat kezeléséért.", + "page-staking-hero-title": "Hogyan helyezhető letétbe ETH", + "page-staking-hero-header": "Szerezzen jutalmat azért, hogy biztosítja az Ethereumot", + "page-staking-hero-subtitle": "A letétbe helyezés egy közjó az Ethereum ökoszisztéma számára. Minden felhasználó, legyen bármennyi ETH-je is, segíthet a hálózat biztosításában és jutalmat kaphat a folyamat során.", + "page-staking-dropdown-home": "Otthoni letétbe helyezés", + "page-staking-dropdown-solo": "Egyéni staking", + "page-staking-more-on-solo": "Bővebben az önálló letétbe helyezésről", + "page-staking-learn-more-solo": "Tudjon meg többet az önálló letétbe helyezésről", + "page-staking-dropdown-saas": "Staking, mint szolgáltatás", + "page-staking-saas-with-abbrev": "Staking as a service (SaaS)", + "page-staking-more-on-saas": "Bővebben a letétbe helyezésről, mint szolgáltatásról", + "page-staking-learn-more-saas": "Tudjon meg többet a letétbe helyezésről, mint szolgáltatásról", + "page-staking-dropdown-pools": "Pooled staking", + "page-staking-dropdown-withdrawals": "A visszavonásokról", + "page-staking-dropdown-dvt": "Elosztott validátortechnológia", + "page-staking-more-on-pools": "Bővebben a letéti alapokról", + "page-staking-learn-more-pools": "Tudjon meg többet a letéti alapokról", + "page-staking-section-what-title": "Mi az a letétbe helyezés?", + "page-staking-section-what-link": "Tudja meg, hogyan juthat ETH-hez", + "page-staking-section-why-title": "Miért helyezze letétbe a rendelkezésére álló ETH-t?", + "page-staking-section-why-p1": "Minden a letétbe helyezendő összegtől függ. 32 ETH-re van szükség ahhoz, hogy a saját validátorát aktiválja, de ennél kevesebbet is lehetséges letétbe helyezni.", + "page-staking-section-why-p2": "Nézze meg az alábbi opciókat, és válassza ki az Önnek megfelelőt, ami egyben a hálózatnak is a javát szolgálja.", + "page-staking-guide-title-coincashew-ethereum": "CoinCashew Ethereum 2.0 útmutató", + "page-staking-guide-title-somer-esat": "Somer Esat", + "page-staking-guide-title-rocket-pool": "Rocket Pool csomópont-operátorok", + "page-staking-guide-description-linux": "Linux (CLI)", + "page-staking-guide-description-mac-linux": "Linux, macOS (CLI)", + "page-staking-hierarchy-solo-h2": "Önálló, otthoni letétbe helyezés", + "page-staking-hierarchy-solo-pill-1": "Leghatásosabb", + "page-staking-hierarchy-solo-pill-2": "Teljes kontroll", + "page-staking-hierarchy-solo-pill-3": "Teljes jutalom", + "page-staking-hierarchy-solo-pill-4": "Bizalomigény nélküli", + "page-staking-hierarchy-solo-p1": "Az önálló letétbe helyezés az Ethereumon az aranyalap. Teljes részvételi jutalmat ad, javítja a hálózat decentralizálását, és senkire sem kell rábízni a pénzeszközöket.", + "page-staking-hierarchy-solo-p2": "Aki ezt fontolgatja, annak legalább 32 ETH-nek rendelkezésére kell állnia, illetve egy erre a célra dedikált számítógép, mely folyamatos internetkapcsolattal rendelkezik (24/7). Hasznos lehet némi technikai rálátás is, de manapság a már könnyen használható eszközök leegyszerűsítik ezt a folyamatot.", + "page-staking-hierarchy-saas-pill-1": "Az Ön 32 ETH-je", + "page-staking-hierarchy-saas-pill-2": "Az Ön validátorkulcsa", + "page-staking-hierarchy-saas-pill-3": "Megbízott csomópont-működtetés", + "page-staking-hierarchy-saas-p1": "Amennyiben Ön nem akar vagy nem tud a hardverösszeállítással foglalkozni, de letétbe szeretné helyezni a 32 ETH-t, akkor a letétbe helyezés mint szolgáltatás lehetővé teszi, hogy a nehezét másnak delegálja, miközben megkapja a blokkért járó jutalmakat.", + "page-staking-hierarchy-saas-p2": "Ezek az opciók általában végigvezetik Önt azon, hogy miként hozza létre a validátor hitelesítő adatait, töltse fel az aláíró kulcsokat nekik és helyezze letétbe a 32 ETH-t. Így a szolgáltatás képes validálni az Ön nevében.", + "page-staking-hierarchy-saas-p3": "A letétbe helyezés ezen módja igényel némi bizalmat a szolgáltató irányába. A partner által jelentett kockázatot az csökkenti, hogy az ETH visszavonásához szükséges kulcsok általában Önnél maradnak.", + "page-staking-hierarchy-pools-pill-1": "Bármekkora összeg letétbe helyezhető", + "page-staking-hierarchy-pools-pill-2": "Jutalmak szerzése", + "page-staking-hierarchy-pools-pill-3": "Csak egyszerűen", + "page-staking-hierarchy-pools-pill-4": "Népszerű", + "page-staking-hierarchy-pools-p1": "Számos letétialap-megoldás létezik azon felhasználók számára, akik nem akarnak vagy nem tudnak 32 ETH-t letétbe helyezni.", + "page-staking-hierarchy-pools-p2": "Számos megoldás tartalmazza a likvid letétbe helyezést, amely egy ERC-20 likviditási tokent használ, ami a letétbe helyezett ETH-t reprezentálja.", + "page-staking-hierarchy-pools-p3": "A likvid letétbe helyezés egyszerű, bármikor végezhető, és olyan egyszerű, akár egy tokenátváltás. Ekkor a felhasználó a saját Ethereum tárcájában, a saját felügyelete alatt tudhatja az eszközeit.", + "page-staking-hierarchy-pools-p4": "A letéti alapok nem az Ethereum hálózatának részei. Harmadik felek építik ezeket a megoldásokat, és viselik az ezzel járó kockázatot.", + "page-staking-hierarchy-cex-h2": "Centralizált tőzsdék", + "page-staking-hierarchy-cex-pill-1": "Legkevésbé hatásos", + "page-staking-hierarchy-cex-pill-2": "A legnagyobb bizalmat igényli", + "page-staking-hierarchy-cex-p1": "Számos centralizált tőzsde kínál letétbe helyezési szolgáltatást, ha Ön nem szeretné az ETH-t a tárcájában tartani. Ezzel némi jövedelemhez juthat minimális figyelemmel vagy erőfeszítéssel.", + "page-staking-hierarchy-cex-p2": "Az ezzel kapcsolatos kompromisszum az, hogy a centralizálási szolgáltatók nagy ETH-alapokat gyűjtenek össze, hogy rengeteg validátort üzemeltessenek. Ez veszélyeztetheti a hálózatot és a felhasználókat is, mivel központi célpontot jelent, magas az egyetlen hibapont kockázata, mely sebezhetővé teszi a hálózatot a támadókkal és hibákkal szemben.", + "page-staking-hierarchy-cex-p3": "Ha Ön nem szeretné a saját kulcsait őrizni, az is rendben van. Ezek a lehetőségek az Ön számára is elérhetők. Emellett tanulmányozza a tárcákat, hogy felfedezze a pénzeszközök feletti valódi kontroll és tulajdonlás lehetőségeit. Amikor készen áll, próbálja ki a valamelyik saját felügyeletet biztosító letétialap-szolgáltatását.", + "page-staking-hierarchy-subtext": "Ahogy már láthatta, számtalan lehetőség áll rendelkezésére a letétbe helyezésre az Ethereumon. Ezek az utak a felhasználók széles körét célozzák meg, és mindegyik egyedi és változatos a kockázatokat, jutalmakat és a szükséges bizalmat illetően. Néhány decentralizáltabb, kipróbáltabb és/vagy kockázatosabb, mint a többi. Bár a népszerű projektekről mindig elérhetők bizonyos információk, de mindig vizsgálja meg Ön is, mielőtt ETH-t küld bárhova.", + "page-staking-comparison-solo-saas": "Az SaaS szolgáltatók esetében is letétbe kell helyeznie 32 ETH-t, de nem kell hardvert üzemeltetnie. Jellemző módon a validátorkulcsok Önnél vannak, de az aláírókulcsokat meg kell osztania, hogy az operátor az Ön nevében végezzen validálást. Az önálló stakinghez képest ez egy extra bizalomigényt jelent, továbbá nem támogatja a csomópontok földrajzi elosztását sem a SaaS. Ha Ön nem akar hardvert üzemeltetni, de mégis letétbe szeretne helyezni 32 ETH-t, akkor az SaaS szolgáltatás jó opció lehet.", + "page-staking-comparison-solo-pools": "Az önálló letétbe helyezés magasabb szintű bevonódást igényel, mint egy letéti alap használata, de cserébe a teljes ETH-jutalom a felhasználót illeti, és teljes kontrollt biztosít a validátor működése és biztonsága felett. A letéti alap jelentősen kevesebb pénzeszközzel is igénybe vehető. A felhasználók kisebb összegeket adnak át, nem kell validátorkulcsokat létrehozniuk, és nincs komoly hardverszükséglet sem egy alapvető internetkapcsolaton kívül. A likviditási tokenek révén ki lehet szállni a letétből azelőtt is, hogy ez a funkció a protokoll szintjén életbe lép. Ha Önt ezek a funkciók érdeklik, akkor a letéti alap jó választás lehet.", + "page-staking-comparison-saas-solo": "Mindkét esetben Ön rendelkezik a validátorkulcsokkal, anélkül hogy letéti alapot kellene használni, de az SaaS esetén egy harmadik félben bízik, aki talán visszaél ezzel, támadás célpontja lesz vagy változik a rá vonatkozó szabályozás. Ha Önt zavarják ezek a bizalmi vagy centralizációs felvetések, akkor a teljesen független letéti megoldás az önálló staking.", + "page-staking-comparison-saas-pools": "Hasonlók abból a szempontból, hogy más futtatja Önnek a validátorklienst, de az SaaS-hez képest a letéti alapba kevesebb ETH lekötése is elég. Ha Ön 32 ETH-nél kevesebbet szeretne letétbe helyezni, akkor jó megoldás lehet a letéti alap.", + "page-staking-comparison-pools-solo": "A letéti alap jelentősen kevesebb pénzeszközt igényel az önálló stakinghez képest, de további kockázatokat is jelent, hogy egy harmadik fél üzemelteti a csomópontokat, és további díjazást igényel. Az önálló staking teljes függetlenséget és kontrollt biztosít. A letétesek nem adják át a kulcsaikat, és a teljes jutalom őket illeti közvetítő nélkül.", + "page-staking-comparison-pools-saas": "Hasonlók abban, hogy a letétes nem maga futtatja a validátorszoftvert, de a letéti alaphoz képest az SaaS esetében 32 ETH kell a validátor aktiválásához. A jutalmak a letétesnél gyűlnek, és általában egy havi díjat vagy más letétet kell adni a szolgáltatásért. Ha Ön szeretné a validátorkulcsait magánál tartani, és legalább 32 ETH-t letétbe helyezne, akkor az SaaS szolgáltatás jó opció lehet.", + "page-staking-considerations-solo-1-title": "Nyílt forráskódú", + "page-staking-considerations-solo-1-description": "A programkód lényegi része 100% nyílt forráskódú és bárki felhasználhatja", + "page-staking-considerations-solo-1-warning": "Zárt forráskódú", + "page-staking-considerations-solo-2-title": "Auditált", + "page-staking-considerations-solo-2-description": "A programkód lényegi része hivatalos auditon esett át, melynek eredménye nyilvánosan elérhető", + "page-staking-considerations-solo-2-warning": "Egyik sem", + "page-staking-considerations-solo-3-title": "Bug vadászat", + "page-staking-considerations-solo-3-description": "Egy nyilvános hibakeresés zajlott a programkód lényegi részein, melynek során a felhasználókat jutalmazzák a sebezhető pontok bejelentéséért és/vagy javításáért", + "page-staking-considerations-solo-3-valid": "Jelenleg aktív", + "page-staking-considerations-solo-3-caution": "Teljesítve", + "page-staking-considerations-solo-4-title": "Kipróbált", + "page-staking-considerations-solo-4-description": "A szoftver elérhető és használható volt a közönség számára a megadott időintervallum alatt", + "page-staking-considerations-solo-4-valid": "Élesben fut > 1 év", + "page-staking-considerations-solo-4-caution": "Élesben fut > 6 hónap", + "page-staking-considerations-solo-4-warning": "Most jelent meg", + "page-staking-considerations-solo-5-title": "Bizalomigény nélküli", + "page-staking-considerations-solo-5-description": "A validátorkulcsokat nem kell rábízni senkire és semmikor a validátor életciklusa alatt. A kapcsolódó okosszerződések esetén nincsenek kiskapuk, a végrehajtásuk nem múlik külön jogosultságokon.", + "page-staking-considerations-solo-5-warning": "Bizalmat igényel", + "page-staking-considerations-solo-6-title": "Nem engedélyköteles", + "page-staking-considerations-solo-6-description": "A felhasználóknak nincs szükségük engedélyre, hogy validátort üzemeltessenek a szoftver vagy szolgáltatás használatával", + "page-staking-considerations-solo-6-valid": "Engedélymentes", + "page-staking-considerations-solo-6-warning": "Engedélyhez kötött", + "page-staking-considerations-solo-7-title": "Többklienses", + "page-staking-considerations-solo-7-description": "A szoftver lehető teszi a felhasználóknak, hogy legalább kettő vagy több végrehajtási kliens és kettő vagy több konszenzus kliens közül válasszanak vagy ezek között váltsanak", + "page-staking-considerations-solo-7-valid": "Könnyű kliensváltás", + "page-staking-considerations-solo-7-warning": "Behatárolt a többség által használt kliensre", + "page-staking-considerations-solo-8-title": "Saját felügyelet", + "page-staking-considerations-solo-8-description": "A felhasználó birtokában marad minden validátorhoz kapcsolódó adat, beleértve az aláíró és visszavonási kulcsokat is", + "page-staking-considerations-solo-8-warning": "Harmadik fél felügyeli", + "page-staking-considerations-solo-9-title": "Gazdaságos", + "page-staking-considerations-solo-9-description": "A felhasználók 32 ETH-nél kevesebb letéttel is működtethetnek validátort, felhasználva a másoktól összegyűjtött letéti alapokat", + "page-staking-considerations-solo-9-valid": "<32 ETH", + "page-staking-considerations-solo-9-warning": "32 ETH", + "page-staking-considerations-saas-4-description": "A szolgáltatás elérhető és használatban van a megadott időpont szerint", + "page-staking-considerations-saas-6-description": "A felhasználóknak nincs szükség külön engedélyre, feliratkozásra vagy átvilágításra ahhoz, hogy igénybe vegyék a szolgáltatást", + "page-staking-considerations-saas-6-valid": "Bárki csatlakozhat", + "page-staking-considerations-saas-6-warning": "Engedélyhez kötött", + "page-staking-considerations-saas-7-title": "Sokrétű végrehajtás", + "page-staking-considerations-saas-7-description": "A szolgáltatás nem működtetheti az aggregált validátorjainak több mint 50%-át egy többségi végrehajtási klienssel", + "page-staking-considerations-saas-7-valid": "Kevesebb mint 50%", + "page-staking-considerations-saas-7-caution": "Jelenleg nem ismert", + "page-staking-considerations-saas-7-warning": "Több mint 50%", + "page-staking-considerations-saas-8-title": "Sokrétű konszenzus", + "page-staking-considerations-saas-8-description": "A szolgáltatás nem működtetheti az aggregált validátorjainak több mint 50%-át egy többségi konszenzusos klienssel", + "page-staking-considerations-saas-8-valid": "Kevesebb mint 50%", + "page-staking-considerations-saas-8-caution": "Jelenleg nem ismert", + "page-staking-considerations-saas-8-warning": "Több mint 50%", + "page-staking-considerations-pools-5-description": "A szolgáltatáshoz nincs szükség emberi beavatkozásra a kulcsok felügyeletét vagy a jutalmak elosztását illetően", + "page-staking-considerations-pools-6-title": "Engedélymentes csomópontok", + "page-staking-considerations-pools-6-description": "A szolgáltatás megengedi, hogy bárki csatlakozzon csomópont-operátorként a letéti alaphoz, külön engedély nélkül", + "page-staking-considerations-pools-7-description": "A szolgáltatás nem működtetheti az aggregált validátorjainak több mint 50%-át egy többségi végrehajtási klienssel", + "page-staking-considerations-pools-8-title": "Likviditási token", + "page-staking-considerations-pools-8-description": "Olyan likviditási tokent ajánl, amely eladható, a letétbe helyezett ETH-t reprezentálja, és az Ön tárcájában található", + "page-staking-considerations-pools-8-valid": "Likviditási tokenek", + "page-staking-considerations-pools-8-warning": "Nem likvid token", + "page-staking-considerations-pools-9-description": "A szolgáltatás nem működtetheti az aggregált validátorjainak több mint 50%-át egy többségi konszenzusos klienssel", + "page-staking-how-solo-works-item-1": "Szerezze be a hardvert: csomópontot kell működtetnie a letétbe helyezéshez", + "page-staking-how-solo-works-item-2": "Végrehajtási kliens szinkronizálása", + "page-staking-how-solo-works-item-3": "Konszenzusos kliens szinkronizálása", + "page-staking-how-solo-works-item-4": "Hozza létre a kulcsokat és töltse fel azokat a validátorkliensbe", + "page-staking-how-solo-works-item-5": "Monitorozza és kezelje a csomópontját", + "page-staking-launchpad-widget-testnet-label": "Goerli-teszthálózat", + "page-staking-launchpad-widget-testnet-start": "Letétbe helyezés a Goerli-teszthálózaton", + "page-staking-launchpad-widget-mainnet-label": "Főhálózat", + "page-staking-launchpad-widget-mainnet-start": "Letétbe helyezés a főhálózaton", + "page-staking-launchpad-widget-span": "Hálózat választása", + "page-staking-launchpad-widget-p1": "Az önálló validátoroknak először tesztelniük kell az összeállított rendszerüket és operációs képességüket a Goerli-teszthálózaton, mielőtt kockáztatnák a letétet. Fontos, hogy egy kisebbségi klienst válasszon, mert az javítja a hálózat biztonságát, és csökkenti az Ön kockázatát is.", + "page-staking-launchpad-widget-p2": "Ha már gyakorlottnak érzi, akkor mindent beállíthat maga a parancsok alapján a Staking Launchpad használatával.", + "page-staking-launchpad-widget-p3": "Ennek megkönnyítésére, nézze meg az elérhető eszközöket és útmutatókat alább, melyek a Staking Launchpad használata mellett segítenek a kliens felállításában.", + "page-staking-launchpad-widget-link": "Szoftvereszközök és útmutató", + "page-staking-products-get-started": "Kezdjünk bele", + "page-staking-dropdown-staking-options": "Letétbe helyezési opciók", + "page-staking-dropdown-staking-options-alt": "Letétbe helyezési opciók legördülő menüje", + "page-staking-stats-box-metric-1": "A letétbe helyezett ETH teljes összege", + "page-staking-stats-box-metric-2": "Validátorok száma", + "page-staking-stats-box-metric-3": "Aktuális THM", + "page-staking-stats-box-metric-1-tooltip": "Az ETH összege, melyet a Beacon-láncon helyeztek letétbe, a 32 ETH feletti egyenlegeket leszámítva", + "page-staking-stats-box-metric-2-tooltip": "A jelenleg aktívált validátorszámlák száma a Beacon-láncon", + "page-staking-stats-box-metric-3-tooltip": "Átlagos éves pénzügyi megtérülés validátoronként az előző 24 órában", + "page-staking-section-comparison-subtitle": "Nincs olyan letétbe helyezési (staking) megoldás, mely mindenre jó lenne, mindegyik teljesen egyedi. Következzen a módszerek összevetése a fő kockázatok, jutalmak és feltételek mentén.", + "page-staking-section-comparison-rewards-title": "Jutalmak", + "page-staking-section-comparison-solo-rewards-li1": "Maximális jutalom – a jutalom teljes összegét megkapja közvetlenül a protokolltól", + "page-staking-section-comparison-solo-rewards-li2": "Jutalmat kap azért, a tranzakciókat egy új blokkba rendezze, illetve ellenőrizze más validátorok munkáját, hogy a lánc biztonságosan működhessen", + "page-staking-section-comparison-solo-rewards-li3": "A javasolt blokkok után azokat a tranzakciós díjakat is megkapja, melyeket nem égetnek el", + "page-staking-section-comparison-saas-rewards-li1": "Általában a teljes protokoll jutalom mínusz a csomópont-üzemeltetés havi költsége", + "page-staking-section-comparison-saas-rewards-li2": "A validátorkliens könnyebb monitorozásához gyakran elérhetők irányítópultok", + "page-staking-section-comparison-pools-rewards-li1": "A letéti alapok esetén a jutalmak különféle módokon keletkeznek a választott módszer függvényében", + "page-staking-section-comparison-pools-rewards-li2": "Sok letétialap-szolgáltatás ajánl egy vagy több likviditási tokent, ami a letétbe helyezett ETH-t képviseli, plusz a validátornak járó jutalmakból az Ön részét", + "page-staking-section-comparison-pools-rewards-li3": "A likviditási tokeneket a tárcájában tarthatja, használhatja a DeFi-ban és ha ki akar lépni, akkor eladhatja azokat", + "page-staking-section-comparison-risks-title": "Kockázatok", + "page-staking-section-comparison-solo-risks-li1": "Az Ön ETH-je a tét", + "page-staking-section-comparison-solo-risks-li2": "Ha a validátor offline, akkor ETH-be kerül a büntetés", + "page-staking-section-comparison-solo-risks-li3": "A rosszhiszemű viselkedés nagyobb ETH összeg elvételét (slashing) és a hálózatból való kizárást von maga után", + "page-staking-section-comparison-saas-risks-li1": "Ugyanazok a kockázatok, mint az önálló stakingnél, plusz a szolgáltatásnyújtóból eredő kockázatok", + "page-staking-section-comparison-saas-risks-li2": "Az aláírókulcsokat egy másik személy kezeli, aki visszaélhet azokkal", + "page-staking-section-comparison-pools-risks-li1": "A kockázat a választott módtól függ", + "page-staking-section-comparison-pools-risks-li2": "Általánosságban a kockázat a harmadik fél, az okosszerződés és a végrehajtás kockázatainak kombinációjából jön ki", + "page-staking-section-comparison-requirements-title": "Követelmények", + "page-staking-section-comparison-solo-requirements-li1": "Letétbe kell helyezzen 32 ETH-t", + "page-staking-section-comparison-solo-requirements-li2": "Rendelkezésre kell állnia egy olyan hardvernek, ami egyaránt futtat Ethereum-végrehajtási klienst és konszenzusos klienst, miközben az internethez csatlakozik", + "page-staking-section-comparison-solo-requirements-li3": "A Staking Launchpad végigvezeti Önt a folyamat lépésein és a hardverigényeken", + "page-staking-section-comparison-saas-requirements-li1": "Letétbe kell helyezzen 32 ETH-t és létrehoznia a kulcsokat, melyben a szolgáltató is segíti Önt", + "page-staking-section-comparison-saas-requirements-li2": "A kulcsait biztonságosan kell tárolnia", + "page-staking-section-comparison-saas-requirements-li3": "A többiről a szolgáltató gondoskodik, bár a szolgáltatási módok eltérők lehetnek", + "page-staking-section-comparison-pools-requirements-li1": "Kevesebb ETH kell hozzá, bizonyos projekteket már 0,01 ETH-val is lehet használni", + "page-staking-section-comparison-pools-requirements-li2": "Helyezze letétbe közvetlenül a tárcájából a különböző letétialap-platformokra vagy egyszerűen vásároljon likviditási tokeneket", + "page-staking-faq-1-question": "Mi az a validátor?", + "page-staking-faq-1-answer": "A validátor egy virtuális entitás, amely az Ethereumon működik és a protokoll konszenzusfolyamatában vesz részt. Az egyenleg, a nyilvános kulcs és más vonások jellemzik. A validátorkliens az a szoftver, ami a validátor nevében működik, tárolva és felhasználva annak privát kulcsát. Egy validátorkliens több kulcspárt is tárolhat, így több validátort is üzemelhet.", + "page-staking-faq-2-question": "Miért helyezzem letétbe a pénzeszközeimet?", + "page-staking-faq-2-answer": "A validátor képes blokkot javasolni és tanúsítani a hálózat számára. A rosszhiszemű viselkedés elkerülése érdekében a felhasználóknak letétbe kell helyezniük a pénzüket. Így a protokoll meg tudja bünteti a nem kívánt viselkedést. A letét őszinteségre ösztönzi a szereplőket, különben a tetteik pénzügyi következménnyel járnak.", + "page-staking-faq-3-question": "Vásárolhatok „Eth2-t”?", + "page-staking-faq-3-answer-p1": "A protokollnak nincsen Eth2 tokenje, mivel az eredeti ether (ETH) token nem változott meg a proof-of-stake módra való átállással.", + "page-staking-faq-3-answer-p2": "Vannak olyan származékos tokenek, amelyek letétbe helyezett ETH-t képviselnek (pl. rETH a Rocket Pooltól, stETH a Lidotól, ETH2 a Coinbase-től). Bővebben a letéti alapokról", + "page-staking-faq-4-question": "A letétbe helyezés működik jelenleg?", + "page-staking-faq-4-answer-p1": "Igen, a letétbe helyezés 2020. december 1-e óta működik", + "page-staking-faq-4-answer-p2": "Ez azt jelenti, hogy a felhasználók letétbe helyezhetik a rendelkezésre álló ETH-t, működtethetnek validátorklienseket és elnyerhetik az ezért járó jutalmakat.", + "page-staking-faq-4-answer-p3": "A Shanghai/Capella frissítés 2023. április 12-én végbement, mely elérhetővé tette a letétek visszavonását, így lefedve a staking likviditás egészét.", + "page-staking-faq-5-question": "Mikor vonhatom vissza a letétbe helyezett ETH-t?", + "page-staking-faq-5-answer-p1": "Akár most azonnal is! A letétesek szabadon kivehetik a jutalmaikat és visszavonhatják az alapvető letétet is a validátor egyenlegükből, ha ezt szeretnék.", + "page-staking-faq-5-answer-p2": "A letétesek jutalmakat szereznek a díjak és a kinyerhető értékek (MEV) formájában, amikor blokkot javasolnak, amelyek azonnal megjelennek az erre beállított címen.", + "page-staking-faq-5-answer-link": "Bővebben a letétbe helyezés visszavonásáról", + "page-staking-further-reading-1-link": "Miért a proof-of-stake (2020. nov)", + "page-staking-further-reading-author-vitalik-buterin": "Vitalik Buterin", + "page-staking-further-reading-2-link": "Serenity Design Rationale", + "page-staking-further-reading-3-link": "Proof-of-stake FAQ (2017. dec)", + "page-staking-further-reading-4-link": "Eth2 hírek", + "page-staking-further-reading-4-author": "Ben Edgington", + "page-staking-further-reading-5-link": "Finalized no. 33, az Ethereum konszenzusréteg (2022. jan)", + "page-staking-further-reading-5-author": "Danny Ryan", + "page-staking-further-reading-6-link": "Az Attestant cikkei", + "page-staking-further-reading-7-link": "Beaconcha.in tudástár", + "page-staking-further-reading-8-link": "Beaconcha.in közösség által készített oktatóanyagok", + "page-staking-further-reading-9-link": "Ethereum Staking Launchpad gyakori kérdések (FAQ)", + "page-staking-further-reading-10-link": "EthStaker tudástár", + "page-staking-toc-how-to-stake-your-eth": "Hogyan helyezd letétbe az ETH-edet", + "page-staking-toc-comparison-of-options": "A letétbe helyezési opciók összehasonlítása", + "page-staking-toc-faq": "GYIK", + "page-staking-toc-further": "További olvasnivaló", + "page-staking-dom-info-title": "Letétbe helyezés az Ethereumon", + "page-staking-join-community": "Csatlakozzon a letétesek közösségéhez", + "page-staking-join-community-desc": "Az EthStaker egy olyan közösség, ahol bárki megvitathatja és megismerheti az Ethereumon való letétbe helyezést. Csatlakozzon Ön is a sok ezer taghoz, akik a világ minden tájáról származnak, kérjen tanácsot, támogatást és beszélje át a letéttel kapcsolatos dolgokat.", + "page-staking-meta-description": "Áttekintés az Ethereumon való letétbe helyezésről (staking): kockázatok, jutalmak, követelmények és hogyan lehet csinálni.", + "page-staking-meta-title": "Letétbe helyezés (staking) az Ethereumon", + "page-staking-withdrawals-important-notices": "Fontos figyelmeztetések", + "page-staking-withdrawals-important-notices-desc": "A visszavonás még nem elérhető. További információkért olvassa el az Eth2 egyesítés (The Merge) és az egyesítés utáni helyzetre vonatkozó gyakori kérdéseket és válaszokat.", + "page-upgrades-merge-btn": "A beolvadásról bővebben", + "subscribe-to-ef-blog": "Iratkozzon fel az EF blogjára, hogy e-mail-értesítéseket kapjon a legfrissebb protokollról szóló bejelentésekről." } diff --git a/src/intl/hu/page-wallets-find-wallet.json b/src/intl/hu/page-wallets-find-wallet.json index 430e8277ed4..50c43cd10c6 100644 --- a/src/intl/hu/page-wallets-find-wallet.json +++ b/src/intl/hu/page-wallets-find-wallet.json @@ -7,10 +7,88 @@ "page-find-wallet-meta-title": "Ethereum tárca keresése", "page-find-wallet-title": "Tárca keresése", "page-find-wallet-try-removing": "Próbálj elvenni egy vagy két tulajdonságot", + "page-find-wallet-choose-to-compare": "Válassza ki az összehasonlításhoz", "page-stake-eth": "ETH letétbe helyezése", - "page-find-wallet-swaps": "Decentralizált token váltások", - "page-find-wallet-swaps-desc": "Kereskedj ETH-tel és más tokenekkel közvetlenül a tárcádból.", - "page-find-wallet-multisig": "Több-aláírós számlák", - "page-find-wallet-multisig-desc": "Az extra biztonság kedvéért a több aláírásos tárcák esetében, egynél több számla szükséges bizonyos tranzakciók jóváhagyásához.", - "page-find-wallet-showing": "Mutatás " + "page-find-wallet-open-source": "Nyílt forráskódú", + "page-find-wallet-open-source-desc": "A nyílt forráskódú szoftver lehetővé teszi, hogy bárki ellenőrizhesse az alkalmazás integritását és biztonságát", + "page-find-wallet-self-custody": "Saját felügyelet", + "page-find-wallet-non-custodial": "Nem felügyelt", + "page-find-wallet-non-custodial-desc": "Tárcák, melyek nem felügyelik a privát kulcsait", + "page-find-wallet-hardware-wallet-support": "Hardveres tárcák támogatása", + "page-find-wallet-hardware-wallet-support-desc": "Tárcák, amelyek hardveres tárcához csatlakoztathatók a fokozott biztonság érdekében", + "page-find-wallet-walletconnect": "WalletConnect", + "page-find-wallet-walletconnect-desc": "A WalletConnect funkció támogató tárcák dappokhoz való csatlakozáshoz", + "page-find-wallet-rpc-importing": "RPC-importálás", + "page-find-wallet-rpc-importing-desc": "Egyedi RPC-végpontokat támogató tárcák különböző csomópontokhoz vagy hálózatokhoz való csatlakozáshoz", + "page-find-wallet-nft-support": "NFT-támogatás", + "page-find-wallet-nft-support-desc": "Tárcák, amelyek támogatják az NFT-k megtekintését és az azokkal való interakciót", + "page-find-wallet-connect-to-dapps": "Csatlakozás dappokhoz", + "page-find-wallet-connect-to-dapps-desc": "Tárcák, amelyek az Ethereum-hálózatra épülő alkalmazásokhoz csatlakoznak", + "page-find-wallet-staking": "Letétbe helyezés", + "page-find-wallet-staking-desc": "ETH letétele közvetlenül a tárca felületéről", + "page-find-wallet-swaps": "Átváltás", + "page-find-wallet-swaps-desc": "ERC-20 tokenek közvetlen váltása a tárcában", + "page-find-wallet-layer-2": "2. réteg", + "page-find-wallet-layer-2-desc": "Tárcák, melyek támogatják az Ethereum második blokkláncrétegét (L2)", + "page-find-wallet-gas-fee-customization": "Egyedi díj", + "page-find-wallet-gas-fee-customization-desc": "Egyedi díj meghatározása (alap, elsőbbségi és maximális díj)", + "page-find-wallet-ens-support": "ENS-támogatás", + "page-find-wallet-ens-support-desc": "Tárcák, melyek támogatják az Ethereum névszolgáltatást (ENS)", + "page-find-wallet-token-importing": "Tokenimportálás", + "page-find-wallet-token-importing-desc": "Bármilyen ERC-20 tokenek importálása a tárcába", + "page-find-wallet-fee-optimization": "Díjoptimalizálás", + "page-find-wallet-fee-optimization-desc": "Támogatja a 2. típusú tranzakciókat az optimális díjak és a nem használt gáz visszatérítése érdekében", + "page-find-wallet-buy-crypto": "Kripto vásárlása", + "page-find-wallet-buy-crypto-desc": "Kriptovásárlás hagyományos pénzért közvetlenül a tárcában \n *Megjegyzés: a kriptovásárlás a helyi szabályozástól függ", + "page-find-wallet-sell-for-fiat": "Eladás hagyományos pénzért", + "page-find-wallet-sell-for-fiat-desc": "Kriptoeladás hagyományos pénzért közvetlenül a tárcában \n *Megjegyzés: a kriptoeladás a helyi szabályozástól függ", + "page-find-wallet-multisig": "Több aláírás", + "page-find-wallet-multisig-desc": "Tárcák, melyeknél több aláírás szükséges a tranzakciók engedélyezéséhez", + "page-find-wallet-social-recovery": "Hagyományos visszaállítás", + "page-find-wallet-social-recovery-desc": "Tárcák, melyeknél az őrzők megváltoztathatják az aláírókulcsot az okosszerződéses tárcákhoz", + "page-find-wallet-token-support": "Tokentámogatás", + "page-find-wallet-features": "Jellemzők", + "page-find-wallet-security": "Biztonság", + "page-find-wallet-smart-contract": "Smart contract", + "page-find-wallet-check-out": "Nézd meg", + "page-find-wallet-info-updated-on": "információ utolsó frissítésének dátuma", + "page-find-wallet-showing-all-wallets": "Az összes tárca megjelenítése", + "page-find-wallet-showing": "Mutatás ", + "page-find-wallet-wallets": "tárcák", + "page-find-wallet-iOS": "iOS", + "page-find-wallet-android": "Android", + "page-find-wallet-linux": "Linux", + "page-find-wallet-macOS": "macOS", + "page-find-wallet-windows": "Windows", + "page-find-wallet-chromium": "Chromium", + "page-find-wallet-firefox": "Firefox", + "page-find-wallet-hardware": "Hardver", + "page-find-wallet-hardware-desc": "Hardveres tárcák", + "page-find-wallet-new-to-crypto-title": "Kezdő a kripto világában", + "page-find-wallet-new-to-crypto-desc": "Ön most ismerkedik a kripto világával és az első tárcáját keresi", + "page-find-wallet-nfts-title": "NFT-k", + "page-find-wallet-nfts-desc": "Önt az NFT-k érdeklik, ezért NFT-t támogató tárcát keres", + "page-find-wallet-hodler-title": "Hodler", + "page-find-wallet-hodler-desc": "Ön tokenekkel rendelkezik és nem szándékozik eladni azokat", + "page-find-wallet-finance-title": "Pénzügy", + "page-find-wallet-finance-desc": "Önt a decentralizált pénzügyek (DeFi) érdeklik, és olyan tárcát szeretne, mely ezekhez az alkalmazásokhoz kapcsolódik", + "page-find-wallet-developer-title": "Fejlesztő", + "page-find-wallet-developer-desc": "Ön fejlesztő és olyan tárcát szeretne, mely segít az alkalmazások fejlesztésében és tesztelésében", + "page-find-wallet-persona-desc": "Válassza ki a felhasználói típusának megfelelő profilt, és szűrjön rá a pénztárcalistára", + "page-find-wallet-filters": "Szűrők", + "page-find-wallet-active": "aktív", + "page-find-wallet-profile-filters": "Profilszűrő", + "page-find-wallet-feature-filters": "Funkciószűrő", + "page-find-wallet-footnote-1": "Az oldalon szereplő tárcák nem minősülnek az Ethereum által minősített termékeknek, az itt megjelenő adataik tájékoztatási célt szolgálnak.", + "page-find-wallet-footnote-2": "A leírásokat a tárcákat biztosító projekt adta.", + "page-find-wallet-footnote-3": "Erre az oldalra a listázási szabályzatban meghatározott kritériumok alapján veszünk fel új termékeket. Ha új termék megjelenítését szeretné, akkor kérje a GitHubon.", + "page-find-wallet-mobile": "Mobil", + "page-find-wallet-mobile-desc": "Tárcák mobilalkalmazásokkal", + "page-find-wallet-desktop": "Asztali számítógép", + "page-find-wallet-desktop-desc": "Tárcák asztali alkalmazásokkal", + "page-find-wallet-browser": "Böngésző", + "page-find-wallet-browser-desc": "Tárcák böngészőbővítményekkel", + "page-find-wallet-device": "Eszköz", + "page-find-choose-to-compare": "Válassza ki az összehasonlításhoz", + "page-find-wallet-choose-features": "Válasszon a funkciók közül" } diff --git a/src/intl/hu/page-wallets.json b/src/intl/hu/page-wallets.json index 836d66014f7..629e4f62d23 100644 --- a/src/intl/hu/page-wallets.json +++ b/src/intl/hu/page-wallets.json @@ -1,20 +1,20 @@ { - "page-wallets-accounts-addresses": "Tárcák, számlák és címek", + "page-wallets-accounts-addresses": "Tárcák, számlák, kulcsok és címek", "page-wallets-accounts-addresses-desc": "Érdemes megérteni a különbségeket néhány fontos fogalom között.", - "page-wallets-accounts-ethereum-addresses": "Minden Ethereum-számlához tartozik egy Ethereum-cím, pont ahogy az e-mail fiókokhoz az e-mail-címek. Ezzel lehet pénzeszközöket küldeni egy adott számlára.", + "page-wallets-accounts-ethereum-addresses": "Az Ethereum-számlához tartozik egy cím, épp ahogy egy levelezőrendszernek is van e-mail-címe. Ez azonosítja az Ön digitális eszközeit.", "page-wallets-alt": "Egy robot illusztrációja, melynek a teste egy kamra, ami egy Ethereum tárcát reprezentál", - "page-wallets-ethereum-account": "Az Ethereum-számla egy olyan entitás, amely tranzakciókat indíthat és egyenleggel rendelkezik.", + "page-wallets-ethereum-account": "Az Ethereum-számla két kulccsal rendelkezik. Az egyik a cím létrehozásához szükséges, melyet szabadon megoszthat bárkivel. A másik kulcsot tartsa mindig titokban, mert ez kell az ügyletek aláírásához. Ez a két kulcs együtt teszi lehetővé, hogy eszközöket birtokolhasson és tranzakciókat hajtson végre.", "page-wallets-blog": "Coinbase blog", "page-wallets-bookmarking": "Tedd könyvjelzőbe a tárcád", "page-wallets-bookmarking-desc": "Ha egy web tárcát használsz, akkor tedd a könyvjelzők közé az oldalt, hogy védd magad a phishing átverésektől.", "page-wallets-cd": "A fizikai hardvertárcák olyan eszközök, amelyek segítségével offline tudja tárolni a kriptovalutáját – nagyon biztonságosak", - "page-wallets-desc-2": "Egy tárcára van szükséged, hogy pénzt küldhess és kezelhesd az ETH-edet.", + "page-wallets-desc-2": "A tárcák azt a célt szolgálják, hogy Ön kezelni tudja a digitális eszközeit és személyazonosságát.", "page-wallets-desc-2-link": "Többet az ETH-ről", - "page-wallets-desc-3": "A tárcád csak egy eszköz az Ethereum számlád kezelésére. Ez azt jelenti, hogy bármikor válthatsz tárca szolgáltatót. Sok tárca lehetővé teszi, hogy egyszerre több Ethereum számlát is kezelj egy alkalmazásból.", - "page-wallets-desc-4": "Ez azért van, mert a tárcáknak nincs felügyeletük a pénzed felett, hanem neked van. Ezek csak eszközök annak a kezelésére, ami tényleg a tiéd.", - "page-wallets-description": "Az Ethereum tárcák olyan alkalmazások, melyekkel interakcióba léphetsz az Ethereum számláddal. Gondolj rá úgy, mint egy internetes banki alkalmazásra - bank nélkül. A tárcáddal leolvashatod az egyenleged, tranzakciókat küldhetsz és alkalmazásokhoz kapcsolódhatsz.", + "page-wallets-desc-3": "A tárca egy eszköz arra, hogy elérje és használja az Ethereum-számláját. Tehát bármikor választhat másik tárcaszolgáltatót. Számos tárca képes arra, hogy egyszerre több Ethereum-számlát kezeljen egy alkalmazásból.", + "page-wallets-desc-4": "A tárcaszolgáltató nem felügyeli az Ön eszközeit, csupán egy betekintési felületet ad ahhoz, hogy az Ethereumon lévő eszközeit lássa, és megfelelő funkciókat biztosít azok kezeléséhez.", + "page-wallets-description": "Az Ethereum-tárcák olyan alkalmazások, melyekkel Ön a számláját kezelheti. Akárcsak az ember pénztárcája, ebben is minden benne van, amellyel a személyazonosságát igazolni tudja és képes kezelni az eszközeit. Biztosítja, hogy be tudjon jelentkezni az alkalmazásokba, megnézze egyenlegét, tranzakciókat indítson és igazolja személyazonosságát.", "page-wallets-desktop": "Asztali alkalmazások, ha jobban szereted MacOS-en, Windows-on vagy Linux-on kezelni a pénzed", - "page-wallets-ethereum-wallet": "A tárca egy olyan termék, amely lehetővé teszi az Ethereum-számlájának kezelését. Lehetővé teszi számlaegyenlegének megtekintését, tranzakciók küldését és még sok mást.", + "page-wallets-ethereum-wallet": "A tárca egy olyan eszköz, amely lehetővé teszi az Ethereum-számla kezelését. Ezen keresztül megnézheti számlaegyenlegét, tranzakciókat indíthat és egyéb műveleteket is végezhet.", "page-wallets-explore": "Az Ethereum Felfedezése", "page-wallets-features-desc": "Segíthetünk kiválasztani a tárcádat a neked fontos szempontok szerint.", "page-wallets-features-title": "Tárcák összehasonlítása funkciók alapján", @@ -39,12 +39,12 @@ "page-wallets-seed-phrase-example": "Itt egy példa:", "page-wallets-seed-phrase-snippet": "there aeroplane curve vent formation doge possible product distinct under spirit lamp", "page-wallets-seed-phrase-write-down": "Ne egy számítógépen tárold. Írd le és tartsd biztonságban.", - "page-wallets-slogan": "A kulcs a digitális jövődhöz", + "page-wallets-slogan": "A kulcs az Ön digitális jövőjéhez", "page-wallets-stay-safe": "Hogyan maradjunk biztonságban", - "page-wallets-stay-safe-desc": "A tárcahasználat egy váltás a gondolkodásban. A pénzügyi szabadság és a képesség, hogy bárhonnan elérjük a pénzünket felelőséggel jár - nincs ügyfélszolgálat a kriptoban.", - "page-wallets-subtitle": "A tárcák hozzáférést biztosítanak a pénzedhez és az Ethereum alkalmazásokhoz. Csak neked szabad hozzáférned a tárcádhoz.", + "page-wallets-stay-safe-desc": "A pénzügyi szabadság és az a képesség, hogy bármikor elérheti és használhatja az eszközeit felelősséggel jár – a kripto világában nincs ügyfélszolgálat. Ön felel azért, hogy a kulcsokat biztonságban tudja.", + "page-wallets-subtitle": "A tárcák segítségével elérheti digitális eszközeit és bejelentkezhet különféle alkalmazásokba.", "page-wallets-take-responsibility": "Vállalj felelőséget a pénzed felett", - "page-wallets-take-responsibility-desc": "A centralizált tőzsdék összekötik a tárcádat egy felhasználónévvel és egy jelszóval, melyet a tradicionális módon tudsz helyreállítani. De ne feledd, hogy egy tőzsdét bízol meg a pénzed feletti felügyelettel. Ha ezt a céget megtámadják vagy csődbe megy, akkor a pénzed veszélybe kerül.", + "page-wallets-take-responsibility-desc": "A centralizált tőzsdék összekötik a tárcát egy felhasználónévvel és egy jelszóval, melyet a hagyományos módon helyre lehet állítani. Ne feledje, hogy ebben az esetben a tőzsdét bízza meg a pénze feletti felügyelettel. Ha ez a cég pénzügyi nehézségekkel küzd, akkor a pénze veszélybe kerülhet.", "page-wallets-tips": "Még több biztonsági tipp", "page-wallets-tips-community": "A közösségből", "page-wallets-title": "Ethereum tárcák", @@ -61,5 +61,7 @@ "page-wallets-your-ethereum-account": "Az Ethereum számlád", "page-wallets-your-ethereum-account-desc": "A tárcád az ablakod az Ethereum számládra - az egyenlegedre, tranzakciós történetedre és más egyébre. De bármikor válthatsz tárca szolgáltatót.", "page-wallets-your-login": "A belepőd az Ethereum alkalmazásokba", - "page-wallets-your-login-desc": "A tárcáddal rákapcsolódhatsz bármely decentralizált alkalmazásra, mely az Ethereum számládat használja. Ez olyan mint egy bejelentkezés, amit több dappon keresztül is használhatsz." + "page-wallets-your-login-desc": "A tárcával bármely alkalmazáshoz kapcsolódhat, amely az Ön Ethereum-számláját használja. Ez olyan mint egy bejelentkezés, amelyet több alkalmazáshoz is megfelelő.", + "additional-reading-how-to-create-an-ethereum-account": "Hogyan lehet Ethereum számlát létrehozni", + "additional-reading-how-to-use-a-wallet": "Hogyan használja a tárcát" } diff --git a/src/intl/hu/page-what-is-ethereum.json b/src/intl/hu/page-what-is-ethereum.json index 050eed7cfa9..f6ebb85149b 100644 --- a/src/intl/hu/page-what-is-ethereum.json +++ b/src/intl/hu/page-what-is-ethereum.json @@ -3,7 +3,7 @@ "page-what-is-ethereum-alt-img-comm": "Egy illusztráció, amiben Ethereum közösségi tagok együtt dolgoznak", "page-what-is-ethereum-alt-img-lego": "Illusztráció egy kézről, amely egy ETH-logót épít LEGO-kockákból", "page-what-is-ethereum-banking-card": "Banki szolgáltatás mindenkinek", - "page-what-is-ethereum-banking-card-desc": "Nem mindenkinek van hozzáférése pénzügyi szolgáltatásokhoz. De ahhoz, hogy hozzáférjen az Ethereumhoz és a hitelezési, kölcsönzési és takarékossági termékeihez, csak egy internethozzáférésre van szüksége.", + "page-what-is-ethereum-banking-card-desc": "Nem mindenkinek van hozzáférése pénzügyi szolgáltatásokhoz. Az Ethereumhoz és az arra épülő hitelezési, kölcsönadási és megtakarítási szolgáltatásokhoz csak internethozzáférésre van szükség.", "page-what-is-ethereum-build": "Készítsen valamit az Ethereummal", "page-what-is-ethereum-build-desc": "Ha szeretné kipróbálni az építést Ethereummal, akkor olvassa el a dokumentációinkat, próbáljon ki néhány útmutatót vagy nézze meg az eszközöket, melyekre az induláshoz szüksége lesz.", "page-what-is-ethereum-censorless-card": "Cenzúra-rezisztens", @@ -11,44 +11,41 @@ "page-what-is-ethereum-comm-desc": "A közösségünkben sokféle háttérrel rendelkező emberek vannak úgy, mint művészek, kripto-anarchisták, fortune 500 vállalatok és most már Ön is. Nézze meg, hogyan tud ma bekapcsolódni.", "page-what-is-ethereum-commerce-card": "Kereskedelmi garanciák", "page-what-is-ethereum-commerce-card-desc": "Az ügyfelek biztonságos, beépített garanciát kapnak arra, hogy a pénzeszközök csak akkor cserélnek gazdát, ha Ön teljesíti a megállapodásban foglaltakat. Hasonlóképpen a fejlesztők is biztosak lehetnek abban, hogy a rájuk vonatkozó szabályok nem változnak meg időközben.", - "page-what-is-ethereum-composable-card": "Minden termék összeilleszthető", - "page-what-is-ethereum-composable-card-desc": "Mivel minden alkalmazás ugyanarra a blokkláncra épül egy közös globális állapottal, egymásra tudnak épülni (mint a legók). Ez lehetővé teszi, hogy folyamatosan jobb termékek és élmények jöhessenek létre.", + "page-what-is-ethereum-composable-card": "Egymásra építhető termékek", + "page-what-is-ethereum-composable-card-desc": "Minden alkalmazás ugyanazon a blokkláncon alapul, melynek egy közös, globális státusza van, így ezek egymásra építhetők (akár az építőkockák). Ez jobb termékeket és felhasználói tapasztalatot tesz lehetővé, illetve senki sem távolíthat el olyan eszközöket, melyek az alkalmazáshoz szükségesek.", "page-what-is-ethereum-community": "Az Ethereum közösség", "page-what-is-ethereum-desc": "A digitális jövőnk alapja", "page-what-is-ethereum-explore": "Az Ethereum felfedezése", - "page-what-is-ethereum-internet-card": "Egy privátabb internet", - "page-what-is-ethereum-internet-card-desc": "Nem kell az összes személyes adadát átadnia, amikor egy Ethereum appot használ. Az Ethereum egy érték alapú gazdaságot épít, nem pedig egy megfigyelés-alapút.", + "page-what-is-ethereum-internet-card": "Nyílt internet", + "page-what-is-ethereum-internet-card-desc": "Bárki használhatja az Ethereum-hálózatot vagy építhet arra alkalmazásokat. Ennek köszönhetően mindenki maga kezelheti saját eszközeit és személyazonosságát, ahelyett hogy néhány megavállalat használná azokat.", "page-what-is-ethereum-meet-comm": "Ismerje meg a közösséget", "page-what-is-ethereum-meta-description": "Tudjon meg többet az Ethereumról, arról, hogy mit csinál és hogy hogy tudja kipróbálni.", "page-what-is-ethereum-meta-title": "Mi az Ethereum?", "page-what-is-ethereum-p2p-card": "Egy peer-to-peer hálózat", - "page-what-is-ethereum-p2p-card-desc": "Az Ethereum lehetővé teszi, hogy pénzt mozgasson vagy egyezségeket kössön közvetlenül valakivel. Nem kell köztes cégek szolgáltatásait igénybe vennie.", + "page-what-is-ethereum-p2p-card-desc": "Az Ethereum lehetővé teszi, hogy más emberekkel együttműködjön, megállapodásokat kössön vagy digitális eszközöket küldjön nekik. Nincs szükség közvetítőkre.", "page-what-is-ethereum-start-building-btn": "Kezdjen el építeni", "page-what-is-ethereum-title": "Mi az Ethereum?", "page-what-is-ethereum-subtitle": "Teljes körű útmutató kezdőknek arról, hogyan működik az Ethereum, milyen előnyökkel jár, és hogyan használják emberek milliói világszerte.", "page-what-is-ethereum-button-lets-start": "Kezdés", "page-what-is-ethereum-blockchain-tab-title": "Mi az a blokklánc?", - "page-what-is-ethereum-blockchain-tab-content": "A blokklánc egy tranzakciókat tartalmazó osztott adatbázis, amely egy hálózaton belül számos számítógépen frissül. Az újonnan hozzáadott egy tételnyi tranzakciót blokknak nevezzük, innen fakad a blokklánc elnevezés. A legtöbb blokklánc nyilvános, melyhez adatot hozzáadni lehet, eltávolítani azonban nem. Ha valaki módosítani akar bármilyen információt, vagy be akarja csapni a rendszert, ahhoz a hálózaton lévő számítógépek többségén végre kell azt hajtania. Az pedig egy nagyon nagy szám. Ez teszi a kiépített blokkláncokat – mint amilyen az Ethereum is – nagyon biztonságossá.", - "page-what-is-ethereum-cryptocurrency-tab-title": "Miért hívják kriptovalutának?", - "page-what-is-ethereum-cryptocurrency-tab-content": "A blokkláncok kriptográfiai technikákat alkalmaznak a pénzeszközök biztonságának biztosításához. A bankszektor régóta hasonló módon védelmezi a pénzügyi tranzakciókat. A kriptovaluták tehát mondhatni banki szintű biztonsággal rendelkeznek.", + "page-what-is-ethereum-blockchain-tab-content": "A blokklánc egy tranzakciókat tartalmazó adatbázis, amely hálózaton lévő több számítógépen megosztott módon frissül. Az újonnan hozzáadott tranzakciócsomagot blokknak nevezzük, innen fakad a blokklánc elnevezés. A nyilvános blokkláncokhoz, mint az Ethereum, bárki hozzáadhat adatot, de eltávolítani nem tud. Ha valaki módosítani szeretné valamelyik információt, vagy csalni akarna a rendszerben, akkor a hálózaton lévő számítógépek többségén végre kell azt hajtania. Az pedig rengeteg feladat! Ez teszi a decentralizált blokkláncokat, mint amilyen az Ethereum is, nagyon biztonságossá.", + "page-what-is-ethereum-cryptocurrency-tab-title": "Mi az a kriptovaluta?", + "page-what-is-ethereum-cryptocurrency-tab-content-1": "A kriptovaluta, mint kifejezés, többféle helyettesíthető, digitális tokent takar, melyeket egy blokklánc biztosít. A Bitcoinnal kezdődött minden. A Bitcoin közvetítő nélkül képes értéket transzferálni két fél között, és ehhez csak annak működésében és programkódjában kell megbízni, mely nyitott és bárki számára elérhető.", + "page-what-is-ethereum-cryptocurrency-tab-content-2": "Az olyan eszközöket, mint a bitcoin és az ether, azért nevezik „kriptovalutának”, mert a felhasználó adatainak és eszközeinek biztonságát a kriptográfia biztosítja, nem pedig az, hogy egy intézmény vagy vállalat tisztességesen kezeli-e azokat.", + "page-what-is-ethereum-cryptocurrency-tab-content-3": "Az Ethereum saját kriptovalutával, az etherrel (ETH) rendelkezik, mellyel a hálózaton végzett tranzakciókért fizetünk. Ezt az Ethereum hálózatán el lehet küldeni más felhasználóknak vagy át lehet váltani más tokenekre. Az ether azért különleges, mert ezzel fizetnek az Ethereum hálózatán végzett műveletekért, számítási kapacitásért, melyek elengedhetetlenek az alkalmazások és szervezetek fejlesztéséhez és működtetéséhez.", "page-what-is-ethereum-summary-title": "Összegzés", - "page-what-is-ethereum-summary-desc-1": "Az Ethereum egy olyan technológia, amellyel alkalmazásokat és szervezeteket lehet építeni, eszközöket tartani, tranzakciókat lebonyolítani és kommunikálni anélkül, hogy központi hatóság irányítaná őket. Az Ethereum használatához nem kell átadni személyes adatot – az Ethereum használatával Ön megtartja az ellenőrzést saját adatai és a megosztott adatok felett. Az Ethereum saját kriptovalutával rendelkezik, az Etherrel, amelyet az Ethereum hálózaton végzett bizonyos tevékenységekért való fizetésre használnak.", - "page-what-is-ethereum-summary-desc-2": "Még mindig nem érthető? Elmagyarázzuk lépésről lépésre.", - "page-what-is-ethereum-what-is-crypto-title": "Mi az a kriptovaluta?", - "page-what-is-ethereum-what-is-crypto-desc-1": "A kriptó (a kriptovaluta rövidítése) egy új, titkosított formája a digitális pénznek.", - "page-what-is-ethereum-what-is-crypto-desc-2": "A történet 2008-ban kezdődött a Bitcoinnal, amellyel bárhová, bárkinek küldhettünk pénzt világszerte. A kriptót az különböztette meg a normál banki átutalásoktól vagy más pénzügyi szolgáltatásoktól, mint a Paypal vagy az Alipay, hogy a tranzakciókban – ekkor először – nem vett rész közvetítő.", - "page-what-is-ethereum-what-is-crypto-desc-3": "Várjunk csak, mi az a közvetítő?", - "page-what-is-ethereum-what-is-crypto-desc-4": "A közvetítő egy központi hatóság, például egy bank vagy kormány, amely beavatkozik a feladó és a címzett közötti tranzakcióba. A közvetítőnek hatalmában áll megfigyelni, cenzúrázni vagy akár visszafordítani a tranzakciókat, és megoszthatja az Önről gyűjtött érzékeny adatokat harmadik felekkel. Gyakran azt is a közvetítő szabja meg, hogy Ön milyen pénzügyi szolgáltatásokhoz férhet hozzá.", - "page-what-is-ethereum-what-is-crypto-desc-5": "A kriptóval más a helyzet. A feladót és a címzettet a tranzakció közvetlenül kapcsolja össze, központi hatóság részvétele nélkül. Senki másnak nincs hozzáférése a pénzeszközeihez, és senki sem mondhatja meg, hogy milyen szolgáltatásokat vehet igénybe. Ezt a blokklánc technológia teszi lehetővé, amelyen a kriptovaluták működnek.", + "page-what-is-ethereum-summary-desc-1": "Az Ethereum egy olyan globális, számítógépekből álló hálózat, mely az Ethereum-protokollnak nevezett szabályrendszer alapján működik. Alapot biztosít közösségek, alkalmazások, szervezetek és digitális eszközök számára, melyeket bárki létrehozhat, megépíthet és használhat.", + "page-what-is-ethereum-summary-desc-2": "Ön is könnyedén készíthet magának egy Ethereum-számlát bárhol és bármikor, és felfedezheti az elérhető alkalmazásokat vagy megépítheti a sajátját. Ebben az a legfontosabb innováció, hogy nem egy központi hatóságra bízza magát, mely bármikor megváltoztathatja a szabályokat és korlátozhatja a hozzáférését.", + "page-what-is-ethereum-summary-desc-3": "Olvasson tovább a részletekért…", "page-what-is-ethereum-btc-eth-diff-title": "Mi a különbség az Ethereum és a Bitcoin között?", "page-what-is-ethereum-btc-eth-diff-1": "A 2015-ben elindított Ethereum a Bitcoin innovációjára épül, néhány nagyobb különbséggel.", "page-what-is-ethereum-btc-eth-diff-2": "Mindkettővel használhat digitális pénzt fizetési szolgáltatók vagy bankok ingénybevétele nélkül. Az Ethereum azonban programozható, így decentralizált alkalmazásokat is lehet építeni és telepíteni a hálózatán.", - "page-what-is-ethereum-btc-eth-diff-3": "Az Ethereum programozhatósága azt jelenti, hogy olyan alkalmazásokat készíthet, amelyek a blokkláncot használják az adatok tárolására vagy az alkalmazás által végezhető műveletek vezérlésére. Ez egy általános célú blokkláncot eredményez, amely bármire programozható. Mivel az Ethereumnak nincsenek korlátai, minden lehetőség adott, hogy nagy újítások történjenek az Ethereum hálózaton.", - "page-what-is-ethereum-btc-eth-diff-4": "Míg a Bitcoin csak egy fizetési hálózat, addig az Ethereum inkább a pénzügyi szolgáltatások, játékok, közösségi hálózatok és egyéb alkalmazások piactere, amelyek tiszteletben tartják a magánéletét és nem jogosultak ellenőrizni, cenzúrázni az Ön tevékenységét.", + "page-what-is-ethereum-btc-eth-diff-3": "A Bitcoin segítségével egyszerű üzeneteket válthatunk egymással arról, ami számunkra értékes. Ez a központi hatóság nélküli értékteremtés már önmagában is egy erőteljes megoldás. Az Ethereum a következőket fejleszti tovább: az üzeneteken felül bármilyen általános programot vagy szerződést létre lehet hozni. Ezek a szerződések bármire vonatkozhatnak, ezért az Ethereum hálózata rendkívüli innovációt jelent.", + "page-what-is-ethereum-btc-eth-diff-4": "Míg a Bitcoin csak egy fizetési hálózat, addig az Ethereum inkább a pénzügyi szolgáltatások, játékok, közösségi hálózatok és egyéb alkalmazások piactere.", "page-what-is-ethereum-what-can-eth-do-title": "Mire képes az Ethereum?", "page-what-is-ethereum-why-would-i-use-ethereum-title": "Miért használnám az Ethereumot?", - "page-what-is-ethereum-why-would-i-use-ethereum-1": "Ha valaha küldött már pénzt a tengerentúlra (vagy tervezi), ha valaha is aggódnia kellett vagyonának biztonsága miatt a lakóhelyén fennálló külső körülmények miatt, vagy ha elege van a hagyományos pénzügyi intézmények számtalan megkötéséből és hétköznapi tranzakciós díjaiból, akkor valószínűleg érdekelni fogja, amit a kriptopénzek nyújtani tudnak.", - "page-what-is-ethereum-why-would-i-use-ethereum-2": "Ne feledje, hogy az Ethereum története még javában íródik, és az idő múlásával és a technológia fejlődésével folyamatosan újabb és újabb okokat fedeznek fel a használatára.", + "page-what-is-ethereum-why-would-i-use-ethereum-1": "Ha szeretne rugalmasabb, nyitottabb és megbízhatóbb módon tevékenykedni globális szinten, szervezeteket alapítani, alkalmazásokat építeni és értéket megosztani másokkal, akkor az Ethereum Önnek való. Ezt a történetet együtt írjunk, fedezze hát fel, hogy milyen lenyűgöző világokat tudunk ezáltal létrehozni.", + "page-what-is-ethereum-why-would-i-use-ethereum-2": "Az Ethereum azoknak az embereknek is felbecsülhetetlen lehetőséget jelent, akiknek külső, elkerülhetetlen behatások miatt veszélybe került eszközeik biztonsága, stabilitása vagy mozgathatósága.", "page-what-is-ethereum-slide-1-title": "Olcsóbb és gyorsabb határokon átnyúló fizetések", "page-what-is-ethereum-slide-1-desc-1": "A stabil érmék újfajta kriptopénzek, melyek alapja egy állandóbb értékű pénzeszköz. Ezeknek nagy része az USA-dollárhoz kötött, ezért követi annak értékét. Ezek nagyon olcsó és stabil globális fizetési rendszert tesznek lehetővé. Sok jelenlegi stabil érme az Ethereum hálózatra épül.", "page-what-is-ethereum-slide-1-desc-2": "Az Ethereum és a stabil érmék leegyszerűsítik a tengerentúlra való pénzküldés folyamatát. Gyakran csak néhány percet vesz igénybe, hogy pénzeszközöket a világ bármely pontjára mozgassunk, szemben a több munkanapos vagy akár hetekig tartó átlagos banki tranzakciókkal, ráadásul az ár töredékéért. Emellett a nagy értékű tranzakciókért nem kell külön díjat fizetni, és nincsenek korlátozások arra vonatkozóan, hogy hová küld pénzt és miért.", @@ -61,26 +58,24 @@ "page-what-is-ethereum-slide-4-desc-1": "A mostanában megjelent „play-to-earn”, azaz „játsz, hogy keress” játékok (amelyekben a játékosok ténylegesen jutalmat kapnak a játékért) megváltoztatják a játékipart. A hagyományos játékokban tiltott a játékpénzeszközök valós pénzért való értékesítése, ez pedig a biztonsági kockázatot hordozó illegális oldalak felé tereli a játékosokat. A blokklánc alapú játékok viszont engedélyezik a játékon belüli kereskedelmet, és megbízható módon támogatják azt.", "page-what-is-ethereum-slide-4-desc-2": "Ráadásul a játékosokat az is ösztönzi, hogy a játékban lévő tokeneket valódi pénzre cserélhetik, és így valóban jutalmat kapnak a játékkal töltött időért.", "page-what-is-ethereum-meet-ether-title": "Íme az ether, az Ethereum kriptovalutája", - "page-what-is-ethereum-meet-ether-desc-1": "Az Ethereum saját kriptovalutával rendelkezik: ez az ether (ETH). Teljesen digitális formátumú, és bárkinek, bárhova azonnal elküldhető. Azt ETH mennyiségét nem szabályozza kormány vagy egy szervezet, azaz decentralizált és teljesen átlátható. Új érméket (más néven tokeneket) csak a hálózatot biztosító letétbe helyezőknek (stakerek) bocsátanak ki.", - "page-what-is-ethereum-meet-ether-desc-2": "Az Ethereum-hálózaton végrehajtott minden művelethez bizonyos mennyiségű számítási teljesítményre van szükség. Ennek a díját ether formájában kell kifizetni. Ez azt jelenti, hogy a hálózat használatához legalább egy kis mennyiségű ETH-ra van szükség.", + "page-what-is-ethereum-meet-ether-desc-1": "Az Ethereum hálózatán végzett műveletek az Ethereum beágyazott számítógépét használják (melyet Ethereum-virtuális gépnek, EVM-nek neveznek). Ezt a számítási kapacitás nem jár ingyen, az Ethereum saját kriptovalutájával, az etherrel (ETH) lehet érte fizetni. Ebből adódik, hogy a hálózat használatához mindenkinek rendelkeznie kell valamennyi etherrel.", + "page-what-is-ethereum-meet-ether-desc-2": "Az ether (ETH) teljesen digitális formátumú, és bárkinek, bárhova azonnal elküldhető. Az ETH mennyiségét nem szabályozza kormány vagy egy szervezet, azaz decentralizált és teljesen átlátható. A rendszer a protokoll szerint meghatározott módon, csak a letétbe helyezőknek (staker) bocsátja rendelkezésére az ethert – ők biztosítják a hálózatot.", "page-what-is-ethereum-what-is-ether": "Mi az ether?", "page-what-is-ethereum-get-eth": "ETH beszerzése", - "page-what-is-ethereum-what-can-i-do-title": "Mire tudom az ETH érméket használni?", - "page-what-is-ethereum-what-can-i-do-desc-1": "Mint kiderült: sok mindenre! Az Ethereum technológia egyik legjelentősebb felhasználási területe a decentralizált pénzügyek (DeFi), amely banki szolgáltatások egész területeit nyitja meg mindenki előtt, aki rendelkezik internetkapcsolattal. Az ethert fedezetként használhatja hitelfelvételhez, vagy likviditást biztosíthat, hogy kamatot kapjon a pénze után.", "page-what-is-ethereum-explore-applications": "Fedezze fel az alkalmazásokat", "page-what-is-ethereum-learn-defi": "Tudjon meg többet a DeFi-ról", "page-what-is-ethereum-who-runs-ethereum-title": "Ki üzemelteti az Ethereumot?", - "page-what-is-ethereum-who-runs-ethereum-desc-1": "Az Ethereumot nem egy szervezet irányítja. Kizárólag a közösség decentralizált részvétele és együttműködése révén létezik. Az Ethereum önkéntesek által üzemeltetett csomópontokat (az Ethereum blokklánc adatainak másolatával rendelkező számítógép) használ a nagy internetszolgáltatók és szolgáltatások tulajdonában lévő egyedi szerver- és felhőrendszerek helyettesítésére.", - "page-what-is-ethereum-who-runs-ethereum-desc-2": "Ezek az elosztott csomópontok, amelyeket magánszemélyek és vállalkozások üzemeltetnek szerte a világon, biztosítják az Ethereum hálózati infrastruktúrájának rugalmasságát. Ezért sokkal kevésbé sebezhető a hackerekkel vagy leállásokkal szemben. 2015-ös indulása óta az Ethereumnál még soha nem történt leállás. Az Ethereum hálózatát több ezer egyedi csomópont futtatja. Ez teszi az Ethereumot az egyik legdecentralizáltabb kriptovalutává: a bitcoin után a második helyen áll.", + "page-what-is-ethereum-who-runs-ethereum-desc-1": "Az Ethereum-hálózatot nem egy adott szervezet irányítja. Akkor létezik, amikor a hozzá kapcsolódó számítógépek az Ethereum-protokoll alapján futtatnak programokat és a felhasználók által létrehozott új tranzakciókat hozzáadják a blokklánchoz. Ezeket a számítógépeket nevezik csomópontoknak (node). Csomópontot bárki üzemeltethet, ugyanakkor a hálózat biztosításához mindenkinek ethert (ETH, az Ethereum saját valutája) kell lekötnie. Bárki, aki rendelkezik 32 ETH-rel, az további engedély nélkül megteheti ezt.", + "page-what-is-ethereum-who-runs-ethereum-desc-2": "Még az Ethereum programkódját sem egy adott szervezet hozza létre. Bárki javasolhat változásokat a protokollban és megvitathatja a további fejlesztéseket. A protokollban számtalan olyan változtatás van, melyet független szervezetek készítenek különféle programozási nyelveken, általában nyilvánosan építik azokat és bátorítják a közösségi hozzájárulást is.", "page-what-is-ethereum-run-a-node": "Csomópont futtatása", "page-what-is-ethereum-smart-contract-title": "Mi az az okosszerződés?", - "page-what-is-ethereum-smart-contract-desc-1": "Az okosszerződések egyszerűen számítógépes programok, amelyek az Ethereum blokkláncon működnek. Kizárólag akkor hajtódnak végre, ha egy felhasználó (vagy egy másik szerződés) tranzakciója kiváltja őket. Ezek teszik az Ethereumot nagyon rugalmassá abban, hogy mire képes, és megkülönböztetik más kriptovalutáktól. Ezeket a programokat nevezzük ma decentralizált alkalmazásoknak, vagy dappoknak.", + "page-what-is-ethereum-smart-contract-desc-1": "Az okosszerződések olyan számítógépes programok, amelyek az Ethereum-blokkláncon működnek. A felhasználók által indított tranzakció indítja el őket. Ezek ruházzák fel az Ethereumot rendkívül rugalmas képességekkel. Ezek a programok a decentralizált alkalmazások (dapp) és szervezetek építőkövei.", "page-what-is-ethereum-smart-contract-desc-2": "Használt már olyan terméket, amely megváltoztatta a szolgáltatási feltételeit? Vagy eltávolított egy olyan funkciót, amelyet hasznosnak talált? Amint egy okosszerződést közzétesznek az Ethereumban, az online és működőképes lesz, amíg az Ethereum létezik. Még a szerző sem tudja eltávolítani. Mivel az okosszerződések automatizáltak, nem tesznek különbséget egyetlen felhasználóval szemben sem, és mindig készen állnak a használatra.", - "page-what-is-ethereum-smart-contract-desc-3": "Az okosszerződések népszerű példái a lending appok, a decentralizált kereskedési tőzsdék, illetve a biztosítási és crowdfunding appok – gyakorlatilag bármi, ami csak eszébe jut.", + "page-what-is-ethereum-smart-contract-desc-3": "Okosszerződés például a kölcsönszolgáltató alkalmazás, a decentralizált tőzsde, a biztosítási szolgáltatás, a kvadratikus finanszírozás (közjavak demokratikus finanszírozása), a közösségi hálózatok, a nem helyettesíthető tokenekkel (NFT) kapcsolatos szolgáltatások – gyakorlatilag bármi, ami csak az eszébe jut.", "page-what-is-ethereum-more-on-smart-contracts": "További információ az okosszerződésekről", "page-what-is-ethereum-explore-dapps": "Fedezze fel a dappokat", "page-what-is-ethereum-criminal-activity-title": "Úgy hallottam, hogy a kriptót bűncselekmények eszközeként használják. Ez igaz?", - "page-what-is-ethereum-criminal-activity-desc-1": "Mint minden más pénzzel, az ether egy részével is visszaélnek. Mivel azonban minden Ethereum-tranzakció egy nyílt blokkláncon történik, a hatóságok számára gyakran könnyebb nyomon követni a tiltott tevékenységet, mint a hagyományos pénzügyi rendszerben, ami vitathatatlanul kevésbé vonzóvá teszi az Ethereumot azok számára, akik inkább észrevétlenül maradnának.", + "page-what-is-ethereum-criminal-activity-desc-1": "Mint minden más technológiával, a kriptóval is vissza lehet néha élni. Mivel azonban minden Ethereum-tranzakció egy nyilvános blokkláncon történik, a hatóságok számára könnyebb nyomon követni a tiltott tevékenységet, mint a hagyományos pénzügyi rendszerben. Ez kevésbé vonzóvá teszi az Ethereumot azok számára, akik inkább észrevétlenül maradnának.", "page-what-is-ethereum-criminal-activity-desc-2": "Az Europol, az Európai Unió bűnüldözési együttműködési ügynöksége által nemrégiben készített jelentés főbb megállapításai szerint a kriptovalutákat sokkal kevésbé használják bűncselekményi célokra, mint a fiat valutákat:", "page-what-is-ethereum-criminal-activity-desc-3": "„Úgy tűnik, hogy a kriptovaluták tiltott tevékenységekre való felhasználása a teljes kriptovaluta-gazdaságnak csak egy kis részét teszi ki, és kisebbnek tűnik, mint a hagyományos pénzügyi tranzakciókban érintett tiltott pénzeszközök összege.”", "page-what-is-ethereum-energy-title": "Mi a helyzet az Ethereum energiafogyasztásával?", @@ -88,11 +83,31 @@ "page-what-is-ethereum-energy-desc-2": "A Merge volt az Ethereum legnagyobb frissítése, amely 99,95%-kal csökkentette az Ethereum biztonságának fenntartásához szükséges energiafogyasztást, így biztonságosabb hálózatot hozva létre sokkal kisebb szénköltséggel. Az Ethereum mostantól alacsony szén-dioxid-kibocsátású blokklánc, miközben növelte a biztonságosságát és a skálázhatóságát.", "page-what-is-ethereum-more-on-energy-consumption": "További információ az energiafogyasztásról", "page-what-is-ethereum-energy-consumption-chart-legend": "Éves energiafogyasztás TWh/évben", + "energy-consumption-chart-global-data-centers-label": "Globális adatközpontok", + "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-airbnb-label": "AirBnB", + "energy-consumption-chart-paypal-label": "PayPal", + "energy-consumption-chart-eth-pos-label": "ETH PoS", "page-what-is-ethereum-the-merge-update": "A Merge frissítés", - "page-what-is-ethereum-additional-reading": "További olvasnivalók", + "page-what-is-ethereum-additional-reading": "További olvasnivaló", "page-what-is-ethereum-week-in-ethereum": "Ethereum heti hírek", "page-what-is-ethereum-week-in-ethereum-desc": "– Heti hírlevél az ökoszisztéma legfontosabb fejleményeiről.", + "page-what-is-ethereum-kernel-dreamers": "Rendszermag", + "page-what-is-ethereum-kernel-dreamers-desc": "Az Ethereum álma", "page-what-is-ethereum-atoms-institutions-blockchains": "Atomok, intézmények, blokkláncok", "page-what-is-ethereum-atoms-institutions-blockchains-desc": "– Miért fontosak a blokkláncok?", - "page-what-is-ethereum-ethereum-in-numbers-title": "Az Ethereum számokban" + "page-what-is-ethereum-ethereum-in-numbers-title": "Az Ethereum számokban", + "adoption-chart-column-now-label": "Most", + "adoption-chart-investors-label": "Befektetők", + "adoption-chart-developers-label": "Fejlesztők", + "adoption-chart-companies-label": "Vállalatok", + "adoption-chart-artists-label": "Művészek", + "adoption-chart-musicians-label": "Zenészek", + "adoption-chart-writers-label": "Írók", + "adoption-chart-gamers-label": "Játékosok", + "adoption-chart-refugees-label": "Menekültek" } diff --git a/src/intl/hu/template-usecase.json b/src/intl/hu/template-usecase.json index 7d8f7fdcaab..0550b9c2ea2 100644 --- a/src/intl/hu/template-usecase.json +++ b/src/intl/hu/template-usecase.json @@ -4,6 +4,8 @@ "template-usecase-dropdown-dao": "Decentralizált autonóm szervezetek (DAO-k)", "template-usecase-dropdown-social-networks": "Nem központosított közösségi hálózatok", "template-usecase-dropdown-identity": "Nem központilag kibocsájtott identitás", + "template-usecase-dropdown-desci": "Nem központosított kutatás (DeSci)", + "template-usecase-dropdown-refi": "Regeneratív pénzügyek (ReFi)", "template-usecase-dropdown": "Ethereum-esettanulmányok", "template-usecase-banner": "Az Ethereum felhasználása folyamatosan bővül és fejlődik. Egészítse ki bármilyen információval, ha úgy gondolja, hogy azzal érthetőbbé vagy aktuálisabbá válhat az oldal.", "template-usecase-edit-link": "Oldal szerkesztése", diff --git a/src/intl/hy-am/page-wallets-find-wallet.json b/src/intl/hy-am/page-wallets-find-wallet.json index 297f49fce38..9f908097ccf 100644 --- a/src/intl/hy-am/page-wallets-find-wallet.json +++ b/src/intl/hy-am/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Հատկանիշային ֆիլտրներ", "page-find-wallet-footnote-1": "Այս էջում նշված դրամապանակների անունները տրվել են միմիայն տեղեկատվական նպատակներով:", "page-find-wallet-footnote-2": "Դրանց նկարագրությունը տրվել է դրանց հիմքում ընկած նախագծերի կողմից", - "page-find-wallet-footnote-3": "Մենք արտադրանքի անուն ավելացնում ենք հիմնվելով ցուցակագրման քաղաքականության չափանիշների վրա: Եթե ցանկանում եք, որ մենք այդ ցուցակում որևէ դրամապանակ ավելացնենք Գիթհաբում բարձրացրեք այդ հարցը:", + "page-find-wallet-footnote-3": "Մենք արտադրանքի անուն ավելացնում ենք հիմնվելով ցուցակագրման քաղաքականության չափանիշների վրա: Եթե ցանկանում եք, որ մենք այդ ցուցակում որևէ դրամապանակ ավելացնենք Գիթհաբում բարձրացրեք այդ հարցը:", "page-find-wallet-mobile": "Բջջային", "page-find-wallet-mobile-desc": "Բջջային հավելվածներով Դրամապանակներ", "page-find-wallet-desktop": "Դեսքթոփ", diff --git a/src/intl/id/learn-quizzes.json b/src/intl/id/learn-quizzes.json index f636873e9a2..ffc610c4f7b 100644 --- a/src/intl/id/learn-quizzes.json +++ b/src/intl/id/learn-quizzes.json @@ -1,3 +1,328 @@ { - "page-assets-merge": "Penggabungan" + "add-quiz": "Tambahkan pertanyaan/kuis", + "average-score": "Skor rata-rata:", + "basics": "Dasar-Dasar Ethereum", + "basics-description": "Bagian ini mencakup konsep dasar Ethereum, untuk memastikan Anda memiliki fondasi yang kuat.", + "completed": "Selesai:", + "community-stats": "Statistik komunitas", + "contribute": "Berkontribusi ke perpustakaan kami.", + "correct": "Benar", + "explanation": "Penjelasan", + "next-question": "Pertanyaan berikutnya", + "next-quiz": "Kuis berikutnya", + "page-assets-merge": "Penggabungan", + "passed": "Anda lulus kuis!", + "questions": "Pertanyaan", + "questions-answered": "Pertanyaan terjawab:", + "quizzes-subtitle": "Cari tahu seberapa baik Anda memahami Ethereum dan mata uang kripto. Apakah Anda siap menjadi seorang ahli?", + "retry": "Tingkat percobaan ulang:", + "score": "Skor", + "see-results": "Lihat hasil", + "share-results": "Bagikan hasil", + "start": "Mulai", + "submit-answer": "Periksa jawaban", + "test-your-knowledge": "Uji pengetahuan Ethereum Anda", + "try-again": "Coba lagi", + "using-ethereum": "Menggunakan Ethereum", + "using-ethereum-description": "Selami aplikasi Ethereum di dunia nyata dan temukan bagaimana platform rantai blok revolusioner ini membentuk ulang industri. Ini adalah cara yang bagus untuk memastikan Anda memahami berbagai hal dengan cukup baik sebelum mulai menggunakan mata uang kripto secara aktif.", + "want-more-quizzes": "Ingin melihat lebih banyak kuis di sini?", + "your-results": "Hasil Anda", + "your-total": "Total poin Anda", + "a001-prompt": "Perbedaan terbesar antara Ethereum dan Bitcoin adalah:", + "a001-a-label": "Ethereum tidak memungkinkan Anda untuk melakukan pembayaran kepada orang lain", + "a001-a-explanation": "Baik Bitcoin maupun Ethereum memungkinkan Anda untuk melakukan pembayaran kepada orang lain.", + "a001-b-label": "Anda dapat menjalankan program komputer di Ethereum", + "a001-b-explanation": "Ethereum dapat diprogram. Hal ini berarti Anda dapat menempatkan program komputer apa pun di rantai blok Ethereum.", + "a001-c-label": "Anda dapat menjalankan program komputer di Bitcoin", + "a001-c-explanation": "Tidak seperti Ethereum, Bitcoin tidak dapat diprogram dan tidak dapat menjalankan program komputer sembarangan.", + "a001-d-label": "Mereka memiliki logo yang berbeda", + "a001-d-explanation": "Memang, keduanya memiliki logo yang berbeda! Namun, perbedaan terbesar antara keduanya bukan hanya sebatas itu.", + "a002-prompt": "Mata uang kripto asli Ethereum disebut:", + "a002-a-label": "Ether", + "a002-a-explanation": "Ether adalah mata uang kripto asli dari jaringan Ethereum.", + "a002-b-label": "Ethereum", + "a002-b-explanation": "Meskipun Ethereum adalah sebuah rantai blok, namun mata uang kripto aslinya tidak disebut Ethereum. Ini adalah kesalahpahaman umum.", + "a002-c-label": "Ethercoin", + "a002-c-explanation": "Tidak seperti kebanyakan mata uang kripto lainnya, mata uang kripto asli Ethereum tidak mengandung kata 'coin'.", + "a002-d-label": "Bitcoin", + "a002-d-explanation": "Bitcoin (ditulis dengan huruf besar B) adalah rantai blok pertama yang diciptakan, sedangkan bitcoin (ditulis dengan huruf kecil B) adalah mata uang kripto aslinya.", + "a003-prompt": "Siapa pencipta Ethereum?", + "a003-a-label": "Developer", + "a003-a-explanation": "Pengembang sangat penting dalam membangun dan meningkatkan Ethereum, namun bukan mereka yang menjaga agar Ethereum tetap berjalan.", + "a003-b-label": "Penambang", + "a003-b-explanation": "Menambang mata uang kripto tidak lagi dimungkinkan setelah Penggabungan. Saat ini tidak ada 'penambang' di Ethereum.", + "a003-c-label": "Ethereum Foundation", + "a003-c-explanation": "Ethereum Foundation tidak memainkan peran penting dalam pengoperasian simpul Ethereum sehari-hari.", + "a003-d-label": "Siapa pun yang menjalankan simpul", + "a003-d-explanation": "Setiap orang yang menjalankan simpul merupakan bagian penting dari infrastruktur Ethereum. Jika Anda belum melakukannya, pertimbangkan untuk menjalankan simpul Ethereum.", + "a004-prompt": "Sejak Ethereum diluncurkan, berapa kali jaringannya offline?", + "a004-a-label": "Tidak pernah", + "a004-b-label": "Sekali", + "a004-c-label": "Empat kali", + "a004-d-label": "Lebih dari sepuluh kali", + "a004-explanation": "Ethereum tidak pernah benar-benar offline (berhenti memproduksi blok) sejak diluncurkan.", + "a005-prompt": "Ethereum mengonsumsi lebih banyak listrik dibandingkan dengan:", + "a005-a-label": "Penambangan emas", + "a005-a-explanation": "Penambangan emas menggunakan ~131 Terawatt jam per tahun. Ethereum menggunakan sekitar 0,0026 Terawatt jam per tahun.", + "a005-b-label": "Netflix", + "a005-b-explanation": "Netflix menggunakan ~0,451 Terawatt jam per tahun. Ethereum menggunakan sekitar 0,0026 Terawatt jam per tahun.", + "a005-c-label": "PayPal", + "a005-c-explanation": "PayPal menggunakan ~0,26 Terawatt jam per tahun. Ethereum menggunakan sekitar 0,0026 Terawatt jam per tahun.", + "a005-d-label": "Tidak ada dari yang disebutkan di atas", + "a005-d-explanation": "Ethereum menggunakan sekitar 0,0026 Terawatt jam per tahun. Lebih kecil dari penambangan emas (~131 TWh/tahun), Netflix (~0,451 TWh/tahun), dan Paypal (~0,26 TWh/tahun).", + "b001-prompt": "Ether juga dikenal sebagai:", + "b001-a-label": "ETC", + "b001-a-explanation": "ETC adalah kode singkatan untuk Ethereum Classic.", + "b001-b-label": "ETR", + "b001-b-explanation": "ETR bukan kode singkatan untuk Ether atau mata uang kripto penting lainnya.", + "b001-c-label": "ETH", + "b001-c-explanation": "ETH adalah kode singkatan untuk ether di Ethereum.", + "b001-d-label": "BTC", + "b001-d-explanation": "BTC adalah kode singkatan untuk bitcoin di jaringan Bitcoin.", + "b002-prompt": "Di Ethereum, biaya jaringan dibayarkan:", + "b002-a-label": "bitcoin", + "b002-a-explanation": "Huruf kecil \"bitcoin\" adalah mata uang kripto asli dari jaringan Bitcoin.", + "b002-b-label": "ETH", + "b002-b-explanation": "Ether (ETH) adalah mata uang kripto asli Ethereum. Semua biaya jaringan di Ethereum dibayarkan dalam ETH.", + "b002-c-label": "USD", + "b002-c-explanation": "Tidak mungkin untuk membayar biaya jaringan di Ethereum dalam USD (Dolar AS), atau mata uang FIAT lainnya.", + "b002-d-label": "Ethereum", + "b002-d-explanation": "Ethereum adalah jaringannya, tetapi biaya jaringan Ethereum dibayarkan dalam ETH.", + "b003-prompt": "Penaruhan di Ethereum membantu mengamankan jaringan karena:", + "b003-a-label": "Penaruh dapat melarang orang jika mereka tidak menyukai apa yang mereka lakukan", + "b003-a-explanation": "Penaruh tidak dapat menyensor pengguna secara sewenang-wenang.", + "b003-b-label": "Jika seorang penaruh mencoba menipu jaringan, mereka berisiko kehilangan ETH mereka", + "b003-b-explanation": "Penaruh berisiko kehilangan sejumlah besar ETH jika mereka terbukti berperilaku jahat terhadap jaringan. Hal ini dikenal sebagai pemotongan.", + "b003-c-label": "Penaruh menjalankan komputer yang kuat untuk mendemonstrasikan bukti kerja", + "b003-c-explanation": "Penaruh tidak membutuhkan perangkat keras yang kuat untuk melakukan penaruhan ETH mereka. Ethereum berhenti menggunakan bukti kerja di Penggabungan.", + "b003-d-label": "Penaruh menjalani KYC sebelum diterima sebagai validator", + "b003-d-explanation": "Penaruhan di Ethereum tidak memerlukan izin dan tidak memerlukan KYC.", + "b004-prompt": "ETH berharga karena:", + "b004-a-label": "ETH diperlukan untuk melakukan apa pun di Ethereum", + "b004-a-explanation": "Jawaban ini sebagian benar, tetapi ini hanya salah satu alasan mengapa ETH sangat berharga.", + "b004-b-label": "ETH adalah uang peer-to-peer yang tidak dapat disensor", + "b004-b-explanation": "Jawaban ini sebagian benar, tetapi ini hanya salah satu alasan mengapa ETH sangat berharga.", + "b004-c-label": "ETH digunakan sebagai jaminan untuk pinjaman kripto", + "b004-c-explanation": "Jawaban ini sebagian benar, tetapi ini hanya salah satu alasan mengapa ETH sangat berharga.", + "b004-d-label": "Semua hal di atas", + "b004-d-explanation": "Transaksi Ethereum tidak dapat disensor, ETH diperlukan untuk melakukan transaksi apa pun di Ethereum, dan sangat penting untuk stabilitas ekosistem DeFi.", + "c001-prompt": "Web3 memungkinkan pengguna untuk memiliki aset digital secara langsung:", + "c001-a-label": "DAO", + "c001-a-explanation": "DAO (Organisasi otonom terdesentralisasi) adalah komunitas yang dimiliki oleh anggota tanpa kepemimpinan terpusat.", + "c001-b-label": "NFT", + "c001-b-explanation": "NFT (Token Non-Fungible) menyediakan cara untuk mewakili segala sesuatu yang unik sebagai aset berbasis Ethereum.", + "c001-c-label": "ENS", + "c001-c-explanation": "ENS (Layanan Nama Ethereum) adalah layanan penamaan terdesentralisasi untuk rantai blok Ethereum.", + "c001-d-label": "GitHub", + "c001-d-explanation": "GitHub adalah platform terpusat, utamanya digunakan untuk menyimpan kode dengan menggunakan kontrol versi terdistribusi. GitHub tidak memungkinkan kepemilikan data atau aset digital Anda.", + "c002-prompt": "Web1 adalah mode baca saja, Web2 adalah mode baca-tulis, dan Web3 telah dijelaskan sebagai:", + "c002-a-label": "mode baca-tulis-jual", + "c002-a-explanation": "Web3 belum dijelaskan dengan cara ini.", + "c002-b-label": "baca-tulis-simpan", + "c002-b-explanation": "Web3 belum dijelaskan dengan cara ini.", + "c002-c-label": "baca-tulis-miliki", + "c002-c-explanation": "Web3 memungkinkan pengguna memiliki data mereka dan oleh karena itu telah dijelaskan sebagai 'baca-tulis-miliki', yang merupakan perbaikan dari Web2 yang hanya 'baca-tulis'.", + "c002-d-label": "baca-tulis-beli", + "c002-d-explanation": "Web3 belum dijelaskan dengan cara ini.", + "c003-prompt": "Iterasi web mana yang tidak mengandalkan penyedia pembayaran pihak ketiga?", + "c003-a-label": "Web1", + "c003-a-explanation": "Web1 tidak memiliki pembayaran asli yang terintegrasi.", + "c003-b-label": "Web2", + "c003-b-explanation": "Web2 tidak memiliki pembayaran asli yang terintegrasi.", + "c003-c-label": "Web3", + "c003-c-explanation": "Web3 memiliki pembayaran asli yang terintegrasi dengan mata uang kripto, seperti ETH.", + "c003-d-label": "Semua hal di atas", + "c003-d-explanation": "Web1 dan Web2 tidak memiliki pembayaran asli yang terintegrasi.", + "c004-prompt": "Istilah 'Web3' pertama kali di perkenalkan oleh:", + "c004-a-label": "Gavin Wood", + "c004-a-explanation": "Gavin Wood, salah satu pendiri Ethereum, diakui sebagai orang yang pertama kali menciptakan istilah Web3 tak lama setelah Ethereum diluncurkan pada tahun 2015.", + "c004-b-label": "Steve Jobs", + "c004-b-explanation": "Steve Jobs tidak menciptakan frasa 'Web3'.", + "c004-c-label": "Vitalik Buterin", + "c004-c-explanation": "Vitalik Buterin, meskipun pendiri asli Ethereum, tidak menciptakan frasa 'Web3'.", + "c004-d-label": "Elon Musk", + "c004-d-explanation": "Elon Musk tidak menciptakan frasa 'Web3'.", + "c005-prompt": "Anda dapat memiliki satu login yang tidak dapat disensor di seluruh web melalui penggunaan:", + "c005-a-label": "Masuk degan Facebook", + "c005-a-explanation": "Masuk dengan Facebook tidak tahan sensor.", + "c005-b-label": "Masuk dengan Google", + "c005-b-explanation": "Masuk dengan Google bukanlah cara yang aman atau ideal untuk menggunakan crypto.", + "c005-c-label": "Masuk dengan Ethereum", + "c005-c-explanation": "Masuk dengan Ethereum adalah satu-satunya opsi yang tahan sensor di aplikasi web mana pun.", + "c005-d-label": "Masuk dengan Twitter", + "c005-d-explanation": "Masuk dengan Twitter bukanlah cara yang aman atau ideal untuk menggunakan crypto.", + "d001-prompt": "Jenis dompet yang paling aman adalah:", + "d001-a-label": "Dompet seluler", + "d001-a-explanation": "Dompet seluler menyimpan kunci pribadi di perangkat seluler, yang umumnya memiliki koneksi internet, dan berpotensi rentan terhadap perangkat lunak lain yang dapat membahayakan keamanannya.", + "d001-b-label": "Dompet perangkat keras", + "d001-b-explanation": "Kunci pribadi dari dompet perangkat keras disimpan pada perangkat khusus yang dapat dijaga agar tidak terhubung dengan internet dan terisolasi dari aplikasi lain pada perangkat Anda.", + "d001-c-label": "Dompet web", + "d001-c-explanation": "Web wallets memiliki tingkat keamanan yang lebih rendah dibandingkan dengan hardware wallet karena kunci pribadi disimpan pada perangkat yang terhubung dengan internet.", + "d001-d-label": "Dompet desktop", + "d001-d-explanation": "Desktop wallet Menyimpan kunci pribadi pada hard drive komputer, yang umumnya memiliki koneksi internet, dan berpotensi rentan terhadap perangkat lunak lain yang dapat membahayakan keamanannya.", + "d002-prompt": "Dari pilihan yang disajikan, mana yang merupakan cara penyimpanan frase benih yang paling aman?", + "d002-a-label": "Dalam sebuah foto di ponsel Anda", + "d002-a-explanation": "Ini bukan pilihan yang paling aman. Jika foto ini diunggah ke penyimpanan cloud, maka seorang peretas mendapatkan gambar ini dan memperoleh akses ke akun Anda.", + "d002-b-label": "Dalam sebuah berkas di komputer Anda", + "d002-b-explanation": "Ini bukan pilihan yang paling aman. Para peretas semakin banyak mencari informasi terkait mata uang kripto pada perangkat target. Jika seorang peretas mengakses berkas dengan rangkaian frase benih Anda, mereka akan mendapatkan akses ke akun Anda.", + "d002-c-label": "Ditulis di atas kertas", + "d002-c-explanation": "Dari pilihan yang tersedia, menuliskan rangkaian frase benih Anda di atas kertas adalah yang paling aman.", + "d002-d-label": "Melalui pesan teks kepada anggota keluarga yang dipercayai", + "d002-d-explanation": "Sebaiknya jangan mengirimkan rangkaian frase benih melalui pesan teks kepada siapa pun. Pesan tersebut bisa diintersepsi oleh pihak ketiga, dan meskipun Anda sepenuhnya mempercayai orang tersebut, Anda tidak tahu siapa saja yang dapat mengakses ponsel mereka.", + "d003-prompt": "Kepada siapa Anda harus memberikan frase benih / kunci pribadi Anda?", + "d003-a-label": "Seseorang yang Anda bayar", + "d003-a-explanation": "Anda tidak boleh memberikan frase benih atau kunci pribadi Anda kepada siapa pun. Sebagai gantinya, kirimkan token ke alamat dompet mereka melalui sebuah transaksi.", + "d003-b-label": "Untuk masuk ke dapp atau dompet", + "d003-b-explanation": "Anda tidak boleh memberikan frase benih / kunci pribadi anda untuk masuk ke dalam dompet atau dapp Anda.", + "d003-c-label": "Staf pendukung", + "d003-c-explanation": "Anda tidak boleh memberikan frase benih / kunci pribadi Anda kepada siapa pun yang mengaku sebagai staf pendukung. Siapa pun yang meminta hal ini kepada Anda adalah penipu.", + "d003-d-label": "Tidak ada", + "d003-d-explanation": "Idealnya, Anda tidak boleh memberikan frase benih atau kunci pribadi Anda kepada siapa pun. Jika Anda mempercayai seseorang yang memiliki akses mutlak terhadap dana Anda (seperti pasangan), maka Anda dapat memutuskan untuk berbagi informasi ini dengan mereka.", + "d004-prompt": "Dompet dan akun di Ethereum adalah hal yang sama.", + "d004-a-label": "Benar", + "d004-a-explanation": "Dompet adalah antarmuka visual yang digunakan untuk berinteraksi dengan akun Ethereum.", + "d004-b-label": "Salah", + "d004-b-explanation": "Dompet adalah antarmuka visual yang digunakan untuk berinteraksi dengan akun Ethereum.", + "e001-prompt": "Mengapa Anda harus menggunakan kata sandi unik untuk semua akun Anda?", + "e001-a-label": "Jika salah satu platform mengalami pelanggaran data", + "e001-a-explanation": "Jawaban ini benar, tetapi ada juga jawaban lain yang benar.", + "e001-b-label": "Seandainya ada orang yang mengintip dari balik bahu Anda untuk mengetahui kata sandi Anda", + "e001-b-explanation": "Jawaban ini benar, tetapi ada juga jawaban lain yang benar.", + "e001-c-label": "Jika malware, seperti pencatat kunci, mencuri kata sandi Anda", + "e001-c-explanation": "Jawaban ini benar, tetapi ada juga jawaban lain yang benar.", + "e001-d-label": "Semua hal di atas", + "e001-d-explanation": "Semua jawaban benar. Menggunakan kata sandi yang unik adalah cara terbaik untuk mencegah orang lain mengakses akun Anda.", + "e002-prompt": "Setelah Penggabungan, ETH harus ditingkatkan ke ETH2.", + "e002-a-label": "Benar", + "e002-a-explanation": "Anda tidak perlu meningkatkah ETH Anda ke ETH2. Tidak ada ETH2 dan ini adalah narasi umum yang digunakan oleh penipu.", + "e002-b-label": "Salah", + "e002-b-explanation": "Anda tidak perlu meningkatkah ETH Anda ke ETH2. Tidak ada ETH2 dan ini adalah narasi umum yang digunakan oleh penipu.", + "e003-prompt": "Hadiah ETH adalah:", + "e003-a-label": "Cara yang baik untuk mendapatkan lebih banyak ETH", + "e003-a-explanation": "Hadiah ETH adalah penipuan yang dirancang untuk mencuri ETH Anda dan token lainnya. Ini bukanlah cara yang baik untuk mendapatkan lebih banyak ETH.", + "e003-b-label": "Selalu asli", + "e003-b-explanation": "Hadiah ETH tidak pernah asli.", + "e003-c-label": "Umumnya dilakukan oleh anggota komunitas terkemuka", + "e003-c-explanation": "Anggota komunitas terkemuka tidak memberikan hadiah ETH. Para penipu berpura-pura menjadi orang terkenal, seperti Elon Musk, yang memberikan hadiah untuk memberikan kesan legitimasi pada penipuan mereka.", + "e003-d-label": "Sangat mungkin merupakan penipuan", + "e003-d-explanation": "Hadiah ETH selalu merupakan penipuan. Melaporkan dan mengabaikan penipu adalah yang terbaik.", + "e004-prompt": "Transaksi Ethereum dapat dibatalkan.", + "e004-a-label": "Benar", + "e004-a-explanation": "Transaksi Ethereum tidak dapat dibatalkan. Siapa pun yang memberi tahu Anda sebaliknya mungkin mencoba menipu Anda.", + "e004-b-label": "Salah", + "e004-b-explanation": "Transaksi Ethereum tidak dapat dibatalkan. Siapa pun yang memberi tahu Anda sebaliknya mungkin mencoba menipu Anda.", + "f001-prompt": "NFT didefinisikan secara paling komprehensif sebagai:", + "f001-a-label": "aset digital yang unik", + "f001-a-explanation": "NFT merupakan aset digital yang unik.", + "f001-b-label": "karya seni digital", + "f001-b-explanation": "NFT merupakan aset digital yang unik, biasanya berupa karya seni digital, tetapi tidak terbatas pada karya seni.", + "f001-c-label": "tiket ke aksi eksklusif", + "f001-c-explanation": "NFT mewakili aset digital yang unik, ini bisa berupa sistem tiket, tetapi tidak terbatas pada tiket.", + "f001-d-label": "kontrak yang mengikat secara hukum", + "f001-d-explanation": "Meskipun kontrak legal dapat direpresentasikan sebagai NFT, NFT tidak eksklusif untuk kontrak yang mengikat secara hukum.", + "f002-prompt": "Dua NFT yang mewakili karya seni yang sama adalah hal yang sama.", + "f002-a-label": "Benar", + "f002-a-explanation": "NFT tidak dapat dipertukarkan. Ini berarti meskipun mewakili karya seni digital, NFT tetap dapat diidentifikasi secara unik. Dalam dunia seni tradisional, hal ini mungkin serupa dengan karya seni asli dan cetakan.", + "f002-b-label": "Salah", + "f002-b-explanation": "NFT tidak dapat dipertukarkan. Ini berarti meskipun mewakili karya seni digital, NFT tetap dapat diidentifikasi secara unik. Dalam dunia seni tradisional, hal ini mungkin serupa dengan karya seni asli dan cetakan.", + "f003-prompt": "NFT paling sering diwakili:", + "f003-a-label": "Kata sandi ke dompet Anda", + "f003-a-explanation": "Ini adalah risiko keamanan dan secara umum merupakan ide yang buruk!", + "f003-b-label": "Kepemilikan atas barang digital yang unik", + "f003-b-explanation": "NFT biasanya mewakili kepemilikan barang digital yang unik.", + "f003-c-label": "Saldo ETH Anda saat ini", + "f003-c-explanation": "NFT tidak dapat mewakili saldo ETH Anda secara sewenang-wenang.", + "f003-d-label": "Semua hal di atas", + "f003-d-explanation": "NFT umumnya mewakili kepemilikan atas barang digital unik, bukan saldo ETH atau kata sandi dompet.", + "f004-prompt": "NFT telah membantu menciptakan hal baru:", + "f004-a-label": "kurator ekonomi", + "f004-a-explanation": "NFT telah membantu menciptakan ekonomi baru bagi para pencipta, bukan kurator.", + "f004-b-label": "ekonomi karbon", + "f004-b-explanation": "NFT membantu menciptakan ekonomi baru bagi para pembuat, bukan karbon.", + "f004-c-label": "pembuat ekonomi", + "f004-c-explanation": "NFT telah membantu para pembuat ekonomi.", + "f004-d-label": "doge ekonomi", + "f004-d-explanation": "NFT telah membantu menciptakan ekonomi baru bagi para pembuat, bukan doge 🐶.", + "f005-prompt": "NFT di Ethereum berdampak negatif pada lingkungan", + "f005-a-label": "Benar", + "f005-a-explanation": "Sejak Penggabungan (transisi ke bukti taruhan), setiap transaksi telah memiliki dampak yang tidak signifikan pada lingkungan.", + "f005-b-label": "Salah", + "f005-b-explanation": "Sejak Penggabungan (transisi ke bukti taruhan), setiap transaksi telah memiliki dampak yang tidak signifikan pada lingkungan.", + "g001-prompt": "Jaringan rantai blok lapisan ke-2 digunakan untuk:", + "g001-a-label": "Penskalaan Ethereum", + "g001-a-explanation": "Tujuan utama dari rollup dan solusi lapisan ke-2 lainnya adalah untuk penskalaan pada Ethereum.", + "g001-b-label": "Melakukan pembayaran", + "g001-b-explanation": "Tujuan utama dari rollup dan solusi lapisan ke-2 lainnya adalah untuk penskalaan pada Ethereum.", + "g001-c-label": "Pembelian NFT", + "g001-c-explanation": "Tujuan utama dari rollup dan solusi lapisan ke-2 lainnya adalah untuk penskalaan pada Ethereum.", + "g001-d-label": "Desentralisasi Ethereum", + "g001-d-explanation": "Tujuan utama dari rollup dan solusi lapisan ke-2 lainnya adalah untuk penskalaan pada Ethereum.", + "g002-prompt": "Untuk melakukan penskalaan Ethereum, sebagian besar alternatif di jaringan lapisan ke-1 pada umumnya telah mengorbankan pada:", + "g002-a-label": "Keamanan", + "g002-a-explanation": "Sebagian besar jaringan Lapisan ke-1 alternatif mengorbankan keamanan dan hal lainnya untuk melakukan penskalaan.", + "g002-b-label": "Desentralisasi", + "g002-b-explanation": "Sebagian besar jaringan Lapisan ke-1 alternatif mengorbankan desentralisasi dan sesuatu yang lain untuk melakukan penskalaan.", + "g002-c-label": "Harga token", + "g002-c-explanation": "Harga token tidak memiliki dampak pada kemampuan penskalaan.", + "g002-d-label": "Keamanan dan desentralisasi", + "g002-d-explanation": "Sebagian besar jaringan Lapisan 1 alternatif mengorbankan baik keamanan maupun desentralisasi untuk melakukan penskalaan.", + "g003-prompt": "Mana dari hal berikut yang tidak dianggap sebagai lapisan ke-2?", + "g003-a-label": "Validium", + "g003-a-explanation": "Validium tidak dianggap sebagai solusi lapisan ke-2 karena mereka tidak mengambil keamanan atau ketersediaan data dari Ethereum", + "g003-b-label": "Sidechain", + "g003-b-explanation": "Rantai samping tidak dianggap sebagai solusi lapisan ke-2 karena mereka tidak mengambil keamanan atau ketersediaan data dari Ethereum.", + "g003-c-label": "Alternatif rantai blok lapisan ke-1", + "g003-c-explanation": "Rantai blok Lapisan ke-1 alternatif tidak dianggap sebagai solusi lapisan ke-2.", + "g003-d-label": "Semua hal di atas", + "g003-d-explanation": "Validium, Rantai samping, dan rantai blok lapisan ke-1 alternatif tidak dianggap sebagai solusi lapisan ke-2 karena mereka tidak mengambil keamanan atau ketersediaan data dari Ethereum.", + "g004-prompt": "Mengapa Ethereum tidak memiliki lapisan ke-2 'resmi'?", + "g004-a-label": "Pengembang inti terlalu sibuk bekerja pada Ethereum", + "g004-a-explanation": "Tidak ada rencana untuk lapisan ke-2 'resmi' di Ethereum karena kita akan mendapatkan manfaat dari berbagai pendekatan dalam merancang solusi lapisan ke-2.", + "g004-b-label": "Sebagai L1, Ethereum pada akhirnya akan mencapai penskalaan massal dengan sendirinya", + "g004-b-explanation": "Tidak ada rencana untuk lapisan ke-2 'resmi' di Ethereum karena kita akan mendapatkan manfaat dari berbagai pendekatan dalam merancang solusi lapisan ke-2.", + "g004-c-label": "Para pengembang inti masih berdiskusi antara optimistik dan rollup zk", + "g004-c-explanation": "Tidak ada rencana untuk lapisan ke-2 'resmi' di Ethereum karena kita akan mendapatkan manfaat dari berbagai pendekatan dalam merancang solusi lapisan ke-2.", + "g004-d-label": "Ethereum akan mendapatkan manfaat dari berbagai pendekatan dalam merancang L2", + "g004-d-explanation": "Tidak ada rencana untuk lapisan ke-2 'resmi' di Ethereum karena kita akan mendapatkan manfaat dari berbagai pendekatan dalam merancang solusi lapisan ke-2.", + "h001-prompt": "Terjadinya Penggabungan memindahkan Ethereum ke mekanisme konsensus apa?", + "h001-a-label": "Bukti kerja", + "h001-a-explanation": "Sebelum terjadinya Penggabungan, mekanisme konsensus yang digunakan adalah bukti kerja.", + "h001-b-label": "Bukti taruhan", + "h001-b-explanation": "Benar! Terjadinya Penggabungan memindahkan Ethereum ke bukti taruhan.", + "h001-c-label": "Bukti otoritas", + "h001-c-explanation": "Ethereum tidak pernah menggunakan bukti otoritas di Jaringan Utama Ethereum, dan juga tidak pernah melakukannya.", + "h001-d-label": "Semua hal di atas", + "h001-d-explanation": "Tidak mungkin bagi Ethereum untuk memiliki semua mekanisme konsensus ini secara bersamaan.", + "h002-prompt": "Penggabungan ini mengurangi konsumsi energi Ethereum dengan:", + "h002-a-label": "50%", + "h002-a-explanation": "Konsumsi energi Ethereum berkurang sebesar 99,95% setelah Penggabungan memungkinkan peralihan dari bukti kerja ke bukti taruhan.", + "h002-b-label": "62.5%", + "h002-b-explanation": "Konsumsi energi Ethereum berkurang sebesar 99,95% setelah Penggabungan memungkinkan peralihan dari bukti kerja ke bukti taruhan.", + "h002-c-label": "90%", + "h002-c-explanation": "Konsumsi energi Ethereum berkurang sebesar 99,95% setelah Penggabungan memungkinkan peralihan dari bukti kerja ke bukti taruhan.", + "h002-d-label": "99.95%", + "h002-d-explanation": "Konsumsi energi Ethereum berkurang sebesar 99,95% setelah Penggabungan memungkinkan peralihan dari bukti kerja ke bukti taruhan.", + "h003-prompt": "Kapan terjadinya Penggabungan?", + "h003-a-label": "15 September 2022", + "h003-a-explanation": "Penggabungan terjadi pada tanggal 15 September 2022 pukul 06:42:42 (UTC).", + "h003-b-label": "1 Desember 2021", + "h003-b-explanation": "Penggabungan terjadi lebih lambat dari ini. Tanggal 1 Desember 2022 adalah saat Rantai Suar diluncurkan.", + "h003-c-label": "27 November 2013", + "h003-c-explanation": "Penggabungan terjadi lebih lambat dari ini. Tanggal 27 November 2013 adalah saat kertas putih Ethereum dirilis.", + "h003-d-label": "31 Oktober 2008", + "h003-d-explanation": "Penggabungan terjadi lebih lambat dari ini. Tanggal 31 Oktober adalah hari di mana Kertas Putih Bitcoin dirilis.", + "h004-prompt": "Penggabungan ini berarti pengguna harus menukarkan ETH mereka dengan ETH2:", + "h004-a-label": "Benar", + "h004-a-explanation": "ETH tidak berubah pada saat sebelum, selama, atau setelah Penggabungan. Ide untuk 'meng-upgrade' ETH ke ETH2 adalah taktik umum yang dilakukan oleh aktor jahat untuk menipu pengguna.", + "h004-b-label": "Salah", + "h004-b-explanation": "ETH tidak berubah pada saat sebelum, selama, atau setelah Penggabungan. Ide untuk 'meng-upgrade' ETH ke ETH2 adalah taktik umum yang dilakukan oleh aktor jahat untuk menipu pengguna.", + "h005-prompt": "Lapisan konsensus Ethereum sebelumnya dikenal sebagai:", + "h005-a-label": "Bukti kerja", + "h005-a-explanation": "Sebelum terjadinya Penggabungan, mekanisme konsensus yang digunakan adalah bukti kerja.", + "h005-b-label": "Eth2", + "h005-b-explanation": "Sebelum berganti nama menjadi lapisan konsensus, lapisan ini awalnya disebut 'Eth2'.", + "h005-c-label": "Eth1", + "h005-c-explanation": "Eth1 adalah nama asli yang diberikan untuk lapisan eksekusi, bukan lapisan konsensus.", + "h005-d-label": "Penaruhan", + "h005-d-explanation": "Penaruhan adalah menyetorkan ETH ke dalam kontrak pintar untuk membantu mengamankan rantai." } diff --git a/src/intl/id/page-learn.json b/src/intl/id/page-learn.json new file mode 100644 index 00000000000..7848e9efe9b --- /dev/null +++ b/src/intl/id/page-learn.json @@ -0,0 +1,123 @@ +{ + "toc-learn-hub": "Pusat pembelajaran", + "toc-what-is-crypto-ethereum": "Apa itu Ethereum?", + "toc-how-do-i-use-ethereum": "Bagaimana cara menggunakan Ethereum?", + "toc-what-is-ethereum-used-for": "Untuk apa Ethereum digunakan?", + "toc-strengthen-the-ethereum-network": "Memperkuat jaringan Ethereum", + "toc-learn-about-the-ethereum-protocol": "Pelajari tentang protokol Ethereum", + "toc-learn-about-the-ethereum-community": "Pelajari tentang komunitas Ethereum", + "toc-books-and-podcasts": "Buku dan podcast", + "hero-header": "Pelajari tentang Ethereum", + "hero-subtitle": "Panduan edukasi Anda ke dunia Ethereum. Pelajari cara kerja Ethereum dan cara terhubung dengannya. Halaman ini berisi artikel, panduan, dan sumber daya teknis dan non-teknis.", + "hero-button-lets-get-started": "Mari kita mulai", + "what-is-crypto-1": "Anda mungkin pernah mendengar tentang mata uang kripto, rantai blok, dan Bitcoin. Tautan di bawah ini akan membantu Anda mempelajari apa itu mata uang kripto dan bagaimana kaitannya dengan Ethereum.", + "what-is-crypto-2": "Mata uang kripto, seperti Bitcoin, memungkinkan siapa saja untuk mentransfer uang secara global. Ethereum juga demikian, tetapi juga dapat menjalankan kode yang memungkinkan orang untuk membuat aplikasi dan organisasi. Ethereum sangat tangguh dan fleksibel: program komputer apa pun dapat berjalan di Ethereum. Pelajari lebih lanjut dan cari tahu cara memulainya:", + "what-is-ethereum-card-title": "Apa yang Dimaksud dengan Ethereum?", + "what-is-ethereum-card-description": "Jika Anda masih baru, mulailah di sini untuk mempelajari mengapa Ethereum penting.", + "what-is-ethereum-card-image-alt": "Ilustrasi seorang yang sedang mengintai bazar, yang dimaksudkan untuk menggambarkan Ethereum.", + "what-is-eth-card-title": "Apa itu ETH?", + "what-is-eth-description": "Ether (ETH) adalah mata uang yang menggerakkan jaringan dan aplikasi Ethereum.", + "what-is-web3-card-title": "Apa itu Web3?", + "what-is-web3-card-description": "Web3 adalah model untuk internet yang menghargai kepemilikan aset dan identitas Anda.", + "additional-reading-more-on-ethereum-basics": "Lebih lanjut tentang dasar-dasar Ethereum", + "guides-hub-desc": "Panduan: petunjuk langkah demi langkah untuk menggunakan Ethereum", + "quiz-hub-desc": "Pusat kuis: uji pengetahuan Anda", + "additional-reading-what-are-smart-contracts": "Apa itu kontrak pintar?", + "additional-reading-what-is-web3": "Apa itu web3?", + "additional-reading-ethereum-in-thirty-minutes": "Ethereum dalam 30 menit oleh Vitalik Buterin", + "additional-reading-get-eth": "Pelajari bagaimana mendapatkan ETH", + "how-do-i-use-ethereum-1": "Menggunakan Ethereum dapat berarti banyak hal bagi banyak orang. Mungkin Anda ingin masuk ke sebuah aplikasi, membuktikan identitas daring Anda, atau mentransfer sejumlah ETH. Hal pertama yang Anda perlukan adalah sebuah akun. Cara termudah untuk membuat dan mengakses akun adalah dengan menggunakan perangkat lunak yang disebut dompet.", + "what-is-a-wallet-card-title": "Apa yang dimaksud dengan dompet?", + "what-is-a-wallet-card-description": "Dompet digital seperti dompet sungguhan; dompet ini menyimpan semua yang Anda butuhkan untuk membuktikan identitas Anda dan mendapatkan akses ke tempat-tempat yang Anda hargai.", + "what-is-a-wallet-card-alt": "Ilustrasi sebuah robot.", + "find-a-wallet-card-title": "Temukan dompet", + "find-a-wallet-card-description": "Jelajahi dompet berdasarkan fitur-fitur yang penting bagi Anda.", + "find-a-wallet-button": "Daftar dompet", + "crypto-security-basics-card-title": "Dasar-dasar keamanan", + "crypto-security-basics-card-description": "Pelajari cara mengidentifikasi penipuan dan cara menghindari trik yang paling umum.", + "crypto-security-basics-card-button": "Tetap aman", + "things-to-consider-banner-title": "Hal-hal yang perlu dipertimbangkan saat menggunakan Ethereum", + "things-to-consider-banner-1": "Setiap transaksi Ethereum membutuhkan biaya dalam bentuk ETH, bahkan jika Anda perlu memindahkan token yang berbeda yang dibangun di atas Ethereum seperti stablecoin USDC atau DAI.", + "things-to-consider-banner-2": "Biaya bisa tinggi tergantung pada jumlah orang yang mencoba menggunakan Ethereum, jadi kami sarankan untuk menggunakan", + "things-to-consider-banner-layer-2": "Lapisan ke-2", + "additional-reading-more-on-using-ethereum": "Lebih lanjut tentang penggunaan Ethereum", + "additional-reading-how-to-create-an-ethereum-account": "Cara membuat akun Ethereum", + "additional-reading-how-to-use-a-wallet": "Cara menggunakan dompet", + "additional-reading-layer-2": "Lapisan ke-2: mengurangi biaya transaksi", + "what-is-ethereum-used-for-1": "Ethereum telah mengarah pada penciptaan produk dan layanan baru yang dapat meningkatkan berbagai bidang kehidupan kita. Kita masih berada di tahap awal, tetapi ada banyak hal yang membuat kita bersemangat.", + "defi-card-title": "Keuangan terdesentralisasi (DeFi)", + "defi-card-description": "Jelajahi sistem keuangan alternatif yang dibangun tanpa bank dan terbuka untuk siapa saja.", + "defi-card-button": "Apa yang Dimaksud dengan DeFi?", + "stablecoins-card-title": "Stablecoin", + "stablecoins-card-description": "Mata uang kripto dipatok pada nilai mata uang, komoditas, atau instrumen keuangan lainnya.", + "stablecoins-card-button": "Apa itu stablecoin?", + "nft-card-title": "Token yang tidak dapat dipertukarkan (NFT)", + "nft-card-description": "Mewakili kepemilikan barang-barang unik, mulai dari karya seni, akta kepemilikan, hingga tiket konser.", + "nft-card-button": "Apa itu NFT?", + "dao-card-title": "Organisasi otonom terdesentralisasi (DAO)", + "dao-card-description": "Memungkinkan cara baru untuk mengoordinasikan pekerjaan tanpa atasan.", + "dao-card-button": "Apa itu DAO?", + "dapp-card-title": "Decentralized applications (dapp)", + "dapp-card-description": "Menciptakan ekonomi digital dari layanan peer-to-peer.", + "dapp-card-button": "Jelajahi dapps", + "emerging-use-cases-title": "Kasus penggunaan yang muncul", + "emerging-use-cases-description": "Ada juga industri terkemuka lainnya yang diciptakan atau ditingkatkan dengan Ethereum:", + "play-to-earn": "Game bermain untuk mendapatkan uang (P2E)", + "fundraising-through-quadratic-funding": "Penggalangan dana melalui Pendanaan Kuadratik", + "supply-chain-management": "Manajemen rantai pasokan", + "more-on-ethereum-use-cases": "Lebih lanjut tentang kasus penggunaan Ethereum", + "more-on-ethereum-use-cases-link": "Rantai blok di negara berkembang", + "strengthening-the-ethereum-network-description": "Anda dapat membantu mengamankan Ethereum dan mendapatkan reward pada saat yang sama dengan melakukan penaruhan ETH Anda. Ada beberapa opsi berbeda untuk melakukan penaruhan, tergantung pada pengetahuan teknis Anda dan jumlah ETH yang Anda miliki.", + "staking-ethereum-card-title": "Mempertaruhkan Ethereum", + "staking-ethereum-card-description": "Pelajari cara memulai penaruhan ETH Anda.", + "staking-ethereum-card-button": "Mulai penaruhan", + "run-a-node-card-title": "Menjalankan sebuah simpul", + "run-a-node-card-description": "Mainkan peran penting dalam jaringan Ethereum dengan menjalankan simpul.", + "learn-about-ethereum-protocol-description": "Untuk pengguna yang paling tertarik dengan bagian teknis jaringan Ethereum.", + "energy-consumption-card-title": "Konsumsi energi", + "energy-consumption-card-description": "Berapa banyak energi yang digunakan Ethereum?", + "energy-consumption-card-button": "Apakah Ethereum ramah lingkungan?", + "ethereum-upgrades-card-title": "Peta Perjalanan Ethereum", + "ethereum-upgrades-card-description": "Peta perjalanan Ethereum membuatnya lebih terukur, aman, dan berkelanjutan.", + "ethereum-upgrades-card-button": "Jelajahi peta perjalanan", + "ethereum-whitepaper-card-title": "Laporan Resmi Ethereum", + "ethereum-whitepaper-card-description": "Proposal Ethereum asli yang ditulis oleh Vitalik Buterin pada tahun 2014.", + "ethereum-whitepaper-card-button": "Baca laporan", + "more-on-ethereum-protocol-title": "Lebih lanjut tentang protokol Ethereum", + "more-on-ethereum-protocol-ethereum-for-developers": "Ethereum untuk pengembang", + "more-on-ethereum-protocol-consensus": "Mekanisme konsensus berbasis bukti taruhan Ethereum'", + "more-on-ethereum-protocol-evm": "Komputer tertanam Ethereum (EVM)", + "more-on-ethereum-protocol-nodes-and-clients": "Simpul dan klien Ethereum", + "ethereum-community-description": "Keberhasilan Ethereum berkat komunitasnya yang sangat berdedikasi. Ribuan orang yang menginspirasi dan bersemangat membantu mendorong visi Ethereum ke depan, sekaligus memberikan keamanan pada jaringan melalui penaruhan dan tata kelola. Datang dan bergabunglah dengan kami!", + "community-hub-card-title": "Hub komunitas", + "community-hub-card-description": "Komunitas kami terdiri dari orang-orang dari berbagai latar belakang.", + "community-hub-card-alt": "Ilustrasi satu grup pembangun yang bekerja bersama.", + "community-hub-card-button": "Jelajahi lebih lanjut", + "get-involved-card-title": "Bagaimana saya dapat terlibat?", + "get-involved-card-description": "Anda (ya, Anda!) dipersilakan untuk berkontribusi pada komunitas Ethereum.", + "online-communities-card-title": "Komunitas daring", + "online-communities-card-description": "Komunitas daring memberikan peluang besar untuk mengajukan pertanyaan yang lebih spesifik atau terlibat.", + "online-communities-card-button": "Jelajahi komunitas", + "books-about-ethereum": "Buku tentang Ethereum", + "proof-of-stake-title": "Bukti Taruhan", + "proof-of-stake-description": "13 September 2022 - Vitalik Buterin, Nathan Schneider", + "cryptopians-title": "The Cryptopians", + "cryptopians-description": "22 Februari 2022 - Laura Shin", + "out-of-the-ether-title": "Out of the Ether", + "out-of-the-ether-description": "29 September 2020 - Matthew Leising", + "the-infinite-machine-title": "The Infinite Machine", + "the-infinite-machine-description": "14 Juli 2020 - Camila Russo", + "mastering-ethereum-title": "Mastering Ethereum", + "mastering-ethereum-description": "23 Desember 2018 - Andreas M. Antonopoulos, Gavin Wood Ph.D.", + "podcasts-about-ethereum": "Podcast tentang Ethereum", + "bankless-title": "Tanpa bank", + "bankless-description": "Panduan untuk keuangan Kripto", + "zeroknowledge-title": "Nol Pengetahuan", + "zeroknowledge-description": "Mendalami teknologi yang akan memberi kekuatan pada web terdesentralisasi yang sedang berkembang dan komunitas yang membangunnya", + "green-pill-title": "Green Pill", + "green-pill-description": "Mengeksplorasi sistem ekonomi kripto yang menciptakan eksternalitas positif bagi dunia", + "unchained-title": "Unchained", + "unchained-description": "Menyelami lebih dalam tentang orang-orang yang membangun internet terdesentralisasi, detail teknologi yang dapat mendukung masa depan kita, dan beberapa topik paling pelik dalam dunia kripto, seperti regulasi, keamanan, dan privasi", + "the-daily-gwei-title": "The Daily Gwei", + "the-daily-gwei-description": "Rekap, pembaruan, dan analisis berita Ethereum" +} diff --git a/src/intl/id/page-roadmap-vision.json b/src/intl/id/page-roadmap-vision.json index 25ee0c7dece..57b8ba630f1 100644 --- a/src/intl/id/page-roadmap-vision.json +++ b/src/intl/id/page-roadmap-vision.json @@ -1,47 +1,48 @@ { "page-roadmap-vision-2014": "Lihat unggahan blog tahun 2014 yang mendeskripsikan bukti taruhan", - "page-roadmap-vision-2021": "Lihat posting blog tahun 2021 mengenai evolusi roadmap Ethereum", + "page-roadmap-vision-2021": "Lihat posting blog tahun 2021 mengenai evolusi peta perjalanan Ethereum", + "page-roadmap-vision-2022": "Lihat postingan blog 2022: Panduan Pengembara Ethereum", "page-roadmap-vision-2021-updates": "Lihat tulisan tahun 2021 mengenai pembaharuan protokol Ethereum", "page-roadmap-vision-desc-1": "Ethereum perlu mengurangi kemacetan jaringan dan meningkatkan kecepatan untuk melayani basis pengguna global dengan lebih baik.", - "page-roadmap-vision-desc-2": "Menjalankan node akan semakin sulit seiring pertumbuhan jaringan. Ini akan menjadi lebih sulit dengan upaya penskalaan jaringan.", + "page-roadmap-vision-desc-2": "Menjalankan simpul akan semakin sulit seiring pertumbuhan jaringan. Ini akan menjadi lebih sulit dengan upaya penskalaan jaringan.", "page-roadmap-vision-desc-3": "Ethereum terlalu banyak menggunakan tenaga listrik. Teknologi yang menjaga keamanan jaringan harus lebih ramah lingkungan.", - "page-roadmap-vision-ethereum-node": "Lebih lanjut tentang node", + "page-roadmap-vision-ethereum-node": "Lebih lanjut tentang simpul", "page-roadmap-vision-future": "Masa depan digital dalam skala global", "page-roadmap-vision-meta-desc": "Gambaran umum tentang dampak peningkatan terhadap Ethereum, dan tantangan yang harus mereka atasi.", "page-roadmap-vision-meta-title": "Visi Ethereum", - "page-roadmap-vision-mining": "Selengkapnya tentang penambangan", + "page-roadmap-vision-mining": "Selengkapnya tentang menambang", "page-roadmap-vision-problems": "Masalah saat ini", "page-roadmap-vision-scalability": "Skalabilitas", - "page-roadmap-vision-scalability-desc": "Ethereum harus mampu menangani lebih banyak transaksi per detik tanpa meningkatkan ukuran node dalam jaringan. Node adalah peserta jaringan vital yang menyimpan dan menjalankan blockchain. Meningkatkan ukuran node tidak praktis karena hanya mereka yang memiliki komputer yang kuat dan mahal yang dapat melakukannya. Untuk penskalaan, Ethereum membutuhkan lebih banyak transaksi per detik, ditambah dengan lebih banyak node. Lebih banyak node berarti keamanan yang lebih baik.", - "page-roadmap-vision-scalability-desc-3": "Peningkatan rantai shard akan menyebarkan beban jaringan ke 64 rantai baru. Ini akan memberi Ethereum ruang untuk bernapas dengan mengurangi kemacetan dan meningkatkan kecepatan di luar batas 15-45 transaksi per detik saat ini.", - "page-roadmap-vision-scalability-desc-4": "Dan meskipun akan ada lebih banyak rantai, sebenarnya ini akan membutuhkan lebih sedikit pekerjaan dari validator - pengelola jaringan. Validator hanya perlu 'menjalankan' shard mereka dan bukan seluruh rantai Ethereum. Ini membuat node lebih ringan, memungkinkan Ethereum untuk melakukan skalabilitas dan tetap terdesentralisasi.", + "page-roadmap-vision-scalability-desc": "Ethereum harus mampu menangani lebih banyak transaksi per detik tanpa meningkatkan ukuran simpul dalam jaringan. Simpul adalah peserta jaringan vital yang menyimpan dan menjalankan rantai blok. Meningkatkan ukuran simpul tidak praktis karena hanya mereka yang memiliki komputer yang kuat dan mahal yang dapat melakukannya. Untuk penskalaan, Ethereum membutuhkan lebih banyak transaksi per detik, ditambah dengan lebih banyak simpul. Lebih banyak simpul berarti keamanan yang lebih baik.", + "page-roadmap-vision-scalability-desc-3": "Ethereum skala rollup lapisan ke-2 dengan memindahkan transaksi ke lapisan di luar rantai utama dan hanya memposting data ringkasan ke Ethereum. Pengelompokan ini meningkatkan keluaran transaksi Ethereum sambil secara drastis mengurangi biaya bagi pengguna.", + "page-roadmap-vision-scalability-desc-4": "Rollup memerlukan penyimpanan berbiaya rendah di lapisan ke-1 untuk membuat transaksi semurah mungkin bagi pengguna. Ini akan disediakan dalam bentuk \"blob\" yang terlampir pada blok Ethereum. Pada akhirnya, banyak \"blob\" akan terlampir pada blok Ethereum, menyediakan penyimpanan murah untuk banyak rollup.", "page-roadmap-vision-security": "Keamanan", - "page-roadmap-vision-security-desc": "Peningkatan yang direncanakan meningkatkan keamanan Ethereum terhadap serangan terkoordinasi, seperti serangan 51%. Ini adalah tipe serangan saat seseorang mengendalikan mayoritas jaringan yang dapat disusupi dengan paksa lewat perubahan palsu.", - "page-roadmap-vision-security-desc-3": "Transisi ke bukti taruhan berarti protokol Ethereum memiliki disinsentif yang lebih besar terhadap serangan. Ini karena dalam bukti taruhan, validator yang mengamankan jaringan harus menaruhkan sejumlah besar ETH ke dalam protokol. Jika mereka mencoba dan menyerang jaringan, protokol dapat secara otomatis menghancurkan ETH mereka.", - "page-roadmap-vision-security-desc-5": "Ini tidak mungkin dilakukan dalam bukti kerja, saat yang terbaik yang dapat dilakukan oleh protokol adalah memaksa entitas yang mengamankan jaringan (penambang) untuk kehilangan imbalan penambangan yang seharusnya didapatkan. Untuk mencapai efek yang setara dalam bukti kerja, protokol harus mampu menghancurkan semua peralatan penambang jika mereka mencoba dan berniat mencurangi.", - "page-roadmap-vision-security-desc-5-link": "Selengkapnya tentang bukti kerja", - "page-roadmap-vision-security-desc-10": "Penaruhan juga berarti Anda tidak perlu berinvestasi pada perangkat keras elit untuk 'menjalankan' node Ethereum. Ini seharusnya mendorong lebih banyak orang menjadi validator, yang meningkatkan desentralisasi jaringan dan mengurangi area permukaan serangan.", + "page-roadmap-vision-security-desc": "Peningkatan yang direncanakan meningkatkan keamanan Ethereum terhadap serangan yang terkoordinasi.", + "page-roadmap-vision-security-desc-3": "Dalam bukti taruhan, keamanan tambahan datang dari insentif kripto-ekonomi yang lebih besar untuk mencegah serangan. Hal ini disebabkan oleh fakta bahwa dalam bukti taruhan, validator yang mengamankan jaringan harus mengunci sejumlah besar ETH ke dalam protokol. Jika mereka mencoba menyerang jaringan, protokol dapat secara otomatis menghancurkan ETH yang mereka miliki.", + "page-roadmap-vision-security-desc-5": "Namun, juga penting bahwa peningkatan yang melindungi validator dari serangan penolakan layanan, meningkatkan anonimitas mereka, dan memisahkan pembangunan blok dan propagasi blok diimplementasikan segera. Peningkatan ini melindungi validator individu dan jaringan secara keseluruhan dari serangan terhadap kelangsungan jaringan dan sensor.", + "page-roadmap-vision-security-desc-5-link": "Selengkapnya tentang bukti taruhan", + "page-roadmap-vision-security-desc-10": "Penaruhan juga berarti Anda tidak perlu berinvestasi dalam perangkat keras kelas atas untuk berpartisipasi langsung dalam konsensus. Ini seharusnya mendorong lebih banyak orang untuk menjadi validator, meningkatkan desentralisasi jaringan dan mengurangi area permukaan serangan.", "page-roadmap-vision-security-staking": "Pertaruhkan ETH", - "page-roadmap-vision-security-validator": "Anda bisa menjadi validator dengan menaruhkan ETH Anda.", + "page-roadmap-vision-security-validator": "Anda bisa menjadi validator dengan penaruhan ETH Anda.", "page-roadmap-vision-staking-lower": "Selengkapnya tentang penaruhan", "page-roadmap-vision-subtitle": "Kembangkan Ethereum hingga cukup kuat untuk membantu seluruh umat manusia.", "page-roadmap-vision-sustainability": "Keberlanjutan", - "page-roadmap-vision-sustainability-desc-1": "Bukan rahasia lagi bahwa Ethereum dan blockchain lain seperti Bitcoin boros energi akibat dari penambangan.", - "page-roadmap-vision-sustainability-desc-2": "Tetapi Ethereum berubah menuju diamankan oleh ETH, bukan kekuatan komputasi - melalui penaruhan.", - "page-roadmap-vision-sustainability-desc-3": "Sekalipun penaruhan telah diperkenalkan oleh Rantai Suar, Ethereum yang kita gunakan saat ini akan beroperasi secara paralel untuk jangka waktu tertentu. Satu sistem diamankan oleh ETH, yang lain oleh daya komputasi. Ini akan berlangsung sampai Penggabungan dilakukan.", - "page-roadmap-vision-sustainability-desc-8": "Dengan Rantai Suar yang beroperasi, proses penggabungan Jaringan Utama dengan sistem lapisan konsensus telah dimulai. Oleh karena itu, Jaringan Utama akan diamankan oleh ETH yang ditaruhkan dan jauh lebih hemat energi.", - "page-roadmap-vision-sustainability-subtitle": "Ethereum harus lebih ramah lingkungan.", + "page-roadmap-vision-sustainability-desc-1": "Sekarang Ethereum adalah rantai blok yang ramah lingkungan. Konsumsi energinya berkurang sekitar ~99,95% saat model konsensus bukti kerja diganti dengan bukti taruhan.", + "page-roadmap-vision-sustainability-desc-2": "Sekarang Ethereum diamankan melalui penaruhan, bukan daya komputasi.", + "page-roadmap-vision-sustainability-desc-3": "Peningkatan keberlanjutan ini juga memberikan manfaat keamanan - ether yang dipasang membuat biaya untuk menyerang rantai menjadi jauh lebih mahal daripada dalam bukti kerja, tetapi lebih murah untuk mengamankannya karena ETH baru yang lebih sedikit harus diterbitkan untuk membayar validator dibandingkan penambang.", + "page-roadmap-vision-sustainability-desc-8": "Pergantian ke bukti taruhan membuat Ethereum lebih ramah lingkungan dan lebih aman. Ini adalah platform rendah karbon untuk membangun aplikasi dan organisasi.", + "page-roadmap-vision-sustainability-subtitle": "Ethereum adalah rantai blok yang ramah lingkungan dengan keamanan kripto-ekonomi yang kuat.", "page-roadmap-vision-title": "Visi Ethereum", "page-roadmap-vision-title-1": "Jaringan tersumbat", "page-roadmap-vision-title-2": "Ruang disk", "page-roadmap-vision-title-3": "Terlalu banyak energi", - "page-roadmap-vision-trilemma-cardtext-1": "Peningkatan Ethereum akan membuat Ethereum terukur, aman, dan terdesentralisasi. Sharding akan membuat Ethereum lebih terukur dengan meningkatkan transaksi per detik sekaligus mengurangi daya yang dibutuhkan untuk menjalankan node dan memvalidasi rantai. Rantai suar akan membuat Ethereum aman dengan mengoordinasikan validator di seluruh shard. Dan penaruhan akan menurunkan hambatan partisipasi, yang menciptakan jaringan yang lebih besar - lebih terdesentralisasi.", - "page-roadmap-vision-trilemma-cardtext-2": "Jaringan blockchain yang aman dan terdesentralisasi mengharuskan setiap node untuk memverifikasi setiap transaksi yang diproses oleh rantai. Jumlah pekerjaan ini membatasi jumlah transaksi yang dapat terjadi pada satu waktu tertentu. Terdesentralisasi dan aman mencerminkan rantai Ethereum hari ini.", - "page-roadmap-vision-trilemma-cardtext-3": "Jaringan terdesentralisasi bekerja dengan mengirimkan informasi tentang transaksi lintas node - seluruh jaringan perlu mengetahui tentang perubahan status apa pun. Perluasan transaksi per detik di seluruh jaringan terdesentralisasi menimbulkan resiko keamanan karena semakin banyak transaksi, semakin lama penundaan, semakin tinggi kemungkinan serangan terjadi ketika informasi dalam penerbangan.", - "page-roadmap-vision-trilemma-cardtext-4": "Meningkatkan ukuran dan kekuatan node Ethereum dapat meningkatkan transaksi per detik dengan cara yang aman. Namun, persyaratan perangkat keras akan membatasi siapa yang dapat melakukannya karena dapat mengancam desentralisasi. Sharding dan bukti taruhan diharapkan akan memungkinkan Ethereum melakukan penskalaan dengan meningkatkan jumlah node, bukan ukuran node.", + "page-roadmap-vision-trilemma-cardtext-1": "Peningkatan Ethereum akan membuatnya lebih skalabel, aman, dan terdesentralisasi. Penaruhan telah menurunkan hambatan partisipasi dan membatasi ekonomi skala, menciptakan jaringan yang lebih besar dan lebih terdesentralisasi.", + "page-roadmap-vision-trilemma-cardtext-2": "Jaringan rantai blok yang aman dan terdesentralisasi mengharuskan setiap simpul untuk memverifikasi setiap transaksi yang diproses oleh rantai. Jumlah pekerjaan ini membatasi jumlah transaksi yang dapat terjadi pada satu waktu tertentu. Terdesentralisasi dan aman mencerminkan rantai Ethereum hari ini.", + "page-roadmap-vision-trilemma-cardtext-3": "Jaringan terdesentralisasi bekerja dengan mengirimkan informasi tentang transaksi lintas simpul - seluruh jaringan perlu mengetahui tentang perubahan status apa pun. Penskalaan transaksi per detik di seluruh jaringan terdesentralisasi menimbulkan resiko keamanan karena semakin banyak transaksi, semakin lama penundaan, semakin tinggi kemungkinan serangan terjadi ketika informasi dalam penerbangan.", + "page-roadmap-vision-trilemma-cardtext-4": "Meningkatkan ukuran dan kekuatan simpul Ethereum dapat meningkatkan transaksi per detik dengan aman, namun persyaratan perangkat keras akan membatasi siapa yang dapat melakukannya karena dapat mengancam desentralisasi. Pecahan dan bukti taruhan diharapkan akan memungkinkan Ethereum melakukan penskalaan dengan meningkatkan jumlah simpul, bukan ukuran simpul.", "page-roadmap-vision-trilemma-h2": "Tantangan penskalaan terdesentralisasi", "page-roadmap-vision-trilemma-modal-tip": "Ketuk lingkaran di bawah ini untuk lebih memahami masalah penskalaan terdesentralisasi", - "page-roadmap-vision-trilemma-p": "Cara naif untuk memecahkan masalah Ethereum adalah dengan membuatnya lebih terpusat. Tetapi desentralisasi terlalu penting. Desentralisasilah yang memberi Ethereum kekebalan terhadap penyensoran, keterbukaan, privasi data, dan keamanan yang hampir tidak dapat ditembus.", + "page-roadmap-vision-trilemma-p": "Cara sederhana untuk mengatasi masalah Ethereum adalah dengan membuatnya lebih terpusat. Namun, desentralisasi terlalu penting. Desentralisasi yang memberikan netralitas, ketahanan terhadap sensor, keterbukaan, kepemilikan data, dan keamanan yang hampir tidak bisa ditembus bagi Ethereum.", "page-roadmap-vision-trilemma-p-1": "Visi Ethereum adalah menjadi lebih terukur dan aman, tetapi juga tetap terdesentralisasi. Mencapai 3 kualitas ini adalah masalah yang dikenal sebagai trilema skalabilitas.", "page-roadmap-vision-trilemma-p-2": "Peningkatan Ethereum bertujuan untuk memecahkan trilemanya tetapi ada tantangan yang siginifikan.", "page-roadmap-vision-trilemma-press-button": "Tekan tombol pada segitiga untuk lebih memahami masalah penskalaan terdesentralisasi.", @@ -56,10 +57,11 @@ "page-roadmap-vision-understanding": "Memahami visi Ethereum", "page-roadmap-vision-upgrade-needs": "Perlunya peningkatan", "page-roadmap-vision-upgrade-needs-desc": "Protokol Ethereum yang diluncurkan pada tahun 2015 telah luar biasa sukses. Tetapi komunitas Ethereum selalu berharap bahwa beberapa peningkatan kunci akan diperlukan untuk membuka potensi Ethereum secara penuh.", - "page-roadmap-vision-upgrade-needs-desc-2": "Permintaan tinggi meningkatkan biaya transaksi yang membuat Ethereum mahal bagi pengguna rata-rata. Ruang disk yang dibutuhkan untuk menjalankan klien Ethereum tumbuh dengan kecepatan tinggi. Dan algoritma konsensus bukti kerja yang mendasarinya yang menjaga Ethereum aman dan terdesentralisasi memiliki dampak lingkungan yang besar.", + "page-roadmap-vision-upgrade-needs-desc-2": "Permintaan yang tinggi mengakibatkan biaya transaksi meningkat hal itu membuat Ethereum mahal bagi pengguna rata-rata. Ruang penyimpanan yang dibutuhkan untuk menjalankan klien Ethereum juga meningkat dengan cepat.", "page-roadmap-vision-upgrade-needs-desc-3": "Ethereum memiliki serangkaian peningkatan yang mengatasi masalah-masalah ini dan masih banyak lagi. Rangkaian peningkatan ini awalnya disebut 'Serenity' dan 'Eth2', dan telah menjadi area penelitian dan pengembangan aktif sejak 2014.", "page-roadmap-vision-upgrade-needs-desc-5": "Karena teknologinya telah siap, peningkatan ini akan menyusun ulang Ethereum agar lebih terukur, aman, dan berkelanjutan - untuk membuat hidup lebih baik bagi para pengguna yang sudah ada dan menarik para pengguna baru. Semuanya sambil mempertahankan nilai inti desentralisasi Ethereum.", "page-roadmap-vision-upgrade-needs-desc-6": "Ini berarti tidak ada tombol menyalakan untuk skalabilitas. Peningkatan akan dikirimkan secara bertahap seiring dengan waktu.", "page-roadmap-vision-upgrade-needs-serenity": "Lihat postingan blog 2015 yang membahas 'Serenity'", - "ethereum": "Ethereum" + "ethereum": "Ethereum", + "page-roadmap-vision-danksharding": "Lebih lanjut tentang Danksharding" } diff --git a/src/intl/id/page-upgrades-get-involved.json b/src/intl/id/page-upgrades-get-involved.json index e86c74b5b4d..db69d57f529 100644 --- a/src/intl/id/page-upgrades-get-involved.json +++ b/src/intl/id/page-upgrades-get-involved.json @@ -6,7 +6,7 @@ "page-upgrades-get-involved-bug-hunting": "Mulai berburu bug", "page-upgrades-get-involved-bug-hunting-desc": "Temukan dan laporkan bug dalam spesifikasi peningkatan lapisan konsensus atau klien itu sendiri. Anda bisa mendapatkan hingga $50.000 USD dan mendapat tempat di papan peringkat.", "page-upgrades-get-involved-bug-li": "masalah spesifikasi yang tidak sesuai", - "page-upgrades-get-involved-bug-li-2": "bugs perusak finality", + "page-upgrades-get-involved-bug-li-2": "bug perusak finalitas", "page-upgrades-get-involved-bug-li-3": "vektor penolakan layanan (DOS)", "page-upgrades-get-involved-bug-li-4": "dan banyak lagi...", "page-upgrades-get-involved-desc-1": "Menjalankan klien berarti Anda akan menjadi peserta aktif di Ethereum. Klien Anda akan membantu melacak transaksi dan memeriksa blok baru.", @@ -14,15 +14,20 @@ "page-upgrades-get-involved-desc-3": "Bergabunglah dengan usaha pengujian komunitas! Bantu menguji peningkatan Ethereum sebelum dikirimkan, temukan bug, dan dapatkan hadiah.", "page-upgrades-get-involved-ethresearch-1": "Sharding", "page-upgrades-get-involved-ethresearch-2": "Penggabungan", - "page-upgrades-get-involved-ethresearch-3": "Eksekusi bershard", + "page-upgrades-get-involved-ethresearch-3": "Eksekusi berpecahan", "page-upgrades-get-involved-ethresearch-4": "Semua topik riset", "page-upgrades-get-involved-how": "Bagaimana Anda ingin terlibat?", "page-upgrades-get-involved-how-desc": "Komunitas Ethereum akan selalu diuntungkan dengan lebih banyak orang menjalankan klien, penaruhan, dan pemburuan bug.", "page-upgrades-get-involved-join": "Bergabunglah dengan riset", - "page-upgrades-get-involved-join-desc": "Seperti umumnya terkait Ethereum, banyak penelitian yang bersifat publik. Ini berarti, Anda dapat terlibat dalam diskusi atau hanya membaca apa yang disampaikan oleh para peneliti Ethereum. ethresear.ch mencakup sejumlah topik termasuk peningkatan konsensus, sharding, rollup, dan banyak lagi.", - "page-upgrades-get-involved-meta-description": "Cara berpartisipasi dalam peningkatan Ethereum: jalankan node, taruhkan, berburu bug, dan lainnya.", - "page-upgrades-get-involved-run-clients": "Jalankan klien konsensus", - "page-upgrades-get-involved-run-clients-desc": "Kunci keamanan jangka panjang Ethereum adalah distribusi klien yang kuat. Klien adalah perangkat lunak yang menjalankan blockchain, pemeriksaan transaksi, dan pembuatan blok baru. Setiap klien punya fitur masing-masing, jadi pilihlah berdasarkan apa yang Anda sukai.", + "page-upgrades-get-involved-join-desc": "Seperti banyak hal dengan Ethereum, banyak risetnya bersifat publik. Ini berarti Anda dapat berpartisipasi dalam diskusi atau hanya membaca apa yang dikemukakan oleh para peneliti Ethereum. ethresear.ch membahas berbagai topik termasuk peningkatan konsensus, rollup, dan lainnya.", + "page-upgrades-get-involved-meta-description": "Cara berpartisipasi dalam peningkatan Ethereum: jalankan simpul, taruhan, berburu bug, dan lainnya.", + "page-upgrades-get-involved-run-clients": "Menjalankan sepasang klien", + "page-upgrades-get-involved-run-clients-desc": "Sebuah 'klien' adalah perangkat lunak yang menjalankan rantai blok, dan dalam kasus Ethereum, sebuah simpul penuh memerlukan menjalankan sepasang klien ini: klien lapisan eksekusi dan klien lapisan konsensus. Sebuah simpul penuh dapat memverifikasi transaksi dan, jika juga penaruhan ETH, dapat membuat blok-blok baru. Setiap klien memiliki fitur-fitur sendiri namun secara keseluruhan memiliki fungsi yang sama, oleh karena itu kami mendorong Anda untuk memilih klien minoritas setiap kali memungkinkan untuk menjaga keragaman dan keamanan dari kumpulan klien.", + "page-upgrades-get-involved-run-clients-desc-link": "Selengkapnya tentang keragaman klien.", + "page-upgrades-get-involved-run-clients-execution": "Klien lapisan eksekusi", + "page-upgrades-get-involved-run-clients-execution-desc": "Klien-klien ini sebelumnya disebut sebagai klien 'Eth1', tetapi istilah ini telah ditinggalkan dan digantikan dengan istilah klien 'lapisan eksekusi'.", + "page-upgrades-get-involved-run-clients-consensus": "Klien lapisan konsensus", + "page-upgrades-get-involved-run-clients-consensus-desc": "Klien-klien ini sebelumnya disebut sebagai klien 'Eth2', tetapi istilah ini telah ditinggalkan dan digantikan dengan istilah klien 'lapisan konsensus'.", "page-upgrades-get-involved-stake": "Taruhkan ETH Anda", "page-upgrades-get-involved-stake-desc": "Sekarang Anda dapat menaruhkan ETH untuk membantu mengamankan rantai suar.", "page-upgrades-get-involved-stake-eth": "Pertaruhkan ETH", @@ -30,12 +35,13 @@ "page-upgrades-get-involved-title-1": "Jalankan klien", "page-upgrades-get-involved-title-2": "Taruhkan ETH Anda", "page-upgrades-get-involved-title-3": "Temukan bug", + "page-upgrades-get-involved-written-c-sharp": "Ditulis dalam C#", "page-upgrades-get-involved-written-go": "Ditulis dalam Go", "page-upgrades-get-involved-written-java": "Ditulis dalam Java", "page-upgrades-get-involved-written-javascript": "Ditulis dalam JavaScript", "page-upgrades-get-involved-written-nim": "Ditulis dalam Nim", "page-upgrades-get-involved-written-rust": "Ditulis dalam Rust", "page-upgrades-get-involved": "Terlibatlah dalam meningkatkan Ethereum", - "page-upgrades-get-involved-2": "Mari terlibat", + "page-upgrades-get-involved-2": "Ikut terlibat", "page-upgrades-bug-bounty-leaderboard-points": "poin" } diff --git a/src/intl/id/page-upgrades-index.json b/src/intl/id/page-upgrades-index.json index 489c337bca8..295e6b96787 100644 --- a/src/intl/id/page-upgrades-index.json +++ b/src/intl/id/page-upgrades-index.json @@ -1,44 +1,67 @@ { + "consensus-client-besu-logo-alt": "Logo Besu", + "consensus-client-erigon-logo-alt": "Logo Erigon", + "consensus-client-geth-logo-alt": "Logo Geth", "consensus-client-lighthouse-logo-alt": "Logo Lighthouse", "consensus-client-lodestar-logo-alt": "Logo Lodestar", + "consensus-client-nethermind-logo-alt": "Logo Nethermind", "consensus-client-nimbus-logo-alt": "Logo Nimbus", "consensus-client-prysm-logo-alt": "Logo Prysm", "consensus-client-teku-logo-alt": "Logo Teku", - "page-upgrades-answer-1": "Pikirkan perubahan yang diluncurkan sebagai serangkaian peningkatan yang ditambahkan untuk meningkatkan Ethereum yang kita gunakan saat ini. Peningkatan ini mencakup pembuatan rantai baru yang disebut Rantai Suar, dan akan memperkenalkan rantai baru yang dikenal sebagai 'shard' di masa mendatang.", - "page-upgrades-answer-2": "Beberapa peningkatan terpisah dari Jaringan Utama Ethereum yang kita gunakan hari ini tetapi tidak akan menggantikannya. Sebaliknya, Jaringan Utama akan 'bergabung' dengan sistem paralel ini yang ditambahkan dari waktu ke waktu.", - "page-upgrades-answer-4": "Dengan kata lain, Ethereum yang kita gunakan hari ini pada akhirnya akan mewujudkan semua fitur yang menjadi sasaran kami dalam visi Ethereum.", + "page-upgrades-answer-1": "Rantai Suar digunakan sebagai alat untuk memutakhirkan Jaringan Utama Ethereum di Penggabungan.", + "page-upgrades-answer-2": "Dengan Penggabungan, Ethereum memiliki peningkatan paling substansial yang pernah menukar bukti kerja dengan lapisan konsensus berbasis bukti taruhan yang baru.", + "page-upgrades-answer-4": "Rantai Suar digunakan untuk mengembangkan konsensus berbasis bukti taruhan yang digunakan Ethereum saat ini. Rantai Suar dijalankan secara terpisah ke Jaringan Utama Ethereum sehingga pengembang dapat mengamati mekanisme konsensus secara terpisah.", + "page-upgrade-article-author-status": "Status", + "page-upgrade-article-author-ethmerge": "Ethmerge", + "page-upgrade-article-author-alchemy": "Alchemy", + "page-upgrade-article-author-consensys": "Consensys", + "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": "Yayasan Ethereum", + "page-upgrade-article-author-vitalik-buterin": "Vitalik Buterin", + "page-upgrade-article-author-ethos-dev": "Ethos.dev", "page-upgrade-article-title-two-point-oh": "Dua Titik Nol: Rantai Suar", "page-upgrade-article-title-beacon-chain-explainer": "Penjelasan Rantai Suar Ethereum 2.0 yang perlu Anda baca terlebih dahulu", "page-upgrade-article-title-sharding-consensus": "Konsensus sharding", "page-upgrade-article-title-sharding-is-great": "Mengapa sharding bagus: mengungkap sifat teknis", "page-upgrade-article-title-rollup-roadmap": "Roadmap rollup-centric", - "page-upgrades-beacon-chain-date": "Rantai Suar dioperasikan pada 1 Desember 2020.", - "page-upgrades-beacon-chain-desc": "Rantai Suar membawa penaruhan ke Ethereum, melakukan semua hal mendasar untuk peningkatan di masa mendatang, dan pada akhirnya akan mengoordinasikan sistem baru.", + "page-upgrade-article-title-hitchhikers-guide-to-ethereum": "Panduan Pengembara Ethereum", + "page-upgrade-article-title-eip-4844": "EIP-4844: Transaksi Shard Blob (Proto-Danksharding)", + "page-upgrade-article-title-proto-danksharding-faq": "Pertanyaan Umum Proto-Danksharding", + "page-upgrade-article-title-sharding-das": "Penjelasan tentang pecahan dan pengambilan sampel ketersediaan data (DAS)", + "page-upgrade-article-title-ethmerge": "Ethmerge", + "page-upgrade-article-title-merge-is-coming": "Penggabungan akan segera datang", + "page-upgrade-article-title-state-of-the-merge": "Status Penggabungan: Pembaruan tentang Pergeseran Ethereum ke Bukti Taruhan pada tahun 2022", + "page-upgrade-article-title-ropsten-merge-testnet": "Mengumumkan Jaringan Percobaan Ropsten", + "page-upgrade-article-title-execution-layer-specs": "Spesifikasi lapisan eksekusi", + "page-upgrade-article-title-consensus-layer-specs": "Spesifikasi lapisan konsensus", + "page-upgrade-article-title-engine-api-specs": "Spesifikasi API mesin", + "page-upgrades-beacon-chain-date": "Rantai Suar mulai beroperasi pada tanggal 1 Desember 2020", + "page-upgrades-beacon-chain-desc": "Rantai Suar membawa penaruhan ke Ethereum dan meletakkan dasar untuk peningkatan di masa mendatang. Ini mengoordinasikan Ethereum bukti taruhan baru.", "page-upgrades-beacon-chain-estimate": "Rantai Suar telah beroperasi", "page-upgrades-beacon-chain-title": "Rantai Suar", "page-upgrades-bug-bounty": "Lihat program hadiah bounty bug", "page-upgrades-clients": "Lihat klien konsensus (sebelumnya dikenal sebagai klien 'Eth2')", "page-staking-deposit-contract-title": "Periksa alamat kontrak deposit", "page-upgrades-dive": "Dalami tentang visi", - "page-upgrades-dive-desc": "Bagaimana kita akan membuat Ethereum lebih terukur, aman, dan berkelanjutan? Semua sambil menjaga etos inti desentralisasi Ethereum.", + "page-upgrades-dive-desc": "Bagaimana kami membuat Ethereum lebih terukur, aman, dan berkelanjutan? Semua sambil menjaga etos inti desentralisasi Ethereum.", "page-upgrades-docking": "Penggabungan", - "page-upgrades-merge-answer-1": "Penggabungan terjadi saat Jaringan Utama mulai menggunakan Rantai Suar untuk konsensus, dan bukti kerja dinonaktifkan, pada suatu waktu di 2022.", + "page-upgrades-merge-answer-1": "Penggabungan terjadi ketika Ethereum bertransisi ke konsensus bukti taruhan pada 15 September 2022. Rantai Suar bergabung dengan Jaringan Utama, secara resmi menghentikan bukti kerja di Ethereum, dan mengurangi konsumsi energi Ethereum sebesar ~99,95%.", "page-upgrades-merge-btn": "Selengkapnya tentang penggabungan", - "page-upgrades-merge-desc": "Jaringan Utama Ethereum perlu 'bergabung' dengan Rantai Suar pada beberapa titik. Ini akan memungkinkan penaruhan untuk seluruh jaringan dan menandai berakhirnya penambangan yang boros energi.", - "page-upgrades-merge-estimate": "Perkiraan: 2022", + "page-upgrades-merge-desc": "Jaringan Utama Ethereum bergabung dengan Rantai Suar bukti taruhan, menandai berakhirnya menambang energi yang intensif.", + "page-upgrades-merge-estimate": "Penggabungan telah beroperasi", "page-upgrades-merge-mainnet": "Apa itu Jaringan Utama?", "page-upgrades-eth-blog": "blog ethereum.org", "page-upgrades-explore-btn": "Jelajahi peningkatan", "page-upgrades-get-involved": "Terlibatlah dalam meningkatkan Ethereum", "page-upgrades-get-involved-2": "Mari terlibat", - "page-upgrades-head-to-ethresearch": "Menuju ethresear.ch", + "page-upgrades-head-to-ethresearch": "Kunjungi etresearch.ch", "page-upgrades-help": "Ingin membantu dalam peningkatan Ethereum?", "page-upgrades-help-desc": "Ada banyak peluang untuk menimbang peningkatan Ethereum, membantu dalam pengujian, dan bahkan mendapatkan imbalan.", "page-upgrades-index-staking": "Penaruhan ada di sini", "page-upgrades-index-staking-desc": "Kunci untuk peningkatan Ethereum adalah pengenalan penaruhan. Jika Anda mau menggunakan ETH untuk membantu mengamankan jaringan Ethereum, pastikan Anda mengikuti langah-langkah berikut.", "page-upgrades-index-staking-learn": "Pelajari tentang penaruhan", - "page-upgrades-index-staking-learn-desc": "Rantai Suar akan membawa penaruhan ke Ethereum. Berarti jika Anda mempunyai ETH, Anda dapat turut berpartisipasi dalam mengamankan jaringan dan mendapatkan lebih banyak ETH dalam prosesnya.", + "page-upgrades-index-staking-learn-desc": "Rantai Suar membawa penaruhan ke Ethereum. Jika Anda memiliki ETH, Anda dapat melakukan kebaikan publik dengan mengamankan jaringan dan mendapatkan lebih banyak ETH dalam prosesnya.", "page-upgrades-index-staking-step-1": "1. Siapkan dengan launchpad", "page-upgrades-index-staking-step-1-btn": "Kunjungi launchpad penaruhan", "page-upgrades-index-staking-step-1-desc": "Untuk bertaruh di Ethereum, Anda harus menggunakan launchpad – ini akan memandu Anda melalui prosesnya.", @@ -52,25 +75,31 @@ "page-upgrades-question-1-title": "Kapan peningkatan akan diluncurkan?", "page-upgrades-question-1-desc": "Ethereum ditingkatkan secara bertahap; peningkatannya beragam dengan tanggal peluncuran yang berbeda.", "page-upgrades-question-2-title": "Apakah Rantai Suar merupakan blokchain yang terpisah?", - "page-upgrades-question-2-desc": "Kurang tepat jika mengganggap peningkatan ini sebagai blockchain terpisah.", + "page-upgrades-question-2-desc": "Ya. Rantau Suar diberi nama rantai blok bukti taruhan paralel setelah digunakan untuk meningkatkan Jaringan Utama Ethereum. Lihat sekarang satu dan satu-satunya rantai blok, berawal dari menggabungkan rantai blok asli Ethereum dan Rantai Suar secara bersamaan.", + "page-upgrades-question-3-answer-2a": "Penggabungan awal minimal berdampak di dapp pengembang-mereka tetap berinteraksi dengan Ethereum di satu jalan yang sama.", + "page-upgrades-question-3-answer-2a-link": "Pengembang Penggabungan dan dapp", + "page-upgrades-question-3-answer-2b": "Rencana-rencana penggunaan pecahan masih dalam pengembangan, tetapi akan dirancang dengan mempertimbangkan rollup lapisan ke-2.", + "page-upgrades-layer-2-rollups": "Lebih lanjut mengenai rollup lapisan ke-2", "page-upgrades-question-3-answer-3-link": "Kunjungi ethresear.ch", "page-upgrades-question-3-desc": "Anda tidak perlu melakukan apa-apa sekarang untuk mempersiapkan peningkatannya.", "page-upgrades-question-3-title": "Bagaimana cara saya bersiap untuk peningkatan?", - "page-upgrades-question-4-answer-1": "Setiap kali Anda mengirimkan transaksi atau menggunakan dapp hari ini, Anda menggunakan lapisan eksekusi, atau Jaringan Utama. Ini adalah Ethereum yang diamankan oleh penambang.", - "page-upgrades-question-4-answer-3": "Setelah Penggabungan, para validator akan mengamankan seluruh jaringan dengan bukti taruhan.", + "page-upgrades-question-4-answer-1": "Setiap kali Anda mengirim transaksi atau menggunakan sebuah dapp hari ini, Anda menggunakan lapisan eksekusi, yang juga dikenal sebagai Jaringan Utama.", + "page-upgrades-question-4-answer-3": "Sejak Penggabungan, para validator mengamankan seluruh jaringan dengan bukti taruhan.", "page-upgrades-question-4-answer-6": "Semua orang bisa menjadi validator dengan mempertaruhkan ETH mereka.", "page-upgrades-question-4-answer-7": "Selengkapnya tentang penaruhan", "page-upgrades-question-4-title": "Apa itu lapisan eksekusi?", - "page-upgrades-question-4-desc": "Jaringan Utama Ethereum tempat Anda bertransaksi hari ini telah sebelumnya dirujuk sebagai 'Eth1'. Istilah ini perlahan-lahan dihilangkan dan diganti dengan 'lapisan eksekusi'.", - "page-upgrades-question-5-answer-1": "Untuk menjadi validator penuh dalam jaringan, Anda perlu menaruhkan 32 ETH. Jika Anda tidak mempunyai sebanyak itu, atau tidak mau menaruhkan sebanyak itu, Anda bisa bergabung dengan pool penaruhan. Pool ini memungkinkan Anda bertaruh lebih sedikit dan mendapatkan sebagian dari imbalan total.", + "page-upgrades-question-4-desc": "Sebelum Penggabungan, terkadang rantai blok Ethereum disebut sebagai 'Eth1.' Istilah ini dihilangkan dan digantikan dengan 'lapisan eksekusi'.", + "page-upgrades-question-5-answer-1": "Untuk menjadi validator dalam jaringan, Anda perlu menaruh 32 ETH. Jika Anda tidak memiliki jumlah tersebut, atau tidak bersedia memasang sebanyak itu, Anda dapat bergabung dengan pool penaruhan. Pool penaruhan akan memungkinkan Anda memasang jumlah yang lebih kecil dan mendapatkan bagian dari total hadiah.", "page-upgrades-question-5-desc": "Anda perlu menggunakan launchpad penaruhan atau bergabung dengan pool penaruhan.", "page-upgrades-question-5-title": "Bagaimana cara bertaruh?", "page-upgrades-question-6-answer-3": "Danny Ryan dari Yayasan Ethereum secara teratur memperbarui komunitas:", "page-upgrades-question-6-answer-4": "Ben Edgington dari ConsenSys memiliki buletin mingguan tentang peningkatan Ethereum:", "page-upgrades-question-6-answer-5": "Anda juga dapat bergabung dalam diskusi tentang penelitian dan pengembangan Ethereum di ethresear.ch.", "page-upgrades-question-6-title": "Apa yang harus saya lakukan dengan dapp saya?", - "page-upgrades-question-6-desc": "Dapp Anda tidak akan terpengaruh oleh peningkatan yang akan terjadi. Namun peningkatan di masa mendatang mungkin memerlukan beberapa penyesuaiaan.", - "page-upgrades-question-6-answer-1": "Untuk saat ini, tidak ada yang perlu dilakukan. Tapi kami menyarankan Anda tetap mengikuti perkembangan penggabungan dan peningkatan rantai shard.", + "page-upgrades-question-6-desc": "Penggabungan dirancang agar memiliki dampak minimal bagi pengembang dapp, meskipun ada beberapa perubahan kecil yang perlu dicatat.", + "page-upgrades-question-6-answer-1": "Para pengembang dapp yang sudah terbiasa dengan Ethereum sebelum terjadinya Merge seharusnya menyadari beberapa perubahan. Perubahan-perubahan ini meliputi struktur dan waktu blok, beberapa perubahan opcode, sumber-sumber acak di dalam rantai blok, dan konsep finalitas jangka waktu.", + "page-upgrades-question-6-answer-1-link": "Bagaimana Penggabungan berpengaruh terhadapan Lapisan Aplikasi Ethereum", + "page-upgrades-question-6-answer-2": "Aplikasi hampir tidak terpengaruh secara keseluruhan.", "page-upgrades-question-7-desc": "Banyak tim berbeda dari seluruh komunitas sedang mengerjakan berbagai peningkatan Ethereum.", "page-upgrades-question-7-lighthouse": "Lighthouse", "page-upgrades-question-7-lighthouse-lang": "(Implementasi Rust)", @@ -87,7 +116,7 @@ "page-upgrades-question-7-clients": "Pelajari selengkapnya tentang klien Ethereum", "page-upgrades-question-8-answer-1": "Peningkatan Ethereum akan membantu skala Ethereum secara terdesentralisasi, dengan tetap menjaga keamanan, dan meningkatkan keberlanjutan.", "page-upgrades-question-8-answer-2": "Mungkin, masalah yang paling jelas adalah Ethereum harus mampu menangani lebih dari 15-45 transaksi per detik. Tetapi peningkatan juga menangani beberapa permasalahan lainnya di Ethereum hari ini.", - "page-upgrades-question-8-answer-3": "Jaringan ini sangat diminati sehingga membuat Ethereum menjadi mahal untuk digunakan. Node di jaringan bekerja keras memproses jumlah data yang banyak di Ethereum dan komputer pribadi. Dan algoritma yang mendasari yang membuat Ethereum aman dan terdesentralisasi adalah energi intensif dan perlu lebih ramah lingkungan.", + "page-upgrades-question-8-answer-3": "Pada saat permintaan tinggi, jaringan Ethereum menjadi mahal untuk digunakan. Node dalam jaringan berjuang menghadapi ukuran Ethereum dan jumlah data yang harus diproses oleh komputer mereka. Algoritma asli yang mendasari keamanan dan desentralisasi Ethereum membutuhkan banyak energi dan perlu lebih ramah lingkungan.", "page-upgrades-question-8-answer-4": "Kebanyakan perubahan yang terjadi masih sesuai dengan roadmap Ethereum, bahkan sejak 2015. Tetapi kondisi yang terjadi saat ini membuat kebutuhan akan peningkatan semakin besar.", "page-upgrades-question-8-answer-6": "Jelajahi visi Ethereum", "page-upgrades-question-8-desc": "Ethereum yang kita gunakan hari ini perlu menawarkan pengalaman yang lebih baik bagi pengguna akhir dan peserta jaringan.", @@ -107,32 +136,32 @@ "page-upgrades-question-10-answer-1-link": "Lihat peningkatan", "page-upgrades-question-10-answer-2": "Tetapi jika Anda sudah mengikuti diskusi ini, berikut cara melakukan peningkatan yang sesuai dengan roadmap teknis, dan sedikit tentang perubahannya.", "page-upgrades-question-10-answer-3": "Fase 0 menggambarkan cara mengoperasikan Rantai Suar.", - "page-upgrades-question-10-answer-5": "Fase 1 semula berfokus pada pengimplementasian rantai shard, tetapi penetapan prioritas telah beralih ke 'penggabungan' yang merupakan peningkatan terencana berikutnya.", - "page-upgrades-question-10-answer-6": "Fase 1,5 semula direncanakan setelah implementasi shard, ketika Jaringan Utama akan ditambahkan sebagai shard terakhir ke Rantai Suar. Untuk mempercepat transisi dari penambangan bukti kerja, Jaringan Utama sebaliknya akan merepresentasikan shard pertama yang terhubung dengan Rantai Suar. Ini sekarang dikenal sebagai 'penggabungan' dan akan menjadi langkah penting menuju Ethereum yang lebih ramah lingkungan.", - "page-upgrades-question-10-answer-7": "Sekalipun rencana seputar Fase 2 masih menjadi bagian dari penelitian dan diskusi yang intens, dengan penggabungan yang direncanakan sebelum rantai shard, ini akan memungkinkan penilaian ulang berkelanjutan mengenai kebutuhan pengembangan Ethereum ke depannya. Dengan mempertimbangkan roadmap rollup-centric, keharusan mendesak akan rantai shard masih dalam perdebatan.", + "page-upgrades-question-10-answer-5": "Fase 1 awalnya berfokus pada mengimplementasikan rantai pecahan, tetapi prioritas bergeser ke Penggabungan, yang diluncurkan pada 15 September 2022.", + "page-upgrades-question-10-answer-6": "Fase 1.5 semula direncanakan akan menyusul implementasi pecahan ketika Jaringan Utama akan ditambahkan sebagai shard terakhir ke Rantai Suar. Namun, karena teknologi rollup berkembang pesat, komunitas Ethereum mempercepat transisi dari bukti kerja.", + "page-upgrades-question-10-answer-7": "Rencana seputar Fase 2 telah menjadi titik penelitian dan diskusi yang intens. Dengan Penggabungan sudah di belakang kita, dan kemajuan dalam solusi lapisan ke-2, tujuan telah beralih untuk menyediakan bentuk data pecahan yang lebih sederhana guna memaksimalkan efisiensi rollup. Lapisan ke-2 saat ini memungkinkan kemampuan untuk meningkatkan eksekusi transaksi, dan pecahan akan memungkinkan penyimpanan bukti-bukti untuk data ini di lapisan ke-1 dengan cara yang murah dan dapat ditingkatkan.", "page-upgrades-question-10-answer-8": "Selengkapnya tentang roadmap rollup-centric", "page-upgrades-question-11-title": "Bisakah saya membeli Eth2?", - "page-upgrades-question-11-desc": "Tidak. Tidak ada token Eth2 dan ETH Anda tidak akan berubah setelah penggabungan.", - "page-upgrades-question-11-answer-1": "Salah satu kekuatan pendorong di balik penggantian nama Eth2 adalah kesalahpahaman umum bahwa pemegang ETH harus melakukan migrasi ETH mereka setelah 'Ethereum 2.0'. Hal ini tidak pernah benar. Ini adalah ", - "page-upgrades-question-11-answer-2": "teknik umum yang digunakan penipu.", + "page-upgrades-question-11-desc": "Tidak. Ada token Eth2, dan jumlah ETH Anda tidak berubah setelah Penggabungan.", + "page-upgrades-question-11-answer-1": "Salah satu faktor pendorong di balik rebranding Eth2 adalah kesalahpahaman umum bahwa pemegang ETH diharuskan untuk memindahkan ETH mereka ke 'ETH 2.0' setelah Penggabungan atau pembaruan lainnya. Hal ini tidak benar dan sebenarnya tidak pernah menjadi kewajiban.", + "page-upgrades-question-11-answer-2": " Kerancuan ini sering dimanfaatkan oleh penipu.", "page-upgrades-question-title": "Pertanyaan yang sering diajukan", "page-upgrades-question3-answer-1": "Pemegang ETH tidak perlu melakukan apa pun. ETH Anda tidak perlu diubah ataupun ditingkatkan. Pasti akan ada penipuan yang mengatakan kepada Anda hal sebaliknya, jadi berhati-hatilah.", "page-upgrades-scalable": "Lebih terukur", "page-upgrades-scalable-desc": "Ethereum harus mendukung 1000-an transaksi per detik, agar aplikasi lebih cepat dan murah untuk digunakan.", "page-upgrades-secure": "Lebih aman", "page-upgrades-secure-desc": "Ethereum perlu menjadi lebih aman. Selama adopsi Ethereum bertambah, protokol perlu menjadi lebih aman dari segala macam serangan.", - "page-upgrades-shard-date": "Rantai shard seharusnya diimplementasikan setelah penggabungan, pada suatu waktu di 2023.", - "page-upgrades-shard-desc": "Rantai shard akan memperluas kapasitas Ethereum untuk memproses transaksi dan menyimpan data. Shard sendiri akan mendapatkan tambahan fitur dari waktu ke waktu, diluncurkan dalam beberapa fase.", - "page-upgrades-shard-estimate": "Perkiraan: 2023", - "page-upgrades-shard-lower": "Selengkapnya tentang rantai shard", - "page-upgrades-shard-title": "Rantai shard", + "page-upgrades-shard-date": "Pecahan akan mengikuti Penggabungan dalam beberapa tahap, pada suatu waktu antara 2023-2024.", + "page-upgrades-shard-desc": "Danksharding akan memperluas kapasitas Ethereum untuk menyimpan data, dan akan berfungsi secara harmonis dengan L2 untuk meningkatkan keluaran dan mengurangi biaya jaringan. Danksharding akan diperkenalkan dalam beberapa tahap, dimulai dengan ProtoDanksharding.", + "page-upgrades-shard-estimate": "Perkiraan: 2023-2024", + "page-upgrades-shard-lower": "Lebih lanjut tentang pecahan", + "page-upgrades-shard-title": "Sharding", "page-upgrades-stay-up-to-date": "Tetap ikuti perkembangan", "page-upgrades-stay-up-to-date-desc": "Dapatkan info terbaru dari peneliti dan pengembang yang bekerja pada peningkatan Ethereum.", - "page-upgrades-sustainable-desc": "Ethereum harus menjadi lebih baik untuk lingkungan hidup. Teknologi saat ini masih memerlukan terlalu banyak kekuatan komputasi dan energi.", + "page-upgrades-sustainable-desc": "Ethereum sangat boros energi sampai baru-baru ini. Transisi ke bukti taruhan menghasilkan pengurangan energi jaringan lebih dari 99,9%.", "page-upgrades-take-part": "Turut serta dalam penelitian", "page-upgrades-take-part-desc": "Peneliti dan penggemar Ethereum bertemu di sini untuk membahas upaya penelitian, termasuk semua hal yang terkait dengan peningkatan Ethereum.", "page-upgrades-the-upgrades": "Peningkatan Ethereum", - "page-upgrades-the-upgrades-desc": "Ethereum terdiri dari serangkaian peningkatan yang meningkatkan skalabilitas, keamanan, dan keberlanjutan jaringan. Meskipun masing-masing dikerjakan secara paralel, peningkatan tersebut memiliki dependensi tertentu yang menentukan kapan peningkatan akan disebarkan.", + "page-upgrades-the-upgrades-desc": "Peningkatan pada Ethereum bertujuan untuk meningkatkan skalabilitas, keamanan, dan keberlanjutan jaringan. Baru-baru ini, Ethereum telah mengalami beberapa peningkatan besar dalam hal keamanan dan keberlanjutan, dan masih akan ada lebih banyak peningkatan di masa depan, terutama terkait dengan skalabilitas.", "page-upgrades-unofficial-roadmap": "Ini bukanlah roadmap resmi. Beginilah cara kami melihat apa yang terjadi berdasarkan informasi di luar sana. Tetapi inilah teknologi, segala sesuatu dapat berubah dalam sekejap. Jadi, tolong jangan melihat ini sebagai sebuah komitmen.", "page-upgrades-upgrade-desc": "Ethereum yang kita kenal dan cintai ini, menjadi lebih terukur, lebih aman, dan lebih berkelanjutan...", "page-upgrades-upgrades": "Peningkatan Ethereum", @@ -140,14 +169,15 @@ "page-upgrades-upgrades-beacon-chain": "Rantai Suar", "page-upgrades-upgrades-guide": "Panduan peningkatan Ethereum", "page-upgrades-upgrades-docking": "Penggabungan", + "page-upgrades-energy-consumption": "Lebih lanjut tentang konsumsi energi Ethereum", "page-upgrades-upgrading": "Peningkatan Ethereum ke level baru yang radikal", "page-roadmap-vision": "Visi", "page-roadmap-vision-btn": "Selengkapnya tentang visi Ethereum", "page-roadmap-vision-desc": "Untuk membawa Ethereum ke arus utama dan melayani semua manusia, kita harus membuat Ethereum lebih terukur, aman, dan berkelanjutan.", "page-upgrades-what-happened-to-eth2-title": "Apa yang terjadi dengan 'Eth2?'", - "page-upgrades-what-happened-to-eth2-1": "Istilah 'Eth2' perlahan-lahan dihilangkan sebagai persiapan untuk penggabungan.", + "page-upgrades-what-happened-to-eth2-1": "Sebelum Penggabungan, istilah 'Eth2' sering digunakan, tetapi sekarang digantikan dengan terminologi yang lebih tepat guna.", "page-upgrades-what-happened-to-eth2-1-more": "Selengkapnya tentang penggabungan.", - "page-upgrades-what-happened-to-eth2-2": "Setelah penggabungan 'Eth1' dan 'Eth2' menjadi satu rantai, tidak akan ada lagi perbedaan antara dua Jaringan Ethereum; hanya akan ada Ethereum.", + "page-upgrades-what-happened-to-eth2-2": "Setelah penggabungan antara 'Eth1' dan 'Eth2', tidak lagi terdapat dua rantai blok Ethereum yang berbeda; hanya ada Ethereum satu.", "page-upgrades-what-happened-to-eth2-3": "Untuk mengurangi kebingungan, komunitas telah memperbarui istilah-istilah ini:", "page-upgrades-what-happened-to-eth2-3-1": "'Eth1' sekarang adalah 'lapisan eksekusi', yang menangani transaksi dan eksekusi.", "page-upgrades-what-happened-to-eth2-3-2": "'Eth2' sekarang adalah 'lapisan konsensus', yang menangani konsensus bukti taruhan.", @@ -158,9 +188,9 @@ "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "Salah satu masalah besar dengan merek Eth2 adalah menciptakan suatu model mental yang buruk bagi para pengguna baru Ethereum. Mereka secara intuitif berpikir bahwa Eth1 ada terlebih dahulu dan Eth2 ada setelahnya. Atau, Eth1 tidak akan ada lagi setelah Eth2 beroperasi. Tak satu pun dari kedua anggapan ini adalah benar. Dengan menghilangkan terminologi Eth2, kita mencegah semua pengguna di masa mendatang berjuang memahami model mental yang membingungkan ini.", "page-upgrades-why-cant-we-just-use-eth2-inclusivity-title": "Inklusivitas", "page-upgrades-why-cant-we-just-use-eth2-inclusivity-description": "Karena peta perjalanan Ethereum telah berkembang, Ethereum 2.0 telah menjadi representasi yang tidak akurat untuk peta perjalanan Ethereum. Dengan berhati-hati dan tepat dalam memilih kata yang kami gunakan, ini memungkinkan konten Ethereum mudah dipahami oleh sebanyak mungkin khalayak umum.", - "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-title": "Pencegahan Penipuan", + "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-title": "Pencegahan penipuan", "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "Sayangnya, para pelaku kejahatan telah berusaha menggunakan nama Eth2 yang tidak tepat untuk menipu pengguna dengan memberi tahu agar menukar ETH mereka dengan token 'ETH2' atau mereka harus melakukan migrasi ETH mereka sebelum peningkatan Eth2. Kami berharap pembaruan terminologi ini akan membawa kejelasan untuk membasmi vektor penipuan ini dan membantu menciptakan ekosistem yang lebih aman.", - "page-upgrades-why-cant-we-just-use-eth2-staking-clarity-title": "Kejelasan Penaruhan", + "page-upgrades-why-cant-we-just-use-eth2-staking-clarity-title": "Kejelasan penaruhan", "page-upgrades-why-cant-we-just-use-eth2-staking-clarity-description": "Beberapa operator penaruhan juga telah mewakili ETH yang ditaruhkan di Rantai Suar dengan telegrap 'ETH2'. Ini berpotensi menciptakan kebingungan, mengingat bahwa para pengguna layanan ini tidak benar-benar menerima token 'ETH2'. Tidak ada token 'ETH2'; itu hanya mewakili bagian mereka dalam taruhan penyedia tertentu.", "page-upgrades-what-to-do": "Apa yang harus Anda lakukan?", "page-upgrades-what-to-do-desc": "Jika Anda pengguna dapp atau pemegang ETH, Anda tidak perlu melakukan apa pun. Jika Anda seorang pengembang atau ingin memulai penaruhan, ada cara untuk segera terlibat hari ini.", diff --git a/src/intl/id/page-upgrades.json b/src/intl/id/page-upgrades.json index 529d9db03ed..b194cc6007b 100644 --- a/src/intl/id/page-upgrades.json +++ b/src/intl/id/page-upgrades.json @@ -1,11 +1,18 @@ { + "page-upgrades-merge-infographic-el": "Status Ethereum: transaksi, aplikasi, kontrak, saldo", + "page-upgrades-merge-infographic-alt-text": "Infografis yang menggambarkan bagaimana Rantai Suar bergabung ke dalam lapisan eksekusi Ethereum selama transisi dari bukti kerja ke bukti taruhan.", "page-upgrades-beacon-date": "Terkirim!", "page-upgrades-merge-date": "September 2022", "page-upgrades-shards-date": "~2023", + "page-upgrades-pbs": "Tidak dalam waktu dekat - diperkirakan tahun 2024/25", + "page-upgrades-post-merge-banner-tutorial-ood": "Tutorial ini sudah kedaluwarsa setelah penggabungan dan mungkin tidak berfungsi. Silakan ajukan PR jika Anda ingin berkontribusi.", + "page-upgrades-post-merge-banner-governance-ood": "Beberapa konten di halaman ini sudah kedaluwarsa setelah penggabungan. Silakan ajukan PR jika Anda ingin berkontribusi.", "page-upgrades-upgrades-guide": "Panduan peningkatan Ethereum", "page-upgrades-upgrades-docking": "Penggabungan", - "page-upgrades-shard-title": "Rantai shard", + "page-upgrades-shard-title": "Sharding", "page-upgrades-upgrades-beacon-chain": "Rantai Suar", + "consensus-beaconscan-title": "beaconscan", + "consensus-beaconscan-in-title": "beaconcha.in", "consensus-beaconcha-in-desc": "Penjelajah Rantai Suar sumber terbuka", "consensus-beaconscan-desc": "Penjelajah Rantai Suar - Etherscan untuk lapisan konsensus", "consensus-become-staker": "Menjadi penaruh", diff --git a/src/intl/id/page-wallets-find-wallet.json b/src/intl/id/page-wallets-find-wallet.json index d110e67e4bc..220c5319da8 100644 --- a/src/intl/id/page-wallets-find-wallet.json +++ b/src/intl/id/page-wallets-find-wallet.json @@ -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 kami kebijakan daftar. Jika Anda ingin kami menambahkan dompet, kirim issue di GitHub.", "page-find-wallet-mobile": "Seluler", "page-find-wallet-mobile-desc": "Dompet dengan aplikasi seluler", "page-find-wallet-desktop": "Desktop", diff --git a/src/intl/ig/page-wallets-find-wallet.json b/src/intl/ig/page-wallets-find-wallet.json index e813d434ede..a04880fc959 100644 --- a/src/intl/ig/page-wallets-find-wallet.json +++ b/src/intl/ig/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Nhọcha atụmatụ", "page-find-wallet-footnote-1": "Akpa ego ndi edepụtara na ibe akwụkwọ a abụghị nke gọọmentị kwadoro, ma enyere ya naanị maka ebumnuche ozi.", "page-find-wallet-footnote-2": "Akọwara ha site na ọrụ obere akpa nke onwe ha.", - "page-find-wallet-footnote-3": "Anyị na-etinye ngwaahịa na ibe akwụkwọ a site na usoro anyi dị na ndepụta amụma. Ọ bụrụ na ị ga-achọ ka anyị tinye kwa obere akpa, welite okwu Ń GitHub.", + "page-find-wallet-footnote-3": "Anyị na-etinye ngwaahịa na ibe akwụkwọ a site na usoro anyi dị na ndepụta amụma. Ọ bụrụ na ị ga-achọ ka anyị tinye kwa obere akpa, welite okwu Ń GitHub.", "page-find-wallet-mobile": "Npanaka", "page-find-wallet-mobile-desc": "Akpa ego na ngwa mkpanaka", "page-find-wallet-desktop": "Kọmpụta eji eme ihe na tebụl", diff --git a/src/intl/it/learn-quizzes.json b/src/intl/it/learn-quizzes.json index 5f7f6d391ff..b3cc895eb4c 100644 --- a/src/intl/it/learn-quizzes.json +++ b/src/intl/it/learn-quizzes.json @@ -1,14 +1,33 @@ { + "add-quiz": "Aggiungi una domanda/quiz", + "average-score": "Punteggio medio:", + "basics": "Le basi di Ethereum", + "basics-description": "Questa sezione copre i concetti fondamentali di Ethereum per assicurarti che tu abbia una solida base.", + "completed": "Completato:", + "community-stats": "Statistiche della comunità", + "contribute": "Contribuisci alla nostra biblioteca.", "correct": "Corretto", "explanation": "Spiegazione", "next-question": "Prossima domanda", + "next-quiz": "Prossimo quiz", + "page-assets-merge": "La fusione", + "passed": "Hai superato il quiz!", + "questions": "Domande", + "questions-answered": "Domande con risposta:", + "quizzes-subtitle": "Scopri quanto bene comprendi Ethereum e le criptovalute. Sei pronto a diventare un esperto?", + "retry": "Tasso di ripetizione:", "score": "Punteggio", "see-results": "Visualizza i risultati", "share-results": "Condividi i risultati", - "submit-answer": "Invia risposta", - "test-your-knowledge": "Metti alla prova le tue conoscenze", - "total": "Totale", + "start": "Inizia", + "submit-answer": "Verifica la risposta", + "test-your-knowledge": "Metti alla prova le tue conoscenze su Ethereum", "try-again": "Riprova", + "using-ethereum": "Uso di Ethereum", + "using-ethereum-description": "Esplora le applicazioni del mondo reale di Ethereum e scopri come questa rivoluzionaria piattaforma di blockchain sta rimodellando le industrie. Questo è un ottimo modo per assicurarti di comprendere le cose sufficientemente bene prima di iniziare a utilizzare attivamente le criptovalute.", + "want-more-quizzes": "Desideri vedere altri quiz qui?", + "your-results": "I tuoi risultati", + "your-total": "I tuoi punti totali", "a001-prompt": "La principale differenza tra Ethereum e Bitcoin è:", "a001-a-label": "Ethereum non ti consente di inviare pagamenti ad altre persone", "a001-a-explanation": "Sia Bitcoin che Ethereum ti consentono di inviare pagamenti ad altre persone.", @@ -36,21 +55,21 @@ "a003-c-explanation": "La Ethereum Foundation non svolge alcun ruolo significativo nell'esecuzione quotidiana dei nodi di Ethereum.", "a003-d-label": "Chiunque esegua un nodo", "a003-d-explanation": "Chiunque esegua un nodo è una parte fondamentale dell'infrastruttura di Ethereum. Se non lo hai già fatto, valuta di eseguirne uno.", - "a004-prompt": "Dal lancio di Ethereum, quante volte è andata offline la sua rete?", + "a004-prompt": "Dal lancio di Ethereum, quante volte la rete è stata offline?", "a004-a-label": "Mai", "a004-b-label": "Una volta", "a004-c-label": "Quattro volte", "a004-d-label": "Più di dieci volte", - "a004-explanation": "Ethereum non è mai andata offline dal suo lancio.", + "a004-explanation": "Ethereum non è mai andato completamente offline (interrompendo la produzione dei blocchi) dal suo lancio.", "a005-prompt": "Ethereum consuma più elettricità di:", - "a005-a-label": "YouTube", - "a005-a-explanation": "YouTube utilizza approssimativamente 244 Terawatt all'anno. Ethereum consuma 0,01 Terawatt all'anno.", + "a005-a-label": "Estrazione dell'oro", + "a005-a-explanation": "L'estrazione di oro consuma circa 131 terawatt/ora l'anno. Ethereum consuma circa 0,0026 terawatt/ora l'anno.", "a005-b-label": "Netflix", - "a005-b-explanation": "Netflix utilizza approssimativamente 94 Terawatt all'anno. Ethereum consuma 0,01 Terawatt all'anno.", + "a005-b-explanation": "Netflix consuma circa 0,451 terawatt/ora l'anno. Ethereum consuma circa 0,0026 terawatt/ora l'anno.", "a005-c-label": "PayPal", - "a005-c-explanation": "PayPal utilizza approssimativamente 0,26 Terawatt all'anno. Ethereum consuma 0,01 Terawatt all'anno.", + "a005-c-explanation": "PayPal consuma circa 0,26 terawatt/ora l'anno. Ethereum consuma circa 0,0026 terawatt/ora l'anno.", "a005-d-label": "Nessuna delle precedenti", - "a005-d-explanation": "Ethereum utilizza 0,01 Terawatt all'anno. Meno di YouTube (circa 244 TW/anno), Netfliix (circa 94 TW/anno) e PayPal (circa 0,26 TW/anno).", + "a005-d-explanation": "Ethereum consuma circa 0,0026 terawatt/ora l'anno. Meno dell'estrazione di oro (circa 131 TWh/anno), Netflix (circa 0,451 TWh/anno) e PayPal (circa 0,26 TWh/anno).", "b001-prompt": "Ether è anche noto come:", "b001-a-label": "ETC", "b001-a-explanation": "ETC è il simbolo di Ethereum Classic.", @@ -305,8 +324,5 @@ "h005-c-label": "Eth1", "h005-c-explanation": "Eth1 era il nome originale dato al livello di esecuzione, non al livello del consenso.", "h005-d-label": "Staking", - "h005-d-explanation": "Lo staking consiste nel depositare ETH in un contratto intelligente, per aiutare a proteggere la catena.", - "page-assets-merge": "La fusione", - "security": "Sicurezza", - "page-what-is-ethereum-what-is-ether": "Cos'è un ether?" + "h005-d-explanation": "Lo staking consiste nel depositare ETH in un contratto intelligente, per aiutare a proteggere la catena." } diff --git a/src/intl/it/page-about.json b/src/intl/it/page-about.json index ea528d99c39..54bc1af2357 100644 --- a/src/intl/it/page-about.json +++ b/src/intl/it/page-about.json @@ -9,11 +9,11 @@ "page-about-li-4": "implementato", "page-about-link-1": "Il codice sorgente di questo repository è concesso in licenza con licenza MIT", "page-about-link-2": "GitHub", - "page-about-link-3": "Visualizza l'elenco completo delle attività in corso su GitHub", + "page-about-link-3": "Visualizza l'elenco completo delle attività in corso su Github", "page-about-link-4": "Unisciti al nostro server Discord", "page-about-link-5": "Contattaci su Twitter", - "page-about-link-6": "Visualizza l'elenco completo delle attività implementate su GitHub", - "page-about-link-7": "Apri una segnalazione su GitHub", + "page-about-link-6": "Visualizza l'elenco completo delle attività implementate su Github", + "page-about-link-7": "Apri una segnalazione su Github", "page-about-p-1": "Fin dal lancio di ethereum.org, ci sforziamo di essere trasparenti su come operiamo. Questo è uno dei nostri valori fondamentali perché riteniamo che la trasparenza sia fondamentale per il successo di Ethereum.", "page-about-p-2": "Utilizziamo", "page-about-p-3": "come strumento primario di gestione dei progetti. Organizziamo le nostre attività in tre categorie:", @@ -25,6 +25,7 @@ "page-what-is-ethereum-energy-consumption-chart-legend": "Consumo di energia annuale in TWh/anno", "page-upgrades-post-merge-banner-governance-ood": "Alcuni contenuti su questa pagina sono obsoleti dopo La Fusione. Sei pregato di effettuare una PR, se vorresti contribuire.", "energy-consumption-chart-global-data-centers-label": "Centri elaborazione dati globali", + "energy-consumption-chart-airbnb-label": "AirBnB", "energy-consumption-gold-mining-cbeci-label": "Estrazione dell'oro", "energy-consumption-chart-btc-pow-label": "BTC PoW", "energy-consumption-chart-netflix-label": "Netflix", diff --git a/src/intl/it/page-bug-bounty.json b/src/intl/it/page-bug-bounty.json index 07d8ac9cf29..24b37f3714b 100644 --- a/src/intl/it/page-bug-bounty.json +++ b/src/intl/it/page-bug-bounty.json @@ -1,75 +1,75 @@ { "page-upgrades-bug-bounty-annotated-specs": "specifica annotata", "page-upgrades-bug-bounty-annotations": "Può essere utile consultare le seguenti annotazioni:", - "page-upgrades-bug-bounty-client-bugs": "Bug del client", - "page-upgrades-bug-bounty-client-bugs-desc": "I client eseguiranno la Rete Ethereum e dovranno seguire la logica stabilita nella specifica ed essere al sicuro da potenziali attacchi. I bug che vogliamo trovare sono legati all'implementazione del protocollo.", - "page-upgrades-bug-bounty-client-bugs-desc-2": "Attualmente, i client del livello di esecuzione (Besu, Erigon, Geth e Nethermind) e del livello di consenso (Lighthouse, Lodestar, Nimbus, Teku e Prysm) sono inclusi nel Programma di Bug Bounty. Più client potrebbero essere aggiunti al completamento dei controlli e diventare pronti per la produzione.", + "page-upgrades-bug-bounty-client-bugs": "Bug dei client", + "page-upgrades-bug-bounty-client-bugs-desc": "I client eseguono la Rete Ethereum e devono seguire la logica stabilita nella specifica ed essere al sicuro da potenziali attacchi. I bug che vogliamo trovare sono legati all'implementazione del protocollo.", + "page-upgrades-bug-bounty-client-bugs-desc-2": "Attualmente, i client del livello di esecuzione (Besu, Erigon, Geth e Nethermind) e del livello di consenso (Lighthouse, Lodestar, Nimbus, Teku e Prysm) sono inclusi nel Programma di ricerca dei bug. Altri client potrebbero essere aggiunti al completamento dei controlli e diventare pronti per la produzione.", "page-upgrades-bug-bounty-clients": "Client presenti nei bounty", "page-upgrades-bug-bounty-clients-type-1": "Problemi di non-conformità della specifica", "page-upgrades-bug-bounty-clients-type-2": "Crash imprevisti, RCE o vulnerabilità di tipo denial of service (DOS)", - "page-upgrades-bug-bounty-clients-type-3": "Ogni questione che causa una divisione del consenso dal resto della rete", + "page-upgrades-bug-bounty-clients-type-3": "Ogni questione che causa una divisione irreparabile del consenso dal resto della rete", "page-upgrades-bug-bounty-misc-bugs": "Bug di Solidity", "page-upgrades-bug-bounty-misc-bugs-desc": "Vedi SECURITY.MD di Solidity per ulteriori dettagli su cos'è incluso in questo ambito.", - "page-upgrades-bug-bounty-misc-bugs-desc-2": "Solidity non possiede garanzie di sicurezza relative alla compilazione di input non attendibili e noi non forniamo ricompense per i crash del compilatore solc su dati generati in modo maligno.", - "page-upgrades-bug-bounty-deposit-bugs": "Bug del Contratto di Deposito", - "page-upgrades-bug-bounty-deposit-bugs-desc": "Le specifiche e il codice sorgente del contratto di deposito della Beacon Chain sono parte del programma di caccia ai bug.", + "page-upgrades-bug-bounty-misc-bugs-desc-2": "Solidity non possiede garanzie di sicurezza relative alla compilazione di input non attendibili e noi non forniamo ricompense per i crash del compilatore solc su dati generati in modo malevolo.", + "page-upgrades-bug-bounty-deposit-bugs": "Bug del contratto di deposito", + "page-upgrades-bug-bounty-deposit-bugs-desc": "Le specifiche e il codice sorgente del contratto di deposito della Beacon Chain sono parte del programma di ricerca dei bug.", "page-upgrades-bug-bounty-docking": "fusione", "page-upgrades-bug-bounty-email-us": "Scrivici:", "page-upgrades-bug-bounty-help-links": "Link utili", "page-upgrades-bug-bounty-hunting": "Regole per la ricerca di bug", - "page-upgrades-bug-bounty-hunting-desc": "Il programma bug bounty è un programma di ricompense sperimentale e discrezionale per la nostra comunità attiva di Ethereum per incoraggiare e premiare coloro che stanno aiutando a migliorare la piattaforma. Non è una competizione. Dovresti sapere che possiamo annullare il programma in qualsiasi momento e i premi sono a esclusiva discrezione del pannello di ricompense dei bug dell'Ethereum Foundation. Inoltre, non siamo in grado di emettere riconoscimenti a persone che sono negli elenchi delle sanzioni o che si trovano in paesi negli elenchi delle sanzioni (ad es. Corea del Nord, Iran, ecc.). Le leggi locali ci impongono di chiedere una prova della tua identità. Sei responsabile di tutte le tasse. Tutti i premi sono soggetti alla legge applicabile. Infine, i tuoi test non devono violare alcuna legge o compromettere dati che non sono tuoi e devono aver luogo su testnet locali in esecuzione.", - "page-upgrades-bug-bounty-hunting-leaderboard": "Classifica delle ricompense per i bug sul livello di consenso", - "page-upgrades-bug-bounty-hunting-execution-leaderboard": "Classifica delle ricompense per i bug sul livello di esecuzione", - "page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "Trova i bug del livello di consenso per esser aggiunto a questa classifica", - "page-upgrades-bug-bounty-hunting-execution-leaderboard-subtitle": "Trova i bug del livello di esecuzione per esser aggiunto a questa classifica", - "page-upgrades-bug-bounty-hunting-li-1": "I problemi senza una POC già inviati da un altro utente o già noti ai responsabili della manutenzione delle specifiche e dei client non verranno considerati ai fini delle ricompense del bounty.", - "page-upgrades-bug-bounty-hunting-li-2": "La divulgazione al pubblico di una vulnerabilità la rende inammissibile al bounty.", + "page-upgrades-bug-bounty-hunting-desc": "Il programma di ricerca dei bug è un programma sperimentale e discrezionale di ricompense per la nostra community attiva di Ethereum per incoraggiare e premiare coloro che stanno aiutando a migliorare la piattaforma. Non è una competizione. Dovresti sapere che possiamo annullare il programma in qualsiasi momento e le ricompense sono a esclusiva discrezione della commissione bug bounty dell'Ethereum Foundation. Inoltre, non siamo in grado di assegnare riconoscimenti a persone che sono presenti negli elenchi delle sanzioni o che si trovano in paesi inclusi negli elenchi delle sanzioni (ad es. Corea del Nord, Iran, ecc.). Le leggi locali ci impongono di chiedere una prova della tua identità. Sei responsabile di tutte le imposte. Tutte le ricompense sono soggette al diritto applicabile. Infine, i tuoi test non devono violare alcuna legge o compromettere dati che non sono tuoi e devono aver luogo su reti di prova locali in esecuzione.", + "page-upgrades-bug-bounty-hunting-leaderboard": "Classifica dei cercatori di bug sul livello di consenso", + "page-upgrades-bug-bounty-hunting-execution-leaderboard": "Classifica dei cercatori di bug sul livello di esecuzione", + "page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "Trova bug del livello di consenso per esser aggiunto a questa classifica", + "page-upgrades-bug-bounty-hunting-execution-leaderboard-subtitle": "Trova bug del livello di esecuzione per esser aggiunto a questa classifica", + "page-upgrades-bug-bounty-hunting-li-1": "I problemi senza una POC, già inviati da un altro utente o già noti ai responsabili della manutenzione delle specifiche e dei client non verranno considerati ai fini delle ricompense del bounty.", + "page-upgrades-bug-bounty-hunting-li-2": "La divulgazione al pubblico di una vulnerabilità la rende inammissibile alla ricompensa.", "page-upgrades-bug-bounty-hunting-li-3": "Dipendenti e professionisti della Ethereum Foundation o dei team del client nell'ambito del programma bounty possono partecipare al programma solo nella maturazione di punti e non riceveranno ricompense finanziarie.", - "page-upgrades-bug-bounty-hunting-li-4": "Il programma bounty Ethereum prende in considerazione un certo numero di variabili per determinare le ricompense. Le decisioni in materia di ammissibilità, punteggio e tutti i termini relativi a una ricompensa sono a sola discrezione finale della commissione bug bounty della Ethereum Foundation.", + "page-upgrades-bug-bounty-hunting-li-4": "Il programma bounty di Ethereum prende in considerazione un certo numero di variabili per determinare le ricompense. Le decisioni in materia di ammissibilità, punteggio e tutti i termini relativi a una ricompensa sono a discrezione esclusiva e finale della commissione bug bounty della Ethereum Foundation.", "page-upgrades-bug-bounty-leaderboard": "Vedi le classifiche complete", "page-upgrades-bug-bounty-leaderboard-list": "Classifica dei cercatori di bug", "page-upgrades-bug-bounty-leaderboard-points": "punti", - "page-upgrades-bug-bounty-ledger-desc": "Le Specifiche di Ethereum descrivono in dettaglio la logica progettuale per il Livello di Esecuzione e il Livello di Consenso.", + "page-upgrades-bug-bounty-ledger-desc": "Le Specifiche di Ethereum descrivono in dettaglio la logica di progettazione per il Livello di Esecuzione e il Livello di Consenso.", "page-upgrades-bug-bounty-ledger-title": "Bug delle specifiche", - "page-upgrades-bug-bounty-meta-description": "Una panoramica del programma bug bounty di Ethereum: come partecipare e informazioni sulle ricompense.", - "page-upgrades-bug-bounty-meta-title": "Programma Bug Bounty di Ethereum", + "page-upgrades-bug-bounty-meta-description": "Una panoramica del programma di ricerca dei bug di Ethereum: come partecipare e informazioni sulle ricompense.", + "page-upgrades-bug-bounty-meta-title": "Programma di ricerca dei bug di Ethereum", "page-upgrades-bug-bounty-not-included": "Fuori ambito", - "page-upgrades-bug-bounty-not-included-desc": "Solo gli obiettivi elencati come 'In ambito' sono parte del Programma Bug Bounty. Questo significa che, ad esempio, la nostra infrastruttura – come pagine web, dns, email, ecc. – non rientra nell'ambito del bug bounty. I bug del contratto ERC20 non sono tipicamente inclusi nell'ambito del bug bounty. Tuttavia, in questi casi possiamo aiutare a contattare le parti colpite, come autori o borse. ENS è mantenuto dalla fondazione ENS e non rientra nell'ambito del bug bounty.", + "page-upgrades-bug-bounty-not-included-desc": "Solo gli obiettivi elencati come 'In ambito' sono parte del Programma di ricerca dei bug. Questo significa che, ad esempio, la nostra infrastruttura – come pagine web, dns, email, ecc. – non rientra nell'ambito del bug bounty. I bug del contratto ERC20 non sono tipicamente inclusi nell'ambito del bug bounty. Tuttavia, in questi casi possiamo aiutare a contattare le parti colpite, come autori o borse. ENS è mantenuto dalla fondazione ENS e non rientra nell'ambito del bug bounty. Le vulnerabilità che richiedono che l'utente abbia esposto pubblicamente un'API, come JSON-RPC o l'API Beacon, sono fuori dall'ambito di applicazione della ricompensa.", "page-upgrades-bug-bounty-owasp": "Visualizza metodo OWASP", "page-upgrades-bug-bounty-points": "La EF fornirà anche ricompense in base a:", "page-upgrades-bug-bounty-points-error": "Errore nel caricamento dei dati... aggiorna.", "page-upgrades-bug-bounty-points-exchange": "Scambio dei punti", "page-upgrades-bug-bounty-points-loading": "Caricamento dati in corso...", - "page-upgrades-bug-bounty-points-payout-desc": "La Ethereum Foundation ti pagherà del valore di USD in ETH o DAI.", + "page-upgrades-bug-bounty-points-payout-desc": "La Ethereum Foundation pagherà il valore dei dollari americani in ETH o DAI.", "page-upgrades-bug-bounty-points-point": "1 punto", "page-upgrades-bug-bounty-points-rights-desc": "La Ethereum Foundation si riserva il diritto di modificare questa disposizione senza preavviso.", "page-upgrades-bug-bounty-points-usd": "2 USD", "page-upgrades-bug-bounty-quality": "Qualità della descrizione", - "page-upgrades-bug-bounty-quality-desc": ": Le ricompense più elevate sono pagate per le comunicazioni chiare e ben scritte.", - "page-upgrades-bug-bounty-quality-fix": "Qualità della correzione, se inclusa: sono riconosciute ricompense più elevate per l'inoltro di chiare descrizioni su come correggere il problema.", + "page-upgrades-bug-bounty-quality-desc": ": sono riconosciute ricompense più elevate per comunicazioni chiare e ben scritte.", + "page-upgrades-bug-bounty-quality-fix": "Qualità della correzione, se inclusa: sono riconosciute ricompense più elevate per comunicazioni con descrizioni chiare di come correggere il problema.", "page-upgrades-bug-bounty-quality-repro": "Qualità della riproducibilità", - "page-upgrades-bug-bounty-quality-repro-desc": ": Per essere idonei a ricevere ricompense occorre includere una proof of concept (POC). Si prega di includere il codice di test, script e istruzioni dettagliate. Più facile sarà per noi riprodurre e verificare la vulnerabilità, maggiore sarà la ricompensa.", + "page-upgrades-bug-bounty-quality-repro-desc": ": per essere idonei a ricevere ricompense occorre includere una proof of concept (POC). Si prega di includere il codice di test, script e istruzioni dettagliate. Più facile sarà per noi riprodurre e verificare la vulnerabilità, maggiore sarà la ricompensa.", "page-upgrades-bug-bounty-questions": "Domande?", "page-upgrades-bug-bounty-rules": "Leggi le regole", - "page-upgrades-bug-bounty-slogan": "Programma Bug Bounty", + "page-upgrades-bug-bounty-slogan": "Programma di ricerca dei bug", "page-upgrades-bug-bounty-specs": "Specifiche del Livello di Consenso", "page-upgrades-bug-bounty-execution-specs": "Specifiche del Livello di Esecuzione", "page-upgrades-bug-bounty-specs-docs": "Documenti di specifica", "page-upgrades-bug-bounty-submit": "Segnala un bug", - "page-upgrades-bug-bounty-submit-desc": "Per ogni bug valido che trovi, riceverai delle ricompense. La quantità di ricompense riconosciute varierà in base alla Gravità. La gravità è calcolata secondo il modello di valutazione dei rischi OWASP, basato sull'Impatto sulla Rete Ethereum e sul Probabilità.", - "page-upgrades-bug-bounty-subtitle": "Guadagna fino a $250.000 USD e un posto in classifica trovando bug nel protocollo, nei client e in Solidity che influenzano la rete Ethereum.", + "page-upgrades-bug-bounty-submit-desc": "Per ogni bug valido che trovi, riceverai delle ricompense. La quantità di ricompense riconosciute varierà in base alla Gravità. La gravità è calcolata secondo il modello di valutazione dei rischi OWASP, basato sull'Impatto sulla Rete Ethereum e sulla Probabilità.", + "page-upgrades-bug-bounty-subtitle": "Guadagna fino a 250.000 USD e un posto in classifica trovando bug nel protocollo, nei client e in Solidity che interessano la rete Ethereum.", "page-upgrades-bug-bounty-title": "Aperto alle segnalazioni", - "page-upgrades-bug-bounty-title-1": "La beacon chain", - "page-upgrades-bug-bounty-title-2": "Scelta del fork", + "page-upgrades-bug-bounty-title-1": "La Beacon Chain", + "page-upgrades-bug-bounty-title-2": "Scelta della biforcazione", "page-upgrades-bug-bounty-title-3": "Contratto di deposito Solidity", "page-upgrades-bug-bounty-title-4": "Networking peer-to-peer", "page-upgrades-bug-bounty-type-1": "Bug di sicurezza/compromissione della finalità", "page-upgrades-bug-bounty-type-2": "Vettori denial of service (DOS)", - "page-upgrades-bug-bounty-type-3": "Incongruenze nelle ipotesi, come situazioni in cui validatori onesti possono essere espulsi", + "page-upgrades-bug-bounty-type-3": "Incongruenze nelle ipotesi, come situazioni in cui validatori onesti possono essere sanzionati", "page-upgrades-bug-bounty-type-4": "Incongruenze di calcolo o dei parametri", "page-upgrades-bug-bounty-types": "Tipi di bug", "page-upgrades-bug-bounty-validity": "In ambito", - "page-upgrades-bug-bounty-validity-desc": "Il nostro programma bug bounty si estende end-to-end: dalla solidità dei protocolli (come il modello di consenso della blockchain, i protocolli via cavo e p2p, proof-of-stake, ecc.) e la conformità del protocollo/implementazione alla sicurezza della rete e all'integrità del consenso. Fanno parte del programma anche la classica sicurezza del client nonché la sicurezza dei primitivi crittografici. In caso di dubbi, invia un'email a bounty@ethereum.org.", + "page-upgrades-bug-bounty-validity-desc": "Il nostro programma di ricerca dei bug si estende end-to-end: dalla solidità dei protocolli (come il modello di consenso della blockchain, i protocolli via cavo e p2p, proof-of-stake, ecc.) e la conformità del protocollo/implementazione alla sicurezza della rete e all'integrità del consenso. Fanno parte del programma anche la classica sicurezza del client nonché la sicurezza dei primitivi crittografici. In caso di dubbi, invia un'email a bounty@ethereum.org.", "page-upgrades-bug-bounty-card-critical": "Critico", "page-upgrades-bug-bounty-card-critical-risk": "Invia bug a rischio critico", "page-upgrades-bug-bounty-card-h2": "Medio", @@ -96,41 +96,41 @@ "page-upgrades-bug-bounty-card-medium-risk": "Segnala bug a rischio medio", "page-upgrades-bug-bounty-card-subheader": "Gravità", "page-upgrades-bug-bounty-card-subheader-2": "Esempio", - "page-upgrades-bug-bounty-card-text": "Un utente malintenzionato potrebbe impostare un nodo su uno stato che faccia fallire una su cento attestazioni eseguite da un validatore", + "page-upgrades-bug-bounty-card-text": "Un utente malintenzionato potrebbe impostare un nodo su uno stato che faccia fallire un'attestazione su cento attestazioni eseguite da un validatore", "page-upgrades-bug-bounty-card-text-1": "Un utente malintenzionato può condurre con successo attacchi eclipse su nodi con Id peer aventi byte a 4 zeri iniziali", - "page-upgrades-bug-bounty-card-text-2": "Gli utenti malintenzionati possono eseguire correttamente la partizione di grandi parti della rete, ed è banale che un utente malintezionato inneschi la vulnerabilità", + "page-upgrades-bug-bounty-card-text-2": "Gli utenti malintenzionati possono eseguire correttamente la partizione di grandi parti della rete, ed è banale che un utente malintenzionato inneschi la vulnerabilità", "page-upgrades-bug-bounty-card-text-3": "L'utente malintenzionato può condurre con successo l'esecuzione del codice da remoto in un client di maggioranza ed è banale che un utente malintenzionato inneschi la vulnerabilità", "page-upgrades-question-title": "Domande frequenti", "bug-bounty-faq-q1-title": "Come dovrebbe presentarsi una buona segnalazione di vulnerabilità?", "bug-bounty-faq-q1-contentPreview": "Vedi un esempio reale di una segnalazione di vulnerabilità di qualità.", - "bug-bounty-faq-q1-content-1": "Descrizione: Denial-of-service remota che utilizza blocchi non convalidati", - "bug-bounty-faq-q1-content-2": "Scenario di attacco: Un utente malevolo può inviare dei blocchi che potrebbero richiedere un'elevata quantità di calcolo (il gasLimit massimo), ma senza proof-of-work. Se l'utente malevolo invia continuamente dei blocchi, potrebbe obbligare il nodo della vittima a utilizzare il 100% della CPU.", - "bug-bounty-faq-q1-content-3": "Impatto: Un utente malevolo può abusare dell'utilizzo della CPU sui nodi remoti, causando anche una DoS completa.", - "bug-bounty-faq-q1-content-4": "Componenti: Client Go versione v0.6.8", - "bug-bounty-faq-q1-content-5": "Riproduzione: Inviare un blocco a un nodo di Go, contenente molti txs, ma nessuna PoW valida.", - "bug-bounty-faq-q1-content-6": "Dettagli: I blocchi sono validati nel metodo Process(Block, dontReact). Questo metodo esegue attività dispendiose e onerose per la CPU, come eseguire le transazioni (sm.ApplyDiff) e, in seguito, verifica il proof-of-work (sm.ValidateBlock()). Ciò consente a un utente malevolo di inviare dei blocchi che potrebbero richiedere un'elevata quantità di calcoli (il gasLimit massimo), ma non contengono proof-of-work. Se l'utente malevolo invia continuamente dei blocchi, potrebbe obbligare il nodo della vittima a utilizzare il 100% della CPU.", - "bug-bounty-faq-q1-content-7": "Soluzione: Invertire l'ordine dei controlli.", + "bug-bounty-faq-q1-content-1": "Descrizione: denial-of-service remota che utilizza blocchi non convalidati", + "bug-bounty-faq-q1-content-2": "Scenario di attacco: un utente malevolo può inviare dei blocchi che potrebbero richiedere un'elevata quantità di calcolo (il gasLimit massimo), ma senza proof-of-work. Se l'utente malevolo invia continuamente dei blocchi, potrebbe obbligare il nodo della vittima a utilizzare il 100% della CPU.", + "bug-bounty-faq-q1-content-3": "Impatto: un utente malevolo può abusare dell'utilizzo della CPU sui nodi remoti, causando anche una DoS completa.", + "bug-bounty-faq-q1-content-4": "Componenti: client Go versione v0.6.8", + "bug-bounty-faq-q1-content-5": "Riproduzione: inviare un blocco a un nodo di Go, contenente molti txs, ma nessuna PoW valida.", + "bug-bounty-faq-q1-content-6": "Dettagli: i blocchi sono validati nel metodo Process(Block, dontReact). Questo metodo esegue attività dispendiose e onerose per la CPU, come eseguire le transazioni (sm.ApplyDiff) e, in seguito, verifica il proof-of-work (sm.ValidateBlock()). Ciò consente a un utente malevolo di inviare dei blocchi che potrebbero richiedere un'elevata quantità di calcoli (il gasLimit massimo), ma non contengono proof-of-work. Se l'utente malevolo invia continuamente dei blocchi, potrebbe obbligare il nodo della vittima a utilizzare il 100% della CPU.", + "bug-bounty-faq-q1-content-7": "Soluzione: invertire l'ordine dei controlli.", "bug-bounty-faq-q2-title": "Il programma di ricerca dei bug è limitato nel tempo?", "bug-bounty-faq-q2-contentPreview": "No.", "bug-bounty-faq-q2-content-1": "Al momento, non è fissata alcuna data di fine. Leggi il blog della Ethereum Foundation per le ultime notizie.", "bug-bounty-faq-q3-title": "Come sono pagate le ricompense?", "bug-bounty-faq-q3-contentPreview": "Le ricompense sono pagate in ETH o DAI.", - "bug-bounty-faq-q3-content-1": "Le ricompense sono pagate in ETH o DAI dopo che la segnalazione è stata convalidata, solitamente, dopo qualche giorno. Le leggi locali ci impongono una prova della tua identità. Inoltre, avremo bisogno del tuo indirizzo ETH.", + "bug-bounty-faq-q3-content-1": "Le ricompense sono pagate in ETH o DAI dopo che la segnalazione è stata convalidata, solitamente dopo qualche giorno. Le leggi locali ci impongono di chiedere una prova della tua identità. Inoltre, avremo bisogno del tuo indirizzo ETH.", "bug-bounty-faq-q4-title": "Posso donare la mia ricompensa in beneficenza?", "bug-bounty-faq-q4-contentPreview": "Sì!", "bug-bounty-faq-q4-content-1": "Possiamo donare la tua ricompensa a una consolidata organizzazione di beneficenza di tua scelta.", - "bug-bounty-faq-q5-title": "Ho segnalato un problema / una vulnerabilità, ma non ho ricevuto una risposta!", + "bug-bounty-faq-q5-title": "Ho segnalato un problema / una vulnerabilità ma non ho ricevuto una risposta!", "bug-bounty-faq-q5-contentPreview": "Ti invitiamo ad attendere qualche giorno che qualcuno risponda alla tua segnalazione.", - "bug-bounty-faq-q5-content-1": "Il nostro obiettivo è rispondere alle segnalazioni il più velocemente possibile. Puoi anche inviarci un'email a bounty@ethereum.org, se non hai ricevuto una risposta entro uno o due giorni.", - "bug-bounty-faq-q6-title": "Desidero restare anonimo / Non voglio che il mio nome appaia sulla classifica.", + "bug-bounty-faq-q5-content-1": "Il nostro obiettivo è rispondere alle segnalazioni il più velocemente possibile. Puoi anche inviarci un'email a bounty@ethereum.org se non ricevi una risposta entro uno o due giorni.", + "bug-bounty-faq-q6-title": "Desidero restare anonimo / Non voglio che il mio nome appaia nella classifica.", "bug-bounty-faq-q6-contentPreview": "Puoi farlo, ma in questo modo potresti non ricevere la ricompensa.", - "bug-bounty-faq-q6-content-1": "L'invio anonimo o con uno pseudonimo è accettato, ma non consente di guadagnare la ricompensa in ETH/DAI. Per poter ricevere le ricompense ETH/DAI, chiediamo il tuo nome reale e una prova della tua identità. Per donare la ricompensa in beneficenza non occorre dimostrare la propria identità.", + "bug-bounty-faq-q6-content-1": "L'invio anonimo o con uno pseudonimo è accettato, ma non consente di guadagnare la ricompensa in ETH/DAI. Per poter ricevere le ricompense in ETH/DAI, ci serve il tuo nome reale e una prova della tua identità. Per donare la ricompensa in beneficenza non occorre dimostrare la propria identità.", "bug-bounty-faq-q6-content-2": "Sei pregato di farci sapere se desideri che il tuo nome/nickname non compaia nella classifica.", "bug-bounty-faq-q7-title": "Cosa sono i punti nella classifica?", "bug-bounty-faq-q7-contentPreview": "A ogni vulnerabilità / criticità trovata è assegnato un punteggio", - "bug-bounty-faq-q7-content-1": "A ogni vulnerabilità / criticità, è assegnato un punteggio. I cacciatori di ricompense sono inseriti in una classifica in base ai punti totali.", + "bug-bounty-faq-q7-content-1": "A ogni vulnerabilità / criticità trovata è assegnato un punteggio. I cacciatori di ricompense sono inseriti in una classifica in base ai punti totali.", "bug-bounty-faq-q8-title": "Avete una chiave PGP?", "bug-bounty-faq-q8-contentPreview": "Sì. Espandi per i dettagli.", - "bug-bounty-faq-q8-content-1": "Usare AE96 ED96 9E47 9B00 84F3 E17F E88D 3334 FA5F 6A0A", + "bug-bounty-faq-q8-content-1": "Usa AE96 ED96 9E47 9B00 84F3 E17F E88D 3334 FA5F 6A0A", "bug-bounty-faq-q8-PGP-key": "Chiave PGP" } diff --git a/src/intl/it/page-developers-docs.json b/src/intl/it/page-developers-docs.json index 27659a79a91..9d928279f93 100644 --- a/src/intl/it/page-developers-docs.json +++ b/src/intl/it/page-developers-docs.json @@ -117,6 +117,7 @@ "docs-nav-networking-layer": "Livello di rete", "docs-nav-networking-layer-description": "Spiegazione del livello di rete di Ethereum", "docs-nav-networking-layer-network-addresses": "Indirizzi di rete", + "docs-nav-networking-layer-portal-network": "Portale della rete", "docs-nav-data-structures-and-encoding": "Strutture di dati e codifica", "docs-nav-data-structures-and-encoding-description": "Spiegazione delle strutture di dati e dello schema di codifica usato per lo stack di Ethereum", "docs-nav-data-structures-and-encoding-rlp": "Prefisso a lunghezza ricorsiva (RLP)", diff --git a/src/intl/it/page-developers-tutorials.json b/src/intl/it/page-developers-tutorials.json index 99b7ccd04a1..a5316df6ac9 100644 --- a/src/intl/it/page-developers-tutorials.json +++ b/src/intl/it/page-developers-tutorials.json @@ -24,5 +24,6 @@ "page-tutorial-intermediate": "Intermedio", "page-tutorial-advanced": "Argomenti avanzati", "page-find-wallet-try-removing": "Prova rimuovere una o due funzionalità", - "page-find-wallet-clear": "Cancella filtri" + "page-find-wallet-clear": "Cancella filtri", + "page-tutorials-env-banner": "Non eseguire l'.env! Si sconsiglia vivamente d'esporre i propri dati personali contenuti nel file.env o di condividerli con altri, poiché questo potrebbe compromettere la segretezza dei tuoi dati personali. Se utilizzi già un modello per il controllo dei dati, aggiungi il tuo .env al file gitignore." } diff --git a/src/intl/it/page-learn.json b/src/intl/it/page-learn.json index d935e8523bd..68de4bdc7f1 100644 --- a/src/intl/it/page-learn.json +++ b/src/intl/it/page-learn.json @@ -1,49 +1,48 @@ { "toc-learn-hub": "Learn Hub", - "toc-what-is-crypto-ethereum": "Cosa sono le criptovalute ed Ethereum?", + "toc-what-is-crypto-ethereum": "Cos'è Ethereum?", "toc-how-do-i-use-ethereum": "Come posso utilizzare Ethereum?", "toc-what-is-ethereum-used-for": "Per cosa è utilizzato Ethereum?", "toc-strengthen-the-ethereum-network": "Rafforzare la rete di Ethereum", - "toc-learn-about-the-ethereum-protocol": "Impara sul protocollo di Ethereum", - "toc-learn-about-the-ethereum-community": "Impara sulla community di Ethereum", + "toc-learn-about-the-ethereum-protocol": "Maggiori informazioni sul protocollo di Ethereum", + "toc-learn-about-the-ethereum-community": "Maggiori informazioni sulla community di Ethereum", "toc-books-and-podcasts": "Libri e podcast", "hero-header": "Informazioni su Ethereum", "hero-subtitle": "La tua guida educativa al mondo di Ethereum. Scopri come funziona e come connetterti. Questa pagina include articoli, guide e risorse tecnici e non tecnici.", "hero-button-lets-get-started": "Iniziamo", - "what-is-crypto-1": "Potresti aver sentito parlare di criptovalute, Bitcoin e blockchain. Questa pagina ti aiuterà ad apprendere come sono legate a Ethereum.", - "what-is-crypto-link-1": "E, in ogni caso, cos'è Ethereum?", - "what-is-crypto-2": "Bitcoin consente a chiunque di trasferire denaro globalmente. Anche Ethereum lo fa e consente a chiunque di creare e concordare qualsiasi tipo di contratto che possa immaginare. È sia resiliente che flessibile: qualsiasi programma informatico può essere eseguito su Ethereum.", + "what-is-crypto-1": "Potresti aver sentito parlare di criptovalute, blockchain e Bitcoin. I link che seguono ti aiuteranno a capire cosa sono e come si relazionano con Ethereum.", + "what-is-crypto-2": "Le criptovalute, come Bitcoin, consentono a chiunque di trasferire denaro a livello globale. Anche Ethereum lo fa, ma può anche eseguire del codice che consente alle persone di creare applicazioni e organizzazioni. È al tempo stesso resistente e flessibile: qualsiasi programma informatico può essere eseguito su Ethereum. Per saperne di più e scoprire come iniziare:", "what-is-ethereum-card-title": "Cos'è Ethereum?", "what-is-ethereum-card-description": "Se sei nuovo, inizia qui ad apprendere perché Ethereum è importante.", "what-is-ethereum-card-image-alt": "Illustrazione di una persona che sbircia in un bazar, che rappresenta Ethereum.", "what-is-eth-card-title": "Cos'è ETH?", "what-is-eth-description": "Ether (ETH) è la valuta alla base della rete e delle app di Ethereum.", - "where-can-i-get-eth-card-title": "Dove posso ottenere degli ETH?", - "where-can-i-get-eth-card-description": "Esistono molti modi per ottenere ETH, a seconda della tua posizione.", + "what-is-web3-card-title": "Cos'è il Web3?", + "what-is-web3-card-description": "Web3 è un modello di Internet che valorizza la proprietà delle tue risorse e della tua identità.", "additional-reading-more-on-ethereum-basics": "Ulteriori informazioni sui fondamenti di Ethereum", + "guides-hub-desc": "Guide: istruzioni passo-passo sull'utilizzo di Ethereum", + "quiz-hub-desc": "Quiz hub: metti alla prova le tue conoscenze", "additional-reading-what-are-smart-contracts": "Cosa sono i contratti intelligenti?", - "additional-reading-a-developers-intro": "Un'introduzione a Ethereum per gli sviluppatori", "additional-reading-what-is-web3": "Cos'è web3?", - "additional-reading-value": "Cos'è il valore?", - "additional-reading-decentralize-everything": "Decentralizza tutto", - "how-do-i-use-ethereum-1": "Utilizzare Ethereum è come trasferirsi in un posto nuovo. Inizialmente sembrerà poco familiare, e ognuno si trasferisce per i propri motivi. Nonostante ciò, la prima cosa di cui avrai bisogno sono le nuove chiavi. Il software che crea e detiene le chiavi per la tua nuova casa è chiamato \"portafoglio\".", + "additional-reading-ethereum-in-thirty-minutes": "Ethereum in 30 minuti, di Vitalik Buterin", + "additional-reading-get-eth": "Scopri come ottenere ETH", + "how-do-i-use-ethereum-1": "Utilizzare Ethereum può significare diverse cose per diverse persone. Forse vuoi accedere a un'applicazione, dimostrare la tua identità online o trasferire un po' di ETH. La prima cosa di cui avrai bisogno è un conto. Il modo più semplice per creare e accedere a un conto è utilizzare un'applicazione chiamata portafoglio.", "what-is-a-wallet-card-title": "Cos'è un portafoglio?", - "what-is-a-wallet-card-description": "I portafogli sono come portachiavi: memorizzano ciò che ti serve per ottenere l'accesso ai luoghi a cui tieni.", + "what-is-a-wallet-card-description": "I portafogli digitali sono come i portafogli veri e propri: conservano ciò che serve per dimostrare la propria identità e per accedere ai luoghi che si apprezzano.", "what-is-a-wallet-card-alt": "Figura di un robot.", "find-a-wallet-card-title": "Trova un portafoglio", - "find-a-wallet-card-description": "Ti aiuteremo a trovare il portafoglio migliore a seconda delle caratteristiche che più ti importano.", + "find-a-wallet-card-description": "Dai un'occhiata ai portafogli in base alle caratteristiche che ti interessano.", "find-a-wallet-button": "Elenco di portafogli", "crypto-security-basics-card-title": "Fondamenti di sicurezza", "crypto-security-basics-card-description": "Scopri come identificare le truffe e come evitare i trucchi più comuni.", "crypto-security-basics-card-button": "Mantieni la sicurezza", "things-to-consider-banner-title": "Cose da considerare utilizzando Ethereum", - "things-to-consider-banner-1": "Ogni transazione di Ethereum richiede una commissione nella forma di ETH, anchse se devi spostare token differenti basati su Ethereum, come gli stablecoin USDC o DAI.", + "things-to-consider-banner-1": "Ogni transazione di Ethereum richiede una commissione nella forma di ETH, anche se devi spostare token differenti basati su Ethereum, come gli stablecoin USDC o DAI.", "things-to-consider-banner-2": "Le commissioni possono essere elevate a seconda del numero di persone che sta provando a utilizzare Ethereum, quindi consigliamo di utilizzare i", "things-to-consider-banner-layer-2": "Livelli 2", "additional-reading-more-on-using-ethereum": "Ulteriori informazioni sull'utilizzo di Ethereum", - "additional-reading-how-to-create-an-ethereum-account": "Come \"registrare\" un conto di 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", - "additional-reading-support-for-ethereum-and-wallets": "Supporto per Ethereum e i portafogli", "additional-reading-layer-2": "Livello 2: ridurre le commissioni di transazione", "what-is-ethereum-used-for-1": "Ethereum ha portato alla creazione di nuovi prodotti e servizi capaci di migliorare diverse aree delle nostre vite. Siamo ancora agli inizi, ma c'è molto di cui essere entusiasti.", "defi-card-title": "Finanza Decentralizzata (DeFi)", @@ -86,13 +85,10 @@ "ethereum-whitepaper-card-button": "Leggi il whitepaper", "more-on-ethereum-protocol-title": "Maggiori informazioni sul protocollo di Ethereum", "more-on-ethereum-protocol-ethereum-for-developers": "Ethereum per sviluppatori", - "more-on-ethereum-protocol-eips": "Proposte di miglioramento di Ethereum (EIP)", - "more-on-ethereum-protocol-history": "Storia di Ethereum", - "more-on-ethereum-protocol-governance": "Governance", - "more-on-ethereum-protocol-bridges": "Bridge", - "more-on-ethereum-protocol-kernel": "Kernel", - "more-on-ethereum-protocol-week-in-ethereum": "Settimana in Ethereum News", - "ethereum-community-description": "Il successo di Ethereum è dovuto alla sua community incredibilmente dedicata. Migliaia di persone motivanti e motivate aiutano a far avanzare la visione di Ethereum. Vieni a unirti a noi!", + "more-on-ethereum-protocol-consensus": "Il meccanismo di consenso basato sul proof-of-stake di Ethereum.", + "more-on-ethereum-protocol-evm": "Il computer incorporato di Ethereum (La EVM)", + "more-on-ethereum-protocol-nodes-and-clients": "Nodi e client Ethereum", + "ethereum-community-description": "Il successo di Ethereum è dovuto alla sua community incredibilmente impegnata. Migliaia di persone ispirate e motivate contribuiscono a far progredire la visione di Ethereum, garantendo al tempo stesso la sicurezza della rete attraverso lo staking e la governance. Unisciti a noi!", "community-hub-card-title": "Hub della community", "community-hub-card-description": "La nostra community include persone da tutte le provenienze sociali.", "community-hub-card-alt": "Illustrazione di un gruppo di costruttori che lavorano insieme.", @@ -102,7 +98,7 @@ "online-communities-card-title": "Community online", "online-communities-card-description": "Le community online forniscono un'ottima opportunità per porre domande più specifiche o essere coinvolti.", "online-communities-card-button": "Esplora le community", - "books-about-ethereum": "Libri su Ethereum e le criptovalute", + "books-about-ethereum": "Libri su Ethereum", "proof-of-stake-title": "Proof of Stake", "proof-of-stake-description": "13 settembre 2022 - Vitalik Buterin, Nathan Schneider", "cryptopians-title": "The Cryptopians", @@ -111,29 +107,17 @@ "out-of-the-ether-description": "29 settembre 2020 - Matthew Leising", "the-infinite-machine-title": "The Infinite Machine", "the-infinite-machine-description": "14 luglio 2020 - Camila Russo", - "the-age-of-cryptocurrency-title": "The Age of Cryptocurrency", - "the-age-of-cryptocurrency-description": "12 gennaio 2016 - Paul Vigna, Michael J. Casey", - "the-truth-machine-title": "The Truth Machine", - "the-truth-machine-description": "27 febbraio 2018 - Paul Vigna, Michael J. Casey", - "digital-gold-title": "Digital Gold", - "digital-gold-description": "24 maggio 2021 - Nathaniel Popper", - "kings-of-crypto-title": "Kings of Crypto", - "kings-of-crypto-description": "15 dicembre 2020 - Jeff John Roberts", "mastering-ethereum-title": "Mastering Ethereum", "mastering-ethereum-description": "23 dicembre 2018 - Andreas M. Antonopoulos, Gavin Wood Ph.D.", - "podcasts-about-ethereum": "Podcast su Ethereum e le criptovalute", + "podcasts-about-ethereum": "Podcast su Ethereum", "bankless-title": "Bankless", "bankless-description": "Una guida alla cripto finanza", - "uncommon-core-title": "Uncommon Core", - "uncommon-core-description": "Esplora la natura trasformativa della valuta a fiducia minimizzata e dei servizi finanziari", "zeroknowledge-title": "Zero Knowledge", "zeroknowledge-description": "Approfondisci la tecnologia che supporterà il web decentralizzato emergente e la community che lo sta costruendo", - "epicenter-title": "Epicenter", - "epicenter-description": "Esplora le implicazioni tecniche, economiche e sociali dell'industria delle Cripto", + "green-pill-title": "La Pillola Verde (\"Green Pill\")", + "green-pill-description": "Esplora i sistemi cripto-economici che creano esternalità positive per il mondo", "unchained-title": "Unchained", "unchained-description": "Offre approfondimenti sulle persone che stanno creando l'Internet decentralizzato, i dettagli di tale tecnologia che potrebbero sostenere il nostro futuro e alcuni degli argomenti più spinosi sulle cripto, come regolamenti, sicurezza e privacy", - "into-the-bytecode-title": "Into the Bytecode", - "into-the-bytecode-description": "Un podcast sulle idee alla base delle cripto", "the-daily-gwei-title": "The Daily Gwei", "the-daily-gwei-description": "Riepiloghi, aggiornamenti e analisi delle notizie di Ethereum" } diff --git a/src/intl/it/page-roadmap-vision.json b/src/intl/it/page-roadmap-vision.json index 118f62de0b6..c48c2049c0a 100644 --- a/src/intl/it/page-roadmap-vision.json +++ b/src/intl/it/page-roadmap-vision.json @@ -1,8 +1,8 @@ { - "page-roadmap-vision-2014": "Leggi un post del 2014 riguardante la proof of stake", + "page-roadmap-vision-2014": "Leggi un post del blog del 2014 sulla proof of stake", "page-roadmap-vision-2021": "Visualizza un post del blog del 2021 sull'evoluzione della tabella di marcia di Ethereum", - "page-roadmap-vision-2022": "Visualizza un post del blog del 2022: Guida per Autostoppisti a Ethereum", - "page-roadmap-vision-2021-updates": "Visualizza un post del blog del 2021 sugli Aggiornamenti del Protocollo di Ethereum", + "page-roadmap-vision-2022": "Visualizza un post del blog del 2022: Guida per autostoppisti a Ethereum", + "page-roadmap-vision-2021-updates": "Visualizza un post del blog del 2021 sugli aggiornamenti del protocollo di Ethereum", "page-roadmap-vision-desc-1": "Ethereum deve ridurre la congestione della rete e aumentare la velocità per servire meglio una base di utenti globale.", "page-roadmap-vision-desc-2": "L'esecuzione di un nodo diventa sempre più difficile man mano che la rete cresce. E diventerà ancora più difficile con il lavoro svolto per ampliare la rete.", "page-roadmap-vision-desc-3": "Ethereum utilizza troppa energia elettrica. La tecnologia che mantiene la rete sicura deve essere più sostenibile.", @@ -14,38 +14,38 @@ "page-roadmap-vision-problems": "Problemi odierni", "page-roadmap-vision-scalability": "Scalabilità", "page-roadmap-vision-scalability-desc": "Ethereum deve essere in grado di gestire una maggiore quantità di transazioni per secondo senza aumentare la dimensione dei nodi nella rete. I nodi sono elementi essenziali della rete, archiviano ed eseguono la blockchain. Aumentare la dimensione dei nodi non è una soluzione pratica perché solo chi dispone di computer costosi e potenti potrebbe farlo.\nPer ampliarsi, Ethereum ha bisogno di gestire un numero maggiore di transazioni al secondo, abbinate a più nodi. Più nodi significa più sicurezza.", - "page-roadmap-vision-scalability-desc-3": "Gli aggiornamenti di sharding amplieranno i requisiti di archiviazione dei dati per l'intera rete, non richiedendo più che ogni nodo detenga il 100% dei dati. Sebbene questo non riguardi direttamente il ridimensionamento dell'esecuzione delle transazioni, il problema è risolto direttamente dalle soluzioni di rollup di livello 2.", - "page-roadmap-vision-scalability-desc-4": "I rollup necessitano però di archiviazione economica sul livello 1 per essere più efficienti. Lo sharding darà respiro a Ethereum, massimizzando l'efficienza sui rollup, consentendo miglioramenti esponenziali oltre l'attuale limite di 15-45 transazioni al secondo.", + "page-roadmap-vision-scalability-desc-3": "I rollup di livello 2 ampliano Ethereum spostando le transazioni off-chain e pubblicando esclusivamente dati di riepilogo su Ethereum. Questo raggruppamento aumenta il volume di Ethereum, riducendo drasticamente i costi per gli utenti.", + "page-roadmap-vision-scalability-desc-4": "I rollup necessitano di archiviazione a basso costo sul livello 1 per rendere le transazioni quanto più economiche possibili per gli utenti. Questa sarà fornita nella forma di blob, collegati ai blocchi di Ethereum. Infine, molti blob saranno collegati ai blocchi di Ethereum, fornendo archiviazione economica per molti rollup.", "page-roadmap-vision-security": "Sicurezza", "page-roadmap-vision-security-desc": "Gli aggiornamenti pianificati migliorano la sicurezza di Ethereum contro gli attacchi coordinati.", - "page-roadmap-vision-security-desc-3": "Nel Proof of stake una maggiore sicurezza deriva da maggiori disincentivi cripto-economici agli attacchi. Questo perché, utilizzando il Proof of Stake, i validatori che proteggono la rete devono fare staking nel protocollo con importanti quantità di ETH. Se dovessero provare ad attaccare la rete, il protocollo potrebbe automaticamente distruggere i loro ETH.", + "page-roadmap-vision-security-desc-3": "Nel proof of stake una maggiore sicurezza deriva da maggiori disincentivi cripto-economici agli attacchi. Questo perché, utilizzando il proof of stake, i validatori che proteggono la rete devono fare staking nel protocollo con importanti quantità di ETH. Se dovessero provare ad attaccare la rete, il protocollo potrebbe distruggere automaticamente i loro ETH.", "page-roadmap-vision-security-desc-5": "Tuttavia, è anche importante che gli aggiornamenti che proteggono i validatori dagli attacchi denial-of-service, ne migliorino l'anonimato e che siano presto implementate la costruzione e la propagazione separate del blocco. Questi aggiornamenti proteggono i singoli validatori e l'intera rete dagli attacchi di vitalità e dalla censura.", - "page-roadmap-vision-security-desc-5-link": "Ulteriori informazioni sul Proof of Stake", - "page-roadmap-vision-security-desc-10": "Staking significa anche che non è necessario investire in hardware d'èlite per partecipare direttamente al consenso. Questo dovrebbe incoraggiare più utenti a diventare validatori, aumentando la decentralizzazione della rete e riducendo la superficie di attacco.", - "page-roadmap-vision-security-staking": "Punta ETH", + "page-roadmap-vision-security-desc-5-link": "Maggiori informazioni sul proof of stake", + "page-roadmap-vision-security-desc-10": "Staking significa anche che non è necessario investire in hardware d'élite per partecipare direttamente al consenso. Questo dovrebbe incoraggiare più utenti a diventare validatori, aumentando la decentralizzazione della rete e riducendo la superficie di attacco.", + "page-roadmap-vision-security-staking": "Fai staking con gli ETH", "page-roadmap-vision-security-validator": "Puoi diventare validatore facendo staking con i tuoi ETH.", "page-roadmap-vision-staking-lower": "Maggiori informazioni sullo staking", "page-roadmap-vision-subtitle": "Far crescere Ethereum fino a che non sarà abbastanza potente per aiutare tutta l'umanità.", "page-roadmap-vision-sustainability": "Sostenibilità", - "page-roadmap-vision-sustainability-desc-1": "Ethereum è ora una blockchain ecosostenibile. Il consumo energetico è stato ridotto di circa il 99,95% quando si è passati dal Proof of Work al Proof of Stake.", + "page-roadmap-vision-sustainability-desc-1": "Ethereum è ora una blockchain ecosostenibile. Il consumo energetico è stato ridotto di circa il 99,95% quando si è passati dal proof of work al proof of stake.", "page-roadmap-vision-sustainability-desc-2": "Ethereum è ora protetta tramite lo staking, non dalla potenza di calcolo.", "page-roadmap-vision-sustainability-desc-3": "Questo aumento della sostenibilità comporta anche benefici di sicurezza: l'ether in staking rende molto più costoso attaccare la catena rispetto alla modalità Proof of Work, ma rende meno costoso proteggerla poiché devono esser emessi meno nuovi ETH per pagare i validatori, rispetto ai miner.", "page-roadmap-vision-sustainability-desc-8": "Il passaggio al Proof of Stake ha reso Ethereum più ecosostenibile e sicura. È una piattaforma a basse emissioni carboniche per creare app e organizzazioni.", "page-roadmap-vision-sustainability-subtitle": "Ethereum è una blockchain ecosostenibile con una forte sicurezza cripto-economica.", - "page-roadmap-vision-title": "La Visione di Ethereum", + "page-roadmap-vision-title": "La visione di Ethereum", "page-roadmap-vision-title-1": "Rete congestionata", "page-roadmap-vision-title-2": "Spazio su disco", "page-roadmap-vision-title-3": "Troppa energia", - "page-roadmap-vision-trilemma-cardtext-1": "Gli aggiornamenti di Ethereum la renderanno scalabile, sicura e decentralizzata. Lo sharding la renderà più scalabile, aumentando il numero di transazioni al secondo e contestualmente diminuendo la quantità di energia necessaria per eseguire un nodo e convalidare la catena. La Beacon Chain renderà Ethereum sicura, coordinando i validatori per una serie di dati frammentata. Lo staking abbatterà le barriere alla partecipazione e limiterà le economie di scala, creando una rete più grande e più decentralizzata.", + "page-roadmap-vision-trilemma-cardtext-1": "Gli aggiornamenti di Ethereum lo renderanno scalabile, sicuro e decentralizzato. Lo staking ha abbassato la barriera della partecipazione e limitato le economie di scala, creando una rete più grande e più decentralizzata.", "page-roadmap-vision-trilemma-cardtext-2": "Le reti blockchain sicure e decentralizzate richiedono che ogni nodo verifichi tutte le transazioni elaborate dalla catena. Questa mole di lavoro limita il numero di transazioni che possono essere effettuate in un dato momento. Decentralizzazione e sicurezza corrispondono a quello che è oggi la blockchain di Ethereum.", - "page-roadmap-vision-trilemma-cardtext-3": "Le reti decentralizzate funzionano inviando informazioni sulle transazioni attraverso i nodi - tutta la rete deve essere a conoscenza di ogni cambiamento di stato. Ampliare il numero di transazioni al secondo in una rete decentralizzata crea rischi di sicurezza perché più sono le transazioni, più aumenta il ritardo, più alta sarà la probabilità di un attacco perpetuato mentre le informazioni si spostano.", - "page-roadmap-vision-trilemma-cardtext-4": "Aumentare le dimensioni e la potenza dei nodi di Ethereum potrebbe aumentare le transazioni al secondo in modo sicuro, ma il requisito hardware limiterebbe chi potrebbe farlo - questo minaccia la decentralizzazione. Si spera che lo sharding e la proof-of-stake permetteranno a Ethereum di scalare aumentando la quantità di nodi, non la dimensione del nodo.", + "page-roadmap-vision-trilemma-cardtext-3": "Le reti decentralizzate funzionano inviando informazioni sulle transazioni attraverso i nodi: tutta la rete deve essere a conoscenza di ogni cambiamento di stato. Ampliare il numero di transazioni al secondo in una rete decentralizzata crea rischi di sicurezza perché più sono le transazioni, più aumenta il ritardo, più alta sarà la probabilità di un attacco perpetuato mentre le informazioni si spostano.", + "page-roadmap-vision-trilemma-cardtext-4": "Aumentare le dimensioni e la potenza dei nodi di Ethereum potrebbe aumentare le transazioni al secondo in modo sicuro, ma il requisito hardware limiterebbe chi potrebbe farlo e questo minaccia la decentralizzazione. Si spera che lo sharding e la proof-of-stake permetteranno a Ethereum di scalare aumentando la quantità di nodi, non la dimensione del nodo.", "page-roadmap-vision-trilemma-h2": "La sfida dell'ampliamento decentralizzato", "page-roadmap-vision-trilemma-modal-tip": "Tocca i cerchi qua sotto per capire meglio i problemi legati a un ampliamento decentralizzato", "page-roadmap-vision-trilemma-p": "Un modo semplice per risolvere i problemi di Ethereum sarebbe quello di renderlo più centralizzato, ma la decentralizzazione è troppo importante. Essa dà ad Ethereum neutralità, resistenza alla censura, apertura, privacy e sicurezza dei dati quasi indistruttibile.", "page-roadmap-vision-trilemma-p-1": "La visione di Ethereum è quella di essere più scalabile e sicura, ma anche di rimanere decentralizzata. Raggiungere queste 3 qualità è un problema noto come la trilemma della scalabilità.", "page-roadmap-vision-trilemma-p-2": "Gli aggiornamenti di Ethereum mirano a risolvere il trilemma, ma ci sono sfide significative.", - "page-roadmap-vision-trilemma-press-button": "Scegli i pulsanti sul triangolo per capire meglio i problemi legati all'ampliamento decentralizzato.", + "page-roadmap-vision-trilemma-press-button": "Scegli i pulsanti sul triangolo per capire meglio i problemi legati alla scalabilità decentralizzata.", "page-roadmap-vision-trilemma-text-1": "Decentralizzazione", "page-roadmap-vision-trilemma-text-2": "Sicurezza", "page-roadmap-vision-trilemma-text-3": "Scalabilità", @@ -57,10 +57,11 @@ "page-roadmap-vision-understanding": "Comprendere la visione di Ethereum", "page-roadmap-vision-upgrade-needs": "La necessità degli aggiornamenti", "page-roadmap-vision-upgrade-needs-desc": "Il protocollo Ethereum lanciato nel 2015 ha avuto un incredibile successo. La community di Ethereum però ha sempre saputo che sarebbero stati necessari alcuni aggiornamenti chiave per sbloccare il pieno potenziale di Ethereum.", - "page-roadmap-vision-upgrade-needs-desc-2": "La domanda elevata sta facendo aumentare le commissioni sulle transazioni, rendendo Ethereum costosa per l'utente medio. Lo spazio su disco necessario per eseguire un client Ethereum sta crescendo rapidamente. Inoltre, l'algoritmo di consenso proof of work che mantiene Ethereum sicura e decentralizzata ha un forte impatto ambientale.", - "page-roadmap-vision-upgrade-needs-desc-3": "Ethereum ha una serie di aggiornamenti che affrontano questi problemi e altri ancora. Questo set di aggiornamenti è stato originariamente chiamato 'Serenity' e 'Eth2,' e sono stati un'area attiva di ricerca e sviluppo dal 2014.", - "page-roadmap-vision-upgrade-needs-desc-5": "Ora che la tecnologia è pronta, questi aggiornamenti ri-architetterano Ethereum per renderlo più scalabile, sicuro e sostenibile; per rendere la vita migliore per gli utenti esistenti e coinvolgerne di nuovi. Tutto preservando il valore centrale di Ethereum della decentralizzazione.", + "page-roadmap-vision-upgrade-needs-desc-2": "La domanda elevata sta facendo aumentare le commissioni sulle transazioni, rendendo Ethereum costosa per l'utente medio. Lo spazio su disco necessario per eseguire un client Ethereum sta crescendo rapidamente.", + "page-roadmap-vision-upgrade-needs-desc-3": "Ethereum ha una serie di aggiornamenti che affrontano questi problemi e altri ancora. Questo set di aggiornamenti è stato originariamente chiamato 'Serenity' e 'Eth2,' e sono un'area attiva di ricerca e sviluppo dal 2014.", + "page-roadmap-vision-upgrade-needs-desc-5": "Ora che la tecnologia è pronta, questi aggiornamenti ri-progettano Ethereum per renderlo più scalabile, sicuro e sostenibile; per rendere la vita migliore per gli utenti esistenti e coinvolgerne di nuovi. Tutto preservando il valore centrale di Ethereum della decentralizzazione.", "page-roadmap-vision-upgrade-needs-desc-6": "Questo significa che non ci sarà un interruttore per la scalabilità. I miglioramenti arriveranno incrementalmente con il tempo.", "page-roadmap-vision-upgrade-needs-serenity": "Leggi un post del 2015 a proposito di \"Serenity\"", - "ethereum": "Ethereum" + "ethereum": "Ethereum", + "page-roadmap-vision-danksharding": "Di più sul Danksharding" } diff --git a/src/intl/it/page-upgrades-get-involved.json b/src/intl/it/page-upgrades-get-involved.json index 9efff741a7b..8abaed05d24 100644 --- a/src/intl/it/page-upgrades-get-involved.json +++ b/src/intl/it/page-upgrades-get-involved.json @@ -4,33 +4,33 @@ "page-upgrades-get-involved-btn-3": "Trova bug", "page-upgrades-get-involved-bug": "Un bug potrebbe essere:", "page-upgrades-get-involved-bug-hunting": "Alla ricerca di bug", - "page-upgrades-get-involved-bug-hunting-desc": "Trova e segnala i bug nelle specifiche dell'aggiornamento del livello del consenso o dei client stessi. Puoi guadagnare fino a $50.000 US e raggiungere un posto sulla classifica.", - "page-upgrades-get-involved-bug-li": "problemi di non-conformità della specifica", + "page-upgrades-get-involved-bug-hunting-desc": "Trova e segnala i bug nelle specifiche dell'aggiornamento del livello del consenso o dei client stessi. Puoi guadagnare fino a 50.000 USD e raggiungere un posto sulla classifica.", + "page-upgrades-get-involved-bug-li": "problemi di non conformità della specifica", "page-upgrades-get-involved-bug-li-2": "bug che infrangono la finalità", "page-upgrades-get-involved-bug-li-3": "vettori denial of service (DOS)", - "page-upgrades-get-involved-bug-li-4": "e altro...", + "page-upgrades-get-involved-bug-li-4": "e molto altro...", "page-upgrades-get-involved-desc-1": "Eseguire un client significa essere un partecipante attivo di Ethereum. Il client aiuterà a tenere traccia delle transazioni e controllare nuovi blocchi.", "page-upgrades-get-involved-desc-2": "Se hai ETH, puoi fare staking per diventare un validatore e contribuire a proteggere la rete. Come validatore puoi ottenere ricompense in ETH.", "page-upgrades-get-involved-desc-3": "Unisciti agli sforzi di test della community! Aiuta a provare gli aggiornamenti di Ethereum prima che siano rilasciati, trova bug e guadagna ricompense.", "page-upgrades-get-involved-ethresearch-1": "Sharding", - "page-upgrades-get-involved-ethresearch-2": "La Fusione", + "page-upgrades-get-involved-ethresearch-2": "La fusione", "page-upgrades-get-involved-ethresearch-3": "Esecuzione frammentata", "page-upgrades-get-involved-ethresearch-4": "Tutti gli argomenti di ricerca", "page-upgrades-get-involved-how": "Come vuoi partecipare?", "page-upgrades-get-involved-how-desc": "La community di Ethereum ne beneficerà se un maggior numero di persone esegue i client, fa staking e cerca bug.", "page-upgrades-get-involved-join": "Unisciti alla ricerca", - "page-upgrades-get-involved-join-desc": "Come gran parte delle cose con Ethereum, molto della ricerca è pubblico. Questo significa che puoi prender parte alla discussione o semplicemente leggere ciò che i ricercatori di Ethereum hanno da dire. ethresear.ch copre numerosi argomenti inclusi gli aggiornamenti del consenso, la frammentazione, i rollup e altro.", + "page-upgrades-get-involved-join-desc": "Come gran parte delle cose su Ethereum, molta ricerca è pubblica. Ciò significa che puoi prendere parte alle discussioni o semplicemente leggere ciò che i ricercatori di Ethereum hanno da dire. ethresear.ch copre numerosi argomenti, inclusi gli aggiornamenti del consenso, i rollup e molto altro.", "page-upgrades-get-involved-meta-description": "Come partecipare agli aggiornamenti di Ethereum: eseguire nodi, stake, cacciare bug e altro.", "page-upgrades-get-involved-run-clients": "Esegui una coppia di client", "page-upgrades-get-involved-run-clients-desc": "Un 'client' è il software che esegue la blockchain e, nel caso di Ethereum, un nodo completo necessita di operare una coppia di client: uno del livello d'esecuzione e uno del livello di consenso. Un nodo completo può verificare le transazioni e, se ha anche ETH in staking, può creare nuovi blocchi. Ogni client ha le proprie funzionalità ma esegue, nel complesso, la stessa funzione, quindi ti incoraggiamo a scegliere un client di minoranza quando possibile, per mantenere diverso e sicuro il pool del client.", - "page-upgrades-get-involved-run-clients-desc-link": "Di più sulla diversità del client.", + "page-upgrades-get-involved-run-clients-desc-link": "Maggiori informazioni sulla diversità del client.", "page-upgrades-get-involved-run-clients-execution": "Client del livello d'esecuzione", "page-upgrades-get-involved-run-clients-execution-desc": "Questi client erano precedentemente definiti client di 'Eth1', ma questo termine è stato deprecato in favore di client del 'livello d'esecuzione'.", "page-upgrades-get-involved-run-clients-consensus": "Client del livello di consenso", "page-upgrades-get-involved-run-clients-consensus-desc": "Questi client erano precedentemente definiti client di 'Eth2', ma questo termine è stato deprecato in favore di client del 'livello del consenso'.", "page-upgrades-get-involved-stake": "Fai staking con i tuoi ETH", "page-upgrades-get-involved-stake-desc": "Ora puoi fare staking con i tuoi ETH per contribuire a proteggere la beacon chain.", - "page-upgrades-get-involved-stake-eth": "Punta ETH", + "page-upgrades-get-involved-stake-eth": "Fai staking con gli ETH", "page-upgrades-get-involved-subtitle": "Ecco tutti i modi in cui puoi aiutare con Ethereum e gli sforzi futuri correlati agli aggiornamenti.", "page-upgrades-get-involved-title-1": "Esegui un client", "page-upgrades-get-involved-title-2": "Fai staking con i tuoi ETH", diff --git a/src/intl/it/page-upgrades-index.json b/src/intl/it/page-upgrades-index.json index adc9f241f08..72224fd6919 100644 --- a/src/intl/it/page-upgrades-index.json +++ b/src/intl/it/page-upgrades-index.json @@ -11,6 +11,7 @@ "page-upgrades-answer-1": "La Beacon Chain è stata utilizzata come strumento per aggiornare la Rete Principale di Ethereum alla Fusione.", "page-upgrades-answer-2": "Con La Fusione, Ethereum ha avuto il suo aggiornamento più sostanziale di sempre, scambiando il proof-of-work per un nuovo livello di consenso basato sul proof-of-stake.", "page-upgrades-answer-4": "La Beacon Chain è stata utilizzata per sviluppare il consenso basato sul proof-of-stake che Ethereum utilizza oggi. Era eseguita separatamente dalla Rete Principale di Ethereum, così che gli sviluppatori potessero osservare il meccanismo di consenso in isolamento prima di utilizzarlo per coordinare le attività reali.", + "page-upgrade-article-author-status": "Stato", "page-upgrade-article-author-ethmerge": "Ethmerge", "page-upgrade-article-author-alchemy": "Alchemy", "page-upgrade-article-author-consensys": "Consensys", diff --git a/src/intl/it/page-upgrades.json b/src/intl/it/page-upgrades.json index 21f9a8f82df..fc2d7257fd0 100644 --- a/src/intl/it/page-upgrades.json +++ b/src/intl/it/page-upgrades.json @@ -11,6 +11,8 @@ "page-upgrades-upgrades-docking": "La fusione", "page-upgrades-shard-title": "Sharding", "page-upgrades-upgrades-beacon-chain": "La beacon chain", + "consensus-beaconscan-title": "beaconscan", + "consensus-beaconscan-in-title": "beaconcha.in", "consensus-beaconcha-in-desc": "Piattaforma di ricerca Beacon Chain open source", "consensus-beaconscan-desc": "Piattaforma di ricerca Beacon Chain - Etherscan per il livello di consenso", "consensus-become-staker": "Diventa uno staker", diff --git a/src/intl/it/page-wallets-find-wallet.json b/src/intl/it/page-wallets-find-wallet.json index 97570a55c9d..29796ae0a2c 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", diff --git a/src/intl/ja/page-roadmap-vision.json b/src/intl/ja/page-roadmap-vision.json index caaca5248ce..74de612d07f 100644 --- a/src/intl/ja/page-roadmap-vision.json +++ b/src/intl/ja/page-roadmap-vision.json @@ -3,9 +3,9 @@ "page-roadmap-vision-2021": "イーサリアムのロードマップの進化に関する2021年のブログ記事を見る", "page-roadmap-vision-2022": "2022年のブログ記事: イーサリアムへのヒッチハイク・ガイド", "page-roadmap-vision-2021-updates": "イーサリアムのプロトコルアップデートに関する2021年のブログ記事を見る", - "page-roadmap-vision-desc-1": "イーサリアムは、ネットワークの混雑を減らし、スピードを上げてグローバルなユーザーベースのサービスを改善する必要があります。", - "page-roadmap-vision-desc-2": "ネットワークが拡大するにつれて、ノードの実行は難しくなります。ネットワークのスケーリングを行うほど、これは困難になります。", - "page-roadmap-vision-desc-3": "イーサリアムの消費電力量は高く、ネットワークを安全に保つテクノロジーをより持続可能なものにする必要があります。", + "page-roadmap-vision-desc-1": "イーサリアムは、ネットワークの混雑を解消し、スピードを上げてグローバルなユーザーベースのサービスを改善する必要があります。", + "page-roadmap-vision-desc-2": "ネットワークが拡大するにつれて、ノードの実行は難しくなります。ネットワークのスケーリングを行うほど、この問題は深刻になります。", + "page-roadmap-vision-desc-3": "イーサリアムの消費電力量は高いため、ネットワークを安全に保つテクノロジーをより持続可能なものにする必要があります。", "page-roadmap-vision-ethereum-node": "ノードの詳細", "page-roadmap-vision-future": "地球規模でのデジタルの未来", "page-roadmap-vision-meta-desc": "アップグレードがイーサリアムに与える影響と、アップグレードにより克服しなければならない課題の概要", @@ -14,37 +14,37 @@ "page-roadmap-vision-problems": "現在の課題", "page-roadmap-vision-scalability": "スケーラビリティ", "page-roadmap-vision-scalability-desc": "イーサリアムは、ネットワークのノードのサイズを大きくすることなく、1秒間あたりに処理できるトランザクション量を増量させる必要があります。ノードとは、ブロックチェーンを保存し、実行する重要なネットワーク参加者のことです。ノードのサイズを上げると、高性能で高価なコンピュータが必要になるため現実的ではありません。スケールアップするには、イーサリアムは1秒あたりのトランザクション量を増やし、より多くのノードが必要になります。ノードの数が増えるほど、セキュリティは強化されます。", - "page-roadmap-vision-scalability-desc-3": "シャーディングアップグレードにより、ネットワーク全体にデータ ストレージ要件が分散され、すべてのノードが100%のデータを保持する必要がなくなります。これはトランザクションの実行を直接スケーリングしませんが、これはレイヤー 2 ロールアップ・ソリューションで直接対処されています。", - "page-roadmap-vision-scalability-desc-4": "ただし、ロールアップが最も効果的になるには、安価なレイヤー1のストレージが必要です。シャーディングは、ロールアップの効率を最大化することでイーサリアムに余裕を与え、現在の1秒あたり15~45トランザクションという制限を超え、指数関数的に改善します。", + "page-roadmap-vision-scalability-desc-3": "レイヤー2のロールアップは、トランザクションをオフチェーンに移動させて、要約データをイーサリアムに投稿するだけでイーサリアムのスケーラビリティを向上させます。 このバッチ処理により、イーサリアムのスループットが向上し、ユーザーのコストを大幅に削減できます。", + "page-roadmap-vision-scalability-desc-4": "ロールアップは、ユーザーにとって可能な限り安価な取引を行うために、レイヤー1に低コストのストレージが必要となります。このストレージは、イーサリアムブロックに接続されたブロブの形で提供されます。 最終的には、多くのブロブがイーサリアムブロックに取り付けられ、多くのロールアップに格安のストレージを提供します。", "page-roadmap-vision-security": "セキュリティ", - "page-roadmap-vision-security-desc": "計画されているアップグレードは、組織的攻撃に対するイーサリアムのセキュリティを改善します。", - "page-roadmap-vision-security-desc-3": "プルーフ・オブ・ステークでは、悪質な行為や攻撃を行うと、ETHを失ってしまうという「暗号経済的な阻害」により、さらなるセキュリティが確保されています。つまり、プルーフ・オブ・ステークでは、ネットワークを保護するバリデータがプロトコルに多額のETHをステーキングしなければならなく、仮にバリデータがネットワークを攻撃しようとすると、プロトコルは自動的にバリデータのETH保有量を破壊します。", - "page-roadmap-vision-security-desc-5": "しかし、サービス妨害(DoS)攻撃からバリデータを保護するアップグレードも重要です。匿名性を向上させ、ブロックの構築とブロック伝播を分離することも間もなく実装されます。 これらのアップグレードは、生存攻撃や検閲に対する個々のバリデータとネットワーク全体を保護します。", - "page-roadmap-vision-security-desc-5-link": "プルーフ・オブ・ステークの詳細", - "page-roadmap-vision-security-desc-10": "ステーキングでは、イーサリアムノードを「実行」するために高性能なハードウェアに投資する必要がありません。そのため、より多くの人がバリデータになりやすく、ネットワークの分散性を向上し、攻撃面の削減につながります。", + "page-roadmap-vision-security-desc": "予定されているアップグレードは、組織的な攻撃に対するイーサリアムのセキュリティを高めます。", + "page-roadmap-vision-security-desc-3": "プルーフ・オブ・ステークでは、悪質な行為や攻撃を行うと、ETHを失ってしまうという「暗号経済的な阻害」により、さらなるセキュリティが確保されています。つまり、プルーフ・オブ・ステークでは、ネットワークを保護するバリデータがプロトコルに多額のETHをステーキングしなければなりません。仮にバリデータがネットワークを攻撃しようとすると、プロトコルは自動的にバリデータが保有するETHを破壊します。", + "page-roadmap-vision-security-desc-5": "しかし、サービス妨害(DoS)攻撃からバリデータを保護するアップグレードも重要です。匿名性を高め、ブロックの構築とブロック伝播を分離するアップグレードも間もなく実装されます。 これらのアップグレードは、個々のバリデータとネットワーク全体を、生存攻撃や検閲から保護します。", + "page-roadmap-vision-security-desc-5-link": "プルーフ・オブ・ステーク(PoS)の詳細", + "page-roadmap-vision-security-desc-10": "ステーキングでは、イーサリアムノードを「実行」するために、高性能なハードウェアに投資する必要はありません。そのため、より多くの人がバリデータになることができ、ネットワークの分散性が向上し、攻撃面の削減につながります。", "page-roadmap-vision-security-staking": "ETHのステーキング", "page-roadmap-vision-security-validator": "ETHをステーキングすることでバリデータになることができます。", - "page-roadmap-vision-staking-lower": "ステーキングの詳細", - "page-roadmap-vision-subtitle": "イーサリアムをパワフルにし、全人類に貢献。", + "page-roadmap-vision-staking-lower": "ステークの詳細", + "page-roadmap-vision-subtitle": "イーサリアムをより強力にすることで、人類全体に貢献する。", "page-roadmap-vision-sustainability": "サステナビリティ", - "page-roadmap-vision-sustainability-desc-1": "イーサリアムは、現在は環境にやさしいブロックチェーンです。プルーフ・オブ・ワークからプルーフ・オブ・ステークに移行し、エネルギー消費量が、約99.95%削減されました。", - "page-roadmap-vision-sustainability-desc-2": "イーサリアムは現在、コンピューティングパワーではなく、ステーキングにより保護されています。", - "page-roadmap-vision-sustainability-desc-3": "このサステナビリティの向上は、セキュリティ上の利点ももたらします。プルーフ・オブ・ワークよりも、プルーフ・オブ・ステークは、チェーンを攻撃するのに、はるかにコストがかかります。しかし、バリデータに支払うために必要になる新規ETHの発行量がマイナーより少ないため、安全性を確保するコストは低くなります。", - "page-roadmap-vision-sustainability-desc-8": "プルーフ・オブ・ステークへの移行により、イーサリアムはより環境にやさしく、安全になりました。アプリや組織の構築に適した低炭素なプラットフォームです。", + "page-roadmap-vision-sustainability-desc-1": "イーサリアムは、現在は環境にやさしいブロックチェーンです。プルーフ・オブ・ワークからプルーフ・オブ・ステークに移行し、エネルギー消費量が約99.95%削減されました。", + "page-roadmap-vision-sustainability-desc-2": "イーサリアムは、現在はコンピューティングパワーではなく、ステーキングによって保護されています。", + "page-roadmap-vision-sustainability-desc-3": "このサステナビリティの向上は、セキュリティ上の利点ももたらします。プルーフ・オブ・ワークよりも、プルーフ・オブ・ステークは、チェーンを攻撃するのに、はるかにコストがかかります。しかし、バリデータに支払う新規ETHの発行量がマイナーより少ないため、安全性を確保するコストは低くなります。", + "page-roadmap-vision-sustainability-desc-8": "イーサリアムは、プルーフ・オブ・ステークへの移行により、環境への負荷が減り、より安全になりました。そのため、低炭素なプラットフォームとして、アプリや組織の構築に適しています。", "page-roadmap-vision-sustainability-subtitle": "イーサリアムは、強力な暗号経済的セキュリティを持つ、環境にやさしいブロックチェーンです。", "page-roadmap-vision-title": "イーサリアムのビジョン", "page-roadmap-vision-title-1": "ネットワーク混雑", "page-roadmap-vision-title-2": "ディスク容量", "page-roadmap-vision-title-3": "過剰な消費エネルギー", - "page-roadmap-vision-trilemma-cardtext-1": "イーサリアムのアップグレードは、イーサリアムをよりスケーラブルで、安全で、分散化されたものにします。シャーディングは、ノードを実行してチェーンを検証するのに必要な電力を減少させる一方で、1秒あたりのトランザクション能力を向上させ、イーサリアムをよりスケーラブルにします。ビーコンチェーンは、分割されたデータ セット全体でバリデータを調整し、イーサリアムを安全にします。 また、ステーキングは参加への障壁を下げ、規模の経済を制限し、より大きな、より分散化されたネットワークの構築につながります。", - "page-roadmap-vision-trilemma-cardtext-2": "安全で分散化されたブロックチェーンネットワークは、すべてのノードがチェーンが処理したすべてのトランザクションを検証する必要があります。 この作業量が、処理できるトランザクション量を制限します。分散化とセキュリティが、現在のイーサリアムチェーンへ影響を与えています。", - "page-roadmap-vision-trilemma-cardtext-3": "分散型ネットワークは、ノード間でトランザクションに関する情報を送信することで機能します。つまり、ネットワーク全体が状態の変化を知る必要があります。分散型ネットワーク上で秒単位でトランザクションを拡大させると、トランザクション量が増えるほど遅延が増え、情報の伝送中に攻撃を受ける確率が高くなるため、セキュリティ上のリスクが生じます。", - "page-roadmap-vision-trilemma-cardtext-4": "イーサリアムのノードのサイズとパワーを増すことで、安全な方法で1秒あたりのトランザクション量を増やすことができますが、ハードウェア要件が高くなり、実行できる人が制限され、分散化を脅かすことになります。シャーディングとプルーフオブステークにより、ノードのサイズではなく、ノードの数を増加させることで、イーサリアムのスケーリングを可能にすると見込まれています。", + "page-roadmap-vision-trilemma-cardtext-1": "イーサリアムのアップグレードにより、イーサリアムのスケーラビリティ、セキュリティ、分散化が向上します。ステーキングは、誰でも参加しやすくなり、ネットワークがより分散化されました。", + "page-roadmap-vision-trilemma-cardtext-2": "安全で分散化されたブロックチェーンネットワークでは、すべてのノードが、チェーンで処理されたすべてのトランザクションを検証する必要があります。 この作業量によって、処理できるトランザクション量が制限されます。分散化とセキュリティは、現在のイーサリアムチェーンに影響を与えています。", + "page-roadmap-vision-trilemma-cardtext-3": "分散型ネットワークは、ノード間でトランザクションに関する情報を送信することで機能します。そのため、ネットワーク全体が最新の状態を把握する必要があります。分散型ネットワーク上で、秒単位でトランザクションを増やすと、トランザクション量が増えるほど情報の伝送に時間がかかり、攻撃を受ける可能性が高くなるため、セキュリティ上のリスクが生じます。", + "page-roadmap-vision-trilemma-cardtext-4": "イーサリアムのノードのサイズと処理能力が増すことで、安全な方法で1秒あたりのトランザクション量を増やすことができます。しかし、ハードウェア要件が高くなるため、実行できる人が制限され、分散化が損なわれるという問題が生じます。シャーディングとプルーフ・オブ・ステークによって、ノードのサイズではなく数を増加させることで、イーサリアムのスケーリングを実現できると期待されています。", "page-roadmap-vision-trilemma-h2": "分散型スケーリングの課題", "page-roadmap-vision-trilemma-modal-tip": "分散型スケーリングの課題をより深く理解するには、以下の円をタップしてください", - "page-roadmap-vision-trilemma-p": "イーサリアムの問題を解決するための単純な方法は、中央集権化することですが、分散化はイーサリアムには欠かすことができないほど肝心です。イーサリアムの中立性、検閲耐性、オープン性、データ所有権、侵害されないセキュリティを実現しているのは、分散化です。", - "page-roadmap-vision-trilemma-p-1": "イーサリアムのビジョンは、よりスケーラブルで安全であることだけでなく、分散化を維持することです。この3つの特性を達成することは、スケーラビリティの3つのジレンマ(トリレンマ)として知られています。", - "page-roadmap-vision-trilemma-p-2": "イーサリアムのアップグレードはトリレンマを解決することを目指していますが、大きな課題があります。", + "page-roadmap-vision-trilemma-p": "イーサリアムの問題を解決するためには、中央集権化するのが簡単な方法です。しかし、分散化はイーサリアムには欠かすことのできないものです。イーサリアムの中立性、検閲耐性、オープン性、データ所有権、侵害されないセキュリティを実現しているのは、分散化です。", + "page-roadmap-vision-trilemma-p-1": "イーサリアムのビジョンは、よりスケーラブルで安全であることだけでなく、分散化を維持することです。この3つの目標を達成することは、スケーラビリティの3つのジレンマ(トリレンマ)と呼ばれる問題です。", + "page-roadmap-vision-trilemma-p-2": "イーサリアムのアップグレードはトリレンマを解決することを目指していますが、そこには大きな課題があります。", "page-roadmap-vision-trilemma-press-button": "分散型スケーリングの問題をより深く理解するには、三角形のボタンを押してください。", "page-roadmap-vision-trilemma-text-1": "分散化", "page-roadmap-vision-trilemma-text-2": "セキュリティ", @@ -56,11 +56,12 @@ "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-5": "テクノロジーの準備が整った今、これらのアップグレードにより、イーサリアムはよりスケーラブルで、安全で、持続可能なものにするために再構築されます。 イーサリアムのコアバリューである分散化を維持しつつ、既存のユーザーエクスペリエンスを高め、新しいユーザーの興味を誘います。", - "page-roadmap-vision-upgrade-needs-desc-6": "スケーラビリティを一瞬にして向上できるスイッチがあるのではなく、時間をかけて段階的に改善が実装されます。", - "page-roadmap-vision-upgrade-needs-serenity": "2015年のブログ記事「セレニティ」の論議を見る", - "ethereum": "イーサリアム" + "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-5": "テクノロジーの進歩により、イーサリアムはよりスケーラブルで、安全で、持続可能なものにするためにアップグレードされています。 イーサリアムのコアバリューである分散化を維持しつつ、既存のユーザーエクスペリエンスを高め、新しいユーザーの参入を促進します。", + "page-roadmap-vision-upgrade-needs-desc-6": "スケーラビリティを一瞬にして向上できる魔法のスイッチはありません。時間をかけて、段階的に改善が実装されます。", + "page-roadmap-vision-upgrade-needs-serenity": "「セレニティ」の論議に関する2015年のブログ記事を見る", + "ethereum": "イーサリアム", + "page-roadmap-vision-danksharding": "ダンクシャーディングの詳細" } diff --git a/src/intl/ja/page-upgrades-get-involved.json b/src/intl/ja/page-upgrades-get-involved.json index 26442ca6df7..8d57bb23372 100644 --- a/src/intl/ja/page-upgrades-get-involved.json +++ b/src/intl/ja/page-upgrades-get-involved.json @@ -1,40 +1,40 @@ { "page-upgrades-get-involved-btn-1": "クライアントを見る", - "page-upgrades-get-involved-btn-2": "ステーキングの詳細", - "page-upgrades-get-involved-btn-3": "バグの検出", - "page-upgrades-get-involved-bug": "バグは以下のようなものが考えられます:", + "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-desc": "コンセンサスレイヤーのアップグレード仕様またはクライアント自体のバグを見つけて報告します。最大5万ドルの賞金を獲得し、リーダーボードに入賞することができます。", + "page-upgrades-get-involved-bug-hunting-desc": "コンセンサスレイヤーのアップグレード仕様やクライアント自体のバグを見つけて報告してください。最大5万ドルの賞金を獲得し、リーダーボードにランクインすることができます。", "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-2": "ETHをお持ちの場合は、ETHをステーキングし、バリデータになりネットワークのセキュリティ確保に貢献することができます。バリデータは、ETH報酬を得ることができます。", + "page-upgrades-get-involved-bug-li-4": "等々。", + "page-upgrades-get-involved-desc-1": "クライアントを実行することは、イーサリアムへの積極的な参加者であることを意味します。クライアントは、トランザクションの追跡と新しいブロックの確認を行います。", + "page-upgrades-get-involved-desc-2": "ETHをお持ちの場合は、ETHをステーキングしてバリデータになることができます。バリデータは、ネットワークのセキュリティ確保に貢献し、ETH報酬を得ることができます。", "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-join-desc": "イーサリアムに関するものは、研究に関するものも含めて、多く公開されています。議論に参加したり、イーサリアムの研究者の発言に目を通したりすることもできます。ethresear.chでは、コンセンサスのアップグレードやロールアップなど、多くのトピックをカバーしています。", "page-upgrades-get-involved-meta-description": "イーサリアムのアップグレードへの参加方法: ノードの運用、ステーキング、バグハンティングなど。", - "page-upgrades-get-involved-run-clients": "クライアントペアの実行", - "page-upgrades-get-involved-run-clients-desc": "「クライアント」とは、ブロックチェーンを実行するソフトウェアであり、イーサリアムの場合、フルノードは、実行レイヤーとコンセンサスレイヤーの両方のクライアントをペアで実行する必要があります。フルノードはトランザクションを確認でき、ETHをステーキングしている場合は、新しいブロックを生成することもできます。 各クライアントには独自の機能がありますが、全体として同じ機能が実行されるので、多様性と安全性のためにマイナーなクライアントを選ぶことをお勧めします。", + "page-upgrades-get-involved-run-clients": "クライアントペアを実行する", + "page-upgrades-get-involved-run-clients-desc": "ブロックチェーンを実行するソフトウェアを「クライアント」といいます。イーサリアムでは、フルノードは、実行レイヤーとコンセンサスレイヤーの両方のクライアントをペアで実行する必要があります。フルノードはトランザクションを確認できるだけでなく、ETHをステーキングしている場合は、新しいブロックを生成することもできます。 各クライアントには独自の機能がありますが、基本的には同じ機能が実行されるので、多様性と安全性のために、マイナーなクライアントを選ぶことをお勧めします。", "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": "これらのクライアントは、以前は「Eth1」クライアントと呼ばれていましたが、現在は「実行レイヤークライアント」と呼ばれます。", "page-upgrades-get-involved-run-clients-consensus": "コンセンサスレイヤークライアント", - "page-upgrades-get-involved-run-clients-consensus-desc": "これらのクライアントの旧称は、「Eth2」クライアントでしたが、名称変更により現在「コンセンサスレイヤークライアント」と呼ばれます。", + "page-upgrades-get-involved-run-clients-consensus-desc": "これらのクライアントは、以前は「Eth2」クライアントと呼ばれていましたが、現在は「実行レイヤークライアント」と呼ばれます。", "page-upgrades-get-involved-stake": "ETHのステーキング", - "page-upgrades-get-involved-stake-desc": "ETHをステーキングし、ビーコンチェーンのセキュリティの確保に貢献することができるようになりました。", + "page-upgrades-get-involved-stake-desc": "ETHをステーキングすることで、ビーコンチェーンのセキュリティに貢献できるようになりました。", "page-upgrades-get-involved-stake-eth": "ETHのステーキング", - "page-upgrades-get-involved-subtitle": "イーサリアムと今後のアップグレード関連の取り組みに協力する方法は次のとおりです。", - "page-upgrades-get-involved-title-1": "クライアントの実行", + "page-upgrades-get-involved-subtitle": "イーサリアムと今後のアップグレード関連の取り組みに協力する方法は、次のとおりです。", + "page-upgrades-get-involved-title-1": "クライアントを実行する", "page-upgrades-get-involved-title-2": "ETHのステーキング", - "page-upgrades-get-involved-title-3": "バグの検出", + "page-upgrades-get-involved-title-3": "バグを検出する", "page-upgrades-get-involved-written-c-sharp": "言語: C#", "page-upgrades-get-involved-written-go": "言語: Go", "page-upgrades-get-involved-written-java": "言語: Java", @@ -42,6 +42,6 @@ "page-upgrades-get-involved-written-nim": "言語: Nim", "page-upgrades-get-involved-written-rust": "言語: Rust", "page-upgrades-get-involved": "イーサリアムのアップグレードへの参加", - "page-upgrades-get-involved-2": "参加", + "page-upgrades-get-involved-2": "参加しましょう", "page-upgrades-bug-bounty-leaderboard-points": "ポイント" } diff --git a/src/intl/ja/page-upgrades-index.json b/src/intl/ja/page-upgrades-index.json index 4c5129635e2..c6c0245380a 100644 --- a/src/intl/ja/page-upgrades-index.json +++ b/src/intl/ja/page-upgrades-index.json @@ -11,6 +11,7 @@ "page-upgrades-answer-1": "ビーコンチェーンは、マージでイーサリアムメインネットをアップグレードするためのツールとして使用されました。", "page-upgrades-answer-2": "マージはこれまでにない大規模なアップグレードとなり、プルーフ・オブ・ワークからプルーフ・オブ・ステークをベースとした新しいコンセンサスレイヤーへの移行が行われました。", "page-upgrades-answer-4": "ビーコンチェーンは、今日のプルーフ・オブ・ステークをベースとしたイーサリアムを開発するために使用されました。ビーコンチェーンは、イーサリアムメインネットとは別個に実行されたため、実環境での使用前に、デベロッパー達は分離した別環境で合意メカニズムを確認できました。", + "page-upgrade-article-author-status": "ステータス", "page-upgrade-article-author-ethmerge": "Ethmerge", "page-upgrade-article-author-alchemy": "Alchemy", "page-upgrade-article-author-consensys": "Consensys", @@ -150,7 +151,7 @@ "page-upgrades-secure": "よりセキュアに", "page-upgrades-secure-desc": "イーサリアムのセキュリティを向上する必要があります。イーサリアムの利用が増えるにつれて、プロトコルはあらゆる形態の攻撃に対してより安全性を高める必要があります。", "page-upgrades-shard-date": "シャーディングは、マージ後、2023年から2024年の間に複数の段階で行われます。", - "page-upgrades-shard-desc": "シャーディングは、データを保存するイーサリアム容量を拡大し、レイヤー2と調和して、スループットをスケーリングし、ネットワーク料金を削減します。 シャーディングは複数の段階でロールアウトされる予定です。", + "page-upgrades-shard-desc": "シャーディングは、イーサリアム容量を拡大して、より多くのデータを保存できるようにします。また、レイヤー2と調和して、スループットをスケーリングし、ネットワーク料金を削減します。 シャーディングは、複数の段階に分けて導入される予定です。", "page-upgrades-shard-estimate": "予定: 2023-2024年", "page-upgrades-shard-lower": "シャーディングの詳細", "page-upgrades-shard-title": "シャーディング", @@ -199,7 +200,7 @@ "page-upgrades-whats-ethereum": "イーサリアムとは", "page-upgrades-whats-new": "イーサリアムの次の展開", "page-upgrades-security-link": "セキュリティおよび詐欺防止の詳細", - "page-staking-deposit-contract-staking-more-link": "ステーキングの詳細", + "page-staking-deposit-contract-staking-more-link": "ステークの詳細", "docs-nav-proof-of-stake": "プルーフオブステーク", "docs-nav-proof-of-work": "プルーフ・オブ・ワーク", "page-upgrades-get-involved-ethresearch-1": "シャーディング", diff --git a/src/intl/ja/page-upgrades.json b/src/intl/ja/page-upgrades.json index dfc5fd11f75..080a172f3b7 100644 --- a/src/intl/ja/page-upgrades.json +++ b/src/intl/ja/page-upgrades.json @@ -4,18 +4,21 @@ "page-upgrades-beacon-date": "リリース!", "page-upgrades-merge-date": "2022年9月", "page-upgrades-shards-date": "~2023年", + "page-upgrades-pbs": "急を要しないもの - 2024年または2025年に予定", "page-upgrades-post-merge-banner-tutorial-ood": "マージ後、本チュートリアルの情報は古くなったため、動作しない可能性があります。ご貢献いただける場合はPRを上げてください。", "page-upgrades-post-merge-banner-governance-ood": "マージ後、本ページの一部のコンテンツの情報が古くなっています。ご貢献いただける場合はPRを上げてください。", "page-upgrades-upgrades-guide": "イーサリアムのアップグレードのガイド", "page-upgrades-upgrades-docking": "マージ", "page-upgrades-shard-title": "シャーディング", "page-upgrades-upgrades-beacon-chain": "ビーコンチェーン", + "consensus-beaconscan-title": "beaconscan", + "consensus-beaconscan-in-title": "beaconcha.in", "consensus-beaconcha-in-desc": "オープンソースのビーコンチェーンエクスプローラー", - "consensus-beaconscan-desc": "ビーコンチェインエクスプローラー - コンセンサスレイヤレイヤーのEtherscan", + "consensus-beaconscan-desc": "ビーコンチェインエクスプローラー - コンセンサスレイヤーのEtherscan", "consensus-become-staker": "ステーカーになる", - "consensus-become-staker-desc": "ステーキングは稼働しています! ネットワークの安全性を高めるため、ETHのステーキングをご希望の場合は、リスクをよくご理解の上行ってください。", + "consensus-become-staker-desc": "ステーキングは稼働しています。ネットワークの安全性を高めるため、ETHのステーキングをご希望の場合は、リスクをよく理解してから行ってください。", "consensus-explore": "データの探索", "consensus-run-beacon-chain": "コンセンサスクライアントの実行", - "consensus-run-beacon-chain-desc": "イーサリアムではクライアントの多様性が重要ですので、この点にご協力ください。", + "consensus-run-beacon-chain-desc": "イーサリアムでは、クライアントの多様性が重要です。そのため、ご協力をお願いいたします。", "read-more": "続きを読む" } diff --git a/src/intl/ja/page-wallets-find-wallet.json b/src/intl/ja/page-wallets-find-wallet.json index 7da5c4246cb..e7c4641fd16 100644 --- a/src/intl/ja/page-wallets-find-wallet.json +++ b/src/intl/ja/page-wallets-find-wallet.json @@ -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": "デスクトップ", diff --git a/src/intl/km/page-wallets-find-wallet.json b/src/intl/km/page-wallets-find-wallet.json index 3ce9a1a54d3..981d9f4de0d 100644 --- a/src/intl/km/page-wallets-find-wallet.json +++ b/src/intl/km/page-wallets-find-wallet.json @@ -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": "កំ​ព្យូ​ទ័​រ", diff --git a/src/intl/kn/page-wallets-find-wallet.json b/src/intl/kn/page-wallets-find-wallet.json index a11a7866efc..4fc3778febb 100644 --- a/src/intl/kn/page-wallets-find-wallet.json +++ b/src/intl/kn/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "ವೈಶಿಷ್ಟ್ಯ ಫಿಲ್ಟರ್‌ಗಳು", "page-find-wallet-footnote-1": "ಈ ಪುಟದಲ್ಲಿ ಪಟ್ಟಿಯಾದ ವಾಲೆಟ್‌ಗಳು ಅಧಿಕೃತ ಅಭಿಪ್ರಾಯಗಳಲ್ಲ ಮತ್ತು ಮಾಹಿತಿಯ ಉದ್ದೇಶಕ್ಕೆ ಮಾತ್ರ ಒದಗಿಸಲಾಗಿದೆ.", "page-find-wallet-footnote-2": "ಅವರ ವಿವರಣೆಗಳು ವಾಲೆಟ್ ಯೋಜನೆಗಳೇ ಒದಗಿಸಿದವುಗಳಾಗಿವೆ.", - "page-find-wallet-footnote-3": "ನಾವು ಈ ಪುಟಕ್ಕೆ ಉತ್ತಮಗಳನ್ನು ನಮ್ಮ ಪಟ್ಟಿ ನೀತಿಯಲ್ಲಿನ ಮಾನದಂಡಗಳ ಆಧಾರದ ಮೇಲೆ ಸೇರಿಸುತ್ತೇವೆ. ನೀವು ನಮಗೆ ಒಂದು ವಾಲೆಟ್ ಸೇರಿಸಬೇಕೆಂದಿದ್ದರೆ, ಗಿಟ್‌ಹಬ್‌ನಲ್ಲಿ ಸಮಸ್ಯೆಯನ್ನು ಉತ್ತೇರಿಸಿ.", + "page-find-wallet-footnote-3": "ನಾವು ಈ ಪುಟಕ್ಕೆ ಉತ್ತಮಗಳನ್ನು ನಮ್ಮ ಪಟ್ಟಿ ನೀತಿಯಲ್ಲಿನ ಮಾನದಂಡಗಳ ಆಧಾರದ ಮೇಲೆ ಸೇರಿಸುತ್ತೇವೆ. ನೀವು ನಮಗೆ ಒಂದು ವಾಲೆಟ್ ಸೇರಿಸಬೇಕೆಂದಿದ್ದರೆ, ಗಿಟ್‌ಹಬ್‌ನಲ್ಲಿ ಸಮಸ್ಯೆಯನ್ನು ಉತ್ತೇರಿಸಿ.", "page-find-wallet-mobile": "ಮೊಬೈಲ್", "page-find-wallet-mobile-desc": "ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳೊಂದಿಗೆ ವಾಲೆಟ್‌ಗಳು", "page-find-wallet-desktop": "ಡೆಸ್ಕ್‌ಟಾಪ್", diff --git a/src/intl/ko/page-wallets-find-wallet.json b/src/intl/ko/page-wallets-find-wallet.json index 8893c50ffeb..66c6304db15 100644 --- a/src/intl/ko/page-wallets-find-wallet.json +++ b/src/intl/ko/page-wallets-find-wallet.json @@ -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": "데스크톱", diff --git a/src/intl/mr/page-wallets-find-wallet.json b/src/intl/mr/page-wallets-find-wallet.json index 4aa1605db01..cdf355e420b 100644 --- a/src/intl/mr/page-wallets-find-wallet.json +++ b/src/intl/mr/page-wallets-find-wallet.json @@ -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": "डेस्कटॉप", diff --git a/src/intl/ms/learn-quizzes.json b/src/intl/ms/learn-quizzes.json new file mode 100644 index 00000000000..0dbcbb03249 --- /dev/null +++ b/src/intl/ms/learn-quizzes.json @@ -0,0 +1,328 @@ +{ + "add-quiz": "Tambah soalan/kuiz", + "average-score": "Skor purata:", + "basics": "Asas Ethereum", + "basics-description": "Bahagian ini meliputi konsep asas Ethereum, memastikan anda mempunyai asas yang kukuh.", + "completed": "Selesai:", + "community-stats": "Statistik masyarakat", + "contribute": "Menyumbang kepada perpustakaan kami.", + "correct": "Betul", + "explanation": "Penerangan", + "next-question": "Soalan seterusnya", + "next-quiz": "Kuiz seterusnya", + "page-assets-merge": "Penggabungan", + "passed": "Awak lulus kuiz!", + "questions": "Soalan", + "questions-answered": "Soalan-soalan yang dijawab:", + "quizzes-subtitle": "Ketahui tahap pemahaman anda tentang Ethereum dan mata wang kripto. Adakah anda bersedia untuk menjadi pakar?", + "retry": "Kadar percubaan semula:", + "score": "Skor", + "see-results": "Lihat hasil", + "share-results": "Kongsi hasil", + "start": "Mula", + "submit-answer": "Semak jawapan", + "test-your-knowledge": "Uji pengetahuan Ethereum anda", + "try-again": "Cuba lagi", + "using-ethereum": "Menggunakan Ethereum", + "using-ethereum-description": "Selidiki aplikasi dunia sebenar Ethereum dan temui cara platform revolusi blok rantai ini membentuk semula industri. Ini merupakan cara yang hebat untuk memastikan anda memahami perkara yang cukup baik sebelum anda mula menggunakan mata wang kripto secara aktif.", + "want-more-quizzes": "Ingin lihat lebih banyak kuiz di sini?", + "your-results": "Hasil anda", + "your-total": "Jumlah mata awak", + "a001-prompt": "Perbezaan terbesar antara Ethereum dan Bitcoin ialah:", + "a001-a-label": "Ethereum tidak membenarkan anda membuat bayaran kepada orang lain", + "a001-a-explanation": "Kedua-dua Bitcoin dan Ethereum membolehkan anda membuat bayaran kepada orang lain.", + "a001-b-label": "Anda boleh menjalankan program komputer di Ethereum", + "a001-b-explanation": "Ethereum boleh diprogramkan. Ini bermakna anda boleh meletakkan mana-mana program komputer di blok rantai Ethereum.", + "a001-c-label": "Anda boleh menjalankan program komputer di Bitcoin", + "a001-c-explanation": "Tidak seperti Ethereum, Bitcoin tidak boleh diprogramkan dan tidak boleh menjalankan program komputer sewenang-wenangnya.", + "a001-d-label": "Mereka mempunyai logo yang berbeza", + "a001-d-explanation": "Mereka mempunyai logo yang berbeza! Tetapi ini bukan perbezaan terbesar antara mereka.", + "a002-prompt": "Mata wang kripto asli Ethereum dipanggil:", + "a002-a-label": "Ether", + "a002-a-explanation": "Ether ialah mata wang kripto asli pada rangkaian Ethereum.", + "a002-b-label": "Ethereum", + "a002-b-explanation": "Ethereum ialah blok rantai, tetapi mata wang asli tidak dipanggil Ethereum. Ini merupakan salah faham umum.", + "a002-c-label": "Ethercoin", + "a002-c-explanation": "Tidak seperti banyak mata wang kripto lain, mata wang kripto asli Ethereum tidak mengandungi perkataan 'coin'.", + "a002-d-label": "Bitcoin", + "a002-d-explanation": "Bitcoin (huruf besar B) ialah blok rantai pertama yang dicipta, Bitcoin (huruf kecil B) ialah mata wang kripto asli.", + "a003-prompt": "Siapa yang menjalankan Ethereum?", + "a003-a-label": "Pembangun", + "a003-a-explanation": "Pembangun amat penting untuk membina dan memperbaiki Ethereum, tetapi mereka bukan kumpulan yang memastikan Ethereum berjalan.", + "a003-b-label": "Pelombong", + "a003-b-explanation": "Perlombongan tidak mungkin semenjak The Merge. Tiada lagi 'pelombong' di Ethereum.", + "a003-c-label": "Yayasan Ethereum", + "a003-c-explanation": "Yayasan Ethereum tidak memainkan sebarang peranan penting dalam menjalankan nod Ethereum harian.", + "a003-d-label": "Sesiapa yang menjalankan nod", + "a003-d-explanation": "Sesiapa yang menjalankan nod merupakan bahagian penting daripada infrastruktur Ethereum. Jika anda belum lagi, pertimbangkan untuk menjalankan nod Ethereum.", + "a004-prompt": "Sejak Ethereum dilancarkan, berapa kalikah rangkaian berada luar talian?", + "a004-a-label": "Tidak pernah", + "a004-b-label": "Sekali", + "a004-c-label": "Empat kali", + "a004-d-label": "Lebih daripada sepuluh kali", + "a004-explanation": "Ethereum tidak pernah keluar sepenuhnya luar talian (berhenti menghasilkan blok) sejak ia dilancarkan.", + "a005-prompt": "Ethereum menggunakan lebih banyak elektrik daripada:", + "a005-a-label": "Perlombongan emas", + "a005-a-explanation": "Perlombongan emas menggunakan ~131 Terawatt jam setiap tahun. Ethereum menggunakan kira-kira 0.0026 Terawatt jam setiap tahun.", + "a005-b-label": "Netflix", + "a005-b-explanation": "Netflix menggunakan ~ 0.451 Terawatt jam setiap tahun. Ethereum menggunakan kira-kira 0.0026 Terawatt jam setiap tahun.", + "a005-c-label": "PayPal", + "a005-c-explanation": "PayPal menggunakan ~ 0.26 Terawatt jam setiap tahun. Ethereum menggunakan kira-kira 0.0026 Terawatt jam setiap tahun.", + "a005-d-label": "Tiada satu pun di atas", + "a005-d-explanation": "Ethereum menggunakan kira-kira 0.0026 Terawatt jam setiap tahun. Kurang daripada perlombongan Emas (~ 131 TWj/thn), Netflix (~ 0.451 TWj/thn), dan PayPal (~ 0.26 TWj/thn).", + "b001-prompt": "Ether juga dikenali sebagai:", + "b001-a-label": "ETC", + "b001-a-explanation": "ETC ialah singkatan untuk Ethereum Classic.", + "b001-b-label": "ETR", + "b001-b-explanation": "ETR bukan singkatan bagi Ether atau mana-mana mata wang kripto penting.", + "b001-c-label": "ETH", + "b001-c-explanation": "ETH ialah singkatan untuk Ethereum.", + "b001-d-label": "BTC", + "b001-d-explanation": "BTC ialah singkatan untuk Bitcoin pada rangkaian Bitcoin.", + "b002-prompt": "Pada Ethereum, yuran rangkaian dibayar dalam:", + "b002-a-label": "bitcoin", + "b002-a-explanation": "Huruf kecil \"bitcoin\" ialah mata wang kripto asli bagi rangkaian Bitcoin.", + "b002-b-label": "ETH", + "b002-b-explanation": "Ether (ETH) ialah mata wang kripto asli Ethereum. Semua yuran rangkaian di Ethereum dibayar dalam ETH.", + "b002-c-label": "USD", + "b002-c-explanation": "Tidak mungkin untuk membayar yuran rangkaian di Ethereum dalam USD (Dolar Amerika Syarikat), atau mana-mana mata wang FIAT lain.", + "b002-d-label": "Ethereum", + "b002-d-explanation": "Ethereum ialah rangkaian, tetapi yuran rangkaian Ethereum dibayar dalam ETH.", + "b003-prompt": "Bertaruh pada Ethereum membantu menjamin rangkaian kerana:", + "b003-a-label": "Orang yang bertaruh boleh mengharamkan orang lain jika mereka tidak suka perkara yang mereka lakukan", + "b003-a-explanation": "Orang yang bertaruh tidak boleh menapis pengguna sewenang-wenangnya.", + "b003-b-label": "Jika orang yang bertaruh cuba menipu rangkaian, mereka berisiko kehilangan ETH mereka", + "b003-b-explanation": "Orang yang bertaruh berisiko kehilangan sejumlah besar ETH mereka jika mereka didapati berkelakuan berniat jahat terhadap rangkaian. Ini dikenali sebagai slashing.", + "b003-c-label": "Penaruh menjalankan komputer berkuasa untuk menunjukkan bukti kerja", + "b003-c-explanation": "Orang yang bertaruh tidak memerlukan perkakasan yang berkuasa untuk mempertaruhkan ETH mereka. Ethereum berhenti menggunakan bukti kerja di The Merge.", + "b003-d-label": "Orang yang bertaruh menjalani KYC sebelum diterima sebagai pengesah", + "b003-d-explanation": "Bertaruh di Ethereum adalah tanpa kebenaran dan tidak memerlukan KYC.", + "b004-prompt": "ETH berharga kerana:", + "b004-a-label": "ETH diperlukan untuk melakukan apa-apa di Ethereum", + "b004-a-explanation": "Jawapan ini sebahagiannya betul, tetapi ia hanya satu daripada sebab ETH berharga.", + "b004-b-label": "ETH ialah wang setara yang tidak boleh ditapis", + "b004-b-explanation": "Jawapan ini sebahagiannya betul, tetapi ia hanya satu daripada sebab ETH berharga.", + "b004-c-label": "ETH digunakan sebagai cagaran untuk pinjaman kripto", + "b004-c-explanation": "Jawapan ini sebahagiannya betul, tetapi ia hanya satu daripada sebab ETH berharga.", + "b004-d-label": "Semua perkara di atas", + "b004-d-explanation": "Transaksi Ethereum tidak boleh ditapis, ETH diperlukan untuk membuat sebarang transaksi di Ethereum, dan ia penting untuk kestabilan ekosistem DeFi.", + "c001-prompt": "Web3 membolehkan pengguna mempunyai aset digital secara terus melalui:", + "c001-a-label": "DAO", + "c001-a-explanation": "DAO (Organisasi autonomi ternyahpusat) ialah komuniti milik ahli tanpa kepimpinan berpusat.", + "c001-b-label": "NFT", + "c001-b-explanation": "NFT (Token tidak sepiawai) menyediakan cara untuk mewakili apa-apa yang unik sebagai aset berasaskan Ethereum.", + "c001-c-label": "ENS", + "c001-c-explanation": "ENS (Perkhidmatan Nama Ethereum) ialah perkhidmatan penamaan ternyahpusat untuk blok rantai Ethereum.", + "c001-d-label": "GitHub", + "c001-d-explanation": "GitHub ialah platform berpusat, terutamanya untuk menyimpan kod menggunakan kawalan versi teragih. GitHub tidak membenarkan pemilikan data atau aset digital anda.", + "c002-prompt": "Web1 ialah baca sahaja, Web2 ialah baca-tulis, Web3 telah digambarkan sebagai:", + "c002-a-label": "baca-tulis-jual", + "c002-a-explanation": "Web3 belum diterangkan dengan cara ini.", + "c002-b-label": "baca-tulis-simpan", + "c002-b-explanation": "Web3 belum diterangkan dengan cara ini.", + "c002-c-label": "baca-tulis-sendiri", + "c002-c-explanation": "Web3 membenarkan pengguna memiliki data mereka dan dengan itu telah digambarkan sebagai 'baca-tulis-sendiri', sebarang penambahbaikan pada Web2, yang hanya 'baca-tulis'.", + "c002-d-label": "baca-tulis-beli", + "c002-d-explanation": "Web3 belum diterangkan dengan cara ini.", + "c003-prompt": "Manakah lelaran web yang tidak bergantung pada penyedia pembayaran pihak ketiga?", + "c003-a-label": "Web1", + "c003-a-explanation": "Web1 tidak mempunyai pembayaran asli, terbina dalam.", + "c003-b-label": "Web2", + "c003-b-explanation": "Web2 tidak mempunyai pembayaran asli, terbina dalam.", + "c003-c-label": "Web3", + "c003-c-explanation": "Web3 mempunyai pembayaran asli, terbina dalam dengan mata wang kripto, seperti ETH.", + "c003-d-label": "Semua perkara di atas", + "c003-d-explanation": "Web1 dan Web2 tidak mempunyai pembayaran asli, terbina dalam.", + "c004-prompt": "Istilah 'Web3' mula-mula dicipta oleh:", + "c004-a-label": "Gavin Wood", + "c004-a-explanation": "Gavin Wood, pengasas bersama Ethereum, dikreditkan dengan istilah Web3 sejurus selepas Ethereum dilancarkan pada 2015.", + "c004-b-label": "Steve Jobs", + "c004-b-explanation": "Steve Jobs tidak mencipta frasa 'Web3'.", + "c004-c-label": "Vitalik Buterin", + "c004-c-explanation": "Vitalik Buterin, walaupun pengasas asal Ethereum, tidak mencipta frasa 'Web3'.", + "c004-d-label": "Elon Musk", + "c004-d-explanation": "Elon Musk tidak mencipta frasa ‘Web3’.", + "c005-prompt": "Anda boleh mempunyai log masuk tunggal yang tahan penapisan di semua web melalui penggunaan:", + "c005-a-label": "Daftar masuk dengan Facebook", + "c005-a-explanation": "Daftar masuk dengan Facebook bukan tahan penapisan.", + "c005-b-label": "Daftar masuk dengan Google", + "c005-b-explanation": "Daftar masuk dengan Google bukan tahan penapisan.", + "c005-c-label": "Log masuk dengan Ethereum", + "c005-c-explanation": "Daftar masuk dengan Ethereum ialah satu-satunya pilihan yang tahan penapisan dan boleh digunakan pada mana-mana aplikasi web.", + "c005-d-label": "Daftar masuk dengan Twitter", + "c005-d-explanation": "Daftar masuk dengan Twitter bukan tahan penapisan.", + "d001-prompt": "Jenis dompet yang paling selamat ialah:", + "d001-a-label": "Sebuah dompet mudah alih", + "d001-a-explanation": "Dompet mudah alih memegang kunci peribadi pada peranti mudah alih, yang biasanya mempunyai sambungan ke Internet, dan berpotensi terjejas oleh perisian lain.", + "d001-b-label": "Dompet perkakasan", + "d001-b-explanation": "Kunci peribadi dompet perkakasan disimpan pada peranti khusus yang boleh disimpan di luar Internet dan diasingkan daripada aplikasi lain pada peranti anda.", + "d001-c-label": "Sebuah dompet web", + "d001-c-explanation": "Dompet web mempunyai keselamatan yang kurang daripada dompet perkakasan kerana kunci peribadi disimpan pada peranti yang disambungkan Internet.", + "d001-d-label": "Dompet desktop", + "d001-d-explanation": "Dompet desktop memegang kekunci peribadi pada pemacu keras komputer, yang biasanya mempunyai sambungan ke Internet, dan berpotensi terjejas oleh perisian lain.", + "d002-prompt": "Daripada pilihan yang dibentangkan, manakah yang merupakan cara paling selamat untuk menyimpan frasa benih anda?", + "d002-a-label": "Dalam gambar pada telefon anda", + "d002-a-explanation": "Ini bukan pilihan yang paling selamat. Jika gambar ini dimuat naik ke storan awan, kemudian penggodam mendapat imej ini dan memperoleh akses kepada akaun anda.", + "d002-b-label": "Dalam fail pada komputer anda", + "d002-b-explanation": "Ini bukan pilihan yang paling selamat. Penggodam semakin mencari maklumat berkaitan mata wang kripto pada peranti sasaran. Jika penggodam mengakses fail dengan frasa benih anda, mereka akan mendapat akses kepada akaun anda.", + "d002-c-label": "Ditulis di atas kertas", + "d002-c-explanation": "Daripada pilihan yang ada, menulis frasa benih anda di atas kertas adalah paling selamat.", + "d002-d-label": "Dalam mesej teks kepada ahli keluarga yang dipercayai", + "d002-d-explanation": "Anda tidak boleh sekali-kali menghantar frasa benih anda kepada sesiapa. Mesej boleh dipintas oleh pihak ketiga, dan walaupun anda mempercayai orang ini sepenuhnya, anda tidak tahu siapa yang mungkin boleh mengakses telefon mereka.", + "d003-prompt": "Kepada siapakah anda patut berikan frasa benih / kunci peribadi anda?", + "d003-a-label": "Seseorang yang anda bayar", + "d003-a-explanation": "Anda tidak boleh sekali-kali memberikan frasa benih atau kunci peribadi anda kepada sesiapa. Sebaliknya, hantar token ke alamat dompet mereka melalui transaksi.", + "d003-b-label": "Untuk log masuk ke dapp atau dompet", + "d003-b-explanation": "Anda tidak boleh sekali-kali memberikan frasa benih / kunci peribadi anda untuk mengelog masuk ke dompet atau dapp anda.", + "d003-c-label": "Kakitangan sokongan", + "d003-c-explanation": "Anda tidak boleh sekali-kali memberikan frasa benih / kunci peribadi anda kepada sesiapa yang mendakwa sebagai kakitangan sokongan. Sesiapa yang meminta anda untuk ini ialah penipu.", + "d003-d-label": "Tiada sesiapa", + "d003-d-explanation": "Sebaik-baiknya, anda tidak boleh sekali-kali memberikan frasa benih atau kunci peribadi anda kepada sesiapa sahaja. Jika anda mempercayai seseorang sepenuhnya dengan akses mutlak kepada dana anda (seperti pasangan), maka anda boleh memutuskan untuk berkongsi maklumat ini dengan mereka.", + "d004-prompt": "Dompet dan akaun di Ethereum ialah perkara yang sama.", + "d004-a-label": "Benar", + "d004-a-explanation": "Dompet ialah antara muka visual yang digunakan untuk berinteraksi dengan akaun Ethereum.", + "d004-b-label": "Salah", + "d004-b-explanation": "Dompet ialah antara muka visual yang digunakan untuk berinteraksi dengan akaun Ethereum.", + "e001-prompt": "Mengapakah anda perlu menggunakan kata laluan yang unik untuk semua akaun anda?", + "e001-a-label": "Sekiranya berlaku pelanggaran data pada salah satu platform", + "e001-a-explanation": "Jawapan ini betul, tetapi terdapat juga jawapan lain yang betul.", + "e001-b-label": "Sekiranya seseorang yang melihat dari belakang anda telah menggunakan kata laluan anda", + "e001-b-explanation": "Jawapan ini betul, tetapi terdapat juga jawapan lain yang betul.", + "e001-c-label": "Sekiranya perisian hasad, seperti pengelog kunci, mencuri kata laluan anda", + "e001-c-explanation": "Jawapan ini betul, tetapi terdapat juga jawapan lain yang betul.", + "e001-d-label": "Semua perkara di atas", + "e001-d-explanation": "Semua jawapan adalah betul. Menggunakan kata laluan yang unik ialah cara terbaik untuk menghalang orang lain daripada mengakses akaun anda.", + "e002-prompt": "Berikutan The Merge, ETH mesti dinaik taraf kepada ETH2.", + "e002-a-label": "Benar", + "e002-a-explanation": "Anda tidak perlu menaik taraf ETH anda kepada ETH2. Tiada ETH2 dan ini merupakan naratif biasa yang digunakan oleh penipu.", + "e002-b-label": "Salah", + "e002-b-explanation": "Anda tidak perlu menaik taraf ETH anda kepada ETH2. Tiada ETH2 dan ini merupakan naratif biasa yang digunakan oleh penipu.", + "e003-prompt": "Pemberian ETH ialah:", + "e003-a-label": "Cara yang baik untuk mendapatkan lebih banyak ETH", + "e003-a-explanation": "Pemberian ETH ialah penipuan yang direka untuk mencuri ETH anda dan token lain. Itu bukanlah cara yang baik untuk mendapatkan lebih banyak ETH.", + "e003-b-label": "Sentiasa tulen", + "e003-b-explanation": "Pemberian ETH tidak pernah tulen.", + "e003-c-label": "Biasanya dilakukan oleh ahli-ahli terkemuka daripada masyarakat", + "e003-c-explanation": "Ahli komuniti terkemuka tidak melakukan pemberian ETH. Penipu berpura-pura tahu, seperti Elon Musk, sedang melakukan pemberian untuk memberi mereka penipuan rasa kesahihan.", + "e003-d-label": "Mungkin merupakan penipuan", + "e003-d-explanation": "Pemberian ETH selalunya menipu. Melaporkan dan mengabaikan penipu memang terbaik.", + "e004-prompt": "Transaksi Ethereum boleh berbalik.", + "e004-a-label": "Benar", + "e004-a-explanation": "Transaksi Ethereum tidak boleh berbalik. Sesiapa yang memberitahu anda sebaliknya mungkin cuba untuk menipu anda.", + "e004-b-label": "Salah", + "e004-b-explanation": "Transaksi Ethereum tidak boleh berbalik. Sesiapa yang memberitahu anda sebaliknya mungkin cuba untuk menipu anda.", + "f001-prompt": "NFT paling komprehensif ditakrifkan sebagai:", + "f001-a-label": "aset digital yang unik", + "f001-a-explanation": "NFT merupakan aset digital yang unik.", + "f001-b-label": "karya seni digital", + "f001-b-explanation": "NFT mewakili aset digital yang unik, ini biasanya karya seni digital, tetapi ia tidak terhad pada seni.", + "f001-c-label": "tiket ke acara eksklusif", + "f001-c-explanation": "NFT mewakili aset digital yang unik, ini boleh menjadi sistem tiket, tetapi ia tidak terhad pada tiket.", + "f001-d-label": "kontrak mengikat secara sah", + "f001-d-explanation": "Walaupun kontrak undang-undang boleh diwakili sebagai NFT, NFT tidak eksklusif untuk kontrak mengikat secara sah.", + "f002-prompt": "Dua NFT yang mewakili karya seni yang sama ialah perkara yang sama.", + "f002-a-label": "Benar", + "f002-a-explanation": "NFT adalah tidak sepiawai. Ini bermakna walaupun ia mewakili bahagian seni digital, ia masih boleh dikenal pasti secara unik. Dalam dunia seni tradisional, ini mungkin serupa dengan asal dan cetakan.", + "f002-b-label": "Salah", + "f002-b-explanation": "NFT adalah tidak sepiawai. Ini bermakna walaupun ia mewakili bahagian seni digital, ia masih boleh dikenal pasti secara unik. Dalam dunia seni tradisional, ini mungkin serupa dengan asal dan cetakan.", + "f003-prompt": "NFT yang paling biasa mewakili:", + "f003-a-label": "Kata laluan kepada dompet anda", + "f003-a-explanation": "Ini merupakan risiko keselamatan dan secara umumnya, idea yang teruk!", + "f003-b-label": "Pemilikan item digital unik", + "f003-b-explanation": "NFT biasanya mewakili pemilikan bagi item digital unik.", + "f003-c-label": "Baki ETH semasa anda", + "f003-c-explanation": "NFT tidak boleh mewakili baki ETH anda sewenang-wenangnya.", + "f003-d-label": "Semua perkara di atas", + "f003-d-explanation": "NFT biasanya mewakili pemilikan item digital unik, bukan baki ETH atau kata laluan dompet.", + "f004-prompt": "NFT telah membantu mencipta:", + "f004-a-label": "ekonomi kurator baharu", + "f004-a-explanation": "NFT membantu mewujudkan ekonomi baharu bagi pencipta, bukan kurator.", + "f004-b-label": "ekonomi karbon", + "f004-b-explanation": "NFT membantu mewujudkan ekonomi baharu bagi pencipta, bukan karbon.", + "f004-c-label": "ekonomi pencipta", + "f004-c-explanation": "NFT membantu mewujudkan ekonomi pencipta.", + "f004-d-label": "ekonomi doge", + "f004-d-explanation": "NFT membantu mewujudkan ekonomi baharu bagi pencipta, bukan doge 🐶.", + "f005-prompt": "NFT di Ethereum berbahaya kepada alam sekitar", + "f005-a-label": "Benar", + "f005-a-explanation": "Sejak The Merge (transisi kepada bukti taruhan), sebarang transaksi telah memberikan kesan yang boleh diabaikan terhadap alam sekitar.", + "f005-b-label": "Salah", + "f005-b-explanation": "Sejak The Merge (transisi kepada bukti taruhan), sebarang transaksi telah memberikan kesan yang boleh diabaikan terhadap alam sekitar.", + "g001-prompt": "Rangkaian blok rantai lapisan 2 adalah untuk:", + "g001-a-label": "Menskala Ethereum", + "g001-a-explanation": "Tujuan utama gulungan dan penyelesaian lapisan 2 yang lain adalah untuk menskala Ethereum.", + "g001-b-label": "Membuat pembayaran", + "g001-b-explanation": "Tujuan utama gulungan dan penyelesaian lapisan 2 yang lain adalah untuk menskala Ethereum.", + "g001-c-label": "Membeli NFT", + "g001-c-explanation": "Tujuan utama gulungan dan penyelesaian lapisan 2 yang lain adalah untuk menskala Ethereum.", + "g001-d-label": "Mendesentralisasi Ethereum", + "g001-d-explanation": "Tujuan utama gulungan dan penyelesaian lapisan 2 yang lain adalah untuk menskala Ethereum.", + "g002-prompt": "Untuk menskala, kebanyakan rangkaian lapisan 1 alternatif telah mengorbankan:", + "g002-a-label": "Keselamatan", + "g002-a-explanation": "Kebanyakan rangkaian Lapisan 1 alternatif mengorbankan keselamatan dan sesuatu yang lain untuk menskala.", + "g002-b-label": "Pencaran Pusat", + "g002-b-explanation": "Kebanyakan rangkaian Lapisan 1 alternatif mengorbankan desentralisasi dan sesuatu yang lain untuk menskala.", + "g002-c-label": "Harga token", + "g002-c-explanation": "Harga token tidak mempunyai apa-apa kesan ke atas keupayaan penskalaan.", + "g002-d-label": "Keselamatan dan desentralisasi", + "g002-d-explanation": "Kebanyakan rangkaian lapisan 1 alternatif mengorbankan keselamatan dan desentralisasi untuk menskala.", + "g003-prompt": "Manakah antara berikut tidak dianggap lapisan 2?", + "g003-a-label": "Validium", + "g003-a-explanation": "Validium tidak dianggap sebagai penyelesaian lapisan 2 kerana ia tidak memperoleh keselamatan atau ketersediaan data daripada Ethereum", + "g003-b-label": "Sidechains", + "g003-b-explanation": "Sidechain tidak dianggap sebagai penyelesaian lapisan 2 kerana ia tidak memperoleh keselamatan atau ketersediaan data daripada Ethereum.", + "g003-c-label": "Blok rantai lapisan 1 alternatif", + "g003-c-explanation": "Blok rantai lapisan 1 alternatif tidak dianggap sebagai penyelesaian lapisan 2.", + "g003-d-label": "Semua perkara di atas", + "g003-d-explanation": "Validium, Sidechain, dan blok rantai lapisan 1 alternatif tidak dianggap sebagai penyelesaian lapisan 2 kerana ia tidak memperoleh keselamatan atau ketersediaan data daripada Ethereum.", + "g004-prompt": "Mengapakah Ethereum tidak mempunyai lapisan 2 yang 'rasmi'?", + "g004-a-label": "Pembangun teras terlalu sibuk bekerja di Ethereum", + "g004-a-explanation": "Tiada rancangan untuk lapisan 2 yang 'rasmi' di Ethereum kerana kami akan mendapat manfaat daripada pelbagai pendekatan untuk mereka bentuk penyelesaian lapisan 2.", + "g004-b-label": "Sebagai L1, Ethereum akhirnya dengan sendiri akan mencapai penskalaan besar-besaran", + "g004-b-explanation": "Tiada rancangan untuk lapisan 2 yang 'rasmi' di Ethereum kerana kami akan mendapat manfaat daripada pelbagai pendekatan untuk mereka bentuk penyelesaian lapisan 2.", + "g004-c-label": "Pembangun teras masih berdebat antara optimis dan gulungan zk", + "g004-c-explanation": "Tiada rancangan untuk lapisan 2 yang 'rasmi' di Ethereum kerana kami akan mendapat manfaat daripada pelbagai pendekatan untuk mereka bentuk penyelesaian lapisan 2.", + "g004-d-label": "Ethereum akan mendapat manfaat daripada pelbagai pendekatan untuk mereka bentuk L2", + "g004-d-explanation": "Tiada rancangan untuk lapisan 2 yang 'rasmi' di Ethereum kerana kami akan mendapat manfaat daripada pelbagai pendekatan untuk mereka bentuk penyelesaian lapisan 2.", + "h001-prompt": "The Merge telah memindahkan Ethereum ke mekanisme konsensus?", + "h001-a-label": "Bukti kerja", + "h001-a-explanation": "Bukti kerja ialah mekanisme persetujuan yang digunakan sebelum The Merge.", + "h001-b-label": "Bukti taruhan", + "h001-b-explanation": "Betul! The Merge telah memindahkan Ethereum ke bukti taruhan.", + "h001-c-label": "Proof-of-authority", + "h001-c-explanation": "Ethereum tidak, dan tidak pernah menggunakan bukti kuasa pada Rangkaian utama Ethereum.", + "h001-d-label": "Semua perkara di atas", + "h001-d-explanation": "Tidak mungkin bagi Ethereum mempunyai semua mekanisme konsensus ini sekali gus.", + "h002-prompt": "The Merge telah mengurangkan penggunaan tenaga Ethereum dengan:", + "h002-a-label": "50%", + "h002-a-explanation": "Penggunaan tenaga Ethereum telah dikurangkan sebanyak 99.95% selepas The Merge membolehkan peralihan daripada bukti kerja kepada bukti taruhan.", + "h002-b-label": "62.5%", + "h002-b-explanation": "Penggunaan tenaga Ethereum telah dikurangkan sebanyak 99.95% selepas The Merge membolehkan peralihan daripada bukti kerja kepada bukti taruhan.", + "h002-c-label": "90%", + "h002-c-explanation": "Penggunaan tenaga Ethereum telah dikurangkan sebanyak 99.95% selepas The Merge membolehkan peralihan daripada bukti kerja kepada bukti taruhan.", + "h002-d-label": "99.95%", + "h002-d-explanation": "Penggunaan tenaga Ethereum telah dikurangkan sebanyak 99.95% selepas The Merge membolehkan peralihan daripada bukti kerja kepada bukti taruhan.", + "h003-prompt": "Bilakah The Merge berlaku?", + "h003-a-label": "15 September 2022", + "h003-a-explanation": "The Merge berlaku pada 15 September 2022 pukul 06:42:42 PAGI (UTC).", + "h003-b-label": "1 Disember 2021", + "h003-b-explanation": "The Merge berlaku lewat daripada ini. 1 Disember 2022 ialah tarikh Rantai Beacon dilancarkan.", + "h003-c-label": "27 November 2013", + "h003-c-explanation": "The Merge berlaku lewat daripada ini. 27 November 2013 ialah tarikh kertas putih Ethereum dikeluarkan.", + "h003-d-label": "31 Oktober 2008", + "h003-d-explanation": "The Merge berlaku lewat daripada ini. 31 Oktober merupakan hari Kertas Putih Bitcoin dikeluarkan.", + "h004-prompt": "The Merge bermakna pengguna terpaksa menukar ETH mereka dengan ETH2:", + "h004-a-label": "Benar", + "h004-a-explanation": "ETH tidak berubah pada bila-bila masa sebelum, semasa, atau selepas The Merge. Idea 'menaik taraf' ETH kepada ETH2 merupakan taktik biasa oleh pelakon berniat jahat untuk menipu pengguna.", + "h004-b-label": "Salah", + "h004-b-explanation": "ETH tidak berubah pada bila-bila masa sebelum, semasa, atau selepas The Merge. Idea 'menaik taraf' ETH kepada ETH2 merupakan taktik biasa oleh pelakon berniat jahat untuk menipu pengguna.", + "h005-prompt": "Lapisan persetujuan Ethereum sebelum ini dikenali sebagai:", + "h005-a-label": "Bukti kerja", + "h005-a-explanation": "Bukti kerja ialah mekanisme persetujuan yang digunakan sebelum The Merge.", + "h005-b-label": "Eth2", + "h005-b-explanation": "Sebelum dinamakan semula lapisan persetujuan, ia pada asalnya dipanggil 'Eth2'.", + "h005-c-label": "Eth1", + "h005-c-explanation": "Eth1 ialah nama asal yang diberikan kepada lapisan perlaksanaan, bukan lapisan konsensus.", + "h005-d-label": "Pertaruhan", + "h005-d-explanation": "Pertaruhan mendepositkan ETH ke kontrak pintar untuk membantu menjamin rantai." +} diff --git a/src/intl/ms/page-developers-index.json b/src/intl/ms/page-developers-index.json index f2763d7c439..99b70b57720 100644 --- a/src/intl/ms/page-developers-index.json +++ b/src/intl/ms/page-developers-index.json @@ -1,3 +1,97 @@ { - "alt-eth-blocks": "Ilustrasi blok disusun seperti simbol ETH" + "page-developer-meta-title": "Sumber Pemaju Ethereum", + "page-developers-about": "Berkenaan sumber pemaju", + "page-developers-about-desc": "ethereum.org sedia membantu anda membina dengan Ethereum melalui dokumentasi mengenai konsep-konsep asas serta timbunan pembangunan. Tambahan pula, terdapat pelbagai tutorial untuk anda bermula.", + "page-developers-about-desc-2": "Diilhamkan oleh Rangkaian Pemaju Mozilla, kami anggap Ethereum memerlukan platform untuk menempatkan maklumat dan sumber pemaju yang bagus. Seperti rakan-rakan kami di Mozilla, sumber-sumber kami adalah terbuka dan tersedia untuk anda hurai dan perbaiki.", + "page-developers-account-desc": "Kontrak atau orang dalam rangkaian", + "page-developers-accounts-link": "Akaun", + "page-developers-advanced": "Maju", + "page-developers-api-desc": "Menggunakan pustaka untuk berinteraksi dengan kontrak pintar", + "page-developers-api-link": "API bahagian belakang", + "page-developers-block-desc": "Kumpulan transaksi yang ditambah pada blok rantai", + "page-developers-block-explorers-desc": "Portal data Ethereum anda", + "page-developers-block-explorers-link": "Penjelajah blok", + "page-developers-blocks-link": "Blok", + "page-developers-browse-tutorials": "Layari tutorial", + "page-developers-choose-stack": "Pilih timbunan anda", + "page-developers-contribute": "Sumbang", + "page-developers-dev-env-desc": "IDE yang bersesuaian untuk pembangunan dapp", + "page-developers-dev-env-link": "Persekitaran pembangunan", + "page-developers-discord": "Sertai Discord", + "page-developers-docs-introductions": "Pengenalan", + "page-developers-evm-desc": "Komputer yang memproses transaksi", + "page-developers-evm-link": "Mesin Maya Ethereum (EVM)", + "page-developers-explore-documentation": "Terokai dokumentasi", + "page-developers-feedback": "Jika anda mempunyai maklum balas, hubungi kami melalui pembukaan isu di GitHub atau pelayan Discord kami.", + "page-developers-frameworks-desc": "Alatan untuk membantu mempercepatkan pembangunan", + "page-developers-frameworks-link": "Kerangka pembangunan", + "page-developers-fundamentals": "Asas", + "page-developers-gas-desc": "Ether diperlukan untuk menggerakkan transaksi", + "page-developers-gas-link": "Gas", + "page-developers-get-started": "Bagaimana anda ingin bermula?", + "page-developers-improve-ethereum": "Bantu kami menambah baik ethereum.org", + "page-developers-improve-ethereum-desc": "Seperti ethereum.org, dokumentasi ini adalah usaha komuniti. Cipta PR jika anda jumpa kesilapan, ruang penambahbaikan atau peluang baharu untuk membantu pembangun Ethereum.", + "page-developers-into-eth-desc": "Pengenalan kepada blok rantai dan Ethereum", + "page-developers-intro-ether-desc": "Pengenalan kepada mata wang kripto dan Ether", + "page-developers-intro-dapps-desc": "Pengenalan kepada aplikasi terdesentralisasi", + "page-developers-intro-dapps-link": "Pengenalan kepada dapp", + "page-developers-intro-eth-link": "Pengenalan kepada Ethereum", + "page-developers-intro-ether-link": "Pengenalan kepada Ether", + "page-developers-intro-stack": "Pengenalan kepada timbunan", + "page-developers-intro-stack-desc": "Pengenalan kepada timbunan Ethereum", + "page-developers-js-libraries-desc": "Menggunakan JavaScript untuk berinteraksi dengan kontrak pintar", + "page-developers-js-libraries-link": "Pustaka Javascript", + "page-developers-language-desc": "Menggunakan Ethereum dalam bahasa yang difahami", + "page-developers-languages": "Bahasa pengaturcaraan", + "page-developers-learn": "Pelajari pembangunan Ethereum", + "page-developers-learn-desc": "Baca mengenai konsep teras dan timbunan Ethereum melalui dokumentasi kami", + "page-developers-learn-tutorials": "Belajar melalui tutorial", + "page-developers-learn-tutorials-cta": "Lihat tutorial", + "page-developers-learn-tutorials-desc": "Belajar pembangunan Ethereum langkah demi langkah daripada pembangun yang telah melakukannya.", + "page-developers-meta-desc": "Dokumentasi, tutorial dan alatan untuk pembangun membina pada Ethereum.", + "page-developers-mev-desc": "An introduction to maximal extractable value (MEV)", + "page-developers-mev-link": "Maximal extractable value (MEV)", + "page-developers-mining-desc": "Cara blok dicipta dan konsensus dicapai menggunakan bukti kerja", + "page-developers-mining-link": "Perlombongan", + "page-developers-mining-algorithms-desc": "Maklumat tentang algoritma perlombongan Ethereum", + "page-developers-mining-algorithms-link": "Algoritma perlombongan", + "page-developers-networks-desc": "Gambaran keseluruhan tentang Rangkaian utama dan rangkaian ujian", + "page-developers-networks-link": "Rangkaian", + "page-developers-node-clients-desc": "Cara blok dan transaksi disahkan dalam rangkaian", + "page-developers-node-clients-link": "Klien dan nod-nod", + "page-developers-oracle-desc": "Mendapatkan data luar rantaian ke dalam kontrak pintar anda", + "page-developers-oracles-link": "Oracle", + "page-developers-play-code": "Bermain dengan kod", + "page-developers-read-docs": "Baca dokumentasi", + "page-developers-scaling-desc": "Penyelesaian kepada transaksi lebih pantas", + "page-developers-scaling-link": "Penskalaan", + "page-developers-smart-contract-security-desc": "Langkah keselamatan untuk dipertimbangkan semasa pembangunan kontrak pintar", + "page-developers-smart-contract-security-link": "Keselamatan kontrak pintar", + "page-developers-set-up": "Sediakan persekitaran tempatan", + "page-developers-setup-desc": "Sediakan timbunan anda untuk pembinaan dengan menkonfigurasi persekitaran pembangunan.", + "page-developers-smart-contracts-desc": "Logik disebalik dapp – perjanjiaan terlaksana sendiri", + "page-developers-smart-contracts-link": "Kontrak pintar", + "page-developers-stack": "Timbunan", + "page-developers-start": "Mula bereksperimen", + "page-developers-start-desc": "Ingin bereksperimen dahulu, kemudian tanya soalan?", + "page-developers-storage-desc": "Cara mengendalikan storan dapp", + "page-developers-storage-link": "Storan", + "page-developers-subtitle": "Manual pembina untuk Ethereum. Daripada pembina untuk pembina.", + "page-developers-title-1": "Ethereum", + "page-developers-title-2": "pembangun", + "page-developers-title-3": "sumber", + "page-developers-token-standards-desc": "Gambaran keseluruhan mengenai standard token yang diterima", + "page-developers-token-standards-link": "Standard token", + "page-developers-transactions-desc": "Cara status Ethereum berubah", + "page-developers-transactions-link": "Transaksi", + "page-developers-web3-desc": "Cara pembangunan dunia web3 berbeza", + "page-developers-web3-link": "Web2 berbanding Web3", + "page-developers-networking-layer": "Lapisan Rangkaian", + "page-developers-networking-layer-link": "Lapisan Rangkaian", + "page-developers-networking-layer-desc": "Pengenalan kepada lapisan rangkaian Ethereum", + "page-developers-data-structures-and-encoding": "Struktur data dan pengekodan", + "page-developers-data-structures-and-encoding-link": "Struktur data dan pengekodan", + "page-developers-data-structures-and-encoding-desc": "Pengenalan kepada struktur data dan skema pengekodan yang digunakan dalam timbunan Ethereum", + "alt-eth-blocks": "Ilustrasi blok disusun seperti simbol ETH", + "page-assets-doge": "Doge menggunakan dapp" } diff --git a/src/intl/ms/page-developers-learning-tools.json b/src/intl/ms/page-developers-learning-tools.json index f2763d7c439..302b525e0ca 100644 --- a/src/intl/ms/page-developers-learning-tools.json +++ b/src/intl/ms/page-developers-learning-tools.json @@ -1,3 +1,58 @@ { + "page-learning-tools-bloomtech-description": "Kursus BloomTech Web3 akan mengajar anda kemahiran yang majikan perlukan sebagai jurutera.", + "page-learning-tools-bloomtech-logo-alt": "Logo BloomTech", + "page-learning-tools-bootcamps": "Bootcamp pemaju", + "page-learning-tools-bootcamps-desc": "Kursus berbayar dalam talian untuk belajar dengan lebih cepat.", + "page-learning-tools-browse-docs": "Terokai dokumentasi", + "page-learning-tools-capture-the-ether-description": "Capture the Ether ialah sebuah permainan di mana anda boleh menggodam kontrak pintar Ethereum untuk pelajari lebih lanjut tentang keselamatan.", + "page-learning-tools-capture-the-ether-logo-alt": "Logo Capture the Ether", + "page-learning-tools-chainshot-description": "Jarak jauh, bootcamp pemaju Ethereum terbimbing pengajar dan kursus tambahan.", + "page-learning-tools-chainshot-logo-alt": "Logo ChainShot", + "page-learning-tools-coding": "Belajar melalui pengekodan", + "page-learning-tools-coding-subtitle": "Peralatan ini akan membantu anda untuk bereksperimen dengan Ethereum jika anda mahukan pengalaman pembelajaran yang interaktif.", + "page-learning-tools-consensys-academy-description": "Bootcamp pemaju Ethereum dalam talian.", + "page-learning-tools-consensys-academy-logo-alt": "Logo ConsenSys Academy", + "page-learning-tools-buildspace-description": "Ketahui tentang mata wang kripto dengan membina projek-projek yang menarik.", + "page-learning-tools-buildspace-logo-alt": "Logo _buildspace", + "page-learning-tools-cryptozombies-description": "Pelajari Solidity dengan membina permainan Zombi anda sendiri.", + "page-learning-tools-cryptozombies-logo-alt": "Logo CryptoZombies", + "page-learning-tools-documentation": "Belajar dengan dokumentasi", + "page-learning-tools-documentation-desc": "Mahu belajar lebih lanjut? Lihat dokumentasi kami untuk mendapatkan penjelasan yang anda perlukan.", + "page-learning-tools-eth-dot-build-description": "Sebuah kotak pasir pendidikan untuk web3, termasuk pengaturcaraan seret dan lepas dan blok pembangunan sumber terbuka.", + "page-learning-tools-eth-dot-build-logo-alt": "Logo Eth.build", + "page-learning-tools-ethernauts-description": "Selesaikan semua peringkat dengan menggodam kontrak pintar.", + "page-learning-tools-ethernauts-logo-alt": "Logo Ethernauts", + "page-learning-tools-metaschool-description": "Menjadi Pembangun Web3 melalui pembangunan dan penghantaran dApp.", + "page-learning-tools-metaschool-logo-alt": "Logo _metaschool", + "page-learning-tools-game-tutorials": "Tutorial permainan interaktif", + "page-learning-tools-game-tutorials-desc": "Belajar sambil bermain. Tutorial ini akan mengajar anda asas melalui permainan.", + "page-learning-tools-meta-desc": "Alat pengekodan berasaskan web dan pengalaman pembelajaran interaktif untuk membantu anda bereksperimen dengan pembangunan Ethereum.", + "page-learning-tools-meta-title": "Alatan pembelajaran untuk pemaju", + "page-learning-tools-questbook-description": "Tutorial diri untuk belajar Web 3.0 dengan pembangunan", + "page-learning-tools-questbook-logo-alt": "Logo Questbook", + "page-learning-tools-remix-description": "Membangunkan, menggerakkan dan mentadbir kontrak pintar untuk Ethereum. Ikut tutorial dengan plugin LearnEth.", + "page-learning-tools-remix-description-2": "Remix, Replit, dan ChainIDE bukan sahaja kotak pasir—pemaju boleh menulis, mengumpul dan menggunakan kontrak pintar mereka dengan menggunakannya.", + "page-learning-tools-replit-description": "Persekitaran pembangunan yang boleh disesuaikan untuk Ethereum dengan tambah nilai panas, pemeriksaan ralat, dan sokongan testnet kelas pertama.", + "page-learning-tools-chainIDE-description": "Mulakan perjalanan anda ke Web3 dengan menulis kontrak pintar bagi Ethereum dengan ChainIDE. Gunakan templat terbina dalam untuk belajar dan menjimatkan masa.", + "page-learning-tools-chainIDE-logo-alt": "Logo ChainIDE", + "page-learning-tools-tenderly-description": "Tenderly Sandbox ialah persekitaran prototaip di mana anda boleh menulis, melaksanakan, dan mengenyahpepijat kontrak pintar dalam pelayar menggunakan Solidity dan JavaScript.", + "page-learning-tools-tenderly-logo-alt": "Logo Tenderly", + "page-learning-tools-replit-logo-alt": "Logo Replit", + "page-learning-tools-remix-logo-alt": "Logo Remix", + "page-learning-tools-sandbox": "Kotak pasir kod", + "page-learning-tools-sandbox-desc": "Kotak pasir ini akan memberi anda ruang untuk bereksperimen dengan menulis kontrak pintar dan memahami Ethereum.", + "page-learning-tools-speed-run-ethereum-description": "Speed Run Ethereum ialah satu set cabaran untuk menguji pengetahuan Solidity anda menggunakan Scaffold-ETH", + "page-learning-tools-speed-run-ethereum-logo-alt": "Logo Speed Run Ethereum", + "page-learning-tools-studio-description": "IDE berasaskan web di mana anda boleh mengikuti tutorial untuk membuat dan menguji kontrak pintar, dan membina bahagian depan untuk mereka.", + "page-learning-tools-vyperfun-description": "Pelajari Vyper untuk membina permainan Pokémon anda sendiri.", + "page-learning-tools-vyperfun-logo-alt": "Logo Vyper.fun", + "page-learning-tools-nftschool-description": "Terokai token tidak sepiawai, atau NFT dari sudut teknikal.", + "page-learning-tools-nftschool-logo-alt": "Logo NFT school", + "page-learning-tools-pointer-description": "Pelajari kemahiran pembangunan web3 dengan tutorial interaktif yang menyeronokkan. Sementara memperoleh ganjaran mata wang kripto", + "page-learning-tools-pointer-logo-alt": "Logo Pointer", + "page-learning-tools-platzi-description": "Belajar cara untuk membina dapp pada Web3 dan menguasai semua kemahiran yang diperlukan untuk menjadi pembangun blok rantai.", + "page-learning-tools-platzi-logo-alt": "Logo Platzi", + "page-learning-tools-alchemy-university-description": "Bangunkan kerjaya web3 anda melalui kursus, projek dan kod.", + "page-learning-tools-alchemy-university-logo-alt": "Logo Alchemy University", "alt-eth-blocks": "Ilustrasi blok disusun seperti simbol ETH" } diff --git a/src/intl/ms/page-developers-local-environment.json b/src/intl/ms/page-developers-local-environment.json new file mode 100644 index 00000000000..0fced48e3bb --- /dev/null +++ b/src/intl/ms/page-developers-local-environment.json @@ -0,0 +1,37 @@ +{ + "page-local-environment-brownie-desc": "Rangka kerja pembangunan dan ujian berasaskan Python untuk kontrak pintar yang bertumpukan Mesin Maya Ethereum.", + "page-local-environment-brownie-logo-alt": "Logo Brownie", + "page-local-environment-kurtosis-desc": "Alat berasaskan bekas untuk mudah mengkonfigurasi dan memutarkan testnet Ethereum berbilang-klien untuk pembangunan dApp tempatan pesat, prototaip, dan ujian.", + "page-local-environment-kurtosis-logo-alt": "Logo Kurtosis", + "page-local-environment-epirus-desc": "Platform untuk membangunkan, menggerakkan dan memantau aplikasi blok rantai pada Mesin Maya Java.", + "page-local-environment-epirus-logo-alt": "Logo Epirus", + "page-local-environment-eth-app-desc": "Buat aplikasi berkuasa Ethereum dengan satu arahan. Datang dengan tawaran yang luas daripada rangka kerja UI dan templat DeFi untuk dipilih.", + "page-local-environment-eth-app-logo-alt": "Logo Create Eth App", + "page-local-environment-foundry-desc": "Kit pantas, mudah alih dan modular untuk pembangunan aplikasi Ethereum yang telah ditulis dalam Rust.", + "page-local-environment-foundry-logo-alt": "Logo Foundry", + "page-local-environment-framework-feature-1": "Ciri-ciri untuk memutarkan tika blok rantai tempatan.", + "page-local-environment-framework-feature-2": "Utiliti untuk mengumpul dan menguji kontrak pintar anda.", + "page-local-environment-framework-feature-3": "Tambahan pembangunan pelanggan untuk membina aplikasi menghadap pengguna anda dalam projek/repositori yang sama.", + "page-local-environment-framework-feature-4": "Konfigurasi untuk menyambung ke rangkaian Ethereum dan menggunakan kontrak, sama ada pada tika tempatan yang berlangsung, atau salah satu daripada rangkaian awam Ethereum.", + "page-local-environment-framework-feature-5": "Pengedaran aplikasi ternyahpusat - integrasi dengan pilihan storan seperti IPFS.", + "page-local-environment-framework-features": "Rangka kerja ini datang dengan banyak fungsi lain dari yang biasa, seperti:", + "page-local-environment-frameworks-desc": "Kami mengesyorkan memilih rangka kerja, terutamanya jika anda baru sahaja bermula. Membina sebuah dapp penuh memerlukan kepingan teknologi yang berbeza. Rangka kerja termasuk banyak ciri yang diperlukan atau menyediakan sistem plugin mudah untuk memilih alat yang anda mahu.", + "page-local-environment-frameworks-title": "Rangka kerja dan timbunan pra-dibuat", + "page-local-environment-hardhat-desc": "Hardhat ialah persekitaran pembangunan Ethereum untuk profesional.", + "page-local-environment-hardhat-logo-alt": "Logo Hardhat", + "page-local-environment-openZeppelin-desc": "Jimat waktu pembangunan dengan mengumpul, menaik taraf, menggerakkan, dan berinteraksi dengan kontrak pintar dengan CLI kami.", + "page-local-environment-openZeppelin-logo-alt": "Logo OpenZeppelin", + "page-local-environment-scaffold-eth-desc": "Ethers + Hardhat + React: semua yang anda perlukan untuk mula membina aplikasi terdesentralisasi dikuasakan oleh kontrak pintar.", + "page-local-environment-scaffold-eth-logo-alt": "Logo scaffold-eth", + "page-local-environment-setup-meta-desc": "Panduan mengenai cara untuk memilih timbunan perisian anda untuk pembangunan Ethereum.", + "page-local-environment-setup-meta-title": "Persediaan pembangunan tempatan Ethereum", + "page-local-environment-setup-subtitle": "Jika anda bersedia untuk mula membina, sudah tiba masanya untuk memilih timbunan anda.", + "page-local-environment-setup-subtitle-2": "Berikut ialah alat dan rangka kerja yang boleh anda gunakan untuk membantu anda membina aplikasi Ethereum anda.", + "page-local-environment-setup-title": "Sediakan persekitaran pembangunan tempatan anda", + "page-local-environment-solidity-template-desc": "Templat GitHub untuk persediaan pra-dibina untuk kontrak pintar Solidity anda. Termasuk rangkaian tempatan Hardhat, Waffle untuk ujian, Ethers untuk pelaksanaan dompet, dan banyak lagi.", + "page-local-environment-solidity-template-logo-alt": "Logo Solidity template", + "page-local-environment-truffle-desc": "Truffle Suite membantu pemaju mendapat idea hingga ke aplikasi terdesentralisasi sebaik mungkin.", + "page-local-environment-truffle-logo-alt": "Logo Truffle", + "page-local-environment-waffle-desc": "Lib ujian paling maju untuk kontrak pintar. Gunakan bersendirian atau dengan Scaffold-eth atau Hardhat.", + "page-local-environment-waffle-logo-alt": "Logo Waffle" +} diff --git a/src/intl/ms/page-languages.json b/src/intl/ms/page-languages.json index 0fd307879bd..e9ffffd050f 100644 --- a/src/intl/ms/page-languages.json +++ b/src/intl/ms/page-languages.json @@ -1,9 +1,24 @@ { + "page-languages-h1": "Sokongan Bahasa", + "page-languages-interested": "Berminat untuk menyumbang?", + "page-languages-learn-more": "Ketahui lebih lanjut mengenai Program Penterjemahan kami", + "page-languages-meta-desc": "Sumber kepada semua bahasa sokongan ethereum.org dan cara untuk menurut serta sebagai penterjemah.", + "page-languages-meta-title": "Bahasa Terjemahan ethereum.org", + "page-languages-p1": "Ethereum adalah satu projek global, maka sangat penting untuk ethereum.org dapat diakses oleh semua orang, tanpa mengira kewarganegaraan dan bahasa mereka. Komuniti kami telah bekerja keras untuk merealisasikan visi ini.", + "page-languages-translations-available": "ethereum.org terdapat dalam bahasa berikut", + "page-languages-resources-paragraph": "Selain menterjemahkan kandungan ethereum.org, kami juga turut mengekalkan", + "page-languages-resources-link": "senarai sumber tentang Ethereum dalam bahasa lain", + "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", "language-ar": "Bahasa Arab", + "language-az": "Bahasa Azerbaijan", "language-bg": "Bahasa Bulgaria", "language-bn": "Bahasa Bengali", "language-ca": "Bahasa Catalonia", "language-cs": "Bahasa Czech", + "language-da": "Bahasa Denmark", "language-de": "Bahasa Jerman", "language-el": "Bahasa Greek", "language-en": "Bahasa Inggeris", @@ -11,6 +26,9 @@ "language-fa": "Bahasa Parsi", "language-fi": "Bahasa Finland", "language-fr": "Bahasa Perancis", + "language-gl": "Bahasa Galicia", + "language-gu": "Bahasa Gujarati", + "language-he": "Bahasa Ibrani", "language-hi": "Bahasa Hindi", "language-hr": "Bahasa Croatia", "language-hu": "Bahasa Hungary", @@ -19,6 +37,8 @@ "language-it": "Bahasa Itali", "language-ja": "Bahasa Jepun", "language-ka": "Bahasa Georgia", + "language-kk": "Bahasa Kazakh", + "language-km": "Bahasa Khmer", "language-ko": "Bahasa Korea", "language-lt": "Bahasa Lithuania", "language-ml": "Bahasa Malayalam", @@ -26,6 +46,8 @@ "language-ms": "Bahasa Melayu", "language-nb": "Bahasa Norway", "language-nl": "Bahasa Belanda", + "language-pcm": "Bahasa Pidgin Nigeria", + "language-fil": "Bahasa Filipina", "language-pl": "Bahasa Poland", "language-pt": "Bahasa Portugis", "language-pt-br": "Bahasa Portugis (Brazil)", @@ -37,9 +59,12 @@ "language-sr": "Bahasa Serbia", "language-sw": "Bahasa Swahili", "language-th": "Bahasa Thai", + "language-ta": "Bahasa Tamil", "language-tr": "Bahasa Turki", "language-uk": "Bahasa Ukraine", + "language-ur": "Bahasa Urdu", + "language-uz": "Bahasa Uzbek", "language-vi": "Bahasa Vietnam", - "language-zh": "Bahasa Ringkas Cina", + "language-zh": "Bahasa Cina Ringkas", "language-zh-tw": "Bahasa Cina Tradisional" } diff --git a/src/intl/ms/page-layer-2.json b/src/intl/ms/page-layer-2.json new file mode 100644 index 00000000000..4d30ef59a6a --- /dev/null +++ b/src/intl/ms/page-layer-2.json @@ -0,0 +1,131 @@ +{ + "layer-2-arbitrum-note": "Bukti penipuan hanya untuk pengguna yang disenarai putih, senarai putih tidak dibuka lagi", + "layer-2-boba-note": "Pengesahan keadaan sedang dibangunkan", + "layer-2-optimism-note": "Bukti salah sedang dibangunkan", + "layer-2-hero-title": "Layer 2", + "layer-2-hero-header": "Ethereum untuk semua", + "layer-2-hero-subtitle": "Meningkatkan skala Ethereum untuk penggunaan besar-besaran.", + "layer-2-hero-alt-text": "Ilustrasi transaksi dilancarkan pada lapisan 2 dan disiarkan ke Rangkaian Utama Ethereum", + "layer-2-hero-button-1": "Apakah itu lapisan 2", + "layer-2-hero-button-2": "Gunakan lapisan 2", + "layer-2-hero-button-3": "Berpindah ke lapisan 2", + "layer-2-statsbox-1": "TVL dikunci dalam lapisan 2 (USD)", + "layer-2-statsbox-2": "Purata fi pemindahan ETH lapisan 2 (USD)", + "layer-2-statsbox-3": "Perubahan TVL Lapisan 2 (30 hari)", + "layer-2-what-is-layer-2-title": "Apakah itu lapisan 2?", + "layer-2-what-is-layer-2-1": "Lapisan 2 (L2) ialah istilah kolektif untuk menggambarkan set tertentu penyelesaian penskalaan Ethereum. Lapisan 2 ialah blok rantai berasingan yang memanjangkan Ethereum dan mewarisi jaminan keselamatan Ethereum.", + "layer-2-what-is-layer-2-2": "Sekarang mari kita mendalami lagi. Untuk melakukan ini kita perlu menjelaskan lapisan 1 (L1).", + "layer-2-what-is-layer-1-title": "Apakah itu lapisan 1?", + "layer-2-what-is-layer-1-1": "Lapisan 1 ialah blok rantai asas. Ethereum dan Bitcoin ialah blok rantai lapisan 1 kerana kedua-duanya asas yang mendasari pelbagai rangkaian lapisan 2. Contoh projek lapisan 2 termasuk \"gulungan\" pada Ethereum dan Rangkaian Kilat pada Bitcoin. Semua aktiviti transaksi pengguna pada projek lapisan 2 akhirnya boleh kembali ke blok rantai lapisan 1.", + "layer-2-what-is-layer-1-2": "Ethereum juga berfungsi sebagai lapisan ketersediaan data untuk lapisan 2. Projek lapisan 2 akan menyiarkan data transaksi ke Ethereum, serta bergantung pada Ethereum untuk ketersediaan data. Data ini boleh digunakan untuk mendapatkan keadaan lapisan 2, atau untuk mempertikaikan transaksi pada lapisan 2.", + "layer-2-what-is-layer-1-list-title": "Ethereum sebagai lapisan 1 termasuk:", + "layer-2-what-is-layer-1-list-1": "Sebuah rangkaian pengendali nod untuk menjamin dan mengesahkan rangkaian", + "layer-2-what-is-layer-1-list-2": "Sebuah rangkaian pengeluar blok", + "layer-2-what-is-layer-1-list-3": "Blok rantai sendiri dan sejarah data transaksi", + "layer-2-what-is-layer-1-list-4": "Mekanisme konsensus untuk rangkaian", + "layer-2-what-is-layer-1-list-link-1": "Masih keliru tentang Ethereum?", + "layer-2-what-is-layer-1-list-link-2": "Ketahui perihalan Ethereum.", + "layer-2-why-do-we-need-layer-2-title": "Mengapa kita perlukan lapisan 2?", + "layer-2-why-do-we-need-layer-2-1": "Tiga sifat yang diingini daripada blok rantai adalah bahawa ia ternyahpusat, selamat dan boleh diskala. Trilema blok rantai menyatakan bahawa seni bina blok rantai yang ringkas hanya boleh mencapai dua daripada tiga. Inginkan blok rantai yang selamat dan ternyahpusat? Anda perlu mengorbankan kebolehskalaan.", + "layer-2-why-do-we-need-layer-2-2": "Ethereum kini memproses 1+ juta transaksi setiap hari. Permintaan untuk menggunakan Ethereum boleh menyebabkan harga fi transaksi menjadi tinggi. Di sinilah kegunaan rangkaian lapisan 2.", + "layer-2-why-do-we-need-layer-2-scalability": "Kebolehskalaan", + "layer-2-why-do-we-need-layer-2-scalability-1": "Matlamat utama lapisan 2 adalah untuk meningkatkan daya pemprosesan transaksi (transaksi lebih tinggi sesaat) tanpa mengorbankan penyahpusatan atau keselamatan.", + "layer-2-why-do-we-need-layer-2-scalability-2": "Rangkaian Utama Ethereum (lapisan 1) hanya dapat memproses kira-kira 15 transaksi setiap saat. Apabila permintaan untuk menggunakan Ethereum tinggi, rangkaian menjadi sesak, yang meningkatkan fi transaksi dan mengecualikan pengguna yang tidak mampu membayar fi tersebut. Lapisan 2 ialah penyelesaian yang mengurangkan fi tersebut dengan memproses transaksi daripada blok rantai lapisan 1.", + "layer-2-why-do-we-need-layer-2-scalability-3": "Maklumat lanjut tentang visi Ethereum", + "layer-2-benefits-of-layer-2-title": "Manfaat lapisan 2", + "layer-2-lower-fees-title": "Fi lebih rendah", + "layer-2-lower-fees-description": "Dengan menggabungkan berbilang transaksi luar rantaian ke dalam satu transaksi lapisan 1, fi transaksi dikurangkan secara besar-besaran, menjadikan Ethereum lebih mudah diakses untuk semua.", + "layer-2-maintain-security-title": "Mengekalkan keselamatan", + "layer-2-maintain-security-description": "Blok rantai lapisan 2 menyelesaikan transaksi Rangkaian Utama di Ethereum, membolehkan pengguna mendapat manfaat daripada keselamatan rangkaian Ethereum.", + "layer-2-expand-use-cases-title": "Memperluas kes penggunaan", + "layer-2-expand-use-cases-description": "Dengan transaksi yang lebih tinggi sesaat, fi yang lebih rendah dan teknologi baharu, projek akan berkembang kepada aplikasi baru dengan pengalaman pengguna yang lebih baik.", + "layer-2-how-does-layer-2-work-title": "Bagaimana lapisan 2 berfungsi?", + "layer-2-how-does-layer-2-work-1": "Seperti yang kami sebutkan di atas, lapisan 2 ialah istilah kolektif untuk penyelesaian penskalaan Ethereum yang mengendalikan transaksi di luar lapisan 1 Ethereum sambil masih memanfaatkan keselamatan lapisan 1 Ethereum yang teguh. Lapisan 2 ialah blok rantai berasingan yang melanjutkan Ethereum. Bagaimana ia berfungsi?", + "layer-2-how-does-layer-2-work-2": "Terdapat beberapa jenis lapisan 2, masing-masing mempunyai kelemahan dan model keselamatan sendiri. Lapisan 2 mengambil beban transaksi daripada lapisan 1, membolehkan ia kurang sesak, dan segala-galanya menjadi lebih mudah diskala.", + "layer-2-rollups-title": "Rollups", + "layer-2-rollups-1": "Gulungan memberkaskan beratus-ratus transaksi ke dalam satu transaksi pada lapisan 1. Ini mengagihkan fi transaksi L1 merentasi semua orang dalam gulungan, menjadikan fi lebih murah bagi setiap pengguna.", + "layer-2-rollups-2": "Transaksi gulungan dilaksanakan di luar lapisan 1 tetapi data transaksi diserahkan ke lapisan 1. Dengan menyerahkan data transaksi ke lapisan 1, gulungan mewarisi keselamatan Ethereum. Ini kerana apabila data dimuat naik ke lapisan 1, membuat asal transaksi gulungan memerlukan Ethereum juga dibuat asal. Terdapat dua pendekatan yang berbeza untuk gulungan: optimistik dan pengetahuan sifar - kedua-duanya berbeza terutamanya tentang cara data transaksi ini dikemukakan kepada L1.", + "layer-2-optimistic-rollups-title": "Optimistic rollups", + "layer-2-optimistic-rollups-description": "Gulungan optimistik adalah 'optimistik' dalam erti kata bahawa transaksi dianggap sah, tetapi boleh dicabar jika perlu. Jika transaksi tidak sah disyaki, bukti kesalahan dijalankan untuk melihat jika ini telah berlaku.", + "layer-2-optimistic-rollups-childSentance": "Lebih kepada gulungan optimistik", + "layer-2-zk-rollups-title": "Zero-knowledge rollups", + "layer-2-zk-rollups-description": "Gulungan pengetahuan sifar menggunakan bukti sah iaitu transaksi dikira di luar rantaian, dan kemudian data termampat dibekalkan kepada Rangkaian Utama Ethereum sebagai bukti kesahihan.", + "layer-2-zk-rollups-childSentance": "Maklumat lanjut tentang gulungan ZK", + "layer-2-dyor-title": "Melakukan penyelidikan anda sendiri: risiko lapisan 2", + "layer-2-dyor-1": "Banyak projek lapisan 2 agak baharu dan masih memerlukan pengguna untuk mempercayai kejujuran sesetengah pengendali ketika mereka mengusahakan penyahpusatan rangkaian mereka. Sentiasa buat penyelidikan anda sendiri untuk menentukan sama ada anda selesa dengan sebarang risiko yang terlibat.", + "layer-2-dyor-2": "Untuk maklumat lanjut tentang teknologi, risiko dan andaian kepercayaan lapisan 2, kami mengesyorkan anda menyemak L2BEAT, yang menyediakan rangka kerja penilaian risiko komprehensif bagi setiap projek.", + "layer-2-dyor-3": "Pergi ke L2BEAT", + "layer-2-use-layer-2-title": "Gunakan lapisan 2", + "layer-2-use-layer-2-1": "Sekarang anda faham sebab lapisan 2 wujud dan cara ia berfungsi, mari kita buat persediaan untuk anda!", + "layer-2-contract-accounts": "Jika anda menggunakan dompet kontrak pintar seperti Safe atau Argent, anda tidak akan mempunyai kawalan ke atas alamat ini pada lapisan 2 sehingga anda menggunakan semula akaun kontrak anda ke alamat tersebut pada lapisan 2. Akaun klasik dengan ungkapan pemulihan secara automatik akan memiliki akaun yang sama pada semua rangkaian lapisan 2.", + "layer-2-use-layer-2-generalized-title": "Lapisan umum 2", + "layer-2-use-layer-2-generalized-1": "Lapisan umum 2 berkelakuan sama seperti Ethereum — tetapi lebih murah. Apa-apa yang anda boleh lakukan pada lapisan Ethereum 1, anda juga boleh lakukan pada lapisan 2. Banyak dapp telah mula berhijrah ke rangkaian ini atau telah melangkau Rangkaian Utama sama sekali untuk menggunakan terus pada lapisan 2.", + "layer-2-use-layer-2-application-specific-title": "Lapisan 2 khusus aplikasi", + "layer-2-use-layer-2-application-specific-1": "Lapisan 2 khusus aplikasi ialah projek yang khusus untuk pengoptimuman bagi ruang aplikasi tertentu, membawa prestasi yang lebih baik.", + "layer-2-sidechains-title": "Nota pada rantai sisi, validium, dan blok rantai alternatif", + "layer-2-sidechains-1": "Rantai sisi dan validium ialah blok rantai yang membolehkan aset daripada Ethereum dihubungkan melalui jambatan dan digunakan pada blok rantai lain. Rantai sisi dan validium berjalan selari dengan Ethereum, dan berinteraksi dengan Ethereum melalui jambatan, tetapi tidak memperoleh keselamatan atau ketersediaan data daripada Ethereum.", + "layer-2-sidechains-2": "Kedua-dua diskala sama dengan lapisan 2 - menawarkan fi transaksi yang lebih rendah dan daya pemprosesan transaksi yang lebih tinggi - tetapi mempunyai andaian kepercayaan yang berbeza.", + "layer-2-more-on-sidechains": "Maklumat lanjut tentang rantai sisi", + "layer-2-more-on-validiums": "Maklumat lanjut tentang validium", + "layer-2-sidechains-4": "Sesetengah blok rantai lapisan 1 melaporkan daya pemprosesan lebih tinggi dan fi transaksi yang lebih rendah daripada Ethereum, tetapi secara umumnya ada keseimbangan dalam aspek lain, contohnya syarat perkakasan lebih tinggi untuk menjalankan nod.", + "layer-2-onboard-title": "Cara memasuki lapisan 2", + "layer-2-onboard-1": "Terdapat dua cara utama untuk memasukkan aset anda ke lapisan 2: hubungkan dana melalui jambatan dari Ethereum menggunakan kontrak pintar atau keluarkan dana anda di bursa terus ke rangkaian lapisan 2.", + "layer-2-onboard-wallet-title": "Dana dalam dompet anda?", + "layer-2-onboard-wallet-1": "Jika anda sudah ada ETH dalam dompet anda, anda perlu menggunakan jambatan untuk memindahkan ETH itu daripada Rangkaian Utama Ethereum ke lapisan 2.", + "layer-2-more-on-bridges": "Maklumat lanjut tentang jambatan", + "layer-2-onboard-wallet-input-placeholder": "Pilih L2 yang anda mahu hubungkan jambatan", + "layer-2-onboard-wallet-selected-1": "Anda boleh menyambung ke", + "layer-2-onboard-wallet-selected-2": "menggunakan dompet ini:", + "layer-2-bridge": "Jambatan", + "layer-2-onboard-exchange-title": "Dana pada bursa?", + "layer-2-onboard-exchange-1": "Beberapa bursa tukaran berpusat kini menawarkan pengeluaran langsung dan deposit kepada lapisan 2. Semak bursa yang menyokong pengeluaran lapisan 2 dan jenis lapisan 2 yang disokong.", + "layer-2-onboard-exchange-2": "Anda juga akan memerlukan dompet untuk menerima dana yang dikeluarkan.", + "layer-2-onboard-find-a-wallet": "Cari dompet Ethereum.", + "layer-2-onboard-exchange-input-placeholder": "Periksa bursa yang menyokong L2", + "layer-2-deposits": "Deposit", + "layer-2-withdrawals": "Pengeluaran", + "layer-2-go-to": "Pergi ke", + "layer-2-tools-title": "Alat yang berkesan pada lapisan 2", + "layer-2-tools-l2beat-description": "L2BEAT merupakan sumber yang hebat untuk melihat penilaian risiko teknikal bagi projek-projek lapisan 2. Kami mengesyorkan memeriksa sumber tersebut apabila menyelidik projek lapisan 2 tertentu.", + "layer-2-tools-l2fees-description": "Fi L2 membolehkan anda melihat kos semasa (dalam mata wang USD) untuk melakukan transaksi pada lapisan 2 yang berbeza.", + "layer-2-tools-chainlist-description": "Chainlist ialah sumber yang hebat untuk mengimport RPC rangkaian ke dalam dompet sokongan. Anda akan mendapati RPC untuk projek lapisan 2 di sini untuk membantu anda bersambung.", + "layer-2-tools-zapper-description": "Uruskan portfolio web3 anda daripada DeFi ke NFT dan apa sahaja yang akan datang. Buat pelaburan terhadap peluang terkini dari satu tempat yang mudah.", + "layer-2-tools-zerion-description": "Membina dan menguruskan keseluruhan portfolio DeFi anda dari satu tempat. Terokai dunia kewangan ternyahpusat hari ini.", + "layer-2-tools-debank-description": "Teruskan dengan semua kejadian penting dalam dunia web3", + "layer-2-faq-title": "FAQ", + "layer-2-faq-question-1-title": "Mengapa tiada L2 Ethereum 'rasmi'?", + "layer-2-faq-question-1-description-1": "Sama seperti tiada pelanggan Ethereum 'rasmi', tiada lapisan 2 Ethereum 'rasmi'. Ethereum tidak memerlukan izin - sesiapa sahaja boleh mencipta lapisan 2! Pelbagai pasukan akan melaksanakan versi lapisan 2 mereka sendiri, dan ekosistem secara keseluruhan akan mendapat manfaat daripada kepelbagaian pendekatan reka bentuk yang dioptimumkan untuk kes penggunaan yang berbeza. Sama seperti kami mempunyai pelbagai pelanggan Ethereum yang dibangunkan oleh pelbagai pasukan untuk mempunyai kepelbagaian dalam rangkaian, ini juga akan menjadi cara lapisan 2 berkembang pada masa akan datang.", + "layer-2-faq-question-2-title": "Apakah perbezaan antara gulungan optimistik dan pengetahuan sifar?", + "layer-2-faq-question-2-description-1": "Kedua-dua gulungan optimistik dan pengetahuan sifar memberkas (atau 'menggulung') beratus-ratus transaksi ke dalam satu transaksi pada lapisan 1. Transaksi gulungan dilaksanakan di luar lapisan 1 tetapi data transaksi akan disiarkan kepada lapisan 1.", + "layer-2-faq-question-2-description-2": "Perbezaan utama ialah data yang disiarkan pada lapisan 1 dan cara data disahkan. Bukti kesahihan (digunakan oleh gulungan pengetahuan sifar) menjalankan pengiraan di luar rantaian dan menyiarkan bukti, manakala bukti kesalahan (digunakan oleh gulungan optimistik) hanya menjalankan pengiraan di rantaian apabila kesalahan disyaki dan mesti diperiksa.", + "layer-2-faq-question-2-description-3": "Pada masa ini, kebanyakan gulungan ZK adalah khusus aplikasi, berbeza dengan gulungan optimistik yang sebahagian besarnya menyeluruh.", + "layer-2-more-info-on-optimistic-rollups": "Maklumat lanjut tentang gulungan optimistik", + "layer-2-more-info-on-zk-rollups": "Maklumat lanjut tentang gulungan pengetahuan sifar", + "layer-2-faq-question-4-title": "Apakah risiko dengan lapisan 2?", + "layer-2-faq-question-4-description-1": "Projek Lapisan 2 mengandungi risiko tambahan berbanding dengan memegang dana dan berurus niaga secara langsung di Rangkaian Utama Ethereum. Sebagai contoh, penjujukan mungkin terhenti, membuat anda terpaksa menunggu untuk mengakses dana.", + "layer-2-faq-question-4-description-2": "Kami menggalakkan anda untuk melakukan penyelidikan anda sendiri sebelum memindahkan dana penting kepada lapisan 2. Untuk maklumat lanjut tentang teknologi, risiko dan andaian kepercayaan lapisan 2, kami mengesyorkan anda menyemak L2BEAT, yang menyediakan rangka kerja penilaian risiko komprehensif bagi setiap projek.", + "layer-2-faq-question-4-description-3": "Jambatan blok rantai, yang memudahkan pemindahan aset ke lapisan 2, berada dalam peringkat awal pembangunan dan reka bentuk jambatan optimum mungkin belum ditemui. Terdapat godaman jambatan baru-baru ini.", + "layer-2-faq-question-5-title": "Mengapakah sesetengah projek lapisan 2 tidak disenaraikan di sini?", + "layer-2-faq-question-5-description-1": "Kami mahu memastikan sumber terbaik yang mungkin disenaraikan supaya pengguna boleh menavigasi ruang lapisan 2 secara selamat dan yakin. Kami mengekalkan rangka kriteria tentang cara projek dinilai bagi tujuan keterangkuman.", + "layer-2-faq-question-5-view-listing-policy": "Lihat dasar penyenaraian lapisan 2 kami di sini.", + "layer-2-faq-question-5-description-2": "Sesiapa sahaja bebas mencadangkan penambahan lapisan 2 pada ethereum.org. Jika terdapat lapisan 2 yang kami terlepas, sila cadangkan.", + "layer-2-further-reading-title": "Bacaan lanjut", + "a-rollup-centric-ethereum-roadmap": "Peta hala tuju ethereum yang tertumpu pada gulungan", + "an-incomplete-guide-to-rollups": "An Incomplete Guide to Rollups", + "polygon-sidechain-vs-ethereum-rollups": "Rantai sisi Poligon berbanding Gulungan Ethereum: pendekatan penskalaan lapisan 2| Vitalik Buterin dan Lex Fridman", + "rollups-the-ultimate-ethereum-scaling-strategy": "GULUNGAN - Strategi Penskalaan Ethereum yang Unggul? Arbitrum dan Optimism dijelaskan", + "scaling-layer-1-with-shard-chains": "Penskalaan lapisan 1 dengan rantai pecahan", + "understanding-rollup-economics-from-first-principals": "Memahami ekonomi gulungan daripada prinsipal pertama", + "arbitrum-description": "Arbitrum One ialah Gulungan Optimistik yang bertujuan untuk rasa sama seperti berinteraksi dengan Ethereum, tetapi dengan transaksi yang mempunyai sebahagian kecil kos berbanding dengan yang diperlakukan pada L1.", + "optimism-description": "Optimism ialah gulungan optimistik setara EVM yang cepat, ringkas dan selamat. Ia menskala teknologi Ethereum sambil menskala nilainya melalui pembiayaan barangan awam retroaktif.", + "boba-description": "Boba ialah Gulungan Optimistik yang pada asalnya bercabang daripada Optimism, iaitu penyelesaian penskalaan yang bertujuan untuk mengurangkan fi gas, meningkatkan daya pemprosesan transaksi dan memperluaskan keupayaan kontrak pintar.", + "loopring-description": "Penyelesaian L2 zkRollup Loopring bertujuan untuk menawarkan jaminan keselamatan yang sama seperti rangkaian utama Ethereum, dengan peningkatan kebolehskalaan besar: daya pemprosesan ditingkatkan sebanyak 1000x, dan kos dikurangkan kepada hanya 0.1% daripada L1.", + "zksync-description": "zkSync ialah platform gulungan zk berpusatkan pengguna daripada Matter Labs. Ia merupakan penyelesaian penskalaan untuk Ethereum, yang sudah aktif di rangkaian utama Ethereum. Ia menyokong pembayaran, pertukaran token dan penempaan NFT.", + "zkspace-description": "Platform ZKSpace terdiri daripada tiga bahagian utama: lapisan 2 AMM DEX menggunakan teknologi Gulungan ZK yang dikenali sebagai ZKSwap, perkhidmatan pembayaran yang dikenali sebagai ZKSquare, dan pasaran NFT dikenali sebagai ZKSea.", + "aztec-description": "Aztec Network ialah gulungan zk persendirian pertama di Ethereum, membolehkan aplikasi ternyahpusat untuk mengakses privasi dan skala.", + "layer-2-note": "Nota:", + "layer-2-ecosystem-portal": "Portal Ekosistem", + "layer-2-token-lists": "Senarai Token", + "layer-2-explore": "Terokai", + "page-dapps-ready-button": "Pergi" +} diff --git a/src/intl/ms/page-learn.json b/src/intl/ms/page-learn.json new file mode 100644 index 00000000000..44e9a76482a --- /dev/null +++ b/src/intl/ms/page-learn.json @@ -0,0 +1,123 @@ +{ + "toc-learn-hub": "Hab Pembelajaran", + "toc-what-is-crypto-ethereum": "Apakah itu Ethereum?", + "toc-how-do-i-use-ethereum": "Bagaimanakah saya menggunakan Ethereum?", + "toc-what-is-ethereum-used-for": "Untuk apakah Ethereum digunakan?", + "toc-strengthen-the-ethereum-network": "Menguatkan rangkaian Ethereum", + "toc-learn-about-the-ethereum-protocol": "Pelajari tentang protokol Ethereum", + "toc-learn-about-the-ethereum-community": "Pelajari tentang komuniti Ethereum", + "toc-books-and-podcasts": "Buku dan podcast", + "hero-header": "Pelajari tentang Ethereum", + "hero-subtitle": "Panduan pendidikan anda ke dunia Ethereum. Pelajari cara Ethereum berfungsi dan cara bersambung dengannya. Laman ini merangkumi artikel teknikal dan bukan teknikal, panduan, dan sumber-sumber.", + "hero-button-lets-get-started": "Mari kita mulakan", + "what-is-crypto-1": "Anda mungkin pernah mendengar tentang mata wang kripto, blok rantai, dan Bitcoin. Pautan di bawah akan membantu anda mempelajari apa itu dan bagaimana hubungannya dengan Ethereum.", + "what-is-crypto-2": "Mata wang kripto, seperti Bitcoin, membolehkan sesiapa untuk memindahkan wang secara global. Ethereum juga melakukannya, tetapi ia juga boleh menjalankan kod yang membolehkan pengguna mencipta aplikasi dan organisasi. Ia sama-sama tahan lasak dan fleksibel: mana-mana program komputer boleh berjalan di Ethereum. Pelajari lebih lanjut dan ketahui cara untuk bermula:", + "what-is-ethereum-card-title": "Apa itu Ethereum?", + "what-is-ethereum-card-description": "Jika anda baharu, mulakan di sini untuk mempelajari sebab Ethereum penting.", + "what-is-ethereum-card-image-alt": "Ilustrasi seseorang mengintip sebuah bazaar, melambangkan Ethereum.", + "what-is-eth-card-title": "Apakah itu ETH?", + "what-is-eth-description": "Ether (ETH) ialah mata wang yang memacu rangkaian Ethereum dan aplikasi-aplikasinya.", + "what-is-web3-card-title": "Apakah itu Web3?", + "what-is-web3-card-description": "Web3 ialah model untuk Internet yang memberikan nilai kepada pemilikan aset dan identiti anda.", + "additional-reading-more-on-ethereum-basics": "Maklumat lanjut mengenai asas Ethereum", + "guides-hub-desc": "Panduan: arahan langkah demi langkah tentang menggunakan Ethereum", + "quiz-hub-desc": "Pusat Kuiz: uji pengetahuan anda", + "additional-reading-what-are-smart-contracts": "What are smart contracts?", + "additional-reading-what-is-web3": "Apakah itu web3?", + "additional-reading-ethereum-in-thirty-minutes": "Ethereum dalam masa 30 minit oleh Vitalik Buterin", + "additional-reading-get-eth": "Ketahui bagaimana untuk mendapat ETH", + "how-do-i-use-ethereum-1": "Menggunakan Ethereum boleh bermakna banyak perkara kepada ramai orang. Mungkin anda mahu mendaftar masuk ke aplikasi, membuktikan identiti dalam talian anda, atau memindahkan beberapa ETH. Perkara pertama yang anda perlukan ialah akaun. Cara paling mudah untuk membuat dan mengakses akaun ialah menggunakan perisian yang dipanggil dompet.", + "what-is-a-wallet-card-title": "Apakah itu dompet?", + "what-is-a-wallet-card-description": "Dompet digital seperti dompet sebenar; ia menyimpan item yang anda perlukan untuk membuktikan identiti anda dan mendapat akses kepada tempat-tempat yang anda hargai.", + "what-is-a-wallet-card-alt": "Ilustrasi sebuah robot.", + "find-a-wallet-card-title": "Cari dompet", + "find-a-wallet-card-description": "Semak imbas dompet berdasarkan ciri-ciri yang penting kepada anda.", + "find-a-wallet-button": "Senarai dompet", + "crypto-security-basics-card-title": "Asas keselamatan", + "crypto-security-basics-card-description": "Pelajari cara untuk mengenal pasti penipuan dan cara untuk mengelakkan helah yang paling biasa.", + "crypto-security-basics-card-button": "Kekal selamat", + "things-to-consider-banner-title": "Perkara yang boleh dipertimbangkan apabila menggunakan Ethereum", + "things-to-consider-banner-1": "Setiap transaksi Ethereum memerlukan bayaran dalam bentuk ETH, walaupun anda perlu memindahkan token berbeza yang dibina di Ethereum seperti syiling stabil USDC atau DAI.", + "things-to-consider-banner-2": "Yuran boleh tinggi bergantung pada bilangan orang yang cuba menggunakan Ethereum, jadi kami mengesyorkan penggunaan", + "things-to-consider-banner-layer-2": "Lapisan 2", + "additional-reading-more-on-using-ethereum": "Lebih kepada menggunakan Ethereum", + "additional-reading-how-to-create-an-ethereum-account": "Cara untuk mencipta akaun Ethereum", + "additional-reading-how-to-use-a-wallet": "Bagaimana untuk menggunakan wallet", + "additional-reading-layer-2": "Lapisan 2: mengurangkan fi transaksi", + "what-is-ethereum-used-for-1": "Ethereum telah membawa kepada penciptaan produk dan perkhidmatan baharu yang boleh meningkatkan pelbagai bidang kehidupan kita. Kita masih di peringkat awal tetapi terdapat banyak perkara untuk berasa teruja.", + "defi-card-title": "Desentralisasi kewangan (DeFi)", + "defi-card-description": "Terokai sistem kewangan alternatif yang dibina tanpa bank dan terbuka kepada sesiapa sahaja.", + "defi-card-button": "What is DeFi?", + "stablecoins-card-title": "Syiling Stabil", + "stablecoins-card-description": "Mata wang kripto ditambat kepada nilai mata wang, komoditi, atau beberapa instrumen kewangan lain.", + "stablecoins-card-button": "Apakah itu syiling stabil?", + "nft-card-title": "Token tidak sepiawai (NFT)", + "nft-card-description": "Mewakili pemilikan item yang unik, daripada seni kepada surat ikatan hak milik kepada tiket konsert.", + "nft-card-button": "Apakah itu NFT?", + "dao-card-title": "Decentralized autonomous organizations (DAOs)", + "dao-card-description": "Dayakan cara-cara baharu untuk menyelaraskan kerja tanpa bos.", + "dao-card-button": "Apakah DAO?", + "dapp-card-title": "Aplikasi tidak berpusat (dapps)", + "dapp-card-description": "Cipta ekonomi digital bagi perkhidmatan rakan setara.", + "dapp-card-button": "Terokai dapp", + "emerging-use-cases-title": "Kes penggunaan yang muncul", + "emerging-use-cases-description": "Terdapat juga industri-industri terkenal lain yang telah diwujudkan atau diperbaiki dengan Ethereum:", + "play-to-earn": "Permainan main untuk peroleh (P2E)", + "fundraising-through-quadratic-funding": "Pengumpulan dana melalui Pendanaan Kuadratik", + "supply-chain-management": "Pengurusan rantaian bekalan", + "more-on-ethereum-use-cases": "Lebih lanjut mengenai kes penggunaan Ethereum", + "more-on-ethereum-use-cases-link": "Blok rantai di negara-negara membangun", + "strengthening-the-ethereum-network-description": "Anda boleh membantu menjamin Ethereum dan memperoleh ganjaran semasa mempertaruhkan ETH anda. Terdapat pilihan yang berbeza untuk pertaruhan bergantung pada pengetahuan teknikal anda dan jumlah ETH yang anda miliki.", + "staking-ethereum-card-title": "Mempertaruhkan Ethereum", + "staking-ethereum-card-description": "Pelajari cara untuk mula mempertaruhkan ETH anda.", + "staking-ethereum-card-button": "Mulakan pertaruhan", + "run-a-node-card-title": "Jalankan nod", + "run-a-node-card-description": "Main peranan kritikal dalam rangkaian Ethereum dengan menjalankan nod.", + "learn-about-ethereum-protocol-description": "Bagi pengguna yang paling berminat dalam bahagian teknikal rangkaian Ethereum.", + "energy-consumption-card-title": "Penggunaan tenaga", + "energy-consumption-card-description": "Berapakah jumlah tenaga yang digunakan oleh Ethereum?", + "energy-consumption-card-button": "Adakah Ethereum hijau?", + "ethereum-upgrades-card-title": "Peta hala tuju Ethereum", + "ethereum-upgrades-card-description": "Peta hala tuju Ethereum menjadikannya lebih berskala, selamat, dan mampan.", + "ethereum-upgrades-card-button": "Jelajahi peta hala tuju", + "ethereum-whitepaper-card-title": "Kertas Putih Ethereum", + "ethereum-whitepaper-card-description": "Cadangan Ethereum yang asal ditulis oleh Vitalik Buterin pada 2014.", + "ethereum-whitepaper-card-button": "Baca kertas putih", + "more-on-ethereum-protocol-title": "Lebih kepada protokol Ethereum", + "more-on-ethereum-protocol-ethereum-for-developers": "Ethereum untuk pembangun", + "more-on-ethereum-protocol-consensus": "Mekanisme konsensus berasaskan bukti taruhan Ethereum", + "more-on-ethereum-protocol-evm": "Komputer terbenam Ethereum (EVM)", + "more-on-ethereum-protocol-nodes-and-clients": "Nod dan pelanggan Ethereum", + "ethereum-community-description": "Kejayaan Ethereum adalah hasil komuniti yang amat berdedikasi. Beribu-ribu orang yang memberikan inspirasi dan didorong membantu menolak visi Ethereum ke hadapan, sementara juga menyediakan keselamatan kepada rangkaian melalui pertaruhan dan tadbir urus. Mari sertai kami!", + "community-hub-card-title": "Hab komuniti", + "community-hub-card-description": "Komuniti kami termasuk orang daripada semua latar belakang.", + "community-hub-card-alt": "Ilustrasi sekumpulan pembina yang sedang bekerjasama.", + "community-hub-card-button": "Jelajah lebih", + "get-involved-card-title": "Bagaimana saya boleh melibatkan diri?", + "get-involved-card-description": "Anda (ya, anda!) dialu-alukan untuk menyumbang kepada komuniti Ethereum.", + "online-communities-card-title": "Komuniti dalam talian", + "online-communities-card-description": "Komuniti dalam talian memberikan peluang yang besar untuk bertanya soalan lebih khusus atau terlibat.", + "online-communities-card-button": "Jelajah komuniti", + "books-about-ethereum": "Buku tentang Ethereum", + "proof-of-stake-title": "Bukti Taruhan", + "proof-of-stake-description": "13 September 2022 - Vitalik Buterin, Nathan Schneider", + "cryptopians-title": "Cryptopian", + "cryptopians-description": "22 Februari 2022 - Laura Shin", + "out-of-the-ether-title": "Keluar daripada Ether", + "out-of-the-ether-description": "29 September 2020 - Matthew Leising", + "the-infinite-machine-title": "Mesin Infiniti", + "the-infinite-machine-description": "14 Julai 2020 - Camila Russo", + "mastering-ethereum-title": "Menguasai Ethereum", + "mastering-ethereum-description": "23 Disember 2018 – Andreas M. Antonopoulos, Gavin Wood Ph.D.", + "podcasts-about-ethereum": "Audio siar mengenai Ethereum", + "bankless-title": "Bankless", + "bankless-description": "Panduan kepada kewangan Kripto", + "zeroknowledge-title": "Pengetahuan Sifar", + "zeroknowledge-description": "Selami teknologi yang akan memperkasa kemunculan web ternyahpusat dan komuniti yang membina ini", + "green-pill-title": "Pil Hijau", + "green-pill-description": "Meneroka sistem kripto-ekonomi yang mewujudkan luaran yang positif untuk dunia", + "unchained-title": "Tidak Dirantai", + "unchained-description": "Menyelami jauh ke dalam individu yang membina Internet ternyahpusat, butiran teknologi ini yang boleh mengukuhkan masa depan kita, dan beberapa topik yang paling penuh dengan duri dan ranjau dalam kripto, seperti peraturan, keselamatan dan privasi", + "the-daily-gwei-title": "The Daily Gwei", + "the-daily-gwei-description": "Ikhtisar berita, kemas kini dan analisis Ethereum" +} diff --git a/src/intl/ms/page-run-a-node.json b/src/intl/ms/page-run-a-node.json new file mode 100644 index 00000000000..07cd1f0f2e9 --- /dev/null +++ b/src/intl/ms/page-run-a-node.json @@ -0,0 +1,135 @@ +{ + "page-run-a-node-build-your-own-title": "Bina sendiri", + "page-run-a-node-build-your-own-hardware-title": "Langkah 1 – Perkakasan", + "page-run-a-node-build-your-own-minimum-specs": "Spesifikasi minimum", + "page-run-a-node-build-your-own-min-ram": "4 - 8 GB RAM", + "page-run-a-node-build-your-own-ram-note-1": "Lihat nota tentang pertaruhan", + "page-run-a-node-build-your-own-ram-note-2": "Lihat nota tentang Raspberry Pi", + "page-run-a-node-build-your-own-min-ssd": "2 TB SSD", + "page-run-a-node-build-your-own-ssd-note": "SSD perlu untuk kelajuan penulisan yang ditetapkan.", + "page-run-a-node-build-your-own-recommended": "Disyorkan", + "page-run-a-node-build-your-own-nuc": "Intel NUC, Generasi ke-7 atau lebih", + "page-run-a-node-build-your-own-nuc-small": "pemproses x86", + "page-run-a-node-build-your-own-connection": "Sambungan internet berwayar", + "page-run-a-node-build-your-own-connection-small": "Tidak wajib, tetapi memudahkan persediaan dan merupakan sambungan yang paling konsisten", + "page-run-a-node-build-your-own-peripherals": "Skrin paparan dan papan kekunci", + "page-run-a-node-build-your-own-peripherals-small": "Melainkan anda menggunakan DAppNode, atau persediaan ssh/headless", + "page-run-a-node-build-your-own-software": "Langkah 2 – Perisian", + "page-run-a-node-build-your-own-software-option-1-title": "Pilihan 1 – DAppNode", + "page-run-a-node-build-your-own-software-option-1-description": "Apabila perkakasan anda tersedia, sistem pengendalian DAppNode boleh dimuat turun menggunakan mana-mana komputer dan dipasangkan pada SSD kosong melalui pemacu USB.", + "page-run-a-node-build-your-own-software-option-1-button": "Persediaan DAppNode", + "page-run-a-node-build-your-own-software-option-2-title": "Pilihan 2 - Baris Perintah", + "page-run-a-node-build-your-own-software-option-2-description-1": "Untuk kawalan maksimum, pengguna berpengalaman boleh menggunakan baris perintah.", + "page-run-a-node-build-your-own-software-option-2-description-2": "Lihat dokumen pembangun kami untuk maklumat lanjut tentang bermula dengan pilihan pelanggan.", + "page-run-a-node-build-your-own-software-option-2-button": "Persediaan baris perintah", + "page-run-a-node-buy-fully-loaded-title": "Beli muat sepenuhnya", + "page-run-a-node-buy-fully-loaded-description": "Tempah pilihan pasang dan guna daripada pembekal untuk pengalaman penyertaan awal yang mudah.", + "page-run-a-node-buy-fully-loaded-note-1": "Binaan tidak diperlukan.", + "page-run-a-node-buy-fully-loaded-note-2": "Persediaan seperti Aplikasi dengan GUI.", + "page-run-a-node-buy-fully-loaded-note-3": "Baris perintah tidak diperlukan.", + "page-run-a-node-censorship-resistance-title": "Tahan Penapisan", + "page-run-a-node-censorship-resistance-preview": "Memastikan capaian bila diperlukan, dan elakkan daripada ditapis.", + "page-run-a-node-censorship-resistance-1": "Nod pihak ketiga boleh menolak transaksi daripada alamat IP tertentu, atau transaksi yang melibatkan akaun tertentu, oleh itu mungkin menyekat anda daripada menggunakan rangkaian apabila perlu. ", + "page-run-a-node-censorship-resistance-2": "Memiliki nod anda sendiri untuk menghantar transaksi akan menjamin bahawa anda boleh menyiarkan transaksi anda ke keseluruhan rangkaian perangkai padan pada bila-bila masa.", + "page-run-a-node-community-title": "Dapatkan pembantu", + "page-run-a-node-community-description-1": "Platform dalam talian seperti Discord atau Reddit dihuni sejumlah besar pembina komuniti yang bersedia membantu anda tentang apa-apa persoalan yang anda hadapi.", + "page-run-a-node-community-description-2": "Jangan menghadapinya bersendirian. Jika anda ada pertanyaan, besar kemungkinan seseorang di sini dapat mencari jawapan.", + "page-run-a-node-community-link-1": "Sertai Discord DAppNode", + "page-run-a-node-community-link-2": "Cari komuniti dalam talian", + "page-run-a-node-choose-your-adventure-title": "Pilih pengembaraan anda", + "page-run-a-node-choose-your-adventure-1": "Anda perlukan perkakasan tertentu untuk bermula. Walaupun perisian nod boleh dijalankan pada komputer peribadi, penggunaan perkakasan khusus dapat meningkatkan prestasi nod anda, sambil mengurangkan impak terhadap komputer utama anda.", + "page-run-a-node-choose-your-adventure-2": "Semasa memilih perkakasan, ingati bahawa rantaian akan sentiasa terus berkembang, dan penyelenggaraan pasti akan diperlukan kemudian. Peningkatan spesifikasi dapat menangguhkan keperluan penyelenggaraan nod.", + "page-run-a-node-choose-your-adventure-build-1": "Pilihan yang lebih murah dan lebih mudah suai untuk pengguna yang lebih mahir dari segi teknikal.", + "page-run-a-node-choose-your-adventure-build-bullet-1": "Sediakan bahagian anda sendiri.", + "page-run-a-node-choose-your-adventure-build-bullet-2": "Pasang DAppNode.", + "page-run-a-node-choose-your-adventure-build-bullet-3": "Atau, pilih OS dan pelanggan anda sendiri.", + "page-run-a-node-choose-your-adventure-build-start": "Mula membina", + "page-run-a-node-decentralized-title": "Pencaran Pusat", + "page-run-a-node-decentralized-preview": "Elakkan daripada mengukuhkan titik kegagalan yang berpusat.", + "page-run-a-node-decentralized-1": "Pelayan awan berpusat mampu menyediakan kuasa pengkomputeran yang tinggi, tetapi pemusatan tersebut akan menjadi sasaran bagi negara bangsa atau penyerang yang ingin mengganggu rangkaian.", + "page-run-a-node-decentralized-2": "Daya tahan rangkaian dicapai dengan peningkatan jumlah nod, di merata-rata lokasi seluruh dunia, dan dikendalikan oleh lebih ramai orang daripada pelbagai latar belakang. Apabila lebih ramai orang menjalankan nod mereka sendiri, kebergantungan pada titik kegagalan berpusat akan berkurangan, menjadikan rangkaian lebih kukuh.", + "page-run-a-node-further-reading-title": "Bacaan lanjut", + "page-run-a-node-further-reading-1-link": "Memahiri Ethereum - Patutkah saya Menjalankan Nod Penuh", + "page-run-a-node-further-reading-1-author": "Andreas Antonopoulos", + "page-run-a-node-further-reading-2-link": "Ethereum pada ARM - Panduan Permulaan Pantas", + "page-run-a-node-further-reading-3-link": "Had Kebolehskalaan Blok Rantai", + "page-run-a-node-further-reading-3-author": "Vitalik Buterin", + "page-run-a-node-getting-started-title": "Permulaan", + "page-run-a-node-getting-started-software-section-1": "Pada zaman awal rangkaian, pengguna perlu mempunyai keupayaan untuk mengantaramuka dengan baris perintah untuk mengendalikan nod Ethereum.", + "page-run-a-node-getting-started-software-section-1-alert": "Jika ini keutamaan anda, dan anda mempunyai kemahiran sesuai, jangan segan untuk menyemak dokumen teknikal kami.", + "page-run-a-node-getting-started-software-section-1-link": "Aktifkan sebuah nod Ethereum", + "page-run-a-node-getting-started-software-section-2": "Kini kita mempunyai DAppNode, iaitu perisian percuma dan sumber terbuka yang memberi pengguna pengalaman seperti aplikasi semasa menguruskan nod mereka.", + "page-run-a-node-getting-started-software-section-3a": "Dalam hanya beberapa ketikan anda boleh mengaktifkan dan menjalankan nod anda.", + "page-run-a-node-getting-started-software-section-3b": "DAppNode memudahkan pengguna menjalankan nod penuh, serta dapp dan rangkaian P2P lain, tanpa perlu menyentuh baris perintah. Ini memudahkan semua orang untuk mengambil bahagian dan mewujudkan rangkaian yang lebih ternyahpusat.", + "page-run-a-node-getting-started-software-title": "Bahagian 2: Perisian", + "page-run-a-node-glyph-alt-terminal": "Glif terminal", + "page-run-a-node-glyph-alt-phone": "Glif ketikan telefon", + "page-run-a-node-glyph-alt-dappnode": "Glif DAppNode", + "page-run-a-node-glyph-alt-pnp": "Glif palam dan Main", + "page-run-a-node-glyph-alt-hardware": "Glif perkakasan", + "page-run-a-node-glyph-alt-software": "Glif muat turun perisian", + "page-run-a-node-glyph-alt-privacy": "Glif privasi", + "page-run-a-node-glyph-alt-censorship-resistance": "Glif megafon tahan penapisan", + "page-run-a-node-glyph-alt-earth": "Glif bumi", + "page-run-a-node-glyph-alt-decentralization": "Glif penyahpusatan", + "page-run-a-node-glyph-alt-vote": "Glif suarakan undi anda", + "page-run-a-node-glyph-alt-sovereignty": "Glif kedaulatan", + "page-run-a-node-hero-alt": "Grafik nod", + "page-run-a-node-hero-header": "Dapatkan kawalan penuh.
    Jalankan nod anda sendiri.", + "page-run-a-node-hero-subtitle": "Jadi berdaulat sepenuhnya sambil membantu melindungi rangkaian. Jadi Ethereum.", + "page-run-a-node-hero-cta-1": "Ketahui lebih lanjut", + "page-run-a-node-hero-cta-2": "Mari sertai!", + "page-run-a-node-install-manually-title": "Pasang secara manual", + "page-run-a-node-install-manually-1": "Jika anda seorang pengguna yang lebih mahir dari segi teknikal dan ingin membina peranti anda sendiri, DAppNode boleh dimuat turun daripada mana-mana komputer dan dipasang pada SSD kosong melalui pemacu USB.", + "page-run-a-node-meta-description": "Pengenalan tentang apa, mengapa dan bagaimana untuk menjalankan nod Ethereum.", + "page-run-a-node-participate-title": "Participate", + "page-run-a-node-participate-preview": "Revolusi penyahpusatan bermula dengan anda.", + "page-run-a-node-participate-1": "Dengan menjalankan nod anda menjadi sebahagian daripada gerakan global untuk menyahpusatkan kawalan dan kuasa ke atas dunia maklumat.", + "page-run-a-node-participate-2": "Jika anda seorang pemegang, tingkatkan nilai ETH anda dengan menyokong kesihatan dan penyahpusatan rangkaian, dan memastikan anda mempunyai suara pada masa akan datang.", + "page-run-a-node-privacy-title": "Privasi & Keselamatan", + "page-run-a-node-privacy-preview": "Hentikan kebocoran maklumat peribadi anda kepada nod pihak ketiga.", + "page-run-a-node-privacy-1": "Apabila menghantar transaksi menggunakan nod awam, maklumat peribadi boleh dibocorkan kepada perkhidmatan pihak ketiga seperti alamat IP anda dan alamat Ethereum yang anda miliki.", + "page-run-a-node-privacy-2": "Dengan menunjukkan dompet serasi ke nod anda sendiri, anda boleh menggunakan dompet anda untuk berinteraksi secara peribadi dan selamat dengan blok rantai.", + "page-run-a-node-privacy-3": "Selain itu, jika nod berniat jahat mengedarkan transaksi yang tidak sah, nod anda akan mengabaikan sahaja transaksi itu. Setiap transaksi disahkan secara setempat pada mesin anda sendiri, jadi anda tidak perlu mempercayai sesiapa.", + "page-run-a-node-rasp-pi-title": "Nota tentang Raspberry Pi (Pemproses ARM)", + "page-run-a-node-rasp-pi-description": "Raspberry Pi ialah komputer ringan yang berpatutan harga, tetapi mempunyai batasan yang mungkin menjejaskan prestasi nod anda. Walaupun pada masa ini ia tidak disyorkan untuk pertaruhan, komputer ini boleh menjadi pilihan baik dan murah untuk menjalankan nod bagi kegunaan peribadi, dengan serendah 4 - 8 GB RAM.", + "page-run-a-node-rasp-pi-note-1-link": "DAppNode pada ARM", + "page-run-a-node-rasp-pi-note-1-description": "Lihat arahan ini jika anda merancang untuk menjalankan DAppNode pada Raspberry Pi", + "page-run-a-node-rasp-pi-note-2-link": "Dokumentasi Ethereum pada ARM", + "page-run-a-node-rasp-pi-note-2-description": "Belajar cara menyediakan nod melalui baris perintah pada Raspberry Pi", + "page-run-a-node-rasp-pi-note-3-link": "Menjalankan nod dengan Raspberry Pi", + "page-run-a-node-rasp-pi-note-3-description": "Ikut di sini jika anda ingin menggunakan tutorial", + "page-run-a-node-shop": "Kedai", + "page-run-a-node-shop-avado": "Kedai Avado", + "page-run-a-node-shop-dappnode": "Kedai DAppNode", + "page-run-a-node-staking-title": "Taruh ETH anda", + "page-run-a-node-staking-description": "Walaupun tidak diperlukan, nod anda yang kini berjalan bermakna tidak lama lagi anda akan dapat menaruhkan ETH anda untuk mendapatkan ganjaran dan menyumbang kepada pelbagai komponen keselamatan Ethereum.", + "page-run-a-node-staking-link": "Taruh ETH", + "page-run-a-node-staking-plans-title": "Ingin membuat pertaruhan?", + "page-run-a-node-staking-plans-description": "Untuk memaksimumkan kecekapan pengesah anda, minimum 16 GB RAM disyorkan, tetapi 32 GB lebih baik, dengan skor penanda aras CPU sebanyak 6667+ pada cpubenchmark.net. Penaruh juga disyorkan mendapatkan akses kepada jalur lebar internet berkelajuan tinggi tanpa had, namun ini bukan keperluan mutlak.", + "page-run-a-node-staking-plans-ethstaker-link-label": "Cara membeli-belah perkakasan pengesah Ethereum", + "page-run-a-node-staking-plans-ethstaker-link-description": "EthStaker menerangkan dengan lebih terperinci dalam rancangan istimewa selama sejam ini", + "page-run-a-node-sovereignty-title": "Kedaulatan", + "page-run-a-node-sovereignty-preview": "Anggap menjalankan nod sebagai langkah seterusnya selepas memperoleh dompet Ethereum anda.", + "page-run-a-node-sovereignty-1": "Dompet Ethereum membolehkan anda menjaga dan mengawal sepenuhnya aset digital anda dengan memegang kunci peribadi untuk alamat dompet anda, tetapi kunci tersebut tidak memberitahu anda keadaan terkini blok rantai, contohnya baki dompet anda.", + "page-run-a-node-sovereignty-2": "Secara lalai, dompet Ethereum biasanya mencapai nod pihak ketiga, seperti Infura atau Alchemy, ketika mencari maklumat baki anda. Menjalankan nod anda sendiri membolehkan anda memiliki salinan blok rantai Ethereum anda sendiri.", + "page-run-a-node-title": "Gerakkan nod", + "page-run-a-node-voice-your-choice-title": "Suarakan pilihan anda", + "page-run-a-node-voice-your-choice-preview": "Jangan lepaskan kawalan sekiranya berlaku cabang.", + "page-run-a-node-voice-your-choice-1": "Sekiranya berlaku cabang rantaian, iaitu dua rantai muncul dengan dua set peraturan yang berbeza, menjalankan nod sendiri akan menjamin keupayaan anda untuk memilih set peraturan mana yang anda mahu sokong. Terpulang kepada anda untuk menaik taraf kepada peraturan baharu dan menyokong perubahan yang dicadangkan atau tidak.", + "page-run-a-node-voice-your-choice-2": "Jika anda sedang menaruhkan ETH, menjalankan nod anda sendiri akan membolehkan anda memilih pelanggan anda sendiri, untuk mengurangkan risiko pemotongan dan untuk bertindak balas kepada permintaan rangkaian yang berubah-ubah dari semasa ke semasa. Menaruh dengan pihak ketiga akan membuat anda kehilangan undi tentang pilihan pelanggan yang terbaik.", + "page-run-a-node-what-title": "Apakah maksudnya \"menjalankan nod\"?", + "page-run-a-node-what-1-subtitle": "Menjalankan perisian.", + "page-run-a-node-what-1-text": "Dikenali sebagai 'pelanggan', perisian ini memuat turun salinan blok rantai Ethereum dan mengesahkan kesahihan setiap blok, kemudian mengemas kini salinan itu dengan setiap blok dan transaksi baharu, dan membantu orang lain memuat turun serta mengemas kini salinan mereka juga.", + "page-run-a-node-what-2-subtitle": "Dengan perkakasan.", + "page-run-a-node-what-2-text": "Ethereum direka untuk menjalankan nod pada komputer gred pengguna biasa. Anda boleh menggunakan mana-mana komputer peribadi, namun kebanyakan pengguna menjalankan nod mereka pada perkakasan khusus untuk melenyapkan impak prestasi pada perkakasan mereka dan mengurangkan masa henti nod.", + "page-run-a-node-what-3-subtitle": "Semasa dalam talian.", + "page-run-a-node-what-3-text": "Menjalankan nod Ethereum mungkin kedengaran rumit pada mulanya, tapi ini sebenarnya sekadar menjalankan perisian pelanggan pada komputer secara berterusan ketika bersambung dengan internet. Semasa luar talian, nod anda hanya akan kekal tidak aktif sehingga disambungkan semula dalam talian dan memperoleh semua perubahan terkini.", + "page-run-a-node-who-title": "Siapa patut menjalankan nod?", + "page-run-a-node-who-preview": "Semua orang! Nod bukan hanya untuk pengesah bukti taruhan. Sesiapa sahaja boleh menjalankan nod—malah anda tidak memerlukan ETH.", + "page-run-a-node-who-copy-1": "Anda tidak perlu menaruh ETH untuk menjalankan nod. Malah, setiap nod lain pada Ethereum yang mempertanggungjawabkan pengesah.", + "page-run-a-node-who-copy-2": "Anda tidak boleh mendapatkan ganjaran kewangan yang diberikan kepada pengesah, tetapi ada banyak faedah lain daripada menjalankan nod yang boleh dipertimbangkan oleh pengguna Ethereum, termasuk privasi, keselamatan, pengurangan kebergantungan terhadap pelayan pihak ketiga, ketahanan terhadap penapisan dan peningkatan kesihatan dan penyahpusatan rangkaian.", + "page-run-a-node-who-copy-3": "Memiliki nod anda sendiri bermakna anda tidak perlu percaya maklumat tentang keadaan rangkaian yang disediakan oleh pihak ketiga.", + "page-run-a-node-who-copy-bold": "Jangan percaya. Sahkan.", + "page-run-a-node-why-title": "Mengapa menjalankan nod?" +} diff --git a/src/intl/ms/page-wallets-find-wallet.json b/src/intl/ms/page-wallets-find-wallet.json index 8c55f1a36d9..c27f175bd67 100644 --- a/src/intl/ms/page-wallets-find-wallet.json +++ b/src/intl/ms/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Penapis ciri", "page-find-wallet-footnote-1": "Dompet yang disenaraikan di halaman ini bukan sokongan rasmi, dan disediakan untuk tujuan maklumat sahaja.", "page-find-wallet-footnote-2": "Penerangan telah disediakan oleh projek dompet itu sendiri.", - "page-find-wallet-footnote-3": "Kami menambah produk kepada halaman ini berdasarkan kriteria dalam dasar penyenaraian. Jika anda ingin kami menambah suatu dompet, bangkitkan isu di GitHub.", + "page-find-wallet-footnote-3": "Kami menambah produk kepada halaman ini berdasarkan kriteria dalam dasar penyenaraian. Jika anda ingin kami menambah suatu dompet, bangkitkan isu di GitHub.", "page-find-wallet-mobile": "Mudah Alih", "page-find-wallet-mobile-desc": "Dompet dengan aplikasi mudah alih", "page-find-wallet-desktop": "Desktop", diff --git a/src/intl/ne-np/common.json b/src/intl/ne-np/common.json new file mode 100644 index 00000000000..bb40df78758 --- /dev/null +++ b/src/intl/ne-np/common.json @@ -0,0 +1,211 @@ +{ + "account-abstraction": "खाता अमूर्तता", + "about-ethereum-org": "ethereum.org को बारेमा", + "about-us": "हाम्रो बारेमा", + "aria-toggle-search-button": "खोज बटन टगल गर्नुहोस्", + "aria-toggle-menu-button": "मेनु बटन टगल गर्नुहोस्", + "beacon-chain": "बीकन चेन", + "bridges": "ब्लकचेन ब्रिज", + "clear": "खाली गर्नुहोस्", + "close": "बन्द गर्नुहोस्", + "community": "समुदाय", + "community-hub": "सामुदायिक केन्द्र", + "community-menu": "समुदाय मेनु", + "contact": "सम्पर्क गर्नुहोस्", + "content-standardization": "विषयवस्तु मानकीकरण", + "contributing": "योगदान गर्दै", + "contributors": "योगदानकर्ताहरू", + "contributors-thanks": "यस पृष्ठमा योगदान गर्ने सबैलाई - धन्यवाद!", + "cookie-policy": "कुकी नीति", + "copied": "प्रतिलिपि गरिएको", + "copy": "प्रतिलिपि बनाउनुहोस्", + "danksharding": "डैंकसार्डिङ", + "dao-page": "विकेन्द्रीकृत स्वायत्त संस्थाहरू (DAOs)", + "dark-mode": "अँध्यारो", + "data-provided-by": "डाटाको स्रोत:", + "decentralized-applications-dapps": "विकेन्द्रीकृत एप्पहरू (dapps)", + "decentralized-identity": "विकेन्द्रीकृत पहिचान", + "decentralized-social-networks": "विकेन्द्रीकृत सामाजिक सञ्जाल", + "decentralized-science": "विकेन्द्रीकृत विज्ञान (DeSci)", + "defi-page": "विकेन्द्रीकृत वित्त (DeFi)", + "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": "इथेरियम ऊर्जा खपत", + "enterprise": "उद्यम", + "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": "इथेरियम प्रतिष्ठान", + "ethereum-foundation-logo": "इथेरियम प्रतिष्ठानको लोगो", + "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": "के यो पृष्ठ उपयोगी थियो?", + "feedback-card-prompt-article": "के यो लेख उपयोगी थियो?", + "feedback-card-prompt-tutorial": "के यो ट्यूटोरियल उपयोगी थियो?", + "feedback-widget-thank-you-title": "तपाईंको प्रतिक्रियाको लागि धन्यवाद!", + "feedback-widget-thank-you-subtitle": "केहि प्रश्नहरूका जवाफ दिएर यो पृष्ठ अझ राम्रो बनाउनुहोस्।", + "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": "संलग्न हुनुहोस्", + "get-started": "सुरु गर्नुहोस", + "grants": "अनुदान", + "grant-programs": "इकोसिस्टम अनुदान कार्यक्रम", + "guides": "मार्गदर्शनहरू", + "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": "टोकनहरुलाई तह २ मा कसरी ब्रिज गर्ने", + "how-to-use-a-wallet": "वालेट कसरी प्रयोग गर्ने", + "image": "तस्बिर", + "in-this-section": "यस खण्डमा", + "individuals": "व्यक्तिहरू", + "jobs": "रोजगारी", + "kraken-logo": "Kraken को लोगो", + "language-resources": "भाषा स्रोतहरू", + "language-support": "भाषा समर्थन", + "languages": "भाषाहरु", + "last-24-hrs": "गत 24 घण्टा", + "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": "लोड हुँदै...", + "loading-error": "लोडहुनमा त्रुटि।", + "loading-error-refresh": "त्रुटि भयो, कृपया रिफ्रेस गर्नुहोस्।", + "loading-error-try-again-later": "डाटा लोड गर्न असमर्थ। केहि समय पछि पुन: प्रयास गर्नुहोस्।", + "logo": "लोगो", + "mainnet-ethereum": "इथेरियमको मुख्य नेटवर्क", + "more": "More", + "nav-developers": "निर्माताहरु", + "nav-developers-docs": "निर्माताको कागजात", + "nav-primary": "प्राथमिक", + "nft-page": "नन-फन्जिबल टोकन (NFTs)", + "nfts": "NFTs", + "no": "होइन", + "on-this-page": "यस पृष्ठमा", + "open-research": "अनुसन्धान खोल्नुहोस्", + "page-developers-aria-label": "निर्माताको मेनु", + "page-index-meta-title": "गृहपृष्ठ", + "page-last-updated": "पृष्ठ अन्तिम पटक अद्यावधिक गरिएको", + "pbs": "प्रस्तावक-निर्माता विभाजन", + "pools": "जम्मा गरिएको स्टेकिंग", + "privacy-policy": "गोपनीयता नीति", + "private-ethereum": "निजी इथेरियम", + "product-disclaimer": "उत्पादन र सेवाहरू इथेरियम समुदायको लागि सुविधाको रूपमा सूचीबद्ध छन्। उत्पादन वा सेवाको समावेशले ethereum.org वेबसाइट टोली वा इथेरियम प्रतिष्ठानबाट अनुमोदनको प्रतिनिधित्व गर्दैन।", + "quizzes-title": "प्रश्नोत्तर केन्द्र", + "quizzes": "प्रश्नोत्तरहरु", + "refresh": "कृपया पृष्ठलाई रिफ्रेस गर्नुहोस।", + "return-home": "गृहपृष्ठमा फर्कनुहोस", + "roadmap": "इथेरियम रोडम्याप", + "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मा खोज्नुहोस्", + "secret-leader-election": "गोप्य नेता निर्वाचन", + "search-box-blank-state-text": "खोजी गर्नुहोस्!", + "search-eth-address": "यो इथेरियम ठेगाना जस्तो देखिन्छ। हामी ठेगानाहरूमा विशिष्ट डाटा प्रदान गर्दैनौं। यसलाई ब्लक एक्सप्लोररमा खोज्ने प्रयास गर्नुहोस्, जस्तै", + "search-no-results": "तपाईंको खोजको कुनै परिणाम छैन", + "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": "तपाईंले यो पृष्ठ अंग्रेजीमा हेर्दै हुनुहुन्छ किनभने हामीले यसलाई अझै अनुवाद गरेका छैनौं। हामीलाई यो विषयवस्तु अनुवाद गर्न सहयोग गर्नुहोस्।", + "translation-banner-body-update": "यस पृष्ठको एक नयाँ संस्करण छ तर त्यो अहिले अंग्रेजीमा मात्र छ। हामीलाई नवीनतम संस्करण अनुवाद गर्न सहयोग गर्नुहोस्।", + "translation-banner-button-see-english": "अंग्रेजीमा हेर्नुहोस्", + "translation-banner-button-translate-page": "पृष्ठ अनुवाद गर्नुहोस्", + "translation-banner-title-new": "यो पृष्ठ अनुवाद गर्न सहयोग गर्नुहोस्", + "translation-banner-title-update": "यो पृष्ठ अद्यावधिक गर्न सहयोग गर्नुहोस्", + "translation-banner-no-bugs-title": "यहाँ कुनै बगहरू छैनन्!", + "translation-banner-no-bugs-content": "यो पृष्ठ अनुवाद भइरहेको छैन। हामीले जानाजानी यो पृष्ठ अहिलेको लागि अंग्रेजीमा छोडेका छौं।", + "translation-banner-no-bugs-dont-show-again": "फेरि नदेखाउनुहोस्", + "try-using-search": "तपाईंले जुन चिज खोजिरहनु भएको छ, त्यसकोलागि खोज्नको प्रयोग गर्ने प्रयास गर्नुहोस् वा", + "tutorials": "ट्यूटोरियलहरू", + "up": "माथि", + "use-ethereum": "इथेरियम प्रयोग गर्नुहोस", + "use-ethereum-menu": "इथेरियम मेनु प्रयोग गर्नुहोस", + "user-experience": "User experience", + "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": "हो", + "zero-knowledge-proofs": "शून्य-ज्ञान प्रमाणहरू" +} diff --git a/src/intl/ne-np/page-index.json b/src/intl/ne-np/page-index.json new file mode 100644 index 00000000000..f1a1c455678 --- /dev/null +++ b/src/intl/ne-np/page-index.json @@ -0,0 +1,89 @@ +{ + "page-index-hero-image-alt": "Ethereum पारिस्थितिको प्रतिनिधित्व गर्दै, भविष्यको शहर को एक दृष्टान्त।.", + "page-index-meta-description": "एथेरम एक विश्वव्यापी, विकेन्द्रित प्लेटफर्म हो जुन वित्तिय तथा अन्य प्रयोगका लागि बनाइएको हो। एथेरममा तपाईंले विश्वभर बाट पहुँच हुने पैसा नियन्त्रण गर्ने कोड लेख्न, र एप्पहरु बनाउन सक्नुहुनेछ।.", + "page-index-meta-title": "गृहपृष्ठ", + "page-index-title": "Ethereum मा स्वागत छ", + "page-index-description": "Ethereum क्रिप्टोकरेन्सी ईथर (ETH) हजारौं विकेन्द्रीकृत अनुप्रयोगहरूलाई शक्ति दिने समुदाय-संचालित प्रविधि हो।.", + "page-index-title-button": "Ethereum को अन्वेषण गर्नुहोस्", + "page-index-get-started": "सुरु गर्नुहोस", + "page-index-get-started-description": "ethereum.org इथेरियम जगत को परिचय गराउने हजुरको द्वार हो। यो प्रविधि नयाँ र सदा विकसित हुने प्रविधि हो - त्यसैले यसको मार्गदर्शक हुन उपयोगी छ। यदि हजुर यसलाई गहिराइमा बुझ्न चाहनुहुन्छ भने, हाम्रा केही सिफारिश प्रस्तुत छन्। ", + "page-index-get-started-image-alt": "कम्प्युटरमा काम गर्ने व्यक्तिको दृष्टान्त।", + "page-index-get-started-wallet-title": "एउटा वालेट छान्नुहोस", + "page-index-get-started-wallet-description": "वालेटले तपाईंलाई इथेरियमसंग जोडिन र तपाईंको कोषहरू व्यवस्थापन गर्न दिन्छ। ", + "page-index-get-started-wallet-image-alt": "इथेरियम वालेटको प्रतिनिधित्व गर्दै भल्ट रुपी शरीर भएको रोबोटको दृष्टान्त।", + "page-index-get-started-eth-title": "ETH प्राप्त गर्नुहोस्", + "page-index-get-started-eth-description": "ETH इथेरियम को मुद्रा हो - तपाईं यसलाई एप्पहरुमा प्रयोग गर्न सक्नुहुन्छ। ", + "page-index-get-started-eth-image-alt": "ईथर (ETH) ग्लिफ देखेर छक्क परेका मानिसहरूका एउटा समूहको दृष्टान्त।", + "page-index-get-started-dapps-title": "Dapp प्रयोग गर्नुहोस्", + "page-index-get-started-dapps-description": "डिएप्प इथेरियम द्वारा संचालित एप्पहरू हुन्। तपाईं के गर्न सक्नुहुन्छ हेर्नुहोस्।", + "page-index-get-started-dapps-image-alt": "डोजले कम्प्युटर चलाई रहेको दृष्टान्त। ", + "page-index-get-started-devs-title": "बनाउन सुरु गर्नुहोस", + "page-index-get-started-devs-description": "यदि तपाईं इथेरियमसँग कोडिङ शुरू गर्न चाहनुहन्छ भने, यस सम्बन्धित कागजातहरू, ट्युटोरियल र थप कुरा हाम्रो डेभलपर पोर्टलमा उपलब्ध छन्। ", + "page-index-get-started-devs-image-alt": "हातद्वारा लेगो ब्रिक्स प्रयोग गरि बनाइएको ETH लोगो बनाउने दृष्टान्त।", + "page-index-what-is-ethereum": "इथरियम के हो?", + "page-index-what-is-ethereum-description": "इथेरियम यस्तो प्रविधि हो जहाँ डिजिटल मुद्रा, विश्वव्यापी भुक्तानी र एप्पहरू घरेलु नाम भईसकेका छन्। समुदायले फस्टाउँदै गएको डिजिटल अर्थव्यवस्था, सर्जकहरूको लागि अनलाइन कमाउन साहसिक नयाँ तरिकाहरू र अन्य धेरै निर्माण गरेको छ। हजुर संसारको जुनसुकै कुनामा भए पनि यो इन्टरनेट को माध्यम बाट सबैको लागि उपलब्ध छ।", + "page-index-what-is-ethereum-button": "Ethereum के हो?", + "page-index-what-is-ethereum-secondary-button": "डिजिटल मुद्रामा थप जानकारी", + "page-index-what-is-ethereum-image-alt": "इथेरियमको प्रतिनिधित्व गर्ने उद्देश्यले बजारतिर हेरिरहेको व्यक्तिको दृष्टान्त।", + "page-index-defi": "एउटा निष्पक्ष वित्तीय प्रणाली", + "page-index-defi-description": "आज, अरबौं व्यक्तिहरूले आफ्नो बैंक खाता खोल्न सक्दैनन्, कसै-कसैको त भुक्तानीमा पनि प्रतिबन्ध लगाइएको छ। इथेरियमको विकेन्द्रीकृत वित्त (वि. वि) प्रणाली कहिलै रुक्दैन र कसैसँग पक्षपात गर्दैन। इन्टरनेट जडान मार्फत हजुरले संसारको जुनसुकै कुनाबाट मुद्रा पठाउन, प्राप्त गर्न, सापटी दिन, व्याज कमाउन र अनुदान आदानप्रदान गर्न सक्नुहुन्छ।", + "page-index-defi-button": "DeFi को अन्वेषण गर्नुहोस्", + "page-index-defi-image-alt": "हातहरूले ETHको प्रतीक प्रदान गरेको दृष्टान्त। ", + "page-index-internet": "एक खुला इन्टरनेट", + "page-index-internet-description": "आज, हामी हाम्रो व्यक्तिगत डेटाको नियन्त्रण छोडेर 'नि:शुल्क' इन्टरनेट सेवाहरूमा पहुँच प्राप्त गर्दछौं। इथेरियम सेवाहरू पूर्वनिर्धारित रूपमा खुला छन् - तपाईंलाई केवल वालेट चाहिन्छ। यी नि:शुल्क र सेटअप गर्न सजिलो, तपाईंद्वारा नियन्त्रित र कुनै पनि व्यक्तिगत जानकारी बिना काम गर्नुहोस्।", + "page-index-internet-button": "खुला इन्टरनेटको अन्वेषण गर्नुहोस्", + "page-index-internet-secondary-button": "वाल्लेटहरुमा थप जानकारी", + "page-index-internet-image-alt": "इथेरियम क्रिस्टलद्वारा संचालित भविष्यको कम्प्युटर सेटअपको दृष्टान्त।", + "page-index-developers": "विकासका लागि एउटा नयाँ सिमाना", + "page-index-developers-description": "इथेरियम र यसबाट संचालित एप्पहरु पारदर्शी र सार्वजनिक छन्। तपाईंले यिनको कोड डाउनलोड गरेर अरु डेभलपरले बनाएका कार्यक्षमताको पुनः प्रयोग गर्न सक्नुहुन्छ। यदि तपाईं नयाँ प्रोग्रामिङ भाषा सिक्न चाहनुहुन्न भने, तपाईं इथेरियमको सार्वजनिक कोडसँग जावास्क्रिप्त र अन्य अवस्थित प्रोग्रामिङ भाषाले अन्तर्क्रिया गर्न सक्नुहुन्छ।", + "page-index-developers-button": "डेभलपर पोर्टल", + "page-index-developers-code-examples": "कोडका उदाहरणहरू", + "page-index-developers-code-example-title-0": "तपाईंको निजी बैंक", + "page-index-developers-code-example-description-0": "तपाईंले आफुले प्रोग्राम गर्नुभएको तर्क द्वारा संचालित बैंक निर्माण गर्न सक्नुहुन्छ।", + "page-index-developers-code-example-title-1": "तपाईंको निजी मुद्रा", + "page-index-developers-code-example-description-1": "तपाईं टोकनहरू सिर्जना गर्न सक्नुहुनेछ जुन तपाईं एप्पहरूमा स्थानान्तरण र प्रयोग गर्न सक्नुहुनेछ।", + "page-index-developers-code-example-title-2": "एउटा जावास्क्रिप्ट इथेरियम वाल्लेट", + "page-index-developers-code-example-description-2": "तपाईंले अवस्थित प्रोग्रामिङ भाषाहरुका प्रयोग गरी इथेरियम र यसका अन्य एप्पहरूसँग अन्तर्क्रिया गर्न सक्नुहुन्छ। ", + "page-index-developers-code-example-title-3": "एउटा सार्वजनिक, अनुमतिनमुक्त डीएनएस(DNS)", + "page-index-developers-code-example-description-3": "तपाईंले हालमा अवस्थित सेवाहरुलाई विकेन्द्रीकृत र सार्वजनिक एप्पहरूका रूपमा पुनःकल्पना गर्न सक्नुहुन्छ। ", + "page-index-network-stats-title": "आजको परिवेशमा इथेरियम", + "page-index-network-stats-subtitle": "नवीनतम नेटवर्क तथ्याङ्कहरू", + "page-index-network-stats-total-eth-staked": "Total ETH staked", + "page-index-network-stats-eth-price-description": "ETH को मूल्य (अमेरिकी डलर)", + "page-index-network-stats-eth-price-explainer": "१ वटा इथरको नवीनतम मूल्य। तपाईंले कम्तिमा पनि ०.००००००००००००००००१ जति थोरै इथर खरिद गर्न सक्नुहुन्छ - तपाईंले पुरै १ ETH खरिद गर्नु पर्दैन।", + "page-index-network-stats-total-eth-staked-explainer": "वर्तमानमा दाउमा लगाइएको र नेटवर्कको सुरक्षा गरिरहेको ETHको मात्रा।", + "page-index-network-stats-tx-day-description": "आजको लेनदेन", + "page-index-network-stats-tx-day-explainer": "पछिल्लो २४ घण्टामा नेटवर्कमा सफलतापूर्वक प्रशोधन गरिएको लेनदेनको संख्या।", + "page-index-network-stats-value-defi-description": "DeFi मा लक गरिएको मूल्य (अमेरिकी डलर)", + "page-index-network-stats-value-defi-explainer": "इथेरियम डिजिटल अर्थव्यवस्था अर्थात् विकेन्द्रीकृत वित्त (DeFi) एप्पहरूमा जम्मा रकम।", + "page-index-network-stats-nodes-description": "Nodes", + "page-index-network-stats-nodes-explainer": "इथेरियमलाई संसारभरिका हजारौं स्वयंसेवकहरूले चलाउँछन् जसलाई हामी नोडहरू भन्दछौ।", + "page-index-touts-header": "Ethereum.org को अन्वेषण गर्नुहोस्", + "page-index-contribution-banner-title": "Contribute to ethereum.org", + "page-index-contribution-banner-description": "यो वेबसाइट सार्वजनिक छ, जस्मा सयौ समुदायक योगदानकर्ताहरू छन्। तपाईं यस साइटमा रहेको कुनैपनि सामग्री सम्पादन प्रस्ताव गर्नसक्नुहुन्छ, नया अद्भुत विशेषताहरु सुझाव गर्नसक्नुहुन्छ अथवा बगहरु हटाउन हाम्रो सहयोग गर्नसक्नुहुन्छ।", + "page-index-contribution-banner-image-alt": "लेगो ब्रिकबाट बनेको इथेरियम लोगो।", + "page-index-contribution-banner-button": "More on contributing", + "page-index-tout-upgrades-title": "तपाईंको अपग्रेडको बारेमा ज्ञान बढाउनुहोस्", + "page-index-tout-upgrades-description": "इथेरियम रोडम्यापले नेटवर्कलाई थप स्केलेबल, सुरक्षित र दिगो बनाउन डिजाइन गरिएको अन्तरसम्बन्धित अपग्रेडहरू समावेश गर्दछ।", + "page-index-tout-upgrades-image-alt": "इथेरियम अपग्रेड पछि बढेको शक्तिको प्रतिनिधित्व गर्ने अन्तरिक्ष यानको दृष्टान्त।", + "page-index-tout-enterprise-title": "उद्यमको लागि इथेरियम", + "page-index-tout-enterprise-description": "इथेरियमले कसरी नयाँ व्यवसाय मोडेलहरू खोल्न सक्छ, तपाईंको लागत कम गर्न सक्छ र तपाईंको व्यवसायको भविष्यका लागि सुरक्षित बनाउन सक्छ हेर्नुहोस्।", + "page-index-tout-enterprise-image-alt": "भविष्यको कम्पुटर/उपकरणको दृष्टान्त। ", + "page-index-tout-community-title": "The Ethereum community", + "page-index-tout-community-description": "इथेरियम पुर्ण रुपमा समुदायको बारेमा हो। यो फरक पृष्ठभूमि र चासोका मानिसहरू मिलेर बनेको छ। तपाईं कसरी सहभागि हुन सक्नुहुन्छ हेर्नुहोस्।", + "page-index-tout-community-image-alt": "निर्माणकर्ताहरूका एक समूह सँगै काम गर्दैको एक दृष्टान्त ।", + "page-index-nft": "The internet of assets", + "page-index-nft-description": "इथेरियम डिजिटल पैसाको लागि मात्र होइन। तपाईंले स्वामित्व पाउन सक्ने कुनै पनि चीजलाई प्रतिनिधित्व गर्न, व्यापार गर्न र न्न -फन्जिबल टोकन (NFTs) को रूपमा प्रयोग गर्न सकिन्छ। तपाईंले आफ्नो कला टोकनाइज गर्न सक्नुहुन्छ र प्रत्येक पटक पुन: बेचेको बेला स्वचालित रूपमा रोयल्टीहरू प्राप्त गर्न सक्नुहुन्छ वा ऋण लिनको लागि तपाईंको स्वामित्वमा रहेको चीजको लागि टोकन प्रयोग गर्नुहोस्। सम्भावनाहरू समय संगै बढ्दै छन्।", + "page-index-nft-button": "More on NFTs", + "page-index-nft-alt": "होलोग्रामद्वारा प्रदर्शन भइरहेको एउटा ETH लोगो ।", + "community-events-content-heading": "ethereum.org समुदायमा सामेल हुनुहोस्", + "community-events-content-1": "लगभग ४०,००० सदस्यहरू सहितको हाम्रो डिस्कर्ड सर्भरमा सामेल हुनुहोस् ।", + "community-events-content-2": "Ethereum.org को विकास र महत्त्वपूर्ण इकोसिस्टम समाचारहरूमा रोमाञ्चक अपडेटहरूका लागि हाम्रो मासिक समुदाय कलहरूमा सामेल हुनुहोस्। प्रश्नहरू सोध्ने, विचारहरू साझेदारी गर्ने र प्रतिक्रिया प्रदान गर्ने मौका प्राप्त गर्नुहोस् - यो फस्टाउँदै गारेको इथेरियम समुदायको भाग बन्ने उत्तम अवसर हो।", + "community-events-next-event": "आगामी कार्यक्रम", + "community-events-no-events-planned": "कुनैपनि कार्यक्रमको योजना गरीएको छैन", + "community-events-upcoming-calls": "आगामी कलहरु", + "community-events-no-upcoming-calls": "कुनै आगामी कलहरु छैनन्", + "community-events-previous-calls": "पछ्छिलो कलहरु", + "community-events-there-are-no-past-calls": "कुनै पछ्छिलो कलहरु छैनन्", + "community-events-add-to-calendar": "पात्रोमा थप्नुहोस्" +} diff --git a/src/intl/nl/page-dapps.json b/src/intl/nl/page-dapps.json index f5ff49d1639..24c4abba04f 100644 --- a/src/intl/nl/page-dapps.json +++ b/src/intl/nl/page-dapps.json @@ -1,5 +1,6 @@ { "page-dapps-1inch-logo-alt": "1inch logo", + "page-dapps-dexguru-logo-alt": "DexGuru-logo", "page-dapps-aave-logo-alt": "Aave logo", "page-dapps-add-button": "Suggereer dapp", "page-dapps-add-title": "Dapp toevoegen", @@ -86,6 +87,8 @@ "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", "page-dapps-docklink-dapps": "Intro tot dapps", "page-dapps-docklink-smart-contracts": "Smart contracts", "page-dapps-dark-forest-logo-alt": "Dark Forest logo", @@ -97,6 +100,7 @@ "page-dapps-zerion-logo-alt": "Zerion logo", "page-dapps-rotki-logo-alt": "Rotki logo", "page-dapps-krystal-logo-alt": "Krystal logo", + "page-dapps-synthetix-logo-alt": "Synthetix-logo", "page-dapps-desc": "Zoek een Ethereum-applicatie om uit te proberen.", "page-dapps-doge-img-alt": "Illustratie van een doge die een computer gebruikt", "page-dapps-editors-choice-dark-forest": "Speel tegen anderen om planeten te veroveren en probeer bleeding-edge Ethereum scaling/privacy-technologie uit. Misschien iets voor degenen die al bekend zijn met Ethereum.", @@ -210,6 +214,10 @@ "page-dapps-more-on-nft-gaming-button": "Meer over getokeniseerde in-game items", "page-dapps-dapp-description-pwn": "Eenvoudige leningen ondersteund door eender welke token of NFT's op Ethereum.", "page-dapps-pwn-image-alt": "PWN logo", + "page-dapps-dapp-description-yearn": "Yearn Finance is een yield-aggregator. Het geeft personen, DAO's en andere protocollen een manier om digitale activa te deponeren en opbrengst te ontvangen.", + "page-dapps-yearn-image-alt": "Yearn-logo", + "page-dapps-dapp-description-convex": "Convex stelt Curve-liquiditeitsaanbieders in staat om handelsvergoedingen te verdienen en verhoogde CRV te claimen zonder hun CRV te vergrendelen.", + "page-dapps-convex-image-alt": "Convex-logo", "foundation": "Foundation", "transaction-fees": "Wat zijn transactiekosten?", "page-wallets-get-some": "Verkrijg ETH" diff --git a/src/intl/nl/page-developers-index.json b/src/intl/nl/page-developers-index.json index 97b4b6dd86e..219572a7867 100644 --- a/src/intl/nl/page-developers-index.json +++ b/src/intl/nl/page-developers-index.json @@ -51,7 +51,7 @@ "page-developers-meta-desc": "Documentatie, handleidingen en tools voor ontwikkelaars die bouwen op Ethereum.", "page-developers-mev-desc": "Een introductie tot maximaal extraheerbare waarde (MEV)", "page-developers-mev-link": "Maximale extraheerbare waarde (MEV)", - "page-developers-mining-desc": "Hoe nieuwe blocks worden gemaakt en consensus wordt bereikt", + "page-developers-mining-desc": "Hoe nieuwe blokken worden gecreëerd en consensus werd bereikt met behulp van proof-of-work", "page-developers-mining-link": "Mining", "page-developers-mining-algorithms-desc": "Informatie over Ethereums mining-algoritmes", "page-developers-mining-algorithms-link": "Mining-algoritmes", @@ -92,5 +92,6 @@ "page-developers-data-structures-and-encoding": "Gegevensstructuren en codering", "page-developers-data-structures-and-encoding-link": "Gegevensstructuren en codering", "page-developers-data-structures-and-encoding-desc": "Introductie tot de gegevensstructuren en het coderingsschema gebruikt in de Ethereum stack", - "alt-eth-blocks": "Illustratie van blokken die worden georganiseerd als een ETH-symbool" + "alt-eth-blocks": "Illustratie van blokken die worden georganiseerd als een ETH-symbool", + "page-assets-doge": "Doge maakt gebruik van dapps" } diff --git a/src/intl/nl/page-developers-learning-tools.json b/src/intl/nl/page-developers-learning-tools.json index 8de35a61e22..9a453457bd6 100644 --- a/src/intl/nl/page-developers-learning-tools.json +++ b/src/intl/nl/page-developers-learning-tools.json @@ -1,27 +1,29 @@ { "page-learning-tools-bloomtech-description": "De BloomTech Web3-cursus leert u de vaardigheden die werkgevers zoeken in ingenieurs.", - "page-learning-tools-bloomtech-logo-alt": "BloomTech logo", + "page-learning-tools-bloomtech-logo-alt": "BloomTech-logo", "page-learning-tools-bootcamps": "Bootcamps voor ontwikkelaars", "page-learning-tools-bootcamps-desc": "Betaalde online cursussen om u snel op weg te helpen.", "page-learning-tools-browse-docs": "Doorzoek documenten", "page-learning-tools-capture-the-ether-description": "Capture the Ether is een spel waarin u slimme contracten van Ethereum hackt om meer te weten te komen over beveiliging.", "page-learning-tools-capture-the-ether-logo-alt": "Logo van Capture the Ether", "page-learning-tools-chainshot-description": "Door instructeur geleide bootcamp op afstand voor Ethereum-ontwikkelaars en extra cursussen.", - "page-learning-tools-chainshot-logo-alt": "ChainShot logo", + "page-learning-tools-chainshot-logo-alt": "ChainShot-logo", "page-learning-tools-coding": "Leer door te coderen", "page-learning-tools-coding-subtitle": "Deze tools zullen u helpen te experimenteren met Ethereum als u de voorkeur geeft aan een meer interactieve leerervaring.", "page-learning-tools-consensys-academy-description": "Online bootcamp voor Ethereum-ontwikkelaars.", "page-learning-tools-consensys-academy-logo-alt": "Logo van ConsenSys Academy", "page-learning-tools-buildspace-description": "Leer over crypto door coole projecten te bouwen.", - "page-learning-tools-buildspace-logo-alt": "_buildspace Logo", + "page-learning-tools-buildspace-logo-alt": "_buildspace-logo", "page-learning-tools-cryptozombies-description": "Leer uw eigen Zombie-game te bouwen met Solidity.", - "page-learning-tools-cryptozombies-logo-alt": "CryptoZombies logo", + "page-learning-tools-cryptozombies-logo-alt": "CryptoZombies-logo", "page-learning-tools-documentation": "Leer met documentatie", "page-learning-tools-documentation-desc": "Wilt u meer informatie? Ga naar onze documentatie om de uitleg te vinden die u nodig heeft.", "page-learning-tools-eth-dot-build-description": "Een educatieve sandbox voor web3, inclusief drag-and-drop programmeren en open-source bouwstenen.", "page-learning-tools-eth-dot-build-logo-alt": "Eth.build logo", "page-learning-tools-ethernauts-description": "Voltooi niveaus door slimme contracten te hacken.", "page-learning-tools-ethernauts-logo-alt": "Ethernauts-logo", + "page-learning-tools-metaschool-description": "Word een Web3-ontwikkelaar door het bouwen en verzenden van dApps.", + "page-learning-tools-metaschool-logo-alt": "_metaschool-logo", "page-learning-tools-game-tutorials": "Interactieve game-tutorials", "page-learning-tools-game-tutorials-desc": "Leer terwijl u speelt. Deze tutorials leggen u de basis uit aan de hand van gameplay.", "page-learning-tools-meta-desc": "Webgebaseerde codeerhulpmiddelen en interactieve leerervaringen om u te helpen te experimenteren met Ethereum-ontwikkeling.", @@ -29,8 +31,12 @@ "page-learning-tools-questbook-description": "Zelfstudie-tutorials om Web 3.0 te leren door te bouwen", "page-learning-tools-questbook-logo-alt": "Questbook-logo", "page-learning-tools-remix-description": "Ontwikkel, implementeer en beheer slimme contracten voor Ethereum. Volg tutorials met de Learneth-plugin.", - "page-learning-tools-remix-description-2": "Remix en Replit zijn niet alleen sandboxes; ontwikkelaars kunnen er hun slimme contracten mee schrijven, compileren en implementeren.", + "page-learning-tools-remix-description-2": "Remix, Replit en ChainIDE zijn niet alleen sandboxes; ontwikkelaars kunnen er hun slimme contracten mee schrijven, compileren en implementeren.", "page-learning-tools-replit-description": "Een aanpasbare ontwikkelomgeving voor Ethereum met hot reloading, foutcontrole en eersteklas testnetondersteuning.", + "page-learning-tools-chainIDE-description": "Ga aan de slag met Web3 door slimme contracten voor Ethereum te schrijven met ChainIDE. Gebruik de ingebouwde sjablonen om te leren en tijd te besparen.", + "page-learning-tools-chainIDE-logo-alt": "ChainIDE-logo", + "page-learning-tools-tenderly-description": "Tenderly Sandbox is een prototype-omgeving waar je slimme contracten kunt schrijven, uitvoeren en debuggen in de browser met behulp van Solidity en JavaScript.", + "page-learning-tools-tenderly-logo-alt": "Tenderly-logo", "page-learning-tools-replit-logo-alt": "Replit-logo", "page-learning-tools-remix-logo-alt": "Remix-logo", "page-learning-tools-sandbox": "Code-sandboxes", @@ -46,5 +52,7 @@ "page-learning-tools-pointer-logo-alt": "Pointer-logo", "page-learning-tools-platzi-description": "Leer hoe u dapps kunt bouwen op Web3 en beheers alle vaardigheden die nodig zijn om blockchain-ontwikkelaar te zijn.", "page-learning-tools-platzi-logo-alt": "Platzi-logo", + "page-learning-tools-alchemy-university-description": "Ontwikkel je web3-carrière door middel van cursussen, projecten en code.", + "page-learning-tools-alchemy-university-logo-alt": "Alchemy University-logo", "alt-eth-blocks": "Illustratie van blokken die worden georganiseerd als een ETH-symbool" } diff --git a/src/intl/nl/page-developers-local-environment.json b/src/intl/nl/page-developers-local-environment.json index 99d6a6cd33b..c25c49df160 100644 --- a/src/intl/nl/page-developers-local-environment.json +++ b/src/intl/nl/page-developers-local-environment.json @@ -1,6 +1,8 @@ { "page-local-environment-brownie-desc": "Een op Python gebaseerd ontwikkel- en testraamwerk voor slimme contracten gericht op de Ethereum Virtual Machine.", "page-local-environment-brownie-logo-alt": "Brownie logo", + "page-local-environment-kurtosis-desc": "Een container-gebaseerde toolkit voor het configureren en opstarten van een multi-client Ethereum-testnet voor de snelle lokale ontwikkeling, prototyping en testen van dApps.", + "page-local-environment-kurtosis-logo-alt": "Kurtosis-logo", "page-local-environment-epirus-desc": "Een platform voor het ontwikkelen, implementeren en monitoren van blockchain-applicaties op de Java Virtual Machine.", "page-local-environment-epirus-logo-alt": "Epirus logo", "page-local-environment-eth-app-desc": "Maak door Ethereum aangedreven apps met één commando. Wordt geleverd met een breed aanbod aan UI frameworks en DeFi templates om uit te kiezen.", diff --git a/src/intl/nl/page-get-eth.json b/src/intl/nl/page-get-eth.json index a076824402b..2b99e40eef8 100644 --- a/src/intl/nl/page-get-eth.json +++ b/src/intl/nl/page-get-eth.json @@ -2,6 +2,9 @@ "page-get-eth-article-keeping-crypto-safe": "De sleutels om uw crypto veilig te houden", "page-get-eth-article-protecting-yourself": "Bescherm uzelf en uw middelen", "page-get-eth-article-store-digital-assets": "Hoe digitale activa op te slaan op Ethereum", + "page-get-eth-article-protecting-yourself-desc": "MyCrypto", + "page-get-eth-article-keeping-crypto-safe-desc": "Coinbase", + "page-get-eth-article-store-digital-assets-desc": "ConsenSys", "page-get-eth-cex": "Gecentraliseerde exchanges", "page-get-eth-cex-desc": "Exchanges zijn bedrijven waarmee u crypto kunt kopen met traditionele valuta's. Ze bewaren de ETH die u koopt totdat u het naar een wallet stuurt die u beheert.", "page-get-eth-checkout-dapps-btn": "Bekijk dapps", diff --git a/src/intl/nl/page-languages.json b/src/intl/nl/page-languages.json index 9eafccc591f..151b71673f3 100644 --- a/src/intl/nl/page-languages.json +++ b/src/intl/nl/page-languages.json @@ -15,7 +15,7 @@ "language-ar": "Arabisch", "language-az": "Azerbaidzjaans", "language-bg": "Bulgaars", - "language-bn": "Bengalees", + "language-bn": "Bengaals", "language-ca": "Catalaans", "language-cs": "Tsjechisch", "language-da": "Deens", @@ -27,6 +27,8 @@ "language-fi": "Fins", "language-fr": "Frans", "language-gl": "Galicisch", + "language-gu": "Gujarati", + "language-he": "Hebreeuws", "language-hi": "Hindi", "language-hr": "Kroatisch", "language-hu": "Hongaars", @@ -44,22 +46,25 @@ "language-ms": "Maleis", "language-nb": "Noors", "language-nl": "Nederlands", + "language-pcm": "Nigeriaans Pidgin", "language-fil": "Filipijns", "language-pl": "Pools", "language-pt": "Portugees", - "language-pt-br": "Portugees (Braziliaans)", + "language-pt-br": "Portugees (Brazilië)", "language-ro": "Roemeens", "language-ru": "Russisch", "language-se": "Zweeds", "language-sk": "Slowaaks", - "language-sl": "Sloweens", + "language-sl": "Sloveens", "language-sr": "Servisch", "language-sw": "Swahili", "language-th": "Thais", + "language-ta": "Tamil", "language-tr": "Turks", "language-uk": "Oekraïens", + "language-ur": "Urdu", "language-uz": "Oezbeeks", "language-vi": "Vietnamees", - "language-zh": "Vereenvoudigd Chinees", - "language-zh-tw": "Traditioneel Chinees" + "language-zh": "Chinees (vereenvoudigd)", + "language-zh-tw": "Chinees (traditioneel)" } diff --git a/src/intl/nl/page-layer-2.json b/src/intl/nl/page-layer-2.json index 1d933a86e41..6be0dab1d5b 100644 --- a/src/intl/nl/page-layer-2.json +++ b/src/intl/nl/page-layer-2.json @@ -4,8 +4,8 @@ "layer-2-optimism-note": "Fault proofs in ontwikkeling", "layer-2-hero-title": "Laag 2", "layer-2-hero-header": "Ethereum voor iedereen", - "layer-2-hero-subtitle": "Ethereum schalen, zonder in te leveren op veiligheid of decentralisatie.", - "layer-2-hero-alt-text": "Illustratie van transacties die op Laag 2 worden uitgevoerd en in het Ethereum-hoofdnet worden geplaatst", + "layer-2-hero-subtitle": "Ethereum opschalen voor massale aanname.", + "layer-2-hero-alt-text": "Illustratie van transacties die op laag 2 worden uitgevoerd en geplaatst op het Ethereum-hoofdnet", "layer-2-hero-button-1": "Wat is laag 2", "layer-2-hero-button-2": "Gebruik laag 2", "layer-2-hero-button-3": "Verplaats naar laag 2", @@ -14,9 +14,9 @@ "layer-2-statsbox-3": "TVL-verandering van laag 2 (30 dagen)", "layer-2-what-is-layer-2-title": "Wat is laag 2?", "layer-2-what-is-layer-2-1": "Laag 2 (L2) is een collectieve term om een specifieke set van Ethereum-schaaloplossingen te beschrijven. Een laag 2 is een aparte blockchain die Ethereum uitbreidt en de beveiligingsgaranties van Ethereum overerft.", - "layer-2-what-is-layer-2-2": "Laten we hier nu iets dieper op ingaan, en om dit te doen moeten we eerst laag 1 (L1) uitleggen.", + "layer-2-what-is-layer-2-2": "Laten we hier nu wat dieper op ingaan. Hiervoor moeten we eerst laag 1 (L1) uitleggen.", "layer-2-what-is-layer-1-title": "Wat is laag 1?", - "layer-2-what-is-layer-1-1": "Laag 1 is de basisblockchain. Ethereum en Bitcoin zijn beide laag 1-blockchains omdat ze de onderliggende basis zijn van verschillende laag 2-netwerken. Voorbeelden van projecten in laag 2 omvatten \"rollups\" op Ethereum en het Lighting Network op Bitcoin. Alle gebruikerstransactie-activiteiten op deze laag 2-projecten kunnen uiteindelijk terugvloeien naar de blockchain in laag 1.", + "layer-2-what-is-layer-1-1": "Laag 1 is de basis blockchain. Ethereum en Bitcoin zijn beide laag 1-blockchains omdat ze de onderliggende basis vormen waarop verscheidene laag 2-netwerken opgebouwd worden. Voorbeelden van laag 2-projecten zijn \"rollups\" op Ethereum en het Lightning Netwerk op Bitcoin. Alle gebruikerstransactie-activiteiten op deze laag-2 projecten kunnen uiteindelijk teruggeplaatst worden op de laag 1-blockchain.", "layer-2-what-is-layer-1-2": "Ethereum functioneert ook als een databeschikbaarheidslaag voor laag 2. Laag 2-projecten zullen hun transactiegegevens op Ethereum plaatsen en vertrouwen op Ethereum voor de beschikbaarheid van gegevens. Deze gegevens kunnen gebruikt worden om de status van laag 2 te verkrijgen of om transacties op laag 2 te betwisten.", "layer-2-what-is-layer-1-list-title": "Ethereum als laag 1 bevat:", "layer-2-what-is-layer-1-list-1": "Een netwerk van node-beheerders om het netwerk te beveiligen en te valideren", @@ -27,10 +27,10 @@ "layer-2-what-is-layer-1-list-link-2": "Leer wat Ethereum is.", "layer-2-why-do-we-need-layer-2-title": "Waarom hebben we laag 2 nodig?", "layer-2-why-do-we-need-layer-2-1": "De drie wenselijke eigenschappen van een blockchain zijn dat het gedecentraliseerd, veilig en schaalbaarmoet zijn. Het blockchain trilemma stelt dat een eenvoudige blockchainarchitectuur maar twee van de drie kan bereiken. Wil je een veilige en gedecentraliseerde blockchain? Dan moet je schaalbaarheid opofferen.", - "layer-2-why-do-we-need-layer-2-2": "Ethereum heeft zijn huidige capaciteit bereikt met meer dan 1 miljoen transacties per dag en een hoge vraag naar elk van deze transacties. Het succes van Ethereum en de vraag om het te gebruiken heeft ervoor gezorgd dat de gasprijzen aanzienlijk zijn gestegen. Daarom is de vraag naar schalingsoplossingen ook toegenomen. Hierbij komen laag 2-netwerken aan de orde.", + "layer-2-why-do-we-need-layer-2-2": "Ethereum verwerkt momenteel meer dan 1 miljoen transacties per dag. De vraag om Ethereum te gebruiken kan ervoor zorgen dat de transactiekosten hoog oplopen. Dit is waar laag 2-netwerken een rol spelen.", "layer-2-why-do-we-need-layer-2-scalability": "Schaalbaarheid", - "layer-2-why-do-we-need-layer-2-scalability-1": "Het belangrijkste doel van schaalbaarheid is het verhogen van de transactiesnelheid (snellere finaliteit) en transactiedoorvoer (meer transacties per seconde) zonder decentralisatie of beveiliging op te offeren.", - "layer-2-why-do-we-need-layer-2-scalability-2": "De Ethereum-gemeenschap heeft een sterk standpunt ingenomen om decentralisatie en veiligheid niet op te offeren om te schalen. Tot sharding is het Ethereum-hoofdnet (laag 1) alleen in staat om grofweg 15 transacties per seconde te verwerken. Wanneer de vraag om Ethereum te gebruiken hoog is, wordt het netwerk overbelast, wat de transactiekosten verhoogt en gebruikers achter zich laat die zich deze kosten niet kunnen veroorloven. Dit is wanneer laag 2 aan de orde komt om Ethereum op dit moment te schalen.", + "layer-2-why-do-we-need-layer-2-scalability-1": "Het hoofddoel van laag 2 is om de transactiecapaciteit te verhogen (meer transacties per seconde) zonder in te boeten aan decentralisatie of veiligheid.", + "layer-2-why-do-we-need-layer-2-scalability-2": "Het Ethereum-hoofdnet (laag 1) is enkel in staat om ongeveer 15 transacties per seconde te verwerken. Wanneer de vraag om Ethereum te gebruiken hoog is, raakt het netwerk verstopt, waardoor de transactiekosten toenemen en gebruikers die deze niet meer kunnen betalen uitgeprijsd worden. Laag 2-projecten zijn oplossingen die deze kosten verlagen door transacties te verwerken buiten de laag 1-blockchain.", "layer-2-why-do-we-need-layer-2-scalability-3": "Meer over de visie van Ethereum", "layer-2-benefits-of-layer-2-title": "Voordelen van laag 2", "layer-2-lower-fees-title": "Lagere kosten", @@ -40,24 +40,24 @@ "layer-2-expand-use-cases-title": "Meer use cases", "layer-2-expand-use-cases-description": "Met meer transacties per seconde, lagere kosten en nieuwe technologie zullen projecten uitbreiden tot nieuwere toepassingen met een verbeterde gebruikerservaring.", "layer-2-how-does-layer-2-work-title": "Hoe werkt laag 2?", - "layer-2-how-does-layer-2-work-1": "Zoals we hierboven hebben gezegd, is laag 2 een collectieve term voor de schalingsoplossingen van Ethereum die transacties buiten laag 1 van Ethereum afhandelen, terwijl ze nog steeds kunnen profiteren van de robuuste gedecentraliseerde veiligheid van Ethereum laag 1. Een laag 2 is een aparte blockchain die Ethereum uitbreidt. Hoe werkt dat?", - "layer-2-how-does-layer-2-work-2": "Een laag 2-blockchain communiceert regelmatig met Ethereum (door het indienen van bundels van transacties) om ervoor te zorgen dat het vergelijkbare beveiligings- en decentralisatiegaranties heeft. Dit alles vereist geen wijzigingen in het protocol voor laag 1 (Ethereum). Hierdoor kan laag 1 de beveiliging, gegevensbeschikbaarheid en decentralisatie afhandelen, terwijl laag 2 de schaling behandelt. Laag 2'en nemen de transactionele last weg van laag 1 en sturen definitief bewijs terug naar laag 1. Door deze transactiebelasting te verwijderen uit laag 1, wordt de basislaag minder belast en wordt alles schaalbaarder.", + "layer-2-how-does-layer-2-work-1": "Zoals hierboven vermeld is laag 2 een verzamelterm voor de schaaloplossingen van Ethereum die transacties verwerken buiten Ethereum laag 1, en tegelijkertijd maakt deze laag gebruik van de robuuste gedecentraliseerde beveiliging van Ethereum laag 1. Een laag 2 is een aparte blockchain die Ethereum uitbreidt. Hoe werkt dit?", + "layer-2-how-does-layer-2-work-2": "Er zijn verschillende soorten laag 2, elk met zijn eigen afwegingen en veiligheidsmodel. Een laag 2 neemt de transactielast over van laag 1 zodat deze minder overbelast wordt en alles schaalbaarder wordt.", "layer-2-rollups-title": "Rollups", - "layer-2-rollups-1": "Rollups zijn momenteel de laag 2-voorkeursoplossing voor het schalen van Ethereum. Door rollups te gebruiken, kunnen gebruikers gaskosten tot 100x verlagen ten opzichte van laag 1.", - "layer-2-rollups-2": "Rollups bundelen (of ’roll up’) honderden transacties in een enkele transactie op laag 1. Dit verdeelt de L1-transactiekosten over iedereen in de rollup, waardoor het goedkoper wordt voor elke gebruiker. Rollup-transacties worden buiten laag 1 uitgevoerd, maar de transactiegegevens worden op laag 1 geplaatst. Door transactiegegevens op laag 1 te plaatsen, erven rollups de veiligheid van Ethereum over. Er zijn twee verschillende benaderingen voor rollups: optimistic en zero-knowledge. Ze verschillen voornamelijk over hoe deze transactiegegevens op L1 worden geplaatst.", + "layer-2-rollups-1": "Rollups bundelen (of 'roll up') honderden transacties in één enkele transactie op laag 1. Dit verdeelt de L1-transactiekosten over iedereen in de rollup, wat het voor elke gebruiker goedkoper maakt.", + "layer-2-rollups-2": "Rollup-transacties worden uitgevoerd buiten laag 1, maar de transactiedata worden verzonden naar laag 1. Door het verzenden van transactiedata naar laag 1 erven rollups de veiligheid van Ethereum. Dit komt omdat, zodra de data op laag 1 staan, een rollup-transactie terugdraaien gelijkstaat aan het terugdraaien van Ethereum. Er zijn twee verschillende benaderingen voor rollups: optimistic en zero-knowledge. Deze verschillen voornamelijk in de manier waarop de transactiedata naar L1 worden verzonden.", "layer-2-optimistic-rollups-title": "Optimistic rollups", - "layer-2-optimistic-rollups-description": "Optimistic rollups zijn 'optimistisch' in die zin dat verondersteld wordt dat transacties geldig zijn, maar indien nodig kunnen worden gecontrolleerd. Als er een ongeldige transactie wordt vermoed, wordt er een foutief bewijs geleverd om te zien of dit heeft plaatsgevonden.", + "layer-2-optimistic-rollups-description": "Optimistic rollups zijn 'optimistisch' in de zin dat transacties als geldig worden beschouwd, maar kunnen worden betwist indien nodig. Als er vermoeden is van een ongeldige transactie, wordt een foutencontrole uitgevoerd om na te gaan of dit klopt.", "layer-2-optimistic-rollups-childSentance": "Meer over optimistic rollups", "layer-2-zk-rollups-title": "Zero-knowledge rollups", "layer-2-zk-rollups-description": "Zero-knowledge rollups gebruiken geldigheidsbewijzen wanneer transacties buiten de keten worden berekend, en vervolgens worden gecomprimeerde gegevens aan het Ethereum-hoofdnet verstrekt als bewijs van hun geldigheid.", "layer-2-zk-rollups-childSentance": "Meer over ZK-rollups", "layer-2-dyor-title": "Doe uw eigen onderzoek: risico's van laag 2", - "layer-2-dyor-1": "Omdat laag 2-ketens de beveiliging van Ethereum overerven, zijn ze (in een ideale wereld) net zo veilig als L1 Ethereum. Veel van de projecten zijn echter nog steeds jong en enigszins experimenteel. Na jaren van onderzoek en ontwikkeling werden veel van de L2-technologieën die Ethereum zullen schalen, gelanceerd in 2021. Veel projecten hebben nog steeds aannames ten aanzien van het vertrouwen terwijl ze eraan werken om hun netwerken te decentraliseren. Doe altijd je eigen onderzoek om te bepalen of je comfortabel bent met eventuele risico's.", + "layer-2-dyor-1": "Veel laag 2-projecten zijn redelijk nieuw en vereisen nog steeds dat gebruikers sommige operatoren als eerlijk moeten beschouwen, terwijl ze verder werken aan de decentralisatie van hun netwerken. Doe altijd je eigen onderzoek om te beslissen of je je op je gemak voelt met eventuele risico's.", "layer-2-dyor-2": "Voor meer informatie over de technologie, risico's en betrouwbaarheid van laag 2'en, bevelen we u aan om L2BEAT te bekijken, dat een uitgebreid framework voor risicobeoordeling van elk project biedt.", "layer-2-dyor-3": "Ga naar L2BEAT", "layer-2-use-layer-2-title": "Gebruik laag 2", "layer-2-use-layer-2-1": "Nu u begrijpt waarom laag 2 bestaat en hoe het werkt, kunnen we u op weg helpen!", - "layer-2-contract-accounts": "OPMERKING: Bij het overbruggen en gebruiken van laag 2, is het belangrijk om op te merken dat u het adres van uw EOA-account (een account waar slechts één persoonlijke sleutel het account beheert) net zoals op het Ethereum-hoofdnet controleert. Als u echter een contractaccount gebruikt, zoals Safe of Argent, dan heeft u geen controle over dit adres op laag 2 totdat u uw contractaccount opnieuw invoegt naar dat adres op laag 2. Als u geld overbrugt of verzendt naar een contractaccount, en u beheert dit adres voor het contractaccount niet, dan kunt u uw middelen verliezen.", + "layer-2-contract-accounts": "Als je gebruikt maakt van een portemonnee met slimme contracten zoals Safe of Argent, heb je geen controle over dit adres op een laag 2 totdat je jouw contractaccount naar dat adres herlanceert op de laag 2. Klassieke accounts met een herstelzin bezitten automatisch hetzelfde account op alle laag 2-netwerken.", "layer-2-use-layer-2-generalized-title": "Gegeneraliseerde laag 2'en", "layer-2-use-layer-2-generalized-1": "Gegeneraliseerde laag 2'en gedragen zich net als Ethereum - maar goedkoper. Alles wat je met Ethereums laag 1 kunt doen, kun je ook met laag 2 doen. Veel dapps zijn al begonnen met naar deze netwerken te migreren of hebben het hoofdnet helemaal overgeslagen om rechtstreeks op laag 2 te implementeren.", "layer-2-use-layer-2-application-specific-title": "Toepassingsspecifieke laag 2'en", @@ -67,8 +67,7 @@ "layer-2-sidechains-2": "Beide worden op vergelijkbare wijze op laag 2'en geschaald - ze bieden lagere transactiekosten en hogere transactiedoorvoer - maar hebben verschillende aannames ten aanzien van het vertrouwen.", "layer-2-more-on-sidechains": "Meer informatie over sidechains", "layer-2-more-on-validiums": "Meer informatie over validiums", - "layer-2-sidechains-4": "Sommige laag 1-blockchains hebben een hogere doorvoer en lagere transactiekosten dan Ethereum. Deze alternatieve laag 1'en hebben veiligheid of decentralisatie moeten opofferen om hogere transacties per seconde en lagere transactiekosten te bereiken.", - "layer-2-sidechains-5": "Het Ethereum-ecosysteem is stevig afgestemd op het feit dat laag 2-schaling de enige manier is om het schaalbaarheidstrilemma op te lossen terwijl het gedecentraliseerd en veilig blijft.", + "layer-2-sidechains-4": "Sommige laag 1-blockchains vermelden hogere capaciteit en lagere transactiekosten dan Ethereum, maar doorgaans met afwegingen op andere vlakken, bijvoorbeeld hogere eisen aan hardware om een node te draaien.", "layer-2-onboard-title": "Zo komt u op een laag 2", "layer-2-onboard-1": "Er zijn twee manieren om uw assets op laag 2 te krijgen: geld overbruggen van Ethereum (via een slim contract) of uw geld direct via een exchange opnemen en op het laag 2-netwerk zetten.", "layer-2-onboard-wallet-title": "Middelen in je portemonnee?", @@ -113,16 +112,16 @@ "layer-2-further-reading-title": "Verder lezen", "a-rollup-centric-ethereum-roadmap": "Een rollup-centrische ethereum-roadmap", "an-incomplete-guide-to-rollups": "Een onvolledige handleiding voor Rollups", - "polygon-sidechain-vs-ethereum-rollups": "Polygon sidechain vs Ethereum rollups: Layer 2 scaling approaches| Vitalik Buterin en Lex Fridman", + "polygon-sidechain-vs-ethereum-rollups": "Polygon sidechain vs Ethereum rollups: laag 2 schaalmethodologiën| Vitalik Buterin en Lex Fridman", "rollups-the-ultimate-ethereum-scaling-strategy": "ROLLUPS - de ultieme Ethereum-schalingsstrategie? Arbitrum en Optimism verklaard", "scaling-layer-1-with-shard-chains": "Laag 1 schalen met shardketens", "understanding-rollup-economics-from-first-principals": "De rollup-economie begrijpen vanuit de eerste beginselen", - "arbitrum-description": "Arbitrum is een Optimistic Rollup die het exacte gevoel probeert te geven van een interactie met Ethereum, maar waarbij transacties maar een fractie kosten van wat ze op L1 kosten.", + "arbitrum-description": "Arbitrum One is een Optimistic Rollup die precies dezelfde interactie wil bieden als met Ethereum, maar dan met transacties die een fractie kosten van wat ze op L1 kosten.", "optimism-description": "Optimism is een snelle, eenvoudige en veilige EVM-equivalente optimistic rollup. Het schaalt de technologie van Ethereum, terwijl het de waarden daarvan ook schaalt door middel van retroactieve financiering van publieke goederen.", "boba-description": "Boba is een Optimistic Rollup die oorspronkelijk werd afgeleid van Optimism. Het is een schalingsoplossing die tot doel heeft de gaskosten te verlagen, de transactiedoorvoer te verbeteren en de mogelijkheden van slimme contracten uit te breiden.", "loopring-description": "De zkRollup L2-oplossing van Loopring heeft tot doel dezelfde beveiligingsgaranties te bieden als het Ethereum-hoofdnet, met een grote schaalbaarheidsimpuls: doorvoer verhoogd met 1000x en de kosten verlaagd tot slechts 0,1% van L1.", "zksync-description": "zkSync is een gebruikerscentrisch zk rollup-platform van Matter Labs. Het is een schalingsoplossing voor Ethereum die al live is op het Ethereum-hoofdnet. Het ondersteunt betalingen, tokenuitwisselingen en NFT-minting.", - "zkspace-description": "Het ZKSpace-platform bestaat uit drie hoofddelen: een Laag 2 AMM DEX die gebruik maakt van ZK-Rollups-technologie met de naam ZKSwap, een betalingsdienst genaamd ZKSquare en een NFT-marktplaats genaamd ZKSea.", + "zkspace-description": "Het ZKSpace-platform bestaat uit drie hoofddelen: een laag 2 AMM DEX die gebruik maakt van ZK-Rollups-technologie met de naam ZKSwap, een betalingsdienst genaamd ZKSquare en een NFT-marktplaats genaamd ZKSea.", "aztec-description": "Aztec Network is de eerste private zk-rollup op Ethereum, waardoor gedecentraliseerde toepassingen toegang krijgen tot privacy en schaal.", "layer-2-note": "Opmerking:", "layer-2-ecosystem-portal": "Ecosysteemportaal", diff --git a/src/intl/nl/page-stablecoins.json b/src/intl/nl/page-stablecoins.json index 1f029add125..4a3382807a9 100644 --- a/src/intl/nl/page-stablecoins.json +++ b/src/intl/nl/page-stablecoins.json @@ -154,13 +154,13 @@ "bittrex-logo": "Bittrex-logo", "coinbase-logo": "Coinbase-logo", "coinmama-logo": "Coinmama-logo", - "compound-logo": "Compound-logo", + "compound-logo": "Compound logo", "example-projects": "Voorbeeldprojecten", "gemini-logo": "Gemini-logo", - "gitcoin-logo": "Gitcoin-logo", - "loopring-logo": "Loopring-logo", + "gitcoin-logo": "Gitcoin logo", + "loopring-logo": "Loopring logo", "makerdao-logo": "MakerDao-logo", - "matcha-logo": "Matcha-logo", - "oasis-logo": "Oasis-logo", - "uniswap-logo": "Uniswap-logo" + "matcha-logo": "Matcha logo", + "oasis-logo": "Oasis logo", + "uniswap-logo": "Uniswap logo" } diff --git a/src/intl/nl/page-wallets-find-wallet.json b/src/intl/nl/page-wallets-find-wallet.json index 9662076159d..678fe295985 100644 --- a/src/intl/nl/page-wallets-find-wallet.json +++ b/src/intl/nl/page-wallets-find-wallet.json @@ -1,16 +1,94 @@ { "page-find-wallet-clear": "Filters wissen", - "page-find-wallet-desc-2": "Kies dus uw portemonnee op basis van de functies die u wilt.", - "page-find-wallet-description": "Portemonnees hebben veel optionele functies die u leuk zal vinden.", + "page-find-wallet-desc-2": "Kies je portemonnee dus op basis van de functies die je wilt.", + "page-find-wallet-description": "Portemonnees hebben veel optionele functies die je leuk zult vinden.", "page-find-wallet-last-updated": "Laatst gewijzigd op", - "page-find-wallet-meta-description": "Zoek en vergelijk Ethereum portemonnees op basis van de functies die u wilt.", - "page-find-wallet-meta-title": "Vind een Ethereum Portemonnee", + "page-find-wallet-meta-description": "Zoek en vergelijk Ethereum-portemonnees op basis van de functies die je wilt.", + "page-find-wallet-meta-title": "Vind een Ethereum-portemonnee", "page-find-wallet-title": "Vind een portemonnee", "page-find-wallet-try-removing": "Probeer een functie of twee te verwijderen", + "page-find-wallet-choose-to-compare": "Kies om te vergelijken", "page-stake-eth": "Stake ETH", - "page-find-wallet-swaps": "Gedecentraliseerde token swaps", - "page-find-wallet-swaps-desc": "Handel tussen ETH en andere tokens, direct vanuit je portemonnee.", - "page-find-wallet-multisig": "Multi-signature accounts", - "page-find-wallet-multisig-desc": "Voor extra beveiliging, vereisen multi-signature portemonnees meer dan één account om bepaalde transacties te autoriseren.", - "page-find-wallet-showing": "Zichtbaar " + "page-find-wallet-open-source": "Open source", + "page-find-wallet-open-source-desc": "Open-source software laat iedereen de integriteit en beveiliging van de applicatie controleren", + "page-find-wallet-self-custody": "Zelfbewaring", + "page-find-wallet-non-custodial": "Niet-custodiaal", + "page-find-wallet-non-custodial-desc": "Portemonnees die je privé-sleutels niet beheren", + "page-find-wallet-hardware-wallet-support": "Hardwareportemonnee-ondersteuning", + "page-find-wallet-hardware-wallet-support-desc": "Portemonnees die verbinding kunnen maken met hardwareportemonnees voor betere beveiliging", + "page-find-wallet-walletconnect": "WalletConnect", + "page-find-wallet-walletconnect-desc": "Portemonnees die WalletConnect ondersteunen voor het verbinden met dapps", + "page-find-wallet-rpc-importing": "RPC importeren", + "page-find-wallet-rpc-importing-desc": "Portemonnees die aangepaste RPC-eindpunten ondersteunen om verbinding te maken met verschillende nodes of netwerken", + "page-find-wallet-nft-support": "NFT-ondersteuning", + "page-find-wallet-nft-support-desc": "Portemonnees die het bekijken en communiceren met uw NFT's ondersteunen", + "page-find-wallet-connect-to-dapps": "Verbinding maken met dapps", + "page-find-wallet-connect-to-dapps-desc": "Portemonnees die verbinding maken met applicaties gebouwd op het Ethereum-netwerk", + "page-find-wallet-staking": "Staking", + "page-find-wallet-staking-desc": "Stake ETH direct uit de portemonnee", + "page-find-wallet-swaps": "Swaps", + "page-find-wallet-swaps-desc": "Wissel ERC-20 tokens direct in de portemonnee", + "page-find-wallet-layer-2": "Laag 2", + "page-find-wallet-layer-2-desc": "Portemonnees die Ethereum-laag 2s ondersteunen", + "page-find-wallet-gas-fee-customization": "Gasvergoeding aanpassen", + "page-find-wallet-gas-fee-customization-desc": "Pas uw gasbedragen aan (basisvergoeding, prioriteitsvergoeding en maximale vergoeding)", + "page-find-wallet-ens-support": "ENS-ondersteuning", + "page-find-wallet-ens-support-desc": "Portemonnees die Ethereum Name Service (ENS) ondersteunen", + "page-find-wallet-token-importing": "Token importeren", + "page-find-wallet-token-importing-desc": "Importeer eender welke ERC-20 token om te gebruiken in de portemonnee", + "page-find-wallet-fee-optimization": "Vergoedingsoptimalisatie", + "page-find-wallet-fee-optimization-desc": "Ondersteuning van type 2-transacties voor geoptimaliseerde gaskosten en restitutie van kosten voor ongebruikt gas", + "page-find-wallet-buy-crypto": "Koop crypto", + "page-find-wallet-buy-crypto-desc": "Koop crypto met fiat direct in de portemonnee \n *Let op: crypto kopen kan regiospecifiek zijn", + "page-find-wallet-sell-for-fiat": "Verkopen voor fiat", + "page-find-wallet-sell-for-fiat-desc": "Verkoop crypto met fiat direct in de portemonnee \n *Let op: het opnemen van crypto kan regiospecifiek zijn", + "page-find-wallet-multisig": "Multisig", + "page-find-wallet-multisig-desc": "Portemonnees die meerdere handtekeningen vereisen om een transactie te autoriseren", + "page-find-wallet-social-recovery": "Sociaal herstel", + "page-find-wallet-social-recovery-desc": "Portemonnees die guardians in staat stellen de ondertekeningssleutel voor smart contract portemonnees te wijzigen", + "page-find-wallet-token-support": "Tokenondersteuning", + "page-find-wallet-features": "Eigenschappen", + "page-find-wallet-security": "Beveiliging", + "page-find-wallet-smart-contract": "Smart contract", + "page-find-wallet-check-out": "Check out", + "page-find-wallet-info-updated-on": "informatie bijgewerkt op", + "page-find-wallet-showing-all-wallets": "Alle portemonnees weergeven", + "page-find-wallet-showing": "Weergeven", + "page-find-wallet-wallets": "wallets", + "page-find-wallet-iOS": "iOS", + "page-find-wallet-android": "Android", + "page-find-wallet-linux": "Linux", + "page-find-wallet-macOS": "macOS", + "page-find-wallet-windows": "Windows", + "page-find-wallet-chromium": "Chromium", + "page-find-wallet-firefox": "Firefox", + "page-find-wallet-hardware": "Hardware", + "page-find-wallet-hardware-desc": "Hardwareportemonnees", + "page-find-wallet-new-to-crypto-title": "Nieuw bij crypto", + "page-find-wallet-new-to-crypto-desc": "Jij bent een nieuwe gebruiker die op zoek is naar je eerste portemonnee", + "page-find-wallet-nfts-title": "NFT's", + "page-find-wallet-nfts-desc": "Jij bent iemand voor wie het om NFT's gaat en een portemonnee wilt met NFT-ondersteuning", + "page-find-wallet-hodler-title": "Hodler", + "page-find-wallet-hodler-desc": "Jij bent iemand die tokens heeft en ze niet wil aanraken", + "page-find-wallet-finance-title": "Financiën", + "page-find-wallet-finance-desc": "Jij bent iemand die DeFi gebruikt en een portemonnee wil waarmee je verbinding kunt maken met DeFi-applicaties", + "page-find-wallet-developer-title": "Ontwikkelaar", + "page-find-wallet-developer-desc": "Je bent ontwikkelaar en hebt een portemonnee nodig om te helpen met het ontwikkelen en testen van dapps", + "page-find-wallet-persona-desc": "Kies het profiel dat overeenkomt met jouw type gebruiker en filter de portemonneelijst", + "page-find-wallet-filters": "Filters", + "page-find-wallet-active": "actief", + "page-find-wallet-profile-filters": "Profiel filters", + "page-find-wallet-feature-filters": "Functiefilters", + "page-find-wallet-footnote-1": "Portemonnees op deze pagina zijn niet officiëel goedgekeurd en worden alleen ter informatie aangeboden.", + "page-find-wallet-footnote-2": "De beschrijvingen zijn afkomstig van de portemonneeprojecten zelf.", + "page-find-wallet-footnote-3": "We voegen producten toe aan deze pagina op basis van criteria in ons lijstbeleid. Als je wilt dat we een portemonnee toevoegen, meld dit dan via GitHub.", + "page-find-wallet-mobile": "Mobiel", + "page-find-wallet-mobile-desc": "Portemonnees met mobiele apps", + "page-find-wallet-desktop": "Desktop", + "page-find-wallet-desktop-desc": "Portemonnees met desktop apps", + "page-find-wallet-browser": "Browser", + "page-find-wallet-browser-desc": "Portemonnees met browserextensies", + "page-find-wallet-device": "Apparaat", + "page-find-choose-to-compare": "Kies om te vergelijken", + "page-find-wallet-choose-features": "Functies kiezen" } diff --git a/src/intl/nl/page-wallets.json b/src/intl/nl/page-wallets.json index 13260c4309a..d052c1dc80d 100644 --- a/src/intl/nl/page-wallets.json +++ b/src/intl/nl/page-wallets.json @@ -1,20 +1,20 @@ { - "page-wallets-accounts-addresses": "Wallets, accounts en adressen", + "page-wallets-accounts-addresses": "Portemonnees, accounts, sleutels en adressen", "page-wallets-accounts-addresses-desc": "Het is de moeite waard om de verschillen tussen enkele sleutelbegrippen te begrijpen.", - "page-wallets-accounts-ethereum-addresses": "Een Ethereum-account heeft een Ethereum-adres, zoals een inbox die een e-mailadres heeft. U kunt dit gebruiken om fondsen naar een account te sturen.", + "page-wallets-accounts-ethereum-addresses": "Een Ethereum-account heeft een adres, zoals een inbox die een e-mailadres heeft. Dit wordt gebruikt om je digitale activa te identificeren.", "page-wallets-alt": "Illustratie van een robot met een kluis als torso, bedoeld om een Ethereum wallet uit te beelden", - "page-wallets-ethereum-account": "Een Ethereum account is een entiteit die transacties kan verzenden en een saldo heeft.", + "page-wallets-ethereum-account": "Een Ethereum-account is een sleutelpaar. Eén sleutel wordt gebruikt om het adres te creëren dat je vrij kunt delen, de andere sleutel moet je geheim houden omdat deze wordt gebruikt bij het ondertekenen van dingen. Samen zorgen deze sleutels ervoor dat je activa kunt bezitten en transacties kunt uitvoeren.", "page-wallets-blog": "Coinbase blog", "page-wallets-bookmarking": "Bookmark uw wallet", "page-wallets-bookmarking-desc": "Als u een web wallet gebruikt, bookmark dan de website om uzelf te beschermen tegen phishing.", "page-wallets-cd": "Fysieke hardware wallets zijn apparaten waarmee u uw crypto offline kunt bewaren - zeer veilig", - "page-wallets-desc-2": "U hebt een wallet nodig om geld te verzenden en uw ETH te beheren.", + "page-wallets-desc-2": "Portemonnees zijn wat de meeste mensen gebruiken om hun digitale activa en identiteit te beheren.", "page-wallets-desc-2-link": "Meer over ETH", - "page-wallets-desc-3": "Uw wallet is slechts een hulpmiddel om uw Ethereum account te beheren. Dit betekent dat u altijd van walletaanbieder kunt wisselen. Veel wallets laten u ook meerdere Ethereum accounts tegelijk beheren vanuit één applicatie.", - "page-wallets-desc-4": "Dat is omdat wallets uw geld niet bewaren; dat doet u. Wallets zijn slechts een hulpmiddel om dat wat van u is te beheren.", - "page-wallets-description": "Ethereum wallets zijn applicaties die u laten communiceren met uw Ethereum account. Zie het als een app waarmee u kunt internetbankieren, maar dan zonder de bank. Via uw wallet bekijkt u uw saldo, verzendt u transacties en verbindt u zich met applicaties.", + "page-wallets-desc-3": "Je portemonnee is een hulpmiddel voor interactie met je Ethereum-account. Dat betekent dat je op elk moment van portemonnee-aanbieder kunt wisselen. Verschillende portemonnees maken het ook mogelijk om meerdere Ethereum-accounts te beheren vanuit één applicatie.", + "page-wallets-desc-4": "Portemonnee-aanbieders hebben geen bewaring over je fondsen. Ze bieden je alleen een venster om je activa op Ethereum te zien en gemakkelijk te beheren.", + "page-wallets-description": "Ethereum-portemonnees zijn applicaties die je controle geven over je account. Net als je fysieke portemonnee bevat het alles wat je nodig hebt om je identiteit te bewijzen en je bezittingen te beheren. Met je portemonnee kun je je aanmelden bij applicaties, je saldo bekijken, transacties uitvoeren en je identiteit verifiëren.", "page-wallets-desktop": "Desktopapplicaties - als uw voorkeur uitgaat naar het beheren van uw crypto via macOS, Windows of Linux", - "page-wallets-ethereum-wallet": "Een wallet is een product waarmee u uw Ethereum account kunt beheren. Hiermee kunt u uw accountsaldo bekijken, transacties versturen en meer.", + "page-wallets-ethereum-wallet": "Een portemonnee is een hulpmiddel waarmee je (met je sleutels) kunt communiceren met je Ethereum-account. Hiermee kun je je saldo bekijken, transacties uitvoeren en nog veel meer.", "page-wallets-explore": "Verken Ethereum", "page-wallets-features-desc": "We kunnen u helpen bij het kiezen van een wallet op basis van de functies die u belangrijk vindt.", "page-wallets-features-title": "Vergelijk wallets op basis van functies", @@ -39,12 +39,12 @@ "page-wallets-seed-phrase-example": "Hier is een voorbeeld:", "page-wallets-seed-phrase-snippet": "there aeroplane curve vent formation doge possible product distinct under spirit lamp", "page-wallets-seed-phrase-write-down": "Sla het niet op op een computer. Schrijf het op (op papier) en bewaar het veilig.", - "page-wallets-slogan": "De sleutel tot uw digitale toekomst", + "page-wallets-slogan": "De sleutels tot je digitale toekomst", "page-wallets-stay-safe": "Hoe kan ik veilig blijven", - "page-wallets-stay-safe-desc": "Wallets vereisen een andere mentaliteit als het gaat om veiligheid. Financiële vrijheid en de toegang tot en het gebruik van fondsen op eender welke plaats komt met een kleine verantwoordelijkheid – er is geen klantenservice in crypto.", - "page-wallets-subtitle": "Wallets geven toegang tot uw fondsen en Ethereum-applicaties. Alleen u moet toegang hebben tot uw wallet.", + "page-wallets-stay-safe-desc": "Financiële vrijheid en de mogelijkheid om overal ter wereld toegang te krijgen tot geld en het te gebruiken, komt met verantwoordelijkheid - er is geen klantenservice in crypto. Je bent zelf verantwoordelijk voor het veilig bewaren van je sleutels.", + "page-wallets-subtitle": "Portemonnees helpen je toegang te krijgen tot je digitale activa en je aan te melden bij applicaties.", "page-wallets-take-responsibility": "Neem verantwoordelijkheid voor uw eigen fondsen", - "page-wallets-take-responsibility-desc": "Gecentraliseerde exchanges koppelen uw wallet aan een gebruikersnaam en wachtwoord die u op traditionele manier kunt herstellen. Vergeet niet dat u deze exchange vertrouwt met bewaring van uw geld. Als dat bedrijf wordt aangevallen of failliet gaat, loopt ook uw geld gevaar.", + "page-wallets-take-responsibility-desc": "Gecentraliseerde beurzen koppelen je portemonnee aan een gebruikersnaam en wachtwoord die je op een traditionele manier kunt achterhalen. Vergeet niet dat je die beurs vertrouwt met de bewaring van je fondsen. Als de beurs ooit financiële problemen heeft, loopt je geld ook gevaar.", "page-wallets-tips": "Meer tips over veilig blijven", "page-wallets-tips-community": "Van de gemeenschap", "page-wallets-title": "Ethereum wallets", @@ -61,5 +61,7 @@ "page-wallets-your-ethereum-account": "Uw Ethereum account", "page-wallets-your-ethereum-account-desc": "Uw wallet is uw interactie met uw Ethereum account – uw saldo, transactiegeschiedenis en meer. Maar u kunt op elk gewenst moment van walletaanbieder wisselen.", "page-wallets-your-login": "Uw login voor Ethereum apps", - "page-wallets-your-login-desc": "Met behulp van uw wallet verbindt u zich via uw Ethereum account met iedere decentrale applicatie. Het is een soort login die u kunt gebruiken voor vele dapps." + "page-wallets-your-login-desc": "Met je portemonnee kun je verbinding maken met applicaties via je Ethereum-account. Het is net als een login die je kunt gebruiken voor verschillende apps.", + "additional-reading-how-to-create-an-ethereum-account": "Hoe een Ethereum-account aanmaken?", + "additional-reading-how-to-use-a-wallet": "Hoe een wallet gebruiken" } diff --git a/src/intl/nl/page-what-is-ethereum.json b/src/intl/nl/page-what-is-ethereum.json index 76158a0542e..bfe0e8c2533 100644 --- a/src/intl/nl/page-what-is-ethereum.json +++ b/src/intl/nl/page-what-is-ethereum.json @@ -11,44 +11,41 @@ "page-what-is-ethereum-comm-desc": "Onze community bestaat uit mensen met verschillende achtergronden, waaronder artiesten, crypto-anarchisten, Fortune 500-bedrijven en nu ook u. Ontdek hoe u vandaag nog mee kunt doen.", "page-what-is-ethereum-commerce-card": "Handelsgaranties", "page-what-is-ethereum-commerce-card-desc": "Klanten hebben een veilige en ingebouwde garantie dat tegoeden enkel worden uitgewisseld als u levert zoals vooraf is afgesproken. Op deze manier hebben ontwikkelaars de zekerheid dat de regels voor hen niet zullen veranderen.", - "page-what-is-ethereum-composable-card": "Alle producten kunnen op elkaar bouwen", - "page-what-is-ethereum-composable-card-desc": "Doordat alle apps op dezelfde blockchain zijn gebouwd met een gedeelde algemene staat, kunnen ze op elkaar bouwen (zoals lego's). Dit maakt het mogelijk om steeds betere producten en ervaringen te bouwen.", + "page-what-is-ethereum-composable-card": "Samenstelbare producten", + "page-what-is-ethereum-composable-card-desc": "Alle apps worden gebouwd op dezelfde blockchain met een gedeelde globale staat, wat betekent dat ze op elkaar kunnen voortbouwen (zoals legoblokjes). Dit zorgt voor betere producten en ervaringen en verzekert dat niemand tools kan verwijderen waar apps op vertrouwen.", "page-what-is-ethereum-community": "De Ethereum-community", "page-what-is-ethereum-desc": "Het fundament voor onze digitale toekomst", "page-what-is-ethereum-explore": "Verken Ethereum", - "page-what-is-ethereum-internet-card": "Een privacy-vriendelijker internet", - "page-what-is-ethereum-internet-card-desc": "Je hoeft niet al je persoonlijke gegevens op te geven om een Ethereum-app te gebruiken. Ethereum bouwt een economie gebaseerd op waarde, niet op toezicht.", + "page-what-is-ethereum-internet-card": "Een open internet", + "page-what-is-ethereum-internet-card-desc": "Iedereen kan communiceren en toepassingen bouwen op het Ethereum-netwerk. Hierdoor heb je controle over je eigen bezittingen en identiteit, in plaats van dat ze worden gecontroleerd door een paar mega-bedrijven.", "page-what-is-ethereum-meet-comm": "Ontmoet de community", "page-what-is-ethereum-meta-description": "Leer over Ethereum, wat het doet en hoe u het zelf kunt uitproberen.", "page-what-is-ethereum-meta-title": "Wat is Ethereum?", "page-what-is-ethereum-p2p-card": "Een peer-to-peer-netwerk", - "page-what-is-ethereum-p2p-card-desc": "Ethereum stelt je in staat om geld te verplaatsen of overeenkomsten te sluiten direct met iemand anders. Je hebt geen tussenpersonen nodig.", + "page-what-is-ethereum-p2p-card-desc": "Met Ethereum kun je direct met andere mensen coördineren, afspraken maken of digitale activa overdragen. Je hoeft niet te vertrouwen op tussenpersonen.", "page-what-is-ethereum-start-building-btn": "Start met bouwen", "page-what-is-ethereum-title": "Wat is Ethereum?", "page-what-is-ethereum-subtitle": "Een volledige beginnershandleiding over hoe Ethereum werkt, de voordelen die het oplevert en hoe het wordt gebruikt door miljoenen mensen over de hele wereld.", "page-what-is-ethereum-button-lets-start": "Laten we beginnen", "page-what-is-ethereum-blockchain-tab-title": "Wat is een blockchain?", - "page-what-is-ethereum-blockchain-tab-content": " Een blockchain is een database van transacties die wordt bijgewerkt en gedeeld over verschillende computers in een netwerk. Elke keer wanneer er een nieuwe reeks transacties wordt toegevoegd, wordt dit een \"blok\" genoemd - vandaar de naam blockchain. De meeste blockchains zijn openbaar en hebben enkel de mogelijkheid om data toe te voegen, niet om te verwijderen. Als iemand de informatie wil wijzigen of het systeem wil misleiden, hebben ze de meerderheid van de computers op het netwerk nodig. Dat is een hele hoop! Dit maakt reeds gevestigde blockchains zoals Ethereum extreem veilig.", - "page-what-is-ethereum-cryptocurrency-tab-title": "Waarom heet het cryptovaluta?", - "page-what-is-ethereum-cryptocurrency-tab-content": "Blockchains gebruiken cryptografische technieken om ervoor te zorgen dat uw geld veilig is. In de banksector worden al jaren vergelijkbare technieken gebruikt om monetaire transacties veilig te stellen. Je zou dus kunnen zeggen dat cryptovaluta's het veiligheidsniveau van een bank hebben.", + "page-what-is-ethereum-blockchain-tab-content": "Een blockchain is een database van transacties die wordt bijgewerkt en gedeeld over verschillende computers in een netwerk. Elke keer wanneer er een nieuwe reeks transacties wordt toegevoegd, wordt dit een \"blok\" genoemd - vandaar de naam blockchain. Openbare blockchains zoals Ethereum staan iedereen toe om transacties toe te voegen, maar niet te verwijderen. Als iemand de informatie wil wijzigen of het systeem wil misleiden, hebben ze de meerderheid van de computers op het netwerk nodig. Dat is een hele hoop! Dit maakt gedecentraliseerde blockchains zoals Ethereum zeer veilig.", + "page-what-is-ethereum-cryptocurrency-tab-title": "Wat is een cryptovaluta?", + "page-what-is-ethereum-cryptocurrency-tab-content-1": "Cryptocurrency is een term die wordt gebruikt om vele soorten fungibele (vervangbare) digitale tokens te beschrijven die worden beveiligd door een blockchain. Het begon allemaal met Bitcoin. Bitcoin kan worden gebruikt om waarde over te dragen tussen twee partijen zonder een tussenpersoon te hoeven vertrouwen. Je hoeft alleen de Bitcoin-code te vertrouwen, die volledig open en vrij beschikbaar is.", + "page-what-is-ethereum-cryptocurrency-tab-content-2": "De reden dat activa zoals bitcoin en ether \"cryptocurrencies\" worden genoemd, is omdat de veiligheid van je gegevens en activa wordt gegarandeerd door cryptografie, niet door een instelling of bedrijf te vertrouwen om eerlijk te handelen.", + "page-what-is-ethereum-cryptocurrency-tab-content-3": "Ethereum heeft zijn eigen cryptocurrency, ether (ETH), die wordt gebruikt om te betalen voor activiteiten op het netwerk. Het kan worden overgedragen aan andere gebruikers of worden geruild voor andere tokens op Ethereum. Ether is speciaal omdat het wordt gebruikt om te betalen voor de berekeningen die nodig zijn om apps en organisaties op Ethereum te bouwen en te laten draaien.", "page-what-is-ethereum-summary-title": "Samenvatting", - "page-what-is-ethereum-summary-desc-1": "Ethereum is een technologie voor het bouwen van apps en organisaties, het houden van activa, het uitvoeren van transacties en om te communiceren zonder gecontroleerd te worden door een centrale autoriteit. Het is niet nodig om al uw persoonlijke gegevens over te dragen om Ethereum te kunnen gebruiken - u houdt zelf de controle over uw eigen gegevens en over wat er wordt gedeeld. Ethereum heeft zijn eigen cryptovaluta, Ether, die wordt gebruikt om bepaalde activiteiten op het Ethereum-netwerk te betalen.", - "page-what-is-ethereum-summary-desc-2": "Nog steeds in de war? Laten we het stap voor stap uitleggen.", - "page-what-is-ethereum-what-is-crypto-title": "Wat is een cryptovaluta?", - "page-what-is-ethereum-what-is-crypto-desc-1": "Crypto (kort voor cryptocurrency/cryptovaluta) is een nieuwe vorm van digitaal geld aangedreven door cryptografie.", - "page-what-is-ethereum-what-is-crypto-desc-2": "Het begon allemaal in 2008 met Bitcoin. Het kon gebruikt worden om fondsen naar iedereen wereldwijd te sturen. Wat cryptogeld anders maakte dan normale bankoverschrijvingen of andere financiële diensten zoals Paypal of Alipay, is dat er voor de eerste keer geen tussenpersoon was.", - "page-what-is-ethereum-what-is-crypto-desc-3": "Wacht, wat is een tussenpersoon?", - "page-what-is-ethereum-what-is-crypto-desc-4": "Een tussenpersoon (middle-man) is een centrale autoriteit zoals een bank of een overheid die tussenbeide komt in een transactie tussen afzender en ontvanger. Zij hebben de bevoegdheid om transacties te onderzoeken, te censureren of terug te draaien. Zij kunnen de gevoelige gegevens die zij over u verzamelen met derden delen. Ze beslissen vaak ook tot welke financiële diensten u toegang heeft.", - "page-what-is-ethereum-what-is-crypto-desc-5": "Dingen zijn anders met crypto. Transacties verbinden afzenders en ontvangers direct met elkaar zonder dat ze met een centrale autoriteit te maken krijgen. Niemand anders zal toegang hebben tot uw geld en niemand kan u vertellen welke diensten u mag gebruiken. Dit is mogelijk vanwege de blockchain-technologie op basis waarvan cryptovaluta's kunnen werken.", + "page-what-is-ethereum-summary-desc-1": "Ethereum is een netwerk van computers over de hele wereld die een set regels volgen die het Ethereum-protocol wordt genoemd. Het Ethereum-netwerk vormt de basis voor gemeenschappen, toepassingen, organisaties en digitale activa die iedereen kan bouwen en gebruiken.", + "page-what-is-ethereum-summary-desc-2": "Je kunt overal en altijd een Ethereum-account aanmaken en een wereld aan apps verkennen of je eigen apps bouwen. De belangrijkste innovatie is dat je dit allemaal kunt doen zonder te vertrouwen op een centrale autoriteit die de regels zou kunnen veranderen of je toegang zou kunnen beperken.", + "page-what-is-ethereum-summary-desc-3": "Lees verder voor meer informatie…", "page-what-is-ethereum-btc-eth-diff-title": "Wat is het verschil tussen Ethereum en Bitcoin?", "page-what-is-ethereum-btc-eth-diff-1": "Ethereum, gelanceerd in 2015, bouwt voort op de innovaties van Bitcoin, met enkele grote verschillen.", "page-what-is-ethereum-btc-eth-diff-2": "Beide laten u digitaal geld gebruiken zonder tussenkomst van betalingsproviders of banken. Maar Ethereum is programmeerbaar, wat wil zeggen dat u ook gedecentraliseerde toepassingen op het netwerk kunt bouwen.", - "page-what-is-ethereum-btc-eth-diff-3": "Dat Ethereum programmeerbaar is betekent dat u apps kunt bouwen die de blockchain gebruiken om gegevens op te slaan of te bepalen wat uw app kan doen. Dit resulteert in een algemene blockchain die kan worden geprogrammeerd om wat dan ook te doen. Omdat er geen limiet is aan wat Ethereum mag doen, maakt dit het mogelijk dat er grote innovaties plaatsvinden op het Ethereum-netwerk.", - "page-what-is-ethereum-btc-eth-diff-4": "Terwijl Bitcoin alleen maar een betalingsnetwerk is, lijkt Ethereum meer op een markt van financiële diensten, games, sociale netwerken en andere apps die uw privacy respecteren en u niet kunnen censureren.", + "page-what-is-ethereum-btc-eth-diff-3": "Bitcoin maakt het mogelijk om elkaar eenvoudige berichten te sturen over wat we waardevol vinden. Het vaststellen van waarde zonder autoriteit is al een krachtig gegeven. Ethereum breidt dit verder uit: in plaats van alleen berichten, kun je eender welk generiek programma of contract schrijven. Er is geen beperking aan het type contract dat kan worden opgesteld en afgesloten, wat uitgebreide innovatie mogelijk maakt op het Ethereum-netwerk.", + "page-what-is-ethereum-btc-eth-diff-4": "Terwijl Bitcoin alleen een betalingsnetwerk is, is Ethereum meer een marktplaats van financiële diensten, games, sociale netwerken en andere apps.", "page-what-is-ethereum-what-can-eth-do-title": "Wat kan Ethereum doen?", "page-what-is-ethereum-why-would-i-use-ethereum-title": "Waarom zou ik Ethereum gebruiken?", - "page-what-is-ethereum-why-would-i-use-ethereum-1": "Als u ooit geld naar het buitenland heeft gestuurd (of van plan bent om dit te doen), of u ooit zorgen heeft gemaakt over uw bezittingen omdat ze door externe bedrijven buiten uw controle bewaard worden, of u heeft genoeg van de vele beperkingen en vergoedingen die traditionele financiële instellingen opleggen voor dagelijkse transacties, dan zou u geïntresseerd kunnen zijn in wat cryptovaluta's te bieden hebben.", - "page-what-is-ethereum-why-would-i-use-ethereum-2": "Vergeet niet dat Ethereum een verhaal is dat nog steeds wordt geschreven, Het wordt continu ontwikkeld en elke dag komen er meer redenen bij om het te gebruiken.", + "page-what-is-ethereum-why-would-i-use-ethereum-1": "Als je geïnteresseerd bent in veerkrachtigere, openere en betrouwbaardere manieren om wereldwijd te coördineren, organisaties te creëren, apps te bouwen en waarde te delen, dan is Ethereum iets voor jou. Ethereum is een verhaal dat door ons allen wordt geschreven, dus kom en ontdek wat voor ongelooflijke werelden we er samen mee kunnen bouwen.", + "page-what-is-ethereum-why-would-i-use-ethereum-2": "Ethereum is ook van onschatbare waarde voor mensen die te maken hadden met onzekerheid over de veiligheid, betrouwbaarheid of mobiliteit van hun bezittingen wegens externe zaken waar ze geen invloed op hadden.", "page-what-is-ethereum-slide-1-title": "Goedkopere en snellere grensoverschrijdende betalingen", "page-what-is-ethereum-slide-1-desc-1": "Stablecoins zijn een nieuw type cryptovaluta dat afhankelijk is van een stabielere activa als basis voor de waarde. De meesten van deze zijn verbonden met de Amerikaanse dollar en houden dus vast aan de waarde van die munt. Dit zorgt voor een zeer goedkoop en stabiel mondiaal betalingssysteem. Veel huidige stablecoins zijn gebouwd op het Ethereum-netwerk.", "page-what-is-ethereum-slide-1-desc-2": "Ethereum en stablecoins vereenvoudigen het proces van het verzenden van geld naar het buitenalnd. Het duurt vaak maar een paar minuten om fondsen over de hele wereld te verschuiven, dit in tegenstelling tot enkele werkdagen of zelfs weken bij de gemiddelde bank, en voor een fractie van de prijs. Daarnaast zijn er geen extra kosten voor het uitvoeren van een hoge waarde en er zijn geen beperkingen op waar of waarom u uw geld stuurt.", @@ -61,38 +58,56 @@ "page-what-is-ethereum-slide-4-desc-1": "Play-to-earn games (waar spelers daadwerkelijk worden beloond voor het spelen van de games) zijn recent verschenen en transformeren de game-industrie. Traditioneel is het vaak verboden om in-game middelen te verhandelen voor echt geld. Dit zorgt ervoor dat veel spelers zwarte markt websites gebruiken die een veiligheidsrisico vormen. Blockchain-gaming omarmt de in-game economie en bevordert dergelijk gedrag op een vertrouwde manier.", "page-what-is-ethereum-slide-4-desc-2": "Bovendien worden spelers gestimuleerd door het feit dat ze in-game tokens kunnen verhandelen voor echt geld, en dus daadwerkelijk worden beloond voor hun speeltijd.", "page-what-is-ethereum-meet-ether-title": "Maak kennis met ether, de cryptovaluta van Ethereum.", - "page-what-is-ethereum-meet-ether-desc-1": "Ethereum heeft een eigen cryptovaluta genaamd Ether (ETH). Het is zuiver digitaal, en u kunt het onmiddellijk naar iedereen ter wereld sturen. Het aanbod van ETH wordt niet gecontroleerd door een regering of bedrijf - het is gedecentraliseerd en volledig transparant. Nieuwe munten (ook wel tokens genoemd) worden alleen uitgegeven aan validators die het netwerk beveiligen.", - "page-what-is-ethereum-meet-ether-desc-2": "Elke actie op het Ethereum-netwerk vereist een bepaalde hoeveelheid rekenkracht. Deze vergoeding wordt betaald in de vorm van ether. Dit betekent dat je minimaal een kleine hoeveelheid ETH nodig hebt om het netwerk te kunnen gebruiken.", + "page-what-is-ethereum-meet-ether-desc-1": "Veel acties op het Ethereum-netwerk vereisen werk dat gedaan moet worden op de ingebouwde computer van Ethereum (ook bekend als de Ethereum Virtual Machine). Deze berekeningen zijn niet gratis; er wordt voor betaald met Ethereums eigen cryptocurrency genaamd ether (ETH). Dit betekent dat je op zijn minst een kleine hoeveelheid ether nodig hebt om het netwerk te gebruiken.", + "page-what-is-ethereum-meet-ether-desc-2": "Ether is puur digitaal en je kunt het onmiddellijk naar iedereen overal ter wereld sturen. De uitgave van ether wordt niet gecontroleerd door een overheid of bedrijf - het is gedecentraliseerd en volledig transparant. Ether wordt uitgegeven op een precieze manier volgens het protocol, alleen aan stakers die het netwerk beveiligen.", "page-what-is-ethereum-what-is-ether": "Wat is ether?", "page-what-is-ethereum-get-eth": "Verkrijg ETH", - "page-what-is-ethereum-what-can-i-do-title": "Wat kan ik doen met ETH-munten?", - "page-what-is-ethereum-what-can-i-do-desc-1": "Veel dingen! Een van de meest populaire toepassingen van de Ethereum-technologie is gedecentraliseerde financiering (DeFi) die financiële diensten mogelijk maakt voor iedereen met een internetverbinding. U kunt uw ether als onderpand gebruiken om leningen op te nemen, of om liquiditeit te bieden om rente op uw geld te verdienen.", "page-what-is-ethereum-explore-applications": "Applicaties verkennen", "page-what-is-ethereum-learn-defi": "Meer informatie over DeFi", "page-what-is-ethereum-who-runs-ethereum-title": "Wie beheert Ethereum?", - "page-what-is-ethereum-who-runs-ethereum-desc-1": "Ethereum wordt niet gecontroleerd door één enkele entiteit. Het bestaat uitsluitend door de gedecentraliseerde deelname en samenwerking van de gemeenschap. Ethereum maakt gebruik van nodes (een computer met een kopie van de Ethereum-blockchaindata) die door vrijwilligers beheerd worden om individuele server- en cloudsystemen te vervangen (die eigendom zijn van grote internetproviders en -diensten).", - "page-what-is-ethereum-who-runs-ethereum-desc-2": "Deze gedistribueerde nodes, beheerd door personen en bedrijven over de hele wereld, bieden veerkracht aan de infrastructuur van het Ethereum-netwerk. Het is daarom veel minder kwetsbaar voor hacks of shutdowns. Sinds de lancering in 2015 heeft Ethereum nooit downtime gehad. Er zijn duizenden individuele nodes die Ethereum gebruiken. Dit maakt Ethereum een van de meest gedecentraliseerde cryptovaluta's, op de tweede plaats na bitcoin.", + "page-what-is-ethereum-who-runs-ethereum-desc-1": "Ethereum wordt niet beheerd door één welbepaalde entiteit. Het bestaat zodra verbonden computers de software van het Ethereum-protocol draaien en toevoegen aan de Ethereum-blockchain. Elk van deze computers staat bekend als een node. Nodes kunnen beheerd worden door iedereen, maar om deel te nemen aan het beveiligen van het netwerk moet je ETH (Ethereums token) staken. Iedereen met 32 ETH kan dit doen zonder toestemming.", + "page-what-is-ethereum-who-runs-ethereum-desc-2": "Zelfs de broncode van Ethereum wordt niet beheerd door één enkele entiteit. Iedereen kan wijzigingen aan het protocol voorstellen en upgrades bespreken. Er zijn verschillende implementaties van het Ethereum-protocol die geproduceerd worden door onafhankelijke organisaties in verschillende programmeertalen, en ze zijn meestal open-source gebouwd.", "page-what-is-ethereum-run-a-node": "Een node runnen", "page-what-is-ethereum-smart-contract-title": "Wat zijn smart contracts?", - "page-what-is-ethereum-smart-contract-desc-1": "Slimme contracten zijn gewoon computerprogramma's die op de Ethereum-blockchain bestaan. Ze worden alleen uitgevoerd wanneer ze worden geactiveerd door een transactie van een gebruiker (of door een ander contract). Ze maken Ethereum zeer flexibel in wat het kan en zorgen voor een onderscheid tussen Ethereum en andere cryptovaluta's. Deze programma's zijn wat we nu gedecentraliseerde apps of dapps noemen.", + "page-what-is-ethereum-smart-contract-desc-1": "Slimme contracten zijn computerprogramma's die op de Ethereum-blockchain bestaan. Ze worden uitgevoerd wanneer ze worden geactiveerd door een transactie van een gebruiker. Ze maken Ethereum zeer flexibel in wat het kan doen. Deze programma's fungeren als bouwstenen voor gedecentraliseerde apps en organisaties.", "page-what-is-ethereum-smart-contract-desc-2": "Heeft u ooit al eens een product gebruikt dat zijn gebruiksvoorwaarden heeft gewijzigd? Of die een functie heeft verwijderd die u nuttig vond? Bij Ethereum kan dit niet. Zodra een slim contract is gepubliceerd op Ethereum, zal het online en operationeel blijven zolang Ethereum bestaat. Zelfs de auteur kan het niet verwijderen. Omdat slimme contracten geautomatiseerd zijn, worden gebruikers nooit gediscimineerd en zijn ze altijd beschikbaar om gebruikt te worden.", - "page-what-is-ethereum-smart-contract-desc-3": "Populaire voorbeelden van slimme contracten zijn: lening-apps, gedecentraliseerde handelsuitwisselingen, verzekeringen, crowdfunding apps - eigenlijk alles waar u aan kunt denken.", + "page-what-is-ethereum-smart-contract-desc-3": "Populaire voorbeelden van slimme contracten zijn: uitleen-apps, gedecentraliseerde handelsbeurzen, verzekeringen, quadratic funding, sociale netwerken, NFT's - eigenlijk alles wat je maar kunt bedenken.", "page-what-is-ethereum-more-on-smart-contracts": "Meer over slimme contracten", "page-what-is-ethereum-explore-dapps": "Verken dapps", "page-what-is-ethereum-criminal-activity-title": "Ik heb gehoord dat crypto wordt gebruikt als tool voor criminele activiteiten. Is dat waar?", - "page-what-is-ethereum-criminal-activity-desc-1": "Zoals bij elke vorm van geld zal een deel van het geld worden misbruikt. Het is echter vaak veel gemakkelijker voor de autoriteiten om illegale activiteiten op te sporen op Ethereum, omdat alle Ethereum-transacties plaatsvinden op een open blockchain. Dit zorgt er indirect voor dat Ethereum minder aantrekkelijk is voor degenen die liever niet worden gedetecteerd.", + "page-what-is-ethereum-criminal-activity-desc-1": "Zoals bij elke technologie wordt ook deze soms misbruikt. Maar omdat alle Ethereum-transacties op een open blockchain plaatsvinden, is het voor de autoriteiten vaak makkelijker om illegale activiteiten op te sporen dan in het traditionele financiële systeem, wat Ethereum een minder aantrekkelijke keuze maakt voor diegenen die liever onopgemerkt blijven.", "page-what-is-ethereum-criminal-activity-desc-2": "Volgens de belangrijkste bevindingen van een recent rapport van Europol, het Agentschap van de Europese Unie voor samenwerking op gebied van wetgeving, blijkt dat cryptovaluta veel minder dan fiat valuta gebruikt worden voor criminele doeleinden :", "page-what-is-ethereum-criminal-activity-desc-3": "“Het gebruik van cryptovaluta's voor illegale activiteiten omvat slechts een klein deel van de totale cryptovaluta-economie; bovendien is het een relatief klein bedrag in vergelijking met de hoeveelheid illegale fondsen die bij traditionele financiën zijn betrokken.\"", "page-what-is-ethereum-energy-title": "Hoe zit het met Ethereums energieverbruik?", - "page-what-is-ethereum-energy-desc-1": "Ethereum gebruikt momenteel het proof-of-work mechanisme, dat een grote hoeveelheid energie verbruikt. In de komende maanden (K3/K4 2022) zal Ethereum een grote update ondergaan en wordt er overgeschakeld op het proof-of-stake mechanisme, dat de impact op het milieu aanzienlijk gaat verminderen.", - "page-what-is-ethereum-energy-desc-2": "Deze update vermindert de energie die nodig is om Ethereum te beveiligen met ongeveer 99,95%, het creëert een veiliger netwerk voor veel lagere koolstofkosten. Dit zal van Ethereum een echt koolstofarme blockchain maken en tegelijkertijd de veiligheid en schaalbaarheid ervan vergroten.", + "page-what-is-ethereum-energy-desc-1": "Op 15 september 2022 ging Ethereum door de Merge-upgrade, waardoor Ethereum van proof-of-work naar proof-of-stake is overgestapt.", + "page-what-is-ethereum-energy-desc-2": "De Merge was de grootste upgrade van Ethereum en verminderde de energie die nodig is om Ethereum te beveiligen met ongeveer 99,95%, waardoor een veiliger netwerk voor veel lagere koolstofkosten gecreëerd werd. Dit maakt van Ethereum een echt koolstofarme blockchain, terwijl tegelijkertijd de veiligheid en schaalbaarheid ervan vergroot zijn.", "page-what-is-ethereum-more-on-energy-consumption": "Meer over energieverbruik", - "page-what-is-ethereum-energy-consumption-chart-legend": "Jaarlijks energieverbruik in TW/jr", + "page-what-is-ethereum-energy-consumption-chart-legend": "Jaarlijks energieverbruik in TWu/jr", + "energy-consumption-chart-global-data-centers-label": "Globale datacenters", + "energy-consumption-gold-mining-cbeci-label": "Goud delven", + "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": "Gaming in de VS", + "energy-consumption-chart-airbnb-label": "AirBnB", + "energy-consumption-chart-paypal-label": "PayPal", + "energy-consumption-chart-eth-pos-label": "ETH PoS", "page-what-is-ethereum-the-merge-update": "De merge update", - "page-what-is-ethereum-additional-reading": "Lees meer", + "page-what-is-ethereum-additional-reading": "Verder lezen", "page-what-is-ethereum-week-in-ethereum": "Week in Ethereum News", "page-what-is-ethereum-week-in-ethereum-desc": "- Een wekelijkse nieuwsbrief over belangrijke ontwikkelingen in het ecosysteem.", + "page-what-is-ethereum-kernel-dreamers": "Kernel", + "page-what-is-ethereum-kernel-dreamers-desc": "Ethereum's Dream", "page-what-is-ethereum-atoms-institutions-blockchains": "Atoms, Institutions, Blockchains", "page-what-is-ethereum-atoms-institutions-blockchains-desc": "- Waarom blockchains belangrijk zijn?", - "page-what-is-ethereum-ethereum-in-numbers-title": "Ethereum in cijfers" + "page-what-is-ethereum-ethereum-in-numbers-title": "Ethereum in cijfers", + "adoption-chart-column-now-label": "Nu", + "adoption-chart-investors-label": "Investeerders", + "adoption-chart-developers-label": "Ontwikkelaars", + "adoption-chart-companies-label": "Bedrijven", + "adoption-chart-artists-label": "Artiesten", + "adoption-chart-musicians-label": "Muzikanten", + "adoption-chart-writers-label": "Auteurs", + "adoption-chart-gamers-label": "Gamers", + "adoption-chart-refugees-label": "Vluchtelingen" } diff --git a/src/intl/nl/template-usecase.json b/src/intl/nl/template-usecase.json index eded0ec85ea..49c4077d24a 100644 --- a/src/intl/nl/template-usecase.json +++ b/src/intl/nl/template-usecase.json @@ -4,6 +4,8 @@ "template-usecase-dropdown-dao": "Gedecentraliseerde autonome organisaties (DAO's)", "template-usecase-dropdown-social-networks": "Gedecentraliseerde sociale netwerken", "template-usecase-dropdown-identity": "Gedecentraliseerde identiteit", + "template-usecase-dropdown-desci": "Gedecentraliseerde wetenschap (DeSci)", + "template-usecase-dropdown-refi": "Regeneratieve financiering (ReFi)", "template-usecase-dropdown": "Ethereum use cases", "template-usecase-banner": "Gebruiksmogelijkheden van Ethereum ontwikkelen en evolueren. Voeg alle informatie toe die dingen volgens u duidelijker of meer up-to-date te maken.", "template-usecase-edit-link": "Bewerk pagina", diff --git a/src/intl/pcm/page-wallets-find-wallet.json b/src/intl/pcm/page-wallets-find-wallet.json index 29e5776ed76..502fe5ebf0d 100644 --- a/src/intl/pcm/page-wallets-find-wallet.json +++ b/src/intl/pcm/page-wallets-find-wallet.json @@ -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 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-mobile": "Mobile", "page-find-wallet-mobile-desc": "Wallet wey get mobile apps", "page-find-wallet-desktop": "Desktop", diff --git a/src/intl/pl/common.json b/src/intl/pl/common.json index c87293887b3..d79c55d98ba 100644 --- a/src/intl/pl/common.json +++ b/src/intl/pl/common.json @@ -59,6 +59,7 @@ "enterprise-menu": "Menu dla przedsiębiorstw", "esp": "Program wsparcia ekosystemów", "eth-current-price": "Aktualna cena ETH (USD)", + "ethereum-basics": "Podstawy Ethereum", "ethereum-bug-bounty": "Program nagród za błędy Ethereum", "consensus-when-shipping": "Kiedy to się stanie?", "ethereum-upgrades": "Uaktualnienia Ethereum", @@ -66,15 +67,16 @@ "ethereum-online": "Społeczności internetowe", "ethereum-events": "Wydarzenia Ethereum", "ethereum-foundation": "Fundacja Ethereum", - "ethereum-foundation-logo": "Logo fundacji Ethereum", + "ethereum-foundation-logo": "Logo Fundacji Ethereum", "ethereum-glossary": "Słownik Ethereum", "ethereum-governance": "Zarządzanie Ethereum", "ethereum-logo": "Logo Ethereum", "ethereum-roadmap": "Mapa drogowa Ethereum", + "ethereum-protocol": "Protokół Ethereum", "ethereum-security": "Bezpieczeństwo Ethereum i zapobieganie oszustwom", "ethereum-support": "Wsparcie Ethereum", "ethereum-wallets": "Portfele Ethereum", - "ethereum-whitepaper": "Dokumentacja Ethereum", + "ethereum-whitepaper": "Biała księga Ethereum", "feedback-widget-prompt": "Czy ta strona jest pomocna?", "feedback-card-prompt-page": "Czy ta strona była pomocna?", "feedback-card-prompt-article": "Czy ten artykuł był pomocny?", @@ -89,14 +91,14 @@ "get-eth": "Zdobądź ETH", "get-involved": "Zaangażuj się", "get-started": "Rozpocznij", - "grants": "Dotacje", - "grant-programs": "Programy dotacji na ekosystemy", + "grants": "Granty", + "grant-programs": "Programy grantów dla ekosystemów", "guides": "Przewodniki", "guides-hub": "Centrum przewodników", "history-of-ethereum": "Historia Ethereum", "home": "Strona główna", "how-ethereum-works": "Jak działa Ethereum", - "how-to-create-an-ethereum-account": "Jak „zarejestrować” konto Ethereum", + "how-to-register-an-ethereum-account": "Jak „zarejestrować” 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", @@ -123,6 +125,7 @@ "loading": "Ładowanie...", "loading-error": "Błąd ładowania.", "loading-error-refresh": "Błąd. Odśwież stronę.", + "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", "more": "Więcej", @@ -137,7 +140,7 @@ "page-developers-aria-label": "Menu dewelopera", "page-index-meta-title": "Strona główna", "page-last-updated": "Strona ostatnio zaktualizowana", - "pbs": "Separacja proponujący-budowniczy", + "pbs": "Separacja proponujący-budujący", "pools": "Stakowanie w puli", "privacy-policy": "Polityka prywatności", "private-ethereum": "Prywatne Ethereum", @@ -147,12 +150,14 @@ "refresh": "Odśwież stronę.", "return-home": "wróć do strony głównej", "roadmap": "Mapa drogowa Ethereum", + "resources": "Zasoby do tłumaczenia", + "regenerative-finance": "Finanse regeneracyjne (ReFi)", "run-a-node": "Dodaj węzeł", "rollup-component-website": "Strona internetowa", "rollup-component-developer-docs": "Dokumentacja dewelopera", "rollup-component-technology-and-risk-summary": "Technologia i podsumowanie ryzyka", "scaling": "Skalowanie", - "saas": "Stakowanie jako usługa", + "saas": "Usługi stakingowe", "search": "Szukaj", "search-ethereum-org": "Przeszukaj ethereum.org", "secret-leader-election": "Tajny wybór lidera", @@ -173,7 +178,8 @@ "stablecoins": "Stablecoiny", "stake-eth": "Stakuj ETH", "staking": "Staking", - "style-guide": "Style guide", + "start-here": "Zacznij tutaj", + "style-guide": "Przewodnik stylu", "solo": "Stakowanie solo", "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ć.", @@ -199,7 +205,7 @@ "website-last-updated": "Data ostatniej aktualizacji strony", "what-is-ether": "Czym jest ether (ETH)?", "what-is-ethereum": "Co to jest Ethereum?", - "withdrawals": "Stakowanie wypłat", + "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 new file mode 100644 index 00000000000..2f4c247b3ef --- /dev/null +++ b/src/intl/pl/learn-quizzes.json @@ -0,0 +1,328 @@ +{ + "add-quiz": "Dodaj pytanie/quiz", + "average-score": "Średni wynik:", + "basics": "Podstawy Ethereum", + "basics-description": "Ta sekcja obejmuje podstawowe pojęcia Ethereum, zapewniając solidne podstawy.", + "completed": "Zakończone:", + "community-stats": "Statystyki społeczności", + "contribute": "Przyczyń się do rozwoju naszej biblioteki.", + "correct": "Poprawnie", + "explanation": "Wyjaśnienie", + "next-question": "Następne pytanie", + "next-quiz": "Następny quiz", + "page-assets-merge": "Połączenie", + "passed": "Udało Ci się przejść quiz!", + "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ę:", + "score": "Wynik", + "see-results": "Zobacz wyniki", + "share-results": "Udostępnij wyniki", + "start": "Rozpocznij", + "submit-answer": "Sprawdź odpowiedź", + "test-your-knowledge": "Sprawdź swoją wiedzę o Ethereum", + "try-again": "Spróbuj ponownie", + "using-ethereum": "Korzystanie z Ethereum", + "using-ethereum-description": "Zagłęb się w rzeczywiste zastosowania Ethereum i odkryj, jak ta rewolucyjna platforma blockchain zmienia branże. To świetny sposób, aby upewnić się, że rozumiesz wszystko wystarczająco dobrze, zanim zaczniesz aktywnie korzystać z kryptowalut.", + "want-more-quizzes": "Chcesz zobaczyć tutaj więcej quizów?", + "your-results": "Twoje wyniki", + "your-total": "Łączna liczba punktów", + "a001-prompt": "Największą różnicą pomiędzy Ethereum a Bitcoinem jest:", + "a001-a-label": "Ethereum nie pozwala na dokonywanie płatności innym osobom", + "a001-a-explanation": "Zarówno Bitcoin, jak i Ethereum pozwalają na dokonywanie płatności innym osobom.", + "a001-b-label": "Możesz uruchamiać programy komputerowe na Ethereum", + "a001-b-explanation": "Ethereum jest programowalne. Oznacza to, że możesz umieścić dowolny program komputerowy w blockchainie Ethereum.", + "a001-c-label": "Możesz uruchamiać programy komputerowe na Bitcoinie", + "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-a-label": "Ether", + "a002-a-explanation": "Ether jest natywną kryptowalutą dla sieci Ethereum.", + "a002-b-label": "Ethereum", + "a002-b-explanation": "Ethereum to blockchain, ale jego natywna waluta nie jest nazywa Ethereum. Jest to powszechne nieporozumienie.", + "a002-c-label": "Ethercoin", + "a002-c-explanation": "W przeciwieństwie do wielu innych kryptowalut natywna kryptowaluta Ethereum nie zawiera słowa „coin”.", + "a002-d-label": "Bitcoin", + "a002-d-explanation": "Bitcoin (duża litera B) był pierwszym utworzonym blockchainem, bitcoin (mała litera B) jest jego natywną kryptowalutą.", + "a003-prompt": "Kto prowadzi Ethereum?", + "a003-a-label": "Autorzy", + "a003-a-explanation": "Deweloperzy mają kluczowe znaczenie dla budowania i ulepszania Ethereum, ale nie są oni grupą, która utrzymuje Ethereum w działaniu.", + "a003-b-label": "Górnicy", + "a003-b-explanation": "Kopanie kryptowalut nie jest możliwe od czasu Połączenia. Na Ethereum nie ma już „górników”.", + "a003-c-label": "Fundacja Ethereum", + "a003-c-explanation": "Fundacja Ethereum nie odgrywa żadnej znaczącej roli w codziennym funkcjonowaniu węzłów Ethereum.", + "a003-d-label": "Każdy z uruchomionym węzłem", + "a003-d-explanation": "Każdy z uruchomionym węzłem jest kluczowym elementem infrastruktury Ethereum. Jeśli jeszcze tego nie robisz, rozważ uruchomienie węzła Ethereum.", + "a004-prompt": "Od czasu uruchomienia Ethereum, ile razy sieć była offline?", + "a004-a-label": "Nigdy", + "a004-b-label": "Jeden raz", + "a004-c-label": "Cztery razy", + "a004-d-label": "Ponad dziesięć razy", + "a004-explanation": "Ethereum nigdy nie było całkowicie offline (przestało produkować bloki), od momentu jego uruchomienia.", + "a005-prompt": "Ethereum zużywa więcej energii elektrycznej niż:", + "a005-a-label": "Wydobycie złota", + "a005-a-explanation": "Wydobycie złota zużywa około 131 terawatogodzin rocznie. Ethereum zużywa około 0,0026 terawatogodzin rocznie.", + "a005-b-label": "Netflix", + "a005-b-explanation": "Netflix zużywa około 0,451 terawatogodzin rocznie. Ethereum zużywa około 0,0026 terawatogodzin rocznie.", + "a005-c-label": "PayPal", + "a005-c-explanation": "Paypal zużywa około 0,26 terawatogodzin rocznie. Ethereum zużywa około 0,0026 terawatogodzin rocznie.", + "a005-d-label": "Żadne z powyższych", + "a005-d-explanation": "Ethereum zużywa około 0,0026 terawatogodzin rocznie. Mniej niż wydobycie złota (około 131 TWh/rocznie), Netflix (około 0,451 TWh/rocznie) i PayPal (około 0,26 TWh/rocznie).", + "b001-prompt": "Ether jest również znany jako:", + "b001-a-label": "ETC", + "b001-a-explanation": "ETC jest skrótem dla Ethereum Classic.", + "b001-b-label": "ETR", + "b001-b-explanation": "ETR nie jest skrótem dla etheru ani żadnej znaczącej kryptowaluty.", + "b001-c-label": "ETH", + "b001-c-explanation": "ETH jest skrótem dla etheru na Ethereum.", + "b001-d-label": "BTC", + "b001-d-explanation": "BTC jest skrótem dla bitcoina w sieci Bitcoin.", + "b002-prompt": "Na Ethereum opłaty sieciowe są uiszczane w:", + "b002-a-label": "bitcoinach", + "b002-a-explanation": "Zapisany małymi literami „bitcoin” to natywna kryptowaluta sieci Bitcoin.", + "b002-b-label": "ETH", + "b002-b-explanation": "Ether (ETH) jest natywną kryptowalutą Ethereum. Wszystkie opłaty sieciowe na Ethereum są uiszczane w ETH.", + "b002-c-label": "USD", + "b002-c-explanation": "Nie jest możliwe uiszczenie opłat sieciowych na Ethereum w dolarach amerykańskich (USD) lub w żadnej postaci pieniądza fiducjarnego.", + "b002-d-label": "Ethereum", + "b002-d-explanation": "Ethereum jest siecią, ale opłaty sieciowe na Ethereum są uiszczane w ETH.", + "b003-prompt": "Staking na Ethereum pomaga zabezpieczyć sieć, ponieważ:", + "b003-a-label": "Stakerzy mogą zbanować ludzi, jeśli nie podoba im się to, co robią", + "b003-a-explanation": "Stakerzy nie są w stanie dowolnie cenzurować użytkowników.", + "b003-b-label": "Jeśli staker spróbuje oszukać sieć, ryzykuje on utratą ETH", + "b003-b-explanation": "Stakerzy mogą stracić znaczną część ETH, jeśli okaże się, że zachowują się złośliwie wobec sieci. Jest to znane jako cięcie.", + "b003-c-label": "Stakerzy mają potężne komputery, aby zademonstrować proof-of-work", + "b003-c-explanation": "Stakerzy nie potrzebują potężnego sprzętu, aby stakować swoje ETH. Ethereum przestało korzystać z proof-of-work po Połączeniu.", + "b003-d-label": "Stakerzy są poddawani KYC, zanim zostaną zaakceptowani jako walidatorzy", + "b003-d-explanation": "Staking na Ethereum nie wymaga uprawnień ani KYC.", + "b004-prompt": "ETH jest wartościowy, ponieważ:", + "b004-a-label": "ETH jest potrzebny, aby zrobić cokolwiek na Ethereum", + "b004-a-explanation": "Ta odpowiedź jest częściowo prawidłowa, ale jest to tylko jeden z powodów, dla których ETH jest wartościowy.", + "b004-b-label": "ETH jest niecenzurowalnym pieniądzem peer-to-peer", + "b004-b-explanation": "Ta odpowiedź jest częściowo prawidłowa, ale jest to tylko jeden z powodów, dla których ETH jest wartościowy.", + "b004-c-label": "ETH jest wykorzystywany jako zabezpieczenie kredytów kryptowalutowych", + "b004-c-explanation": "Ta odpowiedź jest częściowo prawidłowa, ale jest to tylko jeden z powodów, dla których ETH jest wartościowy.", + "b004-d-label": "Wszystkie z powyższych", + "b004-d-explanation": "Transakcji Ethereum nie można ocenzurować, ETH jest potrzebny do wykonania jakichkolwiek transakcji na Ethereum, a także ma kluczowe znaczenie dla stabilności ekosystemu DeFi.", + "c001-prompt": "Web3 zezwala użytkownikom na posiadanie zasobów cyfrowych bezpośrednio przez:", + "c001-a-label": "DAO", + "c001-a-explanation": "DAO (zdecentralizowana autonomiczna organizacja) to społeczności będące własnością członków bez scentralizowanego przywództwa.", + "c001-b-label": "Tokeny NFT", + "c001-b-explanation": "NFT (niewymienialny token) zapewnia sposób na reprezentowanie czegokolwiek wyjątkowego jako aktywa opartego na Ethereum.", + "c001-c-label": "ENS", + "c001-c-explanation": "ENS (Ethereum Name Service) jest zdecentralizowaną usługą nazewnictwa dla blockhainu Ethereum.", + "c001-d-label": "GitHub", + "c001-d-explanation": "GitHub jest scentralizowaną platformą, służąca głównie do przechowywania kodu przy użyciu rozproszonej kontroli wersji. GitHub nie zezwala na posiadanie Twoich danych lub zasobów cyfrowych.", + "c002-prompt": "Web1 był tylko do odczytu, Web2 pozwala na odczyt i zapis, a Web3 został opisany jako:", + "c002-a-label": "Odczyt, zapis i sprzedaż", + "c002-a-explanation": "Web3 nie został opisany w ten sposób.", + "c002-b-label": "Odczyt, zapis i przechowywanie", + "c002-b-explanation": "Web3 nie został opisany w ten sposób.", + "c002-c-label": "Odczyt, zapis i posiadanie", + "c002-c-explanation": "Web3 umożliwia użytkownikom na posiadanie swoich danych i w związku z tym został opisany jako „odczyt, zapis i posiadanie”, co stanowi ulepszenie w stosunku do Web2, który jest opisany jako „odczyt i zapis”.", + "c002-d-label": "Odczyt, zapis i zakup", + "c002-d-explanation": "Web3 nie został opisany w ten sposób.", + "c003-prompt": "Która wersja sieci nie opiera się na zewnętrznych dostawcach płatności?", + "c003-a-label": "Web1", + "c003-a-explanation": "Web1 nie posiadał natywnych, wbudowanych płatności.", + "c003-b-label": "Web2", + "c003-b-explanation": "Web2 nie posiada natywnych, wbudowanych płatności.", + "c003-c-label": "Web3", + "c003-c-explanation": "Web3 posiada natywne, wbudowane płatności za pomocą kryptowalut, takich jak ETH.", + "c003-d-label": "Wszystkie z powyższych", + "c003-d-explanation": "Web1 i Web2 nie posiadają natywnych, wbudowanych płatności.", + "c004-prompt": "Określenie „Web3” zostało wymyślone przez:", + "c004-a-label": "Gavin Wood", + "c004-a-explanation": "Gavin Wood, współzałożyciel Ethereum, jest uznawany za twórcę terminu Web3 wkrótce po uruchomieniu Ethereum w 2015 r.", + "c004-b-label": "Steve Jobs", + "c004-b-explanation": "Steve Jobs nie wymyślił terminu „Web3”.", + "c004-c-label": "Vitalik Buterin", + "c004-c-explanation": "Vitalik Buterin, choć oryginalny założyciel Ethereum, to nie jest stwórcą terminu „Web3”.", + "c004-d-label": "Elon Musk", + "c004-d-explanation": "Elon Musk nie wymyślił terminu „Web3”.", + "c005-prompt": "Aby mieć jeden, odporny na cenzurę login w całej sieci musisz:", + "c005-a-label": "Zalogować się przez Facebooka", + "c005-a-explanation": "Logowanie za pomocą Facebooka nie jest odporne na cenzurę.", + "c005-b-label": "Zalogować się przez Google", + "c005-b-explanation": "Logowanie za pomocą Google nie jest odporne na cenzurę.", + "c005-c-label": "Zaloguj się za pomocą Ethereum", + "c005-c-explanation": "Logowanie za pomocą Ethereum jest jedyną opcją, która jest odporna na cenzurę i może być używana w dowolnej aplikacji internetowej.", + "c005-d-label": "Zalogować się przez Twittera", + "c005-d-explanation": "Logowanie za pomocą Twittera nie jest odporne na cenzurę.", + "d001-prompt": "Najbezpieczniejszym typem portfela jest:", + "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-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", + "d001-d-explanation": "Portfele komputerowe przechowują klucze prywatne na dysku twardym komputera, który zazwyczaj posiada połączenie z internetem i może być zagrożony przez inne oprogramowanie.", + "d002-prompt": "Spośród przedstawionych opcji, który sposób przechowywania frazy ziarna jest najbezpieczniejszy?", + "d002-a-label": "Na zdjęciu na telefonie", + "d002-a-explanation": "Nie jest to najbezpieczniejsza opcja. Jeśli to zdjęcie zostanie przesłane do chmury, haker może je pobrać i uzyska dostęp do Twojego konta.", + "d002-b-label": "W pliku na Twoim komputerze", + "d002-b-explanation": "Nie jest to najbezpieczniejsza opcja. Hakerzy coraz częściej szukają informacji o kryptowalutach na urządzeniach docelowych. Jeśli haker uzyska dostęp do pliku z twoją frazą ziarna, uzyska dostęp to Twojego konta.", + "d002-c-label": "Zapisana na papierze", + "d002-c-explanation": "Spośród dostępnych opcji zapisanie frazy ziarna na papierze jest najbezpieczniejsze.", + "d002-d-label": "W wiadomości SMS do zaufanego członka rodziny", + "d002-d-explanation": "Nigdy nie powinieneś wysyłać nikomu swojej frazy ziarna. Wiadomość może zostać przechwycona przez osobę trzecią, a nawet jeśli całkowicie ufasz tej osobie, nie wiesz, kto może mieć dostęp do jej telefonu.", + "d003-prompt": "Komu powinieneś podać swoją frazę ziarna / klucze prywatne?", + "d003-a-label": "Osobie, której płacisz", + "d003-a-explanation": "Nigdy nie powinieneś dawać nikomu swojej frazy ziarna ani kluczy prywatnych. Zamiast tego należy wysyłać tokeny na adres portfela za pośrednictwem transakcji.", + "d003-b-label": "Aby zalogować się do zdecentralizowanej aplikacji lub portfela", + "d003-b-explanation": "Nigdy nie powinieneś dawać swojej frazy ziarna / kluczy prywatnych, aby zalogować się do portfela albo zdecentralizowanej aplikacji.", + "d003-c-label": "Zespołowi wsparcia", + "d003-c-explanation": "Nigdy nie powinieneś dawać swojej frazy ziarna / kluczy prywatnych nikomu, kto twierdzi, że jest z pomocy technicznej. Każdy, kto Cię o to prosi jest oszustem.", + "d003-d-label": "Nikomu", + "d003-d-explanation": "Najlepiej byłoby, gdybyś nigdy nie udostępniał swojej frazy ziarna ani kluczy prywatnych nikomu. Jeśli całkowicie ufasz komuś, kto ma absolutny dostęp do Twoich środków (np. współmałżonkowi), możesz zdecydować się na udostępnienie mu tych informacji.", + "d004-prompt": "Portfel i konto na Ethereum są tym samym.", + "d004-a-label": "Prawda", + "d004-a-explanation": "Portfel jest interfejsem wizualnym używanym do interakcji z kontem Ethereum.", + "d004-b-label": "Fałsz", + "d004-b-explanation": "Portfel jest interfejsem wizualnym używanym do interakcji z kontem Ethereum.", + "e001-prompt": "Dlaczego powinieneś używać unikalnych haseł dla wszystkich swoich kont?", + "e001-a-label": "W razie, gdyby jedna z platform miała wyciek danych", + "e001-a-explanation": "Ta odpowiedź jest prawidłowa, ale są również inne poprawne odpowiedzi.", + "e001-b-label": "W razie, gdyby ktoś zaglądający ci przez ramię poznał twoje hasło", + "e001-b-explanation": "Ta odpowiedź jest prawidłowa, ale są również inne poprawne odpowiedzi.", + "e001-c-label": "W razie kradzieży hasła przez złośliwe oprogramowanie, takie jak key-logger", + "e001-c-explanation": "Ta odpowiedź jest prawidłowa, ale są również inne poprawne odpowiedzi.", + "e001-d-label": "Wszystkie z powyższych", + "e001-d-explanation": "Wszystkie odpowiedzi są poprawne. Używanie unikalnych haseł jest najlepszym sposobem na uniemożliwienie dostępu do konta innym osobom.", + "e002-prompt": "Po Połączeniu ETH musi zostać ulepszone do ETH2.", + "e002-a-label": "Prawda", + "e002-a-explanation": "Nie musisz ulepszać ETH do ETH2. Nie ma ETH2 i jest to powszechnie używane przez oszustów.", + "e002-b-label": "Fałsz", + "e002-b-explanation": "Nie musisz ulepszać ETH do ETH2. Nie ma ETH2 i jest to powszechnie używane przez oszustów.", + "e003-prompt": "Konkursy na ETH są:", + "e003-a-label": "Dobrym sposobem, aby uzyskać więcej ETH", + "e003-a-explanation": "Konkursy na ETH to oszustwa mające na celu kradzież Twojego ETH i innych tokenów. Nigdy nie są dobrym sposobem na zdobycie więcej ETH.", + "e003-b-label": "Zawsze prawdziwe", + "e003-b-explanation": "Konkursy na ETH nigdy nie są prawdziwe.", + "e003-c-label": "Często wykonywane przez wybitnych członków społeczności", + "e003-c-explanation": "Wybitni członkowie społeczności nie robią konkursów na ETH. Oszuści udają, że znane osoby, takie jak Elon Musk, robią konkursy, aby nadać oszustwu poczucie legalności.", + "e003-d-label": "Najprawdopodobniej oszustwem", + "e003-d-explanation": "Konkursy na ETH są zawsze oszustwami. Zgłaszanie i ignorowanie oszustów jest najlepszym rozwiązaniem.", + "e004-prompt": "Transakcje Ethereum są odwracalne.", + "e004-a-label": "Prawda", + "e004-a-explanation": "Transakcje Ethereum nie mogą zostać odwrócone. Każdy, kto tak mówi, może próbować Cię oszukać.", + "e004-b-label": "Fałsz", + "e004-b-explanation": "Transakcje Ethereum nie mogą zostać odwrócone. Każdy, kto tak mówi, może próbować Cię oszukać.", + "f001-prompt": "NFT są najczęściej definiowane jako:", + "f001-a-label": "unikalne zasoby cyfrowe", + "f001-a-explanation": "NFT reprezentują unikalne zasoby cyfrowe.", + "f001-b-label": "cyfrowe dzieła sztuki", + "f001-b-explanation": "NFT reprezentują unikalne zasoby cyfrowe, są to zazwyczaj cyfrowe dzieła sztuki, ale nie ograniczają się tylko do nich.", + "f001-c-label": "bilety na wyjątkowe wydarzenia", + "f001-c-explanation": "NFT reprezentują unikalne zasoby cyfrowe, może to być system sprzedaży biletów, ale nie ogranicza się do biletów.", + "f001-d-label": "prawnie wiążące umowy", + "f001-d-explanation": "Chociaż umowa prawna mogłaby być reprezentowana jako NFT, NFT nie są wyłączne dla prawnie wiążących umów.", + "f002-prompt": "Dwa NFT reprezentujące tę samą pracę są tym samym.", + "f002-a-label": "Prawda", + "f002-a-explanation": "NFT są niewymienialne. Oznacza to, że nawet jeśli reprezentują kawałek dzieła sztuki cyfrowej, nadal są unikalnie identyfikowane. W tradycyjnej sztuce można by to porównać z oryginałem i wydrukiem.", + "f002-b-label": "Fałsz", + "f002-b-explanation": "NFT są niewymienialne. Oznacza to, że nawet jeśli reprezentują kawałek dzieła sztuki cyfrowej, nadal są unikalnie identyfikowane. W tradycyjnej sztuce można by to porównać z oryginałem i wydrukiem.", + "f003-prompt": "NFT najczęściej reprezentują:", + "f003-a-label": "Hasło do Twojego portfela", + "f003-a-explanation": "Stanowi to zagrożenie dla bezpieczeństwa i ogólnie jest to zły pomysł!", + "f003-b-label": "Własność unikalnego przedmiotu cyfrowego", + "f003-b-explanation": "NFT najczęściej reprezentują własność unikalnego przedmiotu cyfrowego.", + "f003-c-label": "Twoje aktualne saldo ETH", + "f003-c-explanation": "NFT nie mogą w żaden sposób reprezentować twojego salda ETH.", + "f003-d-label": "Wszystkie z powyższych", + "f003-d-explanation": "NFT najczęściej reprezentują własność unikalnego przedmiotu cyfrowego, a nie salda ETH lub hasła do portfela.", + "f004-prompt": "NFT pomogły stworzyć nową:", + "f004-a-label": "gospodarkę kuratorów", + "f004-a-explanation": "NFT pomogły stworzyć nową gospodarkę dla twórców, a nie dla kuratorów.", + "f004-b-label": "gospodarkę emisyjną", + "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-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", + "f005-a-explanation": "Od czasu Połączenia (przejścia na proof-of-stake), każda transakcja ma znikomy wpływ na środowisko.", + "f005-b-label": "Fałsz", + "f005-b-explanation": "Od czasu Połączenia (przejścia na proof-of-stake), każda transakcja ma znikomy wpływ na środowisko.", + "g001-prompt": "Sieci blockchain warstwy 2 są przeznaczone do:", + "g001-a-label": "Skalowania Ethereum", + "g001-a-explanation": "Podstawowym celem pakietów zbiorczych i innych rozwiązań warstwy 2 jest skalowanie Ethereum.", + "g001-b-label": "Dokonywania płatności", + "g001-b-explanation": "Podstawowym celem pakietów zbiorczych i innych rozwiązań warstwy 2 jest skalowanie Ethereum.", + "g001-c-label": "Kupowania NFT", + "g001-c-explanation": "Podstawowym celem pakietów zbiorczych i innych rozwiązań warstwy 2 jest skalowanie Ethereum.", + "g001-d-label": "Decentralizacji Ethereum", + "g001-d-explanation": "Podstawowym celem pakietów zbiorczych i innych rozwiązań warstwy 2 jest skalowanie Ethereum.", + "g002-prompt": "Aby się skalować, większość alternatywnych sieci warstwy 1 przede wszystkim poświęciła:", + "g002-a-label": "Bezpieczeństwo", + "g002-a-explanation": "Większość alternatywnych sieci warstwy 1 poświęca bezpieczeństwo i coś innego w celu skalowania.", + "g002-b-label": "Decentralizacja", + "g002-b-explanation": "Większość alternatywnych sieci warstwy 1 poświęca decentralizację i coś innego w celu skalowania.", + "g002-c-label": "Cenę tokenów", + "g002-c-explanation": "Cena tokenów nie ma żadnego wpływu na zdolność skalowania.", + "g002-d-label": "Bezpieczeństwo i decentralizację", + "g002-d-explanation": "Większość alternatywnych sieci warstwy 1 poświęca bezpieczeństwo i decentralizację w celu skalowania.", + "g003-prompt": "Które z poniższych nie jest uważane za warstwę 2?", + "g003-a-label": "Validium", + "g003-a-explanation": "Validium nie są uważane za rozwiązania warstwy 2, ponieważ nie zapewniają bezpieczeństwa ani dostępności danych z Ethereum", + "g003-b-label": "Łańcuchy boczne", + "g003-b-explanation": "Łańcuchy boczne nie są uważane za rozwiązania warstwy 2, ponieważ nie zapewniają bezpieczeństwa ani dostępności danych z Ethereum.", + "g003-c-label": "Alternatywne blockchainy warstwy 1", + "g003-c-explanation": "Alternatywne blockchainy warstwy 1 nie są uważane za rozwiązania warstwy 2.", + "g003-d-label": "Wszystkie z powyższych", + "g003-d-explanation": "Validium, łańcuchy boczne, oraz alternatywne blockchainy warstwy 1 nie są uważane za rozwiązania warstwy 2, ponieważ nie zapewniają bezpieczeństwa ani dostępności danych z Ethereum.", + "g004-prompt": "Dlaczego Ethereum nie ma „oficjalnej” warstwy 2?", + "g004-a-label": "Główni deweloperzy są zbyt zajęci pracą nad Ethereum", + "g004-a-explanation": "Nie ma planów dotyczących „oficjalnej” warstwy 2 na Ethereum, ponieważ korzystne jest wiele podejść do projektowania rozwiązań warstwy 2.", + "g004-b-label": "Jako warstwa 1, Ethereum osiągnie w końcu masowe skalowanie we własnym zakresie", + "g004-b-explanation": "Nie ma planów dotyczących „oficjalnej” warstwy 2 na Ethereum, ponieważ korzystne jest wiele podejść do projektowania rozwiązań warstwy 2.", + "g004-c-label": "Główni deweloperzy nadal dyskutują między optymistyczny pakietami zbiorczymi a pakietami zbiorczymi ZK", + "g004-c-explanation": "Nie ma planów dotyczących „oficjalnej” warstwy 2 na Ethereum, ponieważ korzystne jest wiele podejść do projektowania rozwiązań warstwy 2.", + "g004-d-label": "Ethereum skorzysta z wielu podejść do projektowania warstwy 2", + "g004-d-explanation": "Nie ma planów dotyczących „oficjalnej” warstwy 2 na Ethereum, ponieważ korzystne jest wiele podejść do projektowania rozwiązań warstwy 2.", + "h001-prompt": "Połączenie przeniosło Ethereum na który mechanizm konsensusu?", + "h001-a-label": "Proof of Work", + "h001-a-explanation": "Proof-of-work to mechanizm konsensusu, który był używany przed Połączeniem.", + "h001-b-label": "Proof-of-stake", + "h001-b-explanation": "Poprawnie! Połączenie przeniosło Ethereum na proof-of-stake.", + "h001-c-label": "Proof-of-authority", + "h001-c-explanation": "Ethereum nie korzysta i nigdy nie korzystało z proof-of-authority w sieci głównej Ethereum.", + "h001-d-label": "Wszystkie z powyższych", + "h001-d-explanation": "Nie byłoby możliwe, aby Ethereum posiadało wszystkie te mechanizmy konsensusu jednocześnie.", + "h002-prompt": "Połączenie zmniejszyło zużycie energii Ethereum o:", + "h002-a-label": "50%", + "h002-a-explanation": "Zużycie energii Ethereum zmniejszyło się o 99,95% po tym, jak Połączenie umożliwiło przejście z proof-of-work na proof-of-stake.", + "h002-b-label": "62,5%", + "h002-b-explanation": "Zużycie energii Ethereum zmniejszyło się o 99,95% po tym, jak Połączenie umożliwiło przejście z proof-of-work na proof-of-stake.", + "h002-c-label": "90%", + "h002-c-explanation": "Zużycie energii Ethereum zmniejszyło się o 99,95% po tym, jak Połączenie umożliwiło przejście z proof-of-work na proof-of-stake.", + "h002-d-label": "99,95%", + "h002-d-explanation": "Zużycie energii Ethereum zmniejszyło się o 99,95% po tym, jak Połączenie umożliwiło przejście z proof-of-work na proof-of-stake.", + "h003-prompt": "Kiedy miało miejsce Połączenie?", + "h003-a-label": "15 września 2022 r.", + "h003-a-explanation": "Połączenie nastąpiło 15 września 2022 r. o godz. 06:42:42 (UTC).", + "h003-b-label": "1 grudnia 2021 r.", + "h003-b-explanation": "Połączenie miało miejsce później. 1 grudnia 2022 r. powstał łańcuch śledzący.", + "h003-c-label": "27 listopada 2013 r.", + "h003-c-explanation": "Połączenie miało miejsce później. 27 listopada 2013 r. opublikowano białą księgę Ethereum.", + "h003-d-label": "31 października 2008 r.", + "h003-d-explanation": "Połączenie miało miejsce później. 31 października 2008 r. opublikowano białą księgę Bitcoina.", + "h004-prompt": "Połączenie oznaczało, że użytkownicy musieli wymienić ETH na ETH2:", + "h004-a-label": "Prawda", + "h004-a-explanation": "ETH nie zmienił się w żadnym momencie przed, w trakcie lub po Połączeniu. Pomysł „ulepszenia” ETH do ETH2 był powszechną taktyką stosowaną przez oszustów do oszukiwania użytkowników.", + "h004-b-label": "Fałsz", + "h004-b-explanation": "ETH nie zmienił się w żadnym momencie przed, w trakcie lub po Połączeniu. Pomysł „ulepszenia” ETH do ETH2 był powszechną taktyką stosowaną przez oszustów do oszukiwania użytkowników.", + "h005-prompt": "Warstwa konsensusu Ethereum była wcześniej znana jako:", + "h005-a-label": "Proof of Work", + "h005-a-explanation": "Proof-of-work to mechanizm konsensusu, który był używany przed Połączeniem.", + "h005-b-label": "Eth2", + "h005-b-explanation": "Zanim została przemianowana na warstwę konsensusu, nosiła nazwę „Eth2”.", + "h005-c-label": "Eth1", + "h005-c-explanation": "Eth1 był oryginalną nazwą nadaną warstwie wykonawczej, a nie warstwie konsensusu.", + "h005-d-label": "Staking", + "h005-d-explanation": "Staking polega na wpłacie ETH do inteligentnego kontraktu, aby pomóc zabezpieczyć łańcuch." +} diff --git a/src/intl/pl/page-community.json b/src/intl/pl/page-community.json new file mode 100644 index 00000000000..d3e73037088 --- /dev/null +++ b/src/intl/pl/page-community.json @@ -0,0 +1,54 @@ +{ + "page-community-card-1-title": "Dołącz do społeczności online", + "page-community-card-1-description": "Znajdź swoje plemię i weź udział w społeczności z innymi entuzjastami Ethereum.", + "page-community-card-2-title": "Wydarzenia", + "page-community-card-2-description": "Znajdź i weź udział w konferencji Ethereum, hackathon lub spotkaniu.", + "page-community-card-3-title": "Wesprzyj projekt", + "page-community-card-3-description": "Dowiedz się, jak zaangażować się, aby na różne sposoby wesprzeć projekt w oparciu o swoje umiejętności i doświadczenie zawodowe.", + "page-community-card-4-title": "Szukaj dotacji", + "page-community-card-4-description": "Granty finansowe są dostępne, aby pomóc Ci w uruchomieniu projektu.", + "page-community-contribute": "Wesprzyj ethereum.org", + "page-community-contribute-button": "Więcej o wsparciu", + "page-community-contribute-description": "Dla wielu ludzi ethereum.org jest ich pierwszym krokiem w kierunku ekosystemu. Jest on aktualizowany i dopasowywany przez tysiące współtwórców open source. Chcesz pomóc? Przeczytaj nasz poradnik na temat wkładu lub podejmij problem na naszym GitHubie.", + "page-community-contribute-secondary-button": "Zobacz na GitHubie", + "page-community-daos-callout-title": "Zdecentralizowane Organizacje Autonomiczne (DAO)", + "page-community-daos-callout-description": "Grupy te wykorzystują technologię Ethereum w celu umocnienia organizacji i współpracy. Na przykład w celu kontrolowania członkostwa, głosowania nad propozycjami lub zarządzania wspólnymi aktywami.", + "page-community-explore-dapps": "Przeglądaj aplikacje", + "page-community-explore-dapps-alt": "Przeglądaj aplikacje", + "page-community-explore-dapps-description": "dApps są aplikacjami zbudowanymi na Ethereum. dApps zakłócają obecne modele biznesowe i tworzą nowe.", + "page-community-explore-dapps-title": "Wypróbuj zdecentralizowane aplikacje (dapps)", + "page-community-explore-grants": "Poznaj granty", + "page-community-find-a-job": "Znajdź pracę", + "page-community-get-eth": "Zdobądź ETH", + "page-community-get-eth-alt": "Weź trochę ETH", + "page-community-get-eth-description": "ETH to natywna kryptowaluta Ethereum. Aby korzystać z aplikacji Ethereum, będziesz potrzebować trochę ETH w portfelu.", + "page-community-get-eth-title": "Weź trochę ETH", + "page-community-get-involved-title": "Jak mogę się zaangażować?", + "page-community-get-involved-description": "Istnieje wiele sposobów zaangażowania się w szybko rozwijającą się społeczność Ethereum; możesz dołączyć do jednej z popularnych społeczności online, wziąć udział w wydarzeniu i dołączyć do grupy konfiguracji spotkań, wnosić wkład w projekt lub uczestniczyć w jednym z wielu forów online na temat Ethereum.", + "page-community-get-involved-image-alt": "Zaangażuj się", + "page-community-hero-alt": "Centrum społeczności Ethereum", + "page-community-hero-header": "Witaj w centrum społeczności Ethereum", + "page-community-hero-subtitle": "Społeczność Ethereum jest domem dla setek tysięcy programistów, technologii, projektantów, użytkowników, HODLerów i entuzjastów.", + "page-community-hero-title": "Dołącz do społeczności", + "page-community-meetuplist-no-meetups": "Nie mamy żadnych spotkań, które pasują do tego wyszukiwania. Wiesz o którymś?", + "page-community-meta-title": "Centrum społeczności", + "page-community-meta-description": "Opis strony startowej społeczności", + "page-community-open-source": "Twórca? Budujący? Otrzymaj wynagrodzenie za swoją pracę.", + "page-community-open-source-description": "Czy budujesz na Ethereum, czy dopiero zamierzasz? Firmy rekrutują tysiące technicznych i nietechnicznych pracowników. Masz własny pomysł? Spróbuj znaleźć dotację, aby uruchomić swój projekt.", + "page-community-open-source-image-alt": "Otrzymaj zapłatę za swoją pracę", + "page-community-please-add-to-page": "Dodaj to do tej strony!", + "page-community-support": "Wsparcie Ethereum", + "page-community-support-alt": "Wsparcie", + "page-community-support-button": "Uzyskaj wsparcie", + "page-community-support-description": "Potrzebujesz wsparcia? Nie ma oficjalnego wsparcia Ethereum, ale setki pomocnych społeczności są dostępne, aby pomóc Ci prosperować na Ethereum.", + "page-community-try-ethereum": "Sam wypróbuj Ethereum", + "page-community-upcoming-events-no-events": "Nie wiemy o żadnych nadchodzących wydarzeniach. Wiesz o jakimś?", + "page-community-upcoming-events-load-more": "Załaduj więcej", + "page-community-why-get-involved-title": "Po co się angażować?", + "page-community-why-get-involved-card-1-title": "Znajdź swoją grupę", + "page-community-why-get-involved-card-1-description": "Dla każdego jest grupa. Znajdź i połącz się z podobnymi umysłymi osobami, aby dyskutować, zastanawiać się i świętować Ethereum razem.", + "page-community-why-get-involved-card-2-title": "Zarabiaj na życie", + "page-community-why-get-involved-card-2-description": "Każdy ma rachunki do opłacenia. Ethereum pozwoli Ci znaleźć sensowną pracę i dobrze zarobić, aby je opłacić.", + "page-community-why-get-involved-card-3-title": "Zmieniaj świat na lepsze", + "page-community-why-get-involved-card-3-description": "Zaangażowanie się w Ethereum pozwoli Ci na aktywne zaangażowanie się w technologię, która ma pozytywny wpływ na miliony ludzi." +} diff --git a/src/intl/pl/page-dapps.json b/src/intl/pl/page-dapps.json index 31f477be1f2..1386f87d14f 100644 --- a/src/intl/pl/page-dapps.json +++ b/src/intl/pl/page-dapps.json @@ -4,12 +4,12 @@ "page-dapps-aave-logo-alt": "Logo Aave", "page-dapps-add-button": "Zasugeruj dapp", "page-dapps-add-title": "Dodaj dapp", - "page-dapps-audius-logo-alt": "Logo Augur", + "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": "Logotyp Balancer", + "page-dapps-balancer-logo-alt": "Logo Balancer", "page-dapps-brave-logo-alt": "Logo Brave", - "page-dapps-category-arts": "Moda i styl", + "page-dapps-category-arts": "Sztuka i moda", "page-dapps-category-browsers": "Przeglądarki", "page-dapps-category-collectibles": "Cyfrowe artykuły kolekcjonerskie", "page-dapps-category-competitive": "Konkurencja", @@ -53,64 +53,66 @@ "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-cryptopunks": "Kupuj, składaj oferty i oferuj punki na sprzedaż — jednen z pierwszych tokenów kolekcjonerskich na Ethereum.", + "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-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 oprogramowaniu open source.", + "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-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-radicle": "Bezpieczna współpraca z kodem peer-to-peer bez pośredników.", - "page-dapps-dapp-description-loopring": "Platforma transakcyjna peer-to-peer została zbudowana dla szybkości.", + "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-nifty-gateway": "Kupuj prace on-chain od najlepszych artystów, sportowców, marek i twórców.", - "page-dapps-dapp-description-oasis": "Handluj, pożyczaj i oszczędzaj z Dai, stabilecoinem Ethereum.", - "page-dapps-dapp-description-opensea": "Kupuj, sprzedaj, odkrywaj i handluj rzeczami o limitowanej edycji.", + "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-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, której nie możesz przegapić.\nNagrody przyznawane są co tydzień.", + "page-dapps-dapp-description-pooltogether": "Loteria, w której nie można przegrać. Nagrody co tydzień.", "page-dapps-dapp-description-index-coop": "Fundusz indeksu kryptowalut, który zapewnia ekspozycję portfela na najlepsze tokeny DeFi.", - "page-dapps-dapp-description-nexus-mutual": "Pokrycie bez towarzystwa ubezpieczeniowego. Zabezpiecz się przed błędami i hakami inteligentnych kontraktów.", - "page-dapps-dapp-description-etherisc": "Zdecentralizowany szablon ubezpieczeń może wykorzystać każdy, aby stworzyć własne ubezpieczenie.", + "page-dapps-dapp-description-nexus-mutual": "Ochrona bez firmy ubezpieczeniowej. Ochrona przed błędami i włamaniami do inteligentnych kontraktów.", + "page-dapps-dapp-description-etherisc": "Zdecentralizowany szablon ubezpieczenia, którego każdy może użyć do stworzenia własnej ochrony ubezpieczeniowej.", "page-dapps-dapp-description-zapper": "Śledź swoje portfolio i używaj asortymentu produktów DeFi z jednego interfejsu.", - "page-dapps-dapp-description-zerion": "Zarządzaj swoim portfolio i po prostu oceniaj każdy składnik DeFi na rynku.", - "page-dapps-dapp-description-rotki": "Narzędzie do śledzenia portfela, analizy, księgowania i raportowania podatkowego, które szanuje Twoją prywatność.", + "page-dapps-dapp-description-zerion": "Zarządzaj swoim portfelem i w łatwy sposób oceniaj wszystkie aktywa DeFi na rynku.", + "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-sablier": "Przesyłaj pieniądze w czasie rzeczywistym.", "page-dapps-dapp-description-superrare": "Kupuj dzieła cyfrowe bezpośrednio od artystów lub na rynkach wtórnych.", - "page-dapps-dapp-description-token-sets": "Automatycznie rebalansujące strategie inwestowania kryptowalut.", - "page-dapps-dapp-description-tornado-cash": "Wyślij anonimowe transakcje na Ethereum.", - "page-dapps-dapp-description-uniswap": "Po prostu zamień tokeny lub udostępnij tokeny za % nagród.", + "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-docklink-dapps": "Wprowadzenie do dapps", "page-dapps-docklink-smart-contracts": "Inteligentne kontrakty", "page-dapps-dark-forest-logo-alt": "Logo Dark Forest", "page-dapps-decentraland-logo-alt": "Logo Decentraland", - "page-dapps-index-coop-logo-alt": "Indeks Coop logo", - "page-dapps-nexus-mutual-logo-alt": "Wzajemne logo Nexus", + "page-dapps-index-coop-logo-alt": "Logo Index Coop", + "page-dapps-nexus-mutual-logo-alt": "Logo Nexus Mutual", "page-dapps-etherisc-logo-alt": "Logo Etherisc", "page-dapps-zapper-logo-alt": "Logo Zapper", "page-dapps-zerion-logo-alt": "Logo Zerion", "page-dapps-rotki-logo-alt": "Logo Rotki", "page-dapps-krystal-logo-alt": "Logo Krystal", + "page-dapps-synthetix-logo-alt": "Logo Synthetix", "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": "Zagraj przeciwko innym, aby zdobyć planety i wypróbować wspaniałe skalowanie/technologię prywatności Ethereum. Może dla tych, którzy znają już Ethereum.", + "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-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": "Nazwa serwisu logo Ethereum", + "page-dapps-ens-logo-alt": "Logo Ethereum Name Service", "page-dapps-explore-dapps-description": "Wiele aplikacji zdecentralizowanych wciąż ma charakter eksperymentalny i testuje możliwości zdecentralizowanych sieci. Ale było kilka udanych wczesnych projektów w kategorii technologii, finansów, gier i przedmiotów kolekcjonerskich.", "page-dapps-explore-dapps-title": "Przeglądaj aplikacje", - "page-dapps-features-1-description": "Po wdrożeniu w Ethereum kod aplikacji zdecentralizowanej nie może zostać usunięty i każdy może korzystać z jej funkcji. Nawet gdyby rozwiązał się zespół twórców aplikacji, rozwiązał się, nadal można by z niej korzystać. Raz umieszczona na Ethereum, pozostaje tam.", + "page-dapps-features-1-description": "Po wdrożeniu w Ethereum kod aplikacji zdecentralizowanej nie może zostać usunięty i każdy może korzystać z jej funkcji. Nawet gdyby zespół twórców aplikacji, rozwiązał się, nadal można by z niej korzystać. Raz umieszczona na Ethereum, pozostaje tam.", "page-dapps-features-1-title": "Brak właścicieli", "page-dapps-features-2-description": "Nie można zablokować możliwości korzystania z aplikacji zdecentralizowanej lub przesyłania transakcji. Na przykład, gdyby Twitter był na Ethereum, nikt nie mógłby zablokować Twojego konta lub powstrzymać Cię od tweetowania.", "page-dapps-features-2-title": "Brak cenzury", @@ -118,7 +120,7 @@ "page-dapps-features-3-title": "System płatności", "page-dapps-features-4-description": "Kod aplikacji zdecentralizowanej jest często otwarty i domyślnie kompatybilny. Zespoły regularnie korzystają z pracy innych zespołów. Jeśli chcesz, aby użytkownicy mogli wymieniać tokeny w Twojej aplikacji, możesz po prostu podłączyć kod innej aplikacji.", "page-dapps-features-4-title": "Plug and play", - "page-dapps-features-5-description": "W przypadku większości aplikacji nie musisz ujawniać swojej rzeczywistej tożsamości. Twoje konto Ethereum jest Twoim loginem i potrzebujesz tylko portfela.", + "page-dapps-features-5-description": "W przypadku większości zdecentralizowanych aplikacji nie musisz ujawniać swojej rzeczywistej tożsamości. Twoje konto Ethereum jest Twoim loginem i potrzebujesz tylko portfela.", "page-dapps-features-5-title": "Jeden anonimowy login", "page-dapps-features-6-description": "Kryptografia zapewnia, że atakujący nie mogą sfałszować transakcji i innych interakcji aplikacji w Twoim imieniu. Autoryzujesz działania aplikacji za pomocą swojego konta Ethereum, zazwyczaj poprzez portfel, więc trzymaj swoje dane uwierzytelniające w bezpiecznym miejscu.", "page-dapps-features-6-title": "Zabezpieczone kryptograficznie", @@ -133,11 +135,11 @@ "page-dapps-finance-benefits-4-description": "Wszystkie produkty finansowe w przestrzeni Ethereum są modułowe i wzajemnie kompatybilne. Nowe konfiguracje tych modułów trafiają na rynek cały czas, zwiększając to, co możesz zrobić ze swoją kryptowalutą.", "page-dapps-finance-benefits-4-title": "Powiązane usługi finansowe", "page-dapps-finance-benefits-description": "Co takiego jest w Ethereum, że umożliwia rozkwit zdecentralizowanych aplikacji finansowych?", - "page-dapps-finance-benefits-title": "zdecentralizowane finanse", + "page-dapps-finance-benefits-title": "zdecentralizowanymi finansami", "page-dapps-finance-button": "Finanse", - "page-dapps-finance-description": "Są to aplikacje, które koncentrują się na budowaniu usług finansowych przy użyciu kryptowalut. Oferują one takie możliwości jak udzielanie kredytów, pożyczek, zarabianie na odsetkach i prywatne płatności -- bez konieczności podawania danych osobowych.", + "page-dapps-finance-description": "Są to aplikacje, które koncentrują się na budowaniu usług finansowych przy użyciu kryptowalut. Oferują one takie możliwości jak udzielanie kredytów, pożyczek, zarabianie na odsetkach i prywatne płatności — bez konieczności podawania danych osobowych.", "page-dapps-finance-title": "Zdecentralizowane finanse", - "page-dapps-foundation-logo-alt": "Logo Fundacji", + "page-dapps-foundation-logo-alt": "Logo Foundation", "page-dapps-gaming-benefits-1-description": "Bez względu na to, czy to wirtualna ziemia czy karty handlowe, Twoje przedmioty są zbywalne na rynkach kolekcjonerskich. Twoje przedmioty w grze mają wartość w świecie rzeczywistym.", "page-dapps-gaming-benefits-1-title": "Przedmioty z gier służą jako tokeny", "page-dapps-gaming-benefits-2-description": "To Ty jesteś właścicielem swoich przedmiotów, a w niektórych przypadkach także postępów, a nie firma odpowiedzialna za grę. Więc nie stracisz nic, jeśli firma odpowiedzialna za grę zostanie zaatakowana, doświadczy awarii serwera lub się rozpadnie.", @@ -145,12 +147,12 @@ "page-dapps-gaming-benefits-3-description": "W ten sam sposób, w jaki płatności Ethereum są dostępne dla każdego do sprawdzenia, gry mogą wykorzystać tę cechę do zapewnienia uczciwości. W teorii wszystko jest weryfikowalne, od liczby trafień krytycznych po wielkość skrzyni wojennej przeciwnika.", "page-dapps-gaming-benefits-3-title": "Zapewniona uczciwość", "page-dapps-gaming-benefits-description": "Co takiego jest w Ethereum, że pozwala na rozkwit zdecentralizowanych gier?", - "page-dapps-gaming-benefits-title": "zdecentralizowane gry", + "page-dapps-gaming-benefits-title": "zdecentralizowanymi grami", "page-dapps-gaming-button": "Gry", "page-dapps-gaming-description": "Są to aplikacje, które skupiają się na tworzeniu wirtualnych światów i walce z innymi graczami przy użyciu przedmiotów kolekcjonerskich, które mają wartość w świecie rzeczywistym.", "page-dapps-gaming-title": "Zdecentralizowane gry", "page-dapps-get-some-eth-description": "Działania aplikacji wiążą się z opłatą transakcyjną", - "page-dapps-get-started-subtitle": "Aby wypróbować aplikację, będziesz potrzebować portfela i trochę ETH. Portfel pozwoli Ci się połączyć lub zalogować. I będziesz potrzebować ETH, aby uregulować wszelkie opłaty transakcyjne.", + "page-dapps-get-started-subtitle": "Aby wypróbować zdecentralizowaną aplikację, będziesz potrzebować portfela i trochę ETH. Portfel pozwoli Ci się połączyć lub zalogować. I będziesz potrzebować ETH, aby uregulować wszelkie opłaty transakcyjne.", "page-dapps-get-started-title": "Rozpocznij", "page-dapps-gitcoin-grants-logo-alt": "Logo Gitcoin Grants", "page-dapps-gitcoin-logo-alt": "Logo Gitcoin", @@ -159,14 +161,14 @@ "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.", - "page-dapps-how-dapps-work-p1": "Dapps mają swój kod backendowy (inteligentne kontrakty) działający w zdecentralizowanej sieci, a nie na scentralizowanym serwerze. Używają one blockchainu Ethereum do przechowywania danych i inteligentnych kontraktów do logiki aplikacji.", - "page-dapps-how-dapps-work-p2": "Inteligentny kontrakt jest jak zestaw reguł, które są dostępne on-chain dla wszystkich i działają dokładnie według tych reguł. Wyobraźcie sobie automat sprzedający: jeśli dostarczycie mu wystarczającą ilość środków i dokonacie właściwego wyboru, dostaniecie to, co chcecie. I tak jak automaty, inteligentne kontrakty mogą przechowywać środki podobnie jak konto Ethereum. Pozwala to kodowi pośredniczyć w umowach i transakcjach.", - "page-dapps-how-dapps-work-p3": "Gdy aplikacje zostaną wdrożone w 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-p1": "Zdecentralizowane aplikacje mają swój kod backendowy (inteligentne kontrakty) działający w zdecentralizowanej sieci, a nie na scentralizowanym serwerze. Używają one blockchainu Ethereum do przechowywania danych i inteligentnych kontraktów do logiki aplikacji.", + "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-learn-callout-button": "Zacznij tworzenie", - "page-dapps-learn-callout-description": "Nasz portal dla deweloperów zawiera dokumenty, narzędzia i struktury, które pomogą Ci zacząć budować aplikacje.", + "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-image-alt": "Ilustracja przedstawiająca dłoń tworzącą symbol ETH z klocków lego.", - "page-dapps-learn-callout-title": "Naucz się tworzyć aplikacje", + "page-dapps-learn-callout-title": "Naucz się tworzyć zdecentralizowane aplikacje", "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?", @@ -191,7 +193,7 @@ "page-dapps-ready-title": "Gotów?", "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 aplikacji", + "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-superrare-logo-alt": "Logo SuperRare", "page-dapps-technology-button": "Technologia", @@ -201,17 +203,21 @@ "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ż aplikacjami. Znajdź jeden na podstawie funkcji, które Ci odpowiadają.", + "page-dapps-wallet-callout-description": "Portfele są również zdecentralizowanymi aplikacjami. Znajdź jeden na podstawie funkcji, które Ci odpowiadają.", "page-dapps-wallet-callout-image-alt": "Ilustracja przedstawiająca robota.", "page-dapps-wallet-callout-title": "Wyświetl portfele", "page-dapps-warning-header": "Zawsze przeprowadzaj własne badania", "page-dapps-warning-message": "Ethereum to nowa technologia i większość aplikacji jest nowa. Przed wpłaceniem dużych ilości pieniędzy upewnij się, że rozumiesz ryzyko.", "page-dapps-what-are-dapps": "Czym są aplikacje zdecentralizowane?", - "page-dapps-more-on-defi-button": "Więcej na temat zdecentralizowanych giełd", + "page-dapps-more-on-defi-button": "Więcej na temat zdecentralizowanych finansów", "page-dapps-more-on-nft-button": "Więcej o tokenizowanych przedmiotach kolekcjonerskich", "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": "Logotyp PWN", + "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-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" diff --git a/src/intl/pl/page-developers-index.json b/src/intl/pl/page-developers-index.json index 26134d92958..205fbe377d0 100644 --- a/src/intl/pl/page-developers-index.json +++ b/src/intl/pl/page-developers-index.json @@ -1,5 +1,5 @@ { - "page-developer-meta-title": "Zasoby Ethereum dla deweloperów", + "page-developer-meta-title": "Zasoby dla deweloperów Ethereum", "page-developers-about": "Więcej informacji o zasobach dla deweloperów", "page-developers-about-desc": "ethereum.org zawiera zasoby, które pomogą Ci tworzyć Ethereum. Znajdziesz tu dokumentację dotyczącą założeń koncepcyjnych, a także podstawowe narzędzia deweloperskie. Możesz też skorzystać z samouczków, aby od razu rozpocząć pracę.", "page-developers-about-desc-2": "Do stworzenia tych zasobów zainspirowała nas Mozilla Developer Network (MDN). Uznaliśmy, że Ethereum także potrzebuje jednego miejsca, z którego można pobrać wszystkie narzędzia i zasoby programistyczne. Podobnie jak u naszych kolegów odpowiedzialnych za Mozillę, wszystkie udostępniane składniki mają licencję open-source i mogą posłużyć Ci jako platforma do wprowadzania ulepszeń i poprawek.", diff --git a/src/intl/pl/page-developers-learning-tools.json b/src/intl/pl/page-developers-learning-tools.json index 7abd9d2e36c..83a5a8cef22 100644 --- a/src/intl/pl/page-developers-learning-tools.json +++ b/src/intl/pl/page-developers-learning-tools.json @@ -30,11 +30,13 @@ "page-learning-tools-meta-title": "Narzędzia edukacyjne dla deweloperów", "page-learning-tools-questbook-description": "Samouczki pozwalające na naukę Web 3.0 we własnym tempie poprzez budowanie", "page-learning-tools-questbook-logo-alt": "Logotyp Questbook", - "page-learning-tools-remix-description": "Rozwijaj inteligentne kontrakty dla Ethereum, wdrażaj je i zarządzaj nimi. Korzystaj z samouczków za pomocą wtyczki Learneth.", + "page-learning-tools-remix-description": "Twórz, wdrażaj i zarządzaj inteligentnymi kontraktami dla Ethereum. Korzystaj z samouczków za pomocą wtyczki LearnEth.", "page-learning-tools-remix-description-2": "Remix, Replit i ChainIDE to nie tylko piaskownice — deweloperzy mogą za ich pomocą pisać, kompilować i wdrażać swoje inteligentne kontrakty.", "page-learning-tools-replit-description": "Dostosowywane środowisko programistyczne dla Ethereum z funkcją hot reloading, sprawdzaniem błędów i najwyższej klasy obsługą sieci testowych.", "page-learning-tools-chainIDE-description": "Rozpocznij swoją podróż do Web3, pisząc inteligentne kontrakty dla Ethereum za pomocą narzędzia ChainIDE. Użyj wbudowanych szablonów, aby się nauczyć i zaoszczędzić czas.", "page-learning-tools-chainIDE-logo-alt": "Logo ChainIDE", + "page-learning-tools-tenderly-description": "Tenderly Sandbox to środowisko do tworzenia prototypów, w którym można pisać, wykonywać i debugować inteligentne kontrakty w przeglądarce używając Solidity i JavaScript.", + "page-learning-tools-tenderly-logo-alt": "Logo Tenderly", "page-learning-tools-replit-logo-alt": "Logo Replit", "page-learning-tools-remix-logo-alt": "Logo Remix", "page-learning-tools-sandbox": "Piaskownice kodu", diff --git a/src/intl/pl/page-developers-local-environment.json b/src/intl/pl/page-developers-local-environment.json index 8ae64332de1..b21cb127751 100644 --- a/src/intl/pl/page-developers-local-environment.json +++ b/src/intl/pl/page-developers-local-environment.json @@ -1,6 +1,8 @@ { "page-local-environment-brownie-desc": "Oparta na języku Python platforma programistyczna i testowa dla inteligentnych kontraktów ukierunkowana na maszynę wirtualną Ethereum.", "page-local-environment-brownie-logo-alt": "Logo Brownie", + "page-local-environment-kurtosis-desc": "Zestaw narzędzi opartych na kontenerach, które ułatwiają konfigurację i aktywację sieci testowej Ethereum z wieloma klientami w celu szybkiego lokalnego rozwoju, tworzenia prototypów i testowania zdecentralizowanych aplikacji.", + "page-local-environment-kurtosis-logo-alt": "Logo Kurtosis", "page-local-environment-epirus-desc": "Platforma do tworzenia, wdrażania i monitorowania aplikacji blockchain w maszynie wirtualnej Java.", "page-local-environment-epirus-logo-alt": "Logo Epirus", "page-local-environment-eth-app-desc": "Twórz za pomocą jednego polecenia aplikacje działające w oparciu o Ethereum. Zawiera szeroką ofertę platform UI i szablonów DeFi do wyboru.", diff --git a/src/intl/pl/page-eth.json b/src/intl/pl/page-eth.json index 9cc6f346eac..74da365bb6e 100644 --- a/src/intl/pl/page-eth.json +++ b/src/intl/pl/page-eth.json @@ -7,7 +7,7 @@ "page-eth-cryptography": "Zabezpieczone kryptograficznie", "page-eth-cryptography-desc": "Pieniądze internetowe mogą być nowe, ale są zabezpieczone sprawdzoną kryptografią. To chroni Twój portfel, ETH i Twoje transakcje. ", "page-eth-currency-for-apps": "To jest waluta aplikacji Ethereum.", - "page-eth-currency-for-future": "Waluta na naszą cyfrową przyszłość", + "page-eth-currency-for-future": "Waluta naszej cyfrowej przyszłości", "page-eth-description": "ETH jest kryptowalutą. Są to rzadkie cyfrowe pieniądze, z których możesz korzystać w Internecie, podobnie jak z bitcoinów. Jeśli jesteś nowy w kryptowalutach, oto jak ETH różni się od tradycyjnych pieniędzy.", "page-eth-earn-interest-link": "Zarabiaj odsetki", "page-eth-flexible-amounts": "Dostępne w postaci kwot elastycznych", @@ -24,7 +24,7 @@ "page-eth-has-value": "Dlaczego ETH ma wartość?", "page-eth-has-value-desc": "ETH jest cenny na różne sposoby dla różnych ludzi.", "page-eth-has-value-desc-2": "Dla użytkowników Ethereum ETH jest wartościowy, ponieważ pozwala na regulowanie opłat za transakcje.", - "page-eth-has-value-desc-3": "Inni postrzegają go jako cyfrowy magazyn wartości, ponieważ tworzenie nowych ETH z czasem zwalnia.", + "page-eth-has-value-desc-3": "Inni postrzegają go jako cyfrowy magazyn wartości, ponieważ tworzenie nowych ETH zwalnia z czasem.", "page-eth-has-value-desc-4": "Ostatnio ETH stał się cenny dla użytkowników aplikacji finansowych na Ethereum. To dlatego, że możesz użyć ETH jako zabezpieczenia kredytów kryptowalutowych lub jako systemu płatności.", "page-eth-has-value-desc-5": "Oczywiście wielu użytkowników postrzega ETH również jako inwestycję podobną do bitcoina lub innych kryptowalut.", "page-eth-how-to-buy": "Jak kupić Ether", @@ -34,11 +34,11 @@ "page-eth-monetary-policy": "Polityka pieniężna Ethereum", "page-eth-more-on-ethereum-link": "Więcej o Ethereum", "page-eth-no-centralized": "Bez scentralizowanej kontroli ", - "page-eth-no-centralized-desc": "ETH jest zdecentralizowany i globalny. Nie ma firmy ani banku, który zdecydowałby się wydrukować więcej ETH lub zmienić warunki użytkowania.", + "page-eth-no-centralized-desc": "ETH jest zdecentralizowany i globalny. Żadna firma ani bank nie może podjąć decyzji o wydrukowaniu większej ilości ETH lub zmianie warunków użytkowania.", "page-eth-non-fungible-tokens-link": "Tokeny niewymienialne", "page-eth-not-only-crypto": "ETH nie jest jedyną kryptowalutą na Ethereum", "page-eth-not-only-crypto-desc": "Każdy może tworzyć nowe rodzaje aktywów i handlować nimi na Ethereum. Są one znane jako „tokeny”. Ludzie tokenizują tradycyjne waluty, swoje nieruchomości, swoją sztukę, a nawet samych siebie!", - "page-eth-not-only-crypto-desc-2": "Ethereum jest domem dla tysięcy tokenów -- niektóre są bardziej użyteczne i cenniejsze niż inne. Deweloperzy stale tworzą nowe tokeny, które otwierają nowe możliwości i nowe rynki.", + "page-eth-not-only-crypto-desc-2": "Ethereum jest domem dla tysięcy tokenów — niektóre są bardziej użyteczne i wartościowe niż inne. Deweloperzy stale tworzą nowe tokeny, które odblokowują nowe możliwości i otwierają nowe rynki.", "page-eth-open": "Otwarte dla każdego", "page-eth-open-desc": "Potrzebujesz tylko połączenia z Internetem i portfela do akceptowania ETH. Nie potrzebujesz dostępu do konta bankowego, aby akceptować płatności. ", "page-eth-p2p-payments": "Płatności peer-to-peer", @@ -51,7 +51,7 @@ "page-eth-stablecoins": "Stablecoiny", "page-eth-stablecoins-desc": "Tokeny, które odzwierciedlają wartość tradycyjnych walut, takich jak dolary. Rozwiązuje to problem zmienności w wielu kryptowalutach.", "page-eth-stablecoins-link": "Zdobądź stablecoiny", - "page-eth-stream-link": "Streamowanie ETH", + "page-eth-stream-link": "Streamuj ETH", "page-eth-tokens-link": "Tokeny Ethereum", "page-eth-trade-link-2": "Zamiana tokenów", "page-eth-underpins": "ETH stanowi podstawę systemu finansowego Ethereum", diff --git a/src/intl/pl/page-get-eth.json b/src/intl/pl/page-get-eth.json index 8d901b54c02..772f893c7ad 100644 --- a/src/intl/pl/page-get-eth.json +++ b/src/intl/pl/page-get-eth.json @@ -2,6 +2,9 @@ "page-get-eth-article-keeping-crypto-safe": "Klucze do zachowania bezpieczeństwa kryptowalut", "page-get-eth-article-protecting-yourself": "Chroń siebie i swoje fundusze", "page-get-eth-article-store-digital-assets": "Jak przechowywać aktywa cyfrowe na Ethereum", + "page-get-eth-article-protecting-yourself-desc": "MyCrypto", + "page-get-eth-article-keeping-crypto-safe-desc": "Coinbase", + "page-get-eth-article-store-digital-assets-desc": "ConsenSys", "page-get-eth-cex": "Giełdy scentralizowane", "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", @@ -26,7 +29,7 @@ "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.", - "page-get-eth-exchanges-success-wallet-link": "portfele", + "page-get-eth-exchanges-success-wallet-link": "portfelach", "page-get-eth-exchanges-success-wallet-paragraph": "Tam, gdzie mieszkasz, możesz kupić ETH bezpośrednio z tych portfeli. Dowiedz się więcej o", "page-get-eth-exchanges-usa": "Stany Zjednoczone (USA)", "page-get-eth-get-wallet-btn": "Zdobądź portfel", diff --git a/src/intl/pl/page-index.json b/src/intl/pl/page-index.json index 112eeb7f02d..b51a9d02ac9 100644 --- a/src/intl/pl/page-index.json +++ b/src/intl/pl/page-index.json @@ -39,7 +39,7 @@ "page-index-developers-button": "Portal deweloperski", "page-index-developers-code-examples": "Przykłady Kodu", "page-index-developers-code-example-title-0": "Twój własny bank", - "page-index-developers-code-example-description-0": "Możesz otworzyć własny, zaprogramowany przez siebie 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-title-2": "Portfel JavaScript Ethereum", @@ -48,7 +48,7 @@ "page-index-developers-code-example-description-3": "Możesz wyobrazić sobie na nowo istniejące usługi jako zdecentralizowane, otwarte aplikacje.", "page-index-network-stats-title": "Ethereum dzisiaj", "page-index-network-stats-subtitle": "Najnowsze statystyki sieciowe", - "page-index-network-stats-total-eth-staked": "Total ETH staked", + "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-total-eth-staked-explainer": "Całkowita ilość ETH, która jest obecnie stakowana i zabezpiecza sieć.", @@ -75,5 +75,15 @@ "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-button": "Więcej na temat niewymienialnych tokenów (NFT)", - "page-index-nft-alt": "Logo ETH wyświetlane za pomocą hologramu." + "page-index-nft-alt": "Logo ETH wyświetlane za pomocą hologramu.", + "community-events-content-heading": "Dołącz do społeczności ethereum.org", + "community-events-content-1": "Dołącz do prawie 40 000 członków na naszym serwerze Discord.", + "community-events-content-2": "Dołącz do naszych comiesięcznych rozmów ze społecznością, aby uzyskać ekscytujące informacje na temat rozwoju Ethereum.org i ważnych wiadomości o ekosystemie. Uzyskaj szansę na zadawanie pytań, dzielenie się pomysłami i przekazywanie opinii — to doskonała okazja, aby stać się częścią kwitnącej społeczności Ethereum.", + "community-events-next-event": "Następne wydarzenie", + "community-events-no-events-planned": "Brak zaplanowanych wydarzeń", + "community-events-upcoming-calls": "Nadchodzące rozmowy", + "community-events-no-upcoming-calls": "Brak nadchodzących rozmów", + "community-events-previous-calls": "Poprzednie rozmowy", + "community-events-there-are-no-past-calls": "Brak ostatnich rozmów", + "community-events-add-to-calendar": "Dodaj do kalendarza" } diff --git a/src/intl/pl/page-languages.json b/src/intl/pl/page-languages.json index 75aed5723fe..bd37d65137d 100644 --- a/src/intl/pl/page-languages.json +++ b/src/intl/pl/page-languages.json @@ -10,7 +10,7 @@ "page-languages-resources-link": "wyselekcjonowaną listę zasobów Ethereum w wielu językach", "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-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", "language-ar": "Arabski", "language-az": "Azerski", @@ -23,7 +23,7 @@ "language-el": "Grecki", "language-en": "Angielski", "language-es": "Hiszpański", - "language-fa": "Farsi", + "language-fa": "Perski", "language-fi": "Fiński", "language-fr": "Francuski", "language-gl": "Galicyjski", @@ -41,7 +41,7 @@ "language-km": "Khmerski", "language-ko": "Koreański", "language-lt": "Litewski", - "language-ml": "Malajski", + "language-ml": "Malajalam", "language-mr": "Marathi", "language-ms": "Malajski", "language-nb": "Norweski", diff --git a/src/intl/pl/page-layer-2.json b/src/intl/pl/page-layer-2.json index 17cfd764951..5bf0c4bd08c 100644 --- a/src/intl/pl/page-layer-2.json +++ b/src/intl/pl/page-layer-2.json @@ -4,8 +4,8 @@ "layer-2-optimism-note": "Dowód błędu w rozbudowie", "layer-2-hero-title": "Warstwa 2", "layer-2-hero-header": "Ethereum dla wszystkich", - "layer-2-hero-subtitle": "Skalowanie Ethereum bez naruszania bezpieczeństwa i decentralizacji.", - "layer-2-hero-alt-text": "Obraz transakcji jest zwijany w warstwie drugiej, a następnie dodawany do Głównej sieci Ethereum.", + "layer-2-hero-subtitle": "Skalowanie Ethereum w celu masowej adopcji.", + "layer-2-hero-alt-text": "Ilustracja transakcji, która jest zwijana w warstwie 2, a następnie dodawana do głównej sieci Ethereum", "layer-2-hero-button-1": "Czym jest warstwa 2?", "layer-2-hero-button-2": "Używanie warstwy 2", "layer-2-hero-button-3": "Przejdź do warstwy 2", @@ -14,9 +14,9 @@ "layer-2-statsbox-3": "Zmiana warstwy 2 TVL (30 dni)", "layer-2-what-is-layer-2-title": "Czym jest warstwa 2?", "layer-2-what-is-layer-2-1": "Warstwa 2 (L2) to zbiorczy termin opisujący konkretny zestaw rozwiązań skalowania Ethereum. Warstwa 2 to oddzielny łańcuch bloków, który rozszerza Ethereum i korzysta z gwarancji bezpieczeństwa Ethereum.", - "layer-2-what-is-layer-2-2": "Teraz wejdźmy w to nieco głębiej. Aby to zrobić, musimy wyjaśnić, co to jest warstwa 1 (L1).", + "layer-2-what-is-layer-2-2": "Teraz przyjrzyjmy się temu nieco bliżej. By to zrobić, musimy najpierw wyjaśnić, czym jest warstwa 1 (L1).", "layer-2-what-is-layer-1-title": "Czym jest warstwa 1?", - "layer-2-what-is-layer-1-1": "Warstwa 1 jest bazowym łańcuchem bloków. Ethereum i Bitcoin to łańcuchy warstwy 1, ponieważ są one fundamentem bazowym, na którym zbudowane są sieci warstwy 2. Przykłady projektów warstwy 2 to „rollupy” (pakiety zbiorcze) na Ethereum i Lightning Network, zbudowane na bazie Bitcoin. Wszystkie transakcje użytkownika na tych drugich warstwach mogą ostatecznie zostać związne z powrotem z łańcuchem warstwy 1.", + "layer-2-what-is-layer-1-1": "Warstwa 1 to podstawowy blockchain. Ethereum i Bitcoin są blockchainami warstwy 1, ponieważ stanowią podstawę, na której zbudowane są różne sieci warstwy 2. Przykłady projektów warstwy 2 obejmują „pakiety zbiorcze” na Ethereum i Lightning Network na Bitcoinie. Cała aktywność transakcyjna użytkowników w tych projektach warstwy 2 może ostatecznie wrócić do blockchainu warstwy 1.", "layer-2-what-is-layer-1-2": "Ethereum działa również jako warstwa dostępności danych dla warstwy 2. Projekty warstwy 2 będą publikować swoje transakcje na Ethereum, opierając się na Ethereum w celu zapewnienia dostępności danych. Dane te mogą być wykorzystywane do uzyskania stanu warstwy 2 lub do kwestionowania transakcji na poziomie 2.", "layer-2-what-is-layer-1-list-title": "Ethereum jako warstwa 1 obejmuje:", "layer-2-what-is-layer-1-list-1": "Sieć operatorów węzłów do zabezpieczenia i weryfikacji sieci", @@ -27,10 +27,10 @@ "layer-2-what-is-layer-1-list-link-2": "Dowiedz się, czym jest Ethereum.", "layer-2-why-do-we-need-layer-2-title": "Dlaczego potrzebujemy warstwy 2?", "layer-2-why-do-we-need-layer-2-1": "Pożądane jest, aby łancuch bloków był: zdecentralizowany, bezpieczny i skalowalny. W trylemacie łańcucha bloków stwierdza się, że prosta architektura łańcucha bloków może osiągnąć tylko dwie z trzech tych wartości. Potrzebujesz bezpiecznego i zdecentralizowanego łańcucha bloków? Musisz poświęcić skalowalność.", - "layer-2-why-do-we-need-layer-2-2": "Ethereum osiągnęło aktualną przepustowość sieci na poziomie ponad miliona transakcji dziennie i duże zapotrzebowanie na każdą z tych transakcji. Sukces Ethereum i popyt na jego wykorzystanie spowodowały znaczny wzrost cen gazu. W związku z tym wzrosło również zapotrzebowanie na rozwiązania w zakresie skalowalności. W tym właśnie miejscu wkraczają sieci warstw 2.", + "layer-2-why-do-we-need-layer-2-2": "Ethereum przetwarza obecnie ponad 1 milion transakcji dziennie. Zapotrzebowanie na korzystanie z Ethereum może powodować wysokie ceny opłat za transakcje. W tym miejscu wkraczają sieci warstwy 2.", "layer-2-why-do-we-need-layer-2-scalability": "Skalowalność", - "layer-2-why-do-we-need-layer-2-scalability-1": "Głównym celem skalowalności jest zwiększenie szybkości transakcji (szybsza nieodwołalność) i przepustowości transakcji (większa liczba transakcji na sekundę) bez poświęcania decentralizacji lub bezpieczeństwa.", - "layer-2-why-do-we-need-layer-2-scalability-2": "Społeczność Ethereum zajęła zdecydowane stanowisko, że nie odrzuci decentralizacji ani bezpieczeństwa w celu skalowania. Do czasu shardingu sieć główna Ethereum (warstwa 1) jest w stanie przetworzyć tylko około 15 transakcji na sekundę. Gdy popyt na korzystanie z Ethereum jest wysoki, sieć staje się przeciążona, co zwiększa opłaty transakcyjne i wypiera cenami użytkowników, których nie stać na te opłaty. To właśnie tutaj wkracza warstwa 2, która umożliwia skalowanie Ethereum.", + "layer-2-why-do-we-need-layer-2-scalability-1": "Głównym celem warstwy 2 jest zwiększenie przepustowości transakcji (większa liczba transakcji na sekundę) bez poświęcania decentralizacji lub bezpieczeństwa.", + "layer-2-why-do-we-need-layer-2-scalability-2": "Sieć główna Ethereum (warstwa 1) jest w stanie przetwarzać jedynie około 15 transakcji na sekundę. Gdy zapotrzebowanie na Ethereum jest wysokie, sieć staje się przeciążona, co zwiększa opłaty za transakcje i dyskwalifikuje użytkowników, którzy nie mogą sobie pozwolić na takie opłaty. Warstwa 2 to rozwiązania, które zmniejszają te opłaty poprzez przetwarzanie transakcji poza blockchainem warstwy 1.", "layer-2-why-do-we-need-layer-2-scalability-3": "Więcej o wizji Ethereum", "layer-2-benefits-of-layer-2-title": "Korzyści wynikające z warstwy 2", "layer-2-lower-fees-title": "Niższe opłaty", @@ -40,24 +40,24 @@ "layer-2-expand-use-cases-title": "Rozwiń przypadki użycia", "layer-2-expand-use-cases-description": "W związku z wyższymi transakcjami na sekundę, niższymi opłatami i nowymi technologiami projekty rozszerzą się na nowe aplikacje o lepszym doświadczeniu użytkowników.", "layer-2-how-does-layer-2-work-title": "Jak działa Warstwa 2?", - "layer-2-how-does-layer-2-work-1": "Jak już wspomnialiśmy, warstwa 2 jest zbiorowym terminem określającym rozwiązania do skalowania Ethereum, które obsługują transakcje z warstwy 1 Ethereum przy jednoczesnym korzystaniu z solidnego zdecentralizowanego bezpieczeństwa warstwy 1 Ethereum. Warstwa 2 to oddzielny łańcuch bloków, który rozszerza Ethereum. Jak to działa?", - "layer-2-how-does-layer-2-work-2": "Warstwa 2 blockchain regularnie komunikuje się z Ethereum (poprzez przesyłanie pakietów transakcji) w celu zapewnienia podobnych gwarancji bezpieczeństwa i decentralizacji. Wszystko to nie wymaga żadnych zmian w protokole warstwy 1 (Ethereum). Pozwala to warstwie 1 na obsługę bezpieczeństwa, dostępności danych i decentralizacji, podczas gdy warstwa 2 obsługuje skalowanie. Warstwa 2 odwraca obciążenie transakcyjne od warstwy 1 i przesyła sfinalizowane dowody z powrotem do warstwy 1. Usuwając obciążenie transakcji z warstwy 1, warstwa bazowa staje się mniej zatłoczona, a wszystko staje się bardziej skalowalne.", + "layer-2-how-does-layer-2-work-1": "Jak już wspomnieliśmy wyżej, warstwa 2 jest zbiorowym terminem określającym rozwiązania do skalowania Ethereum, które obsługują transakcje z warstwy 1 Ethereum przy jednoczesnym korzystaniu z solidnego zdecentralizowanego bezpieczeństwa warstwy 1 Ethereum. Warstwa 2 to oddzielny blockchain, który rozszerza Ethereum. Jak to działa?", + "layer-2-how-does-layer-2-work-2": "Istnieje kilka różnych typów warstwy 2, z których każdy ma swoje własne kompromisy i modele bezpieczeństwa. Warstwa 2 zdejmuje obciążenia transakcyjne z warstwy 1, dzięki czemu staje się ona mniej przeciążona i wszystko staje się bardziej skalowalne.", "layer-2-rollups-title": "Pakiet zbiorczy", - "layer-2-rollups-1": "Pakiety zbiorcze są obecnie preferowanym rozwiązaniem warstwy 2 do skalowania Ethereum. Korzystając z pakietów zbiorczych, użytkownicy mogą obniżyć opłaty za gaz nawet 100-krotnie w porównaniu z warstwą 1.", - "layer-2-rollups-2": "Pakiet Rollups (lub „pakiet zbiorczy”) łączy setki transakcji w pojedynczą transakcję w warstwie 1. To rozprowadza opłaty transakcyjne L1 dla wszystkich w pakiecie zbiorczym, co sprawia, że jest tańsze dla każdego użytkownika. Transakcje w przypadku pakietów zbiorczych są realizowane poza warstwą 1, ale dane transakcji są publikowane w warstwie 1. Publikując dane transakcji w warstwie 1, pakiet zbiorczy przywraca bezpieczeństwo Ethereum. Istnieją dwa różne podejścia do pakietów zbiorczych: optymistyczne i zerowe – różnią się one przede wszystkim od tego, w jaki sposób dane dotyczące transakcji są zamieszczane w L1.", + "layer-2-rollups-1": "Pakiety zbiorcze łączą (lub „zwijają”) setki transakcji w jedną transakcję w warstwie 1. Powoduje to rozłożenie opłat transakcyjnych warstwy 1 na wszystkich użytkowników w pakiecie zbiorczym, co sprawia, że jest on tańszy dla każdego użytkownika.", + "layer-2-rollups-2": "Transakcje pakietów zbiorczych są wykonywane poza warstwą 1, ale dane transakcji są przesyłane do warstwy 1. Przesyłając dane transakcji do warstwy 1, pakiety zbiorcze dziedziczą bezpieczeństwo Ethereum. Dzieje się tak, ponieważ po przesłaniu danych do warstwy 1, cofnięcie transakcji pakietu zbiorczego wymaga cofnięcia Ethereum. Istnieją dwa różne podejścia do pakietów zbiorczych: optymistyczne i o wiedzy zerowej (zero-knowledge) — różnią się one głównie sposobem przesyłania danych transakcji do warstwy 1.", "layer-2-optimistic-rollups-title": "Optymistyczne pakiety zbiorcze", - "layer-2-optimistic-rollups-description": "Optymistyczne pakiety zbiorcze są „optymistyczne” w tym sensie, że transakcje są uznawane za ważne, ale w razie potrzeby mogą zostać zakwestionowane. Jeżeli podejrzewa się nieprawidłową transakcję, uruchamia się dowód błędu w celu sprawdzenia, czy miało to miejsce.", + "layer-2-optimistic-rollups-description": "Optymistyczne pakiety zbiorcze są „optymistyczne” w tym sensie, że zakłada się, że transakcje są ważne, ale w razie potrzeby można je zakwestionować. Jeśli podejrzewa się nieprawidłową transakcję, uruchamiany jest dowód błędu, aby sprawdzić, czy miała ona miejsce.", "layer-2-optimistic-rollups-childSentance": "Więcej o optymistycznych pakietach zbiorczych", "layer-2-zk-rollups-title": "Pakiety zbiorcze o wiedzy zerowej", "layer-2-zk-rollups-description": "Pakiety zbiorcze o wiedzy zerowej wykorzystują dowody ważności, w których transakcje są obliczane poza łańcuchem, a następnie skompresowane dane są dostarczane do Ethereum Mainnet jako dowód ich ważności.", "layer-2-zk-rollups-childSentance": "Więcej o pakietach zbiorczych o wiedzy zerowej", "layer-2-dyor-title": "Wykonaj własne badania: ryzyko warstwy 2", - "layer-2-dyor-1": "Ponieważ łańcuchy warstwy 2 dziedziczą zabezpieczenie od Ethereum, w idealnym świecie są one tak samo bezpieczne jak warstwa 1 Ethereum. Wiele projektów jest jednak nadal młodych i nieco eksperymentalnych. Po latach badań i rozwoju w roku 2021 wypuszczono wiele technologii L2, które skalują Ethereum. Wiele projektów nadal ma dodatkowe założenia dotyczące zaufania, ponieważ działają na rzecz zdecentralizowania swoich sieci. Zawsze wykonuj własne badania, aby zdecydować, czy poziom ryzyka jest dla ciebie akceptowalny.", + "layer-2-dyor-1": "Wiele projektów warstwy 2 jest stosunkowo nowych i nadal wymaga od użytkowników zaufania do uczciwości niektórych operatorów, którzy pracują nad decentralizacją swoich sieci. Zawsze przeprowadzaj własne badania, aby zdecydować, czy czujesz się komfortowo z jakimkolwiek związanym ryzykiem.", "layer-2-dyor-2": "Po więcej informacji na temat technologii, zagrożeń i założeń dotyczących zaufania do warstwy 2 odsyłamy do L2BEAT, która zapewnia kompleksowe ramy oceny ryzyka dla każdego projektu.", "layer-2-dyor-3": "Przejdź do L2BEAT", "layer-2-use-layer-2-title": "Używanie warstwy drugiej", "layer-2-use-layer-2-1": "Teraz, kiedy rozumiesz dlaczego istnieje warstwa 2 i jak to działa, wciągnijmy cię i zacznijmy!", - "layer-2-contract-accounts": "UWAGA: podczas łączenia i korzystania z warstwy 2 należy pamiętać, że będziesz kontrolować adres swojego konta EOA (konta, na którym tylko jeden klucz prywatny kontroluje konto), tak jak w Ethereum Mainnet. Jeśli jednak korzystasz z konta kontraktowego, na przykład SafelubAgent, nie będziesz mieć kontroli nad tym adresem w warstwie 2, dopóki nie przeniesiesz swojego konta kontraktowego na ten adres w warstwie 2. Jeśli łączysz lub wysyłasz środki na konto kontraktowe, a nie kontrolujesz tego adresu dla konta umowy, Twoje środki mogą zostać utracone.", + "layer-2-contract-accounts": "Jeśli korzystasz z portfela inteligentnego kontraktu, takiego jak Safe lub Argent, nie będziesz mieć kontroli nad tym adresem w warstwie 2, dopóki nie przeniesiesz swojego konta kontraktu na ten adres w warstwie 2. Klasyczne konta z frazą odzyskiwania będą automatycznie właścicielem tego samego konta we wszystkich sieciach warstwy 2.", "layer-2-use-layer-2-generalized-title": "Uogólniona warstwa 2s", "layer-2-use-layer-2-generalized-1": "Uogólniona warstwa 2 zachowuje się jak Ethereum — ale jest tańsza. Wszystko, co możesz zrobić w warstwie 1 Ethereum, możesz również zrobić w warstwie 2. Wiele aplikacji rozpoczęło już migrację do tych sieci lub pominęło razem Mainnet, aby wdrożyć go prosto w warstwie 2.", "layer-2-use-layer-2-application-specific-title": "Warstwa 2s specyficzna dla aplikacji", @@ -67,8 +67,7 @@ "layer-2-sidechains-2": "Zarówno skala, jak i warstwa 2s oferują niższe opłaty transakcyjne i większą przepustowość transakcji, ale mają różne założenia dotyczące zaufania.", "layer-2-more-on-sidechains": "Więcej informacji na temat łańcuchów bocznych", "layer-2-more-on-validiums": "Więcej informacji o rozwiązaniach validium", - "layer-2-sidechains-4": "Niektóre łańcuchy bloków warstwy 1 mają wyższą przepustowość i niższe opłaty transakcyjne niż Ethereum. Te alternatywne warstwy 1 musiały poświęcić bezpieczeństwo lub decentralizację, aby osiągnąć wyższą liczbę transakcji na sekundę i niższe opłaty transakcyjne.", - "layer-2-sidechains-5": "Ekosystem Ethereum jest mocno zorientowany, że skalowanie warstwy 2 jest jedynym sposobem rozwiązania trylematu skalowalności przy jednoczesnym zachowaniu zdecentralizowania i bezpieczeństwa.", + "layer-2-sidechains-4": "Niektóre blockchainy warstwy 1 odnotowują większą przepustowość i niższe opłaty transakcyjne niż Ethereum, ale najczęściej z kompromisami w innych miejscach, na przykład większymi wymaganiami sprzętowymi dla uruchomienia węzłów.", "layer-2-onboard-title": "Jak dostać się na warstwę 2?", "layer-2-onboard-1": "Istnieją dwa podstawowe sposoby na przeniesienie swoich aktywów na warstwę 2: mostku środki z Ethereum za pomocą inteligentnego kontraktu lub wypłacaj środki na giełdzie bezpośrednio na sieć warstwy 2.", "layer-2-onboard-wallet-title": "Fundusze w portfelu?", @@ -113,11 +112,11 @@ "layer-2-further-reading-title": "Dalsza lektura", "a-rollup-centric-ethereum-roadmap": "Plan działania ethereum skoncentrowany na pakietach zbiorczych", "an-incomplete-guide-to-rollups": "Niekompletny przewodnik po pakietach zbiorczych", - "polygon-sidechain-vs-ethereum-rollups": "Łańcuch boczny Polygon a pakiety zbiorcze: podejścia do skalowania warstwy 2 | Vitalik Buterin i Lex Fridman", + "polygon-sidechain-vs-ethereum-rollups": "Łańcuch boczny Polygon kontra pakiety zbiorcze Ethereum: podejścia do skalowania warstwy 2| Vitalik Buterin i Lex Fridman", "rollups-the-ultimate-ethereum-scaling-strategy": "PAKIETY ZBIORCZE – najlepsza strategia skalowania Ethereum? Arbitrum i Optymalizacja", "scaling-layer-1-with-shard-chains": "Warstwa skalowania 1 z łańcuchami odłamkowymi", "understanding-rollup-economics-from-first-principals": "Zrozumienie ekonomiki pakietów zbiorczych od pierwszych dyrektorów", - "arbitrum-description": "Arbitrum jest optymistycznym pakietem zbiorczym, którego celem jest stworzenie wrażenia interakcji z Ethereum, ale z transakcjami kosztującymi ułamek tego, co robią na L1.", + "arbitrum-description": "Arbitrum One jest optymistycznym pakietem zbiorczym, którego celem jest stworzenie wrażenia interakcji takich samych jak z Ethereum, ale z transakcjami kosztującymi ułamek tego, co w warstwie 1.", "optimism-description": "Optymizm jest szybkim, prostym i zabezpieczonym optymistycznym pakietem zbiorczym równoważnym z EVM. Skaluje technologię Ethereum, a jednocześnie skaluje swoje wartości poprzez wsteczne finansowanie dóbr publicznych.", "boba-description": "Boba jest optymistycznym pakietem zbiorczym, który jest rozwiązaniem skalującym mającym na celu obniżenie opłat gazowych, zwiększenie przepustowości transakcji oraz zwiększenie możliwości inteligentnych kontraktów.", "loopring-description": "Loopring zkRollup L2 ma na celu oferowanie takich samych gwarancji bezpieczeństwa jak Ethereum mainnet, przy dużym wzroście skalowalności: wydajność wzrosła o 1000x, a koszty zmniejszyły się do zaledwie 0,1% L1.", diff --git a/src/intl/pl/page-learn.json b/src/intl/pl/page-learn.json index de276e1e2d7..1e3c4fb6e21 100644 --- a/src/intl/pl/page-learn.json +++ b/src/intl/pl/page-learn.json @@ -1,4 +1,123 @@ { - "additional-reading-how-to-create-an-ethereum-account": "Jak „zarejestrować” konto Ethereum", - "additional-reading-how-to-use-a-wallet": "Jak używać portfela" + "toc-learn-hub": "Centrum edukacyjne", + "toc-what-is-crypto-ethereum": "Czym jest Ethereum?", + "toc-how-do-i-use-ethereum": "Jak korzystać z Ethereum?", + "toc-what-is-ethereum-used-for": "Do czego służy Ethereum?", + "toc-strengthen-the-ethereum-network": "Wzmocnić sieć Ethereum", + "toc-learn-about-the-ethereum-protocol": "Dowiedz się więcej o protokole Ethereum", + "toc-learn-about-the-ethereum-community": "Dowiedz się więcej o społeczności Ethereum", + "toc-books-and-podcasts": "Książki i podcasty", + "hero-header": "Ucz się o Ethereum", + "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-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.", + "what-is-eth-card-title": "Czym jest ETH?", + "what-is-eth-description": "Ether (ETH) jest walutą zasilającą sieć i aplikacje Ethereum.", + "what-is-web3-card-title": "Co to jest Web3?", + "what-is-web3-card-description": "Web3 to model internetu, w którym ceni się własność aktywów i tożsamości.", + "additional-reading-more-on-ethereum-basics": "Więcej o podstawach Ethereum", + "guides-hub-desc": "Przewodniki: instrukcje krok po kroku dotyczące korzystania z Ethereum", + "quiz-hub-desc": "Centrum quizów: sprawdź swoją wiedzę", + "additional-reading-what-are-smart-contracts": "Czym są inteligentne kontrakty?", + "additional-reading-what-is-web3": "Czym jest web3?", + "additional-reading-ethereum-in-thirty-minutes": "Ethereum w 30 minut według Vitalika Buterina", + "additional-reading-get-eth": "Dowiedz się jak zdobyć ETH", + "how-do-i-use-ethereum-1": "Korzystanie z Ethereum może oznaczać wiele rzeczy dla wielu osób. Być może chcesz zalogować się do aplikacji, potwierdzić swoją tożsamość online lub przelać trochę ETH. Pierwszą rzeczą, której będziesz potrzebować, jest konto. Najłatwiejszym sposobem utworzenia konta i uzyskania do niego dostępu jest użycie oprogramowania zwanego portfelem.", + "what-is-a-wallet-card-title": "Czym jest portfel?", + "what-is-a-wallet-card-description": "Portfele cyfrowe są jak prawdziwe portfele; przechowują to, czego potrzebujesz, aby potwierdzić swoją tożsamość i uzyskać dostęp do miejsc, które cenisz.", + "what-is-a-wallet-card-alt": "Ilustracja przedstawiająca robota.", + "find-a-wallet-card-title": "Znajdź portfel", + "find-a-wallet-card-description": "Przeglądaj portfele w oparciu o funkcje, które są dla Ciebie ważne.", + "find-a-wallet-button": "Lista portfeli", + "crypto-security-basics-card-title": "Podstawy bezpieczeństwa", + "crypto-security-basics-card-description": "Dowiedz się, jak rozpoznać oszustwa i jak uniknąć najczęstszych sztuczek.", + "crypto-security-basics-card-button": "Bądź bezpieczny", + "things-to-consider-banner-title": "Rzeczy, które należy wziąć pod uwagę podczas korzystania z Ethereum", + "things-to-consider-banner-1": "Każda transakcja na Ethereum wymaga opłaty w postaci ETH, nawet jeśli musisz przenieść różne tokeny zbudowane na Ethereum, takie jak stablecoiny USDC lub DAI.", + "things-to-consider-banner-2": "Opłaty mogą być wysokie w zależności od liczby osób próbujących korzystać z Ethereum, dlatego zalecamy korzystanie z", + "things-to-consider-banner-layer-2": "warstwy drugiej", + "additional-reading-more-on-using-ethereum": "Więcej o korzystaniu z Ethereum", + "additional-reading-how-to-create-an-ethereum-account": "Jak stworzyć konto Ethereum", + "additional-reading-how-to-use-a-wallet": "Jak używać portfela", + "additional-reading-layer-2": "Warstwa 2: obniżenie opłat transakcyjnych", + "what-is-ethereum-used-for-1": "Ethereum doprowadziło do stworzenia nowych produktów i usług, które mogą poprawić różne obszary naszego życia. Wciąż jesteśmy na wczesnym etapie, ale jest wiele powodów do ekscytacji.", + "defi-card-title": "Zdecentralizowane finanse (DeFi)", + "defi-card-description": "Poznaj alternatywny system finansowy, który jest zbudowany bez banków i jest otwarty dla każdego.", + "defi-card-button": "What is DeFi?", + "stablecoins-card-title": "Stablecoiny", + "stablecoins-card-description": "Kryptowaluty powiązane z wartością waluty, towaru lub innego instrumentu finansowego.", + "stablecoins-card-button": "Czym są stablecoiny?", + "nft-card-title": "Tokeny niewymienialne (NFT)", + "nft-card-description": "Reprezentowanie własności unikalnych przedmiotów, od dzieł sztuki po tytuły własności i bilety na koncerty.", + "nft-card-button": "Czym są NFT?", + "dao-card-title": "Zdecentralizowane autonomiczne organizacje (DAO)", + "dao-card-description": "Umożliwienie nowych sposobów koordynowania pracy bez szefa.", + "dao-card-button": "Czym są DAO?", + "dapp-card-title": "Aplikacje zdecentralizowane (dapps)", + "dapp-card-description": "Stworzenie cyfrowej gospodarki usług peer-to-peer.", + "dapp-card-button": "Przeglądaj zdecentralizowane aplikacje", + "emerging-use-cases-title": "Pojawiające się przypadki użycia", + "emerging-use-cases-description": "Istnieją również inne znaczące branże, które są tworzone lub ulepszane za pomocą Ethereum:", + "play-to-earn": "Gry Play-to-earn (P2E)", + "fundraising-through-quadratic-funding": "Zbieranie funduszy za pomocą finansowanie kwadratowego", + "supply-chain-management": "Zarządzanie łańcuchem dostaw", + "more-on-ethereum-use-cases": "Więcej na temat przypadków użycia Ethereum", + "more-on-ethereum-use-cases-link": "Blockchain w krajach rozwijających się", + "strengthening-the-ethereum-network-description": "Możesz pomóc zabezpieczyć Ethereum i jednocześnie zdobywać nagrody, stakując swoje ETH. Istnieją różne opcje stakowania w zależności od wiedzy technicznej i ilości posiadanego ETH.", + "staking-ethereum-card-title": "Stakowanie Ethereum", + "staking-ethereum-card-description": "Dowiedz się, jak rozpocząć stakowanie ETH.", + "staking-ethereum-card-button": "Rozpocznij staking", + "run-a-node-card-title": "Dodaj węzeł", + "run-a-node-card-description": "Odgrywaj kluczową rolę w sieci Ethereum, uruchamiając węzeł.", + "learn-about-ethereum-protocol-description": "Dla użytkowników najbardziej zainteresowanych techniczną częścią sieci Ethereum.", + "energy-consumption-card-title": "Zużycie energii", + "energy-consumption-card-description": "Ile energii zużywa Ethereum?", + "energy-consumption-card-button": "Czy Ethereum jest ekologiczne?", + "ethereum-upgrades-card-title": "Mapa drogowa Ethereum", + "ethereum-upgrades-card-description": "Plan działania Ethereum czyni go bardziej skalowalnym, bezpiecznym i zrównoważonym.", + "ethereum-upgrades-card-button": "Poznaj plan działania", + "ethereum-whitepaper-card-title": "Dokumentacja Ethereum", + "ethereum-whitepaper-card-description": "Oryginalna propozycja Ethereum napisana przez Vitalika Buterina w 2014 r.", + "ethereum-whitepaper-card-button": "Przeczytaj białą księgę", + "more-on-ethereum-protocol-title": "Więcej o protokole Ethereum", + "more-on-ethereum-protocol-ethereum-for-developers": "Ethereum dla deweloperów", + "more-on-ethereum-protocol-consensus": "Mechanizm konsensusu Ethereum oparty na proof-of-stake", + "more-on-ethereum-protocol-evm": "Wbudowany komputer Ethereum (EVM)", + "more-on-ethereum-protocol-nodes-and-clients": "Węzły i klienci Ethereum", + "ethereum-community-description": "Sukces Ethereum zawdzięczamy niezwykle oddanej społeczności. Tysiące inspirujących i zmotywowanych ludzi pomaga rozwijać wizję Ethereum, jednocześnie zapewniając bezpieczeństwo sieci poprzez stakowanie i zarządzanie. Dołącz do nas!", + "community-hub-card-title": "Centrum społeczności", + "community-hub-card-description": "Nasza społeczność obejmuje ludzi ze wszystkich środowisk.", + "community-hub-card-alt": "Ilustracja grupy konstruktorów pracujących razem.", + "community-hub-card-button": "Dowiedz się więcej", + "get-involved-card-title": "Jak mogę się zaangażować?", + "get-involved-card-description": "Ty (tak, Ty!) możesz przyczynić się dla społeczności Ethereum.", + "online-communities-card-title": "Społeczności internetowe", + "online-communities-card-description": "Społeczności internetowe zapewniają doskonałą okazję do zadawania bardziej szczegółowych pytań lub angażowania się.", + "online-communities-card-button": "Przeglądaj społeczności", + "books-about-ethereum": "Książki o Ethereum", + "proof-of-stake-title": "Proof of Stake", + "proof-of-stake-description": "13 września 2022 r. — Vitalik Buterin, Nathan Schneider", + "cryptopians-title": "Kryptopianie (The Cryptopians)", + "cryptopians-description": "22 lutego 2022 r. — Laura Shin", + "out-of-the-ether-title": "Poza Etherem (Out of the Ether)", + "out-of-the-ether-description": "29 września 2020 r. — Matthew Leising", + "the-infinite-machine-title": "Nieskończona maszyna (The Infinite Machine)", + "the-infinite-machine-description": "14 lipca 2020 r. — Camila Russo", + "mastering-ethereum-title": "Opanowanie Ethereum (Mastering Ethereum)", + "mastering-ethereum-description": "23 grudnia 2018 r. — Andreas M. Antonopoulos, Gavin Wood Ph.D.", + "podcasts-about-ethereum": "Podcasty o Ethereum", + "bankless-title": "Bankless", + "bankless-description": "Przewodnik po finansach kryptowalutowych", + "zeroknowledge-title": "Zero Knowledge", + "zeroknowledge-description": "Zagłębia się w technologię, która będzie zasilać powstającą zdecentralizowaną sieć i budującą ją społeczność", + "green-pill-title": "Zielona pigułka", + "green-pill-description": "Bada systemy krypto-ekonomiczne, które tworzą pozytywne efekty zewnętrzne dla świata", + "unchained-title": "Unchained", + "unchained-description": "Zanurza się głęboko w ludzi budujących zdecentralizowany internet, szczegóły tej technologii, która może stanowić podstawę naszej przyszłości, oraz niektóre z najbardziej drażliwych tematów w kryptowalutach, takich jak regulacje, bezpieczeństwo i prywatność", + "the-daily-gwei-title": "The Daily Gwei", + "the-daily-gwei-description": "Aktualności, aktualizacje i analizy dotyczące Ethereum" } diff --git a/src/intl/pl/page-stablecoins.json b/src/intl/pl/page-stablecoins.json index 4677bbcabb2..c9a65629bac 100644 --- a/src/intl/pl/page-stablecoins.json +++ b/src/intl/pl/page-stablecoins.json @@ -79,7 +79,7 @@ "page-stablecoins-editors-choice": "Wybór redakcji", "page-stablecoins-editors-choice-intro": "Są to prawdopodobnie najbardziej znane przykłady stablecoinów i monety, które uznaliśmy za przydatne podczas korzystania ze zdecentralizowanych aplikacji.", "page-stablecoins-explore-dapps": "Przeglądaj zdecentralizowane aplikacje", - "page-stablecoins-fiat-backed": "Pieniądz fiducjarny oparty na złocie", + "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ę.", @@ -94,7 +94,7 @@ "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-interest-earning-dapps": "Zdecentralizowane Aplikacje przynoszące odsetki", + "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", "page-stablecoins-precious-metals-con-1": "Scentralizowany – ktoś musi wydać tokeny.", @@ -115,8 +115,8 @@ "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-4": "Aplikacja zaprojektowana do zapisywania Dai.", - "page-stablecoins-stablecoins-feature-1": "Stablecoins są globalne i można je wysyłać przez Internet. Łatwo je otrzymać lub wysłać, gdy masz konto Ethereum.", + "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.", "page-stablecoins-stablecoins-feature-3": "Stablecoiny są wymienialne na ETH i inne tokeny Ethereum. Wiele aplikacji zdecentralizowanych opiera się na stablecoinach.", "page-stablecoins-stablecoins-feature-4": "Stablecoiny są zabezpieczone kryptograficznie. Nikt nie może fałszować transakcji w Twoim imieniu.", @@ -133,8 +133,8 @@ "page-stablecoins-top-coins": "Najlepsze stablecoiny według kapitalizacji rynkowej", "page-stablecoins-top-coins-intro": "Kapitalizacja rynkowa to", "page-stablecoins-top-coins-intro-code": "łączna liczba istniejących tokenów pomnożona przez wartość na token. Ta lista jest dynamiczna, a wymienione tutaj projekty niekoniecznie są wspierane przez zespół ethereum.org.", - "page-stablecoins-types-of-stablecoin": "Jak działają: rodzaje stablecoin", - "page-stablecoins-usdc-banner-body": "USDC jest prawdopodobnie najbardziej znanym zdecentralizowanym stablecoinem. Jego wartość wynosi około dolara i jest powszechnie akceptowana w różnych zdecentralizowanych aplikacjach.", + "page-stablecoins-types-of-stablecoin": "Jak działają: rodzaje stablecoinów", + "page-stablecoins-usdc-banner-body": "USDC jest prawdopodobnie najbardziej znanym stablecoinem zabezpieczonym pieniądzem fiducjarnym. Jego wartość wynosi około dolara i jest wspierany przez Circle i Coinbase.", "page-stablecoins-usdc-banner-learn-button": "Dowiedz się więcej o USDC", "page-stablecoins-usdc-banner-swap-button": "Zamień ETH na USDC", "page-stablecoins-usdc-banner-title": "USDC", diff --git a/src/intl/pl/page-staking-deposit-contract.json b/src/intl/pl/page-staking-deposit-contract.json index 98a2793e991..50033a84c6e 100644 --- a/src/intl/pl/page-staking-deposit-contract.json +++ b/src/intl/pl/page-staking-deposit-contract.json @@ -1,28 +1,28 @@ { - "page-staking-deposit-contract-address": "Adres kontraktu depozytowego Eth2", + "page-staking-deposit-contract-address": "Adres kontraktu depozytowego stakowania", "page-staking-deposit-contract-address-caption": "Dodaliśmy spacje, aby adres był łatwiejszy do przeczytania", "page-staking-deposit-contract-address-check-btn": "Sprawdź adres kontraktu depozytowego", - "page-staking-deposit-contract-checkbox1": "Użyłem już launchpada do konfiguracji mojego walidatora Eth2.", - "page-staking-deposit-contract-checkbox2": "Rozumiem, że muszę użyć launchpada by zacząć stakować. Proste przelewy na ten adres nie zadziałają.", - "page-staking-deposit-contract-checkbox3": "Zamierzam sprawdzić adres kontraktu depozytowego z innymi źródłami.", + "page-staking-deposit-contract-checkbox1": "Mój walidator Ethereum został już skonfigurowany przez launchpad.", + "page-staking-deposit-contract-checkbox2": "Rozumiem, że muszę użyć launchpada, by zacząć stakować. Proste przelewy na ten adres nie zadziałają.", + "page-staking-deposit-contract-checkbox3": "Zamierzam sprawdzić adres kontraktu depozytowego w innych źródłach.", "page-staking-deposit-contract-confirm-address": "Potwierdź, aby ujawnić adres", "page-staking-deposit-contract-copied": "Adres skopiowany", "page-staking-deposit-contract-copy": "Kopiuj adres", "page-staking-deposit-contract-etherscan": "Zobacz kontrakt na Etherscan", - "page-staking-deposit-contract-h2": "To nie jest miejsce, w którym się stakuje", + "page-staking-deposit-contract-h2": "Tutaj się nie stakuje", "page-staking-deposit-contract-launchpad": "Stakuj, używając launchpada", "page-staking-deposit-contract-launchpad-2": "Użyj launchpada", - "page-staking-deposit-contract-meta-desc": "Zweryfikuj adres kontraktu depozytowego do stakowania Eth2.", - "page-staking-deposit-contract-meta-title": "Adres kontraktu depozytowego Eth2", + "page-staking-deposit-contract-meta-desc": "Zweryfikuj adres kontraktu depozytowego w celu stakowania Ethereum.", + "page-staking-deposit-contract-meta-title": "Adres kontraktu depozytowego stakowania Ethereum", "page-staking-deposit-contract-read-aloud": "Przeczytaj adres na głos", "page-staking-deposit-contract-reveal-address-btn": "Pokaż adres", - "page-staking-deposit-contract-staking": " Aby zestakowac ETH w Eth2, musisz użyć dedykowanego launchpada i postępować zgodnie z instrukcjami. Wysłanie ETH na adres podany na tej stronie nie sprawi, że będziesz stakerem i spowoduje nieudaną transakcję.", + "page-staking-deposit-contract-staking": "Aby stakować ETH, musisz użyć dedykowanego launchpada i wykonać wyświetlane na nim instrukcje. Wysłanie ETH na adres podany na tej stronie nie sprawi, że staniesz się stakerem, i poskutkuje nieudaną transakcją.", "page-staking-deposit-contract-staking-check": "Sprawdź te źródła", - "page-staking-deposit-contract-staking-check-desc": "Oczekujemy, że tam będzie wiele fałszywych adresów i oszustw. Aby być bezpiecznym, sprawdź adres Eth2, którego używasz, względem adresu na tej stronie. Zalecamy sprawdzenie go również z innymi godnymi zaufania źródłami.", + "page-staking-deposit-contract-staking-check-desc": "Spodziewamy się, że będzie tam wiele fałszywych adresów i oszustw. Aby zachować bezpieczeństwo, porównaj adres kontraktu na staking, którego używasz, z adresem na tej stronie. Zalecamy sprawdzenie go również w innych wiarygodnych źródłach.", "page-staking-deposit-contract-staking-more-link": "Więcej o stakowaniu", "page-staking-deposit-contract-stop-reading": "Przerwij czytanie", - "page-staking-deposit-contract-subtitle": " Jest to adres kontraktu stakowania Eth2. Użyj tej strony, aby potwierdzić, że wysyłasz środki na prawidłowy adres, kiedy stakujesz.", + "page-staking-deposit-contract-subtitle": "Jest to adres kontraktu na stakowanie Ethereum. Użyj tej strony, aby potwierdzić, że wysyłasz środki w celu stakowania na prawidłowy adres.", "page-staking-deposit-contract-warning": "Sprawdź dokładnie każdy znak.", - "page-staking-deposit-contract-warning-2": "Wysyłanie środków na ten adres nie zadziała i nie sprawi, że będziesz stakerem. Musisz postępować zgodnie z instrukcjami launchpada.", + "page-staking-deposit-contract-warning-2": "Wysyłanie środków na ten adres nie zadziała i nie sprawi, że staniesz się stakerem. Musisz postępować zgodnie z instrukcjami launchpada.", "page-staking-deposit-contract-title": "Sprawdź adres kontraktu depozytowego" } diff --git a/src/intl/pl/page-staking.json b/src/intl/pl/page-staking.json index ca7d6f62a17..0a2e60ece67 100644 --- a/src/intl/pl/page-staking.json +++ b/src/intl/pl/page-staking.json @@ -1,9 +1,237 @@ { - "page-staking-image-alt": "Obraz nosorożca, maskotki launchpada eth2.", - "page-staking-description": "Staking to czynność deponowania 32 ETH w celu aktywacji oprogramowania walidatora. Jako walidator będziesz odpowiedzialny za przechowywanie danych, przetwarzanie transakcji i dodawanie nowych bloków do łańcucha bloków. Dzięki temu Ethereum będzie bezpieczne dla wszystkich i zapewni Ci nowe ETH. Proces ten, znany jako proof-of-stake, jest wprowadzany przez łańcuch śledzący.", + "comp-withdrawal-comparison-current-title": "Obecni stakerzy", + "comp-withdrawal-comparison-current-li-1": "Niektórzy użytkownicy mogli podać adres do wypłaty podczas początkowego konfigurowania depozytu do stakowania — ci użytkownicy nie muszą nic więcej robić", + "comp-withdrawal-comparison-current-li-2": "Większość stakerów nie podała adresu wypłaty przy pierwszym depozycie i będzie musiała zaktualizować swoje dane uwierzytelniające do wypłaty. Staking Launchpad zawiera instrukcje, jak to zrobić", + "comp-withdrawal-comparison-current-p": "Możesz wprowadzić tutaj swój numer indeksu walidatora, aby sprawdzić, czy nadal musisz zaktualizować swoje dane uwierzytelniające (można to znaleźć w dziennikach klienta):", + "comp-withdrawal-comparison-new-title": "Nowi stakerzy (jeszcze nie zdeponowali)", + "comp-withdrawal-comparison-new-li-1": "Domyślnie nowi stakerzy, którzy chcą automatycznie włączyć funkcję wypłat nagród i wypłat, powinni podać adres wypłaty Ethereum, który kontrolują podczas generowania kluczy walidatora za pomocą narzędzia Staking Deposit CLI", + "comp-withdrawal-comparison-new-li-2": "Nie jest to wymagane w momencie depozytu, ale zapobiegnie konieczności aktualizacji tych kluczy w późniejszym terminie w celu odblokowania środków", + "comp-withdrawal-comparison-new-p": "Staking Launchpad wprowadzi Cię do procesu stakowania.", + "comp-withdrawal-comparison-new-link": "Odwiedź Staking Launchpad", + "comp-withdrawal-credentials-placeholder": "Indeks walidatora", + "comp-withdrawal-credentials-error": "Wystąpił błąd! Sprawdź numer indeksu walidatora i spróbuj ponownie.", + "comp-withdrawal-credentials-upgraded-1": "Indeks walidatora {{validatorIndex}} jest gotowy do rozpoczęcia otrzymywania nagród!", + "comp-withdrawal-credentials-upgraded-2": "Poświadczenia wypłaty powiązane z adresem wykonawczym:", + "comp-withdrawal-credentials-not-upgraded-1": "Ten walidator wymaga aktualizacji.", + "comp-withdrawal-credentials-not-upgraded-1-testnet": "Ten walidator sieci testowej Goerli wymaga aktualizacji.", + "comp-withdrawal-credentials-not-upgraded-2": "Instrukcje dotyczące aktualizacji można obecnie znaleźć na stronie Staking Lanchpad", + "comp-withdrawal-credentials-verify-mainnet": "Zweryfikuj w sieci głównej", + "comp-withdrawal-credentials-verify-goerli": "Zweryfikuj w Goerli", + "page-staking-withdrawals-when": "Wdrożono!", + "page-staking-image-alt": "Wizerunek maskotki nosorożca dla staking launchpad.", + "page-staking-benefits-1-title": "Zdobywaj nagrody", + "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-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.", + "page-staking-hero-title": "Jak stakować swoje ETH", + "page-staking-hero-header": "Zdobywaj nagrody podczas zabezpieczenia Ethereum", + "page-staking-hero-subtitle": "Staking jest dobrem publicznym dla ekosystemu Ethereum. Każdy użytkownik, dowolną ilość ETH może pomóc zabezpieczyć sieć i zdobyć nagrody w tym procesie.", + "page-staking-dropdown-home": "Strona główna stakingu", + "page-staking-dropdown-solo": "Staking w pojedynkę", + "page-staking-more-on-solo": "Więcej o stakowaniu solo", + "page-staking-learn-more-solo": "Dowiedz się więcej o stakowaniu solo", + "page-staking-dropdown-saas": "Usługi stakingowe", + "page-staking-saas-with-abbrev": "Usługi stakingowe (SaaS)", + "page-staking-more-on-saas": "Więcej na temat usług stakingowych", + "page-staking-learn-more-saas": "Dowiedz się więcej o usługach stakingowych", + "page-staking-dropdown-pools": "Staking łączony", + "page-staking-dropdown-withdrawals": "O wypłatach", + "page-staking-dropdown-dvt": "Technologia rozproszonego walidatora", + "page-staking-more-on-pools": "Więcej o stakowaniu w puli", + "page-staking-learn-more-pools": "Dowiedz się więcej o stakowaniu w puli", + "page-staking-section-what-title": "Czym jest staking?", + "page-staking-section-what-link": "Dowiedz się jak zdobyć ETH", + "page-staking-section-why-title": "Dlaczego warto stakować ETH?", + "page-staking-section-why-p1": "Wszystko zależy od tego, ile chcesz stakować. Będziesz potrzebować 32 ETH, aby aktywować swój własny walidator, ale możesz zestakować mniej.", + "page-staking-section-why-p2": "Zapoznaj się z poniższymi opcjami i wybierz tę, która jest najlepsza dla Ciebie i dla sieci.", + "page-staking-guide-title-coincashew-ethereum": "Przewodnik CoinCashew po Ethereum 2.0", + "page-staking-guide-title-somer-esat": "Somer Esat", + "page-staking-guide-title-rocket-pool": "Operatorzy węzłów Rocket Poll", + "page-staking-guide-description-linux": "Linux (CLI)", + "page-staking-guide-description-mac-linux": "Linux, macOS (CLI)", + "page-staking-hierarchy-solo-h2": "Domowe stakowanie solo", + "page-staking-hierarchy-solo-pill-1": "Największy wpływ", + "page-staking-hierarchy-solo-pill-2": "Pełna kontrola", + "page-staking-hierarchy-solo-pill-3": "Pełne nagrody", + "page-staking-hierarchy-solo-pill-4": "Nie wymaga zaufania", + "page-staking-hierarchy-solo-p1": "Stakowanie solo jest uważane w Ethereum za złoty standard dla stakowania. Zapewnia pełne nagrody za uczestnictwo, poprawia decentralizację sieci i nigdy nie wymaga powierzania swoich środków nikomu innemu.", + "page-staking-hierarchy-solo-p2": "Jeśli rozważasz stakowanie solo, powinieneś/powinnaś posiadać przynajmniej 32 ETH oraz komputer połączony z internetem ~24/7. Pewna wiedza techniczna jest przydatna, ale obecnie istnieją łatwe w użyciu narzędzia, które pomagają uprościć ten proces.", + "page-staking-hierarchy-saas-pill-1": "Twoje 32 ETH", + "page-staking-hierarchy-saas-pill-2": "Twoje klucze walidatora", + "page-staking-hierarchy-saas-pill-3": "Działanie węzła powierzonego", + "page-staking-hierarchy-saas-p1": "Jeśli nie chcesz lub nie czujesz się komfortowo zajmując się sprzętem, ale nadal chcesz stakować swoje 32 ETH, usługi stakingowe pozwalają Ci oddelegować trudną część, podczas gdy Ty zdobywasz natywne nagrody za bloki.", + "page-staking-hierarchy-saas-p2": "Opcje te zazwyczaj przeprowadzają użytkownika przez proces tworzenia zestawu danych walidatora, przesyłania do nich kluczy podpisujących i deponowania 32 ETH. Umożliwia to usłudze walidację w Twoim imieniu.", + "page-staking-hierarchy-saas-p3": "Ta metoda wymaga pewnego poziomu zaufania do dostawcy. Aby ograniczyć ryzyko kontrahenta, klucze do wypłaty ETH są zwykle w Twoim posiadaniu.", + "page-staking-hierarchy-pools-pill-1": "Stakuj dowolną kwotę", + "page-staking-hierarchy-pools-pill-2": "Zdobywaj nagrody", + "page-staking-hierarchy-pools-pill-3": "Zachowaj prostotę", + "page-staking-hierarchy-pools-pill-4": "Popularne", + "page-staking-hierarchy-pools-p1": "Obecnie istnieje kilka rozwiązań stakingu w puli, aby pomóc użytkownikom, którzy nie mają lub nie czują się komfortowo, stakując 32 ETH.", + "page-staking-hierarchy-pools-p2": "Wiele z tych opcji oferuje tak zwany „płynny staking”, który obejmuje token płynności ERC-20 reprezentujący Twoje zestakowane ETH.", + "page-staking-hierarchy-pools-p3": "Płynny staking umożliwia łatwe wyjście w dowolnym momencie i sprawia, że staking jest tak prosty, jak wymiana tokenów. Opcja ta pozwala również użytkownikom na przechowywanie swoich aktywów we własnym portfelu Ethereum.", + "page-staking-hierarchy-pools-p4": "Staking w puli nie jest natywny dla sieci Ethereum. Strony trzecie budują te rozwiązania i niosą ze sobą własne ryzyko.", + "page-staking-hierarchy-cex-h2": "Giełdy scentralizowane", + "page-staking-hierarchy-cex-pill-1": "Najmniejszy wpływ", + "page-staking-hierarchy-cex-pill-2": "Najwyższe założenia dotyczące zaufania", + "page-staking-hierarchy-cex-p1": "Wiele scentralizowanych giełd oferuje usługi stakingowe, jeśli nie czujesz się jeszcze komfortowo trzymając ETH we własnym portfelu. Mogą one być rozwiązaniem awaryjnym, które pozwoli Ci zarobić na posiadanych ETH przy minimalnym nadzorze lub wysiłku.", + "page-staking-hierarchy-cex-p2": "Kompromis polega na tym, że scentralizowani dostawcy konsolidują duże pule ETH w celu uruchomienia dużej liczby walidatorów. Może to być niebezpieczne dla sieci i jej użytkowników, ponieważ tworzy duży scentralizowany cel i punkt awarii, czyniąc sieć bardziej podatną na ataki lub błędy.", + "page-staking-hierarchy-cex-p3": "Jeśli czujesz się niekomfortowo trzymając środki na portfelu, w porządku. Mamy dla ciebie taką możliwość. Jednak chcielibyśmy byś rozważył zapoznanie się z naszą stroną portfeli. Tu znajdziesz wiedzę o tym, kiedy twoje fundusze, są twoimi funduszami. Gdy już będziesz gotów wróć tu ponownie i wznieś swój staking na wyższy poziom skorzystaj z usługi wspólnego stakingu.", + "page-staking-hierarchy-subtext": "Jak być może zauważyłeś, istnieje wiele sposobów uczestniczenia w stakingu Ethereum. Sposoby te są skierowane do szerokiego grona użytkowników i ostatecznie każdy z nich jest wyjątkowy i różni się pod względem ryzyka, nagród i założeń dotyczących zaufania. Niektóre z nich są bardziej zdecentralizowane, sprawdzone w boju i/lub ryzykowne niż inne. Zapewniamy pewne informacje na temat popularnych projektów w przestrzeni, ale zawsze należy przeprowadzić własne badania przed wysłaniem ETH gdziekolwiek.", + "page-staking-comparison-solo-saas": "W przypadku dostawców usług stakingowych nadal musisz wpłacić 32 ETH, ale nie musisz uruchamiać sprzętu. Zazwyczaj zachowujesz dostęp do swoiuch kluczy walidatora, ale musisz również udostępnić klucze podpisujące, aby operator mógł działać w imieniu Twojego walidatora. Wprowadza to warstwę zaufania, która nie występuje w przypadku uruchamiania własnego sprzętu, a w przeciwieństwie do solo stakowania w domu, usługi stakingowe nie pomagają tak bardzo w geograficznej dystrybucji węzłów. Jeśli nie czujesz się komfortowo z obsługą sprzętu, ale nadal chcesz stakować 32 ETH, skorzystanie z usług stakingowych może być dla ciebie dobrym rozwiązaniem.", + "page-staking-comparison-solo-pools": "Stakowanie solo jest znacznie bardziej skomplikowane niż stakowanie w puli, ale oferuje pełny dostęp do nagród ETH oraz pełną kontrolę nad konfiguracją i bezpieczeństwem walidatora. Stakowanie w puli ma znacznie niższą barierę wejścia. Użytkownicy mogą stakować niewielkie kwoty ETH, nie muszą generować kluczy walidatora i nie mają wymagań sprzętowych poza standardowym połączeniem internetowym. Płynne tokeny umożliwiają wyjście ze stakowania, zanim zostanie on włączony na poziomie protokołu. Jeśli jesteś zainteresowany tymi funkcjami, stakowanie w puli może być dobrym rozwiązaniem.", + "page-staking-comparison-saas-solo": "Podobieństwa obejmują posiadanie własnych kluczy walidatora bez konieczności łączenia funduszy, ale w przypadku SaaS musisz zaufać stronie trzeciej, która może potencjalnie działać złośliwie lub sama stać się celem ataku lub regulacji. Jeśli te założenia dotyczaće zaufania lub ryzyko centralizacji budzą twoje obawy, złotym standardem samodzielnego stakowania jest stakowanie solo.", + "page-staking-comparison-saas-pools": "Są one podobne, ponieważ generalnie polegasz na kimś innym, aby uruchomić klienta walidatora, ale w przeciwieństwie do usług stakingowych, stakowanie w puli pozwala ci uczestniczyć z mniejszymi ilościami ETH. Jeśli chcesz stakować mniej niż 32 ETH, rozważ sprawdzenie tych rozwiązań.", + "page-staking-comparison-pools-solo": "Stakowanie w puli ma znacznie niższą barierę wejścia w porównaniu do stakowania solo, ale wiąże się z dodatkowym ryzykiem poprzez delegowanie wszystkich operacji węzła na stronę trzecią i za opłatą. Stakowanie solo daje pełną suwerenność i kontrolę nad wyborami, które wiążą się z wyborem konfiguracji stakowania. Stakerzy nigdy nie muszą przekazywać swoich kluczy i otrzymują pełne nagrody bez żadnych pośredników pobierających opłaty.", + "page-staking-comparison-pools-saas": "Są one podobne, ponieważ stakerzy nie uruchamiają samodzielnie oprogramowania walidatora, ale w przeciwieństwie do opcji w puli, usługi stakingowe wymagają pełnego depozytu w wysokości 32 ETH, aby aktywować walidator. Nagrody trafiają do stakera i zazwyczaj wiążą się z miesięczną opłatą lub inną stawką za korzystanie z usługi. Jeśli wolisz własne klucze walidatora i chcesz zestakować co najmniej 32 ETH, skorzystanie z dostawcy SaaS może być dla Ciebie dobrym rozwiązaniem.", + "page-staking-considerations-solo-1-title": "Otwarte źródło", + "page-staking-considerations-solo-1-description": "Istotny kod jest w 100% otwartoźródłowy i dostępny publicznie do forkowania i wykorzystania", + "page-staking-considerations-solo-1-warning": "Zamknięte źródło", + "page-staking-considerations-solo-2-title": "Skontrolowany", + "page-staking-considerations-solo-2-description": "Istotny kod został poddany formalnemu skontrolowaniu, którego wyniki zostały opublikowane i są dostępne publicznie", + "page-staking-considerations-solo-2-warning": "Brak", + "page-staking-considerations-solo-3-title": "Nagrody za błędy", + "page-staking-considerations-solo-3-description": "Publiczny program nagród za znajdowanie błędów został przeprowadzony na istotnym kodzie, aby wynagrodzić użytkowników za bezpieczne zgłaszanie i/lub naprawianie luk w zabezpieczeniach", + "page-staking-considerations-solo-3-valid": "Obecnie aktywny", + "page-staking-considerations-solo-3-caution": "Zakończony", + "page-staking-considerations-solo-4-title": "Sprawdzone w boju", + "page-staking-considerations-solo-4-description": "Oprogramowanie było dostępne i używane publicznie przez wskazany okres czasu", + "page-staking-considerations-solo-4-valid": "> 1 rok", + "page-staking-considerations-solo-4-caution": "> 6 miesięcy", + "page-staking-considerations-solo-4-warning": "Nowo wydane", + "page-staking-considerations-solo-5-title": "Nie wymaga zaufania", + "page-staking-considerations-solo-5-description": "Klucze walidatora nie są powierzane żadnemu innemu człowiekowi w żadnym momencie cyklu życia walidatora. Wszelkie zaangażowane inteligentne kontrakty są wolne od backdoorów, bez polegania na uprzywilejowanych uprawnieniach do wykonania.", + "page-staking-considerations-solo-5-warning": "Wymagane zaufanie", + "page-staking-considerations-solo-6-title": "Nie wymaga pozwolenia", + "page-staking-considerations-solo-6-description": "Użytkownicy nie potrzebują żadnych specjalnych uprawnień do obsługi walidatora za pomocą oprogramowania lub usługi", + "page-staking-considerations-solo-6-valid": "Brak uprawnień", + "page-staking-considerations-solo-6-warning": "Wymagane uprawnienia", + "page-staking-considerations-solo-7-title": "Multi-klient", + "page-staking-considerations-solo-7-description": "Oprogramowanie umożliwia użytkownikom wybieranie i przełączanie się między co najmniej dwoma, lub więcej klientami wykonawczymi i dwoma lub więcej klientami warstwy konsensusu", + "page-staking-considerations-solo-7-valid": "Łatwe przełączanie klientów", + "page-staking-considerations-solo-7-warning": "Ograniczone do większościowego klienta", + "page-staking-considerations-solo-8-title": "Samodzielny nadzór", + "page-staking-considerations-solo-8-description": "Użytkownik przechowuje wszelkie dane uwierzytelniające walidatora, w tym klucze podpisujące i wypłaty", + "page-staking-considerations-solo-8-warning": "Nadzór strony trzeciej", + "page-staking-considerations-solo-9-title": "Ekonomiczny", + "page-staking-considerations-solo-9-description": "Użytkownicy mogą obsługiwać walidator, stakując mniej niż 32 ETH, wykorzystując zgromadzone środki od innych osób", + "page-staking-considerations-solo-9-valid": "< 32 ETH", + "page-staking-considerations-solo-9-warning": "32 ETH", + "page-staking-considerations-saas-4-description": "Usługa była dostępna i używana publicznie przez wskazany okres czasu", + "page-staking-considerations-saas-6-description": "Użytkownicy nie potrzebują żadnych specjalnych uprawnień, rejestracji konta ani KYC, aby korzystać z usługi", + "page-staking-considerations-saas-6-valid": "Każdy może dołączyć", + "page-staking-considerations-saas-6-warning": "Wymagane uprawnienie", + "page-staking-considerations-saas-7-title": "Różnorodność wykonawcza", + "page-staking-considerations-saas-7-description": "Usługa nie powinna mieć więcej niż 50% swoich zagregowanych walidatorów z tym samym większościowym klientem wykonawczym", + "page-staking-considerations-saas-7-valid": "Mniej niż 50%", + "page-staking-considerations-saas-7-caution": "Obecnie nieznane", + "page-staking-considerations-saas-7-warning": "Więcej niż 50%", + "page-staking-considerations-saas-8-title": "Różnorodność konsensusu", + "page-staking-considerations-saas-8-description": "Usługa nie powinna mieć więcej niż 50% swoich zagregowanych walidatorów z tym samym większościowym klientem konsensusu", + "page-staking-considerations-saas-8-valid": "Mniej niż 50%", + "page-staking-considerations-saas-8-caution": "Obecnie nieznane", + "page-staking-considerations-saas-8-warning": "Więcej niż 50%", + "page-staking-considerations-pools-5-description": "Usługa nie wymaga ufania jakimkolwiek ludziom w zakresie przechowywania kluczy lub dystrybucji nagród", + "page-staking-considerations-pools-6-title": "Węzły bez uprawnień", + "page-staking-considerations-pools-6-description": "Usługa umożliwia każdemu dołączenie do puli jako operator węzła, bez uprawnień", + "page-staking-considerations-pools-7-description": "Usługa nie powinna mieć więcej niż 50% swoich zagregowanych walidatorów z tym samym większościowym klientem wykonawczym", + "page-staking-considerations-pools-8-title": "Płynny token", + "page-staking-considerations-pools-8-description": "Oferuje zbywalny płynny token reprezentujący zestakowane ETH, przechowywany we własnym portfelu", + "page-staking-considerations-pools-8-valid": "Płynny token", + "page-staking-considerations-pools-8-warning": "Brak płynnego tokenu", + "page-staking-considerations-pools-9-description": "Usługa nie powinna mieć więcej niż 50% swoich zagregowanych walidatorów z tym samym większościowym klientem konsensusu", + "page-staking-how-solo-works-item-1": "Zdobądź sprzęt: Musisz uruchomić węzeł, aby zacząć stakować", + "page-staking-how-solo-works-item-2": "Zsynchronizuj klienta warstwy wykonawczej", + "page-staking-how-solo-works-item-3": "Zsynchronizuj klienta warstwy konsensusu", + "page-staking-how-solo-works-item-4": "Wygeneruj klucze i załaduj je do klienta walidatora", + "page-staking-how-solo-works-item-5": "Monitoruj i konserwuj swój węzeł", + "page-staking-launchpad-widget-testnet-label": "Sieć testowa Goerli", + "page-staking-launchpad-widget-testnet-start": "Zacznij stakować na sieci testowej Goerli", + "page-staking-launchpad-widget-mainnet-label": "sieć główna", + "page-staking-launchpad-widget-mainnet-start": "Zacznij stakować na sieci głównej", + "page-staking-launchpad-widget-span": "Wybierz sieć", + "page-staking-launchpad-widget-p1": "Od walidatorów solo oczekuje się przetestowania swoich konfiguracji i umiejętności operacyjnych w sieci testowej Goerli przed zaryzykowaniem środków. Pamiętaj, że ważne jest, aby wybrać klienta mniejszościowego, ponieważ zwiększa to bezpieczeństwo sieci i ogranicza ryzyko.", + "page-staking-launchpad-widget-p2": "Jeśli czujesz się z tym komfortowo, możesz skonfigurować wszystko, co potrzebne, z wiersza poleceń, używając samego Staking Launchpad.", + "page-staking-launchpad-widget-p3": "Aby ułatwić sprawy, zapoznaj się z niektórymi narzędziami i przewodnikami poniżej, które mogą pomóc Ci wraz ze Staking Launchpad, aby z łatwością skonfigurować klientów.", + "page-staking-launchpad-widget-link": "Narzędzia i przewodniki programowe", + "page-staking-products-get-started": "Rozpocznij", + "page-staking-dropdown-staking-options": "Opcje stakingu", + "page-staking-dropdown-staking-options-alt": "Rozwijane menu opcji stakingu", + "page-staking-stats-box-metric-1": "Całkowite zestakowane ETH", + "page-staking-stats-box-metric-2": "Całkowita liczba walidatorów", + "page-staking-stats-box-metric-3": "Bieżące APR", + "page-staking-stats-box-metric-1-tooltip": "Suma zestakowanego ETH w łańcuchu śledzącym, nie uwzględniając sald powyżej 32 ETH", + "page-staking-stats-box-metric-2-tooltip": "Liczba kont walidatorów aktualnie aktywowanych w łańcuchu śledzącym", + "page-staking-stats-box-metric-3-tooltip": "Średni roczny zwrot finansowy na walidatora w ciągu ostatnich 24 godzin", + "page-staking-section-comparison-subtitle": "Nie ma jednego uniwersalnego rozwiązania dla stakingu, a każde z nich jest wyjątkowe. Tutaj porównamy niektóre z ryzyk, nagród i wymagań związanych z różnymi sposobami stakowania.", + "page-staking-section-comparison-rewards-title": "Nagrody", + "page-staking-section-comparison-solo-rewards-li1": "Maksymalne nagrody — otrzymuj pełne nagrody bezpośrednio z protokołu", + "page-staking-section-comparison-solo-rewards-li2": "Otrzymasz nagrody za grupowanie transakcji w nowy blok lub sprawdzanie pracy innych walidatorów w celu zapewnienia bezpiecznego działania łańcucha", + "page-staking-section-comparison-solo-rewards-li3": "Otrzymasz również niespalone opłaty transakcyjne za bloki, które proponujesz", + "page-staking-section-comparison-saas-rewards-li1": "Zwykle obejmuje pełne nagrody protokołu minus miesięczna opłata za operacje węzła", + "page-staking-section-comparison-saas-rewards-li2": "Często dostępne są pulpity nawigacyjne umożliwiające łatwe śledzenie klienta walidatora", + "page-staking-section-comparison-pools-rewards-li1": "Stakerzy w puli zyskują nagrody w różny sposób, w zależności od wybranej metody stakowania w puli", + "page-staking-section-comparison-pools-rewards-li2": "Wiele usług stakowania w puli oferuje jeden lub więcej płynnych tokenów, które reprezentują zestakowane ETH plus udział nagród walidatora", + "page-staking-section-comparison-pools-rewards-li3": "Płynne tokeny mogą być przechowywane w portfelu, używane w DeFi i sprzedawane, jeśli zdecydujesz się wyjść", + "page-staking-section-comparison-risks-title": "Ryzyko", + "page-staking-section-comparison-solo-risks-li1": "Stawką jest twoje ETH", + "page-staking-section-comparison-solo-risks-li2": "Istnieją kary, które kosztują ETH, za przejście w tryb offline", + "page-staking-section-comparison-solo-risks-li3": "Złośliwe zachowanie może skutkować „odcięciem” większych ilości ETH i wymuszonym wyrzuceniem z sieci", + "page-staking-section-comparison-saas-risks-li1": "Takie same ryzyka jak w przypadku stakowania solo plus ryzyko kontrahenta dostawcy usług", + "page-staking-section-comparison-saas-risks-li2": "Użycie kluczy podpisujących jest powierzane komuś innemu, kto może zachowywać się złośliwie", + "page-staking-section-comparison-pools-risks-li1": "Ryzyko różni się w zależności od zastosowanej metody", + "page-staking-section-comparison-pools-risks-li2": "Ogólnie rzecz biorąc, ryzyka składają się z kombinacji ryzyka kontrahenta, inteligentnego kontraktu i ryzyka wykonawczego", + "page-staking-section-comparison-requirements-title": "Wymagania", + "page-staking-section-comparison-solo-requirements-li1": "Musisz wpłacić 32 ETH", + "page-staking-section-comparison-solo-requirements-li2": "Utrzymywanie sprzętu, który obsługuje zarówno klienta wykonawczego Ethereum, jak i klienta konsensusu, gdy jest podłączony do internetu", + "page-staking-section-comparison-solo-requirements-li3": "Staking Launchpad przeprowadzi Cię przez proces i wymagania sprzętowe", + "page-staking-section-comparison-saas-requirements-li1": "Wpłać 32 ETH i wygeneruj klucze z pomocą", + "page-staking-section-comparison-saas-requirements-li2": "Bezpiecznie przechowuj klucze", + "page-staking-section-comparison-saas-requirements-li3": "Reszta jest załatwiona, choć konkretne usługi będą się różnić", + "page-staking-section-comparison-pools-requirements-li1": "Najniższe wymagania ETH, niektóre projekty wymagają zaledwie 0,01 ETH", + "page-staking-section-comparison-pools-requirements-li2": "Wpłacaj środki bezpośrednio ze swojego portfela na różne platformy stakowania w puli lub po prostu wymieniaj je na jeden z płynnych tokenów stakowania", + "page-staking-faq-1-question": "Czym jest walidator?", + "page-staking-faq-1-answer": "Walidator to wirtualny podmiot, który żyje w Ethereum i uczestniczy w konsensusie protokołu Ethereum. Walidatorzy są reprezentowani przez saldo, klucz publiczny i inne właściwości. Klient walidatora to oprogramowanie, które działa w imieniu walidatora, przechowując i używając jego klucza prywatnego. Pojedynczy klient walidatora może posiadać wiele par kluczy, kontrolując wiele walidatorów.", + "page-staking-faq-2-question": "Dlaczego muszę stakować swoje środki?", + "page-staking-faq-2-answer": "Walidator ma możliwość proponowania i poświadczania bloków dla sieci. Aby zapobiec nieuczciwym zachowaniom, użytkownicy muszą stakować swoje fundusze. Pozwala to protokołowi karać złośliwych użytkowników. Stakowanie jest sposobem na utrzymanie uczciwości użytkownika, ponieważ jego działania będą miały konsekwencje finansowe.", + "page-staking-faq-3-question": "Czy mogę kupić „Eth2”?", + "page-staking-faq-3-answer-p1": "Nie ma tokena „Eth2” natywnego dla protokołu, ponieważ natywny token ether (ETH) nie zmienił się, gdy Ethereum przeszło na proof-of-stake.", + "page-staking-faq-3-answer-p2": "Istnieją pochodne tokeny/skróty, które mogą reprezentować zestakowane ETH (tj. rETH z Rocket Pool, stETH z Lido, ETH2 z Coinbase). Dowiedz się więcej o pulach stakowania", + "page-staking-faq-4-question": "Czy stakowanie jest już dostępne?", + "page-staking-faq-4-answer-p1": "Tak. Stakowanie jest dostępne od 1 grudnia 2020 r.", + "page-staking-faq-4-answer-p2": "Oznacza to, że stakowanie jest obecnie dostępne dla użytkowników, którzy mogą wpłacić swoje ETH, uruchomić klienta walidatora i zacząć zdobywać nagrody.", + "page-staking-faq-4-answer-p3": "Aktualizacja Shanghai/Capella została zakończona 12 kwietnia 2023 r., umożliwiając wypłaty ze stakingu, zamykając pętlę płynności stakowania.", + "page-staking-faq-5-question": "Kiedy mogę wypłacić moje zestakowane ETH?", + "page-staking-faq-5-answer-p1": "Właśnie teraz! Stakerzy mogą wypłacić swoje nagrody i/lub główny depozyt z salda walidatora, jeśli tak zdecydują.", + "page-staking-faq-5-answer-p2": "Stakerzy będą również zdobywać nagrody w postaci opłat i MEV za proponowanie bloków, które są natychmiast udostępniane za pośrednictwem ustawionego adresu odbiorcy opłat.", + "page-staking-faq-5-answer-link": "Więcej o wypłatach ze stakingu", + "page-staking-further-reading-1-link": "Dlaczego Proof of Stake (listopad 2020 r.)", + "page-staking-further-reading-author-vitalik-buterin": "Vitalik Buterin", + "page-staking-further-reading-2-link": "Uzasadnienie projektu Serenity", + "page-staking-further-reading-3-link": "Proof of Stake FAQ (grudzień 2017 r.)", + "page-staking-further-reading-4-link": "Wiadomości Eth2", + "page-staking-further-reading-4-author": "Ben Edgington", + "page-staking-further-reading-5-link": "Sfinalizowano nr. 33, warstwa konsensusu Ethereum (styczeń 2022 r.)", + "page-staking-further-reading-5-author": "Danny Ryan", + "page-staking-further-reading-6-link": "Posty poświadczające", + "page-staking-further-reading-7-link": "Baza wiedzy Beaconcha.in", + "page-staking-further-reading-8-link": "Materiały edukacyjne tworzone przez społeczność Beaconcha.in", + "page-staking-further-reading-9-link": "Ethereum Staking Launchpad FAQ", + "page-staking-further-reading-10-link": "Baza wiedzy EthStaker", + "page-staking-toc-how-to-stake-your-eth": "Jak stakować swoje ETH", + "page-staking-toc-comparison-of-options": "Porównanie opcji stakowania", + "page-staking-toc-faq": "FAQ", + "page-staking-toc-further": "Dalsza lektura", + "page-staking-dom-info-title": "Stakowanie z Ethereum", "page-staking-join-community": "Dołącz do społeczności stakerów", - "page-staking-join-community-desc": "r/ethstaker to społeczność, w której wszyscy mogą dyskutować o stakingu na Ethereum – dołącz, aby uzyskać porady, wsparcie i porozmawiać o wszystkich sprawach dotyczących stakowania.", + "page-staking-join-community-desc": "EthStaker to społeczność, w której każdy może dyskutować i uczyć się o stakowaniu w Ethereum. Dołącz do dziesiątek tysięcy członków z całego świata, aby uzyskać porady, wsparcie i porozmawiać o stakowaniu.", "page-staking-meta-description": "Przegląd stakingu Ethereum: \nryzyko, nagrody, wymagania i gdzie to zrobić.", "page-staking-meta-title": "Staking Ethereum", - "page-upgrades-merge-btn": "Więcej o Połączeniu" + "page-staking-withdrawals-important-notices": "Ważne informacje", + "page-staking-withdrawals-important-notices-desc": "Wypłaty nie są jeszcze dostępne. Aby uzyskać więcej informacji, zapoznaj się z FAQ dotyczącym Połączenia i po Połączeniu Eth2.", + "page-upgrades-merge-btn": "Więcej o Połączeniu", + "subscribe-to-ef-blog": "Subskrybuj Blog EF, aby otrzymywać powiadomienia e-mail o najnowszych ogłoszeniach dotyczących protokołów." } diff --git a/src/intl/pl/page-wallets-find-wallet.json b/src/intl/pl/page-wallets-find-wallet.json index 9d7094082f5..13e4c6fe684 100644 --- a/src/intl/pl/page-wallets-find-wallet.json +++ b/src/intl/pl/page-wallets-find-wallet.json @@ -33,7 +33,7 @@ "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-ens-support": "Obsługa ENS", - "page-find-wallet-ens-support-desc": "Portfele obsługujące usługę nazw Ethereum (ENS)", + "page-find-wallet-ens-support-desc": "Portfele obsługujące Ethereum Name Service (ENS)", "page-find-wallet-token-importing": "Importowanie tokenów", "page-find-wallet-token-importing-desc": "Import dowolnego tokena ERC-20 do użycia w portfelu", "page-find-wallet-fee-optimization": "Optymalizacja opłat", @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Filtry cech", "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", @@ -89,5 +89,6 @@ "page-find-wallet-browser": "Przeglądarkowe", "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-choose-to-compare": "Wybierz, aby porównać", + "page-find-wallet-choose-features": "Wybierz funkcje" } diff --git a/src/intl/pl/page-wallets.json b/src/intl/pl/page-wallets.json index 064993453ea..9b106b847c5 100644 --- a/src/intl/pl/page-wallets.json +++ b/src/intl/pl/page-wallets.json @@ -1,20 +1,20 @@ { - "page-wallets-accounts-addresses": "Portfele, konta i adresy", + "page-wallets-accounts-addresses": "Portfele, konta, klucze i adresy", "page-wallets-accounts-addresses-desc": "Warto rozumieć różnice między niektórymi kluczowymi terminami.", - "page-wallets-accounts-ethereum-addresses": "Konto Ethereum ma adres Ethereum, podobnie jak skrzynka pocztowa ma adres e-mail. Możesz go użyć, aby wysłać środki na konto.", + "page-wallets-accounts-ethereum-addresses": "Konto Ethereum ma adres, podobnie jak skrzynka odbiorcza ma adres e-mail. Służy on do identyfikacji Twoich zasobów cyfrowych.", "page-wallets-alt": "Ilustracja robota ze skarbcem w charakterze ciała, przedstawiająca portfel Ethereum", - "page-wallets-ethereum-account": "Konto Ethereum jest podmiotem, który może wysyłać transakcje i ma saldo.", + "page-wallets-ethereum-account": "Konto Ethereum to para kluczy. Jeden klucz służy do stworzenia adresu, który można swobodnie udostępniać, a drugi klucz należy zachować w tajemnicy, ponieważ służy do podpisywania. Razem te klucze pozwalają na przechowywanie aktywów i dokonywanie transakcji.", "page-wallets-blog": "Blog Coinbase", "page-wallets-bookmarking": "Dodaj swój portfel do zakładek", "page-wallets-bookmarking-desc": "Jeśli korzystasz z portfela internetowego, dodaj witrynę do zakładek, aby chronić się przed oszustwami typu phishing.", "page-wallets-cd": "Fizyczne portfele sprzętowe to urządzenia, które pozwalają Ci na przechowywanie kryptowalut w trybie offline – są bardzo bezpieczne", - "page-wallets-desc-2": "Potrzebujesz portfela, aby wysyłać środki i zarządzać ETH.", + "page-wallets-desc-2": "Portfele są używane przez większość ludzi do obsługi swoich zasobów cyfrowych i tożsamości.", "page-wallets-desc-2-link": "Więcej na temat ETH", - "page-wallets-desc-3": "Twój portfel to tylko narzędzie do zarządzania 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": "Dzieje się tak dlatego, że portfele nie przechowują twoich funduszy. Są tylko narzędziem do zarządzania tym, co naprawdę należy do Ciebie.", - "page-wallets-description": "Portfele Ethereum to aplikacje, które umożliwiają interakcję z kontem Ethereum. Pomyśl o tym jak o aplikacji do bankowości internetowej - bez banku. Twój portfel umożliwia odczytywanie salda, wysyłanie transakcji i łączenie się z aplikacjami.", + "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-ethereum-wallet": "Portfel to produkt, który pozwala Ci zarządzać Twoim kontem Ethereum. Umożliwia on wyświetlanie salda konta, wysyłanie transakcji i wiele innych.", + "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", @@ -39,12 +39,12 @@ "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.", - "page-wallets-slogan": "Klucz do Twojej cyfrowej przyszłości", + "page-wallets-slogan": "Posiadanie kluczy do cyfrowej przyszłości", "page-wallets-stay-safe": "Jak pozostać bezpiecznym", - "page-wallets-stay-safe-desc": "Portfele zmieniają sposób myślenia. Swoboda finansowa i możliwość dostępu do funduszy i korzystania z nich w dowolnym miejscu wiąże się z pewną odpowiedzialnością - w przypadku kryptowalut nie ma wsparcia klienta.", - "page-wallets-subtitle": "Portfele umożliwiają dostęp do funduszy i aplikacji Ethereum. Tylko Ty powinieneś mieć dostęp do swojego portfela.", + "page-wallets-stay-safe-desc": "Wolność finansowa oraz możliwość dostępu do środków i korzystania z nich w dowolnym miejscu wiążą się z odpowiedzialnością — w kryptowalutach nie ma czegoś takiego jak obsługa klienta. Jesteś odpowiedzialny za bezpieczeństwo swoich kluczy.", + "page-wallets-subtitle": "Portfele pomagają uzyskać dostęp do zasobów cyfrowych i logować się do aplikacji.", "page-wallets-take-responsibility": "Weź odpowiedzialność za swoje własne środki", - "page-wallets-take-responsibility-desc": "Scentralizowane giełdy połączą Twój portfel z nazwą użytkownika i hasłem, które możesz odzyskać w tradycyjny sposób. Pamiętaj tylko, że musisz ufać tej giełdzie i powierzyć swoje fundusze. Jeśli ta firma zostanie zaatakowana lub upadnie, Twoje fundusze są zagrożone.", + "page-wallets-take-responsibility-desc": "Scentralizowane giełdy połączą Twój portfel z nazwą użytkownika i hasłem, które możesz odzyskać w tradycyjny sposób. Pamiętaj tylko, że powierzasz tej giełdzie dostęp do Twoich środków. Jeśli giełda ma problemy finansowe, Twoje środki będą zagrożone.", "page-wallets-tips": "Więcej wskazówek na temat bezpieczeństwa", "page-wallets-tips-community": "Od społeczności", "page-wallets-title": "Portfele Ethereum", @@ -61,7 +61,7 @@ "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-login": "Twój login dla aplikacji Ethereum", - "page-wallets-your-login-desc": "Twój portfel pozwala Ci połączyć się z dowolną zdecentralizowaną aplikacją przy użyciu konta Ethereum. To jest jak logowanie, którego możesz używać w wielu aplikacjach.", - "additional-reading-how-to-create-an-ethereum-account": "Jak „zarejestrować” konto 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", "additional-reading-how-to-use-a-wallet": "Jak używać portfela" } diff --git a/src/intl/pl/page-what-is-ethereum.json b/src/intl/pl/page-what-is-ethereum.json index 3572af8c962..853653e2d09 100644 --- a/src/intl/pl/page-what-is-ethereum.json +++ b/src/intl/pl/page-what-is-ethereum.json @@ -3,52 +3,49 @@ "page-what-is-ethereum-alt-img-comm": "Ilustracja współdziałających członków społeczności Ethereum", "page-what-is-ethereum-alt-img-lego": "Ilustracja ręki układającej logo Ethereum wykonane z klocków lego", "page-what-is-ethereum-banking-card": "Bankowość dla wszystkich", - "page-what-is-ethereum-banking-card-desc": "Nie każdy ma dostęp do usług finansowych. Jedyne, czego potrzebujesz by zyskać dostęp do Ethereum, jego produktów kredytowych i oszczędnościowych, to połączenie internetowe.", + "page-what-is-ethereum-banking-card-desc": "Nie każdy ma dostęp do usług finansowych. Jedyne, czego potrzebujesz, aby zyskać dostęp do Ethereum i jego produktów pożyczkowych oraz oszczędnościowych, to połączenie internetowe.", "page-what-is-ethereum-build": "Stwórz coś z Ethereum", "page-what-is-ethereum-build-desc": "Jeśli chcesz spróbować budować z Ethereum, przeczytaj naszą dokumentację, wypróbuj kilka samouczków lub sprawdź narzędzia, których potrzebujesz, aby rozpocząć.", "page-what-is-ethereum-censorless-card": "Odporne na cenzurę", - "page-what-is-ethereum-censorless-card-desc": "Żaden rząd ani przedsiębiorstwo nie ma kontroli nad Ethereum. Ta decentralizacja sprawia, że nikt nie może powstrzymać Cię od otrzymywania płatności lub korzystania z usług na Ethereum.", + "page-what-is-ethereum-censorless-card-desc": "Żaden rząd ani przedsiębiorstwo nie ma kontroli nad Ethereum. Decentralizacja sprawia, że nikt nie może powstrzymać Cię od otrzymania płatności lub korzystania z usług na Ethereum.", "page-what-is-ethereum-comm-desc": "Nasza społeczność obejmuje ludzi ze wszystkich środowisk, w tym artystów, kryptoanarchistów, firmy notowane na Fortune 500, a teraz także i Ciebie. Dowiedz się jak możesz zaangażować się już dziś.", "page-what-is-ethereum-commerce-card": "Gwarancje handlowe", "page-what-is-ethereum-commerce-card-desc": "Klienci otrzymują bezpieczne rozwiązanie i wbudowaną gwarancję, że środki przechodzą bezpośrednio z rąk do rąk, jeśli wszystkie warunki zostały spełnione. Podobnie deweloperzy mogą być pewni, że zasady nie zostaną zmienione.", - "page-what-is-ethereum-composable-card": "Wszystkie produkty są komponowalne", - "page-what-is-ethereum-composable-card-desc": "Ponieważ wszystkie aplikacje są zbudowane na tym samym blockchain ze wspódzielonym globalnym stanem, mogą się wzajemnie budować (jak klocki Lego). Umożliwia to tworzenie lepszych produktów i doświadczeń przez cały czas.", + "page-what-is-ethereum-composable-card": "Produkty kompozytowe", + "page-what-is-ethereum-composable-card-desc": "Wszystkie aplikacje są zbudowane na tym samym blockchainie ze wspólnym globalnym stanem, co oznacza, że mogą się nawzajem budować (jak klocki Lego). Pozwala to na tworzenie lepszych produktów i doświadczeń oraz zapewnia, że nikt nie może usunąć narzędzi, na których opierają się aplikacje.", "page-what-is-ethereum-community": "Społeczność Ethereum", "page-what-is-ethereum-desc": "Fundament naszej cyfrowej przyszłości", "page-what-is-ethereum-explore": "Odkryj Ethereum", - "page-what-is-ethereum-internet-card": "Bardziej prywatny Internet", - "page-what-is-ethereum-internet-card-desc": "Nie musisz podawać wszystkich swoich danych osobowych, aby używać aplikacji Ethereum. Ethereum buduje gospodarkę opartą na wartości, a nie na nadzorze.", + "page-what-is-ethereum-internet-card": "Otwarta sieć", + "page-what-is-ethereum-internet-card-desc": "Każdy może wchodzić w interakcje z siecią Ethereum lub tworzyć na niej aplikacje. Pozwala to na kontrolowanie własnych aktywów i tożsamości, zamiast kontrolowania ich przez kilka wielkich korporacji.", "page-what-is-ethereum-meet-comm": "Poznaj społeczność", "page-what-is-ethereum-meta-description": "Poznaj Ethereum, dowiedz się co robi i jak wypróbować je dla siebie.", "page-what-is-ethereum-meta-title": "Czym jest Ethereum?", "page-what-is-ethereum-p2p-card": "Sieć typu peer-to-peer", - "page-what-is-ethereum-p2p-card-desc": "Ethereum pozwala na przesyłanie pieniędzy lub zawieranie umów bezpośrednio z innymi. Nie musisz korzystać z firm pośredniczących.", + "page-what-is-ethereum-p2p-card-desc": "Ethereum pozwala na koordynację, zawieranie umów lub transfer zasobów cyfrowych bezpośrednio z innymi osobami. Nie musisz polegać na pośrednikach.", "page-what-is-ethereum-start-building-btn": "Zacznij tworzenie", "page-what-is-ethereum-title": "Co to jest Ethereum?", "page-what-is-ethereum-subtitle": "Kompleksowy przewodnik dla początkujących, jak działa Ethereum, jakie przynosi korzyści i jak jest wykorzystywany przez miliony ludzi na całym świecie.", "page-what-is-ethereum-button-lets-start": "Zaczynamy", "page-what-is-ethereum-blockchain-tab-title": "Czym jest blockchain?", - "page-what-is-ethereum-blockchain-tab-content": "Blockchain to baza danych transakcji, która jest aktualizowana i udostępniana przez wiele komputerów w sieci. Nowy dodawany zestaw transakcji nazywamy „blokiem” – stąd nazwa blockchain. Większość blockchainów jest publiczna i można tylko dodawać dane, a nie je usuwać. Jeśli ktoś chciałby zmienić jakąkolwiek informację lub oszukać system, musi to zrobić na większości komputerów w sieci. A to, jak możesz sobie wyobrazić, bardzo dużo komputerów! To sprawia, że założone sieci blockchainów takie jak Ethereum są bardzo bezpieczne.", - "page-what-is-ethereum-cryptocurrency-tab-title": "Dlaczego jest ona nazywana kryptowalutą?", - "page-what-is-ethereum-cryptocurrency-tab-content": "Blockchain używają technik kryptograficznych, aby upewnić się, że Twoje środki są bezpieczne. Podobne techniki stosowane są w sektorze bankowym od wielu lat w celu zapewnienia bezpieczeństwa transakcji pieniężnych. Można więc powiedzieć, że kryptowaluty mają poziom bezpieczeństwa banku.", + "page-what-is-ethereum-blockchain-tab-content": "Blockchain to baza danych transakcji, która jest aktualizowana i udostępniana na wielu komputerach w sieci. Każdy nowy dodawany zestaw transakcji nazywany „blokiem” – stąd nazwa blockchain. Publiczne blockchainy takie jak Ethereum pozwalają każdemu na dodawanie, ale nie usuwanie danych. Jeśli ktoś chciałby zmienić jakąkolwiek informację lub oszukać system musiałby to zrobić na więkoszści komputerów w sieci. To bardzo dużo! To sprawia, że zdecentralizowane blockchainy takie jak Ethereum są bardzo bezpieczne.", + "page-what-is-ethereum-cryptocurrency-tab-title": "Czym jest kryptowaluta?", + "page-what-is-ethereum-cryptocurrency-tab-content-1": "Kryptowaluta to termin używany do opisania wielu rodzajów wymiennych tokenów cyfrowych zabezpieczonych za pomocą blockchainu. Wszystko zaczęło się od Bitcoina. Bitcoin może być używany do przekazywania wartości pomiędzy dwoma stronami bez konieczności ufania pośrednikowi. Musisz tylko zaufać kodowi Bitcoina, który jest otwarty i swobodnie dostępny.", + "page-what-is-ethereum-cryptocurrency-tab-content-2": "Powodem, dla którego aktywa takie bitcoin i ether są nazywane „kryptowalutami”, jest to, że bezpieczeństwo Twoich danych i aktywów jest gwarantowane przez kryptografię, a nie przez zaufanie instytucji lub korporacji do uczciwego działania.", + "page-what-is-ethereum-cryptocurrency-tab-content-3": "Ethereum ma własną natywną kryptowalutę, ether (ETH), która jest używana do płacenia za określone działania w sieci. Można ją przekazywać innym użytkownikom lub wymieniać na inne tokeny na Ethereum. Ether jest wyjątkowy, ponieważ jest używany do płacenia za obliczenia wymagane do tworzenia i uruchamiania aplikacji i organizacji na Ethereum.", "page-what-is-ethereum-summary-title": "Podsumowanie", - "page-what-is-ethereum-summary-desc-1": "Ethereum to technologia budowania aplikacji i organizacji, przechowywania aktywów, zawierania transakcji i komunikowania się bez kontroli centralnego organu. Nie ma potrzeby przekazywania wszystkich Twoich danych osobowych do korzystania z Ethereum — kontrolujesz swoje własne dane i to, co jest udostępniane. Ethereum ma własną kryptowalutę, Ether, która jest używana do płacenia za określone działania w sieci Ethereum.", - "page-what-is-ethereum-summary-desc-2": "Nadal nie do końca rozumiesz? Wyjaśnijmy wszystko krok po kroku.", - "page-what-is-ethereum-what-is-crypto-title": "Czym jest kryptowaluta?", - "page-what-is-ethereum-what-is-crypto-desc-1": "Krypto (skrót od kryptowaluty) to nowa forma cyfrowego pieniądza zasilanego kryptografią.", - "page-what-is-ethereum-what-is-crypto-desc-2": "Wszystko rozpoczęło się w 2008 roku od Bitcoina. Możesz użyć go do wysyłania środków do każdego na całym świecie. Kryptowaluty różnią się od zwykłych przelewów bankowych lub innych usług finansowych, takich jak Paypal czy Alipay, tym, że po raz pierwszy nie ma w nich pośrednika.", - "page-what-is-ethereum-what-is-crypto-desc-3": "Czekaj, kim jest pośrednik?", - "page-what-is-ethereum-what-is-crypto-desc-4": "Pośrednik jest organem centralnym, takim jak bank lub rząd, który interweniuje w transakcję między nadawcą a odbiorcą. Mają oni uprawnienia do przeglądania, cenzurowania lub odwracania transakcji i mogą dzielić się zgromadzonymi o Tobie wrażliwymi danymi z osobami trzecimi. Często również dyktują, do których usług finansowych masz dostęp.", - "page-what-is-ethereum-what-is-crypto-desc-5": "Inaczej jest w przypadku kryptowalut. Transakcje bezpośrednio łączą nadawcę i odbiorcę bez konieczności kontaktowania się z jakimkolwiek organem centralnym. Nikt inny nie będzie miał dostępu do Twoich środków i nikt nie będzie w stanie Ci powiedzieć, z jakich usług możesz korzystać. Jest to możliwe ze względu na technologię blockchain, na której działają kryptowaluty.", + "page-what-is-ethereum-summary-desc-1": "Ethereum to sieć komputerów na całym świecie, które przestrzegają zbioru zasad zwanych protokołem Ethereum. Sieć Ethereum działa jako fundament dla społeczności, aplikacji, organizacji i zasobów cyfrowych, które każdy może budować i wykorzystywać.", + "page-what-is-ethereum-summary-desc-2": "Możesz utworzyć konto Ethereum z dowolnego miejsca i w dowolnym momencie i odkrywać świat aplikacji lub tworzyć własne. Główną innowacją jest to, że można to wszystko robić bez zaufania do centralnego organu, który mógłby zmienić zasady lub ograniczyć twój dostęp.", + "page-what-is-ethereum-summary-desc-3": "Czytaj dalej, aby dowiedzieć się więcej…", "page-what-is-ethereum-btc-eth-diff-title": "Jaka jest różnica pomiędzy Ethereum a Bitcoinem?", "page-what-is-ethereum-btc-eth-diff-1": "Założony w 2015 r. Ethereum opiera się na innowacjach Bitcoina, z kilkoma dużymi różnicami.", "page-what-is-ethereum-btc-eth-diff-2": "Obie kryptowaluty pozwalają na korzystanie z pieniądza cyfrowego bez dostawców płatności lub banków. Ethereum jest programowalne, więc możesz również budować i wdrażać zdecentralizowane aplikacje w jego sieci.", - "page-what-is-ethereum-btc-eth-diff-3": "To, że Ethereum jest programowalne, oznacza, że możesz budować aplikacje, które używają blockchain do przechowywania danych lub kontrolowania tego, co może zrobić Twoja aplikacja. Prowadzi to do tworzenia łańcucha bloków (blockchain) o ogólnym przeznaczeniu, który może być zaprogramowany, aby zrobić wszystko. Nie mając ograniczeń, Ethereum pozwala na wielką innowacyjność.", - "page-what-is-ethereum-btc-eth-diff-4": "Podczas gdy Bitcoin jest tylko siecią płatniczą, Ethereum przypomina rynek usług finansowych, gamingowych, społecznościowych i innych aplikacji, które szanują Twoją prywatność i nie mogą Cię ocenzurować.", + "page-what-is-ethereum-btc-eth-diff-3": "Bitcoin umożliwia nam wysyłanie sobie nawzajem podstawowych wiadomości o tym, co uważamy za cenne. Ustalanie wartości bez autorytetu jest już potężne. Ethereum rozszerza to: zamiast tylko wiadomości, możesz napisać dowolny program lub kontrakt. Nie ma ograniczeń co do rodzajów kontraktów, które mogą byc tworzone i uzgadniane, stąd w sieci Ethereum pojawiają się wielkie innowacje.", + "page-what-is-ethereum-btc-eth-diff-4": "Podczas gdy Bitcoin jest tylko siecią płatniczą, Ethereum jest bardziej jak rynek usług finansowych, gier, społeczności i innych aplikacji.", "page-what-is-ethereum-what-can-eth-do-title": "Co może zrobić Ethereum?", "page-what-is-ethereum-why-would-i-use-ethereum-title": "Dlaczego warto używać Ethereum?", - "page-what-is-ethereum-why-would-i-use-ethereum-1": "Jeśli kiedykolwiek wysłałeś(-aś) pieniądze za granicę (lub planujesz) lub musiałeś(-aś) się martwić o przyszłość Twoich aktywów z powodu sił zewnętrznych poza Twoją kontrolą w Twoim kraju albo zostały wprowadzone liczne ograniczenia i opłaty nakładane przez tradycyjne instytucje finansowe w odniesieniu do codziennych transakcji, powinieneś(-aś) być zainteresowany(-a) tym, co kryptowaluty mają do zaoferowania.", - "page-what-is-ethereum-why-would-i-use-ethereum-2": "Pamiętajmy, że Ethereum jest powieścią, która jest wciąż pisana, i wiele innych powodów, aby z niego korzystać, odkryto w miarę jego rozwoju z upływem czasu.", + "page-what-is-ethereum-why-would-i-use-ethereum-1": "Jeśli interesują Cię bardziej odporne, otwarte i godne zaufania sposoby globalnej koordynacji, tworzenia organizacji, budowania aplikacji i dzielenia się wartością, Ethereum jest dla Ciebie.", + "page-what-is-ethereum-why-would-i-use-ethereum-2": "Ethereum było również bezcenne dla osób, które musiały poradzić sobie z niepewnością co do bezpieczeństwa, solidności lub mobilności swoich aktywów z powodu sił zewnętrznych pozostających poza ich kontrolą.", "page-what-is-ethereum-slide-1-title": "Tańsze i szybsze płatności transgraniczne", "page-what-is-ethereum-slide-1-desc-1": "Stablecoiny to nowatorski rodzaj kryptowaluty, który opiera się o stabilniejsze aktywa u podstaw swojej wartości. Większość z nich powiązane jest z dolarem amerykańskim, który utrzymuje ich wartość. Pozwala to na stworzenie taniego i szybkiego, globalnego systemu płatności. Większość stablecoinów została stworzona w sieci Ethereum.", "page-what-is-ethereum-slide-1-desc-2": "Ethereum i stablecoiny znacznie ułatwiają przesyłanie pieniędzy za granicę. Zwykle trwa to zaledwie kilka minut, by pieniądze znalazły się na drugim końcu globu. W przeciwieństwie do kilku jak nie kilkunastu dni roboczych, które potrzebuje Twój bank na zrealizowanie takiej transakcji o znacznie większej prowizji. Ponadto nie ma dodatkowych opłat, zależnych od wysokości transakcji, oraz ograniczeń co do tego, gdzie i dlaczego wysyłasz pieniądze.", @@ -61,26 +58,24 @@ "page-what-is-ethereum-slide-4-desc-1": "Gry typu play-to-earn (gdzie gracze faktycznie zarabiają) od niedawna przekształcają całą branżę. Zwykle w grach zakazuje się graczom handlu czy przesyłania np. przedmiotów innym za prawdziwe pieniądze. To często prowadzi do czarnorynkowych rozwiązań w postaci stron internetowych, gdzie owe rzeczy można spieniężyć. Strony te często stanowią zagrożenie dla bezpieczeństwa. Gry oparte na blockchainie posiadają swoją ekonomię, która dopuszcza takie praktyki, jednak w bezpiecznym i zaufanym środowisku.", "page-what-is-ethereum-slide-4-desc-2": "Ponadto gracze są zachęcani do handlu swoimi tokenami za prawdziwe pieniądze, co sprawia, że zarabiają w czasie gry.", "page-what-is-ethereum-meet-ether-title": "Poznaj ether, kryptowalutę Ethereum", - "page-what-is-ethereum-meet-ether-desc-1": "Ethereum ma natywną kryptowalutę zwaną ether (ETH). Jest to czysto cyfrowy twór, który błyskawicznie możesz wysłać każdemu, w każde miejsce na świecie. Podaż ETH nie jest kontrolowana przez żaden rząd ani firmę – jest zdecentralizowana i całkowicie transparentna. Nowe monety (nazywane także tokenami) są emitowane tylko dla stakerów, którzy zabezpieczają sieć.", - "page-what-is-ethereum-meet-ether-desc-2": "Każde działanie w sieci Ethereum wymaga pewnej ilości mocy obliczeniowej. Ta opłata jest płacona w formie etheru. Oznacza to, że potrzebujesz małej ilości ETH do korzystania z sieci.", + "page-what-is-ethereum-meet-ether-desc-1": "Wiele działań w sieci Ethereum wymaga wykonania pewnych prac na wbudowanym komputerze Ethereum (znanym jako maszyna wirtualna Ethereum). Obliczenia te nie są darmowe; są opłacane za pomocą natywnej kryptowaluty Ethereum o nazwie ether (ETH). Oznacza to, że potrzebujesz przynajmniej niewielkiej ilości etheru do korzystania z sieci.", + "page-what-is-ethereum-meet-ether-desc-2": "Ether jest całkowicie cyfrowy i możesz wysłać go natychmiastowo do każdego na świecie. Podaż etheru nie jest kontrolowana przez żaden rząd ani firmę – jest zdecentralizowana i całkowicie przejrzysta. Ether jest emitowany w ściśle określony sposób, zgodnie z protokołem, wyłącznie stakerom, którzy zabezpieczają sieć.", "page-what-is-ethereum-what-is-ether": "Czym jest ether?", "page-what-is-ethereum-get-eth": "Zdobądź ETH", - "page-what-is-ethereum-what-can-i-do-title": "Co moge zrobić z monetami ETH?", - "page-what-is-ethereum-what-can-i-do-desc-1": "Okazuje się, że wiele rzeczy! Jednym z najistotniejszych zastosowań technologii Ethereum są zdecentralizowane finanse (DeFi), które otwierają przed Tobą wiele obszarów usług bankowych, z których może korzystać każdym, kto ma Internet. Możesz użyć monet ether, by wziąć pożyczkę lub zapewnić płynność finansową, aby zarabiać na odsetkach.", "page-what-is-ethereum-explore-applications": "Odkrywaj aplikacje", "page-what-is-ethereum-learn-defi": "Dowiedz się więcej o DeFi", "page-what-is-ethereum-who-runs-ethereum-title": "Kto prowadzi Ethereum?", - "page-what-is-ethereum-who-runs-ethereum-desc-1": "Ethereum nie jest kontrolowane przez żadną jednostkę. Istnieje wyłącznie poprzez zdecentralizowane uczestnictwo i współpracę społeczności. Ethereum korzysta z wielu węzłów (komputerów z kopią danych blockchaina Ethereum) utrzymywanych przez wolontariuszy w celu zastąpienia poszczególnych serwerów i systemów chmurowych należących do głównych dostawców i usług internetowych.", - "page-what-is-ethereum-who-runs-ethereum-desc-2": "Te rozproszone węzły, obsługiwane zarówno przez osoby indywidualne, jak i przedsiębiorstwa, rozsiane są po całym świecie, co zapewnia odporność infrastruktury sieci Ethereum. Przez to jest ona mniej podatna na ataki hakerskie i wyłączenie. Od 2015 roku, czyli powstania sieci, jej działanie nigdy nie zostało przerwane. Ethereum składa się z tysięcy pojedynczych węzłów, to czyni ją najbardziej zdecentralizowaną zaraz po sieci bitcoin.", + "page-what-is-ethereum-who-runs-ethereum-desc-1": "Ethereum nie jest kontrolowane przez żaden konkretny podmiot. Istnieje zawsze, gdy istnieją połączone komputery z oprogramowaniem działającym zgodnie z protokołem Ethereum i dodającym wartości do jego blockchainu. Każdy z tych komputerów znany jest jako węzeł. Węzły mogą być uruchamiane przez każdego, ale żeby wziąć udział w zabezpieczaniu sieci trzeba stakować ETH (natywny token Ethereum). Każdy, kto posiada 32 ETH, może to robić bez zezwolenia.", + "page-what-is-ethereum-who-runs-ethereum-desc-2": "Nawet kod źródłowy Ethereum nie jest tworzony przez jeden podmiot. Każdy może zasugerować zmiany w protokole i dyskutować o aktualizacjach. Istnieje wiele implementacji protokołu Ethereum, które są tworzone przez niezależne organizacje w kilku językach programowania i są one zwykle budowane w sposób otwarty i zachęcają do wkładu społeczności.", "page-what-is-ethereum-run-a-node": "Dodaj węzeł", "page-what-is-ethereum-smart-contract-title": "Czym są inteligentne kontrakty?", - "page-what-is-ethereum-smart-contract-desc-1": "Inteligentne kontrakty to proste programy komputerowe usytuowane na blockchainie Ethereum. Działają one tylko w momencie aktywowania transakcji przez użytkownika lub inny kontrakt. Czyni to Ethereum bardziej elastyczną, co szczególnie odróżnia ją od innych kryptowalut. Te programy są tym, co obecnie nazywamy zdecentralizowanymi aplikacjami, czyli dapps.", + "page-what-is-ethereum-smart-contract-desc-1": "Inteligentne kontrakty to programy komputerowe działające na blockchainie Ethereum. Są one wykonywane po uruchomieniu przez transakcję użytkownika. Sprawiają, że Ethereum jest bardzo elastyczne w tym, co robi. Te programy działają jako elementy składowe zdecentralizowanych aplikacji i organizacji.", "page-what-is-ethereum-smart-contract-desc-2": "Czy kiedykolwiek korzystałeś(-aś) z produktu lub usługi, która zmieniła warunki użytkowania lub usunęła cechy, które były dla Ciebie przydatne? Inteligentny kontrakt raz umieszczony w sieci Ethereum istnieje na niej tak długo, jak działać będzie sama sieć. Nawet ten, kto umieścił tam inteligentny kontrakt, nie jest w stanie go usunąć. Inteligentne kontrakty są zautomatyzowane, dlatego żaden użytkownik nie jest dyskryminowany, a one same zawsze są gotowe do użytku.", - "page-what-is-ethereum-smart-contract-desc-3": "Popularnymi przykładami inteligentnych kontraktów są aplikacje, zdecentralizowane giełdy handlowe, ubezpieczenia, aplikacje crowdfoundingowe — zasadniczo wszystko, o czym pomyślisz.", + "page-what-is-ethereum-smart-contract-desc-3": "Popularnymi przykładami inteligentnych kontraktów są aplikacje pożyczkowe, zdecentralizowane giełdy handlowe, ubezpieczenia, finansowania kwadratowe, sieci społecznościowe, NFT – w zasadzie wszystko o czym pomyślisz.", "page-what-is-ethereum-more-on-smart-contracts": "Więcej na temat inteligentnych kontraktów", "page-what-is-ethereum-explore-dapps": "Przeglądaj zdecentralizowane aplikacje", "page-what-is-ethereum-criminal-activity-title": "Ponoć kryptowaluty są wykorzystywane jako narzędzie działalności przestępczej. Czy to prawda?", - "page-what-is-ethereum-criminal-activity-desc-1": "Podobnie jak każda forma pieniądza, ta również może być wykorzystana w niewłaściwy sposób. Jednak wszystkie transakcje w sieci Ethereum są zawierane na otwartym blockchainie. Dzięki temu organom ścigania łatwiej jest je śledzić niż te w tradycyjnym systemie finansowym. Przez to sieć Ethereum może być mniej atrakcyjną opcją dla tych, którzy nie chcieliby zostać wykryci.", + "page-what-is-ethereum-criminal-activity-desc-1": "Podobnie jak każda technologia, czasami będzie ona niewłaściwie wykorzystywana. Jednakże, ponieważ wszystkie transakcje Ethereum odbywają się na otwartym blockchainie, władzom często łatwiej jest śledzić nielegalną działalność niż w tradycyjnym systemie finansowym, co prawdopodobnie czyni Ethereum mniej atrakcyjnym wyborem dla tych, którzy woleliby pozostać niewykryci.", "page-what-is-ethereum-criminal-activity-desc-2": "Kryptowaluty w znacznie mniejszym stopniu używane są do działalności przestępczej niż pieniądz fiducjarny. Wynika to z raportu Eropolu, Agencji Unii Europejskiej ds. Współpracy Organów Ścigania:", "page-what-is-ethereum-criminal-activity-desc-3": "„Wykorzystanie kryptowalut do nielegalnych działań wydaje się obejmować jedynie niewielką część ogólnej gospodarki kryptowalutowej i wydaje się, że jest ona stosunkowo mniejsza niż kwota nielegalnych środków finansowych pochodzących z systemów tradycyjnych”.", "page-what-is-ethereum-energy-title": "A co ze zużyciem energii przez Ethereum?", @@ -88,20 +83,21 @@ "page-what-is-ethereum-energy-desc-2": "The Merge było największą modernizacją Ethereum i zmniejszyło zużycie energii wymaganej do zabezpieczenia Ethereum o 99,95%, tworząc bezpieczniejszą sieć przy znacznie niższych kosztach emisji dwutlenku węgla. Ethereum jest teraz niskoemisyjnym łańcuchem bloków, o lepszych zabezpieczeniach i większej skalowalności.", "page-what-is-ethereum-more-on-energy-consumption": "Więcej o zużyciu energii", "page-what-is-ethereum-energy-consumption-chart-legend": "Roczne zużycie energii w TW/r", - "energy-consumption-chart-youtube-label": "YouTube", - "energy-consumption-chart-gold-mining-galaxy-label": "Wydobycie złota (Galaxy Digital)", - "energy-consumption-chart-global-data-centers-label": "Global data centers", - "energy-consumption-chart-gold-mining-cbeci-label": "Wydobycie złota (CBECI)", + "energy-consumption-chart-global-data-centers-label": "Światowe centra danych", + "energy-consumption-gold-mining-cbeci-label": "Wydobycie złota", "energy-consumption-chart-btc-pow-label": "BTC PoW", "energy-consumption-chart-netflix-label": "Netflix", "energy-consumption-chart-eth-pow-label": "BTC PoW", "energy-consumption-chart-gaming-us-label": "Gry w USA", + "energy-consumption-chart-airbnb-label": "AirBnB", "energy-consumption-chart-paypal-label": "PayPal", "energy-consumption-chart-eth-pos-label": "ETH PoS", "page-what-is-ethereum-the-merge-update": "Aktualizacja połączenia", - "page-what-is-ethereum-additional-reading": "Przypisy", + "page-what-is-ethereum-additional-reading": "Dalsza lektura", "page-what-is-ethereum-week-in-ethereum": "Cotygodniowe wiadomości Ethereum", "page-what-is-ethereum-week-in-ethereum-desc": "– Cotygodniowy newsletter zawierający kluczowe zmiany w ekosystemie.", + "page-what-is-ethereum-kernel-dreamers": "Kernel", + "page-what-is-ethereum-kernel-dreamers-desc": "Marzenie Ethereum", "page-what-is-ethereum-atoms-institutions-blockchains": "Atom, instytucje, blockchainy", "page-what-is-ethereum-atoms-institutions-blockchains-desc": "– Dlaczego blockchainy mają znaczenie?", "page-what-is-ethereum-ethereum-in-numbers-title": "Ethereum w liczbach", diff --git a/src/intl/pl/template-usecase.json b/src/intl/pl/template-usecase.json index 90804ffb25a..4c74b984de4 100644 --- a/src/intl/pl/template-usecase.json +++ b/src/intl/pl/template-usecase.json @@ -4,8 +4,10 @@ "template-usecase-dropdown-dao": "Zdecentralizowane autonomiczne organizacje (DAO)", "template-usecase-dropdown-social-networks": "Zdecentralizowane sieci społecznościowe", "template-usecase-dropdown-identity": "Zdecentralizowana tożsamość", + "template-usecase-dropdown-desci": "Zdecentralizowana nauka (DeSci)", + "template-usecase-dropdown-refi": "Finanse regeneracyjne (ReFi)", "template-usecase-dropdown": "Przykłady użycia Ethereum", - "template-usecase-banner": "Zastosowanie Ethereum stale się rozwija i ewoluuje. Dodaj wszelkie informacje, które twoim zdaniem sprawią, że wszystko będzie bardziej przejrzyste i aktualne.", + "template-usecase-banner": "Zastosowania Ethereum stale się rozwijają i ewoluują. Dodaj wszelkie informacje, które Twoim zdaniem sprawią, że wszystko będzie jaśniejsze lub bardziej aktualne.", "template-usecase-edit-link": "Edytuj stronę", - "template-usecase-dropdown-aria": "Użyj rozwijanego menu" + "template-usecase-dropdown-aria": "Rozwijane menu przykładów użycia" } diff --git a/src/intl/pt-br/learn-quizzes.json b/src/intl/pt-br/learn-quizzes.json index 6dc0dbd02f0..45c97d9ff6d 100644 --- a/src/intl/pt-br/learn-quizzes.json +++ b/src/intl/pt-br/learn-quizzes.json @@ -1,14 +1,33 @@ { + "add-quiz": "Adicionar uma pergunta/teste", + "average-score": "Pontuação média:", + "basics": "Fundamentos básicos do Ethereum", + "basics-description": "Esta seção abrange os conceitos fundamentais do Ethereum para garantir que você tenha uma base eficiente.", + "completed": "Concluído:", + "community-stats": "Estatísticas da comunidade", + "contribute": "Contribua para a nossa biblioteca.", "correct": "Correto", "explanation": "Explicação", "next-question": "Próxima pergunta", + "next-quiz": "Próximo teste", + "page-assets-merge": "A integração", + "passed": "Você passou no teste!", + "questions": "Perguntas", + "questions-answered": "Perguntas respondidas:", + "quizzes-subtitle": "Saiba em que nível compreende o Ethereum e as criptomoedas. Está pronto para se tornar um especialista?", + "retry": "Valor da nova tentativa:", "score": "Pontuação", "see-results": "Veja os resultados", "share-results": "Compartilhar resultados", - "submit-answer": "Enviar a resposta", - "test-your-knowledge": "Teste seus conhecimentos", - "total": "Total", + "start": "Iniciar", + "submit-answer": "Verificar a resposta", + "test-your-knowledge": "Teste o seu conhecimento sobre Ethereum", "try-again": "Tente novamente", + "using-ethereum": "Como utilizar o Ethereum", + "using-ethereum-description": "Aprofunde-se nas aplicações reais do Ethereum e saiba como essa revolucionária plataforma blockchain está remodelando os setores. Essa é uma ótima maneira de garantir que você compreenda tudo muito bem antes de começar a usar ativamente as criptomoedas.", + "want-more-quizzes": "Quer mais testes?", + "your-results": "Os seus resultados", + "your-total": "O seu total de pontos", "a001-prompt": "A maior diferença entre Ethereum e Bitcoin é:", "a001-a-label": "O Ethereum não permite que você faça pagamentos para outras pessoas", "a001-a-explanation": "Tanto o Bitcoin como o Ethereum permitem que você faça pagamentos para outras pessoas.", @@ -41,16 +60,16 @@ "a004-b-label": "Uma vez", "a004-c-label": "Quatro vezes", "a004-d-label": "Mais de 10 vezes", - "a004-explanation": "O Ethereum nunca ficou completamente offline desde que foi lançado.", + "a004-explanation": "O Ethereum nunca ficou completamente offline (parou de produzir blocos) desde que foi lançado.", "a005-prompt": "O Ethereum consome mais eletricidade que:", - "a005-a-label": "YouTube", - "a005-a-explanation": "O YouTube usa ~244 Terawatts por ano. A Ethereum usa 0,01 Terawatts por ano.", + "a005-a-label": "Mineração de ouro", + "a005-a-explanation": "A mineração de ouro utiliza ~131 Terawatts-horas por ano. O Ethereum usa cerca de 0,0026 Terawatt-horas por ano.", "a005-b-label": "Netflix", - "a005-b-explanation": "O YouTube usa ~94 Terawatts por ano. A Ethereum usa 0,01 Terawatts por ano.", + "a005-b-explanation": "A Netflix utiliza 0,451 Terawatt-horas por ano. O Ethereum usa cerca de 0,0026 Terawatt-horas por ano.", "a005-c-label": "PayPal", - "a005-c-explanation": "O PayPal usa ~0,26 Terawatts por ano. A Ethereum usa 0,01 Terawatts por ano.", + "a005-c-explanation": "A Paypal utiliza ~0,26 Terawatt-horas por ano. O Ethereum usa cerca de 0,0026 Terawatt-horas por ano.", "a005-d-label": "Nenhuma das anteriores", - "a005-d-explanation": "Ethereum usa 0,01 Terawatts por ano. Menos que o YouTube (~244 TW/ano), Netflix (~94 TW/ano) e Paypal (~0.26 TW/ano).", + "a005-d-explanation": "O Ethereum usa cerca de 0,0026 Terawatt-horas por ano, menos do que a mineração de ouro (~131 TWh/ano), Netflix (~0,451 TWh/ano) e Paypal (~0,26 TWh/ano).", "b001-prompt": "Ether também é conhecido como:", "b001-a-label": "ETC", "b001-a-explanation": "ETC é o símbolo do Ethereum Classic.", @@ -305,8 +324,5 @@ "h005-c-label": "Eth1", "h005-c-explanation": "Eth1 foi o nome original dado à camada de execução, não à camada de consenso.", "h005-d-label": "Participação", - "h005-d-explanation": "Participar (staking) é depositar ETH em um contrato inteligente para ajudar a proteger a cadeia.", - "page-assets-merge": "A integração", - "security": "Segurança", - "page-what-is-ethereum-what-is-ether": "O que é ether?" + "h005-d-explanation": "Participar (staking) é depositar ETH em um contrato inteligente para ajudar a proteger a cadeia." } diff --git a/src/intl/pt-br/page-learn.json b/src/intl/pt-br/page-learn.json index 619f841d2ee..88ad24f42e0 100644 --- a/src/intl/pt-br/page-learn.json +++ b/src/intl/pt-br/page-learn.json @@ -1,37 +1,37 @@ { "toc-learn-hub": "Centro de aprendizagem", - "toc-what-is-crypto-ethereum": "O que é criptomoeda e Ethereum?", + "toc-what-is-crypto-ethereum": "O que é o Ethereum?", "toc-how-do-i-use-ethereum": "Como usar Ethereum?", "toc-what-is-ethereum-used-for": "Para que é usado o Ethereum?", "toc-strengthen-the-ethereum-network": "Fortalecer a rede Ethereum", "toc-learn-about-the-ethereum-protocol": "Saiba mais sobre o protocolo Ethereum", "toc-learn-about-the-ethereum-community": "Saiba mais sobre a comunidade Ethereum", "toc-books-and-podcasts": "Livros e podcasts", - "hero-header": "Aprenda sobre a Ethereum", + "hero-header": "Saiba mais sobre o Ethereum", "hero-subtitle": "Seu guia educacional para o mundo do Ethereum. Aprenda como o Ethereum funciona e como se conectar a ele. Esta página inclui artigos, guias e recursos técnicos e não técnicos.", "hero-button-lets-get-started": "Vamos começar", - "what-is-crypto-1": "Você pode ter ouvido falar sobre criptomoedas, Bitcoin e blockchain. Esta página ajudará você a aprender sobre o que eles são e como se relacionam com o Ethereum.", - "what-is-crypto-link-1": "E o que é o Ethereum afinal?", - "what-is-crypto-2": "Bitcoin permite que qualquer pessoa transfira dinheiro globalmente. O Ethereum também, além de permitir que qualquer um crie e concorde com qualquer tipo de contrato imaginável. Ele é resiliente e flexível: qualquer programa de computador pode ser executado no Ethereum.", + "what-is-crypto-1": "Você já deve ter ouvido falar sobre criptomoedas, blockchains e Bitcoin. Os links abaixo ajudarão você a saber o que são e como se relacionam com o Ethereum.", + "what-is-crypto-2": "As criptomoedas, como o Bitcoin, permitem que qualquer pessoa transfira dinheiro globalmente. Além de fazer isso, o Ethereum pode executar códigos que permitem que as pessoas criem aplicativos e organizações. O sistema é resiliente e flexível: qualquer programa de computador pode ser executado no Ethereum. Saiba mais e descubra como começar:", "what-is-ethereum-card-title": "O que é o Ethereum?", "what-is-ethereum-card-description": "Se você é novo, comece aqui para saber por que o Ethereum é importante.", "what-is-ethereum-card-image-alt": "Ilustração de uma pessoa olhando para um mercado. Representa o Ethereum.", "what-is-eth-card-title": "O que é ETH?", "what-is-eth-description": "Ether (ETH) é a moeda que alimenta a rede e os aplicativos Ethereum.", - "where-can-i-get-eth-card-title": "Onde posso obter ETH?", - "where-can-i-get-eth-card-description": "Existem muitas maneiras de obter ETH, dependendo da sua localização.", + "what-is-web3-card-title": "O que é Web3?", + "what-is-web3-card-description": "Web3 é um modelo para a internet que valoriza a propriedade de seus ativos e identidade.", "additional-reading-more-on-ethereum-basics": "Mais sobre os conceitos básicos do Ethereum", + "guides-hub-desc": "Guias: instruções passo a passo sobre como usar o Ethereum", + "quiz-hub-desc": "Central de testes: teste o seu conhecimento", "additional-reading-what-are-smart-contracts": "O que são contratos inteligentes?", - "additional-reading-a-developers-intro": "Uma introdução ao Ethereum para desenvolvedores", "additional-reading-what-is-web3": "O que é Web3?", - "additional-reading-value": "O que é valor?", - "additional-reading-decentralize-everything": "Descentralizar tudo", - "how-do-i-use-ethereum-1": "Usar o Ethereum é como se mudar para um novo lugar. As coisas vão se parecer estranhas no início, e todos se mudam por seus próprios motivos. Apesar disso, a primeira coisa de que você precisa são novas chaves. O software que cria e guarda as chaves da sua nova casa é chamado de “carteira”.", + "additional-reading-ethereum-in-thirty-minutes": "Ethereum em 30 minutos por Vitalik Buterin", + "additional-reading-get-eth": "Saiba como obter ETH", + "how-do-i-use-ethereum-1": "Utilizar o Ethereum pode ser muitas coisas para muitas pessoas. Talvez você queira entrar em um aplicativo, comprovar a sua identidade online ou transferir alguns ETH. O primeiro componente que você precisará é de uma conta. A maneira mais fácil de criar e acessar uma conta é usar um software chamado \"carteira\".", "what-is-a-wallet-card-title": "O que é uma carteira?", - "what-is-a-wallet-card-description": "As carteiras são como chaveiros: elas armazenam o que você precisa para ter acesso aos lugares que você valoriza.", + "what-is-a-wallet-card-description": "As carteiras digitais são como carteiras reais; elas armazenam o que você precisa para comprovar a sua identidade e ter acesso aos lugares que você valoriza.", "what-is-a-wallet-card-alt": "Ilustração de um robô.", "find-a-wallet-card-title": "Encontre uma carteira", - "find-a-wallet-card-description": "Ajudaremos você a encontrar a melhor carteira com base nos recursos que são importantes para você.", + "find-a-wallet-card-description": "Procure carteiras com base nos recursos que são importantes para você.", "find-a-wallet-button": "Lista de carteiras", "crypto-security-basics-card-title": "Noções básicas de segurança", "crypto-security-basics-card-description": "Aprenda a identificar golpes e como evitar os truques mais comuns.", @@ -41,9 +41,8 @@ "things-to-consider-banner-2": "As taxas podem ser altas dependendo do número de pessoas que tentam usar o Ethereum, por isso recomendamos usar", "things-to-consider-banner-layer-2": "Camadas 2", "additional-reading-more-on-using-ethereum": "Mais sobre como usar o Ethereum", - "additional-reading-how-to-create-an-ethereum-account": "Como \"registrar\" uma conta Ethereum", + "additional-reading-how-to-create-an-ethereum-account": "Como criar uma conta Ethereum", "additional-reading-how-to-use-a-wallet": "Como usar uma carteira", - "additional-reading-support-for-ethereum-and-wallets": "Suporte para Ethereum e carteiras", "additional-reading-layer-2": "Camada 2: reduzindo as taxas de transação", "what-is-ethereum-used-for-1": "O Ethereum levou à criação de novos produtos e serviços que podem melhorar diferentes áreas de nossas vidas. Ainda estamos nos estágios iniciais, mas há muito com que se animar.", "defi-card-title": "Finanças descentralizadas (DeFi)", @@ -86,13 +85,10 @@ "ethereum-whitepaper-card-button": "Leia o whitepaper", "more-on-ethereum-protocol-title": "Mais sobre o protocolo Ethereum", "more-on-ethereum-protocol-ethereum-for-developers": "Ethereum para desenvolvedores", - "more-on-ethereum-protocol-eips": "Propostas de Melhoria no Ethereum (EIP)", - "more-on-ethereum-protocol-history": "História do Ethereum", - "more-on-ethereum-protocol-governance": "Governança", - "more-on-ethereum-protocol-bridges": "Pontes", - "more-on-ethereum-protocol-kernel": "Kernel", - "more-on-ethereum-protocol-week-in-ethereum": "Notícias semanais do Ethereum", - "ethereum-community-description": "O sucesso do Ethereum é graças à sua comunidade incrivelmente dedicada. Milhares de pessoas inspiradoras e motivadas ajudam a impulsionar a visão do Ethereum. Venha e junte-se a nós!", + "more-on-ethereum-protocol-consensus": "Mecanismo de consenso baseado na prova de participação do Ethereum", + "more-on-ethereum-protocol-evm": "Computador integrado do Ethereum (EVM)", + "more-on-ethereum-protocol-nodes-and-clients": "Nós e clientes Ethereum", + "ethereum-community-description": "O sucesso do Ethereum se deve à sua comunidade incrivelmente dedicada. Milhares de pessoas inspiradoras e motivadas ajudam a levar adiante a visão do Ethereum e, ao mesmo tempo, oferecem segurança à rede por meio de participação e governança. Junte-se a nós!", "community-hub-card-title": "Centro comunitário", "community-hub-card-description": "Nossa comunidade inclui pessoas de todas as origens.", "community-hub-card-alt": "Ilustração de um grupo de desenvolvedores trabalhando juntos.", @@ -102,7 +98,7 @@ "online-communities-card-title": "Comunidades online", "online-communities-card-description": "As comunidades on-line oferecem uma ótima oportunidade para fazer perguntas mais específicas ou se envolver.", "online-communities-card-button": "Explore comunidades", - "books-about-ethereum": "Livros sobre Ethereum e Criptomoedas", + "books-about-ethereum": "Livros sobre Ethereum", "proof-of-stake-title": "Prova de participação", "proof-of-stake-description": "13 de setembro de 2022 — Vitalik Buterin, Nathan Schneider", "cryptopians-title": "The Cryptopians", @@ -111,29 +107,17 @@ "out-of-the-ether-description": "22 de setembro de 2020 — Matthew Leising", "the-infinite-machine-title": "The Infinite Machine", "the-infinite-machine-description": "14 de julho de 2020 — Camila Russo", - "the-age-of-cryptocurrency-title": "The Age of Cryptocurrency", - "the-age-of-cryptocurrency-description": "12 de janeiro de 2016 — Paul Vigna, Michael J. Casey", - "the-truth-machine-title": "The Truth Machine", - "the-truth-machine-description": "27 de fevereiro de 2018 — Paul Vigna, Michael J. Casey", - "digital-gold-title": "Digital Gold", - "digital-gold-description": "24 de maio de 2021 — Nathaniel Popper", - "kings-of-crypto-title": "Kings of Crypto", - "kings-of-crypto-description": "15 de dezembro de 2020 — Jeff John Roberts", "mastering-ethereum-title": "Mastering Ethereum", "mastering-ethereum-description": "23 de dezembro de 2018 — Andreas M. Antonopoulos, Gavin Wood Ph.D.", - "podcasts-about-ethereum": "Podcasts sobre o Ethereum e criptomoedas", + "podcasts-about-ethereum": "Podcasts sobre Ethereum", "bankless-title": "Bankless", "bankless-description": "Um guia sobre finanças com criptomoedas", - "uncommon-core-title": "Uncommon Core", - "uncommon-core-description": "Explora a natureza transformadora da moeda e dos serviços financeiros minimizados pela confiança", "zeroknowledge-title": "Zero Knowledge", "zeroknowledge-description": "Analisa em profundidade a tecnologia que impulsionará a Web descentralizada emergente e a comunidade que a está construindo", - "epicenter-title": "Epicentro", - "epicenter-description": "Explora as implicações técnicas, econômicas e sociais do setor de criptomoedas", + "green-pill-title": "Green Pill", + "green-pill-description": "Conheça os sistemas criptoeconômicos que criam externalidades positivas para o mundo", "unchained-title": "Unchained", "unchained-description": "Analisa em profundidade as pessoas que constroem a Internet descentralizada, os detalhes dessa tecnologia que poderá sustentar nosso futuro e alguns dos tópicos mais espinhosos da criptografia, como regulamentação, segurança e privacidade", - "into-the-bytecode-title": "Into the Bytecode", - "into-the-bytecode-description": "Um podcast sobre as ideias que moldam as criptomoedas", "the-daily-gwei-title": "The Daily Gwei", "the-daily-gwei-description": "Recapitula notícias, atualizações e análises sobre o Ethereum" } diff --git a/src/intl/pt-br/page-roadmap-vision.json b/src/intl/pt-br/page-roadmap-vision.json index d694ed03454..e94af3f994b 100644 --- a/src/intl/pt-br/page-roadmap-vision.json +++ b/src/intl/pt-br/page-roadmap-vision.json @@ -14,8 +14,8 @@ "page-roadmap-vision-problems": "Problemas atuais", "page-roadmap-vision-scalability": "Escalabilidade", "page-roadmap-vision-scalability-desc": "O Ethereum precisa conseguir lidar com mais transações por segundo sem aumentar o tamanho dos nós na rede. Os nós são participantes vitais da rede, que armazenam e executam a blockchain. Aumentar o tamanho do nó não é prático porque apenas aqueles com computadores poderosos e caros poderiam fazê-lo. Para dimensionar, o Ethereum precisa de mais transações por segundo, juntamente com mais nós. Mais nós significa mais segurança.", - "page-roadmap-vision-scalability-desc-3": "As melhorias na fragmentação espalharão os requisitos de armazenamento de dados por toda a rede, não exigindo mais que cada nó mantenha 100% dos dados. Embora isso não aborde diretamente o dimensionamento da execução de transações, esse problema está sendo tratado diretamente pelas soluções de rollup da camada 2.", - "page-roadmap-vision-scalability-desc-4": "Os rollups precisam de armazenamento barato na camada 1 para serem mais eficazes. A fragmentação dará espaço ao Ethereum para respirar, maximizando a eficiência nos rollups, permitindo melhorias exponenciais além do limite atual de 15 a 45 transações por segundo.", + "page-roadmap-vision-scalability-desc-3": "Os rollups da camada 2 dimensionam o Ethereum ao mover transações para fora da cadeia e ao publicar apenas dados resumidos no Ethereum. Esse agrupamento aumenta a taxa de transferência do Ethereum enquanto reduz drasticamente os custos para os usuários.", + "page-roadmap-vision-scalability-desc-4": "Os rollups exigem um armazenamento de baixo custo na camada 1 para fazer com que as transações sejam financeiramente acessíveis para os usuários. Isso será fornecido na forma de blobs (objeto binário grande [blob, na sigla em inglês]) anexados a blocos Ethereum. Eventualmente, muitos blobs serão anexados aos blocos Ethereum, o que permitirá oferecer um armazenamento acessível para muitos rollups.", "page-roadmap-vision-security": "Segurança", "page-roadmap-vision-security-desc": "As atualizações planejadas melhoram a segurança do Ethereum contra ataques coordenados.", "page-roadmap-vision-security-desc-3": "Na prova de participação, a segurança adicional vem de maiores fatores de dissuasão criptoeconômicos contra ataques. Isso ocorre porque, na prova de participação, os validadores que protegem a rede devem apostar quantidades significativas de ETH no protocolo. Se eles tentarem atacar a rede, o protocolo pode destruir automaticamente sua ETH.", @@ -36,7 +36,7 @@ "page-roadmap-vision-title-1": "Rede congestionada", "page-roadmap-vision-title-2": "Espaço em disco", "page-roadmap-vision-title-3": "Muita energia", - "page-roadmap-vision-trilemma-cardtext-1": "As melhorias no Ethereum tornarão o Ethereum escalável, seguro e descentralizado. A fragmentação tornará o Ethereum mais escalável aumentando as transações por segundo, diminuindo a potência necessária para executar um nó e validar a cadeia. A Beacon Chain tornará o Ethereum seguro com a coordenação de validadores por meio de um conjunto fragmentado de dados. Além disso, a fragmentação diminuirá a barreira à participação e limitará as economias de escala, criando uma rede maior e mais descentralizada.", + "page-roadmap-vision-trilemma-cardtext-1": "As melhorias do Ethereum o tornarão dimensionável, seguro e descentralizado. A participação reduziu a barreira ao envolvimento e limitou as economias de escala, criando uma rede maior e mais descentralizada.", "page-roadmap-vision-trilemma-cardtext-2": "Redes de blockchain seguras e descentralizadas exigem que cada nó verifique todas as transações processadas pela cadeia. Essa quantidade de trabalho limita o número de transações que podem acontecer a qualquer momento. Descentralizada e segura: está é a cadeia Ethereum hoje.", "page-roadmap-vision-trilemma-cardtext-3": "As redes descentralizadas funcionam enviando informações sobre transações entre nós — toda a rede precisa saber sobre qualquer mudança de estado. O dimensionamento das transações por segundo em uma rede descentralizada apresenta riscos de segurança porque quanto mais transações, maior o atraso e maior a probabilidade de ataque enquanto as informações estão em trânsito.", "page-roadmap-vision-trilemma-cardtext-4": "Aumentar o tamanho e o poder dos nós do Ethereum poderia aumentar as transações por segundo de uma forma segura, mas os requisitos de hardware restringiriam quem poderia fazer isso — e isso ameaça a descentralização. Espera-se que a fragmentação e a prova de participação permitam que o Ethereum possa ser dimensionado, aumentando a quantidade de nós e não o tamanho deles.", @@ -57,10 +57,11 @@ "page-roadmap-vision-understanding": "Entendendo a visão do Ethereum", "page-roadmap-vision-upgrade-needs": "A necessidade de melhorias", "page-roadmap-vision-upgrade-needs-desc": "O protocolo Ethereum que foi lançado em 2015 teve um sucesso incrível. Mas a comunidade Ethereum já sabia que algumas melhorias-chave eram necessárias para liberar todo o potencial dele.", - "page-roadmap-vision-upgrade-needs-desc-2": "A alta demanda está aumentando as taxas de transação e tornando o Ethereum caro para o usuário médio. O espaço em disco necessário para executar um cliente Ethereum está crescendo rapidamente. E o algoritmo de consenso subjacente de prova de trabalho que mantém o Ethereum seguro e descentralizado tem um grande impacto ambiental.", + "page-roadmap-vision-upgrade-needs-desc-2": "A alta demanda tem aumentado as taxas de transação que tornam o Ethereum caro para o usuário comum. O espaço em disco necessário para executar um cliente Ethereum está crescendo a um ritmo acelerado.", "page-roadmap-vision-upgrade-needs-desc-3": "O Ethereum dispõe de um conjunto de melhorias que abordam esses problemas e muitos mais. Esse conjunto de melhorias foi originalmente chamado de “Serenity” e “Eth2”, e tem sido uma área ativa de pesquisa e desenvolvimento desde 2014.", "page-roadmap-vision-upgrade-needs-desc-5": "Agora que a tecnologia está pronta, essas melhorias irão rearquitetar o Ethereum para torná-lo mais dimensionável, seguro e sustentável, com o propósito de melhorar a vida dos usuários existentes e de atrair novos. Tudo isso preservando o valor central da descentralização do Ethereum.", "page-roadmap-vision-upgrade-needs-desc-6": "Isso significa que não há nenhuma solução pronta para a escalabilidade. As melhorias serão entregues incrementalmente ao longo do tempo.", "page-roadmap-vision-upgrade-needs-serenity": "Veja uma publicação do blog de 2015 que fala sobre o “Serenity”", - "ethereum": "Ethereum" + "ethereum": "Ethereum", + "page-roadmap-vision-danksharding": "Mais sobre Danksharding" } diff --git a/src/intl/pt-br/page-staking.json b/src/intl/pt-br/page-staking.json index 025ca6dc70e..546232fe052 100644 --- a/src/intl/pt-br/page-staking.json +++ b/src/intl/pt-br/page-staking.json @@ -48,6 +48,11 @@ "page-staking-section-why-title": "Por que fazer staking com seu ETH?", "page-staking-section-why-p1": "Tudo depende de quanto você está disposto a alocar para fazer staking. Você precisará de 32 ETH para ativar seu próprio validador, mas é possível apostar menos.", "page-staking-section-why-p2": "Confira as opções abaixo e escolha a que for melhor para você e para a rede.", + "page-staking-guide-title-coincashew-ethereum": "Guia Ethereum 2.0 de CoinCashew", + "page-staking-guide-title-somer-esat": "Somer Esat", + "page-staking-guide-title-rocket-pool": "Operadores de nó Rocket Pool", + "page-staking-guide-description-linux": "Linux (CLI)", + "page-staking-guide-description-mac-linux": "Linux, macOS (CLI)", "page-staking-hierarchy-solo-h2": "Staking individual de casa", "page-staking-hierarchy-solo-pill-1": "Mais impactante", "page-staking-hierarchy-solo-pill-2": "Controle total", @@ -77,7 +82,7 @@ "page-staking-hierarchy-cex-p3": "Se você não se sentir confortável segurando suas próprias chaves, tudo bem. Essas opções estão aqui para você. Enquanto isso, confira nossa página de carteiras, onde você pode começar a aprender como assumir a verdadeira propriedade sobre seus fundos. Quando estiver pronto, volte e aprimore seus conhecimentos sobre staking experimentando um dos serviços oferecidos para staking coletivo.", "page-staking-hierarchy-subtext": "Como você deve ter notado, existem muitas maneiras de participar do staking do Ethereum. Esses caminhos visam uma ampla variedade de usuários e, em última análise, são únicos e variam em termos de riscos, recompensas e suposições de confiança. Alguns são mais descentralizados, mais testados na prática e/ou mais arriscados do que outros. Fornecemos algumas informações sobre projetos populares no espaço, mas sempre faça sua própria pesquisa antes de enviar o ETH para qualquer lugar.", "page-staking-comparison-solo-saas": "Com provedores de SaaS, você ainda precisa depositar 32 ETH, mas não precisa executar hardware. Você normalmente mantém o acesso às suas chaves de validador, mas também precisa compartilhar suas chaves de assinatura para que o operador possa agir em nome do seu validador. Isso introduz uma camada de confiança que não está presente ao executar seu próprio hardware e, ao contrário do staking individual em casa, o SaaS não ajuda tanto na distribuição geográfica dos nós. Se você não se sente confortável em operar hardware, mas ainda quer fazer staking de 32 ETH, usar um provedor de SaaS pode ser uma boa opção para você.", - "page-staking-comparison-solo-pools": "O staking individual é significativamente mais envolvido do que o staking em serviços de pools, mas oferece acesso total às recompensas ETH e controle total sobre a configuração e a segurança do seu validador. O staking em pools, ou staking combinado, ou ainda, staking coletivo, tem uma barreira de entrada significativamente menor. Os usuários podem fazer o stake de pequenas quantidades de ETH, não são obrigados a gerar chaves de validação e não têm requisitos de hardware além de uma conexão padrão com a Internet. Os tokens de liquidez permitem a capacidade de sair do staking antes que isso seja ativado no nível do protocolo. Se você estiver interessado nesses recursos, o staking em pools pode ser uma boa opção.", + "page-staking-comparison-solo-pools": "A participação individual é consideravelmente mais complicada do que a participação com um serviço de pooling, mas oferece acesso total às recompensas de ETH e controle total sobre a configuração e a segurança do validador. A participação em pool tem uma barreira de entrada significativamente menor. Os usuários podem criar a participação de pequenas quantidades de ETH, não precisam gerar chaves de validação e não têm requisitos de hardware além de uma conexão padrão com a Internet. Os tokens de liquidez permitem a saída da participação antes da ativação no nível do protocolo. Se você estiver interessado nesses recursos, a participação em pool pode ser uma boa opção.", "page-staking-comparison-saas-solo": "As semelhanças incluem ter suas próprias chaves de validação sem ter que reunir fundos, mas com o SaaS você deve confiar em um terceiro, que pode agir de forma maliciosa ou se tornar alvo de ataque ou regulamentação. Se essas suposições de confiança ou riscos de centralização o preocupam, o padrão-ouro do staking autossoberano é o staking individual.", "page-staking-comparison-saas-pools": "Aqui há semelhança, pois você geralmente depende de outra pessoa para executar o cliente validador, mas, diferentemente do SaaS, o staking em pools permite que você participe com quantidades menores de ETH. Se você deseja fazer staking com menos de 32 ETH, considere dar uma olhada nisso.", "page-staking-comparison-pools-solo": "O staking em pools tem uma barreira de entrada significativamente menor quando comparado ao staking individual, mas traz um risco adicional ao delegar todas as operações de nó a terceiros, e com uma taxa. O staking individual oferece total soberania e controle sobre as escolhas que envolvem a escolha de uma configuração de staking. Os stakers nunca precisam entregar suas chaves e ganham recompensas completas sem nenhum intermediário.", @@ -105,9 +110,9 @@ "page-staking-considerations-solo-6-valid": "Sem permissão", "page-staking-considerations-solo-6-warning": "Autorização requerida", "page-staking-considerations-solo-7-title": "Multi-cliente", - "page-staking-considerations-solo-7-description": "O software permite que os usuários escolham e alternem entre pelo menos dois ou mais clientes de camada de consenso", + "page-staking-considerations-solo-7-description": "O software permite que os usuários escolham e alternem entre, pelo menos, dois ou mais clientes de execução e dois ou mais clientes de camada de consenso", "page-staking-considerations-solo-7-valid": "Troca fácil de cliente", - "page-staking-considerations-solo-7-warning": "Limitado ao cliente majoritário", + "page-staking-considerations-solo-7-warning": "Limitado a um cliente majoritário", "page-staking-considerations-solo-8-title": "Autocustódia", "page-staking-considerations-solo-8-description": "O usuário mantém a custódia de quaisquer credenciais do validador, incluindo chaves de assinatura e saque", "page-staking-considerations-solo-8-warning": "Custodiante terceiro", @@ -119,19 +124,25 @@ "page-staking-considerations-saas-6-description": "Os usuários não requerem nenhum tipo de permissão especial, inscrição ou KYC para participar com o serviço", "page-staking-considerations-saas-6-valid": "Qualquer um pode participar", "page-staking-considerations-saas-6-warning": "Permissão necessária", - "page-staking-considerations-saas-7-title": "Diversos clientes", - "page-staking-considerations-saas-7-description": "O serviço não deve executar mais de 50% de seus validadores agregados com um cliente validador majoritário", + "page-staking-considerations-saas-7-title": "Diversidade de execução", + "page-staking-considerations-saas-7-description": "O serviço não deveria executar mais de 50% dos validadores agregados com um cliente de execução majoritário", "page-staking-considerations-saas-7-valid": "Menos de 50%", "page-staking-considerations-saas-7-caution": "Atualmente desconhecido", "page-staking-considerations-saas-7-warning": "Mais de 50%", + "page-staking-considerations-saas-8-title": "Diversidade de consenso", + "page-staking-considerations-saas-8-description": "O serviço não deveria executar mais de 50% dos validadores agregados com um cliente de consenso majoritário", + "page-staking-considerations-saas-8-valid": "Menos de 50%", + "page-staking-considerations-saas-8-caution": "Atualmente desconhecido", + "page-staking-considerations-saas-8-warning": "Mais de 50%", "page-staking-considerations-pools-5-description": "O serviço não exige confiar em nenhum humano para guardar suas chaves ou distribuir recompensas", "page-staking-considerations-pools-6-title": "Nós sem necessidade de permissão", "page-staking-considerations-pools-6-description": "O serviço permite que qualquer pessoa participe como operador de nó do pool, sem permissão", - "page-staking-considerations-pools-7-description": "O serviço não deve executar mais de 50% de seus validadores agregados com um cliente validador supermajoritário", + "page-staking-considerations-pools-7-description": "O serviço não deveria executar mais de 50% dos validadores agregados com um cliente de execução majoritário", "page-staking-considerations-pools-8-title": "Token de liquidez", "page-staking-considerations-pools-8-description": "Oferece tokens de liquidez negociáveis representando seu ETH em stake, mantidos em sua própria carteira", "page-staking-considerations-pools-8-valid": "Token(s) de liquidez", "page-staking-considerations-pools-8-warning": "Sem token de liquidez", + "page-staking-considerations-pools-9-description": "O serviço não deveria executar mais de 50% dos validadores agregados com um cliente de consenso majoritário", "page-staking-how-solo-works-item-1": "Obtenha algum hardware: você precisa executar um nó para participar", "page-staking-how-solo-works-item-2": "Sincronize um cliente da camada de execução", "page-staking-how-solo-works-item-3": "Sincronize um cliente de camada de consenso", @@ -147,6 +158,8 @@ "page-staking-launchpad-widget-p3": "Para facilitar as coisas, confira algumas das ferramentas e guias abaixo que podem ajudá-lo com o Staking Launchpad para configurar seus clientes com facilidade.", "page-staking-launchpad-widget-link": "Ferramentas de software e guia", "page-staking-products-get-started": "Introdução", + "page-staking-dropdown-staking-options": "Opções de staking (participação)", + "page-staking-dropdown-staking-options-alt": "Menu suspenso de opções de staking (participação)", "page-staking-stats-box-metric-1": "Total de ETH em stake", "page-staking-stats-box-metric-2": "Total de validadores", "page-staking-stats-box-metric-3": "APR atual", @@ -214,7 +227,7 @@ "page-staking-toc-further": "Leitura adicional", "page-staking-dom-info-title": "Fazendo staking no Ethereum", "page-staking-join-community": "Junte-se à comunidade de participação", - "page-staking-join-community-desc": "EthStaker é uma comunidade para todos discutirem e aprenderem sobre staking no Ethereum. Junte-se a dezenas de milhares de membros de todo o mundo para aconselhar, apoiar e para falar tudo sobre staking.", + "page-staking-join-community-desc": "EthStaker é uma comunidade em que todos os participantes podem discutir e aprender sobre participação no Ethereum. Junte-se a dezenas de milhares de membros de todo o mundo para obter recomendações, apoio e falar sobre participação.", "page-staking-meta-description": "Uma visão geral da participação no Ethereum: riscos, recompensas, requisitos e onde fazê-lo.", "page-staking-meta-title": "Participação no Ethereum", "page-staking-withdrawals-important-notices": "Avisos importantes", diff --git a/src/intl/pt-br/page-upgrades-get-involved.json b/src/intl/pt-br/page-upgrades-get-involved.json index 956d996ce59..d5f02f87262 100644 --- a/src/intl/pt-br/page-upgrades-get-involved.json +++ b/src/intl/pt-br/page-upgrades-get-involved.json @@ -1,40 +1,40 @@ { "page-upgrades-get-involved-btn-1": "Ver clientes", - "page-upgrades-get-involved-btn-2": "Mais sobre sakting (participação)", - "page-upgrades-get-involved-btn-3": "Encontre bugs", - "page-upgrades-get-involved-bug": "Um bug pode ser:", - "page-upgrades-get-involved-bug-hunting": "Cace bugs", - "page-upgrades-get-involved-bug-hunting-desc": "Encontre e informe falhas nas especificações de upgrade na camada de consenso ou mesmo nos próprios clientes. Você pode ganhar até US$ 50.000 e um lugar na tabela de classificação.", - "page-upgrades-get-involved-bug-li": "problemas de não conformidade de especificação", + "page-upgrades-get-involved-btn-2": "Mais sobre participação", + "page-upgrades-get-involved-btn-3": "Encontrar falhas", + "page-upgrades-get-involved-bug": "Uma falha pode ser:", + "page-upgrades-get-involved-bug-hunting": "Caçar falhas", + "page-upgrades-get-involved-bug-hunting-desc": "Encontre e informe falhas nas especificações de melhoria da camada de consenso ou nos próprios clientes. Você pode ganhar até US$ 50.000 e um lugar na tabela de classificação.", + "page-upgrades-get-involved-bug-li": "problemas de não conformidade com as especificações", "page-upgrades-get-involved-bug-li-2": "bugs de quebra de finalidade", - "page-upgrades-get-involved-bug-li-3": "negação de vetores de serviço (DOS)", + "page-upgrades-get-involved-bug-li-3": "vetores de negação de serviço (DOS)", "page-upgrades-get-involved-bug-li-4": "e mais...", - "page-upgrades-get-involved-desc-1": "Executar um cliente significa que você será um participante ativo no Ethereum. Seu cliente ajudará a manter o controle de transações e verificar novos blocos.", - "page-upgrades-get-involved-desc-2": "Se você tem ETHs, pode fazer staking deles para se tornar um validador e ajudar a proteger a rede. Como validador, você pode ganhar recompensas em ETH.", - "page-upgrades-get-involved-desc-3": "Junte-se à força de análise da comunidade. Ajude a avaliar os upgrades no Ethereum antes de serem implementados. Encontre falhas e ganhe sua recompensa.", + "page-upgrades-get-involved-desc-1": "Executar um cliente significa que você será um participante ativo no Ethereum. O seu cliente ajudará a manter o controle das transações e a verificar novos blocos.", + "page-upgrades-get-involved-desc-2": "Se você tem ETHs, pode fazer participá-los para se tornar um validador e ajudar a proteger a rede. Como validador, você pode ganhar recompensas em ETH.", + "page-upgrades-get-involved-desc-3": "Junte-se ao esforço de testes da comunidade! Ajude a avaliar as melhorias no Ethereum antes de serem implementadas, encontre falhas e ganhe recompensas.", "page-upgrades-get-involved-ethresearch-1": "Fragmentação", "page-upgrades-get-involved-ethresearch-2": "A integração", "page-upgrades-get-involved-ethresearch-3": "Execução fragmentada", "page-upgrades-get-involved-ethresearch-4": "Todos os tópicos de pesquisa", - "page-upgrades-get-involved-how": "Como você quer se envolver?", - "page-upgrades-get-involved-how-desc": "A comunidade Ethereum sempre se beneficiará com mais pessoas executando clientes, participando e caçando bugs.", + "page-upgrades-get-involved-how": "Como você quer participar?", + "page-upgrades-get-involved-how-desc": "A comunidade Ethereum sempre se beneficiará de ter mais pessoas a executar clientes, realizando participações e procurando falhas.", "page-upgrades-get-involved-join": "Participe da pesquisa", - "page-upgrades-get-involved-join-desc": "Como a maioria das coisas no Ethereum, grande parte da pesquisa é pública. Isso significa que você pode participar das discussões ou apenas ler o que os pesquisadores do Ethereum têm a dizer. O site ethsear.ch abrange uma série de tópicos, incluindo atualizações de consenso, fragmentação, rollups e muito mais.", - "page-upgrades-get-involved-meta-description": "Como participar dos upgrades no Ethereum: execute nós, faça staking de ETH, cace bugs e muito mais.", + "page-upgrades-get-involved-join-desc": "Como a maioria das situações no Ethereum, grande parte da pesquisa é pública. Isso significa que você pode participar das discussões ou apenas ler o que os pesquisadores do Ethereum têm a dizer. O ethresear.ch abrange vários tópicos, incluindo melhorias de consenso, rollups e muito mais.", + "page-upgrades-get-involved-meta-description": "Como participar das melhorias no Ethereum: execute nós, realize participações, procure falhas e muito mais.", "page-upgrades-get-involved-run-clients": "Executar um par de clientes", - "page-upgrades-get-involved-run-clients-desc": "Um \"cliente\" é um software que executa a cadeia de blocos e, no caso do Ethereum, um nó completo requer a execução de um par desses clientes: um cliente de camada de execução e um cliente de camada de consenso. Um nó completo pode checar as transações e, se também colocar ETH em participação, pode criar novos blocos. Cada cliente tem seus próprios recursos, mas desempenha a mesma função em geral, por isso recomendamos que você escolha um cliente minoritário sempre que possível para manter o grupo de clientes diversificado e seguro.", - "page-upgrades-get-involved-run-clients-desc-link": "Mais sobre a diversidade de clientes.", + "page-upgrades-get-involved-run-clients-desc": "Um \"cliente\" é um software que executa o blockchain e, no caso do Ethereum, um nó completo exige a execução de um par desses clientes: um cliente de camada de execução e um cliente da camada de consenso. Um nó completo pode verificar transações e, se também realizar participações com ETH, pode criar novos blocos. Cada cliente tem seus próprios recursos, mas executa a mesma função em geral, portanto, recomendamos selecionar um cliente minoritário sempre que possível, de forma a manter o grupo de clientes diversificado e seguro.", + "page-upgrades-get-involved-run-clients-desc-link": "Mais sobre diversidade de clientes.", "page-upgrades-get-involved-run-clients-execution": "Clientes da camada de execução", - "page-upgrades-get-involved-run-clients-execution-desc": "Esses clientes eram anteriormente chamados de clientes \"Eth1\", mas esse termo está sendo descontinuado e substituído por clientes da \"camada de execução\".", + "page-upgrades-get-involved-run-clients-execution-desc": "Antes, esses clientes eram chamados de clientes \"Eth1\", mas esse termo está sendo descontinuado e substituído por clientes da \"camada de execução\".", "page-upgrades-get-involved-run-clients-consensus": "Clientes da camada de consenso", - "page-upgrades-get-involved-run-clients-consensus-desc": "Esses clientes eram anteriormente referenciados como clientes \"Eth2\", mas esse termo está sendo descontinuado e substituído por clientes da \"camada de execução\".", - "page-upgrades-get-involved-stake": "Faça staking de seus ETH", - "page-upgrades-get-involved-stake-desc": "Agora você pode fazer staking de seus ETH para ajudar a proteger a Beacon Chain.", - "page-upgrades-get-involved-stake-eth": "Faça staking de ETH", - "page-upgrades-get-involved-subtitle": "Aqui se encontram todas as maneiras nas quais você pode ajudar o Ethereum e contribuir com futuros upgrades.", + "page-upgrades-get-involved-run-clients-consensus-desc": "Antes, esses clientes eram chamados de clientes \"Eth2\", mas esse termo está sendo descontinuado e substituído por clientes da \"camada de consenso\".", + "page-upgrades-get-involved-stake": "Faça staking de seu ETH", + "page-upgrades-get-involved-stake-desc": "Agora você pode realizar participação com os seus ETH para ajudar a proteger a Beacon Chain.", + "page-upgrades-get-involved-stake-eth": "Participe com ETH", + "page-upgrades-get-involved-subtitle": "Aqui estão todas as maneiras pelas quais você pode ajudar nos esforços de melhoria futuros e do Ethereum.", "page-upgrades-get-involved-title-1": "Executar um cliente", - "page-upgrades-get-involved-title-2": "Faça staking de seus ETH", - "page-upgrades-get-involved-title-3": "Encontre bugs", + "page-upgrades-get-involved-title-2": "Faça staking de seu ETH", + "page-upgrades-get-involved-title-3": "Encontrar falhas", "page-upgrades-get-involved-written-c-sharp": "Escrito em C#", "page-upgrades-get-involved-written-go": "Escrito em Go", "page-upgrades-get-involved-written-java": "Escrito em Java", diff --git a/src/intl/pt-br/page-upgrades-index.json b/src/intl/pt-br/page-upgrades-index.json index 2b106080afc..6bc77abef38 100644 --- a/src/intl/pt-br/page-upgrades-index.json +++ b/src/intl/pt-br/page-upgrades-index.json @@ -11,6 +11,7 @@ "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-upgrade-article-author-status": "Status", "page-upgrade-article-author-ethmerge": "Ethmerge", "page-upgrade-article-author-alchemy": "Alchemy", "page-upgrade-article-author-consensys": "Consensys", @@ -150,7 +151,7 @@ "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": "A fragmentação expandirá a capacidade do Ethereum de armazenar dados e trabalhará harmoniosamente com a camada 2 para dimensionar a taxa de transferência e reduzir as taxas de rede. A fragmentação será lançada em várias etapas.", + "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-estimate": "Estimativa: 2023-2024", "page-upgrades-shard-lower": "Mais sobre fragmentação", "page-upgrades-shard-title": "Fragmentação", @@ -167,7 +168,7 @@ "page-upgrades-upgrades-aria-label": "Menu de melhorias do Ethereum", "page-upgrades-upgrades-beacon-chain": "A Beacon Chain", "page-upgrades-upgrades-guide": "Guia para as melhorias no Ethereum", - "page-upgrades-upgrades-docking": "A integração", + "page-upgrades-upgrades-docking": "A fusão", "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", diff --git a/src/intl/pt-br/page-upgrades.json b/src/intl/pt-br/page-upgrades.json index 3bfcbfb052d..390c87096aa 100644 --- a/src/intl/pt-br/page-upgrades.json +++ b/src/intl/pt-br/page-upgrades.json @@ -11,6 +11,8 @@ "page-upgrades-upgrades-docking": "A integração", "page-upgrades-shard-title": "Fragmentação", "page-upgrades-upgrades-beacon-chain": "A Beacon Chain", + "consensus-beaconscan-title": "beaconscan", + "consensus-beaconscan-in-title": "beaconcha.in", "consensus-beaconcha-in-desc": "Explorador de código aberto da Beacon Chain", "consensus-beaconscan-desc": "Explorador da Beacon Chain — Etherscan para a camada de consenso", "consensus-become-staker": "Torne-se um staker (participante)", diff --git a/src/intl/pt-br/page-wallets-find-wallet.json b/src/intl/pt-br/page-wallets-find-wallet.json index f3686c5cd7f..c6e7fb5ac2b 100644 --- a/src/intl/pt-br/page-wallets-find-wallet.json +++ b/src/intl/pt-br/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Filtros de recursos", "page-find-wallet-footnote-1": "As carteiras listadas nesta página não são endossos oficiais e são fornecidas apenas a título informativo.", "page-find-wallet-footnote-2": "As descrições delas foram fornecidas pelos próprios projetos da carteira.", - "page-find-wallet-footnote-3": "Adicionamos produtos a esta página com base nos critérios em nossa política de listagem. Se você quiser que adicionemos uma carteira, abra um tíquete no GitHub.", + "page-find-wallet-footnote-3": "Adicionamos produtos a esta página com base nos critérios em nossa política de listagem. Se você quiser que adicionemos uma carteira, abra um tíquete no GitHub.", "page-find-wallet-mobile": "Celular", "page-find-wallet-mobile-desc": "Carteiras com aplicativos móveis", "page-find-wallet-desktop": "Área de trabalho", diff --git a/src/intl/pt/page-wallets-find-wallet.json b/src/intl/pt/page-wallets-find-wallet.json index 9dfcd878cc3..210418c12b1 100644 --- a/src/intl/pt/page-wallets-find-wallet.json +++ b/src/intl/pt/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Filtros de características", "page-find-wallet-footnote-1": "As carteiras listadas nesta página não são recomendações oficiais e são fornecidas apenas para fins informativos.", "page-find-wallet-footnote-2": "As suas descrições foram fornecidas pelos próprios projetos de carteiras.", - "page-find-wallet-footnote-3": "Adicionamos produtos a esta página com base nos critérios da nossa política de admissão. Se pretender que adicionemos uma carteira, levante uma questão no GitHub.", + "page-find-wallet-footnote-3": "Adicionamos produtos a esta página com base nos critérios da nossa política de admissão. Se pretender que adicionemos uma carteira, levante uma questão no GitHub.", "page-find-wallet-mobile": "Telemóvel", "page-find-wallet-mobile-desc": "Carteiras com aplicações móveis", "page-find-wallet-desktop": "Computador", diff --git a/src/intl/ru/page-roadmap-vision.json b/src/intl/ru/page-roadmap-vision.json index d95079ac1f3..3e02a40ef14 100644 --- a/src/intl/ru/page-roadmap-vision.json +++ b/src/intl/ru/page-roadmap-vision.json @@ -1,10 +1,10 @@ { - "page-roadmap-vision-2014": "Посмотреть запись в блоге от 2014 года, которая подробно описывает доказательство владения (Proof of Stake)", - "page-roadmap-vision-2021": "Посмотреть запись в блоге от 2021 года об эволюции Ethereum в виде дорожной карты", - "page-roadmap-vision-2022": "Посмотреть запись в блоге от 2022 года: руководство для автостопщиков по Ethereum", - "page-roadmap-vision-2021-updates": "Посмотреть запись в блоге от 2021 года об обновлениях протокола Ethereum", - "page-roadmap-vision-desc-1": "Ethereum необходимо снизить перегруженность сети и повысить скорость, чтобы лучше обслуживать глобальную пользовательскую базу.", - "page-roadmap-vision-desc-2": "С ростом сети управлять узлом становится труднее. Это будет только усложняться усилиями по масштабированию сети.", + "page-roadmap-vision-2014": "Просмотрите запись в блоге за 2014 год, в которой подробно описывается доказательство владения", + "page-roadmap-vision-2021": "Просмотрите запись в блоге за 2021 год об эволюции дорожной карты Ethereum", + "page-roadmap-vision-2022": "Просмотрите запись в блоге за 2022 год: «Автостопом по Ethereum»", + "page-roadmap-vision-2021-updates": "Просмотрите запись в блоге за 2021 год об обновлениях протокола Ethereum", + "page-roadmap-vision-desc-1": "Ethereum необходимо уменьшить перегрузку сети и повысить скорость, чтобы лучше обслуживать глобальную базу пользователей.", + "page-roadmap-vision-desc-2": "С ростом сети управлять узлом становится труднее. Это будет только усложняться при масштабировании сети.", "page-roadmap-vision-desc-3": "Ethereum использует слишком много электричества. Технология, обеспечивающая безопасность сети, должна быть более устойчивой.", "page-roadmap-vision-ethereum-node": "Подробнее об узлах", "page-roadmap-vision-future": "Цифровое будущее в глобальном масштабе", @@ -13,43 +13,43 @@ "page-roadmap-vision-mining": "Подробнее о майнинге", "page-roadmap-vision-problems": "Современные проблемы", "page-roadmap-vision-scalability": "Масштабируемость", - "page-roadmap-vision-scalability-desc": "Ethereum должен иметь возможность обрабатывать больше транзакций в секунду без увеличения размера узлов сети. Узлы — это жизненно важные участники сети, которые сохраняют и запускают блокчейн. Увеличение размера узла не является практичным, потому что это могут сделать только мощные и дорогостоящие компьютеры. Для масштабирования Ethereum требуется больше транзакций в секунду, а также больше узлов. Больше узлов — больше безопасность.", - "page-roadmap-vision-scalability-desc-3": "Обновления шардинга распространят требования к хранению данных по всей сети. Хранить 100 % данных в каждом узле более не потребуется. Хотя это не касается непосредственно масштабирования выполнения транзакций, эта проблема решается непосредственно решениями свертывания слоя 2.", - "page-roadmap-vision-scalability-desc-4": "Для максимальной эффективности свертков необходимо дешевое хранилище в слое 1. Шардинг даст Ethereum простор для дыхания, максимизируя эффективность свертков, позволяя экспоненциально улучшать показатели, превышающие текущий лимит в 15–45 транзакций в секунду.", + "page-roadmap-vision-scalability-desc": "Ethereum должен иметь возможность обрабатывать больше транзакций в секунду без увеличения размера узлов сети. Узлы — это жизненно важные участники сети, которые сохраняют и запускают блокчейн. Увеличение размера узла не является практичным, потому что это могут сделать только те, у кого есть мощные и дорогостоящие компьютеры. Для масштабирования Ethereum требуется больше транзакций в секунду, а также больше узлов. Больше узлов — больше безопасность.", + "page-roadmap-vision-scalability-desc-3": "Свертки второго уровня масштабируют Ethereum, перемещая транзакции за пределы цепи и публикуя в Ethereum только сводные данные. Такое пакетирование увеличивает пропускную способность Ethereum и значительно снижает затраты пользователей.", + "page-roadmap-vision-scalability-desc-4": "Свертки требуют недорогого хранилища на уровне 1, чтобы сделать транзакции максимально дешевыми для пользователей. Это будет предоставляться в виде больших двоичных объектов, прикрепленных к блокам Ethereum. В конечном счете, много больших двоичных объектов будут прикреплены к блокам Ethereum, обеспечивая дешевое хранилище для множества свертков.", "page-roadmap-vision-security": "Безопасность", - "page-roadmap-vision-security-desc": "Запланированные обновления повышают безопасность Ethereum против скоординированных атак, таких как атака 51 %. Это тип атаки, при которой контролирующий большую часть сети может провести мошеннические изменения.", - "page-roadmap-vision-security-desc-3": "Переход на систему доказательства владения означает, что протокол Ethereum имеет больше сдерживающих факторов против атак. Это связано с тем, что в системе доказательства владения валидаторы, которые защищают сеть, должны вкладывать значительные суммы ETH в протокол. Если они попытаются атаковать сеть, протокол может автоматически уничтожить их ETH.", - "page-roadmap-vision-security-desc-5": "Это невозможно в системе доказательства работы, где лучшее, что может сделать протокол, это заставить объекты, которые защищают сеть (майнеры), терять вознаграждение за майнинг, которое они в противном случае заработали бы. Чтобы добиться аналогичного эффекта в системе доказательства работы, протокол должен иметь возможность уничтожить все оборудование майнера, если он попытается жульничать.", - "page-roadmap-vision-security-desc-5-link": "Подробнее о доказательстве работы", + "page-roadmap-vision-security-desc": "Планируемые апгрейды улучшат защиту Ethereum от скоординированных атак.", + "page-roadmap-vision-security-desc-3": "При использовании доказательства владения дополнительная безопасность обеспечивается за счет усиления криптоэкономических сдерживающих факторов против атак. Это связано с тем, что при использовании доказательства владения валидаторы, которые защищают сеть, должны вносить значительные суммы ETH в протокол. Если они попытаются атаковать сеть, протокол может автоматически уничтожить их данные.", + "page-roadmap-vision-security-desc-5": "Однако также важно, чтобы в ближайшее время были внедрены обновления, защищающие валидаторов от атак типа «отказ в обслуживании», повышающие их анонимность, а также раздельное построение блоков и их распространение. Эти обновления защищают отдельных валидаторов и сеть в целом от атак на живучесть и цензуры.", + "page-roadmap-vision-security-desc-5-link": "Подробнее о доказательстве владения", "page-roadmap-vision-security-desc-10": "Стейкинг также означает, что вам не нужно вкладывать средства в элитное оборудование, чтобы напрямую участвовать в консенсусе. Это должно побудить больше людей стать валидаторами, повышая децентрализацию сети и уменьшая площадь атаки.", "page-roadmap-vision-security-staking": "Вложить ETH", "page-roadmap-vision-security-validator": "Вы можете стать валидатором, вложив свои ETH.", "page-roadmap-vision-staking-lower": "Подробнее о стейкинге", "page-roadmap-vision-subtitle": "Стремление развивать Ethereum, пока он не станет достаточно мощным, чтобы помочь всему человечеству.", "page-roadmap-vision-sustainability": "Устойчивость", - "page-roadmap-vision-sustainability-desc-1": "Ни для кого не секрет, что Ethereum и другие блокчейны, такие как Bitcoin, энергоемки из-за майнинга.", - "page-roadmap-vision-sustainability-desc-2": "Но Ethereum движется к тому, что ETH будет обеспечен ставкой, а не вычислительной мощностью.", - "page-roadmap-vision-sustainability-desc-3": "Хотя стейкинг уже был введен в цепочке Beacon Chain, Ethereum, который мы используем сегодня, все еще работает параллельно до слияния. Одна система обеспечена ETH, другая — вычислительной мощностью.", - "page-roadmap-vision-sustainability-desc-8": "После значительного тестирования работа по объединению основной сети с новым слоем консенсуса близится к завершению. Вскоре основная сеть будет обеспечена ставкой ETH и станет гораздо менее энергоемкой.", - "page-roadmap-vision-sustainability-subtitle": "Ethereum должен быть экологичнее.", + "page-roadmap-vision-sustainability-desc-1": "Ethereum теперь является зеленым блокчейном. Потребление энергии было снижено приблизительно на 99,95 %, когда доказательство работы было заменено на доказательство владения.", + "page-roadmap-vision-sustainability-desc-2": "Ethereum теперь защищен с помощью стейкинга, а не вычислительной мощности.", + "page-roadmap-vision-sustainability-desc-3": "Это повышение устойчивости также приносит преимущества в области безопасности: при вложении эфира атаковать цепь значительно дороже, чем при использовании доказательства работы, но дешевле обеспечить ее безопасность, поскольку для оплаты валидаторов требуется меньше новых ETH, чем при майнинге.", + "page-roadmap-vision-sustainability-desc-8": "Переход на доказательство владения сделал Ethereum более экологичным и безопасным. Это платформа для создания приложений и организаций с малым углеродным следом.", + "page-roadmap-vision-sustainability-subtitle": "Ethereum — это зеленый блокчейн с надежной криптоэкономической защитой.", "page-roadmap-vision-title": "Концепция Ethereum", - "page-roadmap-vision-title-1": "Забитая сеть", + "page-roadmap-vision-title-1": "Засоренная сеть", "page-roadmap-vision-title-2": "Дисковое пространство", "page-roadmap-vision-title-3": "Слишком много энергии", - "page-roadmap-vision-trilemma-cardtext-1": "Модернизация Ethereum сделает Ethereum более масштабируемым, безопасным и децентрализованным. Шардинг сделает Ethereum более масштабируемым за счет увеличения количества транзакций в секунду при снижении мощности, необходимой для работы узла и валидации цепочки. Цепочка Beacon Chain сделает Ethereum безопасным благодаря координации валидаторов на основе разделенного на части набора данных. А стейкинг снизит барьер для участия и ограничит экономию от масштаба, создавая более крупную и децентрализованную сеть.", - "page-roadmap-vision-trilemma-cardtext-2": "Безопасные и децентрализованные сети блокчейнов требуют, чтобы каждый узел проверял каждую транзакцию, обрабатываемую цепочкой. Этот объем работы ограничивает количество транзакций, которые могут произойти в любой момент времени. Децентрализация и безопасность отражают сегодняшнюю цепочку Ethereum.", - "page-roadmap-vision-trilemma-cardtext-3": "Децентрализованные сети работают путем передачи информации о транзакциях между узлами — вся сеть должна знать о любом изменении состояния. Масштабирование транзакций в секунду в децентрализованной сети создает риски для безопасности, поскольку чем больше транзакций, тем больше задержка, тем выше вероятность атаки, пока информация находится в пути.", - "page-roadmap-vision-trilemma-cardtext-4": "Увеличение размера и мощности узлов Ethereum могло бы повысить скорость транзакций в секунду безопасным способом, но аппаратные требования ограничат тех, кто может это сделать — это угрожает децентрализации. Есть надежда, что шардинг и доказательство владения позволят Ethereum масштабироваться за счет увеличения количества узлов, а не их размера.", + "page-roadmap-vision-trilemma-cardtext-1": "Обновления сделают Ethereum масштабируемым, безопасным и децентрализованным. Стейкинг снизил барьер для участия и ограничил экономию за счет масштаба, создав более крупную — более децентрализованную — сеть.", + "page-roadmap-vision-trilemma-cardtext-2": "Безопасные и децентрализованные сети блокчейнов требуют, чтобы каждый узел проверял каждую транзакцию, обрабатываемую цепочкой. Этот объем работы ограничивает количество транзакций, которые могут произойти в любой момент времени. Сегодняшнюю цепочку Ethereum характеризуют децентрализация и безопасность.", + "page-roadmap-vision-trilemma-cardtext-3": "Децентрализованные сети работают путем передачи информации о транзакциях между узлами — вся сеть должна знать о любом изменении состояния. Рост количества транзакций в секунду в децентрализованной сети создает риски для безопасности, поскольку чем больше транзакций, тем больше задержка, тем выше вероятность атаки, пока информация находится в пути.", + "page-roadmap-vision-trilemma-cardtext-4": "Увеличение размера и мощности узлов Ethereum могло бы повысить количнство транзакций в секунду безопасным способом, но требования к оборудованию ограничат количество тех, кто сможет это делать, — это угрожает децентрализации. Есть надежда, что шардинг и доказательство владения позволят Ethereum масштабироваться за счет увеличения количества узлов, а не их размера.", "page-roadmap-vision-trilemma-h2": "Проблема децентрализованного масштабирования", - "page-roadmap-vision-trilemma-modal-tip": "Коснитесь кружков ниже, чтобы лучше понять проблемы децентрализованного масштабирования", - "page-roadmap-vision-trilemma-p": "Наивным способом решения проблем Ethereum было бы сделать его более централизованным. Но децентрализация слишком важна. Именно децентрализация обеспечивает Ethereum устойчивость к цензуре, открытость, конфиденциальность данных и практически непробиваемую безопасность.", + "page-roadmap-vision-trilemma-modal-tip": "Коснитесь кружков ниже, чтобы лучше понять проблемы децентрализованного масштабирования.", + "page-roadmap-vision-trilemma-p": "Наивным способом решения проблем Ethereum было бы сделать его более централизованным. Но децентрализация слишком важна. Именно децентрализация обеспечивает нейтралитет Ethereum, устойчивость к цензуре, открытость, право собственности на данные и почти нерушимую безопасность.", "page-roadmap-vision-trilemma-p-1": "Концепция Ethereum заключается в том, чтобы быть более масштабируемой и безопасной сетью, но при этом оставаться децентрализованной. Достижение этих трех качеств представляет собой проблему, известную как трилемма масштабируемости.", "page-roadmap-vision-trilemma-p-2": "Обновления Ethereum направлены ​​на решение этой трилеммы, но есть серьезные проблемы.", "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": "Обновления Ethereum и децентрализованное масштабирование", "page-roadmap-vision-trilemma-title-3": "Безопасность и децентрализованность", "page-roadmap-vision-trilemma-title-4": "Децентрализованность и масштабируемость", @@ -57,10 +57,11 @@ "page-roadmap-vision-understanding": "Понимание концепции Ethereum", "page-roadmap-vision-upgrade-needs": "Необходимость обновлений", "page-roadmap-vision-upgrade-needs-desc": "Протокол Ethereum, запущенный в 2015 году, имел невероятный успех. Но сообщество Ethereum всегда ожидало, что для полного раскрытия потенциала Ethereum потребуется несколько ключевых обновлений.", - "page-roadmap-vision-upgrade-needs-desc-2": "Высокий спрос повышает комиссию за транзакции, которые делают Ethereum дорогим для обычного пользователя. Дисковое пространство, необходимое для запуска клиента Ethereum, растет быстрыми темпами. А лежащий в основе алгоритм консенсуса, который обеспечивает безопасность и децентрализованность Ethereum, имеет большое воздействие на окружающую среду.", - "page-roadmap-vision-upgrade-needs-desc-3": "Ethereum имеет набор обновлений, которые решают эти и другие проблемы. Эти обновления изначально назывались Serenity и Eth2, и с 2014 года они являются областью для активных исследований и разработок.", + "page-roadmap-vision-upgrade-needs-desc-2": "Высокий спрос приводит к росту комиссий и делает Ethereum дорогостоящим для обычного пользователя. Дисковое пространство, необходимое для запуска клиента Ethereum, растет слишком быстро.", + "page-roadmap-vision-upgrade-needs-desc-3": "Ethereum прошел через ряд обновлений, которые решают эти и другие проблемы. Эти обновления изначально назывались Serenity и Eth2, и с 2014 года они являются областью для активных исследований и разработок.", "page-roadmap-vision-upgrade-needs-desc-5": "Теперь, когда технология готова, эти обновления изменят архитектуру Ethereum, чтобы сделать его более масштабируемым, безопасным и устойчивым, чтобы улучшить жизнь существующих пользователей и привлечь новых. И все это при сохранении основной ценности Ethereum — децентрализации.", "page-roadmap-vision-upgrade-needs-desc-6": "Это означает, что масштабируемости нельзя добиться одномоментно. Улучшения будут вводиться постепенно.", "page-roadmap-vision-upgrade-needs-serenity": "Посмотреть запись в блоге от 2015 года о Serenity", - "ethereum": "Ethereum" + "ethereum": "Ethereum", + "page-roadmap-vision-danksharding": "Подробнее о данкшардинге" } diff --git a/src/intl/ru/page-upgrades-get-involved.json b/src/intl/ru/page-upgrades-get-involved.json index d626e7ee568..69caa9fc1e8 100644 --- a/src/intl/ru/page-upgrades-get-involved.json +++ b/src/intl/ru/page-upgrades-get-involved.json @@ -10,7 +10,7 @@ "page-upgrades-get-involved-bug-li-3": "векторы отказов в обслуживании (DOS)", "page-upgrades-get-involved-bug-li-4": "и многое другое...", "page-upgrades-get-involved-desc-1": "Запуск клиента означает, что вы будете активным участником Ethereum. Ваш клиент будет помогать отслеживать транзакции и проверять новые блоки.", - "page-upgrades-get-involved-desc-2": "Если у вас есть ETH, вы можете вложить их, чтобы стать валидатором и помочь защитить сеть. В качестве валидатора вы cможете зарабатывать награды в ETH.", + "page-upgrades-get-involved-desc-2": "Если у вас есть ETH, вы можете вложить их, чтобы стать валидатором и помочь защитить сеть. В качестве валидатора вы сможете зарабатывать награды в ETH.", "page-upgrades-get-involved-desc-3": "Присоединяйтесь к усилиям сообщества по тестированию! Помогите протестировать обновления Ethereum перед их запуском, находите ошибки и получайте награды.", "page-upgrades-get-involved-ethresearch-1": "Шардинг", "page-upgrades-get-involved-ethresearch-2": "Слияние", @@ -19,17 +19,23 @@ "page-upgrades-get-involved-how": "Как вы хотите принять участие?", "page-upgrades-get-involved-how-desc": "Сообщество Ethereum всегда будет получать выгоду от большего количества людей, запускающих клиенты, занимающихся стейкингом и ищущих ошибки.", "page-upgrades-get-involved-join": "Присоединиться к исследованию", - "page-upgrades-get-involved-join-desc": "Как и большинство вещей, связанных с Ethereum, многие исследования являются общедоступными. Это означает, что вы можете принять участие в обсуждениях или просто прочитать, о чем говорят исследователи Ethereum. ethresearch.ch охватывает ряд тем, включая обновления консенсуса, шардинг, свертки и многое другое.", + "page-upgrades-get-involved-join-desc": "Как и большинство вещей, связанных с Ethereum, многие исследования являются общедоступными. Это означает, что вы можете принять участие в обсуждениях или просто прочитать, о чем говорят исследователи Ethereum. На ethresearch.ch рассматривается ряд тем, включая обновления консенсуса, свертки и многое другое.", "page-upgrades-get-involved-meta-description": "Как участвовать в обновлениях Ethereum: запускать узлы, вкладывать средства, искать ошибки и делать многое другое.", - "page-upgrades-get-involved-run-clients": "Запуск консенсус-клиентов", - "page-upgrades-get-involved-run-clients-desc": "Ключ к долгосрочной безопасности Ethereum — это умное распределение клиентов. Клиент — это программное обеспечение, которое запускает блокчейн, проверяет транзакции и создает новые блоки. У каждого клиента есть свои особенности, поэтому выберите один из них на основе того, с чем вам удобно работать.", - "page-upgrades-get-involved-stake": "Вкладывайте свои ETH", + "page-upgrades-get-involved-run-clients": "Запустить клиентскую пару", + "page-upgrades-get-involved-run-clients-desc": "Клиент — это программное обеспечение, которое запускает блокчейн, и в случае Ethereum для создания полноценного узла требуется запустить пару таких клиентов: клиент уровня исполнения и клиент уровня консенсуса. Полный узел может проверять транзакции и, если он также делает вкладывает ETH, может создавать новые блоки. Каждый клиент имеет свои особенности, но в целом они выполняют одни и те же функции, поэтому мы рекомендуем вам по возможности выбирать клиент меньшинства, чтобы сохранить пул клиентов разнообразным и безопасным.", + "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-consensus": "Клиенты уровня консенсуса", + "page-upgrades-get-involved-run-clients-consensus-desc": "Раньше такие клиенты назывались клиентами Eth2, но сейчас этот термин устарел и используется вариант «клиент уровня консенсуса».", + "page-upgrades-get-involved-stake": "Начните стейкинг своих эфиров (ETH)", "page-upgrades-get-involved-stake-desc": "Теперь вы можете вложить свои ETH, чтобы обеспечить безопасность Beacon Chain.", "page-upgrades-get-involved-stake-eth": "Вложить ETH", - "page-upgrades-get-involved-subtitle": "Вот все способы, которыми вы можете помочь Ethereum и будущим движениям, связанным с обновлениями.", + "page-upgrades-get-involved-subtitle": "Вот все способы, которыми вы можете помочь Ethereum и будущим мероприятиям, связанным с обновлениями.", "page-upgrades-get-involved-title-1": "Запустите клиент", - "page-upgrades-get-involved-title-2": "Вкладывайте свои ETH", - "page-upgrades-get-involved-title-3": "Ищите ошибки", + "page-upgrades-get-involved-title-2": "Начните стейкинг своих эфиров (ETH)", + "page-upgrades-get-involved-title-3": "Поиск ошибок", + "page-upgrades-get-involved-written-c-sharp": "Написано на C#", "page-upgrades-get-involved-written-go": "Написано на Go", "page-upgrades-get-involved-written-java": "Написано на Java", "page-upgrades-get-involved-written-javascript": "Написано на JavaScript", diff --git a/src/intl/ru/page-upgrades-index.json b/src/intl/ru/page-upgrades-index.json index d7dc3aea177..05b9e72773e 100644 --- a/src/intl/ru/page-upgrades-index.json +++ b/src/intl/ru/page-upgrades-index.json @@ -8,35 +8,54 @@ "consensus-client-nimbus-logo-alt": "Логотип Nimbus", "consensus-client-prysm-logo-alt": "Логотип Prysm", "consensus-client-teku-logo-alt": "Логотип Teku", - "page-upgrades-answer-1": "Рассматривайте эти изменения как набор усовершенствований, добавляемых для улучшения Ethereum, который мы используем сегодня. Эти обновления включают создание новой цепочки под названием Beacon Chain, которая вскоре будет выполнять функцию консенсус-двигателя для всей сети.", - "page-upgrades-answer-2": "Beacon Chain начинает свою работу как отдельная цепь, но существующая основная сеть «сольется» с этим новым уровнем консенсуса на основе доказательства владения.", - "page-upgrades-answer-4": "Другими словами, Ethereum, который мы используем сегодня, в конечном итоге будет воплощать все функции, к которым мы стремимся в концепции Ethereum.", + "page-upgrades-answer-1": "Сеть Beacon Chain была использована в качестве инструмента для обновления основной сети Ethereum при Слиянии.", + "page-upgrades-answer-2": "Благодаря Слиянию Ethereum претерпел самое существенное обновление за всю историю, заменив доказательство работы на новый консенсусный уровень, основанный на доказательстве владения.", + "page-upgrades-answer-4": "Сеть Beacon Chain была использована для разработки консенсуса на основе доказательства владения, который Ethereum использует сегодня. Она была запущена отдельно от основной сети Ethereum, чтобы разработчики могли изолированно наблюдать за механизмом консенсуса, прежде чем использовать его для координации реальной деятельности.", + "page-upgrade-article-author-status": "Состояние", + "page-upgrade-article-author-ethmerge": "Ethmerge", + "page-upgrade-article-author-alchemy": "Alchemy", + "page-upgrade-article-author-consensys": "Consensys", + "page-upgrade-article-author-delphi-digital": "Delphi Digital", + "page-upgrade-article-author-eip-4844": "Виталик Бутерин, Данкрад Фейст, Дидерик Лоераккер, Джордж Кадианакис, Мэтт Гарнетт, Мофи Тайво", "page-upgrade-article-author-ethereum-foundation": "Фонд Ethereum", + "page-upgrade-article-author-vitalik-buterin": "Виталик Бутерин", + "page-upgrade-article-author-ethos-dev": "Ethos.dev", "page-upgrade-article-title-two-point-oh": "Beacon Chain: версия 2.0", "page-upgrade-article-title-beacon-chain-explainer": "Главное, что нужно знать о Beacon Chain Ethereum 2.0", "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": "Автостопом по Ethereum", + "page-upgrade-article-title-eip-4844": "EIP-4844: Транзакции с большими бинарными объектами в сегментах (протоданкшардинг)", + "page-upgrade-article-title-proto-danksharding-faq": "Вопросы и ответы о протоданкшардинге", + "page-upgrade-article-title-sharding-das": "Объяснение шардинга и выборки доступности данных (DAS)", + "page-upgrade-article-title-ethmerge": "Ethmerge", + "page-upgrade-article-title-merge-is-coming": "Приближается Слияние", + "page-upgrade-article-title-state-of-the-merge": "Состояние Слияния. Обновленная информация о слиянии Ethereum для реализации доказательства владения в 2022 году", + "page-upgrade-article-title-ropsten-merge-testnet": "Анонсирование тестовой сети слияния Ropsten", + "page-upgrade-article-title-execution-layer-specs": "Спецификации уровня исполнения", + "page-upgrade-article-title-consensus-layer-specs": "Спецификации уровня консенсуса", + "page-upgrade-article-title-engine-api-specs": "Спецификации API движка", "page-upgrades-beacon-chain-date": "Сеть Beacon Chain была запущена 1 декабря 2020 года.", - "page-upgrades-beacon-chain-desc": "Сеть Beacon Chain привнесла стейкинг в Ethereum, заложила основу для будущих обновлений и в скором времени скоординирует новую систему.", + "page-upgrades-beacon-chain-desc": "Сеть Beacon Chain принесла в Ethereum стейкинг и заложила основу для будущих обновлений. Она координирует новый протокол Ethereum с доказательством владения.", "page-upgrades-beacon-chain-estimate": "Сеть Beacon Chain в действии", "page-upgrades-beacon-chain-title": "Beacon Chain", "page-upgrades-bug-bounty": "Посмотреть программу вознаграждения за поиск ошибок", "page-upgrades-clients": "Познакомьтесь с консенсус-клиентами (в прошлом — клиенты Eth2)", "page-staking-deposit-contract-title": "Проверьте адрес контракта на депозит", "page-upgrades-dive": "Узнайте о концепции больше", - "page-upgrades-dive-desc": "Как мы собираемся сделать Ethereum более масштабируемым, безопасным и устойчивым? И все это при сохранении основного идеала децентрализации Ethereum.", + "page-upgrades-dive-desc": "Как мы делаем Ethereum более масштабируемым, безопасным и экологичным? И все это при сохранении основного принципа децентрализации Ethereum.", "page-upgrades-docking": "Слияние", - "page-upgrades-merge-answer-1": "При слиянии основная сеть начнет использовать Beacon Chain для консенсуса, а доказательство работы прекратит использоваться. Это произойдет совсем скоро.", + "page-upgrades-merge-answer-1": "Слияние произошло, когда 15 сентября 2022 года Ethereum перешел на консенсус доказательства владения. Сеть Beacon Chain объединилась с основной сетью, официально отменив доказательство работі в Ethereum, и сократила потребление Ethereum энергии приблизительно на 99,95 %.", "page-upgrades-merge-btn": "Подробнее о слиянии", - "page-upgrades-merge-desc": "Основная сеть Ethereum скоро «сольется» с сетью Beacon Chain, использующей доказательство владения, что ознаменует конец энергоемкого майнинга.", - "page-upgrades-merge-estimate": "Оценка: 2022 год", + "page-upgrades-merge-desc": "Основная сеть Ethereum слилась с сетью Beacon Chain, использующей протокол доказательства владения, обозначив конец энергоемкого майнинга.", + "page-upgrades-merge-estimate": "Слияние произошло", "page-upgrades-merge-mainnet": "Что такое основная сеть (Mainnet)?", "page-upgrades-eth-blog": "Блог ethereum.org", "page-upgrades-explore-btn": "Просмотреть обновления", "page-upgrades-get-involved": "Примите участие в улучшении Ethereum", "page-upgrades-get-involved-2": "Участвовать", - "page-upgrades-head-to-ethresearch": "Переход: ethresear.ch", + "page-upgrades-head-to-ethresearch": "Посетите сайт ethresear.ch", "page-upgrades-help": "Хотите помочь с обновлениями Ethereum?", "page-upgrades-help-desc": "Есть много возможностей оценить обновления Ethereum, помочь с тестированием и даже получить вознаграждение.", "page-upgrades-index-staking": "Стейкинг уже в деле", @@ -56,8 +75,8 @@ "page-upgrades-question-1-title": "Когда будут отправлены обновления?", "page-upgrades-question-1-desc": "Ethereum обновляется постепенно; обновления отличаются друг от друга разными датами отправки.", "page-upgrades-question-2-title": "Является ли Beacon Chain отдельным блокчейном?", - "page-upgrades-question-2-desc": "Неверно думать об этой модернизации как об отдельном блокчейне.", - "page-upgrades-question-3-answer-2a": "Спецификация слияния была окончательно доработана и призвана оказывать минимальное влияние на разработчиков dapp.", + "page-upgrades-question-2-desc": "Да. Сетью Beacon Chain назывался параллельный блокчейн с протоколом доказательства владения, который был использован для обновления основной сети Ethereum. Сейчас существует только один блокчейн, сформированный посредством объединения оригинального блокчейна Ethereum и Beacon Chain.", + "page-upgrades-question-3-answer-2a": "Слияние оказало минимальное влияние на разработчиков децентрализованных приложений, они по-прежнему взаимодействуют с Ethereum теми же способами.", "page-upgrades-question-3-answer-2a-link": "Слияние и разработчики dapp", "page-upgrades-question-3-answer-2b": "Планы шардинга все еще разрабатываются, но они будут учитывать свертки слоя 2.", "page-upgrades-layer-2-rollups": "Подробнее о свертках слоя 2", @@ -65,22 +84,22 @@ "page-upgrades-question-3-desc": "Сейчас вам не нужно ничего делать, чтобы подготовиться к обновлениям.", "page-upgrades-question-3-title": "Как подготовиться к обновлениям?", "page-upgrades-question-4-answer-1": "Всякий раз, когда вы отправляете транзакцию или используете dapp сегодня, вы используете слой исполнения, также известный как «основная сеть».", - "page-upgrades-question-4-answer-3": "После слияния валидаторы будут защищать всю сеть с помощью доказательства владения.", + "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": "Основная сеть Ethereum, в которой вы совершаете транзакции сегодня, ранее называлась Eth1. Этот термин постепенно упраздняется в пользу «слоя исполнения».", - "page-upgrades-question-5-answer-1": "Чтобы стать полноценным валидатором в сети, вам нужно вложить 32 ETH. Если у вас не столько средств или вы не готовы так много вкладывать, вы можете присоединиться к пулу стейкеров. Эти пулы позволят вам вкладывать меньше и зарабатывать доли от общей суммы вознаграждения.", + "page-upgrades-question-4-desc": "До Слияния блокчейн Ethereum иногда называли 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": "Дэнни Райан из фонда Ethereum регулярно делится новостями с сообществом.", "page-upgrades-question-6-answer-4": "Бен Эджингтон из ConsenSys еженедельно выпускает информацию об обновлениях Ethereum:", "page-upgrades-question-6-answer-5": "Вы также можете присоединиться к обсуждению исследований и разработок Ethereum на ethresearch.ch.", "page-upgrades-question-6-title": "Что мне нужно делать с моим децентрализованным приложением?", - "page-upgrades-question-6-desc": "Слияние было разработано с целью минимизации воздействия на разработчиков dapp, хотя есть несколько моментов, на которые стоит обратить внимание.", - "page-upgrades-question-6-answer-1": "Некоторые изменения при слиянии могут повлиять на определенные типы приложений. Эти изменения включают структуру блоков и временные параметры, несколько изменений в коде операций, источники случайности в цепи и концепцию финализации эпохи.", - "page-upgrades-question-6-answer-1-link": "Как слияние влияет на слой приложений Ethereum", - "page-upgrades-question-6-answer-2": "Большинство приложений не будут затронуты, но мы рекомендуем разработчикам быть в курсе последних изменений, связанных со слиянием.", + "page-upgrades-question-6-desc": "Слияние было разработано таким образом, чтобы оказать минимальное воздействие на разработчиков децентрализованных приложений, хотя было несколько небольших изменений, которые стоит отметить.", + "page-upgrades-question-6-answer-1": "Разработчикам децентрализованных приложений, привыкшие к Ethereum до слияния, следует знать о некоторых изменениях. Эти изменения включают структуру блоков и синхронизацию, несколько изменений кода операций, источники случайности в цепи и концепцию завершения эпохи.", + "page-upgrades-question-6-answer-1-link": "Как Слияние повлияло на уровень приложения Ethereum", + "page-upgrades-question-6-answer-2": "Приложения были практически не затронуты.", "page-upgrades-question-7-desc": "Много разных команд со всего сообщества работают над различными обновлениями Ethereum.", "page-upgrades-question-7-lighthouse": "Lighthouse", "page-upgrades-question-7-lighthouse-lang": "(реализация на Rust)", @@ -97,7 +116,7 @@ "page-upgrades-question-7-clients": "Подробнее о клиентах Ethereum", "page-upgrades-question-8-answer-1": "Обновления Ethereum помогут Ethereum масштабироваться децентрализованно, сохраняя при этом безопасность и повышая устойчивость.", "page-upgrades-question-8-answer-2": "Возможно, самая очевидная проблема заключается в том, что Ethereum должен обрабатывать более 15–45 транзакций в секунду. Но сегодня обновления также решают некоторые другие проблемы Ethereum.", - "page-upgrades-question-8-answer-3": "Сеть пользуется таким высоким спросом, что использование Ethereum становится дорогим. Узлы сети испытывают трудности в связи с размером Ethereum и объемом данных, которые приходится обрабатывать их компьютерам. Оригинальный алгоритм, лежащий в основе безопасности и децентрализации Ethereum, требует больших затрат энергии и должен быть более экологичным.", + "page-upgrades-question-8-answer-3": "Сеть во время высокого спроса делает Ethereum дорогостоящим для использования. Узлы в сети испытывают трудности в связи с размером Ethereum и объемом данных, которые приходится обрабатывать их компьютерам. Оригинальный алгоритм, лежащий в основе безопасности и децентрализации Ethereum, был энергозатратным и нуждался в большей экологичности.", "page-upgrades-question-8-answer-4": "Многое из того, что менялось, всегда входило в план развития Ethereum, даже с 2015 года. Но текущие условия делают необходимость обновлений еще больше.", "page-upgrades-question-8-answer-6": "Познакомьтесь с концепцией Ethereum", "page-upgrades-question-8-desc": "Сегодняшний Ethereum должен стать более удобным в работе для конечных пользователей и участников сети.", @@ -117,32 +136,32 @@ "page-upgrades-question-10-answer-1-link": "Просмотреть обновления", "page-upgrades-question-10-answer-2": "Но если вы следили за обсуждениями, вот немного о том, как обновления вписываются в технические дорожные карты и как они меняются.", "page-upgrades-question-10-answer-3": "Фаза 0 описывает работу по запуску Beacon Chain.", - "page-upgrades-question-10-answer-5": "Фаза 1 изначально была направлена на внедрение цепочек осколков, но приоритеты сместились в сторону «слияния», которое является следующим запланированным обновлением.", - "page-upgrades-question-10-answer-6": "Фаза 1.5 первоначально планировалась после внедрения осколков, когда основная сеть будет добавлена в качестве последнего осколка в Beacon Chain. Однако по мере развития технологии свертков сообщество Ethereum ускорило отход от доказательства работы. Вместо этого основная сеть будет «влита» в Beacon Chain и останется в качестве слоя исполнения Ethereum. Это станет значительным шагом на пути к более экологичному Ethereum.", - "page-upgrades-question-10-answer-7": "Планы, связанные с Фазой 2, стали предметом интенсивных исследований и обсуждений. Поскольку слияние планировалось до появления шардинга, а решения слоя 2 были усовершенствованы, цели сместились в сторону обеспечения более упрощенной формы шардинга данных для достижения максимальной эффективности свертков. Текущие решения слоя 2 позволяют масштабировать выполнение транзакций, а шардинг позволит хранить доказательства для этих данных в слое 1 дешевым и масштабируемым способом.", + "page-upgrades-question-10-answer-5": "Фаза 1 первоначально фокусировалась на внедрении цепочек осколков, но приоритеты сместились в сторону Слияния, которое запланировано на 15 сентября 2022 года.", + "page-upgrades-question-10-answer-6": "Первоначально планировалось, что фаза 1.5 будет иметь место после внедрения осколков, когда основная сеть будет добавлена как последний осколок к сети Beacon Chain. Однако с развитием технологии свертков сообщество Ethereum вместо этого ускорило переход от доказательства работы.", + "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 после перехода на Ethereum 2.0. Таких планов никогда не было. Это", - "page-upgrades-question-11-answer-2": "распространенная техника, используемая мошенниками.", + "page-upgrades-question-11-desc": "Нет. Токена Eth2 не существует, и ваши ETH не изменятся после Слияния.", + "page-upgrades-question-11-answer-1": "Одной из движущих сил, лежащих в основе ребрендинга Eth2, было общее неверное представление о том, что держатели ЕТН были обязаны перенести свои ЕТН на ЕТН 2.0 после Слияния или любого другого обновления. Это не правда и никогда ей не было.", + "page-upgrades-question-11-answer-2": " Этой путаницей обычно пользуются мошенники.", "page-upgrades-question-title": "Часто задаваемые вопросы", "page-upgrades-question3-answer-1": "Владельцам ETH не нужно ничего делать. Ваш ETH не нужно будет менять или обновлять. Почти наверняка мошенники скажут вам обратное, так что будьте осторожны.", "page-upgrades-scalable": "Большая масштабируемость", "page-upgrades-scalable-desc": "Ethereum должен поддерживать тысячи транзакций в секунду, чтобы сделать приложения быстрее и дешевле в использовании.", "page-upgrades-secure": "Большая безопасность", "page-upgrades-secure-desc": "Ethereum должен быть более безопасным. Протокол должен быть более защищенным от всех форм атак, поскольку сферы применения Ethereum расширяются.", - "page-upgrades-shard-date": "Шардинг последует за слиянием в несколько этапов, где-то в 2023–2024 годах.", - "page-upgrades-shard-desc": "Шардинг расширит возможности Ethereum по хранению данных и будет гармонично сочетаться со слоем 2 для увеличения пропускной способности и снижения сетевых сборов. Шардинг будет внедряться в несколько этапов.", + "page-upgrades-shard-date": "Шардинг последует за Слиянием в несколько этапов, где-то в 2023–2024 годах.", + "page-upgrades-shard-desc": "Данкшардинг расширит возможности Ethereum по хранению данных и будет гармонично работать с L2 для увеличения пропускной способности и снижения сетевых сборов. Данкшардинг будет внедрен в несколько этапов, начиная с протоданкшардинга.", "page-upgrades-shard-estimate": "Оценка: 2023 или 2024 год", "page-upgrades-shard-lower": "Подробнее о шардинге", "page-upgrades-shard-title": "Шардинг", "page-upgrades-stay-up-to-date": "Будьте в курсе", "page-upgrades-stay-up-to-date-desc": "Получайте последние новости от исследователей и разработчиков, работающих над обновлениями Ethereum.", - "page-upgrades-sustainable-desc": "Ethereum должен быть более бережным к окружающей среде. Сегодняшняя технология требует слишком много вычислительной мощности и энергии.", + "page-upgrades-sustainable-desc": "До недавнего времени Ethereum был энергозатратным. Переход на доказательство владения привел к снижению энергопотребления сети более чем на 99,9 %.", "page-upgrades-take-part": "Примите участие в исследовании", "page-upgrades-take-part-desc": "Исследователи и энтузиасты Ethereum встречаются здесь, чтобы обсудить результаты исследований, включая те, которые связаны с обновлениями Ethereum.", "page-upgrades-the-upgrades": "Обновления Ethereum", - "page-upgrades-the-upgrades-desc": "Ethereum состоит из набора обновлений, улучшающих масштабируемость, безопасность и устойчивость сети. Хотя над каждым из них ведется отдельная, но параллельная работа, у них есть определенные зависимости, которые определяют, когда они будут развернуты.", + "page-upgrades-the-upgrades-desc": "Цель обновлений Ethereum — повысить масштабируемость сети, безопасность и устойчивость. В последнее время Ethereum претерпел несколько важных обновлений, касающихся безопасности и устойчивости, и в будущем их будет еще больше, особенно в отношении масштабируемости.", "page-upgrades-unofficial-roadmap": "Это не официальная дорожная карта. Это то, как мы видим происходящее на основе имеющейся информации. Но это технологии, и все может измениться в одно мгновение. Поэтому не воспринимайте это как обязательство.", "page-upgrades-upgrade-desc": "Ethereum, который мы знаем и любим, просто более масштабируемый, более безопасный и более устойчивый...", "page-upgrades-upgrades": "Обновления Ethereum", @@ -156,9 +175,9 @@ "page-roadmap-vision-btn": "Подробнее о концепции Ethereum", "page-roadmap-vision-desc": "Чтобы Ethereum стал популярным и служил всему человечеству, мы должны сделать Ethereum более масштабируемым, безопасным и устойчивым.", "page-upgrades-what-happened-to-eth2-title": "Что случилось с Eth2?", - "page-upgrades-what-happened-to-eth2-1": "Термин Eth2 постепенно упраздняется в рамках подготовки к слиянию.", + "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 в единую цепочку больше не будет двух отдельных сетей Ethereum; Ethereum станет единым.", + "page-upgrades-what-happened-to-eth2-2": "После слияния Eth1 и Eth2, больше не существует двух отдельных блокчейнов Ethereum; существует только единственный Ethereum.", "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 теперь является «уровнем консенсуса», который обрабатывает консенсус доказательства владения.", @@ -182,8 +201,8 @@ "page-upgrades-whats-new": "Что ждет Ethererum дальше?", "page-upgrades-security-link": "Подробнее о безопасности и предотвращении мошенничества", "page-staking-deposit-contract-staking-more-link": "Подробнее о стейкинге", - "docs-nav-proof-of-stake": "Доказательство владения (PoS)", - "docs-nav-proof-of-work": "Доказательство работы (PoW)", + "docs-nav-proof-of-stake": "Доказательство доли владения (PoS)", + "docs-nav-proof-of-work": "Доказательство выполненной работы (PoW)", "page-upgrades-get-involved-ethresearch-1": "Шардинг", "page-upgrades-get-involved-ethresearch-2": "Слияние" } diff --git a/src/intl/ru/page-upgrades.json b/src/intl/ru/page-upgrades.json index 03e8ea8b7ac..c5329f06c34 100644 --- a/src/intl/ru/page-upgrades.json +++ b/src/intl/ru/page-upgrades.json @@ -2,18 +2,23 @@ "page-upgrades-merge-infographic-el": "Состояние Ethereum: транзакции, приложения, контракты, балансы", "page-upgrades-merge-infographic-alt-text": "Инфографика, показывающая, как сеть Beacon Chain сливается со слоем исполнения Ethereum при переходе от доказательства работы к доказательству владения.", "page-upgrades-beacon-date": "Отправлено!", - "page-upgrades-merge-date": "сентябрь 2022 г.", + "page-upgrades-merge-date": "Сентябрь 2022 г.", "page-upgrades-shards-date": "Примерно 2023 г.", + "page-upgrades-pbs": "Нескоро — ожидайте в 2024–2025 гг.", + "page-upgrades-post-merge-banner-tutorial-ood": "Это руководство устарело после слияния, и информация может быть некорректной. Создайте запрос PR, если хотите внести вклад в обновление.", + "page-upgrades-post-merge-banner-governance-ood": "Некоторые материалы на этой странице устарели после слияния. Создайте запрос PR, если хотите внести вклад в обновление.", "page-upgrades-upgrades-guide": "Руководство по обновлениям Ethereum", "page-upgrades-upgrades-docking": "Слияние", "page-upgrades-shard-title": "Шардинг", - "page-upgrades-upgrades-beacon-chain": "Beacon Chain", - "consensus-beaconcha-in-desc": "Обозреватель цепочки с открытым исходным кодом", + "page-upgrades-upgrades-beacon-chain": "Сеть Beacon", + "consensus-beaconscan-title": "beaconscan", + "consensus-beaconscan-in-title": "beaconcha.in", + "consensus-beaconcha-in-desc": "Обозреватель Beacon Chain с открытым исходным кодом", "consensus-beaconscan-desc": "Обозреватель Beacon Chain: Etherscan для консенсусного уровня", - "consensus-become-staker": "Стать стейкером", - "consensus-become-staker-desc": "Доступны вложения! Если вы хотите вложить свои ETH, чтобы помочь обезопасить сеть, убедитесь, что вы осознаете риски.", - "consensus-explore": "Исследовать данные", - "consensus-run-beacon-chain": "Запуск клиента с консенсусом", + "consensus-become-staker": "Стать дольщиком", + "consensus-become-staker-desc": "Стейкинг доступен! Если вы хотите вложить свои ETH, чтобы помочь обезопасить сеть, убедитесь, что вы осознаете риски.", + "consensus-explore": "Изучить данные", + "consensus-run-beacon-chain": "Запуск консенсус-клиента", "consensus-run-beacon-chain-desc": "Ethereum нужно как можно больше запущенных клиентов. Помогите Ethereum принести обществу пользу!", "read-more": "Подробнее" } diff --git a/src/intl/ru/page-wallets-find-wallet.json b/src/intl/ru/page-wallets-find-wallet.json index 53997c84128..c5d8d2087a0 100644 --- a/src/intl/ru/page-wallets-find-wallet.json +++ b/src/intl/ru/page-wallets-find-wallet.json @@ -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": "На настольном ПК", diff --git a/src/intl/se/page-wallets-find-wallet.json b/src/intl/se/page-wallets-find-wallet.json index 7f77853ffc4..ae542373527 100644 --- a/src/intl/se/page-wallets-find-wallet.json +++ b/src/intl/se/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Filter med funktioner", "page-find-wallet-footnote-1": "Plånböckerna på den här sidan är inte officiella rekommendationer utan tillhandahålls endast i informationssyfte.", "page-find-wallet-footnote-2": "Beskrivningarna har tillhandahållits av plånboksprojekten själva.", - "page-find-wallet-footnote-3": "Vi lägger till produkter på denna sida baserat på kriterier i vår listningspolicy. Om du vill att vi ska lägga till en plånbok kan du skapa ett problem i GitHub.", + "page-find-wallet-footnote-3": "Vi lägger till produkter på denna sida baserat på kriterier i vår listningspolicy. Om du vill att vi ska lägga till en plånbok kan du skapa ett problem i GitHub.", "page-find-wallet-mobile": "Mobil", "page-find-wallet-mobile-desc": "Plånböcker med mobilappar", "page-find-wallet-desktop": "Skrivbord", diff --git a/src/intl/sk/page-wallets-find-wallet.json b/src/intl/sk/page-wallets-find-wallet.json index 3be15efee82..28e7528b2f7 100644 --- a/src/intl/sk/page-wallets-find-wallet.json +++ b/src/intl/sk/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Filtre vlastností", "page-find-wallet-footnote-1": "Peňaženky uvedené na tejto stránke niesu oficiálne schválené a sú zobrazené len na informatívne účely.", "page-find-wallet-footnote-2": "Ich popisy boli poskytnuté priamo ich prevádzkovateľmi.", - "page-find-wallet-footnote-3": "Produkty na tejto stránke pridávame na základe ktitérií našej politiky. Pokiaľ si želáte pridať peňaženku, dajte nám vedieť v GitHub.", + "page-find-wallet-footnote-3": "Produkty na tejto stránke pridávame na základe ktitérií našej politiky. Pokiaľ si želáte pridať peňaženku, dajte nám vedieť v GitHub.", "page-find-wallet-mobile": "Mobil", "page-find-wallet-mobile-desc": "Peňaženky s mobilnými aplikáciami", "page-find-wallet-desktop": "Počítač", diff --git a/src/intl/sr/page-wallets-find-wallet.json b/src/intl/sr/page-wallets-find-wallet.json index 3f1a7b75377..aa7b1f8ea58 100644 --- a/src/intl/sr/page-wallets-find-wallet.json +++ b/src/intl/sr/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Filteri funkcija", "page-find-wallet-footnote-1": "Novčanici navedeni na ovoj stranici nisu zvanične preporuke i služe samo u informativne svrhe.", "page-find-wallet-footnote-2": "Opise novčanika pružaju sami projekti novčanika.", - "page-find-wallet-footnote-3": "Dodajemo proizvode na ovu stranicu prema kriterijumima naše politike navođenja. Ako želite da dodamo novčanik, prijavite se za to na platformi GitHub.", + "page-find-wallet-footnote-3": "Dodajemo proizvode na ovu stranicu prema kriterijumima naše politike navođenja. Ako želite da dodamo novčanik, prijavite se za to na platformi GitHub.", "page-find-wallet-mobile": "Mobilni", "page-find-wallet-mobile-desc": "Novčanici sa mobilnim aplikacijama", "page-find-wallet-desktop": "Desktop", diff --git a/src/intl/sw/page-wallets-find-wallet.json b/src/intl/sw/page-wallets-find-wallet.json index cd114219b78..5ad4b822e89 100644 --- a/src/intl/sw/page-wallets-find-wallet.json +++ b/src/intl/sw/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Chujio za huduma", "page-find-wallet-footnote-1": "Pochi zilizoorodheshwa hapa sio ridhaa rasmi, bali kwa kutoa taarifa peke yake.", "page-find-wallet-footnote-2": "Maelezo yametolewa na kazi za pochi zenyewe.", - "page-find-wallet-footnote-3": "Tunaongeza bidhaa kwenye ukurasa huu kwa kutazama msingi wa sera za orodha. Kama ungependa tuongeze pochi, andika pendekezo kwenye GitHub.", + "page-find-wallet-footnote-3": "Tunaongeza bidhaa kwenye ukurasa huu kwa kutazama msingi wa sera za orodha. Kama ungependa tuongeze pochi, andika pendekezo kwenye GitHub.", "page-find-wallet-mobile": "Rununu", "page-find-wallet-mobile-desc": "Pochi zenye programu za simu", "page-find-wallet-desktop": "Tarakilishi", diff --git a/src/intl/th/page-wallets-find-wallet.json b/src/intl/th/page-wallets-find-wallet.json index d83f1866efe..d5a8a610463 100644 --- a/src/intl/th/page-wallets-find-wallet.json +++ b/src/intl/th/page-wallets-find-wallet.json @@ -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": "เดสก์ทอป", diff --git a/src/intl/tk/page-wallets-find-wallet.json b/src/intl/tk/page-wallets-find-wallet.json index 2d214d384dd..03903819a27 100644 --- a/src/intl/tk/page-wallets-find-wallet.json +++ b/src/intl/tk/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Aýratynlyk süzgüçleri", "page-find-wallet-footnote-1": "Bu sahypada görkezilen gapjyklar resmi tassyklama däl we diňe maglumat maksatly görkezilýär.", "page-find-wallet-footnote-2": "Olaryň beýany gapjyk taslamalarynyň özleri tarapyndan üpjün edildi.", - "page-find-wallet-footnote-3": "Sanaw goşmak boýunça syýasatymyzdaky talaplara laýyklykda bu sahypa önümleri goşýarys. Gapjyk goşmagymyzy isleseňiz, GitHub-da bir mesele gozgaň.", + "page-find-wallet-footnote-3": "Sanaw goşmak boýunça syýasatymyzdaky talaplara laýyklykda bu sahypa önümleri goşýarys. Gapjyk goşmagymyzy isleseňiz, GitHub-da bir mesele gozgaň.", "page-find-wallet-mobile": "Mobil", "page-find-wallet-mobile-desc": "Mobil programmalary bolan gapjyklar", "page-find-wallet-desktop": "Iş stoly", diff --git a/src/intl/tr/page-about.json b/src/intl/tr/page-about.json index a43c23a57b2..7f9d8d825fe 100644 --- a/src/intl/tr/page-about.json +++ b/src/intl/tr/page-about.json @@ -9,11 +9,11 @@ "page-about-li-4": "uygulandı", "page-about-link-1": "Bu deponun kaynak kodu MIT lisansı altında lisanslıdır", "page-about-link-2": "GitHub", - "page-about-link-3": "GitHub ilerleyişindeki görevlerin tam listesini görüntüleyin", + "page-about-link-3": "Github ilerleyişindeki görevlerin tam listesini görüntüleyin", "page-about-link-4": "Discord sunucumuza katılın", "page-about-link-5": "Twitter'da bize ulaşın", - "page-about-link-6": "GitHub'da uygulanan görevlerin tam listesini görün", - "page-about-link-7": "GitHub'da bir konu oluşturun", + "page-about-link-6": "Github'da uygulanan görevlerin tam listesini görün", + "page-about-link-7": "Github'da bir konu oluşturun", "page-about-p-1": "Ethereum.org'un lansmanından bu yana çalışma şeklimiz konusunda şeffaf olmaya çalışıyoruz. Bu esas değerlerimizden biridir zira şeffaflığın Ethereum'un başarısı için çok önemli olduğuna inanıyoruz.", "page-about-p-2": "Birincil proje yönetim aracımız olarak", "page-about-p-3": "kullanırız. Görevlerimizi üç kategoriye ayırırız:", @@ -23,10 +23,10 @@ "page-about-p-7": "En son tamamlanan görevler.", "page-about-p-8": "Ethereum.org'un nasıl geliştirilebileceği konusunda fikirleriniz mi var? Sizinle işbirliği yapmaktan mutluluk duyarız!", "page-what-is-ethereum-energy-consumption-chart-legend": "TWh/yıl cinsinden Yıllık Enerji Tüketimi", - "energy-consumption-chart-youtube-label": "YouTube", - "energy-consumption-chart-gold-mining-galaxy-label": "Altın madenciliği (Galaxy Digital)", + "page-upgrades-post-merge-banner-governance-ood": "Bu sayfadaki bazı içerikler birleşim sonrası güncelliğini kaybetti. Katkıda bulunmak isterseniz lütfen bir PR talebinde bulunun.", "energy-consumption-chart-global-data-centers-label": "Küresel veri merkezleri", - "energy-consumption-chart-gold-mining-cbeci-label": "Altın madenciliği (CBECI)", + "energy-consumption-chart-airbnb-label": "AirBnB", + "energy-consumption-gold-mining-cbeci-label": "Altın madenciliği", "energy-consumption-chart-btc-pow-label": "BTC PoW", "energy-consumption-chart-netflix-label": "Netflix", "energy-consumption-chart-eth-pow-label": "ETH PoW", diff --git a/src/intl/tr/page-assets.json b/src/intl/tr/page-assets.json index a3c2ffab995..c175aae9d8c 100644 --- a/src/intl/tr/page-assets.json +++ b/src/intl/tr/page-assets.json @@ -33,11 +33,15 @@ "page-assets-future": "Gelecek", "page-assets-h1": "ethereum.org varlıkları", "page-assets-hero": "ethereum.org kahramanı", + "page-assets-hero-panda": "birleşen panda ile ethereum.org kahramanı", + "page-assets-merge-panda": "Birleşen panda", + "page-assets-merge-panda-svg": "Birleşen panda SVG", "page-assets-hero-particles": "ETH parçacık görüntüsü", "page-assets-historical-artwork": "Tarihsel sanat eserleri", "page-assets-illustrations": "İllüstrasyonlar", "page-assets-impact": "Etki", "page-assets-infrastructure": "Altyapı", + "page-assets-leslie-the-rhino": "Gergedan Leslie", "page-assets-meta-desc": "Ethereum ve ethereum.org marka varlıklarını, çizimleri ve medyayı keşfedin ve indirin.", "page-assets-meta-title": "Ethereum marka varlıkları", "page-assets-mainnet": "Anaağ", diff --git a/src/intl/tr/page-bug-bounty.json b/src/intl/tr/page-bug-bounty.json index a6da58fdf2a..3a6b387beee 100644 --- a/src/intl/tr/page-bug-bounty.json +++ b/src/intl/tr/page-bug-bounty.json @@ -1,79 +1,88 @@ { - "page-upgrades-bug-bounty-annotated-specs": "açıklamalı şartname", + "page-upgrades-bug-bounty-annotated-specs": "açıklamalı spesifikasyon", "page-upgrades-bug-bounty-annotations": "Aşağıdaki ek açıklamaları kontrol etmek faydalı olabilir:", - "page-upgrades-bug-bounty-client-bugs": "Mutabakat katmanı istemci hataları", - "page-upgrades-bug-bounty-client-bugs-desc": "Yükseltme uygulandıktan sonra istemciler İşaret Zincirini çalıştıracaktır. İstemcilerin, şartnamede belirtilen mantığı izlemesi ve olası saldırılara karşı güvende olması gerekir. Bulmak istediğimiz hatalar, protokolün uygulanmasıyla ilgilidir.", - "page-upgrades-bug-bounty-client-bugs-desc-2": "Şu anda Lighthouse, Nimbus, Teku ve Prysm hataları tam ödüller için uygundur. Lodestar da uygundur, ancak daha sonraki denetimler tamamlanana kadar puanlar ve ödüller %10 ile sınırlıdır (maksimum ödeme 5.000 DAI'dir). Denetimleri tamamlayıp üretime hazır hâle geldikçe daha fazla istemci eklenebilir.", + "page-upgrades-bug-bounty-client-bugs": "İstemci hataları", + "page-upgrades-bug-bounty-client-bugs-desc": "İstemciler Ethereum Ağı'nı çalıştırır ve spesifikasyonda belirtilen mantığı takip etmeleri ve olası saldırılara karşı güvende olmaları gerekir. Bulmak istediğimiz hatalar, protokolün uygulanmasıyla ilgilidir.", + "page-upgrades-bug-bounty-client-bugs-desc-2": "Şu anda yürütüm katmanı istemcileri (Besu, Erigon, Geth ve Nethermind) ve fikir birliği katmanı istemcileri (Lighthouse, Lodestar, Nimbus, Teku ve Prysm), Hata Ödülü Programına dahil edilmiştir. Denetimleri tamamlayıp üretime hazır hale geldikçe daha fazla müşteri eklenebilir.", "page-upgrades-bug-bounty-clients": "Ödüllerde yer alan istemciler", - "page-upgrades-bug-bounty-clients-type-1": "Şartname uyumsuzluk sorunları", - "page-upgrades-bug-bounty-clients-type-2": "Beklenmeyen çökmeler veya hizmet reddi (DOS) güvenlik açıkları", + "page-upgrades-bug-bounty-clients-type-1": "Spesifikasyon uyumsuzluk sorunları", + "page-upgrades-bug-bounty-clients-type-2": "Beklenmeyen çökmeler, RCE veya hizmet reddi (DOS) güvenlik açıkları", "page-upgrades-bug-bounty-clients-type-3": "Ağın geri kalanından onarılamaz mutabakat ayrılıklarına yol açan tüm sorunlar", + "page-upgrades-bug-bounty-misc-bugs": "Solidity hataları", + "page-upgrades-bug-bounty-misc-bugs-desc": "Bu kapsama nelerin dahil olduğu hakkında daha fazla ayrıntı için Solidity SECURITY.MD'ye bakın.", + "page-upgrades-bug-bounty-misc-bugs-desc-2": "Solidity, güvenilmeyen girdilerin derlenmesiyle ilgili güvenlik garantilerine sahip değildir; biz de, solc derleyicisinin kötü amaçla oluşturulmuş veriler üzerindeki çökmeleri için ödül vermiyoruz.", + "page-upgrades-bug-bounty-deposit-bugs": "Mevduat Sözleşmesi hataları", + "page-upgrades-bug-bounty-deposit-bugs-desc": "İşaret Zinciri Mevduat Sözleşmesinin spesifikasyonu ve kaynak kodu, hata ödülü programının bir parçasıdır.", "page-upgrades-bug-bounty-docking": "birleştirme", "page-upgrades-bug-bounty-email-us": "Bize e-posta gönderin:", "page-upgrades-bug-bounty-help-links": "Faydalı bağlantılar", - "page-upgrades-bug-bounty-hunting": "Hata avlama kuralları", - "page-upgrades-bug-bounty-hunting-desc": "Hata ödül programı, aktif Ethereum topluluğumuzun platformu iyileştirmeye yardımcı olanları teşvik etmek ve ödüllendirmek için deneysel ve isteğe bağlı olan bir ödül programıdır. Bu bir yarışma değildir. Programı istediğimiz zaman iptal edebileceğimizi ve ödüllerin tamamen Ethereum Vakfı hata ödül panelinin takdirine bağlı olduğunu bilmelisiniz. Ayrıca, yaptırım listelerinde bulunan veya yaptırım listelerinde yer alan ülkelerde bulunan kişilere (örneğin Kuzey Kore, İran vb.) ödül veremiyoruz. Tüm vergilerden siz sorumlusunuz. Tüm ödüller geçerli olan yasaya tabidir. Son olarak, yaptığınız testler herhangi bir yasayı ihlal etmemeli veya size ait olmayan hiçbir veriyi tehlikeye atmamalıdır.", - "page-upgrades-bug-bounty-hunting-leaderboard": "Hata avı lider tablosu", - "page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "Lider tablosuna eklenmek için mutabakat katmanı hatalarını bulun", - "page-upgrades-bug-bounty-hunting-li-1": "Hâlihazırda başka bir kullanıcı tarafından gönderilmiş olan veya şartname ve istemci geliştiricileri tarafından zaten bilinen sorunlar, ödül almaya uygun değildir.", + "page-upgrades-bug-bounty-hunting": "Hata yakalama kuralları", + "page-upgrades-bug-bounty-hunting-desc": "Hata ödülü programı, platformu geliştirmeye yardımcı olanları teşvik etmek ve ödüllendirmek amacı taşıyan, aktif Ethereum topluluğumuz için deneysel ve isteğe bağlı bir ödül programıdır. Bu bir yarışma değildir. Programı istediğimiz zaman iptal edebileceğimizi bilmelisiniz ve ödüller tamamen Ethereum Foundation hata ödülü panelinin takdirindedir. Ayrıca, yaptırım listelerinde bulunan veya yaptırım listesindeki ülkelerde ikamet eden (ör. Kuzey Kore, İran vb.) kişilere ödül veremiyoruz. Yerel yasalar, kimliğinizi kanıtlamamızı gerektirebilir. Tüm vergilerden siz sorumlusunuz. Tüm ödüller geçerli yasalara tabidir. Son olarak, testiniz herhangi bir yasayı ihlal etmemeli veya size ait olmayan ve yerel çalışan test ağlarında gerçekleştirilmesi gereken hiçbir veriyi tehlikeye atmamalıdır.", + "page-upgrades-bug-bounty-hunting-leaderboard": "Fikir Birliği Katmanı Hata Ödülü liderlik tablosu", + "page-upgrades-bug-bounty-hunting-execution-leaderboard": "Yürütüm Katmanı Hata Ödülü liderlik tablosu", + "page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "Bu lider tablosunda yer almak için fikir birliği katmanındaki hataları bulun", + "page-upgrades-bug-bounty-hunting-execution-leaderboard-subtitle": "Bu lider tablosunda yer almak için yürütüm katmanındaki hataları bulun", + "page-upgrades-bug-bounty-hunting-li-1": "POC'si olmayan veya başka bir kullanıcı tarafından gönderilmiş veya spesifikasyonlar ve istemci bakımcıları tarafından zaten bilinen sorunlar ödüller için uygun değildir.", "page-upgrades-bug-bounty-hunting-li-2": "Bir güvenlik açığının kamuya açıklanması, bulunan hatayı ödül almaya uygunsuz hâle getirir.", - "page-upgrades-bug-bounty-hunting-li-3": "Ethereum Vakfı araştırmacıları ve mutabakat katmanı istemci ekiplerinin çalışanları ödül almaya uygun değildir.", - "page-upgrades-bug-bounty-hunting-li-4": "Ethereum ödül programı, ödüllerin belirlenmesinde bir dizi değişkeni dikkate alır. Uygunluk, puan ve bir ödülle ilgili tüm şartların belirlenmesi, Ethereum Vakfı hata ödül panelinin yegâne ve nihai takdirine bağlıdır.", - "page-upgrades-bug-bounty-leaderboard": "Lider tablosunun tamamını görün", + "page-upgrades-bug-bounty-hunting-li-3": "Ödül programı kapsamında, Ethereum Foundation çalışanları ve yüklenicileri veya müşteri ekipleri programa yalnızca puan toplama açısından katılabilir ve parasal ödül alamazlar.", + "page-upgrades-bug-bounty-hunting-li-4": "Ethereum ödül programı, ödüllerin belirlenmesinde bir dizi değişkeni dikkate alır. Uygunluk, puan ve bir ödülle ilgili tüm şartların belirlenmesi, Ethereum Foundation hata ödül panelinin yegâne ve nihai takdirine bağlıdır.", + "page-upgrades-bug-bounty-leaderboard": "Lider tablolarının tamamını görün", + "page-upgrades-bug-bounty-leaderboard-list": "Hata ödülü lider tablosu", "page-upgrades-bug-bounty-leaderboard-points": "puanlar", - "page-upgrades-bug-bounty-ledger-desc": "İşaret Zinciri şartnamesi, tasarım mantığını ve İşaret Zinciri yükseltmesi aracılığıyla Ethereum'a uygulanması önerilen değişiklikleri ayrıntılarıyla açıklar.", - "page-upgrades-bug-bounty-ledger-title": "İşaret Zinciri şartname hataları", - "page-upgrades-bug-bounty-meta-description": "Mutabakat katmanı hata ödülü programına genel bir bakış: nasıl dahil olunur ve ödül bilgisi.", - "page-upgrades-bug-bounty-meta-title": "Mutabakat katmanı hata avı ödül programı", - "page-upgrades-bug-bounty-not-included": "Dahil değil", - "page-upgrades-bug-bounty-not-included-desc": "Birleştirme ve parça zinciri yükseltmeleri, hâlâ aktif gelişim aşamasındadır ve bu yüzden henüz bu ödül programına eklenmemişlerdir.", + "page-upgrades-bug-bounty-ledger-desc": "Ethereum Spesifikasyonları, Yürütüm Katmanı ve Fikir Birliği Katmanı için tasarım mantığını detaylandırır.", + "page-upgrades-bug-bounty-ledger-title": "Spesifikasyon hataları", + "page-upgrades-bug-bounty-meta-description": "Ethereum hata ödülü programına genel bakış: nasıl dahil olunur ve nasıl ödül alınır?", + "page-upgrades-bug-bounty-meta-title": "Ethereum Hata Ödülü Programı", + "page-upgrades-bug-bounty-not-included": "Kapsam dışı", + "page-upgrades-bug-bounty-not-included-desc": "Yalnızca kapsam dahilinde listelenen hedefler Hata Ödülü Programının bir parçasıdır. Bu, örneğin web sayfaları, dns, e-posta gibi altyapı unsurlarımızın ödül kapsamının bir parçası olmadığı anlamına gelir. ERC20 sözleşme hataları genellikle ödül kapsamına dahil edilmez. Ancak, bu gibi durumlarda yazarlar veya borsalar gibi etkilenen taraflara ulaşılmasına yardımcı oluruz. ENS, ENS vakfı tarafından sürdürülür ve ödül kapsamının bir parçası değildir. Kullanıcının JSON-RPC veya Beacon API gibi halka açık bir API'ye sahip olmasını gerektiren açıklıklar hata ödülü programının kapsamı dışındadır.", "page-upgrades-bug-bounty-owasp": "OWASP yöntemini görüntüle", - "page-upgrades-bug-bounty-points": "Ethereum Vakfı ayrıca aşağıdakilere dayalı olarak puanlar verecektir:", + "page-upgrades-bug-bounty-points": "EF, ayrıca aşağıdakilere dayalı olarak da ödüller verecektir:", "page-upgrades-bug-bounty-points-error": "Veriler yüklenirken hata oluştu... lütfen yenileyin.", "page-upgrades-bug-bounty-points-exchange": "Puan Takası", - "page-upgrades-bug-bounty-points-loading": "Veri yükleniyor...", - "page-upgrades-bug-bounty-points-payout-desc": "Ethereum Vakfı, ABD Doları karşılığını ETH veya DAI olarak ödeyecektir.", + "page-upgrades-bug-bounty-points-loading": "Veriler yükleniyor...", + "page-upgrades-bug-bounty-points-payout-desc": "Ethereum Foundation, ABD Doları karşılığını ETH veya DAI olarak ödeyecektir.", "page-upgrades-bug-bounty-points-point": "1 puan", - "page-upgrades-bug-bounty-points-rights-desc": "Ethereum Vakfı, bunu önceden haber vermeksizin değiştirme hakkını saklı tutar.", + "page-upgrades-bug-bounty-points-rights-desc": "Ethereum Foundation, bunu önceden haber vermeksizin değiştirme hakkını saklı tutar.", "page-upgrades-bug-bounty-points-usd": "2 ABD Doları", - "page-upgrades-bug-bounty-quality": "Açıklama kalitesi", - "page-upgrades-bug-bounty-quality-desc": "Açık, iyi yazılmış gönderimler için daha yüksek ödüller ödenir.", - "page-upgrades-bug-bounty-quality-fix": "Dahilse Çözüm kalitesi: Sorunun nasıl çözüleceğine dair net bir açıklama içeren gönderimler için daha yüksek ödüller ödenir.", + "page-upgrades-bug-bounty-quality": "Açıklamanın kalitesi", + "page-upgrades-bug-bounty-quality-desc": ": Açık, iyi yazılmış başvurular için daha yüksek ödüller ödenir.", + "page-upgrades-bug-bounty-quality-fix": "Dahilse çözüm kalitesi: Sorunun nasıl çözüleceğine dair net bir açıklama içeren başvurular için daha yüksek ödüller ödenir.", "page-upgrades-bug-bounty-quality-repro": "Tekrarlanabilirlik kalitesi", - "page-upgrades-bug-bounty-quality-repro-desc": ": Lütfen test kodunu, komut dosyalarını ve ayrıntılı talimatları ekleyin. Güvenlik açığını yeniden üretmek ve doğrulamak bizim için ne kadar kolay olursa, ödül de o kadar yüksek olur.", - "page-upgrades-bug-bounty-questions": "Sorularınız mı var?", + "page-upgrades-bug-bounty-quality-repro-desc": ": Ödüllere, uygun kabul edilebilmeleri için bir Kavram Kanıtı (POC) eklenmelidir. Lütfen test kodunu, komut dosyalarını ve ayrıntılı talimatları ekleyin. Güvenlik açığını yeniden oluşturmak ve doğrulamak bizim için ne kadar kolay olursa, ödül de o kadar yüksek olur.", + "page-upgrades-bug-bounty-questions": "Sorunuz var mı?", "page-upgrades-bug-bounty-rules": "Kuralları okuyun", - "page-upgrades-bug-bounty-slogan": "Mutabakat katmanı hata ödülleri", - "page-upgrades-bug-bounty-specs": "Şartnamenin tamamını okuyun", - "page-upgrades-bug-bounty-specs-docs": "Şartname belgeleri", + "page-upgrades-bug-bounty-slogan": "Hata Ödülü Programı", + "page-upgrades-bug-bounty-specs": "Fikir Birliği Katmanı Spesifikasyonları", + "page-upgrades-bug-bounty-execution-specs": "Yürütüm Katmanı Spesifikasyonları", + "page-upgrades-bug-bounty-specs-docs": "Spesifikasyon belgeleri", "page-upgrades-bug-bounty-submit": "Hata bildirin", - "page-upgrades-bug-bounty-submit-desc": "Bulduğunuz her hata için puan kazanacaksınız. Kazandığınız puanlar, hatanın ciddiyetine bağlıdır. Ek denetimler tamamlanmak üzere olduğundan, Lodestar hataları şu anda aşağıda listelenen puanların %10 kadarını alıyor. Ethereum Foundation (EF), hata ciddiyetini OWASP yöntemini kullanarak belirler.", - "page-upgrades-bug-bounty-subtitle": "Mutabakat katmanı protokolünü ve istemci hatalarını bularak 50.000 ABD Dolarına kadar kazanın ve lider tablosunda bir yer edinin.", - "page-upgrades-bug-bounty-title": "Gönderilere açık", + "page-upgrades-bug-bounty-submit-desc": "Bulduğunuz her geçerli hata için ödül kazanacaksınız. Verilen ödüllerin miktarı, Önem Derecesine bağlı olarak değişecektir. Önem derecesi, Ethereum Ağı Üzerindeki Etki ve Olabilirlik temelinde OWASP risk derecelendirme modeline göre hesaplanır.", + "page-upgrades-bug-bounty-subtitle": "Ethereum ağını etkileyen protokol, istemci ve Solidity hatalarını bularak 250.000 ABD Dolarına kadar ödül kazanın ve lider panosunda yer alın.", + "page-upgrades-bug-bounty-title": "Başvurulara açık", "page-upgrades-bug-bounty-title-1": "İşaret Zinciri", "page-upgrades-bug-bounty-title-2": "Çatal seçimi", - "page-upgrades-bug-bounty-title-3": "Solidity para yatırma sözleşmesi", - "page-upgrades-bug-bounty-title-4": "Eşler arası (P2P) ağ iletişimi", + "page-upgrades-bug-bounty-title-3": "Solidity yatırma sözleşmesi", + "page-upgrades-bug-bounty-title-4": "Eşler arası ağ iletişimi", "page-upgrades-bug-bounty-type-1": "Güvenlik/kesinlik bozan hatalar", "page-upgrades-bug-bounty-type-2": "Hizmet reddi (DOS) vektörleri", - "page-upgrades-bug-bounty-type-3": "Dürüst doğrulayıcıların kesilebileceği durumlar gibi varsayımlardaki tutarsızlıklar", + "page-upgrades-bug-bounty-type-3": "Dürüst doğrulayıcıların kesilebileceği durumlar gibi varsayım tutarsızlıkları", "page-upgrades-bug-bounty-type-4": "Hesaplama veya parametre tutarsızlıkları", "page-upgrades-bug-bounty-types": "Hata türleri", - "page-upgrades-bug-bounty-validity": "Geçerli hatalar", - "page-upgrades-bug-bounty-validity-desc": "Bu hata ödül programı, çekirdek mutabakat katmanı İşaret Zinciri şartnamesinde ve Lighthouse, Nimbus, Teku, Prysm ve Lodestar istemci uygulamalarında hataları bulmaya odaklıdır.", + "page-upgrades-bug-bounty-validity": "Kapsam dahilinde", + "page-upgrades-bug-bounty-validity-desc": "Hata ödül programımız uçtan uca yayılmıştır: protokollerin sağlamlığı (blokzincir mutabakat modeli, kablo ve p2p protokolleri, hisse ispati, vs.) ve protokol/uygulamanın ağ güvenliğine ve mutabakat bütünlüğüne uymasına kadar. Klasik istemci güvenliğinin yanı sıra kriptografik temellerin güvenliği de programın bir parçasıdır. Emin olamadığınız bir şey varsa, bounty@ethereum.org adresinden bize e-posta gönderip sorabilirsiniz.", "page-upgrades-bug-bounty-card-critical": "Kritik", "page-upgrades-bug-bounty-card-critical-risk": "Kritik riskli hata bildirin", - "page-upgrades-bug-bounty-card-h2": "Orta", + "page-upgrades-bug-bounty-card-h2": "Medium", "page-upgrades-bug-bounty-card-high": "Yüksek", "page-upgrades-bug-bounty-card-high-risk": "Yüksek riskli hata bildirin", "page-upgrades-bug-bounty-card-label-1": "1.000 puana kadar", - "page-upgrades-bug-bounty-card-label-2": "2.000 DAI'ye kadar", + "page-upgrades-bug-bounty-card-label-2": "2.000 ABD Dolarına kadar", "page-upgrades-bug-bounty-card-label-3": "5.000 puana kadar", - "page-upgrades-bug-bounty-card-label-4": "10.000 DAI'ye kadar", + "page-upgrades-bug-bounty-card-label-4": "10.000 ABD Dolarına kadar", "page-upgrades-bug-bounty-card-label-5": "10.000 puana kadar", - "page-upgrades-bug-bounty-card-label-6": "20.000 DAI'ye kadar", + "page-upgrades-bug-bounty-card-label-6": "50.000 ABD Dolarına kadar", "page-upgrades-bug-bounty-card-label-7": "25.000 puana kadar", - "page-upgrades-bug-bounty-card-label-8": "50.000 DAI'ye kadar", + "page-upgrades-bug-bounty-card-label-8": "250.000 ABD Dolarına kadar", "page-upgrades-bug-bounty-card-li-1": "Düşük etki, orta olasılık", "page-upgrades-bug-bounty-card-li-2": "Orta etki, düşük olasılık", "page-upgrades-bug-bounty-card-li-3": "Yüksek etki, düşük olasılık", @@ -88,8 +97,40 @@ "page-upgrades-bug-bounty-card-subheader": "Önem Derecesi", "page-upgrades-bug-bounty-card-subheader-2": "Örnek", "page-upgrades-bug-bounty-card-text": "Saldırgan bazen bir düğümü, doğrulayıcı tarafından yapılan her yüz onaydan birini bırakmasına neden olacak bir duruma getirebilir", - "page-upgrades-bug-bounty-card-text-1": "Saldırgan, başında 4 sıfır bayt bulunduran eş kimlikli düğümlere başarılı tutulma saldırıları gerçekleştirebilir", - "page-upgrades-bug-bounty-card-text-2": "İki istemci arasında bir mutabakat hatası vardır, ancak saldırganın olayı tetiklemesi zordur veya pratik değildir.", - "page-upgrades-bug-bounty-card-text-3": "İki istemci arasında bir mutabakat hatası vardır ve bir saldırganın olayı tetiklemesi çok kolaydır.", - "page-upgrades-question-title": "Sıkça sorulan sorular" + "page-upgrades-bug-bounty-card-text-1": "Saldırgan, başında 4 sıfırlı bayt bulunduran eş kimlikli düğümlere başarılı tutulma saldırıları gerçekleştirebilir", + "page-upgrades-bug-bounty-card-text-2": "Saldırgan, ağın büyük parçalarını başarıyla ayırabilir ve bir saldırgan için kırılganlığı tetiklemek sıradan bir iştir", + "page-upgrades-bug-bounty-card-text-3": "Saldırgan, çoğunluk istemcisindeki kod yürütmesini uzaktan başarıyla yönetebilir ve bir saldırgan için güvenlik açığını bulup tetiklemek sıradan bir iştir", + "page-upgrades-question-title": "Sıkça sorulan sorular", + "bug-bounty-faq-q1-title": "İyi bir güvenlik açığı başvurusu neye benzer?", + "bug-bounty-faq-q1-contentPreview": "Kaliteli güvenlik açığı başvurusunun gerçek bir örneğini görün.", + "bug-bounty-faq-q1-content-1": "Açıklama:doğrulanmamış bloklar kullanılarak uzaktan hizmet-reddi", + "bug-bounty-faq-q1-content-2": "Saldırı senaryosu: Bir saldırgan yüksek işlem kapasitesi gerektiren bloklar gönderebilir(en fazla gasLimit kadar) fakat iş-ispatı yoktur. Eğer saldırgan blokları sürekli bir şekilde gönderirse, kurbanın bilgisayarının işlemci kullanımını %100'e kadar zorlayabilir.", + "bug-bounty-faq-q1-content-3": "Impact: Bir saldırgan, uzak düğümlerde işlemci kullanımını kötüye kullanarak tam hizmet reddine neden olabilir.", + "bug-bounty-faq-q1-content-4": "Bileşenler: Go istemci versiyonu v0.6.8", + "bug-bounty-faq-q1-content-5": "Çoğaltma: Çok sayıda txs içeren ancak geçerli PoW içermeyen bir Go düğümüne blok gönderin.", + "bug-bounty-faq-q1-content-6": "Ayrıntılar: Bloklar, Process(Block, dontReact) yönteminde doğrulanır. Bu yöntem, işlemleri yürütme (sm.ApplyDiff) gibi yoğun işlemci kullanımı gerektiren pahalı görevleri gerçekleştirir ve ardından iş ispatını (sm.ValidateBlock()) doğrular. Bu, bir saldırganın yüksek miktarda hesaplama (maksimum gasLimit) gerektirebilecek ancak iş ispatı içermeyen bloklar göndermesine olanak tanır. Saldırgan, blokları sürekli olarak göndermesi halinde kurban düğümünü %100 kullanıma zorlayabilir.", + "bug-bounty-faq-q1-content-7": "Düzeltme: Kontrollerin sıralamasını tersine çevirin.", + "bug-bounty-faq-q2-title": "Hata ödüllendirme programı zaman kısıtlı mıdır?", + "bug-bounty-faq-q2-contentPreview": "Hayır.", + "bug-bounty-faq-q2-content-1": "Güncel olarak bir son tarih henüz belirlenmedi. Son haberler için Ethereum Foundation bloğunu inceleyin.", + "bug-bounty-faq-q3-title": "Ödüller nasıl ödenir?", + "bug-bounty-faq-q3-contentPreview": "Ödüller, ETH veya DAI olarak ödenir.", + "bug-bounty-faq-q3-content-1": "Ödüller, genelde birkaç gün süren başvuru doğrulaması sürecinin ardından ETH ya da DAI olarak ödenir. Yerel yasalar kimliğinizi kanıtlayan bir belge istememizi şart koşar. Ek olarak, ETH adresinize ihtiyacımız olacaktır.", + "bug-bounty-faq-q4-title": "Ödülümü hayır kurumuna bağışlayabilir miyim?", + "bug-bounty-faq-q4-contentPreview": "Evet!", + "bug-bounty-faq-q4-content-1": "Ödülünüzü seçtiğiniz hayır kurumu organizasyonuna bağışlayabiliriz.", + "bug-bounty-faq-q5-title": "Bir sorunu/güvenlik açığını bildirdim fakat bir geri dönüş yapılmadı!", + "bug-bounty-faq-q5-contentPreview": "Lütfen birinin başvurunuzu yanıtlaması için birkaç gün verin.", + "bug-bounty-faq-q5-content-1": "Başvuruları olabildiğince hızlı bir şekilde cevaplandırmayı amaçlıyoruz. Eğer bir ya da iki gün içinde bir geri dönüş almadıysanız bounty@ethereum.org adresine e-posta göndermekten çekinmeyin.", + "bug-bounty-faq-q6-title": "Anonim kalmak istiyorum/ismimin liderlik tablosunda olmasını istemiyorum.", + "bug-bounty-faq-q6-contentPreview": "Bunu yapabilirsiniz, ancak ödül almaya uygunluğunuzu kaybetmenize sebep olabilir.", + "bug-bounty-faq-q6-content-1": "Anonim olarak ya da takma adla başvuru yapabilirsiniz fakat bu, ETH/DAI ödülleri almaya uygunluğunuzu yitirmenize neden olacaktır. ETH/DAI ödülleri için uygunluğunuzu korumak istiyorsanız gerçek isminize ve kimliğinize ihtiyacımız var. Ödülünüzü bir hayır kurumuna bağışlamak için kimliğiniz gerekmez.", + "bug-bounty-faq-q6-content-2": "İsminizin ya da kullanıcı adınızın liderlik tablosunda görünmesini istemiyorsanız lütfen bizi bilgilendirin.", + "bug-bounty-faq-q7-title": "Liderlik tablosundaki puanlar nedir?", + "bug-bounty-faq-q7-contentPreview": "Bulunan her açık/soruna bir puan atanır", + "bug-bounty-faq-q7-content-1": "Bulunan her açık/soruna bir puan atanır. Ödül avcıları toplam puanlar üzerinden liderlik tablomuzda sıralanır.", + "bug-bounty-faq-q8-title": "PGP anahtarınız var mı?", + "bug-bounty-faq-q8-contentPreview": "Evet. Detaylar için genişletin.", + "bug-bounty-faq-q8-content-1": "Lütfen bunu kullanın: AE96 ED96 9E47 9B00 84F3 E17F E88D 3334 FA5F 6A0A", + "bug-bounty-faq-q8-PGP-key": "PGP Anahtarı" } diff --git a/src/intl/tr/page-contributing-translation-program-acknowledgements.json b/src/intl/tr/page-contributing-translation-program-acknowledgements.json index 1a960600db8..f68dd5a567e 100644 --- a/src/intl/tr/page-contributing-translation-program-acknowledgements.json +++ b/src/intl/tr/page-contributing-translation-program-acknowledgements.json @@ -35,7 +35,7 @@ "page-contributing-translation-program-acknowledgements-how-to-claim-title": "Nasıl talep edilir?", "page-contributing-translation-program-acknowledgements-how-to-claim-1": "Katılın:", "page-contributing-translation-program-acknowledgements-how-to-claim-1-discord": "Discord sunucusu", - "page-contributing-translation-program-acknowledgements-how-to-claim-2": "#🥇 | poaps kanalına Crowdin hesabınıza yönlendiren bir bağlantı yapıştırın.", + "page-contributing-translation-program-acknowledgements-how-to-claim-2": "#🥇 | poaps kanalında Crowdin hesabınıza yönlendiren bir bağlantı yapıştırın.", "page-contributing-translation-program-acknowledgements-how-to-claim-3": "Ekibimizin bir üyesinin size POAP'nize yönlendiren bir bağlantı göndermesini bekleyin.", "page-contributing-translation-program-acknowledgements-how-to-claim-4": "POAP'nizi talep edin!", "page-contributing-translation-program-acknowledgements-4": "POAP'leri talep etmek için yalnızca öz gözetimli cüzdanları kullanmalısınız. Özel anahtarlara sahip olmadığınız borsa hesapları veya diğer hesapları kullanmayın, çünkü bunlar POAP'lerinize erişmenize ve bunları yönetmenize izin vermez." diff --git a/src/intl/tr/page-developers-tutorials.json b/src/intl/tr/page-developers-tutorials.json index a6c16b21d30..1ecb54969c5 100644 --- a/src/intl/tr/page-developers-tutorials.json +++ b/src/intl/tr/page-developers-tutorials.json @@ -20,9 +20,10 @@ "page-tutorials-meta-description": "İncelenen Ethereum topluluğu eğitimlerine konuya göre göz atın ve filtreleyin.", "page-tutorial-external-link": "Harici", "page-tutorials-meta-title": "Ethereum Geliştirme Öğreticileri", - "page-tutorial-beginner": "Yeni başlayan", + "page-tutorial-beginner": "Acemi", "page-tutorial-intermediate": "Orta düzey", "page-tutorial-advanced": "Gelişmiş", "page-find-wallet-try-removing": "Bir veya iki özelliği kaldırmayı deneyin", - "page-find-wallet-clear": "Filtreleri temizle" + "page-find-wallet-clear": "Filtreleri temizle", + "page-tutorials-env-banner": ".env'yi girmeyin! Sırlarınızın başkası tarafından ele geçirilmesi riski taşıdığından lütfen .env dosyanızı başkalarına asla göstermeyin veya başkalarıyla asla paylaşmayın. Versiyon kontrolü kullanıyorsanız .env'nizi bir gitignore dosyasına ekleyin." } diff --git a/src/intl/tr/page-wallets-find-wallet.json b/src/intl/tr/page-wallets-find-wallet.json index 08d409b32cc..d7b282715b9 100644 --- a/src/intl/tr/page-wallets-find-wallet.json +++ b/src/intl/tr/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Özellik filtreleri", "page-find-wallet-footnote-1": "Bu sayfada listelenen cüzdanlar resmi onaylı değildir ve yalnızca bilgilendirme amaçlıdır.", "page-find-wallet-footnote-2": "Açıklamaları, cüzdan projelerinin kendileri tarafından sağlanmıştır.", - "page-find-wallet-footnote-3": "Bu sayfaya listeleme politikamıza göre ürün ekliyoruz. Bir cüzdan eklememizi isterseniz, GitHub ile iletişime geçin.", + "page-find-wallet-footnote-3": "Bu sayfaya listeleme politikamıza göre ürün ekliyoruz. Bir cüzdan eklememizi isterseniz, GitHub ile iletişime geçin.", "page-find-wallet-mobile": "Mobil", "page-find-wallet-mobile-desc": "Mobil uygulaması olan cüzdanlar", "page-find-wallet-desktop": "Masaüstü", diff --git a/src/intl/uk/page-wallets-find-wallet.json b/src/intl/uk/page-wallets-find-wallet.json index 85042072046..e134f19e192 100644 --- a/src/intl/uk/page-wallets-find-wallet.json +++ b/src/intl/uk/page-wallets-find-wallet.json @@ -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": "Настільний комп’ютер", diff --git a/src/intl/vi/page-wallets-find-wallet.json b/src/intl/vi/page-wallets-find-wallet.json index fb0288e3d6f..79d99399225 100644 --- a/src/intl/vi/page-wallets-find-wallet.json +++ b/src/intl/vi/page-wallets-find-wallet.json @@ -81,7 +81,7 @@ "page-find-wallet-feature-filters": "Lọc theo tính năng", "page-find-wallet-footnote-1": "Ví được liệt kê trên trang này chỉ là giả dụ và chỉ được cung cấp cho mục đích thông tin.", "page-find-wallet-footnote-2": "Những tiêu chí trên đã được cung cấp bởi chính các chủ của dự án ví.", - "page-find-wallet-footnote-3": "Chúng tôi thêm sản phẩm vào trang này dựa trên các tiêu chí trong chính sách niêm yết của chúng tôi. Nếu bạn muốn chúng tôi thống kê thêm, hãy báo cáo trong GitHub.", + "page-find-wallet-footnote-3": "Chúng tôi thêm sản phẩm vào trang này dựa trên các tiêu chí trong chính sách niêm yết của chúng tôi. Nếu bạn muốn chúng tôi thống kê thêm, hãy báo cáo trong GitHub.", "page-find-wallet-mobile": "Di động", "page-find-wallet-mobile-desc": "Ví có trên di động", "page-find-wallet-desktop": "Máy tính để bàn", diff --git a/src/intl/zh-tw/page-wallets-find-wallet.json b/src/intl/zh-tw/page-wallets-find-wallet.json index 7eda67a58d4..753d110b0e6 100644 --- a/src/intl/zh-tw/page-wallets-find-wallet.json +++ b/src/intl/zh-tw/page-wallets-find-wallet.json @@ -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": "桌上型電腦", diff --git a/src/intl/zh/page-wallets-find-wallet.json b/src/intl/zh/page-wallets-find-wallet.json index 49f87eeff59..aaa3c1db2cd 100644 --- a/src/intl/zh/page-wallets-find-wallet.json +++ b/src/intl/zh/page-wallets-find-wallet.json @@ -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": "桌面", diff --git a/src/lambda/calendarEvents.ts b/src/lambda/calendarEvents.ts deleted file mode 100644 index f668b561647..00000000000 --- a/src/lambda/calendarEvents.ts +++ /dev/null @@ -1,66 +0,0 @@ -import axios from "axios" - -import type { HandlerResponse } from "@netlify/functions" - -export const lambda = async ( - apiKey: string, - calenderId: string -): Promise => { - try { - const futureEventsReq = await axios.get( - `https://content.googleapis.com/calendar/v3/calendars/${calenderId}/events`, - { - params: { - key: apiKey, - timeMin: new Date().toISOString(), - maxResults: 3, - singleEvents: true, - orderBy: "startTime", - }, - } - ) - - const pastEventsReq = await axios.get( - `https://content.googleapis.com/calendar/v3/calendars/${calenderId}/events`, - { - params: { - key: apiKey, - timeMax: new Date().toISOString(), - maxResults: 4, - singleEvents: true, - orderBy: "startTime", - }, - } - ) - - const response = { - pastEvents: pastEventsReq.data.items, - futureEvents: futureEventsReq.data.items, - } - return { statusCode: 200, body: JSON.stringify(response) } - } catch (error) { - console.error(error) - // @ts-ignore - return { - statusCode: 500, - body: JSON.stringify({ - msg: "Something went wrong with requesting the calendar events data.", - }), - } - } -} - -export const handler = (): Promise => { - let apiKey = process.env.GOOGLE_API_KEY - let calendarId = process.env.GOOGLE_CALENDAR_ID - - if (!apiKey) { - throw new Error("required env GOOGLE_API_KEY not set") - } - - if (!calendarId) { - throw new Error("require env GOOGLE_CALENDAR_ID not set") - } - - return lambda(apiKey, calendarId) -} diff --git a/src/lambda/defipulse.ts b/src/lambda/defipulse.ts deleted file mode 100644 index 3c2446f0d54..00000000000 --- a/src/lambda/defipulse.ts +++ /dev/null @@ -1,39 +0,0 @@ -import axios from "axios" -import takeRightWhile from "lodash/takeRightWhile" - -import type { HandlerResponse } from "@netlify/functions" - -export const lambda = async (): Promise => { - try { - const response = await axios.get(`https://api.llama.fi/charts/Ethereum`) - if (response.status < 200 || response.status >= 300) { - return { - statusCode: response.status, - body: response.statusText, - } - } - - const { data } = response - - // get only the last 90 days - const daysToFetch = 90 - const now = new Date() - const startDate = new Date(now.setDate(now.getDate() - daysToFetch)) - const startTimestamp = Math.round(startDate.getTime() / 1000) - - const trimmedData = takeRightWhile( - data, - ({ date }) => Number(date) > startTimestamp - ) - - return { statusCode: 200, body: JSON.stringify(trimmedData) } - } catch (error) { - console.error(error) - // @ts-ignore - return { statusCode: 500, body: JSON.stringify({ msg: error.message }) } - } -} - -export const handler = (): Promise => { - return lambda() -} diff --git a/src/lambda/etherscan.ts b/src/lambda/etherscan.ts deleted file mode 100644 index 3ee4f23db22..00000000000 --- a/src/lambda/etherscan.ts +++ /dev/null @@ -1,38 +0,0 @@ -import axios from "axios" - -import type { HandlerResponse } from "@netlify/functions" - -export const lambda = async (apiKey: string): Promise => { - const daysToFetch = 90 - const now = new Date() - const endDate = now.toISOString().split("T")[0] // YYYY-MM-DD - const startDate = new Date(now.setDate(now.getDate() - daysToFetch)) - .toISOString() - .split("T")[0] // {daysToFetch} days ago - try { - const response = await axios.get( - `https://api.etherscan.io/api?module=stats&action=nodecounthistory&startdate=${startDate}&enddate=${endDate}&sort=desc&apikey=${apiKey}` - ) - if (response.status < 200 || response.status >= 300) { - return { statusCode: response.status, body: response.statusText } - } - const { data } = response - return { statusCode: 200, body: JSON.stringify(data) } - } catch (error) { - console.error(error) - return { - statusCode: 500, - body: JSON.stringify({ msg: (error as Error).message }), - } - } -} - -export const handler = () => { - let apiKey = process.env.ETHERSCAN_API_KEY - - if (!apiKey) { - throw new Error("required env ETHERSCAN_API_KEY not set") - } - - return lambda(apiKey) -} diff --git a/src/lambda/etherscanBlock.ts b/src/lambda/etherscanBlock.ts deleted file mode 100644 index 53bbeb7beaf..00000000000 --- a/src/lambda/etherscanBlock.ts +++ /dev/null @@ -1,36 +0,0 @@ -import axios from "axios" - -import type { HandlerResponse } from "@netlify/functions" - -export const lambda = async (apiKey: string): Promise => { - try { - const response = await axios.get( - `https://api.etherscan.io/api?module=block&action=getblockcountdown&blockno=12965000&apikey=${apiKey}` - ) - if (response.status < 200 || response.status >= 300) { - return { statusCode: response.status, body: response.statusText } - } - - const { data } = response - return { - statusCode: 200, - body: JSON.stringify(data.result.EstimateTimeInSec || 0), - } - } catch (error) { - console.error(error) - return { - statusCode: 500, - body: JSON.stringify({ msg: (error as Error).message }), - } - } -} - -export const handler = () => { - let apiKey = process.env.ETHERSCAN_API_KEY - - if (!apiKey) { - throw new Error("required env ETHERSCAN_API_KEY not set") - } - - return lambda(apiKey) -} diff --git a/src/lambda/l2beat.ts b/src/lambda/l2beat.ts deleted file mode 100644 index be34b0fd451..00000000000 --- a/src/lambda/l2beat.ts +++ /dev/null @@ -1,28 +0,0 @@ -import axios from "axios" - -import type { HandlerResponse } from "@netlify/functions" - -export const lambda = async (): Promise => { - try { - const response = await axios.get(`https://api.l2beat.com/api/tvl`) - if (response.status < 200 || response.status >= 300) { - return { statusCode: response.status, body: response.statusText } - } - - const { data } = response - return { - statusCode: 200, - body: JSON.stringify(data), - } - } catch (error) { - console.error(error) - return { - statusCode: 500, - body: JSON.stringify({ msg: (error as Error).message }), - } - } -} - -export const handler = () => { - return lambda() -} diff --git a/src/lambda/translation-build.ts b/src/lambda/translation-build.ts deleted file mode 100644 index 86b8f6d5751..00000000000 --- a/src/lambda/translation-build.ts +++ /dev/null @@ -1,29 +0,0 @@ -// TODO add /translations-build/ page - -// const axios = require("axios") - -// exports.handler = async function (event, context) { -// try { -// const baseURL = -// "https://api.crowdin.com/api/project/ethereum-org/export" -// const { CROWDIN_API_KEY } = process.env - -// const resp = await axios.get(`${baseURL}?key=${CROWDIN_API_KEY}&json`) - -// if (resp.status < 200 || resp.status >= 300) { -// return { statusCode: resp.status, body: resp.statusText } -// } - -// const data = await resp.data -// return { -// statusCode: 200, -// body: JSON.stringify({ data }), -// } -// } catch (err) { -// console.log(err) // output to netlify function log -// return { -// statusCode: 500, -// body: JSON.stringify({ msg: err.message }), -// } -// } -// } diff --git a/src/lambda/translations.ts b/src/lambda/translations.ts deleted file mode 100644 index 42deb90a5ca..00000000000 --- a/src/lambda/translations.ts +++ /dev/null @@ -1,37 +0,0 @@ -import axios from "axios" - -import type { HandlerResponse } from "@netlify/functions" - -export const lambda = async (apiKey: string): Promise => { - try { - const baseURL = "https://api.crowdin.com/api/project/ethereum-org/status" - - const resp = await axios.get(`${baseURL}?key=${apiKey}&json`) - - if (resp.status < 200 || resp.status >= 300) { - return { statusCode: resp.status, body: resp.statusText } - } - - const data = await resp.data - return { - statusCode: 200, - body: JSON.stringify({ data }), - } - } catch (error) { - console.log(error) // output to netlify function log - return { - statusCode: 500, - body: JSON.stringify({ msg: (error as Error).message }), - } - } -} - -export const handler = () => { - let apiKey = process.env.CROWDIN_API_KEY - - if (!apiKey) { - throw new Error("required env CROWDIN_API_KEY not set") - } - - return lambda(apiKey) -} diff --git a/src/lambda/txs.ts b/src/lambda/txs.ts deleted file mode 100644 index 9ad64f82287..00000000000 --- a/src/lambda/txs.ts +++ /dev/null @@ -1,41 +0,0 @@ -import axios from "axios" - -import type { HandlerResponse } from "@netlify/functions" - -export const lambda = async (apiKey: string): Promise => { - try { - const daysToFetch = 90 - const now = new Date() - const endDate = now.toISOString().split("T")[0] // YYYY-MM-DD - const startDate = new Date(now.setDate(now.getDate() - daysToFetch)) - .toISOString() - .split("T")[0] // {daysToFetch} days ago - const response = await axios.get( - `https://api.etherscan.io/api?module=stats&action=dailytx&startdate=${startDate}&enddate=${endDate}&sort=asc&apikey=${apiKey}` - ) - if (response.status < 200 || response.status >= 300) { - return { statusCode: response.status, body: response.statusText } - } - const { data } = response - return { - statusCode: 200, - body: JSON.stringify(data.result), - } - } catch (error) { - console.error(error) - return { - statusCode: 500, - body: JSON.stringify({ msg: (error as Error).message }), - } - } -} - -export const handler = () => { - let apiKey = process.env.ETHERSCAN_API_KEY - - if (!apiKey) { - throw new Error("required env ETHERSCAN_API_KEY not set") - } - - return lambda(apiKey) -} diff --git a/src/pages-conditional/dapps.tsx b/src/pages-conditional/dapps.tsx index 63bfa0061d7..0048a92e7c9 100644 --- a/src/pages-conditional/dapps.tsx +++ b/src/pages-conditional/dapps.tsx @@ -670,6 +670,20 @@ const DappsPage = ({ image: getImage(data.balancer), alt: t("page-dapps-balancer-logo-alt"), }, + { + title: "Curve", + description: t("page-dapps-dapp-description-curve"), + link: "https://curve.fi/", + image: getImage(data.curve), + alt: t("page-dapps-curve-logo-alt"), + }, + { + title: "DODO", + description: t("page-dapps-dapp-description-dodo"), + link: "https://dodoex.io/", + image: getImage(data.dodo), + alt: t("page-dapps-dodo-logo-alt"), + }, ] const trading = [ @@ -1099,7 +1113,7 @@ const DappsPage = ({ { title: "Lido", description: t("page-dapps-dapp-description-lido"), - link: "https://lido.is/", + link: "https://lido.fi/", image: getImage(data.lido), alt: t("page-dapps-lido-logo-alt"), }, @@ -1642,11 +1656,7 @@ const DappsPage = ({

    تخمین مصرف انرژی اثبات کار برای هر تراکنش در زمان نوشتن این متن بر مبنای داده‌های مه 2021 برابر با 175.54 کیلووات در ساعت است

    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.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

    X(f!rEaHa_%5 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

  • EIP-145optimises cost of certain on-chain actions.