bazel clean
Shouldn't make a difference but I'd try that
tried that before, only shackleton craps up - ah well, do not need to build that anyway
Might have been broken since the big reorg
it was broken on master yesterday, i only tried to build as the new tag landed
additionally you should provide 1) checksums for downloads 2) sign your distributables
Yeah, you are right
@quantumblockz has joined the channel
ok, I am going to code up a mining pool
sweet
[snowblossomcoin/snowblossom] Issue opened by guanlei1996
[snowblossomcoin/snowblossom] Issue closed by cluelessperson
[snowblossomcoin/snowblossom] Issue closed by cluelessperson
@Nuse has joined the channel
Going to make simple PPLNS mining pool
Hopefully today
Going to have it expose some metrics to the explorer
Did some plumbing for it last night
I am making the pool protocol now. The question is, do I make the miner build the merkle proof to send back to the mining pool? This code is odd and if someone wants to write a miner in another language it will be a hassle.
Or do I have the mining pool need the snow fields and check the work itself and build the proof if needed for a block
I guess the problem there is then the mining pool needs all fields that could be in use since a miner could use any field they have that is at least the current required
yeah, that settles it. mining pool can't be required to have all known fields on hand
why not?
not like we need to enable every nerd with a laptop to run a pool
sure, but even with just what we have now that is 4tb
and as soon as I have the ssd to do it, I'm going to build the next file
so 8tb total
that is a bit much
the pool doesn't need all that exist (which is technically infinit)
infinite
just all that we've gotten to
a miner may use a higher field if they want
so kinda gotta be ready for anything
I guess a pool could just reject it saying "no, that is dumb"
correct
any other advantages either way?
not sending the proof over the network saves a little bandwidth
but not much
bah
not sending the proof makes it easier to DoS a mining pool
I was thinking about that myself
the cost of calculating the proof is probably less than the cost of accepting the network traffic with the fake block
negative. calculating the proof requires a good chunk of reading into the snow fields
which a miner can do to the tune of thousands (or tens of thousands) of times a second
And the fake submit from a miner would only be 30 bytes or so, yeah
validating a proof is in memory and fast
there is my proposed mining protocol
It is good software engineering to just copy a class and change what you want right?
@Fireduck, any thought to making the mining pool use json RPC or something to make it easier to integrate other languages?
Yeah. Going to do grpc just so I can get this running but plan on opening a json Rpc port as well
actually, that makes me think... probably the node is really the only thing that needs to be tied to the protocol buffers
or even if the client and miner do use protocol buffers, they could take binaries drops and have a separate compile...
might make tooling work better for things like debugging.
Can make json interfaces for whatever
``` snowblossom@vmsnow1:/var/snowblossom$ source/snowblossom/bazel-bin/SnowBlossomClient configs/client-mainnet.conf send m0seqg6sxzvmyaynrq794zw64m4wcxhw5ljvaw3u 50 Exception in thread "main" java.lang.NumberFormatException: For input string: "m0seqg6sxzvmyaynrq794zw64m4wcxhw5ljvaw3u" at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) at java.lang.Double.parseDouble(Double.java:538) at snowblossom.client.SnowBlossomClient.main(SnowBlossomClient.java:58) ``` Ah. send <amount> <address>
you can open a bug to print usage if there is an error
``` snowblossom@vmsnow1:/var/snowblossom$ source/snowblossom/bazel-bin/SnowBlossomClient configs/client-mainnet.conf send m0seqg6sxzvmyaynrq794zw64m4wcxhw5ljvaw3u 50 Exception in thread "main" java.lang.NumberFormatException: For input string: "m0seqg6sxzvmyaynrq794zw64m4wcxhw5ljvaw3u" at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) at java.lang.Double.parseDouble(Double.java:538) at snowblossom.client.SnowBlossomClient.main(SnowBlossomClient.java:58) ```
thanks
@Fireduck i'll gladly host a pool - i suppose multiple pools should go online at about the same time
yep
That's 3 so far. :stuck_out_tongue:
Look upon PoolMiner.java and weep
What should I call the mining pool?
snowplow
snowpile
hahah
MrPlow
The fun is, cp SnowBlossomMiner.java PoolMiner.java. Edit PoolMiner.
cp SnowBlossomMiner.java MrPlow.java. Edit MrPlow
There is so much fucked up code overlap
but not enough to sensibly combine much
that's how you deliver things fast
It breaks my rule. If you have three copies of the same code, it is time to refactor.
two is fine
we shouldn't have a "memory miner" and a "disk miner"
we should just have a miner and an "allowed memory" such that it will store as much of the snowfield as it can
yeah, I was thinking about that
not an LRU because it would just thrash
I was going to implement it once I couldn't mine in memory anymore
but maybe fill in blocks up to the limit
yeah, just load from beginning
until full
right
and count on the hashing to evenly distribute load