IPFS χωρίς πόνο (αλλά αυτό δεν είναι ακριβές)

IPFS χωρίς πόνο (αλλά αυτό δεν είναι ακριβές)

Παρά το γεγονός ότι ο Χαμπρέ ήταν ήδη περισσότερα από ένα άρθρα σχετικά με το IPFS.

Θα διευκρινίσω αμέσως ότι δεν είμαι ειδικός σε αυτόν τον τομέα, αλλά έχω δείξει ενδιαφέρον για αυτήν την τεχνολογία περισσότερες από μία φορές, αλλά η προσπάθεια να παίξω μαζί της συχνά προκαλούσε πόνο. Σήμερα άρχισα να πειραματίζομαι ξανά και πήρα κάποια αποτελέσματα που θα ήθελα να μοιραστώ. Εν ολίγοις, θα περιγραφεί η διαδικασία εγκατάστασης του IPFS και ορισμένες δυνατότητες (όλα έγιναν στο ubuntu, δεν τα έχω δοκιμάσει σε άλλες πλατφόρμες).

Εάν χάσατε τι είναι το IPFS, αναγράφεται λεπτομερώς εδώ: habr.com/en/post/314768

Εγκατάσταση

Για την καθαρότητα του πειράματος, προτείνω την άμεση εγκατάσταση του σε κάποιον εξωτερικό διακομιστή, αφού θα εξετάσουμε κάποιες παγίδες με την εργασία σε τοπική λειτουργία και απομακρυσμένο. Στη συνέχεια, εάν το επιθυμείτε, δεν θα κατεδαφιστεί για πολύ καιρό, δεν υπάρχουν πολλά.

Εγκαταστήστε το go

Επίσημη τεκμηρίωση
Δείτε την τρέχουσα έκδοση στο golang.org/dl

Σημείωση: είναι καλύτερο να εγκαταστήσετε το IPFS για λογαριασμό του χρήστη που υποτίθεται ότι το χρησιμοποιεί πιο συχνά. Το γεγονός είναι ότι παρακάτω θα εξετάσουμε την επιλογή τοποθέτησης μέσω ΑΣΦΑΛΕΙΩΝ και υπάρχουν λεπτότητες.

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

