Bitcoin Forum
February 07, 2025, 08:52:13 PM *
News: Community Awards voting is open
 
  Home Help Search Login Register More  
  Show Posts
Pages: [1]
1  Alternate cryptocurrencies / Altcoin Discussion / How to determine POW algorithm from source code on: March 29, 2017, 03:01:11 AM
Hi everyone,

I've been scratching my head over this one in the past few months, and I hope some wise person can provide help.  When new coins are created, many have with little documentation of essential parameters like their POW algorithm.  Many times I'll see a new market appear on an exchange and the only information about the coin is their source code (looking at you, C-CEX).  I've learned how to parse the code for variables like block time and number of confirmations, but I haven't found a way to determine the POW algorithm of any coin just by looking at the source code.  Does anyone know if this is possible to do, and if so, where could I find it in source code?

I appreciate any insights that can be provided.
2  Alternate cryptocurrencies / Mining (Altcoins) / Need technical asistance with implementing merge mining on: October 10, 2014, 08:39:57 PM
I'm working on enabling merge mining for the Prohashing mining pool. I've spent 45 hours trying to get the dogecoin daemon to accept a merge mined block, with no success. I'm posting my progress in this post, in the hopes that someone who has experience in merge mining can figure out what is wrong.  I'm willing to pay the first person $50 equivalent in in BTC who can tell me what is wrong with what I am doing.  If there are multiple issues, then I'll split the reward amongst all the helpers.

I simplified the procedure by removing the parts of the algorithm that are irrelevant.

Here is the procedure I used:

1.  Get the latest block from the litecoin testnet and store its data in memory.
2.  Call getauxblock against the dogecoin testnet.  Since this example is only going to merge mine dogecoins, we ignore "chainid" and store only "hash" in memory.  "Target" is obtained by calling getblocktemplate, because we need difficulty and other things from the full template for calculating payouts.  "Target" in getauxblock and in getblocktemplate are reversed, so the appropriate conversion is made.
3.  When a block is found for the litecoin testnet, check to see whether the target is less than the dogecoin testnet's target.  If so, we call getauxblock again, passing the "hash" exactly as provided in step 2, without any modification, and the serialized block data as the second parameter.  The help for the command states that the parameters are "getauxblock [hash] [auxpow]."

The result is that the litecoin blocks are always accepted, and the dogecoin blocks are always rejected with the following errors:

Code:
2014-10-09 02:37:45 ERROR: Aux POW merkle root incorrect
2014-10-09 02:37:45 ERROR: AUX POW is not valid

Here is an example "auxpow" serialized block that is submitted to the dogecoin damon.  I annotated it as I think is correct, but keep in mind that the annotations could be incorrect and you shouldn't assume that I have identified the correct things to insert or the correct order.  In the real submission, there are no spaces or characters between the separated sections.

Litecoin coinbase transaction:
Code:
02000000010000000000000000000000000000000000000000000000000000000000000000ffffffff52034e5106062f503253482f04c93c3754fabe6d6d50868b4be2c645d5b763f8b2f137e87e48ed7154db9e7a5083a4d4582fdfbeec010000000000000008f8000006190000000c2f50726f68617368696e672f000000000100f2052a010000001976a914c7045a47e3aff57c28a728c7339150efc879555488ac000000000a50726f68617368696e67

Double-SHA-256 hash of the litecoin block header:
Code:
0309e093c93a7560ecde4128c13371ee4778bd195a03681e57aeacd694094600

The length of the merkle branch from the litecoin block, which is the same as the branch sent out in the stratum protocol.  Because this litecoin block has no transactions, the length of the merkle branch is zero:
Code:
00

The litecoin merkle branch, if there were one, would go here in a series of hashes.  Since there are no transactions in the block other than the coinbase transaction, we append nothing here.
Code:
[There is nothing here]

The "branch side mask" of the coinbase transaction, which is always zeroes:
Code:
00000000

The auxiliary branch count, which is zero because we are only mining dogecoins in this example:
Code:
00

The auxiliary branch index, which is also zero because we are only mining dogecoins:
Code:
00000000

