بڕۆ بۆ ناوەڕۆکەکە
گەڕانەوە بۆ نیمچات

بنکەی زانیاری لە ژێر کابۆکەدا

پشتڕاستکردنەوەی دروستکردنەکە

سەرچاوە کراوە تەنها یارمەتیدەرە ئەگەر ئەو کۆدەی کە تۆ بەکاری دەهێنیت ئەو کۆدە بێت کە بووە بڵاوکراوەتەوە. نیمچات بە شێوەیەکی دیاریکراو دروستکراوە بۆ ئەوەی بتوانیت خۆت ئەوە بپشکنیت، لە ناوەوەی... ئەپ یان لە تێرمیناڵێکەوە.

بیناسازییە دووبارەبووەکان

دروستکردنی ئەپەکە a build-manifest.json کە کۆمیتی سەرچاوەی تێدایە، a هاشی SHA-256 لە هەر سەرمایەیەکی HTML، جاڤاسکڕێپت و CSS کە پێشکەش دەکرێت، و تاکە bundleHash لەسەر ئەو هەموو کۆمەڵە سەروەت و سامانە.

دەرچوونەکە تەنها بەندە بە ناوەڕۆکی سەرچاوە — تەنانەت کاتی دروستکردنی تۆمارکراویش بریتییە لە... مۆری کاتی commit نەک ئەو ساتەی کە دروستکردنەکە بەڕێوەچوو — بۆیە هەرکەسێک هەمان شت دروست بکاتەوە commit فایلەکانی هاوشێوەی بایت و هەمان شت بەدەست دەهێنێت bundleHash.

پاشان کردارێکی GitHub هەر پابەندبوونێک بە شێوەیەکی سەربەخۆ بنیات دەنێتەوە و واژۆی سەرچاوەی دروستکردن دەکات ئیسپاتەکان بۆ هاش و مانیفێستەکە، بۆیە تۆمارێکی واژۆکراو هەیە کە a bundleHash بۆ commit لە کۆگاکەدا، کە لەلایەن شتێکی ترەوە بەرهەم هێنراوە جگە لە... جێگیرکردن.

دیالۆگی About چی دەپشکنێت

دەربارەی لە سەردێڕەکەدا پشکنینەکە بە شێوەیەکی ڕاستەوخۆ جێبەجێ دەکات، لە وێبگەڕەکەتدا.

دیالۆگی Nymchat About، کە وەشانی پیشان دەدات، یەکپارچەیی دروستکردن و گەرەنتی دۆخی کەناری دەکات.
دیالۆگی دەربارەی: وەشانی، یەکپارچەیی دروستکردن، گەرەنتی canary و هێڵێکی ڕاستەوخۆ بۆ گەشەپێدەر.

هەر سەرمایەیەک کە لاپەڕەکە لە ڕاستیدا کاردەکات دووبارە دەهێنێتەوە، بە Web Crypto API هاش دەکات و... بەراورد دەکات لە بەرامبەر مانیفێست. پاشان — و ئەمە ئەو بەشەیە کە گرنگە — ئەوە دووبارە حیساب بۆ... bundleHash لە هاشەکانەوە ئەو تەنها حیساب کراوە نەک لە هەر شتێک کە مانیفێست ئیدیعای بکات، و لە ئیسپاتە واژۆکراوەکانی کۆگاکەدا سەیری ئەوە دەکات لە ڕێگەی GitHub API ەوە.

ئەوەش ئەوەیە کە بڵاوکردنەوەیەک لە گەرەنتیکردنی خۆی دەواسێت: خزمەتکردنی فایلە دەستکاریکراوەکان پێکەوە لەگەڵ... مانیفێستی هاوتاکردن هێشتا شکست دەهێنێت، چونکە هاشی دووبارە حیسابکراو هیچ ئیسپاتێکی نییە.

دۆخواتە
&پشکنین؛ ئەپی فەرمی پشتڕاستکراوە (n/n)هەر سەرمایەیەک هاوتا بێت، هاشی باندڵی دووبارە حیسابکراو لەلایەن کۆگاکەوە پشتڕاست دەکرێتەوە، و لاپەڕەکە لە دۆمەینی فەرمیەوە خزمەت دەکرێت.
⚠ Verified build · نەک ئەپی فەرمیکۆدەکە ڕاستەقینە و پشتڕاستکراوە، بەڵام ئەمە ئاوێنەیە لەسەر دۆمەینێکی تر. ئاوێنە ناتوانێت ئەم هۆشدارییە لاببات بەبێ ئەوەی پشتڕاستکردنەوە شکست بهێنێت.
✗ ناتەباییسەرمایەیەک هاش ناکات بەو شتەی کە مانیفێست دەیڵێت.
✗ دروستکردنی نافەرمیهاشی باندڵی دووبارە حیسابکراو هیچ ئیسپاتێکی لە کۆگاکەوە نییە — مانیفێستێکی خۆدروستکراو.
⚠ سەرچاوەی لێ ناگاتنەتوانرا بگاتە GitHub API، بۆیە نەتوانرا ئیسپاتیکردنەکە بە هیچ کام لەم دوو ڕێگایە بپشکنرێت.

