اگر یک DApp بعد از اتصال به تراست والت دکمه Sign را نشان داد، این درخواست را با یک انتقال ارز معمولی یکی ندانید. Sign Message معمولاً یک پیام یا داده را با کلید خصوصی شما امضا میکند و لزوماً تراکنشی روی بلاکچین ثبت نمیشود. به همین دلیل در بسیاری از موارد Gas هم ندارد.
اما «تراکنش نیست» مساوی با «بیخطر است» نیست. بعضی Signatureها فقط برای Login یا اثبات مالکیت Wallet استفاده میشوند، در حالی که بعضی دیگر میتوانند یک سفارش، Permit یا مجوز استفاده از دارایی را معتبر کنند. استاندارد ERC-2612 برای مثال اجازه میدهد Allowance یک توکن با پیام امضاشده تغییر کند، بدون اینکه کاربر ابتدا تراکنش کلاسیک approve را خودش ارسال کند.
پس قبل از زدن Sign، مهمترین سؤال این نیست که «کارمزد دارد یا نه؟»؛ باید بفهمید دقیقاً چه چیزی را امضا میکنید و این امضا چه اختیاری ایجاد میکند.
تفاوت Connect، Sign Message، Approve و Confirm چیست؟
این چهار مرحله ممکن است پشت سر هم در یک DApp ظاهر شوند، اما اثر یکسانی ندارند.
درخواست | چه اتفاقی میافتد؟ | معمولاً On-chain است؟ | معمولاً Gas دارد؟ | مهمترین نکته |
|---|---|---|---|---|
| Wallet و آدرس عمومی به DApp متصل میشوند | خیر | خیر | اتصال بهتنهایی مجوز خرجکردن توکن نیست |
| یک پیام یا داده با کلید Wallet امضا میشود | معمولاً خیر | معمولاً خیر | خود متن و هدف Signature را بررسی کنید |
| به Spender یا Contract اجازه استفاده از توکن داده میشود | در مدل کلاسیک بله | معمولاً بله | Token، Spender و مقدار مجوز مهماند |
| تراکنش امضا و برای اجرا روی شبکه ارسال میشود | بله | معمولاً بله | مقصد، دارایی، مبلغ، Contract و Fee را بررسی کنید |
یک استثنای مهم باعث میشود این جدول را خیلی مکانیکی تفسیر نکنید: Permit ممکن است از نظر ظاهر یک Sign Message باشد، اما نتیجه آن ایجاد یا آمادهکردن یک مجوز خرجکردن توکن باشد. یعنی «پیام» و «مجوز مالی» همیشه دو دنیای جدا نیستند.
همچنین تنها به نوشته روی دکمه اعتماد نکنید. کلمه Approve گاهی فقط به معنی «تأیید این پنجره» در رابط کاربری است و لزوماً به تابع ERC-20 approve اشاره ندارد. نوع Request و جزئیاتی که Wallet نمایش میدهد معیار بهتری برای تشخیص است.
اگر هنوز در مرحله اتصال به سایت هستید، آموزش اتصال تراست والت به DAppها با WalletConnect مسیر Connect و مدیریت Session را جداگانه توضیح میدهد.

