Simple plotting process description
-
Is there any plot file format and plotting process description? I am going to implement own optimized plotter and can't find any simple description.
-
@k06a, not that I ever found. There is a rough overview outline showing the overall process, but for details no one seems to know, always got a response that you had to decipher the code. Doesn't seem very transparent?
-
-
@Blago this thread looks very promising but not contains nothing about format and file headers
-
@k06a have you tried creating the smallest possible plot file and viewing it in a hex editor?
-
@k06a
format unoptimized plot:
[nonce0][nonce1][nonce2]...[nonceX]
each nonce contain 4096 parts by 64 bytes - scoops1 nonce:
[scoop0][scoop1][scoop2]...[scoop4095]([n0s0][n0s1][n0s2]..[n0s4095]) ([n1s0][n1s1][n1s2]..[n1s4095]) ... ([nXs0][nXs1][nXs2]..[nXs4095])for optimize plot we need rewrite order:
for(nonce=0; nonce<X; nonce++) for(scoop=0; scoop<4096; scoop++){ offset = scoop * 64 + nonce*4096*64 write_to_HDD[offset]so, we will have
([n0s0][n1s0][n2s0]..[nXs0]) ([n0s1][n1s1][n2s1]..[nXs1]) ... ([n0s4095][n1s4095][n2s4095]..[nXs4095])
-
@Blago just curious, would it be possible to re-write an individual scoop in an effort to fix a damaged plot file. The idea being it is quicker to fix one scoop than re-plotting an entire drive.
-
@iKnow0 yeahh, but need to find corrupted nonces - and for it we must calculate and compare ALL nonces in plot
-
@Blago but if the miner reported the scoop in every round, then at least you would know in which scoop the error is.
-
@iKnow0 hmm... i think about it...
miner write to log # nonce which reported as corrupted
-
@Blago will mining be able in case of gap in plots? Or second part of plots will not be useful until gap will be filled? So plot files contain no header, file configuration is right in filename?
-
@Blago maybe to store MD5 of your plots and check it time to time?
-
@Blago how do miner understand is file optimised or not? By filename only?
-
@k06a some of my plots - 3 years old and it never been corrupted.
only one thing may corrupt it - plotter (while plotting)filename: ID_StartNonce_Nonces_Stagger
if Nonces = Stagger then plot optimized
-
@Blago what about gaps?
-
@k06a if plotter makes gaps, miner read it as zeroed bytes (or garbage), calculate deadline, send #nonce to the pool, pool calculate it again, got deadline and compare. Then pool send to miner "Your deadline wrong"
p.s. my English too bad for describing whole process.
@luxe help :)
-
@Blago thanks for your message, looks like 1 nonce gap will shrink your mining size.
-
@k06a На русском будет проще рассказать, Антон
-
So for [n0s0], this is a 64 byte word or 512 bits. I think that this value is some algorithm output with inputs nonce, scoop and acct id hashed together?
What is the algorithm?E.G., For scoop 4000 and nonce 120001 and account id 7979631613202555765:
Is the algorithm "4000+120001+7979631613202555765" (string) ==>>sha 512==>>digest ===>>>[n120001,S4000]?
or "12001+4000+7979631613202555765" (string) ==>>sha 512==>>digest ===>>>[n120001,S4000].
or is it "4000+120001+7979631613202555765" (hex addition) ==>>sha 512==>>digest ===>>>[n120001,S4000]?
Or something else?
I think that's what @k06a needs to know how to develop his own optimized plotter.
-
@rds
https://github.com/Blagodarenko/XPlotter/blob/master/Nonce.cpp#L244[n0s0] this is a 64 bytes
do_something("120001+7979631613202555765") ==>>sha 256==>>digest ===>>>[n120001]
then we split each nonce by parts and write them to the file in different places[n120001s0][n120001s1][n120001s2][n120001s3]...[n120001s4095]
https://github.com/Blagodarenko/XPlotter/blob/master/Nonce.cpp#L275
