NiceHashのBTC送金手数料が安い時に自動で送金するBotを作ってみた

前回は、送金手数料が安いタイミングでDiscordに通知するBotを作りましたが
思った以上に好評で結構驚きました。

日を追うごとに参加者が増え、現在では1514名もの方に参加いただいております。
チャットもにぎやかなので楽しいのでNiceHashに限らずマイニングに興味のある方は参加してみてはいかがでしょうか。

 

discord.gg

 

NiceHashには手数料を確認するAPIだけではなく、送金用のAPIも存在します。
手数料が安いタイミングがわかるのであればその時間に自動で送金してしまえばさらに手間が省けますね。

ということで作ってみました。

github.com

 

AWS Lambda で動かすことを想定しています。おそらく無料の範囲内で運用できると思います。

それでは使い方を説明いたします。

以下の8ステップで設定を行っていきます。

  1. Jarファイルのダウンロード
  2. NiceHashでAPIキーを作成する
  3. Discord Web Hook URLの作成
  4. AWSアカウントの作成
  5. Lambdaファンクションの作成
  6. コードのアップロード
  7. 実行間隔の設定

1. Jarファイルのダウンロード

Releases · m1kitaro/NiceHash-Auto-Withdraw · GitHub

GitHubからJarファイルをダウンロードします。
適当なところに保存しましょう。

2.NiceHashでAPIキーを作成する

必要な権限は
Wallet Permissions

  • View balances, wallet activities and deposit addresses
  • Withdraw funds

の2つです。

作成したらAPI Key CodeとAPI Secret Key Codeを控えておきましょう。
なお、API Secret Key Codeは作成時の1度しか確認できないため分からなくなったら作り直しましょう。

さらにAPI Keysにある OrganizationIDも後程使うのでメモしておきましょう。

f:id:becky3:20210418212101p:plain

3.Discord Webhook URLの作成

送金等の処理結果をDiscordに通知するため、WebhookのURLを取得します。

こちらの記事を参考にしてみてください。

[Ruby]DiscordにWebhookでメッセージを投稿する - Qiita

URL取得後の作業は今回は不要です。

 

4.AWSアカウントの作成

公式サイトのガイドに従いアカウントを作成しましょう。

AWS アカウント作成の流れ | AWS

 

5.Lambdaファンクションの作成

AWS Lambdaのページから関数の作成を行います。

f:id:becky3:20210418223310p:plain

関数名はお好きな名前をつけてください。

ランタイムは「Java11 (Corretto)」を選択してください。

その他は弄らなくてOKです。

 

作成できましたら、ランタイム設定のハンドラに

「net.mikitaro.nicehash.AutoWithdrawApplication::handleRequest」を設定してください。

f:id:becky3:20210418223645p:plain

次に設定から環境変数を選び必要な情報を入力していきます。

API_KEY 手順2で作成した「API Key Code」
API_SECRET 手順2で作成した「API Secret Key Code」
ORG_ID 手順2でメモした「Organization ID」
WEBHOOK_URL 手順3で作成したURL
WITHDRAW_ADDRESS_ID

ウォレットのIDです

※ ウォレットアドレスとは違います

WITHDRAW_AMOUNT

送金額です。

0を指定すると全額送金します。

WITHDRAW_THRESHOLD

送金判定をする閾値です。

最低送金量である0.001以上を指定してください。

※ 基本的には0.001をすればOKです。

 

f:id:becky3:20210425171237p:plain

6. コードのアップロード

手順1でダウンロードしておいたJarファイルをAWSにアップロードします。

f:id:becky3:20210418224130p:plain

7. 実行間隔の設定

スクリプトの実行間隔を設定します。

f:id:becky3:20210418224239p:plain

トリガーを追加をクリックしてトリガーの設定画面へ進みます。

EventBridge (CloudWatch Events)を選びます。

f:id:becky3:20210418224437p:plain

新規ルールの作成で、スケジュール式に「rate(15 minutes)」を指定します。

これは15分間隔で動くという意味です。

 

お疲れさまでした!これで設定は完了です。

試しにテストしてみましょう。

 

f:id:becky3:20210418224704p:plain

テストに適当な名前を付けてオレンジのテストボタンを押します。

※ 名前以外は弄らなくてOKです。

 

うまくいくとこのような表示になり、Discordに通知が飛んでくると思います。

実行には1分くらいかかるかもしれません。

f:id:becky3:20210418224914p:plain

正常に動いていると以下のような通知を行います。

f:id:becky3:20210419204534p:plain

no withdraw fee → 送金手数料が高い

no withdraw balance → ウォレット残高が不足(0.001BTC以下)

success!! → 送金完了

 

※ 2021/04/21誤字がありました。指摘してくださったむちゅまるさんありがとうございます。

f:id:becky3:20210421143758p:plain

 

オススメBTO PC はこちら!