1 of 23

by

Vlaďka Janů CreativeDock

2 of 23

IPFS pomáhá řešit problémy jako je spolehlivost úložiště (pokud je původní úložiště nefunkční, lze soubor stáhnout ze systémů jiných uživatelů), odpor proti cenzuře obsahu (blokování bude vyžadovat blokování všech uživatelských systémů, které mají kopii dat) a organizování přístupu při absenci přímého připojení k internetu nebo při špatné kvalitě komunikačního kanálu (data si můžete stáhnout prostřednictvím v místní síti).

IPFS je vhodný pro decentralizované aplikace dApps - Web3.0

turecko 2017, blokuje wikipedii

3 of 23

Nevýhody

  • bandwidth
  • availability �pomáhá pinování �nebo FileCoin
  • private content�lze řešit pomocí�šifrování obsahu�nebo soukromé sítě
  • podpora prohlížečů�zlepšuje se,�pomáhají brány

4 of 23

5 of 23

Základní koncept

  • immutabilita
  • adresování dle obsahu a ne dle adresy� >>>> Nejsou duplicity pro stejný obsah

  1. Dej mi soubor QmNev8KJTyTFmbgXZJKQBFLdf5EGVrSkFAA6DUwBUxLTpB
  2. OK, dík, já si ověřím hash, že je to on = build-in security��

? Ale jak ukládat struktutovaná data, jde přece o FS ?

6 of 23

Merkle tree (Hašový strom)

7 of 23

DAG

Directed Acyclic Graph is a special type of merkle tree where multiple nodes can point at the same child and circular references are impossible

8 of 23

čtení DAG

9 of 23

Deduplication

Git, a common version control system, uses Merkle DAGs in a very similar way to track changes to source code in software projects!

10 of 23

11 of 23

čtení DAG

12 of 23

Struktura CIDu

  • multibase = base58btc
  • multicodec = dag-pb
  • multihash-algorithm = sha2-256
  • multihash-length = 32 (32 bytes, equivalent to 256 bits)

Version 0 (v0)

When IPFS was first designed, we used base 58-encoded multihashes as the content identifiers. This is simpler but much less flexible than newer CIDs. CIDv0 is still used by default for many IPFS operations, so you should generally support v0.

If a CID is 46 characters starting with "Qm", it's a CIDv0

Version 1 (v1)

CID v1 contains some leading identifiers that clarify exactly which representation is used, along with the content-hash itself. These include:

  • A multibase �= prefix, specifying the encoding used for the remainder of the CID
  • A CID version identifier, which indicates which version of CID this is
  • A multicodec = identifier, indicating the format of the target content
  • multihash

13 of 23

Multibase format

14 of 23

Ukázka rozboru Cidu

https://cid.ipfs.tech

15 of 23

Jak začít ?

Development:

  • Javascript
  • GO

i v browseru

16 of 23

17 of 23

A full P2P protocol written entirely in JavaScript

18 of 23

Práce s Dagem

let cid = await ipfs.dag.put({ test: 1 })

let cid2 = await ipfs.dag.put({ bar: cid })

https://explore.ipld.io/#/explore/bafyreibmdfd7c5db4kls4ty57zljfhqv36gi43l6txl44pi423wwmeskwy

let cid = await ipfs.dag.put({

my: {

deep: {

obj: 'is cool'

}

}

})

console.log(await ipfs.dag.get(cid, {

path: '/my/deep/obj'

}))

// prints { value: 'is cool', remainderPath: '' }

let node = await ipfs.dag.get(cid2, {

path: '/bar/test'

})

console.log(node.value)

19 of 23

Práce se soubory

20 of 23

Pinování - Piñata

https://www.youtube.com/watch?v=j3pI91DB7J4

21 of 23

22 of 23

IPNS

jako DNS :-)

A co mountování ? :-)

Kam dál?

23 of 23

Mars - Země 4-24 minut

(Země - Země do 10 s)

THX, Q? A?