מבוא ל- EthereumJ

ג'אווה טופ

רק הכרזתי על החדש למד אביב קורס, המתמקד ביסודות האביב 5 ומגף האביב 2:

>> בדוק את הקורס

1. הקדמה

במאמר זה, אנו נסתכל על ספריית EthereumJ המאפשרת לנו לקיים אינטראקציה עם Blockchain Ethereum, באמצעות Java.

ראשית, בואו רק נצלול בקצרה במה מדובר בטכנולוגיה זו.

2. אודות אתריום

את'ריום הוא מטבע מוצפן מינוף מסד נתונים מבוזר, עמית לעמית, בצורה של תכנות בלוקצ'יין, המכונה הווירטואלית של Ethereum (EVM). זה מסונכרן ומופעל באמצעות שונות אך מחוברות צמתים.

החל משנת 2017, צמתים לסנכרן את בלוקצ'יין באמצעות קונצנזוס, ליצור מטבעות באמצעות כרייה (הוכחת עבודה), לאמת עסקאות, לבצע חוזים חכמים כתוב ב- Solidity, והפעל את ה- EVM.

ה בלוקצ'יין מחולק ל חסימות המכילים מצבי חשבון (כולל עסקאות בין חשבונות) ו הוכחת עבודה.

3. ה אתריום מראית עין

ה org.ethereum.facade.Ethereum תקציר בכיתה ומאחד חבילות רבות של EthereumJ לממשק אחד קל לשימוש.

אפשר להתחבר לצומת לסינכרון עם הרשת הכוללת, ולאחר שהתחברנו, נוכל לעבוד עם הבלוקצ'יין.

יצירת אובייקט חזית קלה כמו:

אתריום אתריום = EthereumFactory.createEthereum ();

4. חיבור לרשת את'ריום

כדי להתחבר לרשת, ראשית עלינו להתחבר לצומת, כלומר שרת המריץ את הלקוח הרשמי. צמתים מיוצגים על ידי org.ethereum.net.rlpx.Node מעמד.

ה org.ethereum.listener.EthereumListenerAdapter מטפל באירועי בלוקצ'יין שזוהו על ידי הלקוח שלנו לאחר שהחיבור לצומת נוצר בהצלחה.

4.1. התחברות לרשת את'ריום

בואו נתחבר לצומת ברשת. ניתן לעשות זאת באופן ידני:

מחרוזת ip = "// localhost"; יציאת int = 8345; מחרוזת nodeId = "a4de274d3a159e10c2c9a68c326511236381b84c9ec ..."; ethereum.connect (ip, port, nodeId);

חיבור לרשת יכול להתבצע גם באופן אוטומטי באמצעות שעועית:

מעמד ציבורי EthBean {אתריום אתריום פרטי; התחלה בטלנית ציבורית () {ethereum = EthereumFactory.createEthereum (); ethereum.addListener (EthListener חדש (ethereum)); } חסימה ציבורית של getBestBlock () {return ethereum.getBlockchain (). getBestBlock (); } BigInteger ציבורי getTotalDifficulty () {להחזיר ethereum.getBlockchain (). getTotalDifficulty (); }}

ואז נוכל להזריק את שלנו EthBean בתצורת היישום שלנו. ואז הוא מתחבר אוטומטית לרשת את'ריום ומתחיל להוריד את הבלוקצ'יין.

למעשה, עיבוד החיבור הגדול ביותר נעטף ומופשט בצורה נוחה על ידי הוספת רק org.ethereum.listener.EthereumListenerAdapter למשל לנו שנוצר org.ethereum.facade.Ethereum למשל, כמו שעשינו ב הַתחָלָה() השיטה לעיל:

EthBean eBean = EthBean חדש (); Executors.newSingleThreadExecutor (). להגיש (eBean :: התחל); 

4.2. טיפול בבלוקצ'יין באמצעות מאזין

אנחנו יכולים גם לסווג את ה- sub מתאם EthereumListener לטיפול באירועי בלוקצ'יין שזוהו על ידי הלקוח שלנו.

כדי לבצע צעד זה, נצטרך להפוך את המאזין המשנה לסיווג המשנה שלנו:

מחלקה ציבורית EthListener מרחיב את EthereumListenerAdapter {private void out (String t) {l.info (t); } // ... @ ביטול חלל ציבורי onBlock (חסום חסום, קבלות רשימות) {if (syncDone) {out ("קצב חשיש נטו:" + calcNetHashRate (חסום)); out ("חסום קושי:" + block.getDifficultyBI (). toString ()); out ("חסום עסקאות:" + block.getTransactionsList (). toString ()); out ("החסימה הטובה ביותר (החסימה האחרונה):" + ethereum .getBlockchain () .getBestBlock (). toString ()); out ("קושי כולל:" + ethereum .getBlockchain () .getTotalDifficulty (). toString ()); }} @ ביטול חלל ציבורי ב- SyncDone (מצב SyncState) {out ("onSyncDone" + מצב); אם (! syncDone) {out ("** SYNC DONE **"); syncDone = נכון; }}} 

ה onBlock () השיטה מופעלת בכל בלוק חדש שמתקבל (בין אם ישן או נוכחי). EthereumJ מייצג ומטפל בלוקים באמצעות ה- org.ethereum.core.Block מעמד.

ה onSyncDone () השיטה נפתחת לאחר השלמת הסנכרון, ומעדכנת את נתוני ה- Ethereum המקומיים שלנו.

5. עבודה עם הבלוקצ'יין

כעת, לאחר שנוכל להתחבר לרשת את'ריום ולעבוד ישירות עם הבלוקצ'יין, נצלול למספר פעולות בסיסיות אך עם זאת חשובות מאוד בהן נשתמש לעתים קרובות.

5.1. הגשת עסקה

כעת, לאחר שהתחברנו לבלוקצ'יין אנו יכולים להגיש עסקה. הגשת א עִסקָה קל יחסית אך יצירת ממש עִסקָה הוא נושא ארוך בפני עצמו:

ethereum.submitTransaction (עסקה חדשה (בתים חדשים []));

5.2. גישה אל בלוקצ'יין לְהִתְנַגֵד

ה getBlockchain () שיטה מחזירה א בלוקצ'יין אובייקט חזית עם getters להביא קשיים ברשת הנוכחי ספציפי בלוקים.

מאז הקמנו את שלנו EthereumListener בסעיף 4.3, אנו יכולים לגשת לבלוקצ'יין בשיטה שלעיל:

ethereum.getBlockchain (); 

5.3. החזרת כתובת חשבון אתריום

אנחנו יכולים גם להחזיר אתריום כתובת.

להשיג את'ריום חשבון - ראשית עלינו לאמת צמד מפתחות ציבורי ופרטי בבלוקצ'יין.

בואו ניצור מפתח חדש עם זוג מקשים אקראי חדש:

org.ethereum.crypto.ECKey מפתח = ECKey חדש (); 

ובוא ניצור מפתח ממפתח פרטי נתון:

org.ethereum.crypto.ECKey key = ECKey.fromPivate (privKey);

לאחר מכן נוכל להשתמש במפתח שלנו כדי לאתחל חֶשְׁבּוֹן. על ידי התקשרות .init () הגדרנו את שניהם ECKey והקשור אליו כתובת על חֶשְׁבּוֹן לְהִתְנַגֵד:

org.ethereum.core.Account חשבון = חשבון חדש (); account.init (מפתח);

6. פונקציונליות אחרת

ישנן שתי פונקציות עיקריות אחרות המסופקות על ידי המסגרת שלא נעסוק כאן, אך שווה להזכיר.

ראשית, יש לנו את היכולת לערוך ולבצע חוזים חכמים מסוג Solidity. עם זאת, יצירת חוזים ב"סולידיטי ", ובהמשך לעריכתם וביצועם, הינה נושא נרחב בפני עצמו.

שנית, למרות שהמסגרת תומכת בכרייה מוגבלת באמצעות מעבד, שימוש בכורה GPU הוא הגישה המומלצת לאור חוסר הרווחיות של הקודם.

נושאים מתקדמים יותר בנוגע לאת'ריום עצמו ניתן למצוא במסמכים הרשמיים.

7. מסקנה

במדריך מהיר זה הראינו כיצד להתחבר לרשת את'ריום וכמה שיטות חשובות לעבודה עם הבלוקצ'יין.

כמו תמיד ניתן למצוא את הקוד המשמש בדוגמה זו ב- GitHub.

תחתית Java

רק הכרזתי על החדש למד אביב קורס, המתמקד ביסודות האביב 5 ומגף האביב 2:

>> בדוק את הקורס

$config[zx-auto] not found$config[zx-overlay] not found