IPFS og'riqsiz (lekin bu aniq emas)

IPFS og'riqsiz (lekin bu aniq emas)

Bu allaqachon Habré-da bo'lganiga qaramay IPFS haqida bir nechta maqola.

Darhol aniqlik kiritamanki, men bu sohada mutaxassis emasman, lekin men ushbu texnologiyaga bir necha bor qiziqish bildirganman, lekin u bilan o'ynashga urinish ko'pincha og'riq keltirdi. Bugun men yana tajriba o'tkazishni boshladim va ba'zi natijalarni baham ko'rmoqchiman. Muxtasar qilib aytganda, IPFS o'rnatish jarayoni va ba'zi bir fokuslar tasvirlanadi (hamma narsa ubuntuda qilingan, men uni boshqa platformalarda sinab ko'rmadim).

Agar siz IPFS nima ekanligini o'tkazib yuborgan bo'lsangiz, u bu erda batafsil yozilgan: habr.com/ru/post/314768

sozlama

Tajribaning tozaligi uchun men uni darhol tashqi serverga o'rnatishni taklif qilaman, chunki biz mahalliy va masofaviy rejimda ishlashda ba'zi tuzoqlarni ko'rib chiqamiz. Keyin, agar xohlasangiz, uni buzish ko'p vaqt talab qilmaydi, u erda ko'p narsa yo'q.

Go o'rnating

Rasmiy hujjatlar
Joriy versiya uchun qarang golang.org/dl

Eslatma: IPFS ni undan tez-tez foydalanishi kutilayotgan foydalanuvchi nomidan o'rnatish yaxshiroqdir. Haqiqat shundaki, quyida biz orqali o'rnatish variantini ko'rib chiqamiz FUSE va u erda nozikliklar mavjud.

cd ~
curl -O https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz
tar xvf go1.12.9.linux-amd64.tar.gz
sudo chown -R root:root ./go
sudo mv go /usr/local
rm go1.12.9.linux-amd64.tar.gz

Keyin siz muhitni yangilashingiz kerak (batafsil ma'lumot bu erda: golang.org/doc/code.html#GOPATH).

echo 'export GOPATH=$HOME/work' >> ~/.bashrc
echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.bashrc
source ~/.bashrc

Go o'rnatilganligi tekshirilmoqda

go version

IPFS o'rnatish

Menga eng ko'p o'rnatish usuli yoqdi: ipfs-yangilash.

Biz uni buyruq bilan o'rnatamiz

go get -v -u github.com/ipfs/ipfs-update

Shundan so'ng siz quyidagi buyruqlarni bajarishingiz mumkin:

ipfs-yangilash versiyalari — yuklab olish uchun barcha mavjud versiyalarni ko'rish.
ipfs-yangilash versiyasi — joriy oʻrnatilgan versiyani koʻrish uchun (bizda IPFS oʻrnatilmaguncha, u hech kim boʻlmaydi).
ipfs-yangilanish so'nggi o'rnatildi — IPFSning so'nggi versiyasini o'rnating. Eng so'nggi versiya o'rniga mavjudlar ro'yxatidan mos ravishda istalgan istalgan versiyani belgilashingiz mumkin.

Ipfs o'rnatish

ipfs-update install latest

Tekshirish

ipfs --version

Umuman olganda, o'rnatish bilan to'g'ridan-to'g'ri hamma narsa.

IPFS ishga tushirilmoqda

Boshlash

Avval siz ishga tushirishni amalga oshirishingiz kerak.

ipfs init

Bunga javoban siz shunga o'xshash narsani olasiz:

 ipfs init
initializing IPFS node at /home/USERNAME/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmeCWX1DD7HnXXXXXXXXXXXXXXXXXXXXXXXXxxx
to get started, enter:
	ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Tavsiya etilgan buyruqni ishga tushirishingiz mumkin

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

natija

Hello and Welcome to IPFS!

██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗  ███████╗
██║██╔═══╝ ██╔══╝  ╚════██║
██║██║     ██║     ███████║
╚═╝╚═╝     ╚═╝     ╚══════╝

If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!

 -------------------------------------------------------
| Warning:                                              |
|   This is alpha software. Use at your own discretion! |
|   Much is missing or lacking polish. There are bugs.  |
|   Not yet secure. Read the security notes for more.   |
 -------------------------------------------------------

Check out some of the other files in this directory:

  ./about
  ./help
  ./quick-start     <-- usage examples
  ./readme          <-- this file
  ./security-notes

Bu erda, mening fikrimcha, narsalar qiziqarli bo'ladi. O'rnatish bosqichida ham yigitlar allaqachon o'z texnologiyalaridan foydalanishni boshlaydilar. Taklif etilgan QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv xeshi siz uchun maxsus yaratilmagan, lekin nashrga kiritilgan. Ya'ni, chiqarilishidan oldin ular salomlash matnini tayyorladilar, uni IPFS-ga quydilar va manzilni o'rnatuvchiga qo'shdilar. Menimcha, bu juda zo'r. Va bu faylni (aniqrog'i, butun papkani) endi nafaqat mahalliy, balki rasmiy shlyuzda ham ko'rish mumkin. ipfs.io/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv. Bunday holda, jildning mazmuni hech qanday tarzda o'zgarmaganligiga amin bo'lishingiz mumkin, chunki agar ular o'zgargan bo'lsa, xesh ham o'zgargan bo'lar edi.

Aytgancha, bu holda IPFS versiyani boshqarish serveri bilan o'xshashliklarga ega. Agar siz papkaning manba fayllariga o'zgartirish kiritsangiz va papkani IPFS-ga qayta yuklasangiz, u yangi manzilni oladi. Shu bilan birga, eski papka xuddi shunday hech qaerga ketmaydi va avvalgi manzilida mavjud bo'ladi.

To'g'ridan-to'g'ri ishga tushirish

ipfs daemon

Siz shunday javob olishingiz kerak:

ipfs daemon
Initializing daemon...
go-ipfs version: 0.4.22-
Repo version: 7
System version: amd64/linux
Golang version: go1.12.7
Swarm listening on /ip4/x.x.x.x/tcp/4001
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

Internet eshiklarini ochish

Ushbu ikki qatorga e'tibor bering:

WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080

Endi, agar siz IPFS-ni mahalliy sifatida o'rnatgan bo'lsangiz, u holda siz mahalliy manzillar yordamida IPFS interfeyslariga kirasiz va hamma narsa siz uchun mavjud bo'ladi (masalan, localhost:5001/webui/). Ammo tashqi serverga o'rnatilganda, sukut bo'yicha shlyuzlar Internetga yopiq bo'ladi. Ikkita shlyuz mavjud:

  1. webui admin (Github) 5001 portida.
  2. 8080 portidagi tashqi API (faqat o'qish).

Hozircha ikkala port ham (5001 va 8080) tajribalar uchun ochilishi mumkin, ammo ishlab chiqarish serverida, albatta, 5001 portni xavfsizlik devori bilan yopish kerak bo'ladi. Shuningdek, 4001 port mavjud, u boshqa tengdoshlar sizni topishi uchun kerak. U tashqaridan kelgan so'rovlar uchun ochiq qoldirilishi kerak.

Tahrirlash uchun ~/.ipfs/config faylini oching va unda quyidagi qatorlarni toping:

"Addresses": {
  "Swarm": [
    "/ip4/0.0.0.0/tcp/4001",
    "/ip6/::/tcp/4001"
  ],
  "Announce": [],
  "NoAnnounce": [],
  "API": "/ip4/127.0.0.1/tcp/5001",
  "Gateway": "/ip4/127.0.0.1/tcp/8080"
}

Biz 127.0.0.1 ni serveringizning IP-ga o'zgartiramiz va faylni saqlaymiz, shundan so'ng biz ipfs-ni qayta ishga tushiramiz (Ctrl+C bilan ishlaydigan buyruqni to'xtatib, uni qayta ishga tushiramiz).

Olish kerak

...
WebUI: http://ip_вашего_сервера:5001/webui
Gateway (readonly) server listening on /ip4/ip_вашего_сервера/tcp/8080

Endi tashqi interfeyslar mavjud bo'lishi kerak.

Tashqariga chiqish

http://домен_или_ip_сервера:8080/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Yuqoridagi readme fayli ochilishi kerak.

http://домен_или_ip_сервера:5001/webui/

Veb-interfeys ochilishi kerak.

Agar sizda webui ishlayotgan bo'lsa, unda IPFS sozlamalari to'g'ridan-to'g'ri o'zgartirilishi mumkin, shu jumladan statistikani ko'rish, lekin quyida men konfiguratsiya parametrlarini to'g'ridan-to'g'ri konfiguratsiya fayli orqali ko'rib chiqaman, bu umuman muhim emas. Konfiguratsiya qaerda ekanligini va u bilan nima qilish kerakligini eslab qolish yaxshiroqdir, aks holda veb-interfeys ishlamasa, bu qiyinroq bo'ladi.

Serveringiz bilan ishlash uchun veb-interfeysni sozlash

Mana, uch soat sarflangan birinchi tuzoq.

Agar siz IPFS-ni tashqi serverga o'rnatgan bo'lsangiz, lekin IPFS-ni mahalliy sifatida o'rnatmagan yoki ishga tushirmagan bo'lsangiz, veb-interfeysda /webui-ga kirganingizda ulanish xatosini ko'rishingiz kerak:

IPFS og'riqsiz (lekin bu aniq emas)

Gap shundaki, webui, mening fikrimcha, juda boshqacha ishlaydi. Birinchidan, u interfeysi ochiq bo'lgan serverning API-ga ulanishga harakat qiladi (albatta, brauzerdagi manzilga qarab). va agar u erda ishlamasa, u mahalliy shlyuzga ulanishga harakat qiladi. Agar sizda mahalliy sifatida ishlaydigan IPFS bo'lsa, webui siz uchun yaxshi ishlaydi, faqat siz tashqi serverda webui ochgan bo'lsangiz ham, tashqi emas, mahalliy IPFS bilan ishlaysiz. Keyin siz fayllarni yuklaysiz, lekin negadir ularni tashqi serverda ko'rmaysiz...

Va agar u mahalliy sifatida ishga tushirilmasa, biz ulanish xatosini olamiz. Bizning holatda, xatolik, ehtimol, CORS bilan bog'liq bo'lib, u webui tomonidan ham ko'rsatilgan, bu konfiguratsiyani qo'shishni taklif qiladi.

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://ip_вашего сервера:5001", "http://127.0.0.1:5001", "https://webui.ipfs.io"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'

Men o'zim uchun joker belgini ro'yxatdan o'tkazdim

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'

Qo'shilgan sarlavhalarni bir xil ~/.ipfs/config da topish mumkin. Mening holimda shunday

  "API": {
    "HTTPHeaders": {
      "Access-Control-Allow-Origin": [
        "*"
      ]
    }
  },

Biz ipfs-ni qayta ishga tushiramiz va webui muvaffaqiyatli ulanganligini ko'ramiz (hech bo'lmaganda yuqorida aytib o'tilganidek, tashqaridan so'rovlar uchun shlyuzlarni ochgan bo'lsangiz kerak).

Endi siz to'g'ridan-to'g'ri veb-interfeys orqali papkalar va fayllarni yuklashingiz, shuningdek, o'zingizning papkalaringizni yaratishingiz mumkin.

FUSE fayl tizimini o'rnatish

Bu juda qiziq xususiyat.

Biz fayllarni (masalan, papkalarni) nafaqat veb-interfeys orqali, balki to'g'ridan-to'g'ri terminalda ham qo'shishimiz mumkin

ipfs add test -r
added QmfYuz2gegRZNkDUDVLNa5DXzKmxxxxxxxxxx test/test.txt
added QmbnzgRVAP4fL814h5mQttyqk1aURxxxxxxxxxxxx test

Oxirgi xesh - bu ildiz papkasining xeshi.

Ushbu xeshdan foydalanib, biz har qanday ipfs tugunidagi papkani ochishimiz mumkin (u bizning tugunimizni topib, tarkibni qabul qila oladi), biz buni 5001 yoki 8080 portidagi veb-interfeysda qilishimiz mumkin yoki biz buni ipfs orqali mahalliy qilishimiz mumkin.

ipfs ls QmbnzgRVAP4fL814h5mQttyqk1aUxxxxxxxxxxxxx
QmfYuz2gegRZNkDUDVLNa5DXzKmKVxxxxxxxxxxxxxx 10 test.txt

Lekin siz uni oddiy papka kabi ochishingiz ham mumkin.

Keling, ildizda ikkita papka yarataylik va ularga foydalanuvchimizga huquqlar beramiz.

sudo mkdir /ipfs /ipns
sudo chown USERNAME /ipfs /ipns

va --mount bayrog'i bilan ipfsni qayta ishga tushiring

ipfs daemon --mount

Siz boshqa joylarda papkalar yaratishingiz va ipfs demon parametrlari -mount -mount-ipfs /ipfs_path -mount-ipns /ipns_path yordamida ularga yo'lni belgilashingiz mumkin.

Endi bu jilddan o'qish biroz g'ayrioddiy.

ls -la /ipfs
ls: reading directory '/ipfs': Operation not permitted
total 0

Ya'ni, bu jildning ildiziga to'g'ridan-to'g'ri kirish imkoni yo'q. Ammo agar siz xeshni bilsangiz, tarkibni olishingiz mumkin.

ls -la /ipfs/QmbnzgRVAP4fL814h5mQttyqxxxxxxxxxxxxxxxxx
total 0
-r--r--r-- 1 root root 10 Aug 31 07:03 test.txt

cat /ipfs/QmbnzgRVAP4fL814h5mQttyqxxxxxxxxxxxxxxxxx/test.txt 
test
test

Bundan tashqari, papka ichida, hatto yo'lni belgilashda avtomatik to'ldirish ham ishlaydi.

Yuqorida aytib o'tganimdek, bunday o'rnatishning nozik tomonlari mavjud: sukut bo'yicha, o'rnatilgan FUSE papkalariga faqat joriy foydalanuvchi kirishi mumkin (hatto root ham bunday papkadan o'qiy olmaydi, tizimdagi boshqa foydalanuvchilarni hisobga olmaganda). . Agar siz ushbu papkalarni boshqa foydalanuvchilar uchun ochiq qilishni istasangiz, konfiguratsiyada siz "FuseAllowOther" ni o'zgartirishingiz kerak: false ni "FuseAllowOther": rost. Lekin bu hammasi emas. Agar siz IPFS-ni root sifatida ishlatsangiz, unda hamma narsa yaxshi. Va agar oddiy foydalanuvchi (hatto sudo) nomidan bo'lsa, siz xatoga yo'l qo'yasiz

mount helper error: fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf

Bunday holda, #user_allow_other qatoriga izohni olib tashlash orqali /etc/fuse.conf faylini tahrirlashingiz kerak.

Shundan so'ng biz ipfs-ni qayta ishga tushiramiz.

FUSE bilan bog'liq ma'lum muammolar

Ipfs-ni o'rnatish bilan qayta ishga tushirgandan so'ng (va ehtimol boshqa holatlarda) /ipfs va /ipns o'rnatish nuqtalariga kirish imkonsiz bo'lib qolgan muammo bir necha marta qayd etilgan. Ularga kirish imkoni yo'q, lekin ls -la /ipfs ko'rsatadi ???? huquqlar ro'yxatida.

Men bu yechimni topdim:

fusermount -z -u /ipfs
fusermount -z -u /ipns

Keyin ipfs-ni qayta ishga tushiramiz.

Xizmat qo'shish

Albatta, terminalda ishlash faqat dastlabki sinovlar uchun javob beradi. Jang rejimida tizim ishga tushganda demon avtomatik ravishda ishga tushishi kerak.

Sudo nomidan /etc/systemd/system/ipfs.service faylini yarating va unga yozing:

[Unit]
Description=IPFS Daemon
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/home/USERNAME/work/bin/ipfs daemon --mount
User=USERNAME
Restart=always

[Install]
WantedBy=multi-user.target

USERNAME, albatta, foydalanuvchi bilan almashtirilishi kerak (va, ehtimol, ipfs dasturining to'liq yo'li siz uchun boshqacha bo'lishi mumkin (siz to'liq yo'lni ko'rsatishingiz kerak)).

Keling, xizmatni faollashtiramiz.

sudo systemctl enable ipfs.service

Keling, xizmatni boshlaylik.

sudo service ipfs start

Xizmat holatini tekshirish.

sudo service ipfs status

Tajribaning tozaligi uchun kelajakda ipfs avtomatik ravishda muvaffaqiyatli ishga tushishini tekshirish uchun serverni qayta ishga tushirish mumkin bo'ladi.

Bizga tanish bo'lgan tengdoshlarni qo'shish

Keling, tashqi serverda ham, mahalliy sifatida ham IPFS tugunlari o'rnatilgan vaziyatni ko'rib chiqaylik. Tashqi serverda biz ba'zi fayl qo'shamiz va uni IPFS orqali CID orqali mahalliy sifatida olishga harakat qilamiz. Nima bo'ladi? Albatta, mahalliy server, ehtimol, bizning tashqi serverimiz haqida hech narsa bilmaydi va shunchaki CID bo'yicha faylni unga mavjud bo'lgan barcha IPFS tengdoshlaridan "so'rash" orqali topishga harakat qiladi (u bilan allaqachon "tanishishga" muvaffaq bo'lgan). Ular, o'z navbatida, boshqalardan so'rashadi. Va shunga o'xshash fayl topilmaguncha. Aslida, xuddi shu narsa rasmiy shlyuz orqali faylni olishga harakat qilganimizda sodir bo'ladi ipfs.io. Agar omadingiz bo'lsa, fayl bir necha soniya ichida topiladi. Va agar bo'lmasa, u bir necha daqiqada ham topilmaydi, bu ishning qulayligiga katta ta'sir qiladi. Lekin biz bu fayl birinchi bo'lib qaerda paydo bo'lishini bilamiz. Xo'sh, nega biz darhol mahalliy serverimizga "Birinchi u erga qarang" deb aytmaymiz? Ko'rinib turibdiki, buni amalga oshirish mumkin.

1. Masofaviy serverga o'ting va konfiguratsiyada ~/.ipfs/config ni qidiring

"Identity": {
    "PeerID": "QmeCWX1DD7HnPSuMHZSh6tFuxxxxxxxxxxxxxxxx",

2. Sudo service ipfs statusini ishga tushiring va undagi Swarm yozuvlarini qidiring, masalan:

Swarm announcing /ip4/ip_вашего_сервера/tcp/4001

3. Bundan biz “/ip4/ip_of_your_server/tcp/4001/ipfs/$PeerID” shaklining umumiy manzilini qo'shamiz.

4. Ishonchliligi uchun mahalliy webui orqali ushbu manzilni tengdoshlarga qo'shishga harakat qilaylik.

IPFS og'riqsiz (lekin bu aniq emas)

5. Agar hamma narsa yaxshi bo'lsa, ~/.ipfs/config mahalliy konfiguratsiyasini oching, undagi "Bootstrap" ni toping: [...
va massivga birinchi navbatda olingan manzilni qo'shing.

IPFS-ni qayta ishga tushiring.

Endi faylni tashqi serverga qo'shamiz va uni mahalliy serverda so'rashga harakat qilamiz. Tez uchib ketishi kerak.

Ammo bu funksiya hali barqaror emas. Tushunishimcha, agar biz Bootstrap-da peer-manzilni ko'rsatsak ham, ish paytida ipfs tengdoshlarga faol ulanishlar ro'yxatini o'zgartiradi. Qanday bo'lmasin, bu va doimiy tengdoshlarni belgilash imkoniyati bo'yicha istaklar muhokama qilinmoqda. shu yerda va shunga o'xshaydi taxmin qilingan ba'zi funksiyalarni qo'shing [elektron pochta bilan himoyalangan]+

Joriy tengdoshlar ro'yxatini webui-da ham, terminalda ham ko'rish mumkin.

ipfs swarm peers

Ikkala joyda ham o'z bayramingizni qo'lda qo'shishingiz mumkin.

ipfs swarm connect "/ip4/ip_вашего_сервера/tcp/4001/ipfs/$PeerID"

Ushbu funksiya yaxshilanmaguncha, kerakli tengdosh bilan ulanishni tekshirish va agar bo'lmasa, ulanishni qo'shish uchun vosita yozishingiz mumkin.

Fikrlash

IPFS bilan allaqachon tanish bo'lganlar orasida IPFS uchun ham, unga qarshi ham argumentlar mavjud. Asosan, kechagi kun munozarasi va meni yana IPFS-ga kirishga undadi. Va yuqorida aytib o'tilgan munozaraga kelsak: men gapirganlarning biron bir daliliga qat'iyan qarshiman deb ayta olmayman (faqat bir yarim dasturchilar IPFSdan foydalanishiga qo'shilmayman). Umuman olganda, ikkalasi ham o'ziga xos tarzda to'g'ri (ayniqsa cheklar haqida sharh sizni o'ylashga majbur qiladi). Ammo ma’naviy-huquqiy bahoni bir chetga surib qo‘ysak, bu texnologiyaga kim qanday texnik baho beradi? Shaxsan menda "bu albatta zarur, uning ma'lum istiqbollari bor" degan ichki tuyg'u bor. Lekin nima uchun aniq, aniq formula yo'q. Masalan, agar siz mavjud markazlashtirilgan vositalarni ko'rib chiqsangiz, unda ko'p jihatdan ular ancha oldinda (ishlash barqarorligi, ishlash tezligi, boshqaruvchanlik va boshqalar). Shunga qaramay, menda mantiqiy ko'rinadigan va markazlashtirilmagan tizimlarsiz amalga oshirish qiyin bo'lgan bitta g'oya bor. Albatta, men juda qattiq harakat qilyapman, lekin men buni shunday shakllantirgan bo'lardim: Internetda ma'lumot tarqatish tamoyilini o'zgartirish kerak.

Keling, tushuntiraman. Agar siz bu haqda o'ylayotgan bo'lsangiz, endi biz ma'lumotni "Umid qilamanki, men uni kimga berdim, o'sha himoya qiladi va u yo'qolmaydi yoki mo'ljallanmagan kishi tomonidan qabul qilinmaydi" degan tamoyilga muvofiq tarqatamiz. Misol tariqasida, turli xil elektron pochta xizmatlarini, bulutli saqlashni va hokazolarni ko'rib chiqish oson. Va oxirida bizda nima bor? Habrédagi markaz Axborot xavfsizligi birinchi qatorda va deyarli har kuni biz yana bir global oqish haqida xabar olamiz. Asosan, barcha eng qiziqarli narsalar ajoyib ro'yxatda keltirilgan maqola Yoz deyarli tugadi. Oqib chiqmagan maʼlumotlar deyarli qolmagan. Ya'ni, asosiy internet gigantlari tobora kattalashib bormoqda, ular tobora ko'proq ma'lumot to'plashmoqda va bunday sızıntılar o'ziga xos axborot atom portlashlaridir. Bu hech qachon sodir bo'lmagan va bu yana. Shu bilan birga, ko'pchilik xavflar mavjudligini tushunsa-da, ular o'z ma'lumotlarini uchinchi tomon kompaniyalariga ishonishda davom etadilar. Birinchidan, ko'p muqobil yo'q, ikkinchidan, ular barcha teshiklarni yamab qo'yganliklarini va bu boshqa hech qachon sodir bo'lmaydi, deb va'da berishadi.

Men qanday variantni ko'raman? Menimcha, dastlab ma'lumotlar ochiq tarqatilishi kerak. Ammo bu holda ochiqlik hamma narsani o'qish oson bo'lishi kerak degani emas. Men saqlash va tarqatishning ochiqligi haqida gapiryapman, lekin o'qishning to'liq ochiqligi haqida emas. O'ylaymanki, ma'lumot ochiq kalitlar bilan tarqatilishi kerak. Axir, ommaviy/maxfiy kalitlar printsipi allaqachon Internet kabi eski. Agar ma'lumotlar maxfiy bo'lmasa va keng doira uchun mo'ljallangan bo'lsa, u darhol ochiq kalit bilan joylashtiriladi (lekin shifrlangan shaklda, faqat har kim uni mavjud kalit bilan shifrini ochishi mumkin). Agar yo'q bo'lsa, u ochiq kalitsiz joylashtiriladi va kalitning o'zi ushbu ma'lumotlarga kirish huquqiga ega bo'lgan kishiga o'tkaziladi. Shu bilan birga, uni o'qishi kerak bo'lgan kishi faqat kalitga ega bo'lishi kerak va bu ma'lumotni qayerdan olish u uchun unchalik muhim bo'lmasligi kerak - u shunchaki uni tarmoqdan tortib oladi (bu kontent bo'yicha tarqatishning yangi printsipi, balki manzil bo'yicha).

Shunday qilib, ommaviy hujum uchun tajovuzkorlar juda ko'p shaxsiy kalitlarga ega bo'lishlari kerak va bu bir joyda amalga oshirilishi dargumon. Bu vazifa, men tushunganimdek, ma'lum bir xizmatni buzishdan ko'ra qiyinroq.

Va bu erda yana bir muammo paydo bo'ladi: mualliflikni tasdiqlash. Endi Internetda siz do'stlarimiz tomonidan yozilgan ko'plab tirnoqlarni topishingiz mumkin. Ammo ularni yozganlar degan kafolat qayerda? Endi, agar har bir bunday yozuv raqamli imzo bilan birga bo'lsa, u ancha sodda bo'lar edi. Va bu ma'lumot qayerda joylashganligi muhim emas, asosiysi imzo, uni soxtalashtirish qiyin.

Va bu erda qiziq narsa: IPFS allaqachon shifrlash vositalarini o'z ichiga oladi (axir u blockchain texnologiyasiga asoslangan). Shaxsiy kalit darhol konfiguratsiyada ko'rsatiladi.

  "Identity": {
    "PeerID": "QmeCWX1DD7HnPSuMHZSh6tFuMxxxxxxxxxxxxxx",
    "PrivKey": "CAASqAkwggSkAgEAAoIBAQClZedVmj8JkPvT92sGrNIQmofVF3ne8xSWZIGqkm+t9IHNN+/NDI51jA0MRzpBviM3o/c/Nuz30wo95vWToNyWzJlyAISXnUHxnVhvpeJAbaeggQRcFxO9ujO9DH61aqgN1m+JoEplHjtc4KS5
pUEDqamve+xAJO8BWt/LgeRKA70JN4hlsRSghRqNFFwjeuBkT1kB6tZsG3YmvAXJ0o2uye+y+7LMS7jKpwJNJBiFAa/Kuyu3W6PrdOe7SqrXfjOLHQ0uX1oYfcqFIKQsBNj/Fb+GJMiciJUZaAjgHoaZrrf2b/Eii3z0i+QIVG7OypXT3Z9JUS60
KKLfjtJ0nVLjAgMBAAECggEAZqSR5sbdffNSxN2TtsXDa3hq+WwjPp/908M10QQleH/3mcKv98FmGz65zjfZyHjV5C7GPp24e6elgHr3RhGbM55vT5dQscJu7SGng0of2bnzQCEw8nGD18dZWmYJsE4rUsMT3wXxhUU4s8/Zijgq27oLyxKNr9T7
2gxqPCI06VTfMiCL1wBBUP1wHdFmD/YLJwOjV/sVzbsl9HxqzgzlDtfMn/bJodcURFI1sf1e6WO+MyTc3.................

Men xavfsizlik bo'yicha mutaxassis emasman va buni qanday qilib to'g'ri ishlatishni aniq bilmayman, lekin menimcha, bu kalitlar IPFS tugunlari o'rtasida almashinuv darajasida qo'llaniladi. Va shuningdek js-ipfs va shunga o'xshash misol loyihalari orbit-db, qaysi ustida ishlaydi orbit.chat. Ya'ni, nazariy jihatdan, har bir qurilma (mobil va nafaqat) o'z shifrlash va shifrlash mashinalari bilan osongina jihozlanishi mumkin. Bunday holda, hamma o'z shaxsiy kalitlarini saqlash haqida g'amxo'rlik qilishi qoladi va har kim o'z xavfsizligi uchun javobgar bo'ladi va qandaydir o'ta mashhur internet gigantida yana bir inson omilining garoviga qo'yilmaydi.

So'rovda faqat ro'yxatdan o'tgan foydalanuvchilar ishtirok etishlari mumkin. tizimga kirishiltimos.

Ilgari IPFS haqida eshitganmisiz?

  • Men hech qachon IPFS haqida eshitmaganman, lekin bu qiziqarli ko'rinadi

  • Men eshitmaganman va eshitishni ham xohlamayman

  • Men bu haqda eshitdim, lekin menga qiziq emas edi

  • Men buni eshitdim, lekin tushunmadim, lekin hozir bu qiziqarli ko'rinadi

  • Men uzoq vaqtdan beri IPFSdan faol foydalanaman.

69 foydalanuvchi ovoz berdi. 13 nafar foydalanuvchi betaraf qolgan.

Manba: www.habr.com

a Izoh qo'shish