Address

如何使用電子 RPC 在 Windows 上獲得地址平衡

  • August 26, 2020
$ ./electrum-3.2.3.exe --testnet setconfig rpcport 7777
true
$ ./electrum-3.2.3.exe --testnet setconfig rpcuser blah
true
$ ./electrum-3.2.3.exe --testnet setconfig rpcpassword blah
true

$ ./electrum-3.2.3.exe --testnet daemon start
Traceback (most recent call last):
 File "run_electrum", line 433, in <module>
AttributeError: module 'os' has no attribute 'fork'

我無法在 linux 上安裝,因為 centos 7.5 無法編譯 python3。我不會再嘗試了,因為我已經在編譯問題上浪費了一天。

$ ./electrum-3.2.3.exe --testnet

啟動一個很好的gui客戶端

$ curl --data-binary '{"id":"curltext","method":"blockchain.scripthash.get_balance","params":["mveNDYcr9Bb1xjnNeCRumiDHKU3n3CJBuk"]}' http://blah:blah@127.0.0.1:7777
{"result": null, "id": "curltext", "error": {"code": -32601, "message": "Method blockchain.scripthash.get_balance not supported."}}
$ curl --data-binary '{"id":"curltext","method":"get_balance","params":["mveNDYcr9Bb1xjnNeCRumiDHKU3n3CJBuk"]}' http://blah:blah@127.0.0.1:7777
{"result": null, "id": "curltext", "error": {"code": -32601, "message": "Method get_balance not supported."}}
$ curl --data-binary '{"id":"curltext","method":"getbalance","params":["mveNDYcr9Bb1xjnNeCRumiDHKU3n3CJBuk"]}' http://blah:blah@127.0.0.1:7777
{"result": null, "id": "curltext", "error": {"code": -32601, "message": "Method getbalance not supported."}}

我也嘗試過不指定比特幣地址,結果相同。

<https://bitcointalk.org/index.php?topic=1894185.0> 討論了相同的問題和狀態 isnt giving an error about the wallet being loaded, which is why I am getting the error above。假設海報的意思不是“不是”而是“是”,我將如何“解除安裝錢包”?

注意:mveNDYcr9Bb1xjnNeCRumiDHKU3n3CJBuk是電子錢包中的地址

事實證明,electrum 不一定要處於守護程序模式才能接收 api 請求,但它必須處於守護程序模式才能支持它們。

好的,所以這很難。首先,您必須設置您的 Electrum“配置”文件(它沒有副檔名)以確保您可以連接。你不能使用我的,因為它不起作用,但這是我的一個例子。您必須添加“rpcport”:XXXXX,使用您想要的任何埠,確保不要在每條評論後弄亂“,否則Electrum會覆蓋您的文件。

{

"auto_connect": true,
"config_version": 2,
"console-history": [],
"enable_opreturn": false,
"fee_per_kb": 1000,
"gui_last_wallet": "c:\\users\\xxx\\appdata\\roaming\\electroncash\\wallets\\default_wallet",
"is_maximized": false,
"recently_open": [
   "c:\\users\\xxx\\appdata\\roaming\\electroncash\\wallets\\default_wallet"
],
"rpcpassword": "5555555555555555==",
"rpcport": 54777,
"rpcuser": "user"

}

重新啟動 Electrum 並使用密碼登錄後,您現在可以使用下面的程式碼進行連接。不過也有一些問題。首先,Electrum 需要錢包路徑,但不能使用程式碼指定錢包路徑。這是 linux 的一些問題,我認為他們沒有將此功能添加到 windows。因此,確保您的錢包已載入的唯一方法是通過上面的配置文件,其中顯示“recently_open”必須指向您要使用的錢包。如果您出於某種原因打開 Windows Electrum 應用程序並更改錢包,然後嘗試使用下面的此程式碼,它將無法正常工作。這很愚蠢,但這就是為什麼人們在這方面遇到這麼多麻煩。

您可以在“params”中指定一個變數,即 wallet_path,但如果您嘗試使用它,它將無法正常工作,這絕對是愚蠢的,只是失敗了,所以不要打擾。

感謝這篇文章:https ://github.com/spesmilo/electrum/issues/5124 我能夠讓我的工作,但就像我說的 wallet_path 不起作用,這就是為什麼那些人仍然有麻煩。

在此範例中,我使用“getunusedaddress”而不是獲取錢包餘額,但它們都是受保護的資源,因此您可以在它們之間進行更改。

import java.util.Base64;
import java.io.*;
import java.net.*;
import java.net.HttpURLConnection;


public class daemon_test {



   public static void main(String[] args) {

       String s1 = new String("default_wallet");

       //Set password 

       connect_daemon("{\"id\":\"myquery\",\"method\":\"daemon\",\"params\":{\"config_options\":{\"subcommand\":\"load_wallet\", \"password\":\"susdoimsa;df\"}}}");
       connect_daemon("{\"id\":\"myquery\",\"method\":\"help\"}");
       connect_daemon("{\"id\":\"myquery\",\"method\":\"getunusedaddress\"}");


   }



   public static String connect_daemon(String url_prams) {

       String responseh = new String("");

       try {

           String url = "http://127.0.0.1:54777";//&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; set the PORT you are using
           URL obj = new URL(url);
           HttpURLConnection con = (HttpURLConnection) obj.openConnection();
           con.setReadTimeout(30000);

           //SET USER NAME &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
           String encoding = Base64.getEncoder().encodeToString("user:5555555555555555==".getBytes());

           //add reuqest header
           con.setRequestMethod("POST");
           con.setRequestProperty("Authorization", "Basic " + encoding);
           //con.setRequestProperty("method", "Basic " + encoding);

           String urlParameters = url_prams;//command=returnTradeHistory

           // Send post request
           con.setDoOutput(true);
           DataOutputStream wr = new DataOutputStream(con.getOutputStream());
           wr.writeBytes(urlParameters);
           wr.flush();
           wr.close();

           int responseCode = con.getResponseCode();
           //System.out.println("\nSending 'POST' request to URL : " + url);
           //System.out.println("Post parameters : " + urlParameters);
           //System.out.println("Response Code : " + responseCode);

           BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
           //BufferedReader in = new BufferedReader(new InputStreamReader(con.getErrorStream()));
           String inputLine;
           StringBuffer response = new StringBuffer();

           while ((inputLine = in.readLine()) != null) {
               response.append(inputLine);
           }
           in.close();

           //print result
           System.out.println(response.toString());
           responseh = response.toString();

       }catch(Exception e){

           e.printStackTrace();
           responseh = e.getMessage();

       }//*****************

       return responseh;

   }

}

這是輸出:

{"result": "qp0c59uccxftskajs5fxy2q7wn4cd03s9qzhlqfh4r", "id": "myquery","error": null}

引用自:https://bitcoin.stackexchange.com/questions/80190