see sig thread, read down to 7970 settings poriton
|
|
|
Your Litecoin & Mincoin Code examples read identic to me , is this intended?
Yes, it's a problem with litecoin (and bitcoin) as diff changes are ONLY based upon the retarget period. However, if your retarget period is long enough it's not a problem -- the shorter the retarget, the more exploitable the chain. About 5 months ago the problem was bad for litecoin, but now as litecoin is worth much more than bitcoin, chain hopping is discouraged and it's not really a problem. PPcoin (and now with Sunny King's help, TRC) addressed this by basing retarget on longer moving average periods. Was used successfully for TRC here: https://bitcointalk.org/index.php?topic=157449.0Although not by me, I only wrote the script.
|
|
|
8GB is a bit overkill still, even for litecoin. Its cheap so doesn't matter.
You need 8gb for high thread concurrency required by 79xx cards
|
|
|
Whoops, forgot to change a couple of lines, should work now
Not that anyone is mining mincoin anyway
|
|
|
Considering you were one of the first posters in here complaining about how you couldn't work out how to download the blockchain I doubt you could do much of anything. Litecoin: unsigned int ComputeMinWork(unsigned int nBase, int64 nTime) { // Testnet has min-difficulty blocks // after nTargetSpacing*2 time between blocks: if (fTestNet && nTime > nTargetSpacing*2) return bnProofOfWorkLimit.GetCompact();
CBigNum bnResult; bnResult.SetCompact(nBase); while (nTime > 0 && bnResult < bnProofOfWorkLimit) { // Maximum 400% adjustment... bnResult *= 4; // ... in best-case exactly 4-times-normal target time nTime -= nTargetTimespan*4; } if (bnResult > bnProofOfWorkLimit) bnResult = bnProofOfWorkLimit; return bnResult.GetCompact(); }
unsigned int static GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlock *pblock) { unsigned int nProofOfWorkLimit = bnProofOfWorkLimit.GetCompact();
// Genesis block if (pindexLast == NULL) return nProofOfWorkLimit;
// Only change once per interval if ((pindexLast->nHeight+1) % nInterval != 0) { // Special difficulty rule for testnet: if (fTestNet) { // If the new block's timestamp is more than 2* 10 minutes // then allow mining of a min-difficulty block. if (pblock->nTime > pindexLast->nTime + nTargetSpacing*2) return nProofOfWorkLimit; else { // Return the last non-special-min-difficulty-rules-block const CBlockIndex* pindex = pindexLast; while (pindex->pprev && pindex->nHeight % nInterval != 0 && pindex->nBits == nProofOfWorkLimit) pindex = pindex->pprev; return pindex->nBits; } }
return pindexLast->nBits; } Mincoin: unsigned int ComputeMinWork(unsigned int nBase, int64 nTime) { // Testnet has min-difficulty blocks // after nTargetSpacing*2 time between blocks: if (fTestNet && nTime > nTargetSpacing*2) return bnProofOfWorkLimit.GetCompact();
CBigNum bnResult; bnResult.SetCompact(nBase); while (nTime > 0 && bnResult < bnProofOfWorkLimit) { // Maximum 400% adjustment... bnResult *= 4; // ... in best-case exactly 4-times-normal target time nTime -= nTargetTimespan*4; } if (bnResult > bnProofOfWorkLimit) bnResult = bnProofOfWorkLimit; return bnResult.GetCompact(); }
unsigned int static GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlock *pblock) { unsigned int nProofOfWorkLimit = bnProofOfWorkLimit.GetCompact();
// Genesis block if (pindexLast == NULL) return nProofOfWorkLimit;
// Only change once per interval if ((pindexLast->nHeight+1) % nInterval != 0) { // Special difficulty rule for testnet: if (fTestNet) { // If the new block's timestamp is more than 2* 10 minutes // then allow mining of a min-difficulty block. if (pblock->nTime > pindexLast->nTime + nTargetSpacing*2) return nProofOfWorkLimit; else { // Return the last non-special-min-difficulty-rules-block const CBlockIndex* pindex = pindexLast; while (pindex->pprev && pindex->nHeight % nInterval != 0 && pindex->nBits == nProofOfWorkLimit) pindex = pindex->pprev; return pindex->nBits; } }
return pindexLast->nBits; } --> Chain is still vulnerable to coaster exploit, in fact even more so because of the faster retarget Code for exploit (Unix, Python 2.7) from subprocess import Popen, PIPE, STDOUT import time import json import math
class Min(object): def __init__(self, blocks): self.blocks = blocks
scan_time = 5
while(True): ### Get the initial block number from mincoind, store in output_j['blocks'] cmd = './mincoind getinfo' ### Command for dumping info from mincoind in json format; we use this lots p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) ### Execute command output = p.stdout.read() ### Read the stdout that output gives us output_j = json.loads(output) ### Convert from json to python values; we call block number using the class given above print("Current block is " + str(output_j['blocks']))
if (math.floor(output_j['blocks']/720) % 2 == 0): ### During exploit period of 720 blocks, mine MinCoin print ("Exploit block, mining mincoin...")
mincoin_config = open('minmine.conf','r') card_config = open('cardconf.conf','r') configuration = open('litecoin.conf', 'w')
### Copy the reaper configuration to litecoin.conf for mincoin for line in mincoin_config: configuration.write(line) for line in card_config: configuration.write(line)
mincoin_config.close() card_config.close() configuration.close()
miner_cmd = './reaper' ### Command for your miner to mine NVC miner_thread = Popen(miner_cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
### Loop below checks to see when block we're on, terminates miner if we are on an off number block while(True): p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) output = p.stdout.read() output_j = json.loads(output) if not(math.floor(output_j['blocks']/720) % 2 == 0): miner_thread.terminate() break else: print("Block height still in exploit period, mining mincoin.") time.sleep(scan_time)
else: ### Block is not exploit, mine something else print ("Non-exploit block, mining another chain...")
mincoin_config = open('elsemine.conf','r') card_config = open('cardconf.conf','r') configuration = open('litecoin.conf', 'w')
### Copy the reaper configuration to litecoin.conf for other chain for line in mincoin_config: configuration.write(line) for line in card_config: configuration.write(line)
mincoin_config.close() card_config.close() configuration.close()
miner_cmd = './reaper' ### Command for your miner to mine something else; the same here because we use reaper miner_thread = Popen(miner_cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
### Loop below checks to see when block we're on, terminates miner if we are on an exploit number block while(True): p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) output = p.stdout.read() output_j = json.loads(output) if (math.floor(output_j['blocks']/720) % 2 == 0): miner_thread.terminate() break else: print("Block not exploit height, mining another chain.") time.sleep(scan_time) Code for exploit (Windows, Python 2.7) from subprocess import Popen, PIPE, STDOUT import time import json import math
class Min(object): def __init__(self, blocks): self.blocks = blocks
scan_time = 5
while(True): ### Get the initial block number from mincoind, store in output_j['blocks'] cmd = 'mincoind.exe getinfo' ### Command for dumping info from mincoind in json format; we use this lots p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) ### Execute command output = p.stdout.read() ### Read the stdout that output gives us output_j = json.loads(output) ### Convert from json to python values; we call block number using the class given above print("Current block is " + str(output_j['blocks']))
if (math.floor(output_j['blocks']/720) % 2 == 0): ### During exploit period of 720 blocks, mine MinCoin print ("Exploit block, mining mincoin...")
mincoin_config = open('minmine.conf','r') card_config = open('cardconf.conf','r') configuration = open('litecoin.conf', 'w')
### Copy the reaper configuration to litecoin.conf for mincoin for line in mincoin_config: configuration.write(line) for line in card_config: configuration.write(line)
mincoin_config.close() card_config.close() configuration.close()
miner_cmd = 'reaper.exe' ### Command for your miner to mine NVC miner_thread = Popen(miner_cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
### Loop below checks to see when block we're on, terminates miner if we are on an off number block while(True): p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) output = p.stdout.read() output_j = json.loads(output) if not(math.floor(output_j['blocks']/720) % 2 == 0): miner_thread.terminate() break else: print("Block height still in exploit period, mining mincoin.") time.sleep(scan_time)
else: ### Block is not exploit, mine something else print ("Non-exploit block, mining another chain...")
mincoin_config = open('elsemine.conf','r') card_config = open('cardconf.conf','r') configuration = open('litecoin.conf', 'w')
### Copy the reaper configuration to litecoin.conf for other chain for line in mincoin_config: configuration.write(line) for line in card_config: configuration.write(line)
mincoin_config.close() card_config.close() configuration.close()
miner_cmd = 'reaper.exe' ### Command for your miner to mine something else; the same here because we use reaper miner_thread = Popen(miner_cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
### Loop below checks to see when block we're on, terminates miner if we are on an exploit number block while(True): p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) output = p.stdout.read() output_j = json.loads(output) if (math.floor(output_j['blocks']/720) % 2 == 0): miner_thread.terminate() break else: print("Block not exploit height, mining another chain.") time.sleep(scan_time) Requires the following files to exist: mincoind executable that is running prior to executing the python code above reaper executable reaper.conf (configured as per normal) Requires reaper and mincoind to be in the same directory minmine.conf: host minecoinhost port ???? user username pass password elsemine.conf (mines litecoin or whatever with reaper) host litecoinhost port ???? user username pass password cardconf.conf (configuration for scrypt): protocol litecoin
worksize 256 vectors 1 aggression 20 threads_per_gpu 1 sharethreads 32 lookup_gap 2 gpu_thread_concurrency ####
|
|
|
Obviously it's great for you if you were mining 500 mincoin blocks at less than 0.001 difficulty. ![Roll Eyes](https://bitcointalk.org/Smileys/default/rolleyes.gif) If you guys really like the idea, I can fork it and put up a version that has 10 reward for the first 7 days or so and then jumps to 50 to give the difficulty a change to adapt. Then I can put up encrypted binaries and give everyone a chance to mine at the same time rather than this bullshit. Considering you were one of the first posters in here complaining about how you couldn't work out how to download the blockchain I doubt you could do much of anything. The difficulty doesn't matter. Satoshi was mining bitcoins using his celeron and we are mining them with GPUs and ASICs. Is it a premine if someone wakes up tomorrow and finds out about bitcoin? It's no different. Just because you couldn't figure out how to use the daemon you like to call premine or scam or whatever. Considering there is no exchange for mincoins if you truly want to be a "First adopter" I'm sure you could buy all of them for 10btc , but you don't want to and that is your own loss. Tried the windows build, didn't work. Didn't feel like building the linux version. *shrugs* Forking the chain only requires me to 1) Change the genesis block and the channel on freenode the chain connects to 2) Change the 2 lines that give you 10% of the coins in the first few days It's a shame I have to work or I'd do it right now. It sounds like you're the author though.
|
|
|
I've had something in mind for a while, just need people with the time to code. I can write the technical specifications and the pseudocode algorithms.
|
|
|
Not sure what these guys are complaining about. They released it on IRC and here and anyone who wanted to mine could. I joined about block 250 which is pretty early and mined about 10000 MNC on my 5770 using CGMINER!
A premine implies no one else could have mined it, well I joined the network about ~10 minutes after it started and began mining, so a premine this isn't.
If anyone wants to sell some more mincoins I'm happy to buy for about 0.0001 BTC each. I like the fact only 10 million are made compared to other coins. Gives me a chance to get a good amount while no one values them.
Obviously it's great for you if you were mining 500 mincoin blocks at less than 0.001 difficulty. ![Roll Eyes](https://bitcointalk.org/Smileys/default/rolleyes.gif) If you guys really like the idea, I can fork it and put up a version that has 10 reward for the first 7 days or so and then jumps to 50 to give the difficulty a change to adapt. Then I can put up encrypted binaries and give everyone a chance to mine at the same time rather than this bullshit.
|
|
|
I would try downclocking your card too to something like 500 mhz core and 800 mhz memory and seeing if it runs too, like I said it may be a hardware issue. Barring this and passing the OCCT mem test I would reinstall windows.
|
|
|
hey tacotime i really appreciate your fork it's helped me out alot. thanks for all your time and effort. i only have one problem. i can crank the intensity all the way up to 20 and it says my hash rate continues to climb all the way up to 20, but i can't tell if i'm getting any hardware errors or not. is there any way in guiminer to see if you are getting any hardware errors? or maybe this would be a nice feature you could add in the future. i'm using a 6870 and a 6970 and getting 321kh/s and 460kh/s respectively with cgminer. when i check my hash rate on the mining pool it jumps around alot it can go 100kh/s + or - my hash rate in guiminer. so it's hard to tell if there are any hardware errors from that or if i'm getting the fully stated hash rate.
Hi, I may add it in the future, it's nice to see if you can see HW errors. Usually with 6xxx cards the settings I show throw few errors though, but sometimes setting at 20 can cause more than setting at 18 or 19
|
|
|
Vardiff is now active ! For the next few min you may see your (and the pools) hashrate swing around ... once the miners get settled on a decent difficulty everything will show normal again. Minimum diff is 32.
Sweet! edit: can verify that it works well so far, my 1.6 MH/s rig is at diff 231
|
|
|
Something might be wrong with the card. Try mining bitcoin, as well as checking for RAM errors with OCCT's GPU test.
|
|
|
Umm, that looks like the current height.
If we can see what the difficulty was at the first block, we can determine how fast blocks were generated. Right now I see one or two blocks a minute with getinfo.
Even with 1 MH, you could probably get hundreds of blocks in an hour, I think.
static CBigNum bnProofOfWorkLimit(~uint256(0) >> 16); // mincoin: starting difficulty is 1 / 2^15 or difficulty = 0.000030517578125 Difficulty adjusts twice per day, to a maximum of while (nTime > 0 && bnResult < bnProofOfWorkLimit) { // Maximum 400% adjustment... bnResult *= 4; // ... in best-case exactly 4-times-normal target time nTime -= nTargetTimespan*4; } 400%!So if our benevolent preminers went whole hog on the network, the maximum difficulty by block 2880 (when reward went down to 50) would be a whopping 0.0078125! Show's over, go home folks.
|
|
|
I don't think this is the case. At least, the smallest block count I saw was 532.
Someone needs to verify the blockchain.
The thread already did; BitcoinMiner: proof-of-work found hash: 000000be3e5210d1d5119ba86fdda33d1d2cf7510a56b9dd75d80f375a7c004f target: 000000ffff000000000000000000000000000000000000000000000000000000 CBlock(hash=db60713d08da1541cee6, PoW=000000be3e5210d1d511, ver=1, hashPrevBlock=29ea7a52650b27963943, hashMerkleRoot=73044f8d15, nTime=1364958696, nBits=1e00ffff, nNonce=181536064, vtx=1) CTransaction(hash=73044f8d15, ver=1, vin.size=1, vout.size=1, nLockTime=0) CTxIn(COutPoint(0000000000, -1), coinbase 04e89d5b510101062f503253482f) CTxOut(nValue=50.00000000, scriptPubKey=033dacce7ae6c3ecff6ce51c4b84c9) vMerkleTree: 73044f8d15 generated 50.00 keypool keep 4 AddToWallet 73044f8d15 new connection timeout SetBestChain: new best=db60713d08da1541cee6 height=2921 work=5423317824 date=04/03/13 03:11:36 ProcessBlock: ACCEPTED If that's not a clear indication of a premine I don't know what is
|
|
|
Nope this is the first day ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) No, day 3. The block reward is already 50. Let's play calculate the premine! 1 block/min First 24 hours, 1440 blocks at 500 mincoin each = 720,000 Next 24 hours, 1440 blocks at 100 mincoin each = 144,000 Only 10 million mincoins will be made How generous of the authors to give themselves almost 10% of the total money supply in the first 48 hours!
|
|
|
poclbm is the python opencl bitcoin miner, it doesn't mine litecoins
are you using guiminer-scrypt? see sig
|
|
|
I guess that makes it a pretty epic premine, then.
|
|
|
guiminer-scrypt lets you make reaper miners as well as cgminer miners
Does it even crash with -I 10?
|
|
|
|