Γεια σε όλους!
Πιο πρόσφατα, Waves Labs
Επιλέξαμε την υπόθεση DAO γιατί
Ξεκινήσαμε με ένα απλό παράδειγμα στο
Ας δούμε αυτό το παράδειγμα, ας δοκιμάσουμε υποθέσεις και ας δούμε μερικές παραξενιές:
Ας έχουμε την Alice - Κάτοχος dApp
Ο Boob και ο Cooper είναι συνεργάτες της Alice, συνιδρυτές του Alice-BC DAO
Η Νέλη είναι ιδιοκτήτρια επιχείρησης που χρειάζεται χρηματοδότηση
Τράπεζα - μια τράπεζα που διανέμει μάρκες
Στάδιο 1. Αρχικοποίηση υπολοίπων
Για να λάβετε διακριτικά στο δίκτυο δοκιμών κυμάτων, πρέπει να επικοινωνήσετε
Μπορείτε να βρείτε τη διεύθυνση στο IDE ανοίγοντας τα στοιχεία του λογαριασμού σας.
Τονίζουμε την Τράπεζα 10 ΚΥΜΑΤΑ. Στη συνέχεια ελέγχουμε ότι έφτασαν μέσω του προγράμματος περιήγησης αποκλεισμού και συναλλαγών:
Τώρα ας μοιράσουμε μάρκες από την τράπεζα στους υπόλοιπους συμμετέχοντες. (Σημειώσεις: Όλες οι συναλλαγές στο δίκτυο waves δεν είναι δωρεάν, επομένως απαιτείται ένα ελάχιστο θετικό υπόλοιπο για όλους τους συμμετέχοντες για την πραγματοποίηση συναλλαγών).
1 WAVES = 100000000 μονάδες (wavelets), αφού τα ποσά μπορούν να είναι μόνο ακέραιοι
0.01 WAVES (Τέλος συναλλαγής) = 1000000
Τράπεζα -> [3 ΚΥΜΑΤΑ] -> Αλίκη, μέσω TransferTransaction (Τύπος: 4).
Ελέγχουμε ότι το env.SEED από το οποίο υπογράφονται οι συναλλαγές ταιριάζει με την τράπεζά μας:

Εάν δεν έχετε αντίστοιχη αρχική φράση, απλώς μεταβείτε σε αυτήν στην καρτέλα Λογαριασμοί και ελέγξτε ξανά.
Μετά από αυτό, δημιουργούμε, ανακοινώνουμε και υπογράφουμε μια συναλλαγή για τη μεταφορά 3 ΚΥΜΑΤΩΝ Alice.
Μπορείτε επίσης να μάθετε τα δεδομένα της Alice μέσω της μεταβλητής env.accounts. Η αρίθμηση ξεκινά από το 0, οπότε η Alice είναι env.accounts[1].
broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))
Το αποτέλεσμα μπορεί επίσης να παρατηρηθεί στο πρόγραμμα περιήγησης, ένας σύνδεσμος προς αυτό θα επιστραφεί σε εμάς αμέσως μετά την εκτέλεση
Βεβαιωνόμαστε ότι το υπόλοιπο της Αλίκης αναπληρώνεται με 3 ΚΥΜΑΤΑ και το τραπεζικό υπόλοιπο παραμένει στο 10 - 3 - 0.01 = 0.699.
Στέλνουμε τον Boob και τον Cooper 3 WAVES ο καθένας και τη Neli, την Xena και τον Mark 0.2 WAVES ο καθένας με τον ίδιο τρόπο.
(Σημειώσεις: Κάναμε ένα σφάλμα ενός χαρακτήρα και στείλαμε τη Neli 0.02 WAVES. Να είστε προσεκτικοί!)
broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))
Μετά την αναπλήρωση των υπολοίπων όλων των συμμετεχόντων, βλέπουμε:
Στάδιο 2. Δημιουργήστε έναν λογαριασμό dApp
Συμφωνήσαμε ότι η Alice θα ήταν ο δημιουργός και ο ιδιοκτήτης της αποκεντρωμένης εφαρμογής.
Μεταβείτε στους Λογαριασμούς, ορίστε το ως SEED και ελέγξτε το env.SEED ταιριάζει με την Αλίκη.
Ας προσπαθήσουμε να εγκαταστήσουμε το απλούστερο δυνατό σενάριο (συμβόλαιο) στον λογαριασμό της Alice.
Οι έξυπνες επαφές στο Waves είναι κατηγορήματα που απαγορεύουν ή επιτρέπουν την πραγματοποίηση οποιουδήποτε τύπου εξερχόμενης συναλλαγής υπό ορισμένες προϋποθέσεις. Σε αυτή την περίπτωση, αυτή η προϋπόθεση είναι ΠΑΝΤΑ. Ο κωδικός της σύμβασης είναι αληθής. Κλήση ανάπτυξης().
Προμήθεια ανά συναλλαγή setScript 1400000/100000000 = 0.014 WAVES. Η Αλίκη έχει 2.986 ΚΥΜΑΤΑ στο υπόλοιπο της.
Ας προσπαθήσουμε τώρα να εγκαταστήσουμε πιο περίπλοκη λογική έξυπνης σύμβασης στον λογαριασμό Alice, που περιγράφεται στο
Ride4Dapps τώρα περιλαμβάνει 2 νέους τύπους σχολιασμού:
- @Callable(i) — λαμβάνει ως παράμετρο i, δεδομένα σχετικά με το ποιος λογαριασμός κάλεσε/υπέγραψε τη συναλλαγή. Είναι το αποτέλεσμα αυτής της συνάρτησης που καθορίζει την αλλαγή στην κατάσταση του λογαριασμού dApp. Άλλοι λογαριασμοί μπορούν να δημιουργούν συναλλαγές και να εκτελούν λειτουργίες με αυτόν τον σχολιασμό και να αλλάζουν την κατάσταση του λογαριασμού dApp.
- @Verifier(tx) — Επαληθευτής συναλλαγής με την παράμετρο συναλλαγής tx. Αντιστοιχεί στη λογική κατηγορήματος από το RIDE. Σε αυτήν την έκφραση μπορείτε να επιτρέψετε ή να απαγορεύσετε περαιτέρω αλλαγές στη λογική των έξυπνων συμβολαίων στον λογαριασμό dApp.
Ας το κάνουμε dApp λογαριασμό ως κοινό πορτοφόλι για όλους τους συμμετέχοντες.
Για να ελέγξετε ποιο συμβόλαιο είναι ενεργό αυτήν τη στιγμή στον λογαριασμό σας, μπορείτε να αντιγράψετε τον κώδικα base64 του έξυπνου συμβολαίου στην εξερεύνηση μπλοκ και να τον αναγνωρίσετε χρησιμοποιώντας έναν απομεταγλωττιστή (
Φροντίζουμε η λογική του έξυπνου συμβολαίου να ταιριάζει με αυτό που περιμένουμε.
Η Αλίκη έχει 2.972 ΚΥΜΑΤΑ στο υπόλοιπο της.
Αυτή η εφαρμογή dApp παρακολουθεί πόσο συνεισφέρει κάθε συμμετέχων στο κοινό ταμείο μέσω ενός μηχανισμού συναλλαγή δεδομένων — Data Entry (currentKey, newAmount), όπου currentKey είναι ο λογαριασμός που καλεί τη συνάρτηση κατάθεσης και newAmount είναι η αξία του αναπληρωμένου υπολοίπου.
Ο Boob και ο Cooper κάνουν τις καταθέσεις τους στον λογαριασμό dApp με 1 WAVES.
Κάνουμε λάθος και η συναλλαγή δεν ολοκληρώνεται. Επειδή, παρά το γεγονός ότι ήμασταν πεπεισμένοι ότι κάναμε μια συναλλαγή για λογαριασμό του Bob, κάναμε λάθος στο ευρετήριο και υποδείξαμε έναν τραπεζικό λογαριασμό που δεν έχει έξυπνο συμβόλαιο. Αξίζει να σημειωθεί ένα σημαντικό σημείο εδώ - υπάρχει χρέωση για ανεπιτυχείς προσπάθειες έναρξης συναλλαγών δεν μπορεί να αφαιρεθεί! Η Αλίκη έχει 2.972 ΚΥΜΑΤΑ στο υπόλοιπο της. Ο Μπομπ έχει 3 ΚΥΜΑΤΑ.
Ο Bob έστειλε 1 WAVES στον λογαριασμό dApp.
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))
Ο Μπομπ έχει απομείνει 1.99 ΚΥΜΑΤΑ. Δηλαδή, ο Μπομπ πλήρωσε προμήθεια 0.01 WAVES
Η Αλίκη είχε 2.972 ΚΥΜΑΤΑ στο υπόλοιπό της, τώρα είναι 3.972. Καταγράφηκε επίσης συναλλαγή στον λογαριασμό Alice, αλλά δεν χρεώθηκε προμήθεια από τον λογαριασμό dApp (Alice).
Αφού ο Cooper συμπλήρωσε επίσης τον λογαριασμό, το υπόλοιπο της Alice έγινε 4.972 WAVES.
Μπορείτε να μάθετε σε ποιον ανήκει πόσα WAVES στο κοινό πορτοφόλι στην εξερεύνηση μπλοκ στην καρτέλα Δεδομένα.
Ο Cooper άλλαξε γνώμη σχετικά με το να αφήσει το ποσό του 1 WAVES στο γενικό πορτοφόλι και αποφάσισε να αποσύρει το ήμισυ της συγγένειας. Για να γίνει αυτό, πρέπει να καλέσει τη συνάρτηση απόσυρσης.
Ωστόσο, πάλι κάναμε λάθος, αφού η συνάρτηση απόσυρσης έχει τελείως διαφορετικές παραμέτρους και διαφορετική υπογραφή. Όταν σχεδιάζετε έξυπνα συμβόλαια στο RIDE4DAPPS, θα πρέπει να προσέχετε αυτό το σημείο
Η Cooper έχει πλέον 2.48 ΚΥΜΑΤΑ στον ισολογισμό της. Αντίστοιχα, 3 ΚΥΜΑΤΑ - 1 - 0.01, και στη συνέχεια + 0.5 - 0.01. Αντίστοιχα, κάθε κλήση για κατάθεση και ανάληψη κοστίζει 0.01 WAVES. Ως αποτέλεσμα, οι εγγραφές στον πίνακα κατόχων dApps άλλαξαν ως εξής.
Ο Bob αποφάσισε επίσης να αποσύρει κάποια χρήματα από το κοινό πορτοφόλι, αλλά έκανε ένα λάθος και προσπάθησε να αποσύρει 1.5 WAVES.
Ωστόσο, το έξυπνο συμβόλαιο είχε έναν έλεγχο για αυτήν την κατάσταση.
Η Xena είναι απατεώνας, προσπάθησε να αποσύρει 1 WAVES από τον συνολικό λογαριασμό.
Ούτε της βγήκε.
Στο επόμενο μέρος, θα εξετάσουμε πιο περίπλοκα ζητήματα που σχετίζονται με την ατέλεια του λογαριασμού Alice dApp.
Πηγή: www.habr.com