如何使用電子 RPC 在 Windows 上獲得地址平衡
$ ./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";//<<<<<<<<<<< set the PORT you are using URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setReadTimeout(30000); //SET USER NAME >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 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}