تپروت، بهروزرسانی اخیر بیتکوین، حریم خصوصی و کارایی بیتکوین را افزایش داده و با کاهش هزینهی تراکنشها، عملکرد کلی شبکه را بهبود میبخشد. مقالهی پیشرو قصد پرداختن به ابعاد تکنیکال تپروت را ندارد. هدف از نوشتن این مقاله این است که تپروت را با زبانی ساده و روان توصیف کنیم و علت اهمیت تپروت را شرح دهیم.
آپدیت تپروت در تاریخ ببیست و سوم آبان ۱۴۰۰ به روی شبکهی بیتکوین انجام شد. ایدهی اولیهی تپروت در سال ۲۰۱۸ توسط گرگ مکسول|Greg Maxwell – یکی از توسعهدهندهگان هستهی بیتکوین Bitcoin Core – به عنوان طرح بهبود بیتکوین یا BIP طرح شد و پیتر وویل| Peter Wuille در سال ۲۰۲۰ این ایده را دنبال کرد و در نهایت تپروت با هستهی بیتکوین ادغام شد. مهمترین دغدغهی رمزارزها را میتوان سرعت و تعداد تراکنش در ثانیه و میزان حفظ حریم خصوصی دانست. بیتکوین هم از این قاعده مستثنی نیست و از روزهای آغازین شکلگیری خود، تغییراتی تدریجی به روی تمام موارد گفته شده را تجربه کرده است. حالا تپروت پا را از این قاعدهی «تدریجی بودن تغییرات» فراتر گذاشته و به نوعی باعث پوست اندازی بیتکوین شده است. «حریم خصوصی کاربران» و «تعداد تراکنش در ثانیه» افزایش و «هزینهی تراکنشها» کاهش یافته و این مسئله در مجموع کارایی کلی شبکه را افزایش داده است. مقالهی پیشرو قصد پرداختن به ابعاد تکنیکال تپروت را ندارد. هدف از نوشتن این مقاله این است که تپروت را با زبانی ساده و روان توصیف کنیم و علت اهمیت تپروت را شرح دهیم.
اگر بخواهیم خیلی خلاصه به این سوال پاسخ دهیم، میشود گفت که سافتفورک تپروت، مقیاسپذیری، حریم شخصی و عملکرد قراردادهای هوشمند مربوط به بیتکوین را بهبود میبخشد. برای انجام این کار، تپروت آدرس تایپ جدیدی را ایجاد میکند که در آن، تمام تراکنشهای بیتکوین به یک شکل واحد دیده میشوند. یعنی دیگر هیچ تفاوتی میان یک پرداخت ساده یا یک تراکنش پیچیدهی چند امضائی یا یک استفادهی ساده از شبکه لایتنینگ نیست. آدرسهای تپروت نسبت به آدرسهای پیشین، هزینهی تراکنش کمتری را به کاربر تحمیل میکنند. با «کاهش هزینهی تراکنشها» و «تبدیل تمام تراکنشها به یک تراکنش سادهی تک امضائی»، تپروت به بیتکوین اجازهی انجام عملیاتهای پیچیدهتر و بزرگتر را میدهد. عملیاتهایی که تا پیش از این کاملا غیر ممکن بودند.
البته اگر رویکرد شما نسبت به بیتکوین صرفا یک رویکرد هولدینگ باشد و به ندرت بیتکوینهای خود را بین کیف پولهای مختلف جابجا میکنید، ممکن است گمان کنید که آپدیت تپروت خیلی به روی زندگی شما تاثیر متفاوتی نمیگذارد. اما اصلا این چنین نیست. تپروت درواقع زمینهای برای ایجاد توسعههایی بزرگ و قابل توجه را فراهم میکند. توسعههایی که به احتمال زیاد منجر به خلق سافتفورکهای بیشتری برای شبکهی بیتکوین در آینده میشود.
برای مثال، تپروت به شبکهی لایتنینگ این توانایی را میدهد که بتواند از تمام پتانسیل خود برای خلق تکنولوژیای با مقیاسپذیری مناسب بیتکوین استفاده کند. تا پیش از تپروت، پروتکل لایهی دوم در بلاکچین بیتکوین دیده میشد و عملا تعویضپذیری کوینها را کاهش میداد و برای همهی ما واضح است که تعویضپذیری عنصری حیاتی برای عملیکردن نقش پول به مثابهی یک واسطهی مبادلاتی است. نبود ویژگی تعویضپذیری میتواند به معنی این باشد که کوینهای یکسان ارزش یکسانی ندارند و درنتیجه با انجام یک تراکنش، به خروجی کاملا متفاوتی از ورودی تراکنش خود میرسیم. درنتیجه دریافتکنندهها که خروجی را به میزان متفاوتی از مقدار ورودی دریافت میکنند، با نوعی از تبعیض مواجه میشوند و کم کم دیگر کاربرها برای استفاده از بیتکوین خود رغبتی نشان نمیدهند.
علاوه بر همهی اینها، تپروت به شبکهی لایتنینگ و دیگر کیف پولها و قراردادهای پیچیده امکان افزایش کارایی و کاهش هزینههای تراکنش خود را میدهد و کاربران آنها میتوانند به سادگی از بیتکوین به عنوان یک واسطهی مبادلاتی استفاده کنند. به کمک امضای اشنور، پیچیدهترین تراکنشها در کیف پولهای تحت پوشش تپروت، هزینهی تراکنشی یکسان با سادهترین تراکنشها دارند. این کاهش هزینهها و بیشترشدن انعطافپذیری و ظرفیت اجرای قراردادهای هوشمند، منجر به شکلگیری تنظیماتی میشود که تا پیش از این نمیتوانستیم در شبکهی بیتکوین آنها را اجرا کنیم.
برای فهمیدن علت اجرای بهروزرسانی تپروت در شبکهی بیتکوین، ابتدا به این نیاز داریم که بفهمیم به طور کلی در شبکهی بیتکوین تراکنشها به چه شکلی عمل میکنند و تا به امروز چه تغییراتی در آنها داده شده است و به چه شکلی به این شیوهی جدید-تپروت-رسیدهایم؟
بهطورکلی تراکنشهای مربوط به بیتکوین وابسته به ورودیها و خروجیهاست. میزان ورودی و خروجی همواره یکسان است؛ چرا که در این میان هیچ کوینی از بین نمیرود. در ابتدا مثلاً اگر شما میخواستید برای من پنج بیتکوین بفرستید، در کیف پول خود باید دقیقاً پنج بیتکوین را انتخاب میکردید. در غیر این صورت یا تراکنش بهصورت کامل انجام نمیشد و موجودی شما کمتر از یک مقداری بود، یا اینکه موجودی شما بیشتر بود و نمیتوانستید «دقیقاً» پنج سکه انتخاب کنید.
بعدتر مفهوم « پول خرد|Change» هم به کارکرد بیتکوین وارد شد و از آن به بعد میتوانستید پول خود را خرد کنید. درنتیجه مثلا اگر شما بخواهید برای من پنج بیتکوین بفرستید و در کیف پول خود ۷.۳۸ بیتکوین را انتخاب کنید؛ ۲.۳۸ بیتکوین اضافی به عنوان بقیهی پول به حسابتان بازگردانده میشود. یعنی ورودی شما ۷.۳۸ بیتکوین و خروجی شما ۵+۲.۳۸ بیتکوین است. البته طبیعتا یک مقدار کمتر از ۲.۳۸ بیتکوین به حساب شما بازگردانده میشود؛ چرا که میزان کمی از آن به عنوان هزینهی تراکنش کسر میشود. پس هرجا دربارهی هزینهکردن صحبت میکنیم، درواقع داریم به یک «خروجی» اشاره میکنیم. من اکنون آن پنج بیتکوینی که شما به من دادهاید را در اختیار دارم و به هرشکلی که مایل باشم میتوانم از آن استفاده کنم. مثلا میتوانم به نفر اول سه بیتکوین و به نفر دوم دو بیتکوین بدهم. یا میتوانم پنج بیتکوین به نفر سوم بدهم. یا اصلا میتوانم تمام این پنج بیتکوین را نزد خود نگهداری کنم و تا هرزمان که دلم میخواهد آنها را هولد کنم. به جز حالت آخر، یعنی هولد کردن، در بقیهی حالتها من دارم یک «تراکنش» انجام میدهم. در هر تراکنشی که بخواهم این پنج بیتکوین را شرکت دهم، ورودی تراکنش، پنج بیتکوین و خروجی آن، مقداری است که میخواهم برای شخص مورد نظر ارسال کنم. مثلا اگر بخواهم برای یکی سه بیتکوین بفرستم، باید تمام پنج بیتکوین را در ورودی قرار دهم و بعد از انجام شدن تراکنش، بیتکوینهای من تبدیل به ۳+۲ بیتکوین میشوند. سپس سه بیتکوین را به سمت طرف مقابلم میفرستم و دو بیتکوین باقیمانده را به حساب خودم باز میگردانم.
هدف از طرح این مثالها این است که درکی از ورودی و خروجی بیتکوین داشته باشیم. پس وقتی گفته میشود که داریم هزینه میکنیم، درواقع داریم خروجی یک تراکنش را به سمت شخص دیگری منتقل میکنیم. برای انجام دادن این انتقال، باید خروجی اولیه را در یک تراکنش جدید قرار دهیم. این تراکنش جدید منجر به خلق یک خروجی ثانویه میشود و گیرنده میتواند این خروجی را دریافت کند. مفهوم کیف پول برای همین به وجود آمده که پیچیدگی این مدل تراکنش با سادگی بیشتری قابل فهم شود. این مدل به مدل UTXO معروف است.
از سال ۲۰۰۸ تا به امروز، تاریخچهی پرداخت در شبکهی بیتکوین دستخوش تغییرات زیادی شده است. بهطور کلی میتوان گفت که مدل UTXO- که در بالاتر توضیح داده شد- به نوشتهها و قراردادهایی وابسته است که با زبان «برنامهنویسی» اسکریپت بیتکوین نوشته شدهاند. کلمهی «برنامهنویسی» را برای این در گیومه گذاشتهام که به این مسئله اشاره کنم که زبان اسکریپت نویسی بیتکوین، بیش از آنکه بخواهد بهعنوان زبانی برای انجام دستورالعملهای محاسباتی باشد، بیشتر میتواند بهعنوان «زبانی برای تأیید کردن » شناخته شود. بنابراین با اسکریپت بیتکوین میتوانیم راهی برای مشخص کردن شرایط هزینه کردن یک UTXO مشخص کنیم.
هنگامیکه اسکریپت بیتکوین و بهبودهایی که برای آن انجام شده را بررسی میکنیم، به سه محدودکنندهی عمده برمیخوریم: حریم شخصی ، کارایی فضا و کارایی محاسباتی . معمولاً بهبود یکی از این سه منجر به بهبود دو مورد دیگر میشود. برای مثال، تلاش برای کاهش افشای اطلاعات مربوط به یک تراکنش( همان بهبود حریم شخصی) مستلزم کمتر کردن حجم دادهها است. کمتر شدن حجم دادهها نیز به معنی این است که فضای کمتری برای انجام تراکنشها نیاز داریم؛ و وقتی فضای انجام تراکنشها کمتر شود، محاسبات مرتبط نیز با فشردگی کمتری انجام میشوند و کارایی محاسبات بالاتر میرود.
جامعهی بیتکوین تا به امروز تمام تغییرات و توسعههایی که به هدف بهبود عملکرد اسکریپت بیتکوین یا آدرستایپهای جدید انجام شده را به صورت تدریجی معرفی کرده است. تمام این تغییرات در گذر زمان توانستهاند که حریم شخصی تراکنشها را بیشتر کرده و فرآیند انتقال را با سبکی بیشتری انجام دهند و درنتیجه سرعت فرآیند تایید تراکنشها را بیشتر کنند. بنابراین کاربران با سادگی بیشتری میتوانند اسکریپتهایی خلق کنند که انعطافپذیری داراییهایشان و همچنین امنیت و کارایی انتقالهایشان را افزایش دهد و آنها را از گزند حاکمیتهای مالی دور سازد. آدرسهای چند امضائی مثال مناسبی برای موضوعی است که در بالا توضیح دادیم. تا قبل از این باید آدرسهای چندامضائی بیتکوین را به صورت دستی انجام میدادیم؛ اما اکنون به سادگی میتوانیم این کار را در تلفن همراه یا لپتاپمان انجام دهیم. دربارهی لایتنینگ هم وضعیت به همین شکل است. لایتنینگ راهکار مقیاسپذیری لایهی دوم بیتکوین برای پرداختهای متداول و کوچک است. این لایهی دوم اکنون بهسادگی در اپلیکیشنهای موبایلی وجود دارد و بهراحتی میتوان هر مقدار از بیتکوین را از هرجایی به هر جای دیگر جابجا کرد.
یکی از مهمترین بهروز رسانیهای بیتکوین در سال ۲۰۱۷ انجام شد. سگویت یا Segregated Witness(Segwit) برای بهبود مقیاسپذیری بیتکوین ارائهشد. سگویت دو آدرس تایپ تاز معرفی کرد و در ادامه توانست لانچ شبکهی لایتنینگ را فعال کند. تپروت به کمک سگویت و شبکهی لاتنینگ با اجماع ۹۰درصدی ماینرها شکل گرفت. بنابراین، آخرین و مهمترین بهروزرسانی پروتکل بیتکوین- تپروت- انقلابی طبیعی برای اسکریپتها و تراکنشهای مربوط به بیتکوین است. تپروت به کمک امضاهای اشنور، MAST و TapeScriptها ممکن شده و به دنبال افزایش انعطافپذیری و حریم شخصی است؛ بدون آنکه ذرهای از امنیت شبکه کاهش یابد.
امضای اشنور مانند سابق از کلیدهای شخصی-عمومی | Private-Public Key استفاده میکند. تنها تفاوت این است که الگوریتم امضاء و تایید کردن بسیار سادهتر از گذشته انجام میشود. تپروت از امضاهای اشنور برای این استفاده میکند که Tapescript ها را به تراکنشهای P2PK اضافه کند. معنی این کار این است که به کمک تپروت، به هیچوجه نمیتوان فهمید که یک تراکنش به شکل P2PK ساده است یا به شکل چندامضائی یا حتی یک قرارداد هوشمند است. همهی آنّها به یک شکل دیده میشوند. در مجموع میتوان گفت امضای اشنور به سادگی هرچه تمامتر میتواند دیتاها را منتقل کند.
دراوایل پیدایش بیتکوین، فرستندهی یک تراکنش باید به سیاستگذاریهای مربوط به کیف پول مقصد توجه میکرد. این معضل علاوه بر اینکه عملاً انجام یک تراکنش را نشدنی میکرد، باعث میشد که حریم شخصی تا حد زیادی بهناچار نقض شود. برای انجام یک تراکنش، مشخصات مربوط به کیف پول مقصد بهناچار باید به نمایش گذاشته میشد و درنتیجه حریم خصوصی به پایینترین حد خود میرسید.
با ظهور Pay to Script Hash (P2SH) شیوهی انتقال بیتکوین بهطور کلی تغییر کرد. در شیوهی P2SH بهجای ارسال تراکنشها به خود قرارداد، به هش آن قرارداد فرستاده میشود. با این تفاسیر دیگر جزئیات مربوط به یک قراداد تا زمانی که خروجی یک تراکنش تبدیل به ورودی تراکنش دیگر نشود قابل مشاهده نیست. با P2SH دیگر تمام خروجیها به یک شکل ثابت درمیآیند؛ یعنی صرفا به شکل یک هش نمایش داده میشوند.
هش درواقع خروجی یک تابع Hashing است. یک متغیر با هر نوع طولی وقتی به تابع هشینگ وارد میشود، به یک خروجی رمزنگاری شده با طول ثابت تبدیل میشود. این توسعهی علاوه بر آنکه توانست حریم شخصی مربوط به تمام تراکنشهای بیتکوین را با شبیه کردن تمام خروجیها (تبدیل تمام خروجیها به یک هش) حفظ کند؛ توانست اندازهی متغیرهای خروجی را به نحو چشمگیری کاهش دهد و کارایی شبکه را بهطورکلی افزایش دهد.
بااینحال، هنگام هزینه کردن تمام مشخصات مربوط به قرارداد عیان میشود و هرکسی میتوانست تمام اطلاعات مربوط به تمام قراردادها را تماشا کند. دو جنبهی عمدهی منفی این اتفاق حریم شخصی و کارایی است. هر ناظری در این شیوه میتواند شرایط مختلف هزینه کردن را تماشا کند و درنتیجه اطلاعات بیشماری دربارهی هزینه کننده به دست آورد. علاوه بر از بین رفتن اطلاعات مربوط به حریم خصوصی، تمام شبکهی بلاکچین سرشار از کوه عظیمی از اطلاعات بهدردنخور میشود. تنها فایدهی این اطلاعات این است که بتوان شرایط هزینهکردن متناسب با هزینهکننده را تایید کرد. بهروزرسانی تپروت، این منطق را با استفاده از Merklelized Abstract Syntax Trees(MAST) بهبود میبخشد. ساختار MAST اجازه میدهد که بیتکوین برای رسیدن به هر هدف مشخص، صرفاً آن دسته از اطلاعاتی که لازمهی آن قرارداد است را منتشر کند و دیگر اطلاعات دست نخورده بمانند.
هزینههای پیچیده در تپروت به دو شکل انجام میشوند:
1) قرارداد توافقی با شرایط تأیید دوجانبه
2) قرارداد بازگشتی در شرایط خاص.
برای مثال، اگر یک آدرس چند امضایی در اختیار چندنفر باشد و بخواهند بهصورت کاملاً برنامهریزیشدهای از موجودی خود استفاده کنند؛ میتوانند شرایط هزینه کردن را به نحوی تنظیم کنند که همگی در آنها موافقت میکنند(حالت ۱) و یا اینکه به هیچ نوع از توافق نمیرسند و باید از حالت بازگشتی(حالت دو) استفاده کنند.
در شرایطی که همگی به یک توافق میرسند، تپروت میتواند فرآیند را تبدیل به یک آدرس تک امضائی کند. درنتیجه، شبکهی بیتکوین اصلاً نمیتواند بفهمد که قراردادی چندامضائی وجود داشته که تبدیل به یک قرارداد تکامضائی شده است. به این ترتیب حریم شخصی تمام کاربرانی که از یک آدرس چند امضائی استفاده میکنند برقرار میشود. بااینحال، اگر در حالت چند امضائی، حالت توافق دستیافتنی نبود و یکی از اعضا مشغول استفاده از شیوههای بازگشتی بود، تپروت صرفاً تراکنشهای مربوط به آن حالت بازگشتی را نمایان میسازد و به دیگر اطلاعات کاری ندارد.
بنابراین بهطور خلاصه میتوان گفت که با معرفی P2SH، حریم شخصی گیرنده با یکسانسازی دادههای خروجیشان( تبدیلشان به یک Hash) افزایش یافت و حال با معرفی تپروت، حریم شخصی مربوط به فرستنده با محدود کردن اطلاعات ارسالی به شبکه بالاتر میرود. حتی اگر شما از حالت کیف پول پیچیدهای مثل چند امضائی یا لایتنینگ استفاده نمیکنید، با افزایش حریم خصوصی مربوط به آن کاربرها، حریم خصوصی شما نیز افزایش خواهد یافت؛ چراکه نظارت و جاسوسی بر زنجیره به این شیوهی جدید سختتر میشود و تنظیمات مربوط به ناشناسماندن در شبکهی بیتکوین افزایش مییابد.
با کاهش هزینهی تراکنشها، افزایش کارایی و حریم خصوصی بیشتر، تپروت میتواند منجر به ایجاد بستری برای عملکرد مؤثرتر شبکهی بیتکوین شود. گرهها بهروزرسانی میشوند و مردم شروع به استفادهی دائمی از آدرسها تپروت میکنند. هرچه این روال یادشده متداولتر شود، ناظران شبکهی بلاکچین با سختی بیشتری میتوانند میان فرستندهها و گیرندهها تمایزی قائل شوند. همچنین با UTXOها نیز به همین شیوه برخورد میشود. گستردهتر شدن شبکهی بیتکوین نیز میتواند تبدیل به شبکهی مستحکم برای استقرار عملکردهای پیچیدهی آتی به روی خود شود.
پروتکلهای لایهی دوم و زنجیرههای کناره نیز میتوانند به اهرم کردن و افزایش قراردادهای هوشمند پیچیده کمک کنند. درنتیجه با گذر زمان میتوان انتظار داشت قراردادهای زیادی به روی لایهی پایهای سوار شوند. کاربر نهایی (end user) نیازی به این مسئله ندارد که بخواهد اینها را خودش بسازد؛ بلکه بهسادگی میتواند از پیشنهاداتی که در اکوسیستم گستردهی بیتکوین است و دیگر اعضا آن را تضمین میکنند بهره ببرد. البته برخی از کاربردهای امور مالی غیرمتمرکز و موارد استفادهی آنها همین الان نیز به روی شبکهی بیتکوین قابل دسترس است؛ اما خب در هر صورت، آمدن تپروت میتواند به موارد استفادهی پیچیدهتر و کاربردیتری بیانجامد که امنیت بالایی در شبکهی بیتکوین دارند. (چیزی که هیچکدام از رمزارزها نمیتوانند با آن رقابت کنند.)
ازآنجاییکه بیتکوین عملاً یک پول است؛ درنتیجه، کاربردهای بلندمدت امور مالی غیرمتمرکز میتواند بهصورت طبیعی به روی آن ساخته شود. شبکههای اخیر مانند شبکهی اتریوم، خصوصیات پولی و امنیت و استحکام بیتکوین را ندارند. (یکی از دلایلی که اپلیکیشنهایی که به روی آنها ساخته میشود در بلندمدت ارزش خود را از دست میدهد همین است.) با ساخت صبورانهی پایهای برای توزیع کردن و داشتن یک شبکهی عاری از حاکمیت مالی و ضد معاوضه و ضد سانسور، بیتکوین میتواند از کاربردهای بلندمدت و رشد چندلایهای خود لذت ببرد.
بهروزرسانی تپروت که شامل اشنور، MAST و Tapescript است؛ به روی پایههایی ساخته میشود که امنیت بالایی دارند و از حریم شخصی حفاظت بیشتری میکنند و توانایی بالقوهی بیشتری برای ساخت اپلیکیشنهای پیچیده به روی خود دارند. انعطافپذیری بینظیر کارکردهای قراردادهای هوشمند بیتکوین میتواند ما را به عصر جدیدی از احتمالات وارد کند که تا پیشازاین حتی نمیتوانستیم به آنها فکر کنیم. این شروع مسیری است برای کارکردهای ویژهتر و خاصتر بهترین سیستم پولیای که بشریت تاکنون به آن دست یافته است.
در بلندمدت، بهروزرسانیهایی مثل تپروت و لایتنینگ میتوانند منجر به ارائهی آلتکوینهایی زائد و غیرضروری شود. اگر عملکرد خاصی میتواند در بیتکوین- محکمترین و امنترین شبکهی جهان- انجام شود، طبیعی است که این اتفاق صورت بگیرد. اما آلتکوینها نوآوریهایی را ایجاد میکنند و به موارد استفادهای میرسند که برای بیتکوین شبیه یک آزمایشگاه است (یعنی تغییرات اولبه روی شبکهی آلتکوینها اعمال شود و پس از بررسی اتفاقات پیشآمده میتوانیم تصمیم بگیریم که این تغییرات را به روی شبکهی بیتکوین اعمال کنیم یا نه!). هر زمان که موارد استفادهی واقعی پیدا شد، آنها را به بیتکوین انتقال میدهیم. آن موارد استفاده هم میتوانند اطمینان داشته باشند که برای مدتزمانی طولانی از آنها استفاده میشود و به صورت مستمر توسعه مییابند.