שליטה בבלוקצ'יין תוך זמן קצר חלק 2 - יישום PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

שליטה בבלוקצ'יין תוך זמן קצר, חלק 2— יישום

פורבריאנדי

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

שליטה בבלוקצ'יין תוך זמן קצר חלק 2 - יישום PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
מקור: bitdegree

התקנת אותו? בסדר, בוא נעשה את זה!

אם יצרת את הפרויקט צור קובץ main.go . אוקיי מאפשר קוד, ראשית נתחיל מ-main.go נתחיל עם החלק struct Block של "blockchain". בבלוקצ'יין, הוא חוסם שמאחסן מידע בעל ערך. לדוגמה, ביטקוין חוסם עסקאות בחנות, המהות של כל מטבע קריפטוגרפי. מלבד זאת, בלוק מכיל מידע טכני כלשהו, ​​כמו הגרסה שלו, חותמת הזמן הנוכחית וה-hash של הבלוק הקודם. במאמר זה אנחנו לא הולכים ליישם את הבלוק כפי שהוא מתואר במפרטי הבלוקצ'יין או הביטקוין, במקום זאת, נשתמש בגרסה פשוטה שלו, המכילה רק מידע משמעותי. הנה איך זה נראה. כאן יש לנו בלוק struct:

הקלד Block struct {

Timestamp הוא חותמת הזמן הנוכחית (כאשר הבלוק נוצר), transactions הוא המידע בעל הערך האמיתי הכלול בבלוק, prevhas מאחסן את ה-hash של הבלוק הקודם, ו Hash הוא ה-hash של הבלוק. במפרט ביטקוין Timestamp, prevhash, ו Hash הם כותרות בלוק, היוצרות מבנה נתונים נפרד, ועסקאות (transaction במקרה שלנו) הוא מבנה נתונים נפרד. אז אנחנו מערבבים אותם כאן למען הפשטות.

אז איך מחשבים את ה-hashs? אופן חישוב הגיבוב הוא תכונה חשובה מאוד של בלוקצ'יין, ותכונה זו היא שהופכת את הבלוקצ'יין לאבטח. העניין הוא שחישוב hash הוא פעולה קשה מבחינה חישובית, זה לוקח קצת זמן אפילו במחשבים מהירים (בגלל זה אנשים קונים GPUs חזקים כדי לכרות ביטקוין). זהו תכנון אדריכלי מכוון, המקשה על הוספת בלוקים חדשים, ובכך מונע את השינוי שלהם לאחר הוספתם. נדון וניישם מנגנון זה במאמר עתידי.

לעת עתה, רק ניקח שדות בלוק, נשרשר אותם ונחשב גיבוב SHA-256 על השילוב המשורשר. בוא נעשה את זה ב Newhash שיטה:

func NewHash(זמן זמן.זמן, טרנזקציות []מחרוזת, prevhash []בייט) []בייט {

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

func Blocks(transactions []string, prevhash []byte) *Block {

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

func Print(בלוק *חסום) {

ועסקת פונקציה עבור עסקת הדפסה:

func Transaction(block *Block) {

לאחר השלמת כל הפונקציות הנדרשות, נשתמש בה בפונקציה הראשית:

func main () {

אוקיי כל הקוד שסיימנו לכתוב. בוא נריץ אותו על ידי הקלדת go run main.go בטרמינל. פלט:

סיכום

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

Source: https://medium.com/@purbaryandi/mastering-blockchain-in-no-time-part-2-implementation-433dc7967fe8?source=rss——cryptocurrency-5

בול זמן:

עוד מ בינוני