Skip to content
John Tromp edited this page May 17, 2020 · 33 revisions

General

What is MimbleWimble?

A blockchain protocol that provides privacy and scalability gains by verifying that all tx are valid without needing to store the entire history of the chain.

What is Grin?

A lightweight implementation of the MimbleWimble protocol.

How is Grin similar to Bitcoin?

Both are output-based and use a PoW consensus model. Check out Grin for Bitcoiners for more info.

Could grin ever support or make use of... ☑ Probably, or ☐ Probably not

Where can I check the block height?

HTTP GET /v1/chain on a public peer node or see the grin explorers and scanners in the Community Projects section.

Is there a block size limit? Target mean block time?

Target mean block time is 1 block per 60 seconds. The size is limited by transaction "weight", though there is also a hard cap on the order of tens of MB.

How does Grin scale?

Very well on the storage layer thanks to transaction cut-through! Slightly better than Bitcoin on transaction throughput but still not an order of magnitude better.

How do I try Grin?

Download the Grin binary

https://github.com/mimblewimble/grin/releases

Where can I build Grin myself?

Check out the Build Docs.

Where can I find Grin wallets?

See this rolling list of community created wallets.

Money and Monetary Supply

What is Grin's monetary policy regarding emission rate and block rewards?

https://github.com/mimblewimble/docs/wiki/Monetary-Policy

What are the fees and how do they work?

https://github.com/mimblewimble/grin/wiki/fees-mining

Is there an ICO?

No.

Is there a founders' treasury?

No.

Is there a pre-mine?

No.

Is there an airdrop?

No.

Will there be a way to verify proof of payments?

  • You can attach receipts or order IDs through the slate that comes with every tx
  • Every tx is only known to the sender and the recipient and the network merely verifies that tx are valid. If you're part of a tx you can log that info and use it to prove that a tx is valid and thus definitely happened.

Mining

What are the requirements for mining?

How does mining work?

I’m running a grin node, it seems like I’m synced, but I’m not mining anything, why is that?

You need to clone, build, and run grin-miner separately from your grin node in order to mine.

Can I just run grin-miner?

You need to run both the grin node and grin-miner. Alternatively, you can point your miner to someone else’s node (if they’ve made the stratum server publicly available), but this also means that they will receive the block rewards.

My miner is stuck. I'm getting "missing field job_id" or "Starting miner awaiting first graph time…" message.

This is a known issue that has been fixed. Please rebuild both grin node and grin-miner from master and try again.

Is there a miner that works for Windows?

At the moment, GrinGoldMiner is your best bet.

Can I mine with multiple GPUs?

Yes, configure your grin-miner.toml with multiple devices.

Can Grin be mined with a pool?

Yes. Grin-pool is currently in alpha, instructions for trying it here.

What's the minimum memory requirement to mine with a GPU?

GrinGoldMiner has been confirmed to work with 8GB currently. The aim is to bring the minimum requirement down to 4GB prior to Mainnet launch.

What's best to mine Cuckoo Cycle with, CPU or GPU?

GPU will beat CPU in general.

What's a valid Cuckoo Cycle PoW solution?

A single 42-cycle in a graph of at least 2^30 nodes, i.e. a cycle of length 42.

What’s the difference between a finding a share and finding a block?

The network can operate at a fairly high difficulty in order for blocks to be found on average every minute. To allow miners to contribute intermediate work, mining pools accept solutions that hash at a much lower difficulty. This is called a share. On average, a certain number of shares will result in finding a block. So if the network difficulty is D and the mining pool difficulty is d with D > d, on average D/d shares will be required for the pool to find a block.

The size of the graph?

Yes, measured as the number of nodes of the graph you find that single 42-cycle in. The lowest number of nodes that is allowed is 2^30, which we call cuckoo30. Graphs with more nodes in them require more memory and effort to solve, which is why we scale the difficulty with the size. For cuckooN the scaling factor is given by (N-1)*2^(N-30). This means cuckoo30 solutions are scaled by 29, cuckoo31 by 60, cuckoo32 by 124 etc.

