پایگاه داده BigchainDB چیست

پایگاه داده BigchainDB نرم افزاری است که دارای خصوصیات blockchain (به عنوان مثال عدم تمرکز ، تغییر ناپذیری ، دارایی های تحت کنترل مالک) و خصوصیات بانک اطلاعاتی (به عنوان مثال نرخ بالای تراکنش ، تأخیر کم ، نمایه سازی و پرس و جو از داده های ساخت یافته) است. این برای اولین بار در فوریه 2016 با منبع آزاد منتشر شد و از آن زمان به بعد به طور مداوم بهبود یافته است. نسخه BigchainDB 2.0 نسبت به نسخه های قبلی پیشرفت های چشمگیری را ایجاد می کند. به طور خاص ، اکنون قادر به تحمل خطای بیزانس (BFT) است ، بنابراین تا یک سوم از گره ها می توانند به هر شکلی شکست بخورند ، و سیستم همچنان به توافق در مورد چگونگی ادامه کار بپردازد. BigchainDB 2.0 همچنین برای بسیاری از موارد استفاده آماده تولید است. در این مقاله ، اهداف طراحی BigchainDB 2.0 و چگونگی دستیابی به آنها را مرور می کنیم ، برخی موارد استفاده را بررسی می کنیم ، ما نشان می دهیم که چگونه BigchainDB به درون اکوسیستم تمرکززدایی متناسب است ، ما فرایند ثبت یک تراکنش را دنبال می کنیم تا بفهمیم BigchainDB 2.0 چگونه کار می کند.

پایگاه داده BigchainDB

BigchainDB اولین بار در فوریه 2016 معرفی شد، همراه با whitepaper اصلی و اولین نسخه نرم افزار (نسخه 0.1). BigchainDB به دلیل داشتن برخی از خصوصیات blockchain و برخی از مشخصات پایگاه داده ، یک پایگاه داده blockchain نامیده می شود. طراحی اولیه با یک بانک اطلاعاتی آغاز شد و برخی از ویژگی های blockchain مانند عدم تمرکز ، تغییر ناپذیری و دارایی های تحت کنترل مالک را اضافه کرد. ایده این بود که سیستم حاصل از آن خواص مطلوب بانک اطلاعاتی مانند تأخیر کم ، سرعت بالای تراکنش و ظرفیت بالا را به ارث برد. بیشتر کار می کرد ، اما برخی از مسائل وجود داشت. یک مسئله این بود که سیستم حاصل از تحمل نمی توانست در برابر خطاها(در یک زیر مجموعه محدود از گره ها) مقاومت کند. تحمل خطا بیزانس نبود (BFT) [2]. مسئله دیگر این بود که پایگاه داده زیر دارای یک گره اصلی است و آن گره همه نوشتن ها را انجام می دهد. گره های دیگر فقط آنچه را که اصلی نوشته است تکرار می کنند. گره اصلی می تواند برای مدت طولانی اولیه باشد. این یک کنترل واحد و یک نقطه شکست بود. مسئله دیگر این بود که فقط یک بانک اطلاعاتی منطقی وجود دارد ، بنابراین اگر یک عامل مخرب موفق به گرفتن امتیازات سرپرست شود ، می توانند کل پایگاه داده (در تمام گره ها) را با یک فرمان واحد حذف کنند.

BigchainDB 2.0 برای حل و فصل کلیه این موارد در عین حفظ پایگاه داده مطلوب و ویژگیهای blockchain طراحی شده است. در زیر ، ما هر هدف طراحی BigchainDB 2.0 را طی می کنیم و نحوه دستیابی آن را تشریح می کنیم.

مقایسه پایگاه داده BigchainDB
مقایسه پایگاه داده BigchainDB

