ํ์ฌ ipfs๋ ๋ ๊ฐ์ง ์ ํ์ ๋ฆฌ์์ค ํ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
/ipfs/hash/path/to/resource
๊ทธ๋ฆฌ๊ณ
http://localhost:8080/ipfs/hash/path/to/resource
๋ ๋ค ํ์ค URL ์ด ์๋๋๋ค. ํ์ค URL์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ipfs://hash/path/to/resource
๋์ ๋ค์์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
/ipfs/hash/path/to/resource
?
์ง๊ธ์ ๋ฌธ์์์ ์ฐพ์ ์ ์์ง๋ง ๋ค์ ์ค์ ๋ํ ์ค๋ช
์ ๊ธฐ์ตํฉ๋๋ค.
IPFS๋ ํ์ผ ์์คํ
์ด๋ฉฐ ํ์ผ ์์คํ
์ ๊ฒฝ์ฐ URL์ด ์๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค. URL์ ๋ก์ปฌ ์์คํ
๊ณผ ์๊ฒฉ ์์คํ
์ ๋ํ ์ก์ธ์ค ํตํฉ ์คํจ๋ฅผ ๋ํ๋ด๋ ์ถ์
ํจ์ผ๋ก ์ดํดํ ์ ์์ต๋๋ค. IPFS๋ ๋ก์ปฌ ๋ฐ ์๊ฒฉ ํ์ผ์ ๋์ผํ๊ฒ ์ทจ๊ธํ์ฌ ์ด๋ฌํ ์ถ์
ํจ์ ํผํ๊ณ ์์ผ๋ฉฐ ํ์ผ ์ฃผ์ ์ง์ ๋ฐฉ๋ฒ์ ํ์ค ๊ฒฝ๋ก์
๋๋ค.
/ipfs ์๋์ ์ ์ฒด IPFS๋ฅผ ํ์ฌํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ํ์ผ์ ์ก์ธ์คํ๋ ๊ฒ์ ์์ํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค. ํ์ผ ์์คํ ์ ํ์ผ.
์ถ๊ฐ ์ฝ์๊ฑฐ๋ฆฌ:
๊ธด ํ ๋ก : https://github.com/ipfs/go-ipfs/issues/1678
ํ์ฌ ํฉ์์ ๋ํ ๊ฐ๋ตํ ์์ฝ: https://github.com/ipfs/go-ipfs/issues/1678#issuecomment -157478515
๋ํ ํ์ค URL ํ์ธ์ผ๋ก IPFS ์ ๋ ์ฃผ์๋ฅผ ์กฐ์ ํ๊ณ fs: ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ์ง ์๊ณ ์ถ์ฒ๋ฅผ ์๋ณํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์์ ์ด ์งํ ์ค์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ https://github.com/ipfs/in-web-browsers/issues/28 ๋ฐ ์ด์ ์ฌ์์ ๋ํ ๋งํฌ๊ฐ ์์ต๋๋ค. cc @lgierth
:( ipfs/go-ipfs#1678 ์ ์ฝ์ ํ ๋ ์ด์ IPFS์ ๊ด์ฌ์ด ์๋์ง ํ์ ์ด ์์ง ์์ต๋๋ค.
๋๋ ์ ๋ง๋ก ์์ ๊ฑฐ ์ฐฝ๊ณ ์ ๋ค์ด๊ฐ๊ธฐ๋ฅผ ์ํ์ง ์์ง๋ง ์ด๊ฒ์
It might help to imagine mounting the entire IPFS under /ipfs and then accessing the files like they are just that: Files in your file system.
๋๋ฅผ ํฅ๋ถ์ํค๋ ์์ด๋์ด๊ฐ ์๋๋๋ค. ๊ฐ์๊ธฐ ๋ค์๊ณผ ๊ฐ์ ์์คํ
๋ฃจํธ๊ฐ ์๋ค๊ณ ์์ํด๋ณด์ญ์์ค.
/btrfs/dev/sda1/..
/fat32/dev/sda2/..
/ext3/dev/sda3/boot/..
๊ทธ๊ฒ์ ๋์๊ฒ ์ดํํ๋ ๊ฐ๋ ์ด ์๋๋๋ค. ๋๋ ๋ด๊ฐ ์ข์ํ๋ ๋ฐฉ์์ผ๋ก ์์คํ ์ ๊ตฌ์ฑํ๊ณ ๋ด๊ฐ ์ ํํ ๋๋ก ํ์ผ ์์คํ ์ ๋ง์ดํธํ๋ ๋ฐ ์ต์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด ์ ๋ง๋ก ๋๋ฅผ ํ๋๊ฒ ํ๋ ๊ฒ์ด ์๋๋๋ค. ์ํ๋ ๊ณณ์ ipfs๋ฅผ ์์ ๋กญ๊ฒ ๋ง์ดํธํ ์ ์์ต๋๋ค. ๋๋ ๊ณผ๋๋ง์์ฆ์ ์ธ "๋ชจ๋ ๊ฒ์ ์ฌ์ฐฝ์กฐํ์"๋ ์ ๊ทผ ๋ฐฉ์์ ์ค๋งํ์ต๋๋ค. ๋ถ์ฐ CAS๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ IPFS์ ์์ต๋๋ค. ๊ทธ๊ฒ ๋ด๊ฐ ๊ด์ฌ์ ๊ฐ์ก๋ ์ ๋ถ๋ค. ๋๋ ์ ๋์ค๋ฅผ ์น๊ณผ ๋ณํฉํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ค. ๊ทธ๋ฌ๋ ๊ทธ ํ ๋ก ์ ์ฝ์ ํ IPFS๋ ๋ ์ด์ ๋ถ์ฐ CAS๋ฅผ ์ป๋ ๋ฐ ๋์์ด ๋๋ ์ ํ์ฒ๋ผ ๋ณด์ด์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ ์ ๊ฐ ์ปดํจํฐ์ ํ์ผ ์์คํ ์ ์ฌ์ฉํ๊ณ ์ด๋ฆ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ง์ํ๋ ์ ํ์ฒ๋ผ ๋ณด์ด๋ฉฐ ์ผ๋จ ์์ฑ์๊ฐ ํ ๊ฐ์ง๋ฅผ ์ง์ํ๋ฉด ์๋ง๋ ๊ทธ๋ค์ ๋ด ์ปดํจํฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์๋ก์ด ์์ด๋์ด. ๋ฏธ๋๋ฅผ ์์ธกํ ์๋ ์์ง๋ง ์ ๊ทผ ๋ฐฉ์์ด ๋ง์์ ๋ค์ง ์์ต๋๋ค.
IPFS์ ๋ถ์ฐ CAS ๊ตฌํ์ด ์ ๋ง ๋ง์์ ๋ญ๋๋ค. ๋๋ ์ค๋ซ๋์ ๋ถ์ฐ CAS๋ฅผ ๊ฐ๋ ๊ฒ์ ๊ฟ๊ฟ ์์ต๋๋ค :(. ๊ทธ๋์ ์ฐ๊ตฌ ๋ชจ๋๋ก ๋์๊ฐ์ ๋ค๋ฅธ ๋ถ์ฐ CAS๋ฅผ ์ดํด๋ด์ผ ํฉ๋๋ค...
@timthelion ์ ์ฒ๋ผ CAS์ IPFS์ ๊ด์ฌ์ด ๋ง์ผ์ ๊ฒ ๊ฐ์ต๋๋ค.
๊ณ ๊ฐ๋์ ๊ฑฑ์ ์ ๋์ด๋๋ฆด ์ ์๋๋ก ์ต์ ์ ๋คํ๊ฒ ์ต๋๋ค.
๋๋ ๋น์ ์ด IPFS๋ฅผ ์์คํ
์ ์ด๋ ๊ณณ์๋ ์ฅ์ฐฉํ์ง ์๊ณ CAS๋ก ์ฌ์ฉํ ์ ์๋ค๊ณ ํ์ ํฉ๋๋ค.
/ipfs/Qm..
๊ฒฝ๋ก์ ๋ํด ์๊ฐํ๋ ๋ฐฉ์์ ์ผ๋ฐ URL๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ํ์ ์ฐ๊ฒฐ์ ๋จ์ํํ๋ ์ ์ ์ ์ง๋ฆ๊ธธ์ด๋ผ๋ ๊ฒ์
๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ๋๋ "ํ๋กํ ์ฝ ํธ๋ค๋ฌ"์ "์ ๊ท ์ฃผ์ ์๋ฏธ๋ก " ์ํฉ์ด ์ง๊ธ ๋น์ฅ์ ๋ฐฉ๊ด์์๊ฒ ์๋ง์ผ๋ก ๋ณด์ผ ์ ์๋ค๋ ๋ฐ ๋์ํ์ง๋ง, ์ข์ ์ฌ๋๋ค์ด ์ค์ฉ์ ์ธ ์๋ฃจ์ ์ ์ฐ๊ตฌํ๊ณ ์์ผ๋ฏ๋ก ์ง๊ธ ๋น์ฅ์ ํจ๊ณผ๊ฐ ์์ ์ ์์ต๋๋ค(์: https://github.com/ ipfs/in-web-browsers/issues/3, https://github.com/ipfs/in-web-browsers/issues/7).
์ด๊ฒ์ ์ง์์ ์ธ ๋ํ์ด๋ฉฐ ์ด๋ฌํ ์ผ์๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
ํ๋ก์ ํธ์ ์ผ๋ฐ์ ์ธ ๋ฐฉํฅ(๋ด ๊ฐ์ธ์ ์ธ ์๊ฒฌ)์ _"๋ฌด์จ ์ผ์ด ์์ด๋ ๋ชจ๋ ๊ฒ์ ์ฌ์ฐฝ์กฐ"ํ๊ธฐ๋ณด๋ค๋ _"์ค์ฉ์ ์ธ ๊ฒฝ์ฐ ์ฐ์ ํ์ค์ ์ฌ์ฌ์ฉํ๋ ์ ์ฉํ ๋๊ตฌ๋ฅผ ๋ง๋๋ ๊ฒ"_์ ๋๋ค.
๋ฏธ๋์ ๋ํด ๊ฑฑ์ ํ ํ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. IPFS ๋๊ตฌ๋ _"์ ๋์ค ๋ฐฉ์"_์ ๋ฐ๋ฆ
๋๋ค. ์ฆ, ํ ๊ฐ์ง ์์
์ ์ํํ๋ ๋ง์ ์์ ๋๊ตฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ช
๋ น( git
ํ์ ๋ช
๋ น๊ณผ ์ ์ฌ)์ ํจ๊ป ์ฐ๊ฒฐํ์ฌ ๋ ํฐ ๊ฒ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ด๋ค ์กฐ๊ฐ์ ์ฌ์ฉํ ์ง๋ ๋น์ ์ด ๊ฒฐ์ ํฉ๋๋ค. โ๏ธ ๐ง
์๋ฌด๋ ๋ด ๋ง์ง๋ง ๊ฒ์๋ฌผ์ ์๋ชป๋ ๋ฐฉ์์ผ๋ก ๋ฐ์๋ค์ด์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. "๋ํฌ ๋ชจ๋๋ ๋ด๊ฐ ๋ ๋๋ ๊ฐ์์์"๋ผ๋ ๋ง์ ํ๋ ค๋ ๊ฒ์ด ์๋๋๋ค. ์์ฒ ๋ช ์ ์ฌ๋๋ค์ด IPFS๋ฅผ ์ดํด๋ณด๊ณ ๋ง์์ ๋ค์ง ์๋ ๊ฒ์ด ์๋ค๊ณ ๊ฒฐ์ ํ๊ณ ์ด์ ๋ฅผ ์ฐ์ง ์๊ณ ๋ ๋ฌ์ต๋๋ค. ์ ๋ ์ข ์ข ๊ทธ๋ ๊ฒ ํฉ๋๋ค. ๋๋ ๊ทธ์ ์๋ฌด๋ ์ง ์๊ฒ ๊ธฐ์ ์ ๋ณด๊ณ ์๋ชป๋ ๋ฐฉ์์ผ๋ก ๋๋ฅผ ๋ฌธ์ง๋ฅด๋ ์์ ์ธ๋ถ ์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฅธ ๊ธฐ์ ์ ์ ํํฉ๋๋ค. ์นจ๋ฌตํ๋ ๋ค์์ ์นจ๋ฌตํ๋ ์์์ด ๋๊ณ ์ถ์ง ์๊ณ , ๋ ์ ํ์ ์ฌ์ง๊ฐ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค :D ํ์ง๋ง ๊ธฐ๋ค๋ ค์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ฌ ํ๋ก์ ํธ์์ ipfs ์ฌ์ฉ์ ์์ํ๊ธฐ ์ ์ fs:// ๋๋ ํ๋ก์ ํธ ํค๋๊ฐ ์ ํํ๋ ๋ชจ๋ ๊ฒ์ ์ง์ํ๊ธฐ ์ํด ipfs๋ฅผ ์ฌ์ฉํ๊ณ ์ผ๋ถ ์ค์ ์ผ๋ฐ URL์ด ์กด์ฌํ ๋๊น์ง ์ง์งํ๊ฒ IPFS ๋ณด๊ธฐ๋ฅผ ์์ํ ์ ์์ ๊ฒ์ ๋๋ค.
๋๋ ๊ณผ๋๋ง์์ฆ์ ์ธ "๋ชจ๋ ๊ฒ์ ์ฌ์ฐฝ์กฐํ์"๋ ์ ๊ทผ ๋ฐฉ์์ ๊ฑฐ๋ถ๊ฐ์ ๋๋๋๋ค.
๋น์ ์ ๋์ทจ๋๊ณ ์์๊ณ , ์ด๊ฒ์ ๋ํ ์ด๋ค ๊ฒ๋ '๊ณผ๋๋ง์์ฆ'์ด๋ ์ฌ์ง์ด ์ฌ๋ฐ๋ช ๋ ์๋๋๋ค. ์ฐ๋ฆฌ๋ ํญ์ ๊ทธ๋๋ก ์ฌ์ฉ๋๋ ํ์ผ ๊ฒฝ๋ก์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. /ipfs์ ๋ง์ดํธํ๋ ๊ฒ์ ํต์ฌ ์์ด๋์ด๊ฐ ์๋๋ผ ์ฌ๋ฌผ์ ์ค๋ช ํ๊ธฐ ์ํ ์์์ผ ๋ฟ์ ๋๋ค.
๋๋ ๋ด๊ฐ ์ข์ํ๋ ๋ฐฉ์์ผ๋ก ์์คํ ์ ๊ตฌ์ฑํ๊ณ ๋ด๊ฐ ์ ํํ ๋๋ก ํ์ผ ์์คํ ์ ๋ง์ดํธํ๋ ๋ฐ ์ต์ํฉ๋๋ค.
์๋ฌด๋ IPFS๋ฅผ ๋ก์ปฌ ํ์ผ ์์คํ @timthelion ์ผ๋ก ๋ง์ดํธํ๋๋ก ๊ฐ์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ฉฐ ๋ง์ดํธ ๊ฒฝ๋ก๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋ ๊ธฐ๋ฅ์ ์ซ์ดํ๋ค๋ ๊ฒ์ IPFS๋ฅผ ์ ์ฒด์ ์ผ๋ก ๋ฌด์ํด์ผ ํ๋ ์ฝํ ์ด์ ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ํ์ง๋ง ์์ผ๋ก๋ ๋ง์์ ๋ฐ๊ฟ ๋ค์ ํจ๊ป ํ์๊ธธ ๋ฐ๋๋๋ค.
๋๋ ๋ชจ๋ ์ฌ๋์ด ๋ชจ๋ ๊ธฐ๋ฅ์ ์ข์ํ๋ ๋จ์ผ ์ ํ์ ๋ณธ ์ ์ด ์์ต๋๋ค.
์ด๊ฒ์ ์ค์ ๋ก ์๋ฌด๊ฒ๋ ์ฌ๋ฐ๋ช ํ์ง ์๋๋ค๋ ์ ๋ ์ธ๊ธํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ "๋ฐ๋ช ํ์ง ์๋" ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ์ ๋ค์ํ ์๊ฒฌ์๋ ๋ถ๊ตฌํ๊ณ ์ํ๋ ์ํํ ์ง์์ ์ ๊ณตํ fs://
์ฒ๋ฆฌ๊ธฐ๊ฐ ์ฐ๋ฆฌ๊ฐ ๋งํ๋ ๋๋ก ๊ตฌํ๋๊ณ ์์ผ๋ฉฐ ์ด๋ฏธ ๋ธ๋ผ์ฐ์ ํ์ฅ ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก PoC๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก PoC ๊ตฌํ์ ์ํด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ ์ ํฌ์ฅ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ง์์ ๊ตฌํํ ์๋ ์์ต๋๋ค. ๋ ๋นจ๋ฆฌ ์งํํ๊ธฐ ์ํด ์ด๋ฌํ ๋
ธ๋ ฅ์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.
"๋น์ ์ ๋์ ์๊ณ ์์๊ณ , ์ด๊ฒ์ ๊ดํ ๊ฒ์ '๊ณผ๋๋ง์'์ด๊ฑฐ๋ ์ฌ์ง์ด ์ฌ๋ฐ๋ช ๋ ์๋๋๋ค."
๋๋ https://github.com/multiformats/multiaddr ์ ํ์์ค๋ฝ๊ณ ์ฌ์ฐฝ์กฐํ๋ ๊ฒ์ผ๋ก ํด์ํฉ๋๋ค. URL๊ณผ๋ ๋ค๋ฅธ ํ์์ด์ง๋ง ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ ๋๋ค. ๊ทธ๋ฐ ์ค์ํ ํ์ค์ ์ฌ๋ฐ๋ช ํ๋ ค๋ฉด ์ ๋ง ๊ทธ๋ด๋ฏํ ์ด์ ๊ฐ ํ์ํฉ๋๋ค.
์กฐ๊ธ ๋ ์์ธํ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
"์ฐ๋ฆฌ๋ ํญ์ ๊ทธ๋๋ก ์ฌ์ฉ๋๋ ํ์ผ ๊ฒฝ๋ก์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค."
์ด ์์ด๋์ด๋ก ์ฌ๋ฌ๋ถ์ด ์ด๋๋ก ๊ฐ๊ณ ์๋์ง ์ ๊ฒ ๊ฐ์ต๋๋ค. ์น ๋ฆฌ์์ค๋ฅผ ์ผ๋ฐ ํ์ผ์ฒ๋ผ ์ทจ๊ธํ ์ ์๋ค๋ ์ฌ์ค์ ์์ ํ๋ ค๋ "์ค์"์
๋๊น? ๊ทธ๋ฐ ์์ผ๋ก ๋๋ cat http://google.com/index.html
ํ ์ ์์ต๋๊น? ๊ทธ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด ์ฌํ๋ค๋ ๋ฐ ๋์ํ ์ ์์ต๋๋ค. ๋ด๊ฐ OS๋ฅผ ์์ฑํ๋ค๋ฉด ํ์ผ์ ๋ํ URL์ ์ด ์ ์๋ open
ํจ์๋ฅผ ๋ง๋ค ๊ฒ์
๋๋ค. ์๋ง๋ ๊ทธ๋ฌํ ๋ณํ๋ ๋ฆฌ๋
์ค์์๋ ์ด๋ฃจ์ด์ง ์ ์์ต๋๋ค. ์ ๊ทผ ๋ฐฉ์์ด ๋ค๋ฅด๋ฉฐ ์น ๋ฆฌ์์ค๋ฅผ POSIX ํ์ผ ๊ณ์ธต์ ์ฝ์
ํ๋ ค๊ณ ํฉ๋๋ค. URL์ด ์๋ชป๋์๋ค๊ณ ์๊ฐํ๋ ๋ค๋ฅธ ์ด์ ๊ฐ ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
์น ๋ฆฌ์์ค๋ฅผ ์ผ๋ฐ ํ์ผ์ฒ๋ผ ์๋์ํค๋ ค๋ ๋น์ ์ ๋ชฉํ์ ํ์คํ ๊ณต๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ "์ค์"๋ฅผ ์์ ํ๋ ๋น์ ์ ๋ฐฉ๋ฒ์ ๋์๊ฒ ๊ฝค ๋ฏธ๋๋ฌ์ด ๊ฒฝ์ฌ๋ก ๋ณด์ธ๋ค. ipfs ํ์ผ ์์คํ ์ ๋ง์ดํธํ๋๋ก ์ ํํ๋ฉด ํด๋น ๋ง์ดํธ ์ง์ ์ด ์ ์๊ฒ ์๋ก์ด ๋์์ ๋๋ค. ๋ด ์์คํ ์ ์ค์นํ ์ ์๋ ๋ค๋ฅธ ์ฌ์ฉ์ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์๊ฐํ ์ ์์ต๋๋ค. ์ด ํ๋ก๊ทธ๋จ์ ๋ด ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ์ง์ ์ฌ๋ฌ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.
์ค๋ ls /
๋ฅผ ํ๋ฉด ๋ค์์ ์ป์ต๋๋ค.
$ ls /
bin/ dev/ home/ lib/ media/ opt/ root/ sbin/ sys/ usr/ vmlinuz@
boot/ etc/ initrd.img@ lib64/ mnt/ proc/ run/ srv/ tmp/ var/
multiaddr์ด ์ ์ํ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ ๋ค์์ ๋ณผ ์ ์์ต๋๋ค.
$ ls /
bin/ bitcoin/ boot/ dev/ dns/ dns4/ dns6/ etc/ home/ http/ https/ initrd.img@ ipfs/ lib/ lib64/
libp2p-circuit-relay/ libp2p-webrtc-direct/ libp2p-webrtc-star/ media/ mnt/ onion/ opt/ p2p/
proc/ root/ run/ sbin/ sctp/ srv/ sys/ tmp/ udt/ unix/ usr/ utp/ var/ vmlinuz@
https://github.com/multiformats/multiaddr/blob/master/protocols.csv
๊ทธ๋ฆฌ๊ณ ํ์ค์ ์๋ชป ํด์ํ๋ค๊ณ ๋น๋ํ๊ธฐ ์ ์ ์ ๋์ค ๊ฒฝ๋ก๊ฐ ํญ์ ํด์๋๋ ๊ฒ๊ณผ ๋๊ฐ์ ๋ฐฉ์์ผ๋ก ํ์ค์ ํด์ํ๊ณ ์์์ ์๊ธฐ์์ผ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ถ๋ช ํ, ๋๋ ๋ด ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ฅผ ์๋ง์ผ๋ก ๋ง๋ค๊ณ ์ถ์ง ์์ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ๊ฒฝ๋ก๋ฅผ ๋ง์ดํธํ์ง ์๊ธฐ๋ก ์ ํํฉ๋๋ค.
์ ๊ฒฝ์ฐ์๋ ์ด๊ฒ์ด ์ ์ ํ์ด ์๋๋๋ค. ์ ๋ IPFS๋ฅผ ์ฌ์ฉํ๋ ์ํํธ์จ์ด๋ฅผ ์์ฑํ๊ณ ์ถ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํด๋น ๊ฒฝ๋ก๋ฅผ ๋ง์ดํธํ ์ง ์ฌ๋ถ๋ ์ ๊ฒฐ์ ์ด ์๋๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ฌ์ ํ ๋ด ์ฌ์ฉ์๊ฐ ๋ก์ปฌ ์์คํ ์์ ํ์ผ์ ์ด ์ ์๋ ๊ฒ์ฒ๋ผ ์ฝ๊ฒ IPFS๋ฅผ ํตํด ๊ณต์ ๋ ํ์ผ์ ์ด ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ทธ๋ผ ๊ทธ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์์ฑํด์ผ ํ ๊น์? ipfs๊ฐ ํ์ค URL์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ipfs://๋ก ์์ํ๋ ๋ชจ๋ ๊ฒ์ ipfs๋ก ์ ๋ฌํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๊ฐ๋จํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ด ํ๋ก๊ทธ๋จ์ด /
์์ํ๋ ๋ฌธ์์ด์ ๋ณผ ๋ ๋๊ตฐ๊ฐ ์ปดํจํฐ, ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๊ฐ ์คํ ์ค์ธ ์ปดํจํฐ์ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ์ ๋ํ ์ ๋ ๊ฒฝ๋ก๋ก ํด์ํฉ๋๋ค. /
๋ก ์์ํ๋ ๊ฒฝ๋ก๋ฅผ ๋ฐฉ๋ฌธํ๋ผ๋ ์ง์๋ฅผ ๋ฐ์ผ๋ฉด ๋ก์ปฌ ์์คํ
์ ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ์ ๋ํ ์ ๋ ๊ฒฝ๋ก๋ก ํ์คํ ํด์ํฉ๋๋ค. ๋ด ์ปดํจํฐ์ /ipfs
๊ฐ ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์์ ํ์ผ์ ์ฐพ์ ์ ์์ ์ค๋ฅ๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ด ๋ฐฉ๋ฌธํ๋๋ก ์ง์๋ฐ์ ์ ๋ ๊ฒฝ๋ก๊ฐ ๋ก์ปฌ ์์คํ
์ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ด์ด์ง๋ ๋ค๋ฅธ ์๋ ์๊ฐํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ค๋ ๊ธฐ๊ฐ Linux ์ฌ์ฉ์/๊ฐ๋ฐ์๋ก์ ์ด๊ฒ์ ์๋ก์ด ๋์์
๋๋ค.
๋ด ์์ฉ ํ๋ก๊ทธ๋จ์ด multiaddr์ ๋ํ ์ง์์ ์ถ๊ฐํ๋ ค๊ณ ํ๋ฉด ์ํฉ์ด ๋งค์ฐ ๋นจ๋ฆฌ ๋ณต์กํด์ง ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ค์์ ์คํํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
$tims-program-that-supports-normal-files-as-well-as-multiaddr /http/index.html
?
๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๋ html ํ์ผ์ /http
์ ์ ์ฅํ๋ ์น ์๋ฒ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ ํ ๋ค์ด๋ณธ ์ ์ด ์์ต๋๋ค. ๋ด ํ๋ก๊ทธ๋จ์ด ์ด๊ฒ์ ๋ค์ค ์ฃผ์ ๋๋ ๋ก์ปฌ ํ์ผ๋ก ํด๊ฒฐํด์ผ ํฉ๋๊น?
๋๋ ํ์ด์ฌ์์ URL์ ์ฌ๋ ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ ์ผ๋ถ ์ฝ๋๋ฅผ ์ด๋ฏธ ์์ฑํ์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ ๊ฝค ์ฌ์ ์ต๋๋ค. ๊ทธ๋ฌ๋ multiaddr ๊ฒฝ๋ก์ ๋ก์ปฌ ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ๋ช ํํ๊ฒ ํด์ํ๋๋ก ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
if filename.startswith( "http://" ) or filename.startswith( "https://" ):
import urllib.request
try:
with urllib.request.urlopen(filename) as webgraph:
self.json = webgraph.read().decode("utf-8")
except urllib.error.URLError as e:
raise OSError(str(e))
else:
try:
with open(filename) as fd:
self.json = fd.read()
except FileNotFoundError:
pass
๋๋ ๊ทธ๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํ์ง ์๋๋ค. ๋ฐ๋ผ์ multiaddr ์ง์์ ๊ตฌํํ์ง ์๊ณ ์ผ๋ฐ URL๋ง ์ง์ํ๊ฒ ๋์์ต๋๋ค. ์ฒ์์๋ ๊ด์ฐฎ์ ๋ณด์ด์ง๋ง ipfs ์ฌ์ฉ์๋ ipfs ๊ฐ์ฒด์ ๋ํ ๋ค์ค ์ฃผ์ ์ฃผ์์ ์ง์์ ์ผ๋ก ๋ ธ์ถ๋ ๊ฒ์ด๋ฉฐ IPFS ์ง์์ ๊ด๊ณ ํ๋ ๋ด ํ๋ก๊ทธ๋จ์ ์ด๋ฌํ ๊ฒฝ๋ก๊ฐ ์กด์ฌํ์ง ์๋๋ค๊ณ ์ฃผ์ฅํ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ง์์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๊ด๊ณ์์ด ๋ด ํ๋ก๊ทธ๋จ์ ์ค๋จ๋ ๊ฒ์ ๋๋ค. ipfs์ ๋ํ ์ง์์ด ์ค๋จ๋๊ฑฐ๋ ํ์ค POSIX ํ์ผ ์์คํ ์ ๋ํ ์ง์์ด ์ค๋จ๋ฉ๋๋ค.
์ ์ฌ์ ์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ํ๋๋ multiaddr์ ์์ ํ ํฌ๊ธฐํ๋ ๊ฒ์
๋๋ค. ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ multiaddr์ ๋ณ๊ฒฝํ์ฌ ์ต์ํ ํด๋น ๊ฒฝ๋ก๋ฅผ ๋จ์ผ ํ์ ๋๋ ํ ๋ฆฌ๋ก ์ ํํ๋๋ก ํ๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ /ipfs/hash/blah
๋ฅผ ์ฐ๋ ๋์ /webfs/ipfs/hash/blah
๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ls /
๋ ๋ค์์ ๋ฐํํฉ๋๋ค.
$ ls /
bin/ dev/ home/ lib/ media/ opt/ root/ sbin/ sys/ usr/ vmlinuz@
boot/ etc/ initrd.img@ lib64/ mnt/ proc/ run/ srv/ tmp/ var/ webfs/
๊ทธ๊ฒ์ ๋ด๊ฐ ์ด ์ ์๊ณ ์ด์ฉ๋ฉด ๋ค์ฒ์ง ์๋ ์๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ํ์ฌ ์ํฉ์ ipfs ์ง์์ ๊ตฌํํ๋ ๋ง์กฑ์ค๋ฌ์ด ๋ฐฉ๋ฒ์ด ์ ํ ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ ๋ง์ CONCRETE ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋งํฌ๋ค์ด์ PDF๋ก ๋ณํํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ณ ์๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ IPFS์ ์ด๋ฏธ์ง ํฌํจ์ ์ง์ํ ์ ์๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๋ ๋ค์๊ณผ ๊ฐ์ด ์๋๋ค.
๋ค๋ฝ๋ฐฉ.md
````
๋ฐ์์ ์ค๋๋ ์์์ ๋๋ค.
````
๊ทธ๋ฆฌ๊ณ ์คํ
$ tims-md-to-pdf-with-ipfs-support attic.md > attic.pdf
๋ด ํ๋ก๊ทธ๋จ์ ์ด๋ฌํ ์ด๋ฏธ์ง ๊ฒฝ๋ก๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํด์ผ ํฉ๋๊น? /ipfs
ํ์ผ ์์คํ
์ด ๋ง์ดํธ๋์ด ์๋ค๊ณ ๊ฐ์ ํด์ผ ํฉ๋๊น? ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ฌ์ฉ์๊ฐ /ipfs
๋ฅผ ๋ง์ดํธํ์ง ์์๋ ๋๋ค๋ ๋ฐ ๋์ํ์ต๋๋ค. ํ๋ก๊ทธ๋จ์์ /ipfs/
๋ฅผ ํน์ ์ ๋์ฌ๋ก ์ทจ๊ธํด์ผ ํฉ๋๊น? ์ด์ํ๊ณ ๊ณ ์ฅ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ๋ก๊ทธ๋จ์ด fs://
๋ง ์ง์ํ๊ณ ํด๋น ๊ฒฝ๋ก์์ ํ์ผ์ ์ฐพ์ ์ ์๋ค๋ ์ค๋ฅ๋ฅผ ๋ฐํํด์ผ ํฉ๋๊น? ๊ทธ๊ฒ์ ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์ด์ง๋ง multiaddr ํ์ค์ ์ต์ํ ์ฌ์ฉ์๋ฅผ ํผ๋์ค๋ฝ๊ฒ ํ ๊ฒ์
๋๋ค. ๊ฐ๋ฐฉ์์ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ์์ต๋๋ค! :/ :(
์ค๋ช ์ ์ํด ํธ์ง๋จ
@timthelion ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ ๊ณตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํ๋กํ ์ฝ์ด ์ค์ ์ฌ๋๋ค์๊ฒ ์ ๋๋ก ์๋ํ๋์ง ํ์ธํ ์ ์๋๋ก ์ฌ๋๋ค์ด ์ค์ ์ฌ๋ก๋ฅผ ์ ๊ณตํ๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@lidel์ด ์ง์ ํ๋ฏ์ด ์ฌ๋๋ค์ ํ์ฌ ์ฃผ์ ์ฒด๊ณ๋ฅผ ์ค๊ณํ๋ ์ค์ด๋ฏ๋ก ์์ง ๋ฌธ์๊ฐ ์์ต๋๋ค. @jbenet ์ ํ์ผ ์์คํ
๋ง์ดํธ ์์ ๊ฐ ํผ๋์ fs:
๋๋ dweb:
์ฃผ์ ์ฒด๊ณ ์ด๋ฉด์ ๊ฐ๋
์ ๋ชจ๋ธ์ ํตํด ์๊ฐํ๋ ๋ฐ ๋์์ ์ฃผ๊ธฐ ์ํ ์์์ผ ๋ฟ์
๋๋ค. ๊ทธ๋ ๋ชจ๋ ์ฌ๋์ด ํ์ผ ์์คํ
์ ์๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ค์ ๋ก ๋ง์ดํธํ๋๋ก ๊ฐ์ํ์ง ์์ต๋๋ค. ์คํ๋ ค ๊ทธ๋ ์ฝํ
์ธ ๊ฐ ๋ก์ปฌ ํ์ผ ์์คํ
์ ๋ง์ดํธ๋ ๊ฒ์ฒ๋ผ ์๋ํ๋ ์ฃผ์๋ก ์ฝํ
์ธ ๋ฅผ _์๋ณ_ํ ์ ์์ด์ผ ํ๋ค๊ณ ์ ์ํฉ๋๋ค. ๊ทธ๋์ผ Unix/posix ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ web/dweb ์ฝํ
์ธ ์ ์ํธ ์์ฉํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ฌธ์๋ฅผ ์์ฑํ ๋ ์ด๋ฅผ ๋ช ํํ ํ๊ธฐ ์ํด ์ฃผ์ํด์ผ ํฉ๋๋ค. ์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
'๋ค๋ฝ๋ฐฉ์ ์๋ ๋ฌผ๊ฑด' ์์ ๋ํ ๋ต๋ณ์ผ๋ก, ๋ค์๊ณผ ๊ฐ์ด ๋งํฌ์ fs:/
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Stuff I found in my attic
----------------------------------
![An old box of rocks](fs:/ipfs/QmdyWzsrBvSkPYPU1ScBpwzfCcegzbc6c2hkEBLLJ6VcPV)
An old box of rocks.
![A can of oil for water-proofing leather](fs:/ipfs/QmUPC5xbVtu6NxMwFBtmWVjrVM3XffuPtSMLpmDFGfTaKG)
์ฐธ๊ณ ์ฌํญ: ์ฃผ์๋ฅผ ๋จ์ํ๊ฒ ์ ์งํ๋ ๋ฌธ์ ๋ ์์ต๋๋ค. ์ด ์๊ฒฌ์์ @nicola ๋ fs:
/ dweb:
์ฃผ์ ์ฒด๊ณ์์ ๋ฒ์ด๋์ง ์๊ณ ipfs:/
๋ฐ ipns:/
์ฃผ์๋ฅผ ์ง์ํ๋ ์๋ฆฌํ ๋ฐฉ๋ฒ์ ์ ์ํ์ต๋๋ค. ๊ด๋ จ๋ ํ๋กํ ์ฝ ์ค๊ณ ์ฒด์กฐ๋ (IMHO) ์ด์ํ๊ฒ ํผ๋๋์ง๋ง ๊ฒฐ๊ตญ ipfs:/QmdyWzsrBvSkPYPU1ScBpwzfCcegzbc6c2hkEBLLJ6VcPV
์ ๊ฐ์ ๋งํฌ๋ค์ด์ ๋งํฌ๋ฅผ ํ์ฉํ๋ ๋์์ ์ฌ๋๋ค์ด fs:/ipfs/QmdyWzsrBvSkPYPU1ScBpwzfCcegzbc6c2hkEBLLJ6VcPV
๋๋ unix/posix ์ปจํ
์คํธ์์ /ipfs/QmdyWzsrBvSkPYPU1ScBpwzfCcegzbc6c2hkEBLLJ6VcPV
์
๋๋ค.
์ ๋ ๊ฒฝ๋ก์ ๊ด๋ จํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๋งํ์ต๋๋ค.
/๋ก ์์ํ๋ ๊ฒฝ๋ก๋ฅผ ๋ฐฉ๋ฌธํ๋ผ๋ ์ง์๋ฅผ ๋ฐ์ผ๋ฉด ๋ถ๋ช ํ ๋ก์ปฌ ์์คํ ์ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ์ ๋ํ ์ ๋ ๊ฒฝ๋ก๋ก ํด์ํฉ๋๋ค.
์ ๋ ๊ฒฝ๋ก๊ฐ ํ์ผ ์์คํ
์ ๋ฃจํธ๊ฐ ์๋ _context_์ ์๋์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ์ ์ ๋ช
์ฌํ์ญ์์ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์๋ HTML์ ์ ๋ ๊ฒฝ๋ก๋ก, ์๋ฒ ํ์ผ ์์คํ
์ ๋ฃจํธ๊ฐ ์๋ ํ์ฌ origin
์ ๋ฃจํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค. ๋ชจ๋ ๊ฒฝ๋ก๊ฐ fs:
๋๋ dweb:
๋ผ๊ณ ๊ฐ์ ํ๋ ์ปจํ
์คํธ ๋ด์์ ์๋ํ๋ ์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋น ์ฝ๋๊ฐ /ipfs/
์์ํ๋ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์์ ํ ์ ํจํฉ๋๋ค. ํด๋น ์ฝ๋๊ฐ ํ์ผ ์์คํ
์ /ipfs
์ ipfs๋ฅผ ๋ง ๊ทธ๋๋ก ๋ง์ดํธํ์ง ์๊ณ ๊ฒฝ๋ก๋ฅผ ํด๊ฒฐํ๋ ๋ง์ ๋ฐฉ๋ฒ.
์ด๊ฒ์ ๋ด 2 ์ผํธ์ ๋๋ค.
fs:/
์๋์ ์์ผ๋ฉฐ ๋ชจ๋ ๋๋ฉ์ธ์ด http:/
์๋์ ์๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค./
์ ๋๋ฉ์ธ ์ด๋ฆ ์์คํ
์ ๋ง์ดํธํ์ง ์๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก /
์ ์ ์ฒด IPFS๋ฅผ ๋ง์ดํธํ์ง ์์ต๋๋ค. ๋ ์์คํ
์์ ์ฐธ์กฐ ์ง์ ์ ์ฒด๊ณ์ ์๋์ ์ธ /
( http:/
, fs:/
).๋๋ ๋๋ถ๋ถ์ ์์์ ๋ชจ๋ ํ์ผ ์์คํ
์ด /
์ ipfs๋ฅผ ๋ง์ดํธํ๋ค๋ ๊ฐ๋
์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ fs:/
ํ๋ฉด URI ํ์์ด ์์๋์ง ์์ต๋๋ค.
์คํ๋ ค ๊ทธ๋ ์ฝํ ์ธ ๊ฐ ๋ก์ปฌ ํ์ผ ์์คํ ์ ๋ง์ดํธ๋ ๊ฒ์ฒ๋ผ ๋์ํ๋ ์ฃผ์๋ก ์ฝํ ์ธ ๋ฅผ ์๋ณํ ์ ์์ด์ผ ํ๋ค๊ณ ์ ์ํฉ๋๋ค. ๊ทธ๋์ผ Unix/posix ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ web/dweb ์ฝํ ์ธ ์ ์ํธ ์์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
"๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ ๋์ค/ํฌ์์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์น/๋์น ์ฝํ
์ธ ์ ์ํธ์์ฉํ ์ ์๊ฒ ํด์ค ๊ฒ์
๋๋ค." fs:
์ ๋์ด๊ฐ ์๋ ๊ตฌ๋ฌธ์ด ์ ๋์ค ๋๊ตฌ์ ํจ๊ป ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ์ ๊ตฌ์ฒด์ ์ธ ์๋ฅผ ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น? ์ด์จ๋ , ๋๋ ์์ง๋ ๊ทธ๊ฒ์ ์ป์ง ๋ชปํ๋ค.
์ง์ ์์ ๋ฅผ ๋ง๋ค๋ ค๊ณ ํ์ง๋ง multiaddr ํธํ /ipfs
์ ๋์ด ๊ตฌ๋ฌธ์ด ์๋ฏธ๊ฐ ์๋ ์์ ๋ฅผ ์๊ฐํ ์ ์์ต๋๋ค.
multiaddr ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ipfs๋ฅผ ์ง์ํ๋ bash์ diff ์ ํธ๋ฆฌํฐ์ ๋ํ ๋ํผ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๋ ค๊ณ ํ์ต๋๋ค.
````
ํฐ๋ชจ์ @yoga ~/c/ipfs-multiaddr> ๊ณ ์์ด multiaddr-diff
get_multiaddr_or_normal_file_getter(){
if [[ $1 == /ipfs/* ]] ;
๊ทธ ๋ค์์
file_getter="ipfs ๊ณ ์์ด $1"
๋ ๋ค๋ฅธ
file_getter="๊ณ ์์ด $1"
ํ์ด
์์ฝ $file_getter
}
ํ์ผ1= get_multiaddr_or_normal_file_getter $1
ํ์ผ2= get_multiaddr_or_normal_file_getter $2
์ฐจ์ด <($file1) <($file2)
````
์ผ๋ฐ ํ์ผ๊ณผ ipfs ํ์ผ ๋ชจ๋์์ ์์งํ ๊ฒฝ์ฐ์ ์๋ํฉ๋๋ค.
````
ํฐ๋ชจ์ @yoga ~/c/ipfs-multiaddr>
./multiaddr-diff ../subuser/COPYING.LGPL /ipfs/QmSRrBvLXvYQRdQ3kZtJ5oJicKMcNQzC3CwH6bJDbEKWYp
127a128,130
f) ์ฒซ์งธ ๋ ์ ๋ก๋ผ์ค ์ ์๊ฒ ์ฒซ ์์ด๋ฅผ ๋ฐ์น์ญ์์ค.
๋ค์ ์ง์ ํด์ ๋ณด๋ฆ๋ฌ.````
๊ทธ๋ฌ๋ ๋ด๊ฐ ๋ง๋ /ipfs/
๋๋ ํ ๋ฆฌ์ ์๋ ์ค์ ๊ธฐ์กด ํ์ผ์์ ์๋ํ๋ ๋ฐ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
timothy<strong i="39">@yoga</strong> ~/c/ipfs-multiaddr> su
Password:
root<strong i="40">@yoga</strong>:/home/timothy/current/ipfs-multiaddr# mkdir /ipfs/
root<strong i="41">@yoga</strong>:/home/timothy/current/ipfs-multiaddr# echo "foo">/ipfs/foo
root<strong i="42">@yoga</strong>:/home/timothy/current/ipfs-multiaddr# exit
exit
timothy<strong i="43">@yoga</strong> ~/c/ipfs-multiaddr> ./multiaddr-diff ../subuser/COPYING.LGPL /ipfs/foo
Error: selected encoding not supported
....
๋ค์ค ์ฃผ์ ์ฃผ์์ ์ผ๋ฐ ์ ๋์ค ํ์ผ ๋ชจ๋์์ ์์ ์ ์ผ๋ก ์๋ํ ์ ์๋๋ก ํด๋น ์ ํธ๋ฆฌํฐ๋ฅผ ํธ์งํ๋ ๋ฐฉ๋ฒ์ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ฐ๋ฉด์ url ์คํ์ผ ๊ตฌ๋ฌธ๋ง ์ง์ํ๋ diff ๋ํผ๋ฅผ ๋ง๋๋ ๊ฒ์ ์ด๋ ต์ง ์์ต๋๋ค.
````
ํฐ๋ชจ์ @yoga ~/c/ipfs-multiaddr> ๊ณ ์์ด url-syntax-diff
get_multiaddr_or_normal_file_getter(){
if [[ $1 == fs:* ]] ;
๊ทธ ๋ค์์
์ ๋์ฌ="fs:"
internal_path=${1#$์ ๋์ฌ}
file_getter="ipfs ๊ณ ์์ด $internal_path"
๋ ๋ค๋ฅธ
file_getter="๊ณ ์์ด $1"
ํ์ด
์์ฝ $file_getter
}
ํ์ผ1= get_multiaddr_or_normal_file_getter $1
ํ์ผ2= get_multiaddr_or_normal_file_getter $2
์์ฝ $file1
์์ฝ $file2
์ฐจ์ด <($file1) <($file2)
````
๊ทธ๊ฒ์ ์ ์๋ํ๋ฉฐ ํด์๊ฐ ์ด๋ฏธ ์์ญ์ต 5์ ๊ธธ์ด์ผ ๋ 3๊ฐ์ ์ถ๊ฐ ๋ฌธ์๋ ํ์คํ ํฐ ์ฐจ์ด๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค.
````
ํฐ๋ชจ์ @yoga ~/c/ipfs-multiaddr>
./url-syntax-diff ../subuser/COPYING.LGPL fs:/ipfs/QmSRrBvLXvYQRdQ3kZtJ5oJicKMcNQzC3CwH6bJDbEKWYp
๊ณ ์์ด ../subuser/COPYING.LGPL
ipfs ๊ณ ์์ด /ipfs/QmSRrBvLXvYQRdQ3kZtJ5oJicKMcNQzC3CwH6bJDbEKWYp
127a128,130
f) ์ฒซ ๋ฒ์งธ ๋ ์ ๋ก๋ผ์ค ์ ์๊ฒ ์ฒซ ์์ด๋ฅผ ์ ๋ฌผ๋ก ๋ฐ์น์ญ์์ค.
๋ค์ ์ง์ ํด์ ๋ณด๋ฆ๋ฌ.ํฐ๋ชจ์ @yoga ~/c/ipfs-multiaddr>
````
๊ทธ๋ฆฌ๊ณ ์ด์ํ ๊ฒฝ์ฐ์๋ ์ ๋ค๋ฌ์ด์ง POSIX ์ ํธ๋ฆฌํฐ์์ ๊ธฐ๋ํ ์ ์๋ ๊ฒ์ฒ๋ผ ํ๋ฅญํ๊ฒ ์ํ๋ฉ๋๋ค.
````
timothy @yoga ~/c/ipfs-multiaddr> echo "๋ฐ" >๋ฐ
ํฐ๋ชจ์ @yoga ~/c/ipfs-multiaddr> ./url-syntax-diff bar /ipfs/foo
๊ณ ์์ด ๋ฐ
๊ณ ์์ด /ipfs/foo
1c1
ํธ
````
fs: ๋ฐ dweb:์ ๋ํ ํ ๋ก ์ด ๋์ด ์๋ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ด ํ๋ณด์ ๋ํ ์ ๋ณด๊ฐ ์ฌ์ ํ ํ์ํฉ๋๋ค. https://github.com/ipfs/specs/pull/139
ipfs ์ฌ์ฉ: ๊ทธ ๋์ ์ ์ด๋ ์ ์๊ฒ๋ ๋ง์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
@pawal ํ์จ, ๋น์ ์ ๋๊ธ์ ๋ณด๊ณ ์์๊ธฐ ๋๋ฌธ ์ ๋๋ค.
ํ @jbenet
์ด์ ์ ๋ด๊ฐ ์์ง ๋ชปํ๋ ๋ฌธ์ ์ ๋ํ ๊ด์ ์ ๊ฐ์กฐํ ๊ทํ์ ์ด์ ๊ฒ์๋ฌผ์ ๋ํ ๋ต๋ณ์๋ ๊ด์ฌ์ด ์์ต๋๋ค.
// ํธ์ง: ์ฆ, ์ฌ์ ํ ๋ฌธ์ ๋ฅผ ์ถ์ ํ๊ณ ์์ผ๋ฉฐ ๋ง์กฑ์ค๋ฌ์ด ๋ต๋ณ์ ์ ๊ณตํ๋ค๋ฉด ์๋ตํ์ ๊ฒ์ ๋๋ค.
+1
ํ์ค์ผ๋ก 'ipfs://'๊ฐ ์๋ํ๋๋ก ํฉ๋๋ค. ์ ๋ฐ.
(๋ฐ๋ผ์ ์ฐ๋ฆฌ์ ๋ชจ๋ ์ฑ์ ๋ชจ๋ ํ๋ซํผ, ๋ชจ๋ ๊ณณ์์ ์๋ํ๋ค๊ณ ๊ฐ์ ํ ์ ์์ต๋๋ค.
์ด๋์์๋ ๋ช
ํจ์)
๊ณ ๋ง์.
์ค๋ฆฌ์ ์ค๋ฏธ์ค
๋ธ๋กํ๋ฌผโข
ipfs:
vs. fs:
vs. dweb:
์ ๋ํ ํ ๋ก ์ ์ ๊ฐ ์ด ํ๋ก์ ํธ์ ์ฐธ์ฌํ๊ธฐ ์ ๋ถํฐ ๊ณ์๋์ด์จ ํผ๋์ค๋ฌ์ด ๊ฒ์
๋๋ค. ๋๋ ๋ง์นจ๋ด ์น ๋ธ๋ผ์ฐ์ ์คํ๋ฆฐํธ์ IPFS ๋์ ๊ทธ๊ฒ์ ๋ํด ๋จธ๋ฆฌ๋ฅผ ์์ผ ์๊ฐ์ ๊ฐ๊ฒ ๋์๋ค. ๋๋ ์ค๋ ๋์ค์ ipfs/specs์ ๋ํ PR๋ก ์ ์ถํ ๋ค์ํ ์ต์
๊ณผ ์ธ์์ ๊ฐ์์ ํจ๊ป ์ ์ฒด ๊ทธ๋ฆผ์ ๋ํ ์ค๋ช
์ ์์ฑํ๊ณ ์์ต๋๋ค. ๋ด๊ฐ ์๊ณ ์๋ ํ ๋ก ์ ๋ํ ์์ ์ฐธ์กฐ๋ฅผ ํฌํจํ ๊ฒ์
๋๋ค. ๋ฐ๋ผ๊ฑด๋ ๊ทธ๊ฒ์ ์ฝ๊ฐ์ ๋ช
ํ์ฑ์ ์ ๊ณตํ๊ณ ์ฅ๊ธฐ์ ์ผ๋ก ํฐ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ์ค์๋ฅผ ์ ์ง๋ฅด์ง ์๊ณ ๊ฐ์ฅ ์ค์ฉ์ ์ธ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ์์ผ๋ก ๋์๊ฐ ์ ์๊ฒ ํด ์ค ๊ฒ์
๋๋ค.
์ ๋ ์ด ํ ๋ก ์ ๋ํ ๋ฐฐ๊ฒฝ์ ์ ๊ณตํ๊ธฐ ์ํด ์ด๊ธฐ์ ์๋ํ์ต๋๋ค. https://github.com/ipfs/specs/pull/152 ์ ํํ์ง ์๊ฑฐ๋ ๋ถ์์ ํ๊ฑฐ๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ ์ด ํ์ํ ์ ๋ณด๋ก PR์ ์ ๋ฐ์ดํธํ์ญ์์ค.
๋ฌด์งํด์ ์ฃ์กํฉ๋๋ค๋ง PR์ ์ ๋ฐ์ดํธํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
@timthelion ๋น์ ์ @jbenet์ฒ๋ผ์ํ๊ณ ์ฃผ์์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค ์ฌ๊ธฐ ๊ฑฐ๋, ์ปค๋ฐ, ์ ์ก ํจ์น ๋ฑ์ REPO๋ฅผ ๋ณต์ ๋ถ๊ธฐ๋ฅผ ์ฒดํฌ ์์, ์์ ํ ์ ์์ต๋๋ค
@vasa-develop ๊ทํ์ ์๊ฒฌ์ ์ค์ ๋ก ์ํํธ์จ์ด๊ฐ ์ํฉ์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ์ง ์์ผ๋ฏ๋ก ์คํธ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค.
DID URI๋ ์ด๋ป์ต๋๊น? did:ipfs:QmSRrBvLXvYQRdQ3kZtJ5oJicKMcNQzC3CwH6bJDbEKWYp
์ ๊ฐ์
DID๋ ์ฌ๋์ ์๋ณ์์ ๋๋ค. ๊ทธ๋ฌ๋ ํต์ฌ์ ์ผ๋ก๋ ์ค์ ๋ก URN(๋ด ์๊ฐ์๋?)์ด๋ฏ๋ก ๋ ๋์ ์ง๋ฌธ์ "URN์ด ์๋ ์ด์ "์ ๋๋ค.
์ค์ ๋ก ๋๋ต์ URL ์ด ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ ๊ณตํ๋ ๋ฐ๋ฉด ๊ฒฝ๋ก ๋ ํ์ผ ์์คํ ํธํ์ฑ(๋ฌด์๋ณด๋ค๋)์ ์ ๊ณตํ์ง๋ง URN์ ์ผ๋ถ ํ์ค ๊ธฐ๊ด์ ๋ํ ์ ์ ์ธ์๋ ๋ง์ ๊ฒ์ ์ ๊ณตํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
์ฐธ๊ณ : ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ํ๋ณดํ๊ธฐ ์ํด ์ค์ ๋ก URL ์์น๋ฅผ ๋ฌด์ํ์ต๋๋ค. ์ฆ, IPFS ์ปดํจ๋์ธ(๋ธ๋ผ์ฐ์ ์ ๋์จ)์ ipfs://...
๋ฐ ipns://...
ํฉ๋๋ค. ์ฐ๋ฆฌ ๋ dweb://ipfs/...
๋ฑ์ ์ฌ์ฉํ๊ณ ์ถ์์ง๋ง ์ ์ ํ ๋ณด์ ์ถ์ฒ ์ง์๋ ํ์ํ์ต๋๋ค(์ฆ, ์ฒซ ๋ฒ์งธ ๊ตฌ์ฑ ์์์ ํด์๊ฐ ํ์ํจ์ ์๋ฏธํฉ๋๋ค).
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ipfs://...
๊ฐ /ipfs/...
์ ๋๋ฑํ๋ค๊ณ ๊ฐ์ฃผํ๊ณ ๋ค๋ฅธ ๋ชจ๋ ๊ณณ์์ ๊ฒฝ๋ก ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
@Stebalien DID๊ฐ ์ฌ๋๋ค์ ์ํ ๊ฒ์ด๋ผ๋ ์์ด๋์ด๋ ์ด๋์ ์ป๋์? "์ฌ๋"์ DID ์ฌ์์์ ํ ๋ฒ๋ ์ธ๊ธ๋์ง ์์ต๋๋ค. URI ์๋ณ์๋ ์ ์์ ๋ฐ๋ผ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
๋น์ ์ด ๋ฌด์์ ๊ณ ๋ คํ๋ ๊ทธ๊ฒ์ ์ค์ํ์ง ์์ต๋๋ค. ๊ธฐ์กด ํ์ค์ ์ค์ํ์ง ์์ผ๋ฉด ๊ธฐ์กด ์ธํ๋ผ์ ์ํธ ์ด์ฉ์ฑ๊ณผ ์ง์์ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
DID๊ฐ ์ฌ๋๋ค์ ์ํ ๊ฒ์ด๋ผ๋ ์์ด๋์ด๋ ์ด๋์ ์ป๋์? "์ฌ๋"์ DID ์ฌ์์์ ํ ๋ฒ๋ ์ธ๊ธ๋์ง ์์ต๋๋ค.
DID๋ "๋์งํธ ์ ์"์ ์ํ ๊ฒ์ ๋๋ค.
๋ถ์ฐ์๋ณ์(DID)๋ ๊ฒ์ฆ ๊ฐ๋ฅํ "์์ฃผ๊ถ" ๋์งํธ ์ ์์ ์ํ ์๋ก์ด ์ ํ์ ์๋ณ์์ ๋๋ค.
๊ทธ๋์? ์ฌ๋, ๋๋ฌผ, ๊ฑด๋ฌผ, ์กฐ์ง, ์ฌ๋ฌผ, ์์ด๋์ด, ๋ฌธ์ ๋ฑ ๋ชจ๋ ๊ฒ์ด _identity_๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด๊ฒ์ด URI์ ์๋ฆ๋ค์์
๋๋ค.
์ค์ ๋ก DID ์ฌ์์ ๋ณด์
จ์ต๋๊น? ๋ค์ ๋งํ์ง๋ง, ์ฌ๋์๊ฒ ํน์ ํ ๊ฒ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
:( ipfs/go-ipfs#1678 ์ ์ฝ์ ํ ๋ ์ด์ IPFS์ ๊ด์ฌ์ด ์๋์ง ํ์ ์ด ์์ง ์์ต๋๋ค.
๋๋ ์ ๋ง๋ก ์์ ๊ฑฐ ์ฐฝ๊ณ ์ ๋ค์ด๊ฐ๊ธฐ๋ฅผ ์ํ์ง ์์ง๋ง ์ด๊ฒ์
It might help to imagine mounting the entire IPFS under /ipfs and then accessing the files like they are just that: Files in your file system.
๋๋ฅผ ํฅ๋ถ์ํค๋ ์์ด๋์ด๊ฐ ์๋๋๋ค. ๊ฐ์๊ธฐ ๋ค์๊ณผ ๊ฐ์ ์์คํ ๋ฃจํธ๊ฐ ์๋ค๊ณ ์์ํด๋ณด์ญ์์ค.
/btrfs/dev/sda1/.. /fat32/dev/sda2/.. /ext3/dev/sda3/boot/..
๊ทธ๊ฒ์ ๋์๊ฒ ์ดํํ๋ ๊ฐ๋ ์ด ์๋๋๋ค. ๋๋ ๋ด๊ฐ ์ข์ํ๋ ๋ฐฉ์์ผ๋ก ์์คํ ์ ๊ตฌ์ฑํ๊ณ ๋ด๊ฐ ์ ํํ ๋๋ก ํ์ผ ์์คํ ์ ๋ง์ดํธํ๋ ๋ฐ ์ต์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด ์ ๋ง๋ก ๋๋ฅผ ํ๋๊ฒ ํ๋ ๊ฒ์ด ์๋๋๋ค. ์ํ๋ ๊ณณ์ ipfs๋ฅผ ์์ ๋กญ๊ฒ ๋ง์ดํธํ ์ ์์ต๋๋ค. ๋๋ ๊ณผ๋๋ง์์ฆ์ ์ธ "๋ชจ๋ ๊ฒ์ ์ฌ์ฐฝ์กฐํ์"๋ ์ ๊ทผ ๋ฐฉ์์ ์ค๋งํ์ต๋๋ค. ๋ถ์ฐ CAS๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ IPFS์ ์์ต๋๋ค. ๊ทธ๊ฒ ๋ด๊ฐ ๊ด์ฌ์ ๊ฐ์ก๋ ์ ๋ถ๋ค. ๋๋ ์ ๋์ค๋ฅผ ์น๊ณผ ๋ณํฉํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ค. ๊ทธ๋ฌ๋ ๊ทธ ํ ๋ก ์ ์ฝ์ ํ IPFS๋ ๋ ์ด์ ๋ถ์ฐ CAS๋ฅผ ์ป๋ ๋ฐ ๋์์ด ๋๋ ์ ํ์ฒ๋ผ ๋ณด์ด์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ ์ ๊ฐ ์ปดํจํฐ์ ํ์ผ ์์คํ ์ ์ฌ์ฉํ๊ณ ์ด๋ฆ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ง์ํ๋ ์ ํ์ฒ๋ผ ๋ณด์ด๋ฉฐ ์ผ๋จ ์์ฑ์๊ฐ ํ ๊ฐ์ง๋ฅผ ์ง์ํ๋ฉด ์๋ง๋ ๊ทธ๋ค์ ๋ด ์ปดํจํฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์๋ก์ด ์์ด๋์ด. ๋ฏธ๋๋ฅผ ์์ธกํ ์๋ ์์ง๋ง ์ ๊ทผ ๋ฐฉ์์ด ๋ง์์ ๋ค์ง ์์ต๋๋ค.
IPFS์ ๋ถ์ฐ CAS ๊ตฌํ์ด ์ ๋ง ๋ง์์ ๋ญ๋๋ค. ๋๋ ์ค๋ซ๋์ ๋ถ์ฐ CAS๋ฅผ ๊ฐ๋ ๊ฒ์ ๊ฟ๊ฟ ์์ต๋๋ค :(. ๊ทธ๋์ ์ฐ๊ตฌ ๋ชจ๋๋ก ๋์๊ฐ์ ๋ค๋ฅธ ๋ถ์ฐ CAS๋ฅผ ์ดํด๋ด์ผ ํฉ๋๋ค...