آدرس

تهران، خیابان شریعتی، بالاتر از سه راه ملک، روبروی آتش نشانی

شماره تماس

۰۹۱۹۳۴۲۶۲۵۱
۰۲۱۹۱۳۰۳۴۲۴

آدرس ایمیل

info@artarasaneh.com
artarasaneh@gmail.com

تعریف کلی Protobuf و کاربرد آن در هایپرلجر فابریک

تعریف کلی Protobuf و کاربرد آن در هایپرلجر فابریک

در Hyperledger Fabric، داده‌های مربوط به بلوک‌ها، تراکنش‌ها و کانفیگ کانال‌ها با فرمت باینری Protobuf ذخیره می‌شوند. این مقاله به معرفی مفهوم Protobuf، نحوه ساختار فایل‌های کانفیگ، و روش تبدیل آن‌ها به JSON با ابزار configtxlator می‌پردازد.

Protobuf (Protocol Buffers) یک فرمت سریالایزیشن داده است که توسط Google ساخته شده است. ویژگی‌های اصلی آن: داده‌ها را به شکل باینری (Binary) ذخیره می‌کند، نه متن. بسیار کم‌حجم و سریع است. قابلیت نسخه‌بندی و گسترش آسان دارد. فایل‌های تعریف شده با .proto مشخص می‌کنند که داده‌ها چه فیلدهایی دارند و نوع هر فیلد چیست. 

پیشنهاد ویژه: آموزش بلاکچین

مثلاً یک تعریف ساده در .proto:

message Person {
 string name = 1;
 int32 age = 2;
 repeated string emails = 3;
}

این یعنی هر شیء از نوع Person می‌تواند یک نام، یک سن و یک لیست ایمیل داشته باشد.

 نقش Protobuf در Hyperledger Fabric 

در Fabric، فایل‌های کانفیگ کانال، بلوک‌ها و تراکنش‌ها همگی در قالب Protobuf ذخیره می‌شوند: 

بلوک‌ها (Blocks): حاوی لیست تراکنش‌ها، هش‌ها و metadata. 

کانفیگ کانال (Channel Config): شامل MSP سازمان‌ها، anchor peers، سیاست‌ها و تنظیمات کانال. 

تراکنش‌ها (Transactions): اطلاعات اجرای chaincode، امضاها و read/write sets. 

بنابراین هر بلوک یا کانفیگ کانال در Fabric یک فایل protobuf باینری است که باید با ابزارهایی مثل configtxlator یا کتابخانه‌های protobuf خوانده شود. 3️⃣ ساختار یک فایل کانفیگ کانال یک فایل کانفیگ کانال (config_block.pb) به شکل زیر است:

common.Block
│
├─ header
│   ├─ number       # شماره بلوک
│   ├─ previous_hash
│   └─ data_hash
│
├─ data
│   ├─ data[]       # لیست تراکنش‌ها و کانفیگ‌ها
│       ├─ payload
│       │   ├─ header
│       │   │   ├─ channel_header
│       │   │   └─ signature_header
│       │   └─ data
│       │       └─ config_update (برای آپدیت کانفیگ‌ها)
│       └─ signatures[]
│
└─ metadata
   ├─ last_config
   └─ other_metadata

پیشنهاد مطالعه: نقش jq در Hyperledger Fabric

توضیح بخش‌ها: 

header: اطلاعات عمومی بلوک. 

data: شامل تراکنش‌ها یا کانفیگ کانال. 

metadata: اطلاعات جانبی مانند امضاها، آخرین کانفیگ و هش‌ها. 

 تبدیل Protobuf به JSON فایل‌های .pb به شکل باینری هستند و خواندن مستقیم آن‌ها امکان‌پذیر نیست.

 برای خواندن یا ویرایش، باید آن‌ها را تبدیل کنیم:

configtxlator proto_decode --input config_block.pb --type common.Block --output config_block.json

 

بعد از این تبدیل، فایل JSON قابل پردازش با jq یا ویرایش دستی است. 

چرا Fabric از Protobuf استفاده می‌کند 

مزایای Protobuf در Fabric: کم‌حجم بودن: برای شبکه توزیع‌شده مهم است. سرعت بالای پردازش: پردازش بلوک‌ها سریع‌تر است. سازگاری با نسخه‌های مختلف: فایل کانفیگ‌ها و بلوک‌ها قابل گسترش هستند بدون شکستن سازگاری. 

 جمع‌بندی کوتاه: فایل پروتوباف در Hyperledger Fabric یک فایل باینری است که داده‌های شبکه مثل کانال، بلوک و تراکنش‌ها را ذخیره می‌کند. برای مشاهده یا تغییر آن، باید با ابزارهایی مثل configtxlator آن را به JSON تبدیل کنیم.

اشتراک گذاری :
مریم گوهرزاد
نویسنده

مریم گوهرزاد

مدرس و بنیانگذار هلدینگ آرتا رسانه. برنامه نویس و محقق حوزه بلاکچین

نظر خودتون رو با ما در میون بزارید

فیلدهای ستاره دار الزامی هستند . ایمیل شما منتشر نمیشود.

https://t.me/artarasaneh
tel:09193426251
https://wa.me/+989193426251
https://instagram.com/artarasaneh_com