BigchainDB 2.0 از Tendermint برای همه شبکه ها و اجماع استفاده می کند. هر گره دارای پایگاه داده محلی MongoDB است و کلیه ارتباطات بین گره ها با استفاده از پروتکل های Tendermint انجام می شود. یک نتیجه این است که سیستم حاصل از آن BFT است ، زیرا Tendermint BFT است. نتیجه دیگر این است که اگر یک هکر مخرب موفق به گرفتن امتیاز مدیریتی به یکی از پایگاههای داده محلی MongoDB شود ، بدترین کاری که می توانند انجام دهند فاسد یا حذف داده ها در آن پایگاه داده محلی است. پایگاه داده های MongoDB در گره های دیگر تحت تأثیر قرار نمی گیرند. Tendermint هنوز چیزی شبیه به گره اصلی (پیشنهاد دهنده بلوک فعلی) دارد ، اما با هر دور (با استفاده از الگوریتم round robin) تغییر می کند و تیم توسعه دهنده Tendermint یک مسئله باز برای ایجاد امنیت بیشتر (به عنوان مثال کمتر قابل پیش بینی) دارد. اگر هر گره در یک شبکه BigchainDB 2.0 متعلق به شخص یا نهاد دیگری باشد ، پس از آن یک شبکه غیرمتمرکز است زیرا هیچ صاحب مجرد ، هیچ نقطه کنترل و هیچ نقطه ای از خرابی یا شکستی ندارد. در حالت ایده آل ، گره ها باید در بسیاری از کشورها ، حوزه های قضایی حقوقی و ارائه دهندگان میزبان واقع شوند ، بنابراین مسئله ای که روی همه آنها تأثیر نمی گذارد. هر گره می تواند شکست بخورد و بقیه شبکه همچنان به کار خود ادامه دهد. در حقیقت ، حداکثر یک سوم گره ها می توانند به هر دلیلی شکست بخورند ، و بقیه شبکه به کار خود ادامه دهند ، یعنی گره های غیر معیوب در مورد چگونگی ادامه توافق می کنند.

هنگامی که داده ها در یک شبکه BigchainDB ذخیره می شوند ، نمی توان آنها را تغییر داد یا پاک کرد ، یا حداقل نه بدون دشواری زیاد. اگر برخی داده ها به نوعی قادر به تغییر یا پاک شدن باشند ، این قابل تشخیص است. ممکن است کسی بگوید که این ذخیره سازی “عملاً تغییر ناپذیر” است ، اما در دنیای blockchain ، معمولاً فقط می گویند “تغییر ناپذیر” است. BigchainDB برای دستیابی به عملاً تغییر ناپذیر عملی از چندین استراتژی استفاده می کند. ساده ترین مورد این است که هیچ API ارائه شده توسط BigchainDB برای تغییر یا پاک کردن داده های ذخیره شده وجود ندارد. استراتژی دیگر این است که هر گره دارای یک کپی کامل از تمام داده ها در یک پایگاه داده مستقل MongoDB (یعنی هیچ پایگاه داده جهانی MongoDB وجود ندارد). حتی اگر یک گره خراب یا نابود شود ، گره های دیگر تحت تأثیر قرار نخواهند گرفت و هنوز هم یک کپی از همه داده ها را در اختیار خواهید داشت. استراتژی دیگر این است که کلیه معاملات بصورت رمزنگاری امضا شده اند. پس از ذخیره یک تراکنش ، تغییر محتوای آن امضا را تغییر می دهد ، که می تواند شناسایی شود (مگر اینکه کلید عمومی نیز تغییر کند ، اما این نیز باید قابل تشخیص باشد زیرا هر بلوک معاملات توسط یک گره امضا می شود و کلیدهای عمومی همه گره ها مشخص هستند)

