یک برچسب از قبل با نام شعبه ارائه شده وجود دارد. بسیاری از دستورات Git هر دو نام برچسب و شاخه را می پذیرند، بنابراین ایجاد این شاخه ممکن است باعث رفتار غیرمنتظره شود. آیا مطمئن هستید که می خواهید این شعبه را ایجاد کنید؟
docs / docs / en-us / basic / concept / wallets. md
- به فایل T بروید
- به خط L بروید
- مسیر کپی
- پیوند ثابت را کپی کنید
این commit به هیچ شعبه ای در این مخزن تعلق ندارد و ممکن است به یک فورک خارج از مخزن تعلق داشته باشد.
- با دسکتاپ باز کنید
- مشاهده خام
- کپی مطالب خام کپی مطالب خام
مطالب خام را کپی کنید
مطالب خام را کپی کنید
کیف پول ها اجزای اصلی نئو و پل هایی برای دسترسی کاربران به شبکه نئو هستند. آنها مسئول عملیات معاملاتی مانند انتقال، استقرار قرارداد، ثبت دارایی و غیره هستند.
میتوانید کیف پولهای نئو را با توجه به افکار خود دوباره طراحی و اصلاح کنید، اما قوانین و الگوهای زیر باید رعایت شوند.
در نئو، حساب قرارداد هوشمند است و آدرس نشان دهنده یک اسکریپت قرارداد است. نمودار جریان زیر نحوه استخراج کلید عمومی از کلید خصوصی و سپس به آدرس را نشان می دهد:
کلید خصوصی یک مقدار تصادفی است که بین 1 و n ایجاد می شود (n یک ثابت است، کمی کمتر از 2^256)، و به طور کلی با یک عدد 256 بیتی (32 بایت) نشان داده می شود.
دو فرمت اصلی رمزگذاری برای کلیدهای خصوصی در نئو وجود دارد:
قالب hexstring رشته ای است که از کاراکترهای هگزا دسیمال برای نمایش آرایه بایت استفاده می کند.
فرمت wif به این صورت است که پیشوند 0x80 و پسوند 0x01 را در داده های اصلی 32 بایتی اضافه می کند و رشته را پس از رمزگذاری Base58Check دریافت می کند.
قالب | ارزش |
---|---|
بایت[] | , 0x36, 0x3c, 0x4c, 0xc0, 0x2a, 0x69, 0x62] |
hexstring | c7134d6fd8e73d819e82755c64c93788d8db0961929e025a53363c4cc02a6962 |
همسر | L3tgppXLgdaeqSGSFw1Go3skBiy8vQAM7YMXvTHsKQtE16PBncSU |
کلید عمومی یک نقطه (X, Y) است که از طریق الگوریتم ECC با کلید خصوصی محاسبه می شود. مختصات X، Y را می توان با داده های 32 بایتی نشان داد. متفاوت از بیت کوین، Neo secp256r1 را به عنوان منحنی الگوریتم ECC انتخاب می کند. دو فرمت کلید عمومی در نئو وجود دارد:
کلید عمومی فشرده نشده
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 | نشانی |
nnli44djnxtdnsbkofb48atvytb1zzrnes | یک اسکریپت N-O-M-MultIsig را با آدرس های متعدد بسازید. قالب اسکریپت به شرح زیر است: |
هش اسکریپت قرارداد را محاسبه کنید (20 بایت ، یک بار SHA256 و RIPEMD160 فیلمنامه را انجام دهید).
پیشوند نسخه را در هش اضافه کنید (در حال حاضر ، نسخه پروتکل NEO 53 و بایت مربوطه 0x35 است).
رمزگذاری Base58 را برای داده های بایت فوق ایجاد کنید.
قالب
قالب | ارزش |
---|---|
کلید خصوصی | کلید عمومی (فشرده شده) |
کلید عمومی (فشرده شده) | 110C21036C8431CCC78B33177A60BCC02BAF60D05FEE5038E739D3A688E394C2CBD8430C210321515215152151521521521521521521521521521521521542154545454545454545215452154545421545454545454545454545454545454545215215215215215215215215454215454215454215454215454215454215454215454215454215454545454545454545454545215215 |
0C2103CDB067D930FD5ADAA6C68545016044AADDEC64BA39E548250EAEA51172E535C4156E7B327 | nz3pqnc1hmn8ehw55zncnu8b2wooxjhcyr |
nnli44djnxtdnsbkofb48atvytb1zzrnes | لطفاً برای استفاده از emitpush (شماره) به فاصله شماره توجه کنید. در اینجا مثالی در مورد شماره biginteger ، جایی که داده = number. tobytearray () وجود دارد: |
اسکریپت آدرس در NEO N3 با استفاده از Opcode. checksig و opcode تغییر نکرده است.
انتشار 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 |
---|---|
اسکریپته بزرگ اندی | 0xed7cc6f2dd842d384f254bc0c2d58fb69a4761 |
اسکریپتراش کوچک اندی | 61479AB68FD5C2C04B254F382D84DDF2F5C67CED |
base64 scripthash | yueato/vwsblju84lytd8vxgfo0 = |
برای تبدیل بین آدرس کیف پول و اسکریپتاش ، یا بین سفارش بایت بزرگ Endian و Little Endian ، از مبدل داده ابزار استفاده کنید. | کیف پول DB3 معمولاً در کیف پول مبادله برای تسهیل مقدار زیادی از ذخیره اطلاعات حساب و نمایش داده های بازیابی استفاده می شود. |
یک پرونده کیف پول DB3 از SQLite برای ذخیره داده ها استفاده می کند و پسوند نام پرونده . db3 است. چهار جدول در پرونده DB3 ایجاد شده است
در جدول کلیدی , عمدتا ویژگی های AES256 را ذخیره می کند:
PasswordHash: Hash of the Passowrd ، با استفاده از عملیات Hash Sha256.
IV: یک بردار اولیه AES ، به طور تصادفی تولید می شود.
MasterKey: یک رمزنگاری رمزگذاری شده ، با رمزگذاری کلید خصوصی با استفاده از الگوریتم AES256 با رمز عبور ، پارامترهای IV بدست می آید.
نسخه: نسخه کیف پول
کیف پول DB3 از AES (رمزگذاری متقارن) به عنوان روش رمزگذاری و رمزگشایی آن استفاده می کند.
یک پرونده کیف پول NEP6 با استاندارد NEP6 مطابقت دارد و پسوند نام پرونده . json است. قالب JSON به شرح زیر است:
در این مثال رمز عبور 1 است
رشته
شرح
نام | برچسب که کاربر به پرونده کیف پول وصل می کند |
---|---|
نسخه | در حال حاضر 3. 0 است |
scrypt (n/r/p | (N/R/P) پارامترهایی برای الگوریتم Scrypt است که برای رمزگذاری و رمزگشایی کلیدهای خصوصی در کیف پول استفاده می شود |
حساب ها | مجموعه ای از اشیاء حساب که جزئیات هر حساب را در کیف پول توصیف می کند |
حساب | آدرس حساب |
حساب | برچسب حساب ، به طور پیش فرض تهی |
حساب. isdefault | آیا حساب پیش فرض کیف پول است |
حساب | آیا حساب قفل شده است |
حساب. کلید | صادرات NEP2Key از PrivateKey |
حساب. قرارداد | قرارداد فیلمنامه |
حساب. contract. Script | خطاب |
حساب. contract. Parameters | لیست پارامتر برای قرارداد اسکریپت آدرس |
حساب. contract. parameter. name | نام پارامتر برای قرارداد اسکریپت آدرس |
Account. contract. Parameter. type | نام پارامتر برای قرارداد اسکریپت آدرس |
account. contract. depoled | نام پارامتر برای قرارداد اسکریپت آدرس |
حساب. | ویژگی های اضافی حساب ، به طور پیش فرض تهی |
اضافی | ویژگی های اضافی کیف پول ، به طور پیش فرض تهی |
یک کیف پول NEP6 از الگوریتم Scrypt به عنوان روش اصلی رمزگذاری کیف پول و رمزگشایی استفاده می کند. | آدرس از کلید عمومی گرفته شده است ، و هش آدرس چهار بایت اول SHA256 (SHA256 (آدرس)) است |
یک کلید مشتق شده توسط الگوریتم Scrypt را محاسبه کنید و داده های 64 بایت را به دو نیمه تقسیم کنید زیرا DeristedHalf1 و Scrypt DerivedHalf2 از پارامترهای زیر استفاده می کنند:
Ciphertext: رمز ورود وارد شده (فرمت UTF-8)
نمک: هش آدرس
- N: 16384
- طول: 64
- آیا عملکرد XOR را روی کلید خصوصی و DerivedHalf1 انجام دهید ، و سپس با استفاده از AES256 برای رمزگذاری آن با DeristedHalf2 رمزگذاری کنید
- r: 8
- p: 8
- داده ها را با توجه به قالب زیر جمع کنید و 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 node مراجعه کنید. | Neo-CLI و Neo-GUI همگی کیف پول فول نود هستند. برای اطلاعات بیشتر به Neo node مراجعه کنید. |
برای توسعه کیف پول SPV، به رابط پروتکل شبکه NEO مراجعه کنید.
کیف پول SPV یک فیلتر بلوم را به گره کامل می فرستد و گره کامل فیلتر بلوم را بارگیری می کند.
کیف پول SPV پارامترهای فیلتر بلوم را به گره کامل ارسال می کند و گره کامل پارامترها را بارگذاری می کند.(اختیاری)
کیف پول SPV تراکنش ها را از گره کامل جستجو می کند و گره کامل پس از فیلتر کردن با فیلتر شکوفه و مسیر درخت مرکل ساخته شده، داده های تراکنش را برمی گرداند.
کیف پول SPV از مسیر درخت مرکل برای تأیید داده های تراکنش استفاده می کند.
کیف پول SPV دستورالعمل فیلتر شکوفه را به گره کامل ارسال می کند و گره کامل آن را پاک می کند.