Κάθε πληρωμή Blocknet μπορεί να μεταφέρει μια σύντομη κρυπτογραφημένη σημείωση. Μπορείτε να τη χρησιμοποιήσετε για αριθμό τιμολογίου, κωδικό παραγγελίας ή μήνυμα προς τον άνθρωπο που πληρώνετε, και μόνο εσείς οι δύο μπορείτε να τη διαβάσετε. Αυτός ο οδηγός δείχνει πώς να προσθέσετε ένα memo όταν στέλνετε BNT, ποιος μπορεί να το διαβάσει, γιατί τα memos δεν ξεχωρίζουν ποτέ στην αλυσίδα και πού θα βρείτε τα memos που λαμβάνετε.
Τι είναι ένα memo στο Blocknet;
Ένα memo στο Blocknet είναι ένα κρυπτογραφημένο πεδίο 128 bytes που συνοδεύει κάθε έξοδο συναλλαγής. Χωρά έως 124 bytes δικού σας κειμένου ή δεδομένων, όπως έναν αριθμό τιμολογίου ή μια σύντομη σημείωση. Κρυπτογραφείται με ένα μυστικό που μοιράζονται μόνο ο αποστολέας και ο παραλήπτης και συμπληρώνεται ώστε ένα κενό memo να μοιάζει με γεμάτο.
Το memo είναι μέρος της ίδιας της μορφής των συναλλαγών. Κάθε έξοδος στην αλυσίδα έχει ένα, ακόμη και οι έξοδοι ρέστων που επιστρέφουν νομίσματα στο δικό σας πορτοφόλι. Αυτό δίνει τρεις χρήσιμες ιδιότητες:
- Ιδιωτικό από προεπιλογή. Το περιεχόμενο κρυπτογραφείται για τον παραλήπτη της συγκεκριμένης εξόδου. Κανείς άλλος δεν βλέπει τι γράψατε.
- Σταθερό μέγεθος. Το πεδίο είναι πάντα 128 bytes στην αλυσίδα, ό,τι κι αν βάλετε μέσα.
- Πάντα παρόν. Αφού κάθε έξοδος έχει memo, μια πληρωμή με σημείωση φαίνεται ακριβώς ίδια με μια πληρωμή χωρίς σημείωση.
Τι μπορείτε να βάλετε σε ένα memo;
Οτιδήποτε χωράει σε 124 bytes. Το απλό κείμενο αποθηκεύεται ως UTF-8, οπότε στα αγγλικά αυτό σημαίνει 124 γράμματα, ψηφία και κενά. Οι χαρακτήρες εκτός του λατινικού αλφαβήτου πιάνουν περισσότερα bytes: ένας κινεζικός χαρακτήρας πιάνει τρία, οπότε ένα memo χωρά περίπου 41 από αυτούς.
Συνηθισμένες χρήσεις:
- Τιμολόγια. Βάλτε τον αριθμό τιμολογίου στο memo, και αυτός που λαμβάνει την πληρωμή μπορεί να την αντιστοιχίσει στον σωστό λογαριασμό χωρίς να ρωτήσει.
- Αριθμοί παραγγελιών. Ένα κατάστημα ή μια υπηρεσία μπορεί να ζητά από τους πελάτες να συμπεριλάβουν τον κωδικό παραγγελίας και μετά να τον διαβάζει απευθείας από την εισερχόμενη πληρωμή.
- Σημειώσεις. Το «Ενοίκιο Νοεμβρίου», το «Ευχαριστώ για τη βοήθεια» ή το «Το μερίδιό μου για το δείπνο» ταξιδεύουν μαζί με τα νομίσματα.
- Δυαδικά δεδομένα. Το πορτοφόλι δέχεται επίσης ακατέργαστα bytes γραμμένα σε hex, για κωδικούς αναφοράς που δημιουργεί και διαβάζει λογισμικό.
Πώς προσθέτετε memo όταν στέλνετε BNT;
Στο πορτοφόλι γραμμής εντολών, πληκτρολογήστε το memo μετά το ποσό: send @rock 100 “invoice 1042”. Το πορτοφόλι δείχνει το memo στην οθόνη επιβεβαίωσης δίπλα στη χρέωση, το κρυπτογραφεί για τον παραλήπτη και στέλνει την πληρωμή μόλις επιβεβαιώσετε. Λειτουργούν και ακατέργαστα bytes, με το πρόθεμα hex:.
Η εντολή send του πορτοφολιού δέχεται το memo ως προαιρετικό τελευταίο όρισμα:
send <address> <amount> [memo|hex:<memo_hex>]
Ένα memo μπορεί να περιέχει κενά, και τα εισαγωγικά γύρω του είναι προαιρετικά. Το πορτοφόλι αφαιρεί ένα ζεύγος εισαγωγικών που ταιριάζουν πριν κρυπτογραφήσει το κείμενο. Ορίστε μια πληρωμή σε ένα όνομα Blocknet ID με αριθμό τιμολογίου:
> send @rock 100 "invoice 1042"
Resolved @rock -> <address> ✓ verified
# Send
Building transaction...
Send 100 BNT to @rock?
Fee: <fee>
Address: <address>
Memo: "invoice 1042"
Confirm [y/N]: y
Το βήμα επιβεβαίωσης δείχνει το memo που θα διαβάσει ο παραλήπτης, ώστε να το ελέγξετε πριν σταλεί οτιδήποτε. Αν ένα memo είναι μεγαλύτερο από 124 bytes, το πορτοφόλι σταματά πριν δημιουργήσει τη συναλλαγή με το μήνυμα memo too long: max 124 bytes, και μπορείτε να το συντομεύσετε και να δοκιμάσετε ξανά.
Για να στείλετε ακατέργαστα bytes, βάλτε μπροστά από το memo το hex:. Το πορτοφόλι αποκωδικοποιεί το hex και κρυπτογραφεί τα bytes:
send @rock 100 hex:494e562d31303432
Και οι σύνδεσμοι πληρωμής μπορούν να μεταφέρουν memo. Όταν επικολλάτε έναν σύνδεσμο blocknet:// ή bntpay.com στο πορτοφόλι, συμπληρώνει τη διεύθυνση, το ποσό και το memo για να τα επιβεβαιώσετε, ώστε αυτός που πληρώνετε να μπορεί να ορίσει εκ των προτέρων τον κωδικό του τιμολογίου. Μπορείτε να διαβάσετε περισσότερα για τα ονόματα και τους συνδέσμους στον οδηγό Blocknet ID.
Memos από το δικό σας λογισμικό
Το API του πορτοφολιού δέχεται ένα memo για κάθε παραλήπτη μιας αποστολής. Σε ένα αίτημα προς POST /api/wallet/send, δώστε σε κάθε παραλήπτη είτε memo_text για απλό κείμενο είτε memo_hex για ακατέργαστα bytes:
{
"recipients": [
{ "address": "@rock", "amount": 10000000000, "memo_text": "invoice 1042" },
{ "address": "$shop", "amount": 2500000000, "memo_hex": "4f524445522d3737" }
]
}
Τα ποσά εδώ είναι σε ατομικές μονάδες, όπου 1 BNT είναι 100.000.000 μονάδες, οπότε το παράδειγμα στέλνει 100 BNT και 25 BNT. Κάθε παραλήπτης παίρνει το δικό του memo, κρυπτογραφημένο μόνο για το δικό του πορτοφόλι. Ισχύει το ίδιο όριο των 124 bytes.
Ποιος μπορεί να διαβάσει ένα memo του Blocknet;
Ο αποστολέας και ο παραλήπτης. Κάθε memo κρυπτογραφείται με το μυστικό που μοιράζονται τα δύο πορτοφόλια για τη συγκεκριμένη έξοδο, το ίδιο μυστικό που δημιουργεί τη stealth διεύθυνση μίας χρήσης του παραλήπτη. Οποιοσδήποτε άλλος, μαζί με τους διαχειριστές κόμβων και τους block explorers, βλέπει 128 bytes δεδομένων που μοιάζουν τυχαία και δεν μπορεί να καταλάβει αν υπάρχει σημείωση μέσα.
Όταν το πορτοφόλι σας δημιουργεί μια πληρωμή, συνδυάζει ένα νέο τυχαίο κλειδί συναλλαγής με το δημόσιο κλειδί προβολής (view key) του παραλήπτη για να πάρει ένα κοινό μυστικό. Αυτό το μυστικό δημιουργεί τη stealth διεύθυνση μίας χρήσης του παραλήπτη, και το πορτοφόλι το χρησιμοποιεί επίσης για να κρυπτογραφήσει το memo. Περνά το μυστικό από SHA3-256, μαζί με τη θέση της εξόδου στη συναλλαγή και το αναγνωριστικό του δικτύου, για να φτιάξει μια μάσκα 128 bytes, και μετά συνδυάζει τη μάσκα με το memo. Κάθε έξοδος παίρνει τη δική της μάσκα, οπότε δύο memos στην ίδια συναλλαγή κρυπτογραφούνται χωριστά.
Το πορτοφόλι του παραλήπτη βρίσκει το ίδιο μυστικό από την άλλη πλευρά, χρησιμοποιώντας το ιδιωτικό κλειδί προβολής του, καθώς σαρώνει κάθε μπλοκ. Αποκρυπτογραφεί το memo και το αποθηκεύει μαζί με την πληρωμή. Από τη δική σας πλευρά, το πορτοφόλι κρατά τα memos που γράψατε στο ιστορικό αποστολών.
Δύο σημεία που αξίζει να ξέρετε:
- Και ένα πορτοφόλι μόνο προβολής δείχνει memos. Το ιδιωτικό κλειδί προβολής σας είναι αυτό που διαβάζει τις εισερχόμενες πληρωμές, οπότε ένα πορτοφόλι μόνο προβολής που δημιουργείται από αυτό βλέπει το ποσό και το memo κάθε πληρωμής. Μοιραστείτε αυτό το κλειδί μόνο με ανθρώπους που θα αφήνατε να βλέπουν τις εισερχόμενες πληρωμές σας.
- Οι ανταμοιβές εξόρυξης έχουν κενά memos. Η συναίνεση απαιτεί το memo κάθε ανταμοιβής μπλοκ να είναι κενό, οπότε οι έξοδοι coinbase της αλυσίδας δεν μπορούν ποτέ να χρησιμοποιηθούν ως δημόσιο κανάλι μηνυμάτων.
Γιατί κάθε memo φαίνεται ίδιο στην αλυσίδα
Ένα memo που έδειχνε το μήκος του θα πρόδιδε κάτι. Μια σημείωση 30 bytes φαίνεται διαφορετική από μια σημείωση 100 bytes, και ένα κενό memo θα ξεχώριζε και από τις δύο. Το πορτοφόλι του Blocknet κλείνει αυτό το κενό με σταθερή διάταξη και τυχαία συμπλήρωση.
Πριν από την κρυπτογράφηση, το πορτοφόλι πακετάρει το memo σε έναν φάκελο 128 bytes:
| Bytes | Περιεχόμενο |
|---|---|
| 1 | Έκδοση φακέλου |
| 1 | Μήκος του memo σας |
| 2 | Άθροισμα ελέγχου του memo |
| 0 έως 124 | Το memo σας |
| Τα υπόλοιπα | Τυχαία συμπλήρωση |
Η συμπλήρωση προέρχεται από την κρυπτογραφική γεννήτρια τυχαίων αριθμών του συστήματος, οπότε ο αχρησιμοποίητος χώρος είναι απρόβλεπτος. Μετά την κρυπτογράφηση, μια σύντομη σημείωση, μια γεμάτη σημείωση και ένα κενό memo είναι όλα 128 bytes δεδομένων που μοιάζουν τυχαία. Οι έξοδοι ρέστων παίρνουν το δικό τους κενό, συμπληρωμένο memo, οπότε ακόμη και τα νομίσματα που στέλνετε πίσω στον εαυτό σας δεν ξεχωρίζουν.
Το άθροισμα ελέγχου επιτρέπει στο πορτοφόλι του παραλήπτη να επιβεβαιώσει ότι αποκρυπτογράφησε σωστά το memo πριν το εμφανίσει. Οι κόμβοι επίσης απορρίπτουν κάθε μπλοκ που περιέχει έξοδο με πεδίο memo γεμάτο μηδενικά, οπότε κάθε έξοδος στην αλυσίδα έχει ένα σωστά συμπληρωμένο memo.
Πού θα βρείτε τα memos που λάβατε
Το πορτοφόλι γραμμής εντολών δείχνει τα memos όπου εμφανίζει πληρωμές:
- Το
historyεμφανίζει τις εισερχόμενες και εξερχόμενες πληρωμές, με μια γραμμήmemo:κάτω από κάθε πληρωμή που είχε memo. - Το
outputs tx <txid>δείχνει κάθε έξοδο που ανήκει στο πορτοφόλι σας σε αυτή τη συναλλαγή, μαζί με το memo. Τοoutputs <n>κάνει το ίδιο για μία μόνο έξοδο από τη λίστα. - Το API του πορτοφολιού επιστρέφει το memo κάθε εξόδου που λάβατε ως
memo_hexαπό τοGET /api/wallet/history, έτοιμο για ένα σύστημα παραγγελιών να το αντιστοιχίσει με τιμολόγια.
Τα memos κειμένου εμφανίζονται σε εισαγωγικά. Ένα memo που δεν είναι εκτυπώσιμο κείμενο, όπως ακατέργαστα bytes που στάλθηκαν με hex:, εμφανίζεται σε hex.
Αν μια πληρωμή χρειαστεί ποτέ διευθέτηση, ο αποστολέας μπορεί να την αποδείξει. Η εντολή prove <txid> του πορτοφολιού τυπώνει το κλειδί συναλλαγής για μια πληρωμή που στείλατε. Οποιοσδήποτε έχει αυτό το κλειδί, το αναγνωριστικό της συναλλαγής και τη διεύθυνση του παραλήπτη μπορεί να ελέγξει την πληρωμή μέσω του endpoint POST /api/verify-proof, που δεν χρειάζεται πορτοφόλι. Επιβεβαιώνει τη συναλλαγή και δείχνει τις εξόδους που έλαβε αυτή η διεύθυνση, τα ποσά τους και τα memos τους.
Κερδίστε τα BNT που θα στείλετε
Ένας απλός τρόπος να αποκτήσετε τα πρώτα σας BNT είναι να τα εξορύξετε. Το seine τρέχει στον δικό σας υπολογιστή, ρυθμίζεται μόνο του όσο κάνει εξόρυξη και πληρώνει μέσω του bntpool.com απευθείας στη διεύθυνσή σας ή στο @name σας. Ο οδηγός εξόρυξης το βάζει σε λειτουργία μέσα σε λίγα λεπτά.
Συχνές ερωτήσεις
Πόσο μεγάλο μπορεί να είναι ένα memo στο Blocknet;
Ένα memo χωρά έως 124 bytes. Το απλό κείμενο αποθηκεύεται ως UTF-8, οπότε αυτό σημαίνει 124 λατινικά γράμματα, ψηφία ή σημεία στίξης στα αγγλικά, ή περίπου 41 κινεζικούς χαρακτήρες των τριών bytes ο καθένας. Το πορτοφόλι σταματά ένα μεγαλύτερο memo πριν δημιουργήσει τη συναλλαγή και σας ενημερώνει για το όριο των 124 bytes.
Μπορεί ένας block explorer να διαβάσει ένα memo του Blocknet;
Όχι. Ένας explorer δείχνει το πεδίο memo ως 128 bytes κρυπτογραφημένου κειμένου με την ένδειξη ότι είναι κρυπτογραφημένο. Το κλειδί προέρχεται από το μυστικό που μοιράζονται ο αποστολέας και ο παραλήπτης για τη συγκεκριμένη έξοδο, οπότε μόνο τα πορτοφόλια τους μπορούν να το ανοίξουν. Επειδή κάθε memo συμπληρώνεται μέχρι το πλήρες μέγεθος, ένας explorer δεν μπορεί καν να καταλάβει ποιες έξοδοι έχουν σημείωση.
Κάνει ένα memo μεγαλύτερη μια συναλλαγή Blocknet;
Όχι. Κάθε έξοδος έχει ήδη ένα κρυπτογραφημένο πεδίο memo 128 bytes, είτε γράψετε σημείωση είτε το αφήσετε κενό. Η προσθήκη ενός memo γεμίζει χώρο που υπάρχει έτσι κι αλλιώς, οπότε μια πληρωμή με αριθμό τιμολογίου έχει ακριβώς το ίδιο μέγεθος με την ίδια πληρωμή χωρίς αυτόν, και οι δύο φαίνονται ίδιες στην αλυσίδα.
Μπορώ να προσθέσω memo όταν πληρώνω ένα όνομα Blocknet ID;
Ναι. Βάλτε το όνομα εκεί που μπαίνει η διεύθυνση και το memo μετά το ποσό, για παράδειγμα send @rock 100 "invoice 1042". Το πορτοφόλι επιλύει το όνομα, δείχνει την επαληθευμένη διεύθυνση, τη χρέωση και το memo και σας ζητά επιβεβαίωση. Το memo κρυπτογραφείται για το πορτοφόλι στο οποίο οδηγεί το όνομα.