
تعریف کلی 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 تبدیل کنیم.

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




