کیف پول

ساخت وبلاگ

کیف پول مؤلفه های اصلی 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