Στη συνέχεια, πρέπει να ενημερώσετε το περιβάλλον (περισσότερες λεπτομέρειες εδώ: 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 είναι εγκατεστημένο

go version

Εγκαταστήστε το IPFS

Μου άρεσε περισσότερο η μέθοδος εγκατάστασης ενημέρωση ipfs.

Εγκαταστήστε το με την εντολή

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

Μετά από αυτό, μπορείτε να εκτελέσετε τις ακόλουθες εντολές:

εκδόσεις ipfs-update - για να δείτε όλες τις διαθέσιμες εκδόσεις για λήψη.
έκδοση ipfs-update - για να δείτε την τρέχουσα εγκατεστημένη έκδοση (μέχρι να εγκαταστήσουμε το IPFS, δεν θα είναι καμία).
ipfs-update εγκατάσταση πιο πρόσφατη - εγκαταστήστε την πιο πρόσφατη έκδοση του IPFS. Αντί για την πιο πρόσφατη, αντίστοιχα, μπορείτε να καθορίσετε οποιαδήποτε επιθυμητή έκδοση από τη λίστα των διαθέσιμων.

Εγκατάσταση ipfs

ipfs-update install latest

Ελέγξτε

ipfs --version

Απευθείας με την εγκατάσταση σε γενικούς όρους τα πάντα.

Εκκινήστε το IPFS

Αρχικοποίηση

Πρώτα πρέπει να εκτελέσετε την προετοιμασία.

ipfs init

Σε απάντηση, θα λάβετε κάτι σαν αυτό:

 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

Μπορείτε να εκτελέσετε την προτεινόμενη εντολή

ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Αποτέλεσμα

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

Εδώ, κατά τη γνώμη μου, αρχίζει το ενδιαφέρον. Τα παιδιά στο στάδιο της εγκατάστασης αρχίζουν ήδη να χρησιμοποιούν τις δικές τους τεχνολογίες. Ο προτεινόμενος κατακερματισμός QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv δεν έχει δημιουργηθεί ειδικά για εσάς, αλλά είναι ραμμένος στην έκδοση. Δηλαδή, πριν την κυκλοφορία, ετοίμασαν ένα κείμενο καλωσορίσματος, το έβαλαν στο IPFS και πρόσθεσαν τη διεύθυνση στο πρόγραμμα εγκατάστασης. Νομίζω ότι είναι πολύ ωραίο. Και αυτό το αρχείο (πιο συγκεκριμένα, ολόκληρος ο φάκελος) μπορεί πλέον να προβληθεί όχι μόνο τοπικά, αλλά και στην επίσημη πύλη ipfs.io/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv. Ταυτόχρονα, μπορείτε να είστε σίγουροι ότι τα περιεχόμενα του φακέλου δεν έχουν αλλάξει με κανέναν τρόπο, γιατί αν είχε αλλάξει, τότε θα είχε αλλάξει και ο κατακερματισμός.

Παρεμπιπτόντως, σε αυτήν την περίπτωση, το IPFS έχει κάποιες ομοιότητες με τον διακομιστή ελέγχου έκδοσης. Εάν κάνετε αλλαγές στα αρχεία προέλευσης του φακέλου και μεταφέρετε ξανά το φάκελο στο IPFS, τότε θα λάβει μια νέα διεύθυνση. Ταυτόχρονα, ο παλιός φάκελος δεν θα πάει πουθενά ακριβώς έτσι και θα είναι διαθέσιμος στην προηγούμενη διεύθυνσή του.

Απευθείας εκτόξευση

ipfs daemon

Θα πρέπει να λάβετε μια απάντηση όπως αυτή:

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

Ανοίγοντας τις πόρτες στο Διαδίκτυο

Δώστε προσοχή σε αυτές τις δύο γραμμές:

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

Τώρα, εάν έχετε εγκαταστήσει το IPFS τοπικά, τότε θα έχετε πρόσβαση στις διεπαφές IPFS χρησιμοποιώντας τοπικές διευθύνσεις και όλα θα είναι διαθέσιμα σε εσάς (Για παράδειγμα, localhost:5001/webui/). Αλλά όταν εγκατασταθεί σε εξωτερικό διακομιστή, από προεπιλογή, οι πύλες είναι κλειστές στο Διαδίκτυο. Πύλες δύο:

  1. webui admin (GitHub) στη θύρα 5001.
  2. Εξωτερικό API στη θύρα 8080 (μόνο για ανάγνωση).

Μέχρι στιγμής, και οι δύο θύρες (5001 και 8080) μπορούν να ανοίξουν για πειράματα, αλλά σε έναν διακομιστή μάχης, φυσικά, η θύρα 5001 θα πρέπει να είναι κλειστή με τείχος προστασίας. Υπάρχει επίσης η θύρα 4001, η οποία είναι απαραίτητη για να σας βρουν άλλοι συνομήλικοι. Θα πρέπει να αφεθεί ανοιχτό σε εξωτερικά αιτήματα.

Ανοίξτε το ~/.ipfs/config για επεξεργασία και βρείτε αυτές τις γραμμές σε αυτό:

"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"
}

Αλλάξτε το 127.0.0.1 στην ip του διακομιστή σας και αποθηκεύστε το αρχείο και μετά επανεκκινήστε το ipfs (σταματήστε την εντολή εκτέλεσης με Ctrl+C και ξεκινήστε ξανά).

Θα πρέπει να πάρει

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

Τώρα οι εξωτερικές διεπαφές θα πρέπει να είναι διαθέσιμες.

Ελέγξτε

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

Το παραπάνω αρχείο readme θα πρέπει να ανοίξει.

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

Η διεπαφή ιστού πρέπει να ανοίξει.

Εάν το webui λειτουργεί για εσάς, τότε οι ρυθμίσεις IPFS μπορούν να αλλάξουν απευθείας σε αυτό, συμπεριλαμβανομένων των στατιστικών προβολής, αλλά παρακάτω θα εξετάσω τις επιλογές διαμόρφωσης απευθείας μέσω του αρχείου διαμόρφωσης, το οποίο γενικά δεν είναι κρίσιμο. Απλώς είναι καλύτερο να θυμάστε ακριβώς πού βρίσκεται η ρύθμιση παραμέτρων και τι να κάνετε με αυτήν, διαφορετικά εάν το web face δεν λειτουργεί, θα είναι πιο δύσκολο.

