본문 바로가기
비트코인 Bitcoin

비트코인 백서 Bitcoin: A Peer-to-Peer Electronic Cash System

by 노화방지 Anti-aging Hairstyle 2021. 3. 28.
반응형

 

Satoshi Nakamoto

 

satoshin@gmx.com

www.bitcoin.org

 

Abstract.

 

A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution.

순수한 P2P 버전의 전자현금을 사용하면, 금융기관을 통하지 않고도 한 당사자가 다른 당사자에게 온라인 지불(payments)을 직접 보낼 수 있습니다.

 

솔루션의 일부로 디지털서명이 제공되지만, 이중-지출(double-spending) 방지를 위해 신뢰할 수 있는 제3자가 여전히 필요하면 주요 이점이 손실됩니다.

Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending.

 

We propose a solution to the double-spending problem using a peer-to-peer network.

P2P 네트워크를 사용하여 이중-지출 문제에 대한 해결책을 제안합니다.

 

이 P2P 네트워크는, 트랜잭션 진행중인 해시-기반 작업증명 체인으로 해시하여, 작업증명을 다시 실행하지 않고는 변경할 수 없는 레코드를 형성하여, 트랜잭션 타임스탬프합니다.

The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work.

 

The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power.

가장 긴(최장) 체인은, 목격된 일련의 이벤트에 대한 증거일뿐만 아니라, 이것이 최대 CPU 성능 풀에서 나왔다는 증거입니다.

 

대부분의 CPU 성능이, 네트워크를 공격하지 않는 노드에 의해 제어되는 한, 이들 CPU 성능은 최장 체인을 생성하고 공격자를 능가합니다.

As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers.

 

The network itself requires minimal structure.

P2P 네트워크 자체에는 최소한의 구조가 필요합니다.

 

메시지는, 최선의 노력으로 널리 알려지며, 노드는 마음대로 네트워크를 떠나고 다시 참여할 수 있으며, 사라진 동안 발생한 일의 증거로 최장 작업증명 체인을 인정합니다.

Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone.

 

1. Introduction

 

Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments.

인터넷에서의 상거래는 전자지불을 처리하기 위해, 신뢰할 수 있는 제3자 역할을 하는 금융기관에 거의 전적으로 의존하게 되었습니다.

 

이 시스템은 대부분의 거래에서 충분히 잘 작동하지만, 여전히 신뢰 기반 모델의 고유 한 약점으로 인해 어려움을 겪고 있습니다.

While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model.

 

Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes.

금융기관은 분쟁 중재를 피할 수 없기 때문에, 완전히 되돌릴 수 없는(비가역) 거래는 실제로 불가능합니다. *가역(원상회복) 거래가 가능.

 

중재비용은 거래비용을 증가시켜, 실질적 최소 거래 규모를 제한하고, 소규모 일상 거래 가능성을 차단하며, 비가역 서비스에 대해 비가역 지불을 할 수 있는 능력이 없어짐으로 인하여 더 많은 비용이 발생합니다. *비가역(원상회복불능) 서비스에 대해 원상회복시켜야 함에 따라 비용이 추가로 발생가능.

The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for nonreversible services.

 

With the possibility of reversal, the need for trust spreads.

가역(원상회복) 가능성 때문에, 신뢰의 필요성이 확산됩니다.

 

Merchants must be wary of their customers, hassling them for more information than they would otherwise need.

상인은 고객을 경계해야 하며, 그렇지 않은 경우 필요한 것보다 더 많은 정보를 요구해야 합니다.

 

A certain percentage of fraud is accepted as unavoidable.

특정 비율의 사기는 피할 수 없는 것으로 받아들여집니다.

 

이러한 비용과 지불 불확실성 물리적 통화를 사용하여 직접 피할 수 있지만, 신뢰할 수 있는 당사자(즉, 제3자) 없이 통신채널을 통해 지불하는 메커니즘은 없습니다.

These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party.

 

What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party.

필요한 것은 신뢰 대신 암호화 증명을 기반으로 하는 전자지불 시스템으로, 신뢰할 수있는 제3자 없이도 두 당사자가 기꺼이 서로 직접 거래할 수 있게 합니다.

 