BigchainDB مانند اکثر بلاکچین ها ، مفهومی از دارایی های تحت کنترل مالک دارد. فقط مالک (یا صاحبان) یک دارایی می تواند آن دارایی را انتقال دهد. (مالکان دارندگان یک مجموعه خاص از کلیدهای خصوصی هستند.) حتی یک اپراتور گره نمی تواند یک دارایی را انتقال دهد. در اکثر بلاکچین ها ، تنها یک دارایی داخلی (به عنوان مثال بیت کوین یا اتر) وجود دارد ، اما BigchainDB به کاربران خارجی اجازه می دهد تا به اندازه نیاز دارایی ایجاد کنند. با این حال ، شایان ذکر است که کاربر نمی تواند دارایی ایجاد کند که به نظر می رسد توسط شخص دیگری ایجاد شده است. کلیه دارایی های ایجاد شده توسط مایک به صورت رمزنگاری توسط مایک امضا شده است. به عنوان مثال ، ممکن است یک کاربر به نام جو تصمیم بگیرد 1000 “توکن جو” ایجاد کند. او این کار را با ساختن یک تراکنش BigchainDB CREATE ، امضای آن با کلید خصوصی خود و ارسال آن به شبکه BigchainDB انجام می داد. (بعداً در این مقاله ، ما چه اتفاقی می افتد هنگام تراکنش هنگام ورود به یک شبکه BigchainDB را ردیابی می کنیم.) در ابتدا ، جو ممکن است همه 1000 توکن را داشته باشد ، بنابراین فقط او می تواند آنها را به دیگران منتقل کند. او می توانست با ایجاد یک تراکنش BigchainDB TRANSFER با دو خروجی 37 توکن را به لیزا منتقل کند: یکی با مقدار 37 توکن با شرط اینکه فقط لیزا می تواند آن را انتقال دهد ، و دیگری با تمام توکن های باقی مانده (1000 – 37 = 963 توکن) با شرط اینکه فقط جو بتواند آن را منتقل کند. BigchainDB هر تراکنش را چک می‌کند تا مطمئن شود که سعی در انتقال خروجی که قبلا به آن (خرج شده)به وسیله تراکنش دیگری منتقل شده‌است، یعنی مانع از پرداخت دو برابر می‌شود. همچنین بسیاری از موارد دیگر را نیز بررسی می کند ، همه این موارد در BigchainDB Transaction Spec v2 ذکر شده است .

یکی از اهداف طراحی BigchainDB همیشه توانایی پردازش تعداد زیادی معاملات در هر ثانیه بوده است. این مسئله هنوز در مورد BigchainDB 2.0 صادق است. هنوز هیچ نتیجه مشخصی در دسترس نیست. با این حال ، از آنجا که BigchainDB 2.0 مبتنی بر Tendermint است ، می توانیم به شبکه های دیگر Tendermintbase نگاه کنیم تا حس آنچه را می توان انتظار داشت داشته باشیم. با توجه به Cosmos:

علی‌رغم تضمین‌های قوی، Tendermint عملکرد استثنایی ارایه می‌دهد. در ۶۴ نود که در ۷ مرکز داده در ۵ قاره توزیع شدند، در موارد ابری کالا، اجماع نظری می‌تواند هزاران معامله در هر ثانیه را انجام دهد، با commit به ترتیب یک تا دو ثانیه. قابل‌ذکر است که عملکرد خوب بیش از هزار تراکنش ها در هر ثانیه حتی در شرایط خصمانه شدید، با سقوط validators و یا پخش maliciously های پر قدرت، حفظ می‌شود.

زمان تاخیر کم و قطعیت سریع

شبکه های مستقر در Tendermint (مانند شبکه های BigchainDB) فقط چند ثانیه (یا کمتر) طول می کشد تا یک تراکنش در یک بلوک متعهد جدید گنجانده شود. وقتی این اتفاق بیفتد ، به هیچ وجه نمی توان آن را برگرداند یا در نظر گرفت که ناقص است ، زیرا Tendermint کار را انجام نمی دهد.

نمایه سازی و پرس و جو داده های ساخت یافته

