یک گام مهم رو به جلو برای عملکرد و مقیاس پذیری
پس از دو ماه توسعه و آزمایش فشرده، ما مفتخریم که جدیدترین آلفای MultiChain را با یک کیف پول درون گره کاملا بازنویسی شده منتشر کنیم. این کیف پول جدید عملکرد و مقیاس پذیری ایجاد، دریافت و ذخیره تراکنش ها در MultiChain را تغییر می دهد.
قبل از اینکه وارد جزئیات شویم، اجازه دهید زمینه ای را ارائه کنم. زمانی که توسعه MultiChain را شروع کردیم، تصمیم به استفاده گرفتیم هسته بیتکوین، گره استاندارد برای شبکه عمومی بیت کوین، به عنوان نقطه شروع. از نظر برنامه نویسی، این بدان معناست که MultiChain یک "چنگال" نرم افزار بیت کوین است. استدلال اولیه ما این بود که بیت کوین به نوعی باارزشترین و آزمایششدهترین اکوسیستم ارزهای دیجیتال بود (و همچنان میباشد).
نکته مثبت این است که این تصمیم به ما کمک کرد در مقایسه با کدگذاری یک گره بلاک چین از ابتدا، به سرعت وارد بازار شویم. علیرغم تفاوتهای فراوان بین بلاکچینهای عمومی و خصوصی، آنها نقاط مشترک فنی زیادی دارند، از جمله پروتکل همتا به همتا، ساختار تراکنش و بلوک، ایجاد و تأیید امضای دیجیتال، قوانین اجماع، مدیریت کلید، و نیاز به یک API گره فورکینگ از Bitcoin Core به ما این امکان را داد تا از بلوغ آن بهره ببریم و بر آنچه MultiChain به بلاک چین اضافه می کند تمرکز کنیم - پیکربندی، مجوز و پشتیبانی از دارایی های بومی. در نتیجه، ما توانستیم اولین آلفا را در ژوئن 2015، تنها 6 ماه پس از شروع توسعه، منتشر کنیم.
با این حال، در کنار این مزایا، ما باید این واقعیت را نیز بپذیریم که برخی از جنبههای بیتکوین Core ساختار ضعیفی دارند. در حالی که آنها در مقیاس های کوچک به خوبی کار می کنند، عملکرد آنها به طور چشمگیری با افزایش استفاده کاهش می یابد. با توجه به اینکه شبکه عمومی بیت کوین هنوز محدود به چند تراکنش در ثانیه است، این موضوع برای اکثر کاربران بیت کوین Core برای مدت طولانی مشکل ساز نخواهد بود. اما با توجه به بلاک چین های خصوصی که صدها یا هزاران تراکنش در ثانیه را هدف قرار می دهند، می دانستیم که دیر یا زود، این تنگناها باید از بین بروند.
کیف پول بیت کوین کور
«کیف پول» درون بیت کوین Core همیشه مهم ترین این نقاط دردناک بود. وظیفه آن ذخیره تراکنش هایی است که مربوط به گره هستند، زیرا شامل یک آدرس بلاکچینی است که متعلق به آن است یا یک "فقط برای تماشا” آدرسی که فعالیت آن را ردیابی می کند. به عنوان مثال، هر تراکنشی که وجوهی را به یا از یک گره ارسال می کند باید در کیف پول آن گره ذخیره شود. و هر بار که یک گره تراکنش ایجاد می کند، باید یک یا چند «خروجی خرج نشده» از تراکنش های قبلی کیف پول را که تراکنش جدید صرف خواهد کرد، جستجو کند.
پس مشکل کیف پولی که از بیت کوین Core به ارث برده ایم چیست؟ در واقع سه چیز:
- تمام تراکنش های کیف پول در حافظه نگهداری می شوند. این باعث کندی زمان راه اندازی و افزایش سریع استفاده از حافظه می شود.
- بسیاری از عملیاتها یک «اسکن کامل» ناکارآمد از هر تراکنش در کیف پول، چه قدیمی و چه جدید، انجام میدهند.
- هر تراکنش در کیف پول به طور کامل ذخیره میشود، از جمله هر «فراداده» دلخواه که از منظر گره معنایی ندارد و قبلاً در بلاک چین روی دیسک ذخیره شده است. این خیلی ضایع است.
نتیجه این است که با حدود 20,000 تراکنش ذخیره شده، کیف پول Bitcoin Core به طور قابل توجهی کند می شود. بعد از 200,000 یا بیشتر، عملاً متوقف می شود. بدتر از آن، از آنجایی که یک بلاک چین MultiChain تا 8 مگابایت ابرداده در هر تراکنش را امکان پذیر می کند (در مقایسه با 80 بایت بیت کوین)، نیازهای حافظه کیف پول حتی با تعداد کمی تراکنش به سرعت بالا می رود.
مهم است که روشن شود که این کاستی ها فقط برای بیت کوین Core اعمال می شود کیف پولبه جای ظرفیت پردازش تراکنش عمومی آن. به عبارت دیگر، میتواند میلیونها (یا حتی میلیاردها) تراکنش را که به آدرسهای خودش مربوط نمیشود، به راحتی پردازش و ذخیره کند، زیرا این تراکنشها به جای حافظه روی دیسک نگهداری میشوند. به عنوان مثال، بسیاری از صرافیها و کیفپولهای بیتکوین محبوب از بیتکوین Core استفاده میکنند، اما تراکنشهای خود را در خارج از گره ذخیره میکنند.
کیف پول جدید MultiChain
ما میتوانستیم همین درخواست را از کاربران MultiChain داشته باشیم تا تراکنشهای خود را خارج از گره ذخیره کنند. با این حال، این راه حل مناسبی به نظر نمی رسد، زیرا راه اندازی و نگهداری را برای هر یک از شرکت کنندگان زنجیره بسیار پیچیده می کند. بنابراین، در عوض، گلوله را گاز گرفتیم و کیف پول را از پایه بازنویسی کردیم.
کیف پول جدید چه تفاوتی دارد؟ اگر تجربه ای با پایگاه داده دارید، پاسخ ها ممکن است واضح باشد:
- به جای نگهداری تراکنش های کیف پول در حافظه، آنها در قالب مناسب روی دیسک ذخیره می شوند و در صورت لزوم تراکنش های مورد علاقه بازیابی می شوند.
- بهجای انجام اسکن کامل کیف پول، تراکنشها به روشهای مختلف «نمایهگذاری» میشوند تا امکان یافتن سریع تراکنشهایی که معیارهای خاصی را دارند فراهم کنند.
- هر بخش از ابرداده تراکنش که بزرگتر از 256 بایت باشد در کیف پول ذخیره نمی شود. در عوض، کیف پول حاوی یک اشاره گر به موقعیت آن ابرداده در خود زنجیره بلوکی است.
به عبارت دیگر، ما کیف پول درون گره را بازسازی کرده ایم تا به درستی مبتنی بر پایگاه داده (با استفاده از LevelDB)، به جای تکیه بر یک ساختار ساده در حافظه که نمی توان به طور موثر جستجو کرد. جای تعجب نیست که تفاوت (همانطور که در Core i3.4 اینتل 7 گیگاهرتزی اندازه گیری شد) نسبتاً چشمگیر است:
نمودارها نشان میدهند که وقتی کیف پول قدیمی شامل 250,000 تراکنش باشد، نرخ ارسال آن به 3 تن در ثانیه کاهش مییابد و 600 مگابایت به مصرف حافظه گره اضافه میکند. در مقابل، کیف پول جدید بیش از 100 تن در ثانیه دوام می آورد و تنها 90 مگابایت اضافه می کند. ما آزمایش کیف پول قدیمی را در این مرحله متوقف کردیم، اما حتی با وجود 6 تا 8 میلیون تراکنش ذخیره شده، کیف پول جدید به ارسال بیش از 100 tx/sec ادامه میدهد و در حدود 250 مگابایت رم استفاده شده (به دلیل حافظه پنهان پایگاه داده) افزایش مییابد.
این آزمایشها در شرایط واقعی، با آدرسها و داراییهای متعدد (و بنابراین خروجیهای تراکنش خرج نشده زیادی) در کیف پول گره انجام شد. در یک سناریوی ایده آل (یک آدرس، یک دارایی، چند UTXO)، نرخ ارسال پایدار بیش از 400 تن در ثانیه بود. در هر صورت، به عنوان بخشی از این بازنویسی، ما همچنین تمام عملکرد کیف پول را در پشت یک رابط داخلی تمیز به درستی انتزاع کرده ایم. این امر پشتیبانی از سایر موتورهای پایگاه داده را در آینده برای استحکام و سرعت بیشتر آسان می کند.
برای تکرار، همه این اعداد به نرخی که یک گره میتواند تراکنشها را در کیف پول محلی خود ایجاد، ارسال و ذخیره کند، به جای پردازش تراکنشهای ایجاد شده توسط دیگران، اشاره دارد. برای توان عملیاتی عمومی شبکه، MultiChain در حال حاضر می تواند 200 تا 800 تن در ثانیه را پردازش کند، بسته به سخت افزاری که روی آن اجرا می شود. (به هر نرم افزار بلاک چینی که اعدادی مانند 100,000 تن در ثانیه روی سخت افزار معمولی را امیدوار می کند، بدبین باشید، زیرا گلوگاه تأیید امضای دیجیتال است که انجام آن به زمان واقعی نیاز دارد. اگر گره ها امضای تراکنش های فردی را تأیید نکنند، یک بلاک چین احتمالاً نمی تواند در اعتماد استفاده شود. مرزها، که آن را بهتر از یک پایگاه داده توزیع شده معمولی نمی کند.)
برای پایان، میخواهم به ویژگی اصلی بعدی که به MultiChain میآید اشاره کنم، که نیاز به بازنویسی این کیف پول داشت. این ویژگی که جریان نام دارد، یک انتزاع و API سطح بالا برای ذخیره سازی داده های عمومی در یک بلاک چین فراهم می کند. میتوانید جریان را بهعنوان یک پایگاهداده سری زمانی یا ارزش کلیدی، با مزایای اضافهشده مرتبط با بلاک چین از جمله تمرکززدایی، امضای دیجیتال، مهر زمانی و تغییرناپذیری در نظر بگیرید. ما بسیاری از موارد استفاده از بلاک چین را میشناسیم که میتوانند از این قابلیت استفاده کنند، و در حال حاضر سخت در حال ساخت آن هستیم. این فضا را تماشا کنید
لطفا هر نظری را ارسال کنید در LinkedIn.
ضمیمه فنی
با شروع در MultiChain alpha 22، میتوانید تأیید کنید که کدام نسخه کیف پول در حال حاضر با بررسی walletdbversion
زمینه از getinfo
or getwalletinfo
تماس های API یک ارزش از 1
یعنی کیف پول اصلی بیت کوین Core و 2
یعنی کیف پول MultiChain جدید.
اگر نسخه جدید MultiChain را روی یک زنجیره موجود اجرا کنید، بلافاصله به کیف پول جدید تغییر نخواهد کرد. می توانید کیف پول را با توقف گره و سپس اجرای مجدد ارتقا دهید multichaind
با پارامترها -walletdbversion=2 –rescan
. شما می توانید به طور مشابه با استفاده از آن پایین بیاورید –walletdbversion=1 –rescan
.
به طور پیش فرض، هنگامی که یک گره را در یک زنجیره جدید راه اندازی می کنید، به طور خودکار از کیف پول جدید استفاده می کند. شما می توانید این را با اجرا تغییر دهید multichaind
برای اولین بار با پارامتر –walletdbversion=1
.
با کیف پول جدید، همه API های چند زنجیره ای به استثنای APIهای قدیمی پرس و جوی تراکنش، دقیقاً به همان روش قبلی کار کنید getreceivedbyaddress
, listreceivedbyaddress
و listtransactions
(استفاده کنید listwallettransactions
or listaddresstransactions
بجای). علاوه بر این، کیف پول جدید از فراخوانهای API و پارامترهای مربوط به مکانیسم «حسابهای» بیتکوین Core که بهزودی اجرا نشده و به زودی منسوخ میشوند، پشتیبانی نمیکند، که هرگز بهدرستی توسط MultiChain پشتیبانی نشد. این تماس ها با یک پیام خطا به طور ایمن غیرفعال می شوند.
منبع: https://www.multicain.com/blog/2016/07/announcing-the-new-multichain-wallet/
- 000
- 100
- هدف
- معرفی
- API
- رابط های برنامه کاربردی
- دور و بر
- دارایی
- دارایی
- بیت
- بیت کوین
- هسته بیت کوین
- بلاکچین
- بنا
- ظرفیت
- موارد
- تغییر دادن
- برنامه نویسی
- آینده
- نظرات
- مشترک
- اجماع
- ادامه
- ایجاد
- کریپتو کارنسی (رمز ارزها )
- داده ها
- ذخیره سازی داده ها
- پایگاه داده
- پایگاه های داده
- عدم تمرکز
- تقاضا
- پروژه
- دیجیتال
- مبادلات
- ویژگی
- پایان
- نام خانوادگی
- بار اول
- تمرکز
- قالب
- تکمیل کنید
- کامل
- بودجه
- آینده
- سوالات عمومی
- سخت افزار
- HTTPS
- صدها نفر
- از جمله
- اینتل
- علاقه
- IT
- کار
- نگهداری
- کلید
- بزرگ
- آخرین
- رهبری
- قدرت نفوذ
- لینک
- محلی
- طولانی
- عمده
- ساخت
- مدیریت
- بازار
- میلیون
- ماه
- شبکه
- گره
- تعداد
- عملیات
- دیگر
- درد
- کارایی
- چشم انداز
- محبوب
- خصوصی
- برنامه نويسي
- عمومی
- مورد نیاز
- قوانین
- دویدن
- در حال اجرا
- مقیاس پذیری
- جستجو
- اشتراک گذاری
- کوچک
- So
- نرم افزار
- فضا
- سرعت
- خرج کردن
- شروع
- شروع
- ذخیره سازی
- opbevare
- پشتیبانی
- پشتیبانی
- گزینه
- فنی
- تست
- تست
- زمان
- پیگردی
- معامله
- معاملات
- اعتماد
- us
- کاربران
- ارزش
- ارزش
- تایید
- کیف پول
- کیف پول
- تماشا کردن
- در داخل
- کلمات
- مهاجرت کاری