계산상 원상회복시킬 수 없는 거래는, 판매자를 사기로부터 보호하고, 일상적 에스크로 메커니즘을 쉽게 구현하여 구매자를 보호할 수 있습니다.

Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers.

 

이 논문에서는 시간별 트랜잭션의 순서에 대한 계산 증명을 생성하기 위해, P2P 분산 타임스탬프 서버를 사용하여, 이중-지출 문제에 대한 솔루션을 제안합니다.

In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions.

 

The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes. 1

이 시스템은 정직한 노드들이, 협력하는 공격자 노드 그룹보다 더 많은 CPU 성능을 집합적으로 제어하는 ​​한 안전합니다.

 

2. Transactions

 

We define an electronic coin as a chain of digital signatures.

우리는 전자코인(electronic coin) 디지털서명의 체인으로 정의합니다.

 

Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin.

각 소유자는 이전 트랜잭션의 해시(a hash of the previous transaction) 다음 소유자의 공개 키 디지털서명하고, 이들 해시와 디지털서명을 코인 끝에 추가하여, 이 코인을 다음 소유자에게 이전합니다.

 

수취인(다음 소유자)은, 소유권 체인을 검증하기 위해, 서명을 확인할 수 있습니다.

A payee can verify the signatures to verify the chain of ownership.

사진 삭제

사진 설명을 입력하세요.

물론 문제는 수취인(다음 소유자)이, 소유자들 중 1명이 이 코인을 이중-지출하지 않았음을 확인할 수 없다는 것입니다.

The problem of course is the payee can't verify that one of the owners did not double-spend the coin.

 

A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending.

일반적 해결책은 모든 거래에서 이중 지출을 확인하는 신뢰할 수 있는 중앙기관 또는 mint(조폐국)를 도입하는 것입니다.

 

After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent.

매 거래 후, 새로운 코인을 발행하려면 해당 코인을 조폐국에 반환해야 하며, 조폐국에서 직접 발행된 코인만 이중-지출되지 않는다고 신뢰받게 됩니다.

 

이 솔루션의 문제는, 전체 화폐 시스템의 운명이, 은행처럼 모든 거래가 거쳐야 하는 조폐국을 운영하는 회사에 달려 있다는 것입니다.

The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank.

 

We need a way for the payee to know that the previous owners did not sign any earlier transactions.

수취인(다음 소유자) 이전 소유자 이전 트랜잭션(earlier transactions)에 서명하지 않았음을 알 수 있는 방법이 필요합니다.

 

우리의 목적을 위해, 최초 트랜잭션(earliest transaction) 계산되는 트랜잭션이므로, 이중-지출을 시도하려 하는 나중 트랜잭션(later attempts)에는 신경쓰지 않습니다.

For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend.

 

The only way to confirm the absence of a transaction is to be aware of all transactions.

트랜잭션이 없었음을 확인하는 유일한 방법은 모든 트랜잭션을 인식하는 것입니다.

 

mint기반 모델에서, mint는 모든 거래를 인식하고 먼저 도착한 거래를 결정했습니다.

In the mint based model, the mint was aware of all transactions and decided which arrived first.

 

To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received.

신뢰할 수 있는 당사자없이 이를 수행하려면, 트랜잭션을 공개적으로 발표해야 하며, 그리고 시스템 참가자들이 하나의 수신된 순서내역에 동의하는 시스템이 필요합니다.

 

각 트랜잭션 시점에, 수취인(다음 소유자)이 이 코인을 처음 수신했다는 사실에, 대부분의 노드가 동의했다는 증거가, 수취인(다음 소유자)에게 필요합니다.

The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received.

 

흡수율 최고 영국산 리포조말 비타민C

www.cantox.kr

이미지 썸네일 삭제

Heath Mall

CBD 리포솜 글루타티온 전문

www.cantox.kr

 

 

3. Timestamp Server

 

The solution we propose begins with a timestamp server.

우리가 제안하는 솔루션은 타임스탬프 서버에서 시작됩니다.

 

타임스탬프 서버는, 타임스탬프를 지정할 항목 블록의 해시를 가져와서, 신문이나 유즈넷 게시물과 같이 해시를 널리 게시하는 방식으로 작동합니다.

A timestamp server works by taking a hash of a block of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post [2-5].

 