Ρύθμιση μιας διεπαφής ιστού για εργασία με τον διακομιστή σας

Εδώ είναι η πρώτη παγίδα, που κράτησε περίπου τρεις ώρες.

Εάν εγκαταστήσατε το IPFS σε έναν εξωτερικό διακομιστή, αλλά δεν εγκαταστήσατε ή εκτελέσατε το IPFS τοπικά, τότε όταν μεταβείτε στο /webui στη διεπαφή ιστού, θα πρέπει να δείτε ένα σφάλμα σύνδεσης:

IPFS χωρίς πόνο (αλλά αυτό δεν είναι ακριβές)

Το γεγονός είναι ότι το webui, κατά τη γνώμη μου, λειτουργεί πολύ διφορούμενα. Αρχικά, προσπαθεί να συνδεθεί στο API του διακομιστή όπου είναι ανοιχτή η διεπαφή (βάσει της διεύθυνσης στο πρόγραμμα περιήγησης, φυσικά). και αν δεν λειτουργεί εκεί, προσπαθεί να συνδεθεί στην τοπική πύλη. Και αν έχετε το IPFS να τρέχει τοπικά, τότε το webui θα λειτουργήσει καλά για εσάς, μόνο εσείς θα δουλέψετε με τοπικό IPFS, και όχι εξωτερικό, αν και ανοίξατε το webui σε εξωτερικό διακομιστή. Στη συνέχεια, ανεβάζετε τα αρχεία, αλλά για κάποιο λόγο δεν τα βλέπετε ακριβώς έτσι σε έναν εξωτερικό διακομιστή…

Και αν δεν εκτελείται τοπικά, τότε λαμβάνουμε σφάλμα σύνδεσης. Στην περίπτωσή μας, το σφάλμα οφείλεται πιθανότατα στο CORS, το οποίο υποδεικνύεται επίσης από το webui, προτείνοντας την προσθήκη μιας διαμόρφωσης.

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"]'

Μόλις κατέγραψα έναν μπαλαντέρ

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

Οι προστιθέμενες κεφαλίδες μπορούν να βρεθούν στο ίδιο ~/.ipfs/config. Στην περίπτωσή μου είναι

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

Κάνουμε επανεκκίνηση των ipfs και βλέπουμε ότι το webui έχει συνδεθεί με επιτυχία (σε κάθε περίπτωση, θα έπρεπε, αν ανοίξατε τις πύλες για αιτήματα από έξω, όπως περιγράφεται παραπάνω).

Τώρα μπορείτε να ανεβάσετε φακέλους και αρχεία απευθείας μέσω της διεπαφής web, καθώς και να δημιουργήσετε τους δικούς σας φακέλους.

Τοποθέτηση του συστήματος αρχείων FUSE

Εδώ είναι ένα αρκετά ενδιαφέρον χαρακτηριστικό.

Αρχεία (καθώς και φακέλους), μπορούμε να προσθέσουμε όχι μόνο μέσω της διεπαφής ιστού, αλλά και απευθείας στο τερματικό, για παράδειγμα

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

Ο τελευταίος κατακερματισμός είναι ο κατακερματισμός του ριζικού φακέλου.

Χρησιμοποιώντας αυτόν τον κατακερματισμό, μπορούμε να ανοίξουμε έναν φάκελο σε οποιονδήποτε κόμβο ipfs (που μπορεί να βρει τον κόμβο μας και να λάβει τα περιεχόμενα), μπορούμε στη διεπαφή ιστού στη θύρα 5001 ή 8080 ή μπορούμε τοπικά μέσω ipfs.

ipfs ls QmbnzgRVAP4fL814h5mQttyqk1aUxxxxxxxxxxxxx
QmfYuz2gegRZNkDUDVLNa5DXzKmKVxxxxxxxxxxxxxx 10 test.txt

Αλλά μπορείτε ακόμα να το ανοίξετε σαν κανονικό φάκελο.

Ας δημιουργήσουμε δύο φακέλους στη ρίζα και ας παραχωρήσουμε δικαιώματα σε αυτούς στον χρήστη μας.

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

και επανεκκινήστε το ipfs με τη σημαία --mount

ipfs daemon --mount

Μπορείτε να δημιουργήσετε φακέλους σε άλλα μέρη και να καθορίσετε τη διαδρομή προς αυτούς μέσω των παραμέτρων ipfs daemon -mount -mount-ipfs /ipfs_path -mount-ipns /ipns_path

