ポートフォリオサイト公開中

【仮想通貨自動売買】GoogleAppsScriptで電子署名が書きたい【HMAC-SHA256】

やりたいこと

GoogleAppsScript(GAS)においてHMAC-SHA256形式でキーを使って署名をしたい

要するに、Node.js v10.15.3における

var sign = crypto.createHmac('sha256', secretKey).update(text).digest('hex');

この行に相当するものをGASでも実装したい

背景

GMOコインのAPIを使って、仮想通貨の自動売買ボットを作成するため。

今回はドルコスト平均法を実装しようとしていて、常設化の必要はなく、定期実行を行えればいいのでGASを使用。

仮想通貨取引所はwebAPIを使用、練習するいい機会な気がする(お金入れなくても使えるし)

GMOコインはこちら

問題点

GASでrequire();が使えない? (あまり詳しくはわからないので知っている方いたらぜひ教えてください🤲)

var crypto    = require('crypto');
var sign = crypto.createHmac('sha256', secretKey).update(text).digest('hex');

なのでこのコードをGASに最適化したい。

やったこと

共通部分

var secretKey = 'YOUR_SECRET_KEY';
var timestamp  = Date.now().toString();
var method     = 'METHOD';
var path       = '/v1/PATH';

 GAS

var text = timestamp + method + path;
var signature = Utilities.computeHmacSha256Signature(text, secretKey);
var sign = signature.reduce(function(str,chr){
  chr = (chr < 0 ? chr + 256 : chr).toString(16);
  return str + (chr.length==1?'0':'') + chr;
},'');

対応するNode.js

var crypto    = require('crypto');
var reqBody   = {};
var text = timestamp + method + path + JSON.stringify(reqBody);
var sign = crypto.createHmac('sha256', secretKey).update(text).digest('hex');

出力値(例)

12345abcde6f7g890h12ij3klm456n7890op12345q6r78s9t01234567u8v9wx2

signの出力値はこんな感じの英小文字と数字64文字で出力されました

補足

サンプルコードのrequest()に対応するGASはUrlFetchApp.fetch(url,options)で書ける

最後に

細かい挙動はGMOコインのAPIをみてください。

GMOコインはこちら

GASのリファレンスはこちら

他に参考にしたサイト

APIがある仮想通貨取引所

参考 BitMEXwww.bitmex.com

など

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です