The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash.

타임스탬프는, 데이터가 해시에 들어가기 위해, 해당 시점에 데이터가 존재했어야 함을 증명합니다.

 

각 타임스탬프는 해시에 이전(previous) 타임스탬프를 포함하여, 체인을 형성하며, 각 추가 타임스탬프는 이전 타임스탬프를 강화합니다.

Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it.

 

대표사진 삭제

사진 설명을 입력하세요.

4. Proof-of-Work

 

To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proofof-work system similar to Adam Back's Hashcash [6], rather than newspaper or Usenet posts.

P2P 기반의 분산된 타임스탬프 서버를 구현하려면, 신문이나 유즈넷 게시물보다는 Adam Back의 Hashcash와 유사한 작업증명 시스템을 사용해야 합니다.

 

작업증명에는, SHA-256과 같이, 해시될 때 해시가 0 비트 수로 시작하는 값을 검색하는 작업이 포함됩니다.

The proof-of-work involves scanning for a value that when hashed, such as with SHA-256, the hash begins with a number of zero bits.

 

필요한 평균 작업은, 필요한 0 비트 수에서 기하급수적이며, 단일 해시를 실행하여 확인할 수 있습니다.

The average work required is exponential in the number of zero bits required and can be verified by executing a single hash.

 

For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits.

타임스탬프 네트워크의 경우, 블록의 해시에 필요한 0 비트를 제공하는 값이 발견될 때까지 블록에서 임시 값을 증가시켜 작업증명을 구현합니다.

 

작업증명을 충족시키기 위해 CPU 노력이 소비되면, 작업을 다시 실행하지 않고는 블록을 변경할 수 없습니다.

Once the CPU effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work.

 

As later blocks are chained after it, the work to change the block would include redoing all the blocks after it.

이후 블록이 그 뒤에 연결되므로 블록을 변경하는 작업에는 이후의 모든 블록을 다시 실행하는 작업이 포함됩니다.

사진 삭제

사진 설명을 입력하세요.

작업증명은 또한 대다수 의사결정에서 대표성 결정 문제를 해결합니다.

The proof-of-work also solves the problem of determining representation in majority decision making.

 

If the majority were based on one-IP-address-one-vote, it could be subverted by anyone able to allocate many IPs.

대다수가 one-IP-주소-one-투표를 기반으로 했다면, 많은 IP를 할당할 수 있는 사람이라면 누구나 이를 전복시킬 수 있습니다.

 

작업증명은 기본적으로 one-CPU-one-vote입니다.

Proof-of-work is essentially one-CPU-one-vote.

 

The majority decision is represented by the longest chain, which has the greatest proof-of-work effort invested in it.

대다수 결정은 최장 체인으로 대표되며, 이 체인에는 가장 많은 작업증명 노력이 투자되었습니다.

 

CPU 성능의 대부분이 정직한 노드에 의해 제어되는 경우, 정직한 체인은 가장 빠르게 성장하고 경쟁 체인을 능가합니다.

If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains.

 

To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes.

공격자가, 과거 블록 수정을 위해, 블록과 그 이후의 모든 블록의 작업증명을 다시 실행하려면, 정직한 노드의 작업을 따라 잡고 이를 능가해야 합니다.

 

후속 블록이 추가되면서, 더 느린 공격자가 따라 잡을 확률은, 기하급수적으로 감소함을 나중에 보여줄 것입니다.

We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added.

 

To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour.

증가하는 하드웨어 속도와 시간이 지남에 따라, 노드를 실행하는 데 대한 다양한 관심을 보상하기 위해, 작업증명 난이도는 시간당 평균 블록 수를 목표로 하는 이동평균으로 결정됩니다.

 

블록이 너무 빨리 생성되면 난이도가 증가합니다.

If they're generated too fast, the difficulty increases.

 

5. Network

 

The steps to run the network are as follows:

네트워크 실행 단계는 다음과 같습니다:

 

1) New transactions are broadcast to all nodes.

새로운 트랜잭션이 모든 노드에 브로드캐스트됩니다.

 

2) 각 노드는 새로운 트랜잭션을 블록안으로 수집합니다.

Each node collects new transactions into a block.

 

