کیف پول مؤلفه های اصلی NEO و پل ها برای دسترسی کاربران به شبکه Neo هستند. آنها مسئول عملیات معامله مانند انتقال ، استقرار قرارداد ، ثبت دارایی و غیره هستند.
شما می توانید کیف پول های NEO را به دنبال افکار خود طراحی و اصلاح کنید ، اما قوانین و الگوهای زیر باید رعایت شود.
حساب ها
در نئو ، حساب قرارداد هوشمند است و آدرس نمایانگر یک اسکریپت قرارداد است. نمودار جریان زیر نشان می دهد که چگونه می توان کلید عمومی را از کلید خصوصی و سپس به آدرس استخراج کرد:

کلید خصوصی
یک کلید خصوصی یک مقدار تصادفی است که بین 1 تا n ایجاد می شود (N ثابت ، کمتر از 2 256 کمی) است و به طور کلی توسط یک بیت 256 بیت (32 بایت) نشان داده می شود.
دو قالب اصلی رمزگذاری برای کلیدهای خصوصی در NEO وجود دارد:
قالب hexstring رشته ای است که از شخصیت های شش ضلعی برای نشان دادن آرایه بایت استفاده می کند.
فرمت WIF برای اضافه کردن پیشوند 0x80 و پسوند 0x01 در داده های اصلی 32 بایت است و رشته را پس از رمزگذاری Base58Check دریافت می کند.

| قالب | ارزش |
| بایت [] | [0xc7،0x13،0x4d ، 0x6f ، 0xd8،0xe7،0x3d ، 0x81،0x9e ، 0x82،0x75 ، 0x5c ، 0x64،0xcc9،0x37،0xd8،0xd8،0xd ،0xdxdb ، 0x09،0x9،0x9،0x9،0x961، 0x36،0x3c ، 0x4c ، 0xc0،0x2a ، 0x69،0x62] |
| سحر | C7134D6FD8E73D819E82755C64C93788D8DB0961929E025A53363C4CC02A6962 |
| WF | l3tgppxlgdaeqsgsfw1go3skbiy8vqam7ymxvthskqte16pbncsu |
کلید عمومی
کلید عمومی یک نقطه (x ، y) است که از طریق الگوریتم ECC با کلید خصوصی محاسبه می شود. مختصات X ، Y را می توان با داده های 32 بایت نشان داد. متفاوت از بیت کوین ، NEO SECP256R1 را به عنوان منحنی الگوریتم ECC انتخاب می کند. دو قالب کلیدی عمومی در NEO وجود دارد:
کلید عمومی فشرده نشده
0x04 + x (32 بایت) + y (32 بایت)
کلید عمومی فشرده
0x02/0x03 + x (32 بایت)
| قالب | ارزش |
| کلید خصوصی | C7134D6FD8E73D819E82755C64C93788D8DB0961929E025A53363C4CC02A6962 |
| کلید عمومی (فشرده شده) | 035A928F201639204E06B4368B1A93365462A8EBBFF0B8818151B74FAAB3A2B61A |
| کلید عمومی (فشرده نشده) | نشانی |
آدرس مجموعه ای از اعداد و نامه ها پس از یک سری از تحولات کلید عمومی است. در این بخش مراحل تبدیل از یک کلید عمومی به یک آدرس در نئو شرح داده شده است.
اسکریپت آدرس در NEO N3 با استفاده از Opcode. checksig و opcode تغییر نکرده است.
آدرس عادی
با کلید عمومی یک اسکریپت checksig بسازید و قالب به شرح زیر است:
هش اسکریپت قرارداد را محاسبه کنید (20 بایت ، یک بار SHA256 و RIPEMD160 فیلمنامه را انجام دهید).

پیشوند نسخه را در هش اضافه کنید (در حال حاضر ، نسخه پروتکل NEO 53 و بایت مربوطه 0x35 است).
رمزگذاری Base58 را برای داده های بایت فوق ایجاد کنید.
قالب
| قالب | ارزش |
| کلید خصوصی | کلید عمومی (فشرده شده) |
| کلید عمومی (فشرده شده) | فیلم نامه |
| 0C2103CDB067D930FD5ADAA6C68545016044AADDEC64BA39E548250EAEA51172E535C4156E7B327 | نشانی |
| آدرس مجموعه ای از اعداد و نامه ها پس از یک سری از تحولات کلید عمومی است. در این بخش مراحل تبدیل از یک کلید عمومی به یک آدرس در نئو شرح داده شده است. | آدرس چند امضای |
یک اسکریپت N-O-M-MultIsig را با آدرس های متعدد بسازید. قالب اسکریپت به شرح زیر است:
هش اسکریپت قرارداد را محاسبه کنید (20 بایت ، یک بار SHA256 و RIPEMD160 فیلمنامه را انجام دهید).

