নিবন্ধগুলির এই সিরিজে, আমরা একটি সরলীকৃত ক্রিপ্টোকারেন্সি তৈরি করব যা গোলং-এ 5 মিনিটেরও কম সময়ে সহজ ব্লকচেইন বাস্তবায়নের উপর ভিত্তি করে। এই প্রকল্পটি তৈরি করতে আপনাকে প্রথমে গোলং ইনস্টল করতে হবে। পাঠ্য সম্পাদকের জন্য আপনি যে কোনও কিছু ব্যবহার করতে পারেন, এখানে আমি ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করি।
আপনি এটা ইনস্টল করেছেন? ঠিক আছে, এটা করা যাক!
আপনি যদি প্রকল্পটি তৈরি করেন তবে একটি ফাইল তৈরি করুন main.go oke কোড করি, প্রথমে আমরা main.go থেকে শুরু করব "blockchain" এর struct ব্লক অংশ দিয়ে শুরু করি। ব্লকচেইনে, এটি ব্লক করে যা মূল্যবান তথ্য সঞ্চয় করে। উদাহরণস্বরূপ, বিটকয়েন ব্লক স্টোর লেনদেন, যে কোনো ক্রিপ্টোকারেন্সির সারাংশ। এটি ছাড়াও, একটি ব্লকে কিছু প্রযুক্তিগত তথ্য থাকে, যেমন এর সংস্করণ, বর্তমান টাইমস্ট্যাম্প এবং পূর্ববর্তী ব্লকের হ্যাশ। এই নিবন্ধে আমরা ব্লককে বাস্তবায়ন করতে যাচ্ছি না যেমনটি ব্লকচেইন বা বিটকয়েন স্পেসিফিকেশনে বর্ণিত হয়েছে, পরিবর্তে, আমরা এটির একটি সরলীকৃত সংস্করণ ব্যবহার করব, যাতে শুধুমাত্র উল্লেখযোগ্য তথ্য রয়েছে। এটি দেখতে কেমন তা এখানে। এখানে আমাদের একটি struct ব্লক আছে:
টাইপ করুন ব্লক গঠন {টাইমস্ট্যাম্প সময়।সময়লেনদেন []স্ট্রিংprevhash []বাইটহ্যাশ []বাইট}
Timestamp
বর্তমান টাইমস্ট্যাম্প (যখন ব্লক তৈরি করা হয়), transactions
ব্লকে থাকা প্রকৃত মূল্যবান তথ্য, prevhas
পূর্ববর্তী ব্লকের হ্যাশ সংরক্ষণ করে, এবং Hash
ব্লকের হ্যাশ। বিটকয়েন স্পেসিফিকেশনে Timestamp
, prevhash
, এবং Hash
ব্লক হেডার, যা একটি পৃথক ডেটা কাঠামো গঠন করে এবং লেনদেন (transaction
আমাদের ক্ষেত্রে) একটি পৃথক ডেটা কাঠামো। তাই আমরা তাদের সরলতার জন্য এখানে মিশ্রিত করছি।
তাহলে কিভাবে আমরা হ্যাশ গণনা করব? যেভাবে হ্যাশ গণনা করা হয় তা হল ব্লকচেইনের একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য, এবং এই বৈশিষ্ট্যটিই ব্লকচেইনকে সুরক্ষিত করে তোলে। জিনিসটি হল যে হ্যাশ গণনা করা একটি গণনাগতভাবে কঠিন অপারেশন, এটি এমনকি দ্রুত কম্পিউটারেও কিছু সময় নেয় (তাই মানুষ বিটকয়েনের জন্য শক্তিশালী জিপিইউ কিনে থাকে)। এটি একটি ইচ্ছাকৃত আর্কিটেকচারাল ডিজাইন, যা নতুন ব্লক যোগ করা কঠিন করে তোলে, এইভাবে সেগুলি যোগ করার পরে তাদের পরিবর্তন রোধ করে। আমরা ভবিষ্যতে একটি নিবন্ধে এই প্রক্রিয়াটি নিয়ে আলোচনা করব এবং প্রয়োগ করব।
আপাতত, আমরা শুধু ব্লক ক্ষেত্রগুলি নেব, সেগুলিকে সংযুক্ত করব এবং সংযোজিত সংমিশ্রণে একটি SHA-256 হ্যাশ গণনা করব৷ এর মধ্যে এটি করা যাক Newhash
পদ্ধতি:
func NewHash(সময় সময়। সময়, লেনদেন []স্ট্রিং, প্রিভ্যাশ []বাইট) []বাইট {ইনপুট := সংযোজন (প্রেভ্যাশ, সময়. স্ট্রিং()...)লেনদেনের জন্য := পরিসীমা লেনদেন {ইনপুট = যুক্ত(ইনপুট, স্ট্রিং(রুন(লেনদেন))...)}হ্যাশ := sha256.Sum256(ইনপুট)হ্যাশ ফেরত [:]}
এর পরে, একটি গোলং কনভেনশন অনুসরণ করে, আমরা একটি ফাংশন বাস্তবায়ন করব যা একটি ব্লক তৈরি এবং সমাপ্তি সহজ করবে:
func ব্লক (লেনদেন []স্ট্রিং, প্রিভ্যাশ []বাইট) *ব্লক {বর্তমান সময় := সময়। এখন()ফেরত &ব্লক{টাইমস্ট্যাম্প: সময়।সময়{},লেনদেন: লেনদেন,prevhash: prevhash,হ্যাশ: নিউহ্যাশ (বর্তমান সময়, লেনদেন, প্রিভাশ),}}
আমরা একটি মুদ্রণ ফাংশন তৈরি করতে থাকি। প্রিন্ট ফাংশন প্রতিটি ব্লকের বিষয়বস্তু মুদ্রণের জন্য দরকারী যা একটি লেনদেন করে। এখানে কোড আছে:
func প্রিন্ট (ব্লক *ব্লক) {fmt.Printf("ttime: %sn", block.timestamp.String())fmt.Printf("tprevhash: %xn", block.prevhash)fmt.Printf("thash: %xn", block.Hash)}
এবং মুদ্রণ লেনদেনের জন্য ফাংশন লেনদেন:
ফাংশন লেনদেন (ব্লক *ব্লক) {fmt.Println("tলেনদেন:")i, লেনদেনের জন্য := range block.transactions {fmt.Printf("tt%v: %qn", i, লেনদেন)}}
সমস্ত প্রয়োজনীয় ফাংশন সম্পন্ন হওয়ার পরে আমরা এটি প্রধান ফাংশনে ব্যবহার করব:
func main() {রায়ান := []স্ট্রিং{"রিয়ান্ডি রেজাকে ৫০ বিটিসি পাঠিয়েছে"}ব্লক_১ := ব্লক(রায়ান, []বাইট{})fmt.Println("এটি আমাদের প্রথম ব্লক")মুদ্রণ(block_1)লেনদেন(block_1)জ্যাক := []স্ট্রিং{"জ্যাক রেনল্ডকে 20 বিটিসি পাঠান"}ব্লক_২ := ব্লক(জ্যাক, ব্লক_১.হ্যাশ)fmt.Println("এটি আমাদের দ্বিতীয় ব্লক")মুদ্রণ(block_2)লেনদেন(block_2)}
ঠিক আছে সমস্ত কোড আমরা লেখা শেষ করেছি। টার্মিনালে go run main.go লিখে রান করা যাক। আউটপুট:
উপসংহার
আমরা একটি খুব সাধারণ ব্লকচেইন প্রোটোটাইপ তৈরি করেছি: এটি ব্লকের একটি অ্যারে, প্রতিটি ব্লকের সাথে আগেরটির সংযোগ রয়েছে। প্রকৃত ব্লকচেইন যদিও অনেক বেশি জটিল। আমাদের ব্লকচেইনে নতুন ব্লক যোগ করা সহজ এবং দ্রুত, কিন্তু প্রকৃত ব্লকচেইনে নতুন ব্লক যোগ করার জন্য কিছু কাজের প্রয়োজন: ব্লক যোগ করার অনুমতি পাওয়ার আগে একজনকে কিছু ভারী গণনা করতে হবে (এই প্রক্রিয়াটিকে প্রুফ-অফ-ওয়ার্ক বলা হয়)। এছাড়াও, ব্লকচেইন একটি বিতরণ করা ডাটাবেস যার কোনো একক সিদ্ধান্ত গ্রহণকারী নেই। এইভাবে, একটি নতুন ব্লক নিশ্চিত করতে হবে এবং নেটওয়ার্কের অন্যান্য অংশগ্রহণকারীদের দ্বারা অনুমোদিত হতে হবে (এই প্রক্রিয়াটিকে ঐক্যমত বলা হয়)। এবং আমাদের ব্লকচেইনে এখনও কোন লেনদেন নেই!
- "
- সব
- প্রবন্ধ
- প্রবন্ধ
- Bitcoin
- blockchain
- BTC
- নির্মাণ করা
- কেনা
- কোড
- কম্পিউটার
- সংযোগ
- ঐক্য
- সুখী
- অবিরত
- cryptocurrency
- বর্তমান
- উপাত্ত
- ডেটাবেস
- নকশা
- সম্পাদক
- দ্রুত
- বৈশিষ্ট্য
- ক্ষেত্রসমূহ
- প্রথম
- অনুসরণ করা
- ফর্ম
- ক্রিয়া
- ভবিষ্যৎ
- GV
- কাটা
- এখানে
- কিভাবে
- hr
- HTTPS দ্বারা
- ia
- তথ্য
- IP
- IT
- মধ্যম
- নেটওয়ার্ক
- অন্যান্য
- সম্প্রদায়
- নিরোধক
- প্রকল্প
- প্রুফ অফ ওয়ার্ক
- পরিসর
- চালান
- ক্রম
- সহজ
- So
- শুরু
- দোকান
- দোকান
- কারিগরী
- সময়
- লেনদেন
- লেনদেন
- W
- হয়া যাই ?
- লেখা