3) Each node works on finding a difficult proof-of-work for its block.

각 노드는 그 블록에 대한 어려운 작업증명을 찾기 위해 노력합니다.

 

4) 노드가 작업증명을 찾으면 그 블록을 모든 노드에 브로드캐스트합니다.

When a node finds a proof-of-work, it broadcasts the block to all nodes.

 

5) Nodes accept the block only if all transactions in it are valid and not already spent.

노드는 모든 트랜잭션이 유효하고 이미 사용되지 않은 경우에만 그 블록을 수락합니다.

 

6) 노드는 수락된 블록의 해시를 이전 해시로 사용하여, 체인에서 다음 블록을 생성하는 작업을 통해 블록 수락을 표현합니다.

Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash.

 

노드는 항상 최장 체인을 올바른 체인으로 간주하고 계속해서 확장할 것입니다.

Nodes always consider the longest chain to be the correct one and will keep working on extending it.

 

If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first.

두 노드가 다음 블록의 다른 버전을 동시에 브로드캐스트하는 경우, 일부 노드는 하나 또는 다른 버전을 먼저 수신할 수 있습니다.

 

In that case, they work on the first one they received, but save the other branch in case it becomes longer.

이 경우, 노드는 처음 받은 가지에서 작업하지만, 더 길어질 경우 다른 가지를 저장합니다.

 

다음 작업증명이 발견되고 한 가지가 길어지면 tie가 끊어집니다;

그러면 다른 가지에서 작업 중이던 노드가 더 긴 가지로 전환됩니다.

The tie will be broken when the next proof-of-work is found and one branch becomes longer;

the nodes that were working on the other branch will then switch to the longer one.

 

New transaction broadcasts do not necessarily need to reach all nodes.

새로운 트랜잭션 브로드캐스트가 반드시 모든 노드에 도달할 필요는 없습니다.

 

많은 노드에 도달하는 한, 트랜잭션들은 곧 블록에 들어갑니다.

As long as they reach many nodes, they will get into a block before long.

 

Block broadcasts are also tolerant of dropped messages.

블록 브로드캐스트는 드롭된 메시지도 허용합니다.

 

노드가 블록을 수신하지 않으면, 다음 블록을 수신하고 놓친 블록을 인식할 때 요청합니다.

If a node does not receive a block, it will request it when it receives the next block and realizes it missed one.

 

6. Incentive

 

By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block.

관례적으로 블록의 첫 번째 트랜잭션은 블록 생성자가 소유한 새 코인을 시작하는 특수 트랜잭션입니다.

 

이는 노드가 네트워크를 지원하도록 인센티브를 추가하고 토큰을 발행할 중앙권한이 없기 때문에 초기에 코인을 유통에 분배하는 방법을 제공합니다.

This adds an incentive for nodes to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them.

 

The steady addition of a constant of amount of new coins is analogous to gold miners expending resources to add gold to circulation.

일정량의 새로운 코인을 꾸준히 추가하는 것은 금 채굴자가 금을 유통에 추가하기 위해 자원을 소비하는 것과 유사합니다.

 

우리의 경우, 소비되는 것은 CPU 시간과 전기입니다.

In our case, it is CPU time and electricity that is expended.

 

The incentive can also be funded with transaction fees.

인센티브는 거래수수료로도 충당될 수 있습니다.

 

거래의 출력 값이 입력 값보다 작으면, 차액은 거래를 포함하는 블록의 인센티브 값에 추가되는 거래수수료입니다.

If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction.

 

Once a predetermined number of coins have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free.

미리 정해진 수의 코인이 유통되면 인센티브는 전적으로 거래수수료로 전환될 수 있으며 완전히 인플레이션이 없습니다.

 

인센티브는 노드가 정직하게 유지되도록 장려하는 데 도움이 될 수 있습니다.

The incentive may help encourage nodes to stay honest.

 

If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins.

탐욕스러운 공격자가 모든 정직한 노드보다 더 많은 CPU 성능을 모을 수 있다면, 그는 지불을 훔쳐서 사람들을 속이는 데 사용하거나 새 코인을 생성하는 데 사용하는 것 중에서 선택해야 합니다.

 