پشتڕاستکردنەوەی خۆت

دووبارە دروستکردنەوەی commit the About دیالۆگ ناوەکان و بەراوردکردن:

git clone https://github.com/Spl0itable/NYM
cd NYM
git checkout <commit shown in the About dialog>
npm ci
npm run build   # prints "Build hash: <bundleHash>"

هاشی چاپکراو دەبێت لەگەڵ هەردوو هاشی ناو دیالۆگی About و ئەو هاشەی ئەو commit's بگونجێت پوختەی ڕاکردنی build-provenance. هەروەها دەتوانیت ڕاستەوخۆ بە GitHub CLI واژۆکە بپشکنیت:

gh attestation verify dist/build-manifest.json --repo Spl0itable/NYM

ئەپەکانی ئەندرۆید و ئای ئۆ ئێس

ئەو چێکەی سەرەوە پشکنینی وێب-ئەپە، و هۆکارەکەی شایەنی باسە بە ڕوونی: ئەپێکی ڕەسەن ناتوانێت هەمان شت بەسەر خۆیدا بکات. ئەوەی لەسەر مۆبایلەکەت کاردەکات کۆدی ئامێری کۆمپایڵکراوە نەک کۆدی... سەرچاوە لە کۆگاکەدا، و هیچ شتێک کە ئەپەکە بتوانێت لەسەر ئامێرەکە حیساب بکات، یەکێکیان بە... ئەوانی تر.

ئەندرۆید دەتوانێت باشترین کاری داهاتوو بکات. ئەو دامەزراوە .apk فایلێکە ئەپەکە دەتوانێت بیخوێنێتەوە و هاش، و هاشی هەر بڵاوکراوەیەکی بڵاوکراوە پێشتر گشتییە: بڵاوکردنەوە بۆ... Zapstore واژۆ دەکات بۆ ڕووداوێکی Nostr کە هەڵگری SHA-256 ی APK و SHA-256 ی بڕوانامەی واژۆکردنی. کەواتە ئەو... ئەندرۆید دەربارەی دیالۆگ ئەو APK یە هاش دەکات کە لێیەوە کاردەکات، ئەوانەی واژۆکراون دەهێنێت ڕووداوەکان، تەنها ئەوانەی دەهێڵێتەوە کە بە کلیلی گەشەپێدەر واژۆ کراون، و بەراورد دەکات. ئەو دووانە نیشان دەدات هاشەکان هەروەها، بۆیە دەتوانیت پشکنینی ئامێرەکە دووبارە بکەیتەوە: APK بڵاوکراوە دابەزێنە، ڕابکە sha256sum لەسەری، و خۆت سەیری هەمان ڕووداو بکە.

ئەپێک کە لە گووگڵ پلەیەوە دامەزرابێت ناتوانرێت بەم شێوەیە پشکنین بکرێت, و ئەوە نیشانەی ئەوە نییە کە شتێک هەڵە بووە. گووگڵ هەر ئەپڵۆدێکەوە دووبارە واژۆ دەکاتەوە بە کلیلەکەی خۆی و APKیەکی جیاواز بۆ هەر ئامێرێک دروست دەکات، بۆیە ئەوەی دەکەوێتە ناو مۆبایلەکەت ئەو فایلە نییە کە گەشەپێدەرەکە دروستی کردووە و هاوشێوەی (hash) ئاماژەییەکەی لەگەڵ هیچ شتێک ناگونجێت کە بڵاوکراوەبێتەوە. ئەپەکە ناسنامەی کارلێکردنێکی Play دەکاتەوە و ئاماژەی پێ دەدات لەبری ئەوەی باسی شکست بکات. بۆ ئەوەی خۆت بڕوانین بە بونیادنەکە بکەیت، ئەو APKیە دابەزێنە کە ڕاستەوخۆ بڵاوکراوەتەوە.

