شبکه ARC20، یک توکن ERC-20 بوده که یک توکن بومی رپد آوالانچ است که مشابه با رپدآواکس ایجاد می شود. استاندارد این توکن اجازه می دهد تا یک API استاندارد برای توکن ها در قراردادهای هوشمند پیاده سازی شود. این استاندارد قابلیت های اساسی برای انتقال توکن ها را فراهم می کند و همچنین اجازه می دهد توکن ها تایید شوند تا بتوانند توسط شخص ثالث زنجیره ای دیگر خرج شوند، کاملاً با ERC-20 سازگار است.
توکن بومی Avalanche چیست؟
توکن بومی Avalanche (ANT) یک توکن با مقدار ثابت یا متغیر است که در X-Chain ایجاد شده است. این توکنها را میتوان با سرعتهای بسیار سریع در X-Chain مبادله کرد، که از عملکرد برتر یک DAG نسبت به یک زنجیره خطی بهره میبرد. در این متن، توکنهای بومی آوالانچ شامل توکنهای غیرقابل تعویض (NFT) ایجاد شده در X-Chain نمیشوند.
چرا ANT را از X-Chain به C-Chain منتقل می کنیم؟
عملکرد قرارداد هوشمند مستلزم یک مرتبه انتقال حالت (معاملات) است. در نتیجه، ANT ها برای استفاده در قراردادهای هوشمند باید به زنجیره C منتقل شوند.
توکن های C-Chain
آواکس
AVAX همان نقشی را در C-Chain ایفا می کند که ETH در شبکه اتریوم انجام می دهد. هنگام ایجاد قرارداد هوشمند، هزینه تراکنش (هزینه گس) را با آواکس می پردازید. می توانید آواکس را بین حساب ها انتقال دهید و آواکس را با استفاده از ابزارها و کتابخانه های بومی EVM به یک قرارداد هوشمند ارسال کنید.
ANT
با این حال، ANT ها هیچ مشابهی در EVM ندارند. بنابراین، C-Chain برای پشتیبانی از نگهداری موجودی ANT و انتقال ANT ها در C-Chain تغییراتی دارد.
C-Chain یک نقشه در فضای ذخیره سازی هر حساب برای پشتیبانی از ANT ها نگه می دارد. این توکن ها را می توان به X-Chain بازگرداند یا می توان آنها را در C-Chain با استفاده از nativeAssetCall و nativeAssetBalance استفاده کرد. NativeAssetCall و NativeAssetBalance قراردادهای از پیش کامپایل شده ای هستند که در فاز 2 Apricot منتشر شده اند و امکان استفاده غنی تر از ANT ها را در C-Chain می دهند.
NativeAssetCall
یک تراکنش EVM از فیلدهای زیر تشکیل شده است:
مقدار اسکالر nonce برابر با تعداد تراکنش های ارسال شده توسط فرستنده است.
هزینه گس مقدار اسکالر برابر با تعداد Wei (1 Wei = 10^-18 AVAX) که به ازای هر واحد گس برای اجرای این تراکنش پرداخت می شود.
gasLimit مقدار اسکالر برابر با حداکثر مقدار گس است که باید در اجرای این تراکنش استفاده شود.
ERC-20 چیست؟
ERC-20 یک نوع توکن استاندارد شده در اتریوم است. این مجموعه استانداردی از توابع و رویدادها را ارائه می دهد که به یک قرارداد هوشمند اجازه می دهد تا به عنوان یک توکن در اتریوم عمل کند. یک ERC-20 توسط یک قرارداد هوشمند اجرا می شود، به این معنی که آنها وضعیت خود را حفظ می کنند. یعنی اگر حساب شما دارای 5 مورد از یک ERC-20 معین باشد، آنگاه داده هایی که مالکیت حساب شما را می دهد در واقع در قرارداد آن ERC-20 ذخیره می شود. در مقابل، موجودی ETH در فضای ذخیره سازی حساب شما نگهداری می شود.
از ANT تا شبکه ARC20
برخلاف ERC-20، توکنهای بومی آوالانچ (ANT) مستقیماً در حسابی که مالک آنها است ذخیره میشوند. ANT ها را می توان به منظور قابل استفاده در قراردادهای هوشمند در C-Chain رپد کرد. ما این دارایی رپد شده را ARC20 می نامیم. برای انجام این کار، یک فیلد شناسه دارایی را به یک قرارداد معمولی ERC-20 اضافه می کنیم تا دارایی اساسی را که شبکه ARC20 رپد می کند، نشان دهد.
علاوه بر این، شبکه ARC20 از دو عملکرد اضافی پشتیبانی می کند: برداشت و سپرده. برای پیاده سازی این، ARC20 ها باید از قراردادهای از پیش کامپایل شده استفاده کنند: nativeAssetCall و nativeAssetBalance.
ERC-20 ها معمولاً یک میدان عرضه کلی دارند، اما این می تواند در زمینه یک دارایی بسته بندی شده معنای متفاوتی داشته باشد. کل عرضه میتواند نشاندهنده عرضه کل دارایی بدون رپد شده در کل پلت فرم یا مقدار دارایی در قرارداد رپدشده باشد. برای سادگی، از عرضه کل برای نشان دادن کل عرضه دارایی رپد شده در قرارداد ARC20 استفاده می کنیم.
سپرده های شبکه ARC20
برای واریز وجه به یک شبکه ARC20، باید مبلغ سپرده را برای قرارداد ARC20 ارسال کرده و سپس تابع سپرده قرارداد را ایجاد کنیم تا قرارداد بتواند سپرده را تأیید کند و موجودی تماس گیرنده را به روز کند. این شبیه به WETH (ETH رپد شده) در اتریوم است. با WETH، این را می توان با یک تماس ساده انجام داد زیرا آن روش به تماس گیرنده اجازه می دهد هم ETH ارسال کند و هم یک قرارداد هوشمند را به صورت اتمی فراخوانی کند. با ARC20 های غیر آواکس، nativeAssetCall همین عملکرد را برای ANT ها در C-Chain می دهد.
این assetAmount از assetID را به آدرس قرارداد ARC20 منتقل میکند و سپس Deposit را در قرارداد، فراخوانی میکند. تابع سپرده از مقدار قبلی کل عرضه برای محاسبه میزان شناسه دارایی در سپرده استفاده می کند. از آنجایی که nativeAssetCall تماس گیرنده خود را به قراردادی که فراخوانی می شود منتشر می کند، هنگامی که واریز فراخوانی می شود، قرارداد ARC20 msg.sender را به عنوان تماس گیرنده اصلی nativeAssetCall می بیند و می تواند موجودی را از طرف آدرس صحیح افزایش دهد.
نکته: اگر شخصی وجوهی را بدون فراخوانی سپرده به قرارداد ارسال کند، موجودی شناسه دارایی قرارداد ممکن است با کل عرضه خارج شود. در این حالت، حساب بعدی که دیپوزیت را فراخوانی می کند، اعتبار وجوه ارسال شده قبلی را دریافت می کند.
برداشت های شبکه ARC20
هنگامی که یک شبکه ARC20 درخواست برداشت دریافت می کند، به سادگی تأیید می کند که موجودی حساب کافی وجود دارد، موجودی و کل عرضه را به روز می کند و وجوه را با nativeAssetCall برای برداشت کننده می فرستد.
چگونه یک کیف پول ARC20 بسازم؟
مرحله 1: برنامه را باز کنید، روی نماد کیف پول در گوشه پایین سمت راست کلیک کنید، سپس روی Manage کلیک کنید.
مرحله 2: روی Add Wallet کلیک کنید، سپس: روی نماد Avalanche (AVAX C-Chain, ARC20) کلیک کنید تا یک کیف پول Avalanche C-Chain ایجاد کنید، یا یک کیف پول چند زنجیره ای ایجاد کنید تا کیف پول های بیشتری با همان عبارت عبور داشته باشید.