Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DOC] Translation some files in doc dir. #2750

Merged
merged 51 commits into from
Apr 12, 2019
Merged
Changes from 1 commit
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
26b181e
add md files for translation.
Feb 20, 2019
3fdb63b
start to translation fast-sync, code_structure. add file build_KR.md…
Feb 21, 2019
ec1aec0
add dandelion_KR.md && simulation_KR.md for Korean translation.
Feb 24, 2019
c3d2b7f
Merge branch 'code_structure_and_fast_sync' of https://github.com/cmc…
Feb 24, 2019
c4fb3d1
add md files for translation.
Feb 20, 2019
6aaa7ce
start to translation fast-sync, code_structure. add file build_KR.md…
Feb 21, 2019
03459e6
add dandelion_KR.md && simulation_KR.md for Korean translation.
Feb 24, 2019
3e54331
Merge branch 'code_structure_and_fast_sync' of https://github.com/cmc…
Feb 28, 2019
04ba28f
remove some useless md files for translation. this is rearrange set u…
Mar 1, 2019
8bbebc1
add dot end of sentence & translate build.md in korean
Mar 1, 2019
5d68e3d
remove fast-sync_KR.md
Mar 1, 2019
30e483b
Merge branch 'master' of https://github.com/mimblewimble/grin into co…
Mar 1, 2019
79f764f
finish build_KR.md translation
Mar 1, 2019
14223f7
finish build_KR.md translation
Mar 1, 2019
4012750
finish translation state_KR.md & add phrase in state.md to move othe…
Mar 2, 2019
cbb3fca
translate blocks_and_headers.md && chain_sync.md in Korean
Mar 4, 2019
d6ae0b4
Merge branch 'master' of https://github.com/mimblewimble/grin into co…
Mar 4, 2019
fcc4919
add . in chain_sync.md , translation finished in doc/chain dir.
Mar 4, 2019
4b5a6a1
fix some miss typos
Mar 4, 2019
6ccaf10
start to translate dandelion.md & simulation.md in Korean.
Mar 5, 2019
d619c21
[WIP] translation
Mar 12, 2019
52d6c0f
Merge branch 'master' of https://github.com/mimblewimble/grin into da…
Mar 12, 2019
0f3ae0b
[WIP] files add.
Mar 12, 2019
81988ab
[WIP] dandelion simulation
Mar 13, 2019
befebb9
finish pruning translation
Mar 14, 2019
27f1684
doc/dandelion translation in Korean finish
Mar 14, 2019
c432c5e
start to translation mmr, merkle, switch commitment in Korean
Mar 14, 2019
adc37cb
[WIP] merkle_KR.md
Mar 17, 2019
04c1d6f
Merge branch 'master' of https://github.com/mimblewimble/grin into mm…
Mar 17, 2019
445e910
Merge branch 'master' of https://github.com/mimblewimble/grin into mm…
Mar 19, 2019
ecf69c9
finish translation mmr.md & merkle.md
Mar 19, 2019
b0b9cf7
delete [WIP]switch_commitment_KR.md
Mar 19, 2019
9f3aa7d
Merge branch 'master' of https://github.com/mimblewimble/grin into mm…
Mar 25, 2019
2ba711a
Merge remote-tracking branch 'upstream/pool_pow_grin4bitcoin' into po…
Mar 28, 2019
ce3f537
add pow_KR.md for translation
Mar 28, 2019
c2d4790
finish translation grin4bitcoiners
Mar 30, 2019
4d2a7aa
fix for merge
Mar 30, 2019
75fdc87
fix for merge
Mar 30, 2019
e0ed8b6
fix for merge
Mar 30, 2019
caeed6d
fix for merge
Mar 30, 2019
8ce2c59
,
Mar 31, 2019
a8e1b8d
Merge branch 'master' of https://github.com/mimblewimble/grin into po…
Apr 4, 2019
e262d64
Merge branch 'master' of https://github.com/mimblewimble/grin into po…
Apr 5, 2019
2e2f95f
Merge branch 'master' of https://github.com/mimblewimble/grin into po…
Apr 7, 2019
4f0af33
Merge branch 'pool_pow_grin4bitcoin' of https://github.com/cmcm2222/g…
Apr 7, 2019
e6ccca9
Merge branch 'master' of https://github.com/mimblewimble/grin into po…
Apr 12, 2019
160a836
Merge branch 'pool_pow_grin4bitcoin' of https://github.com/cmcm2222/g…
Apr 12, 2019
6133a78
POW & grin4bitcoiner.md translated in Korean.
Apr 12, 2019
06aecb7
fix for merge
Apr 12, 2019
b35962f
Merge branch 'master' of https://github.com/mimblewimble/grin into po…
Apr 12, 2019
6b9f8d2
fix some typo and cargo.lock
Apr 12, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add md files for translation.
cmcm2222 committed Feb 28, 2019
commit c4fb3d1dd02f554a67c6c92ef244a5a73240869b
61 changes: 61 additions & 0 deletions doc/code_structure_KR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Grin code structure