هر گره در یک شبکه BigchainDB 2.0 پایگاه داده محلی MongoDB خود را دارد. این بدان معنی است که هر اپراتور گره برای نمایه سازی و پرس و جو کردن داده های ذخیره شده )معاملات ، دارایی ها ، ابرداده و بلوک ها ، که همه رشته های JSON هستند( به قدرت کامل MongoDB دسترسی دارد. هر اپراتور گره آزاد است تا تصمیم بگیرد که چه مقدار از این نیرو را در معرض کاربران خارجی قرار می دهد. ممکن است یک اپراتور گره تصمیم به نمایه سازی داده های مکانی و داده های جغرافیایی بهینه شده از طریق API REST بگذارد ، در حالی که اپراتور گره دیگر ممکن است تصمیم به ارائه یک API GraphQL کند.

به طور پیش فرض ، BigchainDB 2.0 برخی از فهرست های MongoDB را ایجاد می کند و BigchainDB HTTP API شامل نقاط پایانی برای انجام نمایش داده شدگان اساسی است. با این حال ، همانطور که در پاراگراف قبلی مشخص شد ، هر اپراتور گره می تواند شاخص های اضافی و API های پرس و جو اضافه کند.

BigchainDB، با قابلیت‌های ذکر شده در بخش قبل، می‌تواند به پروژه های زیادی موارد استفاده قرار گیرد. هر کجا که نیاز به داده‌های تغییر ناپذیر، دستکاری اطلاعات مقاوم در برابر دستکاری اموال دیجیتالی وجود دارد، می توان از آن استفاده کرد. several متعددی وجود دارند که می‌توانند مستقیما از ویژگی‌های BigchainDB بهره‌مند شوند. در زیر بخش‌های زیر، ما به طور خلاصه برخی از این verticals را لمس خواهیم کرد و در مورد چگونگی کمک به این سناریوها صحبت خواهیم کرد.

زنجیره تامین

در یک سناریوی زنجیره تامین معمولی ، چندین طرف / نهاد با یکدیگر همکاری و تبادل می کنند. در درجه اول ، این اطلاعات مربوط به فرآیندهای ردیابی کالاهایی است که تولید می شوند تا رسیدن به انتهای منطقی چرخه زنجیره تأمین (خرده فروشان / مصرف کنندگان نهایی). چالش اصلی این نهادها که در یک سناریوی زنجیره تأمین همکاری می کنند ، مدیریت و امنیت اطلاعات به اشتراک گذاشته شده است. سرانجام ، چندین پایگاه داده پدیدار می شود و مدیریت آن دشوار می شود. این جایی است که به طور کلی فناوری blockchain می تواند به سازماندهی این داده ها در یک سیستم مشترک کمک کند تا مدیریت کلی اطلاعات آسان شود. به دلیل تغییر ناپذیری و مقاومت در برابر حملات ، blockchain همچنین لایه ای از اعتماد به نهادهای همکاری را فراهم می کند تا بتوانند به داده ها اعتماد کنند حتی اگر به یکدیگر اعتماد ندارند. در حالی که سایر بلاکچین ها و سیستم های غیر متمرکز می توانند به سازماندهی داده ها در یک سیستم مشترک کمک کنند ، اما برای توان بالا و قابلیت های پرس و جو مورد نیاز برای یک سناریوی زنجیره تأمین بهینه نمی شوند. اینجاست که BigchainDB می درخشد و قابلیت های پرس و جو و عملکرد بالا را به همراه می آورد. BigchainDB هنگامی که در یک سناریوی زنجیره تأمین استفاده می شود ، مانند یک blockchain معمولی ، به سازماندهی داده ها در یک سیستم غیر متمرکز کمک می کند ، اما علاوه بر این ، به کاربران این امکان را می دهد تا داده ها را برای تولید گزارش ها و انجام محاسبات در پرواز جستجو کنند.

مدیریت و پیشرفت حقوق مالکیت معنوی

وقتی صحبت از مدیریت و پیشرفت حقوق مالکیت معنوی است ، فن آوری blockchain فواید زیادی دارد زیرا به عدم تغییرپذیری ادعاهای هنرمندان کمک می کند. هنگامی که یک دارایی هنری در یک blockchain با انتساب مناسب به ثبت رسید ، می توان از آن برای اثبات مالکیت حقوق مالکیت معنوی استفاده کرد. نقل و انتقالات مالکیت نیز قابل ثبت است. به همین دلیل ، ما در سال 2014 ascribe ایجاد کردیم و این مبتنی بر blockchain Bitcoin بود. با این حال ، به زودی توان عملی ساختن blockchain عمومی بیت کوین به یک تنگنا تبدیل شد. این زمانی است که BigchainDB را پیش بینی کردیم و شروع به ساختن آن کردیم. BigchainDB 2.0 همچنین توان عملیاتی بالایی را در اختیار دارد و از این رو گزینه ای عالی برای موارد استفاده از مالکیت معنوی است.

دوقلوها دیجیتال (Digital Twins) و اینترنت اشیا

دوقلوهای دیجیتال نمایش دیجیتالی اشیاء فیزیکی هستند که می توان براساس تایید اصالت و منبع، اثبات مالکیت، قابلیت ردیابی چرخه عمر، و داده‌های ورودی از دستگاه‌های IoT & ردیابی کرد. برای مدیریت این مقیاس از اطلاعات، دادن هر محصول و هدف یک داستان از خود، ما به یک سیستم مقاوم در برابر دستکاری، که می‌تواند به سرعت به نتایج عمل کند، نیاز داریم. در این زمینه نیز BigchainDB کاربرد دارد.

هویت

هویت یکی از مهمترین قطعه ها در هنگام مدیریت اطلاعات خاص کاربر است. این امر در سناریوهایی مانند IoT و Digital Twins جایی که حتی ماشین ها دارای هویت هستند ، از اهمیت بیشتری برخوردار شده است. با تبدیل شدن سرقت هویت به یکی از مهمترین دغدغه های امروز ، ما باید اطمینان حاصل کنیم که هویت یک انسان یا یک ماشین ، خودمختار و ضد هک است. به دلیل حجم زیادی از داده های مرتبط با هویت ، ما همچنین باید اطمینان حاصل کنیم که سیستم هایی که داده های مربوط به هویت را کنترل می کنند ، قادر به دستیابی به مقیاس بالا هستند. این زمانی است که BigchainDB به دلیل ویژگیهای ترکیبی از blockchain ها و بانکهای اطلاعاتی ، به دلیل ویژگیهای ترکیبی از blockchains و بانکهای اطلاعاتی ، تبدیل به یک گزینه طبیعی برای حل موارد استفاده مرتبط با هویت می شود.

اداره اطلاعات در پایگاه داده BigchainDB

موارد استفاده از حاکمیت داده ها سناریوهایی هستند که چندین سازمان یا نهاد مستقل در تعیین فرایندها و دستورالعملهای مشترک همکاری می کنند. امروزه مهمترین چالش با مدیریت داده ها عدم همکاری و اعتماد است. همچنین هیچ مشوق مشخصی برای شرکت کنندگان در همکاری با موضوعات حاکمیت وجود ندارد. BigchainDB با ارائه یک بستر محرک ساده برای ادغام با یکدیگر، به حل این چالش ها در مدیریت داده ها کمک می کند. این روش برای مدل سازی مباحث حاکمیت داده ها ، بازخورد و مشوق های اقتصادی به عنوان دارایی BigchainDB است. هنگامی که ما یک سیستم حاکمیت داده ها را به عنوان مجموعه ای از دارایی های BigchainDB الگوبرداری می کنیم ، همکاری و تعریف فرایندها در بالای آنها کاملاً ساده خواهد بود زیرا داده ها با استفاده از یک بستر مشترک به اشتراک گذاشته می شوند و همه شرکت کنندگان برای مشارکت تشویق می شوند.

حسابرسی غیرقابل تغییر

حسابرسی غیرقابل تغییر یکی از موارد استفاده عمومی BigchainDB است. در حالی که به طور مستقیم با هیچ صنعت عمودی در ارتباط نیست ، آنها به حل بسیاری از چالش های ردیابی در زمینه های عمودی کمک می کنند. از بانکداری گرفته تا زنجیره تأمین ، از خدمات نرم افزاری گرفته تا کنترل دسترسی ، به مسیرهای حسابرسی به شدت اعتماد می شود. اگر این مسیرهای حسابرسی غیرقابل تغییر و آسان برای پرس و جو باشند ، واقعاً ارزش زیادی می بخشد. BigchainDB ، به دلیل توان بالای پرس و جو به عنوان یک طبیعی برای حفظ مسیرهای حسابرسی تغییرناپذیر می شود.

برخی نکات پایانی در مورد برخی از کاربرد های BigchainDB

به طور کلی ، BigchainDB تقریباً در تمام سناریوهایی که نیاز به ذخیره غیرقابل تغییر و خنثی دارایی داده ها در توان بالا با توان جستجو و پرس و جو وجود دارد ، قابل استفاده است. BigchainDB همچنین می تواند توسط گروههایی از افراد یا سازمانهایی که مایل به ایجاد یک بانک اطلاعاتی مشترک هستند ، حتی اگر به یکدیگر اعتماد ندارند ، می تواند مورد استفاده قرار گیرد. باید مراقب اطلاعاتی باشید که یکی از آنها در یک شبکه BigchainDB ذخیره می کند. به عنوان مثال ، ذخیره سازی اطلاعات شناسایی شده شخصی (PII) از این امر دلسرد می شود ، زیرا بسیاری از کشورها دارای مقررات هستند که نیاز دارند PII در صورت درخواست پاک شوند.

پایگاه داده BigchainDB در اکو سیستم غیر متمرکز

به عنوان یک بانک اطلاعاتی blockchain ، BigchainDB مکمل سایر سیستم های غیرمتمرکز است ، مانند ذخیره سازی پرونده های غیرمتمرکز (به عنوان مثال IPFS) ، پروتکل های تبادل داده غیرمتمرکز (به عنوان مثال پروتکل Ocean) ، blockchain های قرارداد هوشمند (به عنوان مثال Ethereum ، یا Hyperledger Fabric)و پردازش غیر متمرکز (به عنوان مثال TrueBit). BigchainDB با سیستم های محاسبات متمرکز نیز کار می کند. شکل 1 روش هایی را نشان می دهد که BigchainDB در بستر های مختلف فن آوری قابل استفاده است.

پایگاه داده BigchainDB
معماری پایگاه داده BigchainDB

شکل بلا از یک بافت پایه از یک اکوسیستم محاسبه بروش ابر متمرکز (چپ)، BigchainDB می‌تواند به عنوان پایگاه‌داده دیگری برای بدست آوردن برخی از مزایای غیر متمرکز اضافه شود (میانی). همچنین با یک پشته فن‌آوری کاملا غیر متمرکز متناسب است (سمت راست).

فرایند ثبت یک تراکنش در پایگاه داده BigchainDB

یک تراکنش در BigchainDB یک رشته JSON است که با استاندارد Transactions BigchainDB (Spec)مطابقت دارد. در زمان ایجاد یک تراکنش دو نوع استاندارد (ساختار) وجود داشت: نسخه 1 و نسخه ۲. معاملات مطابق با استاندارد BigchainDB Transactions Spec v1 با نسخه‌های BigchainDB ۱.۰- ۱.3 پذیرفته می شدند؛ این نسخه دیگر پشتیبانی نمی‌شود. تراکنش ها مطابق با تراکنش ها BigchainDB در نسخه BigchainDB ۲.۰ (یعنی آخرین نسخه در زمان نوشتن)پذیرفته شده‌است. هر تراکنش مشخصات و مقادیر پیش‌بینی‌شده را توضیح می‌دهد ، دستورالعمل چگونگی ساخت یک تراکنش، فهرستی از چک که باید انجام شود تا بررسی شود که آیا تراکنش معتبر است یا خیر، و جزئیات اصول رمزنگاری مورد استفاده قرار می‌گیرد. لیست ۱ نمونه‌ای از تراکنش (v۲)را نشان می‌دهد.

اگر شخصی بخواهد یک تراکنش معتبر BigchainDB را ایجاد کند ، معمولاً از یک درایور BigchainDB (بسته نرم افزاری) استفاده می کند. لیستی از درایورهای BigchainDB در اسناد BigchainDB وجود دارد.

پایگاه داده BigchainDB
پایگاه داده BigchainDB

ارسال یک تراکنش به شبکه BigchainDB

وقتی یک تراکنش داشته باشیم، می‌توانیم آن را به یک شبکه BigchainDB با استفاده از BigchainDB HTTP API ارسال کنیم. به طور خاص، یکی از نقاط نهایی زیر را با تراکنش درون بدنه درخواست HTTP مورد استفاده قرار می‌دهد:

POST /api/v1/transactions

POST /api/v1/transactions?mode=async

POST /api/v1/transactions?mode=sync

POST /api/v1/transactions?mode=commit

بعدا، خواهیم دید که حالات مختلف چه معنایی دارند. همچنین از یک BigchainDB driver می‌تواند برای ارسال تراکنش استفاده شود. درخواست HTTP (شامل تراکنش)را می توان به هر یک از گره‌ها در شبکه BigchainDB یا حتی بیش از یک ارسال کرد. شکل زیر اجزای اصلی در یک شبکه چهار گرهی BigchainDB ۲.۰ و نحوه ارتباط آن‌ها با یکدیگر را نشان می‌دهد.

d9bed8a7db8cdaafd8a7d987 d8afd8a7d8afd987 bigchaindb d985d8b9d985d8a7d8b1db8c d988 d986d8add988d987 d8b9d985d984daa9d8b1d8af d8a2d986 3

جزئیات اتفاقات بعدی می تواند متفاوت باشد. بیایید این جزئیات را رد کنیم و فرض کنیم که درخواست HTTP با موفقیت به سرور وب Gunicorn در داخل یک گره BigchainDB وارد می شود ، زیرا در اینجا باید تمام درخواست های HTTP ورودی وارد شوند. Gunicorn یک رابط استاندارد را در معرض دید قرار می دهد (Web Server Gateway Interface [WSGI]) که برنامه های پایتون را قادر می سازد تا با آن صحبت کنند. (WSGI یک استاندارد پایتون است ؛ مشخصات در استاندارد پایتون 3333 موجود است.) BigchainDB از چارچوب توسعه برنامه کاربردی وب Flask برای ساده سازی کار با WSGI / Gunicorn استفاده می کند.

فلاسک برای مسیریابی درخواست به یک تابع پایتون جهت رسیدگی به این نقطه پایانی استفاده می‌شود. این تابع اعتبار تراکنش را بررسی می‌کند. اگر معتبر نباشد، آنگاه این پایان داستان تراکنش است، کد وضعیت پاسخ HTTP ۴۰۰ (خطای)است، و بدنه پاسخ اطلاعاتی در مورد آنچه که نامعتبر است می‌دهد. اگر تراکنش معتبر باشد، آنگاه به base۶۴ تبدیل می‌شود و به یک رشته JSON جدید با اطلاعات دیگر (مانند mode)تبدیل می‌شود. BigchainDB سپس آن رشته را به نمونه Tendermint محلی در بدنه درخواست HTTP ارسال می‌کند. این درخواست از API پخش Tendermint استفاده می‌کند. (Tendermint API های دیگری دارد)

d9bed8a7db8cdaafd8a7d987 d8afd8a7d8afd987 bigchaindb d985d8b9d985d8a7d8b1db8c d988 d986d8add988d987 d8b9d985d984daa9d8b1d8af d8a2d986 4

حمزه سزاوار

مدیریت سرور پشتیبانی و مشاوره – ثبت دامنه

نوشته های مشابه