Sign Message در تراست والت دقیقاً چه کاری انجام میدهد؟
وقتی تراست والت یک Message را Sign میکند، Private Key از Wallet خارج نمیشود. Wallet با کلید خصوصی یک امضای رمزنگاریشده تولید میکند که طرف مقابل میتواند با آدرس عمومی شما صحت آن را بررسی کند.
یکی از کاربردهای عادی این قابلیت ورود بدون رمز عبور است. یک DApp میتواند پیامی با دامنه، آدرس Wallet، زمان یا Nonce بسازد و از شما بخواهد آن را امضا کنید. سرور با بررسی Signature مطمئن میشود فردی که درخواست ورود داده واقعاً کلید مربوط به آن Address را در اختیار دارد.
Trust Wallet برای شبکههای EVM از روشهایی مانند personal_sign برای امضای پیام و eth_signTypedData_v4 برای داده ساختاریافته مبتنی بر EIP-712 پشتیبانی میکند. مستندات توسعهدهندگان Trust Wallet نیز احراز هویت و اثبات مالکیت آدرس را از کاربردهای رایج امضای پیام معرفی میکند.
اما کاربرد Sign Message به Login محدود نیست. Signature میتواند برای مواردی مانند تأیید سفارش در Marketplace، رأیدادن در بعضی سرویسها، Permit و سایر Authorizationها هم استفاده شود. بنابراین یک پیام بدون Gas ممکن است از نظر مالی بسیار مهمتر از یک «ورود ساده» باشد.
یک Sign Message عادی چه شکلی دارد؟
در یک درخواست قابلفهم معمولاً میتوانید ارتباط آن را با کاری که خودتان شروع کردهاید تشخیص دهید. مثلاً وارد DApp مشخصی شدهاید، Login را زدهاید و Wallet پیامی برای ورود همان دامنه نمایش میدهد.
در چنین حالتی وجود مواردی مثل Address، Domain، Nonce یا زمان درخواست طبیعی است. ولی حتی اینجا هم دامنه باید همان سایتی باشد که واقعاً باز کردهاید.
اگر هیچ عملی انجام ندادهاید و ناگهان پنجره Sign ظاهر میشود، دلیل درخواست باید قبل از ادامه مشخص شود.