Grin is built in [Rust](https://www.rust-lang.org/), a memory safe, compiled language. Performance critical parts like the Cuckoo mining algorithm are built as plugins, making it easy to swap between algorithm implementations for various hardware. Grin comes with CPU and experimental GPU support.
markdown
## Files in project root

List of files tracked in `git` and some files you'll create when you use grin.

- [CODE_OF_CONDUCT](../CODE_OF_CONDUCT.md) - How to behave if you want to participate. Taken from rust. Slightly modified.
- [CONTRIBUTING](../CONTRIBUTING.md) - How to help and become part of grin.
- [Cargo.toml](../Cargo.toml) and Cargo.lock (locally created, _not_ in git) - defines how to the project code is to be compiled and built
- [LICENSE](../LICENSE) - Apache 2.0 license
- [README](../README.md) - The first document you should read, with pointers to find more detail.
- [rustfmt.toml](../rustfmt.toml) - configuration file for rustfmt. Required before contributing _new_ code.

## Folder structure

After checking out grin, building and using, these are the folders you'll have:

- `api`\
Code for ApiEndpoints accessible over REST.
- `chain`\
The blockchain implementation. Accepts a block (see pipe.rs) and adds it to the chain, or reject it.
- `config`\
Code for handling configuration.
- `core`\
All core types: Hash, Block, Input, Output, and how to serialize them. Core mining algorithm, and more.
- `doc`\
All documentation.
- `servers`\
Many parts (adapters, lib, miner, seed, server, sync, types) that the `grin` server needs, including mining server.
- `keychain`\
Code for working safely with keys and doing blinding.
- `p2p`\
All peer to peer connection and protocol-related logic (handshake, block propagation, etc.).
- `pool`\
Code for the transaction pool implementation.
- `server`\
A folder you're [supposed to create](build.md#running-a-node), before starting your server: cd to project root; mkdir server; cd server; grin server start (or run) and it will create a subfolder .grin
- `.grin`
- `chain` - a database with the blockchain blocks and related information
- `peers` - a database with the list of Grin peers you're connected to
- `txhashset` - contains folders kernel, rangeproof and output that each have a pmmr_dat.bin
- `src`\
Code for the `grin` binary.
- `store`\
Data store - Grin uses near-zero-cost Rust wrapper around LMDB, key-value embedded data store.
- `target`\
Where the grin binary ends up, after the compile and build process finishes.
In case of trouble, see [troubleshooting](https://github.com/mimblewimble/docs/wiki/Troubleshooting)
- `util`\
Low-level rust utilities.
- `wallet`\
Simple command line wallet implementation. Will generate:
- `wallet_data` - a database storing your "outputs", that once confirmed and matured, can be spent with the [`grin wallet send`](wallet/usage.md) command. (locally created, *not* in git)
- `wallet.seed` - your secret wallet seed. (locally created, *not* in git)

## grin dependencies

- [secp256k1](https://github.com/mimblewimble/rust-secp256k1-zkp)
Integration and rust bindings for libsecp256k1, and some changes waiting to be upstreamed. Imported in util/Cargo.toml.
24 changes: 24 additions & 0 deletions doc/fast-sync_KR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Fast Sync

*Read this in other languages: [Español](fast-sync_ES.md).*

In Grin, we call "sync" the process of synchronizing a new node or a node that
hasn't been keeping up with the chain for a while, and bringing it up to the
latest known most-worked block. Initial Block Download (or IBD) is often used
by other blockchains, but this is problematic for Grin as it typically does not
download full blocks.

In short, a fast-sync in Grin does the following:

1. Download all block headers, by chunks, on the most worked chain, as
advertized by other nodes.
1. Find a header sufficiently back from the chain head. This is called the node
horizon as it's the furthest a node can reorganize its chain on a new fork if
it were to occur without triggering another new full sync.
1. Download the full state as it was at the horizon, including the unspent
output, range proof and kernel data, as well as all corresponding MMRs. This is
just one large zip file.
1. Validate the full state.
1. Download full blocks since the horizon to get to the chain head.

In the rest of this section, we will elaborate on each of those steps.
58 changes: 58 additions & 0 deletions doc/grin4bitcoiners_KR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Grin/MimbleWimble for Bitcoiners

## Privacy and Fungibility

There are 3 main properties of Grin transactions that make them private:

1. There are no addresses.
2. There are no amounts.
3. 2 transactions, one spending the other, can be merged in a block to form only one, removing all intermediary information.

The 2 first properties mean that all transactions are indistinguishable from one another. Unless you directly participated in the transaction, all inputs and outputs look like random pieces of data (in lingo, they're all random curve points).

Moreover, there are no more transactions in a block. A Grin block looks just like one giant transaction and all original association between inputs and outputs is lost.

## Scalability

As explained in the previous section, thanks to the MimbleWimble transaction and block format we can merge transactions when an output is directly spent by the input of another. It's as if when Alice gives money to Bob, and then Bob gives it all to Carol, Bob was never involved and his transaction is actually never even seen on the blockchain.

Pushing that further, between blocks, most outputs end up being spent sooner or later by another input. So *all spent outputs can be safely removed*. And the whole blockchain can be stored, downloaded and fully verified in just a few gigabytes or less (assuming a number of transactions similar to bitcoin).

This means that the Grin blockchain scales with the number of users (unspent outputs), not the number of transactions. At the moment, there is one caveat to that: a small piece of data (called a *kernel*, about 100 bytes) needs to stay around for each transaction. But we're working on optimizing that as well.

## Scripting

Maybe you've heard that MimbleWimble doesn't support scripts. And in some way, that's true. But thanks to cryptographic trickery, many contracts that in Bitcoin would require a script can be achieved with Grin using properties of Elliptic Curve Cryptography. So far, we know how to do:

* Multi-signature transactions.
* Atomic swaps.
* Time-locked transactions and outputs.
* Lightning Network

## Emission Rate

Bitcoin's 10 minute block time has its initial 50 btc reward cut in half every 4 years until there are 21 million bitcoin in circulation. Grin's emission rate is linear, meaning it never drops. The block reward is currently set at 60 grin with a block goal of 60 seconds. This still works because 1) dilution trends toward zero and 2) a non-negligible amount of coins gets lost or destroyed every year.

## FAQ

### Wait, what!? No address?

Nope, no address. All outputs in Grin are unique and have no common data with any previous output. Instead of relying on a known address to send money, transactions have to be built interactively, with two (or more) wallets exchanging data with one another. This interaction **does not require both parties to be online at the same time**. Practically speaking, there are many ways for two programs to interact privately and securely. This interaction could even take place over email or Signal (or carrier pigeons).

### If transaction information gets removed, can't I just cheat and create money?

No, and this is where MimbleWimble and Grin shine. Confidential transactions are a form of [homomorphic encryption](https://en.wikipedia.org/wiki/Homomorphic_encryption). Without revealing any amount, Grin can verify that the sum of all transaction inputs equal the sum of transaction outputs, plus the fee. Going even further, comparing the sum of all money created by mining with the total sum of money that's being held, Grin nodes can check the correctness of the total money supply.

### If I listen to transaction relay, can't I just figure out who they belong to before being cut-through?

You can figure out which outputs are being spent by which transaction, but the trail of data stops here. All inputs and outputs look like random pieces of data, so you can't tell if the money was transferred, still belongs to the same person, which output is the actual transfer and which is the change, etc. Grin transactions are built with *no identifiable piece of information*.

In addition, Grin leverages [Dandelion relay](dandelion/dandelion.md), which provides additional anonymity as to which IP or client the transaction originated from, and allows for transactions to be aggregated.

### What about the quantum computaggedon?

In every Grin output, we also include a bit of hashed data, which is quantum safe. If quantum computing was to become a reality, we can safely introduce additional verification that would protect existing coins from being hacked.

### How does all this magic work?

See our [technical introduction](intro.md) to get started.