Skip to content

Commit 96364a2

Browse files
Merge remote-tracking branch 'upstream/dev' into refactor/shadcn-static-layout
2 parents e17f26d + ede3e40 commit 96364a2

File tree

107 files changed

+1730
-1303
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+1730
-1303
lines changed

.all-contributorsrc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12371,6 +12371,24 @@
1237112371
"contributions": [
1237212372
"content"
1237312373
]
12374+
},
12375+
{
12376+
"login": "Baystef",
12377+
"name": "Adebayo Steve",
12378+
"avatar_url": "https://avatars.githubusercontent.com/u/36106823?v=4",
12379+
"profile": "https://github.com/Baystef",
12380+
"contributions": [
12381+
"code"
12382+
]
12383+
},
12384+
{
12385+
"login": "sanjanaynvsdl",
12386+
"name": "Sanjana",
12387+
"avatar_url": "https://avatars.githubusercontent.com/u/142678317?v=4",
12388+
"profile": "https://github.com/sanjanaynvsdl",
12389+
"contributions": [
12390+
"bug"
12391+
]
1237412392
}
1237512393
],
1237612394
"contributorsPerLine": 7,

.storybook/i18next.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const ns = [
2121
"page-upgrades",
2222
"page-developers-index",
2323
"page-what-is-ethereum",
24+
"page-upgrades-index",
2425
] as const
2526
const supportedLngs = Object.keys(baseLocales)
2627

.storybook/main.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ const config: StorybookConfig = {
4747
},
4848
},
4949
webpackFinal: async (config) => {
50+
config.module = config.module || {}
51+
config.module.rules = config.module.rules || []
52+
5053
if (config.resolve) {
5154
config.resolve.plugins = [
5255
...(config.resolve.plugins || []),
@@ -55,6 +58,22 @@ const config: StorybookConfig = {
5558
}),
5659
]
5760
}
61+
62+
// This modifies the existing image rule to exclude .svg files
63+
// since you want to handle those files with @svgr/webpack
64+
const imageRule = config.module.rules.find((rule) =>
65+
rule?.["test"]?.test(".svg")
66+
)
67+
if (imageRule) {
68+
imageRule["exclude"] = /\.svg$/
69+
}
70+
71+
// Configure .svg files to be loaded with @svgr/webpack
72+
config.module.rules.push({
73+
test: /\.svg$/,
74+
use: ["@svgr/webpack"],
75+
})
76+
5877
return config
5978
},
6079
typescript: {

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1890,6 +1890,8 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
18901890
<td align="center" valign="top" width="14.28%"><a href="https://github.com/0xV4L3NT1N3"><img src="https://avatars.githubusercontent.com/u/33112835?v=4?s=100" width="100px;" alt="0xV4L3NT1N3"/><br /><sub><b>0xV4L3NT1N3</b></sub></a><br /><a href="#tool-0xV4L3NT1N3" title="Tools">🔧</a></td>
18911891
<td align="center" valign="top" width="14.28%"><a href="https://github.com/JoshDavisLight"><img src="https://avatars.githubusercontent.com/u/82784104?v=4?s=100" width="100px;" alt="Josh Davis"/><br /><sub><b>Josh Davis</b></sub></a><br /><a href="#content-JoshDavisLight" title="Content">🖋</a></td>
18921892
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tr1sm0s1n"><img src="https://avatars.githubusercontent.com/u/47410557?v=4?s=100" width="100px;" alt="Mobin Mohanan"/><br /><sub><b>Mobin Mohanan</b></sub></a><br /><a href="#content-tr1sm0s1n" title="Content">🖋</a></td>
1893+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Baystef"><img src="https://avatars.githubusercontent.com/u/36106823?v=4?s=100" width="100px;" alt="Adebayo Steve"/><br /><sub><b>Adebayo Steve</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/commits?author=Baystef" title="Code">💻</a></td>
1894+
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sanjanaynvsdl"><img src="https://avatars.githubusercontent.com/u/142678317?v=4?s=100" width="100px;" alt="Sanjana"/><br /><sub><b>Sanjana</b></sub></a><br /><a href="https://github.com/ethereum/ethereum-org-website/issues?q=author%3Asanjanaynvsdl" title="Bug reports">🐛</a></td>
18931895
</tr>
18941896
</tbody>
18951897
</table>

next.config.js

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,31 @@ module.exports = (phase, { defaultConfig }) => {
2727
test: /\.ya?ml$/,
2828
use: "yaml-loader",
2929
})
30-
config.module.rules.push({
31-
test: /\.svg$/,
32-
use: "@svgr/webpack",
33-
})
30+
31+
// SVG loader
32+
// Grab the existing rule that handles SVG imports
33+
const fileLoaderRule = config.module.rules.find((rule) =>
34+
rule.test?.test?.(".svg")
35+
)
36+
37+
config.module.rules.push(
38+
// Reapply the existing rule, but only for svg imports ending in ?url
39+
{
40+
...fileLoaderRule,
41+
test: /\.svg$/i,
42+
resourceQuery: /url/, // *.svg?url
43+
},
44+
// Convert all other *.svg imports to React components
45+
{
46+
test: /\.svg$/i,
47+
issuer: fileLoaderRule.issuer,
48+
resourceQuery: { not: [...fileLoaderRule.resourceQuery.not, /url/] }, // exclude if *.svg?url
49+
use: ["@svgr/webpack"],
50+
}
51+
)
52+
53+
// Modify the file loader rule to ignore *.svg, since we have it handled now.
54+
fileLoaderRule.exclude = /\.svg$/i
3455