그는 시스템과 자신의 부의 타당성을 훼손하는 것보다 다른 모든 사람들을 합친 것보다 더 많은 새로운 동전으로 그를 선호하는 규칙과 같은 규칙에 따라 플레이하는 것이 더 수익성이 있음을 찾아야 합니다.

He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth.

 

7. Reclaiming Disk Space

 

Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space.

코인의 최근 거래가 충분한 블록 아래에 묻히면, 사용된 거래는 디스크 공간을 절약하기 위해 폐기될 수 있습니다.

 

To facilitate this without breaking the block's hash, transactions are hashed in a Merkle Tree [7][2][5], with only the root included in the block's hash.

블록의 해시를 깨지 않고 이를 가능하게 하기 위해, 트랜잭션은 블록의 해시에 포함된 root만으로, Merkle Tree에서 해시됩니다.

 

그런 다음 나무의 가지를 떼어내어 오래된 블록을 압축할 수 있습니다.

Old blocks can then be compacted by stubbing off branches of the tree.

 

The interior hashes do not need to be stored.

내부 해시는 저장할 필요가 없습니다.

대표사진 삭제

사진 설명을 입력하세요.

트랜잭션이 없는 블록 헤더는 약 80바이트입니다.

A block header with no transactions would be about 80 bytes.

 

If we suppose blocks are generated every 10 minutes, 80 bytes*6*24*365 = 4.2MB per year.

10분마다 블록이 생성된다고 가정하면 연간 80바이트*6*24*365 = 4.2MB입니다.

 

컴퓨터 시스템은 일반적으로 2008년 현재 2GB RAM으로 판매되고 무어의 법칙은 현재 연간 1.2GB의 성장을 예측하므로 블록 헤더를 메모리에 보관해야 하더라도 스토리지는 문제가 되지 않습니다.

With computer systems typically selling with 2GB of RAM as of 2008, and Moore's Law predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory.

 

8. Simplified Payment Verification

 

It is possible to verify payments without running a full network node.

전체 네트워크 노드를 실행하지 않고도 지불을 확인할 수 있습니다.

 

A user only needs to keep a copy of the block headers of the longest proof-of-work chain, which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the block it's timestamped in.

사용자는 최장 작업증명 체인의 블록 헤더 사본만 보관하면 되며, 최장 체인이 있다고 확신할 때까지 네트워크 노드를 쿼리하여 얻을 수 있고 트랜잭션을 타임스탬프된 블록에 연결하는 Merkle 분기를 얻을 수 있습니다.

 

그는 트랜잭션을 스스로 확인할 수 없지만 체인의 한 장소에 연결하여 네트워크 노드가 이를 수락했음을 알 수 있으며 네트워크가 수락한 것을 추가로 확인한 후 블록이 추가되었음을 알 수 있습니다.

He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it.

대표사진 삭제

사진 설명을 입력하세요.

As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker.

따라서 정직한 노드가 네트워크를 제어하는 ​​한, 검증은 신뢰할 수 있지만 공격자가 네트워크를 압도하는 경우 더 취약해집니다.

 

네트워크 노드는 스스로 트랜잭션을 확인할 수 있지만, 공격자가 네트워크를 계속 압도할 수 있는 한 단순화된 방법은 공격자의 조작된 트랜잭션에 속을 수 있습니다.

While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network.

 

One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency.

이를 방지하기 위한 한 가지 전략은 네트워크 노드가 유효하지 않은 블록을 감지할 때 경고를 수락하여 사용자의 소프트웨어가 전체 블록을 다운로드하도록 하고 불일치를 확인하기 위해 트랜잭션을 경고하는 것입니다.

 

자주 지불받는 기업은 더 독립적 보안과 더 빠른 확인을 위해 자체 노드를 실행하기를 원할 것입니다.

Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification.

 

9. Combining and Splitting Value

 

Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer.

코인을 개별적으로 처리하는 것이 가능할지라도, 이체의 모든 센트에 대해 별도의 거래를 하는 것은 다루기 어려울 것입니다.

 

가치를 분할하고 결합할 수 있도록 트랜잭션에는 여러 입력 및 출력이 포함됩니다.

To allow value to be split and combined, transactions contain multiple inputs and outputs.

 

Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs:

one for the payment, and one returning the change, if any, back to the sender.

