با رمزگشایی یک معامله اتریوم ، قسمت یکی از سری وبلاگ های جدید غیرمتمرکز Trustology (DEFI) را بخوانید.
اگر می خواهید در اتریوم کار جالبی انجام دهید ، باید با قراردادهای هوشمند ارتباط برقرار کنید. این که آیا شما می خواهید نشانه های ERC20 مانند Link یا DAI را ارسال کنید ، با نشانه های غیر قارچ مانند هنر دیجیتال تجارت کنید ، یا به رمزنگاری خود علاقه کسب کنید و با سایر محصولات Defi تعامل داشته باشید ، یک قرارداد هوشمند همیشه درگیر است.
با این حال ، قراردادهای هوشمند به طور فزاینده ای پیچیده می شوند. از قراردادهای پروکسی برای ارتقاء قابلیت ارتقاء ، تا قراردادهای چند طرفه که امکان انجام معاملات را فراهم می کنند ، آنچه ما می بینیم ، تکامل سریع ویژگی هایی است که امکان حرکت دارایی های شخص را فراهم می کند.
شما همچنین معاملات Defi را دریافت کرده اید ، آنها اغلب توسط شما یا کد شما تولید نمی شوند ، بنابراین باید تأیید کنید که این کار را انجام می دهد که فکر می کنید. علاوه بر این ، درک یک تماس روش برای:
- دیدن و دانستن اینکه روش های قرارداد با آنها تماس می گیرد همان چیزی است که شما انتظار دارید
- دیدن انواع پارامترها و مقادیری که به شما امکان می دهد نحوه عملکرد قراردادها را درک کنید
- تجزیه و تحلیل یک قرارداد برای تولید آمار در مورد تماس های روش
- تعامل با آدرس های کلیدی
- نوشتن قوانین خود برای تصمیم گیری در مورد اینکه کدام معاملات را امضا کنید (بعداً بیشتر)
- اگر دوست دارید از آن لذت ببرید
در بخش اول از سریال های جدید وبلاگ Defi ، ما آنچه را که در یک معامله اتریوم اتفاق می افتد ، نشان می دهیم و چگونه می توانید از بستر کیف پول نگهبان Trustology برای تعامل با قراردادهای هوشمند به روشی بسیار امن تر استفاده کنید. این دانش وقتی در مورد فایروال ، وب سایت ها و سایر خدمات DEFI که ارائه می دهیم ، پایه خوبی را در پست های بعدی به شما ارائه می دهد.
ما قصد داریم با یک قرارداد ایمن Gnosis شروع کنیم و معامله ای که کاربر ارسال می کند که DAPP ایمن Gnosis ایجاد می کند.
Gnosis Safe یک قرارداد کیف پول محبوب است که توسط Gnosis اجرا می شود. یک سازمان چند کاربر که می خواهد از Gnosis Safe استفاده کند ، ابتدا باید لیستی از حساب ها و آستانه مورد نیاز امضاهای مورد نیاز برای ارسال معامله را تعریف کند. کاربران معامله را به صندوق امانات ارسال می کنند ، که مجاز به اجرای معامله فقط در صورت دستیابی به آستانه مورد نیاز است. به این ترتیب ، کاربران کنترل محکم تری از بودجه خود دارند.
Gnosis Safe دارای ویژگی های زیادی از جمله امضای آفلاین (که باعث صرفه جویی در هزینه های گاز می شود) اما در حال حاضر ما می خواهیم به روش اصلی برای اجرای معامله نگاهی بیندازیم.
اولین بندر تماس: با اترسان شروع کنید
بیایید با معامله ای که توسط Etherscan مشاهده می شود شروع کنیم و ببینیم که آیا می توانیم خروجی آنها را انجام دهیم.

معامله فوق از کاربری است که با قرارداد هوشمند Safe Gnosis در Maiet Ethereum در تعامل است و می توانیم جزئیات را مستقیماً در Etherscan مشاهده کنیم.
بیایید با نگاه کردن به قسمت "داده" شروع کنیم. این زمینه ای است که اتریوم برای تصمیم گیری در مورد قرارداد "به" (یا "تعامل با" در اترسان) از چه روشی استفاده می کند.
در اینجا بار کامل داده در زیر آورده شده است. همانطور که می بینید ، بسیاری از ارزش های هگزا. درک این مسئله دشوار به نظر می رسد اما با کمی مهارت و دانش می توانیم این مسئله را به قسمت های مهم تقسیم کنیم.