The block header of the litecoin block, in full:
Code:
0000000254a8f234ca1f2448ca9a85dcade4697e1496fa46a22abe8ffb0cfc604a4d11371b31c4accb59203d465c70588f1fd68eddd93e25da83101bbaa68aa02244800454373c611d02324089d3403e


I'll also break down my understanding of what is supposed to be placed in the litecoin coinbase transaction to signify that we are merge mining dogecoins.  Here is my understanding of the litecoin coinbase transaction's merge mining portion, which you can find embedded within the coinbase transaction printed above:

This string signifies that we are merge mining.
Code:
fabe6d6d

The "hash" parameter obtained from the dogecoin daemon's getauxblock command, verbatim:
Code:
50868b4be2c645d5b763f8b2f137e87e48ed7154db9e7a5083a4d4582fdfbeec

The following are used for when multiple merge-mined coins are being sought at the same time, but since we are only merge-mining dogecoins, this is a 4-byte 1 followed by a 4-byte 0.
Code:
0100000000000000


Here are some of the things I tried and the references I used.

1.  https://en.bitcoin.it/wiki/Merged_mining_specification seems to be the primary source on merge mining.  However, I noticed that some of the examples in the document don't work with dogecoins.  For example, the "block hash" in the auxiliary proof of work that is submitted to namecoin in that document (the second field) looks like the proof of work hash for the block, since it ends in a string of zeroes.  Looking at that, I tried placing the scrypt proof of work hash in that field, but it didn't work.

My understanding of the "block hash" is that when you call getblock from a daemon, you provide the double SHA-256 hash of the block header, not the scrypt proof of work hash.  The "block hash" is not the scrypt proof of work hash.

2.  I tried reversing various hashes in the fields of the blocks on the theory that endianness was the problem, but 16 different permutations didn't work.  I tried reversing the dogecoin auxiliary hash, the block hash, the merkle branch hashes (when there are transactions in the litecoin block, which there are not in this example), and even the block header of the litecoin block.  None of these things worked.  I couldn't find a permutation of reversed and non-reversed hashes that made any difference.  Of course, it is possible that, since there are so many permutations, that I missed the correct one and the hashes are not in the correct endianness in the example.

3.  At http://forum.namecoin.info/viewtopic.php?f=7&t=368, there is a poster who offers advice on how to submit merge mined blocks to getauxblock, although that information is specific to namecoin.  I reviewed what I was doing and it appears to be identical to what he is suggesting.

4.  After reviewing the documentation for what a merkle tree is, it took me an entire day to figure out what happens when there are an odd number of transactions in the tree.  It turns out that the algorithm is to hash the nodes with themselves.  Seeing this, I took the example above and I tried specifying the length of the "merkle branch" for the coinbase transaction as "01," and then provided the hash of the coinbase transaction as the only hash in the "merkle branch."  The long-shot idea was that perhaps the dogecoin daemon was looking to hash the coinbase transaction with itself, and use that as the root of the tree.  It still returned the same error.

5.  In the litecoin coinbase transaction, the 44-byte merge mining part (fabe + "mm") is preceded by the length (44, or 2c) in some examples, but not in others.  Apparently, this length is not necessary if the merge mining string is provided within the first 20 characters of the script, so I left it out in this example.  However, in previous iterations, I added an additional byte of "2c" before the merge mining portion and it did not result in any difference in this error.

6.  In these examples, I always assumed that the merkle branches are double-sha256 hashes, even for scrypt coins.  All the documentation I read seems to indicate that in scrypt, the only difference is the algorithm used to verify work.  From what I can tell, the rest of the block still is stored using SHA-256 hashes, as is the hash of the block headers and even the hashes of the transactions.  If there is some difference between scrypt and SHA-256 in how the merge mining headers are stored, that could be a clue.


Thanks to anyone who is willing to try to point out what is wrong here.  We have about 15 features ready for release and merge mining is the only one that is holding back the release.  Your help is greatly appreciated and will be rewarded.
3  Alternate cryptocurrencies / Pools (Altcoins) / [POOL]Prohashing – Professional cryptocurrency mining made simple on: September 19, 2014, 03:59:09 PM

 
Prohashing is a 12-algorithm multipool that provides maximum profitability, pays out in over 300 coins, and has full transparency of operations.