일반적으로 더 큰 이전 트랜잭션의 단일 입력 또는 더 적은 양을 결합한 여러 입력 및 최대 2개의 출력이 있습니다:

하나는 지불을 위한 것이고, 다른 하나는 송금인에게 변경사항을 반환하는 것입니다.

대표사진 삭제

사진 설명을 입력하세요.

It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here.

한 트랜잭션이 여러 트랜잭션에 의존하고, 이들 트랜잭션이 더 많은 트랜잭션에 의존하는 fan-out은 여기서 문제가 되지 않는다는 점에 유의해야 합니다.

 

트랜잭션 내역의 완전한 독립형 사본을 추출할 필요가 없습니다.

There is never the need to extract a complete standalone copy of a transaction's history.

 

10. 프라이버시 Privacy

 

The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the trusted third party.

전통적 뱅킹 모델은 정보에 대한 접근을 관련 당사자 및 신뢰성있는 제3자에게 제한함으로써 개인정보보호 수준을 달성합니다.

 

모든 트랜잭션을 공개적으로 발표해야 하는 필요성은 이 방법을 배제하지만, 공개 키를 익명으로 유지함으로써 다른 곳에서 정보흐름을 차단함으로써 프라이버시를 유지할 수 있습니다.

The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous.

 

The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone.

대중은 누군가가 다른 사람에게 금액을 보내고 있음을 알 수 있지만 거래를 다른 사람과 연결하는 정보는 없습니다.

 

이것은 증권거래소가 공개하는 정보 수준과 유사한데, 개별 거래 시간과 규모인 "테이프"는 공개되지만 당사자가 누구인지는 밝히지 않습니다.

This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the "tape", is made public, but without telling who the parties were.

대표사진 삭제

사진 설명을 입력하세요.

As an additional firewall, a new key pair should be used for each transaction to keep them from being linked to a common owner.

추가 방화벽으로서 각 트랜잭션에 대해 새 키 쌍을 사용하여 공통 소유자에게 연결되지 않도록 해야 합니다.

 

일부 연결은 다중 입력 트랜잭션에서 여전히 피할 수 없으며, 이는 반드시 해당 입력이 동일한 소유자가 소유했음을 나타냅니다.

Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner.

 

The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner.

위험은 키 소유자가 공개되면 링크가 동일한 소유자에게 속한 다른 트랜잭션을 공개 할 수 있다는 것입니다.

 

11. Calculations 계산

 

We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain.

우리는 공격자가 정직한 체인보다 더 빠르게 대체(alternate) 체인을 생성하려는 시나리오를 고려합니다.

 

이것이 달성되더라도, 허공에서 가치를 창출하거나 공격자에게 속하지 않은 돈을 가져 오는 것과 같은, 임의의 변화에 ​​시스템이 열리지 않습니다.

Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker.

 

Nodes are not going to accept an invalid transaction as payment, and honest nodes will never accept a block containing them.

노드는 유효하지 않은 거래를 지불로 받아들이지 않을 것이며, 정직한 노드는 그들이 포함된 블록을 절대로 받아들이지 않을 것입니다.

 

공격자는 자신이 최근 사용한 돈을 되찾기 위해 자기 트랜잭션 중 하나만 변경할 수 있습니다.

An attacker can only try to change one of his own transactions to take back money he recently spent.

 

정직한 체인 공격자 체인 사이의 경쟁은, Binomial Random Walk의 특징을 가질 수 있습니다.

The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk.

 

The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1.

성공 이벤트는 정직한 체인이 한 블록씩 확장되어 그 리드가 +1 증가하는 것이고, 실패 이벤트는 공격자 체인이 한 블록 씩 확장되어 간격이 -1 감소하는 것입니다.

 

공격자가 주어진 적자를 따라 잡을 확률은, Gambler's Ruin 문제와 유사합니다.

The probability of an attacker catching up from a given deficit is analogous to a Gambler's Ruin problem.

 

Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven.

무제한 신용을 가진 도박꾼이 적자에서 시작하여 손익분기점에 도달하기 위해 잠재적으로 무한한 횟수의 시도를 한다고 가정합니다.

 

