axs-auto-restake
Mình đang stake AXS trên https://stake.axieinfinity.com/ nhưng vì lười nên mình quyết định thử viết script để auto restake.
Sau khi code thử và chạy thì mình biết được https://api.roninchain.com/rpc chỉ là RPC readonly của Roninchain.
Vì bản tính tò mò và ham học hỏi nên mình quyết định download source code của Ronin Wallet trên Chrome Store bằng extension này nhưng source code đã được obfuscated nên mình lại thử dùng Burp Suite để track xem wallet gọi đi đâu.
Cuối cùng mình đã tìm được RPC chính hiệu là https://proxy.roninchain.com/free-gas-rpc
Nhờ sự giúp sức tận tình của lugondev đã dựng testnet trên bsc để test code.
Vì còn một số chỗ nữa thì mới chạy ngon được nên các việc cần làm tiếp theo ở bên dưới.
Update 6 Nov 2021
Vì cần phải tìm thời gian thích hợp để chạy restake nên mình cần biết cách tính time remain trên Web UI. Phần này mình xem trong code js thì ở đây trùng với request này
Cách lấy ABI từ manifest
Mình search MethodID là restakeRewards
ra đoạn code này, mình đoán là ABI
Tiến hành copy nguyên array của t.default
trong function 28711
và 36572
để ghép thành 1 array hoàn chỉnh.
Dùng VSCode để mông má lại:
- replace
!1
= false
- replace
!0
= true
- vì json lấy về phần
key
không nằm trong double quote nên chưa đúng định dạng cần replace lại như sau:
\s.+?([a-zA-z].*):
thành "$1":
Sau khi có file abi mình sẽ tiến hành convert sang go module bằng abigen (cách cài đặt ở đây)
abigen --abi=erc20.abi --pkg=token --out=erc20.go
Cuối cùng import file module token
vào code và gọi lên contract.
TODO
- Check thời gian thích hợp để restake?
- Cào abi từ manifest
- Tự động restake
- Check restake đã success chưa?
- Scripts / docs deploy to GCP Cloud Functions
- Thêm option dùng private key thay vì mnemonic
Deploy to GCP Cloud Functions
- Tạo Cloud Functions https://console.cloud.google.com/functions/list
- Tạo lịch chạy bằng Cloud Scheduler https://console.cloud.google.com/cloudscheduler
- Deploy source code
gcloud auth login # auth to GCP
go mod vendor
export PROJECT=
export FUNC_NAME=axs-auto-stake-1
gcloud functions deploy $FUNC_NAME --runtime go113 --entry-point Restake --project $PROJECT
RUN LOCAL
# cp .env.example .env
# thêm dòng
# MNEMONIC=là 12 chữ cái private lúc tạo ví Ronin
go mod tidy
go build cmd/main.go && chmod +x main
./main