ethereum-org-website
Ethereum.org is a primary online resource for the Ethereum community.
Top Related Projects
Solidity, the Smart Contract Programming Language
A guide to available tools and platforms for developing on Ethereum.
:warning: The Truffle Suite is being sunset. For information on ongoing support, migration options and FAQs, visit the Consensys blog. Thank you for all the support over the years.
Complete Ethereum library and wallet implementation in JavaScript.
Collection of comprehensive TypeScript libraries for Interaction with the Ethereum JSON RPC API and utility functions.
OpenZeppelin Contracts is a library for secure smart contract development.
Quick Overview
The ethereum/ethereum-org-website repository contains the source code for ethereum.org, the official website of the Ethereum blockchain platform. It serves as a comprehensive resource for information about Ethereum, including documentation, guides, and community resources. The website is built using Gatsby, a React-based static site generator.
Pros
- Open-source and community-driven, allowing for contributions and improvements from the Ethereum ecosystem
- Multilingual support, making Ethereum information accessible to a global audience
- Regularly updated with the latest Ethereum developments and best practices
- Well-organized structure, making it easy for users to find relevant information
Cons
- Large codebase and complex structure may be intimidating for new contributors
- Frequent updates and changes can make it challenging to keep all language translations in sync
- Some advanced Ethereum concepts may still be difficult for beginners to grasp
- Limited customization options for users who want to deploy their own version of the site
Getting Started
To set up the ethereum.org website locally for development:
-
Clone the repository:
git clone https://github.com/ethereum/ethereum-org-website.git
-
Install dependencies:
cd ethereum-org-website npm install
-
Start the development server:
npm start
-
Open your browser and visit
http://localhost:8000
to view the website.
For more detailed instructions and contribution guidelines, refer to the repository's README and CONTRIBUTING files.
Competitor Comparisons
Solidity, the Smart Contract Programming Language
Pros of solidity
- Focused on Solidity language development, providing direct impact on Ethereum smart contract creation
- More active development with frequent updates and improvements to the language
- Larger community of contributors specifically interested in Solidity development
Cons of solidity
- Narrower scope, focusing only on the Solidity language rather than broader Ethereum ecosystem
- Less beginner-friendly, as it's primarily for developers working directly with Solidity
- May require more technical knowledge to contribute effectively
Code Comparison
solidity:
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 private storedData;
function set(uint256 x) public {
storedData = x;
}
}
ethereum-org-website:
import React from 'react'
import { useTranslation } from 'gatsby-plugin-react-i18next'
const HomePage = () => {
const { t } = useTranslation()
return <h1>{t('page-home-title')}</h1>
}
The solidity repository contains Solidity language source code and examples, while the ethereum-org-website repository focuses on React components and website content for Ethereum's official documentation site.
A guide to available tools and platforms for developing on Ethereum.
Pros of ethereum-developer-tools-list
- Comprehensive list of Ethereum development tools and resources
- Community-driven with frequent updates and contributions
- Organized into clear categories for easy navigation
Cons of ethereum-developer-tools-list
- Less structured and polished presentation compared to ethereum-org-website
- Limited explanations and context for each tool
- May be overwhelming for beginners due to the sheer number of tools listed
Code comparison
ethereum-developer-tools-list:
## Developer Tools
### Frameworks
* [Truffle](https://trufflesuite.com) - Most popular smart contract development, testing, and deployment framework
* [Embark](https://github.com/embark-framework/embark) - Framework for DApp development
ethereum-org-website:
const DeveloperDocsLink = props => (
<Link to="/developers/docs/" {...props}>
<Translation id="page-developers-index-docs-link" />
</Link>
)
const DeveloperGuidesLink = props => (
<Link to="/developers/tutorials/" {...props}>
<Translation id="page-developers-index-tutorials-link" />
</Link>
)
The ethereum-developer-tools-list repository focuses on providing a curated list of tools in a simple markdown format, while the ethereum-org-website repository contains more complex React components for building a comprehensive website with interactive elements and translations.
:warning: The Truffle Suite is being sunset. For information on ongoing support, migration options and FAQs, visit the Consensys blog. Thank you for all the support over the years.
Pros of Truffle
- Comprehensive development environment with built-in testing framework and asset pipeline
- Extensive documentation and active community support
- Simplified contract deployment and migration management
Cons of Truffle
- Steeper learning curve for beginners compared to the Ethereum website
- More focused on development tools rather than general Ethereum education
- May require additional setup and configuration for complex projects
Code Comparison
Truffle (contract deployment):
const MyContract = artifacts.require("MyContract");
module.exports = function(deployer) {
deployer.deploy(MyContract);
};
Ethereum-org-website (React component):
import React from 'react'
import { useTranslation } from 'gatsby-plugin-react-i18next'
const MyComponent = () => {
const { t } = useTranslation()
return <h1>{t('title')}</h1>
}
Summary
Truffle is a development framework for Ethereum, offering a suite of tools for smart contract creation, testing, and deployment. The Ethereum-org-website, on the other hand, serves as an educational resource and information hub for the Ethereum ecosystem. While Truffle excels in providing a robust development environment, the Ethereum website offers a more accessible entry point for newcomers to learn about Ethereum and its concepts.
Complete Ethereum library and wallet implementation in JavaScript.
Pros of ethers.js
- Focused library for Ethereum interactions, providing a more streamlined API
- Extensive documentation and examples for developers
- Lightweight and modular design, allowing for selective imports
Cons of ethers.js
- Narrower scope compared to ethereum-org-website's comprehensive resources
- Less community-driven content and educational materials
- Primarily code-focused, lacking broader Ethereum ecosystem information
Code Comparison
ethereum-org-website (React component):
const EthPriceOracle = () => {
const [ethPrice, setEthPrice] = useState(null)
useEffect(() => {
// Fetch ETH price from API
}, [])
return <div>{ethPrice ? `$${ethPrice}` : 'Loading...'}</div>
}
ethers.js (JavaScript):
const provider = new ethers.providers.JsonRpcProvider()
const balance = await provider.getBalance("0x...")
console.log(ethers.utils.formatEther(balance))
Summary
ethers.js is a specialized library for Ethereum development, offering a focused API and extensive documentation. It's ideal for developers working directly with Ethereum interactions. ethereum-org-website, on the other hand, serves as a comprehensive resource for the entire Ethereum ecosystem, providing educational content and community-driven information beyond just code examples.
Collection of comprehensive TypeScript libraries for Interaction with the Ethereum JSON RPC API and utility functions.
Pros of web3.js
- Focused JavaScript library for Ethereum interaction
- Extensive API for blockchain operations
- Widely adopted in dApp development
Cons of web3.js
- Steeper learning curve for beginners
- Limited to Ethereum-specific functionality
- Requires more setup for basic usage
Code Comparison
ethereum-org-website (React component):
function EthPriceCard() {
const [ethPriceUSD, setEthPriceUSD] = useState(null)
useEffect(() => {
// Fetch ETH price and update state
}, [])
return <div>{ethPriceUSD ? `$${ethPriceUSD}` : 'Loading...'}</div>
}
web3.js (Ethereum interaction):
const Web3 = require('web3')
const web3 = new Web3('https://mainnet.infura.io/v3/YOUR-PROJECT-ID')
web3.eth.getBalance('0x1234567890123456789012345678901234567890')
.then(balance => console.log(web3.utils.fromWei(balance, 'ether')))
.catch(error => console.error(error))
The ethereum-org-website repository focuses on educational content and documentation for Ethereum, while web3.js provides a powerful toolkit for interacting with the Ethereum blockchain. The former is more accessible for newcomers, offering a comprehensive introduction to Ethereum concepts. In contrast, web3.js is a specialized library that requires more technical knowledge but offers greater flexibility for developers building Ethereum-based applications.
OpenZeppelin Contracts is a library for secure smart contract development.
Pros of openzeppelin-contracts
- Focused on smart contract security and best practices
- Extensive library of reusable, audited contract components
- Regular updates and active maintenance
Cons of openzeppelin-contracts
- Narrower scope, primarily for developers building smart contracts
- Less comprehensive documentation for Ethereum ecosystem as a whole
Code Comparison
ethereum-org-website (React component):
const EthExchanges = () => (
<CardList content={exchanges} className="mt-10" />
)
openzeppelin-contracts (Solidity contract):
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
Summary
ethereum-org-website serves as the official Ethereum documentation and educational resource, covering a wide range of topics for various user types. openzeppelin-contracts, on the other hand, focuses on providing secure, standardized smart contract implementations for developers. While ethereum-org-website offers broader Ethereum knowledge, openzeppelin-contracts excels in offering battle-tested contract libraries for building secure decentralized applications.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
This is the repo for the ethereum.org website, a resource for the Ethereum community. The site's purpose is to âBe the best portal to Ethereum for our growing global community" - read more about what this means here.
ethereum.org is being improved and changed over time through the contributions of community members who submit content, give feedback, or volunteer their time to manage its evolution. If youâre interested in helping to improve ethereum.org, find out how to contribute.
Looking for the Ethereum blockchain's code?
If you're looking for the Ethereum blockchain itself, there is no single repo. Instead, Ethereum has multiple implementations of the protocol written in different programming languages for security and diversity. Check out the different implementations
Table of contents
- How to contribute
- Translation Program
- The ethereum.org website stack
- Website conventions / best practices
How to contribute
This project follows the all-contributors specification. Contributions of any kind are welcome!
1. Submit an issue
- Create a new issue.
- Comment on the issue (if you'd like to be assigned to it) - that way our team can assign the issue to you.
More information on the issue creation process, and expectations around creating issues can be found here.
2. Fork the repository (repo)
- If you're not sure, here's how to fork the repo.
3. Set up your local environment (optional)
If you're ready to contribute and create your PR, it will help to set up a local environment so you can see your changes.
- Clone your fork
If this is your first time forking our repo, this is all you need to do for this step:
git clone git@github.com:[your_github_handle]/ethereum-org-website.git && cd ethereum-org-website
If you've already forked the repo, you'll want to ensure your fork is configured and that it's up to date. This will save you the headache of potential merge conflicts.
git remote add upstream https://github.com/ethereum/ethereum-org-website.git
To sync your fork with the latest changes:
git checkout dev
git fetch upstream
git merge upstream/dev
- Install dependencies
We recommend using a node manager to use multiple node versions in your system. We use Volta. In case you don't use a manager or you use nvm
, you can check the currently supported versions under the "volta"
section on our package.json
file.
yarn
4. Make awesome changes!
- Create new branch for your changes
git checkout -b new_branch_name
- Start developing!
yarn dev
- Open this directory in your favorite text editor / IDE, and see your changes live by visiting
localhost:3000
from your browser - Pro Tip:
- Explore scripts within
package.json
for more build options - Get faster production builds by building only one language. E.g. in your
.env
file, setNEXT_PUBLIC_BUILD_LOCALES=en
to build the content only in English - To build the site in other selected languages too, you need to set them in
NEXT_PUBLIC_BUILD_LOCALES
, eg:NEXT_PUBLIC_BUILD_LOCALES=en,es
if you also want to build only English (required) and Spanish. - To build all languages, simply comment this line out with a hash mark, eg:
# NEXT_PUBLIC_BUILD_LOCALES=
- Explore scripts within
By default the script will build all the languages (complete list in i18n.config.json
).
- Commit and prepare for pull request (PR). In your PR commit message, reference the issue it resolves (see how to link a commit message to an issue using a keyword).
git commit -m "brief description of changes [Fixes #1234]"
- Push to your GitHub account
git push
5. Submit your PR
- After your changes are committed to your GitHub fork, submit a pull request (PR) to the
dev
branch of theethereum/ethereum-org-website
repo - In your PR description, reference the issue it resolves (see linking a pull request to an issue using a keyword)
- ex.
Updates out of date content [Fixes #1234]
- ex.
- Netlify (our hosting service for build previews) deploys all PRs to a publicly accessible preview URL, e.g.:
- Confirm that your Netlify preview deploy looks and functions as expected
- Why not say hi and draw attention to your PR in our discord server?
6. Wait for review
- The website team reviews every PR
- See how decisions are made on content changes
- Acceptable PRs will be approved & merged into the
dev
branch
Learn more about how we review pull requests here.
7. Release
master
is continually synced to Netlify and will automatically deploy new commits to ethereum.org- Learn more about how we deploy the site here
- You can view the history of releases, which include PR highlights
Claim your POAP and OATs!
What is a POAP?
The Proof of Attendance Protocol is a dapp that distributes badges in the form of ERC-721 tokens to prove you participated in an event. More on POAPs.
GitPOAP
- If you've made at least one contribution and that gets merged into ethereum.org, GitPOAP will also auto recognize it and let you mint a unique contributor POAP for the specific year. More on GitPOAP.
What is an OAT?
An Onchain Achievement Token (OAT) is a special badge on Galxe. It's a proof of your contribution to the ecosystem. More on OATs.
ethereum.org 2024 Contributor OATs
-
If you have committed any changes in 2024 so far that were merged into our repo or if you have translated a certain amount of words, you can claim your OATs!
-
There are OATs for GitHub, content, design and translation contributions.
-
ð To claim your Contributor OATs, join our Discord server, create a post and paste links to your contributions in the
#ð¥ | proof-of-contribution
channel -
Wait for a member of our team to assign you a role on Discord and send you links to your OATs.
-
To help with verification we request GitHub contributors connect their GitHub account with their Discord account (Discord > Settings > Connections > GitHub). Crowdin contributors will be verified directly through Crowdin by our team.
If you haven't contributed yet and would like to earn a POAP/OATs to show your loyalty to the Ethereum space, head over to the issues tab to get started! If you would like to contribute to translations check out our Translation Program.
Contributors
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Join our Discord server
We have a space to discuss all things ethereum.org â share your ideas or just say hi over on Discord.
Top Related Projects
Solidity, the Smart Contract Programming Language
A guide to available tools and platforms for developing on Ethereum.
:warning: The Truffle Suite is being sunset. For information on ongoing support, migration options and FAQs, visit the Consensys blog. Thank you for all the support over the years.
Complete Ethereum library and wallet implementation in JavaScript.
Collection of comprehensive TypeScript libraries for Interaction with the Ethereum JSON RPC API and utility functions.
OpenZeppelin Contracts is a library for secure smart contract development.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot