From f20515285c6e0288f01a628791dd2793ba6a7565 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 1 May 2024 16:30:36 +0000 Subject: [PATCH 1/6] chore: import translations for ja --- public/content/translations/ja/about/index.md | 64 +- .../content/translations/ja/bridges/index.md | 34 +- .../ja/community/get-involved/index.md | 13 +- .../translations/ja/community/grants/index.md | 3 +- .../ja/community/language-resources/index.md | 4 +- .../ja/community/support/index.md | 58 +- .../adding-desci-projects/index.md | 44 + .../adding-developer-tools/index.md | 6 +- .../ja/contributing/adding-exchanges/index.md | 12 +- .../adding-glossary-terms/index.md | 2 +- .../ja/contributing/adding-layer-2s/index.md | 50 +- .../ja/contributing/adding-products/index.md | 62 +- .../adding-staking-products/index.md | 53 +- .../ja/contributing/adding-wallets/index.md | 75 ++ .../contributing/content-resources/index.md | 4 +- .../contributing/design-principles/index.md | 18 +- .../design/adding-design-resources/index.md | 69 ++ .../ja/contributing/design/index.md | 77 ++ .../translations/ja/contributing/index.md | 63 +- .../ja/contributing/quizzes/index.md | 62 ++ .../translation-program/faq/index.md | 34 +- .../how-to-translate/index.md | 89 ++ .../contributing/translation-program/index.md | 40 +- .../mission-and-vision/index.md | 25 + .../translation-program/resources/index.md | 45 + .../translators-guide/index.md | 64 +- .../docs/accounts/accounts.svg.xlsx | Bin 0 -> 4855 bytes .../ja/developers/docs/apis/backend/index.md | 17 +- .../ja/developers/docs/apis/json-rpc/index.md | 36 +- .../ja/developers/docs/blocks/index.md | 24 +- .../developers/docs/blocks/tx-block.svg.xlsx | Bin 0 -> 4789 bytes .../ja/developers/docs/bridges/index.md | 4 +- .../pos/attack-and-defense/index.md | 4 +- .../reorg-schematic.svg.xlsx | Bin 0 -> 5003 bytes .../attestation_schematic.svg.xlsx | Bin 0 -> 5032 bytes .../pos/attestations/index.md | 4 +- .../consensus-mechanisms/pos/faqs/index.md | 2 +- .../docs/consensus-mechanisms/pos/index.md | 2 +- .../pos/keys/multiple-keys.svg.xlsx | Bin 0 -> 4966 bytes .../pos/keys/validator-key-schematic.svg.xlsx | Bin 0 -> 5102 bytes .../pos/rewards-and-penalties/index.md | 2 +- .../consensus-mechanisms/pow/mining/index.md | 4 +- .../dagger-hashimoto/index.md | 2 +- .../mining/mining-algorithms/ethash/index.md | 2 +- .../pow/mining/mining-algorithms/index.md | 4 +- .../ja/developers/docs/dapps/index.md | 2 +- .../block-explorers/index.md | 12 +- .../docs/data-and-analytics/index.md | 10 +- .../docs/data-availability/index.md | 2 +- .../patricia-merkle-trie/index.md | 22 +- .../ja/developers/docs/design-and-ux/index.md | 5 +- .../docs/development-networks/index.md | 4 +- .../ja/developers/docs/evm/evm.svg.xlsx | Bin 0 -> 4992 bytes .../ja/developers/docs/evm/gas.svg.xlsx | Bin 0 -> 4919 bytes .../ja/developers/docs/evm/index.md | 1 + .../ja/developers/docs/evm/opcodes/index.md | 10 +- .../ja/developers/docs/frameworks/index.md | 10 +- .../ja/developers/docs/gas/index.md | 18 +- .../developers/docs/intro-to-ether/index.md | 2 +- .../ja/developers/docs/mev/index.md | 6 +- .../cons_client_net_layer.svg.xlsx | Bin 0 -> 4879 bytes .../exe_client_net_layer.svg.xlsx | Bin 0 -> 4893 bytes .../developers/docs/networking-layer/index.md | 6 +- .../ja/developers/docs/networks/index.md | 3 +- .../nodes-and-clients/archive-nodes/index.md | 2 +- .../client-diversity/index.md | 6 +- .../nodes-and-clients/et1eth2client.svg.xlsx | Bin 0 -> 4866 bytes .../docs/nodes-and-clients/index.md | 16 +- .../nodes-and-clients/light-clients/index.md | 2 +- ...node-architecture-text-background.svg.xlsx | Bin 0 -> 5020 bytes .../nodes-as-a-service/index.md | 21 +- .../docs/nodes-and-clients/nodes.svg.xlsx | Bin 0 -> 4938 bytes .../run-a-node/diagram.svg.xlsx | Bin 0 -> 4886 bytes .../nodes-and-clients/run-a-node/index.md | 6 +- .../docs/programming-languages/dart/index.md | 2 + .../programming-languages/golang/index.md | 1 + .../programming-languages/python/index.md | 10 +- .../docs/programming-languages/rust/index.md | 2 +- .../docs/scaling/optimistic-rollups/index.md | 8 +- .../developers/docs/scaling/plasma/index.md | 4 +- .../docs/scaling/sidechains/index.md | 8 +- .../docs/scaling/state-channels/index.md | 8 +- .../developers/docs/scaling/validium/index.md | 9 +- .../docs/scaling/zk-rollups/index.md | 24 +- .../docs/smart-contracts/anatomy/index.md | 8 +- .../docs/smart-contracts/compiling/index.md | 4 + .../smart-contracts/composability/index.md | 1 - .../formal-verification/index.md | 2 +- .../developers/docs/smart-contracts/index.md | 5 +- .../docs/smart-contracts/security/index.md | 24 +- .../docs/smart-contracts/testing/index.md | 10 +- .../docs/smart-contracts/upgrading/index.md | 2 +- .../source-code-verification.svg.xlsx | Bin 0 -> 4846 bytes .../ja/developers/docs/standards/index.md | 8 +- .../docs/standards/tokens/erc-1155/index.md | 2 +- .../docs/standards/tokens/erc-20/index.md | 5 +- .../docs/standards/tokens/erc-4626/index.md | 14 +- .../docs/standards/tokens/erc-721/index.md | 6 +- .../docs/standards/tokens/erc-777/index.md | 2 +- .../developers/docs/standards/tokens/index.md | 2 +- .../ja/developers/docs/storage/index.md | 9 +- .../docs/transactions/gas-tx.svg.xlsx | Bin 0 -> 4909 bytes .../ja/developers/docs/transactions/index.md | 6 +- .../developers/docs/transactions/tx.svg.xlsx | Bin 0 -> 4749 bytes .../index.md | 10 +- .../tutorials/all-you-can-cache/index.md | 960 ++++++++++++++++++ .../index.md | 8 +- .../create-and-deploy-a-defi-app/index.md | 102 +- .../index.md | 18 +- .../index.md | 2 +- .../index.md | 2 +- .../erc-721-vyper-annotated-code/index.md | 2 +- .../tutorials/erc20-annotated-code/index.md | 4 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../hello-world-smart-contract/index.md | 2 +- .../index.md | 18 +- .../tutorials/how-to-mint-an-nft/index.md | 4 +- .../index.md | 2 +- .../index.md | 154 +-- .../index.md | 108 +- .../index.md | 72 +- .../how-to-use-tellor-as-your-oracle/index.md | 28 +- .../how-to-write-and-deploy-an-nft/index.md | 2 +- .../index.md | 63 +- .../logging-events-smart-contracts/index.md | 2 +- .../index.md | 51 +- .../index.md | 253 +++-- .../reverse-engineering-a-contract/index.md | 2 +- .../tutorials/run-node-raspberry-pi/index.md | 13 +- .../secure-development-workflow/index.md | 2 +- .../index.md | 24 +- .../developers/tutorials/short-abi/index.md | 121 ++- .../index.md | 24 +- .../index.md | 64 +- .../index.md | 43 +- .../token-integration-checklist/index.md | 42 +- .../index.md | 2 +- .../uniswap-v2-annotated-code/index.md | 4 +- .../tutorials/using-websockets/index.md | 56 +- .../index.md | 64 +- .../index.md | 26 +- .../tutorials/yellow-paper-evm/index.md | 8 +- ...energy_consumption_pre_post_merge.svg.xlsx | Bin 0 -> 4826 bytes .../translations/ja/enterprise/index.md | 133 +-- .../ja/enterprise/private-ethereum/index.md | 12 +- .../translations/ja/foundation/index.md | 10 +- .../translations/ja/governance/index.md | 3 +- .../index.md | 12 +- .../how-to-revoke-token-access/index.md | 24 +- .../ja/guides/how-to-swap-tokens/index.md | 8 +- .../ja/guides/how-to-use-a-bridge/index.md | 4 +- .../ja/guides/how-to-use-a-wallet/index.md | 4 +- .../ja/roadmap/account-abstraction/index.md | 8 +- .../ja/roadmap/beacon-chain/index.md | 2 +- .../ja/roadmap/danksharding/index.md | 26 +- .../ja/roadmap/future-proofing/index.md | 10 +- .../content/translations/ja/roadmap/index.md | 28 +- .../translations/ja/roadmap/merge/index.md | 2 +- .../ja/roadmap/merge/issuance/index.md | 2 +- .../translations/ja/roadmap/pbs/index.md | 2 +- .../translations/ja/roadmap/scaling/index.md | 18 +- .../roadmap/secret-leader-election/index.md | 2 +- .../translations/ja/roadmap/security/index.md | 14 +- .../ja/roadmap/single-slot-finality/index.md | 2 +- .../ja/roadmap/user-experience/index.md | 10 +- .../content/translations/ja/security/index.md | 210 ++-- public/content/translations/ja/web3/index.md | 14 +- .../translations/ja/web3/web1.svg.xlsx | Bin 0 -> 4690 bytes .../translations/ja/web3/web2.svg.xlsx | Bin 0 -> 4743 bytes .../translations/ja/web3/web3.svg.xlsx | Bin 0 -> 4734 bytes .../translations/ja/whitepaper/index.md | 6 +- .../ja/zero-knowledge-proofs/index.md | 158 +-- src/intl/ja/learn-quizzes.json | 9 +- src/intl/ja/page-about.json | 12 +- src/intl/ja/page-assets.json | 10 +- src/intl/ja/page-bug-bounty.json | 66 +- ...-translation-program-acknowledgements.json | 42 + ...ting-translation-program-contributors.json | 10 + src/intl/ja/page-learn.json | 18 +- src/intl/ja/page-staking.json | 30 +- src/intl/ja/page-upgrades.json | 1 + 183 files changed, 3205 insertions(+), 1614 deletions(-) create mode 100644 public/content/translations/ja/contributing/adding-desci-projects/index.md create mode 100644 public/content/translations/ja/contributing/adding-wallets/index.md create mode 100644 public/content/translations/ja/contributing/design/adding-design-resources/index.md create mode 100644 public/content/translations/ja/contributing/design/index.md create mode 100644 public/content/translations/ja/contributing/quizzes/index.md create mode 100644 public/content/translations/ja/contributing/translation-program/how-to-translate/index.md create mode 100644 public/content/translations/ja/contributing/translation-program/mission-and-vision/index.md create mode 100644 public/content/translations/ja/contributing/translation-program/resources/index.md create mode 100644 public/content/translations/ja/developers/docs/accounts/accounts.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/blocks/tx-block.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attack-and-defense/reorg-schematic.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attestations/attestation_schematic.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/consensus-mechanisms/pos/keys/multiple-keys.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/consensus-mechanisms/pos/keys/validator-key-schematic.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/evm/evm.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/evm/gas.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/networking-layer/cons_client_net_layer.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/networking-layer/exe_client_net_layer.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/nodes-and-clients/et1eth2client.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/nodes-and-clients/node-architecture/node-architecture-text-background.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/nodes-and-clients/nodes.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/nodes-and-clients/run-a-node/diagram.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/smart-contracts/verifying/source-code-verification.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/transactions/gas-tx.svg.xlsx create mode 100644 public/content/translations/ja/developers/docs/transactions/tx.svg.xlsx create mode 100644 public/content/translations/ja/developers/tutorials/all-you-can-cache/index.md create mode 100644 public/content/translations/ja/energy-consumption/energy_consumption_pre_post_merge.svg.xlsx create mode 100644 public/content/translations/ja/web3/web1.svg.xlsx create mode 100644 public/content/translations/ja/web3/web2.svg.xlsx create mode 100644 public/content/translations/ja/web3/web3.svg.xlsx create mode 100644 src/intl/ja/page-contributing-translation-program-acknowledgements.json create mode 100644 src/intl/ja/page-contributing-translation-program-contributors.json diff --git a/public/content/translations/ja/about/index.md b/public/content/translations/ja/about/index.md index d215b22d533..cc19161716e 100644 --- a/public/content/translations/ja/about/index.md +++ b/public/content/translations/ja/about/index.md @@ -1,12 +1,12 @@ --- -title: イーサリアムについて +title: ethereum.orgについて description: チーム、コミュニティ、ethereum.orgのミッションについて lang: ja --- -# ethereum.org について {#about-ethereumorg} +# ethereum.orgについて {#about-ethereumorg} -ethereum.org は、イーサリアムコミュニティのために公開されたオープンソースのリソースで、誰でも参加できます。 私たちは、世界中の何千ものコミュニティメンバーからの貢献によって、サイトの維持と開発を行うことに専念する少数精鋭のチームで構成されています。 +ethereum.orgは、イーサリアムコミュニティのために公開されたオープンソースのリソースで、誰でも参加できます。 私たちは、世界中の何千ものコミュニティメンバーからの貢献によって、サイトの維持と開発を行うことに専念する少数精鋭のチームで構成されています。 ## 名称に関するメモ {#a-note-on-names} @@ -14,52 +14,52 @@ ethereum.org は、イーサリアムコミュニティのために公開され ### イーサリアム {#ethereum} -イーサリアムは、パブリックのネットワークであり、ブロックチェーンであり、オープンソースのプロトコルです。何万人ものデベロッパー、ノードオペレーター、ETH 保有者、ユーザーからなるグローバルなコミュニティによって運用、管理、管理、所有されています。 +イーサリアムは、パブリックのネットワークであり、ブロックチェーンであり、オープンソースのプロトコルです。何万人ものデベロッパー、ノードオペレーター、ETH保有者、ユーザーからなるグローバルなコミュニティによって運用、管理、管理、所有されています。 [イーサリアムについての詳細](/what-is-ethereum/) [イーサリアムのガバナンスについての詳細](/governance/) -### イーサ(ETH)画像 {#ether-or-eth} +### Ether (ETH) {#ether-or-eth} -イーサ(ティッカーシンボル「ETH」としても知られています)は、イーサリアムで取引されるネイティブ通貨です。 ETH は、イーサリアムのネットワーク使用料を(取引手数料の形で)支払うために必要となり、 ETH は、ステークキングでネットワークを保護するためにも使用されます。 イーサリアムの価格について話している時は、ETH を資産として言及しています。 +イーサ(ティッカーシンボル「ETH」としても知られています)は、イーサリアムで取引されるネイティブ通貨です。 ETHは、イーサリアムのネットワーク使用料を(取引手数料の形で)支払うために必要となり、 ETHは、ステークキングでネットワークを保護するためにも使用されます。 イーサリアムの価格について話している時は、ETHを資産として言及しています。 -[ETH の詳細](/eth/) +[ETHの詳細](/eth/) -[ETH のステーキングの詳細](/staking/) +[ETHのステーキングの詳細](/staking/) ### イーサリアム・ファウンデーション {#ethereum-foundation} -当初 ETH のクラウドセールから資金を調達して設立された非営利組織で、イーサリアムのネットワークとエコシステムのサポートに専念しています。 +当初ETHのクラウドセールから資金を調達して設立された非営利組織で、イーサリアムのネットワークとエコシステムのサポートに専念しています。 [イーサリアム・ファウンデーションについての詳細](/foundation/) ### ethereum.org {#ethereum-org} -イーサリアムコミュニティに向けて、パブリックなオープンソースのウェブサイト、教育リソースを提供しています。 Ethereum.org は、世界中の何千人ものコミュニティメンバーからの貢献を受けて、Ethereum 財団から資金を提供された少数精鋭のチームが主導しています。 +イーサリアムコミュニティに向けて、パブリックなオープンソースのウェブサイト、教育リソースを提供しています。 Ethereum.orgは、世界中の何千人ものコミュニティメンバーからの貢献を受けて、Ethereum財団から資金を提供された少数精鋭のチームが主導しています。 -このページでは、ethereum.org に関する詳細情報をご紹介します。 +このページでは、ethereum.orgに関する詳細情報をご紹介します。 -## ethereum.org のミッション {#our-mission} +## ethereum.orgのミッション {#our-mission} -**ethereum.org のミッションは、増大するイーサリアムコミュニティのための最高のポータルになることです。** +**ethereum.orgのミッションは、増大するイーサリアムコミュニティのための最高のポータルになることです。** 私たちは、イーサリアムに関連するすべてのトピックについて、理解しやすい教育リソースを構築するよう努めており、新しいユーザーがイーサリアムとその主要概念を熟知できるようサポートすることを目的としています。 具体的なミッションは以下の通りです。 - テクノロジー初心者向けにイーサリアムについて説明する -- 新しいユーザーが ETH とイーサリアムを始める際のサポートを行う +- 新しいユーザーがETHとイーサリアムを始める際のサポートを行う - デベロッパーが新しいプロジェクトを始める際のサポートを行う - イーサリアムに関するアップデート状況を届ける - コミュニティによって作成されたリソースを紹介する - イーサリアムの学習コンテンツをより多くの言語で提供する -これらのミッションを達成するために、ethereum.org に関する 2 つの主要な目標に焦点を当てています。 +これらのミッションを達成するために、ethereum.orgに関する2つの主要な目標に焦点を当てています。 -### 1. ethereum.org 訪問者のユーザーエクスペリエンスの改善 {#visitors} +### 1. ethereum.org訪問者のユーザーエクスペリエンスの改善 {#visitors} - コンテンツを拡大、改善し、最新の状態を維持します。 - ローカライズとウェブ開発のベストプラクティスを用いてユーザビリティとアクセシビリティを向上します。 -- アンケート、クイズ、Web3 の統合などの機能を介して、ユーザーのエンゲージメントを高めます。 +- アンケート、クイズ、Web3の統合などの機能を介して、ユーザーのエンゲージメントを高めます。 - ウェブサイトを軽量にして、パフォーマンスを保ちます。 ### 2. コミュニティ貢献者の増加、強化、権限付与 {#community} @@ -74,27 +74,27 @@ ethereum.org は、イーサリアムコミュニティのために公開され ミッションを達成するためにいくつかの基本原則があります。 -### 1. ethereum.org は、イーサリアムへの入口となる場所です 🌏 {#core-principles-1} +### 1. ethereum.orgは、イーサリアムへの入口となる場所です🌏 {#core-principles-1} ユーザーの皆さんには、興味関心を高め、疑問をなくしていただきたいと考えています。 そのためには、情報・"魔法の瞬間"・素晴らしいコミュニティリソースへのリンクという三つの組み合わせが重要になります。 このコンテンツの目的は、既存の広大な資料の代用として機能することではなく、「入門研修用ポータルサイト」となることです。 コミュニティが作り上げた情報源を支援・統合し、見やすく、見つけやすくしたいと考えています。 [イーサリアムのコミュニティ](/community/)は、その中心となる場所です。ここでは単にコミュニティにサービス提供するだけでなく、協働し、フィードバックを取り入れていきます。 このウェブサイトは現在のコミュニティのためだけではありません。発展した未来のコミュニティのためのものでもあります。 多言語・多地域・多文化の人々が集まったグローバルなコミュニティであることを決して忘れてはなりません。 -### 2. ethereum.org は常に進化しています 🛠 {#core-principles-2} +### 2. ethereum.orgは常に進化しています🛠 {#core-principles-2} -イーサリアムとコミュニティは常に進化しており、ethereum.org も同様です。 このサイトがシンプルデザインのシステムで、モジュラー構造を取り入れているのもそのためです。 サイトの活用方法やコミュニティがサイトに望むことについて理解を深めながら、それに合わせて継続的に変更を加えていきます。 また、コントリビューターのコミュニティを有するオープンソースであるため、誰でも変更を提案したり、支援したりすることができます。 [貢献についての詳細](/contributing/)。 +イーサリアムとコミュニティは常に進化しており、ethereum.orgも同様です。 このサイトがシンプルデザインのシステムで、モジュラー構造を取り入れているのもそのためです。 サイトの活用方法やコミュニティがサイトに望むことについて理解を深めながら、それに合わせて継続的に変更を加えていきます。 また、コントリビューターのコミュニティを有するオープンソースであるため、誰でも変更を提案したり、支援したりすることができます。 [貢献についての詳細](/contributing/)。 -### 3. ethereum.org は製品を紹介するだけの典型的なウェブサイトではありません 🦄 {#core-principles-3} +### 3. ethereum.orgは製品を紹介するだけの典型的なウェブサイトではありません🦄 {#core-principles-3} -イーサリアムとは、コミュニティ、テクノロジー、ひとまとまりのアイデア・思想などが盛り込まれた大きな概念です。 つまり、このウェブサイトは、「特別なツールが欲しいデベロッパー」から、「ETH を少し買いたいだけだが、ウォレットが何なのかも知らない新人」まで多様なユーザーの要望に応える必要があるということです。「ブロックチェーンプラットフォームに最適なウェブサイトは?」とう質問に答えはありませんが、私たちはパイオニアです。 こういったものを作るには試行錯誤が必要です。 +イーサリアムとは、コミュニティ、テクノロジー、ひとまとまりのアイデア・思想などが盛り込まれた大きな概念です。 つまり、このウェブサイトは、「具体的なツールが欲しいデベロッパー」から、「ETHを少し買いたいだけだが、ウォレットが何なのかも知らない初心者」まで多様なユーザーの要望に応える必要があるということです。 「ブロックチェーン・プラットフォームについて、一番いいウェブサイトはどこ?」という質問は今も投げかけられ続けていますが、私たちはその先駆者です。 こういったものを作るには試行錯誤が必要です。 ## 製品ロードマップ {#roadmap} -ethereum.org コアチームは、私たちの取り組みへのアクセスを簡素化し、より多くのコミュニティとのコラボレーションを促進するために、四半期ごとのロードマップ目標の概要を公開しています。 +ethereum.orgコアチームは、私たちの取り組みへのアクセスを簡素化し、より多くのコミュニティとのコラボレーションを促進するために、四半期ごとのロードマップ目標の概要を公開しています。 -[2023 Q1 製品のロードマップについて](https://github.com/ethereum/ethereum-org-website/issues/9090) +[2024 Q1製品のロードマップについて](https://github.com/ethereum/ethereum-org-website/issues/12005) -**いかがでしょうか?**ロードマップに関するフィードバックをお待ちしております。私たちが取り組むべきことについてご意見があれば、お知らせください。 コミュニティからのアイデアや PR をお待ちしています。 +**いかがでしょうか?**ロードマップに関するフィードバックをお待ちしております。私たちが取り組むべきことについてご意見があれば、お知らせください。 コミュニティからのアイデアやPRをお待ちしています。 -**参加を希望されますか?** [貢献の詳細](/contributing/)をご参照ください。[Twitter](https://twitter.com/ethdotorg)で連絡いただくか、[Discord サーバー](https://discord.gg/ethereum-org)のコミュニティディスカッションに参加してください。 +**参加を希望されますか?** [貢献の詳細](/contributing/)をご参照ください。[Twitter](https://twitter.com /ethdotorg)で連絡いただくか、[Discordサーバー](https://discord.gg/ethereum-org)のコミュニティディスカッションに参加してください。 ## デザイン原則 {#design-principles} @@ -102,9 +102,9 @@ ethereum.org コアチームは、私たちの取り組みへのアクセスを ## デザインシステム {#design-system} -私たちは、機能のリリースを迅速化するために[デザインシステム](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System?node-id=0%3A1&t=QBt9RkhpPqzE3Aa6-1)を構築し、コミュニティメンバーが ethereum.org のオープンデザインに参加できるようにしました。 +私たちは、機能のリリースを迅速化するために[デザインシステム](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System?node-id=0%3A1&t=QBt9RkhpPqzE3Aa6-1)を構築し、コミュニティメンバーがethereum.orgのオープンデザインに参加できるようにしました。 -参加を希望されますか?希望される方は、[Figma](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System)と[GitHub](https://github.com/ethereum/ethereum-org-website/issues/6284)のイシューをフォローし、[#design Discord チャネル](https://discord.gg/ethereum-org)の会話に参加してください。 +参加を希望されますか?[Figma](https://www.figma.com/file/NrNxGjBL0Yl1PrNrOT8G2B/ethereum.org-Design-System)をフォローするか、[GitHubイシュー](https://github.com/ethereum/ethereum-org-website/issues/6284)に従うか、もしくは[#design Discordチャンネル](https://discord.gg/ethereum-org)の打ち合わせに加わってください。 ## スタイルガイド {#style-guide} @@ -112,12 +112,12 @@ ethereum.org コアチームは、私たちの取り組みへのアクセスを [イーサリアムのウェブサイト](/contributing/design-principles/)への貢献をご希望される場合は、最初に[原則](/contributing/style-guide/)と[スタイルガイド](/contributing/)をお読みください。 -デザインの原則、デザインシステム、スタイルガイドに関するフィードバックをお待ちしています。 ethereum.org はコミュニティによるコミュニティのためのものであることを忘れないでください。 +デザインの原則、デザインシステム、スタイルガイドに関するフィードバックをお待ちしています。 ethereum.orgはコミュニティによるコミュニティのためのものであることを忘れないでください。 ## 求人情報 {#open-jobs} -このウェブサイトはオープンソースで、誰でも作業できますが、ethereum.org や他のイーサリアム・ファウンデーションの Web プロジェクトに専念するチームがあります。 +このウェブサイトはオープンソースで、誰でも作業できますが、ethereum.orgや他のイーサリアム・ファウンデーションのWebプロジェクトに専念するチームがあります。 -求人情報はすべてこちらに掲載されます。 ご自身に向いている役割が見つからない場合は、[イーサリアムの Discord サーバー](https://discord.gg/ethereum-org)にアクセスして、協働したい内容について教えてください。 +求人情報はすべてこちらに掲載されます。 ご自身に向いている役割が見つからない場合は、[Discordサーバー](https://discord.gg/ethereum-org)にアクセスして、協働したい内容について教えてください。 -ethereum.org チーム以外にも目を向けてみませんか? [他のイーサリアム関連の求人情報もぜひご覧ください。](/community/get-involved/#ethereum-jobs/). +ethereum.orgチーム以外にも目を向けてみませんか? [他のイーサリアム関連の求人情報もぜひご覧ください。](/community/get-involved/#ethereum-jobs/). diff --git a/public/content/translations/ja/bridges/index.md b/public/content/translations/ja/bridges/index.md index 638dcfc48b5..16d6af424b9 100644 --- a/public/content/translations/ja/bridges/index.md +++ b/public/content/translations/ja/bridges/index.md @@ -6,32 +6,32 @@ lang: ja # ブロックチェーンブリッジ {#prerequisites} -_Web3は、L1ブロックチェーンとL2スケーリングソリューションのエコシステムに発展し、それぞれ独自の機能とトレードオフがあります。 ブロックチェーンのプロトコルが増えるにつれ、[チェーン間で資産を移動させる需要](https://dune.xyz/eliasimos/Bridge-Away-(from-Ethereum))も増えています。 この需要を満たすのが、ブリッジです。_ +_Web3は、L1ブロックチェーンとL2スケーリングソリューションのエコシステムに発展し、それぞれ独自の機能とトレードオフがあります。 ブロックチェーンのプロトコルが増えるにつれ、チェーン間で資産を移動させる需要も増えています。 この需要を満たすのが、ブリッジです。_ ## ブリッジとは {#what-are-bridges} -ブロックチェーンの世界でのブリッジとは、その名のとおりブリッジ(橋)と同じような機能があります。 橋が2つの場所をつなぐように、ブロックチェーンのブリッジは2つのブロックチェーンエコシステムをつなぎ、 ブロックチェーン間の情報・資産をやり取りできます。 +ブロックチェーンの世界でのブリッジとは、その名のとおりブリッジ(橋)と同じような機能があります。 橋が2つの場所をつなぐように、ブロックチェーンのブリッジは2つのブロックチェーンエコシステムをつなぎ、 **ブロックチェーン間の情報・資産をやり取りできます**。 例を考えてみましょう。 アメリカからヨーロッパに旅行を計画しているとします。 米ドルを持ってますが、支払いにはユーロが必要です。 手数料を払って両替所を利用し、米ドルをユーロに両替することができます。 -しかし、異なるブロックチェーンを利用するために、同様の両替を行う場合は、どうすればいいでしょうか? イーサリアムメインネット上のETHから、[Arbitrum](https://arbitrum.io/)のETHに交換を希望しているとします。 米ドルからユーロへの両替のように、イーサリアムからArbitrumへETHを移動させるメカニズムが必要です。 ブリッジはこのようなトランザクションを可能にします。 この場合、[Arbitrumのネイティブブリッジ](https://bridge.arbitrum.io/)があり、メインネットからArbitrumにETHを移動できます。 +しかし、異なる[ブロックチェーン](/glossary/#blockchain)を利用するために、同様の両替を行う場合は、どうすればいいでしょうか? イーサリアムメインネット上のETHから、[Arbitrum](https://arbitrum.io/)の[ETH](/glossary/#ether)への両替を希望しているとします。 米ドルからユーロへの両替のように、イーサリアムからArbitrumへETHを移動させるメカニズムが必要です。 ブリッジはこのようなトランザクションを可能にします。 この場合、[Arbitrumのネイティブブリッジ](https://bridge.arbitrum.io/)があり、メインネットからArbitrumにETHを移動できます。 ## ブリッジが必要な理由 {#why-do-we-need-bridges} -すべてのブロックチェーンには制限があります。 イーサリアムが需要に追いつくためにスケールアップするには、ロールアップが必要です。 あるいは、SolanaやAvalancheのようなL1チェーンでは、分散化を代償にして、より高いスループットを実現するために異なる設計をしています。 +すべてのブロックチェーンには制限があります。 イーサリアムが需要に追いつくためにスケールアップするには、[ロールアップ](/glossary/#rollups)が必要です。 あるいは、SolanaやAvalancheのようなL1チェーンでは、分散化を代償にして、より高いスループットを実現するために異なる設計をしています。 -しかし、すべてのブロックチェーンは、独立した環境で開発され、異なるルールと合意メカニズムを使用します。 つまり、ネイティブではブロックチェーン間の通信ができず、トークンもブロックチェーン間を自由に移動できません。 +しかし、すべてのブロックチェーンは、独立した環境で開発され、異なるルールと[合意](/glossary/#consensus)メカニズムを使用します。 つまり、ネイティブではブロックチェーン間の通信ができず、トークンもブロックチェーン間を自由に移動できません。 ブリッジはブロックチェーンを接続し、ブロックチェーン間の情報、トークンを移動できます。 -ブリッジは下記を実現します。 +**ブリッジが可能にすること**: -- チェーンの垣根を超えた資産、情報の移動. -- 分散型アプリ(Dapp)を使用して、複数のブロックチェーンの強みを活用し、その結果、機能の向上(現在はプロトコルにイノベーションに利用できる設計スペースが増えたため)。 +- チェーンの垣根を超えた資産、情報の移動 +- [分散型アプリ(Dapp)](/glossary/#dapp)が複数のブロックチェーンの強みを活用し、機能を向上(プロトコルに現在イノベーションに利用可能な設計余地が増えたため) - 新しいプラットフォームにアクセスし、異なるチェーンの利点を活用 - 異なるブロックチェーンエコシステムからのデベロッパー同士が協力し、新しいプラットフォームの開発 @@ -57,7 +57,7 @@ USDTを貸し出すのにイーサリアムムメインネットのAaveを使用 ### ネイティブ仮想通貨の所有 {#own-native} -例えば、ネイティブビットコイン(BTC)の保有を希望しており、資金はイーサリアムメインネットにあるとします。 イーサリアムでBTCを入手するために、ラップドビットコイン(WBTC)を購入できます。 しかし、WBTCはイーサリアムネットワークのERC-20トークンであり、ビットコインのイーサリアム版のようなあもので、ビットコインブロックチェーンの資産ではありません。 ネイティブのBTCを保有するには、イーサリアムからビットコインに資産をブリッジする必要があります。 WBTCをブリッジすれば、ネイティブのBTCに交換できます。 あるいは、BTCを保有していて、イーサリアムの分散型金融(DeFi)プロトコルで使用したいとします。 これには、逆にBTCからWBTCへのブリッジが必要となり、WBTCはイーサリアムの資産として使用することができます。 +例えば、ネイティブビットコイン(BTC)の保有を希望しており、資金はイーサリアムメインネットにあるとします。 イーサリアムでBTCを入手するために、ラップドビットコイン(WBTC)を購入できます。 しかし、WBTCはイーサリアムネットワークの[ERC-20](/glossary/#erc-20)トークンであり、ビットコインのイーサリアム版のようなもので、ビットコインブロックチェーンの資産ではありません。 ネイティブのBTCを保有するには、イーサリアムからビットコインに資産をブリッジする必要があります。 WBTCをブリッジすれば、ネイティブのBTCに交換できます。 あるいは、BTCを保有していて、イーサリアムの[分散型金融(DeFi)](/glossary/#defi)プロトコルで使用したいとします。 これには、逆にBTCからWBTCへのブリッジが必要となり、WBTCはイーサリアムの資産として使用することができます。 中央集権型取引所を使用すると、これらのすべてを行えます。 しかし、取引所に資産がある場合を除いては、複数の手順が必要になるため、ブリッジを使用する方が手間が省けます。 @@ -69,11 +69,11 @@ USDTを貸し出すのにイーサリアムムメインネットのAaveを使用 ブリッジには多くの種類の設計や複雑さがあります。 一般的に、ブリッジは、トラストとトラストレスの2つのカテゴリに分類されます。 -| トラストブリッジ | トレストレスブリッジ | -| ------------------------------------------------------------ | -------------------------------------------------------- | -| トラストブリッジでは、運用を中央エンティティやシステムに依存します。 | トレストレスブリッジは、スマートコントラクトやアルゴリズムを用いて運用します。 | -| 資産の保管やセキュリティをトラストブリッジに信頼しなければなりません。 ユーザーは主にブリッジ運営の評判に頼っています。 | ブリッジのセキュリティは基盤となるブロックチェーンのセキュリティと同じで、信頼する必要がなく、トラストレスです。 | -| 自分自身の仮想通貨の管理を諦める必要があります。 | スマートコントラクトを経由して、トラストレスブリッジにより、自分自身の資金管理ができます。 | +| トラストブリッジ | トレストレスブリッジ | +| ------------------------------------------------------------ | -------------------------------------------------------------------------- | +| トラストブリッジでは、運用を中央エンティティやシステムに依存します。 | トレストレスブリッジは、スマートコントラクトやアルゴリズムを用いて運用します。 | +| 資産の保管やセキュリティをトラストブリッジに信頼しなければなりません。 ユーザーは主にブリッジ運営の評判に頼っています。 | ブリッジのセキュリティは基盤となるブロックチェーンのセキュリティと同じで、信頼する必要がなく、トラストレスです。 | +| 自分自身の仮想通貨の管理を諦める必要があります。 | [スマートコントラクト](/glossary/#smart-contract)を経由して、トラストレスブリッジにより、自分自身の資金管理ができます。 | 一言で言えば、トラストブリッジでは、サードパーティへの「信頼の前提」があると言え、一方のトラストレスブリッジでは、この信頼を最小限にし、基盤となるドメインを超える範囲で、新たに信頼を置く必要がありません。 これらの用語を下記に説明します。 @@ -126,9 +126,3 @@ USDTを貸し出すのにイーサリアムムメインネットのAaveを使用 - [EIP-5164: クロスチェーンの実行](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658) _2022年6月18日 - Brendan Asselstine_ - [L2ブリッジ・リスク・フレームワーク](https://gov.l2beat.com/t/l2bridge-risk-framework/31) _2022年7月5日 - Bartek Kiepuszewski_ - [「未来はマルチチェーンになるが、クロスチェーンにはならない理由」](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) _2022年1月8日 - Vitalik Buterin_ -- [ブロックチェーンブリッジとは何か、またこれらをどのように分類できるか](https://blog.li.finance/what-are-blockchain-bridges-and-how-can-we-classify-them-560dc6ec05fa) _2021年2月18日 - Arjun Chand_ -- [クロスチェーンブリッジとは](https://www.alchemy.com/overviews/cross-chain-bridges) _2022年5月10日 - Alchemy_ -- [ブロックチェーン ブリッジ: 暗号ネットワークのネットワークの構築](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) _2021年9月8日 - Dmitriy Berenzon_ -- [暗号空間におけるブリッジ](https://medium.com/chainsafe-systems/bridges-in-crypto-space-12e158f5fd1e) _2021年8月23日 - Ben Adar Hyman_ -- [相互運用性のトリレンマ](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) _2021年10月1日 - Arjun Bhuptani_ -- [ブリッジのセキュリティ: 適切に行われるクロスチェーン通信](https://medium.com/dragonfly-research/secure-the-bridge-cross-chain-communication-done-right-part-i-993f76ffed5d) _2021年8月23日 - Celia Wan_ diff --git a/public/content/translations/ja/community/get-involved/index.md b/public/content/translations/ja/community/get-involved/index.md index 5ab72c40aff..f6f6036f258 100644 --- a/public/content/translations/ja/community/get-involved/index.md +++ b/public/content/translations/ja/community/get-involved/index.md @@ -16,7 +16,7 @@ lang: ja - [Gitcoin](https://gitcoin.co/) - 大小規模の技術問題に取り組み、暗号通貨の報酬を獲得 - [ETHGlobal](http://ethglobal.co/) - お近くのETHGlobalハッカソンへの参加 - [自分の専門分野や好きなプログラミング言語に関連するプロジェクト](/developers/docs/programming-languages/)の確認 -- [Core Dev calls](https://www.youtube.com/playlist?list=PLaM7G4Llrb7zfMXCZVEXEABT8OSnd4-7w) - 動画の視聴および参加 +- [コアデベロッパーコール](https://www.youtube.com/@EthereumProtocol)の視聴または参加 - [エコシステム・サポート・プログラムのウィッシュリスト](https://esp.ethereum.foundation/wishlist/) - イーサリアムのエコシステム・サポート・プログラムが助成金の申請を募集しているツール、ドキュメント、インフラストラクチャ分野 - [Web3Bridge](https://www.web3bridge.com/) - アフリカ全土の何百人ものデベロッパーやコミュニティメンバーを特定し、トレーニングし、サポートする、意欲的なWeb3コミュニティの取り組み - [Ethereum Cat Herders Discord](https://discord.com/invite/Nz6rtfJ8Cu)に加わりましょう。 @@ -90,7 +90,7 @@ ETHをステーキングすると、イーサリアムネットワークの保 ## プロダクトマネージャー {#product-managers} -- イーサリアムエコシステムは皆さんの才能が必要です。 多くの企業がプロダクトマネージャーの求人を行っています。 オープンソースプロジェクトへの貢献を始めたい場合は、[Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu)または[RaidGuild](https://www.raidguild.org/)にご連絡ください。 +- イーサリアムエコシステムは皆さんの才能が必要です。 多くの企業がプロダクトマネージャーの求人を行っています。 オープンソースプロジェクトへの貢献を始めたい場合は、[Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu)または[MetaCartel](https://www.metacartel.org/)にご連絡ください。 ## マーケティング {#marketing} @@ -120,14 +120,17 @@ ETHをステーキングすると、イーサリアムネットワークの保 - [DAOSquare](https://www.daosquare.io) [@DAOSquare](https://twitter.com/DAOSquare) - _非技術分野で分散型自律組織(DAO)の概念をプロモーションし、価値の創造を支援_ - [Developer DAO](https://www.developerdao.com/) [@developer_dao](https://twitter.com/developer_dao) - _インターネットは共同所有されるべきという信念を共有するデベロッパーコミュニティ_ -- [dOrg](https://dOrg.tech) [@dOrg_tech](https://twitter.com/dOrg_tech) - _分散型自律組織(DAO)として機能しているフリーランスの Web3 開発共同体_ -- [HausDAO](https://daohaus.club) [@nowdaoit](https://twitter.com/nowdaoit) - _DAOhaus のコミュニティガバナンス_ -- [LexDAO](https://lexdao.org) [@lex_DAO](https://twitter.com/lex_DAO) - _リーガル・エンジニアリング_ +- [dOrg](https://dOrg.tech) [@dOrg_tech](https://twitter.com/dOrg_tech) - _分散型自律組織(DAO)として機能しているフリーランスのWeb3開発共同体_ +- [DXdao](https://DXdao.eth.link/) [@DXdao](https://twitter.com/DXdao_) - _分散型開発、分散型アプリ(Dapp)のガバナンスとプロトコル_ +- [HausDAO](https://daohaus.club) [@nowdaoit](https://twitter.com/nowdaoit) - _DAOhausのコミュニティガバナンス_ +- [Hero DAO](https://herodao.org/) [@hero_dao](https://twitter.com/hero_dao) - _コミュニティにより所有されているスーパーヒーロー・フランチャイズ_ +- [LexDAO](https://lexdao.coop) [@lex_DAO](https://twitter.com/lex_DAO) - _リーガル・エンジニアリング_ - [Machi X](https://machix.com) [@MachiXOfficial](https://twitter.com/MachiXOfficial) - _アート・コミュニティ_ - [MetaCartel](https://metacartel.org) [@Meta_Cartel](https://twitter.com/Meta_Cartel) - _分散型自律組織(DAO)インキュベータ_ - [MetaCartel Ventures](https://metacartel.xyz) [@VENTURE_DAO](https://twitter.com/VENTURE_DAO) - _プレシード暗号プロジェクトのベンチャー_ - [MetaGame](https://metagame.wtf) [@MetaFam](https://twitter.com/MetaFam) - _実際のMMORPGゲームメカニクス_ - [MetaFactory](https://metafactory.ai) [@TheMetaFactory](https://twitter.com/TheMetaFactory) - _デジ・フィジカルのアパレルブランド_ +- [ΜΓΔ](https://metagammadelta.com/) (Meta Gamma Delta) [@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デベロッパーの共同体_ diff --git a/public/content/translations/ja/community/grants/index.md b/public/content/translations/ja/community/grants/index.md index c3734908384..4bc24c0f156 100644 --- a/public/content/translations/ja/community/grants/index.md +++ b/public/content/translations/ja/community/grants/index.md @@ -15,9 +15,9 @@ lang: ja これらのプログラムは、広範囲のプロジェクトに助成金を提供し、イーサリアムエコシステムを幅広くサポートするものです。 拡張性、コミュニティ構築、セキュリティ、プライバシーなどのソリューションが対象となり、 どれか1つのイーサリアムプラットフォームに固有の助成プログラムではありません。 不明な場合は、まずはこちらから始めてみてください。 - [EFエコシステム・サポート・プログラム](https://esp.ethereum.foundation) - _ユニバーサルツール、インフラストラクチャ、研究、公共財を対象とした、イーサリアムにプラスとなるオープンソース・プロジェクトへの資金提供_ +- [MetaCartel](https://www.metacartel.org/grants/) - _分散型アプリ(Dapp)開発、分散型自律組織(DAO)作成_ - [Moloch DAO](https://www.molochdao.com/) - _プライバシー、レイヤー2スケーリング、クライアントセキュリティなど_ - [分散型自律組織(DAO)の助成](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) - _助成プログラムを提供する組織のGoogleスプレッドシート_ -- [Crunchbase for Web3 Grants](https://www.cryptoneur.xyz/web3-grants) - _カテゴリ、ユースケース、金額などで助成金をフィルターして検索できます。 他の人が適切に助成金を見つけられるように貢献。_ - [学術助成金](https://esp.ethereum.foundation/academic-grants) - _イーサリアム関連の学術研究をサポートする助成金_ - [Blockworks Grantfarm](https://blockworks.co/grants/programs) - _Blockworksは、すべての助成金、RFP、バグ報奨金をディレクトリとしてまとめています。_ @@ -35,7 +35,6 @@ lang: ja - [Swarm Foundation助成金プログラム](https://my.ethswarm.org/grants) - _[Swarm Foundation](https://www.ethswarm.org/)エコシステム_ - [The Graph](https://thegraph.com/ecosystem/grants/) – _[The Graph](https://thegraph.com/)エコシステム_ - [ユニスワップ助成金プログラム](https://www.uniswapfoundation.org/grants) – _[ユニスワップ](https://uniswap.org/)コミュニティ_ -- [Web3助成プログラム](https://web3grants.net) - _Web3/暗号資産関連の助成プログラムの広範なリスト_ ## クオドラティック・ファンディング {#quadratic-funding} diff --git a/public/content/translations/ja/community/language-resources/index.md b/public/content/translations/ja/community/language-resources/index.md index 3baccbc6eae..0efbf5695c2 100644 --- a/public/content/translations/ja/community/language-resources/index.md +++ b/public/content/translations/ja/community/language-resources/index.md @@ -16,7 +16,9 @@ lang: ja ## ethereum.orgのリソース {#ethereum-org} -ethereum.orgは[言語ページ](/languages)に記載されている、40以上の言語に翻訳されています。 +ethereum.orgは、40言語以上のネイティブに翻訳されており、各ページのトップにある言語選択メニューで選択可能です。 + +![言語選択メニュー](./language-selector-menu.png) バイリンガルで、イーサリアムをより多くの人に知ってもらいたいと思われる方は、ぜひ[ethereum.org翻訳プログラム](/contributing/translation-program/#translation-program)に参加し、ウェブサイトの翻訳にご協力ください。 diff --git a/public/content/translations/ja/community/support/index.md b/public/content/translations/ja/community/support/index.md index d8fc477a5e0..e1530925a8a 100644 --- a/public/content/translations/ja/community/support/index.md +++ b/public/content/translations/ja/community/support/index.md @@ -22,17 +22,33 @@ lang: ja 公式サポートはありませんが、イーサリアムエコシステム全体で多くのグループ、コミュニティ、およびプロジェクトからサポートを受けることができます。このページに有用な情報やリソースを記載していますので、ご確認ください。 ご質問やご不明点がある場合は、 [ethereum.org Discord](/discord/)に参加すると、サポートできることがあると思います。 -## ウォレットサポート {#wallet-support} +## よくある質問 {#faq} + +### 間違ったウォレットにETHを誤送信してしまいましたが、どうすれば良いですか? {#wrong-wallet} + +イーサリアムで送信されたトランザクションはもとに戻すことはできません。 間違ったウォレットにETHを送信してしまった場合、残念ながら、これらの資金を回収する方法はありません。 イーサリアムは、中央組織、団体、個人により所有されていないため、誰もトランザクションを取り消すことができません。 そのため、必ず送信前に細心の注意を払って、ダブルチェックを行ってください。 + +### イーサリアムのプレゼントはどのように請求すれば良いですか? {#giveaway-scam} + +イーサリアムをプレゼントするというものは、ETHを盗もうと企てる詐欺です。 うま過ぎる話しには騙されないでください。プレゼントを受け取ろうと、相手先のアドレスにETHを送金してしまった場合、プレゼントはもらえず、自分の資金を回収することもできません。 + +[詐欺防止に関する詳細](/security/#common-scams) + +### トランザクションが処理されず、止まってしまっていますがどうすれば良いですか? {#stuck-transaction} + +イーサリアムのトランザクションは、必要とされるよりも低いトランザクションフィーを提示した場合、ネットワークの需要により、トランザクションが保留になってしまうことがあります。 多くのウォレットは、トランザクションが処理されるよう、トランザクションフィーの金額を上げて、同一トランザクションを再送信するオプションがあります。 もしくは、自分のアドレスにトランザクションを送信し、保留中のトランザクションと同じノンス (nonce)を使用することで、保留中のトランザクションをキャンセルすることができます。 + +[MetaMaskのトランザクションを高速化またはキャンセルする方法](https://metamask.zendesk.com/hc/en-us/articles/360015489251-How-to-speed-up-or-cancel-a-pending-transaction) + +[保留中のイーサリアムのトランザクションをキャンセルする方法](https://info.etherscan.com/how-to-cancel-ethereum-pending-transactions/) -ウォレットのことでお困りの場合は、 ほとんどのウォレットには専門のサポートチームがあり、対応してくれます。 +### イーサリアムのマイニング方法を教えてください {#mining-ethereum} -- [MetaMask](https://metamask.zendesk.com/hc/) -- [Argent](https://support.argent.xyz/hc/) -- [MyEtherWallet](https://help.myetherwallet.com/) +イーサリアムのマイニングはできなくなりました。 イーサリアムの[プルーフ・オブ・ワーク](/glossary/#pow)から[プルーフ・オブ・ステーク](/glossary/#pos)への移行に伴い、マイニングは停止されました。 現在は、マイナーの代わりとなるバリデータが活躍しており、 誰でもETHを[ステーキング](/glossary/#staking)することができ、ステーキング報酬はバリデータソフトウェアを立ち上げて、ネットワークのセキュリティを確保することで受け取れます。 -_このリストはすべてを網羅するものではありません。 特定のウォレットのサポートを探すのにお困りの場合は、 [ethereum.org discord](https://discord.gg/ethereum-org)に参加すると、サポートできることがあると思います。_ +### ステーカーになる/バリデータを立ち上げる方法は? {#how-to-stake} -イーサリアムウォレットをお探しの場合は、 [イーサリアムウォレットの全リスト](/wallets/find-wallet/)をご確認ください。 +バリデータになるには、イーサリアムのデポジットコントラクトに32ETHをステーキングし、バリデータノードを設定する必要があります。 詳細については、[ステーキングのページ](/staking)と[ステーキングランチパッド](https://launchpad.ethereum.org/)をご覧ください。 ## 分散型アプリ(Dapp)の開発 {#building-support} @@ -86,31 +102,3 @@ _このリストはすべてを網羅するものではありません。 特定 - [Lodestar](https://discord.gg/aMxzVcr) また、[ノードの運用方法についてはこちら](/developers/docs/nodes-and-clients/run-a-node/)をご覧ください。 - -## よくある質問 {#faq} - -### 間違ったウォレットにETHを誤送信してしまいましたが、どうすれば良いですか? {#wrong-wallet} - -イーサリアムで送信されたトランザクションはもとに戻すことはできません。 間違ったウォレットにETHを送信してしまった場合、残念ながら、これらの資金を回収する方法はありません。 イーサリアムは、中央組織、団体、個人により所有されていないため、誰もトランザクションを取り消すことができません。 そのため、必ず送信前に細心の注意を払って、ダブルチェックを行ってください。 - -### イーサリアムのプレゼントはどのように請求すれば良いですか? {#giveaway-scam} - -イーサリアムをプレゼントするというものは、ETHを盗もうと企てる詐欺です。 うま過ぎる話しには騙されないでください。プレゼントを受け取ろうと、相手先のアドレスにETHを送金してしまった場合、プレゼントはもらえず、自分の資金を回収することもできません。 - -[詐欺防止に関する詳細](/security/#common-scams) - -### トランザクションが処理されず、止まってしまっていますがどうすれば良いですか? {#stuck-transaction} - -イーサリアムのトランザクションは、必要とされるよりも低いトランザクションフィーを提示した場合、ネットワークの需要により、トランザクションが保留になってしまうことがあります。 多くのウォレットは、トランザクションが処理されるよう、トランザクションフィーの金額を上げて、同一トランザクションを再送信するオプションがあります。 もしくは、自分のアドレスにトランザクションを送信し、保留中のトランザクションと同じノンス (nonce)を使用することで、保留中のトランザクションをキャンセルすることができます。 - -[MetaMaskのトランザクションを高速化またはキャンセルする方法](https://metamask.zendesk.com/hc/en-us/articles/360015489251-How-to-speed-up-or-cancel-a-pending-transaction) - -[保留中のイーサリアムのトランザクションをキャンセルする方法](https://info.etherscan.com/how-to-cancel-ethereum-pending-transactions/) - -### イーサリアムのマイニング方法を教えてください {#mining-ethereum} - -イーサリアムのマイニングはできなくなりました。 イーサリアムのプルーフ・オブ・ワークからプルーフ・オブ・ステークへの移行に伴い、マイニングは停止されています。 現在は、マイナーの代わりとなるバリデータが活躍しており、 バリデータはネットワークの保護のためETHをステーキングし、ステーキング報酬を受け取ります。 - -### ステーカー/バリデータになるにはどうすればいいですか? {#become-validator} - -バリデータになるには、イーサリアムのデポジットコントラクトに32ETHをステーキングし、バリデータノードを設定する必要があります。 詳細については、[ステーキングのページ](/staking)と[ステーキングランチパッド](https://launchpad.ethereum.org/)をご覧ください。 diff --git a/public/content/translations/ja/contributing/adding-desci-projects/index.md b/public/content/translations/ja/contributing/adding-desci-projects/index.md new file mode 100644 index 00000000000..a6c2474add2 --- /dev/null +++ b/public/content/translations/ja/contributing/adding-desci-projects/index.md @@ -0,0 +1,44 @@ +--- +title: DeSciプロジェクトの追加 +description: ethereum.orgのDeSciへージにプロジェクトのリンクを追加する際の掲載ポリシー +lang: ja +--- + +# プロジェクトの追加 {#adding-projects} + +私たちは、様々なDeSciプロジェクトや、それをとりまく状況に関する適切なスナップショットを提供したいと考えています。 + +誰でも自由にethereum.orgのDeSciページにプロジェクトの掲載を提案することができます。 同様に、関連が無くなってしまったり、掲載基準を満たさなくなってしまったプロジェクトについては、自由に削除を提案できます。 + +## 基準のフレームワーク {#the-decision-framework} + +### 掲載基準: 必須条件 {#the-must-haves} + +- **オープンなソースコードとデータ** - コードおよびデータがオープンであることは、DeSciでコアとなる規範です。そのため、DeSciプロジェクトは、クローズドなソースであってはなりません。 コードベースにアクセス可能であるべきです。理想的には、プルリクエストにもオープンであるべきです。 +- **DeSciプロジェクトが明確に分散化されていること** - DAOによって管理されていることや、ノンカストディアルウォレットなどの分散型の技術スタックによって構築されていることを含みます。 また、これには監査可能なイーサリアムのスマートコントラクトが伴うことも考えられます。 +- **情報の誠実性および正確さ** - プロジェクトが記載するすべての内容は、誠実で正確な情報が含まれることが期待されています。 虚偽の情報が含まれる、例えば、実際にはそうではないのに製品を「オープンソース」と定義している場合、製品は削除されます。 +- **科学へのアクセスを拡大するためのコミットメントが実証可能** - DeSciプロジェクトでは、トークンやNFT保有者だけでなく、科学分野の参加を一般人へどのように広げるかを明確にできる必要があります。 +- **グローバルにアクセス可能** - プロジェクトに特定の人々がサービスにアクセスすることを除外する地理的制限や本人確認要件がないこと。 +- **ウェブサイトとドキュメントの情報が豊富** - プロジェクトのWebサイトへの訪問者が、プロジェクトが実際に何を行うのか、科学インフラの分散化にどのように貢献するのか、どのように参加するのかを理解できることが重要です。 +- **プロジェクトがイーサリアムのエコシステムの一部であること** - ethereum.orgでは、イーサリアム(およびレイヤー2)がDeSciムーブメントにおいて適切なベースレイヤーであると考えています。 +- **よく確立されたプロジェクトであること** - プロジェクトに実際にユーザーがおり、数か月にわたりプロジェクトのサービスにアクセスしていること。 + +### あるとよいもの + +- **複数の言語で利用可能** - プロジェクトが複数の言語で翻訳されており、世界中のユーザーがアクセスできるようになっていること。 +- **教育リソース** - 製品に、ユーザーを支援し教育するための、入念に設計されたオンボーディングエクスペリエンスがあること。 もしくは、記事や動画などの使用方法コンテンツのエビデンスがあること。 +- **サードパーティによる監査** - 製品が、信頼のあるサードパーティによって専門的に脆弱性が監査されていること。 +- **問い合わせ窓口** - 変更が行われたときに正確な情報を得るには、プロジェクトの問い合わせ窓口(DAOやコミュニティの代表等)が非常に役立ちます。 今後の情報を収集する際に、ethereum.orgが常に最新で管理しやすい状態に保たれます。 + +## メンテナンス {#maintenance} + +イーサリアムの流動的な性質により、チームと製品が現れては消え、イノベーションは毎日起こっています。そのため、下記のようなコンテンツの定期的なチェックを実施しています。 + +- 掲載されているプロジェクトのすべてが、引き続き基準を満たしているかどうかの確認 +- 現在掲載されている製品よりも、多くの基準を満たす製品の提案がないかの確認 + +ethereum.orgは、オープンソースコミュニティによって維持されており、最新の状態に保つためにコミュニティの力を借りています。 掲載されているプロジェクトで更新が必要なことに気づいた場合は、GitHubリポジトリでイシューを作成するかプルリクエストをしてください。 + +## 利用規約 {#terms-of-use} + +[利用規約](/terms-of-use/)も参照してください。 ethereum.orgの情報は、一般的な情報提供のみを目的としています。 diff --git a/public/content/translations/ja/contributing/adding-developer-tools/index.md b/public/content/translations/ja/contributing/adding-developer-tools/index.md index 531f806d650..241b4ec98e8 100644 --- a/public/content/translations/ja/contributing/adding-developer-tools/index.md +++ b/public/content/translations/ja/contributing/adding-developer-tools/index.md @@ -32,7 +32,7 @@ description: ethereum.orgデベロッパー向けツールへの掲載基準 **広く使われているツールであるか** -- GitHub のスター数、ダウンロード数、知名度の高い企業やプロジェクトで使用された実績などの指標を検討 +- GitHubのスター数、ダウンロード数、知名度の高い企業やプロジェクトで使用された実績などの指標を検討 **ツールの信頼性は十分か** @@ -54,8 +54,8 @@ description: ethereum.orgデベロッパー向けツールへの掲載基準 ## 追加方法 {#how-decisions-about-the-site-are-made} -本基準を満たしたツールの ethereum.org への掲載をご希望の場合は、GitHub で問題を作成してください。 +本基準を満たしたツールのethereum.orgへの掲載をご希望の場合は、GitHubで問題を作成してください。 - + 問題の作成 diff --git a/public/content/translations/ja/contributing/adding-exchanges/index.md b/public/content/translations/ja/contributing/adding-exchanges/index.md index e6ee0d5640e..0198144f25a 100644 --- a/public/content/translations/ja/contributing/adding-exchanges/index.md +++ b/public/content/translations/ja/contributing/adding-exchanges/index.md @@ -6,7 +6,7 @@ lang: ja # イーサリアム取引所の追加 {#adding-ethereum-exchanges} -誰でも新たな取引所の ethereum.org への掲載を提案することができます。 +誰でも新たな取引所のethereum.orgへの掲載を提案することができます。 現在、取引所は以下に掲載されています。 @@ -20,21 +20,21 @@ lang: ja ## 必要な情報: {#what-we-need} -- 取引所に適用される地理的な制限 -- ETH の購入に使用できる通貨 +- 取引所に適用される地理的な制限. 取引所に関する地理的制限は、取引所のウェブサイトの専用ページまたはセクションに詳しく記述されているはずです。 +- ETHの購入に使用できる通貨 - 取引所が合法な取引会社であることの証拠 - その他の追加情報(会社に関する営業年数、財政基盤などの) これらは[ユーザが利用できる取引所を正しく見つけられるようにするため](/get-eth/#country-picker)に必要な情報です。 -また、取引所が合法かつ安全であることを ethereum.org が確認するためでもあります。 +また、取引所が合法かつ安全であることをethereum.orgが確認するためでもあります。 --- ## 取引所の追加 {#add-exchange} -ethereum.org に取引所を追加掲載するには、GitHub で問題を作成してください。 +ethereum.orgに取引所を追加掲載するには、GitHubで問題を作成してください。 - + 問題の作成 diff --git a/public/content/translations/ja/contributing/adding-glossary-terms/index.md b/public/content/translations/ja/contributing/adding-glossary-terms/index.md index 1639fcf0b0c..c93aed24cf7 100644 --- a/public/content/translations/ja/contributing/adding-glossary-terms/index.md +++ b/public/content/translations/ja/contributing/adding-glossary-terms/index.md @@ -23,4 +23,4 @@ description: ethereum.org用語集に新しい用語を追加する基準 ## 用語の追加 {#how-decisions-about-the-site-are-made} -上記の基準を満たす用語の追加をご希望の場合は、 [GitHub で問題を作成](https://github.com/ethereum/ethereum-org-website/issues/new?template=suggest_glossary_term.md)してください +上記の基準を満たす用語の追加をご希望の場合は、 [GitHubで問題を作成](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_glossary_term.yaml)してください diff --git a/public/content/translations/ja/contributing/adding-layer-2s/index.md b/public/content/translations/ja/contributing/adding-layer-2s/index.md index 9ab00e97911..6bedb8f5af5 100644 --- a/public/content/translations/ja/contributing/adding-layer-2s/index.md +++ b/public/content/translations/ja/contributing/adding-layer-2s/index.md @@ -4,52 +4,54 @@ description: ethereum.orgへのレイヤー2の掲載ポリシー lang: ja --- -# レイヤー 2 の追加 {#adding-layer-2} +# レイヤー2の追加 {#adding-layer-2} -ユーザーがレイヤー 2 を安全かつ自信を持ってナビゲートできるように、可能な限り最良のリソースをリストアップしたいと考えています。 +ユーザーがレイヤー2を安全かつ自信を持ってナビゲートできるように、可能な限り最良のリソースをリストアップしたいと考えています。 -誰でも新たにレイヤー 2 の ethereum.org への掲載を提案することができます。 不足しているレイヤー 2 がある場合は、**[こちらからご提案ください](https://github.com/ethereum/ethereum-org-website/issues/new?&template=suggest_layer2.md)**。 +誰でも新たにレイヤー2のethereum.orgへの掲載を提案することができます。 不足しているレイヤー2がある場合は、**[こちらからご提案ください](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_layer2.yaml)**。 -現在、以下のページにレイヤー 2 を掲載しています。 +現在、以下のページにレイヤー2を掲載しています。 - [オプティミスティック・ロールアップ](/developers/docs/scaling/optimistic-rollups/) - [ゼロ知識ロールアップ](/developers/docs/scaling/zk-rollups/) -- [レイヤー 2](/layer-2/) +- [レイヤー2](/layer-2/) -レイヤー 2 は、イーサリアムにとって比較的新しいエキサイティングなパラダイムです。 公正なフレームワークの作成を試みていますが、掲載基準は時間と共に変化し、進化する場合があります。 +レイヤー2は、イーサリアムにとって比較的新しいエキサイティングなパラダイムです。 公正なフレームワークの作成を試みていますが、掲載基準は時間と共に変化し、進化する場合があります。 ## 基準のフレームワーク {#decision-framework} ### 掲載基準: 必須条件 {#criteria-for-inclusion-the-must-haves} -**L2BEAT への掲載** +**L2BEATへの掲載** -- 提案するプロジェクトが[L2BEAT](https://l2beat.com)に掲載されている必要があります (L2BEAT は、レイヤー 2 プロジェクトを評価する堅固なリスクアセスメントを提供するため)。 **L2BEAT で紹介されていない場合は、ethereum.org にレイヤー 2 として掲載しません。** -- [L2BEAT にレイヤー 2 プロジェクトを追加する方法](https://github.com/l2beat/l2beat/blob/master/CONTRIBUTING.md) +- 提案するプロジェクトが[L2BEAT](https://l2beat.com)に掲載されている必要があります (L2BEATは、レイヤー2プロジェクトを評価する堅固なリスクアセスメントを提供するため)。 **L2BEATで紹介されていない場合は、ethereum.orgにレイヤー2として掲載しません。** +- [L2BEATにレイヤー2プロジェクトを追加する方法](https://github.com/l2beat/l2beat/blob/master/CONTRIBUTING.md) **オープンソース** -- コードにアクセス可能、かつ広いコミュニティから PR を受け入れていること。 +- コードにアクセス可能、かつ広いコミュニティからPRを受け入れていること。 -**レイヤー 2 カテゴリー** +**レイヤー2カテゴリー** -現在、以下については、レイヤー 2 のソリューションと考えています。 +現在、以下については、レイヤー2のソリューションと考えています。 - オプティミスティック・ロールアップ - ゼロ知識ロールアップ -_データの可用性やセキュリティにイーサリアムを使用しない、その他のスケーリング・ソリューションはレイヤー 2 とは見なしていません。_ +_データの可用性やセキュリティにイーサリアムを使用しない、その他のスケーリング・ソリューションはレイヤー2とは見なしていません。_ **イーサリアムによるデータ可用性** -- データ可用性は、他のスケーリング・ソリューションとレイヤー 2 を区別する重要な差別化要因であり、 掲載にあたっては、データ可用性にイーサリアムメインネットの使用は**必須**となります。 +- データ可用性は、他のスケーリング・ソリューションとレイヤー2を区別する重要な差別化要因であり、 掲載にあたっては、データ可用性にイーサリアムメインネットの使用は**必須**となります。 **ブリッジ** -- ユーザーのレイヤー 2 への移行・オンボード方法 +- ユーザーのレイヤー2への移行・オンボード方法 **プロジェクトの公開日時** +- メインネットで半年以上「稼働」しているレイヤー2 + - ユーザーによって十分にテストされていない新しいプロジェクトは、掲載できる可能性が低くなります。 **外部のセキュリティ監査** @@ -58,11 +60,11 @@ _データの可用性やセキュリティにイーサリアムを使用しな **持続的なユーザーベース** -- TVL 履歴、トランザクション統計、既知の企業やプロジェクトで使用されているなどの指標を検討します。 +- TVL履歴、トランザクション統計、既知の企業やプロジェクトで使用されているなどの指標を検討します。 **アクティブな開発チーム** -- プロジェクトに取り組んでいるアクティブな開発チームがないレイヤー 2 は掲載できません。 +- プロジェクトに取り組んでいるアクティブな開発チームがないレイヤー2は掲載できません。 **ブロックエクスプローラー** @@ -74,22 +76,22 @@ _データの可用性やセキュリティにイーサリアムを使用しな - ユーザーが取引所から直接入金および/または引き出しをすることができること。 -**レイヤー 2 エコシステムの分散型アプリ(Dapp)へのリンク** +**レイヤー2エコシステムの分散型アプリ(Dapp)へのリンク** -- ユーザーがこのレイヤー 2 で何ができるかについての情報 (例: https://portal.arbitrum.io/、https://www.optimism.io/apps) +- ユーザーがこのレイヤー2で何ができるかについての情報 (例: https://portal.arbitrum.io/、https://www.optimism.io/apps) **トークンコントラクトのリスト** -- アセットがレイヤー 2 に新しいアドレスを持つことになるため、利用可能なトークンリスト(ある場合)。 +- アセットがレイヤー2に新しいアドレスを持つことになるため、利用可能なトークンリスト(ある場合)。 **ウォレットのネイティブ・サポート** -- 任意のウォレットがネイティブにレイヤー 2 に対応していること。 +- 任意のウォレットがネイティブにレイヤー2に対応していること。 -## レイヤー 2 の追加 {#add-exchange} +## レイヤー2の追加 {#add-exchange} -ethereum.org にレイヤー 2 の追加をご希望の場合は、GitHub で問題を作成してください。 +ethereum.orgにレイヤー2の追加をご希望の場合は、GitHubで問題を作成してください。 - + 問題の作成 diff --git a/public/content/translations/ja/contributing/adding-products/index.md b/public/content/translations/ja/contributing/adding-products/index.md index 0639ca3c2d2..1e8c24c4142 100644 --- a/public/content/translations/ja/contributing/adding-products/index.md +++ b/public/content/translations/ja/contributing/adding-products/index.md @@ -1,86 +1,74 @@ --- title: イーサリアムプロダクトの追加 -description: ethereum.orgへのウォレットや分散型アプリ(Dapp)の掲載ポリシー +description: ethereum.orgへの分散型アプリ(Dapp)の掲載ポリシー lang: ja --- -_ウォレットの追加に関する注意事項: [Q1 プロダクトロードマップ](https://github.com/ethereum/ethereum-org-website/issues/5105)の一環で、ウォレットのページの改善に取り組んでいます。 これにはウォレットページの掲載基準に関する改良も含まれます。 掲載基準の改良に向けて十分な調査がされ、構築・公開が行われるまで、本ウェブサイトに新しいウォレットを追加できませんので、ご留意ください。_ - # イーサリアムプロダクトの追加 {#adding-products} -誰でも ethereum.org の適切なページへの新しいウォレットや分散型アプリ(Dapp)の掲載を提案できます。 **なお、ホームページには分散型アプリ(Dapp)を掲載することはありません**😜 +誰でもethereum.orgの適切なページへ新しい分散型アプリ(Dapp)の掲載を提案できます。 **なお、ホームページには分散型アプリ(Dapp)を掲載することはありません**😜 -現在、以下のページにウォレットと分散型アプリ(Dapp)を記載しています。 +分散型アプリ(Dapp)は、以下に掲載されます。 -- ethereum.org/wallets -- ethereum.org/wallets/find-wallet - ethereum.org/dapps - ethereum.org/get-eth **これらのページへの追加のみご提案ください。** -新たな追加はもちろん歓迎しますが、現在記載されているウォレットと分散型アプリ(Dapp)は、当方が実現しようとしているユーザーエクスペリエンスに沿うもののみを選択しました。 以下のようなデザイン原理に基づきます。 +新たな追加はもちろん歓迎しますが、現在記載されている分散型アプリ(Dapp)は、私たちが実現しようとしているユーザーエクスペリエンスに沿うもののみを選択しています。 以下のようなデザイン原理に基づきます。 -- _新規性_: ethereum.org 上のものすべて、インスピレーションを与える、何か新しいものを提供する +- _新規性_: ethereum.org上のものすべて、インスピレーションを与える、何か新しいものを提供する - _良いストーリー_: ひらめきを与えるような「アハ体験」を提供する - _信頼性_: ユーザへのリスクを最小化するため、すべての企業/プロジェクトの合法性 -全体的に**ethereum.org は、新規ユーザーに「シームレスなオンボーディング体験」を提供したいと考えています**。 そのため、以下の点に基づいてウォレット/分散型アプリ(Dapp)を追加しています。 +全体的に**ethereum.orgは、新規ユーザーに「シームレスなオンボーディング体験」を提供したいと考えています**。 そのため、以下の点に基づいて分散型アプリ(Dapp)を追加しています。 - 使いやすさ - 他の製品との相互運用性 - セキュリティ - 長期汎用性 -基準のフレームワークについて、下記に詳細を記載します。 ご意見やまた変更すべき点をお聞かせください。 +基準のフレームワークについて、下記に詳細を記載します。 意見や変更すべき点をお聞かせください。 ## 基準のフレームワーク {#decision-framework} ### 掲載基準: 必須条件 {#criteria-for-inclusion-the-must-haves} - **セキュリティテストがされていること** – 監査、内部セキュリティチーム、またはその他の方法を問わず、確実に製品のセキュリティが検証されていること。 ユーザーへのリスクが軽減されると同時に、セキュリティを真剣に受け止めている証拠となります。 -- **6 か月以上「稼働」していること** - セキュリティの 1 つの指標で、 6 か月間は重大なバグや脆弱性の発見に適度な期間です。 +- **6か月以上「稼働」していること** - セキュリティの1つの指標で、 6か月間は重大なバグや脆弱性の発見に適度な期間です。 - **アクティブなチームによる活動** - 品質を確保することと、ユーザーが質問に対するサポートを得るのに役立ちます。 - **情報の誠実性および正確さ** - プロジェクトが記載するすべての内容は、誠実で正確な情報が含まれること。 虚偽の情報が含まれる、例えば、実際にはそうではないのに製品を「オープンソース」と定義している場合は、製品の記載は削除となります。 ### ランキング基準: 任意項目 {#criteria-for-ranking-the-nice-to-haves} -ある分散型アプリ(Dapp)やウォレットが、ethereum.org であまり目立たずに掲載されているのは、次の基準によるものです。 - -**ウォレット** - -- **フィアットオンランプ (Fiat on-ramps)** – 新しいユーザーがウォレットを使う上で、不便さを解消するためです。 取引所経由でウォレットに入金をしないといけない場合、本人確認によりウォレットを試すのに数日かかる場合があるためです。 -- **分散型アプリ(Dapp)の大半が対応していること** – ethereum.org のコンテンツは、分散型アプリ(Dapp)を紹介する前に、ユーザーがウォレットと ETH を使用できるようにすることを目指しています。 分散型アプリ(Dapp)が掲載を希望するウォレットへの接続に対応してない場合、ユーザーエクスペリエンスが損なわれるためです。 +ある分散型アプリ(Dapp)が、ethereum.orgであまり目立たずに掲載されているのは、次の基準によるものです。 **分散型アプリ(Dapp)** -- **掲載されているウォレットの大半を通してアクセス可能** – 掲載を希望する分散型アプリ(Dapp)が、ethereum.org に掲載されているウォレットの大半で動作可能。 -- **ユーザー自身で試せること –** 個々のユーザーが、分散型アプリ(Dapp)を使用でき、具体的な何かを達成できること。 - -**ウォレットおよび分散型アプリ(Dapp)** - -- **オンボーディング** – 製品にユーザーを支援し教育するオンボーディングエクスペリエンスがあること。 もしくは、記事やビデオなどの「使用方法」の証拠 +- **掲載されているウォレットの大半を通してアクセス可能** – 掲載を希望する分散型アプリ(Dapp)が、ethereum.orgに掲載されているウォレットの大半で動作すること。 +- **ユーザー自身で試せること –** 個々のユーザーが、その分散型アプリ(Dapp)を使用でき、具体的な何かを達成できること。 +- **オンボーディング** – 製品にユーザーを支援し教育するオンボーディングエクスペリエンスがあること。 もしくは、記事や動画などの使用方法コンテンツのエビデンスがあること。 - **ノンカストディアル** – ユーザーが自分の資金を管理すること。 製品がなくなっても、ユーザーは引き続き資金にアクセスして移動できること。 - **グローバルにアクセス可能** – 製品に特定の人々がサービスにアクセスすることを除外する地理的制限や本人確認要件がないこと。 -- **オープンソース** – コードはアクセス可能で、より広いコミュニティから PR を受け入れること。 -- **コミュニティ** – Discord などの専用コミュニティがあり、ユーザーがチームから支援を受けたり、新しい機能を提案できること。 +- **オープンソース** – コードはアクセス可能で、より広いコミュニティからPRを受け入れること。 +- **コミュニティ** – Discordなどの専用コミュニティがあり、ユーザーがチームから支援を受けたり、新しい機能を提案したりできること。 ## 基準の実践 {#criteria-in-practice} -より多くの基準を満たせば満たすほど、掲載を希望する製品が ethereum.org で見つけやすくなります。 +より多くの基準を満たせば満たすほど、製品がethereum.orgに掲載されやすくなります。 「必須項目」といくつかの「任意項目」を満たした新しい製品が提案された場合、現在掲載されている製品で「必須項目」のみを満たしているものは削除される可能性があります。 その他、次のような要件が判断材料となります。 -- 入れ替えせずに追加すると、ページの UX が損なわれる - - 当サイトは教育を主な目的としており、イーサリアムと関連するコンセプトを説明することを主な目的としています。 ユーザーへの選択肢を増やしすぎると、ページが読みづらくなり、その結果、使い勝手が損なわれることがあるためです。 +- 入れ替えせずに追加すると、ページのUXが損なわれる + - 当サイトは教育を主な目的としており、イーサリアムと関連コンセプトを説明することを主な目的としています。 ユーザーへの選択肢を増やしすぎると、ページが読みづらくなり、その結果、使い勝手が損なわれることがあります。 - ユーザーを麻痺させるほど選択肢が多すぎない - - 何時間も NetFlix をブラウジングしながら観るものを決めかねるように、 選択肢が多すぎて、新規ユーザーを困惑させないためです。 + - NetFlixで何を見るかを決められなくて何時間も過ごしてしまうのと同様に 過剰な選択肢で新規ユーザーを困惑させることにはリスクがあります。 -これは ethereum.org によるデザインの決定となります。 +これはethereum.orgによるデザインの決定となります。 -ですが、**より多くの分散型アプリ(Dapp)とウォレットをランク付けする他のウェブサイトへのリンクがあります**ので、ご安心ください。 +ですが、**より多くの分散型アプリ(Dapp)をランク付けする他のウェブサイトへのリンクがあります**ので、ご安心ください。 ### 掲載時の表示順序 {#product-ordering} @@ -88,16 +76,16 @@ _ウォレットの追加に関する注意事項: [Q1 プロダクトロード ### 利用規約 {#terms-of-use} -[利用規約](/terms-of-use/)も参照してください。 ethereum.org の情報は、一般的な情報提供のみを目的としています。 +[利用規約](/terms-of-use/)も参照してください。 ethereum.orgの情報は、一般的な情報提供のみを目的としています。 ## メンテナンス {#maintenance} イーサリアムの流動的な性質により、チームと製品が現れては消え、イノベーションは毎日起こっています。そのため、下記のようなコンテンツの定期的なチェックを実施しています。 -- 掲載されているウォレットと分散型アプリ(Dapp)すべてが、引き続き基準を満たしているかどうかの確認 +- 掲載されている分散型アプリ(Dapp)すべてが、引き続き基準を満たしているかどうかの確認 - 現在掲載されている製品よりも、多くの基準を満たす製品の提案がないかの確認 -上記の確認にご協力ください。 該当するものがあれば、[問題を作成](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&projects=&template=feature_request.yaml&title=Feature+request)するか[website@ethereum.org](mailto:website@ethereum.org)までメールでお知らせください。 +上記の確認にご協力ください。 [イシューを作成するか](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=)[website@ethereum.org](mailto:website@ethereum.org)へメールでお知らせください。 _コミュニティーが好みの製品や最高の製品を推奨できるよう、投票できるオプションの導入についても検討しています。_ @@ -105,8 +93,8 @@ _コミュニティーが好みの製品や最高の製品を推奨できるよ ## 製品の追加 {#add-your-product} -本基準を満たしたウォレットや分散型アプリ(Dapp)の ethereum.org への掲載をご希望の場合は、GitHub で問題を作成してください。 +本基準を満たした分散型アプリ(Dapp)のethereum.orgへの掲載をご希望の場合は、GitHubでイシューを作成してください。 - + 問題の作成 diff --git a/public/content/translations/ja/contributing/adding-staking-products/index.md b/public/content/translations/ja/contributing/adding-staking-products/index.md index eb63fa42f5e..db7cd8fee00 100644 --- a/public/content/translations/ja/contributing/adding-staking-products/index.md +++ b/public/content/translations/ja/contributing/adding-staking-products/index.md @@ -8,7 +8,7 @@ lang: ja ユーザーの安全と信用を保ちながら、可能な限り最善のリソースを掲載したいと考えています。 -誰でも新たにステーキングの製品・サービスの ethereum.org への掲載を提案することができます。 もし、不足している製品・サービスがあれば、**[こちらからご提案](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)ください**。 +誰でも新たにステーキングの製品・サービスのethereum.orgへの掲載を提案することができます。 もし、不足している製品・サービスがあれば、**[こちらからご提案](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A%2Ccontent+%3Afountain_pen%3A&template=suggest_staking_product.yaml)ください**。 現在、以下のページにステーキングの製品・サービスを掲載しています。 @@ -16,11 +16,11 @@ lang: ja - [ステーキングサービス](/staking/saas/) - [ステーキングプール](/staking/pools/) -ビーコンチェーンのプルーフ・オブ・ステークは、2020 年 12 月 1 日から稼働しています。 ステーキングは比較的まだ新しいものですが、ethereum.org で判断するために、公平で透明なフレームワークの作成を心掛けました。しかし、掲載基準は時間の経過とともに変更となることがあり、最終的には ethereum.org ウェブサイトチームの裁量に委ねられています。 +ビーコンチェーンのプルーフ・オブ・ステークは、2020年12月1日から稼働しています。 ステーキングは比較的まだ新しいものですが、ethereum.orgで判断するために、公平で透明なフレームワークの作成を心掛けました。しかし、掲載基準は時間の経過とともに変更となることがあり、最終的にはethereum.orgウェブサイトチームの裁量に委ねられています。 ## 基準のフレームワーク {#the-decision-framework} -ethereum.org への製品の掲載は、1 つの要因で決められるものではありません。 製品やサービスの掲載を決定する際には、複数の基準で総合的に判断が行われます。 満たす基準が多いほど、掲載される可能性が高くなります。 +ethereum.orgへの製品の掲載は、1つの要因で決められるものではありません。 製品やサービスの掲載を決定する際には、複数の基準で総合的に判断が行われます。 満たす基準が多いほど、掲載される可能性が高くなります。 **初めに、製品・サービスに該当するカテゴリーをご確認ください。** @@ -47,9 +47,14 @@ ethereum.org への製品の掲載は、1 つの要因で決められるもの **トラストレスまたは人間の仲介者が必要ない製品・サービス** -- ユーザージャーニーのどの段階で、人間がユーザー資金への鍵を保有したり、報酬を適切に分配する必要があるかについて。 +- ユーザージャーニーのどの段階で、人間がユーザー資金への鍵を保有したり、報酬を適切に分配する必要があるか。 - これは製品・サービスの「トラストレス」スコアを決定するために使用されます。 +**プロジェクトが正確で信頼できる情報を提供** + +- 特に製品がイーサリアムプロトコルまたはその他の関連テクノロジーに関係するならば、その製品のウェブサイトで最新で正確、誤解を招かない情報を掲載することが重要です。 +- 提出されたものに、誤情報、古い詳細情報、イーサリアムに対して誤解を与える可能性のある記述を含んでいると掲載されないか、すでに掲載されている場合は削除されます。 + **対応プラットフォーム** - 例: Linux、macOS、Windows、iOS、Android @@ -63,10 +68,10 @@ ethereum.org への製品の掲載は、1 つの要因で決められるもの - オープンソースプロジェクトであり、かつ公開されているソースコードリポジトリが必要。 - これは製品の「オープンソース」スコアを決定するために使用されます。 -***ベータ*版以降** +**_ベータ_開発を終了済み** -- 製品における開発サイクルの段階。 -- ベータ段階の製品は、ethereum.org への掲載できません。 +- 製品の開発サイクルはどの段階か。 +- ベータ段階の製品は、ethereum.orgに掲載されません。 **外部セキュリティ監査** @@ -82,10 +87,10 @@ ethereum.org への製品の掲載は、1 つの要因で決められるもの ノードまたはクライアントのセットアップ、管理、移行に関するソフトウェア製品: -**対応しているコンセンサスレイヤークライアント(例: Lighthouse、Teku、Nimbus、Prysm)** +**どのコンセンサスレイヤークライアント ( Lighthouse、Teku、Nimbus、Prysm)をサポートしているか。** - 対応しているクライアント、 ユーザーの選択の可否。 -- これは、製品の「マルチクライアント」スコアを決定するために使用されます。 +- これは製品の「マルチクライアント」スコアを決定するために使用されます。 #### ステーキングサービス {#staking-as-a-service} @@ -93,37 +98,37 @@ ethereum.org への製品の掲載は、1 つの要因で決められるもの **サービスの利用料金** -- 料金構成、例: サービスに月額料金が設定されているなど -- その他のステーキング要件 +- 料金構成、たとえばサービスに月額料金が設定されているか。 +- その他のステーキング要件の有無。 **ユーザーによるアカウント・サインアップの必要性** -- パーミッションレスまたは KYC 無しでのサービス利用可否。 +- パーミッションレスまたはKYC無しでのサービス利用可否。 - これは製品の「パーミッションレス」スコアを決定するために使用されます。 **署名鍵と引き出し鍵の保有者** - ユーザーが常に維持する鍵、 サービスがアクセスする鍵の種類。 -- これは製品の「監査」スコアを決定するために使用されます。 +- これは製品の「トラストレス」スコアを決定するために使用されます。 **運用されているノードのクライアントの多様性** -- マジョリティのコンセンサス レイヤー(CL)クライアントで実行されているバリデータ鍵の割合 -- 最新の編集時点で、Prysm がノードオペレータのマジョリティで稼働中のコンセンサスレイヤークライアントとなっており、ネットワークにとって危険な状況を呈しています。 そのため CL クライアントが現在ネットワークの 33%以上で使用されている場合、使用率に関するデータが必要となります。 +- マジョリティのコンセンサス レイヤー(CL)クライアントによって実行されているバリデータ鍵の割合 +- 最新の編集時点で、Prysmがノードオペレータのマジョリティで稼働中のコンセンサスレイヤークライアントとなっており、ネットワークにとって危険な状況を呈しています。 そのためCLクライアントが現在ネットワークの33%以上で使用されている場合、使用率に関するデータが必要となります。 - これは製品の「クライアントの多様性」スコアを決定するために使用されます。 #### ステーキングプール {#staking-pool} [ステーキングプールサービス](/staking/pools/): -**ステーキングに必要な最小 ETH** +**ステーキングに必要な最小ETH** - 例: 0.01ETH -**料金またはステーキング参加要件** +**関連する手数料またはステーキング要件** - 報酬のうち、手数料として取られる割合。 -- その他のステーキング要件 +- その他のステーキング要件の有無。 **流動性トークン** @@ -139,7 +144,7 @@ ethereum.org への製品の掲載は、1 つの要因で決められるもの **プールノードオペレーターのクライアントの多様性** - マジョリティのコンセンサス レイヤー(CL)クライアントを実行しているノードオペレーターの割合。 -- 最新の編集時点で、Prysm がノードオペレータのマジョリティで稼働中のコンセンサスレイヤークライアントとなっており、ネットワークにとって危険な状況を呈しています。 そのため CL クライアントが現在ネットワークの 33%以上で使用されている場合、使用率に関するデータが必要となります。 +- 最新の編集時点で、Prysmがノードオペレータのマジョリティで稼働中のコンセンサスレイヤークライアントとなっており、ネットワークにとって危険な状況を呈しています。 そのためCLクライアントが現在ネットワークの33%以上で使用されている場合、使用率に関するデータが必要となります。 - これは製品の「クライアントの多様性」スコアを決定するために使用されます。 ### その他の基準: 任意項目 {#other-criteria} @@ -150,9 +155,9 @@ ethereum.org への製品の掲載は、1 つの要因で決められるもの **ノードツールの場合、ソフトウェアがクライアントを簡単に切り替える方法を提供しているか。** -- ユーザーは、ツールを使用して簡単かつ安全に変更できるか。 +- ユーザーは、ツールを使用して簡単かつ安全にクライアントを変更できるか。 -**SaaS の場合、サービスで現在運用されているバリデータ数** +**SaaSの場合、サービスで現在運用されているバリデータ数** - これはサービスの到達度の判断に使用されます。 @@ -160,12 +165,12 @@ ethereum.org への製品の掲載は、1 つの要因で決められるもの 上記の[掲載基準](#criteria-for-inclusion)をもとに、各製品・サービスの累積スコアを算出します。 これは、一定の客観的基準を満たした製品の掲載と掲載順を決める手段として使われます。 証拠が提供された基準が多ければ、製品の表示順序が上がります。同点の場合は、ロード時にランダムで表示されます。 -これらの基準のロジックと重みに関するコードは、現在リポジトリの [JavaScript コンポーネント](https://github.com/ethereum/ethereum-org-website/blob/dev/src/components/Staking/StakingProductsCardGrid.js#L350)にあります。 +これらの基準のコードのロジックと重みは、現在リポジトリの [JavaScriptコンポーネント](https://github.com/ethereum/ethereum-org-website/blob/dev/src/components/Staking/StakingProductsCardGrid.js#L350)にあります。 ## 製品・サービスの追加 {#add-product} -ethereum.org にステーキング製品の追加をご希望の場合は、GitHub で問題を作成してください。 +ethereum.orgにステーキング製品の追加をご希望の場合は、GitHubでイシューを作成してください。 - + 問題の作成 diff --git a/public/content/translations/ja/contributing/adding-wallets/index.md b/public/content/translations/ja/contributing/adding-wallets/index.md new file mode 100644 index 00000000000..0ccb2713447 --- /dev/null +++ b/public/content/translations/ja/contributing/adding-wallets/index.md @@ -0,0 +1,75 @@ +--- +title: ウォレットの追加 +description: ethereum.orgへのウォレットの掲載ポリシー +lang: ja +--- + +# ウォレットの追加 {#adding-wallets} + +私たちは、ユーザーが確信を持ってイーサリアムを使えるように、豊富な機能を持つ様々なウォレットを確実にカバーしたいと思っています。 + +誰でもethereum.orgへウォレットの掲載を提案することができます。 私たちが見逃しているウォレットがあれば、ぜひ提案してください! + +誰でも新しいウォレットの掲載を提案することができ、 以下に掲載されます。 + +- [ethereum.org/wallets/find-wallet/](/wallets/find-wallet/) +- [ethereum.org/wallets/](/wallets/) + +イーサリアムのウォレットは、急速に変化しています。 公正なフレームワークの作成を試みていますが、掲載基準は時間と共に変化し、進化する場合があります。 + +## 基準のフレームワーク {#the-decision-framework} + +### 掲載基準: 必須条件 {#the-must-haves} + +- **セキュリティテストがされていること** - 監査、内部セキュリティチーム、オープンソースのコード、またはその他のどの方法であれ、ウォレットのセキュリティが信頼できること。 ユーザーへのリスクが軽減されると同時に、セキュリティを真剣に受け止めている証拠となります。 +- **ウォレットが半年以上「稼働」しているか、実績の評判が良いグループによってリリースされていること** - これもセキュリティの指標です。 半年は重大なバグや脆弱性の発見に適度な期間です。 プロジェクトとして、即座に破棄されたフォークを除外するのに半年をお願いしています。 +- **アクティブなチームによる活動** - 品質を確保し、ユーザーが質問に対するサポートを得られるようにすることに役立ちます。 +- **情報の誠実性および正確さ** - プロジェクトが記載するすべての内容は、誠実で正確な情報が含まれること。 虚偽の情報が含まれる、例えば、実際にはそうではないのに製品を「オープンソース」と定義している場合、製品は削除されます。 +- **問い合わせ窓口** - 変更が行われたときに正確な情報を得るには、ウォレットの問い合わせ窓口が非常に役立ちます。 今後の情報を収集する際に、ethereum.orgが常に最新で管理しやすい状態に保たれます。 + +### その他の基準: 任意項目 {#the-nice-to-haves} + +- **グローバルにアクセス可能** - ウォレットに、特定の人々がサービスにアクセスすることを除外する地理的制限や本人確認要件がないこと。 +- **複数の言語で利用可能** - ウォレットが複数の言語で翻訳されており、世界中のユーザーがアクセスできること。 +- **オープンソース** - プロジェクト全体のコードベース (モジュールだけではない) にアクセスでき、より広いコミュニティからPRを受け入れられること。 +- **ノンカストディアル** - ユーザーが自分の資金を管理すること。 製品がなくなっても、ユーザーは引き続き資金にアクセスして移動できること。 +- **ハードウェアウォレットのサポート** - ユーザーがトランザクションを署名するためにハードウェアウォレットを接続できること。 +- **ウォレット接続** - ユーザーがウォレット接続を利用してDappに接続できること。 +- **イーサリアムRPCのインポート** - ユーザーが、ノードのRPCデータをインポートして、選択したノードまたは他のEVM互換のネットワークに接続できること。 +- **NFT** - ユーザーが、ウォレットにあるNFTを表示したり、やり取りができること。 +- **イーサリアムアプリケーションへの接続** - ユーザーが、イーサリアムアプリケーションに接続および使用できること。 +- **ステーキング** - ユーザーが、ウォレットを通して直接ステーキングができること。 +- **スワップ** - ユーザーが、ウォレットを通してトークンをスワップできること。 +- **マルチチェーンネットワーク** - ユーザーが複数のブロックチェーンネットワークにデフォルトでアクセスすることを、ウォレットがサポートしていること。 +- **レイヤー2ネットワーク** - ユーザーがレイヤー2ネットワークにアクセスすることを、デフォルトでウォレットがサポートしていること。 +- **ガス代のカスタマイズ** - ユーザーが、ウォレットでトランザクションのガス代をカスタマイズできること (ベースフィー、プライオリティフィー、最大フィー)。 +- **ENSのサポート** - ウォレットでユーザーがENS名を使ったトランザクションの送信ができること。 +- **ERC-20サポート** - ウォレットでユーザーがERC-20トークンコントラクトをインポートしたり、ERC-20トークンのクエリや表示を自動で実行したりできること。 +- **EIP-1559 (タイプ2) トランザクション** - ウォレットがEIP-1559 (タイプ2) トランザクションをサポートしていること。 +- **暗号資産の購入** - ユーザーが暗号資産を直接購入して開始することを、ウォレットがサポートしていること。 +- **法定通貨での売却** - ユーザーが直接カードや銀行口座に法定通貨で売却や引き出しを行うことを、ウォレットがサポートしていること。 +- **マルチシグ** - ウォレットがトランザクションの署名にマルチシグによる署名をサポートしていること。 +- **ソーシャルリカバリー** - ウォレットがガーディアンをサポートしており、シードフレーズを失くしてしまった場合、ユーザーはこれらのガーディアンを使ってウォレットを回復できること。 +- **専任のサポートチーム** - ウォレットに専任のサポートチームがあり、問題があった場合にユーザーがサポートを受けられること。 +- **教育リソースまたはドキュメント** - 製品にユーザーを支援し教育するオンボーディングエクスペリエンスがあること。 もしくは、記事や動画などの使用方法コンテンツのエビデンスがあること。 + +## ウォレットの追加 {#adding-a-wallet} + +ethereum.orgにウォレットの追加をご希望の場合は、GitHubでイシューを作成してください。 + + + 問題の作成 + + +## メンテナンス {#maintenance} + +イーサリアムの流動的な性質により、チームと製品が現れては消え、イノベーションは毎日起こっています。そのため、下記のようなコンテンツの定期的なチェックを実施しています。 + +- 掲載されているウォレットと分散型アプリ(Dapp)すべてが、引き続き基準を満たしているかどうかの確認 +- 現在掲載されている製品よりも、多くの基準を満たす製品の提案がないかの確認 + +ethereum.orgは、オープンソースコミュニティによって維持されており、最新の状態に保つためにコミュニティの力を借りています。 掲載されているウォレットに関する情報に更新が必要であることに気付いた場合は、 [イシューを作成](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=wallet+%3Apurse%3A&template=suggest_wallet.yaml)するか[プルリクエスト](https://github.com/ethereum/ethereum-org-website/pulls)をしてください! + +## 利用規約 {#terms-of-use} + +[利用規約](/terms-of-use/)も参照してください。 ethereum.orgの情報は、一般的な情報提供のみを目的としています。 diff --git a/public/content/translations/ja/contributing/content-resources/index.md b/public/content/translations/ja/contributing/content-resources/index.md index 83a332a2c4d..b6ce38c02ec 100644 --- a/public/content/translations/ja/contributing/content-resources/index.md +++ b/public/content/translations/ja/contributing/content-resources/index.md @@ -25,8 +25,8 @@ description: ethereum.orgへのコンテンツリソースの掲載基準 ## コンテンツリソースの追加 {#add-your-content-resource} -本基準を満たしたコンテンツの ethereum.org への掲載をご希望の場合は、GitHub で問題を作成してください。 +本基準を満たしたコンテンツのethereum.orgへの掲載をご希望の場合は、GitHubで問題を作成してください。 - + 問題の作成 diff --git a/public/content/translations/ja/contributing/design-principles/index.md b/public/content/translations/ja/contributing/design-principles/index.md index 3f4588f195f..0fe749329c6 100644 --- a/public/content/translations/ja/contributing/design-principles/index.md +++ b/public/content/translations/ja/contributing/design-principles/index.md @@ -6,21 +6,21 @@ description: ethereum.orgのデザインとコンテンツに関する原則 # デザイン原則 {#contributing-to-ethereumorg-} - ethereum.org のデザイン原則へようこそ。 これは、ethereum.org を進化させ、改善するための継続的なプロセスの一環となるものです。 + ethereum.orgのデザイン原則へようこそ。 これは、ethereum.orgを進化させ、改善するための継続的なプロセスの一環となるものです。 本原則は、サイトの見た目、雰囲気、掲載するコンテンツに関するものです。 -[ethereum.org への貢献にあたって、まずはこちら](/contributing/)を読んでください。 +[etherem.orgへの貢献にあたって、まずはこちら](/contributing/)を読んでください。 ## デザイン原則とは {#ways-to-contribute} とてもシンプルですので、ご心配は無用です! **デザイン原則**とは、何かをデザイン(作成、メンテナンス、更新)する上での一連のガイドラインです。 -ethereum.org では、本デザイン原則は、ウェブサイトを表現し、世界へと発信するための基礎となるものです。 向上的**かつ**機能的な原則です。 ウェブサイトが*どう見えるか*だけでなく、_どう機能するか_、さらには*どう感じられるか*、色からページのレイアウト、ウェブサイト上でイーサリアムについての説明方法など、すべてが本原則に基づく必要があります。 +ethereum.orgでは、本デザイン原則は、ウェブサイトを表現し、世界へと発信するための基礎となるものです。 向上的**かつ**機能的な原則です。 ウェブサイトが_どう見えるか_だけでなく、_どう機能するか_、さらには_どう感じられるか_、色からページのレイアウト、ウェブサイト上でイーサリアムについての説明方法など、すべてが本原則に基づく必要があります。 ## 原則の実践 {#how-decisions-about-the-site-are-made} -例を見てみましょう。 原則の 1 つは「信頼性」です。訪問者に、より広いイーサリアムのエコシステム同様、本サイトが信頼に値すると*感じてもらい*、*知ってもらう*ことです。 この原則の中に、3 つの機能的な「副原則」があり、本サイトを信頼に足るものにするための実用的なステップです。 +例を見てみましょう。 原則の1つは「信頼性」です。訪問者に、より広いイーサリアムのエコシステム同様、本サイトが信頼に値すると_感じてもらい_、_知ってもらう_ことです。 この原則の中に、3つの機能的な「副原則」があり、本サイトを信頼に足るものにするための実用的なステップです。 - _「フレッシュ」_: コンテンツを最新の状態に保つこと。 - _「ソーシャルプルーフ」_: エコシステム(イーサリアムのアップグレード進捗、ゲーム、すべてのハッカソンなど)の規模、多様性、活動性を示すこと。 @@ -32,7 +32,7 @@ ethereum.org では、本デザイン原則は、ウェブサイトを表現し - _「エコシステムの規模や活動を、どこでどのように見せているか」_ - _「コミュニティメンバーの新しい投稿案は、現在のサイトのデザインや文章と整合性が取れているか」_ -## ethereum.org のデザイン原則 {#contributors} +## ethereum.orgのデザイン原則 {#contributors} ### 1. インスピレーション {#1-inspirational} @@ -57,7 +57,7 @@ ethereum.org では、本デザイン原則は、ウェブサイトを表現し ウェブサイトは、良いストーリーのようにあるべきです。 訪問者のジャーニーの途中に、あなたが貢献するコンテンツがあります。 貢献するコンテンツは、明確なストーリーに沿ったものになるよう、始まり(導入/書き出し)、中間(学習と洞察)、締めくくり(関連リソースへのリンク、または次のステップ)が必要です。 -- **階層的**: 明確で階層的に構造化された情報アーキテクチャは、ethereum.org の訪問者が目的を達成するためにサイトを「物語として」ナビゲートするのに効果的です。 +- **階層的**: 明確で階層的に構造化された情報アーキテクチャは、ethereum.orgの訪問者が目的を達成するためにサイトを「物語として」ナビゲートするのに効果的です。 - **足掛かり: **私たちは、答えを探している人の足掛かり的な存在です。 すでに存在する多くのリソースに取って代わったり、その代わりになることは望まず、 答えを与え、確実な次のステップを提供することを意図します。 ユーザージャーニー・コンテンツ @@ -86,8 +86,8 @@ ethereum.org では、本デザイン原則は、ウェブサイトを表現し ## フィードバック {#give-feedback} -**本ドキュメントに関するフィードバックをお聞かせください。** 私たちが提案する原則の 1 つは「**コラボレーションによる改善**」で、このウェブサイトが多くの貢献者の成果となることを希望しています。 その精神に則り、本デザイン原則をイーサリアムコミュニティと共有します。 +**本ドキュメントに関するフィードバックをお聞かせください。** 私たちが提案する原則の1つは「**コラボレーションによる改善**」で、このウェブサイトが多くの貢献者の成果となることを希望しています。 その精神に則り、本デザイン原則をイーサリアムコミュニティと共有します。 -本原則は ethereum.org のウェブサイトに焦点を当てていますが、その多くがイーサリアムエコシステム全体の価値を表すことを望んでいます(例えば、[イーサリアムホワイトペーパーの原則](https://github.com/ethereum/wiki/wiki/White-Paper#philosophy)からの影響を参照してください)。 ご自由にこれらの一部を自分のプロジェクトに取り入れてみてください。 +本原則はethereum.orgのウェブサイトに焦点を当てていますが、その多くがイーサリアムエコシステム全体の価値を表すことを望んでいます(例えば、[イーサリアムホワイトペーパーの原則](https://github.com/ethereum/wiki/wiki/White-Paper#philosophy)からの影響を参照してください)。 ご自由にこれらの一部を自分のプロジェクトに取り入れてみてください。 -ぜひ[Discord サーバー](https://discord.gg/ethereum-org)や[問題の作成](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&projects=&template=feature_request.yaml&title=Feature+request)からご意見をお聞かせください。 +[Discordサーバー](https://discord.gg/ethereum-org)か[イシューを作成して](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=)ご意見をお聞かせください。 diff --git a/public/content/translations/ja/contributing/design/adding-design-resources/index.md b/public/content/translations/ja/contributing/design/adding-design-resources/index.md new file mode 100644 index 00000000000..d3231e542e2 --- /dev/null +++ b/public/content/translations/ja/contributing/design/adding-design-resources/index.md @@ -0,0 +1,69 @@ +--- +title: デザインリソースの追加 +description: ethereum.orgのデザイン素材の品質を保証するためのガイドラインと要件 +lang: ja +--- + +# デザインリソースの追加 {#adding-design-resources} + +誰でも[Web3ページのデザインとUX](/developers/docs/design-and-ux/)に新しいデザイン素材を提案できます。 + +ユーザー価値を意欲的なWeb3デザイナーに提供することにこのページは焦点を当てています。 デザインセクションは、サービス、製品、プラットフォームを宣伝することが目的ではありません。 + +高水準の情報の維持および価値のある洞察を促進するために、次のような掲載ポリシーを設けました。 + +## リサーチスタディとダッシュボード {#Research-studies} + +1. 健全な方法論 + +a. 方法論にデータがどのように収集されるか明確に定義されている必要があります。 + +b. リサーチに参加した参加者数を記載する必要があります。 + +c. 採用されたリサーチ方法が記述されている必要があります。 + +2. Web3デザイナーおよび共通デザインユースケースとの関連 + +a. リサーチのトピックがWeb3デザイナーに関連し、共通デザインユースケースを扱っている必要があります。 + +3. 洞察のデリバリーに焦点を置く + +a. 文章の主な目的は、特定のプロジェクトや企業を宣伝することではなく、洞察を共有することです。 + +## 記事 {#Articles} + +1. Web3デザイナーとリサーチャーおよび共通デザインユースケースとの関連 + +a. この記事のトピックは、共通Web3デザインユースケースに焦点を当て、Web3デザイナーとリサーチャーに関連するものである必要があります。 + +2. 文章の基本品質 + +a. 記事には文法やスペルの間違いがあってはなりません。 + +b. 主要な洞察と学習を提供することに重点を置く必要があります。 + +c. 文章は簡潔かつ要領を得たものである必要があります。 + +3. 文章の目的 + +a. 記事の主な目的は、特定のプロジェクトや企業を宣伝することではなく、洞察を共有することです。 + +## コミュニティおよびDAO {#Communities-and-DAOs} + +1. ウェブサイトにDAOおよびコミュニティへの参加方法が明確に示されている必要がある + +2. メンバーシップの明確なベネフィット + +a. メンバーになるベネフィットが明確に示されている必要があります。 + +**例**: 作品に関するフィードバックを受け取れる、雇用機会へのアクセスや報奨金、デザインやリサーチにおける洞察の共有等 + +3. Discordでの活発で活気のあるコミュニケーション + +a. Discordコミュニティで活発で熱心なコミュニケーションがされている必要があります。 + +b. モデレータはコミュニティの維持およびディスカッションを円滑に進めることに積極的に関与する必要があります。 + +c. コミュニティは、過去2週間以内に行われた価値がある生産的な会話の実績を証明する必要があります。 + +これらの基準を遵守することで、私たちはコミュニティ内で繁栄した知識共有環境を発展させることを目指しています。 このホワイトリスト型の掲載ポリシーにより、ユーザーは信頼性が高く、関連性があり、洞察力に富んだリソースにアクセスできるようになると信じています。 私たちのプラットフォーム内にあるコンテンツの品質の維持にご理解、ご協力いただきありがとうございます。 diff --git a/public/content/translations/ja/contributing/design/index.md b/public/content/translations/ja/contributing/design/index.md new file mode 100644 index 00000000000..7dec222d739 --- /dev/null +++ b/public/content/translations/ja/contributing/design/index.md @@ -0,0 +1,77 @@ +--- +title: デザインでの貢献 +description: ethereum.orgにデザインで貢献する +lang: ja +--- + +# ethereum.orgにデザインで貢献する {#design-contributions} + +デザインは、どのプロジェクトにおいても重要な要素です。また、あなたの時間とデザインスキルをethereum.orgに費やすことで、ethereum.orgの訪問者のユーザーエクスペリエンスの向上に貢献できます。 オープンソースプロジェクトに貢献することで、関連する経験を積むことができ、コラボレーション環境の中でスキルを得ることができます。 それぞれ独自な視点や洞察を持った他のデザイナー、デベロッパー、コミュニティメンバーと一緒に働く機会が得られます。 + +つまり、あなたのデザインスキルを示す多様で印象的なポートフォリオを作るための、素晴らしい方法です。 + +## 貢献方法 + +###  初期デザインプロトタイプにフィードバックを提供する {#design-critique} + +未開発のアイデアをテストするのに助けが必要になることがあります。 技術的な知識を必要とせずに貢献ができる素晴らしい方法です。 + +1. デザインチームは、モックアップデザインを[Discord](https://discord.com/invite/ethereum-org)と[GitHub](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8)で共有します。 +2. コメント機能でフィードバックを提供することでデザインを成功に導きます。 +3. 結果はGitHubのイシューで共有され、その後チームによってクローズされます。 + +###  調査研究に参加する {#answer-surveys} + +次の方法でウェブサイトにフィードバックを提供することができます。 + +1. ethereum.orgにアクセスしてページを読みます。 +2. ページの最後の右端にあるフィードバックウィジェットをクリックし、デザインやコンテンツ関連の質問に回答します。 +3. 自由形式の質問に詳細に回答します。 + +###  ウェブサイトでデザイン関連の問題を見つけ報告する {#report-design-issues} + +ethereum.orgは急速に成長しているウェブサイトで、沢山の機能とコンテンツがあります。 UIのいくつかは、すぐに時代遅れになり改善が必要になります。 そのような状況を見つけた場合、私たちにお知らせください。 + +1. デザインに注目して、ウェブサイトを確認します。 +2. 視覚またはUXの問題があれば、スクリーンショットとメモを取ります。 +3. [bug report](https://github.com/ethereum/ethereum-org-website/issues/new/choose)を使って、見つけた問題を報告します。 + +###  デザイン変更を提案する {#propose-design-changes} + +デザインの課題に気軽に挑戦したいならば、GitHubのイシューボードを訪れて[デザイン関連のイシュー](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8)でフィルターしてみてください。 + +1. デザインに注目してウェブサイトを確認するか、GitHubリポジトリに行き、 [「Design required」タグ](https://github.com/ethereum/ethereum-org-website/labels/design%20required%20%F0%9F%8E%A8)でフラグ付けされたイシューをレビューします。 +2. 解決策を考えてデザインします (私たちの[デザインシステム](https://www.figma.com/community/file/1134414495420383395)を使うことが理想的です)。 +3. 対応しているGitHubイシューまたは[新しいイシューを作成し](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&template=feature_request.yaml&title=Feature+request)解決策を提案します。 +4. デザインチームがレビューするのを待ってください。 + +###  デザインシステムを一緒に構築する {#Contribute-to-design-system} + +私たちのデザインシステムを使うとethereum.orgのデザインが楽しく簡単にできます。 経験豊富なデザイナーの皆さんは、ウェブサイトで使う豊富なコンポーネントの用意を手伝うことができます。 + +1. GitHubの[design systemのボード](https://github.com/ethereum/ethereum-org-website/labels/design%20system)からイシューを選ぶか、新しいイシューを作成します。 +2. 選んだイシューが自分にアサインされるようにリクエストをします。 +3. Figmaでリクエストしたコンポーネントのデザインを開始します。 +4. レビューやガイダンスが必要になった時点でGitHubでデザインチームに共有してください。 +5. デザインチームがレビューをします。 +6. デザインチームはメインファイルに変更を取り込んで、コミュニティにファイルを公開します。 + +###  ウェブサイトにデザイン関連のコンテンツを執筆する {#write-design-articles} + +イーサリアムのデベロッパーコミュニティは強力ですが、デザインコミュニティはわずかに遅れをとっています。 web3の知識のあるデザイナーならば、学んだことをより大きなコミュニティと共有することを考えてくれませんか。私たちと一緒に成長と改善をできるようにしていきましょう。[イーサリアムのデザインページ](/developers/docs/design-and-ux/)があり、そこへ貢献することができます。 [掲載ポリシー](/contributing/design/adding-design-resources)もご確認ください。 + +1. ethereum.org上で扱うべきデザイナーにとって有益になるようなデザイントピックのアイデアを考えます。 +2. GitHubリポジトリへ行き、[イシューを作成して](https://github.com/ethereum/ethereum-org-website/issues/new)トピックを提案します(コンテンツはまだ書かないでください) 。 +3. デザインチームが承認するのを待ちます。 +4. 承認されれば、コンテンツを執筆できます。 +5. 関連するGitHubイシューにコンテンツを提出します。 + +###  新しいイラストを描く {#prepare-illustrations} + +視覚化は、抽象的なトピックを説明するのに役立つ最も強力なツールの1つです。 図やインフォグラフィックスを加えることで、大きな可能性が生じます。 何と言っても、1つの画像が千の言葉に勝ることがあります。 + +1. ウェブサイトに行き、新しいインフォグラフィックスを追加できるページを確認します。 +2. イラストのスタイルが必ず[アセット](/assets/)に対応するようにします。 +3. GitHubリポジトリへ行き、[イシューを作成して](https://github.com/ethereum/ethereum-org-website/issues/new)イラストを提案します。 +4. デザインチームがレビューをします。 +5. 私たちが新しいイシューを作成して、デベロッパーに新しいイメージを実装するよう依頼します。 diff --git a/public/content/translations/ja/contributing/index.md b/public/content/translations/ja/contributing/index.md index eeb4a8be6c2..d19975529e0 100644 --- a/public/content/translations/ja/contributing/index.md +++ b/public/content/translations/ja/contributing/index.md @@ -4,9 +4,9 @@ description: ethereum.orgに貢献できる様々な方法 lang: ja --- -# ethereum.org への貢献 🦄 {#contributing-to-ethereumorg} +# ethereum.orgへの貢献🦄 {#contributing-to-ethereumorg} -ethereum.org のウェブサイトは、より広範なイーサリアムと同様に、オープンソースプロジェクトです。 [イーサリアムへのポータル](/about/)の改善にご協力いただける場合は、こちらをご覧ください。 +ethereum.orgのウェブサイトは、より広範なイーサリアムと同様に、オープンソースプロジェクトです。 [イーサリアムへのポータル](/about/)の改善にご協力いただける場合は、こちらをご覧ください。 出席証明プロトコル(POAP)トークンが得られます。 2022年にethereum.orgに貢献した人は、ユニークな出席証明プロトコル(POAP)が準備されています。{" "}POAPについての詳細 @@ -14,71 +14,86 @@ ethereum.org のウェブサイトは、より広範なイーサリアムと同 ## 貢献の方法 {#ways-to-contribute} -- [未解決の問題に取り組む](https://github.com/ethereum/ethereum-org-website/issues) _- 必要と判断されたタスク_ -- [翻訳プログラムへの参加](/contributing/translation-program/) _- ethereum.org を翻訳する_ +- [オープンされているイシューに取り組む](https://github.com/ethereum/ethereum-org-website/issues) _- 必要と判断されたタスク_ +- [翻訳プログラムへの参加](/contributing/translation-program/) _- 新しい言語へのethereum.orgの翻訳を支援する_ +- [ウェブサイトのデザインの支援](/contributing/design/) _– あらゆるレベルのデザイナーがウェブサイトの改善に貢献できる_ - [コミュニティリソースの追加](/contributing/content-resources/) _- 関連ページに役立つ記事やリソースを追加する_ - [プロダクトの追加](/contributing/adding-products/) _- 関連ページに分散型アプリ(Dapp)やウォレットを追加する_ - [デベロッパーツールの追加](/contributing/adding-developer-tools/) _- 関連ページにデベロッパーツールを追加する_ -- [取引所の追加](/contributing/adding-exchanges/) *- [取引所を探す](/get-eth/#country-picker)*に取引所を追加する -- [研究への改善](https://www.notion.so/efdn/Ethereum-org-User-Persona-Memo-b44dc1e89152457a87ba872b0dfa366c) _- 私たちの研究に対するご意見、ご感想の共有_ -- [機能のリクエスト](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=feature+%3Asparkles%3A&projects=&template=feature_request.yaml&title=Feature+request) _- 新しい機能やデザインについてのアイデアを共有_ -- [用語の追加](/contributing/adding-glossary-terms) *- イーサリアム[用語集](/glossary/)*の継続的な拡張 -- [コンテンツの作成/編集](/contributing/#how-to-update-content) _- 新しいページの提案、すでにあるものに手を加える_ -- [レイヤー 2 の追加](/contributing/adding-layer-2s/) _- 関連ページにレイヤー 2 を追加する_ +- [取引所の追加](/contributing/adding-exchanges/) _- [取引所を探す](/get-eth/#country-picker)_に取引所を追加する +- [リサーチの改善](https://www.notion.so/efdn/Ethereum-org-User-Persona-Memo-b44dc1e89152457a87ba872b0dfa366c) _- 私たちのリサーチに対する意見、感想を共有する_ +- [機能のリクエスト](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=Type%3A+Feature&template=feature_request.yaml&title=) _– 新しい機能やデザインに関するアイデアを知らせる_ +- [用語の追加](/contributing/adding-glossary-terms) _- イーサリアム[用語集](/glossary/)_の継続的な拡張を支援する +- [コンテンツの作成/編集](/contributing/#how-to-update-content) _- 新しいページを提案するか、すでにあるものに手を加える_ +- [レイヤー2の追加](/contributing/adding-layer-2s/) _- 関連ページにレイヤー2を追加する_ - [ステーキング製品やサービスの追加](/contributing/adding-staking-products/) - _ソロステーキング、プールステーキング、またはステーキング・アズ・ア・サービスを促進するプロジェクトを追加する_ - [ウォレットの追加](/contributing/adding-wallets/) _- [ウォレットを探すページ](/wallets/find-wallet/)にウォレットを追加する_ - [分散型サイエンス(DeSci)ページのプロジェクトの提案](/contributing/adding-desci-projects/)_- 分散型サイエンスに貢献するイーサリアム上のプロジェクトを追加する_ +- [クイズ](/contributing/quizzes/) _- 関連するページのクイズ問題集の内容に追加、更新、削除を行う_ +- [デザインリソースの提案](/contributing/design/adding-design-resources/) _- 有用なデザインリソースを追加、更新、削除する_ -*ご質問がある場合は*🤔、[Discord サーバー](https://discord.gg/ethereum-org)でご連絡ください +_ご質問がある場合は_🤔、[Discordサーバー](https://discord.gg/ethereum-org)でご連絡ください -## ethereum.org での活動方法 {#how-to-update-content} +## ethereum.orgでの活動方法 {#how-to-update-content} サイトにコンテンツを作成するにしても、あるいはオープンな問題に取り組むにしても、[GitHub](https://github.com)アカウントが必要になります。 -すべてのアップデートは、GitHub の PR プロセスを通して行われます。 つまり、ウェブサイトのローカルコピーを作成し、変更を加え、更新するようリクエストします。 初めての場合は、[GitHub リポジトリ](https://github.com/ethereum/ethereum-org-website)の一番下にある説明に従ってください。 +すべてのアップデートは、GitHubのPRプロセスを通して行われます。 つまり、ウェブサイトのローカルコピーを作成し、変更を加え、更新するようリクエストします。 初めての場合は、[GitHubリポジトリ](https://github.com/ethereum/ethereum-org-website)の一番下にある説明に従ってください。 作業するのに許可は必要ありませんが、何をするつもりなのかお知らせください。 これは次の方法で行うことができます。 -- [GitHub](https://github.com/ethereum/ethereum-org-website)の問題や PR にコメントする -- [Discord サーバー](https://discord.gg/ethereum-org)でメッセージする +- [GitHub](https://github.com/ethereum/ethereum-org-website)の問題やPRにコメントする +- [Discordサーバー](https://discord.gg/ethereum-org)にメッセージを送る 貢献するにあたって、以下のことを確認してください。 -- 進化する[ethereum.org のビジョン](/about/) +- 進化する[ethereum.orgのビジョン](/about/) - [デザイン原則](/contributing/design-principles/) - [スタイルガイド](/contributing/style-guide/) +- [行動規範](/community/code-of-conduct) ## サイトに関する決定 {#how-decisions-about-the-site-are-made} -個々の PR、デザインの進化、メジャーなアップグレードに関する決定は、イーサリアムのエコシステム全体からなるチームによって行われます。 このチームには、プロジェクトマネージャー、デベロッパー、デザイナー、マーケティング、コミュニケーションなど各領域の専門家が含まれます。 コミュニティからの情報は、すべての決定に反映されるため、問題でご質問、PR の送信、チームへの連絡をお願いします。 +個々のPR、デザインの進化、メジャーなアップグレードに関する決定は、イーサリアムのエコシステム全体からなるチームによって行われます。 このチームには、プロジェクトマネージャー、デベロッパー、デザイナー、マーケティング、コミュニケーションなど各領域の専門家が含まれます。 コミュニティからの情報は、すべての決定に反映されるため、問題でご質問、PRの送信、チームへの連絡をお願いします。 - [website@ethereum.org](mailto:website@ethereum.org) - [@ethdotorg](https://twitter.com/ethdotorg) -- [Discord サーバー](https://discord.gg/ethereum-org) +- [Discordサーバー](https://discord.gg/ethereum-org) ### 盗用に関する注意点 {#plagiarism} -ethereum.org にコンテンツや成果物を提供する際は、オリジナルの作品や使用許可を得たコンテンツのみを使用するようにしてください。 イーサリアムのエコシステム内の多くのプロジェクトは、自由に情報を共有できるオープンソースライセンスを採用しています。 ただし、この情報が見つからない場合は、ethereum.org には追加しないでください。 盗用とみなされたプルリクエストは拒絶されます。 +ethereum.orgにコンテンツや成果物を提供する際は、オリジナルの作品や使用許可を得たコンテンツのみを使用するようにしてください。 イーサリアムのエコシステム内の多くのプロジェクトは、自由に情報を共有できるオープンソースライセンスを採用しています。 ただし、この情報が見つからない場合は、ethereum.orgには追加しないでください。 盗用とみなされたプルリクエストは拒絶されます。 ## オープンソースが初めての場合 {#new-to-open-source} -GitHub リポジトリには、オープンソースに初めて触れるデベロッパーのために特別に設計された、分かりやすい初心者向けの問題があり、[good first issue(初心者向け)](https://github.com/ethereum/ethereum-org-website/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)のラベル付けされています。 +GitHubリポジトリには、オープンソースに初めて触れるデベロッパーのために特別に設計された、分かりやすい初心者向けの問題があり、[good first issue(初心者向け)](https://github.com/ethereum/ethereum-org-website/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)のラベル付けされています。 ## コントリビューターの出席証明プロトコル(POAP) {#poap} -貢献が ethereum.org に取り入れられた場合、コントリビューターにユニークな出席証明プロトコル(POAP)を発行します。 この出席証明プロトコル(POAP)トークンは、あなたがエコシステムをより素晴らしいものにするために貢献したことを示すオンチェーンの証明です。 +貢献がethereum.orgに取り入れられた場合、コントリビューターにユニークな出席証明プロトコル(POAP)を発行します。 この出席証明プロトコル(POAP)トークンは、あなたがエコシステムをより素晴らしいものにするために貢献したことを示すオンチェーンの証明です。 [出席証明プロトコル(POAP)の詳細](https://www.poap.xyz/) ### 申請方法 {#how-to-claim} -1. [Discord サーバー](https://discord.gg/ethereum-org)に参加します。 -2. `#🥇 | proof-of-contribution`[チャンネル](https://discord.com/channels/714888181740339261/1212737737916948530)にあなたの投稿へのリンクを貼り付けます。 +1. [Discordサーバー](https://discord.gg/ethereum-org)に参加します。 +2. `#🥇 | proof-of-contribution`チャンネルにあなたの投稿へのリンクを貼り付けてください。 3. 出席証明プロトコル(POAP)へのリンクが送られるまでお待ちください。 4. 出席証明プロトコル(POAP)を受け取ります。 出席証明プロトコル(POAP)の受け取りには、セルフ・カストディのウォレットのみを使用してください。 取引所のアカウントや秘密鍵を保有していないその他のアカウントなどは、使わないでください。これらのアカウントでは、出席証明プロトコル(POAP)へのアクセスや管理ができません。 -## コントリビューター {#contributors} +## GitPOAPの申請 {#claim-gitpoap} + +GitPOAPは、マージされたコントリビューションを自動的に認識し、プラットフォーム上で別々に固有のコントリビュータPOAPをミントできます。 + +### 申請方法 {#how-to-claim} + +1. [GitPOAP](https://www.gitpoap.io)にアクセスします。 +2. サインインオプションで、ウォレットまたは電子メールで接続します。 +3. GitHubのユーザー名、ETHアドレス、ENS名、またはGitPOAPを検索して、条件を満たしているか確認してください。 +4. あなたのGitHubアカウントが条件を満たしていれば、GitPOAPをミントできます。 + +## 貢献者 {#contributors} diff --git a/public/content/translations/ja/contributing/quizzes/index.md b/public/content/translations/ja/contributing/quizzes/index.md new file mode 100644 index 00000000000..f3dd076f8c2 --- /dev/null +++ b/public/content/translations/ja/contributing/quizzes/index.md @@ -0,0 +1,62 @@ +--- +title: クイズの追加 +description: ethereum.orgへのクイズの掲載ポリシー +lang: ja +--- + +# クイズ {#quizzes} + +クイズとは、ユーザーが今読んだページの内容を理解したかどうかを自分でテストして確かめる機会です。 問題はそのページで提供した内容をベースとするものに限られます。そのページで扱っていない情報を質問すべきではありません。 + +問題は次のように構成されています。 問題のプロンプト、1つの正解と正しい理由の説明、3つの不正解と間違っている理由の説明。 + +現在のクイズ例は、以下にあります。 + +- [レイヤー2](/layer-2) +- [NFT](/nft/) +- [イーサリアムとは?](/what-is-ethereum/) +- [ETHとは何?](/eth/) + +## 学習クイズの追加 + +学習クイズが無いページがある場合は、[イシューを作成](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml)してください。 + +次の情報を提供してください。 + +- クイズを追加したいページ +- 次の情報を含む5つの問題 + - 問題のベースとなっているページのセクション + - 問題のプロンプト + - 1つの正解と正しい理由の説明 + - 3つの不正解と、各解答が間違っている理由の説明 + +## クイズの追加 + +問題バンクにクイズを追加したい場合は、 [イシューを作成](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml)して次の情報を提供してください。 + +- クイズを追加したいページ +- 各問題について、以下の情報を入力してください。 + - 問題のベースとなっているページのセクション + - 問題のプロンプト + - 1つの正解と正しい理由の説明 + - 3つの不正解と、各解答が間違っている理由の説明 + +## クイズの更新 + +問題バンクに更新したいクイズがある場合は、[イシューを作成](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml)して次の情報を提供してください。 + +- クイズを更新したいページ +- 各問題を更新するために次の情報を入力してください。 + - 問題のベースとなっているページのセクション + - 更新したい問題のプロンプト + - 更新された問題のプロンプト + - 1つの正解と正しい理由の説明 + - 3つの不正解と、各解答が間違っている理由の説明 + +## クイズの削除 + +問題に関する内容がページに無く、削除する必要がある場合は、[イシューを作成](https://github.com/ethereum/ethereum-org-website/issues/new?assignees=&labels=&template=suggest_quiz.yaml)し、次の情報を提供して問題を削除してください。 + +- クイズを削除したいページ +- 削除したい問題 +- 必要ならば問題を削除する理由の説明 diff --git a/public/content/translations/ja/contributing/translation-program/faq/index.md b/public/content/translations/ja/contributing/translation-program/faq/index.md index d20bb1b1e02..6a1d7311c34 100644 --- a/public/content/translations/ja/contributing/translation-program/faq/index.md +++ b/public/content/translations/ja/contributing/translation-program/faq/index.md @@ -4,15 +4,15 @@ lang: ja description: ethereum.orgの翻訳プログラムに関するよくある質問 --- -# ethereum.org の翻訳ガイド {#translating-ethereum-guide} +# ethereum.orgの翻訳ガイド {#translating-ethereum-guide} 翻訳プログラムが初めてで、参加をためらっているのであれば、まずはこちらのよくある質問をご覧ください。 このガイドでは、よくある質問に対する答えを記載しています。 -## ethereum.org を翻訳すると、報酬を得ることができますか? {#compensation} +## ethereum.orgを翻訳すると、報酬を得ることができますか? {#compensation} -ethereum.org はオープンソースのウェブサイトであり、誰もが参加し貢献することができます。 +ethereum.orgはオープンソースのウェブサイトであり、誰もが参加し貢献することができます。 -ethereum.org の翻訳プログラムはその延長線上にあり、同じような理念を念頭にして組織されています。 +ethereum.orgの翻訳プログラムはその延長線上にあり、同じような理念を念頭にして組織されています。 翻訳プログラムの目標は、話す言語に関係なく、誰もがイーサリアムのコンテンツを利用できるようにすることです。 また、バイリンガルの方であれば誰でもイーサリアムのエコシステムに参加し、身近な形で貢献できるようするものです。 @@ -22,7 +22,7 @@ ethereum.org の翻訳プログラムはその延長線上にあり、同じよ ## ``はどのように翻訳すればいいですか? {#tags} -翻訳するすべての文字列が純粋なテキスト形式で書かれているわけではありません。 HTML タグ(`<0>`、``)などのスクリプトが含まれている文字列もあります。これは通常、ハイパーリンクや文章の途中でスタイルを変えるためのものです。 +翻訳するすべての文字列が純粋なテキスト形式で書かれているわけではありません。 HTMLタグ(`<0>`、``)などのスクリプトが含まれている文字列もあります。これは通常、ハイパーリンクや文章の途中でスタイルを変えるためのものです。 - タグ内のテキストは翻訳しますが、タグはそのまま残します。 `<` と `>`の間は、翻訳したり削除しないでください。 - 間違えないようにするために、左下の[Copy Source]ボタンをクリックすると、 元の文字列がコピーされ、テキストボックスに貼り付けられ、 タグがどこにあるかがよくわかり、ミスを避けることができます。 @@ -48,7 +48,7 @@ ethereum.org の翻訳プログラムはその延長線上にあり、同じよ もし、特定の文字列の誤りを指摘したい場合は、お気軽にコメントを投稿してください。 -- 右上のバーの 2 番目のボタンをクリックします。 右側に非表示のタブが表示されます。 新しいコメントを記入し、下部にある[Issue]のチェックボックスをクリックします。 ドロップダウンメニューからオプションを選択し、問題の種別を指定できます。 +- 右上のバーの2番目のボタンをクリックします。 右側に非表示のタブが表示されます。 新しいコメントを記入し、下部にある[Issue]のチェックボックスをクリックします。 ドロップダウンメニューからオプションを選択し、問題の種別を指定できます。 - 送信された時点で、私たちのチームに報告されます。 問題を修正してから、コメントに返信してお知らせし、問題をクローズします。 - 誤った翻訳を報告した場合、該当する文章と提案された修正案は、次回のレビュー時にネイティブスピーカーによりレビューが行われます。 @@ -56,24 +56,24 @@ ethereum.org の翻訳プログラムはその延長線上にあり、同じよ ## 翻訳メモリ(TM) とは何ですか? {#translation-memory} -翻訳メモリ(TM)とは、[ethereum.org](http://ethereum.org/)全体で過去に翻訳されたすべての文字列を保存する Crowdin の機能の一つです。 文字列が翻訳されると、自動的にプロジェクトの TM に保存されます。 これは便利なツールで、時間の節約につながります。 +翻訳メモリ(TM)とは、[ethereum.org](http://ethereum.org/)全体で過去に翻訳されたすべての文字列を保存するCrowdinの機能の一つです。 文字列が翻訳されると、自動的にプロジェクトのTMに保存されます。 これは便利なツールで、時間の節約につながります。 - [TM and MT Suggestions]のセクションに、他の翻訳者が同じまたは類似する文字列をどのように翻訳したかが表示されます。 マッチ率の高い提案を見つけたら、その翻訳をクリックして気軽に使用してください。 -- リストに何も表示されない場合は、一貫性を持たせるために、過去の翻訳を TM で検索し、再利用することができます。 +- リストに何も表示されない場合は、一貫性を持たせるために、過去の翻訳をTMで検索し、再利用することができます。 ![翻訳メモリのスクリーンショット](./translation-memory.png) -## Crowdin の用語集の使い方を教えてください {#glossary} +## Crowdinの用語集の使い方を教えてください {#glossary} 新しい技術用語は多くの言語にローカライズされていないため、イーサリアムの用語集も翻訳作業で重要な役割を果たします。 また、文脈によって意味が異なる用語もあります。 [イーサリアム用語集の翻訳の詳細](#terminology) -Crowdin の用語集を利用して、用語や定義を明確にできます。 用語集を参照するには、2 つの方法があります。 +Crowdinの用語集を利用して、用語や定義を明確にできます。 用語集を参照するには、2つの方法があります。 - まず、ソースの文字列に下線が引かれている用語をマウスオーバーするとその用語の簡単な定義が表示されます。 ![用語集の定義の例](./glossary-definition.png) -- 次に、知らない単語で下線が引かれていないものの場合は、[Terminology]タブ(右欄の 3 番目のボタン)から検索できます。 プロジェクト内で頻繁に使用される用語の説明が表示されます。 +- 次に、知らない単語で下線が引かれていないものの場合は、[Terminology]タブ(右欄の3番目のボタン)から検索できます。 プロジェクト内で頻繁に使用される用語の説明が表示されます。 ![Crowdinの用語集タブの場所を示すスクリーンショット](./glossary-tab.png) @@ -93,27 +93,27 @@ _固有名詞(ブランド、企業、人名)および新しい技術用語(ビ 知らない用語が出てきたときにお勧めの方法をご紹介します。 -- [用語集](#glossary)を参照すると、他の翻訳者が過去にどのように翻訳したかが分かる場合があります。 以前に翻訳された用語が適切でないと思われる場合は、Crowdin の用語集に新しい用語を追加して、翻訳を修正することができます。 +- [用語集](#glossary)を参照すると、他の翻訳者が過去にどのように翻訳したかが分かる場合があります。 以前に翻訳された用語が適切でないと思われる場合は、Crowdinの用語集に新しい用語を追加して、翻訳を修正することができます。 - 過去の翻訳が用語集に存在しない場合は、検索エンジンやメディアの記事などで、その用語が実際にどのように使われているかを調べてみることをお勧めします。 - もし参考文献が全く見つからなかったら、自分の直感を信じて、あなたの言語への新しい翻訳を提案してください。 - 自信がない場合は、その用語を翻訳せずに英語のまま残しておきます。 正確な意味を提供するには、英語のままで十分な場合があります。 -ブランド名、会社名、人名などは、翻訳すると余計な混乱や SEO 上の問題が生じる可能性があるため、翻訳しないことをお勧めします。 +ブランド名、会社名、人名などは、翻訳すると余計な混乱やSEO上の問題が生じる可能性があるため、翻訳しないことをお勧めします。 ## レビュープロセスはどのように行われますか? {#review-process} -翻訳の品質と一貫性を一定レベルに保つため、世界最大級の言語サービスプロバイダーである[Acolad](https://www.acolad.com/)と協働しています。 Acolad には 20,000 人のプロの翻訳者がおり、プロが必要なあらゆる言語、あらゆるコンテンツのレビューを行うことができます。 +翻訳の品質と一貫性を一定レベルに保つため、世界最大級の言語サービスプロバイダーである[Acolad](https://www.acolad.com/)と協働しています。 Acoladには20,000人のプロの翻訳者がおり、プロが必要なあらゆる言語、あらゆるコンテンツのレビューを行うことができます。 -レビュープロセスは簡単で、ある[コンテンツバケット](/contributing/translation-program/content-buckets)が 100%翻訳されると、そのコンテンツバケットに対してレビューが行われます。 レビュー自体は Crowdin で直接行われます。 レビュー終了後、翻訳されたコンテンツにウェブサイトを更新します。 +レビュープロセスは簡単で、ある[コンテンツバケット](/contributing/translation-program/content-buckets)が100%翻訳されると、そのコンテンツバケットに対してレビューが行われます。 レビュー自体はCrowdinで直接行われます。 レビュー終了後、翻訳されたコンテンツにウェブサイトを更新します。 ## 私の言語でコンテンツを追加するにはどうすればいいですか? {#adding-foreign-language-content} 現在、英語以外のコンテンツはすべて英語のコンテンツからの翻訳です。また、英語にないコンテンツを他の言語に追加できません。 -ethereum.org の新しいコンテンツを提案するには、GitHub で[問題を作成](https://github.com/ethereum/ethereum-org-website/issues)してください。 コンテンツが追加される場合、コンテンツはまず英語で書かれ、Crowdin 上で多言語化されます。 +ethereum.orgの新しいコンテンツを提案するには、GitHubで[問題を作成](https://github.com/ethereum/ethereum-org-website/issues)してください。 コンテンツが追加される場合、コンテンツはまず英語で書かれ、Crowdin上で多言語化されます。 近い将来、英語以外のコンテンツの追加にも対応する予定です。 ## お問い合わせ {#contact} -これら全文をお読みいただき、ありがとうございました。 翻訳プログラムへの参加に向けて、本ドキュメントが役立つことを願っています。 [Discord 翻訳チャンネル](https://discord.gg/ethereum-org)に参加して、質問をしたり、他の翻訳者とコラボレーションをしてください。または、translations@ethereum.orgまでお問い合わせください。 +これら全文をお読みいただき、ありがとうございました。 翻訳プログラムへの参加に向けて、本ドキュメントが役立つことを願っています。 [Discord翻訳チャンネル](https://discord.gg/ethereum-org)に気軽に参加して、質問をしたり、他の翻訳者とコラボレーションをしてください。または、translations@ethereum.orgまでお問い合わせください。 diff --git a/public/content/translations/ja/contributing/translation-program/how-to-translate/index.md b/public/content/translations/ja/contributing/translation-program/how-to-translate/index.md new file mode 100644 index 00000000000..565c6062d8c --- /dev/null +++ b/public/content/translations/ja/contributing/translation-program/how-to-translate/index.md @@ -0,0 +1,89 @@ +--- +title: 翻訳方法 +lang: ja +description: ethereum.orgの翻訳でCrowdinを使う手順 +--- + +# 翻訳方法 {#how-to-translate} + +## ビジュアルガイド {#visual-guide} + +映像で学習したい人は、LukaがCrowdinを設定する手順を見てみましょう。 次のセクションでは、同じ手順を文書形式で学べます。 + + + +## 文書によるガイド {#written-guide} + +### Crowdinにあるプロジェクトに参加する {#join-project} + +お持ちのCrowdinアカウントでログインします。無い場合はサインアップする必要があります。 サインアップに必要なのは、Eメールとパスワードだけです。 + + + プロジェクトに参加 + + +### 翻訳する言語を開く {#open-language} + +Crowdinへログインすると、プロジェクトの説明と翻訳可能な言語のリストが表示されます。 各言語には、その言語における翻訳可能な単語の総数、どの程度の翻訳が完了し承認されているかに関する概要の情報も含まれています。 + +翻訳したい言語を開き、翻訳が可能になっているファイルのリストを確認してください。 + +![Crowdinにある言語のリスト](./list-of-languages.png) + +### 作業するドキュメントを見つける {#find-document} + +ウェブサイトのコンテンツは、多数のドキュメントとコンテンツバケットに分割されています。 各ドキュメントの進捗状況は右側で確認できます。翻訳の進捗が100%未満の場合は、ぜひご協力ください! + +あなたの言語が表示されてない場合は、 [イシューを作成する](https://github.com/ethereum/ethereum-org-website/issues/new/choose)か、[Discord](/discord/) で問い合わせてください。 + +![Crowdinにある翻訳されたファイルと未翻訳のファイル](./crowdin-files.png) + +コンテンツバケットに関する注意事項: Crowdinでは、「コンテンツバケット」を使用して、最初に最優先コンテンツをリリースします。 例えば、[フィリピン語](https://crowdin.com/project/ethereum-org/fil#)など言語をチェックアウトすると、コンテンツバケットのフォルダが表示されます ("1. Homepage"、"2. Essentials"、"3. Exploring"など) 。 + +最も影響度のあるページを最初に翻訳するために、この数字順 (1 → 2 → 3 → ⋯) で翻訳することを推奨します。 + +[ethereum.orgのコンテンツ一覧について詳しくはこちらをご覧ください。](/contributing/translation-program/content-buckets/) + +### 翻訳 {#translate} + +翻訳したいファイルを選択すると、オンラインエディターが開きます。 Crowdinを使ったことがない方は、このクイックガイドで基本的なことを確認してください。 + +![Crowdinオンラインエディター](./online-editor.png) + +**_1 - 左サイドバー_** + +- Untranslated (赤) - まだ翻訳されていないテキスト。 これらは、翻訳が必要な文字列です。 +- Translated (緑) - 翻訳されているが、まだレビューされていないテキスト。 別の翻訳を提案したり、エディタの「+」と「-」ボタンを使って、既存の翻訳への投票が自由にできます。 +- Approved (チェックマーク) - すでにレビューが完了し、現在ウェブサイトに掲載されているテキスト。 + +また、上部のボタンを使って、特定の文字列を検索したり、ステータスでフィルタリングしたり、表示を変更したりすることができます。 + +**_2 - エディターエリア_** + +メインの翻訳エリア - 原文が上部に表示され、追加でコンテキストやスクリーンショットがある場合はそれらも表示されます。 新しい翻訳を提案するには、「Enter translation here」の欄に翻訳を入力し、[Save]をクリックします。 + +また、このセクションでは、文字列の既存の翻訳や他の言語への翻訳のほか、翻訳メモリの一致や機械翻訳の候補も見つけることができます。 + +**_3 - 右サイドバー_** + +ここには、コメントや翻訳メモリのエントリ、用語集のエントリがあります。 デフォルトの表示では、コメントが表示され、翻訳者がコミュニケーションを取ったり、問題を提起したり、間違った翻訳を報告したりすることができます。 + +また、上部のボタンで、既存の翻訳を検索できる「翻訳メモリ」や、重要な用語の説明や標準的な翻訳を収録した「用語集」に切り替えることができます。 + +さらに詳しく知りたいですか? [Crowdinオンラインエディターの使用方法に関するドキュメント](https://support.crowdin.com/online-editor/)をご参照ください。 + +### レビュープロセス {#review-process} + +翻訳が完了(コンテンツバケットの全ファイルが100%と表示)したら、プロの翻訳サービスがコンテンツをレビューします。またレビューの際は、編集する場合もあります。 レビューが完了(レビューの進捗率が100%)したら、ウェブサイトに追加されます。 + + + 機械翻訳を使った翻訳はご遠慮ください。 翻訳されたものはすべて、ウェブサイトに追加される前に審査されます。 提案された翻訳が機械翻訳であることが判明した場合、その翻訳は却下され、機械翻訳を頻繁に使う貢献者はプロジェクトから排除されます。 + + +### お問い合わせ {#get-in-touch} + +何かご質問がある場合や、 私たちのチームや他の翻訳者とコラボレーションしたい場合は、 [ethereum.orgのDiscordサーバー](/discord/)の#translationチャネルに投稿してください。 + +または、translations@ethereum.orgまでご連絡ください + +ethereum.org翻訳プログラムにご参加いただき、ありがとうございます。 diff --git a/public/content/translations/ja/contributing/translation-program/index.md b/public/content/translations/ja/contributing/translation-program/index.md index 652c1999004..3198bfea6b7 100644 --- a/public/content/translations/ja/contributing/translation-program/index.md +++ b/public/content/translations/ja/contributing/translation-program/index.md @@ -6,21 +6,21 @@ description: ethereum.org翻訳プログラムについて # 翻訳プログラム {#translation-program} -翻訳プログラムは、世界中の何十億もの英語を話さない人たちが、利用できるよう ethereum.org をさまざまな言語に翻訳するコラボレーションです。 +翻訳プログラムは、世界中の何十億もの英語を話さない人たちが、利用できるようethereum.orgをさまざまな言語に翻訳するコラボレーションです。 ![](./enterprise-eth.png) ## 翻訳への協力 {#help-us-translate} -ethereum.org 翻訳プログラムはオープンで、誰でも貢献できます。 +ethereum.org翻訳プログラムはオープンで、誰でも貢献できます。 -1. Crowdin アカウントにログイン、またはサインアップします。 +1. Crowdinアカウントにログイン、またはサインアップします。 2. 貢献したい言語を選択します。 -3. 始める前に、まず [翻訳方法](/contributing/translation-program/how-to-translate/)ガイドで Crowdin の使い方を学び、[翻訳スタイルガイド](/contributing/translation-program/translators-guide/)でコツと最善の方法を確認します。 +3. 始める前に、まず [翻訳方法](/contributing/translation-program/how-to-translate/)ガイドでCrowdinの使い方を学び、[翻訳スタイルガイド](/contributing/translation-program/translators-guide/)でコツと最善の方法を確認します。 4. 機械翻訳は承認されません。 5. すべての翻訳は、サイトに追加される前にレビューされるため、翻訳が掲載されるまで若干のライムラグがあります。 -_[ethereum.org の Discord](/discord/)に参加すると、翻訳でのコラボレーション、質問、フィードバックやアイデアの共有、または翻訳グループへの参加ができます。_ +_[ethereum.orgのDiscord](/discord/)に参加すると、翻訳でのコラボレーション、質問、フィードバックやアイデアの共有、または翻訳グループへの参加ができます。_ 翻訳を始める @@ -28,31 +28,31 @@ _[ethereum.org の Discord](/discord/)に参加すると、翻訳でのコラボ ## 翻訳プログラムについて {#about-us} -イーサリアムコミュニティはグローバルで包括的であることを目指していますが、そのコンテンツの多くは英語を話す人向けになっており、世界 60 億人の英語を話さない人たちにとって、排他的なものになっています。 ethereum.org が世界中のコミュニティのイーサリアムへのポータルとして機能するためには、英語を話さない人に母国語でイーサリアムのコンテンツを提供することが不可欠だと考えています。 +イーサリアムコミュニティはグローバルで包括的であることを目指していますが、そのコンテンツの多くは英語を話す人向けになっており、世界60億人の英語を話さない人たちにとって、排他的なものになっています。 ethereum.orgが世界中のコミュニティのイーサリアムへのポータルとして機能するためには、英語を話さない人に母国語でイーサリアムのコンテンツを提供することが不可欠だと考えています。 -ethereum.org 翻訳プログラムは、ethereum.org やその他のイーサリアムコンテンツをできるだけ多くの言語に翻訳することで、誰もがイーサリアムを利用できるようにすることを目的としています。 +ethereum.org翻訳プログラムは、ethereum.orgやその他のイーサリアムコンテンツをできるだけ多くの言語に翻訳することで、誰もがイーサリアムを利用できるようにすることを目的としています。 -ethereum.org 翻訳プログラムの詳細については、[ミッションとビジョン](/contributing/translation-program/mission-and-vision)を参照してください。 +ethereum.org翻訳プログラムの詳細については、[ミッションとビジョン](/contributing/translation-program/mission-and-vision)を参照してください。 ### これまでの進捗 {#our-progress} -- [**4,700 人**以上の翻訳者](/contributing/translation-program/contributors/) -- **52**言語に対応 -- [**300 万**語翻訳(2022 年時点)](/contributing/translation-program/acknowledgements/) +- [**5,600人以上**の翻訳者](/contributing/translation-program/contributors/) +- **62**言語に対応 +- [**300万**語翻訳(2023年時点)](/contributing/translation-program/acknowledgements/) ### 謝辞 {#acknowledgements} -ethereum.org は、何千人ものコミュニティメンバーによって翻訳されており、翻訳プログラムに欠かせない重要な役割を担っています。 翻訳者の皆様に感謝すると同時に、翻訳者の皆様のキャリアパスをサポートしたいと考えています。 以下に、翻訳者の皆様への感謝の形をいくつか紹介します。 +ethereum.orgは、何千人ものコミュニティメンバーによって翻訳されており、翻訳プログラムに欠かせない重要な役割を担っています。 翻訳者の皆様に感謝すると同時に、翻訳者の皆様のキャリアパスをサポートしたいと考えています。 以下に、翻訳者の皆様への感謝の形をいくつか紹介します。 #### 証明書 {#certificate} -翻訳プログラムに貢献し、5000 語以上の翻訳が承認された場合、ethereum.org 翻訳者証明書受け取ることができます。 [証明書の詳細](/contributing/translation-program/acknowledgements/#certificate) +翻訳プログラムに貢献し、5000語以上の翻訳が承認された場合、ethereum.org翻訳者証明書受け取ることができます。 [証明書の詳細](/contributing/translation-program/acknowledgements/#certificate) #### 出席証明プロトコル(POAP) {#poaps} -翻訳にご協力いただいた全員に、ethereum.org 翻訳プログラムへの貢献を証する、出席証明プロトコル(POAP)を発行します。 [出席証明プロトコル(POAP)の詳細](/contributing/translation-program/acknowledgements/#poap) +翻訳にご協力いただいた全員に、ethereum.org翻訳プログラムへの貢献を証する、出席証明プロトコル(POAP)を発行します。 [出席証明プロトコル(POAP)の詳細](/contributing/translation-program/acknowledgements/#poap) #### 翻訳者の表彰 {#translator-acknowledgements} @@ -60,7 +60,7 @@ ethereum.org は、何千人ものコミュニティメンバーによって翻 #### 報酬 {#rewards} -これまで、アクティブな貢献者には、[開発者会議](https://devcon.org/en/)や[Devconnect](https://devconnect.org/)などのイーサリアム会議のチケットや、ethereum.org の限定グッズを提供してきました。 +これまで、アクティブな貢献者には、[開発者会議](https://devcon.org/en/)や[Devconnect](https://devconnect.org/)などのイーサリアム会議のチケットや、ethereum.orgの限定グッズを提供してきました。 貢献者に報いることができる、新しいイノベーティブな方法を常に検討しています。 @@ -68,16 +68,16 @@ ethereum.org は、何千人ものコミュニティメンバーによって翻 翻訳プログラムに貢献している、または参加を検討中の方は、以下の翻訳ガイドを参照してください。 -- [翻訳スタイルガイド](/contributing/translation-program/translators-guide/) _– ethereum.org 翻訳者向けの説明とヒント_ +- [翻訳スタイルガイド](/contributing/translation-program/translators-guide/) _– ethereum.org翻訳者向けの説明とヒント_ - [翻訳に関するよくある質問](/contributing/translation-program/faq/) _– ethereum.org 翻訳プログラムに関するよくある質問とその回答_ -- [Crowdin オンラインエディタガイド](https://support.crowdin.com/online-editor/) _– Crowdin オンラインエディタと高度な機能を使用するための詳細なガイド_ -- [コンテンツバケット](/contributing/translation-program/content-buckets/) _– ethereum.org のコンテンツバケットに含まれているページ_ +- [Crowdinオンラインエディタガイド](https://support.crowdin.com/online-editor/) _– Crowdinオンラインエディタと高度な機能を使用するための詳細なガイド_ +- [コンテンツバケット](/contributing/translation-program/content-buckets/) _– ethereum.orgのコンテンツバケットに含まれているページ_ 他の有用な翻訳ツール、翻訳コミュニティ、翻訳プログラムのブログ記事については、 [リソースページ](/contributing/translation-program/resources/)を参照してください。 ## お問い合わせ {#get-in-touch} -何かご質問がある場合や 私たちのチームや他の翻訳者とコラボレーションしたい場合は、 [ethereum.org の Discord サーバー](https://discord.gg/ethereum-org)の#translation チャネルに投稿してください。 +何かご質問がある場合や、 私たちのチームや他の翻訳者とコラボレーションしたい場合は、 [ethereum.orgのDiscordサーバー](https://discord.gg/ethereum-org)の#translationチャネルに投稿してください。 または、translations@ethereum.orgまでご連絡ください @@ -85,6 +85,6 @@ ethereum.org は、何千人ものコミュニティメンバーによって翻 私たちはイーサリアムコンテンツをできるだけ多くの言語に翻訳し、教育コンテンツを誰にでも利用できるようにすることに専念しています。 翻訳に焦点を置くのと同様に、他のイーサリアムプロジェクトが、翻訳活動を組織、管理、改善する支援を行いたいと考えています。 -このため、ethereum.org を翻訳する過程で得たきた、ヒントと最善の方法に関する[翻訳プログラムプレイブック](/contributing/translation-program/playbook/)を作成しました。 +このため、ethereum.orgを翻訳する過程で得てきた、ヒントとベストプラクティスを盛り込んだ[翻訳プログラムプレイブック](/contributing/translation-program/playbook/)を作成しました。 コラボレーションのご要望、翻訳リソースの利用、 またはプレイブックについてのご意見があれば、 translations@ethereum.orgまでご連絡ください。 diff --git a/public/content/translations/ja/contributing/translation-program/mission-and-vision/index.md b/public/content/translations/ja/contributing/translation-program/mission-and-vision/index.md new file mode 100644 index 00000000000..5d6e82a6c49 --- /dev/null +++ b/public/content/translations/ja/contributing/translation-program/mission-and-vision/index.md @@ -0,0 +1,25 @@ +--- +title: ミッションとビジョン +lang: ja +description: ethereum.org翻訳プログラムのミッションとビジョン +--- + +# ミッションとビジョン {#mission-and-vision} + +イーサリアムコミュニティはグローバルで包括的であることを目指していますが、そのコンテンツの多くは英語を話す人向けになっており、世界60億人の英語を話さない人たちにとって、排他的なものになっています。 ethereum.orgが世界中のコミュニティのイーサリアムへのポータルとして機能するためには、英語を話さない人に母国語でイーサリアムのコンテンツを提供することが不可欠だと考えています。 + +ethereum.org翻訳プログラムは、ethereum.orgやその他のイーサリアムコンテンツをできるだけ多くの言語に翻訳することで、誰もがイーサリアムを利用できるようにすることを目的としています。 + +## ethereum.orgのミッション {#our-mission} + +- 世界中の訪問者が母国語でEthereumについて学べるようにするために、サイトの翻訳版を提供する +- グローバルなEthereumコミュニティに、より多くのメンバーの参加を促す +- Ethereumの情報と知識をよりアクセスしやすく、より包括的に共有できるようにする +- コミュニティメンバーがEthereumに翻訳を提供し、エコシステムに足跡を残せるようにする +- エコシステムに参加しようとしている熱心な貢献者を特定し、連絡を取り、ガイダンスを提供する + +## 私たちのビジョン {#our-vision} + +- できるだけ多くの国や地域のEthereumコミュニティのメンバーのために、必要なコンテンツを翻訳する +- 言語横断的に知識の共有をサポートし、より多くの情報と知識を持つEthereumコミュニティを構築する +- 英語を話さない人のエコシステムへの参加を妨げる言語の障壁を取り除くことで、Ethereumの包括性とアクセシビリティを向上させる diff --git a/public/content/translations/ja/contributing/translation-program/resources/index.md b/public/content/translations/ja/contributing/translation-program/resources/index.md new file mode 100644 index 00000000000..254b7ea3545 --- /dev/null +++ b/public/content/translations/ja/contributing/translation-program/resources/index.md @@ -0,0 +1,45 @@ +--- +title: 翻訳者のためのリソース +lang: ja +description: ethereum.org翻訳者向けの有用なリソース +--- + +# リソース {#resources} + +ethereum.org翻訳者向けの有用なガイド、ツール、翻訳コミュニティ、最新情報を以下から見つけられます。 + +## ガイド {#guides} + +- [翻訳スタイルガイド](/contributing/translation-program/translators-guide/) _– ethereum.org翻訳者向けの説明とヒント_ +- [翻訳に関するよくある質問](/contributing/translation-program/faq/) _– ethereum.org 翻訳プログラムに関するよくある質問とその回答_ +- [Crowdinオンラインエディタガイド](https://support.crowdin.com/online-editor/) _– Crowdinオンラインエディタと高度な機能を使用するための詳細なガイド_ +- [コンテンツバケット](/contributing/translation-program/content-buckets/) _– ethereum.orgのコンテンツバケットに含まれているページ_ + +## ツール {#tools} + +- [Microsoft Language Portal](https://www.microsoft.com/en-us/language) _– 技術用語の標準的な訳語を検索・確認するのに便利なポータル_ +- [Linguee](https://www.linguee.com/) _– 単語やフレーズでの検索が可能な翻訳・辞書検索エンジン_ +- [Proz term search](https://www.proz.com/search/) _– 専門用語の翻訳辞書・用語集のデータベース_ +- [Eurotermbank](https://www.eurotermbank.com/) _– 42言語の欧州用語集_ + +## コミュニティ {#communities} + +- [言語別のDiscord翻訳グループ](/discord/) _– ethereum.orgの翻訳者を翻訳グループにつなげる取り組み_ +- [中国語翻訳者グループ](https://www.notion.so/Ethereum-org-05375fe0a94c4214acaf90f42ba40171) _– 中国語翻訳者間の調整を容易にするノーションページ_ + +## 最新情報 {#latest-updates} + +最新の翻訳プログラムの進捗状況については、[イーサリアム・ファウンデーションのブログ](https://blog.ethereum.org/)をご覧ください。 + +- [2021年10月マイルストーンの更新](https://blog.ethereum.org/2021/10/04/translation-program-update/) +- [2020年12月マイルストーンの更新](https://blog.ethereum.org/2020/12/21/translation-program-milestones-updates-20/) +- [2020年7月のマイルストーンの更新](https://blog.ethereum.org/2020/07/29/ethdotorg-translation-milestone/) +- [2019年8月翻訳プログラム始動](https://blog.ethereum.org/2019/08/20/translating-ethereum-for-our-global-community/) + +## 翻訳者のためのオフィスアワー {#office-hours} + +毎月第2水曜日に翻訳者のためのオフィスアワーを設けています。 これらは、[ethereum.org Discord](/discord/) の#office-hours ボイスチャンネルで行われ、ここで正確な時間や追加の詳細を確認できます。 + +オフィスアワーには、翻訳者が翻訳プロセスについて質問したり、プログラムについてフィードバックをしたり、アイデアを共有したり、ethereum.orgのコアチームとチャットしたりすることができます。 最終的に、この会話を通じて、翻訳プログラムの最新動向を伝えて、重要なヒントや指示を貢献者の皆様と共有したいと考えています。 + +ethereum.org の翻訳者、または翻訳者になりたい方は、これらのセッションのいずれかにお気軽にご参加ください。 diff --git a/public/content/translations/ja/contributing/translation-program/translators-guide/index.md b/public/content/translations/ja/contributing/translation-program/translators-guide/index.md index 8adbf26bd58..6cb7d4cd633 100644 --- a/public/content/translations/ja/contributing/translation-program/translators-guide/index.md +++ b/public/content/translations/ja/contributing/translation-program/translators-guide/index.md @@ -4,19 +4,19 @@ lang: ja description: ethereum.org翻訳者向けの説明とヒント --- -# ethereum.org 翻訳スタイルガイド {#style-guide} +# ethereum.org翻訳スタイルガイド {#style-guide} -ethereum.org 翻訳スタイルガイドには、翻訳者向けの最も重要なガイドライン、説明、ヒントを記載しています。ウェブサイトのローカライズに役立ててください。 +ethereum.org翻訳スタイルガイドには、翻訳者向けの最も重要なガイドライン、説明、ヒントを記載しています。ウェブサイトのローカライズに役立ててください。 本ドキュメントは一般的なガイドであり、特定の言語に固有のものではありません。 -ご質問やご意見などございましたら、translations@ethereum までお気軽にお問い合わせください。または Crowdin で@ethdotorg にメッセージを送るか、 [Discord](https://discord.gg/ethereum-org)に参加して、#translation チャンネルでメッセージ、またはチームメンバーに直接連絡を取ることも可能です。 +ご質問、ご提案、ご意見などございましたら、translations@ethereum.orgまでお気軽にお問い合わせください。またはCrowdinで@ethdotorgにメッセージを送るか、 [Discordに参加](https://discord.gg/ethereum-org)して、#translationチャンネルでメッセージ、またはチームメンバーに直接連絡を取ることも可能です。 -## Crowdin の使用 {#using-crowdin} +## Crowdinの使用 {#using-crowdin} -Crowdin でプロジェクトに参加する方法と Crowdin オンラインエディタの使い方については、 [翻訳プログラムページ](/contributing/translation-program/#how-to-translate)に基本的な事項が紹介されています。 +Crowdinでプロジェクトに参加する方法とCrowdinオンラインエディタの使い方については、 [翻訳プログラムページ](/contributing/translation-program/#how-to-translate)に基本的な事項が紹介されています。 -Crowdin の詳細とその高度な機能の一部を使用したい場合は、 [Crowdin のナレッジベース](https://support.crowdin.com/online-editor/)に Crowdin のすべての機能の詳細なガイドと概要が記載されています。 +Crowdinの詳細とその高度な機能の一部を使用したい場合は、 [Crowdinのナレッジベース](https://support.crowdin.com/online-editor/)にCrowdinのすべての機能の詳細なガイドと概要が記載されています。 ## メッセージの本質を捉える {#capturing-the-essence} @@ -44,7 +44,7 @@ ethereum.org コンテンツを翻訳するときは、直訳はしないでく ## 表記方法 {#writing-system} -ethereum.org は多くの言語で利用可能で、ラテンではない翻訳言語で表記します。 +ethereum.orgは多くの言語で利用可能で、ラテンではない翻訳言語で表記します。 すべてのコンテンツは、翻訳言語の適切な表記方法を使って翻訳し、ラテン文字を使用した単語を含めないでください。 @@ -58,11 +58,11 @@ ethereum.org は多くの言語で利用可能で、ラテンではない翻訳 ページによっては、「title」、「lang」、「description」、「sidebar」などのメタデータを含むものもあります。 -Crowdin に新しいページをアップロードする際、翻訳者が翻訳すべきではないコンテンツは非表示にしています。つまり、Crowdin の翻訳者に表示される、これらのメタデータはすべて翻訳する必要があります。 +Crowdinに新しいページをアップロードする際、翻訳者が翻訳すべきではないコンテンツは非表示にしています。つまり、Crowdinの翻訳者に表示される、これらのメタデータはすべて翻訳する必要があります。 -ソースが「en」の文字列を翻訳する場合は特に注意してください。 これは、ページで利用可能な言語を表し、あなたの言語の [ISO 言語コード](https://www.andiamo.co.uk/resources/iso-language-codes/)に変更する必要があります(日本語の場合は「ja」)。 これらの文字列は翻訳先の言語に固有の文字を書くのではなく、ラテン文字を使う必要があります。 +ソースが「en」の文字列を翻訳する場合は特に注意してください。 これは、ページで利用可能な言語を表し、あなたの言語の [ISO言語コード](https://www.andiamo.co.uk/resources/iso-language-codes/)に変更する必要があります(日本語の場合は「ja」)。 これらの文字列は翻訳先の言語に固有の文字を書くのではなく、ラテン文字を使う必要があります。 -自分の言語コードが不明な場合は、 Crowdin で翻訳メモリを確認するか、Crowdin のオンラインエディタのページの URL で言語コードを確認することができます。 +自分の言語コードが不明な場合は、 Crowdinで翻訳メモリを確認するか、CrowdinのオンラインエディタのページのURLで言語コードを確認することができます。 最も広く使われている言語コードの例: @@ -80,21 +80,21 @@ Crowdin に新しいページをアップロードする際、翻訳者が翻訳 ![外部記事のタイトルsidebar.png](./article-titles-in-sidebar.png) ![エディタの外部記事のタイトルeditor.png](./article-titles-in-editor.png) -## Crowdin の警告 {#crowdin-warnings} +## Crowdinの警告 {#crowdin-warnings} -Crowdin には、間違いを防ぐための翻訳者に警告する機能が組み込まれています。 ソースにあるタグがターゲットに入っていない、翻訳するべきではない要素を翻訳、複数の連続したスペース、文末の句読点がない場合など、翻訳を保存する前に Crowdin が自動的に警告します。 このような警告が表示された場合は、翻訳に戻り、警告メッセージを再確認してください。 +Crowdinには、間違いを防ぐための翻訳者に警告する機能が組み込まれています。 ソースにあるタグがターゲットに入っていない、翻訳するべきではない要素を翻訳、複数の連続したスペース、文末の句読点がない場合など、翻訳を保存する前にCrowdinが自動的に警告します。 このような警告が表示された場合は、翻訳に戻り、警告メッセージを再確認してください。 **これらの警告は、通常は何かが間違っている、またはソーステキストの重要な部分が欠落していることを意味するため、無視しないでください。** -Crowdin 警告の例(タグの追加漏れ):![Crowdinの警告例](./crowdin-warning-example.png) +Crowdin警告の例(タグの追加漏れ):![Crowdinの警告例](./crowdin-warning-example.png) ## タグとコードスニペット {#dealing-with-tags} -多くのソースコンテンツにはタグと変数が含まれており、Crowdin エディタでは黄色にハイライト表示されます。 これらは異なる機能を提供し、それぞれ正しく翻訳する必要があります。 +多くのソースコンテンツにはタグと変数が含まれており、Crowdinエディタでは黄色にハイライト表示されます。 これらは異なる機能を提供し、それぞれ正しく翻訳する必要があります。 -**Crowdin の設定** +**Crowdinの設定** -タグを簡単に管理し、ソースから直接コピーできるように、Crowdin のエディタで下記のように設定を変更することをお勧めします。 +タグを簡単に管理し、ソースから直接コピーできるように、Crowdinのエディタで下記のように設定を変更することをお勧めします。 1. 設定を開きます![エディタで設定を開く方法](./editor-settings.png) @@ -108,7 +108,7 @@ Crowdin 警告の例(タグの追加漏れ):![Crowdinの警告例](./crowdin-war **リンク** -ethereum.org または他のウェブサイトのページへのフルリンクがある場合があります。 +ethereum.orgまたは他のウェブサイトのページへのフルリンクがある場合があります。 リンクはソースと全く同じである必要があります。変更や翻訳はしないでください。 リンクの翻訳、変更、またはバックスラッシュ(/)の削除などの一部の変更だけでも、そのリンクは壊れ、機能しなくなります。 @@ -116,7 +116,7 @@ ethereum.org または他のウェブサイトのページへのフルリンク ![リンクの例link.png](./example-of-link.png) -また、リンクはタグ形式でソーステキストにも表示されます(例:<0>)。 タグにカーソルを合わせると、エディタはフルコンテンツが表示されます。これらのタグはリンクを指定している場合があります。 +また、リンクはタグ形式でソーステキストにも表示されます(例: <0> ). タグにカーソルを合わせると、エディタにはフルコンテンツが表示されます。これらのタグはリンクを指定している場合があります。 ソースからリンクをコピーして、タグの順序を変更しないことが非常に重要です。 @@ -130,7 +130,7 @@ ethereum.org または他のウェブサイトのページへのフルリンク タグは常に開始タグと終了タグのペアです。 ほとんどの場合、タグの開始と終了の間のテキストは、翻訳する必要があります。 -例: ``Decentralized`` +例: ``Decentralized`` `` - _テキストを太字にする開始タグ_ @@ -158,9 +158,9 @@ nonce - _翻訳しないテキスト_ ![不明なタグの例tags.png](./example-of-ambiguous-tags.png) -## 短縮語/略語 {#short-vs-full-forms} +## 短縮語、非短縮語/略語 {#short-vs-full-forms} -本ウェブサイトでは dapp、NFT、DAO、DeFi など多くの略語が使用されています。 これらの略語は英語で一般的に使用されており、ウェブサイトの多くの訪問者はそれらが何を意味するのか知っています。 +本ウェブサイトではdapp、NFT、DAO、DeFiなど多くの略語が使用されています。 これらの略語は英語で一般的に使用されており、ウェブサイトの多くの訪問者はそれらが何を意味するのか知っています。 これらの用語は、他の言語で確立された翻訳がないことが多いため、省略していない原語をフルで翻訳し、英語の略語を括弧で追加します。 @@ -172,7 +172,7 @@ nonce - _翻訳しないテキスト_ ## 確立された翻訳のない用語 {#terms-without-established-translations} -いくつかの用語は、他の言語では確立された用語がない場合があり、元の英語の用語の方が広く知られていることがあります。 このような用語には、主に、proof-of-work、proof-of-stake、Beacon Chain、staking などを含む比較的新しい概念のものが含まれます。 +いくつかの用語は、他の言語では確立された用語がない場合があり、元の英語の用語の方が広く知られていることがあります。 このような用語には、主に、proof-of-work、proof-of-stake、Beacon Chain、stakingなどを含む比較的新しい概念のものが含まれます。 英語版は他の言語でも使われているため、これらの用語を翻訳すると不自然さを感じることがありますが、 翻訳することを強く推奨します。 @@ -180,7 +180,7 @@ nonce - _翻訳しないテキスト_ **大半の用語を英語ではなく、各言語に翻訳するのは、 イーサリアムと関連技術がより多くの人々に使われるにつれて、これらの新しい用語が将来、より広く普及するであろうという考えによるものです。 世界中のより多くの人々にイーサリアムを使用してもらうため、たとえ造語であっても可能な限り多くの言語で理解できる用語を提供する必要があります。** -## ボタンと CTA {#buttons-and-ctas} +## ボタンとCTA {#buttons-and-ctas} 本ウェブサイトには多数のボタンが含まれており、他のコンテンツとは異なる翻訳が必要です。 @@ -192,7 +192,7 @@ nonce - _翻訳しないテキスト_ ## 包括性を踏まえた翻訳 {#translating-for-inclusivity} -ethereum.org には、世界中から、さまざまな背景を持った訪問者が来ます。 そのため、ウェブサイトは中立的、かつ非排他的、すべての人を歓迎するものである必要があります。 +ethereum.orgには、世界中から、さまざまな背景を持った訪問者が来ます。 そのため、ウェブサイトは中立的、かつ非排他的、すべての人を歓迎するものである必要があります。 これの重要な側面は、ジェンダーの中立性です。 フォーマルな呼称を用いること、訳語に性別を特定するような言葉の使用は、避けてください。 @@ -200,7 +200,7 @@ ethereum.org には、世界中から、さまざまな背景を持った訪問 最後に、すべての訪問者と年齢層に適している必要があります。 -## 言語別の翻訳 {#language-specific-translations} +## 言語特有の翻訳 {#language-specific-translations} 翻訳するときは、ソースからコピーするのではなく、翻訳言語の文法ルール、規定、書式に従うことが重要です。 ソースは英語の文法ルールと規則に従っており、他の多くの言語には当てはまりません。 @@ -247,16 +247,16 @@ ethereum.org には、世界中から、さまざまな背景を持った訪問 - 英語では、単語間や単語の異なる部分を結合するためにハイフン(-)が使用されます。対して、範囲を示したり、中断を入れるためにダッシュ(-)が使用されます。 - 言語により、ハイフンとダッシュの使用ルールが異なります。 -### フォーマット {#formats} +### 書式 {#formats} **数字** -- 数字の表記に関する言語による主な違いは、小数と 3 桁の区切りに使用される区切り文字です。 千の単位の場合、ピリオド、カンマ、スペースが使われることがあります。 同様に、小数点を使用する言語もあれば、小数点にコンマを使用する言語もあります。 +- 数字の表記に関する言語による主な違いは、小数と3桁の区切りに使用される区切り文字です。 千の単位の場合、ピリオド、カンマ、スペースが使われることがあります。 同様に、小数点を使用する言語もあれば、小数点にコンマを使用する言語もあります。 - 数字の表記の例: - 英語 ー **1,000.50** - スペイン語 ー **1.000,50** - フランス語 ー **1,000,50** -- 数字を翻訳する際、気を付けるべきもう一つ重要な事項は、パーセント記号です。 **100%**、**100 %**または**%100**と異なる表記方法があります。 +- 数字を翻訳する際、気を付けるべきもう一つ重要な事項は、パーセント記号です。 **100%**、**100 %**または**%100**と異なる表記方法があります。 - 最後に、マイナスの数字は言語により、 -100、100-、(100)、または[100]と表記方法が異なります。 **日付** @@ -276,17 +276,17 @@ ethereum.org には、世界中から、さまざまな背景を持った訪問 - 通貨の表記に関する言語間の主な違いは、記号の位置、小数点または小数点にコンマを使用、スペース、および記号または略語での表記があります。 - 記号の位置: $100または100$ - 小数点にコンマを使用、または小数点: 100,50$または100.50$ - - スペース: 100$または 100 $ - - 記号または略語: 100 $または 100 USD + - スペース: 100$または100 $ + - 記号または略語: 100 $または100 USD **測定単位** - 原則として、単位はソースと同じにします。 あなたの国が別の単位を使用している場合は、括弧内に変換した数値と単位を記載することができます。 -- 測定単位以外にも、言語によるこれらの単位の表記方法の違いについても注意することも重要です。 主には、数字と単位のスペースが言語により異なります。 例: 100kB と 100 kB、 50ºF と 50 ºF など +- 測定単位以外にも、言語によるこれらの単位の表記方法の違いについても注意することも重要です。 主には、数字と単位のスペースが言語により異なります。 例: 100kBと100 kB、 50ºFと50 ºFなど ## まとめ {#conclusion} -ethereum.org を翻訳することでイーサリアムのさまざまな側面について学ぶことができます。 +ethereum.orgを翻訳することでイーサリアムのさまざまな側面について学ぶことができます。 翻訳するときは、慌てないようにしてください。 また気負わず、気楽に楽しむようにしてください。 diff --git a/public/content/translations/ja/developers/docs/accounts/accounts.svg.xlsx b/public/content/translations/ja/developers/docs/accounts/accounts.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..047813c899563f0b44bb7e1a20aa9c0b43e78008 GIT binary patch literal 4855 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 Q8}X4>Dl!AG0I1df0oJ^-+5i9m literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/developers/docs/bridges/index.md b/public/content/translations/ja/developers/docs/bridges/index.md index f5c8777ef55..89958533ed4 100644 --- a/public/content/translations/ja/developers/docs/bridges/index.md +++ b/public/content/translations/ja/developers/docs/bridges/index.md @@ -42,7 +42,7 @@ L1のブロックチェーンおよびL2の[スケーリング](/developers/docs - **ネイティブブリッジ** - 通常、特定のブロックチェーンにおいて流動性を自動供給するための構築されたブリッジであり、当該エコシステムに対する資金の転送を容易にするものです。 例えば、[ Arbitrumブリッジ](https://bridge.arbitrum.io/)は、イーサリアムからArbitrumへの資金転送を容易にするために開発されたブリッジです。 この種類のブリッジとしては、Polygon PoSブリッジや[Optimismゲートウェイ](https://app.optimism.io/bridge)等があります。 - **バリデータ/オラクルベースのブリッジ** - クロスチェーン間の転送につき、外部のバリデータ群またはオラクルによる検証に依存するブリッジです。 MultichainやAcrossが含まれます。 -- **一般的なメッセージの受け渡しを伴うブリッジ** - チェーン間の資産転送につき、メッセージおよび任意のデータと共に実行するもの。 NomadやLayerZeroが含まれます。 +- **一般的なメッセージの受け渡しを伴うブリッジ** - チェーン間の資産転送につき、メッセージおよび任意のデータと共に実行するもの。 例: Axelar、LayerZero、Nomad。 - **流動性ネットワーク** - 主に、アトミック・スワップによるチェーン間の資産転送に焦点をあてたブリッジです。 通常、この種類のブリッジはチェーン間のメッセージの受け渡しには対応しません。 ConextやHopが含まれます。 ## 考慮すべきトレードオフ {#trade-offs} @@ -120,7 +120,7 @@ Dappにブリッジやブリッジアグリゲーターを組み込む場合、 - [The Graph](https://thegraph.com/en/) - [Tenderly](https://tenderly.co/) -## さらに学びたい方へ {#further-reading} +## 参考文献 {#further-reading} - [ブロックチェーンにおけるブリッジ](/bridges/) - ethereum.org - [ブロックチェーンにおけるブリッジ: クリプトネットワークのネットワーク構築](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) 2021年9月8日、ドミトリー・ベレンゾン作成。 diff --git a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md index c1495e53b48..e3d0cda01d3 100644 --- a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md +++ b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md @@ -133,7 +133,7 @@ lang: ja しかしながら、最悪の事態においても現実世界において解決策を見出せるという事実には、やや安堵感を覚えます。 究極的に、私たちが利用しているこの驚くべきテクノロジースタックにおいても、最悪の事態が発生した場合には、ユーザーである実際の人間たちが議論を通じて解決策を見出すしかないのです。 -## 要約 {#summary} +## まとめ {#summary} この記事では、イーサリアムにおけるプルーフ・オブ・ステークのコンセンサス・プロトコルを悪用する攻撃手法のいくつかについて説明しました。 攻撃者のステークがイーサ全体に対してどの程度の割合を占めるかに応じて、再編成攻撃やファイナリティ遅延攻撃がどのように変化するのかについても掘り下げました。 一般論として、資金が潤沢である攻撃者は、より大きな投票権を持ち、以後のブロックの内容に対して影響力を及ぼせるため、攻撃が成功する可能性が高まります。 攻撃者の攻撃能力は、ステークしたイーサの割合が特定のしきい値を越えるに従って増加します: @@ -151,7 +151,7 @@ lang: ja 一方で、34%攻撃、51%攻撃、あるいは66%攻撃に対しては帯域外のソーシャルな連携による解決が必要になる場合が多いです。 これはユーザーコミュニティにとって痛みを伴うものですが、帯域外での連携による対応が可能だという事実は、攻撃者にとって大きな抑止効果を持ちます。 イーサリアムのソーシャルレイヤーは最終的な防御手段であり、攻撃が技術的に成功した場合でも、コミュニティが誠実なフォークを選択することに同意できれば、攻撃を無力化することができます。 これは、攻撃者とイーサリアム・コミュニティとの間の争いとなるでしょう。つまり、66%攻撃を実行するために数十億ドルもの資金を投じたとしても、ソーシャル連携を通じて反撃を迅速に実行できれば、攻撃者は、イーサリアム・コミュニティにとって無意味である既知の不正チェーンにステークされた、換金不可能なイーサを背負い込むことになるだけだからです。 攻撃者にとってはこの攻撃から利益を上げられる可能性が非常に低くなるため、事実上の効果的な抑止力として機能します。 これこそ、緊密に連携した価値観に基づき、団結力を持つソーシャルレイヤーを維持するために投資することが重要である理由です。 -## さらに学びたい方へ {#further-reading} +## 参考文献 {#further-reading} - [本記事の詳細版](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs) - [ヴィタリックによる決済のファイナリティに関する説明](https://blog.ethereum.org/2016/05/09/on-settlement-finality/) diff --git a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attack-and-defense/reorg-schematic.svg.xlsx b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attack-and-defense/reorg-schematic.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..99d8e2992007f90d4db943b592703d153842f061 GIT binary patch literal 5003 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 literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attestations/attestation_schematic.svg.xlsx b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attestations/attestation_schematic.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..60a99a0854aefeba656036f750ed1b95de5e217c GIT binary patch literal 5032 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 D+>RbM literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attestations/index.md b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attestations/index.md index 4781eef7f97..0bcb9b567c6 100644 --- a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attestations/index.md +++ b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/attestations/index.md @@ -87,6 +87,6 @@ lang: ja ## 参考文献 {#further-reading} - [Vitalikのコンセンサス仕様(注釈付)におけるアテステーションの説明](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata) -- [eth2book.infoにおけるアテステーションの説明](https://eth2book.info/altair/part3/containers/dependencies#attestationdata) +- [eth2book.infoにおけるアテステーションの説明](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata) -_役に立つコミュニティリソースをご存知の場合は、 このページを編集して追加してください。_ +_役に立ったコミュニティリソースがあれば、 ぜひこのページに追加してください。_ diff --git a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/faqs/index.md b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/faqs/index.md index 70a848b064c..14cb7a577f5 100644 --- a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/faqs/index.md +++ b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/faqs/index.md @@ -26,7 +26,7 @@ lang: ja プルーフ・オブ・ステークのネットワークに含まれる各ノードは、ごくわずかの電力しか消費しません。 あるサードパーティ調査によれば、イーサリアムにおけるプルーフ・オブ・ステークのネットワーク全体で消費される電力は年間0.0026TWhであり、米国のゲーム用途の電力消費量と比較するとおよそ1万3,000分の1に過ぎません。 -[イーサリアムのエネルギー消費についての詳細](/energy-consumption) +[イーサリアムのエネルギー消費についての詳細](energy-consumption/) ## プルーフ・オブ・ステークは安全ですか? {#is-pos-secure} diff --git a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/index.md b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/index.md index fb8f5a274ec..fbaa0b3c8e8 100644 --- a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/index.md +++ b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/index.md @@ -45,7 +45,7 @@ lang: ja スラッシングされるイーサの額は、ほぼ同時にスラッシング対象となるバリデータの数に応じて異なります。 これは[相関性ペナルティ](https://eth2book.info/bellatrix/part2/incentives/slashing#the-correlation-penalty)と呼ばれており、スラッシングされる額がわずかである場合(1名のバリデータにおけるスラッシング額がステーキングした全体の1%未満である場合)から、ステーキング残高の100%が没収される場合(大規模なスラッシングイベント)までさまざまです。 スラッシングは、1日目には即時のペナルティ(最大1イーサまで)で科され、18日目にはコリレーション・ペナルティが科され、最終的に36日目にはネットワークからの強制退出が実行されます。そのため、コリレーション・ペナルティは、強制退出に至る期間の中間点で実行されることになります。 バリデータがネットワークに参加していても、投票を実行しない場合、アテステーションに対する軽微なペナルティが毎日科されます。 これらの防御システムはすべて、組織的な攻撃者による攻撃が非常にコスト高になるように設計されています。 -## フォーク・チョイス {#fork-choice} +## フォークの選択 {#fork-choice} ネットワークが最適化された誠実な方法で実行されている場合、チェーンの先頭には常に新規ブロックが1つだけ存在し、すべてのバリデータがこの新規ブロックに対してアテステーションを実行しています。 しかし、ネットワークが遅延したり、ブロック提案者が曖昧化を実行した場合、各バリデータに対するチェーンの先頭のビューが異なる可能性があります。 このため、コンセンサスクライアントでは、どのフォークを支持すべきかについてのアルゴリズムが必要になります。 イーサリアムのプルーフ・オブ・ステークで採用されているアルゴリズムは[LMD-GHOST](https://arxiv.org/pdf/2003.03052.pdf)と呼ばれ、履歴においてアテステーションの重みが最大であるフォークを特定する方式です。 diff --git a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/keys/multiple-keys.svg.xlsx b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/keys/multiple-keys.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b65db0e4cf126ce9a3535a355e4bb6849b8c1d7a GIT binary patch literal 4966 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 literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/keys/validator-key-schematic.svg.xlsx b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/keys/validator-key-schematic.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7b75f9dce3dac6dbb1572faf3f52856290752923 GIT binary patch literal 5102 zcmaJ_2RNJi_m53W#9p;3Rur+R9W6?YD%Yq{BegdbqxM##v6Xv^QWPywdlR!pwW{_W z6{9FEHU3F^fB(9D?(IpQ_sRR@{hsGNpYP|K&pBURO#(t%04XUcz#E)v1UP3j*xz?l zTwT22E?yS;zHV?&Ga-bt)2rM4+8t2PG5#s%E}evn3`cm@LF*!^dJ3h{hL-iHuF`= zx|Kphme2uJ@tloLs+~u|7d@oIFkUKWp6yd$uks4qq>t2rNHaxhai>hb&Gxfz${nD{ zV+AV;$H#F|fh`5)gq?Qrp|6|4$uSG|-FID4X8npw&W#EpVpkdYX(qPFC3r^mivjuX zAdR~N;QSp6>fG{p80)(Uca0k&oOTW%6lz)Wse#nC#4N`$gWFAr&mVzd;07o^W$K@^ zBoaxwEvudJg`C2Q!0fkC+AraQoC5^cx_h}XL;i6c5k5UKsbWDFFCo{10~_t0%cKDx zo^1|1hJ}bwCr@D^+%$j%}u@di|NUSdx3?e>AqH!pDj5Ap7eO! zwWIsk#*8<1&?pbMc*{hPx03HJ8sPnkUs$>~!v&^T+e&Q}7ObG^vm{r zOR+yg)wMR+A%*x*Xz0sS3ybc9jM6vw0r?m2Zmxe~e_ZdPi@5Cl*PAYOI*S;vrYrP< z5zi@DaVEO!N^a|OWRRRu)AvxHy5@3JVgupBhWp>4(qf-LI0<{&S$e>2ZhLvyyV!c- z7&h>3NV5YW%Qw$f;lLxp=*m+TT_ayP_Q80P!+Vwv z#(cFWLJh{>@Hi#*UeAKkJEYK}$w9I>@Tt&SNxJD2B0(xqo<-m*Ezg`T<<6KlH${cy z7mPZ45MD_YW#~|a%e!VD^XrunD*NG3n0LHeL^qATPmwCAHKCHUckySlt3yHC?i=WG zhoZIVv_l!#DVlwB_rA4Z3*J22Jk_XJ34aMgc&^YHZ!9!J>dR{2d+M6>T2$x$@x5(I z^b?DNAc-T_yz8eWB)SxzyOz=8C2dX!z=G8l`n#%~G5_yc7d z4@(~$z`}q35WyjxGi>J44kah~M6&@jn6Wouq*0+YAJ&Ef=eS*19wqhx^QQveXh_=o zv^g zc6rm^{8=T{gNGd^8h^-Nof9Qrds{`Z#8HU6T1+;0&Jv#{Pq zkVUY#cd9iOUM+Fqi*nATBWccXdaEO%FZbq3i%H6F$?G2Dbp?fr#o|Xvra@{k{Nw7d z6FD;JQ|A5Y9=+ziQH!2w+HO2nosKJYDtEr6*=xGOsdwB}~$kgvQ-vRwQ zXEiUhLqWuI*qnv>C%=z~7T;72cPU`It6oUy#0K7ZGx<0^Z?1j$^-w^Eg#@J-iX}o? zMj&^I2wK_qu@^`^IPKm5k3xYhb4j(DO0>nT`=s2n18kToZnbA1XD?EXsuOeh z{OP3a$3R{v7paWUXSk&96l*2W{tRzFz1KvLv#Or(z2Kjx6=t(Ku|RDzit*2j5yN=f zbw)fQrC~Sm~-zF_i6|hO`We0bL|G0h+e86zh zWr_oI5_(Fo(9|~8#NTkM^05KCiNSjHx>&_dLE8s>N&C}gMt|o3&AfYDa0~oJu_!UI z)};RDElfm|;c?=&j&>GCAQ1hMW#59t@xJGoFJ4GeMnuNS!_s*gs!tAkAE{s1z(ny= zWN8E%BV$s~7dWZ-#ON7(l{1d$m*qP2w0s}J64>dSRUcU!i>1t`v`zfg(xsS~C(h9z zCw(uxH#VFmwg4%FtO9|c+5GWQ;UNCG74U8vazrI1GI&?zNh;;b`6jbdD!JxKJs=y@ zOhxmIW5P6#SZNtlGuFavNYL)T%B}Ehfn~ujfH^o!>AHyNq$mC9%<~H3B4%Kn>kIj@ zeOW}*DA|5aV&Q3`fMlx(17nGqWeum`;=Tn()^aN;Z3g10d?*1Q87@{Ds`|=2UVn zl${x@`_ZVBrneA55mACsOWWz977SN$euAC`03&gg9%z==&Wwt?#8FB(~Tn2_P{*7gmU#oKrkPt_(`tZX;_xJp9(WJ zw%t2OlKkvPfAMzkiyIcg?M9^n?W|NHJ{G*~)q@3AGI>^(iqG(w3~rGS%~d*nH7_8I z2Hd7j^Da5o8I|`hc!nIOm}DYz{g_iW!b;V39}^3$whUDnk@~Cdeg86|IOi7A9@_sM zGsQM>U%l9;qQPv8Ko)?(k+B$alL7_XA){9bwl8Jl4JoBLQIyhbic5&L0jBCP_D8zCJ%bf)0UJu12SedWTnI^Kxs9rL$SA>YC zwKpJw63V|--rgR`w&U3Ay|ZzW)tKAIYPg&@?){R94YkcW@0Do z@<7Ej$|R2lSWB&Ko7gl8?3aGgne44RB*7&bJU_&e4_j!;fWIp?6h9Kp)63Th{zDe^ zwOq5Ipc8>K;q1!Ds*)_yXph|Wf^??>^LUXsx*!gJ$%xaV1Q9QvSH;W*@+ky}nb(b9 zt|aoa^W^u&eO8va14j!DMOU?Z_pz01V4CX=Gadn^?wiUAJa(h$gCFsu^tx8(%QC(uLu8t`i| z>`M`tSo%YuXQe_BZwG0D>;xvn4|lJ9@Zh>VpKoZYX17xjs%pH-)kE#*$14;K=ljHx z^~(B?a6{k3V&d8pA$LWNCTA!I#!oR(-EoJMWWuXzJ?h{IJsm z(ex9edLDNjJYZa-_Y|glJKUK_JTr+#-?Nesg~hnmqsw%3HA1?!l&{OioU`rv^s~aR8Ao$TqmgFh!;l& z9k)Eb5p2aJBl;Z~D1R!Cm8+}cckM=MVznC-sWU8lZ6?h6nn1Mr2mMs+cY>|;1C7)giUjL9+LgNy(6|tNG&57sx3!4a3mMBfcG6LMJhi69nnG_|d9w4YHbb zJ5sr&U@NOoQ)39;3vE;K4~Q_tuw34QB7IiXEPHl0RkH0+fki!Ov7})oT|1)Bu*b5T zTq}%BTSMu7AwA532^!B4n@v17lau3W##@bUGMi~do}jwcc0Bsu?=`Zsd1}`990>ZK zvd0vpR45in1O>z$nwZ`Mi&2W5^ne~&#ZE>&Lzk~cS#FFliDblIST70zr?Hp@-nS)3 zO~#YNyy1x%qSZcDE+^Ali+-dFxwy-U!QZ-AetkAFK`ZXN`fK&&m8oI(fakaB&-`N# zen>v92l(Gkd>8#Pq_P8cEV_=}j_C2R%49u_m~1URo5?~F(8veT3T{rViKBxY$+@c_ z7=wAt8T$Ba*ba5V?6(ub@6#qw6iZF$N8_}5hiE%0{TnYRv#O?^l8x?RhUJ}EXY-1& zPO))sk&D0`;}EXcA-#KxZo_q?RPwXpoD^9`g@33zC)8iBgY>Iqt}y9Z*u*v&Bpp=a zyEAf~^2&;9*}5^jwpY?Ign)Ohcs$V-M21@UN>*9S<0@jP>Ak{V>b*Uz_B)ssqOYU7LPjo-?8@Z z*7IDy^s`gSNz-&)fYPd-X>>*!+}NT>48|XQtv~8zXs~D05W|0Kk#T(GO^~8C;PF8h zbrw;ldw_z)xSIR!xBQ}fdBb|-fCp*54dYH>5`45#Fsda;eg@v5&hkE`G>yUns94K3 z^I|tlf7`F4F6PSY+VWlN*Y~Nq>p!@)eO7nzwf?KLfco`^JNxvQvW3zOj$7Rs;I~FE zOPI2$>DSZ9>&y*_f|AhMpSrSPv@bF%Mlo8iM$^UJ!R~pGly@G^su8rS;5*7xd)93Y zp_MvBF$-z2gtxaFHgn>qCLrd|>qXhk%!KZ>T-wk_N!w1q=Z=}Qno7u~GhQ}ZLYXXk*shn%4?#v`Eg8-h zWnU~?%BT~kC#0`CTTdh)Qo9o{%t4UAVZ+U$(XR%5Uk+A^j|t5ZA8bfY4H|D$JzC&Z z)WQoZT5_y@K0s-FR;Gcfcp#lsSblb$ZECL9PSSqyqA_OcEc-ql$)lpIx2dcRnE7Kc z3*6Z71KFmA-`&VE4{pjw4&4*2)jI=v_12pYCl0m@Z?J9Od3U;D7xhHtrOKxZA%S3T zbq&ylS{IOs2E3`p1Iz^3OeNlA73J=E%AP4>qnc!|h?D_y#mQmRR)Co_V2m2aj(;Y| zjxD&H5Ky0kN7O0{kf$cR0(gO^OUc23kDv)I0pKyT_5 z^@3~gMKy>T0m8(u`RQ~CnwT?mA#=ojQc3k8xnmup-$Lp`@T7(tLgcrjgIU(5mDY)g zr@;~igPE&q$ zaDH;e9R>Wf``7|??qJ~8h3AJs++h9FEV1wUZ)5ha9?s7|xXk@&-PpQ__3*DF8DX+6%Om=Ts8RD>FHO8=ewnULP}5kucOGX4$dnquBrNIL1aIW`TrK{*QMu$ z0Vlyf?ICt^{to7UGVtr-^EDEu9X}0(eGTm5|4@=&{ha69KlcTOZ6N=N=+FA9t4V}~ R2LQN${bXSopg@JY`#<プルーフ・オブ・ステークにより安全が確保されています。 詳細については、マージプルーフ・オブ・ステークおよびステーキングを参照してください。 このページについては、これまでのイーサリアムの歩みを学ぶための参考としてお読みください。 -[Ethash](https://github.com/ethereum/wiki/wiki/Ethash)は、 [ダガーハシモト](/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto)アルゴリズムの改良版です。 Ethashプルーフ・オブ・ワークは、[メモリハード](https://wikipedia.org/wiki/Memory-hard_function)になっており、アルゴリズムでASIC耐性が高まると考えられました。 最終的には、Ethash ASICが開発されましたが、GPUマイニングは、プルーフ・オブ・ワークが停止されるまでが実行可能なオプションでした。 Ethashは現在でも、イーサリアム以外のプルール・オブ・ワーク・ネットワークで他のコインのマイニングに使われています。 +[Ethash](https://github.com/ethereum/wiki/wiki/Ethash)は、[ダガーハシモト](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto)アルゴリズムを部分的に修正したバージョンです。 Ethashプルーフ・オブ・ワークは、[メモリハード](https://wikipedia.org/wiki/Memory-hard_function)になっており、アルゴリズムでASIC耐性が高まると考えられました。 最終的には、Ethash ASICが開発されましたが、GPUマイニングは、プルーフ・オブ・ワークが停止されるまでが実行可能なオプションでした。 Ethashは現在でも、イーサリアム以外のプルール・オブ・ワーク・ネットワークで他のコインのマイニングに使われています。 ## Ethashの仕組み {#how-does-ethash-work} diff --git a/public/content/translations/ja/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md b/public/content/translations/ja/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md index beff73edf7c..03eac038636 100644 --- a/public/content/translations/ja/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md +++ b/public/content/translations/ja/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/index.md @@ -24,13 +24,13 @@ lang: ja ダガーハシモトは、ダガーとハシモトアルゴリズムを修正したものです。 ダガーハシモトとハシモトの違いとしては、ブロックチェーンデータをソースとして使わず、ダガーハシモトは、カスタム生成のデータセットを使い、Nブロックごとにブロックデータを基にして更新します。 このデータセットは、ダガーアルゴリズムを使って生成され、ライトクライアント検証アルゴリズムのための、各ノンス (nonce)に特有なサブセットで効率的な計算を可能にします。 ダガーハシモトとダガーの違いとしては、オリジナルのダガーとは異なり、ブロックのクエリーとして使われるデータセットは、半永続的で、周期的な間隔で更新(例: 1週間に一回)されるだけということです。 データセットを生成する労力の割合はゼロに近く、共有メモリの高速化に関するSergio Lernerの主張は、無視できるようになります。 -[ダガーハシモト](/developers/docs/consensus-mechanisms/pow/mining-algorithms/dagger-hashimoto)の詳細 +[ダガーハシモト](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto)の詳細 ## Ethash {#ethash} Ethashは、現在は廃止となっているプルーフ・オブ・ワークのアーキテクチャの下で、実際にイーサリアムメインネットで使われたマイニングアルゴリズムです。 Ethashは、ダガーハシモトのアルゴリズムが大幅に更新された後に、特定のダガーハシモトのバージョンに事実上付けられたた新しい名前です。なので、前バージョンの基本理念を継承しています。 イーサリアムメインネットは、これまでEthashのみを使用していました。ダガーハシモトは、研究開発バージョンのマイニングアルゴリズムで、イーサリアムメインネットでマイニングが開始される前にEthashに引き継がれました。 -[Ethashの詳細](/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash) +[Ethashの詳細](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash) ## 参考文献 {#further-reading} diff --git a/public/content/translations/ja/developers/docs/dapps/index.md b/public/content/translations/ja/developers/docs/dapps/index.md index 241dfa12732..ee2abf66dd0 100644 --- a/public/content/translations/ja/developers/docs/dapps/index.md +++ b/public/content/translations/ja/developers/docs/dapps/index.md @@ -51,7 +51,7 @@ lang: ja **Scaffold-ETH _ - 自分のスマートコントラクトに適応するフロントエンドを使用して、Solidityを手軽に試す。_** -- [GitHub](https://github.com/scaffold-eth/scaffold-eth-2) +- [GitHub](https://github.com/austintgriffith/scaffold-eth) - [分散型アプリ(Dapp)の例](https://punkwallet.io/) **Create Eth App _-1つのコマンドでイーサリアムアプリを作成_** diff --git a/public/content/translations/ja/developers/docs/data-and-analytics/block-explorers/index.md b/public/content/translations/ja/developers/docs/data-and-analytics/block-explorers/index.md index fbe88223c41..37a2e2f8de1 100644 --- a/public/content/translations/ja/developers/docs/data-and-analytics/block-explorers/index.md +++ b/public/content/translations/ja/developers/docs/data-and-analytics/block-explorers/index.md @@ -14,17 +14,19 @@ sidebarDepth: 3 ## サービス {#services} - [Etherscan](https://etherscan.io/) –_中国語、韓国語、ロシア語、日本語でも利用できます_ +- [3xpl](https://3xpl.com/ethereum) - [Beaconcha.in](https://beaconcha.in/) - [blockchair](https://blockchair.com/ethereum) –_スペイン語、フランス語、イタリア語、オランダ語、ポルトガル語、ロシア語、中国語、ペルシア語でも利用できます_ -- [Blockscout](https://blockscout.com/) +- [Blockscout](https://eth.blockscout.com/) +- [Chainlens](https://www.chainlens.com/) +- [DexGuruブロックエクスプローラー](https://ethereum.dex.guru/) - [Etherchain](https://www.etherchain.org/) +- [Ethernow](https://www.ethernow.xyz/) - [Ethplorer](https://ethplorer.io/) –_中国語、スペイン語、フランス語、トルコ語、ロシア語、韓国語、ベトナム語でも利用できます_ +- [EthVM](https://www.ethvm.com/) - [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ブロックエクスプローラー](https://ethereum.dex.guru/) ## データ {#data} @@ -232,11 +234,13 @@ sidebarDepth: 3 ## ブロックエクスプローラー {#block-explorers} - [Etherscan](https://etherscan.io/) - イーサリアムメインネット、Goerliテストネットのデータを取得するために使用できるブロックエクスプローラー +- [3xpl](https://3xpl.com/ethereum) - 広告無しのオープンソース・イーサリアム・エクスプローラでデータセットのダウンロードが可能 - [Beaconcha.in](https://beaconcha.in/) - イーサリアムメインネットとGoerliテストネットのオープンソースブロックエクスプローラー - [Blockchair](https://blockchair.com/ethereum) - 最もプライベートなイーサリアムエクスプローラー。 データのソートやフィルタリング(メンプール)も可能 - [Etherchain](https://www.etherchain.org/) - イーサリアムメインネットのブロックエクスプローラー - [Ethplorer](https://ethplorer.io/) - イーサリアムメインネットとKovanテストネットのトークンを中心としたブロックエクスプローラー - [Rantom](https://rantom.app/) - ユーザーフレンドリーで、DeFi&NFTトランザクションを詳細に把握できるオープンソースのビューア +- [Ethernow](https://www.ethernow.xyz/) - リアルタイムのトランザクションエクスプローラーで、イーサリアムメインネットのプリチェーンレイヤーを確認可能 ## 参考文献 {#further-reading} diff --git a/public/content/translations/ja/developers/docs/data-and-analytics/index.md b/public/content/translations/ja/developers/docs/data-and-analytics/index.md index 7d698a0876d..faa168f8b6f 100644 --- a/public/content/translations/ja/developers/docs/data-and-analytics/index.md +++ b/public/content/translations/ja/developers/docs/data-and-analytics/index.md @@ -31,7 +31,7 @@ lang: ja ## クライアントの多様性 [クライアントの多様性](/developers/docs/nodes-and-clients/client-diversity/)は、バグや脆弱性に対する回復力を提供します。そのため、イーサリアムネットワーク全体の健全性にとって重要です。 現在、 -clientdiversity.org[rated.network](https://www.rated.network)、[supermajority.info](https://supermajority.info//)、[Ethernodes](https://ethernodes.org/)など、いくつかのクライアント多様性ダッシュボードが存在します。 +clientdiversity.org[rated.network](https://www.rated.network)、[execution-diversity.info](https://execution-diversity.info/)、[Ethernodes](https://ethernodes.org/)など、いくつかのクライアント多様性ダッシュボードが存在します。

@@ -41,6 +41,14 @@ clientdiversity.org[rated.network](https://www.rated.network)、[supermajority.i +## SubQueryネットワーク {#subquery-network} + +[SubQuery](https://subquery.network/)は、優れたデータインデクサーでデベロッパーにWeb3プロジェクト用の高速で信頼性の高い分散型にカスタマイズされたAPIを提供します。 SubQueryでは、80以上のエコシステム(イーサリアムを含む)で豊富なインデックスされたデータを用いてデベロッパーがユーザーへ直観的で没入型のエクスペリエンスを構築できるようにします。 SubQueryネットワークは、回復力があり分散型のインフラストラクチャネットワークを用いて止まらないアプリにします。 SubQueryのブロックチェーン・デベロッパー・ツールキットを用いてweb3アプリケーションの未来を構築しましょう。データ処理を行うカスタムバックエンドの構築に時間を費やす必要はありません。 + +開始するには、[イーサリアム・クイック・スタートガイド](https://academy.subquery.network/quickstart/quickstart_chains/ethereum-gravatar.html)を参照し、Docker環境で数分でイーサリアムブロックチェーンデータをインデックス化してテストを行い、その後、 稼働している[SubQueryのマネージドサービス](https://managedservice.subquery.network/)か[SubQueryの分散型ネットワーク](https://kepler.subquery.network/explorer/home)を使用してみましょう。 + + + ## 参考文献 {#further-reading} - [Graphネットワークの概要](https://thegraph.com/docs/en/about/network/) diff --git a/public/content/translations/ja/developers/docs/data-availability/index.md b/public/content/translations/ja/developers/docs/data-availability/index.md index 068585e639e..89f9835247f 100644 --- a/public/content/translations/ja/developers/docs/data-availability/index.md +++ b/public/content/translations/ja/developers/docs/data-availability/index.md @@ -1,5 +1,5 @@ --- -title: データ可用性 +title: データの可用性 description: イーサリアムにおけるデータ可用性に関する問題および解決策の概要 lang: ja --- diff --git a/public/content/translations/ja/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md b/public/content/translations/ja/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md index 37b58bb3bb4..2eca619a553 100644 --- a/public/content/translations/ja/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md +++ b/public/content/translations/ja/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md @@ -5,13 +5,17 @@ lang: ja sidebarDepth: 2 --- -マークル・パトリシア・ツリー(Patricia Merkle Trie)は、暗号的に認証されたデータ構造を提供し、すべての `(key, value)`バインディングを保存するために使用できます。 +イーサリアムの状態 (あらゆるアカウント、残高、スマートコントラクトの全体) は、コンピューターサイエンスでマークルツリーとして一般的に知られている特殊なバージョンのデータ構造にエンコードされます。 この構造は、暗号技術の多くのアプリケーションにおいて有用です。なぜなら、ツリー内で関わるすべてのデータのそれぞれの部分間で検証可能な関係が作成され、データに関することを証明をするのに使用できる単一の**ルート**値が得られるからです。 -マークル・パトリシア・ツリーは、完全に決定的な構造であり、同じ`(key, value)`バインディングを持つツリーは、最後のバイトまで必ず同一になります。 それらが同じルートハッシュを持ち、挿入、検索、削除において`O(log(n))`という優れた効率を発揮します。 さらに、レッド・ブラック・ツリーのような比較に基づく複雑な代替案よりも、理解やコーディングが簡単です。 +イーサリアムのデータ構造は、「修正マークル・パトリシア・ツリー」です。PATRICIA (the Practical Algorithm To Retrieve Information Coded in Alphanumeric) の機能の一部を借用しており、イーサリアムの状態を構成するアイテムから成るデータの効率的な**再検索**ができるように設計されているため、そのように名付けられました。 + +マークル・パトリシア・ツリーは、決定論的で暗号的に検証可能です。状態ルートを生成する唯一の方法は、状態のそれぞれの部分で計算することです。2つの状態が同一であることは、ルートハッシュとその計算から導かれたハッシュを比較することで簡単に証明できます (_マークルプルーフ_) 。 反対に、同じルートハッシュで2つの異なる状態を生成することはあり得ません。また、異なる値で状態を変更しようとすると、異なる状態のルートハッシュになります。 理論的には、この構造により、挿入、検索、削除で`O(log(n))`による効率の「ホーリー・グレイル」を提供します。 + +今後、イーサリアムでは[バークルツリー](https://ethereum.org/en/roadmap/verkle-trees)構造への移行を計画しています。これにより、将来のプロトコルの改善において、さまざまな新しい可能性が開かれます。 ## 前提知識 {#prerequisites} -このページを理解するには、[ハッシュ](https://en.wikipedia.org/wiki/Hash_function)、[マークル ツリー](https://en.wikipedia.org/wiki/Merkle_tree)、[ツリー](https://en.wikipedia.org/wiki/Trie)、[シリアライゼーション](https://en.wikipedia.org/wiki/Serialization)に関する基本的な知識が必要です。 +このページを理解するには、[ハッシュ](https://en.wikipedia.org/wiki/Hash_function)、[マークル ツリー](https://en.wikipedia.org/wiki/Merkle_tree)、[ツリー](https://en.wikipedia.org/wiki/Trie)、[シリアライゼーション](https://en.wikipedia.org/wiki/Serialization)に関する基本的な知識が必要です。 この記事では、基本的な[基数ツリー](https://en.wikipedia.org/wiki/Radix_tree)の説明から開始します。その後、イーサリアムで最適化されたデータ構造として必要とされた変更について順を追って説明します。 ## 基本的な基数ツリー {#basic-radix-tries} @@ -160,14 +164,14 @@ sidebarDepth: 2 ### ツリーの例 {#example-trie} -次の4つのパスバリューのペアを含むツリーが必要だとします。 `('do', 'verb')`、`('dog', 'puppy')`、`('doge', 'coins')`、`('horse', 'stallion')` +次の4つのパスバリューのペアを含むツリーが必要だとします。 `('do', 'verb')`、`('dog', 'puppy')`、`('doge', 'coin')`、`('horse', 'stallion')` まず、パスと値(バリュー)の両方を`bytes`に変換します。 以下では、_paths_を実際のバイト表現 `<>`によって表示しています。しかし、 _values_は、分かりやすいように文字列として`''`で表示しています(実際は`bytes`) 。 ``` <64 6f> : 'verb' <64 6f 67> : 'puppy' - <64 6f 67 65> : 'coins' + <64 6f 67 65> : 'coin' <68 6f 72 73 65> : 'stallion' ``` @@ -176,12 +180,12 @@ sidebarDepth: 2 ``` rootHash: [ <16>, hashA ] hashA: [ <>, <>, <>, <>, hashB, <>, <>, <>, [ <20 6f 72 73 65>, 'stallion' ], <>, <>, <>, <>, <>, <>, <>, <> ] - hashB: [ <00 6f>, hashC ] - hashC: [ <>, <>, <>, <>, <>, <>, hashD, <>, <>, <>, <>, <>, <>, <>, <>, <>, 'verb' ] - hashD: [ <17>, [ <>, <>, <>, <>, <>, <>, [ <35>, 'coins' ], <>, <>, <>, <>, <>, <>, <>, <>, <>, 'puppy' ] ] + hashB: [ <00 6f>, hashD ] + hashD: [ <>, <>, <>, <>, <>, <>, hashE, <>, <>, <>, <>, <>, <>, <>, <>, <>, 'verb' ] + hashE: [ <17>, [ <>, <>, <>, <>, <>, <>, [ <35>, 'coin' ], <>, <>, <>, <>, <>, <>, <>, <>, <>, 'puppy' ] ] ``` -1つのノードが内部の別のノードから参照されるとき、含まれているのは、`H(rlp.encode(node))`であり、`H(x) = keccak256(x) if len(x) >= 32 else x`と`rlp.encode`は、[RLP](/developers/docs/data-structures-and-encoding/rlp)エンコーディング関数です。 +1つのノードが内部の別のノードから参照されるとき、含まれているのは、`H(rlp.encode(x))`であり、`H(x) = keccak256(x) if len(x) >= 32 else x`と`rlp.encode`は、[RLP](/developers/docs/data-structures-and-encoding/rlp)エンコーディング関数です。 ツリーを更新するとき、新しく作成されたノードの長さが32以上の_場合_、キーバリューのペア`(keccak256(x), x)`を永続的なルックアップテーブルに格納する必要があることに注意してください。 ただし、ノードがそれよりも短い場合、関数 function f(x) = x は可逆であるため、何も格納する必要はありません。 diff --git a/public/content/translations/ja/developers/docs/design-and-ux/index.md b/public/content/translations/ja/developers/docs/design-and-ux/index.md index 55a4440e441..24ec9c3c15a 100644 --- a/public/content/translations/ja/developers/docs/design-and-ux/index.md +++ b/public/content/translations/ja/developers/docs/design-and-ux/index.md @@ -12,7 +12,7 @@ lang: ja 効果的なデザインは、視覚的に魅力的なユーザーインターフェイスを作成するだけにとどまりません。 ユーザーのニーズ、目的、推進要因などを深く理解することが伴います。 そのため、すべてのデザイナーが[**ダイヤモンドプロセス**](https://en.wikipedia.org/wiki/Double_Diamond_(design_process_model))などのデザインプロセスを採用することをお勧めします。これは、仕事が意図的であることを確実にします。 -- [Web3では、より多くのUXリサーチャーとデザイナーが必要](https://blog.akasha.org/akasha-conversations-9-web3-needs-more-ux-researchers-and-designers) - 現在のデザイン成熟度の概要 +- [Web3では、より多くのUXリサーチャーとデザイナーが必要](https://akasha.org/blog/2022/10/11/akasha-conversation-09-web3-ux-researchers-and-designers) - 現在のデザイン成熟度の概要 - [web3におけるUXリサーチの簡単なガイド](https://uxplanet.org/a-complete-guide-to-ux-research-for-web-3-0-products-d6bead20ebb1) - リサーチ方法の簡単なガイド - [Web3におけるUXデザインのアプローチ方法](https://archive.devcon.org/archive/watch/6/data-empathy-how-to-approach-ux-decisions-in-web3/) - 定量的リサーチと定性的リサーチの概要とその2つの違い (6分間のビデオ) - [Web3のUXリサーチャーになること](https://medium.com/@georgia.rakusen/what-its-like-being-a-user-researcher-in-web3-6a4bcc096849) - Web3のUXリサーチャーがどのようなものかついての個人的な見解 @@ -79,10 +79,11 @@ lang: ja ## デザインシステム {#design-systems} -- [オプティミズムデザイン](https://www.figma.com/@optimism) (Figma) +- [オプティミズムデザイン](https://www.figma.com/@oplabs) (Figma) - [Ethereum.orgデザインシステム](https://www.figma.com/@ethdotorg) (Figma) - [Finity、Polygonによるデザインシステム](https://www.figma.com/community/file/1073921725197233598/finity-design-system) (Figma) - [Klerosデザインシステム](https://www.figma.com/community/file/999852250110186964/kleros-design-system) (Figma) +- [Safeデザインシステム](https://www.figma.com/community/file/1337417127407098506/safe-design-system) (Figma) - [ENSデザインシステム](https://thorin.ens.domains/) - [Mirrorデザインシステム](https://degen-xyz.vercel.app/) diff --git a/public/content/translations/ja/developers/docs/development-networks/index.md b/public/content/translations/ja/developers/docs/development-networks/index.md index d3cff8749fa..f3ecd0a8f1c 100644 --- a/public/content/translations/ja/developers/docs/development-networks/index.md +++ b/public/content/translations/ja/developers/docs/development-networks/index.md @@ -66,9 +66,9 @@ Hardhat Networkには、プロフェッショナルのためのイーサリア Kurtosisは、マルチコンテナテスト環境のビルドシステムで、デベロッパーがブロックチェーンネットワークの再現可能なインスタンスをローカルで起動できるようにします。 -イーサリアムKurtosisパッケージでは、複数の異なる実行レイヤー(EL)およびコンセンサスレイヤー(CL)クライアントとn個のノードをサポートし、コンテナ化されたパラメータ化可能なイーサリアムテストネットをローカルでインスタンス化します。 Kurtosisによって、すべてのローカルポートマッピングとサービス接続を適切に処理することで、dAppやスマートコントラクトのプロトタイピングとテストを容易にします。 +イーサリアムKurtosisパッケージを使用すると、パラメータ化された、高スケーラブルで、プライベートのイーサリアムテストネットをDockerもしくはKubernetesで素早くインスタンス化できます。 このパッケージでは、すべての主要な実行レイヤー (EL) およびコンセンサスレイヤー (CL) クライアントをサポートしています。 Kurtosisは、適切にすべてのローカルポートのマッピングを処理し、提供するネットワークへサービス接続をして、イーサリアムコアインフラストラクチャに関する検証およびテストワークフローに使えるようにします。 -- [イーサリアムネットワークパッケージ](https://github.com/kurtosis-tech/eth-network-package) +- [イーサリアムネットワークパッケージ](https://github.com/kurtosis-tech/ethereum-package) - [ウェブサイト](https://www.kurtosis.com/) - [GitHub](https://github.com/kurtosis-tech/kurtosis) - [ドキュメント](https://docs.kurtosis.com/) diff --git a/public/content/translations/ja/developers/docs/evm/evm.svg.xlsx b/public/content/translations/ja/developers/docs/evm/evm.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ebccb09bbd2d759e88dc9a61c3104020a82c11fa GIT binary patch literal 4992 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 P0@NoPRRN=97kB>!KqrO@ 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 A00000 literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/developers/docs/evm/index.md b/public/content/translations/ja/developers/docs/evm/index.md index 4fff354c7fd..5754609a18c 100644 --- a/public/content/translations/ja/developers/docs/evm/index.md +++ b/public/content/translations/ja/developers/docs/evm/index.md @@ -74,6 +74,7 @@ EVMのすべての実装は、イーサリアムイエローペーパーに記 - [イーサリアム仮想マシンのオペコード](https://www.ethervm.io/) - [イーサリアム仮想マシンオペコードのインタラクティブリファレンス](https://www.evm.codes/) - [Solidityドキュメントの簡単な紹介](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6) +- [マスタリング・イーサリアム - イーサリアム仮想マシン](https://github.com/ethereumbook/ethereumbook/blob/develop/13evm.asciidoc) ## 関連トピック {#related-topics} diff --git a/public/content/translations/ja/developers/docs/evm/opcodes/index.md b/public/content/translations/ja/developers/docs/evm/opcodes/index.md index 97c5e79a37f..c46a30eb045 100644 --- a/public/content/translations/ja/developers/docs/evm/opcodes/index.md +++ b/public/content/translations/ja/developers/docs/evm/opcodes/index.md @@ -71,7 +71,9 @@ lang: ja | 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_ | | | | | | +| 49 | BLOBHASH | 3 | `idx` | `tx.blob_versioned_hashes[idx]` | | [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844) | +| 4A | BLOBBASEFEE | 2 | `。` | `block.blobbasefee` | | 現在のブロックのブロブベースフィー([EIP-7516](https://eips.ethereum.org/EIPS/eip-7516)) | +| 4B-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 | @@ -84,7 +86,9 @@ lang: ja | 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_ | | | | | | +| 5C | TLOAD | 100 | `key` | `tstorage[key]` | | 一時ストレージからワードを読み込む([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) | +| 5D | TSTORE | 100 | `key, val` | `。` | tstorage[key] := val | 一時ストレージへワードを書き込む ([EIP-1153](https://eips.ethereum.org/EIPS/eip-1153)) | +| 5E | MCOPY | 3+3\*words+[A0](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `dstOst, ost, len` | `。` | mem[dstOst] := mem[ost:ost+len] | メモリをあるエリアから別のエリアへコピーする([EIP-5656](https://eips.ethereum.org/EIPS/eip-5656)) | | 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 | @@ -167,4 +171,4 @@ lang: ja | 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` | +| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `。` | | すべてのETHを`addr`へ送信する。コントラクトが作成されたのと同じトランザクションで実行された場合、コントラクトは破壊されます。 | diff --git a/public/content/translations/ja/developers/docs/frameworks/index.md b/public/content/translations/ja/developers/docs/frameworks/index.md index 59e0e568e60..0bc59f08f30 100644 --- a/public/content/translations/ja/developers/docs/frameworks/index.md +++ b/public/content/translations/ja/developers/docs/frameworks/index.md @@ -52,7 +52,7 @@ lang: ja **Scaffold-Eth -** **_Scaffold-Eth - Ethers.js + Hardhat + React components and hooks for web3: スマートコントラクトを利用した分散型アプリケーションの構築を始めるために必要なすべてを網羅。_** -- [GitHub](https://github.com/scaffold-eth/scaffold-eth-2) +- [GitHub](https://github.com/austintgriffith/scaffold-eth) **Tenderly -** **_ブロックチェーンデベロッパーがスマートコントラクトを構築、テスト、デバッグ、監視、操作し、dApp UXを改善できるWeb3開発プラットフォーム。_** @@ -68,7 +68,7 @@ lang: ja - [alchemy.com](https://www.alchemy.com/) - [GitHub](https://github.com/alchemyplatform) -- [Discord](https://discord.com/invite/A39JVCM) +- [Discord](https://discord.com/invite/alchemyplatform) **NodeReal -** **_イーサリアム開発プラットフォーム。_** @@ -106,6 +106,12 @@ lang: ja - [コミュニティフォーラム](https://forum.openzeppelin.com/c/support/17) - **OpenZeppelin SDK開発の終了** +**Catapulta -** **_マルチチェーン・スマートコントラクト・デプロイメントツール、ブロックエクスプローラでの自動検証、デプロイしたスマートコントラクトの追跡、デプロイメントレポートの共有、FoundryやHardhatのプラグ・アンド・プレイ。_** + +- [ウェブサイト](https://catapulta.sh/) +- [ドキュメント](https://catapulta.sh/docs) +- [GitHub](https://github.com/catapulta-sh) + ## 参考文献 {#further-reading} _役に立ったコミュニティリソースがあれば、 ぜひこのページに追加してください。_ diff --git a/public/content/translations/ja/developers/docs/gas/index.md b/public/content/translations/ja/developers/docs/gas/index.md index 63be02dad3f..af58d7ca8a1 100644 --- a/public/content/translations/ja/developers/docs/gas/index.md +++ b/public/content/translations/ja/developers/docs/gas/index.md @@ -117,22 +117,6 @@ Jordanが送金すると、Jordanの口座から1.000252 ETHが差し引かれ レイヤー2のスケーリングは、ガス代、ユーザーエクスペリエンス、スケーラビリティを大幅に向上させるための主要なイニシアチブです。 [レイヤー2スケーリングの詳細](/developers/docs/scaling/#layer-2-scaling) -## ロンドンアップグレード/EIP-1559の更新内容 {#what-was-the-london-upgrade-eip-1559} - -ロンドンアップグレード前は、イーサリアムのブロックサイズは固定されていました。 ネットワーク需要が高い時期には、ブロックはフル稼働していたため、 需要の減少を待つ必要があることからトランザクションの追加が遅れ、ユーザーエクスペリエンスが悪化しました。 しかし、ロンドンアップグレードにより、イーサリアムに可変サイズのブロックが導入されたことで、この問題は解消されました。 - -イーサリアムネットワークのトランザクションフィーの算出方法は、2021年8月の[ロンドンアップグレード](/history/#london)に伴って変更されました。 ロンドンアップグレード以前は、次のように`base fee`と`priority fee`を分けずにフィーが計算されていました。 - -例えば、AliceがBobに1 ETHを支払う必要があるとしましょう。 トランザクションでは、ガスリミットは21,000ユニット、ガス価格は200 gweiです。 - -フィーの総額は`Gas units (limit) * Gas price per unit`です。 つまり、`21,000 * 200 = 4,200,000 gwei`または0.0042 ETHとなります。 - -ロンドンアップグレードで[EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)が導入されたことで、トランザクションフィーの仕組みは従来よりも複雑になりましたが、ガス代の予測がしやすくなり、結果的にトランザクションフィー市場がより効率的になるというメリットが生まれました。 ユーザーはガスの市場価格(`baseFeePerGas`)以上の金額を支払うことなく、トランザクションの実行に支払う`maxFeePerGas`を設定してトランザクションを送信でき、チップを差し引いた余剰分は返金されます。 - -EIP-1559とそのメリットについて説明するビデオ: - - - ## ガス代のモニタリング {#moitoring-gas-fees} ETHをより安く送れるようにガス代を節約したい場合は、次のような様々なツールを利用できます。 @@ -152,4 +136,4 @@ ETHをより安く送れるようにガス代を節約したい場合は、次 - [プルーフ・オブ・ステークとプルーフ・オブ・ワークの比較](https://blockgeeks.com/guides/proof-of-work-vs-proof-of-stake/) - [デベロッパーのためのガス最適化戦略](https://www.alchemy.com/overviews/solidity-gas-optimization) - [EIP-1559のドキュメント](https://eips.ethereum.org/EIPS/eip-1559) -- [Tim BeikoによるEIP-1559リソース](https://hackmd.io/@timbeiko/1559-resources) +- [Tim BeikoによるEIP-1559のリソース](https://hackmd.io/@timbeiko/1559-resources) diff --git a/public/content/translations/ja/developers/docs/intro-to-ether/index.md b/public/content/translations/ja/developers/docs/intro-to-ether/index.md index 921bd39ef3e..b227607af2f 100644 --- a/public/content/translations/ja/developers/docs/intro-to-ether/index.md +++ b/public/content/translations/ja/developers/docs/intro-to-ether/index.md @@ -28,7 +28,7 @@ lang: ja [広く一般的](https://www.reuters.com/article/us-crypto-currencies-lending-insight-idUSKBN25M0GP#:~:text=price%20of%20ethereum)にイーサリアムとイーサが -[混同](https://www.cnn.com/2021/03/14/tech/nft-art-buying/index.html#:~:text=price%20of%20ethereum)されますが、「イーサリアムの価格」について話されている時は、イーサの価格を意味します。 +[混同](https://www.cnn.com/2021/03/14/tech/nft-art-buying/index.html#:~:text=price%20of%20ethereum)されますが、「イーサリアムの価格」について話されている時は、イーサの価格を意味します。

diff --git a/public/content/translations/ja/developers/docs/mev/index.md b/public/content/translations/ja/developers/docs/mev/index.md index b2bd06e203e..cde64ddc8ef 100644 --- a/public/content/translations/ja/developers/docs/mev/index.md +++ b/public/content/translations/ja/developers/docs/mev/index.md @@ -6,7 +6,7 @@ lang: ja 最大抽出可能価値(MEV)とは、特定のブロックにおけるトランザクションの追加、削除、または順序変更により、ブロックの生成時において標準的なブロック報酬やガス代を超過して抽出できる最大の価値を指します。 -## 採掘可能価値(MEV) {#miner-extractable-value} +## 最大抽出可能価値(MEV) {#maximal-extractable-value} 最大抽出可能価値(MEV)は、 [プルーフ・オブ・ワーク](/developers/docs/consensus-mechanisms/pow/)に基づき導入された概念であり、当初は「採掘可能価値(MEV)」と呼ばれていました。 プルーフ・オブ・ワークでは、トランザクションの追加、削除、および順序決定をマイナーが管理していたためです。 しかし、[マージ](/roadmap/merge)によるプルーフ・オブ・ステークへの移行後、バリデータがこれらの役割を担うようになり、マイニングはイーサリアムのプロトコルから削除されました。 しかし、価値採掘のための手段は依然として存在するため、現在は「最大抽出可能価値」という用語を用います。 @@ -102,7 +102,7 @@ MEVは必ずしも絶対悪ではなく、イーサリアムにとってはよ ネットワークレイヤーにおいては、汎用フロントランナーやガス価格のオークションが頻繁に用いられるため(複数のフロントランナーが、次のブロックに追加されるトランザクションのガス代を吊り上げる競争を行う場合)、ネットワークの混雑が悪化するだけでなく、通常のトランザクションを実行したい他のすべてのユーザーにとってもガス代が上昇してしまいます。 -MEVは、ブロック _内部__における影響に加えて、複数のブロック_間_においても悪影響をもたらす場合があります。 特定のブロック内において獲得できるMEVが標準的なブロック報酬を大きく上回る場合、バリデータにとっては、ブロックを再編成し、バリデータ自身がMEVを獲得しようというインセンティブが発生しうるため、ブロックチェーンの再編成を促し、コンセンサスの安定性が損なわれる可能性があります。 +MEVは、ブロック _内部__における影響に加えて、複数のブロック_間_においても悪影響をもたらす場合があります。 特定のブロック内において獲得できるMEVが標準的なブロック報酬を大きく上回る場合、バリデータにとっては、ブロックを再編成し、バリデータ自身がMEVを獲得しようというインセンティブが発生しうるため、ブロックチェーンの再編成を促し、コンセンサスの安定性が損なわれる可能性があります。

このブロックチェーンが再編成される可能性は、 [すでにビットコインのブロックチェーンにおいて発生しています](https://dl.acm.org/doi/10.1145/2976749.2978408)。 ビットコインのブロック報酬が半減し、ブロック報酬においてトランザクション手数料が占める割合がますます大きくなると、マイナーにとっては、次のブロックで得られる報酬よりも、より高額な手数料が期待できる過去のブロックを再採掘する方が経済的に合理的である状況が発生します。 MEVの抽出が一般化した場合、イーサリアムにおいても類似の状況が発生し、イーサリアム・ブロックチェーンの健全性が損なわれる可能性があります。 @@ -178,7 +178,7 @@ PBS(提案者と作成者の分離)は、MEVの抽出に伴う悪影響を 4. ビルダーAPIを実行しているビルダーは、ブラインドのブロック提案を確認した上で、完全な実行ペイロードで対応すると想定されています。 これにより、バリデータは「署名済み」のビーコンブロックを作成し、ネットワークに拡散することができます。 -5. ビルダーAPIを使用するバリデータの場合でも、ブロックビルダーが迅速に対応しない場合にブロック提案に伴う報酬が受け取れない場合を避けるために、ローカルでブロックを構築する必要があります。 しかしバリデータは、この時点で公開されたトランザクションあるいは他のセットを用いて別のブロックを作成することはできません。これは_曖昧化_(同じスロット内の2つのブロックに署名すること)を発生させるため、スラッシングの対象である違反行為です。 +5. ビルダーAPIを使用するバリデータの場合でも、ブロックビルダーが迅速に対応しない場合にブロック提案に伴う報酬が受け取れない場合を避けるために、ローカルでブロックを構築する必要があります。 しかしバリデータは、この時点で公開されたトランザクションあるいは他のセットを用いて別のブロックを作成することはできません。これは_曖昧化_(同じスロット内の2つのブロックに署名すること)を発生させるため、スラッシングの対象である違反行為です。 ビルダーAPIの実装例としては、イーサリアムに対するMEVの悪影響を軽減するように[フラッシュボットのオークション機能](https://docs.flashbots.net/Flashbots-auction/overview/)を改善した[MEV Boost](https://github.com/flashbots/mev-boost)があります。 フラッシュボットのオークションでは、プルーフ・オブ・ワークを行うマイナーに対し、利益を伴うブロックを作成する作業を**サーチャー**と呼ばれる専門のユーザーに外注することが認められています。 diff --git a/public/content/translations/ja/developers/docs/networking-layer/cons_client_net_layer.svg.xlsx b/public/content/translations/ja/developers/docs/networking-layer/cons_client_net_layer.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..19dc4217b396c1d0d68ec2e276761085851c47c2 GIT binary patch literal 4879 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 H5_|W5xiiR0 literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/developers/docs/networking-layer/exe_client_net_layer.svg.xlsx b/public/content/translations/ja/developers/docs/networking-layer/exe_client_net_layer.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7abc67e5ff72f312f62d8fea191b7864f0786ed2 GIT binary patch literal 4893 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 XqNJyVkA?>eiv;~iMKizwfLZ+?8m8uS literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/developers/docs/networking-layer/index.md b/public/content/translations/ja/developers/docs/networking-layer/index.md index 04c4127b861..75046040868 100644 --- a/public/content/translations/ja/developers/docs/networking-layer/index.md +++ b/public/content/translations/ja/developers/docs/networking-layer/index.md @@ -125,7 +125,7 @@ SSZは、シンプル・シリアライゼーションの略です。 SSZは、 制御フローの概要を以下に示します。括弧内は関連するネットワークスタックです。 -### コンセンサスクライアントがブロック生成者でない場合: +### コンセンサスクライアントがブロック生成者でない場合: {#when-consensus-client-is-not-block-producer} - コンセンサスクライアントがブロック・ゴシップ・プロトコル(コンセンサスp2p)を介してブロックを受信する - コンセンサスクライアントはブロックを事前に検証し、確正しいメタデータを持つ有効な送信者からのものであることを確実にする @@ -134,7 +134,7 @@ SSZは、シンプル・シリアライゼーションの略です。 SSZは、 - 実行レイヤーは検証データをコンセンサスレイヤーに返し、ブロックは検証済みとみなされる(ローカルRPC接続) - コンセンサスレイヤーはブロックを自分のブロックチェーンの先頭に追加して証明し、そのアテステーション(証明)をネットワーク上にブロードキャストする(コンセンサスp2p) -### コンセンサスクライアントがブロック生成者の場合: +### コンセンサスクライアントがブロック生成者の場合: {#when-consensus-client-is-block-producer} - コンセンサスクライアントが次のブロック生成者であることを通知される(consensus p2p) - コンセンサスレイヤーが実行クライアントの`create block`メソッドを呼び出す(ローカルRPC) @@ -152,4 +152,4 @@ SSZは、シンプル・シリアライゼーションの略です。 SSZは、 ## 参考文献 {#further-reading} -[DevP2P](https://github.com/ethereum/devp2p) [LibP2p](https://github.com/libp2p/specs) [コンセンサスレイヤーネットワークの仕様](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure) カデムリアからdiscv5[discv5](https://vac.dev/kademlia-to-discv5) [カデムリアペーパー](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf) [Ethereumピアツーピア入門](https://p2p.paris/en/talks/intro-ethereum-networking/) [eth1eth2の関係](http://ethresear.ch/t/eth1-eth2-client-relationship/7248) [マージとeth2クライアントの詳細に関するビデオ](https://www.youtube.com/watch?v=zNIrIninMgg) +[DevP2P](https://github.com/ethereum/devp2p) [LibP2p](https://github.com/libp2p/specs) [コンセンサスレイヤーネットワークの仕様](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure) カデムリアからdiscv5[discv5](https://vac.dev/kademlia-to-discv5) [カデムリアペーパー](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf) [Ethereumピアツーピア入門](https://p2p.paris/en/talks/intro-ethereum-networking/) [eth1eth2の関係](http://ethresear.ch/t/eth1-eth2-client-relationship/7248) [マージとeth2クライアントの詳細に関するビデオ](https://www.youtube.com/watch?v=zNIrIninMgg)

diff --git a/public/content/translations/ja/developers/docs/networks/index.md b/public/content/translations/ja/developers/docs/networks/index.md index e4913d9b863..c2f0c8e0485 100644 --- a/public/content/translations/ja/developers/docs/networks/index.md +++ b/public/content/translations/ja/developers/docs/networks/index.md @@ -60,7 +60,7 @@ lang: ja - [Alchemy Sepolia faucet](https://sepoliafaucet.com/) - [Infura Sepolia faucet](https://www.infura.io/faucet) - [Chainstack Sepolia faucet](https://faucet.chainstack.com/sepolia-faucet) -- [テストネットフォーセット | Sepolia](https://testnet-faucet.com/sepolia/) +- [Blockscout](https://eth-sepolia.blockscout.com/) #### Goerli(ゴエリ) _(長期サポート)_ {#goerli} @@ -88,6 +88,7 @@ Goerliは、バリデーションやステーキングのテストを行うた - [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) +- [Blockscout](https://eth-goerli.blockscout.com/) Goerliテストネットでバリデータを起動するには、ethstakerの["cheap goerli validator" launchpad](https://goerli.launchpad.ethstaker.cc/en/)を使用してください。 diff --git a/public/content/translations/ja/developers/docs/nodes-and-clients/archive-nodes/index.md b/public/content/translations/ja/developers/docs/nodes-and-clients/archive-nodes/index.md index c850d1e148b..c9d2a6df32d 100644 --- a/public/content/translations/ja/developers/docs/nodes-and-clients/archive-nodes/index.md +++ b/public/content/translations/ja/developers/docs/nodes-and-clients/archive-nodes/index.md @@ -56,7 +56,7 @@ sidebarDepth: 2 ## 推奨実行環境 -アーカイブノードは、[ノードの実行における一般的な推奨事項](/developers/docs/nodes-and-clients/run-a-node/)とは異なり、ハードウェアとメンテナンスの要件がより厳しくなっています。 そのため、エリゴンの[主要な機能](https://github.com/ledgerwatch/erigon#key-features)を考慮すると、[エリゴン](/developers/docs/nodes-and-clients/#erigon)のクライアント実装を使うのが最も実用的であると言えます。 +アーカイブノードは、[ノードの実行における一般的な推奨事項](/developers/docs/nodes-and-clients/run-a-node/)とは異なり、ハードウェアとメンテナンスの要件がより厳しくなっています。 そのため、エリゴンの[主要な機能](https://github.com/ledgerwatch/erigon#key-features)を考慮すると、[エリゴン](/developers/docs/nodes- and-clients/#erigon)のクライアント実装を使うのが最も実用的であると言えます。 ### ハードウェア diff --git a/public/content/translations/ja/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/ja/developers/docs/nodes-and-clients/client-diversity/index.md index e81e3b0de6b..ff108ba1c48 100644 --- a/public/content/translations/ja/developers/docs/nodes-and-clients/client-diversity/index.md +++ b/public/content/translations/ja/developers/docs/nodes-and-clients/client-diversity/index.md @@ -75,9 +75,9 @@ sidebarDepth: 2 [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) -[ロードスター](https://github.com/ChainSafe/lodestar) +[Lodestar](https://github.com/ChainSafe/lodestar) -[プリズム](https://docs.prylabs.network/docs/getting-started) +[Prysm](https://docs.prylabs.network/docs/getting-started) ノードオペレーターを大多数を占めるクライアントからの移行を奨励し、移行プロセスを加速できるよう、技術系のユーザーはマイノリティクライアント向けのチュートリアルやドキュメントの作成にご協力ください。 マイノリティコンセンサスクライアントへの移行に関するガイドは、 [clientdiversity.org](https://clientdiversity.org/)から入手できます。 @@ -90,7 +90,7 @@ sidebarDepth: 2 - [Rated.network](https://www.rated.network/) - [clientdiversity.org](https://clientdiversity.org/) **実行レイヤー:** -- [supermajority.info](https://supermajority.info//) +- [execution-diversity.info](https://execution-diversity.info/) - [Ethernodes](https://ethernodes.org/) ## 参考文献 {#further-reading} diff --git a/public/content/translations/ja/developers/docs/nodes-and-clients/et1eth2client.svg.xlsx b/public/content/translations/ja/developers/docs/nodes-and-clients/et1eth2client.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6b78582a86ba7be3f9f4769cc10ce03f8357ea09 GIT binary patch literal 4866 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 ur}mlR$Kn4F5z~HX$cYJ5(3haBB3bp z&FKApxUT!T{(WYhb>6k+-RtcAynFBGIU1@!G%^4d78byRC07q{%}5c?hH@@Y4{NB0 zsg94UwYxDN%-QLs_OM!y0MQxh1=AOD5h$23EbF9m1xpD|sJ8>LoZ|QSFuho(Y{2q@ zF?iCXwV_`^X!~XHVNP8y25IIJw;*SKo^(}+Xn=lnV(;Om8X3IHvAWBW^+d_yPD>Ww z332I?m3o?;Tf$eZ6o+w?G^RY;0)j!Ab!&qmEC+N|xY)`;g-)04kq_LEK=8>O3w*~X zv5^5Cg_UTp?czh;w6ml}FWdKunDO*7St#)PL#{_YgyCaVx zs&8!#@7a#E12j}Iv7DpoHAGMV01z4gvHo9K$3D$XXJi9;AUn={;7)^ zW%{J`HUL-CfS0|N!>kwJ`I3`gd@utlE7jCVVi6j2N5OklvV`6ibkoi5T@ka?aE5|Q zQ>p_TwE`|#-oh#x2XR4xMsUspBbLKf@;8Scs_gE$3Six&7$fefTPED!6LN~ z)yI?DS(Xwgsn_;1)B=}W##%%m9EfoLcc^5Df54ph-R;cXtgW;?-0Y#Y?#L4spQ5gc zDnr%RF;rW8Yc)egzMPvFoeq_7>d{+e%6a`cP=1+^j!odE)(0MDuGsgX_7RVsh`nsT zE2Ql)E?`czKDPhpnJs;v$_@-{NrO3gtURBcAP)hi!k>95vq3AXc-2QTvFGyOAQBc~ zs10a%j9Fe=e+MkQydjt@_9S2ld=DCmmv;(~u+Qqv@Bx#>D%d7(G`$wq3J4b9ylF{| zz6>S*yu2R_cXf`PVSFmxiV}#%)E{jS3&a(ilg0TK3s4h0iWogE(*-V# zb(&5Z7~#3It{H!75aw!@Xx`mhJW>DJSE$Iz<6N#*;sjr0i^8OvnDS%aDJ|i8RVfJ8 zo8oWuZHYXu{vH`?#e==9SEej+yw4ILL? zH*;?!HvE4-2qHns88?P@3*cdXCfy;>U9dNxB9$XE8CMe^SYn0JBqt6LeyQ)nql9-A!k~rpW=chbPV_7XZ|9!G=Ph-wy&3cGF%=;cs-p=P z2Xp7Hq6^dxeHtVn8U66E4M;(15MNivVxEfyX?vk2Y&j(MFx%e>RHNCQk+O(OJf(!e z?ETb9&6g6dNHRhOrb9`q

AU-Cc}woIYs4%T)gg?LF_)iyGra^%w#*WBi$;mGE(t z{boHjK|DB%>&0waPl_#tym53@%rPl42NfmTkUB(!Tz{;0 z%t7ZFiOxeVfXi)N(`}qBnzc`K84Pr{8n%RL4hp;eLKU^YXs7aX_E*ibVYW6!T@i{D z66#DEF6#iH6NbeK+dA5r>Jbr9teOuki<}+1U;3Z~CuM|ZtjCpqBqjdraQKO&%1ZVo zDqMn;yEP&j-iyOT%ppWU=_8ZzonlS0M+@Q;C!4@P?yQh(sV@Zo2=AJG*3l=Gm?zBG zA}MYYHW(8|8dI3Umr_qeB#_M+9~nl(xwOvm<#Eb{96TcEi`?@x!s?H0#uvnr?Q>cL z^a93ms+WwjMtK<0YebFH9n=qi-F_RacZ!#3mVN!HgF>b63L4G1Q(P>R)nJrR6EwS2 z-JU*{fQ2s7IW#xV7#IgM_WA)^w~hJz8$-Vuv`Ud|JK4_AwJt8(_P}h#T6W7rr=N!v z?F0lhI4>?j9X){2Zr|6eVX?A(qorq=*|UnEi`2t5)Xn7=yMsagTuNcU@RoJXBG%g` z#F9|L*BNxjQFZXPcU-)JH-S^;wjWA5wwX)w6SPzazeJ~0$*PioAw6w3x1zlqQjAy} z^!TT{dTF->mzvLVhE|i7WO*&O$t^Us`%%f7H6pRq+_np7>s)+bT-%@KIWc(*Th_$9 z(q#4ZZ4Xb9M2~zaaJ7S~luh}&^~$-s>4*irP1(B}Mhh*#c^2kU#i$@%O-%HqTE}lD zg;-GlZIZ{HFV57bZu=D$r_A8bfv{aZf?_&(T68c;+n!U}P1)y}KD&4+^UnhHjO(7R#Urx^+Tuyo}C8pXHK5w3^BXC|C zBc;mvF{mhWcH0KT;rMc9bpCtO^5ggY!?atJnexQgt6_yXFI>n6H>bryhLrnma`IU@dXMb2$9iKON>LCs4rKSJ=EVQRLeX zVnFM2tBY<0r%w4>if!&2ShaE=mw#2C8>~IWL>8KLey}+QqR~_k{HfXC|0*i)w z$gtwdT=&mi6{9R~Pft3VEwNdl=|LW0?LKYla+_@ySLUuAIaHU|ws*B?qKTy$;)B&& zQP5&_m_NtHVghwoy<%+)t4&ijojB`DC^|V6FhZXV_MK5-Jr{22_T=n@MN-kmRee52 z4b#1p=hx9~8W01sc@9bk-}PF&-(>&gG`c!BtGFAJyEJBe#}ehGuo<%wiK8z&AH#4+ zCxhLB)QU^@VL$q<(#dUyMsXBRP(bX)dtoN&VVD@c%y5{RlCb*+sTXPUUoT<{-wnb~ zN#Tao#+z-rEuGwCs_9mG91pfQMd!UA-oJ$dcc5><*`T^R;YoGB0dGV`%ol%CpyU&i z-pwrbEHsg%yb?dI^w;VhRhR1CWG=!Q=^l_9(}wm>y~mZL#_;I|iN3&X~k;>IZU`?;i4uD)CO!cjPQgsKlhds8QTdYJjn zqa$X4>A9#;3h#8Y+BJI8SjA-5Hw29IxlpRqjPU+~g~G-q^B$Gx&?#iuGq@^X?}u=& zXo(9YjZ16Tp&!XUkzit8rvmMbrTYdCQ1d3Jl)-k}*zTpK#x~A$>fNI@hD4m#^=%%w z4ZlBZWuSLgZS+3j^}Aq*E`--em52oT$DSG(-D43V6gnRuO16lZi!AP~+=w*anE(l9 z#N%w01hYJ*F$(aq#jBf($Bcf<7ClC$b|zDat+g4Itigr*g>D;l54ZB}VnhNY_9qX3 z4CPfQA~0b4BM+edg~6}kk7NV?MdIi9uSk(`KxnJG2sol z%pQZfw6_rXX#W3@&}+=;iZkV;87Jm5QiWf}9Q2jN=l0Y(7Dxu0V5%%>x;jYsq;GmC?Y zP928r0z1Wm_S2I%2Kn$B534 zw?Zi#>fmjWb++lb6@mJDs?@SpDKKXPeRR7Pb8kmgI`;p1VTO$f88Q|(`$8|-HB&YwhfBE+DyMyaG7b)DY%nQ*8uF3e{H(u9YNEv)(=7@Lw zH&Oh%hwHKfsnf0u74dxm;o)CZ+wWek6L+LUxiSc1lpwrZE4zOcEWbOvPEh`tQcVN^ z|HA%%cW`}_A$iP|y~6&Lng3%ozi++XfswQB%HATt`8$~Z_S@e#UvEapCVgePh}S@D q{vR#-cR$z9+dpxML~yo$X7s9&X{e$j(gOhCAg(OL3D_Y*uKoih5e3Bn literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/public/content/translations/ja/developers/docs/nodes-and-clients/nodes-as-a-service/index.md index b996036c885..ac81693a7df 100644 --- a/public/content/translations/ja/developers/docs/nodes-and-clients/nodes-as-a-service/index.md +++ b/public/content/translations/ja/developers/docs/nodes-and-clients/nodes-as-a-service/index.md @@ -76,6 +76,15 @@ sidebarDepth: 2 - トレース/デバッグ名前空間が利用可能 - 自動アップデート - 技術サポート +- [**Amazon Managed Blockchain**](https://aws.amazon.com/managed-blockchain/) + - [ドキュメント](https://aws.amazon.com/managed-blockchain/resources/) + - 機能 + - フルマネージド・イーサリアム・ノード + - 6つのリージョンで利用可能 + - HTTP上のJSON-RPCおよび安全なWebSocket + - 3つのチェーンのサポート + - 年中無休のSLA、AWSサポート + - Go-ethereumおよびLighthouse - [**Ankr**](https://www.ankr.com/) - [ドキュメント](https://docs.ankr.com/) - 機能 @@ -86,7 +95,7 @@ sidebarDepth: 2 - 従量課金制 - 分析ツール - ダッシュボード - - RPC、HTTPSおよびWSSエンドポイント + - RPC、HTTPS、WSSエンドポイント - ダイレクトサポート - [**Blast**](https://blastapi.io/) - [ドキュメント](https://docs.blastapi.io/) @@ -268,7 +277,7 @@ sidebarDepth: 2 - ハンズオンデベロッパーサポート - [Pocket Portal](https://bit.ly/ETHorg_POKTportal)ダッシュボードと分析 - [**QuickNode**](https://www.quicknode.com) - - [ドキュメンテーション](https://www.quicknode.com/docs/) + - [ドキュメント](https://www.quicknode.com/docs/) - 機能 - 24時間年中無休の技術サポートとデベロッパーのDiscordコミュニティ - 地理的なバランスを考慮した、マルチクラウド/メタルの低遅延ネットワーク @@ -281,19 +290,19 @@ sidebarDepth: 2 - [SOC2認証](https://www.quicknode.com/security) - デベロッパーからエンタープライズまで幅広く対応 - [**Rivet**](https://rivet.cloud/) - - [ドキュメンテーション](https://rivet.readthedocs.io/en/latest/) + - [ドキュメント](https://rivet.readthedocs.io/en/latest/) - 機能 - 無料ティアオプション - 従量課金制 - [**SenseiNode**](https://senseinode.com) - - [ドキュメンテーション](https://docs.senseinode.com/) + - [ドキュメント](https://docs.senseinode.com/) - 機能 - 専用ノードと共有ノード - ダッシュボード - ラテンアメリカの様々な地域に拠点を置く複数のホスティングプロバイダーを利用して、AWS外部でホスティング - PrysmとLighthouseクライアント - [**SettleMint**](https://console.settlemint.com/) - - [ドキュメンテーション](https://docs.settlemint.com/) + - [ドキュメント](https://docs.settlemint.com/) - 機能 - 無料トライアル - 従量課金制 @@ -306,7 +315,7 @@ sidebarDepth: 2 - 時間課金制 - ダイレクトサポート - [**Tenderly**](https://tenderly.co/web3-gateway) - - [ドキュメンテーション](https://docs.tenderly.co/web3-gateway/web3-gateway) + - [ドキュメント](https://docs.tenderly.co/web3-gateway/web3-gateway) - 機能 - 1か月あたり2,500万Tenderlyユニットを含む無料ティア - 履歴データへの無料アクセス diff --git a/public/content/translations/ja/developers/docs/nodes-and-clients/nodes.svg.xlsx b/public/content/translations/ja/developers/docs/nodes-and-clients/nodes.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..51245e3b6e8819ef10e2cc51a3a900e508d49a57 GIT binary patch literal 4938 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 literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/developers/docs/nodes-and-clients/run-a-node/diagram.svg.xlsx b/public/content/translations/ja/developers/docs/nodes-and-clients/run-a-node/diagram.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f6f93e5f7ffb8a3ce4a41f2b64aa3ed4571a4753 GIT binary patch literal 4886 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 Ee{PxIAOHXW literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/ja/developers/docs/nodes-and-clients/run-a-node/index.md index 63af55eb995..7fed8b3f087 100644 --- a/public/content/translations/ja/developers/docs/nodes-and-clients/run-a-node/index.md +++ b/public/content/translations/ja/developers/docs/nodes-and-clients/run-a-node/index.md @@ -99,7 +99,7 @@ sidebarDepth: 2 - 注: エリゴンにはスナップ同期機能はありませんが、フルプルーニングは可能です(約500GB) -コンセンサスクライアントの必要な容量は、クライアントの実装や有効にした機能(バリデータスラッシャーなど)によって変わりますが、概ねビーコンデータ用にさらに200GB必要です。 また、多数のバリデータを実行すると、帯域幅への負荷も大きくなります。 [こちら](https://medium.com/@migalabs/analysis-of-ethereum-2-consensus-clients-dfede8e0145e)に、本分析のコンセンサスクライアントの要件詳細が記載されています。 +コンセンサスクライアントの必要な容量は、クライアントの実装や有効にした機能(バリデータスラッシャーなど)によって変わりますが、概ねビーコンデータ用にさらに200GB必要です。 また、多数のバリデータを実行すると、帯域幅への負荷も大きくなります。 [この分析を通して、コンセンサスクライアントの要件の詳細](https://mirror.xyz/0x934e6B4D7eee305F8C9C42b46D6EEA09CcFd5EDc/b69LBy8p5UhcGJqUAmT22dpvdkU-Pulg2inrhoS9Mbc)がわかります。 #### プラグ・アンド・プレイ・ソリューション {#plug-and-play} @@ -126,7 +126,7 @@ Raspberry PiのようなARMアーキテクチャのシングルボードコン 数回クリックするだけで、クライアントのインストールや制御ができる便利なプロジェクトを紹介します。 -- [DappNode](https://docs.dappnode.io/user/quick-start/first-steps/) - DappNodeはベンダーから提供されるマシンに限らず、 ノードランチャーやコントロールセンターのソフトウェアは多くの機能があり、任意のハードウェアで使用可能。 +- [DappNode](https://docs.dappnode.io/docs/user/getting-started/choose-your-path) - DappNodeは、ベンダーのマシンだけに付属しているわけではありません。 ノードランチャーやコントロールセンターのソフトウェアは多くの機能があり、任意のハードウェアで使用可能。 - [eth-docker](https://eth-docker.net/) - Dockerを使った自動設定は、簡単で安全なステーキングに焦点を当てており、ターミナルとDockerの基本的な知識が必要。少し上級のユーザー向け。 - [Stereum](https://stereum.net/ethereum-node-setup/) - SSH接続でリモートサーバにクライアントをインストールするためのランチャー。GUIセットアップガイド、コントロールセンター、その他多くの機能搭載。 - [NiceNode](https://www.nicenode.xyz/) - コンピュータ上でノードを実行するためのランチャー。分かりやすいユーザーエクスペリエンスが特徴。 クライアントを選択し、数回クリックするだけで開始可能。 現在、開発中。 @@ -431,7 +431,7 @@ _これはコンセンサスレイヤーのバリデータノードには適用 クライアントソフトウェアは、最新のセキュリティパッチ、機能、 [EIP](/eips/)の最新バージョンを常にインストールしておく必要があります。 特に、[ハードフォーク](/history/)が行われる前に、正しいクライアントバージョンを実行していることを確認してください。 -> 重要なネットワーク更新の前には、イーサリアム・ファウンデーション(EF)の[ブログ](https://blog.ethereum.org)で投稿されます。 [これらのお知らせを購読する](https://groups.google.com/a/ethereum.org/g/announcements)ことで、ノードの更新が必要なときにメールで通知を受け取ることができます。 +> 重要なネットワーク更新の前には、イーサリアム・ファウンデーション(EF)の[ブログ](https://blog.ethereum.org)で投稿されます。 [これらのお知らせを購読する](https://blog.ethereum.org/category/protocol#subscribe)ことで、ノードの更新が必要なときにメールで通知を受け取ることができます。 クライアントの更新は非常に簡単です。 各クライアントのドキュメントに具体的な手順が記載されていますが、一般的には、最新版をダウンロードし、新しい実行ファイルを使ってクライアントを再起動するだけです。 アップデートが適用され、クライアントは前回終了したところから再開します。 diff --git a/public/content/translations/ja/developers/docs/programming-languages/dart/index.md b/public/content/translations/ja/developers/docs/programming-languages/dart/index.md index 101d6d4aeae..45d386afa69 100644 --- a/public/content/translations/ja/developers/docs/programming-languages/dart/index.md +++ b/public/content/translations/ja/developers/docs/programming-languages/dart/index.md @@ -17,6 +17,8 @@ incomplete: true - ビデオでの学習をご希望の場合は、[初めてのブロックチェーンFlutterアプリの構築](https://www.youtube.com/watch?v=3Eeh3pJ6PeA)をご覧いただけます。このビデオは約1時間です。 - 時間がない場合は、[イーサリアムでのFlutterとDartを使用したブロックチェーンの分散型アプリの構築](https://www.youtube.com/watch?v=jaMFEOCq_1s)をご覧ください。このビデオはわずか20分です。 - [FlutterアプリケーションへのMetaMaskの統合](https://youtu.be/8qzVDje3IWk) - この短いビデオでは、FlutterアプリケーションにMetaMaskを統合する手順を段階的に説明しています。 +- [Flutter Dappシンプルウォレット](https://youtu.be/JMfIBpuAhKA)と[はじめてのFlutter DApp - Solidity、Truffle、Ganache](https://youtu.be/bHw2gQZxJ_s) - これらのビデオは、TruffleとGanacheを使ってFlutterで簡単なDappsを作成する方法を案内します。 +- [SolidityとFlutterによるモバイル・ブロックチェーン・デベロッパー・ブートキャンプ・コース](https://youtube.com/playlist?list=PL4V4Unlk5luhQ26ERO6hWEbcUwHDSSmVH) - フルスタック・モバイル・ブロックチェーン・デベロッパー・コースのプレイリスト ## イーサリアムクライアントの操作 {#working-with-ethereum-clients} diff --git a/public/content/translations/ja/developers/docs/programming-languages/golang/index.md b/public/content/translations/ja/developers/docs/programming-languages/golang/index.md index a5d5157f745..300acc7eb96 100644 --- a/public/content/translations/ja/developers/docs/programming-languages/golang/index.md +++ b/public/content/translations/ja/developers/docs/programming-languages/golang/index.md @@ -65,6 +65,7 @@ incomplete: true - [Multi Geth](https://github.com/multi-geth/multi-geth) - _多くの種類のイーサリアムネットワークをサポート_ - [Gethライトクライアント](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client) - _ライトイーサリアムサブプロトコルのGeth実装_ - [イーサリアムGolang SDK](https://github.com/everFinance/goether) - _Golangでのシンプルなイーサリアムウォレットの実装とユーティリティ_ +- [Covalent Golang SDK](https://github.com/covalenthq/covalent-api-sdk-go) - _Go SDKを通して200以上のブロックチェーンでブロックチェーンデータへ効率的にアクセス_ もっとリソースをお探しですか? [ethereum.org/developers](/developers/)をご確認ください。 diff --git a/public/content/translations/ja/developers/docs/programming-languages/python/index.md b/public/content/translations/ja/developers/docs/programming-languages/python/index.md index f3bbeb2d48f..09798ea4116 100644 --- a/public/content/translations/ja/developers/docs/programming-languages/python/index.md +++ b/public/content/translations/ja/developers/docs/programming-languages/python/index.md @@ -51,13 +51,10 @@ incomplete: true - [Web3.py](https://github.com/ethereum/web3.py) - _イーサリアムとやり取りするためのPythonライブラリ_ - [Vyper](https://github.com/ethereum/vyper/) - _EVMのためのPythonライクなスマートコントラクト言語_ - [Ape](https://github.com/ApeWorX/ape) - _パイソニスタ、データサイエンティスト、セキュリティプロフェッショナル向けのスマートコントラクト開発ツール_ -- [Brownie](https://github.com/eth-brownie/brownie) - _イーサリアムスマートコントラクトのデプロイ、テスト、やり取りを行うためのPythonフレームワーク_ - [py-evm](https://github.com/ethereum/py-evm) - _イーサリアム仮想マシンの実装_ - [eth-tester](https://github.com/ethereum/eth-tester) - _イーサリアムベースのアプリケーションをテストするためのツール_ - [eth-utils](https://github.com/ethereum/eth-utils/) - _イーサリアム関連のコードベースを操作するためのユーティリティ関数_ - [py-solc-x](https://pypi.org/project/py-solc-x/) - _solc SolidityコンパイラのPythonラッパー (Solidity 0.5xをサポート)_ -- [py-wasm](https://github.com/ethereum/py-wasm) - _WebAssemblyインタプリタのPython実装_ -- [pydevp2p](https://github.com/ethereum/pydevp2p) - _イーサリアムのP2Pスタックの実装_ - [pymaker](https://github.com/makerdao/pymaker) - _MakerコントラクトのためのPython API_ - [siwe](https://github.com/spruceid/siwe-py) - _Pythonのためのイーサリアムによるサインイン (siwe)_ - [イーサリアムの統合のためのWeb3 DeFi](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _ERC-20、Uniswap、その他の一般的なプロジェクトのための、すぐに統合を行えるPythonパッケージ_ @@ -66,6 +63,9 @@ incomplete: true - [Trinity](https://github.com/ethereum/trinity) - _イーサリアムPythonクライアント_ - [Mamba](https://github.com/arjunaskykok/mamba) - _Vyper言語で記述された、スマートコントラクトの記述、コンパイル、デプロイのためのフレームワーク_ +- [Brownie](https://github.com/eth-brownie/brownie) - _イーサリアムスマートコントラクトのデプロイ、テスト、やり取りを行うためのPythonフレームワーク_ +- [pydevp2p](https://github.com/ethereum/pydevp2p) - _イーサリアムのP2Pスタックの実装_ +- [py-wasm](https://github.com/ethereum/py-wasm) - _WebAssemblyインタプリタのPython実装_ もっとリソースをお探しですか? [ethereum.org/developers](/developers/)をご確認ください。 @@ -82,8 +82,8 @@ incomplete: true ## Pythonコミュニティディスカッション {#python-community-contributors} - [イーサリアムPythonコミュニティのDiscord](https://discord.gg/9zk7snTfWe) Web3.pyやその他のPythonフレームワークについてのディスカッションを行う場所 -- [Vyper Discord](https://discord.gg/SdvKC79cJk) Vyperスマートコントラクトのプログラミングについてのディスカッションを行う場所 +- [Vyper Discord](https://discord.gg/SdvKC79cJk) Vyperスマートコントラクトのプログラミングのディスカッション ## その他のリスト {#other-aggregated-lists} -Vyper wikiには、[Vyperのための充実したリソースのリスト](https://github.com/ethereum/vyper/wiki/Vyper-tools-and-resources)があります。 +Vyper wikiには、 [Vyperに関する豊富なリソースがあります。](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources) \ No newline at end of file diff --git a/public/content/translations/ja/developers/docs/programming-languages/rust/index.md b/public/content/translations/ja/developers/docs/programming-languages/rust/index.md index 75f945ae477..c8c22dc1184 100644 --- a/public/content/translations/ja/developers/docs/programming-languages/rust/index.md +++ b/public/content/translations/ja/developers/docs/programming-languages/rust/index.md @@ -42,7 +42,7 @@ incomplete: true - [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _イーサリアムライクのネットワークとやり取りするためのexternのコレクション_ - [Lighthouse](https://github.com/sigp/lighthouse) - _高速イーサリアムコンセンサスレイヤークライアント_ - [Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _WebAssemblyの決定論的サブセットを使用して、イーサリアムスマートコントラクト実行レイヤーを再設計する提案_ -- [oasis_std](https://docs.rs/oasis-std/0.2.7/oasis_std/) - _OASIS APIリファレンス_ +- [oasis_std](https://docs.rs/oasis-std/latest/oasis_std/index.html) - _OASIS APIレファレンス_ - [Solaris](https://github.com/paritytech/sol-rs) - _ネイティブParityクライアントEVMを使用したSolidityスマートコントラクトのユニットテストハーネス_ - [SputnikVM](https://github.com/rust-blockchain/evm) - _Rustのイーサリアム仮想マシンの実装_ - [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _Rustで書かれたWaveletスマートコントラクト_ diff --git a/public/content/translations/ja/developers/docs/scaling/optimistic-rollups/index.md b/public/content/translations/ja/developers/docs/scaling/optimistic-rollups/index.md index 9a32fa829b4..05e2d89dc41 100644 --- a/public/content/translations/ja/developers/docs/scaling/optimistic-rollups/index.md +++ b/public/content/translations/ja/developers/docs/scaling/optimistic-rollups/index.md @@ -42,7 +42,7 @@ lang: ja オプティミスティック・ロールアップでは、以下の事項につきイーサリアムメインネットのプロトコルに依存します: -### データ可用性 {#data-availability} +### データの可用性 {#data-availability} すでに述べたように、オプティミスティック・ロールアップではトランザクションのデータを`calldata`としてイーサリアムに送信します。 ロールアップチェーンは送信されたトランザクションに基づき実行されるため、イーサリアムのベースレイヤーに含まれるコールデータの情報を用いて、どのユーザーでもロールアップのステートを実行し、状態遷移の正しさを検証することができます。 @@ -216,7 +216,7 @@ ii. オプティミスティック・ロールアップを使用するデベロ | ガス価格 | 〜8 | 0~0.5 | | ガス | 3 | 0~0.5 | | To | 21 | 4 | -| 値 | 9 | 約3 | +| 値 | 9 | 〜3 | | 署名 | 〜68(2+33+33) | 〜0.5 | | From | 0(署名から復元) | 4 | | **合計** | **約112バイト** | **約12バイト** | @@ -233,7 +233,7 @@ ii. オプティミスティック・ロールアップを使用するデベロ ### オプティミスティック・ロールアップの長所と短所 {#optimistic-rollups-pros-and-cons} -| 長所 | 短所 | +| メリット | デメリット | | ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | | セキュリティやトラストレス性を犠牲にすることなく、スケーラビリティが大幅に向上する。 | 虚偽の異議申立により、トランザクションに遅延が発生する可能性がある。 | | トランザクションデータはL1チェーン上で保存されるため、透明性、セキュリティ、検閲耐性、および分散化が向上する。 | ロールアップにおける中央集権的なオペレーター(シーケンサー)により、トランザクションの順序が影響を受ける可能性がある。 | @@ -245,7 +245,7 @@ ii. オプティミスティック・ロールアップを使用するデベロ ### オプティミスティック・ロールアップに関する説明動画 {#optimistic-video} -映像で学びたい方は、 Finematicsによるオプティミスティック・ロールアップの説明をご覧ください: +映像で学びたい場合 Finematicsによるオプティミスティック・ロールアップの説明をご覧ください: diff --git a/public/content/translations/ja/developers/docs/scaling/plasma/index.md b/public/content/translations/ja/developers/docs/scaling/plasma/index.md index 9de08249b3c..06e67ee7ad9 100644 --- a/public/content/translations/ja/developers/docs/scaling/plasma/index.md +++ b/public/content/translations/ja/developers/docs/scaling/plasma/index.md @@ -34,7 +34,7 @@ sidebarDepth: 3 プラズマチェーンでは、処理速度とコストを最適化するためにオフチェーンでの計算が必須になります。 例えば、大部分のプラズマチェーンでは、トランザクションの順位付けと実行を管理する役割を、1名の「オペレーター」に担わせています。 トランザクションを検証する役割を1つのエンティティのみに負わせることで、プラズマチェーンは処理時間をメインネットよりも短縮できるのです。 -### ステートコミットメント {#state-commitments} +### 状態コミットメント {#state-commitments} プラズマでは、トランザクションをオフチェーンで実行するものの、その決済はメインのイーサリアム実行レイヤーで行います。後者が存在しなければ、プラズマチェーンはイーサリアムによるセキュリティ保証を活用できないためです。 しかし、プラズマチェーンの状態を把握せずにオフチェーンのトランザクションをファイナライズする場合は、このセキュリティモデルが破綻し、無効なトランザクションが横行してしまうでしょう。 このため、プラズマチェーンにおけるブロック生成の責任を負うエンティティであるオペレーターは、定期的に、イーサリアムに「状態コミットメント」を書き込む必要があります。 @@ -106,7 +106,7 @@ sidebarDepth: 3 ## プラズマチェーンの長所と短所 {#pros-and-cons-of-plasma} -| 長所 | 短所 | +| メリット | デメリット | | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | | 高スループットおよびトランザクションあたりの低コスト。 | 汎用的な計算をサポートしない(スマートコントラクトを実行できない)。 述語論理により、基本的なトークンの転送、スワップ、およびその他数種類のトランザクションタイプのみに対応しています。 | | 任意のユーザー間の取引に適している(プラズマチェーン上で設定されたユーザーペア間においては、間接費用が発生しない)。 | 資金の安全性を保護するには、ネットワークを定期的に監視する(ライブネス要件)か、この役割を特定のユーザーに委任する必要がある。 | diff --git a/public/content/translations/ja/developers/docs/scaling/sidechains/index.md b/public/content/translations/ja/developers/docs/scaling/sidechains/index.md index 56197419cf5..8a2c888f018 100644 --- a/public/content/translations/ja/developers/docs/scaling/sidechains/index.md +++ b/public/content/translations/ja/developers/docs/scaling/sidechains/index.md @@ -49,7 +49,7 @@ sidebarDepth: 3 ## サイドチェーンの長所と短所 {#pros-and-cons-of-sidechains} -| 長所 | 短所 | +| メリット | デメリット | | ------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | サイドチェーンの基盤技術は十分に確立されており、広範なリサーチおよび設計上の改善を経ています。 | サイドチェーンでは、スケーラビリティを実現するためのトレードオフとして、分散化およびトラストレス性がある程度犠牲になります。 | | サイドチェーンは、全般的な計算をサポートし、EVM互換性を提供します(イーサリアムネイティブのDappが実行可能)。 | サイドチェーンでは、別個のコンセンサスメカニズムが用いられるため、イーサリアムによるセキュリティ保証を活用できません。 | @@ -60,9 +60,9 @@ sidebarDepth: 3 複数のプロジェクトにおいて、Dappと統合できるサイドチェーン実装が提供されています。 -- [Polygon PoS](https://polygon.technology/solutions/polygon-pos) +- [Polygon PoS ](https://polygon.technology/solutions/polygon-pos) - [Skale](https://skale.network/) -- [Gnosis Chain(旧 xDai](https://www.gnosischain.com/) +- [Gnosis Chain(旧 xDai)](https://www.gnosischain.com/) - [Loom Network](https://loomx.io/) - [Metis Andromeda](https://www.metis.io/) @@ -70,4 +70,4 @@ sidebarDepth: 3 - [サイドチェーンを用いてイーサリアムのDappにおけるスケーラビリティを実現する](https://medium.com/loom-network/dappchains-scaling-ethereum-dapps-through-sidechains-f99e51fff447) _2018年2月8日、ジョルジオス・コンスタントプロス作成。_ -_役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。_ +_役に立ったコミュニティリソースがあれば、 ぜひこのページに追加してください。_ diff --git a/public/content/translations/ja/developers/docs/scaling/state-channels/index.md b/public/content/translations/ja/developers/docs/scaling/state-channels/index.md index b87b05e52cc..45c7ca6e7cc 100644 --- a/public/content/translations/ja/developers/docs/scaling/state-channels/index.md +++ b/public/content/translations/ja/developers/docs/scaling/state-channels/index.md @@ -9,7 +9,7 @@ sidebarDepth: 3 ## 前提知識 {#prerequisites} -[イーサリアムスケーリング](/developers/docs/scaling/)と[レイヤー2](/layer-2/)のページを読んで理解しておくことをお勧めします。 +[イーサリアムにおけるスケーリング](/developers/docs/scaling/)と[レイヤー2](/layer-2/) のページを読み、理解しておくことをおすすめします。 ## チャネルとは何か? {#what-are-channels} @@ -153,7 +153,7 @@ sidebarDepth: 3 ## ステートチャネルの応用例 {#applications-of-state-channels} -### 支払い {#payments} +### お支払い {#payments} ブロックチェーンにおける初期のチャネルは、メインネットにおいて高額の手数料を発生させることなく、2名のユーザーがオフチェーンで、迅速かつ安価な送金を行うことができるシンプルなプロトコルでした。 ペイメントチャネルは現在でも、イーサ(ETH)やその他のトークンの交換や預入を行う目的において有益だと言えます。 @@ -205,7 +205,7 @@ sidebarDepth: 3 一部のチャネルでは、他のユーザーの代理としてオンチェーン上の紛争イベントを監視し、必要に応じてアクション(関連当事者にアラートを発信するなど)を実行する「監視塔」のエンティティを設定しています。 ただしこのアプローチでは、ステートチャネルの利用コストが上昇する可能性があります。 -### データ入手不可能性 (Data unavailability) {#data-unavailability} +### データの可用性がない {#data-unavailability} すでに述べたように、紛争が無効であるとして異議を申し立てるためには、ステートチャネルの最終有効状態を送信する必要があります。 これも、各ユーザーがチャネルの最新状態にアクセス可能であるという想定に基づいたルールだと言えます。 @@ -258,4 +258,4 @@ OSPの側も、複数のピアが参加するチャネルを開設できるた - [ステートチャネルの基礎](https://education.district0x.io/general-topics/understanding-ethereum/basics-state-channels/) - _District0x_ - [ブロックチェーンにおけるステートチャネル:現在の状況](https://ieeexplore.ieee.org/document/9627997) -_役に立つコミュニティリソースをご存知の場合は、 このページを編集して追加してください。_ +_役に立ったコミュニティリソースがあれば、 ぜひこのページに追加してください。_ diff --git a/public/content/translations/ja/developers/docs/scaling/validium/index.md b/public/content/translations/ja/developers/docs/scaling/validium/index.md index 2082a43a18f..8df142984f1 100644 --- a/public/content/translations/ja/developers/docs/scaling/validium/index.md +++ b/public/content/translations/ja/developers/docs/scaling/validium/index.md @@ -51,7 +51,7 @@ sidebarDepth: 3 オペレーターは、複数のトランザクションをバッチ化した上で、検証のために証明サーキットに送信します。 証明サーキットは、このトランザクションバッチ(およびその他の関連データ)をインプットとして受け取り、操作が正しく実行されたことを検証する有効性証明をアウトプットとして出力します。 -### ステート・コミットメント {#state-commitments} +### 状態コミットメント {#state-commitments} バリディアムの状態は、ルートがイーサリアムのメインコントラクトに保存されたマークルツリーとしてハッシュ化されます。 マークルルート(ステートルートとも呼ぶ)は、バリディアムチェーンにおける各アカウントおよび残高の現在状態に対する暗号コミットメントの役割を担います。 @@ -71,7 +71,7 @@ sidebarDepth: 3 ゼロ知識ロールアップとは異なり、バリディアム上のブロック生成者は、トランザクションを含むバッチのトランザクションデータを公開する必要がありません(ブロックヘッダーのみ公開すればよいです)。 これによりバリディアムは、メインのイーサリアムチェーンに状態データを`calldata`として公開する「ハイブリッド型」のスケーリング・プロトコル(つまり、[レイヤー2](/layer-2/))ではなく、純粋にオフチェーンのスケーリング・プロトコルであると言えます。 -### データ可用性 {#data-availability} +### データの可用性 {#data-availability} 前述のように、バリディアムでは、オペレーターがすべてのトランザクションデータをイーサリアムメインネット外で保存するというオフチェーンのデータ可用性モデルを採用しています。 バリディアムでは、オンチェーンにおけるデータ消費量が少ないため、スケーラビリティが向上し(イーサリアムのデータ処理能力によりスループットが制限されない)、ユーザー手数料が軽減されます(`calldata`を公開する費用が抑えられる)。 @@ -133,7 +133,7 @@ Volitionsは、ゼロ知識ロールアップとバリディアムチェーン ## バリディアムの長所と短所 {#pros-and-cons-of-validium} -| 長所 | 短所 | +| メリット | デメリット | | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | | 有効性証明により、オフチェーンにおけるトランザクションの完全性が確保でき、オペレーターが無効な状態アップデートをファイナライズできなくなる。 | 有効性証明を生成するには特別なハードウェアが必要なため、分散化が低下するリスクがある。 | | ユーザーがより効率的に資金を利用できる(イーサリアムへの資金引き出しにおいて、遅延が発生しない)。 | 汎用的な計算/スマートコントラクトに対するサポートが限定的であり、開発には特殊な言語が必要である。 | @@ -153,7 +153,8 @@ Volitionsは、ゼロ知識ロールアップとバリディアムチェーン **Matter Labs zkPorter**- _zkPorterは、ゼロ知識ロールアップとシャーディングを結合したハイブリッド型のアプローチによりデータ化要請を追跡する、レイヤー2のスケーリング・プロトコルです。 任意の数のシャードをサポートしており、シャードごとに異なるデータ可用性ポリシーを定めることができます。_ -- [ドキュメント](https://docs.zksync.io/zkevm/#what-is-zkporter) +- [ブログ](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf) +- [ドキュメント](https://docs.zksync.io/zk-stack/concepts/hyperchains-hyperscaling.html#logical-state-partitions-in-zk-porters) - [ウェブサイト](https://zksync.io/) ## 参考文献 {#further-reading} diff --git a/public/content/translations/ja/developers/docs/scaling/zk-rollups/index.md b/public/content/translations/ja/developers/docs/scaling/zk-rollups/index.md index 834be6be684..c4f0f6b0bfc 100644 --- a/public/content/translations/ja/developers/docs/scaling/zk-rollups/index.md +++ b/public/content/translations/ja/developers/docs/scaling/zk-rollups/index.md @@ -8,7 +8,7 @@ lang: ja ## 前提知識 {#prerequisites} -[イーサリアムのスケーリング](/developers/docs/scaling/)と[レイヤー2](/layer-2)のページを読んで理解しておくことをお勧めします。 +[イーサリアムのスケーリング](/developers/docs/scaling/)と[レイヤー2](/layer-2) のページを読んで理解しておくことをおすすめします。 ## ゼロ知識ロールアップとは何か? {#what-are-zk-rollups} @@ -34,7 +34,7 @@ ZKロールアップは、イーサリアムとは別個に実行されるもの ZKロールアップでは、以下の事項につきメインのイーサリアムプロトコルに依存します: -### データ可用性 {#data-availability} +### データの可用性 {#data-availability} ZKロールアップでは、オフチェーンで処理されたすべてのトランザクションの状態データをイーサリアムに書き込みます。 個人または企業のユーザーは、このデータを用いてロールアップの状態を再現し、チェーン自体を検証することができます。 イーサリアムでは、ネットワークのすべての参加者に対し、このデータを`calldata`として提供します。 @@ -66,7 +66,7 @@ ZKロールアップのユーザーは、トランザクションに署名した 多くの場合、`calldata`におけるキーワードがトランザクションで呼び出されるスマートコントラクトのメソッドを決定し、当該メソッドへの入力を任意のバイト列として保持します。 ZKロールアップでは、`calldata`を用いて圧縮されたトランザクションデータをオンチェーンに書き込みます。ロールアップのオペレーターの役割は、ロールアップのコントラクトにおいて要求される関数を呼び出し、関数の引数として圧縮データを渡すことにより新規バッチを追加することだけです。 このため、ロールアップにおける手数料の大半はトランザクションデータのオンチェーンの保存において発生するため、ユーザー手数料が軽減されます。 -### ステートコミットメント {#state-commitments} +### 状態コミットメント {#state-commitments} L2のアカウントおよび残高が含まれるZKロールアップの状態は、[マークルツリー](/whitepaper/#merkle-trees)として表示されます。 マークルツリーのルート(マークルルート)の暗号ハッシュがオンチェーンのコントラクトに保存されるため、ロールアップのプロトコルによりZKロールアップの状態変化を追跡することができます。 @@ -146,7 +146,7 @@ ZKロールアップのノードは、トランザクションが一定数に達 この有効性証明が証明サーキットに合格した場合(つまり、有効性証明が有効である場合)、ロールアップを古い状態(事前のステートルートにより暗号学的にフィンガープリントされる)から新しい状態(事後のステートルートにより暗号学的にフィンガープリントされる)に移行させる、有効なトランザクションのシーケンスが存在することになります。 事前のステートルートがロールアップのコントラクトに保存されたルートと一致し、有効性証明が有効であれば、ロールアップのコントラクトは有効性証明から事後のステートルートを取り出し、ロールアップの変更後の状態を反映するようにステートツリーを更新します。 -### 参加と退出 {#entries-and-exits} +### プラズマチェーンへの参加と退出 {#entries-and-exits} ユーザーがZKロールアップに参加するには、L1チェーン上でデプロイされたロールアップのコントラクトにトークンを入金する必要があります。 ロールアップのコントラクトにトランザクションを送信できるのはオペレーターのみであるため、このトランザクションはキュー上で保留されます。 @@ -180,7 +180,7 @@ ZKロールアップにおけるトランザクション手数料は、イーサ 1. **ステートへの書き込み**: イーサリアムのステートに書き込む(つまり、イーサリアムブロックチェーンにトランザクションを送信する)場合、固定コストが発生します。 ZKロールアップでは、トランザクションをバッチ化し、固定コストを複数のユーザーに分散させることで、ユーザーあたりのコストを引き下げています。 -2. **データの公開**: ZKロールアップでは、各トランザクションの状態データを`calldata`としてイーサリアムに送信します。 現在、`calldata`のコストは [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) によって管理されています。 `calldata` の非ゼロバイトに対しては16ガス、ゼロバイトに対しては4ガスのコストが、それぞれ規定されています。 各トランザクションに対して支払われるコストは、オンチェーンで公開される`calldata`の規模に応じて決定されます。 +2. **データの公開**: ZKロールアップでは、各トランザクションの状態データを`calldata`としてイーサリアムに送信します。 現在、`calldata`の費用は[EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)によって管理されています。`calldata`がゼロバイト以上であれば16ガス、ゼロバイトの場合は4ガスの費用が発生します。 各トランザクションに対して支払われるコストは、オンチェーンで公開される`calldata`の規模に応じて決定されます。 3. **L2オペレーターに対する手数料**: これは、イーサリアムにおけるマイナー手数料の場合と同様に、トランザクションの処理で発生した計算コストの代価としてロールアップのオペレーターに支払う手数料です。 @@ -196,7 +196,7 @@ ZKロールアップでは、オフチェーンでの計算を通じてイーサ ZKロールアップでは、各トランザクションを検証するためにすべての関連データを書き込む必要がないため、オプティミスティック・ロールアップよりもデータの圧縮度が高いと言えます。 ロールアップにおけるアカウントおよび残高の最新状態を再構築する上で、必要最小限のデータのみを送信すればよいのです。 -### 再帰的プルーフ {#recursive-proofs} +### 再帰的証明 {#recursive-proofs} ゼロ知識証明の優位性のひとつとして、他の種類の証明を検証するためにも使用できる点が挙げられます。 例えば、あるZK-SNARKを用いて他の複数のZK-SNARKを検証することができます。 このような「プルーフに対するプルーフ」を再帰的プルーフと呼び、ZKロールアップのスループットを劇的に向上させます。 @@ -206,7 +206,7 @@ ZKロールアップでは、各トランザクションを検証するために ### ZKロールアップの長所と短所 {#zk-rollups-pros-and-cons} -| 長所 | 短所 | +| メリット | デメリット | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- | | 有効性証明により、オフチェーンのトランザクションの正しさが保証でき、オペレーターが無効な状態遷移を実行するのを防ぐことができる。 | 有効性証明を計算、検証する際にかなりのコストが発生し、ロールアップにおけるユーザー手数料がかさむ可能性がある。 | | 有効性証明がL1上で検証されれば状態更新が承認されるため、トランザクションのファイナリティをより迅速に実現できる。 | ゼロ知識は複雑な関連技術を要するため、EVM互換のZKロールアップ構築は容易ではない。 | @@ -232,22 +232,22 @@ FinematicsによるZKロールアップの説明動画をご覧ください: 現在、zkEVMの開発に取り組んでいるプロジェクトとしては、以下が挙げられます: -- **[Applied ZKP](https://github.com/privacy-scaling-explorations/zkevm-specs)** - _Applied ZKPは、イーサリアム・ファウンデーションによる資金提供に基づき、EVM互換のZKロールアップならびにイーサリアムブロックに対する有効性証明を生成するメカニズムを開発するプロジェクトです。 +- **[zkEVM](https://github.com/privacy-scaling-explorations/zkevm-specs)** - _zkEVMは、イーサリアム・ファウンデーションによる資金提供に基づき、EVM互換のZKロールアップならびにイーサリアムブロックに対する有効性証明を生成するメカニズムを開発するプロジェクトです。_ -- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)** - _イーサリアムメインネット上の分散型ゼロ知識ロールアップであり、ゼロ知識証明による検証が可能なスマートコントラクトなど、イーサリアムのトランザクションを透明性が高い方法で実行するゼロ知識イーサリアム仮想マシン(zkEVM)の開発に取り組んでいます。 +- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)** - _イーサリアムメインネット上の分散型ゼロ知識ロールアップであり、ゼロ知識証明による検証が可能なスマートコントラクトなど、イーサリアムのトランザクションを透明性が高い方法で実行するゼロ知識イーサリアム仮想マシン(zkEVM)の開発に取り組んでいます。

- **[Scroll](https://scroll.io/blog/zkEVM)** - _Scrollは、ネイティブのzkEVMを搭載したイーサリアムのレイヤー2ソリューションを開発中のテクノロジー企業です。_ - **[Taiko](https://taiko.xyz)** - _Taiko は分散型のイーサリアム等価のゼロ知識ロールアップです ([タイプ1のZK-EVM](https://vitalik.eth.limo/general/2022/08/04/zkevm.html))_。 -- **[ZKSync](https://docs.zksync.io/zkevm/)** - _ZkSync Eraは、Matter Labsが独自開発したzkEVMを搭載するEVM互換のゼロ知識ロールアップです_。 +- **[ZKSync](https://docs.zksync.io/)** - _ZkSync Eraは、Matter Labsが独自開発したzkEVMを搭載するEVM互換のゼロ知識ロールアップです_。 -- **[Starknet](https://starkware.co/starknet/)** - _StarkNetは、StarkWareによって開発されたEVM互換のレイヤー2スケーリングソリューションです。_ +- **[Starknet](https://starkware.co/starknet/)** - _StarkNetは、StarkWareによって開発されたEVM互換のレイヤー2スケーリングソリューションです。_ ## ZKロールアップの参考文献 {#further-reading-on-zk-rollups} - [ゼロ知識ロールアップとは何か?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups) -- [ゼロ知識ロールアップとは?](https://alchemy.com/blog/zero-knowledge-rollups) +- [ゼロ知識ロールアップとは何か?](https://alchemy.com/blog/zero-knowledge-rollups) - [STARKとSNARKの相違点](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/) - [zkEVMとは何か?](https://www.alchemy.com/overviews/zkevm) - [zkEVMのイントロダクション](https://hackmd.io/@yezhang/S1_KMMbGt) diff --git a/public/content/translations/ja/developers/docs/smart-contracts/anatomy/index.md b/public/content/translations/ja/developers/docs/smart-contracts/anatomy/index.md index 7b4baef7332..8d795e712bf 100644 --- a/public/content/translations/ja/developers/docs/smart-contracts/anatomy/index.md +++ b/public/content/translations/ja/developers/docs/smart-contracts/anatomy/index.md @@ -626,10 +626,10 @@ contract CryptoPizza is IERC721, ERC165 { uint256 size; // Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address. - // どのように動くかの詳細は、 - // https://ethereum.stackexchange.com/a/14016/36603 を確認する。 - // TODO すべてのアドレスが縮小されるので、 - // セレニティリリースの前に、ここをもう一度確認する。 + // See https://ethereum.stackexchange.com/a/14016/36603 + // for more details about how this works. + // TODO Check this again before the Serenity release, because all addresses will be + // contracts then. // solium-disable-next-line security/no-inline-assembly assembly { size := extcodesize(account) diff --git a/public/content/translations/ja/developers/docs/smart-contracts/compiling/index.md b/public/content/translations/ja/developers/docs/smart-contracts/compiling/index.md index 3e0051bb519..7e8269d7cf5 100644 --- a/public/content/translations/ja/developers/docs/smart-contracts/compiling/index.md +++ b/public/content/translations/ja/developers/docs/smart-contracts/compiling/index.md @@ -33,6 +33,10 @@ contract Greeter { PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0x46 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9B JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x80 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x48656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SLT 0xec 0xe 0xf5 0xf8 SLT 0xc7 0x2d STATICCALL ADDRESS SHR 0xdb COINBASE 0xb1 BALANCE 0xe8 0xf8 DUP14 0xda 0xad DUP13 LOG1 0x4c 0xb4 0x26 0xc2 DELEGATECALL PUSH7 0x8994D3E002900 ``` +これらは**オペコード**と呼ばれます。 EVMオペコードは、イーサリアム仮想マシン(EVM)が実行できる低レベルの命令です。 各オペコードは、特定の演算を表します。例えば、算術演算、論理演算、データ操作、制御フローなどです。 + +[オペコードの詳細](/developers/docs/evm/opcodes/) + ## Webアプリ {#web-applications} コンパイラは、アプリケーションがコントラクトを理解し、コントラクトの関数を呼び出すために必要な**アプリケーションバイナリインターフェイス(ABI)**も生成します。 diff --git a/public/content/translations/ja/developers/docs/smart-contracts/composability/index.md b/public/content/translations/ja/developers/docs/smart-contracts/composability/index.md index 4f7d3fa1fdf..79f59a1b16d 100644 --- a/public/content/translations/ja/developers/docs/smart-contracts/composability/index.md +++ b/public/content/translations/ja/developers/docs/smart-contracts/composability/index.md @@ -65,7 +65,6 @@ ETHでトランザクションフィーを支払う必要があるDappを作成 ## 関連トピック {#related-tutorials} -- [コントラクトの構成可能性: イーサリアムスマートコントラクト開発のビルディングブロック](https://www.decentlabs.io/blog/contract-composability-the-building-blocks-of-ethereum-smart-contract-development) - [create-eth-appを使用したDappフロントエンド開発の始動](/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/) _- create-eth-appを使用して、一般的なスマートコントラクトを組み込んだ、すぐに利用可能なアプリを作成する方法の概要_ ## 参考文献 {#further-reading} diff --git a/public/content/translations/ja/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/ja/developers/docs/smart-contracts/formal-verification/index.md index 88e894bf98c..3dd8f86f527 100644 --- a/public/content/translations/ja/developers/docs/smart-contracts/formal-verification/index.md +++ b/public/content/translations/ja/developers/docs/smart-contracts/formal-verification/index.md @@ -44,7 +44,7 @@ lang: ja 形式的仕様記述により、プログラム実行の正しさを数学的に論証することが可能となります。 形式モデルと同様、形式仕様記述は高水準のプロパティもしくはスマートコントラクトの実装の低水準の挙動をとらえることができます。 -形式仕様記述はプログラム論理を用いて導出され、それによってプログラムのプロパティが形式的に論証できるようになります。 プログラム論理が備えている形式規則により、プログラムのしかるべき挙動が(数学的に)表現されます。 [到達可能性論理](https://en.wikipedia.org/wiki/Reachability_problem)、[時相論理](https://en.wikipedia.org/wiki/Temporal_logic)、[ホーア論理](https://en.wikipedia.org/wiki/Hoare_logic)を含む様々なプログラム論理が形式仕様記述に用いられます。 +形式仕様記述はプログラム論理を用いて導出され、それによってプログラムのプロパティが形式的に論証できるようになります。 プログラム論理が備えている形式規則により、プログラムのしかるべき挙動が(数学的に)表現されます。 [到達可能性論理 ](https://en.wikipedia.org/wiki/Reachability_problem)、[時相論理](https://en.wikipedia.org/wiki/Temporal_logic)、[ホーア論理](https://en.wikipedia.org/wiki/Hoare_logic)を含む様々なプログラム論理が形式仕様記述に用いられます。 スマートコントラクトの形式仕様記述は**高水準**な仕様記述と**低水準**な仕様記述に大別されます。 いずれの場合でも、分析対象のシステムのプロパティを適切かつ一義的に記述できなければなりません。 diff --git a/public/content/translations/ja/developers/docs/smart-contracts/index.md b/public/content/translations/ja/developers/docs/smart-contracts/index.md index 9c557157bef..abe8e0e0318 100644 --- a/public/content/translations/ja/developers/docs/smart-contracts/index.md +++ b/public/content/translations/ja/developers/docs/smart-contracts/index.md @@ -23,7 +23,7 @@ lang: ja 自動販売機でスナックを取得する場合、以下のロジックになります。 ``` -お金 + スナック選択 = 出てくるスナック +money + snack selection = snack dispensed ``` このロジックは自動販売機にプログラムされています。 @@ -40,7 +40,8 @@ contract VendingMachine { mapping (address => uint) public cupcakeBalances; // When 'VendingMachine' contract is deployed: - // 1.   // 2. コントラクトの所有者としてデプロイアドレスを設定 set the deployed smart contract's cupcake balance to 100 + // 1. set the deploying address as the owner of the contract + // 2. set the deployed smart contract's cupcake balance to 100 constructor() { owner = msg.sender; cupcakeBalances[address(this)] = 100; diff --git a/public/content/translations/ja/developers/docs/smart-contracts/security/index.md b/public/content/translations/ja/developers/docs/smart-contracts/security/index.md index d63aeb554d2..d352d94ae93 100644 --- a/public/content/translations/ja/developers/docs/smart-contracts/security/index.md +++ b/public/content/translations/ja/developers/docs/smart-contracts/security/index.md @@ -78,7 +78,7 @@ contract VendingMachine { 残念ながら、単体テストを単独で行った場合は、スマートコントラクトのセキュリティを向上させるのに最小限の効果しかありません。 単体テストは、関数がモックデータに対して正しく実行されていることを証明するかもしれませんが、作成されたテストに対してのみ有効であるにすぎません。 これは、見落としたエッジケースや脆弱性の検出を難しくするので、スマートコントラクトの安全性を損なう可能性があります。 -より良い方法としては、単体テストと[静的・動的解析](/developers/docs/smart-contracts/testing/#static-dynamic-analysis)を用いて実施するプロパティベースのテストを組み合わせることです。 静的解析は、[制御フローグラフ](https://en.wikipedia.org/wiki/Control-flow_graph)や[抽象構文木](https://deepsource.io/glossary/ast/)といった低レベルな表現を頼りに到達可能なプログラムの状態や実行経路を解析します。 一方、ファジング (fuzzing) などの動的解析手法は、ランダムな入力値でコントラクトコードを実行し、セキュリティプロパティに違反する操作を検出します。 +より良い方法としては、単体テストと[静的・動的解析](/developers/docs/smart-contracts/testing/#static-dynamic-analysis)を用いて実施するプロパティベースのテストを組み合わせることです。 静的解析は、[制御フローグラフ](https://en.wikipedia.org/wiki/Control-flow_graph)や[抽象構文木](https://deepsource.io/glossary/ast/)といった低レベルな表現を頼りに到達可能なプログラムの状態や実行経路を解析します。 一方、[スマートコントラクトファジング](https://www.cyfrin.io/blog/smart-contract-fuzzing-and-invariants-testing-foundry)などの動的解析手法は、ランダムな入力値でコントラクトコードを実行し、セキュリティプロパティに違反する操作を検出します。 [形式検証](/developers/docs/smart-contracts/formal-verification)は、スマートコントラクトのセキュリティプロパティを検証するためのもう一つの手法です。 通常のテストとは異なり、形式検証はスマートコントラクトにエラーがないことを決定的に証明することができます。 これは、望ましいセキュリティプロパティをとらえた形式仕様記述を作成し、コントラクトの形式的モデルがこの仕様に準拠していることを証明することで実現されます。 @@ -112,7 +112,7 @@ contract VendingMachine { - スマートコントラクトのテスト、コンパイル、デプロイに[開発環境](/developers/docs/frameworks/)を使用する -- MythrilやSlitherなど、基本的なコード解析ツールを使用してコードを実行する。 これは、各プルリクエストがマージされる前に実行し、出力の違いを比較しておくのが理想的である +- [Cyfrin Aaderyn](https://github.com/Cyfrin/aderyn)、Mythril、Slitherなど、基本的なコード解析ツールを使用してコードを実行する。 これは、各プルリクエストがマージされる前に実行し、出力の違いを比較しておくのが理想的である - コードがエラーなくコンパイルされ、Solidityコンパイラが警告を発していないことを確認する @@ -126,7 +126,7 @@ contract VendingMachine { イーサリアムスマートコントラクトは、デフォルトではイミュータブル (不変) ですが、アップグレードパターンを用いることで可変性をある程度獲得することが可能です。 コントラクトのアップグレードは、重大な欠陥によって古いコントラクトが使用できなくなり、新しいロジックをデプロイすることが最も現実的な選択肢となる場合に必要になります。 -コントラクトのアップグレードのメカニズムは様々ですが、「プロキシパターン」はスマートコントラクトのアップグレードでより一般的なアプローチの一つです。 プロキシパターンは、アプリケーションを「状態」と「ロジック」の_2つの_コントラクトに分割します。 最初のコントラクト (「プロキシコントラクト」と呼ばれる) は、状態変数 (例: ユーザーの残高など) を格納します。一方、2つ目のコントラクトは (「ロジックコントラクト」と呼ばれる) は、コントラクトの関数を実行するためのコードを保持します。 +コントラクトのアップグレードのメカニズムは様々ですが、「プロキシパターン」はスマートコントラクトのアップグレードでより一般的なアプローチの一つです。 [プロキシパターン](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern)は、アプリケーションを「状態」と「ロジック」の_2つの_コントラクトに分割します。 最初のコントラクト (「プロキシコントラクト」と呼ばれる) は、状態変数 (例: ユーザーの残高など) を格納します。一方、2つ目のコントラクトは (「ロジックコントラクト」と呼ばれる) は、コントラクトの関数を実行するためのコードを保持します。 アカウントは、プロキシコントラクトとやり取りを行います。プロキシコントラクトは、すべての関数の呼び出しを低レベル呼び出しである[`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries)を使ってロジックコントラクトへディスパッチします。 通常のメッセージ呼び出しとは異なり、`delegatecall()`は、 ロジックコントラクトのアドレスで実行されるコードが、呼び出し元コントラクトのコンテキスト内で実行されるようにします。 つまり、ロジックコントラクトは、ロジックのストレージではなく、常にプロキシのストレージに書き込みを行い、元の`msg.sender`や`msg.value`の値は保持されるということです。 @@ -235,7 +235,7 @@ EVMは同時実行を許可していません。つまり、メッセージ呼 誰でもイーサ (Ether) を入出金できるシンプルなスマートコントラクト (「Victim」) を考えてみましょう。 ```solidity -// このコントラクトには、脆弱性があります。 プロダクションでは使用しないでください。 +// This contract is vulnerable. Do not use in production contract Victim { mapping (address => uint256) public balances; @@ -338,7 +338,7 @@ contract MutexPattern { locked = false; } // This function is protected by a mutex, so reentrant calls from within `msg.sender.call` cannot call `withdraw` again. - // `return`ステートメントは、`true`と評価しますが、まだmodifierのステートメントでは`locked = false`と評価します。 + // 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."); @@ -414,7 +414,7 @@ contract Attack { function attack() public payable { timeLock.deposit{value: msg.value}(); /* - 「t = 現在のロック時間」ならば、xを以下のようにして求める必要があります。 + 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 @@ -446,7 +446,7 @@ DEXの価格は正確であることが多く、これは市場の均衡を取 ##### オラクルの改ざんを防ぐ方法 -オラクルの改ざんを回避するための最小要件としては、単一障害点を避けるために複数のソースから情報を照会する分散型オラクルネットワークを使用することです。 ほとんどの場合、分散型オラクルにはオラクルノードに正しい情報を報告するよう促す暗号経済的なインセンティブが組み込まれており、集中型オラクルよりも安全性が高くなっています。 +[オラクルの改ざん](https://www.cyfrin.io/blog/price-oracle-manipultion-attacks-with-examples)を回避するための最小要件としては、単一障害点を避けるために複数のソースから情報を照会する分散型オラクルネットワークを使用することです。 ほとんどの場合、分散型オラクルにはオラクルノードに正しい情報を報告するよう促す暗号経済的なインセンティブが組み込まれており、集中型オラクルよりも安全性が高くなっています。 オンチェーンオラクルに資産価格を照会する場合は、時間加重平均価格(TWAP)メカニズムを実装しているものを使用することを検討してください。 [TWAPオラクル](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles)は、ある資産の価格を2つの異なる時点(修正可能)で照会し、得られた平均値に基づいて現在価格を計算します。 長い期間を選択することで、直前に行われた大量の注文が資産価格に影響を与えることができないため、価格の不正操作からプロトコルを保護します。 @@ -500,10 +500,16 @@ DEXの価格は正確であることが多く、これは市場の均衡を取 - **[Nethermind](https://nethermind.io/smart-contracts-audits)** - _ SolidityとCairoの監査サービスにより、イーサリアムとStarknet全体でスマートコントラクトの整合性とユーザーの安全を確保。_ -- **[HashEx](https://hashex.org/)** - _HashExは、ブロックチェーンとスマート コントラクトの監査に焦点を当てており、暗号通貨のセキュリティを確保するためのスマートコントラクト開発、侵入テスト、ブロックチェーンコンサルティングなどのサービスを提供_ +- **[HashEx](https://hashex.org/)** - _HashExは、ブロックチェーンとスマート コントラクトの監査に焦点を当てており、暗号通貨のセキュリティを確保するためのスマートコントラクト開発、侵入テスト、ブロックチェーンコンサルティングなどのサービスを提供。_ - **[Code4rena](https://code4rena.com/)** - _スマートコントラクトセキュリティの専門家へ脆弱性の発見にインセンティブを与え、web3をより安全にすることを支援する競争的な監査プラットフォーム。_ +- **[CodeHawks](https://codehawks.com/)** - _優位性のある監査プラットフォームで、セキュリティリサーチャーのスマートコントラクト監査コンペを主催している。_ + +- **[Cyfrin](https://www.cyfrin.io/)** - _ブロックチェーンセキュリティおよびweb3の教育企業で、EVMやVYperベースのプロトコルに注力している。_ + +- **[ImmuneBytes](https://www.immunebytes.com//smart-contract-audit/)** - _Web3セキュリティファームで、経験豊富な監査人と最高クラスのツールを通じてブロックチェーンシステムのセキュリティ監査を提供している。_ + ### バグ報奨プログラムプラットフォーム {#bug-bounty-platforms} - **[Immunefi](https://immunefi.com/)** - _スマートコントラクトとDeFiプロジェクトのバグ報奨プログラムのプラットフォーム。セキュリティ研究者がコードをレビューし、脆弱性を開示し、報酬を得て、暗号資産の安全性を強化。_ @@ -551,3 +557,5 @@ DEXの価格は正確であることが多く、これは市場の均衡を取 - [スマートコントラクトのセキュリティガイドライン](/developers/tutorials/smart-contract-security-guidelines/) - [トークンコントラクトと任意のトークンを安全に統合する方法](/developers/tutorials/token-integration-checklist/) + +- [Cyfrin Updraft - スマートコントラクトセキュリティおよび監査のフルコース](https://updraft.cyfrin.io/courses/security) diff --git a/public/content/translations/ja/developers/docs/smart-contracts/testing/index.md b/public/content/translations/ja/developers/docs/smart-contracts/testing/index.md index bff416ec597..0d861f36794 100644 --- a/public/content/translations/ja/developers/docs/smart-contracts/testing/index.md +++ b/public/content/translations/ja/developers/docs/smart-contracts/testing/index.md @@ -149,8 +149,8 @@ Solidityスマートコントラクト用の単体テストフレームワーク 単体テストでは、コントラクトの関数を個別にデバッグしましたが、統合テストでは、スマートコントラクトのコンポーネント全体を評価します。 統合テストでは、スマートコントラクト間の呼び出しで発生する問題や、同じスマートコントラクト内の異なる関数間のやり取りで発生する問題を検出できます。 例えば、[継承](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance)や依存性注入などの機能が正しく動作するかどうかを確認するのに役立ちます。 -統合テストは、コントラクトがモジュラー型アーキテクチャを採用していたり、実行中に他のオンチェーンコントラクトと接続する場合に有用です。 統合テストを実行する方法の1つは、([Forge](https://book.getfoundry.sh/forge/fork-testing)や[Hardhat](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks)などのツールを使用して)ブロックチェーンの特定のブロックの高さで -フォークすることです。そして、デプロイされたコントラクトと作成したコントラクトのやり取りをシミュレートします。 +統合テストは、コントラクトがモジュラー型アーキテクチャを採用していたり、実行中に他のオンチェーンコントラクトと接続する場合に有用です。 統合テストを実行する方法の1つは、([Forge](https://book.getfoundry.sh/forge/fork-testing)や[Hardhat](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks)などのツールを使用して)ブロックチェーンの特定のブロックの高さで +フォークすることです。そして、デプロイされたコントラクトと作成したコントラクトのやり取りをシミュレートします。

フォークされたブロックチェーンは、メインネットと同様の仕組みで動作し、アカウントに状態と残高が関連付けられています。 しかし、サンドボックス化されたローカル開発環境としてのみ機能します。例えば、トランザクションに実際のETHは必要なく、変更しても実際のイーサリアムプロトコルに影響することはありません。 @@ -168,7 +168,7 @@ Solidityスマートコントラクト用の単体テストフレームワーク 静的アナライザーは、スマートコントラクトのソースコードを受け取って解析し、コントラクトがプロパティを満たしているかどうかを判断します。 動的解析とは異なり、静的解析では、コントラクトを実行して正確性の解析を行うことはありません。 静的解析は、スマートコントラクトが実行中にたどる可能性のあるすべてのパスを推論します。つまり、ソースコードの構造を調べて、コントラクトの操作がランタイムで何を意味するかを決定します。 -コントラクトで静的解析を実行する一般的な手法として、[リンティング](https://www.perforce.com/blog/qac/what-lint-code-and-why-linting-important)と[静的テスト](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis)があります。 どちらの手法も、コンパイラによって出力された[抽象構文木](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree)や[制御フローグラフ](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/)など、コントラクト実行における低レベル表現の解析が必要です。 +コントラクトで静的解析を実行する一般的な手法として、[リンティング](https://www.perforce.com/blog/qac/what-lint-code-and-why-linting- important)と[静的テスト](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis)があります。 どちらの手法も、コンパイラによって出力された[抽象構文木](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree)や[制御フローグラフ](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/)など、コントラクト実行における低レベル表現の解析が必要です。 静的解析は、安全でない構造の使用や構文エラー、コントラクトコード内のコーディング規約違反などの安全性の問題を検出するには有効です。 しかし、より深い脆弱性の検出が不得意であることが知られており、過剰な誤検出が生じる可能性があります。 @@ -253,7 +253,7 @@ Solidityスマートコントラクト用の単体テストフレームワーク 上記のように、厳密なテストをしても、コントラクトにバグがないとは言い切れません。 形式検証によるアプローチは、正確性をより強力に保証できますが、現時点では使用が難しく、かなりのコストがかかります。 -第三者によるコードレビューを受ければ、コントラクトの脆弱性を発見できる可能性が高くなります。 第三者にコントラクトを分析してもらうには、[スマートコントラクトの監査](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/)および[バグ報奨金](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)のいずれかの方法があります。 +第三者によるコードレビューを受ければ、コントラクトの脆弱性を発見できる可能性が高くなります。 第三者にコントラクトを分析してもらうには、[スマートコントラクトの監査](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/)および[バグ報奨金](https://medium. com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)のいずれかの方法があります。 監査は、スマートコントラクトのセキュリティ上の欠陥や不健全な開発プラクティスを探し出す経験豊かな監査人が行います。 監査では、コードベース全体の手動レビューだけでなく、テストや形式検証も行われるのが一般的です。 @@ -297,6 +297,8 @@ Solidityスマートコントラクト用の単体テストフレームワーク - **[Ethlint](https://ethlint.readthedocs.io/en/latest/)** - _スマートコントラクトのプログラミング言語であるSolidityのスタイルとセキュリティのベストプラクティスを適用するためのリンター_。 +- **[Cyfrin Aderyn](https://cyfrin.io/tools/aderyn)** - _Rustベースの静的解析ツールで、特にWeb3スマートコントラクトのセキュリティと開発のために設計されています。_ + #### 動的解析ツール {#dynamic-analysis-tools} diff --git a/public/content/translations/ja/developers/docs/smart-contracts/upgrading/index.md b/public/content/translations/ja/developers/docs/smart-contracts/upgrading/index.md index bd2dc588ff2..e14b5882411 100644 --- a/public/content/translations/ja/developers/docs/smart-contracts/upgrading/index.md +++ b/public/content/translations/ja/developers/docs/smart-contracts/upgrading/index.md @@ -74,7 +74,7 @@ lang: ja [Solidityのドキュメント](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#delegatecall-callcode-and-libraries)の引用: -> **delegatecall**という特別な可変メッセージ呼び出しがあります。**delegatecall**は、ターゲットアドレスのコードが、呼び出し側コントラクトのコンテキスト(例: アドレス)で実行されることを除けば、メッセージ呼び出しと同一です。また、`msg.sender`と`msg.value`の値は変わりません。__これは、コントラクトが実行時に、別のアドレスからコードを動的にロードできることを意味します。 つまり、ストレージ、現在のアドレス、残高は呼び出し元のコントラクトを参照しており、 コードのみが呼び出し先のアドレスから取得されます_。 +> **delegatecall**という特別な可変メッセージ呼び出しがあります。**delegatecall**は、ターゲットアドレスのコードが、呼び出し側コントラクトのコンテキスト(例: アドレス)で実行されることを除けば、メッセージ呼び出しと同一です。また、`msg.sender`と`msg.value`の値は変わりません。__これは、コントラクトが実行時に、別のアドレスからコードを動的にロードできることを意味します。 つまり、ストレージ、現在のアドレス、残高は呼び出し元のコントラクトを参照しており、 コードのみが呼び出し先のアドレスから取得されます_。

> > プロキシコントラクトには、`fallback`関数が組み込まれているため、ユーザーが関数を呼び出すたびに`delegatecall`をが呼び出されていることがわかります。 Solidityプログラミングでは、コントラクトの関数呼び出しが指定した関数と一致しない場合、[フォールバック関数](https://docs.soliditylang.org/en/latest/contracts.html#fallback-function)が実行されます。 > diff --git a/public/content/translations/ja/developers/docs/smart-contracts/verifying/source-code-verification.svg.xlsx b/public/content/translations/ja/developers/docs/smart-contracts/verifying/source-code-verification.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..def220a4326afda5a17fd09420a351078d6adaa8 GIT binary patch literal 4846 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 a?}(m`Bp8&C==hCf*iSaL0^|Y5PyYv{YrvrZ literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/developers/docs/standards/index.md b/public/content/translations/ja/developers/docs/standards/index.md index 5099a1727fe..bee59407ddb 100644 --- a/public/content/translations/ja/developers/docs/standards/index.md +++ b/public/content/translations/ja/developers/docs/standards/index.md @@ -18,7 +18,7 @@ incomplete: true - [イーサリアムにおけるガバナンス入門](/governance/) - [イーサリアムにおけるガバナンスの概説](https://web.archive.org/web/20201107234050/https://blog.bmannconsulting.com/ethereum-governance/) _2019年3月31日、ボリス・マン作成。_ - [イーサリアムにおけるプロトコル開発のガバナンスならびにネットワークアップグレードの調整](https://hudsonjameson.com/2020-03-23-ethereum-protocol-development-governance-and-network-upgrade-coordination/) _2020年3月23日、ハドソン・ジェイムソン作成。_ -- [イーサリアム・コアデベロッパー・ミーティングの全プレイリスト](https://www.youtube.com/playlist?list=PLaM7G4Llrb7zfMXCZVEXEABT8OSnd4-7w) _(YouTubeのプレイリスト)_ +- [イーサリアムコア開発ミーティングのすべてのプレイリスト](https://www.youtube.com/@EthereumProtocol) _(YouTubeプレイリスト)_ ## 標準規格の種類 {#types-of-standards} @@ -39,7 +39,7 @@ EIPは、以下の3種類に分類されます: ### トークン規格 {#token-standards} -- [ERC-20](/developers/docs/standards/tokens/erc-20/) - 投票トークン、ステーキングトークン、通貨トークンなど、代替性トークン (FT) のための標準インタフェースです。 +- [ERC-20](/developers/docs/standards/tokens/erc-20/) - 投票用やステーキング用のトークンあるいは仮想通貨など、代替性を持つ(相互に代替可能な)トークンを対象とする標準的なインターフェイスです。 - [ERC-1363](https://eips.ethereum.org/EIPS/eip-1363) - transferまたはtransferFromを受信した後の受信者側におけるコードの実行や、承認後におけるspenderコードをサポートする、ERC-20トークンのトークンインターフェイスを定義します。 - [ERC-721](/developers/docs/standards/tokens/erc-721/) - アートや楽曲に対する所有証明など、非代替性トークン (NFT) を対象とする標準的なインタフェースです。 - [ERC-2309](https://eips.ethereum.org/EIPS/eip-2309) - ひとつのNFTあるいは連続するトークン識別子を用いた複数のNFTを作成/転送する際に発行される標準イベント。 @@ -53,6 +53,6 @@ EIPは、以下の3種類に分類されます: ## 参考文献 {#further-reading} -- [イーサリアム改善提案 (EIP)](/eips/) +- [イーサリアム改善提案(EIP)](/eips/) -_役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。_ +_役に立ったコミュニティリソースがあれば、 ぜひこのページに追加してください。_ diff --git a/public/content/translations/ja/developers/docs/standards/tokens/erc-1155/index.md b/public/content/translations/ja/developers/docs/standards/tokens/erc-1155/index.md index 424aec64f44..a5dae0dbcc1 100644 --- a/public/content/translations/ja/developers/docs/standards/tokens/erc-1155/index.md +++ b/public/content/translations/ja/developers/docs/standards/tokens/erc-1155/index.md @@ -143,4 +143,4 @@ _注記_:フックを含むすべてのバッチ関数は、バッチ処理で - [ERC-1155:マルチトークン規格](https://eips.ethereum.org/EIPS/eip-1155) - [ERC-1155:Openzeppelinのドキュメンテーション](https://docs.openzeppelin.com/contracts/3.x/erc1155) - [ERC-1155:Githubリポジトリ](https://github.com/enjin/erc-1155) -- [Alchemy NFT API](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api) +- [AlchemyのNFT API](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api) diff --git a/public/content/translations/ja/developers/docs/standards/tokens/erc-20/index.md b/public/content/translations/ja/developers/docs/standards/tokens/erc-20/index.md index 2832484f7e3..25239af1d6d 100644 --- a/public/content/translations/ja/developers/docs/standards/tokens/erc-20/index.md +++ b/public/content/translations/ja/developers/docs/standards/tokens/erc-20/index.md @@ -12,13 +12,12 @@ lang: ja - オンラインプラットフォームにおける評価ポイント。 - ゲーム内のキャラクターにおけるスキル。 -- 宝くじの券。 - 企業の株式などの金融資産。 - 米ドルをはじめとする法定通貨。 - 金(ゴールド)1オンス。 - 等々。 -イーサリアムにおいてこれほどの威力を持つ機能に対しては、必然的に堅牢な規格が必要です。 これこそ、ERC-20規格が果たすべき役割なのです! この規格を用いることで、イーサリアム外の製品やサービスと相互運用できるトークンアプリを構築することが可能になります。 +イーサリアムにおいてこれほどの威力を持つ機能に対しては、必然的に堅牢な規格が必要です。 これこそ、ERC-20規格が果たすべき役割なのです! この規格を用いることで、イーサリアム外の製品やサービスと相互運用できるトークンアプリを構築することが可能になります。 ERC-20規格は、[Ether](/glossary/#ether)へ追加機能を提供するのにも使われています。 **ERC-20とは何か?** @@ -89,7 +88,7 @@ weth_token_addr = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" # Wrapped ethe acc_address = "0xA478c2975Ab1Ea89e8196811F51A7B7Ade33eB11" # Uniswap V2: DAI 2 -# これはERC-20トークンのコントラクトのアプリケーション・バイナリ・インターフェース(ABI)を簡略化したものです。 +# This is a simplified Contract Application Binary Interface (ABI) of an ERC-20 Token Contract. # It will expose only the methods: balanceOf(address), decimals(), symbol() and totalSupply() simplified_abi = [ { diff --git a/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md index e0c02c3dc55..b4167e42d27 100644 --- a/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md +++ b/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md @@ -72,7 +72,7 @@ function previewDeposit(uint256 assets) public view returns (uint256) この関数は、入金が現在のブロックに対してどのような影響をもたらすかをシミュレーションします。 -#### 入金 {#deposit} +#### deposit {#deposit} ```solidity function deposit(uint256 assets, address receiver) public returns (uint256 shares) @@ -86,7 +86,7 @@ function deposit(uint256 assets, address receiver) public returns (uint256 share function maxMint(address receiver) public view returns (uint256) ``` -この関数は、`receiverによる1回の`の呼び出しにより、ミント可能なシェア数の上限を返します。 +この関数は、`receiverによる1回のmint`の呼び出しにより、ミント可能なシェア数の上限を返します。 #### previewMint {#previewmint} @@ -96,7 +96,7 @@ function previewMint(uint256 shares) public view returns (uint256) この関数は、現在のブロックにおける当該ミントの影響をシミュレーションします。 -#### mint(ミント) {#mint} +#### mint {#mint} ```solidity function mint(uint256 shares, address receiver) public returns (uint256 assets) @@ -120,7 +120,7 @@ function previewWithdraw(uint256 assets) public view returns (uint256) この関数は、当該引き出しが現在のブロックに与える影響をシミュレーションします。 -#### 引き出し {#withdraw} +#### withdraw {#withdraw} ```solidity function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares) @@ -187,7 +187,7 @@ event Deposit( #### 出金イベント -`redeem` あるいは [`withdraw`](#withdraw)メソッドにより、預金者がボールトからシェアを引き出す際に、**必ず**発行しなければなりません。 +`redeem` あるいは [`withdraw`](#withdraw)メソッドにより、預金者がボールトからシェアを引き出す際に、**必ず**発行しなければなりません。 ```solidity event Withdraw( @@ -195,7 +195,7 @@ event Withdraw( address indexed receiver, address indexed owner, uint256 assets, - uint256 share + uint256 shares ) ``` @@ -204,4 +204,4 @@ event Withdraw( ## 参考文献 {#further-reading} - [EIP-4626: トークン化ボールト規格](https://eips.ethereum.org/EIPS/eip-4626) -- [ERC-4626: GitHubリポジトリ](https://github.com/Rari-Capital/solmate/blob/main/src/mixins/ERC4626.sol) +- [ERC-4626: GitHubリポジトリ](https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC4626.sol) diff --git a/public/content/translations/ja/developers/docs/standards/tokens/erc-721/index.md b/public/content/translations/ja/developers/docs/standards/tokens/erc-721/index.md index f6e83ac5b1f..1d75f0ec8a9 100644 --- a/public/content/translations/ja/developers/docs/standards/tokens/erc-721/index.md +++ b/public/content/translations/ja/developers/docs/standards/tokens/erc-721/index.md @@ -56,11 +56,11 @@ ERC-721(Ethereum Request for Comments 721)は、ウィリアム・エント ### 実例: {#web3py-example} -イーサリアムネットワークにおけるERC-721トークンコントラクトを詳しく検討することで、ネットワークをシンプルにする上でこれらの規格がいかに重要であるかが理解できるでしょう。 ERC-721トークンを対象とするインターフェイスを開発するには、コントラクトのアブリケーション・バイナリ・インターフェイス(ABI)があれば十分です。 これからつまずかないように簡略化されたABIを使用した例をお見せします。 +イーサリアムネットワークにおけるERC-721トークンコントラクトを詳しく検討することで、ネットワークをシンプルにする上でこれらの規格がいかに重要であるかが理解できるでしょう。 ERC-721トークンを対象とするインターフェイスを開発するには、コントラクトのアブリケーション・バイナリ・インターフェイス(ABI)があれば十分です。 理解しやすいように、以下では簡略化したABIを用いています。 #### Web3.pyの実例: {#web3py-example} -最初に、 Pythonライブラリの[Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation)がインストールされていることを確認してください: +まず、 Pythonのライブラリから[Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation)をインストール済みであることを確認してください: ``` pip install web3 @@ -174,7 +174,7 @@ CryptoKittiesのコントラクトには、標準的なイベント以外にも 特に、`Pregnant`と `Birth`のイベントについて見てみましょう。 ```python -# 妊娠・出産イベントABIを利用して、新しいキティーの情報を得る。 +# Using the Pregnant and Birth Events ABI to get info about new Kitties. ck_extra_events_abi = [ { 'anonymous': False, diff --git a/public/content/translations/ja/developers/docs/standards/tokens/erc-777/index.md b/public/content/translations/ja/developers/docs/standards/tokens/erc-777/index.md index 0a9bcf1217f..e5b1c0f5e2c 100644 --- a/public/content/translations/ja/developers/docs/standards/tokens/erc-777/index.md +++ b/public/content/translations/ja/developers/docs/standards/tokens/erc-777/index.md @@ -12,7 +12,7 @@ lang: ja ERC-777は、既存の[ERC-20](/developers/docs/standards/tokens/erc-20/)規格を改善した代替性トークンの規格です。 -## 事前に必要な環境 {#prerequisites} +## 前提知識 {#prerequisites} 本ページの内容をよく理解するために、まず[ERC-20](/developers/docs/standards/tokens/erc-20/)に目を通すことをおすすめします。 diff --git a/public/content/translations/ja/developers/docs/standards/tokens/index.md b/public/content/translations/ja/developers/docs/standards/tokens/index.md index 882225b01a7..3f7ee725103 100644 --- a/public/content/translations/ja/developers/docs/standards/tokens/index.md +++ b/public/content/translations/ja/developers/docs/standards/tokens/index.md @@ -30,7 +30,7 @@ incomplete: true _役に立ったコミュニティリソースがあれば、 ぜひこのページに追加してください。_ -## 関連トピック {#related-tutorials} +## 関連チュートリアル {#related-tutorials} - [トークンの統合作業に関するチェックリスト](/developers/tutorials/token-integration-checklist/) _– トークンのやりとりを統合する際に検討すべき事項が列挙されています。_ - [ERC20トークンを利用するスマートコントラクトを理解する](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _- イーサリアムのテストネットワーク上ではじめてスマートコントラクトをデプロイする初心者向けの入門ガイドです。_ diff --git a/public/content/translations/ja/developers/docs/storage/index.md b/public/content/translations/ja/developers/docs/storage/index.md index f13e702d8b3..97c34dc9db8 100644 --- a/public/content/translations/ja/developers/docs/storage/index.md +++ b/public/content/translations/ja/developers/docs/storage/index.md @@ -61,6 +61,7 @@ IPFSは、ファイル、ウェブサイト、アプリケーション、デー - [IPFS Scan](https://ipfs-scan.io) _(IPFSピンニングエクスプローラー)_ - [4EVERLAND](https://www.4everland.org/)_(IPFSピンニングサービス)_ - [Filebase](https://filebase.com)_(IPFSピンニングサービス)_ +- [Spheron Network](https://spheron.network/) _(IPFS/Filecoinピンニングサービス)_ SWARMは、ストレージインセンティブシステムとストレージレンタル価格オラクルを備えた分散型データストレージおよび分配テクノロジーです。 @@ -198,12 +199,18 @@ KYCなしの分散型ツール - [ドキュメント](https://docs.kaleido.io/kaleido-services/ipfs/) - [GitHub](https://github.com/kaleido-io) +**Spheron Network - _Spheronは、プラットフォーム・アズ・ア・サービス(Paas)で、アプリケーションを最高のパフォーマンスを持つ分散型インフラでリリースすることを期待するdApp向けに設計されています。 革新的な、計算環境、分散型ストレージ、CDN、ウェブホスティングを提供しています。_** + +- [spheron.network](https://spheron.network/) +- [ドキュメント](https://docs.spheron.network/) +- [GitHub](https://github.com/spheronFdn) + ## 参考文献 {#further-reading} - [分散型ストレージとは](https://coinmarketcap.com/alexandria/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_ - [分散型ストレージに関する5つの一般的な通念を覆す](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_ -_役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。_ +_役に立ったコミュニティリソースがあれば、 ぜひこのページに追加してください。_ ## 関連トピック {#related-topics} diff --git a/public/content/translations/ja/developers/docs/transactions/gas-tx.svg.xlsx b/public/content/translations/ja/developers/docs/transactions/gas-tx.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f34d5d4c4cd523d4357df952adbbb06073b8a914 GIT binary patch literal 4909 zcmaJ_2Q*x3*Vbz=j1rv~z4zWb(Md#<=-p_EQ6hQ`VU&oF1Ti{c5TXUqyF^6qgwbob z%0H6({oJg3vuD;>=Ur>weP%!Jv&(aIHPJChQE+f@P~1UT#wgbeh`hhA2zK+fb@R3` z^mVuOGUI``x>OnTXt(kKPSMU8cgcj^#2LcU4?iy8s3j8_uWMP4@cK@T&cM}8K!ps! zU(D;PJ0t}WRe5`v@HQ;qi&;*7_Ks}1vJjELd(qF@_P%SACO133Yqn-SRI`$)OXoQx zE||5^NpbLuKhlRf4WgznX4}6d?2=!$HR;B2!qiL_UDzoxY_{L`O}HeM;wgep@M)lHL4oxSMdGQ1PcJt59!I>B zSnJueA816;)x^eejjGfYMnyrP#6Ur={|j||BVlIQ-{H$9sXW;^)3rMEjNuoNqckA2^V$HdCRF z9@a~v;Om)ivsSP@XhV5e#m+0%mFA`(Tl0~`Dl|w&#b;3}pU$3Az|-L~j7hd9O$A(& zRnwR(aNUgd6Wy6~1E9!@NpI^fw%4nJm` zCs3$Cd>)*uVuRh*I?Mrihe4xNAsM=PU5_=CzuhW|C|6Nneehvfg&oMDWc!v&Ol@_! zEbA891nDCWFOl#%^+!^*y}IT(G;h|K7IDmya3(;^BC2{aZ)mt5H(CTpA95c7`p{Z$`BsELDx!{Hg`E|8Q`kF_+p^F90Q%tK;hzfiLd=V)ne7k3G; zB-l~{9U(ccH&f@-mOlUNH#9Zw+$&O02XCU(o3Xq22{n)_IEEbw^ZXy7zWEDk8&6B0 zOO$#4zTv-wJ9E&?t%dIf_BL>x&}iDx=uy6X6yZp28*;GWsC2L&Y?q&F!yBO5u`$`n+2k z{^ofV#E+l0nrPgSmY5Z|@%?ip!6E|;Dp7#jum0#xf6Up?N34kW6&Z+QaNf6>|<&QXHvLg z=Trw%o%)U4BNm-gq#dZVI;~u_ihiAuLdF7(* zM{xrt6(J8Xq@YoAiLv5r$wNJO-etngSos0tEBCAOahfZj%gv zvygN2`G)4v2KG9=ikC+8CPr)3Yl7uFxy|3uL>$i>Z~D6iXlC0n*;=422u2DDeoW{o zYNEs>3X2u8cXqHa1^~zxExYH1PY=8(cC4rpv z5z)zQc#Onsg5(sw@@XgJOH!@+TE0&e;_1m;RT8c52`0}aH;=z=YL|VMEyPeKC1w}a z6%z)G$%XPjD**t$4EDIlFaZ1PGH5pyI;@x+5wxrLCWYwTT!Yy;u~g%PJ|P{SnWE+e z!?ddFpw;0IHx+Ic0v+2`}>V>7sJ1d@90PaGCVzfg~h! zhSsUJcFe>q@O_&? z9~PeKj7aitC=Okw8ZU?5HWn!mLZD6qOWVe_AEgPGW96;+Wfyz5o}>~ ze-PZx@6SMRrlU|e-z-4fCV(sK;F2o_ITq8g1{VX*WJNWb!zV2h4f)OrVq`U$=Yn7_ z#u0XuY|d3<{gWp(^Qm7udT7=tUMLacE{5f17J|vTzK@EA^r#0KW)rFZz}ftsc=3@# z?|hO6coU`|GIqnj&1F+0wgFKn6T`$SbrzJR9D<0qGG8V$eMT*=LSy16%ORB7QU`ew zU;0;t!Panw1H)d|{q?i-`mAo+yGzfeANGVF1U!fMEAqYNZqKb<7>4F$&rl1T z!3Q|wOy$j}h^Q<~$BFXHTFZUzl4~BvA4~Rx!Cxf&{3M>=+o!64%1AmH9Wvcpf5i2S zot`D9D|TOA{Jw1)&p=dV%foKE!gWMr?QvQn%H$(cNzNjdR7U^&9u#=0PH3`R!pDdh zLX-t*Yxx_)+wZ(`D$`aoMQQl1kA;gbNJPv)gb5> z!x1s$$2@t(JmH`FflnMb$Ayk}mA-j08O-I}HC1)kDGyP(x5Cs(;_S!D6J^V`O`Tq4 zeT=bgXksz0^oGYnmZ8Cwj{)H)`%KMw2M5@ve-!CdLWmx)8zAF+PbPm-VrFj8WgK(r zjqwK-4;_6(o*4VgN$hX|Yr(SD-JuMq+6QhAd&DrEmUVT|vz%A-Lr`IXAyB>td(4Lw zPxaH=M^iJa+Go@RUzlg0pd036D-F)1Tn&&Wxo8Nq1l>IXy7lUrzc}}*!{fD?#nK-X zo28SdqFCSj?Cg`g_(hurlicb-WM?E>Rj{|x90c94$u>0xd(li7qpi-9@)OoeGU&Kx zvkfCFE-vPu$Ut<}d91)-=bybBs)_8~fC!yINu}vfYbDMowQq(g$nQAa$8SKZIaQmN zLX(Y22};>6*`=o$V41NCw;8HTq1jMR5muKMP>f=C{V@aW#-?dR9E&Mq>v zF$$eJ`jr9Im44i>6A4Ki?GiacQFu3qH1CGCB@O$wGVz>6M~tIC&q9k*`D~QlsN0&t zEUK`)!e@Gq1GP-s^u{+xC}dD7`*FS@txCEhy}JtTRtV>UzL;Rbpq#D)=Dxy9Nk*pS zo0OXa&;5csskq}ciXa;eEVq-AV&9K_G`>w`rWJ7pZ~wmI+4FU;o}SK2^S#d@xBoeP zbZ&CFY`*Z5fY@Ub)7v0HBEhpxK%!O5L}XrD=}M&K`YE z)>;Ad2RJHhNe&7Ao$Bp7}`mzDdNTanNIVgXH-kqY?QBLPB2WW@O^Nlt)G{nMJq$s3S&fMOZyDPzQ{g{9?3f^ecWL`PF z8g>{*!VA&ne-Cb!;=q`1Z-60WhGg?ldwT-}(tmM#gwJ%O}kLUf!7a{wMX8@%Od%OSuhK1pM zhu3Yp#sEs78H``llQvP{buu`+*Ef%!yW>qi{ss`xZ&@FHT%R0@x8R z$(wLDm!`%kJANeXE&SLvk(N91w}9b~O6#$b<;m{kD$h!gO}Ccn$wKxb4GX_kxzmDg zpJg7|c~wp;=L8DKC}Q@QZch{EtrhHhxeq5MoUcw{;S!K&t3e_$ z_Bz`csEahkp1BZIR3-FDkx+svLR?o8zcG}DEA4gmGf3h`uOxnAh(6${^92d3IXzTg zPW*V`^Sp6{^$abz?p{8|`hn^wG38Jwn|aZLbmhG)?hCX_)+FwNEw_<*R`j#hp`wwZ zT)lp{E|D*1%zxUyyo}J*{HKHK!t+u|U)dw%Bd_V|-#1>DQJ1>($}ExW{x_BSyNB!Q z;ga)L){CqtNDu!izJB*|eg3{w8dpYv#0%-=S|0tY?)cr|^*Q68kWyp)>k$9DgX_KN zavZs`Fx+3r{Qq$B`_}6v^|EV1iFD4UjBF|{E1Qf%X2?8Q$%Q1E z_}}UK`%{nax7Xd{^Z0xok9)s9_j%scX(# z&K3UJy1A}bQ4&*IvYU(SCZfw+6c!ikEl_(JAroR2f4_To9Yl}laDCQc&$q8*r_z*l zai6Aa(cx;UlXub=Be=^5ekyl?<6|n6`WnQ%pTvbwA0fNEQ+2(=@pAyef=WDF#g5W7 zJ0Uitt?0>_mrjWhgRQ(N@k`FVHl9eU0o4`vW)*Qs1!h6InJo(G^J9Buc!jTpnm@hb zE!+Xq=08c)V1GSxTTfS<+sTC*iCmR=Y$CfYjpkZq^134Aeh3F}J8HRnB-U=ow^)`xSv!FNzN{9F))%?cXP#Dj7X!F(G zm}d$b16z*6t$2p|#3b%<&kd#V@$gvA;9;Nt3w3fV>R@k(n~&&4+%<7nohm|%ns9^; z8hdNs$jkO#{xk9OZj>B(b(-92CC(L{o0~?7^ZLAPoEYAB zu;NecH!I_jUo#isuMx26#=BE1C@P1_@X%0gXs5M{3{%neUr{RMaAcA2b{a3{Q60$8 z_H0OTK@ferIQ(ULC=MQ;R z7vg#@&4MYGN?th0$kNpMIP1MK9)*Iqr?Cb69;pl^_u;^iR zSf?0$&rVATiJ4$Q8QD2_aYDF!I7i;=H$+*FWu8i4h=`Qq*46m+XJsVC(D02p_!V8@7++oT5i5*e9Kt6ZX~B}S)2#%LYAROw%smDqA60c=zhcqit2z03DsTQ{7tLCHa ze=pe`(Ro?MBn{;uHv8ufv&^F1RD3mR0;y*d84YgQ`-D0TLUb&|k|5H@LBV6P}w+gB64kBpAScwMLM}9GHR;9(bIZm@Tqn8}JppLRlo0XAM zc~Qk5Lc;3Y(P$4>UxIk=@2e1Kf=16!+0V?JnaeDPDZ4Fz^`-JnR9LW(P830O)0$v0 zpRzTLk_Yf*2K!zd645d)BqA<%PNnX?tvBxmjT{G?l&^H>!l7hT3kIy1K1E4~f_j7{87c81q zW&Kh$%*-5j_mgEl2QrcyhdtE=i*}k;3U{*8i2H;2JL`su?BomVY*kADEGE~82^VWz zzgicO#Nip!rrjz3d38cLsHg-!O*zX#>iIsmYK)zx#}5M&tFw*J9Fu+2I61HiEz7;e zvfCZ>nw4^!sQ-oJ$I_u3jBpknlPhx><_aZJV~3PcGt9Y?gFn2I?m$&mzax6i_Q7?r zgEE+^KHuB0;>;P$EfxXS+UcRW?+r_7lf46HH<&WDXh>J0igL?68Bps}vJnHiA=e9l zx?f4Q)*l?T3tc;$yGX}etRXW^VeH|yC6myCDOZ8#mDbq=4NZFTqsDl9EXRp!7iIC`AgejQpZ(_Q{e?RN(R;z^&>&5*$09vNjmu-j zfxRr8XL`Jm@y+rn6T$Yf>)YlI&BA+?U#`xgYQ7QU8VynyZYzKtG*wi88#a``8qLQy zzzuS|xvc?e#)nV$bcFMa_e~*as#o(R_rA8f_ez_ZL6D!P?XA9xxqeg9 zVIiS41&?w^?SzYq5;-@ZI|M|u1HEF1Eno2L7N#`sR`)s84e#C`^ny6sK{H@L%ejxt zd}pESU7#@AkuQ3E7R5n+!wqjT21QW@g^(yx4<+n{kp zGhEhb5(fEbTK2rPE?&)QDI~(Tu7l9*U2K4sd4k9lDg6a-O|1geTjcWYC6q*-H~Et; zO{6oEZ=~G@>q}+bsz=MZ-xk0{AZ1;7@C(=)LTk(&rf5;J@4$)_`6{>Zja0;pht42^ zRi~mfNHG1SsPC7fV#U2}DZ}(&a#~e62$*W5^x5mB12VmrpgL**vtEdt3dhRxsKULn z(DbII(1xblNERCmf0NUk$!tiW<2+Pb_`9^Vuz_xnk%BrLw+{XQtwE<7oj-98c>+#}->th!;bWBx@D86+HQwQN|^iX)={>fem)P8kd6;<2r`U|QqV{>r+udAQ+ zR}OyddmI7yUnY(>eidBZ1uI)FVbc*eJynxpq!*uKAmA`tOiVrYMxvUJ+hFGVey+@- z0<{K{b^KBH&!Z71t6sl817}*TA&~{IHaj8*g;Bw{~iy_zn)?$*p zUkA9&%yY=EC}rU2#Wd)wcJ-zZ@6HA9Jdg-H0vsSy5z(b)?Pw~3N_PJ6jgmhO*=o{e z{e0nl)P5qZC=?`K@7bYrfpnK;Ok7dxJ3(e8=XI6h?!E-ho1p}_s!e0*Fy6r8(Fpk4 z{Q8G?o+3*pG$|LM@43uHuYCktO}r^yH|}db;3q9jf7-j{b%|}Ft_8!m#$9vEKkf zSc;P8GmDOBsT6;F!CAI!>-x%ZrtAzxg^oA?Wnw&O91?Y&D-IO(LJcSze#R_C$L7v@ zQ=*BVOgHiJ;90ASPg(k(-IP#Olu_v!T=6>!rv6z2)!Uw2wU*kYQC@ibXl(u{bL>pf zd;SS_>wUYs7p^qxR*rwAlLtR2_v)85VHjZ>;=OAez7_3$xWl$8mS#(9O}6cZ&T0%R z2LudJhDa)GRNNK=F9XB6lmeEGk%=4B$lOduUp9x)jCbh0#e3NUjcR!DHfhKJ_I^aKY=2`-ZS z8QnL@GfN1+t1)8IXa07yl_9$5GQdb|^P ze_Dd#SmN*YFJj+N|91zcg&j_*o|qr@m8W#;p9fD1A)M|zF注: イーサリアムは -注: イーサリアムは [ハッシュ関数](https://wikipedia.org/wiki/Hash_function)を定期的に使用して、固定サイズの値(ハッシュ)を生成します。 イーサリアムではハッシュ値が重要な役割を果たしますが、今のところは固有のIDと考えておくとよいでしょう。 +[ハッシュ関数](https://wikipedia.org/wiki/Hash_function)を定期的に使用して、固定サイズの値(ハッシュ)を生成します。 イーサリアムではハッシュ値が重要な役割を果たしますが、今のところは固有のIDと考えておくとよいでしょう。 ![ブロックチェーンと各ブロック内のデータを表す図](./blockchain-diagram.png) @@ -284,9 +284,9 @@ Out[13]: 1000003000000000000000000 2つ目のアカウントの残高は、 1,000,000 ETHから1,000,003 ETHに増えているので、正しいようです。 1つ目のアカウントはどうなったのでしょうか? 3 ETHより少し多い金額が失われたようです。 残念ながら、人生にはタダというものはなく、イーサリアムのパブリックネットワークを利用するには、そのサポート役であるピアに対価を支払う必要があります。 トランザクションを送信したアカウントから、少額のトランザクションフィーが差し引かれました。このフィーは、消費されたガスの量(ETH送金では21000単位のガス)にベースフィーを掛けたものです。ベースフィーは、ネットワークのアクティビティに加えて、ブロック内にトランザクションを含めるバリデータに送信されるチップによって異なります。 -[ガスの詳細](/developers/docs/gas/#post-london) +[ガスの詳細](/developers/docs/gas/#post-london)注: パブリックネットワークにおいてトランザクションフィーは、ネットワークの需要やどれだけ迅速にトランザクションを処理する必要があるのかによって変動します。 フィー(手数料)の計算方法の内訳に興味がある場合は、 -注: パブリックネットワークにおいてトランザクションフィーは、ネットワークの需要やどれだけ迅速にトランザクションを処理する必要があるのかによって変動します。 フィー(手数料)の計算方法の内訳に興味がある場合は、[ブロックに含まれるトランザクションの仕組み](https://medium.com/ethereum-grid/ethereum-101-how-are-transactions-included-in-a-block-9ae5f491853f)に関する以前の投稿をご覧ください。 +[ブロックに含まれるトランザクションの仕組み](https://medium.com/ethereum-grid/ethereum-101-how-are-transactions-included-in-a-block-9ae5f491853f)に関する以前の投稿をご覧ください。 ## ちょっと一息 {#and-breathe} diff --git a/public/content/translations/ja/developers/tutorials/all-you-can-cache/index.md b/public/content/translations/ja/developers/tutorials/all-you-can-cache/index.md new file mode 100644 index 00000000000..c02c1e1e0a1 --- /dev/null +++ b/public/content/translations/ja/developers/tutorials/all-you-can-cache/index.md @@ -0,0 +1,960 @@ +--- +title: "キャッシュでできること" +description: ロールアップのトランザクションをより安くするキャッシュコントラクトの作成と使い方を学びます。 +author: Ori Pomerantz +tags: + - "レイヤー2" + - "キャッシュ" + - "ストレージ" +skill: 中級 +published: 2022-09-15 +lang: ja +--- + +ロールアップを使うと、トランザクションのバイトあたりのコストは、ストレージスロットのコストよりもはるかに高くなってしまいます。 そのため、オンチェーンに可能な限り多くの情報をキャッシュするほうが合理的です。 + +この記事では、複数回使用される可能性のあるパラメータの値をキャッシュして、(初回以降では) はるかに少ないバイト数で使えるようにするキャッシュコントラクトの作成および使用方法を学びます。 また、このキャッシュコントラクトを使用するチェーン上のコードを書く方法についても説明します。 + +記事を読まずにソースコードだけを確認したいならば、[こちら](https://github.com/qbzzt/20220915-all-you-can-cache)にあります。 開発スタックは、[Foundry](https://book.getfoundry.sh/getting-started/installation)を使っています。 + +## 設計の概要 {#overall-design} + +わかりやすくするために、すべてのトランザクションのパラメータは、`uint256`(32バイト長)であることとします。 トランザクションを受け取ると、次のように各パラメータをパースします。 + +1. 先頭のバイトが`0xFF`の場合、次の32バイトをパラメータの値として取得し、キャッシュに書き込む + +2. 先頭のバイトが`0xFE`の場合、次の32バイトをパラメータの値として取得するが、それをキャッシュに_書き込まない_。 + +3. その他の値の場合、上位4ビットを追加のバイト数として、下位4ビットをキャッシュキーの最上位ビットとして取得する。 以下に、いくつかの例を示します。 + + | calldataのバイト | キャッシュキー | + |:--------------- | --------:| + | 0x0F | 0x0F | + | 0x10,0x10 | 0x10 | + | 0x12,0xAC | 0x02AC | + | 0x2D,0xEA, 0xD6 | 0x0DEAD6 | + +## キャッシュ操作 {#cache-manipulation} + +[`Cache.sol`](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol)にキャッシュが実装されています。 一行ずつ見ていきましょう。 + +```solidity +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + + +contract Cache { + + bytes1 public constant INTO_CACHE = 0xFF; + bytes1 public constant DONT_CACHE = 0xFE; +``` + +上記の定数は、すべての情報を提供し、それをキャッシュに書き込むかどうかを判断するのに使います。 キャッシュに書き込むには、2回の[`SSTORE`](https://www.evm.codes/#55)操作が必要になり、未使用のストレージスロットに対し、それぞれ22100ガスのコストが発生するので選択できるようにしています。 + +```solidity + + mapping(uint => uint) public val2key; +``` + +値とそのキーの間で[マッピング](https://www.geeksforgeeks.org/solidity-mappings/)をしています。 この情報は、トランザクションを送信する前に、値をエンコードするのに必要になります。 + +```solidity + // Location n has the value for key n+1, because we need to preserve + // zero as "not in the cache". + uint[] public key2val; +``` + +キーから値へのマッピングに配列が使えます。なぜなら、キーを割り当て、それを簡単に順次実行するためです。 + +```solidity + function cacheRead(uint _key) public view returns (uint) { + require(_key <= key2val.length, "Reading uninitialize cache entry"); + return key2val[_key-1]; + } // cacheRead +``` + +キャッシュから値を読み込みます。 + +```solidity + // Write a value to the cache if it's not there already + // Only public to enable the test to work + function cacheWrite(uint _value) public returns (uint) { + // If the value is already in the cache, return the current key + if (val2key[_value] != 0) { + return val2key[_value]; + } +``` + +同じ値をキャッシュに複数回入れるのは、無駄です。 値がすでに存在するならば、既存のキーを返します。 + +```solidity + // Since 0xFE is a special case, the largest key the cache can + // hold is 0x0D followed by 15 0xFF's. If the cache length is already that + // large, fail. + // 1 2 3 4 5 6 7 8 9 A B C D E F + require(key2val.length+1 < 0x0DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + "cache overflow"); +``` + +これほどまでの大きなキャッシュを取得することは考えられません (約1.8\*1037のエントリーを保存するには約 1027TBが必要になります) 。 私はというと、[「常に640kBあれば十分だ」](https://quoteinvestigator.com/2011/09/08/640k-enough/)ということを覚えているくらいの年齢です。 このテストは安くできます。 + +```solidity + // Write the value using the next key + val2key[_value] = key2val.length+1; +``` + +(値からキーへ) 逆引できる検索を加えています。 + +```solidity + key2val.push(_value); +``` + +前方検索 (キーから値へ) を追加します。 連続して値を指定するため、最後の配列にある値の後に追加するだけです。 + +```solidity + return key2val.length; + } // cacheWrite +``` + +新しい値が格納されるセルである`key2val`の新しい長さを返します。 + +```solidity + function _calldataVal(uint startByte, uint length) + private pure returns (uint) +``` + +この関数は、任意の長さcalldata (ワードサイズは最大32バイト) から値を読み取ります。 + +```solidity + { + uint _retVal; + + require(length < 0x21, + "_calldataVal length limit is 32 bytes"); + require(length + startByte <= msg.data.length, + "_calldataVal trying to read beyond calldatasize"); +``` + +この関数は内部関数です。そのため、コードの残りの部分が正しく記述されていれば、これらのテストは必要ありません。 しかし、そんなにコストは掛からないため、テストをしてもよいかもしれません。 + +```solidity + assembly { + _retVal := calldataload(startByte) + } +``` + +これは、[Yul](https://docs.soliditylang.org/en/v0.8.16/yul.html)のコードです。 calldataから32バイトの値を読み取ります。 `startByte+32`より前にcalldataが停止した場合でも、EVM内で初期化されていない領域はゼロと見なされるため、機能します。 + +```solidity + _retVal = _retVal >> (256-length*8); +``` + +私たちは、必ずしも32バイトの値が欲しいわけではありません。 これで、余分なバイトを削除できます。 + +```solidity + return _retVal; + } // _calldataVal + + + // Read a single parameter from the calldata, starting at _fromByte + function _readParam(uint _fromByte) internal + returns (uint _nextByte, uint _parameterValue) + { +``` + +calldataからパラメータを1つ読み取ります。 パラメータの長さは、1バイトから33バイトまでの範囲です。そのため、読み取った値だけでなく、次のバイトの位置も返す必要があることに注意してください。 + +```solidity + // The first byte tells us how to interpret the rest + uint8 _firstByte; + + _firstByte = uint8(_calldataVal(_fromByte, 1)); +``` + +Solidityでは、バグを減らすために潜在的に危険な[暗黙の型変換](https://docs.soliditylang.org/en/v0.8.16/types.html#implicit-conversions)を禁止しています。 例えば、256ビットから8ビットへのダウングレードを明示的に行う必要があります。 + +```solidity + + // Read the value, but do not write it to the cache + if (_firstByte == uint8(DONT_CACHE)) + return(_fromByte+33, _calldataVal(_fromByte+1, 32)); + + // Read the value, and write it to the cache + if (_firstByte == uint8(INTO_CACHE)) { + uint _param = _calldataVal(_fromByte+1, 32); + cacheWrite(_param); + return(_fromByte+33, _param); + } + + // If we got here it means that we need to read from the cache + + // Number of extra bytes to read + uint8 _extraBytes = _firstByte / 16; +``` + +下位にある[ニブル](https://en.wikipedia.org/wiki/Nibble)を取得し、他のバイトと組み合わせてキャッシュから値を読み取ります。 + +```solidity + uint _key = (uint256(_firstByte & 0x0F) << (8*_extraBytes)) + + _calldataVal(_fromByte+1, _extraBytes); + + return (_fromByte+_extraBytes+1, cacheRead(_key)); + + } // _readParam + + + // Read n parameters (functions know how many parameters they expect) + function _readParams(uint _paramNum) internal returns (uint[] memory) { +``` + +パラメータの数は、calldata自体から取得できますが、私たちが呼び出す関数は、予期しているパラメータの数を知っています。 これは、関数を使って簡単に取得できます。 + +```solidity + // The parameters we read + uint[] memory params = new uint[](_paramNum); + + // Parameters start at byte 4, before that it's the function signature + uint _atByte = 4; + + for(uint i=0; i<_paramNum; i++) { + (_atByte, params[i]) = _readParam(_atByte); + } +``` + +必要な数のパラメータを読み込みます。 calldataの読み込みが終わると、`_readParams`は、呼び出しを戻します。 + +```solidity + + return(params); + } // readParams + + // For testing _readParams, test reading four parameters + function fourParam() public + returns (uint256,uint256,uint256,uint256) + { + uint[] memory params; + params = _readParams(4); + return (params[0], params[1], params[2], params[3]); + } // fourParam +``` + +Foundryの素晴らしい機能の一つは、Solidityでテストを作成できることです([後述するキャッシュのテストを参照](#testing-the-cache))。 そのため、単体テストが簡単に作成できます。 これは、4つのパラメータを読み取り、それらが正しいことをテストで検証できるように返す関数です。 + +```solidity + // Get a value, return bytes that will encode it (using the cache if possible) + function encodeVal(uint _val) public view returns(bytes memory) { +``` + +`encodeVal`は、オフチェーンコードがキャッシュを使用するcalldataを作るのを支援する関数です。 単一の値を受け取り、その値をエンコードしたバイト値で返します。 この関数は、`view`なのでトランザクションは必要なく、外部からの呼び出しにガス代はかかりません。 + +```solidity + uint _key = val2key[_val]; + + // The value isn't in the cache yet, add it + if (_key == 0) + return bytes.concat(INTO_CACHE, bytes32(_val)); +``` + +[EVM](/developers/docs/evm/)では、初期化されていないすべてのストレージはゼロであるとみなされます。 そのため、存在しない値のキーを検索すると、ゼロを受け取ります。 このケースにおいて、それをエンコードするバイトは `INTO_CACHE`であり、その後に実際の値が続きます (つまり次回は、キャッシュが使われます) 。 + +```solidity + // If the key is <0x10, return it as a single byte + if (_key < 0x10) + return bytes.concat(bytes1(uint8(_key))); +``` + +単一のバイトが一番簡単です。 [`bytes.concat`](https://docs.soliditylang.org/en/v0.8.16/types.html#the-functions-bytes-concat-and-string-concat)のみを使って、`bytes`型を任意の長さのバイト配列に変換します。 名前はよそにして、引数を1つだけ指定したときに、正常に動作します。 + +```solidity + // Two byte value, encoded as 0x1vvv + if (_key < 0x1000) + return bytes.concat(bytes2(uint16(_key) | 0x1000)); +``` + +163以下のキーを持っている場合は、それを2バイトで表現できます。 まず、256ビットの値である`_key`を16ビットの値に変換し、論理和を使用して余分なバイト数を先頭のバイトに加えます。 そして、この値を`bytes`に変換可能な`bytes2`値に入れます。 + +```solidity + // There is probably a clever way to do the following lines as a loop, + // but it's a view function so I'm optimizing for programmer time and + // simplicity. + + if (_key < 16*256**2) + return bytes.concat(bytes3(uint24(_key) | (0x2 * 16 * 256**2))); + if (_key < 16*256**3) + return bytes.concat(bytes4(uint32(_key) | (0x3 * 16 * 256**3))); + . + 。 + 。 + if (_key < 16*256**14) + return bytes.concat(bytes15(uint120(_key) | (0xE * 16 * 256**14))); + if (_key < 16*256**15) + return bytes.concat(bytes16(uint128(_key) | (0xF * 16 * 256**15))); +``` + +他の値(3バイト、4バイト等)も、フィールドのサイズが異なるだけで、同じ方法で処理されます。 + +```solidity + // If we get here, something is wrong. + revert("Error in encodeVal, should not happen"); +``` + +ここまでで、16\*25615以上のキーを取得できることになります。 しかし、`cacheWrite`では、キーを制限しています。そのため、14\*25616より上には行けません (これは、最初のバイトが0xFEになり、 `DONT_CACHE`になってしまうためです) 。 しかし、将来プログラマーがバグを入れてしまう場合に備え、テストを追加するのに、それほど費用はかかりません。 + +```solidity + } // encodeVal + +} // Cache +``` + +### キャッシュのテスト {#testing-the-cache} + +Foundryの素晴らしい機能の一つは、[Solidityでテストを作成できること](https://book.getfoundry.sh/forge/tests)です。そのため、単体テストを簡単に作成できます。 `Cache`クラスのテストは、[こちら](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/Cache.t.sol)にあります。 テストにおけるテストコードは、繰り返しが多い傾向があります。そのため、この記事では、重要な部分のみを説明します。 + +```solidity +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import "forge-std/Test.sol"; + + +// Need to run `forge test -vv` for the console. +import "forge-std/console.sol"; +``` + +これは、テストパッケージおよび`console.log`を使うのに必要となるボイラープレートです。 + +```solidity +import "src/Cache.sol"; +``` + +テストするコントラクトのインポートです。 + +```solidity +contract CacheTest is Test { + Cache cache; + + function setUp() public { + cache = new Cache(); + } +``` + +`setUp`関数は、各テストの前に呼び出されます。 このケースにおいては、新しいキャッシュを作成してテスト同士が影響しないようにします。 + +```solidity + function testCaching() public { +``` + +`test`の名前で始まる関数がテストです。 この関数では、値を書き込み、読み取ることでキャッシュ機能の基本的な確認を行います。 + +```solidity + for(uint i=1; i<5000; i++) { + cache.cacheWrite(i*i); + } + + for(uint i=1; i<5000; i++) { + assertEq(cache.cacheRead(i), i*i); +``` + +これは、[`assert...`関数](https://book.getfoundry.sh/reference/forge-std/std-assertions)を使って、実際にテストをする方法です。 このケースでは、書き込んだ値が読み込んだ値であることを確認します。 キャッシュキーが線形に割り当てられるため、`cache.cacheWrite`の結果は、破棄できます。 + +```solidity + } + } // testCaching + + + // Cache the same value multiple times, ensure that the key stays + // the same + function testRepeatCaching() public { + for(uint i=1; i<100; i++) { + uint _key1 = cache.cacheWrite(i); + uint _key2 = cache.cacheWrite(i); + assertEq(_key1, _key2); + } +``` + +まず、各値をキャッシュに2回書き込みます。そして、キーが同じであることを確認します (2回目の書き込みは、実際に起こらないことを意図しています)。 + +```solidity + for(uint i=1; i<100; i+=3) { + uint _key = cache.cacheWrite(i); + assertEq(_key, i); + } + } // testRepeatCaching +``` + +理論的には、連続したキャッシュの書き込みに関連しないバグが存在する可能性があります。 そのため、ここでは連続的ではない書き込みを何回か実行し、値がまだ書き換えられていないことを確認します。 + +```solidity + // Read a uint from a memory buffer (to make sure we get back the parameters + // we sent out) + function toUint256(bytes memory _bytes, uint256 _start) internal pure + returns (uint256) +``` + +`bytes memory`バッファから256ビットのワードを読み取ります。 このユーティリティ関数でキャッシュを使う関数の呼び出しを実行したときに、正しい結果が得られることを検証できます。 + +```solidity + { + require(_bytes.length >= _start + 32, "toUint256_outOfBounds"); + uint256 tempUint; + + assembly { + tempUint := mload(add(add(_bytes, 0x20), _start)) + } +``` + +Yulでは、`uint256`を超えるデータ構造をサポートしていません。そのため、メモリバッファである`_bytes`など、より高度なデータ構造を参照するときは、そのデータ構造のアドレスが取得されます。 Solidityでは、`bytes memory`値を長さを含む32バイトワードとして保存します。長さの後に実際のバイトが続くため、バイト数`_start`を取得して、`_bytes+32+_start`を計算する必要があります。 + +```solidity + + return tempUint; + } // toUint256 + + // Function signature for fourParams(), courtesy of + // https://www.4byte.directory/signatures/?bytes4_signature=0x3edc1e6d + bytes4 constant FOUR_PARAMS = 0x3edc1e6d; + + // Just some constant values to see we're getting the correct values back + uint256 constant VAL_A = 0xDEAD60A7; + uint256 constant VAL_B = 0xBEEF; + uint256 constant VAL_C = 0x600D; + uint256 constant VAL_D = 0x600D60A7; +``` + +テストに必要な定数です。 + +```solidity + function testReadParam() public { +``` + +`readParams`を使う関数`fourParams()`を呼び出し、パラメータを正しく読み取れることをテストします。 + +```solidity + address _cacheAddr = address(cache); + bool _success; + bytes memory _callInput; + bytes memory _callOutput; +``` + +キャッシュを使う関数の呼び出しに、通常のABIメカニズムは使えません。そのため、低レベルの [`
.call()`](https://docs.soliditylang.org/en/v0.8.16/types.html# members-of-addresses)メカニズムを使う必要があります。 [`
.call()`](https://docs.soliditylang.org/en/v0.8.16/types.html#members-of-addresses)のメカニズムでは、入力として`bytes memory`を取り、それを (ブール値と共に) 出力として返します。 + +```solidity + // First call, the cache is empty + _callInput = bytes.concat( + FOUR_PARAMS, +``` + +1つのコントラクトで、キャッシュされた関数 (トランザクションからの直接呼び出し用) とキャッシュ無しの関数 (他のコントラクトからの呼び出し用) の両方をサポートしていると有用です。 それには、正しい関数を呼び出すために、すべてを[`fallback`関数](https://docs.soliditylang.org/en/v0.8.16/contracts.html#fallback-function)に置くのではなく、引き続きSolidityのメカニズムに頼る必要があります。 この実装によって構成可能性をより容易に達成できます。 ほとんどの状況において、1バイトで関数を十分に識別できます。そのため、3バイト (16\*3=48ガス) を無駄にしていることになります。 しかし、この記事を書いている時点では、48ガスのコストは0.07セントなので、より単純でバグが発生しにくいコードとしては妥当なコストです。 + +```solidity + // First value, add it to the cache + cache.INTO_CACHE(), + bytes32(VAL_A), +``` + +最初の値は、全ての値をキャッシュに書き込む必要をあることを示すフラグです。次に、32バイトの値が続きます。 他の値は似ていますが、`VAL_B`は、キャッシュに書き込まれず、`VAL_C`は、3番目のパラメータと4番目のパラメータの両方である点が異なります。 + +```solidity + 。 + 。 + 。 + ); + (_success, _callOutput) = _cacheAddr.call(_callInput); +``` + +`Cache`コントラクトを実際に呼び出すところです。 + +```solidity + assertEq(_success, true); +``` + +この呼び出しが成功することを要求しています。 + +```solidity + assertEq(cache.cacheRead(1), VAL_A); + assertEq(cache.cacheRead(2), VAL_C); +``` + +空のキャッシュから始め、 `VAL_A`を加えてから `VAL_C`を追加します。 最初のキーに1があり、2番目のキーには、2があることを要求しています。 + +``` + assertEq(toUint256(_callOutput,0), VAL_A); + assertEq(toUint256(_callOutput,32), VAL_B); + assertEq(toUint256(_callOutput,64), VAL_C); + assertEq(toUint256(_callOutput,96), VAL_C); +``` + +出力は、4つのパラメータです。 ここで、それが正しいことを検証しています。 + +```solidity + // Second call, we can use the cache + _callInput = bytes.concat( + FOUR_PARAMS, + + // First value in the Cache + bytes1(0x01), +``` + +16未満のキャッシュキーは、ちょうど1バイトになります。 + +```solidity + // Second value, don't add it to the cache + cache.DONT_CACHE(), + bytes32(VAL_B), + + // Third and fourth values, same value + bytes1(0x02), + bytes1(0x02) + ); + . + 。 + 。 + } // testReadParam +``` + +呼出し後のテストは、最初の呼び出しの後のテストと同一です。 + +```solidity + function testEncodeVal() public { +``` + +この関数は、`testReadParam`に似ています。しかし、パラメータを明示的に記述する代わりに、`encodeVal()`を使うところが違います。 + +```solidity + 。 + 。 + 。 + _callInput = bytes.concat( + FOUR_PARAMS, + cache.encodeVal(VAL_A), + cache.encodeVal(VAL_B), + cache.encodeVal(VAL_C), + cache.encodeVal(VAL_D) + ); + . + 。 + 。 + assertEq(_callInput.length, 4+1*4); + } // testEncodeVal +``` + +`testEncodeVal()`の唯一の追加テストとして、`_callInput`の長さが正しいかを検証することがあります。 最初の呼び出しでは、4+33\*4となります。 次の呼び出しでは、すべての値がすでにキャッシュ内にあり、4+1\*4となります。 + +```solidity + // Test encodeVal when the key is more than a single byte + // Maximum three bytes because filling the cache to four bytes takes + // too long. + function testEncodeValBig() public { + // Put a number of values in the cache. + // To keep things simple, use key n for value n. + for(uint i=1; i<0x1FFF; i++) { + cache.cacheWrite(i); + } +``` + +上記の`testEncodeVal`関数は、4つの値のみをキャッシュに書き込むので、[マルチバイト値を処理する関数の部分](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol#L144-L171)についてチェックされません。 しかし、その部分は、複雑でエラーが発生しやすくなっています。 + +この関数の最初の部分は、1から0x1FFFまでのすべての値を順番にキャッシュに書き込むループなので、これらの値をエンコードして、どこに行くのかを知ることができます。 + +```solidity + 。 + 。 + 。 + + _callInput = bytes.concat( + FOUR_PARAMS, + cache.encodeVal(0x000F), // One byte 0x0F + cache.encodeVal(0x0010), // Two bytes 0x1010 + cache.encodeVal(0x0100), // Two bytes 0x1100 + cache.encodeVal(0x1000) // Three bytes 0x201000 + ); +``` + +1バイト、2バイト、3バイトの値をテストします。 十分なスタックエントリを書き込むには時間がかかりすぎるため (0x10000000では少なくとも約2億5千万回) 、それ以上のテストは行いません。 + +```solidity + 。 + 。 + 。 + 。 + } // testEncodeValBig + + + // Test what with an excessively small buffer we get a revert + function testShortCalldata() public { +``` + +パラメータが足りていない場合の異常時に何が起こるかをテストします。 + +```solidity + 。 + 。 + 。 + (_success, _callOutput) = _cacheAddr.call(_callInput); + assertEq(_success, false); + } // testShortCalldata +``` + +処理が取り消されるので、得られる結果は、`false`になります。 + +``` + // Call with cache keys that aren't there + function testNoCacheKey() public { + . + 。 + 。 + _callInput = bytes.concat( + FOUR_PARAMS, + + // First value, add it to the cache + cache.INTO_CACHE(), + bytes32(VAL_A), + + // Second value + bytes1(0x0F), + bytes2(0x1234), + bytes11(0xA10102030405060708090A) + ); +``` + +この関数は、キャッシュが空なので読み込む値がないことは別として、正当な4つのパラメータを取得します。 + +```solidity + 。 + 。 + 。 + // Test what with an excessively long buffer everything works file + function testLongCalldata() public { + address _cacheAddr = address(cache); + bool _success; + bytes memory _callInput; + bytes memory _callOutput; + + // First call, the cache is empty + _callInput = bytes.concat( + FOUR_PARAMS, + + // First value, add it to the cache + cache.INTO_CACHE(), bytes32(VAL_A), + + // Second value, add it to the cache + cache.INTO_CACHE(), bytes32(VAL_B), + + // Third value, add it to the cache + cache.INTO_CACHE(), bytes32(VAL_C), + + // Fourth value, add it to the cache + cache.INTO_CACHE(), bytes32(VAL_D), + + // And another value for "good luck" + bytes4(0x31112233) + ); +``` + +この関数は、5つの値を送信します。 5番目の値は、有効なキャッシュエントリではないため、無視されます。このキャッシュエントリが含まれない場合は、処理が取り消されることになります。 + +```solidity + (_success, _callOutput) = _cacheAddr.call(_callInput); + assertEq(_success, true); + . + 。 + 。 + } // testLongCalldata + +} // CacheTest + +``` + +## サンプルアプリケーション {#a-sample-app} + +Solidityでテストを作成するのは素晴らしいものの、結局のところ、有用なDappにするには、チェーンの外部からリクエストを処理できる必要があります。 この記事では、「Write Once, Read Many」の略である`WORM`使ってDappにおけるキャッシュの使い方を詳しく説明します。 キーが書き込まれていない場合は、値を書き込むことができます。 キーがすでに書き込まれている場合は、処理が取り消されます。 + +### コントラクト {#the-contract} + +[ここに](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/WORM.sol)コントラクトのコードがあります。 コードでは、ほとんどすでに解説した`Cache`と`CacheTest`を繰り返しているため、興味深い部分のみを取り上げます。 + +```solidity +import "./Cache.sol"; + +contract WORM is Cache { +``` + +`Cache`を使う最も簡単な方法は、自分のコントラクトに継承することです。 + +```solidity + function writeEntryCached() external { + uint[] memory params = _readParams(2); + writeEntry(params[0], params[1]); + } // writeEntryCached +``` + +この関数は、上述の`CacheTest`の`fourParam`に似ています。 ABI仕様に従っていないため、関数内でパラメータを宣言しないほうが間違いなく良いでしょう。 + +```solidity + // Make it easier to call us + // Function signature for writeEntryCached(), courtesy of + // https://www.4byte.directory/signatures/?bytes4_signature=0xe4e4f2d3 + bytes4 constant public WRITE_ENTRY_CACHED = 0xe4e4f2d3; +``` + +ABIの仕様に従っていないため、`writeEntryCached`を呼び出す外部コードは、`worm.writeEntryCached`を使う代わりに手動でcalldataを作成しなければなりません。 この定数値があると、その記述が楽になります。 + +`WRITE_ENTRY_CACHED`を状態変数として定義しても、それを外部から読み取るには、Getter関数 `worm.WRITE_ENTRY_CACHED()`を使うわなければならないことに気をつけてください。 + +```solidity + function readEntry(uint key) public view + returns (uint _value, address _writtenBy, uint _writtenAtBlock) +``` + +読み取りの関数は、`view`で宣言されているので、トランザクションは必要なく、ガスもかかりません。 結果、パラメータにキャッシュを使うメリットは、ありません。 ビュー関数では、より単純な標準メカニズムを使う方が最善です。 + +### テストコード {#the-testing-code} + +[ここに](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/WORM.t.sol)コントラクトのテストコードがあります。 再度となりますが、興味深い部分のみを取り上げます。 + +```solidity + function testWReadWrite() public { + worm.writeEntry(0xDEAD, 0x60A7); + + vm.expectRevert(bytes("entry already written")); + worm.writeEntry(0xDEAD, 0xBEEF); +``` + +[この箇所は (`vm.expectRevert`)](https://book.getfoundry.sh/cheatcodes/expect-revert#expectrevert)、Foundryテストで次の呼び出しが失敗し、失敗した理由をレポートすることを記述する方法です。 これは、低レベルのインターフェイス (`.call()`など) を使用して呼び出しデータを作成し、コントラクトを呼び出すというよりも、`.()`構文を使う時に作動させます。 + +```solidity + function testReadWriteCached() public { + uint cacheGoat = worm.cacheWrite(0x60A7); +``` + +上記は、`cacheWrite`がキャッシュキーを返すというファクトを使います。 これは運用環境での使用を想定していません。`cacheWrite`は、状態を変更するためです。従ってトランザクション中しか読みだせません。 トランザクションには、戻り値がありません。結果があれば、その結果はイベントとして出力されることになります。 そのため、 `cacheWrite`の戻り値は、オンチェーンコードからのみアクセスできます。また、オンチェーンコードでは、パラメータキャッシュは不要です。 + +```solidity + (_success,) = address(worm).call(_callInput); +``` + +上記は、`.call()`に2つの戻り値があるものの、最初の値のみを使うことをSolidityに伝える方法です。 + +```solidity + (_success,) = address(worm).call(_callInput); + assertEq(_success, false); +``` + +低レベルの`
.call()`関数を使っているので`vm.expectRevert()`は使用できません。呼び出しで取得したブール値で成功を確認する必要があります。 + +```solidity + event EntryWritten(uint indexed key, uint indexed value); + + . + 。 + 。 + + _callInput = bytes.concat( + worm.WRITE_ENTRY_CACHED(), worm.encodeVal(a), worm.encodeVal(b)); + vm.expectEmit(true, true, false, false); + emit EntryWritten(a, b); + (_success,) = address(worm).call(_callInput); +``` + +上記は、Foundryでコードが[イベントを正しく発行していること](https://book.getfoundry.sh/cheatcodes/expect-emit)を確認する方法です。 + +### クライアント {#the-client} + +Solidityのテストで得られないものの1つとして、自身のアプリケーションにカットアンドペーストできるJavaScriptコードでしょう。 そのコードを書くために、WORMをOptimismの新しいテストネットであるOptimism Goerliにデプロイしました。 アドレスは、0xd34335b1d818cee54e3323d3246bd31d94e6a78aです。

+ +

+ クライアントのJavaScriptコードは、こちらにあります。 次の方法で使うことができます。 +

+ +
    +
  1. +

    + 次のGitリポジトリをクローンしてください。 + +

       git clone https://github.com/qbzzt/20220915-all-you-can-cache.git
    +
    +

    +
  2. + +
  3. +

    + 必要な次のパッケージをインストールしてください。 + +

       cd javascript
    +   yarn
    +
    +

    +
  4. + +
  5. +

    + 次の設定ファイルをコピーしてください。 + +

       cp .env.example .env
    +
    +

    +
  6. + +
  7. +

    + .envを編集して設定を行ってください。 +

    +
  8. +
+ + + + + + + + + + + + + + + + + + + +
+ パラメータ + + 値 +
+ MNEMONIC + + トランザクションの支払いで十分なETHを持っているアカウントのニーモニック。 こちらでOptimismのGoerliネットワークの無料ETHを手に入れられます。 +
+ OPTIMISM_GOERLI_URL + + Optimism GoerliのURLを設定します。 公開エンドポイントは、 https://goerli.optimism.ioです。通信制限がありますが、必要なことをするには十分です。 +
+ +
    +
  1. +

    + index.jsの実行 + +

       node index.js
    +
    +

    + +

    + このサンプルアプリケーションは、まず、WORMにエントリを書き込み、calldataとEtherescan上のトランザクションへのリンクを表示します。 そして、そのエントリを読み込み、使用するキーとエントリ内の値 (値、ブロック番号、作成者) を表示します。 +

    +
  2. +
+ +

+ クライアントの大体の部分は、通常のDappのJavaScriptと変わりません。 そのため、ここでも興味深い部分のみを取り上げます。 +

+ +
。
+。
+。
+const main = async () => {
+    const func = await worm.WRITE_ENTRY_CACHED()
+
+    // Need a new key every time
+    const key = await worm.encodeVal(Number(new Date()))
+
+ +

+ 与えられたスロットには、1回しか書き込むことができないため、タイムスタンプを使用してスロットが再利用されないようにします。 +

+ +
const val = await worm.encodeVal("0x600D")
+
+// Write an entry
+const calldata = func + key.slice(2) + val.slice(2)
+
+ +

+ Ethersでは、calldataが16進数の文字列、0xの後に16進数の偶数が続くことを想定しています。 keyvalは、両方とも0xで始まるため、これらのヘッダーを削除する必要があります。 +

+ +
const tx = await worm.populateTransaction.writeEntryCached()
+tx.data = calldata
+
+sentTx = await wallet.sendTransaction(tx)
+
+ +

+ Solidityのテストコードと同様に、キャッシュされた関数を通常は呼び出すことができません。 代わりに、低レベルのメカニズムを使用する必要があります。 +

+ +
    。
+    。
+    。
+    // Read the entry just written
+    const realKey = '0x' + key.slice(4)  // remove the FF flag
+    const entryRead = await worm.readEntry(realKey)
+    .
+    。
+    。
+
+ +

+ エントリの読み取りには、通常のメカニズムを使用できます。 view関数では、パラメータのキャッシュを使う必要はありません。 +

+ + + +

+ まとめ +

+ +

+ この記事のコードの目的は、PoC (プルーフ・オブ・コンセプト) で、アイデアを理解しやすくすることです。 本番環境でのシステムでは、次のいくつかの追加機能を実装する必要性が考えられます。 +

+ +
    +
  • + uint256以外の値に対応すること。 例えば、文字列です。 +
  • +
  • + グローバルキャッシュの代わりに、ユーザーとキャッシュ間のマッピングを持つことも考えられます。 異なるユーザーで異なる値を使う場合です。 +
  • +
  • + アドレスに使用される値は、他の目的に使用される値とは異なります。 アドレス専用の別のキャッシュに分けた方が合理的かもしれません。 +
  • +
  • +

    + 現在のコードでは、キャッシュキーは「先着最小キー」アルゴリズムになっています。 最初の16個の値は、1バイトとして送信できます。 次の4080個の値は、2バイトとして送信できます。 次の約100万個の値は、3バイトなどとなります。 本番のシステムでは、キャッシュエントリ上で使用量カウンタを保持し、16個の最も一般的な値が1バイト、次の4080個にくる一般的な値が2バイトになるようにする等、再編成する必要があります。 +

    +

    + ただし、それはリスクのある操作です。 次の一連のイベントを想像してみてください。 +

    +
      +
    1. +

      + Noam Naiveは、彼がトークンを送信するアドレスをエンコードするためにencodeValを呼び出します。 これは、アプリケーションで最初に使用されるアドレスの1つであるため、0x06の値にエンコードされます。 また、トランザクションではないため、view関数になります。そのため、Noamと彼が使うノードの間であり、他の人はそれについて知りません。 +

      +
    2. + +
    3. +

      + Owen Ownerは、キャッシュの並べ替え操作を実行します。 そのアドレスを使用する人はほとんどいないため、現在は 0x201122としてエンコードされています。 別の値である1018には、0x06が割り当てられます。 +

      +
    4. + +
    5. +

      + Noam Naiveは、保有しているトークンを0x06に送信します。 そのトークンは、アドレス 0x0000000000000000000000000de0b6b3a7640000に送られますが、そのアドレスの秘密鍵を誰も知らないため、そこにスタックしてしまいます。 Noamにとってこれは悲惨です。 +

      +
    6. +
    + +

    + この問題とキャッシュの再順序付け中にメモリプール内にあるトランザクションに関連する問題を解決する方法は、いくつかありますが、注意をしなければなりません。 +

    +
  • +
+ +

+ 私は、Optimismの従業員なので、最もよく知っているロールアップであるOptimismを使用してキャッシュを説明しました。 内部処理に最小限のコストが発生する他のロールアップでも機能するはずです。他のロールアップを比較すると、L1へのトランザクションデータの書き込みが主なコストとなります。 +

diff --git a/public/content/translations/ja/developers/tutorials/calling-a-smart-contract-from-javascript/index.md b/public/content/translations/ja/developers/tutorials/calling-a-smart-contract-from-javascript/index.md index 6d323b86386..037235d134c 100644 --- a/public/content/translations/ja/developers/tutorials/calling-a-smart-contract-from-javascript/index.md +++ b/public/content/translations/ja/developers/tutorials/calling-a-smart-contract-from-javascript/index.md @@ -105,10 +105,10 @@ ABIを提供した、インスタンス化されたスマートコントラク ```js daiToken.methods.balanceOf(senderAddress).call(function (err, res) { if (err) { - console.log("エラーが発生しました。", err) + console.log("An error occurred", err) return } - console.log("残高は: ", res) + console.log("The balance is: ", res) }) ``` @@ -123,10 +123,10 @@ daiToken.methods .transfer(receiverAddress, "100000000000000000000") .send({ from: senderAddress }, function (err, res) { if (err) { - console.log("エラーが発生しました。", err) + console.log("An error occurred", err) return } - console.log("トランザクションのハッシュ: " + res) + console.log("Hash of the transaction: " + res) }) ``` diff --git a/public/content/translations/ja/developers/tutorials/create-and-deploy-a-defi-app/index.md b/public/content/translations/ja/developers/tutorials/create-and-deploy-a-defi-app/index.md index bcdeeb52736..33dca9de55b 100644 --- a/public/content/translations/ja/developers/tutorials/create-and-deploy-a-defi-app/index.md +++ b/public/content/translations/ja/developers/tutorials/create-and-deploy-a-defi-app/index.md @@ -9,22 +9,22 @@ tags: - "Truffle" - "Ganache" - "スマートコントラクト" -skill: intermediate +skill: 中級 lang: ja published: 2020-12-31 source: github.com sourceUrl: https://github.com/strykerin/DeFi-Token-Farm --- -このチュートリアルでは、Solidity を使用して DeFi アプリケーションを構築します。このアプリケーションでは、ERC20 トークンをスマートコントラクトに入金した上で、Farm Token を発行して転送することができます。 ユーザーはその後、スマートコントラクトで Farm Token をバーンすることで ERC-20 トークンを引き出すことができ、ERC-20 トークンは再度ユーザーに転送されます。 +このチュートリアルでは、Solidityを使用してDeFiアプリケーションを構築します。このアプリケーションでは、ERC20トークンをスマートコントラクトに入金した上で、Farm Tokenを発行して転送することができます。 ユーザーはその後、スマートコントラクトでFarm TokenをバーンすることでERC-20 トークンを引き出すことができ、ERC-20トークンは再度ユーザーに転送されます。 -## Truffle と Ganache をインストールする {#install-truffle-and-ganache} +## TruffleとGanacheをインストールする {#install-truffle-and-ganache} -はじめてスマートコントラクトを作成する場合は、環境設定が必要です。 [Truffle](https://www.trufflesuite.com/)と[Ganache](https://www.trufflesuite.com/ganache)という 2 つのツールを使用します。 +はじめてスマートコントラクトを作成する場合は、環境設定が必要です。 [Truffle](https://www.trufflesuite.com/)と[Ganache](https://www.trufflesuite.com/ganache)という2つのツールを使用します。 -Truffle はイーサリアムのスマートコントラクトを開発するための開発環境とテストフレームワークです。 Truffle を使用すると、簡単にスマートコントラクトを構築し、ブロックチェーンでデプロイできます。 Ganache は、スマートコントラクトをテストするために、ローカルのイーサリアムブロックチェーンを作成することができます。 Ganache は、実際のネットワークの機能をシミュレートし、最初の 10 アカウントに対しテスト用の 100ether が供給します。 これにより、無料で自由にスマートコントラクトをデプロイし、テストできるようになります。 Ganache は、デスクトップアプリケーションとコマンドラインツールの両方が提供されています。 この記事では、UI デスクトップアプリケーションを使用します。 +Truffleはイーサリアムのスマートコントラクトを開発するための開発環境とテストフレームワークです。 Truffleを使用すると、簡単にスマートコントラクトを構築し、ブロックチェーンでデプロイできます。 Ganacheは、スマートコントラクトをテストするために、ローカルのイーサリアムブロックチェーンを作成することができます。 Ganacheは、実際のネットワークの機能をシミュレートし、最初の10アカウントに対しテスト用の100etherが供給します。 これにより、無料で自由にスマートコントラクトをデプロイし、テストできるようになります。 Ganacheは、デスクトップアプリケーションとコマンドラインツールの両方が提供されています。 この記事では、UIデスクトップアプリケーションを使用します。 -![Ganache UIデスクトップアプリケーション](https://cdn-images-1.medium.com/max/2360/1*V1iQ5onbLbT5Ib2QaiOSyg.png)_Ganache の UI デスクトップアプリケーション _ +![Ganache UIデスクトップアプリケーション](https://cdn-images-1.medium.com/max/2360/1*V1iQ5onbLbT5Ib2QaiOSyg.png)_GanacheのUI デスクトップアプリケーション _ プロジェクトを作成するには、次のコマンドを実行します @@ -36,23 +36,23 @@ truffle init これにより、スマートコントラクトを開発し、デプロイするための空のプロジェクトが作成されます。 作成したプロジェクトの構造は以下のようになります: -- `contracts`:Solidity で作成したスマートコントラクトのフォルダ +- `contracts`:Solidityで作成したスマートコントラクトのフォルダ - `migrations`:デプロイ用スクリプトのフォルダ - `test`:スマートコントラクトをテストするためのフォルダ -- `truffle-config.js`:Truffle の設定ファイル +- `truffle-config.js`:Truffleの設定ファイル -## ERC-20 トークンを作成する {#create-the-erc20-token} +## ERC-20トークンを作成する {#create-the-erc20-token} -最初に、スマートコントラクトにステークするために使用する ERC-20 トークンを作成する必要があります。 代替可能なトークンを作成するには、まず OpenZeppelin ライブラリをインストールする必要があります。 このライブラリには、ERC-20 や ERC-721 のような標準の実装が含まれています。 インストールするには、以下のコマンドを実行します: +最初に、スマートコントラクトにステークするために使用するERC-20トークンを作成する必要があります。 代替可能なトークンを作成するには、まずOpenZeppelinライブラリをインストールする必要があります。 このライブラリには、ERC-20やERC-721のような標準の実装が含まれています。 インストールするには、以下のコマンドを実行します: ```bash npm install @openzeppelin/contracts ``` -OpenZeppelin ライブラリを使用して、`contracts/MyToken.sol`に以下の Solidity コードを書き込むことで ERC-20 トークンを作成できます。 +OpenZeppelinライブラリを使用して、`contracts/MyToken.sol`に以下のSolidityコードを書き込むことでERC-20トークンを作成できます。 ```solidity pragma solidity ^0.8.0; @@ -68,15 +68,15 @@ contract MyToken is ERC20 { 上記のコードでは: -- 3 行目:このトークン標準の実装を含む OpenZeppelin から、ERC20.sol コントラクトをインポートします。 +- 3行目:このトークン標準の実装を含むOpenZeppelinから、ERC20.solコントラクトをインポートします。 -- 5 行目:ERC20.sol コントラクトを継承します。 +- 5行目:ERC20.solコントラクトを継承します。 -- 6 行目:ERC20.sol コンストラクタを呼び出し、名前とシンボルパラメータを `"MyToken"` と `"MTKN"` として引き渡します。 +- 6行目:ERC20.solコンストラクタを呼び出し、名前とシンボルパラメータを `"MyToken"` と `"MTKN"` として引き渡します。 -- 7 行目:スマートコントラクトをデプロイしているアカウントに、100 万トークンを発行して転送します(ERC-20 トークンでは、デフォルトである小数点以下 18 桁を使用します。 つまり、1 トークンをミントしたい場合は、1000000000000000000 と、1 の後に 18 個の 0 を付けて表します) 。 +- 7行目:スマートコントラクトをデプロイしているアカウントに、100万トークンを発行して転送します(ERC-20トークンでは、デフォルトである小数点以下18桁を使用します。 つまり、1トークンをミントしたい場合は、1000000000000000000と、1の後に18個の0を付けて表します) 。 -以下の ERC20.sol コンストラクタの実装では、 `_decimals`フィールドが 18 に設定されているのが確認できます: +以下のERC20.solコンストラクタの実装では、 `_decimals`フィールドが18に設定されているのが確認できます: ```solidity string private _name; @@ -90,15 +90,15 @@ constructor (string memory name_, string memory symbol_) public { } ``` -## ERC-20 トークンをコンパイルする {#compile-the-erc20-token} +## ERC-20トークンをコンパイルする {#compile-the-erc20-token} -スマートコントラクトをコンパイルするには、まず Solidity コンパイラのバージョンを確認してください。 バージョンを確認するには、以下のコマンドを実行します: +スマートコントラクトをコンパイルするには、まずSolidityコンパイラのバージョンを確認してください。 バージョンを確認するには、以下のコマンドを実行します: ```bash truffle version ``` -デフォルトのバージョンは `Solidity v0.5.16` です。 このトークンは Solidity のバージョン `0.6.2` を使って作成されているため、このコマンドを実行してコントラクトをコンパイルしようとするとエラーが発生します。 使用したい Solidity コンパイラのバージョンを指定するには、`truffle-config.js`を開き、以下のように設定します。 +デフォルトのバージョンは `Solidity v0.5.16` です。 このトークンはSolidityのバージョン `0.6.2` を使って作成されているため、このコマンドを実行してコントラクトをコンパイルしようとするとエラーが発生します。 使用したいSolidityコンパイラのバージョンを指定するには、`truffle-config.js`を開き、以下のように設定します。 ```javascript // Configure your compilers @@ -123,11 +123,11 @@ compilers: { truffle compile ``` -## ERC-20 トークンをデプロイする {#deploy-erc20-token} +## ERC-20トークンをデプロイする {#deploy-erc20-token} コンパイルが完了すると、トークンをデプロイできるようになります。 -`migrations`フォルダに、 `2_deploy_Tokens.js`という名前のファイルを作成します。 このファイルでは、ERC-20 トークンと Farm Token スマートコントラクトの両方をデプロイします。 以下のコードは、MyToken.sol コントラクトをデプロイするために使用します: +`migrations`フォルダに、 `2_deploy_Tokens.js`という名前のファイルを作成します。 このファイルでは、ERC-20トークンとFarm Tokenスマートコントラクトの両方をデプロイします。 以下のコードは、MyToken.solコントラクトをデプロイするために使用します: ```javascript const MyToken = artifacts.require("MyToken") @@ -139,19 +139,19 @@ module.exports = async function (deployer, network, accounts) { } ``` -Ganache を開いて「QuickStart」のオプションを選択すると、ローカルのイーサリアムブロックチェーンが開始されます。 コントラクトをデプロイするには、以下を実行します: +Ganacheを開いて「QuickStart」のオプションを選択すると、ローカルのイーサリアムブロックチェーンが開始されます。 コントラクトをデプロイするには、以下を実行します: ```bash truffle migrate ``` -コントラクトのデプロイに使用するアドレスは、Ganache で表示されるアドレスリストの一番上のアドレスです。 これを確認するには、Ganache のデスクトップアプリケーションを開きます。スマートコントラクトをデプロイするためにコストが発生したため、リストの一番上のアカウントでは ether の残高が減少していることを確認してください。 +コントラクトのデプロイに使用するアドレスは、Ganacheで表示されるアドレスリストの一番上のアドレスです。 これを確認するには、Ganacheのデスクトップアプリケーションを開きます。スマートコントラクトをデプロイするためにコストが発生したため、リストの一番上のアカウントではetherの残高が減少していることを確認してください。 -![Ganacheデスクトップアプリケーション](https://cdn-images-1.medium.com/max/2346/1*1iJ9VRlyLuza58HL3DLfpg.png)_Ganache デスクトップアプリケーション_ +![Ganacheデスクトップアプリケーション](https://cdn-images-1.medium.com/max/2346/1*1iJ9VRlyLuza58HL3DLfpg.png)_Ganacheデスクトップアプリケーション_ -デプロイ先アドレスに「MyToken」トークンが 100 万個送信されたことを確認するには、Truffle Console を使ってデプロイ済みのスマートコントラクトと接続します。 +デプロイ先アドレスに「MyToken」トークンが100万個送信されたことを確認するには、Truffle Consoleを使ってデプロイ済みのスマートコントラクトと接続します。 -> [Truffle Console は、あらゆるイーサリアムクライアントに接続できる基本的な対話型コンソールです。](https://www.trufflesuite.com/docs/truffle/getting-started/using-truffle-develop-and-the-console) +> [Truffle Consoleは、あらゆるイーサリアムクライアントに接続できる基本的な対話型コンソールです。](https://www.trufflesuite.com/docs/truffle/getting-started/using-truffle-develop-and-the-console) スマートコントラクトとのやりとりを実行するには、以下のコマンドを実行します: @@ -163,29 +163,29 @@ truffle console - スマートコントラクトの取得: `myToken = await MyToken.deployed()` -- Ganache からアカウント情報を取得する:`accounts = await web3.eth.getAccounts()` +- Ganacheからアカウント情報を取得する:`accounts = await web3.eth.getAccounts()` - 一番上のアカウントの残高を取得する: `balance = await myToken.balanceOf(accounts[0])` -- 残高のフォーマットを、小数点以下 18 桁に設定する:`web3.utils.fromWei(balance.toString())` +- 残高のフォーマットを、小数点以下18桁に設定する:`web3.utils.fromWei(balance.toString())` -上記のコマンドを実行すると、最初のアドレスに実際に 100 万個の MyTokens が含まれていることが確認できます。 +上記のコマンドを実行すると、最初のアドレスに実際に100万個のMyTokensが含まれていることが確認できます。 ![一番上のアドレスに、100万MyTokenが含まれています](https://cdn-images-1.medium.com/max/2000/1*AQlj9A7dw-qtY4QAD3Bpxw.png) -_最初のアドレスに、100 万 MyTokens が含まれています。_ +_最初のアドレスに、100万MyTokensが含まれています。_ -## Farm Token のスマートコントラクトを作成する {#create-farmtoken-smart-contract} +## Farm Tokenのスマートコントラクトを作成する {#create-farmtoken-smart-contract} -Farm Token のスマートコントラクトは、以下の 3 つの機能を持ちます: +Farm Tokenのスマートコントラクトは、以下の3つの機能を持ちます: -- `balance()`:Farm Token スマートコントラクトにおける MyToken の残高を取得します。 +- `balance()`:Farm TokenスマートコントラクトにおけるMyTokenの残高を取得します。 -- `deposit(uint256 _amount)`:ユーザーを代理して MyToken を Farm Token スマートコントラクトに転送し、Farm Token を作成した上でユーザーに返送します。 +- `deposit(uint256 _amount)`:ユーザーを代理してMyTokenをFarm Tokenスマートコントラクトに転送し、Farm Tokenを作成した上でユーザーに返送します。 -- `withdraw(uint256 _amount)`:ユーザーの Farm Token をバーンし、MyToken をユーザーのアドレスに転送します。 +- `withdraw(uint256 _amount)`:ユーザーのFarm Tokenをバーンし、MyToken をユーザーのアドレスに転送します。 -以下の Farm Token コンストラクタを確認してください: +以下のFarm Tokenコンストラクタを確認してください: ```solidity pragma solidity ^0.6.2; @@ -210,13 +210,13 @@ contract FarmToken is ERC20 { } ``` -- 3 ~ 6 行目: OpenZeppelin から、以下のコントラクト(IERC20.sol、Address.sol、SafeERC20.sol、ERC20.sol)をインポートします。 +- 3~6行目: OpenZeppelinから、以下のコントラクト(IERC20.sol、Address.sol、SafeERC20.sol、ERC20.sol)をインポートします。 -- 8 行目:この Farm Token は、ERC-20 コントラクトを継承します。 +- 8行目:このFarm Tokenは、ERC-20コントラクトを継承します。 -- 14 ~ 19 行目:Farm Token コンストラクタは、MyToken コントラクトのアドレスをパラメータとして受け取り、このコントラクトに`token`の public 変数を割り当てます。 +- 14~19行目:Farm Tokenコンストラクタは、MyTokenコントラクトのアドレスをパラメータとして受け取り、このコントラクトに`token`のpublic変数を割り当てます。 -それでは、`balance()`関数を実装しましょう。 この関数は、パラメータを受け取らず、スマートコントラクトの MyToken 残高を返します。 以下のように実装します: +それでは、`balance()`関数を実装しましょう。 この関数は、パラメータを受け取らず、スマートコントラクトのMyToken残高を返します。 以下のように実装します: ```solidity function balance() public view returns (uint256) { @@ -224,7 +224,7 @@ function balance() public view returns (uint256) { } ``` -`deposit(uint256 _amount)`関数は、ユーザーが入金したい金額をパラメータとして受け取り、Farm Token を作成した上でユーザーに転送します。 +`deposit(uint256 _amount)`関数は、ユーザーが入金したい金額をパラメータとして受け取り、Farm Tokenを作成した上でユーザーに転送します。 ```solidity function deposit(uint256 _amount) public { @@ -239,7 +239,7 @@ function deposit(uint256 _amount) public { } ``` -`withdraw(uint256 _amount)` 関数は、ユーザーがバーンしたい Farm Token の金額をパラメータして受け取り、同額の My Token をユーザーに転送します。 +`withdraw(uint256 _amount)` 関数は、ユーザーがバーンしたいFarm Tokenの金額をパラメータして受け取り、同額のMy Tokenをユーザーに転送します。 ```solidity function withdraw(uint256 _amount) public { @@ -268,11 +268,11 @@ module.exports = async function (deployer, network, accounts) { } ``` -Farm Token をデプロイする時は、デプロイ済みの MyToken コントラクトのアドレスがパラメータとして提供される点に注意してください。 +Farm Tokenをデプロイする時は、デプロイ済みのMyTokenコントラクトのアドレスがパラメータとして提供される点に注意してください。 次に、`truffle compile`と `truffle migrate`を実行して、コントラクトをデプロイします。 -次に、スマートコントラクトのテストを実行します。 スマートコントラクトとのやり取りには、`truffle console`を使用するのではなく、テストプロセスを自動化するスクリプトを作成します。 `scripts`というフォルダを作成し、`getMyTokenBalance.js`ファイルを追加してください。 このファイルで、Farm Token スマートコントラクトにおける MyToken 残高を確認できます。 +次に、スマートコントラクトのテストを実行します。 スマートコントラクトとのやり取りには、`truffle console`を使用するのではなく、テストプロセスを自動化するスクリプトを作成します。 `scripts`というフォルダを作成し、`getMyTokenBalance.js`ファイルを追加してください。 このファイルで、Farm TokenスマートコントラクトにおけるMyToken残高を確認できます。 ```javascript const MyToken = artifacts.require("MyToken") @@ -287,15 +287,15 @@ module.exports = async function (callback) { } ``` -このスクリプトを実行するには、以下の cli コマンドを実行します: +このスクリプトを実行するには、以下のcliコマンドを実行します: ```bash truffle exec .\scripts\getMyTokenBalance.js ``` -ここでは、予想通り「0」が表示されます。 Farm Token がデプロイされていないというエラーが表示された場合、Truffle ネットワークに最新バージョンのコントラクトコードが提供されていないことを意味します。 Ganache を閉じて再度 quickstart を実行してから、確実に`truffle migrate`を実行してください。 +ここでは、予想通り「0」が表示されます。 Farm Tokenがデプロイされていないというエラーが表示された場合、Truffleネットワークに最新バージョンのコントラクトコードが提供されていないことを意味します。 Ganacheを閉じて再度quickstartを実行してから、確実に`truffle migrate`を実行してください。 -次に、MyToken をこのスマートコントラクト上でステーキングしましょう。 `deposit(uint256 _amount)` は ERC-20 の`safeTransferFrom`関数を呼び出す関数ですから、ユーザーはまず、スマートコントラクトがユーザーの代理として MyToken を送信するのを承認する必要があります。 このため以下のスクリプトでは、まずこのステップを承認し、その上で関数を呼び出します。 +次に、MyTokenをこのスマートコントラクト上でステーキングしましょう。 `deposit(uint256 _amount)` はERC-20の`safeTransferFrom`関数を呼び出す関数ですから、ユーザーはまず、スマートコントラクトがユーザーの代理としてMyTokenを送信するのを承認する必要があります。 このため以下のスクリプトでは、まずこのステップを承認し、その上で関数を呼び出します。 ```javascript const MyToken = artifacts.require("MyToken") @@ -391,7 +391,7 @@ module.exports = async function (callback) { _transferMyTokenToFarmToken.js の出力_ -一番上のアカウントに Farm Token が入金されたことが確認できるので、スマートコントラクトに MyToken を入金することができました。 +一番上のアカウントにFarm Tokenが入金されたことが確認できるので、スマートコントラクトに MyTokenを入金することができました。 出金は、以下の方法で行います: @@ -462,7 +462,7 @@ module.exports = async function (callback) { } ``` -`truffle exec .\scripts\drawMyTokenFromTokenFarm.js`で、このスクリプトを実行できます。 以下の出力では、再度 My Token を取得できており、Farm Token がバーンされたことを確認できます。 +`truffle exec .\scripts\drawMyTokenFromTokenFarm.js`で、このスクリプトを実行できます。 以下の出力では、再度My Tokenを取得できており、Farm Tokenがバーンされたことを確認できます。 ![withdrawMyTokenFromTokenFarm.jsの出力](https://cdn-images-1.medium.com/max/2000/1*jHYlTFg0NgGbhASpsRvc0w.png) @@ -476,6 +476,6 @@ _withdrawMyTokenFromTokenFarm.js の出力_ [Ganache | Truffle Suite](https://www.trufflesuite.com/ganache) -[分散型金融(DeFi)とは 初心者向けガイド(2021 年更新版)(99bitcoins.com)](https://99bitcoins.com/what-is-defi/) +[分散型金融(DeFi)とは 初心者向けガイド(2021年更新版)(99bitcoins.com)](https://99bitcoins.com/what-is-defi/) -[DeFi - DeFi Llama の分散型金融リーダーボード](https://defillama.com/) +[DeFi - DeFi Llamaの分散型金融リーダーボード](https://defillama.com/) diff --git a/public/content/translations/ja/developers/tutorials/deploying-your-first-smart-contract/index.md b/public/content/translations/ja/developers/tutorials/deploying-your-first-smart-contract/index.md index 955806d011c..e059c68d8c6 100644 --- a/public/content/translations/ja/developers/tutorials/deploying-your-first-smart-contract/index.md +++ b/public/content/translations/ja/developers/tutorials/deploying-your-first-smart-contract/index.md @@ -21,7 +21,7 @@ address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE" ## コントラクトの記述 {#writing-our-contract} -まずはじめに、[Remix](https://remix.ethereum.org/)にアクセスし、新規ファイルを作成してください。 Remix 画面の左上にあるアイコンから新規ファイルを追加し、適当なファイル名を付けてください。 +まずはじめに、[Remix](https://remix.ethereum.org/)にアクセスし、新規ファイルを作成してください。 Remix画面の左上にあるアイコンから新規ファイルを追加し、適当なファイル名を付けてください。 ![Remixインターフェースに新規ファイルを追加する](./remix.png) @@ -51,12 +51,12 @@ contract Counter { プログラミングの経験があれば、このプログラムの内容はすぐに推測できるでしょう。 以下は、各行ごとの説明です。 -- 4 行目: `Counter`という名前のコントラクトを定義します。 -- 7 行目:このコントラクトでは、`count`という名称を持つ、符号なしの 0 から始まる整数を保存します。 -- 10 行目:最初の関数は、コントラクトの状態(ステート)を変更し、変数`の値`を`1増やします`。 -- 15 行目:次の関数は、このスマートコントラクトに含まれない`count`変数の値を読み取るためのゲッターです。 ただし、このプログラムでは`count`変数を public で定義しているため、実際にはこの関数は必要ありません。例として挙げている点に注意してください。 +- 4行目: `Counter`という名前のコントラクトを定義します。 +- 7行目:このコントラクトでは、`count`という名称を持つ、符号なしの0から始まる整数を保存します。 +- 10行目:最初の関数は、コントラクトの状態(ステート)を変更し、変数`の値`を`1増やします`。 +- 15行目:次の関数は、このスマートコントラクトに含まれない`count`変数の値を読み取るためのゲッターです。 ただし、このプログラムでは`count`変数をpublicで定義しているため、実際にはこの関数は必要ありません。例として挙げている点に注意してください。 -皆さんがはじめて作成するシンプルなスマートコントラクトは、これですべてです。 ご覧のように、Java や C++のようなオブジェクト指向のプログラミング言語のクラスに似ていますね。 それではさっそく、このコントラクトを使ってみましょう。 +皆さんがはじめて作成するシンプルなスマートコントラクトは、これですべてです。 ご覧のように、JavaやC++のようなオブジェクト指向のプログラミング言語のクラスに似ていますね。 それではさっそく、このコントラクトを使ってみましょう。 ## コントラクトをデプロイする {#deploying-our-contract} @@ -82,17 +82,17 @@ contract Counter { ![Remix solidityコンパイラ上の「deploy」ボタン](./remix-deploy-button.png) -「Deploy」ボタンをクリックすると、画面下部に作成したコントラクトが表示されます。 画面左側にある矢印をクリックすると、コントラクトの内容が表示されます。 これが、このコントラクトにおける`counter`変数、`increment()`関数、およびゲッター`getCounter()`です。 +「Deploy」ボタンをクリックすると、画面下部に作成したコントラクトが表示されます。 画面左側にある矢印をクリックすると、コントラクトの内容が表示されます。 これが、このコントラクトにおける`counter`変数、`increment()`関数、およびゲッターです。 `count`もしくは`getCount`ボタンをクリックすると、このコントラクトの`count`変数の内容を取得して表示します。 この時点では`increment` 関数を呼び出していないので、「0」が表示されます。 ![Remix solidityコンパイラ上の「function」ボタン](./remix-function-button.png) -次に、 `increment`ボタンをクリックして、increment 関数を呼び出しましょう。 ご覧のように、実行したトランザクションのログは、ウィンドウの下部に表示されます。 `increment`ボタンではなくデータ取得のボタンをクリックした場合、ログが変化することが分かると思います。 これは、ブロックチェーン上のデータを読み込む際には、トランザクション(書き込み)や手数料が必要ないためです。 つまり、トランザクションが必要となるのは、ブロックチェーンの状態を変更する場合のみです。 +次に、 `increment`ボタンをクリックして、increment関数を呼び出しましょう。 ご覧のように、実行したトランザクションのログは、ウィンドウの下部に表示されます。 `increment`ボタンではなくデータ取得のボタンをクリックした場合、ログが変化することが分かると思います。 これは、ブロックチェーン上のデータを読み込む際には、トランザクション(書き込み)や手数料が必要ないためです。 つまり、トランザクションが必要となるのは、ブロックチェーンの状態を変更する場合のみです。 ![トランザクションログ](./transaction-log.png) -`increment()`機能を呼び出すトランザクションを作成する「increment」ボタンをクリックしてから「count」または「getCount」ボタンを再度クリックすると、count 変数が「0」以上である更新後の状態のスマートコントラクトが読み込まれます。 +`increment()`機能を呼び出すトランザクションを作成する「increment」ボタンをクリックしてから「count」または「getCount」ボタンを再度クリックすると、count変数が「0」以上である更新後の状態のスマートコントラクトが読み込まれます。 ![更新後のスマートコントラクトの状態](./updated-state.png) diff --git a/public/content/translations/ja/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md b/public/content/translations/ja/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md index a9a4a97b6fb..d0182de4825 100644 --- a/public/content/translations/ja/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md +++ b/public/content/translations/ja/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md @@ -18,7 +18,7 @@ sourceUrl: https://soliditydeveloper.com/max-contract-size [2016年11月22日](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/)、Spurious Dragonのハードフォークで[EIP-170](https://eips.ethereum.org/EIPS/eip-170)が導入され、24.576 KBのスマートコントラクトのサイズ制限が追加されました。 Solidityデベロッパーにとって、これはコントラクトに機能をどんどん追加していくうちに、ある時点でサイズ制限に達し、デプロイした際に以下のエラーが表示されてしまうということを意味します。 -`Warning: Contract code size exceeds 24576 bytes ( Spurious Dragonで追加された制限). This contract may not be deployable on Mainnet. オプティマイザを有効にすることを検討してください (効率的に実行されます!)、文字列の取り消しをオフにするか、ライブラリを使用します。` +`Warning: Contract code size exceeds 24576 bytes (a limit introduced in Spurious Dragon). This contract may not be deployable on Mainnet. Consider enabling the optimizer (with a low "runs" value!), turning off revert strings, or using libraries.` この制限は、サービス拒否(DOS)攻撃を防ぐために導入されました。 コントラクトの呼び出しは、ガスの観点では比較的安価です。 しかし、イーサリアムノードのコントラクト呼び出しの影響は、(ディスクからのコードの読み込み、コードの前処理、マークルプルーフへのデータの追加の対象となる)呼び出されたコントラクトコードのサイズによっては、過度に増加することになります。 攻撃者がリソースをほとんど必要とせずに、他のノードでの大量の処理を生じさせるそうした状況では、DOS攻撃を受ける可能性が常に存在します。 diff --git a/public/content/translations/ja/developers/tutorials/eip-1271-smart-contract-signatures/index.md b/public/content/translations/ja/developers/tutorials/eip-1271-smart-contract-signatures/index.md index 7508fadf1c0..67b04a27616 100644 --- a/public/content/translations/ja/developers/tutorials/eip-1271-smart-contract-signatures/index.md +++ b/public/content/translations/ja/developers/tutorials/eip-1271-smart-contract-signatures/index.md @@ -8,7 +8,7 @@ tags: - "スマートコントラクト" - "検証" - "署名(signing)" -skill: advanced +skill: 中級 published: 2023-01-12 --- diff --git a/public/content/translations/ja/developers/tutorials/erc-721-vyper-annotated-code/index.md b/public/content/translations/ja/developers/tutorials/erc-721-vyper-annotated-code/index.md index d06bfdcbae6..f302f1e0429 100644 --- a/public/content/translations/ja/developers/tutorials/erc-721-vyper-annotated-code/index.md +++ b/public/content/translations/ja/developers/tutorials/erc-721-vyper-annotated-code/index.md @@ -7,7 +7,7 @@ tags: - "Vyper" - "ERC-721" - "Python" -skill: beginner +skill: 初級 published: 2021-04-01 --- diff --git a/public/content/translations/ja/developers/tutorials/erc20-annotated-code/index.md b/public/content/translations/ja/developers/tutorials/erc20-annotated-code/index.md index 398d7294895..8ed9f4c77d2 100644 --- a/public/content/translations/ja/developers/tutorials/erc20-annotated-code/index.md +++ b/public/content/translations/ja/developers/tutorials/erc20-annotated-code/index.md @@ -6,7 +6,7 @@ lang: ja tags: - "Solidity" - "erc-20" -skill: beginner +skill: 初級 published: 2021-03-09 --- @@ -46,7 +46,7 @@ Solidity言語は現在も急速に進化しており、新しいバージョン ```solidity /** - * EIP で定義された ERC20 規格の @dev インターフェース。 + * @dev Interface of the ERC20 standard as defined in the EIP. */ ``` diff --git a/public/content/translations/ja/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md b/public/content/translations/ja/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md index 119b5ca92b0..6b751fcd015 100644 --- a/public/content/translations/ja/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md +++ b/public/content/translations/ja/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md @@ -75,7 +75,7 @@ _**注意:** [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-mainnet.a **すでにクライアントをインストール済みの場合は、** 現在のノードプロバイダーのURLを、APIキーを含むAlchemyのURL( `"https://eth-mainnet.alchemyapi.io/v2/your-api-key"`など)に変更します。 -**_注意:_** 以下のスクリプトは、 コマンドラインで実行するのではなく、**ノードコンテキスト**または**ファイルに保存した形で**実行する必要があります。 Nodeまたはnpmがインストールされていない場合は、[Mac用設定ガイド](https://app.gitbook.com/@alchemyapi/s/alchemy/guides/alchemy-for-macs) をご覧ください。 +**_注意:_** 以下のスクリプトは、 コマンドラインで実行するのではなく、**ノードコンテキスト**または**ファイルに保存した形で**実行する必要があります。 Nodeまたはnpmがインストールされていない場合は、Mac用設定ガイド [](https://app.gitbook.com/@alchemyapi/s/alchemy/guides/alchemy-for-macs) をご覧ください。 Alchemyと統合可能な[Web3ライブラリ](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries)は無数に存在しますが、このチュートリアルでは、Alchemyとシームレスに動作するように構築・設定されたweb3.jsの完全互換版である[Alchemy Web3](https://docs.alchemy.com/reference/api-overview)をお勧めします。 Alchemy Web3は、自動リトライや WebScoket に対する充実したサポートなどの利点を持っています。 diff --git a/public/content/translations/ja/developers/tutorials/guide-to-smart-contract-security-tools/index.md b/public/content/translations/ja/developers/tutorials/guide-to-smart-contract-security-tools/index.md index c24270cffca..66b00ecc96b 100644 --- a/public/content/translations/ja/developers/tutorials/guide-to-smart-contract-security-tools/index.md +++ b/public/content/translations/ja/developers/tutorials/guide-to-smart-contract-security-tools/index.md @@ -7,7 +7,7 @@ tags: - "Solidity" - "スマートコントラクト" - "セキュリティ" -skill: intermediate +skill: 中級 published: 2020-09-07 source: セキュアなコントラクトの開発 sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis diff --git a/public/content/translations/ja/developers/tutorials/hello-world-smart-contract-fullstack/index.md b/public/content/translations/ja/developers/tutorials/hello-world-smart-contract-fullstack/index.md index 3be7dc73466..1d5bc962ef9 100644 --- a/public/content/translations/ja/developers/tutorials/hello-world-smart-contract-fullstack/index.md +++ b/public/content/translations/ja/developers/tutorials/hello-world-smart-contract-fullstack/index.md @@ -462,7 +462,7 @@ Provider、Signer、Contractの詳細については、[ethers.jsドキュメン `initMessage = "Hello world!"`を使用してコントラクトをデプロイしたことを思い出せますでしょうか? ここでは、スマートコントラクトに保存されているメッセージを読み取り、コンソールに出力します。 -JavaScriptでは、ネットワークとのやり取りで非同期関数を使います。 非同期関数の詳細については、[この記事の中ほど](https://blog.bitsrc.io/Understanding-asynchronous-javascript-the-event-loop-74cd408419ff)をご覧ください。 +JavaScriptでは、ネットワークとのやり取りで非同期関数を使います。 非同期関数の詳細については、[この記事の中ほど](https://blog.bitsrc.io/ Understanding-asynchronous-javascript-the-event-loop-74cd408419ff)をご覧ください。 以下のコードを使用して、スマートコントラクトの`message`関数を呼び出し、initメッセージを読み取ります。 diff --git a/public/content/translations/ja/developers/tutorials/hello-world-smart-contract/index.md b/public/content/translations/ja/developers/tutorials/hello-world-smart-contract/index.md index f9e9836d280..9ea7d2fbeec 100644 --- a/public/content/translations/ja/developers/tutorials/hello-world-smart-contract/index.md +++ b/public/content/translations/ja/developers/tutorials/hello-world-smart-contract/index.md @@ -4,7 +4,7 @@ description: イーサリアムでの簡単なスマートコントラクトの author: "elanh" tags: - "Solidity" - - "hardhat" + - "Hardhat" - "alchemy" - "スマートコントラクト" - "デプロイ" diff --git a/public/content/translations/ja/developers/tutorials/how-to-implement-an-erc721-market/index.md b/public/content/translations/ja/developers/tutorials/how-to-implement-an-erc721-market/index.md index 253dd2ee141..18cac862b60 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-implement-an-erc721-market/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-implement-an-erc721-market/index.md @@ -7,16 +7,16 @@ tags: - "erc-721" - "Solidity" - "トークン" -skill: intermediate +skill: 中級 lang: ja published: 2020-03-19 source: Hackernoon sourceUrl: https://hackernoon.com/how-to-implement-an-erc721-market-1e1a32j9 --- -この記事では、イーサリアムのブロックチェーン用に、Craigslist のコードを作成する方法を紹介します。 +この記事では、イーサリアムのブロックチェーン用に、Craigslistのコードを作成する方法を紹介します。 -Gumtree、Ebay、Craigslist といったインターネット掲示板が登場する以前は、コルク板や紙媒体がその役割を担っていました。 このような掲示板は、学校の廊下、新聞、道端、店頭などに置かれていました。 +Gumtree、Ebay、Craigslistといったインターネット掲示板が登場する以前は、コルク板や紙媒体がその役割を担っていました。 このような掲示板は、学校の廊下、新聞、道端、店頭などに置かれていました。 しかし、インターネットの登場でこれが一変しました。 ひとつの掲示板を見る人の数が、桁違いに増えました。 それに伴い、掲示板の対象となる市場の効率性が非常に高まり、グローバルな規模に発展したのです。 Ebay は今や巨大な規模のビジネスに発展しましたが、元はと言えば実物の掲示板に起源をたどることができるのです。 @@ -24,11 +24,11 @@ Gumtree、Ebay、Craigslist といったインターネット掲示板が登場 ## マネタイゼーション(収益化) {#monetization} -パブリックブロックチェーンにおける掲示板のビジネスモデルは、Ebay などの企業のビジネスモデルとは異なります。 +パブリックブロックチェーンにおける掲示板のビジネスモデルは、Ebayなどの企業のビジネスモデルとは異なります。 まず第一に、 [脱中心化](/developers/docs/web2-vs-web3/)されている点を指摘すべきでしょう。 既存の掲示板プラットフォームは、自社サーバーを運用する必要があります。 しかし、分散型プラットフォームの運営はユーザーが実行するため、プラットフォーム所有者はコア・プラットフォームを稼働させるコストを負担する必要がありません。 -次に、プラットフォームにアクセスする機能を提供するウェブサイトまたはインターフェイスといったフロントエンドがあります。 フロントエンドには、いくつかのオプションがあります。 プラットフォーム所有者は、ユーザーのアクセス権限を制限し、インターフェイスを有料で使わせることができます。 一方で、プラットフォーム所有者がアクセス権限を開放し(人々に力を!)、ユーザーが自由にインターフェイスを開発できるようにすることもできます。 あるいは、これら 2 つの極端なアプローチの中間を選択することもできます。 +次に、プラットフォームにアクセスする機能を提供するウェブサイトまたはインターフェイスといったフロントエンドがあります。 フロントエンドには、いくつかのオプションがあります。 プラットフォーム所有者は、ユーザーのアクセス権限を制限し、インターフェイスを有料で使わせることができます。 一方で、プラットフォーム所有者がアクセス権限を開放し(人々に力を!)、ユーザーが自由にインターフェイスを開発できるようにすることもできます。 あるいは、これら2つの極端なアプローチの中間を選択することもできます。 _私よりもビジネス感覚に優れている方は、これをどのように収益化すべきかについてよくご存じでしょう。 分散型のクラシファイドについて私が言えるのは、既存の掲示板プラットフォームとは異なっており、おそらく収益化が可能だということです。_ @@ -57,19 +57,19 @@ struct Trade { 広告を投稿するユーザーは、 販売するアイテム、 アイテムの価格、 このアイテムに関する取引ステータス(受付中、販売済み、取消)を設定するだけです。 -すべての取引は、マッピングで保持されます。 と言うのも、Solidity ではほぼすべての要素をマッピングで規定するからです。 マッピングを使用するのが便利だからとも言えます。 +すべての取引は、マッピングで保持されます。 と言うのも、Solidityではほぼすべての要素をマッピングで規定するからです。 マッピングを使用するのが便利だからとも言えます。 ```solidity mapping(uint256 => Trade) public trades; ``` -マッピングを使用するとは、広告を投稿する前に広告ごとに ID を設定し、広告に対する操作を行うには広告 ID を知る必要があることを意味します。 スマートコントラクトあるいはフロントエンド上でマッピングの操作を行うには、いくつかの方法があります。 ヒントが必要であれば、気軽に問い合わせてください。 +マッピングを使用するとは、広告を投稿する前に広告ごとにIDを設定し、広告に対する操作を行うには広告IDを知る必要があることを意味します。 スマートコントラクトあるいはフロントエンド上でマッピングの操作を行うには、いくつかの方法があります。 ヒントが必要であれば、気軽に問い合わせてください。 次に、どのようなアイテムを扱う必要があり、取引の支払いにはどの通貨を使うかについて考える必要があります。 -取扱アイテムについては、[ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com)インターフェイスを実装すればよいです。このインターフェイスは、[デジタル資産と最も相性がよいのは事実ですが](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com)、現実に存在するアイテムをブロックチェーン上で表現するための手段に過ぎません。 この掲示板用の ERC-721 コントラクトはコンストラクタで指定するため、掲示板に含まれるアセットは前もってトークン化しておく必要があります。 +取扱アイテムについては、[ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com)インターフェイスを実装すればよいです。このインターフェイスは、[デジタル資産と最も相性がよいのは事実ですが](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com)、現実に存在するアイテムをブロックチェーン上で表現するための手段に過ぎません。 この掲示板用の ERC-721コントラクトはコンストラクタで指定するため、掲示板に含まれるアセットは前もってトークン化しておく必要があります。 -支払い機能についても、ほぼ同じです。 大部分のブロックチェーン・プロジェクトでは、独自の [ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol?ref=hackernoon.com)暗号通貨を定義しています。 DAI のように、著名な暗号通貨を採用する場合もあります。 このクラシファイド掲示板では、コンストラクタにおいて通貨を指定する必要があるだけです。 簡単ですね。 +支払い機能についても、ほぼ同じです。 大部分のブロックチェーン・プロジェクトでは、独自の [ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol?ref=hackernoon.com)暗号通貨を定義しています。 DAIのように、著名な暗号通貨を採用する場合もあります。 このクラシファイド掲示板では、コンストラクタにおいて通貨を指定する必要があるだけです。 簡単ですね。 ```solidity constructor ( diff --git a/public/content/translations/ja/developers/tutorials/how-to-mint-an-nft/index.md b/public/content/translations/ja/developers/tutorials/how-to-mint-an-nft/index.md index 21596e37a78..d1c9a062095 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-mint-an-nft/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-mint-an-nft/index.md @@ -175,7 +175,7 @@ PUBLIC_KEY = "your-public-account-address" async function mintNFT(tokenURI) { const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, 'latest'); //get latest nonce - // トランザクション + //the transaction const tx = { 'from': PUBLIC_KEY, 'to': contractAddress, @@ -208,7 +208,7 @@ const nftContract = new web3.eth.Contract(contract.abi, contractAddress) async function mintNFT(tokenURI) { const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") //get latest nonce - // トランザクション + //the transaction const tx = { from: PUBLIC_KEY, to: contractAddress, diff --git a/public/content/translations/ja/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/public/content/translations/ja/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md index 6c7785f0bd0..f0d80c70c92 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md @@ -8,7 +8,7 @@ tags: - "スマートコントラクト" - "テスト" - "モック" -skill: intermediate +skill: 中級 published: 2020-05-02 source: soliditydeveloper.com sourceUrl: https://soliditydeveloper.com/mocking-contracts diff --git a/public/content/translations/ja/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md b/public/content/translations/ja/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md index c77aa024dd1..3712930532a 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md @@ -9,7 +9,7 @@ tags: - "セキュリティ" - "テスト" - "ファジング" -skill: advanced +skill: 上級 published: 2020-04-10 source: セキュアなコントラクトの構築 sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna @@ -17,18 +17,18 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/progr ## インストール {#installation} -Echidna は、Docker またはコンパイル済みのバイナリを使用してインストールします。 +Echidnaは、Dockerまたはコンパイル済みのバイナリを使用してインストールします。 -### Docker から Echidna をインストールする {#echidna-through-docker} +### DockerからEchidnaをインストールする {#echidna-through-docker} ```bash docker pull trailofbits/eth-security-toolbox docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox ``` -_最後のコマンドは、現在のディレクトリにアクセスできる docker で eth-security-toolbox を実行します。 ホストからファイルを変更し、docker からファイル上のツールを実行できます。_ +_最後のコマンドは、現在のディレクトリにアクセスできるdockerでeth-security-toolboxを実行します。 ホストからファイルを変更し、dockerからファイル上のツールを実行できます。_ -docker で、以下を実行します: +dockerで、以下を実行します: ```bash solc-select 0.5.11 @@ -41,31 +41,31 @@ cd /home/training ## プロパティベースのファジングとは {#introduction-to-property-based-fuzzing} -Echidna は、プロパティベースのファザーです。これについては、以前のブログ投稿([1](https://blog.trailofbits.com/2018/03/09/echidna-a-smart-fuzzer-for-ethereum/)、[2](https://blog.trailofbits.com/2018/05/03/state-machine-testing-with-echidna/)、[3](https://blog.trailofbits.com/2020/03/30/an-echidna-for-all-seasons/))を参照してください。 +Echidnaは、プロパティベースのファザーです。これについては、以前のブログ投稿([1](https://blog.trailofbits.com/2018/03/09/echidna-a-smart-fuzzer-for-ethereum/)、[2](https://blog.trailofbits.com/2018/05/03/state-machine-testing-with-echidna/)、[3](https://blog.trailofbits.com/2020/03/30/an-echidna-for-all-seasons/))を参照してください。 ### ファジング {#fuzzing} -[ファジング ](https://wikipedia.org/wiki/Fuzzing)は、セキュリティコミュニティでよく知られているテクニックです。 ファジングでは、ある程度ランダムな入力を生成してプログラムのバグを発見します。 通常のソフトウェアを対象とするファザー([AFL](http://lcamtuf.coredump.cx/afl/)や[LibFuzzer](https://llvm.org/docs/LibFuzzer.html)など)は、効率的にバグを特定できるツールであると評価されています。 +[ファジング ](https://wikipedia.org/wiki/Fuzzing)は、セキュリティコミュニティでよく知られているテクニックです。 ファジングでは、プログラム内のバグを見つけるために、大小のランダムな入力を生成することを行います。 通常のソフトウェアを対象とするファザー([AFL](http://lcamtuf.coredump.cx/afl/)や[LibFuzzer](https://llvm.org/docs/LibFuzzer.html)など)は、効率的にバグを特定できるツールであると評価されています。 入力をまったくランダムに生成するだけでなく、適切な入力を生成するための多くのテクニックや戦略を活用できます: - 各実行から取得したフィードバックに基づき、入力を生成する。 例えば、新しく生成された入力値が新しいパスの発見を導いている場合、それに近い新しい入力値を生成することは理にかなっています。 - 構造上の制約を考慮した入力を生成する。 例えば、入力にチェックサム付のヘッダーが含まれている場合、ファザーにチェックサムを検証する入力を生成させることも有益です。 -- 既知の入力に基づいて新たな入力を生成する。大規模な有効な入力のデータセットにアクセスできる場合、まったくランダムに生成するのではなく、それらに基づいて新たな入力を生成することができます。 この場合、参照するデータを*シード*と呼びます。 +- 既知の入力に基づいて新たな入力を生成する。大規模な有効な入力のデータセットにアクセスできる場合、まったくランダムに生成するのではなく、それらに基づいて新たな入力を生成することができます。 この場合、参照するデータを_シード_と呼びます。 ### プロパティベースのファジング {#property-based-fuzzing} -Echidna は、プロパティに基づくファジングを実行するファザーであり、[QuickCheck](https://wikipedia.org/wiki/QuickCheck)の影響を強く受けたプログラムです。 クラッシュを監視する従来のファザーとは異なり、Echidna では、ユーザー定義の不変条件を壊そうとします。 +Echidnaは、プロパティに基づくファジングを実行するファザーであり、[QuickCheck](https://wikipedia.org/wiki/QuickCheck)の影響を強く受けたプログラムです。 クラッシュを監視する従来のファザーとは異なり、Echidnaでは、ユーザー定義の不変条件を壊そうとします。 -スマートコントラクトにおける不変条件とは、コントラクトにおいて不適切または無効な状態が発生しうる Solidity の関数を意味します。具体的には、以下が挙げられます: +スマートコントラクトにおける不変条件とは、コントラクトにおいて不適切または無効な状態が発生しうるSolidityの関数を意味します。具体的には、以下が挙げられます: - 不適切なアクセス制御:攻撃者がコントラクトの所有者になる場合。 - 不適切な状態マシン:コントラクトの一次停止中に、トークンを送信できる。 - 不適切な計算: ユーザーは残高をアンダーフローし無制限に無料トークンを取得できる。 -### Echidna を使って、プロパティをテストする {#testing-a-property-with-echidna} +### Echidnaを使って、プロパティをテストする {#testing-a-property-with-echidna} -それでは、Echidna を使ってスマートコントラクトをテストする方法を見てみましょう。 対象は、[ `token.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol)のスマートコントラクトです。 +それでは、Echidnaを使ってスマートコントラクトをテストする方法を見てみましょう。 対象は、[ `token.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/token.sol)のスマートコントラクトです。 ```solidity contract Token{ @@ -85,24 +85,24 @@ contract Token{ このトークンは、以下のプロパティを持つと想定します: -- ユーザーは、最大 1000 トークンを所持できる -- このトークン(ERC-20 トークンではない)は、送信不可である +- ユーザーは、最大1000トークンを所持できる +- このトークン(ERC-20トークンではない)は、送信不可である ### プロパティを記述する {#write-a-property} -Echidna のプロパティは、Solidity の関数です。 プロパティは、以下の条件を満たす必要があります: +Echidnaのプロパティは、Solidityの関数です。 プロパティは、以下の条件を満たす必要があります: - 引数を持たない - 実行に成功した場合、 `true` を返す - `echidna`で始まる名前を持つ -Echidna は、以下を実行します: +Echidnaは、以下を実行します: - このプロパティをテストするためのランダムなトランザクションを自動で生成する。 - プロパティが `false`またはエラーを返すすべてのトランザクションを報告する。 - プロパティの呼び出しに伴う副作用を無視する(つまり、プロパティが状態変数を変更した場合、テスト後にこの変更を破棄する) -以下のプロパティは、呼び出し元のユーザーが所持するトークンが 1000 以下であることを確認します。 +以下のプロパティは、呼び出し元のユーザーが所持するトークンが1000以下であることを確認します。 ```solidity function echidna_balance_under_1000() public view returns(bool){ @@ -124,32 +124,32 @@ contract TestToken is Token{ ### コントラクトを開始する {#initiate-a-contract} -Echidna では、引数なしの[コンストラクタ](/developers/docs/smart-contracts/anatomy/#constructor-functions)が必要です。 コントラクトにおいて特定の初期化が必要な場合、コンストラクタ上で実行する必要があります。 +Echidnaでは、引数なしの[コンストラクタ](/developers/docs/smart-contracts/anatomy/#constructor-functions)が必要です。 コントラクトにおいて特定の初期化が必要な場合、コンストラクタ上で実行する必要があります。 -Echidna には、いくつかの特定のアドレスが含まれます: +Echidnaには、いくつかの特定のアドレスが含まれます: - `0x00a329c0648769A73afAc7F9381E08FB43dBEA72`:コンストラクタを呼び出すアドレスです。 - `0x10000`、`0x20000`、`0x00a329C0648769a73afAC7F9381e08fb43DBEA70`:他の関数をランダムに呼び出すアドレスです。 このチュートリアルでは特定の初期化を実行する必要がないため、コンストラクタは空になります。 -### Echidna を実行する {#run-echidna} +### Echidnaを実行する {#run-echidna} -以下のコードで、Echidna を起動します: +以下のコードで、Echidnaを起動します: ```bash -$ echidna-test contract.sol +echidna-test contract.sol ``` -contract.sol に複数のコントラクトが含まれる場合、実行したいコントラクトを指定できます: +contract.solに複数のコントラクトが含まれる場合、実行したいコントラクトを指定できます: ```bash -$ echidna-test contract.sol --contract MyContract +echidna-test contract.sol --contract MyContract ``` ### プロパティテストのまとめ {#summary-testing-a-property} -以下は、このチュートリアルにおける Echidna の実行をまとめたものです。 +以下は、このチュートリアルにおけるEchidnaの実行をまとめたものです。 ```solidity contract TestToken is Token{ @@ -161,7 +161,7 @@ contract TestToken is Token{ ``` ```bash -$ echidna-test testtoken.sol --contract TestToken +echidna-test testtoken.sol --contract TestToken ... echidna_balance_under_1000: failed!💥 @@ -172,7 +172,7 @@ echidna_balance_under_1000: failed!💥 ... ``` -Echidna は、 `backdoor`が呼び出された場合、このプロパティが侵害されることを確認しました。 +Echidnaは、 `backdoor`が呼び出された場合、このプロパティが侵害されることを確認しました。 ## ファジング中に呼び出す関数を絞り込む {#filtering-functions-to-call-during-a-fuzzing-campaign} @@ -227,10 +227,10 @@ contract C { } ``` -この簡単な例は、状態変数を変更する特定のトランザクションのシーケンスを Echidna に見つけさせるものです。 これは、ファザーにとって容易ではありません([Manticore](https://github.com/trailofbits/manticore)のようなシンボリック実行ツールを使用することをお勧めします)。 Echidna で、以下のように検証を実行します: +この簡単な例は、状態変数を変更する特定のトランザクションのシーケンスをEchidnaに見つけさせるものです。 これは、ファザーにとって容易ではありません([Manticore](https://github.com/trailofbits/manticore)のようなシンボリック実行ツールを使用することをお勧めします)。 Echidnaで、以下のように検証を実行します: ```bash -$ echidna-test multi.sol +echidna-test multi.sol ... echidna_state4: passed! 🎉 Seed: -3684648582249875403 @@ -238,7 +238,7 @@ Seed: -3684648582249875403 ### 対象の関数を絞り込む {#filtering-functions} -2 つのリセット関数(`reset1`と`reset2`)がすべての状態変数を`false`に設定するため、Echidna はこのコントラクトをテストするための正しいシーケンスを見つけられません。 しかし Echidna では、リセット関数をブラックリストに含めるか、 `f`、`g`、 `h`、および `i`の関数のみをホワイトリストに含める特別の機能が利用できます。 +2つのリセット関数(`reset1`と`reset2`)がすべての状態変数を`false`に設定するため、Echidnaはこのコントラクトをテストするための正しいシーケンスを見つけられません。 しかしEchidnaでは、リセット関数をブラックリストに含めるか、 `f`、`g`、 `h`、および `i`の関数のみをホワイトリストに含める特別の機能が利用できます。 関数をブラックリストに登録するには、設定ファイルを以下のように指定します: @@ -257,12 +257,12 @@ filterFunctions: ["f", "g", "h", "i"] - `filterBlacklist`の初期値は`true`です。 - 絞り込みは、名前のみ(パラメータなし)で実行されます。 `f()`と`f(uint256)`の両方が含まれる場合、`"f"`で絞り込むと両方の関数がヒットします。 -### Echidna を実行する {#run-echidna-1} +### Echidnaを実行する {#run-echidna-1} -設定ファイル `blacklist.yaml` に従って Echidna を実行するには、以下のようにします: +設定ファイル `blacklist.yaml` に従ってEchidnaを実行するには、以下のようにします: ```bash -$ echidna-test multi.sol --config blacklist.yaml +echidna-test multi.sol --config blacklist.yaml ... echidna_state4: failed!💥 Call sequence: @@ -272,11 +272,11 @@ echidna_state4: failed!💥 i() ``` -Echidna は、プロパティを false にするトランザクションのシーケンスを瞬時に特定します。 +Echidnaは、プロパティをfalseにするトランザクションのシーケンスを瞬時に特定します。 ### 対象の関数を絞り込む作業のまとめ {#summary-filtering-functions} -Echidna では、ファジングで呼び出す機能を絞り込むために、ブラックリストあるいはホワイトリストの関数を使用します: +Echidnaでは、ファジングで呼び出す機能を絞り込むために、ブラックリストあるいはホワイトリストの関数を使用します: ```yaml filterBlacklist: true @@ -284,15 +284,15 @@ filterFunctions: ["f1", "f2", "f3"] ``` ```bash -$ echidna-test contract.sol --config config.yaml +echidna-test contract.sol --config config.yaml ... ``` -Echidna は、`filterBlacklist`のブール値に基づき、`f1`、`f2`、および `f3`の関数をブラックリストに含めるか、これらの関数のみを呼び出してファジングを実行します。 +Echidnaは、`filterBlacklist`のブール値に基づき、`f1`、`f2`、および `f3`の関数をブラックリストに含めるか、これらの関数のみを呼び出してファジングを実行します。 -## Echidna で Solidity のアサーションをテストする方法 {#how-to-test-soliditys-assert-with-echidna} +## EchidnaでSolidityのアサーションをテストする方法 {#how-to-test-soliditys-assert-with-echidna} -次の短いチュートリアルでは、Echidna を使って、コントラクトに含まれるアサーションをテストします。 以下のようなコントラクトを想定します: +次の短いチュートリアルでは、Echidnaを使って、コントラクトに含まれるアサーションをテストします。 以下のようなコントラクトを想定します: ```solidity contract Incrementor { @@ -309,7 +309,7 @@ contract Incrementor { ### アサーションを記述する {#write-an-assertion} -引き算を実行した後に、`tmp`の値が`counter`の値以下であることを確認したいとします。 Echidna のプロパティで記述することもできますが、`tmp`値をどこかに格納する必要があります。 これには、以下のようなアサーションを用いることができます: +引き算を実行した後に、`tmp`の値が`counter`の値以下であることを確認したいとします。 Echidnaのプロパティで記述することもできますが、`tmp`値をどこかに格納する必要があります。 これには、以下のようなアサーションを用いることができます: ```solidity contract Incrementor { @@ -324,18 +324,18 @@ contract Incrementor { } ``` -### Echidna を実行する {#run-echidna-2} +### Echidnaを実行する {#run-echidna-2} -アサーションの失敗をテストできるようにするには、[Echidna の設定ファイル](https://github.com/crytic/echidna/wiki/Config)として `config.yaml` を作成します: +アサーションの失敗をテストできるようにするには、[Echidnaの設定ファイル](https://github.com/crytic/echidna/wiki/Config)として `config.yaml` を作成します: ```yaml checkAsserts: true ``` -このコントラクトを Echidna で実行すると、次のような期待通りの結果が得られます: +このコントラクトをEchidnaで実行すると、次のような期待通りの結果が得られます: ```bash -$ echidna-test assert.sol --config config.yaml +echidna-test assert.sol --config config.yaml Analyzing contract: assert.sol:Incrementor assertion in inc: failed!💥 Call sequence, shrinking (2596/5000): @@ -346,7 +346,7 @@ assertion in inc: failed!💥 Seed: 1806480648350826486 ``` -このように、Echidna では、アサーション違反の一部を`inc`関数で報告します。 1 つの関数に対し複数のアサーションを含めることは可能ですが、どのアサーションが失敗したのか区別できなくなります。 +このように、Echidnaでは、アサーション違反の一部を`inc`関数で報告します。 1つの関数に対し複数のアサーションを含めることは可能ですが、どのアサーションが失敗したのか区別できなくなります。 ### アサーションをいつ、どのように使用すべきか {#when-and-how-use-assertions} @@ -362,7 +362,7 @@ function f(..) public { ``` -反対に、Echidna のプロパティを明示的に使用する場合、トランザクションがランダムに実行されるため、チェックをどの時点で強制的に実行させるかを決定しにくくなります。 この場合、以下のような回避策を用いることもできます: +反対に、Echidnaのプロパティを明示的に使用する場合、トランザクションがランダムに実行されるため、チェックをどの時点で強制的に実行させるかを決定しにくくなります。 この場合、以下のような回避策を用いることもできます: ```solidity function echidna_assert_after_f() public returns (bool) { @@ -377,16 +377,16 @@ function echidna_assert_after_f() public returns (bool) { - どの引数を使って`f`を呼び出すべきかが不明確である。 - `f`が元に戻された場合、このプロパティは違反になる。 -全般的なアサーションの使用については、この[John Regehr の提案](https://blog.regehr.org/archives/1091)に従うことを推奨します: +全般的なアサーションの使用については、この[John Regehrの提案](https://blog.regehr.org/archives/1091)に従うことを推奨します: - アサーションチェック中には、副作用を強制しない。 例:`assert(ChangeStateAndReturn() == 1)` - 明らかなステートメントは、アサートしない。 例:`var`を`uint`と宣言している場合、`assert(var >= 0)`は必要ない。 -最後に、`assert`の代わりに`require`を用いるのは**避けてください**。Echidna では require を検出できません。(ただしこの場合でも、コントラクトは元に戻されます)。 +最後に、`assert`の代わりに`require`を用いるのは**避けてください**。Echidnaではrequireを検出できません。(ただしこの場合でも、コントラクトは元に戻されます)。 ### アサーションチェックのまとめ {#summary-assertion-checking} -以下は、この例における Echidna の実行をまとめたものです: +以下は、この例におけるEchidnaの実行をまとめたものです: ```solidity contract Incrementor { @@ -402,7 +402,7 @@ contract Incrementor { ``` ```bash -$ echidna-test assert.sol --config config.yaml +echidna-test assert.sol --config config.yaml Analyzing contract: assert.sol:Incrementor assertion in inc: failed!💥 Call sequence, shrinking (2596/5000): @@ -413,11 +413,11 @@ assertion in inc: failed!💥 Seed: 1806480648350826486 ``` -Echidna は、`inc`のアサーションにつき、この関数が大きな引数で複数回呼び出された場合に違反となりうることを発見しました。 +Echidnaは、`inc`のアサーションにつき、この関数が大きな引数で複数回呼び出された場合に違反となりうることを発見しました。 -## Echidna コーパスを収集、修正する {#collecting-and-modifying-an-echidna-corpus} +## Echidnaコーパスを収集、修正する {#collecting-and-modifying-an-echidna-corpus} -次に、Echidna を使ってトランザクションのコーパスを収集し、これを利用する方法について見ていきましょう。 対象は、[`magic.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/magic.sol)のスマートコントラクトです。 +次に、Echidnaを使ってトランザクションのコーパスを収集し、これを利用する方法について見ていきましょう。 対象は、[`magic.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/example/magic.sol)のスマートコントラクトです。 ```solidity contract C { @@ -437,10 +437,10 @@ contract C { } ``` -以下の短いコードは、状態変数を変更する特定の値を Echidna に発見させます。 これは、ファザーにとって容易ではありません([Manticore](https://github.com/trailofbits/manticore)のようなシンボリック実行ツールを使用することをお勧めします)。 Echidna で、以下のように検証を実行します: +以下の短いコードは、状態変数を変更する特定の値をEchidnaに発見させます。 これは、ファザーにとって容易ではありません([Manticore](https://github.com/trailofbits/manticore)のようなシンボリック実行ツールを使用することをお勧めします)。 Echidnaで、以下のように検証を実行します: ```bash -$ echidna-test magic.sol +echidna-test magic.sol ... echidna_magic_values: passed! 🎉 @@ -448,17 +448,17 @@ echidna_magic_values: passed! 🎉 Seed: 2221503356319272685 ``` -ただし Echidna では、ファジングの実行中もコーパスを収集することができます。 +ただしEchidnaでは、ファジングの実行中もコーパスを収集することができます。 ### コーパスを収集する {#collecting-a-corpus} コーパスを収集するには、まずコーパスのディレクトリを作成します: ```bash -$ mkdir corpus-magic +mkdir corpus-magic ``` -さらに、[Echidna の設定ファイル](https://github.com/crytic/echidna/wiki/Config)である `config.yaml` を作成します: +さらに、[Echidnaの設定ファイル](https://github.com/crytic/echidna/wiki/Config)である `config.yaml` を作成します: ```yaml coverage: true @@ -468,10 +468,10 @@ corpusDir: "corpus-magic" これで、ツールを実行しながら収集したコーパスをチェックできるようになりました: ```bash -$ echidna-test magic.sol --config config.yaml +echidna-test magic.sol --config config.yaml ``` -この段階では Echidna はまだ適切な magic 値を特定できませんが、収集したコーパスを確認することはできます。 例えば、以下のようなファイルが収集されました: +この段階ではEchidnaはまだ適切なmagic値を特定できませんが、収集したコーパスを確認することはできます。 例えば、以下のようなファイルが収集されました: ```json [ @@ -520,16 +520,16 @@ $ echidna-test magic.sol --config config.yaml ### コーパスをシードする {#seeding-a-corpus} -Echidna を`magic`関数に対応するように設定する必要があります。 この入力が適切なパラメータを使用できるように、コピーし、変更します。 +Echidnaを`magic`関数に対応するように設定する必要があります。 この入力が適切なパラメータを使用できるように、コピーし、変更します。 ```bash -$ cp corpus/2712688662897926208.txt corpus/new.txt +cp corpus/2712688662897926208.txt corpus/new.txt ``` -`magic(42,129,333,0)`を呼び出せるように`new.txt`を変更します。 その上で、Echidna を再実行します: +`magic(42,129,333,0)`を呼び出せるように`new.txt`を変更します。 その上で、Echidnaを再実行します: ```bash -$ echidna-test magic.sol --config config.yaml +echidna-test magic.sol --config config.yaml ... echidna_magic_values: failed!💥 Call sequence: @@ -546,7 +546,7 @@ Seed: -7293830866560616537 ## ガス消費量が多いトンラザクションを見つける {#finding-transactions-with-high-gas-consumption} -ガス消費量が多いトランザクションを特定するために、Echidna を使用する方法について見ていきましょう。 対象は、次のスマートコントラクトです: +ガス消費量が多いトランザクションを特定するために、Echidnaを使用する方法について見ていきましょう。 対象は、次のスマートコントラクトです: ```solidity contract C { @@ -573,10 +573,10 @@ contract C { ここでは、`expensive`でガス消費量が高くなる可能性があります。 -この時点では、Echidna 上で常にテストすべきプロパティを設定する必要があり、`echidna_test`は常に`true`を返します。 Echidna を実行して、これを確認します: +この時点では、Echidna上で常にテストすべきプロパティを設定する必要があり、`echidna_test`は常に`true`を返します。 Echidnaを実行して、これを確認します: ``` -$ echidna-test gas.sol +echidna-test gas.sol ... echidna_test: passed! 🎉 @@ -585,7 +585,7 @@ Seed: 2320549945714142710 ### ガス消費量を測定する {#measuring-gas-consumption} -Ethidna でガスの消費量を確認できるようにするには、 `config.yaml`を以下のように設定します: +Ethidnaでガスの消費量を確認できるようにするには、 `config.yaml`を以下のように設定します: ```yaml estimateGas: true @@ -598,12 +598,12 @@ seqLen: 2 estimateGas: true ``` -### Echidna を実行する {#run-echidna-3} +### Echidnaを実行する {#run-echidna-3} -設定が完了したら、次のように Echidna を実行します: +設定が完了したら、次のようにEchidnaを実行します: ```bash -$ echidna-test gas.sol --config config.yaml +echidna-test gas.sol --config config.yaml ... echidna_test: passed! 🎉 @@ -648,10 +648,10 @@ contract C { } ``` -Echidna がすべての関数を呼び出せる場合、ガス代が高いトランザクションを見つけることは困難になるでしょう。 +Echidnaがすべての関数を呼び出せる場合、ガス代が高いトランザクションを見つけることは困難になるでしょう。 ``` -$ echidna-test pushpop.sol --config config.yaml +echidna-test pushpop.sol --config config.yaml ... pop used a maximum of 10746 gas ... @@ -670,7 +670,7 @@ filterFunctions: ["pop", "clear"] ``` ``` -$ echidna-test pushpop.sol --config config.yaml +echidna-test pushpop.sol --config config.yaml ... push used a maximum of 40839 gas ... @@ -679,15 +679,15 @@ check used a maximum of 1484472 gas ### ガス消費量が高いトランザクションを見つける作業のまとめ {#summary-finding-transactions-with-high-gas-consumption} -Echidna では、`estimateGas`の設定オプションを使用してガス消費量の多いトランザクションを特定することができます: +Echidnaでは、`estimateGas`の設定オプションを使用してガス消費量の多いトランザクションを特定することができます: ```yaml estimateGas: true ``` ```bash -$ echidna-test contract.sol --config config.yaml +echidna-test contract.sol --config config.yaml ... ``` -Echidna は、ファジングを実行した後、各関数ごとにガス消費量が最大となるシーケンスを報告します。 +Echidnaは、ファジングを実行した後、各関数ごとにガス消費量が最大となるシーケンスを報告します。 diff --git a/public/content/translations/ja/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/public/content/translations/ja/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md index 103c7ab896e..41a17d872c5 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md @@ -9,45 +9,45 @@ tags: - "セキュリティ" - "テスト" - "フォーマルな検証" -skill: advanced +skill: 上級 published: 2020-01-13 source: セキュアなコントラクトの構築 sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore --- -このチュートリアルでは、Manticore を使用してスマートコントラクトのバグを自動で特定する方法を学びます。 +このチュートリアルでは、Manticoreを使用してスマートコントラクトのバグを自動で特定する方法を学びます。 ## インストール {#installation} -Manticore を使用するには、Python 3.6 が必要です。 pip でインストールすることも、Docker を使用してインストールすることもできます。 +Manticoreを使用するには、Python 3.6 が必要です。 pipでインストールすることも、Dockerを使用してインストールすることもできます。 -### Docker で Manticore をインストールする場合 {#manticore-through-docker} +### DockerでManticoreをインストールする場合 {#manticore-through-docker} ```bash docker pull trailofbits/eth-security-toolbox docker run -it -v "$PWD":/home/training trailofbits/eth-security-toolbox ``` -_最後のコマンドは、現在のディレクトリにアクセスできる docker で eth-security-toolbox を実行します。 ホストからファイルを変更し、docker からファイル上のツールを実行することができます。_ +_最後のコマンドは、現在のディレクトリにアクセスできるdockerでeth-security-toolboxを実行します。 ホストからファイルを変更し、dockerからファイル上のツールを実行することができます。_ -Docker で、以下を実行します: +Dockerで、以下を実行します: ```bash solc-select 0.5.11 cd /home/trufflecon/ ``` -### pip で Manticore をインストールする場合 {#manticore-through-pip} +### pipでManticoreをインストールする場合 {#manticore-through-pip} ```bash pip3 install --user manticore ``` -solc 0.5.11 を推奨します。 +solc 0.5.11を推奨します。 ### スクリプトを実行する {#running-a-script} -Python 3 では、以下の Python スクリプトを実行します: +Python 3では、以下のPythonスクリプトを実行します: ```bash python3 script.py @@ -57,7 +57,7 @@ python3 script.py ### 動的シンボリック実行とは何か {#dynamic-symbolic-execution-in-a-nutshell} -動的シンボリック実行(DSE)は、高度な意味認識に基づき状態空間を探索するプログラム解析手法です。 この手法は、`path predicates`と呼ばれる数式で表される「プログラム・パス」を発見するものです。 概念的には、この手法は 2 つのステップによりパス述語を操作します: +動的シンボリック実行(DSE)は、高度な意味認識に基づき状態空間を探索するプログラム解析手法です。 この手法は、`path predicates`と呼ばれる数式で表される「プログラム・パス」を発見するものです。 概念的には、この手法は2つのステップによりパス述語を操作します: 1. プログラムの入力に対する制約を参照して、プログラム・パスを構築します。 2. プログラム・パスは、関連パスを実行させるプログラムの入力を生成します。 @@ -66,7 +66,7 @@ python3 script.py ### パス述語の具体例 {#path-predicate-example} -DSE の仕組みを理解するために、以下の例を考えてみましょう。 +DSEの仕組みを理解するために、以下の例を考えてみましょう。 ```solidity function f(uint a){ @@ -78,16 +78,16 @@ function f(uint a){ } ``` -`f()`には 2 つのパスが含まれているため、DSE により、2 つの異なるパス述語が構築されます。 +`f()`には2つのパスが含まれているため、DSEにより、2つの異なるパス述語が構築されます。 -- 第 1 のパス: `a == 65` -- 第 2 のパス: `Not (a == 65)` +- 第1のパス: `a == 65` +- 第2のパス: `Not (a == 65)` -それぞれのパス述語は、いわゆる[SMT ソルバー](https://wikipedia.org/wiki/Satisfiability_modulo_theories)に投入できる数式であり、SMT ソルバーはこの等式を解決しようとします。 `第1のパス`では、ソルバーは、このパスが`a = 65`で探索可能だと返します。 `第2のパス`では、ソルバーは、`a`に対し、65 以外の任意の値を与えることができます(例: `a = 0`)。 +それぞれのパス述語は、いわゆる[SMTソルバー](https://wikipedia.org/wiki/Satisfiability_modulo_theories)に投入できる数式であり、SMTソルバーはこの等式を解決しようとします。 `第1のパス`では、ソルバーは、このパスが`a = 65`で探索可能だと返します。 `第2のパス`では、ソルバーは、`a`に対し、65以外の任意の値を与えることができます(例: `a = 0`)。 ### プロパティを検証する {#verifying-properties} -Manticore では、各パスの実行全体を完全に制御できます。 このため、ほぼすべての事項に対して任意の制限を加えることができます。 この制御を通じて、コントラクトのプロパティを作成することができます。 +Manticoreでは、各パスの実行全体を完全に制御できます。 このため、ほぼすべての事項に対して任意の制限を加えることができます。 この制御を通じて、コントラクトのプロパティを作成することができます。 次の例を考えてみましょう: @@ -98,11 +98,11 @@ function unsafe_add(uint a, uint b) returns(uint c){ } ``` -この関数を探索するには、1 つのパスしか存在しません。 +この関数を探索するには、1つのパスしか存在しません。 -- パス 1: `c = a + b` +- パス1: `c = a + b` -Manticore を使用することで、オーバーフローの有無を確認し、パス述語に制限を加えられます。 +Manticoreを使用することで、オーバーフローの有無を確認し、パス述語に制限を加えられます。 - `c = a + b AND (c < a OR c < b)` @@ -125,11 +125,11 @@ function safe_add(uint a, uint b) returns(uint c){ この数式は解くことができません。言い換えれば、`safe_add`において、`c`の値が常に増加することを**証明**しています。 -このように、DSE はコード上の任意の制限について検証できるパワフルなツールです。 +このように、DSEはコード上の任意の制限について検証できるパワフルなツールです。 -## Manticore で実行する {#running-under-manticore} +## Manticoreで実行する {#running-under-manticore} -以下に、Manticore API を用いて、スマートコントラクトを探索する方法を紹介します。 対象となるスマートコントラクトは、[`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol)です。 +以下に、Manticore APIを用いて、スマートコントラクトを探索する方法を紹介します。 対象となるスマートコントラクトは、[`example.sol`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example.sol)です。 ```solidity pragma solidity >=0.4.24 <0.6.0; @@ -145,7 +145,7 @@ contract Simple { ### スタンドアロンの探索を実行する {#run-a-standalone-exploration} -以下のコマンドから、スマートコントラクト上で直接 Manticore を実行できます(`project`は、Solidity ファイルでもプロジェクトディレクトリでも構いません)。 +以下のコマンドから、スマートコントラクト上で直接Manticoreを実行できます(`project`は、Solidityファイルでもプロジェクトディレクトリでも構いません)。 ```bash $ manticore project @@ -166,35 +166,35 @@ $ manticore project ... ``` -Manticore は、追加情報が提供されない限り、新規のシンボリック・トランザクションを使って、コントラクト上で新規パスが発見されるまでコントラクトを探索します。 Manticore では、トランザクションが失敗した場合(例:状態が元に戻された後)は、新規のトランザクションを実行しません。 +Manticoreは、追加情報が提供されない限り、新規のシンボリック・トランザクションを使って、コントラクト上で新規パスが発見されるまでコントラクトを探索します。 Manticoreでは、トランザクションが失敗した場合(例:状態が元に戻された後)は、新規のトランザクションを実行しません。 -Manticore では、 `mcore_*`ディレクトリに情報を出力します。 このディレクトリには、以下が含まれます: +Manticoreでは、 `mcore_*`ディレクトリに情報を出力します。 このディレクトリには、以下が含まれます: - `global.summary`:カバレッジとコンパイラに関する警告 - `test_XXXXX.summary`:テストケースごとのカバレッジ、最後の命令、およびアカウント残高 - `test_XXXXX.tx`:テストケースごとの詳細なトランザクションリスト -この例では、以下に該当する 7 つのテストケースが特定されました(ファイル名の順番は異なるかもしれません): +この例では、以下に該当する7つのテストケースが特定されました(ファイル名の順番は異なるかもしれません): -| | トランザクション 0 | トランザクション 1 | トランザクション 2 | 結果 | -| :------------------: | :----------------: | :----------------: | ------------------ | :----: | -| **test_00000000.tx** | コントラクトの作成 | f(!=65) | f(!=65) | STOP | -| **test_00000001.tx** | コントラクトの作成 | フォールバック関数 | | REVERT | -| **test_00000002.tx** | コントラクトの作成 | | | RETURN | -| **test_00000003.tx** | コントラクトの作成 | f(65) | | REVERT | -| **test_00000004.tx** | コントラクトの作成 | f(!=65) | | STOP | -| **test_00000005.tx** | コントラクトの作成 | f(!=65) | f(65) | REVERT | -| **test_00000006.tx** | コントラクトの作成 | f(!=65) | フォールバック関数 | REVERT | +| | トランザクション 0 | トランザクション 1 | トランザクション 2 | 結果 | +|:--------------------:|:----------:|:----------:| ---------- |:------:| +| **test_00000000.tx** | コントラクトの作成 | f(!=65) | f(!=65) | STOP | +| **test_00000001.tx** | コントラクトの作成 | フォールバック関数 | | REVERT | +| **test_00000002.tx** | コントラクトの作成 | | | RETURN | +| **test_00000003.tx** | コントラクトの作成 | f(65) | | REVERT | +| **test_00000004.tx** | コントラクトの作成 | f(!=65) | | STOP | +| **test_00000005.tx** | コントラクトの作成 | f(!=65) | f(65) | REVERT | +| **test_00000006.tx** | コントラクトの作成 | f(!=65) | フォールバック関数 | REVERT | _探索サマリーにおける「f(!=65)」は、f が 65 以外の値で呼び出されたことを意味します。_ -ご覧のように、Manticore では、すべての成功した/元に戻されたトランザクションにつき、固有のテストケースを生成します。 +ご覧のように、Manticoreでは、すべての成功した/元に戻されたトランザクションにつき、固有のテストケースを生成します。 高速な探索を行いたい場合は、`--quick-mode`フラグを使用してください(バグ検出、ガス代計算等が省略されます)。 -### Manticore API を使ってスマートコントラクトを操作する {#manipulate-a-smart-contract-through-the-api} +### Manticore APIを使ってスマートコントラクトを操作する {#manipulate-a-smart-contract-through-the-api} -このセクションでは、Manticore Python API を使ってスマートコントラクトを操作する方法について詳しく説明します。 Python の拡張子である`*.py`を持つ新規ファイルを作成し、API コマンド(基本知識については以下で説明します)をファイルに追加して必要なコードを書いてから、`$ python3 *.py`コマンドで実行します。 また、Python のコンソールから直接コマンドを実行することもできます。コンソールを起動する際のコマンドは、`$ python3`です。 +このセクションでは、Manticore Python APIを使ってスマートコントラクトを操作する方法について詳しく説明します。 Pythonの拡張子である`*.py`を持つ新規ファイルを作成し、APIコマンド(基本知識については以下で説明します)をファイルに追加して必要なコードを書いてから、`$ python3 *.py`コマンドで実行します。 また、Pythonのコンソールから直接コマンドを実行することもできます。コンソールを起動する際のコマンドは、`$ python3`です。 ### アカウントを作成する {#creating-accounts} @@ -212,7 +212,7 @@ m = ManticoreEVM() user_account = m.create_account(balance=1000) ``` -Solidity で作成したコントラクトについては、[m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract)でデプロイします。 +Solidityで作成したコントラクトについては、[m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract)でデプロイします。 ```solidity source_code = ''' @@ -235,10 +235,10 @@ contract_account = m.solidity_create_contract(source_code, owner=user_account) ### トランザクションを実行する {#executing-transactions} -Manticore は、2 種類のトランザクションに対応しています: +Manticoreは、2種類のトランザクションに対応しています: - 生トランザクション:すべての関数を探索します。 -- 名前付きトランザクション:1 つの関数だけを探索します。 +- 名前付きトランザクション:1つの関数だけを探索します。 #### 生トランザクション {#raw-transaction} @@ -267,18 +267,18 @@ m.transaction(caller=user_account, value=symbolic_value) ``` -データがシンボリック値の場合、Manticore は、トランザクションの実行時にコントラクトに含まれるすべての関数を探索します。 関数がどのように選択されるかを理解するには、[Hands on the Ethernaut CTF](https://blog.trailofbits.com/2017/11/06/hands-on-the-ethernaut-ctf/)の記事におけるフォールバック関数についての説明を参照してください。 +データがシンボリック値の場合、Manticoreは、トランザクションの実行時にコントラクトに含まれるすべての関数を探索します。 関数がどのように選択されるかを理解するには、[Hands on the Ethernaut CTF](https://blog.trailofbits.com/2017/11/06/hands-on-the-ethernaut-ctf/)の記事におけるフォールバック関数についての説明を参照してください。 #### 名前付きトランザクション {#named-transaction} -関数は、名前から実行できます。 `f(uint var)`につき、シンボリック値を用いて、user_account から、0 ether で実行する場合、以下を使用します: +関数は、名前から実行できます。 `f(uint var)`につき、シンボリック値を用いて、user_accountから、0 etherで実行する場合、以下を使用します: ```python symbolic_var = m.make_symbolic_value() contract_account.f(symbolic_var, caller=user_account, value=0) ``` -トランザクションの`value`を指定しない場合、デフォルトでは 0 になります。 +トランザクションの`value`を指定しない場合、デフォルトでは0になります。 #### まとめ {#summary-1} @@ -296,9 +296,9 @@ print("Results are in {}".format(m.workspace)) ### 探索を終了する {#terminate-the-exploration} -探索を停止するには、[m.finalize()](https://manticore.readthedocs.io/en/latest/evm.html?highlight=finalize#manticore.ethereum.ManticoreEVM.finalize)を使用します。 このメソッドが呼び出された時点で、さらにトランザクションは送信されなくなり、Manticore は探索済みの各パスにつきテストケースを生成します。 +探索を停止するには、[m.finalize()](https://manticore.readthedocs.io/en/latest/evm.html?highlight=finalize#manticore.ethereum.ManticoreEVM.finalize)を使用します。 このメソッドが呼び出された時点で、さらにトランザクションは送信されなくなり、Manticoreは探索済みの各パスにつきテストケースを生成します。 -### Manticore を使った実行のまとめ {#summary-running-under-manticore} +### Manticoreを使った実行のまとめ {#summary-running-under-manticore} 上記のステップをまとめると、以下のようになります: @@ -339,10 +339,10 @@ contract Simple { ### 状態情報を使用する {#using-state-information} -実行された各パスには、それぞれのブロックチェーンの状態が含まれています。 状態は、ready または killed のどちらかです。killed は、THROW または REVERT に達したことを意味します。 +実行された各パスには、それぞれのブロックチェーンの状態が含まれています。 状態は、readyまたはkilledのどちらかです。killedは、THROWまたはREVERTに達したことを意味します。 -- [m.ready_states](https://manticore.readthedocs.io/en/latest/states.html#accessing):ready に該当する状態のリスト(REVERT/INVALID を実行しなかった状態) -- [m.killed_states](https://manticore.readthedocs.io/en/latest/states.html#accessings):killed に該当する状態のリスト +- [m.ready_states](https://manticore.readthedocs.io/en/latest/states.html#accessing):readyに該当する状態のリスト(REVERT/INVALIDを実行しなかった状態) +- [m.killed_states](https://manticore.readthedocs.io/en/latest/states.html#accessings):killedに該当する状態のリスト - [m.all_states](https://manticore.readthedocs.io/en/latest/states.html#accessings):すべての状態 ```python @@ -356,7 +356,7 @@ for state in m.all_states: - `state.platform.transactions`:トランザクションのリスト - `state.platform.transactions[-1].return_data`:最後のトランザクションで返されたデータ -最後のトランザクションによって返されるデータは配列ですが、以下のように ABI.deserialize で値に変換できます: +最後のトランザクションによって返されるデータは配列ですが、以下のようにABI.deserializeで値に変換できます: ```python data = state.platform.transactions[0].return_data @@ -373,7 +373,7 @@ m.generate_testcase(state, 'BugFound') ### まとめ {#summary-2} -- 状態は、m.all_states でイテレートできる +- 状態は、m.all_statesでイテレートできる - `state.platform.get_balance(account.address)`は、アカウント残高を返す - `state.platform.transactions`は、トランザクションのリストを返す - `transaction.return_data`は、返されたデータを示す @@ -405,7 +405,7 @@ for state in m.terminated_states: 紹介したすべてのコードは、[`example_run.py`](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/manticore/examples/example_run.py)でアクセスできます。 -_terminated_state が返したすべての状態は結果の値が REVERT または INVALID であるため、上記よりも簡略なスクリプトを作成することもできました。上記のスクリプト例は、Manticore API の操作方法を説明することを目的としたものです。_ +_terminated_stateが返したすべての状態は結果の値がREVERTまたはINVALIDであるため、上記よりも簡略なスクリプトを作成することもできました。上記のスクリプト例は、Manticore APIの操作方法を説明することを目的としたものです。_ ## 制約を追加する {#adding-constraints} @@ -439,7 +439,7 @@ contract Simple { from manticore.core.smtlib import Operators ``` -`Operators.CONCAT`は、配列に値を連結するために使用します。 例えば、トランザクションの return_data は、他の値に対して検証可能な値に変更する必要があります: +`Operators.CONCAT`は、配列に値を連結するために使用します。 例えば、トランザクションのreturn_dataは、他の値に対して検証可能な値に変更する必要があります: ```python last_return = Operators.CONCAT(256, *last_return) @@ -468,7 +468,7 @@ m.transaction(caller=user_account, ### 制約を確認する {#checking-constraint} -制約が実行可能かどうかを確認するには、`solver.check(state.constraints)`を使用します。 例えば以下では、symbolic_value が「65」以外の値でなければならないという制約を追加した上で、状態が実行可能かどうかをチェックします。 +制約が実行可能かどうかを確認するには、`solver.check(state.constraints)`を使用します。 例えば以下では、symbolic_valueが「65」以外の値でなければならないという制約を追加した上で、状態が実行可能かどうかをチェックします。 ```python state.constrain(symbolic_var != 65) diff --git a/public/content/translations/ja/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md b/public/content/translations/ja/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md index b16bf09c05b..e3192cecfea 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md @@ -9,41 +9,41 @@ tags: - "セキュリティ" - "テスト" - "静的解析" -skill: advanced +skill: 上級 published: 2020-06-09 source: セキュアなコントラクトの構築 sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/slither --- -## Slither の使い方 {#how-to-use-slither} +## Slitherの使い方 {#how-to-use-slither} -このチュートリアルでは、Slither を使って、スマートコントラクトのバグを自動で検出する方法を学びます。 +このチュートリアルでは、Slitherを使って、スマートコントラクトのバグを自動で検出する方法を学びます。 - [インストール](#installation) - [コマンドラインの使い方](#command-line) - [静的解析入門](#static-analysis):静的解析の簡単な紹介 -- [API](#api-basics):Python API の説明 +- [API](#api-basics):Python APIの説明 ## インストール {#installation} -Slither には、Python 3.6 以上が必要です。 pip でインストールすることも、Docker を使用してインストールすることもできます。 +Slitherには、Python 3.6以上が必要です。 pipでインストールすることも、Dockerを使用してインストールすることもできます。 -pip による Slither のインストール +pipによるSlitherのインストール ```bash pip3 install --user slither-analyzer ``` -Docker による Slither のインストール: +DockerによるSlitherのインストール: ```bash docker pull trailofbits/eth-security-toolbox docker run -it -v "$PWD":/home/trufflecon trailofbits/eth-security-toolbox ``` -_最後のコマンドは、現在のディレクトリにアクセスできる Docker で eth-security-toolbox を実行します。 ホストからファイルを変更し、Docker からファイル上のツールを実行することができます。_ +_最後のコマンドは、現在のディレクトリにアクセスできるDockerでeth-security-toolboxを実行します。 ホストからファイルを変更し、Dockerからファイル上のツールを実行することができます。_ -Docker 内で実行する: +Docker内で実行する: ```bash solc-select 0.5.11 @@ -52,7 +52,7 @@ cd /home/trufflecon/ ### スクリプトを実行する {#running-a-script} -Python3 で Python スクリプトを実行するには、以下を実行します: +Python3でPythonスクリプトを実行するには、以下を実行します: ```bash python3 script.py @@ -60,23 +60,23 @@ python3 script.py ### コマンドライン {#command-line} -**コマンドラインとユーザー定義スクリプトの比較**:Slither には、多くの一般的なバグを見つけるための事前定義された検出器のセットが付属しています。 コマンドラインで Slither を呼び出すとすべての検出器が実行されますので、静的解析の詳しい知識は必要ありません: +**コマンドラインとユーザー定義スクリプトの比較**:Slitherには、多くの一般的なバグを見つけるための事前定義された検出器のセットが付属しています。 コマンドラインでSlitherを呼び出すとすべての検出器が実行されますので、静的解析の詳しい知識は必要ありません: ```bash slither project_paths ``` -Slither では、検出器に加えて、[プリンター](https://github.com/crytic/slither#printers)と[ツール](https://github.com/crytic/slither#tools)によるコードレビュー機能も利用できます。 +Slitherでは、検出器に加えて、[プリンター](https://github.com/crytic/slither#printers)と[ツール](https://github.com/crytic/slither#tools)によるコードレビュー機能も利用できます。 -プライベート検出器および GitHub での統合にアクセスするには、[crytic.io](https://github.com/crytic)を使用します。 +プライベート検出器およびGitHubでの統合にアクセスするには、[crytic.io](https://github.com/crytic)を使用します。 ## 静的解析 {#static-analysis} -Slither 静的解析フレームワークの機能と設計は、ブログ投稿 ([1](https://blog.trailofbits.com/2018/10/19/slither-a-solidity-static-analysis-framework/)、[2](https://blog.trailofbits.com/2019/05/27/slither-the-leading-static-analyzer-for-smart-contracts/)) と[学術論文](https://github.com/trailofbits/publications/blob/master/papers/wetseb19.pdf)で説明されています。 +Slither静的解析フレームワークの機能と設計は、ブログ投稿 ([1](https://blog.trailofbits.com/2018/10/19/slither-a-solidity-static-analysis-framework/)、[2](https://blog.trailofbits.com/2019/05/27/slither-the-leading-static-analyzer-for-smart-contracts/)) と[学術論文](https://github.com/trailofbits/publications/blob/master/papers/wetseb19.pdf)で説明されています。 静的解析には、さまざまな種類があります。 静的解析の技法は、[clang](https://clang-analyzer.llvm.org/)や[gcc](https://lwn.net/Articles/806099/)といったコンパイラで採用されているだけでなく、[Infer](https://fbinfer.com/)、[CodeClimate](https://codeclimate.com/)、および[FindBugs](http://findbugs.sourceforge.net/)、ならびに[Frama-C](https://frama-c.com/)や[Polyspace](https://www.mathworks.com/products/polyspace.html)といったフォーマルなメソッドに基づくツールの基盤でもあります。 -ここでは、静的解析の手法や研究者について網羅的に取り上げる余裕はありません。 その代わりに、皆さんがバグを特定し、コードを理解する上で効果的に静的解析の手法を利用できるように、Slither の仕組みを理解する上で必要な事項のみに焦点を当てます。 +ここでは、静的解析の手法や研究者について網羅的に取り上げる余裕はありません。 その代わりに、皆さんがバグを特定し、コードを理解する上で効果的に静的解析の手法を利用できるように、Slitherの仕組みを理解する上で必要な事項のみに焦点を当てます。 - [コード表現](#code-representation) - [コード解析](#analysis) @@ -84,13 +84,13 @@ Slither 静的解析フレームワークの機能と設計は、ブログ投稿 ### コード表現 {#code-representation} -単一の実行パスについて推論する動的解析とは対照的に、静的解析では一度にすべてのパスを対象として推論します。 これには、別のコード表現が必要です。 最も一般的なコード表現は、抽象構文木(AST)および制御フローグラフ(CFG)の 2 つです。 +単一の実行パスについて推論する動的解析とは対照的に、静的解析では一度にすべてのパスを対象として推論します。 これには、別のコード表現が必要です。 最も一般的なコード表現は、抽象構文木(AST)および制御フローグラフ(CFG)の2つです。 ### 抽象構文木(AST) {#abstract-syntax-trees-ast} -AST は、コンパイラがコードを解析するたびに用いられます。 おそらく、静的解析を実行できる最も基本的な構造だと言えるでしょう。 +ASTは、コンパイラがコードを解析するたびに用いられます。 おそらく、静的解析を実行できる最も基本的な構造だと言えるでしょう。 -一言で言えば、AST は構造化されたツリーであり、通常、各リーフに変数または定数が含まれ、内部ノードはオペランドまたは制御フロー操作です。 次のコードを検討してみましょう: +一言で言えば、ASTは構造化されたツリーであり、通常、各リーフに変数または定数が含まれ、内部ノードはオペランドまたは制御フロー操作です。 次のコードを検討してみましょう: ```solidity function safeAdd(uint a, uint b) pure internal returns(uint){ @@ -101,13 +101,13 @@ function safeAdd(uint a, uint b) pure internal returns(uint){ } ``` -対応する AST は、次のとおりです: +対応するASTは、次のとおりです: ![AST](./ast.png) -Slither では、solc がエクスポートした AST を使用します。 +Slitherでは、solcがエクスポートしたASTを使用します。 -AST は簡単に構築できますが、入れ子構造を持ちます。 このため、解析が簡単でない場合があります。 例えば、`a + b <= a`の式で使用される操作を識別するには、まず`<=`を解析し、次に`+`を解析する必要があります。 一般的なアプローチは、ツリーを再帰的に移動するいわゆる Visitor パターンを使用することです。 Slither には、[`ExpressionVisitor`](https://github.com/crytic/slither/blob/master/slither/visitors/expression/expression.py)という汎用的な Visitor が含まれています。 +ASTは簡単に構築できますが、入れ子構造を持ちます。 このため、解析が簡単でない場合があります。 例えば、`a + b <= a`の式で使用される操作を識別するには、まず`<=`を解析し、次に`+`を解析する必要があります。 一般的なアプローチは、ツリーを再帰的に移動するいわゆるVisitorパターンを使用することです。 Slitherには、[`ExpressionVisitor`](https://github.com/crytic/slither/blob/master/slither/visitors/expression/expression.py)という汎用的なVisitorが含まれています。 次のコードは、`ExpressionVisitor`を使用して式に加算が含まれているかどうかを検出します: @@ -130,27 +130,27 @@ print(f'The expression {expression} has a addition: {visitor.result()}') ### 制御フローグラフ(CFG) {#control-flow-graph-cfg} -2 番目によく用いられるコード表現は、制御フローグラフ(CFG)です。 名前が示すように、すべての実行パスを可視化するグラフベースの表現です。 各ノードには、1 つまたは複数の命令が含まれます。 グラフのエッジ部分は、制御フロー操作(if/then/else、ループなど)を表します。 先ほどの例を CFG で表すと、次のようになります: +2番目によく用いられるコード表現は、制御フローグラフ(CFG)です。 名前が示すように、すべての実行パスを可視化するグラフベースの表現です。 各ノードには、1つまたは複数の命令が含まれます。 グラフのエッジ部分は、制御フロー操作(if/then/else、ループなど)を表します。 先ほどの例をCFGで表すと、次のようになります: ![CFG](./cfg.png) -CFG は、大部分の解析の土台となる表現です。 +CFGは、大部分の解析の土台となる表現です。 他にも、様々なコード表現が存在します。 それぞれの表現には、実行したい解析に応じて長所と短所があります。 ### 解析 {#analysis} -Slither で実行できる最もシンプルな解析タイプは、構文解析です。 +Slitherで実行できる最もシンプルな解析タイプは、構文解析です。 ### 構文解析 {#syntax-analysis} -Slither は、コードおよび表現に含まれるさまざまな構成要素を移動しながら、パターンマッチングに類似したアプローチで矛盾や欠陥を発見します。 +Slitherは、コードおよび表現に含まれるさまざまな構成要素を移動しながら、パターンマッチングに類似したアプローチで矛盾や欠陥を発見します。 例えば、以下の検出器は構文関連の問題を探します: - [状態変数のシャドーイング](https://github.com/crytic/slither/wiki/Detector-Documentation#state-variable-shadowing):すべての状態変数でイテレートし、継承されたコントラクトから変数がシャドーされているかを確認します([state.py#L51-L62](https://github.com/crytic/slither/blob/0441338e055ab7151b30ca69258561a5a793f8ba/slither/detectors/shadowing/state.py#L51-L62))。 -- [不適切な ERC-20 インターフェース](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface):不適切な ERC-20 関数の署名を探します([incorrect_erc20_interface.py#L34-L55](https://github.com/crytic/slither/blob/0441338e055ab7151b30ca69258561a5a793f8ba/slither/detectors/erc/incorrect_erc20_interface.py#L34-L55))。 +- [不適切なERC-20インターフェース](https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-erc20-interface):不適切なERC-20関数の署名を探します([incorrect_erc20_interface.py#L34-L55](https://github.com/crytic/slither/blob/0441338e055ab7151b30ca69258561a5a793f8ba/slither/detectors/erc/incorrect_erc20_interface.py#L34-L55))。 ### 意味解析 {#semantic-analysis} @@ -169,13 +169,13 @@ Slither は、コードおよび表現に含まれるさまざまな構成要素 variable_a = variable_b + 1; ``` -Slither では、中間表現(以下を参照)を利用して、[データの依存関係](https://github.com/crytic/slither/wiki/data-dependency)を解析する機能が搭載されています。 +Slitherでは、中間表現(以下を参照)を利用して、[データの依存関係](https://github.com/crytic/slither/wiki/data-dependency)を解析する機能が搭載されています。 -データ依存関係を解析する具体例としては、[危険をもたらす厳密な等値の検出器](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities)を参照してください。 ここで、Slither は、ある危険な値に対する厳密な等値比較を発見しようと試みます([incorrect_strict_equality.py#L86-L87](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L86-L87))。その上で、攻撃者がコントラクトをトラップできる状態を防止するために、`==`ではなく、`>=`または`<=`を使用するようにユーザーに警告します。 検出器はまず、`balanceOf(address)`の呼び出しにおける戻り値を危険な値だと見なし([incorrect_strict_equality.py#L63-L64](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L63-L64))、データ依存関係エンジンを使用してその使用状況を追跡します。 +データ依存関係を解析する具体例としては、[危険をもたらす厳密な等値の検出器](https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities)を参照してください。 ここで、Slitherは、ある危険な値に対する厳密な等値比較を発見しようと試みます([incorrect_strict_equality.py#L86-L87](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L86-L87))。その上で、攻撃者がコントラクトをトラップできる状態を防止するために、`==`ではなく、`>=`または`<=`を使用するようにユーザーに警告します。 検出器はまず、`balanceOf(address)`の呼び出しにおける戻り値を危険な値だと見なし([incorrect_strict_equality.py#L63-L64](https://github.com/crytic/slither/blob/6d86220a53603476f9567c3358524ea4db07fb25/slither/detectors/statements/incorrect_strict_equality.py#L63-L64))、データ依存関係エンジンを使用してその使用状況を追跡します。 #### 不動点の計算 {#fixed-point-computation} -解析がエッジを辿って CFG 全体を移動する場合、すでに訪問済みのノードを発見する可能性が高いでしょう。 例えば、以下のようなループがある場合です: +解析がエッジを辿ってCFG全体を移動する場合、すでに訪問済みのノードを発見する可能性が高いでしょう。 例えば、以下のようなループがある場合です: ```solidity for(uint i; i < range; ++){ @@ -183,21 +183,21 @@ for(uint i; i < range; ++){ } ``` -この場合、解析をいつ停止するかを指定する必要があります。 それには、(1)ノードごとにイテレートする上限回数を設定するか、(2)いわゆる*不動点*を計算する、という 2 つの戦略があります。 不動点とは、当該ノードをさらに解析しても有益な情報が得られない点を意味します。 +この場合、解析をいつ停止するかを指定する必要があります。 それには、(1)ノードごとにイテレートする上限回数を設定するか、(2)いわゆる_不動点_を計算する、という2つの戦略があります。 不動点とは、当該ノードをさらに解析しても有益な情報が得られない点を意味します。 -不動点を使用する実例としては、リエントランシー検出器が挙げられます。Slither では、当該のノードを探索し、外部からの呼び出しを見つけて、ストレージへの書き込み/読み取りを行います。 この処理を通じて不動点に到達すると([reentrancy.py#L125-L131](https://github.com/crytic/slither/blob/master/slither/detectors/reentrancy/reentrancy.py#L125-L131))、探索を停止し、様々なリエントランシーのパターン([reentrancy_beign.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_benign.py))、([reentrancy_read_before_write.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_read_before_write.py))、([reentrancy_eth.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_eth.py))に基づき、結果を解析してリエントランシーが存在するか否かを判定します。 +不動点を使用する実例としては、リエントランシー検出器が挙げられます。Slitherでは、当該のノードを探索し、外部からの呼び出しを見つけて、ストレージへの書き込み/読み取りを行います。 この処理を通じて不動点に到達すると([reentrancy.py#L125-L131](https://github.com/crytic/slither/blob/master/slither/detectors/reentrancy/reentrancy.py#L125-L131))、探索を停止し、様々なリエントランシーのパターン([reentrancy_beign.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_benign.py))、([reentrancy_read_before_write.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_read_before_write.py))、([reentrancy_eth.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_eth.py))に基づき、結果を解析してリエントランシーが存在するか否かを判定します。 効率的な不動点計算を用いた解析を作成するには、解析において情報がどのように拡散するかをよく理解しておく必要があります。 ### 中間表現 {#intermediate-representation} -中間表現(IR)は、オリジナルのコードよりも静的解析を実行しやすくした言語です。 Slither では、Solidity を Slither 独自の IR である[SlithIR](https://github.com/crytic/slither/wiki/SlithIR)に変換します。 +中間表現(IR)は、オリジナルのコードよりも静的解析を実行しやすくした言語です。 Slitherでは、SolidityをSlither独自のIRである[SlithIR](https://github.com/crytic/slither/wiki/SlithIR)に変換します。 -基本的なチェックを作成したいだけの場合は、SlithIR を理解する必要はありません。 ただし、より高度な意味解析を作成したい場合は、SlithIR の知識が有益になるでしょう。 [SlithIR](https://github.com/crytic/slither/wiki/Printer-documentation#slithir)および[SSA](https://github.com/crytic/slither/wiki/Printer-documentation#slithir-ssa)のプリンターは、コードがどのように変換されるかを理解する上で役立ちます。 +基本的なチェックを作成したいだけの場合は、SlithIRを理解する必要はありません。 ただし、より高度な意味解析を作成したい場合は、SlithIRの知識が有益になるでしょう。 [SlithIR](https://github.com/crytic/slither/wiki/Printer-documentation#slithir)および[SSA](https://github.com/crytic/slither/wiki/Printer-documentation#slithir-ssa)のプリンターは、コードがどのように変換されるかを理解する上で役立ちます。 -## API の基本 {#api-basics} +## APIの基本 {#api-basics} -Slither には、コントラクトの基本的な属性や関数について探索できる API が含まれています。 +Slitherには、コントラクトの基本的な属性や関数について探索できるAPIが含まれています。 コードベースを読み込むには、以下を実行します: @@ -230,7 +230,7 @@ slither = Slither('/path/to/project') - `name (str)`:関数の名前 - `contract (contract)`:この関数を宣言したコントラクト -- `nodes (list(Node))`:この関数/修飾子の CFG を攻勢するノードのリスト +- `nodes (list(Node))`:この関数/修飾子のCFGを攻勢するノードのリスト - `entry_point (Node)`: CFG (制御フローグラフ) のエントリポイント - `variables_read (list(Variable))`: 読み込まれた変数のリスト - `variables_written (list(Variable))`: 書き込まれた変数のリスト diff --git a/public/content/translations/ja/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md b/public/content/translations/ja/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md index e6ec742349e..669c5b39b70 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md @@ -7,7 +7,7 @@ tags: - "Solidity" - "スマートコントラクト" - "オラクル" -skill: beginner +skill: 初級 published: 2021-06-29 source: Tellor Docs sourceUrl: https://docs.tellor.io/tellor/ @@ -22,24 +22,24 @@ sourceUrl: https://docs.tellor.io/tellor/ 前提条件: - ターミナルを操作できる -- npm がインストール済みである -- npm を使って、依存関係を管理できる +- npmがインストール済みである +- npmを使って、依存関係を管理できる -Tellor は、実装可能かつ開発継続中のオープンソースのオラクルです。 この初心者向けガイドは、Tellor がいかに簡単に導入、稼働できるかを説明するもので、完全に分散化され、検閲耐性を持つオラクルをプロジェクトに追加する方法を学びます。 +Tellorは、実装可能かつ開発継続中のオープンソースのオラクルです。 この初心者向けガイドは、Tellor がいかに簡単に導入、稼働できるかを説明するもので、完全に分散化され、検閲耐性を持つオラクルをプロジェクトに追加する方法を学びます。 ## 概要 {#overview} -Tellor は、オフチェーンのデータポイントの値(例:BTC/USD)を請求できるオラクルシステムです。報告者は、イーサリアムの全スマートコントラクトがアクセスできるオンチェーンのデータバンクに対してこの値を追加するために競います。 このデータバンクへの入力は、ステーキング済みの報告者で構成されるネットワークにより保護されています。 Tellor は、暗号資産経済におけるインセンティブの仕組みを活用し、Tellor のトークン、トリビュート(TRB)、および紛争メカニズムに基づき、正直なデータを提出した報告者に報酬を与え、悪意のユーザーを処罰します。 +Tellorは、オフチェーンのデータポイントの値(例:BTC/USD)を請求できるオラクルシステムです。報告者は、イーサリアムの全スマートコントラクトがアクセスできるオンチェーンのデータバンクに対してこの値を追加するために競います。 このデータバンクへの入力は、ステーキング済みの報告者で構成されるネットワークにより保護されています。 Tellorは、暗号資産経済におけるインセンティブの仕組みを活用し、Tellorのトークン、トリビュート(TRB)、および紛争メカニズムに基づき、正直なデータを提出した報告者に報酬を与え、悪意のユーザーを処罰します。 このチュートリアルでは、以下について説明します: - 導入および稼働に必要な初回ツールキットの設定方法 - 簡単な実例に基づくステップごとの説明 -- 現在 Tellor をテストできるネットワークのアドレスリスト +- 現在Tellorをテストできるネットワークのアドレスリスト -## Tellor を使うには {#usingtellor} +## Tellorを使うには {#usingtellor} -まず、Tellor をオラクルとして使用するために必要な基本ツールをインストールします。 Tellor のユーザーコントラクトをインストールするには、[このパッケージ](https://github.com/tellor-io/usingtellor)を使ってください。 +まず、Tellorをオラクルとして使用するために必要な基本ツールをインストールします。 Tellorのユーザーコントラクトをインストールするには、[このパッケージ](https://github.com/tellor-io/usingtellor)を使ってください。 `npm install usingtellor` @@ -47,9 +47,9 @@ Tellor は、オフチェーンのデータポイントの値(例:BTC/USD) うまく行きましたね! ツールが準備できたので、ビットコイン価格の情報を取得するという単純なエクササイズを実行してみましょう: -### BTC/USD の例 {#btcusd-example} +### BTC/USDの例 {#btcusd-example} -この「UsingTellor」コントラクトを継承し、Tellor のアドレスをコントラクタの引数として渡します: +この「UsingTellor」コントラクトを継承し、Tellorのアドレスをコントラクタの引数として渡します: 具体的なコードは、以下のようになります: @@ -59,13 +59,13 @@ import "usingtellor/contracts/UsingTellor.sol"; contract PriceContract is UsingTellor { uint256 public btcPrice; - //このコントラクトは、UsingTellor のすべての関数にアクセスできるようになりました + //This Contract now has access to all functions in UsingTellor constructor(address payable _tellorAddress) UsingTellor(_tellorAddress) public {} function setBtcPrice() public { bytes memory _b = abi.encode("SpotPrice",abi.encode("btc","usd")); - bytes32 _queryID = keccak256(_b); + bytes32 _queryId = keccak256(_b); uint256 _timestamp; bytes _value; @@ -79,6 +79,6 @@ function setBtcPrice() public { コントラクトアドレスの完全なリストについては、[こちら](https://docs.tellor.io/tellor/the-basics/contracts-reference)を参照してください。 -利便性のために、UsingTellor のリポジトリには簡単な統合を目的としたバージョンである[Tellor Playground](https://github.com/tellor-io/TellorPlayground)コントラクトが含まれています。 有益な関数のリストについては、 [こちら](https://github.com/tellor-io/sampleUsingTellor#tellor-playground)を参照してください。 +利便性のために、UsingTellorのリポジトリには簡単な統合を目的としたバージョンである[Tellor Playground](https://github.com/tellor-io/TellorPlayground)コントラクトが含まれています。 有益な関数のリストについては、 [こちら](https://github.com/tellor-io/sampleUsingTellor#tellor-playground)を参照してください。 -Tellor オラクルをより堅牢に実装したい場合は、[こちらで](https://github.com/tellor-io/usingtellor/blob/master/README.md)利用可能な関数の全リストを確認してください。 +Tellorオラクルをより堅牢に実装したい場合は、[こちらで](https://github.com/tellor-io/usingtellor/blob/master/README.md)利用可能な関数の全リストを確認してください。 diff --git a/public/content/translations/ja/developers/tutorials/how-to-write-and-deploy-an-nft/index.md b/public/content/translations/ja/developers/tutorials/how-to-write-and-deploy-an-nft/index.md index dd960cde570..98735d50114 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-write-and-deploy-an-nft/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-write-and-deploy-an-nft/index.md @@ -345,6 +345,6 @@ Yassss! イーサリアム(テストネット)チェーンにNFTスマート ![Alchemy のエクスプローラーダッシュボードで「内部」で行われた通話を表示する](./alchemy-explorer-goerli.png) -ここでは、 .deploy() 関数を呼び出した際に、Hardhat/Ethers が内部で作った JSON-RPC の呼び出しをいくつか見ることができます。 ここで呼び出している2つの重要なJSON-RPCは、実際にSepoliaチェーン上でコントラクトを書き込むリクエストの[eth_sendRawTransaction](/developers/docs/apis/json-rpc/#eth_sendrawtransaction)と、(トランザクションを送信する際の典型的なパターンである) ハッシュを与えられたトランザクションに関する情報を読み取るリクエスト[eth_getTransactionByHash](/developers/docs/apis/json-rpc/#eth_gettransactionbyhash)です。 トランザクションの送信の詳細については、このチュートリアルの [Web3 を使用したトランザクションの送信](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) をご覧ください。 +ここでは、 .deploy() 関数を呼び出した際に、Hardhat/Ethers が内部で作った JSON-RPC の呼び出しをいくつか見ることができます。 ここで呼び出している2つの重要なJSON-RPCは、実際にSepoliaチェーン上でコントラクトを書き込むリクエストの[eth_sendRawTransaction](/developers/docs/apis/json-rpc/#eth_sendrawtransaction)と、(トランザクションを送信する際の典型的なパターンである) ハッシュを与えられたトランザクションに関する情報を読み取るリクエスト[eth_getTransactionByHash](/developers/docs/apis/json-rpc/#eth_gettransactionbyhash)です。 トランザクションの送信の詳細については、このチュートリアルの [ Web3 を使用したトランザクションの送信 ](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) をご覧ください。 以上がこのチュートリアルのパート1です。 [パート2](/developers/tutorials/how-to-mint-an-nft/) では、NFT を発行することで実際にスマートコントラクトとやりとりをします。そして、[パート3](/developers/tutorials/how-to-view-nft-in-metamask/) では、Etherreum ウォレット内の NFT を確認する方法を示します! diff --git a/public/content/translations/ja/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md b/public/content/translations/ja/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md index 73f7f925b6a..d2d4dc2fd2a 100644 --- a/public/content/translations/ja/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md +++ b/public/content/translations/ja/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md @@ -5,7 +5,6 @@ author: "Paul Apivat" tags: - "SQL" - "クエリ" - - "Dune Analytics" - "トランザクション" skill: beginner lang: ja @@ -16,23 +15,23 @@ sourceUrl: https://paulapivat.com/post/query_ethereum/ イーサリアムに関するチュートリアルの多くはデベロッパ向けのものですが、データアナリストや、クライアント/ノードを実行することなくオンチェーンのデータを確認したい人々を対象とする学習リソースは多くありません。 -このチュートリアルは、[Dune Analytics](https://dune.xyz/home)が提供するインターフェースを用いて、オンチェーンのデータに対して SQL(Structured Query Language)のクエリを実行することで、トランザクション、ブロック、ガスといったイーサリアムの基本的なコンセプトについての理解を深めるものです。 +このチュートリアルは、[Dune Analytics](https://dune.xyz/home)が提供するインターフェースを用いて、オンチェーンのデータに対してSQL(Structured Query Language)のクエリを実行することで、トランザクション、ブロック、ガスといったイーサリアムの基本的なコンセプトについての理解を深めるものです。 オンチェーンのデータは、イーサリアムやイーサリアム・ネットワークに関する理解を深めるのに役立つだけでなく、コンピュータ処理能力の経済学といった現在のイーサリアムが直面している課題(例:ガス代の上昇)や、より重要性が高いスケーリング・ソリューションに関する議論について、基本的な事項を理解する土台となるものです。 ### トランザクション {#transactions} -イーサリアムの新規ユーザーはまず、ETH 残高を持つエンティティであるユーザー管理アカウントを初期化する必要があります。 イーサリアムのアカウントには、ユーザー管理アカウントとスマートコントラクトの 2 種類があります([ethereum.org](/developers/docs/accounts/)を参照)してください)。 +イーサリアムの新規ユーザーはまず、ETH残高を持つエンティティであるユーザー管理アカウントを初期化する必要があります。 イーサリアムのアカウントには、ユーザー管理アカウントとスマートコントラクトの2種類があります([ethereum.org](/developers/docs/accounts/)を参照)してください)。 すべてのアカウントは、[Etherscan](https://etherscan.io/)のようなブロックエクスプローラーで表示できます。 ブロックエクスプローラーは、イーサリアム上のデータポータルです。 このポータルから、ブロックのデータ、トランザクション、マイナー、アカウント、および他のオンチェーンのアクティビティをリアルタイムで確認できます([こちら](/developers/docs/data-and-analytics/block-explorers/)をご覧ください)。 -しかし、外部のブロックエスプローラーが提供する情報と直接照合したい場合は、オンチェーンのデータに対するクエリを実行したいと思うかもしれません。 [Dune Analytics](https://duneanalytics.com/)は、SQL に関する一定の知識を前提として、あらゆるユーザーにこのクエリ機能を提供します。 +しかし、外部のブロックエスプローラーが提供する情報と直接照合したい場合は、オンチェーンのデータに対するクエリを実行したいと思うかもしれません。 [Dune Analytics](https://duneanalytics.com/)は、SQLに関する一定の知識を前提として、あらゆるユーザーにこのクエリ機能を提供します。 参考までに、イーサリアム・ファウンデーション (EF) のスマートコントラクトアカウントは[Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae)で表示することができます。 -EF のアカウントを含むすべてのアカウントは、トランザクションの送受信に使用できる公開アドレスを持つ点に留意してください。 +EFのアカウントを含むすべてのアカウントは、トランザクションの送受信に使用できる公開アドレスを持つ点に留意してください。 -Etherscan のアカウント残高は、通常のトランザクションと内部トランザクションで構成されています。 内部トランザクションは誤解を招きやすい名前ですが、チェーンの状態を変更する *実際の*トランザクションではありません。 内部トランザクションとは、コントラクト([ソース](https://ethereum.stackexchange.com/questions/3417/how-to-get-contract-internal-transactions))を実行することで開始される「値の移転」を意味します。 内部トランザクションは署名を持たないためブロックチェーンには **含まれず**、Dune Analytics でクエリを実行することができません。 +Etherscanのアカウント残高は、通常のトランザクションと内部トランザクションで構成されています。 内部トランザクションは誤解を招きやすい名前ですが、チェーンの状態を変更する _実際の_トランザクションではありません。 内部トランザクションとは、コントラクト([ソース](https://ethereum.stackexchange.com/questions/3417/how-to-get-contract-internal-transactions))を実行することで開始される「値の移転」を意味します。 内部トランザクションは署名を持たないためブロックチェーンには **含まれず**、Dune Analyticsでクエリを実行することができません。 従って、このチュートリアルでは通常のトランザクションのみを取り上げます。 通常のトランザクションに対しては、以下のようにクエリを実行します: @@ -62,13 +61,13 @@ SELECT FROM temp_table ``` -これにより、Etherscan のトランザクションページで提供されるのと同一の情報が返されます。 これら 2 つのソースを比較してみましょう: +これにより、Etherscanのトランザクションページで提供されるのと同一の情報が返されます。 これら2つのソースを比較してみましょう: #### Etherscan {#etherscan} ![](./etherscan_view.png) -[Etherscan 上の EF のコントラクトのページ](https://etherscan.io/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe) +[Etherscan上のEFのコントラクトのページ](https://etherscan.io/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe) #### Dune Analytics {#dune-analytics} @@ -81,12 +80,12 @@ FROM temp_table 送信されたトランザクションには、([ソース](/developers/docs/transactions/))を含むいくつかの情報が含まれています。 - **Recipient**:受信者のアドレス(「to」のクエリに該当したアドレス)。 -- **Signature**:トランザクションに署名するのは送信者の秘密鍵ですが、SQL でクエリできるのは送信者の公開アドレス(「from」)です。 -- **Value**:送信された ETH の量 (`ether`列を参照してください)。 +- **Signature**:トランザクションに署名するのは送信者の秘密鍵ですが、SQLでクエリできるのは送信者の公開アドレス(「from」)です。 +- **Value**:送信されたETHの量 (`ether`列を参照してください)。 - **Data**:ハッシュ化した任意のデータ(`data`列を参照してください)。 - **gasLimit**:トランザクションで消費できるガスユニットの上限。 ガスユニットは、計算ステップを示します。 - **maxPriorityFeePerGas**:マイナーへのチップとして提供できるガス量の上限。 -- **maxFeePerGas**:トランザクションに対して支払い可能であるガス代の上限(baseFeePerGas と maxPriorityFeePerGas を含む) 。 +- **maxFeePerGas**:トランザクションに対して支払い可能であるガス代の上限(baseFeePerGasとmaxPriorityFeePerGasを含む) 。 イーサリアムファウンデーションのパブリックアドレスへのトランザクションにつき、これらの具体的な情報をクエリしたい場合は以下を実行します: @@ -107,15 +106,15 @@ ORDER BY block_time DESC ### ブロック {#blocks} -各トランザクションは、イーサリアム仮想マシン([EVM](/developers/docs/evm/))の状態を変更します([ソース](/developers/docs/transactions/))。 トランザクションは、ネットワークにブロードキャストされ、検証を経てブロックに追加されます。 トランザクションごとに、ブロック番号が割り振られます。 データを見るには、特定のブロック番号でクエリすることができます。ブロック番号: 12396854 は、執筆時点である 2021 年 11 月 5 日のイーサリアム・ファウンデーション内のトランザクションで最も最新のブロックです。 +各トランザクションは、イーサリアム仮想マシン([EVM](/developers/docs/evm/))の状態を変更します([ソース](/developers/docs/transactions/))。 トランザクションは、ネットワークにブロードキャストされ、検証を経てブロックに追加されます。 トランザクションごとに、ブロック番号が割り振られます。 データを見るには、特定のブロック番号でクエリすることができます。ブロック番号: 12396854は、執筆時点である2021年11月5日のイーサリアム・ファウンデーション内のトランザクションで最も最新のブロックです。 -さらに、次の 2 つのブロックに対してクエリを実行すると、各ブロックが 1 つ前のブロックのハッシュ(親ハッシュ)を含んでいることが確認でき、ブロックチェーンがどのように形成されるかを理解できます。 +さらに、次の2つのブロックに対してクエリを実行すると、各ブロックが1つ前のブロックのハッシュ(親ハッシュ)を含んでいることが確認でき、ブロックチェーンがどのように形成されるかを理解できます。 各ブロックには、親ブロックに対する参照情報が含まれています。 これは、`hash`列と`parent_hash`列の間に表示されます([ソース](/developers/docs/blocks/))。 ![parent_hash](./parent_hash.png) -Dune Analytics では、[クエリ](https://duneanalytics.com/queries/44856/88292)は以下のように表示されます: +Dune Analyticsでは、[クエリ](https://duneanalytics.com/queries/44856/88292)は以下のように表示されます: ```sql SELECT @@ -131,14 +130,14 @@ LIMIT 10 ブロックを調べるには、時間、ブロック番号、難易度、ハッシュ、親ハッシュ、およびノンスに対してクエリを実行します。 -このクエリでは、*トランザクションのリスト*だけは調べることができません。このためトランザクションのリストについては、*state root*を使って後述する別のクエリを実行します。 フルノードまたはアーカイブノードは、すべてのトランザクションと状態遷移を保存しますので、クライアントはいつでもチェーンの状態をクエリすることができます。 これには大容量のストレージが必要になりますので、チェーンデータと状態データを分離することができます: +このクエリでは、_トランザクションのリスト_だけは調べることができません。このためトランザクションのリストについては、_state root_を使って後述する別のクエリを実行します。 フルノードまたはアーカイブノードは、すべてのトランザクションと状態遷移を保存しますので、クライアントはいつでもチェーンの状態をクエリすることができます。 これには大容量のストレージが必要になりますので、チェーンデータと状態データを分離することができます: - チェーンデータ(ブロックおよびトランザクションのリスト) - 状態データ(各トランザクションによる状態遷移の結果) -状態ルートは後者(状態データ)であり、*暗黙的な*データである(オンチェーンで保存されない)のに対し、チェーンデータは明示的なデータであり、チェーン自体に保存されます([ソース](https://ethereum.stackexchange.com/questions/359/where-is-the-state-data-stored))。 +状態ルートは後者(状態データ)であり、_暗黙的な_データである(オンチェーンで保存されない)のに対し、チェーンデータは明示的なデータであり、チェーン自体に保存されます([ソース](https://ethereum.stackexchange.com/questions/359/where-is-the-state-data-stored))。 -このチュートリアルでは、Dune Analytics を使って SQL で*クエリ可能*であるオンチェーンのデータを取り上げます。 +このチュートリアルでは、Dune Analyticsを使ってSQLで_クエリ可能_であるオンチェーンのデータを取り上げます。 すでに述べたように、各ブロックにはトランザクションのリストが含まれているので、特定のブロックに絞り込んでクエリを実行できます。 さっそく、最新ブロック「12396854」を試してみましょう。 @@ -148,11 +147,11 @@ WHERE block_number = 12396854 ORDER BY block_time DESC` ``` -Dune では、このような SQL 出力が得られます: +Duneでは、このようなSQL出力が得られます: ![](./list_of_txn.png) -ブロックチェーンにこの 1 つのブロックが追加されると、イーサリアム仮想マシン ([EVM](/developers/docs/evm/))の状態が変化します。 ブロックチェーンでは、一度に数十、時には数百ものトランザクションが検証されます。 このブロックの場合、222 件のトランザクションが含まれていました。 +ブロックチェーンにこの1つのブロックが追加されると、イーサリアム仮想マシン ([EVM](/developers/docs/evm/))の状態が変化します。 ブロックチェーンでは、一度に数十、時には数百ものトランザクションが検証されます。 このブロックの場合、222件のトランザクションが含まれていました。 実際にトランザクションが成功した件数を調べるには、成功したトランザクションのみを絞り込むフィルターを追加します: @@ -167,19 +166,19 @@ SELECT FROM temp_table ``` -ブロック 12396854 では、計 222 件のトランザクションのうち、204 件が正常に検証されました: +ブロック12396854では、計222件のトランザクションのうち、204件が正常に検証されました: ![](./successful_txn.png) -トランザクションリクエストは、毎秒あたり数十回発生しますが、ブロックがコミットされるのはおよそ 15 秒に 1 回です([ソース](/developers/docs/blocks/))。 +トランザクションリクエストは、毎秒あたり数十回発生しますが、ブロックがコミットされるのはおよそ15秒に1回です([ソース](/developers/docs/blocks/))。 -約 15 秒ごとに 1 つのブロックが生成されることを確認するには、1 日に含まれる合計の秒数(86,400 秒)を 15 で割ることで、1 日に生成される平均ブロック数(およそ 5,760)が分かります。 +約15秒ごとに1つのブロックが生成されることを確認するには、1日に含まれる合計の秒数(86,400秒)を15で割ることで、1日に生成される平均ブロック数(およそ5,760)が分かります。 -2016 年から現在までに、イーサリアムで生成された 1 日あたりのブロック数については、この表を参照してください: +2016年から現在までに、イーサリアムで生成された1日あたりのブロック数については、この表を参照してください: ![](./daily_blocks.png) -この期間に毎日生成されたブロックの平均数は、約 5,874 です。 +この期間に毎日生成されたブロックの平均数は、約5,874 です。 ![](./avg_daily_blocks.png) @@ -210,13 +209,13 @@ SELECT FROM temp_table ``` -2016 年から現在までに 1 日に生成されたブロック数の平均は、5,874 をわずかに上回っています。 反対に、86,400 秒を平均ブロック数である 5,874 で割ると 14.7 となるため、およそ 15 秒に 1 回の頻度でブロックが生成されたことが分かります。 +2016年から現在までに1日に生成されたブロック数の平均は、5,874をわずかに上回っています。 反対に、86,400秒を平均ブロック数である5,874で割ると14.7となるため、およそ15秒に1回の頻度でブロックが生成されたことが分かります。 ### ガス {#gas} -ブロックのサイズは、制限されています。 ブロックの最大サイズは、ネットワーク需要に応じて 12,500,000 ユニットから 25,000,000 ユニットの間で動的に変化します。 ブロックのサイズを制限する理由は、フルノードに対してディスク容量や処理速度の要件([ソース](/developers/docs/blocks/))が過剰な負担となるのを防ぐために、無駄に大きなサイズのブロックが発生することを防ぐためです。 +ブロックのサイズは、制限されています。 ブロックの最大サイズは、ネットワーク需要に応じて12,500,000ユニットから25,000,000ユニットの間で動的に変化します。 ブロックのサイズを制限する理由は、フルノードに対してディスク容量や処理速度の要件([ソース](/developers/docs/blocks/))が過剰な負担となるのを防ぐために、無駄に大きなサイズのブロックが発生することを防ぐためです。 -ブロックに対するガス上限という概念を理解するには、トランザクションをバッチ処理するために利用できるブロックのスペースをどれだけ**供給**できるか、と考えるとよいでしょう。 ブロックのガス上限に対してもクエリを実行できるので、2016 年から現在までのグラフは以下のようになります: +ブロックに対するガス上限という概念を理解するには、トランザクションをバッチ処理するために利用できるブロックのスペースをどれだけ**供給**できるか、と考えるとよいでしょう。 ブロックのガス上限に対してもクエリを実行できるので、2016年から現在までのグラフは以下のようになります: ![](./avg_gas_limit.png) @@ -229,7 +228,7 @@ GROUP BY dt OFFSET 1 ``` -さらに、イーサリアム・ブロックチェーン上で実行された処理(トランザクションの送信、スマートコントラクトの呼び出し、NFT のミント)のために実際に支払われた 1 日あたりのガスを調べることもできます。 これは、利用可能なイーサリアムのブロックスペースに対する**需要**を示します: +さらに、イーサリアム・ブロックチェーン上で実行された処理(トランザクションの送信、スマートコントラクトの呼び出し、NFTのミント)のために実際に支払われた1日あたりのガスを調べることもできます。 これは、利用可能なイーサリアムのブロックスペースに対する**需要**を示します: ![](./daily_gas_used.png) @@ -242,17 +241,17 @@ GROUP BY dt OFFSET 1 ``` -これら 2 つのグラフを比較することで、 **需要と供給**の関係を確認することができます: +これら2つのグラフを比較することで、 **需要と供給**の関係を確認することができます: ![gas_demand_supply](./gas_demand_supply.png) ここから、ブロックスペースが十分に供給されている場合、ガス価格はブロックスペースへの需要に応じて上下することが分かります。 -最後に、イーサリアムチェーンにおける 1 日のガス価格の平均値を調べたい場合、クエリ時間が非常に長くなるため、イーサリアム・ファウンデーションがトランザクション 1 件あたりに支払ったガス代の平均値を調べるようにクエリを絞り込みます。 +最後に、イーサリアムチェーンにおける1日のガス価格の平均値を調べたい場合、クエリ時間が非常に長くなるため、イーサリアム・ファウンデーションがトランザクション1件あたりに支払ったガス代の平均値を調べるようにクエリを絞り込みます。 ![](./ef_daily_gas.png) -2016 年から現在までに、イーサリアム・ファウンデーションのアドレスに対して実行されたすべてのトランザクションにおいて支払われたガス価格を確認することができます。 クエリは、以下のように実行します: +2016年から現在までに、イーサリアム・ファウンデーションのアドレスに対して実行されたすべてのトランザクションにおいて支払われたガス価格を確認することができます。 クエリは、以下のように実行します: ```sql SELECT @@ -270,4 +269,4 @@ ORDER BY block_time DESC このチュートリアルで使用したすべてのコードをまとめたダッシュボードは、[こちら](https://duneanalytics.com/paulapivat/Learn-Ethereum)からアクセスしてください。 -データを通じて Web3 の知識をさらに深めたい方は、[私を Twitter でフォローしてください](https://twitter.com/paulapivat)。 +データを通じてWeb3の知識をさらに深めたい方は、[私をTwitterでフォローしてください](https://twitter.com/paulapivat)。 diff --git a/public/content/translations/ja/developers/tutorials/logging-events-smart-contracts/index.md b/public/content/translations/ja/developers/tutorials/logging-events-smart-contracts/index.md index adb43255f91..8c11cdec88d 100644 --- a/public/content/translations/ja/developers/tutorials/logging-events-smart-contracts/index.md +++ b/public/content/translations/ja/developers/tutorials/logging-events-smart-contracts/index.md @@ -7,7 +7,7 @@ tags: - "Remix" - "Solidity" - "イベント" -skill: intermediate +skill: 中級 lang: ja published: 2020-04-03 source: EthereumDev diff --git a/public/content/translations/ja/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md b/public/content/translations/ja/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md index 826eff16a38..e2b63496cb1 100644 --- a/public/content/translations/ja/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md +++ b/public/content/translations/ja/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md @@ -4,20 +4,19 @@ description: author: "Mario Havel" tags: - "クライアント" - - "Geth" - "ノード" -skill: intermediate +skill: 中級 lang: ja published: 2021-01-13 --- -このチュートリアルでは、Geth ノードのモニタリングを設定する方法について説明します。これにより、モニタリングのパフォーマンスについて理解を深め、どのような問題が発生しうるかを理解することができます。 +このチュートリアルでは、Gethノードのモニタリングを設定する方法について説明します。これにより、モニタリングのパフォーマンスについて理解を深め、どのような問題が発生しうるかを理解することができます。 ## 事前に必要な環境 {#prerequisites} -- Geth のインスタンスを実行していること。 -- 大部分の作業ステップ/具体例は Linux を用いていますので、基本的なターミナルの知識が必要でしょう。 -- Geth における一連のモニタリング指標については、以下の動画を参考にしてください:[イーサリアムのインフラをモニタリングする(Péter Szilágyi)](https://www.youtube.com/watch?v=cOBab8IJMYI)。 +- Gethのインスタンスを実行していること。 +- 大部分の作業ステップ/具体例はLinuxを用いていますので、基本的なターミナルの知識が必要でしょう。 +- Gethにおける一連のモニタリング指標については、以下の動画を参考にしてください:[イーサリアムのインフラをモニタリングする(Péter Szilágyi)](https://www.youtube.com/watch?v=cOBab8IJMYI)。 ## モニタリング用のスタック {#monitoring-stack} @@ -30,13 +29,13 @@ published: 2021-01-13 - [Datadog](https://www.datadoghq.com/) - [Chronograf](https://www.influxdata.com/time-series-platform/chronograf/) -さらに、[Geth Prometheus Exporter](https://github.com/hunterlong/gethexporter)がありますが、これは InfluxDB および Grafana 上ですでに設定済みのオプションです。 Docker ならびに RPi 4 向けの[Ethbian OS](https://ethbian.org/index.html)を使用すれば、簡単に設定することができます。 +さらに、[Geth Prometheus Exporter](https://github.com/hunterlong/gethexporter)がありますが、これはInfluxDBおよびGrafana上ですでに設定済みのオプションです。 DockerならびにRPi 4向けの[Ethbian OS](https://ethbian.org/index.html)を使用すれば、簡単に設定することができます。 -このチュートリアルでは、InfluxDB にデータをプッシュするように Geth クライアントを設定し、さらに、Grafana がこのデータをグラフ化するように設定します。 この設定を手動で行うことで、設定プロセスについての理解を深めることができ、設定を変更したり、異なる環境でデプロイする方法を学ぶことができます。 +このチュートリアルでは、InfluxDBにデータをプッシュするように Gethクライアントを設定し、さらに、Grafanaがこのデータをグラフ化するように設定します。 この設定を手動で行うことで、設定プロセスについての理解を深めることができ、設定を変更したり、異なる環境でデプロイする方法を学ぶことができます。 -## InfluxDB を設定する {#setting-up-influxdb} +## InfluxDBを設定する {#setting-up-influxdb} -まず、InfluxDB をダウンロードしてインストールします。 [Influxdata のリリースページ](https://portal.influxdata.com/downloads/)では、さまざまなダウンロードのオプションが提供されています。 あなたの環境に合わせて選択してください。 また、[リポジトリ](https://repos.influxdata.com/)からインストールすることもできます。 例えば、Debian ベースのディストリビューションの場合、以下のように実行します: +まず、InfluxDBをダウンロードしてインストールします。 [Influxdataのリリースページ](https://portal.influxdata.com/downloads/)では、さまざまなダウンロードのオプションが提供されています。 あなたの環境に合わせて選択してください。 また、[リポジトリ](https://repos.influxdata.com/)からインストールすることもできます。 例えば、Debianベースのディストリビューションの場合、以下のように実行します: ``` curl -tlsv1.3 --proto =https -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add @@ -55,13 +54,13 @@ InfluxDB を正常にインストールしたら、バックグラウンドで curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES" ``` -管理者ユーザーを作成すると、Influx クライアントから、[InfluxDB シェル](https://docs.influxdata.com/influxdb/v1.8/tools/shell/)にアクセスできるようになります。 +管理者ユーザーを作成すると、Influxクライアントから、[InfluxDBシェル](https://docs.influxdata.com/influxdb/v1.8/tools/shell/)にアクセスできるようになります。 ``` influx -username 'username' -password 'password' ``` -このシェルから InfluxDB と直接やりとりを行うことで、データベースとユーザーを作成し、Geth のモニタリング指標を取得することができます。 +このシェルから InfluxDBと直接やりとりを行うことで、データベースとユーザーを作成し、Gethのモニタリング指標を取得することができます。 ``` create database geth @@ -75,17 +74,17 @@ show databases show users ``` -InfluxDB シェルを終了します。 +InfluxDBシェルを終了します。 ``` exit ``` -InfluxDB はバックグラウンドで実行しており、Geth から送信される数値を保存するように設定されています。 +InfluxDBはバックグラウンドで実行しており、Gethから送信される数値を保存するように設定されています。 -## Geth 側の設定 {#preparing-geth} +## Geth側の設定 {#preparing-geth} -データベースを設定したら、Geth 上でのデータ収集を有効化する必要があります。 geth-help の`geth --help`の`METRICS AND STATS OPTIONS`を確認してください。 複数のオプションが提供されていますが、ここでは、Geth が InfluxDB にデータをプッシュするように設定する必要があります。 基本的な設定では、InfluxDB がリーチ可能なエンドポイントと、当該データベースに対する認証について設定します。 +データベースを設定したら、Geth上でのデータ収集を有効化する必要があります。 geth-helpの`geth --help`の`METRICS AND STATS OPTIONS`を確認してください。 複数のオプションが提供されていますが、ここでは、Gethが InfluxDBにデータをプッシュするように設定する必要があります。 基本的な設定では、InfluxDBがリーチ可能なエンドポイントと、当該データベースに対する認証について設定します。 ``` geth --metrics --metrics.influxdb --metrics.influxdb.endpoint "http://0.0.0.0:8086" --metrics.influxdb.username "geth" --metrics.influxdb.password "chosenpassword" @@ -93,16 +92,16 @@ geth --metrics --metrics.influxdb --metrics.influxdb.endpoint "http://0.0.0.0:80 このフラグは、クライアントを起動するコマンドに追加するか、設定ファイル上で保存することが可能です。 -データベースに含まれる数値をリストアップするなどの方法で、Geth が実際にデータをプッシュしているかどうかを確認できます。 InfluxDB のシェルで、以下を入力してください: +データベースに含まれる数値をリストアップするなどの方法で、Gethが実際にデータをプッシュしているかどうかを確認できます。 InfluxDBのシェルで、以下を入力してください: ``` use geth show measurements ``` -## Grafana を設定する {#setting-up-grafana} +## Grafanaを設定する {#setting-up-grafana} -次に、データをグラフィック表示するために Grafana をインストールします。 Grafana のドキュメンテーションを参照して、お使いの環境におけるインストール作業を実行してください。 特別な理由がない限り、OSS バージョンをインストールしてください。 レポジトリを利用して Debian のディストリビューションをインストールするステップは、以下の通りです: +次に、データをグラフィック表示するためにGrafanaをインストールします。 Grafanaのドキュメンテーションを参照して、お使いの環境におけるインストール作業を実行してください。 特別な理由がない限り、OSSバージョンをインストールしてください。 レポジトリを利用してDebianのディストリビューションをインストールするステップは、以下の通りです: ``` curl -tlsv1.3 --proto =https -sL https://packages.grafana.com/gpg.key | sudo apt-key add - @@ -113,11 +112,11 @@ sudo systemctl enable grafana-server sudo systemctl start grafana-server ``` -Grafana が実行されている場合、`localhost:3000`でアクセスできるはずです。 お好みのブラウザからこのパスにアクセスして、デフォルトの認証情報(ユーザー:`admin`、パスワード:`admin`)でログインします。 プロンプトが表示されたら、デフォルトのパスワードを変更して保存してください。 +Grafanaが実行されている場合、`localhost:3000`でアクセスできるはずです。 お好みのブラウザからこのパスにアクセスして、デフォルトの認証情報(ユーザー:`admin`、パスワード:`admin`)でログインします。 プロンプトが表示されたら、デフォルトのパスワードを変更して保存してください。 ![](./grafana1.png) -Grafana のホームページに転送されます。 まず、ソースデータを設定します。 左のバーにある Configuration アイコンをクリックし、「Data sources」を選択します。 +Grafanaのホームページに転送されます。 まず、ソースデータを設定します。 左のバーにあるConfigurationアイコンをクリックし、「Data sources」を選択します。 ![](./grafana2.png) @@ -129,20 +128,20 @@ Grafana のホームページに転送されます。 まず、ソースデー ![](./grafana4.png) -同一のマシンでツールを実行している場合、データソースの設定は非常に簡単です。 データベースにアクセスするには、InfluxDB のアドレスと詳細を設定する必要があります。 以下の画像を参照してください。 +同一のマシンでツールを実行している場合、データソースの設定は非常に簡単です。 データベースにアクセスするには、InfluxDBのアドレスと詳細を設定する必要があります。 以下の画像を参照してください。 ![](./grafana5.png) -設定が完了し、InfluxDB がアクセス可能になったら、「Save and test」をクリックして、確認のポップアップ画面が表示されるまで待ってください。 +設定が完了し、InfluxDBがアクセス可能になったら、「Save and test」をクリックして、確認のポップアップ画面が表示されるまで待ってください。 ![](./grafana6.png) -Grafana の設定が完了し、InfluxDB のデータを読み込めるようになりました。 次に、データを分析して表示するダッシュボードを作成します。 ダッシュボードの属性は JSON ファイルでエンコードされますので、誰でも簡単に作成し、インポートすることが可能です。 左のバーで、「Create and Import」をクリックしてください。 +Grafanaの設定が完了し、InfluxDBのデータを読み込めるようになりました。 次に、データを分析して表示するダッシュボードを作成します。 ダッシュボードの属性はJSONファイルでエンコードされますので、誰でも簡単に作成し、インポートすることが可能です。 左のバーで、「Create and Import」をクリックしてください。 ![](./grafana7.png) -Geth のモニタリング用ダッシュボードの場合、[このダッシュボード](https://grafana.com/grafana/dashboards/13877/)の ID をコピーして、Grafana の「Import page」にペーストしてください。 ダッシュボードを保存すると、以下のような状態になっているはずです: +Gethのモニタリング用ダッシュボードの場合、[このダッシュボード](https://grafana.com/grafana/dashboards/13877/)のIDをコピーして、Grafanaの「Import page」にペーストしてください。 ダッシュボードを保存すると、以下のような状態になっているはずです: ![](./grafana8.png) -ダッシュボードの表示は変更可能です。 各パネルは、編集、移動、削除、追加が可能です。 各自の好みに合わせて、ダッシュボードの設定を変更してください。 あなた次第です! ダッシュボードの詳細な仕組みについては、 [Grafana のドキュメンテーション](https://grafana.com/docs/grafana/latest/dashboards/)を参照してください。 また、[アラート機能](https://grafana.com/docs/grafana/latest/alerting/)も参照するとよいでしょう。 これは、各指標において一定の値に達した場合、アラート通知を受け取るように設定するものです。 アラート通知は、様々な通信チャネルに対応しています。 +ダッシュボードの表示は変更可能です。 各パネルは、編集、移動、削除、追加が可能です。 各自の好みに合わせて、ダッシュボードの設定を変更してください。 あなた次第です! ダッシュボードの詳細な仕組みについては、 [Grafanaのドキュメンテーション](https://grafana.com/docs/grafana/latest/dashboards/)を参照してください。 また、[アラート機能](https://grafana.com/docs/grafana/latest/alerting/)も参照するとよいでしょう。 これは、各指標において一定の値に達した場合、アラート通知を受け取るように設定するものです。 アラート通知は、様々な通信チャネルに対応しています。 diff --git a/public/content/translations/ja/developers/tutorials/optimism-std-bridge-annotated-code/index.md b/public/content/translations/ja/developers/tutorials/optimism-std-bridge-annotated-code/index.md index 5475ffe6f14..96cc92d9c85 100644 --- a/public/content/translations/ja/developers/tutorials/optimism-std-bridge-annotated-code/index.md +++ b/public/content/translations/ja/developers/tutorials/optimism-std-bridge-annotated-code/index.md @@ -4,82 +4,81 @@ description: Optimismの標準ブリッジは、どのように機能するか author: Ori Pomerantz tags: - "Solidity" - - "Optimism" - "ブリッジ" - "レイヤー2" -skill: intermediate +skill: 中級 published: 2022-03-30 lang: ja --- -[Optimism](https://www.optimism.io/)は、[Optimisitc ロールアップ](/developers/docs/scaling/optimistic-rollups/)を行うメカニズムのひとつです。 Optimistic ロールアップでは、ネットワークに含まれるすべてノードではなく一部のノードのみを対象としてトランザクションが処理されるため、イーサリアム・メインネット(「レイヤー 1」または「L1」とも呼ばれます)よりも手数料が低くなります。 一部のノードのみを対象として処理されるものの、すべてのデータは L1 に書き込まれるため、あらゆる事項につき、メインネットにおける完全性および可用性についての保証に基づいて証明、再構築することが可能です。 +[Optimism](https://www.optimism.io/)は、[Optimisitc ロールアップ](/developers/docs/scaling/optimistic-rollups/)を行うメカニズムのひとつです。 Optimistic ロールアップでは、ネットワークに含まれるすべてノードではなく一部のノードのみを対象としてトランザクションが処理されるため、イーサリアム・メインネット(「レイヤー1」または「L1」とも呼ばれます)よりも手数料が低くなります。 一部のノードのみを対象として処理されるものの、すべてのデータはL1に書き込まれるため、あらゆる事項につき、メインネットにおける完全性および可用性についての保証に基づいて証明、再構築することが可能です。 -Optimism(またはその他の L2)上で L1 のアセットを使用するには、当該アセットを[ブリッジ](/bridges/#prerequisites)する必要があります。 アセットをブリッジする方法のひとつとして、アセット(最も一般的なのは、ETH や[ERC-20 トークン](/developers/docs/standards/tokens/erc-20/)です)を L1 上でロックし、L2 上で同等のアセットを受け取る方法があります。 最終的に、これらのアセットを所持するユーザーは、再度 L1 にブリッジする必要があるでしょう。 L1 にアセットをブリッジすると、L2 上のアセットはバーンされ、L1 上のアセットがユーザーに戻されます。 +Optimism(またはその他のL2)上でL1のアセットを使用するには、当該アセットを[ブリッジ](/bridges/#prerequisites)する必要があります。 アセットをブリッジする方法のひとつとして、アセット(最も一般的なのは、ETHや[ERC-20 トークン](/developers/docs/standards/tokens/erc-20/)です)をL1上でロックし、L2上で同等のアセットを受け取る方法があります。 最終的に、これらのアセットを所持するユーザーは、再度L1にブリッジする必要があるでしょう。 L1にアセットをブリッジすると、L2上のアセットはバーンされ、L1上のアセットがユーザーに戻されます。 -以上が、[Optimism における標準ブリッジ](https://community.optimism.io/docs/developers/bridge/standard-bridge)の仕組みです。 この記事では、このブリッジ機能について Solidity 上で適切に作成したソースコードを確認しながら、その仕組みを学びます。 +以上が、[Optimismにおける標準ブリッジ](https://community.optimism.io/docs/developers/bridge/standard-bridge)の仕組みです。 この記事では、このブリッジ機能についてSolidity上で適切に作成したソースコードを確認しながら、その仕組みを学びます。 ## 制御フロー {#control-flows} -ブリッジは、2 つのメインフローで構成されます: +ブリッジは、2つのメインフローで構成されます: -- L1 から L2 への入金 -- L2 から L1 への出金 +- L1からL2への入金 +- L2からL1への出金 ### 入金フロー {#deposit-flow} #### L1 {#deposit-flow-layer-1} -1. ERC-20 を入金する場合、入金者はブリッジに対し、入金額を使用するためのアローワンスを与えます。 -2. 入金者は、L1 ブリッジ(`depositERC20`、`depositERC20To`、 `depositETH`あるいは `depositETHTo`)を呼び出します。 -3. L1 ブリッジが、ブリッジされたアセットを保持します。 - - ETH の場合:アセットは、呼び出しを通じて入金者に送信されます。 - - ERC-20 トークンの場合:アセットは、入金者が提供するアローワンスを使用して、ブリッジ自体に送信されます。 -4. L1 のブリッジが、クロスドメインのメッセージメカニズムを通じて、L2 のブリッジ上で`finalizeDeposit`を呼び出します。 +1. ERC-20を入金する場合、入金者はブリッジに対し、入金額を使用するためのアローワンスを与えます。 +2. 入金者は、L1ブリッジ(`depositERC20`、`depositERC20To`、 `depositETH`あるいは `depositETHTo`)を呼び出します。 +3. L1ブリッジが、ブリッジされたアセットを保持します。 + - ETHの場合:アセットは、呼び出しを通じて入金者に送信されます。 + - ERC-20トークンの場合:アセットは、入金者が提供するアローワンスを使用して、ブリッジ自体に送信されます。 +4. L1のブリッジが、クロスドメインのメッセージメカニズムを通じて、L2のブリッジ上で`finalizeDeposit`を呼び出します。 #### L2 {#deposit-flow-layer-2} -5. L2 のブリッジは、`finalizeDeposit`の呼び出しにつき、以下が適切であることを確認します: +5. L2のブリッジは、`finalizeDeposit`の呼び出しにつき、以下が適切であることを確認します: - クロスドメインのメッセージ・コントラクトからの呼び出しであること。 - - ブリッジが L1 上で作成されたものであること。 -6. L2 のブリッジはさらに、L2 上の ERC-20 トークンコントラクトにつき、以下が適切であることを確認します: - - L2 のコントラクトにおいて、L1 における対応するコントラクトが、L1 上で送信されたトークンと同一であると報告していること。 - - L2 のコントラクトが、([ERC-165 を使用した](https://eips.ethereum.org/EIPS/eip-165))適切なインターフェイスをサポートすると報告していること。 -7. L2 のコントラクトが適切であると確認できた場合は、適切なアドレスに対して希望する量のトークンをミントするために、そのコントラクトを呼び出してください。 そうでない場合は、出金プロセスを開始して、ユーザーが L1 上のトークンを請求できるようにします。 + - ブリッジがL1上で作成されたものであること。 +6. L2のブリッジはさらに、L2上のERC-20トークンコントラクトにつき、以下が適切であることを確認します: + - L2のコントラクトにおいて、L1における対応するコントラクトが、L1上で送信されたトークンと同一であると報告していること。 + - L2のコントラクトが、([ERC-165を使用した](https://eips.ethereum.org/EIPS/eip-165))適切なインターフェイスをサポートすると報告していること。 +7. L2のコントラクトが適切であると確認できた場合は、適切なアドレスに対して希望する量のトークンをミントするために、そのコントラクトを呼び出してください。 そうでない場合は、出金プロセスを開始して、ユーザーがL1上のトークンを請求できるようにします。 ### 出金フロー {#withdrawal-flow} -#### L2 {#withdrawal-flow-layer-2} +#### レイヤー2 {#withdrawal-flow-layer-2} -1. 出金者は、L2 のブリッジ(`withdraw`または`withdrawTo`)を呼び出します 。 -2. L2 のブリッジは、`msg.sender`が所有する適切な数のトークンをバーンします。 -3. L2 のブリッジは、クロスドメインのメッセージ・メカニズムを利用して、L1 のブリッジ上で、 `finalizeETHWithdrawal`または`finalizeERC20Withdrawal`を呼び出します。 +1. 出金者は、L2のブリッジ(`withdraw`または`withdrawTo`)を呼び出します 。 +2. L2のブリッジは、`msg.sender`が所有する適切な数のトークンをバーンします。 +3. L2のブリッジは、クロスドメインのメッセージ・メカニズムを利用して、L1のブリッジ上で、 `finalizeETHWithdrawal`または`finalizeERC20Withdrawal`を呼び出します。 #### L1 {#withdrawal-flow-layer-1} -4. L1 のブリッジは、`finalizeETHWithdraw`または`finalizeERC20Withdral`の呼び出しにつき、以下が適切であるかを確認します: +4. L1のブリッジは、`finalizeETHWithdraw`または`finalizeERC20Withdral`の呼び出しにつき、以下が適切であるかを確認します: - クロスドメインのメッセージ・メカニズムを経由していること。 - - L2 のブリッジで作成されていること。 -5. L1 のブリッジは、適切な資産(ETH または ERC-20)を適切なアドレスに送信します。 + - L2のブリッジで作成されていること。 +5. L1のブリッジは、適切な資産(ETHまたはERC-20)を適切なアドレスに送信します。 -## レイヤー 1 のコード {#layer-1-code} +## レイヤー1のコード {#layer-1-code} 以下は、イーサリアム・メインネット(L1)で実行されるコードです。 ### IL1ERC20Bridge {#IL1ERC20Bridge} -このインターフェイスは、[こちら](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1ERC20Bridge.sol)で定義されています。 このインターフェイスには、ERC-20 トークンをブリッジするために必要な機能と定義が含まれます。 +このインターフェイスは、[こちら](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1ERC20Bridge.sol)で定義されています。 このインターフェイスには、ERC-20トークンをブリッジするために必要な機能と定義が含まれます。 ```solidity // SPDX-License-Identifier: MIT ``` -Optimism のコードの大部分は、[MIT ライセンス](https://help.optimism.io/hc/en-us/articles/4411908707995-What-software-license-does-Optimism-use-)に基づいています。 +Optimismのコードの大部分は、[MITライセンス](https://help.optimism.io/hc/en-us/articles/4411908707995-What-software-license-does-Optimism-use-)に基づいています。 ```solidity pragma solidity >0.5.0 <0.9.0; ``` -本記事の執筆時点で、Solidity の最新バージョンは 0.8.12 です。 バージョン 0.9.0 においてこのコードが利用できるかは、同バージョンがリリースされるまで不明です。 +本記事の執筆時点で、Solidityの最新バージョンは0.8.12です。 バージョン0.9.0においてこのコードが利用できるかは、同バージョンがリリースされるまで不明です。 ```solidity /** @@ -93,14 +92,14 @@ interface IL1ERC20Bridge { event ERC20DepositInitiated( ``` -Optimism のブリッジ関連用語において、*入金*とは、L1 から L2 に送金することを意味し、*出金*とは、L2 から L1 へ送金することを意味します。 +Optimismのブリッジ関連用語において、_入金_とは、L1からL2に送金することを意味し、_出金_とは、L2からL1へ送金することを意味します。 ```solidity address indexed _l1Token, address indexed _l2Token, ``` -ほとんどの場合、L1 上の ERC-20 のアドレスは、L2 上で対応する ERC-20 のアドレスとは異なります。 トークンアドレスのリストは、[こちら](https://static.optimism.io/optimism.tokenlist.json)を参照してください。 `chainId`が 1 のアドレスであれば、L1 (メインネット) 上のトークンであり、`chainId`が 10 のアドレスでれば、L2(Optimism)上のトークンです。 残りの 2 つの`chainId`の値は、Kovan テストネットワーク(42)と Optimistic Kovan テストネットワーク(69)のためのものです。 +ほとんどの場合、L1上のERC-20のアドレスは、L2上で対応するERC-20のアドレスとは異なります。 トークンアドレスのリストは、[こちら](https://static.optimism.io/optimism.tokenlist.json)を参照してください。 `chainId`が1のアドレスであれば、L1 (メインネット) 上のトークンであり、`chainId`が10のアドレスでれば、L2(Optimism)上のトークンです。 残りの2つの`chainId`の値は、Kovanテストネットワーク(42)とOptimistic Kovanテストネットワーク(69)のためのものです。 ```solidity address indexed _from, @@ -123,7 +122,7 @@ Optimism のブリッジ関連用語において、*入金*とは、L1 から L2 ); ``` -入金と出金の両方向につき、同じブリッジのコントラクトが処理します。 つまり、L1 のブリッジでは入金を初期化し、出金を確定します。 +入金と出金の両方向につき、同じブリッジのコントラクトが処理します。 つまり、L1のブリッジでは入金を初期化し、出金を確定します。 ```solidity @@ -138,7 +137,7 @@ Optimism のブリッジ関連用語において、*入金*とは、L1 から L2 function l2TokenBridge() external returns (address); ``` -実際には、L2 のブリッジは事前にデプロイされており、常に「`0x42000000000000000000000000000000000000000010`」のアドレスとなるため、この機能は必要ではありません。 この機能は、L2 上のブリッジとの対称性を確保するためのものです。というのも、L1 ブリッジのアドレスを確認することは無意味とは*言えない*ためです。 +実際には、L2のブリッジは事前にデプロイされており、常に「`0x42000000000000000000000000000000000000000010`」のアドレスとなるため、この機能は必要ではありません。 この機能は、L2上のブリッジとの対称性を確保するためのものです。というのも、L1ブリッジのアドレスを確認することは無意味とは_言えない_ためです。 ```solidity /** @@ -160,7 +159,7 @@ Optimism のブリッジ関連用語において、*入金*とは、L1 から L2 ) external; ``` -`_l2Gas`のパラメータは、このトランザクションが使用できる L2 上のガス量です。 この値は、[一定の(高い)上限まで無料であるため](https://community.optimism.io/docs/developers/bridge/messaging/#for-l1-%E2%87%92-l2-transactions-2)、ミント時に ERC-20 がコントラクトが特に異常な動作を行わない限り、問題は発生しません。 以下の関数は、異なるブロックチェーンにおける同一アドレスにアセットをブリッジしたいという一般的なシナリオで用いることができます。 +`_l2Gas`のパラメータは、このトランザクションが使用できるL2上のガス量です。 この値は、[一定の(高い)上限まで無料であるため](https://community.optimism.io/docs/developers/bridge/messaging/#for-l1-%E2%87%92-l2-transactions-2)、ミント時にERC-20がコントラクトが特に異常な動作を行わない限り、問題は発生しません。 以下の関数は、異なるブロックチェーンにおける同一アドレスにアセットをブリッジしたいという一般的なシナリオで用いることができます。 ```solidity /** @@ -184,7 +183,7 @@ Optimism のブリッジ関連用語において、*入金*とは、L1 から L2 ) external; ``` -次のコードは`depositERC20`とほぼ同一の関数ですが、ERC-20 トークンを異なるアドレスに送信することができます。 +次のコードは`depositERC20`とほぼ同一の関数ですが、ERC-20トークンを異なるアドレスに送信することができます。 ```solidity /************************* @@ -216,16 +215,16 @@ Optimism のブリッジ関連用語において、*入金*とは、L1 から L2 } ``` -Optimism における出金(および、他の L2 から L1 へのメッセージ送信)は、2 つのステップで実行されます: +Optimismにおける出金(および、他のL2からL1へのメッセージ送信)は、2つのステップで実行されます: -1. L2 でトランザクションを開始する。 -2. L1 で、トランザクションを確定/クレームする。 L1 でのトランザクションは、L2 でのトランザクションに対する[異議申し立て期間](https://community.optimism.io/docs/how-optimism-works/#fault-proofs) が終了した後で実行可能になります。 +1. L2でトランザクションを開始する。 +2. L1で、トランザクションを確定/クレームする。 L1でのトランザクションは、L2でのトランザクションに対する[異議申し立て期間](https://community.optimism.io/docs/how-optimism-works/#fault-proofs) が終了した後で実行可能になります。 ### IL1StandardBridge {#il1standardbridge} -このインターフェイスは、[こちら](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1StandardBridge.sol)で定義されています。 このブリッジには、ETH を対象とするイベントおよび関数の定義が含まれています。 これらの定義は、ERC-20 トークンを対象とする`IL1ERC20Bridge`の定義とほぼ同一です。 +このインターフェイスは、[こちら](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1StandardBridge.sol)で定義されています。 このブリッジには、ETHを対象とするイベントおよび関数の定義が含まれています。 これらの定義は、ERC-20トークンを対象とする`IL1ERC20Bridge`の定義とほぼ同一です。 -一部の ERC-20 トークンは、標準ブリッジでは処理できず、カスタム処理が必要となるため、このブリッジのインターフェイスは 2 つのファイルで構成されています。 これにより、カスタム処理が必要なトークンを取り扱うブリッジについては`IL1ERC20Bridge`を実装すればよく、ETH のブリッジ機能を実装する必要はありません。 +一部のERC-20トークンは、標準ブリッジでは処理できず、カスタム処理が必要となるため、このブリッジのインターフェイスは2つのファイルで構成されています。 これにより、カスタム処理が必要なトークンを取り扱うブリッジについては`IL1ERC20Bridge`を実装すればよく、ETHのブリッジ機能を実装する必要はありません。 ```solidity // SPDX-License-Identifier: MIT @@ -248,13 +247,13 @@ interface IL1StandardBridge is IL1ERC20Bridge { ); ``` -このイベントは、ERC-20 トークン用のイベント(`ERC20DepositInitiated`)とほぼ同一ですが、L1 および L2 上のトークンアドレスが含まれていない点が異なります。 他のイベントおよび関数についても、この点が異なります。 +このイベントは、ERC-20トークン用のイベント(`ERC20DepositInitiated`)とほぼ同一ですが、L1およびL2上のトークンアドレスが含まれていない点が異なります。 他のイベントおよび関数についても、この点が異なります。 ```solidity event ETHWithdrawalFinalized( . - . - . + 。 + 。 ); /******************** @@ -263,17 +262,17 @@ interface IL1StandardBridge is IL1ERC20Bridge { /** * @dev Deposit an amount of the ETH to the caller's balance on L2. - . - . - . + 。 + 。 + 。 */ function depositETH(uint32 _l2Gas, bytes calldata _data) external payable; /** * @dev Deposit an amount of ETH to a recipient's balance on L2. - . - . - . + 。 + 。 + 。 */ function depositETHTo( address _to, @@ -289,9 +288,9 @@ interface IL1StandardBridge is IL1ERC20Bridge { * @dev Complete a withdrawal from L2 to L1, and credit funds to the recipient's balance of the * L1 ETH token. Since only the xDomainMessenger can call this function, it will never be called * before the withdrawal is finalized. - . - . - . + 。 + 。 + 。 */ function finalizeETHWithdrawal( address _from, @@ -359,7 +358,7 @@ contract CrossDomainEnabled { modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) { ``` -クロスドメインのメッセージング機能は、ブロックチェーン(イーサリアム・メインネットまたは Optimism)上で実行されているあらゆるコントラクトからアクセス可能です。 ただし、相手方のブリッジから送信された特定のメッセージ*のみ*を信頼するためには、双方のブリッジが必要になります。 +クロスドメインのメッセージング機能は、ブロックチェーン(イーサリアム・メインネットまたはOptimism)上で実行されているあらゆるコントラクトからアクセス可能です。 ただし、相手方のブリッジから送信された特定のメッセージ_のみ_を信頼するためには、双方のブリッジが必要になります。 ```solidity require( @@ -425,7 +424,7 @@ contract CrossDomainEnabled { // slither-disable-next-line reentrancy-events, reentrancy-benign ``` -[Slither](https://github.com/crytic/slither)は、Optimism において、すべてのコントラクトの脆弱性やその他の潜在的な問題箇所を特定するために実行される静的解析ツールです。 ここでは、以下の行により 2 つの脆弱性がトリガーされます。 +[Slither](https://github.com/crytic/slither)は、Optimismにおいて、すべてのコントラクトの脆弱性やその他の潜在的な問題箇所を特定するために実行される静的解析ツールです。 ここでは、以下の行により2つの脆弱性がトリガーされます。 1. [リエントランシーのイベント](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3) 2. [無害のリエントランシー](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2) @@ -436,9 +435,9 @@ contract CrossDomainEnabled { } ``` -このケースでは、Slither が当該情報を把握する方法を持たない場合でも、`getCrossDomainMessenger()`が信頼できるアドレスを返すと分かっているため、リエントランシーについて心配する必要はありません。 +このケースでは、Slitherが当該情報を把握する方法を持たない場合でも、`getCrossDomainMessenger()`が信頼できるアドレスを返すと分かっているため、リエントランシーについて心配する必要はありません。 -### L1 上のブリッジコントラクト {#the-l1-bridge-contract} +### L1上のブリッジコントラクト {#the-l1-bridge-contract} このコントラクトのソースコードは、[こちら](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1StandardBridge.sol)で入手してください。 @@ -447,7 +446,7 @@ contract CrossDomainEnabled { pragma solidity ^0.8.9; ``` -このインターフェイスは、他のコントラクトにも含まれる場合があるため、Solidity のさまざまなバージョンをサポートする必要があります。 しかしここでは、ブリッジ自体がコントラクトであるため、使用できる Solidity のバージョンを限定することが可能です。 +このインターフェイスは、他のコントラクトにも含まれる場合があるため、Solidityのさまざまなバージョンをサポートする必要があります。 しかしここでは、ブリッジ自体がコントラクトであるため、使用できるSolidityのバージョンを限定することが可能です。 ```solidity /* Interface Imports */ @@ -461,13 +460,13 @@ import { IL1ERC20Bridge } from "./IL1ERC20Bridge.sol"; import { IL2ERC20Bridge } from "../../L2/messaging/IL2ERC20Bridge.sol"; ``` -[このインターフェイス](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol)では、L2 上で標準ブリッジを制御するためのメッセージを作成します。 +[このインターフェイス](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol)では、L2上で標準ブリッジを制御するためのメッセージを作成します。 ```solidity import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; ``` -[このインターフェイス](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)は、ERC-20 のコントラクトを制御するために使用します。 詳細については、[こちら](/developers/tutorials/erc20-annotated-code/#the-interface)をご覧ください。 +[このインターフェイス](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)は、ERC-20のコントラクトを制御するために使用します。 詳細については、[こちら](/developers/tutorials/erc20-annotated-code/#the-interface)をご覧ください。 ```solidity /* Library Imports */ @@ -480,13 +479,13 @@ import { CrossDomainEnabled } from "../../libraries/bridge/CrossDomainEnabled.so import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol"; ``` -[`Lib_PredeployAddresses`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol)には、常に同じアドレスを持つ L2 上のコントラクトのアドレスが含まれています。 これには、L2 上の標準ブリッジが含まれます。 +[`Lib_PredeployAddresses`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol)には、常に同じアドレスを持つL2上のコントラクトのアドレスが含まれています。 これには、L2上の標準ブリッジが含まれます。 ```solidity import { Address } from "@openzeppelin/contracts/utils/Address.sol"; ``` -[OpenZeppelin のアドレス・ユーティリティ](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol)です。 これは、コントラクト上のアドレスと外部所有アカウント(EOA)に含まれるアドレスを区別するために使われます。 +[OpenZeppelinのアドレス・ユーティリティ](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol)です。 これは、コントラクト上のアドレスと外部所有アカウント(EOA)に含まれるアドレスを区別するために使われます。 これは、直接の呼び出しとコントラクトのコンストラクタで作成した呼び出しを区別できないため完全なソリューションとは言えませんが、少なくとも、よくあるユーザーエラーを特定、防止することは可能です。 @@ -494,12 +493,12 @@ import { Address } from "@openzeppelin/contracts/utils/Address.sol"; import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; ``` -[ERC-20 標準](https://eips.ethereum.org/EIPS/eip-20)では、コントラクトが実行失敗を報告する手段として以下の 2 つがあります: +[ERC-20標準](https://eips.ethereum.org/EIPS/eip-20)では、コントラクトが実行失敗を報告する手段として以下の2つがあります: 1. 元に戻す 2. `false`を返す -両方のケースに対応するとコードがより複雑になるため、代わりに[OpenZeppelin の`SafeERC20`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol)を使用します。これにより、[失敗した場合は常に元に戻されます](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol#L96)。 +両方のケースに対応するとコードがより複雑になるため、代わりに[OpenZeppelinの`SafeERC20`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol)を使用します。これにより、[失敗した場合は常に元に戻されます](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol#L96)。 ```solidity /** @@ -532,7 +531,7 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { mapping(address => mapping(address => uint256)) public deposits; ``` -[2 次元スパース配列](https://en.wikipedia.org/wiki/Sparse_matrix)を定義するには、このようなダブル[マッピング](https://www.tutorialspoint.com/solidity/solidity_mappings.htm)を用います。 このデータ構造の値は、`deposit[L1 token addr][L2 token addr]`として識別されます。 初期値はゼロになります。 ゼロ以外の値が設定されたセルのみが、ストレージに書き込まれます。 +[2次元スパース配列](https://en.wikipedia.org/wiki/Sparse_matrix)を定義するには、このようなダブル[マッピング](https://www.tutorialspoint.com/solidity/solidity_mappings.htm)を用います。 このデータ構造の値は、`deposit[L1 token addr][L2 token addr]`として識別されます。 初期値はゼロになります。 ゼロ以外の値が設定されたセルのみが、ストレージに書き込まれます。 ```solidity @@ -544,9 +543,9 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { constructor() CrossDomainEnabled(address(0)) {} ``` -ストレージ内のすべての変数をコピーせずに、このコントラクトを更新するには、 [`プロキシ`](https://docs.openzeppelin.com/contracts/3.x/api/proxy)を使用します。プロキシは、[`delegatecall`](https://solidity-by-example.org/delegatecall/)を用いて、プロキシのコントラクトにおいてアドレスが保存された別個のコントラクトに対して呼び出しを転送するものです(コントラクトを更新する際に、プロキシに対してこのアドレスを変更するように指示することになります)。 「`delegatecall`」を使用すると、ストレージは、*呼び出し元の*コントラクトのストレージのままになるため、すべてのコントラクト状態変数の値は影響を受けません。 +ストレージ内のすべての変数をコピーせずに、このコントラクトを更新するには、 [`プロキシ`](https://docs.openzeppelin.com/contracts/3.x/api/proxy)を使用します。プロキシは、[`delegatecall`](https://solidity-by-example.org/delegatecall/)を用いて、プロキシのコントラクトにおいてアドレスが保存された別個のコントラクトに対して呼び出しを転送するものです(コントラクトを更新する際に、プロキシに対してこのアドレスを変更するように指示することになります)。 「`delegatecall`」を使用すると、ストレージは、_呼び出し元の_コントラクトのストレージのままになるため、すべてのコントラクト状態変数の値は影響を受けません。 -このパターンを用いる効果のひとつとして、`delegatecall`の*呼び出し先*であるコントラクトのストレージが使用されないため、送信されたコンストラクタの値が意味を持たない点が挙げられます。 これこそ、`CrossDomainEnabled`のコンストラクタに対して無意味な値を入力できる理由です。 同時に、以下の初期化がコンストラクタとは別個に存在するである理由でもあります。 +このパターンを用いる効果のひとつとして、`delegatecall`の_呼び出し先_であるコントラクトのストレージが使用されないため、送信されたコンストラクタの値が意味を持たない点が挙げられます。 これこそ、`CrossDomainEnabled`のコンストラクタに対して無意味な値を入力できる理由です。 同時に、以下の初期化がコンストラクタとは別個に存在するである理由でもあります。 ```solidity /****************** @@ -560,18 +559,18 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { // slither-disable-next-line external-function ``` -この[Slither のテスト](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external)は、コントラクトのコードにより呼び出される関数以外の関数であり、`public`ではなく、`external`と宣言される関数を特定するものです。 `external`関数のガス代は、コールデータに含まれるパラメータで指定できるため、安価に抑えることができます。 `public`と宣言された関数は、コントラクト内でアクセス可能である必要があります。 コントラクトはそれ自体のコールデータを変更できないため、パラメータはメモリに保存する必要があります。 このような関数を外部から呼び出す場合、コールデータをメモリにコピーする必要があるため、ガス代が発生します。 今回は関数を 1 回のみ呼び出すため、コスト上の非効率性は度外視できます。 +この[Slitherのテスト](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external)は、コントラクトのコードにより呼び出される関数以外の関数であり、`public`ではなく、`external`と宣言される関数を特定するものです。 `external`関数のガス代は、コールデータに含まれるパラメータで指定できるため、安価に抑えることができます。 `public`と宣言された関数は、コントラクト内でアクセス可能である必要があります。 コントラクトはそれ自体のコールデータを変更できないため、パラメータはメモリに保存する必要があります。 このような関数を外部から呼び出す場合、コールデータをメモリにコピーする必要があるため、ガス代が発生します。 今回は関数を1回のみ呼び出すため、コスト上の非効率性は度外視できます。 ```solidity function initialize(address _l1messenger, address _l2TokenBridge) public { require(messenger == address(0), "Contract has already been initialized."); ``` -`initialize`関数は、1 回だけ呼び出す必要があります。 L1 のクロスドメイン・メッセンジャーまたは L2 のトークンブリッジのいずれかのアドレスが変更されると、新しいプロキシとそれを呼び出す新しいブリッジが作成されます。 これは、システム全体がアップグレードされた場合を除いて発生する可能性は低く、非常にまれです。 +`initialize`関数は、1回だけ呼び出す必要があります。 L1のクロスドメイン・メッセンジャーまたは L2のトークンブリッジのいずれかのアドレスが変更されると、新しいプロキシとそれを呼び出す新しいブリッジが作成されます。 これは、システム全体がアップグレードされた場合を除いて発生する可能性は低く、非常にまれです。 -この関数には、呼び出し可能な*アカウント*を制限するメカニズムが含まれない点に注意してください。 つまり理論的には、ネットワークに対する攻撃者は、プロキシとブリッジの最初のバージョンがデプロイされるまで待機し、正当なユーザーが`initialize`関数にアクセスできる前に[フロントラン](https://solidity-by-example.org/hacks/front-running/)を実行することが可能です。 これを防ぐには、以下の 2 つの方法があります: +この関数には、呼び出し可能な_アカウント_を制限するメカニズムが含まれない点に注意してください。 つまり理論的には、ネットワークに対する攻撃者は、プロキシとブリッジの最初のバージョンがデプロイされるまで待機し、正当なユーザーが`initialize`関数にアクセスできる前に[フロントラン](https://solidity-by-example.org/hacks/front-running/)を実行することが可能です。 これを防ぐには、以下の2つの方法があります: -1. コントラクトが EOA により直接デプロイされるのではなく、[別のコントラクトが作成したトランザクションにおいて](https://medium.com/upstate-interactive/creating-a-contract-with-a-smart-contract-bdb67c5c8595)デプロイされる場合、全体のプロセスがアトミックになり、他のトランザクションが実行される前に終了する場合があります。 +1. コントラクトがEOAにより直接デプロイされるのではなく、[別のコントラクトが作成したトランザクションにおいて](https://medium.com/upstate-interactive/creating-a-contract-with-a-smart-contract-bdb67c5c8595)デプロイされる場合、全体のプロセスがアトミックになり、他のトランザクションが実行される前に終了する場合があります。 2. 正当な`initialize`呼び出しが失敗した場合、常に、新たに作成されたプロキシおよびブリッジを無視し、さらに新しいものを作成することが可能です。 ```solidity @@ -580,7 +579,7 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { } ``` -これらは、ブリッジが知る必要がある 2 つのパラメータです。 +これらは、ブリッジが知る必要がある2つのパラメータです。 ```solidity @@ -598,7 +597,7 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { } ``` -これは、OpenZeppelin の`Address`ユーティリティが必要となる理由です。 +これは、OpenZeppelinの`Address`ユーティリティが必要となる理由です。 ```solidity /** @@ -634,7 +633,7 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { } ``` -これら 2 つの関数は、実際の ETH 入金を処理する関数である`_initiateETHDeposit`に関連したラッパーです。 +これら2つの関数は、実際のETH入金を処理する関数である`_initiateETHDeposit`に関連したラッパーです。 ```solidity /** @@ -657,7 +656,7 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { bytes memory message = abi.encodeWithSelector( ``` -クロスドメインのメッセージは、メッセージをコールデータとして宛先のコントラクトを呼び出す仕組みとして機能します。 Solidity のコントラクトは常に、コールデータを[ABI 仕様](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html)に従って解釈します。 Solidity の[`abi.encodeWithSelector`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#abi-encoding-and-decoding-functions)は、このコールデータを作成するものです。 +クロスドメインのメッセージは、メッセージをコールデータとして宛先のコントラクトを呼び出す仕組みとして機能します。 Solidityのコントラクトは常に、コールデータを[ABI仕様](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html)に従って解釈します。 Solidityの[`abi.encodeWithSelector`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#abi-encoding-and-decoding-functions)は、このコールデータを作成するものです。 ```solidity IL2ERC20Bridge.finalizeDeposit.selector, @@ -672,14 +671,14 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { ここでのメッセージは、[ `finalizeDeposit`関数](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol#L141-L148)を以下のパラメータで呼び出すことです。 -| パラメータ | 値 | 説明 | -| ---------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| \_l1Token | address(0) | L1 上の ETH (ERC-20 トークンではない) を表す特別な値 | -| \_l2Token | Lib_PredeployAddresses.OVM_ETH | Optimism 上で ETH を管理する L2 のコントラクト`0xDeadDeAddeAddEAddeadDEaDDeaDDeAD0000` (このコントラクトは、Optimism 内部でのみ使用されます) | -| \_from | \_from | L1 上の ETH 送信元アドレス | -| \_to | \_to | L2 上の ETH 受領用アドレス | -| amount | msg.value | 送信された wei 額(すでにブリッジに送信済みの額) | -| \_data | \_data | 入金に添付する追加の日付 | +| パラメータ | 値 | 説明 | +| ----------- | -------------------------------- | --------------------------------------------------------------------------------------------------- | +| \_l1Token | address(0) | L1上のETH (ERC-20トークンではない) を表す特別な値 | +| \_l2Token | Lib_PredeployAddresses.OVM_ETH | Optimism上でETHを管理するL2のコントラクト`0xDeadDeAddeAddEAddeadDEaDDeaDDeAD0000` (このコントラクトは、Optimism内部でのみ使用されます) | +| \_from | \_from | L1上のETH送信元アドレス | +| \_to | \_to | L2上のETH受領用アドレス | +| amount | msg.value | 送信されたwei額(すでにブリッジに送信済みの額) | +| \_data | \_data | 入金に添付する追加の日付 | ```solidity // Send calldata into L2 @@ -703,8 +702,8 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { */ function depositERC20( . - . - . + 。 + 。 ) external virtual onlyEOA { _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, msg.sender, _amount, _l2Gas, _data); } @@ -714,14 +713,14 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { */ function depositERC20To( . - . - . + 。 + 。 ) external virtual { _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, _to, _amount, _l2Gas, _data); } ``` -これら 2 つの関数は、実際の ERC-20 トークンの入金を処理する関数である`_initiateERC20Deposit`に関連したラッパーです。 +これら2つの関数は、実際のERC-20トークンの入金を処理する関数である`_initiateERC20Deposit`に関連したラッパーです。 ```solidity /** @@ -749,7 +748,7 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { ) internal { ``` -この関数は、上記の`_initiateETHDeposit`に似ていますが、いくつかの重要な点が異なります。 最大の違いは、この関数では、トークンのアドレスおよび送信額をパラメータとして受け取るという点です。 ETH の場合、ブリッジへの呼び出しにはすでに、ブリッジアカウントへの資産の移転(`msg.value`)が含まれています。 +この関数は、上記の`_initiateETHDeposit`に似ていますが、いくつかの重要な点が異なります。 最大の違いは、この関数では、トークンのアドレスおよび送信額をパラメータとして受け取るという点です。 ETHの場合、ブリッジへの呼び出しにはすでに、ブリッジアカウントへの資産の移転(`msg.value`)が含まれています。 ```solidity // When a deposit is initiated on L1, the L1 Bridge transfers the funds to itself for future @@ -759,13 +758,13 @@ contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled { IERC20(_l1Token).safeTransferFrom(_from, address(this), _amount); ``` -ERC-20 トークンについては、ETH の場合とは異なる送信プロセスが実行されます: +ERC-20トークンについては、ETHの場合とは異なる送信プロセスが実行されます: 1. ユーザー(`_from`)は、ブリッジに対し、送信したいトークン量に見合ったアローワンスを与えます。 2. 次に、トークンコントラクトのアドレスや金額等で、ブリッジを呼び出します。 3. ブリッジは、入金プロセスの一環として、トークンをブリッジ自体に送信します。 -最初のステップは、第 2、3 のステップとは別のトランザクションで実行しても構いません。 ただし、`_initiateERC20Deposit`を呼び出す 2 つの関数 (`depositERC20`と`depositERC20To`)は、`_from`をパラメータとして`msg.sender`を含むこの関数を呼び出すだけなので、フロントランニングの問題は発生しません。 +最初のステップは、第2、3のステップとは別のトランザクションで実行しても構いません。 ただし、`_initiateERC20Deposit`を呼び出す 2 つの関数 (`depositERC20`と`depositERC20To`)は、`_from`をパラメータとして`msg.sender`を含むこの関数を呼び出すだけなので、フロントランニングの問題は発生しません。 ```solidity // Construct calldata for _l2Token.finalizeDeposit(_to, _amount) @@ -787,7 +786,7 @@ ERC-20 トークンについては、ETH の場合とは異なる送信プロセ deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] + _amount; ``` -`deposits`のデータ構造に、トークンの入金額を追加します。 L2 上には、L1 上にある同一の ERC-20 トークンに対応した複数のアドレスが存在する場合があるため、入金の推移を追跡するには、L1 上の ERC-20 トークンに関するブリッジ上の残高を参照するだけでは不十分です。 +`deposits`のデータ構造に、トークンの入金額を追加します。 L2上には、L1上にある同一のERC-20トークンに対応した複数のアドレスが存在する場合があるため、入金の推移を追跡するには、L1上のERC-20トークンに関するブリッジ上の残高を参照するだけでは不十分です。 ```solidity @@ -809,20 +808,20 @@ ERC-20 トークンについては、ETH の場合とは異なる送信プロセ bytes calldata _data ``` -L2 のブリッジは、L2 のクロスドメイン・メッセンジャーに対して、L1 のクロスドメイン・メッセンジャーがこの関数を呼び出すことを指示するメッセージを送信します(もちろん、L1 上で、[このメッセージを確定するトランザクション](https://community.optimism.io/docs/developers/bridge/messaging/#fees-for-l2-%E2%87%92-l1-transactions)が送信された後においてです)。 +L2のブリッジは、L2のクロスドメイン・メッセンジャーに対して、L1のクロスドメイン・メッセンジャーがこの関数を呼び出すことを指示するメッセージを送信します(もちろん、L1上で、[このメッセージを確定するトランザクション](https://community.optimism.io/docs/developers/bridge/messaging/#fees-for-l2-%E2%87%92-l1-transactions)が送信された後においてです)。 ```solidity ) external onlyFromCrossDomainAccount(l2TokenBridge) { ``` -このメッセージにつき、L2 のトークン・ブリッジで作成され、クロスドメイン・メッセンジャーを経由して送信された*正当な*メッセージであることを確認してください。 この関数は、ブリッジから ETH を出金するために使用するため、承認された呼び出し元だけが呼び出したことを確認する必要があります。 +このメッセージにつき、L2のトークン・ブリッジで作成され、クロスドメイン・メッセンジャーを経由して送信された_正当な_メッセージであることを確認してください。 この関数は、ブリッジからETHを出金するために使用するため、承認された呼び出し元だけが呼び出したことを確認する必要があります。 ```solidity // slither-disable-next-line reentrancy-events (bool success, ) = _to.call{ value: _amount }(new bytes(0)); ``` -ETH を送信するには、`msg.value`で wei 金額を指定して、受領者を呼び出します。 +ETHを送信するには、`msg.value`でwei金額を指定して、受領者を呼び出します。 ```solidity require(success, "TransferHelper::safeTransferETH: ETH transfer failed"); @@ -849,7 +848,7 @@ ETH を送信するには、`msg.value`で wei 金額を指定して、受領者 ) external onlyFromCrossDomainAccount(l2TokenBridge) { ``` -この関数は、上記の `finalizeETHWithdrawal`関数に類似していますが、ERC-20 トークンに関する事項が異なります。 +この関数は、上記の `finalizeETHWithdrawal`関数に類似していますが、ERC-20トークンに関する事項が異なります。 ```solidity deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] - _amount; @@ -882,15 +881,15 @@ ETH を送信するには、`msg.value`で wei 金額を指定して、受領者 } ``` -このブリッジは、従来の実装から変更されています。 以前の実装から現在の実装に移行した際に、すべての資産を移転させる必要がありました。 ERC-20 トークンについては、移転のみが可能でした。 一方、ETH をコントラクトに移転するには、そのコントラクトの承認が必要であり、これは`donateETH`で実行できます。 +このブリッジは、従来の実装から変更されています。 以前の実装から現在の実装に移行した際に、すべての資産を移転させる必要がありました。 ERC-20トークンについては、移転のみが可能でした。 一方、ETHをコントラクトに移転するには、そのコントラクトの承認が必要であり、これは`donateETH`で実行できます。 -## L2 上の ERC-20 トークン {#erc-20-tokens-on-l2} +## L2上のERC-20トークン {#erc-20-tokens-on-l2} -ERC-20 トークンを標準ブリッジに適合させるためには、標準ブリッジ*のみが*トークンをミントできるようにする必要があります。 これが必要になるのは、各ブリッジにおいて、Optimism 上で流通するトークンの数が L1 のブリッジコントラクト内でロックされたトークンの数と一致することを保証する必要があるためです。 L2 上のトークンが多すぎる場合、L2 上のアセット L1 にブリッジして戻すことができないユーザーが発生します。 この場合、信頼できるブリッジが存在せず、事実上、[部分準備銀行制度](https://www.investopedia.com/terms/f/fractionalreservebanking.asp)を生み出すことになってしまいます。 一方、L1 上でのトークンが多くなりすぎると、L2 トークンをバーンしない限りトークンをリリースできなくなるため、ブリッジコントラクト内の一部のトークンは永遠にロックされた状態になってしまいます。 +ERC-20トークンを標準ブリッジに適合させるためには、標準ブリッジ_のみが_トークンをミントできるようにする必要があります。 これが必要になるのは、各ブリッジにおいて、Optimism上で流通するトークンの数がL1のブリッジコントラクト内でロックされたトークンの数と一致することを保証する必要があるためです。 L2上のトークンが多すぎる場合、L2上のアセットL1にブリッジして戻すことができないユーザーが発生します。 この場合、信頼できるブリッジが存在せず、事実上、[部分準備銀行制度](https://www.investopedia.com/terms/f/fractionalreservebanking.asp)を生み出すことになってしまいます。 一方、L1上でのトークンが多くなりすぎると、L2トークンをバーンしない限りトークンをリリースできなくなるため、ブリッジコントラクト内の一部のトークンは永遠にロックされた状態になってしまいます。 ### IL2StandardERC20 {#il2standarderc20} -標準ブリッジを使用する L2 上のすべての ERC-20 トークンは、標準ブリッジが必要とする関数およびイベントが搭載された[このインターフェイス](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/IL2StandardERC20.sol)を提供する必要があります。 +標準ブリッジを使用するL2上のすべてのERC-20トークンは、標準ブリッジが必要とする関数およびイベントが搭載された[このインターフェイス](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/IL2StandardERC20.sol)を提供する必要があります。 ```solidity // SPDX-License-Identifier: MIT @@ -899,20 +898,20 @@ pragma solidity ^0.8.9; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; ``` -[ERC-20 に対する標準インターフェイス](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)には、`mint`および`burn`関数が含まれません。 これらのメソッドは、[ERC-20 標準](https://eips.ethereum.org/EIPS/eip-20)において必須でないため、トークンを作成、破壊するメカニズムは指定されていないのです。 +[ERC-20に対する標準インターフェイス](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)には、`mint`および`burn`関数が含まれません。 これらのメソッドは、[ERC-20標準](https://eips.ethereum.org/EIPS/eip-20)において必須でないため、トークンを作成、破壊するメカニズムは指定されていないのです。 ```solidity import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; ``` -[ERC-165 インターフェイス](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol)は、コントラクトが提供する機能を特定するために用います。 [この標準については、こちらで読むことができます](https://eips.ethereum.org/EIPS/eip-165)。 +[ERC-165インターフェイス](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol)は、コントラクトが提供する機能を特定するために用います。 [この標準については、こちらで読むことができます](https://eips.ethereum.org/EIPS/eip-165)。 ```solidity interface IL2StandardERC20 is IERC20, IERC165 { function l1Token() external returns (address); ``` -この関数は、このコントラクトに対してブリッジされた L1 上のトークンアドレスを提供するものです。 同じ機能の逆方向の関数が存在しない点に注意してください。 L1 上のトークンについては、L2 のサポートが計画されていたか、あるいはいつ実装されたかを問わず、常にブリッジ可能である必要があります。 +この関数は、このコントラクトに対してブリッジされた L1上のトークンアドレスを提供するものです。 同じ機能の逆方向の関数が存在しない点に注意してください。 L1上のトークンについては、L2のサポートが計画されていたか、あるいはいつ実装されたかを問わず、常にブリッジ可能である必要があります。 ```solidity @@ -925,7 +924,7 @@ interface IL2StandardERC20 is IERC20, IERC165 { } ``` -トークンをミント (作成) およびバーン (破棄) するための関数とイベントです。 トークン数が適切である(L1 上でロックされたトークン数と一致する)ことを保証するため、これらの関数を実行できるのはこのブリッジのみである必要があります。 +トークンをミント (作成) およびバーン (破棄) するための関数とイベントです。 トークン数が適切である(L1上でロックされたトークン数と一致する)ことを保証するため、これらの関数を実行できるのはこのブリッジのみである必要があります。 ### L2StandardERC20 {#L2StandardERC20} @@ -938,7 +937,7 @@ pragma solidity ^0.8.9; import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; ``` -[OpenZeppelin で作成した ERC-20 コントラクト](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)です。 Optimism では、既存の機能がよく監査され、資産を保持する上で十分信頼できる場合は、新たな機能を追加すべきではないと考えています。 +[OpenZeppelinで作成したERC-20コントラクト](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)です。 Optimismでは、既存の機能がよく監査され、資産を保持する上で十分信頼できる場合は、新たな機能を追加すべきではないと考えています。 ```solidity import "./IL2StandardERC20.sol"; @@ -948,7 +947,7 @@ contract L2StandardERC20 is IL2StandardERC20, ERC20 { address public l2Bridge; ``` -これらは、通常 ERC-20 では必要になりませんが、ここでは追加で必要となる 2 つの設定パラメータです。 +これらは、通常ERC-20では必要になりませんが、ここでは追加で必要となる2つの設定パラメータです。 ```solidity @@ -989,11 +988,11 @@ contract L2StandardERC20 is IL2StandardERC20, ERC20 { } ``` -[ERC-165](https://eips.ethereum.org/EIPS/eip-165)は、このように動作します。 各インターフェイスは、サポートする一連の関数を含んでおり、これらの機能の[exclusive](https://en.wikipedia.org/wiki/Exclusive_or)または[ABI 関数セレクタ](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html#function-selector)として特定されます。 +[ERC-165](https://eips.ethereum.org/EIPS/eip-165)は、このように動作します。 各インターフェイスは、サポートする一連の関数を含んでおり、これらの機能の[exclusive](https://en.wikipedia.org/wiki/Exclusive_or)または[ABI関数セレクタ](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html#function-selector)として特定されます。 -L2 のブリッジは、ERC-165 を健全性チェックとして用いて、資産を送信するのに用いる ERC-20 コントラクトが `IL2StandardERC20`であるか確認します。 +L2のブリッジは、ERC-165を健全性チェックとして用いて、資産を送信するのに用いるERC-20コントラクトが `IL2StandardERC20`であるか確認します。 -\*\*注意:不正なコントラクトが`supportsInterface`に対して虚偽の値を返すことを防ぐメカニズムは含まれていないため、これはセキュリティ保護のメカニズム*ではなく*、健全性チェックのメカニズムです。 +**注意:不正なコントラクトが`supportsInterface`に対して虚偽の値を返すことを防ぐメカニズムは含まれていないため、これはセキュリティ保護のメカニズム_ではなく_、健全性チェックのメカニズムです。

```solidity // slither-disable-next-line external-function @@ -1012,13 +1011,13 @@ L2 のブリッジは、ERC-165 を健全性チェックとして用いて、資 } ``` -資産をミント/バーンできるのは、L2 のブリッジのみです。 +資産をミント/バーンできるのは、L2のブリッジのみです。 -`_mint`および`_burn`は、実際には、[OpenZeppelin で作成した ERC-20 コントラクト](/developers/tutorials/erc20-annotated-code/#the-_mint-and-_burn-functions-_mint-and-_burn)で定義されています。 トークンをミント/バーンできる条件は、ERC-20 を使用する方法と同じように多種多様であるため、このコントラクトは単純に外部に露出していないのです。 +`_mint`および`_burn`は、実際には、[OpenZeppelinで作成したERC-20コントラクト](/developers/tutorials/erc20-annotated-code/#the-_mint-and-_burn-functions-_mint-and-_burn)で定義されています。 トークンをミント/バーンできる条件は、ERC-20を使用する方法と同じように多種多様であるため、このコントラクトは単純に外部に露出していないのです。 -## L2 ブリッジのコード {#l2-bridge-code} +## L2ブリッジのコード {#l2-bridge-code} -これは、Optimism でブリッジを実行するコードです。 このコントラクトのソースコードは、[こちら](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol)から入手できます。 +これは、Optimismでブリッジを実行するコードです。 このコントラクトのソースコードは、[こちら](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol)から入手できます。 ```solidity // SPDX-License-Identifier: MIT @@ -1030,10 +1029,10 @@ import { IL1ERC20Bridge } from "../../L1/messaging/IL1ERC20Bridge.sol"; import { IL2ERC20Bridge } from "./IL2ERC20Bridge.sol"; ``` -[IL2ERC20Bridge](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol)のインターフェースは、上述した[L1 用のインターフェイス](#IL1ERC20Bridge)とほぼ同様ですが、 以下の 2 点が大きく異なります。 +[IL2ERC20Bridge](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol)のインターフェースは、上述した[L1用のインターフェイス](#IL1ERC20Bridge)とほぼ同様ですが、 以下の2点が大きく異なります。 -1. L1 では、あなたが入金を開始し、出金を確定します。 L2 の場合、あなたは出金を開始し、入金を確定します。 -2. L1 では、ETH と ERC-20 トークンを区別する必要があります。 L2 では、Optimism 上の ETH 残高は内部で、アドレス「[0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000](https://optimistic.etherscan.io/address/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000)」の ERC-20 トークンとして処理されるため、両方で同じ関数を使います。 +1. L1では、あなたが入金を開始し、出金を確定します。 L2の場合、あなたは出金を開始し、入金を確定します。 +2. L1では、ETHとERC-20トークンを区別する必要があります。 L2では、Optimism上のETH残高は内部で、アドレス「[0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000](https://optimistic.etherscan.io/address/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000)」のERC-20トークンとして処理されるため、両方で同じ関数を使います。 ```solidity /* Library Imports */ @@ -1061,7 +1060,7 @@ contract L2StandardBridge is IL2ERC20Bridge, CrossDomainEnabled { address public l1TokenBridge; ``` -これは、L1 ブリッジのアドレスを追跡する関数です。 L1 用のブリッジの場合とは異なり、この変数は*必須*です。 L1 ブリッジのアドレスは、事前に知ることはできません。 +これは、L1ブリッジのアドレスを追跡する関数です。 L1用のブリッジの場合とは異なり、この変数は_必須_です。 L1ブリッジのアドレスは、事前に知ることはできません。 ```solidity @@ -1109,7 +1108,7 @@ contract L2StandardBridge is IL2ERC20Bridge, CrossDomainEnabled { } ``` -これら 2 つの関数は、出金を開始するものです。 L1 上のトークンアドレスを指定する必要がない点に注意してください。 L1 上で対応するトークンのアドレスは、L2 トークンが伝達するからです。 +これら2つの関数は、出金を開始するものです。 L1上のトークンアドレスを指定する必要がない点に注意してください。 L1上で対応するトークンのアドレスは、L2トークンが伝達するからです。 ```solidity @@ -1139,7 +1138,7 @@ contract L2StandardBridge is IL2ERC20Bridge, CrossDomainEnabled { IL2StandardERC20(_l2Token).burn(msg.sender, _amount); ``` -`_from`パラメータに依存*するのではなく*、`msg.sender`を使用する点に注意してください。これにより、偽造がより困難になります(私の知る限り、不可能です)。 +`_from`パラメータに依存_するのではなく_、`msg.sender`を使用する点に注意してください。これにより、偽造がより困難になります(私の知る限り、不可能です)。 ```solidity @@ -1151,7 +1150,7 @@ contract L2StandardBridge is IL2ERC20Bridge, CrossDomainEnabled { if (_l2Token == Lib_PredeployAddresses.OVM_ETH) { ``` -L1 では、ETH と ERC-20 トークンを区別する必要があります。 +L1では、ETHとERC-20トークンを区別する必要があります。 ```solidity message = abi.encodeWithSelector( @@ -1203,7 +1202,7 @@ L1 では、ETH と ERC-20 トークンを区別する必要があります。 ) external virtual onlyFromCrossDomainAccount(l1TokenBridge) { ``` -メッセージの発信元が適切であることを確認します。 この関数は、`_mint`を呼び出すものであり、L1 上でブリッジが所有するトークンに含まれないトークンを提供するために使用できるため、重要です。 +メッセージの発信元が適切であることを確認します。 この関数は、`_mint`を呼び出すものであり、L1上でブリッジが所有するトークンに含まれないトークンを提供するために使用できるため、重要です。 ```solidity // Check the target token is compliant and @@ -1217,7 +1216,7 @@ L1 では、ETH と ERC-20 トークンを区別する必要があります。 以下の健全性チェックを実行してください: 1. 正しいインターフェースがサポートされていること。 -2. L2 上の ERC-20 コントラクトにおける L1 アドレスが、L1 上のトークンソースと一致すること。 +2. L2上のERC-20コントラクトにおけるL1アドレスが、L1上のトークンソースと一致すること。 ```solidity ) { @@ -1246,7 +1245,7 @@ L1 では、ETH と ERC-20 トークンを区別する必要があります。 // user error and mitigate some forms of malicious contract behavior. ``` -L2 のトークンアドレスが間違っており、検知可能なエラーが発生した場合、入金をキャンセルし、トークンを L1 に返却する必要があります。 これを L2 から実行する唯一の方法は、不正申し立て期間が経過してからメッセージを送信することですが、それでも、トークンを永遠に失うよりは、ユーザーにとってははるかにベターな選択でしょう。 +L2のトークンアドレスが間違っており、検知可能なエラーが発生した場合、入金をキャンセルし、トークンをL1に返却する必要があります。 これをL2から実行する唯一の方法は、不正申し立て期間が経過してからメッセージを送信することですが、それでも、トークンを永遠に失うよりは、ユーザーにとってははるかにベターな選択でしょう。 ```solidity bytes memory message = abi.encodeWithSelector( @@ -1271,8 +1270,8 @@ L2 のトークンアドレスが間違っており、検知可能なエラー ## まとめ {#conclusion} -標準ブリッジは、アセットを移転する上で最も柔軟なメカニズムです。 しかし、汎用性が高いため、必ずしも使いやすいメカニズムではない場合もあります。 特に出金については、大部分のユーザーは、異議申し立て期間が存在せず、出金を最終確認するために Merkle プルーフを必要としない[サードパーティーのブリッジ](https://www.optimism.io/apps/bridges)を使いたいと考えるでしょう。 +標準ブリッジは、アセットを移転する上で最も柔軟なメカニズムです。 しかし、汎用性が高いため、必ずしも使いやすいメカニズムではない場合もあります。 特に出金については、大部分のユーザーは、異議申し立て期間が存在せず、出金を最終確認するためにMerkleプルーフを必要としない[サードパーティーのブリッジ](https://www.optimism.io/apps/bridges)を使いたいと考えるでしょう。 -サードパーティのブリッジは通常、少額の手数料(標準ブリッジの出金にかかるガス代よりも安価な場合が多いです)で、L1 上でアセットを保持する機能を提供します。 ブリッジ(または、ブリッジを稼働するスタッフ)が L1 上での資産不足を予想する場合、L2 から必要な資産が移転されます。 これらは非常に大規模な出金になるため、出金コストは高額を対象として償却され、手数料が全体に占める割合が非常に低くなります。 +サードパーティのブリッジは通常、少額の手数料(標準ブリッジの出金にかかるガス代よりも安価な場合が多いです)で、L1上でアセットを保持する機能を提供します。 ブリッジ(または、ブリッジを稼働するスタッフ)がL1上での資産不足を予想する場合、L2から必要な資産が移転されます。 これらは非常に大規模な出金になるため、出金コストは高額を対象として償却され、手数料が全体に占める割合が非常に低くなります。 -この記事が、レイヤー 2 の仕組みと、明確で安全な Solidity コードの書き方について、より理解を深めることに役立つことを願っています。 +この記事が、レイヤー2の仕組みと、明確で安全なSolidityコードの書き方について、より理解を深めることに役立つことを願っています。 diff --git a/public/content/translations/ja/developers/tutorials/reverse-engineering-a-contract/index.md b/public/content/translations/ja/developers/tutorials/reverse-engineering-a-contract/index.md index 8c9b3f17afe..66a13e99b02 100644 --- a/public/content/translations/ja/developers/tutorials/reverse-engineering-a-contract/index.md +++ b/public/content/translations/ja/developers/tutorials/reverse-engineering-a-contract/index.md @@ -662,7 +662,7 @@ def unknown2e7ba6ef(uint256 _param1, uint256 _param2, uint256 _param3, array _pa 下の2行は、Storage[2] も呼び出すコントラクトであることを示しています。 [コンストラクタのトランザクションを見ると](https://etherscan.io/tx/0xa1ea0549fb349eb7d3aff90e1d6ce7469fdfdcd59a2fd9b8d1f5e420c0d05b58#statechange)、このコントラクトは[0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2)であり、[ソースコードがEtherscanにアップロードされている](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#code)ラップドイーサ(WETH)コントラクトであることが分かります。 -このコントラクトは、`_param2`にETHを送金しようとしていると思われます。 送金できれば問題ありません。 送金できない場合は、[ラップドイーサ(WETH)](https://weth.tkn.eth.limo/)を送金しようとします。 `_param2`が外部所有アカウント(EOA)である場合、必ずETHを受け取ることができますが、コントラクトはETHの受け取りを拒否することができます。 しかし、ラップドイーサ(WETH)はERC-20であるため、コントラクトは受け取りを拒否できません。 +このコントラクトは、`_param2`にETHを送金しようとしていると思われます。 送金できれば問題ありません。 送金できない場合は、[ラップドイーサ(WETH)](https://weth.io/)を送金しようとします。 `_param2`が外部所有アカウント(EOA)である場合、必ずETHを受け取ることができますが、コントラクトはETHの受け取りを拒否することができます。 しかし、ラップドイーサ(WETH)はERC-20であるため、コントラクトは受け取りを拒否できません。 ```python ... diff --git a/public/content/translations/ja/developers/tutorials/run-node-raspberry-pi/index.md b/public/content/translations/ja/developers/tutorials/run-node-raspberry-pi/index.md index d892d0f9b91..e45b9dfffcb 100644 --- a/public/content/translations/ja/developers/tutorials/run-node-raspberry-pi/index.md +++ b/public/content/translations/ja/developers/tutorials/run-node-raspberry-pi/index.md @@ -63,10 +63,9 @@ Raspberry Pi 4のイーサリアムイメージは、「プラグ・アンド・ [Ethereum on Arm](https://ethereumonarm-my.sharepoint.com/:u:/p/dlosada/Ec_VmUvr80VFjf3RYSU-NzkBmj2JOteDECj8Bibde929Gw?download=1)からRaspberry Piイメージをダウンロードし、次のようにSHA256ハッシュを確認してください。 ```sh -# ダウンロードしたイメージがあるディレクトリで以下を実行します。 +# From directory containing the downloaded image shasum -a 256 ethonarm_22.04.00.img.zip -# ハッシュは以下である必要があります。 -fb497e8f8a7388b62d6e1efbc406b9558bee7ef46ec7e53083630029c117444f +# Hash should output: fb497e8f8a7388b62d6e1efbc406b9558bee7ef46ec7e53083630029c117444f ``` Rock 5BとOdroid M1ボードのイメージは、Ethereum-on-Armの[ダウンロードページ](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/quick-guide/download-and-install.html)から入手可能です。 @@ -76,7 +75,7 @@ Rock 5BとOdroid M1ボードのイメージは、Ethereum-on-Armの[ダウンロ Raspberry Piで使用するマイクロSDカードは、まずデスクトップパソコンかノートパソコンに挿入して書き込む必要があります。 以下のターミナルコマンドで、ダウンロードしたイメージをSDカードに書き込みます。 ```shell -# マイクロSDカード名の確認 +# check the MicroSD card name sudo fdisk -l >> sdxxx @@ -147,13 +146,13 @@ cd && deposit new-mnemonic --num_validators 1 Raspberry Piに戻ると、バリデータが開始可能になります。 これには、バリデータキーのインポート、報酬を受け取るためのアドレスの設定、事前設定されたバリデータプロセスの開始が必要になります。 以下は、ライトハウス向けの例です。その他のコンセンサス クライアント向けの手順については、[Ethereum on Armのドキュメント](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)を参照してください。 ```shell -# バリデータキーのインポート +# import the validator keys lighthouse account validator import --directory=/home/ethereum/validator_keys -# 報酬受取アドレスの設定 +# set the reward address sudo sed -i 's/' /etc/ethereum/lighthouse-validator.conf -# バリデータの開始 +# start the validator sudo systemctl start lighthouse-validator ``` diff --git a/public/content/translations/ja/developers/tutorials/secure-development-workflow/index.md b/public/content/translations/ja/developers/tutorials/secure-development-workflow/index.md index 7b312f73b87..4b2392296aa 100644 --- a/public/content/translations/ja/developers/tutorials/secure-development-workflow/index.md +++ b/public/content/translations/ja/developers/tutorials/secure-development-workflow/index.md @@ -6,7 +6,7 @@ tags: - "スマートコントラクト" - "セキュリティ" - "Solidity" -skill: intermediate +skill: 中級 lang: ja published: 2020-09-07 source: セキュアなコントラクトの開発 diff --git a/public/content/translations/ja/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md b/public/content/translations/ja/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md index 91e21f3db05..5aca8cf8d59 100644 --- a/public/content/translations/ja/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md +++ b/public/content/translations/ja/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md @@ -13,39 +13,39 @@ sourceUrl: https://ethereumdev.io/setup-web3js-to-use-the-ethereum-blockchain-in address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE" --- -このチュートリアルでは、イーサリアム・ブロックチェーンでのやりとりで使用するために[web3.js](https://web3js.readthedocs.io/)を導入する方法を学びます。 Web3.js は、フロントエンドとバックエンドの両方において、ブロックチェーンからデータを読み取ったり、トランザクションを行ったり、スマートコントラクトをデプロイするために使用できます。 +このチュートリアルでは、イーサリアム・ブロックチェーンでのやりとりで使用するために[web3.js](https://web3js.readthedocs.io/)を導入する方法を学びます。 Web3.jsは、フロントエンドとバックエンドの両方において、ブロックチェーンからデータを読み取ったり、トランザクションを行ったり、スマートコントラクトをデプロイするために使用できます。 -まず最初に、あなたのプロジェクトに web3.js を追加する必要があります。 Web ページで使用するには、JSDeliver のような CDN を使用してライブラリを直接インポートしてください。 +まず最初に、あなたのプロジェクトにweb3.jsを追加する必要があります。 Webページで使用するには、JSDeliverのようなCDNを使用してライブラリを直接インポートしてください。 ```html ``` -バックエンドで使用するライブラリをインストールしたい場合や、ビルドが必要なフロントエンドのプロジェクトの場合は、 次のように npm を使用してインストールします。 +バックエンドで使用するライブラリをインストールしたい場合や、ビルドが必要なフロントエンドのプロジェクトの場合は、 次のようにnpmを使用してインストールします。 ```bash npm install web3 --save ``` -次に、Node.js のスクリプトや Browserify のフロントエンド・プロジェクトに Web3.js をインポートするには、以下の JavaScript コードを使用します: +次に、Node.jsのスクリプトやBrowserifyのフロントエンド・プロジェクトにWeb3.jsをインポートするには、以下のJavaScriptコードを使用します: ```js const Web3 = require("web3") ``` -プロジェクトにライブラリを追加したので、初期化する必要があります。 プロジェクトは、ブロックチェーンと通信できなければなりません。 イーサリアムのほとんどのライブラリは、リモートプロシージャーコール(RPC)を使って[ノード](/developers/docs/nodes-and-clients/)と通信します。 Web3 プロバイダを開始するには、プロバイダの URL をコンストラクタとして橋渡しする Web3 のインスタンスを生成します。 お使いのコンピュータで、ノードあるいは[Ganache インスタンス](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/)を実行中の場合は、以下のようになります: +プロジェクトにライブラリを追加したので、初期化する必要があります。 プロジェクトは、ブロックチェーンと通信できなければなりません。 イーサリアムのほとんどのライブラリは、リモートプロシージャーコール(RPC)を使って[ノード](/developers/docs/nodes-and-clients/)と通信します。 Web3プロバイダを開始するには、プロバイダのURLをコンストラクタとして橋渡しするWeb3のインスタンスを生成します。 お使いのコンピュータで、ノードあるいは[Ganacheインスタンス](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/)を実行中の場合は、以下のようになります: ```js const web3 = new Web3("http://localhost:8545") ``` -ホストされたノードに直接アクセスしたい場合は、Infura や、[Cloudflare](https://cloudflare-eth.com/)が提供する無料サービスを利用できます。 +ホストされているノードに直接アクセスしたい場合は、[ノード・アズ・ア・サービス](/developers/docs/nodes-and-clients/nodes-as-a-service)の一覧から見つけることができます。 ```js const web3 = new Web3("https://cloudflare-eth.com") ``` -Web3 インスタンスが正しく設定されたかをテストするために、 `getBlockNumber`関数を使用して、最新のブロック番号を取得してみましょう。 この関数は、コールバックをパラメータとして受け取り、ブロック番号を整数として返します。 +Web3インスタンスが正しく設定されたかをテストするために、 `getBlockNumber`関数を使用して、最新のブロック番号を取得してみましょう。 この関数は、コールバックをパラメータとして受け取り、ブロック番号を整数として返します。 ```js var Web3 = require("web3") @@ -68,15 +68,15 @@ async function getBlockNumber() { getBlockNumber() ``` -Web3 インスタンス上で利用可能なすべての関数は、 [web3.js の公式ドキュメンテーション](https://docs.web3js.org/)をご覧ください。 +Web3インスタンス上で利用可能なすべての関数は、 [web3.jsの公式ドキュメンテーション](https://docs.web3js.org/)をご覧ください。 -ほとんどの Web3 ライブラリでは、結果を送り返すノードに対してバックグラウンドで JSON RPC を呼び出すため、非同期で処理を行います。 +ほとんどのWeb3ライブラリでは、結果を送り返すノードに対してバックグラウンドでJSON RPCを呼び出すため、非同期で処理を行います。 -ブラウザで作業している場合、一部のウォレットは、Web3 インスタンスを直接注入します。トランザクションを行うためにユーザーのイーサリアムアドレスとやり取りを行う予定がある場合は特に、可能な限り`await/async`関数呼び出しを使用するようにしてください。 +ブラウザで作業している場合、一部のウォレットは、Web3インスタンスを直接注入します。トランザクションを行うためにユーザーのイーサリアムアドレスとやり取りを行う予定がある場合は特に、可能な限り`await/async`関数呼び出しを使用するようにしてください。 -以下のコードスニペットは、MetaMask ウォレットが利用可能か確認し、利用できる場合は有効化するものです。 その後、あなたはユーザーの残高を確認できるようになり、各ユーザーは、あなたが彼らにイーサリアムブロックチェーン上で実行させたいトランザクションを各自で検証できるようになります: +以下のコードスニペットは、MetaMaskウォレットが利用可能か確認し、利用できる場合は有効化するものです。 その後、あなたはユーザーの残高を確認できるようになり、各ユーザーは、あなたが彼らにイーサリアムブロックチェーン上で実行させたいトランザクションを各自で検証できるようになります: ```js if (window.ethereum != null) { @@ -91,4 +91,4 @@ if (window.ethereum != null) { } ``` -web3.js の代替として Ethers.js なども存在しますが、web3.js はブラウザからイーサリアムとやりとりする際の公式ライブラリですので、JavaScript に関するチュートリアルはすべて web3.js を使用します。 次のチュートリアルでは、[ブロックチェーンに新たに追加されたブロックを簡単にリッスンし、その内容を確認する方法](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/)を紹介します。 +他にも[Ethers.js](https://docs.ethers.io/) など、 web3.js のようにイーサリアム・ブロックチェーンとやりとりするライブラリがあります。 次のチュートリアルでは、[ブロックチェーンに新たに追加されたブロックを簡単にリッスンし、その内容を確認する方法](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/)を紹介します。 diff --git a/public/content/translations/ja/developers/tutorials/short-abi/index.md b/public/content/translations/ja/developers/tutorials/short-abi/index.md index e4a7df44104..e4c640ea6cc 100644 --- a/public/content/translations/ja/developers/tutorials/short-abi/index.md +++ b/public/content/translations/ja/developers/tutorials/short-abi/index.md @@ -5,8 +5,7 @@ author: Ori Pomerantz lang: ja tags: - "レイヤー2" - - "Optimism" -skill: intermediate +skill: 中級 published: 2022-04-01 --- @@ -16,56 +15,56 @@ published: 2022-04-01 ### 開示情報 {#full-disclosure} -筆者は、[Optimism](https://www.optimism.io/)のフルタイム従業員であり、この記事に含まれる実例はすべて Optimism で実行されます。 ただし、紹介するテクニックは他のロールアップでも問題なく実行できます。 +筆者は、[Optimism](https://www.optimism.io/)のフルタイム従業員であり、この記事に含まれる実例はすべてOptimismで実行されます。 ただし、紹介するテクニックは他のロールアップでも問題なく実行できます。 ### 用語 {#terminology} -ロールアップの議論において、「レイヤー 1」は、イーサリアムネットワークの本番環境であるメインネットを指します。 「レイヤー 2」(L2)という用語は、ロールアップまたはセキュリティのために L1 に依存しているが、そのほとんどをオフチェーンで処理する他のシステムに使用されます。 +ロールアップの議論において、「レイヤー1」は、イーサリアムネットワークの本番環境であるメインネットを指します。 「レイヤー2」(L2)という用語は、ロールアップまたはセキュリティのためにL1に依存しているが、そのほとんどをオフチェーンで処理する他のシステムに使用されます。 -## L2 上のトランザクションコストをさらに引き下げる方法 {#how-can-we-further-reduce-the-cost-of-L2-transactions} +## L2上のトランザクションコストをさらに引き下げる方法 {#how-can-we-further-reduce-the-cost-of-L2-transactions} [オプティミスティック・ロールアップ](/developers/docs/scaling/optimistic-rollups)では、すべてのユーザーが過去のトランザクションを参照し、現在の状態が正しいことを検証できるように、過去のすべてのトランザクション記録を保存する必要があります。 イーサリアムメインネットにデータを書き込む最も安価な方法は、コールデータとして書き込む方法です。 [Optimism](https://help.optimism.io/hc/en-us/articles/4413163242779-What-is-a-rollup-)と[Arbitrum](https://developer.offchainlabs.com/docs/rollup_basics#intro-to-rollups)はいずれも、コールデータのソリューションを採用しています。 -### L2 トランザクションのコスト {#cost-of-l2-transactions} +### L2トランザクションのコスト {#cost-of-l2-transactions} -L2 トランザクションのコストは、以下の 2 つの要素で構成されます: +L2トランザクションのコストは、以下の2つの要素で構成されます: -1. L2 上の処理コスト。通常、非常に安価です。 -2. L1 上のストレージコスト。これは、メインネットのガス代と連動します。 +1. L2上の処理コスト。通常、非常に安価です。 +2. L1上のストレージコスト。これは、メインネットのガス代と連動します。 -この記事の執筆時点の Optimism で、L2 ガス代は、0.001Gwei です。 一方、L1 のガス代は約 40Gwei です。 リアルタイムの価格は[こちら](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m)で確認できます。 +この記事の執筆時点のOptimismで、L2ガス代は、0.001[Gwei](/developers/docs/gas/#pre-london)です。 一方、L1のガス代は約40Gweiです。 リアルタイムの価格は[こちら](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m)で確認できます。 -1 バイトのコールデータのコストは、4 ガス (0 バイトの場合) または 16 ガス (それ以外) のいずれかです。 EVM で最も費用が高い操作のひとつは、ストレージへの書き込みです。 L2 上で 32 バイトのワードを書き込む場合、最大コストは 22100 ガスです。 現在のレートでは、22.1 gwei になります。 したがって、1 つのコールデータをゼロバイトに節約できれば、約 200 バイトをストレージに書き込むことができ、まだお釣りが来ます。 +1バイトのコールデータのコストは、4ガス (0バイトの場合) または16ガス (それ以外) のいずれかです。 EVMで最も費用が高い操作のひとつは、ストレージへの書き込みです。 L2上で32バイトのワードを書き込む場合、最大コストは22100ガスです。 現在のレートでは、22.1 gweiになります。 したがって、1つのコールデータをゼロバイトに節約できれば、約200バイトをストレージに書き込むことができ、まだお釣りが来ます。 ### ABI {#the-abi} -大多数のトランザクションは、外部所有アカウントからコントラクトにアクセスします。 ほとんどのコントラクトは Solidity で書かれており、データフィールドは[アプリケーション・バイナリ・インターフェイス(ABI) ](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding)で解釈されます。 +大多数のトランザクションは、外部所有アカウントからコントラクトにアクセスします。 ほとんどのコントラクトはSolidityで書かれており、データフィールドは[アプリケーション・バイナリ・インターフェイス(ABI) ](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding)で解釈されます。 -ただし ABI は、1 バイトのコールデータがほぼ 4 回の算術演算のコストと同じになる L1 を念頭に置いて設計されていますが、L2 では、1 バイトのコールデータのコストで算術演算を 1000 回以上実行することができます。 例えば、[この ERC-20 の送信トランザクション](https://kovan-optimistic.etherscan.io/tx/0x7ce4c144ebfce157b4de99d8ad53a352ae91b57b3fa06d8a1c79439df6bfa998)を見てみましょう。 コールデータは、以下のように分割されます: +ただしABIは、1バイトのコールデータがほぼ4回の算術演算のコストと同じになるL1を念頭に置いて設計されていますが、L2では、1バイトのコールデータのコストで算術演算を1000回以上実行することができます。 例えば、[このERC-20の送信トランザクション](https://kovan-optimistic.etherscan.io/tx/0x7ce4c144ebfce157b4de99d8ad53a352ae91b57b3fa06d8a1c79439df6bfa998)を見てみましょう。 コールデータは、以下のように分割されます: -| セクション | 長さ | バイト | 浪費バイト | 浪費ガス | 必須バイト | 必須ガス | -| -------------- | ---: | -------: | ---------: | -------: | ---------: | -------: | -| 関数セレクタ | 4 | 0 ~ 3 | 3 | 48 | 1 | 16 | -| ゼロ値 | 12 | 4 ~ 15 | 12 | 48 | 0 | 0 | -| 送信先アドレス | 20 | 16 ~ 35 | 0 | 0 | 20 | 320 | -| 金額 | 32 | 36 ~ 67 | 17 | 64 | 15 | 240 | -| 合計 | 68 | | | 160 | | 576 | +| セクション | 長さ | バイト | 浪費バイト | 浪費ガス | 必須バイト | 必須ガス | +| ------- | --:| -----:| -----:| ----:| -----:| ----:| +| 関数セレクタ | 4 | 0~3 | 3 | 48 | 1 | 16 | +| ゼロ値 | 12 | 4~15 | 12 | 48 | 0 | 0 | +| 送信先アドレス | 20 | 16~35 | 0 | 0 | 20 | 320 | +| 金額 | 32 | 36~67 | 17 | 64 | 15 | 240 | +| 合計 | 68 | | | 160 | | 576 | 説明: -- **関数セレクター**: このコントラクトに含まれる関数は 256 未満であるため、1 バイトで区別できます。 これらのバイトは通常 0 バイトではないので、[16 ガス](https://eips.ethereum.org/EIPS/eip-2028)がかかります。 -- **0 バイト **:これらのバイトは常にゼロです。と言うのも、20 バイトのアドレスを保持するためには 32 バイトのワードを必要としないからです。 0 バイトのコストは、4 ガスです([イエローペーパー](https://ethereum.github.io/yellowpaper/paper.pdf)の 27 ページにある Appendix G で、`G``txdatazero`の値について確認してください)。 -- **金額**:このコントラクトの`decimals`が 18(通常値)であり、送信できるトークンの上限が 1018だとすると、金額の上限は 1036になります。 25615 > 1036のため、必要なバイト数は 15 になります。 +- **関数セレクター**: このコントラクトに含まれる関数は256未満であるため、1バイトで区別できます。 これらのバイトは通常0バイトではないので、[16ガス](https://eips.ethereum.org/EIPS/eip-2028)がかかります。 +- **0バイト **:これらのバイトは常にゼロです。と言うのも、20バイトのアドレスを保持するためには32バイトのワードを必要としないからです。 0バイトのコストは、4ガスです([イエローペーパー](https://ethereum.github.io/yellowpaper/paper.pdf)の27ページにあるAppendix Gで、`G``txdatazero`の値について確認してください)。 +- **金額**:このコントラクトの`decimals`が18(通常値)であり、送信できるトークンの上限が1018だとすると、金額の上限は1036になります。 25615 > 1036のため、必要なバイト数は15になります。 -通常、L1 上で 160 ガスを浪費するのは無視できる範囲です。 1 件のトランザクションには最低でも[21,000 ガス](https://yakkomajuri.medium.com/blockchain-definition-of-the-week-ethereum-gas-2f976af774ed)が必要であるため、追加の 0.8%はほとんど問題になりません。 しかし、L2 では問題になります。 L2 におけるほぼすべてのコストは、L1 への書き込みで発生します。 トランザクションのコールデータに加えて、トランザクションのヘッダー(送信先アドレス、署名など)で 109 バイトが必要になります。 従って、L2 おける総コストは`109*16+576+160=2480`となり、浪費分が全体の 6.5%に達するのです。 +通常、L1上で160ガスを浪費するのは無視できる範囲です。 1件のトランザクションには最低でも[21,000ガス](https://yakkomajuri.medium.com/blockchain-definition-of-the-week-ethereum-gas-2f976af774ed)が必要であるため、追加の0.8%はほとんど問題になりません。 しかし、L2では問題になります。 L2におけるほぼすべてのコストは、L1への書き込みで発生します。 トランザクションのコールデータに加えて、トランザクションのヘッダー(送信先アドレス、署名など)で109バイトが必要になります。 従って、L2おける総コストは`109*16+576+160=2480`となり、浪費分が全体の6.5%に達するのです。 ## 送信先を限定しない場合のコスト削減方法 {#reducing-costs-when-you-dont-control-the-destination} 送信先のコントラクトを制御できない場合でも、[こちら](https://github.com/qbzzt/ethereum.org-20220330-shortABI)のようなソリューションを活用できます。 関連するファイルを確認しておきましょう。 -### Token.sol {#token.sol} +### Token.sol {#token-sol} -[これ](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/Token.sol)は、送信先のコントラクトです。 標準的な ERC-20 コントラクトですが、機能が 1 つ追加されています。 `faucet`関数により、すべてのユーザーがトークンを取得できるようになっています。 本番環境の ERC-20 コントラクトでは使えませんが、テスト環境では有益でしょう。 +[これ](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/Token.sol)は、送信先のコントラクトです。 標準的なERC-20コントラクトですが、機能が1つ追加されています。 `faucet`関数により、すべてのユーザーがトークンを取得できるようになっています。 本番環境のERC-20コントラクトでは使えませんが、テスト環境では有益でしょう。 ```solidity /** @@ -78,7 +77,7 @@ L2 トランザクションのコストは、以下の 2 つの要素で構成 [こちら](https://kovan-optimistic.etherscan.io/address/0x950c753c0edbde44a74d3793db738a318e9c8ce8)で、このコントラクトのデプロイ実例を確認できます。 -### CalldataInterpreter.sol {#calldatainterpreter.sol} +### CalldataInterpreter.sol {#calldatainterpreter-sol} [これ](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/CalldataInterpreter.sol)は、より短いコールデータでトランザクションを呼び出すことが想定されているコントラクトです。 一行ずつ見ていきましょう。 @@ -132,7 +131,7 @@ contract CalldataInterpreter { "calldataVal trying to read beyond calldatasize"); ``` -32 バイト(256 ビット)を持つ 1 つのワードをメモリにロードして、必要なフィールドに含まれない部分のバイトを削除します。 このアルゴリズムは、32 バイト以上の値に対しては機能せず、コールデータの末尾を越えたデータを読むこともできません。 L1 では、ガスを節約するためにこれらのテストを省略すべきかもしれませんが、L2 のガス代はとても安価なので、あらゆるサニティチェックを実行することができます。 +32バイト(256ビット)を持つ1つのワードをメモリにロードして、必要なフィールドに含まれない部分のバイトを削除します。 このアルゴリズムは、32バイト以上の値に対しては機能せず、コールデータの末尾を越えたデータを読むこともできません。 L1では、ガスを節約するためにこれらのテストを省略すべきかもしれませんが、L2のガス代はとても安価なので、あらゆるサニティチェックを実行することができます。 ```solidity assembly { @@ -140,9 +139,9 @@ contract CalldataInterpreter { } ``` -`fallback()`への呼び出しからデータをコピーしてもよいのですが(以下を参照) 、EVM のアセンブリ言語である[Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html)を使用する方が楽でしょう。 +`fallback()`への呼び出しからデータをコピーしてもよいのですが(以下を参照) 、EVMのアセンブリ言語である[Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html)を使用する方が楽でしょう。 -ここでは、[CALLDATALOAD のオペコード](https://www.evm.codes/#35)を使用して、`startByte`から `startByte+31`までのバイトをスタックへ読み込みます。 一般に、Yul のオペコードの構文は`(,...`となります。 +ここでは、[CALLDATALOADのオペコード](https://www.evm.codes/#35)を使用して、`startByte`から `startByte+31`までのバイトをスタックへ読み込みます。 一般に、Yulのオペコードの構文は`(,...`となります。 ```solidity @@ -160,7 +159,7 @@ contract CalldataInterpreter { fallback() external { ``` -Solidity コントラクトへの呼び出しがどの関数の署名とも一致しない場合、 [`fallback()`関数](https://docs.soliditylang.org/en/v0.8.12/contracts.html#fallback-function)を呼び出します(存在する場合)。 `CalldataInterpreter`の場合、他の`external`または`public`の関数がないため、すべての呼び出しがここに到達します。 +Solidityコントラクトへの呼び出しがどの関数の署名とも一致しない場合、 [`fallback()`関数](https://docs.soliditylang.org/en/v0.8.12/contracts.html#fallback-function)を呼び出します(存在する場合)。 `CalldataInterpreter`の場合、他の`external`または`public`の関数がないため、すべての呼び出しがここに到達します。 ```solidity uint _func; @@ -168,12 +167,12 @@ Solidity コントラクトへの呼び出しがどの関数の署名とも一 _func = calldataVal(0, 1); ``` -この関数を返すコールデータの最初の 1 バイトを読み取ります。 ここで関数が取得できないのには、2 つの理由があります: +この関数を返すコールデータの最初の1バイトを読み取ります。 ここで関数が取得できないのには、2つの理由があります: 1. `pure`または`view`の関数の場合。これらの関数は状態を変更しないため、ガスが発生しません(オフチェーンで呼び出す場合)。 ですから、ガス代を節約する必要がありません。 2. [`msg.sender`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#block-and-transaction-properties)に依存した関数。 `msg.sender`の値は、呼び出し元のアドレスではなく、`CalldataInterpreter`のアドレスになります。 -残念ながら、[ERC-20 の仕様](https://eips.ethereum.org/EIPS/eip-20)を確認すると、残りの関数は`transfer`のみです。 つまり、呼び出し可能な関数は、`transfer` (`transferFrom`を呼び出す)と、`faucet` (呼び出し元のアドレスにトークンを送信する)になります。 +残念ながら、[ERC-20の仕様](https://eips.ethereum.org/EIPS/eip-20)を確認すると、残りの関数は`transfer`のみです。 つまり、呼び出し可能な関数は、`transfer` (`transferFrom`を呼び出す)と、`faucet` (呼び出し元のアドレスにトークンを送信する)になります。 ```solidity @@ -200,7 +199,7 @@ Solidity コントラクトへの呼び出しがどの関数の署名とも一 if (_func == 2) { ``` -トークンを送信する場合、送信先アドレスと金額という 2 つのパラメータが必要です。 +トークンを送信する場合、送信先アドレスと金額という2つのパラメータが必要です。 ```solidity token.transferFrom( @@ -213,26 +212,26 @@ Solidity コントラクトへの呼び出しがどの関数の署名とも一 address(uint160(calldataVal(1, 20))), ``` -送信先アドレスは、#1 のバイトから始まります(#0 のバイトは、関数が使用します)。 アドレスの長さは、20 バイトです。 +送信先アドレスは、#1のバイトから始まります(#0のバイトは、関数が使用します)。 アドレスの長さは、20バイトです。 ```solidity calldataVal(21, 2) ``` -このコントラクトでは、送信可能なトークンの最大数が 2 バイト以内(65536 未満)に収まると想定します。 +このコントラクトでは、送信可能なトークンの最大数が2バイト以内(65536未満)に収まると想定します。 ```solidity ); } ``` -1 件の送信につき、35 バイトのコールデータが発生します。 +1件の送信につき、35バイトのコールデータが発生します。 -| セクション | 長さ | バイト | -| -------------- | ---: | -------: | -| 関数セレクタ | 1 | 0 | -| 送信先アドレス | 32 | 1 ~ 32 | -| 金額 | 2 | 33 ~ 34 | +| セクション | 長さ | バイト | +| ------- | --:| -----:| +| 関数セレクタ | 1 | 0 | +| 送信先アドレス | 32 | 1~32 | +| 金額 | 2 | 33~34 | ```solidity } // fallback @@ -240,9 +239,9 @@ Solidity コントラクトへの呼び出しがどの関数の署名とも一 } // contract CalldataInterpreter ``` -### test.js {#test.js} +### test.js {#test-js} -[この JavaScript による単体テスト](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/test/test.js)では、このメカニズムを使用する方法(および、メカニズムが適切に動作していることをを確認する方法)を示します。 ここでは、[Chai](https://www.chaijs.com/)および[Ethers](https://docs.ethers.io/v5/)についてよく理解しているという前提に基づき、特にコントラクトに関連する部分のみを説明します。 +[このJavaScriptによる単体テスト](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/test/test.js)では、このメカニズムを使用する方法(および、メカニズムが適切に動作していることをを確認する方法)を示します。 ここでは、[Chai](https://www.chaijs.com/)および[Ethers](https://docs.ethers.io/v5/)についてよく理解しているという前提に基づき、特にコントラクトに関連する部分のみを説明します。 ```js const { expect } = require("chai"); @@ -269,17 +268,17 @@ describe("CalldataInterpreter", function () { const faucetTx = { ``` -ここでは ABI を使用しないため、トランザクションを作成するために通常用いる高度な関数(`token.faucet()`など)を使用できません。 その代わりに、トランザクションをマニュアルで作成し、送信する必要があります。 +ここではABIを使用しないため、トランザクションを作成するために通常用いる高度な関数(`token.faucet()`など)を使用できません。 その代わりに、トランザクションをマニュアルで作成し、送信する必要があります。 ```javascript to: cdi.address, data: "0x01" ``` -トランザクションには、次の 2 つのパラメータが必要です: +トランザクションには、次の2つのパラメータが必要です: 1. `to`:送信先のアドレスです。 これは、コールデータのインタープリタのアドレスです。 -2. `data`:送信するコールデータです。 フォーセットを呼び出す場合、データは 1 バイト(`0x01`)です。 +2. `data`:送信するコールデータです。 フォーセットを呼び出す場合、データは1バイト(`0x01`)です。 ```javascript @@ -314,7 +313,7 @@ const transferTx = { } ``` -送信トランザクションを作成します。 最初のバイトは「0x02」で、次に送信先アドレスを置き、最後に金額(10 進法で 256 である 0x0100)を置きます。 +送信トランザクションを作成します。 最初のバイトは「0x02」で、次に送信先アドレスを置き、最後に金額(10進法で256である0x0100)を置きます。 ```javascript await (await signer.sendTransaction(transferTx)).wait() @@ -342,9 +341,9 @@ const transferTx = { 送信先コントラクトを制限できる場合、コールデータのインタープリタが信頼されるため、`msg.sender`チェックを省略する関数を作成することができます。 [`control-contract`のブランチから、動作例を確認できます](https://github.com/qbzzt/ethereum.org-20220330-shortABI/tree/control-contract)。 -コントラクトが外部のトランザクションのみに応答する場合、1 つのコントラクトのみで対応することができます。 しかし、この方法では[コンポーザビリティ](/developers/docs/smart-contracts/composability/)が失われます。 通常の ERC-20 の呼び出しに応答するコントラクトと、短いコールデータを持つトランザクションに応答するコントラクトを共に用意する方が優れた方法だと言えます。 +コントラクトが外部のトランザクションのみに応答する場合、1つのコントラクトのみで対応することができます。 しかし、この方法では[コンポーザビリティ](/developers/docs/smart-contracts/composability/)が失われます。 通常のERC-20の呼び出しに応答するコントラクトと、短いコールデータを持つトランザクションに応答するコントラクトを共に用意する方が優れた方法だと言えます。 -### Token.sol {#token.sol-2} +### Token.sol {#token-sol-2} この例では、`Token.sol`を修正します。 これにより、このプロキシだけが呼び出せる一連の関数を設定することができます。 以下は、追加の関数です: @@ -356,7 +355,7 @@ const transferTx = { address proxy = address(0); ``` -ERC-20 コントラクトは、許可されたプロキシの身元を知る必要があります。 しかし、この時点では値が不明なため、コンストラクタで変数を設定できません。 プロキシは、コンストラクタにおいてトークンのアドレスを要求するため、まずこのコントラクトのインスタンスが実行されます。 +ERC-20コントラクトは、許可されたプロキシの身元を知る必要があります。 しかし、この時点では値が不明なため、コンストラクタで変数を設定できません。 プロキシは、コンストラクタにおいてトークンのアドレスを要求するため、まずこのコントラクトのインスタンスが実行されます。 ```solidity /** @@ -383,7 +382,7 @@ ERC-20 コントラクトは、許可されたプロキシの身元を知る必 } // function setProxy ``` -プロキシは特権アクセスを持つため、セキュリティチェックが省略されます。 このプロキシが信頼できることを確認するには、`オーナー`に対し、1 回のみこの関数を呼び出すことを許可します。 `proxy`が (ゼロではない)実際の値を持つと同時に、この値は変更不可となるため、オーナーが悪意のユーザーになった場合やそのニーモニックが明らかになった場合でも、安全性が維持されます。 +プロキシは特権アクセスを持つため、セキュリティチェックが省略されます。 このプロキシが信頼できることを確認するには、`オーナー`に対し、1回のみこの関数を呼び出すことを許可します。 `proxy`が (ゼロではない)実際の値を持つと同時に、この値は変更不可となるため、オーナーが悪意のユーザーになった場合やそのニーモニックが明らかになった場合でも、安全性が維持されます。 ```solidity /** @@ -437,12 +436,12 @@ ERC-20 コントラクトは、許可されたプロキシの身元を知る必 } ``` -以下は、トークンを送信する/アローワンスを承認するエンティティから直接メッセージを受信する際に通常必要となる 3 つの操作です。 ここでは、以下の特徴を持つプロキシバージョンを使います: +以下は、トークンを送信する/アローワンスを承認するエンティティから直接メッセージを受信する際に通常必要となる3つの操作です。 ここでは、以下の特徴を持つプロキシバージョンを使います: 1. `onlyProxy()`で修正されており、他のユーザーが管理権限を持たない。 2. 追加のパラメータとして、通常`msg.sender`であるアドレスを取得する。 -### CalldataInterpreter.sol {#calldatainterpreter.sol-2} +### CalldataInterpreter.sol {#calldatainterpreter-sol-2} コールデータのインタープリタは、送信先を限定しない場合とほぼ同一ですが、プロキシの関数では`msg.sender`パラメータを受け取るため、`transfer`のアローワンスが必要ない点が異なります。 @@ -476,7 +475,7 @@ ERC-20 コントラクトは、許可されたプロキシの身元を知る必 } ``` -### Test.js {#test.js-2} +### Test.js {#test-js-2} 送信先を限定しない場合とは、いくつかの点が異なります。 @@ -487,7 +486,7 @@ await cdi.deployed() await token.setProxy(cdi.address) ``` -ERC-20 コントラクトに対し、どのプロキシを信頼するかを伝える必要があります。 +ERC-20コントラクトに対し、どのプロキシを信頼するかを伝える必要があります。 ```js console.log("CalldataInterpreter addr:", cdi.address) @@ -498,7 +497,7 @@ const signer = signers[0] const poorSigner = signers[1] ``` -`approve()`と`transferFrom()`を確認するには、第 2 の署名者が必要です。 第 2 の署名者は、トークンを受け取らないため(もちろん、ETH を所有する必要はあります)に`poorSigner`と呼びます。 +`approve()`と`transferFrom()`を確認するには、第2の署名者が必要です。 第2の署名者は、トークンを受け取らないため(もちろん、ETHを所有する必要はあります)に`poorSigner`と呼びます。 ```js // Transfer tokens @@ -510,7 +509,7 @@ const transferTx = { await (await signer.sendTransaction(transferTx)).wait() ``` -ERC-20 コントラクトは、プロキシ (`cdi`) を信頼するため、送信をリレーするためのアローワンスは必要ありません。 +ERC-20コントラクトは、プロキシ (`cdi`) を信頼するため、送信をリレーするためのアローワンスは必要ありません。 ```js // approval and transferFrom @@ -530,13 +529,13 @@ await (await poorSigner.sendTransaction(transferFromTx)).wait() // Check the approve / transferFrom combo was done correctly expect(await token.balanceOf(destAddr2)).to.equal(255) - + No key Text XPath: /pre[38]/code ``` -新たに追加した 2 つの関数をテストします。 `transferFromTx`のアドレスには、アローワンスの提供元と受領者という 2 つパラメータが要求される点に注意してください。 +新たに追加した2つの関数をテストします。 `transferFromTx`のアドレスには、アローワンスの提供元と受領者という2つパラメータが要求される点に注意してください。 ### 実例 {#example-2} @@ -552,4 +551,4 @@ XPath: /pre[38]/code ## まとめ {#conclusion} -[Optimism](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92)と[Arbitrum](https://developer.offchainlabs.com/docs/special_features)はどちらも、L1 に書き込まれるコールデータのサイズを削減し、トランザクションコストを抑える方法を提供することを目指しています。 インフラプロバイダーが汎用性が高いソリューションを追求する一方で、デベロッパの能力には限界があります。 Dapp のデベロッパーは、開発するアプリケーションについて具体的な知識を持つため、汎用性のソリューションよりも効率的にコールデータの最適化を実現できるのです。 この記事が、皆さんのニーズに合わせた理想的なソリューションを見出す上で役立つことを願っています。 +[Optimism](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92)と[Arbitrum](https://developer.offchainlabs.com/docs/special_features)はどちらも、L1に書き込まれるコールデータのサイズを削減し、トランザクションコストを抑える方法を提供することを目指しています。 インフラプロバイダーが汎用性が高いソリューションを追求する一方で、デベロッパの能力には限界があります。 Dappのデベロッパーは、開発するアプリケーションについて具体的な知識を持つため、汎用性のソリューションよりも効率的にコールデータの最適化を実現できるのです。 この記事が、皆さんのニーズに合わせた理想的なソリューションを見出す上で役立つことを願っています。 diff --git a/public/content/translations/ja/developers/tutorials/smart-contract-security-guidelines/index.md b/public/content/translations/ja/developers/tutorials/smart-contract-security-guidelines/index.md index 1137be09c20..c470f818a1c 100644 --- a/public/content/translations/ja/developers/tutorials/smart-contract-security-guidelines/index.md +++ b/public/content/translations/ja/developers/tutorials/smart-contract-security-guidelines/index.md @@ -6,7 +6,7 @@ tags: - "Solidity" - "スマートコントラクト" - "セキュリティ" -skill: intermediate +skill: 中級 lang: ja published: 2020-09-06 source: セキュアなコントラクトの構築 @@ -24,8 +24,8 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/devel ドキュメンテーションは様々な水準で作成でき、コントラクトの実装時に内容を修正する必要があります。 - **平易な英語で書かれたシステムの説明**では、コントラクトが実行する内容を説明し、コードベースの前提条件を記述します。 -- **スキーマとアーキテクチャのダイアグラム**では、コントラクトで実行されるやりとりや、システムの状態マシンについて記述します。 [Slither のプリンター機能](https://github.com/crytic/slither/wiki/Printer-documentation)は、スキーマを生成する上で有益です。 -- **コード内容を徹底的に文書化する。** Solidity の場合、[Natspec フォーマット](https://solidity.readthedocs.io/en/develop/natspec-format.html)を使用できます。 +- **スキーマとアーキテクチャのダイアグラム**では、コントラクトで実行されるやりとりや、システムの状態マシンについて記述します。 [Slitherのプリンター機能](https://github.com/crytic/slither/wiki/Printer-documentation)は、スキーマを生成する上で有益です。 +- **コード内容を徹底的に文書化する。** Solidityの場合、[Natspecフォーマット](https://solidity.readthedocs.io/en/develop/natspec-format.html)を使用できます。 ### オンチェーン処理とオフチェーン処理の比較 {#on-chain-vs-off-chain-computation} @@ -35,8 +35,8 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/devel アップグレードに関する様々なソリューションについては、[こちらのブログ投稿](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/)で検討しています。 コード開発を開始する事前に、アップグレードに対応するか否かをはっきり決定してください。 この決定により、どのような構造のコードを開発するべきかが変わってきます。 一般論として、以下を推奨します: -- **アップグレード可能性よりも、[コントラクトのマイグレーション](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/)を優先すること**。システムのマイグレーションは、アップグレード可能性が提供する利点の多くを、その欠点なしに実現するものです。 -- **委任呼び出しプロキシのパターンよりも、データ分離のパターンを使用すること**。あなたのプロジェクトに明確な抽象化による分離が含まれる場合、データ分離をわずかに修正するだけでアップグレードが可能になります。 委任呼び出しのプロキシ は、EVM の知識が必要であり、エラー発生の頻度が高まります。 +- **アップグレード可能性よりも、[コントラクトのマイグレーション](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/)を優先すること**。システムのマイグレーションは、アップグレード可能性が提供する利点の多くを有し、アップグレード可能性の欠点がありません。 +- **委任呼び出しプロキシのパターンよりも、データ分離のパターンを使用すること**。あなたのプロジェクトに明確な抽象化による分離が含まれる場合、データ分離をわずかに修正するだけでアップグレードが可能になります。 委任呼び出しのプロキシ は、EVMの知識が必要であり、エラー発生の頻度が高まります。 - **デプロイする前に、マイグレーション/アップグレードの手順を文書化すること**。ガイドラインが設定されていない場合、ストレスを受けながら作業する必要があるため、ミスを犯しやすくなります。 遵守すべき手順を前もって策定しておきましょう。 具体的には、以下を定めます: - 新たなコントラクトを開始する呼び出し。 - キーの保存場所と、アクセス方法。 @@ -56,7 +56,7 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/devel ### 継承 {#inheritance} - **継承を管理可能な水準に抑える**。ロジックを分割するために継承を活用すべきですが、プロジェクト全体における継承ツリーの深さと広さをなるべく小さくするように努めてください。 -- **Slither の[継承プリンター](https://github.com/crytic/slither/wiki/Printer-documentation#inheritance-graph)でコントラクトの階層を確認する**。継承プリンターは、階層の規模を確認する上で役立ちます。 +- **Slitherの[継承プリンター](https://github.com/crytic/slither/wiki/Printer-documentation#inheritance-graph)でコントラクトの階層を確認する**。継承プリンターは、階層の規模を確認する上で役立ちます。 ### イベント {#events} @@ -65,24 +65,24 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/devel ### 既知の落とし穴を回避する {#avoid-known-pitfalls} - **最も一般的なセキュリティの問題に注意します**。よくある問題点については、[Ethernaut CTF](https://ethernaut.openzeppelin.com/)、[Capture the Ether](https://capturetheether.com/)、[Not so smart contracts](https://github.com/crytic/not-so-smart-contracts/)などの様々なオンラインリソースを活用してください。 -- **[Solidity ドキュメント](https://solidity.readthedocs.io/en/latest/)の警告セクションに注意する**。警告セクションを通じて、言語における把握しにくい振る舞いを把握することができます。 +- **[Solidityドキュメント](https://solidity.readthedocs.io/en/latest/)の警告セクションに注意する**。警告セクションを通じて、言語における把握しにくい振る舞いを把握することができます。 ### 依存関係 {#dependencies} -- **実証済みのライブラリを使用する**。実証済みのライブラリからコードをインポートすることで、バグが多いコードを書く可能性が低くなります。 ERC-20 コントラクトを作成する場合は、 [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20)を使用してください。 +- **実証済みのライブラリを使用する**。実証済みのライブラリからコードをインポートすることで、バグが多いコードを書く可能性が低くなります。 ERC-20コントラクトを作成する場合は、 [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20)を使用してください。 - **依存性マネージャーを使用し、コードのコピーアンドペーストを避ける**。外部ソースに依存する場合は、元ソースに基づき最新状態を保つ必要があります。 ### テストと検証 {#testing-and-verification} - **完全な単体テストを作成する**。質の高いソフトウェアを開発するには、包括的なテスト一式が不可欠です。 - **[Slither](https://github.com/crytic/slither)、[Echidna](https://github.com/crytic/echidna)、および[Manticore](https://github.com/trailofbits/manticore)用のカスタムチェックとプロパティを作成する**。自動化ツールを通じて、コントラクトのセキュリティを高めることができます。 効率的なチェックおよびプロパティを作成するには、本ガイドの該当記事を参照してください。 -- **[crytic.io](https://crytic.io/)を使用する**。Crytic は、GitHub と統合されており、Slither のプライベート検出器にアクセスできる他、Echidna からカスタムのプロパティチェックを実行することができます。 +- **[crytic.io](https://crytic.io/)を使用する**。Cryticは、GitHubと統合されており、Slitherのプライベート検出器にアクセスできる他、Echidnaからカスタムのプロパティチェックを実行することができます。 ### Solidity {#solidity} -- **Solidity のバージョンは、0.4 や 0.6 ではなく 0.5 を使用する**。現在のところ、Solidity 0.5 が最もセキュアなバージョンであり、0.4 よりもビルトインプラクティスが優れています。 一方、0.6 は現時点において本番環境の使用に耐えうる安定性を持たず、さらなるアップデートが必要な状態です。 -- **安定したバージョンでコンパイルし、最新リリースで警告をチェックする。**最新バージョンのコンパイラを使って、コードの問題が報告されないことを確認してください。 ただし、Solidity はリリース間隔が短く、過去においてもコンパイラにバグが含まれていた場合が多いため、デプロイに最新バージョンを用いることは推奨しません(Slither の[推奨 solc バージョン](https://github.com/crytic/slither/wiki/Detector-Documentation#recommendation-33)を参照)。 -- **インラインアセンブラを使用しない**。アセンブラを使用するには、EVM の専門知識が必要です。 イエローペーパーを*マスターしていない場合*、EVM コードを書かないでください。 +- **Solidityのバージョンは、0.4や0.6ではなく0.5を使用する**。現在のところ、Solidity 0.5が最もセキュアなバージョンであり、0.4よりもビルトインプラクティスが優れています。 一方、0.6は現時点において本番環境の使用に耐えうる安定性を持たず、さらなるアップデートが必要な状態です。 +- **安定したバージョンでコンパイルし、最新リリースで警告をチェックする。**最新バージョンのコンパイラを使って、コードの問題が報告されないことを確認してください。 ただし、Solidityはリリース間隔が短く、過去においてもコンパイラにバグが含まれていた場合が多いため、デプロイに最新バージョンを用いることは推奨しません(Slitherの[推奨solcバージョン](https://github.com/crytic/slither/wiki/Detector-Documentation#recommendation-33)を参照)。 +- **インラインアセンブラを使用しない**。アセンブラを使用するには、EVMの専門知識が必要です。 イエローペーパーを_マスターしていない場合_、EVMコードを書かないでください。 ## デプロイに関するガイドライン {#deployment-guidelines} diff --git a/public/content/translations/ja/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md b/public/content/translations/ja/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md index 63797ead609..504dd0b7ba7 100644 --- a/public/content/translations/ja/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md +++ b/public/content/translations/ja/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md @@ -9,17 +9,17 @@ tags: - "テスト" - "Truffle" - "Ganache" -skill: intermediate +skill: 中級 published: 2020-06-05 source: soliditydeveloper.com sourceUrl: https://soliditydeveloper.com/continuous-integration --- -Truffle を使用した継続的統合(CI)は、基本的なテストセットを実装してあれば、非常に有益な開発環境を提供します。 非常に長期的なテストを実行できるため、[プルリクエスト](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request)をマージする事前にすべてのテストに合格したことを確認でき、追加ツールを使って様々な統計を追跡することができます。 +Truffleを使用した継続的統合(CI)は、基本的なテストセットを実装してあれば、非常に有益な開発環境を提供します。 非常に長期的なテストを実行できるため、[プルリクエスト](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request)をマージする事前にすべてのテストに合格したことを確認でき、追加ツールを使って様々な統計を追跡することができます。 -今回は、[Truffle Metacoin Box](https://www.trufflesuite.com/boxes/metacoin)を使用して継続的統合を設定します。 以下の内容は、Travis CI または Circle CI を使って実行できます。 +今回は、[Truffle Metacoin Box](https://www.trufflesuite.com/boxes/metacoin)を使用して継続的統合を設定します。 以下の内容は、Travis CIまたはCircle CIを使って実行できます。 -## Travis CI の設定 {#setting-up-travis-ci} +## Travis CIの設定 {#setting-up-travis-ci} [Travis CI](https://travis-ci.org/)は、簡単に追加できます。 プロジェクトのルートフォルダに、`.travis.yml`設定ファイルを追加するだけです。 @@ -37,11 +37,11 @@ script: - npm test ``` -ここでは、Truffle で単体テストを実行する場合のみテストスクリプトが実行されるシンプルな状態にしておきましょう。 しかし、Travis CI マシンが利用できるブロックチェーンが存在しないという問題があります。 しかしこれは、テスト前に`npm install ganache-cli`を実行するだけで解決できます。 具体的には、`ganache-cli > /dev/null`の npx コマンドを含む Bash スクリプトを`npx truffle test`の呼び出しの前に追加します。 [こちら](https://github.com/gorgos/Truffle-CI-Example/blob/master/scripts/run_tests.sh)で Bash スクリプトの完全な例をご覧ください。 +ここでは、Truffleで単体テストを実行する場合のみテストスクリプトが実行されるシンプルな状態にしておきましょう。 しかし、Travis CIマシンが利用できるブロックチェーンが存在しないという問題があります。 しかしこれは、テスト前に`npm install ganache-cli`を実行するだけで解決できます。 具体的には、`ganache-cli > /dev/null`のnpxコマンドを含むBashスクリプトを`npx truffle test`の呼び出しの前に追加します。 [こちら](https://github.com/gorgos/Truffle-CI-Example/blob/master/scripts/run_tests.sh)でBashスクリプトの完全な例をご覧ください。 -## Circle CI の設定 {#setting-up-circle-ci} +## Circle CIの設定 {#setting-up-circle-ci} -[CircleCi](https://circleci.com/)では、より長い設定ファイルが必要になります。 Travis では、自動で[`npm ci`](https://docs.npmjs.com/cli/ci.html)コマンドが追加されます。 これにより、`npmのインストール`よりも高速かつセキュアに依存関係をインストールできます。 ここでも、Travis の場合と同じスクリプトを使って、テストの前に ganache-cli を実行します。 +[CircleCi](https://circleci.com/)では、より長い設定ファイルが必要になります。 Travisでは、自動で[`npm ci`](https://docs.npmjs.com/cli/ci.html)コマンドが追加されます。 これにより、`npmのインストール`よりも高速かつセキュアに依存関係をインストールできます。 ここでも、Travisの場合と同じスクリプトを使って、テストの前にganache-cliを実行します。 ```yml version: 2 @@ -97,18 +97,18 @@ workflows: - dependencies ``` -## eth-gas-reporter プラグインを追加する {#adding-the-eth-gas-reporter-plugin} +## eth-gas-reporterプラグインを追加する {#adding-the-eth-gas-reporter-plugin} -eth-gas-reporter プラグインは、スマートコントラクトの関数で発生するガス代を追跡する上でとても役立ちます。 このプラグインを CI に追加しておけば、プルリクエストを追加する際に差分を表示するためにも有益です。 +eth-gas-reporterプラグインは、スマートコントラクトの関数で発生するガス代を追跡する上でとても役立ちます。 このプラグインをCIに追加しておけば、プルリクエストを追加する際に差分を表示するためにも有益です。 -### ステップ 1:eth-gas-reporter プラグインと codechecks をインストールする {#step-1-install-the-eth-gas-reporter-plugin-and-codechecks} +### ステップ1:eth-gas-reporterプラグインとcodechecksをインストールする {#step-1-install-the-eth-gas-reporter-plugin-and-codechecks} ```bash -$ npm install --save-dev eth-gas-reporter -$ npm install --save-dev @codechecks/client +npm install --save-dev eth-gas-reporter +npm install --save-dev @codechecks/client ``` -### ステップ 2:truffle-config.js の mocha 設定で、eth-gas-reporter プラグインを追加する {#step-2-add-the-plugin-to-the-mocha-settings-inside-your-truffle-configjs} +### ステップ2:truffle-config.jsのmocha設定で、eth-gas-reporterプラグインを追加する {#step-2-add-the-plugin-to-the-mocha-settings-inside-your-truffle-configjs} [設定のオプションを確認してください。](https://github.com/cgewecke/eth-gas-reporter#options) @@ -124,44 +124,42 @@ module.exports = { }; ``` -### ステップ 3:プロジェクトのルートディレクトリに、codechecks.yml を追加する {#step-3-add-a-codechecksyml-to-your-projects-root-directory} +### ステップ3:プロジェクトのルートディレクトリに、codechecks.ymlを追加する {#step-3-add-a-codechecksyml-to-your-projects-root-directory} ```yml checks: - name: eth-gas-reporter/codechecks ``` -### ステップ 4:テストコマンドの後に、codechecks を実行する {#step-4-run-codechecks-after-the-test-command} +### ステップ4:テストコマンドの後に、codechecksを実行する {#step-4-run-codechecks-after-the-test-command} ```bash - npm test - npx codechecks ``` -### ステップ 5:Codechecks のアカウントを作成する {#step-5-create-a-codechecks-account} +### ステップ5:Codechecksのアカウントを作成する {#step-5-create-a-codechecks-account} - [Codechecks](http://codechecks.io/)のアカウントを作成します。 -- GitHub リポジトリに追加します。 -- シークレットをコピーし、`CC_SECRET=COPIED SECRET`を CI に追加します(Travis の場合は[こちら](https://docs.travis-ci.com/user/environment-variables/)、CircleCi の場合は[こちら](https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-project)を参照してください)。 +- GitHubリポジトリに追加します。 +- シークレットをコピーし、`CC_SECRET=COPIED SECRET`をCIに追加します(Travisの場合は[こちら](https://docs.travis-ci.com/user/environment-variables/)、CircleCiの場合は[こちら](https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-project)を参照してください)。 - プルリクエストの作成に進んでください。 以上です。 これで、プルリクエストでガス代の変化に対して素晴らしいレポートが表示されます。 ![ガスレポートの例](./gas-reports.png) -## solidity-coverage プラグインを追加する {#adding-the-solidity-coverage-plugin} +## solidity-coverageプラグインを追加する {#adding-the-solidity-coverage-plugin} -solidity-coverage プラグインを使用すると、コードパスのうちテスト対象に含まれる割合がどの程度か確認できます。 CI 上で設定しておくと、非常に便利になります。 +solidity-coverageプラグインを使用すると、コードパスのうちテスト対象に含まれる割合がどの程度か確認できます。 CI上で設定しておくと、非常に便利になります。 -### ステップ 1:メタコインプロジェクトを作成し、カバレッジツールをインストールします。 {#step-1-create-a-metacoin-project-and-install-coverage-tools} +### ステップ1:メタコインプロジェクトを作成し、カバレッジツールをインストールします。 {#step-1-create-a-metacoin-project-and-install-coverage-tools} ```bash -$ npm install --save-dev truffle -$ npm install --save-dev coveralls -$ npm install --save-dev solidity-coverage +npm install --save-dev truffle coveralls solidity-coverage ``` -### ステップ 2:truffle-config.js のプラグイン配列に、solidity-coverage を追加します。 {#step-2-add-solidity-coverage-to-the-plugins-array-in-truffle-configjs} +### ステップ2:truffle-config.jsのプラグイン配列に、solidity-coverageを追加します。 {#step-2-add-solidity-coverage-to-the-plugins-array-in-truffle-configjs} ```js module.exports = { @@ -170,27 +168,27 @@ module.exports = { } ``` -### ステップ 3:.travis.yml または Circle CI config.yml に、カバレッジコマンドを追加します。 {#step-3-add-the-coverage-commands-to-the-travisyml-or-circle-ci-configyml} +### ステップ3:.travis.ymlまたはCircle CI config.ymlに、カバレッジコマンドを追加します。 {#step-3-add-the-coverage-commands-to-the-travisyml-or-circle-ci-configyml} ```bash - npx truffle run coverage - cat coverage/lcov.info | npx coveralls ``` -Soidity カバレッジは、それ自体で ganache-cli を開始しますので、ganache-cli をインストールする必要はありません。 ただし、カバレッジの ganache-cli は動作が異なり、通常の単体テスト実行の代替とはならないため、通常のテストコマンドは置き換えないでください。 +Soidityカバレッジは、それ自体でganache-cliを開始しますので、ganache-cliをインストールする必要はありません。 ただし、カバレッジのganache-cliは動作が異なり、通常の単体テスト実行の代替とはならないため、通常のテストコマンドは置き換えないでください。 -### ステップ 4:Coveralls にレポジトリを追加します。 {#step-4-add-repository-to-coveralls} +### ステップ4:Coverallsにレポジトリを追加します。 {#step-4-add-repository-to-coveralls} - [Coveralls](https://coveralls.io/)のアカウントを作成します。 -- 作成したアカウントを GitHub リポジトリに追加します。 +- 作成したアカウントをGitHubリポジトリに追加します。 - プルリクエストの作成に進んでください。 ![Coverallの例](./coverall.png) ## 追加のヒント {#further-ideas} -- [MythX](https://mythx.io/):MythX では、スマートコントラクトのセキュリティを自動で分析できます。 ですから、[CI に追加する](https://blog.mythx.io/howto/mythx-and-continuous-integration-part-1-circleci/)のはよいアイディアでしょう。 -- [Linting](https://wikipedia.org/wiki/Lint_%28software%29):Linting ツールを活用することで、ある程度まで強制的によいコードを書くことができます。 [Eslint](https://eslint.org/)は、JavaScript と相性が良く[セットアップが簡単](https://eslint.org/docs/user-guide/getting-started)です。一方[Solhint](https://protofire.github.io/solhint/)は、Solidity で使用できます。 -- 長期テスト:数百人のユーザーを対象としてコントラクトをテストするなど、ストレスが極端に大きいテストを実行したい場合もあるでしょう。 このようなテストは、長時間を要します。 テストごとに実行する代わりに、CI に追加します。 +- [MythX](https://mythx.io/):MythXでは、スマートコントラクトのセキュリティを自動で分析できます。 ですから、[CIに追加する](https://blog.mythx.io/howto/mythx-and-continuous-integration-part-1-circleci/)のはよいアイディアでしょう。 +- [Linting](https://wikipedia.org/wiki/Lint_%28software%29):Lintingツールを活用することで、ある程度まで強制的によいコードを書くことができます。 [Eslint](https://eslint.org/)は、JavaScriptと相性が良く[セットアップが簡単](https://eslint.org/docs/user-guide/getting-started)です。一方[Solhint](https://protofire.github.io/solhint/)は、Solidityで使用できます。 +- 長期テスト:数百人のユーザーを対象としてコントラクトをテストするなど、ストレスが極端に大きいテストを実行したい場合もあるでしょう。 このようなテストは、長時間を要します。 テストごとに実行する代わりに、CIに追加します。 -これで完了です。 開発環境において非常に有益な戦略であることが理解できたと思います。 完全な実例は、[Truffle-CI-Example](https://github.com/gorgos/Truffle-CI-Example)で確認してください。 Circle-CI と Travis の両方共必要な訳ではないので、使わない方は確実に削除してください! +これで完了です。 開発環境において非常に有益な戦略であることが理解できたと思います。 完全な実例は、[Truffle-CI-Example](https://github.com/gorgos/Truffle-CI-Example)で確認してください。 Circle-CIとTravisの両方共必要な訳ではないので、使わない方は確実に削除してください! diff --git a/public/content/translations/ja/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md b/public/content/translations/ja/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md index ededf3dd7e9..a5fb4559155 100644 --- a/public/content/translations/ja/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md +++ b/public/content/translations/ja/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md @@ -8,15 +8,16 @@ tags: - "Solidity" - "テスト" - "ERC-20" -skill: intermediate +skill: 中級 lang: ja +sidebar: true published: 2020-10-16 --- このチュートリアルでは、以下について学びます: -- Waffle を使って、スマートコントラクトをテストする方法 -- Waffle 上で、一般的なマッチャーを使ってスマートコントラクトをテストする方法 +- Waffleを使って、スマートコントラクトをテストする方法 +- Waffle上で、一般的なマッチャーを使ってスマートコントラクトをテストする方法 前提知識: @@ -24,17 +25,17 @@ published: 2020-10-16 - 新規の`JavaScript`プロジェクトを作成できる。 - 数行の`Solidity`コードを書いたことがある。 - いくつかのテストを`JavaScript`で作成したことがある。 -- `yarn`あるいは、JavaScripts のパッケージインストーラである`npm`を使用したことがある。 +- `yarn`あるいは、JavaScriptsのパッケージインストーラである`npm`を使用したことがある。 上記に該当しない場合や、以下のコードを実際に作成するつもりがない方でも、容易に理解できる内容です。 -## Waffle の簡単な紹介 {#a-few-words-about-waffle} +## Waffleの簡単な紹介 {#a-few-words-about-waffle} [Waffle](https://getwaffle.io)は、スマートコントラクトの作成とテストのための最も先進的なライブラリです。 -[JavaScript API](/developers/docs/apis/javascript/)である ethers-js と連携して動作します。 +[JavaScript API](/developers/docs/apis/javascript/)であるethers-jsと連携して動作します。 -詳細については、[Waffle のドキュメンテーション](https://ethereum-waffle.readthedocs.io/en/latest/#waffle-documentation)をご覧ください! +詳細については、[Waffleのドキュメンテーション](https://ethereum-waffle.readthedocs.io/en/latest/#waffle-documentation)をご覧ください! ## クイックチュートリアル {#the-quick-tutorial} @@ -641,7 +642,7 @@ published: 2020-10-16 -## ステップ 1:あなたのプロジェクトに、Waffle をインストールする([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#installation))。 {#step-1-install-waffle-in-your-project} +## ステップ1:あなたのプロジェクトに、Waffleをインストールする([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#installation))。 {#step-1-install-waffle-in-your-project} まずはじめに、`ethereum-waffle`をインストールします。 このチュートリアルでは、次のように `yarn`を使用しますので、以下を実行すると`ethereum-waffle`がインストールされます: @@ -649,7 +650,7 @@ published: 2020-10-16 yarn add --dev ethereum-waffle ``` -## ステップ 2:スマートコントラクトを作成する([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-a-contract)) {#step-2-write-a-smart-contract} +## ステップ2:スマートコントラクトを作成する([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-a-contract)) {#step-2-write-a-smart-contract} このチュートリアルでは、[OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/ded2b0a55c9c13731963ab7b85a70c8e73504bab/contracts/token/ERC20/ERC20.sol)の[ERC-20](https://openzeppelin.com)トークンを使用します。 @@ -675,7 +676,7 @@ contract BasicToken is ERC20 { ``` -## ステップ 3:スマートコントラクトをコンパイルします([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract)) {#step-3-compile-your-smart-contract} +## ステップ3:スマートコントラクトをコンパイルします([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract)) {#step-3-compile-your-smart-contract} スマートコントラクトをコンパイルするには、プロジェクトの`package.json`に以下のエントリを追加します: @@ -700,11 +701,11 @@ contract BasicToken is ERC20 { } ``` -Waffle の設定については、[こちら](https://ethereum-waffle.readthedocs.io/en/latest/configuration.html#configuration)をご覧ください。 +Waffleの設定については、[こちら](https://ethereum-waffle.readthedocs.io/en/latest/configuration.html#configuration)をご覧ください。 次に、`yarn build`を実行してスマートコントラクトをコンパイルします。 -Waffle がコントラクトをコンパイルし、JSON の出力結果を`build`ディレクトリ内に配置したことがわかります。 +Waffleがコントラクトをコンパイルし、JSONの出力結果を`build`ディレクトリ内に配置したことがわかります。
BasicToken.json @@ -1007,7 +1008,7 @@ Waffle がコントラクトをコンパイルし、JSON の出力結果を`buil
-## ステップ 4:スマートコントラクトをテストする([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)) {#step-4-test-your-smart-contract} +## ステップ4:スマートコントラクトをテストする([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)) {#step-4-test-your-smart-contract} ### ステップ 4.1:必要な依存関係をインストールします([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)) {#step-4-1} @@ -1021,7 +1022,7 @@ Waffle がコントラクトをコンパイルし、JSON の出力結果を`buil yarn add --dev mocha chai ``` -### ステップ 4.2:テストファイルを作成する([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)) {#step-4-2} +### ステップ4.2:テストファイルを作成する([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)) {#step-4-2} テストを作成するには、テストディレクトリに`BasicToken.test.ts`ファイルを作成する必要があります。 @@ -1043,13 +1044,13 @@ describe("BasicToken", () => { }) ``` -トークンのデプロイには、`Waffle`の`deployContract`メソッドを使用します。 引数としては、作成したコントラクトとデフォルト残高をコンパイルした json ファイルである`wallet`を引き渡す必要があります。 +トークンのデプロイには、`Waffle`の`deployContract`メソッドを使用します。 引数としては、作成したコントラクトとデフォルト残高をコンパイルしたjsonファイルである`wallet`を引き渡す必要があります。 `Waffle`では`wallet`を作成することもできるため、コントラクトをとても簡単にデプロイできます。 `wallet`の詳細については、 [こちら](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#getting-wallets)をご覧ください。デプロイ機能に関しては、[こちら](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#deploying-contracts)をご覧ください。 -それでは、ウォレット残高を確認する簡単なテストを作成してみましょう。 コントラクトのデプロイ時に 1000 の値を送信したため、ウォレット残高が 1000 トークンになっているはずですが、最初のテストではこれを確認します。 +それでは、ウォレット残高を確認する簡単なテストを作成してみましょう。 コントラクトのデプロイ時に1000の値を送信したため、ウォレット残高が1000トークンになっているはずですが、最初のテストではこれを確認します。 ```ts it("Assigns initial balance", async () => { @@ -1059,7 +1060,7 @@ it("Assigns initial balance", async () => { テストを実行するには、 `yarn test`を使用します。 -### ステップ 4.3:イベントを出力する([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#emitting-events)) {#step-4-3} +### ステップ4.3:イベントを出力する([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#emitting-events)) {#step-4-3} このチュートリアルでは、`Waffle`の中で最も便利なマッチャーを紹介したいと思いますので、一番便利なものから始めましょう。 @@ -1081,7 +1082,7 @@ it("Transfer emits event", async () => { これにより、関数が正しく呼び出されたことを確認できます! -### ステップ 4.4:メッセージと共に元に戻す([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#revert-with-message)) {#step-4-4} +### ステップ4.4:メッセージと共に元に戻す([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#revert-with-message)) {#step-4-4} `Waffle`では、トランザクションを元に戻す際に添付されたメッセージもテストできます。 @@ -1097,7 +1098,7 @@ it("Can not transfer above the amount", async () => { }) ``` -### ステップ 4.5:トークン残高を変更する([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#change-balance)) {#step-4-5} +### ステップ4.5:トークン残高を変更する([ドキュメントのリンク](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#change-balance)) {#step-4-5} `Waffle`では、ウォレット残高の変化も確認できます! @@ -1115,7 +1116,7 @@ it("Send transaction changes receiver balance", async () => { }) ``` -これは、1 つのウォレットを対象とするテストです。 +これは、1つのウォレットを対象とするテストです。 以下は、複数のウォレットを対象とする場合です: @@ -1131,7 +1132,7 @@ it("Send transaction changes sender and receiver balances", async () => { ## お疲れ様でした! {#congratulations} -**おめでとうございます! チュートリアルは、これで終了です。 Waffle でスマートコントラクトをテストするための最初の大きな一歩を踏み出すことができました。** +**おめでとうございます! チュートリアルは、これで終了です。 Waffleでスマートコントラクトをテストするための最初の大きな一歩を踏み出すことができました。** **このチュートリアルのコードについては、[こちら](https://github.com/VladStarostenko/tutorial-for-ethereum-org-website)でアクセスできます。** diff --git a/public/content/translations/ja/developers/tutorials/token-integration-checklist/index.md b/public/content/translations/ja/developers/tutorials/token-integration-checklist/index.md index 564473a0df4..844582156c6 100644 --- a/public/content/translations/ja/developers/tutorials/token-integration-checklist/index.md +++ b/public/content/translations/ja/developers/tutorials/token-integration-checklist/index.md @@ -8,7 +8,7 @@ tags: - "スマートコントラクト" - "セキュリティ" - "トークン" -skill: intermediate +skill: 中級 published: 2020-08-13 source: セキュアなコントラクトの構築 sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/token_integration.md @@ -16,15 +16,15 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/devel 任意のトークンとやり取りするときは、このチェックリストに従ってください。 各アイテムに関連したリスクを確実に理解し、ルールを遵守しない場合はその根拠を明確にしてください。 -幸いなことに、Slither のすべての[ユーティリティ](https://github.com/crytic/slither#tools)は、トークンアドレス上で直接実行可能です: +幸いなことに、Slitherのすべての[ユーティリティ](https://github.com/crytic/slither#tools)は、トークンアドレス上で直接実行可能です: -[Slither のチュートリアルを利用する](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) +[Slitherのチュートリアルを利用する](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) ```bash slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherToken ``` -このチェックリストを利用する際には、Slither を使って、当該トークンから以下を出力しておくとよいでしょう: +このチェックリストを利用する際には、Slitherを使って、当該トークンから以下を出力しておくとよいでしょう: ```bash - slither-check-erc [target] [contractName] [optional: --erc ERC_NUMBER] @@ -39,39 +39,39 @@ slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherToken - **デベロッパに問い合わせられること**。インシデントが発生した場合、開発チームにアラートを提供する必要があるかもしれません。 [blockchain-security-contacts](https://github.com/crytic/blockchain-security-contacts)で、適切な問合せ先を確認してください。 - **重要なアナウンスを行うセキュリティ関連のメーリングリストがあること**。重大な問題の発生時やアップグレード時に、あなたのようなユーザーに助言が提供される体制が整っているかを確認してください。 -## ERC 適合性 {#erc-conformity} +## ERC適合性 {#erc-conformity} -Slither に含まれる[slither-check-erc](https://github.com/crytic/slither/wiki/ERC-Conformance)ユーティリティで、関連する多くの ERC 標準に対するトークンの遵守度をレビューできます。 slither-check-erc を次の内容の評価に使用してください。 +Slitherに含まれる[slither-check-erc](https://github.com/crytic/slither/wiki/ERC-Conformance)ユーティリティで、関連する多くのERC標準に対するトークンの遵守度をレビューできます。 slither-check-ercを次の内容の評価に使用してください。 -- **Transfer と transferFrom がブール値を返すこと**。トークンによっては、これらの関数でブール値を返さない場合があります。 その結果、コントラクトの呼び出しが実行できない場合があります。 -- **name、decimals、symbol 関数を使用する場合、それらの関数が存在すること。**ERC-20 標準ではこれらの関数はオプションであるため、コントラクトに含まれない場合があります。 -- **Decimals が uint8 値を返すこと**。トークンによっては、不適切である unit256 値を返す場合があります。 この場合は、戻り値が 255 未満になるように変更します。 -- **トークンが、既知の[ERC-20 競合状態](https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729)を軽減すること**。ERC-20 標準には既知の ERC-20 競合状態が存在するため、攻撃者がトークンを盗むのを防ぐためにこれを軽減する必要があります。 -- **トークンが ERC-777 トークンではなく、transfer や transferFrom による外部からの関数呼び出しを含まないこと**。transfer 関数を使った外部からの呼び出しは、リエントランシー攻撃につながりかねません。 +- **TransferとtransferFromがブール値を返すこと**。トークンによっては、これらの関数でブール値を返さない場合があります。 その結果、コントラクトの呼び出しが実行できない場合があります。 +- **name、decimals、symbol関数を使用する場合、それらの関数が存在すること。**ERC-20標準ではこれらの関数はオプションであるため、コントラクトに含まれない場合があります。 +- **Decimalsがuint8値を返すこと**。トークンによっては、不適切であるunit256値を返す場合があります。 この場合は、戻り値が255未満になるように変更します。 +- **トークンが、既知の[ERC-20競合状態](https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729)を軽減すること**。ERC-20標準には既知のERC-20競合状態が存在するため、攻撃者がトークンを盗むのを防ぐためにこれを軽減する必要があります。 +- **トークンがERC-777トークンではなく、transferやtransferFromによる外部からの関数呼び出しを含まないこと**。transfer関数を使った外部からの呼び出しは、リエントランシー攻撃につながりかねません。 -Slither には[slither-prop](https://github.com/crytic/slither/wiki/Property-generation)というユーティリティが含まれており、ERC で頻繁に発生する欠陥の多くを発見するための単体テストとセキュリティ関連のプロパティを生成することができます。 slither-prop を次の内容の評価に使用してください。 +Slitherには[slither-prop](https://github.com/crytic/slither/wiki/Property-generation)というユーティリティが含まれており、ERCで頻繁に発生する欠陥の多くを発見するための単体テストとセキュリティ関連のプロパティを生成することができます。 slither-propを次の内容の評価に使用してください。 -- **コントラクトが slither-prop のすべての単体テストとセキュリティプロパティに合格すること**。 生成された単体テストを実行し、[Echidna](https://github.com/crytic/echidna)と[Manticore](https://manticore.readthedocs.io/en/latest/verifier.html)でプロパティを確認します。 +- **コントラクトがslither-propのすべての単体テストとセキュリティプロパティに合格すること**。 生成された単体テストを実行し、[Echidna](https://github.com/crytic/echidna)と[Manticore](https://manticore.readthedocs.io/en/latest/verifier.html)でプロパティを確認します。 最後に、自動による特定が困難な一部の特徴について検討します。 以下の条件が発生していないか、マニュアルで確認してください: -- **Transfer および transferFrom がフィーを取らないこと**。デフレトークンは、予期せぬ動作を引き起こす可能性があります。 +- **TransferおよびtransferFromがフィーを取らないこと**。デフレトークンは、予期せぬ動作を引き起こす可能性があります。 - **トークンから得られる潜在的な利子収入が考慮されていること**。一部のトークンは、トークン保有者に利子を分配します。 この点を考慮しない場合、利子がコントラクト内でトラップされる可能性があります。 ## コントラクトの構成 {#contract-composition} -- **コントラクトが必要以上に複雑になっていないか**。 トークンは、シンプルなコントラクトでなければなりません。コードが複雑になればなるほど、よりレビューが煩雑になります。 複雑なコードを特定するには、Slither の[human-summary プリンター](https://github.com/crytic/slither/wiki/Printer-documentation#human-summary)を使用してください。 -- **コントラクトが SafeMath を使用しているか**。SafeMath を使用していないコントラクトは、より厳格なレビュー基準が必要になります。 コントラクトで SafeMath が使用されているかどうか、マニュアルで確認してください。 -- **トークンに関連しない関数の数が、最低限に抑えられているか**。 トークンに関連しない関数は、コントラクトにおいて問題が発生する可能性を高めてしまいます。 Slither の [contract-summary プリンター](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary)を使用して、コントラクトのコード全体をレビューしてください。 +- **コントラクトが必要以上に複雑になっていないか**。 トークンは、シンプルなコントラクトでなければなりません。コードが複雑になればなるほど、よりレビューが煩雑になります。 複雑なコードを特定するには、Slitherの[human-summaryプリンター](https://github.com/crytic/slither/wiki/Printer-documentation#human-summary)を使用してください。 +- **コントラクトがSafeMathを使用しているか**。SafeMathを使用していないコントラクトは、より厳格なレビュー基準が必要になります。 コントラクトでSafeMathが使用されているかどうか、マニュアルで確認してください。 +- **トークンに関連しない関数の数が、最低限に抑えられているか**。 トークンに関連しない関数は、コントラクトにおいて問題が発生する可能性を高めてしまいます。 Slitherの [contract-summaryプリンター](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary)を使用して、コントラクトのコード全体をレビューしてください。 - **トークンのアドレスが複数存在しないか**。残高更新のために複数のエントリーポイントを持つトークンは、当該アドレスに基づく内部の帳簿管理を毀損する可能性があります(例:`balances[token_address][msg.sender]`が実際の残高を反映しない場合)。 ## 所有者の特権 {#owner-privileges} -- **トークンがアップグレード不可能であるか**。アップグレード可能なコントラクトは、時間の経過と共にルールが変更される可能性があります。 Slither の[human-summary プリンター](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary)を使用して、コントラクトがアップグレード可能かどうかを決定します。 -- **所有者のミント能力が制限されているか**。 悪意の所有者やセキュリティが侵害された所有者は、ミント能力を悪用する可能性があります。 Slither の[human-summary プリンター](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary)を使用して、ミント能力を評価し、マニュアルでコードをレビューする必要があるかを決定してください。 +- **トークンがアップグレード不可能であるか**。アップグレード可能なコントラクトは、時間の経過と共にルールが変更される可能性があります。 Slitherの[human-summaryプリンター](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary)を使用して、コントラクトがアップグレード可能かどうかを決定します。 +- **所有者のミント能力が制限されているか**。 悪意の所有者やセキュリティが侵害された所有者は、ミント能力を悪用する可能性があります。 Slitherの[human-summaryプリンター](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary)を使用して、ミント能力を評価し、マニュアルでコードをレビューする必要があるかを決定してください。 - **トークンが、一時停止可能であるか**。 悪意の所有者やセキュリティを侵害された所有者は、一次停止が可能なトークンを利用してコントラクトをトラップすることが可能です。 マニュアルで、一時停止可能なコードを特定してください。 - **所有者がコントラクトをブラックリストに登録できるようになっていないか**。 悪意の所有者やセキュリティが侵害された所有者は、ブラックリストに登録されたトークンを使用して、コントラクトをトラップすることが可能です。 マニュアルで、ブラックリスト機能を特定してください。 -- \*\*トークン開発チームの身元がはっきりしており、不正使用の責任を負える組織であるか/strong>。匿名の開発チームが開発したコントラクトや、または法的シェルターの対象に含まれるコントラクトに対しては、より厳格なレビューが必要になります。 +- **トークン開発チームの身元がはっきりしており、不正使用の責任を負える組織であるか/strong>。匿名の開発チームが開発したコントラクトや、または法的シェルターの対象に含まれるコントラクトに対しては、より厳格なレビューが必要になります。 ## トークンの枯渇 {#token-scarcity} @@ -79,6 +79,6 @@ Slither には[slither-prop](https://github.com/crytic/slither/wiki/Property-gen - **特定のユーザーが、トークン供給量の大部分を所有していないか**。少数のユーザーが大部分のトークンを所有する場合、トークンの再分配に基づき価格操作の可能性が発生します。 - **総供給量は十分であるか**。総供給量が少ないトークンは、価格操作が容易になります。 -- **トークンが、複数の取引所に所在しているか**。 すべてのトークンが 1 カ所の取引所のみに存在する場合、この取引所のセキュリティが侵害されると、このトークンに依存するコントラクトが侵害される可能性があります。 +- **トークンが、複数の取引所に所在しているか**。 すべてのトークンが1カ所の取引所のみに存在する場合、この取引所のセキュリティが侵害されると、このトークンに依存するコントラクトが侵害される可能性があります。 - **ユーザーは、多額の資金やフラッシュローンに関するリスクについて理解しているか**。トークン残高に依存するコントラクトは、多額の資金を持つ攻撃者やフラッシュローンを通じた攻撃について慎重に考慮する必要があります。 - **トークンは、フラッシュミントが不可能であるか**。 フラッシュミンティングは、残高や総供給量を大幅に変更しうるため、トークンの運用において厳格かつ包括的なオーバーフローチェックが必要になります。 diff --git a/public/content/translations/ja/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md b/public/content/translations/ja/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md index 80335862de8..59852d0fd58 100644 --- a/public/content/translations/ja/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md +++ b/public/content/translations/ja/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md @@ -7,7 +7,7 @@ tags: - "トークン" - "Solidity" - "erc-20" -skill: beginner +skill: 初級 lang: ja published: 2020-04-05 source: EthereumDev diff --git a/public/content/translations/ja/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/ja/developers/tutorials/uniswap-v2-annotated-code/index.md index 71bfa2746eb..0382c859e6d 100644 --- a/public/content/translations/ja/developers/tutorials/uniswap-v2-annotated-code/index.md +++ b/public/content/translations/ja/developers/tutorials/uniswap-v2-annotated-code/index.md @@ -4,7 +4,7 @@ description: Uniswap-v2コントラクトの仕組み、 コントラクトの author: Ori Pomerantz tags: - "Solidity" -skill: intermediate +skill: 中級 published: 2021-05-01 lang: ja --- @@ -909,7 +909,7 @@ import './interfaces/IERC20.sol'; import './interfaces/IWETH.sol'; ``` -これらの大半はすでに目にしていると思います。そうでなくても、非常にわかりやすいものです。 唯一の例外は、`IWETH.sol`です。 Uniswap v2は、どのERC-20トークンのペアでも交換可能ですが、イーサ(ETH)自体はERC-20トークンではありません。 ETHは、標準より前から存在しており、独自のメカニズムによって送金されます。 ERC-20トークンが適用されるコントラクトでETHを利用できるようにするため、[ラップドイーサ(WETH)](https://weth.tkn.eth.limo/)が考案されました。 このコントラクトにETHを送ると、同じ量のWETHがミントされます。 WETHをバーンすると、ETHを取り戻すことができます。 +これらの大半はすでに目にしていると思います。そうでなくても、非常にわかりやすいものです。 唯一の例外は、`IWETH.sol`です。 Uniswap v2は、どのERC-20トークンのペアでも交換可能ですが、イーサ(ETH)自体はERC-20トークンではありません。 ETHは、標準より前から存在しており、独自のメカニズムによって送金されます。 ERC-20トークンが適用されるコントラクトでETHを利用できるようにするため、[ラップドイーサ(WETH)](https://weth.io/)が考案されました。 このコントラクトにETHを送ると、同じ量のWETHがミントされます。 WETHをバーンすると、ETHを取り戻すことができます。 ```solidity contract UniswapV2Router02 is IUniswapV2Router02 { diff --git a/public/content/translations/ja/developers/tutorials/using-websockets/index.md b/public/content/translations/ja/developers/tutorials/using-websockets/index.md index aebf657cd89..b69a39bb2ee 100644 --- a/public/content/translations/ja/developers/tutorials/using-websockets/index.md +++ b/public/content/translations/ja/developers/tutorials/using-websockets/index.md @@ -8,30 +8,30 @@ tags: - "WebSockets" - "クエリ" - "JavaScript" -skill: beginner +skill: 初級 source: Alchemy ドキュメント sourceUrl: https://docs.alchemyapi.io/guides/using-websockets published: 2020-12-01 --- -このガイドでは、初級者向けに、WebSocket と Alchemy を使ってイーサリアムブロックチェーンにリクエストを送信する方法を学びます。 +このガイドでは、初級者向けに、WebSocketとAlchemyを使ってイーサリアムブロックチェーンにリクエストを送信する方法を学びます。 -## WebSocket と HTTP の比較 {#websockets-vs-http} +## WebSocketとHTTPの比較 {#websockets-vs-http} -HTTP とは異なり、WebSocket では特定の情報が必要な場合にリクエストを継続的に実行する必要はありません。 WebSocket では、正しく設定されていれば、ネットワーク接続が継続され、変更をリッスンすることができます。 +HTTPとは異なり、WebSocketでは特定の情報が必要な場合にリクエストを継続的に実行する必要はありません。 WebSocketでは、正しく設定されていれば、ネットワーク接続が継続され、変更をリッスンすることができます。 -どのネットワーク接続でも同様ですが、WebSocket が中断なしに永続的にオープンであると想定すべきではありませんが、手動で切断された接続に適切に対処し、再接続するのは手間がかかる場合があります。 WebSocket のもう一つの欠点は、応答にはエラーメッセージのみが含まれ、HTTP ステータスコードを取得できないという点です。 +どのネットワーク接続でも同様ですが、WebSocketが中断なしに永続的にオープンであると想定すべきではありませんが、手動で切断された接続に適切に対処し、再接続するのは手間がかかる場合があります。 WebSocketのもう一つの欠点は、応答にはエラーメッセージのみが含まれ、HTTPステータスコードを取得できないという点です。 -​[Alchemy Web3](https://docs.alchemy.com/reference/api-overview)を利用することで、WebSocket の接続失敗に自動的に対応し、設定なしでリトライさせることができます。 +​[Alchemy Web3](https://docs.alchemy.com/reference/api-overview)を利用することで、WebSocketの接続失敗に自動的に対応し、設定なしでリトライさせることができます。 ## さっそく試してましょう {#try-it-out} -WebSocket をテストする最も簡単な方法は、[wscat](https://github.com/websockets/wscat)などの WebSocket リクエストを行うためのコマンドラインツールをインストールすることです。 wscat を使って、次のようにリクエストを送ります: +WebSocketをテストする最も簡単な方法は、[wscat](https://github.com/websockets/wscat)などのWebSocketリクエストを行うためのコマンドラインツールをインストールすることです。 wscatを使って、次のようにリクエストを送ります: -_注意:Alchemy アカウントをお持ちの場合は、 `demo`をあなたの API キーに置き換えてください。 [こちら](https://auth.alchemyapi.io/signup)で、Alchemy の無料アカウントを作成できます。_ +_注意:Alchemyアカウントをお持ちの場合は、 `demo`をあなたのAPIキーに置き換えてください。 [こちら](https://auth.alchemyapi.io/signup)で、Alchemyの無料アカウントを作成できます。_ ``` -$ wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo +wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo > {"jsonrpc": "2.0", "id": 0, "method": "eth_gasPrice"} @@ -39,17 +39,17 @@ $ wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo ``` -## WebSocket の使用方法 {#how-to-use-websockets} +## WebSocketの使用方法 {#how-to-use-websockets} -まず、アプリに WebSocket の URL を入力して WebSocket を開きます。 アプリの WebSocket URL を確認するには、[ダッシュボード](https://dashboard.alchemyapi.io/)の App ページを開き、「View Key」をクリックしてください。 アプリの WebSocket 用 URL は HTTP リクエスト用の URL とは異なっており、両方とも「View Key」で確認できる点に注意してください。 +まず、アプリにWebSocketのURLを入力してWebSocketを開きます。 アプリのWebSocket URLを確認するには、[ダッシュボード](https://dashboard.alchemyapi.io/)のAppページを開き、「View Key」をクリックしてください。 アプリのWebSocket用URLはHTTPリクエスト用のURLとは異なっており、両方とも「View Key」で確認できる点に注意してください。 ![AlchemyのダッシュボードでWebSocket URLを確認できる場所](./use-websockets.gif) -[Alchemy API レファレンス](https://docs.alchemyapi.io/documentation/alchemy-api-reference/)に記載されている API は、いずれも WebSocket 経由で使用可能です。 これには、HTTP POST リクエストの本文として送信する場合と同じペイロードを使用しますが、このペイロードを WebSocket 経由で送信します。 +[Alchemy APIレファレンス](https://docs.alchemyapi.io/documentation/alchemy-api-reference/)に記載されているAPIは、いずれもWebSocket経由で使用可能です。 これには、HTTP POSTリクエストの本文として送信する場合と同じペイロードを使用しますが、このペイロードをWebSocket経由で送信します。 -## Web3 での WebSocket 使用方法 {#with-web3} +## Web3でのWebSocket使用方法 {#with-web3} -Web3 のようなクライアント向けライブラリを使用する場合、WebSocket への移行は簡単です。 Web3 クライアントのインスタンスを作成する際に、HTTP URL ではなく WebSocket URL を渡すだけでよいです。 以下の例をご覧ください: +Web3のようなクライアント向けライブラリを使用する場合、WebSocketへの移行は簡単です。 Web3クライアントのインスタンスを作成する際に、HTTP URLではなくWebSocket URLを渡すだけでよいです。 以下の例をご覧ください: ```js const web3 = new Web3("wss://eth-mainnet.ws.alchemyapi.io/ws/your-api-key") @@ -57,24 +57,24 @@ const web3 = new Web3("wss://eth-mainnet.ws.alchemyapi.io/ws/your-api-key") web3.eth.getBlockNumber().then(console.log) // -> 7946893 ``` -## API を講読する {#subscription-api} +## APIを講読する {#subscription-api} -WebSocket 経由で接続する場合、`eth_subscribe`および`eth_unsubscribe`という 2 つの追加メソッドを使用できます。 これらのメソッドを使用することで、特定のイベントをリッスンし、すぐに通知を受け取ることができるようになります。 +WebSocket経由で接続する場合、`eth_subscribe`および`eth_unsubscribe`という2つの追加メソッドを使用できます。 これらのメソッドを使用することで、特定のイベントをリッスンし、すぐに通知を受け取ることができるようになります。 ### `eth_subscribe` {#eth-subscribe} -特定のイベントを対象とする新規のサブスクリプションを作成しましょう。 `eth_subscribe`の詳細については、[こちら](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_subscribe)をご覧ください。 +特定のイベントを対象とする新規のサブスクリプションを作成しましょう。 `eth_subscribe`の詳細については、[こちら](https://docs.alchemy.com/reference/eth-subscribe)をご覧ください。 #### パラメータ {#parameters} 1. サブスクリプションの種類 2. オプションのパラメータ -最初の引数では、リッスンするイベントのタイプを指定します。 2 番目の引数では、最初の引数に依存したオプションを追加します。 以下では、説明タイプ、タイプ別のオプション、およびイベントのペイロードについて説明します。 +最初の引数では、リッスンするイベントのタイプを指定します。 2番目の引数では、最初の引数に依存したオプションを追加します。 以下では、説明タイプ、タイプ別のオプション、およびイベントのペイロードについて説明します。 #### 戻り値 {#returns} -サブスクリプション ID:この ID は、受信したすべてのイベントに付与されるもので、`eth_unsubscribe`を使用してサブスクリプションを取り消すする際にも使用します。 +サブスクリプションID:このIDは、受信したすべてのイベントに付与されるもので、`eth_unsubscribe`を使用してサブスクリプションを取り消すする際にも使用します。 #### サブスクリプション関連のイベント {#subscription-events} @@ -83,14 +83,14 @@ WebSocket 経由で接続する場合、`eth_subscribe`および`eth_unsubscribe - `jsonrpc`: 常に「2.0」です。 - `method`: 常に「eth_subscription」です。 - `params`:以下のフィールドを含むオブジェクトです: - - `subscription`:このサブスクリプションを作成した`eth_subscription`の呼び出しが返したサブスクリプション ID です。 + - `subscription`:このサブスクリプションを作成した`eth_subscribe`の呼び出しが返したサブスクリプションIDです。 - `result`:サブスクリプションのタイプによって内容が異なるオブジェクトです。 #### サブスクリプションのタイプ {#subscription-types} 1. `alchemy_newFullPendingTransactions` -保留状態に追加されたすべてのトランザクションにつき、トランザクション情報を返します。 このサブスクリプションタイプは保留中のトランザクションを講読するため、Web3 の標準的な呼び出しである`web3.eth.subscribe("pendingTransactions")`と似ていますが、トランザクションのハッシュだけでなく*トランザクションの完全な情報*を発行するという点が異なります。 +保留状態に追加されたすべてのトランザクションにつき、トランザクション情報を返します。 このサブスクリプションタイプは保留中のトランザクションを講読するため、Web3の標準的な呼び出しである`web3.eth.subscribe("pendingTransactions")`と似ていますが、トランザクションのハッシュだけでなく_トランザクションの完全な情報_を発行するという点が異なります。 例: @@ -178,10 +178,10 @@ WebSocket 経由で接続する場合、`eth_subscribe`および`eth_unsubscribe トピック仕様の例: - `[]`:すべてのトピックを許可します。 -- `[A]`:最初の位置が A である(その後の位置については条件なし)。 -- `[null, B]`:最初の位置は条件なしで、かつ 2 番目の位置が B である(その後の位置については条件なし)。 -- `[A, B]`:最初の位置が A であり、2 番目の位置が B (その後の位置については条件なし) 。 -- `[[A, B], [A, B]]`: 最初の位置が (A または B)、かつ 2 番目の位置が (A または B) (その後の位置については条件なし) +- `[A]`:最初の位置がAである(その後の位置については条件なし)。 +- `[null, B]`:最初の位置は条件なしで、かつ2番目の位置がBである(その後の位置については条件なし)。 +- `[A, B]`:最初の位置がAであり、2番目の位置がB (その後の位置については条件なし) 。 +- `[[A, B], [A, B]]`: 最初の位置が (AまたはB)、かつ2番目の位置が (AまたはB) (その後の位置については条件なし) 例: @@ -215,11 +215,11 @@ WebSocket 経由で接続する場合、`eth_subscribe`および`eth_unsubscribe パラメータ -1. 以前に`eth_subscribe`呼び出しで返されたサブスクリプションの ID です。 +1. 以前に`eth_subscribe`呼び出しで返されたサブスクリプションのIDです。 戻り値 -サブスクリプションのキャンセルに成功した場合に`true`、または渡された ID のサブスクリプションが存在しない場合に`false`が返ります。 +サブスクリプションのキャンセルに成功した場合に`true`、または渡されたIDのサブスクリプションが存在しない場合に`false`が返ります。 例: @@ -246,4 +246,4 @@ curl https://eth-mainnet.alchemyapi.io/v2/your-api-key --- -無料で[Alchemy に登録し](https://auth.alchemyapi.io/signup)、[ドキュメント](https://docs.alchemyapi.io/)を確認しましょう。また[Twitter](https://twitter.com/AlchemyPlatform)をフォローして最新のニュースをチェックしてください。 +無料で[Alchemyに登録し](https://auth.alchemyapi.io/signup)、[ドキュメント](https://docs.alchemyapi.io/)を確認しましょう。また[Twitter](https://twitter.com/AlchemyPlatform)をフォローして最新のニュースをチェックしてください。 diff --git a/public/content/translations/ja/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/ja/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md index 984cb59a0e6..ccef3259a0a 100644 --- a/public/content/translations/ja/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md +++ b/public/content/translations/ja/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md @@ -8,7 +8,7 @@ tags: - "Solidity" - "テスト" - "モックアップ作成" -skill: intermediate +skill: 中級 lang: ja published: 2020-11-14 --- @@ -32,38 +32,38 @@ published: 2020-11-14 ### **1. プロジェクト** {#1-project} -まずはじめに、シンプルな node.js のプロジェクトを作成します。 +まずはじめに、シンプルなnode.jsのプロジェクトを作成します。 ```bash -$ mkdir dynamic-mocking -$ cd dynamic-mocking -$ mkdir contracts src +mkdir dynamic-mocking +cd dynamic-mocking +mkdir contracts src -$ yarn init +yarn init # or if you're using npm -$ npm init +npm init ``` -次に、mocha と chai の依存関係をテストする typescript を追加します。 +次に、mochaとchaiの依存関係をテストするtypescriptを追加します。 ```bash -$ yarn add --dev @types/chai @types/mocha chai mocha ts-node typescript +yarn add --dev @types/chai @types/mocha chai mocha ts-node typescript # or if you're using npm -$ npm install @types/chai @types/mocha chai mocha ts-node typescript --save-dev +npm install @types/chai @types/mocha chai mocha ts-node typescript --save-dev ``` さらに、`Waffle`と`ethers`も追加します。 ```bash -$ yarn add --dev ethereum-waffle ethers +yarn add --dev ethereum-waffle ethers # or if you're using npm -$ npm install ethereum-waffle ethers --save-dev +npm install ethereum-waffle ethers --save-dev ``` これにより、プロジェクトの構造は次のようになっているはずです: ``` -. +。 ├── contracts ├── package.json └── test @@ -73,7 +73,7 @@ $ npm install ethereum-waffle ethers --save-dev 動的モックアップを使用するには、依存関係を含むスマートコントラクトが必要です。 こちらで用意してありますので、ご心配なく! -今回は`Solidity`で書かれたシンプルなスマートコントラクトを使用しますが、このコントラクトの唯一の目的は、私たちがお金持ちであるかを確認することです。 つまり、十分な ERC-20 トークンを保有しているかどうかを確認するだけのスマートコントラクトです。 このコードを、`./contracts/AmIRichAlready.sol`に追加します。 +今回は`Solidity`で書かれたシンプルなスマートコントラクトを使用しますが、このコントラクトの唯一の目的は、私たちがお金持ちであるかを確認することです。 つまり、十分なERC-20トークンを保有しているかどうかを確認するだけのスマートコントラクトです。 このコードを、`./contracts/AmIRichAlready.sol`に追加します。 ```solidity pragma solidity ^0.6.2; @@ -97,7 +97,7 @@ contract AmIRichAlready { } ``` -動的モックアップで使用するだけなので、ERC-20 全体は必要なく、関数を 1 つだけ持つ IERC-20 インターフェイスを使います。 +動的モックアップで使用するだけなので、ERC-20全体は必要なく、関数を1つだけ持つIERC-20インターフェイスを使います。 さっそく、コントラクトをビルドしましょう! ビルドには、`Waffle`を使用します。 まず、コンパイルのオプションを指定するシンプルな`waffle.json`設定ファイルを作成します。 @@ -110,13 +110,13 @@ contract AmIRichAlready { } ``` -さて、Waffle でコントラクトをビルドする準備が整いました。 +さて、Waffleでコントラクトをビルドする準備が整いました。 ```bash -$ npx waffle +npx waffle ``` -簡単ですね。 `build/`フォルダ内に、コントラクトとインターフェイスに対応する 2 つのファイルが現れました。 これらのファイルを使ってテストを行います。 +簡単ですね。 `build/`フォルダ内に、コントラクトとインターフェイスに対応する2つのファイルが現れました。 これらのファイルを使ってテストを行います。 ### **3. テストを実行する** {#3-testing} @@ -133,20 +133,20 @@ import { } from "ethereum-waffle" ``` -JS の依存関係の他に、ビルドしたコントラクトとインターフェイスをインポートする必要があります: +JSの依存関係の他に、ビルドしたコントラクトとインターフェイスをインポートする必要があります: ```typescript import IERC20 from "../build/IERC20.json" import AmIRichAlready from "../build/AmIRichAlready.json" ``` -Waffle では、`chai`を使ってテストを実行します。 ただしその前に、Waffle のマッチャーを chai に追加する必要があります: +Waffleでは、`chai`を使ってテストを実行します。 ただしその前に、Waffleのマッチャーをchaiに追加する必要があります: ```typescript use(solidity) ``` -各テストの実行前にコントラクトの状態をリセットするため、`beforeEach()`関数を実装する必要があります。 まず、この関数には何が必要かを考えてみましょう。 コントラクトをデプロイするには、ウォレットと、`AmIRichAlready`コントラクトに引数として渡すためのデプロイされた ERC-20 コントラクトが必要です。 +各テストの実行前にコントラクトの状態をリセットするため、`beforeEach()`関数を実装する必要があります。 まず、この関数には何が必要かを考えてみましょう。 コントラクトをデプロイするには、ウォレットと、`AmIRichAlready`コントラクトに引数として渡すためのデプロイされたERC-20コントラクトが必要です。 まず、ウォレットを作成します: @@ -154,13 +154,13 @@ use(solidity) const [wallet] = new MockProvider().getWallets() ``` -次に、ERC-20 コントラクトをデプロイする必要があります。 今のところ、私たちはインターフェイスしか持っていないので、工夫が必要になります。 ここで、Waffle が助けてくれます。 Waffle には、インターフェイスの*ABI*だけを使用してコントラクトを作成できる、魔法のような`deployMockContract()`関数が含まれているのです。 +次に、ERC-20コントラクトをデプロイする必要があります。 今のところ、私たちはインターフェイスしか持っていないので、工夫が必要になります。 ここで、Waffleが助けてくれます。 Waffleには、インターフェイスの_ABI_だけを使用してコントラクトを作成できる、魔法のような`deployMockContract()`関数が含まれているのです。 ```typescript const mockERC20 = await deployMockContract(wallet, IERC20.abi) ``` -ウォレットとデプロイされた ERC-20 コントラクトの両方が準備できたので、さっそく`AmIRichAlready`コントラクトをデプロイしましょう: +ウォレットとデプロイされたERC-20コントラクトの両方が準備できたので、さっそく`AmIRichAlready`コントラクトをデプロイしましょう: ```typescript const contract = await deployContract(wallet, AmIRichAlready, [ @@ -198,9 +198,9 @@ describe("Am I Rich Already", () => { }) ``` -この`AmIRichAlready`コントラクトに対する初回のテストを書きましょう。 テストの対象は何にすべきだと思いますか? 言うまでもなく、 私たちがお金持ちであるかをチェックするのですね :) +この`AmIRichAlready`コントラクトの最初のテストを書きましょう。 テストの対象は何にすべきだと思いますか? 言うまでもなく、 私たちがお金持ちであるかをチェックするのですね :) -でもちょっと待ってください。 今作成したコントラクトでは、どのような値を返すべきかを指定していませんでした。 `balanceOf()`関数のロジックが実装されていないからです。 ここでも Waffle が助けてくれます。 モックアップを作成したコントラクトには、新たに以下のような素敵なコードが付け加えられています: +でもちょっと待ってください。 今作成したコントラクトでは、どのような値を返すべきかを指定していませんでした。 `balanceOf()`関数のロジックが実装されていないからです。 ここでもWaffleが助けてくれます。 モックアップを作成したコントラクトには、新たに以下のような素敵なコードが付け加えられています: ```typescript await mockERC20.mock..returns() @@ -218,14 +218,14 @@ it("returns false if the wallet has less than 1000000 tokens", async () => { このテストを、構成要素に分解してみましょう: -1. モックアップの ERC-20 コントラクトは、常に、999999 トークンの残高を返すように設定します。 +1. モックアップのERC-20コントラクトは、常に、999999トークンの残高を返すように設定します。 2. `contract.check()`メソッドが、`false`を返すか確認します。 ようやく、テストを実行する準備ができました。 ![1つのテストが合格](./test-one.png) -テストは実行されましたが・・・改善の余地がありますね。 `balanceOf()`関数は、常に 99999 を返します。 実際のコントラクトのように、関数が値を返すウォレットを指定するともっとテストらしくなるでしょう。 +テストは実行されましたが・・・改善の余地がありますね。 `balanceOf()`関数は、常に99999を返します。 実際のコントラクトのように、関数が値を返すウォレットを指定するともっとテストらしくなるでしょう。 ```typescript it("returns false if the wallet has less than 1000001 tokens", async () => { @@ -255,7 +255,7 @@ it("returns true if the wallet has at least 1000001 tokens", async () => { ## コントラクトの呼び出しをテストする {#testing-contract-calls} -これまでの進展をまとめておきましょう。 `AmIRichAlready`コントラクトの機能をテストし、正常に動作していることが確認できたようです。 これで終わりだろうって? いいえ、まだ少し残っています。 Waffe を使えば、さらに多くの事項をテストすることができます。 具体的に説明すると、 Waffle には`calledOnContract()`マッチャーと`calledOnContractWith()`マッチャーが搭載されています。 これらを使えば、作成したコントラクトがモックアップの ERC-20 コントラクトを呼び出したかどうかを確認できるのです。 いずれかのマッチャーを使用した基本的なテストは、次のようになります: +これまでの進展をまとめておきましょう。 `AmIRichAlready`コントラクトの機能をテストし、正常に動作していることが確認できたようです。 これで終わりだろうって? いいえ、まだ少し残っています。 Waffeを使えば、さらに多くの事項をテストすることができます。 具体的に説明すると、 Waffleには`calledOnContract()`マッチャーと`calledOnContractWith()`マッチャーが搭載されています。 これらを使えば、作成したコントラクトがモックアップのERC-20コントラクトを呼び出したかどうかを確認できるのです。 いずれかのマッチャーを使用した基本的なテストは、次のようになります: ```typescript it("checks if contract called balanceOf on the ERC20 token", async () => { @@ -283,16 +283,16 @@ it("checks if contract called balanceOf with certain wallet on the ERC20 token", 幸いなことに、すべてのテストに合格しました。 -Waffle を使えば、コントラクトの呼び出しをとても簡単にテストできます。 特にすばらしいのは、 これらのマッチャーを通常のコントラクトとモックアップのコントラクトの両方に使えることです! 他のテクノロジー向けの人気が高いテストライブラリと同じように、Waffle は、コードを挿入するのではなく、EVM 呼び出しを記録し、フィルタ処理を行うアプローチを採用しています。 +Waffleを使えば、コントラクトの呼び出しをとても簡単にテストできます。 特にすばらしいのは、 これらのマッチャーを通常のコントラクトとモックアップのコントラクトの両方に使えることです! 他のテクノロジー向けの人気が高いテストライブラリと同じように、Waffleは、コードを挿入するのではなく、EVM呼び出しを記録し、フィルタ処理を行うアプローチを採用しています。 ## おわりに {#the-finish-line} -おめでとうございます! これで、Waffle を使用して、コントラクトの呼び出しや、モックアップのコントラクトを動的にテストする方法を身に付けることができました。 この他にもたくさんの興味深い機能がありますので、 Waffle のドキュメンテーションに目を通すことをおすすめします。 +おめでとうございます! これで、Waffleを使用して、コントラクトの呼び出しや、モックアップのコントラクトを動的にテストする方法を身に付けることができました。 この他にもたくさんの興味深い機能がありますので、 Waffleのドキュメンテーションに目を通すことをおすすめします。 -Waffle のドキュメンテーションは、[こちら](https://ethereum-waffle.readthedocs.io/)から入手できます。 +Waffleのドキュメンテーションは、[こちら](https://ethereum-waffle.readthedocs.io/)から入手できます。 このチュートリアルのソースコードは、[こちら](https://github.com/EthWorks/Waffle/tree/master/examples/dynamic-mocking-and-testing-calls)からアクセスできます。 さらに、以下のチュートリアルをおすすめします: -- [Waffle を使ってスマートコントラクトをテストする](/developers/tutorials/waffle-test-simple-smart-contract/) +- [Waffleを使ってスマートコントラクトをテストする](/developers/tutorials/testing-smart-contract-with-waffle/) diff --git a/public/content/translations/ja/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md b/public/content/translations/ja/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md index 2134666844d..aea5d5cf679 100644 --- a/public/content/translations/ja/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md +++ b/public/content/translations/ja/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md @@ -14,9 +14,9 @@ lang: ja published: 2020-10-16 --- -この[Waffle](https://ethereum-waffle.readthedocs.io)チュートリアルでは、[Hardhat](https://hardhat.org/)と[ethers.js](https://docs.ethers.io/v5/)を使用して、「Hello world」と表示するシンプルなスマートコントラクトのプロジェクトを作成する方法を学びます。 さらに、Waffle 上で作成したスマートコントラクトに新たな機能を追加し、テストする方法を学びます。 +この[Waffle](https://ethereum-waffle.readthedocs.io)チュートリアルでは、[Hardhat](https://hardhat.org/)と[ethers.js](https://docs.ethers.io/v5/)を使用して、「Hello world」と表示するシンプルなスマートコントラクトのプロジェクトを作成する方法を学びます。 さらに、Waffle上で作成したスマートコントラクトに新たな機能を追加し、テストする方法を学びます。 -まずはじめに、以下のように新しいプロジェクトを作成します: +まずはじめに新しいプロジェクトを作成しましょう。 ```bash yarn init @@ -40,7 +40,7 @@ yarn add -D hardhat @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle e npm install -D hardhat @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chai ``` -次に、`npx hardhat`を実行して、サンプルの Hardhat プロジェクトを作成します。 +次に、`npx hardhat`を実行して、サンプルのHardhatプロジェクトを作成します。 ```bash 888 888 888 888 888 @@ -73,7 +73,7 @@ MyWaffleProject │ └── sample-script.js ├── test │ └── sample-test.js -├── .gitattributs +├── .gitattributes ├── .gitignore ├── hardhat.config.js └── package.json @@ -81,7 +81,7 @@ MyWaffleProject ### 次に、これらのファイルのいくつかを説明します。 {#now-lets-talk} -- Greeter.sol は、このチュートリアルで使用する Solidity で書かれたスマートコントラクトです。 +- Greeter.solは、このチュートリアルで使用するSolidityで書かれたスマートコントラクトです。 ```solidity contract Greeter { @@ -103,11 +103,11 @@ greeting = _greeting; } ``` -このスマートコントラクトは、以下の 3 つの要素に分解できます: +このスマートコントラクトは、以下の3つの要素に分解できます: 1. コンストラクタ:`greeting`という名前の文字列型の変数を宣言する場所です。 -2. greet 関数:`greeting`を返す関数です。 -3. setGreeting 関数:`greeting`の値を変更する関数です。 +2. greet関数:`greeting`を返す関数です。 +3. setGreeting関数:`greeting`の値を変更する関数です。 - sample-test.js:テストを実行するファイルです。 @@ -128,7 +128,7 @@ describe("Greeter", function () { ### 次に、コントラクトをコンパイルし、テストを実行します。 {#compiling-and-testing} -Waffle では、Mocha(テスト用フレームワーク)および Chai(アサーションライブラリ)を使ってテストを実行します。 `npx hardhat test`を実行して、以下のメッセージが表示されるまで待つだけです。 +Waffleでは、Mocha(テスト用フレームワーク)およびChai(アサーションライブラリ)を使ってテストを実行します。 `npx hardhat test`を実行して、以下のメッセージが表示されるまで待つだけです。 ```bash ✓ Should return the new greeting once it's changed @@ -139,7 +139,7 @@ Waffle では、Mocha(テスト用フレームワーク)および Chai(ア 他のユーザーが、挨拶の代わりに空の文字列を追加したと想定してみましょう。 無言の挨拶は嬉しくありませんね! ですから、このようなことが起こらないようにします: -空の文字列が渡された場合に、Solidity の`revert`機能を利用できるようにします。 この機能は、Waffle の chai マッチャーである`to.be.revertedWith()`で簡単にテストできます。 +空の文字列が渡された場合に、Solidityの`revert`機能を利用できるようにします。 この機能は、Waffleのchaiマッチャーである`to.be.revertedWith()`で簡単にテストできます。 ```js it("Should revert when passing an empty string", async () => { @@ -174,7 +174,7 @@ Changing greeting from 'Hello, world!' to '' require(bytes(_greeting).length > 0, "Greeting should not be empty"); ``` -これにより、setGreeting 関数は以下のようになっているはずです: +これにより、setGreeting関数は以下のようになっているはずです: ```solidity function setGreeting(string memory _greeting) public { @@ -197,6 +197,6 @@ greeting = _greeting; ### まとめ {#conclusion} -Waffle、Hardhat、および ethers.js を使った簡単なプロジェクトを作成しました。 このチュートリアルでは、プロジェクトを開始し、テストを追加し、さらに新たな機能を実装する方法について学びました。 +Waffle、Hardhat、およびethers.jsを使った簡単なプロジェクトを作成しました。 このチュートリアルでは、プロジェクトを開始し、テストを追加し、さらに新たな機能を実装する方法について学びました。 -スマートコントラクトのテストに大活躍する Chai マッチャーについてさらに知りたい場合は、[Waffle の公式文書](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html)を参照してください。 +スマートコントラクトのテストに大活躍するChaiマッチャーについてさらに知りたい場合は、[Waffleの公式文書](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html)を参照してください。 diff --git a/public/content/translations/ja/developers/tutorials/yellow-paper-evm/index.md b/public/content/translations/ja/developers/tutorials/yellow-paper-evm/index.md index f4a03f03ae3..8cab56944c6 100644 --- a/public/content/translations/ja/developers/tutorials/yellow-paper-evm/index.md +++ b/public/content/translations/ja/developers/tutorials/yellow-paper-evm/index.md @@ -4,7 +4,7 @@ description: イーサリアムの正式な仕様であるイエローペーパ author: "qbzzt" tags: - "イーサリアム仮想マシン(EVM)" -skill: intermediate +skill: 中級 lang: ja published: 2022-05-15 --- @@ -33,7 +33,7 @@ _システム状態_とは、システムを実行するため必要なすべて このセクションでは、EVMの基本事項と、EVMと他の計算モデルとの比較について説明しています。 -[スタックマシン](https://en.wikipedia.org/wiki/Stack_machine)は、中間データをレジスタではなく[**スタック**](https://en.wikipedia.org/wiki/Stack_(abstract_data_type))に格納するコンピュータです。 これは、仮想マシンで好まれるアーキテクチャです。なぜなら、実装が簡単で、バグやセキュリティの脆弱性が発生する可能性を大幅に低くできるためです。 スタック内のメモリは、256ビットのワードに分割されます。 256ビットが選ばれた理由としては、Kecck-256ハッシュや楕円曲線計算など、イーサリアムの中核となる暗号操作に都合が良いためです。 スタックの最大サイズは、1024バイトです。 オペコード実行時、通常、スタックからパラメータを取得します。 `POP`(スタックの先頭のアイテムの削除)、`DUP_N`(スタックのN番目のアイテムの複製)など、スタック内の要素を再構成するための専用オペコードがあります。 +[スタックマシン](https://en.wikipedia.org/wiki/Stack_machine)は、中間データをレジスタではなく[**スタック**](https:// en.wikipedia.org/wiki/Stack_(abstract_data_type))に格納するコンピュータです。 これは、仮想マシンで好まれるアーキテクチャです。なぜなら、実装が簡単で、バグやセキュリティの脆弱性が発生する可能性を大幅に低くできるためです。 スタック内のメモリは、256ビットのワードに分割されます。 256ビットが選ばれた理由としては、Kecck-256ハッシュや楕円曲線計算など、イーサリアムの中核となる暗号操作に都合が良いためです。 スタックの最大サイズは、1024バイトです。 オペコード実行時、通常、スタックからパラメータを取得します。 `POP`(スタックの先頭のアイテムの削除)、`DUP_N`(スタックのN番目のアイテムの複製)など、スタック内の要素を再構成するための専用オペコードがあります。 EVMには、 実行中にデータを保存するために使用される**メモリ**と呼ばれる揮発性スペースもあります。 このメモリは、32バイトのワードで構成されます。 すべてのメモリのロケーションは、ゼロで初期化されます。 次の[Yul](https://docs.soliditylang.org/en/latest/yul.html)コードを実行してメモリにワードを追加すると、32バイトのメモリのワード内にある空スペースがパディングによってゼロで埋められます。つまり、ロケーション0~29、0x60~30、0xA7~31にゼロが含まれる1つのワードが作成されます。 @@ -96,7 +96,7 @@ EVMには、システム状態の一部として保持される独自の不揮 | _Ia_ | [`ADDRESS`](https://www.evm.codes/#30) | `address(this)` | | _Io_ | [`ORIGIN`](https://www.evm.codes/#32) | `tx.origin` | | _Ip_ | [`GASPRICE`](https://www.evm.codes/#3a) | `tx.gasprice` | -| _Id_ | [`CALLDATALOAD`](https://www.evm.codes/#35)など | `msg.data` | +| _Id_ | [`CALLDATALOAD`](https://www.evm.codes/#35), etc. | `msg.data` | | _Is_ | [`CALLER`](https://www.evm.codes/#33) | `msg.sender` | | _Iv_ | [`CALLVALUE`](https://www.evm.codes/#34) | `msg.value` | | _Ib_ | [`CODECOPY`](https://www.evm.codes/#39) | `address(this).code` | @@ -235,7 +235,7 @@ _σ[μs[0] mod 2160] ≠ ∅_の場合、このアドレ | 0x8F | DUP16 | 16 | 17 | 16番目のスタックアイテムを複製 | | | | | | _μ′s[0] ≡ μs[15]_ | -スタックアイテムを使用するには、ポップする必要があることに注意してください。つまり、そのアイテム上にあるすべてのスタックアイテムもポップする必要があります。 [`DUP`](https://www.evm.codes/#8f)および[`SWAP`](https://www.evm.codes/#9f)の場合は、最大で16個の値をポップして、その後にプッシュしなければならなりません。 +スタックアイテムを使用するには、ポップする必要があることに注意してください。つまり、そのアイテム上にあるすべてのスタックアイテムもポップする必要があります。 [`DUP`](https://www.evm.codes/#8f)および[`SWAP`](https://www. evm.codes/#9f)の場合は、最大で16個の値をポップして、その後にプッシュしなければならなりません。 ## 9.5 実行サイクル {#95-exec-cycle} diff --git a/public/content/translations/ja/energy-consumption/energy_consumption_pre_post_merge.svg.xlsx b/public/content/translations/ja/energy-consumption/energy_consumption_pre_post_merge.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e70e1eb88a5a8bbd18979a95656a93625a632cfb GIT binary patch literal 4826 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 Co4>UH literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/enterprise/index.md b/public/content/translations/ja/enterprise/index.md index 7971163d401..4911344d18d 100644 --- a/public/content/translations/ja/enterprise/index.md +++ b/public/content/translations/ja/enterprise/index.md @@ -4,9 +4,9 @@ description: パブリックなイーサリアムブロックチェーン上の lang: ja --- -# エンタープライズ向けイーサリアムメインネット {#ethereum-for-enterprise} +# 企業向けイーサリアム {#ethereum-for-enterprise} -ブロックチェーンアプリケーションはビジネスに役立ちます。 +大企業を含むさまざまな種類のビジネスでイーサリアムを役立てることができます。 - 信頼性を高め、ビジネス当事者間の連携コストを削減 - ビジネスネットワークの説明責任と運用効率を向上 @@ -17,123 +17,134 @@ lang: ja ## パブリックとプライベードのイーサリアムの比較 {#private-vs-public} -パブリック型イーサリアムメインネットは 1 つしかありません。 メインネット上に構築されているアプリケーションは相互運用が可能です。インターネット上で構築されたアプリケーションと同様に、分散型ブロックチェーンの可能性を最大限に活用して相互に接続することができます。 +パブリック型イーサリアムメインネットは1つしかありません。 メインネット上に構築されているアプリケーションは相互運用が可能です。インターネット上で構築されたアプリケーションと同様に、分散型ブロックチェーンの可能性を最大限に活用して相互に接続することができます。 -多くの企業やコンソーシアムは、イーサリアムテクノロジーに基づく特定のアプリケーションに対して、プライベートで許可型のブロックチェーンを展開しています。 +多くの企業やコンソーシアムは、特定のアプリケーション向けに、イーサリアム技術に基づくプライベートなパーミッションド・ブロックチェーンをデプロイしています。 ### 主な相違点 {#key-differences} -- ブロックチェーンのセキュリティ/不変性。改ざんに対するブロックチェーンの耐性は、そのコンセンサスアルゴリズムによって決定されます。 イーサリアムメインネットは、世界中の個人とマイナーによって運営される何千もの独立したノードの相互作用によって保護されています。 プライベートチェーンには、通常、1 つまたは複数の組織によって制御される少数のノードがあります。それらのノードは厳重に制御できますが、ノードが数個侵害されるだけでチェーンを書き換えたり不正取引を行うことができます。 -- パフォーマンス - プライベートエンタープライズイーサリアムチェーンでは、特別なハードウェア要件と権限証明などの異なるコンセンサスアルゴリズムを備えた高性能ノードを使用する可能性があるため。 ベースレイヤー(Layer1)でより高いトランザクションスループットを達成する場合があります。 イーサリアムメインネットでは、拡張レイヤーである[レイヤー 2](/developers/docs/scaling/#layer-2-scaling)を使用することで、高いスループットを実現できます。 -- コスト - プライベートチェーンを運営するためのコストは主に、チェーンを設定し管理する労力と、それを実行するためのサーバに織り込まれています。 イーサリアムメインネットに接続するためのコストはかかりませんが、各トランザクションにかかるガス料金は Ether で支払う必要があります。 エンドユーザーや企業がトランザクションに Ether を直接使用しなくてもいいように、トランザクションリレイヤー(別名ガスステーション)が開発されています。 ある[分析](https://github.com/EYBlockchain/fundamental-cost-of-ownership/blob/master/EY%20Total%20Cost%20of%20Ownership%20for%20Blockchain%20Solutions.pdf)によると、メインネット上でアプリケーションを運用するための総コストは、プライベートチェーンを実行するコストを下回る可能性があることを示しています。 +- ブロックチェーンのセキュリティ/不変性。改ざんに対するブロックチェーンの耐性は、そのコンセンサスアルゴリズムによって決定されます。 イーサリアムメインネットは、世界中の個人とマイナーによって運営される何千もの独立したノードの相互作用によって保護されています。 プライベートチェーンには、通常、1つまたは複数の組織によって制御される少数のノードがあります。それらのノードは厳重に制御できますが、ノードが数個侵害されるだけでチェーンを書き換えたり不正取引を行うことができます。 +- パフォーマンス - プライベートエンタープライズイーサリアムチェーンでは、特別なハードウェア要件と権限証明などの異なるコンセンサスアルゴリズムを備えた高性能ノードを使用する可能性があるため。 ベースレイヤー(Layer1)でより高いトランザクションスループットを達成する場合があります。 イーサリアムメインネットでは、拡張レイヤーである[レイヤー2](/layer-2)を使用することで、高いスループットを実現できます。 +- コスト - プライベートチェーンを運営するためのコストは、チェーンを設定し、管理するための労働とそれを実行するためのサーバに主に反映されます。 イーサリアムメインネットに接続するためのコストはかかりませんが、各トランザクションにかかるガス料金はイーサで支払う必要があります。 メタトランザクションリレーヤーでは、エンドユーザーだけでなく企業もトランザクションでイーサを直接保持して使用する必要が無くなります。 [ある分析](https://theblockchaintest.com/uploads/resources/EY%20-%20Total%20cost%20of%20ownership%20for%20blockchain%20solutions%20-%202019%20-%20Apr.pdf)では、アプリケーションを運用するための総コストは、プライベート チェーンを実行するよりもメインネットの方が低くなる可能性があることを示しています。 - ノードの権限 - 承認されたノードのみがプライベートチェーンに参加できます。 誰でもイーサリアムメインネット上でノードを設定できます。 -- プライバシー - プライベートチェーンに書き込まれたデータへのアクセスは、アクセス制御とプライベートトランザクションを使用したより詳細なベースで、ネットワークへのアクセスを制限することで制御できます。 メインネットレイヤー 1 に書き込まれたすべてのデータは誰でも閲覧可能であるため、機密情報はオフチェーンで保存、送信されるか、または暗号化される必要があります。 レイヤー 1 のデータを区切ったりオフにした状態に維持できるレイヤー 2 ソリューションに加えて、これを容易にするデザインパターンが出現しています(たとえば、 ベースライン、Aztec)。 +- プライバシー - プライベートチェーンに書き込まれたデータへのアクセスは、アクセス制御とプライベートトランザクションを使用したより詳細なベースで、ネットワークへのアクセスを制限することで制御できます。 メインネットレイヤー1に書き込まれたすべてのデータは誰でも閲覧可能であるため、機密情報はオフチェーンで保存、送信されるか、または暗号化される必要があります。 レイヤー1のデータを区切ったりオフにした状態に維持できるレイヤー2ソリューションに加えて、これを容易にするデザインパターンが出現しています(たとえば、 ベースライン、Nightfall)。 ### イーサリアムメインネット上に構築する理由 {#why-build-on-ethereum-mainnet} -Hyperledger、Quorum、Corda プロジェクトが開始された 2016 年頃から、企業はブロックチェーン技術の実験を行っています。 主に民間の許可を受けたエンタープライズ向けブロックチェーンに重点を置いていましたが、2019 年から、ビジネスアプリケーション向けのパブリックブロックチェーンとプライベートブロックチェーンという考え方に移行していきました。 Forrester が実施した[調査](https://assets.ey.com/content/dam/ey-sites/ey-com/en_gl/topics/blockchain/ey-public-blockchain-opportunity-snapshot.pdf)では、「調査回答者は... この可能性を見出しています。75%が将来的にパブリックブロックチェーンを活用する可能性があると述べており、3 分の 1 弱が非常に可能性が高いと答えている」ことが明らかになっています。 EY の Paul Brody は[パブリックブロックチェーンを構築することの利点について](https://www.youtube.com/watch?v=-ycu5vGDdZw&feature=youtu.be&t=3668)話しており、パブリックブロックチェーンには、(アプリケーションに応じて)より強力なセキュリティ/不変性、 透明性、総所有コストの削減、およびメインネット上にある他のすべてのアプリケーションと相互運用する機能(ネットワーク効果)が含まれる可能性があると述べています。 企業間で共通の枠組みを共有することで、情報を交換、共有、同期できない多数の孤立した無駄なサイロ構造を回避することができます。 +ビジネスにとって、パブリックブロックチェーンの主な利点としては、独占に抵抗できることです。 ビジネスでの取引を調整するための中立的な仲裁者としてイーサリアムメインネットを使うことで、競合他社が支配権や影響力を駆使して不利な立場に置いてくるような別の会社を信頼することを回避できます。 誰もが参加、使用、貢献できる、オープンでパーミッションレスの分散型プラットフォームにおいて、権力を利用してユーザーに対して優位に立つような中央権力は存在しません。 -パブリックブロックチェーンに焦点を移しているもう一つの開発は、 [レイヤー 2](/developers/docs/scaling/#layer-2-scaling)です。 レイヤー 2 は主にスケーラビリティ技術のカテゴリーであり、パブリックチェーン上でハイスループットアプリケーションを実現するものですが、 レイヤー 2 ソリューションは、 [過去にエンタープライズ向けデベロッパーがプライベートチェーンを選択するようになるきっかけとなったその他の課題に対処することもできます](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/)。 +Hyperledger、Quorum、Cordaプロジェクトが開始された2016年頃から、企業はブロックチェーン技術の実験を行っています。 当初は、主にプライベート・パーミッションド・エンタープライズ・ブロックチェーンに重点を置いていましたが、2019年から、ビジネスアプリケーション向けのパブリックブロックチェーンとプライベートブロックチェーンという考え方に移行していきました。 EYのPaul Brodyは[(プライベートに対して)パブリックブロックチェーンを構築することの利点について](https://www.youtube.com/watch?v=-ycu5vGDdZw&feature=youtu.be&t=3668)話しており、パブリックブロックチェーンには、(アプリケーションに応じて)より強力なセキュリティ/不変性、 透明性、総所有コストの削減、およびメインネット上にある他のすべてのアプリケーションと相互運用する機能(ネットワーク効果)が含まれる可能性があると述べています。 企業間で共通の枠組みを共有することで、情報を交換、共有、同期できない多数の孤立した無駄なサイロ構造を回避することができます。 -## エンタープライズ向けデベロッパーリソースについて {#enterprise-developer-resources} +パブリックブロックチェーンに焦点を移しているもう一つの開発は、 [レイヤー2](/layer-2)です。 レイヤー2は主にスケーラビリティ技術のカテゴリーであり、パブリックチェーン上でハイスループットアプリケーションを実現するものですが、 レイヤー2ソリューションは、 [過去にエンタープライズ向けデベロッパーがプライベートチェーンを選択するようになるきっかけとなったその他の課題に対処することもできます](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/)。 + +## リソース {#enterprise-resources} + +### 参考文献 {#further-reading} + +ビジネスにおいてイーサリアムからどのようなメリットを得ているか理解するための非技術的なリソース + +- [エンタープライズ・イーサリアム・アライアンス2023ビジネス準備状況レポート](https://entethalliance.org/eea-ethereum-business-readiness-report-2023/) - _パブリックイーサリアムとビジネス向けのより広範なイーサリアムエコシステムの可能性と機能の調査_ +- [_ビジネス向けのイーサリアム_ Paul Brody著](https://www.uapress.com/product/ethereum-for-business/) - _資産管理からサプライチェーンへの支払いにおいて収益を生み出すユースケースがわかりやすい英語で書かれているガイド_ ### 組織 {#organizations} イーサリアムを企業にとって身近な存在にするために、さまざまな組織が次のような協力的な取り組みを行っています。 -- [エンタープライズ・イーサリアム・アライアンス (EEA)](https://entethalliance.org/) EEA により、組織は日常業務にイーサリアムテクノロジーを導入、使用することができます。 イーサリアムのエコシステムを強化し、新しいビジネスチャンスを開発し、業界の採用を促進し、互いに学び、協力します。 EEA のメインネットワーキンググループは、パブリックなイーサリアムメインネットを構築することに興味を持っている企業や、彼らをサポートするイーサリアムコミュニティメンバーの集まりです。 -- [イーサリアム・オアシス・オープン・プロジェクト](https://github.com/ethereum-oasis/oasis-open-project) イーサリアム・オアシス・オープン・プロジェクトは、多様なステークホルダーに中立的なフォーラムを提供し、イーサリアムの長期的な安定性、相互運用性、統合の容易性を促進する高品質の仕様を実現できるオアシス・オープン・プロジェクトです。 このプロジェクトでは、イーサリアムプロトコルの新機能と拡張を容易にする明確なオープン標準、高品質なドキュメント、共有テストスイートを開発を予定しています。 -- [ベースラインプロジェクト(Baseline Project)](https://www.baseline-protocol.org/) ペースラインプロトコルは、暗号技術、メッセージング、ブロックチェーンの利点を組み合わせて、パブリックなイーサリアムメインネットを介して安全かつプライベートなビジネスプロセスを低コストで提供するオープンソースのイニシアチブです。 このプロトコルにより、機密データをオンチェーンに残すことなく、企業間の機密かつ複雑なコラボレーションが可能になります。 ベースラインプロジェクトは、イーサリアム・オアシス・オープン・プロジェクトのサブプロジェクトであり、ベースライン技術運営委員会によって調整されています。 +- [エンタープライズ・イーサリアム・アライアンス (EEA)](https://entethalliance.org/) EEAは、組織に対して日常業務にイーサリアムテクノロジーを導入、使用することを支援します。 組織の目標としては、専門的および商業的なサポート、提唱および研究、標準の開発およびエコシステムトラストサービスを通じてビジネスにおけるイーサリアムを促進することです。 +- [グローバル・ブロックチェーン・ビジネス評議会 (GBBC) ](https://www.gbbc.io/) - GBBCは、ブロックチェーン・テクノロジー・エコシステムの業界団体です。 政策立案者や規制当局との調整、イベントの開催および深い議論、研究の推進を通して、GBBCは、より安全で公平で機能的な社会を構築するためのブロックチェーンのさらなる導入に専念しています。 + + +## エンタープライズ向けデベロッパーリソースについて {#enterprise-developer-resources} ### プロダクトとサービス {#products-and-services} -- [Alchemy](https://www.alchemy.com/)_ イーサリアムでアプリケーションを作成、監視するための API サービスとツールを提供_ -- [Blast](https://blastapi.io/) _イーサリアムアーカイブのメインネットおよびテストネットの RPC/WSS API を提供する API プラットフォーム_ -- [Blockapps](https://blockapps.net/) _STRATO プラットフォームを構成するエンタープライズイーサリアムプロトコル、ツール、API の実装_ -- [Chainstack](https://chainstack.com/) _メインネットおよびテストネットのイーサリアムインフラストラクチャをパブリックおよび隔離されたカスタマークラウドでホスト_ -- [ConsenSys](https://consensys.io/) _イーサリアム上で構築するためのさまざまなプロダクトとツール、ならびにコンサルティングとカスタム開発サービスを提供_ -- [Envision Blockchain](https://envisionblockchain.com/) _イーサリアムメインネットに特化したエンタープライズ向けコンサルティングおよび開発サービスを提供_ -- [EY OpsChain](https://blockchain.ey.com/products/contract-manager) _ 信頼できるビジネスパートナーのネットワーク全体で、RFQ、コントラクト、発注書、請求書を発行することにより、調達ワークフローを提供_ -- [Hyperledger Besu](https://www.hyperledger.org/use/besu) _Java で書かれた Apache 2.0 ライセンスに基づくオープンソースのエンタープライズ向けイーサリアムクライアント_ -- [Infura](https://infura.io/) _イーサリアムおよび IPFS ネットワークへのスケーラブルな API アクセス_ -- [Kaleido](https://kaleido.io/) _簡素化されたブロックチェーンとデジタル資産アプリケーションを提供するエンタープライズ向け開発プラットフォーム_ -- [エンタープライズ向け Web3 アプリケーションに](https://provide.services/)_インフラストラクチャと API を提供_ -- [QuickNode](https://www.quicknode.com/) _統合されたプロダクトスイートとエンタープライズ級のソリューションを提供しながら、NFT API、トークン API などの高レベル API を備えた信頼性の高い高速ノードを提供_ -- [Tenderly](https://tenderly.co) - _スマートコントラクトの開発、テスト、監視、運用のためのデバッグ、オブザーバビリティ、インフラストラクチャビルディングブロックを提供する Web3 開発プラットフォーム_ -- [Unibright](https://unibright.io/) _ビジネスプロセスと統合の分野で 20 年以上の経験を持つブロックチェーン専門家、建築家、デベロッパー、コンサルタントのチーム_ -- [Zero Services GmbH](https://www.zeroservices.eu/) _ヨーロッパとアジアのコロケーションにまたがるマネージドサービスのプロバイダー ノードを安全かつ確実に運用、監視_ +- [4EVERLAND](https://www.4everland.org/) - _分散型アプリケーションをホストするためのAPI、RPCサービス、ツールを提供し、イーサリアム上で分散型ストレージを実現_ +- [Alchemy](https://www.alchemy.com/) - _ イーサリアムでアプリケーションを作成、監視するためのAPIサービスとツールを提供_ +- [Blast](https://blastapi.io/) - _イーサリアムアーカイブのメインネットおよびテストネットのRPC/WSS APIを提供するAPIプラットフォーム_ +- [Blockapps](https://blockapps.net/) - _STRATOプラットフォームを構成するエンタープライズイーサリアムプロトコル、ツール、APIの実装_ +- [Chainstack](https://chainstack.com/) - _メインネットおよびテストネットのイーサリアムインフラストラクチャをパブリックおよび隔離されたカスタマークラウドでホスト_ +- [ConsenSys](https://consensys.io/) - _イーサリアム上で構築するためのさまざまなプロダクトとツール、ならびにコンサルティングとカスタム開発サービスを提供_ +- [Envision Blockchain](https://envisionblockchain.com/) - _イーサリアムメインネットに特化したエンタープライズ向けコンサルティングおよび開発サービスを提供_ +- [EY OpsChain](https://blockchain.ey.com/products/contract-manager) - _ 信頼できるビジネスパートナーのネットワーク全体で、RFQ、コントラクト、発注書、請求書を発行することにより、調達ワークフローを提供_ +- [Hyperledger Besu](https://www.hyperledger.org/use/besu) - _Javaで書かれたApache 2.0ライセンスに基づくオープンソースのエンタープライズ向けイーサリアムクライアント_ +- [Infura](https://infura.io/) - _イーサリアムおよびIPFSネットワークへのスケーラブルなAPIアクセス_ +- [Kaleido](https://kaleido.io/) - _簡素化されたブロックチェーンとデジタル資産アプリケーションを提供するエンタープライズ向け開発プラットフォーム_ +- [NodeReal](https://nodereal.io/) - _Web3エコシステムにスケーラブルなブロックチェーンインフラストラクチャとAPIサービス プロバイダーを提供_ +- [Provide](https://provide.services/) - _企業向けゼロ知識ミドルウェア_ +- [QuickNode](https://www.quicknode.com/) - _統合されたプロダクトスイートとエンタープライズ級のソリューションを提供しながら、NFT API、トークンAPIなどの高レベルAPIを備えた信頼性の高い高速ノードを提供_ +- [Tenderly](https://tenderly.co) - _スマートコントラクトの開発、テスト、監視、運用のためのデバッグ、オブザーバビリティ、インフラストラクチャビルディングブロックを提供するWeb3開発プラットフォーム_ +- [Unibright](https://unibright.io/) - _ビジネスプロセスと統合の分野で20年以上の経験を持つブロックチェーン専門家、建築家、デベロッパー、コンサルタントのチーム_ +- [Zeeve](https://www.zeeve.io/) - _イーサリアムに構築するための幅広いプロダクトとツール、エンタープライズWeb3アプリケーションのためのインフラストラクチャおよびAPIも提供_ ### ツールとライブラリ {#tooling-and-libraries} -- [Alethio](https://explorer.aleth.io/) _イーサリアムデータ分析プラットフォーム_ -- [Chainlens](https://www.chainlens.com/) _Web3 Labs によるパブリックとプライベートイーサリアム互換ネットワークのためのデータおよび分析プラットフォーム_ -- [Ernst & Young's ‘Nightfall’](https://github.com/EYBlockchain/nightfall) _プライベートトランザクション用のツールキット_ -- [EthSigner](https://github.com/ConsenSys/ethsigner) _Web3 プロバイダーで使用するトランザクション署名のアプリケーション_ -- [Tenderly](https://tenderly.co/) _プライベートネットワークをサポートするリアルタイムの分析、アラート、モニタリングを提供するデータプラットフォーム。_ -- [Truffle Suite](https://trufflesuite.com) _ブロックチェーン開発スイート (Truffle, Ganache, Drizzle)_ +- [ベースラインプロジェクト](https://www.baseline-protocol.org/) - _ベースラインプロトコルはツールとライブラリのセットで、企業が各システムのデータを維持しつつ、プライバシーを守って複雑でマルチパーティのビジネスプロセスおよびワークフローを調整することを支援。 この標準により、ネットワークを共通の参照フレームとして使うことで、2つ以上の状態マシンがデータの一貫性とワークフローの継続性を実現し、維持することが可能_ +- [Chainlens](https://www.chainlens.com/) - _Web3 LabsのSaaSおよびオンプレミスのブロックチェーンデータおよび分析プラットフォーム_ +- [アーンスト・アンド・ヤング「Nightfall」](https://github.com/EYBlockchain/nightfall_3) - _オプティミスティック・ロールアップを使って、ERC20、ERC721、ERC1155アプリケーションをゼロ知識で転送するためのアプリケーション_ +- [Truffle Suite](https://trufflesuite.com) - _ブロックチェーン開発スイート (Truffle、Ganache、Drizzle)_ ### スケーラビリティソリューション {#scalability-solutions} -[レイヤー 2](/layer-2)はイーサリアム(レイヤー 1)上で実行される一連の技術またはシステムであり、レイヤー 1 のセキュリティプロパティを継承して、トランザクション処理能力(スループット)、トランザクション手数料(運用コスト)、レイヤー 1 よりも高速なトランザクション確認機能を提供します。 レイヤー 2 のスケーリングソリューションはレイヤー 1 によって保護されていますが、このソリューションにより、レイヤー 1 では対応できなかった多数のユーザーやアクション、データをブロックチェーンアプリケーションが処理できるようになります。 その多くは、パフォーマンスとセキュリティを最大化するために、最新の暗号技術とゼロ知識(ZK)証明の進歩を活用しています。 +[レイヤー2](/layer-2)はイーサリアム(レイヤー1)上で実行される一連の技術またはシステムであり、レイヤー1のセキュリティプロパティを継承して、レイヤー1よりも優れたトランザクション処理能力(スループット)、安価なトランザクション手数料(運用コスト)、高速なトランザクション確認機能を提供します。 レイヤー2のスケーリングソリューションはレイヤー1によって保護されていますが、このソリューションにより、レイヤー1では対応できなかった多数のユーザーやアクション、データをブロックチェーンアプリケーションが処理できるようになります。 その多くは、パフォーマンスとセキュリティを最大化するために、最新の暗号技術とゼロ知識(ZK)証明の進歩を活用しています。 -レイヤー 2 のスケーラビリティソリューションの上にアプリケーションを構築することで、 [企業が過去にプライベートブロックチェーン上に構築するようになった理由でもある多数の懸念事項を解決し、](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/)メインネット上に構築する利点を維持することができます。 +レイヤー2のスケーラビリティソリューションの上にアプリケーションを構築することで、 [企業が過去にプライベートブロックチェーン上に構築するようになった理由でもある多数の懸念事項を解決し、](https://entethalliance.org/how-ethereum-layer-2-scaling-solutions-address-barriers-to-enterprises-building-on-mainnet/)メインネット上に構築する利点を維持することができます。 ## メインネットで稼働しているエンタープライズアプリケーション {#enterprise-live-on-mainnet} -パブリックなイーサリアムメインネット上にデプロイされたエンタープライズアプリケーションをいくつかご紹介します。 +パブリックなイーサリアムメインネット上にデプロイされたエンタープライズアプリケーションをいくつか紹介します。 -### 決済 {#payments} +### お支払い {#payments} -- [Brave Browser](https://basicattentiontoken.org/) _ 広告へのアテンションに対してユーザーに報酬を支払い、ユーザーはベーシックアテンショントークンを介してパブリッシャーを支援することが可能_ -- [hCaptcha](https://www.hcaptcha.com/) _機械学習の目的でデータにラベルを付けるためにユーザーが行った作業に対してウェブサイト運営者に支払うボット防止 CAPTCHA システム。 現在は Cloudflare によってデプロイ_ -- [EthereumAds](https://ethereumads.com/) _ウェブサイト運営者が広告スペースを販売し、イーサリアム経由で支払いを受ける_ +- [Brave Browser](https://basicattentiontoken.org/) _は、広告を表示したユーザーに報酬を支払い、ユーザーはBasic Attentionトークンを介してパブリッシャーを支援することが可能_ +- [hCaptcha](https://www.hcaptcha.com/) _機械学習の目的でデータにラベルを付けるためにユーザーが行った作業に対して、ウェブサイト運営者に支払うボット防止CAPTCHAシステム。 現在はCloudflareによってデプロイ_ +- [EthereumAds](https://ethereumads.com/) _ウェブサイト運営者が広告スペースを販売し、イーサリアム経由で支払いを受けることが可能_ ### ファイナンス {#finance} -- [サンタンデール銀行](https://www.coindesk.com/santander-settles-both-sides-of-a-20-million-bond-trade-on-ethereum) _債券発行と決済_ -- [ソシエテ・ジェネラル](https://www.generali-investments.com/it/en/institutional/article/generali-investments-and-generali-iard-carry-out-first-market-transaction-based-on-blockchain-infrastructure) _債券発行_ -- [ケイデンス](https://www.forbes.com/sites/benjaminpirus/2019/10/09/fatburger-and-others-feed-30-million-into-ethereum-for-new-bond-offering/#513870be115b) _FAT ブランドの債券発行とトークン化_ -- [Sila](https://silamoney.com/) _ステーブルコインを使用したバンキングおよび ACH ペイメントの IaaS(インフラストラクチャ・アズ・ア・サービス) _ +- [Santander Bank](https://www.coindesk.com/santander-settles-both-sides-of-a-20-million-bond-trade-on-ethereum) _債券の発行と決済_ +- [Societe Generale](https://www.generali-investments.com/it/en/institutional/article/generali-investments-and-generali-iard-carry-out-first-market-transaction-based-on-blockchain-infrastructure) _債券の発行_ +- [Cadence](https://www.forbes.com/sites/benjaminpirus/2019/10/09/fatburger-and-others-feed-30-million-into-ethereum-for-new-bond-offering/#513870be115b) _FATブランドの債券発行とトークン化_ +- [Sila](https://silamoney.com/) _ステーブルコインを使用したバンキングおよびACHペイメントのIaaS(インフラストラクチャ・アズ・ア・サービス) _ - [Taurus](https://www.taurushq.com/) _トークン化された証券の発行_ ### 資産トークン化 {#tokenization} -- [Tinlake](https://tinlake.centrifuge.io/) *請求書、住宅ローン、ストリーミングロイヤリティ*などのトークン化された現実世界の資産を通じた債権ファイナンス -- [RealT](https://realt.co/) _世界中の投資家は、完全に準拠した分割かつトークン化された所有権を通じて、米国の不動産市場に参入可能_ +- [Tinlake](https://tinlake.centrifuge.io/) _請求書、住宅ローン、ストリーミングロイヤリティ_などのトークン化された現実世界の資産を通じた債権ファイナンス +- [RealT](https://realt.co/) _世界中の投資家は、法規制に完全に準拠した部分的なトークン化された所有権を通じて、米国の不動産市場に参入可能_ - [AgroToken](https://agrotoken.io/en/home) _農産物のトークン化と取引_ - [Fasset](https://www.fasset.com/) _持続可能なインフラをサポートするためのプラットフォーム_ ### データの公証化 {#notarization-of-data} -- [BBVA](https://www.ledgerinsights.com/bbva-blockchain-loan-banking-tech-award/) _確定されたローンの詳細はハッシュ化され、メインネットに記録されます_ -- [ANSA](https://cointelegraph.com/news/italys-top-news-agency-uses-blockchain-to-fight-fake-coronavirus-news) _イタリア最大の報道機関が偽のニュースと戦い、読者がニュースのソースをメインネットに記録することで検証できるようにします_ -- [Verizon](https://decrypt.co/46745/verizon-news-press-releases-ethereum-full-transparency) _企業の説明責任と信頼性を確保するために、イーサリアムのプレスリリースを記録します_ -- [Breitling](https://www.coindesk.com/breitling-arianee-all-new-watches-ethereum) _イーサリアムでの腕時計の証明書と修理履歴を記録します_ -- [EthSign](https://ethsign.xyz/) _イーサリアムブロックチェーン上の署名された電子ドキュメントを記録します_ +- [BBVA](https://www.ledgerinsights.com/bbva-blockchain-loan-banking-tech-award/) _終了した融資の詳細がハッシュ化されメインネットに記録_ +- [ANSA](https://cointelegraph.com/news/italys-top-news-agency-uses-blockchain-to-fight-fake-coronavirus-news) _イタリアの最大の通信社で、フェイクニュースと戦い、ニュースをメインネットに記録することで、読者は出所を確認することが可能_ +- [Verizon](https://decrypt.co/46745/verizon-news-press-releases-ethereum-full-transparency) _イーサリアム上でプレスリリースを記録することで、企業の説明責任と信用を確保_ +- [Breitling](https://www.coindesk.com/breitling-arianee-all-new-watches-ethereum) _イーサリアム上で時計の出所と修理履歴を記録_ +- [EthSign](https://ethsign.xyz/) _イーサリアムブロックチェーン上で署名された電子ドキュメントを記録_ ### サプライチェーン {#supply-chain} -- [Morpheus.network](https://morpheus.network/) _イーサリアムメインネット上で公証データを用いたハイブリッドなプライベートチェーンを実現するサプライチェーン自動化プラットフォーム。カナダの食品・石油・ガス販売会社 Federated Co-op Ltd.やアルゼンチンのペットフード会社 Vitalcan などが採用_ -- [Minespider](https://www.minespider.com/) _サプライチェーン追跡_ +- [Morpheus.network](https://morpheus.network/) _イーサリアムメインネット上で公証データを用いたハイブリッドなプライベートチェーンを実現するサプライチェーン自動化プラットフォーム。カナダの食品・石油・ガス販売会社Federated Co-op Ltd.やアルゼンチンのペットフード会社Vitalcanなどが採用_ +- [Minespider](https://www.minespider.com/) _サプライチェーンの追跡_ - [EY OpsChain Contract Manager](https://blockchain.ey.com/products/contract-manager) _信頼できるビジネスパートナーのネットワーク全体で、RFQ、コントラクト、発注書、請求書を発行することにより、企業は調達ワークフローに従事可能_ -- [Treum](https://treum.io/) _ブロックチェーン技術を使用して、透明性、トレーサビリティ、トレーダビリティをサプライチェーンに配置_ +- [Treum](https://treum.io/) _ブロックチェーン技術を使用して、サプライチェーンの透明性、トレーサビリティ、トレーダビリティを実現_ - [TradeTrust](https://www.tradetrust.io/) _海外発送向けの電子船荷証券(eBL)を検証_ ### 保険 {#insurance} - [Arbol](https://www.arbolmarket.com/) _天候関連のリスクをカバーするパラメトリック保険_ -- [Etherisc](https://etherisc.com/) _さまざまなリスクに対する分散型保険_ +- [Etherisc](https://etherisc.com/) _様々なリスクに対する分散型保険_ ### 資格情報と認証 {#credentials} -- [イタリアの 2 つの高等学校](https://cointelegraph.com/news/two-italian-high-schools-to-issue-digital-diplomas-with-blockchain) _イーサリアムメインネットで発行されたデジタルディプロマ_ -- [ザンクトガレン大学](https://cointelegraph.com/news/swiss-university-fights-fake-diplomas-with-blockchain-technology) _学位を認証するためのパイロットプロジェクトを実施したスイスの大学_ +- [イタリアにある高校の2校](https://cointelegraph.com/news/two-italian-high-schools-to-issue-digital-diplomas-with-blockchain) _イーサリアムメインネットでデジタル卒業証書を発行_ +- [St. Gallen大学](https://cointelegraph.com/news/swiss-university-fights-fake-diplomas-with-blockchain-technology) _スイスの大学による学位を証明するためのパイロットプロジェクト_ - [Hyland Credentials](https://www.hylandcredentials.com) _デジタルディプロマ、その他の教育資格情報、ライセンス、証明書_ - [OpenCerts](https://opencerts.io/faq) _シンガポールでブロックチェーン教育の資格情報を発行_ - [BlockCerts](https://www.blockcerts.org/) _ブロックチェーン資格情報のオープン標準を開発_ ### ユーティリティ {#utilities} -- [GridPlus](https://blog.gridplus.io/gridplus-is-live-in-texas-efc83c814601) _電気料金の支払い_ +- [GridPlus](https://blog.gridplus.io/gridplus-is-live-in-texas-efc83c814601) _電気代の支払い_ -このリストへの追加を希望される場合は、貢献の[手順](/contributing/)を参照してください。 +このリストへの追加を希望される場合は、[貢献の手順](/contributing/)を参照してください。 diff --git a/public/content/translations/ja/enterprise/private-ethereum/index.md b/public/content/translations/ja/enterprise/private-ethereum/index.md index 6409a8dd4c7..28dc1b56c95 100644 --- a/public/content/translations/ja/enterprise/private-ethereum/index.md +++ b/public/content/translations/ja/enterprise/private-ethereum/index.md @@ -14,13 +14,13 @@ lang: ja イーサリアムをエンタープライズ向けにするための協力的な取り組みがいくつかあり、さまざまな組織によってまとめられています。 -- [エンタープライズ・イーサリアム・アライアンス (EEA)](https://entethalliance.org/) EEA により、組織は日常業務にイーサリアムテクノロジーを導入、使用することができます。 私たちはイーサリアムエコシステムに力を与え、新しいビジネスチャンスを開発し、業界の採用を促進し、互いに学び、協力します。 -- [ハイパーレジャー](https://hyperledger.org) _ハイパーレジャーは、業界を越えてブロックチェーン技術を発展させるために作られたオープンソースの共同プロジェクトであり、 金融、銀行、モノのインターネット、サプライチェーン、製造、テクノロジーのリーダーなど、リナックスファウンデーションが主催するグローバルコラボレーションです。 このファウンデーションには、[Besu](https://www.hyperledger.org/use/besu) and [Burrow](https://www.hyperledger.org/projects/hyperledger-burrow)といったイーサリアムスタックで動作するいくつかのプロジェクトがあります。_ +- [エンタープライズ・イーサリアム・アライアンス (EEA)](https://entethalliance.org/) EEAにより、組織は日常業務にイーサリアムテクノロジーを導入、使用することができます。 私たちはイーサリアムエコシステムに力を与え、新しいビジネスチャンスを開発し、業界の採用を促進し、互いに学び、協力します。 +- [ハイパーレジャー](https://hyperledger.org) _ハイパーレジャーは、業界を越えてブロックチェーン技術を発展させるために作られたオープンソースの共同プロジェクトであり、 金融、銀行、モノのインターネット、サプライチェーン、製造、テクノロジーのリーダーなど、リナックスファウンデーションが主催するグローバルコラボレーションです。 このファウンデーションでは、[Besu](https://www.hyperledger.org/use/besu)を含むイーサリアムスタックと連携するいくつかのプロジェクトがあります。_ ### プロトコルとインフラストラクチャ {#protocol-and-infrastructure} -- [Chainstack](https://chainstack.com/) _分散型ネットワークとサービスを迅速に構築、デプロイ、管理するビジネスを支援する、マルチクラウドおよびマルチプロトコルの PaaS (プラットフォーム・アズ・ア・サービス) _ -- [Clearmatics Autonity](https://www.clearmatics.com/about/) _p2p プロトコルを実装してクライアントソフトウェアとインフラを提供するプロトコル群_ -- [Hyperledger Besu](https://www.hyperledger.org/use/besu) _Apache 2.0 ライセンスの基で開発されたオープンソースのイーサリアムクライアントで、Java で書かれており、PoW、PoA(IBFT、IBFT 2.0、Etherhash、Clike)を含むいくつかの合意形成アルゴリズムを含んでいる。 その包括的な権限スキームは、コンソーシアム環境での使用に特化した設計となっている。_ -- [Hyperledger Burrow](https://www.hyperledger.org/projects/hyperledger-burrow) _イーサリアム仮想マシン (EVM) の仕様に部分的に合わせて開発された認可制のスマートコントラクトのインタプリタを備えた、モジュール型のブロックチェーンクライアント_ +- [Chainstack](https://chainstack.com/) _分散型ネットワークとサービスを迅速に構築、デプロイ、管理するビジネスを支援する、マルチクラウドおよびマルチプロトコルのPaaS (プラットフォーム・アズ・ア・サービス) _ +- [Clearmatics Autonity](https://www.clearmatics.com/about/) _p2pプロトコルを実装してクライアントソフトウェアとインフラを提供するプロトコル群_ +- [Hyperledger Besu](https://www.hyperledger.org/use/besu) _Apache 2.0ライセンスの基で開発されたオープンソースのイーサリアムクライアントで、Javaで書かれており、PoWやPoA(IBFT、IBFT 2.0、Ethash、Clique)を含むいくつかのコンセンサス形成アルゴリズムを含んでいる。 その包括的な権限スキームは、コンソーシアム環境での使用に特化した設計となっている_ - [Kaleido](https://kaleido.io/) _クロスクラウドでハイブリッドなエンタープライズエコシステムの構築と実行のためのフルスタックプラットフォーム_ +- [Zeeve](https://www.zeeve.io/) _イーサリアムに構築するための幅広い製品とツール、エンタープライズWeb3アプリケーションのためのインフラストラクチャおよびAPIも提供_ diff --git a/public/content/translations/ja/foundation/index.md b/public/content/translations/ja/foundation/index.md index fdba569cb0c..21b3d93500f 100644 --- a/public/content/translations/ja/foundation/index.md +++ b/public/content/translations/ja/foundation/index.md @@ -11,7 +11,7 @@ lang: ja [イーサリアム・ファウンデーション](http://ethereum.foundation/)(EF)は、 [イーサリアム](/what-is-ethereum/)および関連技術をサポートする非営利団体です。 -EF は企業でも、伝統的な非営利団体でもありません。 彼らの役割はイーサリアムを制御またはリードすることではなく、イーサリアム関連技術の重要な開発に資金を提供する唯一の組織でもありません。 EF は、はるかに大きな[エコシステム](/community/)の一部です。 +EFは企業でも、伝統的な非営利団体でもありません。 彼らの役割はイーサリアムを制御またはリードすることではなく、イーサリアム関連技術の重要な開発に資金を提供する唯一の組織でもありません。 EFは、はるかに大きな[エコシステム](/community/)の一部です。 ## イーサリアム・ファウンデーションの取り組み {#ethereum-foundation-initiatives} @@ -23,18 +23,18 @@ EF は企業でも、伝統的な非営利団体でもありません。 彼ら ### Devcon {#devcon} -2014 年より、イーサリアム・ファウンデーションは、すべての i-イーサリアムデベロッパー、研究者、思想家、メーカーのための年次会議である開発者会議(Devcon)を開催しています。 +2014年より、イーサリアム・ファウンデーションは、すべてのイーサリアムデベロッパー、研究者、思想家、メーカーのための年次会議である開発者会議(Devcon)を開催しています。 [archive.devcon.org](https://archive.devcon.org/)にて、毎年の会議プレゼンテーションのビデオコンテンツにアクセスできます。 -詳細は[devcon.org](https://devcon.org/)をご覧ください。 [Devcon ブログ](https://devcon.org/en/blogs/)、または最新のお知らせは[@efdevcon](https://twitter.com/EFDevcon)をご覧ください。 +詳細については、[devcon.org](https://devcon.org/)および[Devconブログ](https://devcon.org/en/blogs/)をご覧ください。また、[@efdevcon](https://twitter.com/EFDevcon)をフォローして最新のお知らせをご覧ください。 ### フェローシッププログラム {#fellowship-program} -[イーサリアム・ファウンデーション・フェローシッププログラム](https://fellowship.ethereum.foundation/)は、国籍や文化、経済階級で生じる格差に対する支援イニシアチブです。 フェローシッププログラムは、ユニークで才能のある個人を特定、サポートすることでイーサリアムとの関連性を確立し、Web3 の将来を担うコミュニティや評価されていない人々に対して門戸を開くことによって、こうしたギャップを埋めていくことを目的としています。 +[イーサリアム・ファウンデーション・フェローシッププログラム](https://fellowship.ethereum.foundation/)は、国籍や文化、経済階級で生じる格差に対する支援イニシアチブです。 フェローシッププログラムは、ユニークで才能のある個人を特定、サポートすることでイーサリアムとの関連性を確立し、Web3の将来を担うコミュニティや評価されていない人々に対して門戸を開くことによって、こうしたギャップを埋めていくことを目的としています。 [フェローシップ イーサリアム・ファウンデーション](https://fellowship.ethereum.foundation/)でもっと学ぶ。
-ファウンデーションおよびファウンデーションの仕事の詳細については、[ethereum.foundation](http://ethereum.foundation/)、EF の最新のニュースとお知らせについては、[イーサリアム・ファウンデーションブログ](https://blog.ethereum.org/)をご覧ください。 +ファウンデーションおよびファウンデーションの仕事の詳細については、[ethereum.foundation](http://ethereum.foundation/)、EFの最新のニュースとお知らせについては、[イーサリアム・ファウンデーションブログ](https://blog.ethereum.org/)をご覧ください。 diff --git a/public/content/translations/ja/governance/index.md b/public/content/translations/ja/governance/index.md index 04e05cbf692..6bbad3d0919 100644 --- a/public/content/translations/ja/governance/index.md +++ b/public/content/translations/ja/governance/index.md @@ -2,6 +2,7 @@ title: イーサリアムのガバナンス description: イーサリアムに関する決定がどのように行われるかについてのご紹介 lang: ja +postMergeBannerTranslation: page-upgrades-post-merge-banner-governance-ood --- # イーサリアムのガバナンスの概要 {#introduction} @@ -120,7 +121,7 @@ _注: どの個人もこれらのグループの複数に参加できます(た The DAOフォークは、周到に脆弱性を突いた[2016年のThe DAO攻撃](https://www.coindesk.com/understanding-dao-hack-journalists)で360万ETH以上の[分散型自律組織(DAO)](/glossary/#dao)コントラクトが流出した事件を受けたものです。 このフォークにより、欠陥をもったコントラクトから新しいコントラクトに資金が転送され、ハッキングでETHを失った人が回収できるようになりました。 -この行動指針はイーサリアムコミュニティの投票で行われました。 ETH保有者は、 [投票プラットフォーム](http://v1.carbonvote.com/)でトランザクションを通じて投票することができました。 フォークの実行は、投票の85%以上に支持されました。 +この行動指針はイーサリアムコミュニティの投票で行われました。 Any ETH holder was able to vote via a transaction on [a voting platform](https://web.archive.org/web/20170620030820/http://v1.carbonvote.com/). フォークの実行は、投票の85%以上に支持されました。 ここで重要なのは、プロトコルがハッキングを元に戻すためにフォークしたものの、フォークを決定する際の投票の重要性については、いくつかの理由から議論の余地があるということです。 diff --git a/public/content/translations/ja/guides/how-to-create-an-ethereum-account/index.md b/public/content/translations/ja/guides/how-to-create-an-ethereum-account/index.md index 606066d45a9..5dd5e1f2141 100644 --- a/public/content/translations/ja/guides/how-to-create-an-ethereum-account/index.md +++ b/public/content/translations/ja/guides/how-to-create-an-ethereum-account/index.md @@ -6,7 +6,7 @@ lang: ja # イーサリアムアカウントの開設方法 -イーサリアムアカウントはいつでも誰でも無料で開設することができます。 いくつかの方法で開設することができますが、最も簡単で広く利用されているのはウォレットアプリです。 ウォレットでイーサリアムを利用するためのキーを作成し保管します。 その後、ウォレットを使って、トランザクションを送信したり、トークン残高を確認したり、イーサリアム上に構築されたトークン交換所、ゲーム、NFTマーケットなどのアプリに接続したりすることができます。 Web2アプリの中にもイーサリアムにログインできるものがあります。 +イーサリアムアカウントはいつでも誰でも無料で開設することができます。 いくつかの方法で開設することができますが、最も簡単で広く利用されているのはウォレットアプリです。 ウォレットでイーサリアムを利用するための[キー](/glossary/#key)を作成し保管します。 その後、ウォレットを使って、トランザクションを送信したり、トークン残高を確認したり、イーサリアム上に構築されたトークン交換所、ゲーム、[NFT](/glossary/#nft)マーケットプレースなどのアプリに接続したりすることができます。 Web2アプリの中にもイーサリアムにログインできるものがあります。 一般企業の新しいアカウントを開設するのとは違い、イーサリアムのアカウントの開設は、自由で、プライバシーを保護しながら、許可を求めることもなく行うことができます。 アカウントはウォレットのソフトウェアがユーザーへ独自に作成したキーによって制御されるもので、第三者によって発行されるものでも、一元管理されるものでもありません。 @@ -28,7 +28,7 @@ lang: ja ウォレットを選んだら、ウォレットの公式サイトやアプリストアにアクセスして、ダウンロード、インストールしてください。 それらはすべて無料のはずです。 -## ステップ 3: アプリを開いて、イーサリアムのアカウントを開設またはインポートする +## ステップ 3: アプリを開いて、イーサリアムアカウントを開設する 新しいウォレットを初めて開くと、新しいアカウントを開設するか、既存のアカウントをインポートするかを選択するよう求められる場合があります。 新しいアカウントの開設をクリックします。 @@ -55,13 +55,13 @@ lang: ja 複数のイーサリアムアカウントを一つのシードフレーズから分岐する木の枝と考えてもいいでしょう。 それぞれのシード(タネ)から全く違う木のアカウントが作成されます。 -### ビットコインをイーサリアムのアドレスに送金したり、イーサをビットコインのアドレスに送金したりできますか? +### ビットコインをイーサリアムのアドレスに送金したり、Etherをビットコインのアドレスに送金したりできますか? -できません。 ビットコインとイーサは、異なる2つのネットワーク(すなわち、異なるブロックチェーン)に存在し、それぞれ独自の記録手法とアドレスの形式を備えています。 この2つのネットワークを橋渡ししようとする試みはいくつもあります。 最も活発なものは現在の [ラップドビットコイン(WBTC)](https://www.bitcoin.com/get-started/what-is-wbtc/)です。 とはいえ、WBTCはカストディアル型 (特定の組織が重要な機能を管理している形) であり、情報提供のみが目的であるため、これは推奨される試みではありません。 +できません。 ビットコインとEtherは、異なる2つのネットワーク(すなわち、異なるブロックチェーン)に存在し、それぞれ独自の記録手法とアドレスの形式を備えています。 この2つのネットワークを橋渡ししようとする試みはいくつもあります。 最も活発なものは現在の [ラップドビットコイン(WBTC)](https://www.bitcoin.com/get-started/what-is-wbtc/)です。 とはいえ、WBTCはカストディアル型 (特定の組織が重要な機能を管理している形) であり、情報提供のみが目的であるため、これは推奨される試みではありません。 -### イーサのアドレスを所有している場合、他のブロックチェーンでもそれと同じアドレスが使えますか? +### ETHのアドレスを所有している場合、他のブロックチェーンでもそれと同じアドレスが使えますか? -イーサリアム上で構築されたソフトウェアを利用しているブロックチェーン(いわゆる、EVM互換ブロックチェーン)であれば同じアドレスを使うことができます。 この [リスト](https://chainlist.org/) は、同じアドレスで使用できるブロックチェーンの一覧です。 ビットコインのような一部のブロックチェーンでは、全く別のネットワークの規定を実装しているため、異なるフォーマットのアドレスが必要になります。 スマートコントラクトのウォレットをお持ちの場合は、どのブロックチェーンがサポートされているかについて、詳細を製品のウェブサイトで確認する必要があります。 +イーサリアム上で構築されたソフトウェアを利用しているブロックチェーン(いわゆる、EVM互換ブロックチェーン)であれば同じ[アドレス](/glossary/#address)を使うことができます。 この [リスト](https://chainlist.org/) は、同じアドレスで使用できるブロックチェーンの一覧です。 ビットコインのような一部のブロックチェーンでは、全く別のネットワークの規定を実装しているため、異なるフォーマットのアドレスが必要になります。 スマートコントラクトのウォレットをお持ちの場合は、どのブロックチェーンがサポートされているかについて、詳細を製品のウェブサイトで確認する必要があります。 ### 自分のウォレットを持つことは、取引所に資金を預けるよりも安全でしょうか? diff --git a/public/content/translations/ja/guides/how-to-revoke-token-access/index.md b/public/content/translations/ja/guides/how-to-revoke-token-access/index.md index 115d392c907..b5c980b9b99 100644 --- a/public/content/translations/ja/guides/how-to-revoke-token-access/index.md +++ b/public/content/translations/ja/guides/how-to-revoke-token-access/index.md @@ -1,16 +1,16 @@ --- title: 暗号資金へのスマートコントラクトのアクセスを無効にする方法 -description: 悪意のある暗号資産へのスマートコントラクトのアクセスを無効にする方法を解説します。 +description: 悪意のある暗号資産へのスマートコントラクトのアクセスを無効にする方法の解説 lang: ja --- # 暗号資金へのスマートコントラクトのアクセスを無効にする方法 -このガイドでは、暗号資産へのアクセスを許可したスマートコントラクトの一覧を表示させる方法とそれらをキャンセルする方法について解説します。 +このガイドでは、暗号資産へのアクセスを許可した[スマートコントラクト](/glossary/#smart-contract)の一覧を表示させる方法と、それらをキャンセルする方法について解説します。 -スマートコントラクトに裏口を作り、スマートコントラクトと対話するユーザーが気づかないうちに彼らの資産にアクセスできるようにする悪意のあるデベロッパーも存在します。 よくあるのは、そのようなプラットフォームが、将来的にガス代を少しでも節約するために、**トークンの支出限度を無制限にすること**をユーザーに許可させることですが、これはとてもリスクが高いです。 +スマートコントラクトに裏口を作り、スマートコントラクトと対話するユーザーが気づかないうちに彼らの資産にアクセスできるようにする悪意のあるデベロッパーも存在します。 よくあるのは、そのようなプラットフォームが、将来的に[ガス](/glossary/#gas)代を少しでも節約するために、**トークンの支出限度を無制限にすること**をユーザーに許可させることですが、そうするとリスクが高まります。 -プラットフォームがウォレット上のトークンへの無制限のアクセス権を得ると、プラットフォームからウォレットに資産を引き出したとしても、そのトークンをすべて使うことができてしまいます。 悪意ある行為者がユーザーの資産にアクセスし、それをウォレットに引き出してしまえば、取引が復元できる可能性はなくなります。 +プラットフォームがウォレット上のトークンへの無制限のアクセス権を得ると、ユーザーがプラットフォームから[ウォレット](/glossary/#wallet)に資産を引き出したとしても、そのトークンをすべて使うことができてしまいます。 悪意ある行為者がユーザーの資産にアクセスし、それをウォレットに引き出してしまえば、取引が復元できる可能性はなくなります。 唯一の対策は、テストされていない新しいプロジェクトの使用を控えることや、必要なものだけを承認すること、あるいは定期的にアクセス権を取り消すことです。 では、どうすればいいのでしょうか? @@ -18,12 +18,12 @@ lang: ja 自分のアドレスに接続されたスマートコントラクトを閲覧したり、無効にさせることが可能なウェブサイトもあります。 以下のようなウェブサイトにアクセスし、ウォレットに接続してください。 -- [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/)(複数のネットワーク) +- [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: ウォレットを接続する @@ -48,7 +48,7 @@ lang: ja
-
詳細をご希望の場合は、
+
さらに詳しく知りたいですか?
他のガイドを参照する @@ -58,7 +58,7 @@ lang: ja ### トークンへのアクセス権を取り消すと、ステーキング、プール、レンディングなどのDeFiも終了しますか? -いいえ、DeFiの取引に影響を及ぼすことはありません。 現状の設定を保ち、引き続き報酬などを獲得し続けます。 +いいえ、[DeFi](/glossary/#defi)の取引に影響を及ぼすことはありません。 現状の設定を保ち、引き続き報酬などを獲得し続けます。 ### ウォレットとプロジェクトとの接続を切断することは、資産を使用する許可を取り消すことと同じですか? diff --git a/public/content/translations/ja/guides/how-to-swap-tokens/index.md b/public/content/translations/ja/guides/how-to-swap-tokens/index.md index 37693cfdd8e..26bdac87570 100644 --- a/public/content/translations/ja/guides/how-to-swap-tokens/index.md +++ b/public/content/translations/ja/guides/how-to-swap-tokens/index.md @@ -6,13 +6,13 @@ lang: ja # トークンの交換方法 -お気に入りのトークンが全てリストされている取引所を探すのにうんざりしていませんか? 分散型取引所を使うことでほとんどのトークンを交換することができます。 +お気に入りのトークンが全てリストされている取引所を探すのにうんざりしていませんか? [分散型取引所](/glossary/#dex)を使うことでほとんどのトークンを交換することができます。 -トークンのスワップでは、イーサリアムのネットワーク上に存在する異なる2種類のトークンの交換、例えば、ETHとDAI(ERC-20トークン) の交換を行います。 そのプロセスは、非常に速く安価に行われます。 これにはトークンをスワップするための暗号ウォレットが必要になります。 +トークンのスワップでは、イーサリアムのネットワーク上に存在する異なる2種類のトークンの交換、例えば、ETHとDAI([ERC-20](/glossary/#erc-20)トークン) の交換を行います。 そのプロセスは、非常に速く安価に行われます。 これにはトークンをスワップするための暗号ウォレットが必要になります。 **前提条件:** -- チュートリアルに従って、暗号ウォレットを手に入れる:[イーサリアムのアカウントを「登録」する方法](/guides/how-to-create-an-ethereum-account/) +- チュートリアルに従って、[暗号ウォレット](/glossary/#wallet)を手に入れる:[イーサリアムのアカウントを「登録」する方法](/guides/how-to-create-an-ethereum-account/) - ウォレットに資金を追加する ## 1. 分散型取引所(DEX) を選び、ウォレットを接続する @@ -50,7 +50,7 @@ lang: ja
-
詳細をご希望の場合は、
+
さらに詳しく知りたいですか?
他のガイドを参照する diff --git a/public/content/translations/ja/guides/how-to-use-a-bridge/index.md b/public/content/translations/ja/guides/how-to-use-a-bridge/index.md index 0f4d5e9f602..77b5386d504 100644 --- a/public/content/translations/ja/guides/how-to-use-a-bridge/index.md +++ b/public/content/translations/ja/guides/how-to-use-a-bridge/index.md @@ -10,7 +10,7 @@ lang: ja **前提条件:** -- 以下のチュートリアルから暗号ウォレットを持つこと:[Ethereumのアカウントを「登録」する方法](/guides/how-to-create-an-ethereum-account/) +- チュートリアルに従って、暗号ウォレットを手に入れる:[イーサリアムのアカウントを「登録」する方法](/guides/how-to-create-an-ethereum-account/) - ウォレットに資金を追加する ## 1. 使用したいレイヤー2ネットワークを決定する @@ -53,7 +53,7 @@ lang: ja
-
詳細をご希望の場合は、
+
さらに詳しく知りたいですか?
他のガイドを参照する diff --git a/public/content/translations/ja/guides/how-to-use-a-wallet/index.md b/public/content/translations/ja/guides/how-to-use-a-wallet/index.md index 28eceec69d7..0e43bbe7d7f 100644 --- a/public/content/translations/ja/guides/how-to-use-a-wallet/index.md +++ b/public/content/translations/ja/guides/how-to-use-a-wallet/index.md @@ -63,7 +63,7 @@ lang: ja 6. これで完了です! アプリを使い始めましょう [dAppsページ](/dapps/#explore)にて、興味深いプロジェクトを見つけることができます。
-
詳細をご希望の場合は、
+
さらに詳しく知りたいですか?
他のガイドを参照する @@ -71,7 +71,7 @@ lang: ja ## よくある質問 -### イーサのアドレスを所有している場合、他のブロックチェーンでもそれと同じアドレスが使えますか? +### ETHのアドレスを所有している場合、他のブロックチェーンでもそれと同じアドレスが使えますか? すべてのEVM対応のブロックチェーンで同じアドレスを使用できます (リカバリーフレーズのあるタイプのウォレットを使用している場合) 。 この [リスト](https://chainlist.org/) は、同じアドレスで使用できるブロックチェーンの一覧です。 ビットコインのような一部のブロックチェーンでは、全く別のネットワークの規定を実装しているため、異なるフォーマットのアドレスが必要になります。 スマートコントラクトのウォレットをお持ちの場合は、どのブロックチェーンがサポートされているかについて、詳細を製品のウェブサイトで確認する必要があります。 diff --git a/public/content/translations/ja/roadmap/account-abstraction/index.md b/public/content/translations/ja/roadmap/account-abstraction/index.md index 68e8eaa137e..957f164cc40 100644 --- a/public/content/translations/ja/roadmap/account-abstraction/index.md +++ b/public/content/translations/ja/roadmap/account-abstraction/index.md @@ -40,19 +40,19 @@ summaryPoints: アカウント抽象化では、スマートコントラクトを使用して資産を保持し、トランザクションを承認することで、この問題を解決します。 これらのスマートコントラクトにカスタムロジックを施すことができ、可能な限り安全に、そしてユーザーごとにカスタマイズすることができます。 最終的には、アカウントへのアクセスを制御するために秘密鍵を使用しますが、より簡単で安全に秘密鍵を管理するための安全策が施してあります。 -例えば、バックアップキーをウォレットに追加できます。そのため、メインキーを紛失したり誤って公開したりしてしまった場合でも、バックアップキーで許可することで新しい安全なキーに置き換えられます。 各バックアップキーを別の方法で保護したり、信頼できるガーディアン間で分割したりすることもでき、 結果として、泥棒が資金を完全に制御するのがはるかに難しくなります。 同様に、ウォレットにルールを追加して、メインキーが侵害された場合の影響を軽減できます。例えば、低額のトランザクションを単一の署名で検証できるようにし、一方で高額のトランザクションでは複数の認証された署名者の承認が必要になるよう設定します。 スマートコントラクトウォレットの使用方法で窃盗を阻止するのに役立つものは他にもあります。例えば、ホワイトリストを使用して、信頼できるアドレスへのトランザクションか、事前に承認された複数のキーで検証されない限り、すべてのトランザクションをブロックすることができます。 +例えば、バックアップキーをウォレットに追加できます。そのため、メインキーを紛失したり誤って公開したりしてしまった場合でも、バックアップキーで許可することで新しい安全なキーに置き換えられます。 各バックアップキーを別の方法で保護したり、信頼できるガーディアン間で分割したりすることもでき、 結果として、泥棒が資金を完全に制御するのがはるかに難しくなります。 同様に、ウォレットにルールを追加して、メインキーが侵害された場合の影響を軽減できます。例えば、低額のトランザクションを単一の署名で検証できるようにし、一方で高額のトランザクションでは複数の認証された署名者の承認が必要になるよう設定します。 スマートコントラクトウォレットの使用方法で窃盗を阻止するのに役立つものは他にもあります。例えば、許可リストを使用して、信頼できるアドレスへのトランザクションか、事前に承認された複数のキーで検証されない限り、すべてのトランザクションをブロックすることができます。 ### スマートコントラクトウォレットに組み込めるセキュリティロジックの例: - **マルチシグ認証**: 複数の信頼できるユーザーまたはデバイス間で認証資格情報を共有できます。 これにより、事前設定された金額を超えるトランザクションには、信頼できる当事者の特定の割合 (例: 5人中の3人) からの承認が必要となるようにコントラクトを設定できます。 例えば、高額のトランザクションでは、モバイルデバイスとハードウェアウォレットの両方からの承認、または信頼できる家族に配布されたアカウントからの署名を必須にすることができます。 - **アカウントの凍結**: デバイスが紛失したり侵害された場合、認証された別のデバイスからアカウントをロックすることができ、ユーザーの資産を保護します。 -- **アカウントの復元**: デバイスを紛失したり、パスワードを忘れたりすることがあります。 現在の仕組みでは、あなたの資産が永久に凍結される可能性があります。 そこで、スマートコントラクトウォレットを使用することで、新しいデバイスを承認してアクセスをリセットできる事前承認済みアカウントを設定します。 +- **アカウントの復元**: デバイスを紛失したり、パスワードを忘れたりすることがあります。 現在の仕組みでは、あなたの資産が永久に凍結される可能性があります。 そこで、スマートコントラクトウォレットを使用することで、新しいデバイスを承認してアクセスをリセットできるアカウントの許可リストを設定します。 - **トランザクションリミットの設定**: 1日、1週間、1か月などの期間でアカウントから転送できる金額の1日当たりのしきい値を指定できます。 つまり、攻撃者がアカウントにアクセスできたとしても、一度にすべての金額を流出させることはできなくなり、攻撃者からのアクセスを凍結してリセットすることができます。 -- **ホワイトリストの作成**: 安全であるとわかっている特定のアドレスへのトランザクションのみを許可します。 つまり、秘密鍵が_盗まれたとしても_、攻撃者はホワイトリストに登録されていない宛先アカウントに資金を送金することはできません。 これらのホワイトリストを変更するには複数の署名が必要になるため、攻撃者は、あなたの複数のバックアップキーにアクセスできない限り、リストに自分のアドレスを追加できません。 +- **許可リストの作成**: 安全であるとわかっている特定のアドレスへのトランザクションのみを許可します。 つまり、秘密鍵が_盗まれたとしても_、攻撃者はリストに登録されている宛先アカウントにしか資金を送金することはできません。 これらの許可リストを変更するには複数の署名が必要になるため、攻撃者は、あなたの複数のバックアップキーにアクセスできない限り、リストに自分のアドレスを追加できません。 ## ユーザーエクスペリエンスの向上 {#better-user-experience} -アカウント抽象化によって、スマートコントラクトウォレットがプロトコルレベルでサポートされるようになります。これにより、**ユーザーエクスペリエンスが全体的に改善**され、**セキュリティも向上**します。 アカウント抽象化を行う最も重要な理由は、スマートコントラクト、ウォレット、アプリケーションのデベロッパーが、これまでにない方法でユーザーエクスペリエンスをより自由に革新できるようになるからです。 アカウント抽象化によって明らかに改善する点として、トランザクションのバンドル化による速度と効率の向上が挙げられます 例えば、シンプルなスワップは、ワンクリックで完了できるはずです。しかし、現在は、スワップを実行する前に、個々のトークンの支出を承認するために、複数のトランザクションに署名する必要があります。 アカウント抽象化は、トランザクションをバンドル化することで、こうした摩擦を取り除きます。 さらに、バンドル化されたトランザクションは、各トランザクションに必要なトークンの正確な値を承認し、トランザクションが完了した後に承認を取り消すことができます。そのため、より安全性が高まります。 +アカウント抽象化によって、スマートコントラクトウォレットがプロトコルレベルでサポートされるようになります。これにより、**ユーザーエクスペリエンスが全体的に改善**され、**セキュリティも向上**します。 アカウント抽象化を行う最も重要な理由は、スマートコントラクト、ウォレット、アプリケーションのデベロッパーが、これまでにない方法でユーザーエクスペリエンスをより自由に革新できるようになるからです。 アカウント抽象化によって明らかに改善する点として、トランザクションのバンドル化による速度と効率の向上が挙げられます。 例えば、シンプルなスワップならワンクリックで完了できるはずです。しかし現在のところ、スワップを実行する前に、個々のトークンの支出を承認するために複数のトランザクションに署名する必要があります。 アカウント抽象化は、トランザクションをバンドル化することで、こうした摩擦を取り除きます。 さらに、バンドル化されたトランザクションは、各トランザクションに必要なトークンの正確な値を承認し、トランザクションが完了した後に承認を取り消すことができます。そのため、より安全性が高まります。 ガス代の管理もアカウント抽象化によって大幅に改善されます。 アプリケーションは、ユーザーのガス代を支払うことができるだけでなく、ガス代をETH以外のトークンで支払うこともできます。このため、ユーザーは資金のトランザクションでETH残高を維持する必要がなくなります。 その仕組みを説明すると、コントラクト内でユーザーのトークンをETHに交換し、そのETHをガス代の支払いに使用しています。 diff --git a/public/content/translations/ja/roadmap/beacon-chain/index.md b/public/content/translations/ja/roadmap/beacon-chain/index.md index 7e39a5cb4e5..a0915577bb1 100644 --- a/public/content/translations/ja/roadmap/beacon-chain/index.md +++ b/public/content/translations/ja/roadmap/beacon-chain/index.md @@ -28,7 +28,7 @@ summaryPoint3: ビーコンチェーンは、コンセンサスロジックと ビーコンチェーンの稼働の伴い、 [プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos/)がイーサリアムに導入されました。 イーサリアムの安全性が保たれ、バリデータはより多くのETHを獲得することができるようになりました。 実際にバリデータソフトウェアを起動するには、ETHをステーキングすることになります。 ステーカーは、チェーンに新しいブロックを作成し、検証するバリデータソフトウェアを実行します。 -ステーキングは、かつての[マイニング](/developers/docs/mining/)と同じ目的を果たしますが、その手法は多くの点で異なります。 マイニングには、強力なハードウェアや大量のエネルギーが必要であり、そのため、多額の先行投資が必要になります。その結果、規模の経済が生まれ、集中化が進みました マイニングにおいても、資産を担保としてロックする必要がなかったため、攻撃後に悪意のある行為者を罰するプロトコルの能力にも限界がありました。 +ステーキングは、かつての[マイニング](/developers/docs/consensus-mechanisms/pow/mining/)と同じ目的を果たしますが、その手法は多くの点で異なります。 マイニングには、強力なハードウェアや大量のエネルギーが必要であり、そのため、多額の先行投資が必要になります。その結果、規模の経済が生まれ、集中化が進みました マイニングにおいても、資産を担保としてロックする必要がなかったため、攻撃後に悪意のある行為者を罰するプロトコルの能力にも限界がありました。 プルーフ・オブ・ステークへの移行により、イーサリアムは従来のプルーフ・オブ・ワークに比べて、格段にセキュリティと分散性が向上しました。 ネットワークに参加する人が多いほど、より分散化され、攻撃の危険性が減少します。 diff --git a/public/content/translations/ja/roadmap/danksharding/index.md b/public/content/translations/ja/roadmap/danksharding/index.md index dbfe0a9b0e2..f4933df455e 100644 --- a/public/content/translations/ja/roadmap/danksharding/index.md +++ b/public/content/translations/ja/roadmap/danksharding/index.md @@ -1,5 +1,5 @@ --- -title: ダークシャーディング +title: ダンクシャーディング description: イーサリアムをスケーリングするための2段階のアップグレードである、プロトダンクシャーディングとダンクシャーディングについて学びます。 lang: ja summaryPoints: @@ -9,23 +9,25 @@ summaryPoints: - その後、完全なダンクシャーディングは、データブロブの検証責任をノードのサブセット全体に広げ、さらにイーサリアムのスケーリングを1秒間のトランザクション件数を10万件以上に拡張します。 --- -# ダークシャーディング {#danksharding} +# ダンクシャーディング {#danksharding} **ダンクシャーディング**は、イーサリアムが真にスケーラブルなブロックチェーンになるうえで重要な役割を果たしています。しかし、そこに到達するには、複数のプロトコルをアップグレードする必要があります。 **プロトダンクシャーディング**は、ダンクシャーディングへの中間ステップです。 どちらもユーザーにとってレイヤー2でのトランザクションを可能な限り安価にすることを目的としています。また、イーサリアムを1秒間のトランザクション件数を10万件以上に拡大することを目指しています。 ## プロトダンクシャーディングとは {#what-is-protodanksharding} -[EIP-4844](https://eips.ethereum.org/EIPS/eip-4844)として知られるプロトダンクシャーディングは、[ロールアップ](/layer-2/#rollups)がより安価なデータをブロックに追加する方法です。 この名称は、アイデアを提案した2名の研究者 (プロトラムダ氏とダンクラッド・フィースト氏)に由来しています。 現在のシステムでは、ロールアップは`CALLDATA`にトランザクションを投稿するため、ユーザートランザクションのコストを安くするには限界があります。 たとえロールアップがデータを必要とするのが短期間であっても、すべてのイーサリアムノードによって処理され、チェーン上にデータが永久に存在するため高価になってしまいます。 プロトダンクシャーディングでは、ブロックに送信、添付できるデータブロブを導入します。 これらのブロブ内のデータは、EVMにアクセスできず、一定期間 (1~3か月) が経過すると自動的に削除されます。 データブロブにより、ロールアップはデータをより安価に送信できるため、節約した費用をトランザクションのコストとして削減することができます。これにより、エンドユーザーはより安価にトランザクションを行うことができます。 +[EIP-4844](https://eips.ethereum.org/EIPS/eip-4844)として知られるプロトダンクシャーディングは、[ロールアップ](/layer-2/#rollups)がより安価なデータをブロックに追加する方法です。 この名称は、アイデアを提案した2名の研究者 (プロトラムダ氏とダンクラッド・フィースト氏)に由来しています。 歴史的に、ロールアップは`CALLDATA`にトランザクションを投稿するため、ユーザートランザクションのコストを安くするには限界がありました。 + +たとえロールアップがデータを必要とするのが短期間であっても、すべてのイーサリアムノードによって処理され、チェーン上にデータが永久に存在するため高価になってしまいます。 プロトダンクシャーディングでは、ブロックに送信、添付できるデータブロブを導入します。 これらのブロブ内のデータは、EVMにアクセスできず、一定期間 (執筆時点において4096エポックに設定、すなわち約18日間) が経過すると自動的に削除されます。 データブロブにより、ロールアップはデータをより安価に送信できるため、節約した費用をトランザクションのコストとして削減することができます。これにより、エンドユーザーはより安価にトランザクションを行うことができます。 -ロールアップは、トランザクションをオフチェーンでバッチ処理し、その結果をイーサリアムに投稿することで、イーサリアムをスケーラビリティを改善する方法です。 ロールアップは、基本的にデータと実行確認の2つの要素で構成されています。 データは、イーサリアムに投稿される状態変更を生成するためにロールアップによって処理されている、トランザクションの完全なシーケンスです。 実行確認では、正直なアクターである証明者が、提案された状態変更が正しいことを確認するために、トランザクションを再度実行します。 実行確認を行うには、誰でもダウンロードして確認できるように、トランザクションデータの公開期間を十分に設けておく必要があります。 実行確認により、証明者は、ロールアップシーケンサーが行った不正行為を特定でき、異議申立をすることができます。 ただし、このトランザクションデータを永久的に保存する必要はありません。 +ロールアップは、トランザクションをオフチェーンでバッチ処理し、その結果をイーサリアムに投稿することで、イーサリアムをスケーラビリティを改善する方法です。 ロールアップは、基本的にデータと実行確認の2つの要素で構成されています。 データは、イーサリアムに投稿される状態変更を生成するためにロールアップによって処理されている、トランザクションの完全なシーケンスです。 実行確認では、正直なアクターである証明者が、提案された状態変更が正しいことを確認するために、トランザクションを再度実行します。 実行チェックを行うためには、トランザクションデータが十分長い間利用可能であり、誰でもダウンロードして確認できるようになっている必要があります。 実行確認により、証明者は、ロールアップシーケンサーが行った不正行為を特定でき、異議申立をすることができます。 ただし、このトランザクションデータを永久的に保存する必要はありません。 -ロールアップは、トランザクションデータへのコミットメントをオンチェーンに投稿し、実際のデータをデータブロブで入手できるようにするため、 証明者はコミットメントが有効であることを確認したり、間違っていると思われるデータに異議を唱えることができます。 ノードレベルでは、データブロブはコンセンサスクライアントに保持されます。 コンセンサスクライアントは、データを確認し、それがネットワーク全体に伝播したことを証明します。 データが永久的に保持される場合、これらのクライアントの容量が大きくなり、ノードの実行に大量のハードウェアが必要になる可能性があります そのため、データは1~3か月ごとにノードから自動的に削除されます。 コンセンサスクライアントのアテステーションは、証明者がデータを十分に検証する機会があったことを示しています。 実際のデータは、ロールアップオペレータやユーザーなどがオフチェーンに保存できます。 +ロールアップは、トランザクションデータへのコミットメントをオンチェーンに投稿し、実際のデータをデータブロブで入手できるようにするため、 証明者はコミットメントが有効であることを確認したり、間違っていると思われるデータに異議を唱えることができます。 ノードレベルでは、データブロブはコンセンサスクライアントに保持されます。 コンセンサスクライアントは、データを確認し、それがネットワーク全体に伝播したことを証明します。 データが永久的に保持される場合、これらのクライアントの容量が大きくなり、ノードの実行に大量のハードウェアが必要になる可能性があります その代わりに、データは18日ごとにノードから自動的に削除されます。 コンセンサスクライアントのアテステーションは、証明者がデータを十分に検証する機会があったことを示しています。 実際のデータは、ロールアップオペレータやユーザーなどがオフチェーンに保存できます。 @@ -35,15 +37,17 @@ summaryPoints: ### KZGとは {#what-is-kzg} -KZGは、Kate-Zaverucha-Goldbergの頭文字で、これは3人の[原作者](https://link.springer.com/chapter/10.1007/978-3-642-17373-8_11)の名前を表しています。 データのブロブを小さな[暗号「コミットメント」](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html) まで縮小するスキームのことです。 ロールアップによって送信されたデータブロブは、ロールアップが不正な動作を行っていないか確認するために検証する必要があります。 そのためには、証明者がブロブ内のトランザクションを再実行して、コミットメントが正しいことを確認します。 これは、実行クライアントがマークルプルーフを使用してレイヤー1上のイーサリアムトランザクションの正当性をチェックする方法と、概念的には同じです。 KZGは、多項式をデータに当てはめる代替証明です。 コミットメントは、秘密になっている複数のデータ点で多項式を評価します。 証明者は、データに対して同じ多項式と同じ値で評価し、結果が同じであることを確認します。 これは、ゼロ知識技術と互換性のあるデータ検証方式であり、一部のロールアップやイーサリアムプロトコルの他の箇所で使用されています。 +KZGはKate-Zaverucha-Goldbergの頭文字であり、これはデータの塊を小さな[暗号学的「コミットメント」](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html)に縮小する方式の[最初の著者たち](https://link.springer.com/chapter/10.1007/978-3-642-17373-8_11)の名前に由来しています。 ロールアップによって送信されたデータブロブは、ロールアップが不正な動作を行っていないか確認するために検証する必要があります。 そのためには、証明者がブロブ内のトランザクションを再実行して、コミットメントが正しいことを確認します。 これは、実行クライアントがマークルプルーフを使用してレイヤー1上のイーサリアムトランザクションの正当性をチェックする方法と、概念的には同じです。 KZGは、多項式をデータに当てはめる代替証明です。 コミットメントは、秘密になっている複数のデータ点で多項式を評価します。 証明者は、データに対して同じ多項式と同じ値で評価し、結果が同じであることを確認します。 これは、ゼロ知識技術と互換性のあるデータ検証方式であり、一部のロールアップやイーサリアムプロトコルの他の箇所で使用されています。 + +### KZGセレモニーとは何だったのか? {#what-is-a-kzg-ceremony} -### KZGセレモニーとは {#what-is-a-kzg-ceremony} +KZGセレモニーは、Ethereumコミュニティの多くの人々が共同で秘密のランダムな数字の文字列を生成し、それをいくつかのデータの検証に使用できるようにする方法でした。 この数字列は、誰にも知られず、誰にも再現できないことが、非常に重要であり、 これを確実にするために、セレモニーに参加した各人は前の参加者から文字列を受け取りました。 その後、彼らは新しいランダムな値を生成して (例えば、ブラウザにマウスの動きを測定させることによって) 、それを前の値と混ぜ合わせました。 次に、彼らはその値を次の参加者に送り、自分のローカルマシンからはその値を削除しました。 セレモニーに参加する人の中で1人でもこれを正直に行った場合、最終的な値は攻撃者には知り得ないものになります。 -KZGセレモニーは、イーサリアムコミュニティ全体から多くの人々が協力して生成する、データの検証に使用できる秘密のランダムな数字列を生成する方法です。 この数字列は、誰にも知られず、誰にも再現できないことが、非常に重要であり、 そのために、セレモニーに参加する各人は、前の参加者から文字列を受け取ります。 次に、ブラウザにマウスの動きを測定させるなどして、いくつかの新しいランダム値を作成します。それを以前の値と混ぜて、 次の参加者に送信し、送信後にローカルマシンからその値を破棄します。 セレモニーに参加する1人がこれを正直に行う限り、最終的な値が攻撃者に判明することはありません。 EIP-4844のKZGセレモニーは一般公開され、何万人もの人々がエントロピーを追加するために参加しました。 セレモニーを妨害するためには、参加者の100%が積極的に不正行為を行わなければなりません。 参加者の観点では、自分自身が正直であるとわかっていれば、その人自身がセレモニーの安全を確保したことがわかるので、他の人を信頼する必要はありません(参加者が個々に、N人中1人の正直な参加者の要件を満たしています) 。 +EIP-4844 KZGセレモニーは公開されており、数万人の人々が参加して自分自身のエントロピー (ランダム性) を追加しました。 合計で14万回以上の貢献があり、これはその種の中で世界最大のセレモニーとなりました。 セレモニーを妨害するためには、参加者の100%が積極的に不正行為を行わなければなりません。 参加者の観点では、自分自身が正直であるとわかっていれば、その人自身がセレモニーの安全を確保したことがわかるので、他の人を信頼する必要はありません(参加者が個々に、N人中1人の正直な参加者の要件を満たしています) 。 -ロールアップがデータをブロブに投稿すると、チェーン上に投稿するという「コミットメント」を提供します。 このコミットメントは、特定の点でデータに適合する多項式を評価した結果です。 この点は、KZGセレモニーで生成された乱数によって定義され、 証明者はデータを検証するために同じ点で多項式を評価できます。同じ値になった場合、データは正しいということになります。 +ロールアップがブロブにデータを投稿するとき、彼らはチェーン上に投稿する「コミットメント」を提供します。 このコミットメントは、特定の点でデータに適合する多項式を評価した結果です。 この点は、KZGセレモニーで生成された乱数によって定義され、 証明者はデータを検証するために同じ点で多項式を評価できます。同じ値になった場合、データは正しいということになります。 @@ -61,7 +65,7 @@ KZGセレモニーは、イーサリアムコミュニティ全体から多く ダンクシャーディングは、プロトダンクシャーディングで始まったロールアップスケーリングの完成版です。 ダンクシャーディングは、イーサリアムに大容量のスペースをもたらし、ロールアップのトランザクションデータを圧縮して保存できるようにします。 これにより、イーサリアムは数百ものロールアップを簡単にサポートでき、毎秒数百万のトランザクションを処理できるようになります。 -この仕組みを説明すると、ブロックに添付されるブロブをプロトダンクシャーディングの1個から完全なダンクシャーディングである64個まで拡張する方法を導入することで機能します。 必要な残りの変更は、新しい大きなブロブを処理できるようにするためにコンセンサスクライアントの動作方法をすべて更新することです。 これらの変更の中には、ダンクシャーディングとは関係なく、別の目的のためにすでに計画されているものもあります。 例えば、ダンクシャーディングでは、提案者と作成者の分離が実装されている必要があります。 これは、さまざまなバリデータ間でブロックの作成とブロックの提案のタスクを分離するアップグレードです。 同様に、ダンクシャーディングにはデータ可用性のサンプリングが必要ですが、多くの履歴データを保存しない超軽量クライアント「ステートレスクライアント」の開発にも必要です。 +これを機能させる方法として、ブロックに添付されるブロブの数を、プロトダンクシャーディングの6つから、完全なダンクシャーディングで64に拡張します。 必要な残りの変更は、新しい大きなブロブを処理できるようにするためにコンセンサスクライアントの動作方法をすべて更新することです。 これらの変更の中には、ダンクシャーディングとは関係なく、別の目的のためにすでに計画されているものもあります。 例えば、ダンクシャーディングでは、提案者と作成者を分離する必要があります。 これは、さまざまなバリデータ間でブロックの作成とブロックの提案のタスクを分離するアップグレードです。 同様に、ダンクシャーディングにはデータ可用性のサンプリングが必要ですが、多くの履歴データを保存しない超軽量クライアント「ステートレスクライアント」の開発にも必要です。 @@ -77,7 +81,7 @@ KZGセレモニーは、イーサリアムコミュニティ全体から多く ### 現在の進行状況 {#current-progress} -完全なダンクシャーディングは、数年先を予定していますが、 プロトダンクシャーディングは、近日にリリースされます。 この記事の執筆時点(2023年2月)において、KZGセレモニーはまだ開催中であり、これまでに5万人以上の参加者を集めています。 プロトダンクシャーディングの[EIP](https://eips.ethereum.org/EIPS/eip-4844)は完成に近づいており、仕様も合意に至っています。現在、クライアントのテストが行われており、本番環境に導入するためのプロトタイプが実装されています。 次のステップは、公開テストネット上で変更を実装することです。 [EIP 4844準備チェックリスト](https://github.com/ethereum/pm/blob/master/Dencun/4844-readiness-checklist.md)を使うことで、最新の状況を把握することができます。 +完全なダンクシャーディングは、数年先を予定していますが、 一方で、KZGセレモニーは、14万以上のコントリビューションがありました。そして、プロトダンクシャーディングの[EIP](https://eips.ethereum.org/EIPS/eip-4844)は成熟しました。 この提案は、すべてのテストネットで完全に実装されました。そして、2024年3月にカンクン - デネブ (「デンクン」)ネットワーク・アップグレードでメインネットでもリリースされました。 ### 参考文献 {#further-reading} diff --git a/public/content/translations/ja/roadmap/future-proofing/index.md b/public/content/translations/ja/roadmap/future-proofing/index.md index f3111b899b0..8cb26ce15f1 100644 --- a/public/content/translations/ja/roadmap/future-proofing/index.md +++ b/public/content/translations/ja/roadmap/future-proofing/index.md @@ -11,11 +11,11 @@ template: roadmap ## 量子耐性 {#quantum-resistance} -現在のイーサリアムを保護するの一部の暗号技術は、量子コンピューティングが実現した際に脆弱性が露呈する可能性があります。 量子コンピューターが現代の暗号技術にとって脅威となるには数十年かかると言われていますが、イーサリアムは今後何世紀にもわたって安全に運用することを目標にしています。 そのため、[イーサリアムの量子耐性](https://consensys.net/blog/developers/how-will-quantum-supremacy-affect-blockchain/)をできるだけ早く実現する必要があります。 +現在のイーサリアムを保護する[暗号技術](/glossary/#cryptography)の一部は、量子コンピューティングが実現した際に脆弱性が露呈する可能性があります。 量子コンピューターが現代の暗号技術にとって脅威となるには数十年かかると言われていますが、イーサリアムは今後何世紀にもわたって安全に運用することを目標にしています。 そのため、[イーサリアムの量子耐性](https://consensys.net/blog/developers/how-will-quantum-supremacy-affect-blockchain/)をできるだけ早く実現する必要があります。 -イーサリアムのデベロッパーが直面している課題として、現在のプルーフ・オブ・ステークのプロトコルが、有効なブロックの投票を集約するために、非常に効率的な署名スキームであるBLSに依存していることです。 この署名スキームは、量子コンピューターによって破られてしまう可能性があります。一方、量子耐性のある代替手段は、計算効率がそれほど良くありません。 +イーサリアムのデベロッパーが直面している課題は、現在の[プルーフ・オブ・ステーク](/glossary/#pos)のプロトコルが、有効な[ブロック](/glossary/#block)の投票を集約するために、非常に効率的な署名スキームであるBLSに依存していることです。 この署名スキームは、量子コンピューターによって破られてしまう可能性があります。一方、量子耐性のある代替手段は、計算効率がそれほど良くありません。 -イーサリアムでは、暗号秘密を生成するために[「KZG」コミットメントスキーム](/roadmap/danksharding/#what-is-kzg)が広く使われています。しかし、このスキームは量子コンピュータによって破られる可能性があります。 現在は、多くのユーザーが生成したランダム性を使用して「信頼できるセットアップ」として回避されており、量子コンピューターによるリバースエンジニアリングができないようになっています。 しかし、理想的には、量子安全暗号を組み込むことで、脆弱性を根本的に解決することが望まれます。 BLSスキームの効率的な代替となる可能性のある2つの主要なアプローチとして、[STARKベース](https://hackmd.io/@vbuterin/stark_aggregation)と[ラティスベース](https://medium.com/asecuritysite-when-bob-met-alice/so-what-is-lattice-encryption-326ac66e3175)の署名スキームがあります。 これらについては現在、研究および試作中です。 +イーサリアムでは、暗号秘密を生成するために[「KZG」コミットメントスキーム](/roadmap/danksharding/#what-is-kzg)が広く使われています。しかし、このスキームは量子コンピュータによって破られる可能性があります。 現在は、多くのユーザーが生成したランダム性を使用して「信頼できるセットアップ」として回避されており、量子コンピューターによるリバースエンジニアリングができないようになっています。 しかし、理想的には、量子安全暗号を組み込むことで、脆弱性を根本的に解決することが望まれます。 BLSスキームの効率的な代替となる可能性のある2つの主要なアプローチとして、[STARKベース](https://hackmd.io/@vbuterin/stark_aggregation)と[ラティスベース](https:/ /medium.com/asecuritysite-when-bob-met-alice/so-what-is-lattice-encryption-326ac66e3175)の署名スキームがあります。 **これらについては現在、研究および試作中です**。 KZGと信頼できるセットアップについての詳細 @@ -23,13 +23,13 @@ template: roadmap 複雑なシステムでは、攻撃者が悪用できるバグや脆弱性が発生しやすくなります。 そのため、イーサリアムは、ロードマップの中で、不要なコードを削除したり、改善したりして、システムを簡素化することを目指しています。 無駄のないシンプルなコードベースにすることで、デベロッパーは保守、理解しやすくなります。 -[イーサリアム仮想マシン(EVM)](/developers/docs/evm)をよりシンプルで効率的なものにするアップデートが予定されています。 その一環として、[SELFDESTRUCTオペコードが削除](https://hackmd.io/@vbuterin/selfdestruct)されます。このコマンドはめったに使用されなくなりましたが、状況によっては使用すると危険を伴う場合があります。例えば、特にイーサリアムのストレージモデルに対する将来のアップグレードと組み合わせた場合です。 イーサリアムクライアントは、現在でも完全に削除可能な古いトランザクションタイプをサポートしています。 また、ガスの計算方法も改善される予定です。暗号操作を支える算術演算に対して、より効率的な方法が導入されます。 +[イーサリアム仮想マシン(EVM)](/developers/docs/evm)をよりシンプルで効率的なものにするアップデートが予定されています。 その一環として、[SELFDESTRUCTオペコードが削除](https://hackmd.io/@vbuterin/selfdestruct)されます。このコマンドはめったに使用されなくなりましたが、状況によっては使用すると危険を伴う場合があります。例えば、特にイーサリアムのストレージモデルに対する将来のアップグレードと組み合わせた場合です。 [イーサリアムクライアント](/glossary/#consensus-client)は、現在では完全に削除可能ないくつかの古いトランザクションタイプをまだサポートしています。 また、[ガス](/glossary/#gas)の計算方法も改善される可能性があり、暗号論的操作を支える演算について、より効率的な方法が導入できます。 同様に、現在のイーサリアムクライアントの他の部分もアップデートされる可能性があります。 一例として現在は、実行クライアントとコンセンサスクライアントが異なるデータ圧縮方式を使用しています。 この圧縮方式をネットワーク全体で統一すれば、クライアント間でのデータ共有がより簡単で直感的になります。 ## 現在の進行状況 {#current-progress} -イーサリアムの将来的な安全性を確保するために必要なアップグレードの多くは、まだ研究段階です。実装には数年かかると考えられており、 SELF-DESTRUCTの削除や、実行クライアントとコンセンサスクライアントで使用される圧縮方式の統一などのアップグレードは、量子耐性のある暗号よりも早く実現される可能性があります。 +イーサリアムの将来的な安全性を確保するために必要なアップグレードの多くは、**まだ研究段階で実装には数年かかると考えられています**。 SELF-DESTRUCTの削除や、実行クライアントとコンセンサスクライアントで使用される圧縮方式の統一などのアップグレードは、量子耐性のある暗号よりも早く実現される可能性があります。 **参考文献** diff --git a/public/content/translations/ja/roadmap/index.md b/public/content/translations/ja/roadmap/index.md index 5a303e4f393..26f277bdeab 100644 --- a/public/content/translations/ja/roadmap/index.md +++ b/public/content/translations/ja/roadmap/index.md @@ -3,7 +3,7 @@ title: イーサリアムロードマップ description: イーサリアムのスケーラビリティ、セキュリティ、サステナビリティを改善する工程 lang: ja template: roadmap -image: /roadmap/roadmap-ux.png +image: /heroes/roadmap-hub-hero.jpg alt: "イーサリアムロードマップ" summaryPoints: buttons: @@ -61,7 +61,7 @@ buttons: -イーサリアムのロードマップは、研究者と開発者たちが長年かけて築き上げてきたものです。このプロトコルは非常に技術的な内容ではあるものの、やる気があれば誰でも参加することができます。 新しいアイデアは、通常、[ethresear.ch](https://ethresear.ch/)、[イーサリアム・マジシャンズ](https://www.figma.com/exit?url=https%3A%2F%2Fethereum-magicians.org%2F) 、イーサリアム研究開発のDiscordサーバーなどのフォーラムで議論されます。 議論の内容は、新たに見つかった脆弱性への対応、アプリケーションレイヤーで活動する組織(dAppや取引所など)からの提案、エンドユーザーにとっての既知の摩擦(コストやトランザクション速度など)への対応だったりします。 新しいアイデアが成熟すると、[イーサリアム改善提案](https://eips.ethereum.org/)として提案できます。 このアイデアの創出は、誰でも参加できるオープンなプロセスです。コミュニティのメンバーであれば、いつでも議論に参加できます。 +イーサリアムのロードマップは、研究者と開発者たちが長年かけて築き上げてきたものです。このプロトコルは非常に技術的な内容ではあるものの、やる気があれば誰でも参加することができます。 新しいアイデアは、通常、[ethresear.ch](https://ethresear.ch/)、[イーサリアム・マジシャンズ](https://ethereum-magicians.org) 、イーサリアム研究開発のDiscordサーバーなどのフォーラムで議論されます。 議論の内容は、新たに見つかった脆弱性への対応、アプリケーションレイヤーで活動する組織( [dApp](/glossary/#dapp)や取引所など)からの提案、エンドユーザーにとっての既知の摩擦(コストやトランザクション速度など)への対応だったりします。 新しいアイデアが成熟すると、[イーサリアム改善提案](https://eips.ethereum.org/)として提案できます。 このアイデアの創出は、誰でも参加できるオープンなプロセスです。コミュニティのメンバーであれば、いつでも議論に参加できます。 [イーサリアムにおけるガバナンスの詳細](/governance/) @@ -70,42 +70,42 @@ buttons:

ETH2とは何ですか?

-

「Eth2」という用語は、プルーフ・オブ・ステークへ移行する前、イーサリアムの今後を説明するために広く使用されていましたが、より正確な用語の方が好ましいということで段階的に廃止されました。元々は、プルーフ・オブ・ステークへの移行前のネットワークと移行後のネットワークを区別するために使われていました。また、異なるイーサリアムクライアントを指す場合もありました。具体的には、実行クライアントをETH1クライアント、コンセンサスクライアントをETH2クライアントと呼んでいました。

+

「Eth2」という用語は、プルーフ・オブ・ステークへ移行する前、イーサリアムの今後を説明するために広く使用されていましたが、より正確な用語の方が好ましいということで段階的に廃止されました。元々は、プルーフ・オブ・ステークへの移行前のネットワークと移行後のネットワークを区別するために使われていました。また、異なるイーサリアムクライアントを指す場合もありました。具体的には、実行クライアントをETH1クライアント、コンセンサスクライアントをETH2クライアントと呼んでいました。

## イーサリアムのロードマップは時間とともに変化しますか? {#will-ethereums-roadmap-change-over-time} -はい、ほぼ間違いなく変化します。 ロードマップは、現在のイーサリアムをアップグレードするための計画です。短期的および将来にわたる長期的な計画の両方をカバーしています。 新しい情報技術が使えるようになると、ロードマップも変更される可能性があります。 +**はい、ほぼ間違いなく変化します。** ロードマップは、現在のイーサリアムをアップグレードするための計画です。短期的および将来にわたる長期的な計画の両方をカバーしています。 新しい情報技術が使えるようになると、ロードマップも変更される可能性があります。 イーサリアムのロードマップは、イーサリアムを改善するための目的の集合と考えてください。 いわば、コアの研究者と開発者が考えた、イーサリアムが目指すべき最適なパスの仮説です。 ## ロードマップに終わりはありますか? {#when-will-the-roadmap-be-finished} -イーサリアムでは、今後6か月の間に、ステーキングの引き出しなどのアップグレードを実装します 。一方、耐量子暗号などのアップグレードは優先度が低く、今後5〜10年間は実装されないかもしれません。 イーサリアムは、多数のロードマップアイテムを同時に進めており、それぞれ異なる速度で開発されています。そのため、各アップグレードの正確なタイミングを予測するのは難しくなっています。 アップグレードの緊急性は、時間の経過とともに外部要因によって変化する可能性があります。例えば、量子コンピューターの性能と普及が急速に進むにつれて、耐量子暗号の緊急性がますます高まっていくかもしれません。 +一部のアップグレードについては、優先順位が低く、5~10年間は実装されない可能性があります(例: 量子耐性)。 イーサリアムは、多数のロードマップアイテムを同時に進めており、それぞれ異なる速度で開発されています。そのため、**各アップグレードの正確なタイミングを予測するのは難しくなっています**。 アップグレードの緊急性は、時間の経過とともに外部要因によって変化する可能性があります。例えば、量子コンピューターの性能と普及が急速に進むにつれて、耐量子暗号の緊急性がますます高まっていくかもしれません。 イーサリアムの発展を考えるには、生物学的進化を参考にするのも1つの方法です。 新しい課題に適応し、適応度を維持できるネットワークは、より成功する可能性が高くなります。そのため、ネットワークのパフォーマンスが上がるにつれて、スケーラブルで安全なプロトコルが必要になります。またプロトコルの変更を最小限に抑え、変化に対して耐性を持つことも重要です。 ## アップグレードをするには、何が必要ですか? {#do-i-have-to-do-anything-when-there-is-an-upgrade} -アップグレードは、基本的にエンドユーザーに影響しません。しかし、より良いユーザーエクスペリエンス、より安全なプロトコル、イーサリアムとのやり取りにおいてより多くの選択肢などを提供することについては、影響が考えられます。 エンドユーザーは、アップグレードについて何もする必要はありません。資産を保護するためにも、特別なことをする必要はありません。 ただし、ノードオペレーターは、アップグレードの準備のためにクライアントを更新する必要があります。 一部のアップグレードは、アプリケーションデベロッパーにとって変更となる可能性があります。 例えば、履歴の有効期限におけるアップグレードでは、アプリケーションデベロッパーは、新しい情報源から履歴データを取得することになります。 +アップグレードは、基本的にエンドユーザーに影響しません。しかし、より良いユーザーエクスペリエンス、より安全なプロトコル、イーサリアムとのやり取りにおいてより多くの選択肢などを提供することについては、影響が考えられます。 **通常のユーザーは、アップグレードについて何もする必要はありません**。資産を保護するためにも、特別なことをする必要はありません。 ただし、[ノード](/glossary/#node)オペレーターは、アップグレードの準備のためにクライアントを更新する必要があります。 一部のアップグレードは、アプリケーションデベロッパーにとって変更となる可能性があります。 例えば、履歴の有効期限におけるアップグレードでは、アプリケーションデベロッパーは、新しい情報源から履歴データを取得することになります。 ## バージやスプラージなどは何を指していますか? {#what-about-the-verge-splurge-etc} -[ヴィタリック・ブテリンは、イーサリアムのロードマップの構想を提案しました](https://twitter.com/VitalikButerin/status/1588669782471368704)が、その内容は、イーサリアムのアーキテクチャへの影響別に、個別のカテゴリに分類されていました。 提案内容は、以下のとおりです。 +[ヴィタリック・ブテリンは、イーサリアムのロードマップの構想を提案しました](https://twitter.com/VitalikButerin/status/1741190491578810445)が、その内容は、イーサリアムのアーキテクチャへの影響別に、いくつかのカテゴリに分類されていました。 提案内容は、以下のとおりです。 -- マージ: プルーフ・オブ・ワークからプルーフ・オブ・ステークへの移行に関連するアップグレード -- サージ: ロールアップとデータシャーディングによるスケーラビリティ向上に関連するアップグレード -- スカージ: MEVからの検閲耐性、分散化、プロトコルのリスクに関連するアップグレード -- バージ: ブロックの検証をより簡単にするアップグレード -- パージ: ノード実行における計算コストの削減とプロトコルの簡素化に関連するアップグレード -- スプラージ: これまでのカテゴリに分類できないその他のアップグレード +- **マージ**: [プルーフ・オブ・ワーク](/glossary/#pow)から[プルーフ・オブ・ステーク](/glossary/#pos)への移行に関連するアップグレード +- **サージ**: [ロールアップ](/glossary/#rollups)とデータシャーディングによるスケーラビリティ向上に関連するアップグレード +- **スカージ**: [MEV](/glossary/#mev)がもたらす検閲耐性、分散化、プロトコルのリスクに関連するアップグレード +- **バージ**: [ブロック](/glossary/#block)の検証をより簡単にするアップグレード +- **パージ**: ノード実行における計算コストの削減とプロトコルの簡素化に関連するアップグレード +- **スプラージ**: これまでのカテゴリに分類できないその他のアップグレード よりシンプルでよりユーザーに寄り添ったモデルを目指すため、この用語は使用しないことにしました。 ヴィタリックが提案した構想はそのままですが、用語をよりユーザーにわかりやすいものに変更します。 ## シャーディングとは何ですか? {#what-about-sharding} -シャーディングでは、イーサリアムのブロックチェーンを分割する技術です。バリデータのサブセットは、それぞれのチェーンでデータを検証する役割を担います。 これは、もともとイーサリアムをスケーリングする方法として開発されました。 しかし、レイヤー2ロールアップの開発が予想以上に進み、すでにさまざまなスケーリング機能を提供できるようになりました。また、プロトダンクシャーディングの実装後には、さらに多くの機能を提供する予定となっているため、 「シャードチェーン」は不要になり、ロードマップから削除されました。 +シャーディングは、イーサリアムのブロックチェーンを分割する技術です。[バリデータ](/glossary/#validator)のサブセットは、それぞれのチェーンでデータを検証する役割を担います。 これは、もともとイーサリアムをスケーリングする方法として開発されました。 しかし、[レイヤー2](/glossary/#layer-2)ロールアップの開発が予想以上に進み、すでにさまざまなスケーリング機能を提供できるようになりました。また、プロトダンクシャーディングの実装後には、さらに多くの機能を提供する予定となっているため、 「シャードチェーン」は不要になり、ロードマップから削除されました。 ## 特定の技術アップグレードについての情報 {#looking-for-specific-technical-upgrades} diff --git a/public/content/translations/ja/roadmap/merge/index.md b/public/content/translations/ja/roadmap/merge/index.md index e6000985601..87cc7ab0dbf 100644 --- a/public/content/translations/ja/roadmap/merge/index.md +++ b/public/content/translations/ja/roadmap/merge/index.md @@ -11,7 +11,7 @@ summaryPoint3: マージとは、元のイーサリアムメインネットが summaryPoint4: マージによりイーサリアムのエネルギー消費が99.95%削減されました。 --- - + マージは、2022年9月15日に行われました。 これにより、イーサリアムはプルーフ・オブ・ステーク・コンセンサスへの移行を完了し、公式にプルーフ・オブ・ワークは廃止されました。この移行により、エネルギー消費量が最大99.95%削減されました。 diff --git a/public/content/translations/ja/roadmap/merge/issuance/index.md b/public/content/translations/ja/roadmap/merge/issuance/index.md index fb07218b074..91c8df33cd2 100644 --- a/public/content/translations/ja/roadmap/merge/issuance/index.md +++ b/public/content/translations/ja/roadmap/merge/issuance/index.md @@ -127,7 +127,7 @@ ETHの発行とは逆に、イーサリアムではETHがバーンされるレ したがって、例えば`X`(一日のETH発行量)がステークされた合計ETH量をもととして1800ETHになったとすると、`f(X)`(すべての発行量を相殺するために必要なgwei) は、`17gwei`となります(有効数字2桁の場合) 。 -## さらに学びたい方へ {#further-reading} +## 参考文献 {#further-reading} - [マージ](/roadmap/merge/) - [Ultrasound.money](https://ultrasound.money/) - _ETHの発行とバーンをリアルタイムで可視化したダッシュボードが利用可能_ diff --git a/public/content/translations/ja/roadmap/pbs/index.md b/public/content/translations/ja/roadmap/pbs/index.md index 6266e5ef6b5..2a23d9fafc3 100644 --- a/public/content/translations/ja/roadmap/pbs/index.md +++ b/public/content/translations/ja/roadmap/pbs/index.md @@ -20,7 +20,7 @@ lang: ja -経済力のある組織は、特定のアドレスのトランザクションをブロックするようにバリデータに圧力をかけてくるかもしれません。 バリデータは、ブラックリストに登録されたアドレスのトランザクションを検出し、その組織が提案したブロックを除外することで、この圧力に対抗します。 PBSを導入すると、ブロック提案者は、自身のブロックでどのトランザクションをブロードキャストしているのか分からなくなるので、この対抗策は使えなくなります。 住んでいる地域で検閲が法律になっている場合、個人やアプリが検閲ルールに準拠しなければならないことがあります。 これらのケースでは、コンプライアンスはアプリケーションレベルで行われ、プロトコルはパーミッションレスで検閲が行われない状態のままです。 +経済力のある組織は、特定のアドレスのトランザクションをブロックするようにバリデータに圧力をかけてくるかもしれません。 バリデーターは、自分たちのトランザクションプール内のブラックリストに載ったアドレスを検出し、自分たちが提案するブロックからそれらを除外することによって、この圧力に対応します。 PBSを導入すると、ブロック提案者は、自身のブロックでどのトランザクションをブロードキャストしているのか分からなくなるので、この対抗策は使えなくなります。 住んでいる地域で検閲が法律になっている場合、個人やアプリが検閲ルールに準拠しなければならないことがあります。 これらのケースでは、コンプライアンスはアプリケーションレベルで行われ、プロトコルはパーミッションレスで検閲が行われない状態のままです。 diff --git a/public/content/translations/ja/roadmap/scaling/index.md b/public/content/translations/ja/roadmap/scaling/index.md index 7db90396ab7..b113df15b24 100644 --- a/public/content/translations/ja/roadmap/scaling/index.md +++ b/public/content/translations/ja/roadmap/scaling/index.md @@ -11,7 +11,7 @@ template: roadmap
    -
  • 現在のロールアップはイーサリアムのレイヤー1よりも約3~8倍安い
  • +
  • 今日のロールアップはイーサリアムレイヤー1よりも約5~20倍安価
  • ゼロ知識ロールアップはまもなく、約40~100倍安くなる予定
  • イーサリアムの今後の仕様変更により、さらに約100~1000倍のスケーリングが実現
  • ユーザーは、トランザクションのコストが0.001ドル未満というメリットを享受
  • @@ -24,26 +24,28 @@ template: roadmap ### プロトダンクシャーディング {#proto-danksharding} -ロールアップのデータは、イーサリアム上に永続的に保存されるため、コストがかかります。 ユーザーは、ロールアップで支払うトランザクションコストの90%以上を、データストレージに費やしています。 トランザクションコストを削減するため、新たに「ブロブ」と呼ばれる一時ストレージ領域にデータを移動できるようになりました。 ブロブは、永続的でないため、比較的コストが安くなっており、不要になるとイーサリアムから削除されます。 ロールアップデータの長期保存は、ロールアップオペレータ、取引所、インデックスサービスなど、それを必要とする人々の役割となります。 イーサリアムへのブロブトランザクションの追加は、「プロトダンクシャーディング」と呼ばれるアップグレードの一部であり、 2023年後半の比較的早い時期にリリースされる予定です。 +ロールアップのデータは、歴史的にイーサリアム上に永続的に保存されており、そのコストは高いです。 ユーザーは、ロールアップで支払うトランザクションコストの90%以上を、データストレージに費やしています。 トランザクションコストを削減するため、新たに「ブロブ」と呼ばれる一時ストレージ領域にデータを移動できるようになりました。 ブロブは、永続的でないため、比較的コストが安くなっており、不要になるとイーサリアムから削除されます。 ロールアップデータの長期保管は、ロールアップオペレーター、取引所、インデキシングサービスなど、そのデータが必要な人々の責任となります。 イーサリアムへのブロブトランザクションの追加は、「プロトダンクシャーディング」と呼ばれるアップグレードの一部であり、 -プロトダンクシャーディングによって、イーサリアムプロトコルにブロブトランザクションが組み込まれると、イーサリアムのブロックにたくさんのブロブを追加できるようになります。 これにより、イーサリアムのスループットが大幅に向上し(100倍以上)、トランザクションのコストも下げることができます。 +プロトダンクシャーディングを使用すると、多くのブロブをイーサリアムブロックに追加することが可能です。 これにより、イーサリアムのスループットが大幅に向上し(100倍以上)、一方でトランザクションコストを大幅に下げることができます。 -### ダークシャーディング {#danksharding} +### ダンクシャーディング {#danksharding} -ブロブデータ拡張の第2段階は、大変複雑です。理由は、ロールアップデータがネットワーク上で利用可能であることを確認する新しい方法が必要だからです。また、バリデータの役割を分離して、ブロック構築とブロック提案に分けることも必要です。 さらに、バリデータがブロブデータの小さなサブセットを検証したことを暗号的に証明する方法も必要になります。 +ブロブデータ拡張の第2段階は、大変複雑です。理由は、ロールアップデータがネットワーク上で利用可能であることを確認する新しい方法が必要だからです。また、[バリデータ](/glossary/#validator)の役割を分離して、[ブロック](/glossary/#block)構築とブロック提案に分けることも必要です。 さらに、バリデータがブロブデータの小さなサブセットを検証したことを暗号的に証明する方法も必要になります。 -この2番目のステップは、[「ダンクシャーディング」](/roadmap/danksharding/)と呼ばれます。 完全に実装されるまでには、数年かかると予想されています。 ダンクシャーディングは、[ブロック構築とブロック提案を分離する](/roadmap/pbs)などの他の開発に依存しています。また、データが利用可能であることを効率的に確認するために、[データ可用性サンプリング(DAS)](/developers/docs/data-availability)と呼ばれる、数キロバイトのデータをランダムにサンプリングする新しいネットワーク設計も採用しています。 +この2番目のステップは、[「ダンクシャーディング」](/roadmap/danksharding/)と呼ばれます。 完全に実装されるまでには、**数年かかると予想されています**。 ダンクシャーディングは、[ブロック構築とブロック提案を分離する](/roadmap/pbs)などの他の開発に依存しています。また、データが利用可能であることを効率的に確認するために、[データ可用性サンプリング(DAS)](/developers/docs/data-availability)と呼ばれる、数キロバイトのデータをランダムにサンプリングする新しいネットワーク設計も採用しています。 ダンクシャーディングの詳細 ## 分散型ロールアップ {#decentralizing-rollups} -[ロールアップ](/layer-2)は、イーサリアムのスケーラビリティ問題を解決する技術として、すでに実用化されています。 [ロールアッププロジェクトの豊富なエコシステム](https://l2beat.com/scaling/tvl)は、さまざまなセキュリティ保証を備えており、ユーザーは迅速かつ安価にトランザクションを実行できます。 しかし、ロールアップは、集中型のシーケンサー(トランザクションをイーサリアムに送信する前にすべてのトランザクション処理と集約を行うコンピューター)に依存しています。 シーケンサーは、オペレーターが制裁を受けたり、賄賂を受け取ったり、その他の方法で妨害される可能性があるため、検閲に対して脆弱です。 同時に、[ロールアップでは受信データを検証する方法が異なります](https://l2beat.com)。 最善の方法としては、「証明者」が不正証明または有効性証明を提出することですが、すべてのロールアップに備わっているわけではありません。 さらに、有効性証明および不正証明を使用するロールアップであっても、既知の証明者の小さなプールを使用するものがあります。 そのため、イーサリアムをスケーリングするための次の重要なステップは、シーケンサーと証明者を実行する責任をより多くの人々に分散することです。 +[ロールアップ](/layer-2)は、イーサリアムのスケーラビリティ問題を解決する技術として、すでに実用化されています。 [ロールアッププロジェクトの豊富なエコシステム](https://l2beat.com/scaling/tvl)は、さまざまなセキュリティ保証を備えており、ユーザーは迅速かつ安価にトランザクションを実行できます。 しかし、ロールアップは、集中型のシーケンサー(トランザクションをイーサリアムに送信する前にすべてのトランザクション処理と集約を行うコンピューター)に依存しています。 シーケンサーは、オペレーターが制裁を受けたり、賄賂を受け取ったり、その他の方法で妨害される可能性があるため、検閲に対して脆弱です。 同時に、[ロールアップでは受信データを検証する方法が異なります](https://l2beat.com)。 最善の方法としては、「証明者」が[不正証明](/glossary/#fraud-proof)または有効性証明を提出することですが、すべてのロールアップに備わっているわけではありません。 さらに、有効性証明および不正証明を使用するロールアップであっても、既知の証明者の小さなプールを使用するものがあります。 そのため、イーサリアムをスケーリングするための次の重要なステップは、シーケンサーと証明者を実行する責任をより多くの人々に分散することです。 ロールアップの詳細 ## 現在の進行状況 {#current-progress} -プロトダンクシャーディングは、ロードマップの初期段階で実装される予定です。 セットアップに必要な分散型の計算ステップはすでに開発済みです。また、いくつかのクライアントがブロブデータを処理できるプロトタイプも実装済みです。 完全なダンクシャーディングは、他のロードマップアイテムの完了を待つ必要があるため、おそらく数年先になるでしょう。 分散型ロールアップのインフラストラクチャは、段階的なプロセスを踏みます。たくさんの異なるロールアップが存在し、各システムで小さな違いがあります。そのため、それぞれ違った速度で完全に分散化されることになるでしょう。 +プロトダンクシャーディングは、これらのロードマップ項目の中で最初に、2024年3月のカンクン-デネブ(「デンクン」)ネットワークアップグレードの一環として実装される予定です。 完全なダンクシャーディングは、他のロードマップアイテムの完了を待つ必要があるため、**おそらく数年先になるでしょう**。 分散型ロールアップのインフラストラクチャは、段階的なプロセスを踏みます。たくさんの異なるロールアップが存在し、各システムで小さな違いがあります。そのため、それぞれ違った速度で完全に分散化されることになるでしょう。 + +[デンクンネットワークアップグレードの詳細](/roadmap/dencun/) diff --git a/public/content/translations/ja/roadmap/secret-leader-election/index.md b/public/content/translations/ja/roadmap/secret-leader-election/index.md index 85e4c933f25..780aeb8b375 100644 --- a/public/content/translations/ja/roadmap/secret-leader-election/index.md +++ b/public/content/translations/ja/roadmap/secret-leader-election/index.md @@ -33,7 +33,7 @@ SSLE(シークレット・シングル・リーダー選出)では、選出さ ## シークレット・非シングル・リーダー選出(SnSLE) {#secret-non-single-leader-election} -プルーフ・オブ・ワークにおいてブロックの提案を決定する方法と同様に、バリデータが各スロットでブロックを提案する機会をランダムに与える仕組みもあり、**シークレット・非シングル・リーダー選出(SnSLE)**と呼ばれています。 例えば、現在のプロトコルでバリデータをランダムに選択するために使われているRANDAO関数を活用すれば、簡単に実現できます。 RANDAOを使うアイデアとは、多くの独立しているバリデータから送信されたハッシュを混合することで、十分な乱数が生成するというものです。 SnSLEにおいて、これらのハッシュを使って、次のブロック提案者を選ぶことができます。例えば、最小値のハッシュの選択です。 有効なハッシュ値の範囲を設定することで、各スロットでバリデータが選ばれる可能性を調整することができます。 ハッシュ値が`2^256 * 5 / N` (`N` = アクティブなバリデータ数)未満でなければならないとアサートすると、各スロットで個々のバリデータが選択される可能性は、`5/N`になります。 この例では、少なくとも1人の提案者が各スロットで有効なハッシュを生成する確率は99.3%になります。 +プルーフ・オブ・ワークにおいてブロックの提案を決定する方法と同様に、バリデータが各スロットでブロックを提案する機会をランダムに与える仕組みもあり、シークレット・非シングル・リーダー選出(SnSLE)と呼ばれています。 例えば、現在のプロトコルでバリデータをランダムに選択するために使われているRANDAO関数を活用すれば、簡単に実現できます。 RANDAOを使うアイデアとは、多くの独立しているバリデータから送信されたハッシュを混合することで、十分な乱数が生成するというものです。 SnSLEにおいて、これらのハッシュを使って、次のブロック提案者を選ぶことができます。例えば、最小値のハッシュの選択です。 有効なハッシュ値の範囲を設定することで、各スロットでバリデータが選ばれる可能性を調整することができます。 ハッシュ値が`2^256 * 5 / N` (`N` = アクティブなバリデータ数)未満でなければならないとアサートすると、各スロットで個々のバリデータが選択される可能性は、`5/N`になります。 この例では、少なくとも1人の提案者が各スロットで有効なハッシュを生成する確率は99.3%になります。 ## 現在の進行状況 {#current-progress} diff --git a/public/content/translations/ja/roadmap/security/index.md b/public/content/translations/ja/roadmap/security/index.md index 981c6e3c9a0..39b32db8977 100644 --- a/public/content/translations/ja/roadmap/security/index.md +++ b/public/content/translations/ja/roadmap/security/index.md @@ -7,27 +7,27 @@ alt: "イーサリアムロードマップ" template: roadmap --- -イーサリアムは、すでに非常に安全な分散型スマートコントラクトプラットフォームですが、 今後もあらゆる種類の攻撃に耐えられるように、まだまだ改善の余地があります。 具体的には、イーサリアムクライアントにおける競合ブロックの処理方法を少しだけ変更したり、ネットワークがブロックを [「確定済み」](/developers/docs/consensus-mechanisms/pos/#finality)(攻撃者が多大な経済的損失を受けないと変更できない)にする速度を上げたりするなどです。 +イーサリアムは、**すでに非常に安全**な分散型[スマートコントラクト](/glossary/#smart-contract)プラットフォームですが、 今後もあらゆる種類の攻撃に耐えられるように、まだまだ改善の余地があります。 具体的には、[イーサリアムクライアント](/glossary/#consensus-client)における競合[ブロック](/glossary/#block)の処理方法を少しだけ変更したり、ネットワークがブロックを [「確定済み」](/developers/docs/consensus-mechanisms/pos/#finality)(攻撃者が多大な経済的損失を受けないと変更できない)と判断する速度を上げたりするなどです。 -また、ブロック提案者にブロックの実際の内容を見えないようにすることで、トランザクションの検閲をさらに困難にする改善策や、クライアントがいつ検閲を行ったかを識別する新しい方法もあります。 これらの改善策が合わさることで、プルーフ・オブ・ステークにおけるプロトコルがアップグレードされ、個人から企業のユーザーまで、イーサリアム上のアプリ、データ、資産から即座に信用を得ることができます。 +また、ブロック提案者にブロックの実際の内容を見えないようにすることで、トランザクションの検閲をさらに困難にする改善策や、クライアントがいつ検閲を行ったかを識別する新しい方法もあります。 これらの改善策が合わさることで、[プルーフ・オブ・ステーク](/glossary/#pos)におけるプロトコルがアップグレードされ、個人から企業のユーザーまで、イーサリアム上のアプリ、データ、資産を即座に信頼することができます。 ## ステーキングの引き出し {#staking-withdrawals} -イーサリアムのプルーフ・オブ・ワークからプルーフ・オブ・ステークへのアップグレードは、イーサリアムの先駆者たちが自分のイーサ(ETH)をデポジットコントラクトに「ステーキング」することで始まりました。 このステーキングに使われるETHは、ネットワークの保護に使われます。 ただし、このETHは、現時点ではロックされており、ユーザーに返すことはできません。 プルーフ・オブ・ステークのアップグレードでは、ステーキングしたETHの引き出しが可能になります。 これは、プルーフ・オブ・ステークのプロトコルが完全に機能するために重要な要素であり、ステーカーがETH報酬を自由に使えるようになることで、イーサリアムのセキュリティにも有益です。 なぜなら、ステーキングに流動性を求めるユーザーが、リキッドステーキングデリバティブ(LSD)に頼る必要がなくなるからです。LSDは、イーサリアムを集中化させる力になる可能性があります。 このアップグレードは、2023年4月12日に完了する予定です。 +イーサリアムの[プルーフ・オブ・ワーク](/glossary/#pow)からプルーフ・オブ・ステークへのアップグレードは、イーサリアムの先駆者たちが自分のETHをデポジットコントラクトに「ステーキング」することで始まりました。 このステーキングに使われるETHは、ネットワークの保護に使われます。 2回目のアップグレードが2023年4月12日にあり、ステーキングしたETHを引き出せるようになりました。 それ以降は、バリデータがETHを自由にステーキングしたり引き出したりできるようになりました。 引き出しについての詳細 ## 攻撃からの防御 {#defending-against-attacks} -引き出しが可能になった後にも、イーサリアムの[プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos/)のプロトコルにはいくつかの改善点があります。 1つは、[ビューマージ](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739)と呼ばれる、より安全なフォーク選択アルゴリズムです。 これにより、高度なタイプの攻撃をさらに防ぐことができます。 +イーサリアムのプルーフ・オブ・ステーク・プロトコルには改善の余地があります。 1つは、[ビューマージ](https://ethresear.ch/t/view-merge-as-a-replacement-for-proposer-boost/13739)と呼ばれる、より安全な[フォーク](/glossary/#fork)選択アルゴリズムです。 これにより、特定の高度な攻撃がさらに困難になります。 -イーサリアムがブロックを確定させるまでの時間を短縮することで、ユーザーがより快適に利用できるようになります。また、攻撃者が、高度な「再編成」攻撃を行って直近のブロックの再シャッフルを試みることで、利益を得たり、特定のトランザクションを検閲しようとするのを防ぐことができます。 [**シングルスロット・ファイナリティ(SSF)**](/roadmap/single-slot-finality/)は、トランザクションが確定に至るまでの遅延時間を短縮する方法です。 現行のシステムでは、15分以内に生成されたブロックは、理論上攻撃者が他のバリデータにブロックの再構成を誘導できます。 SSFでは、この脆弱性が解消されます。 個人からアプリや取引所まで、全てのユーザーは、トランザクションが取り消されないという保証を迅速に受けられます。ネットワークでは、SSFによりあらゆる種類の攻撃を遮断することができます。 +イーサリアムがブロックを[ファイナライズ](/glossary/#finality)させるまでの時間を短縮することで、ユーザーがより快適に利用できるようになります。また、攻撃者が、高度な「再編成」攻撃を行って直近のブロックの再シャッフルを試みることで、利益を得たり、特定のトランザクションを検閲しようとするのを防ぐことができます。 [**シングルスロット・ファイナリティ(SSF)**](/roadmap/single-slot-finality/)は、トランザクションが**確定済みになるまでの遅延時間を短縮する方法**です。 現行のシステムでは、15分以内に生成されたブロックは、理論上攻撃者が他のバリデータにブロックの再構成を誘導できます。 SSFでは、この脆弱性が解消されます。 個人からアプリや取引所まで、全てのユーザーは、トランザクションが取り消されないという保証を迅速に受けられます。ネットワークでは、SSFによりあらゆる種類の攻撃を遮断することができます。 シングルスロット・ファイナリティの詳細 ## 検閲からの防御 {#defending-against-censorship} -分散化は、個人や少数のグループのバリデータが、過剰な影響力を持ってしまうことを防ぐ効果があります。 新たなステーキングの技術は、イーサリアムのバリデータを可能な限り分散化した状態に保ち、ハードウェア、ソフトウェア、ネットワークの障害から保護します。 この新たなステーキングの技術では、複数のノード間でバリデータの責任を共有するソフトウェアも対象になっています。 これを、**分散バリデータ技術(DVT)**と呼びます。 DVTにより、複数のコンピュータが共同で検証を行うことで、冗長性とフォールトトレランスが向上します。そのため、ステーキングプールでは、DVTの使用が推奨されています。 DVTでは、バリデータ鍵を複数のシステムに分割します。これにより、1つのオペレータが複数のバリデータを実行できなくなり、 不正なオペレータによるイーサリアムへ攻撃が困難になります。 つまり、バリデータを個人ではなく、_コミュニティ_全体で実行することで、セキュリティを高めるというアイデアです。 +分散化は、個人や少数のグループの[バリデータ](/glossary/#validator)が、過剰な影響力を持ってしまうことを防ぐ効果があります。 新たなステーキングの技術は、イーサリアムのバリデータを可能な限り分散化した状態に保ち、ハードウェア、ソフトウェア、ネットワークの障害から保護します。 この新たなステーキングの技術では、複数の[ノード](/glossary/#node)間でバリデータの責任を共有するソフトウェアも対象になっています。 これを、**分散バリデータ技術(DVT)**と呼びます。 DVTにより、複数のコンピュータが共同で検証を行うことで、冗長性とフォールトトレランスが向上します。そのため、[ステーキングプール](/glossary/#staking-pool)では、DVTの使用が推奨されています。 DVTでは、バリデータ鍵を複数のシステムに分割します。これにより、1つのオペレータが複数のバリデータを実行できなくなり、 不正なオペレータによるイーサリアムへ攻撃が困難になります。 つまり、バリデータを個人ではなく、_コミュニティ_全体で実行することで、セキュリティを高めるというアイデアです。 分散バリデータ技術の詳細 @@ -45,4 +45,4 @@ template: roadmap ## 現在の進行状況 {#current-progress} -ロードマップ上のセキュリティアップグレードの研究は進んでいますが、実装にはまだ時間がかかりそうです。 ビューマージ、PBS、SSF、SLEにおける次のステップは、仕様を決定し、プロトタイプの構築を開始することです。 +**ロードマップ上のセキュリティアップグレードの研究は進んでいますが**、実装にはまだ時間がかかりそうです。 ビューマージ、PBS、SSF、SLEにおける次のステップは、仕様を決定し、プロトタイプの構築を開始することです。 diff --git a/public/content/translations/ja/roadmap/single-slot-finality/index.md b/public/content/translations/ja/roadmap/single-slot-finality/index.md index add46d2a795..789329f292f 100644 --- a/public/content/translations/ja/roadmap/single-slot-finality/index.md +++ b/public/content/translations/ja/roadmap/single-slot-finality/index.md @@ -58,7 +58,7 @@ lang: ja ## 現在の進行状況 {#current-progress} -SSFはまだ研究段階です。 [バークルツリー](/roadmap/verkle-trees/)や[ダンクシャーディング](/roadmap/danksharding])などの他の大きなアップグレードが完了してから、数年後になるかもしれません。 +SSFはまだ研究段階です。 [バークルツリー](/roadmap/verkle-trees/)や[ダンクシャーディング](/roadmap/danksharding/)などの他の大きなアップグレードが完了してから、数年後になるかもしれません。 ## 参考文献 {#further-reading} diff --git a/public/content/translations/ja/roadmap/user-experience/index.md b/public/content/translations/ja/roadmap/user-experience/index.md index e9cf4e03df0..56fd8d07ef7 100644 --- a/public/content/translations/ja/roadmap/user-experience/index.md +++ b/public/content/translations/ja/roadmap/user-experience/index.md @@ -7,19 +7,19 @@ alt: "イーサリアムロードマップ" template: roadmap --- -イーサリアムを簡単に使用するためには、鍵やウォレットの管理からトランザクションの開始まで、さまざまな手順が必要です。 一般への普及を促進するには、これらの手順を簡略化して、イーサリアムを大幅に使いやすくする必要があります。また、Web2アプリのようなスムーズなユーザーエクスペリエンスを提供することで、パーミッションレスで検閲耐性のあるアクセスを体験できるようにしなければなりません。 +[鍵](/glossary/#key)や[ウォレット](/glossary/#wallet)の管理からトランザクションの開始まで、**イーサリアムを簡単に使用できるようにする必要があります**。 一般への普及を促進するには、イーサリアムを大幅に使いやすくする必要があります。[Web2](/glossary/#web2) アプリのようなスムーズなユーザーエクスペリエンスを提供することで、パーミッションレスで検閲耐性のあるアクセスを体験できるようにしなければなりません。 ## シードフレーズを超えて {#no-more-seed-phrases} イーサリアムのアカウントは、 「公開鍵」でアカウントを特定し、「秘密鍵」でメッセージに署名します。この鍵のペアを利用して、イーサリアムのアカウントは保護されています。 秘密鍵は、マスターパスワードのようなものです。この鍵があれば、イーサリアムアカウントに完全にアクセスすることができます。 イーサリアムのアカウントの操作は、銀行やWeb2アプリのように、ユーザーに代わって口座を管理する仕組みとは異なるため、戸惑う人もいるでしょう。 集中化されているサードパーティに依存することなくイーサリアムを一般に普及させるには、ユーザーが公開鍵と秘密鍵による暗号化や鍵管理を理解しなくても、自分の資産を保管し、自分のデータを管理できる簡単でスムーズな方法が必要です。 -これに対する解決策は、スマートコントラクトウォレットを使用してイーサリアムとやり取りすることです。 スマートコントラクトウォレットは、鍵の紛失や盗難に備えたアカウント保護、より優れた不正行為の検出や防御、新しい機能の追加など、さまざまなメリットをもたらします。 スマートコントラクトウォレットはすでに存在していますが、まだ使いにくいため、イーサリアムプロトコルがそれらをより便利に使えるようにサポートする必要があります。 この追加サポートは、アカウント抽象化と呼ばれています。 +これに対する解決策は、[スマートコントラクト](/glossary/#smart-contract)ウォレットを使用してイーサリアムとやり取りすることです。 スマートコントラクトウォレットは、鍵の紛失や盗難に備えたアカウント保護、より優れた不正行為の検出や防御、新しい機能の追加など、さまざまなメリットをもたらします。 スマートコントラクトウォレットはすでに存在していますが、まだ使いにくいため、イーサリアムプロトコルがそれらをより便利に使えるようにサポートする必要があります。 この追加サポートは、アカウント抽象化と呼ばれています。 アカウント抽象化の詳細 ## 誰でも使えるノード -ノードを実行しているユーザーは、データを提供するサードパーティに依存せず、イーサリアムブロックチェーンと迅速かつプライバシーを保ち、パーミッションレスにやり取りができます。 しかし、現時点では、ノードを実行するには技術的な知識とかなりのディスク容量が必要でであるため、多くの人はノードを実行する代わりに仲介者に頼らざるを得ません。 +[ノード](/glossary/#node)を実行しているユーザーは、データを提供するサードパーティに依存せず、迅速かつプライバシーが保たれた形で、パーミッションレスにイーサリアム[ブロックチェーン](/glossary/#blockchain)とやり取りできます。 しかし、現時点では、ノードを実行するには技術的な知識とかなりのディスク容量が必要でであるため、多くの人はノードを実行する代わりに仲介者に頼らざるを得ません。 ノードの実行をより簡単にし、リソースの消費を大幅に削減するアップグレードを予定しています。 データの格納方法は、 スペース効率の高い**バークルツリー**と呼ばれるス構造に変更する予定です。 また、[ステートレス](/roadmap/statelessness)や[データ有効期限](/roadmap/statelessness/#data-expiry)の導入により、イーサリアム ノードはイーサリアム状態データ全体のコピーを保存する必要がなくなり、ハードディスク容量を大幅に削減できます。 [ライトノード](/developers/docs/nodes-and-clients/light-clients/)は、フルノードを実行することで得られる多くのメリットを提供しますが、携帯電話や単純なブラウザアプリ内でも簡単に実行できるようになります。 @@ -29,8 +29,8 @@ template: roadmap ## 現在の進行状況 {#current-progress} -スマートコントラクトウォレットはすでに利用可能ですが、それらをできるだけ分散化してパーミッションレスにするには、さらなるアップグレードが必要です。 EIP-4337は、イーサリアムのプロトコルへを変更せずに導入できる成熟した提案です。 EIP-4337で必要となる主要なスマートコントラクトは、2023年3月にデプロイされました。 +スマートコントラクトウォレットはすでに利用可能ですが、それらをできるだけ分散化してパーミッションレスにするには、さらなるアップグレードが必要です。 EIP-4337は、イーサリアムのプロトコルへを変更せずに導入できる成熟した提案です。 EIP-4337で必要となる主要なスマートコントラクトは、**2023年3月にデプロイされました**。 -完全なステートレスはまだ研究段階にあり、実装されるのは数年先になると考えられます。 データ有効期限を含む完全にステートレスになる工程には、いくつかのマイルストーンがあり、そのうちのいくつかは、近い将来に実装される可能性がありますが、 [バークルツリー](/roadmap/verkle-trees/)や[プロポーザー/ビルダーセパレーション](/roadmap/pbs/)などの他の工程が先に完了している必要があります。 +**完全なステートレスはまだ研究段階にあり**、実装されるのは数年先になると考えられます。 データ有効期限を含む完全にステートレスになる工程には、いくつかのマイルストーンがあり、そのうちのいくつかは、近い将来に実装される可能性がありますが、 [バークルツリー](/roadmap/verkle-trees/)や[プロポーザー/ビルダーセパレーション](/roadmap/pbs/)などの他の工程が先に完了している必要があります。 バークルツリーのテストネットは、すでに稼働しています。次のフェーズでは、バークルツリーを有効にしたクライアントをプライベートテストネットで実行し、次にパブリックテストネットで実行します。 コントラクトをテストネットにデプロイしたり、テストネットでクライアントを実行したりすることで、開発を進めるお手伝いができます。 diff --git a/public/content/translations/ja/security/index.md b/public/content/translations/ja/security/index.md index f1c4e537529..8b37744fa84 100644 --- a/public/content/translations/ja/security/index.md +++ b/public/content/translations/ja/security/index.md @@ -10,100 +10,11 @@ lang: ja -## ウェブセキュリティ入門 {#web-security} - -### 強力なパスワードの使用 {#use-strong-passwords} - -[アカウントのハッキングの80%以上は、パスワードの脆弱さ、またはパスワードが盗まれることにより起こっています](https://cloudnine.com/ediscoverydaily/electronic-discovery/80-percent-hacking-related-breaches-related-password-issues-cybersecurity-trends/) 。 文字、数字、記号の長い組み合わせを用いて、アカウントを安全に保ちましょう。 - -よくある間違いは、辞書にのっている一般的な単語を2~3組み合わせて使うことです。 次のようなパスワードは、[辞書攻撃](https://wikipedia.org/wiki/Dictionary_attack)として知られる単純なハッキングの攻撃に逢いやすく危険です。 - -```md -脆弱なパスワード例: CuteFluffyKittens! - -強力なパスワード例: ymv\*azu.EAC8eyp8umf -``` - -もう一つのよくある間違いは、簡単に推測される、もしくは [ソーシャルエンジニアリング](https://wikipedia.org/wiki/Social_engineering_(security))を通して見つけることができるパスワードを使用することです。 パスワードに母親の旧姓、子供やペットの名前、生年月日を含めることは安全ではなく、ハッキングされるリスクが大きくなります。 - -#### パスワードのグッド・プラクティス: {#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/) -- [KeePass](https://keepass.info/) -- [1Password](https://1password.com/) -- または、他の[推奨パスワードマネージャー](https://www.privacytools.io/secure-password-manager)を確認してください - -### 二要素認証の使用 {#two-factor-authentication} - -あなたが紛れもなくご本人であることを証明するため、認証にはさまざまな証明方法があります。 これらは **認証要素** として知られており、主に次の三要素があります。 - -- 自分自身が知っていること(パスワードやセキュリティ質問など) -- 生体認証(指紋や虹彩/顔認証など) -- 所有しているもの(スマートフォンのセキュリティキーまたは認証アプリ) - -**二要素認証(2FA)**は、オンラインアカウントに*セキュリティ要素*を追加すると、パスワードだけではアカウントにアクセスすることはできなくなります。 最も一般的には、二つ目の要素は**時間ベースのワンタイムパスワード (TOTP)**として知られる、ランダム化された6桁のコードを使用します。このコードは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/)をご覧ください。 - -FIDOユニバーサル第二認証要素(U2F)の詳細に関する動画 - - - -### ブラウザ拡張機能のアンインストール {#uninstall-browser-extensions} - -Chrome拡張機能やFirefoxのアドオンなどのブラウザ拡張機能は、便利なブラウザ機能を強化し、ユーザーエクスペリエンスを向上させることができますが、リスクが伴います。 デフォルトでは、ほとんどのブラウザ拡張機能は「サイトデータの読み取りと変更」の権限を要求し、データに対してほとんど何でもできるようにします。 Chrome拡張機能は常に自動的に更新されるため、以前は安全であった拡張機能であっても、悪意のあるコードを含むように更新されてしまう可能性があります。 ほとんどのブラウザ拡張機能は、データを盗もうとしていませんが、それらができるということを認識しておく必要があります。 - -#### 安全性を確保するためのヒント: {#browser-extension-safety} - -- 信頼できるソースからのみブラウザ拡張機能をインストール -- 未使用のブラウザ拡張機能を削除 -- 自動更新を無効にするため、ローカルからChrome拡張機能をインストールします (上級者向け) - -[ブラウザ拡張機能に関するリスクの詳細](https://www.kaspersky.co.uk/blog/browser-extensions-security/12750/) - - - ## 仮想通貨セキュリティ入門 {#crypto-security} ### 知識のレベルアップ {#level-up-your-knowledge} -一般的に、仮想通貨で詐欺の被害に遭ってしまう最大の理由の1つは理解の不足です。 例えば、イーサリアムネットワークが分散化されており、イーサリアムを所有する者はいないことを理解していないと、カスタマーサービスエージェントを装う者に「秘密鍵を教えると失われたETHが返ってくる」というような嘘に簡単に騙されてしまいます。 イーサリアムの仕組みについての知識を得ることは大切です。 +一般的に、仮想通貨で詐欺の被害に遭ってしまう最大の理由の1つは理解の不足です。 例えば、イーサリアムネットワークが分散化されており、イーサリアムを所有する者はいないことを理解していないと、カスタマーサービスエージェントを装う者の「[秘密鍵](/glossary/#private-key)を教えると失われたETHが返ってくる」というような嘘に簡単に騙されてしまいます。 イーサリアムの仕組みについての知識を得ることは大切です。 イーサリアムとは @@ -116,19 +27,19 @@ Chrome拡張機能やFirefoxのアドオンなどのブラウザ拡張機能は ## ウォレットのセキュリティ {#wallet-security} -### 絶対に秘密鍵を他人に教えない {#protect-private-keys} +### リカバリーフレーズを誰にも渡さない {#protect-recovery-phrase} -**どんな理由があっても、秘密鍵は絶対に他人に教えないでください!** +**どんな理由があっても、リカバリーフレーズは絶対に他人に教えないでください!** -ウォレットの秘密鍵は、イーサリアムウォレットのパスワードとして機能します。 秘密鍵を教えてしまうと、あなたのウォレットアドレスを知っている人が、あなたのアカウントの全資産を盗むことができます! +ウォレットのリカバリーフレーズは、イーサリアムウォレットのパスワードとして機能します。 リカバリーフレーズを教えてしまうと、あなたのウォレットアドレスを知っている人が、あなたのアカウントの全資産を盗むことができます! イーサリアムウォレットとは -#### シードフレーズ/秘密鍵のスクリーンショットを撮らない {#screenshot-private-keys} +#### リカバリーフレーズのスクリーンショットを撮らない {#screenshot-recovery-phrase} -シードフレーズや秘密鍵のスクリーンショットを撮ると、スクリーンショットがクラウドに同期され、ハッカーにアクセスされる危険性があります。 クラウドから秘密鍵を取得することは、ハッカーよく行う攻撃ベクトルです。 +リカバリーフレーズのスクリーンショットを撮ると、スクリーンショットがクラウドに同期され、ハッカーにアクセスされる危険性があります。 クラウドからリカバリーフレーズを取得することは、ハッカーがよく行う攻撃ベクトルです。 ### ハードウェアウォレットの使用 {#use-hardware-wallet} @@ -145,7 +56,7 @@ Chrome拡張機能やFirefoxのアドオンなどのブラウザ拡張機能は 誤ったウォレットアドレスに仮想通貨を送信してしまうことはよくある間違いです。 **イーサリアム上でトランザクションを送ると取り消しができません。**送信先のアドレスの所有者を知っていて、あなたが送金した額を返金してくれるように説得することができなければ、失ったお金を取り戻すことはできません。 -トランザクションを送信する前に、送信先アドレスが、意図する受信者のアドレスと正確に一致することを常に確認してください。 また、スマートコントラクトを使ってやり取りする場合にも、署名する前にトランザクションメッセージを読むことをお勧めします。 +トランザクションを送信する前に、送信先アドレスが、意図する受信者のアドレスと正確に一致することを常に確認してください。 また、[スマートコントラクト](/glossary/#smart-contract)を使ってやり取りする場合にも、署名する前にトランザクションメッセージを読むことをお勧めします。 ### スマートコントラクトの使用限度額を設定 {#spend-limits} @@ -165,19 +76,29 @@ Chrome拡張機能やFirefoxのアドオンなどのブラウザ拡張機能は - 無料または割り引かれたETHを誰かがくれるはずはない - 秘密鍵や個人情報を教えない +### Twitter 広告フィッシング {#ad-phishing} + +![Twitter 広告フィッシング](./twitterPhishingScam.png) + +Twitter (Xとも知られています) のリンクプレビュー機能 (アンファール) を偽装して、ユーザーが正規のウェブサイトにアクセスしていると思い込ませる可能性のある方法があります。 この技術は、ツイートで共有されたURLのプレビューを生成するTwitterの仕組みを悪用し、例えば_ethereum.org_からのものと表示されます (上に示されています) が、実際には悪意のあるサイトにリダイレクトされています。 + +特にリンクをクリックした後は、正しいドメインにいるかどうかを常に確認してください。 + +[詳細はこちら](https://harrydenley.com/faking-twitter-unfurling). + ### プレゼント詐欺 {#giveaway} 暗号通貨の最も一般的な詐欺の1つは、プレゼント詐欺です。 プレゼント詐欺は多くの手口がありますが、一般的な方法は、指定されたウォレットアドレスにETHを送金すると、ETHが2倍になって返ってくるというものです。 *口座確認のために仮想通貨を送ると、2倍にしてプレゼントするなどの手口です。* 通常、これらの詐欺は、無料のプレゼントに対して時間制限を設け、意思決定を鈍らせ、偽りの緊急性を装います。 -#### ソーシャルメディアのハッキング {#social-media-hacks} +### ソーシャルメディアのハッキング {#social-media-hacks} この種の詐欺で注目を集めたのは、2020年7月に著名な有名人や組織のTwitterアカウントがハッキングされ、 ハッカーが著名人を騙りハッキングしたアカウントでビットコインのプレゼント告知を投稿した事件です。 詐欺のツイートはすぐに気づかれて削除されましたが、ハッカーは11ビットコイン(2021年9月時点で50万ドル)を持ち逃げしました。 ![Twitterでの詐欺行為](./appleTwitterScam.png) -#### 著名人からのプレゼント {#celebrity-giveaway} +### 著名人からのプレゼント {#celebrity-giveaway} 著名人からのプレゼントもよくある詐欺の手法の1つです。 詐欺師は、著名人のビデオインタビューや講演会を使い、YouTubeでライブ配信します。著名人があたかもライブで暗号通貨のプレゼントのインタビューをしているかのように見せかけます。 @@ -209,7 +130,7 @@ Chrome拡張機能やFirefoxのアドオンなどのブラウザ拡張機能は ### 「ETH2」トークン詐欺 {#eth2-token-scam} -[マージ](/roadmap/merge/)の準備段階で、「ETH2」という用語の混乱を悪用し、ユーザーにETHを「ETH2」トークンとして取引させようとする詐欺が横行しました。 マージにより導入された「ETH2」や他の新しいトークンなどはありません。 マージ前に所有していたETHは、現在も何も変わることなく、同じETHです。 **ETHに関しては、プルーフ・オブ・ワークからプルーフ・オブ・ステークへの移行によって必要となる対応は一切ありません**。 +[マージ](/roadmap/merge/)の準備段階で、「ETH2」という用語の混乱を悪用し、ユーザーにETHを「ETH2」トークンとして取引させようとする詐欺が横行しました。 マージにより導入された「ETH2」や他の新しいトークンなどはありません。 マージ前に所有していたETHは、現在も何も変わることなく、同じETHです。 **ETHに関しては、[プルーフ・オブ・ワーク](/glossary/#pow)から[プルーフ・オブ・ステーク](/glossary/#pos)への移行によって必要となる対応は一切ありません**。 ETHを入金すれば「ETH2」が戻ってくるという「サポート担当」を偽る詐欺があります。 [公式のイーサリアムサポート](/community/support/)というものはなく、新しいトークンも存在しません。 また、ウォレットのシードフレーズは誰にも教えないようにしてください。 @@ -255,12 +176,101 @@ _注: ステークされたETHを表す、Rocket PoolのrETH、LidoのstETH、Co ### エアドロップ詐欺 {#airdrop-scams} -エアドロップ詐欺は、あなたのウォレットに資産(NFTやトークン)をエアドロップし、エアドロップされた資産を受け取るために詐欺ウェブサイトに誘導するという手法です。 受け取ろうとすると、イーサリアムウォレットでサインインし、トランザクションを「承認 」するよう促されます。 このトランザクションによって、公開鍵と秘密鍵が詐欺師に送信されてしまい、あなたのアカウントが危険な状態に晒されてしまいます。 この種の詐欺の別の手口として、詐欺師のアカウントに送金するトランザクションを承認させるものもあります。 +エアドロップ詐欺は、あなたのウォレットに資産([NFT](/glossary/#nft)やトークン)をエアドロップし、エアドロップされた資産を受け取るために詐欺ウェブサイトに誘導するという手法です。 受け取ろうとすると、イーサリアムウォレットでサインインし、トランザクションを「承認 」するよう促されます。 このトランザクションによって、公開鍵と秘密鍵が詐欺師に送信されてしまい、あなたのアカウントが危険な状態に晒されてしまいます。 この種の詐欺の別の手口として、詐欺師のアカウントに送金するトランザクションを承認させるものもあります。 [エアドロップ詐欺の詳細](https://www.youtube.com/watch?v=LLL_nQp1lGk) +## ウェブセキュリティ入門 {#web-security} + +### 強力なパスワードの使用 {#use-strong-passwords} + +[アカウントのハッキングの80%以上は、パスワードの脆弱さ、またはパスワードが盗まれることにより起こっています](https://cloudnine.com/ediscoverydaily/electronic-discovery/80-percent-hacking-related-breaches-related-password-issues-cybersecurity-trends/) 。 文字、数字、記号の長い組み合わせを用いて、アカウントを安全に保ちましょう。 + +よくある間違いは、辞書にのっている一般的な単語を2~3組み合わせて使うことです。 このようなパスワードは、辞書攻撃として知られる単純なハッキングの攻撃に遭いやすく危険です。 + +```md +脆弱なパスワード例: CuteFluffyKittens! + +強力なパスワード例: ymv\*azu.EAC8eyp8umf +``` + +もう一つのよくある間違いは、簡単に推測される、もしくは [ソーシャルエンジニアリング](https://wikipedia.org/wiki/Social_engineering_(security))を通して見つけることができるパスワードを使用することです。 パスワードに母親の旧姓、子供やペットの名前、生年月日を含めることは安全ではなく、ハッキングされるリスクが大きくなります。 + +#### パスワードのグッド・プラクティス: {#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/) +- [KeePass](https://keepass.info/) +- [1Password](https://1password.com/) +- または、他の[推奨パスワードマネージャー](https://www.privacytools.io/secure-password-manager)を確認してください + +### 二要素認証の使用 {#two-factor-authentication} + +あなたが紛れもなくご本人であることを証明するため、認証にはさまざまな証明方法があります。 これらは **認証要素** として知られており、主に次の三要素があります。 + +- 自分自身が知っていること(パスワードやセキュリティ質問など) +- 生体認証(指紋や虹彩/顔認証など) +- 所有しているもの(スマートフォンのセキュリティキーまたは認証アプリ) + +**二要素認証(2FA)**は、オンラインアカウントに*セキュリティ要素*を追加すると、パスワードだけではアカウントにアクセスすることはできなくなります。 最も一般的には、二つ目の要素は**時間ベースのワンタイムパスワード (TOTP)**として知られる、ランダム化された6桁のコードを使用します。このコードは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/)をご覧ください。 + +FIDOユニバーサル第二認証要素(U2F)の詳細に関する動画 + + + +### ブラウザ拡張機能のアンインストール {#uninstall-browser-extensions} + +Chrome拡張機能やFirefoxのアドオンなどのブラウザ拡張機能は、便利なブラウザ機能を強化し、ユーザーエクスペリエンスを向上させることができますが、リスクが伴います。 デフォルトでは、ほとんどのブラウザ拡張機能は「サイトデータの読み取りと変更」の権限を要求し、データに対してほとんど何でもできるようにします。 Chrome拡張機能は常に自動的に更新されるため、以前は安全であった拡張機能であっても、悪意のあるコードを含むように更新されてしまう可能性があります。 ほとんどのブラウザ拡張機能は、データを盗もうとしていませんが、それらができるということを認識しておく必要があります。 + +#### 安全性を確保するためのヒント: {#browser-extension-safety} + +- 信頼できるソースからのみブラウザ拡張機能をインストール +- 未使用のブラウザ拡張機能を削除 +- 自動更新を無効にするため、ローカルからChrome拡張機能をインストールします (上級者向け) + +[ブラウザ拡張機能に関するリスクの詳細](https://www.kaspersky.co.uk/blog/browser-extensions-security/12750/) + + + ## 参考文献 {#further-reading} ### ウェブセキュリティ {#reading-web-security} diff --git a/public/content/translations/ja/web3/index.md b/public/content/translations/ja/web3/index.md index 8825d33cea9..d33518e43ae 100644 --- a/public/content/translations/ja/web3/index.md +++ b/public/content/translations/ja/web3/index.md @@ -59,7 +59,7 @@ Web3の並外れた機能は、明確に分けられるものではなく、分 Web3は、前例のない方法でデジタル資産の所有権を提供します。 例えば、Web2のゲームをプレイしているとします。 ゲーム内アイテムを購入すると、アカウントに直接紐づけられます。 ゲームクリエイターがアカウントを削除すると、これらのアイテムが失われてしまいます。 または、ゲームのプレイを停止すると、ゲーム内アイテムに投資した価値が失われます。 -Web3では、 [ 非代替性トークン(NFT)](/nft/) を通じて直接所有することができます。 所有権は、誰からも、ゲームのクリエイターからも奪い取られることはありません。 また、ゲームをするのをやめても、ゲーム内のアイテムをオープンマーケットで売却・取引することで、その価値を回収することができます。 +Web3では、 [ 非代替性トークン(NFT)](/glossary/#nft) を通じて直接所有することができます。 所有権は、誰からも、ゲームのクリエイターからも奪い取られることはありません。 また、ゲームをするのをやめても、ゲーム内のアイテムをオープンマーケットで売却・取引することで、その価値を回収することができます。
    非代替性トークン(NFT)について学ぶ
    @@ -82,7 +82,7 @@ Web2.0では、コンテンツ制作者は「プラットフォームのルー Web3では、自分のデータを所有するだけでなく、企業の株式のように機能するトークンを使って、プラットフォームを集団にて所有することができます。 分散型自律組織(DAO)はプラットフォームの分散型の所有権を取りまとめ、ユーザーがプラットフォームの今後についての意思決定をすることができます。 -分散型自律組織(DAO)は、技術的には、リソース(トークン)のプールに対する分散型の意思決定を自動化する、合意されたスマートコントラクトと定義されています。 トークンを持ったユーザーがリソースの使い道について投票し、その投票結果をコードが自動的に実行します。 +分散型自律組織(DAO)は、技術的には、リソース(トークン)のプールに対する分散型の意思決定を自動化する、合意された[スマートコントラクト](/glossary/#smart-contract)と定義されています。 トークンを持ったユーザーがリソースの使い道について投票し、その投票結果をコードが自動的に実行します。 しかし、多くのWeb3コミュニティが分散型自律組織(DAO)として定義されています。 これらのコミュニティはすべて、コードによる分散化と自動化のレベルが異なります。 現在、分散型自律組織(DAO)とは何か、今後どのような進化を遂げるかを模索が行われているところです。 @@ -97,15 +97,11 @@ Web3では、自分のデータを所有するだけでなく、企業の株式 慣例的に、使用するすべてのプラットフォームでアカウントを作成する必要があります。 例えば、Twitterアカウント、YouTubeアカウント、Redditアカウントを持っているとします。 そこで、表示名またはプロフィール画像を変更したい場合は、 それぞれのアカウントで変更作業をしなければなりません。 ソーシャルサインインを使用する場合もありますが、これは検閲という問題を引き起こします。 これらのプラットフォームは、ワンクリックで、オンライン上の生活すべてからあなたを締め出すことができます。 さらに、多くのプラットフォームでは、アカウントを作成するには個人を特定できる情報を提供する必要があります。 -Web3では、イーサリアムアドレスとイーサリアム・ネーム・サービス(ENS)プロファイルでデジタルIDを制御でき、これらの問題が解決されます。 イーサリアムアドレスを使用すると、安全で、検閲耐性があり、匿名のプラットフォームすべてにおいて、シングルログインが利用できます。 - - - イーサリアムでサインイン - +Web3は、イーサリアムアドレスと[イーサリアムネームサービス(ENS) ](/glossary/#ens)プロファイルを使用してデジタルアイデンティティを制御できるようにすることで、これらの問題を解決します。 イーサリアムアドレスを使用すると、安全で、検閲耐性があり、匿名のプラットフォームすべてにおいて、シングルログインが利用できます。 ### ネイティブの支払い {#native-payments} -銀行口座のない人や銀行口座を持つことができない国に住む人を除いて、Web2の支払いインフラストラクチャは、銀行や支払い業者に依存しています。 Web3は [ETH](/eth/)のようなトークンをブラウザで直接送金するため、サードパーティを信頼する必要はありません。 +銀行口座のない人や銀行口座を持つことができない国に住む人を除いて、Web2の支払いインフラストラクチャは、銀行や支払い業者に依存しています。 Web3は [ETH](/glossary/#ether)のようなトークンをブラウザで直接送金するため、信頼できるサードパーティを必要としません。 ETHの詳細 @@ -117,7 +113,7 @@ Web3には多くの利点があるにもかかわらず、エコシステムが ### アクセシビリティ {#accessibility} -イーサリアムでサインインするなどの重要なWeb3機能は、誰でも無料で使用することができます。 しかし、トランザクションの相対的なコストは依然として高額です。 Web3は、高いトランザクションフィーのため、裕福でない人々や、発展途上国では利用されそうもありません。 イーサリアムでは、これらの課題は[ロードマップ](/roadmap/)と[レイヤー2スケーリングソリューション](/developers/docs/scaling/)を通じて解決されています。 技術の準備はできていますが、Web3を誰でもアクセスしやすくするには、レイヤー2でより高レベルの導入が必要です。 +イーサリアムでサインインするなどの重要なWeb3機能は、誰でも無料で使用することができます。 しかし、トランザクションの相対的なコストは依然として高額です。 Web3は、高いトランザクションフィーのため、裕福でない人々や、発展途上国では利用されそうもありません。 イーサリアムでは、これらの課題は[ロードマップ](/roadmap/)と[レイヤー2スケーリングソリューション](/glossary/#layer-2)を通じて解決されています。 技術の準備はできていますが、Web3を誰でもアクセスしやすくするには、レイヤー2でより高レベルの導入が必要です。 ### ユーザーエクスペリエンス {#user-experience} diff --git a/public/content/translations/ja/web3/web1.svg.xlsx b/public/content/translations/ja/web3/web1.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..70b4f071c3ea7f4a5edbbd3a2a0d401861bbbc86 GIT binary patch literal 4690 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 WsG_HZdlB_&53Mt8!RXHUt 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 UHZckAiD$5{3~UFCAOHXV10{5xEC2ui literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/web3/web3.svg.xlsx b/public/content/translations/ja/web3/web3.svg.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bb81da3e091ede07adee14aeb5427e79a252be4c GIT binary patch literal 4734 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 KSHSS;|NlSj!iZ`B literal 0 HcmV?d00001 diff --git a/public/content/translations/ja/whitepaper/index.md b/public/content/translations/ja/whitepaper/index.md index 30fe04e9b14..15f5fa4f82a 100644 --- a/public/content/translations/ja/whitepaper/index.md +++ b/public/content/translations/ja/whitepaper/index.md @@ -241,8 +241,8 @@ EVMコードの正式な実行モデルは、驚くほどシンプルです。 1. 参照された前のブロックが存在し、有効であるかどうかを確認する。 2. ブロックのタイムスタンプが、参照している前のブロックのタイムスタンプより大きく、15分未満の未来のものであることを確認する。 3. ブロックナンバー、難易度、トランザクションルート、アンクルルート、ガスリミット(イーサリアム特有の様々な低レベルの概念)が有効であることを確認する。 -4. ブロック上のプルーフ・オブ・ワークが有効であることを確認する。 -5. 直前ブロックの最後の状態を`S[0]`とする +4. ブロックのプルーフ・オブ・ワークが有効であることを確認する。 +5. 直前ブロックの最後の状態を`S[0]`とする。 6. `TX`はブロックのトランザクションリストで、 `n`件あるとする。 `0...n-1`のすべての `i` について、`S[i+1] = APPLI(S[i],TX[i])`をセットする。 いずれかのアプリケーションがエラーを返した場合や、この時点までにブロック内で消費されたガスの合計が `GASLIMIT`を超えた場合は、エラーを返す。 7. `S_FINAL`を`S[n]`にするが、マイナーに支払ったブロック報酬を追加する。 8. 状態 `S_FINAL` のメルクルツリールートが、ブロックヘッダーで提供されている最終的な状態ルートと等しいかどうかを確認する。 等しければそのブロックは有効、そうでなければ無効となる。 @@ -514,4 +514,4 @@ _通貨発行量が直線的であるにもかかわらず、ビットコイン _ホワイトペーパーの履歴については、[こちらのwiki](https://github.com/ethereum/wiki/blob/old-before-deleting-all-files-go-to-wiki-wiki-instead/old-whitepaper-for-historical-reference.md)を参照してください。_ -_多くのコミュニティ主導のオープンソースソフトウェアプロジェクトと同様、イーサリアムは開始当初から進化してきました。 イーサリアムの最新の開発や、どのようなプロトコル変更が成されているかについて学ぶには[こちらのガイド](/learn/)をご覧になってください。_ +_多くのコミュニティ主導のオープンソースソフトウェアプロジェクトと同様、イーサリアムは開始当初から進化してきました。 イーサリアムの最新の開発や、プロトコルへの変更がどのように行われているかを学ぶには、こちらの[ガイド](/learn/)を参照してください。_ diff --git a/public/content/translations/ja/zero-knowledge-proofs/index.md b/public/content/translations/ja/zero-knowledge-proofs/index.md index feaf927196d..1a712cd2300 100644 --- a/public/content/translations/ja/zero-knowledge-proofs/index.md +++ b/public/content/translations/ja/zero-knowledge-proofs/index.md @@ -4,93 +4,27 @@ description: 一般向けのゼロ知識証明入門 lang: ja --- -## ゼロ知識証明とは何か {#what-are-zk-proofs} +# ゼロ知識証明とは何か {#what-are-zk-proofs} ゼロ知識証明は、証明したい主張そのものを明らかにすることなく、主張の妥当性を証明する方法です。 主張を証明しようとする側を「証明者」とよび、主張の検証に責任を持つ側を「検証者」とよびます。 ゼロ知識証明は、『[The knowledge complexity of interactive proof systems](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} ゼロ知識証明は応用暗号学におけるブレークスルーであり、個人の情報セキュリティの向上を確かなものにしました。 たとえば、「私はX国の国民である」という主張を別の当事者(たとえば、サービスプロバイダー)に証明する方法を考えてみましょう。 この場合、パスポートや運転免許証など、主張を裏付ける「証拠」を提出する必要があります。 しかし、この手法には主にプライバシーの欠如という問題があります。 サードパーティのサービスと共有される個人識別情報(PII)は、ハッキングに対して脆弱な中央データベースに保存されます。 なりすまし犯罪が深刻な問題となっていることで、機密情報を共有するためのより強力なプライバシー保護手段が求められます。 -ゼロ知識証明は、主張の妥当性を証明するために情報の開示を必要としないことで、この問題を解決します。 ゼロ知識プロトコルは、ステートメント(「証拠」と呼ばれます)を入力として、妥当性の簡潔な証明を生成します。 この証明は、作成のために使用された情報を開示することなく、ステートメントが真であることを強く保証します。 - -先の例に戻ると、身分を証明するのに必要な唯一の証拠はゼロ知識証明です。 検証者は、証明のある性質が真であることを確認できれば、主張そのものも真であると確信できます。 - -## ゼロ知識証明のしくみ {#how-do-zero-knowledge-proofs-work} - -ゼロ知識証明により、主張の内容を共有したり、真実を発見した方法を明らかにすることなく、主張が真であることを証明できる方法です。 これを可能とするために、ゼロ知識プロトコルは、入力データを取り、出力として「真」または「偽」を返すアルゴリズムに依存しています。 - -ゼロ知識プロトコルは以下の基準を満たさなければなりません。 - -1. **完全性**: 入力が正当な場合、ゼロ知識プロトコルは常に「真」を返します。 したがって、主張が正当で、証明者と検証者が正直に行動する場合、証明は受け入れられます。 - -2. **健全性**: 入力が無効な場合、ゼロ知識プロトコルが「真」を返すことは理論上不可能です。 したがって、主張が正当でないのであれば、偽の証明者は正直な検証者を欺いて、主張が正当であると信じこませることはできません(ただし、わずかな確率で例外がありえます)。 - -3. **ゼロ知識性**: 検証者が主張の真偽以上の知識を得ることはありません(すなわち、検証者は主張について何の知識も持ち合わせていません)。 この要件により、検証者が証明から元の入力(すなわち、主張の内容)を導き出すのを防ぐことができます。 - -ゼロ知識証明は、**証拠**、**チャレンジ**、 **レスポンス**の3つの要素で構成されています。 - -- **証拠**: 証明者はゼロ知識証明で隠された情報に関する知識があることを証明したいと考えています。 秘密の情報は証明の「証拠」であり、証明者が証拠を知っていると仮定すると、情報を持っている当事者だけが答えることのできる一連の質問が設定されます。 したがって、証明者はランダムに質問を選ぶことで証明プロセスを開始し、答えを計算し、それを検証者に送ります。 - -- **チャレンジ**: 検証者はランダムに別の質問を選び、その答えを証明者に求めます。 - -- **レスポンス**: 証明者は質問を受け付け、その答えを計算し、検証者に返します。 証明者のレスポンスにより、検証者は証明者が実際に証拠を所持しているのかどうかを確認することができます。 証明者があてずっぽうに正解を得ているわけではないことを確かめるために、検証者はさらに多くの質問をします。 このインタラクションを何度も繰り返すことにより、証明者が証拠を知ったかぶりしている可能性は、検証者が満足するレベルまで大幅に低下します。 - -以上が「インタラクティブなゼロ知識証明」の構造の説明です。 初期のゼロ知識プロトコルはインタラクティブな証明を使用しており、主張の妥当性を検証するためには、証明者と検証者の間で行ったり来たりの疎通が必要でした。 - -Jean-Jacques Quisquateの有名な[アリババの洞窟の物語](https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave)は、インタラクティブな証明がどのように機能するかを示す良い例です。 物語の中で、Peggy(証明者)はVictor(検証者)に対して、自分が魔法の扉を開く秘密のフレーズを知っていることを証明したいと思っていますが、フレーズを教えたくありません。 - -### 非対話型ゼロ知識証明 {#non-interactive-zero-knowledge-proofs} - -インタラクティブな証明は革命的でしたが、二者を用意して繰り返し対話する必要があったため、有用性は限定的でした。 たとえ検証者が証明者の公正さを確信していたとしても、独立した検証に証明は利用できません(新しい証明を計算するには、証明者と検証者の間で新規のやりとりが必要です)。 - -この問題を解決するために、Manuel Blum、Paul Feldman、Silvio Michaliは、証明者と検証者が共有鍵を持つ最初の[非対話型ゼロ知識証明](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プロトコルには、次の利点があります。 - -- **ゼロ知識**: 検証者は、ステートメントについて何も知らなくても、ステートメントの完全性を検証できます。 検証者が持つステートメントについての唯一の知識は、その真偽です。 - -- **簡潔**: ゼロ知識証明は証拠よりも小さく、すばやく検証することができます。 - -- **非対話型**: 複数回の疎通を要する対話型証明とは異なり、証明者と検証者は一度しか対話せず、証明は「非対話型」です。 - -- **根拠**: 証明は「健全性」の要件を満たしているので、不正は極めて稀です。 - -- **知識(の)**: ゼロ知識証明は、秘密の情報(証拠)へのアクセスがないと構築できません。 有効なゼロ知識証明を計算するための証拠を持っていない証明者にとっては、不可能ではないにしても困難です。 - -前述の「共有鍵」は、証明者と検証者が、証明の生成と検証に使用することに合意した公開パラメータのことです。 公開パラメータの生成(総称して共通参照情報(Common Reference String: (CRS)) は、プロトコルのセキュリティにとって重要であるため、デリケートな作業です。 CRSを生成する際に使用されるエントロピー(ランダム性)が不正な証明者の手に渡ると、偽の証明の計算に利用されてしまいます。 - -[マルチパーティー計算(MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation)は、公開パラメータを生成する際のリスクを軽減する方法です。 複数の当事者が[信頼されたセットアップセレモニー](https://zkproof.org/2021/06/30/setup-ceremonies/amp/)に参加し、そこではCRSを生成するために、各々がいくつかの乱数値を提供します。 1人の公正な当事者がエントロピーの一部を破壊する限り、ZK-SNARKプロトコルの計算において健全性が保たれます。 - -信頼されたセットアップは、ユーザーにパラメータ生成を担当する参加者を信頼するよう要求します。 しかし、ZK-STARKの開発により、信頼されていないセットアップでも証明プロトコルが有効となりました。 - -#### ZK-STARKs {#zk-starks} - -ZK-STARKは、**Zero-Knowledge Scalable Transparent Argument of Knowledge**の頭字語です。 ZK-STARKはZK-SNARKと似ていますが、以下の違いがあります。 - -- **スケーラブル**: 証拠のサイズが大きい場合、ZK-SNARKよりも証明の生成と検証をすばやく行います。 STARKの証明の場合、証拠が大きくなっても、証明と検証にかかる時間の増加はわずかです(証拠の大きさに対して、SNARKの証明と検証にかかる時間は線形に増加します)。 - -- **透明性**: ZK-STARKは、信頼されたセットアップではなく、公に検証可能なランダム性を使用して、証明と検証のための公開パラメータを生成します。 したがって、ZK-SNARKと比較して透明性が高まります。 - -ZK-STARKはZK-SNARKよりも大きな証明を生成するため、一般的に検証のオーバーヘッドが高くなります。 しかし、大規模なデータセットを証明する場合など、ZK-STARKがZK-SNARKよりも費用対効果が高い場合があります。 +先の例に戻ると、身分を証明するのに必要な唯一の証拠はゼロ知識証明です。 検証者は、証拠の特定の性質が真であることを確認できれば、主張そのものも真であると確信できます。 ## ゼロ知識証明のユースケース {#use-cases-for-zero-knowledge-proofs} @@ -102,9 +36,9 @@ ZK-STARKはZK-SNARKよりも大きな証明を生成するため、一般的に 完全に匿名のトランザクションを行うために設計された「プライバシーコイン」というものがあります。 ZcashやMoneroなどのプライバシー重視のブロックチェーンは、送信者/受信者アドレス、資産の種類、数量、トランザクションタイムラインを含むトランザクションの詳細を非公開にします。 -ゼロ知識技術をプロトコルに組み込むことで、プライバシーに重点を置いたブロックチェーンネットワークでは、ノードがトランザクションデータにアクセスすることなくトランザクションを検証できるようになります。 +ゼロ知識技術をプロトコルに組み込むことで、プライバシーに重点を置いた[ブロックチェーン](/glossary/#blockchain)ネットワークでは、[ノード](/glossary/#node)がトランザクションデータにアクセスすることなくトランザクションを検証できるようになります。 -ゼロ知識証明は、公開ブロックチェーン上のトランザクションの匿名化にも応用されています。 たとえば、Tornado Cashは、分散型かつ自己理型のサービスで、イーサリアム上でプライベートなトランザクションを行うことができます。 トルネードキャッシュはゼロ知識証明を応用して、トランザクションの詳細を難読化し、金融のプライバシーを保証します。 残念ながら、これらは「オプトイン」のプライバシーツールであるため、違法行為に使用される可能性もあります。 こうした課題を克服するには、最終的に公開ブロックチェーンでプライバシーを標準設定にする必要があります。 +**ゼロ知識証明は、公開ブロックチェーン上のトランザクションの匿名化にも応用されています**。 たとえば、Tornado Cashは、分散型かつ自己理型のサービスで、イーサリアム上でプライベートなトランザクションを行うことができます。 トルネードキャッシュはゼロ知識証明を応用して、トランザクションの詳細を難読化し、金融のプライバシーを保証します。 残念ながら、これらは「オプトイン」のプライバシーツールであるため、違法行為に使用される可能性もあります。 こうした課題を克服するには、最終的に公開ブロックチェーンでプライバシーを標準設定にする必要があります。 ### 個人情報保護 {#identity-protection} @@ -122,7 +56,7 @@ ZK-STARKはZK-SNARKよりも大きな証明を生成するため、一般的に 検証可能な計算とは、ブロックチェーンの設計を改善するためのゼロ知識技術の応用です。 検証可能な計算により、検証可能な結果を維持したまま他者に計算をアウトソースすることができます。 アウトソース先は、プログラムが正しく実行されたことを検証する証拠とともに計算結果を提出します。 -セキュリティを損なわずにブロックチェーンの処理速度を向上させるには、検証可能な計算は極めて重要になります。 これを理解するには、イーサリアムをスケーリングするための提案されたソリューションの違いを把握する必要があります。 +セキュリティを損なわずに**ブロックチェーンの処理速度を向上させる**には、検証可能な計算が極めて重要になります。 これを理解するには、イーサリアムをスケーリングするための提案されたソリューションの違いを把握する必要があります。 [オンチェーンのスケーリングソリューション](/developers/docs/scaling/#on-chain-scaling)であるシャーディングなどでは、ブロックチェーンの基本レイヤーを大幅に変更する必要があります。 このアプローチは非常に複雑で、実装時のエラーによりイーサリアムのセキュリティモデルを損なう可能性があります。 @@ -178,6 +112,74 @@ MACIでは、コーディネーターが贈賄者と共謀したり、贈賄し [MACIに関する詳細](https://privacy-scaling-explorations.github.io/maci/) +## ゼロ知識証明のしくみ {#how-do-zero-knowledge-proofs-work} + +ゼロ知識証明により、主張の内容を共有したり、真実を発見した方法を明らかにすることなく、主張が真であることを証明できる方法です。 これを可能とするために、ゼロ知識プロトコルは、入力データを取り、出力として「真」または「偽」を返すアルゴリズムに依存しています。 + +ゼロ知識プロトコルは以下の基準を満たさなければなりません。 + +1. **完全性**: 入力が正当な場合、ゼロ知識プロトコルは常に「真」を返します。 したがって、主張が正当で、証明者と検証者が正直に行動する場合、証明は受け入れられます。 + +2. **健全性**: 入力が無効な場合、ゼロ知識プロトコルが「真」を返すことは理論上不可能です。 したがって、主張が正当でないのであれば、偽の証明者は正直な検証者を欺いて、主張が正当であると信じこませることはできません(ただし、わずかな確率で例外がありえます)。 + +3. **ゼロ知識性**: 検証者が主張の真偽以上の知識を得ることはありません(すなわち、検証者は主張について何の知識も持ち合わせていません)。 この要件により、検証者が証明から元の入力(すなわち、主張の内容)を導き出すのを防ぐことができます。 + +ゼロ知識証明は、**証拠**、**チャレンジ**、 **レスポンス**の3つの要素で構成されています。 + +- **証拠**: 証明者はゼロ知識証明で隠された情報に関する知識があることを証明したいと考えています。 秘密の情報は証明の「証拠」であり、証明者が証拠を知っていると仮定すると、情報を持っている当事者だけが答えることのできる一連の質問が設定されます。 したがって、証明者はランダムに質問を選ぶことで証明プロセスを開始し、答えを計算し、それを検証者に送ります。 + +- **チャレンジ**: 検証者はランダムに別の質問を選び、その答えを証明者に求めます。 + +- **レスポンス**: 証明者は質問を受け付け、その答えを計算し、検証者に返します。 証明者のレスポンスにより、検証者は証明者が実際に証拠を所持しているのかどうかを確認することができます。 証明者があてずっぽうに正解を得ているわけではないことを確かめるために、検証者はさらに多くの質問をします。 このインタラクションを何度も繰り返すことにより、証明者が証拠を知ったかぶりしている可能性は、検証者が満足するレベルまで大幅に低下します。 + +以上が「インタラクティブなゼロ知識証明」の構造の説明です。 初期のゼロ知識プロトコルはインタラクティブな証明を使用しており、主張の妥当性を検証するためには、証明者と検証者の間で行ったり来たりの疎通が必要でした。 + +Jean-Jacques Quisquateの有名な[アリババの洞窟の物語](https://en.wikipedia.org/wiki/Zero-knowledge_proof#The_Ali_Baba_cave)は、インタラクティブな証明がどのように機能するかを示す良い例です。 物語の中で、Peggy(証明者)はVictor(検証者)に対して、自分が魔法の扉を開く秘密のフレーズを知っていることを証明したいと思っていますが、フレーズを教えたくありません。 + +### 非対話型ゼロ知識証明 {#non-interactive-zero-knowledge-proofs} + +インタラクティブな証明は革命的でしたが、二者を用意して繰り返し対話する必要があったため、有用性は限定的でした。 たとえ検証者が証明者の公正さを確信していたとしても、独立した検証に証明は利用できません(新しい証明を計算するには、証明者と検証者の間で新規のやりとりが必要です)。 + +この問題を解決するために、Manuel Blum、Paul Feldman、Silvio Michaliは、証明者と検証者が共有鍵を持つ最初の[非対話型ゼロ知識証明](https://dl.acm.org/doi/10.1145/62212.62222)を提案しました。 これにより、証明者は情報自体を提供することなく、ある情報に関する知識(すなわち証拠)を持ち合わせていること示唆できます。 + +対話型証明とは異なり、非対話型証明は参加者(証明者と検証者)間の一往復のコミュニケーションのみを要します。 証明者はゼロ知識証明を計算するための特別なアルゴリズムに秘密の情報を渡します。 この証明は検証者に送信され、別のアルゴリズムによって証明者が秘密の情報を知っていることが確認されます。 + +非対話型証明は証明者と検証者の間の疎通を減らし、ゼロ知識証明をより効率的にします。 さらに、一旦証明が生成されると、共有鍵と検証アルゴリズムへのアクセス権を持っていれば、誰でも検証することができます。 + +非対話型証明はゼロ知識技術のブレークスルーであり、今日の証明システムの開発を促進しました。 これらの証明の種類について以下に説明します。 + +### ゼロ知識証明の種類 {#types-of-zero-knowledge-proofs} + +#### ZK-SNARK {#zk-snarks} + +ZK-SNARKは、**Zero-Knowledge Succinct Non-Interactive Argument of Knowledge**の頭字語です。 ZK-SNARKプロトコルには、次の利点があります。 + +- **ゼロ知識**: 検証者は、ステートメントについて何も知らなくても、ステートメントの完全性を検証できます。 検証者が持つステートメントについての唯一の知識は、その真偽です。 + +- **簡潔**: ゼロ知識証明は証拠よりも小さく、すばやく検証することができます。 + +- **非対話型**: 複数回の疎通を要する対話型証明とは異なり、証明者と検証者は一度しか対話せず、証明は「非対話型」です。 + +- **根拠**: 証明は「健全性」の要件を満たしているので、不正は極めて稀です。 + +- **知識(の)**: ゼロ知識証明は、秘密の情報(証拠)へのアクセスがないと構築できません。 有効なゼロ知識証明を計算するための証拠を持っていない証明者にとっては、不可能ではないにしても困難です。 + +前述の「共有鍵」は、証明者と検証者が、証明の生成と検証に使用することに合意した公開パラメータのことです。 公開パラメータの生成(総称して共通参照情報(Common Reference String: (CRS)) は、プロトコルのセキュリティにとって重要であるため、デリケートな作業です。 CRSを生成する際に使用されるエントロピー(ランダム性)が不正な証明者の手に渡ると、偽の証明の計算に利用されてしまいます。 + +[マルチパーティー計算(MPC)](https://en.wikipedia.org/wiki/Secure_multi-party_computation)は、公開パラメータを生成する際のリスクを軽減する方法です。 複数の当事者が[信頼されたセットアップセレモニー](https://zkproof.org/2021/06/30/setup-ceremonies/amp/)に参加し、そこではCRSを生成するために、各々がいくつかの乱数値を提供します。 1人の公正な当事者がエントロピーの一部を破壊する限り、ZK-SNARKプロトコルの計算において健全性が保たれます。 + +信頼されたセットアップは、ユーザーにパラメータ生成を担当する参加者を信頼するよう要求します。 しかし、ZK-STARKの開発により、信頼されていないセットアップでも証明プロトコルが有効となりました。 + +#### ZK-STARK {#zk-starks} + +ZK-STARKは、**Zero-Knowledge Scalable Transparent Argument of Knowledge**の頭字語です。 ZK-STARKはZK-SNARKと似ていますが、以下の違いがあります。 + +- **スケーラブル**: 証拠のサイズが大きい場合、ZK-SNARKよりも証明の生成と検証をすばやく行います。 STARKの証明の場合、証拠が大きくなっても、証明と検証にかかる時間の増加はわずかです(証拠の大きさに対して、SNARKの証明と検証にかかる時間は線形に増加します)。 + +- **透明性**: ZK-STARKは、信頼されたセットアップではなく、公に検証可能なランダム性を使用して、証明と検証のための公開パラメータを生成します。 したがって、ZK-SNARKと比較して透明性が高まります。 + +ZK-STARKはZK-SNARKよりも大きな証明を生成するため、一般的に検証のオーバーヘッドが高くなります。 しかし、大規模なデータセットを証明する場合など、ZK-STARKがZK-SNARKよりも費用対効果が高い場合があります。 + ## ゼロ知識証明の短所 {#drawbacks-of-using-zero-knowledge-proofs} ### ハードウェアのコスト {#hardware-costs} @@ -186,7 +188,7 @@ MACIでは、コーディネーターが贈賄者と共謀したり、贈賄し ### 証明検証のコスト {#proof-verification-costs} -証明を検証するのにも複雑な計算が必要であり、アプリケーションにゼロ知識技術を導入するコストが増加します。 このコストは、計算にゼロ知識証明を与える場合に特に重要です。 たとえば、ゼロ知識ロールアップでは、イーサリアム上のZK-SNARKの証明を1つ検証するのに最大500,000ガスが支払われます。 +証明を検証するのにも複雑な計算が必要であり、アプリケーションにゼロ知識技術を導入するコストが増加します。 このコストは、証明するための計算という文脈では特に重要です。 たとえば、ゼロ知識ロールアップでは、イーサリアム上のZK-SNARKの証明を1つ検証するのに最大500,000ガスが支払われます。 ### 信頼の仮定 {#trust-assumptions} @@ -196,17 +198,15 @@ ZK-SNARKでは、一旦生成されたCRS(公開パラメータ)は、ゼロ知 ### 量子計算による脅威 {#quantum-computing-threats} -ZK-SNARKは、暗号化に楕円曲線暗号([ECDSA](/glossary/#ecdsa))を使用しています。 今のところECDSAアルゴリズムは安全ですが、量子コンピュータの発展は将来的にセキュリティモデルが破綻する可能性があります。 +ZK-SNARKは、暗号化に楕円曲線暗号技術([ECDSA](/glossary/#ecdsa))を使用しています。 今のところECDSAアルゴリズムは安全ですが、量子コンピュータの発展により、将来的にセキュリティモデルが破綻する可能性があります。 ZK-STARKは、暗号化に耐衝突ハッシュを使用するため、量子計算による脅威に耐性があると考えられています。 楕円曲線暗号で使われている公開鍵と秘密鍵のペアリングとは異なり、衝突耐性ハッシュは量子アルゴリズムでも突破するのが困難です。 ## 参考文献 {#further-reading} -- [コンピューター科学者が5つのレベルで1つのコンセプトを説明 | WIRED](https://www.youtube.com/watch?v=fOGdb1CTu5c) - _Wired YouTube channel_ - [ゼロ知識証明のユースケースの概要](https://pse.dev/projects) — _Privacy and Scaling Explorations Team_ - [SNARKs vs. STARKS vs. 再帰SNARKs](https://www.alchemy.com/overviews/snarks-vs-starks) — _Alchemy Overviews_ - [ゼロ知識証明: ブロックチェーンでのプライバシーの強化](https://www.altoros.com/blog/zero-knowledge-proof-improving-privacy-for-a-blockchain/) — _Dmitry Lavrenov_ - [zk-SNARKs — ゼロ知識の実例と深掘り](https://medium.com/coinmonks/zk-snarks-a-realistic-zero-knowledge-example-and-deep-dive-c5e6eaa7131c) — _Adam Luciano_ - [ZK-STARK: 検証可能な信頼の創造 量子コンピュータに対する備え](https://medium.com/coinmonks/zk-starks-create-verifiable-trust-even-against-quantum-computers-dd9c6a2bb13d) — _Adam Luciano_ - [zk-SNARKがいかにして実現されるのかについての概要の紹介](https://vitalik.eth.limo/general/2021/01/26/snarks.html) — _Vitalik Buterin_ -- [ゼロ知識証明とブロックチェーンにおけるその役割について](https://www.leewayhertz.com/zero-knowledge-proof-and-blockchain/) — _LeewayHertz_ diff --git a/src/intl/ja/learn-quizzes.json b/src/intl/ja/learn-quizzes.json index bdc98691d17..723ca9afd16 100644 --- a/src/intl/ja/learn-quizzes.json +++ b/src/intl/ja/learn-quizzes.json @@ -87,7 +87,7 @@ "b002-b-explanation": "イーサ (ETH) は、イーサリアムにおけるネイティブの暗号通貨です。 イーサリアムのネットワーク手数料はすべてETHで支払われます。", "b002-c-label": "米ドル", "b002-c-explanation": "イーサリアムのネットワーク手数料をUSD (米ドル) またはその他の法定通貨で支払うことはできません。", - "b002-d-label": "Ethereum", + "b002-d-label": "イーサリアム", "b002-d-explanation": "イーサリアムはネットワークであり、イーサリアムのネットワーク手数料はETHで支払われます。", "b003-prompt": "イーサリアムのステーキングがネットワークの安全性の確保に役立つ理由は?", "b003-a-label": "ステーカーは、ユーザーの行動が気に入らない場合に排除できる", @@ -139,7 +139,7 @@ "c004-a-explanation": "イーサリアムの共同創設者であるギャビン・ウッドは、イーサリアムが 2015年にローンチされた直後にWeb3という用語を作ったとされています。", "c004-b-label": "スティーブ・ジョブズ", "c004-b-explanation": "「Web3」という言葉を作ったのはスティーブ・ジョブズではありません。", - "c004-c-label": "Vitalik Buterin", + "c004-c-label": "ヴィタリック・ブテリン", "c004-c-explanation": "ヴィタリック・ブテリンは、イーサリアムの最初の創設者ですが、「Web3」という言葉を生み出していません。", "c004-d-label": "イーロン・マスク", "c004-d-explanation": "「Web3」という言葉を作ったのは、イーロン・マスクではありません。", @@ -288,9 +288,9 @@ "h001-prompt": "マージによってイーサリアムが移行した合意メカニズムは?", "h001-a-label": "プルーフ・オブ・ワーク", "h001-a-explanation": "プルーフ・オブ・ワークは、マージの前に使われていた合意メカニズムです。", - "h001-b-label": "プルーフ・オブ・ステーク", + "h001-b-label": "プルーフオブステーク", "h001-b-explanation": "正解!マージにより、イーサリアムはプルーフ・オブ・ステークに移行しました。", - "h001-c-label": "プルーフ・オブ・オーソリティ (Proof-of-authority)", + "h001-c-label": "プルーフ・オブ・オーソリティ", "h001-c-explanation": "イーサリアムでは過去も現在も、イーサリアムメインネットでプルーフ・オブ・オーソリティが使われたことはありません。", "h001-d-label": "上記すべて", "h001-d-explanation": "イーサリアムでこれらの合意メカニズムを同時に持つことは不可能でしょう。", @@ -354,7 +354,6 @@ "j003-d-label": "制限なし", "j003-d-explanation": "すべてのバリデータアカウントの有効残高は、32ETHに制限されています。これにより、単一バリデータがネットワークに及ぼす全体的な力が制限されます。バリデータの有効化および退出がレート制限されたキューを通じて処理されるため、特定の期間内にステーキングまたはステーキング解除できる ETHの量も制限されます。", "j004-prompt": "バリデータとして受け取れる報酬ではないものは?", - "j004-a-label": "ブロック報酬", "j004-a-explanation": "バリデータは、プロトコルによってランダムに選択された場合、有効なブロックを提案することで新しいETH発行の形で報酬を受け取れます。これらの報酬は、ブロックを提案するときにも得られる手数料やMEVとは別のものです。", "j004-b-label": "フィーチップまたはMEV", "j004-b-explanation": "フィーチップ (手数料の未バーン分) とMEV収益は、バリデータによって提供された手数料受取人のアドレスを経由して、ブロックプロポーザー (ステーカーおよびバリデータ) に分配されます。これらの報酬は、ブロックを提案したときにも得られるブロック報酬とは別のものです。", diff --git a/src/intl/ja/page-about.json b/src/intl/ja/page-about.json index 23aaa8fd8b4..2da4f4211b8 100644 --- a/src/intl/ja/page-about.json +++ b/src/intl/ja/page-about.json @@ -9,24 +9,24 @@ "page-about-li-4": "実装済み", "page-about-link-1": "このリポジトリのソースコードは、MIT ライセンスの下でライセンスされています", "page-about-link-2": "GitHub", - "page-about-link-3": "GitHub で進行中のタスクの全リストを表示する", + "page-about-link-3": "Github で進行中のタスクの全リストを表示する", "page-about-link-4": "Discord サーバに参加する", "page-about-link-5": "Twitterでご連絡ください", - "page-about-link-6": "GitHub で実装されたタスクの一覧を表示する", + "page-about-link-6": "Github で実装されたタスクの一覧を表示する", "page-about-link-7": "GitHubでイシューを作成する", "page-about-p-1": "ethereum.org の立ち上げ以来、私たちはどのように事業を運営しているかを透明にするよう努めています。透明性が Ethereum の成功に不可欠であると信じているため、私たちのコア価値の1つです。", "page-about-p-2": "私たちは使用します", "page-about-p-3": "主要なプロジェクト管理ツールとして、タスクを3つのカテゴリーに分類しています。", - "page-about-p-4": "私たちは、特定のタスクの状況をコミュニティに知らせ続けるよう最善を尽くします。", + "page-about-p-4": " 私たちは、特定のタスクの状況をコミュニティに知らせ続けるよう最善を尽くします。", "page-about-p-5": "実装中のタスク。", "page-about-p-6": "次に実装するためにキューに入れたタスク。", "page-about-p-7": "最近完了したタスク。", "page-about-p-8": "ethereum.org を改善するためのアイデアがありますか? ぜひコラボレーションしていきたいです!", "page-what-is-ethereum-energy-consumption-chart-legend": "年間エネルギー消費量(TWh)", - "energy-consumption-chart-youtube-label": "YouTube", - "energy-consumption-chart-gold-mining-galaxy-label": "金の採掘(Galaxy Digital)", + "page-upgrades-post-merge-banner-governance-ood": "マージ後、本ページの一部のコンテンツの情報が古くなっています。ご貢献いただける場合はPRを上げてください。", "energy-consumption-chart-global-data-centers-label": "世界中のデータセンター", - "energy-consumption-chart-gold-mining-cbeci-label": "金採掘(CBECI)", + "energy-consumption-chart-airbnb-label": "AirBnB", + "energy-consumption-gold-mining-cbeci-label": "金の採掘", "energy-consumption-chart-btc-pow-label": "BTC PoW", "energy-consumption-chart-netflix-label": "Netflix", "energy-consumption-chart-eth-pow-label": "BTC PoW", diff --git a/src/intl/ja/page-assets.json b/src/intl/ja/page-assets.json index 298ff39593c..fc1da9c7645 100644 --- a/src/intl/ja/page-assets.json +++ b/src/intl/ja/page-assets.json @@ -49,5 +49,13 @@ "page-assets-page-assets-transparent-background": "透過背景画像", "page-assets-robot": "ロボットウォレット画像", "page-assets-sharding": "シャーディング画像", - "page-assets-hackathon": "ハッカソン画像" + "page-assets-hackathon": "ハッカソン画像", + "page-assets-learn-hero-name": "未来的な大学", + "page-assets-community-hero-name": "コミュニティの集まり", + "page-assets-quizzes-hero-name": "無限の遊び場", + "page-assets-developers-hero-name": "未来の創造", + "page-assets-garden-name": "イーサリアムの庭", + "page-assets-roadmap-hero-name": "未来への道筋", + "page-assets-layer-2-hero-name": "イーサリアムの構築", + "page-assets-guides-hero-name": "イーサリアムラボ" } diff --git a/src/intl/ja/page-bug-bounty.json b/src/intl/ja/page-bug-bounty.json index fd0975f0665..534d6f10862 100644 --- a/src/intl/ja/page-bug-bounty.json +++ b/src/intl/ja/page-bug-bounty.json @@ -1,9 +1,9 @@ { "page-upgrades-bug-bounty-annotated-specs": "注釈付き仕様", - "page-upgrades-bug-bounty-annotations": "以下の注釈を確認すると有用です:", + "page-upgrades-bug-bounty-annotations": "以下の注釈を確認すると役に立つかもしれません。", "page-upgrades-bug-bounty-client-bugs": "クライアントのバグ", "page-upgrades-bug-bounty-client-bugs-desc": "クライアントはイーサリアムネットワークを実行し、仕様に定められたロジックに従い、潜在的な攻撃から保護する必要があります。探し出したいバグは、プロトコルの実装に関連するものです。", - "page-upgrades-bug-bounty-client-bugs-desc-2": "現在、実行レイヤークライアント(Besu、Erigon、Geth、Nethermind)とコンセンサスレイヤークライアント(Lighthouse、Lodestar、Nimbus、Teku、Prysm)がバグ報償金プログラムに含まれています。 監査が終わり本番環境へのリリースができるようになると、他のクライアントも追加される場合があります。", + "page-upgrades-bug-bounty-client-bugs-desc-2": "現在、実行レイヤークライアント(Besu、Erigon、Geth、Nethermind)とコンセンサスレイヤークライアント(Lighthouse、Lodestar、Nimbus、Teku、Prysm)がバグ報償金プログラムに含まれています。 監査が終わり本番環境へのリリースができるようになると、他のクライアントも追加される場合があります。また最近では、c-kzg-4844go-kzg-4844もバグ報奨金プログラムに含まれています。", "page-upgrades-bug-bounty-clients": "報奨金があるクライアント", "page-upgrades-bug-bounty-clients-type-1": "仕様不適合の問題", "page-upgrades-bug-bounty-clients-type-2": "予期しないクラッシュ、RCEまたはサービス拒否(DOS)攻撃の脆弱性", @@ -17,13 +17,13 @@ "page-upgrades-bug-bounty-email-us": "メールでのお問い合わせ:", "page-upgrades-bug-bounty-help-links": "参考リンク", "page-upgrades-bug-bounty-hunting": "バグハンティングのルール", - "page-upgrades-bug-bounty-hunting-desc": "バグ報奨金プログラムは、アクティブなイーサリアムコミュニティの実験的で裁量的な報酬プログラムで、プラットフォーム改善の支援者を奨励し、報酬を付与するものです。これは競争ではありません。コミュニティはいつでもプログラムをキャンセル権利を有し、報酬はイーサリアム・ファウンデーションバグ報奨金パネルの独自の裁量により決められます。加えて、制裁対象者または制裁対象国(北朝鮮、イランなど)の個人に対して、報酬を出すことはできません。現地の法律により、身元の証明を求めることが義務付けられています。税金はすべて、プログラムの参加者が負担するものとし、報酬は適用法の対象となります。最後に、テストはすべての適用法に準拠して行う必要があり、自分自身のものではないデータを侵害せずに、ローカルで実行するテストネット上でテストする必要があります。", + "page-upgrades-bug-bounty-hunting-desc": "バグ報奨金プログラムは、アクティブなイーサリアムコミュニティの実験的で裁量的な報酬プログラムで、プラットフォーム改善の支援者を奨励し、報酬を付与するものです。これは競争ではありません。コミュニティはいつでもプログラムをキャンセルする権利を有し、報酬はイーサリアム・ファウンデーションバグ報奨金パネルの独自の裁量により決められます。加えて、制裁対象者または制裁対象国(北朝鮮、イランなど)の個人に対して、報酬を出すことはできません。現地の法律により、身元の証明を求めることが義務付けられています。税金はすべて、プログラムの参加者が負担するものとし、報酬は適用法の対象となります。最後に、テストはすべての適用法に準拠して行う必要があり、自分自身のものではないデータを侵害せずに、ローカルで実行するテストネット上でテストする必要があります。", "page-upgrades-bug-bounty-hunting-leaderboard": "コンセンサスレイヤのバグ報奨金リーダーボード", "page-upgrades-bug-bounty-hunting-execution-leaderboard": "実行レイヤーのバグ報奨金リーダーボード", "page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "コンセンサスレイヤーのバグを見つけてリーダーボードに入賞", "page-upgrades-bug-bounty-hunting-execution-leaderboard-subtitle": "実行レイヤーのバグを見つけてリーダーボードに入賞", "page-upgrades-bug-bounty-hunting-li-1": "POCがない問題、すでに他のユーザーによって提出されている問題、または仕様やクライアント管理者が既知のバグは、報酬の対象にはなりません。", - "page-upgrades-bug-bounty-hunting-li-2": "脆弱性を公開すると、報奨金の対象になりません。", + "page-upgrades-bug-bounty-hunting-li-2": "事前に合意を得ないで脆弱性を公開したり、他の当事者に報告した場合は、報奨金の対象外となります。", "page-upgrades-bug-bounty-hunting-li-3": "報奨金プログラム主催者内にあるイーサリアム・ファウンデーションまたはクライアントチームの従業員および委託者は、ポイントが付与されるプログラムのみに参加することができ、金銭的な報酬を受け取ることはありません。", "page-upgrades-bug-bounty-hunting-li-4": "イーサリアム報奨金プログラムは、報酬を決定する際に数点を考慮します。 資格、スコア、報酬に関するすべての条件の決定は、イーサリアム・ファウンデーションバグ報奨金パネルの独自かつ最終的な裁量に委ねられています。", "page-upgrades-bug-bounty-leaderboard": "リーダーボードをすべて表示", @@ -34,30 +34,30 @@ "page-upgrades-bug-bounty-meta-description": "イーサリアムバグ報奨金プログラムの概要: 参加方法と報酬情報", "page-upgrades-bug-bounty-meta-title": "イーサリアムバグ報奨金プログラム", "page-upgrades-bug-bounty-not-included": "対象範囲外", - "page-upgrades-bug-bounty-not-included-desc": "バグ報奨金プログラムの対象となるのは、「対象範囲」に記載されているもののみです。つまり、例えばウェブページ、DNS、メールなどのインフラは報奨の対象外となります。ERC20コントラクトのバグは、通常、報奨の対象には含まれません。ただし、そのような場合、イーサリアム・ファウンデーションは、作者や取引所など、影響を受ける関係者への働きかけを支援します。ENSはENSファウンデーションによって管理されており、報酬範囲には含まれていません。", + "page-upgrades-bug-bounty-not-included-desc": "バグ報奨金プログラムの対象となるのは、「対象範囲」に記載されているもののみです。つまり、例えばウェブページ、DNS、メールなどのインフラは報奨の対象外となります。ERC20コントラクトのバグは、通常、報奨の対象には含まれません。ただし、そのような場合、イーサリアム・ファウンデーションは、作者や取引所など、影響を受ける関係者への働きかけを支援します。ENSはENSファウンデーションによって管理されており、報酬範囲には含まれていません。JSON-RPCや Beacon APIなどの公開する必要があるAPIの脆弱性は、バグ報奨金プログラムの対象外です。", "page-upgrades-bug-bounty-owasp": "OWASPメソッドを表示", "page-upgrades-bug-bounty-points": "また、EFは以下に基づいて報酬を付与します。", "page-upgrades-bug-bounty-points-error": "データの読み込み中にエラーが発生しました。更新してください。", - "page-upgrades-bug-bounty-points-exchange": "ポイント交換", + "page-upgrades-bug-bounty-points-exchange": "ポイント取引", "page-upgrades-bug-bounty-points-loading": "データ読込中…", - "page-upgrades-bug-bounty-points-payout-desc": "Ethereum Foundation は、ETHまたはDAIで米ドル分の価値を支払います。", + "page-upgrades-bug-bounty-points-payout-desc": "イーサリアム・ファウンデーションは、ETHまたはDAIで米ドル分の価値を支払います。", "page-upgrades-bug-bounty-points-point": "1ポイント", "page-upgrades-bug-bounty-points-rights-desc": "イーサリアム・ファウンデーションは、これを予告なく変更する権利を有します。", - "page-upgrades-bug-bounty-points-usd": "2 米ドル", - "page-upgrades-bug-bounty-quality": "記述の品質", + "page-upgrades-bug-bounty-points-usd": "2米ドル", + "page-upgrades-bug-bounty-quality": "記述の質", "page-upgrades-bug-bounty-quality-desc": ": 明瞭で良く書かれた投稿には、より高い報酬が支払われます。", "page-upgrades-bug-bounty-quality-fix": "修正の品質(修正が含まれている場合): 問題の解決方法を明確に記述したものに対して、より高い報酬が支払われます。", - "page-upgrades-bug-bounty-quality-repro": "再現性の品質", + "page-upgrades-bug-bounty-quality-repro": "再現性の質", "page-upgrades-bug-bounty-quality-repro-desc": ": 報酬の対象となるには、POC (Proof of Concept) を含める必要があります。テストコード、スクリプト、詳細な手順を添付してください。脆弱性の再現と検証が容易であればあるほど、報酬は高くなります。", - "page-upgrades-bug-bounty-questions": "ご質問", + "page-upgrades-bug-bounty-questions": "質問がありますか?", "page-upgrades-bug-bounty-rules": "ルールを読む", - "page-upgrades-bug-bounty-slogan": "バグ報酬プログラム", + "page-upgrades-bug-bounty-slogan": "バグ報奨プログラム", "page-upgrades-bug-bounty-specs": "コンセンサスレイヤ仕様", "page-upgrades-bug-bounty-execution-specs": "実行レイヤ仕様", "page-upgrades-bug-bounty-specs-docs": "仕様ドキュメント", "page-upgrades-bug-bounty-submit": "バグを投稿", "page-upgrades-bug-bounty-submit-desc": "有効なバグを発見するごとに、報酬を獲得することができます。獲得できる報酬料は、深刻度によって異なります。深刻度は、イーサリアムネットワークへの影響度と可能性に基づくOWASPリスク評価モデルに従って計算されます。", - "page-upgrades-bug-bounty-subtitle": "イーサリアムネットワークに悪影響を与えるプロトコル、クライアント、Solidityのバグを発見すると、最大25万ドルの獲得とリーダーボードに載ることが出来ます。", + "page-upgrades-bug-bounty-subtitle": "イーサリアムネットワークに悪影響を与えるプロトコル、クライアント、Solidityのバグを発見して、最大25万ドルを獲得し、リーダーボードに名前を載せましょう。", "page-upgrades-bug-bounty-title": "受け付け中", "page-upgrades-bug-bounty-title-1": "ビーコンチェーン", "page-upgrades-bug-bounty-title-2": "フォークの選択", @@ -69,10 +69,10 @@ "page-upgrades-bug-bounty-type-4": "計算またはパラメータの不一致", "page-upgrades-bug-bounty-types": "バグの種類", "page-upgrades-bug-bounty-validity": "対象範囲", - "page-upgrades-bug-bounty-validity-desc": "私たちのバグ報奨金プログラムは、プロトコルの健全性(ブロックチェーンのコンセンサスモデル、ワイヤーやP2Pプロトコル、プルーフ・オブ・ステークなど)やプロトコル/実装のコンプライアンスからネットワークセキュリティやコンセンサスの完全性まで、エンドツーエンドを対象としています。クラシックのクライアントのセキュリティや、暗号論的プリミティブのセキュリティもプログラムの一部です。疑問点がある場合は、bounty@ethereum.orgまでメールにてお問い合わせください。", + "page-upgrades-bug-bounty-validity-desc": "私たちのバグ報奨金プログラムは、プロトコルの健全性(ブロックチェーンのコンセンサスモデル、ワイヤーやピアツーピアプロトコル、プルーフ・オブ・ステークなど)やプロトコル/実装のコンプライアンスからネットワークセキュリティやコンセンサスの完全性まで、エンドツーエンドを対象としています。典型的なクライアントのセキュリティや、暗号論的プリミティブのセキュリティもプログラムの一部です。疑問点がある場合は、bounty@ethereum.orgまでメールにてお問い合わせください。バグの開示および脆弱性を直接bounty@ethereum.orgに提出することができます。この場合、私たちのPGPキーを使ってメッセージを暗号化することをお願いしています。", "page-upgrades-bug-bounty-card-critical": "重大", "page-upgrades-bug-bounty-card-critical-risk": "重大リスクのバグを送信", - "page-upgrades-bug-bounty-card-h2": "中", + "page-upgrades-bug-bounty-card-h2": "Medium", "page-upgrades-bug-bounty-card-high": "高", "page-upgrades-bug-bounty-card-high-risk": "高リスクのバグを送信", "page-upgrades-bug-bounty-card-label-1": "最大1,000ポイント", @@ -99,6 +99,38 @@ "page-upgrades-bug-bounty-card-text": "バリデータの100件のアテステーションごとに、攻撃者が1件ドロップさせる状態にすることができる脆弱性", "page-upgrades-bug-bounty-card-text-1": "攻撃者が4バイト先頭のゼロを持つピアIDを持つノードに対してエクリプス攻撃を成功させることができる脆弱性", "page-upgrades-bug-bounty-card-text-2": "攻撃者がネットワークの大部分をパーティションでき、脆弱性を容易に引き起こせる。", - "page-upgrades-bug-bounty-card-text-3": "攻撃者がマジョリティクライアントでリモートコードを実行でき、脆弱性を容易に引き起こされる。", - "page-upgrades-question-title": "よくある質問" + "page-upgrades-bug-bounty-card-text-3": "攻撃者がマジョリティクライアントでリモートコードを実行でき、脆弱性を容易に引き起こせる。", + "page-upgrades-question-title": "よくある質問", + "bug-bounty-faq-q1-title": "機弱性の報告の理想的な姿とはどんなものでしょうか。", + "bug-bounty-faq-q1-contentPreview": "機弱性の報告の実例をご参照ください。", + "bug-bounty-faq-q1-content-1": "説明: 検証されていないブロックを使用した遠隔でのサービス拒否", + "bug-bounty-faq-q1-content-2": "攻撃シナリオ: 攻撃者は、大量の計算 (gasLimitの最大値) を必要とするブロックを送信することができるが、プルーフ・オブ・ワークを持っていない。 攻撃者が継続的にブロックを送信すると、被害者のノードのCPU使用率100%に強制することができる。", + "bug-bounty-faq-q1-content-3": "影響: 攻撃者はリモートノードのCPU使用率を悪用し、完全なDoSを引き起こすことができる。", + "bug-bounty-faq-q1-content-4": "コンポーネント: Goクライアントのバージョンv0.6.8", + "bug-bounty-faq-q1-content-5": "再現: 有効でないプルーフ・オブ・ワークで沢山のトランザクションを含むブロックをGoノードに送る。", + "bug-bounty-faq-q1-content-6": "詳細: ブロックは、Process(Block, dontReact)メソッドで検証されます。このメソッドは、トランザクションの実行 (sm.ApplyDiff) など、CPUに負荷のかかるタスクを実行し、その後、プルーフ・オブ・ワーク (sm.ValidateBlock()) を検証します。 これにより、攻撃者は、大量の計算 (最大gasLimit) を必要とするが、プルーフ・オブ・ワークを持たないブロックを送信することができます。 攻撃者が継続的にブロックを送信すると、攻撃者は被害ノードの CPU 使用率を100%に強制することができます。", + "bug-bounty-faq-q1-content-7": "修正: チェックの順序を逆にする。", + "bug-bounty-faq-q2-title": "バグ報奨金プログラムに期限はありますか?", + "bug-bounty-faq-q2-contentPreview": "できません。", + "bug-bounty-faq-q2-content-1": "今のところ、終了日は設定されていません。 最新ニュースについては、イーサリアム・ファウンデーションのブログをご覧ください。", + "bug-bounty-faq-q3-title": "報奨金はどのように支払われますか?", + "bug-bounty-faq-q3-contentPreview": "報酬はETHまたはDAIにて支払われます。", + "bug-bounty-faq-q3-content-1": "通常、提出物を検証した後、さらに数日後に 、ETHまたはDAIで報酬が支払われます。 現地の法律により、身元を証明するものの提出を求めることが義務付けられています。 また、ETH アドレスも必要になります。", + "bug-bounty-faq-q4-title": "報酬をチャリティーに寄付することはできますか?", + "bug-bounty-faq-q4-contentPreview": "はい!", + "bug-bounty-faq-q4-content-1": "ご指定の慈善団体へ寄付することができます。", + "bug-bounty-faq-q5-title": "イシュー/脆弱性を報告しましたが、まだ返信がありません。", + "bug-bounty-faq-q5-contentPreview": "ご連絡いただいた内容への返信には数日かかる可能性があります。", + "bug-bounty-faq-q5-content-1": "なるべく早く返信するようにしています。1~2日以内に返事がない場合は、bounty@ethereum.orgまでメールでお問い合わせください。", + "bug-bounty-faq-q6-title": "匿名希望もしくはリーダーボードに自分の名前を載せたくない。", + "bug-bounty-faq-q6-contentPreview": "可能ですが、報酬を受け取る資格がなくなる可能性があります。", + "bug-bounty-faq-q6-content-1": "匿名または偽名で送信すること自体は問題ありません。しかし、ETHまたはDAIで報酬を受け取る資格を得られません。ETHまたはDAIで報酬を受け取る資格を得るには、あなたの本名と身元を証明するものが必要になります。報奨金を慈善団体に寄付する場合は、身元の証明は不要です。", + "bug-bounty-faq-q6-content-2": "あなたの名前もしくはニックネームをリーダーボードで非表示にしたい場合はお知らせください。", + "bug-bounty-faq-q7-title": "リーダーボードのポイントは何ですか?", + "bug-bounty-faq-q7-contentPreview": "見つかったすべての脆弱性およびイシューにはスコアが割り当てられます", + "bug-bounty-faq-q7-content-1": "見つかったすべての脆弱性およびイシューにはスコアが割り当てられます。報奨金ハンターは、リーダーボードで合計ポイントによってランク付けされます。", + "bug-bounty-faq-q8-title": "PGP鍵を持っていますか?", + "bug-bounty-faq-q8-contentPreview": "はい。展開して詳細を確認してください。", + "bug-bounty-faq-q8-content-1": "AE96 ED96 9E47 9B00 84F3 E17F E88D 3334 FA5F 6A0Aを使用してください。", + "bug-bounty-faq-q8-PGP-key": "PGP鍵" } diff --git a/src/intl/ja/page-contributing-translation-program-acknowledgements.json b/src/intl/ja/page-contributing-translation-program-acknowledgements.json new file mode 100644 index 00000000000..d48631ec2d8 --- /dev/null +++ b/src/intl/ja/page-contributing-translation-program-acknowledgements.json @@ -0,0 +1,42 @@ +{ + "page-contributing-translation-program-acknowledgements-acknowledgement-page-title": "コントリビューターへの謝辞", + "page-contributing-translation-program-acknowledgements-acknowledgement-page-1": "翻訳プログラムはコラボレーション作業であり、ウェブサイトができるだけ多くの言語で利用できるようにするため、何千人ものコントリビューターがボランティアとして時間を割いて参加してくれています。", + "page-contributing-translation-program-acknowledgements-acknowledgement-page-2": "本ページは翻訳に携わった皆様とその努力に感謝し、最も優れたコントリビューターにスポットライトを当て、プロとしての道を歩む翻訳者を支援することを意図しています。", + "page-contributing-translation-program-acknowledgements-acknowledgement-page-3": "Crowdinのプロジェクトで活躍する翻訳者は全員、コントリビューターページで紹介されています。", + "page-contributing-translation-program-acknowledgements-acknowledgement-page-link": "すべてのethereum.orgの翻訳者を表示", + "page-contributing-translation-program-acknowledgements-acknowledgement-page-4": "一定の期間に最も活躍した翻訳者は、翻訳リーダーボードに名を連ねることができます。", + "page-contributing-translation-program-acknowledgements-acknowledgement-page-5": "プロの翻訳者、これから翻訳を学ぶ学生、新しい専門分野を増やそうとしている翻訳者の方は、このウェブサイトに貢献したことを証明するために、翻訳者証明書を申請することができます。", + "page-contributing-translation-program-acknowledgements-cert-title": "証明書", + "page-contributing-translation-program-acknowledgements-cert-1": "翻訳者の方々を認定し、キャリアパスをサポートできるよう、ethereum.org翻訳者証明書をデザインしました。", + "page-contributing-translation-program-acknowledgements-cert-2": "この証明書は、リファレンスとして使いたい、技術的なコンテンツの翻訳に関する専門知識を証明したい、あるいは単にイーサリアムへの貢献を示したいと考えるプロの翻訳者や今後活躍が期待される翻訳者を対象としています。", + "page-contributing-translation-program-acknowledgements-cert-3": "翻訳プログラムに貢献し、翻訳された単語の少なくとも5,000語が承認された場合、translations@ethereum.orgまで翻訳者証明書を申請してください。その際、証明書に記載するCrowdinアカウントへのリンクとあなたのフルネーム(希望する場合はエイリアスも可)を明記してください。", + "page-contributing-translation-program-acknowledgements-hero-image-alt": "翻訳プログラムのヒーロー柴画像", + "page-contributing-translation-program-acknowledgements-meta-description": "翻訳者の皆様への謝辞", + "page-contributing-translation-program-acknowledgements-meta-title": "翻訳者への謝辞", + "page-contributing-translation-program-acknowledgements-our-translators-cta": "イーサリアムのコンテンツをすべての人が利用できるように、時間と能力を捧げてくれた翻訳者全員のリスト", + "page-contributing-translation-program-acknowledgements-our-translators-title": "翻訳者", + "page-contributing-translation-program-acknowledgements-our-translators-view-all": "すべての翻訳者を表示", + "page-contributing-translation-program-acknowledgements-our-translators-1": "「コミュニティ」の理念がethereum.org翻訳プログラムの核となるものです。翻訳者のコミュニティを探索してみてください。", + "page-contributing-translation-program-acknowledgements-translation-leaderboard-title": "翻訳リーダボード", + "page-contributing-translation-program-acknowledgements-translation-leaderboard-cta": "ehereum.orgの翻訳に貢献し、翻訳リーダボードに名前を連ねましょう!", + "page-contributing-translation-program-acknowledgements-translation-leaderboard-1": "最近の貢献のみならず、すべての期間で影響力のあった貢献に基づいて、優れた翻訳者をご紹介します。毎月、四半期、全期間別にリーダボードに掲載し、毎月初旬に更新します。レビューで承認された翻訳単語数に基づく順序でリーダボードに掲載されます。", + "page-contributing-translation-program-acknowledgements-translation-leaderboard-all-time-view": "全期間", + "page-contributing-translation-program-acknowledgements-translation-leaderboard-month-view": "月間", + "page-contributing-translation-program-acknowledgements-translation-leaderboard-quarter-view": "四半期", + "page-contributing-translation-program-acknowledgements-translation-leaderboard-show-less": "少なく表示", + "page-contributing-translation-program-acknowledgements-translation-leaderboard-show-more": "さらに表示", + "page-contributing-translation-program-acknowledgements-translator": "翻訳者", + "page-contributing-translation-program-acknowledgements-language": "言語", + "page-contributing-translation-program-acknowledgements-total-words": "総単語数", + "page-contributing-translation-program-acknowledgements-poaps-title": "出席証明プロトコル(POAP)", + "page-contributing-translation-program-acknowledgements-1": "翻訳者の皆様には、出席証明プロトコル(POAP)という、ethereum.org 翻訳プログラムへの参加を証明する、非代替性トークンを付与します。", + "page-contributing-translation-program-acknowledgements-2": "翻訳者の活動に基づいて提供できるいくつかの種類の出席証明プロトコル(POAP)があります。", + "page-contributing-translation-program-acknowledgements-3": "Crowdinで翻訳に貢献すると、出席証明プロトコル(POAP)がもらえます。ぜひご参加ください。", + "page-contributing-translation-program-acknowledgements-how-to-claim-title": "申請方法", + "page-contributing-translation-program-acknowledgements-how-to-claim-1": "参加: ", + "page-contributing-translation-program-acknowledgements-how-to-claim-1-discord": "Discord サーバー", + "page-contributing-translation-program-acknowledgements-how-to-claim-2": "#🥇| poapsチャネルにCrowdinアカウントのリンクを貼付けます。", + "page-contributing-translation-program-acknowledgements-how-to-claim-3": "出席証明プロトコル(POAP)へのリンクが送られるまでお待ちください。", + "page-contributing-translation-program-acknowledgements-how-to-claim-4": "出席証明プロトコル(POAP)を受け取ります。", + "page-contributing-translation-program-acknowledgements-4": "出席証明プロトコル(POAP)の受け取りには、セルフカストディ・ウォレットのみを使用してください。取引所のアカウントや秘密鍵を保有していないその他のアカウントなどは、使わないでください。これらのアカウントでは、出席証明プロトコル(POAP)へのアクセスや管理ができません。" +} diff --git a/src/intl/ja/page-contributing-translation-program-contributors.json b/src/intl/ja/page-contributing-translation-program-contributors.json new file mode 100644 index 00000000000..9cc5fec0191 --- /dev/null +++ b/src/intl/ja/page-contributing-translation-program-contributors.json @@ -0,0 +1,10 @@ +{ + "page-contributing-translation-program-contributors-thank-you": "コントリビューターの皆様に感謝します。", + "page-contributing-translation-program-contributors-title": "翻訳者", + "page-contributing-translation-program-contributors-our-translators-1": "「コミュニティ」の理念がethereum.org翻訳プログラムの核となるものです。", + "page-contributing-translation-program-contributors-our-translators-2": "何千人ものコミュニティメンバーに翻訳に貢献いただいており、すべての方に感謝の念を示すことが難しくなっています。", + "page-contributing-translation-program-contributors-our-translators-3": "すべての翻訳者は、Crowdinでの名前に基づいてアルファベット順に記載されています。もし、本名、ニックネーム、ENSドメインなどを使用したい場合は、Crowdinの[Full Name]で設定を変更してください。", + "page-contributing-translation-program-contributors-meta-title": "翻訳者", + "page-contributing-translation-program-contributors-meta-description": "翻訳コントリビューターのリスト", + "page-contributing-translation-program-contributors-number-of-contributors": "コントリビューター数:" +} diff --git a/src/intl/ja/page-learn.json b/src/intl/ja/page-learn.json index 954c73e8bcf..7a26197bd63 100644 --- a/src/intl/ja/page-learn.json +++ b/src/intl/ja/page-learn.json @@ -12,7 +12,7 @@ "hero-button-lets-get-started": "さあ、始めましょう", "what-is-crypto-1": "仮想通貨、ブロックチェーン、ビットコインなどを聞いたことがあるかもしれません。以下のリンクでは、それらが何であるか、およびイーサリアムとどのように関連しているかを理解することができます。", "what-is-crypto-2": "ビットコインのような仮想通貨は、誰もが世界中に送金できます。イーサリアムも同様ですが、人々がアプリや組織を構築するコードも実行可能です。回復力と柔軟性の両方を兼ね備え、どのようなコンピュータープログラムでもイーサリアム上で実行できます。詳細と開始方法を学びましょう。", - "what-is-ethereum-card-title": "イーサリアムとは", + "what-is-ethereum-card-title": "イーサリアムとは?", "what-is-ethereum-card-description": "初めての方は、ここでイーサリアムがなぜ重要なのかの学びましょう。", "what-is-ethereum-card-image-alt": "市場を覗き込んでいる人のイラスト、イーサリアムを表現", "what-is-eth-card-title": "ETHとは何?", @@ -47,7 +47,7 @@ "what-is-ethereum-used-for-1": "イーサリアムによって、私たちの生活のさまざまな分野を改善する新しい製品やサービスが生まれています。まだ初期段階ですが、ワクワクすることがたくさんあります。", "defi-card-title": "分散型金融(DeFi)", "defi-card-description": "銀行を必要としない、誰にでも開かれた代替金融システムを探索しましょう。", - "defi-card-button": "分散型金融(DeFi)とは", + "defi-card-button": "分散型金融(DeFi)とは", "stablecoins-card-title": "ステーブルコイン", "stablecoins-card-description": "通貨、コモディティ、その他の金融商品の価値にペッグされた仮想通貨です。", "stablecoins-card-button": "ステーブルコインとは?", @@ -59,7 +59,7 @@ "dao-card-button": "自律分散組織(DAO)とは", "dapp-card-title": "分散型アプリケーション (dapps)", "dapp-card-description": "ピアツーピアサービスのデジタルエコノミーを構築します。", - "dapp-card-button": "分散型アプリ(Dapp)の探索", + "dapp-card-button": "dapps を探す", "emerging-use-cases-title": "新たなユースケース", "emerging-use-cases-description": "他にも、イーサリアムによって誕生し、成長している顕著な業界があります。", "play-to-earn": "プレイトゥアーンゲーム (P2E)", @@ -80,7 +80,7 @@ "ethereum-upgrades-card-title": "イーサリアムロードマップ", "ethereum-upgrades-card-description": "イーサリアムのロードマップで、よりスケーラブルに、安全に、サステナブルに。", "ethereum-upgrades-card-button": "ロードマップを探求する", - "ethereum-whitepaper-card-title": "イーサリアムホワイトペーパー", + "ethereum-whitepaper-card-title": "イーサリアムのホワイトペーパー", "ethereum-whitepaper-card-description": "2014年にヴィタリック・ブテリンが執筆した、オリジナルのイーサリアム提案書です。", "ethereum-whitepaper-card-button": "ホワイトペーパーを読む", "more-on-ethereum-protocol-title": "イーサリアムプロトコルについてもっと学ぶ", @@ -99,25 +99,15 @@ "online-communities-card-description": "オンラインコミュニティには、より具体的な質問をしたり、参加したりする素晴らしい機会が用意されています。", "online-communities-card-button": "コミュニティを探索する", "books-about-ethereum": "イーサリアム関連の書籍", - "proof-of-stake-title": "プルーフオブステーク", "proof-of-stake-description": "2022年9月13日 - ビタリック・ブテリン、Nathan Schneider", - "cryptopians-title": "The Cryptopians", "cryptopians-description": "2022年2月22日 - Laura Shin", - "out-of-the-ether-title": "Out of the Ether", "out-of-the-ether-description": "2020年9月29日 - Matthew Leising", - "the-infinite-machine-title": "The Infinite Machine", "the-infinite-machine-description": "2020年7月14日 - Camila Russo", - "mastering-ethereum-title": "マスタリング・イーサリアム", "mastering-ethereum-description": "2018年12月23日 – Andreas M. Antonopoulos, Gavin Wood Ph.D.", "podcasts-about-ethereum": "イーサリアム関連のポッドキャスト", - "bankless-title": "Bankless", "bankless-description": "クリプトファイナンスのガイド", - "zeroknowledge-title": "ゼロ知識", "zeroknowledge-description": "新たに出現した分散型Webと、それを構築するコミュニティに力を与えるこのテクノロジーについて、詳しく解説", - "green-pill-title": "Green Pill", "green-pill-description": "世界に正の外部性を生み出す暗号経済システムを探索", - "unchained-title": "アンチェインド", "unchained-description": "分散型インターネットの構築に携わる人々や、私たちの未来を支える可能性のあるこのテクノロジーの詳細を深く解説。規制、セキュリティ、プライバシーなど、暗号資産をめぐる最も争点の多い問題も掘り下げる", - "the-daily-gwei-title": "The Daily Gwei", "the-daily-gwei-description": "イーサリアムニュースの要約、最新情報、分析" } diff --git a/src/intl/ja/page-staking.json b/src/intl/ja/page-staking.json index 0524c58a3ee..3e3dac15cc0 100644 --- a/src/intl/ja/page-staking.json +++ b/src/intl/ja/page-staking.json @@ -1,5 +1,5 @@ { - "comp-withdrawal-comparison-current-title": "現在のステーカ", + "comp-withdrawal-comparison-current-title": "現在のステーカー", "comp-withdrawal-comparison-current-li-1": "一部のユーザーは最初にステーキングデポジットを設定する際に引き出しアドレスを提供している可能性があります。これらのユーザーはこれ以上する必要はありません。", "comp-withdrawal-comparison-current-li-2": "大多数のステーカーは最初の入金時に出金先住所を提供しておらず、出金資格情報を更新する必要があります。 ステーキングランチパッド にはこれを行う方法についての説明があります", "comp-withdrawal-comparison-current-p": "認証情報を更新する必要があるかどうかを確認するために、バリデータインデックス番号をここに入力することができます (これはクライアントログに記録されています):", @@ -20,16 +20,16 @@ "page-staking-withdrawals-when": "リリース!", "page-staking-image-alt": "ステーキングランチパッドのサイマスコット画像", "page-staking-benefits-1-title": "報酬の獲得", - "page-staking-benefits-1-description": "ネットワークのコンセンサス達成への貢献に対して報酬が付与されます。つまり、トランザクションをまとめ新しいブロックにし、他のバリデータの動作をチェックするソフトウェアを実行することにより、チェーンを安全に稼働させ続けることに貢献につながり、報酬が得られます。", + "page-staking-benefits-1-description": "ネットワークのコンセンサス達成への貢献に対して報酬が付与されます。つまり、トランザクションをまとめて新しいブロックにし、他のバリデータの動作をチェックするソフトウェアを実行すると、チェーンを安全に稼働させ続けることへの貢献になるため報酬が得られます。", "page-staking-benefits-2-title": "セキュリティの向上", "page-staking-benefits-2-description": "より多くのETHがステーキングされるにつれて、ネットワークの大多数を制御により多くの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-description": "ステーキングとは、バリデータソフトウェアを有効化するために32 ETHをデポジットすることです。バリデータとして、データの保存、トランザクションの処理、ブロックチェーンへ新規ブロック追加の責任を負います。これにより、イーサリアムの安全性が保たれ、同時にステーカーはETHの報酬を獲得することができます。", "page-staking-hero-title": "ETHのステーキング方法", "page-staking-hero-header": "イーサリアムを保護しつつ、報酬を獲得", - "page-staking-hero-subtitle": "ステーキングは、イーサリアムエコシステムの公共善です。ネットワークのセキュリティ確保に貢献しつつ、報酬を得ることができます。", + "page-staking-hero-subtitle": "任意の額のETHを持つユーザーは誰でも、このプロセスでネットワークの安全性の確保に貢献でき、報酬を獲得することができます。", "page-staking-dropdown-home": "ステーキングホーム", "page-staking-dropdown-solo": "ソロステーキング", "page-staking-more-on-solo": "ソロステーキングの詳細", @@ -44,7 +44,6 @@ "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": "下記のオプションを読み、ご自身に合ったもの、またネットワークに最善のものを選んでください。", @@ -71,15 +70,15 @@ "page-staking-hierarchy-pools-pill-3": "シンプル", "page-staking-hierarchy-pools-pill-4": "人気", "page-staking-hierarchy-pools-p1": "32 ETHを持たない、またはステーキングしたくない方には、プールが利用できます。", - "page-staking-hierarchy-pools-p2": "ステーキングプールの多くは、「流動性ステーキング」と呼ばれるステーキングされたETHを表すERC-20流動性トークンが含まれます。", - "page-staking-hierarchy-pools-p3": "流動性ステーキングでは、いつでも簡単に終了でき、トークンスワップと同じように簡単にステーキングができます。このオプションは、ユーザー自身のイーサリアムウォレットに資産を保有できます。", + "page-staking-hierarchy-pools-p2": "ステーキングプールの多くは、「流動性ステーキング」と呼ばれるステーキングされたETHを表すERC-20流動性トークンが含まれます。", + "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を保有したくない場合、多くの中央集権型取引所はステーキングサービスを提供しています。これらのサービスは代替として、最小限の監督や手間で、報酬を得ることができます。", "page-staking-hierarchy-cex-p2": "ここでのトレードオフは、中央集権型プロバイダが大量のバリデータを実行するためにETHの大規模プールを形成してしまうことです。 これは大きな中央集権型のターゲットと障害点を作成し、ネットワークが攻撃やバグに対して脆弱になるため、ネットワークとそのユーザーにとって危険性が高まります。", - "page-staking-hierarchy-cex-p3": "ご自身で鍵を保有したくない場合、これらのオプションを使うことができるため大丈夫ですが、ウォレットページを参照してみてください。 ご自身の資金に対して真の所有権を得る方法を学ぶことができます。ご自身の準備ができたら、自己所有型のプールステーキングサービスを試して、ステーキングをレベルアップしてください。", + "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でステーキングに参加することができ、バリデータ鍵の生成は不要で、標準的なインターネット接続以上のハードウェア要件はありません。流動性トークンにより、ステーキングを辞めることがプロトコルレベルで可能になっています。これらのメリットにご興味がある場合は、ステーキングプールの利用が適しているかもしれません。", @@ -174,8 +173,8 @@ "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とバリデータ報酬のシェアを表す1つ以上の流動性トークンを提供", - "page-staking-section-comparison-pools-rewards-li3": "流動性トークンは、自分のウォレットへ保有でき、分散型金融(DeFi)での使え、やめる場合は売却できる", + "page-staking-section-comparison-pools-rewards-li2": "多くのステーキングプールサービスは、ステーキングしたETHとバリデータ報酬のシェアを表す1つ以上の流動性トークンを提供", + "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を失うペナルティが課せられる", @@ -183,11 +182,11 @@ "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-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-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": "具体的なサービス内容は異なりますが、その他の管理は委任", @@ -208,16 +207,13 @@ "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年11月) ", "page-staking-further-reading-author-vitalik-buterin": "Vitalik Buterin", "page-staking-further-reading-2-link": "Serenity設計原理", - "page-staking-further-reading-3-link": "プルーフ・オブ・ステークに関するよくある質問(2017年12月) ", "page-staking-further-reading-4-link": "Eth2ニュース", "page-staking-further-reading-4-author": "Ben Edgington", "page-staking-further-reading-5-link": "No.33ファイナライズ、イーサリアムコンセンサスレイヤー(2022年1月) ", "page-staking-further-reading-5-author": "Danny Ryan", "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ナレッジベース", diff --git a/src/intl/ja/page-upgrades.json b/src/intl/ja/page-upgrades.json index cbf2c785a8c..080a172f3b7 100644 --- a/src/intl/ja/page-upgrades.json +++ b/src/intl/ja/page-upgrades.json @@ -6,6 +6,7 @@ "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": "シャーディング", From 89ff1b38a23ca07f62b9a92c062b8c4dfede1370 Mon Sep 17 00:00:00 2001 From: Joshua <62268199+minimalsm@users.noreply.github.com> Date: Fri, 3 May 2024 12:52:49 +0100 Subject: [PATCH 2/6] Fix markdown issues --- public/content/translations/ja/about/index.md | 2 +- .../contributing/design-principles/index.md | 2 +- .../consensus-mechanisms/pos/faqs/index.md | 2 +- .../docs/data-and-analytics/index.md | 2 +- .../developers/docs/intro-to-ether/index.md | 6 +- .../ja/developers/docs/mev/index.md | 2 +- .../developers/docs/networking-layer/index.md | 8 +- .../nodes-and-clients/archive-nodes/index.md | 2 +- .../nodes-and-clients/light-clients/index.md | 2 +- .../docs/scaling/sidechains/index.md | 2 +- .../docs/scaling/zk-rollups/index.md | 4 +- .../formal-verification/index.md | 2 +- .../docs/smart-contracts/testing/index.md | 8 +- .../docs/smart-contracts/upgrading/index.md | 92 +- .../docs/standards/tokens/erc-4626/index.md | 2 +- .../ja/developers/docs/transactions/index.md | 4 +- .../index.md | 2 +- .../tutorials/all-you-can-cache/index.md | 960 ------------------ .../create-and-deploy-a-defi-app/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../erc-721-vyper-annotated-code/index.md | 2 +- .../tutorials/erc20-annotated-code/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../how-to-use-tellor-as-your-oracle/index.md | 2 +- .../how-to-write-and-deploy-an-nft/index.md | 2 +- .../logging-events-smart-contracts/index.md | 2 +- .../index.md | 2 +- .../index.md | 4 +- .../secure-development-workflow/index.md | 2 +- .../developers/tutorials/short-abi/index.md | 2 +- .../index.md | 2 +- .../index.md | 2 +- .../index.md | 3 +- .../token-integration-checklist/index.md | 4 +- .../index.md | 2 +- .../uniswap-v2-annotated-code/index.md | 2 +- .../tutorials/using-websockets/index.md | 2 +- .../index.md | 2 +- .../tutorials/yellow-paper-evm/index.md | 6 +- .../translations/ja/enterprise/index.md | 2 +- .../how-to-revoke-token-access/index.md | 12 +- .../ja/roadmap/future-proofing/index.md | 2 +- 50 files changed, 113 insertions(+), 1074 deletions(-) delete mode 100644 public/content/translations/ja/developers/tutorials/all-you-can-cache/index.md diff --git a/public/content/translations/ja/about/index.md b/public/content/translations/ja/about/index.md index cc19161716e..ee4b4947dcd 100644 --- a/public/content/translations/ja/about/index.md +++ b/public/content/translations/ja/about/index.md @@ -94,7 +94,7 @@ ethereum.orgコアチームは、私たちの取り組みへのアクセスを **いかがでしょうか?**ロードマップに関するフィードバックをお待ちしております。私たちが取り組むべきことについてご意見があれば、お知らせください。 コミュニティからのアイデアやPRをお待ちしています。 -**参加を希望されますか?** [貢献の詳細](/contributing/)をご参照ください。[Twitter](https://twitter.com /ethdotorg)で連絡いただくか、[Discordサーバー](https://discord.gg/ethereum-org)のコミュニティディスカッションに参加してください。 +**参加を希望されますか?** [貢献の詳細](/contributing/)をご参照ください。[Twitter](https://twitter.com/ethdotorg)で連絡いただくか、[Discordサーバー](https://discord.gg/ethereum-org)のコミュニティディスカッションに参加してください。 ## デザイン原則 {#design-principles} diff --git a/public/content/translations/ja/contributing/design-principles/index.md b/public/content/translations/ja/contributing/design-principles/index.md index 0fe749329c6..8bd6320d0e7 100644 --- a/public/content/translations/ja/contributing/design-principles/index.md +++ b/public/content/translations/ja/contributing/design-principles/index.md @@ -10,7 +10,7 @@ description: ethereum.orgのデザインとコンテンツに関する原則 本原則は、サイトの見た目、雰囲気、掲載するコンテンツに関するものです。 -[etherem.orgへの貢献にあたって、まずはこちら](/contributing/)を読んでください。 +[ethereum.orgへの貢献にあたって、まずはこちら](/contributing/)を読んでください。 ## デザイン原則とは {#ways-to-contribute} diff --git a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/faqs/index.md b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/faqs/index.md index 14cb7a577f5..a014f3b81e1 100644 --- a/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/faqs/index.md +++ b/public/content/translations/ja/developers/docs/consensus-mechanisms/pos/faqs/index.md @@ -26,7 +26,7 @@ lang: ja プルーフ・オブ・ステークのネットワークに含まれる各ノードは、ごくわずかの電力しか消費しません。 あるサードパーティ調査によれば、イーサリアムにおけるプルーフ・オブ・ステークのネットワーク全体で消費される電力は年間0.0026TWhであり、米国のゲーム用途の電力消費量と比較するとおよそ1万3,000分の1に過ぎません。 -[イーサリアムのエネルギー消費についての詳細](energy-consumption/) +[イーサリアムのエネルギー消費についての詳細](/energy-consumption/) ## プルーフ・オブ・ステークは安全ですか? {#is-pos-secure} diff --git a/public/content/translations/ja/developers/docs/data-and-analytics/index.md b/public/content/translations/ja/developers/docs/data-and-analytics/index.md index faa168f8b6f..3de8e90af76 100644 --- a/public/content/translations/ja/developers/docs/data-and-analytics/index.md +++ b/public/content/translations/ja/developers/docs/data-and-analytics/index.md @@ -31,7 +31,7 @@ lang: ja ## クライアントの多様性 [クライアントの多様性](/developers/docs/nodes-and-clients/client-diversity/)は、バグや脆弱性に対する回復力を提供します。そのため、イーサリアムネットワーク全体の健全性にとって重要です。 現在、 -clientdiversity.org[rated.network](https://www.rated.network)、[execution-diversity.info](https://execution-diversity.info/)、[Ethernodes](https://ethernodes.org/)など、いくつかのクライアント多様性ダッシュボードが存在します。

    +[clientdiversity.org](https://clientdiversity.org/)、[rated.network](https://www.rated.network)、[execution-diversity.info](https://execution-diversity.info/)、[Ethernodes](https://ethernodes.org/)など、いくつかのクライアント多様性ダッシュボードが存在します。 diff --git a/public/content/translations/ja/developers/docs/intro-to-ether/index.md b/public/content/translations/ja/developers/docs/intro-to-ether/index.md index b227607af2f..634a53bf682 100644 --- a/public/content/translations/ja/developers/docs/intro-to-ether/index.md +++ b/public/content/translations/ja/developers/docs/intro-to-ether/index.md @@ -24,11 +24,7 @@ lang: ja イーサ暗号通貨は、イーサリアムのコンピューティング能力の価格設定メカニズムに対応しています。 トランザクションを行うには、ブロックチェーン上でトランザクションを認識してもらうためにイーサを支払う必要があります。 これらの使用料は[ガス代](/developers/docs/gas/)として知られており、ガス代は処理を実行するために必要な計算力の量と、その時のネットワーク全体の計算力の需要により決まります。 -そのため、悪意のある分散型アプリ(Dapp)が無限ループを送信したとしても、最終的には保有しているイーサを使い果たしてトランザクションが終了し、ネットワークが正常に戻ることになります。 - -[広く一般的](https://www.reuters.com/article/us-crypto-currencies-lending-insight-idUSKBN25M0GP#:~:text=price%20of%20ethereum)にイーサリアムとイーサが - -[混同](https://www.cnn.com/2021/03/14/tech/nft-art-buying/index.html#:~:text=price%20of%20ethereum)されますが、「イーサリアムの価格」について話されている時は、イーサの価格を意味します。

    +そのため、悪意のある分散型アプリ(Dapp)が無限ループを送信したとしても、最終的には保有しているイーサを使い果たしてトランザクションが終了し、ネットワークが正常に戻ることになります。[広く一般的](https://www.reuters.com/article/us-crypto-currencies-lending-insight-idUSKBN25M0GP#:~:text=price%20of%20ethereum)にイーサリアムとイーサが[混同](https://www.cnn.com/2021/03/14/tech/nft-art-buying/index.html#:~:text=price%20of%20ethereum)されますが、「イーサリアムの価格」について話されている時は、イーサの価格を意味します。 diff --git a/public/content/translations/ja/developers/docs/mev/index.md b/public/content/translations/ja/developers/docs/mev/index.md index cde64ddc8ef..8fbed65d21c 100644 --- a/public/content/translations/ja/developers/docs/mev/index.md +++ b/public/content/translations/ja/developers/docs/mev/index.md @@ -102,7 +102,7 @@ MEVは必ずしも絶対悪ではなく、イーサリアムにとってはよ ネットワークレイヤーにおいては、汎用フロントランナーやガス価格のオークションが頻繁に用いられるため(複数のフロントランナーが、次のブロックに追加されるトランザクションのガス代を吊り上げる競争を行う場合)、ネットワークの混雑が悪化するだけでなく、通常のトランザクションを実行したい他のすべてのユーザーにとってもガス代が上昇してしまいます。 -MEVは、ブロック _内部__における影響に加えて、複数のブロック_間_においても悪影響をもたらす場合があります。 特定のブロック内において獲得できるMEVが標準的なブロック報酬を大きく上回る場合、バリデータにとっては、ブロックを再編成し、バリデータ自身がMEVを獲得しようというインセンティブが発生しうるため、ブロックチェーンの再編成を促し、コンセンサスの安定性が損なわれる可能性があります。

    +MEVは、ブロック _内部__における影響に加えて、複数のブロック_間_においても悪影響をもたらす場合があります。 特定のブロック内において獲得できるMEVが標準的なブロック報酬を大きく上回る場合、バリデータにとっては、ブロックを再編成し、バリデータ自身がMEVを獲得しようというインセンティブが発生しうるため、ブロックチェーンの再編成を促し、コンセンサスの安定性が損なわれる可能性があります。 このブロックチェーンが再編成される可能性は、 [すでにビットコインのブロックチェーンにおいて発生しています](https://dl.acm.org/doi/10.1145/2976749.2978408)。 ビットコインのブロック報酬が半減し、ブロック報酬においてトランザクション手数料が占める割合がますます大きくなると、マイナーにとっては、次のブロックで得られる報酬よりも、より高額な手数料が期待できる過去のブロックを再採掘する方が経済的に合理的である状況が発生します。 MEVの抽出が一般化した場合、イーサリアムにおいても類似の状況が発生し、イーサリアム・ブロックチェーンの健全性が損なわれる可能性があります。 diff --git a/public/content/translations/ja/developers/docs/networking-layer/index.md b/public/content/translations/ja/developers/docs/networking-layer/index.md index 75046040868..ec1245c782e 100644 --- a/public/content/translations/ja/developers/docs/networking-layer/index.md +++ b/public/content/translations/ja/developers/docs/networking-layer/index.md @@ -152,4 +152,10 @@ SSZは、シンプル・シリアライゼーションの略です。 SSZは、 ## 参考文献 {#further-reading} -[DevP2P](https://github.com/ethereum/devp2p) [LibP2p](https://github.com/libp2p/specs) [コンセンサスレイヤーネットワークの仕様](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure) カデムリアからdiscv5[discv5](https://vac.dev/kademlia-to-discv5) [カデムリアペーパー](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf) [Ethereumピアツーピア入門](https://p2p.paris/en/talks/intro-ethereum-networking/) [eth1eth2の関係](http://ethresear.ch/t/eth1-eth2-client-relationship/7248) [マージとeth2クライアントの詳細に関するビデオ](https://www.youtube.com/watch?v=zNIrIninMgg)

    +- [DevP2P](https://github.com/ethereum/devp2p) +- [LibP2p](https://github.com/libp2p/specs) +- [コンセンサスレイヤーネットワークの仕様](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md#enr-structure) +- カデムリアからdiscv5[discv5](https://vac.dev/kademlia-to-discv5) +- [カデムリアペーパー](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf) +- [Ethereumピアツーピア入門](https://p2p.paris/en/talks/intro-ethereum-networking/) [eth1eth2の関係](http://ethresear.ch/t/eth1-eth2-client-relationship/7248) +- [マージとeth2クライアントの詳細に関するビデオ](https://www.youtube.com/watch?v=zNIrIninMgg) diff --git a/public/content/translations/ja/developers/docs/nodes-and-clients/archive-nodes/index.md b/public/content/translations/ja/developers/docs/nodes-and-clients/archive-nodes/index.md index c9d2a6df32d..c850d1e148b 100644 --- a/public/content/translations/ja/developers/docs/nodes-and-clients/archive-nodes/index.md +++ b/public/content/translations/ja/developers/docs/nodes-and-clients/archive-nodes/index.md @@ -56,7 +56,7 @@ sidebarDepth: 2 ## 推奨実行環境 -アーカイブノードは、[ノードの実行における一般的な推奨事項](/developers/docs/nodes-and-clients/run-a-node/)とは異なり、ハードウェアとメンテナンスの要件がより厳しくなっています。 そのため、エリゴンの[主要な機能](https://github.com/ledgerwatch/erigon#key-features)を考慮すると、[エリゴン](/developers/docs/nodes- and-clients/#erigon)のクライアント実装を使うのが最も実用的であると言えます。 +アーカイブノードは、[ノードの実行における一般的な推奨事項](/developers/docs/nodes-and-clients/run-a-node/)とは異なり、ハードウェアとメンテナンスの要件がより厳しくなっています。 そのため、エリゴンの[主要な機能](https://github.com/ledgerwatch/erigon#key-features)を考慮すると、[エリゴン](/developers/docs/nodes-and-clients/#erigon)のクライアント実装を使うのが最も実用的であると言えます。 ### ハードウェア diff --git a/public/content/translations/ja/developers/docs/nodes-and-clients/light-clients/index.md b/public/content/translations/ja/developers/docs/nodes-and-clients/light-clients/index.md index 1cb3e620135..587be2b2d34 100644 --- a/public/content/translations/ja/developers/docs/nodes-and-clients/light-clients/index.md +++ b/public/content/translations/ja/developers/docs/nodes-and-clients/light-clients/index.md @@ -49,7 +49,7 @@ lang: ja 現時点では、これらはまだ本番環境で使用できるものではありません。 -また、ライトクライアントがイーサリアムのデータにアクセスする方法の改善にも、多くの作業が必要です。 現状、ライトクライアントは、クライアント/サーバーモデルを使用したフルノードへのRPCリクエストが必要ですが、将来的には、[ポータルネットワーク](https://www. ethportal.net/)などのピアツーピアのゴシッププロトコルを使用して、ライトクライアントに対してデータを提供できるようになります。 +また、ライトクライアントがイーサリアムのデータにアクセスする方法の改善にも、多くの作業が必要です。 現状、ライトクライアントは、クライアント/サーバーモデルを使用したフルノードへのRPCリクエストが必要ですが、将来的には、[ポータルネットワーク](https://www.ethportal.net/)などのピアツーピアのゴシッププロトコルを使用して、ライトクライアントに対してデータを提供できるようになります。 [バークルツリー](/roadmap/verkle-trees/)や[ステートレス](/roadmap/statelessness/)などの[ロードマップ](/roadmap/)アイテムの導入により、ライトクライアントのセキュリティ保証もフルクライアントと同等になるでしょう。 diff --git a/public/content/translations/ja/developers/docs/scaling/sidechains/index.md b/public/content/translations/ja/developers/docs/scaling/sidechains/index.md index 8a2c888f018..fc1bccae6a1 100644 --- a/public/content/translations/ja/developers/docs/scaling/sidechains/index.md +++ b/public/content/translations/ja/developers/docs/scaling/sidechains/index.md @@ -60,7 +60,7 @@ sidebarDepth: 3 複数のプロジェクトにおいて、Dappと統合できるサイドチェーン実装が提供されています。 -- [Polygon PoS ](https://polygon.technology/solutions/polygon-pos) +- [Polygon PoS](https://polygon.technology/solutions/polygon-pos) - [Skale](https://skale.network/) - [Gnosis Chain(旧 xDai)](https://www.gnosischain.com/) - [Loom Network](https://loomx.io/) diff --git a/public/content/translations/ja/developers/docs/scaling/zk-rollups/index.md b/public/content/translations/ja/developers/docs/scaling/zk-rollups/index.md index c4f0f6b0bfc..5517233dcba 100644 --- a/public/content/translations/ja/developers/docs/scaling/zk-rollups/index.md +++ b/public/content/translations/ja/developers/docs/scaling/zk-rollups/index.md @@ -234,7 +234,7 @@ FinematicsによるZKロールアップの説明動画をご覧ください: - **[zkEVM](https://github.com/privacy-scaling-explorations/zkevm-specs)** - _zkEVMは、イーサリアム・ファウンデーションによる資金提供に基づき、EVM互換のZKロールアップならびにイーサリアムブロックに対する有効性証明を生成するメカニズムを開発するプロジェクトです。_ -- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)** - _イーサリアムメインネット上の分散型ゼロ知識ロールアップであり、ゼロ知識証明による検証が可能なスマートコントラクトなど、イーサリアムのトランザクションを透明性が高い方法で実行するゼロ知識イーサリアム仮想マシン(zkEVM)の開発に取り組んでいます。

    +- **[Polygon zkEVM](https://polygon.technology/solutions/polygon-zkevm)** - _イーサリアムメインネット上の分散型ゼロ知識ロールアップであり、ゼロ知識証明による検証が可能なスマートコントラクトなど、イーサリアムのトランザクションを透明性が高い方法で実行するゼロ知識イーサリアム仮想マシン(zkEVM)の開発に取り組んでいます。_ - **[Scroll](https://scroll.io/blog/zkEVM)** - _Scrollは、ネイティブのzkEVMを搭載したイーサリアムのレイヤー2ソリューションを開発中のテクノロジー企業です。_ @@ -242,7 +242,7 @@ FinematicsによるZKロールアップの説明動画をご覧ください: - **[ZKSync](https://docs.zksync.io/)** - _ZkSync Eraは、Matter Labsが独自開発したzkEVMを搭載するEVM互換のゼロ知識ロールアップです_。 -- **[Starknet](https://starkware.co/starknet/)** - _StarkNetは、StarkWareによって開発されたEVM互換のレイヤー2スケーリングソリューションです。_
+- **[Starknet](https://starkware.co/starknet/)** - _StarkNetは、StarkWareによって開発されたEVM互換のレイヤー2スケーリングソリューションです。_ ## ZKロールアップの参考文献 {#further-reading-on-zk-rollups} diff --git a/public/content/translations/ja/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/ja/developers/docs/smart-contracts/formal-verification/index.md index 3dd8f86f527..88e894bf98c 100644 --- a/public/content/translations/ja/developers/docs/smart-contracts/formal-verification/index.md +++ b/public/content/translations/ja/developers/docs/smart-contracts/formal-verification/index.md @@ -44,7 +44,7 @@ lang: ja 形式的仕様記述により、プログラム実行の正しさを数学的に論証することが可能となります。 形式モデルと同様、形式仕様記述は高水準のプロパティもしくはスマートコントラクトの実装の低水準の挙動をとらえることができます。 -形式仕様記述はプログラム論理を用いて導出され、それによってプログラムのプロパティが形式的に論証できるようになります。 プログラム論理が備えている形式規則により、プログラムのしかるべき挙動が(数学的に)表現されます。 [到達可能性論理 ](https://en.wikipedia.org/wiki/Reachability_problem)、[時相論理](https://en.wikipedia.org/wiki/Temporal_logic)、[ホーア論理](https://en.wikipedia.org/wiki/Hoare_logic)を含む様々なプログラム論理が形式仕様記述に用いられます。 +形式仕様記述はプログラム論理を用いて導出され、それによってプログラムのプロパティが形式的に論証できるようになります。 プログラム論理が備えている形式規則により、プログラムのしかるべき挙動が(数学的に)表現されます。 [到達可能性論理](https://en.wikipedia.org/wiki/Reachability_problem)、[時相論理](https://en.wikipedia.org/wiki/Temporal_logic)、[ホーア論理](https://en.wikipedia.org/wiki/Hoare_logic)を含む様々なプログラム論理が形式仕様記述に用いられます。 スマートコントラクトの形式仕様記述は**高水準**な仕様記述と**低水準**な仕様記述に大別されます。 いずれの場合でも、分析対象のシステムのプロパティを適切かつ一義的に記述できなければなりません。 diff --git a/public/content/translations/ja/developers/docs/smart-contracts/testing/index.md b/public/content/translations/ja/developers/docs/smart-contracts/testing/index.md index 0d861f36794..d6a9f9ccab9 100644 --- a/public/content/translations/ja/developers/docs/smart-contracts/testing/index.md +++ b/public/content/translations/ja/developers/docs/smart-contracts/testing/index.md @@ -149,8 +149,8 @@ Solidityスマートコントラクト用の単体テストフレームワーク 単体テストでは、コントラクトの関数を個別にデバッグしましたが、統合テストでは、スマートコントラクトのコンポーネント全体を評価します。 統合テストでは、スマートコントラクト間の呼び出しで発生する問題や、同じスマートコントラクト内の異なる関数間のやり取りで発生する問題を検出できます。 例えば、[継承](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance)や依存性注入などの機能が正しく動作するかどうかを確認するのに役立ちます。 -統合テストは、コントラクトがモジュラー型アーキテクチャを採用していたり、実行中に他のオンチェーンコントラクトと接続する場合に有用です。 統合テストを実行する方法の1つは、([Forge](https://book.getfoundry.sh/forge/fork-testing)や[Hardhat](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks)などのツールを使用して)ブロックチェーンの特定のブロックの高さで -フォークすることです。そして、デプロイされたコントラクトと作成したコントラクトのやり取りをシミュレートします。

+統合テストは、コントラクトがモジュラー型アーキテクチャを採用していたり、実行中に他のオンチェーンコントラクトと接続する場合に有用です。 統合テストを実行する方法の1つは、([Forge](https://book.getfoundry.sh/forge/fork-testing)や[Hardhat](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks)などのツールを使用して)ブロックチェーンの特定のブロックの高さで +フォークすることです。そして、デプロイされたコントラクトと作成したコントラクトのやり取りをシミュレートします。 フォークされたブロックチェーンは、メインネットと同様の仕組みで動作し、アカウントに状態と残高が関連付けられています。 しかし、サンドボックス化されたローカル開発環境としてのみ機能します。例えば、トランザクションに実際のETHは必要なく、変更しても実際のイーサリアムプロトコルに影響することはありません。 @@ -168,7 +168,7 @@ Solidityスマートコントラクト用の単体テストフレームワーク 静的アナライザーは、スマートコントラクトのソースコードを受け取って解析し、コントラクトがプロパティを満たしているかどうかを判断します。 動的解析とは異なり、静的解析では、コントラクトを実行して正確性の解析を行うことはありません。 静的解析は、スマートコントラクトが実行中にたどる可能性のあるすべてのパスを推論します。つまり、ソースコードの構造を調べて、コントラクトの操作がランタイムで何を意味するかを決定します。 -コントラクトで静的解析を実行する一般的な手法として、[リンティング](https://www.perforce.com/blog/qac/what-lint-code-and-why-linting- important)と[静的テスト](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis)があります。 どちらの手法も、コンパイラによって出力された[抽象構文木](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree)や[制御フローグラフ](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/)など、コントラクト実行における低レベル表現の解析が必要です。 +コントラクトで静的解析を実行する一般的な手法として、[リンティング](https://www.perforce.com/blog/qac/what-lint-code-and-why-linting-important)と[静的テスト](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis)があります。 どちらの手法も、コンパイラによって出力された[抽象構文木](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree)や[制御フローグラフ](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/)など、コントラクト実行における低レベル表現の解析が必要です。 静的解析は、安全でない構造の使用や構文エラー、コントラクトコード内のコーディング規約違反などの安全性の問題を検出するには有効です。 しかし、より深い脆弱性の検出が不得意であることが知られており、過剰な誤検出が生じる可能性があります。 @@ -253,7 +253,7 @@ Solidityスマートコントラクト用の単体テストフレームワーク 上記のように、厳密なテストをしても、コントラクトにバグがないとは言い切れません。 形式検証によるアプローチは、正確性をより強力に保証できますが、現時点では使用が難しく、かなりのコストがかかります。 -第三者によるコードレビューを受ければ、コントラクトの脆弱性を発見できる可能性が高くなります。 第三者にコントラクトを分析してもらうには、[スマートコントラクトの監査](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/)および[バグ報奨金](https://medium. com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)のいずれかの方法があります。 +第三者によるコードレビューを受ければ、コントラクトの脆弱性を発見できる可能性が高くなります。 第三者にコントラクトを分析してもらうには、[スマートコントラクトの監査](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/)および[バグ報奨金](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)のいずれかの方法があります。 監査は、スマートコントラクトのセキュリティ上の欠陥や不健全な開発プラクティスを探し出す経験豊かな監査人が行います。 監査では、コードベース全体の手動レビューだけでなく、テストや形式検証も行われるのが一般的です。 diff --git a/public/content/translations/ja/developers/docs/smart-contracts/upgrading/index.md b/public/content/translations/ja/developers/docs/smart-contracts/upgrading/index.md index e14b5882411..a773a66f191 100644 --- a/public/content/translations/ja/developers/docs/smart-contracts/upgrading/index.md +++ b/public/content/translations/ja/developers/docs/smart-contracts/upgrading/index.md @@ -74,53 +74,51 @@ lang: ja [Solidityのドキュメント](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#delegatecall-callcode-and-libraries)の引用: -> **delegatecall**という特別な可変メッセージ呼び出しがあります。**delegatecall**は、ターゲットアドレスのコードが、呼び出し側コントラクトのコンテキスト(例: アドレス)で実行されることを除けば、メッセージ呼び出しと同一です。また、`msg.sender`と`msg.value`の値は変わりません。__これは、コントラクトが実行時に、別のアドレスからコードを動的にロードできることを意味します。 つまり、ストレージ、現在のアドレス、残高は呼び出し元のコントラクトを参照しており、 コードのみが呼び出し先のアドレスから取得されます_。

-> -> プロキシコントラクトには、`fallback`関数が組み込まれているため、ユーザーが関数を呼び出すたびに`delegatecall`をが呼び出されていることがわかります。 Solidityプログラミングでは、コントラクトの関数呼び出しが指定した関数と一致しない場合、[フォールバック関数](https://docs.soliditylang.org/en/latest/contracts.html#fallback-function)が実行されます。 -> -> プロキシパターンを機能させるには、プロキシコントラクトがサポートしていない関数の呼び出しを処理する方法を指定したカスタムフォールバック関数を作成する必要があります。 この場合、プロキシのフォールバック関数は、delegatecallを起動し、ユーザーのリクエストを現在のロジックコントラクト実装に切り替えるようにプログラムされます。 -> -> プロキシコントラクトは、デフォルトでは不変ですが、新しいロジックコントラクトを作成することで、ビジネスロジックを更新することができます。 アップグレードを実行するには、プロキシコントラクトが参照しているロジックコントラクトのアドレスを変更する必要があります。 -> -> プロキシコントラクトが新しいロジックコントラクトを参照するように変更することで、ユーザーがプロキシコントラクトの関数を呼び出すときに実行されるコードを変更することができます。 これにより、ユーザーは新しいコントラクトとやり取りする必要がなくなり、コントラクトのロジックをアップグレードすることができます。 -> -> プロキシパターンは、コントラクトのマイグレーションを容易にすることから、アップグレードで広く普及している方法です。 ただし、プロキシパターンの使用は、より複雑なため、不適切に扱うと[関数セレクタークラッシュ](https://medium.com/nomic-foundation-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357)などの重大な欠陥を引き起こす可能性があります。 -> -> [プロキシパターンの詳細](https://blog.openzeppelin.com/proxy-patterns/) -> -> ### アップグレードメカニズム #4: ストラテジパターン {#strategy-pattern} -> -> このテクニックは、[ストラテジパターン](https://en.wikipedia.org/wiki/Strategy_pattern)に基づいています。ストラテジパターンとは、特定の機能を実装するために、他のプログラムとインターフェースするソフトウェアプログラムを作成するよう奨励するものです。 ストラテジパターンをイーサリアム開発に適用すると、他のコントラクトから関数を呼び出すスマートコントラクトを構築することになります。 -> -> この場合、メインコントラクトはコアとなるビジネスロジックを持ちますが、他のスマートコントラクト(「サテライトコントラクト」) のインターフェースで、特定の機能を実行します。 このメインコントラクトには、各サテライトコントラクトのアドレスが格納されており、サテライトコントラクトの実装を切り替えることができます。 -> -> 新しいサテライトコントラクトを構築して、メインコントラクトにその新しいコントラクトアドレスを設定することで、 スマートコントラクトの_ストラテジ_を変更(つまり、新しいロジックを実装)することができます。 -> -> 先ほどのプロキシパターンと似ていますが、ストラテジパターンでは、ユーザーがやり取りするメインコントラクトがビジネスロジックを持っています。これは、プロキシパターンと異なる点です。 このパターンを使用すると、コアインフラストラクチャに影響を与えることなく、スマートコントラクトに限定的な変更を加えることができます。 -> -> このパターンの欠点は、マイナーアップグレードにしか対応できないことです。 また、メインコントラクトが(ハッキングなどにより)侵害された場合は、このアップグレード方法は使用できません。 -> -> ### アップグレードメカニズム #5: ダイヤモンドパターン {#diamond-pattern} -> -> ダイヤモンドパターンは、プロキシパターンの改良版と言えます。 ダイヤモンドパターンでは、ダイヤモンドプロキシコントラクトが、関数呼び出しを複数のロジックコントラクトに委任できることができます。これは、プロキシパターンではできなかったことです。 -> -> ダイヤモンドパターンのロジックコントラクトを_ファセット_と呼びます。 ダイヤモンドパターンを機能させるには、各ファセットアドレスに[関数セレクタ](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector)をマップするマッピングを、プロキシコントラクト内に作成する必要があります。 -> -> ユーザーが関数を呼び出すと、プロキシコントラクトはマッピングをチェックして、その関数の実行を担当するファセットを見つけます。 次に、(フォールバック関数を使って)`delegatecall`を呼び出します。この呼び出しは、適切なロジックコントラクトにリダイレクトされます。 -> -> このダイヤモンドアップグレードパターンは、従来のプロキシアップグレードパターンに比べて、以下の利点があります。 -> -> 1. コード全体を変更しなくとも、コントラクトの一部をアップグレード可能。 プロキシパターンを使ってアップグレードすると、マイナーアップグレードであっても、新しいロジックコントラクトを最初から作成しなければなりません。 -> -> 2. すべてのスマートコントラクト(プロキシパターンで使用されるロジックコントラクトを含む)には、24KBのサイズ制限がある。この制限は、特に、多くの機能を必要とする複雑なコントラクトで適用されます。 ダイヤモンドパターンを使えば、関数を複数のロジックコントラクトに分割できるため、この問題を簡単に解決できます。 -> -> 3. プロキシパターンは、アクセス制御に対して、一括管理するアプローチを採用。 アップグレード機能にアクセスできるエンティティは、 コントラクト_全体_を変更することができます。 一方、ダイヤモンドパターンを使用することで、モジュールごとにアクセス許可を設定することができます。これにより、エンティティがスマートコントラクト内の特定の機能をアップグレードすることを制限できます。 -> -> [ダイヤモンドパターンの詳細](https://eip2535diamonds.substack.com/p/introduction-to-the-diamond-standard?s=w) -> -> ## スマートコントラクトのアップグレードにおけるメリットとデメリット {#pros-and-cons-of-upgrading-smart-contracts} -> -> +> **delegatecall**という特別な可変メッセージ呼び出しがあります。**delegatecall**は、ターゲットアドレスのコードが、呼び出し側コントラクトのコンテキスト(例: アドレス)で実行されることを除けば、メッセージ呼び出しと同一です。また、`msg.sender`と`msg.value`の値は変わりません。__これは、コントラクトが実行時に、別のアドレスからコードを動的にロードできることを意味します。 つまり、ストレージ、現在のアドレス、残高は呼び出し元のコントラクトを参照しており、 コードのみが呼び出し先のアドレスから取得されます_。 + +プロキシコントラクトには、`fallback`関数が組み込まれているため、ユーザーが関数を呼び出すたびに`delegatecall`をが呼び出されていることがわかります。 Solidityプログラミングでは、コントラクトの関数呼び出しが指定した関数と一致しない場合、[フォールバック関数](https://docs.soliditylang.org/en/latest/contracts.html#fallback-function)が実行されます。 + +プロキシパターンを機能させるには、プロキシコントラクトがサポートしていない関数の呼び出しを処理する方法を指定したカスタムフォールバック関数を作成する必要があります。 この場合、プロキシのフォールバック関数は、delegatecallを起動し、ユーザーのリクエストを現在のロジックコントラクト実装に切り替えるようにプログラムされます。 + +プロキシコントラクトは、デフォルトでは不変ですが、新しいロジックコントラクトを作成することで、ビジネスロジックを更新することができます。 アップグレードを実行するには、プロキシコントラクトが参照しているロジックコントラクトのアドレスを変更する必要があります。 + +プロキシコントラクトが新しいロジックコントラクトを参照するように変更することで、ユーザーがプロキシコントラクトの関数を呼び出すときに実行されるコードを変更することができます。 これにより、ユーザーは新しいコントラクトとやり取りする必要がなくなり、コントラクトのロジックをアップグレードすることができます。 + +プロキシパターンは、コントラクトのマイグレーションを容易にすることから、アップグレードで広く普及している方法です。 ただし、プロキシパターンの使用は、より複雑なため、不適切に扱うと[関数セレクタークラッシュ](https://medium.com/nomic-foundation-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357)などの重大な欠陥を引き起こす可能性があります。 + +[プロキシパターンの詳細](https://blog.openzeppelin.com/proxy-patterns/) + +### アップグレードメカニズム #4: ストラテジパターン {#strategy-pattern} + +このテクニックは、[ストラテジパターン](https://en.wikipedia.org/wiki/Strategy_pattern)に基づいています。ストラテジパターンとは、特定の機能を実装するために、他のプログラムとインターフェースするソフトウェアプログラムを作成するよう奨励するものです。 ストラテジパターンをイーサリアム開発に適用すると、他のコントラクトから関数を呼び出すスマートコントラクトを構築することになります。 + +この場合、メインコントラクトはコアとなるビジネスロジックを持ちますが、他のスマートコントラクト(「サテライトコントラクト」) のインターフェースで、特定の機能を実行します。 このメインコントラクトには、各サテライトコントラクトのアドレスが格納されており、サテライトコントラクトの実装を切り替えることができます。 + +新しいサテライトコントラクトを構築して、メインコントラクトにその新しいコントラクトアドレスを設定することで、 スマートコントラクトの_ストラテジ_を変更(つまり、新しいロジックを実装)することができます。 + +先ほどのプロキシパターンと似ていますが、ストラテジパターンでは、ユーザーがやり取りするメインコントラクトがビジネスロジックを持っています。これは、プロキシパターンと異なる点です。 このパターンを使用すると、コアインフラストラクチャに影響を与えることなく、スマートコントラクトに限定的な変更を加えることができます。 + +このパターンの欠点は、マイナーアップグレードにしか対応できないことです。 また、メインコントラクトが(ハッキングなどにより)侵害された場合は、このアップグレード方法は使用できません。 + +### アップグレードメカニズム #5: ダイヤモンドパターン {#diamond-pattern} + +ダイヤモンドパターンは、プロキシパターンの改良版と言えます。 ダイヤモンドパターンでは、ダイヤモンドプロキシコントラクトが、関数呼び出しを複数のロジックコントラクトに委任できることができます。これは、プロキシパターンではできなかったことです。 + +ダイヤモンドパターンのロジックコントラクトを_ファセット_と呼びます。 ダイヤモンドパターンを機能させるには、各ファセットアドレスに[関数セレクタ](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector)をマップするマッピングを、プロキシコントラクト内に作成する必要があります。 + +ユーザーが関数を呼び出すと、プロキシコントラクトはマッピングをチェックして、その関数の実行を担当するファセットを見つけます。 次に、(フォールバック関数を使って)`delegatecall`を呼び出します。この呼び出しは、適切なロジックコントラクトにリダイレクトされます。 + +このダイヤモンドアップグレードパターンは、従来のプロキシアップグレードパターンに比べて、以下の利点があります。 + +1. コード全体を変更しなくとも、コントラクトの一部をアップグレード可能。 プロキシパターンを使ってアップグレードすると、マイナーアップグレードであっても、新しいロジックコントラクトを最初から作成しなければなりません。 + +2. すべてのスマートコントラクト(プロキシパターンで使用されるロジックコントラクトを含む)には、24KBのサイズ制限がある。この制限は、特に、多くの機能を必要とする複雑なコントラクトで適用されます。 ダイヤモンドパターンを使えば、関数を複数のロジックコントラクトに分割できるため、この問題を簡単に解決できます。 + +3. プロキシパターンは、アクセス制御に対して、一括管理するアプローチを採用。 アップグレード機能にアクセスできるエンティティは、 コントラクト_全体_を変更することができます。 一方、ダイヤモンドパターンを使用することで、モジュールごとにアクセス許可を設定することができます。これにより、エンティティがスマートコントラクト内の特定の機能をアップグレードすることを制限できます。 + +[ダイヤモンドパターンの詳細](https://eip2535diamonds.substack.com/p/introduction-to-the-diamond-standard?s=w) + +## スマートコントラクトのアップグレードにおけるメリットとデメリット {#pros-and-cons-of-upgrading-smart-contracts} | メリット | デメリット | | ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | diff --git a/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md index b4167e42d27..7f52b265663 100644 --- a/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md +++ b/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md @@ -86,7 +86,7 @@ function deposit(uint256 assets, address receiver) public returns (uint256 share function maxMint(address receiver) public view returns (uint256) ``` -この関数は、`receiverによる1回のmint`の呼び出しにより、ミント可能なシェア数の上限を返します。 +この関数は、`receiver` による1回の [`mint`](#mint) の呼び出しにより、ミント可能なシェア数の上限を返します。 #### previewMint {#previewmint} diff --git a/public/content/translations/ja/developers/docs/transactions/index.md b/public/content/translations/ja/developers/docs/transactions/index.md index 7f1a9a9a89b..fa44d9e6c6b 100644 --- a/public/content/translations/ja/developers/docs/transactions/index.md +++ b/public/content/translations/ja/developers/docs/transactions/index.md @@ -99,7 +99,7 @@ Gethのようなイーサリアムクライアントは、この署名プロセ } ``` -- `raw`は、[再帰長プレフィックス(RLP)](/developers/docs/data- Structures-and-encoding/rlp)エンコード形式の署名されたトランザクション +- `raw`は、[再帰長プレフィックス(RLP)](/developers/docs/data-structures-and-encoding/rlp)エンコード形式の署名されたトランザクション - `tx`はJSON形式の署名されたトランザクション 署名ハッシュでトランザクションが送信者から送信され、ネットワークに送信されたことを暗号的に証明することができます。 @@ -176,7 +176,7 @@ Aliceのアカウントに **+1.0 ETH**振り込み ## 型付トランザクションエンベロープ(Typed Transaction Envelope) {#typed-transaction-envelope} -イーサリアムは当初、トランザクション形式は1つのみでした。 各トランザクションには、ノンス (nonce)、ガス代、ガスリミット、toアドレス、値、データ、v、r、sがあります。 これらのフィールドは、以下のように[RLPエンコード](/developers/docs/data- Structures-and-encoding/rlp/)されています。 +イーサリアムは当初、トランザクション形式は1つのみでした。 各トランザクションには、ノンス (nonce)、ガス代、ガスリミット、toアドレス、値、データ、v、r、sがあります。 これらのフィールドは、以下のように[RLPエンコード](/developers/docs/data-structures-and-encoding/rlp/)されています。 `RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])` diff --git a/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md index f93d3c828d3..207fbdf1fcc 100644 --- a/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md +++ b/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md @@ -6,7 +6,7 @@ lang: ja tags: - "python" - "web3.py" -skill: 初級 +skill: beginner published: 2020-09-08 source: Snake charmers sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/ diff --git a/public/content/translations/ja/developers/tutorials/all-you-can-cache/index.md b/public/content/translations/ja/developers/tutorials/all-you-can-cache/index.md deleted file mode 100644 index c02c1e1e0a1..00000000000 --- a/public/content/translations/ja/developers/tutorials/all-you-can-cache/index.md +++ /dev/null @@ -1,960 +0,0 @@ ---- -title: "キャッシュでできること" -description: ロールアップのトランザクションをより安くするキャッシュコントラクトの作成と使い方を学びます。 -author: Ori Pomerantz -tags: - - "レイヤー2" - - "キャッシュ" - - "ストレージ" -skill: 中級 -published: 2022-09-15 -lang: ja ---- - -ロールアップを使うと、トランザクションのバイトあたりのコストは、ストレージスロットのコストよりもはるかに高くなってしまいます。 そのため、オンチェーンに可能な限り多くの情報をキャッシュするほうが合理的です。 - -この記事では、複数回使用される可能性のあるパラメータの値をキャッシュして、(初回以降では) はるかに少ないバイト数で使えるようにするキャッシュコントラクトの作成および使用方法を学びます。 また、このキャッシュコントラクトを使用するチェーン上のコードを書く方法についても説明します。 - -記事を読まずにソースコードだけを確認したいならば、[こちら](https://github.com/qbzzt/20220915-all-you-can-cache)にあります。 開発スタックは、[Foundry](https://book.getfoundry.sh/getting-started/installation)を使っています。 - -## 設計の概要 {#overall-design} - -わかりやすくするために、すべてのトランザクションのパラメータは、`uint256`(32バイト長)であることとします。 トランザクションを受け取ると、次のように各パラメータをパースします。 - -1. 先頭のバイトが`0xFF`の場合、次の32バイトをパラメータの値として取得し、キャッシュに書き込む - -2. 先頭のバイトが`0xFE`の場合、次の32バイトをパラメータの値として取得するが、それをキャッシュに_書き込まない_。 - -3. その他の値の場合、上位4ビットを追加のバイト数として、下位4ビットをキャッシュキーの最上位ビットとして取得する。 以下に、いくつかの例を示します。 - - | calldataのバイト | キャッシュキー | - |:--------------- | --------:| - | 0x0F | 0x0F | - | 0x10,0x10 | 0x10 | - | 0x12,0xAC | 0x02AC | - | 0x2D,0xEA, 0xD6 | 0x0DEAD6 | - -## キャッシュ操作 {#cache-manipulation} - -[`Cache.sol`](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol)にキャッシュが実装されています。 一行ずつ見ていきましょう。 - -```solidity -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - - -contract Cache { - - bytes1 public constant INTO_CACHE = 0xFF; - bytes1 public constant DONT_CACHE = 0xFE; -``` - -上記の定数は、すべての情報を提供し、それをキャッシュに書き込むかどうかを判断するのに使います。 キャッシュに書き込むには、2回の[`SSTORE`](https://www.evm.codes/#55)操作が必要になり、未使用のストレージスロットに対し、それぞれ22100ガスのコストが発生するので選択できるようにしています。 - -```solidity - - mapping(uint => uint) public val2key; -``` - -値とそのキーの間で[マッピング](https://www.geeksforgeeks.org/solidity-mappings/)をしています。 この情報は、トランザクションを送信する前に、値をエンコードするのに必要になります。 - -```solidity - // Location n has the value for key n+1, because we need to preserve - // zero as "not in the cache". - uint[] public key2val; -``` - -キーから値へのマッピングに配列が使えます。なぜなら、キーを割り当て、それを簡単に順次実行するためです。 - -```solidity - function cacheRead(uint _key) public view returns (uint) { - require(_key <= key2val.length, "Reading uninitialize cache entry"); - return key2val[_key-1]; - } // cacheRead -``` - -キャッシュから値を読み込みます。 - -```solidity - // Write a value to the cache if it's not there already - // Only public to enable the test to work - function cacheWrite(uint _value) public returns (uint) { - // If the value is already in the cache, return the current key - if (val2key[_value] != 0) { - return val2key[_value]; - } -``` - -同じ値をキャッシュに複数回入れるのは、無駄です。 値がすでに存在するならば、既存のキーを返します。 - -```solidity - // Since 0xFE is a special case, the largest key the cache can - // hold is 0x0D followed by 15 0xFF's. If the cache length is already that - // large, fail. - // 1 2 3 4 5 6 7 8 9 A B C D E F - require(key2val.length+1 < 0x0DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, - "cache overflow"); -``` - -これほどまでの大きなキャッシュを取得することは考えられません (約1.8\*1037のエントリーを保存するには約 1027TBが必要になります) 。 私はというと、[「常に640kBあれば十分だ」](https://quoteinvestigator.com/2011/09/08/640k-enough/)ということを覚えているくらいの年齢です。 このテストは安くできます。 - -```solidity - // Write the value using the next key - val2key[_value] = key2val.length+1; -``` - -(値からキーへ) 逆引できる検索を加えています。 - -```solidity - key2val.push(_value); -``` - -前方検索 (キーから値へ) を追加します。 連続して値を指定するため、最後の配列にある値の後に追加するだけです。 - -```solidity - return key2val.length; - } // cacheWrite -``` - -新しい値が格納されるセルである`key2val`の新しい長さを返します。 - -```solidity - function _calldataVal(uint startByte, uint length) - private pure returns (uint) -``` - -この関数は、任意の長さcalldata (ワードサイズは最大32バイト) から値を読み取ります。 - -```solidity - { - uint _retVal; - - require(length < 0x21, - "_calldataVal length limit is 32 bytes"); - require(length + startByte <= msg.data.length, - "_calldataVal trying to read beyond calldatasize"); -``` - -この関数は内部関数です。そのため、コードの残りの部分が正しく記述されていれば、これらのテストは必要ありません。 しかし、そんなにコストは掛からないため、テストをしてもよいかもしれません。 - -```solidity - assembly { - _retVal := calldataload(startByte) - } -``` - -これは、[Yul](https://docs.soliditylang.org/en/v0.8.16/yul.html)のコードです。 calldataから32バイトの値を読み取ります。 `startByte+32`より前にcalldataが停止した場合でも、EVM内で初期化されていない領域はゼロと見なされるため、機能します。 - -```solidity - _retVal = _retVal >> (256-length*8); -``` - -私たちは、必ずしも32バイトの値が欲しいわけではありません。 これで、余分なバイトを削除できます。 - -```solidity - return _retVal; - } // _calldataVal - - - // Read a single parameter from the calldata, starting at _fromByte - function _readParam(uint _fromByte) internal - returns (uint _nextByte, uint _parameterValue) - { -``` - -calldataからパラメータを1つ読み取ります。 パラメータの長さは、1バイトから33バイトまでの範囲です。そのため、読み取った値だけでなく、次のバイトの位置も返す必要があることに注意してください。 - -```solidity - // The first byte tells us how to interpret the rest - uint8 _firstByte; - - _firstByte = uint8(_calldataVal(_fromByte, 1)); -``` - -Solidityでは、バグを減らすために潜在的に危険な[暗黙の型変換](https://docs.soliditylang.org/en/v0.8.16/types.html#implicit-conversions)を禁止しています。 例えば、256ビットから8ビットへのダウングレードを明示的に行う必要があります。 - -```solidity - - // Read the value, but do not write it to the cache - if (_firstByte == uint8(DONT_CACHE)) - return(_fromByte+33, _calldataVal(_fromByte+1, 32)); - - // Read the value, and write it to the cache - if (_firstByte == uint8(INTO_CACHE)) { - uint _param = _calldataVal(_fromByte+1, 32); - cacheWrite(_param); - return(_fromByte+33, _param); - } - - // If we got here it means that we need to read from the cache - - // Number of extra bytes to read - uint8 _extraBytes = _firstByte / 16; -``` - -下位にある[ニブル](https://en.wikipedia.org/wiki/Nibble)を取得し、他のバイトと組み合わせてキャッシュから値を読み取ります。 - -```solidity - uint _key = (uint256(_firstByte & 0x0F) << (8*_extraBytes)) + - _calldataVal(_fromByte+1, _extraBytes); - - return (_fromByte+_extraBytes+1, cacheRead(_key)); - - } // _readParam - - - // Read n parameters (functions know how many parameters they expect) - function _readParams(uint _paramNum) internal returns (uint[] memory) { -``` - -パラメータの数は、calldata自体から取得できますが、私たちが呼び出す関数は、予期しているパラメータの数を知っています。 これは、関数を使って簡単に取得できます。 - -```solidity - // The parameters we read - uint[] memory params = new uint[](_paramNum); - - // Parameters start at byte 4, before that it's the function signature - uint _atByte = 4; - - for(uint i=0; i<_paramNum; i++) { - (_atByte, params[i]) = _readParam(_atByte); - } -``` - -必要な数のパラメータを読み込みます。 calldataの読み込みが終わると、`_readParams`は、呼び出しを戻します。 - -```solidity - - return(params); - } // readParams - - // For testing _readParams, test reading four parameters - function fourParam() public - returns (uint256,uint256,uint256,uint256) - { - uint[] memory params; - params = _readParams(4); - return (params[0], params[1], params[2], params[3]); - } // fourParam -``` - -Foundryの素晴らしい機能の一つは、Solidityでテストを作成できることです([後述するキャッシュのテストを参照](#testing-the-cache))。 そのため、単体テストが簡単に作成できます。 これは、4つのパラメータを読み取り、それらが正しいことをテストで検証できるように返す関数です。 - -```solidity - // Get a value, return bytes that will encode it (using the cache if possible) - function encodeVal(uint _val) public view returns(bytes memory) { -``` - -`encodeVal`は、オフチェーンコードがキャッシュを使用するcalldataを作るのを支援する関数です。 単一の値を受け取り、その値をエンコードしたバイト値で返します。 この関数は、`view`なのでトランザクションは必要なく、外部からの呼び出しにガス代はかかりません。 - -```solidity - uint _key = val2key[_val]; - - // The value isn't in the cache yet, add it - if (_key == 0) - return bytes.concat(INTO_CACHE, bytes32(_val)); -``` - -[EVM](/developers/docs/evm/)では、初期化されていないすべてのストレージはゼロであるとみなされます。 そのため、存在しない値のキーを検索すると、ゼロを受け取ります。 このケースにおいて、それをエンコードするバイトは `INTO_CACHE`であり、その後に実際の値が続きます (つまり次回は、キャッシュが使われます) 。 - -```solidity - // If the key is <0x10, return it as a single byte - if (_key < 0x10) - return bytes.concat(bytes1(uint8(_key))); -``` - -単一のバイトが一番簡単です。 [`bytes.concat`](https://docs.soliditylang.org/en/v0.8.16/types.html#the-functions-bytes-concat-and-string-concat)のみを使って、`bytes`型を任意の長さのバイト配列に変換します。 名前はよそにして、引数を1つだけ指定したときに、正常に動作します。 - -```solidity - // Two byte value, encoded as 0x1vvv - if (_key < 0x1000) - return bytes.concat(bytes2(uint16(_key) | 0x1000)); -``` - -163以下のキーを持っている場合は、それを2バイトで表現できます。 まず、256ビットの値である`_key`を16ビットの値に変換し、論理和を使用して余分なバイト数を先頭のバイトに加えます。 そして、この値を`bytes`に変換可能な`bytes2`値に入れます。 - -```solidity - // There is probably a clever way to do the following lines as a loop, - // but it's a view function so I'm optimizing for programmer time and - // simplicity. - - if (_key < 16*256**2) - return bytes.concat(bytes3(uint24(_key) | (0x2 * 16 * 256**2))); - if (_key < 16*256**3) - return bytes.concat(bytes4(uint32(_key) | (0x3 * 16 * 256**3))); - . - 。 - 。 - if (_key < 16*256**14) - return bytes.concat(bytes15(uint120(_key) | (0xE * 16 * 256**14))); - if (_key < 16*256**15) - return bytes.concat(bytes16(uint128(_key) | (0xF * 16 * 256**15))); -``` - -他の値(3バイト、4バイト等)も、フィールドのサイズが異なるだけで、同じ方法で処理されます。 - -```solidity - // If we get here, something is wrong. - revert("Error in encodeVal, should not happen"); -``` - -ここまでで、16\*25615以上のキーを取得できることになります。 しかし、`cacheWrite`では、キーを制限しています。そのため、14\*25616より上には行けません (これは、最初のバイトが0xFEになり、 `DONT_CACHE`になってしまうためです) 。 しかし、将来プログラマーがバグを入れてしまう場合に備え、テストを追加するのに、それほど費用はかかりません。 - -```solidity - } // encodeVal - -} // Cache -``` - -### キャッシュのテスト {#testing-the-cache} - -Foundryの素晴らしい機能の一つは、[Solidityでテストを作成できること](https://book.getfoundry.sh/forge/tests)です。そのため、単体テストを簡単に作成できます。 `Cache`クラスのテストは、[こちら](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/Cache.t.sol)にあります。 テストにおけるテストコードは、繰り返しが多い傾向があります。そのため、この記事では、重要な部分のみを説明します。 - -```solidity -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import "forge-std/Test.sol"; - - -// Need to run `forge test -vv` for the console. -import "forge-std/console.sol"; -``` - -これは、テストパッケージおよび`console.log`を使うのに必要となるボイラープレートです。 - -```solidity -import "src/Cache.sol"; -``` - -テストするコントラクトのインポートです。 - -```solidity -contract CacheTest is Test { - Cache cache; - - function setUp() public { - cache = new Cache(); - } -``` - -`setUp`関数は、各テストの前に呼び出されます。 このケースにおいては、新しいキャッシュを作成してテスト同士が影響しないようにします。 - -```solidity - function testCaching() public { -``` - -`test`の名前で始まる関数がテストです。 この関数では、値を書き込み、読み取ることでキャッシュ機能の基本的な確認を行います。 - -```solidity - for(uint i=1; i<5000; i++) { - cache.cacheWrite(i*i); - } - - for(uint i=1; i<5000; i++) { - assertEq(cache.cacheRead(i), i*i); -``` - -これは、[`assert...`関数](https://book.getfoundry.sh/reference/forge-std/std-assertions)を使って、実際にテストをする方法です。 このケースでは、書き込んだ値が読み込んだ値であることを確認します。 キャッシュキーが線形に割り当てられるため、`cache.cacheWrite`の結果は、破棄できます。 - -```solidity - } - } // testCaching - - - // Cache the same value multiple times, ensure that the key stays - // the same - function testRepeatCaching() public { - for(uint i=1; i<100; i++) { - uint _key1 = cache.cacheWrite(i); - uint _key2 = cache.cacheWrite(i); - assertEq(_key1, _key2); - } -``` - -まず、各値をキャッシュに2回書き込みます。そして、キーが同じであることを確認します (2回目の書き込みは、実際に起こらないことを意図しています)。 - -```solidity - for(uint i=1; i<100; i+=3) { - uint _key = cache.cacheWrite(i); - assertEq(_key, i); - } - } // testRepeatCaching -``` - -理論的には、連続したキャッシュの書き込みに関連しないバグが存在する可能性があります。 そのため、ここでは連続的ではない書き込みを何回か実行し、値がまだ書き換えられていないことを確認します。 - -```solidity - // Read a uint from a memory buffer (to make sure we get back the parameters - // we sent out) - function toUint256(bytes memory _bytes, uint256 _start) internal pure - returns (uint256) -``` - -`bytes memory`バッファから256ビットのワードを読み取ります。 このユーティリティ関数でキャッシュを使う関数の呼び出しを実行したときに、正しい結果が得られることを検証できます。 - -```solidity - { - require(_bytes.length >= _start + 32, "toUint256_outOfBounds"); - uint256 tempUint; - - assembly { - tempUint := mload(add(add(_bytes, 0x20), _start)) - } -``` - -Yulでは、`uint256`を超えるデータ構造をサポートしていません。そのため、メモリバッファである`_bytes`など、より高度なデータ構造を参照するときは、そのデータ構造のアドレスが取得されます。 Solidityでは、`bytes memory`値を長さを含む32バイトワードとして保存します。長さの後に実際のバイトが続くため、バイト数`_start`を取得して、`_bytes+32+_start`を計算する必要があります。 - -```solidity - - return tempUint; - } // toUint256 - - // Function signature for fourParams(), courtesy of - // https://www.4byte.directory/signatures/?bytes4_signature=0x3edc1e6d - bytes4 constant FOUR_PARAMS = 0x3edc1e6d; - - // Just some constant values to see we're getting the correct values back - uint256 constant VAL_A = 0xDEAD60A7; - uint256 constant VAL_B = 0xBEEF; - uint256 constant VAL_C = 0x600D; - uint256 constant VAL_D = 0x600D60A7; -``` - -テストに必要な定数です。 - -```solidity - function testReadParam() public { -``` - -`readParams`を使う関数`fourParams()`を呼び出し、パラメータを正しく読み取れることをテストします。 - -```solidity - address _cacheAddr = address(cache); - bool _success; - bytes memory _callInput; - bytes memory _callOutput; -``` - -キャッシュを使う関数の呼び出しに、通常のABIメカニズムは使えません。そのため、低レベルの [`
.call()`](https://docs.soliditylang.org/en/v0.8.16/types.html# members-of-addresses)メカニズムを使う必要があります。 [`
.call()`](https://docs.soliditylang.org/en/v0.8.16/types.html#members-of-addresses)のメカニズムでは、入力として`bytes memory`を取り、それを (ブール値と共に) 出力として返します。 - -```solidity - // First call, the cache is empty - _callInput = bytes.concat( - FOUR_PARAMS, -``` - -1つのコントラクトで、キャッシュされた関数 (トランザクションからの直接呼び出し用) とキャッシュ無しの関数 (他のコントラクトからの呼び出し用) の両方をサポートしていると有用です。 それには、正しい関数を呼び出すために、すべてを[`fallback`関数](https://docs.soliditylang.org/en/v0.8.16/contracts.html#fallback-function)に置くのではなく、引き続きSolidityのメカニズムに頼る必要があります。 この実装によって構成可能性をより容易に達成できます。 ほとんどの状況において、1バイトで関数を十分に識別できます。そのため、3バイト (16\*3=48ガス) を無駄にしていることになります。 しかし、この記事を書いている時点では、48ガスのコストは0.07セントなので、より単純でバグが発生しにくいコードとしては妥当なコストです。 - -```solidity - // First value, add it to the cache - cache.INTO_CACHE(), - bytes32(VAL_A), -``` - -最初の値は、全ての値をキャッシュに書き込む必要をあることを示すフラグです。次に、32バイトの値が続きます。 他の値は似ていますが、`VAL_B`は、キャッシュに書き込まれず、`VAL_C`は、3番目のパラメータと4番目のパラメータの両方である点が異なります。 - -```solidity - 。 - 。 - 。 - ); - (_success, _callOutput) = _cacheAddr.call(_callInput); -``` - -`Cache`コントラクトを実際に呼び出すところです。 - -```solidity - assertEq(_success, true); -``` - -この呼び出しが成功することを要求しています。 - -```solidity - assertEq(cache.cacheRead(1), VAL_A); - assertEq(cache.cacheRead(2), VAL_C); -``` - -空のキャッシュから始め、 `VAL_A`を加えてから `VAL_C`を追加します。 最初のキーに1があり、2番目のキーには、2があることを要求しています。 - -``` - assertEq(toUint256(_callOutput,0), VAL_A); - assertEq(toUint256(_callOutput,32), VAL_B); - assertEq(toUint256(_callOutput,64), VAL_C); - assertEq(toUint256(_callOutput,96), VAL_C); -``` - -出力は、4つのパラメータです。 ここで、それが正しいことを検証しています。 - -```solidity - // Second call, we can use the cache - _callInput = bytes.concat( - FOUR_PARAMS, - - // First value in the Cache - bytes1(0x01), -``` - -16未満のキャッシュキーは、ちょうど1バイトになります。 - -```solidity - // Second value, don't add it to the cache - cache.DONT_CACHE(), - bytes32(VAL_B), - - // Third and fourth values, same value - bytes1(0x02), - bytes1(0x02) - ); - . - 。 - 。 - } // testReadParam -``` - -呼出し後のテストは、最初の呼び出しの後のテストと同一です。 - -```solidity - function testEncodeVal() public { -``` - -この関数は、`testReadParam`に似ています。しかし、パラメータを明示的に記述する代わりに、`encodeVal()`を使うところが違います。 - -```solidity - 。 - 。 - 。 - _callInput = bytes.concat( - FOUR_PARAMS, - cache.encodeVal(VAL_A), - cache.encodeVal(VAL_B), - cache.encodeVal(VAL_C), - cache.encodeVal(VAL_D) - ); - . - 。 - 。 - assertEq(_callInput.length, 4+1*4); - } // testEncodeVal -``` - -`testEncodeVal()`の唯一の追加テストとして、`_callInput`の長さが正しいかを検証することがあります。 最初の呼び出しでは、4+33\*4となります。 次の呼び出しでは、すべての値がすでにキャッシュ内にあり、4+1\*4となります。 - -```solidity - // Test encodeVal when the key is more than a single byte - // Maximum three bytes because filling the cache to four bytes takes - // too long. - function testEncodeValBig() public { - // Put a number of values in the cache. - // To keep things simple, use key n for value n. - for(uint i=1; i<0x1FFF; i++) { - cache.cacheWrite(i); - } -``` - -上記の`testEncodeVal`関数は、4つの値のみをキャッシュに書き込むので、[マルチバイト値を処理する関数の部分](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/Cache.sol#L144-L171)についてチェックされません。 しかし、その部分は、複雑でエラーが発生しやすくなっています。 - -この関数の最初の部分は、1から0x1FFFまでのすべての値を順番にキャッシュに書き込むループなので、これらの値をエンコードして、どこに行くのかを知ることができます。 - -```solidity - 。 - 。 - 。 - - _callInput = bytes.concat( - FOUR_PARAMS, - cache.encodeVal(0x000F), // One byte 0x0F - cache.encodeVal(0x0010), // Two bytes 0x1010 - cache.encodeVal(0x0100), // Two bytes 0x1100 - cache.encodeVal(0x1000) // Three bytes 0x201000 - ); -``` - -1バイト、2バイト、3バイトの値をテストします。 十分なスタックエントリを書き込むには時間がかかりすぎるため (0x10000000では少なくとも約2億5千万回) 、それ以上のテストは行いません。 - -```solidity - 。 - 。 - 。 - 。 - } // testEncodeValBig - - - // Test what with an excessively small buffer we get a revert - function testShortCalldata() public { -``` - -パラメータが足りていない場合の異常時に何が起こるかをテストします。 - -```solidity - 。 - 。 - 。 - (_success, _callOutput) = _cacheAddr.call(_callInput); - assertEq(_success, false); - } // testShortCalldata -``` - -処理が取り消されるので、得られる結果は、`false`になります。 - -``` - // Call with cache keys that aren't there - function testNoCacheKey() public { - . - 。 - 。 - _callInput = bytes.concat( - FOUR_PARAMS, - - // First value, add it to the cache - cache.INTO_CACHE(), - bytes32(VAL_A), - - // Second value - bytes1(0x0F), - bytes2(0x1234), - bytes11(0xA10102030405060708090A) - ); -``` - -この関数は、キャッシュが空なので読み込む値がないことは別として、正当な4つのパラメータを取得します。 - -```solidity - 。 - 。 - 。 - // Test what with an excessively long buffer everything works file - function testLongCalldata() public { - address _cacheAddr = address(cache); - bool _success; - bytes memory _callInput; - bytes memory _callOutput; - - // First call, the cache is empty - _callInput = bytes.concat( - FOUR_PARAMS, - - // First value, add it to the cache - cache.INTO_CACHE(), bytes32(VAL_A), - - // Second value, add it to the cache - cache.INTO_CACHE(), bytes32(VAL_B), - - // Third value, add it to the cache - cache.INTO_CACHE(), bytes32(VAL_C), - - // Fourth value, add it to the cache - cache.INTO_CACHE(), bytes32(VAL_D), - - // And another value for "good luck" - bytes4(0x31112233) - ); -``` - -この関数は、5つの値を送信します。 5番目の値は、有効なキャッシュエントリではないため、無視されます。このキャッシュエントリが含まれない場合は、処理が取り消されることになります。 - -```solidity - (_success, _callOutput) = _cacheAddr.call(_callInput); - assertEq(_success, true); - . - 。 - 。 - } // testLongCalldata - -} // CacheTest - -``` - -## サンプルアプリケーション {#a-sample-app} - -Solidityでテストを作成するのは素晴らしいものの、結局のところ、有用なDappにするには、チェーンの外部からリクエストを処理できる必要があります。 この記事では、「Write Once, Read Many」の略である`WORM`使ってDappにおけるキャッシュの使い方を詳しく説明します。 キーが書き込まれていない場合は、値を書き込むことができます。 キーがすでに書き込まれている場合は、処理が取り消されます。 - -### コントラクト {#the-contract} - -[ここに](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/src/WORM.sol)コントラクトのコードがあります。 コードでは、ほとんどすでに解説した`Cache`と`CacheTest`を繰り返しているため、興味深い部分のみを取り上げます。 - -```solidity -import "./Cache.sol"; - -contract WORM is Cache { -``` - -`Cache`を使う最も簡単な方法は、自分のコントラクトに継承することです。 - -```solidity - function writeEntryCached() external { - uint[] memory params = _readParams(2); - writeEntry(params[0], params[1]); - } // writeEntryCached -``` - -この関数は、上述の`CacheTest`の`fourParam`に似ています。 ABI仕様に従っていないため、関数内でパラメータを宣言しないほうが間違いなく良いでしょう。 - -```solidity - // Make it easier to call us - // Function signature for writeEntryCached(), courtesy of - // https://www.4byte.directory/signatures/?bytes4_signature=0xe4e4f2d3 - bytes4 constant public WRITE_ENTRY_CACHED = 0xe4e4f2d3; -``` - -ABIの仕様に従っていないため、`writeEntryCached`を呼び出す外部コードは、`worm.writeEntryCached`を使う代わりに手動でcalldataを作成しなければなりません。 この定数値があると、その記述が楽になります。 - -`WRITE_ENTRY_CACHED`を状態変数として定義しても、それを外部から読み取るには、Getter関数 `worm.WRITE_ENTRY_CACHED()`を使うわなければならないことに気をつけてください。 - -```solidity - function readEntry(uint key) public view - returns (uint _value, address _writtenBy, uint _writtenAtBlock) -``` - -読み取りの関数は、`view`で宣言されているので、トランザクションは必要なく、ガスもかかりません。 結果、パラメータにキャッシュを使うメリットは、ありません。 ビュー関数では、より単純な標準メカニズムを使う方が最善です。 - -### テストコード {#the-testing-code} - -[ここに](https://github.com/qbzzt/20220915-all-you-can-cache/blob/main/test/WORM.t.sol)コントラクトのテストコードがあります。 再度となりますが、興味深い部分のみを取り上げます。 - -```solidity - function testWReadWrite() public { - worm.writeEntry(0xDEAD, 0x60A7); - - vm.expectRevert(bytes("entry already written")); - worm.writeEntry(0xDEAD, 0xBEEF); -``` - -[この箇所は (`vm.expectRevert`)](https://book.getfoundry.sh/cheatcodes/expect-revert#expectrevert)、Foundryテストで次の呼び出しが失敗し、失敗した理由をレポートすることを記述する方法です。 これは、低レベルのインターフェイス (`.call()`など) を使用して呼び出しデータを作成し、コントラクトを呼び出すというよりも、`.()`構文を使う時に作動させます。 - -```solidity - function testReadWriteCached() public { - uint cacheGoat = worm.cacheWrite(0x60A7); -``` - -上記は、`cacheWrite`がキャッシュキーを返すというファクトを使います。 これは運用環境での使用を想定していません。`cacheWrite`は、状態を変更するためです。従ってトランザクション中しか読みだせません。 トランザクションには、戻り値がありません。結果があれば、その結果はイベントとして出力されることになります。 そのため、 `cacheWrite`の戻り値は、オンチェーンコードからのみアクセスできます。また、オンチェーンコードでは、パラメータキャッシュは不要です。 - -```solidity - (_success,) = address(worm).call(_callInput); -``` - -上記は、`.call()`に2つの戻り値があるものの、最初の値のみを使うことをSolidityに伝える方法です。 - -```solidity - (_success,) = address(worm).call(_callInput); - assertEq(_success, false); -``` - -低レベルの`
.call()`関数を使っているので`vm.expectRevert()`は使用できません。呼び出しで取得したブール値で成功を確認する必要があります。 - -```solidity - event EntryWritten(uint indexed key, uint indexed value); - - . - 。 - 。 - - _callInput = bytes.concat( - worm.WRITE_ENTRY_CACHED(), worm.encodeVal(a), worm.encodeVal(b)); - vm.expectEmit(true, true, false, false); - emit EntryWritten(a, b); - (_success,) = address(worm).call(_callInput); -``` - -上記は、Foundryでコードが[イベントを正しく発行していること](https://book.getfoundry.sh/cheatcodes/expect-emit)を確認する方法です。 - -### クライアント {#the-client} - -Solidityのテストで得られないものの1つとして、自身のアプリケーションにカットアンドペーストできるJavaScriptコードでしょう。 そのコードを書くために、WORMをOptimismの新しいテストネットであるOptimism Goerliにデプロイしました。 アドレスは、0xd34335b1d818cee54e3323d3246bd31d94e6a78aです。

- -

- クライアントのJavaScriptコードは、こちらにあります。 次の方法で使うことができます。 -

- -
    -
  1. -

    - 次のGitリポジトリをクローンしてください。 - -

       git clone https://github.com/qbzzt/20220915-all-you-can-cache.git
    -
    -

    -
  2. - -
  3. -

    - 必要な次のパッケージをインストールしてください。 - -

       cd javascript
    -   yarn
    -
    -

    -
  4. - -
  5. -

    - 次の設定ファイルをコピーしてください。 - -

       cp .env.example .env
    -
    -

    -
  6. - -
  7. -

    - .envを編集して設定を行ってください。 -

    -
  8. -
- - - - - - - - - - - - - - - - - - - -
- パラメータ - - 値 -
- MNEMONIC - - トランザクションの支払いで十分なETHを持っているアカウントのニーモニック。 こちらでOptimismのGoerliネットワークの無料ETHを手に入れられます。 -
- OPTIMISM_GOERLI_URL - - Optimism GoerliのURLを設定します。 公開エンドポイントは、 https://goerli.optimism.ioです。通信制限がありますが、必要なことをするには十分です。 -
- -
    -
  1. -

    - index.jsの実行 - -

       node index.js
    -
    -

    - -

    - このサンプルアプリケーションは、まず、WORMにエントリを書き込み、calldataとEtherescan上のトランザクションへのリンクを表示します。 そして、そのエントリを読み込み、使用するキーとエントリ内の値 (値、ブロック番号、作成者) を表示します。 -

    -
  2. -
- -

- クライアントの大体の部分は、通常のDappのJavaScriptと変わりません。 そのため、ここでも興味深い部分のみを取り上げます。 -

- -
。
-。
-。
-const main = async () => {
-    const func = await worm.WRITE_ENTRY_CACHED()
-
-    // Need a new key every time
-    const key = await worm.encodeVal(Number(new Date()))
-
- -

- 与えられたスロットには、1回しか書き込むことができないため、タイムスタンプを使用してスロットが再利用されないようにします。 -

- -
const val = await worm.encodeVal("0x600D")
-
-// Write an entry
-const calldata = func + key.slice(2) + val.slice(2)
-
- -

- Ethersでは、calldataが16進数の文字列、0xの後に16進数の偶数が続くことを想定しています。 keyvalは、両方とも0xで始まるため、これらのヘッダーを削除する必要があります。 -

- -
const tx = await worm.populateTransaction.writeEntryCached()
-tx.data = calldata
-
-sentTx = await wallet.sendTransaction(tx)
-
- -

- Solidityのテストコードと同様に、キャッシュされた関数を通常は呼び出すことができません。 代わりに、低レベルのメカニズムを使用する必要があります。 -

- -
    。
-    。
-    。
-    // Read the entry just written
-    const realKey = '0x' + key.slice(4)  // remove the FF flag
-    const entryRead = await worm.readEntry(realKey)
-    .
-    。
-    。
-
- -

- エントリの読み取りには、通常のメカニズムを使用できます。 view関数では、パラメータのキャッシュを使う必要はありません。 -

- - - -

- まとめ -

- -

- この記事のコードの目的は、PoC (プルーフ・オブ・コンセプト) で、アイデアを理解しやすくすることです。 本番環境でのシステムでは、次のいくつかの追加機能を実装する必要性が考えられます。 -

- -
    -
  • - uint256以外の値に対応すること。 例えば、文字列です。 -
  • -
  • - グローバルキャッシュの代わりに、ユーザーとキャッシュ間のマッピングを持つことも考えられます。 異なるユーザーで異なる値を使う場合です。 -
  • -
  • - アドレスに使用される値は、他の目的に使用される値とは異なります。 アドレス専用の別のキャッシュに分けた方が合理的かもしれません。 -
  • -
  • -

    - 現在のコードでは、キャッシュキーは「先着最小キー」アルゴリズムになっています。 最初の16個の値は、1バイトとして送信できます。 次の4080個の値は、2バイトとして送信できます。 次の約100万個の値は、3バイトなどとなります。 本番のシステムでは、キャッシュエントリ上で使用量カウンタを保持し、16個の最も一般的な値が1バイト、次の4080個にくる一般的な値が2バイトになるようにする等、再編成する必要があります。 -

    -

    - ただし、それはリスクのある操作です。 次の一連のイベントを想像してみてください。 -

    -
      -
    1. -

      - Noam Naiveは、彼がトークンを送信するアドレスをエンコードするためにencodeValを呼び出します。 これは、アプリケーションで最初に使用されるアドレスの1つであるため、0x06の値にエンコードされます。 また、トランザクションではないため、view関数になります。そのため、Noamと彼が使うノードの間であり、他の人はそれについて知りません。 -

      -
    2. - -
    3. -

      - Owen Ownerは、キャッシュの並べ替え操作を実行します。 そのアドレスを使用する人はほとんどいないため、現在は 0x201122としてエンコードされています。 別の値である1018には、0x06が割り当てられます。 -

      -
    4. - -
    5. -

      - Noam Naiveは、保有しているトークンを0x06に送信します。 そのトークンは、アドレス 0x0000000000000000000000000de0b6b3a7640000に送られますが、そのアドレスの秘密鍵を誰も知らないため、そこにスタックしてしまいます。 Noamにとってこれは悲惨です。 -

      -
    6. -
    - -

    - この問題とキャッシュの再順序付け中にメモリプール内にあるトランザクションに関連する問題を解決する方法は、いくつかありますが、注意をしなければなりません。 -

    -
  • -
- -

- 私は、Optimismの従業員なので、最もよく知っているロールアップであるOptimismを使用してキャッシュを説明しました。 内部処理に最小限のコストが発生する他のロールアップでも機能するはずです。他のロールアップを比較すると、L1へのトランザクションデータの書き込みが主なコストとなります。 -

diff --git a/public/content/translations/ja/developers/tutorials/create-and-deploy-a-defi-app/index.md b/public/content/translations/ja/developers/tutorials/create-and-deploy-a-defi-app/index.md index 33dca9de55b..1cdf48dc7f1 100644 --- a/public/content/translations/ja/developers/tutorials/create-and-deploy-a-defi-app/index.md +++ b/public/content/translations/ja/developers/tutorials/create-and-deploy-a-defi-app/index.md @@ -9,7 +9,7 @@ tags: - "Truffle" - "Ganache" - "スマートコントラクト" -skill: 中級 +skill: intermediate lang: ja published: 2020-12-31 source: github.com diff --git a/public/content/translations/ja/developers/tutorials/deploying-your-first-smart-contract/index.md b/public/content/translations/ja/developers/tutorials/deploying-your-first-smart-contract/index.md index e059c68d8c6..d16956e8b7c 100644 --- a/public/content/translations/ja/developers/tutorials/deploying-your-first-smart-contract/index.md +++ b/public/content/translations/ja/developers/tutorials/deploying-your-first-smart-contract/index.md @@ -82,7 +82,7 @@ contract Counter { ![Remix solidityコンパイラ上の「deploy」ボタン](./remix-deploy-button.png) -「Deploy」ボタンをクリックすると、画面下部に作成したコントラクトが表示されます。 画面左側にある矢印をクリックすると、コントラクトの内容が表示されます。 これが、このコントラクトにおける`counter`変数、`increment()`関数、およびゲッターです。 +「Deploy」ボタンをクリックすると、画面下部に作成したコントラクトが表示されます。 画面左側にある矢印をクリックすると、コントラクトの内容が表示されます。 これが、このコントラクトにおける`counter`変数、`increment()`関数、およびゲッター`getCounter()`です。 `count`もしくは`getCount`ボタンをクリックすると、このコントラクトの`count`変数の内容を取得して表示します。 この時点では`increment` 関数を呼び出していないので、「0」が表示されます。 diff --git a/public/content/translations/ja/developers/tutorials/eip-1271-smart-contract-signatures/index.md b/public/content/translations/ja/developers/tutorials/eip-1271-smart-contract-signatures/index.md index 67b04a27616..f01f894f8a3 100644 --- a/public/content/translations/ja/developers/tutorials/eip-1271-smart-contract-signatures/index.md +++ b/public/content/translations/ja/developers/tutorials/eip-1271-smart-contract-signatures/index.md @@ -8,7 +8,7 @@ tags: - "スマートコントラクト" - "検証" - "署名(signing)" -skill: 中級 +skill: intermediate published: 2023-01-12 --- diff --git a/public/content/translations/ja/developers/tutorials/erc-721-vyper-annotated-code/index.md b/public/content/translations/ja/developers/tutorials/erc-721-vyper-annotated-code/index.md index f302f1e0429..d06bfdcbae6 100644 --- a/public/content/translations/ja/developers/tutorials/erc-721-vyper-annotated-code/index.md +++ b/public/content/translations/ja/developers/tutorials/erc-721-vyper-annotated-code/index.md @@ -7,7 +7,7 @@ tags: - "Vyper" - "ERC-721" - "Python" -skill: 初級 +skill: beginner published: 2021-04-01 --- diff --git a/public/content/translations/ja/developers/tutorials/erc20-annotated-code/index.md b/public/content/translations/ja/developers/tutorials/erc20-annotated-code/index.md index 8ed9f4c77d2..afad73cf909 100644 --- a/public/content/translations/ja/developers/tutorials/erc20-annotated-code/index.md +++ b/public/content/translations/ja/developers/tutorials/erc20-annotated-code/index.md @@ -6,7 +6,7 @@ lang: ja tags: - "Solidity" - "erc-20" -skill: 初級 +skill: beginner published: 2021-03-09 --- diff --git a/public/content/translations/ja/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md b/public/content/translations/ja/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md index 6b751fcd015..119b5ca92b0 100644 --- a/public/content/translations/ja/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md +++ b/public/content/translations/ja/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md @@ -75,7 +75,7 @@ _**注意:** [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-mainnet.a **すでにクライアントをインストール済みの場合は、** 現在のノードプロバイダーのURLを、APIキーを含むAlchemyのURL( `"https://eth-mainnet.alchemyapi.io/v2/your-api-key"`など)に変更します。 -**_注意:_** 以下のスクリプトは、 コマンドラインで実行するのではなく、**ノードコンテキスト**または**ファイルに保存した形で**実行する必要があります。 Nodeまたはnpmがインストールされていない場合は、Mac用設定ガイド [](https://app.gitbook.com/@alchemyapi/s/alchemy/guides/alchemy-for-macs) をご覧ください。 +**_注意:_** 以下のスクリプトは、 コマンドラインで実行するのではなく、**ノードコンテキスト**または**ファイルに保存した形で**実行する必要があります。 Nodeまたはnpmがインストールされていない場合は、[Mac用設定ガイド](https://app.gitbook.com/@alchemyapi/s/alchemy/guides/alchemy-for-macs) をご覧ください。 Alchemyと統合可能な[Web3ライブラリ](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries)は無数に存在しますが、このチュートリアルでは、Alchemyとシームレスに動作するように構築・設定されたweb3.jsの完全互換版である[Alchemy Web3](https://docs.alchemy.com/reference/api-overview)をお勧めします。 Alchemy Web3は、自動リトライや WebScoket に対する充実したサポートなどの利点を持っています。 diff --git a/public/content/translations/ja/developers/tutorials/guide-to-smart-contract-security-tools/index.md b/public/content/translations/ja/developers/tutorials/guide-to-smart-contract-security-tools/index.md index 66b00ecc96b..c24270cffca 100644 --- a/public/content/translations/ja/developers/tutorials/guide-to-smart-contract-security-tools/index.md +++ b/public/content/translations/ja/developers/tutorials/guide-to-smart-contract-security-tools/index.md @@ -7,7 +7,7 @@ tags: - "Solidity" - "スマートコントラクト" - "セキュリティ" -skill: 中級 +skill: intermediate published: 2020-09-07 source: セキュアなコントラクトの開発 sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis diff --git a/public/content/translations/ja/developers/tutorials/hello-world-smart-contract-fullstack/index.md b/public/content/translations/ja/developers/tutorials/hello-world-smart-contract-fullstack/index.md index 1d5bc962ef9..3be7dc73466 100644 --- a/public/content/translations/ja/developers/tutorials/hello-world-smart-contract-fullstack/index.md +++ b/public/content/translations/ja/developers/tutorials/hello-world-smart-contract-fullstack/index.md @@ -462,7 +462,7 @@ Provider、Signer、Contractの詳細については、[ethers.jsドキュメン `initMessage = "Hello world!"`を使用してコントラクトをデプロイしたことを思い出せますでしょうか? ここでは、スマートコントラクトに保存されているメッセージを読み取り、コンソールに出力します。 -JavaScriptでは、ネットワークとのやり取りで非同期関数を使います。 非同期関数の詳細については、[この記事の中ほど](https://blog.bitsrc.io/ Understanding-asynchronous-javascript-the-event-loop-74cd408419ff)をご覧ください。 +JavaScriptでは、ネットワークとのやり取りで非同期関数を使います。 非同期関数の詳細については、[この記事の中ほど](https://blog.bitsrc.io/Understanding-asynchronous-javascript-the-event-loop-74cd408419ff)をご覧ください。 以下のコードを使用して、スマートコントラクトの`message`関数を呼び出し、initメッセージを読み取ります。 diff --git a/public/content/translations/ja/developers/tutorials/how-to-implement-an-erc721-market/index.md b/public/content/translations/ja/developers/tutorials/how-to-implement-an-erc721-market/index.md index 18cac862b60..b77db2aa191 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-implement-an-erc721-market/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-implement-an-erc721-market/index.md @@ -7,7 +7,7 @@ tags: - "erc-721" - "Solidity" - "トークン" -skill: 中級 +skill: intermediate lang: ja published: 2020-03-19 source: Hackernoon diff --git a/public/content/translations/ja/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/public/content/translations/ja/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md index f0d80c70c92..6c7785f0bd0 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md @@ -8,7 +8,7 @@ tags: - "スマートコントラクト" - "テスト" - "モック" -skill: 中級 +skill: intermediate published: 2020-05-02 source: soliditydeveloper.com sourceUrl: https://soliditydeveloper.com/mocking-contracts diff --git a/public/content/translations/ja/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md b/public/content/translations/ja/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md index 3712930532a..e481f540dfb 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md @@ -9,7 +9,7 @@ tags: - "セキュリティ" - "テスト" - "ファジング" -skill: 上級 +skill: advanced published: 2020-04-10 source: セキュアなコントラクトの構築 sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna diff --git a/public/content/translations/ja/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/public/content/translations/ja/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md index 41a17d872c5..baa9cab81c5 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md @@ -9,7 +9,7 @@ tags: - "セキュリティ" - "テスト" - "フォーマルな検証" -skill: 上級 +skill: advanced published: 2020-01-13 source: セキュアなコントラクトの構築 sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore diff --git a/public/content/translations/ja/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md b/public/content/translations/ja/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md index e3192cecfea..2196e56b178 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md @@ -9,7 +9,7 @@ tags: - "セキュリティ" - "テスト" - "静的解析" -skill: 上級 +skill: advanced published: 2020-06-09 source: セキュアなコントラクトの構築 sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/slither diff --git a/public/content/translations/ja/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md b/public/content/translations/ja/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md index 669c5b39b70..8c4d3d5f70e 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md @@ -7,7 +7,7 @@ tags: - "Solidity" - "スマートコントラクト" - "オラクル" -skill: 初級 +skill: beginner published: 2021-06-29 source: Tellor Docs sourceUrl: https://docs.tellor.io/tellor/ diff --git a/public/content/translations/ja/developers/tutorials/how-to-write-and-deploy-an-nft/index.md b/public/content/translations/ja/developers/tutorials/how-to-write-and-deploy-an-nft/index.md index 98735d50114..dd960cde570 100644 --- a/public/content/translations/ja/developers/tutorials/how-to-write-and-deploy-an-nft/index.md +++ b/public/content/translations/ja/developers/tutorials/how-to-write-and-deploy-an-nft/index.md @@ -345,6 +345,6 @@ Yassss! イーサリアム(テストネット)チェーンにNFTスマート ![Alchemy のエクスプローラーダッシュボードで「内部」で行われた通話を表示する](./alchemy-explorer-goerli.png) -ここでは、 .deploy() 関数を呼び出した際に、Hardhat/Ethers が内部で作った JSON-RPC の呼び出しをいくつか見ることができます。 ここで呼び出している2つの重要なJSON-RPCは、実際にSepoliaチェーン上でコントラクトを書き込むリクエストの[eth_sendRawTransaction](/developers/docs/apis/json-rpc/#eth_sendrawtransaction)と、(トランザクションを送信する際の典型的なパターンである) ハッシュを与えられたトランザクションに関する情報を読み取るリクエスト[eth_getTransactionByHash](/developers/docs/apis/json-rpc/#eth_gettransactionbyhash)です。 トランザクションの送信の詳細については、このチュートリアルの [ Web3 を使用したトランザクションの送信 ](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) をご覧ください。 +ここでは、 .deploy() 関数を呼び出した際に、Hardhat/Ethers が内部で作った JSON-RPC の呼び出しをいくつか見ることができます。 ここで呼び出している2つの重要なJSON-RPCは、実際にSepoliaチェーン上でコントラクトを書き込むリクエストの[eth_sendRawTransaction](/developers/docs/apis/json-rpc/#eth_sendrawtransaction)と、(トランザクションを送信する際の典型的なパターンである) ハッシュを与えられたトランザクションに関する情報を読み取るリクエスト[eth_getTransactionByHash](/developers/docs/apis/json-rpc/#eth_gettransactionbyhash)です。 トランザクションの送信の詳細については、このチュートリアルの [Web3 を使用したトランザクションの送信](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) をご覧ください。 以上がこのチュートリアルのパート1です。 [パート2](/developers/tutorials/how-to-mint-an-nft/) では、NFT を発行することで実際にスマートコントラクトとやりとりをします。そして、[パート3](/developers/tutorials/how-to-view-nft-in-metamask/) では、Etherreum ウォレット内の NFT を確認する方法を示します! diff --git a/public/content/translations/ja/developers/tutorials/logging-events-smart-contracts/index.md b/public/content/translations/ja/developers/tutorials/logging-events-smart-contracts/index.md index 8c11cdec88d..adb43255f91 100644 --- a/public/content/translations/ja/developers/tutorials/logging-events-smart-contracts/index.md +++ b/public/content/translations/ja/developers/tutorials/logging-events-smart-contracts/index.md @@ -7,7 +7,7 @@ tags: - "Remix" - "Solidity" - "イベント" -skill: 中級 +skill: intermediate lang: ja published: 2020-04-03 source: EthereumDev diff --git a/public/content/translations/ja/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md b/public/content/translations/ja/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md index e2b63496cb1..20642137f79 100644 --- a/public/content/translations/ja/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md +++ b/public/content/translations/ja/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md @@ -5,7 +5,7 @@ author: "Mario Havel" tags: - "クライアント" - "ノード" -skill: 中級 +skill: intermediate lang: ja published: 2021-01-13 --- diff --git a/public/content/translations/ja/developers/tutorials/optimism-std-bridge-annotated-code/index.md b/public/content/translations/ja/developers/tutorials/optimism-std-bridge-annotated-code/index.md index 96cc92d9c85..85575af4262 100644 --- a/public/content/translations/ja/developers/tutorials/optimism-std-bridge-annotated-code/index.md +++ b/public/content/translations/ja/developers/tutorials/optimism-std-bridge-annotated-code/index.md @@ -6,7 +6,7 @@ tags: - "Solidity" - "ブリッジ" - "レイヤー2" -skill: 中級 +skill: intermediate published: 2022-03-30 lang: ja --- @@ -992,7 +992,7 @@ contract L2StandardERC20 is IL2StandardERC20, ERC20 { L2のブリッジは、ERC-165を健全性チェックとして用いて、資産を送信するのに用いるERC-20コントラクトが `IL2StandardERC20`であるか確認します。 -**注意:不正なコントラクトが`supportsInterface`に対して虚偽の値を返すことを防ぐメカニズムは含まれていないため、これはセキュリティ保護のメカニズム_ではなく_、健全性チェックのメカニズムです。

+**注意:不正なコントラクトが`supportsInterface`に対して虚偽の値を返すことを防ぐメカニズムは含まれていないため、これはセキュリティ保護のメカニズム_ではなく_、健全性チェックのメカニズムです。 ```solidity // slither-disable-next-line external-function diff --git a/public/content/translations/ja/developers/tutorials/secure-development-workflow/index.md b/public/content/translations/ja/developers/tutorials/secure-development-workflow/index.md index 4b2392296aa..7b312f73b87 100644 --- a/public/content/translations/ja/developers/tutorials/secure-development-workflow/index.md +++ b/public/content/translations/ja/developers/tutorials/secure-development-workflow/index.md @@ -6,7 +6,7 @@ tags: - "スマートコントラクト" - "セキュリティ" - "Solidity" -skill: 中級 +skill: intermediate lang: ja published: 2020-09-07 source: セキュアなコントラクトの開発 diff --git a/public/content/translations/ja/developers/tutorials/short-abi/index.md b/public/content/translations/ja/developers/tutorials/short-abi/index.md index e4c640ea6cc..fd9cb3f38ea 100644 --- a/public/content/translations/ja/developers/tutorials/short-abi/index.md +++ b/public/content/translations/ja/developers/tutorials/short-abi/index.md @@ -5,7 +5,7 @@ author: Ori Pomerantz lang: ja tags: - "レイヤー2" -skill: 中級 +skill: intermediate published: 2022-04-01 --- diff --git a/public/content/translations/ja/developers/tutorials/smart-contract-security-guidelines/index.md b/public/content/translations/ja/developers/tutorials/smart-contract-security-guidelines/index.md index c470f818a1c..81636f3cf98 100644 --- a/public/content/translations/ja/developers/tutorials/smart-contract-security-guidelines/index.md +++ b/public/content/translations/ja/developers/tutorials/smart-contract-security-guidelines/index.md @@ -6,7 +6,7 @@ tags: - "Solidity" - "スマートコントラクト" - "セキュリティ" -skill: 中級 +skill: intermediate lang: ja published: 2020-09-06 source: セキュアなコントラクトの構築 diff --git a/public/content/translations/ja/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md b/public/content/translations/ja/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md index 504dd0b7ba7..6d9b6b25add 100644 --- a/public/content/translations/ja/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md +++ b/public/content/translations/ja/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md @@ -9,7 +9,7 @@ tags: - "テスト" - "Truffle" - "Ganache" -skill: 中級 +skill: intermediate published: 2020-06-05 source: soliditydeveloper.com sourceUrl: https://soliditydeveloper.com/continuous-integration diff --git a/public/content/translations/ja/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md b/public/content/translations/ja/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md index a5fb4559155..a20a70835ad 100644 --- a/public/content/translations/ja/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md +++ b/public/content/translations/ja/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md @@ -8,9 +8,8 @@ tags: - "Solidity" - "テスト" - "ERC-20" -skill: 中級 +skill: intermediate lang: ja -sidebar: true published: 2020-10-16 --- diff --git a/public/content/translations/ja/developers/tutorials/token-integration-checklist/index.md b/public/content/translations/ja/developers/tutorials/token-integration-checklist/index.md index 844582156c6..87176cedee9 100644 --- a/public/content/translations/ja/developers/tutorials/token-integration-checklist/index.md +++ b/public/content/translations/ja/developers/tutorials/token-integration-checklist/index.md @@ -8,7 +8,7 @@ tags: - "スマートコントラクト" - "セキュリティ" - "トークン" -skill: 中級 +skill: intermediate published: 2020-08-13 source: セキュアなコントラクトの構築 sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/token_integration.md @@ -71,7 +71,7 @@ Slitherには[slither-prop](https://github.com/crytic/slither/wiki/Property-gene - **所有者のミント能力が制限されているか**。 悪意の所有者やセキュリティが侵害された所有者は、ミント能力を悪用する可能性があります。 Slitherの[human-summaryプリンター](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary)を使用して、ミント能力を評価し、マニュアルでコードをレビューする必要があるかを決定してください。 - **トークンが、一時停止可能であるか**。 悪意の所有者やセキュリティを侵害された所有者は、一次停止が可能なトークンを利用してコントラクトをトラップすることが可能です。 マニュアルで、一時停止可能なコードを特定してください。 - **所有者がコントラクトをブラックリストに登録できるようになっていないか**。 悪意の所有者やセキュリティが侵害された所有者は、ブラックリストに登録されたトークンを使用して、コントラクトをトラップすることが可能です。 マニュアルで、ブラックリスト機能を特定してください。 -- **トークン開発チームの身元がはっきりしており、不正使用の責任を負える組織であるか/strong>。匿名の開発チームが開発したコントラクトや、または法的シェルターの対象に含まれるコントラクトに対しては、より厳格なレビューが必要になります。 +- **トークン開発チームの身元がはっきりしており、不正使用の責任を負える組織であるか/strong>。匿名の開発チームが開発したコントラクトや、または法的シェルターの対象に含まれるコントラクトに対しては、より厳格なレビューが必要になります。 ## トークンの枯渇 {#token-scarcity} diff --git a/public/content/translations/ja/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md b/public/content/translations/ja/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md index 59852d0fd58..80335862de8 100644 --- a/public/content/translations/ja/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md +++ b/public/content/translations/ja/developers/tutorials/understand-the-erc-20-token-smart-contract/index.md @@ -7,7 +7,7 @@ tags: - "トークン" - "Solidity" - "erc-20" -skill: 初級 +skill: beginner lang: ja published: 2020-04-05 source: EthereumDev diff --git a/public/content/translations/ja/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/ja/developers/tutorials/uniswap-v2-annotated-code/index.md index 0382c859e6d..a86e21bd040 100644 --- a/public/content/translations/ja/developers/tutorials/uniswap-v2-annotated-code/index.md +++ b/public/content/translations/ja/developers/tutorials/uniswap-v2-annotated-code/index.md @@ -4,7 +4,7 @@ description: Uniswap-v2コントラクトの仕組み、 コントラクトの author: Ori Pomerantz tags: - "Solidity" -skill: 中級 +skill: intermediate published: 2021-05-01 lang: ja --- diff --git a/public/content/translations/ja/developers/tutorials/using-websockets/index.md b/public/content/translations/ja/developers/tutorials/using-websockets/index.md index b69a39bb2ee..fb7f8888c49 100644 --- a/public/content/translations/ja/developers/tutorials/using-websockets/index.md +++ b/public/content/translations/ja/developers/tutorials/using-websockets/index.md @@ -8,7 +8,7 @@ tags: - "WebSockets" - "クエリ" - "JavaScript" -skill: 初級 +skill: beginner source: Alchemy ドキュメント sourceUrl: https://docs.alchemyapi.io/guides/using-websockets published: 2020-12-01 diff --git a/public/content/translations/ja/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/ja/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md index ccef3259a0a..998980038d0 100644 --- a/public/content/translations/ja/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md +++ b/public/content/translations/ja/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md @@ -8,7 +8,7 @@ tags: - "Solidity" - "テスト" - "モックアップ作成" -skill: 中級 +skill: intermediate lang: ja published: 2020-11-14 --- diff --git a/public/content/translations/ja/developers/tutorials/yellow-paper-evm/index.md b/public/content/translations/ja/developers/tutorials/yellow-paper-evm/index.md index 8cab56944c6..1ff87d49abb 100644 --- a/public/content/translations/ja/developers/tutorials/yellow-paper-evm/index.md +++ b/public/content/translations/ja/developers/tutorials/yellow-paper-evm/index.md @@ -4,7 +4,7 @@ description: イーサリアムの正式な仕様であるイエローペーパ author: "qbzzt" tags: - "イーサリアム仮想マシン(EVM)" -skill: 中級 +skill: intermediate lang: ja published: 2022-05-15 --- @@ -33,7 +33,7 @@ _システム状態_とは、システムを実行するため必要なすべて このセクションでは、EVMの基本事項と、EVMと他の計算モデルとの比較について説明しています。 -[スタックマシン](https://en.wikipedia.org/wiki/Stack_machine)は、中間データをレジスタではなく[**スタック**](https:// en.wikipedia.org/wiki/Stack_(abstract_data_type))に格納するコンピュータです。 これは、仮想マシンで好まれるアーキテクチャです。なぜなら、実装が簡単で、バグやセキュリティの脆弱性が発生する可能性を大幅に低くできるためです。 スタック内のメモリは、256ビットのワードに分割されます。 256ビットが選ばれた理由としては、Kecck-256ハッシュや楕円曲線計算など、イーサリアムの中核となる暗号操作に都合が良いためです。 スタックの最大サイズは、1024バイトです。 オペコード実行時、通常、スタックからパラメータを取得します。 `POP`(スタックの先頭のアイテムの削除)、`DUP_N`(スタックのN番目のアイテムの複製)など、スタック内の要素を再構成するための専用オペコードがあります。 +[スタックマシン](https://en.wikipedia.org/wiki/Stack_machine)は、中間データをレジスタではなく[**スタック**](https://en.wikipedia.org/wiki/Stack_(abstract_data_type))に格納するコンピュータです。 これは、仮想マシンで好まれるアーキテクチャです。なぜなら、実装が簡単で、バグやセキュリティの脆弱性が発生する可能性を大幅に低くできるためです。 スタック内のメモリは、256ビットのワードに分割されます。 256ビットが選ばれた理由としては、Kecck-256ハッシュや楕円曲線計算など、イーサリアムの中核となる暗号操作に都合が良いためです。 スタックの最大サイズは、1024バイトです。 オペコード実行時、通常、スタックからパラメータを取得します。 `POP`(スタックの先頭のアイテムの削除)、`DUP_N`(スタックのN番目のアイテムの複製)など、スタック内の要素を再構成するための専用オペコードがあります。 EVMには、 実行中にデータを保存するために使用される**メモリ**と呼ばれる揮発性スペースもあります。 このメモリは、32バイトのワードで構成されます。 すべてのメモリのロケーションは、ゼロで初期化されます。 次の[Yul](https://docs.soliditylang.org/en/latest/yul.html)コードを実行してメモリにワードを追加すると、32バイトのメモリのワード内にある空スペースがパディングによってゼロで埋められます。つまり、ロケーション0~29、0x60~30、0xA7~31にゼロが含まれる1つのワードが作成されます。 @@ -235,7 +235,7 @@ _σ[μs[0] mod 2160] ≠ ∅_の場合、このアドレ | 0x8F | DUP16 | 16 | 17 | 16番目のスタックアイテムを複製 | | | | | | _μ′s[0] ≡ μs[15]_ | -スタックアイテムを使用するには、ポップする必要があることに注意してください。つまり、そのアイテム上にあるすべてのスタックアイテムもポップする必要があります。 [`DUP`](https://www.evm.codes/#8f)および[`SWAP`](https://www. evm.codes/#9f)の場合は、最大で16個の値をポップして、その後にプッシュしなければならなりません。 +スタックアイテムを使用するには、ポップする必要があることに注意してください。つまり、そのアイテム上にあるすべてのスタックアイテムもポップする必要があります。 [`DUP`](https://www.evm.codes/#8f)および[`SWAP`](https://www.evm.codes/#9f)の場合は、最大で16個の値をポップして、その後にプッシュしなければならなりません。 ## 9.5 実行サイクル {#95-exec-cycle} diff --git a/public/content/translations/ja/enterprise/index.md b/public/content/translations/ja/enterprise/index.md index 4911344d18d..1e3ff22fc55 100644 --- a/public/content/translations/ja/enterprise/index.md +++ b/public/content/translations/ja/enterprise/index.md @@ -51,7 +51,7 @@ Hyperledger、Quorum、Cordaプロジェクトが開始された2016年頃から イーサリアムを企業にとって身近な存在にするために、さまざまな組織が次のような協力的な取り組みを行っています。 - [エンタープライズ・イーサリアム・アライアンス (EEA)](https://entethalliance.org/) EEAは、組織に対して日常業務にイーサリアムテクノロジーを導入、使用することを支援します。 組織の目標としては、専門的および商業的なサポート、提唱および研究、標準の開発およびエコシステムトラストサービスを通じてビジネスにおけるイーサリアムを促進することです。 -- [グローバル・ブロックチェーン・ビジネス評議会 (GBBC) ](https://www.gbbc.io/) - GBBCは、ブロックチェーン・テクノロジー・エコシステムの業界団体です。 政策立案者や規制当局との調整、イベントの開催および深い議論、研究の推進を通して、GBBCは、より安全で公平で機能的な社会を構築するためのブロックチェーンのさらなる導入に専念しています。 +- [グローバル・ブロックチェーン・ビジネス評議会 (GBBC)](https://www.gbbc.io/) - GBBCは、ブロックチェーン・テクノロジー・エコシステムの業界団体です。 政策立案者や規制当局との調整、イベントの開催および深い議論、研究の推進を通して、GBBCは、より安全で公平で機能的な社会を構築するためのブロックチェーンのさらなる導入に専念しています。 ## エンタープライズ向けデベロッパーリソースについて {#enterprise-developer-resources} diff --git a/public/content/translations/ja/guides/how-to-revoke-token-access/index.md b/public/content/translations/ja/guides/how-to-revoke-token-access/index.md index b5c980b9b99..e73cb9c0f6b 100644 --- a/public/content/translations/ja/guides/how-to-revoke-token-access/index.md +++ b/public/content/translations/ja/guides/how-to-revoke-token-access/index.md @@ -18,12 +18,12 @@ lang: ja 自分のアドレスに接続されたスマートコントラクトを閲覧したり、無効にさせることが可能なウェブサイトもあります。 以下のようなウェブサイトにアクセスし、ウォレットに接続してください。 -- [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/)(複数のネットワーク) +- [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: ウォレットを接続する diff --git a/public/content/translations/ja/roadmap/future-proofing/index.md b/public/content/translations/ja/roadmap/future-proofing/index.md index 8cb26ce15f1..8c2330309e7 100644 --- a/public/content/translations/ja/roadmap/future-proofing/index.md +++ b/public/content/translations/ja/roadmap/future-proofing/index.md @@ -15,7 +15,7 @@ template: roadmap イーサリアムのデベロッパーが直面している課題は、現在の[プルーフ・オブ・ステーク](/glossary/#pos)のプロトコルが、有効な[ブロック](/glossary/#block)の投票を集約するために、非常に効率的な署名スキームであるBLSに依存していることです。 この署名スキームは、量子コンピューターによって破られてしまう可能性があります。一方、量子耐性のある代替手段は、計算効率がそれほど良くありません。 -イーサリアムでは、暗号秘密を生成するために[「KZG」コミットメントスキーム](/roadmap/danksharding/#what-is-kzg)が広く使われています。しかし、このスキームは量子コンピュータによって破られる可能性があります。 現在は、多くのユーザーが生成したランダム性を使用して「信頼できるセットアップ」として回避されており、量子コンピューターによるリバースエンジニアリングができないようになっています。 しかし、理想的には、量子安全暗号を組み込むことで、脆弱性を根本的に解決することが望まれます。 BLSスキームの効率的な代替となる可能性のある2つの主要なアプローチとして、[STARKベース](https://hackmd.io/@vbuterin/stark_aggregation)と[ラティスベース](https:/ /medium.com/asecuritysite-when-bob-met-alice/so-what-is-lattice-encryption-326ac66e3175)の署名スキームがあります。 **これらについては現在、研究および試作中です**。 +イーサリアムでは、暗号秘密を生成するために[「KZG」コミットメントスキーム](/roadmap/danksharding/#what-is-kzg)が広く使われています。しかし、このスキームは量子コンピュータによって破られる可能性があります。 現在は、多くのユーザーが生成したランダム性を使用して「信頼できるセットアップ」として回避されており、量子コンピューターによるリバースエンジニアリングができないようになっています。 しかし、理想的には、量子安全暗号を組み込むことで、脆弱性を根本的に解決することが望まれます。 BLSスキームの効率的な代替となる可能性のある2つの主要なアプローチとして、[STARKベース](https://hackmd.io/@vbuterin/stark_aggregation)と[ラティスベース](https://medium.com/asecuritysite-when-bob-met-alice/so-what-is-lattice-encryption-326ac66e3175)の署名スキームがあります。 **これらについては現在、研究および試作中です**。 KZGと信頼できるセットアップについての詳細 From 0783f20f01218563c3f30ed1e2ebd6668bf21aa4 Mon Sep 17 00:00:00 2001 From: Joshua <62268199+minimalsm@users.noreply.github.com> Date: Fri, 3 May 2024 15:16:41 +0100 Subject: [PATCH 3/6] Apply suggestions from code review --- public/content/translations/ja/developers/docs/mev/index.md | 2 +- .../ja/developers/docs/standards/tokens/erc-4626/index.md | 2 +- .../tutorials/a-developers-guide-to-ethereum-part-one/index.md | 2 +- .../translations/ja/roadmap/secret-leader-election/index.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/public/content/translations/ja/developers/docs/mev/index.md b/public/content/translations/ja/developers/docs/mev/index.md index 8fbed65d21c..557602163a2 100644 --- a/public/content/translations/ja/developers/docs/mev/index.md +++ b/public/content/translations/ja/developers/docs/mev/index.md @@ -178,7 +178,7 @@ PBS(提案者と作成者の分離)は、MEVの抽出に伴う悪影響を 4. ビルダーAPIを実行しているビルダーは、ブラインドのブロック提案を確認した上で、完全な実行ペイロードで対応すると想定されています。 これにより、バリデータは「署名済み」のビーコンブロックを作成し、ネットワークに拡散することができます。 -5. ビルダーAPIを使用するバリデータの場合でも、ブロックビルダーが迅速に対応しない場合にブロック提案に伴う報酬が受け取れない場合を避けるために、ローカルでブロックを構築する必要があります。 しかしバリデータは、この時点で公開されたトランザクションあるいは他のセットを用いて別のブロックを作成することはできません。これは_曖昧化_(同じスロット内の2つのブロックに署名すること)を発生させるため、スラッシングの対象である違反行為です。 +5. ビルダーAPIを使用するバリデータの場合でも、ブロックビルダーが迅速に対応しない場合にブロック提案に伴う報酬が受け取れない場合を避けるために、ローカルでブロックを構築する必要があります。 しかしバリデータは、この時点で公開されたトランザクションあるいは他のセットを用いて別のブロックを作成することはできません。これは_曖昧化_(同じスロット内の2つのブロックに署名すること)を発生させるため、スラッシングの対象である違反行為です。 ビルダーAPIの実装例としては、イーサリアムに対するMEVの悪影響を軽減するように[フラッシュボットのオークション機能](https://docs.flashbots.net/Flashbots-auction/overview/)を改善した[MEV Boost](https://github.com/flashbots/mev-boost)があります。 フラッシュボットのオークションでは、プルーフ・オブ・ワークを行うマイナーに対し、利益を伴うブロックを作成する作業を**サーチャー**と呼ばれる専門のユーザーに外注することが認められています。 diff --git a/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md b/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md index 7f52b265663..4fec6280794 100644 --- a/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md +++ b/public/content/translations/ja/developers/docs/standards/tokens/erc-4626/index.md @@ -187,7 +187,7 @@ event Deposit( #### 出金イベント -`redeem` あるいは [`withdraw`](#withdraw)メソッドにより、預金者がボールトからシェアを引き出す際に、**必ず**発行しなければなりません。 +`redeem` あるいは [`withdraw`](#withdraw)メソッドにより、預金者がボールトからシェアを引き出す際に、**必ず**発行しなければなりません。 ```solidity event Withdraw( diff --git a/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md index 207fbdf1fcc..3d49cbf808e 100644 --- a/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md +++ b/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md @@ -41,7 +41,7 @@ sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt- 各[ブロック](/developers/docs/blocks/)は、その前のブロックを参照します。`parentHash`は、単に前のブロックのハッシュ値です。注: イーサリアムは -[ハッシュ関数](https://wikipedia.org/wiki/Hash_function)を定期的に使用して、固定サイズの値(ハッシュ)を生成します。 イーサリアムではハッシュ値が重要な役割を果たしますが、今のところは固有のIDと考えておくとよいでしょう。 +注: イーサリアムは [ハッシュ関数](https://wikipedia.org/wiki/Hash_function)を定期的に使用して、固定サイズの値(ハッシュ)を生成します。 イーサリアムではハッシュ値が重要な役割を果たしますが、今のところは固有のIDと考えておくとよいでしょう。 ![ブロックチェーンと各ブロック内のデータを表す図](./blockchain-diagram.png) diff --git a/public/content/translations/ja/roadmap/secret-leader-election/index.md b/public/content/translations/ja/roadmap/secret-leader-election/index.md index 780aeb8b375..85e4c933f25 100644 --- a/public/content/translations/ja/roadmap/secret-leader-election/index.md +++ b/public/content/translations/ja/roadmap/secret-leader-election/index.md @@ -33,7 +33,7 @@ SSLE(シークレット・シングル・リーダー選出)では、選出さ ## シークレット・非シングル・リーダー選出(SnSLE) {#secret-non-single-leader-election} -プルーフ・オブ・ワークにおいてブロックの提案を決定する方法と同様に、バリデータが各スロットでブロックを提案する機会をランダムに与える仕組みもあり、シークレット・非シングル・リーダー選出(SnSLE)と呼ばれています。 例えば、現在のプロトコルでバリデータをランダムに選択するために使われているRANDAO関数を活用すれば、簡単に実現できます。 RANDAOを使うアイデアとは、多くの独立しているバリデータから送信されたハッシュを混合することで、十分な乱数が生成するというものです。 SnSLEにおいて、これらのハッシュを使って、次のブロック提案者を選ぶことができます。例えば、最小値のハッシュの選択です。 有効なハッシュ値の範囲を設定することで、各スロットでバリデータが選ばれる可能性を調整することができます。 ハッシュ値が`2^256 * 5 / N` (`N` = アクティブなバリデータ数)未満でなければならないとアサートすると、各スロットで個々のバリデータが選択される可能性は、`5/N`になります。 この例では、少なくとも1人の提案者が各スロットで有効なハッシュを生成する確率は99.3%になります。 +プルーフ・オブ・ワークにおいてブロックの提案を決定する方法と同様に、バリデータが各スロットでブロックを提案する機会をランダムに与える仕組みもあり、**シークレット・非シングル・リーダー選出(SnSLE)**と呼ばれています。 例えば、現在のプロトコルでバリデータをランダムに選択するために使われているRANDAO関数を活用すれば、簡単に実現できます。 RANDAOを使うアイデアとは、多くの独立しているバリデータから送信されたハッシュを混合することで、十分な乱数が生成するというものです。 SnSLEにおいて、これらのハッシュを使って、次のブロック提案者を選ぶことができます。例えば、最小値のハッシュの選択です。 有効なハッシュ値の範囲を設定することで、各スロットでバリデータが選ばれる可能性を調整することができます。 ハッシュ値が`2^256 * 5 / N` (`N` = アクティブなバリデータ数)未満でなければならないとアサートすると、各スロットで個々のバリデータが選択される可能性は、`5/N`になります。 この例では、少なくとも1人の提案者が各スロットで有効なハッシュを生成する確率は99.3%になります。 ## 現在の進行状況 {#current-progress} From dfccc7c98b3bf06aeb5bc47b2a55620e0165edaa Mon Sep 17 00:00:00 2001 From: Joshua <62268199+minimalsm@users.noreply.github.com> Date: Tue, 7 May 2024 09:48:52 +0100 Subject: [PATCH 4/6] Fix broken FeaturedText tag --- .../a-developers-guide-to-ethereum-part-one/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md index 3d49cbf808e..5f40ef7259f 100644 --- a/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md +++ b/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md @@ -39,9 +39,9 @@ sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt- } ``` -各[ブロック](/developers/docs/blocks/)は、その前のブロックを参照します。`parentHash`は、単に前のブロックのハッシュ値です。注: イーサリアムは +各[ブロック](/developers/docs/blocks/)は、その前のブロックを参照します。`parentHash`は、単に前のブロックのハッシュ値です。 -注: イーサリアムは [ハッシュ関数](https://wikipedia.org/wiki/Hash_function)を定期的に使用して、固定サイズの値(ハッシュ)を生成します。 イーサリアムではハッシュ値が重要な役割を果たしますが、今のところは固有のIDと考えておくとよいでしょう。 +注: イーサリアムは ハッシュ関数を定期的に使用して、固定サイズの値(ハッシュ)を生成します。 イーサリアムではハッシュ値が重要な役割を果たしますが、今のところは固有のIDと考えておくとよいでしょう。 ![ブロックチェーンと各ブロック内のデータを表す図](./blockchain-diagram.png) From 70ddd79598563ea4b4bfc7c36723df7c27eb02eb Mon Sep 17 00:00:00 2001 From: Joshua <62268199+minimalsm@users.noreply.github.com> Date: Tue, 7 May 2024 12:01:15 +0100 Subject: [PATCH 5/6] Fix FeaturedText --- .../a-developers-guide-to-ethereum-part-one/index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md index 5f40ef7259f..872577ba549 100644 --- a/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md +++ b/public/content/translations/ja/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md @@ -284,9 +284,10 @@ Out[13]: 1000003000000000000000000 2つ目のアカウントの残高は、 1,000,000 ETHから1,000,003 ETHに増えているので、正しいようです。 1つ目のアカウントはどうなったのでしょうか? 3 ETHより少し多い金額が失われたようです。 残念ながら、人生にはタダというものはなく、イーサリアムのパブリックネットワークを利用するには、そのサポート役であるピアに対価を支払う必要があります。 トランザクションを送信したアカウントから、少額のトランザクションフィーが差し引かれました。このフィーは、消費されたガスの量(ETH送金では21000単位のガス)にベースフィーを掛けたものです。ベースフィーは、ネットワークのアクティビティに加えて、ブロック内にトランザクションを含めるバリデータに送信されるチップによって異なります。 -[ガスの詳細](/developers/docs/gas/#post-london)注: パブリックネットワークにおいてトランザクションフィーは、ネットワークの需要やどれだけ迅速にトランザクションを処理する必要があるのかによって変動します。 フィー(手数料)の計算方法の内訳に興味がある場合は、 +[ガスの詳細](/developers/docs/gas/#post-london) -[ブロックに含まれるトランザクションの仕組み](https://medium.com/ethereum-grid/ethereum-101-how-are-transactions-included-in-a-block-9ae5f491853f)に関する以前の投稿をご覧ください。 +注: パブリックネットワークにおいてトランザクションフィーは、ネットワークの需要やどれだけ迅速にトランザクションを処理する必要があるのかによって変動します。 フィー(手数料)の計算方法の内訳に興味がある場合は、 +ブロックに含まれるトランザクションの仕組みに関する以前の投稿をご覧ください。 ## ちょっと一息 {#and-breathe} From 0e957e064a37348ebb8958d727e7f60a395ef8ae Mon Sep 17 00:00:00 2001 From: Paul Wackerow <54227730+wackerow@users.noreply.github.com> Date: Tue, 7 May 2024 15:51:42 -0700 Subject: [PATCH 6/6] revert: regressions from recent changes --- .../translations/ja/community/get-involved/index.md | 5 +---- .../translations/ja/community/grants/index.md | 1 - .../patricia-merkle-trie/index.md | 12 ++++++------ 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/public/content/translations/ja/community/get-involved/index.md b/public/content/translations/ja/community/get-involved/index.md index f6f6036f258..f5272999cf1 100644 --- a/public/content/translations/ja/community/get-involved/index.md +++ b/public/content/translations/ja/community/get-involved/index.md @@ -90,7 +90,7 @@ ETHをステーキングすると、イーサリアムネットワークの保 ## プロダクトマネージャー {#product-managers} -- イーサリアムエコシステムは皆さんの才能が必要です。 多くの企業がプロダクトマネージャーの求人を行っています。 オープンソースプロジェクトへの貢献を始めたい場合は、[Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu)または[MetaCartel](https://www.metacartel.org/)にご連絡ください。 +- イーサリアムエコシステムは皆さんの才能が必要です。 多くの企業がプロダクトマネージャーの求人を行っています。 オープンソースプロジェクトへの貢献を始めたい場合は、[Ethereum Cat Herders](https://discord.com/invite/Nz6rtfJ8Cu)または[RaidGuild](https://www.raidguild.org/)にご連絡ください。 ## マーケティング {#marketing} @@ -121,16 +121,13 @@ ETHをステーキングすると、イーサリアムネットワークの保 - [DAOSquare](https://www.daosquare.io) [@DAOSquare](https://twitter.com/DAOSquare) - _非技術分野で分散型自律組織(DAO)の概念をプロモーションし、価値の創造を支援_ - [Developer DAO](https://www.developerdao.com/) [@developer_dao](https://twitter.com/developer_dao) - _インターネットは共同所有されるべきという信念を共有するデベロッパーコミュニティ_ - [dOrg](https://dOrg.tech) [@dOrg_tech](https://twitter.com/dOrg_tech) - _分散型自律組織(DAO)として機能しているフリーランスのWeb3開発共同体_ -- [DXdao](https://DXdao.eth.link/) [@DXdao](https://twitter.com/DXdao_) - _分散型開発、分散型アプリ(Dapp)のガバナンスとプロトコル_ - [HausDAO](https://daohaus.club) [@nowdaoit](https://twitter.com/nowdaoit) - _DAOhausのコミュニティガバナンス_ -- [Hero DAO](https://herodao.org/) [@hero_dao](https://twitter.com/hero_dao) - _コミュニティにより所有されているスーパーヒーロー・フランチャイズ_ - [LexDAO](https://lexdao.coop) [@lex_DAO](https://twitter.com/lex_DAO) - _リーガル・エンジニアリング_ - [Machi X](https://machix.com) [@MachiXOfficial](https://twitter.com/MachiXOfficial) - _アート・コミュニティ_ - [MetaCartel](https://metacartel.org) [@Meta_Cartel](https://twitter.com/Meta_Cartel) - _分散型自律組織(DAO)インキュベータ_ - [MetaCartel Ventures](https://metacartel.xyz) [@VENTURE_DAO](https://twitter.com/VENTURE_DAO) - _プレシード暗号プロジェクトのベンチャー_ - [MetaGame](https://metagame.wtf) [@MetaFam](https://twitter.com/MetaFam) - _実際のMMORPGゲームメカニクス_ - [MetaFactory](https://metafactory.ai) [@TheMetaFactory](https://twitter.com/TheMetaFactory) - _デジ・フィジカルのアパレルブランド_ -- [ΜΓΔ](https://metagammadelta.com/) (Meta Gamma Delta) [@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デベロッパーの共同体_ diff --git a/public/content/translations/ja/community/grants/index.md b/public/content/translations/ja/community/grants/index.md index 4bc24c0f156..c54199159b0 100644 --- a/public/content/translations/ja/community/grants/index.md +++ b/public/content/translations/ja/community/grants/index.md @@ -15,7 +15,6 @@ lang: ja これらのプログラムは、広範囲のプロジェクトに助成金を提供し、イーサリアムエコシステムを幅広くサポートするものです。 拡張性、コミュニティ構築、セキュリティ、プライバシーなどのソリューションが対象となり、 どれか1つのイーサリアムプラットフォームに固有の助成プログラムではありません。 不明な場合は、まずはこちらから始めてみてください。 - [EFエコシステム・サポート・プログラム](https://esp.ethereum.foundation) - _ユニバーサルツール、インフラストラクチャ、研究、公共財を対象とした、イーサリアムにプラスとなるオープンソース・プロジェクトへの資金提供_ -- [MetaCartel](https://www.metacartel.org/grants/) - _分散型アプリ(Dapp)開発、分散型自律組織(DAO)作成_ - [Moloch DAO](https://www.molochdao.com/) - _プライバシー、レイヤー2スケーリング、クライアントセキュリティなど_ - [分散型自律組織(DAO)の助成](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) - _助成プログラムを提供する組織のGoogleスプレッドシート_ - [学術助成金](https://esp.ethereum.foundation/academic-grants) - _イーサリアム関連の学術研究をサポートする助成金_ diff --git a/public/content/translations/ja/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md b/public/content/translations/ja/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md index 2eca619a553..76ea7893d93 100644 --- a/public/content/translations/ja/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md +++ b/public/content/translations/ja/developers/docs/data-structures-and-encoding/patricia-merkle-trie/index.md @@ -164,14 +164,14 @@ sidebarDepth: 2 ### ツリーの例 {#example-trie} -次の4つのパスバリューのペアを含むツリーが必要だとします。 `('do', 'verb')`、`('dog', 'puppy')`、`('doge', 'coin')`、`('horse', 'stallion')` +次の4つのパスバリューのペアを含むツリーが必要だとします。 `('do', 'verb')`、`('dog', 'puppy')`、`('doge', 'coins')`、`('horse', 'stallion')` まず、パスと値(バリュー)の両方を`bytes`に変換します。 以下では、_paths_を実際のバイト表現 `<>`によって表示しています。しかし、 _values_は、分かりやすいように文字列として`''`で表示しています(実際は`bytes`) 。 ``` <64 6f> : 'verb' <64 6f 67> : 'puppy' - <64 6f 67 65> : 'coin' + <64 6f 67 65> : 'coins' <68 6f 72 73 65> : 'stallion' ``` @@ -180,12 +180,12 @@ sidebarDepth: 2 ``` rootHash: [ <16>, hashA ] hashA: [ <>, <>, <>, <>, hashB, <>, <>, <>, [ <20 6f 72 73 65>, 'stallion' ], <>, <>, <>, <>, <>, <>, <>, <> ] - hashB: [ <00 6f>, hashD ] - hashD: [ <>, <>, <>, <>, <>, <>, hashE, <>, <>, <>, <>, <>, <>, <>, <>, <>, 'verb' ] - hashE: [ <17>, [ <>, <>, <>, <>, <>, <>, [ <35>, 'coin' ], <>, <>, <>, <>, <>, <>, <>, <>, <>, 'puppy' ] ] + hashB: [ <00 6f>, hashC ] + hashC: [ <>, <>, <>, <>, <>, <>, hashD, <>, <>, <>, <>, <>, <>, <>, <>, <>, 'verb' ] + hashD: [ <17>, [ <>, <>, <>, <>, <>, <>, [ <35>, 'coins' ], <>, <>, <>, <>, <>, <>, <>, <>, <>, 'puppy' ] ] ``` -1つのノードが内部の別のノードから参照されるとき、含まれているのは、`H(rlp.encode(x))`であり、`H(x) = keccak256(x) if len(x) >= 32 else x`と`rlp.encode`は、[RLP](/developers/docs/data-structures-and-encoding/rlp)エンコーディング関数です。 +1つのノードが内部の別のノードから参照されるとき、含まれているのは、`H(rlp.encode(node))`であり、`H(x) = keccak256(x) if len(x) >= 32 else x`と`rlp.encode`は、[RLP](/developers/docs/data-structures-and-encoding/rlp)エンコーディング関数です。 ツリーを更新するとき、新しく作成されたノードの長さが32以上の_場合_、キーバリューのペア`(keccak256(x), x)`を永続的なルックアップテーブルに格納する必要があることに注意してください。 ただし、ノードがそれよりも短い場合、関数 function f(x) = x は可逆であるため、何も格納する必要はありません。