çŸåšãipfsã¯2çš®é¡ã®ãªãœãŒã¹è¡šç€ºã䜿çšããŠããããšã«æ°ã¥ããŸããã
/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
ãŸãã IPFS絶察ã¢ãã¬ã¹ãæšæºã®URL解決ãšèª¿æŽãã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ã«æ¥ãŸããã ç§ãèå³ãæã£ãã®ã¯ããã ãã§ããUNIXãWebã«ããŒãžããããšã¯æ°ã«ããŸããã ãããããã®è°è«ãèªãã åŸã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ããŒã«ã¯_ "unixæ¹æ³" _ã«åŸããŸããã€ãŸãã1ã€ã®ããšãå®è¡ããå€ãã®å°ããªããŒã«ãã©ã€ãã©ãªãããã³ã³ãã³ãïŒ git
ãµãã³ãã³ãã«é¡äŒŒïŒããã§ãŒã³åããŠããã倧ããªãã®ãæ§ç¯ã§ããŸãã
ã©ã®ããŒã¹ã䜿çšãããã決ããã®ã¯ããªãã§ãã âïžð§
誰ãç§ã®æåŸã®æçš¿ãééã£ãæ¹æ³ã§åãåããªãããšãé¡ã£ãŠããŸãã ãããªãã¯ã¿ããªç§ãæ®ããŠãããå°»ã®ç©Žã ããšèšãã€ããã¯ãããŸããã äœå人ãã®äººã ãIPFSãèŠãŠãäœãã奜ãã§ã¯ãªããšå€æããçç±ãæžããã«å»ã£ããšæããŸã...ç§ã¯ããããããŸãã ç§ã¯ãã äœæ°ãªããã¯ãããžãŒãèŠãŠãééã£ãæ¹æ³ã§ç§ããããã€ããããã€ãã®å°ããªè©³çŽ°ã«åºã¥ããŠå¥ã®ãã¯ãããžãŒãéžæããŸãã ãµã€ã¬ã³ãããžã§ãªãã£ã®ãµã€ã¬ã³ãã¡ã³ããŒã«ãªããããªãã£ãã®ã§ããŸããä»ã«éžæè¢ãããŸããªãã®ã§ãããããªãããšã«ããŸããïŒDãããããç§ã¯åŸ ããªããã°ãªããªãããã§ãçŸåšã®ãããžã§ã¯ãã§ipfsã䜿ãå§ããåã«ãfsïŒ//ãŸãã¯ãããžã§ã¯ãããããéžæãããã®ããµããŒãããipfsã䜿çšãããšãå®éã®éåžžã®URLãããã€ãååšãããŸã§ãIPFSãçå£ã«æ€èšãå§ããããšãã§ããŸãã
ã¡ã¬ãããã¢çãªããã¹ãŠãåçºæãããããšããã¢ãããŒãã«ãã£ãŠãªãã«ãªã£ãŠããŸãã
ããªãã¯å€¢äžã«ãªã£ãŠãããããã«ã€ããŠã¯äœããã¡ã¬ãããã¢ããŸãã¯åçºæã§ãããããŸããã ãã€ãã®ããã«äœ¿çšãããŠãããã¡ã€ã«ãã¹ã«ã€ããŠè©±ããŠããŸãã / ipfsãžã®ããŠã³ãã¯ãç©äºã説æããããã®åãªãäŸã§ãããã³ã¢ã¢ã€ãã¢ã§ã¯ãããŸããã
ç§ã¯èªåã®ã·ã¹ãã ã奜ããªããã«æŽçããéžæãããšããã«ãã¡ã€ã«ã·ã¹ãã ãããŠã³ãããããšã«æ £ããŠããŸãã
IPFSãããŒã«ã«ãã¡ã€ã«ã·ã¹ãã @timthelionãšããŠããŠã³ãããããã«åŒ·å¶ãã人ã¯èª°ãããŸããã ããã¯äœ¿çšã§ããæ©èœã§ãããããŠã³ããããã¹ã決å®ã§ããŸãã ããã©ã«ãã§ç¡å¹ã«ãªã£ãŠããæ©èœãå«ãã®ã¯ãIPFSå šäœãåŽäžãã匱ãçç±ã®ããã«æããŸãã ã§ããå°æ¥ã¯æ°ãå€ãã£ãŠãŸãåå ããŠããã ããã°å¹žãã§ãã
誰ãããã¹ãŠã®æ©èœãæ°ã«å ¥ã£ãŠãã補åã¯1ã€ãèŠãããšããããŸããã
ããã¯å®éã«ã¯äœãåçºæããŠããªãããšã«ãèšåãã䟡å€ããããŸãã ããã¯äœãããçºæããªããããšã§ãã
ç§ãã¡ã®æèŠã®éãã«é¢ä¿ãªãã fs://
ãã³ãã©ãŒïŒå¿
èŠãªã·ãŒã ã¬ã¹ãªãµããŒããæäŸããŸãïŒã¯ãç§ãã¡ã話ããŠããããã«å®è£
ãããŠãããæ¢ã«ãã©ãŠã¶ãŒæ¡åŒµæ©èœã§äœ¿çšã§ããŸãã ãŸãããã©ãŠã¶ããã€ãã£ãã«äœ¿çšã§ããããã«ããããã®PoCå®è£
ã«ãåãçµãã§ããŸãã é»åã©ãããããã¢ããªã±ãŒã·ã§ã³ã§ããã®ãµããŒããå®è£
ããããšãã§ããŸãã ãã¶ããããªãã¯ããããããéãããããã®ãããã®åªåã«è²¢ç®ããããšãã§ããŸãã
ãããªãã¯å€¢äžã«ãªã£ãŠãããããã«ã€ããŠã¯ãã¡ã¬ãããã¢ãã§ãããåçºæã§ãããªããã
ç§ã¯https://github.com/multiformats/multiaddrãmagalomaniacalã§ãããåçºæããŠãããšè§£éã
ããå°ã詳ãã説æããŸãã
ããã¡ã€ã«ãã¹ããã€ãã®ããã«äœ¿çšãããŠããããšã«ã€ããŠè©±ããŠããŸããã
ç§ã¯ããªããã¡ããã®ã¢ã€ãã¢ã§ã©ãã«åãã£ãŠããã®ããç解ããŠãããšæããŸãã WebãªãœãŒã¹ãéåžžã®ãã¡ã€ã«ã®ããã«æ±ãããšãã§ããªããšããäºå®ãä¿®æ£ããããšããŠãããééããã¯ãããŸããïŒ ãã®ããã«ç§ã¯cat http://google.com/index.html
è¡ãããšã¯ã§ããŸãããïŒ äžå¯èœãªã®ã¯æ²ããããšã ãšç§ã¯ããªãã«åæããããšãã§ããŸãã OSãäœæããå Žåã¯ã open
é¢æ°ã§ãã¡ã€ã«ãžã®URLãéãããšãã§ããããã«ããŸãã ããããããã®ãããªå€æŽã¯Linuxã«ãè¡ãããå¯èœæ§ããããŸãã ã¢ãããŒãã¯ç°ãªããŸããPOSIXãã¡ã€ã«éå±€ã«WebãªãœãŒã¹ãæ¿å
¥ããããšããŠããŸãã URLãééã£ãŠãããšæãããçç±ãä»ã«ããå Žåã¯ããç¥ãããã ããã
WebãªãœãŒã¹ãéåžžã®ãã¡ã€ã«ã®ããã«åäœããããšããããªãã®ç®æšã«ã¯ééããªãå ±æã§ããŸãã ããããããªãã®ãééãããä¿®æ£ããæ¹æ³ã¯ãç§ã«ã¯ããªãæ»ããããåéã®ããã§ãã 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
ãããŠãããªããç§ã«æšæºã誀解ããŠãããšéé£ããåã«ãç§ã¯UNIXãã¹ãåžžã«è§£éãããŠããã®ãšãŸã£ããåãæ¹æ³ã§ããã解éããŠããããšãæãåºãããŸãã
æããã«ãç§ã¯èªåã®ã«ãŒããã£ã¬ã¯ããªããã®ããã«æ··ä¹±ããããã¯ãããŸããã ãããã£ãŠããããã®ãã¹ãããŠã³ãããªãããšãéžæããŸãã
ç§ã®å Žåãããã¯ãšã«ããç§ã®éžæã§ã¯ãããŸãããIPFSã䜿çšãããœãããŠã§ã¢ãäœæãããã®ã§ããŠãŒã¶ãŒããããã®ãã¹ãããŠã³ããããã©ããã¯ç§ã®æ±ºå®ã§ã¯ãããŸããã ãã ãããŠãŒã¶ãŒãããŒã«ã«ãã·ã³ã§ãã¡ã€ã«ãéãã®ãšåããããç°¡åã«ãIPFSã§å ±æãããŠãããã¡ã€ã«ãéãããšãã§ããããã«ããããšæããŸãã ã§ã¯ãã©ãããã°ãã®ã³ãŒããæžãããšãã§ããŸããïŒ ipfsãæšæºã®URLã䜿çšããŠããå ŽåãipfsïŒ//ã§å§ãŸããã®ã¯ãã¹ãŠipfsã«è»¢éããã ãã§ããã¹ãŠãç°¡åã«ãªããŸãã
ããããç§ã®ããã°ã©ã ã/
ã§å§ãŸãæååãèŠããšãããã¯èª°ãã®ãã·ã³ãéåžžã¯ã³ãŒããå®è¡ãããŠãããã·ã³äžã®ãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªãžã®çµ¶å¯Ÿãã¹ã§ãããšè§£éããŸãã /
ã§å§ãŸããã¹ã«ã¢ã¯ã»ã¹ããããã«æ瀺ãããå ŽåãããŒã«ã«ãã·ã³äžã®ãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªãžã®çµ¶å¯Ÿãã¹ãšããŠç¢ºå®ã«è§£éãããŸãã /ipfs
ãç§ã®ãã·ã³ã«ååšããªãå Žåãããã°ã©ã ã¯file-not-foundãšã©ãŒãè¿ãã¯ãã§ãã ããã°ã©ã ãã¢ã¯ã»ã¹ããããã«æ瀺ããã絶察ãã¹ããããŒã«ã«ãã·ã³äžã®ãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªä»¥å€ã®å Žæã«ã€ãªããå¥ã®äŸãèããããšã¯ã§ããŸããã ã§ããããç§ã«ãšã£ãŠãé·å¹Žã®LinuxãŠãŒã¶ãŒ/éçºè
ãšããŠãããã¯æ°ããæ¯ãèãã§ãã
ç§ã®ã¢ããªã±ãŒã·ã§ã³ãmultiaddrã®ãµããŒããè¿œå ããããšããå Žåãç©äºã¯ããªãæ©ãæ¯ãããããã«ãªããŸãã ãŠãŒã¶ãŒãå®è¡ããå ŽåïŒ
$tims-program-that-supports-normal-files-as-well-as-multiaddr /http/index.html
ïŒ
ãããŠããŠãŒã¶ãŒã¯ããŸããŸãã®htmlãã¡ã€ã«ã/http
ã«ä¿åããWebãµãŒããŒãæã£ãŠããŸãã ãŸã£ããå代æªèã§ã¯ãããŸããã ç§ã®ããã°ã©ã ã¯ããããã«ãã¢ãã¬ã¹ã¢ãã¬ã¹ãŸãã¯ããŒã«ã«ãã¡ã€ã«ã«è§£æ±ºããå¿
èŠããããŸããïŒ
Pythonã§URLãéãããã®åºæ¬çãªãµããŒããåããã³ãŒãããã§ã«äœæããŸããã ããããããšã¯éåžžã«ç°¡åã§ããã ãããããã«ãã¢ãã¬ã¹ãã¹ãšããŒã«ã«ãã¡ã€ã«ãã¹ã®äž¡æ¹ãæ確ã«è§£æ±ºããããã«ã³ãŒããå€æŽããã«ã¯ã©ãããã°ããã§ããïŒ
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ãã¡ã€ã«ã·ã¹ãã ã®ãµããŒããå£ããŸãã
ãããä¿®æ£ã§ããå¯èœæ§ã®ããæ¹æ³ãããã€ããããŸãã 1ã€ã¯ãmultiaddrãå®å
šã«æŸæ£ããããšã§ãã ãã1ã€ã¯ã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ãµããŒããå®è£ ããããã®æºè¶³ã®ããæ¹æ³ããŸã£ããããããŸããã
ããã«å ·äœçãªäŸãèŠãŠã¿ãŸãããã ããŒã¯ããŠã³ãPDFã«å€æããããã°ã©ã ãæžããŠãããšæ³åããŠã¿ãŠãã ããã ãããŠãIPFSããã®ç»åã®å å«ããµããŒãã§ããããã«ããããšæããŸãã ãããã£ãŠããŠãŒã¶ãŒã¯æ¬¡ã®ããã«æžã蟌ã¿ãŸãã
attic.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_ã«çžå¯Ÿçã§ãããšããåäŸãååã«ããããšã«æ³šæããŠãã ããã ãã®æãäžè¬çãªäŸã¯ããµãŒããŒã®ãã¡ã€ã«ã·ã¹ãã ã®ã«ãŒãã§ã¯ãªããçŸåšã®origin
ã®ã«ãŒãã«çžå¯ŸçãªHTMLã®çµ¶å¯Ÿãã¹ã§ãã ãã¹ãŠã®ãã¹ãfs:
ãŸãã¯dweb:
ã§ãããšæ³å®ããã³ã³ããã¹ãå
ã§åäœããŠããã³ãŒããããå Žåããã®ã³ãŒãã/ipfs/
ã§å§ãŸãã¢ãã¬ã¹ã䜿çšããããšã¯å®å
šã«æå¹ã§ãããã¡ã€ã«ã·ã¹ãã ã®/ipfs
ã«ipfsãæåéãããŠã³ãããã«ããã®ã³ãŒãããã¹ã解決ããããã®å€ãã®æ¹æ³ã
ãããã¯ç§ã®2ã»ã³ãã§ãïŒ
fs:/
äžã«ãããåãããã«ãã¹ãŠã®ãã¡ã€ã³ãhttp:/
ãŸãã/
ã«ããŠã³ãããŸãããåãããã«ãIPFSå
šäœã/
ããŠã³ãããŸããã ã©ã¡ãã®ã·ã¹ãã ã§ããåç
§ãã€ã³ãã¯ã¹ããŒã ã«å¯ŸããŠ/
ã§ãïŒ http:/
ã fs:/
ïŒãã»ãšãã©ã®äŸã§ã¯ããã¹ãŠã®ãã¡ã€ã«ã·ã¹ãã ã/
ipfsãããŠã³ãããŠãããšããæŠå¿µããããšæããŸãã ãããã£ãŠã fs:/
ããã£ãŠãURI圢åŒã¯å£ããŸããã
ãããã圌ã¯ãã³ã³ãã³ããããŒã«ã«ãã¡ã€ã«ã·ã¹ãã ã«ããŠã³ããããŠããããã«åäœããã¢ãã¬ã¹ãæã€ã³ã³ãã³ããèå¥ã§ããããã«ããããšãææ¡ããŠããŸããããã«ãããunix / posixããŒã«ã䜿çšããŠweb / dwebã³ã³ãã³ããæäœã§ããããã«ãªããŸãã
ãããã«ãããunix / posixããŒã«ã䜿çšããŠweb / dwebã³ã³ãã³ããæäœã§ããããã«ãªããŸããã fs:
ãã¬ãã£ãã¯ã¹ä»ãæ§æãUNIXããŒã«ã§äœ¿çšãããå Žåã®å
·äœäŸãæããŠãã ããã ã©ãããããããç§ã¯ãŸã ãããååŸããŠããŸããã
ç§ã¯èªåã§äŸãèãåºãããšããŸããããmultiaddræºæ ã®/ipfs
ãã¬ãã£ãã¯ã¹ä»ãæ§æãæå³ããªãäŸã¯èããããŸããã
multiaddrã¹ããŒã ã䜿çšããŠipfsããµããŒãããbashã®diffãŠãŒãã£ãªãã£ãžã®ã©ãããŒscirptãäœæããããšããŸããã
`` ``
timothy @ yogaã / c / ipfs-multiaddr> cat multiaddr-diff
get_multiaddr_or_normal_file_getterïŒïŒ{
if [[$ 1 == / ipfs / *]];
ãããã
file_getter = "ipfs cat $ 1"
ãã以å€
file_getter = "cat $ 1"
fi
ãšã³ãŒ$ file_getter
}
file1 = get_multiaddr_or_normal_file_getter $1
file2 = get_multiaddr_or_normal_file_getter $2
diff <ïŒ$ file1ïŒ<ïŒ$ file2ïŒ
`` ``
ããã¯ãéåžžã®ãã¡ã€ã«ãšipfsãã¡ã€ã«ã®äž¡æ¹ã§åçŽãªå Žåã«æ©èœããŸãã
`` ``
timothy @ 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
....
ãã«ãã¢ãã¬ã¹ã¢ãã¬ã¹ãšéåžžã®UNIXãã¡ã€ã«ã®äž¡æ¹ã§ç¢ºå®ã«æ©èœã§ããããã«ããã®ãŠãŒãã£ãªãã£ãã©ã®ããã«ç·šéã§ãããããããŸããã
äžæ¹ãurlã¹ã¿ã€ã«ã®sytaxã®ã¿ããµããŒãããdiffã©ãããŒãäœæããããšã¯é£ãããããŸããã
`` ``
timothy @ yogaã / c / ipfs-multiaddr> cat url-syntax-diff
get_multiaddr_or_normal_file_getterïŒïŒ{
if [[$ 1 == fsïŒ*]];
ãããã
prefix = "fsïŒ"
internal_path = $ {1ïŒ$ prefix}
file_getter = "ipfs cat $ internal_path"
ãã以å€
file_getter = "cat $ 1"
fi
ãšã³ãŒ$ file_getter
}
file1 = get_multiaddr_or_normal_file_getter $1
file2 = get_multiaddr_or_normal_file_getter $2
ãšã³ãŒ$ file1
ãšã³ãŒ$ file2
diff <ïŒ$ file1ïŒ<ïŒ$ file2ïŒ
`` ``
ãããåæ§ã«æ©èœããããã·ã¥ããã§ã«æ°ååæåã®é·ãã§ããå Žåã3ã€ã®äœåãªæåã¯ç¢ºãã«å€§ããªéãã¯ãããŸããã
`` ``
timothy @ yogaã / c / ipfs-multiaddr>
./url-syntax-diff ../subuser/COPYING.LGPL fsïŒ/ ipfs / QmSRrBvLXvYQRdQ3kZtJ5oJicKMcNQzC3CwH6bJDbEKWYp
cat ../subuser/COPYING.LGPL
ipfs cat / ipfs / QmSRrBvLXvYQRdQ3kZtJ5oJicKMcNQzC3CwH6bJDbEKWYp
127a128,130
fïŒæåã«çãŸããåäŸãç¥ã®ããŒã©ã¹ã«çãèŽã«æ§ãã
次ã®å¶æ°å¹Žã®æºæãtimothy @ yogaã / c / ipfs-multiaddr>
`` ``
ãããŠãå¥åŠãªãšããžã®å Žåãããã¯ãããæŽç·ŽãããPOSIXãŠãŒãã£ãªãã£ããæåŸ ãããããã«èŠäºã«å®è¡ãããŸãã
`` ``
timothy @ yogaã / c / ipfs-multiaddr> echo "bar"> bar
timothy @ yogaã / c / ipfs-multiaddr> ./url-syntax-diff bar / ipfs / foo
ãã£ããããŒ
cat / ipfs / foo
1c1
foo
`` ``
fsïŒãšdwebïŒã«é¢ããè°è«ã¯çµããããªãããã«æãããã®ã§ãç§ã¯ãŸã ãã®prã«somå ¥åãå¿ èŠã§ãïŒ https ïŒ
ipfsã®äœ¿çšïŒãããŸã§ã®éãå°ãªããšãç§ã«ãšã£ãŠã¯å€ãã®åé¡ã解決ããŸãã
@pawalããæ¯ãããªãã®ã³ã¡ã³ããèŠããšããç§ã®å¿ã¯æ²ã¿ãŸããããªããªããç§ã¯ç§ã®æžå¿µãžã®å¿çãéåžžã«åŸ ã¡çŠãããŠããããã§ãã
Ping @jbenet
以åã®æçš¿ãžã®åçã«ãèå³ããããŸãã以åã¯æ°ã¥ããªãã£ãåé¡ã«ã€ããŠã®èŠæ¹ãæµ®ã圫ãã«ãªã£ãããã§ãã
//ç·šéïŒã€ãŸããç§ã¯ãŸã åé¡ããã©ããŒããŠãããæºè¶³ã®ããçããããã°å¿çããã§ãããã
+1
'ipfsïŒ//'ãæšæºãšããŠæ©èœãããŸãã ãé¡ãããŸãã
ïŒãããã£ãŠããã¹ãŠã®ã¢ããªã¯ããã¹ãŠã®ãã©ãããã©ãŒã ã§ãã©ãã§ãåäœãããšæ³å®ã§ããŸã-
ã©ãã§ããååºã§ïŒ
ã©ããã
ãžã¥ãªã¢ã³ã»ã¹ãã¹
Blockfreightâ¢
ipfs:
vs. fs:
vs. dweb:
ã«é¢ããè°è«ã¯ãç§ããã®ãããžã§ã¯ãã«åå ããåããç¶ããŠããæ··ä¹±ããè°è«ã§ãã Web Browsers Sprintã§ã®IPFSäžã«ãããããé ãæ©ãŸããæéãå°ããããŸããã ããŸããŸãªãªãã·ã§ã³ãšè°è«ã®æŠèŠãšãšãã«ãå
šäœåã®èª¬æãæžããŠããŸããããã¯ãä»æ¥ã®åŸåã«ipfs / specsã®PRãšããŠæåºããŸãã ç§ãç¥ã£ãŠããè°è«ã®äŸãšåç
§ãå«ããŸãã ããŸãããã°ãããã¯ããçšåºŠã®æ確ããæäŸããé·æçã«å€§ããªåé¡ãåŒãèµ·ããééããç¯ãããšãªããæãå®çšçãªéã«æ²¿ã£ãŠåé²ããããšãå¯èœã«ããã§ãããã
ç§ã¯ããã§ãããã®è°è«ã®èæ¯ãæäŸããããšã«æåã®åªåãããŸããïŒ https ïŒ
ç¡ç¥ã§ç³ãèš³ãããŸããããPRãæŽæ°ããã«ã¯ã©ãããã°ããã§ããïŒ
@timthelion @jbenetã®ããã«å®è¡ããŠããã«ã³ã¡ã³ããè¿œå
@ vasa-ããªãã®ã³ã¡ã³ãã¯ãœãããŠã§ã¢ãã©ã®ããã«ç¶æ³ãæ¹åããããå®éã«èª¬æããŠããªãã®ã§éçºããŠãã ãããç§ã¯ãããã¹ãã ã ãšæããŸãã
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ã¯ãããžã¿ã«IDãçšã§ãã
åæ£åèå¥åïŒDIDïŒã¯ãæ€èšŒå¯èœãªãèªå·±äž»æš©ãããžã¿ã«IDã®æ°ããã¿ã€ãã®èå¥åã§ãã
ããïŒ äººãåç©ã建ç©ãçµç¹ãç©ãã¢ã€ãã¢ãããã¥ã¡ã³ããªã©ããã¹ãŠã_ã¢ã€ãã³ãã£ãã£_ãæã€ããšãã§ããŸããããã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ã«æ¥ãŸããã ç§ãèå³ãæã£ãã®ã¯ããã ãã§ããUNIXãWebã«ããŒãžããããšã¯æ°ã«ããŸããã ãããããã®è°è«ãèªãã åŸãIPFSã¯åæ£CASãååŸããã®ã«åœ¹ç«ã€è£œåã®ããã«ã¯èŠããªããªããã³ã³ãã¥ãŒã¿ãŒã®ãã¡ã€ã«ã·ã¹ãã ã®äœ¿çšæ¹æ³ãšåå空éã決å®ãã補åã®ããã«èŠããŸããç§ã®ã³ã³ãã¥ãŒã¿ãã©ã®ããã«æ§æããæŽçãããã«ã€ããŠã®ä»ã®ããã€ãã®æ°ããã¢ã€ãã¢ã å°æ¥ãäºæž¬ããããšã¯ã§ããŸãããããã®ã¢ãããŒãã¯å¥œãã§ã¯ãããŸããã
ç§ã¯IPFSã®åæ£CASå®è£ ãæ¬åœã«å¥œããªã®ã§ãããã¯æ®å¿µã§ãã ç§ã¯é·ãéåæ£CASã䜿çšããããšã倢èŠãŠããŸãã:(ããããã£ãŠã調æ»ã¢ãŒãã«æ»ã£ãŠãä»ã®åæ£CASãããã€ã調ã¹ãå¿ èŠããããŸã...