از ابتدا شروع کنید
تمام زمینه های "داده" در معامله اتریوم شامل نام روشی است که قرار است خوانده شود. این اولین چیزی است که باید به آن نگاه کنیم. اتریکان این را برای ما در بخش "داده های ورودی" نشان می دهد:
در این بخش می توانیم ببینیم که اترکان به ما چه داده است:
| عملکرد: exectransaction (آدرس به ، مقدار uint256 ، داده های بایت ، عملکرد uint8 ، uint256 safetxgas ، uint256 datagas ، uint256 gaspprice ، آدرس gastoken ، آدرس refundreceiver ، امضاهای بایت) |
بنابراین ، چگونه آنها این کار را کردند؟
خوب ، اولین چیزی که ما به آن نیاز داریم استفاده از 4 بایت اول (8 کاراکتر اول هگز) از داده های ورودی است که عبارت است از: 6A761202
این مقدار هگز از گرفتن نام روش و انواع آرگومان آن ، از بین بردن هر فضای سفید ، گرفتن هش keccak از نتیجه ، و سپس گرفتن 4 بایت اول آن و نمایش آن در هگز گرفته شده است. با من تا الان؟
توجه: نام پارامترها در هش گنجانده نشده است ، فقط انواع. این بدان معنی است که قراردادهای مختلف می توانند یکسان باشند اما پارامترهای خود را متفاوت و بالقوه می نامند و منطق متفاوتی دارند. بنابراین پیگیری قراردادی که این روش متعلق به آن است ، معقول است. یک وب سایت مفید وجود دارد که این موارد را ردیابی می کند. https://www.4byte. directory/ را ببینید و وارد هش 6A761202 شوید. در زمان نوشتن فقط 1 روش ثبت شده وجود دارد.
ما منبع قرارداد Gnosis را داریم ، بنابراین می دانیم نام روش و پارامترها چیست. ما آنها را از اینجا می گیریم.
در JavaScript ، موارد زیر هش keccak از روش ما به علاوه پارامترها را صادر می کند:
// یک رمزگذار keccak را وارد کنید یا واردات خود را بنویسیداز "../decoder/keccak" ؛
روش const = `exectransaction (آدرس به ، مقدار uint256 ، داده های بایت ، عملکرد uint8 ، uint256 safetxgas ، datagas uint256 ، uint256 gaspprice ، آدرس gastoken ، آدرس repundreceiver ، امضاهای بایت)` `
// regex patte to remove the word before a comma or closing bracket export const removeArgsFromMethod = (method: string) => retu method.replace(/sw+(,|))/g, (_, commaOrBracket) => commaOrBracket);>;
// نام آرگومان را حذف کرده و هر فضایی را حذف کنید const آماده شده = removeArgsFromMethod (روش). مکان (/s/g ، "")
// keccak hash از روش const keccakhashofmethod = keccak (buffer. from (آماده شده))
// اول 4 بایت const MethodID = keccakhashofmethod. slice (0،4) . tostring ("hex") // 6a761202
توجه: اگر کد منبع قرارداد هوشمند را ندارید ، نمی توانید هش را برای بررسی تولید کنید و این کار با انواع پارامتر دقیق سخت تر خواهد بود.
خروجی از آن JavaScript 6A761202 است که با 4 بایت اول (8 کاراکتر هگز) از بار داده ها مطابقت دارد. عالی. ما مشخص کردیم که روشی که در آن خوانده می شود در واقع "exectrancation" با 10 پارامتر است.
حال اگر به Etherscan برگردید و بر روی دکمه Decode Data Data کلیک کنید ، می بینید که چگونه Etherscan بار داده را بارگذاری کرده و آن را به 10 پارامتر از جمله انواع شکسته می کند. باز هم ، آنها چگونه این کار را انجام داده اند؟

یک دسته را روی پارامترها بگیرید
کار بعدی ما این است که تمام پارامترهایی را که به Excectrancaction منتقل شده اند ، تقسیم کنیم و ببینیم که آنها چیست.
قبل از انجام این کار یک یادداشت سریع در مورد بایت به تبدیل هگز. بسیار ساده 1 بایت از داده ها = 2 کاراکتر هگز. بنابراین ، هر زمان که یک رشته از شخصیت های هگزا را می بینید ، می توانید تعداد کاراکترها را 2 تقسیم کنید تا اندازه آن در بایت بدست آورید. هر "0x" در ابتدا در محاسبه واقعی نادیده گرفته می شود.
اکنون ، برای رمزگشایی پارامترهای روش.
بیایید دوباره به داده ها نگاهی بیندازیم اما این بار آن را به رشته های 32 بایت (64 کاراکتر هگز) تقسیم می کنیم. چرا؟از آنجا که اتریوم از 32 بلوک بایت استفاده می کند و تقریباً همه انواع ابتدایی 32 بایت هستند. هر چند استثنائات وجود دارد ، مانند نوع "بایت" که بعداً خواهیم دید.
بنابراین ، هنگامی که ما از MethodID (0x6A761202) جدا شدیم و سپس داده های باقیمانده را به 32 قطعه بایت (یا 64 کاراکتر) تقسیم می کنیم ، می توانیم شروع به دیدن چیز جالب تری کنیم.
روش: 0x6a761202

این مقادیر پارامترهای ورودی عملکرد exectransaction است. این کاملاً ساده نیست ، بنابراین بیایید از طریق هر 32 مقدار بایت به نوبه خود کار کنیم. ستون 3 جدول بالا نشان می دهد که هر یک از مقادیر به پارامترهای عملکرد exectransaction نقشه می کشند.
به عنوان مثال ، اولین پارامتر (پارامتر "" به "):
از نوع آدرس است.
آدرس های Ethereum 20 مقدار بایت هستند ، بنابراین به صفر داده شده است تا در یک مقدار 32 بایت قرار بگیرند. برای به دست آوردن آدرس واقعی ، ما فقط باید 20 بایت آخر و پیشوند 0x را استخراج کنیم.
در این حالت می شود:
(هوم. این قرارداد تتر است)
در حقیقت ، حذف بالشتک صفر نحوه رمزگشایی بیشتر پارامترهای ساده مانند UINT8 ، UNIT256 و غیره است.
پارامتر بعدی "مقدار" است. ما فرض می کنیم این است که چقدر ارزش لازم برای انتقال ایمن از Gnosis را دارد. مقدار آن صفر است.(این ارزش اتر به یاد داشته باشید)
پارامتر بعدی جالب است ، از انواع بایت است. بایت طول متغیر است بنابراین چه مدت طول می کشد؟مقدار این است:
این مقدار نشانگر جبران در سحر و جادو بایت ها از "روش" از محل شروع داده های واقعی است. آن را به عنوان یک نشانگر فکر کنید ، شما را به جایی که باید به دنبال این اطلاعات باشید ، هدایت کنید. بنابراین ما باید 0x140 بایت را به شخصیت های هگز تبدیل کنیم.
0x140 (بایت در هگز) = 320 بایت در اعشاری
320 بایت در اعشاری x 2 = 640 کاراکتر در هگز
بنابراین داده ها از ابتدا 320 بایت آغاز می شود و بنابراین 640 کاراکتر هگزا یا 10 ردیف در امتداد آن قرار دارند. در JavaScript ، به شرح زیر خواهد بود:
const numberofbytesinhex = 140
const numberOfHexCharacters = parseint (numberofbytesinhex ، 16) * 2 ؛// = 640
رفتن به ردیف 10 64 کاراکتر اولین طول داده ها را نشان می دهد (این نیاز به همان تبدیل در بالا است).
در طول 136 شخصیت هگز رمزگشایی می شود.
بنابراین سرانجام در ردیف یازدهم داده ها پس از 136 کاراکتر شروع و به پایان می رسد. این بدان معنی است که قسمت داده ما به شرح زیر است:
به طور خلاصه ، برای یک قسمت بایت ، 32 بایت اول اشاره گر به جایی است که داده ها شروع می شود ، یک بار در آنجا ، 32 بایت بعدی به شما می گوید که داده ها چقدر طول می کشد. سپس آن بایت های زیادی را می خوانید. اگر داده ها به یک بلوک 32 بایت ختم نشوند ، آن را به هم ریخته می شود ، بنابراین هر آنچه در مرحله بعدی است ، در بلوک 32 بایت بعدی شروع می شود.
دوباره به ارزش نگاه می کنیم:
کمی آشنا به نظر می رسداین ماده دارای یک روش 4 بایت و سپس 2 قطعه بایت 2 32 بایت (2 تعداد 64 کاراکتر هگز) است. این یک روش دیگر است!
در حقیقت ، ما می توانیم فوراً تشخیص دهیم که این معامله به خودی خود یک معامله انتقال ERC20 است زیرا امضای روش معروف A9059CBB را دارد.
(نکته: به https://emn178. github. io/online-tools/keccak_256.html بروید و در انتقال (آدرس ، uint256) تایپ کنید و می بینید که 8 کاراکتر اول در واقع A9059CBB هستند))
بنابراین ، می توانیم ببینیم که این معامله gnosis برای تماس با یک قرارداد دیگر آدرس 0xDAC17F958D2EE523A22062062069994597C13D831EC7 با "داده":
که یک تماس "انتقال" ERC20 است. سپس می توانیم از آنچه در بالا آموخته ایم برای محاسبه بازگشتی جزئیات این تماس داده با استخراج بایت های متدید و شکستن داده ها و نگاه کردن به پارامترها استفاده کنیم.
نگاهی بیندازید و ببینید آیا می توانید گیرنده و ارزش نشانه های ارسال شده به قرارداد Tether را کار کنید.
نتیجه
اطلاعات زیادی در اینجا وجود داشت و ما هر پارامتر را طی نکردیم ، اما امیدوارم که بتوانید مشاهده کنید که بتوانید داده های معامله را خراب کنید و با کار کردن از طریق یک بار داده به صورت روشمند ، همیشه می توانید درک کنید که چه چیزی استاتفاق می افتد
ما دیدیم که چگونه برای یک معامله قرارداد Gnosis می توانیم آن را به قسمت های تشکیل دهنده تقسیم کنیم و شاهد روش و انواع پارامترها و چگونگی تجزیه آنها در استدلال های مفید بودیم.
ما همچنین دیدیم که چگونه ، در این مورد ، در واقع یک معامله در یک معامله وجود داشت. معامله ایمن Gnosis فقط بسته بندی انتقال ERC20 بود. این به طور مؤثر در حال حرکت نشانه های USDT از عرفان ایمن به جایی دیگر بود.
در وبلاگ بعدی ما ، خواهیم دید که چگونه می توانیم درک خود را از معاملات Ethereum انجام دهیم تا یک تماس با قرارداد DEFI را تجزیه کنیم تا قوانین را اعمال کنیم تا تصمیم بگیریم که آیا می خواهیم امضا کنیم یا ارسال کنیم. این چیزی است که Trustology در فایروال جدید خود برای محافظت از مشتریان از امضای / ارسال معاملات که معیارهای خاصی را برآورده نمی کند ، از آن استفاده می کند. Defi Firewall اولین کسی است که در مجموعه خدمات Trustology قصد دارد برای کاربران نهادی که به دنبال پشتیبانی از نشانه های جدید در DEFI یا کشف فرصت های تحمل بازده هستند ، راه اندازی کند. اعلان ها و جریان ها برای تکمیل راه حل فعلی فایروال ما در لیست ما قرار دارند. در حال حاضر ، ما تنها کیف پول حضانت هستیم که با Metamask ادغام می شویم ، که به موسسات اجازه می دهد تا از امنیت یک سکوی کیف پول بیمه شده بیمه شده ، نوآوری های خود را از بین ببرند.
برای دسترسی به کد نشان داده شده در این وبلاگ و موارد دیگر ، لطفا اینجا را کلیک کنید.
برای پرس و جو در مورد چت خدمات Defi ما با ما.
درباره اعتماد شناسی
با حمایت Consensys و دو سرمایه گذاری Sigma ، و در سال 2017 تأسیس شد ، Trustology با فرض امکان آزادی بیشتر برای معامله به روشی منصفانه و کارآمد تأسیس شد. با آوردن دنیای فناوری blockchain و رمزنگاری ها به شرکت کنندگان در بازار جدید ، ما معتقدیم که این امر به این امر کمک می کند تا این اتفاق بیفتد.
به همین دلیل ما TrustVault را ساختیم-یک سرویس کیف پول نگهبان سریع ، کاربر پسند ، بیمه شده و بسیار امن برای موسسات و افراد طراحی شده برای رسیدگی به کاستی های امنیتی و مالکیت راه حل های موجود امروز. در Trustology. io درباره ما بیشتر بدانید.
خواندن توصیه می شود:
اگر می خواهید در مورد معاملات Ethereum اطلاعات بیشتری کسب کنید ، مقالات خوبی وجود دارد ، با این کار شروع می کنید:
- درک معامله اتریوم
- بار پرداخت معامله
استراتژیهای اسکالپ...
ما را در سایت استراتژیهای اسکالپ دنبال می کنید
برچسب :
نویسنده : جعفر بدیعی
بازدید : <-PostHit->
تاريخ : دوشنبه
2 مرداد
1402 ساعت: 11:16