3556
return config
3657
},

public/content/developers/docs/apis/json-rpc/index.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ An internal API is also used for inter-client communication within a node - that
2626

2727
## Execution client spec {#spec}
2828

29-
[Read the full JSON-RPC API spec on GitHub](https://github.com/ethereum/execution-apis).
29+
[Read the full JSON-RPC API spec on GitHub](https://github.com/ethereum/execution-apis). This API is documented on the [Execution API webpage](https://ethereum.github.io/execution-apis/api-documentation/) and includes an Inspector to try out all the available methods.
3030

3131
## Conventions {#conventions}
3232

@@ -698,7 +698,7 @@ Returns the number of transactions in a block from a block matching the given bl
698698
1. `DATA`, 32 Bytes - hash of a block
699699

700700
```js
701-
params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
701+
params: ["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"]
702702
```
703703

704704
**Returns**
@@ -709,12 +709,12 @@ params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
709709

710710
```js
711711
// Request
712-
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'
712+
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xd03ededb7415d22ae8bac30f96b2d1de83119632693b963642318d87d1bece5b"],"id":1}'
713713
// Result
714714
{
715715
"id":1,
716716
"jsonrpc": "2.0",
717-
"result": "0xb" // 11
717+
"result": "0x8b" // 139
718718
}
719719
```
720720

@@ -728,7 +728,7 @@ Returns the number of transactions in a block matching the given block number.
728728

729729
```js
730730
params: [
731-
"0xe8", // 232
731+
"0x13738ca", // 20396234
732732
]
733733
```
734734

@@ -740,12 +740,12 @@ params: [
740740

741741
```js
742742
// Request
743-
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":1}'
743+
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0x13738ca"],"id":1}'
744744
// Result
745745
{
746746
"id":1,
747747
"jsonrpc": "2.0",
748-
"result": "0xa" // 10
748+
"result": "0x8b" // 139
749749
}
750750
```
751751

@@ -758,7 +758,7 @@ Returns the number of uncles in a block from a block matching the given block ha
758758
1. `DATA`, 32 Bytes - hash of a block
759759

760760
```js
761-
params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
761+
params: ["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"]
762762
```
763763

764764
**Returns**
@@ -769,7 +769,7 @@ params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
769769

770770
```js
771771
// Request
772-
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'
772+
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2"],"id":1}'
773773
// Result
774774
{
775775
"id":1,
@@ -805,7 +805,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber",
805805
{
806806
"id":1,
807807
"jsonrpc": "2.0",
808-
"result": "0x1" // 1
808+
"result": "0x0" // 0
809809
}
810810
```
811811

@@ -820,8 +820,8 @@ Returns code at a given address.
820820

821821
```js
822822
params: [
823-
"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
824-
"0x2", // 2
823+
"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
824+
"0x5daf3b", // 6139707
825825
]
826826
```
827827

@@ -833,12 +833,12 @@ params: [
833833

834834
```js
835835
// Request
836-
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x2"],"id":1}'
836+
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "0x5daf3b"],"id":1}'
837837
// Result
838838
{
839839
"id":1,
840840
"jsonrpc": "2.0",
841-
"result": "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056"
841+
"result": "0x6060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100b9578063095ea7b31461014757806318160ddd146101a157806323b872dd146101ca5780632e1a7d4d14610243578063313ce5671461026657806370a082311461029557806395d89b41146102e2578063a9059cbb14610370578063d0e30db0146103ca578063dd62ed3e146103d4575b6100b7610440565b005b34156100c457600080fd5b6100cc6104dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561010c5780820151818401526020810190506100f1565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610187600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061057b565b604051808215151515815260200191505060405180910390f35b34156101ac57600080fd5b6101b461066d565b6040518082815260200191505060405180910390f35b34156101d557600080fd5b610229600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061068c565b604051808215151515815260200191505060405180910390f35b341561024e57600080fd5b61026460048080359060200190919050506109d9565b005b341561027157600080fd5b610279610b05565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a057600080fd5b6102cc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b18565b6040518082815260200191505060405180910390f35b34156102ed57600080fd5b6102f5610b30565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561033557808201518184015260208101905061031a565b50505050905090810190601f1680156103625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037b57600080fd5b6103b0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610bce565b604051808215151515815260200191505060405180910390f35b6103d2610440565b005b34156103df57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610be3565b6040518082815260200191505060405180910390f35b34600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c346040518082815260200191505060405180910390a2565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105735780601f1061054857610100808354040283529160200191610573565b820191906000526020600020905b81548152906001019060200180831161055657829003601f168201915b505050505081565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600081600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156106dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156107b457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156108cf5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561084457600080fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515610a2757600080fd5b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ab457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040518082815260200191505060405180910390a250565b600260009054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b505050505081565b6000610bdb33848461068c565b905092915050565b60046020528160005260406000206020528060005260406000206000915091505054815600a165627a7a72305820deb4c2ccab3c2fdca32ab3f46728389c2fe2c165d5fafa07661e4e004f6c344a0029"
842842
}
843843
```
844844

@@ -1222,7 +1222,7 @@ Returns information about a transaction by block hash and transaction index posi
12221222
12231223
```js
12241224
params: [
1225-
"0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
1225+
"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
12261226
"0x0", // 0
12271227
]
12281228
```
@@ -1234,7 +1234,7 @@ See [eth_getTransactionByHash](#eth_gettransactionbyhash)
12341234
12351235
```js
12361236
// Request
1237-
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}'
1237+
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'
12381238
```
12391239
12401240
Result see [eth_getTransactionByHash](#eth_gettransactionbyhash)
@@ -1346,7 +1346,7 @@ Returns information about a uncle of a block by hash and uncle index position.
13461346
13471347
```js
13481348
params: [
1349-
"0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",
1349+
"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
13501350
"0x0", // 0
13511351
]
13521352
```
@@ -1358,7 +1358,7 @@ See [eth_getBlockByHash](#eth_getblockbyhash)
13581358
13591359
```js
13601360
// Request
1361-
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}'
1361+
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2", "0x0"],"id":1}'
13621362
```
13631363
13641364
Result see [eth_getBlockByHash](#eth_getblockbyhash)

public/content/developers/docs/nodes-and-clients/index.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ Multiple trackers offer a real-time overview of nodes in the Ethereum network. N
4747

4848
- [Map of nodes](https://etherscan.io/nodetracker) by Etherscan
4949
- [Ethernodes](https://ethernodes.org/) by Bitfly
50-
- [Ethereum Node Crawler](https://crawler.ethereum.org/)
5150
- [Nodewatch](https://www.nodewatch.io/) by Chainsafe, crawling consensus nodes
5251

5352
## Node types {#node-types}

public/content/developers/docs/smart-contracts/formal-verification/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Different techniques are used for modeling smart contracts for formal verificati
2626

2727
High-level models focus on the relationship between smart contracts and external agents, such as externally owned accounts (EOAs), contract accounts, and the blockchain environment. Such models are useful for defining properties that specify how a contract should behave in response to certain user interactions.
2828

29-
Conversely, other formal models focus on the low-level behavior of a smart contract. While high-level models can help with reasoning about a contract's functionality, they may fail capture details about the internal workings of the implementation. Low-level models apply a white-box view to program analysis and rely on lower-level representations of smart contract applications, such as program traces and [control flow graphs](https://en.wikipedia.org/wiki/Control-flow_graph), to reason about properties relevant to a contract's execution.
29+
Conversely, other formal models focus on the low-level behavior of a smart contract. While high-level models can help with reasoning about a contract's functionality, they may fail to capture details about the internal workings of the implementation. Low-level models apply a white-box view to program analysis and rely on lower-level representations of smart contract applications, such as program traces and [control flow graphs](https://en.wikipedia.org/wiki/Control-flow_graph), to reason about properties relevant to a contract's execution.
3030

3131
Low-level models are considered ideal since they represent the actual execution of a smart contract in Ethereum's execution environment (i.e., the [EVM](/developers/docs/evm/)). Low-level modeling techniques are especially useful in establishing critical safety properties in smart contracts and detecting potential vulnerabilities.
3232

@@ -78,7 +78,7 @@ Hoare-style specifications can guarantee either _partial correctness_ or _total
7878

7979
Obtaining proof of total correctness is difficult since some executions may delay before terminating, or never terminate at all. That said, the question of whether execution terminates is arguably a moot point since Ethereum's gas mechanism prevents infinite program loops (execution terminates either successfully or ends due to 'out-of-gas' error).
8080

81-
Smart contract specifications created using Hoare logic will have preconditions, postconditions, and invariants defined for the execution of functions and loops in a contract. Preconditions often include the possibility of erroneous inputs to a function, with postconditions describing the expected response to such inputs (e.g., throwing a specific exception). In this manner Hoare-style properties are effective for assuring correctness of contract implementtions.
81+
Smart contract specifications created using Hoare logic will have preconditions, postconditions, and invariants defined for the execution of functions and loops in a contract. Preconditions often include the possibility of erroneous inputs to a function, with postconditions describing the expected response to such inputs (e.g., throwing a specific exception). In this manner Hoare-style properties are effective for assuring correctness of contract implementations.
8282

8383
Many formal verification frameworks use Hoare-style specifications for proving semantic correctness of functions. It is also possible to add Hoare-style properties (as assertions) directly to contract code by using the `require` and `assert` statements in Solidity.
8484

0 commit comments

Comments
 (0)