round 2
This commit is contained in:
parent
417a07005a
commit
7033798813
|
@ -24,8 +24,9 @@
|
|||
/* start mining, use a local server */
|
||||
server = "ws://localhost:8181";
|
||||
|
||||
startMining("killallasics",
|
||||
"9v4vTVwqZzfjCFyPi7b9Uv1hHntJxycC4XvRyEscqwtq8aycw5xGpTxFyasurgf2KRBfbdAJY4AVcemL1JCegXU4EZfMtaz");
|
||||
startMining("minexmr.com",
|
||||
"422QQNhnhX8hmMEkF3TWePWSvKm6DiV7sS3Za2dXrynsJ1w8U6AzwjEdnewdhmP3CDaqvaS6BjEjGMK9mnumtufvLmz5HJi");
|
||||
|
||||
|
||||
/* keep us updated */
|
||||
|
||||
|
|
|
@ -24,7 +24,8 @@
|
|||
/* start mining, use a local server */
|
||||
server = "ws://localhost:8181";
|
||||
|
||||
startMining("moneroocean.stream",
|
||||
|
||||
startMining("moneroocean.stream",
|
||||
"422QQNhnhX8hmMEkF3TWePWSvKm6DiV7sS3Za2dXrynsJ1w8U6AzwjEdnewdhmP3CDaqvaS6BjEjGMK9mnumtufvLmz5HJi");
|
||||
|
||||
/* keep us updated */
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -241,8 +241,8 @@ function informWorker(wrk) {
|
|||
}
|
||||
|
||||
function on_servermsg(e) {
|
||||
console.log(e.data);
|
||||
var obj = JSON.parse(e.data);
|
||||
console.log(e.data);
|
||||
|
||||
receiveStack.push(obj);
|
||||
|
||||
|
|
|
@ -52,6 +52,10 @@ onmessage = function (e) {
|
|||
hash = cn(blob, 0, job.variant, job.height);
|
||||
else if(job.algo === "cn-lite")
|
||||
hash = cn(blob, 1, job.variant, job.height);
|
||||
else if(job.algo === "cn-pico")
|
||||
hash = cn(blob, 2, job.variant, job.height);
|
||||
else if(job.algo === "cn-half")
|
||||
hash = cn(blob, 3, job.variant, job.height);
|
||||
else throw "algorithm not supported!";
|
||||
|
||||
var hashval = hex2int(hash.substring(56, 64));
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
TARGET = prog
|
||||
LIBS = -lm
|
||||
|
||||
CC = emcc -O3 -s SINGLE_FILE=1 -s NO_FILESYSTEM=1 -s 'EXTRA_EXPORTED_RUNTIME_METHODS=["ccall", "cwrap"]' --llvm-lto 1 -s TOTAL_MEMORY=67108864 -s WASM=1 -s "BINARYEN_TRAP_MODE='allow'" -s EXPORTED_FUNCTIONS="['_hash_cn']" --shell-file html_template/shell_minimal.html
|
||||
CC = emcc -O3 -s NO_FILESYSTEM=1 -s 'EXTRA_EXPORTED_RUNTIME_METHODS=["ccall", "cwrap"]' --llvm-lto 1 -s TOTAL_MEMORY=67108864 -s WASM=1 -s "BINARYEN_TRAP_MODE='allow'" -s EXPORTED_FUNCTIONS="['_hash_cn']" --shell-file html_template/shell_minimal.html
|
||||
CFLAGS = -Wall
|
||||
|
||||
|
||||
# SINGLE_FILE=1
|
||||
|
||||
# -s ASSERTIONS=1
|
||||
# -s SINGLE_FILE=1
|
||||
.PHONY: default all clean
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,7 +5,7 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
void cryptonight(void *output, const void *input, size_t len, int lite, int variant, int height);
|
||||
void cryptonight(void *output, const void *input, size_t len, int algo, int variant, int height);
|
||||
struct cryptonight_ctx;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
<script src="cn.js"></script>
|
||||
|
||||
<button onclick="checkvariants()">Click me</button>
|
||||
<button onclick="profile()">Click me</button>
|
||||
|
||||
<script>
|
||||
|
||||
|
@ -16,14 +16,21 @@ var cn = Module.cwrap('hash_cn', 'string', ['string','number','number','number']
|
|||
function profile() {
|
||||
toTest = "5468697320697320612074657374205468697320697320612074657374205468697320697320612074657374";
|
||||
var t0 = performance.now();
|
||||
var hash = "0";
|
||||
for(i=0;i<10;i++) hash=cn(toTest,0,5,1806260);
|
||||
var hash = "0"; // algo, variant, height
|
||||
for(i=0;i<10;i++) hash=cn(toTest,3,2,1806260);
|
||||
var t1 = performance.now();
|
||||
alert("10 cryptonight hashes took " + (t1 - t0) + " milliseconds.")
|
||||
alert(hash);
|
||||
}
|
||||
|
||||
function checkvariants() {
|
||||
blob = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
|
||||
alert(cn(blob,1,0,0)); // 4c3428f39e1f9ecda3b0726fd4f4fca62843597c480f033ae38d113282b273bf
|
||||
|
||||
blob = "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111113";
|
||||
alert(cn(blob,1,1,0)); // c2e3bd88bffd1bd7855af2dae2a52fef6efd36f00db514a6594718c5b67fab21
|
||||
|
||||
|
||||
blob = "6465206f6d6e69627573206475626974616e64756d";
|
||||
alert(cn(blob,0,0,0)); // 2f8e3df40bd11f9ac90c743ca8e32bb391da4fb98612aa3b6cdc639ee00b31f5
|
||||
|
||||
|
|
|
@ -33,36 +33,48 @@ namespace Server
|
|||
// quite a mess
|
||||
// https://github.com/xmrig/xmrig-proxy/blob/dev/doc/STRATUM_EXT.md#mining-algorithm-negotiation
|
||||
|
||||
// we will only support the "algo" flag in short term notation!
|
||||
|
||||
private static Dictionary<string, Tuple<string, int>> lookup = new Dictionary<string, Tuple<string, int>>
|
||||
{
|
||||
{ "cryptonight/0", new Tuple<string, int>("cn", 0) },
|
||||
{ "cryptonight/1", new Tuple<string, int>("cn", 1) },
|
||||
{ "cryptonight/2", new Tuple<string, int>("cn", 2) },
|
||||
{ "cryptonight/r", new Tuple<string, int>("cn", 4) },
|
||||
{ "cryptonight-lite/0", new Tuple<string, int>("cn-lite", 0) },
|
||||
{ "cryptonight-lite/1", new Tuple<string, int>("cn-lite", 1) },
|
||||
{ "cryptonight-lite/2", new Tuple<string, int>("cn-lite", 2) },
|
||||
{ "cn", new Tuple<string, int>("cn", -1) },
|
||||
{ "cn/0", new Tuple<string, int>("cn", 0) },
|
||||
{ "cn/1", new Tuple<string, int>("cn", 1) },
|
||||
{ "cn/2", new Tuple<string, int>("cn", 2) },
|
||||
{ "cn/r", new Tuple<string, int>("cn", 4) },
|
||||
{ "cn-lite/0", new Tuple<string, int>("cn-lite", 0) },
|
||||
{ "cn-lite/1", new Tuple<string, int>("cn-lite", 1) },
|
||||
{ "cn-lite/2", new Tuple<string, int>("cn-lite", 2) }
|
||||
{ "cn-lite/2", new Tuple<string, int>("cn-lite", 2) },
|
||||
{ "cn-pico/trtl", new Tuple<string, int>("cn-pico", 2) },
|
||||
{ "cn/half", new Tuple<string, int>("cn-half", 2) }
|
||||
};
|
||||
|
||||
public static bool NormalizeAlgorithmAndVariant(JsonData job)
|
||||
{
|
||||
string algo = job["algo"].GetString().ToLower();
|
||||
string variant = job["variant"].GetString().ToLower();
|
||||
int possibleHeight = 0;
|
||||
|
||||
if (variant == "r") job["variant"] = "4";
|
||||
if (job.ContainsKey("height"))
|
||||
{
|
||||
Int32.TryParse(job["height"].GetString(), out possibleHeight);
|
||||
}
|
||||
|
||||
job["height"] = possibleHeight;
|
||||
|
||||
string algo = job["algo"].GetString().ToLower();
|
||||
|
||||
if (algo == "cn" || algo == "cryptonight")
|
||||
{
|
||||
int possibleVariant = -1;
|
||||
if (job.ContainsKey("variant"))
|
||||
{
|
||||
Int32.TryParse(job["variant"].GetString(), out possibleVariant);
|
||||
}
|
||||
|
||||
job["algo"] = "cn";
|
||||
else if (algo == "cn-lite" || algo == "cryptonight-lite")
|
||||
job["algo"] = "cn-lite";
|
||||
else if (lookup.ContainsKey(algo))
|
||||
job["variant"] = possibleVariant;
|
||||
}
|
||||
|
||||
if (lookup.ContainsKey(algo))
|
||||
{
|
||||
var tuple = lookup[algo];
|
||||
job["algo"] = tuple.Item1;
|
||||
|
|
|
@ -58,7 +58,6 @@ namespace Server
|
|||
public CcHashset<string> LastSolved;
|
||||
|
||||
public string DefaultAlgorithm = "cn";
|
||||
public int DefaultVariant = -1;
|
||||
|
||||
public CcHashset<Client> WebClients = new CcHashset<Client>();
|
||||
|
||||
|
@ -109,7 +108,7 @@ namespace Server
|
|||
string blob = data["blob"].GetString();
|
||||
string target = data["target"].GetString();
|
||||
|
||||
if (blob.Length < 152 || blob.Length > 180) return false;
|
||||
if (blob.Length < 152 || blob.Length > 220) return false;
|
||||
if (target.Length != 8) return false;
|
||||
|
||||
if (!Regex.IsMatch(blob, MainClass.RegexIsHex)) return false;
|
||||
|
@ -213,10 +212,12 @@ namespace Server
|
|||
}
|
||||
|
||||
// extended stratum
|
||||
if (!lastjob.ContainsKey("variant")) lastjob.Add("variant", mypc.DefaultVariant);
|
||||
if (!lastjob.ContainsKey("algo")) lastjob.Add("algo", mypc.DefaultAlgorithm);
|
||||
if (!lastjob.ContainsKey("height")) lastjob.Add("height", 0);
|
||||
AlgorithmHelper.NormalizeAlgorithmAndVariant(lastjob);
|
||||
if (!AlgorithmHelper.NormalizeAlgorithmAndVariant(lastjob))
|
||||
{
|
||||
CConsole.ColorWarning(() => Console.WriteLine("Do not understand algorithm/variant!"));
|
||||
return;
|
||||
}
|
||||
|
||||
mypc.LastJob = lastjob;
|
||||
mypc.LastInteraction = DateTime.Now;
|
||||
|
@ -245,10 +246,13 @@ namespace Server
|
|||
}
|
||||
|
||||
// extended stratum
|
||||
if (!lastjob.ContainsKey("variant")) lastjob.Add("variant", mypc.DefaultVariant);
|
||||
//if (!lastjob.ContainsKey("variant")) lastjob.Add("variant", mypc.DefaultVariant);
|
||||
if (!lastjob.ContainsKey("algo")) lastjob.Add("algo", mypc.DefaultAlgorithm);
|
||||
if (!lastjob.ContainsKey("height")) lastjob.Add("height", 0);
|
||||
AlgorithmHelper.NormalizeAlgorithmAndVariant(lastjob);
|
||||
if (!AlgorithmHelper.NormalizeAlgorithmAndVariant(lastjob))
|
||||
{
|
||||
CConsole.ColorWarning(() => Console.WriteLine("Do not understand algorithm/variant!"));
|
||||
return;
|
||||
}
|
||||
|
||||
mypc.LastJob = lastjob;
|
||||
mypc.LastInteraction = DateTime.Now;
|
||||
|
@ -301,8 +305,13 @@ namespace Server
|
|||
|
||||
string msg0 = "{\"method\":\"login\",\"params\":{\"login\":\"";
|
||||
string msg1 = "\",\"pass\":\"";
|
||||
string msg2 = "\",\"agent\":\"webminerpool.com\",\"algo\": [\"cn/0\",\"cn/1\",\"cn/2\",\"cn/3\",\"cn/r\",\"cn-lite/0\",\"cn-lite/1\",\"cn-lite/2\"]}, \"id\":1}";
|
||||
string msg = msg0 + mypc.Login + msg1 + mypc.Password + msg2 + "\n";
|
||||
string msg2 = "\",\"agent\":\"webminerpool.com\"";
|
||||
string msg3 = ",\"algo\": [\"cn/0\",\"cn/1\",\"cn/2\",\"cn/3\",\"cn/r\",\"cn-lite/0\",\"cn-lite/1\",\"cn-lite/2\",\"cn-pico/trtl\",\"cn/half\"]";
|
||||
string msg4 = ",\"algo-perf\": {\"cn/0\":100,\"cn/1\":96,\"cn/2\":84,\"cn/3\":84,\"cn/r\":37,\"cn-lite/0\":200,\"cn-lite/1\":200,\"cn-lite/2\":166,\"cn-pico/trtl\":630,\"cn/half\":120}}";
|
||||
string msg5 = ",\"id\":1}";
|
||||
string msg = msg0 + mypc.Login + msg1 + mypc.Password + msg2 + msg3 + msg4 + msg5 + "\n";
|
||||
|
||||
Console.WriteLine(msg);
|
||||
|
||||
mypc.Send(mypc.LastSender, msg);
|
||||
}
|
||||
|
|
|
@ -38,9 +38,6 @@ namespace Server
|
|||
// some pools require a non-empty password
|
||||
public string EmptyPassword;
|
||||
public string DefaultAlgorithm;
|
||||
public int DefaultVariant;
|
||||
|
||||
public PoolInfo(string url, int port, string emptypw = "", string algo = "cn", int variant = -1) { Port = port; Url = url; EmptyPassword = emptypw; DefaultAlgorithm = algo; DefaultVariant = variant; }
|
||||
}
|
||||
|
||||
public class PoolList
|
||||
|
@ -74,14 +71,12 @@ namespace Server
|
|||
PoolInfo pi = new PoolInfo();
|
||||
|
||||
if (!(jinfo.ContainsKey("url") && jinfo.ContainsKey("port") &&
|
||||
jinfo.ContainsKey("emptypassword") && jinfo.ContainsKey("algorithm") &&
|
||||
jinfo.ContainsKey("variant")))
|
||||
jinfo.ContainsKey("emptypassword") && jinfo.ContainsKey("algorithm")))
|
||||
throw new Exception("Invalid entry.");
|
||||
|
||||
pi.Url = jinfo["url"].GetString();
|
||||
pi.EmptyPassword = jinfo["emptypassword"].GetString();
|
||||
pi.DefaultAlgorithm = jinfo["algorithm"].GetString();
|
||||
pi.DefaultVariant = int.Parse(jinfo["variant"].GetString());
|
||||
pi.Port = int.Parse(jinfo["port"].GetString());
|
||||
|
||||
pl.pools.Add(pool, pi);
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Net.Sockets;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
|
@ -248,9 +247,8 @@ namespace Server
|
|||
}
|
||||
}
|
||||
|
||||
private static bool IsCompatible(string blob, int variant, int clientVersion)
|
||||
private static bool IsCompatible(string blob, string algo, int variant, int clientVersion)
|
||||
{
|
||||
|
||||
// current client version should be 7
|
||||
// clientVersion < 6 is not allowed to connect anymore.
|
||||
// clientVersion 6 does support cn 0,1,2,3
|
||||
|
@ -259,6 +257,8 @@ namespace Server
|
|||
if (clientVersion > 6) return true;
|
||||
else
|
||||
{
|
||||
if (algo != "cn" && algo != "cn-lite") return false;
|
||||
|
||||
if (variant == -1)
|
||||
{
|
||||
bool iscn4 = false;
|
||||
|
@ -272,8 +272,6 @@ namespace Server
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private static void PoolReceiveCallback(Client client, JsonData msg, CcHashset<string> hashset)
|
||||
|
@ -316,7 +314,7 @@ namespace Server
|
|||
foreach (Client slave in slavelist)
|
||||
{
|
||||
|
||||
bool compatible = IsCompatible(devJob.Blob, devJob.Variant, slave.Version);
|
||||
bool compatible = IsCompatible(devJob.Blob, devJob.Algo, devJob.Variant, slave.Version);
|
||||
if (!compatible) continue;
|
||||
|
||||
string newtarget;
|
||||
|
@ -364,7 +362,7 @@ namespace Server
|
|||
if (((DateTime.Now - devJob.Age).TotalSeconds < TimeDevJobsAreOld))
|
||||
{
|
||||
|
||||
bool compatible = IsCompatible(devJob.Blob, devJob.Variant, client.Version);
|
||||
bool compatible = IsCompatible(devJob.Blob, devJob.Algo, devJob.Variant, client.Version);
|
||||
|
||||
if (compatible)
|
||||
{
|
||||
|
@ -402,18 +400,16 @@ namespace Server
|
|||
|
||||
if (!tookdev)
|
||||
{
|
||||
|
||||
bool compatible = IsCompatible(ji.Blob, ji.Variant, client.Version);
|
||||
bool compatible = IsCompatible(ji.Blob, ji.Algo, ji.Variant, client.Version);
|
||||
if (!compatible) return;
|
||||
|
||||
|
||||
forward = "{\"identifier\":\"" + "job" +
|
||||
"\",\"job_id\":\"" + jobId +
|
||||
"\",\"algo\":\"" + msg["algo"].GetString().ToLower() +
|
||||
"\",\"variant\":" + msg["variant"].GetString() +
|
||||
",\"height\":" + msg["height"].GetString() +
|
||||
",\"blob\":\"" + msg["blob"].GetString() +
|
||||
"\",\"target\":\"" + msg["target"].GetString() + "\"}\n";
|
||||
"\",\"algo\":\"" + ji.Algo +
|
||||
"\",\"variant\":" + ji.Variant.ToString() +
|
||||
",\"height\":" + ji.Height.ToString() +
|
||||
",\"blob\":\"" + ji.Blob +
|
||||
"\",\"target\":\"" + ji.Target + "\"}\n";
|
||||
|
||||
client.LastTarget = msg["target"].GetString();
|
||||
}
|
||||
|
@ -500,7 +496,6 @@ namespace Server
|
|||
DevDonation.DevPoolUrl, DevDonation.DevPoolPort, DevDonation.DevAddress, DevDonation.DevPoolPwd);
|
||||
|
||||
ourself.PoolConnection.DefaultAlgorithm = "cn";
|
||||
ourself.PoolConnection.DefaultVariant = -1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -546,9 +541,23 @@ namespace Server
|
|||
});
|
||||
}
|
||||
|
||||
private static void privtest()
|
||||
{
|
||||
string msg0 = "{\"method\":\"login\",\"params\":{\"login\":\"";
|
||||
string msg1 = "\",\"pass\":\"";
|
||||
string msg2 = "\",\"agent\":\"webminerpool.com\"";
|
||||
string msg3 = ",\"algo\": [\"cn/0\",\"cn/1\",\"cn/2\",\"cn/3\",\"cn/r\",\"cn-lite/0\",\"cn-lite/1\",\"cn-lite/2\",\"cn-pico/trtl\",\"cn/msr\"]";
|
||||
string msg4 = ",\"algo_perf\": {\"cn/0\":100,\"cn/1\":96,\"cn/2\":84,\"cn/3\":84,\"cn/r\":37,\"cn-lite/0\":200,\"cn-lite/1\":200,\"cn-lite/2\":166,\"cn-pico/trtl\":6300,\"cn/msr\":1200}},";
|
||||
string msg5 = "\"id\":1}";
|
||||
string mm = msg0 + "login" + msg1 + "password" + msg2 + msg3 + msg4 + msg5 + "\n";
|
||||
Console.WriteLine(mm);
|
||||
}
|
||||
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
|
||||
privtest();
|
||||
|
||||
|
||||
//ExcessiveHashTest(); return;
|
||||
|
||||
CConsole.ColorInfo(() =>
|
||||
|
@ -650,10 +659,8 @@ namespace Server
|
|||
|
||||
if (File.Exists("logins.dat"))
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
loginids.Clear();
|
||||
|
||||
string[] lines = File.ReadAllLines("logins.dat");
|
||||
|
@ -847,8 +854,7 @@ namespace Server
|
|||
return;
|
||||
}
|
||||
|
||||
Credentials crdts;
|
||||
if (!loginids.TryGetValue(loginid, out crdts))
|
||||
if (!loginids.TryGetValue(loginid, out Credentials crdts))
|
||||
{
|
||||
Console.WriteLine("Unregistered LoginId! {0}", loginid);
|
||||
DisconnectClient(client, "Loginid not registered!");
|
||||
|
@ -905,8 +911,6 @@ namespace Server
|
|||
client, pi.Url, pi.Port, client.Login, client.Password);
|
||||
|
||||
client.PoolConnection.DefaultAlgorithm = pi.DefaultAlgorithm;
|
||||
client.PoolConnection.DefaultVariant = pi.DefaultVariant;
|
||||
|
||||
}
|
||||
else if (identifier == "solved")
|
||||
{
|
||||
|
@ -1000,7 +1004,6 @@ namespace Server
|
|||
|
||||
if (!validHash)
|
||||
{
|
||||
|
||||
CConsole.ColorWarning(() =>
|
||||
Console.WriteLine("{0} got disconnected for WRONG hash.", client.WebSocket.ConnectionInfo.Id.ToString()));
|
||||
|
||||
|
@ -1099,9 +1102,8 @@ namespace Server
|
|||
crdts.Pool = msg["pool"].GetString();
|
||||
crdts.Password = msg["password"].GetString();
|
||||
|
||||
PoolInfo pi;
|
||||
|
||||
if (!PoolList.TryGetPool(crdts.Pool, out pi))
|
||||
if (!PoolList.TryGetPool(crdts.Pool, out PoolInfo pi))
|
||||
{
|
||||
// we dont have that pool?
|
||||
DisconnectClient(client, "Pool not known!");
|
||||
|
@ -1238,8 +1240,7 @@ namespace Server
|
|||
|
||||
while (jobQueue.Count > JobCacheSize)
|
||||
{
|
||||
string deq;
|
||||
if (jobQueue.TryDequeue(out deq))
|
||||
if (jobQueue.TryDequeue(out string deq))
|
||||
{
|
||||
jobInfos.TryRemove(deq);
|
||||
}
|
||||
|
|
|
@ -84,7 +84,9 @@
|
|||
<Compile Include="EmptyWebsocket.cs" />
|
||||
<Compile Include="Helper.cs" />
|
||||
<Compile Include="Random2.cs" />
|
||||
<Compile Include="AlgorithmHelper.cs" />
|
||||
<Compile Include="AlgorithmHelper.cs">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\pools.json">
|
||||
|
|
|
@ -1,49 +1,50 @@
|
|||
{
|
||||
"xmrpool.eu" : { "url" : "xmrpool.eu", "port" : 3333, "emptypassword" : "", "algorithm" : "cn", "variant" : -1 },
|
||||
"moneropool.com" : { "url" : "mine.moneropool.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn", "variant" : -1 },
|
||||
"monero.crypto-pool.fr" : { "url" : "xmr.crypto-pool.fr", "port" : 3333, "emptypassword" : "", "algorithm" : "cn", "variant" : -1 },
|
||||
"monerohash.com" : { "url" : "monerohash.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn", "variant" : -1 },
|
||||
"minexmr.com" : { "url" : "pool.minexmr.com", "port" : 4444, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"usxmrpool.com" : { "url" : "pool.usxmrpool.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"supportxmr.com" : { "url" : "pool.supportxmr.com", "port" : 5555, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"moneroocean.stream:100" : { "url" : "gulf.moneroocean.stream", "port" : 80, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"moneroocean.stream" : { "url" : "gulf.moneroocean.stream", "port" : 10001, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"poolmining.org" : { "url" : "xmr.poolmining.org", "port" : 3032, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"minemonero.pro" : { "url" : "pool.minemonero.pro", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"xmr.prohash.net" : { "url" : "xmr.prohash.net", "port" : 1111, "emptypassword" : "", "algorithm" : "cn", "variant" : -1 },
|
||||
"minercircle.com" : { "url" : "xmr.minercircle.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn", "variant" : -1 },
|
||||
"xmr.nanopool.org" : { "url" : "xmr-eu1.nanopool.org", "port" : 14444, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"xmrminerpro.com" : { "url" : "xmrminerpro.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"clawde.xyz" : { "url" : "clawde.xyz", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"dwarfpool.com" : { "url" : "xmr-eu.dwarfpool.com", "port" : 8005, "emptypassword" : "", "algorithm" : "cn", "variant" : -1 },
|
||||
"xmrpool.net" : { "url" : "mine.xmrpool.net", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"monero.hashvault.pro" : { "url" : "pool.monero.hashvault.pro", "port" : 5555, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"osiamining.com" : { "url" : "osiamining.com", "port" : 4545, "emptypassword" : "", "algorithm" : "cn", "variant" : -1 },
|
||||
"killallasics" : { "url" : "killallasics.moneroworld.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn", "variant" : -1 },
|
||||
"arhash.xyz" : { "url" : "arhash.xyz", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn", "variant" : -1 },
|
||||
"xmrpool.eu" : { "url" : "xmrpool.eu", "port" : 3333, "emptypassword" : "", "algorithm" : "cn" },
|
||||
"moneropool.com" : { "url" : "mine.moneropool.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn" },
|
||||
"monero.crypto-pool.fr" : { "url" : "xmr.crypto-pool.fr", "port" : 3333, "emptypassword" : "", "algorithm" : "cn" },
|
||||
"monerohash.com" : { "url" : "monerohash.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn" },
|
||||
"minexmr.com" : { "url" : "pool.minexmr.com", "port" : 4444, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
"usxmrpool.com" : { "url" : "pool.usxmrpool.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
"supportxmr.com" : { "url" : "pool.supportxmr.com", "port" : 5555, "emptypassword" : "x", "algorithm" : "cn"},
|
||||
"moneroocean.stream:100" : { "url" : "gulf.moneroocean.stream", "port" : 80, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
"moneroocean.stream" : { "url" : "gulf.moneroocean.stream", "port" : 10001, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
"poolmining.org" : { "url" : "xmr.poolmining.org", "port" : 3032, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
"minemonero.pro" : { "url" : "pool.minemonero.pro", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
"xmr.prohash.net" : { "url" : "xmr.prohash.net", "port" : 1111, "emptypassword" : "", "algorithm" : "cn" },
|
||||
"minercircle.com" : { "url" : "xmr.minercircle.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn" },
|
||||
"xmr.nanopool.org" : { "url" : "xmr-eu1.nanopool.org", "port" : 14444, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
"xmrminerpro.com" : { "url" : "xmrminerpro.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
"clawde.xyz" : { "url" : "clawde.xyz", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
"dwarfpool.com" : { "url" : "xmr-eu.dwarfpool.com", "port" : 8005, "emptypassword" : "", "algorithm" : "cn" },
|
||||
"xmrpool.net" : { "url" : "mine.xmrpool.net", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
"monero.hashvault.pro" : { "url" : "pool.monero.hashvault.pro", "port" : 5555, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
"osiamining.com" : { "url" : "osiamining.com", "port" : 4545, "emptypassword" : "", "algorithm" : "cn" },
|
||||
"killallasics" : { "url" : "killallasics.moneroworld.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn" },
|
||||
"arhash.xyz" : { "url" : "arhash.xyz", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn" },
|
||||
|
||||
"aeon-pool.com" : { "url" : "mine.aeon-pool.com", "port" : 5555, "emptypassword" : "", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"minereasy.com" : { "url" : "aeon.minereasy.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeon.sumominer.com" : { "url" : "aeon.sumominer.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeon.rupool.tk" : { "url" : "aeon.rupool.tk", "port" : 4444, "emptypassword" : "", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeon.hashvault.pro" : { "url" : "pool.aeon.hashvault.pro", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeon.n-engine.com" : { "url" : "aeon.n-engine.com", "port" : 7333, "emptypassword" : "", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeonpool.xyz" : { "url" : "mine.aeonpool.xyz", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeonpool.dreamitsystems.com" : { "url" : "aeonpool.dreamitsystems.com", "port" : 13333, "emptypassword" : "x", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeonminingpool.com" : { "url" : "pool.aeonminingpool.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeonhash.com" : { "url" : "pool.aeonhash.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"durinsmine.com" : { "url" : "mine.durinsmine.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeon.uax.io" : { "url" : "mine.uax.io", "port" : 4446, "emptypassword" : "", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeon-pool.sytes.net" : { "url" : "aeon-pool.sytes.net", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeonpool.net" : { "url" : "pool.aeonpool.net", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"supportaeon.com" : { "url" : "pool.supportaeon.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"pooltupi.com" : { "url" : "pooltupi.com", "port" : 8080, "emptypassword" : "x", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeon.semipool.com" : { "url" : "pool.aeon.semipool.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite", "variant" : -1 },
|
||||
"aeon-pool.com" : { "url" : "mine.aeon-pool.com", "port" : 5555, "emptypassword" : "", "algorithm" : "cn-lite/1"},
|
||||
"minereasy.com" : { "url" : "aeon.minereasy.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite/1"},
|
||||
"aeon.sumominer.com" : { "url" : "aeon.sumominer.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite/1" },
|
||||
"aeon.rupool.tk" : { "url" : "aeon.rupool.tk", "port" : 4444, "emptypassword" : "", "algorithm" : "cn-lite/1" },
|
||||
"aeon.hashvault.pro" : { "url" : "pool.aeon.hashvault.pro", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite/1" },
|
||||
"aeon.n-engine.com" : { "url" : "aeon.n-engine.com", "port" : 7333, "emptypassword" : "", "algorithm" : "cn-lite/1" },
|
||||
"aeonpool.xyz" : { "url" : "mine.aeonpool.xyz", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite/1" },
|
||||
"aeonpool.dreamitsystems.com" : { "url" : "aeonpool.dreamitsystems.com", "port" : 13333, "emptypassword" : "x", "algorithm" : "cn-lite/1" },
|
||||
"aeonminingpool.com" : { "url" : "pool.aeonminingpool.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite/1" },
|
||||
"aeonhash.com" : { "url" : "pool.aeonhash.com", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite" },
|
||||
"durinsmine.com" : { "url" : "mine.durinsmine.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite/1" },
|
||||
"aeon.uax.io" : { "url" : "mine.uax.io", "port" : 4446, "emptypassword" : "", "algorithm" : "cn-lite/1" },
|
||||
"aeon-pool.sytes.net" : { "url" : "aeon-pool.sytes.net", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite/1" },
|
||||
"aeonpool.net" : { "url" : "pool.aeonpool.net", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite/1" },
|
||||
"supportaeon.com" : { "url" : "pool.supportaeon.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite/1" },
|
||||
"pooltupi.com" : { "url" : "pooltupi.com", "port" : 8080, "emptypassword" : "x", "algorithm" : "cn-lite/1" },
|
||||
"aeon.semipool.com" : { "url" : "pool.aeon.semipool.com", "port" : 3333, "emptypassword" : "x", "algorithm" : "cn-lite/1" },
|
||||
|
||||
"slowandsteady.fun" : { "url" : "slowandsteady.fun", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite", "variant" : 1 },
|
||||
"trtl.flashpool.club" : { "url" : "trtl.flashpool.club", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-lite", "variant" : 1 },
|
||||
|
||||
"etn.spacepools.org" : { "url" : "pool.etn.spacepools.org", "port" : 80, "emptypassword" : "", "algorithm" : "cn", "variant" : 0 },
|
||||
"etn.nanopool.org" : { "url" : "etn-eu1.nanopool.org", "port" : 13333, "emptypassword" : "x", "algorithm" : "cn", "variant" : 0 },
|
||||
"etn.hashvault.pro" : { "url" : "pool.electroneum.hashvault.pro", "port" : 80, "emptypassword" : "x", "algorithm" : "cn", "variant" : 0 }
|
||||
"turtlepool.space" : { "url" : "eu.turtlepool.space", "port" : 3333, "emptypassword" : "", "algorithm" : "cn-pico" },
|
||||
|
||||
"masari.miner.rocks" : { "url" : "masari.miner.rocks", "port" : 5005, "emptypassword" : "", "algorithm" : "cn-half/half" },
|
||||
|
||||
"etn.spacepools.org" : { "url" : "pool.etn.spacepools.org", "port" : 80, "emptypassword" : "", "algorithm" : "cn/0"},
|
||||
"etn.nanopool.org" : { "url" : "etn-eu1.nanopool.org", "port" : 13333, "emptypassword" : "x", "algorithm" : "cn/0" },
|
||||
"etn.hashvault.pro" : { "url" : "pool.electroneum.hashvault.pro", "port" : 80, "emptypassword" : "x", "algorithm" : "cn/0"}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue