إتقان Blockchain في أي وقت من الأوقات الجزء 2 - تنفيذ PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

إتقان Blockchain في أي وقت من الأوقات الجزء 2 - التنفيذ

بوربارياندي

في هذه السلسلة من المقالات، سنقوم ببناء عملة مشفرة مبسطة تعتمد على تنفيذ blockchain بسيط في Golang في أقل من 5 دقائق. يجب عليك تثبيت golang أولاً لإنشاء هذا المشروع. بالنسبة لمحرر النصوص، يمكنك استخدام أي شيء، وهنا أستخدم كود Visual Studio.

إتقان Blockchain في أي وقت من الأوقات الجزء 2 - تنفيذ PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.
المصدر: bitdegree

هل قمت بتثبيته؟ حسنا، دعونا نفعل ذلك!

إذا قمت بإنشاء المشروع، قم بإنشاء ملف mعين.غو. حسنًا، فلنبدأ بالبرمجة، أولاً سنبدأ من main.go لنبدأ بجزء البنية Block من "blockchain". في blockchain، يقوم بتخزين المعلومات القيمة. على سبيل المثال، تقوم عملة البيتكوين بحظر المعاملات المخزنة، وهو جوهر أي عملة مشفرة. بالإضافة إلى ذلك، تحتوي الكتلة على بعض المعلومات التقنية، مثل إصدارها والطابع الزمني الحالي وتجزئة الكتلة السابقة. في هذه المقالة، لن نقوم بتنفيذ الكتلة كما هو موضح في مواصفات blockchain أو Bitcoin، بدلاً من ذلك، سنستخدم نسخة مبسطة منها، والتي تحتوي فقط على معلومات مهمة. وهنا ما يبدو عليه. هنا لدينا كتلة الهيكل:

اكتب بنية الكتلة {

Timestamp هو الطابع الزمني الحالي (عند إنشاء الكتلة)، transactions هي المعلومات القيمة الفعلية الموجودة في الكتلة، prevhas يخزن تجزئة الكتلة السابقة، و Hash هو تجزئة الكتلة. في مواصفات البيتكوين Timestamp, prevhashو Hash هي رؤوس الكتل، والتي تشكل بنية بيانات منفصلة، ​​والمعاملات (transaction في حالتنا) عبارة عن بنية بيانات منفصلة. لذلك نحن نمزجهم هنا من أجل البساطة.

فكيف نحسب التجزئات؟ تعد طريقة حساب التجزئة ميزة مهمة جدًا في blockchain، وهذه الميزة هي التي تجعل blockchain آمنًا. الحقيقة هي أن حساب التجزئة هو عملية صعبة من الناحية الحسابية، ويستغرق بعض الوقت حتى على أجهزة الكمبيوتر السريعة (ولهذا السبب يشتري الناس وحدات معالجة الرسومات القوية لتعدين البيتكوين). هذا تصميم معماري مقصود، مما يجعل إضافة كتل جديدة أمرًا صعبًا، وبالتالي منع تعديلها بعد إضافتها. وسنناقش هذه الآلية وننفذها في مقال قادم.

في الوقت الحالي، سنأخذ حقول الكتل ونسلسلها ونحسب تجزئة SHA-256 على المجموعة المتسلسلة. دعونا نفعل هذا في Newhash الأسلوب:

func NewHash(time time.Time, Transactions []string, prevhash []byte) []byte {

بعد ذلك، بعد اتباع اتفاقية Golang، سنقوم بتنفيذ وظيفة من شأنها تبسيط عملية إنشاء الكتلة والانتهاء:

func Blocks(المعاملات []سلسلة، prevhash []بايت) *Block {

نواصل إنشاء وظيفة الطباعة. تعد وظيفة الطباعة مفيدة لطباعة محتويات كل كتلة تقوم بإجراء معاملة. هنا هو الكود:

وظيفة الطباعة (كتلة * بلوك) {

والمعاملة الوظيفية لمعاملة الطباعة:

معاملة func(كتلة *بلوك) {

بعد الانتهاء من جميع الوظائف المطلوبة سنستخدمها في الوظيفة الرئيسية:

func main () {

حسنًا، كل الكود الذي انتهينا من كتابته. لنقم بتشغيله عن طريق كتابة go run main.go في الوحدة الطرفية. انتاج :

وفي الختام

لقد قمنا ببناء نموذج أولي بسيط للغاية لسلسلة الكتل: إنها مجرد مجموعة من الكتل، مع كل كتلة لها اتصال بالكتلة السابقة. بالرغم من ذلك، فإن blockchain الفعلي أكثر تعقيدًا. في تقنية blockchain الخاصة بنا، تعد إضافة كتل جديدة أمرًا سهلاً وسريعًا، ولكن في تقنية blockchain الحقيقية، تتطلب إضافة كتل جديدة بعض العمل: يجب على المرء إجراء بعض الحسابات الثقيلة قبل الحصول على إذن لإضافة الكتل (تسمى هذه الآلية إثبات العمل). كما أن blockchain عبارة عن قاعدة بيانات موزعة ليس لها صانع قرار واحد. وبالتالي، يجب تأكيد الكتلة الجديدة والموافقة عليها من قبل المشاركين الآخرين في الشبكة (وتسمى هذه الآلية الإجماع). ولا توجد معاملات في blockchain لدينا حتى الآن!

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

الطابع الزمني:

اكثر من متوسط