Skip to content

jojoee/raritygems

Repository files navigation

raritygems

CI and CD PyPI version fury.io codecov

Provably Rare Gem Raritygems API, currently focused on mining.

Run on Google Colab

# 1. Install packages
# !pip install --force-reinstall jsonschema==3.2.0
!python --version
!python -m pip --version
!pip install web3==5.23.0
!pip install raritygems==0.5.0

# 2. Download "raritygems_salt_finder" and give permission to execute
!wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=10K-ZTxj14_BrY_ZxupvOkGXYl2Eo9mEq' -O raritygems_salt_finder
!chmod 755 raritygems_salt_finder
# 3. Run with Python
from raritygems import raritygems

david = raritygems.Miner(
    user_address="0xxxxx",
    gem_kind=0,  # 0 = Turquoise, 1 = Pearl, ...
    salt_finder_path="/content/raritygems_salt_finder",
    private_key="",  # if "" is provided then it will only find a salt then exit
    line_token="",  # if "" is provided then it will not notify you via LINE
)
david.mine()

note

How it works?

It basically finds a "salt" and sign a transaction for you. The program will do the following

  1. Get the information that needed for mining: user_nonce and gem_difficulty
  2. Use raritygems_salt_finder to find a salt
  3. Sign a transaction to claim a gem
  4. Go back to step 1.

raritygems_salt_finder

At first, I start with Python and try to optimize it but I realize Go is must faster. So, I write this "raritygems_salt_finder" part with Go language instead, and this is command I used to built it.

# to build "raritygems_salt_finder"
go build -o raritygems_salt_finder main.go
go build -o raritygems_salt_finder-0.5.0 main.go

# to build "raritygems_salt_finder" for Google Colab
GOOS=linux GOARCH=amd64 go build -o raritygems_salt_finder_linux main.go
GOOS=linux GOARCH=amd64 go build -o raritygems_salt_finder_linux-0.5.0 main.go

Feature

  • mining: auto update gem_difficulty
  • lint: setup linting: flask8
  • ci-cd: pypi: publish to pypi
  • ci-cd: CI & CD with GitHub Actions
  • ci-cd: integrate semantic release
  • test: writing automated test
  • perf: performance evaluation
  • info: display your current balance
  • info: display your gems
  • info: estimate how many times you can mine (before your have no gas left)
  • gas: optimize gas price
  • parallel: make it support parallel / multi-threading
  • gpu: create GPU support version
  • noti: refactor notification message
  • noti: add more channels e.g. Facebook Messenger, email
  • web3: auto claim gems
  • network: support Ethereum chain
  • network: support Fantom network
  • info: bot nickname
  • salt_finder: auto load by default when it is not provided

Project setup & CMD

TODO

conda create --name raritygems python=3.7.11
conda activate raritygems
pip uninstall raritygems -y && pip install .
go run main.go \
    -user-nonce=1234 \
    -user-address=0x28bc92e7b7e77d348fd262fb8e29da129308fbd3 \
    -chain-id=250 \
    -gem-difficulty=535996 \
    -gem-address=0x342EbF0A5ceC4404CcFF73a40f9c30288Fc72611 \
    -gem-entropy=0x000080440000047163a56455ac4bc6b1f1b88efadf17db76e5c52c0ca594fd9b \
    -gem-kind=0 \
    -salt=41543544848 \
    -n=800000 \
    -debug=true

Other projects

Ref