Go to file
Jaremy Creechley f95cec0ef5
Update USINGCODEX.md
re-re-add simple quoted expiry_time
2024-04-07 15:11:55 +03:00
docs Nicer overview image 2024-03-29 14:40:07 +01:00
.gitignore Feat/add geth init (#1) 2023-12-11 19:01:25 +02:00
README.md chore: add background flag for docker-compose (#14) 2024-04-05 16:03:25 +03:00
USINGCODEX.md Update USINGCODEX.md 2024-04-07 15:11:55 +03:00
codex.sh Add a script for run with a binary (#13) 2024-04-03 22:21:00 +03:00
docker-compose.yaml updated Codex image 2024-04-03 08:56:03 +02:00
genesis.json Update genesis.json with same as in the cluster (#6) 2024-03-29 13:28:46 +02:00

README.md

Codex Testnet Starter

Hit the ground running with Codex.

  1. Overview
  2. How to start
  3. How to get ready
  4. How to use
  5. How to stop
  6. How to stop and delete everything
  7. Troubleshooting

Overview

Overview Using the Testnet Starter, you can run a (mostly preconfigured) Codex node on your machine. You always have the option to build and run Codex from sources Here.

How to start

  1. Have Docker with compose installed

  2. Clone this repo

    git clone https://github.com/codex-storage/codex-testnet-starter && cd codex-testnet-starter
    
  3. Create an Ethereum public/private key pair using web wallet or consider other local methods

    Use Docker
    # Generate keypair
    docker run --rm gochain/web3 account create
    
    Use MetaMask
    1. Accounts and Addresses
    2. How to export an account's private key
    Use Python code
    1. Create a venv

      pip3 install virtualenv
      
      venv=codex-eth-key
      mkdir $venv && cd $venv
      
      python3 -m venv env
      source env/bin/activate
      
    2. Install required packages

      pip3 install web3
      
    3. Create a script

      vi eth-keys.py
      
       from eth_account import Account
      
       def generate_ethereum_keypair():
           # Generate a new Ethereum account
           account = Account.create()
      
           # Get the private key
           private_key = account._private_key.hex()
      
           # Get the public key (Ethereum address)
           public_key = account.address
      
           return private_key, public_key
      
       # Generate the Ethereum key pair
       private_key, public_key = generate_ethereum_keypair()
      
       # Print the keys
       print("Private Key:", private_key)
       print("Public Key (Ethereum Address):", public_key)
      
    4. Generate the keys

      python3 eth-keys.py
      
    5. Cleanup

      deactivate
      cd .. && rm -rf $venv
      
    # Example
    Private key: 0xacec4df7549199708a9f66b151aea7bf41b4d30bd325b96b26f017246226e1a3
    Public address: 0x1C408C8572ce7d5E79a3a6D353e5FC2E8E2c49ce
    
  4. Define variables

    export PRIV_KEY=0xacec4df7549199708a9f66b151aea7bf41b4d30bd325b96b26f017246226e1a3
    export CODEX_LISTEN_ADDRS=/ip4/0.0.0.0/tcp/8070
    export CODEX_DISC_PORT=8090
    
    # export CODEX_ETH_PROVIDER=https://rpc.testnet.codex.storage
    # export CODEX_LOG_LEVEL=TRACE
    #
    # export GETH_DISCOVERY_PORT=8547
    # export GETH_PORT=8548
    # export GETH_NAT=extip:1.1.1.1
    # export GETH_VERBOSITY=3
    
  5. Run local nodes

    docker-compose up -d
    
  6. Setup port forwarding on your router for Codex, based on defined values

    TCP - CODEX_LISTEN_ADDRS=/ip4/0.0.0.0/tcp/8070
    UDP - CODEX_DISC_PORT=8090
    

How to get ready

When starting the Testnet Starter for the first time, (or restarting after a long pause) please keep in mind:

  • Your local Geth node will need time to sync.
  • Geth checker will wait until Geth is in sync and only then Codex will start.

Before you can use the marketplace functionality of Codex, you will need to obtain some tokens in the testnet.

  1. Join the Codex Discord server

  2. Find the appropriate testnet channel.

  3. Give your public key to the bot using set command.

    example

    Bot-Set

  4. Ask it politely to mint some tokens for you using mint command.

    example

    Bot-Mint

(It may or may not happen in the future that testnet participation will be rewarded automatically with Discord server roles.)

How to use

Once running, Codex exposes a web-api at the API port. (default: 8080) To read more about how to use the API, go Here

How to stop

  • docker-compose down

How to stop and delete everything

  • docker-compose down --rmi all -v

Troubleshooting

Geth

# List peers
docker exec -it geth geth attach --exec net.peerCount /data/geth.ipc

# Connected peers
docker exec -it geth geth attach --exec admin.peers /data/geth.ipc

# Add a peer
docker exec -it geth geth attach --exec 'admin.addPeer("enode://cff0c44c62ecd6e00d72131f336bb4e4968f2c1c1abeca7d4be2d35f818608b6d8688b6b65a18f1d57796eaca32fd9d08f15908a88afe18c1748997235ea6fe7@159.223.243.50:40010")' /data/geth.ipc

# Sync status
docker exec -it geth geth attach --exec eth.syncing /data/geth.ipc

# Geth own enode
docker exec -it geth geth attach --exec admin.nodeInfo.enode /data/geth.ipc