Άνοιγμα εφαρμογής
Όλα τα άρθρα

Πώς το live.tips διαχειρίζεται τα χρήματα (δεν τα διαχειρίζεται)

Δεν υπάρχει υπόλοιπο live.tips, ούτε πρόγραμμα πληρωμών, ούτε προμήθεια. Να η αρχιτεκτονική που κάνει αυτούς τους τρεις ισχυρισμούς βαρετούς αντί για γενναίους.

Οποιοδήποτε κουτί για φιλοδωρήματα μπορεί να γράψει «0% προμήθεια» στην αρχική του σελίδα. Το ενδιαφέρον ερώτημα είναι τι θα έπρεπε να κάνει το λογισμικό για να αρχίσει να κρατάει μερίδιο, και πόσο από αυτό θα μπορούσες να δεις.

Για το live.tips η απάντηση είναι: θα έπρεπε να ξαναχτιστεί από την αρχή. Αυτό δεν είναι υπόσχεση για τις προθέσεις μας, είναι περιγραφή του πού πάνε τα χρήματα.

Τα χρήματα δεν περνούν ποτέ από εμάς

Όταν ένας θαυμαστής πατάει ένα ποσό με κάρτα, η πληρωμή δημιουργείται στον δικό σου λογαριασμό Stripe, κάθεται στο δικό σου υπόλοιπο Stripe και εξοφλείται με το δικό σου πρόγραμμα Stripe. Η μόνη χρέωση είναι η ίδια η τυπική προμήθεια επεξεργασίας του Stripe, την οποία το Stripe σου χρεώνει απευθείας, ακριβώς όπως θα έκανε αν είχες ενσωματώσει το Stripe μόνος σου.

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

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

Τα κλειδιά σου, και πού ζουν

Η ρύθμιση ζητάει ένα περιορισμένο κλειδί API του Stripe, όχι ένα ζωντανό μυστικό κλειδί — αυτά τα απορρίπτουμε κατηγορηματικά. «Περιορισμένο» σημαίνει ότι το κλειδί μπορεί να κάνει δύο πράγματα: να δημιουργεί τον σύνδεσμο φιλοδωρήματος «πλήρωσε όσο θέλεις» και να παρακολουθεί τα φιλοδωρήματα καθώς φτάνουν. Δεν μπορεί να διαβάσει το υπόλοιπό σου, να ενεργοποιήσει πληρωμές, να εκδώσει επιστροφές χρημάτων ή να αγγίξει δεδομένα πελατών. Αν διέρρεε αύριο, η ακτίνα της έκρηξης είναι ένας σύνδεσμος φιλοδωρήματος.

Χωρίς λογαριασμό, αυτό το κλειδί δεν φεύγει ποτέ από τη συσκευή σου. Κάθεται στην ίδια την κλειδοθήκη της συσκευής σου και στέλνεται αποκλειστικά στο api.stripe.com μέσω TLS. Κανένας διακομιστής live.tips δεν εμπλέκεται καθόλου.

Όταν συνδέεσαι, το κλειδί μετακινείται σε εμάς — γιατί ένα κλειδί που υπάρχει μόνο σε ένα τηλέφωνο δεν μπορεί να εξυπηρετήσει και το tablet στη σκηνή. Το κρυπτογραφούμε (ένα κλειδί AES-256 ανά μυστικό, τυλιγμένο με τη σειρά του από το Google Cloud KMS) και το αποθηκεύουμε εκεί όπου τίποτα δεν μπορεί να το διαβάσει ξανά: ούτε άλλος λογαριασμός, ούτε εμείς ρίχνοντας μια ματιά σε μια βάση δεδομένων, ούτε καν εσύ. Ξεσφραγίζεται μόνο μέσα στις συναρτήσεις μας, χρησιμοποιείται για να μιλήσουμε στο Stripe για λογαριασμό σου, και δεν παραδίδεται ποτέ ξανά σε συσκευή. Ας το πούμε καθαρά: η σύνδεση βάζει έναν διακομιστή live.tips στη διαδρομή ανάμεσα στο Stripe και το ιστορικό των φιλοδωρημάτων σου. Ποτέ τα χρήματα — τα δεδομένα.