بە هیچ شێوەیەک ناتوانرێت iOS پشکنین بکرێت. ئەپڵ هەر دابەزاندنێک کۆد دەکات و دووبارە واژۆی دەکات بە تاک، بۆیە هاشێک کە لەسەر ئایفۆنەکەت حیساب دەکرێت تایبەتە بە ئایفۆنەکەت و لەگەڵ هیچ شتێکدا ناگونجێت لە هەر شوێنێک بڵاودەکرێتەوە. دیالۆگی About ئەمە بەڕاشکاوی دەڵێت نەک دڵنیاکەرەوەیەک نیشان بدات ستاتۆیەک کە مانای هیچ نییە. ئەگەر Nymchat ت دەوێت کە دەتوانیت لەسەر ڕەقەکاڵای ئەپڵ پشتڕاستی بکەیتەوە، وێب بەکاربهێنە ئەپەکە، کە هەموو فایلێک کە بەڕێوەی دەبات پشکنین دەکات.

ئەوەی هیچ کام لەمانە نایسەلمێنن

پشکنینێک کە ئەپێک لەسەر خۆی کاردەکات ناتوانێت بیسەلمێنێت کە ئەپەکە ڕاستگۆیە — هەرکەسێک دەستکاری کردبێت دەتوانێت چێکەکەش لاببات. ئەوەی دەیسەلمێنێت حاڵەتی ئاساییە: کە کۆپی تۆ installed ئەو کۆپیەیە کە بڵاوکراوەتەوە. کە شایەنی ئەوەیە هەتبێت چونکە بەهاکانی ئەو... بەراوردەکان گشتین، بۆیە کەسێکی تر جگە لە تۆ دەتوانێت پشکنینیان بۆ بکات، و ناکۆک بێت.

فەرمانی دەستگیرکردنەکە کەناری

گەرەنتی کاناری بریتییە لە لێدوانێک، کە لە خشتەی دیاریکراودا بڵاودەکرێتەوە، کە گەشەپێدەرەکە هەیەتی نەخێر فەرمانێکی نهێنی حکومەتیان وەرگرتووە کە ئاشکرایکردنیان قەدەغەیە — a نامەی ئاسایشی نیشتمانی، فەرمانێکی فیسا. دەتوانرێت گەشەپێدەر ناچار بکرێت بێدەنگ بێت لەبارەی... فەرمانێکی لەو جۆرە، بەڵام ناتوانرێت ناچار بکرێت درۆ بکات، بۆیە کەناری کۆنەبوون یان نەمانی وایە خۆی سیگناڵەکە.

لە... canary.json لە ڕەگی کۆگاکەدایە و ڕاستەوخۆ دەهێنرێت لە GitHub ەوە، بۆیە مێژووەکەی سەربەخۆیە لە هەر شتێک کە سایتی بڵاوکراوە دەیڵێت، وردبینی دەکرێت. دیالۆگی About ڕەنگ-کۆدی دەکات:

ڕەنگواتە
سەوز — هەموویان ڕووننواژۆکراو، ئێستا و واژۆکراوەکە لەگەڵ کلیلی گەشەپێدەرەکەدا دەگونجێت. تا ئێستا هیچ فەرمانێکی نهێنی پێ نەگەیشتووە.
زەرد — دواکەوتووە، یان هەمووی ڕوون نییەبە بەرواری دیاریکراوی خۆی، یان بە بەرواری دیاریکراوی خۆی تازە نەکرایەوە allClear ئاڵا درۆیە. فەرمانی بێدەنگ ناتوانرێت ڕەت بکرێتەوە.
سوور — واژۆی نادروست، یان نەماوەواژۆکە لەگەڵ کلیلی گەشەپێدەرەکەدا ناگونجێت، یان فایلەکە بە تەواوی لابراوە. ئەمە وەک هۆشدارییەکی جددی مامەڵەی لەگەڵ بکە.

لەنگەری تازەیی

کەناری واژۆکراو نوێترین بەرزی بلۆکی بیتکۆین و هاش لە ساتەوەختی واژۆکردندا جێگیر دەکات. ئەو هاشە پێش بوونی بلۆکەکە نەدەکرا بزانرێت، ئەمەش دەیسەلمێنێت کە کەنارییەکە بووە واژۆ کراوە دوای خاڵێکی دیاریکراو لە کاتی خۆیدا نەک چەند مانگێک پێشتر بە کۆی گشتی پێشوەختە واژۆ بکرێت. دیالۆگی About ئەنکرەکە بەستراوەتەوە بە بلۆک ئێکسپلۆرەرێکەوە بۆ ئەوەی بتوانیت پشکنین بکەیت.