This guide helps you quickly get started with GoE, a decentralized Git system on Ethereum and EthStorage.
It covers wallet setup, repository creation, interacting with a sample repo, and migrating an existing GitHub project to GoE.
GoE enables fully on-chain Git workflows: repositories are stored on Ethereum and EthStorage, immutable, and censorship-resistant.
Prerequisite: You need a wallet with some ETH to pay gas fees for repository operations.
npm install -g goe-cli- Create a wallet
goe wallet create➡️ Transfer some ETH to this wallet so you can perform on-chain operations.
- List wallets
goe wallet list🔑 Tip: After you finish using the wallet, lock it for security using 'goe wallet lock'.
goe repo create <repo_name> --chain-id <chain_id>
# Example:
goe repo create test-repo --chain-id 11155111
# Output:
# Repo address: 0x3BB6F5b45649E9793Ecad8C909502566398CDb4C- List your repositories:
goe repo list --chain-id <chain_id>
# Example:
goe repo list --chain-id 11155111- List repository branches:
goe repo branches <repo_address> --chain-id <chain_id>
# Example:
goe repo branches 0x3BB6F5b45649E9793Ecad8C909502566398CDb4C --chain-id 11155111- For a new local repo:
git init
git remote add origin goe://<repo_address>:<chain_id>
# Example:
git remote add origin goe://0x3BB6F5b45649E9793Ecad8C909502566398CDb4C:11155111- For an existing repository:
git remote set-url origin goe://<repo_address>:<chain_id>
# Example:
git remote set-url origin goe://0x3BB6F5b45649E9793Ecad8C909502566398CDb4C:11155111- Standard Git operations:
git add .
git commit -m "Initial commit"
git push -u origin mainExample: Vitalik’s Blog Repository
- Clone the repository:
git clone goe://0x56f87B828CCe0943e00CCf763e63688Aba4ae834:11155111 blogBy default, your wallet address does not have push access to this repository.
- Once granted, you can commit and push as usual:
git add file.txt
git commit -m "Add new file"
git push
⚠️ Performance Notes (for reference only):
- Repository size: 145.7 MB
- Upload time via GoE: 3h 25m
- Download time via Git Helper (12 packfiles): 7.86 min
- Download time via regular Git HTTP clone: 4 min
- Cost to upload on Sepolia testnet: < 0.7 ETH (approximate)
- Bottleneck: Upload speed is dominated by blockchain transaction throughput and confirmation times, unlike centralized Git hosting.
goe repo create my-project --chain-id 11155111Copy the output contract address, for example:
0xABCDEF...1234cd my-github-projectgit remote set-url origin goe://0xABCDEF...1234:11155111git push -u origin mainFrom this point forward, your project is fully decentralized on Ethereum via GoE.