diff --git a/.all-contributorsrc b/.all-contributorsrc index 1368252e3f6..40bede61c16 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -5873,7 +5873,8 @@ "profile": "https://github.com/MiConnell", "contributions": [ "content", - "code" + "code", + "bug" ] }, { @@ -10700,7 +10701,7 @@ "login": "g0rbe", "name": "Dániel Görbe", "avatar_url": "https://avatars.githubusercontent.com/u/36860942?v=4", - "profile": "http://www.danielgorbe.com", + "profile": "https://www.gorbe.io", "contributions": [ "doc" ] @@ -10965,6 +10966,105 @@ "contributions": [ "content" ] + }, + { + "login": "sminempepe", + "name": "sminempepe", + "avatar_url": "https://avatars.githubusercontent.com/u/76882704?v=4", + "profile": "https://github.com/sminempepe", + "contributions": [ + "doc" + ] + }, + { + "login": "aslikaya", + "name": "aslikaya", + "avatar_url": "https://avatars.githubusercontent.com/u/9151261?v=4", + "profile": "https://github.com/aslikaya", + "contributions": [ + "doc" + ] + }, + { + "login": "lucas-amberg", + "name": "Lucas Amberg", + "avatar_url": "https://avatars.githubusercontent.com/u/102396588?v=4", + "profile": "http://lucasamberg.dev", + "contributions": [ + "doc" + ] + }, + { + "login": "a-hagi613", + "name": "Abdullahi", + "avatar_url": "https://avatars.githubusercontent.com/u/92589940?v=4", + "profile": "https://a-hagi.dev/", + "contributions": [ + "bug" + ] + }, + { + "login": "pranavkonde", + "name": "Pranav Konde", + "avatar_url": "https://avatars.githubusercontent.com/u/76070589?v=4", + "profile": "https://www.linkedin.com/in/pranav-konde-56aa141b5/", + "contributions": [ + "content" + ] + }, + { + "login": "MohitKambli", + "name": "Mohit Kambli", + "avatar_url": "https://avatars.githubusercontent.com/u/31406633?v=4", + "profile": "https://github.com/MohitKambli", + "contributions": [ + "code" + ] + }, + { + "login": "oleksandr-hyriavets", + "name": "Oleksandr Hyriavets", + "avatar_url": "https://avatars.githubusercontent.com/u/19614509?v=4", + "profile": "https://github.com/oleksandr-hyriavets", + "contributions": [ + "code" + ] + }, + { + "login": "titanism", + "name": "titanism", + "avatar_url": "https://avatars.githubusercontent.com/u/101466223?v=4", + "profile": "https://github.com/titanism", + "contributions": [ + "doc" + ] + }, + { + "login": "Maxservais", + "name": "Maxime Servais", + "avatar_url": "https://avatars.githubusercontent.com/u/43566493?v=4", + "profile": "https://www.ethereum-ecosystem.com/", + "contributions": [ + "code" + ] + }, + { + "login": "nebolax", + "name": "Alexey Nebolsin", + "avatar_url": "https://avatars.githubusercontent.com/u/63492346?v=4", + "profile": "https://t.me/nebolax", + "contributions": [ + "doc" + ] + }, + { + "login": "jimgreen2013", + "name": "jimgreen2013", + "avatar_url": "https://avatars.githubusercontent.com/u/15890793?v=4", + "profile": "https://github.com/jimgreen2013", + "contributions": [ + "doc" + ] } ], "contributorsPerLine": 7, diff --git a/.github/workflows/get-translation-progress.yml b/.github/workflows/get-translation-progress.yml new file mode 100644 index 00000000000..a476785c909 --- /dev/null +++ b/.github/workflows/get-translation-progress.yml @@ -0,0 +1,64 @@ +name: Update Crowdin translation progression + +on: + schedule: + - cron: "20 16 * * FRI" + workflow_dispatch: + +jobs: + create_pr: + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Install dependencies + run: yarn install + + - name: Install ts-node + run: yarn global add ts-node + + - name: Set up git + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Action" + + - name: Generate timestamp and readable date + id: date + run: | + echo "TIMESTAMP=$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV + echo "READABLE_DATE=$(date +'%B %-d')" >> $GITHUB_ENV + + - name: Fetch latest dev and create new branch + run: | + git fetch origin dev + git checkout -b "automated-update-${{ env.TIMESTAMP }}" origin/dev + + - name: Run script + run: npx ts-node -O '{"module":"commonjs"}' ./src/scripts/crowdin/getTranslationProgress.ts + env: + CROWDIN_API_KEY: ${{ secrets.CROWDIN_API_KEY }} + CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} + + - name: Commit and push + run: | + git add -A + git commit -m "Update Crowdin translation progress" + git push origin "automated-update-${{ env.TIMESTAMP }}" + + - name: Create PR body + run: | + echo "This PR was automatically created to update Crowdin translation progress." > pr_body.txt + echo "This workflows runs every Friday at 16:20 (UTC)." >> pr_body.txt + echo "" >> pr_body.txt + echo "Thank you to everyone contributing to translate ethereum.org ❤️" >> pr_body.txt + + - name: Create Pull Request + run: | + gh auth login --with-token <<< ${{ secrets.GITHUB_TOKEN }} + gh pr create --base dev --head "automated-update-${{ env.TIMESTAMP }}" --title "Update translation progress from Crowdin - ${{ env.READABLE_DATE }}" --body-file pr_body.txt diff --git a/README.md b/README.md index 67710751b64..f88848028fb 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![gitpoap badge](https://public-api.gitpoap.io/v1/repo/ethereum/ethereum-org-website/badge)](https://www.gitpoap.io/gh/ethereum/ethereum-org-website)
@@ -154,7 +154,7 @@ Learn more about how we review pull requests [here](docs/review-process.md).gas, addr, val, argOst, argLen, retOst, retLen
| `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
-| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
-| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
-| F6-F9 | _invalid_ | | | | | |
-| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| FB-FC | _invalid_ | | | | | |
-| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
-| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
-| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
+| Stack | Name | Gas | Anfangs-Stack | Ergebnis-Stack | Speicher | Anmerkungen |
+|:-----:|:-------------- |:-----------------------------------------------------------------------------------------------:|:------------------------------------------------ |:-------------------------------------------- |:----------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 00 | STOP | 0 | | | | halt execution |
+| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 addition modulo 2\*\*256 |
+| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 multiplication modulo 2\*\*256 |
+| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 addition modulo 2\*\*256 |
+| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 division |
+| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 division |
+| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 modulus |
+| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 modulus |
+| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 addition modulo N |
+| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 multiplication modulo N |
+| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 exponentiation modulo 2\*\*256 |
+| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [sign extend](https://wikipedia.org/wiki/Sign_extension) `x` from `(b+1)` bytes to 32 bytes |
+| 0C-0F | _invalid_ | | | | | |
+| 10 | LT | 3 | `a, b` | `a < b` | | uint256 less-than |
+| 11 | GT | 3 | `a, b` | `a > b` | | uint256 greater-than |
+| 12 | SLT | 3 | `a, b` | `a < b` | | int256 less-than |
+| 13 | SGT | 3 | `a, b` | `a > b` | | int256 greater-than |
+| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 equality |
+| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 iszero |
+| 16 | AND | 3 | `a, b` | `a && b` | | bitwise AND |
+| 17 | OR | 3 | `a, b` | `a \|\| b` | | bitwise OR |
+| 18 | XOR | 3 | `a, b` | `a ^ b` | | bitwise XOR |
+| 19 | NOT | 3 | `a` | `~a` | | bitwise NOT |
+| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | `i`th byte of (u)int256 `x`, from the left |
+| 1B | SHL | 3 | `shift, val` | `val << shift` | | shift left |
+| 1C | SHR | 3 | `shift, val` | `val >> shift` | | logical shift right |
+| 1D | SAR | 3 | `shift, val` | `val >> shift` | | arithmetic shift right |
+| 1E-1F | _invalid_ | | | | | |
+| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 |
+| 21-2F | _invalid_ | | | | | |
+| 30 | ADDRESS | 2 | `.` | `address(this)` | | address of executing contract |
+| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | balance, in wei |
+| 32 | ORIGIN | 2 | `.` | `tx.origin` | | address that originated the tx |
+| 33 | CALLER | 2 | `.` | `msg.sender` | | address of msg sender |
+| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg value, in wei |
+| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | read word from msg data at index `idx` |
+| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | length of msg data, in bytes |
+| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | copy msg data |
+| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | length of executing contract's code, in bytes |
+| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | copy executing contract's bytecode |
+| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | gas price of tx, in wei per unit gas [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |
+| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | size of code at addr, in bytes |
+| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | copy code from `addr` |
+| 3D | RETURNDATASIZE | 2 | `.` | `size` | | size of returned data from last external call, in bytes |
+| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copy returned data from last external call |
+| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `Hash` | | hash = addr.exists ? keccak256(addr.code) : 0 |
+| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | |
+| 41 | COINBASE | 2 | `.` | `block.coinbase` | | address of miner of current block |
+| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | timestamp of current block |
+| 43 | NUMBER | 2 | `.` | `block.number` | | number of current block |
+| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | randomness beacon |
+| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | gas limit of current block |
+| 46 | CHAINID | 2 | `.` | `chain_id` | | push current [chain id](https://eips.ethereum.org/EIPS/eip-155) onto stack |
+| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | balance of executing contract, in wei |
+| 48 | BASEFEE | 2 | `.` | `block.basefee` | | base fee of current block |
+| 49-4F | _invalid_ | | | | | |
+| 50 | POP | 2 | `_anon` | `.` | | remove item from top of stack and discard it |
+| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | read word from memory at offset `ost` |
+| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | write a word to memory |
+| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | write a single byte to memory |
+| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | read word from storage |
+| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | write word to storage |
+| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` mark that `pc` is only assigned if `dst` is a valid jumpdest |
+| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` |
+| 58 | PC | 2 | `.` | `$pc` | | program counter |
+| 59 | MSIZE | 2 | `.` | `len(mem)` | | size of memory in current execution context, in bytes |
+| 5A | GAS | 2 | `.` | `gasRemaining` | | |
+| 5B | JUMPDEST | 1 | | | mark valid jump destination | a valid jump destination for example a jump destination not inside the push data |
+| 5C-5E | _invalid_ | | | | | |
+| 5F | PUSH0 | 2 | `.` | `uint8` | | Bringen Sie den konstanten Wert 0 in den Stack ein |
+| 60 | PUSH1 | 3 | `.` | `uint8` | | push 1-byte value onto stack |
+| 61 | PUSH2 | 3 | `.` | `uint16` | | push 2-byte value onto stack |
+| 62 | PUSH3 | 3 | `.` | `uint24` | | push 3-byte value onto stack |
+| 63 | PUSH4 | 3 | `.` | `uint32` | | push 4-byte value onto stack |
+| 64 | PUSH5 | 3 | `.` | `uint40` | | push 5-byte value onto stack |
+| 65 | PUSH6 | 3 | `.` | `uint48` | | push 6-byte value onto stack |
+| 66 | PUSH7 | 3 | `.` | `uint56` | | push 7-byte value onto stack |
+| 67 | PUSH8 | 3 | `.` | `uint64` | | push 8-byte value onto stack |
+| 68 | PUSH9 | 3 | `.` | `uint72` | | push 9-byte value onto stack |
+| 69 | PUSH10 | 3 | `.` | `uint80` | | push 10-byte value onto stack |
+| 6A | PUSH11 | 3 | `.` | `uint88` | | push 11-byte value onto stack |
+| 6B | PUSH12 | 3 | `.` | `uint96` | | push 12-byte value onto stack |
+| 6C | PUSH13 | 3 | `.` | `uint104` | | push 13-byte value onto stack |
+| 6D | PUSH14 | 3 | `.` | `uint112` | | push 14-byte value onto stack |
+| 6E | PUSH15 | 3 | `.` | `uint120` | | push 15-byte value onto stack |
+| 6F | PUSH16 | 3 | `.` | `uint128` | | push 16-byte value onto stack |
+| 70 | PUSH17 | 3 | `.` | `uint136` | | push 17-byte value onto stack |
+| 71 | PUSH18 | 3 | `.` | `uint144` | | push 18-byte value onto stack |
+| 72 | PUSH19 | 3 | `.` | `uint152` | | push 19-byte value onto stack |
+| 73 | PUSH20 | 3 | `.` | `uint160` | | push 20-byte value onto stack |
+| 74 | PUSH21 | 3 | `.` | `uint168` | | push 21-byte value onto stack |
+| 75 | PUSH22 | 3 | `.` | `uint176` | | push 22-byte value onto stack |
+| 76 | PUSH23 | 3 | `.` | `uint184` | | push 23-byte value onto stack |
+| 77 | PUSH24 | 3 | `.` | `uint192` | | push 24-byte value onto stack |
+| 78 | PUSH25 | 3 | `.` | `uint200` | | push 25-byte value onto stack |
+| 79 | PUSH26 | 3 | `.` | `uint208` | | push 26-byte value onto stack |
+| 7A | PUSH27 | 3 | `.` | `uint216` | | push 27-byte value onto stack |
+| 7B | PUSH28 | 3 | `.` | `uint224` | | push 28-byte value onto stack |
+| 7C | PUSH29 | 3 | `.` | `uint232` | | push 29-byte value onto stack |
+| 7D | PUSH30 | 3 | `.` | `uint240` | | push 30-byte value onto stack |
+| 7E | PUSH31 | 3 | `.` | `uint248` | | push 31-byte value onto stack |
+| 7F | PUSH32 | 3 | `.` | `uint256` | | push 32-byte value onto stack |
+| 80 | DUP1 | 3 | `a` | `a, a` | | clone 1st value on stack |
+| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | clone 2nd value on stack |
+| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | clone 3rd value on stack |
+| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | clone 4th value on stack |
+| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | clone 5th value on stack |
+| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | clone 6th value on stack |
+| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | clone 7th value on stack |
+| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | clone 8th value on stack |
+| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | clone 9th value on stack |
+| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | clone 10th value on stack |
+| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | clone 11th value on stack |
+| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | clone 12th value on stack |
+| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | clone 13th value on stack |
+| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | clone 14th value on stack |
+| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | clone 15th value on stack |
+| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | clone 16th value on stack |
+| 90 | SWAP1 | 3 | `a, b` | `b, a` | | |
+| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | |
+| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | |
+| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | |
+| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | |
+| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) |
+| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) |
+| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1) |
+| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2) |
+| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) |
+| A5-EF | _invalid_ | | | | | |
+| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) |
+| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen
| `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
+| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
+| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
+| F6-F9 | _invalid_ | | | | | |
+| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| FB-FC | _invalid_ | | | | | |
+| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
+| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
+| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
diff --git a/public/content/translations/de/developers/docs/gas/index.md b/public/content/translations/de/developers/docs/gas/index.md
index b669b72079d..a368ee37592 100644
--- a/public/content/translations/de/developers/docs/gas/index.md
+++ b/public/content/translations/de/developers/docs/gas/index.md
@@ -55,7 +55,7 @@ Jeder Block hat seine eigene Basisgebühr, welche als reservierter Preis erschei
Die Grundgebühr wird anhand einer Formel berechnet, die die Größe des vorherigen Blocks (die für alle Transaktionen verwendete Gasmenge) mit der Zielgröße vergleicht. Die Grundgebühr erhöht sich um maximal 12,5 % pro Block, wenn die Zielblockgröße überschritten wird. Dieses exponentielle Wachstum macht es wirtschaftlich unrentabel, die Blockgröße unbegrenzt hoch zu halten.
| Blocknummer | Enthaltenes Gas | Gebührenerhöhung | Aktuelle Grundgebühr |
-| ----------- | --------------: | ---------------: | -------------------: |
+| ----------- | ---------------:| ----------------:| --------------------:|
| 1 | 15 m | 0 % | 100 gwei |
| 2 | 30 m | 0 % | 100 gwei |
| 3 | 30 m | 12,5 % | 112,5 gwei |
@@ -70,7 +70,7 @@ Der obigen Tabelle folgend: Um eine Transaktion auf Block Nummer 9 zu erstellen,
Außerdem ist es unwahrscheinlich, dass es zu längeren Zeiträumen mit vollen Blöcken kommt, da die Grundgebühr vor einem vollen Block schnell ansteigt.
| Blocknummer | Enthaltenes Gas | Gebührenerhöhung | Aktuelle Grundgebühr |
-| ----------- | --------------: | ---------------: | -------------------: |
+| ----------- | ---------------:| ----------------:| --------------------:|
| 30 | 30 m | 12,5 % | 2705,6 gwei |
| ... | ... | 12,5 % | ... |
| 50 | 30 m | 12,5 % | 28531,3 gwei |
diff --git a/public/content/translations/de/developers/docs/networks/index.md b/public/content/translations/de/developers/docs/networks/index.md
index 4a32ec80066..0131cc16499 100644
--- a/public/content/translations/de/developers/docs/networks/index.md
+++ b/public/content/translations/de/developers/docs/networks/index.md
@@ -56,12 +56,11 @@ Die beiden öffentlichen Testnets, die die Client-Entwickler derzeit betreiben,
- [QuickNode Sepolia Faucet](https://faucet.quicknode.com/drip)
- [Grabteeth](https://grabteeth.xyz/)
- [PoW-Faucet](https://sepolia-faucet.pk910.de/)
-- [Sepolia-Faucet](https://faucet.sepolia.dev/)
-- [FaucETH](https://fauceth.komputing.org)
-- [Coinbase Wallet Faucet | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
-- [Alchemy Sepolia-Faucet](https://sepoliafaucet.com/)
-- [Infura Sepolia-Faucet](https://www.infura.io/faucet)
-- [Chainstack Sepolia-Faucet](https://faucet.chainstack.com/sepolia-faucet)
+- [Faucet für Coinbase-Wallet | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
+- [Faucet für Alchemy Sepolia](https://sepoliafaucet.com/)
+- [Faucet für Infura Sepolia](https://www.infura.io/faucet)
+- [Faucet für Chainstack Sepolia](https://faucet.chainstack.com/sepolia-faucet)
+- [Testnetz-Faucet | Sepolia](https://testnet-faucet.com/sepolia/)
#### Goerli _(Langzeit-Support)_ {#goerli}
@@ -113,9 +112,17 @@ Ein Testnet für [Optimism](https://www.optimism.io/).
- [Paradigm-Faucet](https://faucet.paradigm.xyz/)
- [Coinbase Wallet Faucet | Optimism Goerli](https://coinbase.com/faucets/optimism-goerli-faucet)
+#### Starknet Goerli {#starknet-goerli}
+
+Ein Testnetz für [Starknet](https://www.starknet.io).
+
+##### Faucets
+
+- [Starknet-Faucet](https://faucet.goerli.starknet.io)
+
## Private Netzwerke {#private-networks}
-Ein Ethereum-Netzwerk ist ein privates Netzwerk, wenn seine Knoten nicht mit einem öffentlichen Netzwerk verbunden sind (d. h. Mainnet oder ein Testnet). In diesem Zusammenhang bedeutet privat nur reserviert oder isoliert statt geschützt oder sicher.
+Ein Ethereum-Netzwerk ist ein privates Netzwerk, wenn seine Knoten nicht mit einem öffentlichen Netzwerk verbunden sind (z. B. mit Mainnet oder einem Testnet). In diesem Zusammenhang bedeutet privat nur reserviert oder isoliert statt geschützt oder sicher.
### Entwicklungsnetzwerke {#development-networks}
@@ -125,7 +132,7 @@ Es gibt Projekte und Tools, die dabei hilfreich sind. Erfahren Sie mehr über [E
### Konsortium-Netzwerke {#consortium-networks}
-Der Konsensprozess wird von einer vordefinierten Gruppe von Knoten gesteuert, die vertrauenswürdig sind. Zum Beispiel ein privates Netzwerk bekannter akademischer Institutionen, die jeweils einen einzelnen Knoten stellen, wodurch Blöcke mit einer Schwelle von Unterzeichnern innerhalb des Netzwerks validiert werden.
+Der Konsensprozess wird von einer vordefinierten Gruppe von Nodes gesteuert, die vertrauenswürdig sind. Beispielsweise ein privates Netzwerk bekannter akademischer Institutionen, die jeweils eine einzelne Node stellen, sowie Blöcke werden mithilfe einer Schwelle von Unterzeichnern innerhalb des Netzwerks validiert.
Wenn ein öffentliches Ethereum-Netzwerk wie das öffentliche Internet ist, dann ist ein Konsortialnetzwerk wie ein privates Intranet.
@@ -137,4 +144,4 @@ Wenn ein öffentliches Ethereum-Netzwerk wie das öffentliche Internet ist, dann
## Weiterführende Informationen {#further-reading}
- [Vorschlag: vorhersehbarer Ethereum-Testnet-Lebenszyklus](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17)
-- [Die Evolution der Ethereum-Testnets](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
+- [Die Entwicklung der Ethereum-Testnets](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
diff --git a/public/content/translations/de/developers/docs/nodes-and-clients/archive-nodes/index.md b/public/content/translations/de/developers/docs/nodes-and-clients/archive-nodes/index.md
index 49f6b56c0f0..2a1bab7cc38 100644
--- a/public/content/translations/de/developers/docs/nodes-and-clients/archive-nodes/index.md
+++ b/public/content/translations/de/developers/docs/nodes-and-clients/archive-nodes/index.md
@@ -56,7 +56,7 @@ Bevor Sie ihren eigenen Archivierungsknoten starten, sollten Sie die Unterschied
## Empfohlene Verfahren
-Neben den generellen [Empfehlungen zum Betreiben eines Knotens](/developers/docs/nodes-and-clients/run-a-node/) kann ein Archivierungsknoten höhere Anforderungen an Hardware und Wartung stellen. In Anbetracht von Erigons [Schlüsselfunktionen](https://github.com/ledgerwatch/erigon#key-features) ist der praktischste Ansatz, die [Erigon](/developers/docs/nodes-and-clients/#erigon)-Client-Implementation zu verwenden.
+Abgesehen von den generellen [Empfehlungen zum Betreiben einer Node](/developers/docs/nodes-and-clients/run-a-node/) kann eine Archivierungs-Node höhere Anforderungen an Hardware und Wartung stellen. In Anbetracht von Erigons [Schlüsselfunktionen](https://github.com/ledgerwatch/erigon#key-features) ist der praktischste Ansatz, die [Erigon](/developers/docs/nodes-and-clients/#erigon)-Client-Implementation zu verwenden.
### Hardware
diff --git a/public/content/translations/de/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/de/developers/docs/nodes-and-clients/client-diversity/index.md
index 38bb734b15e..9dd6b3ba85b 100644
--- a/public/content/translations/de/developers/docs/nodes-and-clients/client-diversity/index.md
+++ b/public/content/translations/de/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -31,7 +31,7 @@ Die Client-Vielfalt bietet auch eine gewisse Widerstandsfähigkeit gegen Angriff
Ein Fehler in einem Konsensclient mit mehr als 33 % der Ethereum-Knoten könnte verhindern, dass die Konsensebene finalisieren kann. Das bedeutet, dass die Nutzer nicht darauf vertrauen können, dass Transaktionen nicht irgendwann rückgängig gemacht oder geändert werden. Dies wäre für viele der auf Ethereum aufbauenden Anwendungen, insbesondere DeFi, sehr problematisch.
-.env
ファイルをコミットしないでください! .env
ファイルを誰かと共有したり公開したりしないようにしてください。秘密が漏洩する可能性があります。 バージョン管理ツールを使用している場合は、.env
をgitignoreファイルに追加します。
UserOperation
と呼ばれる新しいオブジェクトを中心に構築されており、ユーザーからのアクションと関連する署名をパッケージ化します。 これらのUserOperation
オブジェクトは、専用のメンプールにブロードキャストされます。メンプールでは、バリデータがオブジェクトを収集して「バンドルトランザクション」にまとめます。 バンドルトランザクションは、複数のUserOperations
のシーケンスを表し、通常のトランザクションと同じようにイーサリアムブロックに含めることができます。バンドルトランザクションは、バリデータによって、通常のトランザクションと同じように、手数料最大化選択モデルを使用して選択されます。
+EIP-4337は、イーサリアムのプロトコルを変更せずに、分散型による方法でネイティブのスマートコントラクトウォレットをサポートする最初のステップです。 スマートコントラクトウォレットをサポートするコンセンサスレイヤーを変更する代わりに、通常のトランザクションのゴシッププロトコルに新しいシステムが個別に追加されます。 この上位レベルのシステムは、 UserOperation
と呼ばれる新しいオブジェクトを中心に構築されており、ユーザーからのアクションと関連する署名をパッケージ化します。 これらのUserOperation
オブジェクトは、専用のメンプールにブロードキャストされます。メンプールでは、バリデータがオブジェクトを収集して「バンドルトランザクション」にまとめます。 バンドルトランザクションは、複数のUserOperations
のシーケンスを表し、通常のトランザクションと同じようにイーサリアムブロックに含めることができます。バンドルトランザクションは、バリデータによって、通常のトランザクションと同じように、手数料最大化選択モデルを使用して選択されます。
-EIP-4337 では、ウォレットの動作方法も変わります。 各ウォレットで共通の複雑な安全ロジックを、ウォレットごとに再実装するのではなく、グローバルウォレットコントラクトと呼ばれる"エントリポイント"にアウトソースします。 これにより、フィーの支払いや EVM コードの実行などの操作が処理されるため、ウォレットデベロッパーは、優れたユーザーエクスペリエンスを提供することに集中できます。
+EIP-4337では、ウォレットの動作方法も変わります。 各ウォレットで共通の複雑な安全ロジックを、ウォレットごとに再実装するのではなく、グローバルウォレットコントラクトと呼ばれる"エントリポイント"にアウトソースします。 これにより、フィーの支払いやEVMコードの実行などの操作が処理されるため、ウォレットデベロッパーは、優れたユーザーエクスペリエンスを提供することに集中できます。
-注記: EIP4337 エントリポイントコントラクトは、2023 年 3 月 1 日にイーサリアムのメインネットにデプロイされました。 Etherscanでコントラクトを確認できます。
+注記: EIP4337エントリポイントコントラクトは、2023年3月1日にイーサリアムのメインネットにデプロイされました。 Etherscanでコントラクトを確認できます。
AA_TX_TYPE
を導入することで、イーサリアムプロトコルを更新することを目的としています。AA_TX_TYPE
には、nonce
、target
、data
の 3 つのフィールドがあり、nonce
はトランザクションカウンタ、target
はエントリポイントのコントラクトアドレス、data
は EVM バイトコードです。 これらのトランザクションを実行するには、NONCE
とPAYGAS
という 2 つの新しい命令(オペコード)を EVM に追加する必要があります。 このNONCE
オペコードは、トランザクションのシーケンスを追跡します。一方PAYGAS
は、トランザクションの実行に必要なガスを計算してコントラクトの残高から引き出します。 これらの新機能により、イーサリアムに必要なインフラストラクチャがイーサリアムのプロトコルに組み込まれるため、スマートコントラクトウォレットをネイティブにサポートできます。
+EIP-2938は、新しいトランザクションタイプAA_TX_TYPE
を導入することで、イーサリアムプロトコルを更新することを目的としています。AA_TX_TYPE
には、nonce
、target
、data
の3つのフィールドがあり、nonce
はトランザクションカウンタ、target
はエントリポイントのコントラクトアドレス、data
はEVMバイトコードです。 これらのトランザクションを実行するには、NONCE
とPAYGAS
という2つの新しい命令(オペコード)をEVMに追加する必要があります。 このNONCE
オペコードは、トランザクションのシーケンスを追跡します。一方PAYGAS
は、トランザクションの実行に必要なガスを計算してコントラクトの残高から引き出します。 これらの新機能により、イーサリアムに必要なインフラストラクチャがイーサリアムのプロトコルに組み込まれるため、スマートコントラクトウォレットをネイティブにサポートできます。
-現在、EIP-2938 はアクティブではありません。 プロトコルの変更が必要ない EIP-4337 が、コミュニティの支持を得ています。
+現在、EIP-2938はアクティブではありません。 プロトコルの変更が必要ないEIP-4337が、コミュニティの支持を得ています。
AUTH
と AUTHCALL
という新しい 2 つのオペコードを追加する必要があります。 EIP-3074 では、スマートコントラクトウォレットの利点を、コントラクトなしでも利用できるようになります。代わりに、「インボーカー」と呼ばれるアップグレード不可能、ステートレス、トラストレスである特定のタイプのコントラクトがトランザクションを処理します。
+EIP-3074では、イーサリアムの外部所有アカウントを更新し、スマートコントラクトにコントロールを委任できるようにすることを目的としています。 つまり、スマートコントラクトのロジックがEOAから発生するトランザクションを承認できるということです。 また、ガススポンサーやバッチトランザクションなどの機能が使えるようになります。 この機能を使用するには、AUTH
と AUTHCALL
という新しい2つのオペコードを追加する必要があります。 EIP-3074では、スマートコントラクトウォレットの利点を、コントラクトなしでも利用できるようになります。代わりに、「インボーカー」と呼ばれるアップグレード不可能、ステートレス、トラストレスである特定のタイプのコントラクトがトランザクションを処理します。
-現在、EIP-3074 はアクティブではありません。 プロトコルの変更が必要ない EIP-4337 が、コミュニティの支持を得ています。
+現在、EIP-3074はアクティブではありません。 プロトコルの変更が必要ないEIP-4337が、コミュニティの支持を得ています。
gas, addr, val, argOst, argLen, retOst, retLen
| `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
-| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
-| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
-| F6-F9 | _invalid_ | | | | | |
-| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| FB-FC | _invalid_ | | | | | |
-| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
-| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
-| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
+| Pilha | Nome | Gás | Pilha inicial | Pilha resultante | Memória / Armazenamento | Observações |
+|:-----:|:-------------- |:-----------------------------------------------------------------------------------------------:|:------------------------------------------------ |:-------------------------------------------- |:----------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 00 | STOP | 0 | | | | halt execution |
+| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 addition modulo 2\*\*256 |
+| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 multiplication modulo 2\*\*256 |
+| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 addition modulo 2\*\*256 |
+| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 division |
+| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 division |
+| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 modulus |
+| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 modulus |
+| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 addition modulo N |
+| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 multiplication modulo N |
+| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 exponentiation modulo 2\*\*256 |
+| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [sign extend](https://wikipedia.org/wiki/Sign_extension) `x` from `(b+1)` bytes to 32 bytes |
+| 0C-0F | _invalid_ | | | | | |
+| 10 | LT | 3 | `a, b` | `a < b` | | uint256 less-than |
+| 11 | GT | 3 | `a, b` | `a > b` | | uint256 greater-than |
+| 12 | SLT | 3 | `a, b` | `a < b` | | int256 less-than |
+| 13 | SGT | 3 | `a, b` | `a > b` | | int256 greater-than |
+| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 equality |
+| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 iszero |
+| 16 | AND | 3 | `a, b` | `a && b` | | bitwise AND |
+| 17 | OR | 3 | `a, b` | `a \|\| b` | | bitwise OR |
+| 18 | XOR | 3 | `a, b` | `a ^ b` | | bitwise XOR |
+| 19 | NOT | 3 | `a` | `~a` | | bitwise NOT |
+| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | `i`th byte of (u)int256 `x`, from the left |
+| 1B | SHL | 3 | `shift, val` | `val << shift` | | shift left |
+| 1C | SHR | 3 | `shift, val` | `val >> shift` | | logical shift right |
+| 1D | SAR | 3 | `shift, val` | `val >> shift` | | arithmetic shift right |
+| 1E-1F | _invalid_ | | | | | |
+| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 |
+| 21-2F | _invalid_ | | | | | |
+| 30 | ADDRESS | 2 | `.` | `address(this)` | | address of executing contract |
+| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | balance, in wei |
+| 32 | ORIGIN | 2 | `.` | `tx.origin` | | address that originated the tx |
+| 33 | CALLER | 2 | `.` | `msg.sender` | | address of msg sender |
+| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg value, in wei |
+| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | read word from msg data at index `idx` |
+| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | length of msg data, in bytes |
+| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | copy msg data |
+| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | length of executing contract's code, in bytes |
+| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | copy executing contract's bytecode |
+| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | gas price of tx, in wei per unit gas [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |
+| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | size of code at addr, in bytes |
+| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | copy code from `addr` |
+| 3D | RETURNDATASIZE | 2 | `.` | `size` | | size of returned data from last external call, in bytes |
+| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copy returned data from last external call |
+| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `hash` | | hash = addr.exists ? keccak256(addr.code) : 0 |
+| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | |
+| 41 | COINBASE | 2 | `.` | `block.coinbase` | | address of miner of current block |
+| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | timestamp of current block |
+| 43 | NUMBER | 2 | `.` | `block.number` | | number of current block |
+| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | randomness beacon |
+| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | gas limit of current block |
+| 46 | CHAINID | 2 | `.` | `chain_id` | | push current [chain id](https://eips.ethereum.org/EIPS/eip-155) onto stack |
+| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | balance of executing contract, in wei |
+| 48 | BASEFEE | 2 | `.` | `block.basefee` | | base fee of current block |
+| 49-4F | _invalid_ | | | | | |
+| 50 | POP | 2 | `_anon` | `.` | | remove item from top of stack and discard it |
+| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | read word from memory at offset `ost` |
+| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | write a word to memory |
+| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | write a single byte to memory |
+| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | read word from storage |
+| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | write word to storage |
+| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` mark that `pc` is only assigned if `dst` is a valid jumpdest |
+| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` |
+| 58 | PC | 2 | `.` | `$pc` | | program counter |
+| 59 | MSIZE | 2 | `.` | `len(mem)` | | size of memory in current execution context, in bytes |
+| 5A | GAS | 2 | `.` | `gasRemaining` | | |
+| 5B | JUMPDEST | 1 | | | mark valid jump destination | a valid jump destination for example a jump destination not inside the push data |
+| 5C-5E | _invalid_ | | | | | |
+| 5F | PUSH0 | 2 | `.` | `uint8` | | empurra o valor constante 0 para a pilha |
+| 60 | PUSH1 | 3 | `.` | `uint8` | | push 1-byte value onto stack |
+| 61 | PUSH2 | 3 | `.` | `uint16` | | push 2-byte value onto stack |
+| 62 | PUSH3 | 3 | `.` | `uint24` | | push 3-byte value onto stack |
+| 63 | PUSH4 | 3 | `.` | `uint32` | | push 4-byte value onto stack |
+| 64 | PUSH5 | 3 | `.` | `uint40` | | push 5-byte value onto stack |
+| 65 | PUSH6 | 3 | `.` | `uint48` | | push 6-byte value onto stack |
+| 66 | PUSH7 | 3 | `.` | `uint56` | | push 7-byte value onto stack |
+| 67 | PUSH8 | 3 | `.` | `uint64` | | push 8-byte value onto stack |
+| 68 | PUSH9 | 3 | `.` | `uint72` | | push 9-byte value onto stack |
+| 69 | PUSH10 | 3 | `.` | `uint80` | | push 10-byte value onto stack |
+| 6A | PUSH11 | 3 | `.` | `uint88` | | push 11-byte value onto stack |
+| 6B | PUSH12 | 3 | `.` | `uint96` | | push 12-byte value onto stack |
+| 6C | PUSH13 | 3 | `.` | `uint104` | | push 13-byte value onto stack |
+| 6D | PUSH14 | 3 | `.` | `uint112` | | push 14-byte value onto stack |
+| 6E | PUSH15 | 3 | `.` | `uint120` | | push 15-byte value onto stack |
+| 6F | PUSH16 | 3 | `.` | `uint128` | | push 16-byte value onto stack |
+| 70 | PUSH17 | 3 | `.` | `uint136` | | push 17-byte value onto stack |
+| 71 | PUSH18 | 3 | `.` | `uint144` | | push 18-byte value onto stack |
+| 72 | PUSH19 | 3 | `.` | `uint152` | | push 19-byte value onto stack |
+| 73 | PUSH20 | 3 | `.` | `uint160` | | push 20-byte value onto stack |
+| 74 | PUSH21 | 3 | `.` | `uint168` | | push 21-byte value onto stack |
+| 75 | PUSH22 | 3 | `.` | `uint176` | | push 22-byte value onto stack |
+| 76 | PUSH23 | 3 | `.` | `uint184` | | push 23-byte value onto stack |
+| 77 | PUSH24 | 3 | `.` | `uint192` | | push 24-byte value onto stack |
+| 78 | PUSH25 | 3 | `.` | `uint200` | | push 25-byte value onto stack |
+| 79 | PUSH26 | 3 | `.` | `uint208` | | push 26-byte value onto stack |
+| 7A | PUSH27 | 3 | `.` | `uint216` | | push 27-byte value onto stack |
+| 7B | PUSH28 | 3 | `.` | `uint224` | | push 28-byte value onto stack |
+| 7C | PUSH29 | 3 | `.` | `uint232` | | push 29-byte value onto stack |
+| 7D | PUSH30 | 3 | `.` | `uint240` | | push 30-byte value onto stack |
+| 7E | PUSH31 | 3 | `.` | `uint248` | | push 31-byte value onto stack |
+| 7F | PUSH32 | 3 | `.` | `uint256` | | push 32-byte value onto stack |
+| 80 | DUP1 | 3 | `a` | `a, a` | | clone 1st value on stack |
+| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | clone 2nd value on stack |
+| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | clone 3rd value on stack |
+| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | clone 4th value on stack |
+| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | clone 5th value on stack |
+| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | clone 6th value on stack |
+| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | clone 7th value on stack |
+| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | clone 8th value on stack |
+| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | clone 9th value on stack |
+| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | clone 10th value on stack |
+| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | clone 11th value on stack |
+| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | clone 12th value on stack |
+| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | clone 13th value on stack |
+| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | clone 14th value on stack |
+| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | clone 15th value on stack |
+| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | clone 16th value on stack |
+| 90 | SWAP1 | 3 | `a, b` | `b, a` | | |
+| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | |
+| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | |
+| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | |
+| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | |
+| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) |
+| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) |
+| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1) |
+| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2) |
+| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) |
+| A5-EF | _invalid_ | | | | | |
+| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) |
+| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen
| `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
+| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
+| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
+| F6-F9 | _invalid_ | | | | | |
+| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| FB-FC | _invalid_ | | | | | |
+| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
+| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
+| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
diff --git a/public/content/translations/pt-br/developers/docs/gas/index.md b/public/content/translations/pt-br/developers/docs/gas/index.md
index 2d3458231d1..dd94bfd39df 100644
--- a/public/content/translations/pt-br/developers/docs/gas/index.md
+++ b/public/content/translations/pt-br/developers/docs/gas/index.md
@@ -24,7 +24,7 @@ Taxas de gas tem que ser pagas na moeda nativa do Ethereum, ether (ETH). Preços
Por exemplo, em vez de dizer que seu gás custa 0.000000001 Ether, pode-se dizer que ele custa 1 Gwei.
-A palavra 'gwei' é uma contração de 'giga-wei', significando 'bilhão de wei'. Um gwei é igual a um bilhão de wei. O próprio Wei (nomeado em homenagem a [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), criador do [B-Money](https://www.investopedia.com/terms/b/bmoney.asp)) é a menor unidade de ETH.
+A palavra 'gwei' é uma contração de 'giga-wei', significando 'bilhão de wei'. Um gwei é igual a um bilhão de wei. O próprio Wei (nomeado em homenagem a [Wei Dai](https://wikipedia.org/wiki/WeiDai), criador do [B-Money](https://www.investopedia.com/terms/b/bmoney.asp)) é a menor unidade de ETH.
## Como são calculadas as taxas de gás? {#how-are-gas-fees-calculated}
@@ -55,7 +55,7 @@ Cada bloco tem uma taxa base que funciona como um preço de reserva. Para ser el
A taxa base é calculada por uma fórmula que compara o tamanho do bloco anterior (a quantidade de gás utilizada para todas as transações) com o tamanho do alvo. A taxa base aumentará em um máximo de 12,5% por bloco se o tamanho do bloco de destino for excedido. Esse crescimento exponencial torna economicamente inviável que o tamanho do bloco permaneça elevado indefinidamente.
| Número do bloco | Gás incluído | Aumento de taxa | Taxa base atual |
-| --------------- | -----------: | --------------: | --------------: |
+| --------------- | ------------:| ---------------:| ---------------:|
| 1 | 15M | 0% | 100 gwei |
| 2 | 30M | 0% | 100 gwei |
| 3 | 30M | 12,5% | 112,5 gwei |
@@ -70,7 +70,7 @@ Conforme a tabela acima, para criar uma transação no bloco número 9, uma cart
Também é importante notar que, é improvável que veremos picos prolongados de blocos completos, devido à velocidade com que a taxa base aumenta antes de um bloco completo.
| Número do bloco | Gás incluído | Aumento da taxa | Taxa base atual |
-| --------------- | -----------: | --------------: | --------------: |
+| --------------- | ------------:| ---------------:| ---------------:|
| 30 | 30M | 12,5% | 2705,6 gwei |
| ... | ... | 12,5% | ... |
| 50 | 30M | 12,5% | 28531,3 gwei |
diff --git a/public/content/translations/pt-br/developers/docs/networking-layer/network-addresses/index.md b/public/content/translations/pt-br/developers/docs/networking-layer/network-addresses/index.md
index 312b531d212..3f9220b964a 100644
--- a/public/content/translations/pt-br/developers/docs/networking-layer/network-addresses/index.md
+++ b/public/content/translations/pt-br/developers/docs/networking-layer/network-addresses/index.md
@@ -9,7 +9,7 @@ Nós Ethereum precisam se identificar com algumas informações básicas para se
## Pré-Requisitos {#prerequisites}
-É necessário ter algum entendimento sobre a [camada de rede](/developers/docs/networking-layer/) do Ethereum para entender esta página.
+É necessário ter algum entendimento sobre a [camada de rede](/developers/docs/networking-layer/)do Ethereum para entender esta página.
## Multiaddr {#multiaddr}
diff --git a/public/content/translations/pt-br/developers/docs/networking-layer/portal-network/index.md b/public/content/translations/pt-br/developers/docs/networking-layer/portal-network/index.md
new file mode 100644
index 00000000000..921bf996809
--- /dev/null
+++ b/public/content/translations/pt-br/developers/docs/networking-layer/portal-network/index.md
@@ -0,0 +1,82 @@
+---
+title: A Rede Portal
+description: Uma visão geral da Rede Portal - uma rede em desenvolvimento para dar suporte a clientes com poucos recursos.
+lang: pt-br
+---
+
+O Ethereum é uma rede composta de computadores que rodam o software Ethereum. Cada um destes computadores é chamado de um 'nódulo'. O software cliente permite a um nódulo enviar e receber dados na rede Ethereum, e verifica os dados contra as regras do protocolo Ethereum. Nódulos mantém um monte de dados históricos no armazenamento dos seus discos e adicionam a eles quando recebem novos pacotes de informações, conhecidos como blocos, de outros nódulos da rede. Isto é necessário para sempre checar que um nódulo tem informação consistente com o resto da rede. Isto significa que rodar um nódulo pode requerer muito espaço em disco. Algumas operações de nódulos podem requerer muita memória RAM também.
+
+Para resolver este problema de armazenamento, nódulos 'leves' tem sido desenvolvidos para requisitar informações de nódulos completos ao invés de armazenar eles mesmos. Entretanto, isto significa o nódulo leve não verifica as informações independentemente; ao invés disso, confia em outro nódulo. Isto também significa que nós completos são necessários para pegar um trabalho extra para servir estes nós leves.
+
+A Rede Portal é um novo desenho de rede para o Ethereum que visa resolver o problema de disponibilidade de dados para nódulos 'leves' sem ter que confiar ou colocar pressão extra nos nódulos completos, compartilhando os dados necessários em pequenos pedaços através da rede.
+
+Mais sobre [nós e clientes](/developers/docs/nodes-and-clients/)
+
+## Por que nós precisamos da Rede Portal {#why-do-we-need-portal-network}
+
+Os nódulos da Ethereum armazenam sua própria cópia total ou parcial do blockchain Ethereum. Esta cópia local é usada para validar transações e garantir que o nódulo está seguindo a cadeia correta. Este dado armazenado localmente permite aos nódulos verificarem de maneira independente que os dados de chegada são válidos e corretos sem precisar acreditar em nenhuma outra entidade.
+
+Esta cópia local do blockchain, além de seu estado associado e do recebimento de dados tomam muito espaço no disco rígido do nódulo. Por exemplo, um disco rígido de 2TB é recomendado para rodar um nó utilizando [Geth](https://geth.ethereum.org) pareado com um cliente de consenso. Usando sincronização instantânea, que armazena apenas dados da cadeia de um conjunto de blocos relativamente recente, Geth tipicamente ocupa cerca de 650GB de espaço em disco, mas cresce cerca de 14GB/semana (você pode podar o nó de volta a 650GB periodicamente).
+
+Isto significa que rodar nódulos pode ser caro, porque uma grande quantidade de espaço em disco tem de ser dedicada ao Ethereum. Há diversas soluções para este problema no roadmap do Ethereum, incluindo [expiração de histórico](/roadmap/statelessness/#history-expiry), [expiração de estado](/roadmap/statelessness/#state-expiry) e [falta de estado](/roadmap/statelessness/). Entretanto, ainda há muito até que eles sejam implementados. Há também [nódulos leves](/developers/docs/nodes-and-clients/light-clients/) que não gravam suas próprias cópias dos dados da cadeia, eles solicitam os dados que eles precisam dos nódulos completos. Entretanto, isso significa que nódulos leves tem que acreditar em nódulos completos para fornecer dados honestos e também estressa os nódulos completos que tem que servir os dados para as necessidades dos nódulos leves.
+
+A Rede Portal visa fornecer uma maneira alternativa para nós leves terem seus dados que sem requerer confiança ou adicionar significantemente ao trabalho que tem de ser feito pelos nós completos. Isto será feito com a introdução de uma nova maneira dos nós Ethereum compartilharem dados através da rede.
+
+## Como a Rede Portal funciona? {#how-does-portal-network-work}
+
+Nós Ethereum tem protocolos estritos que definem como eles se comunicam com os outros. Clientes de execução se comunicam usando um conjunto de sub-protocolos conhecidos como [DevP2P](/developers/docs/networking-layer/#devp2p), enquanto clientes de consenso usam uma pilha diferente de sub-protocolos chamada [libP2P](/developers/docs/networking-layer/#libp2p). Eles definem os tipos de dados que podem ser passados entre nós.
+
+![devP2P e libP2P](portal-network-devp2p-libp2p.png)
+
+Os nós podem também servir dados específicos através da [API JSON-RPC](/developers/docs/apis/json-rpc/), que é como apps e carteiras trocam informações com os nós Ethereum. Entretanto, nenhum destes são protocolos ideias para servir dados para clientes leves.
+
+Clientes leves não podem atualmente requisitar pedaços específicos da cadeia de dados pelo DevP2P ou libP2P, porque estes protocolos são desenhados somente para habilitar sincronização de cadeias e transmissão de blocos e transações. Clientes leves não querem fazer o download desta informação, porque deixariam de ser 'leves'.
+
+A API JSON-RPC não é a escolha ideal para requisições de dados de clientes leves também, porque ela confia na conexão para um nó completo específico ou fornecedor de RPC centralizado que pode servir os dados. Isto significa que clientes leves tem que confiar em um específico nó/provedor ser honesto, e também o nó completo pode ter que manipular muitas requisições de muitos clientes leves, adicionando aos requisitos da sua largura de banda.
+
+A meta da Rede Portal é repensar todo o desenho, construindo especificamente para leveza, fora das limitações de desenho dos clientes Ethereum existentes.
+
+A ideia central da Rede Portal é pegar os melhores bits da pilha da rede atual habilitando informações necessárias pelos clientes leves, como dados históricos e a identidade da cabeça atual da cadeia para ser servida através de um estilo DevP2P peso leve ponto-a-ponto em uma rede descentralizada, usando um [DHT](https://en.wikipedia.org/wiki/Distributed_hash_table) (similar à Bittorrent).
+
+A ideia é adicionar pequenas partes do histórico de dados total do Ethereum e algumas responsabilidades específicas de nós para cada nó. Então, requisições são servidas procurando os nós que armazenam o dado específico que foi requisitado e recuperando-o deles.
+
+Isto inverte o modelo normal de nós leves encontrando um único nó e requisitando a eles filtrar e servir grandes volumes de dados; ao invés disso, eles rapidamente filtram uma grande rede de nós onde cada um manipula pequenas quantidades de dados.
+
+O objetivo é permitir uma rede descentralizada de clientes Portal peso leve para:
+
+- rastrear a cabeça da cadeia
+- sincronizar dados recentes e históricos da cadeia
+- recuperar os dados de estado
+- transmitir transações
+- executar transações usando a [EVM](/developers/docs/evm/)
+
+Os benefícios deste desenho de rede são:
+
+- reduzir a dependência em fornecedores centralizados
+- reduzir o uso de banda de internet
+- minimizar ou zerar a sincronia
+- ser acessível a dispositivos com restrição de recursos (<1GB RAM, <100MB de disco, 1CPU)
+
+O diagrama abaixo mostra as funções dos clientes existentes que podem ser entregues pela Rede Portal, habilitando ao usuários acessar estas funções em dispositivos com muito poucos recursos.
+
+![tabela rede portal](portal-network-table2.png)
+
+## Diversidade de cliente por padrão {#client-diversity-as-default}
+
+Os desenvolvedores da Rede Portal também fizeram com que o design assumido construísse três clientes separados na Rede Portal desde o primeiro dia.
+
+Os clientes da Rede Portal são:
+
+- [Trin](https://github.com/ethereum/trin): escrito em Rust
+- [Fluffy](https://nimbus.team/docs/fluffy.html): escrito em Nim
+- [Ultralight](https://github.com/ethereumjs/ultralight): escrito em Typescript
+
+Ter várias implementações de clientes independentes melhora a resiliência e descentralização da rede Ethereum.
+
+Se um cliente enfrenta problemas de vulnerabilidades, outros clientes podem continuar a operar tranquilamente, evitando o ponto único de falha. Adicionalmente, diversidade na implementação de clientes fomenta inovação e competição, conduzindo melhorias e reduzindo risco de monocultura dentro do ecossistema.
+
+## Leitura adicional {#futher-reading}
+
+- [A Rede Portal (Piper Merriam na Devcon Bogota)](https://www.youtube.com/watch?v=0stc9jnQLXA).
+- [O desacordo da Rede Portal](https://discord.gg/CFFnmE7Hbs)
+- [O website da Rede Portal](https://www.ethportal.net/)
diff --git a/public/content/translations/pt-br/developers/docs/networks/index.md b/public/content/translations/pt-br/developers/docs/networks/index.md
index ec72e59b0fe..f01cbe3f3da 100644
--- a/public/content/translations/pt-br/developers/docs/networks/index.md
+++ b/public/content/translations/pt-br/developers/docs/networks/index.md
@@ -38,7 +38,7 @@ As duas redes de testes públicas que os desenvolvedores dos clientes estão atu
#### Sepolia {#sepolia}
-\*\*\*\*Sepolia é a rede de teste padrão recomendada para desenvolvimento de aplicativos. A rede Sepolia usa um conjunto de validadores autorizados. É bastante novo, o que significa que seu estado e história são bastante pequenos. Isso significa que a rede é rápida para sincronizar e que a execução de um nó requer menos armazenamento. Isso é útil para usuários que desejam ativar rapidamente um nó e interagir diretamente com a rede.
+****Sepolia é a rede de teste padrão recomendada para desenvolvimento de aplicativos. A rede Sepolia usa um conjunto de validadores autorizados. É bastante novo, o que significa que seu estado e história são bastante pequenos. Isso significa que a rede é rápida para sincronizar e que a execução de um nó requer menos armazenamento. Isso é útil para usuários que desejam ativar rapidamente um nó e interagir diretamente com a rede.
- Conjunto de validadores fechado, controlado pelo cliente & equipes de teste
- Nova rede de teste, menos aplicativos implantados que outras redes de teste
@@ -56,10 +56,11 @@ As duas redes de testes públicas que os desenvolvedores dos clientes estão atu
- [Faucet do QuickNode Sepolia](https://faucet.quicknode.com/drip)
- [Grabteeth](https://grabteeth.xyz/)
- [Faucet de PoW](https://sepolia-faucet.pk910.de/)
-- [Faucet da Carteira da Coinbase | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
+- [Faucet da Carteira Coinbase | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
- [Faucet do Alchemy Sepolia](https://sepoliafaucet.com/)
- [Faucet do Infura Sepolia](https://www.infura.io/faucet)
- [Faucet da Chainstack Sepolia](https://faucet.chainstack.com/sepolia-faucet)
+- [Faucet da rede de teste | Sepolia](https://testnet-faucet.com/sepolia/)
#### Goerli _(suporte a longo prazo)_ {#goerli}
@@ -102,7 +103,7 @@ Uma rede de testes para [Arbitrum](https://arbitrum.io/).
- [Faucet do Chainlink](https://faucets.chain.link/)
-#### Goerli otimista {#optimistic-goerli}
+#### Optimistic Goerli {#optimistic-goerli}
Uma rede de testes para [Optimism](https://www.optimism.io/).
@@ -111,26 +112,34 @@ Uma rede de testes para [Optimism](https://www.optimism.io/).
- [Faucet Paradigm](https://faucet.paradigm.xyz/)
- [Coinbase Wallet Faucet | Optimism Goerli](https://coinbase.com/faucets/optimism-goerli-faucet)
+#### Starknet Goerli {#starknet-goerli}
+
+Uma rede de teste para [Starknet](https://www.starknet.io).
+
+##### Faucets
+
+- [Faucet da Starknet](https://faucet.goerli.starknet.io)
+
## Redes privadas {#private-networks}
-Uma rede Ethereum é uma rede privada se seus nós não estiverem conectados a uma rede pública (ex: Rede principal e rede de testes). Neste contexto, privado significa apenas reservado ou isolado, em vez de protegido ou seguro.
+Uma rede Ethereum é uma rede privada se seus nódulos não estiverem conectados a uma rede pública (ex: Rede principal e rede de testes). Neste contexto, privado significa apenas reservado ou isolado, em vez de protegido ou seguro.
### Redes de desenvolvimento {#development-networks}
-Para desenvolver um aplicativo Ethereum, você deve executá-lo em uma rede privada para ver como funciona antes de implantá-lo. Tal como você pode criar um servidor local em seu computador para desenvolvimento Web, você pode criar uma instância local de cadeia de blocos para testar seu dapp. Isso permite uma iteração muito mais rápida do que uma rede de testes pública.
+Para desenvolver um aplicativo Ethereum, você deve executá-lo em uma rede privada para ver como funciona antes de implantá-lo. Tal como você pode criar um servidor local em seu computador para desenvolvimento Web, você pode criar uma instância local de blockchain para testar seu dapp. Isso permite uma iteração muito mais rápida do que uma rede de testes pública.
Existem projetos e ferramentas dedicadas a ajudá-lo com isso. Saiba mais sobre [redes de desenvolvimento](/developers/docs/development-networks/).
### Redes de consórcio {#consortium-networks}
-O processo de consenso é controlado por um conjunto predefinido de nós confiáveis. Por exemplo, uma rede privada de instituições acadêmicas conhecidas, cada uma administrando um único nó, e os blocos são validados por um limite de signatários dentro da rede.
+O processo de consenso é controlado por um conjunto predefinido de nódulos confiáveis. Por exemplo, uma rede privada de instituições acadêmicas conhecidas, cada uma administrando um único nódulo, e os blocos são validados por um limite de signatários na rede.
Se uma rede pública Ethereum é como a internet pública, uma rede de consórcio é como uma intranet privada.
## Ferramentas relacionadas {#related-tools}
- [Chainlist](https://chainlist.org/) _Lista de redes EVM para conectar carteiras e fornecedores aos identificadores de cadeia e rede apropriados_
-- [/Cadeias baseadas na EVM](https://github.com/ethereum-lists/chains) _repositório do GitHub com metadados de cadeias que alimenta a Chainlist_
+- [/Cadeias baseadas em EVM](https://github.com/ethereum-lists/chains) _Repositório do GitHub com metadados de cadeias que alimenta a Chainlist_
## Leitura adicional {#further-reading}
diff --git a/public/content/translations/pt-br/developers/docs/nodes-and-clients/archive-nodes/index.md b/public/content/translations/pt-br/developers/docs/nodes-and-clients/archive-nodes/index.md
index c9cfe4ef61a..9ec5ad14275 100644
--- a/public/content/translations/pt-br/developers/docs/nodes-and-clients/archive-nodes/index.md
+++ b/public/content/translations/pt-br/developers/docs/nodes-and-clients/archive-nodes/index.md
@@ -70,7 +70,7 @@ Durante a sincronização inicial, os clientes no modo arquivo executarão todas
## Leitura adicional {#further-reading}
-- [Nó completo Ethereum vs Nó de arquivo](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) — _QuickNode, setembro de 2022_
+- [Nó completo Ethereum vs Nó de arquivo](https://www.quicknode.com/guides/infrastructure/ethereum-full-node-vs-archive-node) — *QuickNode, setembro de 2022*
- [Construindo seu próprio nó de arquivo Ethereum](https://tjayrush.medium.com/building-your-own-ethereum-archive-node-72c014affc09) — _Thomas Jay Rush, agosto de 2021_
- [Como configurar Erigon, o RPC do Erigon e TrueBlocks (extração e API) como serviços](https://magnushansson.xyz/blog_posts/crypto_defi/2022-01-10-Erigon-Trueblocks) _– Magnus Hansson, atualizado em setembro de 2022_
diff --git a/public/content/translations/pt-br/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/pt-br/developers/docs/nodes-and-clients/client-diversity/index.md
index 18bad4e622a..f5061c43027 100644
--- a/public/content/translations/pt-br/developers/docs/nodes-and-clients/client-diversity/index.md
+++ b/public/content/translations/pt-br/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -31,7 +31,7 @@ A diversidade de clientes também oferece resiliência a ataques. Por exemplo, u
Um erro em um cliente de consenso com mais de 33% dos nós Ethereum poderia impedir a finalização da camada de consenso, e isso deixaria os utilizadores em dúvida com respeito à probabilidade de as transações não serem revertidas ou alteradas em algum momento. Isso seria muito problemático para muitos dos aplicativos construídos em cima do Ethereum, particularmente o DeFi.
-{message}
+ +{status}
+ + ++ {" "} + 🦊 + You must install MetaMask, a virtual Ethereum wallet, in your + browser. + +
+ + ), + } + } +} +``` + +Então, o que esse bloco gigante de código faz exatamente? + +Bem, primeiro, ele checar se a `window.ethereum` está habilitada no seu navegador. + +`window.ethereum` é uma API global injetada pela MetaMask e outros provedores de carteira que permitem que sites solicitem contas Ethereum dos usuários. Se aprovado, ele pode ler dados dos blockchains que o usuário está conectado, e sugerir que o usuário assine mensagens e transações. Confira a [documentação da MetaMask](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) para obter mais informações! + +Se `window.ethereum` _não está_ presente, então isso significa que o MetaMask não está instalado. Isso resulta em um objeto JSON sendo retornado, onde o `endereço` retornado é uma string vazia, e o `status` do objeto JSX repassa que o usuário deve instalar o MetaMask. + +Agora se `window.ethereum` _estiver_ presente, e é aí que as coisas ficam interessantes. + +Usando um laço try/catch, nós vamos tentar conectar ao MetaMask chamando[`window.ethereum.request({ method: "eth_requestAccounts" });`](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts). Chamando esta função o MetaMask irá abrir no navegador, onde o usuário será solicitado a conectar sua carteira ao seu dapp. + +- Se o usuário escolher conectar, `method: "eth_requestAccounts"` irá retornar uma array que contém todos os endereços de contas de usuário que conectaram ao dapp. No total, nossa função `connectWallet` retornará um objeto JSON que contém o _primeiro_ `address` desta matriz \(ver linha 9\) e uma mensagem `status` que pede que o usuário escreva uma mensagem para o contrato inteligente. +- Se o usuário rejeitar a conexão, então o objeto JSON vai conter uma string vazia para o `address` retornado e uma mensagem de `status` que reflete que o usuário rejeitou a conexão. + +Agora que nós escrevemos esta função `connectWallet`, o próximo passo é chamar ele para o nosso componente `HelloWorld.js`. + +#### Adicione a função `connectWallet` ao seu componente de interface do usuário `HelloWorld.js` {#add-the-connectWallet-function-to-your-HelloWorld-js-ui-component} + +Navegue para a função `connectWalletPressed` em `HelloWorld.js`, e atualize-o para o seguinte: + +```javascript +// HelloWorld.js + +const connectWalletPressed = async () => { + const walletResponse = await connectWallet() + setStatus(walletResponse.status) + setWallet(walletResponse.address) +} +``` + +Observe como a maior parte das nossas funcionalidades está abstraída do nosso componente `HelloWorld.js` do arquivo `interact.js`? É assim que respeitamos o paradigma M-V-C! + +Em `connectWalletPressed`, simplesmente fazemos uma chamada de espera (await) para a função `connectWallet`, importada, e usando sua resposta, nós atualizaremos nossas variáveis `status` e `walletAddress` através de seus state hooks. + +Agora, vamos salvar os dois arquivos `HelloWorld.js` e `interact.js` e testar nossa UI até agora. + +Abra seu navegador na página [http://localhost:3000/](http://localhost:3000/) e clique no botão “Connect Wallet” na parte superior direita da página. + +Se você tiver o MetaMask instalado, você será solicitado a conectar sua carteira ao seu dapp. Aceite o convite para se conectar. + +Observe que o botão de carteira agora mostra que o seu endereço está conectado! Ótimo!!🔥 + +Em seguida, tente atualizar a página... isso é estranho. Nosso botão de carteira está nos pedindo para conectar o MetaMask, mesmo que já esteja conectado... + +Entretanto, não tenha medo! Nós podemos endereçar (entendeu?) facilmente isso implementando `getCurrentWalletConnected`, o qual irá checar se um endereço já está conectado no nosso dapp e atualizar nossa UI de acordo! + +#### A função `getCurrentWalletConnected` {#the-getcurrentwalletconnected-function} + +Atualize a sua função `getCurrentWalletConnected` no arquivo `interact.js` como mostrado abaixo: + +```javascript +// interact.js + +export const getCurrentWalletConnected = async () => { + if (window.ethereum) { + try { + const addressArray = await window.ethereum.request({ + method: "eth_accounts", + }) + if (addressArray.length > 0) { + return { + address: addressArray[0], + status: "👆🏽 Write a message in the text-field above.", + } + } else { + return { + address: "", + status: "🦊 Connect to MetaMask using the top right button.", + } + } + } catch (err) { + return { + address: "", + status: "😥 " + err.message, + } + } + } else { + return { + address: "", + status: ( + ++ {" "} + 🦊 + You must install MetaMask, a virtual Ethereum wallet, in your + browser. + +
+ + ), + } + } +} +``` + +Este código é _muito_ similar à função `connectWallet` que nós acabamos de escrever no passo anterior. + +A diferença principal é que, em vez de chamar o método `eth_requestAccounts`, que abre o MetaMask para o usuário conectar sua carteira, aqui chamamos o método `eth_accounts`, que simplesmente retorna uma matriz que contém os endereços MetaMask atualmente conectados ao nosso dapp. + +Para ver esta função em ação, vamos chamar nossa função `useEffect` do nosso componente `HelloWorld.js`: + +```javascript +// HelloWorld.js + +useEffect(async () => { + const message = await loadCurrentMessage() + setMessage(message) + addSmartContractListener() + + const { address, status } = await getCurrentWalletConnected() + setWallet(address) + setStatus(status) +}, []) +``` + +Note que nós usamos a resposta da nossa chamada a `getCurrentWalletConnected` para atualizar nossa `walletAddress` e nossa variável de estado `status`. + +Agora que você adicionou este código, tente atualizar a janela do navegador. + +Ótimo!!!! O botão deve dizer que você está conectado e mostrar uma visualização do endereço de sua carteira conectada - mesmo depois de atualizar! + +#### Implemente `addWalletListener` {#implement-addwalletlistener} + +O passo final na configuração da nossa carteira dapp é implementar o ouvinte de carteira, para que nossa interface atualize quando o estado mudar, como quando o usuário desconecta ou troca de contas. + +No seu arquivo `HelloWorld.js`, modifique a sua função `addWalletListener` para o seguinte: + +```javascript +// HelloWorld.js + +function addWalletListener() { + if (window.ethereum) { + window.ethereum.on("accountsChanged", (accounts) => { + if (accounts.length > 0) { + setWallet(accounts[0]) + setStatus("👆🏽 Write a message in the text-field above.") + } else { + setWallet("") + setStatus("🦊 Connect to MetaMask using the top right button.") + } + }) + } else { + setStatus( ++ {" "} + 🦊 + You must install MetaMask, a virtual Ethereum wallet, in your browser. + +
+ ) + } +} +``` + +Eu aposto que você nem mesmo precisou da nossa ajuda para entender o que está acontecendo aqui neste ponto, mas por finalidade de clareza, vamos quebrá-lo em partes: + +- Primeiro, nossa função verifica se o `window.ethereum` está habilitado no seu navegador \(ex. MetaMask instalado\). + - Caso contrário, nós simplesmente configuramos a variável de estado `status` para uma JSX string que solicita o usuário instalar a MetaMask. + - Se estiver habilitado, configuramos o ouvinte `window.ethereum.on("accountsChanged")` na linha 3 que houve mudança de estado na carteira MetaMask, inclusive quando o usuário conecta uma conta adicional ao dapp, troca de conta ou desconecta uma conta. Se houver pelo menos uma conta conectada, a variável de estado `walletAddress` é atualizada como a primeira conta no array `accounts` retornada pelo ouvinte. Caso contrário, `walletAddress` é definida como uma string vazia. + +Por último, mas não menos importante, nós devemos chamá-la em nossa função `useEffect`: + +```javascript +// HelloWorld.js + +useEffect(async () => { + const message = await loadCurrentMessage() + setMessage(message) + addSmartContractListener() + + const { address, status } = await getCurrentWalletConnected() + setWallet(address) + setStatus(status) + + addWalletListener() +}, []) +``` + +E é isso! Concluímos com sucesso a programação de toda a nossa carteira! Agora, a nossa última tarefa: atualizar a mensagem armazenada no nosso contrato inteligente! + +### Passo 6: Implemente a função `updateMessage` {#step-6-implement-the-updateMessage-function} + +Tudo bem, nós chegamos ao trecho caseiro! No `updateMessage` do seu arquivo `interact.js`, façamos o seguinte: + +1. Certifique-se que a mensagem que nós queremos publicar no nosso contrato inteligente é válida +2. Assine nossa transação usando MetaMask +3. Chame esta função do nosso componente de frontend `HelloWorld.js` + +Isso não vai demorar muito; vamos terminar este dapp! + +#### Manipulação de erros de script {#input-error-handling} + +Naturalmente, faz sentido ter alguns tipos de gerencialmente de erros de entrada no início da função. + +Queremos que nossa função retorne rapidamente. Se não houver uma extensão MetaMask instalada, não haverá carteiras conectadas \(ou seja, o `address` transmitido é uma cadeira de caracteres vazia\) ou a `message` será uma cadeira de caracteres vazia. Vamos adicionar o seguinte gerencialmente de erro em `updateMessage`: + +```javascript +// interact.js + +export const updateMessage = async (address, message) => { + if (!window.ethereum || address === null) { + return { + status: + "💡 Connect your MetaMask wallet to update the message on the blockchain.", + } + } + + if (message.trim() === "") { + return { + status: "❌ Your message cannot be an empty string.", + } + } +} +``` + +Agora que ele tem o devido gerenciamento de erro de entrada, é hora de assinar a transação via MetaMask! + +#### Assinando a nossa transação {#signing-our-transaction} + +Se você já está confortável com as transações tradicionais Web3 do Ethereum, o código que vamos escrever em seguida será bastante familiar. Abaixo, nosso código de manipulação de erro de entrada, adicione o seguinte a `updateMessage`: + +```javascript +// interact.js + +//set up transaction parameters +const transactionParameters = { + to: contractAddress, // Required except during contract publications. + from: address, // must match user's active address. + data: helloWorldContract.methods.update(message).encodeABI(), +} + +//sign the transaction +try { + const txHash = await window.ethereum.request({ + method: "eth_sendTransaction", + params: [transactionParameters], + }) + return { + status: ( + + ✅{" "} + + View the status of your transaction on Etherscan! + +.env
! Please make sure never to share or expose your .env
file with anyone, as you are compromising your secrets in doing so. If you are using version control, add your .env
to a gitignore file.
+No faça commit do .env
! Por favor, tenha certeza de nunca compartilhar ou expor seu arquivo .env
com ninguém, pois estará comprometendo suas partes secretas ao fazê-lo. Se estiver usando um controle de versão, adicione seu .env
ao arquivo gitignore
.env
! Por favor, tenha certeza de nunca compartilhar ou expor seu arquivo .env
com ninguém, pois estará comprometendo suas partes secretas ao fazê-lo. Se estiver usando um controle de versão, adicione seu .env
ao arquivo gitignore.
-+ Simply add your asset's link, name, and description, then press "Mint." +
+ + +{status}
++ {" "} + 🦊 + You must install MetaMask, a virtual Ethereum wallet, in your + browser. + +
+ + ), + } + } +} +``` + +Vamos dividir o que este código faz: + +Primeiro, nossa função verifica se o `window.ethereum` está habilitado no seu navegador. + +`window.ethereum` é uma API global injetada pela MetaMask e outros provedores de carteira que permitem que sites solicitem contas Ethereum dos usuários. Se aprovada, ela pode ler dados das blockchains ao qual o usuário está conectado e sugerir que o usuário assine mensagens e transações. Confira a [documentação da MetaMask](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents) para obter mais informações! + +Se `window.ethereum` _não está_ presente, então isso significa que o MetaMask não está instalado. Isso resulta em um objeto JSON sendo retornado, onde o `endereço` retornado é uma string vazia, e o `status` do objeto JSX repassa que o usuário deve instalar o MetaMask. + +**A maioria das funções que escrevermos retornarão objetos JSON que podemos usar para atualizar nossas variáveis de estado e interface de usuário.** + +Agora se `window.ethereum` _estiver_ presente, e é aí que as coisas ficam interessantes. + +Usando um loop de try/catch, tentaremos nos conectar a MetaMask chamando`[window.ethereum.request({ method: "eth_requestAccounts" });](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts)`. Chamando esta função o MetaMask irá abrir no navegador, onde o usuário será solicitado a conectar sua carteira ao seu dapp. + +- Se o usuário escolher conectar-se, `método: "eth_requestAccounts"` retornará um array que contém todos os endereços de conta do usuário que estão conectados ao dapp. No total, nossa função `connectWallet` retornará um objeto JSON que contém o _primeiro_ `address` desta matriz \(ver linha 9\) e uma mensagem `status` que pede que o usuário escreva uma mensagem para o contrato inteligente. +- Se o usuário rejeitar a conexão, então o objeto JSON vai conter uma string vazia para o `address` retornado e uma mensagem de `status` que reflete que o usuário rejeitou a conexão. + +### Adicionar função connectWallet ao seu componente UI Minter.js {#add-connect-wallet} + +Agora que escrevemos esta função `connectWallet`, vamos conectá-la ao nosso componente `Minter.js.`. + +Primeiro, teremos que importar nossa função para o arquivo `Minter.js` adicionando `import { connectWallet } from "./utils/interact.js";` para o topo do arquivo `Minter.js`. Suas primeiras 11 linhas de `Minter.js` agora devem se parecer com isto: + +```javascript +import { useEffect, useState } from "react"; +import { connectWallet } from "./utils/interact.js"; + +const Minter = (props) => { + + //State variables + const [walletAddress, setWallet] = useState(""); + const [status, setStatus] = useState(""); + const [name, setName] = useState(""); + const [description, setDescription] = useState(""); + const [url, setURL] = useState(""); +``` + +Então, dentro da nossa função `connectWalletPressed`, vamos chamar nossa função importada `connectWallet`, assim: + +```javascript +const connectWalletPressed = async () => { + const walletResponse = await connectWallet() + setStatus(walletResponse.status) + setWallet(walletResponse.address) +} +``` + +Observe como a maior parte das nossas funcionalidades está abstraída do nosso componente `Minter.js` do arquivo `interact.js`? É assim que respeitamos o paradigma M-V-C! + +Em `connectWalletPressed`, simplesmente fazemos uma chamada de espera (await) para a função `connectWallet`, importada, e usando sua resposta, nós atualizaremos nossas variáveis `status` e `walletAddress` através de seus state hooks. + +Agora, vamos salvar os dois arquivos `Minter.js` e `interact.js` e testar nossa UI até agora. + +Abra seu navegador em localhost:3000, e pressione o botão "Conectar Carteira" no canto superior direito da página. + +Se você tiver o MetaMask instalado, você será solicitado a conectar sua carteira ao seu dapp. Aceite o convite para se conectar. + +Você verá que o botão da carteira agora reflete que seu endereço está conectado. + +Em seguida, tente atualizar a página... isso é estranho. Nosso botão de carteira está nos pedindo para conectar o MetaMask, mesmo que já esteja conectado... + +Mas não se preocupe! Nós podemos facilmente corrigir isso implementando uma função chamada `getCurrentWalletConnected`, que irá verificar se um endereço já está conectado ao nosso dapp e atualizará nossa interface do usuário adequadamente! + +### Função getCurrentWalletConnected {#get-current-wallet} + +Em seu arquivo `interact.js`, adicione a função`getCurrentWalletConnected`: + +```javascript +export const getCurrentWalletConnected = async () => { + if (window.ethereum) { + try { + const addressArray = await window.ethereum.request({ + method: "eth_accounts", + }) + if (addressArray.length > 0) { + return { + address: addressArray[0], + status: "👆🏽 Write a message in the text-field above.", + } + } else { + return { + address: "", + status: "🦊 Connect to MetaMask using the top right button.", + } + } + } catch (err) { + return { + address: "", + status: "😥 " + err.message, + } + } + } else { + return { + address: "", + status: ( + ++ {" "} + 🦊 + You must install MetaMask, a virtual Ethereum wallet, in your + browser. + +
+ + ), + } + } +} +``` + +Este código é _muito_ semelhante à função `connectWallet` que acabamos de escrever. + +A diferença principal é que, em vez de chamar o método `eth_requestAccounts`, que abre o MetaMask para o usuário conectar sua carteira, aqui chamamos o método `eth_accounts`, que simplesmente retorna uma matriz que contém os endereços MetaMask atualmente conectados ao nosso dapp. + +Para ver essa função em ação, vamos chamá-la na função `useEffect` do nosso componente `Minter.js`. + +Como fizemos para `connectWallet`, devemos importar essa função do nosso arquivo `interact.js` para o `Minter.js`, assim: + +```javascript +import { useEffect, useState } from "react" +import { + connectWallet, + getCurrentWalletConnected, //import here +} from "./utils/interact.js" +``` + +Agora, simplesmente a chamamos em nossa função `useEffect`: + +```javascript +useEffect(async () => { + const { address, status } = await getCurrentWalletConnected() + setWallet(address) + setStatus(status) +}, []) +``` + +Note que nós usamos a resposta da nossa chamada a `getCurrentWalletConnected` para atualizar nossa `walletAddress` e nossa variável de estado `status`. + +Depois de adicionar este código, tente atualizar a janela do navegador. O botão deve dizer que você está conectado e mostrar uma visualização do endereço de sua carteira conectada - mesmo depois de atualizar! + +### Implementar addWalletListener {#implement-add-wallet-listener} + +O passo final na configuração da nossa carteira dapp é implementar o ouvinte de carteira, para que nossa interface atualize quando o estado mudar, como quando o usuário desconecta ou troca de contas. + +No seu arquivo `Minter.js`, adicione a função `addWalletListener` que se parece com o seguinte: + +```javascript +function addWalletListener() { + if (window.ethereum) { + window.ethereum.on("accountsChanged", (accounts) => { + if (accounts.length > 0) { + setWallet(accounts[0]) + setStatus("👆🏽 Write a message in the text-field above.") + } else { + setWallet("") + setStatus("🦊 Connect to MetaMask using the top right button.") + } + }) + } else { + setStatus( ++ {" "} + 🦊 + You must install MetaMask, a virtual Ethereum wallet, in your browser. + +
+ ) + } +} +``` + +Vamos dividir rapidamente o que está acontecendo aqui: + +- Primeiro, nossa função verifica se o `window.ethereum` está habilitado no seu navegador \(ex. MetaMask instalado\). + - Caso contrário, nós simplesmente configuramos a variável de estado `status` para uma JSX string que solicita o usuário instalar a MetaMask. + - Se estiver habilitado, configuramos o ouvinte `window.ethereum.on("accountsChanged")` na linha 3 que houve mudança de estado na carteira MetaMask, inclusive quando o usuário conecta uma conta adicional ao dapp, troca de conta ou desconecta uma conta. Se houver pelo menos uma conta conectada, a variável de estado `walletAddress` é atualizada como a primeira conta no array `accounts` retornada pelo ouvinte. Caso contrário, `walletAddress` é definida como uma string vazia. + +Finalmente, nós devemos chamá-la em nossa função `useEffect`: + +```javascript +useEffect(async () => { + const { address, status } = await getCurrentWalletConnected() + setWallet(address) + setStatus(status) + + addWalletListener() +}, []) +``` + +E Voila! Concluímos a programação de toda a funcionalidade da nossa carteira! Agora que a nossa carteira está pronta, vamos descobrir como mintar nossa NFT! + +## Metadados NFT 101 {#nft-metadata-101} + +Lembra dos metadados da NFT que acabamos de falar no Passo 0 deste tutorial - ele dá vida a uma NFT, permitindo que tenha propriedades, como um ativo digital, nome, descrição e outros atributos. + +Vamos precisar configurar esse metadado como um objeto JSON e amarzena-lo, para que possamos passa-lo como parâmetro `tokenURI` quando chamarmos a função `mintNFT` do nosso contrato inteligente. + +No campo texto "Link to Asset", "Name", "Description" inclui as diferentes propriedades dos metadados de nosso NFT. Nós vamos formatar estes metadados como um objeto JSON, mas há algumas opções para onde podemos armazenar este objeto JSON: + +- Poderíamos armazená-lo no blockchain Ethereum; no entanto, fazê-lo seria muito caro. +- Nós poderíamos armazená-lo em um servidor centralizado, como AWS ou Firebase. Mas isso iria contra nossa ética de descentralização. +- Poderíamos usar o IPFS, um protocolo descentralizado e uma rede peer-to-peer para armazenar e compartilhar dados em um sistema de arquivos distribuído. Como este protocolo é descentralizado e gratuito, essa é a melhor opção! + +Para armazenar nossos metadados no IPFS, vamos usar [Pinata](https://pinata.cloud/), uma conveniente API IPFS e um conjunto de ferramentas. Na próxima etapa, vamos explicar exatamente como fazer isso! + +## Use o Pinata para fixar seus metadados no IPFS {#use-pinata-to-pin-your-metadata-to-IPFS} + +Se você não tem uma conta no [Pinata](https://pinata.cloud/), cadastre-se [aqui](https://pinata.cloud/) gratuitamente e conclua as etapas de confirmação do seu e-mail e conta. + +### Crie sua chave API do Pinata {#create-pinata-api-key} + +Navegue para a página[https://pinata.cloud/keys](https://pinata.cloud/keys), então selecione o botão "New Key" no topo da página, defina o Admin widget como ativado, e nomeie sua chave. + +Será mostrado a você um pop-up com as informações da sua API. Certifique-se de colocar isto num lugar seguro. + +Agora que a nossa chave está configurada, vamos adicioná-la ao nosso projeto para que possamos usá-la. + +### Criar o arquivo .env {#create-a-env} + +Podemos armazenar com segurança nossa chave e segredo do Pinata em um arquivo de ambiente. Vamos instalar o [pacote dotenv](https://www.npmjs.com/package/dotenv) no diretório do seu projeto. + +Abra uma nova aba no seu terminal \(separado do terminal executando o local host\) e certifique-se de estar na pasta `minter-starter-files`, então execute o seguinte comando no seu terminal: + +```text +npm install dotenv --save +``` + +Em seguida, crie um arquivo `.env` no diretório raiz dos seus `minter-starter-files` inserindo o seguinte na sua linha de comando: + +```javascript +vim.env +``` + +Isto abrirá seu arquivo `.env` no formato vim \(um editor de texto\). Para salvar, aperte "esc" + ":" + "q" no seu teclado nesta ordem. + +Em seguida, no VSCode, navegue até o seu arquivo `.env` e adicione sua chave de API Pinata e sua API secreta, assim: + +```text +REACT_APP_PINATA_KEY =.env
! Por favor, tenha certeza de nunca compartilhar ou expor seu arquivo .env
com ninguém, pois estará comprometendo suas partes secretas ao fazê-lo. Se estiver usando um controle de versão, adicione seu .env
ao arquivo gitignore
+gas, addr, val, argOst, argLen, retOst, retLen
| `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
-| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
-| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
-| F6-F9 | _invalid_ | | | | | |
-| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
-| FB-FC | _invalid_ | | | | | |
-| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
-| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
-| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
+| Стек | Имя | Газ | Исходный стек | Итоговый стек | Память/хранилище | Примечания |
+|:-----:|:-------------- |:-----------------------------------------------------------------------------------------------:|:------------------------------------------------ |:-------------------------------------------- |:----------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 00 | STOP | 0 | | | | halt execution |
+| 01 | ADD | 3 | `a, b` | `a + b` | | (u)int256 addition modulo 2\*\*256 |
+| 02 | MUL | 5 | `a, b` | `a * b` | | (u)int256 multiplication modulo 2\*\*256 |
+| 03 | SUB | 3 | `a, b` | `a - b` | | (u)int256 addition modulo 2\*\*256 |
+| 04 | DIV | 5 | `a, b` | `a // b` | | uint256 division |
+| 05 | SDIV | 5 | `a, b` | `a // b` | | int256 division |
+| 06 | MOD | 5 | `a, b` | `a % b` | | uint256 modulus |
+| 07 | SMOD | 5 | `a, b` | `a % b` | | int256 modulus |
+| 08 | ADDMOD | 8 | `a, b, N` | `(a + b) % N` | | (u)int256 addition modulo N |
+| 09 | MULMOD | 8 | `a, b, N` | `(a * b) % N` | | (u)int256 multiplication modulo N |
+| 0A | EXP | [A1](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a1-exp) | `a, b` | `a ** b` | | uint256 exponentiation modulo 2\*\*256 |
+| 0B | SIGNEXTEND | 5 | `b, x` | `SIGNEXTEND(x, b)` | | [sign extend](https://wikipedia.org/wiki/Sign_extension) `x` from `(b+1)` bytes to 32 bytes |
+| 0C-0F | _invalid_ | | | | | |
+| 10 | LT | 3 | `a, b` | `a < b` | | uint256 less-than |
+| 11 | GT | 3 | `a, b` | `a > b` | | uint256 greater-than |
+| 12 | SLT | 3 | `a, b` | `a < b` | | int256 less-than |
+| 13 | SGT | 3 | `a, b` | `a > b` | | int256 greater-than |
+| 14 | EQ | 3 | `a, b` | `a == b` | | (u)int256 equality |
+| 15 | ISZERO | 3 | `a` | `a == 0` | | (u)int256 iszero |
+| 16 | AND | 3 | `a, b` | `a && b` | | bitwise AND |
+| 17 | OR | 3 | `a, b` | `a \|\| b` | | bitwise OR |
+| 18 | XOR | 3 | `a, b` | `a ^ b` | | bitwise XOR |
+| 19 | NOT | 3 | `a` | `~a` | | bitwise NOT |
+| 1A | BYTE | 3 | `i, x` | `(x >> (248 - i * 8)) && 0xFF` | | `i`th byte of (u)int256 `x`, from the left |
+| 1B | SHL | 3 | `shift, val` | `val << shift` | | shift left |
+| 1C | SHR | 3 | `shift, val` | `val >> shift` | | logical shift right |
+| 1D | SAR | 3 | `shift, val` | `val >> shift` | | arithmetic shift right |
+| 1E-1F | _invalid_ | | | | | |
+| 20 | KECCAK256 | [A2](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a2-sha3) | `ost, len` | `keccak256(mem[ost:ost+len-1])` | | keccak256 |
+| 21-2F | _invalid_ | | | | | |
+| 30 | ADDRESS | 2 | `.` | `address(this)` | | address of executing contract |
+| 31 | BALANCE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `addr.balance` | | balance, in wei |
+| 32 | ORIGIN | 2 | `.` | `tx.origin` | | address that originated the tx |
+| 33 | CALLER | 2 | `.` | `msg.sender` | | address of msg sender |
+| 34 | CALLVALUE | 2 | `.` | `msg.value` | | msg value, in wei |
+| 35 | CALLDATALOAD | 3 | `idx` | `msg.data[idx:idx+32]` | | read word from msg data at index `idx` |
+| 36 | CALLDATASIZE | 2 | `.` | `len(msg.data)` | | length of msg data, in bytes |
+| 37 | CALLDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := msg.data[ost:ost+len-1] | copy msg data |
+| 38 | CODESIZE | 2 | `.` | `len(this.code)` | | length of executing contract's code, in bytes |
+| 39 | CODECOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | | mem[dstOst:dstOst+len-1] := this.code[ost:ost+len-1] | copy executing contract's bytecode |
+| 3A | GASPRICE | 2 | `.` | `tx.gasprice` | | gas price of tx, in wei per unit gas [\*\*](https://eips.ethereum.org/EIPS/eip-1559#gasprice) |
+| 3B | EXTCODESIZE | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `len(addr.code)` | | size of code at addr, in bytes |
+| 3C | EXTCODECOPY | [A4](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a4-extcodecopy) | `addr, dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := addr.code[ost:ost+len-1] | copy code from `addr` |
+| 3D | RETURNDATASIZE | 2 | `.` | `size` | | size of returned data from last external call, in bytes |
+| 3E | RETURNDATACOPY | [A3](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a3-copy-operations) | `dstOst, ost, len` | `.` | mem[dstOst:dstOst+len-1] := returndata[ost:ost+len-1] | copy returned data from last external call |
+| 3F | EXTCODEHASH | [A5](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a5-balance-extcodesize-extcodehash) | `addr` | `хэш` | | hash = addr.exists ? keccak256(addr.code) : 0 |
+| 40 | BLOCKHASH | 20 | `blockNum` | `blockHash(blockNum)` | | |
+| 41 | COINBASE | 2 | `.` | `block.coinbase` | | address of miner of current block |
+| 42 | TIMESTAMP | 2 | `.` | `block.timestamp` | | timestamp of current block |
+| 43 | NUMBER | 2 | `.` | `block.number` | | number of current block |
+| 44 | PREVRANDAO | 2 | `.` | `randomness beacon` | | randomness beacon |
+| 45 | GASLIMIT | 2 | `.` | `block.gaslimit` | | gas limit of current block |
+| 46 | CHAINID | 2 | `.` | `chain_id` | | push current [chain id](https://eips.ethereum.org/EIPS/eip-155) onto stack |
+| 47 | SELFBALANCE | 5 | `.` | `address(this).balance` | | balance of executing contract, in wei |
+| 48 | BASEFEE | 2 | `.` | `block.basefee` | | base fee of current block |
+| 49-4F | _invalid_ | | | | | |
+| 50 | POP | 2 | `_anon` | `.` | | remove item from top of stack and discard it |
+| 51 | MLOAD | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost` | `mem[ost:ost+32]` | | read word from memory at offset `ost` |
+| 52 | MSTORE | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost:ost+32] := val | write a word to memory |
+| 53 | MSTORE8 | 3[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, val` | `.` | mem[ost] := val && 0xFF | write a single byte to memory |
+| 54 | SLOAD | [A6](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a6-sload) | `key` | `storage[key]` | | read word from storage |
+| 55 | SSTORE | [A7](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a7-sstore) | `key, val` | `.` | storage[key] := val | write word to storage |
+| 56 | JUMP | 8 | `dst` | `.` | | `$pc := dst` mark that `pc` is only assigned if `dst` is a valid jumpdest |
+| 57 | JUMPI | 10 | `dst, condition` | `.` | | `$pc := condition ? dst : $pc + 1` |
+| 58 | PC | 2 | `.` | `$pc` | | program counter |
+| 59 | MSIZE | 2 | `.` | `len(mem)` | | size of memory in current execution context, in bytes |
+| 5A | GAS | 2 | `.` | `gasRemaining` | | |
+| 5B | JUMPDEST | 1 | | | mark valid jump destination | a valid jump destination for example a jump destination not inside the push data |
+| 5C-5E | _invalid_ | | | | | |
+| 5F | PUSH0 | 2 | `.` | `uint8` | | добавить постоянное значение 0 в стек |
+| 60 | PUSH1 | 3 | `.` | `uint8` | | push 1-byte value onto stack |
+| 61 | PUSH2 | 3 | `.` | `uint16` | | push 2-byte value onto stack |
+| 62 | PUSH3 | 3 | `.` | `uint24` | | push 3-byte value onto stack |
+| 63 | PUSH4 | 3 | `.` | `uint32` | | push 4-byte value onto stack |
+| 64 | PUSH5 | 3 | `.` | `uint40` | | push 5-byte value onto stack |
+| 65 | PUSH6 | 3 | `.` | `uint48` | | push 6-byte value onto stack |
+| 66 | PUSH7 | 3 | `.` | `uint56` | | push 7-byte value onto stack |
+| 67 | PUSH8 | 3 | `.` | `uint64` | | push 8-byte value onto stack |
+| 68 | PUSH9 | 3 | `.` | `uint72` | | push 9-byte value onto stack |
+| 69 | PUSH10 | 3 | `.` | `uint80` | | push 10-byte value onto stack |
+| 6A | PUSH11 | 3 | `.` | `uint88` | | push 11-byte value onto stack |
+| 6B | PUSH12 | 3 | `.` | `uint96` | | push 12-byte value onto stack |
+| 6C | PUSH13 | 3 | `.` | `uint104` | | push 13-byte value onto stack |
+| 6D | PUSH14 | 3 | `.` | `uint112` | | push 14-byte value onto stack |
+| 6E | PUSH15 | 3 | `.` | `uint120` | | push 15-byte value onto stack |
+| 6F | PUSH16 | 3 | `.` | `uint128` | | push 16-byte value onto stack |
+| 70 | PUSH17 | 3 | `.` | `uint136` | | push 17-byte value onto stack |
+| 71 | PUSH18 | 3 | `.` | `uint144` | | push 18-byte value onto stack |
+| 72 | PUSH19 | 3 | `.` | `uint152` | | push 19-byte value onto stack |
+| 73 | PUSH20 | 3 | `.` | `uint160` | | push 20-byte value onto stack |
+| 74 | PUSH21 | 3 | `.` | `uint168` | | push 21-byte value onto stack |
+| 75 | PUSH22 | 3 | `.` | `uint176` | | push 22-byte value onto stack |
+| 76 | PUSH23 | 3 | `.` | `uint184` | | push 23-byte value onto stack |
+| 77 | PUSH24 | 3 | `.` | `uint192` | | push 24-byte value onto stack |
+| 78 | PUSH25 | 3 | `.` | `uint200` | | push 25-byte value onto stack |
+| 79 | PUSH26 | 3 | `.` | `uint208` | | push 26-byte value onto stack |
+| 7A | PUSH27 | 3 | `.` | `uint216` | | push 27-byte value onto stack |
+| 7B | PUSH28 | 3 | `.` | `uint224` | | push 28-byte value onto stack |
+| 7C | PUSH29 | 3 | `.` | `uint232` | | push 29-byte value onto stack |
+| 7D | PUSH30 | 3 | `.` | `uint240` | | push 30-byte value onto stack |
+| 7E | PUSH31 | 3 | `.` | `uint248` | | push 31-byte value onto stack |
+| 7F | PUSH32 | 3 | `.` | `uint256` | | push 32-byte value onto stack |
+| 80 | DUP1 | 3 | `a` | `a, a` | | clone 1st value on stack |
+| 81 | DUP2 | 3 | `_, a` | `a, _, a` | | clone 2nd value on stack |
+| 82 | DUP3 | 3 | `_, _, a` | `a, _, _, a` | | clone 3rd value on stack |
+| 83 | DUP4 | 3 | `_, _, _, a` | `a, _, _, _, a` | | clone 4th value on stack |
+| 84 | DUP5 | 3 | `..., a` | `a, ..., a` | | clone 5th value on stack |
+| 85 | DUP6 | 3 | `..., a` | `a, ..., a` | | clone 6th value on stack |
+| 86 | DUP7 | 3 | `..., a` | `a, ..., a` | | clone 7th value on stack |
+| 87 | DUP8 | 3 | `..., a` | `a, ..., a` | | clone 8th value on stack |
+| 88 | DUP9 | 3 | `..., a` | `a, ..., a` | | clone 9th value on stack |
+| 89 | DUP10 | 3 | `..., a` | `a, ..., a` | | clone 10th value on stack |
+| 8A | DUP11 | 3 | `..., a` | `a, ..., a` | | clone 11th value on stack |
+| 8B | DUP12 | 3 | `..., a` | `a, ..., a` | | clone 12th value on stack |
+| 8C | DUP13 | 3 | `..., a` | `a, ..., a` | | clone 13th value on stack |
+| 8D | DUP14 | 3 | `..., a` | `a, ..., a` | | clone 14th value on stack |
+| 8E | DUP15 | 3 | `..., a` | `a, ..., a` | | clone 15th value on stack |
+| 8F | DUP16 | 3 | `..., a` | `a, ..., a` | | clone 16th value on stack |
+| 90 | SWAP1 | 3 | `a, b` | `b, a` | | |
+| 91 | SWAP2 | 3 | `a, _, b` | `b, _, a` | | |
+| 92 | SWAP3 | 3 | `a, _, _, b` | `b, _, _, a` | | |
+| 93 | SWAP4 | 3 | `a, _, _, _, b` | `b, _, _, _, a` | | |
+| 94 | SWAP5 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 95 | SWAP6 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 96 | SWAP7 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 97 | SWAP8 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 98 | SWAP9 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 99 | SWAP10 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9A | SWAP11 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9B | SWAP12 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9C | SWAP13 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9D | SWAP14 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9E | SWAP15 | 3 | `a, ..., b` | `b, ..., a` | | |
+| 9F | SWAP16 | 3 | `a, ..., b` | `b, ..., a` | | |
+| A0 | LOG0 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len` | `.` | | LOG0(memory[ost:ost+len-1]) |
+| A1 | LOG1 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0` | `.` | | LOG1(memory[ost:ost+len-1], topic0) |
+| A2 | LOG2 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1) |
+| A3 | LOG3 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2) |
+| A4 | LOG4 | [A8](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a8-log-operations) | `ost, len, topic0, topic1, topic2, topic3` | `.` | | LOG1(memory[ost:ost+len-1], topic0, topic1, topic2, topic3) |
+| A5-EF | _invalid_ | | | | | |
+| F0 | CREATE | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len` | `addr` | | addr = keccak256(rlp([address(this), this.nonce])) |
+| F1 | CALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | gas, addr, val, argOst, argLen, retOst, retLen
| `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F2 | CALLCODE | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, val, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] = returndata | same as DELEGATECALL, but does not propagate original msg.sender and msg.value |
+| F3 | RETURN | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | return mem[ost:ost+len-1] |
+| F4 | DELEGATECALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| F5 | CREATE2 | [A9](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a9-create-operations) | `val, ost, len, salt` | `addr` | | addr = keccak256(0xff ++ address(this) ++ salt ++ keccak256(mem[ost:ost+len-1]))[12:] |
+| F6-F9 | _invalid_ | | | | | |
+| FA | STATICCALL | [AA](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#aa-call-operations) | `gas, addr, argOst, argLen, retOst, retLen` | `success` | mem[retOst:retOst+retLen-1] := returndata | |
+| FB-FC | _invalid_ | | | | | |
+| FD | REVERT | 0[\*](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#a0-1-memory-expansion) | `ost, len` | `.` | | revert(mem[ost:ost+len-1]) |
+| FE | INVALID | [AF](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#af-invalid) | | | designated invalid opcode - [EIP-141](https://eips.ethereum.org/EIPS/eip-141) | |
+| FF | SELFDESTRUCT | [AB](https://github.com/wolflo/evm-opcodes/blob/main/gas.md#ab-selfdestruct) | `addr` | `.` | | | destroy contract and sends all funds to `addr` |
diff --git a/public/content/translations/ru/developers/docs/gas/index.md b/public/content/translations/ru/developers/docs/gas/index.md
index c0ef820186d..4c1aeaad058 100644
--- a/public/content/translations/ru/developers/docs/gas/index.md
+++ b/public/content/translations/ru/developers/docs/gas/index.md
@@ -55,7 +55,7 @@ lang: ru
Базовая комиссия рассчитывается по формуле, которая сравнивает размер предыдущего блока (количество газа, использованного для всех транзакций) с целевым размером. Базовая комиссия увеличится максимум на 12,5 % за блок, если размер целевого блока превышен. Этот экспоненциальный рост делает экономически нецелесообразным, чтобы размер блока оставался высоким на неопределенный срок.
| Номер блока | Включенный газ | Увеличение комиссии | Текущая базовая комиссия |
-| ----------- | -------------: | ------------------: | -----------------------: |
+| ----------- | --------------:| -------------------:| ------------------------:|
| 1 | 15 млн | 0 % | 100 gwei |
| 2 | 30 млн | 0 % | 100 gwei |
| 3 | 30 млн | 12,5 % | 112,5 gwei |
@@ -70,7 +70,7 @@ lang: ru
Также важно отметить, что сильные всплески серий полных блоков маловероятны из-за скорости, с которой базовая комиссия увеличивается перед полным блоком.
| Номер блока | Включенный газ | Увеличение комиссии | Текущая базовая комиссия |
-| ----------- | -------------: | ------------------: | -----------------------: |
+| ----------- | --------------:| -------------------:| ------------------------:|
| 30 | 30 млн | 12,5 % | 2705,6 gwei |
| ... | ... | 12,5 % | ... |
| 50 | 30 млн | 12,5 % | 28531,3 gwei |
diff --git a/public/content/translations/ru/developers/docs/networks/index.md b/public/content/translations/ru/developers/docs/networks/index.md
index 3aa643e2e57..bad5b4e680d 100644
--- a/public/content/translations/ru/developers/docs/networks/index.md
+++ b/public/content/translations/ru/developers/docs/networks/index.md
@@ -56,10 +56,11 @@ lang: ru
- [Кран QuickNode Sepolia](https://faucet.quicknode.com/drip)
- [Grabteeth](https://grabteeth.xyz/)
- [Кран PoW](https://sepolia-faucet.pk910.de/)
-- [Кран кошелька Coinbase Wallet | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
+- [Кран кошелька Coinbase | Sepolia](https://coinbase.com/faucets/ethereum-sepolia-faucet)
- [Кран Alchemy Sepolia](https://sepoliafaucet.com/)
- [Кран Infura Sepolia](https://www.infura.io/faucet)
- [Кран Chainstack Sepolia](https://faucet.chainstack.com/sepolia-faucet)
+- [Кран тестовой сети | Sepolia](https://testnet-faucet.com/sepolia/)
#### Goerli _(долгосрочная поддержка)_ {#goerli}
@@ -111,28 +112,36 @@ Goerli — тестовая сеть для проверки валидации
- [Кран Paradigm](https://faucet.paradigm.xyz/)
- [Кран Coinbase Wallet | Optimism Goerli](https://coinbase.com/faucets/optimism-goerli-faucet)
+#### Starknet Goerli {#starknet-goerli}
+
+Тестовая сеть для [Starknet](https://www.starknet.io).
+
+##### Краны
+
+- [Кран Starknet](https://faucet.goerli.starknet.io)
+
## Частные сети {#private-networks}
-Сеть Ethereum представляет собой частную сеть, если ее узлы не подключены к публичной сети (т. е. к основной или тестовой сети). В этом контексте «частная» означает только «зарезервированная» или «изолированная», а не «защищенная» или «безопасная».
+Сеть Ethereum представляет собой частную сеть, если ее узлы не подключены к общедоступной сети (т. е. к основной или тестовой сети). В этом контексте «частная» означает только «зарезервированная» или «изолированная», а не «защищенная» или «безопасная».
### Сети разработки {#development-networks}
-Чтобы разработать приложение Ethereum, вам нужно запустить его в частной сети и увидеть, как оно работает, прежде чем развертывать. Подобно тому, как вы создаете локальный сервер на своем компьютере для веб-разработки, вы можете создать локальный экземпляр блокчейна для тестирования своего децентрализованного приложения. Это позволяет выполнять итерацию намного быстрее, чем в публичной тестовой сети.
+При разработке приложения Ethereum вам нужно запустить его в частной сети и увидеть, как оно работает, прежде чем развертывать. Подобно тому, как вы создаете локальный сервер на своем компьютере для веб-разработки, вы можете создать локальный экземпляр блокчейна для тестирования своего децентрализованного приложения. Это позволяет повторять итерации намного быстрее, чем в общедоступной тестовой сети.
-Существуют проекты и инструменты, которые могут помочь в этом. Подробнее о [сетях для разработки](/developers/docs/development-networks/).
+Существуют проекты и инструменты, которые могут помочь в этом. Узнайте больше о [сетях для разработки](/developers/docs/development-networks/).
### Сети консорциума {#consortium-networks}
-Процесс консенсуса контролируется заранее определенным набором узлов, которым доверяют. Например, частная сеть известных академических учреждений, каждое из которых управляет одним узлом, а блоки проверяются пороговым числом подписантов внутри сети.
+Процесс консенсуса контролируется заранее определенным набором доверенных узлов. Например, частная сеть известных академических учреждений, каждое из которых управляет одним узлом, а блоки проверяются пороговым числом подписантов внутри сети.
-Если общедоступная сеть Ethereum похожа на общедоступный Интернет, то сеть консорциума похожа на частный интранет.
+Если общедоступная сеть Ethereum похожа на общедоступный интернет, то сеть консорциума похожа на частный интранет.
## Связанные инструменты {#related-tools}
-- [Chainlist](https://chainlist.org/) — _список сетей EVM для подключения кошельков и поставщиков к соответствующему ID цепочки и ID сети_
-- [Цепочки на основе EVM](https://github.com/ethereum-lists/chains) — _репозиторий GitHub с метаданными цепочки, на которых основан Chainlist_
+- [Chainlist](https://chainlist.org/) — _список сетей EVM для подключения кошельков и поставщиков услуг к соответствующим идентификаторам цепочки и сети._
+- [Цепочки на основе EVM](https://github.com/ethereum-lists/chains) — _репозиторий GitHub с метаданными цепочки, на которых основан Chainlist._
## Дополнительные ресурсы {#further-reading}
-- [Предложение: предсказуемый жизненный цикл тестовых Ethereum](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17)
+- [Предложение: предсказуемый жизненный цикл тестовых сетей Ethereum](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17)
- [Эволюция тестовых сетей Ethereum](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
diff --git a/public/content/translations/ru/developers/docs/transactions/index.md b/public/content/translations/ru/developers/docs/transactions/index.md
index e2bbd6d470d..ebfc54e4a8f 100644
--- a/public/content/translations/ru/developers/docs/transactions/index.md
+++ b/public/content/translations/ru/developers/docs/transactions/index.md
@@ -1,6 +1,6 @@
---
title: Транзакции
-description: "Обзор транзакций Ethereum: как они работают, их структура данных и как их отправлять через приложение."
+description: 'Обзор транзакций Ethereum: как они работают, их структура данных и как их отправлять через приложение.'
lang: ru
---
diff --git a/public/content/translations/ru/guides/how-to-create-an-ethereum-account/index.md b/public/content/translations/ru/guides/how-to-create-an-ethereum-account/index.md
index 1d5b1f97fe8..1c9747c0943 100644
--- a/public/content/translations/ru/guides/how-to-create-an-ethereum-account/index.md
+++ b/public/content/translations/ru/guides/how-to-create-an-ethereum-account/index.md
@@ -20,7 +20,7 @@ lang: ru
Если вы новичок, то можете выбрать фильтр «Новичок в криптовалютах» на странице «найти кошелек», чтобы определить кошельки, которые должны включать все необходимые функции, подходящие для начинающих.
-![выбор фильтра на странице «найти кошелек»](./wallet-box.png)
+![Выбор фильтра на странице поиска кошелька](./wallet-box.png)
Существуют также другие фильтры профиля, позволяющие учесть ваши потребности. Это примеры часто используемых кошельков. Вам нужно самостоятельно изучить ситуацию, прежде чем доверять какому-либо программному обеспечению.
diff --git a/public/content/translations/ru/guides/how-to-swap-tokens/index.md b/public/content/translations/ru/guides/how-to-swap-tokens/index.md
index 53eb4c759d2..a01ca0220e0 100644
--- a/public/content/translations/ru/guides/how-to-swap-tokens/index.md
+++ b/public/content/translations/ru/guides/how-to-swap-tokens/index.md
@@ -12,12 +12,12 @@ lang: ru
**Необходимо соблюдать следующие предварительные условия:**
-- иметь криптовалютный кошелек. Вы можете ознакомиться с этим руководством: [Как зарегистрировать учетную запись Ethereum](/guides/how-to-register-an-ethereum-account/);
+- иметь криптовалютный кошелек (вы можете воспользоваться следующим руководством: [Как зарегистрировать учетную запись Ethereum](/guides/how-to-create-an-ethereum-account/));
- добавить средства на свой кошелек.
## 1. Подключите свой кошелек к децентрализованной бирже (DEX) по выбору
-Вот некоторые популярные биржи.
+Вот некоторые популярные биржи:
- [Uniswap](https://app.uniswap.org/#/swap)
- [Sushiswap](https://www.sushi.com/swap)
diff --git a/public/content/translations/ru/guides/how-to-use-a-bridge/index.md b/public/content/translations/ru/guides/how-to-use-a-bridge/index.md
index 5617eee7e04..5c07132896e 100644
--- a/public/content/translations/ru/guides/how-to-use-a-bridge/index.md
+++ b/public/content/translations/ru/guides/how-to-use-a-bridge/index.md
@@ -10,7 +10,7 @@ lang: ru
**Необходимо соблюдать следующие предварительные условия:**
-- иметь криптовалютный кошелек. Вы можете ознакомиться с этим руководством: [Как зарегистрировать учетную запись Ethereum](/guides/how-to-register-an-ethereum-account/);
+- иметь криптовалютный кошелек (вы можете воспользоваться следующим руководством: [Как зарегистрировать учетную запись Ethereum](/guides/how-to-create-an-ethereum-account/));
- добавить средства на свой кошелек.
## 1. Определите, какую сеть второго уровня вы хотите использовать
diff --git a/public/content/translations/ru/guides/how-to-use-a-wallet/index.md b/public/content/translations/ru/guides/how-to-use-a-wallet/index.md
index 46fc7f43bb1..1ab60e11a47 100644
--- a/public/content/translations/ru/guides/how-to-use-a-wallet/index.md
+++ b/public/content/translations/ru/guides/how-to-use-a-wallet/index.md
@@ -51,7 +51,7 @@ lang: ru
1. Посетите сайт любого проекта.
2. Если целевая страница проекта является просто его статичным описанием, у вас должна быть возможность нажать кнопку «Открыть приложение» (Open the App) в меню, после чего вы перейдете к соответствующему веб-приложению.
-3. После того как вы зайдете в приложение, нажмите кнопку «Подключиться» (Connect).
+3. Войдя в приложение, нажмите кнопку Connect (Подключиться).
![Кнопка, позволяющая пользователю подключаться к сайту с помощью кошелька](./connect1.png)
diff --git a/public/dapps/skiff.png b/public/dapps/skiff.png
deleted file mode 100644
index 0adada597f7..00000000000
Binary files a/public/dapps/skiff.png and /dev/null differ
diff --git a/public/layer-2/base.png b/public/layer-2/base.png
new file mode 100644
index 00000000000..8293da7a78f
Binary files /dev/null and b/public/layer-2/base.png differ
diff --git a/public/layer-2/growthepie.png b/public/layer-2/growthepie.png
new file mode 100644
index 00000000000..39f5291602e
Binary files /dev/null and b/public/layer-2/growthepie.png differ
diff --git a/public/wallets/aurox.png b/public/wallets/aurox.png
new file mode 100644
index 00000000000..4caeaadc529
Binary files /dev/null and b/public/wallets/aurox.png differ
diff --git a/src/components/BannerGrid/index.tsx b/src/components/BannerGrid/index.tsx
index 31dcdf3886f..5e2adb460ee 100644
--- a/src/components/BannerGrid/index.tsx
+++ b/src/components/BannerGrid/index.tsx
@@ -1,11 +1,9 @@
import React from "react"
import { Box, Flex, Grid, useToken } from "@chakra-ui/react"
-export type Props = {
- children: React.ReactNode
-}
+import { ChildOnlyProp } from "@/lib/types"
-export const Banner: React.FCstring
] or ['string']
-const OrderedList: React.FC
.env
! Certifique-se de nunca compartilhar ou explicar o seu . arquivo nv
com qualquer pessoa, pois você estará comprometendo seus segredos ao fazê-lo. Se você estiver usando o controle de versão, adicione seu .env
a um arquivo gitignore."
}
diff --git a/src/intl/pt-br/page-gas.json b/src/intl/pt-br/page-gas.json
new file mode 100644
index 00000000000..d715bf33e9b
--- /dev/null
+++ b/src/intl/pt-br/page-gas.json
@@ -0,0 +1,64 @@
+{
+ "page-gas-meta-title": "Gas fees on Ethereum: how do they work?",
+ "page-gas-meta-description": "Learn about gas on Ethereum: how they work and how to pay less in gas fees",
+ "page-gas-hero-title": "Gas fees",
+ "page-gas-hero-header": "Network fees",
+ "page-gas-hero-button-1-content": "O que é gás?",
+ "page-gas-hero-subtitle-1": "Network fees on Ethereum are called gas.",
+ "page-gas-hero-subtitle-2": "Gas is the fuel that powers Ethereum.",
+ "page-gas-summary-title": "Resumo",
+ "page-gas-summary-item-1": "Every transaction on Ethereum requires a small form of payment to process",
+ "page-gas-summary-item-2": "These fees are known as ‘gas’ fee",
+ "page-gas-summary-item-3": "Gas fees change based on network congestion",
+ "page-gas-what-are-gas-fees-header": "What are gas fees?",
+ "page-gas-what-are-gas-fees-text-1": "Think of Ethereum as a large computer network where people can do tasks like sending messages or running programs. Just like in the real world, these tasks require energy to get done.",
+ "page-gas-what-are-gas-fees-text-2": "In Ethereum, each computational action has a set \"gas\" price. Your gas fees are the total cost of the actions in your transaction. When you send a transaction or run a smart contract, you pay in gas fees to process it.",
+ "page-gas-how-do-i-pay-less-gas-header": "How do I pay less gas?",
+ "page-gas-how-do-i-pay-less-gas-text": "While higher fees on Ethereum are sometimes inevitable, there are strategies you can use to reduce the cost:",
+ "page-gas-how-do-i-pay-less-gas-card-1-title": "Time your transactions",
+ "page-gas-how-do-i-pay-less-gas-card-1-description": "Just like travelling off-peak is less crowded and more affordable, Ethereum is generally cheaper to use when North America is asleep.",
+ "page-gas-how-do-i-pay-less-gas-card-2-title": "Wait for gas to go down",
+ "page-gas-how-do-i-pay-less-gas-card-2-description": "Gas prices go up and down every twelve seconds based on how congested Ethereum is. When gas prices are high, waiting just a few minutes before making a transaction could see a significant drop in what you pay.",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "Usar a camada 2",
+ "page-gas-how-do-i-pay-less-gas-card-3-description": "Layer-2 chains are built atop Ethereum, offering lower fees and handling more transactions. They're a good choice to save on fees for transactions that don't need to happen on the main Ethereum network.",
+ "page-gas-try-layer-2": "Try layer 2",
+ "page-gas-what-causes-high-gas-fees-header": "What causes high gas fees?",
+ "page-gas-what-causes-high-gas-fees-text-1": "Whenever the amount of computation (gas) on Ethereum exceeds a certain threshold, gas fees begin to rise. The more the gas exceeds this threshold, the quicker gas fees increase.",
+ "page-gas-what-causes-high-gas-fees-text-2": "Higher fees could be caused by things like popular dapps or NFTs, periodically increased trading on DEXs, or an overwhelming number of user activity at peak times.",
+ "page-gas-what-causes-high-gas-fees-text-3": "Developers on Ethereum should take care to optimise their smart contracts usage before deploying. If lots of people are using a poorly written smart contract, it will consume more gas and could inadvertently cause network congestion.",
+ "page-gas-want-to-dive-deeper": "Quer mais detalhes?",
+ "page-gas-check-out-the-developer-docs": "Check out the developer docs.",
+ "page-gas-attack-of-the-cryptokitties-header": "Attack of the Cryptokitties",
+ "page-gas-attack-of-the-cryptokitties-text": "In November 2017, the popular CryptoKitties project was launched. Its rapid spike in popularity caused significant network congestion and extremely high gas fees. The challenges posed by CryptoKitties accelerated the urgency of finding solutions for scaling Ethereum.",
+ "page-gas-why-do-we-need-gas-header": "Why do we need gas?",
+ "page-gas-why-do-we-need-gas-text": "Gas is a critical element in keeping Ethereum secure and processing transactions. Gas helps in many ways:",
+ "page-gas-benefits-1-description": "Gas keeps Ethereum sybil-resistant by preventing malicious actors from overwhelming the network with fraudulent activities.",
+ "page-gas-benefits-2-description": "Because computation costs gas, spamming Ethereum with expensive transactions, either accidentally and maliciously, is financially disencentivised.",
+ "page-gas-benefits-3-description": "A hard-limit on the amount of computation that can be done at any one time prevents Ethereum from being overwhelmed, helping to ensure the network is always accessible.",
+ "page-gas-how-is-gas-calculated-header": "How is gas calculated?",
+ "page-gas-advanced": "Avançado",
+ "page-gas-how-is-gas-calculated-text-1": "The total gas fee you pay is made up of a few parts:",
+ "page-gas-how-is-gas-calculated-item-1": "Base fee: a fee set by the network that has to be paid for a transaction",
+ "page-gas-how-is-gas-calculated-item-2": "Priority fee: an optional tip to incentivise node operators to include your transaction",
+ "page-gas-how-is-gas-calculated-item-3": "Units of gas used*: remember we said gas represented computation? More complex actions, like interacting with a smart contract, use more gas than simple ones, such as sending a transaction.",
+ "page-gas-how-is-gas-calculated-list-item-1": "* See Figure 1 to see how much gas different types of transactions use",
+ "page-gas-how-is-gas-calculated-text-2": "The formula for calculating a gas fee is units of gas used * (base fee + priority fee). Most wallets will calculate gas usage and display it in a more straight-forward way.",
+ "page-gas-table-figure": "Figure 1: Gas used by transaction type",
+ "page-gas-table-header-1": "Transaction type",
+ "page-gas-table-header-2": "Units of gas used",
+ "page-gas-table-item-1-transaction-type": "Sending ETH",
+ "page-gas-table-item-2-transaction-type": "Sending ERC-20 tokens",
+ "page-gas-table-item-3-transaction-type": "Transferring and NFT",
+ "page-gas-table-item-4-transaction-type": "Swapping on Uniswap",
+ "page-gas-faq-header": "Frequency asked questions",
+ "page-gas-faq-question-1-q": "Who gets paid the gas fee in my transaction?",
+ "page-gas-faq-question-1-a-1": "The majority is gas fee—the base fee— is destroyed by the protocol (burned). The priority fee, if included in your transaction, will be given to the validator who proposed your transaction.",
+ "page-gas-faq-question-1-a-2": "You can read a detailed description of the process in the gas developer docs.",
+ "page-gas-faq-question-2-q": "Do I need to pay gas in ETH?",
+ "page-gas-faq-question-2-a-1": "Yes. All gas fees on Ethereum must be paid in the native ETH currency.",
+ "page-gas-faq-question-2-a-2": "Mais sobre ETH",
+ "page-gas-faq-question-3-q": "What is gwei?",
+ "page-gas-faq-question-3-a-1": "In most wallets or gas trackers, you will see gas prices denominated as ‘gwei’.",
+ "page-gas-faq-question-3-a-2": "Gwei is just a smaller unit of ETH, just as pennies are to dollars, with the difference being that 1 ETH equals 1 billion gwei. Gwei is useful when talking about very small amounts of ETH.",
+ "page-gas-use-layer-2": "Usar a camada 2"
+}
diff --git a/src/intl/pt-br/page-get-eth.json b/src/intl/pt-br/page-get-eth.json
index d981ca45e10..35eab997a5a 100644
--- a/src/intl/pt-br/page-get-eth.json
+++ b/src/intl/pt-br/page-get-eth.json
@@ -9,26 +9,35 @@
"page-get-eth-cex-desc": "Corretoras são negócios que permitem que você compre criptomoedas usando moedas tradicionais. Elas têm custódia sobre qualquer ETH que você comprar até que você a envie para uma carteira que você controla.",
"page-get-eth-checkout-dapps-btn": "Confira os dapps",
"page-get-eth-community-safety": "Publicações da comunidade sobre segurança",
- "page-get-eth-description": "Ethereum e ETH não são controlados por nenhum governo ou empresa: são descentralizados. Isso significa que os ETH estão abertos para que todos usem.",
+ "page-get-eth-description": "Ethereum não é controlado por nenhuma organização - ele é descentralizado.",
"page-get-eth-dex": "Corretoras descentralizadas (DEXs)",
- "page-get-eth-dex-desc": "Se você quiser um maior controle, compre ETH ponto a ponto. Com uma DEX você pode operar sem dar controle de seus fundos a uma empresa centralizada.",
+ "page-get-eth-dex-desc": "Se você deseja mais controle, compre ETH utilizando smart contracts. Com DEX você pode ter mais controle nas trocas de ativos digitais sem depender de uma companhia centralizada para gerir seus fundos.",
+ "page-get-eth-peers": "Receba ETH das suas conexões",
+ "page-get-eth-peers-desc": "Uma vez que você tenha uma conta Ethereum, tudo que você precisa fazer é compartilhar seu endereço para começar a receber e enviar ETC (e outros tokens) peer-to-peer.",
+ "page-get-eth-staking": "Recompensas de staking",
+ "page-get-eth-staking-desc": "Se você já tem uma conta ETH, você pode ganhar mais executando um nódulo validador. Você é pago em ETH para realizar essa verificação.",
+ "page-get-eth-earn": "Receber ETH",
+ "page-get-eth-earn-desc": "Você pode receber ETH trabalhando para DAOs ou companhias que pagam em crypto, ganhando recompensas, encontrando erros de software e mais.",
+ "page-get-eth-daos-link-desc": "Aprenda mais sobre DAOs",
+ "page-get-eth-cex-link-desc": "Veja uma lista de corretoras de câmbio",
+ "page-get-eth-staking-link-desc": "Aprenda mais sobre staking",
"page-get-eth-dexs": "Corretoras descentralizadas (DEXs)",
- "page-get-eth-dexs-desc": "Corretoras descentralizadas são mercados abertos para ETH e outros tokens. Elas conectam diretamente compradores e vendedores.",
+ "page-get-eth-dexs-desc": "Exchanges descentralizadas são mercados abertos para ETH e outros tokens. Elas conectam diretamente compradores e vendedores.",
"page-get-eth-dexs-desc-2": "Em vez de usar uma corretora de confiança para proteger fundos na transação, eles usam código. O ETH do vendedor só será transferido quando o pagamento for garantido. Esse tipo de código é conhecido como um contrato inteligente.",
- "page-get-eth-dexs-desc-3": "Isto significa que há menos restrições geográficas do que com alternativas centralizadas. Se alguém está vendendo o que você quer e aceitando um método de pagamento que você pode fornecer, vocês podem fazer negócio. Os DEXs podem permitir que você compre ETH com outros tokens, PayPal ou inclusive entregas em dinheiro pessoalmente.",
+ "page-get-eth-dexs-desc-3": "Isso significa que há menos restrições geográficas do que com alternativas centralizadas. Se alguém vende o que você quer e aceita um método de pagamento que você pode fornecer, é um bom negócio.",
"page-get-eth-do-not-copy": "Não copiar",
"page-get-eth-exchanges-disclaimer": "Nós coletamos essas informações manualmente. Se você encontrar algum erro, nos informe em",
- "page-get-eth-exchanges-empty-state-text": "Digite o país em que você vive para ver uma lista de carteiras e exchanges que você pode usar para comprar ETH",
+ "page-get-eth-exchanges-empty-state-text": "Informe seu país de residência para ter acesso à lista de corretoras de câmbio que você pode utilizar",
"page-get-eth-exchanges-except": "Exceto",
"page-get-eth-exchanges-header": "Em qual país você mora?",
"page-get-eth-exchanges-header-exchanges": "Corretoras",
"page-get-eth-exchanges-header-wallets": "Carteiras",
- "page-get-eth-exchanges-intro": "Exchanges e carteiras têm restrições sobre onde podem vender cripto.",
- "page-get-eth-exchanges-no-exchanges": "Desculpe, não conhecemos nenhum exchange que permita que você compre ETH neste país. Caso você conheça alguma, nos informe em",
- "page-get-eth-exchanges-no-exchanges-or-wallets": "Desculpe, não conhecemos nenhum exchange ou carteira que permita que você compre ETH neste país. Caso você conheça alguma, nos informe em",
- "page-get-eth-exchanges-no-wallets": "Desculpe, não conhecemos nenhuma carteira que permita que você compre ETH neste país. Caso você conheça alguma, nos informe em",
+ "page-get-eth-exchanges-intro": "Corretoras possuem restrições de lugares onde podem comercializar crypto. Essa lista é um indicativo de serviços que podem operar em cada país. Estar na lista não é um endosso - realize sua própria pesquisa!",
+ "page-get-eth-exchanges-no-exchanges": "Desculpe, não conhecemos nenhuma corretora que permita que você compre ETH neste país. Caso você conheça alguma, nos informe em",
+ "page-get-eth-exchanges-no-exchanges-or-wallets": "Desculpe, não conhecemos nenhuma corretora que permita que você compre ETH neste país. Caso você conheça alguma, nos informe em",
+ "page-get-eth-exchanges-no-wallets": "Desculpe, não conhecemos nenhuma carteira que lhe permita comprar ETH neste país. Se você sabe de alguma, informe-nos em",
"page-get-eth-exchanges-search": "Digite onde você mora...",
- "page-get-eth-exchanges-success-exchange": "Pode demorar vários dias para se inscrever em uma exchange devido aos controles jurídicos.",
+ "page-get-eth-exchanges-success-exchange": "Pode demorar vários dias para se inscrever em uma corretora devido aos controles jurídicos.",
"page-get-eth-exchanges-success-wallet-link": "carteiras",
"page-get-eth-exchanges-success-wallet-paragraph": "Onde você mora, é possível comprar ETH diretamente destas carteiras. Saiba mais",
"page-get-eth-exchanges-usa": "Estados Unidos da América (EUA)",
@@ -36,30 +45,30 @@
"page-get-eth-hero-image-alt": "Imagem de Get ETH hero",
"page-get-eth-keep-it-safe": "Mantenha seus ETH seguros",
"page-get-eth-meta-description": "Como comprar ETH com base no local onde você vive e conselhos sobre como cuidar dele.",
- "page-get-eth-meta-title": "Como comprar ETH",
+ "page-get-eth-meta-title": "Como obter ETH",
"page-get-eth-need-wallet": "Você precisará de uma carteira para usar uma DEX.",
"page-get-eth-new-to-eth": "Novo em ETH? Aqui está uma visão geral para você começar.",
"page-get-eth-other-cryptos": "Compre com outras criptomoedas",
- "page-get-eth-protect-eth-desc": "Se você planeja comprar uma grande quantidade de ETH, você pode querer mantê-los em uma carteira que você controla, não em uma exchange. O motivo é que uma exchange é um alvo provável de hackers. Se um hacker ganha acesso, você pode perder seus fundos. Já com a carteira, você é o único a ter controle total dela.",
- "page-get-eth-protect-eth-in-wallet": "Proteja seus ETH em uma carteira",
+ "page-get-eth-protect-eth-desc": "Uma das principais características do Ethereum é que você mantém o controle de seus próprios ativos gerenciando sua própria conta. Isso significa que você não precisa confiar seus ativos a terceiros e está protegido contra qualquer custodiante que aja desonestamente, vá à falência ou seja hackeado. No entanto, também significa que você assume a responsabilidade por sua própria segurança.",
+ "page-get-eth-protect-eth-in-wallet": "Mantenha seu ETH na sua carteira",
"page-get-eth-search-by-country": "Procurar por país",
- "page-get-eth-security": "Mas isso também significa que você precisa levar a sério a segurança dos seus fundos. Com ETH, você não confia em um banco para cuidar do seu dinheiro, você está confiando em você mesmo.",
+ "page-get-eth-security": "Isso significa que você precisa tomar cuidado com a segurança dos seus fundos. Com ETH, você não tem um banco ou companhia para validar suas ações, você tem total responsabilidade por suas transações.",
"page-get-eth-smart-contract-link": "Mais sobre contratos inteligentes",
"page-get-eth-swapping": "Troque seus tokens por ETH de outras pessoas. E vice-versa.",
"page-get-eth-try-dex": "Veja como funciona um DEX",
"page-get-eth-use-your-eth": "Use seu ETH",
"page-get-eth-use-your-eth-dapps": "Agora que você possui alguns ETH, confira alguns aplicativos Ethereum (dapps). Existem dapps para finanças, mídias sociais, jogos e muitas outras categorias.",
"page-get-eth-wallet-instructions": "Siga as instruções da carteira",
- "page-get-eth-wallet-instructions-lost": "Saiba que se você perder o acesso a sua carteira, estará perdendo o acesso a seus fundos. Sua carteira deverá dar a você instruções sobre como evitar que isso aconteça. Certifique-se de segui-las com cuidado. Na maioria dos casos, ninguém poderá ajudá-lo se você perder o acesso a sua carteira.",
+ "page-get-eth-wallet-instructions-lost": "Se você perder acesso a sua conta, irá perder todos os seus fundos. Sua carteira tem informações sobre proteção nesses casos. Tenha certeza que está seguindo tudo corretamente - geralmente, ninguém poderá ajudá-lo se você perder acesso a sua conta.",
"page-get-eth-wallets": "Carteiras",
"page-get-eth-wallets-link": "Mais sobre carteiras",
"page-get-eth-wallets-purchasing": "Algumas carteiras permitem que você compre criptomoeda com um cartão de débito/crédito, por transferência bancária ou até mesmo via Apple Pay. Aplicam-se restrições geográficas.",
- "page-get-eth-warning": "Esses DEXs não são para iniciantes, já que você precisará de alguns ETH para usá-los.",
+ "page-get-eth-warning": "Estes DEXs não são para iniciantes, pois você precisa de algum ETH para utilizar. São apenas exemplos, não são recomendações. Você precisa pesquisar!",
"page-get-eth-what-are-DEX's": "O que são DEXs?",
"page-get-eth-whats-eth-link": "O que é ETH?",
- "page-get-eth-where-to-buy-desc": "Você pode comprar ETH de corretoras ou diretamente de carteiras.",
+ "page-get-eth-where-to-buy-desc": "Você pode receber ETH, receber ela dos seus pares, ou comprar em exchanges e apps.",
"page-get-eth-where-to-buy-desc-2": "Verifique quais serviços estão disponíveis onde você mora.",
- "page-get-eth-where-to-buy-title": "Onde comprar ETH",
+ "page-get-eth-where-to-buy-title": "Onde obter ETH",
"page-get-eth-your-address": "Seu endereço de ETH",
"page-get-eth-your-address-desc": "Quando você baixar uma carteira, ela criará um endereço ETH público para você. Ele se verá assim:",
"page-get-eth-your-address-desc-3": "Pense nele como seu endereço de e-mail, mas em vez de mensagem, ele pode receber ETH. Se você quiser transferir ETH de uma exchange para sua carteira, use seu endereço como o destino. Não deixe de verificar o endereço antes de enviar!",
diff --git a/src/intl/pt-br/page-upgrades-index.json b/src/intl/pt-br/page-upgrades-index.json
index 6bc77abef38..d75f7cba81b 100644
--- a/src/intl/pt-br/page-upgrades-index.json
+++ b/src/intl/pt-br/page-upgrades-index.json
@@ -9,8 +9,8 @@
"consensus-client-prysm-logo-alt": "Logotipo da Prysm",
"consensus-client-teku-logo-alt": "Logotipo da Teku",
"page-upgrades-answer-1": "A Beacon Chain foi usada como uma ferramenta para atualizar a Rede principal do Ethereum na Fusão.",
- "page-upgrades-answer-2": "Com A Fusão, o Ethereum teve a sua atualização mais substancial de todos os tempos, trocando a prova de trabalho por uma nova camada de consenso baseada em prova de participação.",
- "page-upgrades-answer-4": "A Beacon Chain foi usada para desenvolver o consenso baseado na prova de participação que o Ethereum usa atualmente. Ele foi executado separadamente na Rede principal do Ethereum para que os desenvolvedores pudessem observar o mecanismo de consenso isoladamente antes de usá-lo para coordenar a atividade real.",
+ "page-upgrades-answer-2": "Com a Fusão, o Ethereum teve a sua atualização mais substancial de todos os tempos, trocando a prova de trabalho por uma nova camada de consenso baseada em prova de participação.",
+ "page-upgrades-answer-4": "A Beacon Chain foi usada para desenvolver o consenso baseado na prova de participação que o Ethereum usa atualmente. Ela foi executada separadamente na Rede principal do Ethereum para que os desenvolvedores pudessem observar o mecanismo de consenso isoladamente antes de usá-lo para coordenar a atividade real.",
"page-upgrade-article-author-status": "Status",
"page-upgrade-article-author-ethmerge": "Ethmerge",
"page-upgrade-article-author-alchemy": "Alchemy",
@@ -22,32 +22,32 @@
"page-upgrade-article-author-ethos-dev": "Ethos.dev",
"page-upgrade-article-title-two-point-oh": "Melhoria: a Beacon Chain",
"page-upgrade-article-title-beacon-chain-explainer": "A explicação sobre Beacon Chain Ethereum 2.0 que você deve ler primeiro",
- "page-upgrade-article-title-sharding-consensus": "Consenso de fragmentação (sharding)",
+ "page-upgrade-article-title-sharding-consensus": "Consenso de particionamento (sharding)",
"page-upgrade-article-title-sharding-is-great": "Por que o particionamento é ótimo: desmistificando as propriedades técnicas",
"page-upgrade-article-title-rollup-roadmap": "Um roadmap centrado em rollup",
"page-upgrade-article-title-hitchhikers-guide-to-ethereum": "O Guia do Mochileiro sobre o Ethereum",
- "page-upgrade-article-title-eip-4844": "EIP-4844: Transações de Blob de Fragmentos (Proto-Danksharding)",
- "page-upgrade-article-title-proto-danksharding-faq": "Proto-Danksharding – FAQ",
- "page-upgrade-article-title-sharding-das": "Uma explicação sobre a amostragem de fragmentação e disponibilidade de dados (DAS)",
+ "page-upgrade-article-title-eip-4844": "EIP-4844: Transações de blob de particionamento (Proto-Danksharding)",
+ "page-upgrade-article-title-proto-danksharding-faq": "Proto-Danksharding: perguntas frequentes",
+ "page-upgrade-article-title-sharding-das": "Uma explicação sobre a amostragem de particionamento e disponibilidade de dados (DAS)",
"page-upgrade-article-title-ethmerge": "Ethmerge",
"page-upgrade-article-title-merge-is-coming": "A Fusão está chegando",
- "page-upgrade-article-title-state-of-the-merge": "O Estado da Fusão: uma atualização sobre A Fusão do Ethereum para a prova de participação em 2022",
- "page-upgrade-article-title-ropsten-merge-testnet": "Anunciando a Rede de testes da Fusão do Ropsten",
+ "page-upgrade-article-title-state-of-the-merge": "O estado da Fusão: uma atualização sobre a Fusão do Ethereum para a prova de participação em 2022",
+ "page-upgrade-article-title-ropsten-merge-testnet": "Lançamento da Ropsten, a rede de testes para a Fusão",
"page-upgrade-article-title-execution-layer-specs": "Especificações da camada de execução",
"page-upgrade-article-title-consensus-layer-specs": "Especificações da camada de consenso",
"page-upgrade-article-title-engine-api-specs": "Especificações da Engine API",
"page-upgrades-beacon-chain-date": "A Beacon Chain foi lançada em 01 de dezembro de 2020",
- "page-upgrades-beacon-chain-desc": "A Beacon Chain trouxe a participação para o Ethereum e lançou as bases para futuras atualizações. Ela coordena a nova prova de participação do Ethereum.",
+ "page-upgrades-beacon-chain-desc": "A Beacon Chain trouxe a participação para o Ethereum e estabeleceu as bases para futuras melhorias. Ela coordena a nova prova de participação do Ethereum.",
"page-upgrades-beacon-chain-estimate": "A Beacon Chain está ativa",
"page-upgrades-beacon-chain-title": "A Beacon Chain",
"page-upgrades-bug-bounty": "Veja o programa de recompensas por caça aos bugs",
"page-upgrades-clients": "Confira os clientes de consenso (anteriormente conhecidos como clientes 'Eth2')",
"page-staking-deposit-contract-title": "Verifique o endereço do contrato de depósito",
- "page-upgrades-dive": "Aprofundando a visão",
- "page-upgrades-dive-desc": "Como podemos tornar o Ethereum mais escalável, seguro e sustentável? Mantendo a ética fundamental de descentralização do Ethereum.",
- "page-upgrades-docking": "A fusão",
- "page-upgrades-merge-answer-1": "A Fusão aconteceu quando a Ethereum fez a alteração para o consenso Prova de participação em 15 de setembro de 2022. A Beacon Chain se fundiu com a rede principal, tornando oficialmente obsoleta a Prova de trabalho e reduzindo o consumo de energia da Ethereum em ~99,95%.",
- "page-upgrades-merge-btn": "Mais sobre a fusão",
+ "page-upgrades-dive": "Mais detalhes sobre a visão",
+ "page-upgrades-dive-desc": "Como podemos tornar o Ethereum mais escalável, seguro e sustentável sem deixar de considerar a ética fundamental de descentralização do Ethereum?",
+ "page-upgrades-docking": "A integração",
+ "page-upgrades-merge-answer-1": "A Fusão ocorreu quando o Ethereum passou para o consenso de prova de participação em 15 de setembro de 2022. A Beacon Chain se fundiu com a rede principal, tornando a prova de trabalho oficialmente obsoleta e reduzindo o consumo de energia do Ethereum em cerca de 99,95%.",
+ "page-upgrades-merge-btn": "Mais sobre a integração",
"page-upgrades-merge-desc": "A Rede principal do Ethereum se fundiu com a prova de participação da Beacon Chain, marcando o fim da mineração de alto consumo energético.",
"page-upgrades-merge-estimate": "A Fusão chegou",
"page-upgrades-merge-mainnet": "O que é rede principal?",
@@ -59,13 +59,13 @@
"page-upgrades-help": "Quer fazer parte das melhorias no Ethereum?",
"page-upgrades-help-desc": "Há muitas oportunidades para contribuir com as melhorias do Ethereum, ajudar com testes e até ganhar recompensas.",
"page-upgrades-index-staking": "A participação está aqui",
- "page-upgrades-index-staking-desc": "A chave para as melhorias do Ethereum é a introdução do staking. Se você quiser usar o seu ETH para ajudar a proteger a rede Ethereum, certifique-se de seguir estas etapas.",
- "page-upgrades-index-staking-learn": "Saiba mais sobre participação",
+ "page-upgrades-index-staking-desc": "A chave para as melhorias do Ethereum é a introdução do staking (participação). Se você quiser usar o seu ETH para ajudar a proteger a rede Ethereum, certifique-se de seguir estas etapas.",
+ "page-upgrades-index-staking-learn": "Saiba mais sobre staking (participação)",
"page-upgrades-index-staking-learn-desc": "A Beacon Chain trouxe participação para o Ethereum. Se você tiver ETH, pode contribuir para um bem coletivo protegendo a rede e recebendo mais ETH por isso.",
"page-upgrades-index-staking-step-1": "1. Configuração com o launchpad",
"page-upgrades-index-staking-step-1-btn": "Acesse a plataforma Staking Launchpad",
"page-upgrades-index-staking-step-1-desc": "Para fazer staking no Ethereum, você precisará usar a plataforma launchpad, que o guiará pelo processo.",
- "page-upgrades-index-staking-step-2": "2. Confirme o endereço de participação",
+ "page-upgrades-index-staking-step-2": "2. Confirme o endereço de staking (participação)",
"page-upgrades-index-staking-step-2-btn": "Confirme o endereço do contrato de depósito",
"page-upgrades-index-staking-step-2-desc": "Antes de depositar seus ETH, certifique-se de que o endereço seja o correto. Você precisa ter acessado a plataforma Launchpad antes de fazer isso.",
"page-upgrades-index-staking-sustainability": "Mais sustentável",
@@ -75,8 +75,8 @@
"page-upgrades-question-1-title": "Quando as melhorias serão lançadas?",
"page-upgrades-question-1-desc": "O Ethereum está sendo atualizado progressivamente; as melhorias são distintas e têm diferentes datas de lançamento.",
"page-upgrades-question-2-title": "A Beacon Chain é uma blockchain separada?",
- "page-upgrades-question-2-desc": "Sim. A Beacon Chain foi o nome dado a uma cadeia de blocos de prova de participação paralela usada para atualizar a Rede principal do Ethereum. Agora existe apenas uma cadeia de blocos, formada pela fusão da cadeia de blocos original do Ethereum e da Beacon Chain juntas.",
- "page-upgrades-question-3-answer-2a": "A Fusão teve um impacto mínimo sobre os desenvolvedores de dapp — eles ainda interagem com a Ethereum da mesma maneira.",
+ "page-upgrades-question-2-desc": "Sim. A Beacon Chain foi o nome dado a uma blockchain de prova de participação paralela usada para atualizar a Rede principal do Ethereum. Agora existe apenas uma blockchain, formada pela fusão da blockchain original do Ethereum e da Beacon Chain juntas.",
+ "page-upgrades-question-3-answer-2a": "A Fusão teve um impacto mínimo sobre os desenvolvedores de dapp — eles ainda interagem com o Ethereum da mesma maneira.",
"page-upgrades-question-3-answer-2a-link": "A Fusão e os desenvolvedores de dapp",
"page-upgrades-question-3-answer-2b": "Os planos de fragmentação ainda estão sendo desenvolvidos, mas serão projetados tendo em mente os rollups de camada 2.",
"page-upgrades-layer-2-rollups": "Mais sobre rollups de camada 2",
@@ -85,21 +85,21 @@
"page-upgrades-question-3-title": "Como eu me preparo para as melhorias?",
"page-upgrades-question-4-answer-1": "Hoje em dia, sempre que você envia uma transação ou usa um dapp, está usando a camada de execução, também conhecida como Rede principal.",
"page-upgrades-question-4-answer-3": "Depois da Fusão, validadores protegerão toda a rede por meio da prova de participação.",
- "page-upgrades-question-4-answer-6": "Qualquer pessoa pode se tornar um validador através da participação (staking) dos respectivos ETH.",
+ "page-upgrades-question-4-answer-6": "Qualquer pessoa pode se tornar um validador através do staking (participação) dos respectivos ETH.",
"page-upgrades-question-4-answer-7": "Mais sobre participação",
"page-upgrades-question-4-title": "O que é a camada de execução?",
- "page-upgrades-question-4-desc": "Antes da Fusão, a cadeia de blocos do Ethereum era algumas vezes chamada de \"Eth1\". Este termo foi eliminado e substituído por \"camada de execução\".",
- "page-upgrades-question-5-answer-1": "Para se tornar um validador na rede, você precisará participar com 32 ETH. Se você não tem tanto, ou não está disposto a apostar essa quantia, você pode participar de participações compartilhadas. Esses compartilhamentos permitirão que você participe com menos e ganhe frações do total de recompensas.",
+ "page-upgrades-question-4-desc": "Antes da Fusão, a blockchain do Ethereum era algumas vezes chamada de \"Eth1\". Este termo foi eliminado e substituído por \"camada de execução\".",
+ "page-upgrades-question-5-answer-1": "Para se tornar um validador na rede, você precisará participar com 32 ETH. Se você não tem tanto, ou não está disposto a apostar essa quantia, você pode se unir a participações compartilhadas. Esses compartilhamentos permitirão que você participe com menos e ganhe frações do total de recompensas.",
"page-upgrades-question-5-desc": "Você precisará usar a plataforma Staking Launchpad ou entrar em um pool de participação.",
"page-upgrades-question-5-title": "Como faço staking?",
- "page-upgrades-question-6-answer-3": "Danny Ryan, da Fundação Ethereum, atualiza regularmente a comunidade:",
- "page-upgrades-question-6-answer-4": "Ben Edgington da ConsenSys tem uma newsletter semanal sobre as melhorias do Ethereum:",
+ "page-upgrades-question-6-answer-3": "Danny Ryan, da Ethereum Foundation, atualiza regularmente a comunidade:",
+ "page-upgrades-question-6-answer-4": "Ben Edgington, da ConsenSys, tem uma newsletter semanal sobre as melhorias no Ethereum:",
"page-upgrades-question-6-answer-5": "Você também pode participar da discussão sobre pesquisa e desenvolvimento no Ethereum em ethresear.ch.",
"page-upgrades-question-6-title": "O que eu preciso fazer com meu dapp?",
- "page-upgrades-question-6-desc": "A Fusão foi projetada para ter um impacto mínimo nos desenvolvedores de dapp, embora houvesse algumas pequenas mudanças que valem a pena apontar.",
+ "page-upgrades-question-6-desc": "A Fusão foi projetada para ter um impacto mínimo nos desenvolvedores de dapp, embora haja algumas pequenas mudanças que vale a pena apontar.",
"page-upgrades-question-6-answer-1": "Os desenvolvedores de dapp familiarizados com o Ethereum antes da fusão devem estar cientes de algumas mudanças. Essas mudanças incluem estrutura e tempo de bloco, algumas mudanças de opcode, fontes de aleatoriedade na cadeia e o conceito de finalização de época.",
"page-upgrades-question-6-answer-1-link": "Como A Fusão afeta a camada de aplicativos do Ethereum",
- "page-upgrades-question-6-answer-2": "As aplicações praticamente não foram afetadas.",
+ "page-upgrades-question-6-answer-2": "Os aplicativos praticamente não foram afetados.",
"page-upgrades-question-7-desc": "Muitas equipes diferentes de toda a comunidade estão trabalhando nas distantas melhorias do Ethereum.",
"page-upgrades-question-7-lighthouse": "Lighthouse",
"page-upgrades-question-7-lighthouse-lang": "(Implementação Rust)",
@@ -116,53 +116,53 @@
"page-upgrades-question-7-clients": "Saiba mais sobre clientes de Ethereum",
"page-upgrades-question-8-answer-1": "As melhorias do Ethereum ajudarão a dimensionar o Ethereum de forma descentralizada, mantendo a segurança e aumentando a sustentabilidade.",
"page-upgrades-question-8-answer-2": "Talvez o problema mais óbvio seja que o Ethereum precisa ser capaz de lidar com mais de 15-45 transações por segundo. Mas as melhorias também abordam alguns outros problemas atuais do Ethereum.",
- "page-upgrades-question-8-answer-3": "A rede está com uma demanda tão alta que está tornando o uso do Ethereum caro. Os nós da rede estão lutando com o tamanho da Ethereum e a quantidade de dados que seus computadores estão tendo que processar. O algoritmo original que sustentava a segurança e descentralização do Ethereum consome muita energia e precisa ser mais ecológico.",
+ "page-upgrades-question-8-answer-3": "A rede está com uma demanda tão alta que está tornando o uso do Ethereum caro. Os nós da rede estão lutando com o tamanho do Ethereum e a quantidade de dados que seus computadores estão tendo que processar. O algoritmo original que sustentava a segurança e descentralização do Ethereum consome muita energia e precisa ser mais ecológico.",
"page-upgrades-question-8-answer-4": "Muito do que está mudando sempre esteve nos planos do Ethereum desde 2015. Mas as condições atuais estão tornando essas melhorias cada vez mais necessárias.",
- "page-upgrades-question-8-answer-6": "Conheça a visão do Ethereum",
+ "page-upgrades-question-8-answer-6": "Conheça a visão sobre o Ethereum",
"page-upgrades-question-8-desc": "O Ethereum que utilizamos hoje precisa oferecer uma melhor experiência para usuários finais e participantes da rede.",
"page-upgrades-question-8-title": "Por que as melhorias são necessárias?",
- "page-upgrades-question-9-answer-1": "O papel mais ativo que você pode desempenhar é a participação com seus ETH.",
+ "page-upgrades-question-9-answer-1": "O papel mais ativo que você pode desempenhar é participar com seus ETH.",
"page-upgrades-question-9-answer-2": "Você também pode querer executar um segundo cliente para ajudar a melhorar a diversidade de clientes.",
"page-upgrades-question-9-answer-3": "Se você tem habilidades mais técnicas, pode ajudar a resolver bugs em novos clientes.",
"page-upgrades-question-9-answer-4": "Você também pode participar das discussões técnicas com pesquisadores do Ethereum em ethresear.ch.",
"page-upgrades-question-9-desc": "Você não precisa ser técnico para contribuir. A comunidade está procurando contribuições de todos os tipos de habilidades.",
"page-upgrades-question-9-stake-eth": "Participe com ETH",
"page-upgrades-question-9-title": "Como posso contribuir para melhorias no Ethereum?",
- "page-upgrades-question-9-more": "Encontre formas mais gerais de se envolver com Ethereum",
+ "page-upgrades-question-9-more": "Encontre formas mais gerais de se envolver com o Ethereum",
"page-upgrades-question-10-title": "Quais são as fases do Eth2?'",
"page-upgrades-question-10-desc": "Algumas coisas mudaram aqui.",
- "page-upgrades-question-10-answer-0": "O próprio termo \"Eth2\" está sendo eliminado, uma vez que não representa uma atualização única ou nova rede. É mais precisamente um conjunto de várias melhorias e todas fazem sua parte para tornar o Ethereum mais dimensionável, seguro e sustentável. A rede que você conhece e ama simplesmente será referida como Ethereum.",
+ "page-upgrades-question-10-answer-0": "O próprio termo \"Eth2\" está sendo eliminado, uma vez que não representa uma melhoria única ou nova rede. É mais precisamente um conjunto de várias melhorias e todas fazem sua parte para tornar o Ethereum mais dimensionável, seguro e sustentável. A rede que você conhece e ama simplesmente será referida como Ethereum.",
"page-upgrades-question-10-answer-1": "Somos relutantes em falar em termos de um roadmap técnico, porque é um software: as coisas podem mudar. Achamos que é mais fácil entender o que está acontecendo quando você lê sobre os resultados.",
"page-upgrades-question-10-answer-1-link": "Veja as melhorias",
"page-upgrades-question-10-answer-2": "Mas se você seguiu as discussões, esta é a maneira como as melhorias se encaixam nos roadmaps técnicos.",
"page-upgrades-question-10-answer-3": "A Fase 0 descreve o que é feito para manter a Beacon Chain funcionando.",
"page-upgrades-question-10-answer-5": "A fase 1 originalmente se concentrou na implementação das cadeias de fragmentos, mas a priorização mudou para A Fusão, lançada em 15 de setembro de 2022.",
- "page-upgrades-question-10-answer-6": "A fase 1.5 foi originalmente planejada para seguir as implementações de fragmentos quando a Rede principal fosse adicionada como o último fragmento à Beacon Chain. No entanto, à medida que a tecnologia de rollup progrediu, a comunidade do Ethereum acelerou a transição, afastando-se da prova de trabalho.",
- "page-upgrades-question-10-answer-7": "Os planos em torno da Fase 2 têm sido um ponto de intensa pesquisa e discussão. Com A Fusão por trás de nós e os avanços nas soluções de camada 2, os objetivos mudaram para fornecer uma forma mais simplificada de fragmentação de dados para maximizar a eficiência do rollup. A camada 2 atual permite a capacidade de dimensionar a execução da transação, e a fragmentação permitirá o armazenamento de provas para esses dados na camada 1 de maneira barata e escalável.",
+ "page-upgrades-question-10-answer-6": "A fase 1.5 foi originalmente planejada para seguir as implementações de fragmentos quando a Rede principal fosse adicionada como o último fragmento à Beacon Chain. No entanto, à medida que a tecnologia de rollup progrediu, a comunidade do Ethereum acelerou a transição, migrando da prova de trabalho.",
+ "page-upgrades-question-10-answer-7": "Os planos em torno da Fase 2 têm sido um ponto de intensa pesquisa e discussão. Com a implementação da Fusão e os avanços nas soluções de camada 2, os objetivos mudaram para fornecer uma forma mais simplificada de fragmentação de dados para maximizar a eficiência do rollup. A camada 2 atual permite a capacidade de dimensionar a execução da transação, e a fragmentação permitirá o armazenamento de provas para esses dados na camada 1 de maneira barata e escalável.",
"page-upgrades-question-10-answer-8": "Mais sobre o roadmap voltado a rollups",
"page-upgrades-question-11-title": "Posso comprar Eth2?",
- "page-upgrades-question-11-desc": "Não. Não há nenhum token Eth2 e seu ETH não mudou após A Fusão.",
- "page-upgrades-question-11-answer-1": "Um dos principais motivos por trás da alteração do termo Eth2 era o equívoco comum de que os detentores de ETH eram obrigados a migrar seu ETH para \"ETH 2.0\" após A Fusão ou qualquer outra atualização. Isso não é verdade e nunca foi.",
+ "page-upgrades-question-11-desc": "Não. Não há nenhum token Eth2, e seu ETH não mudou após a Fusão.",
+ "page-upgrades-question-11-answer-1": "Um dos principais motivos por trás da alteração do termo Eth2 era o equívoco comum de que os detentores de ETH eram obrigados a migrar seu ETH para \"ETH 2.0\" após a Fusão ou qualquer outra melhoria. Isso não é verdade e nunca foi.",
"page-upgrades-question-11-answer-2": " Essa confusão geralmente é explorada por golpistas.",
"page-upgrades-question-title": "Perguntas frequentes",
- "page-upgrades-question3-answer-1": "Os detentores de ETH certamente não necessitarão fazer nada. Seus ETH não precisarão de mudanças ou atualizações. Com certeza existirão fraudadores dizendo o contrário, então tenha cuidado.",
+ "page-upgrades-question3-answer-1": "Os detentores de ETH não necessitarão fazer nada. Seus ETH não precisarão de mudanças ou melhorias. Com certeza existirão golpistas dizendo o contrário, então tenha cuidado.",
"page-upgrades-scalable": "Mais dimensionável",
"page-upgrades-scalable-desc": "O Ethereum precisa lidar com milhares de transações por segundo, para tornar os aplicativos mais rápidos e mais baratos de usar.",
"page-upgrades-secure": "Mais seguro",
"page-upgrades-secure-desc": "O Ethereum precisa ser mais seguro. À medida que a adoção do Ethereum aumenta, o protocolo precisa ficar mais seguro contra todas as formas de ataque.",
- "page-upgrades-shard-date": "A fragmentação acompanhará A Fusão em várias fases, entre 2023 e 2024.",
- "page-upgrades-shard-desc": "O Danksharding ampliará a capacidade do Ethereum de armazenar dados e trabalhará em harmonia com as L2s para dimensionar a taxa de transferência e reduzir as taxas de rede. O Danksharding será implementado em diversas etapas, começando com o ProtoDanksharding.",
+ "page-upgrades-shard-date": "A fragmentação acompanhará a Fusão em várias fases, em algum momento entre 2023 e 2024.",
+ "page-upgrades-shard-desc": "O Danksharding ampliará a capacidade do Ethereum de armazenar dados e funcionará em harmonia com as L2s para dimensionar a taxa de transferência e reduzir as taxas de rede. Também será implementado em diversas etapas, começando com o ProtoDanksharding.",
"page-upgrades-shard-estimate": "Estimativa: 2023-2024",
"page-upgrades-shard-lower": "Mais sobre fragmentação",
"page-upgrades-shard-title": "Fragmentação",
"page-upgrades-stay-up-to-date": "Mantenha-se atualizado",
- "page-upgrades-stay-up-to-date-desc": "Fique por dentro das últimas notícias dos pesquisadores e desenvolvedores que trabalham nas atualizações do Ethereum.",
+ "page-upgrades-stay-up-to-date-desc": "Fique por dentro das últimas notícias dos pesquisadores e desenvolvedores que trabalham nas melhorias do Ethereum.",
"page-upgrades-sustainable-desc": "O consumo de energia do Ethereum era intenso até recentemente. A transição para a prova de participação trouxe uma redução de energia para a rede de mais de 99,9%.",
"page-upgrades-take-part": "Participe da pesquisa",
"page-upgrades-take-part-desc": "Os pesquisadores e entusiastas do Ethereum se encontram aqui para discutir os esforços de pesquisa, incluindo tudo sobre as melhorias do Ethereum.",
"page-upgrades-the-upgrades": "As melhorias do Ethereum",
- "page-upgrades-the-upgrades-desc": "As atualizações do Ethereum visam melhorar a escalabilidade, segurança e sustentabilidade da rede. O Ethereum passou recentemente por algumas grandes melhorias na segurança e sustentabilidade, e outras estão por vir, especialmente em relação à escalabilidade.",
- "page-upgrades-unofficial-roadmap": "Não se trata de um roteiro oficial. É assim que vemos o que está acontecendo com base nas informações disponíveis. Mas como isso é tecnologia, as coisas podem mudar rapidamente. Pedimos, então, que não veja isso como um processo imutável.",
+ "page-upgrades-the-upgrades-desc": "As melhorias do Ethereum visam aumentar o dimensionamento, a segurança e a sustentabilidade da rede. O Ethereum passou recentemente por algumas grandes melhorias na segurança e sustentabilidade, e outras estão por vir, especialmente em relação ao dimensionamento.",
+ "page-upgrades-unofficial-roadmap": "Não se trata de um roadmap oficial. É assim que vemos o que está acontecendo com base nas informações disponíveis. Mas como isso é tecnologia, as coisas podem mudar rapidamente. Pedimos, então, que não veja isso como um processo imutável.",
"page-upgrades-upgrade-desc": "O Ethereum que conhecemos e amamos, agora mais dimensionável, seguro e sustentável...",
"page-upgrades-upgrades": "As melhorias do Ethereum",
"page-upgrades-upgrades-aria-label": "Menu de melhorias do Ethereum",
@@ -172,33 +172,33 @@
"page-upgrades-energy-consumption": "Mais sobre o consumo energético do Ethereum",
"page-upgrades-upgrading": "Melhorias do Ethereum para níveis mais avançados",
"page-roadmap-vision": "A visão",
- "page-roadmap-vision-btn": "Mais sobre a visão Ethereum",
+ "page-roadmap-vision-btn": "Mais acerca da visão sobre o Ethereum",
"page-roadmap-vision-desc": "Para integrar o Ethereum e atender a toda a humanidade, precisamos torná-lo mais dimensionável, seguro e sustentável.",
- "page-upgrades-what-happened-to-eth2-title": "O que aconteceu com \"Eth2?\"",
+ "page-upgrades-what-happened-to-eth2-title": "O que aconteceu com o \"Eth2\"?",
"page-upgrades-what-happened-to-eth2-1": "O termo \"Eth2\" era comumente usado antes da Fusão, mas está sendo descontinuado e substituído por uma terminologia mais precisa.",
- "page-upgrades-what-happened-to-eth2-1-more": "Mais sobre a fusão.",
- "page-upgrades-what-happened-to-eth2-2": "Desde a fusão de \"Eth1\" e \"Eth2\", não há mais duas cadeias de blocos Ethereum distintas; existe apenas um Ethereum.",
+ "page-upgrades-what-happened-to-eth2-1-more": "Mais informações sobre a Fusão.",
+ "page-upgrades-what-happened-to-eth2-2": "Desde a fusão de \"Eth1\" e \"Eth2\", não há mais duas blockchains Ethereum distintas; existe apenas um Ethereum.",
"page-upgrades-what-happened-to-eth2-3": "Para diminuir a confusão, a comunidade atualizou estes termos:",
- "page-upgrades-what-happened-to-eth2-3-1": "O \"Eth1\" é agora a \"camada de execução\", que lida com transações e execução.",
+ "page-upgrades-what-happened-to-eth2-3-1": "O \"Eth1\" agora é a \"camada de execução\", que lida com transações e execução.",
"page-upgrades-what-happened-to-eth2-3-2": "O \"Eth2\" é agora a \"camada de consenso\", que lida com o consenso da prova de participação.",
- "page-upgrades-what-happened-to-eth2-4": "Estas atualizações de terminologia apenas alteram as convenções de nomenclatura; isso não altera os objetivos ou o roadmap do Ethereum.",
- "page-upgrades-what-happened-to-eth2-5": "Saiba mais sobre a renomeação 'Eth2'",
+ "page-upgrades-what-happened-to-eth2-4": "Estas atualizações de terminologia apenas alteram as convenções de nomenclatura; isso não altera os objetivos ou o roteiro do Ethereum.",
+ "page-upgrades-what-happened-to-eth2-5": "Saiba mais sobre a renomeação \"Eth2\"",
"page-upgrades-why-cant-we-just-use-eth2-title": "Por que não podemos simplesmente usar Eth2?",
"page-upgrades-why-cant-we-just-use-eth2-mental-models-title": "Modelos mentais",
- "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "Um dos principais problemas com a marca Eth2 é que ela cria um modelo mental errado para novos usuários do Ethereum. Acreditam intuitivamente que Eth1 vem primeiro e Eth2 vem depois. Ou que a Eth1 deixa de existir uma vez que a Eth2 existe, nenhum deles é verdadeiro. Removendo a terminologia Eth2, evitamos que todos os futuros usuários naveguem por este modelo mental confuso.",
+ "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "Um dos principais problemas com a marca Eth2 é que ela cria um modelo mental errado para novos usuários do Ethereum. Acreditam intuitivamente que Eth1 vem primeiro e Eth2 vem depois, ou que a Eth1 deixa de existir uma vez que a Eth2 existe. Mas nada disso é certo. Ao remover a terminologia Eth2, evitamos que todos os futuros usuários lidem com esse modelo mental confuso.",
"page-upgrades-why-cant-we-just-use-eth2-inclusivity-title": "Inclusividade",
"page-upgrades-why-cant-we-just-use-eth2-inclusivity-description": "À medida que o roteiro para o Ethereum evoluiu, o Ethereum 2.0 tornou-se uma representação imprecisa do roteiro do Ethereum. Sendo cuidadosos e precisos em nossa escolha de palavras permite que o conteúdo do Ethereum seja entendido pelo público mais amplo possível.",
"page-upgrades-why-cant-we-just-use-eth2-scam-prevention-title": "Prevenção contra golpes",
- "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "Infelizmente, atores maliciosos tentaram usar o temo impróprio Eth2 para enganar usuários, dizendo a eles para trocar seus ETH por tokens \"ETH2\" ou que eles deveriam de alguma forma migrar seus ETH antes da atualização do Eth2. Esperamos que essa terminologia atualizada traga clareza para eliminar este vetor de fraude e ajudar a tornar o ecossistema mais seguro.",
+ "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "Infelizmente, pessoas mal-intencionadas tentaram usar o termo incorreto Eth2 para enganar usuários, dizendo a eles para trocar seus ETH por tokens \"ETH2\" ou que eles deveriam de alguma forma migrar seus ETH antes da atualização do Eth2. Esperamos que essa terminologia atualizada traga clareza para eliminar este vetor de fraude e ajudar a tornar o ecossistema mais seguro.",
"page-upgrades-why-cant-we-just-use-eth2-staking-clarity-title": "Transparência na participação",
"page-upgrades-why-cant-we-just-use-eth2-staking-clarity-description": "Alguns operadores de participação também representaram ETH em participação na Beacon Chain com o rótulo de \"ETH2\". Isso gera uma potencial confusão, uma vez que os utilizadores desses serviços não recebem realmente um token \"ETH2\". Não existe um token \"ETH2\"; ele simplesmente representa a sua parte na participação de um provedor específico.",
"page-upgrades-what-to-do": "O que você precisa fazer?",
"page-upgrades-what-to-do-desc": "Se você é um usuário de dapps ou um detentor de ETH, não precisa fazer nada. Se você é um desenvolvedor ou quer começar a participar, existem formas de fazer isso hoje mesmo.",
"page-upgrades-whats-next": "Quais são as melhorias do Ethereum?",
- "page-upgrades-whats-next-desc": "O roadmap do Ethereum envolve melhorias de protocolo interconectadas que tornarão a rede mais dimensionável, mais segura e mais sustentável. Estas melhorias estão sendo desenvolvidas por várias equipes de todo o ecossistema do Ethereum.",
- "page-upgrades-whats-next-history": "Aprenda sobre melhorias anteriores do Ethereum",
+ "page-upgrades-whats-next-desc": "O roadmap do Ethereum envolve melhorias de protocolo interconectadas que tornarão a rede mais dimensionável, mais segura e mais sustentável. Essas melhorias estão sendo desenvolvidas por várias equipes de todo o ecossistema do Ethereum.",
+ "page-upgrades-whats-next-history": "Saiba mais sobre as melhorias anteriores do Ethereum",
"page-upgrades-whats-ethereum": "Um momento, o que é Ethereum?",
- "page-upgrades-whats-new": "Ethereum: próximos passos",
+ "page-upgrades-whats-new": "Ethereum: próximas etapas",
"page-upgrades-security-link": "Mais sobre segurança e prevenção de fraude",
"page-staking-deposit-contract-staking-more-link": "Mais sobre participação",
"docs-nav-proof-of-stake": "Prova de participação",
diff --git a/src/intl/pt-br/page-wallets-find-wallet.json b/src/intl/pt-br/page-wallets-find-wallet.json
index c6e7fb5ac2b..de451aecbfa 100644
--- a/src/intl/pt-br/page-wallets-find-wallet.json
+++ b/src/intl/pt-br/page-wallets-find-wallet.json
@@ -1,6 +1,6 @@
{
"page-find-wallet-clear": "Limpar filtros",
- "page-find-wallet-desc-2": "Então, escolha sua carteira com base nas características que você deseja.",
+ "page-find-wallet-desc-2": "Escolha sua carteira com base nas características que você deseja.",
"page-find-wallet-description": "As carteiras têm muitos recursos dos quais você pode gostar.",
"page-find-wallet-last-updated": "Última atualização",
"page-find-wallet-meta-description": "Encontre e compare carteiras Ethereum com base nos recursos que você deseja.",
@@ -30,8 +30,8 @@
"page-find-wallet-swaps-desc": "Trocar tokens ERC-20 diretamente na carteira",
"page-find-wallet-layer-2": "Camada 2",
"page-find-wallet-layer-2-desc": "Carteiras que suportam camadas 2 de Ethereum",
- "page-find-wallet-gas-fee-customization": "Personalização da taxa de gás",
- "page-find-wallet-gas-fee-customization-desc": "Personalize suas quantidades de gás (taxa base, taxa prioritária e taxa máxima)",
+ "page-find-wallet-gas-fee-customization": "Personalização da taxa Gas",
+ "page-find-wallet-gas-fee-customization-desc": "Personalize suas quantidades de Gas (taxa base, taxa prioritária e taxa máxima)",
"page-find-wallet-ens-support": "Suporte para ENS",
"page-find-wallet-ens-support-desc": "Carteiras que suportam o Ethereum Name Service (ENS)",
"page-find-wallet-token-importing": "Importação de token",
@@ -40,7 +40,7 @@
"page-find-wallet-fee-optimization-desc": "Suporte a transações tipo 2 para taxas de gás otimizadas e taxas de reembolso para gás não utilizado",
"page-find-wallet-buy-crypto": "Comprar cripto",
"page-find-wallet-buy-crypto-desc": "Compre cripto com fiat diretamente na carteira \n *Observação: comprar cripto pode ser específico da região",
- "page-find-wallet-sell-for-fiat": "Venda por fiat",
+ "page-find-wallet-sell-for-fiat": "Venda através de fiduciários",
"page-find-wallet-sell-for-fiat-desc": "Vender cripto para fiduciário diretamente na carteira\n *Observação: saque de cripto pode ser específico da região",
"page-find-wallet-multisig": "Multi-assinaturas",
"page-find-wallet-multisig-desc": "Carteiras que requerem múltiplas assinaturas para autorizar uma transação",
@@ -90,5 +90,6 @@
"page-find-wallet-browser-desc": "Carteiras com extensões de navegador",
"page-find-wallet-device": "Dispositivo",
"page-find-choose-to-compare": "Selecione para comparar",
- "page-find-wallet-choose-features": "Escolher recursos"
+ "page-find-wallet-choose-features": "Escolher recursos",
+ "page-find-wallet-reset-filters": "Redefinir filtros"
}
diff --git a/src/intl/pt-br/page-wallets.json b/src/intl/pt-br/page-wallets.json
index 438f33613e0..fe5ee2cb32b 100644
--- a/src/intl/pt-br/page-wallets.json
+++ b/src/intl/pt-br/page-wallets.json
@@ -3,7 +3,7 @@
"page-wallets-accounts-addresses-desc": "Vale a pena entender as diferenças entre alguns termos-chave.",
"page-wallets-accounts-ethereum-addresses": "Uma conta Ethereum tem um endereço, assim como um e-mail tem um endereço. Isso é utilizado para identificar os seus ativos digitais.",
"page-wallets-alt": "Ilustração de um robô com um corpo em forma de cofre, representando uma carteira Ethereum",
- "page-wallets-ethereum-account": "Uma conta Ethereum é um par de chaves. Uma chave é utilizada para criar o endereço e pode ser compartilhada livremente, enquanto a outra chave deverá ser mantida em segredo, pois é utilizada para assinar instrumentos. Juntas, essas chaves permitem manter ativos e realizar transações.",
+ "page-wallets-ethereum-account": "Uma conta Ethereum é um par de chaves. Uma chave é usada para criar o endereço que você pode compartilhar livremente, e a outra chave você precisa manter em segredo, pois é usada para assinar coisas. Juntas, essas chaves permitem que você detenha ativos e realize transações.",
"page-wallets-blog": "Blog da Coinbase",
"page-wallets-bookmarking": "Marque sua carteira nos Favoritos",
"page-wallets-bookmarking-desc": "Se você usar uma carteira web, coloque o site nos Favoritos para se proteger contra golpes de phishing.",
@@ -13,7 +13,7 @@
"page-wallets-desc-3": "A sua carteira é uma ferramenta para interagir com a sua conta Ethereum. Ou seja, você pode trocar de provedor de carteira a qualquer momento. Muitas carteiras também permitem gerenciar diversas contas Ethereum em um único aplicativo.",
"page-wallets-desc-4": "Os provedores de carteira não têm custódia sobre os seus fundos, apenas oferecem um espaço para visualização dos seus ativos no Ethereum e ferramentas para gerenciá-los facilmente.",
"page-wallets-description": "As carteiras Ethereum são aplicativos que permitem que você controle a sua conta. Assim como uma carteira física, ela contém tudo o que você precisa para comprovar a sua identidade e gerenciar os seus ativos. A sua carteira permite fazer login em aplicativos, ver saldos, enviar transações e verificar a sua identidade.",
- "page-wallets-desktop": "Aplicativos desktop, se você preferir gerenciar seus fundos via MacOS, Windows ou Linux",
+ "page-wallets-desktop": "Aplicativos desktop, se você prefere gerenciar seus fundos via MacOS, Windows ou Linux",
"page-wallets-ethereum-wallet": "Uma carteira é uma ferramenta que permite a interação com a sua conta por meio de chaves, bem como ver o saldo da conta, enviar transações e muito mais.",
"page-wallets-explore": "Conheça Ethereum",
"page-wallets-features-desc": "Nós podemos ajudá-lo a escolher sua carteira com base nos recursos que são mais importantes para você.",
@@ -38,8 +38,8 @@
"page-wallets-seed-phrase-desc": "As carteiras geralmente darão a você uma frase \"semente\" que você deve escrever em algum lugar seguro. Esta é a única maneira para você recuperar sua carteira.",
"page-wallets-seed-phrase-example": "Aqui está um exemplo:",
"page-wallets-seed-phrase-snippet": "there aeroplane curve vent formation doge possible product distinct under spirit lamp",
- "page-wallets-seed-phrase-write-down": "Não a armazene em um computador. Anote-a e mantenha-a segura.",
- "page-wallets-slogan": "Controle as chaves do seu futuro digital",
+ "page-wallets-seed-phrase-write-down": "Não a armazene no computador. Anote e mantenha-a em segurança.",
+ "page-wallets-slogan": "Mantendo as chaves para o seu futuro digital",
"page-wallets-stay-safe": "Como se manter seguro",
"page-wallets-stay-safe-desc": "Para ter liberdade financeira e a capacidade de acessar e utilizar fundos em qualquer lugar envolve responsabilidades – não há atendimento ao cliente no espaço cripto. Você é responsável por manter as suas chaves seguras e protegidas.",
"page-wallets-subtitle": "As carteiras ajudam você a acessar os seus ativos digitais e fazer login em aplicativos.",
@@ -61,7 +61,7 @@
"page-wallets-your-ethereum-account": "Sua conta Ethereum",
"page-wallets-your-ethereum-account-desc": "A sua carteira é a janela para a sua conta Ethereum – o seu saldo, histórico de transações e muito mais. Mas você pode trocar os provedores de carteira a qualquer momento.",
"page-wallets-your-login": "Seu login para aplicativos Ethereum",
- "page-wallets-your-login-desc": "A sua carteira permite a conexão a aplicativos por meio da sua conta Ethereum. Serve como credenciais de login que você pode utilizar em diversos aplicativos.",
+ "page-wallets-your-login-desc": "Sua carteira permite que você se conecte a aplicativos usando a sua conta Ethereum. É como um login que você pode usar em vários aplicativos.",
"additional-reading-how-to-create-an-ethereum-account": "Como criar uma conta Ethereum",
"additional-reading-how-to-use-a-wallet": "Como usar uma carteira"
}
diff --git a/src/intl/pt-br/page-what-is-ethereum.json b/src/intl/pt-br/page-what-is-ethereum.json
index b38ca941f87..9e610911cb2 100644
--- a/src/intl/pt-br/page-what-is-ethereum.json
+++ b/src/intl/pt-br/page-what-is-ethereum.json
@@ -57,15 +57,15 @@
"page-what-is-ethereum-slide-4-title": "Empoderando gamers",
"page-what-is-ethereum-slide-4-desc-1": "Jogos Play-to-Earn (onde os jogadores são de fato recompensados por jogar os jogos) surgiram recentemente e estão transformando a indústria de jogos. Tradicionalmente, muitas vezes é proibido negociar ou transferir ativos do jogo para outros jogadores com dinheiro real. Isso força os jogadores a usar sites do mercado negro que geralmente são um risco de segurança. Os jogos Blockchain abraçam a economia do jogo e promovem esse comportamento de maneira confiável.",
"page-what-is-ethereum-slide-4-desc-2": "Além disso, os jogadores são incentivados pela possibilidade de trocar os tokens do jogo por dinheiro real e, assim, serem verdadeiramente recompensados pelo tempo que jogaram.",
- "page-what-is-ethereum-meet-ether-title": "Conheça o ether, a criptomoeda da Ethereum",
- "page-what-is-ethereum-meet-ether-desc-1": "Muitas ações na rede Ethereum exigem que algum trabalho seja feito no computador embutido do Ethereum (conhecido como Ethereum Virtual Machine). Esta computação não é gratuita; é paga usando a criptomoeda nativa do Ethereum chamada ether (ETH). Isso significa que você precisa de pelo menos uma pequena quantidade de ether para usar a rede.",
- "page-what-is-ethereum-meet-ether-desc-2": "O Ether é puramente digital e você pode enviá-lo para qualquer pessoa em qualquer lugar do mundo instantaneamente. O fornecimento de ether não é controlado por nenhum governo ou empresa — ele é descentralizado e totalmente transparente. O Ether é emitido de maneira precisa, e de acordo com o protocolo, apenas aos participantes que protegem a rede.",
+ "page-what-is-ethereum-meet-ether-title": "Conheça o Ether, a criptomoeda da Ethereum",
+ "page-what-is-ethereum-meet-ether-desc-1": "Muitas ações na rede Ethereum exigem que algum trabalho seja feito no computador embutido do Ethereum (conhecido como Ethereum Virtual Machine). Esta computação não é gratuita; é paga usando a criptomoeda nativa do Ethereum chamada Ether (ETH). Isso significa que você precisa de pelo menos uma pequena quantidade de Ether para usar a rede.",
+ "page-what-is-ethereum-meet-ether-desc-2": "O Ether é puramente digital e você pode enviá-lo para qualquer pessoa em qualquer lugar do mundo instantaneamente. O fornecimento de ether não é controlado por nenhum governo ou empresa - ele é descentralizado e totalmente transparente. O Ether é emitido de maneira precisa de acordo com o protocolo, apenas aos participantes que protegem a rede.",
"page-what-is-ethereum-what-is-ether": "O que é ether?",
"page-what-is-ethereum-get-eth": "Compre ETH",
"page-what-is-ethereum-explore-applications": "Conheça as aplicações",
"page-what-is-ethereum-learn-defi": "Saiba mais sobre DeFi",
"page-what-is-ethereum-who-runs-ethereum-title": "Quem executa o Ethereum?",
- "page-what-is-ethereum-who-runs-ethereum-desc-1": "O Ethereum não é controlado por nenhuma entidade em particular. Ele existe sempre que há computadores conectados executando software seguindo o protocolo Ethereum e adicionando à blockchain Ethereum. Cada um desses computadores é conhecido como um nó. Os nós podem ser executados por qualquer pessoa, embora, para participar da proteção da rede, você precisa colocar ETH (token nativo do Ethereum). Qualquer pessoa com 32 ETH pode fazer isso sem precisar de permissão.",
+ "page-what-is-ethereum-who-runs-ethereum-desc-1": "O Ethereum não é controlado por nenhuma entidade em particular. Ele existe sempre que há computadores conectados executando software seguindo o protocolo Ethereum e adicionando ao blockchain Ethereum. Cada um desses computadores é conhecido como um nó. Os nós podem ser executados por qualquer pessoa, embora, para participar da proteção da rede, você precisa colocar ETH (token nativo do Ethereum). Qualquer pessoa com 32 ETH pode fazer isso sem precisar de permissão.",
"page-what-is-ethereum-who-runs-ethereum-desc-2": "Até mesmo o código-fonte do Ethereum não é produzido por uma única entidade. Qualquer um pode sugerir mudanças no protocolo e discutir atualizações. Existem várias implementações do protocolo Ethereum que são produzidas por organizações independentes em várias linguagens de programação, e elas geralmente são construídas de forma aberta e encorajam as contribuições da comunidade.",
"page-what-is-ethereum-run-a-node": "Execute um nó",
"page-what-is-ethereum-smart-contract-title": "O que são contratos inteligentes?",
diff --git a/src/intl/ru/common.json b/src/intl/ru/common.json
index 9939d346540..ac646cd9838 100644
--- a/src/intl/ru/common.json
+++ b/src/intl/ru/common.json
@@ -1,7 +1,16 @@
{
- "account-abstraction": "Абстрагирование аккаунта",
"about-ethereum-org": "Об ethereum.org",
"about-us": "О нас",
+ "adding-desci-projects": "Добавление проектов DeSci",
+ "adding-developer-tools": "Добавление инструментов для разработчиков",
+ "adding-exchanges": "Добавление бирж",
+ "adding-glossary-terms": "Добавление терминов в глоссарий",
+ "adding-layer-2s": "Adding Layer 2s",
+ "adding-products": "Добавление продуктов",
+ "adding-staking-products": "Добавление продуктов, использующих стейкинг",
+ "adding-wallets": "Добавление кошельков",
+ "account-abstraction": "Абстрагирование аккаунта",
+ "acknowledgements": "Благодарности",
"aria-toggle-search-button": "Переключение кнопки поиска",
"aria-toggle-menu-button": "Переключение кнопки меню",
"beacon-chain": "Beacon Chain",
@@ -12,6 +21,8 @@
"community-hub": "Центр сообщества",
"community-menu": "Меню сообщества",
"contact": "Контактные данные",
+ "content-buckets": "Категории материалов",
+ "content-resources": "Ресурсы с информационными материалами",
"content-standardization": "Стандартизация содержимого",
"contributing": "Содействие",
"contributors": "Соавторы",
@@ -28,6 +39,8 @@
"decentralized-social-networks": "Децентрализованные социальные сети",
"decentralized-science": "Децентрализованная наука (DeSci)",
"defi-page": "Децентрализованные финансы (DeFi)",
+ "design": "Дизайн",
+ "design-principles": "Принципы дизайна",
"devcon": "Девкон",
"developers": "Разработчикам",
"developers-home": "Домашняя страница для разработчиков",
@@ -83,7 +96,7 @@
"feedback-card-prompt-tutorial": "Было ли это руководство полезным?",
"feedback-widget-thank-you-title": "Спасибо за ваш отзыв!",
"feedback-widget-thank-you-subtitle": "Сделайте эту страницу еще лучше, ответив на несколько вопросов.",
- "feedback-widget-thank-you-subtitle-ext": "Если вам нужна помощь, вы можете связаться с сообществом в нашем Discord.",
+ "feedback-widget-thank-you-subtitle-ext": "Если вам нужна помощь, вы можете связаться с сообществом в нашем Discord.",
"feedback-widget-thank-you-timing": "2–3 мин",
"feedback-widget-thank-you-cta": "Открыть небольшой опрос",
"find-wallet": "Найти кошелек",
@@ -94,11 +107,11 @@
"grants": "Гранты",
"grant-programs": "Программы грантов экосистемы",
"guides": "Руководства",
- "guides-hub": "Центр руководств",
+ "guides-hub": "Практические руководства",
"history-of-ethereum": "История Ethereum",
"home": "Главная",
"how-ethereum-works": "Как работает Ethereum",
- "how-to-register-an-ethereum-account": "Как зарегистрировать аккаунт Ethereum",
+ "how-to-create-an-ethereum-account": "Как «создать» учетную запись Ethereum",
"how-to-revoke-token-access": "Как отозвать доступ умного контракта к вашим средствам в криптовалюте",
"how-to-swap-tokens": "Как менять токены",
"how-to-use-a-bridge": "Как переводить токены на уровень 2",
@@ -128,6 +141,7 @@
"loading-error-try-again-later": "Загрузить данные не удалось. Повторите попытку позже.",
"logo": "логотип",
"mainnet-ethereum": "Основная сеть Ethereum",
+ "merge": "Слияние",
"more": "Больше",
"nav-developers": "Разработчикам",
"nav-developers-docs": "Документация для разработчиков",
@@ -140,7 +154,7 @@
"page-developers-aria-label": "Меню разработчиков",
"page-index-meta-title": "Главная",
"page-last-updated": "Последнее обновление страницы",
- "pbs": "Разделение автора предложения и разработчика",
+ "pbs": "Разделение предлагающих и строителей",
"pools": "Объединенный стейкинг",
"privacy-policy": "Политика о конфиденциальности",
"private-ethereum": "Частный Ethereum",
@@ -164,6 +178,7 @@
"search-box-blank-state-text": "Искать здесь!",
"search-eth-address": "Похоже на адрес Ethereum. Мы не предоставляем особые данные для адресов. Попробуйте поискать их в обозревателе блоков, как",
"search-no-results": "Поиск не дал результатов",
+ "security": "Безопасность",
"single-slot-finality": "Завершение в одном слоте",
"statelessness": "Клиенты, не использующие состояние",
"see-contributors": "Посмотреть участников",
@@ -181,6 +196,7 @@
"start-here": "Начните здесь",
"style-guide": "Руководство по стилю",
"solo": "Одиночный стейкинг",
+ "support": "Поддержка",
"terms-of-use": "Условия пользования",
"translation-banner-body-new": "Вы просматриваете эту страницу на английском языке, потому что мы еще не перевели ее. Помогите нам перевести эти материалы.",
"translation-banner-body-update": "Есть новая версия этой страницы, но пока только на английском языке. Помогите нам перевести последнюю версию.",
@@ -191,6 +207,7 @@
"translation-banner-no-bugs-title": "Здесь нет ошибок!",
"translation-banner-no-bugs-content": "Эта страница сейчас не переводится. Пока что мы намеренно оставили эту страницу на английском языке.",
"translation-banner-no-bugs-dont-show-again": "Больше не показывать",
+ "translation-program": "Программа перевода",
"try-using-search": "Попробуйте использовать поиск, чтобы найти то, что вы ищете, или",
"tutorials": "Учебники",
"up": "Вверх",
diff --git a/src/intl/ru/page-gas.json b/src/intl/ru/page-gas.json
new file mode 100644
index 00000000000..cacdc0cb65b
--- /dev/null
+++ b/src/intl/ru/page-gas.json
@@ -0,0 +1,64 @@
+{
+ "page-gas-meta-title": "Gas fees on Ethereum: how do they work?",
+ "page-gas-meta-description": "Learn about gas on Ethereum: how they work and how to pay less in gas fees",
+ "page-gas-hero-title": "Gas fees",
+ "page-gas-hero-header": "Network fees",
+ "page-gas-hero-button-1-content": "Что такое газ?",
+ "page-gas-hero-subtitle-1": "Network fees on Ethereum are called gas.",
+ "page-gas-hero-subtitle-2": "Gas is the fuel that powers Ethereum.",
+ "page-gas-summary-title": "Обзор",
+ "page-gas-summary-item-1": "Every transaction on Ethereum requires a small form of payment to process",
+ "page-gas-summary-item-2": "These fees are known as ‘gas’ fee",
+ "page-gas-summary-item-3": "Gas fees change based on network congestion",
+ "page-gas-what-are-gas-fees-header": "What are gas fees?",
+ "page-gas-what-are-gas-fees-text-1": "Think of Ethereum as a large computer network where people can do tasks like sending messages or running programs. Just like in the real world, these tasks require energy to get done.",
+ "page-gas-what-are-gas-fees-text-2": "In Ethereum, each computational action has a set \"gas\" price. Your gas fees are the total cost of the actions in your transaction. When you send a transaction or run a smart contract, you pay in gas fees to process it.",
+ "page-gas-how-do-i-pay-less-gas-header": "How do I pay less gas?",
+ "page-gas-how-do-i-pay-less-gas-text": "While higher fees on Ethereum are sometimes inevitable, there are strategies you can use to reduce the cost:",
+ "page-gas-how-do-i-pay-less-gas-card-1-title": "Time your transactions",
+ "page-gas-how-do-i-pay-less-gas-card-1-description": "Just like travelling off-peak is less crowded and more affordable, Ethereum is generally cheaper to use when North America is asleep.",
+ "page-gas-how-do-i-pay-less-gas-card-2-title": "Wait for gas to go down",
+ "page-gas-how-do-i-pay-less-gas-card-2-description": "Gas prices go up and down every twelve seconds based on how congested Ethereum is. When gas prices are high, waiting just a few minutes before making a transaction could see a significant drop in what you pay.",
+ "page-gas-how-do-i-pay-less-gas-card-3-title": "Использовать уровень 2",
+ "page-gas-how-do-i-pay-less-gas-card-3-description": "Layer-2 chains are built atop Ethereum, offering lower fees and handling more transactions. They're a good choice to save on fees for transactions that don't need to happen on the main Ethereum network.",
+ "page-gas-try-layer-2": "Try layer 2",
+ "page-gas-what-causes-high-gas-fees-header": "What causes high gas fees?",
+ "page-gas-what-causes-high-gas-fees-text-1": "Whenever the amount of computation (gas) on Ethereum exceeds a certain threshold, gas fees begin to rise. The more the gas exceeds this threshold, the quicker gas fees increase.",
+ "page-gas-what-causes-high-gas-fees-text-2": "Higher fees could be caused by things like popular dapps or NFTs, periodically increased trading on DEXs, or an overwhelming number of user activity at peak times.",
+ "page-gas-what-causes-high-gas-fees-text-3": "Developers on Ethereum should take care to optimise their smart contracts usage before deploying. If lots of people are using a poorly written smart contract, it will consume more gas and could inadvertently cause network congestion.",
+ "page-gas-want-to-dive-deeper": "Хотите узнать больше?",
+ "page-gas-check-out-the-developer-docs": "Check out the developer docs.",
+ "page-gas-attack-of-the-cryptokitties-header": "Attack of the Cryptokitties",
+ "page-gas-attack-of-the-cryptokitties-text": "In November 2017, the popular CryptoKitties project was launched. Its rapid spike in popularity caused significant network congestion and extremely high gas fees. The challenges posed by CryptoKitties accelerated the urgency of finding solutions for scaling Ethereum.",
+ "page-gas-why-do-we-need-gas-header": "Why do we need gas?",
+ "page-gas-why-do-we-need-gas-text": "Gas is a critical element in keeping Ethereum secure and processing transactions. Gas helps in many ways:",
+ "page-gas-benefits-1-description": "Gas keeps Ethereum sybil-resistant by preventing malicious actors from overwhelming the network with fraudulent activities.",
+ "page-gas-benefits-2-description": "Because computation costs gas, spamming Ethereum with expensive transactions, either accidentally and maliciously, is financially disencentivised.",
+ "page-gas-benefits-3-description": "A hard-limit on the amount of computation that can be done at any one time prevents Ethereum from being overwhelmed, helping to ensure the network is always accessible.",
+ "page-gas-how-is-gas-calculated-header": "How is gas calculated?",
+ "page-gas-advanced": "Дополнительно",
+ "page-gas-how-is-gas-calculated-text-1": "The total gas fee you pay is made up of a few parts:",
+ "page-gas-how-is-gas-calculated-item-1": "Base fee: a fee set by the network that has to be paid for a transaction",
+ "page-gas-how-is-gas-calculated-item-2": "Priority fee: an optional tip to incentivise node operators to include your transaction",
+ "page-gas-how-is-gas-calculated-item-3": "Units of gas used*: remember we said gas represented computation? More complex actions, like interacting with a smart contract, use more gas than simple ones, such as sending a transaction.",
+ "page-gas-how-is-gas-calculated-list-item-1": "* See Figure 1 to see how much gas different types of transactions use",
+ "page-gas-how-is-gas-calculated-text-2": "The formula for calculating a gas fee is units of gas used * (base fee + priority fee). Most wallets will calculate gas usage and display it in a more straight-forward way.",
+ "page-gas-table-figure": "Figure 1: Gas used by transaction type",
+ "page-gas-table-header-1": "Transaction type",
+ "page-gas-table-header-2": "Units of gas used",
+ "page-gas-table-item-1-transaction-type": "Sending ETH",
+ "page-gas-table-item-2-transaction-type": "Sending ERC-20 tokens",
+ "page-gas-table-item-3-transaction-type": "Transferring and NFT",
+ "page-gas-table-item-4-transaction-type": "Swapping on Uniswap",
+ "page-gas-faq-header": "Frequency asked questions",
+ "page-gas-faq-question-1-q": "Who gets paid the gas fee in my transaction?",
+ "page-gas-faq-question-1-a-1": "The majority is gas fee—the base fee— is destroyed by the protocol (burned). The priority fee, if included in your transaction, will be given to the validator who proposed your transaction.",
+ "page-gas-faq-question-1-a-2": "You can read a detailed description of the process in the gas developer docs.",
+ "page-gas-faq-question-2-q": "Do I need to pay gas in ETH?",
+ "page-gas-faq-question-2-a-1": "Yes. All gas fees on Ethereum must be paid in the native ETH currency.",
+ "page-gas-faq-question-2-a-2": "Подробнее о ETH",
+ "page-gas-faq-question-3-q": "What is gwei?",
+ "page-gas-faq-question-3-a-1": "In most wallets or gas trackers, you will see gas prices denominated as ‘gwei’.",
+ "page-gas-faq-question-3-a-2": "Gwei is just a smaller unit of ETH, just as pennies are to dollars, with the difference being that 1 ETH equals 1 billion gwei. Gwei is useful when talking about very small amounts of ETH.",
+ "page-gas-use-layer-2": "Использовать уровень 2"
+}
diff --git a/src/intl/ru/page-get-eth.json b/src/intl/ru/page-get-eth.json
index dce84fc632d..4d8abc3dad7 100644
--- a/src/intl/ru/page-get-eth.json
+++ b/src/intl/ru/page-get-eth.json
@@ -9,23 +9,32 @@
"page-get-eth-cex-desc": "Биржи - это компании, которые позволяют покупать криптовалюту за традиционную валюту. Они обладают контролем над любым купленным вами ETH, пока вы не отправите его на кошелек, контролируемый вами.",
"page-get-eth-checkout-dapps-btn": "Просмотреть децентрализованные приложения",
"page-get-eth-community-safety": "Записи сообщества о безопасности",
- "page-get-eth-description": "Ethereum и ETH не контролируются каким-либо правительством или компанией - они децентрализованы. Это означает, что ETH может использовать любой человек.",
+ "page-get-eth-description": "Ethereum не контролируется ни одной организацией — он децентрализован.",
"page-get-eth-dex": "Децентрализованные биржи (DEX)",
- "page-get-eth-dex-desc": "Если вы хотите больше контроля, покупайте ETH у физических лиц. С помощью DEX вы можете торговать, не передавая контроль над своими средствами централизованной компании.",
+ "page-get-eth-dex-desc": "Если вы хотите больше контроля, покупайте ETH, используя умные контракты. С помощью DEX вы можете торговать цифровыми активами, не передавая контроль над своими средствами централизованной компании.",
+ "page-get-eth-peers": "Получайте ЕТН от одноранговых пользователей",
+ "page-get-eth-peers-desc": "Обзаведясь учетную запись Ethereum, вам останется только поделиться своим адресом, чтобы начать отправлять и получать ETH (и другие токены) с помощью одноранговой передачи.",
+ "page-get-eth-staking": "Вознаграждения за стейкинг",
+ "page-get-eth-staking-desc": "Если у вас уже есть ETH, их количество можно увеличить, заработав их в качестве узла-валидатора. Вы будете получать ETH как оплату за работу по проверке.",
+ "page-get-eth-earn": "Зарабатывайте ETH",
+ "page-get-eth-earn-desc": "Вы можете заработать ЕТН, работая на DAO или компании, которые платят в криптовалюте, выигрывая награды, находя баги в программном обеспечении и используя другие возможности.",
+ "page-get-eth-daos-link-desc": "Подробнее о DAO",
+ "page-get-eth-cex-link-desc": "Просматривайте список бирж",
+ "page-get-eth-staking-link-desc": "Узнавайте больше о стейкинге",
"page-get-eth-dexs": "Децентрализованные биржи (DEX)",
"page-get-eth-dexs-desc": "Децентрализованные биржи - открытые торговые площадки для ETH и других токенов. Они напрямую соединяют покупателей и продавцов.",
"page-get-eth-dexs-desc-2": "Вместо использования доверенных третьих лиц для защиты средств в сделке они используют код. ETH продавца будут переданы только тогда, когда оплата будет гарантирована. Этот тип кода известен как смарт-контракт.",
- "page-get-eth-dexs-desc-3": "Это означает, что существует меньше географических ограничений, чем при использовании централизованных альтернатив. Если кто-то продает то, что вы хотите, и принимает способ оплаты, который вы можете предоставить, то все готово. DEX может позволить вам купить ETH за другие токены, через PayPal или даже за наличные.",
+ "page-get-eth-dexs-desc-3": "Это означает, что существует меньше географических ограничений, чем при использовании централизованных альтернатив. Если кто-то продает то, что вы хотите, и принимает способ оплаты, который вы можете предоставить, то все готово.",
"page-get-eth-do-not-copy": "Пример: не копировать",
"page-get-eth-exchanges-disclaimer": "Мы собрали эту информацию вручную. Если вы обнаружите ошибки, дайте нам знать на",
- "page-get-eth-exchanges-empty-state-text": "Введите вашу страну проживания, чтобы увидеть список кошельков и бирж, которые можно использовать для покупки ETH",
+ "page-get-eth-exchanges-empty-state-text": "Укажите свою страну проживания, чтобы увидеть список бирж, которые можно использовать",
"page-get-eth-exchanges-except": "Кроме",
"page-get-eth-exchanges-header": "В какой стране вы живете?",
"page-get-eth-exchanges-header-exchanges": "Биржи",
"page-get-eth-exchanges-header-wallets": "Кошельки",
- "page-get-eth-exchanges-intro": "Биржи и кошельки имеют ограничение по месту продажи.",
+ "page-get-eth-exchanges-intro": "У бирж есть ограничения на то, где они могут покупать криптовалюту. Это ориентировочный список услуг, который должен действовать в каждой стране. Включение в него не является гарантией качества, вам необходимо самостоятельно изучать ситуацию!",
"page-get-eth-exchanges-no-exchanges": "К сожалению, нам неизвестны биржи, позволяющие купить ETH в этой стране. Если вы знаете, то сообщите нам на",
- "page-get-eth-exchanges-no-exchanges-or-wallets": "К сожалению, нам неизвестны биржи или кошельки, позволяющие купить ETH в этой стране. Если вы знаете, то сообщите нам на",
+ "page-get-eth-exchanges-no-exchanges-or-wallets": "К сожалению, нам неизвестны биржи, позволяющие купить ETH в этой стране. Если вы знаете, то сообщите нам на",
"page-get-eth-exchanges-no-wallets": "К сожалению, нам неизвестны кошельки, позволяющие купить ETH в этой стране. Если вы знаете, то сообщите нам на",
"page-get-eth-exchanges-search": "Напишите, где вы живете...",
"page-get-eth-exchanges-success-exchange": "Регистрация на бирже может занять несколько дней из-за их юридических проверок.",
@@ -36,30 +45,30 @@
"page-get-eth-hero-image-alt": "Получить изображение героя ETH",
"page-get-eth-keep-it-safe": "Сохранение ваших ETH в безопасности",
"page-get-eth-meta-description": "Как купить ETH в том месте, где вы живете, и советы, как позаботиться о них.",
- "page-get-eth-meta-title": "Как купить ETH",
+ "page-get-eth-meta-title": "Как получить ETH",
"page-get-eth-need-wallet": "Вам понадобится кошелек, чтобы использовать DEX.",
"page-get-eth-new-to-eth": "Новичок в ETH? Вот обзор, чтобы помочь вам начать.",
"page-get-eth-other-cryptos": "Купить за другую криптовалюту",
- "page-get-eth-protect-eth-desc": "Если вы планируете купить много ETH, вам, вероятно, понадобится хранить их в подконтрольном вам кошельке, а не на бирже. Дело в том, что биржи являются главной мишенью для хакеров. Если хакер получит доступ, то вы можете потерять все средства. С другой стороны, доступ к вашему кошельку есть только у вас.",
- "page-get-eth-protect-eth-in-wallet": "Защитите ваши ETH в кошельке",
+ "page-get-eth-protect-eth-desc": "Одна из основных функций Ethereum — это возможность контролировать свои активы, управляя аккаунтом. Это означает, что вы не обязаны доверять свои активы какой-либо ретьей стороне, вы получаете защиту от недобросовестных действий всех возможных опекунов активов, их банкротства или взлома. Однако это накладывает на вас обязанности по самостоятельному обеспечению их безопасности.",
+ "page-get-eth-protect-eth-in-wallet": "Храните ЕТН в собственном кошельке",
"page-get-eth-search-by-country": "Найти по стране",
- "page-get-eth-security": "Но это также означает, что вы должны серьёзно относиться к безопасности своих средств. С ETH вы не доверяете банку смотреть за вашими деньгами – вы доверяете только себе.",
+ "page-get-eth-security": "Это означает, что вы должны серьезно относиться к безопасности своих средств. С ETH вы не доверяете банку или компании смотреть за вашими активами, вы несете за них ответственность самостоятельно.",
"page-get-eth-smart-contract-link": "Подробнее о смарт-контрактах",
"page-get-eth-swapping": "Обменяйте ваши токены на ETH. И наоборот.",
"page-get-eth-try-dex": "Попробуйте DEX",
"page-get-eth-use-your-eth": "Используйте ваши ETH",
"page-get-eth-use-your-eth-dapps": "Теперь, когда у вас есть ETH, взгляните на несколько приложений Ethereum (dapps). Существуют приложения для финансов, социальных сетей, игр и многого другого.",
"page-get-eth-wallet-instructions": "Следуйте инструкциям кошелька",
- "page-get-eth-wallet-instructions-lost": "Если вы потеряете доступ к своему кошельку, вы также потеряете доступ и к своим средствам. Ваш кошелек должен дать вам инструкции, чтобы предупредить подобные ситуации. Удостоверьтесь, что вы внимательно следуете им – в большинстве случаев никто не сможет помочь вам в случае потери доступа к своему кошельку.",
+ "page-get-eth-wallet-instructions-lost": "Если вы потеряете доступ к своему аккаунту, вы также потеряете доступ и к своим средствам. Ваш кошелек должен дать вам инструкции, чтобы предупредить подобные ситуации. Удостоверьтесь, что вы внимательно следуете им: в большинстве случаев никто не сможет помочь вам в случае потери доступа к своему аккаунту.",
"page-get-eth-wallets": "Кошельки",
"page-get-eth-wallets-link": "Подробнее о кошельках",
"page-get-eth-wallets-purchasing": "Некоторые кошельки позволяют вам купить криптовалюту с помощью дебетовой или кредитной карты, банковского перевода или даже Apple Pay. Имеются географические ограничения.",
- "page-get-eth-warning": "Данные DEX не предназначены для начинающих, поскольку для их использования понадобится некоторое количество ETH.",
+ "page-get-eth-warning": "Эти DEX не предназначены для новичков, так как для их использования потребуется некоторое количество ETH. Это лишь примеры, а не рекомендованные продукты. Изучайте ситуацию самостоятельно!",
"page-get-eth-what-are-DEX's": "Что такое DEX?",
"page-get-eth-whats-eth-link": "Что такое ETH?",
- "page-get-eth-where-to-buy-desc": "Вы можете купить ETH на биржах или прямо из кошельков.",
+ "page-get-eth-where-to-buy-desc": "Вы можете заработать ЕТН, получить от одноранговых пользователей или купить на биржах и в приложениях.",
"page-get-eth-where-to-buy-desc-2": "Проверьте, какими службами вы сможете воспользоваться в вашем месте проживания.",
- "page-get-eth-where-to-buy-title": "Где купить ETH",
+ "page-get-eth-where-to-buy-title": "Где получить ETH",
"page-get-eth-your-address": "Ваш адрес ETH",
"page-get-eth-your-address-desc": "Когда вы загружаете кошелек, он создает для вас общедоступный адрес ETH. Вот пример такого адреса:",
"page-get-eth-your-address-desc-3": "Думайте об этом, как о вашем адресе электронной почты, но вместо сообщений вы получаете ETH. Если вы хотите перевести ETH из биржи в свой кошелек, используйте ваш адрес в качестве точки назначения. Дважды проверьте его перед отправкой!",
diff --git a/src/intl/ru/page-index.json b/src/intl/ru/page-index.json
index 21d686fba6b..42be9eed72e 100644
--- a/src/intl/ru/page-index.json
+++ b/src/intl/ru/page-index.json
@@ -48,7 +48,7 @@
"page-index-developers-code-example-description-3": "Вы можете переосмыслить существующие сервисы как децентрализованные открытые приложения.",
"page-index-network-stats-title": "Ethereum сегодня",
"page-index-network-stats-subtitle": "Последняя статистика сети",
- "page-index-network-stats-total-eth-staked": "Общая сумма поставленного ETH",
+ "page-index-network-stats-total-eth-staked": "Общая сумма поставленного в ETH",
"page-index-network-stats-eth-price-description": "Цена ETH (долл. США)",
"page-index-network-stats-eth-price-explainer": "Последняя цена за 1 эфир. Покупать можно даже 0,000000000000000001, нет необходимости в покупке целой единицы ETH.",
"page-index-network-stats-total-eth-staked-explainer": "Общее количество ETH, стейкинг которых проводится в настоящее время и обеспечивает безопасность сети.",
diff --git a/src/intl/ru/page-learn.json b/src/intl/ru/page-learn.json
index 9b308ea726d..86ad946a0c3 100644
--- a/src/intl/ru/page-learn.json
+++ b/src/intl/ru/page-learn.json
@@ -11,7 +11,7 @@
"hero-subtitle": "Ваш учебный справочник по миру Ethereum. Узнайте, как работает Ethereum и как подключиться к сети. Эта страница содержит технические и нетехнические статьи, руководства и ресурсы.",
"hero-button-lets-get-started": "Начать",
"what-is-crypto-1": "Возможно, вы слышали о криптовалютах, блокчейнах и биткоине. Ссылки ниже помогут вам узнать, что они из себя представляют и как они относятся к Ethereum.",
- "what-is-crypto-2": "Криптовалюты, такие как биткоин, позволяют кому угодно переводить деньги по всему миру. Ethereum делает то же, но также может запустить код, который позволяет людям создавать приложения и организации. Это сочетает упругость и гибкость: любая компьютерная программа может работать на Ethereum. Откройте для себя больше и узнайте, как начать:",
+ "what-is-crypto-2": "Криптовалюты, такие как биткоин, позволяют людям переводить деньги по всему миру. Ethereum делает то же, но также может запустить код, который позволяет людям создавать приложения и организации. Это дает стойкость и гибкость: любая компьютерная программа может работать на Ethereum. Узнайте больше, в том числе о том, как начать использовать Ethereum.",
"what-is-ethereum-card-title": "Что такое Ethereum?",
"what-is-ethereum-card-description": "Если вы заинтересовались Ethereum недавно, узнайте здесь о преимуществах платформы.",
"what-is-ethereum-card-image-alt": "Изображение человека, заглядывающего на базар, призвано быть олицетворением Ethereum.",
diff --git a/src/intl/ru/page-wallets-find-wallet.json b/src/intl/ru/page-wallets-find-wallet.json
index c5d8d2087a0..038cc3f13bc 100644
--- a/src/intl/ru/page-wallets-find-wallet.json
+++ b/src/intl/ru/page-wallets-find-wallet.json
@@ -90,5 +90,6 @@
"page-find-wallet-browser-desc": "Кошельки с расширениями для браузеров",
"page-find-wallet-device": "Устройство",
"page-find-choose-to-compare": "Выбрать для сравнения",
- "page-find-wallet-choose-features": "Выберите функции"
+ "page-find-wallet-choose-features": "Выберите функции",
+ "page-find-wallet-reset-filters": "Сбросить фильтры"
}
diff --git a/src/intl/tr/page-dapps.json b/src/intl/tr/page-dapps.json
index ff2ed11d378..d3807efd72f 100644
--- a/src/intl/tr/page-dapps.json
+++ b/src/intl/tr/page-dapps.json
@@ -115,7 +115,6 @@
"page-dapps-dapp-description-rarible": "Token'li koleksiyonlar oluşturun, satın ve satın alın.",
"page-dapps-dapp-description-rubic": "Kullanıcılar ve dApp'ler için Cross-Chain teknoloji toplayıcısı.",
"page-dapps-dapp-description-sablier": "Gerçek zamanlı olarak para akışı.",
- "page-dapps-dapp-description-skiff": "Sonsuz şifreli e-posta, takvim, belgeler ve dosyalar; size özgürce iletişim kurma gücü verir.",
"page-dapps-dapp-description-spatial": "Kendi özel avatarınızı ve 3B dünyalarınızı oluşturun",
"page-dapps-dapp-description-spruce": "Kimlik ve veri kontrolünü olması gereken yerde bırakmak için açık kaynaklı bir yapı, kullanıcılarla...",
"page-dapps-dapp-description-status": "Bilgi akışını serbest bırakma, özel, güvenli konuşma hakkını koruma ve bireylerin egemenliğini destekleme amacıyla tasarlandı.",
@@ -248,7 +247,6 @@
"page-dapps-set-up-a-wallet-button": "Cüzdan bul",
"page-dapps-set-up-a-wallet-description": "Bir cüzdan bir merkezi olmayan uygulama için \"girişiniz\" demektir",
"page-dapps-set-up-a-wallet-title": "Bir cüzdan oluşturun",
- "page-dapps-skiff-logo-alt": "Skiff logosu",
"page-dapps-social-button": "Sosyal",
"page-dapps-social-description": "Bunlar, kullanıcıların dijital kimliklerin ve sosyal şemaların sahibi olduğu, merkezi olmayan kimlik teknolojilerini kullanan, merkezi olmayan sosyal ağlar oluşturmaya odaklanan uygulamalardır.",
"page-dapps-social-title": "Sosyal",
diff --git a/src/intl/zh/page-dapps.json b/src/intl/zh/page-dapps.json
index cc261ae2428..06f8733a6c3 100644
--- a/src/intl/zh/page-dapps.json
+++ b/src/intl/zh/page-dapps.json
@@ -115,7 +115,6 @@
"page-dapps-dapp-description-rarible": "创建、出售和购买代币化的收藏品。",
"page-dapps-dapp-description-rubic": "面向用户和去中心化应用程序的跨链技术聚合器。",
"page-dapps-dapp-description-sablier": "实时流转资金。",
- "page-dapps-dapp-description-skiff": "端到端加密电子邮件、日历、文档和文件,让你能够自由交流。",
"page-dapps-dapp-description-spatial": "创建自己的自定义头像和 3D 世界",
"page-dapps-dapp-description-spruce": "开源堆栈将身份和数据控制权交还给用户。",
"page-dapps-dapp-description-status": "旨在实现信息的自由流动,保护进行私密安全对话的权利,并促进个人主权。",
@@ -248,7 +247,6 @@
"page-dapps-set-up-a-wallet-button": "查找钱包",
"page-dapps-set-up-a-wallet-description": "一个钱包地址是你“登录”去中心化应用程序的凭证",
"page-dapps-set-up-a-wallet-title": "创建一个钱包",
- "page-dapps-skiff-logo-alt": "Skiff 徽标",
"page-dapps-social-button": "社交",
"page-dapps-social-description": "这些应用程序专注于利用去中心化身份技术创建去中心化社交网络,其中数字身份和社交图谱由用户拥有。",
"page-dapps-social-title": "社交",
diff --git a/src/layouts/Roadmap.tsx b/src/layouts/Roadmap.tsx
index 27d434f6658..49547ad890e 100644
--- a/src/layouts/Roadmap.tsx
+++ b/src/layouts/Roadmap.tsx
@@ -66,18 +66,17 @@ export const roadmapComponents = {
RoadmapImageContent,
}
-interface IProps
- extends ChildOnlyProp,
- Pick
- {t("page-what-is-ethereum-what-can-eth-do-title")}