برای اینکه بتوانید روی بلاکچین عمومی کادنا شروع به تراکنش با دیگران کنید، ابتدا نیاز به ساخت یک اکانت دارید. در این مقاله سعی می کنیم به موضوع “کلید چیست؟”، “اکانت چیست؟” ، “راه کار درست ساخت اکانت کادنا” و… بپردازیم. اول بیایید به موضوع کلیدهای کریپتو بپردازیم.
کلید چیست؟
برای انجام تراکنش در یک بلاک چین شما باید یک جفت کلید خصوصی و عمومی (public/private) بسازید. با استفاده از این جفت کلید شما قادر به انجام تراکنش در شبکه اید. توجه کنید که کلید خصوصی یا پرایوت، تنها برای خود شماست و با آن فقط تراکنش هایتان را امضا میکنید. کلید عمومی یا پابلیک، کلیدیست که به بقیه می دهید. ساخت یک جفت کلید (key-pair) آسان است. روی تصویر زیر کلیک کنید تا به سایت مربوطه بروید و به راحتی جفت کلید خود را بسازید.
نمونه زیر یک جفت کلید خصوصی/عمومی است.
public: 4bf1a0b622650367effca85dd6da35a937bc75fdbbdba04ff7d9338262135e98 (عمومی)
secret: 0e809ea42eccb4a90caebeef015dd9ef71a8d1cdfcfabfecb446320dd3bfe7d2 (خصوصی)
دینامیک بین جفت کلید به این شکل است که کلید خصوصی ثابت می کند شما صاحب کلید عمومی هستید. ویژگی منحصر به فرد دیگر جفت کلید ها این است که کاملا یکتا و بی نظیر اند. هیچکس نمی تواند مانند کلید شما را بسازد یا داشته باشد، مگر اینکه آن را -به صورت مجازی البته- به سرقت ببرد.
در بسیاری از بلاک چینها، به دلیل منحصربهفرد بودن جفت کلیدها، اکانت ها به سادگی با مدل جفت کلید عمومی/خصوصی یا با تغییراتی در این مدل با دادههای اضافی، ساخته می شوند.این عالی است و کارها را ساده می کند، اما از منظر فلسفی خیلی سریع با مشکلاتی مواجه می شود. به سوال زیر توجه کنید: جفت کلیدها چه چیزی را نشان می دهند؟ آیا تنها یک فرد پشت آن است؟ یک زوج؟ هیئت مدیره؟ اگر بیش از یک نفر باشد، چه چیزی یا کسی در استفاده از آن حاکمیت دارد؟
مطمئناً، اگر یک زوج متاهل تصمیم به باز کردن یک حساب بانکی مشترک داشته باشند، بسیار وحشتناک خواهد بود اگر یکی بتواند حساب را تخلیه کند و دیگری را بی پول رها کند. در واقع، حسابهای مشترک برای آزادسازی وجوه نیاز به حساب “چند-امضایی” دارند. در همین راستا، هیئت مدیره رای میدهد و اکثریت آرا تعیین میکنند که با سرمایههای یک شرکت چه باید کرد. بیاید اسم این ایده را ” پردیکیت گاورنس (governance predicate)” بگذاریم.
جفت کلید در بعضی شبکه ها؛ مثل اتریوم، پیچیدگی هایی به وجود می آورد. این ما را به موضوع دسته کلید (Keyset) در کادنا می رساند.
دسته کلید چیست؟
کادنا به صورت بومی چندین کلید برای حاکمیت یک اکانت را ساپورت میکند.(چند-امضایی).پس دسته کلید (Keyset) دقیقا چیزیست که می شنوید: دسته و مجموعه ای از کلید ها.
دسته کلید یک ویژگی به نام “عملکرد پریدیکیت (predicate function)” دارد که مشخص می کند در هنگام تراکنش، کدام کلید ها اجازه تصمیم گیری برای اکانت را دارند.(آیا همه ی کلید ها لازم است باشند؟ یا یکی ؟ یا دوتا؟…)
نمونه ای از دسته کلید
“keys”: [“pubkey1”, “pubkey2″,…,”pubkeyN”],
“pred”: “some governance function”
هنگام امضای تراکنش، فهرست کلیدهای خصوصی ارائه شده به عنوان جفت کلیدهای امضاکننده در مقابل دسته کلید و پردیکیت بررسی میشود. تا اطمینان حاصل شود که نه تنها همه کلیدهایی که باید حاضر باشند هستند، بلکه با پردیکیت هم هماهنگی داشته باشد.
عملکرد پردیکیت (predicate function)
سه عملکرد پردیکیت در دسترس اند:
- همه کلیدها (“keys-all”) : در این پریدیکیت لازم است که تمام جفت کلیدهای حاکم بر حساب هنگام امضای تراکنش حاضر باشند.
- هر کلیدی (“keys-any”) : در این پریدیکیت لازم است که حداقل یک جفت کلید حاکم بر حساب هنگام امضای تراکنش حاضر باشد.
- دو کلید (“keys-2”) : در این پریدیکیت لازم است که حداقل دو جفت کلید حاکم بر حساب هنگام امضای تراکنش حاضر باشند.
نویسندگان قراردادهای هوشمند آزادند که در صورت نیاز به عملکرد دقیق تری، عملکرد پریدیکیت خود را بنویسند. که البته این موضوع از بحث مقاله ما فراتر می رود. برای اطلاعات بیشتر در این باره میتوانید به این لینک مراجعه کنید.
چه زمانی دو دسته کلید یکسان هستند؟
دو دسته کلید زمانی یکسان هستند، که همه دسته کلیدهای آن ها مطابقت دارند و عملکرد پریدیکیت یکسانی دارند که از کلیدها محافظت می کند. این بدان معنی است که اگر حسابی دارید که در قرارداد کوین به صورت داده های زیر تعریف شده است:
key: “Emily” -> value: { 0.0, { [“fcca3bc5…”], “keys-all” }}
و شخصی تلاش میکند با دادههای زیر به حساب شما (که دسته کلید را در برابر کلید ارائهشده توسط فرستنده بررسی میکند) ترنسفر-کریت (transfer-create) کند :
transfer-create 1.0 “Emily” { [“fcca3bc5…”], “keys-any” })
با شکست مواجه میشود؛ زیرا دسته کلید حاکم بر حساب اشتباه است. بلاک چین تراکنش را بهعنوان فردی میبیند که از کلیدهای اشتباه استفاده میکند تا به یک حساب دسترسی پیدا کند. اگر تصور کنید که هیئت مدیره ای دور هم نشسته اند و همه آن ها باید حضور داشته باشند تا رای دهند، اما یک احمقی وارد می شود و بگوید که فقط یک نفر از آن ها نیاز استکه آنجا باشد و بقیه می توانند به خانه بروند و نیاز به رای دهی ندارند ، حتما به او می خندند! در مورد دسته کلیدها هم همین موضوع صدق می کند.
اکانت چیست؟
کادنا (Kadena) از این نظر منحصر به فرد است که هیچ مفهوم جهانی از چیستی حساب وجود ندارد. حتی توکن KDA به عنوان یک قرارداد هوشمند در شبکه وجود دارد! . در بلاک چین کادنا، هر قرارداد هوشمند می تواند جداول خود را تعریف کند و با آنها به شیوه ای قوی تعامل داشته باشد و ساختارهای داده خود را به نام اسکیما یا الگو (schema) تعریف کند.
این الگوها در داخل قرارداد برای تعریف ساختار جدول و در نتیجه نحوه ذخیره دادهها توسط قرارداد استفاده میشوند. اتفاقاً این دقیقاً همان کاری است که قرارداد کوین KDA انجام می دهد – جدولی به نام coin-table همراه با طرحی به نام coin-schema که مدل کلی تعامل با توکن ها را تعریف می کند. این طرح بسیار ساده است – کلیدهای ردیف نام حساب هستند و داده هایی که به آن ها اشاره می کند موجودی و مجموعه ای از کلیدهای حاکم بر حساب هستند. باید چیزی شبیه به این ببینید:
key: Account Name -> value: { Balance, Keyset }
در عمل، بسیاری از مردم به مدلی عادت کرده اند که بلاک چین هایی مانند اتریوم یا بیت کوین از آن استفاده می کنند، جایی که کلیدهای عمومی به عنوان یک «آدرس» در نظر گرفته می شوند و موجودی (balance) مرتبطی وجود دارد. این بسیار شبیه به چیزی است که کادنا دارد. در واقع، اگر نام اکانت خود را کلید عمومی خود قرار دهید، تقریباً یکسان به نظر می رسند:
key: “f1f6f54914f33…” -> value: { 0.0, [“f1f6f54914f33…”] }
اما اگر واقعاً میخواهید با کلاس باشید(!)، میتوانید یک نام سفارشی به عنوان نام اکانت خود داشته باشید:
key: “2Chainz” -> value: { 0.0, [“f1f6f54914f33…”] }
واقعاً مهم نیست – فقط باید آن را به خاطر بسپارید! به همین دلیل است که افراد از کلید عمومی به عنوان نام اکانت خود استفاده می کنند -راحت تر هم است چون در کلیدها وجود دارد. به مرور زمان فناوری پیشرفتهتری برای پشتیبانی از اکوسیستم کادنا به وجود میآید، و با بهبود و بهتر شدن فناوری کیف پول، ردیابی این نوع چیزها به طور خودکار انجام میشود.
ایجاد اکانت در بلاک چین کادنا
ایجاد اکانت یا حساب در بلاک چین کادنا به چند روش انجام می شود:
- هنگام ماینینگ به یک حساب و یک دسته کلید، وقتی یک بلاک برنده میشوید، پاداش با استفاده از دسته کلید و اکانتی که مشخص کردهاید، اکانت شما را بهطور خودکار ایجاد میکند. به طور پیش فرض، اگر فقط کلید عمومی خود را به جای دسته کلید خود ارسال کنید، یک دسته کلید تک کلیده ساخته می شود و پریدیکت شما روی “همه کلیدها (keys-all)” تنظیم می شود.
- کوین.کریت-اکانت (coin.create-account) اجازه می دهد یک حساب جدید با موجودی صفر ایجاد کنید (توجه داشته باشید که این کار نیاز به گس دارد، که باید توسط حساب دیگری پرداخت شود، که با کادنا امکان پذیر است).
- شخصی برای انتقال کوین ها به اکانتی که وجود ندارد، از transfer-create یا transfer-crosschain استفاده کرده است (این توابع به صورت خود به خود یک اکانت ایجاد میکنند و در صورت عدم وجود اکانت، مبلغ انتقالی را به آن واریز میکنند).
فقط ایجاد یک جفت کلید عمومی با ایجاد یک حساب کاربری در بلاکچین یکسان نیست، اما تضمین می کند که یک نام اکانت منحصر به فرد دارید. از نظر رمزنگاری، کلیدهای عمومی تقریباً تضمین شده است که به طور منحصر به فرد تولید می شوند، بنابراین مردم اغلب این دو را با هم ترکیب می کنند.
اکانت های چین ویور (Chainweaver Accounts)
کادنا (Kadena) همراه با بلاک چین خود، یک کیف پول برای مک به نام Chainweaver منتشر کرد. این کیف پول به شما این امکان را می دهد که با کلیک یک دکمه به راحتی حساب ایجاد کنید.
کیف پول های کادنا
Chainweaver پشتیبانی از سیستم عامل مک
zelcore پشتیبانی از همه سیستم عامل ها