پیشوند نسخه را در هش اضافه کنید (در حال حاضر ، نسخه پروتکل NEO 53 و بایت مربوطه 0x35 است).
رمزگذاری Base58 را برای داده های بایت فوق ایجاد کنید.
قالب
| قالب | ارزش |
| کلید خصوصی | کلید عمومی (فشرده شده) |
| کلید عمومی (فشرده شده) | 110C21036C8431CC78B33177A60BCC02BAF60D05FEE5038E7339D3A688E394C2215421521515151515215152152152152152152152152152154215454545454545454545452152152154545454545454545454545454545454545452152152152152152152152154542154545454545454545454545454545454545454545454545454545454545454545454545215215 |
| 0C2103CDB067D930FD5ADAA6C68545016044AADDEC64BA39E548250EAEA51172E535C4156E7B327 | nz3pqnc1hmn8ehw55zncnu8b2wooxjhcyr |
| آدرس مجموعه ای از اعداد و نامه ها پس از یک سری از تحولات کلید عمومی است. در این بخش مراحل تبدیل از یک کلید عمومی به یک آدرس در نئو شرح داده شده است. | عدد |
انتشار Opcode
| ارزش | -1 | ارزش |
| 0x10 + شماره | data. l طول == 1 | opcode. pushint8 + داده ها |
| 0x00 + داده | data. l طول == 2 | opcode. pushint16 + داده ها |
| 0x01 + داده | داده ها. طول | opcode. pushint32 + داده ها |
| 0x02 + Padright (داده ، 4) | داده ها. طول | opcode. pushint64 + داده ها |
| 0x02 + Padright (داده ، 4) | داده ها. طول | opcode. pushint128 + داده ها |
| 0x02 + Padright (داده ، 4) | داده ها. طول | opcode. pushint256 + داده ها |
| 0x02 + Padright (داده ، 4) | آدرس کیف پول اسکریپتاش | هنگام ایجاد کیف پول در blockchain Neo ، کلید خصوصی ، کلید عمومی ، آدرس کیف پول و اسکریپت های مرتبط با آن تولید می شود. |
بیایید به یک آدرس کیف پول استاندارد و رشته های ScriptHash مربوطه در قالب های بزرگ و کوچک Endian در زیر نگاه کنیم.
قالب
رشته
| قالب | NUnLWXALK2G6gYa7RadPLRiQYunZHnncxg |
| Big-Endian Scripthash | 0xed7cc6f5f2dd842d384f254bc0c2d58fb69a4761 |
| اسکریپتاش اندین کوچک | 61479ab68fd5c2c04b254f382d84ddf2f5c67ced |
| Base64 Scripthash | YUeato/VwsBLJU84LYTd8vXGfO0= |
| برای تبدیل بین آدرس کیف پول و اسکریپت هش یا بین ترتیب بایت اندیان بزرگ و اندیان کوچک، از ابزار مبدل داده استفاده کنید. | فایل های کیف پول |
فایل های db3
کیف پول db3 معمولاً در کیف پول های صرافی برای تسهیل حجم زیادی از ذخیره سازی اطلاعات حساب و درخواست های بازیابی استفاده می شود.
یک فایل کیف پول db3 از SQLite برای ذخیره داده ها استفاده می کند و پسوند نام فایل . db3 است. چهار جدول در فایل db3 ایجاد شده است:
در جدول کلید، عمدتاً ویژگی های AES256 را ذخیره می کند:
PasswordHash: هش رمز عبور، با استفاده از عملیات هش SHA256.
IV : بردار اولیه AES که به طور تصادفی تولید می شود.
MasterKey: یک متن رمز شده رمزگذاری شده که با رمزگذاری کلید خصوصی با استفاده از الگوریتم AES256 با پارامترهای PasswordKey، IV به دست می آید.
نسخه: نسخه کیف پول
کیف پول db3 از AES (رمزگذاری متقارن) به عنوان روش رمزگذاری و رمزگشایی استفاده می کند.
فایل های NEP6
یک فایل کیف پول NEP6 با استاندارد NEP6 مطابقت دارد و پسوند نام فایل . json است. فرمت JSON به شرح زیر است:
در این مثال رمز عبور 1 است
رشته
شرح
| نام | برچسبی که کاربر به فایل کیف پول می چسباند |
| نسخه | در حال حاضر 3. 0 است |
| رمزگذاری (n/r/p) | (n/r/p) پارامترهایی برای الگوریتم رمزگذاری مورد استفاده برای رمزگذاری و رمزگشایی کلیدهای خصوصی در کیف پول هستند. |
| حساب ها | آرایه ای از اشیاء حساب که جزئیات هر حساب را در کیف پول توصیف می کند |
| account. address | آدرس حساب |
| حساب. برچسب | برچسب حساب، به طور پیش فرض null است |
| account. isDefault | آیا حساب پیش فرض کیف پول است |
| حساب. قفل | آیا حساب قفل شده است |
| حساب. کلید | صادرات nep2key از کلید خصوصی |
| حساب. قرارداد | قرارداد فیلمنامه |
| account. contract. script | اسکریپت آدرس |
| حساب. پیمان. پارامترها | لیست پارامتر برای قرارداد اسکریپت آدرس |
| account. contract. parameter. name | نام پارامتر برای قرارداد اسکریپت آدرس |
| حساب. قرارداد. پارامتر. نوع | نام پارامتر برای قرارداد اسکریپت آدرس |
| account. contract. deployed | نام پارامتر برای قرارداد اسکریپت آدرس |
| account. extra | ویژگی های اضافی حساب، به طور پیش فرض خالی است |
| اضافی | ویژگی های اضافی کیف پول، به طور پیش فرض خالی است |
| کیف پول NEP6 از الگوریتم رمزگذاری به عنوان روش اصلی رمزگذاری و رمزگشایی کیف پول استفاده می کند. | مراحل رمزگذاری |
آدرس از کلید عمومی گرفته شده است ، و هش آدرس چهار بایت اول SHA256 (SHA256 (آدرس)) است
یک کلید مشتق شده توسط الگوریتم Scrypt را محاسبه کنید و داده های 64 بایت را به دو نیمه تقسیم کنید زیرا DeristedHalf1 و Scrypt DerivedHalf2 از پارامترهای زیر استفاده می کنند:

Ciphertext: رمز ورود وارد شده (فرمت UTF-8)
نمک: هش آدرس
آیا عملکرد XOR را روی کلید خصوصی و DerivedHalf1 انجام دهید ، و سپس با استفاده از AES256 برای رمزگذاری آن با DeristedHalf2 رمزگذاری کنید
داده ها را با توجه به قالب زیر جمع کنید و NEP2Key را با استفاده از رمزگذاری Base58Check از آن بدست آورید
0x01 + 0x42 + 0xe0 + آدرس Hash + EncryptedKey
مراحل رمزگشایی
رمزگشایی NEP2Key با استفاده از رمزگشایی Base58Check
بررسی کنید که آیا طول داده های رمزگشایی 39 بایت است و سه بایت اول (داده [0-2]) 0x01 ، 0x42 و 0xe0 هستند
داده [3-6] را به عنوان آدرس hash بگیرید
رمز عبور و آدرس HASH را در الگوریتم Scrypt قرار دهید. طول نتیجه را تا 64 مشخص کنید. سپس کلید مشتق شده را دریافت کنید
کلید مشتق شده [0-31] را به عنوان مشتق از 1 ، و کلید مشتق شده [32-63] به عنوان DeristedHalf2 بگیرید
داده ها [7-38] را به عنوان EncryptedKey (32 بایت) بگیرید و آن را با استفاده از AES256 با DeristedHalf2 به عنوان بردار اولیه رمزگشایی کنید
آیا عملکرد XOR را در داده های رمزگشایی انجام دهید و برای به دست آوردن کلید خصوصی به دست آمده است
با الگوریتم ECC ، کلید عمومی را از کلید خصوصی دریافت کنید و سپس آدرس را دریافت کنید. بررسی کنید که آیا چهار بایت اول نتیجه SHA256 (SHA256 (آدرس)) برابر با آدرس HASH است. اگر همینطور است ، پس کلید خصوصی صحیح را دریافت می کنید
جزئیات بیشتر در مورد پیشنهادات NEP2 و NEP6 در سند NEO است.
امضاء
NEO از الگوریتم ECDSA برای امضای معامله از طریق مؤلفه کیف پول استفاده می کند و NISTP256 یا SECP256R1 را به عنوان منحنی ECC و SHA256 به عنوان الگوریتم هش در نظر می گیرد.
قالب
ارزش
| قالب | ارزش |
| کلید خصوصی | F72B8FAB85FDCC1BDDDDDDDDDDD207E5DA1AB4713487BC88FC53B5B134F5EDDEA1A19 |
| کلید عمومی | 031F64DA8A38E6C1E5423A72DDD6D4FC4A777ABE537E5CB5AA0425685CDA8E063B |
| امضاء | تابع کیف پول |
| نام عملکرد | شرح |
وارد کردن پرونده کیف پول
| اطلاعات حساب را از پرونده کیف پول مشخص وارد کنید | برچسبی که کاربر به فایل کیف پول می چسباند |
| اطلاعات حساب (از جمله کلید خصوصی ، رمز عبور ، آدرس و غیره) را در پرونده کیف پول مشخص شده مانند پرونده کیف پول DB3 ، پرونده NEP6 JSON ذخیره کنید. | قفل کیف پول |
| برای جلوگیری از نشت ، رمز عبور کاربر را تأیید کنید | ایجاد کلید خصوصی |
| ژنراتور تصادفی ایمن را توصیه کنید | وارد کردن کلید خصوصی |
| با فرمت WIF یا گواهی دیجیتال ، کلید خصوصی جدید را به کیف پول اضافه کنید | صادرات کلید خصوصی |
| کلید خصوصی حساب های صادراتی | کلید عمومی ایجاد کنید |
| کلید عمومی را توسط الگوریتم ECC با کلید خصوصی بدست آورید | ایجاد آدرس |
| ایجاد آدرس بر اساس کلید خصوصی | آدرس واردات |
| آدرس جدیدی را به کیف پول اضافه کنید | آدرس صادراتی |
| آدرس حساب های صادراتی | داده های آفلاین را وارد کنید |
| برای کاهش زمان همگام سازی ، داده های بلوک را در پرونده chain. acc بارگذاری کنید | داده های آفلاین را صادر کنید |
| داده های بلوک صادرات در پرونده chain. acc | همگام سازی داده های بلوک |
| انتقال | انتقال به آدرس های دیگر |
| امضا کردن |
| داده ها را امضا کنید ، مانند معاملات | بنزین |
| گاز تازه اختصاص یافته از نئو را که توسط حساب نگهداری می شود ادعا کنید | تعادل را بدست آورید |
| تعادل کیف پول فعلی را نشان دهید | معامله دریافت کنید |
| تاریخ معامله کیف پول فعلی را نشان دهید | ساخت قرارداد چندمدی |
| ساخت قرارداد چندمدی | توسعه دادن، گسترش |
| استقرار قرارداد هوشمند | استقرار قرارداد هوشمند |
| قرارداد هوشمند را امتحان کنید |
| قرارداد هوشمند را امتحان کنید | قرارداد هوشمند را امتحان کنید |
| کیف پول | کیف پول |
Neo-Cli و Neo-Gui همه کیف پول تمام گره هستند. برای اطلاعات بیشتر به گره Neo مراجعه کنید.
کیف پول SPV
کیف پول SPV (تأیید پرداخت ساده) با کیف پول تمام گره متفاوت است. تمام داده های بلوک ، فقط داده های هدر را ذخیره نمی کند و با استفاده از الگوریتم Filter Bloom Filter و Merkle Tree ، داده ها را تأیید می کند. این بیشتر در برنامه تلفن همراه یا مشتری سبک استفاده می شود ، زیرا می تواند فضای ذخیره سازی را به طور موثر ذخیره کند.
برای توسعه کیف پول SPV ، به رابط پروتکل Neo Network مراجعه کنید.
کیف پول SPV یک فیلتر شکوفه را به گره کامل ارسال می کند و گره کامل فیلتر Bloom را بار می کند.
کیف پول SPV پارامترهای فیلتر Bloom را به گره کامل ارسال می کند و گره کامل پارامترها را بارگیری می کند.(اختیاری)
کیف پول SPV معاملات را از گره کامل پرس و جو می کند ، و گره کامل داده های معامله را پس از فیلتر کردن با فیلتر Bloom و مسیر درخت Merkle ساخته شده باز می گرداند.
کیف پول SPV از مسیر درخت Merkle برای تأیید داده های معامله استفاده می کند.
کیف پول SPV دستورالعمل فیلتر Bloom را به گره کامل ارسال می کند و گره کامل آن را پاک می کند.
نرم افزار مفید تریدر...
ما را در سایت نرم افزار مفید تریدر دنبال می کنید
برچسب :
نویسنده : احمد شاملو
بازدید : 43
تاريخ : چهارشنبه
23 فروردين
1402 ساعت: 15:38