What’s the minimum graph size in order for my share to be accepted as a valid block?

The minimum size is currently 2^30, or cuckoo30. Solutions in graphs with larger nodes than the minimum threshold are also accepted. In the future, this threshold might be increased via soft forks.

grin-miner tells me “Solution Accepted”, it’s listed as accepted in the grin node, but why have I still not received any block rewards?

The miner sends any valid cuckoo solution to the grin node. A share will be accepted even if it is of higher difficulty than the network difficulty. A share is not a block.

I don’t get it, why does grin-miner submit shares to the grin node that are below what's accepted?

Mining pools will use the number of shares to estimate your graph rate and thus your payout.

What does GPS in mining mean, i.e. 1 GPS?


That’s 1 Graph Per Second, i.e. trying one random graph in one second to see if it’s a valid solution.

How is total network GPS derived from network difficulty?

On average you need to search 42 graphs to find a 42-cycle.

Also on average, you need to find diff/scale 42-cycles to solve a block, where

diff = current network difficulty, and
scale = (N-1) * 2^(N-30) for cuckooN cycles.
(e.g. 29 for cuckoo30, 60 for Cuckoo31,  and 124 for Cuckoo32)

Finally, graphs per second is graphs per block divided by the blocktime in seconds.

Total Network GPS is then

gps = 42 * (diff/scale) / 60

As an example, let's assume:

  • Everyone is mining cuckoo30;
  • Current network difficulty is 241;

Then, the network GPS is 42 * 241/29 / 60 ~5.82.

If total network GPS is 5.82 in the above example, and I am currently mining at 0.582 GPS on my own, does that mean I can expect to win 10% of all blocks roughly?

Yes. You're then essentially contributing 10% of all the network mining power.

Using the CLI Wallet

What do I need to do in order to be able to receive grins?

  1. Set api_listen_interface = "0.0.0.0" in your grin-wallet.toml configuration file.
  2. Ensure port 3415 is open on the device that is to receive grins.

How can I check if the port is open?

Visit http://canyouseeme.org from your device and follow instructions.

My port is closed, what do I do?

Check that any firewalls set up on your device are letting through connections and that you have set up port forwarding on your router. Google "port forward" and the model and make of your router for further instructions. Some have also had success setting up mapping using the portmapper tool behind a router they don't know the admin password to.

What is “Immature Coinbase”?



After you’ve successfully mined your block, another 1000 blocks need to be found in order for your coinbase to mature. Prior to this occurring, the outputs cannot be spent.

I have only mined, but my wallet balance is 2880.016. Where did the 0.016 grins come from?

These are transaction fees. You get paid for including a transaction into a block that you have successfully mined. If you run grin wallet outputs you will see for which block that was, and can also check it on one of the block explorers.

Privacy and Security

How does Grin compare to other privacy-preserving zero-knowledge blockchains like Zcash?

https://github.com/mimblewimble/grin/wiki/Grin-and-MimbleWimble-vs-ZCash

Is Grin quantum safe?

See this conversation.

Where can I learn more about the privacy-preserving properties of Grin?

See the privacy primer

Contributing

I want to contribute. Where do I begin?

That's great!

  • The wiki documentation can always use improvement. Anyone is free to just jump in and edit that directly.
  • We also have more technical documentation that is not on the wiki. Here you can’t edit directly, but submit a pull request that is then peer reviewed before merged. A good place to start is to review the technical documentation table of contents and improve where you can.
  • If you want to get your hands dirty, you’re also free to just submit a PR to any area of the project, the list of open issues tagged with "help wanted" is probably a good place to start. Also check that there are not any open pull requests that conflict to avoid duplication of effort.

How can I understand what's currently being worked on?

  • Look at the open pull requests.
  • There is a bi-weekly dev meeting every other Tuesday at 15:00 UTC (on odd-numbered weeks) on the /dev channel on Gitter. Feel free to listen in. Notes from these meetings are checked into grin-pm.
  • @yeastplume is publishing a weekly progress update of his work in the forum, usually on Fridays.
Clone this wiki locally