Οι διακομιστές, και τι δεν μπορούν να κάνουν

Είναι δύο, και οι δύο ελάχιστοι.

Ο αναμεταδότης υπάρχει επειδή το Revolut και το MobilePay δεν μπορούν να οδηγηθούν από έναν περιηγητή όπως το Stripe. Η ενεργοποίησή τους ανάβει μια χούφτα συναρτήσεις Firebase που σερβίρουν τη σελίδα φιλοδωρημάτων σου στο tip.live.tips. Αποθηκεύει το δημόσιο προφίλ της σελίδας φιλοδωρημάτων σου — το εμφανιζόμενο όνομα και τα στοιχεία πληρωμής που επέλεξες να δημοσιεύσεις — και, για μια σελίδα χωρίς λογαριασμό από πίσω της, δεν κρατά κανένα ιστορικό φιλοδωρημάτων: ένα φιλοδώρημα περιμένει μόνο μέχρι να το δείξει η συσκευή σου στη σκηνή, και ό,τι δεν πρόλαβε να παραλάβει κανείς σαρώνεται μέσα σε μία ώρα. Δεν βλέπει χρήματα και αυτοδιαγράφεται μετά από 90 ημέρες αδράνειας. Αν χρησιμοποιείς μόνο το Stripe και δεν συνδέεσαι ποτέ, ο αναμεταδότης δεν καλείται ποτέ.

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

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

Ο λογαριασμός που δεν είσαι υποχρεωμένος να φτιάξεις

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

Το να συνδεθείς — με Apple, με Google ή ως επισκέπτης — είναι πλέον εφικτό, και υπάρχει για έναν λόγο: μια δεύτερη συσκευή. Αν το tablet στη σκηνή και το κινητό στην τσέπη σου πρόκειται να δείχνουν την ίδια βραδιά, κάτι πρέπει να κάθεται ανάμεσά τους, και αυτό το κάτι είναι το Firestore, κάτω από ένα αναγνωριστικό χρήστη που μόνο εσύ μπορείς να διαβάσεις. Οι μπάντες σου, οι ρυθμίσεις, το ιστορικό φιλοδωρημάτων — και, κρυπτογραφημένο όπως παραπάνω, το κλειδί σου στο Stripe — ζουν εκεί. Αυτό είναι μια πραγματική αλλαγή στην ιστορία του απορρήτου και αξίζει να ειπωθεί καθαρά αντί να ανακαλυφθεί: χωρίς λογαριασμό, κανένας διακομιστής δεν βλέπει ποτέ φιλοδώρημα· με λογαριασμό, το βλέπει η δική σου γωνιά του δικού μας, και το webhook μας είναι αυτό που το γράφει εκεί. Είναι το τίμημα της δεύτερης συσκευής, και είναι δικό σου να το πληρώσεις ή να το αρνηθείς. Αυτό που δεν αγγίζει ποτέ είναι τα χρήματα — ο λογαριασμός μετακινεί τα δεδομένα σου, όχι το υπόλοιπό σου, και προμήθεια εξακολουθεί να μην υπάρχει.

Γιατί δεν πρέπει να μας πιστέψεις στον λόγο

Όλα τα παραπάνω είναι επαληθεύσιμα. Ο κώδικας έχει άδεια MIT και είναι δημόσιος, και ο ιστότοπος είναι μια στατική έκδοση που αναπτύσσεται από το GitHub Actions στο GitHub Pages — καμία κρυφή υποδομή, τίποτα μεταγλωττισμένο πίσω από κλειστή πόρτα. Άνοιξε την καρτέλα δικτύου κατά τη διάρκεια ενός δοκιμαστικού φιλοδωρήματος και διάβασε τα αιτήματα. Είναι λιγότερα απ' όσα περιμένεις.

Αυτός είναι ο πραγματικός ισχυρισμός του προϊόντος. Όχι ότι είμαστε άξιοι εμπιστοσύνης, αλλά ότι δεν χρειάζεται να είμαστε.

Όλα τα άρθρα