Θωρακισμένο newsletter
Στείλε ένα σημείωμα markdown σε μια λίστα θωρακισμένων διευθύνσεων ως σημειώματα Zcash, χρησιμοποιώντας το Zallet. Η λίστα παραληπτών και το σημείωμα παραμένουν εκτός διαφανών διευθύνσεων.
Ένα θωρακισμένο newsletter είναι μια σειρά θωρακισμένων συναλλαγών. Κάθε έξοδος πληρώνει ένα μικροσκοπικό ποσό σε μια ενοποιημένη διεύθυνση παραλήπτη και περιέχει το επόμενο τμήμα του σημειώματος στο πεδίο σημειώματος. Το Zallet δημιουργεί και στέλνει αυτές τις συναλλαγές. Τα Zebra και Zaino παρέχουν μόνο δεδομένα αλυσίδας.
Τα scripts βρίσκονται στο site/tutorials/shieldedNewsletter. Γράφτηκαν για μια παλαιότερη έκδοση του Zallet και δεν είναι ασφαλές να εκτελεστούν ως έχουν με την τρέχουσα έκδοση. Αυτή η σελίδα περιγράφει την ενημερωμένη διαδικασία. Ελέγχθηκε με το Zallet v0.1.0-beta.3 και το βιβλίο Zallet στις 7 Οκτωβρίου 2026.
Τι χρειάζεσαι
- Το Zebra πλήρως συγχρονισμένο, με το RPC δεσμευμένο στο localhost.
- Το Zaino συγχρονισμένο με αυτόν τον κόμβο Zebra.
- Το Zallet
v0.1.0-beta.3 ή νεότερο, έκδοση πορτοφολιού, με το RPC του δεσμευμένο στο localhost. Το βιβλίο αναφέρει το z_sendmany ως υλοποιημένο. Ένα αριθμητικό τέλος απορρίπτεται: αν περάσεις το fee, πρέπει να είναι το null, επειδή το Zallet χρησιμοποιεί πάντα το τέλος ZIP 317.
- Έναν χρηματοδοτημένο λογαριασμό του οποίου η ενοποιημένη διεύθυνση μπορεί να ξοδέψει θωρακισμένα κεφάλαια.
- Ενοποιημένες διευθύνσεις παραληπτών. Ένα σημείωμα σε διαφανή διεύθυνση είναι σφάλμα.
Μην τοποθετείς μια χρηματοδοτημένη διεύθυνση ή ένα cookie στο wiki ή σε ένα script που έχει γίνει commit. Το τρέχον txBuilderFromFile.sh έχει μια ενοποιημένη διεύθυνση ενσωματωμένη στον κώδικα. Αντικατάστησέ το τοπικά και μην κάνεις commit.
Ρύθμισε το Zallet
Δημιούργησε μια ρύθμιση με το Zallet που εκτελείς και κατόπιν κατεύθυνέ το προς τα Zebra και Zaino. Το δείγμα στον παλιό οδηγό χρησιμοποιεί το as_of_version = "0.0.0" και μια προσωπική διαδρομή home. Αντιμετώπισε αυτό το αρχείο ως στιγμιότυπο, όχι ως πρότυπο.
Code-highlight
zallet init
zallet -c ~/.zallet/zallet.toml start
zallet -c ~/.zallet/zallet.toml rpc help
Το rpc help πρέπει να περιλαμβάνει τα z_sendmany, z_getoperationstatus και z_getoperationresult. Δέσμευσε το RPC μόνο στο 127.0.0.1.
Λίστα παραληπτών
Μία ενοποιημένη διεύθυνση ανά γραμμή, χωρίς εισαγωγικά και χωρίς κενές γραμμές. Το script διαβάζει το daoAddresses.md. Το παλιό readme αναφέρει το daoAddress.md. Αυτό το αρχείο δεν υπάρχει στο αποθετήριο και τα ονόματα δεν ταιριάζουν.
Code-highlight
u1...
u1...
Στείλε ένα σημείωμα
Το z_sendmany είναι ασύγχρονο. Επιστρέφει ένα αναγνωριστικό λειτουργίας. Έλεγχε το z_getoperationstatus μέχρι η κατάσταση να είναι success ή να υπάρξει σφάλμα. Μια σταθερή αναμονή 5 δευτερολέπτων, όπως κάνει το script, χάνει το αποτέλεσμα όταν η δημιουργία διαρκεί περισσότερο. Το z_getoperationresult καταναλώνει τη λειτουργία, οπότε μην το καλέσεις έως ότου η κατάσταση είναι τελική.
Το τέλος παραλείπεται. Το Zallet υπολογίζει το ZIP 317. Μην περάσεις έναν αριθμό.
Code-highlight
MEMO_HEX=$(printf '%s' "$NOTE" | xxd -p -c 9999)
zallet -c ~/.zallet/zallet.toml rpc z_sendmany \
"$FROM_UA" \
"[{\"address\":\"$TO_UA\",\"amount\":0.0001,\"memo\":\"$MEMO_HEX\"}]"
Το πεδίο σημειώματος είναι ακατέργαστο hex, με μέγιστο μέγεθος 512 bytes. Το ascii2hex κωδικοποιεί μόνο ASCII. Ένα σημείωμα με οποιονδήποτε μη ASCII χαρακτήρα αποτυγχάνει. Το xxd ή το python3 -c 'import sys; sys.stdout.write(sys.stdin.buffer.read().hex())' διαχειρίζεται UTF-8.
Η πολιτική ιδιωτικότητας χρησιμοποιεί από προεπιλογή το FullPrivacy. Αυτή είναι η σωστή προεπιλογή για έναν θωρακισμένο παραλήπτη. Μην περάσεις το AllowFullyTransparent.
Ελαττώματα των scripts
Αυτά υπάρχουν στο δέντρο στις 8 Οκτωβρίου 2026. Μην εκτελείς το shieldNewsletter.sh μέχρι να διορθωθούν.
- Από το
[[ bytesInFile -lt 512 ]] λείπει το $. Ο κλάδος ενός σημειώματος δεν εκτελείται ποτέ.
- Ο βρόχος των τμημάτων αποθηκεύει hex, έπειτα το
hex2ascii το αποκωδικοποιεί και στη συνέχεια το txBuilderFromFile.sh το κωδικοποιεί ξανά. Το τελευταίο τμήμα δεν αποστέλλεται, εκτός αν μια επόμενη γραμμή υπερβεί τα 512. Μια μεγάλη γραμμή δεν διαχωρίζεται. Στέλνεται ολόκληρη και μπορεί να υπερβεί το σημείωμα των 512 bytes.
- Το
txBuilderFromFile.sh καλεί το ./zallet rpc χωρίς διαδρομή ρύθμισης και αναμένει το binary στον τρέχοντα κατάλογο. Χρησιμοποίησε το zallet -c <config> rpc.
- Το
toCurl.sh επικοινωνεί με το Zebra στη θύρα 8232 με ένα cookie και καλεί τα getinfo και sendmany. Το Zallet δεν παρέχει το sendmany. Ο βρόχος αναμονής εξόρυξης χρησιμοποιεί επίσης το [[ chainHeight -gt temp ]] χωρίς το $, επομένως δεν περιμένει.
- Το
z_gettotalbalance 0 true περνά ως επιπλέον ορίσματα θέσης. Έλεγξε το rpc help z_gettotalbalance στο binary που εκτελείς πριν χρησιμοποιήσεις αυτή την κλήση.
- Κάθε τμήμα στέλνει
0.0001 ZEC σε κάθε παραλήπτη. Το τέλος ZIP 317 προστίθεται επιπλέον. Ένα μεγάλο σημείωμα προς πολλές διευθύνσεις ξοδεύει περισσότερα από τα ποσά dust.
Μετά από μια διόρθωση
Ένα διορθωμένο πρόγραμμα εκτέλεσης πρέπει να:
- Διαβάζει το σημείωμα ως bytes και να το διαχωρίζει σε όρια 512 bytes, όχι σε γραμμές.
- Κωδικοποιεί κάθε τμήμα σε hex μία φορά.
- Καλεί το
zallet -c <config> rpc z_sendmany με τη χρηματοδοτημένη UA, τον πίνακα παραληπτών και χωρίς όρισμα τέλους.
- Ελέγχει το
z_getoperationstatus για αυτό το αναγνωριστικό λειτουργίας.
- Καταγράφει το txid μόνο μετά το
success.
Η παλιά σελίδα οδηγού παραμένει στο Scripts θωρακισμένου newsletter. Χρησιμοποίησε αυτή τη σελίδα για τη διαδικασία.