چگونه Timeline تراکنشهای رمزارزی را برای یک پرونده Blockchain Forensics بسازیم؟
چگونه Timeline تراکنشهای رمزارزی را برای یک پرونده Blockchain Forensics بسازیم؟
در بسیاری از پروندههای کلاهبرداری رمزارزی، اطلاعات زیادی وجود دارد اما مشکل اصلی جای دیگری است: رویدادها به ترتیب درست کنار یکدیگر قرار نگرفتهاند. ممکن است پرونده شامل دهها TXID، چند کیف پول، دو یا سه شبکه بلاکچینی، یک صرافی، یک DEX و تعداد زیادی آدرس واسط باشد. اگر این اطلاعات بدون ساختار ارائه شوند، حتی یک تحلیل فنی درست نیز میتواند برای مخاطب گیجکننده باشد. یکی از مؤثرترین روشها برای حل این مشکل، ساخت Transaction Timeline است. Timeline به زبان ساده پاسخ میدهد: چه اتفاقی، در چه زمانی، برای چه مقدار دارایی و میان چه آدرسهایی رخ داده است؟
Transaction Timeline چیست؟
Timeline یک نمایش زمانی از رویدادهای مرتبط با پرونده است.
برای مثال:
09:14:22
Victim → Wallet A
50,000 USDT
09:17:05
Wallet A → Wallet B
49,950 USDT
09:23:41
Wallet B → DEX
09:25:08
USDT → USDC
09:32:17
Wallet C → Exchange
با همین ساختار ساده میتوان مشاهده کرد که دارایی ظرف کمتر از ۲۰ دقیقه چند مرحله جابهجا شده است.
اما در یک بررسی حرفهای، Timeline باید اطلاعات دقیقتری داشته باشد.
چرا Timeline در تحقیقات بلاکچین مهم است؟
Blockchain معمولاً اطلاعات تراکنشها را بهصورت دقیق و زمانبندیشده ثبت میکند.
بنابراین تحلیلگر میتواند رویدادها را براساس:
- Timestamp
- Block Number
- Transaction Hash
- Sender
- Receiver
- Token
- Amount
- Contract Interaction
مرتب کند.
این کار چند مزیت مهم دارد.
اول اینکه مسیر دارایی بهتر دیده میشود.
دوم اینکه انتقالهای سریع و پشت سرهم مشخص میشوند.
سوم اینکه ارتباط احتمالی میان چند تراکنش راحتتر بررسی میشود.
مرحله اول: نقطه شروع پرونده را مشخص کنید
هر Timeline باید یک Starting Point داشته باشد.
در پرونده سرقت ممکن است نقطه شروع:
Victim Wallet
باشد.
اما در پرونده دیگری ممکن است نقطه شروع یک TXID خاص باشد.
مثلاً قربانی اعلام کرده است:
ساعت ۱۸:۴۲ مقدار 20,000 USDT بدون اجازه از کیف پول من خارج شده است.
در این حالت همان تراکنش تبدیل به نقطه شروع بررسی میشود.
اطلاعات اولیهای که باید ثبت شوند
برای تراکنش اول حداقل این موارد را استخراج کنید:
اطلاعات
توضیح
TXID
شناسه تراکنش
Timestamp
زمان ثبت
Blockchain
شبکه
Sender
مبدأ
Receiver
مقصد
Token
دارایی
Amount
مقدار
Fee
کارمزد
Block
شماره بلاک
مرحله دوم: زمان را استاندارد کنید
یکی از مشکلات رایج در گزارشهای Blockchain Forensics اختلاف Timezone است.
یک Explorer ممکن است زمان را به UTC نشان دهد، در حالی که Screenshot کاربر براساس ساعت محلی باشد.
مثلاً:
Blockchain Explorer:
14:30 UTC
Local Time:
18:00
اگر این تفاوت در گزارش توضیح داده نشود، ممکن است تصور شود دو تراکنش با یکدیگر تطابق ندارند.
بهتر است در ابتدای Timeline مشخص شود:
تمامی زمانها در این گزارش براساس UTC ثبت شدهاند.
یا:
زمانهای Blockchain به ساعت محلی تبدیل شدهاند.
مرحله سوم: خروجی بعدی آدرس را بررسی کنید
فرض کنید:
Victim
↓
Wallet A
پیدا شده است.
تحلیل در این مرحله تمام نمیشود.
Wallet A باید بررسی شود تا مشخص گردد دارایی پس از دریافت چه سرنوشتی داشته است.
ممکن است:
Victim
↓
Wallet A
↓
Wallet B
↓
Wallet C
شکل بگیرد.
هر مرحله باید به Timeline اضافه شود.
مرحله چهارم: فاصله زمانی را اندازهگیری کنید
گاهی فاصله زمانی میان تراکنشها اطلاعات ارزشمندی میدهد.
مثلاً:
10:01:15
100,000 USDT received
10:01:48
99,950 USDT transferred
دارایی فقط ۳۳ ثانیه در کیف پول باقی مانده است.
این رفتار میتواند نشان دهد Wallet مورد نظر احتمالاً نقش یک آدرس واسط دارد.
اما دقت کنید:
سرعت انتقال بهتنهایی اثباتکننده فعالیت مجرمانه نیست.
صرافیها، سیستمهای پرداخت، Botها و قراردادهای هوشمند نیز میتوانند انتقالهای بسیار سریع داشته باشند.
مرحله پنجم: آدرسهای واسط را شمارهگذاری کنید
در پروندههای بزرگ استفاده مداوم از آدرسهای طولانی باعث کاهش خوانایی میشود.
میتوان آدرسها را در گزارش چنین نامگذاری کرد:
Victim Wallet
Wallet A
Wallet B
Wallet C
Exchange Deposit Address
Bridge Contract
DEX Router
سپس در جدول جداگانه آدرس کامل هرکدام درج شود.
نمونه
Label
Address
Victim
T...abc
Wallet A
T...852
Wallet B
T...991
Wallet C
0x...55F
این روش مخصوصاً در نمودارهای Transaction Flow بسیار مفید است.
مرحله ششم: نوع هر رویداد را تعیین کنید
تمام رویدادها الزاماً Transfer ساده نیستند.
ممکن است با موارد زیر روبهرو شوید:
- Token Transfer
- Native Coin Transfer
- Swap
- Approval
- Bridge Deposit
- Bridge Withdrawal
- Contract Call
- Exchange Deposit
- NFT Transfer
برای مثال:
Wallet A
↓
DEX Router
USDT
↓
USDC
نباید این اتفاق را صرفاً:
Wallet A مقدار USDT به DEX فرستاد.
توصیف کرد.
بلکه باید مشخص شود که تراکنش بخشی از یک عملیات Swap بوده است.
مرحله هفتم: تغییر دارایی را وارد Timeline کنید
یکی از مهمترین نقاط در تحقیقات مالی زمانی است که Asset تغییر میکند.
مثلاً:
100,000 USDT
↓
DEX
↓
99,700 USDC
اگر تحلیلگر فقط به دنبال USDT بگردد، ممکن است تصور کند مسیر تمام شده است.
در صورتی که ارزش اقتصادی همچنان ادامه دارد.
مرحله هشتم: تغییر شبکه را مشخص کنید
اگر دارایی وارد Bridge شود، Timeline باید تغییر شبکه را کاملاً واضح نشان دهد.
مثلاً:
14:20
Ethereum
Wallet A → Bridge
14:23
Arbitrum
Bridge → Wallet B
بهتر است میان دو رویداد یک علامت مشخص اضافه شود:
--- Cross-Chain Transition ---
مرحله نهم: Exchange Exposure را ثبت کنید
یکی از نقاط مهم در بسیاری از تحقیقات زمانی است که دارایی به یک سرویس متمرکز وارد میشود.
مثلاً:
Wallet D
↓
Exchange Deposit Address
در گزارش بهتر است نوشته شود:
آدرس مقصد براساس دادهها و شواهد موجود به زیرساخت مرتبط با صرافی X منتسب شده است.
نه اینکه بدون شواهد کافی گفته شود:
این حساب متعلق به شخص X است.
چون آدرس بلاکچینی و حساب کاربری دو مفهوم متفاوت هستند.
یک نمونه Timeline کامل
فرض کنیم پرونده با سرقت 80,000 USDT آغاز شده است.
08:40:12
Victim
↓
Wallet A
80,000 USDT
08:44:51
Wallet A
↓
Wallet B
79,850 USDT
08:48:20
Wallet B
↓
DEX Router
08:48:28
USDT → USDC
08:55:02
Wallet B
↓
Bridge
08:57:34
Destination Chain
↓
Wallet C
09:04:45
Wallet C
↓
Wallet D
09:16:19
Wallet D
↓
Exchange Deposit Address
حالا حتی فردی که دانش فنی زیادی ندارد میتواند مسیر کلی را درک کند.
Timeline و Transaction Graph چه تفاوتی دارند؟
این دو مکمل یکدیگر هستند.
Timeline روی زمان تمرکز دارد.
Graph روی رابطه میان آدرسها.
مثلاً Graph:
Victim
↓
Wallet A
↓
Wallet B
↙ ↘
C D
↓
Exchange
در حالی که Timeline میگوید هر مرحله دقیقاً چه زمانی اتفاق افتاده است.
یک گزارش حرفهای بهتر است هر دو را داشته باشد.
چگونه تراکنشهای غیرمرتبط را حذف کنیم؟
فرض کنید Wallet B صدها تراکنش دارد.
همه آنها الزاماً به پرونده مربوط نیستند.
بهتر است معیارهای زیر بررسی شوند:
- زمان دریافت دارایی
- Asset موردنظر
- مقدار
- فاصله زمانی
- ارتباط با مسیر قبلی
- ارتباط با آدرسهای شناختهشده
هدف این نیست که کل تاریخچه Wallet وارد گزارش شود.
هدف پیدا کردن Relevant Transaction Flow است.
اشتباه رایج: Amount Matching
گاهی تحلیلگر فقط مقدار را دنبال میکند.
مثلاً:
Incoming:
50,000 USDT
Outgoing:
50,000 USDT
و نتیجه میگیرد همان دارایی منتقل شده است.
اما باید موارد دیگری مانند:
- زمان
- Balance
- تراکنشهای همزمان
- منابع دیگر موجودی
را نیز بررسی کرد.
داراییها در Blockchain معمولاً دارای شماره سریال جداگانه نیستند که بتوان هر واحد را مستقل دنبال کرد.
Timeline برای گزارش قضایی
در نسخه قضایی بهتر است Timeline سادهتر ارائه شود.
مثلاً:
زمان
رویداد
مبلغ
14:05
خروج از کیف پول قربانی
25,000 USDT
14:09
انتقال به آدرس واسط
24,950 USDT
14:16
تبدیل دارایی
24,900 USDC
14:31
انتقال به صرافی
24,850 USDC
جزئیات TXID و آدرس کامل میتواند در پیوست قرار گیرد.
نتیجهگیری
ساخت Timeline یکی از قدرتمندترین ابزارهای Blockchain Investigation است.
یک Timeline مناسب باعث میشود مجموعهای از TXIDها و آدرسهای پیچیده به یک روایت مالی قابل فهم تبدیل شوند:
دارایی از کجا شروع شد، چه زمانی حرکت کرد، از چه مسیرهایی عبور کرد و در نهایت به کجا رسید.
اما Timeline باید مبتنی بر داده باشد، نه حدس.
تفکیک میان:
Fact → Observation → Analysis → Attribution
باعث میشود گزارش نهایی از نظر فنی و قضایی قابل دفاعتر باشد.
بلاگها و مقالات
مشاهده همه
آموزش تحلیل Transaction Logs و Event Logs در بلاکچین؛
تصور کنید در حال بررسی یک پرونده سرقت رمزارز هستید. قربانی اعلام کرده که ۵۰ هزار USDT از کیف پولش خارج شده و شناسه تراکنش را نیز در اختیار شما قرار داده است. وقتی TXID را در یک Blockchain Explorer وارد میکنید، با اطلاعاتی مانند فرستنده، گیرنده، زمان، کارمزد و وضعیت تراکنش مواجه میشوید. اما یک نکته وجود دارد: آنچه در نمای اولیه Explorer دیده میشود، لزوماً تمام اتفاقات داخل تراکنش نیست. یک تراکنش ممکن است با چند قرارداد هوشمند تعامل کند، چندین Token Transfer ایجاد کند و عملیات پیچیدهای مانند Swap یا انتقال دارایی به آدرس ثالث انجام دهد. برای بازسازی این رویدادها، تحلیلگر باید از مشاهده سطحی تراکنش عبور کند و وارد بررسی Transaction Receipt، Event Logs و Execution Trace شود.
Peel Chain چیست؟
Peel Chain چیست؟ فرض کنید یک Wallet مقدار قابل توجهی Bitcoin در اختیار دارد و مالک آن نمیخواهد تمام موجودی را در یک تراکنش منتقل کند. در عوض چنین الگویی ایجاد میشود: Wallet A │ 10 BTC ↓ Wallet B ───→ 0.5 BTC │ 9.5 BTC ↓ Wallet C ───→ 0.7 BTC │ 8.8 BTC ↓ Wallet D ───→ 1 BTC │ 7.8 BTC ↓ Wallet E در هر مرحله مقدار کوچکی از موجودی جدا یا اصطلاحاً Peel میشود و بخش عمده به مرحله بعد میرود. به این ساختار Peel Chain گفته میشود.
چگونه تراکنشهای DEX و Liquidity Pool را در تحقیقات Blockchain Forensics تحلیل کنیم؟
در یک پرونده ساده Blockchain Forensics ممکن است مسیر دارایی چنین باشد: Victim ↓ Wallet A ↓ Wallet B ↓ Exchange در چنین شرایطی دنبالکردن مسیر نسبتاً ساده است. اما کافی است Wallet B با یک صرافی غیرمتمرکز یا DEX تعامل کند. مسیر ناگهان به چیزی شبیه این تبدیل میشود: Wallet B ↓ DEX Router ↓ Liquidity Pool ↓ USDT → ETH ↓ Wallet B در این مرحله یکی از اشتباهات رایج این است که تحلیلگر تصور کند وجوه به آدرس Smart Contract منتقل شده و مسیر به پایان رسیده است. در حالی که در بسیاری از موارد، دارایی فقط تبدیل شده است. پژوهشهای جدید حوزه Blockchain Forensics نیز نشان میدهند که گسترش DeFi، Bridgeها و تراکنشهای پیچیده Smart Contract، ردگیری وجوه را از یک مسئله ساده دنبالکردن آدرسها به تحلیل چندلایه جریان ارزش تبدیل کرده است. Doi
چگونه تراکنشهای Cross-Chain و Bridge را در بلاکچین ردیابی کنیم؟
در گذشته، ردیابی یک تراکنش رمزارزی معمولاً با دنبالکردن مسیر یک آدرس در یک شبکه مشخص انجام میشد. برای مثال، اگر وجوه روی شبکه TRON جابهجا میشد، تحلیلگر میتوانست از یک Explorer مانند TRONSCAN شروع کند و انتقالهای بعدی را بررسی کند. اما امروز بسیاری از فعالیتهای رمزارزی محدود به یک بلاکچین نیستند. یک دارایی ممکن است ابتدا روی Ethereum قرار داشته باشد، سپس از طریق یک Bridge به شبکه دیگری منتقل شود و در نهایت از یک صرافی غیرمتمرکز، کیف پول شخصی یا صرافی متمرکز عبور کند. اینجاست که Cross-Chain Tracing اهمیت پیدا میکند. تحقیقات منتشرشده در سال ۲۰۲۶ نیز نشان میدهد که تحلیل تراکنشهای Cross-Chain از تحلیل تکزنجیرهای دشوارتر است، زیرا اطلاعات مربوط به یک انتقال ممکن است میان زنجیره مبدأ، زنجیره مقصد و حتی سیستمهای خارج از زنجیره توزیع شده باشد.