도박꾼이 손익분기점에 도달하거나 공격자가 정직한 체인을 따라잡을 확률을 다음과 같이 계산할 수 있습니다:

We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]:

 

p = probability an honest node finds the next block

p = 정직한 노드가 다음 블록을 찾을 확률

 

q = 공격자가 다음 블록을 찾을 확률

q = probability the attacker finds the next block

 

qz = 공격자가 z 블록 뒤에서 따라 잡을 확률

qz = probability the attacker will ever catch up from z blocks behind

 

qz={ 1 if p≤q q/ p z if pq}

 

6 Identities Transactions Trusted Third Party Counterparty Public Identities Transactions Public New Privacy Model Traditional Privacy Model Given our assumption that p > q,

6 신원 거래 신뢰성있는 제3자 상대방 공개 신원 거래 공개 새로운 개인정보보호 모델 기존 개인 정보 보호 모델 p> q라는 가정을 감안할 때

 

the probability drops exponentially as the number of blocks the attacker has to catch up with increases.

공격자가 따라 잡아야 할 블록 수가 증가하면서, 확률은 기하급수적으로 떨어집니다.

 

그에 대한 배당률로 인해, 그가 운이 좋은 돌진을 일찍 시작하지 않으면 그가 더 뒤처 질수록 그 기회는 사라집니다.

With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind.

 

이제 새 트랜잭션의 수취인 송금인이 거래를 변경할 수 없다는 것을 충분히 확신할 때까지 기다려야 하는 시간을 고려합니다.

We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction.

 

We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed.

송금인은, 수취인이 자신이 얼마 동안 자신에게 돈을 지불했다고 믿게 만들고 일정시간이 지나면 자신에게 돌려주기를 원하는 공격자라고 가정합니다.

 

The receiver will be alerted when that happens, but the sender hopes it will be too late.

그런 일이 발생하면, 수취인에게 경고를 보내지만, 송금인은 너무 늦기를 바랍니다.

 

수취인은 새 키 쌍을 생성하고, 서명 직전에 송금인에게 공개 키를 제공합니다.

The receiver generates a new key pair and gives the public key to the sender shortly before signing.

 

이것은 송금인이 충분히 앞서 갈 수 있을 만큼 운이 좋을 때까지 계속해서 작업하고 그 순간에 트랜잭션을 실행함으로써 미리 블록체인을 준비하는 것을 방지합니다.

This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment.

 

Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction.

트랜잭션이 전송되면 부정직한 송금인은 거래의 대체 버전을 포함하는 병렬 체인에서 비밀리에 작업을 시작합니다.

 

수취인은, 트랜잭션이 블록에 추가되고 z 블록이 연결될 때까지 기다립니다.

The recipient waits until the transaction has been added to a block and z blocks have been linked after it.

 

그는 공격자가 진행한 정확한 양을 알지 못하지만, 정직한 블록이 블록당 평균 예상 시간을 소요했다고 가정하면 공격자의 잠재적 진행률은 예상 값이 포함된 Poisson distribution(분포)가 될 것입니다:

He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a Poisson distribution with expected value:

 

=z q p To get the probability the attacker could still catch up now,

= zqp 공격자의 확률을 얻으려면 지금도 따라 잡을 수 있으며,

 

we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point:

그가 이룰 수 있는 각 진행 정도에 대한 Poisson 밀도를 그 지점에서 따라 잡을 수 있는 확률로 곱합니다:

 

∑ k=0 ∞  k e − k! ⋅{ q/ p z−k  if k≤z 1 if kz} Rearranging to avoid summing the infinite tail of the distribution... 1−∑ k=0 z  k e − k! 1−q/ p z−k   Converting to C code... #include double AttackerSuccessProbability(double q, int z) { double p = 1.0 - q; double lambda = z * (q / p); double sum = 1.0; int i, k; for (k = 0; k <= z; k++) { double poisson = exp(-lambda); for (i = 1; i <= k; i++) poisson *= lambda / i; sum -= poisson * (1 - pow(q / p, z - k)); } return sum; } 7 Running some results, we can see the probability drop off exponentially with z.

 