Blind Signing چیست و چرا خطرناک است؟
Blind Signing یعنی کاربر چیزی را امضا کند در حالی که جزئیات واقعی درخواست را نمیبیند، نمیفهمد یا نمیتواند آن را با کاری که قصد انجامش را داشته تطبیق دهد.
ممکن است سایت روی دکمه خود نوشته باشد Claim, Verify یا Login، اما آنچه برای امضا به Wallet میفرستد موضوع دیگری باشد. ظاهر صفحه DApp هیچ تضمینی درباره محتوای Signature ایجاد نمیکند.
در Trust Wallet بهتر است Blind Signing را بیشتر بهعنوان یک وضعیت خطرناک هنگام امضا بشناسید، نه اینکه حتماً دنبال گزینهای با همین نام در تنظیمات برنامه بگردید. در کیف پولهای سختافزاری مانند Ledger، اصطلاح Blind Signing میتواند نام یک تنظیم فنی مشخص هم باشد؛ آن موضوع با مفهوم عمومی Blind Signing در این مقاله یکسان نیست.
Trust Wallet در توضیحات فعلی Security Scanner نیز روی کمکردن فاصله بین دادههای فنی و اثر واقعی درخواست تأکید دارد و تلاش میکند در تراکنشهای تحت پوشش بهجای Hex Data صرف، نتیجهای مثل انتقال دارایی یا ایجاد Spending Permission را قابلفهمتر نمایش دهد.
Blind Signing فقط مشکل کاربران تازهکار نیست
حتی کسی که چند سال با DeFi کار کرده ممکن است بهخاطر عجله، FOMO یا اعتماد به نام یک پروژه، درخواست را بدون بررسی Sign کند.
یک سایت معتبر نیز میتواند از طریق دامنه جعلی تقلید شود. حتی خود پروژه معتبر ممکن است آسیبپذیری پیدا کند یا Front-end آن دچار مشکل شود. به همین دلیل «من این پروژه را میشناسم» جای بررسی Request فعلی را نمیگیرد.
Raw Data در درخواست Sign یعنی چه؟
Raw Data به دادهای گفته میشود که به شکل فنی و کمخوانا در اختیار Wallet قرار گرفته است؛ برای مثال رشتههای طولانی Hex، Bytes یا اطلاعات Encodingشدهای که کاربر عادی از روی آنها نمیتواند نتیجه واقعی درخواست را تشخیص دهد.
نمایش چیزی شبیه:
0x7f3a...
به شما نمیگوید این داده قرار است Login ایجاد کند، سفارش NFT بسازد یا مجوزی برای یک Contract صادر کند.
EIP-712 با هدف بهترشدن همین وضعیت طراحی شده است. این استاندارد اجازه میدهد بهجای یک رشته مبهم، دادهها بهصورت ساختاریافته شامل فیلدهایی مانند Domain، Contract، Address، Value یا سایر پارامترها برای بررسی کاربر آماده شوند. با این حال، قابلخواندنشدن یک درخواست آن را خودکار امن نمیکند. یک Permit مخرب هم میتواند کاملاً ساختاریافته و خوانا باشد.
اگر Wallet فقط Raw Data نشان میدهد و نمیتوانید با اطمینان بفهمید چه چیزی را امضا میکنید، انتخاب امن این است که Sign را متوقف کنید. صرف اینکه سایت میگوید «این پیام فقط برای Verification است» دلیل کافی برای امضای دادهای نیست که قابل بررسی نیست.
چه درخواستهای Sign مشکوکاند؟
مشکوکبودن یک Request همیشه از یک کلمه خاص مشخص نمیشود. باید ببینید درخواست با کاری که خودتان شروع کردهاید همخوانی دارد یا خیر.
برای مثال، اگر فقط قصد Login دارید اما داخل Message عباراتی مانند Spender، Allowance، Permit، مقدار Token، Operator یا setApprovalForAll میبینید، قبل از ادامه باید دقیقاً بدانید چرا یک ورود ساده به چنین مجوزی نیاز دارد.
به این نشانهها حساستر باشید:
پنجره Sign بدون اینکه خودتان عملی در DApp شروع کرده باشید ظاهر شده است؛
Domain یا
verifyingContractبا سرویس مورد انتظار شما همخوانی ندارد؛مقدار Token یا Permission بسیار بیشتر از عملی است که قصد انجام آن را دارید؛
Signature تاریخ انقضای غیرعادی یا بسیار طولانی دارد؛
سایت چند Signature پشتسرهم درخواست میکند ولی علت آن را توضیح نمیدهد؛
Wallet فقط Raw Data نشان میدهد و اثر درخواست روشن نیست؛
Security Scanner هشدار Risky، High Risk یا رفتار غیرمنتظره نشان میدهد؛
سایت با عباراتی مثل «فقط چند ثانیه فرصت دارید» شما را برای Sign سریع تحت فشار قرار میدهد.
وجود واژه Permit بهتنهایی به معنی کلاهبرداری نیست. Permit یک استاندارد واقعی و کاربردی است. مشکل زمانی شروع میشود که نمیدانید به چه Spender، برای چه Token، با چه Value و تا چه زمانی اختیار میدهید. ERC-2612 مشخصاً اجازه میدهد Allowance به کمک Signature تغییر کند و همین موضوع نشان میدهد چرا «پیام بدون کارمزد» را نباید بیاثر فرض کرد.
قبل از Sign چه چیزهایی را بررسی کنیم؟
لازم نیست برای هر Signature متخصص Smart Contract باشید. هدف این است که بتوانید منطق درخواست را توضیح دهید.
اول ببینید چه عملی را خودتان شروع کردهاید. اگر Login زدهاید، انتظار یک پیام مرتبط با Authentication دارید؛ اگر Swap شروع کردهاید، Approval یا تراکنش مربوط به همان Token منطقیتر است.
بعد Domain و Account را بررسی کنید. آدرس Wallet باید همان حسابی باشد که قصد استفاده از آن را دارید و Domain باید با سایت اصلی پروژه تطبیق داشته باشد.
اگر Typed Data نمایش داده میشود، فیلدهای مهم را بخوانید. نامها در هر پروتکل متفاوتاند، اما مواردی مثل spender، value، deadline، verifyingContract و Network میتوانند ماهیت درخواست را روشن کنند.
Contract Address را نیز فقط از همان سایتی که Request را ساخته دوباره کپی نکنید. اگر درخواست مالی یا Permission مهمی است، آدرس را با مستندات رسمی پروژه یا Explorer معتبر همان شبکه تطبیق دهید.
و مهمتر از همه: اگر بعد از بررسی هنوز نمیتوانید در یک جمله توضیح دهید این Signature چه کاری انجام میدهد، آن را Sign نکنید.
برای اصول گستردهتر مثل دامنههای جعلی، عبارت بازیابی، امنیت گوشی و مدیریت DAppها، راهنمای امنیت تراست والت را ببینید.
آیا Cancel کردن Sign در تراست والت هزینه دارد؟
اگر یک Sign Message هنوز در مرحله Review است و آن را Reject یا Cancel کنید، تراکنشی روی بلاکچین ثبت نشده و Network Fee پرداخت نمیکنید.
خود امضای Off-chain نیز در حالت معمول Gas ندارد. هزینه شبکه زمانی مطرح میشود که یک عملیات On-chain ارسال شود.
برای Transaction هم اگر هنوز آن را امضا و Broadcast نکردهاید، برگشتن از صفحه Review هزینه شبکه ایجاد نمیکند. اما پس از ارسال تراکنش به شبکه، موضوع متفاوت است و دیگر نباید آن را با Cancel کردن یک پنجره Sign یکی دانست.
یک نکته امنیتی مهمتر هم وجود دارد: اگر Signature را قبلاً تولید کردهاید، بستن سایت یا زدن Disconnect آن امضا را پس نمیگیرد. اعتبار و امکان ابطال Signature به نوع پیام، Nonce، Deadline و پروتکلی که آن را بررسی میکند بستگی دارد.
به همین دلیل تصمیم درست باید قبل از Sign گرفته شود، نه بعد از آن.
Sign Message و Token Approval چه فرقی دارند؟
در مدل کلاسیک ERC-20، تابع approve مقدار مشخصی Allowance برای یک spender ثبت میکند و یک تغییر On-chain است. Spender بعداً میتواند در محدوده همان Allowance از transferFrom استفاده کند.
Sign Message در تعریف ساده چنین تغییری را مستقیماً روی بلاکچین ثبت نمیکند.
با این حال Permitها این مرز را باریکتر کردهاند. در ERC-2612 کاربر پیامی ساختاریافته را Sign میکند و آن Signature میتواند بعداً برای ثبت Allowance روی قرارداد Token استفاده شود. حتی ممکن است Relayer طرف مقابل آن را روی شبکه ارسال کند.
پس بهتر است بهجای این قانون اشتباه که:
«Sign Message امن است ولی Approve خطر دارد»
این قانون را به خاطر بسپارید:
هر Request را براساس اختیار و اثری که ایجاد میکند بررسی کنید، نه براساس اینکه دکمه آن Sign است یا Approve.
اگر Approval قبلاً ایجاد شده و میخواهید مجوزهای فعال را بررسی یا حذف کنید، ادامه موضوع در آموزش لغو Token Approval در تراست والت توضیح داده شده است.
Security Scanner هنگام Sign چه کمکی میکند؟
Security Scanner تراست والت برای شبکههای پشتیبانیشده داخل Signing Flow قرار دارد. در تراکنشهایی که تحت پوشش این قابلیت هستند، Wallet میتواند نتیجه احتمالی را شبیهسازی کند، مقصد را با دادههای مربوط به Scam و Drainer بررسی کند و درباره Approval یا انتقالهای مشکوک هشدار بدهد. Trust Wallet اعلام کرده این بررسی در موبایل و Browser Extension برای شبکههای پشتیبانیشده بهصورت داخلی انجام میشود.
اما درباره Sign Message یک محدودیت بسیار مهم وجود دارد.
Trust Wallet صراحتاً توضیح میدهد بعضی Off-chain Signatureها، از جمله Token Permitها یا امضای سفارش Marketplace، تراکنش معمول On-chain نیستند و ممکن است Transaction Simulation نتواند آنها را بهطور کامل بررسی کند.
بنابراین:
Security Scanner هیچ هشداری نشان نداده است
با این جمله فرق دارد:
این Signature کاملاً امن است.
نبود Warning را تأیید امنیت ندانید. قرارداد تازه، نوع درخواست خارج از پوشش یا Signature خارج از زنجیره ممکن است همان سطح Simulation یک Transaction معمولی را نداشته باشد.
برای توضیح کامل Warningها و محدودیت این قابلیت، مقاله Security Scanner تراست والت را بخوانید.
اگر متن Sign را نمیفهمیم چه کنیم؟
اولین کار Reject کردن موقت Request است. برای بررسی دوباره لازم نیست چیزی را امضا کنید و از دستدادن یک Signature Request معمولاً هزینهای ندارد.
بعد مشخص کنید درخواست از کدام سایت آمده و چه کاری قرار بوده انجام دهید. اگر هدف Request حتی با توضیحات خود DApp روشن نیست، سراغ Sign نروید.
برای Typed Data، فیلدهای مهم را با مستندات همان پروتکل تطبیق دهید. برای Raw Data نیز به این دلیل که یک سایت میگوید «طبیعی است» اعتماد نکنید. اگر پروتکل معتبری واقعاً به امضای داده خاصی نیاز داشته باشد، باید بتواند دلیل و ساختار آن را توضیح دهد.
همچنین برای آزمایش DAppهای تازه بهتر است از Wallet روزمرهای با موجودی محدود استفاده کنید، نه آدرسی که بخش اصلی دارایی شما را نگهداری میکند.
اگر برنامه شما مدت زیادی است بهروزرسانی نشده، قبل از مقایسه رابط و هشدارهای امنیتی از نسخه جدید تراست والت استفاده کنید. نام و نحوه نمایش بعضی جزئیات Signing ممکن است با تغییر رابط برنامه عوض شود.
اگر یک Sign مشکوک را قبلاً تأیید کردهایم چه کنیم؟
اول تعامل با همان DApp را متوقف کنید و Session آن را Disconnect کنید، اما Disconnect را به معنی ابطال Signature در نظر نگیرید.
اگر درخواست مربوط به Token، Permit یا مجوزی بوده است، وضعیت Approvalهای Wallet را نیز بررسی کنید. اگر مجوز On-chain ثبت شده، ممکن است Revoke لازم باشد.
در مورد Signatureهایی که هنوز Off-chain هستند، روش بیاعتبارکردن آنها به استاندارد و پروتکل بستگی دارد. بعضی امضاها Nonce یا Deadline دارند و برخی پروتکلها روش ابطال خاص خود را ارائه میکنند. بنابراین نباید فرض کنید یک Revoke معمولی یا بستن سایت تمام Signatureهای قبلی را باطل میکند.
اگر Recovery Phrase یا Private Key را در سایتی وارد کردهاید، مسئله دیگر فقط Sign Message نیست. در این وضعیت باید احتمال افشای خود کلیدهای Wallet را بررسی کنید و اقدامات امنیتی مربوط به کیف پول در معرض خطر را انجام دهید.
سؤالات متداول درباره Sign در تراست والت
Sign Message در تراست والت یعنی چه؟
Sign Message یعنی Trust Wallet با استفاده از کلید خصوصی Wallet یک امضای رمزنگاریشده برای پیام یا داده مشخص تولید کند. این فرایند معمولاً برای Login، اثبات مالکیت Address یا Authorization استفاده میشود و لزوماً تراکنش عادی روی بلاکچین ایجاد نمیکند.
آیا Sign Message کارمزد دارد؟
درخواستهای معمول Off-chain برای امضای Message بهخودیخود Network Fee ندارند. با این حال Signature ممکن است بعداً برای انجام یک عملیات On-chain استفاده شود. «بدون Gas» به معنی «بدون اثر مالی» نیست.
آیا با Sign Message میتوان کیف پول را خالی کرد؟
هر Sign Message بهتنهایی چنین اثری ندارد، اما بعضی Signatureها میتوانند اختیار مهمی ایجاد کنند. Permitهای Token نمونه مشخصی هستند که اجازه تغییر Allowance از طریق پیام امضاشده را فراهم میکنند. بنابراین محتوای Request باید قبل از Sign بررسی شود.
تفاوت Connect و Sign چیست؟
Connect معمولاً یک Session بین DApp و Wallet ایجاد میکند و آدرس عمومی یا شبکه را در اختیار DApp قرار میدهد. Sign یک مرحله جداست که در آن شما پیام یا داده مشخصی را با Wallet امضا میکنید. صرف Connect کردن به معنی صدور Token Approval نیست.
Raw Data در تراست والت خطرناک است؟
وجود Raw Data بهتنهایی اثبات کلاهبرداری نیست، اما چون کاربر نمیتواند اثر درخواست را بهراحتی تشخیص دهد، ریسک Blind Signing بیشتر میشود. اگر هدف داده را نمیدانید، آن را Sign نکنید.
Blind Signing یعنی چه؟
Blind Signing یعنی امضای درخواست بدون مشاهده یا درک کافی از محتوای واقعی آن. ممکن است دادهها ناخوانا باشند یا کاربر فقط به توضیح DApp اعتماد کرده و اطلاعات خود Request را بررسی نکرده باشد.
آیا Cancel کردن درخواست Sign هزینه دارد؟
اگر هنوز Message را Sign نکردهاید یا Transaction را به شبکه نفرستادهاید، Reject یا Cancel کردن آن Network Fee ندارد. بعد از تولید Signature یا Broadcast تراکنش، شرایط متفاوت است.
آیا Security Scanner همه Sign Messageهای مخرب را تشخیص میدهد؟
خیر. Security Scanner ابزار مهمی برای بررسی تراکنشها و برخی ریسکهای شناختهشده است، اما Trust Wallet اعلام کرده بعضی Off-chain Signatureها مانند Permit یا Marketplace Order ممکن است بهطور کامل توسط Transaction Simulation پوشش داده نشوند. نبود Warning را تضمین امنیت تلقی نکنید.
آیا Sign و Approve یک چیز هستند؟
خیر. Sign یک مفهوم عمومی برای امضای داده است. Token Approval در مدل کلاسیک، Permission مشخصی برای خرجکردن Token توسط Spender ایجاد میکند. با این حال استانداردهایی مانند ERC-2612 اجازه میدهند Approval از طریق یک Signature ایجاد شود؛ بنابراین گاهی یک Sign میتواند در عمل بخشی از فرایند صدور مجوز باشد.
قبل از هر Sign، اثر درخواست را بفهمید
در تراست والت، وصلشدن به DApp، امضای Message، دادن Token Approval و Confirm کردن یک Transaction چهار تصمیم متفاوت هستند. مشکل زمانی ایجاد میشود که همه آنها را صرفاً «تأیید یک پنجره» ببینیم.
قبل از Sign باید بتوانید بفهمید درخواست از کجا آمده، برای چه کاری ساخته شده و چه Address، Contract، Token یا Permissionی در آن دخیل است. اگر فقط Raw Data میبینید، درخواست با کاری که انجام دادهاید نمیخواند یا اثر Signature برایتان روشن نیست، Reject کردن تصمیم منطقیتری است.
Security Scanner میتواند بخشی از این بررسی را سادهتر کند، اما جای خواندن Request را نمیگیرد. در Self-Custody، آخرین مرحله همچنان همان تصمیمی است که شما قبل از زدن Sign میگیرید.
منابع رسمی
Trust Wallet — How the Trust Wallet Security Scanner Works — منتشرشده ۱۳ اوت و بهروزرسانیشده ۱۴ اوت ۲۰۲۶.
Trust Wallet Developer Docs — Signing Messages on EVM — مستندات
personal_signو EIP-712.Trust Wallet Developer Docs — WalletConnect Mobile — ساخت Session و Signing از طریق WalletConnect.