前回は、送金手数料が安いタイミングでDiscordに通知するBotを作りましたが
思った以上に好評で結構驚きました。
日を追うごとに参加者が増え、現在では1514名もの方に参加いただいております。
チャットもにぎやかなので楽しいのでNiceHashに限らずマイニングに興味のある方は参加してみてはいかがでしょうか。
NiceHashには手数料を確認するAPIだけではなく、送金用のAPIも存在します。
手数料が安いタイミングがわかるのであればその時間に自動で送金してしまえばさらに手間が省けますね。
ということで作ってみました。
AWS Lambda で動かすことを想定しています。おそらく無料の範囲内で運用できると思います。
それでは使い方を説明いたします。
以下の8ステップで設定を行っていきます。
- Jarファイルのダウンロード
- NiceHashでAPIキーを作成する
- Discord Web Hook URLの作成
- AWSアカウントの作成
- Lambdaファンクションの作成
- コードのアップロード
- 実行間隔の設定
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も後程使うのでメモしておきましょう。
3.Discord Webhook URLの作成
送金等の処理結果をDiscordに通知するため、WebhookのURLを取得します。
こちらの記事を参考にしてみてください。
[Ruby]DiscordにWebhookでメッセージを投稿する - Qiita
URL取得後の作業は今回は不要です。
4.AWSアカウントの作成
公式サイトのガイドに従いアカウントを作成しましょう。
5.Lambdaファンクションの作成
AWS Lambdaのページから関数の作成を行います。
関数名はお好きな名前をつけてください。
ランタイムは「Java11 (Corretto)」を選択してください。
その他は弄らなくてOKです。
作成できましたら、ランタイム設定のハンドラに
「net.mikitaro.nicehash.AutoWithdrawApplication::handleRequest」を設定してください。
次に設定から環境変数を選び必要な情報を入力していきます。
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です。 |
6. コードのアップロード
手順1でダウンロードしておいたJarファイルをAWSにアップロードします。
7. 実行間隔の設定
スクリプトの実行間隔を設定します。
トリガーを追加をクリックしてトリガーの設定画面へ進みます。
EventBridge (CloudWatch Events)を選びます。
新規ルールの作成で、スケジュール式に「rate(15 minutes)」を指定します。
これは15分間隔で動くという意味です。
お疲れさまでした!これで設定は完了です。
試しにテストしてみましょう。
テストに適当な名前を付けてオレンジのテストボタンを押します。
※ 名前以外は弄らなくてOKです。
うまくいくとこのような表示になり、Discordに通知が飛んでくると思います。
実行には1分くらいかかるかもしれません。
正常に動いていると以下のような通知を行います。
no withdraw fee → 送金手数料が高い
no withdraw balance → ウォレット残高が不足(0.001BTC以下)
success!! → 送金完了
※ 2021/04/21誤字がありました。指摘してくださったむちゅまるさんありがとうございます。