Why choose Prohashing?

 
Simple and Consistently Profitable

At Prohashing we perform pay per share payouts, so when you submit a share, you earn money for that share in the coin you want to earn.  It’s as simple as that.  There is no need to perform manual trades, and unlike other multipools, your earnings are fixed as soon as you submit a share.  Your earnings will never decrease due to a decline in a mined coin’s exchange rate.  If you want to press your luck, pay-per-last-n shares and solo mining modes are available too.
 
Payout in any coin or even US dollars

Prohashing is the one site where you can payout in any of over 200 cryptocurrencies, US dollars (though integrated Coinbase support), or any mixture of currencies.  You can be paid in coins that require special interfaces and which are not widely supported among pools, like USDC, TRON, ETH, EOS, and more.
 
The most detailed statistics available.  Track the performance of your miners live!

Prohashing offers extremely detailed statistics presented in intuitive charts.  We provide live data about your miners that is updated in real-time.  See what coins you are mining, view blocks as soon as they are found, see PPLNS statistics change as shares are discovered, and watch your balances increase in real-time.  We also track your electricity usage in addition to your payouts, so you can always know how much you are spending to keep your miners online.
 
Advanced coin selection and trading algorithm

Prohashing uses a proprietary coin selection and trading algorithm to consistently maximize profitability.  We distribute our hashrate among multiple coin networks at once, allowing us to mine both large and small coin networks without overloading them.  Other multipools send their entire hashrate to coins, quickly skyrocketing their difficulty and causing them to become unprofitable.  By limiting hashrate assigned to coin networks, we can mine dozens of smaller coin networks throughout the day and earn more money than competitors.  We also perform all trades in near real-time.  Our advanced trading algorithm sells coins as soon as they mature rather than waiting multiple hours like other multipools.

Besides earning more money, our operations are much friendlier to coin developers and coin holders than conventional multipools.  At Prohashing we recognize that we can earn more money in the long term by keeping coin networks thriving rather than attacking them with hashrate and large dumps of coins on exchanges.  We also provide free block explorers (https://prohashing.com/explorer) to all scrypt coins on the pool and select payout coins.

Portfolio targeting

If your goal is to build a portfolio of coins, portfolio targeting can help you do it.  Instead of paying constant proportions of coins, portfolio targeting balances a portfolio by paying in the coins that are cheapest.  Your earnings are maximized by "earning the dips" and making sure that too much of your money isn't all invested in one coin.

Charity mining

Give back to the community by donating a portion of your profit to charity!
 
Experienced personnel and full-time commitment

Established in December 2013, we’re here to stay.  Steve and I are work full-time staff dedicated to adding new features to the pool, keeping the pool online, and maintaining coins.  We maintain an active an open forums at forums.prohashing.com, can easily be contacted at contact@prohashing.com, and have an open phone number 814-201-6031.
 
4  Alternate cryptocurrencies / Mining (Altcoins) / Request for testers of new scrypt multi-pool on: August 27, 2014, 12:52:45 AM
I am looking for a few users to act as testers and mine for a new multi-pool.    Right now, we are concentrating on scrypt mining.

The goal of our pool is to exceed all existing multi-pools in stability, transparency, and ease of use.  This pool has been in development for nine months and has been testing privately for three months.  We are now ready to enter expanded testing to discover any final issues in order to ensure a successful public launch later this year.

Among other features, our pool introduces a new coin switching and trading algorithm that makes our pool more profitable than any other scrypt pool.  While the payout varies with the price of altcoins, our payouts are consistently higher than other scrypt multi-pools.  The current payout is $0.37 per MH/s per day, which is 20% higher than the next best pool.

As a tester, all that we would ask of you is that you connect your scrypt miner(s) to the pool and provide us with feedback on the pool’s features and any errors that you may encounter during testing.  There is no requirement for the speed of your miner.

In you are interested in testing, you can take a look at the site at prohashing.com.  Please send me a private message if you want to participate and I can set up an account for you to start mining.

Thanks for your interest!
Pages: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!