Libbitcoin و SX چیست و چرا اهمیت دارد
امیر تاکی لیبیت کوین یکی از پیشرفته ترین گزینه های جایگزین پروتکل بیت کوین موجود است. اگرچه اکنون ده ها پیاده سازی جایگزین در بازار وجود دارد ، libbitcoin یکی از معدود مواردی است که استاندارد کامل بیت کوین را مجدداً پیاده سازی می کند و به کاربران اجازه می دهد تا کیف پول قطعی, یک رابط امضای پیام منحنی بیضوی و البته a گره بیت کوین کاملاً کاربردی. حتی معاملات چند علامت ، که بسیاری از کیف پول های معروف از جمله blockchain.info و کیف پول بیت کوین برای آندروید هنوز از آنها پشتیبانی نمی کنند ، libbitcoin به خوبی کار می کند. Libbitcoin همچنین از نظر مدولار بودن بی نظیر است. بسته به خودی خود یک کتابخانه نرم افزاری است که شامل مجموعه ای از اجزا each است که هر یک از آنها را می توان به صورت برنامه ای جداگانه نامید و از این کار صرفاً جهت انجام چند معامله یا پرس و جو ساده برای راه اندازی یک دایمون نرم افزاری کاملاً یکپارچه جلوگیری می کند. اگر می خواهید مشتری کاملی به صورت محلی اجرا شود ، می توانید از libbitcoin برای این کار استفاده کنید ، اما به همین راحتی فقط می توانید از libbitcoin برای مدیریت معاملات و شبکه استفاده کنید و برای ارتباط داده های تراکنش به گره های دیگر اعتماد کنید. هر آنچه را که نیاز دارید ، استفاده می کنید و هر آنچه را که نیازی به آن ندارید ، به راحتی زحمت نمی کشید.
امیر تااکی به عنوان اولین کاربرد عملی عمده libbitcoin ، اخیراً منتشر شده است sx, مجموعه ای از ابزارهای خط فرمان برای کار با کلیدهای Bitcoin و تراکنش ها. هدف اصلی ساده است: به کاربران بیت کوین که تا حدودی مهارت فنی دارند ، اما برنامه نویسان باتجربه ای نیستند ، اجازه دهید با Bitcoin ارتباط برقرار کنند نه فقط به عنوان یک رابط که در آن مقدار و آدرس مقصد تایپ می کنند و بیت کوین همه کارها را برای آنها انجام می دهد ، بلکه مستقیماً کار می کنند با بلوک های اساسی هر ابزار sx از فلسفه یونیکس پیروی می کند: این یک کار را انجام می دهد و آن را به خوبی انجام می دهد. genaddr
یک دانه کیف پول Electrum یا کلید عمومی اصلی و یک فهرست را می گیرد و یک آدرس را برمی گرداند.
mktx
معاملات بدون امضا ایجاد می کند ، و
ورود به سیستم
ورودی های معامله را امضا می کند.
تاریخ
لیستی از معاملات مصرف نشده مرتبط با آدرس Bitcoin را برمی گرداند که می تواند به عنوان ورودی استفاده شود – و غیره.
برای ساخت معاملات بیت کوین یک مرحله به این ابزارها می توان از طریق خط فرمان دسترسی پیدا کرد یا می توان آنها را به صورت برنامه ریزی فراخوانی کرد (به عنوان مثال با os.popen (دستور). read ()
در پایتون) برای ایجاد نرم افزار Bitcoin مانند بسته های تجاری و کیف پول. تا کنون ، ایجاد کیف پول جدید بیت کوین دشوار بود – لازم است که همه چیز را از ابتدا دوباره پیاده سازی کنید ، یک کیف پول موجود را بگیرید و برای جدا کردن کد برای جدا کردن منطق معامله از منطق کیف پول ، سخت کار کنید تا کد را جدا کنید ، یا به یک گره bitcoind در پس زمینه اجرا می شود. با استفاده از libbitcoin و sx ، ابزارهای کار با معاملات بیت کوین در پایین ترین سطح در حال حاضر وجود دارد – توسعه دهندگان را آزاد می کند تا در مورد مشکلاتی که واقعاً بیشترین کار را دارند کار کنند – مانند بهینه سازی امنیت و تجربه کاربر.
بیش از یک کتابخانه
پس چرا libbitcoin و SX اهمیت دارند؟ همانطور که مشخص شد ، پاسخ فراتر از واقعیت ساده است که آنها راحت هستند. یکی از اصلی ترین مشکلات اکوسیستم بیت کوین این است که اگرچه بیت کوین به طور اسمی غیرمتمرکز است ، اما در حقیقت استخراج کنندگان شبکه ای که شبکه را فعال نگه می دارند همه از همان نرم افزار اصلی بیت کوین استفاده می کنند: بیت کوین. Bitcoind نسخه “بدون سر” (یعنی فقط خط فرمان) مشتری اصلی بیت کوین است که از زمان انتشار نسخه اول توسط Satoshi در سال 2009 توسعه یافته است و به عنوان نرم افزاری عمل می کند که همه استخراج کنندگان و تقریباً همه مشاغل از آن برای برقراری ارتباط با شبکه بیت کوین.
این به دو دلیل ناسالم است. اول ، داشتن یک انحصار به طور بالقوه می تواند به چنگال های بلاکچین بسیار مخل منجر شود. به عنوان مثال ، در مارس سال جاری حذف یک اشکال پایگاه داده که از پردازش بلاک گره های بیت کوین جلوگیری می کند و به طور همزمان بر وضعیت بیش از 5000 معامله تأثیر می گذارد ، باعث شد شبکه بیت کوین به مدت شش ساعت به عنوان گره با اشکال و بدون اشکال به نصف تقسیم شود. در مورد اعتبار یک بلوک اختلاف نظر داشتند و کار بر روی دو بلاکچین جداگانه را شروع کردند. رفع آن: انجمن بیت کوین گرد هم آمد و توافق کرد که گره های نسخه 0.8 را خاموش کند و اشکال پایگاه داده را به مدت دو ماه به پروتکل رسمی اضافه کرد تا اینکه دو ماه بعد به صورت کنترل شده برطرف شد. اگر در عوض پنج پیاده سازی مختلف بیت کوین در استفاده فعال و گسترده وجود داشته باشد ، خرابی هرکدام فقط قسمت کوچکی از شبکه بیت کوین را تحت تأثیر قرار می دهد – و مشتریان کاربران عادی ، که معمولاً فقط تراکنش ها را تأیید می کنند و نه بلوک ، احتمالاً تحت تأثیر قرار نمی گیرند به طور کلی ، در صورت چنگال ، بلاکچین “مشروع” تقریباً همیشه یکی از اکثریت شبکه است.
دلیل دوم سیاسی است. بسیاری از توسعه دهندگان هسته اصلی بیت کوین ، به ویژه توسعه دهنده اصلی Gavin Andresen ، نیز بخشی از بنیاد بیت کوین هستند ، سازمانی که گام های روشنی را برای استفاده از لابی های سیاسی به عنوان یک استراتژی برای محافظت از بیت کوین برداشته است. ترس این است که ، در آینده ، دولت ممکن است سعی کند بیت کوین را بیشتر تنظیم کند و به بنیاد اولتیماتوم بدهد: شما برخی از ویژگی های تخریب حریم خصوصی را در نظر می گیرید (یک مثال متوسط ممکن است “هزینه اعتبار سنجی آدرس” باشد تا مردم را از پوشاندن اطلاعات خود منصرف کند) با ایجاد بسیاری از آدرسهای Bitcoin) در پروتکل ردیابی می کند ، یا اینکه ما مبادلات Bitcoin را ممنوع می کنیم. بنیاد ممکن است به خوبی رعایت کند و دولت ایالات متحده این را می داند. اگر بنیاد قادر به انجام این نوع تغییرات در پروتکل بدون رضایت گسترده بین المللی نبود ، با این حال ، دولت ایالات متحده این گزینه را نخواهد داشت – آنها مجبور خواهند شد که بیت کوین را بطور کامل ممنوع کنند ، به قیمت گسترده حداقل در بین جامعه فن آوری و منبع باز حسن نیت ، یا اجازه دهید و در استراتژی های نظارتی نرم تر تمرکز کنید. به همین دلیل است که مدافعان بیت کوین مانند امیر تااکی ، یورگ پلاتزر و دیگران مدتهاست که از متنوع سازی و بین المللی سازی اکوسیستم بیت کوین حمایت می کنند. و libbitcoin فقط ممکن است کاتالیزوری باشد که در نهایت روند را تنظیم می کند.
چگونه از SX استفاده می کنید?
اگر از لینوکس استفاده می کنید ، نصب sx بسیار ساده است. در خط فرمان ، http://sx.dyne.org/install-sx.sh را انتخاب کنید
به دنبال
sudo bash./install-sx.sh
تنها چیزی است که طول می کشد اگر از Windows یا Mac استفاده می کنید ، اوضاع تا حدودی پیچیده تر است ، البته نه بیشتر از هر بسته نرم افزاری مشابه. کد منبع برای بارگیری در https://github.com/genjix/sx در دسترس است و از آنجا می توانید آن را به صورت دستی نصب کنید.
پس از نصب sx ، در اینجا برخی از کارهایی که می توانید با آن انجام دهید وجود دارد. اول ، آدرس اصلی و دستکاری های کلیدی.
یک کلید خصوصی / کلید عمومی / آدرس سه برابر ایجاد کنید:
sx جدید > pk1cat pk1 | sx pubkey > pub1cat pk1 | جمع کننده sx > addr1cat pk1 pub1 addr1
از کیف پول Electrum جفت کلید / آدرس خصوصی ایجاد کنید:
sx newseed > seedfor x در “SE 0 0 9” ؛ بذر گربه انجام دهید | sx genpriv $ x؛ دانه گربه | sx genaddr $ x؛ انجام شده
فقط آدرس ها را از یک کلید عمومی اصلی ایجاد کنید:
دانه گربه | sx mpk > mpkfor x در `seq 0 9` انجام mpk گربه | sx genaddr $ x؛ انجام شده
معاملات
اکنون وقت آن است که وارد معاملات شوید. ابتدا کمی درک در مورد نحوه کار معاملات لازم است. بیت کوین مفهوم “حساب” را ندارد. در عوض ، یک معامله که پول خود را از یک آدرس خرج می کند باید مستقیماً به برخی معاملات که حداقل مقدار مساوی پول به آن آدرس ارسال می کنند ، ارجاع دهد. اینها معمولاً “خروجی معاملات قبلی” نامیده می شوند. به عنوان مثال ، اگر آدرسی دارید که 2 BTC ، 3 BTC و سپس 4 BTC به آن ارسال کرده اید و می خواهید 5 BTC هزینه کنید ، 5 BTC خارج از آن آدرس هزینه نمی کنید. بلکه شما 2 خروجی معامله BTC و 3 BTC را خرج می کنید. بعلاوه ، یک خروجی نمی تواند “به طور جزئی” خرج شود. حتی اگر فقط می خواهید 0.1 BTC ارسال کنید ، باید یک خروجی کامل مصرف کنید. با افزودن یک خروجی خاص به معامله ، به نام “تغییر” ، جایی که وجوه باقیمانده را برای خود ارسال می کنید ، می توانید از هدر رفتن 1.9 BTC جلوگیری کنید..
دستور اصلی که برای بدست آوردن این خروجی های معاملات مصرف نشده استفاده خواهید کرد ، تاریخچه sx است
:
تاریخچه sx `گربه addr1`
با این حال ، این به خودی خود تمام تراکنش های متصل به آن آدرس را برمی گرداند ، نه فقط معاملات موردنظر ما ، بنابراین باید مقدار خروجی را فیلتر کنیم. این یک متن پیچیده است. اساساً ، ابتدا به دنبال كلمه “هزينه نشده” در تاريخ ميگردد و اين خطوط را به علاوه داده هاي معامله در دو خط بالا از آنها بدست مي آورد. سپس ، با استفاده از grep و awk فقط داده های مورد نیاز ما را استخراج می کند. توجه داشته باشید که این دستور مقادیر را در satoshis برمی گرداند. 100 میلیون ساتوشی برابر با 1 BTC. 0.001 BTC را به آدرس موجود در پرونده addr1 (گربه addr1) ارسال کنید
برای دیدن آن ، و
sx qrcode `گربه addr1` qrcode.png
برای ایجاد یک کد QR قابل اسکن) و دستور زیر را اجرا کنید:
sx history `cat addr1` | grep مصرف نشده -B 2 | خروجی grep | awk ‘{print $ 2}’ > ورودی ورودی ورودی
اکنون که سابقه داریم ، بیایید از sx برای ایجاد و ارسال معامله استفاده کنیم.
sx mktx txfile.tx `cat input -o 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6: 90000sx rawscript dup hash160 [` cat addr1 | sx decode-addr`] تأیید صحت چک را انجام می دهد > raw.scriptcat pk1 | sx sign-input txfile.tx 0 `cat raw.script` > sigsx rawscript [`cat sig`] [` گربه میخانه 1` | | sx مجموعه ورودی txfile.tx 0 > txfile2.tx؛ mv txfile2.tx txfile.txsx Broadcast-tx txfile.tx
اگر چندین ورودی تراکنش دارید و می خواهید هزینه کنید ، در اینجا باید بدانید که چه باید کرد. 0.0002 BTC را پنج بار به آدرس خود ارسال کنید ، و دستور سابقه sx فوق را دوباره اجرا کنید و مطمئن شوید که پنج خروجی را باز می گرداند. برای جلوگیری از کپی و چسباندن پنج ورودی معامله به صورت دستی ، ما یک جادوی خط فرمان کمی بیشتر انجام خواهیم داد:
sx history `cat addr1` | grep مصرف نشده -B 2 | خروجی grep | awk ‘{print $ 2}’ > temp1cat temp1 | sed ‘s / ^ / – i /’ | tr ‘n “” > temp2cat temp2
توجه کنید که temp2 چگونه دقیقاً ورودی صحیح sx mktx را شامل تمام ورودی ها می کند
. حالا ما فقط آنها را به هم متصل می کنیم:
sx mktx txfile.tx `cat temp2` -o 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6: 90000sx rawscript dup hash160 [` cat addr1 | sx decode-addr`] تأیید صحت چک را انجام می دهد > raw.scriptfor x در “seq 0 4” ؛ do pk1 گربه | sx sign-input txfile.tx $ x `cat raw.script` > سی دلار x انجام شده برای x در “SEQ 0 4” ؛ انجام sx rawscript [“گربه سیگ $ x”] [“گربه میخانه 1” | sx مجموعه ورودی txfile.tx $ x > txfile2.tx؛ mv txfile2.tx txfile.tx؛ donesx broadcast-tx txfile.tx,
جام مقدس: معاملات چند علامت
ابتدا 3 مجموعه کلید خصوصی ، کلیدها و آدرس ها تولید خواهیم کرد.
برای x در “Seq 1 3” ؛ do sx newkey > pk $ x ؛ انجام شده برای x در “Seq 1 3” ؛ انجام pk گربه $ x | sx pubkey > میخانه x $؛ انجام شده برای x در “Seq 1 3” ؛ انجام pk گربه $ x | جمع کننده sx > جمع $ x؛ انجام شده
سپس ، آدرس multisig را ایجاد خواهیم کرد.
sx rawscript 2 [`cat pub1`] [` گربه pub2`] [`گربه pub3`] 3 checkmultisig > msig.scriptcat msig.script | sx showscriptcat msig.script | sx scripthash > 3addrcat 3addr
0.001 BTC را به آدرس ارسال کنید (با همه کیف پول ها کار نمی کند!) و سپس برای دریافت هش معامله موارد زیر را اجرا کنید:
sx history `گربه 3addr` | grep مصرف نشده -B 2 | خروجی grep | awk ‘{print $ 2}’ > ورودی ورودی ورودی
اکنون ، ما باید معامله را بسازیم و آن را امضا کنیم ، در این مورد با استفاده از کلیدهای خصوصی اول و سوم (اولین و دوم یا دوم و سوم به همان اندازه خوب کار می کنند). ما فقط 50000 ساتوشی ارسال می کنیم که 0.0005 BTC به عنوان هزینه باقی می ماند.
sx mktx txfile.tx -i `cat input -o 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6: 50000cat pk1 | sx sign-input txfile.tx 0 `cat msig.script` > sig1cat pk3 | sx sign-input txfile.tx 0 `cat msig.script` > sig3sx rawscript zero [“گربه sig1”] [“گربه sig3”] [“گربه msig.script”] > input.scriptcat input.script | sx مجموعه ورودی txfile.tx 0
و سرانجام ، معامله را پخش کنید.
sx Broadcast-tx txfile.tx
نسبتاً پیچیده ، اما معاملات چند علامت در هر صورت دقیقاً ساده نیستند. با این حال ، با sx ، پیچیدگی به یک سری مراحل کاهش می یابد که می توانید به سادگی آنها را دنبال کنید یا حتی در برنامه های خود بگنجانید تا هر زمان که لازم بود اجرا کنید. خواه یک علاقه مند به خط فرمان ، یک توسعه دهنده بیت کوین یا فقط کسی باشید که علاقه مند است بیشتر به کار معاملات بیت کوین بپردازد ، sx ابزاری برای شماست. هک مبارک!