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

مریم گوهرزاد
مدرس و بنیانگذار هلدینگ آرتا رسانه. برنامه نویس و محقق حوزه بلاکچین و توسعهدهنده بلاکچین | متخصص Solidity | توسعهدهنده وب Full-Stackمن یک توسعهدهنده علاقهمند به فناوریهای بلاکچین و وب ۳ هستم و در زمینه Solidity، توسعه قراردادهای هوشمند و ساخت برنامههای غیرمتمرکز (DApps) فعالیت میکنم. تمرکز من بر طراحی و پیادهسازی راهکارهایی است که در کنار بهرهگیری از فناوریهای نوین، عملکرد مناسب، امنیت و تجربه کاربری مطلوبی ارائه دهند.در مسیر حرفهای خود، تجربه کار با قراردادهای هوشمند و معماری راهکارهای مبتنی بر بلاکچین را به دست آوردهام و همواره تلاش میکنم دانش خود را با آخرین تغییرات و پیشرفتهای این حوزه بهروز نگه دارم. برای من، بلاکچین تنها یک فناوری جدید نیست؛ بلکه بستری برای ایجاد راهکارهای متفاوت و کاربردی در دنیای واقعی است.در کنار تخصص در حوزه بلاکچین، به عنوان یک توسعهدهنده وب Full-Stack نیز در طراحی و توسعه وبسایتها و برنامههای تحت وب فعالیت میکنم. تجربه کار در بخشهای Front-End و Back-End به من این امکان را داده است که پروژهها را از مرحله ایده و طراحی تا توسعه و اجرا، با دیدی جامع دنبال کنم. در فرآیند توسعه، توجه ویژهای به کدنویسی تمیز، معماری مناسب، طراحی واکنشگرا، عملکرد مطلوب و تجربه کاربری روان دارم.همیشه به دنبال یادگیری، تجربه فناوریهای جدید و پیدا کردن راههای بهتر برای حل مسائل فنی هستم. از مواجهه با چالشهای پیچیده استقبال میکنم و معتقدم بهترین نتایج زمانی شکل میگیرند که دانش فنی، خلاقیت و همکاری مؤثر در کنار یکدیگر قرار بگیرند.اگر به دنبال همکاری در یک پروژه بلاکچینی، Web3 یا توسعه وب هستید، خوشحال میشوم با یکدیگر در ارتباط باشیم و ایدهها را به راهکارهای واقعی و قابل اجرا تبدیل کنیم.



