네트워크의 모든 노드가 상당한 양의 네트워크 대역폭과 디스크 공간을 소비하는 데이터 복사본을 유지해야하기 때문에 블록 체인은 대용량 파일을 저장하는 데 적합하지 않습니다. IPFS는 파일을 더 작은 조각으로 분할하고 네트워크 노드의 일부에 저장함으로써이 문제를 해결합니다. 블록 체인 + IPFS는 DApps의 미래라고 생각합니다. 따라서이 백서에서는 Qtum 및 IPFS를 기반으로 한 DApp 솔루션을 소개합니다.
블록 체인은 "분산 된 데이터베이스"라고 정의 할 수 있습니다. 노드가 블록 체인 네트워크를 통해 합의에 이르면 전체 블록 체인의 데이터를 동기화해야합니다. 대용량 파일을 블록 체인에 업로드 할 수있게되면 스토리지 및 네트워크 리소스가 낭비됩니다. 따라서 대부분의 블록 체인 네트워크는 블록 크기를 제한하고 높은 가스 요금을 설정하므로 사람들은 더 가치 있고 간결한 정보를 블록 체인에 적용하는 경향이 있습니다.
IPFS (InterPlanetary File System)는 대용량 파일의 분산 된 저장 문제를 완벽하게 해결합니다. 새 파일을 IPFS에 업로드하면 여러 개의 256KB 트렁크로 나뉩니다. 각 트렁크에는 콘텐츠를 고유하게 식별하는 해시 값이 있습니다. 마지막으로 해시 값이 전체 파일에 대해 생성되고 모든 노드는 주소와 마찬가지로 파일을 다운로드 할 수 있습니다.
블록 체인과 IPFS의 결합은 DApps (Distributed Application)의 미래라고 생각합니다. 블록 체인은 구조화 된 데이터를 저장하는 데이터베이스로 사용되고 IPFS는 사진 및 비디오와 같은 대용량 파일을 저장하는 파일 시스템으로 사용됩니다.
이 논문을 기반으로 DApp 솔루션 제안 Qtum 및 IPFS을. 이 솔루션은 IPFS에 파일을 업로드하고 Qtum 스마트 계약서에 IPFS 주소를 기록하여 분산 된 방식으로 대용량 파일을 저장하고 공유 할 수 있습니다. 이 코드는 Github 에 업로드되었으며 , 블록 체인 기술에 익숙한 개발자는 Github을 직접 참조 할 수 있습니다.
Qtum은 UTXO (Unspent Transaction Output), PoS (Stake of Stake) 합의 및 스마트 계약의 가상 시스템 계층을 기반으로하는 블록 체인입니다. Bitcoin과 Ethereum의 장점을 모두 가지고 있습니다. Qtum은 AAL (Account Abstraction Layer) 기술을 사용하여 UTXO 모델이 EVM 스마트 계약과 호환되는 계정으로 작업 할 수있게합니다. 이러한 방식으로 Qtum은 강력한 호환성 기능과 높은 성능을 제공합니다.
IPFS는 모든 인터넷 가능 장치를 연결하는 피어 - 투 - 피어 분산 파일 시스템을 개발하는 것을 목표로합니다. 즉, IPFS는 컨텐트 주소가 지정된 하이퍼 링크를 사용하여 높은 처리량의 콘텐츠 주소 블록 저장소 모델을 제공합니다. 이는 범용 Merkle DAG와 버전 화 된 파일 시스템을 구축 할 수있는 데이터 구조를 형성합니다. IPFS는 단일 장애 지점이 없으며 노드는 서로를 신뢰 할 필요가 없습니다.
IPFS 공식 Github 에는 많은 IPFS 응용 프로그램이 있으며 그 중 일부는 블록 체인 + IPFS를 기반으로합니다.
Akaha 는 Ethereum 및 IPFS가 제공하는 차세대 소셜 미디어 네트워크라고합니다. Akasha는 블로그가 중앙 서버 대신 IPFS 네트워크를 통해 게시되는 분산 형 블로그 플랫폼으로 간주 될 수 있습니다. 동시에 사용자는 ETH를 사용하여 고품질의 블로그에 대한 보상을받을 수 있습니다. 너무 많은 규제가 없으며 콘텐츠 수익은 제작자가 직접 소유합니다.
전자 상거래 분야에서 ID 인증은 항상 핵심 포인트였습니다. uPort 는 Ethereum 및 IPFS를 기반으로하는 ID 인증 DApp입니다. 사용자는 uPort에서 제공 한 현명한 계약을 사용하여 신원을 등록 할 수 있으며 시스템은 신원 정보를 IPFS에 기록합니다. uPort를 기반으로 사용자는 개인 정보를 사용하여 디지털 ID를 가질 수 있습니다. 특정 조직이나 개인 만이 자신의 개인 데이터에 액세스 할 수 있습니다.
다음은 제안 된 DApp 솔루션에 대한 깊은 통찰력을 갖게 될 것입니다.
시스템에는 두 개의 레이어가 있습니다.
첫 번째는 상위 레이어입니다. React 프레임 워크와 HTML 및 JS를 기반으로합니다. 사용자는 웹 페이지를 통해 시스템에 액세스 할 수 있습니다. QtumJS 및 JS-IPFS-API를 통해 상위 계층은 하위 계층과 통신합니다. QtumJS는 호출및 보내기 인터페이스를 통해 Qtum에서 스마트 계약을 읽고 씁니다 . JS-IPFS-API는 add 인터페이스를 통해 파일을 IPFS에 추가 하고 get 인터페이스를 통해 파일을 가져옵니다 .
하위 계층에는 QTUM과 IPFS의 두 부분이 있습니다.
pragma solidity ^ 0.4.24; 계약 IpfsRecord { string [] 레코드; 함수 추가 (문자열 데이터) external { records.push (data); } 함수 getIndex () public 뷰는 (uint) {returns records.length;를 반환합니다. } function get (uint index) public view returns (string) { 반환 레코드 [인덱스]; } }
사용자가 업로드 버튼을 클릭하면 JS가 클릭 동작을 수신하고 몇 가지 단계가 중단됩니다.
다음과 같이 설명 할 수도 있습니다.
파일 목록을 표시하는 프로세스는 다음과 같습니다.
간단한 소개는 다음과 같습니다.
자세한 단계는 [3]의 빠른 시작으로 이동하십시오.
이 시스템은 사용하기가 매우 쉽습니다. 시스템을 시작한 후 브라우저에 http : // localhost : 3000 / 을 입력하고 업로드를 클릭하여 파일을 업로드하면 스마트 계약서의 모든 기록이 버튼 아래에 표시됩니다.
Qtum과 IPFS의 상호 보완적인 관계를 명확히 알 수 있습니다 : IPFS는 블록 체인 스토리지 공간이 비싸고 확장하기 어려운 문제를 크게 보완 할 수 있으며 Qtum은 IPFS에 대한 합의, 인센티브 및 소유권의 특성을 제공 할 수 있습니다.
Qtum은 EVM 스마트 계약을 통해 ERC721 표준과 완벽하게 호환 될 수 있으므로 NFT (Non-Fungible Token)와 IPFS를 함께 사용할 수 있습니다. IPFS의 각 파일은 교환 할 수있는 블록 체인의 토큰으로 나타낼 수 있습니다.
예를 들어, 저장을 위해 IPFS에 많은 작품을 업로드 한 다음 ERC721 토큰을 사용하여 소유권을 기록 할 수 있습니다. 따라서 토큰을 교환하여 각 작품의 소유권을 교환 할 수 있습니다. 블록 체인의 투명성으로 트랜잭션이 악의적 인 공격을 막을 수 있습니다.
따라서 우리는 다음과 같은 측면을 고려하고 있습니다.
https://blog.qtum.org/how-to-build-a-dapp-based-on-qtum-and-ipfs-692bc3ab607a