∑ k = 0 ∞  ke − k! ⋅ {q / p z−k  if k≤z 1 if kz} 분포의 무한 꼬리의 합을 피하기 위해 재 배열 ... 1−∑ k = 0 z  k e − k! 1−q / p z−k   C 코드로 변환 중 ... #include double AttackerSuccessProbability (double q, int z) {double p = 1.0-q; 이중 람다 = z * (q / p); 이중 합 = 1.0; int i, k; for (k = 0; k <= z; k ++) {double poisson = exp (-lambda); for (i = 1; i <= k; i ++) 포아송 * = 람다 / i; 합계-= 포아송 * (1-pow (q / p, z-k)); } 반환 합계; } 7 몇 가지 결과를 살펴보면 z를 사용하여 확률이 기하 급수적으로 감소하는 것을 볼 수 있습니다.

 

q=0.1 z=0 P=1.0000000 z=1 P=0.2045873 z=2 P=0.0509779 z=3 P=0.0131722 z=4 P=0.0034552 z=5 P=0.0009137 z=6 P=0.0002428 z=7 P=0.0000647 z=8 P=0.0000173 z=9 P=0.0000046 z=10 P=0.0000012 q=0.3 z=0 P=1.0000000 z=5 P=0.1773523 z=10 P=0.0416605 z=15 P=0.0101008 z=20 P=0.0024804 z=25 P=0.0006132 z=30 P=0.0001522 z=35 P=0.0000379 z=40 P=0.0000095 z=45 P=0.0000024 z=50 P=0.0000006 Solving for P less than 0.1%... P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340

 

12. 결론 Conclusion

 

We have proposed a system for electronic transactions without relying on trust.

우리는 신뢰에 의존하지 않는, 전자거래 시스템을 제안했습니다.

 

We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending.

우리는 소유권에 대한 강력한 제어를 제공하지만, 이중-지출 방지 방법 없이는 불완전한 디지털서명으로 만든 일반적 프레임워크로 시작했습니다.

 

이를 해결하기 위해, 우리는 P2P 네트워크를 제안하여, 정직한 노드가 CPU 성능의 대부분을 제어하는 ​​경우, 공격자 변경 시도가 계산적으로 즉시 비현실적이 되는, 트랜잭션의 공개 역사를 기록하는 작업증명을 사용했습니다.

To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power.

 

The network is robust in its unstructured simplicity.

네트워크는 구조화되지 않은 단순성으로 견고합니다.

 

노드는 거의 조정없이 한 번에 모두 작동합니다.

Nodes work all at once with little coordination.

 

They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis.

메시지는 특정 위치로 라우팅되지 않고 최선의 노력으로만 전달되어야 하므로 식별할 필요가 없습니다.

 

노드는 원하는대로 네트워크를 탈퇴했다가 다시 참여할 수 있으며, 작업증명 체인이 사라진 동안 일어난 작업증명 체인을 일어나 일의 증거로 받아들입니다.

Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone.

 

They vote with their CPU power, expressing their acceptance of valid blocks by working on extending them and rejecting invalid blocks by refusing to work on them.

그들은 CPU 성능으로 투표하고, 확장 작업을 함으로써 유효한 블록에 대한 수용을 표명하고, 작업을 거부함으로써 무효 블록을 거부합니다.

 

이 합의 메커니즘을 통해 필요한 모든 규칙과 인센티브를 시행할 수 있습니다.

Any needed rules and incentives can be enforced with this consensus mechanism.

 

8 참고 문헌 References

 

[1] W. Dai, "b-money," http://www.weidai.com/bmoney.txt, 1998.

[2] H. Massias, X.S. Avila, and J.-J. Quisquater, "Design of a secure timestamping service with minimal trust requirements," In 20th Symposium on Information Theory in the Benelux, May 1999.

[3] S. Haber, W.S. Stornetta, "How to time-stamp a digital document," In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991.

[4] D. Bayer, S. Haber, W.S. Stornetta, "Improving the efficiency and reliability of digital time-stamping," In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993.

[5] S. Haber, W.S. Stornetta, "Secure names for bit-strings," In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997.

[6] A. Back, "Hashcash - a denial of service counter-measure," http://www.hashcash.org/papers/hashcash.pdf, 2002.

[7] R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980.

[8] W. Feller, "An introduction to probability theory and its applications," 1957

 

반응형

댓글