EOS EOSIO DApp 개발 – 'EOS.IO Storage 백서 읽기' 시리즈 2.Background

in #eos2 years ago (edited)

Background

왜 EOS.IO 저장소를 제안할 수 밖에 없었을까?

IPFS

IPFS is an emerging standard for storing content addressable files. Content-addressable storage is a mechanism for storing information that can be retrieved based on its content rather than its location.

IPFS는 'content addressable' 파일을 저장하기 위해 새롭게 출현한 표준이야. content addressable이란 컨텐츠 자체가 주소 역할을 한다는 것을 의미해. 일반적인 파일 시스템에서는 경로를 기반으로 파일을 찾는데, IPFS에서는 컨텐츠 자체에 기반해서 파일을 찾는다는 거지.*

Stated another way, all files stored using IPFS are given names derived from the hash of their content.

달리 말하면, IPFS를 통해 저장되는 파일들은 컨텐츠의 해시 값에서 파생된 이름을 갖게 되지.

What this means is that the same file will have the same name on every computer, and the contents of that file can never change without also changing the name of the file.

해시를 사용하니까 파일 이름은 어디서든(어떤 컴퓨터에서든) 고유한 이름을 갖게 되겠지. 파일 내용이 바뀌면 파일 이름도 바뀌게 되겠지.

It also means that when you download a file from a server you can verify that it is the exact file you requested by recalculating the name based on the content provided by the server.

서버에서 다운로드 파일이 정확히 내가 요청한 파일인지 검증할 수도 있겠지. 다운받은 컨텐츠에 기반해 이름을 다시 구해서(해시 값을 계산해서) 다운받은 파일 이름과 비교해 보면 되겠지.

IPFS also provides a peer to peer (P2P) network layer that allows computers to discover and share files based on their deterministic names. However, this P2P network layer does not provide or guarantee storage, hosting, or bandwidth. As it is currently structured, the IPFS network expects users to provide their own servers and related infrastructure.

IPFS는 P2P(Peer to peer) 네트워크로 연결돼. 컴퓨터들은 이름에 기반해 파일들을 발견하고 공유하지.
P2P네트워크니까 당연히 사용자들이 자신의 서버와 관련 인프라를 제공해야 하지.

근데 EOS.IO에서는 이야기가 좀 달라지지. 어떻게 달라질까?

EOS.IO

EOS.IO is software designed to allow anyone to create and launch their own smart contract platform. A smart contract is self-executing computer code that automatically enforces its terms and validates user actions. Blockchains are secured by reaching consensus on the order of valid user actions and then applying their deterministic state machine to derive the current application state.

EOS.IO는 스마트 컨트랙트를 작성하고 실행할 수 있는 플랫폼으로 설계되었어. 스마트 컨트랙트에는 연관된 파일이 있을 수 있기 때문에 파일을 참조하는 경우가 생기지.

Because the security of a blockchain is highly dependent upon it being heavily replicated and 100% available, it is not suitable for storing large, potentially prunable, files. For example, a high performance blockchain processing 1 million transactions per second will grow at over 100 MB per second, assuming 100 bytes per transaction. To remain practical, these blockchains may periodically truncate their transaction history and take snapshots of the state. Furthermore, the
blockchain ledger is replicated to every node which creates an unnecessary level of replication overhead. Storing bulk data in either the transaction log or the blockchain state is neither a practical nor a scalable solution to decentralized file storage.

블록체인의 안전성이란게 모든 노드에 복제되고 100% 가용성하다는 사실에 높은 수준으로 의존하잖아.
거래정보의 복제도 조금은 문제가 되는데 대용량 파일 복제는 큰 문제가 되겠지.
이를 해결할 방법이 필요하겠지.

To address this problem, some blockchain applications have opted to store the IPFS file names. This process ensures that the smart contracts are referring to specific and incorruptible files, but makes no guarantees about the availability of those files.

이 문제를 해결하려고 몇몇 블록체인 앱들은 IPFS 파일 이름을 저장하는 방식을 도입했지. 스마트 컨트랙트에 연관된 파일을 이름으로 참조하지.
그런데 여기에도 문제가 있어. 파일 이름은 훼손되지 않겠지만 실제 파일은 훼손될 수 있다는 거지.
IPFS는 파일의 가용성을 보장하지는 않기 때문이지.

IPFS does not guarantee the availability of files; a file may disappear if nodes decline to make it available. An inaccessible file may ultimately break the utility and purpose of a smart contract as parties are no longer able to verify the meaning of the file.

만약 노드들이 어떤 파일을 유지하길 거부하면 파일은 사라질 수도 있게되는거야. 스마트 컨트랙트에 연결된 파일이 실제적으로는 사용할 수 없다면 그 스마트 컨트랙트 또한 쓸모 없게 될거야.

For example, consider a smart contract that references a will by its IPFS name. That contract may fail if the file containing the will is unavailable, which could happen if someone forgets to pay for ongoing file hosting, or if the deceased person’s estate fails to arrange to pay for file hosting. Smart contracts cannot simply store IPFS filenames and be confident that the file will always exist and be accessible when needed.

예를 들어, 유언장을 IPFS 이름으로 참조한 스마트 컨트랙트가 있다고 생각해보자. 어떤 이유에서든 유언장 파일이 없어졌다면 해당 스마트 컨트랙트 실행은 실패할거야.
IPFS 파일 이름을 저장하는 것만으로는 안 된다는 거지.

Filecoin, Maidsafe, Siacoin, and Storj

Filecoin is a decentralized storage network created by the team behind IPFS for the purpose of incentivising the storage of files on IPFS.
파일코인은 탈중앙화된 저장소 네트워크야. IPFS를 만든 팀이 만들었지.

This protocol creates a blockchain that utilizes the latest advancements in cryptographic proofs to generate trustless proof-of-storage and proof-of-replication. The protocol then incentivises individuals to run auditors that spot-check storage providers.

저장소라 그런가? 흔히 듣던 증명 방식이 아니네. 저장증명과 복제증명이란 것을 사용해.

Filecoin is the currency that storage providers are paid when someone wishes to store or fetch a file from the network. The underlying idea is that there are vast quantities of unused storage sitting on home computers and servers around the globe. Filecoin aims to enable the owners of this unused storage to monetize it, while eliminating any need for 3rd parties to trust the storage providers, or vice versa.

개인용 컴퓨터든 서버 컴퓨터든 사용하지 않고 남는 저장소가 있겠지. 전 세계적으로 모은다면 엄청남 양이 되겠지. 파일코인은 저장소 공급자를 신뢰하지 않고도 이러한 막대한 미사용 저장소를 사용할 수 있게 하자는 거지.
미사용 저장소를 누가 자발적으로 내놓지? 보상을 주면 되지. 파일코인을 주는 거야.

The model adopted by Filecoin is similar to other decentralized storage solutions such as Maidsafe, Storj, and Siacoin. They all attempt to collect micropayments for both the storage and retrieval of data, and they all create their own dedicated currency. Furthermore, all of these products target home computer storage providers renting out space located behind slow internet connections. Lastly, they all require users to continually purchase cryptocurrency to pay for storage and bandwidth. This means the files may not be available for the general public to access for free via their browser.

Maidsafe, Storj, Siacoin도 파일코인과 유사한 모델을 채택하고 있지.
이들은 자신의 코인을 발행해 인터넷에 연결된 가정용 컴퓨터의 저장소를 빌리고, 데이터 저장과 읽기에 사용하도록 해. 이들은 데이터 저장과 읽기에 소액결제를 하는 시장을 목표로 하지.
이러한 방식에서는 우리가 일반적으로 브라우저를 통해 다운로드 받는(무료로 익명으로) 방식은 가능하지 않아.

The cost of storage and bandwidth on these networks may be higher than that offered by cloud service providers such as Amazon S3. For example, at the time of this writing, Storj charges $0.05 per GB of download whereas Amazon charges $0.01 per GB downloaded. Storj charges $0.015 per GB per month whereas Amazon charges $0.0125 per GB per month for infrequently accessed storage (Glacier).

이들 네트워크 상에서 저장소와 대역폭 비용은 아마존 A3와 같은 클라우드 서비스 제공자가 제공하는 것보다 더 높을 수 있어. 뭘 계산까지 하고 그래.

It is not clear that the designs of Filecoin, Maidsafe, Siacoin or Storj scale up to many users and many accesses. As the number of users and files grows, the number of recurring payments will also grow. This will place increasing stress on their single-threaded blockchains as the base transaction load grows just to maintain the status quo.

스케일업에 대한 설계가 되었는지는 분명하지 않지만 사용자와 파일 수가 증가하면 지불도 그에 따라 증가하겠지. 부하도 증가할 거고.

Users wanting to store files will need to set up their own server to make automatic crypto payments or they will have to log in every month to do it manually. The overhead of zero-knowledge proofs and spot checks consume bandwidth and CPU resources whose cost may be greater than the actual cost of the storage and bandwidth being managed.

파일을 저장하기 원하는 사용자들은 여러 가지 불편한 점도 많고 자신의 자원도 많이 소모할 수 있어.
이런 걸로는 안 된다는 것을 이야기 하고 싶은 거지.

DropBox, Mega, GoogleDrive, and iCloud

These services provide users 2GB to 50GB of free storage and some bandwidth. These services are freemium products used to upsell their paid products. Unfortunately, these services do not have a common file naming system, like IPFS, nor do they integrate with an open P2P network, nor are they decentralized. Each is entirely controlled by its respective
single legal entity, and it is not uncommon for one of these services to have some down time or to change their pricing model.

중앙화된 클라우드 서비스까지 언급할 필요까지는 없지 않아. 이것에 대한 문제점은 디폴트로 깔고 가는 거잖아.