Τώρα η ανάγνωση από αυτόν τον φάκελο είναι κάπως ασυνήθιστη.

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

Δηλαδή, δεν υπάρχει άμεση πρόσβαση στη ρίζα αυτού του φακέλου. Αλλά μπορείτε να λάβετε το περιεχόμενο, γνωρίζοντας τον κατακερματισμό.

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

Ταυτόχρονα, ακόμη και η αυτόματη συμπλήρωση λειτουργεί μέσα στο φάκελο όταν έχει καθοριστεί η διαδρομή.

Όπως είπα παραπάνω, υπάρχουν λεπτές αποχρώσεις με τέτοια τοποθέτηση: από προεπιλογή, οι προσαρτημένοι φάκελοι FUSE είναι διαθέσιμοι μόνο στον τρέχοντα χρήστη (ακόμη και ο root δεν θα μπορεί να διαβάσει από έναν τέτοιο φάκελο, για να μην αναφέρουμε άλλους χρήστες στο σύστημα). Εάν θέλετε να κάνετε αυτούς τους φακέλους διαθέσιμους σε άλλους χρήστες, τότε στη διαμόρφωση πρέπει να αλλάξετε το "FuseAllowOther": false σε "FuseAllowOther": true. Αλλά δεν είναι μόνο αυτό. Εάν εκτελείτε το IPFS ως root, τότε όλα είναι εντάξει. Και αν για λογαριασμό ενός τακτικού χρήστη (ακόμη και sudo), τότε θα λάβετε ένα σφάλμα

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

Σε αυτήν την περίπτωση, πρέπει να επεξεργαστείτε το /etc/fuse.conf αφαιρώντας τον σχολιασμό της γραμμής #user_allow_other.

Μετά από αυτό, επανεκκινήστε το ipfs.

Γνωστά προβλήματα με το FUSE

Το πρόβλημα έχει παρατηρηθεί περισσότερες από μία φορές ότι μετά την επανεκκίνηση των ipfs με προσάρτηση (και ίσως σε άλλες περιπτώσεις), τα σημεία προσάρτησης /ipfs και /ipns δεν είναι διαθέσιμα. Δεν υπάρχει πρόσβαση σε αυτά και το ls -la /ipfs δείχνει ???? στον κατάλογο δικαιωμάτων.

Βρήκα αυτή τη λύση:

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

Στη συνέχεια επανεκκινήστε το ipfs.

Προσθήκη υπηρεσίας

Φυσικά, η λειτουργία στο τερματικό είναι κατάλληλη μόνο για αρχικές δοκιμές. Στη λειτουργία μάχης, ο δαίμονας θα πρέπει να ξεκινά αυτόματα κατά την εκκίνηση του συστήματος.

Για λογαριασμό του sudo, δημιουργήστε το αρχείο /etc/systemd/system/ipfs.service και γράψτε σε αυτό:

[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, φυσικά, πρέπει να αντικατασταθεί από το χρήστη σας (και ίσως η πλήρης διαδρομή προς το πρόγραμμα ipfs να είναι διαφορετική για εσάς (πρέπει να καθορίσετε την πλήρη διαδρομή)).

Ενεργοποιούμε την υπηρεσία.

sudo systemctl enable ipfs.service

Ξεκινάμε την υπηρεσία.

sudo service ipfs start

Έλεγχος της κατάστασης της υπηρεσίας.

sudo service ipfs status

Για την καθαρότητα του πειράματος, θα είναι δυνατή η επανεκκίνηση του διακομιστή στο μέλλον για να ελεγχθεί ότι το ipfs ξεκινά αυτόματα με επιτυχία.

Προσθέτοντας γνωστά σε εμάς γλέντια

Σκεφτείτε μια κατάσταση όπου έχουμε εγκατεστημένους κόμβους IPFS τόσο σε εξωτερικό διακομιστή όσο και τοπικά. Σε έναν εξωτερικό διακομιστή, προσθέτουμε κάποιο αρχείο και προσπαθούμε να το λάβουμε μέσω IPFS τοπικά μέσω CID. Τι θα συμβεί? Φυσικά, ο τοπικός διακομιστής πιθανότατα δεν γνωρίζει τίποτα για τον εξωτερικό μας διακομιστή και απλώς θα προσπαθήσει να βρει το αρχείο από το CID «ρωτώντας» όλους τους ομότιμους IPFS που έχει στη διάθεσή του (με τους οποίους έχει ήδη καταφέρει να «γνωριστεί»). Αυτοί με τη σειρά τους θα ρωτήσουν άλλους. Και ούτω καθεξής, μέχρι να βρεθεί το αρχείο. Στην πραγματικότητα, το ίδιο συμβαίνει όταν προσπαθούμε να περάσουμε το αρχείο μέσω της επίσημης πύλης ipfs.io. Εάν είστε τυχεροί, το αρχείο θα βρεθεί σε λίγα δευτερόλεπτα. Και αν όχι, δεν θα βρεθεί ούτε σε λίγα λεπτά, κάτι που επηρεάζει πολύ την άνεση της εργασίας. Αλλά ξέρουμε πού θα εμφανιστεί για πρώτη φορά αυτό το αρχείο. Γιατί λοιπόν δεν λέμε αμέσως στον τοπικό μας διακομιστή "Αναζήτηση πρώτα εκεί"; Προφανώς, αυτό μπορεί να γίνει.

1. Πηγαίνουμε στον απομακρυσμένο διακομιστή και ψάχνουμε στο ~/.ipfs/config config

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

2. Εκτελέστε την κατάσταση ipfs της υπηρεσίας sudo και αναζητήστε καταχωρήσεις Swarm σε αυτήν, για παράδειγμα:

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

3. Προσθέτουμε από αυτό τη γενική διεύθυνση της φόρμας "/ip4/ip_your_server/tcp/4001/ipfs/$PeerID".

4. Για αξιοπιστία, θα προσπαθήσουμε να προσθέσουμε αυτή τη διεύθυνση σε ομοτίμους μέσω του τοπικού μας webui.

IPFS χωρίς πόνο (αλλά αυτό δεν είναι ακριβές)

5. Εάν όλα είναι εντάξει, ανοίξτε το τοπικό config ~ / .ipfs / config, βρείτε το "Bootstrap" σε αυτό: [...
και προσθέστε τη ληφθείσα διεύθυνση πρώτα στον πίνακα.

Επανεκκινήστε το IPFS.

Τώρα ας προσθέσουμε το αρχείο στον εξωτερικό διακομιστή και ας προσπαθήσουμε να το ζητήσουμε στον τοπικό. Πρέπει να πετάξει γρήγορα.

Αλλά αυτή η λειτουργικότητα δεν είναι ακόμη σταθερή. Από όσο καταλαβαίνω, ακόμα κι αν καθορίσουμε τη διεύθυνση ενός peer στο Bootstrap, το ipfs αλλάζει τη λίστα των ενεργών συνδέσεων με peer κατά τη λειτουργία. Σε κάθε περίπτωση, η συζήτηση αυτού και ευχών σχετικά με τη δυνατότητα εξειδίκευσης μόνιμων εορτών βρίσκεται σε εξέλιξη εδώ και φαίνεται σαν υποτίθεται ότι προσθέστε κάποια λειτουργικότητα σε [προστασία μέσω email]+

Η λίστα των τρεχόντων ομότιμων μπορεί να προβληθεί τόσο στο webui όσο και στο τερματικό.

ipfs swarm peers

Και εδώ και εκεί μπορείτε να προσθέσετε τη γιορτή σας χειροκίνητα.

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

Μέχρι να βελτιωθεί αυτή η λειτουργικότητα, μπορείτε να γράψετε ένα εργαλείο για να ελέγξετε εάν υπάρχει σύνδεση με τον επιθυμητό ομότιμο και, εάν όχι, να προσθέσετε μια σύνδεση.

Αιτιολογία

Μεταξύ εκείνων που είναι ήδη εξοικειωμένοι με το IPFS, υπάρχουν τόσο επιχειρήματα υπέρ όσο και κατά του IPFS. Βασικά χθες τη συζήτηση και με ώθησε να ψάξω ξανά στο IPFS. Και όσον αφορά τη συζήτηση που αναφέρθηκε παραπάνω: δεν μπορώ να πω ότι αντιτίθεμαι κάθετα σε οποιοδήποτε επιχείρημα όσων μίλησαν (διαφωνώ μόνο με το γεγονός ότι ενάμιση προγραμματιστές χρησιμοποιούν IPFS). Σε γενικές γραμμές, και τα δύο έχουν δίκιο με τον τρόπο τους (ειδικά σχόλιο σχετικά με τις επιταγές σε βάζει σε σκέψεις). Αλλά αν απορρίψουμε την ηθική και νομική εκτίμηση, ποιος θα δώσει μια τεχνική αξιολόγηση αυτής της τεχνολογίας; Προσωπικά έχω ένα είδος εσωτερικής αίσθησης ότι «αυτό πρέπει να γίνει κατηγορηματικά, έχει συγκεκριμένες προοπτικές». Αλλά γιατί ακριβώς, δεν υπάρχει σαφής διατύπωση. Όπως, αν κοιτάξετε τα υπάρχοντα κεντρικά εργαλεία, τότε από πολλές απόψεις είναι πολύ μπροστά (σταθερότητα, ταχύτητα, διαχειρισιμότητα κ.λπ.). Ωστόσο, έχω μια σκέψη που φαίνεται να έχει νόημα και η οποία δύσκολα μπορεί να εφαρμοστεί χωρίς τέτοια αποκεντρωμένα συστήματα. Φυσικά, ταλαντεύομαι πάρα πολύ, αλλά θα το διατύπωνα ως εξής: πρέπει να αλλάξει η αρχή της διάδοσης πληροφοριών στο Διαδίκτυο.

ΑΣΕ με να εξηγήσω. Αν το σκεφτείτε, τώρα έχουμε πληροφορίες που διανέμονται σύμφωνα με την αρχή «Ελπίζω ότι αυτός στον οποίο τις έδωσα θα τις προστατεύσει και δεν θα χαθεί ή δεν θα παραληφθεί από εκείνους στους οποίους δεν προοριζόταν». Για παράδειγμα, είναι εύκολο να ληφθούν υπόψη διάφορες υπηρεσίες αλληλογραφίας, αποθηκευτικοί χώροι cloud, κ.λπ. Και σε τι καταλήγουμε; Στον κόμβο Habré Ασφάλεια Πληροφοριών βρίσκεται στην πρώτη γραμμή και σχεδόν καθημερινά λαμβάνουμε νέα για άλλη μια παγκόσμια διαρροή. Κατ 'αρχήν, όλα τα πιο ενδιαφέροντα πράγματα αναφέρονται στο <ειρωνεία> υπέροχο άρθρο Το καλοκαίρι έχει σχεδόν τελειώσει. Δεν έχουν απομείνει σχεδόν κανένα στοιχείο που δεν έχει διαρρεύσει. Δηλαδή, οι κύριοι γίγαντες του Διαδικτύου γίνονται μεγαλύτεροι, συσσωρεύουν όλο και περισσότερες πληροφορίες και τέτοιες διαρροές είναι ένα είδος ατομικών εκρήξεων πληροφοριών. Αυτό δεν έχει ξαναγίνει, και ιδού ξανά. Ταυτόχρονα, αν και πολλοί κατανοούν ότι υπάρχουν κίνδυνοι, θα συνεχίσουν να εμπιστεύονται τα δεδομένα τους σε τρίτες εταιρείες. Πρώτον, δεν υπάρχει πολλή εναλλακτική και δεύτερον, υπόσχονται ότι έχουν μπαλώσει όλες τις τρύπες και αυτό δεν θα ξανασυμβεί ποτέ.

Τι επιλογή βλέπω; Μου φαίνεται ότι τα δεδομένα θα πρέπει αρχικά να διανέμονται ανοιχτά. Αλλά η διαφάνεια σε αυτή την περίπτωση δεν σημαίνει ότι όλα πρέπει να είναι ευανάγνωστα. Μιλάω για το άνοιγμα της αποθήκευσης και της διανομής, αλλά όχι για το απόλυτο άνοιγμα στην ανάγνωση. Υποθέτω ότι οι πληροφορίες πρέπει να διανέμονται με δημόσια κλειδιά. Εξάλλου, η αρχή των δημόσιων / ιδιωτικών κλειδιών είναι ήδη παλιά, σχεδόν όπως το Διαδίκτυο. Εάν οι πληροφορίες δεν είναι εμπιστευτικές και προορίζονται για έναν ευρύ κύκλο, τότε τοποθετούνται αμέσως με ένα δημόσιο κλειδί (αλλά και πάλι σε κρυπτογραφημένη μορφή, μόνο ο καθένας μπορεί να τις αποκρυπτογραφήσει με το διαθέσιμο κλειδί). Και αν όχι, τότε τοποθετείται χωρίς δημόσιο κλειδί και το ίδιο το κλειδί μεταφέρεται σε αυτό που θα έπρεπε να έχει πρόσβαση σε αυτές τις πληροφορίες. Ταυτόχρονα, αυτός που θα πρέπει να το διαβάσει θα πρέπει να έχει μόνο ένα κλειδί, και από πού να πάρει αυτές τις πληροφορίες, δεν πρέπει πραγματικά να πετάξει στα ύψη - απλώς το τραβάει από το δίκτυο (αυτή είναι η νέα αρχή της διανομής ανά περιεχόμενο, όχι από διεύθυνση).

Έτσι, για μια μαζική επίθεση, οι εισβολείς θα χρειαστεί να αποκτήσουν έναν τεράστιο αριθμό ιδιωτικών κλειδιών και αυτό είναι απίθανο να γίνει σε ένα μέρος. Αυτό το έργο, όπως το βλέπω, είναι πιο δύσκολο από το να χακάρεις μια συγκεκριμένη υπηρεσία.

Και εδώ κλείνει ένα άλλο πρόβλημα: η επιβεβαίωση της συγγραφής. Τώρα στο Διαδίκτυο μπορείτε να βρείτε πολλά αποσπάσματα γραμμένα από φίλους μας. Αλλά πού είναι η εγγύηση ότι ήταν αυτοί που τα έγραψαν; Τώρα, αν κάθε τέτοιος δίσκος συνοδευόταν από ψηφιακή υπογραφή, θα ήταν πολύ πιο εύκολο. Και δεν έχει σημασία πού βρίσκονται αυτές οι πληροφορίες, το κύριο πράγμα είναι η υπογραφή, η οποία, φυσικά, είναι δύσκολο να πλαστογραφηθεί.

Και αυτό είναι το ενδιαφέρον εδώ: το IPFS φέρει ήδη εργαλεία κρυπτογράφησης (εξάλλου, βασίζεται στην τεχνολογία blockchain). Το ιδιωτικό κλειδί καθορίζεται αμέσως στη διαμόρφωση.

  "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.................

Δεν είμαι ειδικός ασφαλείας και δεν μπορώ να ξέρω ακριβώς πώς να το χρησιμοποιήσω σωστά, αλλά μου φαίνεται ότι αυτά τα κλειδιά χρησιμοποιούνται στο επίπεδο ανταλλαγής μεταξύ κόμβων IPFS. Και επίσης js-ipfs και παραδείγματα έργων όπως τροχιά-dbστο οποίο λειτουργεί τροχιά.συνομιλία. Δηλαδή, θεωρητικά, κάθε συσκευή (κινητή και όχι μόνο) μπορεί εύκολα να εξοπλιστεί με τα δικά της μηχανήματα κρυπτογράφησης-αποκρυπτογράφησης. Σε αυτήν την περίπτωση, μένει μόνο για όλους να φροντίσουν να αποθηκεύσουν τα ιδιωτικά τους κλειδιά και ο καθένας θα είναι υπεύθυνος για τη δική του ασφάλεια και όχι όμηρος ενός άλλου ανθρώπινου παράγοντα σε κάποιον υπερ-δημοφιλή γίγαντα του Διαδικτύου.

Μόνο εγγεγραμμένοι χρήστες μπορούν να συμμετάσχουν στην έρευνα. Συνδεθείτε, Σας παρακαλούμε.

Έχετε ακούσει για το IPFS στο παρελθόν;

  • Δεν έχω ακούσει ποτέ για το IPFS, αλλά φαίνεται ενδιαφέρον

  • Δεν έχω ακούσει και δεν θέλω να ακούσω

  • Ακούγεται αλλά δεν ενδιαφέρεται

  • Ακούστηκε, αλλά δεν κατάλαβα, αλλά τώρα φαίνεται ενδιαφέρον

  • Χρησιμοποιώ ενεργά το IPFS εδώ και πολύ καιρό.

Ψήφισαν 69 χρήστες. 13 χρήστες απείχαν.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο